JP3539951B2 - Data processing device - Google Patents
Data processing device Download PDFInfo
- Publication number
- JP3539951B2 JP3539951B2 JP2003037571A JP2003037571A JP3539951B2 JP 3539951 B2 JP3539951 B2 JP 3539951B2 JP 2003037571 A JP2003037571 A JP 2003037571A JP 2003037571 A JP2003037571 A JP 2003037571A JP 3539951 B2 JP3539951 B2 JP 3539951B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- bit
- data
- instruction
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、データ処理装置にかかり、例えば、シングルチップマイクロコンピュータの中央処理装置に利用して有効な技術に関するものである。
【0002】
【従来の技術】
シングルチップマイクロコンピュータには、それらの中央処理装置(以下単にCPUとも記す)が主として扱うデータ長によって4ビット、8ビット、16ビットマイクロコンピュータなどがある。現在、これらの中では8ビットシングルチップマイクロコンピュータが最も多く使用され、機器組込制御用として用いられている。このような8ビットシングルチップマイクロコンピュータとしては、(株)日立製作所平成元年6月発行『H8/330 HD6473308 HD6433308 ハードウェアマニュアル』などがある。8ビットシングルチップマイクロコンピュータの中央処理装置(以下8ビットCPU)は主として扱うデータ長が8ビットであり、このため、8ビットCPUは8ビット長のレジスタまたはアキュムレータと、かつ8ビットレジスタの2倍長である16ビットレジスタを有する。これらの8ビットCPUは、特に制限はされないものの、データ処理には主として8ビットレジスタまたは16ビットレジスタを使用し、メモリを参照するためのアドレスレジスタとしては16ビットレジスタのみを使用する。このようなアドレスレジスタとしての16ビットレジスタはインデックスレジスタ、スタックポインタ、プログラムカウンタなどと呼ばれる場合がある。
【0003】
前記8ビットCPUでは、命令の最小単位が16ビット(2バイト)とされている。また、命令または16ビットデータをメモリに配置する場合には、偶数から始まる連続した2バイトの領域に配置する様に限定されている。さらに、前記8ビットCPUの演算命令はCPU内部のレジスタ間でのみ可能とされ、メモリに配置したデータの操作は、かかるデータを一旦CPU内部のレジスタに転送した後に、演算命令による操作を行わなければならない。このような制限を有する代りに、CPUの内部構成、特にCPUの実行状態を制御する制御部の構成を単純化し、論理的並びに物理的規模の縮小を実現している。論理的並びに物理的規模の縮小の効果として、製造費用を削減できる。また、副次的な効果として、動作速度の向上を図ることができる。すなわち、相対的に小さい製造費用で、相対的に大きな処理性能を実現できる。
【0004】
【発明が解決しようとする課題】
しかしながら、前記CPUでは、アドレスレジスタが16ビット長であり、CPUが参照できるメモリは65536バイト(=216、以下64kバイト)である。これに対して、8ビットシングルチップマイクロコンピュータが用いられる機器組込制御の応用では、機器の高性能化によって大容量のプログラムあるいはデータを扱うことが要求されている。かつ、この時、前記従来のCPUに対して機能が上位互換であることがのぞましい。すなわち、使用者は、既に前記従来のCPUで開発したソースプログラム若しくはオブジェクトプログラムの全部又は一部をそのまま利用できる。これにより、マイクロコンピュータの周辺機能あるいは応用システムに依存する部分だけを変更して、ただちにソフトウェアあるいは応用システムを開発し、その開発期間を短縮できる。
【0005】
このような要求に対して、本発明者は、前記CPUの前記論理的・物理的規模の縮小、または相対的に小さい製造費用で、相対的に大きな処理性能を実現しつつ、64kバイト以上のメモリを参照できるCPUについて検討した。
【0006】
これに対し、8ビットCPUに8ビットのページレジスタを付加し、16ビットレジスタと組合せて、アドレスを生成することにより参照できるメモリを16777216バイト(=224、以下16Mバイト)としたシングルチップマイクロコンピュータの例として(株)日立製作所昭和63年12月発行『H8/532 HD6475328 HD6435328 ハードウェアマニュアル』などがある。このようなメモリ参照方法は、ページレジスタとアドレスレジスタが全く独立しているために、ハードウェアの実現方法が簡単化される反面、ページレジスタとアドレスレジスタの間にキャリまたはボローの伝播が行われず、プログラムあるいはコンパイラを作成する場合には、一群のプログラムあるいはデータがページ境界を越えない様に常に注意しなければならない。すなわち、上記の例で、命令を0番地から実行すると、当初、プログラムカウンタはH’0000(H’は16進数を示す),これに対応するページレジスタ(以下コードページレジスタ)はH’00である。分岐命令を使用せずに演算命令などを実行し続け、65535(H’FFFF)番地に達した後、次の命令を実行しようとした場合、プログラムカウンタはH’FFFF→H’0000となってオーバフローする。この時のキャリはコードページレジスタに伝播されないために、次の命令は0番地に戻ってしまう。このため、プログラムは64kバイトを越えないように分割して作成し、分割したプログラムをそれぞれ別のページに割当て、あるページに存在するプログラムから別のページに存在するプログラムに実行を移す場合はページ間分岐命令を使用する必要がある。すなわち、プログラム中で分岐命令を使用する場合は、分岐先が同一ページ内に存在するか、別ページに存在するかを意識してページ内分岐命令とページ間分岐命令を使い分ける必要がある。データも同様に64kバイトを越えないように分割して、管理する必要がある。すなわち、いわゆるポストインクリメントレジスタ間接モードなどの様にメモリをアクセスする毎にアドレスレジスタの内容を更新していく場合、上記同様にアドレスレジスタがオーバフローしても対応するページレジスタ(以下データページレジスタ)にキャリが伝播されない。また、ディスプレースメント付レジスタ間接で、16ビットのディスプレースメントを使用する場合、16ビットのアドレスレジスタに16ビットのディスプレースメントを加算し、キャリまたはボローが発生してもページレジスタには伝播されず、16ビットの加算結果とページレジスタが組み合わされてアドレスが生成される。すなわち、ページレジスタがH’00、アドレスレジスタがH’FFFF、ディスプレースメントがH’4000の場合、結果として得られるアドレスはH’003FFFになってしまう。したがって、ページレジスタを利用したアドレス拡張技術においては、実質的に利用可能なアドレシングモードも制限されてしまう。
【0007】
このようなプログラムあるいはデータがページ境界を越えない様に常に注意して、ページレジスタの管理を行なうことは、いわゆる高級言語を用いてプログラムした内容をCPUのいわゆる機械語によるプログラム(オブジェクトプログラム)に自動的に変換するコンパイラの作成上の大きな制約となり、コンパイラの設計効率を低下させ、また、作成されるオブジェクトプログラムの規模を著しく大きくし、さらにその結果として、プログラムの実行時間も低下してしまう。
【0008】
また、64kバイト以下のメモリ空間で充分な応用に対して、前記ページレジスタは、データレジスタとして使用できないために論理的並びに物理的に無駄となってしまい、前記相対的に小さい製造費用で、相対的に大きな処理性能を実現する目的に反してしまう。
【0009】
本発明の目的は、論理的・物理的規模の増加を最小限としつつ、下位CPUのような別のデータ処理装置ために既に開発されたプログラムの一部若しくは全部を利用可能な、下位CPUとの上位互換を実現しつつ、連続的に使用可能なアドレス空間を相対的に広げることができるデータ処理装置を提供することにある。連続的に使用可能なアドレス空間を相対的に広げるとは、例えば、8ビットCPUを用いて64kバイト以上のアドレス空間を連続的に使用できるということである。
本発明の別の目的は、上記目的に加えて更に、高級言語により作成されたプログラムのコンパイルを容易化できるデータ処理装置を提供することにある。
【0010】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0011】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0012】
すなわち、CPUの汎用レジスタに対し、データ情報の保持には全部、又は2等分割して、或は2等分割した一方を更に2等分割して使用し、アドレス情報の保持には、下位CPUのアドレスビット数よりも多いビット数を以って利用可能にする。例えば、8ビットCPUの16ビット汎用レジスタに16ビットの拡張レジスタを追加し、全体で32ビットのレジスタを一括して又はその一部分をアドレスレジスタとして使用するとともに、データレジスタとしては、32ビット全体を1単位として、2分割して2個の16ビットデータレジスタとして、さらに16ビットデータレジスタの一方を2分割して2個の8ビットレジスタとして使用可能にする。斯るレジスタの利用形態の指定は次のように行う。8ビットレジスタとして利用するか16ビットレジスタとして利用するかは、オペレーションコードに含まれる、データ情報のサイズビットによって決定される。データ情報のサイズが8ビット(バイト)のとき、8ビットレジスタの上位・下位は、命令に含まれるレジスタ指定フィールドの所定1ビットによって指定される。データ情報のサイズが16ビット(ワード)のとき、当該所定1ビットは、16ビットレジスタの上位・下位を指定することになる。そして、32ビット(ロングワード)レジスタとしての利用は、オペレーションコードを含む命令の前置きコード(プリフィックスコード)によって指定する。或は、下位CPUのオペレーションコードと同一ビット数の新たなオペレーションコードを追加して指定する。このようなレジスタ構成に基づいて、16ビットレジスタを備える下位CPUの命令実行機能を包含する。これにより、下位CPUのために開発されたプログラムは、少なくとも、ソースプログラムのレベル(高級言語での記述レベル)で本発明に係る上位CPUに利用可能になる。すなわち、少なくとも、ソースプログラムレベルで上位互換を実現する。ここで下位CPUとは、そのレジスタ構成並びにその命令セットが本発明に係るCPUのようなデータ処理装置のレジスタ構成及び命令セットに包含されるようなCPUをいう。
【0013】
更に、オブジェクトプログラムレベルでの上位互換を実現するには、有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタの利用形態に応じて切り替える動作モード、例えばマキシマムモードとミニマムモードを用意しておけばよい。ミニマムモードにおいてCPUは下位CPUと全く同様に動作する。マキシマムモードにおいてCPUはそれに備えられた最大限の機能を以って上位CPUとして動作される。
【0014】
前記前置きコードは、下位CPUの命令コードと重複しないことが必要であるから、これを未定義命令のコードに相当するコードとするのが最適である。
【0015】
命令の単位は、データ情報の単位の2倍長にすることができる。例えば、CPUのレジスタを32ビットに拡張したとき、将来における4Gバイトのアドレス空間の使用を考慮するときには、命令長を2バイト単位として、24ビット絶対アドレス・ディスプレースメントを予約領域を含めて4バイトとする。更に、実行手段及び制御手段の構成を単純化し、論理的並びに物理的な規模の縮小に寄与するには、命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットにすることが望ましい。
【0016】
【作用】
上記した手段によれば、データ情報の保持には2分割利用可能であり、下位CPUのアドレスビット数以上のビット数を以ってアドレスレジスタとしても利用可能なレジスタ構成を採用すること、データ情報のバイト/ワードサイズはオペレーションコードのサイズビットで指定されること、ロングワードサイズのデータ情報の利用はプリフィックスコード或は下位CPUと同一ビット数の新たに追加したオペレーションコードで指定されること、バイトサイズのデータ情報に対して利用するバイトサイズレジスタの上位/下位はレジスタ指定フィールドの所定1ビットで指定されること、ワードサイズのデータ情報に対してはその所定1ビットでワードサイズレジスタの上位/下位が指定されることの夫々を以って、少なくともソースプログラムレベルでの上位互換を実現する。
【0017】
前記マキシマムモードとミニマムモードを用意しておくことは、オブジェクトプログラムレベルでの上位互換を実現する。
【0018】
8ビットCPUの16ビット汎用レジスタに16ビットの拡張レジスタを追加して、全体で32ビットで構成されるようなレジスタ構成は、ソフトウェア上並びにハードウェア上でのデータ保持手段の使い勝手を良好にし、ひいては、CPUのようなデータ処理装置の論理的並びに物理的な規模の縮小を達成する。また、データ保持手段の全体又は一部分を使用したアドレスデータの保持という点に関しては、リニアに利用可能なアドレス空間の拡張を容易化し、また、ページレジスタによるアドレス空間拡張技術に比べてプログラムの作成並びにコンパイルを容易化する。
【0019】
【実施例】
図1には本発明に係るデータ処理装置の第一実施例であるシングルチップマイクロコンピュータが示される。同図に示されるシングルチップマイクロコンピュータ100は、全体の制御を司るCPU(中央処理装置)1、CPU1の動作プログラムなどを保有するROM(リードオンリメモリ)2、CPU1の作業領域並びにデータの一時記憶領域などとして利用されるRAM(ランダムアクセスメモリ)3、タイマ4、シリアルコミュニケーションインタフェース(SCI)5、クロックパルスジェネレータ68、及び、入出力ポート(IOP)61乃至67などの機能ブロックから構成され、これらは内部バス69で相互に接続されてなる。内部バス69は特に制限はされないものの、アドレスバス、データバス、コントロールバスを含む。斯るシングルチップマイクロコンピュータ100は公知の半導体集積回路製造技術によってシリコン基板のような1つの半導体基板上に形成されている。
【0020】
シングルチップマイクロコンピュータ100はクロックパルスジェネレータCPGの端子XTAL,EXTALに接続される水晶発振子又は外部から入力される外部クロックに基づいて生成される基準クロックに同期して動作を行なう。この基準クロックの最小単位をステートと呼ぶ。尚、図においてVss,Vccは電源端子である。MODE1乃至MODE3はCPU1に対するモード信号である。
【0021】
前記CPU1にリセット信号RESが加えられると、シングルチップマイクロコンピュータ100はリセット状態になる。このリセット状態を解除すると、CPU1は、スタートアドレスをリードして、このスタートアドレスから命令のリードを開始するリセット例外処理を行なう。前記スタートアドレスは、特に制限はされないものの0番地に格納されているものとする。この後、CPU1は、特に制限はされないものの、逐次、ROM2から命令を読出して解読し、その解読結果に基づいてデータの処理或いはRAM3、タイマ4、SCI5、入出力ポート61乃至67などとデータの転送を行なう。すなわち、CPU1は、入出力ポート61乃至67などから入力されるデータ、あるいはSCI5などから入力される指示を参照しつつ、ROM2に記憶されている命令に基づいて処理を行ない、その結果に従って入出力ポート61〜7、タイマ4などを使用して外部に信号を出力し、各種機器の制御を行なうものである。特に制限はされないものの、上記ROM2、RAM3、タイマ4などのリード/ライトは、バイト(例えば8ビット)/ワード(例えば16ビット)のいずれも2ステートで実行するものとする。
【0022】
かかるCPU1の命令の最小単位は2バイトとされ、また、命令または16ビットデータをメモリに配置する場合には、偶数から始まる連続した2バイトの領域に配置するものとされている。
【0023】
図2には前記CPU1の下位CPUに相当するCPUのレジスタ構成例が示される。本実施例において下位CPUとは、本実施例に係るCPU1の開発以前に提供されていたCPUである。換言すれば、本実施例に係るCPU1は下位CPUに対するバージョンアップ版として位置付けることもできる。
【0024】
同図に示される下位CPUは、それぞれ16ビット長の8本の汎用レジスタR0L,R0H〜R7L,R7Hと、16ビット長のプログラムカウンタPCと、8ビット長のコンディションコードレジスタCCRとを有している。汎用レジスタR0L,R0H〜R7L,R7Hは、特に制限はされないものの、上位8ビットと下位8ビットを独立させて8ビット長のデータを格納することも、上位・下位を連結して16ビット長のデータを格納することもできる。コンディションコードレジスタCCRは割込みマスクビット(I)、キャリフラグ(C)、ゼロフラグ(Z)、ネガティブフラグ(N)、及びオーバフローフラグ(V)を含んでいる。割込みマスクビットIは1のとき、CPU1を割込み禁止状態とし、0のとき割込み許可状態とする。その他のフラグは演算の結果などを反映する。
【0025】
図3には図2のレジスタ構成で利用されるデータが示される。
【0026】
下位CPUが扱うバイトデータは、前記同様に、汎用レジスタの上位RiHまたは下位RiLに格納される(i=0〜7)。ワードデータは汎用レジスタRiに格納される。ビット15がデータの最上位ビットに、ビット0が最下位ビットにそれぞれ対応する。アドレス情報(アドレスデータとも記す)はワードデータとして汎用レジスタRiに格納される。ビット15がデータの最上位ビットに、ビット0が最下位ビットにそれぞれ対応する。16ビットレジスタ8本、8ビットレジスタ16本を利用可能である。データのサイズがバイトであるかワードであるかは命令のオペレーションコードに含まれる1ビットのサイズビットによって決定される。
【0027】
図4には本発明の一実施例に係る上位CPUとしてのCPU1のレジスタ構成例が示される。
【0028】
CPU1はそれぞれ16ビット長の8本の汎用レジスタR0L,R0H〜R7L,R7Hと、それぞれ16ビット長の8本の拡張レジスタE0〜E7と、24ビット長のプログラムカウンタPCと、8ビット長のコンディションコードレジスタCCRとを有している。汎用レジスタR0L,R0H〜R7L,R7Hは、特に制限はされないものの、上位8ビットと下位8ビットを独立させて8ビット長のデータを格納することも、上位・下位を連結して16ビット長のデータを格納することもできる。拡張レジスタEiは、8ビットに分割してそれぞれ独立的に使用することはできない。
【0029】
汎用レジスタRiL,RiHをアドレスレジスタとして使用する場合は、汎用レジスタRiH,RiLが保有する16ビットをアドレスの下位16ビットとし、対応する拡張レジスタEiの内容をアドレスの上位16ビットとして合計32ビット、または拡張レジスタEiの上位8ビットを無視して24ビットのアドレスを生成するものである。CPU1は24ビット又は32ビットのアドレスで規定される連続的なアドレス空間を利用することができる。さらにこの32ビットまたは24ビットのアドレスを種々修飾することができる。この修飾を行なう場合、下位16ビットの計算にて、キャリまたはボローが発生した場合には、上位側の拡張レジスタEiに対して桁上げまたは桁下げが行われる。尚、以下の説明では、アドレスデータは24ビットとする。これに応じて図4におけるプログラムカウンタPCのビット長は24ビットとされている。プログラムカウンタPCのビット長を32ビットにしておいてもよい。
【0030】
拡張レジスタE0〜E7はデータレジスタとしては16ビットレジスタとして汎用レジスタ同様に使用できる。すなわち、拡張レジスタ同士、及び拡張レジスタと汎用レジスタとの間で、データの演算を行なうことができるようになっている。尚、コンディションコードレジスタCCRは前記同様であるのでその詳細な説明は省略する。プログラムカウンタPCはビット長以外は前記同様である。
【0031】
図5には汎用レジスタR0L,R0H〜R7L,R7Hと拡張レジスタE0〜E7のデータ構成例が示される。CPU1が扱うバイトデータは、汎用レジスタの上位RiH(i=0,1,…,7)または下位RiLに格納される。ワードデータは汎用レジスタRi(RiH,RiL)または拡張レジスタEiに格納される。このときビット15がデータの最上位ビットに、ビット0が最下位ビットにそれぞれ対応する。32ビットのロングワードデータは汎用レジスタRi及び拡張レジスタEiに格納される。24ビットのアドレスデータはロングワードデータとして拡張レジスタEiと汎用レジスタRiに格納される。このとき拡張レジスタEiの上位8ビットは予約領域とされる。尚、予約された8ビットと24ビットのアドレスデータを併せて単にロングワードアドレスデータとも称する。
【0032】
かかるレジスタ構成によれば、8ビットレジスタ16本、16ビットレジスタ16本、24ビットレジスタが8本使用できる。これは、前記下位CPUと上位互換性があり、下位CPUが有するレジスタを使用して作成されたソフトウェアを、少なくともソースプログラムレベルを以って上記CPU1で利用可能であることを意味する。CPU1が下位CPUに対して上位互換を実現するにはレジスタの指定のしかたについても共通性を要する。これについては後で詳述するが、アドレスレジスタとしては、レジスタ番号のみを考慮すればよく、8ビット演算及び16ビット演算の何れについても、命令のレジスタ指定フィールド中でのレジスタの指定は4ビットで可能になっており、下位CPUと命令フォーマットを共通化することができる。また、16本のレジスタの指定に4ビットを使用するので、無駄が生ぜず、この点において斯るレジスタ構成は、CPU1の内部構成を単純化し、論理的・物理的規模の縮小し、製造費用の削減・動作速度の向上の実現を図る目的を損なうことがない。
【0033】
図6乃至図8にはCPU1のアドレッシングモードと実効アドレスの計算手法の一例が示される。
【0034】
図6の(1)に示されるレジスタ間接では命令コード中にレジスタを指定する部分を含み、この命令コードで指定されたレジスタとこれに対応する拡張レジスタの内容の合計24ビットをアドレスとしてメモリ上のアドレスを指定する。アドレスは24ビットでよいため、上位8ビットは無視する。
【0035】
図6の(2),(3)に示されるディスプレースメント付レジスタ間接は、上記レジスタ間接と同様に得られた24ビットのアドレスに、命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はアドレスの指定のみに使用され、拡張レジスタEi及び汎用レジスタRiの内容には反映されない。特に制限はされないものの、ディスプレースメントは24ビットまたは16ビットであり、16ビットディスプレースメントは加算する場合には上位16ビットは符号拡張される。すなわち、ディスプレースメントの上位16ビットは16ビットディスプレースメントのビット15と同じ値であるとして加算が行われる。この場合、24ビットディスプレースメントの上位8ビットは、命令が2バイト単位であること並びに将来の拡張にそなえて、予約領域を併せて、32ビットのディスプレースメント指定部を命令コードに含ませている。
【0036】
図7の(4)に示されるポストインクリメントレジスタ間接は、前記レジスタ間接と同様に得られた24ビットのアドレスでメモリ上のアドレスを指定する。その後、このアドレスに1または2または4を加算し、その加算結果が拡張レジスタ・汎用レジスタに格納される。メモリ上のバイトデータを指定する場合1が、ワードデータを指定する場合2が、アドレスデータを指定する場合4が、それぞれ加算される。加算結果の上位8ビットも拡張レジスタに格納される。
【0037】
図7の(5)に示されるプリデクリメントレジスタ間接は、前記レジスタ間接と同様に得られた24ビットのアドレスから1または2または4を減算した結果の24ビットのアドレスでメモリ上のアドレスを指定する。その後、その減算結果が拡張レジスタ・汎用レジスタに格納される。メモリ上のバイトデータを指定する場合1が、ワードデータを指定する場合2が、アドレスデータを指定する場合4が、それぞれ減算される。前記同様に、アドレスが24ビットでよい場合には、特に制限はされないものの、減算結果の上位8ビットも拡張レジスタに格納される。
【0038】
図7の(6)に示されるプログラムカウンタ相対は、プログラムカウンタの内容の24ビットのアドレスに命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はプログラムカウンタに格納される。特に制限はされないものの、ディスプレースメントは16ビットまたは8ビットであり、これらのディスプレースメントは加算する場合には上位8ビットまたは16ビットは符合拡張される。すなわち、ディスプレースメントの上位8ビットは16ビットディスプレースメントのビット15と、または上位16ビットは8ビットディスプレースメントのビット7と同じ値であるとみなして加算が行われる。プログラムカウンタ相対は分岐命令のみで使用される。
【0039】
図8に示される絶対アドレスは命令コード中に含まれる、8ビット、16ビットまたは24ビットの絶対アドレスをアドレスとしてメモリ上のアドレスを指定する。8ビット絶対アドレスは、上位16ビットが1拡張される。すなわちアドレスのビット23〜8は全ビット1とされる。従って使用可能なアドレスはH’FFFF00〜H’FFFFFFの256バイトである。また、16ビット絶対アドレスは、上位8ビットが符号拡張される。すなわち、16ビット絶対アドレスのビット15が0であればアドレスのビット23〜16は全ビット0とされ、ビット15が1であればアドレスのビット23〜16は全ビット1とされる。従って使用可能なアドレスはH’000000〜H’007FFF及びH’FF8000〜H’FFFFFFの64kバイトである。
【0040】
CPU1は、上記の他にイミディエイト、レジスタ直接などのアドレッシングモードを実行するが、これらは本発明に直接は関係しないので詳細な説明は省略する。
【0041】
下位CPUはアドレス空間が64kバイトであるため、24ビットディスプレースメント付レジスタ間接、24ビットの絶対アドレスは存在しない。また、プリデクリメントレジスタ間接などのロングワードサイズも存在しない。図6乃至図8に示されるその他のアドレッシングモードはアドレス情報の上位8ビットを無視すれば、下位CPUがサポートするアドレシングモード並びに実効アドレス計算と同一視できる。したがって、CPU1は、アドレシングモード及びアドレス計算という点においても下位CPUと従来CPUと機能互換である。
【0042】
図9乃至図16には主要なアドレッシングモードの命令の命令フォーマットを示す。
【0043】
それぞれの命令のフォーマットは、各命令の機能及びアドレッシングモードを示すためのオペレーションコード部opを有し、そのオペレーションコード部opのオペレーションコードに応じて、使用するレジスタを指定するためのレジスタ指定部(rs,rd,ers,erd)、絶対アドレス(aa)、ディスプレースメント(d)、又はイミディエイト(xx)を含んでいる。命令フォーマットは2バイト単位とされ、レジスタ指定部は、命令コードの第一ワードのビット7〜ビット4、ビット3〜ビット0、又は特殊形としてビット11〜ビット8に含まれる。前記レジスタ指定部rsはバイト又はワードサイズのソースレジスタを指定し、前記レジスタ指定部rdはバイト又はワードサイズのディスティネーションレジスタを指定する。指定すべきレジスタがバイトサイズであかワードサイズであるかはオペレーションコード部のオペレーションコードによって決定される。すなわち、16ビットの演算を伴うオペレーションコードに付随する場合、レジスタ指定部rs,rdの下位側3ビットは、8本のレジスタR0〜R7の何れであるかを指定し、指定されたレジスタのうち拡張レジスタを利用するのか汎用レジスタを利用するのかは、当該レジスタ指定部の残りの上位側1ビットによって指定される。8ビットの演算を伴うオペレーションコードに付随する場合、レジスタ指定部rs,rdの下位側3ビットは、8本のレジスタR0〜R7の何れであるかを指定し、指定されたレジスタのうち汎用レジスタの上位側を利用するのか下位側を利用するのかは、当該レジスタ指定部の残りの上位側1ビットによって決定される。レジスタ指定部ersは、ロングワードサイズのソースレジスタを指定し、前記レジスタ指定部erdはロングワードサイズのディスティネーションレジスタを指定する。4ビット確保されているレジスタ指定部ers,erdの最上位1ビットは命令デコードに際して実質的に無視される。この場合に実質的に有意の3ビットで指定するレジスタが32ビットであることは、ロングワードデータを利用するそれ専用のオペレーションコードを新たに追加できる場合には、そのオペレーションコードによって明らかにされる。その様な新たにオペレーションコードを追加できない場合、若しくは追加することが得策ではないと判断した場合には、後述するプリフィックスコードを利用する。ここで、前記ロングワードデータを利用するそれ専用のオペレーションコードのビット数は、下位CPUのオペレーションコードのビット数と同じである。
【0044】
命令フォーマット中における絶対アドレスaa,ディスプレースメントd,イミディエイトxxは、最下位ビットが偶数番めのビット0となるように命令コードに含まれる。すなわち16ビット以上の絶対アドレスaa,ディスプレースメントd,イミディエイトxxは、2バイトを単位として含まれる。このため、24ビットの絶対アドレスaa,ディスプレースメントdは、その先頭(上位ビット側)1バイトの領域中に所定ビット数の予約部を含んで4バイトとされる。8ビットの絶対アドレスaa,ディスプレースメントd,イミディエイトxxは第一ワードのビット7〜0に含まれる。
【0045】
上記命令フォーマットによれば、命令フォーマット中においてレジスタを指定する部分が命令の第一ワードの一部分に固定されているから、命令のデコード論理構成が簡単になる。更に、レジスタ指定領域の下位側3ビットによって8本のレジスタの何れを指定するかを決定し、指定された1本のレジスタの内の何れの領域を使用するかを上位側1ビットで決定すると共に、当該1ビットで決定される領域のサイズは、命令中で指定されるデータサイズによって、換言すれば、オペレーションコード部のオペレーションコードによって、決定されるから、レジスタに格納されるデータ並びにアドレスデータが、バイト、ワード、ロングワードの数種類に亘るときにも、レジスタ指定部のビット数を最小限に抑えることができる。
【0046】
下位CPUは、前記同様、24ビットディスプレースメント付レジスタ間接、24ビットの絶対アドレスの2つのアドレッシングモードおよびロングワードサイズの命令が存在しない。その他の命令は下位CPUとCPU1で共通であり、CPU1は下位CPUと命令フォーマットを共通化している。
【0047】
図17には命令フォーマット中におけるレジスタ指定部のデータとそれによって指定されるレジスタとの対応例が示される。
【0048】
レジスタ指定部はビット0〜2でレジスタの番号(0〜7)を指定し、ビット3は、バイトサイズのとき汎用レジスタRiの上位側か下位側か(RiH/RiL)を、ワードサイズのときには汎用レジスタRiか拡張レジスタEiかを指定する。なお、ロングワードサイズデータとアドレスレジスタとしての利用においては前述のようにビット3は無視され実質的に存在しない。
【0049】
図18にはCPU1の内部ブロック図が示される。CPU1は、主としてマイクロROMあるいはPLA(Plogrammable Logic Array)で構成される制御部CONT、前記汎用レジスタR0L,R0H〜R7L,R7H、拡張レジスタE0〜E7、プログラムカウンタPC(PCL,PCH,PCE)、コンディションコードレジスタCCRなどを含む実行部EXE、及びレジスタ選択部REGSELから構成される。制御部CONTは命令をフェッチし、これを解読して、命令の実行に必要な各種制御信号を生成したり、命令の実行手順を制御する。レジスタ選択部REGSELは、前記命令の解読結果にしたがってレジスタの選択信号を生成したりする。
【0050】
実行部EXEはさらに、テンポラリレジスタTRL,TRH,TRE、算術論理演算器ALUL,ALUH,ALUE、リードデータバッファRDBL,RDBH,RDBE、ライトデータバッファWDBL,WDBH,WDBE、及びアドレスバッファABL,ABH,ABEを含み、これらが3本の内部バスA(L,H,E)、B(L,H,E)、C(L,H,E)、及びセレクタ回路部SELを介して接続されている。リードデータバッファRDBL,RDBH,RDBEは、外部のデータバスD7〜D0,D15〜D8に接続される。ライトデータバッファWDBL,WDBH,WDBEは、ライトデータ出力バッファWDBOL,WDBOHを介して前記データバスD7〜D0,D15〜D8に接続される。算術論理演算器ALUL,ALUH,ALUEは、命令によって指定される各種演算、プログラムカウンタPCの加算、実効アドレスの計算などに用いられる。リードデータバッファRDBL,RDBH,RDBEは、ROM2、RAM3あるいは図示はされない外部メモリなどからリードした命令やデータを一時的に格納し、またライトデータバッファWDBL,WDBH,WDBEは前記ROM2、RAM3あるいは外部メモリなどにライトすべきデータを一時的に格納する。これによってCPU1の内部動作とCPU1外部のリード/ライト動作のタイミングを調整している。アドレスバッファABL,ABH,ABEはCPU1がリード/ライトするアドレスを一時的に格納する。
【0051】
特に制限はされないものの、基本的に上記実行部EXE内の各回路ブロックは8ビットの2ブロック及び16ビットの1ブロックから構成されている。汎用レジスタは8ビットの2ブロックで構成され、R0H〜R7Hがビット15〜ビット8、R0L〜R7Lがビット7〜ビット0に対応する。汎用レジスタの更に上位側のビット、すなわちビット31〜ビット16は16ビットの1ブロックの拡張レジスタE0〜E7が対応する。内部バスは、これらのビット31〜ビット16、ビット15〜ビット8、ビット7〜ビット0に対応して夫々A,B,Cが並行して設けられている。その他前記テンポラリレジスタTR,ALU,リードデータバッファ,ライトデータバッファなども同様である。これらの物理的な配置は特に制限はされない。
【0052】
このような汎用レジスタRi,拡張レジスタEiを設け、下位CPUとの互換性を維持しつつ、16Mバイトのアドレス空間を使用可能とした場合、下位CPUとも、主要な演算はレジスタ間で行い、メモリとレジスタの演算は直接行わない(すなわち1命令では行わない)命令体系とするのが得策である。
【0053】
第1に、下位CPUが、メモリとレジスタ間での直接的な演算をサポートして、命令体系を最適化してある場合には、上位CPUのために新たな命令を追加することが困難である。すなわち、メモリとレジスタの演算についてはメモリのアドレッシングモードと演算の種類との組合せで決定されるオペレーションコードの種類が飛躍的に多くなってしまい、新規のオペレーションコードを追加することが困難である。または、新規のオペレーションコードは必然的に最適化できず、命令長が長くなって、プログラムサイズを大きくし、ひいてはプログラムの実行効率も悪化してしまう。
【0054】
第2に、16Mバイトのアドレス空間を有効に利用するには、前記のような複雑なアドレッシングモードが必要である。演算命令の多くにこのような複雑なアドレッシングモードを実行可能とすると、制御部CONTの構成が複雑になり、論理的並びに物理的規模を最小限とする目的に反してしまうためである。メモリのアクセスには、前述の種々のアドレッシングモードを有する転送命令でレジスタとのデータの転送を行い、レジスタ上で演算などのデータ処理を行うものとすればよい。汎用レジスタRiは8ビット長で最大16本分として使用でき、また、汎用レジスタRi及び拡張レジスタEiは16ビット長で最大16本分として使用でき、ある処理に必要なデータはレジスタ上に置くことができる。或は、少なくとも、使用頻度の高いデータの大部分はレジスタ上に置くことができる。したがって、処理プログラムの増加や実行速度の低下といった不都合が発生する場合は少ないと考えられる。
【0055】
メモリに対する演算を行う必要がある命令としては、ビット操作命令がある。これらは、バイト単位で割り当てられたアドレスの第nビットとして指定されるものの、バイト単位で扱われるデータではなく、それぞれのビットが独立した機能を有している。たとえば、タイマの動作を制御するレジスタのような場合、第0ビット・第1ビットでタイマのクロックを選択し、第2ビットではタイマカウンタと比較レジスタの内容が一致した時、タイマカウンタをクリアするかしないかを指定し、第3ビットでは前記一致した時、割込みを発生するかしないかを指定するものである。これらは1ビット単位で1にセットしたり、0にクリアしたりする必要がある。あるいは入力ポートの所定の1ビットが0であるか1であるかによってCPU1の処理プログラムが異なる場合、前記1ビットのデータを判定する必要がある。かかる1ビットデータはメモリに対して直接演算しなければならない。バイト単位で一旦レジスタに転送した後にビット操作を行うと、前記転送とビット操作の間に割込みが入ってしまい、例えば前記入力ポートの値が変化してしまうような不都合が発生するためである。しかしながらこのようなビット操作命令の対象となるアドレスは固定的で、複雑なアドレッシングモードは必要ではない。絶対アドレスと、最低限レジスタ間接を実行できればよい。しかも絶対アドレスの場合も全アドレス空間を使用できる必要はなく、前記タイマ・入出力ポートなどの存在するアドレス範囲にのみ使用できれば十分と考えられる。このようなアドレス範囲の指定に使用できる絶対アドレスは8ビットで十分である。16ビットとすれば使用可能なアドレス範囲が広がるが、命令長が長くなり制御が複雑になってしまう。少なくとも24ビットとして16Mバイトの全空間を使用可能としなければならない場合は非常に稀であると考えられる。そこで、本実施例におけるCPU1は、汎用レジスタのような内部のレジスタと周辺回路の制御用レジスタのような外部レジスタとの間での直接的な演算のためのビット操作命令についてはサポートするが、これによって、1ビット又は数ビットのビット操作命令を直接外部周辺回路との間で行っても、これによって制御部の規模や命令の種類が極端に増大する虞はない。
【0056】
図19には命令の機能とアドレシッシングモードの組合せとの関係の一例が示される。
【0057】
同図において#はイミディエイト、Rはレジスタ直接、@Rはレジスタ間接、@(d16,R)及び@(d24,R)はディスプレースメント付きレジスタ間接、@−Rはプリデクリメントレジスタ間接、@R+はポストインクリメントレジスタ間接、@a8,@a16,@a24は絶対アドレス、@(d8,PC),@(d16,PC)はプログラムカウンタ相対、の各アドレシングモードを意味する。また同図においてBはバイト、Wはワード、Lはロングワードを意味する。プログラムカウンタ相対は分岐命令専用である。そのほかのアドレシッシングモードは転送命令で使用可能である。演算命令はイミディエイトとレジスタ直接を使用可能である。但し単項演算はレジスタ直接のみである。
【0058】
図19において、下位CPUでサポートするものは〇印を付してある。インクリメント・デクリメントのロングワードは、下位CPUではアドレスレジスタがワードサイズであるため、ワードサイズの演算になる。
【0059】
算術演算命令は前記のとおりバイト,ワード,ロングワードを使用可能であるが、キャリ付き加減算はバイトサイズのみ使用可能である。インクリメント,デクリメントはレジスタをカウンタとする場合のために、±1はバイト,ワード,ロングワードを使用可能とするが、±2,±4はアドレス計算用であるため、ロングワードのみを使用可能としている。論理演算命令,シフト命令,ローテート命令は特に制限はされないもののバイト,ワード,ロングワードを使用可能である。これは、16Mバイトのアドレス空間を使用する応用の一つとして、プリンタの文字データを扱う場合に、文字データの白黒反転や斜体等の加工にこれら命令が多用されると考えられるためである。逆に、64kバイトのアドレス空間のサポートする下位CPUでは、論理演算命令,シフト命令,ローテート命令は特に制限はされないもののバイトのみを使用可能である。
【0060】
前記の通り、主要な演算はレジスタ間で行い、メモリとレジスタ間での直接的な演算は行わない命令体系としても、新規のオペレーションコードの追加が困難な場合には、例えば、ロングワードサイズの転送命令,演算命令を、ワードサイズの相当命令に1ワードのプリフィックスコードを追加したものとすれば、特に、制御部の論理的・物理的規模を最低限とすることができる。
【0061】
図20及び21にはプリフィックスコードを利用した一例命令フォーマットが示される。
【0062】
前記の通り、ディスプレースメント付レジスタ間接のワードサイズの命令フォーマットの前に、1ワードのプリフィックスコードを設けて、ロングワードサイズを表現している。プリフィックスコードは、下位CPUの命令コードと重複しないことが必要であるから、これを未定義命令のコードに相当するコードとするのが最適である。その外に、オペランド指定フィールドの情報を実質的に必要としないノン・オペレーション(NOP)命令のような命令のオペランド指定フィールドを所定のコードで満たしたものを、可能ならプリフィックスコードとして利用することができる。
【0063】
図22にはかかるマイクロコンピュータのアドレスマップが示される。
【0064】
内蔵ROMはアドレスH’00000から配置され、内蔵周辺機能と内蔵RAMはH’FF800以降に配置されており、これらの間は外部空間とされる。内蔵周辺機能と内蔵RAMをアドレス空間の中途、例えば、H’0F800からH’0FFFFなどに配置することができるが、この場合には外部空間が2ヵ所に分離され、また、内蔵ROMに書き込んだプログラムと外部空間に存在するプログラムを連続的に使用できず、本発明の目的に反する。従って主としてプログラム領域とされるべき内蔵ROMと、主としてデータ領域とされるべき内蔵周辺機能・内蔵RAMは互いにアドレス空間の反対に配置し、この間は連続した空間とすべきである。特に内蔵ROMはスタートアドレスまたはスタートアドレスを格納したアドレスを含む必要がある。
【0065】
なお、16ビット絶対アドレスは上位8ビットを符号拡張して、実効アドレスを生成するため、指定範囲はH’000000〜H’007FFFおよびH’FF8000〜H’FFFFFFであって、内蔵ROMの32kバイトおよび内蔵RAMと内蔵周辺機能を指定できる。32kバイトより大きい内蔵ROMの部分を除き、下位CPU同様に16ビット絶対アドレスで内蔵機能ブロックを指定できる。従って、下位CPUからのソフトウェアの移植を容易に行うことができる。また、16ビットディスプレースメントレジスタ間接の場合、ディスプレースメントを基準アドレス、レジスタの内容を相対値と解釈したときの基準アドレスの指定範囲と一致する。
【0066】
以上の実施例においては、アドレス空間を16Mバイトとしたが、また、本発明において拡張された機能は必要であるが、アドレス空間は従来同様に64kバイトで十分な応用も考えられる。
【0067】
例えば、外部空間を使用せず、シングルチップマイクロコンピュータの全ての端子を入出力ポートとして使用し、応用システムの実装面積を縮小したい場合などは、内蔵領域の合計が64kバイト以下であれば、アドレス空間は従来同様に64kバイトで問題ない。
【0068】
かかる応用においては、ベクタのリードあるいはプログラムカウンタのスタックは16ビットすなわち2バイト単位で行なえば良く、4バイト分のアクセスを行なうことは無駄であり、実行時間の低下・メモリの利用効率低下となる。
【0069】
特に制限はされないものの、64kバイトのアドレス空間で動作するモードをミニマムモード、前記の通り、64kバイト以上のアドレス空間で動作するモードをマキシマムモードとする。なお、これらミニマムモード・マキシマムモードは図1にMODE1〜MODE3端子によって適宜指定される。
【0070】
図23にはミニマムモード、マキシマムモードでのCPUの動作の相異が示される。
【0071】
前記のとおり、マキシマムモードでは、アドレスの最大本数は24ビットであり、ベクタ・例外処理時のスタック・サブルーチンコール時のスタックはいずれもアドレス24ビットを含み4バイト単位である。
【0072】
ミニマムモードでは、アドレスの最大本数は16ビットであり、ベクタ・サブルーチンコール時のスタックはいずれもアドレス16ビット分の2バイトに縮小される。また、特に制限はされないものの、CPU1がアドレッシングモードとして、いわゆるポストインクリメントレジスタ間接・プリデクリメントレジスタ間接を有するものとし、アドレスレジスタの更新は下位16ビットとする。すなわち、拡張アドレスの更新は行なわない。ミニマムモードは、マキシマムモードに対して、高速化とメモリ利用効率の向上を実現できる。
【0073】
図24にはミニマムモード、マキシマムモードでのメモリ上のデータ形式が示される。
【0074】
マキシマムモードでは、ベクタは4バイト単位で4の倍数番地を先頭にして配置される。先頭1バイトは予約領域で、残りの3バイトがスタートアドレスとして使用される。スタックは、例外処理時・サブルーチンコール時とも、4バイト単位で偶数番地を先頭にして配置される。
【0075】
ミニマムモードでは、ベクタは2バイト単位で偶数番地を先頭にして配置される。これらがスタートアドレス(下位16ビット。上位8ビットは0とみなされる。)として使用される。スタックは、例外処理時は、4バイト単位で偶数番地を先頭にしてCCR・予約領域とPC下位16ビットが格納される。サブルーチンコール時は、2バイト単位で偶数番地を先頭にしてPC下位16ビットが格納される。
【0076】
係るミニマムモードとマキシマムモードを用意しておけば、ミニマムモードで動作するCPU1は、オブジェクトプログラムレベルで上位互換を実現することができる。
【0077】
かかるシングルチップマイクロコンピュータをテストすることを考えると、ミニマムモードおよびマキシマムモードの何れにおいても、ベクタ領域を外部メモリとすることが可能であることが望ましい。マキシマムモードは広いアドレスを有効に利用するため、ROM無効拡張モードを設定すると考えられ、かかるROM無効拡張モードではベクタ領域が外部メモリとなるので問題はない。しかしながら、ミニマムモードをシングルチップモードのみとした場合には、最低限テスト用にベクタ領域を外部メモリとする必要がある。テスト時には、内蔵ROMの内容は、使用者のプログラムが格納されており、製造者は利用できない。このため、ミニマムモード/マキシマムモードのベクタ構造の切り替え機能がテストできなくなってしまうためである。
【0078】
これに対しては、例えばテストモード時にのみリード/ライト可能なレジスタを設け、かかるビットの設定によって、ミニマムモードでかつROM無効拡張モードが設定できるようにすればよい。最低限、ROM上のベクタ領域をリードしたときにデータを外部から入力できるようにすればよい。
【0079】
上記実施例によれば以下の効果を得るものである。すなわち、
(1)8ビットCPUの16ビット汎用レジスタに16ビットの拡張レジスタを追加したような形態を以って、全体で32ビットのレジスタ(Ri+Ei)を一括して又はその一部分をアドレスレジスタとして使用するとともに、データレジスタとしては、32ビット全体を1単位として、2分割して2個の16ビットデータレジスタ(Ei,Ri)として、さらに16ビットデータレジスタの一方を2分割して2個の8ビットレジスタ(RiH,RiL)として使用可能にする。そして、8ビットレジスタとして利用するか16ビットレジスタとして利用するかは、オペレーションコードに含まれる、データ情報のサイズビットによって決定する。データ情報のサイズが8ビット(バイト)のとき、8ビットレジスタの上位(RiH)・下位(RiL)は、命令に含まれるレジスタ指定フィールドの所定1ビットによって指定する。データ情報のサイズが16ビット(ワード)のとき、当該所定1ビットは、16ビットレジスタの上位(Ei)・下位(Ri)を指定することになる。そして、32ビットレジスタ(Ri+Ei)としての利用は、オペレーションコードを含む命令の前置きコード(プリフィックスコード)によって指定する。或は、下位CPUのオペレーションコードと同一ビット数の新たなオペレーションコードを追加して指定する。このようにレジスタの指定方式をも含めてCPU1のレジスタ構成は下位CPUのレジスタ構成を包含する。これを基に、16ビット汎用レジスタを備える下位CPUがサポートする命令実行機能をCPU1が包含する。これにより、下位CPUのために開発されたプログラムは、少なくとも、ソースプログラムのレベル上位CPU1に利用可能になる。すなわち、少なくとも、ソースプログラムレベルで上位互換を実現することができる。
(2)有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタEi,Ri,RiH,RiLの利用形態に応じて切り替える動作モードとして、マクシマムモードとミニマムモードを用意しておくことにより、ミニマムモードで動作するCPI1は、オブジェクトプログラムレベルでの上位互換を実現することができる。
(3)ロングワードデータを利用する命令にプリフィックスコードを採用することにより、主要な演算はレジスタ間で行い、メモリとレジスタ間での直接的な演算は行わない命令体系としても、新規のオペレーションコードの追加が困難な場合に対処できると共に、制御部の論理的・物理的規模の増大を著しく抑えることができる。
(4)プリフィックスコードとして、未定義命令のコードに相当するコードを採用することにより、他のオペレーションコードとの重複を完全に阻止できる。
(5)全体で32ビットのレジスタRi、Eiを一括して或は一部をアドレスレジスタとして使用するとともに、2分割して16ビットデータレジスタとし、さらに16ビットデータレジスタの一方を8ビットレジスタとして使用可能とすることによって、データ処理を効率良く行ないつつ、16Mバイトの広いアドレス空間を使用することができる。
(6)命令長を2バイト単位として、24ビット絶対アドレス・ディスプレースメントを予約領域を含めて4バイトとすることにより、将来4Gバイトのアドレス空間を使用することができる。
(7)8ビットレジスタとして利用可能なレジスタの数と、16ビットレジスタとして利用可能なレジスタの数を同数とすることにより、命令長を短縮してプログラム効率を向上することができる。
(8)命令コード中のレジスタ指定部をレジスタ全体を指定する3ビット及びレジスタの部分を指定する1ビットで構成することにより、レジスタ選択回路の論理的・物理的規模を縮小できる。
(9)命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットとすることにより、実行部及び制御部の構成を単純化し、論理的並びに物理的規模を縮小できる。
(10)シングルチップマイクロコンピュータ100の論理的並びに物理的規模を最小限として、64kバイト以上のアドレス空間を使用できる。
【0080】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0081】
例えば、CPU1のブロック構成,レジスタ構成,具体的な論理回路例などについては何ら限定されない。レジスタのビット数あるいはレジスタの本数などは任意に選択することもできる。アドレッシングモードと実効アドレスの計算方法についても種々変更可能である。
【0082】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野シングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他のデータ処理装置に適用可能であり、データの処理性能よりもデータの規模が重要である場合などに適用することができる。
【0083】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0084】
(1)レジスタ指定方式も含めて下位CPUのような別のデータ処理装置のレジスタ構成、並びに下位CPUの命令実行機能を包含することにより、下位CPUのために開発されたプログラムは、少なくとも、ソースプログラムのレベルで本発明に係るデータ処理装置に利用可能になり、少なくとも、ソースプログラムレベルでの上位互換を実現することができる。
(2)有効なアドレスのビット数と、ベクタ及びスタックの単位サイズとを、前記レジスタの利用形態に応じて切り替える動作モードを予め用意しておくことにより、オブジェクトプログラムレベルでの上位互換も簡単に実現できるようになる。
(3)8ビットCPUの16ビット汎用レジスタに16ビットの拡張レジスタを追加して、全体で32ビットで構成されるようなデータ保持手段は、データの保持には全部、又は2分割して、或は2分割した一方を更に2分割して使用可能であり、これによって、ソフトウェア上並びにハードウェア上でのデータ保持手段の使い勝手が良好になり、ひいては、データ処理装置の論理的並びに物理的な規模の縮小を達成することができる。また、データ保持手段の全体又は一部分を使用したアドレスデータの保持という点に関しては、リニアに利用可能なアドレス空間の拡張が容易になり、また、ページレジスタによるアドレス空間拡張技術に比べてプログラムの作成並びにコンパイルを容易化することができる。したがって、高級言語により作成されたプログラムを効率よく実行できる。
(4)nビットデータの演算命令と2nビットデータの演算命令とを考慮したとき、全体を2等分割して使用される部分と、2等分割された一方を更に2等分割して使用される部分とを有するように個々のデータ保持手段を構成すると共に、2等分割で利用される部分の全体の数が、更に2等分割で利用される部分の全体の数と等しくなるように、複数単位の前記データ保持手段を設けることにより、命令長を短縮してプログラム効率を向上させることができる。
(5)命令の単位を、データの単位の2倍長にすることにより、将来におけるアドレス空間の拡張に容易に対応できる。さらに、命令コード中の実効アドレス指定部の最下位ビットを命令コード中のワードの最下位ビットにすることにより、実行手段及び制御手段の構成を単純化し、論理的並びに物理的な規模の縮小に寄与する。
(6)データ保持手段を指定する部分が命令の単位中の一部分に固定された命令フォーマットを採用することにより、レジスタのような前記データ保持手段のための選択回路若しくは命令デコード回路の論理的並びに物理的な規模を縮小することができる。更にその場合に、前記指定する部分を、複数単位の中から所要のデータ保持手段を指定する領域と、一つのデータ保持手段内の何れの部分かを指定する領域とで構成し、更に、命令中で指定されるデータサイズに基づいて、前記データ保持手段内の何れの部分かを指定する領域が、2等分割された何れの部分を指定するのか、更に2等分割された何れの部分を指定するのかを決定するようにすることにより、データ保持手段に格納されるデータ並びにアドレスデータが、バイト、ワード、ロングワードの数種類に亘るときにも、命令フォーマット中におけるレジスタ指定部のビット数を最小限に抑えることができる。
(7)したがって、論理的・物理的規模の増加を最小限としつつ、下位CPUのような別のデータ処理装置ために既に開発されたプログラムの一部若しくは全部を利用可能な、下位CPUとの上位互換を実現しつつ、連続的に使用可能なアドレス空間を相対的に広げることができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るシングルチップマイクロコンピュータのブロック図である。
【図2】下位CPUのレジスタ構成例の説明図である。
【図3】図2のCPUの汎用レジスタのデータ構成を示す説明図である。
【図4】本発明に係るデータ処理装置の一実施例であるCPUのレジスタ構成説明図である。
【図5】本実施例に係るCPUのレジスタ上のデータ構成図である。
【図6】今実施例に係るCPUによるアドレシングモードと実効アドレス計算方法の一例説明図である。
【図7】本実施例に係るCPUによるアドレシングモードと実効アドレス計算方法の他の例の説明図である。
【図8】本実施例に係るCPUによるアドレシングモードと実効アドレス計算方法の別の例の説明図である。
【図9】本実施例に係るCPUの命令フォーマットの一例説明図である。
【図10】本実施例に係るCPUの他の命令フォーマットの説明図である。
【図11】本実施例に係るCPUのその他の命令フォーマットの説明図である。
【図12】本実施例に係るCPUの別の命令フォーマットの説明図である。
【図13】本実施例に係るCPUの更に別の命令フォーマットの説明図である。
【図14】本実施例に係るCPUの更に他の命令フォーマットの説明図である。
【図15】本実施例に係るCPUの更にその他の命令フォーマットの説明図である。
【図16】本実施例に係るCPUの残りの一部の命令フォーマットの説明図である。
【図17】図4に示されるレジスタの指定態様に関する説明図である。
【図18】本実施例に係るCPUの一例ブロック図である。
【図19】本実施例に係るCPUの命令とアドレッシングモードとの組合せを示す説明図である。
【図20】プリフィックスコードを利用した命令フォーマットの説明図である。
【図21】プリフィックスコードを利用した別の命令フォーマットの説明図である。
【図22】本発明の一実施例に係るマイクロコンピュータのアドレスマップである。
【図23】ミニマムモードとマキシマムモードでのCPUの動作の相異を示す説明図である。
【図24】ミニマムモードとマキシマムモードでのメモリ上のデータ形式の相違を示す説明図である。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 タイマ
5 SCI
100 シングルチップマイクロコンピュータ
Ri(R0L,R0H〜R7L,R7H) 汎用レジスタ
E(E0〜E7) 拡張レジスタ
PC プログラムカウンタ
SEL セレクタ回路部
EXE 実行部
CONT 制御部
REGSEL レジスタ選択回路部
ABL,ABH,ABE アドレスバッファ
ALUL,ALUH,ALUE 算術論理演算器
RDBL,RDBH,RDBE リードデータバッファ
RDB1,RDB3 第1のリードデータバッファ部分
RDB2,RDB4 第2のリードデータバッファ部分
WDBL,WDBH,WDBE ライトデータバッファ
WDBOL,WDBOH ライトデータ出力バッファ[0001]
[Industrial applications]
The present invention relates to a data processing device, and for example, relates to a technology effective when used in a central processing unit of a single-chip microcomputer.
[0002]
[Prior art]
Single-chip microcomputers include 4-bit, 8-bit, and 16-bit microcomputers depending on the data length mainly handled by the central processing unit (hereinafter also simply referred to as CPU). At present, among these, an 8-bit single-chip microcomputer is most frequently used, and is used for controlling embedded devices. Such an 8-bit single-chip microcomputer includes “H8 / 330 HD6473308 HD64333308 Hardware Manual” issued in June 1989 by Hitachi, Ltd. The central processing unit (hereinafter referred to as an 8-bit CPU) of an 8-bit single-chip microcomputer mainly deals with a data length of 8 bits. Therefore, an 8-bit CPU has an 8-bit register or accumulator and is twice as large as an 8-bit register. It has a 16-bit register that is long. Although not limited, these 8-bit CPUs mainly use 8-bit registers or 16-bit registers for data processing, and use only 16-bit registers as address registers for referring to memories. Such a 16-bit register as an address register may be called an index register, a stack pointer, a program counter, or the like.
[0003]
In the 8-bit CPU, the minimum instruction unit is 16 bits (2 bytes). When arranging an instruction or 16-bit data in a memory, it is limited to arranging it in a continuous 2-byte area starting from an even number. Further, the operation instruction of the 8-bit CPU can be performed only between the registers in the CPU, and the operation of the data arranged in the memory must be performed after the data is once transferred to the register in the CPU. Must. Instead of having such a limitation, the internal configuration of the CPU, particularly the configuration of the control unit that controls the execution state of the CPU, is simplified, and the logical and physical scales are reduced. As a result of reducing the logical and physical scale, manufacturing costs can be reduced. Further, as a secondary effect, the operation speed can be improved. That is, relatively large processing performance can be realized with relatively small manufacturing costs.
[0004]
[Problems to be solved by the invention]
However, in the CPU, the address register is 16 bits long, and the memory that can be referred to by the CPU is 65536 bytes (= 2 bytes). 16 , 64 kbytes). On the other hand, in the application of device built-in control using an 8-bit single-chip microcomputer, it is required to handle large-capacity programs or data due to higher performance of the device. At this time, it is preferable that the function is upwardly compatible with the conventional CPU. That is, the user can use all or a part of the source program or the object program already developed by the conventional CPU as it is. As a result, only the peripheral functions of the microcomputer or the parts depending on the application system are changed, and the software or the application system can be immediately developed, and the development period can be shortened.
[0005]
In response to such a demand, the present inventor has made it possible to reduce the logical and physical scales of the CPU, or at a relatively low manufacturing cost, while realizing a relatively large processing performance and at the same time, at least 64 kbytes. The CPU which can refer to the memory was examined.
[0006]
On the other hand, an 8-bit page register is added to an 8-bit CPU, and a memory that can be referred to by generating an address in combination with a 16-bit register is 16777216 bytes (= 2 bytes). 24 The H8 / 532 HD64775328 HD6435328 Hardware Manual issued by Hitachi, Ltd. in December 1988 is an example of a single-chip microcomputer having a capacity of 16 Mbytes. In such a memory reference method, since the page register and the address register are completely independent, the hardware implementation method is simplified, but no carry or borrow is propagated between the page register and the address register. When creating a program or compiler, care must always be taken to ensure that a group of programs or data does not cross page boundaries. That is, in the above example, when the instruction is executed from
[0007]
Managing the page register while always paying attention so that the program or data does not cross the page boundary is to convert the contents programmed using a so-called high-level language into a program (object program) in a so-called machine language of the CPU. This is a major constraint on the creation of compilers that convert automatically, reducing the design efficiency of the compiler, significantly increasing the size of the object program created, and, as a result, reducing the execution time of the program. .
[0008]
In addition, for applications where a memory space of 64 Kbytes or less is sufficient, the page register cannot be used as a data register, and is logically and physically wasted. This is contrary to the purpose of realizing a large processing performance.
[0009]
An object of the present invention is to provide a low-level CPU that can use part or all of a program already developed for another data processing device such as a low-level CPU while minimizing an increase in logical and physical scales. It is an object of the present invention to provide a data processing device capable of relatively widening an address space that can be used continuously while realizing upward compatibility with the above. To relatively expand the address space that can be used continuously means that, for example, an address space of 64 kbytes or more can be used continuously using an 8-bit CPU.
Another object of the present invention is to provide, in addition to the above objects, a data processing apparatus capable of easily compiling a program created in a high-level language.
[0010]
The above and other objects and novel features of the present invention will become apparent from the description of the present specification and the accompanying drawings.
[0011]
[Means for Solving the Problems]
The outline of a representative invention among the inventions disclosed in the present application will be briefly described as follows.
[0012]
That is, the general-purpose register of the CPU uses all or two equally divided parts for holding data information, or divides one of the two equally divided parts into two equal parts. Is made available with a greater number of bits than the number of address bits. For example, a 16-bit extension register is added to a 16-bit general-purpose register of an 8-bit CPU, and a 32-bit register is used collectively or a part of the register as an address register. One unit is divided into two and used as two 16-bit data registers, and one of the 16-bit data registers is divided into two and used as two 8-bit registers. The use form of such a register is specified as follows. Whether it is used as an 8-bit register or as a 16-bit register is determined by the size bit of the data information included in the operation code. When the size of the data information is 8 bits (bytes), the upper and lower bits of the 8-bit register are specified by a predetermined bit of a register specification field included in the instruction. When the size of the data information is 16 bits (word), the predetermined 1 bit specifies the upper and lower bits of the 16-bit register. The use as a 32-bit (long word) register is specified by a prefix code (prefix code) of an instruction including an operation code. Alternatively, a new operation code having the same number of bits as the operation code of the lower CPU is additionally specified. Based on such a register configuration, an instruction execution function of a lower CPU including a 16-bit register is included. Thereby, the program developed for the lower CPU can be used for the upper CPU according to the present invention at least at the level of the source program (the description level in the high-level language). That is, upward compatibility is realized at least at the source program level. Here, the lower CPU means a CPU whose register configuration and its instruction set are included in the register configuration and the instruction set of the data processing device such as the CPU according to the present invention.
[0013]
Further, in order to realize upward compatibility at the object program level, an operation mode in which the number of bits of an effective address and a unit size of a vector and a stack are switched in accordance with a use form of the register, for example, a maximum mode and a minimum mode Should be prepared. In the minimum mode, the CPU operates exactly like the lower CPU. In the maximum mode, the CPU operates as an upper CPU with the maximum functions provided for the CPU.
[0014]
Since the preamble code must not overlap with the instruction code of the lower CPU, it is optimal to use this code as the code of the undefined instruction.
[0015]
The instruction unit can be twice as long as the data information unit. For example, when the CPU register is expanded to 32 bits, when considering the future use of the 4 Gbyte address space, the instruction length is set to 2 bytes, and the 24-bit absolute address displacement is 4 bytes including the reserved area. And Further, in order to simplify the configuration of the execution means and the control means and to contribute to the reduction of the logical and physical scale, the least significant bit of the effective address designating part in the instruction code is replaced by the least significant bit of the word in the instruction code. Is desirable.
[0016]
[Action]
According to the above-described means, the data information can be held in two parts and can be used as an address register with the number of bits equal to or more than the number of address bits of the lower CPU. Byte / word size is specified by the size bits of the operation code. Use of long word size data information is specified by a prefix code or a newly added operation code having the same number of bits as the lower CPU. The upper / lower byte size register used for the size data information is specified by a predetermined bit of the register specification field. For the word size data information, the upper / lower word word register is specified by the predetermined 1 bit. Each time a lower level is specified, at least the source To achieve upward compatibility of a ram level.
[0017]
Preparing the maximum mode and the minimum mode realizes upward compatibility at the object program level.
[0018]
By adding a 16-bit extension register to a 16-bit general-purpose register of an 8-bit CPU, a register configuration composed of a total of 32 bits improves the usability of data holding means on software and hardware, As a result, the logical and physical scale of a data processing device such as a CPU can be reduced. In addition, in terms of holding address data using the whole or a part of the data holding means, it is easy to expand the address space that can be used linearly. Make compilation easier.
[0019]
【Example】
FIG. 1 shows a single-chip microcomputer as a first embodiment of a data processing device according to the present invention. The single-
[0020]
The single-
[0021]
When the reset signal RES is applied to the
[0022]
The minimum unit of the instruction of the
[0023]
FIG. 2 shows an example of a register configuration of a CPU corresponding to the lower CPU of the
[0024]
The lower CPU shown in the figure has eight general-purpose registers R0L, R0H to R7L, R7H each having a 16-bit length, a program counter PC having a 16-bit length, and a condition code register CCR having an 8-bit length. I have. The general-purpose registers R0L, R0H to R7L, R7H are not particularly limited, but can store 8-bit data independently of upper 8 bits and lower 8 bits, or connect 16-bit data by connecting upper and lower bits. Data can also be stored. The condition code register CCR includes an interrupt mask bit (I), a carry flag (C), a zero flag (Z), a negative flag (N), and an overflow flag (V). When the interrupt mask bit I is 1, the
[0025]
FIG. 3 shows data used in the register configuration of FIG.
[0026]
The byte data handled by the lower CPU is stored in the upper RiH or lower RiL of the general-purpose register in the same manner as described above (i = 0 to 7). The word data is stored in the general-purpose register Ri.
[0027]
FIG. 4 shows an example of a register configuration of the
[0028]
The
[0029]
When the general-purpose registers RiL and RiH are used as address registers, 16 bits held by the general-purpose registers RiH and RiL are set to the lower 16 bits of the address, and the contents of the corresponding extension register Ei are set to the upper 16 bits of the address, for a total of 32 bits. Alternatively, a 24-bit address is generated by ignoring the upper 8 bits of the extension register Ei. The
[0030]
The extension registers E0 to E7 can be used as data registers in the same manner as general-purpose registers as 16-bit registers. That is, data operations can be performed between extension registers and between extension registers and general-purpose registers. The condition code register CCR is the same as described above, and a detailed description thereof will be omitted. The program counter PC is the same as described above except for the bit length.
[0031]
FIG. 5 shows a data configuration example of general-purpose registers R0L, R0H to R7L, R7H and extension registers E0 to E7. The byte data handled by the
[0032]
According to such a register configuration, eight 8-bit registers, sixteen 16-bit registers, and eight 24-bit registers can be used. This means that software that is upwardly compatible with the lower CPU and that is created using the registers of the lower CPU can be used by the
[0033]
6 to 8 show an example of an addressing mode of the
[0034]
The register indirect shown in (1) of FIG. 6 includes a part for designating a register in an instruction code, and a register designated by the instruction code and the contents of an extension register corresponding to the register are used as an address in a memory as a total of 24 bits. Specify the address of Since the address may be 24 bits, the upper 8 bits are ignored.
[0035]
The register indirect with displacement shown in (2) and (3) of FIG. 6 uses the result obtained by adding the displacement included in the instruction code to the 24-bit address obtained in the same manner as the register indirect as the address. Specify an address in memory. The addition result is used only for specifying the address, and is not reflected in the contents of the extension register Ei and the general-purpose register Ri. Although not particularly limited, the displacement is 24 bits or 16 bits, and when adding the 16-bit displacement, the upper 16 bits are sign-extended. That is, addition is performed assuming that the upper 16 bits of the displacement have the same value as
[0036]
The post-increment register indirect shown in (4) of FIG. 7 specifies an address on the memory by a 24-bit address obtained in the same manner as the register indirect. Thereafter, 1 or 2 or 4 is added to this address, and the addition result is stored in the extension register / general-purpose register. When specifying byte data on the memory, 1 is added, when word data is specified, 2 is added, and when address data is specified, 4 is added. The upper 8 bits of the addition result are also stored in the extension register.
[0037]
The pre-decrement register indirect shown in (5) of FIG. 7 specifies a memory address by a 24-bit address obtained by subtracting 1 or 2 or 4 from a 24-bit address obtained in the same manner as the register indirect. I do. Thereafter, the result of the subtraction is stored in the extension register / general-purpose register. When byte data on the memory is designated, 1 is subtracted, when word data is designated, 2 is designated, and when address data is designated, 4 is subtracted. As described above, when the address may be 24 bits, the upper 8 bits of the subtraction result are also stored in the extension register, although there is no particular limitation.
[0038]
The relative address of the program counter shown in (6) of FIG. 7 specifies an address on the memory as an address obtained by adding a displacement included in the instruction code to a 24-bit address of the content of the program counter. The addition result is stored in the program counter. Although there is no particular limitation, the displacement is 16 bits or 8 bits, and when these displacements are added, the upper 8 bits or 16 bits are sign-extended. That is, the addition is performed assuming that the upper 8 bits of the displacement have the same value as
[0039]
The absolute address shown in FIG. 8 specifies an address on the memory using an 8-bit, 16-bit, or 24-bit absolute address included in the instruction code as an address. The upper 16 bits of the 8-bit absolute address are extended by one. That is,
[0040]
In addition to the above, the
[0041]
Since the lower CPU has an address space of 64 kbytes, there is no 24-bit register indirect with displacement and a 24-bit absolute address. Also, there is no long word size such as pre-decrement register indirect. The other addressing modes shown in FIGS. 6 to 8 can be identified with the addressing mode supported by the lower CPU and the effective address calculation by ignoring the upper 8 bits of the address information. Therefore, the
[0042]
FIGS. 9 to 16 show the instruction format of the main addressing mode instructions.
[0043]
The format of each instruction has an operation code part op for indicating the function and addressing mode of each instruction, and a register specification part (for specifying a register to be used according to the operation code of the operation code part op). rs, rd, ers, erd), an absolute address (aa), a displacement (d), or an immediate (xx). The instruction format is in units of 2 bytes, and the register designation section is included in
[0044]
The absolute address aa, the displacement d, and the immediate xx in the instruction format are included in the instruction code such that the least significant bit is an even-numbered
[0045]
According to the above-mentioned instruction format, the part for designating the register in the instruction format is fixed to a part of the first word of the instruction, so that the decoding logic configuration of the instruction is simplified. Further, it determines which of the eight registers is to be designated by the lower three bits of the register designation area, and decides which area of the designated one register is to be used by the upper one bit. At the same time, the size of the area determined by the one bit is determined by the data size specified in the instruction, in other words, by the operation code of the operation code part, so that the data stored in the register and the address data are stored. However, the number of bits in the register specification section can be minimized even when the data includes several types of bytes, words, and long words.
[0046]
As described above, the low-order CPU does not have a register indirect with 24-bit displacement, two addressing modes of a 24-bit absolute address, and a long word size instruction. Other instructions are common to the lower CPU and the
[0047]
FIG. 17 shows an example of the correspondence between the data in the register specification section and the register specified by the data in the instruction format.
[0048]
The register specification part specifies the register number (0 to 7) with
[0049]
FIG. 18 shows an internal block diagram of the
[0050]
The execution unit EXE further includes temporary registers TRL, TRH, TRE, arithmetic logic units ALUL, ALUH, ALUE, read data buffers RDBL, RDBH, RDBE, write data buffers WDBL, WDBL, WDBE, and address buffers ABL, ABH, ABE. And these are connected via three internal buses A (L, H, E), B (L, H, E), C (L, H, E), and a selector circuit unit SEL. The read data buffers RDBL, RDBH, and RDBE are connected to external data buses D7 to D0 and D15 to D8. The write data buffers WDBL, WDBL, and WDBE are connected to the data buses D7 to D0 and D15 to D8 via write data output buffers WDBOL and WDBOH. The arithmetic logic units ALUL, ALUH, and ALUE are used for various operations specified by instructions, addition of a program counter PC, calculation of an effective address, and the like. The read data buffers RDBL, RDBH, and RDBE temporarily store commands and data read from the
[0051]
Although not particularly limited, each circuit block in the execution unit EXE is basically composed of two 8-bit blocks and one 16-bit block. The general-purpose register is composed of two 8-bit blocks, and R0H to R7H correspond to
[0052]
When such a general-purpose register Ri and an extension register Ei are provided and a 16-Mbyte address space can be used while maintaining compatibility with the lower CPU, the main operation is performed between the registers and the memory of the lower CPU. It is a good idea to use an instruction system that does not directly perform the operation of the register and the register (ie, does not perform the operation with one instruction).
[0053]
First, it is difficult to add a new instruction for the upper CPU when the lower CPU supports the direct operation between the memory and the register and optimizes the instruction system. . That is, the types of operation codes determined by the combination of the addressing mode of the memory and the type of operation for the operation of the memory and the register increase dramatically, and it is difficult to add a new operation code. Alternatively, a new operation code cannot necessarily be optimized, so that the instruction length is increased, the program size is increased, and the execution efficiency of the program is also deteriorated.
[0054]
Second, in order to effectively use the 16 Mbyte address space, the above-described complicated addressing mode is required. If such a complicated addressing mode can be executed for many of the operation instructions, the configuration of the control unit CONT becomes complicated, which is against the purpose of minimizing the logical and physical scales. For accessing the memory, data may be transferred to and from the register by the transfer instructions having the various addressing modes described above, and data processing such as operation may be performed on the register. The general-purpose register Ri can be used as a maximum of 16 registers with an 8-bit length, and the general-purpose register Ri and the extension register Ei can be used as a maximum of 16 registers with a 16-bit length, and data necessary for a certain process must be placed on the register. Can be. Alternatively, at least most of the frequently used data can be placed on registers. Therefore, it is considered that there are few cases where inconveniences such as an increase in processing programs and a decrease in execution speed occur.
[0055]
Instructions that need to perform operations on the memory include bit manipulation instructions. These are designated as the n-th bit of the address assigned in byte units, but are not data handled in byte units, and each bit has an independent function. For example, in the case of a register that controls the operation of the timer, the timer clock is selected by the 0th bit and the 1st bit, and the timer counter is cleared when the contents of the timer counter and the comparison register match by the 2nd bit. The third bit is used to specify whether or not to generate an interrupt when the values match. These need to be set to 1 or cleared to 0 in bit units. Alternatively, when the processing program of the
[0056]
FIG. 19 shows an example of the relationship between the instruction function and the combination of the addressing modes.
[0057]
In the figure, # is immediate, R is register direct, @R is register indirect, @ (d16, R) and @ (d24, R) are register indirect with displacement, @ -R is pre-decrement register indirect, @ R + is Post-increment register indirect, $ a8, $ a16, $ a24 denote absolute addressing, $ (d8, PC), $ (d16, PC) denote program counter relative addressing modes. Also, in the figure, B means a byte, W means a word, and L means a long word. The program counter relative is used exclusively for branch instructions. Other addressing modes can be used with transfer instructions. The operation instruction can use immediate and register directly. However, the unary operation is directly performed on the register.
[0058]
In FIG. 19, those supported by the lower CPU are marked with a triangle. The long word of the increment / decrement is a word-size operation because the address register has a word size in the lower CPU.
[0059]
As described above, the arithmetic operation instruction can use a byte, a word, and a long word, but the addition / subtraction with carry can use only the byte size. Increment and decrement use the register as a counter. ± 1 can use bytes, words and longwords, but ± 2 and ± 4 are for address calculation, so only longwords can be used. I have. The logical operation instruction, shift instruction, and rotate instruction are not particularly limited, but can use bytes, words, and long words. This is because, as one of the applications using the 16 Mbyte address space, when handling character data of a printer, it is considered that these instructions are frequently used for processing such as black and white inversion and italicization of character data. Conversely, in a lower CPU that supports a 64-kbyte address space, logical operation instructions, shift instructions, and rotate instructions are not particularly limited, but can use only bytes.
[0060]
As described above, the main operation is performed between the registers, and even if the instruction system does not perform the direct operation between the memory and the register, it is difficult to add a new operation code. If the transfer instruction and the operation instruction are equivalent to a word size instruction and a one-word prefix code is added, the logical and physical scale of the control unit can be particularly minimized.
[0061]
20 and 21 show an example instruction format using a prefix code.
[0062]
As described above, a one-word prefix code is provided before the instruction format of the word size of the register indirect with displacement to express the long word size. Since the prefix code must not overlap with the instruction code of the lower CPU, it is optimal to use this as a code corresponding to an undefined instruction code. In addition, an instruction such as a non-operation (NOP) instruction which does not substantially require the information in the operand specification field and which fills the operand specification field with a predetermined code can be used as a prefix code if possible. it can.
[0063]
FIG. 22 shows an address map of the microcomputer.
[0064]
The built-in ROM is arranged from the address H'00000, and the built-in peripheral functions and the built-in RAM are arranged after the H'FF 800, and the space between them is an external space. The built-in peripheral functions and the built-in RAM can be arranged in the middle of the address space, for example, from H'0F800 to H'0FFFF, but in this case, the external space is separated into two places and written in the built-in ROM. The program and the program existing in the external space cannot be used continuously, which is against the object of the present invention. Therefore, the built-in ROM, which is mainly used as the program area, and the built-in peripheral function / built-in RAM, which is mainly used as the data area, are arranged opposite to each other in the address space, and the space between them should be continuous. In particular, the built-in ROM needs to include a start address or an address storing the start address.
[0065]
Since the 16-bit absolute address sign-extends the upper 8 bits to generate an effective address, the designated ranges are H'000000 to H'007FFF and H'FF8000 to H'FFFFFF, and 32 KB of internal ROM. In addition, the internal RAM and the internal peripheral functions can be designated. Except for the part of the built-in ROM larger than 32 kbytes, the built-in functional block can be designated by a 16-bit absolute address like the lower CPU. Therefore, it is possible to easily transfer software from the lower CPU. In the case of a 16-bit displacement register indirect, the displacement coincides with the specified range of the reference address when the displacement is interpreted as a reference address and the contents of the register are interpreted as a relative value.
[0066]
In the above embodiment, the address space is set to 16 Mbytes, but the extended function is required in the present invention. However, the application of the address space of 64 Kbytes as in the related art can be sufficiently applied.
[0067]
For example, when all terminals of a single-chip microcomputer are used as input / output ports without using an external space and the mounting area of an application system is to be reduced, if the total area of the built-in area is 64 kbytes or less, an address is required. There is no problem with the space of 64 kbytes as in the conventional case.
[0068]
In such an application, the reading of the vector or the stacking of the program counter only needs to be performed in units of 16 bits, that is, 2 bytes. Accessing 4 bytes is useless, resulting in reduced execution time and reduced memory utilization efficiency. .
[0069]
Although not particularly limited, a mode that operates in an address space of 64 kbytes is a minimum mode, and a mode that operates in an address space of 64 kbytes or more is a maximum mode as described above. The minimum mode and the maximum mode are appropriately designated by the MODE1 to MODE3 terminals in FIG.
[0070]
FIG. 23 shows the difference in the operation of the CPU between the minimum mode and the maximum mode.
[0071]
As described above, in the maximum mode, the maximum number of addresses is 24 bits, and the stack for vector / exception processing and the stack for subroutine calls are all in units of 4 bytes including the
[0072]
In the minimum mode, the maximum number of addresses is 16 bits, and the stack at the time of a vector subroutine call is reduced to 2 bytes corresponding to 16 bits of the address. Although not particularly limited, it is assumed that the
[0073]
FIG. 24 shows the data format on the memory in the minimum mode and the maximum mode.
[0074]
In the maximum mode, the vector is arranged in 4-byte units starting from a multiple of four. The first byte is a reserved area, and the remaining three bytes are used as a start address. The stack is arranged starting from an even address in 4-byte units in both exception processing and subroutine calls.
[0075]
In the minimum mode, vectors are arranged in 2-byte units starting from even addresses. These are used as start addresses (lower 16 bits, upper 8 bits are regarded as 0). During exception processing, the stack stores the CCR / reserved area and the lower 16 bits of the PC starting from an even address in 4-byte units. At the time of the subroutine call, the lower 16 bits of the PC are stored in 2-byte units starting from an even address.
[0076]
By preparing the minimum mode and the maximum mode, the
[0077]
In consideration of testing such a single-chip microcomputer, it is desirable that the vector area can be used as an external memory in both the minimum mode and the maximum mode. Since the maximum mode effectively uses a wide address, it is considered that the ROM invalid extended mode is set. In the ROM invalid extended mode, there is no problem because the vector area is an external memory. However, when the minimum mode is only the single-chip mode, it is necessary to use the vector area as an external memory at least for the test. At the time of the test, the contents of the built-in ROM store the user's program and cannot be used by the manufacturer. Therefore, the function of switching the vector structure between the minimum mode and the maximum mode cannot be tested.
[0078]
For this purpose, for example, a register that can be read / written only in the test mode may be provided so that the minimum mode and the ROM invalid extension mode can be set by setting these bits. At a minimum, data may be externally input when the vector area on the ROM is read.
[0079]
According to the above embodiment, the following effects can be obtained. That is,
(1) A 32-bit register (Ri + Ei) is used collectively or a part of it as an address register in a form in which a 16-bit extension register is added to a 16-bit general-purpose register of an 8-bit CPU. At the same time, the data register is divided into two 16-bit data registers (Ei, Ri) with the entire 32 bits as one unit, and one of the 16-bit data registers is further divided into two and divided into two 8-bit data registers. It can be used as a register (RiH, RiL). Whether it is used as an 8-bit register or as a 16-bit register is determined by the size bit of the data information included in the operation code. When the size of the data information is 8 bits (bytes), the upper (RiH) and lower (RiL) of the 8-bit register is specified by a predetermined bit of a register specification field included in the instruction. When the size of the data information is 16 bits (word), the predetermined 1 bit specifies the upper (Ei) and lower (Ri) of the 16-bit register. The use as a 32-bit register (Ri + Ei) is specified by a prefix code (prefix code) of an instruction including an operation code. Alternatively, a new operation code having the same number of bits as the operation code of the lower CPU is additionally specified. As described above, the register configuration of the
(2) A maximum mode and a minimum mode are prepared as operation modes for switching the number of bits of an effective address and the unit size of a vector and a stack in accordance with the use form of the registers Ei, Ri, RiH, and RiL. As a result, the
(3) By adopting a prefix code for an instruction using long word data, the main operation is performed between registers, and a new operation code is used even in an instruction system in which direct operation is not performed between a memory and a register. Can be dealt with when it is difficult to add a control unit, and an increase in the logical and physical scale of the control unit can be significantly suppressed.
(4) By adopting a code corresponding to a code of an undefined instruction as a prefix code, duplication with other operation codes can be completely prevented.
(5) The 32-bit registers Ri and Ei are used collectively or partially as address registers, and are divided into two to form 16-bit data registers, and one of the 16-bit data registers is converted to an 8-bit register. By making it usable, a wide address space of 16 Mbytes can be used while efficiently performing data processing.
(6) By setting the instruction length to 2 bytes and setting the 24-bit absolute address displacement to 4 bytes including the reserved area, a 4 Gbyte address space can be used in the future.
(7) By making the number of registers available as 8-bit registers equal to the number of registers available as 16-bit registers, the instruction length can be shortened and the program efficiency can be improved.
(8) The logical / physical scale of the register selecting circuit can be reduced by configuring the register specifying section in the instruction code with 3 bits for specifying the entire register and 1 bit for specifying the register portion.
(9) By making the least significant bit of the effective address designating part in the instruction code the least significant bit of the word in the instruction code, the configurations of the execution part and the control part can be simplified, and the logical and physical scales can be reduced. .
(10) The logical and physical scale of the single-
[0080]
Although the invention made by the inventor has been specifically described based on the embodiments, the present invention is not limited thereto, and it is needless to say that various modifications can be made without departing from the gist of the invention.
[0081]
For example, the block configuration of the
[0082]
In the above description, the case where the invention made by the present inventor is applied to a single-chip microcomputer as a background of the application has been mainly described. However, the present invention is not limited to this and is applicable to other data processing devices. Yes, it can be applied when the data scale is more important than the data processing performance.
[0083]
【The invention's effect】
The following is a brief description of an effect obtained by a representative one of the inventions disclosed in the present application.
[0084]
(1) By including the register configuration of another data processing device such as the lower CPU, including the register designation method, and including the instruction execution function of the lower CPU, the program developed for the lower CPU must be at least the source The data processing device according to the present invention can be used at the program level, and at least upward compatibility at the source program level can be realized.
(2) By preparing in advance an operation mode in which the number of bits of an effective address and the unit size of a vector and a stack are switched according to the use form of the register, upward compatibility at the object program level can be easily achieved. It can be realized.
(3) A 16-bit extension register is added to a 16-bit general-purpose register of an 8-bit CPU, so that the data holding means having a total of 32 bits is used for holding data in all or two parts. Alternatively, one of the two parts can be used by further dividing it into two parts, thereby improving the usability of the data holding means on software and hardware, and furthermore, the logical and physical aspects of the data processing device. Scale reductions can be achieved. In addition, in terms of holding the address data using the whole or a part of the data holding means, it is easy to expand the address space that can be used linearly. In addition, compilation can be facilitated. Therefore, a program created in a high-level language can be executed efficiently.
(4) In consideration of an operation instruction for n-bit data and an operation instruction for 2n-bit data, a part used by dividing the whole into two equal parts and one part obtained by dividing into two equal parts is used by further dividing into two equal parts. Each data holding means is configured so as to have the same number of parts, and the total number of parts used in the bisecting is further equal to the total number of parts used in the bisecting. By providing a plurality of units of the data holding means, the instruction length can be shortened and the program efficiency can be improved.
(5) By making the instruction unit twice as long as the data unit, it is possible to easily cope with future expansion of the address space. Further, by making the least significant bit of the effective address designating part in the instruction code the least significant bit of the word in the instruction code, the configuration of the execution means and the control means can be simplified, and the logical and physical scale can be reduced. Contribute.
(6) By adopting an instruction format in which a part for designating the data holding means is fixed to a part of the instruction unit, a logical arrangement of a selection circuit for the data holding means such as a register or an instruction decoding circuit is provided. Physical scale can be reduced. Further, in this case, the specified portion is constituted by an area for specifying a required data holding unit from a plurality of units, and an area for specifying any part in one data holding unit, and further comprising: Based on the data size specified in the area, the area for specifying which part in the data holding means specifies which part is divided into two equal parts, and further specifies which part is divided into two equal parts. By determining whether to specify, the number of bits of the register specification part in the instruction format can be changed even when the data and the address data stored in the data holding unit are several types of bytes, words, and long words. Can be minimized.
(7) Therefore, while minimizing the increase in the logical and physical scales, it is possible to use a part or all of a program already developed for another data processing device such as a lower CPU. The address space that can be used continuously can be relatively widened while realizing upward compatibility.
[Brief description of the drawings]
FIG. 1 is a block diagram of a single-chip microcomputer according to one embodiment of the present invention.
FIG. 2 is an explanatory diagram of a register configuration example of a lower CPU.
FIG. 3 is an explanatory diagram showing a data configuration of a general-purpose register of the CPU of FIG. 2;
FIG. 4 is an explanatory diagram of a register configuration of a CPU which is an embodiment of the data processing device according to the present invention.
FIG. 5 is a diagram illustrating a data configuration on a register of a CPU according to the embodiment;
FIG. 6 is an explanatory diagram of an example of an addressing mode and an effective address calculation method by a CPU according to the present embodiment.
FIG. 7 is an explanatory diagram of another example of the addressing mode and the effective address calculation method by the CPU according to the embodiment.
FIG. 8 is an explanatory diagram of another example of the addressing mode and the effective address calculation method by the CPU according to the embodiment.
FIG. 9 is an explanatory diagram illustrating an example of a command format of a CPU according to the embodiment;
FIG. 10 is an explanatory diagram of another instruction format of the CPU according to the embodiment.
FIG. 11 is an explanatory diagram of another instruction format of the CPU according to the embodiment.
FIG. 12 is an explanatory diagram of another instruction format of the CPU according to the embodiment.
FIG. 13 is an explanatory diagram of still another instruction format of the CPU according to the embodiment.
FIG. 14 is an explanatory diagram of still another instruction format of the CPU according to the embodiment.
FIG. 15 is an explanatory diagram of still another instruction format of the CPU according to the embodiment.
FIG. 16 is an explanatory diagram of the remaining part of the instruction format of the CPU according to the embodiment.
FIG. 17 is an explanatory diagram relating to a specification mode of the register shown in FIG. 4;
FIG. 18 is a block diagram illustrating an example of a CPU according to the embodiment;
FIG. 19 is an explanatory diagram showing a combination of a CPU instruction and an addressing mode according to the embodiment.
FIG. 20 is an explanatory diagram of an instruction format using a prefix code.
FIG. 21 is an explanatory diagram of another instruction format using a prefix code.
FIG. 22 is an address map of a microcomputer according to one embodiment of the present invention.
FIG. 23 is an explanatory diagram showing a difference in operation of the CPU between the minimum mode and the maximum mode.
FIG. 24 is an explanatory diagram showing a difference in data format on a memory between the minimum mode and the maximum mode.
[Explanation of symbols]
1 CPU
2 ROM
3 RAM
4 Timer
5 SCI
100 single-chip microcomputer
Ri (R0L, R0H to R7L, R7H) General-purpose register
E (E0-E7) Extension register
PC program counter
SEL selector circuit
EXE execution unit
CONT control unit
REGSEL register selection circuit
ABL, ABH, ABE Address buffer
ALUL, ALUH, ALUE arithmetic logic unit
RDBL, RDBH, RDBE Read data buffer
RDB1, RDB3 First read data buffer part
RDB2, RDB4 Second read data buffer part
WDBL, WDBH, WDBE Write data buffer
WDBOL, WDBOH Write data output buffer
Claims (8)
データ情報の保持には全体を、或は全体を2等分割した2等分割領域の双方を選択的に、又は一方の2等分割領域を更に2等分割した4等分割領域の双方を選択的に、利用可能であり、且つ、前記2等分割領域のビット数よりも多いビット数を以ってアドレス情報の保持にも利用可能なデータ保持手段を複数個有し、
前記4等分割領域を利用するか2等分割領域を利用するかは命令のオペレーションコードに含まれる所定の1ビットによって指定され、
何れの4等分割領域を利用するか何れの2等分割領域を利用するかは、命令のオペランド指定フィールドに含まれる所定の1ビットによって指定され、
前記2等分割領域のビット数に相当するデータ保持手段を有する別のデータ処理装置の命令実行機能を包含し、
前記データ保持手段の全体の利用は、処理の内容を指定するオペレーションコードを含む命令の前置きコードによって指定される、ものであることを特徴とするデータ処理装置。A data processing device that executes instructions according to a predetermined procedure,
To hold the data information, the whole, or both equally divided regions obtained by dividing the whole equally into two, or both the equally divided regions into which one of the equally divided regions is further equally divided into two are selectively selected. A plurality of data holding means that can be used and can also be used to hold address information with a bit number larger than the bit number of the bisecting area;
Whether to use the four equally divided regions or the two equally divided regions is designated by a predetermined bit included in the operation code of the instruction,
Which one of the four equally divided regions is to be used or which two equally divided regions are to be used is designated by a predetermined bit included in the operand designation field of the instruction.
An instruction execution function of another data processing device having data holding means corresponding to the number of bits of the bisecting area;
The data processing apparatus according to claim 1, wherein the entire use of said data holding means is specified by a prefix code of an instruction including an operation code for specifying the content of processing.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003037571A JP3539951B2 (en) | 2003-02-17 | 2003-02-17 | Data processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003037571A JP3539951B2 (en) | 2003-02-17 | 2003-02-17 | Data processing device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22644792A Division JP3432532B2 (en) | 1991-05-08 | 1992-08-03 | Data processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216421A JP2003216421A (en) | 2003-07-31 |
JP3539951B2 true JP3539951B2 (en) | 2004-07-07 |
Family
ID=27656234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003037571A Expired - Lifetime JP3539951B2 (en) | 2003-02-17 | 2003-02-17 | Data processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3539951B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6192308B2 (en) * | 2013-02-22 | 2017-09-06 | 株式会社ソフイア | Game machine |
-
2003
- 2003-02-17 JP JP2003037571A patent/JP3539951B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003216421A (en) | 2003-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10514922B1 (en) | Transfer triggered microcontroller with orthogonal instruction set | |
JP5521092B2 (en) | Data processing device | |
KR100462951B1 (en) | Eight-bit microcontroller having a risc architecture | |
JP4226085B2 (en) | Microprocessor and multiprocessor system | |
US5666510A (en) | Data processing device having an expandable address space | |
JP2001202243A (en) | Data processor | |
JP4004915B2 (en) | Data processing device | |
JP2006313561A (en) | Data processor | |
KR100272622B1 (en) | Data processing device | |
JP3432532B2 (en) | Data processing device | |
JP2551167B2 (en) | Microcomputer | |
JP3539951B2 (en) | Data processing device | |
JP3786575B2 (en) | Data processing device | |
JP3839835B2 (en) | Data processing apparatus and microcomputer | |
JP3760093B2 (en) | Microcomputer | |
JP3669984B2 (en) | Microcomputer | |
JP3154542B2 (en) | Data processing device | |
JP4545777B2 (en) | Data processing device | |
US20020004877A1 (en) | Method and system for updating user memory in emulator systems | |
JP2002132499A (en) | Data processing apparatus and recording medium | |
JP3345050B2 (en) | Two-dimensional array type memory system | |
JP2696578B2 (en) | Data processing device | |
JP4498338B2 (en) | Data processing device | |
CIRCUITS | 51MX Architecture Reference Specification and Instruction Set | |
JPH04333153A (en) | Data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040225 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080402 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090402 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090402 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100402 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100402 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110402 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110402 Year of fee payment: 7 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110402 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120402 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120402 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130402 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130402 Year of fee payment: 9 |