JP2012508425A - ポイズン・ビット・エラー検査コード手法 - Google Patents

ポイズン・ビット・エラー検査コード手法 Download PDF

Info

Publication number
JP2012508425A
JP2012508425A JP2011535800A JP2011535800A JP2012508425A JP 2012508425 A JP2012508425 A JP 2012508425A JP 2011535800 A JP2011535800 A JP 2011535800A JP 2011535800 A JP2011535800 A JP 2011535800A JP 2012508425 A JP2012508425 A JP 2012508425A
Authority
JP
Japan
Prior art keywords
code
event
processed
occurrence
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011535800A
Other languages
English (en)
Other versions
JP5507573B2 (ja
Inventor
アガルワル,ラジャト
ハドルストン,スコット
ブルゼジンスキ,デニス
Original Assignee
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012508425A publication Critical patent/JP2012508425A/ja
Application granted granted Critical
Publication of JP5507573B2 publication Critical patent/JP5507573B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

一実施例では、方法は、イベントの生起及び非生起の何れかを判定する工程であって、生起及び非生起の何れかがイベント判定をもたらす工程と、イベント・ビットを有するコードを処理する工程であって、上記処理は、イベント・ビットがイベント判定に対応するかを判定することにより、判定及びコードに応じる工程と、イベント・ビットがイベント判定に対応しない場合、イベント判定に対応するポイズン・ビットを生成するようコードをコード化する工程とを提供する。

Description

本発明の実施例は、ポイズン・ビット・エラー検査コード手法に関する。
データがメモリを出入りするにつれ、各種エラーが生じ得る。最も一般的には、これは単一ビットのエラーであるが、2ビットのエラーや他のタイプのエラーも生じ得る。エラー検査は通常、データがメモリに書き込まれ、メモリから読み出されるにつれ、データのインテグリティを検査するために使用される。エラー検査は、エラー検出及び/又はエラー訂正を含み得る。エラー検出は、伝送中に雑音又は他の障害によってもたらされるエラーの存在を検出することができることをいう。エラー訂正は、更に、エラーのない元のデータを再構成することができることをいう。利用可能な手法が多く存在している。
エラー訂正コード(ECC)は、エラー検査手法、特に、エラー訂正の一例である。例えば、ECCでは、データがメモリ・バス上で送出されるにつれ、ECC生成ロジック、例えば、排他的論理和アルゴリズムが、ECCを生成するためにデータにわたって算出される。データ及びECCは次いで、併せてメモリに記憶される。データが、その後、メモリから(ECCとともに)アクセスされると、エラー検出及び訂正情報を生成するためにECCエラー・デコード・ロジックがデータに施される。次いで、データは、この情報を使用して訂正することが可能である。
本発明の実施例は、添付図面の図において限定でなく、例として示し、同じ参照符号は同様の構成要素を表す。
本発明の実施例によるシステムを示す図である。 本発明の実施例による方法を示す図である。 本発明の実施例による方法を示す図である。 本発明の実施例による状態図である。
後述の例は、例証の目的のために過ぎず、決して、本発明の実施例を限定することを意図するものでない。よって、例を詳細に説明している場合、又は1つ若しくは複数の例を記載している場合、それらの例は網羅的であると解されるものでなく、説明し、かつ/又は例証している例に本発明の実施例が限定されるものでない。
図1は、実施例によるコンピュータ・システム100を示すブロック図である。一部の実施例では、コンピュータ・システム100は、(最大N個の)複数のプロセッサ102A、102B、102Cを含み得る。本明細書及び特許請求の範囲では、プロセッサ102A、102B、102Cの特定の何れか1つは、102Nとして表し得る。本明細書及び特許請求の範囲記載の「プロセッサ」は、計算タスクを実現するためのハードウェア及びソフトウェア・リソースの何れかの組み合わせに関する。例えば、プロセッサは、予め定義された命令セットにより、データを処理するためのマシン読み出し可能な命令を実行するために中央処理装置(CPU)又はマイクロコントローラを含み得る。プロセッサは複数の処理コアを有するマルチコア・プロセッサを含み得、あるいは、プロセッサは、マルチコア・プロセッサに含み得る処理コア(オペレーティング・システムは処理コアを、実行リソースの完全なセットを備えた個別プロセッサとして認識し得る)を表し得る。他の可能性も存在している。
システム100は更に、メモリ106を含み得る。メモリ106は更に、実行されることができるマシン実行可能な命令132、及び/又は、アクセスされ、処理され、かつ/若しくは操作されることができるデータを記憶し得る。本明細書及び特許請求の範囲記載の「マシン実行可能な」命令は、本明細書及び特許請求の範囲では、1つ又は複数の論理演算を行うために1つ又は複数のマシンによって理解され得る表現に関する。例えば、マシン実行可能な命令132は、1つ又は複数のデータ・オブジェクトに対して1つ又は複数の動作を実行するためにプロセッサ・コンパイラによって解釈可能な命令を含み得る。しかし、これは、マシン実行可能な命令の例に過ぎず、本発明の実施例はこの点に限定されない。メモリ106は、例えば、リード・オンリー、大容量記憶装置、ランダム・アクセス・メモリ、不揮発性メモリ、及び/又は1つ若しくは複数の他のタイプのマシン・アクセス可能なメモリを含み得る。局所キャッシュ104A、104B、104C(プロセッサに対して局所のキャッシュ)を使用してメモリが共有され、同期化されるマルチプロセッサ・システムでは、メモリに記憶されたデータは、キャッシュ・ラインとして表し得る。
ロジック130は、システム100の何れかの部分の上、又は前述の部分内に含まれ得る。ロジック130は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせ(例えば、ファームウェア)を含み得る。例えば、ロジック130は、本明細書及び特許請求の範囲記載の動作を行うための回路(すなわち、1つ又は複数の回路)を含み得る。例えば、ロジック130は、1つ若しくは複数のディジタル回路、1つ若しくは複数のアナログ回路、1つ若しくは複数のステート・マシン、プログラム可能なロジック、及び/又は、1つ若しくは複数のASIC(特定用途向け集積回路)を含み得る。ロジック130は、1つ又は複数の動作を行うために配線し得る。あるいは、又は更には、ロジック130は、前述の動作を行うために、メモリ106などのメモリに記憶されたマシン実行可能な命令132に実施し得る。あるいは、又は更に、ロジック130はファームウェアで実施し得る。ロジックは、システム100の種々の構成部分に(メモリ・コントローラ114などに)含み得る。ロジック130は、メモリ・コントローラ114における個別ブロックとして示しているが、メモリ・コントローラ114及びロジック130は、そうでない場合には同じブロックに含まれ得る。一般に、ロジック130は、本明細書及び特許請求の範囲記載の種々の構成部分により、種々の機能を行うために使用し得る。
ハブ・コントローラ108は、メモリ106、並びに、処理コア102A、102B及び102Cそれぞれを互いに結合し得るホスト・ブリッジ/ハブ・システムを含み得る。ハブ・コントローラ108は、1つ又は複数の集積回路チップ(インテル(登録商標)社から市場で入手可能な集積回路チップセット(例えば、グラフィクス、メモリ、及びI/Oコントローラ・ハブ・チップセット)から選択可能なものなど)を含み得るが、他の1つ又は複数の集積回路チップを更に、又は、あるいは使用し得る。例えば、ハブ・コントローラ108は、入出力制御ハブ(ICH)、メモリ制御ハブ(MCH)、又はグラフィクス/メモリ制御ハブ(GMCH)を含み得る。システム100は、ICH及びMCHなどの2つのハブ・コントローラ、又は単一のハブ・コントローラのみを含み得るが、本発明の実施例はシステム100内のハブ・コントローラの数に限定されない。
ハブ・コントローラ108は、メモリ・バス112を介してメモリ106と通信し、システム・バス110を介してプロセッサ102A、102B、102Cと通信し得る。ハブ・コントローラ108は、システム100内の他の装置(図示せず)、並びに、メモリ106、及びプロセッサ102A、102B、10C間のデータの移動を管理するためにメモリ・コントローラ114を含み得る。あるいは、メモリ・コントローラ114は、プロセッサ102A、102B、102Cのうちの1つ又は複数とダイ上で一体化され得る。
システム100は更に、ディレクトリ・キャッシュ116を含み得る。ディレクトリ・キャッシュ116は、キャッシュ・ライン、又はメモリのブロックそれぞれについての情報を保持し得る。例えば、ディレクトリ・キャッシュ116は、メモリのブロックそれぞれの状態(例えば、共有されている、キャッシュされていない、又は排他的である)、どの局所キャッシュ(プロセッサ102A、102B、102Cのうちの1つに対応する)が特定のキャッシュ・ラインの複製を有しているか、及びキャッシュ・ラインがダーティであるか否かを示し得る。
例えば、一実施例では、データに対する要求は全て、ディレクトリ・キャッシュ116に送出される。ディレクトリ・キャッシュ116は次いで、その局所キャッシュにデータを記憶したとディレクトリ・キャッシュ116が示す何れかの数のプロセッサ102A、102B、102Cに、データに対する要求を転送し得る。例として、ディレクトリ・キャッシュ116は、NノードについてNビットのベクトル・マップを維持し得る。ここで、各ビットは、対応するノードが、特定のキャッシュ・ラインのキャッシュされた複製を維持しているか否かを示す。
プロセッサ102A、102B、102C、メモリ106、及びバス110、112は、例えばシステム・マザーボード118などの単一の回路基板に含まれ得るが、本発明の実施例はこの点に限定されない。
図2は、本発明の実施例による方法を示す。図2の方法はブロック200で始まり、ブロック202に続き得る。ブロック202では、方法は、イベントの生起及び非生起の何れかを判定し、生起及び非生起の何れかがイベント判定をもたらし得る。
イベントは例えば、データがキャッシュされていることを含み得る。例えば、一実施例では、プロセッサ102Nはデータを修正し、これをその局所キャッシュにキャッシュし、次いで、データをもう一度、メモリ106などのメモリに書き込み得る。この例では、データが局所キャッシュに記憶されるとイベントが生じたと判定し得る。別の例として、イベントは、メッセージが記憶されていることを含み得る。例えば、スーパーコンピュータなどの特定のシステムでは、システム内の種々のマイクロプロセッサ上で実行している処理はメッセージを互いに転送し得る。この例では、一処理が、別の処理のためのメッセージを生成し、記憶すると、イベントが生じたと判定し得る。
ブロック204では、方法は、イベント・ビットを有するコードを処理する工程を含み得、上記処理は、イベント判定及びコードに応じる。「イベント・ビット」は、イベントの生起又は非生起を示すようセットし得る、コード内のビットを表す。イベント・ビットは、静的なビット位置(例えば、ビット位置0)を含み得るか、又は、動的なビット位置(例えば、特定のプロセッサがイベントを生成した旨を示すためのビット位置3)を含み得る。よって、イベントが生じたと判定された場合、イベント・ビットは1つの値にセットされ、さもなければ、イベントが生じていないと判定された場合、イベント・ビットは別の値にセットされる。「セット」は、イベントの生起を示すために「1」にビットをセットし、又はイベントの非生起を示すために「0」にビットをセットすることを表し得る。あるいは、「セット」は、イベントの生起を示すために「0」にビットをセットし、又はイベントの非生起を示すために「1」にビットをセットすることを表し得る。
この意味合いで、「イベント判定及びコードに応じてコードを処理する工程」は、ブロック206において、コードのイベント・ビットがイベント判定に対応しているかを判定し、否定の場合、コードがコード化され、さもなければ、そのままの状態にされる工程を表す。イベント・ビットがイベント判定と矛盾する場合には、イベント・ビットはイベント判定に対応しない。例えば、イベント・ビットが値「0」(この値は、イベントがディセーブルされたか、又は生じていない旨を表すよう構成される)を有する場合であり、かつ、イベントが生じたと判定された場合、イベント・ビットはイベント判定に対応しない。
逆に、イベント・ビットが、イベント判定と矛盾しない、イベントの生起を示す場合、イベント・ビットはイベント判定に対応する。例えば、イベント・ビットが値「1」(この値は、イベントが生じた旨を表すよう構成される)を有する場合であり、かつ、イベントが生じたと判定された場合、イベント・ビットはイベント判定に対応する。
ブロック208では、イベント・ビットがイベント判定に対応しない場合、コードは、イベント判定に対応するポイズン・ビットを生成するようコード化される。本明細書及び特許請求の範囲記載の「コード化」は、コードの1つ又は複数のビットのポイズニングを表す。本明細書及び特許請求の範囲記載の「ポイズニング」は、下にあるコードの一般的な効果性を変えることなく、イベントの生起又は非生起を示すためのイベント・ビット位置における1ビット又は0ビットを記憶するようポイズン・マスク(例えば、固定パターン・コード)を施す工程を表す。更に、エラー検査ロジックが、処理済みの第1のコードを生成するようコードに施され、処理済みの第2のコードを生成するよう、デコードされたコードに施されると、処理済みの第1のコード及び処理済みの第2のコードのうちの一方のみが訂正可能でない。すなわち、更なるコード化を有するデータは、メモリからもう一度読み出された場合、更なるコード化なしでデータから、比較的簡単に、区別可能であるはずである。このことは、一般的なメモリ・エラーが存在している場合にも該当し得る。このことは図3で更に詳細に説明する。
本発明の実施例では、例えば、そのエラー検査及び/又は訂正機能が、コード化されていないエラー検査コードと精度がほぼ同じである場合、ポイズン・マスクは、下にあるエラー検査コードの一般的な効果性を変えない。更に、好ましくは、各種エラーに対するエイリアシングが全くないか、又はほとんどない。例えば、一般的に効果的なエラー検査コードは、同じメモリ装置において2ビットのエラーに対して、又は、1ビット若しくは1ワイヤのエラーに対してエイリアシングが生じないエラー検査コードである。ここで、サイレント・データ破損(SDC)エラー及び検出された回復不可能なエラー(DUE)は、統計的に稀に(例えば、他の2ビット・エラーの場合、2千4百万分の1、チップキルの場合、2万2千分の1)生じる。一実施例では、コード化は、単一のビットをポイズニングするためにポイズン・マスクを施す工程を含み得る。
当業者が分かるように、エラー検査コードをコード化するために使用されるロジックは、エラー検査コード自体に依存する。当業者が分かるように、ECCコードなどのエラー検査コードの生成は多くの場合、労働集約的な作業であり、機密の、又はトレード・シークレットのデータである。コード化が基礎とするコードの複雑性を前提とすれば、更なるコード化を行うために使用されるロジックは、数学的解析及び試行錯誤を必要とする。しかし、満たす対象の要件の説明は、しかしながら、本発明の実施例に応じてロジックを当業者が生成することを可能にする。
例えば、一実施例では、データがキャッシュされている場合(ビット1が、データがキャッシュされていることを示す場合)、エラー検査コード01010100101101000(ここで、ビット位置0は、データがキャッシュされているか否かを示すためのイベントを含む)は、ビット0でなくビット1を記憶するようビット位置0をポイズニングすることにより、イベントに応じてコード化する必要がある。この例では、コード化されたエラー検査コードは01010100101101001をもたらす。他方で、データがキャッシュされている場合(ビット1が、データがキャッシュされていることを示す場合)生成されたエラー検査コード01010100101101001(ビット位置0は、データがキャッシュされているか否かを示すために使用される)は、コード化しなくてよい。
一実施例では、イベント・ビットは、特定のプロセッサ102Nが、キャッシュされたデータを有している旨を示すための動的なビット位置に対応する。例えば、8つのプロセッサ(プロセッサ0乃至7)を有しており、キャッシング・プロセッサ102Nがプロセッサ6であるシステムでは、イベント・ビットはビット#7に対応する。よって、エラー検査コードが01010100100101000を含む場合、そのキャッシュにプロセッサ6がキャッシュされたデータを有する旨を示すようビットをセットすることは、エラー検査コード01010100101101000をもたらし得る。同様に、プロセッサ#2がキャッシング・プロセッサである場合、エラー検査コードはエラー検査コード01010100100101100をもたらし得る。別の実施例では、イベント・ビットは、プロセッサ102Nのうちの何れか1つによってデータがキャッシュされている旨を示すための静的ビットに対応する。例えば、エラー検査コードが01010100100101000を含み、イベント・ビットが、プロセッサが、キャッシュされたデータを有している旨を示すためのビット0を含む場合、エラー検査コードは、プロセッサ2がキャッシュ・プロセッサであるかプロセッサ7がキャッシュ・プロセッサであるかにかかわらず、01010100100101001を含む。
一実施例では、コードはエラー検査コードを含み得る。エラー検査コードは例えば、エラー訂正コード(ECC)、又はCRC(巡回冗長度コード)を含み得る。しかし、本発明の実施例は前述の例に限定されない。
一実施例では、処理されたコードは、対応するデータとともにメモリに記憶されたECCコードを含み得る。例えば、図4に示すように、データ402のキャッシュ・ラインが、メモリ106への書き込みに利用可能な場合、ECC生成ロジック404は、データ402の記憶中に生じ得る特定のエラー(例えば、1ビット・エラー又は2ビット・エラー)を訂正するためにメモリ106にデータ402とともに記憶されたECC(イベント・ビットを有する)406を生成するようデータ402に適用し得る。上述の通り、かつ、428の決定ブロックで示すように、ECC406のイベント・ビットがイベント判定に対応しない場合、ECC406はポイズン・マスク408を使用してコード化される。ECC406のイベント・ビットがイベント判定に対応する場合、(ブロック408でポイズン・マスクを施すことなく)処理済みのコード410がデータ402とともにメモリ106に記憶される。
図2の方法はブロック206で終了し得る。
一実施例では、キャッシュ・ラインは複数の部分に分けることができ、エラー検査コードは、キャッシュ・ラインの部分毎に生成し得る。例えば、キャッシュ・ラインは、半分の部分2つに分け得、エラー検査コードは、半分の部分毎に生成し得る。更に、エラー検査コードをコード化する工程は、単一のイベントを推論するためにキャッシュ・ライン部分の少なくとも1つに単一のマスクを施す工程を含み得る。あるいは、キャッシュ・ラインの各部分に対応するマスクは、複数のイベントを推論するよう施し得る。このことは、エラー訂正の機能の低下につながり得るが、更に、サイレント・データ破損(SDC)及び/又は検出された回復不可能なエラー(DUE)に対するエイリアシングの確率を低減し得る。
図2の方法により、エラー検査コードを記憶した後、方法は、図3の方法に更に続き得る。図3の方法は、ブロック300で始まり、ブロック302に続く。ここで、方法は、メモリからコードを読み出す工程(「コードを読み出す工程」)を含み得る。一実施例では、図4を参照すれば、方法は、対応するデータ402とともに、メモリ106から、処理済みのECCコード410を読み出す工程を含み得る。
ブロック304では、方法は、処理済みの複数のコードを生成するよう、読み出されたコードを処理する工程を含み得る。
一実施例では、「処理済みの複数のコードを生成するよう読み出されたコードを処理する工程」は、デコードされた読み出されたコードを生成するよう、読み出されたコードをデコードする工程と、処理済みの第1のコードを生成するよう、読み出されたコードに対してコード検査を行う工程と、処理済みの第2のコードを生成するよう、デコードされた読み出されたコードに対してコード検査を行う工程とを表す。読み出されたコードは、メモリから読み出されたコード化されたコードを表す。デコードされた読み出されたコードは、コードをコード化するよう施されたコードの逆数を施すことから生じるコードを表す。
図4を参照すれば、一実施例では、データ402及び処理済みのECC410は、メモリ106から読み出される。この点で、メモリ106から読み出されるECC410は「読み出されたコード」として表す。読み出されたコードは次いで、デコードされた読み出されたコード418を生成するようデコードされる(414)。読み出されたコード412は、処理済みの第1のコード420を生成するためにコード検査ロジック416にわたって実行され、デコードされた読み出されたコード418は、処理済みの第2のコード422を生成するようコード検査ロジック416にわたって実行される。
コード検査ロジック416は、処理済みのコードによって生成し得る。例えば、処理済みのECCがポイズンされている場合(すなわち、ポイズン・マスクがECCに施された場合)、コード検査ロジック416が生成され、よって、処理済みのECC410がメモリ106から読み出されると(読み出されたコード412)、デコードされた読み出されたコード418に対して算出されるコード検査ロジック416は、エラーを生じないか、又は訂正可能なエラーを生じ、読み出されたコード412に対して算出されるコード検査ロジック416は、訂正可能でないエラーを生じる。
同様に、処理済みのECCがポイズンされていない場合、コード検査ロジック216が生成され、よって、処理済みのECC210がメモリ106から読み出されると(読み出されたコード212)、デコードされた読み出されたコード218にわたって算出されるコード検査ロジック216は訂正可能でないエラーを生じ、読み出されたコード212にわたって算出されるコード検査ロジック216は、エラーをもたらさないか、又は訂正可能なエラーを生じる。
やはり、更なるコード化を行うために使用されるロジックが、このようにしてエラー検査ロジック216を機能させるために数学的解析、及び試行錯誤を必要とし得る。
ブロック306では、方法は、処理された複数のコードのうちの1つから、訂正可能なコードを識別する工程を含み得る。本明細書及び特許請求の範囲記載の「訂正可能なコード」は、処理済みの複数のコードのうちの1つを表し、ここで、処理済みのコードのうちの1つのみが訂正可能でないコードであり、処理済みの他のコードは、ECC検査の結果、訂正可能なエラーを有しているか、又はエラーを何ら有していない。処理済みのコードの両方/全てが、訂正可能でないエラーをもたらしたか、又は、処理済みのコードの両方/全てが、訂正可能なエラーをもたらしたか、又はエラーを何らもたらさなかった場合、エイリアシングが生じ、訂正可能なコードを識別することが可能でない。
表1は、訂正可能なコードを識別することが可能であるかを判定するために使用し得る決定テーブルの例を示す。この例では、マトリクスAは読み出された(コード化された)コードに対して行われるECC検査ロジックに表し、マトリクスBはデコードされたコードに対して行われるECC検査ロジックを表す。表の最上部における列は、読み出された(コ―ド化された)コードに対してコード検査を行うことによって生成される処理済みの第1のコードの結果の値を表し、左の列は、デコードされたコードに対してコード検査を行うことによって生成される処理済みの第2のコードの結果を表す。表が示すように、コードは、第1の処理済みのコード及び第2の処理済みのコードが回復可能でないエラーを有し、第1の処理済みのコードにエラーがないか、又は第1の処理済みのコードが訂正可能なエラーを有するというシナリオにおいて訂正可能でない。他方で、第1の処理済みのコード及び第2の処理済みのコードの一方が、訂正可能でないエラーを有し、第1の処理済みのコード及び第2の処理済みのコードの他方にエラーがないか、上記他方が訂正可能なエラーを有する場合、訂正可能なコードが存在している。この後者のシナリオでは、訂正可能なコードは、エラーがないか、又は訂正可能なエラーを有する処理済みのコードである。
Figure 2012508425
図4を参照すれば、第1の処理済みのコード420及び第2の処理済みのコード422のうちの一方が訂正可能でなく、第1の処理済みのコード420及び第2の処理済みのコード422のうちの他方が訂正可能である(か、又はエラーがない)場合、訂正可能なコード426は例えば、選択ロジック424によって識別し得る。
ブロック308では、方法は、訂正可能なコードが識別された場合、イベントの生起及び非生起の一方を判定するよう訂正可能なコードのイベント・ビットを読み出す工程を含み得る。訂正可能なコードが識別されると、そのコードのイベント・ビットは、イベントが生じたか否かを判定するために読み出し得る。例えば、ビット値0がイベントの非生起を表し、ビット値1がイベントの生起を表す場合、訂正可能なコードのイベント・ビットにおけるビット値0は、イベントが生じなかった旨を示す一方、訂正可能なコードのイベント・ビットにおけるビット値1はイベントが生じた旨を示す。
方法はブロック310で終了し得る。
以下の明細書では、本発明は、その具体的な実施例を参照して説明している。しかし、それから逸脱しない限り、種々の修正及び変更を前述の実施例に対して行い得るということは明らかとなろう。よって、本願の明細書及び図面は、限定的な意味合いでなく例証的な意味合いで解されるものとする。

Claims (20)

  1. 少なくとも一ビットをポイズンするための装置であって、前記装置は、
    共有メモリに記憶する対象のキャッシュ・ラインに対応するECC(エラー訂正コード)を生成し、前記ECCはイベント・ビットを有し、
    イベント判定を生成するようイベントの生起及び非生起の一方を判定し、
    前記イベント・ビット及び前記イベント判定に応じて前記ECCコードを処理し、
    前記処理されたECCコード及び対応するキャッシュ・ラインをメモリに記憶する
    ためのロジックを含む装置。
  2. 請求項1記載に装置であって、前記共有メモリは複数のプロセッサによって共有され、前記対応するキャッシュ・ラインは前記複数のプロセッサのうちの一プロセッサによって記憶されるよう要求され、前記イベントの生起及び非生起の一方を判定するためのロジックは、前記一プロセッサがその局所キャッシュにおいて更にデータをキャッシュしたかを判定するためのロジックを含む装置。
  3. 請求項1記載の装置であって、前記イベント・ビット及び前記イベント判定に応じて前記ECCコードを処理するためのロジックは、前記イベント・ビットが前記イベント判定に対応しているかを判定するためのロジックを備え、前記イベント・ビットが前記イベント判定に対応していない場合、前記イベント判定に対応するポイズン・ビットを生成するよう前記ECCをコード化するためのロジックを含む装置。
  4. 請求項3記載の装置であって、
    前記メモリから前記ECCを読み出し(「読み出されたコード」)、
    第1の処理済みのコード及び第2に処理済みのコードを生成するよう、前記読み出されたコードを処理し、
    前記第1の処理済みのコード及び前記第2の処理済みのコードに少なくとも部分的に基づいて前記イベントの前記生起を推論する
    ためのロジックを更に含む装置。
  5. 請求項4記載の装置であって、第1の処理済みのコード及び第2の処理済みのコードを生成するよう、前記読み出されたコードを処理するためのロジックは、前記読み出されたコードをデコードして、デコードされた読み出されたコードを生成し、前記デコードされた読み出されたコードに対してコード検査を行い、前記読み出されたコードに対してコード検査を行うためのロジックを含む装置。
  6. 請求項5記載の装置であって、前記第1の処理済みのコード及び前記第2の処理済みのコードに少なくとも部分的に基づいて前記イベントの前記生起を推論するためのロジックは、
    訂正可能なコードを識別し、
    前記訂正可能なコードの前記イベント・ビットを読み出して、前記イベントの前記生起及び前記非生起のうちの一方を判定する
    ためのロジックを含む装置。
  7. システムであって、
    複数のプロセッサと、
    前記複数のプロセッサに結合された共有メモリと、
    前記複数のプロセッサに結合され、
    共有メモリに記憶する対象のキャッシュ・ラインに対応するECC(エラー訂正コード)を生成し、
    イベントの生起及び非生起の一方を判定して、イベント判定を生成し、
    前記イベント判定に応じて前記ECCを処理し、
    前記処理されたECC及び対応するキャッシュ・ラインを前記メモリに記憶する
    ためのメモリ・コントローラ・ロジックを有する集積回路と
    を備えるシステム。
  8. 請求項7記載のシステムであって、前記対応するキャッシュ・ラインは前記複数のプロセッサのうちの一プロセッサによって記憶されるよう要求され、前記イベントの生起及び非生起の何れかを判定するための前記メモリ・コントローラ・ロジックは、前記一プロセッサがその局所キャッシュにおいて更にデータをキャッシュしたかを判定するためのロジックを含むシステム。
  9. 請求項7記載のシステムであって、前記イベント・ビット及び前記イベント判定に応じて前記ECCコードを処理するためのロジックは、前記イベント・ビットが前記イベント判定に対応しているかを判定するためのロジックを備え、前記イベント・ビットが前記イベント判定に対応していない場合、前記イベント判定に対応するポイズン・ビットを生成するよう前記ECCをコード化するためのロジックを含むシステム。
  10. 請求項7記載のシステムであって、前記メモリ・コントローラ・ロジックは更に、
    前記メモリから前記コードを読み出し(「読み出されたコード」)、
    処理済みの複数のコードを生成するよう、前記読み出されたコードを処理し、
    前記複数の処理済みのコードのうちの一方から訂正可能なコードを識別し、
    訂正可能なコードが識別された場合、前記訂正可能なコードの前記イベント・ビットを読み出して、前記イベントの前記生起及び前記非生起のうちの一方を判定するシステム。
  11. 請求項10記載のシステムであって、複数の処理済みのコードを生成するよう前記読み出されたコードを処理するための前記メモリ・コントローラ・ロジックは、前記読み出されたコードをデコードして、デコードされた読み出されたコードを生成し、前記デコードされた読み出されたコードに対してコード検査を行い、前記読み出されたコードに対してコード検査を行うためのロジックを含むシステム。
  12. 請求項11記載のシステムであって、前記読み出されたコードをデコードして、デコードされた読み出されたコードを生成するためのロジックは、前記読み出されたコードに対して、前記ポイズン・マスクの逆関数を施すシステム。
  13. 方法であって、
    イベントの生起及び非生起の一方を判定する工程であって、前記生起及び前記非生起の前記一方がイベント判定をもたらす工程と、
    イベント・ビットを有するコードを処理する工程であって、前記処理は、
    前記イベントが前記イベント判定に対応しているかを判定し、
    前記イベント・ビットが前記イベント判定に対応していない場合、
    前記イベント判定に対応するポイズン・ビットを生成するよう前記コードをコード化すること
    により、前記判定及び前記コードに応じる工程と
    を含む方法。
  14. 請求項13記載の方法であって、前記コードをメモリに記憶する工程を更に含む方法。
  15. 請求項14記載の方法であって、
    前記メモリから前記コードを読み出す工程と(「読み出されたコード」)、
    複数の処理済みのコードを生成するよう、前記読み出されたコードを処理する工程と、
    前記複数の処理済みのコードのうちの一方から、訂正可能なコードを識別する工程と、
    訂正可能なコードが識別された場合、前記訂正可能なコードの前記イベント・ビットを読み出して、前記イベントの前記生起及び前記非生起の一方を判定する工程と
    を更に含む方法。
  16. 請求項15記載の方法であって、前記読み出されたコードを処理する工程は、
    前記読み出されたコードをデコードする工程と、
    第1の処理済みのコードを生成するよう、読み出されたコードに対してコード検査を行う工程と、
    第2の処理済みのコードを生成するよう、前記読み出されたコードに対してコード検査を行う工程と
    を更に含む方法。
  17. 命令を記憶させた製品であって、前記命令は、マシンによって実行されると、
    イベントの生起及び非生起の一方を判定する工程であって、前記生起及び前記非生起の前記一方がイベント判定をもたらす工程と、
    イベント・ビットを有するコードを処理する工程であって、前記処理は、
    前記イベントが前記イベント判定に対応しているかを判定し、
    前記イベント・ビットが前記イベント判定に対応していない場合、
    前記イベント判定に対応するポイズン・ビットを生成するよう前記コードをコード化すること
    により、前記判定及び前記コードに応じる工程と
    を実行させる製品。
  18. 請求項17記載の製品であって、マシンによって実行されると、前記コードをメモリに記憶させる命令を更に含む製品。
  19. 請求項18記載の製品であって、マシンによって実行されると、
    前記メモリから前記コードを読み出す工程と(「読み出されたコード」)、
    複数の処理済みのコードを生成するよう、前記読み出されたコードを処理する工程と、
    前記複数の処理済みのコードのうちの一方から、訂正可能なコードを識別する工程と、
    訂正可能なコードが識別された場合、前記訂正可能なコードの前記イベント・ビットを読み出して、前記イベントの前記生起及び前記非生起の一方を判定する工程と
    を実行させる命令を更に含む製品。
  20. 請求項19記載の製品であって、前記読み出されたコードを処理する工程を実行させる命令は、マシンによって実行されると、
    前記読み出されたコードをデコードする工程と、
    第1の処理済みのコードを生成するよう、読み出されたコードに対してコード検査を行う工程と、
    第2の処理済みのコードを生成するよう、前記読み出されたコードに対してコード検査を行う工程と
    を実行させる命令を含む製品。
JP2011535800A 2008-12-29 2009-12-10 ポイズン・ビット・エラー検査コード手法 Active JP5507573B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/317,849 US8438452B2 (en) 2008-12-29 2008-12-29 Poison bit error checking code scheme
US12/317,849 2008-12-29
PCT/US2009/067530 WO2010077768A2 (en) 2008-12-29 2009-12-10 Poison bit error checking code scheme

Publications (2)

Publication Number Publication Date
JP2012508425A true JP2012508425A (ja) 2012-04-05
JP5507573B2 JP5507573B2 (ja) 2014-05-28

Family

ID=42286404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011535800A Active JP5507573B2 (ja) 2008-12-29 2009-12-10 ポイズン・ビット・エラー検査コード手法

Country Status (6)

Country Link
US (1) US8438452B2 (ja)
EP (1) EP2370899B1 (ja)
JP (1) JP5507573B2 (ja)
KR (1) KR101425704B1 (ja)
CN (1) CN102171658B (ja)
WO (1) WO2010077768A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3010598B1 (fr) * 2013-09-06 2017-01-13 Sagem Defense Securite Procede de gestion de coherence de caches
WO2017164844A1 (en) * 2016-03-22 2017-09-28 Hewlett Packard Enterprise Development Lp Memory
KR102410021B1 (ko) * 2017-11-20 2022-06-21 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법
US11775382B2 (en) 2020-12-09 2023-10-03 Micron Technology, Inc. Modified parity data using a poison data unit
US11416331B2 (en) 2020-12-09 2022-08-16 Micron Technology, Inc. Modified checksum using a poison data pattern
CN116783654A (zh) * 2020-12-26 2023-09-19 英特尔公司 自适应错误校正以提高系统存储器可靠性、可用性和可服务性(ras)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0327433A (ja) * 1989-06-23 1991-02-05 Nec Corp 電子ディスク装置
JPH1050004A (ja) * 1996-07-29 1998-02-20 Nec Ibaraki Ltd 磁気ディスク制御装置
JPH113288A (ja) * 1997-06-10 1999-01-06 Nec Software Ltd キャッシュメモリ装置およびキャッシュメモリの障害制御方法
JP2000322317A (ja) * 1999-04-13 2000-11-24 Hewlett Packard Co <Hp> アドレスエラーから回復するためのシステムおよび方法
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
JP2005071224A (ja) * 2003-08-27 2005-03-17 Nec Corp ディレクトリ情報記憶システムおよびメモリコントローラ
JP2008048278A (ja) * 2006-08-18 2008-02-28 Fujitsu Ltd ノード装置、制御装置、制御方法及び制御プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
US6622268B2 (en) * 2000-11-29 2003-09-16 Intel Corp Method and apparatus for propagating error status over an ECC protected channel
US6886116B1 (en) * 2001-07-26 2005-04-26 Emc Corporation Data storage system adapted to validate error detection logic used in such system
US20030126409A1 (en) * 2001-12-28 2003-07-03 Toni Juan Store sets poison propagation
US20040163030A1 (en) * 2003-02-13 2004-08-19 International Business Machines Corporation Iterative error correcting system
US7401269B2 (en) * 2003-05-10 2008-07-15 Hewlett-Packard Development Company, L.P. Systems and methods for scripting data errors to facilitate verification of error detection or correction code functionality
US7353433B2 (en) * 2003-12-08 2008-04-01 Intel Corporation Poisoned error signaling for proactive OS recovery
JP4723265B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 エラー検出訂正装置の制御方法、エラー検出訂正装置、情報処理システム、エラー検出訂正装置の制御プログラム、データ処理装置
CN100364305C (zh) * 2005-06-03 2008-01-23 重庆邮电学院 工业控制网络的信息安全方法及安全功能块
US7307902B2 (en) * 2005-08-30 2007-12-11 Hewlett-Packard Development Company, L.P. Memory correction system and method
TW200801513A (en) 2006-06-29 2008-01-01 Fermiscan Australia Pty Ltd Improved process
US7500170B2 (en) 2006-08-14 2009-03-03 Motorola, Inc. Method and apparatus for error detection in a data block
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US20090019306A1 (en) * 2007-07-11 2009-01-15 Herbert Hum Protecting tag information in a multi-level cache hierarchy
US8201069B2 (en) * 2008-07-01 2012-06-12 International Business Machines Corporation Cyclical redundancy code for use in a high-speed serial link

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0327433A (ja) * 1989-06-23 1991-02-05 Nec Corp 電子ディスク装置
JPH1050004A (ja) * 1996-07-29 1998-02-20 Nec Ibaraki Ltd 磁気ディスク制御装置
JPH113288A (ja) * 1997-06-10 1999-01-06 Nec Software Ltd キャッシュメモリ装置およびキャッシュメモリの障害制御方法
JP2000322317A (ja) * 1999-04-13 2000-11-24 Hewlett Packard Co <Hp> アドレスエラーから回復するためのシステムおよび方法
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
JP2005071224A (ja) * 2003-08-27 2005-03-17 Nec Corp ディレクトリ情報記憶システムおよびメモリコントローラ
JP2008048278A (ja) * 2006-08-18 2008-02-28 Fujitsu Ltd ノード装置、制御装置、制御方法及び制御プログラム

Also Published As

Publication number Publication date
CN102171658A (zh) 2011-08-31
EP2370899A4 (en) 2012-08-29
JP5507573B2 (ja) 2014-05-28
CN102171658B (zh) 2015-02-11
KR101425704B1 (ko) 2014-08-07
US20100169739A1 (en) 2010-07-01
WO2010077768A3 (en) 2010-09-16
EP2370899B1 (en) 2016-11-02
US8438452B2 (en) 2013-05-07
KR20110050720A (ko) 2011-05-16
EP2370899A2 (en) 2011-10-05
WO2010077768A2 (en) 2010-07-08

Similar Documents

Publication Publication Date Title
US7437597B1 (en) Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines
JP4643479B2 (ja) アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
JP4498295B2 (ja) アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法
US7761780B2 (en) Method, apparatus, and system for protecting memory
US8468416B2 (en) Combined group ECC protection and subgroup parity protection
JP5507573B2 (ja) ポイズン・ビット・エラー検査コード手法
US11372720B2 (en) Systems and methods for encoding metadata
KR102416305B1 (ko) 메모리 모듈 데이터 객체 처리 시스템 및 방법
US11409608B2 (en) Providing host-based error detection capabilities in a remote execution device
JP2020038650A (ja) ベクトルプロセッサ格納
US7577890B2 (en) Systems and methods for mitigating latency associated with error detection and correction
JP5213061B2 (ja) ミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラム
US8589735B2 (en) Creating randomly ordered fields while maintaining the temporal ordering based on the value of the fields
JP2007257628A (ja) 記憶された情報データの読み取りのための誤り訂正と誤り検出の方法およびそのための記憶制御ユニット
US12066888B2 (en) Efficient security metadata encoding in error correcting code (ECC) memory without dedicated ECC bits
CN114116530B (zh) 存储控制方法及装置、数据处理方法及装置以及存储介质
JP2891897B2 (ja) ストアインキャッシュの障害処理システム
JP2010140132A (ja) メモリシステム及びメモリコントローラ
JPH07129466A (ja) 階層記憶装置
JPH04130550A (ja) メモリ装置
JPH02168334A (ja) コンピュータ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130305

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140319

R150 Certificate of patent or registration of utility model

Ref document number: 5507573

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250