図1には、この発明に係るシングルチップマイクロコンピュータの一実施例のブロック図が示されている。同図の各回路ブロックは、公知のCMOS(相補型MOS)半導体集積回路の製造技術によって、単結晶シリコンのような1個の基板上において形成される。
この実施例におけるシングルチップマイクロコンピュータは、特に制限されないが、RISC(Reduced instruction set computer)タイプの中央処理装置CPUにより、高性能な演算処理を実現し、システム構成に必要な周辺機器を集積すると同時に、携帯機器応用に不可欠な低消費電力化を実現した、いわば新世代に向けられたシングルチップマイクロコンピュータである。
中央処理装置CPUは、RISCタイプの命令セットを持っており、基本命令はパイプライン処理を行って1命令1ステート(1システムクロックサイクル)で動作するので、命令実行速度が飛躍的に向上させることができる。そして、乗算器MULTを内蔵しており、後述するような3次元演算処理には不可欠な積和演算処理を高速に行うようにしている。
最少部品点数によりユーザーシステムを構成できるように内蔵周辺モジュールとして、割り込みコントローラINTC、直接メモリアクセス制御装置DMAC、除算器DIVU、タイマFRT,WDT、シリアルコミュニケーションインターフェイスSCIを内蔵している。さらに、キャッシュメモリ内蔵の外部メモリアクセスサポート機能により、グルーロジックなしにダイナミック型RAM(ラチンダム・アクセス・メモリ)、シンクロナスダイナミック型RAM、擬似スタティック型RAMと直接接続できるようにしている。
上記のような高速な中央処理装置CPUを中心にし、その性能を十分に発揮し、しかも低消費電力化を図りつつ、高性能、高機能又は多機能のために設けられた周辺モジュールを効率よく動作させるようにするため、内部バスは3つに分けられている。
第1のバスは、アドレスバスAB1とデータバスDB1から構成され、中央処理装置CPU、乗算器(積和演算器)MULT及びキャッシュメモリが接続される。上記乗算器MULTは、上記第1のバスのうちデータバスDB1にのみ接続され、中央処理装置CPUと一体的に動作して乗算と加算を行うようにされる。それ故、第1バス(AB1,DB1)は、主に中央処理装置CPUとキャッシュメモリとの間でのデータ転送に利用されるからキャッシュアドレスバスとキャッシュデータバスと呼ぶことができる。キャッシュメモリは、タグメモリTAGとデータメモリCDM及びキャッシュコントローラから構成される。
中央処理装置CPUの概略構成は次の通りである。内部は32ビット構成とされる。汎用レジスタマシンは、16本からなる32ビットの汎用レジスタと、3本からなる32ビットのコントロールレジスタと、4本からなる32ビットのシステムレジスタから構成される。RISCタイプの命令セットは、16ビット固定長命令によりコード効率化を図っている。無条件/条件分岐命令を遅延分岐方式とすることにより、分岐時のパイプラインの乱れを軽減している。命令実行は、1命令/1ステートとされ、28.7MHz動作時においては、35ns/命令のように高速とされる。中央処理装置CPUの性能は動作周波数と、1命令実行あたりのクロック数(CPI:Cycles Per Instru ction )で決まる。このうち動作周波数は、ゲーム機に組み込んだ際にテレビ用のビデオ信号処理系とクロックを共用するために、上記のように28.7MHzに設定にすることが便利である。ちなみに、NTSC方式のカラー・テレビで画像データをノンインタレース表示する場合には通常、ビデオ信号回路に色副搬送波(カラー・サブキャリヤ)周波数(約3.58Mzの8倍のクロック(28.6MHz)を使っている。
この実施例では、キャッシュメモリ(TAG,CAC,CDM)及び乗算器MULTしか接続されない第1バス(AB1とDB1)に中央処理装置CPUを接続するものであるので、バスの負荷容量が大幅に低減でき、上記のような高速動作を行う中央処理装置CPUのバス駆動回路の簡素化と、低消費電力化を図ることができる。
第2のバスは、アドレスバスAB2とデータバスDB2から構成され、除算器DIVU、直接メモリアクセス制御装置DMAC、外部バスインターフェイスOBIFが接続される。上記キャッシュメモリでのミスヒットのときに、中央処理装置CPUは、外部メモリをアクセスしてデータを取り込む必要がある。このため、第1のバスのアドレス信号を第2のバスに伝える機能が必要とされる。また、上記のように第1と第2のバスを分離すると、プログラムミス等によって直接メモリアクセス制御装置DMACがキャッシュメモリのデータメモリCDMの内容を勝手に書き換えてしまうという問題が生じる。
この実施例では、上記のようなキャッシュメモリでのミスヒットやキャッシュメモリのデータ破壊といった問題を解決するために、ブレークコントローラUBCが利用される。ブレークコントローラUBCは、本来プログラムデバッグ等に用いられるのであるが、上記第1バス及び第2バスに接続される必要があることを利用し、それにトランシーバ回路を設けて上記キャッシュメモリでのミスヒットのときに第1バスのアドレス信号を第2のバスのアドレスバスAB2に伝えて、外部メモリのアクセスを行うようにするものである。また、第2のバスでのアドレス信号を監視し、直接メモリアセクセス制御装置DMACによるデータメモリCDMへ書き換えを監視させる。
第3のバスは、アドレスバスAB3とデータバスDB3から構成され、特に制限されないが、フリーランニングタイマFRT、シリアルコミュニケーションインターフェイスSCI、ウォッチドッグタイマWDTと動作モードコントローラMCが接続される。
上記第3のバスは、上記第1や第2のバスに比べてバスサイクルが遅くされる。すなわち、これらの各周辺モジュールは、その動作速度を速くしても実質的な性能や機能が向上するものではないことに着目し、約10MHz程度で動作する既存のシングルチップマイクロコンピュータに搭載されているものを実質的にそのまま利用するものである。このようにすることにより、設計効率の向上を図ることができるとともに、動作周波数が低くされることによって低消費電力化とすることができる。
しかしながら、このようにすると中央処理装置CPU等とのデータの授受がそのままできなくなるので、バスステートコントローラBSCが設けられる。このバスステートコントローラBSCは、第3のバスから第2のバスに信号(データ信号)を転送するときには、そのまま信号の伝達を行う。これは、パルス発生回路CPGにおいて第1や第2のバスサイクルを決定するシステムクロックを分周して第3のバスサイクルに使用するクロックパルスを形成しているので、上記第3のバスの信号をそのまま第2のバスに伝えることができる。これに対して、バスステートコントローラBSCは第2のバスの信号を第3のバスに伝えるときに、必要に応じて信号を遅延させて第3のクロックパルスに同期化させて伝達するものである。
割り込みコントローラINTCの概略は、次の通りである。外部割り込みに関しては、後述するようなNMI、/IRL0〜/IRL3からなる5本の外部割り込み端子を持っている。/IRL0〜/IRL3端子による15外部割り込みレベル設定が可能にされる。この明細書及び一部の図面において、アルファベットの記号に付した/(スラッシュ)は、ロウレベルがアクティブレベルであるバー信号を表している。なお、図面では従来の記述方法により、バー信号はアルファベットによる信号名又は端子名の上に線が付されている。
内部割り込み要因は、直接メモリアクセス制御装置により2つ、除算器DIVUにより1つ、フリーランニングタイマFRTにより3つ、ウォッチドッグタイマWDTにより1つ、シリアルコミュニケーションインターフェイスSCIにより4つからなる11要因とされる。内部割り込み要因ごとにベクタ番号設定可能とされる。
以上のようなバスの分割方式を採ることにより、それぞれのバスの長さが短くされたり、あるいはそれに接続される素子を減らすことができるからバスの負荷容量が大幅に低減し、中央処理装置CPUの高速化と相俟って低消費電力で高速なデータ処理が可能になる。また、ユーザーブレークコントローラに直接メモリアクセス制御装置をDMACを設けた場合には、上記のようなバスの分離によって直接メモリアクセス制御装置DMACによる誤ったキャッシュデータの書き換えを検出する機能が設けられているので、信頼性を損なうことがない。
さらに、中央処理装置CPUやキャッシュメモリ及び直接メモリアクセス制御装置DMACのように、そのバスサイクルが直ちに性能や機能に影響を及ぼすものは、上記のような高速なバスサイクルのバスに接続し、フリーランニングタイマFRT、シリアルコミュニケーションインターフェイスSCI又はウォッチドッグタイマWDTのように、そのバスサイクルがデータ処理に直接影響を及ぼさないものは、低速のバスサイクルの第3のバスに接続するようにするものである。これにより、中央処理装置CPUの高速化に追従して、高速タイプの周辺モジュールを開発設計する必要がなく、既存のものをそのまま流用して用いることができるから、設計の効率化を図ることができるとともに、そこでの動作クロックを低くできるので低消費電力化を図ることができる。
図2と図3には、この発明に係るシングルチップマイクロコンピュータのピン配置図が示されている。図2には左半分が示され、図3には右半分が示されている。そして、両者の関連を明らかにするために、中央部分は図2と図3において重複するように示されている。この実施例では、144ピンからなるプラスチックQFPパッケージを用いている。
代表的な端子機能は、次の通りである。図2と図3において1つの端子に複数の意味を持たせ動作モードに応じて切り換えて使用するものを/(スラッシュ)により分けているが、この明細書では前記のようにバー信号の意味で用いているので、図2と図3の/は*に置き換えて説明するものである。
電源系としてVccは電源、Vssはグランド(接地電位)である。動作モード制御用として、MD0〜MD2はクロック選択、MD3とMD4はCS0空間のバスサイズ、MD5は後述するスレーブ/マスタモードの指定を行う。アドレスバス用として、A0〜A26はアドレス端子、データバス用として、D0〜D31は入出力データ端子である。
バス制御用として、/CS0〜/CS3はチップセレクト出力信号である。/BSはバススタート信号である。RD*/WRはリード*ライト信号である。/RAS*/CEは、ダイナミック型RAMとシンクロナスダイナミック型RAMを使用時のロウアドレスストローブ信号と擬似スタティック型RAM使用時チップネーブル信号である。/CAS*/OEは、シンクロナスダイナミック型RAM使用時のカラムアドレスストローブ信号と擬似スタティック型RAM使用時の出力イネーブル信号及びリフレッシュ制御信号である。
/WE0は基本インターフェイスのとき最下位バイト書き込み、/WE1は基本インターフェイスのとき3バイト目書き込み、/WE2は基本インターフェイスのとき2バイト目書き込み、/WE3は基本インターフェイスのとき最上位バイト書き込みを表し、この他にダイナミック型RAM使用時の各バイトの選択のCASとシンクロナスダイナミック型RAMを使用時の各バイトのマクスとしても使用される。/RDはリードパルス信号であり、デバイスのOE端子に接続される。/WAITは、ハードウエアウエイト入力である。/BENは外部データバッファイネーブル信号であり、データバッファの方向制御にはRD*/WRを用いる。
/BACK*/BRLSは、端子MD5によりスレーブモードにされたときにはバス使用許可入力(バスアクノリッジ信号)、マスターモードにされたときにはバス開放要求入力(バスレリーズ信号)として選択的に使用される。/BREQ*/BGRは端子MD5によりスレーブモードにされたときにはバス使用権要求出力(バスリクエスト信号)、マスターモードにされたときにはバス使用許可出力(バスグラント信号)として選択的に使用される。CKEはシンクロナスダイナミック型RAMのクロックイネーブル信号である。
割り込み用として、/RESETはリセット端子である。/IRL0〜/IRL3は割り込みレベル入力信号である。NMIはノンマスカブル割り込み入力であり、IVECFは割り込みベクタフェッチ出力である。
クロック用として、EXTALはクリスタル入力端子である。XTALはクリスタル入力端子*倍周用クロック入力である。CKPACKはクロックポーズアクノリッジ出力である。CKPREQはクロックポーズリクエスト入力である。CKIOはクロック入出力である。CAP1とCAP2はPLL用容量接続端子である。Vss(PLL)とVcc(PLL)は、PLLの電源端子である。
DMAC用として、/DREQ0,/DREQ1はDMA転送要求入力であり、チャンネル1とチャンネル2に対応している。/DACK0,/DACK1はDMA転送受け付け出力であり、チャンネル1とチャンネル2に対応している。SCI用として、TXD0は送信データ出力であり、RXD0は受信データ入力であり、SCK0はシリアルクロック入出力である。FRT用として、FTOAはアウトプットコンペアA出力であり、FTOBはアウトプットコンペアB出力である。FTCIはカウンタクロック入力であり、FTIはイップットキャプチャ入力である。そして、WDT用として、/WDTOVFはウォッチドッグタイマオーバーフロー出力である。
図4には、動作モードコントローラMCの一実施例のブロック図が示されている。モードコントロール部には、スタンバイコントロールレジスタとバス幅設定レジスタ及び周波数変更レジスタが設けられる。バス幅設定レジスタの出力は、組み合わせ論理回路により解読されて8ビット、16ビット又は32ビットのバス幅設定信号を形成し、バスステートコントローラBSCに対してバス幅の設定を行う。
周波数変更レジスタは、その出力信号を組み合わせ論理回路により解読されて、周波数fに対して×1、×2及び×4の3通りの制御信号を形成して発振回路に供給される。モード設定端子MD0〜2から入力された信号は、組み合わせ論理回路により解読されて、7通りのモード設定信号とされ、発振回路に供給される。
このようなクロック動作モードは、内蔵発振モジュール又は倍周回路を使用する/使用しない、クロック出力をする/出力をしないの選択、PLLによる同期化をする/同期化をしないの選択、CPUのクロックと外部に出力させる又は外部から入力されるクロックとの位相を90°変更する/変更しないの選択が組み合わされて上記7通りのモードが設定できる。上記位相の90°変更をする動作モードについては、後に説明する。
この実施例の各回路ブロックは、一部を除いてフルスタティック型CMOS回路により構成されている。それ故、動作を行う必要のない回路においては、クロックの供給を停止させてもその状態を維持しているので、基本的には初期設定や必要なデータを退避させておいてそれをもとに戻す等の処理を行うことなく、クロックの再入力により停止前の状態から引き続いて動作させることができる。ダイナミック型CMOS回路によって構成されているキャッシュメモリは、クロック供給開始によってプリチャージから動作が開始されるようにクロックの位相を合わせているので停止解除後に直ちにアクセスを行うことができる。
スタンバイコントロールレジスタは、上記のような動作を行う必要のない回路ブロックを指定することにより、例示的に示されているDMAC、DIVU、MULT及び1つのブロックSYSCとして示されている上記FRT、WDT及びSCIのような周辺モジュールに対するクロックの入力を停止させる制御信号STBY、DRTSTP、SCISTP及びMULTSTP、DIVUSTP、DMACSTP等のような制御信号によって対応する回路ブロックのクロック入力を停止させる。
(表1)
┌─────┬───┬───┬──────┬───────┬────────┐
│ モード │CPG│CPU│CPU レジスタ│周辺モジュール│ 端 子 │
├─────┼───┼───┼──────┼───────┼────────┤
│スリープ │動作 │停止 │ 保持 │ 動作 │ 保持 │
├─────┼───┼───┼──────┼───────┼────────┤
│スタンバイ│停止 │停止 │ 保持 │ 停止 │ 保持又はHiZ│
├─────┼───┼───┼──────┼───────┼────────┤
│モジュール│動作 │動作 │ 保持 │ 指定された │FRT,WDT,│
│ストップ │ │ │ │ ものが停止 │SCIはHiZ │
└─────┴───┴───┴──────┴───────┴────────┘
表1には、上記スタンバイコントロールレジスタによる動作モードの一覧表が示されている。表1においてHiZはハイインピーダンス状態を意味している。モジュールストップモードが指定されると、上記のような制御信号STBY、DRTSTP、SCISTP及びMULTSTP、DIVUSTP、DMACSTP等による回路ブロックのクロック入力が停止される。
中央処理装置CPUが動作を停止しているスリープモードの解除方法は、割り込み、DMAアドレスエラー、パワーオンリセット、マニアルリセットにより行われる。クロック発生回路CPGの動作停止により必然的に中央処理装置CPU及び周辺モジュールも動作が停止しているスタンバイモードの解除方法は、NMI割り込み、パワーオンリセット、マニュアルリセットにより行われる。これに対してモジュールストップモードは、上記スタンバイコントロールレジスタの所定ビットを0にリセットすることにより行われる。
上記のような各モードを設けることにより、シングルチップマイクロコンピュータの内部で、クロック発生回路の動作そのものも含めてクロックの供給が必要な回路のみ供給されるから、クロックパルスが伝えられる配線経路での負荷容量をチャージアップ/ディスチャージさせることにより生じる無駄な電流消費を削減することができる。これにより、電池駆動される携帯機器に搭載されるシングルチップマイクロコンピュータとしては特に必要とされる低消費電力化を図ることができる。
図5には、上記ブレークコントローラUBCの基本的な一実施例のブロック図が示されている。ブレークコントローラUBCは、中央処理装置CPU又は直接メモリアクセス制御装置DMACが発生するバスサイクルの内容に応じて中央処理装置CPUにユーザブレーク割り込みを要求する。この機能を活用することによりセルフデバッガが構築でき、ユーザーのプログラムデバッグを容易にする。このブレークコントローラUBCは、チャンネルAとチャンネルBの2チャンネルあり、チャンネルBはデータを指定してブレークさせることができる。
BARAHとBARAL及びBARBHとBARBLは、Aチャンネル及びBチャンネル用のブレークアドレスレジスタである。BAMRAHとBAMRAL及びBAMRBHとBAMRBLは、Aチャンネル及びBチャンネル用のブレークアドレスマスクレジスタである。これにより、Aチャンネル及びBチャンネルにおいてブレークをかけるアドレスの指定と各ビットごとのマクスが可能にされる。
BDRBHとBDRBLは、Bチャンネル用のブレークデータレジスタである。BDMRBHとBDMRBLは、Bチャンネル用のブレークデータマスクレジスタである。これにより、Bチャンネルにおいてブレークをかけるデータの指定の指定と各ビットごとのマクスが可能にされる。
BBRAはAチャンネル用のブレークバスサイクルレジスタAであり、BBRBはBチャンネル用のブレークバスサイクルレジスタBである。BRCRは、ブレークコントロールレジスタである。これらにより、上記アドレス又はデータの条件の他に、(1)CPUサイクルか周辺サイクルの一方又は両方、及びバスリリース時のチップ外部のバスサイクルを周辺サイクルに含めるかどうか、(2)命令フェッチかデータアクセスの一方又は両方、(3)読み出しか書き込みの一方又は両方、(4)オペランドサイズ(ロングワード、ワード、バイトアクセス)のような条件が組み合わせれてブレークをかけることができる。
図6には、上記ブレークコントローラUBCの一実施例の詳細なブロック図が示されている。この実施例では、ブレークコントローラUBCに次のような機能が付加される。前記図1の実施例のようにバス分離によって中央処理装置CPUと直接メモリアクセス制御装置DMAC及び外部バスインターフェイスOBIFとは分離されている。そのため、キャッシュメモリにミスヒットが発生した場合には、外部メモリをアクセスしてデータを取り込む必要がある。
バストランシーバは、制御信号C1により第1のアドレスバスAB1のアドレス信号を第2のアドレスバスAB2に伝達する。すなわち、キャッシュメモリにおいてミスヒットが生じると、制御信号C1により上記アドレスバスAB1のアドレス信号をアドレスバスAB2に伝え、外部バスインターフェイスOBIFを介して外部メモリをアクセスすることができる。このときの外部メモリから読み出されたデータは、キャッシュのデータメモリCDMを介して中央処理装置CPUに伝えられる。
同図では、レジスタBARAは、前記レジスタBARAHとBARALの2本のレジスタを合わせたものである。他のレジスタBARB、BDRBとそれぞれに対応したマスクレジスタBAMRA、BAMRB及びBDMRBもそれぞれ同様に図5の2本のレジスタを合わせたものである。
この実施例では、シンクロナスダイナミック型RAM,ダイナミック型RAM,擬似スタティック型RAMのアクセスを高速にするために、Rowアドレスコンパレータが設けられる。Rowアドレスレジスタに上記各RAMのロウアドレスをセットしておいて、同じロウアドレスを指定したときに、上記コンパレータからヒット信号Hitを発生させてバスステートコントローラBSCを介して上記各RAMのワード線を選択状態にしたままアクセスすることにより高速動作を行うようにするものである。
ブレークコントローラUBCは、上記のように第1バス及び第2バスに接続されてレジスタに設定されたアドレスとの比較動作を行っている。そこで、第2のバスに接続されるコンパレータとアドレスレジスタを利用し、キャッシュメモリに格納されているデータのアドレスをセットしておく。このようにしておけば、直接メモリアクセス制御装置DMACが誤ってキャッシュメモリに格納されているアドレスに対して書き込みを行うことによるデータを破壊を監視することができる。つまり、内部バスを分割して、内部回路の高速化や低消費電力化を図るだけで、この実施例のような手当を行わない場合には、キャッシュメモリのデータが破壊されてしまっても中央処理装置CPUが検知できなく、システムとして重大な欠陥を持つものとなってしまう。
図7には、上記バスステートコントローラBSCの一実施例のブロック図が示されている。上記バスステートコントローラBSCは、アドレス空間を管理し、8つの空間で最適なアクセスができるよう必要に応じて外部バスインターフェイスOBIFを通して制御信号を出力する。これにより、ダイナミック型RAM、シンクロナスダイナミック型RAM、擬似スタティック型RAMなどの各種メモリ及び周辺LSIと直結できる。
上記エリア制御部は、アドレス空間を4つに分割して管理を行う。つまり、アドレス空間は、アーキテクチャ上は4Gバイトあるが、メモリ空間としては256Mバイトあり、これを2つに分割して一方をキャッシュメモリを介してアクセスを行う空間、他方をキャッシュメモリを介さずにアクセスする空間とするが、物理的には同一の128Mバイトの空間に対するアクセスとなる。128Mバイトの物理空間を4個の部分空間(CS0空間からSC3空間)に分割して使用し、各空間は最大リニア32Mバイトとされる。上記CS0〜CS3の空間毎に、ダイナミック型RAM、シンクロナスダイナミック型RAM、擬似スタティック型RAM及びバーストROMなどのメモリの種類の指定を設定できる。CS0は通常空間とバーストROMに、CS1は通常空間に、CS2は通常空間とシンクロナスダイナミック型RAMに、CS3は通常空間とシンクロナスダイナミック型RAM、ダイナミック型RAM、擬似スタティック型RAMにそれぞれ指定して使用できる。
キャッシュ制御の空間としては、キャッシュパージのための前記物理空間に対応した連想パージ空間(128Mバイト)、アドレスアレイ(タグアドレス)を読み書きするためのアドレスアレイリード/ライト空間(128Mバイト)、データアレイを強制的に読み書きするためのキャッシュ強制リード/ライト空間が設けられている。
この他、空間ごとにバス幅(8ビット、16ビット、または32ビット)を選択可能にされる。空間に対応した制御信号出力ができる。ウェイト制御部では、空間ごとにウェイトステートの挿入を制御できる。また、高速の内部バス(第2のバス)と低速の周辺バス(第3のバス)とではバスサイクルがことなるので、内部バスの信号を周辺バスに転送するとき及び周辺バスの信号を内部バスに転送するときには、ウェイトを挿入して同期化を図るものである。
メモリ制御部では、リフレッシュ機能が設けられ、CASビフォワーRASリフレッシュとセルフリフレッシュが用意されている。リフレッシュ用カウンタのクロックセレクトによりリフレッシュ間隔を設定できるようにされる。
ダイナミック型RAMを直結できるインターフェイスを備えている。つまり、ロウアドレス/カラムアドレスのマルチプレクス出力と、リード時のバースト転送、連続アクセスに対する高速ページモード、連続しない同一ロウアドレスアクセスに対するRASダウンモード、及びRASプリチャージタイム確保用TPサイクル発生が可能とされる。また、シンクロナスダイナミック型RAMを直結できるインターフェイスを備えている。ロウアドレス/カラムアドレスのマルチプレクス出力と、バーストリード、シングルライトによるメモリアクセスと、バンクアクティブモードによるカラム連続アクセスが可能にされる。
上記ダイナミック型RAMやシンクロナスダイナミック型RAMの制御のために必要なアドレスストローブ信号/RAS、/CASやシンクロナスダイナミック型RAMやダイナミック型RAMに対するモード設定のための制御信号の発生は、メモリ制御信号発生回路MCTGにより行われる。つまり、エリア制御部において、ダイナミック型RAM又はシンクロナスダイナミック型RAMが割り当てられた空間に対するアクセスであることを検知すると、それに応じで上記制御信号が発生される。また、シンクロナスダイナミック型RAMに対するモード設定は、後に説明するようにCPUが特定のアドレスをアクセスすると、それをエリア制御部で検知し、メモリ制御信号発生回路に起動をかけてモード設定の制御信号を発生せさる。
バス使用権コントローラでは、前記端子MD5によるハイレベル/ロウレベルの入力により、マタタ/スレーブモードの切り換えが行われる。マスタモードのときには、/BRLSと/BGRにより外部からのバス解放要求を受け、バス使用許可信号を出力する。スレーブモードのときには、上記同じ端子を/BACKと/BREQとして用いる。つまり、バス使用権要求信号を出力し、バス使用許可信号を受けてマスタ側のバスをアクセスする。
図7において、エリア制御部に対応して設けられたBCR1とBCR2は、バスコントロールレジスタである。ウェイト制御部に対応して設けられたWCRは、ウェイトステートコントロールレジスタである。メモリ制御部に対応して設けられたMCRは、個別メモリコントロールレジスタである。RTCSRは、リフレッシュコントロール/ステータスレジスタである。RTCNTは、リフレッシュタイマカウンタである。RTCORは、リフレッシュタイムコンスタントレジスタである。BCR1の1ビットを読み出すことにより前記端子MD5の入力値を読み出すことができ、ソフトウェアがマスターモードかスレーブモードかの識別を行うことができる。
図8には、バスステートコントローラBSCと外部バスインターフェイスOBIFによるシンクロナスダイナミック型RAM(以下、SDRAMという)との接続例を説明するためのブロック図が示されている。同図には、基本的なメモリとしてスタティック型RAM(以下、SRAMという)の接続例も合わせて示されている。
図9には、上記SDRAMのバーストリード動作を説明するためのバスサイクル波形図が示されている。なお、同図では省略されているが、クロックイネーブル信号CKEはハイレベルにされて、SDRAMにはクロックCKIOが入力されている。このクロックCKIOに対して、中央処理装置CPUのクロックφは、位相が90°遅れるようにされている。言い換えるならば、中央処理装置CPU側からみれば、SDRAMのクロックは位相が90°進められている。このような位相関係のクロックを形成するために、前記クロック発生回路では、倍周回路によりクロックφの4倍の周波数の基本クロックを形成しておいて、それを1/4分周してシステムクロックφを形成するとともに、上記90°位相がずれたSDRAM用のクロックCKIOを形成している。/BSはバスサイクルをモニタするためのストローブ信号でありSDRAMには接続されない。
最初のサイクルTrでは、SDRAMが割り当てられた空間に対応した信号/CSnがロウレベルにされ、ロウアドレスストローブ信号/RASがロウレベルにされてロウアドレスが取り込まれる。次のサイクルTc1では、カラムアドレスストローブ信号/CASがロウレベルにされてカラムアドレスが取り込まれる。これと同期して/BSもロウレベルにされる。このように中央処理装置CPU側からクロックφの立ち上がりエッジに同期して出力される信号/CSn、/RASや/CAS及びアドレスに対して、SDRAMにおいてクロックCKIOの立ち上がりエッジに同期して上記各信号を取り込むものであり、上記90°の位相のずれによって十分な動作マージンを確保することができる。つまり、SDRAMにおいては、十分なセットアップ時間とホールド時間とを持って外部からの信号を取り込みことができる。
3番目のサイクルTc2では、/CASと/BSがハイレベルにリセットされる。そして、4番目以降Td1〜Td4の4サイクルにわたってSDRAMからデータD31〜D0が連続して読み出される。このようなバーストリードによって、4×4=16バイトのデータを読み出すことができる。
図10には、上記SDRAMのシングルライト動作を説明するためのバスサイクル波形図が示されている。最初のサイクルTrでは、SDRAMが割り当てられた空間に対応した信号/CSnがロウレベルにされ、ロウアドレスストローブ信号/RASがロウレベルにされてロウアドレスが取り込まれる。また、書き込み動作を指示する信号RD*/WRがロウレベルにされる。次のサイクルTc1では、カラムアドレスストローブ信号/CASがロウレベルにされてカラムアドレスが取り込まれる。これと同期して/BSもロウレベルにされ、データD31〜D0が取り込まれ、選択されたメモリセルに書き込みが行われる。このように2サイクルで4バイトの書き込みが行われる。
図11には、基本バスサイクルを説明するための波形図が示されている。この基本バスサイクルにより、例えば上記SRAMやROM等のメモリアクセスが行われる。基本バスサイクルでは、T1とT2のような2ステートにより行われる。同図では、/RDによるリード動作の場合と/WEnによるライト動作の場合が合わせて示されている。
図12には、バスステートコントローラBSCと外部バスインターフェイスOBIFによるダイナミック型RAM(以下、DRAMという)との接続例を説明するためのブロック図が示されている。同図のDRAMは、×16ビット構成のものであり、CAS2本方式(/UCAS*/LCAS)による上側と下側バイトアクセスが可能にされる。
図13には、上記DRAMの高速ページモードを説明するためのバスサイクル波形図が示されている。高速ページモードでは、ロウアドレスを固定しておいて、言い換えるならば、ワード線を選択状態にしておいて、カラムアドレスストローブ信号/CASに同期してカラムアドレスを順次に入力してデータの読み出し又は書き込みを連続的に行うものである。この場合、前記ブレイクコントローラUBCに設けられたRowアドレスコンパレータからのヒット信号Hitにより、ロウ系のリセット動作を省略して自動的に高速ページモードにすることができる。同様な動作をSDRAMにおいても行うようにすることができる。
図14には、バスステートコントローラBSCと外部バスインターフェイスOBIFによる擬似スタティック型RAM(以下、PSRAMという)との接続例を説明するためのブロック図が示されている。シングルチップマイクロコンピュータMCU側の出力/RAS*/CEをPSRAMのチップイネーブル端子/CEに接続し、MPU側の出力/CAS*/OEをPSRAMの出力イネーブル*リフレッシュ制御端子/OE*/RFSHに接続する。PSRAMライトイネーブル端子/WEはSRAMと同様にMCUの端子/WEjに接続される。そして、SRAMのチップセレクト端子/CSにはMCUの端子/CSnが供給される。すなわち、PSRAMは前記の空間分割によりCS3空間に割り当てられ、このときのSRAMはそれ以外の空間に割り当てられる。
図15には、この発明に係るシングルチップマイクロコンピュータを用いてマルチプロセッサ接続した場合の一実施例のブロック図が示されている。この実施例のシングルチップマイクロコンピュータMCUは、モード設定端子MD5にロウレベル/又はハイレベルを入力することにより、マスタモードとスレーブモードに設定することができる。この機能を利用し、同じ2つのシングルチップマイクロコンピュータの一方をマスタモードにし、他方をスレーブモードにしてマルチプロセッサシステムを構成することができる。
端子MD5にハイレベル(“1”)が入力されたものはスレーブモードのシングルチップマイクロコンピュータS−MCUとされる。端子MD5にロウレベル(“0”)が入力されたものはマスタモードのシングルチップマイクロコンピュータM−MCUとされる。マスタ側M−MCUは、メインバスを介してメインメモリ等の周辺LSIが接続される。
すなわち、通常のマイクロコンピュータシステムではシステム内に構築されたメインバスには、主記憶メモリや拡張メモリなど高速メモリをアクセスするメモリ制御ユニット、主記憶メモリとしてのDRAMやSDRAM,基本制御プログラムが格納されたROM、先端にキーボードが接続されたキーボードコントローラ等によって構成される。さらに、表示アダプタが上記メインバスに接続され、その先端にはCRT又はLCD等のディスプレイが接続されている。そして、上記メインバスにはパラレルポート,マウス等のシリアルポート、フレキシブルディスクドライブ、上記メインバスよりハードディスクインターフェイスに変換するバッファコントローラが接続される。また、上記メモリ制御ユニットからのバスと接続されて拡張RAM及び主記憶メモリ等が接続される。同図では、これらを簡略化してメインメモリとしてSDRAMのみが設けられる例が示されている。
スレーブ側とされたS−MCUは、特に制限されないが、ローカルバスが設けられ、そこにローカルメモリ等のローカル周辺LSIが必要に応じて設けられる。このローカル周辺LSI等は省略できる。そして、バスバッファを介してS−MCU側のアドレス、データ及び制御信号はメインバス側の対応する信号線に接続される。そして、上記のようなモード設定に対応してS−MCU側の/BREQとして用いられる端子がM−MCUの/BRLSとして用いられる端子に接続され、M−MCU側の/BGRとして用いられる端子がS−MCUの/BACKとして用いられる端子に接続される。
上記M−MCUから出力される信号/BGRが上記バスバッファの出力イネーブル端子/OE及びゲート端子/Gにも入力される。これにより、S−MCUがメインバスの使用許可を受けると上記バスバッファが活性化されてスレーブ側S−MCUのアドレス信号をメインバス側に供給して、メインバス上の周辺LSI等のアクセスが可能にされる。
このとき、M−MCUから出力され、S−MCUに入力されるクロックCKIOは、前記のSDRAMをアクセスしたときのようにS−MCUの内部クロックφに対して位相が90°進められたものとすることにより、上記バスバッファを通してメインバス側に供給する信号伝達の動作マージンを拡大させることができる。つまり、上記のような位相差の設定により、SDRAMをアクセスするときと同様に、ラッチ付バスバッファを通して伝達される信号のセットアップ時間及びホールド時間を十分に確保することができる。
この実施例では、1つのシングルチップマイクロコンピュータがモード設定によりマスタモード又はスレーブモードとして選択的に使用でき、しかも同じ端子をマスタ用とスレーブ用に切り換えて使用するために、端子数が減らすことができる。
図16には、S−MCUからメインバス上のSDRAMをアクセスする場合のタイミング図が示されている。スレーブ側から/BREQを出力し、メイン側からバス使用許可信号により/BACKがロウレベルにされると、前記SDRAMをアクセスする場合のようにロウアドレス(ROW)とカラムアドレス(COLUMN)を出力する。マスタ側では、ラッチ付バスバッファを通して出力される分(1クロック分)だけ遅れてアドレスとコマンドが伝えられ、読み出されたデータもラッチ付バスバッファを通した分だけ遅れてスレーブ側に伝えられる。
図17には、この発明に係るシングルチップマイクロコンピュータに内蔵されるキャッシュメモリの一実施例のブロック図が示されている。同図は、中央処理装置CPU及びバスステートコントローラも合わせて示されている。この実施例のキャッシュメモリは、アドレス入力から該当するデータの出力を1.5サイクルにより実行する。データのリプレースアルゴリズムはLRU(Least Recently Used)法を用いる。
キャッシュメモリの回路構成は、大きくわけてキャッシュタグ(アドレスアレイ)とキャッシュデータ(データアレイ)及びキャッシュコントローラから構成される。キャッシュタグはアドレスタグと呼ばれるアドレスの一部を格納しており、キャッシュデータはキャッシュタグに格納されているアドレスタグに対応するデータが格納されている。これにより、上記キャッシュタグに格納されているアドレスの一部が中央処理装置CPUからのそれに対応するアドレスとが一致すると、キャッシュタグからヒット信号が出力されて、並行して選択されているキャッシュデータから読み出されているデータが中央処理装置CPUに取り込まれる。もしも、ミスヒットなら、前記ブレークコントロールUBC及び外部バスインターフェイスを通して外部のメインメモリをアクセスすることとなる。
図17において、キャッシュコントロールレジスタCCRは、キャッシュイネーブル、命令フィル禁止、データフィル禁止、2ウェイモード、ウェイ指定等の制御ビットを持っており、動作モードの設定に使用される。
図20には、この発明に係るキャッシュメモリの動作概念図が示されている。アドレス信号はA31〜A0の32ビットから構成される。アドレスA3〜A0の4ビットに対応した16バイトが1ラインとされる。ラインは1つの連想アドレスに関連づけられたデータの塊である。アドレス信号A9〜A4の6ビットにより64エントリを持つようにされる。そして、アドレス信号A28〜A10までの19ビットのアドレス信号がタグアドレスとしてキャッシュタグに書き込まれている。アドレス信号A31〜A29までの3ビットは、アクセス空間指定に用いられる。
0〜63からなる64エントリに対応してLRU情報が設けられる。LRU情報は、6ビットから構成される。LRUリプレースの判定に使用する過去のアクセスに関する情報は6ビットにより表される。6ビットで表される組み合わせは、64通りあるが、初期値を0として24通りの組み合わせが使用される。そして、最下位ビットが2ウェイとして使用するときに利用されるよう組み合わされている。つまり、4ウェイのうちの2ウェイを内蔵RAMとして使用したときには、ミスヒットによるリプレースに使用されるのは最下位ビットが0ならばウェイ3を、1ならばウェイ2を使用するようにされる。このことを満足するような24通りの組み合わせにより、4ウェイモードのときのLRU情報の書き換えが行われる。
上記キャッシュタグから読み出されたタグアドレスと中央処理装置CPUから出力されるA28〜A10からなる19ビットのアドレス信号とが一致し、バリッドビットVが1であるときには、ヒット信号が出力されてキャッシュデータから16バイトのデータが読み出される。この16バイトの中の4バイト(32ビット)が2ビットのアドレスA3とA2により指定されて中央処理装置CPUに読み出される。
図18には、この発明に係るキャッシュメモリの一実施例のブロック図が示されている。上記キャッシュタグは、デコーダ、アドレスアレイ及びコンパレータから構成される。アドレスアレイは、4ウェイに対応して4つからなり、A9−A4のアドレスが入力されて、64通りのエントリの1つが選ばれる。各エントリは、アドレスタグに対応した19ビットとアドレス信号と、1ビットのバッリドビットを記憶するようにされる。それ故、1つのウェイに対応したアドレスアレイは、(19+1)×64のようにされる。4つのウェイに対応して6×64のLRU情報の記憶部が共通に設けられる。
パルスφ1によりアドレス信号を保持するラッチ回路は、中央処理装置CPUがパイプライン動作によりアドレス信号を出力するので、ミスヒットしたときのアドレスを記憶しておくために利用される。アドレスアレイから読み出されたアドレスタグと、アドレス入力の対応する19ビットのアドレス信号A28−A10は、コンパレータに入力される。
4つのウェイに対応して設けられた4つのコンパレータのヒット信号は、キャッシュコントローラに供給される。また、上記64のエントリのうち選択されたものに対応したLRU情報は、キャッシュコントローラに供給される。もしも、4つのウェイからヒット信号が出力されないときのリプレースに使用される1つのウェイが上記LRU情報により決められる。上記アドレスアレイから読み出されたアドレスタグは、セレクタにより診断用データとして出力される。
上記アドレス入力のうちのアドレス信号A9−A3からなる7ビットのアドレス信号は、データアレイのデコーダに入力される。データアレイは、32ビット×2×128からなる。アドレス信号A9−A4が前記64エントリに対応しており、アドレス信号A3は、1ライン(32×4)中の上位32×2ビットのデータ又は下位の32×2ビットのデータを選択するようにされる。このようにデータアレイの構成を縦長にすることにより、後述するような相補データ線の数を減らして32ビットからなる単位のデータの出力を簡単にする。
この実施例では、特に制限されないが、キャッシュコントローラからヒット信号が上記データアレイのデコーダに入力される。これにより、デコーダにおいて4つのウェイの中のヒット信号に対応したウェイに対してのみワード線の選択動作を行うようにして低消費電力化を図るものである。さらに、上記ヒット信号に対応したデータアレイのセンスアンプのみを動作させる。センスアンプにおける消費電流が比較的大きいから、上記ヒット信号をセンスアンプの制御にのみ使用してもよい。すなわち、データアレイのデコーダは、高速読み出しのために4つのウェイのワード線を選択状態にして、メモリセルからの読み出し動作を先行させ、ヒット信号を待ってセンスアンプを動作させるようにして、データアレイからの読み出しを高速にするものであってもよい。上記ヒット信号に対応したウェイから読み出された32×2ビットのデータは、キャッシュコントローラを通して出力されたアドレス信号A2により選択されるセレクタを通して32ビットのデータが出力される。
上記アドレスタグのコンパレータは、タイミング信号φ1により動作し、これに対してデータアレイの出力セレクタは、上記タイミング信号φに対して半サイクル遅れたタイミング信号φ2により動作するようにされる。それ故、上記ヒット信号よるデータアレイのワード線選択やセンスアンプの制御を行うようにしても問題ない。出力部に設けられたアライナは、出力データ幅に対応して8ビット、16ビットの単位でデータを出力するときに使用される。
上記4ウェイのうち、ウェイ0と1を内蔵RAMとして使用することができる。このモードでは、ウェイ0と1に対応したアドレスタグのヒット信号が無効にされる。このモードでのウェイ0と1のアクセスは、データアレイの強制リード・ライト機能により行われる。すなわち、強制リード・ライト機能では、キャッシュコントローラによって、ヒット信号に変わる選択信号によりウェイを選択し、データのリード・ライトを行うようにするものである。
上記のように2つのウェイ1と2を内蔵RAMとして使用したときには、6ビットからなるLRU情報の書き込みは、4ウェイと同じようにするが、リプレースウェイの選択は、そのうちの最下位1ビットのみを参照して、0ならばウェイ3を選択し、1ならばウェイ2を選択する。このように2ウェイモードと4ウェイモードとで、LRU情報の特定ビットを共通にすることにより、リプレースアルゴリズムの簡素化を図ることができる。
図19には、データアレイの一実施例の回路図が示されている。同図には、2対の相補データ線、2本のワード線とそれらの交点に設けられる4つのメモリセル及びその出力選択とセンスアンプが代表として例示的に示されている。同図において、Pチャンネル型MOSFETは、そのチャンネル部分に矢印が付加されることによって、Nチャンネル型MOSFETと区別される。
代表として例示的に素子に回路記号が付されているように、Pチャンネル型MOSFETQ1,Q2とNチャンネル型MOSFETQ3,Q4からなる2つのCMOSインバータ回路の入力と出力とが互いに交差接続されてラッチ回路とされる。上記ラッチ回路の一対の入出力ノードと相補データ線DL0,/DL0との間には、Nチャンネル型の伝送ゲートMOSFETQ5,Q6が設けられる。これらの伝送ゲートMOSFETQ5,Q6のゲートは、ワード線W0に接続される。他のメモリセルも前記同様なCMOSスタティック型メモリセルにより構成される。
相補データ線DL0,/DL0には、Nチャンネル型のプリチャージMOSFETQ7,Q8が設けられる。これらのMOSFETQ7,Q8のゲートにはプリチャージ信号PCが供給される。また、相補データ線DL0,/DL0の間には、イコライズ用のCMOSスイッチが設けられる。CMOSスイッチは、並列形態に接続されたNチャンネル型MOSFETQ9とPチャンネル型MOSFETQ10からなり、Nチャンネル型MOSFETQ9のゲートにはデータ線イコライズ信号DEQが供給され、Pチャンネル型MOSFETQ10のゲートには上記信号DEQがインバータ回路N1により反転されて供給される。上記イコライズMOSFETは、Nチャンネル型MOSFET又はPチャンネル型MOSFETのみから構成してもよい。
上記2対の相補データ線DL0,/DL0とDL1,/DL1は、CMOSスイッチを通して1つのセンスアンプに接続される。すなわち、データ線DL0は並列形態に接続されたNチャンネル型MOSFETQ11とPチャンネル型MOSFETQ13を介し、データ線DL1は同様に並列形態に接続されたNチャンネル型MOSFETQ16とPチャンネル型MOSFETQ18を介してそれぞれ共通データ線CDL0に接続される。データ線/DL0は並列形態に接続されたNチャンネル型MOSFETQ12とPチャンネル型MOSFETQ14を介し、データ線/DL1は同様に並列形態に接続されたNチャンネル型MOSFETQ17とPチャンネル型MOSFETQ19を介してそれぞれ共通データ線/CDL0に接続される。これらのCMOSスイッチには、選択信号SELが交差的に供給されることにより、相補データ線DL0,/DL0又はDL1,/DL1のいずれか一方が選択される。上記信号SELは、例えば前記アドレス信号A2により形成される。
共通データ線CDL0,/CDL0には、CMOSラッチ回路からなるセンスアンプの入力に接続される。センスアンプは、Pチャンネル型MOSFETQ22とQ23とNチャンネル型MOSFETQ24とQ25からなる2つのCMOSインバータ回路の入力と出力とが交差接続されてラッチ回路にされる。そして、上記Pチャンネル型MOSFETQ22とQ23のソースには、Pチャンネル型のスイッチMOSFETQ26を介して動作電圧VCCが与えられ、上記Nチャンネル型MOSFETQ24とQ25のソースには、Nチャンネル型のスイッチMOSFETQ27を介して回路の接地電位が与えられる。上記Pチャンネル型MOSFETQ26のゲートには、センスアンプ動作信号/SACが供給され、Nチャンネル型MOSFETQ27のゲートには、センスアンプ動作信号SACが供給される。
上記センスアンプの入力である共通データ線CDL0,/CDL0には、イコライズ用のNチャンネル型MOSFETQ20とPチャンネル型MOSFETQ21が並列形態に設けられる。上記Nチャンネル型MOSFETQ20のゲートには、センスアンプイコライズ信号SEQが供給され、Pチャンネル型MOSFETQ21のゲートには、上記信号SEQがインバータ回路N3により反転されて供給される。この実施例のセンスアンプは、高感度で正帰還ループを持つラッチ回路により構成されているので、上記信号/SACとSACにより動作開始前に上記イコライズMOSFETQ20とQ21により入力レベルを一致させておいて、共通データ線CDL0と/CDL0の電位差が選択されたメモリセルからの記憶情報に従った所定電位を持つようにされると、上記信号信号/SACとSACによりそれを増幅して共通データ線CDL0と/CDL0をハイレベル/ロウレベルに増幅する。これらの信号は、図示しない読み出し経路を通して出力される。なお、上記イコイズ用MOSFETは、Nチャンネル型MOSFET又はPチャンネル型MOSFETのみにより構成してもよい。
上記のようなCMOSラッチ形態のセンスアンプを用いた場合には、上記増幅動作によって共通データ線CDL0と/CDL0の電位がハイレベル/ロウレベルになると、CMOSラッチ回路において定常的な直流電流が流れなくなるので、低消費電力化を図ることができる。そして、前記のようにヒット信号により上記センスアンプ動作信号SACと/SACを発生させるようにすれば、4つのウェイのうち1つのウェイに対応したセンスアンプのみが動作することとなって、消費電流をほぼ1/4のように大幅に低減できる。
上記共通データ線CDL0と/CDL0は、書き込み選択信号WSによりスイッチ制御されるNチャンネル型MOSFETQ28とQ29を介してライトアンプに接続される。ライトアンプは、インバータ回路N4〜N7からなり、入力データD0を受けるCMOSインバータ回路N4の出力信号が駆動用インバータ回路N7と、反転インバータ回路N5及び駆動インバータ回路N6を通して相補の書き込み信号とされる。この相補の書き込み信号は、上記スイッチMOSFETQ28とQ29を通して共通データ線CDL0,/CDL0に伝えられる。
以上のように1つのウェイのデータアレイは、上記のような2対の相補データ線に対して1つのセンスアンプ、1つのライトアンブが32組設けられる。これにより、メモリアレイ部では、32×2の相補データ線と128本のワード線により構成され、32ビットのデータの入出力が行われる。
図21には、この発明に係るシングルチップマイクロコンピュータに内蔵される上記直接メモリアクセス制御装置DMACの一実施例のブロック図が示されている。この実施例では、CH0とCH1の2つのチャンネルを持つようにされる。上記チャンネルCH0とCH1に対応して、それぞれ2つの回路ブロックが設けられる。各回路ブロックの記号に付された数字0と1は、上記チャンネルCH0とCH1に対応した回路である。
上記のような2つのチャンネルCH0とCH1に対応して設けられる回路は、以下の通りである。SAR0,1は、ソース・アドレス・レジスタである。これらのSAR0と1は、それぞれが32ビットからなり、DMA転送元のスタート・アドレスが設定される。これらのSAR0,1は、動作中若しくは転送終了後に別途設定されたアドレス計算条件に従って、常に次の転送アドレス値を保持するようにされる。
DAR0,1は、デステイネーション・アドレス・レジスタであり、これらのDAR0,1は、それぞれが32ビットからなり、DMA転送先のスタート・アドレスが設定される。これらのDAR0,1は、動作中若しくは転送終了後に別途設定されたアドレス計算条件に従って、常に次の転送アドレス値を保持するようにされる。
TCR0,1は、トランスファー・カウント・レジスタであり、これらのTCR0,1は、それぞれが32ビットからなり、DMA転送回数が設定され、動作中若しくは転送終了後は、残りの転送回数を保持するようにされる。オールゼロ(all"0")設定時は、2の24乗回(最大転送回数)になる。VCR0,1及びVCR2,3は、チャンネルCH0と1に2本ずつが対応されたベクタレジスタである。各VCR0〜VCR3は、それぞれが8ビットから構成され、DMACの割り込みベクタアドレスが設定される。設定は中央処理装置CPUから行われ、割り込み発生時に中央処理装置CPUがベクタフェッチする。
上記チャンネルCH0とCH1共通の回路ブロックとしては、次のものがある。DMAORは、DMA・オペレーション・レジスタであり、CHCR0と1は、上記DMAORに対応して設けられたチャンネル・コントロール・レジスタである。AUは、アドレス演算器であり、DECはオールゼロ検出器付のデクリメンタである。そして、MDB0〜3は、128ビット転送用4段データバッファである。このデータバッファMDB0〜4により、キャッシュメモリの1ラインに対応したデータ転送が行われ、SDRAMに対してバーストリードによって4サイクル×32ビットのデータ転送が行われる。上記以外に、DMA要求/選択レジスタ0,1や転送シーケンス制御回路、ホストインターフェイス、及び優先権制御回路等が設けられる。
上記のようにキャッシュメモリの単位データ数、SDRAMのバーストリードによる読み出しデータ数及びDMACのデータバッファとの間で整合性を採ることにより、DMACによるSDRAMと他のメモリ又は周辺LSIとの間でのデータ転送を効率よく行うことができる。
図22には、この発明に係るDMACとその周辺部の一実施例の概略ブロック図が示されている。この発明に係るシングルチップマイクロコンピュータの内部バスB2に接続される。このバスB2には、同図では省略されているが、前記のようなインターフェイスOBIFを介して外部バスB4に接続される外部メモリ等とキャッシュメモリや内部に設けられる周辺モジュールとの間でのデータ転送を行う。
アドレスモードは、デュアルアドレスモードとシングルアドレスモードとがある。デュアルアドレスモードでは転送元と転送先のアクセスを2回のバスサイクルに分け、それぞれに対してアドレスを出力する。シングルアドレスモードでは、外部メモリに対してアドレッシングすると同時に外部I/Oデバイスを/DACK信号によりアクセスし、DMA転送を1バスサイクル間で行う。
バスモードには、サイクルスチールモードとバーストモードがある。サイクルスチールモードでは、1語のDMA転送終了後、バス権を解放し、他のバスマスタにバス権を渡す。バーストモードでは、バス権を獲得すると、転送終了条件が満たされるまで連続して転送を続ける。ただし、外部リクエストモードのときに、/DREQ端子をレベルでサンプリングする場合には、端子に応じて転送を行う。
転送要求は、外部要求、内蔵周辺モジュールからの要求、オートリクエストがある。外部要求は、/DREQ0端子によりチャンネルCH0を、/DREQ1によりチャンネルCH1を起動することができる。/DEQ0,1端子のサンプリングは立ち下がりエッジとレベルとを選択することができる。内蔵周辺モジュールからの要求には、内蔵SCI0の受信データフルと、内蔵SCIの送信データ線エンプティとがある。これらの要求は、DMA転送サイクルを起動することにより、自動的にクリアされる。オートリクエストは、DMACのチャンネルコントロールレジスタCHCRn(0,1)のDEビットをセットすることにより転送動作を開始するものである。
DMACに同時に複数のチャンネルの転送要求がある場合、優先順位に従って転送チャンネルが決定される。優先順位には、優先順位固定モード、交代モードがある。優先順位固定モードでは、各チャンネル間の優先順位は変化しない。1又は0の2通りのチャンネルを固定的に優先順位にすることができる。交代モードでは、チャンネルCH0とCH1のチャンネル間で優先順位を交代するモードであり、優先順位を変更するタイミングは、ラウンドロビン方式でチャンネルCH0又はチャンネルCH1の転送が1転送単位(バイトあるいはワード)終了したときとされる。
図23には、除算器DIVUの一実施例のブロック図が示されている。この実施例の除算器DIVUは、符号付64ビット÷32ビット又は32ビット÷32ビットの除算を行い、32ビットの商と32ビットの余りを求めることができる。演算でオーバーフロー又はアンダフローが発生したときには、指定により中央処理装置CPUに対して割り込みを発生させることができる。
同図において、JRは除数レジスタであり、HRL32は32ビット用被除数レジスタLであり、HRHは被乗数レジスタH、HRLは被除数レジスタLであり、2つ合わせて64ビットの被乗数を入力することがきる。BARは余りレジスタ、BSRは商レジスタである。CONTはコントロールレジスタであり、VCTは割り込みベクタレジスタである。この実施例の乗算器DIVUは、中央処理装置CPUから上記被除数と除数が設定されると、除算を開始しておよそ37サイクルにBSRに商を、BARに余りをセットして自動的に演算を終了する。もしも、オーバーフロー又はアンダフローが生じると、指定により内部割り込み信号が発生される。
上記乗算器DIVUは、内部バスB2から切り離された状態で約38サイクルにわたって除算を行うものである。それ故、中央処理装置CPU等は、内部バスを使用したデータ処理等を並行して行うことができる。
図24には、3次元物体を2次元からなる表示画面上に遠近法により表示するための3次元画像処理の概念を説明するための説明図が示されている。同図には、古代ギリシャ風の神殿を2次元画面上に表示させる例が示されている。
神殿を特定する点p1,p2等は、神殿の持つ原点に対してx1,y1及びz1やx2,y2,z2の座標を持っている。最初に行われるデータ処理は、上記各神殿を特定する点p1,p2等の固有の座標を、それを見る視点Pを原点とする新たな方向X’,Y’及びZ’軸に対応した座標に変化する。これが座標変換処理である。つまり、神殿をどの位置でどの角度から見るのかに対応して神殿を特定する各点の座標が相対的座標に置き換えられる。
(式1)
┌─T00 T01 T02 T03 ─┐
│ T10 T11 T12 T13 │
[x1',y1',z1',1]=[x1,y1,z1,1]│ │
│ T20 T21 T22 T23 │
└─T30 T31 T32 T33 ─┘
上記式1において、 x1',y1',z1'は、神殿の点p1の変換された座標であり、x1,y1,z1は、神殿の持つ固有の原点に対応した座標である。上記式1の行列式から、x1'=x1・T00 +y1・T10 +z1・T20 + 1・T30 のような積和演算により求めることができる。同様に、y1'=x1・T01 +y1・T11 +z1・T21 + 1・T31 のよう求められ、z1'=x1・T02 +y1・T12 +z1・T22 + 1・T32 のように求められる。
上記のように座標変換点p1はp1’のように座標変換された後に、点Pと上記各座標p1’を結ぶ直線と表示画面Sと交わる交点の座標座標x1”,y1”が表示画面S上の点とされる。このため、座標x1”,y1”は、原点Pに対する2次元画面Sと上記神殿の相対座標p1’との距離の割合により求められる。それ故、表示画面上の座標を求めるという遠近処理は、除算処理により行われることとなる。
上記のようにして求められた各2次元画面上の座標は、画面S内にあるかその外にあるかの判定が行われ、2つの点が画面S内にあればそれを結ぶ直線となり、1つの点又は両方とも画面から外れたときには、画面Sを中心にして上下左右の4画面、斜め上下の4画面のいずれかに点が存在するかにより、画面Sを通過する線となるのか否かの判定が行われて、画面からはずれた点に対応した直線が引かれる。このような処理はクリップ(クリッピング)処理と呼ばれる。クリッピングでは、上記画面Sを中心とした上下左右、斜め上下の合計8画に点が存在するか否かの処理であるで、除算により求められた点x1”,y1”等と上記面を区切るXとYの境界アドレスと大小比較を繰り返すことにより実行される。
ディジタル回路により行われる除算は、引算の繰り返しにより実施される。それ故、除算動作時間は必然的に長くなってしまう。すなわち、前記変換処理、遠近処理及びクリップ処理を従来のように順次に行うようにすると、1秒間に60枚からなる動画を描こうとすると、従来のマイクロコンピュータでは精々アニメーション程度の動画しか描くことができない。立体的な映像を描く場合には、曲面を三角形の組み合わせにより表現するととなり、上記1/60秒間に描くことができる三角形の数に比例して表現できる映像信号の緻密度が決まることとなる。28.7MHzのような高い周波数のクロックで動作する、従来の高速なマイクロコンピュータにおいては、上記クリッピング処理を省略した場合、1/60に描くことのできる三角形の数は500〜900程度である。上記三角形の数が500程度でアニメーション程度の平面的な動画を描くことができるとされている。
図25には、この発明に係るシングルチップマイクロコンピュータを用いた3次元画像処理方法を説明するための信号処理図が示されている。同図では、3次元画像処理を座標変換処理、遠近処理、及びクリップ処理に分け、それを処理する各回路ブロックとの関係を時系列的に示している。
この実施例では、上記画像処理において最も時間を費やすことととなる遠近処理と、座標変換処理及びクリップ処理とを並列的に行うようにするものである。ただし、処理の順序としては、前記のように1つの点に着目すると、並列的な処理が行われ無いので、クリップ処理を次のように1つ遅らせて行うようにするものである。
中央処理装置CPUと乗算器MULTは、積和演算コマンドにより座標変換処理を行う。中央処理装置CPUが積和コマンドを取り込み、デコードするとそれが乗算器MULTに伝えられ演算を実行して乗算器MULTのレジスタには、前のデータに乗算されたデータが加算されて保持される。これにより、前記座標変換のための行列式の積和演算処理が行われる。上記中央処理装置CPUと乗算器MULTによりn番目の点について座標変換を行っている間、除算器DIVUにおいては、1つ前に処理された座標n−1の遠近処理を同時に並行して行うようにされる。
中央処理装置CPUは、n番目の座標変換処理が終わると、除算器DIVUをアクセスして、その結果を取り込むとともに、上記変換が終了したn番目の座標について遠近処理を指示する。これにより、除算器DIVUは、上記n番目の座標データを受け取って除算動作を開始する。除算器DIVUによるn番目の点に対する遠近処理と同時並行して、中央処理装置CPUは、上記遠近処理が終了したn−1番目の点について、クリップ処理を行う。このクリップ処理は、前記のようにデータの大小比較からなるものであるので、中央処理装置CPUに内蔵された比較機能によって前記のようなクリップ処理を行う。
このn−1番目の点についてクリップ処理が終わると、中央処理装置CPUと乗算器MULTとは、n+1番目の点について座標変換動作を行う。以下、同様な動作の繰り返しにより、中央処理装置CPUと乗算器MULTによる座標変換及び中央処理装置CPUによるクリップ処理に対して、除算器DIVUによる遠近処理とが同時並行して行うことができ、等価的に最も時間のかかる遠近処理を無くすことができる。この実施例のシングルチップマイクロコンピュータに設けられる除算器DIVUは、1回の除算に約38サイクルも費やすこととなる。これに対して、上記座標変換では、x,y,zの各点について、それぞれ4回の積和を行い、それぞれがパンプライン的に演算されるものである。また、クリップ処理は、8回の大小比較を行うものであるので、ほぼ上記除算処理と時間的に一致する。
この実施例では、固定小数点による積和演算を行う。これに対応して除算動作も固定小数点方式による除算を行うものである。このように固定小数点方式を採る場合には、精度の補償はない反面浮動小数点方式に必要な正規化処理が省略できるので、上記乗算や除算の速度を速くできる。精度に関しては、ソフトウェアにより手当てを行うようにすることができる。つまり、3次元画像処理における遠近処理以外には、マイクロコンピュータでの除算動作は必要ないといっても過言ではない。それ故、この実施例のシングルチップマイクロコンピュータでは、最も使用頻度の高い3次元画像処理を想定してシステムを構成するものである。
この実施例のシングルチップマイクロコンピュータを前記のような28.7MHzにより動作させ、しかも3次元画像処理を上記のように座標変換とクリップ処理に対して遠近処理をそれらと同時並行的に行う方式を採ることにより、1/60秒間に描くことのできる三角形の数は、約2400のように大幅に向上させることができる。この数値は、実写に近い動画を画面上に描くことができる能力を意味している。
上記数値(約2400)には、前記同様にクリップ処理が無い場合を示している。この実施例の3次元演算処理方式では、クリップ処理を入れても座標変換処理に比べて遠因処理に時間を費やすこととなるので、その差分の時間にクリップ処理の大半を割り当てることができるからクリップ処理が無い場合に対して若干処理能力が低下するに止まる。これに対して、従来のように座標変換、遠近処理及びクリップ処理の順序に行うものでは、クリップ処理に要する時間だけ確実に処理することのできる三角形の数を減ってしまう。このため、この発明に係る3次元画像処理方式と従来のマイクロコンピュータを用いた3次元画像処理方法とをクリップ処理を含ませて比較すると、その処理能力差はいっそう拡大するものである。
この発明に係る3次元画像処理方式では、前記図1のようなシングルチップマイクロコンピュータにおいて、除算器も乗算器と同じ第1バスに接続されていてもよい。また、バス構成は前記のようにバスを分割するものの他1つのバスにより構成するものであってもよい。あるいは、除算器を外部LSIとして設ける構成としてもよい。このように、上記のような3次元画像処理に用いられるマイクロコンピュータのシステムは、種々の実施形態を採ることができるものである。そして、乗算器や除算器は、浮動小数点方式のものであってもよい。
この発明に係るシングルチップマイクロコンピュータを家庭用ゲーム機に使用するとき、グラフィックス処理の高度化などに伴いプログラムの容量が増大し、プログラム容量が数Mバイトに達することも予測される。アクセス頻度の高い命令やデータに限っても、内蔵したROM/RAMや内蔵キャッシュメモリでは容量が足りない。このため、外部メモリ・インターフェイスの速度が性能に大きく影響することになる。
そこで、この実施例にかかるシングルチップマイクロコンピュータでは、前記のように、シンクロナスDRAMと容量4Kバイトの4ウエイ・セット・アソシアティブ方式のキャッシュとを組み合わせて平均アクセス時間の短縮を図るようにするものである。そして、内蔵キャッシュメモリは、前述のようにRAMとして機能させることも可能である。
4ウエイ・セット・アソシアティブとは、あるアドレスのデータに対してキャッシュメモリ内に格納可能なエントリが4カ所存在するキャッシュ・マッピング方式である。直接マッピングはアドレスに対して格納するエントリが一意に決定される。フルアソシアティブは全てのエントリが格納可能となる。そして、セット・アソシアティブはウエイの数だけ格納可能なエントリが存在する。直接マッピング、セット・アソシアティブ、フルアソシアティブとなるに従いキャッシュメモリの置き換えによって、近い将来アクセスされる確率の高いエントリがキャッシュから追い出される確率は低くなる。フルアソシアティブ・キャッシュのアドレス・アレイは連想メモリを用いなければならないのに対し、直接マッピングおよびセット・アソシアティブのアドレス・アレイは、普通のメモリと比較回路の組み合わせで実現できる。
家庭用ゲーム機や携帯型情報通信機器は、パーソナルコンピュータやワークステーションに比べて製品単価が安い。このため、家庭用ゲーム機等に用いられるシングルチップマイクロコンピュータでは、チップそのものの価格はもとより、外付けする周辺回路も安価で済むようにする必要がある。低コストで平均アクセス時間(CPUが所望のデータを得るまでの平均時間)を短縮するために、前記のようにキャッシュメモリが内蔵される。
上記中央処理装置CPUのクロック周波数を、前記のように28.7MHzにしたとき、1サイクルに要する時間は35nsである。このため、RASアクセス時間が60nsのDRAMの高速ページ・モードでは1サイクルごとの連続アクセスができない。DRAMを2ウエイのインタリーブ構成にして、高速ページ・モードで交互にアクセスすれば、1サイクルを70nsに延ばすことができる。しかし、二つのウエイから交互に読み出すデータの衝突を回避するデータ・バッファのタイミング設計が難しい。また、データ・バッファでの遅延を考慮すると1サイクルごとの連続アクセスは事実上不可能である。
そこで、シングルチップマイクロコンピュータにおいて、外部データ・バスの幅を64ビットにすれば、2バンク構成の主記憶と直結できるようになり、データ・バッファが不要になる。その反面、ピン数が増加しパッケージ・コストが高くなる。また、ボンディング・パッドの間隔の制約からチップ面積も増大しかねない。このような理由によって、高速ページ・モードのDRAMを用いて平均アクセス時間を短縮することは大きな弊害がある。SRAMを使えば1サイクルごとの連続アクセスは可能になるが、コストの面で見合わなくなってしまう。低コストで平均アクセス時間を低減するためには、前記実施例のように内蔵キャッシュメモリの採用が最も妥当となるものである。
キャッシュ・ミス率と平均アクセス時間に関するシミュレーションで内蔵キャッシュメモリの有効性を検討した。この発明に係るシングルチップマイクロコンピュータでは、バスの駆動をなるべく少なくして消費電力の低減を図るために、内蔵キャッシュメモリへのアクセスと主記憶へのアクセスを並行して開始する構造を採らないで、キャッシュ・ミスが判明してから主記憶へのアクセスを始める。内蔵キャッシュメモリへのアクセスと主記憶へのアクセスを同時に始めないので、キャッシュ・ミス時にはキャッシュ検索の時間がオーバヘッドとなる。平均アクセス時間の増加につながる。ミス率が高いと、このオーバヘッドの影響でキャッシュメモリを持たない場合よりも平均アクセス時間が増す危険がある。
ミス率に関するデータは、ゲーム用プログラムのトレース・データが無いので次の文献(Smith A. J.,"Line (Block) Size Choice for CPU Cache Memories ," IEEE Trans.on Computers, vol. 36,no.9 、Sep.1987, pp. 1063−1075)の値を参考にした。図26〜図28に命令/データ混在型キャッシュメモリのミス率、容量を変えた場合のライン・サイズとミス率の関係を示す特性図が示されている。
ライン・サイズは、キャッシュメモリの中にデータを蓄える単位をいい、ブロック・サイズともいわれる。部分書き込みを可能にするために、ライン内のバイト、ワードまたはロング・ワード単位にバリッド・ビットを設けない場合、ライン全てに有効なデータを格納しなければならない。キャッシュ・ミス時の置き換えは、ライン単位に行なう必要がある。このため、ライン・サイズを増やすと置き換えに要する時間は増加するものとなる。
この発明に係るシングルチップマイクロコンピュータでは、前述のように内部キャッシュメモリのアクセスに1サイクル、外部のメモリ・アクセスに2サイクルかかる(キャッシュのライン・サイズが4バイトの場合)。ミス率が50%を越えると平均アクセス時間が2サイクル以上となりかえって遅くなる。
チップ・サイズの制限から、キャッシュメモリに割り当てることのできる面積は4Kバイト程度である。図26〜図28に示すように、キャッシュの容量が4Kバイトならば、ライン・サイズがかりに4バイトと小さくても、ミス率は33%以下で、キャッシュメモリが効果を発揮することが分かる。
この発明に係るシングルチップマイクロコンピュータのように、16ビット固定長のRISCマイクロコントローラのアーキテクチャは、32ビット固定長RISCプロセッサと比べてコードサイズが小さいことが予想される。コードサイズが小さいと同じ命令数を実行する場合、フェッチしてくるバイト数が減りキャッシュメモリのミス率が低くなる。
実際には32ビットRISCアーキテクチャを16ビットに変えてもコードサイズが1 /2 になるわけではない。イミディエイトデータとして命令中に組み込むことができる値の範囲が小さくなるため値の大きな定数を設定するために複数の命令を使う必要がある。命令コードとしてのビット数が足りなくなるので3オペランドアドレスを2アドレスに変えるため1命令が2命令になる場合がある。また、レジスタの指定ビットが足りなくなるのでレジスタの本数を32から16減らさざるを得ず、レジスタの待避回復を行うための命令が追加されることが考えられる。
そこで、これらを検証するために、この発明に係るシングルチップマイクロコンピュータ用に生成したコードサイズを調べたところDhrystoneは968バイト、SPECintベンチマークのliは33,042バイト、同じくSPECintベンチマークのeqntottは6,992バイトであった。32ビット固定長RISCプロセッサの場合、それぞれ、1,680バイト、51,440バイト、10,832バイトであり、上記16ビット固定長と比べると55〜74%増しである。
『Bunda J. and Athas W., "16-Bit vs. 32-Bit Instructions for Pipelined Microprocessors," ISCA'20 Proceedings ,May 16−19, 1993, pp. 237−246』によると、32ビットRISCアーキテクチャであるDLXを16ビット化するとコードサイズは2/3に減り、実行命令数は15%増加するものの、命令転送量は35%減少との結果が得られている。また、16ビット化による性能向上は低速のメモリを接続する場合に効果がより顕著であると報告されている。
この発明に係るシングルチップマイクロコンピュータに内蔵のキャッシュメモリの構成は、前述のように命令/データ混在型の4ウエイ・セット・アソシアティブ方式を採った。ライン・サイズはシンクロナスDRAMとの直結を考慮して16バイトとされる。CPUとキャッシュメモリ間のアクセス経路は一つにし、命令とデータで別のアクセス経路を使うハーバード・アーキテクチャを使用しない。前記実施例のように、アクセス経路を一つにすると、同じクロックで命令フェッチとデータ・アクセスを処理することができないが、データ・アクセスを伴う命令の適切なアドレスに配置して、この問題を回避することかできる。
すなわち、命令は16ビット固定長なので、32ビット単位でメモリをアクセスする場合に、2命令に1回の命令フェッチで済む。したがって、図29に示すように、メモリからのロード、ストアを伴う命令を偶数ワード・バウンダリ(4n 番地)に置くと、アクセス経路が一つでも命令フェッチとデータ・アクセスは競合しなくなる。このように、アクセス経路を一つにすることで、キャッシュ構成の自由度を増すことができる。すなわち、命令/データ混在型キャッシュ、命令/データ分離型キャッシュ、命令またはデータのみのキャッシュのいずれもが実現可能になる。
図29において、命令を格納する番地を適切な値に設定してメモリ・アクセスとの競合を避けるようにする。命令フェッチは32ビット単位にて行う。メモリ・アクセスを伴う命令を4n番地に置けば、4n+6番地の命令フェッチとメモリ・アクセスが重ならない。4n+2番地に置いた場合は重なってしまうので、パイプラインのストールが生じる。4n+4番地以降の命令の実行を1サイクル遅らせなければならない。
上記命令/データ混在型と命令/データ分離型について比較すると次の通りである。命令だけのキャッシュとデータだけのキャッシュは命令/データ混在型キャッシュのリプレース論理を変更することで実現できるためである。
容量4Kバイトの命令/データ混在型キャッシュのミス率はライン・サイズ16バイトの時に、図26に示されているように12%である。命令とデータにそれぞれ2Kバイトのキャッシュを用意した分離型の場合は、図27と図28に示すように、命令のミス率が15%でデータのミス率が12%となる。さらに、命令フェッチは、データ・アクセスに比べて頻度が高く、CPIに及ぼす影響が大きく命令のミス率はできるだけ下げたいので、命令/データ混在型キャッシュメモリとするものである。
4ウエイ・セット・アソシアティブは、ミス率と消費電力、チップ面積のトレード・オフを考慮して決められた。直接マッピング方式はキャッシュ容量が小さい場合、プログラムによってはスラッシングが頻発し、キャッシュ・ミスが連続する可能性が高い。命令とデータを格納するアドレスを調節してスラッシングをさけることは可能であるが、アセンブラ・レベルでのチューニングが必要になる。C言語で個々のプログラムを書き、リンカでまとめ上げる開発方法が主流となりつつある時代のすう勢にそぐわない。また、フルアソシアティブ方式のキャッシュメモリはチップ面積が増大する上に、消費電力が大きいという問題を有するものである。
そこで、セット・アソシアティブ方式について検討した結果、次の通りである。キャッシュの容量が4Kバイトの場合、4ウエイまではウエイ数を増やすとミス率が大幅に低減する。これに対し、4ウエイと8ウエイの差は0.2%と小さい。さらにミス率を低くするために、ラインの置き換えアルゴリズムにLRUを使いうことも検討したが、8ウエイではエントリごとに28ビットのLRU情報を用意しなければならない。キャッシュメモリ全体の5%がLRU情報で占められることになってコストに響く。ちなみに、この実施例のように4ウエイの場合はLRU情報は6ビットですむので全体への割合は1%と少なくできる。
この発明に係るシングルチップマイクロコンピュータが備えるシンクロナスDRAMとのインターフェイス回路は、キャッシュ・ミス時にラインの置き換えにかかる時間を短縮するためのものである。既存のDRAMで8サイクルかかるラインの置き換えが、シンクロナスDRAMを使った場合は6サイクルになる。
図30に示すように、ライン・サイズを大きくとり過ぎると平均アクセス時間の増加につながる。ライン・サイズをある程度大きくすれば、キャッシュメモリのミス率が下がるので平均アクセス時間が短くなる。大きくし過ぎると外部メモリからのデータ転送にかかる時間が長くなり、平均アクセス時間の増加を招く。同図では、CPUの動作周波数は28.7MHz、SRAMのアクセス時間は60ns、DRAMのアクセス時間は70nsである。DRAMの高速ページ・モードのサイクル時間は45ns、シンクロナスDRAMは最高動作周波数66MHzのものを使用した例が示されている。
キャッシュメモリの容量が同じだと、ある程度ライン・サイズを増やした方がキャッシュメモリのミス率が低くなる。キャッシュ・ミス時にライン単位で置き換えを行なうので、キャッシュメモリのプリフェッチと同様の効果が期待できるからである。したがって、ライン・サイズが大きくなり過ぎてエントリ数が不足するまでは、ライン・サイズを増やした方がよい。しかし、ライン・サイズを大きくしてミス率を低くしたからといって、必ずしも平均アクセス時間の短縮に結び付くとは限らない。いったんミスしたときに、ラインの置き換えにかかる時間はライン・サイズが大きいほど長くなるからである。
この発明に係るシングルチップマイクロコンピュータは、ラインの置き換えが終わるまで命令の実行を停止する。ラインの置き換えの最中にキャッシュにアクセスするには、複雑な制御が必要なためだからである。CPIを低減するには、できるだけ短時間でラインの置き換えをすませたい。そこで、ライン・サイズに相当するまとまったデータ(ブロック・データ)の転送速度が速いメモリが必要になり、高速ページ・モードのDRAMとシンクロナスDRAM、Rambus 準拠のDRAMについて検討した。
このうち、シンクロナスDRAMとRambus 準拠のDRAMは、一つの行をまとめてチップ内のバッファに読み出し、後はクロック入力に同期してこれを順次転送するという方式を採る。二つ目以降のデータはメモリの内部動作に拘束されずに転送できる。Rambus 準拠のDRAMは、最高2nsのサイクルでデータ転送が可能である。しかし、Rambus 準拠のDRAMは、既存のCMOSチップとは信号レベルが異なる。ROMや周辺I/Oと信号ピンを直結することができない。この発明に係るシングルチップマイクロコンピュータの入出力インターフェイスの信号レベルをRambus 準拠のDRAMに合わせることもできるが、現状では汎用性がなくなってしまうという問題が生じる。
この発明に係るシングルチップマイクロコンピュータでは、キャッシュメモリのアクセスを32ビット単位で行う。Rambus 準拠のDRAMをCPUの動作周波数より速いクロックで動作させてデータを取り込んでも、直接にキャッシュメモリに書き込むことはできない。そのため、チップ内にバッファが必要となり、コスト増を招いてしまう。高速ページ・モードのDRAMは、ブロック転送速度が、列のアドレスを選択するためのCAS信号のサイクル時間がネックとなって、大きな速度改善が行えない。
シンクロナスDRAMは、データ転送速度こそ最高16ns/サイクルだが、信号レベルは電源電圧が+3.3Vのメモリと同じLVTTLである。制御信号以外の信号ピンを周辺回路と直結できる。クロックの立ち上がりエッジだけを使用するためクロックに対する制約が緩い。
この発明に係るシングルチップマイクロコンピュータでは、以上の検討からシンクロナスDRAMとのインターフェイスを組み込むようにするものである。シンクロナスDRAMは、高速ページモードDRAMのRASアクセスに相当するバンク・アクティブ状態にした場合に、行アドレスのサイクルを省略できる。1回目のアクセス時間を短縮することが可能である。さらに、内部が二つのバンクに分かれており、それぞれ独立の行アドレスに対してバンク・アクティブ状態にしておくことができる。メモリ内の低位側のアドレスに命令、高位側のアドレスにデータといった配置をとった場合、命令とデータのアクセスが混在してもアクセス時間を短縮できる確率は高くなる。これもシンクロナスDRAMインターフェイスを採用した理由の一つである。
シンクロナスDRAMの使用を考慮した結果、キャッシュメモリのライン・サイズは16バイトとなり、図30から平均アクセス時間は1.72サイクルになった。
この発明に係るシングルチップマイクロコンピュータでは、キャッシュメモリの制御を簡単にするために、データの書き込みにはライト・スルー方式を採用するものである。これは、コピー・バック方式はライト・スルー方式よりもミス率が高いといわれているからである。
ところがライト・スルー方式では、主記憶への書き込み時にオーバヘッドを生じる。既存のシンクロナスDRAMは、読み出し時と書き込み時の転送ブロック・サイズが同じためである。1ワード(4バイト)のデータを書き込む場合でも、1ライン(16バイト)分の書き込み操作をしなければならない。書き込みのたびに3サイクルのからサイクルが発生してしまう。シンクロナスDRAMは、ブロック・アクセスの途中で次のアクセスを強制的に始めることもできるが、インターフェイスの回路が複雑になる。
そこで、この発明に係るシングルチップマイクロコンピュータに接続される図8等に示された前記のようなシンクロナスDRAMでは、読み出しはブロック単位で行なうが、書き込みはワード単位でできる、ブロック・リード/シングル・ライトの機能を持つものである。
この発明に係るシングルチップマイクロコンピュータは、家庭用ゲーム機以外に携帯型情報通信機器の用途に向けられている。こうした機器は屋外で持ち歩いて使うため電池駆動が前提なので、マイクロコントローラの消費する電力をできる限り抑える必要がある。低価格のプラスチック・パッケージに納めるためにも発熱を抑えることが必要である。
キャッシュメモリでの低消費電力化のために、図31に示すように、アドレス・アレイとデータ・アレイを1/2サイクルずらして動作させて、アドレス・アレイの比較結果にもとづいて、4ウエイのデータ・アレイのうちヒットしたウエイのセンス・アンプだけを動かす構造とされる。同図は、前記図18と対応されている。
図32には、この発明に係るキャッシュメモリの動作タイミングが示されている。チップ全体の消費電力を下げるために、ワード線の制御を工夫して、ビット線の充放電による消費電流の低減を図るようにした。データ線を1/2サイクルの間でプリチャージする。次の1/2サイクルでデータを読み出す。すなわち、アドレスのデコード結果に従ったワード線駆動とメモリ・セルのデータ線への読み出しと、センス・アンプ駆動を同時に行なう。
ヒットしないウエイのセンス・アンプを動かさなくても、そのウエイのワード線を立ち上げてしまうとデータ線の充放電を避けられない。そこで、ヒットしたウエイのワード線だけを立ち上げることにした。このためにはワード線駆動のタイミングよりも前にヒットしたウエイが確定する必要がある。シミュレーションによって、ワード線駆動より先にヒットしたウエイの確定ができることが分かっている。このような構成とすることにより、データ線充放電による消費電流を大幅に低減することができる。
さらに、前記図19の実施例のように、カレントミラー差動型のセンス・アンプをクロス・カップル型センス・アンプに変えセンス・アンプの貫通電流をなくした。クロス・カップル型のセンス・アンプは駆動タイミングが難しい。データ線間の電位差が有意となった後にセンス動作を開始しないと、誤動作する恐れがあるからである。このため従来はカレントミラー差動型を用いていた。本願発明では、タイミング生成回路系の微調整によって、クロス・カップル型の採用を可能にするものである。
キャッシュメモリを内蔵した場合に、インサーキット・エミュレータのトレース機能をどのように実現するかが問題となる。トレースによるデバグの支援は、問題の発生した時点の前後のバス・アクセスを正確に表示することで可能となる。キャッシュメモリを内蔵すると、キャッシュメモリにミスしたメモリ・アクセスだけが外部バスに出力されるので、正しいトレース・データが得られない。
そこで、この発明に係るシングルチップマイクロコンピュータでは、キャッシュメモリにアクセスしているときのトレースを可能にするために、キャッシュ・ヒット時にそのアドレスとデータを1サイクルだけバスに出力するモードを設けた。単一プロセッサで使う場合は、キャッシュにヒットしたときにはメモリ・アクセスを実行しない。すなわち、トレース時にはアドレスとデータの出力が行われず外部バスが空いている。これを利用して、トレース・データを出力するようにする。
これに対して、DMAコントローラを用い高いバス使用率でデータの転送を行なう場合や、マルチプロセッサ・システムではトレース・データの出力とDMA転送または他のプロセッサからのメモリ・アクセスが競合する可能性がある。最悪、DMAコントローラがデュアルアドレス転送を行いバスを占有している場合、リードとライトの合間を待ってトレースデータを出力するため、CPU性能はキャッシュの代わりに実際に接続されているメモリより2倍遅いメモリを接続した場合と同等となる。
マイクロコントローラを用いたシステムを開発する際にプログラムデバッグに対するサポートは重要な位置を占める。現在のプログラミングは、アセンブラ言語を離れC言語、さらには一部アプリケーションに関してはオブジェクト指向を取り入れC++などのオブジェクトオリエンテッドなプログラミング言語を採り入れだしている。こうした中で、ステートメント単位のプログラム実行の停止とシンボリックな変数の参照機能はプログラマの作業効率を向上するために不可欠となっている。
RAM上にOSやアプリケーションプログラムをロードするパーソナルコンピュータやワークステーションと異なり、機器に組み込むマイクロコントローラは最終的なデバッグをROM上で行うことが多い。RAM上のプログラムは、実行停止を行うため指定するアドレスの命令をブレーク命令に置き換えることで正確な停止を容易に実現できる。キャッシュメモリ内蔵でも停止方法は同じである。ROMでは命令の置き換えを行うことができない。
この発明に係るシングルチップマイクロコンピュータでは、実行の正確な停止をサポートするため命令フェッチアドレスを検出し指定アドレスの命令の直前でブレーク割り込みを発生させるユーザブレークコントローラが設けられている。ユーザブレークコントローラにはデータアクセスのアドレスおよびデータの値によってブレーク割り込みを発生させる機能も盛り込まれている。チップ内部に組み込むことによってキャッシュにヒットし外部アクセスが行われない場合にも正しくブレーク割り込みを発生できる。
チップ内部のアドレス・バスとデータ・バスは、ほとんどすべてのモジュールに配線される。その静電容量は数pFのオーダとなる。アドレス・バス/ データ・バスの各32本を1サイクルごとに逆極性に駆動すると、電荷の充放電による消費電流が60mAを超えてしまうし、静電容量が大きくなると遅延も増えることになる。
そこで、この発明に係るシングルチップマイクロコンピュータでは、前記図1等の実施例のように、内部バスを分割して、バスごとに駆動方法を工夫することで充放電電流の低減を図るものである。チップの内部バスは3種類に分けられるものである。
図33には、この発明に係るシングルチップマイクロコンピュータにおける各バスサイクルを説明するためのタイミング図が示されている。キャッシュバス(前記図1の第1のバス)と内部バス(前記図1の第2のバス)の各信号は、クロックのハイレベル期間に同期して変化し、チップ外部に接続された外部バス(前記図1の第4のバス)の各信号は、クロックのロウレベル期間に同期して変化する。
CPUがメモリ上のデータ又は命令をアクセスする場合、クロック信号に同期してキャッシュアドレスバスにアドレス信号を出力するとともにアクセスを行うことを表示するためのアクセス信号(図示せず)をハイレベルにする。キャッシュは、これを受けて内部のキャッシュメモリの検索を行う。アクセスがメモリに対するリードでかつアクセスアドレスのデータがキャッシュメモリ内に存在する場合、次のサイクルにクロックに同期してキャッシュデータバスにキャッシュメモリから読み出したデータを出力するとともにレディ信号をハイレベルにし、CPUにデータのアクセスが完了したことを示す。同図では、A番地のアクセスとA+4番地のアクセスがこれに該当する。
キャッシュメモリにデータが存在しない場合、内部バスを介してキャッシュ外部のデータをアクセスする。同図では、C番地に対するアクセスがこれに該当する。すなわち、CPUは、サイクル4にキャッシュアドレスバスにアドレス信号Cをするとともに、図示しないアクセス信号をハイレベルにする。キャッシュメモリ内にデータがないので、キャッシュはサイクル5でレディ信号をロウレベルにして、データが準備できていないことをCPUに知らせるとともに、内部バスのバスアクセス信号をハイレベルにする。
外部アドレスインターフェイスは、上記アクセス信号のハイレベルを受けて内部アドレスバスの値をデコードし、これがチップ内部に対するアクセスか外部に対するアクセスかを判定する。アドレス信号Cの番地は、外部であるので直ちに外部アドレスバスにアドレス信号Cを乗せ、外部バスアクセス信号をハイレベルにする。
次のサイクルでは、データの読み出し準備が完了しないので内部レディ信号をロウレベルにして、キャッシュに対してデータの準備ができないことを通知する。読み出しの完了するサイクル6に外部インターフェイスは読み込んだデータを内部データバスに出力するとともに内部レディ信号をハイレベルとして、キャッシュに読み出し完了を通知する。キャッシュは、内部バスのデータをキャッシュメモリに書くと同時にキャッシュデータバスに出力し、かつキャッシュレディ信号をハイレベルにして、CPUに読み出し完了を通知する。このキャッシュレディ信号がロウレベルの期間(サイクル5とサイクル6)、CPUはアドレスバスの更新を停止する。
データの書き込み動作では、外部のデータ書き込みの完了を待つ必要がないため、B番地のアクセスに示されているように、キャッシュは前記ブレークコントローラを介して内部アドレスバスにアドレス信号Bを出力し、バスアクセス信号をハイレベルにする際にCPUに接続されるキャッシュレディ信号をハイレベルに保つ。したがって、CPUは、外部バスの書き込み完了を待たずに実行を続ける。
周辺バス(図1の第3のバス)に接続される周辺モジュールであるフリーランニングタイマFRT、シリアルコミュニケーションインターフェイスSCI、ウォッチドッグタイマWDTにアクセスする場合、キャッシュアドレスバスからキャッシュを経て内部アドレスバスに出力されるアドレス信号Bが、これら周辺モジュールのアドレス信号Bとなる。アドレス信号Bは、バスステートコントローラBSCを介して周辺アドレスバスに出力される。同時にバスアクセス信号がハイレベルになる。
周辺モジュールから周辺データバスへのデータ出力、又はデータバス上の値を周辺モジュールへの書き込み完了を待って外部バスインターフェイスが内部バスレディ信号をハイレベルにしてアクセスの完了を知らせる。データ読み出しの場合、このとき同時にバスステートコントローラBSCから周辺データバス上の読み出しデータが内部データバスに出力される。
図34には、シンクロナスDRAMのモード書き込み動作を説明するためのタイミング図が示されている。この発明に係るシングルチップマイクロコンピュータにおいては、特に制限されないが、シンクロナスDRAMに対するモード設定が以下のように実現される。
内蔵周辺用として割り当てられたFFF8000番地からFFFFFFFF番地のうち、FFFF8000からFFFFB000番地をアクセス(ライト又はリード)するとと、そのアドレスがそのまま外部バスに出力されるとともに、シンクロナスDRAMに接続される/CS3、/RAS、/CAS及び/WEの各制御信号が同時に1クロックサイクルの間、ロウレベルにされる。
シンクロナスDRAMは、これら4本の各制御線の信号がロウレベルのときのクロックの立ち上がりエッジでアドレスバスの値を取り込み、これをそのまま内部モード設定レジスタに書き込む。したがって、上記FFFF8000からFFFB000番地の適当なアドレスをアクセスすることによって、所望のモード設定を簡単に行うことができる。上記のようなタイミングでの制御信号の発生は、前記メモリ制御信号発生回路MCTGにより形成される。すなわち、外部バスインターフェイス回路のエリア制御部等に適当なアドレスデコーダを設け、上記のようなアドレスデコード条件により、前記のような4本のメモリ制御線の信号をロウレベルにするようなシーケンス状態を設けるようにすることによって実現される。
図35には、上記シンクロナスDRAM(以下、単にSDRAMという)の一実施例のブロック図が示されている。同図に示されたSDRAMは、特に制限されないが、公知の半導体集積回路の製造技術によって単結晶シリコンのような1つの半導体基板上に形成される。
この実施例のSDRAMは、メモリバンクA(BANKA)を構成するメモリアレイ200Aと、メモリバンク(BANKB)を構成するメモリアレイ200Bを備える。それぞれのメモリアレイ200Aと200Bは、マトリクス配置されたダイナミック型メモリセルを備え、図に従えば同一列に配置されたメモリセルの選択端子は列毎のワード線(図示せず)に結合され、同一行に配置されたメモリセルのデータ入出力端子は行毎に相補データ線(図示せず)に結合される。
上記メモリアレイ200Aの図示しないワード線はロウデコーダ201Aによるロウアドレス信号のデコード結果に従って1本が選択レベルに駆動される。メモリアレイ200Aの図示しない相補データ線はセンスアンプ及びカラム選択回路202Aに結合される。センスアンプ及びカラム選択回路202Aにおけるセンスアンプは、メモリセルからのデータ読出しによって夫々の相補データ線に現れる微小電位差を検出して増幅する増幅回路である。それにおけるカラムスイッチ回路は、相補データ線を各別に選択して相補共通データ線204に導通させるためのスイッチ回路である。カラムスイッチ回路はカラムデコーダ203Aによるカラムアドレス信号のデコード結果に従って選択動作される。メモリアレイ200B側にも同様にロウデコーダ201B,センスアンプ及びカラム選択回路202B,カラムデコーダ203Bが設けられる。上記相補共通データ線204は入力バッファ210の出力端子及び出力バッファ211の入力端子に接続される。入力バッファ210の入力端子及び出力バッファ211の出力端子は16ビットのデータ入出力端子I/O0〜I/O15に接続される。
アドレス入力端子A0〜A9から供給されるロウアドレス信号とカラムアドレス信号はカラムアドレスバッファ205とロウアドレスバッファ206にアドレスマルチプレクス形式で取り込まれる。供給されたアドレス信号はそれぞれのバッファが保持する。ロウアドレスバッファ206はリフレッシュ動作モードにおいてはリフレッシュカウンタ208から出力されるリフレッシュアドレス信号をロウアドレス信号として取り込む。カラムアドレスバッファ205の出力はカラムアドレスカウンタ207のプリセットデータとして供給され、カラムアドレスカウンタ207は後述のコマンドなどで指定される動作モードに応じて、上記プリセットデータとしてのカラムアドレス信号、又はそのカラムアドレス信号を順次インクリメントした値を、カラムデコーダ203A,203Bに向けて出力する。
コントローラ212は、特に制限されないが、クロック信号CLK、クロックイネーブル信号CKE、チップセレクト信号/CS、カラムアドレスストローブ信号/CAS(記号/はこれが付された信号がロウイネーブルの信号であることを意味する)、ロウアドレスストローブ信号/RAS、及びライトイネーブル信号/WEなどの外部制御信号と、アドレス入力端子A0〜A9からの制御データとが供給され、それらの信号のレベルの変化やタイミングなどに基づいてSDRAMの動作モード及び上記回路ブロックの動作を制御するための内部タイミング信号を形成するもので、そのためのコントロールロジック(図示せず)とモードレジスタ30を備える。
クロック信号CLKはSDRAMのマクタクロックとされ、その他の外部入力信号は当該クロック信号CLKの立ち上がりエッジに同期して有意とされる。チップセレクト信号/CSはそのロウレベルによってコマンド入力サイクルの開始を指示する。チップセレクト信号/CSがハイレベルのとき(チップ非選択状態)やその他の入力は意味を持たない。但し、後述するメモリバンクの選択状態やバースト動作などの内部動作はチップ非選択状態への変化によって影響されない。/RAS,/CAS,/WEの各信号は通常のDRAMにおける対応信号とは機能が相違され、後述するコマンドサイクルを定義するときに有意の信号とされる。
クロックイネーブル信号CKEは次のクロック信号の有効性を指示する信号であり、当該信号CKEがハイレベルであれば次のクロック信号CLKの立ち上がりエッジが有効とされ、ロウレベルのときには無効とされる。さらに、図示しないがリードモードにおいて、出力バッファ211に対するアウトプットイネーブルの制御を行う外部制御信号もコントローラ212に供給され、その信号が例えばハイレベルのときには出力バッファ211は高出力インピーダンス状態にされる。
上記ロウアドレス信号は、クロック信号CLKの立ち上がりエッジに同期する後述のロウアドレスストローブ・バンクアクティブコマンドサイクルにおけるA0〜A8のレベルによって定義される。
A9からの入力は、上記ロウアドレスストローブ・バンクアクティブコマンドサイクルにおいてバンク選択信号とみなされる。即ち、A9の入力がロウレベルの時はメモリバンクBANKAが選択され、ハイレベルの時はメモリバンクBANKBが選択される。メモリバンクの選択制御は、特に制限されないが、選択メモリバンク側のロウデコーダのみの活性化、非選択メモリバンク側のカラムスイッチ回路の全非選択、選択メモリバンク側のみの入力バッファ210及び出力バッファ211への接続などの処理によって行うことができる。
後述のプリチャージコマンドサイクルにおけるA8の入力は相補データ線などに対するプリチャージ動作の態様を指示し、そのハイレベルはプリチャージの対象が双方のメモリバンクであることを指示し、そのロウレベルは、A9で指示されている一方のメモリバンクがプリチャージの対象であることを指示する。
上記カラムアドレス信号は、クロック信号CLKの立ち上がりエッジに同期するリード又はライトコマンド(後述のカラムアドレス・リードコマンド、カラムアドレス・ライトコマンド)サイクルにおけるA0〜A7のレベルによって定義される。そして、この様にして定義されたカラムアドレスはバーストアクセスのスタートアドレスとされる。
次に、コマンドによって指示されるSDRAMの主な動作モードを説明する。
(1)モードレジスタセットコマンド(Mo)
上記モードレジスタ30をセットするためのコマンドであり、/CS,/RAS,/CAS,/WE=ロウレベルによって当該コマンド指定され、セットすべきデータ(レジスタセットデータ)はA0〜A9を介して与えられる。レジスタセットデータは、特に制限されないが、バーストレングス、CASレイテンシー、ライトモードなどとされる。特に制限されないが、設定可能なバーストレングスは、1,2,4,8,フルページ(256)とされ、設定可能なCASレイテンシーは1,2,3とされ、設定可能なライトモードは、バーストライトとシングルライトとされる。
上記CASレイテンシーは、後述のカラムアドレス・リードコマンドによって指示されるリード動作において/CASの立ち下がりから出力バッファ211の出力動作までにクロック信号CLKの何サイクル分を費やすかを指示するものである。読出しデータが確定するまでにはデータ読出しのための内部動作時間が必要とされ、それをクロック信号CLKの使用周波数に応じて設定するためのものである。換言すれば、周波数の高いクロック信号CLKを用いる場合にはCASレイテンシーを相対的に大きな値に設定し、周波数の低いクロック信号CLKを用いる場合にはCASレイテンシーを相対的に小さな値に設定する。
(2)ロウアドレスストローブ・バンクアクティブコマンド(Ac)
これは、ロウアドレスストローブの指示とA9によるメモリバンクの選択を有効にするコマンドであり、/CS,/RAS=ロウレベル、/CAS,/WE=ハイレベルによって指示され、このときA0〜A8に供給されるアドレスがロウアドレス信号として、A9に供給される信号がメモリバンクの選択信号として取り込まれる。取り込み動作は上述のようにクロック信号CLKの立ち上がりエッジに同期して行われる。例えば、当該コマンドが指定されると、それによって指定されるメモリバンクにおけるワード線が選択され、当該ワード線に接続されたメモリセルがそれぞれ対応する相補データ線に導通される。
(3)カラムアドレス・リードコマンド(Re)
このコマンドは、バーストリード動作を開始するために必要なコマンドであると共に、カラムアドレスストローブの指示を与えるコマンドであり、/CS,/CAS=ロウレベル、/RAS,/WE=ハイレベルによって指示され、このときA0〜A7に供給されるカラムアドレスがカラムアドレス信号として取り込まれる。これによって取り込まれたカラムアドレス信号はバーストスタートアドレスとしてカラムアドレスカウンタ207に供給される。これによって指示されたバーストリード動作においては、その前にロウアドレスストローブ・バンクアクティブコマンドサイクルでメモリバンクとそれにおけるワード線の選択が行われており、当該選択ワード線のメモリセルは、クロック信号CLKに同期してカラムアドレスカウンタ207から出力されるアドレス信号に従って順次選択されて連続的に読出される。連続的に読出されるデータ数は上記バーストレングスによって指定された個数とされる。また、出力バッファ211からのデータ読出し開始は上記CASレイテンシーで規定されるクロック信号CLKのサイクル数を待って行われる。
(4)カラムアドレス・ライトコマンド(Wr)
ライト動作の態様としてモードレジスタ30にバーストライトが設定されているときは当該バーストライト動作を開始するために必要なコマンドとされ、ライト動作の態様としてモードレジスタ30にシングルライトが設定されているときは当該シングルライト動作を開始するために必要なコマンドとされる。更に当該コマンドは、シングルライト及びバーストライトにおけるカラムアドレスストローブの指示を与える。当該コマンドは、/CS,/CAS,/WE=ロウレベル、/RAS=ハイレベルによって指示され、このときA0〜A7に供給されるアドレスがカラムアドレス信号として取り込まれる。これによって取り込まれたカラムアドレス信号はバーストライトにおいてはバーストスタートアドレスとしてカラムアドレスカウンタ207に供給される。これによって指示されたバーストライト動作の手順もバーストリード動作と同様に行われる。但し、ライト動作にはCASレイテンシーはなく、ライトデータの取り込みは当該カラムアドレス・ライトコマンドサイクルから開始される。
(5)プリチャージコマンド(Pr)
これは、A8,A9によって選択されたメモリバンクに対するプリチャージ動作の開始コマンドとされ、/CS,/RAS,/WE=ロウレベル、/CAS=ハイレベルによって指示される。
(6)オートリフレッシュコマンド
このコマンドはオートリフレッシュを開始するために必要とされるコマンドであり、/CS,/RAS,/CAS=ロウレベル、/WE,CKE=ハイレベルによって指示される。
(7)バーストストップ・イン・フルページコマンド
フルページに対するバースト動作を全てのメモリバンクに対して停止させるために必要なコマンドであり、フルページ以外のバースト動作では無視される。このコマンドは、/CS,/WE=ロウレベル、/RAS,/CAS=ハイレベルによって指示される。
(8)ノーオペレーションコマンド(Nop)
これは実質的な動作を行わないこと指示するコマンドであり、/CS=ロウレベル、/RAS,/CAS,/WEのハイレベルによって指示される。
SDRAMにおいては、一方のメモリバンクでバースト動作が行われているとき、その途中で別のメモリバンクを指定して、ロウアドレスストローブ・バンクアクティブコマンドが供給されると、当該実行中の一方のメモリバンクでの動作には何ら影響を与えることなく、当該別のメモリバンクにおけるロウアドレス系の動作が可能にされる。例えば、SDRAMは外部から供給されるデータ、アドレス、及び制御信号を内部に保持する手段を有し、その保持内容、特にアドレス及び制御信号は、特に制限されないが、メモリバンク毎に保持されるようになっている。或は、ロウアドレスストローブ・バンクアクティブコマンドサイクルによって選択されたメモリブロックにおけるワード線1本分のデータがカラム系動作の前に予め読み出し動作のために図示しないラッチ回路にラッチされるようになっている。
したがって、データ入出力端子I/O0〜I/O15においてデータが衝突しない限り、処理が終了していないコマンド実行中に、当該実行中のコマンドが処理対象とするメモリバンクとは異なるメモリバンクに対するプリチャージコマンド、ロウアドレスストローブ・バンクアクティブコマンドを発行して、内部動作を予め開始させることが可能である。
SDRAM22は、クロック信号CLKに同期してデータ、アドレス、制御信号を入出力できるため、DRAMと同様の大容量メモリをSRAMに匹敵する高速動作させることが可能であり、また、選択された1本のワード線に対して幾つのデータをアクセスするかをバーストレングスによって指定することによって、内蔵カラムアドレスカウンタ207で順次カラム系の選択状態を切り換えていって複数個のデータを連続的にリード又はライトできることが理解されよう。
図36には、前記3次元画像処理等のための積和演算動作の一例を説明するためのブロック図が示されている。積和演算動作は、CPUと演算器(積和乗算器)及びキャッシュメモリとキャッシュメモリ制御回路とにより次のようにして行われる。
同図において、CPUはデータバス(キャッシュバス)DB1を介してキャッシュメモリから読み出しされた命令コードを一時的に格納しておく命令レジスタIRと、読み出された命令コードをデコードして命令実行部等の制御信号を生成する制御回路と、演算処理を実行する命令実行部から構成される。命令実行部の内部では、アドレスバッファAB、ALU(演算論理ユニット)、内部レジスタ及びデータの入出力バッファDB等が内部Aバス、Bバス及びCバスに接続されて構成される。
CPUは、キャッシュメモリに格納されている命令コードをデータバスDB1を介して読み出し、命令レジスタIRに取り込む。取り込まれた命令コードは、制御回路によってデコードされ、CPU内部の制御信号を出力する。この制御信号によって、命令実行部は制御されて所望の演算が実行される。
この実施例では、乗算器がデータバスDB1とコマンド制御線COMDとウェイト制御線WAITとを介してCPUに接続され、この乗算器に内部状態信号CCを介してキャッシュメモリ制御回路が接続される。
乗算器には、CPUの制御回路からのコマンド制御信号が入力され、乗算器の内部状態は状態信号CCによりキャッシュメモリ制御回路に伝えられ、この状態信号CCとコマンド制御信号COMDによって乗算器の演算処理中に次の演算起動指令が発行された場合には、バスサイクルをウェイトさせるウェイト信号WAITが生成される。このウェイト信号WAITは、CPUの制御回路に入力される。
図37には、積和命令(MAC命令)を説明する説明図が示されている。同図には、前記3次元画像処理において、式1の行列式に対応した積和演算が例として示されている。同図において、IF又はifは命令フェッチ、IDはデコード、EXは演算or実行、MAはメモリアクセス、WBはライトバックをそれぞれ意味しており、mmは乗算器が動作している状態を表している。
積和レジスタの内容をクリアするために、CLRMAC命令が実行される。この命令により、演算器の積和出力レジスタの内容がクリアされる。続いて、1回目のMAC(積和命令)が実行される。この積和命令MACは、if−ID−EX−MA−MA−mm−mm−mmの8段で終了する。2番目のMAは、メモリ読み出しとともに乗算器の演算起動も行う。
MAC命令の次命令のIDは、1スロット分後にストールされる。それ故、上記2つ目のMAC命令のIDが、1スロット分後にストールされる。この実施例のように、MAC命令が連続してくる場合、MAC命令の2番目のMAが、その前の乗算系命令によって発生したmmと競合した場合には、そのMAのバスサイクルは、mmが終了するまで引き伸ばされて(図ではM────Aのように表している。)、その引き伸ばされたMAは1つのスロットになる。同図において、点線で囲まれた部分は、上記mmとMAとが競合していることを示している。
CPUの制御回路は、if−ID−EX−MAにより、順に命令フェッチし、上記MAC命令をデコードして、乗算すべきデータのあるキャッシュメモリのアドレスを生成し、このメモリアドレスをアドレスバッファABを通してアドレスバスAB1に出力して、キャッシュメモリからデータバスDB1 にデータを出力させる。データバス上に出力された演算すべきデータは、CPUには取り込まれずに、CPUからの信号COMDにより演算器が取り込んで、3スロットにわたって演算を行い出力レジスタに格納する。
以下、演算器は、連続してくるMAC命令により、前記のような行列式に対応して全部で4回の乗算と前の乗算結果にその乗算結果を加算して格納するという積和演算を行う。そして、最後にSTS命令により、上記演算結果をライトバックして1つの相対座標に対応した座標変換が行われる。
図38には、除算器の一実施例のブロック図が示されている。同図において、JRは除数レジスタであり、除数を格納する32ビット幅のレジスタであり、特別の機能は持たない。HRLは被除数下位及び商保存レジスタであり、被除数の下位32ビットを格納するとともに、演算終了時には商32ビットが格納される。演算中は中間結果を格納するテンポラリレジスタとしても使用される。HRHは被除数の上位32ビットを格納するレジスタであり、32÷32演算の場合には、被除数の符号拡張を行うため、HRLのMSBの値がHRHの全ビットにコピーされる。演算終了時には結果の余が格納される。演算中は中間結果を格納するテンポラリレジスタとしても使用される。
CONTはコントロールレジスタであり、32ビットのうち2ビットから31ビットまではライトできず、0リードのみである。有効なビットはビット1とビット0の下位2ビットである。ビット0はOVF(オーバーフロー)のフラグである。オーバーフロー又はアンダーフローが生じたときには値がセットされる。
ビット1はビット0に値がセットされたときに割り込み発生するか禁止するかを決定するフラグである。ビット1と0は、バスマスターからの0ライトによって行われる。オーバーフロー割り込みオフの状態で、オーバーフローが発生した場合はMAX値、アンダーフローが発生した場合MIN値を商にセットする。そして、オーバーフロー割り込みオンの状態で、オーバーフロー又はアンダーフローが発生した場合には、演算結果をそのまま商にセットする。
VCTは割り込みベクタであり、CONTのビット1を1にした状態で、オーバーフローが発生したときに出力する割り込みベクタを保存するレジスタである。初期値は上位16ビットが0で、下位16ビットが不定値である。
RARは、余長期保存レジスタであり、演算終了時点での余を格納する32ビットのレジスタである。HRHとの違いは、演算中に中間結果を格納するテンポラリレジスタとして使用されることがなく、次の演算終了するまで、又はバスマスタからライトされるまで値を保存することが可能である。
RSRは、商長期保存レジスタであり、演算終了時点での商を格納する32ビットのレジスタである。HLHとの違いは、演算中に中間結果を格納するテンポラリレジスタとして使用されることがなく、次の演算終了するまで、又はバスマスタからライトされるまで値を保存することが可能である。
FA&CLAはフルアダー及びキャリールックアヘッドであり、32ビットの加算器、引算器、キャリーの有無やゼロチェックを行う。AUFA&AUCLAは、1加算器であり、1減算は加算器の前後についているセレクタで値を反転することにより行う。LDMCAは、状態制御回路であり、バスマスタから乗算器内蔵レジスタへのライト制御、除算器演算中の演算サイクル制御及び演算結果のゼロチェックを行う論理回路からなる。LDMCBはオーバーフロー処理回路であり、除算演算でオーバーフローが発生したときの処理を行う制御論理回路である。LDPRMはI/O制御回路であり、除算器と周辺モジュールとのインターフェイスを行う制御論理回路である。
図39は、上記除算器の動作を説明するための状態遷移図である。この実施例の除算器では、状態数が全部で42ある。同図の最上部の“000000”がレディ(ready)状態であり、リセット後はこの状態となる。通常の除算処理を行うのは左上の“000001”から、右下の“001100”までの38サイクルである。左列中央より上部、“100110”からの分岐がオーバーフロー発生時の処理で、ここから2サイクルでもとの状態に戻る。この他、レディ状態下の“000010”はライト/リード連続要求時の退避場所である。
上記除算器による除算の処理は大きく分けると次の5つに分類することができる。以下それぞれについて説明する。
(1)レディ状態(“000000”−“000010”)
“000000”は通常のレディ状態であり、“000010”はバスマスタから除算器へのアクセスにおいて、レジスタライト命令直後にレジスタリード命令が出された場合にのみ遷移する状態である。この実施例の除算器の構成では、バスマスタからレジスタライト命令直後にレジスタリード命令を発行されると、正常な値を出力することができない。したがって、バスマスタからレジスタライト命令直後にレジスタリード命令が発行された場合、通常のレディ状態“000000”とは異なり、バスマスタのリードのバスサイクルを延長させて正常なリードデータが準備できる時間を確保するための状態として、“000010”が設けられている。
(2)除算前処理(“000001”−“100001”)
非回帰法アルゴリズムに入る前準備期間である。“000001”はバスマスタからライトされたデータを除算器内部のHRLに転送するサイクルであり、“100001”は非回帰法の1サイクル目で使用する、“前回の演算結果のMSB(符号)”を求めるために使用される。
(3)非回帰法(“100011”−“001110”)
非回帰法の処理を33サイクル行う。ただし、33サイクル目(“001110”)は他と少しだけ異なる。結果の余は32サイクル目に求められるため、このサイクルにはHRHはデータを取り込まない。
(4)除算後処理(“001110”−“001100”)
非回帰法で必要な事後処理用サイクルである。“001111”では余の足し戻し(引き戻し)と、商が負の場合の1加算を実行し、“001111”と“001101”の2状態で被除数が負で割り切れる場合の商・余補正を行っている。RAR、RSRへのセットは、“001110”,“001100”で行われる。
(5)オーバーフロー処理(“000110”−“000111”)
“000110”状態が点線で示されているのは、オーバーフロー状態への遷移が、普段状態遷移を司っている回路とは別の回路で行われるからである。また、この状態は、表面上1サイクルに見えない(“100110”と“000110”で半サイクルずつ)ので、点線で表している。“000111”ではRAR,RSRのセットを行っている。
このように除算器では、1つの除算に上記のように38サイクルもの長時間を費やすものである。このように実際には除算には比較的長い時間を費やすものであるにもかかわらず、前記図1のようなシステムとするとともに、図25のような並列演算処理を行うようにすることにより、上記除算による遠近処理と、積和演算等による座標変換とクリップ処理とを同時並行的に行うようにすることにより、実質的な3次元画像処理を大幅に高速にすることができる。
図40には、図1のシングルチップマイクロコンピュータの一実施例のレイアウト図が示されている。同図には、図1の各回路ブロックのうち、主要な回路が代表として例示的に示されている。各回路ブロックは、前記のようにバスが3つに分割されることに応じて、各バスが短く、かつ接続関係が容易になるよう配置されている。同図には、上記3に分割されたバスのうち、第1バスが示され、他の第2バス及び第3バスは、それらに対応した回路ブロックに隣接して配置されるものと理解されたい。
中央処理装置CPUとキャッシュメモリのキャッシュデータ部CACHE−D1,D2は、第1バスを挟んで配置される。キャッシュメモリのキャッシュタグ部CACHE−Aとキャッシュコントロール部CACHE−Cは、乗算器MULTと並んで配置される。上記中央処理装置CPUとキャッシュメモリ及び乗算器MULTがチップの約上半分を占める。
バスステートコントローラBSCは、キャッシュデータ部CACHE−D1,D2とにより中央処理装置CPUを挟むように配置される。図示しない第2のバスに接続されるブレークコントローラUBCと除算器DIVUと割り込みコントロール回路INT1,INT2及び直接メモリアクセス制御装置DMACと、そのデータバッファDATA1,DATA2がチップの左下部に集中して配置される。
そして、図示しない第3のバスに接続されるタイマFRT,WDT及びシリアルコミニュケーションインターフェイスSCIが並んで配置される。これらの周辺モジュールは、そのバスサイクルが遅くされることにより、出力回路の動作が相対的に遅い、既存の回路をそのまま利用することにより、その占有面積が小さくできる。チップの周辺には、前記のような端子に対応した入力バッファ、出力バッファ及び入出力バッファが配置される。
図41には、この発明に係るシングルチップマイクロコンピュータの応用例が示されている。同図(A)には、そのブロック図が示され、(B)には外観図が示されている。この実施例では、ペン入力の携帯用マイクロコンピュータに向けられている。
この実施例では、(A)のブロック図に示すように、マイクロコンピュータ(microcomputer)が前記図1のようなシングルチップマイクロコンピュータにより構成されるものであり、それと外部メモリ(Memory)及びASIC(特定用途向IC)により構成される周辺LSIから構成される。端末装置としてLCDにペン入力機能を加えた表示装置や、音声入出力回路が設けられる。(B)の外観図に示すように、パームトップ型又はノートブック型のような薄型軽量で、LCD表示部にペン入力部が備えられ、キー入力用のスイッチパネルが設けられる。
図42には、図40のペン入力の携帯用マイクロコンピュータの一実施例のブロック図が示されている。シングルチップマイクロコンピュータMCUは、バッテリー(Battery)駆動される。マイクロフォン(Microphone)は、音声入力用に用いられる。スピーカー(Speaker) は音声出力用に用いられる。
NCUは、電話回線用の入出力インターフェイスであり、電話器(Telephone) によるデータ入力又は出力を行うようにされる。マイクロコンピュータシステムとしては、外部バスにLCDコントローラを介して表示とペン入力を行うLCDパネルが設けられる。外部メモリとしてSDRAM又はPSRAMが用いられる。これらのメモリは、必要に応じて上記電池電圧によりバッテリーバックアップされる。
マスクROMは、データ処理のためのプログラムや文字パターンが記憶される。PCMCIAI/Fは、パーソナル コンピュータ メモリカード インターナショナル アソシエイション(Personal Computer Memory Card International Association) インターフェイスである。I/Oは、無線LAN(ローカル・エリア・ネットワーク)等の拡張周辺インターフェイスである。そして、メモリカード(ROM card) と(RAM card) が脱着可能な外部メモリとして使用できるようにされる。
上記の実施例から得られる作用効果は、下記の通りである。すなわち、
(1)内部のバスを3つに分けて、第1のバスには中央処理装置及びキャッシュメモリが接続し、第2のバスには直接メモリアクセス制御回路、外部バスインターファイスを接続し、上記第1のバスと第2のバスには、上記第1のアドレスバスと第2のアドレスバスとを選択的にを接続させるバストランシーバ機能を持つブレークコントローラを設け、上記第1及び第2のバスサイクルに対して低速なバスサイクルとされた第3のバスには、周辺モジュールを接続し、上記第2のバスと第3のバスとの間でのデータ転送と同期化を行うバスステートコントローラを設けることにより、信号伝達経路の負荷容量が減少するので信号伝達が高速に行うことができるとともに、動作速度が要求されない周辺モジュールを分離しているため、そこでの電流消費を減らすことができる。
(2)内部のバスを3つに分けて、第1のバスには中央処理装置、上記第1のバスには、固定小数点方式の積和演算器を接続し、第2のバスには固定小数点方式の除算器を接続することにより、少ないサイクル数により積和演算処理が高速に行えるとともに、第2のバスには固定小数点方式の除算器を接続するものであるので、そこで演算結果をそのまま除算できるので3次元画像処理を高速に行うようにすることができる。
(3)上記第3のバスに接続される周辺モジュールとして、フリーランニングタイマ、シリアルコミュニケーションインターフェイス又はウォッチドッグタイマのうち何れか少なくとも1つを設けることにより、データ処理の高速化には直接関与しない周辺モジュール用の低速バスサイクルを構成することができ、中央処理装置の高速化に追従させることなく、既存の周辺モジュールをそのまま使用できるから設計の効率化と周辺モジュールにおける低消費電力化を図ることができる。
(4)上記ブレークコントローラは、直接メモリアクセス制御装置によるキャッシュメモリのデータの書き換えを監視する機能を持たせることにより、内部バスの分離による高速化や低消費電力化を図りつつ、直接メモリアクセス制御装置によるキャッシュメモリのデータの書き換えによるキャッシュデータの破壊を監視することができる。
(5)上記の各回路ブロックをフルスタティック型CMOS回路により構成し、各回路ブロック毎にクロックパルスの供給/停止を制御するレジスタを含む動作モードコントローラを設けることにより、必要な回路ブロックに対してのみクロックを供給することができるから低消費電力化を図ることができる。
(6)上記外部バスインターフェイスは、シンクロナスダイナミック型RAMのバーストリードモード及びシングルライトモードとダイナミック型RAM及び擬似スタティック型RAMを直接アクセスできるインターフェイス機能を持たせることにより、直接にシンクロナスダイナミック型RAM、ダイナミック型RAM及び擬似スタティック型RAM等を直接接続できるから使い勝手を良くすることができる。
(7)外部バスインターフェイスのクロックパルスに対して位相を遅らせてクロックパルスを形成して中央処理装置に供給させることにより、シンクロナスダイナミック型RAMのセットアップ/ホールド時間を確保でき動作マージンの拡大を図ることができる。
(8)シンクロナスダイナミック型RAMのバーストモードにより読み出されるデータと上記キャッシュメモリの1ブロックのデータ及び直接メモリアクセス制御装置による単位のデータ転送とには整合性を持たせることにより、効率のよいデータ転送が可能になる。
(9)外部バスインターフェイスにおいて、中央処理装置が特定のアドレス空間をアクセスすることにより起動がかけられて、ロウアドレスストローブ信号、カラムアドレスストローブ信号及びライトイネーブル信号を共にロウレベルにし、アドレス信号の一部を用いてシンクロナスダイナミック型RAMの動作モード設定の設定に必要な制御信号を発生させるメモリ制御信号発生回路を設けることにより、中央処理装置によるシンクロナスダイナミック型RAMのモード設定を簡単に行うことができる。
(10)上記キャッシュメモリとしては、複数からなるタグメモリ及びそれぞれに対応したデータメモリにより構成し、上記タグメモリ及びデータメモリにはCMOSスタティック型メモリセルを用い、その読み出し信号を増幅するセンスアンプとしてCMOSラッチ回路と、かかるCMOSラッチ回路に動作電流を供給するPチャンネル型MOSFETとNチャンネル型MOSFETからなるパワースイッチMOSFETからなるCMOSセンスアンプを用いることにより、信号増幅を行った後には直流電流が流れなくできるからキャッシュメモリにおける低消費電力化を図ることができる。
(11)上記複数からなるデータメモリに設けられるセンスアンプ又はセンスアンプとワード線の双方を、タグメモリからのヒット信号に対応したもののみを活性化させるようにすることにより、低消費電力化を図ることができる。
(12)上記複数からなるデータメモリは、キャッシュコントローラによって全部又は一部についてタグメモリからのヒット信号の伝達を無効にして中央処理装置による直接アクセスを可能にすることにより、ユーザーの多様な要求に応じた使い方に適合できる。
(13)中央処理装置とキャシュメモリとを含むシングルチップのマイクロコンピュータにおいて、キャッシュメモリとしてCMOSスタティック型メモリセルを記憶素子として用い、その読み出し信号を増幅するセンスアンプとしてCMOSラッチ回路及びかかるCMOSラッチ回路に動作電流を供給するPチャンネル型MOSFETとNチャンネル型MOSFETからなるパワースイッチMOSFETからなるCMOSセンスアンプを用いることにより、センスアンプでの信号増幅を行った後には直流電流が流れないから内蔵キャッシュメモリでの低消費電力化を図ることができる。
(14)上記複数からなるデータメモリは、タグメモリからのヒット信号に対応したもののセンスアンプのみを活性化させることにより、キャッシュメモリ内蔵のシングルチップのマイクロコンピュータの低消費電力化を図ることができる。
(15)バス使用権制御信号に従ってスレーブモードに設定されたときには第1の端子をバスリクエスト信号に、第2の端子をバスアクノリッジ信号にそれぞれ使用し、マスターモードにされるとき上記第1の端子をバスグラント信号に、上記第2の端子をバスレリーズ信号にそれぞれ切り換えて使用することにより、1つのシングルチップマイクロコンピュータがバス使用権制御信号に従ってスレーブモード又はマスターモードとして使用でき、しかも同じ端子を切り換えて使用するものであるから、外部端子数が減るとともに接続が簡単となって使い勝手が良くなる。
(16)遠近処理されたN−1番目座標に対するクリピング処理を中央処理装置により行い、特定の物体固有のN+1番目座標点を指定された視点を原点とする座標に変換する座標変換処理を中央処理装置と積和演算器により行い、上記クリッピング処理と座標変換処理と時間的に並行して座標変換処理が終わったN番目座標について遠近処理を除算器により行うことにより、中央処理装置又はこれと積和演算器によるクリピング処理と座標変換処理と時間的に同時並行して比較的長い時間を費やす遠近処理を除算器により行うことにより、高速な3次元画像処理が実現できる。
(17)上記中央処理装置と積和演算器はキャッシュメモリとともに第1のバスに接続され、上記除算器は直接メモリアクセス制御回路、外部バスインターファイスとともに第2のバスに接続され、上記第1と第2のバスに接続されるとともに、第1のバスのアドレスバスを第2のバスのアドレスバスに選択的に接続させるバストランシーバ機能を持つブレークコントローラが設けられ、上記第1及び第2のバスサイクルに対して低速なバスサイクルを持つ周辺モジュールが接続される第3のバスと、上記第2のバスと第3のバスとの間での信号転送と同期化を行うバスステートコントローラとが設けられるシングルチップのマイクロコンピュータにより上記3次元画像処理を行うことにより、比較的簡単な構成により高速な3次元画像処理を実現することができる。
以上本発明者よりなされた発明を実施例に基づき具体的に説明したが、本願発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、図1の実施例において、中央処理装置CPUは、RISC型プロセッサである必要はなく、種々の実施形態を採ることができる。この実施例のシングルチップマイクロコンピュータは、前記のような各回路ブロックを登録しておいて、ユーザーの仕様に応じて必要な回路ブロックを搭載するというASICにより構成するものであってもよい。
本願におけるシングルチップマイクロコンピュータとは、ROMとRAMを内蔵したマイクロコンピュータという狭い意味ではなく、1個の半導体基板上に形成されてなるデータ処理装置といような広い意味で用いている。それ故、本願に係るシングルチッブマイクロコンピュータは、中央処理装置と、積和演算器と、除算器とを有し、少なくとも上記積和演算器と除算器とが並列処理可能とされ、単一の半導体基板上に形成されてなるデータ処理装置というように表現できる。あるいは、連続読み出し可能な外部メモリが接続可能とされ、キャッシュメモリと、上記キャッシュメモリと1ラインのデータ長に等しいデータを外部メモリから連続して読み込み可能な手段とを単一の半導体基板上に備えてなるデータ処理装置ともいうことができる。
また、モード設定可能な外部メモリが接続可能とされ、上記モード設定をするためのデータバス端子以外の外部端子を介して上記メモリに転送可能な手段を単一の半導体基板上に備えてなるデータ処理装置ということもできる。さらに、クロックに同期して、アドレス、データを入出力する外部メモリが接続可能とされるデータ処理装置であって、上記メモリ及び当該データ処理装置に必要なクロックを形成する手段を単一の半導体基板上に形成してなるデータ処理装置、あるいは32ビット単位でメモリアクセスし、16ビット固定長命令を実行する中央処理装置と、命令/データ混在型のキャッシュメモリとを具備し、メモリからのロード/ストアを行う命令を偶数ワード・バウンダリに置くようにしてなるデータ処理装置ともいうことができる。
この発明は、上記のような広い意味でのシングルチップマイクロコンピュータ及びそれを用いた3次元画像処理に適用できるものである。
CPU…中央処理装置、MULT…乗算器、INTC…割り込みコントーラ、DMAC…直接メモリアクセス制御装置、DIVU…除算器、FRM…フリーランニングタイマ、WDT…ウォッチドッグタイマ、SCI…シリアルコミュニケーションインターフェイス、AB1〜AB4…アドレスバス、DB1〜DB4…データバス、BSC…バスステートコントローラ、DMAC…直接メモリアクセス制御装置、OBIF…外部バスインターフェイス、MCTG…メモリ制御信号発生回路、UBC…ブレークコントローラ、INTC…割り込みコントローラ、CDM…データメモリ(キャッシュ)TAG…タグメモリ(キャッシュ)、CAC…キャッシュコントローラ、CPG…パルス発生回路。
AB1…第1アドレスバス、DB1…第1データバス、AB2…第2アドレスバス、DB2…第2データバス、AB3…第3アドレスバス、DB3…第3データバス、CB…コントールバス、AB4…外部アドレスバス、DB4…外部データバス、B1…第1バス、B2…第2バス、B3…第3バス、B4…第4バス。 MCU…シングルチップマイクロコンピュータ、DRAM…ダイナミック型RAM、SDRAM…シンクロナスダイナミック型RAM、PSRAM…擬似スタティック型RAM、SRAM…スタティック型RAM。
S−MCU…スレーブ側マイクロコンピュータ、M−MCU…マスタ側マイクロコンピュータ。
Q1〜Q29…MOSFET、N1〜N7…CMOSインバータ回路、W0,W1…ワード線、DL0,/DL0〜DL1,/DL1…相補データ線、CDL0,/CDL0…共通データ線。
IR…命令レジスタ、AB…アドレスバッファ、DB…データバッファ、JR…除数レジスタ、HRL…被除数下位&商保存レジスタ、HRH…被除数上位&余保存レジスタ、CONT…制御レジスタ、VCT…割り込みベクタ、RAR…余長期保存レジスタ、RSR…商長期保存レジスタ、FA&CLA…フルアダー&キャリールックアヘッド、AUDA&AUCLA…1加算器、LDMCA…状態制御回路、LDMCB…オーバーフロー処理回路、LDPRM…I/O制御回路。
22…SDRAM、30…モードレジスタ、200A,200B…メモリアレイ、201A,201B…ロウデコーダ、202A,202B…センスアンプ及びカラム選択回路、203A,203B…カラムデコーダ、205…カラムアドレスバッファ、206…ロウアドレスバッファ、207…カラムアドレスカウンタ、208…リフレッシュカウンタ、210…入力バッファ、211…出力バッファ、212…コントローラ。