本発明は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御装置およびメモリ制御方法に関し、特に、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができるメモリ制御装置およびメモリ制御方法に関する。
近年、半導体技術の微細化および高速化に伴って、CPU(Central Processing Unit:中央処理演算装置)などのプロセッサに搭載されるRAM(Random Access Memory)の記憶素子も微細化したため、RAMに記憶される情報においてビット反転などの故障が発生することがある。このため、故障に自動的に対処する方法として、RAS(Reliability, Availability, Serviceability:信頼性、可用性、保守性)制御に関する検討が盛んに行われている。
RAS制御においては、例えばECC(Error Correcting Code:誤り訂正符号)を用いた誤り訂正技術などが重要な役割を担っている。一般的な誤り訂正技術においては、誤り訂正回路によってデータに付加されているECCが用いられ、データに発生したビット反転などの誤りが訂正される。このような誤り訂正においては、誤り訂正回路が正しく動作することが前提となっているため、誤り訂正回路の信頼性を担保する必要がある。
そこで、RAMにデータが書き込まれる際に、データに故意にエラーを発生させておき、このデータに対する誤り訂正を実行することにより、誤り訂正回路が正しく動作しているか否かが検証されることがある。また、例えば特許文献1では、RAMの特定のアドレスに正常なデータを書き込む一方で、正常なデータが書き込まれるアドレスを反転させたアドレスにエラーがあるエラーデータを書き込み、反転アドレスに書き込まれたエラーデータを用いて誤り訂正回路の試験を行うことが開示されている。
しかしながら、上記の技術では、RAMにデータが書き込まれる際にのみ故意にエラーを発生させるため、RAMがCPUのキャッシュメモリとして使用される場合には、例えばエラーを発生させたデータが読み出される前に書き換えられたりして、必ずしも誤り訂正回路の信頼性が保証されないという問題がある。すなわち、上述した誤り訂正回路の試験においては、RAMに書き込むデータにエラーを発生させ、このエラーデータに対する読み出し要求が発行されて誤り訂正を実行したときに、エラーが正しく検出または訂正されることが確認されるため、読み出し要求が発行される前にエラーデータが書き換えられてしまえば、読み出し時に読み出されるのはエラーデータではなくなってしまう。
したがって、例えばキャッシュメモリにエラーデータが書き込まれてから読み出されるまでの間隔が比較的長い場合は、誤り訂正回路が正しく動作しているか否かを定期的に検証することができるとは限らず、結果としてRAS制御の正当な機能が保証されない。
本発明はかかる点に鑑みてなされたものであり、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができるメモリ制御装置およびメモリ制御方法を提供することを目的とする。
上記課題を解決するために、本発明は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御装置であって、前記メモリからデータを読み出す読出手段と、前記読出手段によって読み出されたデータに擬似エラーを注入する注入手段と、前記注入手段によって擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定する特定手段と、前記特定手段によって特定された誤り位置と前記注入手段によって注入された擬似エラーの位置とが一致するか否かを判定する判定手段と、前記判定手段による判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する出力手段とを有することを特徴とする。
また、本発明は、上記発明において、前記注入手段は、前記読出手段によってデータが読み出される回数をカウントするカウント手段を含み、前記カウント手段によってカウントされた回数が所定回数に達するごとにデータに擬似エラーを注入することを特徴とする。
また、本発明は、上記発明において、前記注入手段は、前記読出手段によって読み出されたデータの所定のビットを反転させることにより擬似エラーを注入することを特徴とする。
また、本発明は、上記発明において、前記判定手段による判定の結果、誤り位置と擬似エラーの位置とが一致しない場合に、前記特定手段を含む誤り訂正回路が故障している旨を外部に通知する通知手段をさらに有することを特徴とする。
また、本発明は、上記発明において、前記特定手段は、データに付加されている誤り訂正符号を用いて誤り位置を特定することを特徴とする。
また、本発明は、上記発明において、前記出力手段は、誤り位置のビットを反転させてエラーを訂正する誤り訂正手段を含むことを特徴とする。
また、本発明は、上記発明において、前記読出手段は、前記メモリに記憶されたデータの一部を書き換えるストア処理が行われる際に、書き換えられることがないストア対象外データを前記メモリから読み出すことを特徴とする。
また、本発明は、上記発明において、前記注入手段は、ストア処理の開始後2回目に前記読出手段によって読み出されたストア対象外データに擬似エラーを注入することを特徴とする。
また、本発明は、上記発明において、前記出力手段によって出力されるストア対象外データおよび書き換え後のストアデータそれぞれの誤り訂正符号を生成する生成手段と、前記生成手段によって生成されたストア対象外データの誤り訂正符号およびストアデータの誤り訂正符号を合成する合成手段と、前記合成手段によって合成されて得られた誤り訂正符号を前記メモリに書き込む書込手段とをさらに有することを特徴とする。
また、本発明は、上記発明において、前記注入手段は、前記メモリが複数のウェイに分割されている場合、いずれか1つのウェイに対応するデータに擬似エラーを注入することを特徴とする。
また、本発明は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御方法であって、前記メモリからデータを読み出す読出工程と、前記読出工程にて読み出されたデータに擬似エラーを注入する注入工程と、前記注入工程にて擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定する特定工程と、前記特定工程にて特定された誤り位置と前記注入工程にて注入された擬似エラーの位置とが一致するか否かを判定する判定工程と、前記判定工程における判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する出力工程とを有することを特徴とする。
本発明によれば、メモリからデータを読み出し、読み出されたデータに擬似エラーを注入し、擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定し、特定された誤り位置と注入された擬似エラーの位置とが一致するか否かを判定し、判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する。このため、データの読み出し時に擬似エラーを含むエラーの訂正が正常に行われることが確認された場合のみデータを出力し、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる。
また、本発明によれば、データが読み出される回数をカウントし、カウントされた回数が所定回数に達するごとにデータに擬似エラーを注入するため、メモリへのデータの書き込みが行われずデータの読み出しが連続して実行される場合でも、定期的に誤り訂正回路の正当性を検証することができる。
また、本発明によれば、読み出されたデータの所定のビットを反転させることにより擬似エラーを注入するため、読み出された元のデータとは必ず異なるビットが発生し、確実に擬似エラーを注入することができる。
また、本発明によれば、判定の結果、誤り位置と擬似エラーの位置とが一致しない場合に、誤り訂正回路が故障している旨を外部に通知するため、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
また、本発明によれば、データに付加されている誤り訂正符号を用いて誤り位置を特定するため、データ中のエラーが発生しているビットを特定し、確実に誤り位置を特定することができる。
また、本発明によれば、誤り位置のビットを反転させてエラーを訂正するため、誤っているビットが正しいビットに変更され、エラーがないデータを得ることができる。
また、本発明によれば、メモリに記憶されたデータの一部を書き換えるストア処理が行われる際に、書き換えられることがないストア対象外データをメモリから読み出すため、ストア対象外データの誤り訂正が正しく行われることを担保することができる。
また、本発明によれば、ストア処理の開始後2回目に読み出されたストア対象外データに擬似エラーを注入するため、ストア処理に伴う誤り訂正符号の更新に用いられるストア対象外データの誤り訂正が正しく行われることを担保することができ、正確な誤り訂正符号の更新を行うことができる。
また、本発明によれば、出力されるストア対象外データおよび書き換え後のストアデータそれぞれの誤り訂正符号を生成し、生成されたストア対象外データの誤り訂正符号およびストアデータの誤り訂正符号を合成し、合成されて得られた誤り訂正符号をメモリに書き込む。このため、ストア処理によってデータの一部が書き換えられても、正常に動作する誤り訂正回路によって誤り訂正されたデータを元に誤り訂正符号が更新され、正確な誤り訂正符号の更新を行うことができる。
また、本発明によれば、メモリが複数のウェイに分割されている場合、いずれか1つのウェイに対応するデータに擬似エラーを注入するため、メモリが例えばセットアソシアティブ方式のキャッシュメモリである場合にも、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる。
図1は、本発明の一実施の形態に係るCPUの概略構成を示すブロック図である。
図2は、一実施の形態に係るキャッシュ制御部の要部構成を示すブロック図である。
図3は、一実施の形態に係るキャッシュ制御部の読み出し処理時の動作を示すフロー図である。
図4は、一実施の形態に係るキャッシュ制御部のストア処理時の動作を示すフロー図である。
符号の説明
100 キャッシュ制御部
101 接続部
102 読出指示部
103 カウンタ部
104 読出部
105 擬似エラー注入部
106 誤り位置特定部
107 誤り訂正部
108 判定部
109 ECC生成部
110 ECC合成部
111 ストアデータ取得部
112 書込部
200 キャッシュ
300 命令処理部
400 演算処理部
500 メインメモリ
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。以下においては、CPUにキャッシュメモリが1つのみ備えられている場合を例に挙げて説明するが、本発明はこれに限定されず、2次以上のキャッシュメモリがある場合にも、それぞれのキャッシュメモリに対応する誤り訂正回路の検証に適用することができる。
図1は、本発明の一実施の形態に係るCPUの概略構成を示すブロック図である。図1に示すCPUは、キャッシュ制御部100、キャッシュ200、命令処理部300、および演算処理部400を有している。また、このCPUは、メインメモリ500に接続されている。
キャッシュ制御部100は、命令処理部300から発行される命令に応じて、キャッシュ200に対するデータの書き込みおよび読み出しを制御する。また、キャッシュ制御部100は、キャッシュ200から読み出されたデータの誤り訂正を行うとともに、データの誤り訂正を行う誤り訂正回路が正しく機能しているか否かを判定する。キャッシュ制御部100の具体的な構成については、後に詳述する。
キャッシュ200は、メインメモリ500上の頻繁に使用されるデータを記憶するとともに、記憶されたデータに付加されるECC(Error Correcting Code)を記憶する。具体的には、キャッシュ200は、データを記憶するデータRAMおよびECCを記憶するECCRAMを有しており、それぞれのRAMにデータおよびECCを記憶する。なお、キャッシュ200は、データのタグ情報を記憶するタグRAMなどをさらに有していても良い。
命令処理部300は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部400に指示するとともに、必要なデータの読み出しおよび書き込みをキャッシュ制御部100へ指示する。演算処理部400は、命令処理部300からの指示に応じて、キャッシュ200などから読み出されたデータを用いた演算処理を行う。
メインメモリ500は、主記憶装置であって、CPUにおける処理に必要なデータやプログラムを記憶している。メインメモリ500は、キャッシュ200と比較すると大容量であるが、アクセス速度が遅い。
図2は、本実施の形態に係るキャッシュ制御部100の要部構成を示すブロック図である。同図に示すキャッシュ制御部100は、接続部101、読出指示部102、カウンタ部103、読出部104、擬似エラー注入部105、誤り位置特定部106、誤り訂正部107、判定部108、ECC生成部109、ECC合成部110、ストアデータ取得部111、および書込部112を有している。
接続部101は、命令処理部300と接続され、命令処理部300からのデータの読み出し命令などの命令および書き換えられたストアデータを読出指示部102へ通知する一方、キャッシュ200から読み出されたデータおよび誤り訂正回路が正しく機能しているか否かの判定結果を命令処理部300へ出力する。
読出指示部102は、命令処理部300からデータの読み出し命令またはストア命令が出された場合、その旨をカウンタ部103へ通知するとともに、読み出すデータのアドレスを読出部104へ指示する。
カウンタ部103は、読出指示部102から読み出し命令の通知を受けた回数をカウントし、カウンタ値が所定のしきい値に達すると擬似エラー注入部105へ擬似エラー注入を指示するとともにカウンタ値をリセットする。また、カウンタ部103は、読出指示部102からストア命令の通知を受けると、2回目のデータ読み出し時に擬似エラー注入をするよう擬似エラー注入部105へ指示する。ストア処理時には、ストアデータがストアされる前に、書き換えられることがないストア対象外データが一旦キャッシュ200から読み出されて(1回目のデータ読み出し)エラー検出が行われ、エラーがなければストアデータがストアされ、次いでストア対象外データがキャッシュ200から再び読み出されて(2回目のデータ読み出し)、ストアデータとともにECCの生成が行われる。このため、カウンタ部103は、2回目のデータ読み出し時に擬似エラー注入を指示する。
読出部104は、読出指示部102から指示されるアドレスのデータをキャッシュ200から読み出し、擬似エラー注入部105へ出力する。具体的には、読出部104は、命令処理部300から出される読み出し命令に含まれるアドレスのデータ、または、ストア命令に含まれるアドレスのストア対象外データを読み出す。
擬似エラー注入部105は、カウンタ部103から擬似エラー注入が指示されると、読出部104から出力されるデータに擬似エラーを注入する。具体的には、擬似エラー注入部105は、読出部104から出力されるデータの所定のビットを反転させることにより、擬似エラーを注入する。上述したように、カウンタ部103からの擬似エラー注入の指示は、所定数の読み出し命令が出された場合やストア命令が出された場合に行われるため、擬似エラー注入部105は、少なくとも所定数の読み出し命令が出されるごとに1回擬似エラーを注入することになる。また、擬似エラー注入部105は、擬似エラーを注入した位置を判定部108へ報告する。
誤り位置特定部106は、データに付加されているECCを用いて、データ中のエラーが発生しているビットの位置を特定し、特定された誤り位置を誤り訂正部107および判定部108へ通知する。
誤り訂正部107は、誤り訂正を続行する旨が判定部108から指示された場合、誤り位置特定部106から通知された誤り位置のビットを反転させて、データ中の誤りを訂正する。そして、誤り訂正部107は、誤り訂正後のデータを接続部101またはECC生成部109へ出力する。すなわち、誤り訂正部107は、命令処理部300から読み出し命令が出された場合は、誤り訂正後のデータを接続部101へ出力し、ストア命令が出された場合は、誤り訂正後のストア対象外データをECC生成部109へ出力する。なお、誤り位置特定部106および誤り訂正部107は、本実施の形態における誤り訂正回路を形成している。
判定部108は、擬似エラー注入部105から報告された擬似エラーの注入位置と誤り位置特定部106から通知された誤り位置とが一致するか否かを判定し、両者が一致すれば、誤り位置特定部106による誤り位置の特定が正確であると判断し、誤り訂正続行を誤り訂正部107へ指示する。また、判定部108は、擬似エラー注入位置と誤り位置とが一致しない場合、誤り位置特定部106に故障が発生していると判定し、誤り訂正回路が故障している旨の判定結果を接続部101へ出力する。
ECC生成部109は、誤り訂正部107から出力されるストア対象外データおよびストアデータ取得部111から出力されるストアデータそれぞれについてECCを生成し、それぞれのECCをECC合成部110へ出力する。
ECC合成部110は、ECC生成部109から出力されるストア対象外データのECCとストアデータのECCとを合成(マージ)することにより、データの一部が書き換えられるストア処理が行われた場合の新たなECCを生成し、書込部112へ出力する。
ストアデータ取得部111は、命令処理部300からストア命令が出された場合に、書き換えられたストアデータを接続部101から取得し、ECC生成部109および書込部112へ出力する。
書込部112は、ストアデータ取得部111から出力されるストアデータをキャッシュ200へ書き込む。また、書込部112は、ECC合成部110から出力される新たなECCをキャッシュ200へ書き込む。
次いで、上記のように構成されたキャッシュ制御部100の読み出し処理時の動作について、図3に示すフロー図を参照しながら説明する。
まず、初期状態では、カウンタ部103のカウンタ値が0にリセットされている(ステップS101)。このとき、命令処理部300からキャッシュ制御部100へデータの読み出し命令が出されると(ステップS102)、読み出し命令は、接続部101を介して読出指示部102へ入力される。そして、読出指示部102によって、読み出すデータのアドレスが読出部104へ指示されるとともに、読み出し処理が実行される旨がカウンタ部103へ通知される。
そして、読出部104によって、指示されたアドレスのデータがキャッシュ200から読み出されるとともに(ステップS103)、読み出し処理実行の旨が通知されると、カウンタ部103によってカウンタ値が1インクリメントされる(ステップS104)。カウンタ値が1インクリメントされると、カウンタ部103によって、カウンタ値が所定のしきい値に達したか否かが判定される(ステップS105)。
この判定の結果、カウンタ値が所定のしきい値に達していない場合(ステップS105No)、読出部104によってキャッシュ200から読み出されたデータは、擬似エラー注入部105を経由して誤り訂正回路へ出力され、誤り位置特定部106によってエラーの位置が検出され、誤り訂正部107によってエラーが検出された位置のビットが反転されることにより誤り訂正が行われ(ステップS109)、誤り訂正後のデータが接続部101を介して命令処理部300へ出力される。すなわち、カウンタ部103のカウンタ値が所定のしきい値に達していない場合は、誤り訂正回路が正常に機能しているという前提の下でデータの誤り訂正が行われ、読み出し処理が実行される。そして、この読み出し処理の実行後、命令処理部300による次の読み出し命令が待機される。
ここでは、再び命令処理部300からキャッシュ制御部100へデータの読み出し命令が出された(ステップS102)ものとして説明を続ける。この場合も、読み出し命令は、接続部101を介して読出指示部102へ入力され、読出指示部102からの指示により、読出部104によってデータがキャッシュ200から読み出されるとともに(ステップS103)、カウンタ部103によってカウンタ値が1インクリメントされる(ステップS104)。そして、カウンタ部103によって、カウンタ値が所定のしきい値に達したか否かが判定される(ステップS105)。
この判定の結果、カウンタ値が所定のしきい値に達した場合(ステップS105Yes)、カウンタ部103から擬似エラー注入部105に対して、データに擬似エラーを注入する旨の指示が出され、読出部104によってキャッシュ200から読み出されたデータが擬似エラー注入部105へ出力されると、擬似エラー注入部105によって、データに擬似エラーが注入される(ステップS106)。この擬似エラーは、擬似エラー注入部105によって、データの所定のビットが反転されることによって注入される。擬似エラー注入部105によって擬似エラーが注入された位置は、判定部108へ報告される。
ここで、擬似エラー注入部105によるキャッシュ200から読み出されたデータへの擬似エラーの注入は、カウンタ部103のカウンタ値が所定のしきい値に達するたびに、換言すれば、命令処理部300から出される読み出し命令の数が所定数に達するたびに実行されるため、命令処理部300から連続して読み出し命令が出されても、定期的に誤り訂正回路の正当性を検証することができ、RAS制御の正当な機能を保証することができる。
そして、擬似エラーが注入されたデータは、誤り訂正回路内の誤り位置特定部106へ出力され、誤り位置特定部106によって、データに付加されたECCが用いられることにより、エラーが発生している誤り位置が特定される(ステップS107)。ここで、擬似エラー注入部105によって擬似エラーが注入されている場合、誤り位置特定部106が正しくエラーの位置を特定していれば、擬似エラー注入部105が注入した擬似エラーの位置においてエラーが検出されるはずである。そこで、誤り位置特定部106によって誤り位置が特定されると、擬似エラーの位置と比較するために、誤り位置が判定部108へ通知される。また、データと誤り位置の情報は、誤り訂正部107へも出力される。
判定部108に誤り位置が通知されると、判定部108によって、誤り位置が擬似エラー注入部105から報告された擬似エラーの位置と比較される(ステップS108)。この比較の結果、誤り位置が擬似エラーの位置と一致していれば(ステップS108Yes)、誤り位置特定部106が正常に機能しており、誤り訂正回路の正当性が保証されると判断され、誤り訂正の続行が誤り訂正部107に対して指示される。
そして、誤り訂正部107によって、誤り位置特定部106から出力されたデータにおいて誤り位置のビットが反転されることにより、データの誤り訂正が行われる(ステップS109)。誤り訂正後のデータは、誤り訂正部107から接続部101経由で命令処理部300へ出力され、読み出し命令に応じたデータの読み出し処理が完了する。
一方、誤り位置と擬似エラーの位置との比較の結果、誤り位置が擬似エラーの位置と一致していなければ(ステップS108No)、誤り位置特定部106が正常に機能しておらず、誤り訂正回路による誤り訂正によってデータにさらなるエラーが生じると判断され、誤り訂正回路が故障している旨の判定結果が接続部101経由で命令処理部300へ出力され、誤り訂正回路の故障が通知される(ステップS110)。誤り訂正回路の故障が命令処理部300へ通知されることにより、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
次に、本実施の形態に係るキャッシュ制御部100のストア処理時の動作について、図4に示すフロー図を参照しながら説明する。なお、図4において、図3と同じ部分には同じ符号を付し、その詳しい説明を省略する。
まず、命令処理部300からキャッシュ制御部100へデータのストア命令が出されると(ステップS201)、ストア命令は、接続部101を介して読出指示部102へ入力される。そして、読出指示部102によって、書き換えられるストアデータ以外のデータであるストア対象外データのアドレスが読出部104へ指示されるとともに、ストア処理が実行される旨がカウンタ部103へ通知される(ステップS202)。
そして、読出部104によって、アドレスを指示されたストア対象外データがキャッシュ200から読み出されるとともに(ステップS203)、ストア処理実行の旨が通知されると、カウンタ部103によって、2回目のストア対象外データ読み出し時に擬似エラーを注入するよう擬似エラー注入部105へ指示が出される。このため、読出部104によって今回読み出されたストア対象外データは、擬似エラー注入部105による処理を受けることなく、誤り位置特定部106によって誤り位置が特定され、特定された誤り位置のビットが誤り訂正部107によって反転されることにより誤り訂正が行われる(ステップS204)。
この誤り訂正回路における誤り訂正の過程で、ストア対象外データにエラーがないことが確認されると、ストアデータ取得部111によって、命令処理部300から接続部101へ出力されたストアデータが取得され、ストアデータは、キャッシュ200への書き込み指示とともに書込部112へ出力され、書込部112によってデータのストアが行われる(ステップS205)。また、ストアデータは、ストアデータ取得部111からECC生成部109へ出力される。
書込部112によるデータのストアが完了すると、読出部104によって再度ストア対象外データがキャッシュ200から読み出される(ステップS206)。そして、読み出されたストア対象外データは、擬似エラー注入部105へ出力され、今回の読み出しが2回目であるため、擬似エラー注入部105によって擬似エラーが注入される(ステップS106)。また、擬似エラーが注入された位置は、判定部108へ報告される。
そして、擬似エラーが注入されたストア対象外データは、誤り訂正回路内の誤り位置特定部106によってECCが用いられることにより、エラーが発生している誤り位置が特定され(ステップS107)、誤り位置が判定部108および誤り訂正部107へ通知される。判定部108に誤り位置が通知されると、判定部108によって、誤り位置が擬似エラー注入部105から報告された擬似エラーの位置と比較される(ステップS108)。この比較の結果、誤り位置が擬似エラーの位置と一致していれば(ステップS108Yes)、誤り位置特定部106が正常に機能しており、誤り訂正回路の正当性が保証されると判断され、誤り訂正の続行が誤り訂正部107に対して指示される。
そして、誤り訂正部107によって、誤り位置特定部106から出力されたストア対象外データにおいて誤り位置のビットが反転されることにより、ストア対象外データの誤り訂正が行われる(ステップS109)。誤り訂正後のストア対象外データは、誤り訂正部107からECC生成部109へ出力される。
これにより、ECC生成部109には、ストアデータおよびストア対象外データが入力され、ECC生成部109によって、ストアデータのECCおよびストア対象外データのECCが生成される(ステップS207)。これらのECCは、ECC合成部110によって合成(マージ)され(ステップS208)、ストア処理後のデータのECCが得られる。そして、ストア処理後のデータのECCは、書込部112によって、キャッシュ200内のECCRAMに書き込まれ、ストア命令に応じたデータのストア処理およびストア処理に応じたECCの更新が完了する。
一方、誤り位置と擬似エラーの位置との比較の結果、誤り位置が擬似エラーの位置と一致していなければ(ステップS108No)、誤り位置特定部106が正常に機能しておらず、誤り訂正回路による誤り訂正によってストア対象外データにさらなるエラーが生じ、正しいECCが生成されないと判断され、誤り訂正回路が故障している旨の判定結果が接続部101経由で命令処理部300へ出力され、誤り訂正回路の故障が通知される(ステップS110)。誤り訂正回路の故障が命令処理部300へ通知されることにより、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
以上のように、本実施の形態によれば、所定数の読み出し命令が出されるたび、またはストア命令が出されるたびに、キャッシュから読み出されるデータに擬似エラーを注入し、擬似エラーが注入されたデータの誤り位置を誤り訂正回路にて特定し、特定された誤り位置が擬似エラーの位置と一致するか否か判定する。このため、誤り位置と擬似エラーの位置が一致すれば誤り訂正回路が正常に機能していると判断することができる一方、誤り位置と擬似エラーの位置が一致しなければ誤り訂正回路の故障と判断することができ、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる
なお、上記一実施の形態においては、キャッシュメモリからのデータの読み出し時に擬似エラーを注入するものとしたが、その他の種々のメモリからのデータの読み出し時に擬似エラーを注入し、誤り訂正回路の正当性を検証することもできる。また、キャッシュメモリが例えばセットアソシアティブ方式で構成されており、複数のウェイを有する場合には、擬似エラー注入時にいずれか1つのウェイを指定し、指定されたウェイのデータに擬似エラーを注入するようにしても良い。
本発明は、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証する場合に適用することができる。
本発明は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御装置およびメモリ制御方法に関し、特に、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができるメモリ制御装置およびメモリ制御方法に関する。
近年、半導体技術の微細化および高速化に伴って、CPU(Central Processing Unit:中央処理演算装置)などのプロセッサに搭載されるRAM(Random Access Memory)の記憶素子も微細化したため、RAMに記憶される情報においてビット反転などの故障が発生することがある。このため、故障に自動的に対処する方法として、RAS(Reliability, Availability, Serviceability:信頼性、可用性、保守性)制御に関する検討が盛んに行われている。
RAS制御においては、例えばECC(Error Correcting Code:誤り訂正符号)を用いた誤り訂正技術などが重要な役割を担っている。一般的な誤り訂正技術においては、誤り訂正回路によってデータに付加されているECCが用いられ、データに発生したビット反転などの誤りが訂正される。このような誤り訂正においては、誤り訂正回路が正しく動作することが前提となっているため、誤り訂正回路の信頼性を担保する必要がある。
そこで、RAMにデータが書き込まれる際に、データに故意にエラーを発生させておき、このデータに対する誤り訂正を実行することにより、誤り訂正回路が正しく動作しているか否かが検証されることがある。また、例えば特許文献1では、RAMの特定のアドレスに正常なデータを書き込む一方で、正常なデータが書き込まれるアドレスを反転させたアドレスにエラーがあるエラーデータを書き込み、反転アドレスに書き込まれたエラーデータを用いて誤り訂正回路の試験を行うことが開示されている。
しかしながら、上記の技術では、RAMにデータが書き込まれる際にのみ故意にエラーを発生させるため、RAMがCPUのキャッシュメモリとして使用される場合には、例えばエラーを発生させたデータが読み出される前に書き換えられたりして、必ずしも誤り訂正回路の信頼性が保証されないという問題がある。すなわち、上述した誤り訂正回路の試験においては、RAMに書き込むデータにエラーを発生させ、このエラーデータに対する読み出し要求が発行されて誤り訂正を実行したときに、エラーが正しく検出または訂正されることが確認されるため、読み出し要求が発行される前にエラーデータが書き換えられてしまえば、読み出し時に読み出されるのはエラーデータではなくなってしまう。
したがって、例えばキャッシュメモリにエラーデータが書き込まれてから読み出されるまでの間隔が比較的長い場合は、誤り訂正回路が正しく動作しているか否かを定期的に検証することができるとは限らず、結果としてRAS制御の正当な機能が保証されない。
本発明はかかる点に鑑みてなされたものであり、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができるメモリ制御装置およびメモリ制御方法を提供することを目的とする。
上記課題を解決するために、メモリ制御装置は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御装置であって、前記メモリからデータを読み出す読出手段と、前記読出手段によって読み出されたデータに擬似エラーを注入する注入手段と、前記注入手段によって擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定する特定手段と、前記特定手段によって特定された誤り位置と前記注入手段によって注入された擬似エラーの位置とが一致するか否かを判定する判定手段と、前記判定手段による判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する出力手段とを有する構成を採る。
また、メモリ制御装置は、上記構成において、前記注入手段は、前記読出手段によってデータが読み出される回数をカウントするカウント手段を含み、前記カウント手段によってカウントされた回数が所定回数に達するごとにデータに擬似エラーを注入する構成を採る。
また、メモリ制御装置は、上記構成において、前記注入手段は、前記読出手段によって読み出されたデータの所定のビットを反転させることにより擬似エラーを注入する構成を採る。
また、メモリ制御装置は、上記構成において、前記判定手段による判定の結果、誤り位置と擬似エラーの位置とが一致しない場合に、前記特定手段を含む誤り訂正回路が故障している旨を外部に通知する通知手段をさらに有する構成を採る。
また、メモリ制御装置は、上記構成において、前記特定手段は、データに付加されている誤り訂正符号を用いて誤り位置を特定する構成を採る。
また、メモリ制御装置は、上記構成において、前記出力手段は、誤り位置のビットを反転させてエラーを訂正する誤り訂正手段を含む構成を採る。
また、メモリ制御装置は、上記構成において、前記読出手段は、前記メモリに記憶されたデータの一部を書き換えるストア処理が行われる際に、書き換えられることがないストア対象外データを前記メモリから読み出す構成を採る。
また、メモリ制御装置は、上記構成において、前記注入手段は、ストア処理の開始後2回目に前記読出手段によって読み出されたストア対象外データに擬似エラーを注入する構成を採る。
また、メモリ制御装置は、上記構成において、前記出力手段によって出力されるストア対象外データおよび書き換え後のストアデータそれぞれの誤り訂正符号を生成する生成手段と、前記生成手段によって生成されたストア対象外データの誤り訂正符号およびストアデータの誤り訂正符号を合成する合成手段と、前記合成手段によって合成されて得られた誤り訂正符号を前記メモリに書き込む書込手段とをさらに有する構成を採る。
また、メモリ制御装置は、上記構成において、前記注入手段は、前記メモリが複数のウェイに分割されている場合、いずれか1つのウェイに対応するデータに擬似エラーを注入する構成を採る。
また、メモリ制御方法は、データを記憶するメモリにおけるデータの入出力を制御するメモリ制御方法であって、前記メモリからデータを読み出す読出工程と、前記読出工程にて読み出されたデータに擬似エラーを注入する注入工程と、前記注入工程にて擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定する特定工程と、前記特定工程にて特定された誤り位置と前記注入工程にて注入された擬似エラーの位置とが一致するか否かを判定する判定工程と、前記判定工程における判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する出力工程とを有するようにした。
本発明によれば、メモリからデータを読み出し、読み出されたデータに擬似エラーを注入し、擬似エラーが注入されたデータ中のエラーが発生している誤り位置を特定し、特定された誤り位置と注入された擬似エラーの位置とが一致するか否かを判定し、判定の結果、誤り位置と擬似エラーの位置とが一致する場合に、誤り位置のエラーが訂正されたデータを出力する。このため、データの読み出し時に擬似エラーを含むエラーの訂正が正常に行われることが確認された場合のみデータを出力し、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる。
また、本発明によれば、データが読み出される回数をカウントし、カウントされた回数が所定回数に達するごとにデータに擬似エラーを注入するため、メモリへのデータの書き込みが行われずデータの読み出しが連続して実行される場合でも、定期的に誤り訂正回路の正当性を検証することができる。
また、本発明によれば、読み出されたデータの所定のビットを反転させることにより擬似エラーを注入するため、読み出された元のデータとは必ず異なるビットが発生し、確実に擬似エラーを注入することができる。
また、本発明によれば、判定の結果、誤り位置と擬似エラーの位置とが一致しない場合に、誤り訂正回路が故障している旨を外部に通知するため、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
また、本発明によれば、データに付加されている誤り訂正符号を用いて誤り位置を特定するため、データ中のエラーが発生しているビットを特定し、確実に誤り位置を特定することができる。
また、本発明によれば、誤り位置のビットを反転させてエラーを訂正するため、誤っているビットが正しいビットに変更され、エラーがないデータを得ることができる。
また、本発明によれば、メモリに記憶されたデータの一部を書き換えるストア処理が行われる際に、書き換えられることがないストア対象外データをメモリから読み出すため、ストア対象外データの誤り訂正が正しく行われることを担保することができる。
また、本発明によれば、ストア処理の開始後2回目に読み出されたストア対象外データに擬似エラーを注入するため、ストア処理に伴う誤り訂正符号の更新に用いられるストア対象外データの誤り訂正が正しく行われることを担保することができ、正確な誤り訂正符号の更新を行うことができる。
また、本発明によれば、出力されるストア対象外データおよび書き換え後のストアデータそれぞれの誤り訂正符号を生成し、生成されたストア対象外データの誤り訂正符号およびストアデータの誤り訂正符号を合成し、合成されて得られた誤り訂正符号をメモリに書き込む。このため、ストア処理によってデータの一部が書き換えられても、正常に動作する誤り訂正回路によって誤り訂正されたデータを元に誤り訂正符号が更新され、正確な誤り訂正符号の更新を行うことができる。
また、本発明によれば、メモリが複数のウェイに分割されている場合、いずれか1つのウェイに対応するデータに擬似エラーを注入するため、メモリが例えばセットアソシアティブ方式のキャッシュメモリである場合にも、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる。
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。以下においては、CPUにキャッシュメモリが1つのみ備えられている場合を例に挙げて説明するが、本発明はこれに限定されず、2次以上のキャッシュメモリがある場合にも、それぞれのキャッシュメモリに対応する誤り訂正回路の検証に適用することができる。
図1は、本発明の一実施の形態に係るCPUの概略構成を示すブロック図である。図1に示すCPUは、キャッシュ制御部100、キャッシュ200、命令処理部300、および演算処理部400を有している。また、このCPUは、メインメモリ500に接続されている。
キャッシュ制御部100は、命令処理部300から発行される命令に応じて、キャッシュ200に対するデータの書き込みおよび読み出しを制御する。また、キャッシュ制御部100は、キャッシュ200から読み出されたデータの誤り訂正を行うとともに、データの誤り訂正を行う誤り訂正回路が正しく機能しているか否かを判定する。キャッシュ制御部100の具体的な構成については、後に詳述する。
キャッシュ200は、メインメモリ500上の頻繁に使用されるデータを記憶するとともに、記憶されたデータに付加されるECC(Error Correcting Code)を記憶する。具体的には、キャッシュ200は、データを記憶するデータRAMおよびECCを記憶するECCRAMを有しており、それぞれのRAMにデータおよびECCを記憶する。なお、キャッシュ200は、データのタグ情報を記憶するタグRAMなどをさらに有していても良い。
命令処理部300は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部400に指示するとともに、必要なデータの読み出しおよび書き込みをキャッシュ制御部100へ指示する。演算処理部400は、命令処理部300からの指示に応じて、キャッシュ200などから読み出されたデータを用いた演算処理を行う。
メインメモリ500は、主記憶装置であって、CPUにおける処理に必要なデータやプログラムを記憶している。メインメモリ500は、キャッシュ200と比較すると大容量であるが、アクセス速度が遅い。
図2は、本実施の形態に係るキャッシュ制御部100の要部構成を示すブロック図である。同図に示すキャッシュ制御部100は、接続部101、読出指示部102、カウンタ部103、読出部104、擬似エラー注入部105、誤り位置特定部106、誤り訂正部107、判定部108、ECC生成部109、ECC合成部110、ストアデータ取得部111、および書込部112を有している。
接続部101は、命令処理部300と接続され、命令処理部300からのデータの読み出し命令などの命令および書き換えられたストアデータを読出指示部102へ通知する一方、キャッシュ200から読み出されたデータおよび誤り訂正回路が正しく機能しているか否かの判定結果を命令処理部300へ出力する。
読出指示部102は、命令処理部300からデータの読み出し命令またはストア命令が出された場合、その旨をカウンタ部103へ通知するとともに、読み出すデータのアドレスを読出部104へ指示する。
カウンタ部103は、読出指示部102から読み出し命令の通知を受けた回数をカウントし、カウンタ値が所定のしきい値に達すると擬似エラー注入部105へ擬似エラー注入を指示するとともにカウンタ値をリセットする。また、カウンタ部103は、読出指示部102からストア命令の通知を受けると、2回目のデータ読み出し時に擬似エラー注入をするよう擬似エラー注入部105へ指示する。ストア処理時には、ストアデータがストアされる前に、書き換えられることがないストア対象外データが一旦キャッシュ200から読み出されて(1回目のデータ読み出し)エラー検出が行われ、エラーがなければストアデータがストアされ、次いでストア対象外データがキャッシュ200から再び読み出されて(2回目のデータ読み出し)、ストアデータとともにECCの生成が行われる。このため、カウンタ部103は、2回目のデータ読み出し時に擬似エラー注入を指示する。
読出部104は、読出指示部102から指示されるアドレスのデータをキャッシュ200から読み出し、擬似エラー注入部105へ出力する。具体的には、読出部104は、命令処理部300から出される読み出し命令に含まれるアドレスのデータ、または、ストア命令に含まれるアドレスのストア対象外データを読み出す。
擬似エラー注入部105は、カウンタ部103から擬似エラー注入が指示されると、読出部104から出力されるデータに擬似エラーを注入する。具体的には、擬似エラー注入部105は、読出部104から出力されるデータの所定のビットを反転させることにより、擬似エラーを注入する。上述したように、カウンタ部103からの擬似エラー注入の指示は、所定数の読み出し命令が出された場合やストア命令が出された場合に行われるため、擬似エラー注入部105は、少なくとも所定数の読み出し命令が出されるごとに1回擬似エラーを注入することになる。また、擬似エラー注入部105は、擬似エラーを注入した位置を判定部108へ報告する。
誤り位置特定部106は、データに付加されているECCを用いて、データ中のエラーが発生しているビットの位置を特定し、特定された誤り位置を誤り訂正部107および判定部108へ通知する。
誤り訂正部107は、誤り訂正を続行する旨が判定部108から指示された場合、誤り位置特定部106から通知された誤り位置のビットを反転させて、データ中の誤りを訂正する。そして、誤り訂正部107は、誤り訂正後のデータを接続部101またはECC生成部109へ出力する。すなわち、誤り訂正部107は、命令処理部300から読み出し命令が出された場合は、誤り訂正後のデータを接続部101へ出力し、ストア命令が出された場合は、誤り訂正後のストア対象外データをECC生成部109へ出力する。なお、誤り位置特定部106および誤り訂正部107は、本実施の形態における誤り訂正回路を形成している。
判定部108は、擬似エラー注入部105から報告された擬似エラーの注入位置と誤り位置特定部106から通知された誤り位置とが一致するか否かを判定し、両者が一致すれば、誤り位置特定部106による誤り位置の特定が正確であると判断し、誤り訂正続行を誤り訂正部107へ指示する。また、判定部108は、擬似エラー注入位置と誤り位置とが一致しない場合、誤り位置特定部106に故障が発生していると判定し、誤り訂正回路が故障している旨の判定結果を接続部101へ出力する。
ECC生成部109は、誤り訂正部107から出力されるストア対象外データおよびストアデータ取得部111から出力されるストアデータそれぞれについてECCを生成し、それぞれのECCをECC合成部110へ出力する。
ECC合成部110は、ECC生成部109から出力されるストア対象外データのECCとストアデータのECCとを合成(マージ)することにより、データの一部が書き換えられるストア処理が行われた場合の新たなECCを生成し、書込部112へ出力する。
ストアデータ取得部111は、命令処理部300からストア命令が出された場合に、書き換えられたストアデータを接続部101から取得し、ECC生成部109および書込部112へ出力する。
書込部112は、ストアデータ取得部111から出力されるストアデータをキャッシュ200へ書き込む。また、書込部112は、ECC合成部110から出力される新たなECCをキャッシュ200へ書き込む。
次いで、上記のように構成されたキャッシュ制御部100の読み出し処理時の動作について、図3に示すフロー図を参照しながら説明する。
まず、初期状態では、カウンタ部103のカウンタ値が0にリセットされている(ステップS101)。このとき、命令処理部300からキャッシュ制御部100へデータの読み出し命令が出されると(ステップS102)、読み出し命令は、接続部101を介して読出指示部102へ入力される。そして、読出指示部102によって、読み出すデータのアドレスが読出部104へ指示されるとともに、読み出し処理が実行される旨がカウンタ部103へ通知される。
そして、読出部104によって、指示されたアドレスのデータがキャッシュ200から読み出されるとともに(ステップS103)、読み出し処理実行の旨が通知されると、カウンタ部103によってカウンタ値が1インクリメントされる(ステップS104)。カウンタ値が1インクリメントされると、カウンタ部103によって、カウンタ値が所定のしきい値に達したか否かが判定される(ステップS105)。
この判定の結果、カウンタ値が所定のしきい値に達していない場合(ステップS105No)、読出部104によってキャッシュ200から読み出されたデータは、擬似エラー注入部105を経由して誤り訂正回路へ出力され、誤り位置特定部106によってエラーの位置が検出され、誤り訂正部107によってエラーが検出された位置のビットが反転されることにより誤り訂正が行われ(ステップS109)、誤り訂正後のデータが接続部101を介して命令処理部300へ出力される。すなわち、カウンタ部103のカウンタ値が所定のしきい値に達していない場合は、誤り訂正回路が正常に機能しているという前提の下でデータの誤り訂正が行われ、読み出し処理が実行される。そして、この読み出し処理の実行後、命令処理部300による次の読み出し命令が待機される。
ここでは、再び命令処理部300からキャッシュ制御部100へデータの読み出し命令が出された(ステップS102)ものとして説明を続ける。この場合も、読み出し命令は、接続部101を介して読出指示部102へ入力され、読出指示部102からの指示により、読出部104によってデータがキャッシュ200から読み出されるとともに(ステップS103)、カウンタ部103によってカウンタ値が1インクリメントされる(ステップS104)。そして、カウンタ部103によって、カウンタ値が所定のしきい値に達したか否かが判定される(ステップS105)。
この判定の結果、カウンタ値が所定のしきい値に達した場合(ステップS105Yes)、カウンタ部103から擬似エラー注入部105に対して、データに擬似エラーを注入する旨の指示が出され、読出部104によってキャッシュ200から読み出されたデータが擬似エラー注入部105へ出力されると、擬似エラー注入部105によって、データに擬似エラーが注入される(ステップS106)。この擬似エラーは、擬似エラー注入部105によって、データの所定のビットが反転されることによって注入される。擬似エラー注入部105によって擬似エラーが注入された位置は、判定部108へ報告される。
ここで、擬似エラー注入部105によるキャッシュ200から読み出されたデータへの擬似エラーの注入は、カウンタ部103のカウンタ値が所定のしきい値に達するたびに、換言すれば、命令処理部300から出される読み出し命令の数が所定数に達するたびに実行されるため、命令処理部300から連続して読み出し命令が出されても、定期的に誤り訂正回路の正当性を検証することができ、RAS制御の正当な機能を保証することができる。
そして、擬似エラーが注入されたデータは、誤り訂正回路内の誤り位置特定部106へ出力され、誤り位置特定部106によって、データに付加されたECCが用いられることにより、エラーが発生している誤り位置が特定される(ステップS107)。ここで、擬似エラー注入部105によって擬似エラーが注入されている場合、誤り位置特定部106が正しくエラーの位置を特定していれば、擬似エラー注入部105が注入した擬似エラーの位置においてエラーが検出されるはずである。そこで、誤り位置特定部106によって誤り位置が特定されると、擬似エラーの位置と比較するために、誤り位置が判定部108へ通知される。また、データと誤り位置の情報は、誤り訂正部107へも出力される。
判定部108に誤り位置が通知されると、判定部108によって、誤り位置が擬似エラー注入部105から報告された擬似エラーの位置と比較される(ステップS108)。この比較の結果、誤り位置が擬似エラーの位置と一致していれば(ステップS108Yes)、誤り位置特定部106が正常に機能しており、誤り訂正回路の正当性が保証されると判断され、誤り訂正の続行が誤り訂正部107に対して指示される。
そして、誤り訂正部107によって、誤り位置特定部106から出力されたデータにおいて誤り位置のビットが反転されることにより、データの誤り訂正が行われる(ステップS109)。誤り訂正後のデータは、誤り訂正部107から接続部101経由で命令処理部300へ出力され、読み出し命令に応じたデータの読み出し処理が完了する。
一方、誤り位置と擬似エラーの位置との比較の結果、誤り位置が擬似エラーの位置と一致していなければ(ステップS108No)、誤り位置特定部106が正常に機能しておらず、誤り訂正回路による誤り訂正によってデータにさらなるエラーが生じると判断され、誤り訂正回路が故障している旨の判定結果が接続部101経由で命令処理部300へ出力され、誤り訂正回路の故障が通知される(ステップS110)。誤り訂正回路の故障が命令処理部300へ通知されることにより、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
次に、本実施の形態に係るキャッシュ制御部100のストア処理時の動作について、図4に示すフロー図を参照しながら説明する。なお、図4において、図3と同じ部分には同じ符号を付し、その詳しい説明を省略する。
まず、命令処理部300からキャッシュ制御部100へデータのストア命令が出されると(ステップS201)、ストア命令は、接続部101を介して読出指示部102へ入力される。そして、読出指示部102によって、書き換えられるストアデータ以外のデータであるストア対象外データのアドレスが読出部104へ指示されるとともに、ストア処理が実行される旨がカウンタ部103へ通知される(ステップS202)。
そして、読出部104によって、アドレスを指示されたストア対象外データがキャッシュ200から読み出されるとともに(ステップS203)、ストア処理実行の旨が通知されると、カウンタ部103によって、2回目のストア対象外データ読み出し時に擬似エラーを注入するよう擬似エラー注入部105へ指示が出される。このため、読出部104によって今回読み出されたストア対象外データは、擬似エラー注入部105による処理を受けることなく、誤り位置特定部106によって誤り位置が特定され、特定された誤り位置のビットが誤り訂正部107によって反転されることにより誤り訂正が行われる(ステップS204)。
この誤り訂正回路における誤り訂正の過程で、ストア対象外データにエラーがないことが確認されると、ストアデータ取得部111によって、命令処理部300から接続部101へ出力されたストアデータが取得され、ストアデータは、キャッシュ200への書き込み指示とともに書込部112へ出力され、書込部112によってデータのストアが行われる(ステップS205)。また、ストアデータは、ストアデータ取得部111からECC生成部109へ出力される。
書込部112によるデータのストアが完了すると、読出部104によって再度ストア対象外データがキャッシュ200から読み出される(ステップS206)。そして、読み出されたストア対象外データは、擬似エラー注入部105へ出力され、今回の読み出しが2回目であるため、擬似エラー注入部105によって擬似エラーが注入される(ステップS106)。また、擬似エラーが注入された位置は、判定部108へ報告される。
そして、擬似エラーが注入されたストア対象外データは、誤り訂正回路内の誤り位置特定部106によってECCが用いられることにより、エラーが発生している誤り位置が特定され(ステップS107)、誤り位置が判定部108および誤り訂正部107へ通知される。判定部108に誤り位置が通知されると、判定部108によって、誤り位置が擬似エラー注入部105から報告された擬似エラーの位置と比較される(ステップS108)。この比較の結果、誤り位置が擬似エラーの位置と一致していれば(ステップS108Yes)、誤り位置特定部106が正常に機能しており、誤り訂正回路の正当性が保証されると判断され、誤り訂正の続行が誤り訂正部107に対して指示される。
そして、誤り訂正部107によって、誤り位置特定部106から出力されたストア対象外データにおいて誤り位置のビットが反転されることにより、ストア対象外データの誤り訂正が行われる(ステップS109)。誤り訂正後のストア対象外データは、誤り訂正部107からECC生成部109へ出力される。
これにより、ECC生成部109には、ストアデータおよびストア対象外データが入力され、ECC生成部109によって、ストアデータのECCおよびストア対象外データのECCが生成される(ステップS207)。これらのECCは、ECC合成部110によって合成(マージ)され(ステップS208)、ストア処理後のデータのECCが得られる。そして、ストア処理後のデータのECCは、書込部112によって、キャッシュ200内のECCRAMに書き込まれ、ストア命令に応じたデータのストア処理およびストア処理に応じたECCの更新が完了する。
一方、誤り位置と擬似エラーの位置との比較の結果、誤り位置が擬似エラーの位置と一致していなければ(ステップS108No)、誤り位置特定部106が正常に機能しておらず、誤り訂正回路による誤り訂正によってストア対象外データにさらなるエラーが生じ、正しいECCが生成されないと判断され、誤り訂正回路が故障している旨の判定結果が接続部101経由で命令処理部300へ出力され、誤り訂正回路の故障が通知される(ステップS110)。誤り訂正回路の故障が命令処理部300へ通知されることにより、例えば誤り訂正回路の自動修復やユーザへの故障通知などの対処を施すことができ、RAS制御の信頼性を向上することができる。
以上のように、本実施の形態によれば、所定数の読み出し命令が出されるたび、またはストア命令が出されるたびに、キャッシュから読み出されるデータに擬似エラーを注入し、擬似エラーが注入されたデータの誤り位置を誤り訂正回路にて特定し、特定された誤り位置が擬似エラーの位置と一致するか否か判定する。このため、誤り位置と擬似エラーの位置が一致すれば誤り訂正回路が正常に機能していると判断することができる一方、誤り位置と擬似エラーの位置が一致しなければ誤り訂正回路の故障と判断することができ、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証することができる
なお、上記一実施の形態においては、キャッシュメモリからのデータの読み出し時に擬似エラーを注入するものとしたが、その他の種々のメモリからのデータの読み出し時に擬似エラーを注入し、誤り訂正回路の正当性を検証することもできる。また、キャッシュメモリが例えばセットアソシアティブ方式で構成されており、複数のウェイを有する場合には、擬似エラー注入時にいずれか1つのウェイを指定し、指定されたウェイのデータに擬似エラーを注入するようにしても良い。
本発明は、定期的かつ確実に誤り訂正回路の正当性を検証し、RAS制御の正当な機能を保証する場合に適用することができる。
図1は、本発明の一実施の形態に係るCPUの概略構成を示すブロック図である。
図2は、一実施の形態に係るキャッシュ制御部の要部構成を示すブロック図である。
図3は、一実施の形態に係るキャッシュ制御部の読み出し処理時の動作を示すフロー図である。
図4は、一実施の形態に係るキャッシュ制御部のストア処理時の動作を示すフロー図である。
符号の説明
100 キャッシュ制御部
101 接続部
102 読出指示部
103 カウンタ部
104 読出部
105 擬似エラー注入部
106 誤り位置特定部
107 誤り訂正部
108 判定部
109 ECC生成部
110 ECC合成部
111 ストアデータ取得部
112 書込部
200 キャッシュ
300 命令処理部
400 演算処理部
500 メインメモリ