(57)【特許請求の範囲】
【請求項１】
１個の半導体基板に形成されたマイクロコンピュータであって、中央処理装置と、該中央処理装置によってアクセスされる内蔵メモリと、前記中央処理装置に内部バスで結合されたキャッシュメモリと、前記中央処理装置をマイクロコンピュータの外部アドレス空間とインタフェースさせるインタフェース手段と、前記外部アドレス空間を前記キャッシュメモリによるキャッシュの対象とし、前記内蔵メモリをキャッシュの非対象に制御する制御手段と、を含み、
前記制御手段は前記中央処理装置によって出力されたアドレスにより前記キャッシュメモリにアクセスするか否かを判定する判定回路を含み、
前記インタフェース手段は、外部アドレス空間に対するアクセスサイクルの起動を、キャッシュメモリのキャッシュヒット又はキャッシュミスの判定に要する一定期間ウェイトし、当該ウェイト動作を、キャッシュヒットの状態がキャッシュミスの状態に変化された次のアクセスサイクルから抑止し、抑止したウェイト動作を、キャッシュミスの状態がキャッシュヒットの状態に変化された次のアクセスサイクルから再開するものであり、当該キャッシュミスの状態がキャッシュヒットの状態に変化されたとき前記キャッシュメモリはヒットに係るデータの入出力動作を抑止し、前記インタフェース手段は外部アドレス空間に対するアクセスサイクルを起動するものであることを特徴とするマイクロコンピュータ。
【請求項２】
前記キャッシュメモリは２のべき乗数のウェイ数を有し、前記内蔵メモリは、前記中央処理装置の動作プログラムを格納するＲＯＭを含み、当該ＲＯＭのデータ記憶容量をＲキロバイトとし、前述のキャッシュメモリのデータ記憶容量をＣバイトとしたとき、前述のキャッシュメモリのウェイ数とキャッシュエントリのデータライン長に応じて定数ａ、ｂを、下記の通り、
８ｗａｙ以上／４バイトライン長：ａ＝２４．０１、ｂ＝８１９４
８ｗａｙ以上／８バイトライン長：ａ＝９．００、ｂ＝３３２８
８ｗａｙ以上／１６バイトライン長：ａ＝４．００、ｂ＝１２８０
８ｗａｙ以上／３２バイトライン長：ａ＝１．７５、ｂ＝５１２
８ｗａｙ以上／６４バイトライン長以上：ａ＝０．７５、ｂ＝２５６
４ｗａｙ／４バイトライン長：ａ＝２５．１９、ｂ＝８８０４
４ｗａｙ／８バイトライン長：ａ＝１０．００、ｂ＝３５８４
４ｗａｙ／１６バイトライン長：ａ＝５．００、ｂ＝１５３６
４ｗａｙ／３２バイトライン長：ａ＝１．８４、ｂ＝５５７
４ｗａｙ／６４バイトライン長以上：ａ＝０．７９、ｂ＝２７６
２ｗａｙ／４バイトライン長：ａ＝３２．４１、ｂ＝１１１１２
２ｗａｙ／８バイトライン長：ａ＝１１．９０、ｂ＝４３２８
２ｗａｙ／１６バイトライン長：ａ＝５．５０、ｂ＝１７９２
２ｗａｙ／３２バイトライン長：ａ＝２．０３、ｂ＝６５１
２ｗａｙ／６４バイトライン長以上：ａ＝０．８７、ｂ＝３１６
１ｗａｙ／４バイトライン長：ａ＝３６．０６、ｂ＝１４３６１
１ｗａｙ／８バイトライン長：ａ＝１８．７５、ｂ＝６５９１
１ｗａｙ／１６バイトライン長：ａ＝８．００、ｂ＝２８１６
１ｗａｙ／３２バイトライン長：ａ＝４．００、ｂ＝１２８０
１ｗａｙ／６４バイトライン長以上：ａ＝１．４８、ｂ＝５４９
と定めたとき、Ｃ＋ａＲはｂを越えない関係を満足して成るものであることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記中央処理装置はＲＩＳＣアーキテクチャを有し、前記中央処理装置、内蔵メモリ、及びキャッシュメモリは内部バスを共有し、中央処理装置は当該内部バスをその動作基準クロック信号の１クロックサイクルを最高アクセス速度としてアクセスするものであることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
前記中央処理装置はＲＩＳＣアーキテクチャを有し、前記中央処理装置、内蔵メモリ、及びキャッシュメモリは内部バスを共有し、中央処理装置は当該内部バスをその動作基準クロック信号の１クロックサイクルを最高アクセス速度としてアクセスするものであることを特徴とする請求項２記載のマイクロコンピュータ。
【請求項５】
前記キャッシュメモリは、中央処理装置によるアクセスの開始から該中央処理装置の動作基準クロック信号の１クロックサイクルの期間を以てキャッシュヒットに係るデータを前記内部バスに出力するものであることを特徴とする請求項３記載のマイクロコンピュータ。
【請求項６】
前記キャッシュメモリは、中央処理装置によるアクセスの開始から該中央処理装置の動作基準クロック信号の１クロックサイクルの期間を以てキャッシュヒットに係るデータを前記内部バスに出力するものであることを特徴とする請求項４記載のマイクロコンピュータ。
【発明の詳細な説明】
技術分野
本発明は、中央処理装置と共にメモリなどを内蔵したシングルチップ化されたマイクロコンピュータに係り、特に中央処理装置によるマイクロコンピュータ内外のメモリアクセス動作を高速化する技術に関し、例えば、中央処理装置がＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャを有するマイクロコンピュータに適用して有効な技術に関する。
背景技術
シングルチップマイクロコンピュータは、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）がＣＰＵ（中央処理装置=Central Processing Unit）と共に単一半導体基板上に集積されているので、一般にその内蔵メモリをＣＰＵがアクセスするのに要する時間は短く、命令やデータフェッチを高速化する上において有利である。特にＲＩＳＣアーキテクチャを採るＣＰＵを持つシングルチップマイクロコンピュータでは、パイプライン形式で命令を実行していくので、メモリのアクセススピードがそのままデータ処理性能に比例して効いてくるので、内蔵メモリをＣＰＵの動作基準クロック信号の１クロックサイクルでアクセスできる形態を採るものがある。このとき外部メモリアクセスには通常複数クロックサイクルを要する。そのようなシングルチップマイクロコンピュータを製品化したものとしては、例えば、日経ＢＰ社発行の「日経エレクトロニクス  １９９２年１１月２３日号，ｎｏ．５６８」第９９頁乃至第１１２頁に記載のものがある。また、特開平２−１８７８８１号公報には、命令キャッシュメモリと該命令キャッシュメモリに命令がない場合にのみアクセスされる主記憶装置を中央処理装置と共に同一チップに搭載した半導体集積回路が示されている。
本発明者は中央処理装置と共にキャッシュメモリや内蔵メモリを搭載したシングルチップ化されたマイクロコンピュータによる内外のメモリアクセス動作を高速化することについて検討した。このとき、外部メモリアクセスによるデータ処理性能の低下と、マイクロコンピュータの動作周波数向上に対するデータ処理性能向上の飽和という２点に着目した。
前者の外部メモリアクセスという点については、内蔵メモリアクセスは１クロックサイクルで可能であるにもかかわらず、外部メモリアクセスは複数クロックサイクルを要するので、極力内部メモリアクセスを行うようにすることが得策であるが、プログラムサイズが大きく全てのプログラムコードを内蔵ＲＯＭに納めることができない場合は、外部メモリにプログラムを配置しなければならない。このとき、一旦外部メモリのプログラムを実行開始すると、命令フェッチなどに時間がかかり、データ処理性能は極めて低下してしまう。遅い外部メモリを利用する場合にもデータ処理性能を向上させるには、マイクロコンピュータにキャッシュメモリを内蔵させればよい。しかしながらシングルチップマイクロコンピュータにはチップ上に各種周辺機能やメモリ類を搭載する必要があり、あまり大きなサイズのキャッシュメモリを搭載することはできない。小さいサイズのキャッシュメモリではヒット率が低く、データ処理性能の向上はあまり期待できない。特に、マイクロコンピュータ内蔵メモリもキャッシュ対象とする場合、キャッシュメモリのアクセス速度と内蔵メモリのアクセス速度に大きな差がないときには、ヒット率が低ければ、キャッシュミスに係るデータをキャッシュメモリに追加する処理によって、結局キャッシュメモリ搭載の意義がなくなる場合のあることが明らかにされた。
動作周波数向上に対するデータ処理性能向上の飽和という点に関しては、例えばＣＰＵの動作周波数が２０ＭＨｚであるときＣＰＵが内蔵ＥＰＲＯＭまたは内蔵マスクＲＯＭを１クロックサイクルでアクセス可能であったとする。このとき、ＣＰＵの動作周波数がさらに向上してくると、大容量ＲＯＭやフラッシュメモリなどのように大きなワード線容量やビット線容量などによってアクセスタイムをあまり短縮できない内蔵ＲＯＭに対しては、そのアクセスに複数クロックサイクルを要するようになる。そうなると、特にメモリアクセス時間がそのまま性能に比例するＲＩＳＣアーキテクチャーのマイクロコンピュータでは動作周波数を上げてもシステムのデータ処理性能が飽和してしまう。
本発明の目的は、内蔵メモリと共にキャッシュメモリを搭載するシングルチップのマイクロコンピュータにおける双方のメモリの動作をデータ処理性能向上のために最適に制御することにある。
また、本発明の別の目的は、キャッシュメモリを内蔵しない場合にも、マイクロコンピュータの内外に配置されたメモリのデータアクセスを向上させることができるマイクロコンピュータを提供することにある。
本発明のその他の目的は、外部にメモリを拡張したときや内蔵メモリが低速な場合にもデータ処理性能の低下を防ぐことができるマイクロコンピュータを提供することにある。
発明の開示
本発明において、１個の半導体基板に形成されたマイクロコンピュータ（ＭＰＵ，ＭＰＵ１）は、中央処理装置（１）と、該中央処理装置によってアクセスされる内蔵メモリ（９，１０）と、前記中央処理装置に内部バス（６）で結合されたキャッシュメモリ（ＣＡＣＨＥ）と、前記中央処理装置をマイクロコンピュータの外部アドレス空間とインタフェースさせるインタフェース手段（１１，１２）と、前記外部アドレス空間を前記キャッシュメモリによるキャッシュの対象とし、前記内蔵メモリをキャッシュの非対象に制御する制御手段（２，７２）とを含む。
このように、マイクロコンピュータ（ＭＰＵ，ＭＰＵ１）は、キャッシュメモリ（ＣＡＣＨＥ）と共に内蔵メモリ（９，１０）を同一半導体基板に搭載し、当該内蔵メモリはキャッシュメモリにおけるキャッシュヒットの場合と同様に高速アクセス可能な内蔵メモリとされる。内蔵メモリ（９，１０）をキャッシュ対象としないこと、換言すれば内蔵メモリ（９，１０）をノンキャッシャブルエリアにマッピングする事により、どのような場合にも内蔵メモリアクセスをキャッシュヒットと同様に高速アクセスできることを保証する。すなわち、マイクロコンピュータ内蔵メモリもキャッシュの対象とした場合には、当該内蔵メモリのアクセスに際してキャッシュミスを生ずると、キャッシュミスに係るデータをキャッシュメモリに追加するための処理を行わなければならないが、上記手段においてはそのような事態を一切生じない。これにより、キャッシュメモリ（ＣＡＣＨＥ）自体の記憶容量が小さくキャッシュヒット率が低くても、高速にアクセス可能な内蔵メモリ（９，１０）と組み合わせて利用されることで、中央処理装置によるマイクロコンピュータ（ＭＰＵ，ＭＰＵ１）の内外に対する総合的なヒット率を高めることができる。したがって、中央処理装置による動作プログラムの全体的な実行過程におけるメモリアクセスの高速化、ひいてはデータ処理性能を全体的に高めることができる。
マイクロコンピュータは一般的に割り込みなどのタスク切替えが頻繁に発生し、プログラムカウンタの値が大きく変化する場合が多いので、キャッシュメモリ（ＣＡＣＨＥ）のヒット率が低下する傾向が高い。このとき、内蔵メモリと共にキャッシュメモリを搭載している前記マイクロコンピュータ（ＭＰＵ，ＭＰＵ１）において、割り込みベクタと割り込み処理プログラムを内蔵メモリに入れるようにし、当該メモリをキャッシュの対象としないことにより、割り込みが頻出するプログラムでもキャッシュヒットの場合と同様に、割り込み処理プログラムへの遷移を高速化する事ができ、この点においてもデータ処理性能もしくはデータ処理速度を向上させることができる。
シングルチップ化されたマイクロコンピュータに搭載可能なキャッシュメモリ及びプログラム格納用ＲＯＭの容量には限りがあり、それをコスト及びデータ処理性能の両面から最適化するには、前記キャッシュメモリが２のべき乗数のウェイ数（way）を有し、ＲＯＭのデータ記憶容量をＲ［ＫＢ＝Kilo-byte］とし、前述のキャッシュメモリのデータ記憶容量をＣ［Ｂ＝byte］としたとき、前述のキャッシュメモリのウェイ数とキャッシュエントリのデータライン長に応じて定数ａ、ｂを、
８ｗａｙ以上／４バイトライン長：ａ＝２４．０１、ｂ＝８１９４
８ｗａｙ以上／８バイトライン長：ａ＝９．００、ｂ＝３３２８
８ｗａｙ以上／１６バイトライン長：ａ＝４．００、ｂ＝１２８０
８ｗａｙ以上／３２バイトライン長：ａ＝１．７５、ｂ＝５１２
８ｗａｙ以上／６４バイトライン長以上：ａ＝０．７５、ｂ＝２５６
４ｗａｙ／４バイトライン長：ａ＝２５．１９、ｂ＝８８０４
４ｗａｙ／８バイトライン長：ａ＝１０．００、ｂ＝３５８４
４ｗａｙ／１６バイトライン長：ａ＝５．００、ｂ＝１５３６
４ｗａｙ／３２バイトライン長：ａ＝１．８４、ｂ＝５５７
４ｗａｙ／６４バイトライン長以上：ａ＝０．７９、ｂ＝２７６
２ｗａｙ／４バイトライン長：ａ＝３２．４１、ｂ＝１１１１２
２ｗａｙ／８バイトライン長：ａ＝１１．９０、ｂ＝４３２８
２ｗａｙ／１６バイトライン長：ａ＝５．５０、ｂ＝１７９２
２ｗａｙ／３２バイトライン長：ａ＝２．０３、ｂ＝６５１
２ｗａｙ／６４バイトライン長以上：ａ＝０．８７、ｂ＝３１６
１ｗａｙ／４バイトライン長：ａ＝３６．０６、ｂ＝１４３６１
１ｗａｙ／８バイトライン長：ａ＝１８．７５、ｂ＝６５９１
１ｗａｙ／１６バイトライン長：ａ＝８．００、ｂ＝２８１６
１ｗａｙ／３２バイトライン長：ａ＝４．００、ｂ＝１２８０
１ｗａｙ／６４バイトライン長以上：ａ＝１．４８、ｂ＝５４９
と定めたとき、Ｃ＋ａＲがｂを越えない関係を満足させるとよい。
キャッシュメモリのキャッシュヒット又はキャッシュミスの判定に要する一定期間、外部アドレス空間に対するアクセスサイクルの起動をウェイトさせることにより、キャッシュヒットになるとき、既に起動したバスサイクルを途中で停止させることによって外部メモリのデータが破壊される事態を防止することができる。しかしながら、そのようなウェイト期間は、キャッシュミスの場合における外部バスサイクル起動を遅らせることになる。一旦キャッシュミスが発生した場合、キャッシュミスの状態は複数回に亘って連続するという事情を考慮し、外部メモリアクセスを極力高速化するため、前記インタフェース手段は、外部アドレス空間に対するアクセスサイクルの起動を、キャッシュメモリのキャッシュヒット又はキャッシュミスの判定に要する一定期間ウェイトし、当該ウェイト動作を、キャッシュヒットの状態がキャッシュミスの状態に変化された次のアクセスサイクルから抑止し、抑止したウェイト動作を、キャッシュミスの状態がキャッシュヒットの状態に変化された次のアクセスサイクルから再開する。このとき、当該キャッシュミスの状態がキャッシュヒットの状態に変化されたとき、前記キャッシュメモリはヒットに係るデータの入出力動作を抑止し、前記インタフェース手段は外部アドレス空間に対するアクセスサイクルを起動する。
ダイレクトマップキャッシュメモリやウェイ数の少ないセットアソシアティブ形式のキャッシュメモリの場合には、一旦キャッシュミスするとしばらくその状態が連続する性質が顕著である。このとき、上記のように、キャッシャブルエリアに対するアクセスにおいては前回のキャッシャブルエリアに対するアクセスがキャッシュヒットである場合にだけ外部バスサイクルの起動にウェイトをかけ、キャッシャブルエリアに対するアクセスにおいて前回のキャッシャブルエリアに対するアクセスがキャッシュミスである場合には前記ウェイトを行わないようにする。これにより、キャッシュミス時のバスサイクルにアドレスヒット判定のための余分なウェイトサイクルが毎回入らないので、キャッシュミス時にけるメモリアクセスの性能低下を防ぐことができる。
上記マイクロコンピュータにおいてデータ処理性能を向上させる最適な形態は、前記中央処理装置はＲＩＳＣアーキテクチャを有し、前記中央処理装置、内蔵メモリ、及びキャッシュメモリは内部バスを共有し、中央処理装置は当該内部バスをその動作基準クロック信号の１クロックサイクルを最高アクセス速度としてアクセスするものである。前記キャッシュメモリは、中央処理装置によるアクセスの開始から該中央処理装置の動作基準クロック信号の１クロックサイクルの期間を以てキャッシュヒットに係るデータを前記内部バスに出力するものであれば更によい。
別のマイクロコンピュータ（ＭＰＵ２）は、前記キャッシュメモリに代えて、内蔵メモリ（２０２，２０３）よりもアクセス動作の速い高速ＲＡＭ（２０１）を採用する。更に、中央処理装置（２００）が特定（ＣＴＡＲの値）のアクセスを行なったことをトリガとし、中央処理装置からバス権を獲得して前記内蔵メモリ（２０２，２０３）又は前記外部アドレス空間の特定アドレス（２０８）から別の特定アドレスまでの内容を高速ＲＡＭ（２０１）に転送し、転送後における中央処理装置のアクセスが前記転送元アドレスであるとき（ＣＳＡＲ≦アドレス≦ＣＥＡＲ）、当該アクセス対象を高速ＲＡＭに切換え制御する転送制御手段（２０５）を採用する。高速ＲＡＭへのデータ転送対象は、内蔵メモリ又は外部メモリの何れか一方に限定したり、或いは双方を対象とすることもできる。
このようにマイクロコンピュータ（ＭＰＵ２）に内蔵された高速ＲＡＭ（２０１）に事前にデータ若しくはプログラムを転送して利用可能にすることができる。例えば、アクセスタイムが遅い内蔵メモリのプログラムなどのうち、ある部分を予め高速ＲＡＭ内に転送しておいて実行させるようにすることにより、その部分の実行を高速化できる。当然、内蔵メモリに収まりきれずにプログラムが外部メモリにはみ出しても、この外部メモリを内蔵メモリと同様に制御すれば性能低下を防ぐことができる。シングルチップ化されたマイクロコンピュータが対象にする主なアプリケーションでは、高速性が要求されるルーチンは割り込みサービスの部分など比較的そのアドレス範囲と実行タイミングが限定されており、あまり処理性能が必要でないメインルーチンなどのバックグランドルーチンを実行中に高速実行が必要な部分をあらかじめ高速ＲＡＭに転送しておくことができる。その結果、プログラム処理全体の性能が向上される。
更に別のマイクロコンピュータ（ＭＰＵ３）は、前記キャッシュメモリに代えて、内蔵メモリ（４０２，４０３）よりもアクセス動作の速い高速ＲＡＭ（４０１）を採用し、更に、中央処理装置（４００）が内蔵メモリ（４０２，４０３）又は前記外部アドレス空間（４０８）をアクセスしたことをトリガとし、中央処理装置によるその内蔵メモリアクセス又は外部アドレス空間のアクセスに並行して当該アクセスデータを高速ＲＡＭ（４０１）に転送する制御を所定のアドレス範囲（ＣＳＡＲ≦アドレス≦ＣＥＡＲ）に対して行い、所定のアドレス範囲の全てのアドレスに対する前記データ転送完了後における中央処理装置のアクセスが前記転送元データのアドレスであるとき当該アクセス対象を高速ＲＡＭに切換え制御する転送制御手段（４０５）を採用する。高速ＲＡＭへのデータ転送対象は、内蔵メモリ又は外部メモリの何れか一方に限定し、或いは双方を対象とすることもできる。
データ処理性能をあまり必要としないバックグランド処理が少ない場合には、高速化したい範囲の情報を予め転送するための時間を割きにくい。このため、上記のように、内蔵メモリの高速化したい範囲を中央処理装置がアクセスしたとき、それに並行して高速ＲＡＭへも転送するようにしておけば、その範囲を初めて実行する際は内蔵メモリのアクセスタイムに依存する性能しか出ないが、２回目以降の実行は高速ＲＡＭのアクセスとなるため高速化される。当然、内蔵メモリに収まりきれずにプログラムが外部メモリにはみ出しても、この外部メモリを内蔵メモリと同様に制御すれば性能低下を防ぐことができる。
その他のマイクロコンピュータ（ＭＰＵ４）は、前記キャッシュメモリに代えて、内蔵メモリ（６０２，６０３）よりもアクセス動作の速い高速ＲＡＭ（６０１）を採用し、更に、内蔵メモリ又は外部メモリ（６０８）から前記高速ＲＡＭへのデータ転送を行うデータ転送制御手段（６１２）と、前記高速ＲＡＭに転送されたデータの転送元アドレス（ＣＳＡＲ≦アドレス≦ＣＥＡＲ）に対する中央処理装置のアクセスを前記高速ＲＡＭへのアクセスに切換え制御するアクセス切換え制御手段（６０４）とを採用する。高速ＲＡＭへのデータ転送対象は、内蔵メモリ又は外部メモリの何れか一方に限定し、或いは双方を対象とすることもできる。
そのように、中央処理装置が内蔵メモリのある指定された範囲をアクセスしようとしたときに、無条件に高速ＲＡＭをアクセスするように構成すれば、ユーザがプログラムを初期設定する時などに予め、高速ＲＡＭ内に内蔵メモリ内の高速化したいプログラムやデータを転送しておけば、データ処理性能を向上させることができる。Ｃコンパイラやアセンブラなどで完成されたプログラムのうち高速化すべきところがわかっていれば、上記構成にて簡単にデータ処理性能を向上できる。この手段によれば、キャッシュミスによるペナルティや、バックグランド処理中の高速化ルーチンの転送がなくなる。また、実行時間が、初回通過時とそれ以降も全く同じになり、タイミング設計がやり易い特長を持つ。当然、内蔵メモリに収まりきれずにプログラムが外部メモリにはみ出しても、この外部メモリを内蔵メモリと同様に制御すれば性能低下を防ぐことができる。
【図面の簡単な説明】
第１図は本発明の一実施例に係るシングルチップマイクロコンピュータの一実施例ブロック図である。
第２図は第１図に示されたマイクロコンピュータに含まれるバスコントローラと外部バスインタフェースの一例ブロック図である。
第３図は第１図に示されたマイクロコンピュータにおける内蔵ＲＯＭ有効モードにおけるアドレスマッピング図である。
第４図は第１図に示されたマイクロコンピュータにおける内蔵ＲＯＭ無効モードにおけるアドレスマッピング図である。
第５図はＣＰＵが出力するアドレス信号の説明図である。
第６図はキャッシュメモリの一例ブロック図である。
第７図はノンキャッシャブルエリアに対するアクセスの一例としてＣＰＵがＲＡＭ又はＲＯＭをリードアクセスするときのタイミングチャートである。
第８図はＣＰＵによるキャッシャブルエリアに対するキャッシュヒット時のリードアクセスのタイミングチャートである。
第９図はＣＰＵによるキャッシャブルエリアに対するキャッシュミス時のリードアクセスのタイミングチャートである。
第１０図はキャッシュミス時に制御信号ＢＥＣＮＯＰがネゲートされる場合のタイミングチャートである。
第１１図はキャッシュヒット時に制御信号ＢＥＣＮＯＰがネゲートされる場合のタイミングチャートである。
第１２図は複数のバスアクセスサイクルにおけるキャッシュヒット時とキャッシュミス時の状態を示す説明図である。
第１３図はキャッシュメモリを内蔵ＲＡＭと兼用する場合の構成説明図である。
第１４図はキャッシュメモリを内蔵ＲＡＭと兼用する場合におけるアドレス信号とアドレスアレイのキャッシュタグアドレスとの説明図である。
第１５図は本発明の別の実施例に係るシングルチップマイクロコンピュータのブロック図である。
第１６図は第１５図に示されるマイクロコンピュータにおけるバスコントローラと外部バスインタフェースの一例ブロック図である。
第１７図は内蔵メモリにダイナミックなアクセス比率ｒ、外部メモリアクセス時におけるキャッシュメモリのヒット率ｈ及び総合ヒット率Ｈの関係を示す説明図である。
第１８図は内蔵メモリにダイナミックなアクセス比率ｒ、外部メモリアクセス時におけるキャッシュメモリのヒット率ｈ及び総合ヒット率Ｈの関係を示す別の説明図である。
第１９図は外部アクセスクロックサイクル数Ｍ＝３のときにおける平均アクセスクロックサイクル数Ｓａの説明図である。
第２０図は外部アクセスクロックサイクル数Ｍ＝３のときにおける平均アクセスクロックサイクル数Ｓａの別の説明図である。
第２１図は外部アクセスクロックサイクル数Ｍ＝４のときにおける平均アクセスクロックサイクル数Ｓａの説明図である。
第２２図は外部アクセスクロックサイクル数Ｍ＝４のときにおける平均アクセスクロックサイクル数Ｓａの別の説明図である。
第２３図はキャッシュの構成（ｗａｙ数、ライン長、容量）に対するミス率（１−ｈ）を示す説明図である。
第２４図は第２３図に示される値から総合ヒット率Ｈ＝ｒ＋ｈ−ｒｈが０．９になるｒの値を算出して得られた説明図である。
第２５図はＰＲＧ＝５１２ＫＢとしＲＯＭ容量Ｒを計算して得られた説明図である。
第２６図は第２７図〜第３０図に示される内蔵ＲＯＭ容量とキャッシュメモリ容量との関係を式Ｃ＋ａＲ＝ｂで近似したときのキャッシュメモリの構成に対応する定数ａ、ｂの説明図である。
第２７図は第２５図に示される結果に基づいてキャッシュ容量Ｃと内蔵ＲＯＭ容量Ｒの関係をフルアソシアティブ（full）キャッシュメモリに関して得た説明図である。
第２８図は第２５図に示される結果に基づいてキャッシュ容量Ｃと内蔵ＲＯＭ容量Ｒとの関係を４ウェイセットアソシアティブ（4way）キャッシュメモリに関して得た説明図である。
第２９図は第２５図に示される結果に基づいてキャッシュ容量Ｃと内蔵ＲＯＭ容量Ｒとの関係を２ウェイセットアソシアティブ（2way）キャッシュメモリに関して得た説明図である。
第３０図は第２５図に示される結果に基づいてキャッシュ容量Ｃと内蔵ＲＯＭ容量Ｒの関係をダイレクトマップ（direct）キャッシュメモリに関して得た説明図である。
第３１図は高速ＲＡＭに事前にデータを転送して全体としてのメモリアクセスの高速化を図ったマイクロコンピュータの一実施例ブロック図である。
第３２図は第３１図に示されるマイクロコンピュータに含まれるＲＡＭ転送コントローラのブロック図である。
第３３図はアドレス変換の説明図である。
第３４図は高速ＲＡＭ及びアドレス変換器のブロック図である。
第３５図は高速ＲＡＭに同時にデータを転送してアクセスの高速化を図ったマイクロコンピュータの一実施例ブロック図である。
第３６図は第３５図に示されるマイクロコンピュータに含まれる高速ＲＡＭのブロック図である。
第３７図はＲＡＭ転送コントローラのブロック図である。
第３８図は高速ＲＡＭへの並列ライトタイミングの説明図である。
第３９図はＤＭＡＣなどによって低速メモリの情報をあらかじめ高速ＲＡＭに転送しておき当該低速メモリに対するアクセスアドレスを高速ＲＡＭのアドレスに置き換えてメモリアクセスの高速化を図ったマイクロコンピュータの一実施例ブロック図である。
第４０図は第３９図に示されるマイクロコンピュータに含まれるバスコントローラの一例ブロック図である。
第４１図は高速ＲＡＭ及びアドレス演算器のブロック図である。
発明を実施するための最良の形態
本発明の詳細な内容は、《１》〜《５》の項目に分けて順次説明されている。
《１．キャッシュメモリ内蔵シングルチップマイクロコンピュータ》
第１図には本発明の一実施例に係るシングルチップマイクロコンピュータの一実施例が示される。本実施例のシングルチップマイクロコンピュータ（単にマイクロコンピュータとも記す）ＭＰＵは、ＲＯＭ（リード・オンリ・メモリ）９及びＲＡＭ（ランダム・アクセス・メモリ）１０に加えてキャッシュメモリＣＡＣＨＥを一つの半導体基板に搭載し、ＲＯＭ９及びＲＡＭ１０はキャッシュメモリＣＡＣＨＥによるキャッシュの対象とはされず、ＣＰＵ（中央処理装置）１が内蔵ＲＯＭ９又はＲＡＭ１０をアクセスする場合にはキャッシュメモリＣＡＣＨＥのアクセス動作を利用せずに直接内蔵ＲＯＭ９又はＲＡＭ１０がリード／ライトされる。
前記マイクロコンピュータＭＰＵは、ＣＰＵ１、キャッシュメモリＣＡＣＨＥ、ＣＰＵ１の動作プログラム又はデータが格納されるＲＯＭ９、ＣＰＵ１の作業領域若しくはデータの一時記憶領域とされるＲＡＭ１０、乗算器（ＭＵＬＴ）５、バスコントローラ７、周辺回路１１、外部バスインタフェース１２等を含み、単結晶シリコンのような１個の半導体基板に形成される。外部バスインタフェース１２には外部バス１４を介して外部メモリ１３等が接続される。
本実施例のマイクロコンピュータＭＰＵは、特に制限されないが、ＲＩＳＣアーキテクチャを有し、ＣＰＵ１は、１命令あたりＣＰＵ１の動作基準クロック信号における１クロックサイクルで命令を実行し、バスアクセスの基本サイクル数を１クロックサイクルとするように、パイプライン動作によって命令フェッチ、命令デコード、命令実行、メモリアクセスなどのパイプラインステージを実行していく。ＣＰＵ１が接続される内部バス（ＩＢＵＳ）６は、１クロックサイクルを最小動作周期とする高速内部バスであり、内部アドレスバスＩＡＢ、内部データバスＩＤＢ、内部制御バスＩＣＢから成る。当該内部バス６には前記キャッシュメモリＣＡＣＨＥ、ＲＯＭ９、ＲＡＭ１０、乗算命令実行用の乗算器（ＭＵＬＴ）５、及びバスコントローラ７が接続される。バスコントローラ７は、内部バス６の制御及び周辺回路１１のアクセス制御などを行う。
第２図にはバスコントローラ７と外部バスインタフェース１２の一例ブロック図が示される。バスコントローラ７はバッファ７１と制御論理回路７２とに大別された回路ブロックを含む。外部バスインタフェース１２はバッファ１２０とタイミング生成回路１２１とに大別された回路ブロックを有する。バッファ７１は内部バス６を構成する内部データバスやアドレスバスなどに含まれる所定の信号を外部バスインタフェース１２と周辺回路１１に供給する。制御論理回路７２は内部バス６から供給されるアドレス信号の上位側ビットに基づいてアクセス対象エリアの判定を行い、また内部バス６から供給されるバスコマンドなどを受け取ってリード／ライトやアクセスデータ幅等のアクセスの種別を判定する。それらの判定結果に従って内蔵ＲＯＭ９の選択信号ＭＳＲＯＭ、ＲＡＭ１０の選択信号ＭＳＲＡＭ、内蔵回路に対するリード／ライト信号ＭＲＷ等を生成し、また、外部アクセスのためのチップ選択信号ＣＳ０〜ＣＳ３、リード信号ＲＤ、ライト信号ＷＲ、ＤＲＡＭ（ダイナミックＲＡＭ）アクセスのためのロウアドレスストローブ信号ＲＡＳ、カラムアドレスストローブ信号ＣＡＳ等をタイミング生成回路１２１から出力させるための制御信号などを出力する。外部バスアクセスのためのデータ入出力やアドレス信号の出力タイミングは、タイミング生成回路１２１が制御論理回路７２からの制御信号に基づいてバッファ１２０を制御する事によって行う。
また、制御論理回路７２にはキャッシュメモリＣＡＣＨＥにおけるキャッシュヒット／ミスがヒット信号１０９にて通知され、更に、制御信号ＢＥＣＮＯＰにて外部バスインタフェース１２を介する外部バスアクセスの開始タイミング若しくは外部バスアクセス開始までのウェイトが通知される。そして制御論理回路７２は、バスアクセス可能な状態を制御信号ＢＵＳＲＤＹにてＣＰＵ１に通知する。制御信号ＢＵＳＲＤＹはＣＰＵ１によるバスアクセスの区切りを規定することになる。
第３図には本実施例に係るマイクロコンピュータＭＰＵにおける内蔵ＲＯＭ有効モードにおけるアドレスマッピングの一例が示され、第４図には内蔵ＲＯＭ無効モードにおけるアドレスマッピングの一例が示される。
本実施例のマイクロコンピュータＭＰＵは、内蔵ＲＯＭ９を有効とする内蔵ＲＯＭ有効モードとそれを無効とする内蔵ＲＯＭ無効モードを含み、それらの動作モードは図示しないモード端子の設定状態によって決定される。本実施例においてキャッシュメモリＣＡＣＨＥによるキャッシュ対象空間は、第３図及び第４図におけるＣＳ０〜ＣＳ３空間及びＤＲＡＭ空間とされ、ＲＯＭ９及びＲＡＭ１０はキャッシュの対象とはされない。ＣＰＵ１が管理するアドレス信号は第５図に示されるように３２ビット（Ａ３１〜Ａ０）とされ、Ａ３１〜Ａ２４は前記アドレスマップに示される空間の選択に利用され、Ａ２３，Ａ２２はＣＳ空間におけるチップ選択に利用される。外部バスインタフェース１２を介して出力されるアドレス信号はＡ２１〜Ａ０の２２ビットとされる。第２図に示される前記制御論理回路７２は動作モードに応じて空間選択及びＣＳ空間選択のためのアドレスデコード論理７２１を供え、当該アドレスデコード論理７２１に従って前記選択信号ＭＳＲＯＭ，ＭＳＲＡＭを生成すると共に、ＣＳ０〜ＣＳ３、ＲＡＳ，ＣＡＳをタイミング制御回路１２１から出力させるための制御信号を生成する。外部バスアクセスに際してのアクセスサイクル数は夫々のＣＳ０〜ＣＳ３空間，ＤＲＡＭ空間毎にコントロールレジスタ７２０に設定されるウェイトステート数に従って制御論理回路７２がタイミング制御回路１２１に通知する。尚、空間選択やＣＳ空間選択のために実際にはＡ２２よりも下位側のアドレスビットもデコード対象とされている。
第６図にはキャッシュメモリＣＡＣＨＥの一例ブロック図が示される。キャッシュメモリＣＡＣＨＥはアドレスアレイ（ＡＡ）３、データアレイ（ＤＡ）４、コンパレータ２０、及びキャッシュコントローラ（ＣＣＯＮＴ）２などを備える。本実施例において、キャッシュメモリＣＡＣＨＥによるキャッシュ対象は命令のみ、データのみ、命令とデータの双方の、何れであってもよい。キャッシュメモリＣＡＣＨＥは、例えば一つのエントリを構成する１キャッシュラインの情報が外部記憶装置のどの位置（アドレス）に対応しているかを示す実効アドレス（仮想アドレスまたは物理アドレス）を記憶するキャッシュタグアドレス１０４、その実効アドレスを先頭とした連続する複数ワードの情報を記憶するデータライン１０６、そしてそのキャッシュラインに記憶している情報が有効であるかを示す有効ビット（Ｖ）１０５を備える。アドレスアレイ３はキャッシュタグアドレス１０４と有効ビット１０５を有し、データアレイ４はデータライン１０６を有する。尚、必要に応じてキャッシュメモリの内容が更新され外部大容量記憶装置の内容と異なることを示すダーティビットなどを設ける場合もある。これら以外にメモリ空間の種類を表わすフィールドが追加される場合もある。
中央処理装置ＣＰＵ１から内部アドレスバスＩＡＢに供給されるアドレス信号１００はタグアドレス１０１、エントリアドレス１０２、及びライン内バイトアドレス１０３とみなされる。ライン内バイトアドレス１０３はデータライン４に含まれるバイトデータを選択するための情報とされる。エントリアドレス１０２はデコーダ１１０にてデコードされ、アドレスアレイ３及びデータアレイ４からキャッシュラインを選択（インデックス）するために利用される。例えば１２８のキャッシュラインが存在する場合にはエントリアドレスは７ビットとされる。インデックスされたキャッシュラインのキャッシュタグアドレス１０４はコンパレータ２０にてタグアドレス１０１と比較される。その比較結果と前記有効ビット１０５はキャッシュコントローラ２に供給される。
キャッシュコントローラ２はコンパレータ２０による比較結果や有効ビット１０５を参照し、例えば、インデックスされたキャッシュラインが有効であって、当該キャッシュラインのキャッシュタグアドレス１０４がタグアドレス１０１に一致する場合、キャッシュヒット信号１０９にてバスコントローラ７にキャッシュヒットを通知する。これと共に、インデックスされたキャッシュラインのデータライン１０６からライン内バイトアドレス１０３にて所要のデータが選択されて内部データバスＩＤＢへ読み出され、或いはキャッシュラインのデータライン１０６に対してライン内バイトアドレス１０３にて選択される位置に内部バスＩＤＢのデータが書き込まれる。４０はインデックスされたデータラインからライン内バイトアドレス１０３にてデータを選択して内部データバスＩＤＢに出力するデータ出力回路、４１はインデックスされたキャッシュラインの所定位置をライン内バイトアドレス１０３にて選択して内部データバスＩＤＢからの書込みデータを供給するデータ入力回路である。
一方、インデックスされたキャッシュラインが無効である場合、又は、当該キャッシュラインのキャッシュタグ１０４がタグアドレス１０１に一致しない場合には、キャッシュヒット信号１０９にてバスコントローラ７にキャッシュミスが通知され、これによってバスコントローラ７は、そのときのアクセスアドレスに応ずるデータを含む１データライン分の情報を外部メモリ１３から読込む制御を行い、キャッシュコントローラ２はそれによって読込まれたデータによってデータライン１０６の内容を置き換える（ラインフィル）。置き換え対象とされるキャッシュラインは公知のＬＲＵ（Least Recent Use）等の論理に従って決定することができる。データラインの置き換えに際しては、それに対応されるキャッシュアドレスタグ１０４が当該キャッシュラインに書き込まれ、且つ有効ビット１０５がセットされる。３０はキャッシュタグアドレス１０４の入力ゲート、３１はキャッシュタグアドレス１０４の出力ゲート、１０５０は有効ビット１０５の入力ゲート、１０５１は有効ビット１０５の出力ゲートである。前記データ出力回路４０、データ入力回路４１、出力ゲート３１，１０５１、及び入力ゲート３０，１０５０の動作は、インデックス動作、ラインフィル動作、ＣＰＵ１によるライトアクセスかによってキャッシュコントローラ２が制御する。
第６図のアドレスアレイ３及びデータアレイ４は、ウェイ数が１のダイレクトマップ方式、ウェイ数が２の（２−ｗａｙ）セットアソシャアティブ又は４個（４−ｗａｙ）のセットアソシャアティブ形式などとされる場合がある。ウェイ数を増やせば、エントリアドレスでインデックスされるキャッシュラインの数が増えるのでキャッシュヒット率が増す。ウェイ数を増やす場合にはアドレスアレイ３とデータアレイ４もその数分だけ用意し、夫々のウェイにエントリアドレス１０２が共通に供給され、各ウェイでインデックスされたキャッシュタグアドレスは夫々のウェイ毎に設けられたコンパレータ２０にてタグアドレスと比較される。何れか一つのコンパレータ２０による比較結果が一致されてキャッシュヒットになれば、当該一致に係るウェイのデータアレイがリード／ライトの対象とされる。ラインフィルも何れか一つのウェイを対象として行われる。
ＣＰＵ１によるアクセスアドレスエリアがキャッシュメモリＣＡＣＨＥによるキャッシュ対象エリアであるか否かの判定は、特に制限されないが、キャッシュコントローラ２のキャッシャブル制御回路２１が行う。本実施例に従えば、キャッシュ対象空間はＣＳ０〜ＣＳ３空間とＤＲＡＭ空間とされ、それ以外の空間はキャッシュ非対象空間（ノンキャッシャブルエリア）とされる。これに応じ、前記キャッシャブル制御回路２１は、内蔵ＲＯＭ有効モードにおいてキャッシュ対象空間判定のために、Ｈ’００２０００００〜Ｈ’０１ＦＦＦＦＦＦのアクセスを判定する回路と、内蔵ＲＯＭ無効モードにおいてキャッシュ対象空間判定のために、Ｈ’００００００００〜Ｈ’０１ＦＦＦＦＦＦのアクセスを判定する回路とを有し、ＣＰＵ１によるアクセスアドレスがノンキャッシャブルエリアか否かを判定する。尚、Ｈ’００２０００００〜Ｈ’０１ＦＦＦＦＦＦのアクセスを判定する回路は、特に制限されないが、アクセスアドレスの最上位ビットから１１ビットが全ビット０でないことを検出する回路の出力とアクセスアドレスの最上位ビットから７ビットが全ビット０であることを検出する回路の出力との論理和信号にてそれを判定できる。同様に、Ｈ’００００００００〜Ｈ’０１ＦＦＦＦＦＦのアクセスを判定する回路は、アクセスアドレスの最上位ビットから７ビットが全ビット０であることを検出する回路の出力にてそれを判定することができる。
制御信号発生回路２３には、キャッシャブル制御回路２１から判定結果信号が供給される。制御信号発生回路２３には、キャッシャブル制御回路２１から、ＣＰＵ１によるアクセスアドレスエリアがキャッシュメモリＣＡＣＨＥによるキャッシュ対象エリアでないことを示す判定結果信号が供給されると、制御信号発生回路２３はコンパレータ２０、入力ゲート３０，１０５０、出力ゲート３１，１０５１、データ出力回路４０、データ入力回路４１、デコーダ１１０の各々に、その動作を止めるための動作停止信号を供給する。このとき、キャッシュメモリＣＡＣＨＥは非動作状態となる。また、制御回路２３は、キャッシャブル制御回路２１からＣＰＵ１によるアクセスアドレスエリアがキャッシュメモリＣＡＣＨＥによるキャッシュ対象エリアであることを示す判定結果信号が供給されると、制御信号発生回路２３は、コンパレータ２０、入力ゲート３０，１０５０、出力ゲート３１，１０５１、データ出力回路４０、データ入力回路４１、デコーダ１１０の各々に、その動作を開始させるための動作開始信号を供給する。このときキャッシュメモリＣＡＣＨＥは動作状態となる。
前記ノンキャッシャブルエリアに対するアクセスに対して、キャッシュコントローラ２は、少なくとも、前記内部バス６に対する読出し及び書込みのキャッシュ動作を行わず、キャッシュヒット信号１０９をキャッシュミスの状態に維持する。キャッシャブルエリアに対するアクセスに対しては、前記内部バス６に対する読出し及び書込みのキャッシュ動作を行い、ヒット信号１０９はキャッシュヒット／ミスの判定結果に応じて変化される。そして、キャッシャブルエリアに対するアクセスにおいてキャッシュコントローラ２は、ＣＰＵ１のバスアクセスから１クロックサイクルの期間前記制御信号ＢＥＣＮＯＰをイネーブルレベルに変化させてバスコントローラ７に与えるか否かの制御を行う。
上記キャッシュメモリＣＡＣＨＥにおいてキャッシャブルエリアのアクセスに対応し、キャッシュラインをインデックスしてキャッシュタグアドレス１０４とアドレスタグ１０１を比較してキャッシュミス又はヒットを判定するまでには、１クロックサイクル費やされる。この間にバスコントローラ７が外部アクセスを開始してしまうと、それによってアクセスされる外部メモリ１３のデータが破壊される虞がある。バスコントローラ７は、ＣＰＵ１のバスアクセスから１クロックサイクルの期間、前記制御信号ＢＥＣＮＯＰがイネーブルレベルにされることにより、外部バスアクセス動作の開始を待つ。その間にキャッシュヒット信号１０９にてキャッシュヒットがバスコントローラ７に通知されれば、バスコントローラ７は外部バスアクセスを行わず、次のバスアクセス動作が可能な状態をバスレディー信号ＢＵＳＲＤＹをアサートしてＣＰＵ１に通知する。
第７図にはノンキャッシャブルエリアに対するアクセスの一例として、ＣＰＵ１がＲＡＭ１０又はＲＯＭ９をリードアクセスするときのタイミングチャートが示される。φ１，φ２はＣＰＵ１の動作基準クロック信号であり、ノンオーバラップ２相のクロック信号である。バスコマンドＢＣＭＤは、バスアクセス幅やリード／ライトを指示する情報を含み、ＣＰＵ１によって内部コントロールバスＩＣＢに出力される。出力タイミングは内部アドレスバスＩＡＢへのアドレス出力に同期される。制御信号ＢＵＳＲＤＹにて通知されるバスの区切りに同期してＣＰＵ１はアドレス信号を内部アドレスバスＩＡＢに供給する。キャッシュコントローラ２がそのアドレス信号にてＲＡＭ１０又はＲＯＭ９に対するアクセスであること、即ちノンキャッシャブルエリアに対するアクセスであることを、前記キャッシャブル制御回路２１で判定すると、アドレスアレイ３及びデータアレイ４の動作が抑止されてキャッシュヒット信号１０９がキャッシュミスの状態に維持され、且つ制御信号ＢＥＣＮＯＰがネゲート状態にされる。これによってバスコントローラ７はそのときのアクセスアドレス信号をデコードして、ＲＯＭ選択信号ＭＳＲＯＭ又はＲＡＭ選択信号ＭＳＲＡＭをアサートし、これによってクロック信号φ１の１クロックサイクルの期間に内部データバスＩＤＢにＲＯＭ又はＲＡＭからのリードデータが与えられる。バスコントローラ７はクロック信号φ１の次の立ち上がりエッジに同期してバスレディー信号ＢＵＳＲＤＹをアサートし、ＣＰＵ１に次のバスアクセスが可能なことを通知する。
第８図にはＣＰＵ１によるキャッシャブルエリアに対するキャッシュヒット時のリードアクセスのタイミングチャートが示される。キャッシュブルエリアに対するアクセスであるから、キャッシュコントローラ２のキャッシャブル制御回路２１はＣＰＵ１によるバスアクセスから１クロックサイクルの期間に制御信号ＢＥＣＮＯＰをアサートして、バスコントローラ７による外部アクセスの開始をその期間抑止させる。その間にキャッシュメモリＣＡＣＨＥではインデックス動作にてデータアレイ４とアドレスアレイ３がリードされ、そのリードデータに対してキャッシュミス／ヒットの判定が行われる。この例の場合にはキャッシュヒットが判定され、ヒットに係るリードデータが内部データバスＩＤＢに供給され、且つ、キャッシュヒット信号１０９にてキャッシュヒットがバスコントローラ７に通知されることにより、バスコントローラ７はそのときのアクセスに従った外部バスアクセスを行わずにバスレディー信号ＢＵＳＲＤＹをアサートして、次のバスアクセスが可能な状態をＣＰＵ１に通知する。
第９図にはＣＰＵ１によるキャッシャブルエリアに対するキャッシュミス時のリードアクセスのタイミングチャートが示される。キャッシュブルエリアに対するアクセスであるから、キャッシュコントローラ２のキャッシャブル制御回路２１はＣＰＵ１によるバスアクセスから１クロックサイクルの期間に制御信号ＢＥＣＮＯＰをアサートしてバスコントローラ７による外部アクセスの開始をその期間抑止させる。その間にキャッシュメモリＣＡＣＨＥではインデックス動作にてデータアレイ４とアドレスアレイ３がリードされ、そのリードデータに対してキャッシュミス／ヒットの判定が行われる。この例の場合にはキャッシュミスが判定され、キャッシュヒット信号１０９にてキャッシュミスがバスコントローラ７に通知されると、バスコントローラ７はそのときのアクセスアドレスに従った外部バスアクセスを起動する。図の例はＣＳ空間がアクセスされる場合を示している。図に示される／ＣＳｎは第２図のＣＳ０〜ＣＳ３の何れかを意味する。／ＲＤは第２図のＲＤに対応される。外部バスアクセスはＴ２ステートから開始され、Ｔ３ステートで外部メモリ１３からのリードデータが内部バスＩＤＢに読込まれる。キャッシュメモリＣＡＣＨＥにおいては、Ｔ２ステートで当該キャッシュミスに係るタグアドレスがキャッシュタグアドレスとして該当するキャッシュラインに書き込まれ、また、Ｔ３ステートにおいてＣＰＵ１がリードデータを取り込むのに並行して当該リードデータが該当するキャッシュラインに書き込まれる。同図から明らかなように、外部メモリ１３を実際にアクセスする期間はＴ２，Ｔ３の２クロックサイクルであるが、制御信号ＢＥＣＮＯＰにて外部バスアクセスの起動が１クロックサイクルだけウェイトされているので、ＣＰＵ１のリードアクセスには全部でＴ１〜Ｔ３の３クロックサイクルを要する。
第９図から明らかなように、内部アドレスバスＩＡＢの値が確定してからヒット信号１０９の状態が確定するまでには１クロックサイクルかかるので、その間にチップ選択信号ＣＳやリード信号ＲＤをアサートし外部バスサイクルを起動してからキャッシュヒットの状態が確定すると、一旦起動した外部バスサイクルの途中でチップ選択信号ＣＳやリード信号ＲＤをネゲートしなければならず、これによって外部メモリ１３の内容が破壊する虞がある。そのため、キャッシャブルエリアに対するアクセスでは、制御信号ＢＥＣＮＯＰを外部バスサイクルの起動前にアサートして、チップ選択信号ＣＳやリード信号ＲＤのアサートタイミングを遅らせるように外部バスサイクルの起動にウェイトをかける。この時、キャッシュミスしていることが判定されれば、外部バスサイクルを起動して外部メモリ１３をアクセスし、キャッシュミスに係るキャッシュタグアドレスの書換えとデータアレイ４のラインフィルが行われる。仮に外部メモリ１３がノンキャッシャブルエリアとすると、制御信号ＢＥＣＮＯＰはアサートされず、ＣＰＵ１は２クロックサイクルで所望のデータを外部メモリ１３から読込むことができる。すなわち、ノンキャッシャブルエリアとして外部メモリ１３をアクセスした方が、アクセスに要する時間は短くて済むことになる。
そこで、本実施例においては、キャッシュメモリの性質上、一旦キャッシュミスを生ずると、キャッシュミスの状態は比較的長く続くことに着目し、キャッシャブルエリアに対するアクセスにおいては前回のキャッシャブルエリアに対するアクセスがキャッシュヒットである場合にだけ前記制御信号ＢＥＣＮＯＰによるウェイトを行い、キャッシャブルエリアに対するアクセスにおいて前回のキャッシャブルエリアに対するアクセスがキャッシュミスである場合には前記制御信号ＢＥＣＮＯＰによるウェイトを行わないようにする。キャッシャブルエリアに対するキャッシュミスに続くキャッシュヒット時は、制御信号ＢＥＣＮＯＰによるウェイトが行われていないので、キャッシュヒットの状態はバスローラ７には与えず、キャッシュミスと同様の動作とする。
例えば上述の制御を行うために、ヒット信号生成回路２２は、前回のキャッシュヒット／ミスの判定結果を保持するフラグＦＬＧを有する。ヒット信号生成回路２２はフラグＦＬＧから把握される前回のキャッシュミス／ヒットの判定結果と今回のキャッシュミス／ヒットの判定結果とを比較し、前回キャッシュミスで今回キャッシュヒットである場合にはバスコントローラ７に供給されるキャッシュヒット信号１０９をキャッシュミスを指示するレベルに維持し、また、インデックスされたデータの内部バスＩＤＢへの出力を抑制させる。また、キャッシャブル制御回路２１はフラグＦＬＧから前回のキャッシュミス／ヒットの判定結果を把握し、それがキャッシュミスを示している場合には、キャッシャブルエリアに対するアクセスを検出しても制御信号ＢＥＣＮＯＰをネゲート状態に維持する。これにより、外部メモリをキャッシュ対象とするとき、キャッシュヒットの次に生ずるキャッシュミスにおいては（あるバスサイクルにおいてそれまでヒットし続け次のバスサイクルでミスヒットする時）、そのミスヒットした際に生じるバスサイクルは、外部メモリ１３をキャッシュ対象としない場合すなわちキャッシュ無効時よりも、ヒット／ミス判定のためのアドレス比較動作等によってアクセスサイクル数が延びるので（ＢＥＣＮＯＰによるウェイト）、その最初のミスヒットサイクルだけは延びたサイクルにしてキャッシュフィルにしても、それ以降のバスサイクルではキャッシュ無効時と同じサイクル数のバスサイクルで動作してキャッシュフィル動作を行うことができる。キャッシュミスが連続した後に、キャッシュヒットが生じる場合は、最初のヒットサイクルではキャッシュ無効時のバスサイクルと同様に動作されるが、それに続くキャッシュヒットに係るバスサイクルでは、キャッシュヒット時の高速なメモリアクセスが行われる。
第１０図にはキャッシュミス時に制御信号ＢＥＣＮＯＰがネゲートされる場合（キャッシュミスが連続している状態）のタイミングチャートが示される。第９図と比較すれば明らかなように、制御信号ＢＥＣＮＯＰがネゲートされているため、外部バスアクセスの起動が１クロックサイクル分だけ早くされる。第１１図にはキャッシュヒット時に制御信号ＢＥＣＮＯＰがネゲートされる場合（キャッシュミスに続いてキャッシュヒットとされる場合）のタイミングチャートが示される。この場合には実際にはキャッシュヒットであるが既にバスサイクルが起動されているため、キャッシュヒット信号１０９はネゲート状態にされ、且つデータアレイ４からの読み出しデータは内部データバスＩＤＢへの供給が抑止される。そして実際にはキャッシュヒットであるからラインフィルも行われない。ＣＰＵ１がデータを取り込むまでには、第８図に比べて１クロックサイクルだけアクセス動作が長くされる。第１２図には複数のバスアクセスサイクルにおけるキャッシュヒット時とキャッシュミス時の状態が示される。第１２図におけるＡは第８図の状態、Ｂは第９図の状態、Ｃは第１０図の状態、Ｄは第１１図の状態に対応される。第１２図から明らかなように、キャッシュヒットからキャッシュミスに切り替わったときは第２回目のキャッシュミスから外部バスアクセスのクロックサイクル数が１クロックサイクル分短くされ、キャッシュミスからキャッシュヒットに切り替わったときは切り替わり目の第１回目の外部バスアクセスのクロックサイクル数だけが１クロックサイクル分長くされる。したがって、キャッシャブルエリアに対するキャッシュミスのアクセスが３回以上続けば、全体としてのバスアクセスのクロックサイクル数はキャッシュヒット信号１０９と制御信号ＢＥＣＮＯＰを本実施例のように制御する方が短くされる。
第１３図にはキャッシュメモリを内蔵ＲＡＭと兼用する場合の構成例が示される。例えば第３図及び第４図で説明したように内蔵ＲＡＭ１０に４ＫＢのアドレスエリアが割り当てられるとき、当該内蔵ＲＡＭ１０は１モジュールあたり１ＫＢの容量でデータバス幅３２ビットとされ、全部で４モジュールにて４ＫＢのＲＡＭが構成されているものとする。このようなＲＡＭ１０を内蔵するマイクロコンピュータＭＰＵにおいてキャッシュメモリＣＡＣＨＥがデータアレイに１ＫＢの記憶容量を有する場合、そのキャッシュメモリＣＡＣＨＥを、内蔵ＲＡＭを流用して構成することができる。その内、１モジュール１ＫＢのＲＡＭをキャッシュメモリＣＡＣＨＥのデータアレイ４とすると、データライン長を４バイトとして２５６ラインを格納できる。また別の１モジュール１ＫＢのＲＡＭをキャッシュのアドレスアレイ３に使い、２５６エントリ分のキャッシュタグアドレス１０４を格納する。このとき３２ビットのアドレス信号は、第１４図の（Ａ）に示されるようにＡ１，Ａ０はライン内バイトアドレス、Ａ９〜Ａ２はエントリアドレス、Ａ２４〜Ａ１０はタグアドレスとされる。これに応じてアドレスアレイ３のキャッシュタグアドレス１０４は第１４図の（Ｂ）に示されるようにＤ２４〜Ｄ１０に割り当てることができる。アドレスアレイ３には空きビットが存在するので、その領域を活用するために、この例では前記有効ビット（Ｖ）１０５をアドレスアレイの最下位ビットＤ０に割り当ててある。但しその場合、キャッシュエントリを無効化するにはキャッシュライン毎に有効ビット１０５をリセット状態にしなければならず、全てのキャッシュラインを無効化してキャッシュメモリＣＡＣＨＥを初期化するには２５６回のアクセスを要する。キャッシュラインの無効化を効率的に行えるようにするには、有効ビット１０５をＲＡＭ以外のキャッシュコントローラ２の様な論理回路に格納することができる。例えば３２バイト（３２×８ビット）のレジスタをキャッシュコントローラ２に用意し、２５６本のキャッシュラインとの対応を採って当該レジスタに有効ビットを格納する。
第１３図において、アドレスアレイ３に対するインデックスにはアドレス信号の所定８ビット（Ａ９〜Ａ２）が利用されるが、アドレスアレイ３を普通のＲＡＭとして利用するときは、Ａ９〜Ａ０の１０ビットがアドレシングに利用される。ラッチ２３はタグアドレスを保持し、保持されたアドレスタグは、キャッシュヒット／ミス判定のためにコンパレータ２０の一方の入力に供給され、また、ラインフィルに際してアドレスアレイ３に供給される。コンパレータ２０の他方の入力にはアドレスアレイ３にてインデックスされたラインのキャッシュアドレスタグが供給される。アライナ２６は、内部データバスＩＤＢとデータアレイ４のデータ入出力端子との対応を決める回路であり、キャッシュコントローラ２にて制御される。入力回路２４と出力回路２５はアドレスアレイのデータ入出力端子とデータバスを選択的に接続する回路であり、アドレスアレイ３を普通のＲＡＭとして利用する場合のデータ入出力経路を構成する。第１３図において、アドレスアレイ３とデータアレイ４を普通のＲＡＭとして（ＲＡＭ１０の一部として）利用するか否かは、キャッシュメモリＣＡＣＨＥの有効／無効に連動させることができる。そのような有効／無効の制御はマイクロコンピュータの動作モードによって決定することができる。
第１５図及び第１６図に示されるマイクロコンピュータＭＰＵ１はバスコントローラの配置の点で第１図及び第２図の実施例と相違される。第１５図及び第１６図においてバスコントローラ７及び周辺回路１１は内部バス６を共有している。その他の点は第１図及び第２図の実施例と同じであるので詳細な説明は省略する。
次にキャッシュメモリと共に高速アクセスされる内蔵メモリを搭載したマイクロコンピュータにおける総合的なヒット率について説明する。ダイナミックな内蔵メモリアクセス比率（全メモリアクセス中の内蔵メモリアクセスの割合）をｒ、外部メモリアクセス時のキャッシュメモリのヒット率をｈとするとき、全メモリアクセスに対する内蔵メモリアクセス及びキャッシュヒットとされる外部メモリアクセスの割合である総合的なヒット率、すなわち総合ヒット率Ｈを考えた場合、内蔵メモリアクセスとキャッシュヒットにされる外部メモリアクセスとは同時には起こらないので、当該総合ヒット率Ｈは、Ｈ＝ｒ＋ｈ−ｒｈ）となる。
また、外部メモリをアクセスするときのキャッシュヒットとキャッシュミスを考慮したときの平均アクセスクロックサイクル数（外部平均アクセスクロックサイクル数）Ｓｏは、Ｓｏ＝ｈ×１＋（１−ｈ）Ｍとされる。Ｍは外部メモリに対するアクセスクロックサイクル数であり、本実施例においてキャッシュメモリＣＡＣＨＥに対するアクセスクロックサイクル数は１とされる。そして、マイクロコンピュータＭＰＵ（ＭＰＵ１）の内部メモリ（９，１０）及び外部メモリ（１３）全体に対するアクセスクロックサイクル数の平均（平均アクセスクロックサイクル数）Ｓａは、
Ｓａ＝ｒ×１＋（１−ｒ）×Ｓｏ
＝ｒ×１＋（１−ｒ）×｛ｈ×１＋（１−ｈ）Ｍ｝
＝（ｒ＋ｈ−ｒｈ）×１＋｛１−（ｒ＋ｈ−ｒｈ）｝Ｍ
＝Ｈ×１＋（１−Ｈ）Ｍ
とされる。
第１７図及び第１８図には前記ｒ、ｈ、Ｈの関係が示される。第１７図は第１８図の内容に基づいて描かれている。第１７図からも明らかなように、Ｈ＝ｒ＋ｈ−ｒｈで表される総合ヒット率Ｈを考えれば、ｒやｈの単独のヒット率よりも総合ヒット率Ｈの方が高くなっている。これは、キャッシュメモリＣＡＣＨＥ自体の容量が小さくキャッシュヒット率が低くても、高速にアクセス可能な内蔵メモリ（９，１０）と組み合わせることで、総合的なヒット率を高めることができるということを意味するものである。
第１９図及び第２０図には外部アクセスクロックサイクル数Ｍ＝３のときにおける平均アクセスクロックサイクル数Ｓａ（パラメータはｈ）を示し、第２１図及び第２２図には外部アクセスクロックサイクル数Ｍ＝４のときにおける平均アクセスクロックサイクル数Ｓａ（パラメータはｈ）を示する。第１９図は第２０図の内容に基づいて描かれ、第２１図は第２２図の内容に基づいて描かれている。
上記実施例によれば以下の作用効果を得る。
〔１〕本実施例のマイクロコンピュータＭＰＵ（ＭＰＵ１）は、キャッシュメモリＣＡＣＨＥと共にＲＯＭ９，ＲＡＭ１０を同一半導体基板に搭載し、当該ＲＡＭ１０，ＲＯＭ９はキャッシュメモリＣＡＣＨＥにおけるキャッシュヒットの場合と同じ１クロックサイクルでアクセスされる高速アクセス可能な内蔵メモリとされる。さらにどのような場合にも内蔵メモリアクセスをキャッシュヒットと同様の１クロックサイクルで実現できることは、内蔵メモリ９，１０をキャッシュ対象としないこと、換言すれば内蔵メモリ９，１０をノンキャッシャブルエリアにマッピングする事によって保証している。これにより、キャッシュメモリＣＡＣＨＥ自体の記憶容量が小さくキャッシュヒット率が低くても、高速にアクセス可能な内蔵メモリ９，１０と組み合わせて利用されることで、ＣＰＵ１によるマイクロコンピュータＭＰＵ（ＭＰＵ１）の内外に対する総合的なヒット率を高めることができる。したがって、ＣＰＵ１による動作プログラムの全体的な実行過程におけるメモリアクスの高速化、ひいてはデータ処理性能を全体的に高めることができる。
〔２〕マイクロコンピュータＭＰＵ（ＭＰＵ１）では一般的に割り込みなどのタスク切替えが頻繁に発生し、プログラムカウンタの値が大きく変化する場合が多いので、キャッシュメモリＣＡＣＨＥのヒット率が低下する傾向が高い。このとき、ＲＯＭ／ＲＡＭのような内蔵メモリと共にキャッシュメモリＣＡＣＨＥを搭載しているマイクロコンピュータＭＰＵ（ＭＰＵ１）において、割り込みベクタと割り込みサービスルーチン（割り込み処理プログラム）を内蔵ＲＯＭ／ＲＡＭに入れるようにし、当該ＲＯＭ／ＲＡＭをキャッシュの対象としないことにより、割り込みが頻出するプログラムでもキャッシュヒットの場合と同様に、割り込み処理プログラムへの遷移を高速化する事ができ、この点においてもデータ処理性能もしくはデータ処理速度を向上させることができる。
〔３〕ダイレクトマップキャッシュメモリやウェイ数の少ないセットアソシアティブ形式のキャッシュメモリの場合には、一旦キャッシュミスするとしばらくその状態が連続する性質が顕著である。このとき、キャッシャブルエリアに対するアクセスにおいては前回のキャッシャブルエリアに対するアクセスがキャッシュヒットである場合にだけ制御信号ＢＥＣＮＯＰにて外部バスサイクルの起動にウェイトをかけ、キャッシャブルエリアに対するアクセスにおいて前回のキャッシャブルエリアに対するアクセスがキャッシュミスである場合には前記制御信号ＢＥＣＮＯＰによるウェイトを行わないようにする。これにより、キャッシュミス時のバスサイクルにアドレスヒット判定のための余分なウェイトサイクルが毎回入らないので、キャッシュミス時にけるメモリアクセスの性能低下を防ぐことができる。そのような制御が行われる場合には、キャッシャブルエリアに対するキャッシュミスに続くキャッシュヒット時は、制御信号ＢＥＣＮＯＰによるウェイトが行われていないので、キャッシュヒットの状態はバスコントローラ７には与えず、キャッシュミスと同様の動作が行われることになるが、そのような動作はキャッシュミスからヒットへの切り替わり時の１回のアクセスだけとされるから、キャッシュミスの状態が複数回のアクセスに亘って続くことが一般的であることを考慮すれば、システム全体としてのメモリアクセスを確実に高速化できる。
〔４〕キャッシュメモリを内蔵ＲＡＭと兼用することにより、コスト面からも有利である。さらにバリッドビット１０５をアドレスアレイ３から物理的に切り放してキャッシュコントローラ２などのレジスタに格納することにより、バリッドビット１０５のクリアを少ないアクセス回数でソフトウェア的に能率的に行うことも容易になる。この点においても、キャッシュメモリＣＡＣＨＥのハードウェア構成が減り、マイクロコンピュータＭＰＵ（ＭＰＵ１）のコスト低減に寄与する。
《２．内蔵ＲＯＭ記憶容量とキャッシュメモリ記憶容量との適正化》
次に上記実施例のようなＲＯＭとキャッシュメモリを内蔵するマイクロコンピュータにおける当該ＲＯＭの記憶容量とキャッシュメモリの記憶容量との最適化について説明する。
第２３図はキャッシュの構成（ｗａｙ数、ライン長、容量）に対するミス率（１−ｈ）を示している。本値は『Ａｌａｎ．Ｊ．Ｓｍｉｔｈ，「Ｌｉｎｅ（ｂｌｏｃｋ）  Ｓｉｚｅ  Ｃｈｏｉｃｅ  ｆｏｒ  ＣＰＵ  Ｃａｃｈｅｓ」，ＩＥＥＥ  Ｔｒａｎｓ，Ｃｏｍｐｕｔ．，ｖｏｌＣ−３６，ｎｏ．９，ｐｐ１０６３−１０７５，Ｓｅｐｔ．，１９８７』の命令キャッシュミス率（Ｆｉｇ２）の値を元にしている。第２３図の（Ａ）〜（Ｄ）におけるCACHE SIZEと記された縦の欄はキャッシュメモリＣＡＣＨＥのデータアレイの記憶容量（バイト）を示し、Lineと記された横の欄はキャッシュメモリＣＡＣＨＥにおけるデータラインのバイト数を意味する。そして前記縦の欄の数値と横の欄の数値との交点位置に記された数値は、当該キャッシュサイズとライン長に対応されるミス率（１−ｈ）とされる。第２３図の（Ａ）〜（Ｄ）は、キャッシュメモリＣＡＣＨＥの構成を、フルアソシアティブ（full）、４ウェイセットアソシアティブ（4way）、２ウェイセットアソシアティブ（2way）、１ウェイセットアソシアティブ即ちダイレクトマップ（direct）とした場合に対応される。
第２４図は、第２３図の値から総合ヒット率Ｈ＝ｒ＋ｈ−ｒｈが０．９になるｒの値を算出したものを示す。記述の仕方は第２３図と同様である。第２４図においてｒ≦０のところは、内蔵ＲＯＭがなくてもヒット率が０．９を超えるキャッシュ構成を意味している。
ここで仮定として、全プログラム容量がＰＲＧ［ＫＢ］ならば、内蔵ＲＯＭ容量をＲ＝ｒ×ＰＲＧとする。実際は頻繁に実行されるルーチンは内蔵ＲＯＭに置くので、一般にＲ＜ｒ×ＰＲＧとなるが、ここではワースト条件を考え、Ｒ＝ｒ×ＰＲＧとする。さらに一般的な仮定として、ＰＲＧ＝５１２ＫＢとし、ＲＯＭ容量Ｒを計算すると第２５図の結果を得る。第２５図の記述の仕方は第２３図と同様である。
第２５図の結果に基づいてキャッシュ容量Ｃ［Ｂ］と内蔵ＲＯＭ容量Ｒ［ＫＢ］の関係をプロットすると第２７図〜第３０図の結果を得る。キャッシュメモリの構成は、第２７図がフルアソシアティブ（full）、第２８図が４ウェイセットアソシアティブ（4way）、第２９図が２ウェイセットアソシアティブ（2way）、第３０図がダイレクトマップ（direct）であり、夫々はキャッシュメモリのデータライン長がパラメータとされている。例えば第２７図においてデータライン長が８バイトのフルアソシアティブ形式のキャッシュメモリを採用する場合、キャッシュメモリの容量を２０４８バイトとするとき、ＲＯＭ容量は８５．３３キロバイトであれば総合ヒット率が０．９になることを意味する。実際に上記の結果を用いて、必要な性能を得るには、前記ＣとＲの容量があれば十分であることがわかる。
第２６図は、第２７図〜第３０図に示される内蔵ＲＯＭ容量とキャッシュメモリ容量との関係を式Ｃ＋ａＲ＝ｂで近似したときの、キャッシュメモリの構成に対応する定数ａ、ｂが示される。本実施例のマイクロコンピュータにおいて内蔵ＲＯＭ容量とキャッシュメモリ容量とを実際に決定する場合には、関係式：Ｃ＋ａＲ≦ｂを満足するように、コストと照らし合わせながらＲとＣの容量を決定すればよい。換言すれば、Ｃ＋ａＲ＞ｂとなる範囲を少なくとも除くようにＣ，Ｒを決定する。これにより、キャッシュメモリ容量ＣとＲＯＭ容量Ｒをむやみに（無駄に）大きくすることなく、コスト及び総合ヒット率の点においてマイクロコンピュータＭＰＵ（ＭＰＵ１）内蔵のＲＯＭ９の記憶容量とキャッシュメモリＣＡＣＨＥの記憶容量とを最適化することができる。前記定数ａ、ｂの値は第２６図により以下に示される通りである。
８ｗａｙ以上／４バイトライン長：ａ＝２４．０１、ｂ＝８１９４
８ｗａｙ以上／８バイトライン長：ａ＝９．００、ｂ＝３３２８
８ｗａｙ以上／１６バイトライン長：ａ＝４．００、ｂ＝１２８０
８ｗａｙ以上／３２バイトライン長：ａ＝１．７５、ｂ＝５１２
８ｗａｙ以上／６４バイトライン長以上：ａ＝０．７５、ｂ＝２５６
４ｗａｙ／４バイトライン長：ａ＝２５．１９、ｂ＝８８０４
４ｗａｙ／８バイトライン長：ａ＝１０．００、ｂ＝３５８４
４ｗａｙ／１６バイトライン長：ａ＝５．００、ｂ＝１５３６
４ｗａｙ／３２バイトライン長：ａ＝１．８４、ｂ＝５５７
４ｗａｙ／６４バイトライン長以上：ａ＝０．７９、ｂ＝２７６
２ｗａｙ／４バイトライン長：ａ＝３２．４１、ｂ＝１１１１２
２ｗａｙ／８バイトライン長：ａ＝１１．９０、ｂ＝４３２８
２ｗａｙ／１６バイトライン長：ａ＝５．５０、ｂ＝１７９２
２ｗａｙ／３２バイトライン長：ａ＝２．０３、ｂ＝６５１
２ｗａｙ／６４バイトライン長以上：ａ＝０．８７、ｂ＝３１６
１ｗａｙ／４バイトライン長：ａ＝３６．０６、ｂ＝１４３６１
１ｗａｙ／８バイトライン長：ａ＝１８．７５、ｂ＝６５９１
１ｗａｙ／１６バイトライン長：ａ＝８．００、ｂ＝２８１６
１ｗａｙ／３２バイトライン長：ａ＝４．００、ｂ＝１２８０
１ｗａｙ／６４バイトライン長以上：ａ＝１．４８、ｂ＝５４９
《３．事前転送形式ＲＡＭキャッシュ内蔵マイクロコンピュータ》
第３１図には高速ＲＡＭに事前にデータを転送して、全体としてのメモリアクセスの高速化を図ったマイクロコンピュータ（事前転送形式ＲＡＭキャッシュ内蔵マイクロコンピュータ）の一実施例ブロック図が示される。
本実施例のシングルチップマイクロコンピュータ（単にマイクロコンピュータとも記す）ＭＰＵ２は、ＣＰＵ２００、ＣＰＵ２００の動作プログラム又はデータが格納されるＲＯＭ２０２、ＣＰＵ２００の作業領域若しくはデータの一時記憶領域とされるＲＡＭ２０３、乗算器（ＭＵＬＴ）２０９、バスコントローラ２０４、周辺回路２１０、外部バスインタフェース２０７、高速ＲＡＭ２０１、アドレス変換器２０１０、ＲＡＭ転送コントローラ２０５等を含み、単結晶シリコンのような１個の半導体基板に形成される。外部バスインタフェース２０７には外部バス２１１を介して外部メモリ２０８等が接続される。
本実施例のマイクロコンピュータＭＰＵ２は、特に制限されないが、ＲＩＳＣアーキテクチャを有し、ＣＰＵ２００は、１命令あたりＣＰＵ２００の動作基準クロック信号における１クロックサイクルで命令を実行し、バスアクセスの基本サイクル数を１クロックサイクルとするように、パイプライン動作によって命令フェッチ、命令デコード、命令実行、メモリアクセスなどのパイプラインステージを実行していく。ＣＰＵ２００が接続される内部バス２０６は、１クロックサイクルを最小動作周期とする高速内部バスであり、内部アドレスバスＩＡＢ、内部データバスＩＤＢ、内部制御バスＩＣＢから成る。当該内部バス２０６には前記夫々の回路モジュールが接続される。バスコントローラ２０４は、内部バス２０６の制御及び周辺回路２１０のアクセス制御などを行う。
バスコントローラ２０４は内部バス２０６から供給されるアドレス信号の上位側ビットに基づいてアクセス対象エリアの判定を行い、また内部バス２０６から供給されるバスコマンドなどを受け取ってリード／ライトやアクセスデータ幅等のアクセスの種別を判定する。それらの判定結果に従って内蔵ＲＯＭ２０２、ＲＡＭ２０３、高速ＲＡＭ２０１等の動作選択を行い、また、外部アクセスのためのチップ選択やリード／ライトの指示を外部に対して行う。
本実施例において前記ＲＡＭ２０３及びＲＯＭ２０２はアクセスに２クロックサイクル以上必要な低速内蔵メモリとされる。これに対して前記高速ＲＡＭ２０１は１クロックサイクルでアクセス可能とされ、事前転送形式のＲＡＭキャッシュとして利用される。ＲＡＭ転送コントローラ２０５は内蔵ＲＡＭ２０３及びＲＯＭ２０２の所要の情報を高速ＲＡＭ２０１に転送する制御を行う。
第３２図にはＲＡＭ転送コントローラ２０５のブロック図が示される。ＲＡＭ転送コントローラ２０５は、キャシングトリガアドレス即ち高速ＲＡＭ２０１へのデータ転送起動要因とされるアドレスを格納するレジスタ（ＣＴＡＲ）３０１、キャシングブロック開始アドレスレジスタ（ＣＳＡＲ）３０２、キャシングブロック終了アドレスレジスタ（ＣＥＡＲ）３０３、ＲＡＭキャッシュ先頭アドレスレジスタ（ＲＣＡＲ）３０４、コントロール／ステータスレジスタ（ＣＳＲ）３０５の各レジスタと、データ転送制御を行う制御回路３０６を有する。ＣＳＲ３０５はＲＡＭ転送コントローラ−２０５の動作設定ビットの他にバリッドフラグ（Ｖ）３０７を有する。
ＣＴＡＲ３０１、ＣＳＡＲ３０２、ＣＥＡＲ３０３、ＲＣＡＲ３０４の各レジスタにはＣＰＵ２００が出力するアドレスと比較されるべき値が設定される。またＣＳＲ３０５はＲＡＭ転送コントローラ−２０５のコントロール用の設定データやバリッドフラグ３０７を含む値が格納される。それらレジスタ３０１〜３０５はＣＰＵ２００によってリード／ライトアクセス可能とされ、制御回路３０６が内部アドレスバスＩＡＢの値をデコードして各レジスタを選択し、内部データバスＩＤＢを介してそれらレジスタがリード／ライトされる。ＣＳＡＲ３０２及びＣＥＡＲ３０３には前記ＲＯＭ２０２及びＲＡＭ２０３のエリアの一部若しくは全部の範囲を指定するアドレス情報が設定されることになる。指定可能範囲の記憶容量は高速ＲＡＭ２０１の記憶容量によって決まる。
比較回路３１１は内部アドレスバスＩＡＢの値とＣＴＡＲ３０１の値とを比較して、その比較結果を制御回路３０６に与える。比較回路３１２は内部アドレスバスＩＡＢの値がＣＳＡＲ３０２の値以上のアドレスかを判定して、その判定結果を制御回路３０６に与える。比較回路３１３は内部アドレスバスＩＡＢの値がＣＥＡＲ３０２の値以下のアドレスかを判定して、その判定結果を制御回路３０６に与える。第３３図も参照するに、制御回路３０６は、ＣＰＵ２００から内部アドレスバスＩＡＢに供給されるアドレス信号がＣＴＡＲ３０１の値に一致することを検出すると、ＣＰＵ２００からバス権を取得して、ＣＳＡＲ３０２の値によって決まるアドレスからＣＥＡＲ３０３の値によって決まるアドレスまでのデータを、ＲＣＡＲ３０４の値を先頭とする高速ＲＡＭ２０１の所定領域に転送制御する。このとき、変換制御信号３１４０は非活性状態にされており、高速ＲＡＭ２０１は、ＲＡＭ転送コントローラ２０５が内部アドレスバスＩＡＢに出力するアドレス信号に従ってアクセスされる。当該転送を完了した後は、バリッドフラグ３０７を有効とし、バス権を放棄する。また、制御回路３０６は、バリッドフラグ３０７が有効にされているときは、比較回路３１２、３１３による判定結果を判定回路３１４で参照し、内部アドレスバスＩＡＢの値が、ＣＳＡＲ３０２の値によって決まるアドレスからＣＥＡＲ３０３の値によって決まるアドレスの範囲に入っていることを検出すると、アドレス演算器３１５にてＲＣＡＲ３０４の値からＣＳＡＲ３０２の値を減算し（ＲＣＡＲ−ＣＳＡＲ）、減算された値をＲＡＭアドレス変換情報３１６として、高速ＲＡＭ２０１に供給し、且つ、変換制御信号３１０を活性化する。
第３４図には高速ＲＡＭ２０１及びアドレス変換器２０１０のブロック図が示される。前記変換制御信号３１４０が活性化されている状態において、アドレス変換器２０１０は、そのときの内部アドレスバスＩＡＢの値に、前記ＲＡＭアドレス変換情報３１６を加算し、これをアクセスアドレスとして高速ＲＡＭ２０１に供給する。変換制御信号３１４０が非活性状態のときは、内部アドレスバスＩＡＢの値がそのまま高速ＲＡＭ２０１に供給される。高速ＲＡＭ２０１は、通常のＲＡＭの構成を有すれば十分であるからその詳細な説明は省略する。したがって、バリッドフラグ３０７がリセット状態のとき、また、変換制御信号３１４０が非活性状態のとき、第３３図に示されるように、ＲＡＭ転送コントローラ２０５から内部アドレスバスＩＡＢに出力されるアドレス信号に従って、ＣＳＡＲ３０２〜ＣＥＡＲ３０３の範囲のデータが、ＲＣＡＲ３０４の値を先頭として、高速ＲＡＭ２１０に転送される。バリッドフラグ３０７がセット状態のときは、ＣＰＵ２００がＣＳＡＲ３０２の値によって決まるアドレスからＣＥＡＲ３０３の値によって決まるアドレスの範囲内をアクセスすると、変換制御信号３１４０が活性化され、実際には、ＲＣＡＲ３０４を先頭とする高速ＲＡＭ２０１の領域がアクセスされる。バスコントローラ２０４は、変換制御信号３１４０が活性化されているときは、ＲＯＭ２０２、ＲＡＭ２０３、外部メモリ２０８の動作選択に代えて、高速ＲＡＭ２０１を動作選択する。
ＣＰＵ２００が内蔵ＲＯＭ２０２、内蔵ＲＡＭ２０３、又は外部メモリ２０８内にある命令やデータをアクセスしようとしたときの動作の一例を説明する。ＣＰＵ２００が内部バス２０６を介してアドレス信号２５０を出力する。アドレス信号２５０がＲＡＭ転送コントローラ−２０５に供給され、供給されたアドレス信号２５０がＣＴＡＲ３０１の値と比較される。その比較結果が一致していれば、ＲＡＭ転送コントローラ−２０５はバスコントローラ−２０４にバス権要求信号（ＲＴＣＲＥＱ）２５１をアサートする。バスコントローラ−２０４はバスアービタ２２０にてバス権を調停し、ＣＰＵ２００のバスサイクルの切れ目などで、バス権をＲＡＭ転送コントローラ−２０５に与える。これによって、ＣＰＵバス権アクノリッジ信号（ＣＰＵＡＣＫ）２５３がネゲートされ、ＲＡＭ転送コントローラバス権アクノリッジ信号（ＲＴＣＡＣＫ）２５２がアサートされる。ＲＴＣＡＣＫ２５２のアサートを受けて、ＲＡＭ転送コントローラ−２０５がバス権を獲得すると、ＲＡＭ転送コントローラ２０５は、前記ＣＳＡＲ３０２で指されるアドレスからＣＥＡＲ３０３で指されるアドレスまでの範囲の例えば低速な内蔵ＲＯＭ２０２、内蔵ＲＡＭ２０３、又は外部メモリ２０８内にある命令又はデータを、前記ＲＣＡＲ３０４で指される高速ＲＡＭ２０１内のアドレスから後のアドレスに転送制御する。転送が終了したら、制御回路３０６が、高速ＲＡＭ内に命令又はデータが格納されていることを示すＣＳＲ３０５内のバリッドフラグ３０７をセット状態に反転する。そしてＲＡＭ転送コントローラ２０５はバス権を放棄する。
ＣＰＵ２００がＲＡＭ転送コントローラ−２０５からバス権を獲得してＣＰＵ２００がバスアクセスを起動すると、ＣＰＵ２００が出力するアドレス信号２５０は、比較器３１２，３１３にて前記ＣＳＡＲ３０２，ＣＥＡＲ３０３の値と比較される。ＣＳＡＲ≦アドレス信号≦ＣＥＡＲであって、バリッドフラグ３０７がセット状態ならば、そのアドレス信号２５０の内容は、高速ＲＡＭ２０１アクセス用に変換され、これにより、低速な内蔵ＲＯＭ２０２／内蔵ＲＡＭ２０３／外部メモリ２０８に代えて高速ＲＡＭ２０１がアクセスされる。上記条件が成立していない場合には、通常通り、アドレス信号２５０によって低速な内蔵ＲＯＭ２０２、内蔵ＲＡＭ２０３、又は外部メモリ２０８などがアクセスされる。
上記条件が成立している場合の動作を更に詳述すれば、ＲＡＭ転送コントローラ−２０５から高速ＲＡＭ２０１へＲＡＭアドレス変換情報３１６が供給され、またバスコントローラ２０４へはＲＡＭアドレス変換情報３１６及び変換制御信号３１４１が与えられる。これによって高速ＲＡＭ２０１は、ＣＰＵアクセスアドレス−ＣＳＡＲ＋ＲＣＡＲで計算されたアクセスアドレスによってアクセス可能にされる。一方、バスコントローラ２０４は、ＲＡＭアドレス変換情報３１６及び変換制御信号３１４１にて高速ＲＡＭ２１０を動作選択する。またバスコントローラ２０４は前記変換制御信号３１４０にて、そのときの内部アドレスバスＩＡＢ上のアドレス信号２５０に対応される、ＲＯＭ２０２、ＲＡＭ２０３、又は外部メモリ２０８に対する動作選択を抑止する。アドレス演算器３１５及びアドレス変換器２０１０による演算に無視し得ない時間がかかる場合には、高速ＲＡＭ２０１のアクセスアドレスを、ＲＣＡＲの上位とアドレス２５０の下位を接続したものとしてもよい。この場合、ＣＳＡＲ３０２とＣＥＡＲ３０３に設定可能な値は自ずと制限されることになる。或いはＣＥＡＲ３０３を廃止し、アドレス２５０の上位とＣＳＡＲ３０２の上位との一致比較を行うようにしてもよい。
尚、上記ＲＯＭ２０２、ＲＡＭ２０３の全て又は何れかが、或いは、各々の一部分が、アクセススピードが間に合えば、１サイクルアクセス可能な構成を採用することも可能である。この場合、内部バス２０６に接続された１サイクルアクセス可能なデバイスに対して前記ＲＡＭキャッシュの制御は不要とされ、通常通りのＣＰＵ２００による１クロックサイクルアクセスが行われる。また、上記実施例における高速ＲＡＭ２１０への事前転送の対象データは、内蔵ＲＯＭ，ＲＡＭのデータに限定されず、外部メモリのデータだけを対象とし、或いは内蔵ＲＯＭ及びＲＡＭと外部メモリとの双方のデータを対象とすることができる。それらの場合にも上記実施例と同様の制御によって実現できる。
本実施例によれば、アクセスタイムが遅い内蔵ＲＯＭ２０２又はＲＡＭ２０３に格納されているプログラムのうち、ある部分をあらかじめ高速ＲＡＭ２０１に転送して、当該プログラムを実行させるようにすれば、その部分の実行を高速化できる。当然、内蔵ＲＯＭ／ＲＡＭに収まりきれずにプログラムがアクセスタイムの遅い外部メモリ２０８にはみ出しても、この外部メモリ２０８を内蔵ＲＯＭ／ＲＡＭと同様に制御すれば性能低下を防ぐことができる。シングルチップマイクロコンピュータが対象にする主なアプリケーションでは、高速性が要求されるルーチンは割り込み処理プログラムなどのように比較的そのアドレス範囲と実行タイミングが限定されており、あまり処理性能が必要でないバックグランドルーチン（例えばメインルーチン）を実行中に高速実行が必要な部分をあらかじめ高速ＲＡＭ２０１に転送しておくことができる。その結果、プログラム処理全体の性能を向上させることができる。
《４．同時転送形式ＲＡＭキャッシュ内蔵マイクロコンピュータ》
第３５図には高速ＲＡＭに同時にデータを転送してアクセスの高速化を図ったマイクロコンピュータ（同時転送形式ＲＡＭキャッシュ内蔵マイクロコンピュータ）の一実施例ブロック図が示される。
本実施例のシングルチップマイクロコンピュータ（単にマイクロコンピュータとも記す）ＭＰＵ３は、ＣＰＵ４００、ＣＰＵ４００動作プログラム又はデータが格納されるＲＯＭ４０２、ＣＰＵ４００の作業領域若しくはデータの一時記憶領域とされるＲＡＭ４０３、乗算器（ＭＵＬＴ）４０９、バスコントローラ４０４、周辺回路４１０、外部バスインタフェース４０７、高速ＲＡＭ４０１、アドレス変換器４０１０、及びＲＡＭ転送コントローラ４０５等を含み、単結晶シリコンのような１個の半導体基板に形成される。外部バスインタフェース４０７には外部バス４１１を介して外部メモリ４０８等が接続される。高速ＲＡＭ４０１は第３６図に示される。第３４図で説明したものとの相違点は、アドレス変換器４０１０の動作が変換制御信号５１４０にて制御されずに、常に、内部アドレスバスＩＡＢの値にＲＡＭアドレス変換情報５１６を加算して高速ＲＡＭ４０１に供給する。
本実施例のマイクロコンピュータＭＰＵ３は、特に制限されないが、ＲＩＳＣアーキテクチャを有するもので、ＣＰＵ４００は、１命令あたりＣＰＵ４００の動作基準クロック信号における１クロックサイクルで命令を実行し、バスアクセスの基本サイクル数を１クロックサイクルとするように、パイプライン動作によって命令フェッチ、命令デコード、命令実行、メモリアクセスなどのパイプラインステージを実行していく。ＣＰＵ４００が接続される内部バス４０６は、１クロックサイクルを最小動作周期とする高速内部バスであり、内部アドレスバスＩＡＢ、内部データバスＩＤＢ、内部制御バスＩＣＢから成る。当該内部バス４０６には前記夫々の回路モジュールが接続される。バスコントローラ４０４は、内部バス４０６の制御及び周辺回路４１０のアクセス制御などを行う。
バスコントローラ４０４は内部バス４０６から供給されるアドレス信号の上位側ビットに基づいてアクセス対象エリアの判定を行い、また内部バス４０６から供給されるバスコマンドなどを受け取ってリード／ライトやアクセスデータ幅等のアクセスの種別を判定する。それらの判定結果に従って内蔵ＲＯＭ４０２やＲＡＭ４０３等の選択を行い、また、外部アクセスのためのチップ選択やリード／ライトの指示を外部バスインタフェースを介して外部に与える制御を行う。
本実施例において前記ＲＡＭ４０３及びＲＯＭ４０２はアクセスに２クロックサイクル以上必要な低速内蔵メモリとされる。これに対して前記高速ＲＡＭ４０１は１クロックサイクルでアクセス可能とされ、同時転送形式のＲＡＭキャッシュとして利用される。ＲＡＭ転送コントローラ４０５は内蔵ＲＡＭ４０３及びＲＯＭ４０２の所要の情報を高速ＲＡＭ４０１に転送する制御を行う。
第３７図にはＲＡＭ転送コントローラ−４０５のブロック図が示される。ＲＡＭ転送コントローラ４０５は、キャシングブロック開始アドレスレジスタ（ＣＳＡＲ）５０２、キャシングブロック終了アドレスレジスタ（ＣＥＡＲ）５０３、ＲＡＭキャッシュ先頭アドレスレジスタ（ＲＣＡＲ）５０４、コントロール／ステータスレジスタ（ＣＳＲ）５０５の各レジスタと、データ転送制御を行う制御回路５０６を有する。ＣＳＲ５０５はＲＡＭ転送コントローラ−４０５の動作設定ビットの他にバリッドフラグ（Ｖ）５０８を有する。
ＣＳＡＲ５０２、ＣＥＡＲ５０３、ＲＣＡＲ５０４にはＣＰＵ４００が出力するアドレスと比較されるべき値が設定される。またＣＳＲ５０５はＲＡＭ転送コントローラ−４０５のコントロール用の設定データやバリッドフラグ５０８を含む値が格納される。それらレジスタ５０２〜５０５はＣＰＵ４００によってリード／ライトアクセス可能とされ、制御回路５０６が内部アドレスバスＩＡＢの値をデコードして各レジスタを選択し、内部データバスＩＤＢを介してそれらレジスタがリード／ライトされる。ＣＳＡＲ５０２及びＣＥＡＲ５０３には前記ＲＯＭ５０２及びＲＡＭ５０３のエリアの一部若しくは全部の範囲を指定するアドレス情報が設定されることになる。指定可能範囲の記憶容量は高速ＲＡＭ５０１の記憶容量によって決まる。
比較回路５１２は内部アドレスバスＩＡＢの値がＣＳＡＲ５０２の値以上のアドレスか、またＣＳＡＲ５０２の値に等しいアドレスかを判定して、その判定結果を制御回路５０６に与える。比較回路５１３は内部アドレスバスＩＡＢの値がＣＥＡＲ５０２の値以下のアドレスか、またＣＥＡＲ５０２の値に等しいアドレスかを判定して、その判定結果を制御回路５０６に与える。
ＣＰＵ４００が内部バス４０６を介してアドレス信号４５０を出力すると、アドレス信号４５０がＲＡＭ転送コントローラ４０５に供給され、供給されたアドレス信号が比較器５１２，５１３にて前記ＣＳＡＲ５０２，ＣＥＡＲ５０３の値と比較される。比較結果は判定回路５１４に与えられる。判定回路５１４は、バリッドフラグ５０８が無効状態の時、アクセスアドレスがＣＳＡＲの値に一致していることを検出すると、それ以降、アドレス信号４５０が前記ＣＥＡＲ５０３の値に一致するまでの間、或いはアドレス信号４５０がＣＳＡＲ５０２の値からＣＥＡＲ５０３の値の範囲に入っている間、ＣＰＵ４００が内蔵ＲＯＭ４０２、内蔵ＲＡＭ４０３、又は外部メモリ４０８内にある命令やデータをアクセスしたときに、同時に、このアクセス（リード又はライト）した命令やデータを高速ＲＡＭ４０１にライトする。この時の高速ＲＡＭ４０１のアクセスアドレスは前記実施例同様に、ＣＰＵアクセスアドレス−ＣＳＡＲ＋ＲＣＡＲ、で計算される。即ち、演算器５１５が前記実施例同様にＲＡＭアドレス変換情報（ＲＣＡＲ−ＣＳＡＲ）５１を生成し、これを受ける高速ＲＡＭ４０１の演算器４０１０が高速ＲＡＭアクセスアドレス（ＣＰＵアクセスアドレス−ＣＳＡＲ＋ＲＣＡＲ）を生成する。ライトタイミングは、第３８図に示されるように、内蔵ＲＯＭ４０２、内蔵ＲＡＭ４０３、又は外部メモリ４０８のアクセスに並行して行われる。そのような並列的な高速ＲＡＭ４０１アクセスのための高速ＲＡＭ４０１の動作選択は、変換制御情報５１４０をバスコントローラ４０４が受けることによって制御する。高速ＲＡＭアドレスのアドレス演算に時間がかかる場合には、高速ＲＡＭ４０１のアクセスアドレスは、ＲＣＡＲの上位とアドレス信号４５０の下位を接続したものとしてもよい。この場合、ＣＳＡＲ５０２とＣＥＡＲ５０３の設定可能な内容は制限を受ける。或いは、ＣＥＡＲ５０３を廃止し、アドレス信号４５０の上位とＣＳＡＲ５０２の上位との一致比較を行うようにしてもよい。ＣＳＡＲ５０２の値からＣＥＡＲ５０３までのアドレス範囲に対するデータの高速ＲＡＭ４０１へのライト動作が終了されると、制御回路５０６はバリッドフラグ５０８をセット状態に転ずる。本実施例において制御回路５０６は、ＣＳＡＲ５０２の値からＣＥＡＲ５０３までのアドレス範囲に対するデータの高速ＲＡＭ４０１へのライト動作の終了を検出する手段を特に備えていない。即ち、ＣＰＵ４００によるアクセスアドレスが順番に変化されるアドレス範囲においてＣＳＡＲ５０２とＣＥＡＲ５０３の値を設定すればよいからである。特に制限されないが、ＣＳＡＲ５０２の値からＣＥＡＲ５０３までのアドレス範囲における個々のアドレスに対するアクセスの有無を逐次検出して当該範囲の全てのアドレスに対するアクセスの完了を検出する回路を設けることも可能である。
制御回路５０６は、バリッドフラグ５０８がセットされている状態においては、ＣＰＵ４００のアクセスにおいて、ＣＰＵのアクセスアドレスが、ＣＳＡＲ≦アドレス≦ＣＥＡＲの範囲に入っていることを判定回路５１４で検出したときは、判定制御信号５１４０にて、内蔵ＲＯＭ４０２、内蔵ＲＡＭ４０３、又は外部メモリ４０８の動作選択をバスコントローラ４０４で抑止させる。それに代えて、バスコントローラ４０４に高速ＲＡＭ４０１の動作を選択させ、高速ＲＡＭ４０１にはＲＡＭアドレス変換情報５１６を供給して、高速ＲＡＭ４０１を１クロックサイクルで動作させる。これによってその範囲のアドレスアクセスを高速化することができる。高速ＲＡＭ４０１のアクセスに利用されるアドレス信号は、前記実施例同様に、ＣＰＵアクセスアドレス−ＣＳＡＲ＋ＲＣＡＲ、とされる。このアドレス演算に無視し得ない時間を要する場合には、前述の通り、高速ＲＡＭ４０１のアクセスアドレスを、ＲＣＡＲの上位とアドレス４５０の下位を接続したものとすることができる。
尚、上記実施例における高速ＲＡＭ２１０への同時転送の対象データは、内蔵ＲＯＭ，ＲＡＭのデータに限定されず、外部メモリのデータだけを対象とし、或いは内蔵ＲＯＭ及びＲＡＭと外部メモリとの双方のデータを対象とすることができる。それらの場合にも上記実施例と同様の制御によって実現できる。
本実施例によれば、前記事前転送形式ＲＡＭキャッシュ内蔵マイクロコンピュータと同様に処理性能の向上を図ることができるが、性能をあまり必要としないバックグランド処理が少ない場合、高速化したい範囲を予め転送するための時間を割きにくい。このため、内蔵ＲＯＭ／ＲＡＭの高速化したい範囲をＣＰＵ４００がアクセスしたときに同時に高速ＲＡＭ４０１へもアクセスデータをコピーするようにしておけば、その範囲を初めて実行する際は内蔵ＲＯＭ／ＲＡＭのアクセスタイムに依存する性能しか出ないが、２回目以降の実行は高速ＲＡＭ４０１のアクセスとなるため高速化される。当然、内蔵ＲＯＭ／ＲＡＭに収まりきれずにプログラムがアクセスタイムの遅い外部メモリにはみ出しても、この外部メモリを内蔵ＲＯＭ／ＲＡＭと同様に制御すれば性能低下を防ぐことができる。
《５．アドレス置換形式ＲＡＭキャッシュ内蔵マイクロコンピュータ》
第３９図にはＤＭＡＣなどによって低速メモリの情報をあらかじめ高速ＲＡＭに転送しておき、当該低速メモリに対するアクセスアドレスを高速ＲＡＭのアドレスに置き換えてメモリアクセスの高速化を図ったマイクロコンピュータ（アドレス置き換え形式ＲＡＭキャッシュ内蔵マイクロコンピュータ）の一実施例ブロック図が示される。
本実施例のシングルチップマイクロコンピュータ（単にマイクロコンピュータとも記す）ＭＰＵ４は、ＣＰＵ６００、ＣＰＵ６００動作プログラム又はデータが格納されるＲＯＭ６０２、ＣＰＵ６００の作業領域若しくはデータの一時記憶領域とされるＲＡＭ６０３、乗算器（ＭＵＬＴ）６０９、バスコントローラ６０４、周辺回路６１０、外部バスインタフェース６０７、高速ＲＡＭ６０１、アドレス変換器６１３、及びＤＭＡコントローラ６１２等を含み、単結晶シリコンのような１個の半導体基板に形成される。外部バスインタフェース６０７には外部バス６１１を介して外部メモリ６０８等が接続される。
本実施例のマイクロコンピュータＭＰＵ４は、特に制限されないが、ＲＩＳＣアーキテクチャを有するものであって、ＣＰＵ６００は、１命令あたりＣＰＵ６００の動作基準クロック信号における１クロックサイクルで命令を実行し、バスアクセスの基本サイクル数を１クロックサイクルとするように、パイプライン動作によって命令フェッチ、命令デコード、命令実行、メモリアクセスなどのパイプラインステージを実行していく。ＣＰＵ６００が接続される内部バス６０６は、１クロックサイクルを最小動作周期とする高速内部バスであり、内部アドレスバスＩＡＢ、内部データバスＩＤＢ、内部制御バスＩＣＢから成る。当該内部バス６０６には前記夫々の回路モジュールが接続される。バスコントローラ６０４は、内部バス６０６の制御及び周辺回路６１０のアクセス制御などを行う。
本実施例において前記ＲＡＭ６０３及びＲＯＭ６０２は、アクセスに２クロックサイクル以上必要な低速内蔵メモリとされる。これに対して前記高速ＲＡＭ６０１は、１クロックサイクルでアクセス可能とされ、アドレス置き換え形式のＲＡＭキャッシュとして利用される。ＤＭＡコントローラ６１２は、ＣＰＵ６００に代わって内蔵ＲＡＭ６０３及びＲＯＭ６０２などの所要の情報を高速ＲＡＭ６０１に転送したりする制御を行う。ＤＭＡコントローラ６１２に対する動作の初期設定はＣＰＵ６００が行う。ＤＭＡコントローラ６１２にて高速ＲＡＭ６０１に転送されたデータを内蔵ＲＡＭ６０３又はＲＯＭ６０２などに代えてＣＰＵ６００がアクセス可能にする制御は、特に制限されないが、バスコントローラ６０４が行う。
第４０図にはバスコントローラ６０４の一例ブロック図が示される。バスコントローラ６０４は、内部バス６０６から供給されるアドレス信号の上位側ビットに基づいてアクセス対象エリアの判定を行って行い、また内部バス６０６から供給されるバスコマンドをなどを受け取ってリード／ライトやアクセスデータ幅等のアクセスの種別を判定する。それらの判定結果に従って内蔵ＲＯＭ６０２やＲＡＭ６０３等の選択を行い、また、外部アクセスのためのチップ選択やリード／ライトの指示を外部バスインタフェース６０７を介して外部に行う。それらの制御は制御回路７０６が行う。バスコントローラ６０４は高速ＲＡＭ６０１を制御するために、キャシングブロック開始アドレスレジスタ（ＣＳＡＲ）７０２、キャシングブロック終了アドレスレジスタ（ＣＥＡＲ）７０３、コントロール／ステータスレジスタ（ＣＳＲ）７０５、ＲＡＭ先頭アドレスレジスタ７０７、比較器７１２，７１３、判定回路７１５、及びアドレス演算器７１４を備える。ＣＳＲ７０５はバリッドフラグ７０５１を供える。当該フラグ７０５１はＤＭＡコントローラがＣＰＵに代わって内蔵ＲＡＭ６０３及びＲＯＭ６０２の所要の情報を高速ＲＡＭ６０１に転送した後、セット状態にされる。
ＣＳＡＲ７０２、ＣＥＡＲ７０３にはＣＰＵ６００が出力するアドレスと比較されるべき値が設定される。ＲＡＭ先頭アドレスレジスタ７０７には高速ＲＡＭ６０１がマッピングされるアドレス領域の先頭アドレスが設定される。それらレジスタ７０２，７０３，７０５，７０７はＣＰＵ６００によってリード／ライトアクセス可能とされ、制御回路７０６が内部アドレスバスＩＡＢの値をデコードして各レジスタを選択し、内部データバスＩＤＢを介してそれらレジスタがリード／ライトされる。ＣＳＡＲ７０２及びＣＥＡＲ７０３には前記ＤＭＡコントローラ６１２によって高速ＲＡＭ６０１に転送されたＲＯＭ６０２，ＲＡＭ６０３のデータアドレスの範囲を指定するアドレス情報が設定されることになる。
比較回路７１２は内部アドレスバスＩＡＢの値がＣＳＡＲ７０２の値以上のアドレスかを判定して、その判定結果を制御回路７０６に与える。比較回路７１３は内部アドレスバスＩＡＢの値がＣＥＡＲ７０２の値以下のアドレスかを判定して、その判定結果を制御回路７０６に与える。それによって判定経路７１５は、ＣＰＵ６００から内部ドレスバスＩＡＢに供給されるアドレス信号が、ＣＳＡＲ≦アドレス≦ＣＥＡＲの範囲に入っていることを検出すると、バリッドフラグ７０５１がセット状態にされていることを条件に、アドレス演算器７１４にてＲＡＭ先頭アドレスレジスタ（ＲＣＡＲ）７０７の値からＣＳＡＲ７０２の値を減算し（ＲＣＡＲ−ＣＳＡＲ）、減算された値をＲＡＭアドレス変換情報７１６として、高速ＲＡＭ６０１に供給し、更に、変換制御信号７１５０を活性化して高速ＲＡＭ６０１に供給する。バリッドフラグ７０５１がリセット状態にされているときは、内部バスＩＡＢのアドレスの値に拘わらず、前記アドレス演算器７１４は動作されず、且つ、変換制御信号７１５０は非活性状態にされる。制御回路７０６は、変換制御信号７１５０を活性化するとき、アドレスバスＩＡＢの値が指定するＲＯＭ６０２又はＲＡＭ６０３の動作選択を抑止し、それに代えて高速ＲＡＭ６０１の動作を選択信号（メモリイネーブル信号）で選択する。
第４１図には高速ＲＡＭ６０１及びアドレス演算器６１３のブロック図が示される。アドレス演算器６１３は、変換制御信号７１５０が活性化されているとき、内部アドレスバスＩＡＢの値に、前記ＲＡＭアドレス変換情報７１６を加算し、これをアクセスアドレスとして高速ＲＡＭ６０１に供給する。変換制御信号７１５０が非活性状態の場合には、アドレス演算器６１３は内部アドレスバスＩＡＢの値を直接高速ＲＡＭ６０１に供給する。ＤＭＡコントローラ６１２にてＲＯＭ６０２，ＲＡＭ６０３のデータが高速ＲＡＭ６０１に転送されるときは前記バリッドフラグ７０５１がリセット状態にされるので、ＤＭＡコントローラ６０４が出力するアドレス信号に従って高速ＲＡＭ６０１がアクセスされる。
ＤＭＡコントローラ６１２による高速ＲＡＭ６０１へのデータ転送が行われた後に、ＣＰＵ６００が内蔵ＲＯＭ６０２、内蔵ＲＡＭ６０３、又は外部メモリ６０８内にある命令やデータをアクセスしようとしたときの動作の一例を説明する。ＣＰＵ６００が内部バス６０６を介してアドレス信号６５０を出力する。アドレス信号６５０がバスコントローラ６０４に供給され、供給されたアドレス信号はＣＳＡＲ７０２及びＣＥＡＲ７０３の値とそれぞれ比較される。ＣＳＡＲ≦アドレス≦ＣＥＡＲであれば、変換制御信号７１５０が活性化され、且つアドレス演算器７１４にてＣＰＵ６００のアクセスアドレスは高速ＲＡＭ６０１のアドレスに変換される。これによって、ＣＰＵ６００は高速ＲＡＭ６０１を高速アクセスすることによって、低速メモリ６０２、６０３又は６０８のデータをアクセスできる。このときの、ＣＰＵアクセスアドレス−ＣＳＡＲ＋高速ＲＡＭ先頭アドレス、というアドレス演算に無視し得ない時間がかかる場合には、高速ＲＡＭ６０１のアクセスアドレスを、高速ＲＡＭ６０１の先頭アドレスの上位とアドレス信号６５０の下位を接続したものとすればよい。或いはＣＥＡＲ６０３を廃止し、アドレス信号６５０の上位とＣＳＡＲ６０２の上位との一致比較を行うようにしてもよい。
尚、ＲＯＭ６０２、ＲＡＭ６０３の全て又は何れかが、或いは、各々の一部分が、アクセススピードが間に合えば、１サイクルアクセスが可能である構成も採れる。この場合、内部バス６０６に接続されたデバイスはもともと１サイクルアクセスできるので上記ＲＡＭキャッシュの制御は行わずに通常通りにＣＰＵ６００がアクセスできる。また、上記実施例における高速ＲＡＭ２１０へのアドレス置き換えによるデータ転送の対象は、内蔵ＲＯＭ，ＲＡＭのデータに限定されず、外部メモリのデータだけを対象とし、或いは内蔵ＲＯＭ及びＲＡＭと外部メモリとの双方のデータを対象とすることができる。それらの場合にも上記実施例と同様の制御によって実現できる。
上記実施例のように、ＣＰＵ６００が内蔵ＲＯＭ／ＲＡＭのある指定された範囲をアクセスしようとしたときに、無条件に内蔵の高速ＲＡＭ６０１をアクセス可能にする構成によれば、ユーザがプログラムの初期設定時などにあらかじめＤＭＡＣコントローラ−６１２などにより高速ＲＡＭ６０１に内蔵ＲＯＭ／ＲＡＭ内の動作を高速化したいプログラムやデータを転送しておけば、処理の高速化を図ることができる。Ｃコンパイラやアセンブラなどで完成したプログラムのうち高速化すべきところがわかっていれば、本機能にて簡単に性能向上できる。この方式だと、キャッシュミスによるペナルティや、バックグランド処理中の高速化ルーチンの転送がなくなる。また、実行時間が、初回通過時とそれ以降も全く同じになり、タイミング設計がやりやすい特長をもつ。当然、内蔵ＲＯＭ／ＲＡＭに収まりきれずにプログラムがアクセスタイムの遅い外部メモリにはみ出しても、この外部メモリを内蔵ＲＯＭ／ＲＡＭと同様に制御すれば性能低下を防ぐことができる。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、周辺回路１１を内部バス６に直結せず、何らかの周辺機能専用バスに接続して、その周辺機能専用バスと内部６を別のインタフェース回路を介して接続することも可能である。キャッシュメモリＣＡＣＨＥと外部メモリ１３との間のデータライト時のコヒーレンシについてはライトバックやライトスルー方式等によって保つことができる。また、キャッシュメモリの初期化などのために全バリッドビットを一括してクリアするパージ機構を別に設けておくことも可能である。更に、キャッシュメモリＣＡＣＨＥとしては、命令専用、データ専用、命令データ混合型の何れか、又はそれらを組み合わせの構成を採用することが可能である。前記制御信号ＢＥＣＮＯＰについてはバスコントローラがそのアクセスエリア判定機構を流用して生成してもよい。その場合には、キャッシュメモリからのキャッシュヒット／ミスの通知をラッチするフラグＦＬＧをバスコントローラが備えて、前記制御信号ＢＥＣＮＯＰのアサート／ネゲートの制御を行わなければならない。更にそのような制御信号ＢＥＣＮＯＰの生成とアサート／ネゲートの制御を専用回路で行ってもよい。また、キャッシャブルエリア／ノンキャッシャブルエリアの判定は上記実施例のようにアクセスアドレスに基づいてキャッシュコントローラが行う構成に限定されない。例えば、バスコントローラが行ったり、或いは、キャッシュコントローラに設けられたキャッシュイネーブル／ディスエーブルを制御する制御ビットを、バスコントローラが判定したアクセスエリアがノンキャッシャブルエリアかキャッシャブルエリアかに応じて書換制御することで行ってもよい。
産業上の利用可能性
以上のように、本発明は、中央処理装置と共にＲＯＭ，ＲＡＭ，キャッシュメモリ等のメモリを内蔵したマイクロコンピュータ、そして外部メモリ等と一緒にマイクロコンピュータを搭載した各種データ処理システムに広く適用することができる。
【図１】
0003735373.tif 000002
【図２】
0003735373.tif 000003
【図３】
0003735373.tif 000004
【図４】
0003735373.tif 000005
【図５】
0003735373.tif 000006
【図６】
0003735373.tif 000007
【図７】
0003735373.tif 000008
【図８】
0003735373.tif 000009
【図９】
0003735373.tif 000010
【図１０】
0003735373.tif 000011
【図１１】
0003735373.tif 000012
【図１２】
0003735373.tif 000013
【図１３】
0003735373.tif 000014
【図１４】
0003735373.tif 000015
【図１５】
0003735373.tif 000016
【図１６】
0003735373.tif 000017
【図１７】
0003735373.tif 000018
【図１８】
0003735373.tif 000019
【図１９】
0003735373.tif 000020
【図２０】
0003735373.tif 000021
【図２１】
0003735373.tif 000022
【図２２】
0003735373.tif 000023
【図２３】
0003735373.tif 000024
【図２４】
0003735373.tif 000025
【図２５】
0003735373.tif 000026
【図２６】
0003735373.tif 000027
【図２７】
0003735373.tif 000028
【図２８】
0003735373.tif 000029
【図２９】
0003735373.tif 000030
【図３０】
0003735373.tif 000031
【図３１】
0003735373.tif 000032
【図３２】
0003735373.tif 000033
【図３３】
0003735373.tif 000034
【図３４】
0003735373.tif 000035
【図３５】
0003735373.tif 000036
【図３６】
0003735373.tif 000037
【図３７】
0003735373.tif 000038
【図３８】
0003735373.tif 000039
【図３９】
0003735373.tif 000040
【図４０】
0003735373.tif 000041
【図４１】
0003735373.tif 000042