(57)【特許請求の範囲】
【請求項１】
命令を所定の手順にしたがって実行するデータ処理装置であって、
データ情報の保持には全体を、或は全体を２等分割した２等分割領域の双方を選択的に、又は一方の２等分割領域を更に２等分割した４等分割領域の双方を選択的に、利用可能であり、且つ、前記２等分割領域のビット数よりも多いビット数を以ってアドレス情報の保持にも利用可能なデータ保持手段を複数個有し、
前記４等分割領域を利用するか２等分割領域を利用するかは命令のオペレーションコードに含まれる所定の１ビットによって指定され、
何れの４等分割領域を利用するか何れの２等分割領域を利用するかは、命令のオペランド指定フィールドに含まれる所定の１ビットによって指定され、
前記２等分割領域のビット数に相当するデータ保持手段を有する別のデータ処理装置の命令実行機能を包含し、
前記データ保持手段の全体の利用は、処理の内容を指定するオペレーションコードを含む命令の前置きコードによって指定される、ものであることを特徴とするデータ処理装置。
【請求項２】
前記前置きコードは、未定義命令のコードに相当するコードであることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記データ保持手段の利用形態に応じて切り替える動作モードを備えて成るものであることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
演算手段をさらに含み、前記演算手段は、前記データ保持手段の全体に対する算術的演算を単位マシンサイクルで実行するものであることを特徴とする請求項１乃至３の何れか１項記載のデータ処理装置。
【請求項５】
制御手段をさらに含み、前記制御手段は、前記データ保持手段の全体または一部分に対する算術的並びに論理的演算制御の全部または一部を、前記データ保持手段とデータ処理装置外部との間では一つの命令で直接的に実現することを不可能とする制御論理を有するものであることを特徴とする請求項１乃至４の何れか１項記載のデータ処理装置。
【請求項６】
前記データ処理装置が実行する命令の単位が、データの単位の２倍長であることを特徴とする請求項１乃至５の何れか１項記載のデータ処理装置。
【請求項７】
前記別のデータ処理装置が実行する命令のコードを、全て相当の命令として実行することを特徴とする請求項１乃至６の何れか１項記載のデータ処理装置。
【請求項８】
レジスタの使用状態を指定する前置きコードによりレジスタの使用状態を決定することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ処理装置にかかり、例えば、シングルチップマイクロコンピュータの中央処理装置に利用して有効な技術に関するものである。
【０００２】
【従来の技術】
シングルチップマイクロコンピュータには、それらの中央処理装置（以下単にＣＰＵとも記す）が主として扱うデータ長によって４ビット、８ビット、１６ビットマイクロコンピュータなどがある。現在、これらの中では８ビットシングルチップマイクロコンピュータが最も多く使用され、機器組込制御用として用いられている。このような８ビットシングルチップマイクロコンピュータとしては、（株）日立製作所平成元年６月発行『Ｈ８／３３０  ＨＤ６４７３３０８  ＨＤ６４３３３０８  ハードウェアマニュアル』などがある。８ビットシングルチップマイクロコンピュータの中央処理装置（以下８ビットＣＰＵ）は主として扱うデータ長が８ビットであり、このため、８ビットＣＰＵは８ビット長のレジスタまたはアキュムレータと、かつ８ビットレジスタの２倍長である１６ビットレジスタを有する。これらの８ビットＣＰＵは、特に制限はされないものの、データ処理には主として８ビットレジスタまたは１６ビットレジスタを使用し、メモリを参照するためのアドレスレジスタとしては１６ビットレジスタのみを使用する。このようなアドレスレジスタとしての１６ビットレジスタはインデックスレジスタ、スタックポインタ、プログラムカウンタなどと呼ばれる場合がある。
【０００３】
前記８ビットＣＰＵでは、命令の最小単位が１６ビット（２バイト）とされている。また、命令または１６ビットデータをメモリに配置する場合には、偶数から始まる連続した２バイトの領域に配置する様に限定されている。さらに、前記８ビットＣＰＵの演算命令はＣＰＵ内部のレジスタ間でのみ可能とされ、メモリに配置したデータの操作は、かかるデータを一旦ＣＰＵ内部のレジスタに転送した後に、演算命令による操作を行わなければならない。このような制限を有する代りに、ＣＰＵの内部構成、特にＣＰＵの実行状態を制御する制御部の構成を単純化し、論理的並びに物理的規模の縮小を実現している。論理的並びに物理的規模の縮小の効果として、製造費用を削減できる。また、副次的な効果として、動作速度の向上を図ることができる。すなわち、相対的に小さい製造費用で、相対的に大きな処理性能を実現できる。
【０００４】
【発明が解決しようとする課題】
しかしながら、前記ＣＰＵでは、アドレスレジスタが１６ビット長であり、ＣＰＵが参照できるメモリは６５５３６バイト（＝２１６、以下６４ｋバイト）である。これに対して、８ビットシングルチップマイクロコンピュータが用いられる機器組込制御の応用では、機器の高性能化によって大容量のプログラムあるいはデータを扱うことが要求されている。かつ、この時、前記従来のＣＰＵに対して機能が上位互換であることがのぞましい。すなわち、使用者は、既に前記従来のＣＰＵで開発したソースプログラム若しくはオブジェクトプログラムの全部又は一部をそのまま利用できる。これにより、マイクロコンピュータの周辺機能あるいは応用システムに依存する部分だけを変更して、ただちにソフトウェアあるいは応用システムを開発し、その開発期間を短縮できる。
【０００５】
このような要求に対して、本発明者は、前記ＣＰＵの前記論理的・物理的規模の縮小、または相対的に小さい製造費用で、相対的に大きな処理性能を実現しつつ、６４ｋバイト以上のメモリを参照できるＣＰＵについて検討した。
【０００６】
これに対し、８ビットＣＰＵに８ビットのページレジスタを付加し、１６ビットレジスタと組合せて、アドレスを生成することにより参照できるメモリを１６７７７２１６バイト（＝２２４、以下１６Ｍバイト）としたシングルチップマイクロコンピュータの例として（株）日立製作所昭和６３年１２月発行『Ｈ８／５３２  ＨＤ６４７５３２８  ＨＤ６４３５３２８  ハードウェアマニュアル』などがある。このようなメモリ参照方法は、ページレジスタとアドレスレジスタが全く独立しているために、ハードウェアの実現方法が簡単化される反面、ページレジスタとアドレスレジスタの間にキャリまたはボローの伝播が行われず、プログラムあるいはコンパイラを作成する場合には、一群のプログラムあるいはデータがページ境界を越えない様に常に注意しなければならない。すなわち、上記の例で、命令を０番地から実行すると、当初、プログラムカウンタはＨ’００００（Ｈ’は１６進数を示す），これに対応するページレジスタ（以下コードページレジスタ）はＨ’００である。分岐命令を使用せずに演算命令などを実行し続け、６５５３５（Ｈ’ＦＦＦＦ）番地に達した後、次の命令を実行しようとした場合、プログラムカウンタはＨ’ＦＦＦＦ→Ｈ’００００となってオーバフローする。この時のキャリはコードページレジスタに伝播されないために、次の命令は０番地に戻ってしまう。このため、プログラムは６４ｋバイトを越えないように分割して作成し、分割したプログラムをそれぞれ別のページに割当て、あるページに存在するプログラムから別のページに存在するプログラムに実行を移す場合はページ間分岐命令を使用する必要がある。すなわち、プログラム中で分岐命令を使用する場合は、分岐先が同一ページ内に存在するか、別ページに存在するかを意識してページ内分岐命令とページ間分岐命令を使い分ける必要がある。データも同様に６４ｋバイトを越えないように分割して、管理する必要がある。すなわち、いわゆるポストインクリメントレジスタ間接モードなどの様にメモリをアクセスする毎にアドレスレジスタの内容を更新していく場合、上記同様にアドレスレジスタがオーバフローしても対応するページレジスタ（以下データページレジスタ）にキャリが伝播されない。また、ディスプレースメント付レジスタ間接で、１６ビットのディスプレースメントを使用する場合、１６ビットのアドレスレジスタに１６ビットのディスプレースメントを加算し、キャリまたはボローが発生してもページレジスタには伝播されず、１６ビットの加算結果とページレジスタが組み合わされてアドレスが生成される。すなわち、ページレジスタがＨ’００、アドレスレジスタがＨ’ＦＦＦＦ、ディスプレースメントがＨ’４０００の場合、結果として得られるアドレスはＨ’００３ＦＦＦになってしまう。したがって、ページレジスタを利用したアドレス拡張技術においては、実質的に利用可能なアドレシングモードも制限されてしまう。
【０００７】
このようなプログラムあるいはデータがページ境界を越えない様に常に注意して、ページレジスタの管理を行なうことは、いわゆる高級言語を用いてプログラムした内容をＣＰＵのいわゆる機械語によるプログラム（オブジェクトプログラム）に自動的に変換するコンパイラの作成上の大きな制約となり、コンパイラの設計効率を低下させ、また、作成されるオブジェクトプログラムの規模を著しく大きくし、さらにその結果として、プログラムの実行時間も低下してしまう。
【０００８】
また、６４ｋバイト以下のメモリ空間で充分な応用に対して、前記ページレジスタは、データレジスタとして使用できないために論理的並びに物理的に無駄となってしまい、前記相対的に小さい製造費用で、相対的に大きな処理性能を実現する目的に反してしまう。
【０００９】
本発明の目的は、論理的・物理的規模の増加を最小限としつつ、下位ＣＰＵのような別のデータ処理装置ために既に開発されたプログラムの一部若しくは全部を利用可能な、下位ＣＰＵとの上位互換を実現しつつ、連続的に使用可能なアドレス空間を相対的に広げることができるデータ処理装置を提供することにある。連続的に使用可能なアドレス空間を相対的に広げるとは、例えば、８ビットＣＰＵを用いて６４ｋバイト以上のアドレス空間を連続的に使用できるということである。
本発明の別の目的は、上記目的に加えて更に、高級言語により作成されたプログラムのコンパイルを容易化できるデータ処理装置を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１１】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、ＣＰＵの汎用レジスタに対し、データ情報の保持には全部、又は２等分割して、或は２等分割した一方を更に２等分割して使用し、アドレス情報の保持には、下位ＣＰＵのアドレスビット数よりも多いビット数を以って利用可能にする。例えば、８ビットＣＰＵの１６ビット汎用レジスタに１６ビットの拡張レジスタを追加し、全体で３２ビットのレジスタを一括して又はその一部分をアドレスレジスタとして使用するとともに、データレジスタとしては、３２ビット全体を１単位として、２分割して２個の１６ビットデータレジスタとして、さらに１６ビットデータレジスタの一方を２分割して２個の８ビットレジスタとして使用可能にする。斯るレジスタの利用形態の指定は次のように行う。８ビットレジスタとして利用するか１６ビットレジスタとして利用するかは、オペレーションコードに含まれる、データ情報のサイズビットによって決定される。データ情報のサイズが８ビット（バイト）のとき、８ビットレジスタの上位・下位は、命令に含まれるレジスタ指定フィールドの所定１ビットによって指定される。データ情報のサイズが１６ビット（ワード）のとき、当該所定１ビットは、１６ビットレジスタの上位・下位を指定することになる。そして、３２ビット（ロングワード）レジスタとしての利用は、オペレーションコードを含む命令の前置きコード（プリフィックスコード）によって指定する。或は、下位ＣＰＵのオペレーションコードと同一ビット数の新たなオペレーションコードを追加して指定する。このようなレジスタ構成に基づいて、１６ビットレジスタを備える下位ＣＰＵの命令実行機能を包含する。これにより、下位ＣＰＵのために開発されたプログラムは、少なくとも、ソースプログラムのレベル（高級言語での記述レベル）で本発明に係る上位ＣＰＵに利用可能になる。すなわち、少なくとも、ソースプログラムレベルで上位互換を実現する。ここで下位ＣＰＵとは、そのレジスタ構成並びにその命令セットが本発明に係るＣＰＵのようなデータ処理装置のレジスタ構成及び命令セットに包含されるようなＣＰＵをいう。
【００１３】
更に、オブジェクトプログラムレベルでの上位互換を実現するには、有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタの利用形態に応じて切り替える動作モード、例えばマキシマムモードとミニマムモードを用意しておけばよい。ミニマムモードにおいてＣＰＵは下位ＣＰＵと全く同様に動作する。マキシマムモードにおいてＣＰＵはそれに備えられた最大限の機能を以って上位ＣＰＵとして動作される。
【００１４】
前記前置きコードは、下位ＣＰＵの命令コードと重複しないことが必要であるから、これを未定義命令のコードに相当するコードとするのが最適である。
【００１５】
命令の単位は、データ情報の単位の２倍長にすることができる。例えば、ＣＰＵのレジスタを３２ビットに拡張したとき、将来における４Ｇバイトのアドレス空間の使用を考慮するときには、命令長を２バイト単位として、２４ビット絶対アドレス・ディスプレースメントを予約領域を含めて４バイトとする。更に、実行手段及び制御手段の構成を単純化し、論理的並びに物理的な規模の縮小に寄与するには、命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットにすることが望ましい。
【００１６】
【作用】
上記した手段によれば、データ情報の保持には２分割利用可能であり、下位ＣＰＵのアドレスビット数以上のビット数を以ってアドレスレジスタとしても利用可能なレジスタ構成を採用すること、データ情報のバイト／ワードサイズはオペレーションコードのサイズビットで指定されること、ロングワードサイズのデータ情報の利用はプリフィックスコード或は下位ＣＰＵと同一ビット数の新たに追加したオペレーションコードで指定されること、バイトサイズのデータ情報に対して利用するバイトサイズレジスタの上位／下位はレジスタ指定フィールドの所定１ビットで指定されること、ワードサイズのデータ情報に対してはその所定１ビットでワードサイズレジスタの上位／下位が指定されることの夫々を以って、少なくともソースプログラムレベルでの上位互換を実現する。
【００１７】
前記マキシマムモードとミニマムモードを用意しておくことは、オブジェクトプログラムレベルでの上位互換を実現する。
【００１８】
８ビットＣＰＵの１６ビット汎用レジスタに１６ビットの拡張レジスタを追加して、全体で３２ビットで構成されるようなレジスタ構成は、ソフトウェア上並びにハードウェア上でのデータ保持手段の使い勝手を良好にし、ひいては、ＣＰＵのようなデータ処理装置の論理的並びに物理的な規模の縮小を達成する。また、データ保持手段の全体又は一部分を使用したアドレスデータの保持という点に関しては、リニアに利用可能なアドレス空間の拡張を容易化し、また、ページレジスタによるアドレス空間拡張技術に比べてプログラムの作成並びにコンパイルを容易化する。
【００１９】
【実施例】
図１には本発明に係るデータ処理装置の第一実施例であるシングルチップマイクロコンピュータが示される。同図に示されるシングルチップマイクロコンピュータ１００は、全体の制御を司るＣＰＵ（中央処理装置）１、ＣＰＵ１の動作プログラムなどを保有するＲＯＭ（リードオンリメモリ）２、ＣＰＵ１の作業領域並びにデータの一時記憶領域などとして利用されるＲＡＭ（ランダムアクセスメモリ）３、タイマ４、シリアルコミュニケーションインタフェース（ＳＣＩ）５、クロックパルスジェネレータ６８、及び、入出力ポート（ＩＯＰ）６１乃至６７などの機能ブロックから構成され、これらは内部バス６９で相互に接続されてなる。内部バス６９は特に制限はされないものの、アドレスバス、データバス、コントロールバスを含む。斯るシングルチップマイクロコンピュータ１００は公知の半導体集積回路製造技術によってシリコン基板のような１つの半導体基板上に形成されている。
【００２０】
シングルチップマイクロコンピュータ１００はクロックパルスジェネレータＣＰＧの端子ＸＴＡＬ，ＥＸＴＡＬに接続される水晶発振子又は外部から入力される外部クロックに基づいて生成される基準クロックに同期して動作を行なう。この基準クロックの最小単位をステートと呼ぶ。尚、図においてＶｓｓ，Ｖｃｃは電源端子である。ＭＯＤＥ１乃至ＭＯＤＥ３はＣＰＵ１に対するモード信号である。
【００２１】
前記ＣＰＵ１にリセット信号ＲＥＳが加えられると、シングルチップマイクロコンピュータ１００はリセット状態になる。このリセット状態を解除すると、ＣＰＵ１は、スタートアドレスをリードして、このスタートアドレスから命令のリードを開始するリセット例外処理を行なう。前記スタートアドレスは、特に制限はされないものの０番地に格納されているものとする。この後、ＣＰＵ１は、特に制限はされないものの、逐次、ＲＯＭ２から命令を読出して解読し、その解読結果に基づいてデータの処理或いはＲＡＭ３、タイマ４、ＳＣＩ５、入出力ポート６１乃至６７などとデータの転送を行なう。すなわち、ＣＰＵ１は、入出力ポート６１乃至６７などから入力されるデータ、あるいはＳＣＩ５などから入力される指示を参照しつつ、ＲＯＭ２に記憶されている命令に基づいて処理を行ない、その結果に従って入出力ポート６１〜７、タイマ４などを使用して外部に信号を出力し、各種機器の制御を行なうものである。特に制限はされないものの、上記ＲＯＭ２、ＲＡＭ３、タイマ４などのリード／ライトは、バイト（例えば８ビット）／ワード（例えば１６ビット）のいずれも２ステートで実行するものとする。
【００２２】
かかるＣＰＵ１の命令の最小単位は２バイトとされ、また、命令または１６ビットデータをメモリに配置する場合には、偶数から始まる連続した２バイトの領域に配置するものとされている。
【００２３】
図２には前記ＣＰＵ１の下位ＣＰＵに相当するＣＰＵのレジスタ構成例が示される。本実施例において下位ＣＰＵとは、本実施例に係るＣＰＵ１の開発以前に提供されていたＣＰＵである。換言すれば、本実施例に係るＣＰＵ１は下位ＣＰＵに対するバージョンアップ版として位置付けることもできる。
【００２４】
同図に示される下位ＣＰＵは、それぞれ１６ビット長の８本の汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈと、１６ビット長のプログラムカウンタＰＣと、８ビット長のコンディションコードレジスタＣＣＲとを有している。汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈは、特に制限はされないものの、上位８ビットと下位８ビットを独立させて８ビット長のデータを格納することも、上位・下位を連結して１６ビット長のデータを格納することもできる。コンディションコードレジスタＣＣＲは割込みマスクビット（Ｉ）、キャリフラグ（Ｃ）、ゼロフラグ（Ｚ）、ネガティブフラグ（Ｎ）、及びオーバフローフラグ（Ｖ）を含んでいる。割込みマスクビットＩは１のとき、ＣＰＵ１を割込み禁止状態とし、０のとき割込み許可状態とする。その他のフラグは演算の結果などを反映する。
【００２５】
図３には図２のレジスタ構成で利用されるデータが示される。
【００２６】
下位ＣＰＵが扱うバイトデータは、前記同様に、汎用レジスタの上位ＲｉＨまたは下位ＲｉＬに格納される（ｉ＝０〜７）。ワードデータは汎用レジスタＲｉに格納される。ビット１５がデータの最上位ビットに、ビット０が最下位ビットにそれぞれ対応する。アドレス情報（アドレスデータとも記す）はワードデータとして汎用レジスタＲｉに格納される。ビット１５がデータの最上位ビットに、ビット０が最下位ビットにそれぞれ対応する。１６ビットレジスタ８本、８ビットレジスタ１６本を利用可能である。データのサイズがバイトであるかワードであるかは命令のオペレーションコードに含まれる１ビットのサイズビットによって決定される。
【００２７】
図４には本発明の一実施例に係る上位ＣＰＵとしてのＣＰＵ１のレジスタ構成例が示される。
【００２８】
ＣＰＵ１はそれぞれ１６ビット長の８本の汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈと、それぞれ１６ビット長の８本の拡張レジスタＥ０〜Ｅ７と、２４ビット長のプログラムカウンタＰＣと、８ビット長のコンディションコードレジスタＣＣＲとを有している。汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈは、特に制限はされないものの、上位８ビットと下位８ビットを独立させて８ビット長のデータを格納することも、上位・下位を連結して１６ビット長のデータを格納することもできる。拡張レジスタＥｉは、８ビットに分割してそれぞれ独立的に使用することはできない。
【００２９】
汎用レジスタＲｉＬ，ＲｉＨをアドレスレジスタとして使用する場合は、汎用レジスタＲｉＨ，ＲｉＬが保有する１６ビットをアドレスの下位１６ビットとし、対応する拡張レジスタＥｉの内容をアドレスの上位１６ビットとして合計３２ビット、または拡張レジスタＥｉの上位８ビットを無視して２４ビットのアドレスを生成するものである。ＣＰＵ１は２４ビット又は３２ビットのアドレスで規定される連続的なアドレス空間を利用することができる。さらにこの３２ビットまたは２４ビットのアドレスを種々修飾することができる。この修飾を行なう場合、下位１６ビットの計算にて、キャリまたはボローが発生した場合には、上位側の拡張レジスタＥｉに対して桁上げまたは桁下げが行われる。尚、以下の説明では、アドレスデータは２４ビットとする。これに応じて図４におけるプログラムカウンタＰＣのビット長は２４ビットとされている。プログラムカウンタＰＣのビット長を３２ビットにしておいてもよい。
【００３０】
拡張レジスタＥ０〜Ｅ７はデータレジスタとしては１６ビットレジスタとして汎用レジスタ同様に使用できる。すなわち、拡張レジスタ同士、及び拡張レジスタと汎用レジスタとの間で、データの演算を行なうことができるようになっている。尚、コンディションコードレジスタＣＣＲは前記同様であるのでその詳細な説明は省略する。プログラムカウンタＰＣはビット長以外は前記同様である。
【００３１】
図５には汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈと拡張レジスタＥ０〜Ｅ７のデータ構成例が示される。ＣＰＵ１が扱うバイトデータは、汎用レジスタの上位ＲｉＨ（ｉ＝０，１，…，７）または下位ＲｉＬに格納される。ワードデータは汎用レジスタＲｉ（ＲｉＨ，ＲｉＬ）または拡張レジスタＥｉに格納される。このときビット１５がデータの最上位ビットに、ビット０が最下位ビットにそれぞれ対応する。３２ビットのロングワードデータは汎用レジスタＲｉ及び拡張レジスタＥｉに格納される。２４ビットのアドレスデータはロングワードデータとして拡張レジスタＥｉと汎用レジスタＲｉに格納される。このとき拡張レジスタＥｉの上位８ビットは予約領域とされる。尚、予約された８ビットと２４ビットのアドレスデータを併せて単にロングワードアドレスデータとも称する。
【００３２】
かかるレジスタ構成によれば、８ビットレジスタ１６本、１６ビットレジスタ１６本、２４ビットレジスタが８本使用できる。これは、前記下位ＣＰＵと上位互換性があり、下位ＣＰＵが有するレジスタを使用して作成されたソフトウェアを、少なくともソースプログラムレベルを以って上記ＣＰＵ１で利用可能であることを意味する。ＣＰＵ１が下位ＣＰＵに対して上位互換を実現するにはレジスタの指定のしかたについても共通性を要する。これについては後で詳述するが、アドレスレジスタとしては、レジスタ番号のみを考慮すればよく、８ビット演算及び１６ビット演算の何れについても、命令のレジスタ指定フィールド中でのレジスタの指定は４ビットで可能になっており、下位ＣＰＵと命令フォーマットを共通化することができる。また、１６本のレジスタの指定に４ビットを使用するので、無駄が生ぜず、この点において斯るレジスタ構成は、ＣＰＵ１の内部構成を単純化し、論理的・物理的規模の縮小し、製造費用の削減・動作速度の向上の実現を図る目的を損なうことがない。
【００３３】
図６乃至図８にはＣＰＵ１のアドレッシングモードと実効アドレスの計算手法の一例が示される。
【００３４】
図６の（１）に示されるレジスタ間接では命令コード中にレジスタを指定する部分を含み、この命令コードで指定されたレジスタとこれに対応する拡張レジスタの内容の合計２４ビットをアドレスとしてメモリ上のアドレスを指定する。アドレスは２４ビットでよいため、上位８ビットは無視する。
【００３５】
図６の（２），（３）に示されるディスプレースメント付レジスタ間接は、上記レジスタ間接と同様に得られた２４ビットのアドレスに、命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はアドレスの指定のみに使用され、拡張レジスタＥｉ及び汎用レジスタＲｉの内容には反映されない。特に制限はされないものの、ディスプレースメントは２４ビットまたは１６ビットであり、１６ビットディスプレースメントは加算する場合には上位１６ビットは符号拡張される。すなわち、ディスプレースメントの上位１６ビットは１６ビットディスプレースメントのビット１５と同じ値であるとして加算が行われる。この場合、２４ビットディスプレースメントの上位８ビットは、命令が２バイト単位であること並びに将来の拡張にそなえて、予約領域を併せて、３２ビットのディスプレースメント指定部を命令コードに含ませている。
【００３６】
図７の（４）に示されるポストインクリメントレジスタ間接は、前記レジスタ間接と同様に得られた２４ビットのアドレスでメモリ上のアドレスを指定する。その後、このアドレスに１または２または４を加算し、その加算結果が拡張レジスタ・汎用レジスタに格納される。メモリ上のバイトデータを指定する場合１が、ワードデータを指定する場合２が、アドレスデータを指定する場合４が、それぞれ加算される。加算結果の上位８ビットも拡張レジスタに格納される。
【００３７】
図７の（５）に示されるプリデクリメントレジスタ間接は、前記レジスタ間接と同様に得られた２４ビットのアドレスから１または２または４を減算した結果の２４ビットのアドレスでメモリ上のアドレスを指定する。その後、その減算結果が拡張レジスタ・汎用レジスタに格納される。メモリ上のバイトデータを指定する場合１が、ワードデータを指定する場合２が、アドレスデータを指定する場合４が、それぞれ減算される。前記同様に、アドレスが２４ビットでよい場合には、特に制限はされないものの、減算結果の上位８ビットも拡張レジスタに格納される。
【００３８】
図７の（６）に示されるプログラムカウンタ相対は、プログラムカウンタの内容の２４ビットのアドレスに命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はプログラムカウンタに格納される。特に制限はされないものの、ディスプレースメントは１６ビットまたは８ビットであり、これらのディスプレースメントは加算する場合には上位８ビットまたは１６ビットは符合拡張される。すなわち、ディスプレースメントの上位８ビットは１６ビットディスプレースメントのビット１５と、または上位１６ビットは８ビットディスプレースメントのビット７と同じ値であるとみなして加算が行われる。プログラムカウンタ相対は分岐命令のみで使用される。
【００３９】
図８に示される絶対アドレスは命令コード中に含まれる、８ビット、１６ビットまたは２４ビットの絶対アドレスをアドレスとしてメモリ上のアドレスを指定する。８ビット絶対アドレスは、上位１６ビットが１拡張される。すなわちアドレスのビット２３〜８は全ビット１とされる。従って使用可能なアドレスはＨ’ＦＦＦＦ００〜Ｈ’ＦＦＦＦＦＦの２５６バイトである。また、１６ビット絶対アドレスは、上位８ビットが符号拡張される。すなわち、１６ビット絶対アドレスのビット１５が０であればアドレスのビット２３〜１６は全ビット０とされ、ビット１５が１であればアドレスのビット２３〜１６は全ビット１とされる。従って使用可能なアドレスはＨ’００００００〜Ｈ’００７ＦＦＦ及びＨ’ＦＦ８０００〜Ｈ’ＦＦＦＦＦＦの６４ｋバイトである。
【００４０】
ＣＰＵ１は、上記の他にイミディエイト、レジスタ直接などのアドレッシングモードを実行するが、これらは本発明に直接は関係しないので詳細な説明は省略する。
【００４１】
下位ＣＰＵはアドレス空間が６４ｋバイトであるため、２４ビットディスプレースメント付レジスタ間接、２４ビットの絶対アドレスは存在しない。また、プリデクリメントレジスタ間接などのロングワードサイズも存在しない。図６乃至図８に示されるその他のアドレッシングモードはアドレス情報の上位８ビットを無視すれば、下位ＣＰＵがサポートするアドレシングモード並びに実効アドレス計算と同一視できる。したがって、ＣＰＵ１は、アドレシングモード及びアドレス計算という点においても下位ＣＰＵと従来ＣＰＵと機能互換である。
【００４２】
図９乃至図１６には主要なアドレッシングモードの命令の命令フォーマットを示す。
【００４３】
それぞれの命令のフォーマットは、各命令の機能及びアドレッシングモードを示すためのオペレーションコード部ｏｐを有し、そのオペレーションコード部ｏｐのオペレーションコードに応じて、使用するレジスタを指定するためのレジスタ指定部（ｒｓ，ｒｄ，ｅｒｓ，ｅｒｄ）、絶対アドレス（ａａ）、ディスプレースメント（ｄ）、又はイミディエイト（ｘｘ）を含んでいる。命令フォーマットは２バイト単位とされ、レジスタ指定部は、命令コードの第一ワードのビット７〜ビット４、ビット３〜ビット０、又は特殊形としてビット１１〜ビット８に含まれる。前記レジスタ指定部ｒｓはバイト又はワードサイズのソースレジスタを指定し、前記レジスタ指定部ｒｄはバイト又はワードサイズのディスティネーションレジスタを指定する。指定すべきレジスタがバイトサイズであかワードサイズであるかはオペレーションコード部のオペレーションコードによって決定される。すなわち、１６ビットの演算を伴うオペレーションコードに付随する場合、レジスタ指定部ｒｓ，ｒｄの下位側３ビットは、８本のレジスタＲ０〜Ｒ７の何れであるかを指定し、指定されたレジスタのうち拡張レジスタを利用するのか汎用レジスタを利用するのかは、当該レジスタ指定部の残りの上位側１ビットによって指定される。８ビットの演算を伴うオペレーションコードに付随する場合、レジスタ指定部ｒｓ，ｒｄの下位側３ビットは、８本のレジスタＲ０〜Ｒ７の何れであるかを指定し、指定されたレジスタのうち汎用レジスタの上位側を利用するのか下位側を利用するのかは、当該レジスタ指定部の残りの上位側１ビットによって決定される。レジスタ指定部ｅｒｓは、ロングワードサイズのソースレジスタを指定し、前記レジスタ指定部ｅｒｄはロングワードサイズのディスティネーションレジスタを指定する。４ビット確保されているレジスタ指定部ｅｒｓ，ｅｒｄの最上位１ビットは命令デコードに際して実質的に無視される。この場合に実質的に有意の３ビットで指定するレジスタが３２ビットであることは、ロングワードデータを利用するそれ専用のオペレーションコードを新たに追加できる場合には、そのオペレーションコードによって明らかにされる。その様な新たにオペレーションコードを追加できない場合、若しくは追加することが得策ではないと判断した場合には、後述するプリフィックスコードを利用する。ここで、前記ロングワードデータを利用するそれ専用のオペレーションコードのビット数は、下位ＣＰＵのオペレーションコードのビット数と同じである。
【００４４】
命令フォーマット中における絶対アドレスａａ，ディスプレースメントｄ，イミディエイトｘｘは、最下位ビットが偶数番めのビット０となるように命令コードに含まれる。すなわち１６ビット以上の絶対アドレスａａ，ディスプレースメントｄ，イミディエイトｘｘは、２バイトを単位として含まれる。このため、２４ビットの絶対アドレスａａ，ディスプレースメントｄは、その先頭（上位ビット側）１バイトの領域中に所定ビット数の予約部を含んで４バイトとされる。８ビットの絶対アドレスａａ，ディスプレースメントｄ，イミディエイトｘｘは第一ワードのビット７〜０に含まれる。
【００４５】
上記命令フォーマットによれば、命令フォーマット中においてレジスタを指定する部分が命令の第一ワードの一部分に固定されているから、命令のデコード論理構成が簡単になる。更に、レジスタ指定領域の下位側３ビットによって８本のレジスタの何れを指定するかを決定し、指定された１本のレジスタの内の何れの領域を使用するかを上位側１ビットで決定すると共に、当該１ビットで決定される領域のサイズは、命令中で指定されるデータサイズによって、換言すれば、オペレーションコード部のオペレーションコードによって、決定されるから、レジスタに格納されるデータ並びにアドレスデータが、バイト、ワード、ロングワードの数種類に亘るときにも、レジスタ指定部のビット数を最小限に抑えることができる。
【００４６】
下位ＣＰＵは、前記同様、２４ビットディスプレースメント付レジスタ間接、２４ビットの絶対アドレスの２つのアドレッシングモードおよびロングワードサイズの命令が存在しない。その他の命令は下位ＣＰＵとＣＰＵ１で共通であり、ＣＰＵ１は下位ＣＰＵと命令フォーマットを共通化している。
【００４７】
図１７には命令フォーマット中におけるレジスタ指定部のデータとそれによって指定されるレジスタとの対応例が示される。
【００４８】
レジスタ指定部はビット０〜２でレジスタの番号（０〜７）を指定し、ビット３は、バイトサイズのとき汎用レジスタＲｉの上位側か下位側か（ＲｉＨ／ＲｉＬ）を、ワードサイズのときには汎用レジスタＲｉか拡張レジスタＥｉかを指定する。なお、ロングワードサイズデータとアドレスレジスタとしての利用においては前述のようにビット３は無視され実質的に存在しない。
【００４９】
図１８にはＣＰＵ１の内部ブロック図が示される。ＣＰＵ１は、主としてマイクロＲＯＭあるいはＰＬＡ（Ｐｌｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）で構成される制御部ＣＯＮＴ、前記汎用レジスタＲ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈ、拡張レジスタＥ０〜Ｅ７、プログラムカウンタＰＣ（ＰＣＬ，ＰＣＨ，ＰＣＥ）、コンディションコードレジスタＣＣＲなどを含む実行部ＥＸＥ、及びレジスタ選択部ＲＥＧＳＥＬから構成される。制御部ＣＯＮＴは命令をフェッチし、これを解読して、命令の実行に必要な各種制御信号を生成したり、命令の実行手順を制御する。レジスタ選択部ＲＥＧＳＥＬは、前記命令の解読結果にしたがってレジスタの選択信号を生成したりする。
【００５０】
実行部ＥＸＥはさらに、テンポラリレジスタＴＲＬ，ＴＲＨ，ＴＲＥ、算術論理演算器ＡＬＵＬ，ＡＬＵＨ，ＡＬＵＥ、リードデータバッファＲＤＢＬ，ＲＤＢＨ，ＲＤＢＥ、ライトデータバッファＷＤＢＬ，ＷＤＢＨ，ＷＤＢＥ、及びアドレスバッファＡＢＬ，ＡＢＨ，ＡＢＥを含み、これらが３本の内部バスＡ（Ｌ，Ｈ，Ｅ）、Ｂ（Ｌ，Ｈ，Ｅ）、Ｃ（Ｌ，Ｈ，Ｅ）、及びセレクタ回路部ＳＥＬを介して接続されている。リードデータバッファＲＤＢＬ，ＲＤＢＨ，ＲＤＢＥは、外部のデータバスＤ７〜Ｄ０，Ｄ１５〜Ｄ８に接続される。ライトデータバッファＷＤＢＬ，ＷＤＢＨ，ＷＤＢＥは、ライトデータ出力バッファＷＤＢＯＬ，ＷＤＢＯＨを介して前記データバスＤ７〜Ｄ０，Ｄ１５〜Ｄ８に接続される。算術論理演算器ＡＬＵＬ，ＡＬＵＨ，ＡＬＵＥは、命令によって指定される各種演算、プログラムカウンタＰＣの加算、実効アドレスの計算などに用いられる。リードデータバッファＲＤＢＬ，ＲＤＢＨ，ＲＤＢＥは、ＲＯＭ２、ＲＡＭ３あるいは図示はされない外部メモリなどからリードした命令やデータを一時的に格納し、またライトデータバッファＷＤＢＬ，ＷＤＢＨ，ＷＤＢＥは前記ＲＯＭ２、ＲＡＭ３あるいは外部メモリなどにライトすべきデータを一時的に格納する。これによってＣＰＵ１の内部動作とＣＰＵ１外部のリード／ライト動作のタイミングを調整している。アドレスバッファＡＢＬ，ＡＢＨ，ＡＢＥはＣＰＵ１がリード／ライトするアドレスを一時的に格納する。
【００５１】
特に制限はされないものの、基本的に上記実行部ＥＸＥ内の各回路ブロックは８ビットの２ブロック及び１６ビットの１ブロックから構成されている。汎用レジスタは８ビットの２ブロックで構成され、Ｒ０Ｈ〜Ｒ７Ｈがビット１５〜ビット８、Ｒ０Ｌ〜Ｒ７Ｌがビット７〜ビット０に対応する。汎用レジスタの更に上位側のビット、すなわちビット３１〜ビット１６は１６ビットの１ブロックの拡張レジスタＥ０〜Ｅ７が対応する。内部バスは、これらのビット３１〜ビット１６、ビット１５〜ビット８、ビット７〜ビット０に対応して夫々Ａ，Ｂ，Ｃが並行して設けられている。その他前記テンポラリレジスタＴＲ，ＡＬＵ，リードデータバッファ，ライトデータバッファなども同様である。これらの物理的な配置は特に制限はされない。
【００５２】
このような汎用レジスタＲｉ，拡張レジスタＥｉを設け、下位ＣＰＵとの互換性を維持しつつ、１６Ｍバイトのアドレス空間を使用可能とした場合、下位ＣＰＵとも、主要な演算はレジスタ間で行い、メモリとレジスタの演算は直接行わない（すなわち１命令では行わない）命令体系とするのが得策である。
【００５３】
第１に、下位ＣＰＵが、メモリとレジスタ間での直接的な演算をサポートして、命令体系を最適化してある場合には、上位ＣＰＵのために新たな命令を追加することが困難である。すなわち、メモリとレジスタの演算についてはメモリのアドレッシングモードと演算の種類との組合せで決定されるオペレーションコードの種類が飛躍的に多くなってしまい、新規のオペレーションコードを追加することが困難である。または、新規のオペレーションコードは必然的に最適化できず、命令長が長くなって、プログラムサイズを大きくし、ひいてはプログラムの実行効率も悪化してしまう。
【００５４】
第２に、１６Ｍバイトのアドレス空間を有効に利用するには、前記のような複雑なアドレッシングモードが必要である。演算命令の多くにこのような複雑なアドレッシングモードを実行可能とすると、制御部ＣＯＮＴの構成が複雑になり、論理的並びに物理的規模を最小限とする目的に反してしまうためである。メモリのアクセスには、前述の種々のアドレッシングモードを有する転送命令でレジスタとのデータの転送を行い、レジスタ上で演算などのデータ処理を行うものとすればよい。汎用レジスタＲｉは８ビット長で最大１６本分として使用でき、また、汎用レジスタＲｉ及び拡張レジスタＥｉは１６ビット長で最大１６本分として使用でき、ある処理に必要なデータはレジスタ上に置くことができる。或は、少なくとも、使用頻度の高いデータの大部分はレジスタ上に置くことができる。したがって、処理プログラムの増加や実行速度の低下といった不都合が発生する場合は少ないと考えられる。
【００５５】
メモリに対する演算を行う必要がある命令としては、ビット操作命令がある。これらは、バイト単位で割り当てられたアドレスの第ｎビットとして指定されるものの、バイト単位で扱われるデータではなく、それぞれのビットが独立した機能を有している。たとえば、タイマの動作を制御するレジスタのような場合、第０ビット・第１ビットでタイマのクロックを選択し、第２ビットではタイマカウンタと比較レジスタの内容が一致した時、タイマカウンタをクリアするかしないかを指定し、第３ビットでは前記一致した時、割込みを発生するかしないかを指定するものである。これらは１ビット単位で１にセットしたり、０にクリアしたりする必要がある。あるいは入力ポートの所定の１ビットが０であるか１であるかによってＣＰＵ１の処理プログラムが異なる場合、前記１ビットのデータを判定する必要がある。かかる１ビットデータはメモリに対して直接演算しなければならない。バイト単位で一旦レジスタに転送した後にビット操作を行うと、前記転送とビット操作の間に割込みが入ってしまい、例えば前記入力ポートの値が変化してしまうような不都合が発生するためである。しかしながらこのようなビット操作命令の対象となるアドレスは固定的で、複雑なアドレッシングモードは必要ではない。絶対アドレスと、最低限レジスタ間接を実行できればよい。しかも絶対アドレスの場合も全アドレス空間を使用できる必要はなく、前記タイマ・入出力ポートなどの存在するアドレス範囲にのみ使用できれば十分と考えられる。このようなアドレス範囲の指定に使用できる絶対アドレスは８ビットで十分である。１６ビットとすれば使用可能なアドレス範囲が広がるが、命令長が長くなり制御が複雑になってしまう。少なくとも２４ビットとして１６Ｍバイトの全空間を使用可能としなければならない場合は非常に稀であると考えられる。そこで、本実施例におけるＣＰＵ１は、汎用レジスタのような内部のレジスタと周辺回路の制御用レジスタのような外部レジスタとの間での直接的な演算のためのビット操作命令についてはサポートするが、これによって、１ビット又は数ビットのビット操作命令を直接外部周辺回路との間で行っても、これによって制御部の規模や命令の種類が極端に増大する虞はない。
【００５６】
図１９には命令の機能とアドレシッシングモードの組合せとの関係の一例が示される。
【００５７】
同図において＃はイミディエイト、Ｒはレジスタ直接、＠Ｒはレジスタ間接、＠（ｄ１６，Ｒ）及び＠（ｄ２４，Ｒ）はディスプレースメント付きレジスタ間接、＠−Ｒはプリデクリメントレジスタ間接、＠Ｒ＋はポストインクリメントレジスタ間接、＠ａ８，＠ａ１６，＠ａ２４は絶対アドレス、＠（ｄ８，ＰＣ），＠（ｄ１６，ＰＣ）はプログラムカウンタ相対、の各アドレシングモードを意味する。また同図においてＢはバイト、Ｗはワード、Ｌはロングワードを意味する。プログラムカウンタ相対は分岐命令専用である。そのほかのアドレシッシングモードは転送命令で使用可能である。演算命令はイミディエイトとレジスタ直接を使用可能である。但し単項演算はレジスタ直接のみである。
【００５８】
図１９において、下位ＣＰＵでサポートするものは〇印を付してある。インクリメント・デクリメントのロングワードは、下位ＣＰＵではアドレスレジスタがワードサイズであるため、ワードサイズの演算になる。
【００５９】
算術演算命令は前記のとおりバイト，ワード，ロングワードを使用可能であるが、キャリ付き加減算はバイトサイズのみ使用可能である。インクリメント，デクリメントはレジスタをカウンタとする場合のために、±１はバイト，ワード，ロングワードを使用可能とするが、±２，±４はアドレス計算用であるため、ロングワードのみを使用可能としている。論理演算命令，シフト命令，ローテート命令は特に制限はされないもののバイト，ワード，ロングワードを使用可能である。これは、１６Ｍバイトのアドレス空間を使用する応用の一つとして、プリンタの文字データを扱う場合に、文字データの白黒反転や斜体等の加工にこれら命令が多用されると考えられるためである。逆に、６４ｋバイトのアドレス空間のサポートする下位ＣＰＵでは、論理演算命令，シフト命令，ローテート命令は特に制限はされないもののバイトのみを使用可能である。
【００６０】
前記の通り、主要な演算はレジスタ間で行い、メモリとレジスタ間での直接的な演算は行わない命令体系としても、新規のオペレーションコードの追加が困難な場合には、例えば、ロングワードサイズの転送命令，演算命令を、ワードサイズの相当命令に１ワードのプリフィックスコードを追加したものとすれば、特に、制御部の論理的・物理的規模を最低限とすることができる。
【００６１】
図２０及び２１にはプリフィックスコードを利用した一例命令フォーマットが示される。
【００６２】
前記の通り、ディスプレースメント付レジスタ間接のワードサイズの命令フォーマットの前に、１ワードのプリフィックスコードを設けて、ロングワードサイズを表現している。プリフィックスコードは、下位ＣＰＵの命令コードと重複しないことが必要であるから、これを未定義命令のコードに相当するコードとするのが最適である。その外に、オペランド指定フィールドの情報を実質的に必要としないノン・オペレーション（ＮＯＰ）命令のような命令のオペランド指定フィールドを所定のコードで満たしたものを、可能ならプリフィックスコードとして利用することができる。
【００６３】
図２２にはかかるマイクロコンピュータのアドレスマップが示される。
【００６４】
内蔵ＲＯＭはアドレスＨ’０００００から配置され、内蔵周辺機能と内蔵ＲＡＭはＨ’ＦＦ８００以降に配置されており、これらの間は外部空間とされる。内蔵周辺機能と内蔵ＲＡＭをアドレス空間の中途、例えば、Ｈ’０Ｆ８００からＨ’０ＦＦＦＦなどに配置することができるが、この場合には外部空間が２ヵ所に分離され、また、内蔵ＲＯＭに書き込んだプログラムと外部空間に存在するプログラムを連続的に使用できず、本発明の目的に反する。従って主としてプログラム領域とされるべき内蔵ＲＯＭと、主としてデータ領域とされるべき内蔵周辺機能・内蔵ＲＡＭは互いにアドレス空間の反対に配置し、この間は連続した空間とすべきである。特に内蔵ＲＯＭはスタートアドレスまたはスタートアドレスを格納したアドレスを含む必要がある。
【００６５】
なお、１６ビット絶対アドレスは上位８ビットを符号拡張して、実効アドレスを生成するため、指定範囲はＨ’００００００〜Ｈ’００７ＦＦＦおよびＨ’ＦＦ８０００〜Ｈ’ＦＦＦＦＦＦであって、内蔵ＲＯＭの３２ｋバイトおよび内蔵ＲＡＭと内蔵周辺機能を指定できる。３２ｋバイトより大きい内蔵ＲＯＭの部分を除き、下位ＣＰＵ同様に１６ビット絶対アドレスで内蔵機能ブロックを指定できる。従って、下位ＣＰＵからのソフトウェアの移植を容易に行うことができる。また、１６ビットディスプレースメントレジスタ間接の場合、ディスプレースメントを基準アドレス、レジスタの内容を相対値と解釈したときの基準アドレスの指定範囲と一致する。
【００６６】
以上の実施例においては、アドレス空間を１６Ｍバイトとしたが、また、本発明において拡張された機能は必要であるが、アドレス空間は従来同様に６４ｋバイトで十分な応用も考えられる。
【００６７】
例えば、外部空間を使用せず、シングルチップマイクロコンピュータの全ての端子を入出力ポートとして使用し、応用システムの実装面積を縮小したい場合などは、内蔵領域の合計が６４ｋバイト以下であれば、アドレス空間は従来同様に６４ｋバイトで問題ない。
【００６８】
かかる応用においては、ベクタのリードあるいはプログラムカウンタのスタックは１６ビットすなわち２バイト単位で行なえば良く、４バイト分のアクセスを行なうことは無駄であり、実行時間の低下・メモリの利用効率低下となる。
【００６９】
特に制限はされないものの、６４ｋバイトのアドレス空間で動作するモードをミニマムモード、前記の通り、６４ｋバイト以上のアドレス空間で動作するモードをマキシマムモードとする。なお、これらミニマムモード・マキシマムモードは図１にＭＯＤＥ１〜ＭＯＤＥ３端子によって適宜指定される。
【００７０】
図２３にはミニマムモード、マキシマムモードでのＣＰＵの動作の相異が示される。
【００７１】
前記のとおり、マキシマムモードでは、アドレスの最大本数は２４ビットであり、ベクタ・例外処理時のスタック・サブルーチンコール時のスタックはいずれもアドレス２４ビットを含み４バイト単位である。
【００７２】
ミニマムモードでは、アドレスの最大本数は１６ビットであり、ベクタ・サブルーチンコール時のスタックはいずれもアドレス１６ビット分の２バイトに縮小される。また、特に制限はされないものの、ＣＰＵ１がアドレッシングモードとして、いわゆるポストインクリメントレジスタ間接・プリデクリメントレジスタ間接を有するものとし、アドレスレジスタの更新は下位１６ビットとする。すなわち、拡張アドレスの更新は行なわない。ミニマムモードは、マキシマムモードに対して、高速化とメモリ利用効率の向上を実現できる。
【００７３】
図２４にはミニマムモード、マキシマムモードでのメモリ上のデータ形式が示される。
【００７４】
マキシマムモードでは、ベクタは４バイト単位で４の倍数番地を先頭にして配置される。先頭１バイトは予約領域で、残りの３バイトがスタートアドレスとして使用される。スタックは、例外処理時・サブルーチンコール時とも、４バイト単位で偶数番地を先頭にして配置される。
【００７５】
ミニマムモードでは、ベクタは２バイト単位で偶数番地を先頭にして配置される。これらがスタートアドレス（下位１６ビット。上位８ビットは０とみなされる。）として使用される。スタックは、例外処理時は、４バイト単位で偶数番地を先頭にしてＣＣＲ・予約領域とＰＣ下位１６ビットが格納される。サブルーチンコール時は、２バイト単位で偶数番地を先頭にしてＰＣ下位１６ビットが格納される。
【００７６】
係るミニマムモードとマキシマムモードを用意しておけば、ミニマムモードで動作するＣＰＵ１は、オブジェクトプログラムレベルで上位互換を実現することができる。
【００７７】
かかるシングルチップマイクロコンピュータをテストすることを考えると、ミニマムモードおよびマキシマムモードの何れにおいても、ベクタ領域を外部メモリとすることが可能であることが望ましい。マキシマムモードは広いアドレスを有効に利用するため、ＲＯＭ無効拡張モードを設定すると考えられ、かかるＲＯＭ無効拡張モードではベクタ領域が外部メモリとなるので問題はない。しかしながら、ミニマムモードをシングルチップモードのみとした場合には、最低限テスト用にベクタ領域を外部メモリとする必要がある。テスト時には、内蔵ＲＯＭの内容は、使用者のプログラムが格納されており、製造者は利用できない。このため、ミニマムモード／マキシマムモードのベクタ構造の切り替え機能がテストできなくなってしまうためである。
【００７８】
これに対しては、例えばテストモード時にのみリード／ライト可能なレジスタを設け、かかるビットの設定によって、ミニマムモードでかつＲＯＭ無効拡張モードが設定できるようにすればよい。最低限、ＲＯＭ上のベクタ領域をリードしたときにデータを外部から入力できるようにすればよい。
【００７９】
上記実施例によれば以下の効果を得るものである。すなわち、
（１）８ビットＣＰＵの１６ビット汎用レジスタに１６ビットの拡張レジスタを追加したような形態を以って、全体で３２ビットのレジスタ（Ｒｉ＋Ｅｉ）を一括して又はその一部分をアドレスレジスタとして使用するとともに、データレジスタとしては、３２ビット全体を１単位として、２分割して２個の１６ビットデータレジスタ（Ｅｉ，Ｒｉ）として、さらに１６ビットデータレジスタの一方を２分割して２個の８ビットレジスタ（ＲｉＨ，ＲｉＬ）として使用可能にする。そして、８ビットレジスタとして利用するか１６ビットレジスタとして利用するかは、オペレーションコードに含まれる、データ情報のサイズビットによって決定する。データ情報のサイズが８ビット（バイト）のとき、８ビットレジスタの上位（ＲｉＨ）・下位（ＲｉＬ）は、命令に含まれるレジスタ指定フィールドの所定１ビットによって指定する。データ情報のサイズが１６ビット（ワード）のとき、当該所定１ビットは、１６ビットレジスタの上位（Ｅｉ）・下位（Ｒｉ）を指定することになる。そして、３２ビットレジスタ（Ｒｉ＋Ｅｉ）としての利用は、オペレーションコードを含む命令の前置きコード（プリフィックスコード）によって指定する。或は、下位ＣＰＵのオペレーションコードと同一ビット数の新たなオペレーションコードを追加して指定する。このようにレジスタの指定方式をも含めてＣＰＵ１のレジスタ構成は下位ＣＰＵのレジスタ構成を包含する。これを基に、１６ビット汎用レジスタを備える下位ＣＰＵがサポートする命令実行機能をＣＰＵ１が包含する。これにより、下位ＣＰＵのために開発されたプログラムは、少なくとも、ソースプログラムのレベル上位ＣＰＵ１に利用可能になる。すなわち、少なくとも、ソースプログラムレベルで上位互換を実現することができる。
（２）有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタＥｉ，Ｒｉ，ＲｉＨ，ＲｉＬの利用形態に応じて切り替える動作モードとして、マクシマムモードとミニマムモードを用意しておくことにより、ミニマムモードで動作するＣＰＩ１は、オブジェクトプログラムレベルでの上位互換を実現することができる。
（３）ロングワードデータを利用する命令にプリフィックスコードを採用することにより、主要な演算はレジスタ間で行い、メモリとレジスタ間での直接的な演算は行わない命令体系としても、新規のオペレーションコードの追加が困難な場合に対処できると共に、制御部の論理的・物理的規模の増大を著しく抑えることができる。
（４）プリフィックスコードとして、未定義命令のコードに相当するコードを採用することにより、他のオペレーションコードとの重複を完全に阻止できる。
（５）全体で３２ビットのレジスタＲｉ、Ｅｉを一括して或は一部をアドレスレジスタとして使用するとともに、２分割して１６ビットデータレジスタとし、さらに１６ビットデータレジスタの一方を８ビットレジスタとして使用可能とすることによって、データ処理を効率良く行ないつつ、１６Ｍバイトの広いアドレス空間を使用することができる。
（６）命令長を２バイト単位として、２４ビット絶対アドレス・ディスプレースメントを予約領域を含めて４バイトとすることにより、将来４Ｇバイトのアドレス空間を使用することができる。
（７）８ビットレジスタとして利用可能なレジスタの数と、１６ビットレジスタとして利用可能なレジスタの数を同数とすることにより、命令長を短縮してプログラム効率を向上することができる。
（８）命令コード中のレジスタ指定部をレジスタ全体を指定する３ビット及びレジスタの部分を指定する１ビットで構成することにより、レジスタ選択回路の論理的・物理的規模を縮小できる。
（９）命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットとすることにより、実行部及び制御部の構成を単純化し、論理的並びに物理的規模を縮小できる。
（１０）シングルチップマイクロコンピュータ１００の論理的並びに物理的規模を最小限として、６４ｋバイト以上のアドレス空間を使用できる。
【００８０】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８１】
例えば、ＣＰＵ１のブロック構成，レジスタ構成，具体的な論理回路例などについては何ら限定されない。レジスタのビット数あるいはレジスタの本数などは任意に選択することもできる。アドレッシングモードと実効アドレスの計算方法についても種々変更可能である。
【００８２】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野シングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他のデータ処理装置に適用可能であり、データの処理性能よりもデータの規模が重要である場合などに適用することができる。
【００８３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００８４】
（１）レジスタ指定方式も含めて下位ＣＰＵのような別のデータ処理装置のレジスタ構成、並びに下位ＣＰＵの命令実行機能を包含することにより、下位ＣＰＵのために開発されたプログラムは、少なくとも、ソースプログラムのレベルで本発明に係るデータ処理装置に利用可能になり、少なくとも、ソースプログラムレベルでの上位互換を実現することができる。
（２）有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタの利用形態に応じて切り替える動作モードを予め用意しておくことにより、オブジェクトプログラムレベルでの上位互換も簡単に実現できるようになる。
（３）８ビットＣＰＵの１６ビット汎用レジスタに１６ビットの拡張レジスタを追加して、全体で３２ビットで構成されるようなデータ保持手段は、データの保持には全部、又は２分割して、或は２分割した一方を更に２分割して使用可能であり、これによって、ソフトウェア上並びにハードウェア上でのデータ保持手段の使い勝手が良好になり、ひいては、データ処理装置の論理的並びに物理的な規模の縮小を達成することができる。また、データ保持手段の全体又は一部分を使用したアドレスデータの保持という点に関しては、リニアに利用可能なアドレス空間の拡張が容易になり、また、ページレジスタによるアドレス空間拡張技術に比べてプログラムの作成並びにコンパイルを容易化することができる。したがって、高級言語により作成されたプログラムを効率よく実行できる。
（４）ｎビットデータの演算命令と２ｎビットデータの演算命令とを考慮したとき、全体を２等分割して使用される部分と、２等分割された一方を更に２等分割して使用される部分とを有するように個々のデータ保持手段を構成すると共に、２等分割で利用される部分の全体の数が、更に２等分割で利用される部分の全体の数と等しくなるように、複数単位の前記データ保持手段を設けることにより、命令長を短縮してプログラム効率を向上させることができる。
（５）命令の単位を、データの単位の２倍長にすることにより、将来におけるアドレス空間の拡張に容易に対応できる。さらに、命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットにすることにより、実行手段及び制御手段の構成を単純化し、論理的並びに物理的な規模の縮小に寄与する。
（６）データ保持手段を指定する部分が命令の単位中の一部分に固定された命令フォーマットを採用することにより、レジスタのような前記データ保持手段のための選択回路若しくは命令デコード回路の論理的並びに物理的な規模を縮小することができる。更にその場合に、前記指定する部分を、複数単位の中から所要のデータ保持手段を指定する領域と、一つのデータ保持手段内の何れの部分かを指定する領域とで構成し、更に、命令中で指定されるデータサイズに基づいて、前記データ保持手段内の何れの部分かを指定する領域が、２等分割された何れの部分を指定するのか、更に２等分割された何れの部分を指定するのかを決定するようにすることにより、データ保持手段に格納されるデータ並びにアドレスデータが、バイト、ワード、ロングワードの数種類に亘るときにも、命令フォーマット中におけるレジスタ指定部のビット数を最小限に抑えることができる。
（７）したがって、論理的・物理的規模の増加を最小限としつつ、下位ＣＰＵのような別のデータ処理装置ために既に開発されたプログラムの一部若しくは全部を利用可能な、下位ＣＰＵとの上位互換を実現しつつ、連続的に使用可能なアドレス空間を相対的に広げることができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係るシングルチップマイクロコンピュータのブロック図である。
【図２】下位ＣＰＵのレジスタ構成例の説明図である。
【図３】図２のＣＰＵの汎用レジスタのデータ構成を示す説明図である。
【図４】本発明に係るデータ処理装置の一実施例であるＣＰＵのレジスタ構成説明図である。
【図５】本実施例に係るＣＰＵのレジスタ上のデータ構成図である。
【図６】今実施例に係るＣＰＵによるアドレシングモードと実効アドレス計算方法の一例説明図である。
【図７】本実施例に係るＣＰＵによるアドレシングモードと実効アドレス計算方法の他の例の説明図である。
【図８】本実施例に係るＣＰＵによるアドレシングモードと実効アドレス計算方法の別の例の説明図である。
【図９】本実施例に係るＣＰＵの命令フォーマットの一例説明図である。
【図１０】本実施例に係るＣＰＵの他の命令フォーマットの説明図である。
【図１１】本実施例に係るＣＰＵのその他の命令フォーマットの説明図である。
【図１２】本実施例に係るＣＰＵの別の命令フォーマットの説明図である。
【図１３】本実施例に係るＣＰＵの更に別の命令フォーマットの説明図である。
【図１４】本実施例に係るＣＰＵの更に他の命令フォーマットの説明図である。
【図１５】本実施例に係るＣＰＵの更にその他の命令フォーマットの説明図である。
【図１６】本実施例に係るＣＰＵの残りの一部の命令フォーマットの説明図である。
【図１７】図４に示されるレジスタの指定態様に関する説明図である。
【図１８】本実施例に係るＣＰＵの一例ブロック図である。
【図１９】本実施例に係るＣＰＵの命令とアドレッシングモードとの組合せを示す説明図である。
【図２０】プリフィックスコードを利用した命令フォーマットの説明図である。
【図２１】プリフィックスコードを利用した別の命令フォーマットの説明図である。
【図２２】本発明の一実施例に係るマイクロコンピュータのアドレスマップである。
【図２３】ミニマムモードとマキシマムモードでのＣＰＵの動作の相異を示す説明図である。
【図２４】ミニマムモードとマキシマムモードでのメモリ上のデータ形式の相違を示す説明図である。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  タイマ
５  ＳＣＩ
１００  シングルチップマイクロコンピュータ
Ｒｉ（Ｒ０Ｌ，Ｒ０Ｈ〜Ｒ７Ｌ，Ｒ７Ｈ）  汎用レジスタ
Ｅ（Ｅ０〜Ｅ７）  拡張レジスタ
ＰＣ  プログラムカウンタ
ＳＥＬ  セレクタ回路部
ＥＸＥ  実行部
ＣＯＮＴ  制御部
ＲＥＧＳＥＬ  レジスタ選択回路部
ＡＢＬ，ＡＢＨ，ＡＢＥ  アドレスバッファ
ＡＬＵＬ，ＡＬＵＨ，ＡＬＵＥ  算術論理演算器
ＲＤＢＬ，ＲＤＢＨ，ＲＤＢＥ  リードデータバッファ
ＲＤＢ１，ＲＤＢ３  第１のリードデータバッファ部分
ＲＤＢ２，ＲＤＢ４  第２のリードデータバッファ部分
ＷＤＢＬ，ＷＤＢＨ，ＷＤＢＥ  ライトデータバッファ
ＷＤＢＯＬ，ＷＤＢＯＨ  ライトデータ出力バッファ
【図１】
0003539951.tif 000002
【図２】
0003539951.tif 000003
【図３】
0003539951.tif 000004
【図４】
0003539951.tif 000005
【図５】
0003539951.tif 000006
【図６】
0003539951.tif 000007
【図７】
0003539951.tif 000008
【図８】
0003539951.tif 000009
【図９】
0003539951.tif 000010
【図１０】
0003539951.tif 000011
【図１１】
0003539951.tif 000012
【図１２】
0003539951.tif 000013
【図１３】
0003539951.tif 000014
【図１４】
0003539951.tif 000015
【図１５】
0003539951.tif 000016
【図１６】
0003539951.tif 000017
【図１７】
0003539951.tif 000018
【図１８】
0003539951.tif 000019
【図１９】
0003539951.tif 000020
【図２０】
0003539951.tif 000021
【図２１】
0003539951.tif 000022
【図２２】
0003539951.tif 000023
【図２３】
0003539951.tif 000024
【図２４】
0003539951.tif 000025