説明

半導体装置

【課題】メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことのできる半導体装置を提供する。
【解決手段】キャッシュメモリ1が、キャッシュロック機能と主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有し、書き込み履歴バッファ2が、キャッシュメモリ1から主メモリ200への書き込みが行われたキャッシュラインの情報を記憶し、メモリコントローラ3が、キャッシュメモリ1から主メモリ200への書き込み時のエラー発生有無を検証して書き込み検証信号を出力し、キャッシュロック制御部4が、書き込み検証信号が主メモリ200への書き込みが正常であることを示すときは、書き込み履歴バッファ2に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、そのキャッシュラインのロック解除をキャッシュメモリ1へ要求する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
キャッシュメモリを有するCPUでは、主メモリから読み出したデータをキャッシュメモリにコピーしておくことにより、メモリアクセスに対する速度改善が図られる。
【0003】
その際、主メモリ内で読み出しエラーが発生することがある。メモリに読み出しエラーが発生すると、CPUの処理に致命的なエラーが発生することがある。
【0004】
従来、このような読み出しエラーを回避するため、主メモリにECC(Error Check Code)を利用した誤り訂正回路を搭載して誤り検出および誤り訂正を実行し、読み出しデータを修復することが行われている(例えば、特許文献1参照。)。
【0005】
ただし、ECCによる誤り訂正では、訂正可能なビット数が限られている。例えば、64ビットのデータに8ビットのECCを付加した場合、1ビットの誤り訂正が行えるだけである。この場合、主メモリの複数ビットにハード的な故障が発生すると、データの修復が不可能となる。
【0006】
そもそも、主メモリにハード的な故障が発生した場合、主メモリへのデータの書き込み自体が正常に行えない。ところが、一般的に、主メモリへのデータの書き込みに対するエラー検出は行われないので、そのデータの読み出しを行うまで、エラーの発生が見逃される。この書き込みエラーの未検出は、ライトバック方式のキャッシュメモリでは重大な問題となる。
【0007】
すなわち、ライトバック方式のキャッシュメモリでは、キャッシュメモリの更新のみを先に行い、後で更新されたキャッシュメモリのデータを一括して主メモリに書き込むが、上述の書き込みエラーがあった場合、そのデータは主メモリへ正常に書き込まれない。この書き込みエラーは、主メモリの読み出しが行われるまでは検出されないので、その間に、キャッシュメモリの当該ラインがさらに更新されると、この主メモリに書き込もうとしたデータは、キャッシュメモリからも消失してしまう。つまり、CPUの処理に必要なデータが消失してしまう、という問題があった。
【特許文献1】特開2004−30527号公報 (第4−5ページ、図1)
【発明の開示】
【発明が解決しようとする課題】
【0008】
そこで、本発明の目的は、メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことのできる半導体装置を提供することにある。
【課題を解決するための手段】
【0009】
本発明の一態様によれば、キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリと、前記キャッシュメモリから主メモリへの書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファと、前記キャッシュメモリから前記主メモリへの書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラと、前記書き込み検証信号の入力を受けて、前記書き込み検証信号が前記エラーの検出を示すときは、前記書き込み履歴バッファに記憶されている前記ライン情報を検索して書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、前記特定したキャッシュラインのロック解除を前記キャッシュメモリへ要求するキャッシュロック制御部とを備えることを特徴とする半導体装置が提供される。
【発明の効果】
【0010】
本発明によれば、メモリへの書き込みにエラーが発生しても、書き込もうとしたデータが消失することを防ぐことができる。
【発明を実施するための最良の形態】
【0011】
図1は、本発明の実施の形態に係る半導体装置の構成の例を示すブロック図である。
【0012】
本実施の形態の半導体装置は、キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリ1と、キャッシュメモリ1から主メモリ200への書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファ2と、キャッシュメモリ1から主メモリ200への書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラ3と、書き込み検証信号の入力を受けて、書き込み検証信号が主メモリ200への書き込み時にエラーが発生したことを示すときは、書き込み履歴バッファ2に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、その特定したキャッシュラインのロック解除をキャッシュメモリ1へ要求するキャッシュロック制御部4と、を備える。
【0013】
キャッシュメモリ1、書き込み履歴バッファ2およびキャッシュロック制御部4は、CPU100に含まれている。
【0014】
キャッシュメモリ1は、データの書き込み時に、そのデータを有するキャッシュラインをロックする。
【0015】
書き込み履歴バッファ2は、キャッシュメモリ1のデータが主メモリ200へ書き込まれるとき、書き込みが行われたキャッシュラインのライン情報を記憶する。
【0016】
メモリコントローラ3は、外部バスを介してCPU100に接続されており、CPU100からの書き込み要求および読み出し要求に応じて、主メモリ200へのデータの書き込みおよび主メモリ200からのデータの読み出しの制御を行う。
【0017】
メモリコントローラ3は、データの書き込みを行うとき、主メモリ200から、書き込んだアドレスのデータを直ちに読み返して、書き込み時にエラーが発生したかどうかを検証し、その結果を書き込み検証信号としてキャッシュロック制御部4へ出力する。
【0018】
キャッシュロック制御部4は、メモリコントローラ3から出力された書き込み検証信号が正常を示すときは、書き込み履歴バッファ2に記憶されているライン情報を検索して、書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、その特定したキャッシュラインのロック解除をキャッシュメモリ1へ要求する。
【0019】
このロック解除要求を受けて、キャッシュメモリ1は、要求されたキャッシュラインのロック解除を行う。
【0020】
キャッシュロック制御部4は、メモリコントローラ3から出力された書き込み検証信号が書き込みエラー発生を示す場合は何もせず、書き込みが行われたキャッシュラインはロックされたままになる。
【0021】
このような本実施の形態によれば、キャッシュメモリ1のデータを主メモリ200へ書き込もうとした際に書き込みエラーが発生したときは、その書き込みを行おうとしたデータが格納されているキャッシュラインがロックされるので、そのデータがキャッシュメモリ1に継続的に保存され、書き込みエラーによりデータが消失することを防止することができる。
【0022】
キャッシュラインがロックされた以降は、主メモリ200の代わりにキャッシュメモリ1からデータを読み出すことにより、CPU1は、要求された処理を正常に実行することができる。
【0023】
以下、書き込み履歴バッファの具体的な構成例を中心に、本発明の実施例について、図面を参照して説明する。なお、図中、同一または相当部分には同一の符号を付して、その説明は繰り返さない。
【実施例1】
【0024】
本実施例では、書き込み履歴バッファをFIFOメモリで構成する例を示す。
【0025】
図2は、本発明の実施例1に係る半導体装置の要部の構成の例を示すブロック図である。なお、図2では、FIFOメモリ21およびキャッシュロック制御部4のみを示し、その他のブロックの記載は省略する。
【0026】
FIFOメモリ21はn段で構成され、1段目に格納されたライン情報は、後続のライン情報が入力されるたびに、前方へシフトされる。
【0027】
各段に記憶されるライン情報は、CPU100がキャッシュメモリ1内にある有効データを主メモリ200に書き込む際の書き込みデータのキャッシュメモリ1内の位置を示すウェイ値(Way)とインデックス値(Index)である。
【0028】
また、FIFOメモリ21の各段には、キャッシュロック制御部4により検索されたかどうかを示す検索フラグ領域が設けられている。
【0029】
このFIFOメモリ21の段数は、CPU100が主メモリ200への書き込み要求を行ってから、メモリコントローラ3が書き込み検証信号を出力までの所要サイクル数にもとづいて決定される。
【0030】
例えば、図3に示すように、最初の書き込み要求W1が発生したときを1サイクル目として、その書き込み要求に対する書き込み検証信号V1がnサイクル目に出力されるとき、FIFOメモリ21の段数はn段と決定される。
【0031】
これにより、このnサイクルの間に主メモリ200への書き込み要求が連続して発生しても、その書き込み要求(W1〜Wn)に対するライン情報(L1〜Ln)を総てFIFOメモリ21に記憶することができる。
【0032】
図4に、連続してn回の書き込み要求が発生したときのFIFOメモリ21の様子を示す。
【0033】
この場合、n段目のライン情報L1(Way1、Index1)から1段目のライン情報Ln(Way n、Index n)まで、n個のライン情報が記憶される。また、各段の検索フラグは、未検索を示す‘0’となっている。
【0034】
次に、このような状態のFIFOメモリ21に対するキャッシュロック制御部4の動作について説明する。なお、ここでは、図3に示すように、メモリコントローラ3から出力される書き込み検証信号V1、V2、V3、V4、・・・のうち、V1、V2、V3は正常を示し、V4はエラーを示す場合を例にとって説明する。
【0035】
キャッシュロック制御部4は、書き込み検証信号V1が入力されると、FIFOメモリ21の書き込みの行われている先頭段(すなわち、この場合はn段目)から順次検索を行ない、検索フラグが‘0’ (未検索)である先頭段を探索する。この場合は、n段目が該当する。このとき、書き込み検証信号V1は「正常」を示すので、キャッシュロック制御部4はn段目の検索フラグを‘1’にして検索を終了し、この段に記憶されているライン情報L1を読み出し、そのウェイ値とインデックス値(Way1、Index1)をロック解除要求信号とともにキャッシュメモリ1へ出力する。
【0036】
書き込み検証信号V2が入力されると、キャッシュロック制御部4は、再度FIFOメモリ21の検索を行ない、検索フラグが‘0’である先頭段を探索する。この場合は、(n−1)段目が、その先頭段に該当する。このとき、書き込み検証信号V2も「正常」を示すので、キャッシュロック制御部4は(n−1)段目の検索フラグを‘1’にして検索を終了し、前回と同様にキャッシュロック制御部4は(n−1)段目に記憶されているライン情報L2を読み出し、そのウェイ値とインデックス値(Way2、Index2)をロック解除要求信号とともにキャッシュメモリ1へ出力する。
【0037】
次に、書き込み検証信号V3が入力されるが、このとき、図3に示すように、新たな書き込み要求Wn+1が発生すると、そのライン情報Ln+1がFIFOメモリ21へ入力され、FIFOメモリ21内のデータは1段ずつ前方へシフトする。
【0038】
図5に、データシフト後のFIFOメモリ21の状態を示す。
【0039】
このデータシフト後のFIFOメモリ21に対して、キャッシュロック制御部4は、検索フラグが‘0’である先頭段を探索する。この場合、(n−1)段目が、その先頭段に該当する。このとき、書き込み検証信号V3が「正常」を示すので、キャッシュロック制御部4は、この(n−1)段目の検索フラグを‘1’にして検索を終了し、(n−1)段目に記憶されているライン情報L3読み出し、そのウェイ値とインデックス値(Way3、Index3)をロック解除要求信号とともにキャッシュメモリ1へ出力する。
【0040】
次に、図6に、書き込み検証信号V4が入力されたときの様子を示す。
【0041】
書き込み検証信号V4が入力されると、キャッシュロック制御部4は、FIFOメモリ21の検索を行ない、検索フラグが‘0’である先頭段を探索する。この場合は、(n−2)段目が、その先頭段に該当する。
【0042】
このとき、書き込み検証信号V4が「エラー」を示しているのでそのまま終了する。これによりライン情報L4に相当するキャッシュメモリ1のキャッシュラインはロックされたままになる。
【0043】
このような本実施例によれば、CPU100が主メモリ200への書き込み要求を行ってからメモリコントローラ3が書き込み検証信号を出力までのサイクル数に相当する段数のFIFOメモリ2を用い、書き込み検証信号が入力されるごとにその未検索の先頭段を探索することにより、主メモリ200への書き込みにエラーが生じたデータを格納したキャッシュラインをロックすることができる。
【実施例2】
【0044】
実施例1では、主メモリ200への書き込みが、書き込み要求の時系列に沿って行われる方式の例を示したが、本実施例では、バスサイクルIDを用いたアウトオブオーダー方式で行われる例を示す。
【0045】
図7は、本発明の実施例2に係る半導体装置の要部の構成の例を示すブロック図である。本実施例では、書き込み履歴バッファがRAM22で構成される例を示す。なお、図7では、RAM22およびキャッシュロック制御部4のみを示し、その他のブロックの記載は省略する。
【0046】
RAM22はn個のアドレスを有し、それぞれのアドレスに、CPU100がキャッシュメモリ1内にある有効データを主メモリ200に書き込む際の書き込みデータのキャッシュメモリ1内の位置を示すウェイ値(Way)とインデックス値(Index)、およびその書き込み要求に対して発行されたバスサイクルID(Bus Cycle ID)が記憶される。
【0047】
また、このバスサイクルIDは、メモリコントローラ3から出力される書き込み検証信号にも付加される。
【0048】
すなわち、キャッシュロック制御部4へは、書き込み検証信号とともに、その検証対象の書き込みに対して発行されたバスサイクルIDも入力される。
【0049】
RAM22のアドレス数は、実施例1と同様、CPU100が主メモリ200への書き込み要求を行ってから、メモリコントローラ3が書き込み検証信号を出力までの所要サイクル数にもとづいて決定される。
【0050】
例えば、図8に示すように、最初の書き込み要求W1が発生したときを1サイクル目として、その書き込み要求に対する書き込み検証信号V1がnサイクル目に出力されるとき、RAM22のアドレス数はn個と決定される。
【0051】
これにより、このnサイクルの間に主メモリ200への書き込み要求が連続して発生しても、その書き込み要求(W1〜Wn)に対するライン情報(L1〜Ln)およびバスサイクルID(IDa〜IDm)を総てRAM22に記憶することができる。
【0052】
このようなRAM22に対して、キャッシュロック制御部4は、書き込み検証信号が入力されると、その書き込み検証信号とともに入力されるバスサイクルIDをもとにRAM22を検索する。
【0053】
この検索により、そのバスサイクルIDと一致するバスサイクルIDが記憶されているアドレスを検出すると、キャッシュロック制御部4は、そのアドレスに記憶されているライン情報にもとづいて、主メモリ200への書き込みを行おうとしたデータが格納されているキャッシュラインを特定する。
【0054】
例えば、図8に示すように、書き込み検証信号V1が「正常」を示し、一緒に入力されるバスサイクルIDがIDaであるとき、キャッシュロック制御部4は、このバスサイクルID IDaをもとにRAM22検索する。
【0055】
図9に、このときのキャッシュロック制御部4およびRAM22の様子を示す。
【0056】
書き込み検証信号V1およびバスサイクルID IDaが入力されると、キャッシュロック制御部4は、バスサイクルID IDaをもとにRAM22を検索する。
【0057】
バスサイクルID IDaと一致するバスサイクルIDが記憶されているアドレスを検出すると、キャッシュロック制御部4は、そのアドレスに記憶されているライン情報L1を読み出し、そのウェイ値とインデックス値(Way1、Index1)をロック解除要求信号とともにキャッシュメモリ1へ出力する。
【0058】
このロック解除要求を受けて、キャッシュメモリ1は、要求されたキャッシュラインのロック解除を行う。
【0059】
また、図8に示すように、書き込み検証信号V4が「エラー」を示し、一緒に入力されるバスサイクルIDがIDdであるとき、キャッシュロック制御部4は、このバスサイクルID IDdをもとにRAM22検索する。
【0060】
この場合、バスサイクルID IDdと一致するバスサイクルIDが記憶されているアドレスを検出すると、キャッシュロック制御部4は、図10に示すように、ライン情報L4をクリアして次のライン情報を書き込める状態にする。
【0061】
このような本実施例によれば、バスサイクルIDにもとづいてRAM22を検索するので、検索対象のライン情報の検出を容易に行うことができる。
【図面の簡単な説明】
【0062】
【図1】本発明の実施の形態に係る半導体装置の構成の例を示すブロック図。
【図2】本発明の実施例1に係る半導体装置の要部の構成の例を示すブロック図。
【図3】実施例1の半導体装置の動作を説明するための波形図。
【図4】実施例1の半導体装置の書き込み履歴バッファの状態の例を示す図。
【図5】実施例1の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図6】実施例1の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図7】本発明の実施例2に係る半導体装置の要部の構成の例を示すブロック図。
【図8】実施例2の半導体装置の動作を説明するための波形図。
【図9】実施例2の半導体装置のキャッシュロック制御部の動作を説明するための図。
【図10】実施例2の半導体装置のキャッシュロック制御部の動作を説明するための図。
【符号の説明】
【0063】
1 キャッシュメモリ
2 書き込み履歴バッファ
3 メモリコントローラ
4 キャッシュロック制御部
21 FIFOメモリ
22 RAM
100 CPU
200 主メモリ

