(57)【要約】【課題】キャッシュモードによる高速処理を可能としつつ、所定条件下でキャッシュモードを無効にして障害時のデータ喪失の影響を最小化することができるプロセッサキャッシュ制御装置の提供。【解決手段】本発明によるプロセッサキャッシュ制御装置は、キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたプロセス−キャッシュ無効テーブル２０３と、前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定し、該判定結果に基づいて、キャッシュモードの状態を有効状態と無効状態の間で変更するキャッシュモード変更手段（２０４，２０５，２０６）とを備えることを特徴とする。【選択図】図３
2009211416.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサキャッシュ制御装置であって、
キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルと、
前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定し、該判定結果に基づいて、キャッシュモードの状態を有効状態と無効状態の間で変更するキャッシュモード変更手段とを備えることを特徴とする、プロセッサキャッシュ制御装置。
【請求項２】
前記キャッシュモード変更手段は、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであると判定した場合には、キャッシュモードを無効状態に維持又は変更し、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドでないと判定した場合には、キャッシュモードを有効状態に維持又は変更する、請求項１に記載のプロセッサキャッシュ制御装置。
【請求項３】
プロセッサキャッシュ制御装置であって、
キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルと、
前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定し、該判定結果に基づいて、キャッシュモードの状態を有効状態と無効状態の間で変更するキャッシュモード変更手段とを備えることを特徴とする、プロセッサキャッシュ制御装置。
【請求項４】
前記キャッシュモード変更手段は、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであると判定した場合には、キャッシュモードを無効状態に維持又は変更し、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルでないと判定した場合には、キャッシュモードを有効状態に維持又は変更する、請求項３に記載のプロセッサキャッシュ制御装置。
【請求項５】
請求項１〜４のうちのいずれか１項に記載のプロセッサキャッシュ制御装置と、
前記プロセッサキャッシュ制御装置によりキャッシュモードが制御されるプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュとを備える、プロセッサ。
【請求項６】
キャッシュモードの無効状態及び有効状態のいずれかを表す情報が格納されるレジスタと、
前記レジスタに格納される情報に従った状態のキャッシュモードで動作するプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュと、
キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルと、
前記プロセッサコアにプロセスないしスレッドをディスパッチする際に、前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定し、該判定結果に基づいて、前記レジスタ内の情報を変更するキャッシュモード変更手段とを備えることを特徴とする、プロセッサ。
【請求項７】
キャッシュモードの無効状態及び有効状態のいずれかを表す情報が格納されるレジスタと、
前記レジスタに格納される情報に従った状態のキャッシュモードで動作するプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュと、
キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルと、
前記プロセッサコアがデータないしファイルを操作する際に、前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定し、該判定結果に基づいて、前記レジスタ内の情報を変更するキャッシュモード変更手段とを備えることを特徴とする、プロセッサ。
【請求項８】
前記プロセッサコアは複数のプロセッサコアからなる、請求項５〜７のうちのいずれか１項に記載のプロセッサ。
【請求項９】
請求項５〜８のうちのいずれか１項に記載のプロセッサと、
前記プロセッサに接続され、キャッシュモードが無効状態のときに前記プロセッサコアによりアクセスされる下位記憶階層とを備えることを特徴とする、コンピューター。
【請求項１０】
前記プロセッサは、障害が発生した場合に該障害の復旧後に前記下位記憶階層内のデータに基づいてデータ復元処理を行うデータ復元手段を更に備える、請求項９に記載のコンピューター。
【請求項１１】
キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルを用いたプロセッサキャッシュ制御方法であって、
プロセッサコアにプロセスないしスレッドをディスパッチする際に、前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定する判定ステップと、
前記判定ステップでの判定処理の結果、肯定判定の場合には、キャッシュモードを無効状態に維持又は変更し、否定判定の場合には、キャッシュモードを有効状態に維持又は変更するステップとを備えることを特徴とする、プロセッサキャッシュ制御方法。
【請求項１２】
キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルを用いたプロセッサキャッシュ制御方法であって、
プロセッサコアがデータないしファイルを操作する際に、前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定する判定ステップと、
前記判定ステップでの判定処理の結果、肯定判定の場合には、キャッシュモードを無効状態に維持又は変更し、否定判定の場合には、キャッシュモードを有効状態に維持又は変更するステップとを備えることを特徴とする、プロセッサキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定条件下でキャッシュモードを無効にするプロセッサキャッシュ制御装置、方法、プロセッサ及びコンピューターに関する。
【背景技術】
【０００２】
従来から、マルチプロセッサ装置のメモリモジュールにおいて、一つの書き込みアクセス又はキャッシュオフアクセスを行なう場合において、キャッシュラインがシェア状態にある場合には、キャッシュ無効化処理（パージ）を行うことが知られている（例えば、特許文献１参照）。
【特許文献１】特開平１０−５５３１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、プロセッサにおけるメモリウォール問題（コア性能向上とメモリアクセス性能の乖離）の対策として、プロセッサがキャッシュを具備する手法が旧来より用いられてきた（スカラプロセッサ）。また近年では、キャッシュを大容量化・高速化することで悪化の一途を辿るメモリウォールを隠蔽している。これにより、ＣＰＵ性能向上に伴うソフトスタック（アプリケーション等）の性能向上を担保してきた。これに伴い、キャッシュと下位記憶階層（メモリ、ストレージ等）上のデータ内容が異なる時間が長くなり、特に車載等の高信頼性が要求されるシステムでは、障害発生時（例えばプロセッサでの熱障害、電源瞬断障害等の発生時）のデータ喪失が大きな課題となりつつある。即ち、障害発生時には、プロセッサが自身のキャッシュの内容を下位記憶階層にパージ（データ反映）することが不可能となることにも起因して、キャッシュ上のデータが喪失して、重要データを喪失しうることが大きな課題となりつつある。
【０００４】
そこで、本発明は、キャッシュモードによる高速処理を可能としつつ、所定条件下でキャッシュモードを無効にして障害時のデータ喪失の影響を最小化することができるプロセッサキャッシュ制御装置、方法、プロセッサ及びコンピューターの提供を目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、第１の発明は、プロセッサキャッシュ制御装置であって、
キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルと、
前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定し、該判定結果に基づいて、キャッシュモードの状態を有効状態と無効状態の間で変更するキャッシュモード変更手段とを備えることを特徴とする。
【０００６】
第２の発明は、第１の発明に係るプロセッサキャッシュ制御装置において、
前記キャッシュモード変更手段は、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであると判定した場合には、キャッシュモードを無効状態に維持又は変更し、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドでないと判定した場合には、キャッシュモードを有効状態に維持又は変更することを特徴とする。
【０００７】
第３の発明は、プロセッサキャッシュ制御装置であって、
キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルと、
前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定し、該判定結果に基づいて、キャッシュモードの状態を有効状態と無効状態の間で変更するキャッシュモード変更手段とを備えることを特徴とする。
【０００８】
第４の発明は、第３の発明に係るプロセッサキャッシュ制御装置において、
前記キャッシュモード変更手段は、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであると判定した場合には、キャッシュモードを無効状態に維持又は変更し、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルでないと判定した場合には、キャッシュモードを有効状態に維持又は変更することを特徴とする。
【０００９】
第５の発明は、プロセッサに関し、当該プロセッサは、
第１〜４のうちのいずれかの発明に係るプロセッサキャッシュ制御装置と、
前記プロセッサキャッシュ制御装置によりキャッシュモードが制御されるプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュとを備えることを特徴とする。
【００１０】
第６の発明は、プロセッサに関し、当該プロセッサは、
キャッシュモードの無効状態及び有効状態のいずれかを表す情報が格納されるレジスタと、
前記レジスタに格納される情報に従った状態のキャッシュモードで動作するプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュと、
キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルと、
前記プロセッサコアにプロセスないしスレッドをディスパッチする際に、前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定し、該判定結果に基づいて、前記レジスタ内の情報を変更するキャッシュモード変更手段とを備えることを特徴とする。
【００１１】
第７の発明は、プロセッサに関し、当該プロセッサは、
キャッシュモードの無効状態及び有効状態のいずれかを表す情報が格納されるレジスタと、
前記レジスタに格納される情報に従った状態のキャッシュモードで動作するプロセッサコアと、
前記プロセッサコアに対して設けられるキャッシュと、
キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルと、
前記プロセッサコアがデータないしファイルを操作する際に、前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定し、該判定結果に基づいて、前記レジスタ内の情報を変更するキャッシュモード変更手段とを備えることを特徴とする。
【００１２】
第８の発明は、第５〜７のうちのいずれかの発明に係るプロセッサにおいて、
前記プロセッサコアは複数のプロセッサコアからなることを特徴とする。
【００１３】
第９の発明は、コンピューターに関し、該コンピューターは、
第５〜８のうちのいずれかの発明に係るプロセッサと、
前記プロセッサに接続され、キャッシュモードが無効状態のときに前記プロセッサコアによりアクセスされる下位記憶階層とを備えることを特徴とする。
【００１４】
第１０の発明は、第９の発明に係るコンピューターにおいて、
前記プロセッサは、障害が発生した場合に該障害の復旧後に前記下位記憶階層内のデータに基づいてデータ復元処理を行うデータ復元手段を更に備えることを特徴とする。
【００１５】
第１１の発明は、キャッシュモードを無効にして実行されるべきプロセスないしスレッドを特定するための情報が記述されたテーブルを用いたプロセッサキャッシュ制御方法であって、
プロセッサコアにプロセスないしスレッドをディスパッチする際に、前記テーブルの情報に基づいて、ディスパッチ対象のプロセスないしスレッドが、キャッシュモードを無効にして実行されるべきプロセスないしスレッドであるか否かを判定する判定ステップと、
前記判定ステップでの判定処理の結果、肯定判定の場合には、キャッシュモードを無効状態に維持又は変更し、否定判定の場合には、キャッシュモードを有効状態に維持又は変更するステップとを備えることを特徴とする。
【００１６】
第１２の発明は、キャッシュモードを無効にして操作されるべきデータないしファイルを特定するための情報が記述されたテーブルを用いたプロセッサキャッシュ制御方法であって、
プロセッサコアがデータないしファイルを操作する際に、前記テーブルの情報に基づいて、操作対象のデータないしファイルが、キャッシュモードを無効にして操作されるべきデータないしファイルであるか否かを判定する判定ステップと、
前記判定ステップでの判定処理の結果、肯定判定の場合には、キャッシュモードを無効状態に維持又は変更し、否定判定の場合には、キャッシュモードを有効状態に維持又は変更するステップとを備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、キャッシュモードによる高速処理を可能としつつ、所定条件下でキャッシュモードを無効にして障害時のデータ喪失の影響を最小化することができるプロセッサキャッシュ制御装置、方法、プロセッサ及びコンピューターが得られる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１９】
図１は、本発明によるプロセッサキャッシュ制御装置、プロセッサ及びコンピューターの一実施例に関連する主要構成を示すブロック図である。本実施例のプロセッサキャッシュ制御装置、プロセッサ及びコンピューターは、特に、車両に搭載されるのが好適である。即ち、本実施例のプロセッサキャッシュ制御装置、プロセッサ及びコンピューターは、好ましくは、車載システムを構築するために用いられる。車載システムは、車両制御システムを含めて任意のシステムであってよいが、典型的には、マルチメディア系の車載システムである。
【００２０】
図１において、ラインＡ１よりも上側の構成は、ソフトウェア構成を示し、ラインＡ２は、ソフトウェア構成をシステムソフトウェア（ＯＳ等）とユーザソフトウェアに仕切るラインである。ラインＡ１よりも下側の構成は、コンピューター２のハードウェア構成を示し、ラインＡ３よりも上側はオンチップのハードウェア構成（即ちプロセッサ１のハードウェア構成）を示し、ラインＡ３よりも下側はオフチップのハードウェア構成を示す。
【００２１】
コンピューター２は、ハードウェア構成としては、図1に示すように、プロセッサ１と、下位記憶階層３とを備える。図1に示すプロセッサ１は、複数のプロセッサコア１００、・・・、１０ｎを備えるマルチコアプロセッサである。プロセッサ１は、複数のプロセッサコア１００、・・・、１０ｎで共有されるＬ２キャッシュを備える。プロセッサコア１０は、また、キャッシュコントロールレジスタ２０６と、Ｌ１キャッシュ（Ｌ１
Ｉｎｓｔ及びＬ１ Ｄａｔａ）とを備える。尚、以下では、キャッシュとは、Ｌ１キャッシュ及びＬ２キャッシュを含むキャッシュを意味する。下位記憶階層３は、ストレージ４及びメモリ５を備える。下位記憶階層３には、図１に示すソフトウェア（各種プログラムやデータテーブル等）が記憶される。下位記憶階層３には、また、プロセッサ１の各種処理に伴って生成される各種データが記憶される。下位記憶階層３は、後述の如くプロセッサ障害時の重要データを保持する機能を有し、従って、不揮発メモリから構成される。但し、揮発メモリであってもよく、この場合、データ保持可能なセルフリフレッシュモードに移行する。
【００２２】
プロセッサ１は、一般的なプロセッサが具備するように、キャッシュ有効／無効機能を具備する。即ち、プロセッサ１は、キャッシュコントロールレジスタ２０６に格納される情報に従って、キャッシュモードを無効又は有効にして動作する。キャッシュモードが無効された無効状態では、プロセッサ１は、キャッシュを用いずに（キャッシュをスルーして）下位記憶階層３を用いて各種処理を実行する。また、キャッシュモードが無効されていない有効状態では、プロセッサ１は、キャッシュを用いて各種処理を実行し、必要に応じて（例えばキャッシュがフローしたときだけ）、下位記憶階層３を用いて各種処理を実行する。尚、キャッシュモードが無効されていない有効状態では、キャッシュを用いた高速処理が可能となる。
【００２３】
システムソフトウェアは、図１に示すように、ＣＰＵディスパッチャ２０４と、ＣＰＵキャッシュコントローラ２０５と、プロセス−キャッシュ無効テーブル操作インターフェース２０２と、プロセス−キャッシュ無効テーブル２０３とを備える。また、ユーザソフトウェアは、プロセス−キャッシュ無効テーブル操作プログラム２０１と、データ復元プログラム３０１とを備える。
【００２４】
ＣＰＵキャッシュコントローラ２０５は、ＣＰＵキャッシュモードを変更するためのインターフェースである。ＣＰＵキャッシュモードの変更は、後述の図３のフローチャートで説明するが、例えばＯＳのプロセスディスパッチ機能（ＣＰＵディスパッチャ２０４）を拡張して実現する。
【００２５】
データ復元プログラム３０１は、障害発生時（例えばプロセッサ１での熱障害、電源瞬断障害等の発生時）に、障害前のメモリ内容（下位記憶階層３内のデータ）からデータを復元するプログラムであり、障害復帰後に実行される。データ復元プログラム３０１は、典型的には、メモリダンプの解析ツールである。尚、ファイルシステムをデータジャーナリングモードで運用する場合にはデータ復元プログラム３０１は不要である。また、ライトスルーモードでファイルハンドルする場合もデータ復元プログラム３０１は不要である。
【００２６】
図２は、プロセス−キャッシュ無効テーブル２０３の一例を示す図である。プロセス−キャッシュ無効テーブル２０３には、図２に示すように、プロセッサ１により実行されるアプリケーション（複数も可）を構成する多数のプロセスないしスレッドのうちの、キャッシュモードを無効にして実行されるべきプロセスないしスレッド（以下、代表して「プロセス」という）の識別子が定義される。プロセス−キャッシュ無効テーブル２０３に定義されるプロセス（以下、「キャッシュ無効化対象プロセス」ともいう）は、ユーザにより選択されるが、好ましくは、データを扱うプロセスであり、より好ましくは、重要データを扱うプロセスである。例えば、キャッシュ無効化対象プロセスは、顧客情報やダイアグ情報（故障／事故解析用データ等）を扱うプロセスや、データベース内のデータを扱うプロセスであってよい。顧客情報は、例えば車両のユーザの各種情報（携帯電話の番号や車両キーのＩＤ番号、キャッシュカード番号、認証用生体情報等）を含んでよい。プロセス−キャッシュ無効テーブル２０３に記述される内容（各プロセスの識別子）は、例えばプロセス−キャッシュ無効テーブル操作プログラム２０１及びプロセス−キャッシュ無効テーブル操作インターフェース２０２を介して定義される。典型的には、プロセス−キャッシュ無効テーブル２０３の内容は、設計時に、各プロセスがデータを扱うか否かや、データを扱う場合には扱うデータの重要性等を考慮してユーザ（典型的には、システムインテグレータ）により設定される。尚、プロセス−キャッシュ無効テーブル２０３の内容は、事後的に変更（修正）可能とされてもよい。
【００２７】
尚、上述の構成において、プロセッサキャッシュ制御装置は、以下で説明するように、主に、プロセス−キャッシュ無効テーブル２０３と、ＣＰＵディスパッチャ２０４と、ＣＰＵキャッシュコントローラ２０５と、キャッシュコントロールレジスタ２０６とにより実現される。
【００２８】
図３は、本実施例のプロセッサキャッシュ制御装置により実施される主要処理の一例を示すフローチャートである。図３に示すキャッシュモード変更処理は、ＣＰＵディスパッチャ２０４が、プロセス−キャッシュ無効テーブル２０３に基づいて、ＣＰＵキャッシュコントローラ２０５を介してキャッシュコントロールレジスタ２０６の情報を変更することにより実現される。
【００２９】
図３に示す処理は、ＣＰＵディスパッチ開始（プロセスディスパッチ）をトリガとして実行される。
【００３０】
ステップ４００では、プロセス−キャッシュ無効テーブル２０３から今回のディスパッチ対象プロセスが存在するかを探索する。即ち、今回のディスパッチ対象プロセスがプロセス−キャッシュ無効テーブル２０３においてキャッシュ無効化対象プロセスとして定義されているかを探索する。
【００３１】
ステップ４０２では、上記ステップ４００の探索の結果、今回のディスパッチ対象プロセスの識別子がプロセス−キャッシュ無効テーブル２０３内に存在するか否かを判定し、今回のディスパッチ対象プロセスの識別子がプロセス−キャッシュ無効テーブル２０３内に存在する場合には、ステップ４０４に進み、存在しない場合には、ステップ４０８に進む。
【００３２】
ステップ４０４では、現在のキャッシュコントロールレジスタ２０６の情報に基づいて、キャッシュ有効状態であるか否かを判定する。即ち、現在のキャッシュコントロールレジスタ２０６の情報がキャッシュ有効状態を表しているか否かが判定される。キャッシュ有効状態である場合には、ステップ４０６に進み、キャッシュ有効状態でない場合（即ちキャッシュ無効状態である場合）、ステップ４０６をスキップしてステップ４１２に進む。
【００３３】
ステップ４０６では、キャッシュコントロールレジスタ２０６を介してＣＰＵキャッシュモードを無効にする。即ち、キャッシュコントロールレジスタ２０６の情報を変更し、キャッシュ無効状態とする。ステップ４０６の処理が終了すると、ステップ４１２に進む。
【００３４】
ステップ４０８では、現在のキャッシュコントロールレジスタ２０６の情報に基づいて、キャッシュ無効状態であるか否かを判定する。即ち、現在のキャッシュコントロールレジスタ２０６の情報がキャッシュ無効状態を表しているか否かが判定される。キャッシュ無効状態である場合には、ステップ４１０に進み、キャッシュ無効状態でない場合（即ちキャッシュ有効状態である場合）、ステップ４１０をスキップしてステップ４１２に進む。
【００３５】
ステップ４１０では、キャッシュコントロールレジスタ２０６を介してＣＰＵキャッシュモードを有効にする。即ち、キャッシュコントロールレジスタ２０６の情報を変更し、キャッシュ有効状態とする。ステップ４１０の処理が終了すると、ステップ４１２に進む。
【００３６】
ステップ４１２では、今回のディスパッチ対象プロセスをＣＰＵ（プロセッサ１）にディスパッチして、キャッシュモード変更処理が終了する。従って、今回のディスパッチ対象プロセスは、現在のキャッシュモードの状態（有効状態又は無効状態）に従って処理されることになる。例えば、ステップ４０４を経由した場合には、プロセッサ１は、キャッシュモードを無効にした状態で今回のディスパッチ対象プロセスを実行する。他方、ステップ４０８を経由した場合には、プロセッサ１は、キャッシュモードを有効にした状態で今回のディスパッチ対象プロセスを実行する。
【００３７】
以上説明した本実施例によれば、とりわけ、以下のような優れた効果が奏される。
【００３８】
本実施例によれば、上述の如く、ＣＰＵディスパッチャ２０４がプロセッサ１にＣＰＵリソースを割り当てる際に、プロセス−キャッシュ無効テーブル２０３を参照し、キャッシュを無効状態にして動作させるか否かを判定し、該判定結果に応じてキャッシュモードを変更してプロセスを走行させる。これにより、例えばアプリケーションが重要データを操作している間は、キャッシュモードが無効にされるので、この間、仮に障害（例えばプロセッサ１での熱障害、電源瞬断障害等）が発生しても、下位記憶階層３に操作中の重要データが保持される。従って、障害発生時にアプリケーションが操作中のデータを喪失することを防止することができる。尚、例えばアプリケーションがデータを扱っていない間は、キャッシュモードが有効に維持されるので、高速処理が確保される。
【００３９】
また、本実施例によれば、上述の如く、障害に伴う復旧処理は、プロセッサ１の再起動時に下位記憶階層３に保存されているデータ（キャッシュをスルーしているためにデータは全てメモリ５以下の記憶階層に存在する）をデータ復元プロセス３０１により復元・保存（ストレージ４に保存）する。従って、本実施例によれば、障害発生時にも障害復帰後に重要データを復元することができる。
【００４０】
このように本実施例によれば、システムおける高信頼性・高可用性の向上効果が得られる。かかる効果は、高信頼性・高可用性が要求される車載システムにおいて特に有用となる。
【００４１】
次に、その他の実施例について説明する。以下の説明では、上述の実施例に対して変更される主要な部分のみを説明し、他の構成は同様であってよく、適宜同一の用語（参照符号を含む）を用いて説明する。
【００４２】
図４は、本発明によるプロセッサキャッシュ制御装置、プロセッサ及びコンピューターのその他の実施例に関連する主要構成を示すブロック図である。
【００４３】
以下説明するその他の実施例は、上述の実施例が、プロセスディスパッチをトリガとしてＣＰＵキャッシュモードを変更するのに対して、データ（又はファイル）の操作をトリガとしてＣＰＵキャッシュモードを変更する点が主に異なる。この観点から、以下説明するその他の実施例では、プロセス−キャッシュ無効テーブル２０３に代えて、データ−キャッシュ無効テーブル５０３が設定され、それに対応して、データ−キャッシュ無効テーブル操作プログラム５０１やデータ−キャッシュ無効テーブル操作インターフェース５０２が設定される。また、ＣＰＵディスパッチャ２０４に代えて、ＣＰＵアクセス制御部５０４が設定される。尚、以下説明するその他の実施例は、上述の実施例とは切り離して実現されてもよいが、上述の実施例と並存することも可能である。
【００４４】
図５は、データ−キャッシュ無効テーブル５０３の一例を示す図である。データ−キャッシュ無効テーブル５０３には、図５に示すように、プロセッサ１が実行するアプリケーションが操作するデータないしファイルのうち、キャッシュモードを無効にして操作（編集、消去、付加、更新等）されるべきデータないしファイル（以下、代表して「データ」という）の識別子が定義される。データ−キャッシュ無効テーブル５０３に定義されるデータ（以下、「キャッシュ無効化対象データ」ともいう）は、ユーザにより選択されるが、好ましくは、データベース内のデータや、その他、喪失しては困る重要データである。例えば、キャッシュ無効化対象データは、顧客情報やダイアグ情報（故障／事故解析用データ等）であってよい。顧客情報は、例えば車両のユーザの各種情報（携帯電話の番号や車両キーのＩＤ番号、キャッシュカード番号、生体情報等）を含んでよい。データ−キャッシュ無効テーブル５０３に記述される内容（各データの識別子）は、例えば検出器−キャッシュ無効テーブルプログラム５０１及びデータ−キャッシュ無効テーブル操作インターフェース５０２を介して定義される。典型的には、データ−キャッシュ無効テーブル５０３の内容は、設計時に、データの重要性等を考慮してユーザ（典型的には、システムインテグレータ）により設定される。尚、データ−キャッシュ無効テーブル５０３の内容は、事後的に変更（修正）可能とされてもよい。
【００４５】
尚、上述のその他の実施例の構成においては、プロセッサキャッシュ制御装置は、以下で説明するように、主に、データ−キャッシュ無効テーブル５０３と、ＣＰＵアクセス制御部５０４と、ＣＰＵキャッシュコントローラ２０５と、キャッシュコントロールレジスタ２０６とにより実現される。
【００４６】
図６は、上記その他の実施例のプロセッサキャッシュ制御装置により実施される主要処理の一例を示すフローチャートである。図６に示すキャッシュモード変更処理は、ＣＰＵアクセス制御部５０４が、データ−キャッシュ無効テーブル５０３に基づいて、ＣＰＵキャッシュコントローラ２０５を介してキャッシュコントロールレジスタ２０６の情報を変更することにより実現される。
【００４７】
図６に示す処理は、プロセッサ１が実行するアプリケーションがデータを操作しようとすること（下位記憶階層３内のデータに対してアクセス要求を行うとき）をトリガとして実行される。
【００４８】
ステップ６００では、データ−キャッシュ無効テーブル５０３から今回の操作対象データが存在するかを探索する。即ち、今回の操作対象データがデータ−キャッシュ無効テーブル５０３においてキャッシュ無効化対象データとして定義されているかを探索する。
【００４９】
ステップ６０２では、上記ステップ６００の探索の結果、今回の操作対象データの識別子がデータ−キャッシュ無効テーブル５０３内に存在するか否かを判定し、今回の操作対象データの識別子がデータ−キャッシュ無効テーブル５０３内に存在する場合には、ステップ６０４に進み、存在しない場合には、ステップ６０８に進む。
【００５０】
ステップ６０４では、現在のキャッシュコントロールレジスタ２０６の情報に基づいて、キャッシュ有効状態であるか否かを判定する。キャッシュ有効状態である場合には、ステップ６０６に進み、キャッシュ有効状態でない場合（即ちキャッシュ無効状態である場合）、ステップ６０６をスキップしてステップ６１２に進む。
【００５１】
ステップ６０６では、キャッシュコントロールレジスタ２０６を介してＣＰＵキャッシュモードを無効にする。ステップ６０６の処理が終了すると、ステップ６１２に進む。
【００５２】
ステップ６０８では、現在のキャッシュコントロールレジスタ２０６の情報に基づいて、キャッシュ無効状態であるか否かを判定する。キャッシュ無効状態である場合には、ステップ６１０に進み、キャッシュ無効状態でない場合（即ちキャッシュ有効状態である場合）、ステップ６１０をスキップしてステップ６１２に進む。
【００５３】
ステップ６１０では、キャッシュコントロールレジスタ２０６を介してＣＰＵキャッシュモードを有効にする。ステップ６１０の処理が終了すると、ステップ６１２に進む。
【００５４】
ステップ６１２では、今回の操作対象データに対するＣＰＵ（プロセッサ１）のアクセスを許可して（即ち今回の操作対象データの操作を許可して）、本処理が終了する。従って、今回の操作対象データは、現在のキャッシュモードの状態（有効状態又は無効状態）に従って操作されることになる。例えば、ステップ６０４を経由した場合には、プロセッサ１は、キャッシュモードを無効にした状態で今回の操作対象データを操作する。他方、ステップ６０８を経由した場合には、プロセッサ１は、キャッシュモードを有効にした状態で今回の操作対象データを操作する。
【００５５】
以上説明したその他の実施例によっても、上述の実施例と同様の効果が奏される。即ち、例えばアプリケーションが重要データを操作している間は、キャッシュモードが無効にされるので、この間、仮に障害（例えばプロセッサ１での熱障害、電源瞬断障害等）が発生しても、下位記憶階層３に操作中の重要データが保持される。従って、障害発生時にアプリケーションが操作中の重要データを喪失することを防止することができ、障害復帰後に、当該重要データを復元することができる。
【００５６】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００５７】
例えば、上述した実施例では、プロセス−キャッシュ無効テーブル２０３には、キャッシュモードを無効にして実行されるべきプロセス（キャッシュ無効化対象プロセス）の識別子が定義されているが、等価的に、キャッシュモードを有効にして実行されるべきプロセスの識別子が定義されていてもよい。要するに、プロセス−キャッシュ無効テーブル２０３には、キャッシュモードを無効にして実行されるべきプロセスを直接的又は間接的に一意に特定できる情報が定義されていればよい。これは、データ−キャッシュ無効テーブル５０３についても同様である。
【００５８】
また、上述した実施例では、２つ以上のプロセッサコア１００、・・・、１０ｎを備えるマルチコアプロセッサが例示されているが、唯一のプロセッサコア１０を備えるプロセッサに対しても適用可能である。
【図面の簡単な説明】
【００５９】
【図１】本発明によるプロセッサキャッシュ制御装置、プロセッサ及びコンピューターの一実施例に関連する主要構成を示すブロック図である。
【図２】プロセス−キャッシュ無効テーブル２０３の一例を示す図である。
【図３】本実施例のプロセッサキャッシュ制御装置により実施される主要処理の一例を示すフローチャートである。
【図４】その他の実施例に関連する主要構成を示すブロック図である。
【図５】その他の実施例におけるデータ−キャッシュ無効テーブル５０３の一例を示す図である。
【図６】その他の実施例のプロセッサキャッシュ制御装置により実施される主要処理の一例を示すフローチャートである。
【符号の説明】
【００６０】
１    プロセッサ
２    コンピューター
３    下位記憶階層
４    ストレージ
５    メモリ
１０    プロセッサコア
２０１    プロセス−キャッシュ無効テーブル操作プログラム
２０２    プロセス−キャッシュ無効テーブル操作インターフェース
２０３    プロセス−キャッシュ無効テーブル
２０４    ＣＰＵディスパッチャ
２０５    ＣＰＵキャッシュコントローラ
２０６    キャッシュコントロールレジスタ
３０１    データ復元プログラム
５０１    データ−キャッシュ無効テーブル操作プログラム
５０２    データ−キャッシュ無効テーブル操作インターフェース
５０３    データ−キャッシュ無効テーブル
５０４    ＣＰＵアクセス制御部
【図１】
2009211416.tif 000003
【図２】
2009211416.tif 000004
【図３】
2009211416.tif 000005
【図４】
2009211416.tif 000006
【図５】
2009211416.tif 000007
【図６】
2009211416.tif 000008