JP3669984B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP3669984B2
JP3669984B2 JP2002297670A JP2002297670A JP3669984B2 JP 3669984 B2 JP3669984 B2 JP 3669984B2 JP 2002297670 A JP2002297670 A JP 2002297670A JP 2002297670 A JP2002297670 A JP 2002297670A JP 3669984 B2 JP3669984 B2 JP 3669984B2
Authority
JP
Japan
Prior art keywords
address
register
data
bit
instruction
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
Application number
JP2002297670A
Other languages
English (en)
Other versions
JP2003122629A (ja
Inventor
直幹 三ツ石
志朗 馬場
ひろみ 永山
努 林
幸秀 早川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2002297670A priority Critical patent/JP3669984B2/ja
Publication of JP2003122629A publication Critical patent/JP2003122629A/ja
Application granted granted Critical
Publication of JP3669984B2 publication Critical patent/JP3669984B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Microcomputers (AREA)
  • Memory System (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、データ処理装置にかかり、例えば、シングルチップマイクロコンピュータの中央処理装置に利用して有効な技術に関するものである。
【0002】
【従来の技術】
シングルチップマイクロコンピュータは、それに含まれる中央処理装置が主として扱うデータ長によって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ビット長である場合、CPUが参照できるメモリは65536(=216)バイト(以下64kバイトとも記す)に限定される。しかしながら、8ビットシングルチップマイクロコンピュータが用いられる機器組込制御の応用では、機器の高性能化によって大容量のプログラムあるいはデータを扱うことが要求されている。
【0003】
これに対し、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となる。したがって、ページレジスタを利用したアドレス拡張技術においては、実質的に利用可能なアドレシングモードも制限されてしまう。
【0004】
これに対し、株式会社日立製作所昭和62年9月発行『日立16ビットマイクロプロセッサ HD641016』などに記載されている16ビットCPUでは16Mバイトの連続したアドレス空間を使用できるものの、主としてデータ処理のために32ビットレジスタを有するなどCPU全体の機能が8ビットCPUに対して格段に高く、これに比例して論理的な規模やチップ占有面積といった物理的な規模が8ビットCPUに比べて相当に大きくなり、このため、機器制御応用でシステム構成に必要なタイマなどの周辺機能を当該16ビットCPUと共に1チップに内蔵できなかったり、充分な記憶容量のメモリを内蔵できず、機器制御応用のための所要のシステムをオンチップ化して所謂シングルチップマイクロコンピュータ化を実現することが難しくなるという問題が本発明者によって見い出された。
【0005】
【発明が解決しようとする課題】
本発明の目的は、論理的並びに物理的規模の増加を最小限にしつつ、連続的に使用可能なアドレス空間を相対的に広げることができるデータ処理装置、例えば8ビットCPUを用いて64kバイト以上のアドレス空間を連続的に使用できるデータ処理装置を提供することにある。本発明の更に別の目的は、命令の種類を相対的に極端に増やさず、連続する相対的に広いアドレス空間を利用でき、しかも当該アドレス空間の広さに見合うように相対的に豊富なアドレシングモードをサポートすることができるデー処理装置を提供することにある。
【0006】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0007】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0008】
すなわち、アドレスデータの保持には全体が使用されデータの保持にはその一部分が使用される所定ビット数のデータ保持手段を中央処理装置(CPU)に設けるものであり、例えば、8ビットCPUに内蔵の既存の16ビットレジスタにアドレス専用の拡張レジスタを追加し、追加された拡張レジスタを含めた全体をアドレスデータとして一括把握して、メモリなどをアクセス可能にするものである。このとき、アドレス演算は拡張レジスタと対応レジスタとの双方を一単位として行われ、アドレスデータを保持するとき斯るレジスタの更新は前記拡張レジスタも一緒に行われる。即ち、拡張レジスタを含めた全体で一単位のデータとして把握して、アドレス演算で発生するキャリーやボローが処理される。
【0009】
前記データ保持手段の全体を利用したときと前記一部分を利用したときの機能の相違に鑑みれば、データ処理装置の内外において、データ保持手段の全体を一括するデータ転送制御と、前記データ保持手段の前記一部分を一括するデータ転送制御との双方を可能にする。演算手段に対しても、前記演算手段の前記全体を利用するアドレスデータに対する算術的演算(シフト演算を含んでもよい)と、前記データ保持手段の一部分を利用するデータに対する算術的並びに論理的な演算を行えればよい。このときのアドレス演算の効率化のためには、演算手段は、前記データ保持手段の全体に対する算術的な演算を、単位マシンサイクルで実行可能な演算ビット数を有するればよく、一括把握されるアドレスデータの演算で生ずるキャリーやボローの処理を別のサイクルで行わなくてもよい。
【0010】
後述するように前記データ保持手段の採用によってリニアなアドレス空間が拡張されるが、これと共にアドレシングモードを多様化するとき、その多様化に応じてアドレシングモードと命令との組み合わせも必然的に増大するが、このときその増大によって制御手段の論理的並びに物理的規模の増大を極力抑え且つそのことがデータ処理能力を著しく低下させないようにするには、前記データ保持手段の前記一部分に対する算術的並びに論理的演算制御を、前記データ保持手段とデータ処理装置外部との間では1つの命令で直接的には不可能にすることが得策である。このとき、周辺回路のコントロールレジスタなどに対するビット操作に対しては1命令で直接行ったほうがよい。
【0011】
【作用】
上記した手段によれば、データ保持手段の全体に対する利用はアドレスデータに限定され、アドレスデータのビット数は、その他のデータの保持に利用される当該データ保持手段の一部分のビット数に比べて拡張され、このことは、リニアに利用可能なアドレス空間を拡張するように作用する。アドレス空間がリニアに拡張されることは、ページレジスタによる従来のアドレス空間拡張技術に比べて、種々のアドレス修飾を可能して、アドレス空間の広さに見合うように相対的に豊富なアドレシングモードをサポートする。更にこのとき、前記データ保持手段の全体の利用はアドレス生成に用途を限定しており、このことは、CPUの論理的並びに物理的な規模の増大を抑制し、システム構成に必要な周辺機能やメモリなどのオンチップ化による1チップマイクロコンピュータ化を容易に実現可能に作用する。
【0012】
【実施例】
図1には本発明に係るマイクロコンピュータの一実施例であるシングルチップマイクロコンピュータが示される。
【0013】
上記シングルチップマイクロコンピュータ100は、全体の制御を司るCPU(中央処理装置)1、CPU1の動作プログラムなどを保有するROM(リードオンリメモリ)2、CPU1の作業領域並びにデータの一時記憶領域などとして利用されるRAM(ランダムアクセスメモリ)3、タイマ4、シリアルコミュニケーションインタフェース(SCI)5、クロックパルスジェネレータ68、及び、入出力ポート(IOP)61乃至67などの機能ブロックから構成され、これらは内部バス69で相互に接続されてなる。内部バスは特に制限はされないものの、アドレスバス、データバス、コントロールバスを含む。斯るシングルチップマイクロコンピュータ100は公知の半導体集積回路製造技術によってシリコン基板のような1つの半導体基板上に形成されている。
【0014】
シングルチップマイクロコンピュータ100はクロックパルスジェネレータCPGの端子XTAL,EXTALに接続される水晶発振子又は外部から入力される外部クロックに基づいて生成される基準クロックに同期して動作を行なう。この基準クロックの最小単位をステートと呼ぶ。尚、図においてVss,Vccは電源端子である。
【0015】
前記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ステートで実行するものとする。
【0016】
図2にはCPU1の内蔵レジスタの第1構成例が示される。CPU1はそれぞれ16ビット長の8本の汎用レジスタR0L,R0H〜R7L,R7Hと、それぞれ8ビット長の8本の拡張レジスタとE0からE7と、24ビット長のプログラムカウンタPCと、8ビット長のコンディションコードレジスタCCRとを有している。汎用レジスタR0L,R0H〜R7L,R7Hは、特に制限はされないものの、上位8ビットと下位8ビットを独立させて8ビット長のデータを格納することも、上位・下位を連結して16ビット長のデータを格納することもできる。
【0017】
汎用レジスタR0L,R0H〜R7L,R7Hをアドレスレジスタとして使用する場合は、汎用レジスタが保有する16ビットをアドレスの下位16ビットとし、対応する拡張レジスタが保有する8ビットをアドレスの上位8ビットとして、合計24ビットのアドレスを生成するものである。換言すれば、CPU1は最大限24ビットのアドレスで規定される連続的なアドレス空間を利用することができる。さらにこの24ビットのアドレスを種々のモードで修飾することができるようになっている。例えば、前記24ビットアドレスにディスプレースメントを加算する、定数倍をする、あるいは他のレジスタの内容を加算するといったことを行うことができる。この修飾を行なう場合、下位16ビットの計算にて、キャリまたはボローが発生した場合には、上位8ビットに桁上げまたは桁下げを行なう。この結果をアドレスレジスタに保持させる場合には同時に上位8ビットの結果も、対応する拡張レジスタに保持させる。
【0018】
拡張レジスタE0〜E7はアドレスレジスタとしての利用に専用化され、データレジスタとしては使用できないようになっている。拡張レジスタE0〜E7の操作は、特に制限はされないものの、アドレスデータを転送するために、拡張レジスタを汎用レジスタと組合せてロード/ストアする場合と、拡張レジスタと汎用レジスタとの間でデータ転送する場合に限定され、汎用レジスタとは無関係に拡張レジスタに対して演算を行なうことはできないようになっている。斯る制限は、CPU1が実行すべき命令を解読して制御信号を生成する制御部によって実現される。
【0019】
プログラムカウンタPCは24ビットのカウンタであり、CPU1が次に実行する命令のアドレスを示している。コンディションコードレジスタCCRは割込みマスクビット(I)と、キャリフラグ(C)、ゼロフラグ(Z)、ネガティブフラグ(N)、オーバフローフラグ(V)を含んでいる。割込みマスクビットは1のとき、CPU1を割込み禁止状態とし、0のとき、割込み許可状態とする。その他のフラグは演算の結果などを反映する。
【0020】
図3には汎用レジスタR0L,R0H〜R7L,R7Hと拡張レジスタE0〜E7のデータ構成例が示される。CPU1が扱うバイトデータは、汎用レジスタの上位RiH(i=1,2,…,7)または下位RiLに格納される。汎用レジスタの上位RiHを使用する場合、ビット15がデータの最上位ビット(MSB)に、ビット8が最下位ビット(LSB)にそれぞれ対応する。同様に、汎用レジスタの下位RiLを使用する場合、ビット7が最上位ビットに、ビット0が最下位ビットに対応する。ワードデータは汎用レジスタRiL及びRiHに格納される。ビット15がデータの最上位ビットに、ビット0が最下位ビットにそれぞれ対応する。アドレスデータは拡張レジスタEiと汎用レジスタRiL,RiHに格納される。拡張レジスタEiのビット7がアドレスデータの最上位ビットに、汎用レジスタRiLのビット0が最下位ビットにそれぞれ対応する。
【0021】
CPU1は、これらの他に、1ビットデータ、あるいは2進化10進数データなどを扱うが、これらは本発明に直接は関係しないので詳細な説明は省略する。
【0022】
図4にはRAM3,ROM2などのメモリのデータ構成例が示される。特に制限はされないものの、メモリはバイト単位にアドレスが付けられている。CPU1が扱うバイトデータは、メモリの各アドレスに格納される。ワードデータはメモリの偶数アドレスと奇数アドレスを連結して格納される。偶数アドレスのビット7がデータの最上位ビットに、奇数アドレスのビット0が最下位ビットにそれぞれ対応する。アドレスデータは偶数アドレスから始まる4バイトのアドレスに格納される。先頭の偶数アドレスの1バイトは将来拡張用にシステム上予約され、例えば利用が制限されている。次の奇数アドレスのビット7がアドレスデータの最上位ビットに、4バイトめの奇数アドレスのビット0が最下位ビットにそれぞれ対応する。
【0023】
図5及び図6にはCPU1のアドレッシングモードと実効アドレスの計算方法の一例が示される。
【0024】
レジスタ間接モードでは命令コード中にレジスタを指定する部分を含み、この命令コードで指定された汎用レジスタとこれに対応する拡張レジスタとが保有する24ビットをアドレスとしてメモリ上のアドレスを指定する。
【0025】
ディスプレースメント付レジスタ間接モードは、上記レジスタ間接モードと同様に得られた24ビットのアドレスに、命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はアドレスの指定のみに使用され、拡張レジスタEi及び汎用レジスタRiL,RiHの内容には反映されない。特に制限はされないものの、ディスプレースメントは24ビットまたは16ビットであり、16ビットディスプレースメントの場合は加算の際に上位8ビットが符号拡張される。すなわち、全24ビットのディスプレースメントの上位8ビットは16ビットディスプレースメントのビット15と同じ値であるとして加算が行われる。
【0026】
ポストインクリメントレジスタ間接モードは、前記レジスタ間接と同様に得られた24ビットのアドレスでメモリ上のアドレスを指定する。その後、このアドレスに1または2または4を加算し、その加算結果が拡張レジスタEi及び汎用レジスタRiH,RiLに格納される。メモリ上のバイトデータを指定する場合は1が、ワードデータを指定する場合は2が、アドレスデータを指定する場合は4が、それぞれ加算される。
【0027】
プリデクリメントレジスタ間接モードは、前記レジスタ間接と同様に得られた24ビットのアドレスから1または2または4を減算して得られる24ビットのアドレスでメモリ上のアドレスを指定する。その後、その減算結果が拡張レジスタEi及び汎用レジスタRiH,RiLに格納される。メモリ上のバイトデータを指定する場合は1が、ワードデータを指定する場合は2が、アドレスデータを指定する場合は4が、それぞれ減算される。
【0028】
プログラムカウンタ相対モードは、プログラムカウンタPCが保有する24ビットのアドレスに命令コード中に含まれるディスプレースメントを加算した結果をアドレスとしてメモリ上のアドレスを指定する。加算結果はプログラムカウンタPCに格納される。特に制限はされないものの、ディスプレースメントは16ビットまたは8ビットであり、加算されるディスプレースメントはその上位8ビットまたは16ビットが符合拡張される。すなわち、全24ビットのディスプレースメントの上位8ビットは16ビットディスプレースメントのビット15と、または上位16ビットは8ビットディスプレースメントのビット7と同じ値であるとみなして加算が行われる。プログラムカウンタ相対は分岐命令のみで使用される。
【0029】
CPU1は、上記の他にイミディエイト、レジスタ直接、絶対アドレスなどのアドレッシングモードを実行するが、これらは本発明に直接は関係しないので詳細な説明は省略する。
【0030】
図7にはCPU1の内部ブロックの一例が示される。CPU1は主としてマイクロROMあるいはPLA(Plogrammable Logic Array)で構成される制御部CONT、前記汎用レジスタR0L,R0H〜R7L,R7H、拡張レジスタE0〜E7、プログラムカウンタPC、コンディションコードレジスタCCRを含む実行部EXEから構成される。
【0031】
実行部EXEはさらに、テンポラリレジスタTRL,TRH,TRE、算術論理演算器ALUL,ALUH,ALUE、リードデータバッファRDBL,RDBH,RDBE、ライトデータバッファWDBL,WDBH,WDBE、及びアドレスバッファABL,ABH,ABEを含み、これらが3本の内部バスA、B、Cを介して接続されている。算術論理演算器ALUL,ALUH,ALUEは、命令によって指定される各種演算、プログラムカウンタの加算、実効アドレスの計算などに用いられる。リードデータバッファRDBL,RDBH,RDBEはROM2、RAM3あるいは図示はされない外部メモリなどからリードした命令やデータを一時的に格納し、またライトデータバッファWDBL,WDBH,WDBEは前記ROM2、RAM3あるいは外部メモリなどにライトすべきデータを一時的に格納する。これによってCPU1の内部動作とCPU1外部のリード/ライト動作のタイミングを調整している。アドレスバッファABL,ABH,ABEはCPU1がリード/ライトするアドレスを一時的に格納する。
【0032】
特に制限はされないものの、上記実行部EXE内の各ブロックは8ビットを単位としている。すなわち、例えば、プログラムカウンタは8ビット単位で3ブロックに分割されている。PCEがビット23〜16、PCHがビット15〜8、PCLがビット7〜0に対応する。汎用レジスタはR0H〜R7Hがビット15〜8、R0L〜R7Lがビット7〜0に対応する。そしてそれら汎用レジスタに対するビット23〜16が拡張レジスタE0〜E7とされる。内部バスA,B,Cは、これらのビット23〜16、15〜8、ビット7〜0に対応して3本が並行して設けられている。その他に前記テンポラリレジスタ・ALU・データバッファなども同様に8ビットを単位に構成されている。これらの物理的な配置は特に制限はされない。
【0033】
図8乃至図11には図7のCPU1が処理する代表的な命令や例外処理のフローチャートの一例が示される。
【0034】
リセット例外処理(図8)においては、CPU1は0番地から始まる4バイトのアドレスに格納されたスタートアドレスをリードする。なお、この4バイトの内、0番地の1バイトは、前記の通り将来拡張用に予約されたものであり、無視される。CPU1は第1ステップSa1で、割込みマスクビットIを1にセットする。同時にCPU1内部でバスA上にデータ0を生成し、これをアドレスバッファABL,ABH,ABE(以下単にABとも記す)に転送するとともに、ALUL,ALUH,ALUE(以下単にALUとも記す)で2を加算する。加算結果はテンポラリレジスタTRL,TRH,TRE(以下単にTRとも記す)に格納する。第2ステップSa2で前記アドレスバッファABの内容をアドレスとしてワードデータのリードを開始する。第3ステップSa3ではリード動作を終了し、リードしたワードデータをデータバッファRDBL,RDBH,RDBE(以下単にRDBとも記す)に格納する。同時にテンポラリレジスタTRの内容をバスAに出力し、アドレスバッファABに転送する。第4ステップSa4で前記アドレスバッファABの内容をアドレスとしてワードデータのリードを開始する。第5ステップSa5ではリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。この時、特に制限はされないもののデータバッファRDBは、いわゆるファーストインファーストアウトとなっている。第6ステップSa6では、第3ステップSa3及び第5ステップSa5でデータバッファRDBに格納したデータの内24ビットをスタートアドレスとしてバスAに出力し、アドレスバッファABに転送するとともに、ALUで2を加算する。加算結果はプログラムカウンタPCに格納する。なお、第3ステップSa3でデータバッファRDBに格納されたデータの上位8ビットは、前記の通り、無視される。第7ステップSa7で前記アドレスバッファABの内容をアドレスとしてプログラムの先頭命令のリードをワードで開始する。第8ステップSa8ではリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。同時にプログラムカウンタPCの内容をバスAに出力し、アドレスバッファABに転送し、さらにALUで2を加算する。加算結果はプログラムカウンタPCに格納する。第9ステップSa9で前記アドレスバッファABの内容をアドレスとしてプログラムの3バイトめ・4バイトめの命令のリードをワードで開始する。さらに、第8ステップSa8でデータバッファRDBに格納した命令を制御部に転送し、解読を開始する。次のステップからは、プログラムの先頭命令である、第9ステップSa9で解読を開始した命令に基づいた動作を開始する。第9ステップSa9でリードを開始したワードデータはこの命令実行中にデータバッファRDBに格納する。
【0035】
イミディエイトデータをレジスタに転送する命令の処理フローが図9に示されており、例えば、データ34を汎用レジスタR0Lに転送する命令(MOV.B#34,R0L)は、特に制限はされないものの、命令コード中にイミディエイトデータ34を含み2バイトの命令長であるとする。本命令は、第1ステップSb1では、直前に実行した命令または例外処理の最後のステップで開始したリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。同時に、プログラムカウンタPCの内容をバスAに出力し、アドレスバッファABに転送し、さらにALUで2を加算する。加算結果はプログラムカウンタPCに格納する。第2ステップSb2で、アドレスバッファABに格納された内容に基づいて、本命令から3バイトめ・4バイトめの命令のリードをワードで開始する。同時に、既にデータバッファRDBに格納してある本命令コード中に含まれるイミディエイトデータ34をバスAに出力し、ALUを通過し、ALUからバスCに出力してレジスタR0Lに転送する。ALUを通過した時にデータを検査し、コンディションコードレジスタのZ及びNフラグに反映する。さらに、第1ステップSb1でデータバッファRDBに格納した命令を制御部CONTに転送し、解読を開始する。次のステップからは、次の命令である、第2ステップSb2で解読を開始した命令に基づいた動作を開始する。第2ステップSb2でリードを開始したワードデータはこの命令実行中にデータバッファRDBに格納する。
【0036】
ディスプレースメント付レジスタ間接アドレッシングモードでメモリの内容をレジスタ転送する命令の処理フローが図10に示されており、例えば、レジスタR0(R0L,R0H)と拡張レジスタE0で示されるアドレスに相対値1234を加えたアドレスからバイトデータを汎用レジスタR1Hに転送する命令{MOV.B @(1234,R0),R1H}は、特に制限はされないものの、命令コード中にディスプレースメント1234を含み4バイトの命令長であるとする。本命令は、第1ステップSc1で、直前に実行した命令または例外処理の最後のステップで開始したリード動作を終了し、リードしたワードデータ(本命例の第3・第4バイト)をデータバッファRDBに格納する。同時にプログラムカウンタPCの内容をバスAに出力し、アドレスバッファABに転送し、さらにALUで2を加算する。加算結果はプログラムカウンタPCに格納する。第2ステップSc2で、アドレスバッファABに格納された内容に基づいて、本命令から3バイトめ・4バイトめの命令である、次の命令のリードをワードで開始する。同時に既にデータバッファRDBに格納してある本命令コード中に含まれるディスプレースメント1234をバスBに,汎用レジスタR0と拡張レジスタE0の内容をバスAに出力し、ALUでこれらの加算を行ない、ALUからバスCに出力してテンポラリレジスタTRに転送する。加算に際してディスプレースメントは001234に拡張される。第3ステップSc3でリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。同時にテンポラリレジスタTRの内容をバスAに出力しアドレスバッファABに転送する。第4ステップSc4で前記アドレスバッファABの内容をアドレスとしてデータのリードをバイトで開始する。第5ステップSc5でリード動作を終了し、リードしたバイトデータをデータバッファRDBに格納する。前記同様にプログラムカウンタPCの内容をアドレスバッファABに転送し、2を加算する。第6ステップSc6で前記アドレスバッファABの内容をアドレスとしてデータのリードをバイトで開始する。第5ステップSc5でデータバッファRDBに格納したデータをバスAに出力し、ALUを通過し、ALUからバスCに出力してレジスタR1Hに転送する。ALUを通過した時にデータを検査し、コンディションコードレジスタCCRのZ及びNフラグに反映する。第3ステップSc3でデータバッファRDBに格納した命令を制御部CONTに転送し、解読を開始する。次のステップからは、前記同様に、次の命令の動作を開始する。
【0037】
ポストインクリメントレジスタ間接アドレッシングモードでメモリの内容をレジスタ転送する命令の処理フローが図11に示されており、例えば、汎用レジスタR7(R7L,R7H)と拡張レジスタE7で示されるアドレスから拡張データを汎用レジスタR2(R2L,R2H)と拡張レジスタE2に転送する命令{MOV.L @R7+,R2}は、特に制限はされないものの、2バイトの命令長であるとする。本命令は、第1ステップSd1で、直前に実行した命令または例外処理の最後のステップで開始したリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。第2ステップSd2で、レジスタR7と拡張レジスタE7の内容をバスAに出力し、アドレスバッファABに転送し、同時にALUで2を加算すし、結果を汎用レジスタR7と拡張レジスタE7に格納する。第3ステップSd3で前記アドレスバッファABの内容をアドレスとしてデータのリードをワードで開始する。第4ステップSd4でリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。同時に汎用レジスタR7と拡張レジスタE7の内容をバスAに出力し、アドレスバッファABに転送し、同時にALUで2を加算する。加算結果は汎用レジスタR7と拡張レジスタE7に格納する。第5ステップSd5で前記アドレスバッファABの内容をアドレスとしてデータのリードをワードで開始する。第6ステップSd6でリード動作を終了し、リードしたワードデータをデータバッファRDBに格納する。前記同様にプログラムカウンタPCの内容をアドレスバッファABに転送し、2を加算する。第7ステップSd7で前記アドレスバッファABの内容をアドレスとしてデータのリードをワードで開始する。データバッファRDBに格納したデータの内24ビットをバスAに出力し、ALUを通過し、ALUからバスCに出力して汎用レジスタR2と拡張レジスタE2に転送する。なお、第4ステップSd4でデータバッファRDBに格納されたデータの上位8ビットは、無視される。特に制限はされないものの、ALUを通過した時にデータを検査せず、コンディションコードレジスタCCRのフラグは変化しない。第1ステップSd1でデータバッファRDBに格納した命令を制御部CONTに転送し、解読を開始する。次のステップからは、前記同様に、次の命令の動作を開始する。
【0038】
図31には前記CPU1が実行可能な算術演算命令の一覧が示される。その算術演算は、具体的には加算・減算・比較を含む。
【0039】
加算には機能別にADD、ADDC、ADDE命令があり、さらに、ADD命令ではバイトサイズ、ワードサイズがある。ADD命令では、指定されたソースデータ(イミディエィトまたはレジスタの内容)とディスティネーションデータ(レジスタの内容)を加算し、結果をディスティネーションのレジスタに格納するとともに、結果をC,V,Z,Nの各フラグに反映する。特に制限はされないものの、メモリの内容とレジスタの内容の直接的な演算若しくは1命令による演算は行なわない。
【0040】
ADD命令では、データ演算命令としての性質上、バイトサイズ、ワードサイズがある。ADDC命令もADD命令と同様であるが、加算はキャリフラグCを含めて行なわれる。ADDC命令は、データ演算命令としての性質上、バイトサイズ、ワードサイズがあるのが望ましいが、ワードサイズのADDC命令は25ビット以上のデータを扱わない限り必要ない。これに対してADDC命令をバイトサイズのみとすれば、CPU1の命令フォーマット・内部制御方式の単純化を行なって、論理的・物理的規模を縮小可能である。前記必要性と前記縮小規模を考慮して、特に制限はされないものの、ADDC命令をバイトサイズのみとしている。ADDE命令はアドレスデータ計算用に使用すべきものであり、汎用レジスタと拡張レジスタを組合せて加算を行なう。ADDE命令は、アドレスデータ演算命令としての性質上、アドレスワードサイズのみとされ、フラグの変化は禁止されている。減算についても同様である。
【0041】
比較には、キャリ付きの比較命令は存在しない。SUBE命令はキャリ、ゼロ、ネガティブフラグのみ変化し、オーバフローフラグは変化しない。アドレスデータには符号を考慮する必要がないためである。
【0042】
なお、#x:8、#x:16はそれぞれ8ビット、16ビットイミディエィトデータ、Rd8、Rd16は8ビット、16ビット汎用レジスタ、Ed:Rd:16は拡張レジスタと汎用レジスタの内容などを示す。
【0043】
図12にはCPU1のレジスタ構成の第2の実施例が示される。CPU1は8本の16ビット長の汎用レジスタR0(R0L,RH)〜R7(R7L,R7H)と、5本の8ビット長の拡張レジスタE01,E23,E45,E6,E7と、24ビット長のプログラムカウンタPCと、8ビット長のコンディションコードレジスタCCRとを有している。
【0044】
汎用レジスタをアドレスレジスタとして使用する場合は、汎用レジスタの内容16ビットをアドレスの下位16ビットとし、対応する拡張レジスタの内容をアドレスの上位8ビットとして、合計24ビットのアドレスを生成するものである。アドレッシングモードあるいは実効アドレスの計算方法は第1の実施例と同様である。本実施例では汎用レジスタR0とR1、R2とR3、R4とR5に対してそれぞれ1個の拡張レジスタE01、E23、E45が対応し、第1実施例に対して拡張レジスタの数を減らしている。例えばR0を指定してポストインクリメントレジスタ間接を使用すると、拡張レジスタE01とR0の内容が書き変えられる。次にR1を指定してポストインクリメントレジスタ間接を使用すると、拡張レジスタE01とR1の内容が書き変えられる。このため、ユーザは、特に制限はされないものの、汎用レジスタR0をデータレジスタとして、R1をアドレスレジスタとして使用する。したがって、この場合には、拡張レジスタE01は、つねに汎用レジスタR1と組合せて使用し、汎用レジスタR0とは組合せては使用しないようにすることになる。このようにユーザのプログラム作成上の制約が発生することになるが、すべての汎用レジスタをアドレスレジスタとして使用し、データレジスタとしては使用しない応用例は存在しないと考えられるので、上記制約は実質上の問題とならない。
【0045】
図13にはCPU1のレジスタ構成の第3の実施例が示される。CPU1は、第2の実施例同様に、8本の16ビット長の汎用レジスタR0(R0L,RH)〜R7(R7L,R7H)と、5本の夫々8ビット長の拡張レジスタE3〜E7と、24ビット長のプログラムカウンタPC、8ビット長のコンディションコードレジスタCCRとを有している。
【0046】
汎用レジスタをアドレスレジスタとして使用する場合は、汎用レジスタの内容16ビットをアドレスの下位16ビットとし、対応する拡張レジスタの内容をアドレスの上位8ビットとして、合計24ビットのアドレスを生成するものである。アドレッシングモードあるいは実効アドレスの計算方法は第1の実施例と同様である。本実施例では汎用レジスタR0、R1、R2に対して対応する拡張レジスタが存在しない。これらの汎用レジスタをアドレスレジスタとして指定する場合には上位8ビットを自動的に拡張して24ビットのアドレスとするようになっている。特に制限はされないものの、汎用レジスタR0の場合には、上位8ビットは自動的にR0のビット15の内容と同一となる。汎用レジスタR1の場合には、上位8ビットは自動的に全ビット0となる。また、汎用レジスタR2の場合には上位8ビットは自動的に全ビット1となる。
【0047】
図14には図13の実施例における汎用レジスタR0、R1、R2をアドレスレジスタとして指定する場合におけるアドレスの拡張可能な範囲が示される。
【0048】
汎用レジスタR0の場合には、24ビットアドレスとしての上位8ビットは自動的にR0のビット15の内容と同一とされ、これにより、H’000000〜H’007FFFとH’FF8000〜H’FFFFFFの範囲が指定される。汎用レジスタR1の場合には、上位8ビットは自動的に全ビット0とされ、これにより、H’000000〜H’00FFFFの範囲が指定される。また、汎用レジスタR2の場合には上位8ビットは自動的に全ビット1とされ、これにより、H’FF0000〜H’FFFFFFの範囲が指定される。これらのH’000000〜H’00FFFFとH’FF0000〜H’FFFFFFの範囲に使用頻度の高いプログラムやデータ領域を配置すれば、それらはリニアなアドレス範囲でアクセス可能にされる。
【0049】
図15には、CPU1のレジスタ構成の第4の実施例が示される。CPU1は、第2の実施例同様に、8本の夫々16ビット長の汎用レジスタR0(R0L,RH)〜R7(R7L,R7H)と、5本の夫々8ビット長の拡張レジスタE01,E23,E45,E6,E7と、24ビット長のプログラムカウンタPCと、8ビット長のコンディションコードレジスタCCRとを有している。本実施例の汎用レジスタと拡張レジスタは、互いに独立とされ、アドレス計算時にキャリまたはボローの伝播が禁止されている。プログラムカウンタPCは前記同様に24ビットのレジスタとして使用できる。
【0050】
本実施例によれば、24ビットのプログラムカウンタPCを有するから、プログラムに関してはページ境界をいっさい考慮しなくてもよい。但し、データがページ境界を超えないようにプログラム作成者が管理しなければならないが、データの管理はプログラムの管理より容易であると考えられる。汎用レジスタと拡張レジスタを独立とすることで、24ビットディスプレースメントや24ビット絶対的データの転送など比較的命令長の長い命令を実行することはできないが、その反面、制御部CONTの論理的並びに物理的規模を縮小できる。
【0051】
汎用レジスタR7と拡張レジスタE7をいわゆるスタックポインタとして使用する場合には、この間のキャリまたはボローの伝播を許可してもよい。すなわち、サブルーチンコール命令や割込み処理時などに、暗黙的にスタックポインタ(汎用レジスタR7と拡張レジスタE7)を使用する場合には、汎用レジスタR7と拡張レジスタE7の間のキャリまたはボローの伝播を許可するものである。
【0052】
上記第1乃至第4実施例のレジスタ構成で説明したように、汎用レジスタ・拡張レジスタを設け、16Mバイトのアドレス空間を使用可能とした場合、主要な演算はレジスタ間で行い、メモリとレジスタとの間の演算は直接行わない即ち1命令では行わない命令体系とするのが得策である。16Mバイトのアドレス空間を有効に利用するには、前記のような複雑なアドレッシングモードが必要である。演算命令の多くにこのような複雑なアドレッシングモードを実行可能とすると、制御部CONTの構成が複雑になり、論理的・物理的規模を最小限とする目的に反してしまうためである。メモリのアクセスには、前記の通り、種々のアドレッシングモードを有する転送命令でレジスタとのデータの転送を行い、レジスタ上で演算などのデータ処理を行うものとすればよい。レジスタが8ビット長16本分として使用でき、ある処理に必要なデータはレジスタ上に置くことができる。少なくとも、使用頻度の高いデータの大部分はレジスタ上に置くことができる。したがって、処理プログラムの増加や実行速度の低下といった不都合が発生する場合は少ないと考えられる。
【0053】
メモリに対する演算を行う必要がある命令としては、ビット操作命令がある。これらは、バイト単位で割り当てられたアドレスの第nビットとして指定されるものの、バイト単位で扱われるデータではなく、それぞれのビットが独立した機能を有している。たとえば、タイマの動作を制御するようなレジスタのような場合、第0ビット・第1ビットでタイマのクロックを選択し、第2ビットではタイマカウンタと比較レジスタの内容が一致した時、タイマカウンタをクリアするかしないかを指定し、第3ビットでは前記一致した時、割込みを発生するかしないかを指定するものである。これらは1ビット単位で1にセットしたり、0にクリアしたりする必要がある。あるいは入力ポートの所定の1ビットが0であるか1であるかによってCPU1の処理プログラムが異なる場合、前記1ビットのデータを判定する必要がある。かかる1ビットデータは前記タイマ制御用レジスタに対して直接演算しなければならない。バイト単位で一旦レジスタに転送した後にビット操作を行うと、前記転送とビット操作の間に割込みが入ってしまい、例えば前記入力ポートの値が変化してしまうような不都合が発生するためである。従って本実施例におけるCPU1は、汎用レジスタのような内部のレジスタと周辺回路の制御用レジスタのような外部レジスタとの間での直接的な演算のためのビット操作命令はサポートしている。尚、このようなビット操作命令の対象となるアドレスは固定的で、複雑なアドレッシングモードは必要ではない。絶対アドレスと、最低限レジスタ間接を実行できればよい。しかも絶対アドレスの場合も全アドレス空間を使用できる必要はなく、前記タイマ・入出力ポートなどの存在するアドレス範囲にのみ使用できれば十分と考えられる。このようなアドレス範囲の指定に使用できる絶対アドレスは8ビットで十分である。16ビットとすれば使用可能なアドレス範囲が広がるが、命令長が長くなり制御が複雑になってしまう。少なくとも24ビットとして16Mバイトの全空間を使用可能としなければならない場合は非常に稀であると考えられる。したがって、1ビット又は数ビットのビット操作命令を直接外部周辺回路との間で行っても、これによって制御部の規模や命令の種類が極端に増大する虞はない。
【0054】
図16には本実施例のマイクロコンピュータ100におけるアドレスマップの一例が示される。
【0055】
内蔵ROM2はアドレスH’00000から配置され、内蔵周辺機能(タイマ4,SCI5など)と内蔵RAM3はH’FF800以降に配置されており、これらの間は外部空間とされる。内蔵周辺機能と内蔵RAM3をアドレス空間の中途、例えば、H’0F800からH’0FFFFなどに配置することができるが、この場合には外部空間が2ヵ所に分離される、また、内蔵ROM2に書き込んだプログラムと外部空間に存在するプログラムを連続的に使用できず、本発明の目的に反する。従って主としてプログラム領域とされるべき内蔵ROM2と、主としてデータ領域とされるべき内蔵周辺機能及び内蔵RAM3は互いにアドレス空間の反対に配置し、この間は連続した空間とすべきである。このようにすることにより、マイクロコンピュータ100が適用されるシステムに応じてデータ領域やプログラム領域が大きくなっても、夫々を容易に連続したアドレス空間に確保する事ができるようになり、システム上、データやプログラムを管理したり、それらをアクセスするための手順が簡素化されたりする。尚、内蔵ROM2はリセット処理に際してのスタートアドレスまたはスタートアドレスを格納したアドレス(スタートベクタ)を含む。
【0056】
以上の実施例では、アドレス空間16Mバイトであるとしたが、CPU1の機能としては16Mバイトのアドレス空間をもちながらも、シングルチップコンピュータ100全体としては各機能ブロックの組合せなどにより、16Mバイトのアドレス空間は必要とせず、かつ入出力ポートの端子数を多く必要とする場合が考えられる。このような場合、アドレス端子24本を持つことは得策ではなく、アドレス端子数を減らし、入出力ポート端子数を増加させなければならない。例えばアドレス端子を20本とすると、実際に利用できるアドレス空間は1Mバイトとなる。
【0057】
図17にはシングルチップマイクロコンピュータ100に含まれる機能ブロック選択回路の一例が示される。
【0058】
同図に示される機能ブロック選択回路は、特に制限はされないものの、CPU1が出力する24ビットのアドレス信号A0〜A23をデコードして各機能ブロックの選択信号を生成し、ゲートG1,G2,G3,G4,G6,G9,及びデコーダDEC1によって構成される。シングルチップマイクロコンピュータ100に含まれる各機能ブロックにはアドレス信号A0〜A23の全ビットは入力されず、当該機能ブロックが選択されたことを示す機能ブロック選択信号と、当該機能ブロックの中のいずれのアドレスが選択されたかを示す下位アドレスビットが入力されるものである。本例によれば、ROM2の容量が32kバイトであるとすると、ROM2には1本の機能ブロック選択信号とアドレス信号A0〜A14の下位15ビットが入力される。
【0059】
上記機能ブロック選択回路により図16のアドレスマップを実現する場合、アドレスの下位16ビットを入力したデコーダDEC1において、H’0000〜7FFFを検出するとBSEL1信号が1レベルとされる。さらにゲートG6において上位アドレスがH’00を検出すると、ゲートG6、G1の出力、すなわち、内蔵ROM2の選択信号が1レベルとなってがROM2にが選択される。RAM3および内蔵周辺機能についても同様である。とくに制限はされないものの、これらのいずれもが選択されないと外部空間が選択される。
【0060】
図18には外部アドレス端子を20本とし、実際に利用できるアドレス空間を1Mバイトとするようなマイクロコンピュータのアドレスマップが示される。
【0061】
斯るシングルチップマイクロコンピュータのアドレスマップは、前記の通り、主としてプログラム領域とされるべき内蔵ROM2と、主としてデータ領域とされるべき内蔵周辺機能及び内蔵RAM3とを互いにアドレス空間の反対に配置し、この間を連続した空間とするには、図18の(a),(b)の2通りのマッピングが考えられる。(a)の場合には内蔵周辺機能及び内蔵RAMを16Mバイトの空間のH’FFFFFF側に配置している。(b)の場合には内蔵周辺機能及び内蔵RAM3を1Mバイトの空間のH’FFFFF側に配置している。図18からも明らかなように、(a)の方が利用可能な外部アドレス空間は大きくなるが、その反面、データ領域は外部アドレス空間と内部アドレス空間とで分離される。
【0062】
図19には図18のアドレスマップを実現する機能ブロック選択回路が示される。
【0063】
同図に示される機能ブロック選択回路は、ゲートき1〜G10、デコーダDEC1、及びレジスタREGによって構成され、特に制限はされないものの、レジスタREGの内容によって、図18の(a),(b)の2種類のアドレスマップを選択する。レジスタREGの内容を1とするとゲートG7、G10の出力がアドレスの上位4ビットに依存せず常に1となり、図18の(b)に示されるアドレスマップとなる。レジスタREGの内容を0とすると図18の(a)に示されるアドレスマップとなる。特に制限はされないものの、アドレスマップの予約済みの空間は使用禁止とされる。レジスタREGはCPU1がリード/ライト可能なもののほか、外部端子によって設定可能としてもよいし、内部で電源に接続して固定的に設定するものとしてもよい。
【0064】
図20には図18の(b)に示されるアドレスマップを実現する機能ブロック選択回路が示される。この機能ブロック選択回路は、図19においてレジスタREGを1レベルにし、ゲートG7,G10を削除して成る構成と等価である。内蔵RAM3と連続した外部空間を使用可能になる。アドレスバス4本及び上記ゲートG5,G7〜G8,G10などを削除でき、論理規模・物理的規模を縮小できる。
【0065】
図21には前記各種汎用レジスタ・拡張レジスタ・プログラムカウンタ・テンポラリレジスタの具体的な論理回路例が示される。
【0066】
図21には代表的に3ビットの構成が示されている。レジスタはフリップフロップ回路FFで構成され、バスCからデータの入力が可能とされ、バスA・Bに出力が可能とされている。データの入出力は制御部からの信号に基づいて、システムクロックφ(図における記号*はローイネーブルであることを意味する)がロウレベルの期間に行なわれる。汎用レジスタRiH、RiL、及び拡張レジスタEiには夫々独立した制御信号AH,BH,CH、AL,BL,CL、AE,BE,CEが与えられ、それぞれ独立した入出力が可能とされている。プログラムカウンタPCは24ビット長固定のため、AEとAHとAL、BEとBHとBL、CEとCHとCLはそれぞれ共通の信号APC、BPC、CPCとして与えられ、一括した入出力を行う。テンポラリレジスタTRについては、その使用方法に依存するが、汎用レジスタ及び拡張レジスタと同様とする。
【0067】
特に制限はされないものの、それぞれのバスA,B,Cは負論理とされている。また、バスA及びBはシステムクロックφがハイレベルの期間にPチャネル型MOSトランジスタQpによりハイレベル(0レベル)に固定される。システムクロックφがロウレベルの期間に、いずれのブロックもデータを出力しなければハイレベルが保持される。
【0068】
図22には図10で説明した前記{MOV.B @(1234,R0),R1H命令}実行時の汎用レジスタ及び拡張レジスタの一例動作タイミングチャートが示される。
【0069】
システムクロックφに同期した第1サイクル即ち前記第1ステップSc1と第5サイクルとしての第5ステップSc5で制御信号APCが1レベルとなり、プログラムカウンタPCの内容がAバスに出力される。同時に制御信号CPCが1レベルとなり、Cバスの内容がプログラムカウンタPCに入力される。特に制限はされないもののプログラムカウンタPCの出力はいわゆるマスタ・スレーブとなっているためAバスにはCバスの内容ではなく、直前のプログラムカウンタPCの内容が出力される。第2ステップSc2で拡張レジスタE0と汎用レジスタR0との制御信号AE0、AH0、AL0が1レベルとなり、拡張レジスタE0と汎用レジスタR0の内容がAバスに出力される。第6ステップSc6で汎用レジスタR1の制御信号AH1が1レベルとなり、Cバスの内容が汎用レジスタR1Hに出力される。制御信号AE1、AL1は0レベルであり、拡張レジスタE1と汎用レジスタR1Lとの内容は保持される。
【0070】
図23には図11に示される前記{MOV.L @R7+,R2}命令実行時の汎用レジスタの一例動作タイミングチャートが示される。
【0071】
システムクロックφに同期した第2サイクルとしての第2ステップSd2で拡張レジスタE7と汎用レジスタR7の制御信号AE7、AH7、AL7が1レベルとなり、拡張レジスタE7と汎用レジスタR7との内容がAバスに出力される。同時に制御信号CE7、CH7、CL7が1レベルとなり、Cバスの内容が拡張レジスタE7と汎用レジスタR7とに入力される。前記同様に汎用レジスタの出力はいわゆるマスタ・スレーブとなっているためAバスにはCバスの内容ではなく、直前のプログラムカウンタPCの内容が出力される。第6ステップSd6で制御信号APCが1レベルとなり、プログラムカウンタPCの内容がAバスに出力される。同時に制御信号CPCが1レベルとなり、Cバスの内容がプログラムカウンタPCに入力される。第7ステップSd7で拡張レジスタE2と汎用レジスタR2との制御信号CE2、CH2、CL2が1レベルとなり、Cバスの内容が拡張レジスタE2と汎用レジスタR2に入力される。
【0072】
図24には図7に示されるリードデータバッファRDB(RDBL,RDBH,RDBE)の具体的な一例論理回路図画示される。
【0073】
リードデータバッファはバスA及びBとシングルチップマイクロコンピュータ100の含まれる内部データバスL(D0〜D7),H(D8〜D15)に結合されてなる第1のリードバッファ部分RDB1(RDB1L,RDB1H)、バスA及びBと第1のリードバッファ部分RDB1とに結合されてなる第2のリードバッファ部分RDB2(RDB2L,RDB2H)、バスA及びBと第2のリードバッファ部分RDB2とに結合されてなる拡張リードバッファ部分RDBE、CPU1の制御部CONTと第2のリードバッファ部分RDB2とに結合されてなる命令リードバッファ部分RDBI(RDBIL,RDBIH)から構成される。第1のリードバッファ部分RDB1と第2のリードバッファ部分RDB2と命令リードバッファ部分RDBIはいずれも16ビットである。拡張リードバッファ部分RDBEは8ビットである。第1のリードバッファ部分RDB1と第2のリードバッファ部分RDB2は、バスA及びBのビット15〜0に接続されている。特に制限はされないものの、拡張リードバッファ部分RDBEは、バスA及びBのビット23〜16,及びビット7〜0に接続されている。リードされたデータはまずシステムクロックφがロウレベルの期間に第1のリードバッファ部分RDB1に格納され、システムクロックφがハイレベルの期間に第2のリードバッファ部分RDB2に転送される。リードしたデータが後で必要になる場合には、次のデータをリードする前に、前記第2のリードバッファ部分RDB2から拡張リードバッファ部分RDBEまたは命令リードバッファ部分RDBIに転送され、保持される。
【0074】
図25には図10で説明した前記{MOV.B @(1234,R0),R1H}命令実行時のリードデータバッファの一例動作タイミングチャートが示される。
【0075】
第1ステップと第3ステップと第5ステップで制御信号1が1レベルとなり、データバスD0〜D15の内容が第1のリードバッファ部分RDB1に格納される。これらの内容は次のステップで第2のリードバッファ部分RDB2に転送される。第2ステップで制御信号2が1レベルとなり、第2のリードバッファ部分RDB2に保持されているディスプレースメントがBバスに出力される。第3ステップで制御信号4が1レベルとなり、第2のリードバッファ部分RDB2に保持されている次の命令の下位8ビットの内容が拡張リードバッファ部分RDBEに転送される。第5ステップで制御信号7が1レベルとなり、第2のリードバッファ部分RDB2に保持されている次の命令のの内容が命令リードバッファ部分RDBIに転送される。制御部CONTでは第6ステップからこの内容を使用し、次の命令の解読を開始する。第6ステップで制御信号3が1レベルとなり、第2のリードバッファ部分RDB2に保持されているリードデータがAバスに出力される。
【0076】
図26には図11で説明した前記{MOV.L @R7+,R2}命令実行時における図24のリードデータバッファの一例動作タイミングチャートが示される。
【0077】
第1ステップと第4ステップと第6ステップで制御信号1が1レベルとなり、データバスD0〜D15の内容が第1のリードバッファ部分RDB1に格納される。これらの内容は次のステップで第2のリードバッファ部分RDB2に転送される。第2ステップで制御信号7が1レベルとなり、第2のリードバッファ部分RDB2に保持されている次の命令の内容が命令リードバッファ部分RDBIに転送される。制御部CONTでは第7ステップからこの内容を使用し、次の命令の解読を開始する。第6ステップで制御信号4が1レベルとなり、第2のリードバッファ部分RDB2に保持されているリードデータが拡張リードバッファ部分RDBEに転送される。第7ステップで制御信号3、5が1レベルとなり、第2のリードバッファ部分RDB2と拡張リードバッファ部分RDBEに保持されている24ビットのリードデータがAバスに出力される。
【0078】
図27にはアドレスバッファAB(ABL,ABH,ABE)の具体的な一例論理回路が示される。同図において、アドレスバッファABの各ビットはフリップフロップ回路MAB1、MAB2で構成され、フリップフロップ回路MAB1はバスAとフリップフロップ回路MAB2に接続され、フリップフロップ回路MAB2はフリップフロップ回路MAB1とアドレスバスに接続されている。フリップフロップ回路MAB1のAバスからのデータの入力は制御信号が1レベルのとき、システムクロックφがロウレベルの期間に行なわれる。フリップフロップ回路MAB1の内容はフリップフロップ回路MAB2にシステムクロックφがハイレベルの期間に転送されアドレスバスに出力される。
【0079】
図28には図10で説明した前記{MOV.B @(1234,R0),R1H}命令実行時における図27のアドレスバッファの一例動作タイミングチャートが示される。第1ステップと第3ステップと第5ステップで制御信号が1レベルとなり、Aバスの内容がフリップフロップ回路MAB1に格納される。これらの内容は次のステップでフリップフロップ回路MAB2に転送され、アドレスバスに出力される。
【0080】
図29にはアドレスバッファABの変形例が示される。図27のアドレスバッファに対し、フリップフロップ回路MAB1とMAB2の間に、加算器例えばインクリメンタINCが付加されており、定数値2を加算できる。24ビットのデータをアクセスするためには16ビット単位のアクセスを2回に分けて行うため、1回目のアクセスの後、アドレスに2を加算しなければならないが、この加算に前記インクリメンタINCを使用する。汎用のALUを使用する場合に比べてハードウェア規模が増大するが、汎用の演算器を使用したときに一旦計算したアドレスを例えばテンポラリレジスタなどに一時的に確保した後で前記テンポラリレジスタの内容を読み出してALUで2を加算し当該加算結果をアドレスバッファに転送するような手間を省くことができ、制御部CONTの規模を縮小できる。これらアドレスバッファの形式はCPUの全体的な構成に基づいて選択すればよく、例えば、実行部EXEの規模に比べて制御部CONTの規模が大きくなり過ぎてチップレイアウト上などで好ましくないと考えられる場合には図29のアドレスバッファを採用すればよい。
【0081】
図30には図10で説明した前記{MOV.B @(1234,R0),R1H}命令実行時における図29のアドレスバッファの一例動作タイミングチャートが示される。第1ステップと第5ステップで制御信号A1が1レベルとなり、Aバスの内容がフリップフロップ回路MAB1に格納される。これらの内容は次のステップでフリップフロップ回路MAB2に転送され、アドレスバスに出力される。第3ステップの後半から制御信号A2が1レベルとなり、フリップフロップ回路MAB1に2を加えた内容が第4ステップでフリップフロップ回路MAB2に転送され、アドレスバスに出力される。
【0082】
上記実施例によれば以下の効果を得るものである。
【0083】
(1)8ビットCPU1に内蔵の既存の16ビットの汎用レジスタにアドレス専用の拡張レジスタを追加し、追加された拡張レジスタを含めた全体をアドレスデータとして一括把握して、メモリなどをアクセス可能にし、このとき、アドレス演算は拡張レジスタ及びこれに対応する汎用レジスタの双方を一単位として行い、アドレスデータを保持する汎用レジスタの更新は対応する拡張レジスタと共に行い、また、拡張レジスタも含めた全体で一単位のデータとして把握して、アドレス演算で発生するキャリーやボローを処理するから、16ビットのアドレスレジスタを用いる場合に比べてリニアに利用可能なアドレス空間を64kバイトから最大限16Mバイトまで拡張することができる。更に、ページレジスタによる従来のアドレス空間拡張技術に比べて、プログラムやコンパイラの作成が容易になり、しかも種々のアドレス修飾も可能になって、アドレス空間の広さに見合うように相対的に豊富なアドレシングモードをサポートすることができるようになる。
【0084】
(2)更に、前記拡張レジスタはアドレス生成に用途を限定してあるから、実行可能な命令の種別若しくは組み合わせ数を、データ処理能力の極端な低下を招くことなく減らすことができ、CPUの論理的並びに物理的な規模の増大を抑制することができる。
【0085】
(3)リニアなアドレス空間の拡張と共にアドレシングモードを多様化するとき、その多様化に応じてアドレシングモードと命令との組み合わせも必然的に増大するが、このとき、アドレスデータ以外のデータを保持する汎用レジスタとCPUの外部との間では、ビット操作処理などを除いて、1つの命令で直接的な演算を不可能にすることにより、CPUの処理能力の極端な低下を抑制しつつ、前記組み合わせの増大によってCPUの論理的並びに物理的な規模が増大することを極力抑えることができる。
【0086】
(4)上記により、16ビットCPUと同等にアドレス空間を拡張しつつ、機器制御応用でシステム構成に必要なタイマやメモリなどの周辺機能を1チップに内蔵でき、機器制御応用のための所要のシステムをオンチップ化して所謂シングルチップマイクロコンピュータを実現することが容易になる。
【0087】
(5)前記拡張レジスタと汎用レジスタの全体をアドレスデータのために利用したときと前記汎用レジスタをその他のデータのために利用したときの機能の相違に鑑みて、CPUの内外において、拡張レジスタと汎用レジスタの全体を一括する全24ビットのデータ転送制御と、前記汎用レジスタを一括する全16ビットのデータ転送制御との双方が可能にされており、このとき、一組の前記拡張レジスタ及び汎用レジスタが保持するアドレスデータに基づいてCPU外部のアドレスを指定し、別の汎用レジスタとCPU外部との間でデータ転送制御することができる。
【0088】
(6)算術論理演算器は拡張レジスタ及び汎用レジスタの内容に対して、算術演算(本実施例においてはシフト演算も含む)、論理演算、比較等を行うが、当該算術論理演算器は、前記拡張レジスタ及び汎用レジスタの全体に対する24ビットのアドレスデータに対する算術的な演算を、1マシンサイクルで実行可能な24ビットの演算ビット数を有するから、一括把握されるアドレスデータの演算で生ずるキャリーやボローの処理を別のマシンサイクルを使って行う必要はなく、アドレス演算を効率的に行うことができる。
【0089】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0090】
例えば、CPU1のブロック構成・レジスタ構成・具体的な論理回路例などについては何ら限定されない。レジスタのビット数あるいはレジスタの本数などは任意に選択することもできる。アドレッシングモードと実効アドレスの計算方法についても種々の変形例を使用することができる。ALUは24ビット構成としたが、16ビット構成とし、24ビットデータは下位16ビットと上位8ビットの2回に分けて演算する構成とすれば、物理的規模を縮小できる。拡張レジスタは16ビット長としてもよい。また、上記実施例において拡張レジスタと汎用レジスタとの間で相互にデータ転送可能にすることができる。
【0091】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、その他のデータ処理装置に適用可能であり、データの処理能力に比べて処理可能なデータやプログラムの規模を相対的に優先させる条件のもの、また、CPUの論理的並びに物理的な規模の増大を抑えつつアドレス空間を拡張して有効な条件のものに広く適用することができる。
【0092】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0093】
すなわち、アドレスデータの保持には全体が使用されデータの保持にはその一部分が使用される所定ビット数のデータ保持手段を中央処理装置(CPU)に設けたから、リニアに利用可能なアドレス空間を拡張することができると共に、ページレジスタによる従来のアドレス空間拡張技術に比べて、プログラムやコンパイラの作成が容易になる。しかも種々のアドレス修飾も可能になって、アドレス空間の広さに見合うように相対的に豊富なアドレシングモードをサポートすることができるようになる。更に、データ保持手段の全体の利用はアドレス生成に用途限定してあるから、実行可能な命令の種別若しくは組み合わせ数を、データ処理能力の極端な低下を招くことなく減らすことができ、CPUの論理的並びに物理的な規模の増大を抑制することができる。
【0094】
アドレスデータ以外のデータを保持する汎用レジスタとCPUの外部との間では、ビット操作処理などを除いて、1つの命令で直接的な演算を不可能にすることによっても、CPUの論理的並びに物理的な規模が増大することを極力抑えることができる。
【0095】
データ処理能力に比べて処理可能なデータやプログラムの規模を相対的に優先させるような場合に、アドレス空間を拡張しつつ、機器制御応用でシステム構成に必要なタイマやメモリなどの周辺機能を1チップに内蔵でき、機器制御応用のための所要のシステムをオンチップ化して所謂シングルチップマイクロコンピュータを容易に実現することができる。
【図面の簡単な説明】
【図1】図1は本発明に係るデータ処理装置の一実施例であるシングルチップマイクロコンピュータのブロック図である。
【図2】図2はCPU1の内蔵レジスタの第1構成例を示す説明図である。
【図3】図3は汎用レジスタR0L,R0H〜R7L,R7Hと拡張レジスタE0〜E7のデータ構成例を示す説明図である。
【図4】図4はメモリのデータ構成例を示す説明図である。
【図5】図5はCPU1のアドレッシングモードと実効アドレスの計算手法の一例を示す説明図である。
【図6】図6はCPU1のアドレッシングモードと実効アドレスの計算手法の更に別の例を示す説明図である。
【図7】図7はCPU1内部の一例ブロック図である。
【図8】図8はCPU1によるリセット例外処理の一例フローチャートである。
【図9】図9はイミディエイトデータをレジスタに転送する命令の一例フローチャートである。
【図10】図10はディスプレースメント付レジスタ間接アドレッシングモードでメモリの内容をレジスタ転送する命令の一例フローチャートである。
【図11】図11はポストインクリメントレジスタ間接アドレッシングモードでメモリの内容をレジスタ転送する命令の一例フローチャートである。
【図12】図12はCPU1のレジスタ構成の第2例を示す説明図である。
【図13】図13はCPU1のレジスタ構成の第3例を示す説明図である。
【図14】図14は図13の例における汎用レジスタをアドレスレジスタとして指定する場合におけるアドレスの拡張可能な範囲を示す説明図である。
【図15】図15はCPU1のレジスタ構成の第4例を示す説明図である。
【図16】図16は本実施例のマイクロコンピュータ100における一例アドレスマップである。
【図17】図17はシングルチップマイクロコンピュータ100に含まれる機能ブロック選択回路の一例論理図である。
【図18】図18は外部アドレス端子を20本とし、実際に利用できるアドレス空間を1Mバイトとするようなマイクロコンピュータの一例アドレスマップである。
【図19】図19は図18のアドレスマップを実現する機能ブロック選択回路の論理図である。
【図20】図20は図18の(b)に示されるアドレスマップを実現する機能ブロック選択回路の論理図である。
【図21】図21は前記各種汎用レジスタ・拡張レジスタ・プログラムカウンタ・テンポラリレジスタの具体的な論理回路図である。
【図22】図22は図10に示される{MOV.B @(1234,R0),R1H}命令実行時の汎用レジスタ及び拡張レジスタの一例動作タイミングチャートである。
【図23】図23は図11に示される{MOV.L @R7+,R2}命令実行時の汎用レジスタの一例動作タイミングチャートである。
【図24】図24は図7に示されるリードデータバッファRDBの具体的な一例論理回路図である。
【図25】図25は図10に示される{MOV.B @(1234,R0),R1H}命令実行時のリードデータバッファの一例動作タイミングチャートである。
【図26】図26は図11に示される{MOV.L @R7+,R2}命令実行時における図24のリードデータバッファの一例動作タイミングチャートである。
【図27】図27はアドレスバッファABの具体的な一例論理回路である。
【図28】図28は図10に示される{MOV.B @(1234,R0),R1H}命令実行時における図27のアドレスバッファの一例動作タイミングチャートである。
【図29】図29はアドレスバッファABの変形例を示す論理図である。
【図30】図30は図10に示される{MOV.B @(1234,R0),R1H}命令実行時における図29のアドレスバッファの一例動作タイミングチャートである。
【図31】図31は前記CPU1が実行可能な算術演算命令の説明図である。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 タイマ
5 SCI
100 シングルチップマイクロコンピュータ
R0L,R0H〜R7L,R7H 汎用レジスタ
E0〜E7 拡張レジスタ
PC プログラムカウンタ
EXE 実行部
CONT 制御部
ABL,ABH,ABE アドレスバッファ
ALUL,ALUH,ALUE 算術論理演算器
RDBL,RDBH,RDBE リードデータバッファ

Claims (6)

  1. 第1及び第2内部アドレス空間を含む内部アドレス空間と、外部アドレス空間とを含むアドレス空間を有するマイクロコンピュータであって、
    前記外部アドレス空間は前記第1及び第2内部アドレス空間の間に配置され、
    前記マイクロコンピュータは、前記第1内部アドレス空間が2の乗バイトの空間の一端に配置されると共に前記第2内部アドレス空間が前記2の乗バイトの空間の他端に配置される第1モードと、前記第1内部アドレス空間が2のn乗バイトの空間の一端に配置されると共に前記第2内部アドレス空間が前記2のn乗バイトの空間の他の一端に配置される第2モードとを有し、
    前記mはnよりも大きい値を有し、
    前記第1内部アドレス空間はプログラムを格納するためのアドレス空間とされ、
    前記第2内部アドレス空間はデータを格納するためのアドレス空間とされることを特徴とするマイクロコンピュータ。
  2. 前記マイクロコンピュータは、内蔵ROMと、内蔵RAMと、内蔵周辺機能とを具備し、
    前記第1内部アドレス空間は、前記内蔵ROMのためのアドレス空間とされ、
    前記第2内部アドレス空間は、前記内蔵RAMと前記内蔵周辺機能のためのアドレス空間とされることを特徴とする請求項1記載のマイクロコンピュータ。
  3. 前記マイクロコンピュータは、前記第1モードとするか前記第2モードとするかを設定可能なレジスタを具備することを特徴とする請求項1又は2記載のマイクロコンピュータ。
  4. 前記マイクロコンピュータは、前記レジスタの設定に基づいて、前記第1モードとするか前記第2モードとするかを選択する選択回路を更に具備することを特徴とする請求項3記載のマイクロコンピュータ。
  5. 前記選択回路は、前記第2モードにおいて、アドレス信号の所定数のビットを固定する手段を有することを特徴とする請求項4記載のマイクロコンピュータ。
  6. 前記第1モードにおいて、前記第1内部アドレス空間と前記第2内部アドレス空間の間に使用禁止とされるアドレス空間を更に有することを特徴とする請求項1乃至5の何れか1項記載のマイクロコンピュータ。
JP2002297670A 2002-10-10 2002-10-10 マイクロコンピュータ Expired - Lifetime JP3669984B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002297670A JP3669984B2 (ja) 2002-10-10 2002-10-10 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002297670A JP3669984B2 (ja) 2002-10-10 2002-10-10 マイクロコンピュータ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP13204291A Division JP3486630B2 (ja) 1991-05-08 1991-05-08 データ処理装置

Publications (2)

Publication Number Publication Date
JP2003122629A JP2003122629A (ja) 2003-04-25
JP3669984B2 true JP3669984B2 (ja) 2005-07-13

Family

ID=19197263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002297670A Expired - Lifetime JP3669984B2 (ja) 2002-10-10 2002-10-10 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP3669984B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6055994B2 (ja) * 2012-03-21 2017-01-11 株式会社ソフイア 遊技機
JP6286725B2 (ja) * 2016-11-04 2018-03-07 株式会社ソフイア 遊技機
JP7291980B2 (ja) * 2017-05-16 2023-06-16 株式会社ユニバーサルエンターテインメント 遊技機

Also Published As

Publication number Publication date
JP2003122629A (ja) 2003-04-25

Similar Documents

Publication Publication Date Title
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
JP5199931B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
JP2504206B2 (ja) バスコントロ―ラ
US5666510A (en) Data processing device having an expandable address space
US8145804B2 (en) Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
JP2001092662A (ja) プロセッサコア及びこれを用いたプロセッサ
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
KR100272622B1 (ko) 데이타 처리장치
JP4004915B2 (ja) データ処理装置
JP3669984B2 (ja) マイクロコンピュータ
JP3432532B2 (ja) データ処理装置
JP3486630B2 (ja) データ処理装置
JP3154542B2 (ja) データ処理装置
JP4545777B2 (ja) データ処理装置
JP3539951B2 (ja) データ処理装置
JP4498338B2 (ja) データ処理装置
JP4553622B2 (ja) データ処理装置
WO2020175074A1 (ja) 中央演算処理装置
JP2696578B2 (ja) データ処理装置
JP2001100991A (ja) ディジタル信号処理装置
JP2004288203A (ja) プロセッサコア及びこれを用いたプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041227

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: 20050412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050412

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: 20080422

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

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: 20120422

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7