(57)【要約】【課題】  頻繁な割り込み処理が行われるリアルタイム処理系においても、キャッシュのミスヒットを抑制し、応答速度の高速化を図ることを可能とするキャッシュメモリの使用方法を提供する。【解決手段】  プロセッサ１０で複数のタスクａ〜ｄを切り替えて実行する場合に、キャッシュメモリ１１をタスクに応じた複数のキャッシュ領域１１ａ〜１１ｄに区分けし、メインメモリ１２へのアクセスをそれぞれ対応するキャッシュ領域１１ａ〜１１ｄにキャッシュすることで、タスクａ〜ｄを途中で切り替える場合でもタスクごとのキャッシュ内容を保持して、キャッシュのミスヒットを抑制する。【選択図】  図２
2005071046.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイム処理系において、プロセッサとメインメモリの間に配置されるキャッシュメモリの使用方法であって、
前記キャッシュメモリをタスクごとに分割して割り当て、各タスクは割り当てられたキャッシュ領域を用いて前記プロセッサと前記メインメモリ間の入出力をキャッシュすることを特徴とするキャッシュメモリの使用方法。
【請求項２】
高速演算処理を必要とする高負荷のタスク、あるいは、高頻度で割り込みの発生する高優先度のタスクに大きなキャッシュ領域を割り当てることを特徴とする請求項１記載のキャッシュメモリの使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メインメモリとプロセッサとの間にキャッシュメモリを配したコンピュータにおけるキャッシュメモリの使用方法に関し、特に、リアルタイム処理形におけるキャッシュメモリの使用方法に関する。
【背景技術】
【０００２】
車載用等で用いられる装置組み込み型のマイクロコンピュータにおいても、演算負荷の増大に伴い、プロセッサの周波数アップ等による速度向上が図られている。プロセッサ・コアの速度向上に伴い、メモリとプロセッサとの速度差が大きくなっていることから、この差を埋める技術としてキャッシュメモリという技術が広く用いられている。
【０００３】
このキャッシュメモリは、大容量のメインメモリの動作周波数より高く、プロセッサの動作周波数に近い動作周波数を有する小容量のメモリをメインメモリとプロセッサとの間に配置して、メインメモリへアクセスしたデータ（好ましくはその近傍に格納されているデータを含む。）をキャッシュメモリに保持しておくことにより、キャッシュメモリ内に格納されているデータについては高速での再アクセスを可能とするものである。
【０００４】
このようなキャッシュメモリでは、プロセッサがアクセスしようとするデータがキャッシュメモリ内に保持されている（キャッシュがヒットする、と称する。）場合には、高速化が可能となるが、プロセッサからアクセスしようとするデータがキャッシュメモリ内に保持されていない（キャッシュがヒットしない、と称する。）場合には、メインメモリからデータを呼び出さねばならず、高速化が図れない。そして、プログラムの大規模化や処理内容の複雑化により、このようなキャッシュがヒットしない場合が多く生ずることになる。キャッシュメモリの大容量化を回避して、キャッシュのヒット率を向上させる技術としては特許文献１、特許文献２に記載された技術が知られている。
【０００５】
特許文献１の技術は、プログラム開発時にキャッシュ対象の優先順位をつけておき、タスク実行時に２次記憶装置から読み出したプログラムを優先順位にしたがって、キャッシュまたはメインメモリに割りつけるものである。また、特許文献２の技術は、リアルタイム処理系において、タスクのアイドル時に以後実行される可能性の高いタスクの例えば割り込みハンドラをキャッシュメモリに転送しておくことで、応答速度の高速化を図るものである。
【特許文献１】特開平５−７３４２０号公報（段落０００８〜００１５、図２）
【特許文献２】特開２００１−１５４８５９号公報（段落００１７〜００２２、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、車両のエンジン制御などでは、リアルタイム性が求められるため、頻繁な割り込み処理が行われる。このように頻繁に割り込み処理が行われるリアルタイム処理システムにおいては、割り込みによってコンテキスト切替が頻発するため、キャッシュ利用の前提となるメモリアクセスの時間的・位置的局所性が損なわれ、キャッシュのヒット率が低下するため、高速のプロセッサコアを利用した場合でも、その性能を十分に発揮することができない。
【０００７】
そこで本発明は、頻繁な割り込み処理が行われるリアルタイム処理系においても、キャッシュのミスヒットを抑制し、応答速度の高速化を図ることを可能とするキャッシュメモリの使用方法を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係るキャッシュメモリの使用方法は、リアルタイム処理系において、プロセッサとメインメモリの間に配置されるキャッシュメモリの使用方法であって、キャッシュメモリをタスクごとに分割して割り当て、各タスクは割り当てられたキャッシュ領域を用いてプロセッサとメインメモリ間の入出力をキャッシュすることを特徴とする。
【０００９】
キャッシュメモリをタスクごとに分割して割り当てることで、メインメモリから読み出されてキャッシュメモリに格納されたデータは、割り込み処理によりプロセッサで実行されるタスクが変更された場合でも、元のタスクに戻るまで保持され、他のタスクによって書き換えられることがない。
【００１０】
高速演算処理を必要とする高負荷のタスク、あるいは、高頻度で割り込みの発生する高優先度のタスクでは、それ以外のタスクに比べて時間当たりのメモリアクセスが増大することから、大きなキャッシュ領域を割り当てることが好ましい。
【発明の効果】
【００１１】
本発明に係るキャッシュメモリの使用方法によれば、コンテキスト切替が頻繁に発生した場合でも、タスク切り替え前のキャッシュ内容が割り当てられたキャッシュ領域内に保持されているため、キャッシュのヒット率が向上する。このため、メモリの応答速度を高速化することができる。
【００１２】
さらに、負荷や割り込み頻度に応じてタスクごとのキャッシュ領域の大きさを変更することで、システム全体での性能向上を図ることができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施の形態について詳細に説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の参照番号を附し、重複する説明は省略する。
【００１４】
図１は、本発明に係るキャッシュメモリの使用方法を実行する車載制御装置の構成を示すブロック図である。ここでは、エンジン制御装置を例に説明する。制御装置１は、演算処理を行うプロセッサ１０と、小容量のキャッシュメモリ１１と、大容量のメインメモリ１２および２次記憶装置である不揮発性メモリ１３を備えている。また、メインメモリ１２とキャッシュメモリ１１とのデータ転送を制御するキャッシュコントローラ１４を備える。ここで、プロセッサ１０の動作周波数をｆ１、キャッシュメモリ１１の動作周波数をｆ２、メインメモリ１２の動作周波数をｆ３とすると、ｆ１≧ｆ２＞ｆ３の関係が成立する。特に、制御装置１全体の基準周波数をｆｂとすると、ｆ１＝ｎ１×ｆｂ、ｆ２＝ｎ２×ｆｂ、ｆ３＝ｎ３×ｆｂであって、ｎ１、ｎ２、ｎ３は、ｎ１≧ｎ２＞ｎ３の関係にある整数であると好ましい。さらに、ｆ１はｆ２の倍数であって、ｆ２はｆ３の倍数であるとより好ましい。
【００１５】
プロセッサ１０とキャッシュメモリ１１間のデータ転送ライン１５は高速のデータ転送を可能とするが、一度に転送されるデータ量は少ない。一方、キャッシュメモリ１１とメインメモリ１２間のデータ転送ライン１６のデータ転送速度は低速であるが、データ転送ライン１５に比べて一度に多くのデータ量を転送できるバス幅を有している。
【００１６】
この制御装置１は、各種センサ３により測定したクランク回転数や、エンジン冷却水温、アクセル開度、吸気温、排気温といったデータを基にして、燃料噴射量やそのタイミング、給排気弁の開弁時期等を制御することでエンジン２の作動を制御する。
【００１７】
制御プログラムは複数のタスクからなる。タスクには、センサ３の測定結果を監視しているタスクのように、所定の時間ごとに繰り返し実行されるタスクのほか、エンジン始動時等に一度だけ実行されるタスク、所定の条件が満たされた場合に処理されるタスクがある。これらのタスクは１つのタスクの処理が終了してから他のタスクを実行するのではなく、時分割的に並行して実行されたり、あるタスクの実行中に、所定の条件によって他のタスクを実行する割り込み処理が実行される場合がある。
【００１８】
次に、図２を参照して本発明に係るキャッシュメモリの使用方法について具体的に説明する。図２はプロセッサ１０、キャッシュメモリ１１、メインメモリ１２間におけるメモリブロックとタスクの関係を説明する図である。
【００１９】
説明を簡略化するため、プロセッサ１０では、４つのタスク（タスクａ、タスクｂ、タスクｃ、タスクｄ）が実行される場合を例に説明する。キャッシュメモリ１１は、タスクａ〜ｄのそれぞれに対応する４つのキャッシュ領域１１ａ〜１１ｄに区分けされている。この区分は、ハード的に行われる必要はなく、ソフト的に行われる。各キャッシュ領域１１ａ〜１１ｄの大きさは、各タスクが必要とするデータ量のほか、タスクの優先度、処理負荷を勘案して設定される。例えば、優先度、処理負荷が同じなら扱うデータ量の多いタスクにより大きなキャッシュ領域が設定され、データ量、処理負荷が同じなら、優先度の高いタスクにより大きなキャッシュ領域が設定され、データ量、優先度が同じなら、処理負荷の大きなタスクにより大きなキャッシュ領域が設定される。
【００２０】
さらに、メインメモリ１２内も、キャッシュ領域１１ａ〜１１ｄと同様にタスクａ〜ｄごとに対応して領域設定されている。これにより、各キャッシュ領域１１ａ〜１１ｄと、メインメモリ１２の各領域が対応づけられる（メモリマッピング）。ここでは、メインメモリ１２の下位ビットが同一の領域（例えば１２ａ１、１２ａ２…１２ａｎ）に同じキャッシュ領域１１ａが割り当てられる１ウェイ−セットアソシアティブ方式によるマッピング方法を例示している。メインメモリ１２とキャッシュメモリ１１間におけるメモリマッピング方式は、この方式に限られるものではなく、フルアソシアティブ方式や２ウェイ、４ウェイ等の他のセットアソシアティブ方式を用いてもよい。
【００２１】
プロセッサ１０がタスクａを実行している場合に、例えば、メインメモリ領域１２ａ１内のデータにアクセスする場合を考える。すでにそのデータがキャッシュ領域１１ａ内に格納されている場合には、プロセッサ１０は、キャッシュ領域１１ａからデータを読み出すため、高速でデータを読み出すことができる。データがキャッシュ領域１１ａ内に格納されていない場合には、キャッシュコントローラ１４がメインメモリ１２ａ１からデータをキャッシュ領域１１ａへと転送し、これをプロセッサ１０に転送する。このとき、キャッシュコントローラ１４は、プロセッサ１０が要求するデータだけでなく、それと同一の所定範囲のメモリブロック内にあるデータを同時にキャッシュ領域１１ａへと転送する。コンピュータプログラムは、通常、空間的局所性を有するため、このようにブロック全体を転送しておくことで、次に参照される可能性の高いデータをキャッシュ領域１１ａに先読みさせておくことができる。書き込みの場合には、キャッシュ領域１１ａに書き込んでから、メインメモリ１２への転送完了を待たずに次の処理を行うことができるため、応答時間の高速化が図れる。このように、タスクａ実行中には、キャッシュ領域１１ａを介してメインメモリ１２ａ１、１２ａ２、…、１２ａｎ等へのアクセスが行われる。
【００２２】
タスクａの実行中に、割り込み処理によってプロセッサ１０がタスクｂにタスクを切り替えた場合、使用するキャッシュ領域が１１ｂに切り替えられる。この場合、プロセッサ１０は、キャッシュ領域１１ｂを介して、メインメモリ１２ｂ１、１２ｂ２、…、１２ｂｎにアクセスする。プロセッサ１０が、タスクｃ、タスクｄを実行する場合も同様である。
【００２３】
他のタスクｂ〜タスクｄを実行後、再びタスクａに戻った場合、タスクａ用のキャッシュ領域１１ａの内容は、前回タスクａを実行したときの内容が保持されている。したがって、割り込み処理が起こってもメモリアクセスの時間的・空間的局所性が損なわれることがなく、割り込み処理の前後でそれらが維持されるので、タスクａのみを継続して実行している場合と同様のキャッシュ効果が得られる。同様のことは他のタスクｂ〜ｄに対しても当てはまる。
【００２４】
このように、タスクのそれぞれに専用のキャッシュ領域を割り当てることで、キャッシュのヒット率が向上し、システム全体の処理性能が向上する。本発明によれば、従来、組み込み型のリアルタイム処理系との相性がよくないと言われていたキャッシュメモリを、その特性を十分に生かして採用することができる。
【００２５】
ここでは、車載用のエンジン制御用マイクロコンピュータに適応した場合を例示して説明したが、本発明に係るキャッシュメモリの使用方法は、車載用の制御用マイクロコンピュータに限定されるものではなく、その他の交通機関、制御機器のほか、家庭用・業務用の電化製品などにおける制御機器として、割り込み処理を多用するリアルタイム処理系を備えた組込型のマイクロコンピュータにおいて好適に使用される。
【産業上の利用可能性】
【００２６】
本発明に係るキャッシュメモリの使用方法は、車載式の制御用マイクロコンピュータのほか、割り込み処理を頻繁に行うリアルタイム処理系におけるキャッシュメモリの使用方法として好適である。
【図面の簡単な説明】
【００２７】
【図１】本発明に係るキャッシュメモリの使用方法を実行する車載制御装置の構成を示すブロック図である。
【図２】プロセッサ１０、キャッシュメモリ１１、メインメモリ１２間におけるメモリブロックとタスクの関係を説明する図である。
【符号の説明】
【００２８】
１…制御装置、２…エンジン、３…センサ、１０…プロセッサ、１１…キャッシュメモリ、１２…メインメモリ。
【図１】
2005071046.tif 000003
【図２】
2005071046.tif 000004