(57)【要約】【課題】キャッシュメモリに使用されるＳＲＡＭのワードラインの一部に欠陥がある場合やワードラインの一部が故障してしまった場合であっても、回路サイズを大幅に拡大することなく、システム性能の低下を防止することができるプロセッサシステムを提供すること。【解決手段】本発明にかかるプロセッサシステムは、キャッシュメモリ４内の各エントリ１０に対応して設けられるとともに、対応するエントリ１０が機能するか否かを示す複数の動作ビット１１を備え、キャッシュ制御部３は、プロセッサ２によってエントリ１０に格納されるメモリアドレスへのアクセスが行なわれた場合に、該アクセス対象のエントリ１０に対応する動作ビット１１が示す情報をもとにキャッシュメモリ４または外部メモリ６のいずれにアクセスするかを判断する。【選択図】図１
2011008491.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、キャッシュメモリのデータまたは外部メモリのデータの前記プロセッサへの出力処理を制御するキャッシュ制御手段とを備えたプロセッサシステムにおいて、
前記キャッシュメモリ内の各キャッシュエントリに対応して設けられるとともに、対応する前記キャッシュエントリが機能するか否かを示す複数の記憶素子を備え、
前記キャッシュ制御手段は、前記プロセッサによって前記キャッシュエントリに格納されるメモリアドレスへのアクセスが行なわれた場合に、該アクセス対象のキャッシュエントリに対応する前記記憶素子が示す情報をもとに前記キャッシュメモリまたは前記外部メモリのいずれにアクセスするかを判断することを特徴とするプロセッサシステム。
【請求項２】
前記キャッシュ制御手段は、前記アクセス対象のキャッシュエントリに対応する記憶素子が有効を示す場合には前記キャッシュメモリにアクセスし、前記アクセス対象のキャッシュエントリに対応する記憶素子が無効を示す場合には前記外部メモリにアクセスすることを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記記憶素子は、前記キャッシュ制御手段内に設けられることを特徴とする請求項１または２に記載のプロセッサシステム。
【請求項４】
当該プロセッサシステムは、前記キャッシュメモリを備え、
前記記憶素子は、各キャッシュエントリに対応づけられた状態で前記キャッシュメモリ内に設けられることを特徴する請求項１または２に記載のプロセッサシステム。
【請求項５】
前記記憶素子は、所定数の前記キャッシュエントリに対して一の前記記憶素子が対応づけられていることを特徴とする請求項１〜４のいずれか一つに記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサと、キャッシュメモリのデータまたは外部メモリのデータをプロセッサに出力するキャッシュ制御手段とを備えたプロセッサシステムに関する。
【背景技術】
【０００２】
従来、動作速度の遅い外部メモリとプロセッサとの間に、高速アクセスが可能なキャッシュメモリを設け、外部メモリへのアクセス頻度を減らしてプロセッサの処理性能を高めている。
【０００３】
具体的には、キャッシュメモリ装置は、プロセッサがデータを必要としたとき、そのデータが格納されているアドレスが非キャッシュ領域であれば、外部メモリに対してデータ取得を行なう。また、キャッシュメモリ装置は、そのデータが格納されているアドレスがキャッシュ領域であれば、キャッシュメモリにアクセスする。そして、キャッシュメモリ装置は、データが格納されているアドレスがキャッシュ領域である場合には、キャッシュメモリに、このアドレスのデータが格納されているか否かを確認する。次いで、キャッシュメモリ装置は、このアドレスのデータが格納されているときにはプロセッサにキャッシュメモリからデータを出力し、格納されていないときにはキャッシュのリフィルを行ない、外部メモリからキャッシュメモリに、このアドレスのデータを格納するとともにプロセッサに必要なデータを出力する。
【０００４】
従来においては、このキャッシュメモリに使用されるＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の一部ワードラインに欠陥がある場合やワードラインの一部が故障してしまった場合には、キャッシュメモリ全体を無効にせざるを得なかった。しかしながら、このようにキャッシュメモリ全体を無効とした場合、システム性能が格段に落ちてしまうという問題があった。そこで、システム性能の低下を防止するため、ワードラインに故障があった場合にメモリワードを代用できるようにＳＲＡＭに故障耐性用の回路を設ける方法が提案されている（特許文献１参照）。しかしながら、この場合には、通常のＳＲＡＭよりも大きなＳＲＡＭを搭載する必要があり、回路サイズが大きくなってしまうという問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２５０６８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、キャッシュメモリに使用されるＳＲＡＭのワードラインの一部に欠陥がある場合やワードラインの一部が故障してしまった場合であっても、回路サイズを大幅に拡大することなく、システム性能の低下を防止することができるプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、プロセッサと、キャッシュメモリのデータまたは外部メモリのデータを前記プロセッサに出力するキャッシュ制御手段とを備えたプロセッサシステムにおいて、前記キャッシュメモリ内の各キャッシュエントリに対応して設けられるとともに、対応する前記キャッシュエントリが機能するか否かを示す複数の記憶素子を備え、前記キャッシュ制御手段は、前記キャッシュエントリに格納されるメモリアドレスへのデータアクセスが行なわれた場合に、前記記憶素子が示す情報をもとに前記キャッシュメモリまたは前記外部メモリのいずれにアクセスするかを判断することを特徴とするプロセッサシステムが提供される。
【発明の効果】
【０００８】
本発明によれば、対応するキャッシュエントリが機能するか否かを示す少数の記憶素子を追加するだけで、キャッシュ制御手段がキャッシュエントリごとにアクセス先を判断することが可能になるため、キャッシュメモリを構成するＳＲＡＭの一部が正しく機能していない場合であってもキャッシュメモリ全体を無効にする必要がなく、システム性能の低下を防止することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。
【図２】図２は、図１に示すプロセッサシステムがメモリアクセスを行なう場合の処理手順を示すフローチャートである。
【図３】図３は、従来のキャッシュ構造の説明図である。
【図４】図４は、第１の実施の形態におけるキャッシュ構造の説明図である。
【図５】図５は、第１の実施の形態にかかるプロセッサシステムの他の構成を示すブロック図である。
【図６】図６は、第２の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。
【図７】図７は、第２の実施の形態にかかるプロセッサシステムの他の構成を示すブロック図である。
【図８】図８は、第３の実施の形態におけるキャッシュ構造の説明図である。
【図９】図９は、第３の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。
【図１０】図１０は、第３の実施の形態にかかるプロセッサシステムの他の構成を示すブロック図である。
【図１１】図１１は、第３の実施の形態にかかるプロセッサシステムの他の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明の実施の形態にかかるプロセッサシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付している。
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。図１に示すように、本第１の実施の形態にかかるプロセッサシステムは、制御装置１と、プロセッサ２におけるデータや命令を格納するキャッシュメモリ４とを備える。制御装置１とキャッシュメモリ４とは、直接接続あるいは内部バスなどを介して接続されている。また、制御装置１と外部メモリ６とはバス５を介して接続される。なお、図１では、ダイレクトマップ形式のキャッシュ構造を例に説明する。
【００１２】
制御装置１は、プロセッサ２とキャッシュ制御部３とを備える。プロセッサ２は、データを取得または更新するときに、このデータに対応するアドレスをキャッシュ制御部３に入力し、後述するキャッシュメモリ４のエントリ１０に格納されるメモリアドレスへのアクセスを行なう。キャッシュ制御部３は、矢印Ｙ１のようにプロセッサ２からアドレスが入力されると、このアドレスに対応するキャッシュメモリ４内のデータまたは外部メモリ６内のデータのプロセッサ２への出力処理を制御する。
【００１３】
キャッシュメモリ４は、有効ビット１２、ダーティビット１３、タグアドレスを格納するタグメモリアレイ１４Ａおよびキャッシュ対象の各データを格納するデータメモリアレイ１５Ａを有する。キャッシュメモリ４はエントリ１０単位でデータを格納し、各エントリ１０は、有効ビット１２、ダーティビット１３、タグアドレス１４およびデータ１５によって構成される。有効ビット１２は、対応するエントリ１０のデータ１５が有効か否かを示す。ダーティビット１３は、対応するエントリ１０のデータ１５に書き込みが行なわれたか否かを示す。なお、命令キャッシュの場合にはキャッシュメモリ４の読み出ししか行なわれないため、ダーティビット１３は設けられない。そして、タグアドレス１４は、対応するエントリ１０のデータ１５における外部メモリ６上のアドレスを示す。エントリ１０にはそれぞれインデックス番号が付されており、図１に例示するように、キャッシュメモリ４が６４のエントリ１０を有する場合には、各エントリ１０に対して０〜６３の各インデックス番号がそれぞれ付されている。
【００１４】
また、キャッシュ制御部３内には、複数の動作ビット１１が設けられている。この動作ビット１１は、キャッシュメモリ４内の各エントリ１０にそれぞれ対応して設けられる。すなわち、キャッシュ制御部３には、キャッシュメモリ４内のエントリと同数の動作ビット１１が設けられている。たとえば図１に示す例では、６４のエントリ１０にそれぞれ対応させて、６４の動作ビット１１が設けられている。また、動作ビット１１には、キャッシュメモリ４内の各インデックス番号に対応させて０〜６３のインデックス番号が付されている。
【００１５】
そして、動作ビット１１は、対応するキャッシュメモリ４内のエントリ１０が機能するか否かを示す。対応するエントリ１０が正常に機能する場合には、このエントリ１０に対応する動作ビット１１は「有効」を示し、対応するエントリ１０が正常に機能しない場合には、このエントリ１０に対応する動作ビット１１は「無効」を示す。
【００１６】
キャッシュ制御部３は、プロセッサ２によってエントリ１０に格納されるメモリアドレスへのアクセスが行なわれた場合に、このアクセス対象のエントリ１０に対応する動作ビット１１が示す情報をもとにキャッシュメモリ４または外部メモリ６のいずれにアクセスするかを判断する。すなわち、キャッシュ制御部３は、プロセッサ２によってキャッシュメモリ４のエントリ１０に格納されるメモリアドレスへのアクセスが行なわれた場合に、このアクセス対象のエントリ１０に対応する動作ビット１１が「有効」を示す場合には、アクセス対象のエントリが正常に機能していることから、キャッシュメモリ４にアクセスする。これに対し、キャッシュ制御部３は、アクセス対象のエントリ１０に対応する動作ビット１１が「無効」を示す場合には、このアクセス対象のエントリが正常に機能しておらずキャッシュメモリ４内の該エントリにアクセスしてもデータを取得することができないため、キャッシュメモリ４にアクセスせず、外部メモリ６に直接アクセスする。したがって、動作ビット１１が「無効」を示すエントリ１０にはキャッシュ制御部３によるアクセス自体行なわれないため、このエントリ１０にはデータが格納されない。
【００１７】
また、この動作ビット１１は、プロセッサ２によるキャッシュアクセス前に、「有効」または「無効」のいずれかに予め設定されている。各動作ビット１１は初期状態では全て「有効」に設定されており、その後、製造上で異常が判明したエントリ１０や信頼性テストで異常が発見されたエントリ１０に対応する動作ビット１１が「有効」から「無効」に設定される。
【００１８】
つぎに、図１に加え、図２を参照して、プロセッサ２がメモリアクセスを行なう場合の処理手順について説明する。まず、図２に示すように、キャッシュ制御部３は、プロセッサ２からのメモリアクセスがあるか否かを判断する（ステップＳ２）。プロセッサ２は、図１の矢印Ｙ１に示すように、データを取得または更新する場合に、このデータに対応するアドレスをキャッシュ制御部３に入力する。キャッシュ制御部３は、この入力アドレスがあるまで、ステップＳ２の判断処理を繰り返し、この入力アドレスがあった場合には、プロセッサ２からのメモリアクセスがあったと判断する（ステップＳ２：Ｙｅｓ）。入力アドレスには、アクセス対象のデータが含まれるエントリのインデックス番号、タグアドレスおよびオフセットが含まれる。キャッシュ制御部３は、入力アドレスに含まれる情報のうちインデックス番号を参照して、このアクセス対象のデータのメモリアドレスがキャッシュ領域か否かを判断する（ステップＳ４）。
【００１９】
キャッシュ制御部３は、アクセス対象のデータのメモリアドレスがキャッシュ領域でないと判断した場合（ステップＳ４：Ｎｏ）、図１の矢印Ｙ１０に示すように、バス５を介して、外部メモリ６に直接アクセスする（ステップＳ６）。そして、キャッシュ制御部３は、図１の矢印Ｙ１１に示すように、外部メモリ６から入力アドレスに対応するデータを取得し、矢印Ｙ１２に示すように、プロセッサ２に出力する。
【００２０】
これに対し、キャッシュ制御部３は、アクセス対象のデータのメモリアドレスがキャッシュ領域であると判断した場合（ステップＳ４：Ｙｅｓ）、キャッシュメモリ４にアクセスする前に、アクセス対象のデータが含まれるエントリ１０に対応する動作ビット１１は「有効」を示すか否かを判断する（ステップＳ８）。具体的には、キャッシュ制御部３は、入力アドレスに含まれるインデックス番号に対応する動作ビット１１が「有効」を示しているか否かを判断する。
【００２１】
この動作ビット１１が「無効」を示す場合、アクセス対象のデータが含まれるエントリ１０が正常に機能しておらず、アクセス対象のデータをキャッシュメモリ４から取得することができない。このため、キャッシュ制御部３は、アクセス対象のデータが含まれるエントリ１０に対応する動作ビット１１は「有効」を示していないと判断した場合には（ステップＳ８：Ｎｏ）、キャッシュメモリ４ではなく、外部メモリ６に直接アクセスして（ステップＳ６）、外部メモリからアクセス対象のデータを出力し、プロセッサ２に出力する。したがって、キャッシュ制御部３は、アクセス対象のデータが含まれるエントリ１０に対応する動作ビット１１が「無効」を示す場合には、キャッシュメモリ４自体にアクセスしない。
【００２２】
一方、キャッシュ制御部３は、アクセス対象のデータが含まれるエントリ１０に対応する動作ビット１１は「有効」を示していると判断した場合（ステップＳ８：Ｙｅｓ）、アクセス対象のデータが含まれるエントリ１０が正常に機能しておりアクセス対象のデータをキャッシュメモリ４から取得することができるため、図１の矢印Ｙ２に示すように、キャッシュメモリ４にアクセスする（ステップＳ１０）。そして、キャッシュ制御部３は、図１の矢印Ｙ３、矢印Ｙ４に示すように、キャッシュメモリ４から、入力アドレスのインデックス番号に対応するエントリ１０の有効ビット情報、タグアドレス情報を取得する。キャッシュメモリ４から取得した有効ビットが「有効」を示し、さらにキャッシュメモリ４から取得したタグアドレスが入力アドレス内のタグアドレスと一致する場合にはキャッシュヒットとなる。この場合、キャッシュ制御部３は、キャッシュメモリ４に対して、キャッシュメモリ４内の入力アドレスに対応するエントリ１０のデータ１５を図１の矢印Ｙ５に示すようにプロセッサ２に出力させる。なお、キャッシュ制御部３自身が、キャッシュメモリ４内の入力アドレスに対応するエントリ１０のデータ１５を取得した後にプロセッサ２に出力してもよい。また、キャッシュメモリ４から取得した有効ビットが「無効」を示す場合、または、キャッシュメモリ４から取得したタグアドレスが入力アドレス内のタグアドレスと一致しない場合にはキャッシュミスとなり、キャッシュ制御部３は、リフィルを行なった後に必要なデータをプロセッサ２に出力する。
【００２３】
ここで、図３を参照して、従来のキャッシュ構造について説明する。図３に示すように、従来のキャッシュ構造は、有効ビット１１２、ダーティビット１１３、タグメモリアレイ１１４Ａおよびデータメモリアレイ１１５Ａを有し、有効ビット１１２、ダーティビット１１３、タグアドレス１１４およびデータ１１５によって構成されるエントリ１０単位でデータを格納していた。このような構成を有する従来のキャッシュ構造においては、たとえばエントリ１１０ｆに対応するＳＲＡＭのワードラインの一部が故障してしまった場合、具体的にはデータメモリやタグメモリを構成するワードラインが故障している場合には、キャッシュメモリ全体を無効にせざるを得ず、システム性能が格段に落ちてしまうという問題があった。そして、このシステム性能の低下を防止するため、ワードライン故障時にメモリワードを代用できるようＳＲＡＭに故障耐性用の回路を設ける方法が提案されているものの、通常のＳＲＡＭよりよりも回路サイズが大きくなってしまうという問題があった。
【００２４】
これに対し、本第１の実施の形態においては、図１および図４に示すように、各エントリ１０に対応させた複数の動作ビット１１を設け、エントリ１０ｆに対応するワードラインの一部が故障してしまった場合であっても、図４の矢印Ｙ２３に示すように、このエントリ１０ｆに対応する動作ビット１１を「有効（図４においては「１」の場合である。）」から「無効（図４においては「０」の場合である。）」にして、図４の矢印Ｙ２４のように故障部分にアクセスしないようにしている。言い換えると、本第１の実施の形態においては、データメモリやタグメモリを構成するＳＲＡＭのワードラインの一部が故障している場合には、この故障部分に対応するエントリ１０の動作ビット１１を「無効」にすることによって、キャッシュメモリ４自体にアクセスしないようにしている。したがって、本第１の実施の形態では、動作ビット１１を「無効」にすることによって、キャッシュメモリ４内のタグアドレスと入力アドレスのタグアドレスとの比較自体行なわない。そして、動作ビット１１を「無効」にした場合には、キャッシュ制御部３は、外部メモリ６に直接アクセスしてデータを取得するため、キャッシュメモリ４へのアクセス処理自体を省くことができる。また、正常に機能するエントリ１０ａについては、図４の矢印Ｙ２１に示すようにエントリ１０ａに対応する動作ビット１１を「有効」とすることによって、図４の矢印Ｙ２２に示すように通常どおりアクセス可能としている。
【００２５】
すなわち、本第１の実施の形態においては、故障部分に対応するエントリ１０の動作ビット１１を「無効」とすることによって、故障部分にアクセス自体行なわないようにしている。そして、正常に機能する部分については、通常どおり動作が可能である。このため、本第１の実施の形態では、ＳＲＡＭのワードラインの一部が故障してしまった場合やワードラインの一部に欠陥がある場合であっても、キャッシュメモリ全体を無効にする必要がない。言い換えると、本第１の実施の形態では、ＳＲＡＭのワードラインの一部が故障してしまった場合やワードラインの一部に欠陥がある場合であっても、この故障による影響がキャッシュメモリ４全体に影響が及ぶわけではない。したがって、本第１の実施の形態においては、キャッシュメモリ４の一部が機能しないもののキャッシュメモリ４全体としては故障前と変わらず動作可能であることから、部品の取替えなどせずともキャッシュメモリ４としての機能を確実に維持することが可能である。また、本第１の実施の形態においては、故障部分以外のエントリは通常通り動作するため、キャッシュメモリ全体を無効とする従来と比較してシステム性能の劣化度合いは非常に小さく、システム性能の低下を十分に防止することができる。さらに、キャッシュメモリを使用するプロセッサでは、性能にある程度のマージンを持たせてソフトウェアを設計することが多いため、故障部分に対応するエントリ１０にアクセスしないようにして一部エントリを動作させない場合であっても、このマージンで故障部分に対応する動作処理を補填することができることから、必要なシステム性能を十分に維持することができる。
【００２６】
また、本第１の実施の形態は、動作ビット１１として、たとえばエントリ１０の個数分のフリップフロックをシステム制御部３に対応する制御回路に接続するだけで実現可能である。したがって、本第１の実施の形態は、少数の動作ビット１１を通常のプロセッサシステムに追加実装するという簡易な方法で実現することができるとともに、追加実装する少数の動作ビット１１もサイズが小さいもので足りるため、回路サイズを大幅に拡大することはない。
【００２７】
なお、本第１の実施の形態として、図１に示すダイレクトマップ形式のキャッシュ構造を例に説明したが、もちろん、図５に例示するセットアソシアティブ形式のキャッシュ構造に対しても適用可能である。図５では、有効ビット１２ａ，１２ｂ、ダーティビット１３ａ，１３ｂ、各タグアドレス１４ａ，１４ｂを有するタグメモリアレイ１４Ａａ，１４Ａｂ、各データ１５ａ，１５ｂを有するデータメモリアレイ１５Ａａ，１５Ａｂを備えたキャッシュメモリ４ａを有する２ウェイセットアソシアティブ形式のキャッシュ構造を例示する。図５に示すように、制御装置１ａは、有効ビット１２ａ，１２ｂ、ダーティビット１３ａ，１３ｂ、タグアドレス１４ａ，１４ｂおよびデータ１５ａ，１５ｂによって構成される各エントリ１０Ａにそれぞれ対応する動作ビット１１が設けられたキャッシュ制御部３ａを備える。
【００２８】
キャッシュ制御部３ａは、プロセッサ２からのメモリアクセスがあった場合、アクセス対象のデータのメモリアドレスがキャッシュ領域にある場合には、このアクセス対象のデータが含まれるエントリ１０Ａに対応する動作ビット１１が「有効」を示すか否かを判断する。キャッシュメ制御部３ａは、この動作ビット１１が「有効」ではなく「無効」を示すと判断した場合には、キャッシュメモリ４ａにはアクセスせず、外部メモリ６にアクセスして、データを取得する。また、キャッシュメ制御部３ａは、この動作ビット１１が「有効」を示すと判断した場合には、矢印Ｙ２のように、キャッシュメモリ４ａにアクセスして、矢印Ｙ３３に示すように、アクセス対象のデータが含まれるエントリ１０Ａの有効ビット１２ａ，１２ｂが示す有効ビット情報を取得するとともに、矢印Ｙ３４に示すように、タグアドレス１４ａ，１４ｂが示すタグアドレス情報を取得する。そして、キャッシュ制御部３ａは、キャッシュヒットの場合には、矢印Ｙ３５のようにキャッシュメモリ４内の入力アドレスに対応するエントリ１０のデータ１５をプロセッサ２に出力し、キャッシュミスの場合には、リフィルを行なった後に必要なデータをプロセッサ２に出力する。この場合も、キャッシュメモリ４ａ全体を無効とする必要がないため、システム性能の低下を防止することが可能になる。
【００２９】
（第２の実施の形態）
つぎに、第２の実施の形態について説明する。第１の実施の形態では、キャッシュ制御部が動作ビットを有する場合を例に説明したが、本第２の実施の形態では、キャッシュメモリ内に動作ビットを設けた場合について説明する。
【００３０】
図６は、本発明の第２の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。図６では、ダイレクトマップ形式のキャッシュ構造を例に説明する。図６に示すように、制御装置２０１は、プロセッサ２と、キャッシュ制御部２０３を備え、キャッシュメモリ２０４は、各エントリ１０にそれぞれ対応づけられた状態で設けられた動作ビット１１を備える。
【００３１】
つぎに、プロセッサ２がメモリアクセスを行なう場合の処理手順について説明する。まず、キャッシュ制御部２０３は、図２のステップＳ２に示す処理手順と同様に、プロセッサ２からのメモリアクセスがあるか否かを判断し、図６の矢印Ｙ１に示すようにプロセッサ２からのメモリアクセスがあった場合、図２のステップＳ４に示す処理手順と同様に、このアクセス対象のデータのメモリアドレスがキャッシュ領域か否かを判断する。
【００３２】
そして、キャッシュ制御部２０３は、アクセス対象のデータのメモリアドレスがキャッシュ領域にあると判断した場合には、図６の矢印Ｙ２に示すようにキャッシュメモリ２０４にアクセスし、矢印Ｙ５１のように、このアクセス対象のデータが含まれるエントリ１０に対応する動作ビット１１が示す動作ビット情報を取得する。
【００３３】
キャッシュ制御部２０３は、この動作ビット情報をもとに、このエントリ１０に対応する動作ビット１１が「無効」を示していると判断した場合には、図６の矢印Ｙ１０のように外部メモリ６にアクセスしてデータを取得し、図６の矢印Ｙ１１，Ｙ１２に示すように取得したデータをプロセッサ２に出力する。
【００３４】
また、キャッシュメ制御部２０３は、この動作ビット１１が「有効」を示していると判断した場合には、矢印Ｙ３に示すように、アクセス対象のデータが含まれるエントリ１０の有効ビット情報を取得するとともに、矢印Ｙ４に示すように、このエントリ１０のタグアドレス情報を取得する。そして、キャッシュ制御部２０３は、キャッシュヒットの場合には、矢印Ｙ５のようにキャッシュメモリ４内の入力アドレスに対応するエントリ１０のデータ１５をプロセッサ２に出力し、キャッシュミスの場合には、リフィルを行なった後に必要なデータをプロセッサ２に出力する。
【００３５】
このように、動作ビット１１をキャッシュメモリ２０４内に設けた場合も、第１の実施の形態と同様に故障部分に対応するエントリ１０の動作ビット１１を「無効」とすることによって故障部分にアクセス自体行なわないようにすることができるため、キャッシュメモリ２０４全体を無効にする必要はなく、キャッシュメモリ２０４は故障前と変わらず動作可能である。また、本第２の実施の形態においても、サイズの小さな少数の動作ビット１１を通常のキャッシュメモリに追加実装するという簡易な方法で実現することができるため、第１の実施の形態１と同様に、回路サイズを大幅に拡大することなく、システム性能の低下を十分に防止することができるという効果を奏する。
【００３６】
さらに、本第２の実施の形態では、キャッシュ制御部２０３によるキャッシュメモリ２０４へのアクセス時に、動作ビット情報とともに有効ビット情報およびタグアドレス情報も併せて取得することによって、処理動作の高速化を図ることができる。
【００３７】
この場合、キャッシュ制御部２０３は、動作ビット１１および有効ビットがともに「有効」を示す場合には、タグアドレス情報を取得してキャッシュメモリ４内のタグアドレスと入力アドレスのタグアドレスとの比較を行なう。そして、キャッシュ制御部２０３は、キャッシュヒットの場合には、矢印Ｙ５のようにキャッシュメモリ４内の入力アドレスに対応するエントリ１０のデータ１５をプロセッサ２に出力し、キャッシュミスの場合には、リフィルを行なった後に必要なデータをプロセッサ２に出力する。また、キャッシュ制御部２０３は、動作ビット１１が「無効」を示し、有効ビットが「有効」を示す場合には、この動作ビット１１に対応するエントリは正常に機能していないことから、外部メモリ６に直接アクセスしてデータを取得する。同様に、キャッシュ制御部２０３は、動作ビット１１および有効ビットがともに「無効」を示す場合には、この動作ビット１１に対応するエントリは正常に機能していないことから、外部メモリ６に直接アクセスしてデータを取得する。また、キャッシュ制御部２０３は、動作ビット１１が「有効」を示し、有効ビットが「無効」を示す場合には、この動作ビット１１に対応するエントリ自体は正常に機能していることから、リフィルを行なった後に必要なデータをプロセッサ２に出力する。
【００３８】
また、本第２の実施の形態として、図６に示すダイレクトマップ形式のキャッシュ構造を例に説明したが、もちろん、図７に例示するセットアソシアティブ形式のキャッシュ構造に対しても適用可能である。図７に示すように、制御装置２０１ａは、プロセッサ２と、キャッシュ制御部２０３を備え、キャッシュメモリ２０４ａは、各エントリ１０Ａにそれぞれ対応づけられた状態で設けられた動作ビット１１を備える。この場合も、キャッシュ制御部２０３ａは、プロセッサ２からのメモリアクセスがあった場合であってアクセス対象のデータのメモリアドレスがキャッシュ領域にある場合には、キャッシュメモリ２０４ａにアクセスして、図７の矢印Ｙ５１のように、このアクセス対象のデータが含まれるエントリ１０Ａに対応する動作ビット１１の動作ビット情報を取得する。そして、キャッシュ制御部２０３ａは、このエントリ１０Ａに対応する動作ビット１１が「有効」を示すか否かを判断する。キャッシュメ制御部２０３ａは、この動作ビット１１が「無効」を示していると判断した場合には、キャッシュメモリ２０４ａにはアクセスせず、外部メモリ６にアクセスして、データを取得する。また、キャッシュ制御部２０３ａは、このエントリ１０Ａに対応する動作ビット１１が「有効」を示していると判断した場合には、矢印Ｙ３３に示すように、アクセス対象のデータが含まれるエントリ１０Ａの有効ビット１２ａ，１２ｂが示す有効ビット情報を取得するとともに、矢印Ｙ３４に示すように、タグアドレス１４ａ，１４ｂが示すタグアドレス情報を取得し、図５に示す場合と同様にキャッシュヒットまたはキャッシュミスに応じてデータの出力やリフィル処理を行なう。
【００３９】
（第３の実施の形態）
つぎに、第３の実施の形態について説明する。第１の実施の形態および第２の実施の形態では、一のエントリに対して一の動作ビットが対応づけられる場合について説明したが、本第３の実施の形態では、所定数のエントリに対して一の動作ビットが対応づけられる場合について説明する。
【００４０】
図８は、本第３の実施の形態のキャッシュ構成例を示す概略図である。第３の実施の形態では、図８に示すように、二つのエントリに対して一つの動作ビット３１１が対応づけられる。そして、動作ビット３１１は、対応する二つのエントリのいずれもが正常に機能する場合には「有効（図８においては「１」の場合である。）」を示し、対応する二つのエントリの少なくとも一つが正常に機能しない場合には「無効（図８においては「０」の場合である。）」を示す。
【００４１】
そして、キャッシュ制御部は、エントリ１０ａ，１０ｂについては、動作ビット３１１が「有効」を示すため、エントリ１０ａ，１０ｂのいずれも正常に機能していると判断し、矢印Ｙ６１に示すように、通常どおりキャッシュメモリ内のエントリ１０ａまたはエントリ１０ｂにアクセスする。これに対し、キャッシュ制御部は、エントリ１０ｅ，１０ｆについては、動作ビット３１１が「無効」を示すため、エントリ１０ｅ，１０ｆの少なくともいずれかが正常に機能していないと判断し、矢印Ｙ６２に示すように、エントリ１０ｅ，１０ｆにアクセスせず、外部メモリにアクセスする。
【００４２】
このように、所定数のエントリに対して一の動作ビット３１１を設けた場合も、故障部分に対応するエントリの動作ビット３１１を「無効」とすることによって故障部分にアクセス自体行なわないようにすることができるため、キャッシュメモリは故障前と変わらず動作可能である。また、本第３の実施の形態においては、一のエントリに対して一の動作ビット１１を設けた第１の実施の形態および第２の実施の形態と比較し、追加実装する動作ビット数をさらに少なくすることができるため、第１の実施の形態１および第２の実施の形態よりもさらに回路サイズを小さくすることができる。
【００４３】
なお、動作ビット３１１は、図９の制御装置３０１に示すようにキャッシュ制御部３０３に設けてもよい。また、動作ビット３１１は、図１０に示すように、制御装置４０１内におけるキャッシュ制御部４０３内ではなく、キャッシュメモリ４０４内に設けてもよい。
【００４４】
また、図９および図１０に示すダイレクトマップ形式のキャッシュ構造に限らず、図１１に例示するセットアソシアティブ形式のキャッシュ構造に対しても適用可能である。図１１では、制御装置３０１ａを構成するキャッシュ制御部３０３ａに動作ビット３１１を設けた場合を例示するが、もちろん、キャッシュメモリ４ａ内に動作ビット３１１を設けてもよい。
【００４５】
また、図８〜図１１においては、二つのエントリに対して一つの動作ビット３１１が対応づけられた場合について説明したが、もちろんこれに限らない。所定数のエントリに対して一の動作ビットを対応づければよいため、たとえば四つのエントリに対して一つの動作ビットを対応づけてもよい。
【００４６】
また、第１、第２、第３の実施の形態においては、キャッシュメモリが正しく動作しない場合にキャッシュメモリのいずれのエントリが異常であるかを検証することも可能である。具体的には、検証対象のエントリ１０，１０Ａに対応する動作ビット１１，３１１のみを、プロセッサ２の制御により「無効」として、実際にメモリアクセスを行なう。すなわち、検証対象のエントリ１０，１０Ａにアクセスしないようにして、メモリアクセスを行なう。そして、このメモリアクセスが正常に行なわれた場合には、このエントリ１０，１０Ａにアクセスしないことによって正常に機能しているものと判断できることから、この検証対象のエントリ１０，１０Ａが故障していると判断できる。この場合、プロセッサ２の制御により、この故障したエントリ１０，１０Ａに対応する動作ビット１１，３１１を「無効」に設定し、以降の処理動作では、故障したエントリ１０，１０Ａへのアクセス自体を回避することによって、キャッシュメモリの正常な処理動作を確保することができる。このように、第１、第２、第３実施の形態では、エントリごとに動作ビット１１，３１１を設け、エントリごとにアクセスするか否かを選択することができるため、異常個所の詳細な検証にも適用可能である。
【符号の説明】
【００４７】
１，１ａ，２０１，２０１ａ，３０１，３０１ａ，４０１  制御装置、２  プロセッサ、３，３ａ，２０３，２０３ａ，３０３，３０３ａ，４０３  キャッシュ制御部、４，４ａ，２０４，２０４ａ，４０４  キャッシュメモリ、５  バス、６  外部メモリ、１１，３１１  動作ビット、１２，１２ａ，１２ｂ  有効ビット、１３，１３ａ，１３ｂ  ダーティビット、１４，１４ａ，１４ｂ  タグアドレス、１５，１５ａ，１５ｂ  データ
【図１】
2011008491.tif 000003
【図２】
2011008491.tif 000004
【図３】
2011008491.tif 000005
【図４】
2011008491.tif 000006
【図５】
2011008491.tif 000007
【図６】
2011008491.tif 000008
【図７】
2011008491.tif 000009
【図８】
2011008491.tif 000010
【図９】
2011008491.tif 000011
【図１０】
2011008491.tif 000012
【図１１】
2011008491.tif 000013