(57)【要約】【課題】メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことのできる半導体装置を提供する。【解決手段】キャッシュメモリ１が、キャッシュロック機能と主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有し、書き込み履歴バッファ２が、キャッシュメモリ１から主メモリ２００への書き込みが行われたキャッシュラインの情報を記憶し、メモリコントローラ３が、キャッシュメモリ１から主メモリ２００への書き込み時のエラー発生有無を検証して書き込み検証信号を出力し、キャッシュロック制御部４が、書き込み検証信号が主メモリ２００への書き込みが正常であることを示すときは、書き込み履歴バッファ２に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、そのキャッシュラインのロック解除をキャッシュメモリ１へ要求する。【選択図】図１
2010067219.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリと、
前記キャッシュメモリから主メモリへの書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファと、
前記キャッシュメモリから前記主メモリへの書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラと、
前記書き込み検証信号の入力を受けて、前記書き込み検証信号が正常であることの検出を示すときは、前記書き込み履歴バッファに記憶されている前記ライン情報を検索して書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、前記特定したキャッシュラインのロック解除を前記キャッシュメモリへ要求するキャッシュロック制御部と
を備えることを特徴とする半導体装置。
【請求項２】
前記履歴バッファが、
前記主メモリへの書き込み要求の発生から前記書き込み検証信号の出力までの所要サイクル数に相当する段数を有するＦＩＦＯメモリであり、前記段数分の前記ライン情報の記憶が可能である
ことを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記キャッシュロック制御部が、
前記書き込み検証信号が出力されるごとに前記ＦＩＦＯメモリを書き込みの行われている先頭段から順次検索し、
前記書き込み検証信号が前記エラーの検出を示すときは、前記ＦＩＦＯメモリの未検索の段の中の先頭段に記憶されているライン情報にもとづいて、前記書き込みを行おうとしたデータが格納されているキャッシュラインを特定する
ことを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記履歴バッファが、
前記主メモリへの書き込み要求の発生から前記書き込み検証信号の出力までの所要サイクル数に相当するアドレス数を有するメモリであり、各アドレスに前記ライン情報とともに前記書き込み要求発生時に発行されたバスサイクルＩＤを記憶する
ことを特徴とする請求項１に記載の半導体装置。
【請求項５】
前記メモリコントローラが、
前記書き込み要求発生時に発行されたバスサイクルＩＤを付して前記書き込み検証信号を出力し、
前記書き込み検証信号が正常であることの検出を示すときは、
前記キャッシュロック制御部が、
前記履歴バッファその書き込み検証信号に付されたバスサイクルＩＤをもとに前記履歴バッファを検索し、前記バスサイクルＩＤと一致するバスサイクルＩＤが記憶されているアドレスに記憶されているライン情報にもとづいて、前記書き込みを行おうとしたデータが格納されているキャッシュラインを特定する
ことを特徴とする請求項４に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
キャッシュメモリを有するＣＰＵでは、主メモリから読み出したデータをキャッシュメモリにコピーしておくことにより、メモリアクセスに対する速度改善が図られる。
【０００３】
その際、主メモリ内で読み出しエラーが発生することがある。メモリに読み出しエラーが発生すると、ＣＰＵの処理に致命的なエラーが発生することがある。
【０００４】
従来、このような読み出しエラーを回避するため、主メモリにＥＣＣ（Error  Check  Code）を利用した誤り訂正回路を搭載して誤り検出および誤り訂正を実行し、読み出しデータを修復することが行われている（例えば、特許文献１参照。）。
【０００５】
ただし、ＥＣＣによる誤り訂正では、訂正可能なビット数が限られている。例えば、６４ビットのデータに８ビットのＥＣＣを付加した場合、１ビットの誤り訂正が行えるだけである。この場合、主メモリの複数ビットにハード的な故障が発生すると、データの修復が不可能となる。
【０００６】
そもそも、主メモリにハード的な故障が発生した場合、主メモリへのデータの書き込み自体が正常に行えない。ところが、一般的に、主メモリへのデータの書き込みに対するエラー検出は行われないので、そのデータの読み出しを行うまで、エラーの発生が見逃される。この書き込みエラーの未検出は、ライトバック方式のキャッシュメモリでは重大な問題となる。
【０００７】
すなわち、ライトバック方式のキャッシュメモリでは、キャッシュメモリの更新のみを先に行い、後で更新されたキャッシュメモリのデータを一括して主メモリに書き込むが、上述の書き込みエラーがあった場合、そのデータは主メモリへ正常に書き込まれない。この書き込みエラーは、主メモリの読み出しが行われるまでは検出されないので、その間に、キャッシュメモリの当該ラインがさらに更新されると、この主メモリに書き込もうとしたデータは、キャッシュメモリからも消失してしまう。つまり、ＣＰＵの処理に必要なデータが消失してしまう、という問題があった。
【特許文献１】特開２００４−３０５２７号公報  （第４−５ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明の目的は、メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことのできる半導体装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリと、前記キャッシュメモリから主メモリへの書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファと、前記キャッシュメモリから前記主メモリへの書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラと、前記書き込み検証信号の入力を受けて、前記書き込み検証信号が前記エラーの検出を示すときは、前記書き込み履歴バッファに記憶されている前記ライン情報を検索して書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、前記特定したキャッシュラインのロック解除を前記キャッシュメモリへ要求するキャッシュロック制御部とを備えることを特徴とする半導体装置が提供される。
【発明の効果】
【００１０】
本発明によれば、メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことができる。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明の実施の形態に係る半導体装置の構成の例を示すブロック図である。
【００１２】
本実施の形態の半導体装置は、キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリ１と、キャッシュメモリ１から主メモリ２００への書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファ２と、キャッシュメモリ１から主メモリ２００への書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラ３と、書き込み検証信号の入力を受けて、書き込み検証信号が主メモリ２００への書き込み時にエラーが発生したことを示すときは、書き込み履歴バッファ２に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、その特定したキャッシュラインのロック解除をキャッシュメモリ１へ要求するキャッシュロック制御部４と、を備える。
【００１３】
キャッシュメモリ１、書き込み履歴バッファ２およびキャッシュロック制御部４は、ＣＰＵ１００に含まれている。
【００１４】
キャッシュメモリ１は、データの書き込み時に、そのデータを有するキャッシュラインをロックする。
【００１５】
書き込み履歴バッファ２は、キャッシュメモリ１のデータが主メモリ２００へ書き込まれるとき、書き込みが行われたキャッシュラインのライン情報を記憶する。
【００１６】
メモリコントローラ３は、外部バスを介してＣＰＵ１００に接続されており、ＣＰＵ１００からの書き込み要求および読み出し要求に応じて、主メモリ２００へのデータの書き込みおよび主メモリ２００からのデータの読み出しの制御を行う。
【００１７】
メモリコントローラ３は、データの書き込みを行うとき、主メモリ２００から、書き込んだアドレスのデータを直ちに読み返して、書き込み時にエラーが発生したかどうかを検証し、その結果を書き込み検証信号としてキャッシュロック制御部４へ出力する。
【００１８】
キャッシュロック制御部４は、メモリコントローラ３から出力された書き込み検証信号が正常を示すときは、書き込み履歴バッファ２に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、その特定したキャッシュラインのロック解除をキャッシュメモリ１へ要求する。
【００１９】
このロック解除要求を受けて、キャッシュメモリ１は、要求されたキャッシュラインのロック解除を行う。
【００２０】
キャッシュロック制御部４は、メモリコントローラ３から出力された書き込み検証信号が書き込みエラー発生を示す場合は何もせず、書き込みが行われたキャッシュラインはロックされたままになる。
【００２１】
このような本実施の形態によれば、キャッシュメモリ１のデータを主メモリ２００へ書き込もうとした際に書き込みエラーが発生したときは、その書き込みを行おうとしたデータが格納されているキャッシュラインがロックされるので、そのデータがキャッシュメモリ１に継続的に保存され、書き込みエラーによりデータが消失することを防止することができる。
【００２２】
キャッシュラインがロックされた以降は、主メモリ２００の代わりにキャッシュメモリ１からデータを読み出すことにより、ＣＰＵ１は、要求された処理を正常に実行することができる。
【００２３】
以下、書き込み履歴バッファの具体的な構成例を中心に、本発明の実施例について、図面を参照して説明する。なお、図中、同一または相当部分には同一の符号を付して、その説明は繰り返さない。
【実施例１】
【００２４】
本実施例では、書き込み履歴バッファをＦＩＦＯメモリで構成する例を示す。
【００２５】
図２は、本発明の実施例１に係る半導体装置の要部の構成の例を示すブロック図である。なお、図２では、ＦＩＦＯメモリ２１およびキャッシュロック制御部４のみを示し、その他のブロックの記載は省略する。
【００２６】
ＦＩＦＯメモリ２１はｎ段で構成され、１段目に格納されたライン情報は、後続のライン情報が入力されるたびに、前方へシフトされる。
【００２７】
各段に記憶されるライン情報は、ＣＰＵ１００がキャッシュメモリ１内にある有効データを主メモリ２００に書き込む際の書き込みデータのキャッシュメモリ１内の位置を示すウェイ値（Ｗａｙ）とインデックス値（Ｉｎｄｅｘ）である。
【００２８】
また、ＦＩＦＯメモリ２１の各段には、キャッシュロック制御部４により検索されたかどうかを示す検索フラグ領域が設けられている。
【００２９】
このＦＩＦＯメモリ２１の段数は、ＣＰＵ１００が主メモリ２００への書き込み要求を行ってから、メモリコントローラ３が書き込み検証信号を出力までの所要サイクル数にもとづいて決定される。
【００３０】
例えば、図３に示すように、最初の書き込み要求Ｗ１が発生したときを１サイクル目として、その書き込み要求に対する書き込み検証信号Ｖ１がｎサイクル目に出力されるとき、ＦＩＦＯメモリ２１の段数はｎ段と決定される。
【００３１】
これにより、このｎサイクルの間に主メモリ２００への書き込み要求が連続して発生しても、その書き込み要求（Ｗ１〜Ｗｎ）に対するライン情報（Ｌ１〜Ｌｎ）を総てＦＩＦＯメモリ２１に記憶することができる。
【００３２】
図４に、連続してｎ回の書き込み要求が発生したときのＦＩＦＯメモリ２１の様子を示す。
【００３３】
この場合、ｎ段目のライン情報Ｌ１（Ｗａｙ１、Ｉｎｄｅｘ１）から１段目のライン情報Ｌｎ（Ｗａｙ  ｎ、Ｉｎｄｅｘ  ｎ）まで、ｎ個のライン情報が記憶される。また、各段の検索フラグは、未検索を示す‘０’となっている。
【００３４】
次に、このような状態のＦＩＦＯメモリ２１に対するキャッシュロック制御部４の動作について説明する。なお、ここでは、図３に示すように、メモリコントローラ３から出力される書き込み検証信号Ｖ１、Ｖ２、Ｖ３、Ｖ４、・・・のうち、Ｖ１、Ｖ２、Ｖ３は正常を示し、Ｖ４はエラーを示す場合を例にとって説明する。
【００３５】
キャッシュロック制御部４は、書き込み検証信号Ｖ１が入力されると、ＦＩＦＯメモリ２１の書き込みの行われている先頭段（すなわち、この場合はｎ段目）から順次検索を行ない、検索フラグが‘０’ （未検索）である先頭段を探索する。この場合は、ｎ段目が該当する。このとき、書き込み検証信号Ｖ１は「正常」を示すので、キャッシュロック制御部４はｎ段目の検索フラグを‘１’にして検索を終了し、この段に記憶されているライン情報Ｌ１を読み出し、そのウェイ値とインデックス値（Ｗａｙ１、Ｉｎｄｅｘ１）をロック解除要求信号とともにキャッシュメモリ１へ出力する。
【００３６】
書き込み検証信号Ｖ２が入力されると、キャッシュロック制御部４は、再度ＦＩＦＯメモリ２１の検索を行ない、検索フラグが‘０’である先頭段を探索する。この場合は、（ｎ−１）段目が、その先頭段に該当する。このとき、書き込み検証信号Ｖ２も「正常」を示すので、キャッシュロック制御部４は（ｎ−１）段目の検索フラグを‘１’にして検索を終了し、前回と同様にキャッシュロック制御部４は（ｎ−１）段目に記憶されているライン情報Ｌ２を読み出し、そのウェイ値とインデックス値（Ｗａｙ２、Ｉｎｄｅｘ２）をロック解除要求信号とともにキャッシュメモリ１へ出力する。
【００３７】
次に、書き込み検証信号Ｖ３が入力されるが、このとき、図３に示すように、新たな書き込み要求Ｗｎ＋１が発生すると、そのライン情報Ｌｎ＋１がＦＩＦＯメモリ２１へ入力され、ＦＩＦＯメモリ２１内のデータは１段ずつ前方へシフトする。
【００３８】
図５に、データシフト後のＦＩＦＯメモリ２１の状態を示す。
【００３９】
このデータシフト後のＦＩＦＯメモリ２１に対して、キャッシュロック制御部４は、検索フラグが‘０’である先頭段を探索する。この場合、（ｎ−１）段目が、その先頭段に該当する。このとき、書き込み検証信号Ｖ３が「正常」を示すので、キャッシュロック制御部４は、この（ｎ−１）段目の検索フラグを‘１’にして検索を終了し、（ｎ−１）段目に記憶されているライン情報Ｌ３読み出し、そのウェイ値とインデックス値（Ｗａｙ３、Ｉｎｄｅｘ３）をロック解除要求信号とともにキャッシュメモリ１へ出力する。
【００４０】
次に、図６に、書き込み検証信号Ｖ４が入力されたときの様子を示す。
【００４１】
書き込み検証信号Ｖ４が入力されると、キャッシュロック制御部４は、ＦＩＦＯメモリ２１の検索を行ない、検索フラグが‘０’である先頭段を探索する。この場合は、（ｎ−２）段目が、その先頭段に該当する。
【００４２】
このとき、書き込み検証信号Ｖ４が「エラー」を示しているのでそのまま終了する。これによりライン情報L4に相当するキャッシュメモリ１のキャッシュラインはロックされたままになる。
【００４３】
このような本実施例によれば、ＣＰＵ１００が主メモリ２００への書き込み要求を行ってからメモリコントローラ３が書き込み検証信号を出力までのサイクル数に相当する段数のＦＩＦＯメモリ２を用い、書き込み検証信号が入力されるごとにその未検索の先頭段を探索することにより、主メモリ２００への書き込みにエラーが生じたデータを格納したキャッシュラインをロックすることができる。
【実施例２】
【００４４】
実施例１では、主メモリ２００への書き込みが、書き込み要求の時系列に沿って行われる方式の例を示したが、本実施例では、バスサイクルＩＤを用いたアウトオブオーダー方式で行われる例を示す。
【００４５】
図７は、本発明の実施例２に係る半導体装置の要部の構成の例を示すブロック図である。本実施例では、書き込み履歴バッファがＲＡＭ２２で構成される例を示す。なお、図７では、ＲＡＭ２２およびキャッシュロック制御部４のみを示し、その他のブロックの記載は省略する。
【００４６】
ＲＡＭ２２はｎ個のアドレスを有し、それぞれのアドレスに、ＣＰＵ１００がキャッシュメモリ１内にある有効データを主メモリ２００に書き込む際の書き込みデータのキャッシュメモリ１内の位置を示すウェイ値（Ｗａｙ）とインデックス値（Ｉｎｄｅｘ）、およびその書き込み要求に対して発行されたバスサイクルＩＤ（Ｂｕｓ  Ｃｙｃｌｅ  ＩＤ）が記憶される。
【００４７】
また、このバスサイクルＩＤは、メモリコントローラ３から出力される書き込み検証信号にも付加される。
【００４８】
すなわち、キャッシュロック制御部４へは、書き込み検証信号とともに、その検証対象の書き込みに対して発行されたバスサイクルＩＤも入力される。
【００４９】
ＲＡＭ２２のアドレス数は、実施例１と同様、ＣＰＵ１００が主メモリ２００への書き込み要求を行ってから、メモリコントローラ３が書き込み検証信号を出力までの所要サイクル数にもとづいて決定される。
【００５０】
例えば、図８に示すように、最初の書き込み要求Ｗ１が発生したときを１サイクル目として、その書き込み要求に対する書き込み検証信号Ｖ１がｎサイクル目に出力されるとき、ＲＡＭ２２のアドレス数はｎ個と決定される。
【００５１】
これにより、このｎサイクルの間に主メモリ２００への書き込み要求が連続して発生しても、その書き込み要求（Ｗ１〜Ｗｎ）に対するライン情報（Ｌ１〜Ｌｎ）およびバスサイクルＩＤ（ＩＤａ〜ＩＤｍ）を総てＲＡＭ２２に記憶することができる。
【００５２】
このようなＲＡＭ２２に対して、キャッシュロック制御部４は、書き込み検証信号が入力されると、その書き込み検証信号とともに入力されるバスサイクルＩＤをもとにＲＡＭ２２を検索する。
【００５３】
この検索により、そのバスサイクルＩＤと一致するバスサイクルＩＤが記憶されているアドレスを検出すると、キャッシュロック制御部４は、そのアドレスに記憶されているライン情報にもとづいて、主メモリ２００への書き込みを行おうとしたデータが格納されているキャッシュラインを特定する。
【００５４】
例えば、図８に示すように、書き込み検証信号Ｖ１が「正常」を示し、一緒に入力されるバスサイクルＩＤがＩＤａであるとき、キャッシュロック制御部４は、このバスサイクルＩＤ  ＩＤａをもとにＲＡＭ２２検索する。
【００５５】
図９に、このときのキャッシュロック制御部４およびＲＡＭ２２の様子を示す。
【００５６】
書き込み検証信号Ｖ１およびバスサイクルＩＤ  ＩＤａが入力されると、キャッシュロック制御部４は、バスサイクルＩＤ  ＩＤａをもとにＲＡＭ２２を検索する。
【００５７】
バスサイクルＩＤ  ＩＤａと一致するバスサイクルＩＤが記憶されているアドレスを検出すると、キャッシュロック制御部４は、そのアドレスに記憶されているライン情報Ｌ１を読み出し、そのウェイ値とインデックス値（Ｗａｙ１、Ｉｎｄｅｘ１）をロック解除要求信号とともにキャッシュメモリ１へ出力する。
【００５８】
このロック解除要求を受けて、キャッシュメモリ１は、要求されたキャッシュラインのロック解除を行う。
【００５９】
また、図８に示すように、書き込み検証信号V４が「エラー」を示し、一緒に入力されるバスサイクルＩＤがＩＤｄであるとき、キャッシュロック制御部４は、このバスサイクルＩＤ  ＩＤｄをもとにＲＡＭ２２検索する。
【００６０】
この場合、バスサイクルＩＤ  ＩＤｄと一致するバスサイクルＩＤが記憶されているアドレスを検出すると、キャッシュロック制御部４は、図１０に示すように、ライン情報L４をクリアして次のライン情報を書き込める状態にする。
【００６１】
このような本実施例によれば、バスサイクルＩＤにもとづいてＲＡＭ２２を検索するので、検索対象のライン情報の検出を容易に行うことができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態に係る半導体装置の構成の例を示すブロック図。
【図２】本発明の実施例１に係る半導体装置の要部の構成の例を示すブロック図。
【図３】実施例１の半導体装置の動作を説明するための波形図。
【図４】実施例１の半導体装置の書き込み履歴バッファの状態の例を示す図。
【図５】実施例１の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図６】実施例１の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図７】本発明の実施例２に係る半導体装置の要部の構成の例を示すブロック図。
【図８】実施例２の半導体装置の動作を説明するための波形図。
【図９】実施例２の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図１０】実施例２の半導体装置のキャッシュロック制御部の動作を説明するための図。
【符号の説明】
【００６３】
１  キャッシュメモリ
２  書き込み履歴バッファ
３  メモリコントローラ
４  キャッシュロック制御部
２１  ＦＩＦＯメモリ
２２  ＲＡＭ
１００  ＣＰＵ
２００  主メモリ
【図１】
2010067219.tif 000003
【図２】
2010067219.tif 000004
【図３】
2010067219.tif 000005
【図４】
2010067219.tif 000006
【図５】
2010067219.tif 000007
【図６】
2010067219.tif 000008
【図７】
2010067219.tif 000009
【図８】
2010067219.tif 000010
【図９】
2010067219.tif 000011
【図１０】
2010067219.tif 000012