メモリコントローラ及び情報処理装置
【課題】読み出しデータの3bitエラーを考慮した上で、訂正可能エラーを判別することを可能にするメモリコントローラ及び情報処理装置を提供する。
【解決手段】ECC機能付きメモリモジュールに接続され、メモリモジュールへのアクセスを制御するメモリコントローラにおいて、メモリモジュールから読み出された複数の読み出しデータについて、読み出しデータに対応するECCの符号情報を、メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、複数の読み出しデータを一時的に格納するバッファと、バッファに格納された複数の読み出しデータに、エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、を備える。
【解決手段】ECC機能付きメモリモジュールに接続され、メモリモジュールへのアクセスを制御するメモリコントローラにおいて、メモリモジュールから読み出された複数の読み出しデータについて、読み出しデータに対応するECCの符号情報を、メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、複数の読み出しデータを一時的に格納するバッファと、バッファに格納された複数の読み出しデータに、エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、メモリコントローラ及び情報処理装置に関する。
【背景技術】
【0002】
近年、情報処理装置の大規模化に伴って、実装されるメモリの容量は増加し、高い信頼性が求められている。大容量のメモリモジュールとして、DIMM(Dual Inline Memory Module)が知られている。DIMM内部には複数のSDRAM(Synchronous Dynamic Random Access Memory)等の記憶素子が搭載されており、これらの記憶素子や伝送路等のDIMM内部の故障が発生する可能性が高まっている。大容量メモリで高い信頼性を維持する為に、メモリの故障箇所を迅速に検出することが要求される。
【0003】
その対策として、基板実装時のデータバスやアドレスバス等の不完全な接続によるメモリ故障を検出する技術が知られている。メモリの故障箇所を検出するための技術として、読み出しデータにECC(Error Check and Correction)コードを付与する方法が開示されている。このECCコードを使用する事により、例えば2ビット以上のエラー検出と1ビットの誤り訂正とを可能にする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−269054号公報
【特許文献2】特開2006−260289号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
最も基本的なハミング符号を利用して読み出しデータのエラー訂正及び検出を行う方法では、読み出しデータの1bitエラーは訂正可能であるが、2bit以上のエラーは訂正不可能であることが知られている。近年、メモリの集積度が上がり、メモリチップ内のメモリセルが小型化される事で、過去のメモリの集積度では発生しなかった複数ビットに渡るデータエラーが発生するようになってきた。そのため、既存のECCコードでは検出能力の限界を越えて、エラーとして検出できなくなるケースが発生するようになった。
【0006】
しかしながら、ハミング符号を使用した場合、3bit以上の読み出しデータのエラーを1bitエラーと誤判定することがある。上記したように、1bitエラーが発生した場合、単にエラー通知するのではなく、訂正可能として処理を行なっていた。しかし、3bit以上のエラーを考慮するようになると、1bitエラーと判定されても、訂正不可能として処理しなければならない。
【0007】
開示の技術は、読み出しデータの3bitエラー以上のエラーを考慮した上で、訂正可能エラーを判別することを可能にするメモリコントローラ及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の課題を解決するため、開示の技術の第1の側面によれば、
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラが提供される。
【発明の効果】
【0009】
開示の技術によれば、メモリコントローラに実装されているECCコードの性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【図面の簡単な説明】
【0010】
【図1】図1は、情報処理装置の構成概略図である。
【図2】図2は、メモリモジュールの構成を説明する為の図である。
【図3】図3は、データの構成図を示す図である。
【図4】図4は、実施例1の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図5】図5Aは、実施例1の情報処理装置におけるECC付加回路の内部構成の一部を説明する為の図である。図5Bは、実施例1の情報処理装置におけるECCチェック回路の内部構成の一部を説明する為の図である。
【図6A】図6Aは、実施例1の情報処理装置におけるハミング符号の生成式の一例である。
【図6B】図6Bは、実施例1の情報処理装置におけるリードデータの故障種類ごとのチェック結果計算値の一例を示す図である。
【図7】図7は、実施例1の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図8】図8は、実施例1の情報処理装置におけるメモリモジュールの故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。
【図9】図9は、実施例1の情報処理装置におけるエラー種類判定フローを示す図である。
【図10】図10は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図11】図11は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図12】図12は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図13】図13は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図14】図14は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図15】図15は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【図16】図16は、実施例2の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図17】図17は、実施例2の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図18】図18は、実施例2の情報処理装置のメモリモジュールにおけるエラーbit位置とSDRAM番号との対比表である。
【図19】図19は、実施例2の情報処理装置のメモリモジュールにおけるエラーbit位置とSDRAM番号との対比表である。
【図20】図20は、実施例2の情報処理装置におけるエラー種類判定フローを示す図である。
【図21】図21は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図22】図22は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図23】図23は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図24】図24は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図25】図25は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図26】図26は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して実施形態を詳細に説明する。図1は、情報処理装置の構成概略図である。情報処理装置の一例として、システムボード1を用いて説明する。システムボード1は、メモリモジュール11a、11b、メモリコントローラ12a、12b、演算処理ユニット(CPU:Central Processing Unit)15a、15b、ノードコントローラ16、IO(Input/Output)ユニット17a、17b、管理LSI18を備える。
【0012】
メモリコントローラ12aは、メモリモジュール11aとCPU15aに接続される。メモリコントローラ12aは、CPU15aからのリードコマンドやライトコマンド等を受信して、メモリモジュール11aに対するメモリ制御を行う。
【0013】
メモリコントローラ12bは、メモリモジュール11bとCPU15bに接続される。メモリコントローラ12bは、CPU15bからのリードコマンドやライトコマンド等を受信して、メモリモジュール11bに対するメモリ制御を行う。
【0014】
ノードコントローラ16は、自己のシステムボード1内の複数のCPU15a、15bや複数のIOユニット17a、17bに接続し、他のシステムボードや外部の情報機器に対する通信制御を行う。
【0015】
管理LSI18は、システムボード1内の各回路に接続し、各回路の動作状況を監視する。さらに、管理LSI18は、ユーザの仕様により各回路のメンテナンスを行う制御機能を持たせることができる。
【0016】
図2は、メモリモジュールの構成を説明する為の図である。メモリモジュール11aの一例としてDIMM(Dual Inline Memory Module)が挙げられる。本実施例では、標準化された規格であるDDR3に準拠するDIMM21を備えた大容量メモリモジュールを用いて説明する。なお、メモリモジュール11bについても同様の構成であり、説明は省略する。
【0017】
DIMM21hはDIMM21が故障した際に代替として用いられる予備のDIMMである。DIMM21は、n個のRANK23−0〜23−n−1を備える。
【0018】
また、RANK23−1〜23−n−1には、それぞれ複数の記憶素子が並列配置される。例えば、RANK23−0にはm個のSDRAM24−0〜24−m−1(mは整数)が並列配置される。同様に、DIMM21hも複数のRANKを備える。
【0019】
なお、本実施形態において、メモリモジュールはRANK単位で管理される為、RANKを単位メモリ領域として説明する。なお、例えば、SDRAM単位でアドレスが管理される別種のメモリモジュールを使用する場合にはSDRAMを単位メモリ領域とすることもできる。
【0020】
メモリコントローラ12aは、CPU15aから、例えば、DIMM21へのデータのリードコマンドやライトコマンド等を受信すると、メモリインタフェース27のコマンド/アドレスバス28を介してコマンド及びアドレス信号をDIMM21へ伝送する。
【0021】
そして、DIMM21内において、信号バス28aを経由してRANKを指定するチップセレクト信号(CS:Chip Select)が各RANK23−0〜23−n−1に対して伝送される。また、信号バス28bを経由して、SDRAM内のどの位置にアクセスするかを指定するメモリアドレス(MA:Memory Address)及びバンクアドレス(BA:Bank Address)を含むRANK内アドレスが各SDRAM24−0〜24−m−1に対して伝送される。
【0022】
データバス29を経由して伝送されたライトデータは、DIMM21内のデータバス29aを経由して各SDRAM24−0〜24−m−1へ伝送される。また、各SDRAM24−0〜24−m−1からのリードデータは、DIMM21内のデータバス29a、メモリインタフェース27のデータバス29を経由して、メモリコントローラ12aに伝送される。
【0023】
図3は、データの構成図を示す図である。図3に示すように、データは、Error Check and Correction(ECC)コード及びデータ本体部を有する。ECCコードは、データのエラー検出を行うために用いられるコードで、データ本体部を基に生成されたエラー訂正符号である。
【0024】
エラー訂正符号は、例えばSEC/DED(Single Error Correct/Double Error Detect)方式のハミング符号を用いる。この符号は、2ビット以上のエラー検出と1ビットの誤り訂正とを可能にするものである。もし、訂正可能エラー(CE:Correctable Error)が発生すると、図4で後述するECCチェック回路32においてデータビットのエラーが発生した箇所が訂正される。又、訂正と同時に、図4で後述するメモリコントローラ22を介してCPU15aにデータが送付される。もし、訂正不可能エラー(UE:Uncorrectable Error)が検出されると、エラー信号を介して訂正不可能エラーが発生したことが、図4で後述するメモリコントローラ22を介してCPU15a及び管理LSI18へ通知される。
【0025】
図4は、実施例1の情報処理装置におけるメモリコントローラ22の内部構成を説明する為の図である。図4は、図2で説明したメモリコントローラ12aの一例であるメモリコントローラ22を示す。
【0026】
メモリコントローラ22は、ECC付加回路31、ECCチェック回路32、コマンド/アドレスバッファ(C/A BUFFER)33a、ライトバッファ(WRITE BUFFER)33b、リードバッファ(READ BUFFER)33c、エラー照合回路34及びデータ破棄回路35を備える。
【0027】
ECC付加回路31は、CPU15aから伝送されたライトデータにECCコードを付加する。
【0028】
ライトバッファ33bは、ECCコードが付加されたライトデータを一時的に格納する。ECCコードが付加されたライトデータは、ライトバッファ33bに一時記憶された後、所定のクロックに同期しながらデータバス29を経由してDIMM21の指定のライトアドレスに伝送される。
【0029】
また、メモリコントローラ22は、CPU15aからのライトコマンドとアドレス信号を受信すると、これらをコマンド/アドレスバッファ33aに一時的に格納する。そして、ライトコマンドとアドレス信号は、所定のクロックに同期しながらコマンド/アドレスバス28を経由してDIMM21に伝送される。
【0030】
ECCチェック回路32には、リード対象のDIMM21から読み出されたリードデータが、所定のクロックに同期しながらデータバス29を経由して入力される。ECCチェック回路32は、リードデータのエラー検出及び訂正と、リードデータのエラー種類及びエラービットの位置確認を行う。ECCチェック回路32は、リードデータのエラー検出及び訂正を行った後、リードデータをリードバッファ(READ BUFFER)33cに伝送する。次いで、ECCチェック回路32は、リードデータのエラー種類情報及びエラービットの位置情報を、エラー照合回路34に伝送する。
【0031】
リードバッファ33cは、ECCチェック回路32から伝送されたリードデータを一時的に格納する。リードバッファ33cは、後述するエラー照合回路34からのエラーの種類の判定タイミングに合わせて、格納されたリードデータをデータ破棄回路35に伝送する。
【0032】
エラー照合回路34は、所定のクロックに同期しながら検出したエラー種類情報(エラー無し/複数ビットエラー/1ビットエラー)と1ビットエラーが発生して訂正を行ったエラービットの位置情報を一時的に格納する。エラー照合回路34は、一時的に格納されたエラー種類情報とエラービットの位置情報を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路34は、エラーの種類の判定結果に基づいて、データ破棄回路35にデータの破棄命令を出力する。そして、エラー照合回路34は、判定したエラー報告を、CPU15a及び管理LSI18に出力する。即ち、エラー照合回路34は、リードバッファ33cに格納された複数の読み出しデータに、検出部によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【0033】
データ破棄回路35は、エラー照合回路34から出力されたデータ破棄命令に従って、リードバッファ33cから伝送されたリードデータを破棄する。データ破棄回路35は、リードデータ有効信号を“0”にすることにより、リードデータを無効にすることができる。エラー照合回路34からデータの破棄命令が出力されなかった場合、データ破棄回路35は、リードバッファ33cから伝送されたリードデータを、そのままCPU15aに伝送する。
【0034】
なお、訂正可能エラー/訂正不可能エラーの報告を受けた場合の、CPU15aの一般的な動作を説明する。訂正可能エラーの報告を受けた場合、CPU15aは、訂正可能エラーの発生回数を数えるカウンタを持ち、回数が一定値以上に達した場合にユーザへの警告や予備のDIMM21hへの切り替えなどの対処を実行する。一方、訂正不可能エラーの報告を受けた場合、CPU15aはREADリトライと呼ばれるシーケンスによって同一アドレスへの再リードを試みる。それでもエラーが回復しない場合、CPU15aは、READされたデータが使用される前にプログラムの終了処理やシャットダウン処理を行ってエラーデータによる異常動作を回避する。
【0035】
図5A及び図5Bは、実施例1の情報処理装置におけるECC付加回路31及びECCチェック回路32の内部構成の一部を説明する為の図である。図5A及び図5Bは、64ビットのライドデータ及び64ビットのリードデータを例に挙げて説明する。なお、図5A及び図5Bにおいて、図1〜図4で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0036】
図5Aに示すように、ECC付加回路31は、排他的論理回路(生成Xor回路)31aを備える。排他的論理回路31aは、CPU15aから伝送された64ビットのライトデータから、8ビットの排他的論理和を生成する。生成された排他的論理和は、データ本体部を基に生成されたエラー訂正符号であるハミング符号として使用される。ECC付加回路31を用いて行われるハミング符号の生成方法は、後述する図6Aを用いて説明する。次いで、ECC付加回路31は、64ビットのライトデータに、生成された8ビットのハミング符号を付加して、ライトバッファ33bに伝送する。即ち、ECC付加回路31は、メモリモジュール11a、11bに書込む複数ビット単位のライトデータについて、ライトデータに対応するハミング符号を生成する。
【0037】
図5Bに示すように、ECCチェック回路32は、排他的論理回路(チェックXor回路)32a、排他的論理回路(比較Xor回路)32b、故障箇所特定回路32c及び訂正回路32dを備える。
【0038】
排他的論理回路32aは、DIMM21から伝送された64ビットのリードデータの排他的論理和を求め、リードデータのエラーチェック用のハミング符号を生成する。このハミング符号の生成には、ECC付加回路31と同一の論理を使用する。リードデータのエラーが無ければ、排他的論理和の計算結果は、書込時に生成した排他的論理和と同じ値になる。排他的論理回路32aは、生成したハミング符号を排他的論理回路32bに伝送する。
【0039】
排他的論理回路32bは、ライト時に排他的論理回路31aによって生成されて読み出しデータに付加された8ビットのハミング符号と、リード時に排他的論理回路32aによって生成された8ビットのハミング符号を比較する。具体的には、排他的論理回路32bは、読み出しデータに付加された8ビットのハミング符号と排他的論理回路32aによって生成された8ビットのハミング符号との排他的論理和を求める。排他的論理回路32bは、求めた排他的論理和を8ビットのチェック結果として、故障箇所特定回路32cに伝送する。
【0040】
故障箇所特定回路32cは、排他的論理回路32bから伝送された8ビットのチェック結果に基づいて、リードデータ全体の故障の種類及び故障箇所を特定する。故障箇所特定回路32cを用いて行われるリードデータ全体の故障の種類及び故障箇所の判断方法は、後述する図6Bを用いて説明する。故障箇所特定回路32cは、特定したリードデータ全体の故障の種類及び故障箇所の情報を、訂正回路32d及びエラー照合回路34に伝送する。即ち、故障箇所特定回路32cは、メモリモジュールから読み出された複数ビット単位の読み出しデータについて、エラービットの位置の検出を行うエラー検出部である。
【0041】
訂正回路32dは、伝送されたリードデータ全体の故障の種類及び故障箇所の情報に基づいて、リードデータのデータ訂正を行う。訂正回路32dは、訂正されたリードデータ
をリードバッファ33cに伝送する。
【0042】
図6Aは、実施例1の情報処理装置におけるハミング符号の生成式の一例である。図6Aに示すように、図5AにおけるECC付加回路31の排他的論理回路31aは、64ビットのライトデータのうち、一部のビットを抜き出して排他的論理和を求めることにより、8ビットのハミング符号を生成する。
【0043】
図6Bは、実施例1の情報処理装置におけるリードデータの故障種類ごとのチェック結果の計算値の一例を示す図である。
【0044】
図6Bに示すように、リードデータの故障が無い場合、チェック結果は全て0となる。また、リードデータに1ビット故障が発生した場合、チェック結果のパターンは、全て0となる以外で他のチェック結果と重複しないパターンとなる。そのため、故障箇所特定回路32cは、チェック結果からビットの故障位置を検出して1ビット故障を訂正することができる。
【0045】
また、2ビット故障が発生した場合、チェック結果のパターンは、全て0の場合、又は1ビット故障時のパターンのいずれの場合にも該当しないものになる。そのため、チェック結果を分析することにより、2ビット故障が発生したことを検出できる。しかし、2ビット故障のチェック結果は重複する場合があるため、1ビット故障時のように、ビットの故障位置を特定することができない。
【0046】
また、3ビット故障が発生した場合、チェック結果のパターンは、全て0となる場合、又は1ビット故障パターンを含む2の8乗通りとなる。そのため、3ビット故障が発生した場合、故障無し、又は1ビット故障と誤判定される場合がある。3ビット故障が1ビット故障と誤判定された場合、ランダムな複数ビットの故障を含むデータが偶然別の1ビットエラーのデータパターンと一致したものであるため、1ビットエラーの位置情報は本来の故障位置と関係ないランダムなビットを示す。
【0047】
実施例1におけるエラー照合回路34は、各サイクルで検出したエラー種類(エラー無し/複数ビットエラー/1ビットエラー)、及び1ビットエラーが発生して訂正を行ったビットの位置情報を一時記憶する。エラー照合回路34は、エラー種類及び訂正を行ったビットの位置情報を照合することによって、データブロック全体としてのエラー種類を判定する。エラー照合回路34を追加することで、1ビットエラーの位置情報が本来の故障位置と関係ないランダムなビットを示した場合でも、エラー検出漏れ及び誤訂正の確率を下げることができる。
【0048】
図7は、実施例1の情報処理装置におけるエラー照合回路34の内部構成を説明する為の図である。エラー照合回路34は、論理積回路34a、インクリメントカウンタ34b、比較回路34c、フリップフロップ34d、1ビットエラー情報比較回路34e、エラー情報レジスタ34f及びエラー種類判定回路34gを備える。
【0049】
論理積回路34aは、ECCチェック回路32からリードデータが伝送されると、リードデータ有効信号のアサートを検出する。信号のアサートとは、信号をハイ(High)レベルにすることを言う。リードデータ有効信号は、ECCチェック回路32によって、8クロックサイクル間アサートされる。
【0050】
インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて比較回路34cに出力する。
【0051】
インクリメントカウンタ34bは、リードデータの受信完了タイミングを知る必要があるため、リードデータ有効信号のアサート時間をカウントする。比較回路34cは、インクリメントカウンタ34bが「111」になったとき、即ちリードデータ有効信号が8回目に「1」となったときに「1」を出力する。論理積回路34aは、リードデータ有効信号と、比較回路34cからの出力の論理積を求める。そして、論理積回路34aは、リードデータ有効信号が8回目に「1」となった時に、フリップフロップ34dに対して「1」を出力する。即ち、論理積回路34aは、インクリメントカウンタ34bのカウンタの値が8になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。
【0052】
フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ有効信号を1クロックサイクル保持した後、1ビットエラー情報比較回路34eの1ビットエラー情報保持レジスタ34e−1及びエラー情報レジスタ34fに伝送する。フリップフロップ34dは、エラー情報レジスタ34fからの読み出しタイミングを1クロックサイクル遅らせ、レジスタへの書込みが完了した後に読み出しが行われることを保証するために備えられている。
【0053】
1ビットエラー情報比較回路34eは、1ビットエラー情報保持レジスタ34e−1及び比較回路34e−2を備える。
【0054】
1ビットエラー情報保持レジスタ34e−1は、ECCチェック回路32から伝送される1ビットエラー情報を一時的に格納する。1ビットエラー情報保持レジスタ34e−1が格納する1ビットエラー情報の原理図は、図10、図12及び図14を用いて後述する。なお、1ビットエラー情報保持レジスタ34e−1は、フリップフロップ34dからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、1ビットエラー情報をクリアする。
【0055】
比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報とを比較する。比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報が不一致の場合、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグに「1」を出力する。なお、1ビットエラー情報保持レジスタ34e−1に1ビットエラー情報が保持されていない時、比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報との比較を行わない。
【0056】
エラー情報レジスタ34fは、ECCチェック回路32から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34fは、ECCチェック回路32から、クロックサイクル毎に伝送される1ビットエラー検出情報が通知されると1ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34fは、比較回路34e−2で1ビットエラー情報の不一致が検出されると1ビットエラー位置不一致検出フラグを「1」にする。なお、エラー情報レジスタ34fは、ECCチェック回路32からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ34fは、フリップフロップ34dからエラー情報レジスタ34fへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ34fからの読み出しを行った時に、エラー情報レジスタ34fが保持する複数ビットエラー検出フラグ、1ビットエラー検出フラグ及び1ビットエラー位置不一致検出フラグは全て「0」に設定される。
【0057】
エラー種類判定回路34gは、エラー情報レジスタ34fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報を読み出す。エラー情報レジスタ34fから出力された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路34gは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路35、CPU15a及び管理LSI18に出力する。即ち、エラー種類判定回路34gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって、1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0058】
図8は、実施例1の情報処理装置におけるメモリモジュールであるDIMM21の故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。図8に示す「1アドレス」とは、DIMM21の1アドレス(8バイトデータ)の範囲に限定して発生する故障を示す。この故障はSDRAM24−0〜24−m−1のデータセル固定故障や宇宙線によるソフトエラーに起因するものが多い。No.1に示したような1ビットの故障は、従来のECCコードで訂正が可能であり、問題とはならない。また、No.2に示したような、1アドレス内のデータで複数ビットが故障するようなケースが発生することは極めて稀である。
【0059】
一方、「複数アドレス」とは、DIMM21の複数のアドレスにデータエラーが発生する故障パターンを示す。この故障はSDRAM24−0〜24−m−1のコマンド/アドレスバス28故障やDIMM21における基板上のコマンド/アドレス配線故障によるものが多い。特にNo.4に示したようなSDRAM故障では、4ビット或いは8ビット幅の故障が複数アドレスにわたって発生し、ハミング符号の検出能力を超えるエラーが頻発することがある。エラー種類判定回路34gは、リードバッファ33cに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるECC付加回路31によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、訂正可能なエラーを含むと判定する。さらに、エラー種類判定回路34gは、1回のリードコマンドでDIMMから読み出されリードバッファ33cに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるECCチェック回路32によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、エラー種類判定回路34gによって訂正不可能なエラーを含むと判定する事を目的とする。以上の構成により、訂正不可能なエラーの検出率を向上させることを目的とする。
【0060】
図9は、実施例1の情報処理装置におけるエラー種類判定フローを示す図である。図9に示す処理は、図7に前述したエラー種類判定回路34gが実行する。なお、図9において、図1〜図8で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0061】
図9において、エラー種類判定回路34gは、エラー情報レジスタ34fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報の読み出しを開始する(OP1)。次いで、エラー種類判定回路34gは、エラー情報レジスタ34fに設定された1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されているか、即ち1ビットエラー又は複数ビットエラーが1回でも発生したか判断する(OP2)。1ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合(OP2 NO)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路35に対して出力する(OP6)。エラー種類判定回路34gは、CPU15a及び管理LSI18に対するエラー報告を実施しない(OP6)。
【0062】
1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されている場合(OP2 YES)、エラー種類判定回路34gは、複数ビットエラー検出フラグが「1」であるか判断する(OP3)。複数ビットエラー検出フラグが「1」に設定されている場合(OP3 YES)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP7)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP7)。
【0063】
複数ビットエラー検出フラグが「1」に設定されていない場合(OP3 NO)、エラー種類判定回路34gは、1ビットエラー位置不一致検出フラグが「1」に設定されているか判断する(OP4)。1ビットエラー位置不一致検出フラグが「1」に設定されている場合(OP4 YES)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP7)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP7)。
【0064】
1ビットエラー位置不一致検出フラグが「1」に設定されていない場合(OP4 NO)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路35に対して出力する(OP5)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに訂正可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP5)。
【0065】
図10は、実施例1の情報処理装置におけるリードデータの訂正可能エラー検出動作を示す原理図である。図10は、具体的には、DIMM21基板上のあるデータ配線1本の故障によって1ビットエラーとなり、8クロックサイクルのリード時に断続的に1ビットエラーを検出した場合の原理図を示す。図10に示すエラー情報は、例えば、1ビットエラー情報保持レジスタ34e−1に格納されている。図10に示すように、リードバッファ33cに格納されている9バイトのデータブロックのうち、1ビットのデータが壊れた場合、ECCチェック回路32はこれを1ビットエラーとして検出する。この際、訂正可能エラーの位置情報は故障したSDRAM24−0〜24−m−1のデータ配線のビットを示すため、データ2及びデータ4におけるエラーチェック結果は、全てエラービット位置である「3」を示す。従って、エラーチェック結果を照合して1ビットエラーの位置情報が全て一致することを確認すれば、9バイトのデータバス中の特定の1ビットが壊れたことが分かる。エラー照合回路34はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路34は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0066】
図11は、エラー照合回路34におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【0067】
図11に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T1)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T1)。
【0068】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T2)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0069】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T3)。
【0070】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T4)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は同じ「3」である。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定しない。
【0071】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T5)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0072】
図12は、実施例1の情報処理装置のエラー照合回路34におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図12は8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対して3ビット以上の故障が断続的に発生し、ECCチェック回路32がこれらのエラーを全て1ビットエラーとして誤検出・誤訂正した場合の例である。図12に示すように、データ2及びデータ4における1ビットエラー位置は「3」及び「7」である。従って、エラーチェック結果を照合すると、1ビットエラーの位置情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例1におけるエラー照合回路34は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー種類判定回路34gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【0073】
図13は、エラー照合回路34におけるリードデータの1ビットエラーの誤検出動作の一例を示すタイムチャートである。
【0074】
図13に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T11)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T11)。
【0075】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T12)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0076】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T13)。
【0077】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T14)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「7」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は異なる。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定する(T15)。
【0078】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T16)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0079】
図14は、実施例1の情報処理装置のエラー照合回路34におけるリードデータの複数ビットエラー検出動作を示す原理図である。図14は、8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対し、2ビット以上の故障が断続的に発生し、ECCチェック回路32が訂正不可能エラーを検出した場合の例である。図14に示すように、データ2及びデータ4における1ビットエラー位置は「3」であるが、データ6に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにDIMM21上の複数ビットが故障していることが分かるため、エラー照合回路34はこのエラーを訂正不可能エラーと確定する。
【0080】
図15は、エラー照合回路34におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【0081】
図15に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T21)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T21)。
【0082】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T22)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0083】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T23)。
【0084】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T24)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は同じである。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定しない。
【0085】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、7サイクル目で複数ビットエラー検出通知を受信する(T25)。エラー照合回路34は、エラー情報レジスタ34fの複数ビットエラー検出フラグを「1」に設定する(T26)。
【0086】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T27)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0087】
実施例1におけるメモリコントローラ22を用いることで、SDRAM故障など複数ビットに渡るエラーが発生した場合に、検出漏れが起こる確率を大きく下げることができる。例えば、18個のSDRAMを有するx4DIMMにおいてSDRAM故障が発生した場合について確率計算すると、従来の72ビット毎にエラーをチェックして順次送信する方式では検出漏れの確率は5.9%程度であるのに対し、実施例1におけるメモリコントローラ22を用いると、検出漏れの確率を0.0079%まで下げることができる。
【0088】
実施例1に開示の技術によれば、メモリコントローラ22に実装されている誤り訂正符号の性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【0089】
図16は、実施例2の情報処理装置におけるメモリコントローラ22−1の内部構成を説明する為の図である。図16は、図2で説明したメモリコントローラ12aの一例であるメモリコントローラ22−1を示す。なお、図16において、実施例1における図1〜図4で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0090】
実施例1におけるメモリコントローラ22及び情報処理装置は、エラー発生した位置を1ビットエラーとして、DIMM21のデータ[71:0]のビット番号で管理していたが、これ以外にも多様なエラー発生位置の表現が考えられる。実施例2におけるメモリコントローラ22−1及び情報処理装置は、エラー位置をSDRAM24−0〜24−m−1ごとに管理することにして、DIMM21に対して、SDRAM24−0〜24−m−1の番号を1ビットエラーの位置情報として使用することができる。
【0091】
メモリコントローラ22−1は、ECC付加回路31、ECCチェック回路32、コマンド/アドレスバッファ(C/A BUFFER)33a、ライトバッファ(WRITE BUFFER)33b、リードバッファ(READ BUFFER)33c、エラー照合回路34−1、データ破棄回路35及び故障SDRAM番号判定回路36を備える。
【0092】
故障SDRAM番号判定回路36は、ECCチェック回路32からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むSDRAM番号を判定して出力する。
【0093】
エラー照合回路34−1は、所定のクロックに同期しながら検出したエラー種類情報(エラー無し/複数ビットエラー/1ビットエラー)と1ビットエラーが発生して訂正を行ったエラービットを含むSDRAM番号を一時的に格納する。エラー照合回路34−1は、一時的に格納されたエラー種類情報とSDRAM番号を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路34−1は、エラーの種類の判定結果に基づいて、データ破棄回路35にデータの破棄命令を出力する。そして、エラー照合回路34−1は、判定したエラー報告を、CPU15a及び管理LSI18に出力する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合、または複数ビットエラーが検出されたデータが含まれる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【0094】
図17は、実施例2の情報処理装置におけるエラー照合回路34−1の内部構成を説明する為の図である。エラー照合回路34−1は、論理積回路34a、インクリメントカウンタ34b、比較回路34c、フリップフロップ34d、1ビットエラーSDRAM番号比較回路34−1e、エラー情報レジスタ34−1f及びエラー種類判定回路34−1gを備える。
【0095】
1ビットエラーSDRAM番号比較回路34−1eは、1ビットエラーSDRAM番号保持レジスタ34−1e−1及び比較回路34−1e−2を備える。
【0096】
1ビットエラーSDRAM番号保持レジスタ34−1e−1は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号を一時的に格納する。1ビットエラーSDRAM番号保持レジスタ34−1e−1が格納する1ビットエラーSDRAM番号情報の原理図は、図21、図23及び図25を用いて後述する。なお、1ビットエラーSDRAM番号保持レジスタ34−1e−1は、フリップフロップ34dからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、1ビットエラー情報をクリアする。
【0097】
比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報とを比較する。比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報が不一致の場合、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致フラグに「1」を出力する。なお、1ビットエラーSDRAM番号保持レジスタ34−1e−1に1ビットエラーSDRAM番号情報が保持されていない時、比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報との比較を行わない。
【0098】
エラー情報レジスタ34−1fは、故障SDRAM番号判定回路36から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34−1fは、故障SDRAM番号判定回路36から、クロックサイクル毎に伝送される1ビットエラー検出情報が通知されると1ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34−1fは、比較回路34−1e−2で1ビットエラーSDRAM番号の不一致が検出されると1ビットエラーSDRAM番号不一致検出フラグを「1」にする。なお、エラー情報レジスタ34−1fは、ECCチェック回路32からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ34−1fは、フリップフロップ34dからエラー情報レジスタ34−1fへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ34−1fからの読み出しを行った時に、エラー情報レジスタ34−1fが保持する複数ビットエラー検出フラグ、1ビットエラー検出フラグ及び1ビットエラーSDRAM番号不一致検出フラグは全て「0」に設定される。
【0099】
エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34−1fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報を読み出す。エラー情報レジスタ34−1fから出力された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路34−1gは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路35、CPU15a及び管理LSI18に出力する。即ち、エラー種類判定回路34−1gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0100】
図18は、実施例2の情報処理装置のメモリモジュールであるDIMMにおけるエラービット位置とSDRAM番号との対比表である。図18は、18個のSDRAM24−0〜24−17を有するx4DIMMにおけるエラービット位置とSDRAM番号との対比表である。図18に示す各SDRAMは、4ビットのデータを保持する。そのため、SDRAM番号0のエラービット位置は、0〜3に設定されている。
【0101】
図19は、実施例2の情報処理装置のメモリモジュールであるDIMMにおけるエラービット位置とSDRAM番号との対比表である。図19は、9個のSDRAM24−0〜24−8を有するx8DIMMにおけるエラービット位置とSDRAM番号との対比表である。図19に示す各SDRAMは、8ビットのデータを保持する。そのため、SDRAM番号0のエラービット位置は、0〜7に設定されている。
【0102】
図20は、実施例2の情報処理装置におけるエラー種類判定フローを示す図である。図20に示す処理は、図17に前述したエラー種類判定回路34−1gが実行する。なお、図20において、図16〜図19で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0103】
図20において、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34−1fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報の読み出しを開始する(OP11)。次いで、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに設定された1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されているか、即ち1ビットエラー又は複数ビットエラーが1回でも発生したか判断する(OP12)。1ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合(OP12 NO)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路35に対して出力する(OP16)。エラー種類判定回路34−1gは、CPU15a及び管理LSI18に対するエラー報告を実施しない(OP16)。
【0104】
1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されている場合(OP12 YES)、エラー種類判定回路34−1gは、複数ビットエラー検出フラグが「1」であるか判断する(OP13)。複数ビットエラー検出フラグが「1」に設定されている場合(OP13 YES)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP17)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP17)。
【0105】
複数ビットエラー検出フラグが「1」に設定されていない場合(OP13 NO)、エラー種類判定回路34−1gは、1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されているか判断する(OP14)。1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されている場合(OP14 YES)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP17)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP17)。
【0106】
1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されていない場合(OP14 NO)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路35に対して出力する(OP15)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに訂正可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP15)。
【0107】
図21は、実施例2の情報処理装置におけるリードデータの1ビットエラー検出動作を示す原理図である。図21は、具体的には、DIMM21基板上のあるデータ配線1本の故障によって1ビットエラーとなり、8クロックサイクルのリード時に断続的に訂正可能エラーを検出した場合の原理図を示す。実施例2の情報処理装置は、エラー情報として、エラー種類の他にエラービットを含むSDRAM番号を記憶する。図21に示すエラー情報は、例えば、1ビットエラーSDRAM番号保持レジスタ34−1e−1に格納されている。図21に示すように、リードバッファ33cに格納されている9バイトのデータブロックのうち、1ビットのデータが壊れた場合、ECCチェック回路32はこれを訂正可能エラーとして検出する。そして、故障SDRAM番号判定回路36は、ECCチェック回路32からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むSDRAM番号を判定して出力する。この際、1ビットエラーの位置情報は故障したSDRAM24−0〜24−m−1のSDRAM番号を示すため、データ2及びデータ4におけるエラーチェック結果は全てエラーSDRAM位置である「3」を示す。従って、エラーチェック結果を照合してSDRAM番号情報が全て一致することを確認すれば、9バイトのデータバス中の特定の1ビットが壊れたことが分かる。エラー照合回路34−1はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0108】
図22は、エラー照合回路34−1におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【0109】
図22に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T31)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T31)。
【0110】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T32)。なお、入力された1ビットエラーSDRAM番号は、1ビットエラーSDRAM番号が「3」であることを示す。
【0111】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T33)。
【0112】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T34)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は同じ「3」である。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定しない。
【0113】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T35)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0114】
図23は、実施例2の情報処理装置のエラー照合回路34−1におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図23は8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対して3ビット以上の故障が断続的に発生し、ECCチェック回路32がこれらのエラーを全て1ビットエラーとして誤検出・誤訂正した場合の例である。図23に示すように、データ2及びデータ4におけるエラーSDRAM番号は「3」及び「7」である。従って、エラーチェック結果を照合すると、エラーSDRAM番号情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例2におけるエラー照合回路34−1は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【0115】
図24は、エラー照合回路34−1におけるリードデータの訂正可能エラーの誤検出動作の一例を示すタイムチャートである。
【0116】
図24に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T41)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T41)。
【0117】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T42)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。
【0118】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T43)。
【0119】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T44)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「7」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は異なる。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定する(T45)。
【0120】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T46)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0121】
図25は、実施例2の情報処理装置のエラー照合回路34−1におけるリードデータの訂正不可能エラー検出動作を示す原理図である。図25は、8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対し、2ビット以上の故障が断続的に発生し、ECCチェック回路32が複数ビットエラーを検出した場合の例である。図25に示すように、データ2及びデータ4における1ビットエラーSDRAM番号は「3」であるが、データ6に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにDIMM21上の複数ビットが故障していることが分かるため、エラー照合回路34−1はこのエラーを訂正不可能エラーと確定する。
【0122】
図26は、エラー照合回路34−1におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【0123】
図26に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T51)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T51)。
【0124】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T52)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。
【0125】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T53)。
【0126】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T54)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は同じである。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定しない。
【0127】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、7サイクル目で複数ビットエラー検出通知を受信する(T55)。エラー照合回路34−1は、エラー情報レジスタ34−1fの複数ビットエラー検出通知を「1」に設定する(T56)。
【0128】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T57)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0129】
実施例2に開示の技術によれば、実施例1におけるエラーしたビットを記憶するメモリコントローラ22及び情報処理装置と比較して使用する記憶素子の数を削減できる。DIMM21の故障はSDRAM24−0〜24−m−1単位で発生することが多いため、SDRAM24−0〜24−m−1毎のエラー位置を検出することによって、本来破棄すべきデータがエラーチェック回路を通過してしまうことを十分な精度で防止することができる。
【0130】
なお、実施例1及び実施例2は、エラー訂正・検出を行うECCコードとして1ビット訂正・2ビット検出のハミング符号を例にして説明したが、これ以外のECCコードを用いた場合も実施例1及び実施例2におけるメモリコントローラ及び情報処理装置を構成することができる。例えば、データを4bit単位のブロックの集合としてエラー判定するエラー訂正符号を使用した場合、1ブロックエラーは訂正可能であるが、2ブロック以上のエラーは訂正不可能であることが知られている(例えば、非特許文献1の「S.Kaneda and E.Fujiwara,“Single Byte Error Correcting−Double Byte Error Detecting Codes for Memory Systems”,IEEE Transactions on computers,Voc.C−31,No.7,pp.596−602,July 1982」を参照)。
【0131】
上記の例に示したS4EC−D4ED(Single 4bit block Error Correction−Double 4bit block Error Detection)符号では、ハミング符号を使用した場合と同様に、3ブロック以上の読み出しデータのエラーを1ブロックエラーと誤判定することがある。このような4ビットブロック訂正及び8ビットブロック検出を行うエラー訂正符号を用いた場合でも、データの故障位置をエラー照合回路に記憶し、DIMMのリード完了時に比較することで誤検出された訂正可能エラー及び訂正不可能エラーを判定することができる。
【符号の説明】
【0132】
1 システムボード
11a、11b メモリモジュール
12a、12b メモリコントローラ
15a、15b CPU
16 ノードコントローラ
17a、17b IOユニット
18 管理LSI
21 DIMM
21h 予備のDIMM
22 メモリコントローラ
22−1 メモリコントローラ
23−0〜23−n−1 RANK
24−0〜24−m−1 SDRAM
27 メモリインタフェース
28 コマンド/アドレスバス
28a、28b 信号バス
29 データバス
29a データバス
31 ECC付加回路
31a 排他的論理回路
32 ECCチェック回路
32a 排他的論理回路
32b 排他的論理回路
32c 故障箇所特定回路
32d 訂正回路
33a コマンド/アドレスバッファ
33b ライトバッファ
33c リードバッファ
34 エラー照合回路
34−1 エラー照合回路
34a 論理積回路
34b インクリメントカウンタ
34c 比較回路
34d フリップフロップ
34e 1ビットエラー情報比較回路
34e−1 1ビットエラー情報保持レジスタ
34e−2 比較回路
34−1e 1ビットエラーSDRAM番号比較回路
34−1e−1 1ビットエラーSDRAM番号保持レジスタ
34−1e−2 比較回路
34f エラー情報レジスタ
34−1f エラー情報レジスタ
34g エラー種類判定回路
34−1g エラー種類判定回路
35 データ破棄回路
36 故障SDRAM番号判定回路
【技術分野】
【0001】
開示の技術は、メモリコントローラ及び情報処理装置に関する。
【背景技術】
【0002】
近年、情報処理装置の大規模化に伴って、実装されるメモリの容量は増加し、高い信頼性が求められている。大容量のメモリモジュールとして、DIMM(Dual Inline Memory Module)が知られている。DIMM内部には複数のSDRAM(Synchronous Dynamic Random Access Memory)等の記憶素子が搭載されており、これらの記憶素子や伝送路等のDIMM内部の故障が発生する可能性が高まっている。大容量メモリで高い信頼性を維持する為に、メモリの故障箇所を迅速に検出することが要求される。
【0003】
その対策として、基板実装時のデータバスやアドレスバス等の不完全な接続によるメモリ故障を検出する技術が知られている。メモリの故障箇所を検出するための技術として、読み出しデータにECC(Error Check and Correction)コードを付与する方法が開示されている。このECCコードを使用する事により、例えば2ビット以上のエラー検出と1ビットの誤り訂正とを可能にする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−269054号公報
【特許文献2】特開2006−260289号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
最も基本的なハミング符号を利用して読み出しデータのエラー訂正及び検出を行う方法では、読み出しデータの1bitエラーは訂正可能であるが、2bit以上のエラーは訂正不可能であることが知られている。近年、メモリの集積度が上がり、メモリチップ内のメモリセルが小型化される事で、過去のメモリの集積度では発生しなかった複数ビットに渡るデータエラーが発生するようになってきた。そのため、既存のECCコードでは検出能力の限界を越えて、エラーとして検出できなくなるケースが発生するようになった。
【0006】
しかしながら、ハミング符号を使用した場合、3bit以上の読み出しデータのエラーを1bitエラーと誤判定することがある。上記したように、1bitエラーが発生した場合、単にエラー通知するのではなく、訂正可能として処理を行なっていた。しかし、3bit以上のエラーを考慮するようになると、1bitエラーと判定されても、訂正不可能として処理しなければならない。
【0007】
開示の技術は、読み出しデータの3bitエラー以上のエラーを考慮した上で、訂正可能エラーを判別することを可能にするメモリコントローラ及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の課題を解決するため、開示の技術の第1の側面によれば、
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラが提供される。
【発明の効果】
【0009】
開示の技術によれば、メモリコントローラに実装されているECCコードの性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【図面の簡単な説明】
【0010】
【図1】図1は、情報処理装置の構成概略図である。
【図2】図2は、メモリモジュールの構成を説明する為の図である。
【図3】図3は、データの構成図を示す図である。
【図4】図4は、実施例1の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図5】図5Aは、実施例1の情報処理装置におけるECC付加回路の内部構成の一部を説明する為の図である。図5Bは、実施例1の情報処理装置におけるECCチェック回路の内部構成の一部を説明する為の図である。
【図6A】図6Aは、実施例1の情報処理装置におけるハミング符号の生成式の一例である。
【図6B】図6Bは、実施例1の情報処理装置におけるリードデータの故障種類ごとのチェック結果計算値の一例を示す図である。
【図7】図7は、実施例1の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図8】図8は、実施例1の情報処理装置におけるメモリモジュールの故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。
【図9】図9は、実施例1の情報処理装置におけるエラー種類判定フローを示す図である。
【図10】図10は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図11】図11は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図12】図12は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図13】図13は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図14】図14は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図15】図15は、実施例1の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【図16】図16は、実施例2の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図17】図17は、実施例2の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図18】図18は、実施例2の情報処理装置のメモリモジュールにおけるエラーbit位置とSDRAM番号との対比表である。
【図19】図19は、実施例2の情報処理装置のメモリモジュールにおけるエラーbit位置とSDRAM番号との対比表である。
【図20】図20は、実施例2の情報処理装置におけるエラー種類判定フローを示す図である。
【図21】図21は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図22】図22は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図23】図23は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図24】図24は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図25】図25は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図26】図26は、実施例2の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して実施形態を詳細に説明する。図1は、情報処理装置の構成概略図である。情報処理装置の一例として、システムボード1を用いて説明する。システムボード1は、メモリモジュール11a、11b、メモリコントローラ12a、12b、演算処理ユニット(CPU:Central Processing Unit)15a、15b、ノードコントローラ16、IO(Input/Output)ユニット17a、17b、管理LSI18を備える。
【0012】
メモリコントローラ12aは、メモリモジュール11aとCPU15aに接続される。メモリコントローラ12aは、CPU15aからのリードコマンドやライトコマンド等を受信して、メモリモジュール11aに対するメモリ制御を行う。
【0013】
メモリコントローラ12bは、メモリモジュール11bとCPU15bに接続される。メモリコントローラ12bは、CPU15bからのリードコマンドやライトコマンド等を受信して、メモリモジュール11bに対するメモリ制御を行う。
【0014】
ノードコントローラ16は、自己のシステムボード1内の複数のCPU15a、15bや複数のIOユニット17a、17bに接続し、他のシステムボードや外部の情報機器に対する通信制御を行う。
【0015】
管理LSI18は、システムボード1内の各回路に接続し、各回路の動作状況を監視する。さらに、管理LSI18は、ユーザの仕様により各回路のメンテナンスを行う制御機能を持たせることができる。
【0016】
図2は、メモリモジュールの構成を説明する為の図である。メモリモジュール11aの一例としてDIMM(Dual Inline Memory Module)が挙げられる。本実施例では、標準化された規格であるDDR3に準拠するDIMM21を備えた大容量メモリモジュールを用いて説明する。なお、メモリモジュール11bについても同様の構成であり、説明は省略する。
【0017】
DIMM21hはDIMM21が故障した際に代替として用いられる予備のDIMMである。DIMM21は、n個のRANK23−0〜23−n−1を備える。
【0018】
また、RANK23−1〜23−n−1には、それぞれ複数の記憶素子が並列配置される。例えば、RANK23−0にはm個のSDRAM24−0〜24−m−1(mは整数)が並列配置される。同様に、DIMM21hも複数のRANKを備える。
【0019】
なお、本実施形態において、メモリモジュールはRANK単位で管理される為、RANKを単位メモリ領域として説明する。なお、例えば、SDRAM単位でアドレスが管理される別種のメモリモジュールを使用する場合にはSDRAMを単位メモリ領域とすることもできる。
【0020】
メモリコントローラ12aは、CPU15aから、例えば、DIMM21へのデータのリードコマンドやライトコマンド等を受信すると、メモリインタフェース27のコマンド/アドレスバス28を介してコマンド及びアドレス信号をDIMM21へ伝送する。
【0021】
そして、DIMM21内において、信号バス28aを経由してRANKを指定するチップセレクト信号(CS:Chip Select)が各RANK23−0〜23−n−1に対して伝送される。また、信号バス28bを経由して、SDRAM内のどの位置にアクセスするかを指定するメモリアドレス(MA:Memory Address)及びバンクアドレス(BA:Bank Address)を含むRANK内アドレスが各SDRAM24−0〜24−m−1に対して伝送される。
【0022】
データバス29を経由して伝送されたライトデータは、DIMM21内のデータバス29aを経由して各SDRAM24−0〜24−m−1へ伝送される。また、各SDRAM24−0〜24−m−1からのリードデータは、DIMM21内のデータバス29a、メモリインタフェース27のデータバス29を経由して、メモリコントローラ12aに伝送される。
【0023】
図3は、データの構成図を示す図である。図3に示すように、データは、Error Check and Correction(ECC)コード及びデータ本体部を有する。ECCコードは、データのエラー検出を行うために用いられるコードで、データ本体部を基に生成されたエラー訂正符号である。
【0024】
エラー訂正符号は、例えばSEC/DED(Single Error Correct/Double Error Detect)方式のハミング符号を用いる。この符号は、2ビット以上のエラー検出と1ビットの誤り訂正とを可能にするものである。もし、訂正可能エラー(CE:Correctable Error)が発生すると、図4で後述するECCチェック回路32においてデータビットのエラーが発生した箇所が訂正される。又、訂正と同時に、図4で後述するメモリコントローラ22を介してCPU15aにデータが送付される。もし、訂正不可能エラー(UE:Uncorrectable Error)が検出されると、エラー信号を介して訂正不可能エラーが発生したことが、図4で後述するメモリコントローラ22を介してCPU15a及び管理LSI18へ通知される。
【0025】
図4は、実施例1の情報処理装置におけるメモリコントローラ22の内部構成を説明する為の図である。図4は、図2で説明したメモリコントローラ12aの一例であるメモリコントローラ22を示す。
【0026】
メモリコントローラ22は、ECC付加回路31、ECCチェック回路32、コマンド/アドレスバッファ(C/A BUFFER)33a、ライトバッファ(WRITE BUFFER)33b、リードバッファ(READ BUFFER)33c、エラー照合回路34及びデータ破棄回路35を備える。
【0027】
ECC付加回路31は、CPU15aから伝送されたライトデータにECCコードを付加する。
【0028】
ライトバッファ33bは、ECCコードが付加されたライトデータを一時的に格納する。ECCコードが付加されたライトデータは、ライトバッファ33bに一時記憶された後、所定のクロックに同期しながらデータバス29を経由してDIMM21の指定のライトアドレスに伝送される。
【0029】
また、メモリコントローラ22は、CPU15aからのライトコマンドとアドレス信号を受信すると、これらをコマンド/アドレスバッファ33aに一時的に格納する。そして、ライトコマンドとアドレス信号は、所定のクロックに同期しながらコマンド/アドレスバス28を経由してDIMM21に伝送される。
【0030】
ECCチェック回路32には、リード対象のDIMM21から読み出されたリードデータが、所定のクロックに同期しながらデータバス29を経由して入力される。ECCチェック回路32は、リードデータのエラー検出及び訂正と、リードデータのエラー種類及びエラービットの位置確認を行う。ECCチェック回路32は、リードデータのエラー検出及び訂正を行った後、リードデータをリードバッファ(READ BUFFER)33cに伝送する。次いで、ECCチェック回路32は、リードデータのエラー種類情報及びエラービットの位置情報を、エラー照合回路34に伝送する。
【0031】
リードバッファ33cは、ECCチェック回路32から伝送されたリードデータを一時的に格納する。リードバッファ33cは、後述するエラー照合回路34からのエラーの種類の判定タイミングに合わせて、格納されたリードデータをデータ破棄回路35に伝送する。
【0032】
エラー照合回路34は、所定のクロックに同期しながら検出したエラー種類情報(エラー無し/複数ビットエラー/1ビットエラー)と1ビットエラーが発生して訂正を行ったエラービットの位置情報を一時的に格納する。エラー照合回路34は、一時的に格納されたエラー種類情報とエラービットの位置情報を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路34は、エラーの種類の判定結果に基づいて、データ破棄回路35にデータの破棄命令を出力する。そして、エラー照合回路34は、判定したエラー報告を、CPU15a及び管理LSI18に出力する。即ち、エラー照合回路34は、リードバッファ33cに格納された複数の読み出しデータに、検出部によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【0033】
データ破棄回路35は、エラー照合回路34から出力されたデータ破棄命令に従って、リードバッファ33cから伝送されたリードデータを破棄する。データ破棄回路35は、リードデータ有効信号を“0”にすることにより、リードデータを無効にすることができる。エラー照合回路34からデータの破棄命令が出力されなかった場合、データ破棄回路35は、リードバッファ33cから伝送されたリードデータを、そのままCPU15aに伝送する。
【0034】
なお、訂正可能エラー/訂正不可能エラーの報告を受けた場合の、CPU15aの一般的な動作を説明する。訂正可能エラーの報告を受けた場合、CPU15aは、訂正可能エラーの発生回数を数えるカウンタを持ち、回数が一定値以上に達した場合にユーザへの警告や予備のDIMM21hへの切り替えなどの対処を実行する。一方、訂正不可能エラーの報告を受けた場合、CPU15aはREADリトライと呼ばれるシーケンスによって同一アドレスへの再リードを試みる。それでもエラーが回復しない場合、CPU15aは、READされたデータが使用される前にプログラムの終了処理やシャットダウン処理を行ってエラーデータによる異常動作を回避する。
【0035】
図5A及び図5Bは、実施例1の情報処理装置におけるECC付加回路31及びECCチェック回路32の内部構成の一部を説明する為の図である。図5A及び図5Bは、64ビットのライドデータ及び64ビットのリードデータを例に挙げて説明する。なお、図5A及び図5Bにおいて、図1〜図4で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0036】
図5Aに示すように、ECC付加回路31は、排他的論理回路(生成Xor回路)31aを備える。排他的論理回路31aは、CPU15aから伝送された64ビットのライトデータから、8ビットの排他的論理和を生成する。生成された排他的論理和は、データ本体部を基に生成されたエラー訂正符号であるハミング符号として使用される。ECC付加回路31を用いて行われるハミング符号の生成方法は、後述する図6Aを用いて説明する。次いで、ECC付加回路31は、64ビットのライトデータに、生成された8ビットのハミング符号を付加して、ライトバッファ33bに伝送する。即ち、ECC付加回路31は、メモリモジュール11a、11bに書込む複数ビット単位のライトデータについて、ライトデータに対応するハミング符号を生成する。
【0037】
図5Bに示すように、ECCチェック回路32は、排他的論理回路(チェックXor回路)32a、排他的論理回路(比較Xor回路)32b、故障箇所特定回路32c及び訂正回路32dを備える。
【0038】
排他的論理回路32aは、DIMM21から伝送された64ビットのリードデータの排他的論理和を求め、リードデータのエラーチェック用のハミング符号を生成する。このハミング符号の生成には、ECC付加回路31と同一の論理を使用する。リードデータのエラーが無ければ、排他的論理和の計算結果は、書込時に生成した排他的論理和と同じ値になる。排他的論理回路32aは、生成したハミング符号を排他的論理回路32bに伝送する。
【0039】
排他的論理回路32bは、ライト時に排他的論理回路31aによって生成されて読み出しデータに付加された8ビットのハミング符号と、リード時に排他的論理回路32aによって生成された8ビットのハミング符号を比較する。具体的には、排他的論理回路32bは、読み出しデータに付加された8ビットのハミング符号と排他的論理回路32aによって生成された8ビットのハミング符号との排他的論理和を求める。排他的論理回路32bは、求めた排他的論理和を8ビットのチェック結果として、故障箇所特定回路32cに伝送する。
【0040】
故障箇所特定回路32cは、排他的論理回路32bから伝送された8ビットのチェック結果に基づいて、リードデータ全体の故障の種類及び故障箇所を特定する。故障箇所特定回路32cを用いて行われるリードデータ全体の故障の種類及び故障箇所の判断方法は、後述する図6Bを用いて説明する。故障箇所特定回路32cは、特定したリードデータ全体の故障の種類及び故障箇所の情報を、訂正回路32d及びエラー照合回路34に伝送する。即ち、故障箇所特定回路32cは、メモリモジュールから読み出された複数ビット単位の読み出しデータについて、エラービットの位置の検出を行うエラー検出部である。
【0041】
訂正回路32dは、伝送されたリードデータ全体の故障の種類及び故障箇所の情報に基づいて、リードデータのデータ訂正を行う。訂正回路32dは、訂正されたリードデータ
をリードバッファ33cに伝送する。
【0042】
図6Aは、実施例1の情報処理装置におけるハミング符号の生成式の一例である。図6Aに示すように、図5AにおけるECC付加回路31の排他的論理回路31aは、64ビットのライトデータのうち、一部のビットを抜き出して排他的論理和を求めることにより、8ビットのハミング符号を生成する。
【0043】
図6Bは、実施例1の情報処理装置におけるリードデータの故障種類ごとのチェック結果の計算値の一例を示す図である。
【0044】
図6Bに示すように、リードデータの故障が無い場合、チェック結果は全て0となる。また、リードデータに1ビット故障が発生した場合、チェック結果のパターンは、全て0となる以外で他のチェック結果と重複しないパターンとなる。そのため、故障箇所特定回路32cは、チェック結果からビットの故障位置を検出して1ビット故障を訂正することができる。
【0045】
また、2ビット故障が発生した場合、チェック結果のパターンは、全て0の場合、又は1ビット故障時のパターンのいずれの場合にも該当しないものになる。そのため、チェック結果を分析することにより、2ビット故障が発生したことを検出できる。しかし、2ビット故障のチェック結果は重複する場合があるため、1ビット故障時のように、ビットの故障位置を特定することができない。
【0046】
また、3ビット故障が発生した場合、チェック結果のパターンは、全て0となる場合、又は1ビット故障パターンを含む2の8乗通りとなる。そのため、3ビット故障が発生した場合、故障無し、又は1ビット故障と誤判定される場合がある。3ビット故障が1ビット故障と誤判定された場合、ランダムな複数ビットの故障を含むデータが偶然別の1ビットエラーのデータパターンと一致したものであるため、1ビットエラーの位置情報は本来の故障位置と関係ないランダムなビットを示す。
【0047】
実施例1におけるエラー照合回路34は、各サイクルで検出したエラー種類(エラー無し/複数ビットエラー/1ビットエラー)、及び1ビットエラーが発生して訂正を行ったビットの位置情報を一時記憶する。エラー照合回路34は、エラー種類及び訂正を行ったビットの位置情報を照合することによって、データブロック全体としてのエラー種類を判定する。エラー照合回路34を追加することで、1ビットエラーの位置情報が本来の故障位置と関係ないランダムなビットを示した場合でも、エラー検出漏れ及び誤訂正の確率を下げることができる。
【0048】
図7は、実施例1の情報処理装置におけるエラー照合回路34の内部構成を説明する為の図である。エラー照合回路34は、論理積回路34a、インクリメントカウンタ34b、比較回路34c、フリップフロップ34d、1ビットエラー情報比較回路34e、エラー情報レジスタ34f及びエラー種類判定回路34gを備える。
【0049】
論理積回路34aは、ECCチェック回路32からリードデータが伝送されると、リードデータ有効信号のアサートを検出する。信号のアサートとは、信号をハイ(High)レベルにすることを言う。リードデータ有効信号は、ECCチェック回路32によって、8クロックサイクル間アサートされる。
【0050】
インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて比較回路34cに出力する。
【0051】
インクリメントカウンタ34bは、リードデータの受信完了タイミングを知る必要があるため、リードデータ有効信号のアサート時間をカウントする。比較回路34cは、インクリメントカウンタ34bが「111」になったとき、即ちリードデータ有効信号が8回目に「1」となったときに「1」を出力する。論理積回路34aは、リードデータ有効信号と、比較回路34cからの出力の論理積を求める。そして、論理積回路34aは、リードデータ有効信号が8回目に「1」となった時に、フリップフロップ34dに対して「1」を出力する。即ち、論理積回路34aは、インクリメントカウンタ34bのカウンタの値が8になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。
【0052】
フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ有効信号を1クロックサイクル保持した後、1ビットエラー情報比較回路34eの1ビットエラー情報保持レジスタ34e−1及びエラー情報レジスタ34fに伝送する。フリップフロップ34dは、エラー情報レジスタ34fからの読み出しタイミングを1クロックサイクル遅らせ、レジスタへの書込みが完了した後に読み出しが行われることを保証するために備えられている。
【0053】
1ビットエラー情報比較回路34eは、1ビットエラー情報保持レジスタ34e−1及び比較回路34e−2を備える。
【0054】
1ビットエラー情報保持レジスタ34e−1は、ECCチェック回路32から伝送される1ビットエラー情報を一時的に格納する。1ビットエラー情報保持レジスタ34e−1が格納する1ビットエラー情報の原理図は、図10、図12及び図14を用いて後述する。なお、1ビットエラー情報保持レジスタ34e−1は、フリップフロップ34dからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、1ビットエラー情報をクリアする。
【0055】
比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報とを比較する。比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報が不一致の場合、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグに「1」を出力する。なお、1ビットエラー情報保持レジスタ34e−1に1ビットエラー情報が保持されていない時、比較回路34e−2は、ECCチェック回路32から伝送される1ビットエラー情報と、1ビットエラー情報保持レジスタ34e−1が保持する1ビットエラー情報との比較を行わない。
【0056】
エラー情報レジスタ34fは、ECCチェック回路32から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34fは、ECCチェック回路32から、クロックサイクル毎に伝送される1ビットエラー検出情報が通知されると1ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34fは、比較回路34e−2で1ビットエラー情報の不一致が検出されると1ビットエラー位置不一致検出フラグを「1」にする。なお、エラー情報レジスタ34fは、ECCチェック回路32からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ34fは、フリップフロップ34dからエラー情報レジスタ34fへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ34fからの読み出しを行った時に、エラー情報レジスタ34fが保持する複数ビットエラー検出フラグ、1ビットエラー検出フラグ及び1ビットエラー位置不一致検出フラグは全て「0」に設定される。
【0057】
エラー種類判定回路34gは、エラー情報レジスタ34fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報を読み出す。エラー情報レジスタ34fから出力された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路34gは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路35、CPU15a及び管理LSI18に出力する。即ち、エラー種類判定回路34gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって、1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0058】
図8は、実施例1の情報処理装置におけるメモリモジュールであるDIMM21の故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。図8に示す「1アドレス」とは、DIMM21の1アドレス(8バイトデータ)の範囲に限定して発生する故障を示す。この故障はSDRAM24−0〜24−m−1のデータセル固定故障や宇宙線によるソフトエラーに起因するものが多い。No.1に示したような1ビットの故障は、従来のECCコードで訂正が可能であり、問題とはならない。また、No.2に示したような、1アドレス内のデータで複数ビットが故障するようなケースが発生することは極めて稀である。
【0059】
一方、「複数アドレス」とは、DIMM21の複数のアドレスにデータエラーが発生する故障パターンを示す。この故障はSDRAM24−0〜24−m−1のコマンド/アドレスバス28故障やDIMM21における基板上のコマンド/アドレス配線故障によるものが多い。特にNo.4に示したようなSDRAM故障では、4ビット或いは8ビット幅の故障が複数アドレスにわたって発生し、ハミング符号の検出能力を超えるエラーが頻発することがある。エラー種類判定回路34gは、リードバッファ33cに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるECC付加回路31によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、訂正可能なエラーを含むと判定する。さらに、エラー種類判定回路34gは、1回のリードコマンドでDIMMから読み出されリードバッファ33cに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるECCチェック回路32によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、エラー種類判定回路34gによって訂正不可能なエラーを含むと判定する事を目的とする。以上の構成により、訂正不可能なエラーの検出率を向上させることを目的とする。
【0060】
図9は、実施例1の情報処理装置におけるエラー種類判定フローを示す図である。図9に示す処理は、図7に前述したエラー種類判定回路34gが実行する。なお、図9において、図1〜図8で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0061】
図9において、エラー種類判定回路34gは、エラー情報レジスタ34fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報の読み出しを開始する(OP1)。次いで、エラー種類判定回路34gは、エラー情報レジスタ34fに設定された1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されているか、即ち1ビットエラー又は複数ビットエラーが1回でも発生したか判断する(OP2)。1ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合(OP2 NO)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路35に対して出力する(OP6)。エラー種類判定回路34gは、CPU15a及び管理LSI18に対するエラー報告を実施しない(OP6)。
【0062】
1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されている場合(OP2 YES)、エラー種類判定回路34gは、複数ビットエラー検出フラグが「1」であるか判断する(OP3)。複数ビットエラー検出フラグが「1」に設定されている場合(OP3 YES)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP7)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP7)。
【0063】
複数ビットエラー検出フラグが「1」に設定されていない場合(OP3 NO)、エラー種類判定回路34gは、1ビットエラー位置不一致検出フラグが「1」に設定されているか判断する(OP4)。1ビットエラー位置不一致検出フラグが「1」に設定されている場合(OP4 YES)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP7)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP7)。
【0064】
1ビットエラー位置不一致検出フラグが「1」に設定されていない場合(OP4 NO)、エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路35に対して出力する(OP5)。エラー種類判定回路34gは、リードバッファ33cに格納されたリードデータに訂正可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP5)。
【0065】
図10は、実施例1の情報処理装置におけるリードデータの訂正可能エラー検出動作を示す原理図である。図10は、具体的には、DIMM21基板上のあるデータ配線1本の故障によって1ビットエラーとなり、8クロックサイクルのリード時に断続的に1ビットエラーを検出した場合の原理図を示す。図10に示すエラー情報は、例えば、1ビットエラー情報保持レジスタ34e−1に格納されている。図10に示すように、リードバッファ33cに格納されている9バイトのデータブロックのうち、1ビットのデータが壊れた場合、ECCチェック回路32はこれを1ビットエラーとして検出する。この際、訂正可能エラーの位置情報は故障したSDRAM24−0〜24−m−1のデータ配線のビットを示すため、データ2及びデータ4におけるエラーチェック結果は、全てエラービット位置である「3」を示す。従って、エラーチェック結果を照合して1ビットエラーの位置情報が全て一致することを確認すれば、9バイトのデータバス中の特定の1ビットが壊れたことが分かる。エラー照合回路34はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路34は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0066】
図11は、エラー照合回路34におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【0067】
図11に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T1)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T1)。
【0068】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T2)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0069】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T3)。
【0070】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T4)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は同じ「3」である。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定しない。
【0071】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T5)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0072】
図12は、実施例1の情報処理装置のエラー照合回路34におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図12は8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対して3ビット以上の故障が断続的に発生し、ECCチェック回路32がこれらのエラーを全て1ビットエラーとして誤検出・誤訂正した場合の例である。図12に示すように、データ2及びデータ4における1ビットエラー位置は「3」及び「7」である。従って、エラーチェック結果を照合すると、1ビットエラーの位置情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例1におけるエラー照合回路34は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー種類判定回路34gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【0073】
図13は、エラー照合回路34におけるリードデータの1ビットエラーの誤検出動作の一例を示すタイムチャートである。
【0074】
図13に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T11)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T11)。
【0075】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T12)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0076】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T13)。
【0077】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T14)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「7」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は異なる。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定する(T15)。
【0078】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T16)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報及び1ビットエラー位置不一致検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0079】
図14は、実施例1の情報処理装置のエラー照合回路34におけるリードデータの複数ビットエラー検出動作を示す原理図である。図14は、8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対し、2ビット以上の故障が断続的に発生し、ECCチェック回路32が訂正不可能エラーを検出した場合の例である。図14に示すように、データ2及びデータ4における1ビットエラー位置は「3」であるが、データ6に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにDIMM21上の複数ビットが故障していることが分かるため、エラー照合回路34はこのエラーを訂正不可能エラーと確定する。
【0080】
図15は、エラー照合回路34におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【0081】
図15に示すように、論理積回路34aは、ECCチェック回路32からリードデータ有効信号を受信する(T21)。インクリメントカウンタ34bは、ECCチェック回路32からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T21)。
【0082】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T22)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。
【0083】
エラー照合回路34は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34fの1ビットエラー検出フラグを「1」に設定する(T23)。
【0084】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラー位置情報を受信する(T24)。なお、入力された1ビットエラー位置情報は、1ビットエラー位置が「3」であることを示す。この際、3サイクル目で検出された1ビットエラー位置と5サイクル目で検出された1ビットエラー位置は同じである。そのため、エラー照合回路34は、エラー情報レジスタ34fの1ビットエラー位置不一致検出フラグを「1」に設定しない。
【0085】
エラー照合回路34は、ECCチェック回路32から、8サイクルのリードデータのうち、7サイクル目で複数ビットエラー検出通知を受信する(T25)。エラー照合回路34は、エラー情報レジスタ34fの複数ビットエラー検出フラグを「1」に設定する(T26)。
【0086】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T27)。そして、エラー種類判定回路34gは、エラー情報レジスタ34fに格納された1ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0087】
実施例1におけるメモリコントローラ22を用いることで、SDRAM故障など複数ビットに渡るエラーが発生した場合に、検出漏れが起こる確率を大きく下げることができる。例えば、18個のSDRAMを有するx4DIMMにおいてSDRAM故障が発生した場合について確率計算すると、従来の72ビット毎にエラーをチェックして順次送信する方式では検出漏れの確率は5.9%程度であるのに対し、実施例1におけるメモリコントローラ22を用いると、検出漏れの確率を0.0079%まで下げることができる。
【0088】
実施例1に開示の技術によれば、メモリコントローラ22に実装されている誤り訂正符号の性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【0089】
図16は、実施例2の情報処理装置におけるメモリコントローラ22−1の内部構成を説明する為の図である。図16は、図2で説明したメモリコントローラ12aの一例であるメモリコントローラ22−1を示す。なお、図16において、実施例1における図1〜図4で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0090】
実施例1におけるメモリコントローラ22及び情報処理装置は、エラー発生した位置を1ビットエラーとして、DIMM21のデータ[71:0]のビット番号で管理していたが、これ以外にも多様なエラー発生位置の表現が考えられる。実施例2におけるメモリコントローラ22−1及び情報処理装置は、エラー位置をSDRAM24−0〜24−m−1ごとに管理することにして、DIMM21に対して、SDRAM24−0〜24−m−1の番号を1ビットエラーの位置情報として使用することができる。
【0091】
メモリコントローラ22−1は、ECC付加回路31、ECCチェック回路32、コマンド/アドレスバッファ(C/A BUFFER)33a、ライトバッファ(WRITE BUFFER)33b、リードバッファ(READ BUFFER)33c、エラー照合回路34−1、データ破棄回路35及び故障SDRAM番号判定回路36を備える。
【0092】
故障SDRAM番号判定回路36は、ECCチェック回路32からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むSDRAM番号を判定して出力する。
【0093】
エラー照合回路34−1は、所定のクロックに同期しながら検出したエラー種類情報(エラー無し/複数ビットエラー/1ビットエラー)と1ビットエラーが発生して訂正を行ったエラービットを含むSDRAM番号を一時的に格納する。エラー照合回路34−1は、一時的に格納されたエラー種類情報とSDRAM番号を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路34−1は、エラーの種類の判定結果に基づいて、データ破棄回路35にデータの破棄命令を出力する。そして、エラー照合回路34−1は、判定したエラー報告を、CPU15a及び管理LSI18に出力する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合、または複数ビットエラーが検出されたデータが含まれる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【0094】
図17は、実施例2の情報処理装置におけるエラー照合回路34−1の内部構成を説明する為の図である。エラー照合回路34−1は、論理積回路34a、インクリメントカウンタ34b、比較回路34c、フリップフロップ34d、1ビットエラーSDRAM番号比較回路34−1e、エラー情報レジスタ34−1f及びエラー種類判定回路34−1gを備える。
【0095】
1ビットエラーSDRAM番号比較回路34−1eは、1ビットエラーSDRAM番号保持レジスタ34−1e−1及び比較回路34−1e−2を備える。
【0096】
1ビットエラーSDRAM番号保持レジスタ34−1e−1は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号を一時的に格納する。1ビットエラーSDRAM番号保持レジスタ34−1e−1が格納する1ビットエラーSDRAM番号情報の原理図は、図21、図23及び図25を用いて後述する。なお、1ビットエラーSDRAM番号保持レジスタ34−1e−1は、フリップフロップ34dからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、1ビットエラー情報をクリアする。
【0097】
比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報とを比較する。比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報が不一致の場合、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致フラグに「1」を出力する。なお、1ビットエラーSDRAM番号保持レジスタ34−1e−1に1ビットエラーSDRAM番号情報が保持されていない時、比較回路34−1e−2は、故障SDRAM番号判定回路36から伝送される1ビットエラーSDRAM番号情報と、1ビットエラーSDRAM番号保持レジスタ34−1e−1が保持する1ビットエラーSDRAM番号情報との比較を行わない。
【0098】
エラー情報レジスタ34−1fは、故障SDRAM番号判定回路36から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34−1fは、故障SDRAM番号判定回路36から、クロックサイクル毎に伝送される1ビットエラー検出情報が通知されると1ビットエラー検出フラグを「1」にする。又、エラー情報レジスタ34−1fは、比較回路34−1e−2で1ビットエラーSDRAM番号の不一致が検出されると1ビットエラーSDRAM番号不一致検出フラグを「1」にする。なお、エラー情報レジスタ34−1fは、ECCチェック回路32からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ34−1fは、フリップフロップ34dからエラー情報レジスタ34−1fへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ34−1fからの読み出しを行った時に、エラー情報レジスタ34−1fが保持する複数ビットエラー検出フラグ、1ビットエラー検出フラグ及び1ビットエラーSDRAM番号不一致検出フラグは全て「0」に設定される。
【0099】
エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34−1fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報を読み出す。エラー情報レジスタ34−1fから出力された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路34−1gは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路35、CPU15a及び管理LSI18に出力する。即ち、エラー種類判定回路34−1gは、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0100】
図18は、実施例2の情報処理装置のメモリモジュールであるDIMMにおけるエラービット位置とSDRAM番号との対比表である。図18は、18個のSDRAM24−0〜24−17を有するx4DIMMにおけるエラービット位置とSDRAM番号との対比表である。図18に示す各SDRAMは、4ビットのデータを保持する。そのため、SDRAM番号0のエラービット位置は、0〜3に設定されている。
【0101】
図19は、実施例2の情報処理装置のメモリモジュールであるDIMMにおけるエラービット位置とSDRAM番号との対比表である。図19は、9個のSDRAM24−0〜24−8を有するx8DIMMにおけるエラービット位置とSDRAM番号との対比表である。図19に示す各SDRAMは、8ビットのデータを保持する。そのため、SDRAM番号0のエラービット位置は、0〜7に設定されている。
【0102】
図20は、実施例2の情報処理装置におけるエラー種類判定フローを示す図である。図20に示す処理は、図17に前述したエラー種類判定回路34−1gが実行する。なお、図20において、図16〜図19で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【0103】
図20において、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに読み出し有効信号がアサートされた時に、エラー情報レジスタ34−1fに格納された複数ビットエラー検出フラグ情報、1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報の読み出しを開始する(OP11)。次いで、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに設定された1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されているか、即ち1ビットエラー又は複数ビットエラーが1回でも発生したか判断する(OP12)。1ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合(OP12 NO)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路35に対して出力する(OP16)。エラー種類判定回路34−1gは、CPU15a及び管理LSI18に対するエラー報告を実施しない(OP16)。
【0104】
1ビットエラー検出フラグ又は複数ビットエラー検出フラグが「1」に設定されている場合(OP12 YES)、エラー種類判定回路34−1gは、複数ビットエラー検出フラグが「1」であるか判断する(OP13)。複数ビットエラー検出フラグが「1」に設定されている場合(OP13 YES)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP17)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP17)。
【0105】
複数ビットエラー検出フラグが「1」に設定されていない場合(OP13 NO)、エラー種類判定回路34−1gは、1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されているか判断する(OP14)。1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されている場合(OP14 YES)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを破棄する命令をデータ破棄回路35に出力する(OP17)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに、訂正不可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP17)。
【0106】
1ビットエラーSDRAM番号不一致検出フラグが「1」に設定されていない場合(OP14 NO)、エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路35に対して出力する(OP15)。エラー種類判定回路34−1gは、リードバッファ33cに格納されたリードデータに訂正可能エラーが存在する事をCPU15a及び管理LSI18に報告する(OP15)。
【0107】
図21は、実施例2の情報処理装置におけるリードデータの1ビットエラー検出動作を示す原理図である。図21は、具体的には、DIMM21基板上のあるデータ配線1本の故障によって1ビットエラーとなり、8クロックサイクルのリード時に断続的に訂正可能エラーを検出した場合の原理図を示す。実施例2の情報処理装置は、エラー情報として、エラー種類の他にエラービットを含むSDRAM番号を記憶する。図21に示すエラー情報は、例えば、1ビットエラーSDRAM番号保持レジスタ34−1e−1に格納されている。図21に示すように、リードバッファ33cに格納されている9バイトのデータブロックのうち、1ビットのデータが壊れた場合、ECCチェック回路32はこれを訂正可能エラーとして検出する。そして、故障SDRAM番号判定回路36は、ECCチェック回路32からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むSDRAM番号を判定して出力する。この際、1ビットエラーの位置情報は故障したSDRAM24−0〜24−m−1のSDRAM番号を示すため、データ2及びデータ4におけるエラーチェック結果は全てエラーSDRAM位置である「3」を示す。従って、エラーチェック結果を照合してSDRAM番号情報が全て一致することを確認すれば、9バイトのデータバス中の特定の1ビットが壊れたことが分かる。エラー照合回路34−1はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【0108】
図22は、エラー照合回路34−1におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【0109】
図22に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T31)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T31)。
【0110】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T32)。なお、入力された1ビットエラーSDRAM番号は、1ビットエラーSDRAM番号が「3」であることを示す。
【0111】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T33)。
【0112】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T34)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は同じ「3」である。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定しない。
【0113】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T35)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0114】
図23は、実施例2の情報処理装置のエラー照合回路34−1におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図23は8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対して3ビット以上の故障が断続的に発生し、ECCチェック回路32がこれらのエラーを全て1ビットエラーとして誤検出・誤訂正した場合の例である。図23に示すように、データ2及びデータ4におけるエラーSDRAM番号は「3」及び「7」である。従って、エラーチェック結果を照合すると、エラーSDRAM番号情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例2におけるエラー照合回路34−1は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー照合回路34−1は、リードバッファ33cに格納された複数の読み出しデータに、エラー検出部として用いられるECCチェック回路32によって1ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【0115】
図24は、エラー照合回路34−1におけるリードデータの訂正可能エラーの誤検出動作の一例を示すタイムチャートである。
【0116】
図24に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T41)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T41)。
【0117】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T42)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。
【0118】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T43)。
【0119】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T44)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「7」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は異なる。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定する(T45)。
【0120】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T46)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報及び1ビットエラーSDRAM番号不一致検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0121】
図25は、実施例2の情報処理装置のエラー照合回路34−1におけるリードデータの訂正不可能エラー検出動作を示す原理図である。図25は、8クロックサイクルのリード動作において、SDRAM24−0〜24−m−1のアドレス線故障によって9バイトデータに対し、2ビット以上の故障が断続的に発生し、ECCチェック回路32が複数ビットエラーを検出した場合の例である。図25に示すように、データ2及びデータ4における1ビットエラーSDRAM番号は「3」であるが、データ6に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにDIMM21上の複数ビットが故障していることが分かるため、エラー照合回路34−1はこのエラーを訂正不可能エラーと確定する。
【0122】
図26は、エラー照合回路34−1におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【0123】
図26に示すように、論理積回路34aは、故障SDRAM番号判定回路36から、リードデータ有効信号を受信する(T51)。インクリメントカウンタ34bは、故障SDRAM番号判定回路36からリードデータ有効信号が入力されると、クロック信号の1サイクル毎にカウンタの値を1つずつインクリメント(増加)させて論理積回路34aに出力する(T51)。
【0124】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、3サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T52)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。
【0125】
エラー照合回路34−1は、入力された1ビットエラー検出通知に基づいて、エラー情報レジスタ34−1fの1ビットエラー検出フラグを「1」に設定する(T53)。
【0126】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、5サイクル目で1ビットエラー検出通知及び1ビットエラーSDRAM番号情報を受信する(T54)。なお、入力された1ビットエラーSDRAM番号情報は、1ビットエラーSDRAM番号が「3」であることを示す。この際、3サイクル目で検出された1ビットエラーSDRAM番号と5サイクル目で検出された1ビットエラーSDRAM番号は同じである。そのため、エラー照合回路34−1は、エラー情報レジスタ34−1fの1ビットエラーSDRAM番号不一致検出フラグを「1」に設定しない。
【0127】
エラー照合回路34−1は、故障SDRAM番号判定回路36から、8サイクルのリードデータのうち、7サイクル目で複数ビットエラー検出通知を受信する(T55)。エラー照合回路34−1は、エラー情報レジスタ34−1fの複数ビットエラー検出通知を「1」に設定する(T56)。
【0128】
論理積回路34aは、インクリメントカウンタ34bのカウンタの値が7になった時に、DIMM21からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ34dは、論理積回路34aから伝送されたリードデータ読出完了タイミング信号を受信する(T57)。そして、エラー種類判定回路34−1gは、エラー情報レジスタ34−1fに格納された1ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路34−1gは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路35、CPU15a及び管理LSI18に出力する。
【0129】
実施例2に開示の技術によれば、実施例1におけるエラーしたビットを記憶するメモリコントローラ22及び情報処理装置と比較して使用する記憶素子の数を削減できる。DIMM21の故障はSDRAM24−0〜24−m−1単位で発生することが多いため、SDRAM24−0〜24−m−1毎のエラー位置を検出することによって、本来破棄すべきデータがエラーチェック回路を通過してしまうことを十分な精度で防止することができる。
【0130】
なお、実施例1及び実施例2は、エラー訂正・検出を行うECCコードとして1ビット訂正・2ビット検出のハミング符号を例にして説明したが、これ以外のECCコードを用いた場合も実施例1及び実施例2におけるメモリコントローラ及び情報処理装置を構成することができる。例えば、データを4bit単位のブロックの集合としてエラー判定するエラー訂正符号を使用した場合、1ブロックエラーは訂正可能であるが、2ブロック以上のエラーは訂正不可能であることが知られている(例えば、非特許文献1の「S.Kaneda and E.Fujiwara,“Single Byte Error Correcting−Double Byte Error Detecting Codes for Memory Systems”,IEEE Transactions on computers,Voc.C−31,No.7,pp.596−602,July 1982」を参照)。
【0131】
上記の例に示したS4EC−D4ED(Single 4bit block Error Correction−Double 4bit block Error Detection)符号では、ハミング符号を使用した場合と同様に、3ブロック以上の読み出しデータのエラーを1ブロックエラーと誤判定することがある。このような4ビットブロック訂正及び8ビットブロック検出を行うエラー訂正符号を用いた場合でも、データの故障位置をエラー照合回路に記憶し、DIMMのリード完了時に比較することで誤検出された訂正可能エラー及び訂正不可能エラーを判定することができる。
【符号の説明】
【0132】
1 システムボード
11a、11b メモリモジュール
12a、12b メモリコントローラ
15a、15b CPU
16 ノードコントローラ
17a、17b IOユニット
18 管理LSI
21 DIMM
21h 予備のDIMM
22 メモリコントローラ
22−1 メモリコントローラ
23−0〜23−n−1 RANK
24−0〜24−m−1 SDRAM
27 メモリインタフェース
28 コマンド/アドレスバス
28a、28b 信号バス
29 データバス
29a データバス
31 ECC付加回路
31a 排他的論理回路
32 ECCチェック回路
32a 排他的論理回路
32b 排他的論理回路
32c 故障箇所特定回路
32d 訂正回路
33a コマンド/アドレスバッファ
33b ライトバッファ
33c リードバッファ
34 エラー照合回路
34−1 エラー照合回路
34a 論理積回路
34b インクリメントカウンタ
34c 比較回路
34d フリップフロップ
34e 1ビットエラー情報比較回路
34e−1 1ビットエラー情報保持レジスタ
34e−2 比較回路
34−1e 1ビットエラーSDRAM番号比較回路
34−1e−1 1ビットエラーSDRAM番号保持レジスタ
34−1e−2 比較回路
34f エラー情報レジスタ
34−1f エラー情報レジスタ
34g エラー種類判定回路
34−1g エラー種類判定回路
35 データ破棄回路
36 故障SDRAM番号判定回路
【特許請求の範囲】
【請求項1】
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項2】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項1記載のメモリコントローラ。
【請求項3】
ECC(Error Check and Correction)機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項4】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項3記載の情報処理装置。
【請求項5】
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項6】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項5記載のメモリコントローラ。
【請求項7】
ECC(Error Check and Correction)機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項8】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項7記載の情報処理装置。
【請求項1】
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項2】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項1記載のメモリコントローラ。
【請求項3】
ECC(Error Check and Correction)機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項4】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項3記載の情報処理装置。
【請求項5】
ECC(Error Check and Correction)機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項6】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項5記載のメモリコントローラ。
【請求項7】
ECC(Error Check and Correction)機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ECCの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項8】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項7記載の情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図10】
【図12】
【図14】
【図17】
【図18】
【図19】
【図20】
【図21】
【図23】
【図25】
【図11】
【図13】
【図15】
【図16】
【図22】
【図24】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図10】
【図12】
【図14】
【図17】
【図18】
【図19】
【図20】
【図21】
【図23】
【図25】
【図11】
【図13】
【図15】
【図16】
【図22】
【図24】
【図26】
【公開番号】特開2012−198727(P2012−198727A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2011−61844(P2011−61844)
【出願日】平成23年3月20日(2011.3.20)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願日】平成23年3月20日(2011.3.20)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]