(57)【特許請求の範囲】
【請求項１】
命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された命令及びデータの一部を保持するバッファとを有し、
前記中央処理装置は命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、
前記バッファは、前記中央処理装置が実行する命令の命令列を格納する命令キャッシュと、中央処理装置の命令実行に用いるデータのデータ列を格納するデータキャッシュと、前記命令キャッシュに格納された新たな命令列に前記所定の命令が含まれるとき当該命令で指定される実効アドレスに在るデータを含むデータ列を前記データキャッシュに格納するためのデータプリフェッチアドレスを生成するアドレス生成回路とを備え、
前記命令キャッシュはＣＰＵで生成される前記メモリのアクセスアドレスに対応して1キャッシュライン分のラインアドレスをラッチするラインアドレスラッチと、当該アクセスアドレスによって選択されるキャッシュラインの命令を保持するライン命令ラッチとを有し、
前記アドレス生成回路は、前記ラインアドレスラッチにラッチされたラインアドレスの次ラインのアドレスを命令プリフェッチアドレスとして生成し、更に前記アドレス生成回路は前記ライン命令ラッチにラッチされた命令列に含まれる、全ての前記所定の命令が指定するオフセットに対応するデータキャッシュのキャッシュラインアドレスを取得し、取得した全てのキャッシュラインアドレスを保持し、保持したキャッシュラインアドレスに順次前記レジスタの値を加算してデータプリフェッチアドレスを出力する、ことを特徴とするデータプロセッサ。
【請求項２】
前記命令キャッシュはキャッシュミスに応答してミスに係るアドレスの命令列を指定するための命令フェッチアドレスを出力し、
前記データキャッシュはキャッシュミスに応答してミスに係るアドレスのデータ列を指定するためのデータフェッチアドレスを出力する、請求項１記載のデータプロセッサ。
【請求項３】
前記アドレス生成回路が生成する命令プリフェッチアドレス、前記アドレス生成回路が生成するデータプリフェッチアドレス、命令キャッシュがキャッシュミスのとき出力する命令フェッチアドレス、又はデータキャッシュがキャッシュミスのとき出力するデータフェッチアドレスを選択して前記メモリへ供給するアドレス選択回路を有し、
前記アドレス選択回路によるアドレス選択の優先順位は、前記データプリフェッチアドレス、前記命令プリフェッチアドレス、前記データアドレス、前記命令アドレスの順に昇順で高くされる、請求項２記載のデータプロセッサ。
【請求項４】
1個の半導体基板に形成された請求項１記載のデータプロセッサ。
【請求項５】
前記メモリは電気的に書換え可能な不揮発性メモリである、請求項４記載のデータプロセッサ。
【請求項６】
命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された一部の命令列及びデータ列を保持するバッファとを有し、
前記中央処理装置は、命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、
前記バッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、格納された全ての前記所定の命令のそれぞれによって指定される全ての実効アドレスのデータを含むデータ列を順次前記メモリから前記キャッシュメモリにプリフェッチする、データプロセッサ。
【請求項７】
前記メモリはN×Mのサイズのデータマップを複数有し、前記中央処理装置は前記所定の命令でアクセスすべきデータマップの基準点のアドレスを前記レジスタに設定する、請求項６記載のデータプロセッサ。
【請求項８】
前記データマップは機器制御用のパラメータデータである、請求項７記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサにおけるデータのプリフェッチに関し、例えば、フラッシュメモリ等のＲＯＭが実装される半導体集積回路におけるＲＯＭアクセスの高速化に適用して有効な技術に関する。
【背景技術】
【０００２】
自動車の内燃機関制御などに使われる制御用マイクロコンピュータに、例えばフラッシュメモリをＲＯＭ（Read Only Memory）として混載しているものがある。プログラムをＲＯＭに内蔵するが、制御の高精度化に伴うプログラム規模の増大に伴い、ＲＯＭの容量は数ＭＢ(Mega byte)と大容量になっている。大容量ＲＯＭでは、メモリアクセス速度がＣＰＵの処理速度より遅いため、ＣＰＵクロックでアクセスする場合、数サイクルを要することになる。そこで、ＲＯＭアクセスの高速化のため、バッファ（ＲＯＭキャッシュと呼ぶこともある）を設ける。ＲＯＭキャッシュにヒットすると、ＣＰＵクロックで１サイクル、ミスする場合は、ＲＯＭアクセスを行うため、数サイクルを要する。
【０００３】
ＲＯＭキャッシュは、一度ＲＯＭにアクセスすることで、メモリの１ライン分（例えば２５６ビット）のデータがＲＯＭキャッシュにコピーされる。ＲＯＭキャッシュにデータがないときは、ＣＰＵはＲＯＭアクセス分待たされることになる。このため、ＣＰＵがＲＯＭデータを使用する際は、できるだけＲＯＭキャッシュ上にデータがあることが望ましい。このため、特許文献１に示すように、ＲＯＭキャッシュに先読みする機構を持たせることが一般的である。
【０００４】
自動車の内燃機関制御向けプログラムでは、複数のセンサ情報を元にデータマップを参照し、制御数値を得る。特許文献２に示すようにデータマップは、N×Mの２元配置から構成される。自動車の内燃機関制御向けマイコンでは、データマップはＲＯＭ上にあるため、データマップの構造を考慮したＲＯＭアクセスの高速化を行う必要がある。
【０００５】
【特許文献１】日本国特開２００４−３３４７７３号公報
【特許文献２】日本国特開２００５−２０１１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のように、自動車の内燃機関制御向けマイコンでは、データマップの構造を考慮したＲＯＭアクセスの高速化が必要となっている。ＲＯＭキャッシュ上のデータのみを用いて先読みを行うとき、命令から類推可能なものとして、（１）連続命令実行時の次の命令ライン、（２）ＰＣ相対分岐命令を含む命令ライン、（３）ＰＣ相対ロード命令を含むデータラインが考えられる。プログラムカウンタ（ＰＣ）の値はＲＯＭキャッシュに保持する命令のアドレスから入手することができる。従来のＲＯＭキャッシュでは、ＲＯＭデータの先読み対象として、ＰＣ相対ロード命令がある。これは、プログラムに埋め込まれたＣ言語の定数の取得などに用いられる。
【０００７】
例えば記述“ｃｏｎｓｔ  ｉｎｔ  ＮＵＭ  ＝  １００”は、ロード命令とデータがプログラム上で、近傍のアドレスで指定されることを示している。ところが、データマップは、N×Mの２元の大規模配列で、ロード命令とデータがプログラム上で、遠方のアドレスで指定される。このため、ＰＣ相対ロード命令でのＲＯＭデータの先読みでは対応できない。
【０００８】
本発明の目的は、ＰＣ相対ロード命令を用いる場合に比べて広い範囲から容易にデータのプリフェッチを行うことができるデータプロセッサを提供することにある。
【０００９】
本発明の別の目的は、メモリ上に形成されたデータマップのデータに対して高速アクセスすることができるデータプロセッサを提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、中央処理装置は、命令実行によって所望の値が設定可能にされるレジスタの値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、メモリに格納された一部の命令列及びデータ列を保持するバッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、当該命令で指定される実効アドレスのデータを含むデータ列を前記メモリから前記キャッシュメモリにプリフェッチする。
【００１３】
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからＰＣ相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、ＰＣ相対ロード命令を用いる場合に比べて広い範囲から容易にデータのプリフェッチを行うことができる。
【００１６】
また、メモリ上に形成されたデータマップのデータに対して高速アクセスを行うことができる。
【発明を実施するための最良の形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕本発明に係るデータプロセッサは、命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された命令及びデータの一部を保持するバッファとを有する。前記中央処理装置は命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能である。前記バッファは、前記中央処理装置が実行する命令の命令列を格納する命令キャッシュと、中央処理装置の命令実行に用いるデータのデータ列を格納するデータキャッシュと、前記命令キャッシュに格納された新たな命令列に前記所定の命令が含まれるとき当該命令で指定される実効アドレスに在るデータを含むデータ列を前記データキャッシュに格納するためのデータプリフェッチアドレスを生成するアドレス生成回路とを有する。
【００１９】
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからＰＣ相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
【００２０】
〔２〕項１のデータプロセッサにおいて、例えば前記命令キャッシュは、ＣＰＵで生成される前記メモリのアクセスアドレスに対応して1キャッシュライン分のラインアドレスをラッチするラインアドレスラッチと、当該アクセスアドレスによって選択されるキャッシュラインの命令を保持するライン命令ラッチとを有する。前記アドレス生成回路は、前記ラインアドレスラッチにラッチされたラインアドレスの次ラインのアドレスを命令プリフェッチアドレスとして生成する。命令プリフェッチアドレスについても容易に生成することができる。
【００２１】
〔３〕項２のデータプロセッサにおいて、例えば前記アドレス生成回路は、前記ライン命令ラッチにラッチされた命令列に含まれる前記所定の命令が指定するオフセットに対応するデータキャッシュのキャッシュラインアドレスを取得し、取得したキャッシュラインアドレスを順次保持し、保持したキャッシュラインアドレスに前記レジスタの値を加算してデータプリフェッチアドレスを出力する。これにより、１命令列から複数のデータプリフェッチアドレスが生成される場合でも、対応する複数のキャッシュラインアドレスを保持するだけでよいから、それぞれのデータプリフェッチアドレスを予め演算して保持する構成に比べて、アドレス生成回路の回路規模を縮小することができる。
【００２２】
〔４〕項３のデータプロセッサにおいて、前記命令キャッシュはキャッシュミスに応答してミスに係るアドレスの命令列を指定するための命令フェッチアドレスを出力する。前記データキャッシュはキャッシュミスに応答してミスに係るアドレスのデータ列を指定するためのデータフェッチアドレスを出力する。
【００２３】
〔５〕項４のデータプロセッサは更に、前記アドレス生成回路が生成する命令プリフェッチアドレス、前記アドレス生成回路が生成するデータプリフェッチアドレス、命令キャッシュがキャッシュミスのとき出力する命令フェッチアドレス、又はデータキャッシュがキャッシュミスのとき出力するデータフェッチアドレスを選択して前記メモリへ供給するアドレス選択回路を有る。前記アドレス選択回路によるアドレス選択の優先順位は、前記データプリフェッチアドレス、前記命令プリフェッチアドレス、前記データアドレス、前記命令アドレスの順に昇順で高くされる。
【００２４】
〔６〕項１のデータプロセッサは例えば1個の半導体基板に形成されて１チップ化される。
【００２５】
〔７〕項６のデータプロセッサにおいて、前記メモリは電気的に書換え可能な不揮発性メモリである。
【００２６】
〔８〕本発明の別の実施の形態に係るデータプロセッサは命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された一部の命令列及びデータ列を保持するバッファとを有する。前記中央処理装置は、命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能である。前記バッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、当該命令で指定される実効アドレスのデータを含むデータ列を前記メモリから前記キャッシュメモリにプリフェッチする。
【００２７】
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからＰＣ相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
【００２８】
〔９〕項８のデータプロセッサにおいて、前記メモリはN×Mのサイズのデータマップを複数有し、前記中央処理装置は前記所定の命令でアクセスすべきデータマップの基準点のアドレスを前記レジスタに設定する。
【００２９】
〔１０〕項９のデータプロセッサにおいて、前記データマップは機器制御用のパラメータデータである。
【００３０】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００３１】
図２には本発明に係るデータプロセッサ（ＤＰＵ）１の一例が示される。同図に示されるデータプロセッサ１は特に制限されないが単結晶シリコンのような１個の半導体基板に相補型ＭＯＳ集積回路製造技術等によって形成される。データプロセッサ１は、バッファメモリとしてのＲＯＭキャッシュ（ＲＯＭＣ）５と不揮発性メモリとして電気的に書換え可能なフラッシュメモリから成るフラッシュＲＯＭ（ＦＲＯＭ）と６を有する。フラッシュＲＯＭ６はＲＯＭキャッシュ５に接続される。
【００３２】
ベースレジスタＢＲを持つ中央処理装置（ＣＰＵ）２と浮動小数点演算ユニット（ＦＰＵ）３は密結合され、それらは命令フェッチバスＦ−ＢＵＳとオペランドバスＯ−ＢＵＳを介して、ランダムアクセスメモリ（ＲＡＭ）４及びＲＯＭキャッシュ５に接続される。
【００３３】
システムバスＳＹＳ−ＢＵＳには、前記ＲＡＭ４及びＲＯＭキャッシュ５の他に、ＤＭＡコントローラ（ＤＭＡＣ）８とバスブリッジ（ＢＲＧ）７が接続される。ＤＭＡコントローラ（ＤＭＡＣ）８とバスブリッジ（ＢＲＧ）７は周辺バスＰ−ＢＵＳにインタフェースされ、この周辺バスＰ−ＢＵＳには、クロック信号を生成するクロックパルスジェネレータ（ＣＰＧ）９、割込みコントローラ（ＩＮＴＣ）１０、コンペアマッチタイマ（ＣＭＴ）１１、シリアルコミュニケーションインターフェース（ＳＣＩ）１２、及び、各種センサからの信号が入力されるＡ／Ｄコンバータ（ＡＤＣ）１３が接続される。
【００３４】
図１には前記ＲＯＭキャッシュ５の要部が示される。ＲＯＭキャッシュ５は、バスインターフェースとして、命令フェッチバスＦ−ＢＵＳとのインタフェース回路ＦＢＩＦ、オペランドバスＯ−ＢＵＳとのインタフェース回路ＯＢＩＦ、システムバスＳ−ＢＵＳとのインタフェース回路ＳＢＩＦ、及びフラッシュＲＯＭ６とのインタフェース回路ＲＩＦを持つ。ＦＣＭＤ，ＦＤＡＴ，ＦＲＤＹ，ＦＡＤＲは命令フェッチバスＦ−ＢＵＳのインタフェース信号であり、ＦＣＭＤはバスコマンド、ＦＤＡＴは命令のデータ（単に命令とも記す）、ＦＲＤＹはレディー信号、ＦＡＤＲはアドレス信号である。ＯＣＭＤ，ＯＤＡＴ，ＯＲＤＹ，ＯＡＤＲはオペランドバスＯ−ＢＵＳのインタフェース信号であり、ＯＣＭＤはバスコマンド、ＯＤＡＴはオペランドのデータ（単にデータとも記す）、ＯＲＤＹはレディー信号、ＯＡＤＲはアドレス信号である。ＳＣＭＤ，ＳＤＡＴ，ＳＡＤＲはシステムバスＳ−ＢＵＳのインタフェース信号であり、ＳＣＭＤはバスコマンド、ＳＤＡＴはシステムデータ、ＯＡＤＲはアドレス信号である。
【００３５】
インタフェース回路ＲＩＦに対して、フラッシュＲＯＭ６へのアドレスを選択するアドレスセレクタＡＤＲＳを備える。アドレスセレクタＡＤＲＳは、プリフェッチアドレス生成器ＰＡＤＧで生成されたアドレス又はＣＰＵ２で生成されたアドレス等の中から一つを選択してインタフェース回路ＲＩＦに出力する。ＲＯＭキャッシュ５の設定を行うためのアドレスが割当てられた構成レジスタＣＦＧＲはインタフェース回路ＳＢＩＦと接続される。
【００３６】
ＲＯＭキャッシュ５はフラッシュＲＯＭ６の先読みバッファとして、命令キャッシュＩＣとデータキャッシュＤＣを備える。命令キャッシュＩＣ及びデータキャッシュＤＣにおける命令及びデータの保持単位である１キャッシュラインは、例えば２５６ビットである。命令キャッシュＩＣはアドレス信号ＦＡＤＲを受取って、連想動作を行い、キャッシュヒットであればインタフェース回路ＦＢＩＦに命令を返し、キャッシュミスであればミスに係るアドレスをアドレスセレクタＡＤＲＳに与え、フラッシュＲＯＭ６から１命令キャッシュラインの命令列を受取って必要な命令をインタフェース回路ＦＢＩＦに返す。データキャッシュＩＣはアドレス信号ＯＡＤＲを受取って、連想動作を行い、キャッシュヒットであればインタフェース回路ＯＢＩＦにデータをリードデータを返し、キャッシュミスであればミスに係るアドレスをアドレスセレクタＡＤＲＳに与え、フラッシュＲＯＭ６から１データキャッシュラインのデータ列を受取って必要なデータをインタフェース回路ＯＢＩＦに返す。
【００３７】
命令キャッシュＩＣ及びデータキャッシュＤＣはいずれも４ウェイで４ライン分のセットアソシアティブ構成を備える。キャッシュライン数とキャッシュの方式は特に制限されず、例えば、ダイレクトマップ、フルアソシアティブでも構わない。
【００３８】
フラッシュＲＯＭ６に対するプリフェッチアドレスはプリフェッチアドレス生成器ＰＡＤＧで演算される。プリフェッチアドレス生成器ＰＡＤＧは、実行中命令を含む命令列の次キャッシュラインのアドレスを命令プリフェッチアドレスとして生成し、また、ベースレジスタＢＲ相対のアドレシングモードを持つロード命令（単にＢＲ相対ロード命令とも記す）の当該アドレシングモードによる実効アドレスに基づいてデータプリフェッチアドレスを生成する。このプリフェッチアドレスの生成機能の詳細は後述する。尚、プリフェッチとしては、ＢＲ相対ロード命令と同様の手法で、ＰＣ相対分岐、ＰＣ相対ロード、汎用レジスタ相対分岐、汎用レジスタ相対ロードを実装することも可能であるが、本明細書では説明の簡略にするためにその詳細な説明は省略する。ＣＯＮＴはＲＯＭキャッシュ５の制御を行う制御部を総称する。
【００３９】
図３には命令キャッシュＩＣの一例が例示される。４ウェイで４ライン分のセットアソシアティブ構成である。ＣＰＵ２からフラッシュＲＯＭ６に対する命令アクセスがある場合、まず命令キャッシュＩＣを検索し、命令キャッシュＩＣのアドレスにヒットしたときは命令キャッシュＩＣから命令が読出され、命令キャッシュＩＣにミスしたときはフラッシュＲＯＭ６から命令が読出され、ＣＰＵ２に命令が出力される。フラッシュＲＯＭ６への命令アクセスを行った場合は、命令キャッシュＩＣにもデータが蓄えられる。命令フェッチでは、命令フェッチバスＦ−ＢＵＳを介して命令フェッチアドレスＦＡＤＲが供給される。アドレスが供給されると、４ウェイのアドレスアレイＩＣ＿ＡＡＲＹ０〜３からタグアドレスＴＡＤＲを同時に読み出す。入力アドレスのビット３１〜５と４ウェイのタグアドレスを比較し、比較結果が一致し、比較されたエントリが有効（Ｖ＝１）のときヒットとなり、対応するエントリのデータをデータアレイＩＣ＿ＤＡＲＹ０〜３から１ライン分（２５６ビット）読み出す。入力アドレス４〜２ビットを用いて１ラインから１ロングワード（３２ビット）を選択する。命令キャッシュＩＣのリードミス時は、フラッシュＲＯＭ６からのデータでウェイを更新する。例えばＬＲＵ（least recently used）のロジックを用いて、最も古く書き換えられたエントリを置換え、先読みバッファに登録する際、Ｖビットを１にセットし、置き換えられたエントリが最新となるようにＬＲＵのフラグを更新する。命令フェッチアドレスＦＡＤＲを含む命令ラインに関しては、ラインアドレスＩＮＳＴ＿ＡＤＲとラインデータＩＮＳＴ＿ＢＵＦがそれぞれラッチ回路ＩＣ＿ＡＦＦ、ＩＣ＿ＤＦＦに保持され、保持されたラインアドレスＩＮＳＴ＿ＡＤＲは次命令ラインのアドレス計算に、保持されたラインデータＩＮＳＴ＿ＢＵＦは、ＢＲ相対ロード命令の探索に使用される。尚、本明細書のアドレスはバイト（８ビット）を最小単位とするバイトアドレスとされる。
【００４０】
図４にはデータキャッシュＤＣの一例が示される。４ウェイで４ライン分のセットアソシアティブ構成である。ＣＰＵ２からフラッシュＲＯＭ６に対するデータアクセスがある場合、まずデータキャッシュＤＣを検索し、データキャッシュＤＣのアドレスにヒットしたときはデータキャッシュＤＣからデータが読出され、データキャッシュＤＣにミスしたときはフラッシュＲＯＭ６からデータが読出され、ＣＰＵ２にデータが出力される。フラッシュＲＯＭ６へのデータアクセスを行った場合は、データキャッシュＤＣにもデータが蓄えられる。データロードでは、オペランドバスＯ−ＢＵＳを介してオペランドアドレスＯＡＤＲが供給される。アドレスが供給されると、４ウェイのアドレスアレイＤＣ＿ＡＡＲＹ０〜３からタグアドレスＴＡＤＲを同時に読み出す。入力アドレスのビット３１〜５と４ウェイのタグアドレスを比較し、比較結果が一致し、比較されたエントリが有効（Ｖ＝１）のときヒットとなり、対応するエントリのデータをデータアレイＤＣ＿ＤＡＲＹ０〜３から１ライン分（２５６ビット）読み出す。入力アドレス４〜２ビットを用いて１ラインから１ロングワード（３２ビット）を選択する。データキャッシュＤＣのリードミス時は、フラッシュＲＯＭ６からのデータでウェイを更新する。ＬＲＵ論理を用いて、最も古く書き換えられたエントリを置換え、先読みバッファに登録する際、Ｖビットを１にセットし、置き換えられたエントリが最新となるようにＬＲＵのフラグを更新する。
【００４１】
図５にはプリフェッチアドレス生成器ＰＡＤＧの一例が示される。先読みをおこなうため、命令キャッシュＩＣのラインアドレスＩＮＳＴ＿ＡＤＲとラインデータＩＮＳＴ＿ＢＵＦを入力する。次命令ラインアドレス生成器ＩＰＦＡＤＲＧでは、現行ラインアドレスＩＮＳＴ＿ＡＤＲにライン長を加算して次命令ラインのアドレスＩＰＦ＿ＡＤＲの生成と、次ラインのフラッシュＲＯＭアクセスを行うためのフラグＩＰＦ＿ＳＲＣＨを設ける。次命令ラインのアドレスＩＰＦ＿ＡＤＲが命令プリフェッチアドレスとなる。ＢＲ相対ロードサーチ回路ＢＲＳＲＣＨでは、現行ラインデータＩＮＳＴ＿ＢＵＦをデコードしてそのラインに含まれるＢＲ相対ロード命令のライン数ＢＲ＿ＳＲＣＨを探索する。すなわち、現行ラインデータＩＮＳＴ＿ＢＵＦに含まれる全てのＢＲ相対ロード命令に対応するデータキャッシュのキャッシュラインのキャッシュライン数ＢＲ＿ＳＲＣＨを探索する。ＢＲ相対ロード命令数ではないことに注意する。ＢＲ相対ロードサーチ回路にはラインの境界も考慮するために、ＢＲレジスタの値も入力する。ＢＲレジスタ値によってはライン数が変わる場合があるからである。ＢＲ相対ロードアドレスＦＩＦＯバッファＢＲＦＩＦＯでは、現行ラインデータＩＮＳＴ＿ＢＵＦがデコードされ、ＢＲに対するオフセットのラインアドレスがＦＩＦＯメモリに保持される。すなわち、現行ラインデータＩＮＳＴ＿ＢＵＦに含まれる全てのＢＲ相対ロード命令が指定するオフセットに対応するデータキャッシュのラインアドレスが順番にＦＩＦＯメモリに格納される。ＢＲ相対ロード命令のオフセットそのものではないことに注意する。ＦＩＦＯメモリはＢＲ相対ロード命令のライン数ＢＲ＿ＳＲＣＨと連動して、ラインアドレスの小さい順にポインタで管理される。ＢＲ相対ラインアドレスＢＲ＿ＡＤＲは、ベースレジスタＢＲの値とＢＲ相対ロードアドレスＦＩＦＯバッファＢＲＦＩＦＯの出力値とを加算することにより得られる。ＢＲ相対ラインアドレスＢＲ＿ＡＤＲがデータプリフェッチアドレスになる。デクリメント制御部ＤＥＣ＿ＣＴＬはフラッシュＲＯＭ６に対して１命令キャッシュライン分の命令プリフェッチアクセスが行われる度に次命令ラインのフラグＩＰＦ＿ＳＲＣＨをデクリメントする制御を行い、同様に、フラッシュＲＯＭ６に対する１データキャッシュライン分のデータプリフェッチのアクセスが行われる度にＢＲ相対ロード命令のライン数ＢＲ＿ＳＲＣＨをデクリメントする制御を行う。
【００４２】
図６にはＲＯＭキャッシュ５のアドレスセレクタＡＤＲＳの一例が示される。アドレスセレクタＡＤＲＳは、次命令ラインプリフェッチ、ＢＲ相対ロード命令のラインプリフェッチ、命令キャッシュミスに起因する命令ラインフェッチ、データキャッシュミスに起因するデータラインフェッチのいずれのフラッシュＲＯＭアクセスを行うかを選択し、選択されたアドレスを出力する。次命令ラインプリフェッチ、ＢＲ相対ロード命令のラインプリフェッチ、命令ラインフェッチ、データラインフェッチのアドレスは、それぞれ、ＩＰＦ＿ＡＤＲ、ＢＲ＿ＡＤＲ、ＦＢＩＦ＿ＡＤＲ、ＯＢＩＦ＿ＡＤＲである。フラッシュＲＯＭアクセスのアドレス選択の優先度は、命令キャッシュミス（ＩＣ＿ＨＩＴの反転）  ＞  データキャッシュミス（ＤＣ＿ＨＩＴの反転）＞  次命令ラインプリフェッチ有効  ＞  ＢＲ相対ロード命令のラインプリフェッチ有効、となる。
【００４３】
以上の構成を持つＲＯＭキャッシュ５において、具体的な動作を命令列並びにタイミングチャートを用いて説明する。
【００４４】
図７は自動車の内燃機関制御向けプログラムのデータマップが零時される。N×Mの２元配置から構成される複数のデータマップ（データ配列）を有する。データは特に制限されないが、１６ビットで固定小数点とする。各データマップはオフセットで指定可能な大きさを有する。ベースレジスタＢＲの値がデータマップの原点を指すものとすれば、ベースレジスタの設定値を変更することにより、オフセットで指定可能な範囲を超える範囲からデータロードが可能になる。
【００４５】
図８は自動車の内燃機関制御向けプログラムとして、テーブルアクセスをベースレジスタ相対のロード命令を用いて記述した例である。アドレス０の時点でデータマップのテーブル先頭アドレス１０００番地がＢＲベースレジスタに保持されていると仮定する。アドレス４、アドレス１０の命令では、オフセット４、２４を加算し、アドレス１００４番地、１０２４番地のデータをロードする。アドレス１４の命令でＢＲを２０００番地に更新され、アドレス２２の命令では、オフセット１２を加算し、アドレス２０１２番地のデータをロードする。尚、ソースプログラム記述においては、データマップの基準となるアドレスをベースレジスタＢＲに格納するように、プラグマを用いてコンパイラに指示するようにされる。
【００４６】
図９は、図８の自動車の内燃機関制御向けプログラムを用いて図２のＲＯＭキャッシュＲＯＭＣを用いて実行したフローチャートを示す。フローチャートは、命令フェッチフローとプリフェッチフローに分けられる。説明の簡略化のため、図８のプログラムには、分岐命令とＢＲ相対以外のデータロードが含まれない。このため、フローチャートも分岐とＢＲ相対以外のデータロードのフローは含めていない。命令フェッチフローでは、命令フェッチを行ない（Ｓ１）、ＣＰＵ２からの命令フェッチアドレスが、新規ライン境界かを判定し（Ｓ２）、新規ライン境界ならプリフェッチフローを起動する。新規ライン境界でないと判別されたときは、命令フェッチアドレスがＲＯＭキャッシュＲＯＭＣ内の命令キャッシュＩＣまたはデータキャッシュＤＣにヒットするかを判定し（Ｓ３）、キャッシュヒットの場合は、いずれかのキャッシュの該当するラインから命令フェッチを行い、キャッシュミスの場合はフラッシュＲＯＭアクセスを行う（Ｓ４）。
【００４７】
プリフェッチフローでは、新規ライン向けに命令ラインデータ（ＩＮＳＴ＿ＢＵＦ）と命令ラインアドレス（ＩＮＳＴ＿ＡＤＲ）を更新する（Ｓ５）。まず、命令ラインアドレスの次のラインの命令プリフェッチを行う。次命令ラインがキャッシュヒットする場合は、フラッシュＲＯＭアクセスは不要で（Ｓ６）、キャッシュミスするときはフラッシュＲＯＭアクセスを行い（Ｓ６，Ｓ７）、命令キャッシュに命令プリフェッチする。フローチャートでは省略したが、新規ラインのプリフェッチを行ったかどうかはＩＰＦ＿ＳＲＣＨフラグで管理する。次に、ＢＲ相対ロードのラインプリフェッチを行う。命令ラインデータを探索し、ＢＲ相対ロードのライン数（ＢＲ＿ＳＲＣＨ）をｉとする（Ｓ８）。ｉが０になるまで繰り返し、ＢＲ相対ロードのプリフェッチを行う（Ｓ９〜Ｓ１２）。フラッシュＲＯＭアクセスはデータキャッシュＤＣがキャッシュミスした時だけ行われる（Ｓ１１）。以上のフローで、命令フェッチと次命令ラインとＢＲ相対ロード命令のラインプリフェッチを行う。
【００４８】
図１０には図８の自動車の内燃機関制御向けプログラムを図２のＲＯＭキャッシュを用いて実行したときのタイミングチャートが例示される。フラッシュＲＯＭアクセスはレイテンシ２、スループット２と仮定する。
【００４９】
サイクル０で図９の命令フェッチフローを行う。アドレス０の命令をフェッチするために、フラッシュＲＯＭアクセスが行われ、サイクル２でフラッシュＲＯＭ６からデータを得る。命令フェッチフローは、ＣＰＵ２からの命令アドレス（ＦＡＤＲ）が更新されるたびに開始される。
【００５０】
アドレス０は、新規ライン境界のため、フラッシュＲＯＭ６からデータを得られた時点で、プリフェッチフローが開始される。サイクル３で命令ラインデータ（ＩＮＳＴ＿ＢＵＦ）と図では省略したが命令ラインアドレス（ＩＮＳＴ＿ＡＤＲ）が更新される。プリフェッチフローでは、次命令ラインとＢＲ相対ロードラインが順番にプリフェッチされる。サイクル３では、プリフェッチアドレス生成器ＰＡＤＧでは、次命令ラインフラグＩＰＦ＿ＳＲＣＨが「１」のため、次命令ラインアドレス「１６」にてプリフェッチが行われる。サイクル４では、ＢＲ相対ロードラインが探索され、ＢＲレジスタ相対ロード命令のラインのデータ１、データ２としてＢＲ＿ＳＲＣＨに「２」が格納される。サイクル５、７で順番にＢＲレジスタ相対ロード命令のラインのプリフェッチが行われ、該当ラインのプリフェッチフローは終了する。ＣＰＵ２からはサイクル７（ＯＡＤＲ＝１００４）、１０（ＯＡＤＲ＝１０２４）でＢＲレジスタ相対ロード命令のロードが行われるが、プリフェッチしておいたデータキャッシュにヒットするため、フラッシュＲＯＭアクセスを行う必要がない。サイクル９でＣＰＵ２からの命令アドレスが次ライン（アドレス１６番地）となるが、プリフェッチしておいた命令キャッシュにヒットするため、フラッシュＲＯＭアクセスを行わない。
【００５１】
サイクル９は、命令アドレスが次ライン（ＦＡＤＲ＝１６）になるため、再度プリフェッチフローが開始される。サイクル１１で命令ラインのキャッシュプリフェッチ、サイクル１３でＢＲ相対ロードラインのキャッシュプリフェッチが行われる。サイクル１６でＢＲレジスタ相対ロード命令（ＯＡＤＲ＝２０１２）のロードが行われるが、プリフェッチしておいたデータキャッシュにヒットするため、フラッシュＲＯＭアクセスを行わない。
【００５２】
このように、次命令ライン、並びにＢＲ相対ロードにおいてＲＯＭキャッシュ５にプリフェッチがなされており、ＣＰＵ２から命令アクセス、データロードが行われる際、ＲＯＭキャッシュ５にヒットし、フラッシュＲＯＭ６に対するアクセスを行わないことからデータ処理の高速化が実現できる。
【００５３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５４】
例えば、命令キャッシュとデータキャッシュは別々のキャッシュメモリであってもよいし、一つのユニファイドキャッシュメモリであってもよい。また、キャッシュラインのサイズ、データバス幅、アドレスのビット数等は適宜変更可能である。メモリはフラッシュメモリに限定されず、その他の不揮発性メモリ等であってよい。データプロセッサの内部バスの構成、オンチップされた回路モジュールの種類等についても適宜変更可能である。
【図面の簡単な説明】
【００５５】
【図１】図１は本発明に係るデータプロセッサが備えるＲＯＭキャッシュの要部を例示するブロックダイヤグラムである。
【図２】図２は本発明に係るデータプロセッサを全体的に例示するブロックダイヤグラムである。
【図３】図３はＲＯＭキャッシュの命令キャッシュを例示するブロックダイヤグラムである。
【図４】図４はＲＯＭキャッシュのデータキャッシュを例示するブロックダイヤグラムである。
【図５】図５はＲＯＭキャッシュのプリフェッチアドレス生成器を例示するブロックダイヤグラムである。
【図６】図６はＲＯＭキャッシュのアドレスセレクタを例示するブロックダイヤグラムである。
【図７】図７は自動車の内燃機関制御向けプログラムのデータマップを例示する説明図である。
【図８】図８は自動車の内燃機関制御向けプログラムとしてテーブルアクセスをベースレジスタ相対のロード命令を用いて記述した例を示す説明図である。
【図９】図９は図８の自動車の内燃機関制御向けプログラムを実行したときのＲＯＭキャッシュの命令フェッチ及びプリフェッチの動作を示すフローチャートである。
【図１０】図１０は図８の自動車の内燃機関制御向けプログラムを図２のＲＯＭキャッシュを用いて実行したときのタイミングチャートである。
【符号の説明】
【００５６】
ＲＯＭＣ…ＲＯＭキャッシュ
ＢＲ…ベースレジスタ
Ｆ−ＢＵＳ…命令フェッチバス
Ｏ−ＢＵＳ…オペランドバス
ＲＯＭ…フラッシュＲＯＭ
ＲＡＭ…内蔵ＲＡＭ
ＳＹＳ−ＢＵＳ…システムバス
ＤＭＡＣ…ＤＭＡコントローラ
ＢＲＧ…バスブリッジ
Ｐ−ＢＵＳ…周辺バス
ＣＰＧ…クロックパルスジェネレータ
ＩＮＴＣ…割込みコントローラ
ＣＭＴ…コンペアマッチタイマ
ＳＣＩ…シリアルコミュニケーションインターフェース
ＡＤＣ…Ａ／Ｄコンバータ
ＦＢＩＦ…命令フェッチバスとのインタフェース
ＯＢＩＦ…オペランドバスとのインタフェース
ＳＢＩＦ…システムバスとのインタフェース
ＲＩＦ…ＲＯＭとのインタフェース
ＣＦＧＲ…構成レジスタ
ＰＡＤＧ…プリフェッチアドレス生成器
ＩＣ…命令キャッシュ
ＤＣ…データキャッシュ
ＡＤＲＳ…アドレスセレクタ
ＩＣ＿ＡＡＲＹ０〜３…命令キャッシュアドレスアレイ
ＩＣ＿ＤＡＲＹ０〜３…命令キャッシュデータアレイ
ＩＣ＿ＬＲＵ…命令キャッシュウェイ選択ＬＲＵ
ＩＣ＿ＡＦＦ…命令キャッシュアドレス保持フリップフロップ
ＩＣ＿ＤＦＦ…命令キャッシュデータ保持フリップフロップ
ＤＣ＿ＡＡＲＹ０〜３…データキャッシュアドレスアレイ
ＤＣ＿ＤＡＲＹ０〜３…データキャッシュデータアレイ
ＤＣ＿ＬＲＵ…データキャッシュウェイ選択ＬＲＵ
ＢＵＦＤＥＣ…バッファデコーダ
ＤＥＣ＿ＣＴＬ…デクリメント制御
ＩＰＦＡＤＲＧ…次命令ラインアドレス生成器
ＢＲＳＲＣＨ…ＢＲ相対ロードサーチ回路
ＢＲＦＩＦＯ…ＢＲ相対ロードアドレスＦＩＦＯ
ＰＲＩ…優先度判定回路
ＩＢＵＦ＿ＳＲＣＨ…次命令ラインのフラグ
ＢＲ＿ＳＲＣＨ…ＢＲ相対ロード命令のライン数
【図１】
0005237671.tif 000002
【図２】
0005237671.tif 000003
【図３】
0005237671.tif 000004
【図４】
0005237671.tif 000005
【図５】
0005237671.tif 000006
【図６】
0005237671.tif 000007
【図７】
0005237671.tif 000008
【図８】
0005237671.tif 000009
【図９】
0005237671.tif 000010
【図１０】
0005237671.tif 000011