(57)【要約】【課題】よりソフトエラーの影響を抑えることのできるキャッシュメモリシステムを提供する。【解決手段】キャッシュメモリをライトスルー方式で動作させると共に、キャッシュミス発生時の動作を、キャッシュメモリに対応するデータが無い場合か、データがあってもエラーが発生している場合に行なうようにする。そして、キャッシュメモリに、以前にソフトエラーが発生したことを示すビットを立てておき、このビットが”１”のときに、再び、エラーが発生した場合には、ハードウェアのエラーが発生していると判断して、CPUに割り込みをかけるようにする。このビットは、ソフトエラーが発生すると考えられる頻度よりも十分短い時間間隔でリセットされるようにする【選択図】図３Ａ
2012103826.tif 000002
【特許請求の範囲】
【請求項１】
タグ部とデータ部からなるデータを格納するキャッシュメモリと、
該タグ部とデータ部の双方についてエラー検出を行なうエラー検出部と、
該キャッシュメモリをライトスルー方式で動作させると共に、タグ部のキャッシュヒット情報においてキャッシュヒットしたことを示す信号と、かつ、該エラー検出部におけるエラー検出においてエラーがなかった事を示す信号との論理積をとった結果の信号を、CPUへ送るべきキャッシュヒット情報とする制御部とを備え、
エラーが発生した時もキャッシュミスヒットであったときと同様に、メインメモリから、エラーが発生したキャッシュメモリのデータに相当するアドレスのデータを読み出し、そのデータでエラーしたキャッシュメモリのデータを置き換えることを特徴とするキャッシュメモリシステム。
【請求項２】
前記キャッシュメモリは、各データについて、以前にエラーが発生したときに”１”が設定されるソフトエラービットを備え、
前記制御部は、該ソフトエラービットが”１”に設定されているデータについて、前記エラー検出部においてエラーが検出された場合には、CPUへの割り込み信号を生成することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記キャッシュメモリシステムは、以前にエラーが発生したときにセットされるレジスタを備え、該レジスタは定期的にリセットされることを特徴とし
前記制御部は、該レジスタがセットされているとき、前記エラー検出部においてエラーが検出された場合には、CPUへの割り込み信号を生成することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項４】
前記エラー検出部は、パリティチェック回路からなることを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項５】
前記エラー検出部は、パリティチェック回路とECC回路とを備え、双方を切り換えて使用することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項６】
前記エラー検出部は、1ビットエラー訂正2ビットエラー検出のECC回路を備え、検出可の2ビットエラーが検出されたときエラーと判断することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項７】
前期キャッシュメモリに対し書き込み動作時にエラーが発生した場合には、前期タグ部のステータス状態を無効にすることを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項８】
前記エラー検出部は、パリティチェック回路とECC回路とを備え、双方を同時に行うことを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項９】
前記キャッシュメモリは、２Ｎウェイセットアソシエイティブ方式を採用し、
前記制御部は、１ペアのウェイに同一データを書き込ませる制御と、同時に２ウェイの読み出しを実行させ、もし片方のウェイでエラーが発生すれば、他方のウェイを有効にして読み出しアクセスさせる制御とを実行することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項１０】
請求項１のキャッシュメモリシステムを備えた半導体装置。
【請求項１１】
タグ部とデータ部からなるデータを格納するキャッシュメモリを備えたキャッシュメモリシステムの制御方法であって、
該タグ部とデータ部の双方についてエラー検出を行ない、
該キャッシュメモリをライトスルー方式で動作させると共に、タグ部のキャッシュヒット情報においてキャッシュヒットしたことを示す信号と、かつ、該エラー検出部におけるエラー検出においてエラーがなかった事を示す信号との論理積をとった結果の信号を、CPUへ送るべきキャッシュヒット情報とし、
エラーが発生した時もキャッシュミスヒットであったときと同様に、メインメモリから、エラーが発生したキャッシュメモリのデータに相当するアドレスのデータを読み出し、そのデータでエラーしたキャッシュメモリのデータを置き換える、
ことを特徴とするキャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、ソフトエラーによる影響を抑制することのできるキャッシュメモリシステムに関する。
【背景技術】
【０００２】
近年の半導体技術の高度化に従い、半導体装置の配線等の構造が微細化する傾向がある。しかし、半導体装置の配線等の回路が微細化すると、外部から入ってくるα線や宇宙線（中性子線）によって回路の動作エラーが発生する可能性が高くなる。メモリについても、小型で大容量のメモリが製造されているが、回路の構造が微細なので、α線や宇宙線（中性子線）によって、格納されているデータにエラーを発生する場合がある。このようなエラーをソフトエラーという。ソフトエラーは、メインメモリ、キャッシュメモリ双方に生じうる。
【０００３】
キャッシュメモリについては、その書き込み方式として、ライトバック方式とライトスルー方式がある。動作速度性能はライトバック方式の方が良いが、ライトバック方式の方は制御が複雑であるということが知られている。しかし、ソフトエラーに対してはライトスルーの方が強いということが言える。理由は、ライトバックでは、キャッシュメモリに書いたデータ内容をメインメモリへ書き戻すタイミングが、長時間が経過した後であることが多々あり、その経過時間の間にメモリ内容であるデータの反転が生じ、書き戻す時にソフトエラーとして顕在化するためである。これに対し、ライトスルーでは、キャッシュにデータを書き込むと同時にメインメモリに書き込んでしまうため、長時間経過した内容を読み出す動作が少なくなるので、ソフトエラー率は低く見える。
【０００４】
よってキャッシュメモリの動作速度性能を少し犠牲にして、信頼性を上げるためにキャッシュメモリの方式をライトスルー方式にすることは有効である。
キャッシュメモリをライトスルー方式にした場合、キャッシュメモリとメインメモリのデータ内容はいつも同一であることが言える。このことを利用して、キャッシュメモリでエラーが発生した場合、キャッシュメモリのデータを捨て、そのエラーが発生したキャッシュのアドレスに相当するメインメモリのデータ内容を読み出し、CPUへデータを送ると共に、エラーが発生したキャッシュメモリのデータ内容を書き換えることで、正常な動作をさせることができる。
【０００５】
従来技術には、バッファメモリの一時的な誤り発生に対し、誤りを補正するものや、α線によるソフトウェアエラーとハードウェア的な不具合によるエラーとが複合して、修正可能ビット数を超えるエラーが発生することを防止するものや、ソフトエラーの蓄積を防止するものが存在する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭５８−１８９９号公報
【特許文献２】特開平２−１４３３５２号公報
【特許文献３】特開昭６３−２７８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下の実施形態では、よりソフトエラーの影響を抑えることのできるキャッシュメモリシステムを提供する。
【課題を解決するための手段】
【０００８】
以下の実施形態の一態様としてのキャッシュメモリシステムは、タグ部とデータ部からなるデータを格納するキャッシュメモリと、該タグ部とデータ部の双方についてエラー検出を行なうエラー検出部と、該キャッシュメモリをライトスルー方式で動作させると共に、タグ部のキャッシュヒット情報においてキャッシュヒットしたことを示す信号と、かつ、該エラー検出部におけるエラー検出においてエラーがなかった事を示す信号との論理積をとった結果の信号を、CPUへ送るべきキャッシュヒット情報とする制御部とを備え、エラーが発生した時もキャッシュミスヒットであったときと同様に、メインメモリから、エラーが発生したキャッシュメモリのデータに相当するアドレスのデータを読み出し、そのデータでエラーしたキャッシュメモリのデータを置き換える。
【発明の効果】
【０００９】
以下の実施形態によれば、よりソフトエラーの影響を抑えることのできるキャッシュメモリシステムが提供される。
【図面の簡単な説明】
【００１０】
【図１】キャッシュメモリの動作を説明する図（その１）である。
【図２】キャッシュメモリの動作を説明する図（その２）である。
【図３Ａ】本実施形態のキャッシュメモリシステムを示す図である。
【図３Ｂ】本実施形態のキャッシュメモリシステの動作を示す図である。
【図４Ａ】本実施形態のキャッシュメモリシステムを示す図である。
【図４Ｂ】本実施形態のキャッシュメモリシステの動作を示す図である。
【図５】２ウェイセットアソシエイティブ方式の場合の構成図である。
【図６】パリティチェックを行なうための回路の図である。
【図７】エラー検出回路としてのECC回路の回路図である。
【図８Ａ】図３Ａにおいて、図７のECC回路を追加で使用する構成図である。
【図８Ｂ】図９の回路を用いた構成図である。
【図９】パリティチェックを行なうための回路の図である。
【図１０】パリティチェックとECC訂正のいずれにも適用できるエラーチェックのための構成を説明する図である。
【図１１】本実施形態の動作の詳細を説明する図（その１）である。
【図１２】本実施形態の動作の詳細を説明する図（その２）である。
【図１３】本実施形態の動作の詳細を説明する図（その３）である。
【発明を実施するための形態】
【００１１】
本実施形態においては、キャッシュメモリをライトスルー方式で動作させると共に、キャッシュミス発生時の動作を、キャッシュメモリに、対応するデータが無い場合か、またはデータがあってもエラーが発生している場合に行なうようにする。そして、キャッシュメモリに、以前にソフトエラーが発生したことを示すビットを設けておき、このビットが”１”のときに、再びエラーが発生した場合には、ハードウェアのエラーが発生していると判断して、CPUに割り込みをかけるようにする。ハードウェアのエラーかの判断はまた、1度キャッシュメモリのエラーが発生するとセットされ、ソフトエラーが発生すると考えられる頻度よりも十分短い時間間隔でリセットされるようなレジスタを用意し、このレジスタがセットされている時に、またキャッシュメモリのエラーが発生した場合、ハードエラーであると判断し、CPUへ割り込みをかけるようにする。
【００１２】
以上のように、キャッシュメモリのデータにエラーがある場合もキャッシュミスしたときと同様に、メインメモリからデータを読み込んで、新しいデータをキャッシュメモリに書き戻すようにしたことにより、エラーの影響が拡散することを抑制することが出来る。
【００１３】
図１及び図２は、キャッシュメモリの動作を説明する図である。
通常、キャッシュメモリは１ライン（16~64Byte程度）を単位に分割され、１ラインにタグが付く。タグの内容は、その1ラインがメインメモリのどこに相当しているかというAddress情報とStatusを持つ。Statusはライトスルー方式ではValid(有効)とInvalid（無効)の2つの状態をとり、リセットしたときはInvalid、キャッシュに正しいデータが入ったときにはValidとなる。これに対し、ライトバック方式では、Invalid(無効)、Clean(キャッシュの内容とメインメモリの内容が同一)とDirty(キャッシュの内容が正しい/メインメモリの内容は古く使用できない)の3つの状態を取る。
【００１４】
CPUからのデータライトが発生したとき、ライトスルー方式では、ライトアドレスがキャッシュにヒットする場合は、ライトデータをメインメモリと同時にキャッシュメモリのデータ部にも書き込む。キャッシュミスの場合は、キャッシュメモリは無視して、メインメモリにのみ書き込む。
【００１５】
ライトバック方式では、ライトが発生してもキャッシュにヒットする場合は、キャッシュにしか書き込まない。当然メインメモリとキャッシュメモリのデータの整合性がとれない状態となる。この状態をタグにDirty状態として記憶しておく。ミスヒットの場合はリフィル（メインメモリから１ライン分のデータを読み込む）を行った後、キャッシュメモリに読み込んだデータを書き込む（この時もDirty状態になる）。
【００１６】
図１は、CPUからのデータの書き込み、読み出し動作を行なう構成のブロック構成図である。
CPU１０から、キャッシュコントローラ11B、キャッシュメモリ１１AにEnable信号と共に、Read/Write信号と、Read/Writeを行なうアドレスを示すAddress信号が入力される。キャッシュメモリ１１Aは、C-Address信号で示されるアドレスに対応するデータが内部に存在するか否かを確認し、存在する場合には、CacheHit信号を”１”にし、存在しない場合には、CacheHit信号を”０”にしてキャッシュコントローラ１１B に出力する。キャッシュヒットした場合には、キャッシュメモリ１１A は、Read/Write信号に従って、指示されたアドレスに対し、データの書き込み、あるいは、データの読み出しを行なう。また、キャッシュコントローラ１１Bは、ライトバック方式ではミスヒット場合リフィルが必要となるが、この場合キャッシュコントローラ１１Bはメモリコントローラへキャッシュ１ライン分をメインメモリからデータを読み出すようメモリコントローラ12へ指示を出す。メモリコントローラ１２は、メインメモリ１３へのアクセスを制御する回路である。
【００１７】
CPU１０からの、Enable信号と、Read/Write信号と、Address信号は、メモリコントローラ１２を介して、メインメモリ１３に入力される。データ読み出し時に、キャッシュメモリ１１Aにおいて、ミスヒットすると、キャッシュコントローラ１１Bは、メインメモリ１３から、指定されたアドレスのデータを読み出すようメモリコントローラ12へ読み出し命令を発行する。読み出されたデータは、キャッシュメモリ１１Aに格納される。
また、ライトスルー方式でデータの書き込みを行なう場合には、ミスヒットした場合は、キャッシュメモリ１１Aには何もしないで、メインメモリ１３にのみデータが書き込まれる。ヒットした場合には、キャッシュメモリ１１Aとメインメモリ１３の両方にデータが書き込まれる。
【００１８】
図２は、ライトバック方式とライトスルー方式の動作を説明する信号図である。
各信号名の前にCがあるのはキャッシュメモリへの信号であり、Mがつくのはメインメモリへの信号である。
【００１９】
図２（ａ）は、ライトバック方式において、キャッシュメモリにヒットした場合の書き込み動作を示す信号図である。キャッシュメモリへAddress信号の印加と同時にC-Enable信号が入力されると、キャッシュ内部のTagが読みだされTagのデータとAddressの上位部が一致すると、キャッシュメモリにヒットしたことを示すHit信号が”１”になる。キャッシュにヒットすると、当該Addressに対応したキャッシュの１ワードへCPUからのデータ：C-Data(write)が書き込み信号：C-Read/WriteをLowにすることで、書き込まれる。また、この図では図示していないが、キャッシュメモリ11BのTAGのStatusはDirtyとなる。
【００２０】
図２（ｂ）は、ライトバック方式において、キャッシュメモリにミスヒットした場合の動作を示す信号図である。C-Enable信号がイネーブルになっても、キャッシュメモリにミスヒットしているので、Hit信号は”０”のままである。ミスヒットするとキャッシュコントローラはAddress信号で示されるアドレスを用いて、メインメモリから1ライン分のデータを読み出すようメモリコントローラへ指示を出す（図示せず）。このとき当該キャッシュラインの既に格納されているデータあり、そのTagのStatusがDirtyである場合は、このデータを該当するメインメモリに書き戻すことが必要であるが、このことは本発明とは関係がないので図示していない。メインメモリから読み出したデータは、該当するキャッシュメモリに書き込まれる。再度同一アドレスでキャッシュに書き込み命令が発せられ、キャッシュメモリには、CPUからのデータが格納される。
【００２１】
図２（ｃ）は、ライトスルー方式における動作を説明する信号図である。最初に、C-Enable信号がイネーブルになる。C-Read/Write信号が書き込みを指示し、Address信号が出力される。Address信号の示すアドレスでTag部を読み出し、ヒットすると、キャッシュメモリにデータを書き込み、続いて、メインメモリに同じデータを書き込む。キャッシュメモリにミスヒットした場合には、キャッシュメモリには何もしないで、メインメモリのみにデータを書き込む。キャッシュメモリにデータがある場合は、キャッシュメモリのデータとメインメモリの対応するデータの内容が同じ内容となる。
【００２２】
図３Ａは、本実施形態のキャッシュメモリシステムを示す図である。
本実施形態では図３Ａに示すように、CPUからのアドレスがキャッシュコントローラに取り込まれ、その一部を使用して、キャッシュメモリ１１からタグ部が読み出され、タグのステータスが無効な時は比較器と両パリティチェック回路はディセーブルにされその出力は”0”となる。有効(Valid)ならその内容と、CPUからの上位アドレスとが比較器２０において比較され、等しい場合ヒットとなる。また、データ部及びタグ部から読み出された内容に対しては、タグパリティチェック部２１及びパリティチェック出力部２２においてパリティチェックを行い、エラーが無ければ、この内容は有効とされCPUへ送られる。タグ部のデータが不一致のとき、あるいは、パリティエラーが発生した場合(図３Ｂ参照)は、このデータは無効となる。データが無効となる、つまりパリティエラーが発生した場合も通常のミスヒットと同様にメインメモリからの読み出しが行われ、そのデータがCPUへ送られると共に、キャッシュのデータ部へも読み出されたデータが書き込まれ、タグ部の内容も新たなアドレスに書き換えられる。なおパリティエラーによるタグの書き換えである場合は同一ラインのSEビット(後述)へ“１”を書き込んでおく。CPUからキャッシュを含むメモリへデータを書き込む場合、タグのステータスが有効でありタグ部の内容と該当するアドレスが一致したとしてもキャッシュでパリティエラーが発生すれば、ミスヒットと処理され、CPUからのデータはメインメモリにのみ書き込まれ、この時このタグのステータスは無効：Invalidに変更される。パリティエラーが起きなければCPUからのデータに対しパリティビットがパリティ生成回路35で生成されCPUからのデータはパリティビットと共にキャッシュのデータ部へ書き込まれる。この時もライトスル―方式であるのでメインメモリへの書き込みも行われる。
【００２３】
CPUがメモリ読み出し時、キャッシュがミスヒットするあるいはパリティエラーが発生する(図３Ｂ参照)と該当するアドレスのメインメモリから読み出しが行われ、その内容に対してパリティ生成回路PG(35)によりパリティビットが生成され、キャッシュのデータ部へメインメモリから読み出した内容と共に書き込まれる。またタグ部に対しても該当するアドレスの1部に対しパリティ生成回路PG(36)によってパリティビットが生成されキャッシュのタグ部への書き込みが行われる。
【００２４】
論理積回路２３には、比較器２０の出力であるヒット信号と、タグパリティチェック部２１とパリティチェック出力部２２のパリティチェック結果の信号の論理反転した信号が入力される。これにより、論理積回路２３の出力は、キャッシュヒットし、且つ、２つのパリティチェックにおいてエラーが無かった場合には、”１”（有効）となり、キャッシュヒットし、且つ、パリティエラーがあった場合には、”０”（無効）となり、キャッシュミスした場合にも、”０”（無効）となる。データ出力部２６は、論理積回路２３の出力が有効の場合にのみキャッシュメモリ１１のデータ部からのデータを出力する。また、タグパリティチェック部２１のパリティチェック結果の信号と、パリティチェック出力部２２のパリティチェック結果の信号は、論理和回路２４に入力される。論理和回路２４の出力は、論理積回路２５に入力される。また、SEビット(後述)の値も、論理積回路２５に入力される。これにより、２つのパリティチェックの結果のいずれか１つ以上にエラーが発生し、かつ、SEビット(後述)が”１”の場合に、CPUへの割り込みをかける割り込み信号が生成される。この様に非常に簡単な回路の追加（エラーの発生時をキャッシュミスとして出力する回路の追加）で、かつソフトウェアの追加をすることなくキャッシュの品質を向上することができる。すなわち、パリティエラーの発生時もキャッシュミスと同様にメインメモリから該当するアドレスのデータ読み込んでキャッシュのデータ上書きしかつ、タグの内容も更新することで、エラーが消去されるようになる。また、パリティエラーがハードエラーであったかソフトエラーであったかの判定回路を設けるため例えば、キャッシュメモリ１１のエントリに1ビット(SEビット：ソフトエラービット)を追加し、1度パリティエラーが発生したら、そのビットを“１”にしておき、また同じアドレスを読んだときにパリティエラーが発生し、かつ、SEビットが”１“の場合はハードエラーと判断する(これはソフトエラーでは、エラー発生箇所がランダムであり同一アドレスでソフトエラーが発生することは非常にまれであることを利用している)。
【００２５】
図４Ａは（図４Ａにおいて、図３Ａと同じ構成要素には同じ参照符号を付し、説明を省略する。またタグのステータスビットも省略）図３ＡにおけるSEビットが目的としているハードエラーかソフトエラーかの判定方式を他の方式で実施した例である。JK-FFは1度パリティエラーが発生するとその値は“１”に設定される。ダウンカウンタはその値が0になるとJK-FFをリセットする信号(=0)をアクティブにすると同時にダウンカウンタ自身の値をプリセット値に設定する。このJK-FFが”１“の状態でパリティエラーが発生すると、JK-FFの出力とP-エラー信号共に”１“になり、それらは論理積回路で論理積がとられ、割り込み信号がアクティブになる。つまりこの割り込み信号はダウンカウンタが＝0を発生する周期以内に2度のパリティエラーが発生したらハードエラーと判定するように動作する（これもソフトエラーの特徴であるソフトエラー発生頻度が非常にまれであり、連続してエラーが発生する確率は非常に小さいことを利用している。ダウンカウンタが０になるまでの時間は、ソフトエラーが発生する時間間隔の１／１０程度とする。例えば、ソフトエラーが１年に１度発生する場合には、上記時間間隔は、１ヶ月程度とする。こうすることでパリティエラーが1カ月に2度以上発生した場合には、ハードエラーであると判定することが出来る。
【００２６】
図４Ｂは図４Ａの破線で囲んだ部分のタイミング図である。JK-FFが“１”の状態でキャッシュメモリのデータ部あるいはタグ部でパリティエラー(P-エラー)が発生すると、Pエラーの立下り部分をとらえてJK-FFの内容が”1”になる。ダウンカウンタは0になると同時にプリセット値に戻るダウンカウンタである。ダウンカウンタの値が０になると(＝０がHighレベル)JK-FFは“０”になる。JK-FFが“１”の状態つまり1度パリティエラーが発生した状態でまたパリティエラーが発生すると、JK-FFの出力との論理積とられているので、割り込み信号がアクティブになる。
【００２７】
この割り込み信号をソフトエラーかハードエラーかの判定に用いてソフトエラーと判定された場合つまり割り込み信号なしでは、メインメモリからデータを読み込んで、キャッシュメモリに書き込むという処理を行うようにする。もし、割り込み信号がアクティブになり、ハードエラーが発生したと判断した場合は、実際にCPUへ割込みをかける、といった事象を発生させ、CPUのプログラムにその処理をゆだねることもできる。もちろんハードエラーと判断されても、メインメモリのデータを読み出して処理の実行を続けることも可能である。
なお、図３Ａの例では、キャッシュメモリは、ダイレクトマップ方式であるが、セットアソシアティブ方式にも適用できる。
【００２８】
図５に、２ウェイセットアソシエイティブ方式の場合の構成図を示す。この図でもタグのステータスビットは省略されている。
【００２９】
キャッシュメモリ１１ａは、２つのウェイからなっている。これに伴って、CPUアドレスの上位とタグ部とを比較し、ヒット信号を生成する２つの比較器２０−１、２０−２が設けられている。比較器２０−１、２０−２は、キャッシュメモリ１１ａにCPUアドレスの示すデータが存在するか否かを示す信号を生成するものであるが、この信号と、各ウェイのタグ部のエラーを検出するタグパリティチェック部２１−１、２１−２からのパリティチェックの結果と、データ部のエラーを検出するパリティチェック出力部２２−１、２２−２からのパリティチェック結果の論理反転した信号が論理積回路３０−１、３０−２に入力されている。論理積回路３０−１、３０−２の出力は、論理和回路３１において、論理和がとられ、キャッシュヒット信号として出力される。したがって、CPUアドレスに対応するデータが存在するウェイにおいて、エラーがタグ部にもデータ部にも無い場合に、キャッシュヒット信号が生成される。これは、単に、対応するエントリがキャッシュメモリ１１ａにあるのみではなく、エラーが発生していない場合に、キャッシュヒットと定義して、CPUにキャッシュメモリ１１ａにアクセスさせるものである。従って、対応するエントリがキャッシュメモリ１１ａに無い場合のみならず、エラーが発生した場合も、キャッシュミスが起きた場合と同じ動作をするようになる。
【００３０】
論理積回路３０−１、３０−２の出力はウェイ選択部３２にも入力され、出力が”１”となっているウェイを選択させる。このときにも、単に対応するエントリがキャッシュメモリ１１ａにあるのみではなく、更にエラーが存在しないウェイを選択させるという構造となっている。
【００３１】
また、タグパリティチェック部２１−１、２１−２からのチェック結果と、パリティチェック出力部２２−１、２２−２からのチェック結果の論理を反転された信号が、ウェイごとに、論理積回路３３−１、３３−２に入力され、論理積がとられる。論理積回路３３−１、３３−２の出力の論理を反転した信号がそれぞれ、論理積回路３４−１、３４−２に入力される。論理積回路３４−１、３４−２には、各ウェイのSEビットも入力され、ウェイごとに論理積がとられる。論理積回路３４−１、３４−２の出力は、論理和回路３５に入力され、論理和が取られ、結果がCPUへの割り込み信号として出力される。この割り込み信号は、いずれか１つ以上のウェイにおいて、タグ部あるいはデータ部またはその両方にエラーがあり、かつ、SEビットが”１”であったエントリがある場合に、ハードエラーが発生したとして、生成される。
【００３２】
Ｎウェイセットアソシエイティブ方式のキャッシュメモリについても、上記と同様に回路を構成できる。すなわち、ウェイごとに、CPUアドレスの上位とタグ部を比較する比較器を設け、比較器の出力と、当該ウェイのタグ部とデータ部のパリティチェック結果の論理反転信号との論理積をとり、ウェイ選択信号とする。また、ウェイ選択信号の論理和をキャッシュヒット信号とする。また、いずれか１つ以上のウェイにおいて、タグ部あるいはデータ部またはその両方にエラーが存在し、かつ、SEビットが”１”となっている場合に、CPUへの割り込み信号を生成するように構成する。
【００３３】
図６は、パリティチェックを行なうための回路の図である。また、図７は、エラー検出回路としてのＥＣＣ回路の回路図である。
図６のパリティチェックのための回路は、タグパリティチェック部及びパリティチェック出力部のいずれにも使用可能である。
【００３４】
図６においては、キャッシュメモリに、バイトパリティを採用している。バイトパリティは、1バイト毎にパリティビットを１ビット、つまり、8バイトが1ワードだとすると８ビットのパリティビットを持つ構成である。この構成では、１バイトごとにパリティチェックを行なう。複数のパリティチェックは、回路で並列に行い、全てのパリティチェック結果の論理和を全体のデータのパリティチェック結果として用いる。８バイトからなる６４ビットのデータは、パリティビットを除いたデータのみを読み出して用いる。
【００３５】
図６のような構成では、この８ビットのパリティビットをECCの冗長ビットに置き換えることで品質を上げることができる。図７が、８ビットのECCの冗長ビットを用いた場合の構成図である。６４ビットのデータと８ビットのECC冗長ビットを読み込んで、１ビットのエラーなら、エラー訂正して出力し、２ビット以上のエラーなら、訂正不能エラーとして、エラー信号を出力する。しかし、この方式では、ECCのチェック/訂正に余分な時間が必要となる。ソフトエラー率が大きい場合、品質を重視して、処理速度の性能は下がるが、図７のようなECCを使用するような信頼性の上がる方式を採用可能である。
【００３６】
図８Ａは、図３Ａにおいて、図７のECC回路を追加で使用する構成図である。
図８Ａにおいて、図３Ａと同じ構成要素には同じ参照符号を付し、説明を省略する。
エラー検出方式をECCにするかパリティにするかはECC／パリティ選択部４０で設定できる。なおこの図ではキャッシュメモリへの書き込み部が省略されているが、ECC/パリティ選択部40によりECCが選択された場合には図７のECCビットへは、CPUから入力された64ビットのデータに対応したデータがECCビット生成回路(図示せず)により、生成され書き込まれる。ECC/パリティ選択部40によりパリティが選択された場合には図６のP(パリティ)ビットへは、CPUから入力された64ビットのデータの各バイト対応したパリティデータがパリティビット生成回路(図示せず)により、生成され書き込まれる。ECC／パリティ選択部４０は、ECCを選択する場合は図７のECC回路４１の訂正不能エラー信号を論理和回路４５に入力させ、パリティを選択する場合は、図６に構成が示されたパリティチェック出力部２２のパリティエラー信号を論理和回路４５に入力させる。論理和回路45の出力はキャッシュメモリのSEビットと論理積が４６によってとられ、CPUへの割り込み信号となる。
【００３７】
図８Ａにおいて、キャッシュメモリ１１のデータ部のデータは、パリティチェック出力部２２と、ECC回路４１に入力される。データ部からのデータとECC回路４１でエラー訂正されたデータは、マルチプレクサ４２に入力される。マルチプレクサ４２は、ECC／パリティ選択部４０の設定にしたがって、いずれかのデータをデータ出力部２６に出力する。パリティチェック出力部２２のパリティチェック結果と、ECC／パリティ選択部４０の設定信号は、論理積回路４３に入力される。また、ECC回路４１の訂正不能エラー信号と、ECC／パリティ選択部４０の設定信号の論理反転信号は、論理積回路４４に入力される。論理積回路４３と４４に、ECC／パリティ選択部４０の設定信号のうち、たがいに論理が反転している信号が入力されることにより、いずれか一方の論理積回路の出力が選択される。論理積回路４３、４４の出力は、論理和回路４５に入力される。すなわち、ECC／パリティ選択部４０からの出力が”０”の場合には、論理積回路４４の入力に、”０”の論理反転である”１”が入力され、論理積回路４４の側が選択される。一方、ECC／パリティ選択部４０からの出力が”１”の場合には、論理積回路４３の入力に、”１”が入力され、論理積回路４３の側が選択される。また、論理和回路４５には、タグパリティチェック部２１の出力も入力され、論理和が取られ、CPUへの割り込み信号として出力される。これにより、データ部に、パリティチェックでエラーが発見されるか、ECCの検査で訂正不能エラーが発見されるか、タグにパリティエラーが検出されると、タグ部の情報とCPUからのアドレスが一致してもこのエラー信号がLowとなって論理積が47で取られるためヒットとはならずミスヒットとして、キャッシュコントローラにより処理される。また45のエラー出力はキャッシュメモリのSEビット、これは図３Ａの実施例で説明したものと同じものと論理積が45によって取られ、SEビットも１であれば、その出力は１となってCPUへの割り込み信号が有効になり、ハードエラーとしての処理が行われる。ここで、ECC処理では、回路的な遅延が大きいことを注意されたい。ソフトエラー率の予測の結果によって、動作速度の性能は下がるが、信頼性の上がる方式（ECC処理）を選択するようにする。すなわち、ソフトエラー率の予測結果が、製造者が想定する以上の高い率を示す場合には、マルチプレクサをECC回路からの訂正後データを選択するように切り替える。ソフトエラー率の予測結果が、製造者が想定する範囲内である場合には、データをそのまま出力すると共に、パリティチェック結果を出力するようにする。
【００３８】
図９及び図１０は、パリティチェックとECC訂正のいずれにも適用できるエラーチェックのための構成を説明する図である。
図９は、64ビットのデータに、１バイトごとに１ビットのパリティがついた構成であり、パリティチェックのみを行なう構成である。
図１０では、図９に対しECCビットが付加されている。ECCは最も一般的なSECDED:1bitエラー訂正/2bitエラー検出方式を想定している。付加されたECCビットを用いて、エラー訂正も実行できるようにしておき、パリティチェックとECCが同時に可能になっている。この回路を用いた実施例が図８Ｂである。この実施例では通常のパリティエラーも発生しない状態では、マルチプレクサMPXはキャッシュからのデータをそのまま出力し、パリティエラーが発生すると、マルチプレクサMPXはECC回路からの出力を選択するようになっている。そして、2bitエラーつまり訂正不能エラーが発生すると、キャッシュミスと扱われ、今まで説明した本発明例と同様な処理を行う。この回路ではパリティエラーもない通常の状態では、より高速なパリティチェックのみの処理が行われれ、パリティエラーが発生した時は高信頼性となるECCが有効になる方式となり高速性と高信頼性を兼ね備えている。
【００３９】
図１１〜図１３は、他の本実施形態の動作の詳細を説明する図である。
本実施形態では２ウェイを想定したキャッシュメモリ構成となっている。図１１において、図５と同じ構成要素には同じ参照符号を付する。
【００４０】
図１１の本実施形態では高信頼性動作を行なうモードと通常動作モードのいずれかの動作を設定できるように構成されている。モードの設定は、ウェイ選択部３２に対してなされる。モードの設定値は、レジスタ５２に書き込まれ、これが、ウェイ選択部３２に入力される。CPUは、レジスタ５２へのモード設定値の書き込みアドレスをアドレスデコーダ５０に出力する。アドレスデコーダ５０は、アドレスをデコードして、論理積回路５１に入力する。このアドレスは、レジスタ５２のアドレスを示しており、デコードすることにより、レジスタ５２への書き込みイネーブル信号となる。論理積回路５１には、CPUからの書き込み信号も入力される。論理積回路５１にイネーブル信号と、書き込み信号が入力され、論理積がとられて出力される。論理積回路５１の出力は、レジスタ５２に入力され、CPUからのデータ（モードの設定値）がレジスタ５２にラッチされる。
【００４１】
通常動作モード（Mode０）では、CPUからのアドレスの一部が両ウェイのタグ部を読み出し、そのタグ部から読み出されたデータとCPUからのアドレスの上位部と比較される。もし、どちらかのタグ部で、値が一致すればキャッシュヒットとなり、ヒットしたウェイのデータ部がウェイ選択部３２を介してCPUへ読み出される。通常動作モードでは、ウェイ０とウェイ１には違う内容が記憶されており、キャッシュのヒット率が上がるように使われている。また、通常動作モードでも、図４Ａで示したパリティチェック方式が用いられ、パリティエラーが発生した場合はミスヒットとして処理することも可能である。本実施形態の高信頼性モード（Mode１）では、さらに品質を上げるため、２つのウェイに同一内容を記憶させておく。エラーが無い場合は、両方のデータを読み出すが、一方のウェイでパリティエラーが発生しても、パリティエラーの発生していない他方のウェイをCPUが読み出すことで、パリティエラーを回避して品質をあげることができる。このように、２つのウェイに同一内容を記憶させておく場合には、キャッシュメモリのウェイ数は、２の倍数とする必要がある。これによれば、２つのウェイを１ペアとして、同一内容のデータを記憶させておくことができる。なお、同一内容を記憶させておくウェイ数は２つとは限定されず、任意の数Ｍでよいが、キャッシュメモリの全ウェイ数は、Ｍの倍数とする。
【００４２】
図１２を参照して説明する。図１２は、キャッシュメモリからのデータの読み出し動作のモードと信号値との関係を示す表である。図１２の表の動作は、ウェイ選択部３２によって実行される。
【００４３】
動作１〜６までは、通常の２ウェイセットアソシエイティブの動作である。動作１は両ウェイ共にミスヒットでキャッシュから読み出しはされない。動作２はウェイ０から正常に(パリティエラー無しに)読み出しがおこなわれたときである。動作３はウェイ０がヒットしたが、パリティエラーが発生したためにキャッシュからのデータはCPUに転送されない場合である。動作４はウェイ１がヒットし、正常に(パリティエラー無しに)読み出しがおこなわれたときである。動作５はウェイ１がヒットしたが、パリティエラーが発生したためにキャッシュからのデータはCPUに転送されない場合である。動作６は、両ウェイ共にヒットだが、これは通常動作では発生しない異常動作のためエラーとして扱われる。
【００４４】
動作７〜10は本実施形態(高信頼性)の動作だが、キャッシュメモリのタグ部・データ部ともエラーがなければ同じ内容が読み出される。動作７は、本実施形態におけるモードでの動作である。ウェイ０がヒットし、パリティエラーなしであるので、ウェイ０のデータがCPUへ転送される。動作８は、両ウェイがヒットし、ウェイ０にパリティエラーが発生し、ウェイ１にはパリティエラーなしであるので、ウェイ１のデータがCPUへ転送される。動作９は、ウェイ１のみヒットし、パリティエラーなしであるので、ウェイ１のデータがCPUへ転送される。動作10は、両ウェイ共にヒットしたが、両ウェイのデータともにパリティエラーが発生したので、キャッシュの内容はCPUへ転送されない。
【００４５】
また、本実施形態のキャッシュへの書き込み動作を図１２の表を参照して説明する。
通常動作モード（Mode:0)では、２ウェイセットアソシエイティブキャッシュとして動作する。動作１〜７までは通常の動作である。動作１は、ウェイ０がヒットし、CPUからのデータをウェイ０に書き込む。動作２は、ウェイ１がヒットし、CPUからのデータをウェイ１に書き込む。動作３は、両ウェイともミスヒットしたが、ウェイ０の方はその内容がInvalid(無効)であったため、ウェイ０へCPUからのデータを書き込む。動作４は、両ウェイともミスヒットだが、ウェイ１の方はその内容がInvalid(無効)であったため、ウェイ１へCPUからのデータを書き込む。動作５は、両ウェイともミスヒットし、しかも両ウェイともその内容がValid(有効)である場合で、どちらかのウェイのデータをメインメモリに退避させ、その跡にデータを書き込む必要がある。どちらのWayを退避させるかを解決する方法としてLRU（Least  Recently  Used）方式が知られており、２ウェイなら簡単に実装可能である。すなわち、タグ部の１ビットをLRUビットとアサインし、CPUからのアクセスがヒットした場合、ウェイ０がヒットしたらLRUビットを1にし、ウェイ１がヒットしたらLRUビットは0にする。こうすることで、1番最後にヒットしたウェイとは逆の情報が書き込まれることになる。この方式を採用することで、動作５では、LRUが0なのでウェイ０へ書き込むが、動作６では、LRUが１なのでウェイ１への書き込みが行われる。動作７は、両ウェイともミスヒットでInvalidであるのでウェイ０への書き込みが行われる。
【００４６】
動作8~10は、本実施形態(高信頼性)のモードであり、Modeが1、つまり、両ウェイの内容が全く同じになるよう、Write時はいつも両ウェイへ書込みを行なう。ただし、動作９では、両ウェイがValidであるので、キャッシュの内容をメインメモリに退避させてから、両ウェイに書き込みを行なう。
【００４７】
以上の本実施形態では、α線や宇宙線（中性子線）によるソフトエラー対策として、キャッシュメモリの動作品質を上げることの出来るキャッシュメモリシステムを提供することが出来る。
【符号の説明】
【００４８】
１０      CPU
１１A      キャッシュメモリ
１１B           キャッシュコントローラ
１２      メモリコントローラ
１３      メインメモリ
２０、２０−１、２０−２      比較器
２１、２１−１、２１−２      タグパリティチェック部
２２、２２−１、２２−２      パリティチェック出力部
２３、２５、３０−１、３０−２、３３−１、３３−２、３４−１、３４−２、４３、４４、５１      論理積回路
２４、３１、３５、４５      論理和回路
２６      データ出力部
３２      ウェイ選択部
４０      ECC／パリティ選択部
４１      ECC回路
４２      マルチプレクサ
５０      アドレスデコーダ
５２      レジスタ
６１      アドレスバッファ
６２      データバッファ
６３      タグアドレスバッファ
６４      制御部
６５，６６  パリティビット生成器
【図１】
2012103826.tif 000003
【図２】
2012103826.tif 000004
【図３Ａ】
2012103826.tif 000005
【図３Ｂ】
2012103826.tif 000006
【図４Ａ】
2012103826.tif 000007
【図４Ｂ】
2012103826.tif 000008
【図５】
2012103826.tif 000009
【図６】
2012103826.tif 000010
【図７】
2012103826.tif 000011
【図８Ａ】
2012103826.tif 000012
【図８Ｂ】
2012103826.tif 000013
【図９】
2012103826.tif 000014
【図１０】
2012103826.tif 000015
【図１１】
2012103826.tif 000016
【図１２】
2012103826.tif 000017
【図１３】
2012103826.tif 000018
【手続補正書】
【提出日】平成23年9月6日(2011.9.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
【特許文献１】特開昭５８−１８９９号公報
【特許文献２】特開平２−１４３３５２号公報
【特許文献３】特開昭６３−２７８１６２号公報