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