(57)【要約】【課題】メモリ制御において、データのエラー補正機能を備えることにより高信頼性を確保し、かつ、エラー補正がない構成と同等の性能を発揮させる。【解決手段】記憶制御装置であり、記憶部へ情報を書き込む書き込み部と、上記記憶部から情報を読み出す読み出し部と、上記読み出し部の読み出し動作と並行して上記情報の誤り検出を実行する誤り検出部と、誤りが検出された情報の誤り訂正を実行する誤り訂正部と、外部装置との情報の授受を制御し、上記誤りが検出されたときに、外部装置への情報の出力を停止する制御部と、を備える。【選択図】　図１
2004030527.tif 000002
【特許請求の範囲】
【請求項１】
記憶部へ情報を書き込む書き込み部と、
前記記憶部から情報を読み出す読み出し部と、
前記読み出し部の読み出し動作と並行して前記情報の誤り検出を実行する誤り検出部と、
誤りが検出された情報の誤り訂正を実行する誤り訂正部と、
外部装置との情報の授受を制御し、前記誤りが検出されたときに、外部装置への情報の出力を停止する制御部と、を備える記憶制御装置。
【請求項２】
誤りが訂正された情報のビットパターンを反転する反転部をさらに備え、
前記書き込み部は、前記誤りが検出されたときにビットパターンを反転させた情報を記憶部に書き込む請求項１に記載の記憶制御装置。
【請求項３】
前記記憶部は、書き込みまたは読み出しの単位となる単位記憶情報内に外部装置と情報を授受する単位である外部単位情報を複数記憶しており、
前記読み出し部は、前記記憶部から単位記憶情報を読み出し、
前記誤り検出部は、単位記憶情報に含まれる複数の外部単位情報に対して誤りを検出し、
前記制御部は、誤りが検出されなかった外部単位情報を外部装置へ出力する請求項１に記載の記憶制御装置。
【請求項４】
前記誤り訂正部は、前記誤りが検出された外部単位情報に対して誤りを訂正し、
前記書き込み部は、誤りが訂正された外部単位情報を含む単位記憶情報を前記記憶部に書き込み、
前記制御部は、前記訂正された外部単位情報を外部装置へ出力する請求項３に記載の記憶制御装置。
【請求項５】
制御装置が、
記憶部へ情報を書き込む書き込みステップと、
前記記憶部から情報を読み出す読み出しステップと、
前記読み出しステップと並行して前記情報の誤り検出を実行する誤り検出ステップと、
誤りが検出された情報の誤り訂正を実行する誤り訂正ステップと、
外部装置との情報の授受を制御し、前記誤りが検出されたときに、外部装置への情報の出力を停止する制御ステップと、を備える記憶制御方法。
【請求項６】
誤りが訂正された情報のビットパターンを反転するステップをさらに備え、
前記書き込みステップでは、前記誤りが検出されたときにビットパターンを反転させた情報が記憶部に書き込まれる請求項５に記載の記憶制御方法。
【請求項７】
前記記憶部は、書き込みまたは読み出しの単位となる単位記憶情報内に外部装置と情報を授受する単位である外部単位情報を複数記憶しており、
前記読み出しステップでは、前記記憶部から単位記憶情報が読み出され、
前記誤り検出ステップでは、単位記憶情報に含まれる複数の外部単位情報に対して誤り検出が実行され、
前記制御ステップでは、誤りが検出されなかった外部単位情報が外部装置へ出力される請求項５に記載の記憶制御方法。
【請求項８】
前記誤り訂正ステップでは、前記誤りが検出された外部単位情報の誤りが訂正され、
前記書き込みステップでは、誤りが訂正された外部単位情報を含む単位記憶情報が前記記憶部に書き込まれ、
前記制御ステップでは、前記訂正された外部単位情報が外部装置へ出力される請求項７に記載の記憶制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリへのアクセス制御に関するものである。
【０００２】
【従来の技術】
従来、メモリ上のデータの保護は、例えば、パリティチェックにより行われていた。しかし、パリティチェックでは、エラーの検出は可能であるが、誤りを訂正することができなかった。そこで、エラーが検出されたデータは、メモリ上で無効化され、新たにデータのソースからエラーのないデータが読み込まれていた。この方法では、エラー訂正処理によりアクセス時間が大きく低下した。また、エラーを検出した場合に、データを無効化してエラーを報告するという制御が必要であり、論理が複雑となっていた。
【０００３】
一方、メモリ上のエラー訂正機構として、例えば、ＥＣＣ（Ｅｒｒｏｒ　Ｃｈｅｃｋ　Ｃｏｄｅ）を利用した誤り訂正回路が知られている。このような誤り訂正回路によれば、データを無効し、新たにデータを読み出すという手間は不要である。しかし、誤り訂正回路による場合も、メモリから読み出されたデータに対して、まず、誤り検出および誤り訂正を実行し、データの誤りを除去した後、そのデータに対する本来の処理が実行されていた。
【０００４】
【発明が解決しようとする課題】
以上のように、メモリ上のデータ保護技術は多数提案されている。しかし、このようなデータ保護技術を利用することにより、メモリへのアクセス時間が遅延する。この遅延は、高速アクセスが必要なキャッシュメモリにおいては、特に深刻な問題であった。
【０００５】
本発明はこのような従来の技術の問題点に鑑みてなされたものである。すなわち、本発明の課題は、データのエラー補正機能を備えることにより高信頼性を確保し、かつ、エラー補正がない構成と同等の性能を発揮するメモリ制御技術を提供することにある。
【０００６】
【課題を解決するための手段】
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、記憶制御装置であり、
記憶部へ情報を書き込む書き込み部と、
上記記憶部から情報を読み出す読み出し部と、
上記読み出し部の読み出し動作と並行して上記情報の誤り検出を実行する誤り検出部と、
誤りが検出された情報の誤り訂正を実行する誤り訂正部と、
外部装置との情報の授受を制御し、上記誤りが検出されたときに、外部装置への情報の出力を停止する制御部と、を備えるものである。
【０００７】
ここで、外部装置とは、上記記憶部に格納された情報を参照する装置であり、上記制御部を介して記憶部にアクセスする。このように、本記憶制御装置は、上記読み出し部の読み出し動作と並行して上記情報の誤り検出を実行するので、誤り検出による記憶部へのアクセス速度の劣化を低減できる。
【０００８】
好ましくは、上記記憶制御装置は、誤りが訂正された情報のビットパターンを反転する反転部をさらに備え、
上記書き込み部は、上記誤りが検出されたときにビットパターンを反転させた情報を記憶部に書き込むものでもよい。
【０００９】
誤り訂正された情報のビットパターンを反転することにより、記憶部において、特定のビットが１または０のいずれかに固定されるような障害がある場合にも、その障害を回避できる。
【００１０】
好ましくは、上記記憶部は、書き込みまたは読み出しの単位となる単位記憶情報内に外部装置と情報を授受する単位である外部単位情報を複数記憶しており、
上記読み出し部は、上記記憶部から単位記憶情報を読み出し、
上記誤り検出部は、単位記憶情報に含まれる複数の外部単位情報に対して誤りを検出し、
上記制御部は、誤りが検出されなかった外部単位情報を外部装置へ出力するようにしてもよい。
【００１１】
好ましくは、上記誤り訂正部は、上記誤りが検出された外部単位情報に対して誤りを訂正し、
上記書き込み部は、誤りが訂正された外部単位情報を含む単位記憶情報を上記記憶部に書き込み、
上記制御部は、上記訂正された外部単位情報を外部装置へ出力するようにしてもよい。
【００１２】
このように、本記憶制御装置では、記憶部が書き込みまたは読み出しの単位となる単位記憶情報内に、複数の外部単位情報を記憶する。このため、１回の記憶部へのアクセスにより、複数の外部単位情報が読み出され、そのうちの１つの外部単位情報が外部装置に出力される。このような構成により、外部に出力されなかった外部単位情報に対して、事前に誤り検出と誤り訂正を実行できる。この誤り検出と訂正は、他の外部単位情報を外部装置に出力する処理と並行して実行できる。したがって、アクセス時間の劣化を低減した上で、データの信頼性を向上できる。
【００１３】
また、本発明は、制御装置が、以上述べた処理を実行する方法であってもよい。ここで、制御装置には、例えば、電子回路、論理回路等が含まれる。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を図１から図５の図面に基づいて説明する。
【００１５】
図１は、本発明の一実施の形態に係るメモリ制御回路のハードウェアブロック図であり、図２は、図１に示したインバートフラグ制御部３の実施例であり、図３は、書き込み許可制御部９の実施例を示す図であり、図４は、タグＲＡＭ２のエントリに格納されるデータ構成例であり、図５は、タグＲＡＭ２の読み出し手順を示すタイムチャートである。
【００１６】
＜ハードウェア構成＞
図１に、本発明の一実施の形態に係るメモリ制御回路のハードウェアブロック図を示す。このメモリ制御回路は、キャッシュメモリの構成要素となるタグＲＡＭ２と、タグＲＡＭ２へのデータ書き込み回路とタグＲＡＭ２からのデータ読み出し回路と、タグＲＡＭ２へのデータの書き込みおよび読み出しを制御するメイン制御部１とを有している。
【００１７】
タグＲＡＭ２は、キャッシュメモリの一部を構成するメモリであり、タグを格納する。タグは、キャッシュメモリの各ライン（ラインをブロックともいう）ごとにメインメモリのどの部分のデータが格納されているかを示す情報である。タグＲＡＭ２の各エントリがキャッシュメモリの各ラインに対応する。
【００１８】
本実施形態では、セットアソシアティブ方式のキャッシュメモリを例にメモリ制御回路を説明する。セットアソシアティブ方式では、キャッシュメモリは、複数のセットと、セット内の複数のラインから構成される。セットアソシアティブ方式とは、キャッシュメモリと対応するメインメモリとのマッピングの方式をいう。セットアソシアティブ方式では、メインメモリからセットへのマッピングは、固定的に決定される。また、セット内のラインへのマッピングは、固定されておらず自在となっている。本実施形態のキャッシュメモリでは、下位記憶装置１１のデータがセット内のどのラインにマッピングされているかをタグＲＡＭ２のエントリに保持する。
【００１９】
タグＲＡＭ２のエントリは、メイン制御部１が保持するインデックスアドレスに基づいて参照される。本実施形態においては、インデックスアドレスは、キャッシュされる下位記憶装置１１におけるアドレスのうち１３ビット（ビット１８〜６）から構成される。
【００２０】
本キャッシュメモリでは、このインデックスアドレス対して、タグＲＡＭ２の４つのエントリが並列してアクセスされる。このような４つのエントリをウェイと呼ぶ。
【００２１】
このタグＲＡＭ２のエントリには、キャッシュされる下位記憶装置１１におけるアドレスの上位ビット（これをタグといい、本実施形態では、例えば、３２ビットアドレスの上位１３ビットである）が格納される。本実施形態では、タグＲＡＭ２の１つのエントリは、２つのラインから構成される。そして、各々のラインには、１ビットだけ値の異なる２つのインデックスアドレスに対応する２つのタグが格納される。
【００２２】
なお、タグＲＡＭ２を参照するためのインデックスアドレスは１９ビットに限定されるものではない。いずれにしても、インデックスアドレスを除く下位記憶装置１１のアドレスの上位ビットをタグとしてタグＲＡＭ２のエントリに格納すればよい。
【００２３】
タグＲＡＭ２へのデータ書き込み回路は、エラー補正部６、チェックビット生成部７、およびインバートフラグ制御部３と、書き込み許可制御部９とを有している。上述のように本実施形態では、タグＲＡＭ２の４つのウェイに並列に書き込むため、データ書き込み回路は４系統設けられている。しかし、図１では、表現を簡略化するため、タグＲＡＭ２へのデータ書き込み回路は１系統だけ示されている。
【００２４】
エラー訂正部６は、タグＲＡＭ２に格納されたデータにビット誤りがあった場合に、誤り訂正を実行する。誤り訂正としては、例えば、ＥＣＣを用いればよい。チェックビット生成部７は、データにＥＣＣのチェックビットを付加する。
【００２５】
インバートフラグ制御部３は、データのインバート処理を実行し、インバートされたデータにインバートフラグを設定する。インバート処理とは、元のデータのビットパターンを反転する処理である。
【００２６】
例えば、１６進数で、０ｘＦ０（インバートフラグ０）というデータにインバート処理を実行すると、０ｘ０Ｆ（インバートフラグ１）というデータに変更される。したがって、インバートフラグを確認することで、真の値を復元することができる。
【００２７】
今、例えば、メモリ上の特定のアドレスにおける特定のビット位置が破壊され、０以外の値を取り得ないような場合を想定する。そのような場合、そのビット位置が０になるようにインバート処理を施してデータを格納することにより、そのような破壊されたビット位置を含むメモリ上のアドレスを使用できる。
【００２８】
また、上記とは逆に、破壊されたビット位置が、１以外の値を取り得ないような場合も、同様に、インバート処理により、障害を回避できる。ただし、タグＲＡＭ２の１エントリが２ビット以上破壊された場合には、この方法でビットエラーを回避することはできない。
【００２９】
図２に、インバートフラグ制御部３の構成例を示す。この例では、インバート処理は、排他論理和（ＥｘｃｌｕｓｉｖｅＯＲ）ゲートの組み合わせにより実現される。図２では、入力データの各ビットとインバートフラグとが排他論理和ゲートに入力され、その出力が処理後のデータとなる。
【００３０】
この結果、インバートフラグが１のとき、入力データで０のビットは１となり、入力データで１のビットは０となる。これにより、入力データのビットパターンが反転される。一方、インバートフラグが０のとき、入力データがそのまま処理後のデータとして出力される。
【００３１】
書き込み許可制御部９は、タグＲＡＭ２への書き込み許可条件を判定し、書き込み許可信号（いわゆるライトイネーブル信号）を発生する。図３に、書き込み許可制御部９の実施例を示す。図３のように、書き込み許可信号は、タグＲＡＭ２から読み出したエントリデータにおいてエラー（ビット誤り）が検出され、そのデータが上位記憶装置１０（外部装置に相当）から参照されたデータであり（そのデータを処理で使用する場合）、かつ、データのエラー以外の要因でそのデータに対する処理がキャンセルされることがないならば書き込み許可信号がアサート（例えば、１で書き込み許可が出力）される。
【００３２】
また、エラーデータが上位記憶装置１０から参照されたデータでない場合（そのデータが処理で使用されない場合）、無条件で書き込み許可信号がアサートされる。
【００３３】
上位記憶装置１０から参照されたデータ（処理で使用されるデータ）とは、タグＲＡＭ２の１つのエントリに格納され、読み出された２つのラインのうち、実際に上位記憶装置１０（例えば、ＣＰＵ等）で参照されたデータをいう。
【００３４】
データのエラー以外の要因で処理がキャンセルされる場合とは、例えば、同一のラインに１サイクルごとに続けて２つのアクセスがあり、最初のアクセスでキャッシュミスが判明した場合である。このような場合、そのラインへの後のアクセスはキャンセルされる。キャッシュミスの判明により、改めて下位記憶装置１１からデータが参照され、キャッシュに格納される。このような場合、本メモリ制御回路は、後のアクセスをキャンセルし、データの整合性を保つ。
【００３５】
エラーデータが処理で使用されるデータであって、データのエラー以外の要因で処理がキャンセルされない場合には、本実施形態のメモリ制御回路は、誤り訂正したデータの書き込みを許可する。また、エラーデータが処理で使用されないデータの場合、本実施形態のメモリ制御回路は、無条件で誤り訂正したデータの書き込みを許可する。ただし、いずれにしても、１つのエントリに格納されている２つのラインのうち、誤りのなかった他方のラインはそのまま上書きされる。
【００３６】
タグＲＡＭ２からのデータ読み出し回路は、インバートフラグ制御部３の出力に対して並列に接続されるＥＣＣチェック部４およびアドレスマッチ部５と、ＥＣＣチェック部４の出力側に接続されるエラー訂正部６とを有している。本実施形態では、タグＲＡＭ２の４つのウェイから並列に読み出すため、データ読み出し回路は４系統設けられている。しかし、図１では、表現を簡略化するためタグＲＡＭ２からのデータ読み出し回路は、１系統だけ示されている。
【００３７】
ＥＣＣチェック部４は、タグＲＡＭ２から読み出されたデータにビット誤りがないか否かをチェックする。ビット誤りの有無は、エラー報告（Ｓ１０）として書き込み制御部９に、また、エラー検出時の処理キャンセル指示（Ｓ１１）としてメイン制御部１に伝達される。エラー訂正部６は、ＥＣＣチェック部４でエラーが検出されたデータのビット誤りを訂正する。
【００３８】
アドレスマッチ部５は、メモリ制御部１から入力されるタグと、タグＲＡＭ２の４つのウェイから読み出された４つのタグを比較し、タグが一致したか否か、すなわち、参照されたデータがヒットしたか否かを判定する。このアドレスマッチ部５の処理は、ＥＣＣチェック部４の処理と並行して、かつ、４つのウェイを並列にして実行される。そして、ヒットしたか否かの信号（キャッシュヒット／ミスヒット（Ｓ５））が各ウェイごとにメイン制御部１に出力される。
【００３９】
メイン制御部１は、上位記憶装置１０から参照命令を受け、タグＲＡＭ２およびタグＲＡＭ２に対応する不図示のデータＲＡＭのラインのデータを参照する。そして、メイン制御部１は、ヒットしたデータを上位記憶装置１０に出力する。上位記憶装置１０は、例えば、コンピュータのＣＰＵである。
【００４０】
また、メイン制御部１は、キャッシュがヒットしなかった場合、下位記憶装置１１を参照し、必要なデータをタグＲＡＭ２およびタグＲＡＭ２に対応する不図示のデータＲＡＭのラインに格納する。下位記憶装置１１は、例えば、コンピュータのメインメモリである。メイン制御部１は、このような信号を入出力する論理回路から構成される。
【００４１】
＜タグＲＡＭ２のデータ構成＞
図４に、タグＲＡＭ２のエントリに格納されるデータ構成例を示す。上述のように、本実施形態では、キャッシュメモリは、セットアソシアティブ方式であり、複数のセットから構成される。また、各セットは、並列にアクセス可能な４つのウェイから構成される。また、各ウェイには、タグと格納するタグＲＡＭ２と、そのタグに対応するデータを格納するデータＲＡＭのライン（ラインをブロックともいい、下位記憶装置１１とデータを授受する単位である）が含まれる。
【００４２】
また、上述のように、本実施形態では、タグＲＡＭ２の１つのエントリに２つのタグが格納される。例えば、ウェイ０にはライン０と１、ウェイ１にはライン２と３、ウェイ２にはライン４と５、ウェイ３にはライン６と７が各々格納される。したがって、ウェイ０〜３により、実質的に２つのセットが構成される。ここで、ライン０、２、４、６からなるセットをセットＡと呼ぶ。また、ライン１、３、５、７からなるセットをセットＢと呼ぶ。
【００４３】
図４では、１つのウェイ（ウェイ０）に含まれるタグＲＡＭ２のエントリの詳細な構成が示されている。ここでは、タグＲＡＭ２に着目し、データを格納するデータＲＡＭの構成は省略されている。
【００４４】
本実施形態では、タグＲＡＭ２のエントリは、ＬＲＵ（の一部）フィールド２０、ライン０、インバートフラグフィールド２１、ライン１、およびチェックビットフィールド２２の各フィールドから構成される。
【００４５】
ＬＲＵフィールド２０には、ＬＲＵビットの一部（３ビット分）が格納される。また、ウェイ０のＬＲＵフィールド２０と、ウェイ１のＬＲＵフィールドとにより、セットＡ全体のＬＲＵビット（６ビット）が構成される。さらに、また、ウェイ２のＬＲＵフィールドと、ウェイ３のＬＲＵフィールドとにより、セットＢ全体のＬＲＵビット（６ビット）が構成される。
【００４６】
ＬＲＵビットは、１つのセットを構成する４つのウェイから次にデータを追い出す（新たにデータを格納する）ウェイを選択するためのビットである。ＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）方式によるアルゴリズムは、例えば、キャッシュメモリの管理方法、仮想記憶方式の主記憶の管理方法として広く知られている。このアルゴリズムでは、４つのウェイのうち、最も前にアクセスされたものが最初に追い出されるようにウェイが選択される。
【００４７】
ＬＲＵフィールド２０には、そのようなウェイの選択順位を示すビット列が格納される。４つのウェイの選択順位を示す情報は、４つの中から２つを選択する組み合わせの数４Ｃ２＝６ビット必要であることが知られている。４つのウェイ相互間の新旧の関係を順序付ける情報があればよいからである。
【００４８】
本実施形態では、セットＡにおける４つのウェイの選択順位を示す情報６ビットのうち、３ビットをウェイ０に格納する。また、残り３ビットをウェイ１に格納する。
【００４９】
ライン０のフィールドには、キャッシュメモリのタグであるアドレス、キャッシュされたデータの論理アドレスおよびラインの状態を格納する。本実施形態で、タグは、下位記憶装置１１におけるアドレスの上位１３ビットである。また、論理アドレスとは、上記記憶装置１０においてキャッシュされたデータに付与するアドレスである。このアドレスおよび論理アドレスは、参照命令のパラメータとして上位記憶装置１０から引き渡される。
【００５０】
ただし、本発明の実施において、論理アドレスは、必須の構成要素ではない。すなわち、上位記憶装置１０において論理アドレスが使用されず、直接アドレスでデータにアクセスするようにしてもよい。
【００５１】
ラインの状態とは、当該ラインのデータが有効か否かの情報、当該ラインのデータと下位記憶装置１１のデータが一致しているか否かの情報等である。当該ラインのデータが有効でない場合は、例えば、各々キャッシュメモリを有する複数のプロセッサが下位記憶装置１１のデータを共有するマルチプロセッサシステムにおいて生じ得る。例えば、あるプロセッサのキャッシュのデータが、対応する他のプロセッサのキャッシュにおいて書き替えられ、その結果が下位記憶装置１１に反映された結果、当該プロセッサのキャッシュのデータが無効になる場合である。
【００５２】
当該ラインのデータと下位記憶装置１１のデータが一致しているか否かの情報は、いわゆる、ライトバック方式（ストアバック方式、ストアイン方式、スワップ方式ともいう）におけるダーティビットとして知られている。ただし、本発明の実施は、ライトバック方式に限定されず、ライトスルー方式においても実施可能である。その場合には、ダーティビットは必ずしも必要ではない。
【００５３】
インバートフラグ２１は、エントリのビットパターンがインバートされたか否かを示すフラグである。なお、本実施形態では、インバートフラグ２１は、３ビット以上に多重化され、その値を多数決により判定することで信頼性を確保している。
【００５４】
本フラグが’１’のとき、タグＲＡＭ２のエントリが反転されていることを意味する。このフラグの初期値は、’０’であり、そのエントリでエラーが検出される度に値が反転される。
【００５５】
タグＲＡＭ２からの読み出し時、このフラグが’１’であれば、そのエントリは反転されているので、反転して元に戻してからＥＣＣによるエラーチェック、アドレスマッチが実行される。
【００５６】
上述のように、本実施形態において、タグＲＡＭ２の１つのエントリには、２つのラインのデータが格納される。図４において、ライン１は、そのような２つ目のラインのデータであり、その構成はライン０と同様である。
【００５７】
チェックビットフィールド２２には、当該エントリのビット誤りを検出し、訂正するためのチェックビットを格納する。このチェックビットにより、誤りが発生したビット位置が特定される。
【００５８】
＜作用＞
以下、図１の信号（矢印の肩にＳ１からＳ１３で表示）にしたがい、メモリ制御回路の動作を説明する。今、上位記憶装置１０からキャッシュメモリのデータを参照する参照命令が発行された場合を仮定する。
【００５９】
参照命令は、参照すべき下位記憶装置１１のアドレス（ビット３１〜０）および論理アドレスとともにメイン制御部１に入力される（Ｓ１）。メイン制御部１は、参照命令に含まれるアドレスからビット１８〜６を選択し、インデックスアドレスとしてタグＲＡＭ２に入力する（Ｓ２）。また、メイン制御部１は、参照命令に含まれるアドレスからビット３１〜１９を選択しアドレスマッチ部５へ入力する（Ｓ５）。
【００６０】
タグＲＡＭ２は、入力されたインデックスアドレスに対応するセットを選択し、４つのウェイを並列に動作させ、各ウェイのエントリのデータを読み出す（Ｓ２）。ただし、上述のように、読み出し回路は１系統だけ示されている。
【００６１】
次に、インバートフラグ処理部３は、インバートフラグにしたがい、インバート処理を実行する（ただし、インバートフラグがオフの場合、データはインバートされない）。インバートフラグ制御部３の出力信号の１つは、ＥＣＣチェック部４に入力され（Ｓ４）、他の１つは、アドレスマッチ部５に入力される（Ｓ３）。
【００６２】
アドレスマッチ部５は、４つのウェイから読み出されたデータ（タグ）について各々並列にアドレスマッチ処理を実行する。アドレスマッチ処理では、メイン制御部１から入力された下位記憶装置１１のアドレスのビット３１〜１９と、タグＲＡＭ２から読み出されたタグの内容を比較する。
【００６３】
そして、比較の結果、２つの入力（Ｓ３、Ｓ４）が一致したウェイについて、キャッシュヒットを示す信号（Ｓ５）がメイン制御部１に入力される。また、比較の結果、２つの入力（Ｓ３、Ｓ４）が一致しなかったウェイについて、ミスヒットを示す信号（Ｓ５）がメイン制御部１に入力される。メイン制御部１は、ヒットしたウェイに対応する不図示のデータＲＡＭのラインからデータを読み出し、上位記憶装置１０に引き渡す（Ｓ１３）。
【００６４】
一方、ＥＣＣチェック部４は、上記のアドレスマッチ部５の処理と並行して、かつ、各ウェイ並列にビット誤りの検出を実行する。すなわち、ＥＣＣチェック部４は、各ウェイから読み出されたデータを並列にビット誤りをチェックする。
【００６５】
そして、誤りが検出された場合、ＥＣＣチェック部４は、エラー報告を書き込み許可制御部９に送信する（Ｓ１０）。また、エラー検出時、ＥＣＣチェック部４は、処理キャンセルの指示をメイン制御部１に送信する（Ｓ１１）。これにより、メイン制御部１は、キャッシュヒットの信号（Ｓ５）に対応するデータＲＡＭのラインからのデータ読み出しを中止し、再読み出し処理を実行する。
【００６６】
また、誤りが検出されたウェイのデータはエラー訂正部６に入力され、エラーが訂正される。エラー訂正は、エラーが発生したビットに対して実行される。
【００６７】
そして、チェックビット生成部７により、チェックビットが付加される。さらに、そのチェックビットが付加されたデータは、インバートフラグとともに、インバートフラグ制御部３に入力される。
【００６８】
インバートフラグ制御部３は、エラーが訂正されたデータが入力される度に、インバート処理を実行し、処理したデータをタグＲＡＭ２に書き込む（Ｓ１２）。すなわち、本メモリ制御回路では、ビット誤りが検出されたデータでエラーが訂正されたものは、インバート処理がなされ、タグＲＡＭ２に書き込まれる。
【００６９】
このとき、エラー報告（Ｓ１０）に基づき、書き込み許可信号がアサートされている。書き込まれたデータは、再読み出し処理において、上述と同様の手順で読み出される。
【００７０】
アドレスマッチ部５において、すべてのウェイがヒットしなかった場合、メイン制御部１には、ミスヒットのみが送信される（Ｓ５）。この場合、メイン制御部１は、下位記憶装置１１を参照し（Ｓ６）、参照命令（Ｓ１）で参照されたデータを読み出す（Ｓ７）。
【００７１】
そして、タグＲＡＭ２のＬＲＵを参照し、追い出しの対象とすべきウェイを公知のアルゴリズムにしたがい決定する。そして、そのウェイに対して、タグデータ（下位記憶装置１１のアドレスのビット３１〜１９）、論理アドレス、および、ラインの状態（図４参照）を書き込む（Ｓ８）。
【００７２】
この場合、図４に示したように、１つのタグＲＡＭ２のエントリに、１ビット値の異なる２つのインデックスアドレスの内容が重複して格納されている。書き込みの対象となったライン（例えば、ウェイ０に含まれるライン０または１のいずれが）が更新され、書き込みの対象とならなかったラインのデータはそのまま再度タグＲＡＭ２に書き込まれる。また、書き込みの対象とならなかったウェイついては、ＬＲＵビットが更新され、再びタグＲＡＭ２に書き込まれる。この書き込みは、４ウェイ並列に実行される。
【００７３】
図５に、タグＲＡＭ２の読み出し手順をタイムチャートに示す。図５では、比較のため、従来手法による場合と本実施形態のメモリ制御回路による場合とが表示されている。
【００７４】
従来手法、例えば、パリティチェックによる場合には、タグＲＡＭ２からデータが読み出され（Ｔ１）、パリティチェックが実行され（Ｔ２）、エラーが検出された場合にキャンセル信号が送出される（Ｔ３）。そして、所定のマシンサイクルを経過した後（図５では、２サイクル）、エラー処理が起動され、システム（例えば、ＣＰＵ）にエラー処理が要求され（Ｔ４）、さらに、所定のマシンサイクル経過後、エラーのラインに対して無効化処理が実行される。この無効化処理に基づき、当該ラインのデータが下位記憶装置１１等から読み出される。
【００７５】
一方、本実施形態のメモリ制御回路によれば、タグＲＡＭからデータが読み出され（ＸＰ１）、ＥＣＣチェックが実行され（ＸＰ２）、エラーが検出された場合にキャンセル信号が送出される（ＸＰ３）。このキャンセル信号は、ＥＣＣチェックと並列実行されていた通常処理（例えば、アドレスマッチ、または、その後のマッチしたタグに対応するデータＲＡＭのラインのデータ読み出し処理）をキャンセルさせる。
【００７６】
さらに、キャンセル信号送出後、エラー訂正（ＸＰ４）が実行され、書き込み許可信号がアサートされ（ＸＰ５）、訂正されたデータがタグＲＡＭ２に書き込まれる（ＸＰ６）。
【００７７】
以上述べたように、本実施形態のメモリ制御回路によれば、ＥＣＣによるデータのチェックと通常動作とを並列に行うことにより信頼性を高めつつキャッシュアクセス時間を短縮する。このため、このメモリ制御回路は、データにエラーがない場合には、ＥＣＣを持たないキャッシュメモリと同等の性能を発揮する。また、訂正可能なエラーを検出した場合、このメモリ制御回路は、下位記憶装置１１等から再度読み出すことなく、短時間でエラーの訂正を実行する。
【００７８】
また、本メモリ制御回路は、１つのキャッシュメモリのエントリに複数のラインを格納する。この構成により、現在参照中のデータのエラーチェックと並列して、参照中でないデータについてもエラーチェックおよびエラー訂正を実行することができ、信頼性を向上しつつアクセス時間の低下を防ぐことができる。
【００７９】
また、本メモリ制御回路は、エラーが発生したエントリに対してビット反転してデータを書き込む。このため、特定のビットが常に１になる、または、常に０になるようなメモリの故障があった場合も、１つのエントリに１ビットの故障であれば、このメモリ制御回路はそのような故障を回避できる。
【００８０】
＜変形例＞
上記実施形態では、タグＲＡＭ２へのデータの読み出しおよび書き込みを行うメモリ制御回路の例を示した。しかし、本発明の実施は、タグＲＡＭ２には限定されない。すなわち、例えば、通常のメインメモリ、ハードディスクのキャッシュ等において発明を適用してもよい。また、キャッシュメモリは、セットアソシアティブ方式には限定されない。
【００８１】
上記実施形態では、４ウェイのキャッシュメモリを例にして説明した。しかし、本発明をキャッシュメモリに適用する場合、ウェイの数が４ウェイに限定されるものではなく、２ウェイ以下でもよいし、８ウェイ以上でも構わない。
【００８２】
上記実施形態では、ビット誤りの検出と訂正にＥＣＣを利用する例を示した。しかし、本発明の実施はＥＣＣによるビット誤りの検出と訂正に限定されるものではない。
【００８３】
【発明の効果】
以上説明したように、本発明によれば、メモリの制御において、データのエラー補正機能を備えることにより高信頼性を確保し、かつ、エラー補正がない構成と同等の性能を発揮することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係るメモリ制御回路のハードウェアブロック図
【図２】インバートフラグ制御部３の実施例
【図３】書き込み許可制御部９の実施例を示す図
【図４】タグＲＡＭ２のエントリに格納されるデータ構成例
【図５】タグＲＡＭ２の読み出し手順を示すタイムチャート
【符号の説明】
１　メイン制御部
２　タグＲＡＭ
３　インバータフラグ制御部
４　ＥＣＣチェック部
５　アドレスマッチ部
６　エラー訂正部
７　チェックビット生成部
１０　上位記憶装置
１１　下位記憶装置
【図１】
2004030527.tif 000003
【図２】
2004030527.tif 000004
【図３】
2004030527.tif 000005
【図４】
2004030527.tif 000006
【図５】
2004030527.tif 000007