【特許請求の範囲】
【請求項1】
キャッシュロック機能および主メモリへの書き込み時にそのデータを有するキャッシュラインをロックする機能を有するキャッシュメモリと、
前記キャッシュメモリから主メモリへの書き込みが行われたキャッシュラインのライン情報を記憶する書き込み履歴バッファと、
前記キャッシュメモリから前記主メモリへの書き込み時にエラーが発生したかどうかを検証して書き込み検証信号を出力するメモリコントローラと、
前記書き込み検証信号の入力を受けて、前記書き込み検証信号が正常であることの検出を示すときは、前記書き込み履歴バッファに記憶されている前記ライン情報を検索して書き込みを行おうとしたデータが格納されているキャッシュラインを特定し、前記特定したキャッシュラインのロック解除を前記キャッシュメモリへ要求するキャッシュロック制御部と
を備えることを特徴とする半導体装置。
【請求項2】
前記履歴バッファが、
前記主メモリへの書き込み要求の発生から前記書き込み検証信号の出力までの所要サイクル数に相当する段数を有するFIFOメモリであり、前記段数分の前記ライン情報の記憶が可能である
ことを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記キャッシュロック制御部が、
前記書き込み検証信号が出力されるごとに前記FIFOメモリを書き込みの行われている先頭段から順次検索し、
前記書き込み検証信号が前記エラーの検出を示すときは、前記FIFOメモリの未検索の段の中の先頭段に記憶されているライン情報にもとづいて、前記書き込みを行おうとしたデータが格納されているキャッシュラインを特定する
ことを特徴とする請求項2に記載の半導体装置。
【請求項4】
前記履歴バッファが、
前記主メモリへの書き込み要求の発生から前記書き込み検証信号の出力までの所要サイクル数に相当するアドレス数を有するメモリであり、各アドレスに前記ライン情報とともに前記書き込み要求発生時に発行されたバスサイクルIDを記憶する
ことを特徴とする請求項1に記載の半導体装置。
【請求項5】
前記メモリコントローラが、
前記書き込み要求発生時に発行されたバスサイクルIDを付して前記書き込み検証信号を出力し、
前記書き込み検証信号が正常であることの検出を示すときは、
前記キャッシュロック制御部が、
前記履歴バッファその書き込み検証信号に付されたバスサイクルIDをもとに前記履歴バッファを検索し、前記バスサイクルIDと一致するバスサイクルIDが記憶されているアドレスに記憶されているライン情報にもとづいて、前記書き込みを行おうとしたデータが格納されているキャッシュラインを特定する
ことを特徴とする請求項4に記載の半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−67219(P2010−67219A)
【公開日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2008−235517(P2008−235517)
【出願日】平成20年9月12日(2008.9.12)
【出願人】(000221199)東芝マイクロエレクトロニクス株式会社 (376)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】