JP5349470B2 - メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラを含むメモリ・システム及び方法 - Google Patents

メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラを含むメモリ・システム及び方法 Download PDF

Info

Publication number
JP5349470B2
JP5349470B2 JP2010513832A JP2010513832A JP5349470B2 JP 5349470 B2 JP5349470 B2 JP 5349470B2 JP 2010513832 A JP2010513832 A JP 2010513832A JP 2010513832 A JP2010513832 A JP 2010513832A JP 5349470 B2 JP5349470 B2 JP 5349470B2
Authority
JP
Japan
Prior art keywords
memory
error
raid
dimm
data
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.)
Active
Application number
JP2010513832A
Other languages
English (en)
Other versions
JP2010531499A (ja
Inventor
アルヴェス、ルイス
クラーク、ウィリアム
デル、ティモシー
デューケット、トマス
ガウアー、ケヴィン
ラストラス−モンターノ、ルイス
オコーナー、ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010531499A publication Critical patent/JP2010531499A/ja
Application granted granted Critical
Publication of JP5349470B2 publication Critical patent/JP5349470B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1045Nested RAID, i.e. implementing a RAID scheme in another RAID scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1064Parity-single bit-RAID3, i.e. RAID 3 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、コンピュータ・メモリに係り、さらに詳細に説明すれば、RAIDメモリ・システム内のエラー検出及び訂正に係る。
コンピュータ・システムは、コンピュータの電源がオンにされ且つ動作可能である間に、オペレーティング・システム・ソフトウェア、プログラム及び他のデータのような情報を保持するために、相当な量の高速RAM(ランダム・アクセス・メモリ)を必要とすることが多い。一般に、この情報は2進数であって、データのビットとして知られている1又は0のパターンから成る。データの諸ビットは、より高いレベルにグループ化され且つ編成されることが多い。例えば、1バイトは、一般には8ビットから成るが、エラーの識別及び訂正に使用するための情報を含む場合には、1バイトは追加のビット(例えば、第9ビット、第10ビット等)から成ることがある。通常、この2進情報は、コンピュータ・システムの電源オン及び初期プログラム・ロード(IPL)中に、ハード・ディスク・ドライブ(HDD)のような不揮発性ストレージ(NVS)からRAMにロードされる。また、データは、通常のコンピュータ動作中に、NVSを対象としてページ・イン及びページ・アウトされる。一般に、コンピュータ・システムによって使用される全てのプログラム及び情報は、より小さく、より高価なダイナミックRAM(DRAM)に収容することができず、また収容することができたとしても、コンピュータ・システムの電源がオフにされるときに、当該データが失われるであろう。現在では、複数のHDDを使用してNVSシステムを構築することが普通である。
コンピュータのRAMは、モジュールの形式を有するプラグ接続可能な複数のサブシステムから設計されることが多いから、システム及びアプリケーションごとの特定のメモリ要件に応じて、インクリメンタルな量のRAMを各コンピュータに追加することができる。「DIMM」、すなわちデュアル・インライン・メモリ・モジュールは、現用中の最も普及しているメモリ・モジュールである。DIMMは、1つ以上のメモリ装置を含む薄い長方形のカードであって、当該カード上に搭載された、1つ以上のレジスタ、バッファ、ハブ装置、不揮発性ストレージ(例えば、消去可能なプログラマブルROM又は「EPROM」)及び種々の受動装置(例えば、抵抗器及びコンデンサ)を含むことがある。DIMMに搭載されることが多い動的メモリ・チップ又はDRAMは、その内部に格納したデータが失われることを防止するために、これを定期的にリフレッシュする必要がある。DRAMチップは、当初は非同期式装置であったが、最近のチップ、すなわち同期DRAM(SDRAM)(例えば、シングル・データ・レート又は「SDR」、ダブル・データ・レート又は「DDR」、DDR2、DDR3等)は、性能を改良するために同期インタフェースを有する。メモリ帯域幅を改良し且つ待ち時間を減少させるためにプリフェッチング及び他の速度強化技術を使用する、DDR装置が使用可能である。例えば、DDR3は、8の標準バースト長を有する。
コンピュータ・システムが強力になるにつれて、メモリ装置の密度も、継続的に成長してきた。現在、単一コンピュータのRAM内容が、数百兆ビットから成ることも珍しくない。しかし、単一RAM装置の一部に障害(failure)が生じただけで、コンピュータ・システムの全体が機能しなくなることがある。「ハード」(再現性)又は「ソフト」(非再現性)障害の何れかであり得る、メモリ・エラーが生じる場合、かかる障害は、単一セル、複数ビット、完全(full)チップ障害又は完全DIMM障害として生じることがあり、かかる障害が修復されるまで、システムRAMの全て又は一部が使用不能になることがある。修復ターン・アラウンド・タイムは、数時間又は数日に及ぶことがあり、その結果、コンピュータ・システムに依存するビジネスに対して大きな影響を与えることがある。
最近のコンピュータ内のメモリ・ストレージの量が継続的に成長するにつれて、通常の動作中にRAM障害に遭遇する確率も、継続的に増加してきた。
過去数十年の間、ビット・エラーを検出し且つ訂正する技術は、精巧な科学へと発展してきた。最も基本的な検出技術は、奇数又は偶数パリティの生成、すなわちデータ語内の1又は0の数を「排他的論理和」(XOR)し、パリティ・ビットを生成するというものである。例えば、偶数の1を有するデータ語は、0のパリティ・ビットを有し、奇数の1を有するデータ語は、1のパリティ・ビットを有し、そしてかかるパリティ・ビットが、格納済みメモリ・データに追加される。読み取り動作中に、当該データ語内に単一エラーが存在すれば、当該データからパリティを再生成し且つ当該パリティが格納済み(最初に生成済み)パリティと一致するか否かをチェックすることにより、当該エラーを検出することができる。
リチャード・ハミングは、各符号語にXORフィールド、すなわちエラー訂正符号(ECC)フィールドを追加することにより、パリティ技術が、エラーを検出するだけでなく、エラーを訂正するためにも拡張できることを認識した。ECCフィールドは、互いにXORされたデータ語内の異なるビットの組み合わせであって、エラー(当該データ語に対する小さな変化)を容易に検出し、その位置を特定(pinpoint)し、訂正することを可能にするものである。検出及び訂正可能なエラーの数は、データ語に追加されるECCフィールドの長さと直接的に関係する。この技術は、有効なデータ語と符号語の組み合わせとの間の最小の分離距離を保証することを含む。検出し且つ訂正することが望まれるエラーの数が大きくなるほど、符号語がより長くなり、その結果、有効な符号語間の距離がより大きくなる。有効な符号語間の最小距離は、最小ハミング距離として知られている。
かかるエラー検出及びエラー訂正技術は、装置の物理特性に起因してデータ・エラーの有限の確率が存在する場合に、雑音性の通信伝送媒体又はストレージ媒体内でデータをその元の正しい形式に復元するために使用されるのが普通である。一般に、メモリ装置は、RAM内で1又は0を表す電圧レベルとしてデータを格納するから、高エネルギーの宇宙線及びα粒子に起因する、装置障害及び状態変化の両方を被りやすい。同様に、磁性面上の磁界として1及び0を格納するHDDは、磁気媒体内の欠陥及び他の機構の影響を受けやすく、その結果、データ・パターンが最初に格納されたものから変化することがある。
1980年代に、RAMメモリ装置のサイズは、α粒子の衝突及び宇宙線がメモリ・ビットを反転させることに敏感になる段階に最初に達した。これらの粒子は、装置を破損しないが、メモリ・エラーを生じさせることがある。かかるメモリ・エラーはソフト・エラーとして知られており、殆どの場合、単一ビットにだけ影響する。一旦識別されると、かかるビット障害は、当該メモリ位置に再書き込みを行うだけで、これを訂正することができる。ソフト・エラーの出現頻度は、システム全体の信頼性に顕著な影響を及ぼす段階まで、大きくなってきた。
メモリECCは、ハミングによって提案されたもののように、エラーの検出及び訂正を可能にするために、データ語の種々のビット位置におけるパリティ符号の組み合わせを使用する。データ語をメモリに書き込むたびに、新しいECC符号を生成し、これをデータと共に格納しなければならない。そのようにすると、メモリから読み取られたデータ内に含まれるECC符号が、当該読み取り済みデータから生成された新しく計算済みのECC符号と一致しないケースでは、当該データのエラーを検出し且つ訂正することができる。
最初のECCは、以前の手段によって提供されたフォールト・トレランスを凌駕することを目的として、コンピュータ・システム内のRAMに適用された。単一ビット・エラー訂正(SEC)及び2重ビット・エラー検出(DED)を可能にする、2進のECC符号が展開された。また、このSEC/DEDECCは、RAM内の単一ビットのハード・エラーを透過的に回復することを可能にする。
また、ソフト・エラーを検出し且つ訂正することができるように、補数化/再補数化プロセスを通してソフト・エラーを突き止めることにより、メモリ・エラーを減少させることをサポートするための、消し込み(scrubbing)ルーチンが開発された。
幾つかのストレージ製造業者は、完全メモリ・チップ障害を訂正するために、リード・ソロモン(RS)符号のような拡張ECC技術を使用した。また、幾つかのメモリ・システム設計は、不良チップに置き換わるようにメモリ・システム内に自動的に導入することができる、標準の予備メモリ・チップ(例えば、「スペア」チップ)を有する。これらの技術は、RAMの信頼性を非常に改良したが、メモリ・サイズが継続的に成長し且つ顧客の信頼性期待値が増加するにつれて、さらなる拡張が要請されている。システムが完全DIMM障害を克服し、そしてシステム動作と並行してDIMMを交換することが要請されている。さらに、1つ以上のDIMMとメモリ・コントローラ/組み込みプロセッサの間の接続間の単一障害点に影響する、他の障害モードも考慮しなければならない。例えば、メモリ・コントローラとメモリ装置の間の接続のうちの幾つかは、メモリ・コントローラの外側にあり且つDIMM上に存在するか又はDIMMとは別個の1つ以上の中間バッファを含むことがあるが、その障害時には、単一DIMM障害、完全DIMM障害又はより広いメモリ・システム障害の一部として現れるという影響を有することがある。
より高度なエラー訂正技術を使用することにより、コンピュータRAMの信頼性(「フォールト・トレランス」とも称する)を改良するという明白な要請が存在するが、かかる要請を実現する試みは、使用可能な顧客のメモリ、性能、スペース、熱等への影響によって妨げられてきた。データの追加コピーを含めることによる冗長度(例えば、「ミラーリング」)又はより精巧なエラー符号化技術を使用することは、コストを押し上げ、設計を複雑にするばかりか、他の重要なビジネス上の物差し(商品化に要する時間)に影響することがある。例えば、幾つかのストレージ製造業者によって、メモリ・ミラーリングの簡単なアプローチが提示されたことがある。メモリ・ミラーリングを使用すると、システムは、より破局的なメモリ障害を克服することができるが、その受諾率又は成約率は、非常に低かった。というのは、このアプローチは、設計内に既に存在する基本のSEC/DECECCに加えて、一般にメモリ・サイズを2倍にすることを必要とし、そして使用可能なインストール済みRAMの50%未満をシステム使用のために顧客に残すに過ぎないからである。
ECC技術は、ストレージ・システムをより微妙な(subtle)障害モードから保護しつつ、顧客がHDDの障害に起因するデータ損失又はデータ完全性の問題に遭遇しないように、HDD障害を訂正することによりストレージ・システムの可用性を改良するために使用されてきた。
ストレージ・システムの幾つかの供給業者は、コンピュータRAMに対するHDDの可用性を改良するために、RAID(Redundant Array of Independent Disks)技術を成功裡に使用してきた。RAID技術を使用すると、多くの点で、HDD障害から回復することがより簡単となる。というのは、RAM内の障害よりも、HDD内の障害を分離する方が遙かに簡単であるからである。HDDは、不良セクタを検出するために、ECCのようなチェッカを埋め込んでいることが多い。さらに、巡回冗長検査(CRC)及び水平冗長検査(LRC)が、HDDエレクトロニクス又はディスク・アダプタ内に埋め込まれているか、又はこれらが、HDDエラーを検出するためにより高いレベルの符号及びアプリケーションによって使用されるチェッカであることがある。CRC及びLRCは、データ・エラーの検出を容易にするために、データと同時に書き込まれる。CRC及びLRCは、データから小さな実質的に一意のビット・パターンを生成するために使用されるハッシュ関数である。データがHDDから読み取られる場合、チェックサムが再生成され、プラッタ上に格納されたそれと比較される。ディスク上の符号化済み磁気パターンから検索されたデータがディスク上に最初に書き込まれたデータであることを保証するために、それらのシグネチャは、正確に一致しなければならない。
RAIDシステムは、ディスク・ストレージ・システムの性能を改良し且つその可用性を増大させることを目的として、開発されてきた。RAIDは、幾つかの独立HDDにわたってデータを分散させる。これまでに開発されている種々のRAIDスキームのそれぞれは、異なる特性を有し、異なる利点及び欠点を有する。性能、可用性及び使用率/効率(顧客データを実際に保持するディスクのパーセンテージ)が、恐らく最も重要なものである。種々のスキームに関連するトレード・オフは、これを注意深く考慮しなければならない。すなわち、1つの属性の改良が他の属性の減少に帰着することが多いからである。
RAID−0は、性能を改良するために、複数のHDDにわたってデータをストライピングする。RAID−1は、可用性を改良し且つデータ損失を防止するために、2つの異なるHDD上にデータの2つの正確なコピーを維持して、データのミラーリングを行う。幾つかのRAIDスキームは、組み合わされた利点を得るために、これをともに使用することができる。例えば、RAID−10は、性能及び可用性の両方を改良するために、アレイ内の幾つかのHDDにわたってデータ・ストライピング及びミラーリングの両方を使用する。
RAID−3、RAID−4及びRAID−5は、単一データ要素エラーを訂正するために単一のXORチェックサムを使用するという点で、互いに非常に類似する。RAID−3は、パリティ専用のHDDを備え、バイト・レベルのストライピングを使用する。RAID−4は、パリティ専用のHDDを備え、ブロック・レベルのストライピングを使用する。RAID−5は、RAID−4のようにブロック・レベルのストライピングを使用するが、パリティを分散させる。パリティ専用のHDDは、もはや存在しない。パリティは、全てのHDDにわたって実質的に一様に分散され、それにより、性能ボトルネックとしてのパリティ専用のHDDを除去する。RAID−3、RAID−4及びRAID−5の重要な属性は、或る独立の手段によって単一のデータ要素障害の位置を特定することができる場合に、当該障害を訂正することができるという点にある。
RAID−6については、当分野で広く受け入れられている単一の定義は存在しない。一般に、RAID−6は、2重のチェックサムを備え、ブロック又はバイト・レベルのストライピングを使用するものを表す。RAID−6の重要な属性は、或る独立の手段によって高々2つのデータ要素障害の位置を特定することができる場合に、当該障害を訂正することができるという点にある。また、RAID−6は、単一障害の位置が未知である場合に、当該障害の位置を特定し且つこれを訂正する能力を有する。
図1は、1つ以上のプロセッサ要素及び統合メモリ・コントローラ110を含む、集積化プロセッサ・チップ100から構成された最近のシステムを示す。図1の構成では、複数の独立的なカスケード相互接続メモリ・インタフェース・バス106は、並列バス及び関連する装置にわたって分散又は「ストライプ」されたデータ及びエラー検出/訂正情報に対する高帯域幅の単一の独立アクセス要求をサポートすることを目的として、一斉に動作するように論理的に互いに集合化される。メモリ・コントローラ110は、4つの狭く且つ高速の2地点間メモリ・バス106に接続され、当該バス506の各々は、メモリ・コントローラの幾つかの固有のインタフェース・チャネルのうちの1つをカスケード相互接続メモリ・サブシステム103(又はメモリ・モジュール、例えばDIMM)に接続する。メモリ・サブシステム103は、少なくともハブ装置104及び1つ以上のメモリ装置109を含む。また、幾つかのシステムは、メモリ・バス106のサブセットに複数のメモリ・サブシステム103が装着されているときの動作を可能にする。このケースでは、1つ以上のメモリ・バス108は、単一のアクセス要求をサポートするために一斉に動作することができる。
図2は、カスケード化メモリ・モジュール103及び単方向バス106を有するメモリ構造を示す。当該カスケード構造内にあるメモリ・モジュール103内のハブ装置104によって提供される機能のうちの1つは、単方向バス106を介して、他のメモリ・モジュール103又はメモリ・コントローラ110に信号を送信する再駆動機能である。図2は、メモリ・コントローラ110と、2つのメモリ・バス106(24本の線を有する下流メモリ・バス及び25本の線を有する上流メモリ・バス)上にあり且つメモリ・コントローラ110に直接に又はカスケード式に接続される、4つのメモリ・モジュール103を含む。メモリ・コントローラ110の隣にあるメモリ・モジュール103は、メモリ・コントローラ110に直接に接続される。他のメモリ・モジュール103は、メモリ・コントローラ110にカスケード式に接続される。図2には示されていないが、メモリ・コントローラ110は、プロセッサ100内に統合することができ、その場合には、図1の複数のメモリ・バス106に接続することができる。
米国特許第5513135号明細書 米国特許第6381685号明細書
当分野では、メモリ・システム内の障害検出及び訂正を改良することが要請されている。メモリ・システムが一の完全DIMM障害を克服し、そしてシステム動作と並行して当該DIMMを交換できるようにすることが望ましいであろう。
従って、本発明は、第1の側面において、メモリ・システムを提供する。このメモリ・システムは、メモリ・コントローラと、前記メモリ・コントローラ及び複数のメモリ装置と通信する複数のメモリ・モジュールと、前記複数のメモリ・モジュールのうちの1つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出し且つ前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに(unimpaired)動作を継続することができるようにするための機構を備える。
好ましくは、前記メモリ・モジュールは、当該メモリ・モジュール上のエラー検出及び訂正のために使用される1つ以上のメモリ装置を含む。
好ましくは、前記複数のメモリ・モジュールのうちの1つに含まれる実質的に全てのメモリ装置は、前記複数のメモリ・モジュールにわたるエラー検出及び訂正のために使用される。
好ましくは、前記エラー検出は、前記メモリ・モジュール障害及びメモリ装置障害を分離するために3角測量法(triangulation)を使用することを含む。
好ましくは、前記複数のメモリ・モジュールは、5つの異なるチャネルを介して前記メモリ・コントローラと通信する5つのメモリ・モジュールを含み、当該5つのメモリ・モジュールは、1つのメモリ・モジュール上のエラー検出及び訂正のために使用される2つのメモリ装置を有する4つのメモリ・モジュールと、当該4つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記1つのメモリ・モジュールを含む。
好ましくは、前記機構は、複数のメモリ・モジュールにわたる一の行内で編成された前記複数のメモリ装置に適用されるRAID−3 ECC符号と、単一メモリ・モジュールにわたる複数の列で編成された前記複数のメモリ装置に適用されるRAID−6 ECC符号を使用する。この場合、単一データ要素だけが任意の行と列の間で共有される。
好ましくは、前記エラー訂正が、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記RAID−6 ECC符号と共にオフセット多重シフトが使用される。
好ましくは、前記メモリ・システムの機械的パッケージングは、システム動作と並行して1つ以上メモリ・モジュールの交換を可能にするように適応される。
好ましくは、前記機構は、前記メモリ装置障害と一致し且つ一のメモリ・モジュールと前記メモリ・コントローラの間の通信に影響する一の障害を検出するとともに、当該障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作することを可能にする。
第2の側面において、メモリ・コントローラが提供される。このメモリ・コントローラは、複数のメモリ装置と通信する複数のメモリ・モジュールへの一のインタフェースと、前記複数のメモリ・モジュールのうちの1つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出し且つ当該メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にするための機構を備える。
好ましくは、前記メモリ・モジュールは、当該メモリ・モジュール上のエラー検出及び訂正のために使用される1つ以上のメモリ装置を含む。
好ましくは、前記エラー検出は、前記メモリ・モジュール障害及びメモリ装置障害を分離するために3角測量法を使用することを含む。
好ましくは、前記複数のメモリ・モジュールは、5つの異なるチャネルを介して前記メモリ・コントローラと通信する5つのメモリ・モジュールを含み、当該5つのメモリ・モジュールは、1つのメモリ・モジュール上のエラー検出及び訂正のために使用される2つのメモリ装置を有する4つのメモリ・モジュールと、当該4つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記1つのメモリ・モジュールを含む。
好ましくは、前記機構は、複数のメモリ・モジュールにわたる一の行内で編成された前記複数のメモリ装置に適用されるRAID−3 ECC符号と、単一メモリ・モジュールにわたる複数の列で編成された前記複数のメモリ装置に適用されるRAID−6 ECC符号を使用する。この場合、単一データ要素だけが任意の行と列の間で共有される。
好ましくは、前記エラー訂正が、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記RAID−6 ECC符号と共にオフセット多重シフトが使用される。
第3の側面において、メモリ・システム内のエラーを検出し且つ訂正するための方法が提供される。この方法は、前記メモリ・システム内の1つ以上のエラーを検出するステップを含み、前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成され、前記1つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、3角測量法を使用して前記エラーのタイプを識別するステップと、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、前記メモリ・システムが機能低下なしに動作することができるように、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第1のECC符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第2のECC符号を使用して、前記1つ以上のエラーを訂正するステップをさらに含む。
好ましくは、前記訂正するステップが、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記第2のECC符号と共にオフセット多重シフトが使用される。
好ましくは、一の障害メモリ・モジュールを識別する際に、前記メモリ・システムの信頼性を改良するために、当該障害メモリ・モジュールの同一性(identity)が、前記第1のECC符号内のパラメータとして使用される。
好ましくは、前記第1のECC符号は、RAID−3 ECC符号であり、前記第2のECC符号は、RAID−6ECC符号である。
実施形態は、一のメモリ・コントローラ、複数のメモリ・モジュール及び一の機構を有する、メモリ・システムを含む。前記複数のメモリ・モジュールは、前記メモリ・コントローラ及び複数のメモリ装置と通信する。前記機構は、前記複数のメモリ・モジュールのうちの1つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出する。前記機構は、前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にする。
他の実施形態は、複数のメモリ・モジュールへの一のインタフェース及び一の機構を有する、メモリ・コントローラを含む。前記複数のメモリ・モジュールは、複数のメモリ装置と通信する。前記機構は、前記複数のメモリ・モジュールのうちの1つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出する。前記機構は、前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にする。
さらに他の実施形態は、メモリ・システム内のエラーを検出し且つ訂正するための方法を含む。この方法は、前記メモリ・システム内の1つ以上のエラーを検出するステップを含む。前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成される。また、この方法は、前記1つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、3角測量法を使用して前記エラーのタイプを識別するステップと、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第1のECC符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第2のECC符号を使用して、前記1つ以上のエラーを訂正するステップを含む。前記メモリ・システムは、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、機能低下なしに動作することができる。
本発明は、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、メモリ・システムが機能低下なしに動作するという効果を奏する。これは、メモリ・システムの可用性及び保守性における著しい改良につながることがある。
複数の単方向バスを備えた、カスケード相互接続メモリ・システムを示す図である。 複数の単方向バスを備えた、カスケード相互接続メモリ・システムを示す図である。 本発明の実施形態によって使用される、典型的なコンピュータ・メモリ・システム構成のブロック図である。 単一DRAMチップ・エラーを訂正する、論理ビューのブロック図である。 高々一の完全DIMM障害を訂正する、論理ビューのブロック図である。 2つのDRAMチップ・エラーを訂正する、論理ビューのブロック図である。 第2のDRAMチップ障害と一致する一の完全DIMM障害を訂正する際の困難さを例示する、論理ビューのブロック図である。 第2のDRAMチップ障害と一致する一の完全DIMM障害を訂正する際の困難さを例示する、論理ビューのブロック図である。 第2のDRAMチップ障害と一致する一の完全DIMM障害を訂正するための種々のシナリオを示す図である。 第2のDRAMチップ障害と一致する一の完全DIMM障害を訂正するための種々のシナリオを示す図である。 第2のDRAMチップ障害と一致する一の完全DIMM障害を訂正するための種々のシナリオを示す図である。 2つの追加的なDRAM装置障害と一致する完全DIMM障害を訂正する論理ビューのブロック図である。 本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。 本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。 本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。 2次元の3角測量法を実行するために使用することができる、典型的なプロセスのフローチャートである。 本発明の実施形態によって使用される、エラー分類を要約するテーブルである。
本発明の実施形態(以下「実施形態」と表記)は、高々一の全チップ(例えば、DRAM)障害と一致する、高々一の完全DIMM障害を検出し且つ訂正するために、2つの独立的な符号(一方はRAMのセクションに水平に適用され、他方はRAMのセクションに垂直に適用される)を使用する。このようにすると、第2のチップ・エラーの存在下においてさえ、障害を有するDIMMを並行的に修復することができ、その修復中に、コンピュータ・システム・メモリを継続的に動作させることができる。第2のチップ・エラーを処理するというこの能力は、新規であり且つ非常に重要である。というのは、DIMMの修復を完了する前に、第2のエラー(特に、メモリ・ソフト・エラー)が生じるという有限の確率が存在するからである。
本明細書では、「一致する」という用語は、2つ以上のエラー・パターンの発生を表す。1つの例では、第1の訂正可能エラーが生じ、この訂正可能エラーを修復することができる前の、その後の時点で、第2の障害が生じる。この場合、第1及び第2の障害は、一致すると云われる。修復時間は、常にゼロより長く、修復時間が長くなればなるほど、第1の障害と一致する第2の障害が生じる蓋然性は大きくなる。実施形態は、一のDIMM障害を識別する前に、一のDIMM障害及び高い確率を有する一の追加チップ・エラーの訂正に備える。一旦、一のDIMM障害を識別すると、実施形態は、常に、一のDIMM障害及び一の追加チップ・エラーの訂正を提供する。本明細書では、「DIMM障害」又は「メモリ・モジュール障害」という用語を使用するが、実施形態が保護せんとする障害モードは、一般に、DIMMからメモリ・コントローラにデータを伝送する通信媒体の障害を含む。
実施形態は、複数のRAM装置(例えば、DRAM、SDRAM等)から成るコンピュータ・メモリ・システムのための、透過的な回復及び完全にオン・ラインの並行DIMM修復を提供する。他のメモリ・チップ障害と一致する、高々一の完全メモリ・サブシステム(例えば、DIMM)障害用の透過的な回復が提供される。実施形態は、コンピュータ・システムRAM用のノード構造を使用することに加えて、RAM内に格納された必要なシステム・データへのアクセスを失うことなく、任意のメモリ・ノードの電源を遮断することを可能にする、ECCの革新的なアプリケーションを使用する。そのため、コンピュータ・システム・メモリは、あたかも全てのメモリ・ノードが存在し、電源がオンにされ且つ完全に動作可能であるかのように、機能低下なしに継続的に動作し、RAM内に格納された全てのデータへの完全なアクセスを提供する。本明細書では、「メモリ・ノード」という用語は、単一の論理列に関連する全てのDIMMの集合を表す。一の論理列は、一のストリップ内の単一シンボル位置に関連する、複数のシンボルを保持する。実施形態では、これらはRAID−3ECC符号の単一シンボルである。常にではないが、単一の列が、単一のメモリ・チャネルに関連することが多い。本明細書に開示する態様でノードを構成する重要性は、当該ノードがシステムから除去される場合に、ECC符号が全ての欠落シンボルを再生成するための能力を提供することにある。
実施形態では、「ダブル・データ・レート3」(DDR3)SDRAMチップが使用される。DIMMは、DDR3 SDRAMチップを使用して設計され、その各チップは、DIMM上に格納された全データの等しい部分を保持する。また、実施形態は、4本の入出力ピン(例えば、×4装置)を有するように編成されたDDR3装置を使用し、その場合、各アクセスは、8のバースト長を有する。言いかえれば、メモリ・アクセスごとに、各SDRAMは、8のバーストで4ビットのデータ(1ニブル)を提供し、その結果、合計で32ビット又は4バイト(4ビット×8バースト長=32ビット=4バイト)をもたらす。
当分野で使用されているRAID関連の用語には、ある不整合性及び曖昧さがある。以下の定義は、別段の説明がない限り、本明細書で使用するこれらの用語の意味を暗示する。「アレイ」は、複数のハード・ディスク・ドライブの集合であり、その内部で、RAID消失符号(erasure code)の1つ以上のインスタンスが実装されるものである。「シンボル」又は「要素」は、データ又はパリティの基本単位であり、消失符号のビルディング・ブロックである。符号理論では、これはシンボル内の一のビットに割り当てられるデータであり、典型的には、1セットの連続するセクタである。「要素」は、一定数のバイトから成る。要素を一定数のブロックとして定義することも普通である。「ブロック」は、一定数のバイトである。「ストライプ」は、パリティ計算関連に従属的に関係する、データ及びパリティ要素の完全な結合集合である。符号理論では、ストライプは、符号語又は符号インスタンスである。「ストリップ」は、単一ハード・ディスク・ドライブ上の隣接要素の集合である。一のストリップは、同じディスク及びストライプからの複数のデータ要素、複数のパリティ要素又はその両方を保持する。「ストリップ」及び「列」という用語は、交換可能に使用される。符号理論では、ストリップは、符号語に関連し、ストライプ単位と称することもある。一の符号語内のストリップの集合は、一のストライプを形成する。ストリップについて最も多く見られるのは、複数のストリップが、同じ数の要素を保持することである。或るケースでは、複数のストライプをグループ化して、ストライドと称する、より高いレベルの構成体を形成することがある。
RAID−6は、より一般的なRS符号の特定の例である。RS符号が最初に世に出たのは、アーヴィング・リード及びガス・ソロモンが1960年に論文を発表した時である。これらの強力な符号は、深宇宙の問題からDVDプレーヤ内のディスク・エラーに至るまでの種々のエラーを訂正するという広範囲の用途を有している。RS符号は、データ要素又はシンボルに適用される、非2進の巡回符号である。RS(n,k)符号は、k=データ・シンボルの数、m=ビットで表したシンボル長、n=シンボルの総数を有するものとして定義することができる。従って、以下の数1に示す通りとなる。
Figure 0005349470
さらに、障害位置が独立的に決定されない場合に、c=シンボル・エラー訂正能力を定義すると、n−k=2cに帰着する。言いかえれば、シンボルの総数及びデータ・シンボルの数の差は、RS符号のデータ訂正能力に正比例する。RS符号は、任意の線形符号について、最大の可能な最小距離を達成する。非2進符号については、ハミング距離と類似する最小距離は、dmin=n−k+1によって与えられる。
さらに、e=消失訂正能力(すなわち、障害位置が独立的に決定される場合の、当該障害を訂正するための能力)を定義すると、e=dmin−1=n−k=2cn)に帰着する。言いかえれば、障害位置が或る独立の手段によって決定される場合と比較すると、障害位置が未知である場合は、半分の障害を訂正することが可能である。
RS符号は、未知数を解決するために一連の連立方程式を使用する。これらの未知数は、データ・シンボル又は障害を有するシンボルの位置の何れかである。例えば、RAID−6は、各行内の各データ要素に適用される2つの独立的なチェックサムを生成するために、2つの方程式を使用する。Q(x)=RSチェックサムを定義し(但し、x=a)、P(x)=RSチェックサムを定義し(但し、x=1)、そしてd0,d1・・dN=多項式係数を定義すると、RSチェックサムの方程式は、以下の数2に示すように、多項式で表現することができる。この方程式は、係数の値を求め、一のデータ要素を訂正し、そして障害の位置が未知であれば、当該位置を特定するべくxの冪の値を求めるために使用することができる。
Figure 0005349470
RAID−3、RAID−4及びRAID−5の簡単なXORは、x=1である場合の多項式の和であり、その結果、前記方程式がP(x)=d0+d1+d2+・・+d(N−1)となる、特別のケースであることが理解されよう。この一般的な方程式には、実施形態によって使用することができる、多数の変形が存在する。主な要件は、これが原始多項式であるということである。すなわち、共通根を有さない場合、これが一の素数と類似することを意味する。これは、有限体又はガロア体について、解が常に一意的であることを保証する。
図3は、実施形態におけるコンピュータ・メモリ・システムの構成方法を例示する。メモリは、5つのDIMM 302から成るメモリ・ブロック314の単位でシステムに追加される。各DIMM302は、18個のDRAMチップを有する。従って、各メモリ・ブロック314内には、5つのDIMM 302にわたって合計90個のDRAMチップがある。64個のDRAMチップは、顧客データを保持し、26個のDRAMチップは、チェックサムを保持するために使用される(参照番号304を付したDRAMチップ、及びメモリ・チャネル306eに接続されたDIMM302上に位置するメモリ・ブロック314内の全てのDRAMチップ)。各メモリ・ブロック・アクセスは、360バイトのデータを提供し(DRAMが4バイトであると仮定)、そのうち256バイトは使用可能な顧客データであり、104バイトはチェックサム用である。この結果、信頼性・可用性・保守性(RAS)オーバーヘッドは、28.9%となる。当然ながら、本発明は、この特定のメモリ構成に制限されない。本発明は、異なるDRAMチップ及びDIMM構造を使用する、他の多くのメモリ構成にも適用可能であるからである。
図3の実施形態は、5つのメモリ・ノード316を含み、各メモリ・ノード316は、一のメモリ・チャネル306にカスケード相互接続された3つのメモリ・モジュール(DIMM302)を含む。この実施形態では、5つのメモリ・チャネル306a〜306eが、ホスト・システム310内に位置する、メモリ・コントローラ308に接続される。DIMM302の各々は、メモリ装置(例えば、DRAMチップ)及びメモリ・チャネル306と通信するためのハブ装置312を含む。
この実施形態では、チョップド(chopped)・バースト・モード・サポート及び優先読み取りポリシの使用による(すなわち、メモリ・システムは、重要度の順序で複数の語を検索するように設計されている)低い待ち時間アクセスを提供するために、ECC符号は、64データ・バイトのブロック上で生成される。DDR3装置では、「バースト・チョップド・モード」サポートは、DDR3について指定された通常の8のバーストの代わりに、4のバーストのDRAMアクセスを可能にする。また、本発明で使用されるECC符号は、128バイトのブロックにも適用することができ、その場合にも、チョップド・バースト・モードを依然としてサポートすることができる。これらのECC符号は、64、128又は256バイトのブロックに適用することができる。しかし、これらのECC符号が、単一のメモリ・アクセスで検索されるか又は格納される完全な256バイトに適用されるならば、チョップド・バースト・モードをサポートすることができない。というのは、エラーを検出するために格納済みチェックサムと比較すべきチェックサムを生成又は再生成するためには、256バイトのデータの全てが必要とされるからである。
図3は、実施形態によって使用される、1つのRAMシステム構造の高水準ビューである。各メモリ・ノード316は、3つのDIMM302から成る。メモリ・ノード316当たりのDIMM 302の数は、多くのハブ・ベースのモジュールで使用可能な拡張(例えば、カスケード相互接続)バスのような手段を通して、4つ以上のDIMM302を含むように拡張することができる。図3のメモリ・ノード構造は、システム・メモリ動作に影響を与えることなく、任意のメモリ・ノード316の電源を遮断し且つDIMMを交換することを可能にする。メモリ・システムは、任意の単一メモリ・ノード316の電源が遮断されても、機能低下なしに動作を継続するであろう。
図3では、参照番号304を付したDRAMチップ及びメモリ・チャネル306eに接続されたメモリ・ノード316内の全てのDRAMチップは、並行DIMM修復を可能にする、特別のECC符号を保持する。DIMM302上の残りのDRAMは、使用可能な顧客データを保持する。
DIMM 302は、5つのDIMMから成るメモリ・ブロック314の単位でシステムに追加される。図3において、5つのDIMMの最上行は、システムの第1のDIMMブロック314を表す。また、これは最小のメモリ構成を表す。次のDIMMブロックは、その直下の行になるであろう。
右端のメモリ・ノード316において、各列内の第5のDIMM(例えば、メモリ・チャネル306eに接続された各行の右端にあるDIMM)は、他のメモリ・ノード316内の複数のDIMMにわたって計算された一のRAID−3チェックサムを保持する、複数のDRAMチップを有する。メモリ・チャネル306eに接続されたこれらのDRAMは、顧客データを保持しない(又は非常に僅かな顧客データを保持する)。RAID−5がHDDのために使用されることが多いのは、RAID−3と異なり、ボトルネックを回避するために、複数のチェックサムが全てのHDDにわたって分散されるからである。かかるなボトルネックがこの実施形態に存在しない理由は、一のメモリ・ブロック内の全てのDRAMチップが同時にアクセスされるということにある。そのため、チェックサムの分散は不要である。この実施形態では、単一のアクセス中に64バイトのデータ・ブロックが処理されるという理由で、各データ要素は、1バイトのシンボル長さを有する。他の実施形態は、RAID−3の代わりに、より長いシンボル・サイズのデータ要素を含む、RAID−4を使用する。以下の説明では、RAID−3という用語を使用するが、幾つかの事例では、RAID−4をも使用することができることを理解されたい。重要な点は、HDD構成の性能を改良するためにRAID−5で使用されたものと同様の分散パリティが、ここでは必要でないということである。RAID−3チェックサムを計算するために、図3のDIMM302の複数の列に対応する、他の複数のメモリ・ノード316内の対応する各DRAMチップからの対応するデータ要素が使用される。各DIMMにわたってRAID−3を使用すると、エラーを有する特定のDIMM302が独立の手段を通して特定される場合には、完全DIMM障害を訂正することができる。
実施形態は、2つの独立的なECC符号、すなわち水平に適用される第1のECC符号及び垂直に適用される第2のECC符号を使用することにより、有効なエラー検出及びエラー分離特性を提供する。エラーを訂正するためにRAID−3及びRAID−6符号が広範囲に使用される場合は、HDDエラーを検出し且つ分離することよりも、DRAMチップ・エラー(特に、単一ビットの反転(単一セルのエラー)のようなより微妙なエラー)を検出し且つ特定することの方が遙かに困難である。HDDは、より微妙なエラーを検出し且つ特定するために、各データ要素又はグループのデータ要素に関連する装置上の組み込み符号を使用することが多い。これらの符号は、簡単なパリティに加えて、比較的良好なエラー検出及び分離を提供するCRC及びLRCを含む。RAID−3及びRAID−6のエラー訂正の有効性が倍加するのは、独立の手段を通してエラーを特定することができる場合である。一般に、ディスク・アダプタからHDDへのインタフェースは、コマンド/応答タイプのインタフェースである。かかるインタフェースは、各DRAMチップへのインタフェースによって通常提供されるものよりも、完全な障害を生じたHDDを遙かに良好に検出することができる。
HDDインタフェースは、特定のHDDが応答していない場合に、ディスク・アダプタが直ちにこれを認識するようなものである。一のDRAMチップに障害が生じる場合は、検索済みデータが格納済みデータと異なる点を除けば、当該障害の如何なる指示も存在しないことがある。かかる障害は、或る独立の手段によって検出しなければならない。HDDストレージは、安価で且つ高密度であるから、チェッキングの追加に関連するオーバーヘッドは、RAMほどには法外に高価にならない。エラー検出能力を改良するために、組み込みチェッカをRAMに追加すると、メモリ密度、電力消費、性能、全体的なメモリ・サイズが著しい影響を受け、その結果、コンピュータ・システムのコストが増大することがある。RAMECC符号ができるだけ効率的であることが、非常に重要である。
これらの制限を克服するために、実施形態は、エラーを有効に分離するために、水平に適用されるRAID−3符号、垂直に適用されるRAID−6符号及び2次元の3角測量法を使用する。一旦エラーが分離されると、エラーを訂正するために、RAID−3行符号及びRAID−6列符号の両方を使用することができる。前述のように、RAID−3符号は、複数のDIMMにわたって適用される。RAID−6符号(実施形態では、[18,16]RS符号)は、各DIMMに独立的に適用される。図3において参照番号304を付したDRAMチップは、それらが存在するDIMM302用の[18,16]RSチェックサムを保持する。これらの[18,16]RSチェックサムは、各DIMM 302上の他の16個のDRAMチップの対応するデータ要素を使用して計算される。
各データ要素に水平及び垂直に適用されるこれらの独立的なECC符号(すなわち、複数のDIMMにわたって複数の行内にある複数のDRAMチップのデータ要素に適用されるRAID−3符号及び各DIMMの複数の列内にある複数のDRAMチップのデータ要素に適用されるRAID−6符号)の組み合わせは、実質的なオーバーヘッドなしに、障害分離及びエラー訂正能力を実質的に向上させる。この新しいECC符号は、今日、高性能システム上で使用されている多くの現在のECC符号よりも多い、28.9%又は17.8%のオーバーヘッドを有する。高性能システムのメモリ用の典型的な現用ECC符号は、[35,32]RS符号であり、単一チップ・エラー訂正及び2重チップ・エラー検出を提供する。
後述するように、実施形態は、高い確率で、高々一の完全DIMM障害(18個のDRAMチップ)の100%の検出及び訂正を提供する。単一DIMM上の3以上のDRAMチップ・エラーについては、RAID−6列方程式が、有効な解であるように見えるものを間違って生成するという小さな可能性がある。このケースでは、適用されるRAID−6列符号は、必ずしもエラーを検出しないであろう。しかし、これらのエラーが単一DIMM内に含まれる限り、RAID−5チェックは、これらのエラーを常に検出するであろう。一旦障害を有するDIMMが識別されると、実施形態は、高々一の完全DIMM障害を常に訂正するであろう。
後述するように、実施形態は、高い確率で、一の完全DIMM障害(19個のDRAMチップ)と一致する、高々一の全チップ障害の100%の検出及び訂正を提供する。第2のエラーから回復する能力が重要である。というのは、同時的な障害イベントが希であるために蓋然性は低いが、並行DIMM修復を実行中に又はその完了前に、一の完全DIMM障害と一致する、他のDIMM上の第2のエラーに遭遇することがあるからである。これは、特に単一セルの2次障害に当てはまる。前述のように、一旦、障害を有するDIMMが識別されると、実施形態は、一のチップ(本明細書では「メモリ装置」とも称する)障害と一致する、高々一の完全DIMM障害を常に訂正するであろう。
以下に記述する典型的なエラー・シナリオは、拡張された回復能力及び任意の制限を強調しつつ、実施形態がどのように機能するかということを説明するものである。
図4は、図3を参照して説明したメモリ・システム構成の論理ビューを示す。以下の説明では、次の表現を使用する。
Dxy=データ要素
Pxy=RAID−3行チェックサム
Pxy‘=再生成済みチェックサム
Qxy=RAID−6列チェックサム
Qxy’=再生成済みチェックサム
Q0x=1つのRAID−6列チェックサム(これは、RAID−6のRAID−5列チェックサムになるであろう。例えば、Q01=D01+D11+D21+・・+DF1。但し、「+」はXORである)
Q1y=他のRAID−6列チェックサム
Figure 0005349470

exy、zxy、及びwxy=エラー(エラーを生成するように訂正データに追加される確率変数)
Rxy=QxyチェックサムのRAID−3行チェックサム。
図4の左側の論理表現は、完全に機能するコンピュータ・メモリ構成を示す。各列は、18個のDRAMチップから成る単一DIMMを表す。各DRAMチップ上のデータ要素は、Dxyとして指定される。RAID−3チェックサム要素402(Pxy及びRxy)は、複数のDIMMにわたる各DRAMデータ要素上の行ごとに生成される。RAID−3については、チェックサムは、各行内のデータ要素のXORである(Px0=Dx0+Dx1+Dx2+Dx3)。例えば、x=2の場合、P20=D20+D21+D22+D23である。
列内の各データ要素に適用され且つ関連する列を下って生成されるRAID−6チェックサム要素404は、Qxyとして指定される。
図4は、単一DRAMチップ・エラーが、どのように検出され且つ訂正されるかを例示する。図4の左側の論理表現は、エラーを有さない完全に機能的なメモリを示す。図4の右側の論理表現は、参照記号D42を付したDRAMチップ内でエラーが生じたことを示す。このエラーは、単一ビット・エラー、複数ビット・エラー又は当該DRAMチップの完全障害までの他の任意のエラーの組み合わせであることがある。実施形態は、単一DRAMチップ・エラーについては、100%の検出及び訂正を提供する。
エラーを有する特定のDRAMチップは、本明細書において「2次元の3角測量法」と称する技術を使用して分離され、その場合、RAID−3行チェックサム及びRAID−6列チェックサムは、エラーの位置を特定するために同時に使用される。メモリ読み取り動作中、RAID−3チェックサムPxy‘及びRAID−6チェックサムQxy’は、メモリから読み取られたデータから再生成される。再生成済みチェックサムPxy‘、Qxy’及びRxy’は、格納済みチェックサムPxy、Qxy及びRxyと比較される。もし、それらが全て等しければ、すなわちPxy‘=Pxy、Qxy’=Qxy及びRxy’=Rxyであれば、データ・エラーが存在しないと仮定することができる。メモリから検索されたデータは、正しいことが検証される。もし、再生成済みの単一のチェックサムQxy’だけが格納済みチェックサムと一致しなければ、当該チェックサムを保持するDRAMチップがエラーを有することを指示する。このケースでは、顧客データは依然として有効であるから、データ訂正は必要とされない。
図4に示すように、当該行に関連する、再生成済みRAID−3チェックサムPxy‘は、格納済みチェックサムと一致しない。これは、その行内に一のエラーがあることを指示する。この例では、P40はP40’と一致しないから、D40、D41、D42、D43及びP40を保持する、当該行に関連する一のエラーがあることが分かる。データ要素D40、D41、D42、D43又はRAID−3行チェックサムP40が、当該エラーに関連することがある。複数エラーが存在することすらある。再生成済みRAID−3行チェックサムP40’を格納済みチェックサムP40と比較することは、当該行を分離するに過ぎないであろう。さらなる分離のために、RAID−6列チェックサムが使用される。もし、全ての再生成済みRAID−6列チェックサム(Qxy’)が格納済みチェックサム(Qxy)と一致すれば、RAID−3チェックサムのDRAMチップPxyが、エラーを有する。この例では、再生成済みRAID−6チェックサム(Q02’及びQ12’)は、格納済みチェックサム(Q02及びQ12)と一致しない。ここで、2次元の3角測量法を使用すると、エラーの位置をD42に特定することができる。これは、エラーを有するDRAMチップである。
一旦当該エラーが分離されると、他の行データ要素を格納済みRAID−3チェックサムとXORする(D42=D40+D41+D43+P40)か、又は列データ要素を格納済みRAID−6チェックサムとXORする(D42=D02+D12+D22+D32+D52+・・+DB2+DC2+DD2+DE2+DF2+Q02)だけで、エラー訂正が達成される。他のRAID−6、[18,16]RS方程式も、エラーを訂正するために使用することができる。
これが単一DRAMチップ・エラーであるためには、再生成済み3つのチェックサム、すなわちRAID−3チェックサム及び2つのRAID−6チェックサムの全ては、格納済みチェックサムと一致してはならず、そして他の全ての再生成済みRAID−3及びRAID−6チェックサムは、それらの格納済みチェックサムと一致しなければならない。この例では、P40’はP40と一致せず、そしてこれに対応する不一致が存在する。すなわち、再生成済みRAID−6チェックサムQ02’及びQ12’は、対応する格納済みRAID−6チェックサムQ02及びQ12と一致しない。従って、D42に関連する一のDRAMチップ・エラーがあることが分かる。同様に、もし、再生成済みRAID−6チェックサムのうちの1つ(Q0y’又はQ1y)だけが、対応する格納済みRAID−3チェックサムのうちの1つ(Q0y又はQ1y)と一致しなければ、これが当該エラーの源であることが分かる。単一のデータ要素エラー(Dxy)が存在するためには、再生成済みチェックサム及び格納済みチェックサム(Q0y’及びQ0y、並びにQ1y’及びQ1y)は、Pxy‘及びPxyと同様に、不一致を示さなければならない。
実施形態の完全な能力を検討するために、以下では、より複雑なエラー・シナリオの例を説明する。
図5は、単一DIMM上の全部で18個のDRAMチップの完全DIMM障害に至るまで、当該DIMM上の複数のDRAMチップ・エラーを処理するために、前述のアプローチがどのようにして容易に拡張されるかを例示する。先ず、単一DIMM障害のシナリオを説明する。この例では、再生成済みRAID−3行チェックサムPxy‘のうちの多数、恐らく全てが、格納済みRAID−3行チェックサムPxyと一致せず、エラーを有する複数の行があることを指示する。しかし、この例では、再生成済みRAID6チェックサムQxy’が格納済みチェックサムQxyと比較されるとき、単一の列に関連する2つのチェックサムだけが一致しないことが検出される。従って、当該エラーが、単一DIMM内に保持されることが分かる。この例では、再生成済みチェックサムQ02’及びQ12’は、格納済みチェックサムQ02及びQ12と一致しないから、当該障害が第3のDIMMに関連することが分かる。希なケースでは、当該DIMM内のエラーが、関連するRAID−6チェックサムがゼロに等しいようなものである可能性があり、そのケースでは、この復号方法は、エラー訂正ではなく、単にエラー検出を与える。
エラーを有する単一の列だけがある限り、次のようにRAID−3行方程式を使用して、DIMM全体に相当するデータを再生成し、消失訂正することができる。
Dx2=Dx0+Dx1+Dx3+Px0
但し、x=0,1,2・・,F
これは非常に重要な能力である。並行DIMM修復を可能にするためには、完全DIMM障害の回復が必要である。当該DIMMがホット・プラグされる場合、これは一の完全DIMM障害のように見えるであろう。DIMMごとに存在検出(presence detect)線を追加すると、DIMMがシステムから除去される場合に、分離を保証するのを支援することができる。
図6は、2つのDRAMチップ・エラーが2つの異なるDIMMに生じる場合に、これらのDRAMチップ・エラーがどのように処理されるかを例示する。2つのランダムなエラーが同時に生じる確率は、事実上ゼロであるが、第1の障害が並行修復又はDRAMスペアリング活動によって除去される前に、第2の障害に遭遇する或る確率がある。
図6では、D42及びD91に関連する実際のDRAMチップ・エラーが存在する。これらのエラーは、前述のものと同じチェックサム再生成手順を通して検出される。その場合、再生成済みRAID−3チェックサムP40’及びP90’は、格納済みチェックサムP40及びP90と一致しないであろう。従って、これらのエラーは、これらの2行に関連することが分かる。また、第2の列に関連する、再生成済みRAID−6チェックサムQ01’及びQ11’は、格納済みチェックサムQ01及びQ11と一致しないであろう。従って、第2の列に関連する一のエラーがあることが分かる。さらに、第3の列に関連する、再生成済みRAID−6チェックサムQ02’及びQ12’は、格納済みチェックサムQ02及びQ12と一致しないであろう。従って、第3の列に関連するエラーがあることが分かる。エラーを有するDRAMを特定するために、2次元の3角測量法が、独立的なチェックサムと共に使用される。P40及びQ02又はQ12の交点は、一のエラーを有する一のDRAMチップとして、D42を正確に特定することが明らかである。また、P90及びQ01又はQ11の交点は、一のエラーを有する一のDRAMチップとして、D91を正確に特定することが明らかである。
また、D41を特定するP40及びQ01又はQ11の交点と、D92を特定するP90及びQ02又はQ12の交点がある。しかし、これらのDRAMチップは、エラーを有さない。これだけから、4つのDRAMチップのどれがエラーを有するかを決定することは可能でない。しかし、これは問題でない。RAID−6、[18,16]RS符号は、3の最小距離を有するから、他の独立的な手段を通して位置が特定される場合は、単一エラーを分離し且つ訂正するか又は2つの消失を訂正することを可能にする。このケースでは、RAID−3行チェックサムは、行を特定することを可能にし、RAID−6列チェックサムは、列を特定することを可能にする。ここで、問題となっている4つのDRAMチップ全ての消失を訂正するための、4つの方程式及び4つの未知数D41、D42、D91、D92がある。
Figure 0005349470
図6は、どのようにすれば、任意の高々2つの同時的なDRAMチップ・エラーを、常に分離し且つ訂正することができるかを例示する。
図7は、第2のDRAMチップと一致する高々一の完全DIMM障害がある場合に遭遇する困難性を例示する。もし、第1の障害が分離されず且つその位置が特定されないならば、再生成済みチェックサム及び格納済みチェックサムを単に比較するだけでは、2つのDIMM上のどのDRAMチップがエラーを有するかを決定することはできない。これは、RAID−3行チェッカ(Pxy及びRxy)の全て又はその殆どが、これらの行に関連するエラーがあることを指示するという事実に起因する。しかし、Pxy行チェッカとQxy列チェッカの交点は、両DIMM上の全てのDRAMチップ上に潜在的なエラーが存在し得ることを指示する。しかし、このジレンマを回避する方法がある。
図8は、他のDIMM上の他の単一DRAMチップ・エラーと一致する一の完全DIMMエラーがある場合に、訂正中にエラーがどのように伝播するかを一層詳細に例示する。このケースでは、高い確率で、これらのタイプのエラーの100%の検出及び訂正を提供するように、当該アルゴリズムが適切に機能するためには、最初にどのエラーが生じたかを知ることは必要とされない。前述のように、他の単一DRAMチップ・エラーと一致する一のDIMMエラーが生じる場合、再生成済みRAID−3行チェックサム(Pxy’)の殆ど又は全ては、格納済みチェックサム(Pxy)と一致せず、その結果、これらの行内のエラーを指示する。しかし、このケースでは、第1のDIMM用の再生成済みRAID−6列チェックサム(Q00’及びQ10’)は、格納済みチェックサム(Q00及びQ10)と一致せず、その結果、第1のDIMMに関連する一のエラーを指示する。また、第1のDIMM用の再生成済みRAID−6列チェックサム(Q02’及びQ12’)は、格納済みチェックサム(Q02及びQ12)と一致せず、その結果、(高い確率で)第3のDIMMに関連する一のエラーを指示する。この例では、障害を生じたDIMMは特定されないから、これらのエラーからの回復は、その情報なしで行わなければならない。データを訂正することができるのは、他のDIMM上の一の完全DIMM障害(最大で19個のDRAMチップ・エラーに相当)と一致する、1つのDIMM上の高々単一DRAMチップ・エラーが存在する場合だけである。これを達成するためには、問題となっている各DIMMが完全DIMMエラーを有し且つ他のDIMMが単一DRAMチップ・エラーを有すると仮定し、両方のケースで単一の有効な解を捜さなければならない。
図8では、第3のDIMMが完全DIMM障害を有し、第1のDIMMが単一DRAMチップ・エラーを有するものと仮定されている。第3のDIMM上のデータを訂正するために、RAID−3行方程式は、次のように使用することができる。
Dx2=Dx0+Dx1+Dx3+Px0
但し、x=0,1,2,・・,F
第3のDIMM上の消失を訂正するためにRAID−3を使用することを試みる際に、エラー・パターンは、最後に右側で終わる。D40及びD42は、依然としてエラーe40を保持する。事態を一層悪くするのは、このエラーがXOR演算中に相殺されるのと同じエラーであるために、RAID−3行によって検出されないことである。再生成済みP40’と比較される格納済みP40は、エラーが存在しないことを指示する。しかし、少なくとも1つのエラーが依然として存在していることは分かっているから、システムは先に進み、RAID−6列方程式を使用して、当該エラーを特定し且つ訂正する。その結果、D40及びD42の両方に関連するe40エラーが除去され、全ての再生成済みRAID−3チェックサム及びRAID−6チェックサムが格納済みチェックサムと一致するであろう。この段階で、これが有効な解でないことを保証するために、他のDIMMが完全DIMM障害を有することが仮定される。
図9は、第1のDIMMが完全DIMM障害を有し且つ第3のDIMMが単一DRAMチップ・エラーを有するという間違った仮定がなされる場合に、何が起こるかを例示する。前述のように、RAID−3行方程式は、第3のDIMM上のデータを訂正するために、次のように使用される。
Dx0=Dx1+Dx2+Dx3+Px0
但し、x=0,1,2,・・,F
その結果、図9の右側のブロック内に示すエラー・パターンが得られる。第3のDIMM上のDRAMチップに関連する全てのエラーは、第1のDIMM上の対応するDRAMチップに伝播する。これらのエラーは同じエラーであるので、全ての再生成済みRAID−3行チェックサムPxy’を格納済みチェックサムと比較すると、これらのエラーが同じであることが指示される。RAID−3行チェックサムは、エラーを検出しないであろう。従って、行エラーが存在するという指示は、得られないであろう。しかし、第1及び第3のRAID−6列チェックサムは、エラーがそれらの列に存在することを示すであろう。従って、ここで、再生成済みチェックサム及び格納済みチェックサムを照会すると、その結果は、今や第1及び第3のDIMM上の全てのDRAMにエラーが伝播していることを除き、他のDIMMが完全DIMM障害を有すると正しく仮定された場合に起こったことにそっくりのように見える。
図10は、正しい仮定がなされた場合、前述のように、2つの単一チップ・エラーであろうと思われるものを特定し且つ訂正するためにRAID−6列を使用する試みがなされるときに何が起こるかを例示する。RAID−6方程式を解決しようと試みるとき、殆どの場合に、無効な解が得られるであろう。これが起こる場合、当該解答が間違っていることが検出され、他の解答が正しいことが分かる。しかし、255個の可能な位置のうち18個の有効な位置がある。従って、当該エラーを検出しない確率は、比較的高い(18/255=0.0706)。有効に見えて、検出されないような無効な解を生成する可能性は、7%(100のうち7)である。このケースでは、RAID−6訂正が実行され、これが一旦完了すると、再生成済みチェックサムが格納済みチェックサムと等しいことが検出されるであろう。全てのチェックサムがRAID−3チェックサム及びRAID−6チェックサムの両方と一致することが検出されるであろう。RAID−6方程式を使用すると、当該列内に複数のエラーがある場合は、間違った結果が得られることがある(ここでは、RAID−6は、2つの消失済みシンボル・エラーの訂正符号としてではなく、単一エラーの訂正符号として使用されている)。図10のこの例では、計算の結果、右側のエラー・パターンが得られ、そこでは、各行内の各対応するDRAMチップに関連するエラーは、同一である。すなわち、
s00=Q00+Q00’=z02+z12+z22+・・ZF2+W02
s02=Q02+Q02’=Z02+Z12+Z22+・・+ZF2+W02
従って、
s00=s02
これは、RAID−6方程式の解が、格納済みデータから独立しており、両方の列について同じであるエラーにのみ依存することを指示する。これらのエラーは同じであるから、これは、検出されない無効な解が行整列することを保証し、RAID−3又はRAID−6チェックサムがこれらのエラーを検出することを不可能にする。検出されない間違った解が行整列する限り、RAID6列訂正を実行した後、これらのエラーは、RAID−3行チェックサムによって検出されないであろう(このRAID−6訂正は、訂正不能エラー又は「UE」に帰着しないと仮定する)。この例では、格納済みチェックサムP60及び再生成済みチェックサムP60’は一致する。というのは、XOR演算中に、D60及びD62の両方にあるエラー(S00+z62)は、相殺するからである。
しかし、図11に例示するように、この問題に対する比較的簡単な解決策がある。RAID−6方程式の解は、エラー情報だけの関数である。以下では、RAID−6訂正を試みた後に、未検出エラーの行及びエラー値整列問題をどのように解決することができるかを説明する。
図9の第1の列用の格納済みチェックサムQ00は、最初は次の通りである。
Q00=D00+D10+D20+・・+DF0
当該エラーを訂正することを試みるためにRAID−3行が使用された後、この格納済みチェックサムは、次のようになる。
Qmod00=D00+D10+D20+・・+DF0+w02
=Q00+w02
再生成済みチェックサムは、次の通りである。
Q00’=D00+D10+D20+・・+DF0+z02+z12+z22 +・・+zF2
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
S00=Qmod00+Q00’=Q00+w02+Q00’
=z02+z12+z22+・・+zF2+w02
第3の列上で同じ演算を実行すると、次のようになる。格納済みチェックサムQ02は、最初は、次の通りである。
Q02=D02+D12+D22+・・+ DF2
当該エラーを訂正することを試みるためにRAID−3行が使用された後、この格納済みチェックサムは、次のようになる。
Qmod02=D02+D12+D22+・・+DF2+w02
=Q02+w02
再生成済みチェックサムは、次の通りである。
Q02’=D02+D12+D22+・・+DF2+z02+z12+z22 +・・+zF2
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
S02=Qmod02+Q02’= Q02+w02+Q02’
=z02+z12+z22+・・+zF2+w02
従って、第1及び第3の列の両方におけるRAID−6チェックサム用の解は同じであり、次のようになることが明らかである。
S00=S02=z02+z12+z22+・・+zF2+w02
第2のチェックサムの同様の分析は、次の結果を与える。
Figure 0005349470

従って、エラーが有効な解であるように見えるものを偶然に生じるならば、これらのエラーは常に行整列し、RAID−3行チェッキングによっては検出できないであろう。
しかし、図11に示すように、この整列を防止する簡単な手順がある。4つの定数a、b、c、dを、それらの全てが互いに等しくない一意的な数で且つゼロでない数として、定義する。第1のRAID−6チェックサムを、
Q00=D00+D10+D20+・・+DF0
Q01=D01+D11+D21+・・+DF1
Q02=D02+D12+D22+・・+DF2
Q03=D03+D13+D23+・・+DF3
の代わりに、
Q00=a*(D00+D10+D20+・・+DF0)
Q01=b*(D01+D11+D21+・・+DF1)
Q02=c*(D02+D12+D22+・・+DF2)
Q03=d*(D03+D13+D23+・・+DF3)
であるように修正する。
参考のために、図9の例を再び使用して説明すると、格納済みチェックサムQ02は、最初は、次のようになる。
Q00=a*(D00+D10+D20+・・+DF0)
当該エラーを訂正することを試みるためにRAID−3行が使用された後、この格納済みチェックサムは、次のようになる。
Qmod00=a*(D00+D10+D20+・・+DF0)+w02
=Q00+w02
再生成済みチェックサムは、次の通りである。
Q00’=a*(D00+D10+D20+・・+DF0+z02+z12 +z22+・・+zF2)
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
S00=Qmod00+Q00’=Q00+w02+Q00’
=a*(z02+z12+z22+・・+zF2)+w02
格納済みデータ値を得るために、これを「a」で除算すると、その結果は次の通りである。
S00/a=z02+z12+z22+・・+zF2+w02/a
第3の列では、検索される第1のチェックサムは、
Q02=W02+c*(D02+D12+・・+DF2)
であり、再生成済みチェックサムは、
Q02’=c*(D02+D12+・・+DF2+Z02+Z12+・・+ZF2)
である。従って、
S02=Q02+Q02’=W02+c*(Z02+Z12+・・+ZF2)
となる。もし、w02がゼロに等しくなければ、S02/c及びS00/aが異なることは明らかである。これは、列1及び列3で行われる単一シンボル訂正が同じ訂正であることを防止する。この方法は、全てのDIMM上の第2の冗長チップに格納済みのチェックサムに対し同様の修正を実行することにより、改良することができる。
第1及び第3の列の両方における第1のRAID−6チェックサム用の解は、同じにならないことが分かる。というのは、W02がゼロでない場合、w02/a及びw02/cは、等しくないからである。この例では、RAID−6を介してエラーを訂正する試みは、RAID−3行チェックサムによって検出可能な、DRAMチップD62及びD90内のエラーを有するデータを生成する。
以下の説明は、オフセットが適用される場合、図8の第1のシナリオ(第3のDIMMが完全DIMM障害を有すると正しく仮定)が、依然として機能することを示す。前述のように、RAID−3行方程式は、第3のDIMM上のデータを訂正するために、次のように使用される。
Dx2=Dx0+Dx1+Dx3+Px0
但し、x=0,1,2,・・,F
第3のDIMM上の消失を訂正するためにRAID−3を使用することを試みる場合、その結果は、右側のエラー・パターンである。D40及びD42は、依然としてエラーe40を保持する。再び、当該エラーは、それが同じエラーであるという理由で、RAID−3行によって検出されない。従って、これらのエラーは、RAID−3行のXOR演算中に相殺される。格納済みチェックサムP40を再生成済みチェックサムP40’と比較した結果は、エラーがないことを指示する。しかし、依然として少なくとも1つのエラーがあることが分かっているから、当該アルゴリズムは、前進して、それらのエラーを特定し且つ訂正するためのオフセットを有する修正済みRAID−6列方程式を使用する。
オフセットを有する修正済みRAID−6方程式は、次の通りである。
Q00=a*(D00+D10+D20+・・+DF0)
Q01=b*(D01+D11+D21+・・+DF1)
Q02=c*(D02+D12+D22+・・+DF2)
Q03=d*(D03+D13+D23+・・+DF3)
格納済みチェックサムQ00は、最初は、次の通りである。
Q00=a*(D00+D10+D20+・・+DF0)
当該エラーを訂正することを試みるためにRAID−3行が使用された後、この格納済みチェックサムは、次のようになる。
Qmod00=a*(D00+D10+D20+・・+DF0)= Q00
再生成済みチェックサムは、次の通りである。
Q00’=a*(D00+D10+D20+・・+DF0+e40)
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
S00=Qmod00+Q00’=a*(e40)
定数「a」は、除算を通して除去され、その結果として得られるe40は、オフセットが適用される前に得られた結果と同じである。
ここで、第3の列上で同じ演算が行われる。 格納済みチェックサムQ02は、最初は、次の通りである。
Q02=c*(D02+D12+D22+・・+DF2+e40)
当該エラーを訂正することを試みるためにRAID−3行が使用された後、この格納済みチェックサムは、次のようになる。
Qmod02=c*(D02+D12+D22+・・+DF2)= Q02
再生成済みチェックサムは、次の通りである。
Q02’=c*(D02+D12+D22+・・+DF2+e40)
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
S02=Qmod02+Q02’=c*(e40)
定数「c」は、除算を通して除去され、その結果として得られるe40は、オフセットが適用される前に得られた結果と同じである。従って、オフセットは、両方のケースで正しく機能する。
図12は、非常に蓋然性が低いイベント、すなわち一の完全DIMMキル(本明細書では「一のDIMM障害」とも称する)が、他のDIMM上の追加的な2つのDRAM装置(本明細書では「DRAMチップ」とも称する)エラーと同時に(本明細書では「一致する」とも称する)生じるようなイベントにおいて、何が起こるかを例示する。ここでは、最初に、第3のDIMMが完全DIMM障害を有すると正しく仮定される。前述のように、RAID−3行チェックサムを使用することにより消失を訂正する試みがなされると、左側のエラー・パターンが得られる。前述のように、これらのエラーのどちらも、RAID−3行チェックサム(Pxy)で検出することができない。これらのエラーは、RAID−6列チェックサムで検出可能であるが、各列内に複数のエラーがあるから、RAID−6は、これらのエラーを特定し且つ訂正することができない。もし、1行当たり1つのエラーがあると仮定し、前述のように、RAID−6方程式を解く試みがなされるならば、エラーを検出しない可能性は、7%(18/255=0.0706として計算された比較的高い確率)である。列チェックサムに関連するエラーがないので、オフセット乗数は助けにならない。これらのエラーが検出されない場合、解は、行整列し、その問題を検出することを不可能にするであろう。
実施形態の有効性を改良するために、存在検出(DIMMがインストールされたこと及びDIMM属性を識別するもの)及び障害ロギングを使用することができる。
図13〜図15は、前述の処理を実行するために実施形態によって実装することができる、典型的なプロセスのフローチャートを示す。このプロセスを実行する機構は、メモリ・コントローラ308上に位置する、ソフトウェア及びハードウェアの一方又は両方によって実装することができる。代替実施形態では、前記機構の一部分は、メモリ・コントローラ308に置かれ、また前記機構の他の部分は、1つ以上のメモリ・モジュール302(例えば、ハブ装置312)上に置かれる。この場合、メモリ・コントローラ308とメモリ・モジュール302の間で、処理を共有することができる。他の代替実施形態では、前記機構の全て又は一部は、ホスト・プロセッサ310上に置かれる。
図13を参照して説明する。処理は、ブロック1102で開始する。ブロック1104では、読み取り要求(例えば、主ストア・キャッシュ・ライン読み取り要求)を受け取る。ブロック1106では、前記読み取り要求に応答して戻されたデータ内にエラーが存在するか否かを決定する。もし、チェックサム・シンドロームの全てがゼロに等しくなければ、エラーが存在する。エラーが存在しなければ、処理はブロック1108で継続し、そこで要求されたデータが要求元に戻される(例えば、正しいデータをキャッシュに転送する)。
ブロック1106で、エラーが存在することを決定すれば、ブロック1112で、エラー・シグニチャが単一データ・シンボル・エラー・シグニチャ(例えば、Px=1、Q0y=1及びQ1y=1)であるか否かを決定する。そうであれば、ブロック1114で、2次元の3角測量法を使用して、シンボル・エラー位置を特定する。ブロック1116では、3角測量法の結果が既知の特定済みの単一シンボル(SD1)エラーであるか否かを決定する。多重エラーについては、エラー位置を特定する動作は、より大きな確実性で正しいエラー・シグニチャを決定するために使用することができる。そうすると、或る曖昧さに遭遇するような希なイベントについて、検出及び訂正の有効性を改良することができる。ブロック1116で決定されるように、3角測量法の結果が既知の特定済みの単一シンボル(SD1)エラーであれば、処理は、ブロック1120で継続する。さもなければ、ブロック1118で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック1120で継続し、そこでメモリに保存することによりエラー(又は消失)を訂正するために、Px0、Q0y又はQ1yチェックサムを使用する。その後、処理は、ブロック1108で継続する。
ブロック1112で、エラー・シグニチャが単一データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック1122で、当該エラー・シグニチャが1つの行及び1つの列(例えば、Px=1、Q0y=1又はQ1y=1)に影響する、単一チェックサム・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック1124で、2次元の3角測量法を使用して、シンボル・エラー位置を特定する。ブロック1126では、3角測量法の結果が既知の特定済みの単一シンボル(SE1)エラーであるか否かを決定する。そうであれば、処理は、ブロック1130で継続する。さもなければ、ブロック1128で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック1130で継続し、そこでPx0、Q0y又はQ1yチェックサムが再生成され、メモリに書き込まれる。次に、処理は、ブロック1108で継続する。
ブロック1122で、エラー・シグニチャが単一チェックサム・エラー・シグニチャでないことを決定すれば、ブロック1132で、エラー・シグニチャが2重チェックサム・エラー・シグニチャ(例えば、Px=1及びQ0y=1、又はPx及びQ1y=1)であるか否かを決定する。そうであれば、ブロック1136では、2次元の3角測量法を使用して、シンボル・エラー位置を特定する。ブロック1138では、3角測量法の結果が既知の特定済みの2重シンボル(SD2)エラーであるか否かを決定する。そうであれば、処理は、ブロック1142で継続する。さもなければ、ブロック1140で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック1141で継続し、そこでPx0、Q0y又はQ1yチェックサムが再生成され、メモリに書き込まれる。次に、処理は、ブロック1108で継続する。
ブロック1132で、エラー・シグニチャが2重チェックサム・エラー・シグニチャでないことを決定すれば、処理は、図14のブロック1134に進む。図14のブロック1144では、エラー・シグニチャが2つの行及び2つの列(例えば、Px=2及びQ0y=2及びQ1y=2)に影響する、2重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック1146で、2次元の3角測量法を2回使用して、両方のシンボル・エラー位置を特定する。ブロック1148では、3角測量法の結果が両方とも既知の特定済みの単一シンボル(SD1)エラーであるか否かを決定する。そうであれば、処理は、ブロック1152で継続する。さもなければ、ブロック1150で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック1152では、両方の消失を訂正するためにPx0、Q0y又はQ1yチェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図13のブロック1110で継続する。
ブロック1144で、エラー・シグニチャが2つの行及び2つの列に影響する、2重データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック1154で、エラー・シグニチャが1つの行及び2つの列(例えば、Px=1及びQ0y=2及びQ1y=2)に影響する、2重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック1156で、2次元の3角測量法を2回使用して、両方のシンボル・エラー位置を特定する。ブロック1158では、3角測量法の結果が両方とも既知の特定済みの単一シンボル(SD1)エラーであるか否かを決定する。そうであれば、処理は、ブロック1162で継続する。さもなければ、ブロック1160で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック1162では、両方の消失を訂正するためにQ0y又はQ1yチェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図13のブロック1110で継続する。
ブロック1154で、エラー・シグニチャが1つの行及び2つの列に影響する、2重データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック1164で、エラー・シグニチャが2つの行及び1つの列(例えば、Px=2及びQ0y=1及びQ1y=1)に影響する、2重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック1168で、2次元の3角測量法を2回使用して、両方のシンボル・エラー位置を特定する。ブロック1170では、3角測量法の結果が両方とも既知の特定済みの単一シンボル(SD1)エラーであるか否かを決定する。そうであれば、処理は、ブロック1174で継続する。さもなければ、ブロック1172で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック1174では、両方の消失を訂正するためにPx0チェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図13のブロック1110で継続する。
ブロック1164で、エラー・シグニチャが2つの行及び1つの列に影響する、2重データ・シンボル・エラー・シグニチャでないことを決定すれば、図15のブロック1166に進む。図15のブロック1176では、エラー・シグニチャが全ての行及び1つの列(例えば、Px>2及びQ0y=1及びQ1y=1)に影響する、単一DIMMのエラー・シグニチャであるか否かを決定する。そうであれば、ブロック1178で、2次元の3角測量法を2回使用して、DIMM位置を特定する。ブロック1180では、3角測量法の結果が両方とも既知の特定済みの単一DIMM(SD5)エラーであるか否かを決定する。そうであれば、処理は、ブロック1184で継続する。さもなければ、ブロック1182で、位置及びエラー・タイプを保存することにより、DIMMを特定する。ブロック1184では、両方の消失を訂正するためにPy0チェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図13のブロック1110で継続する。
ブロック1176で、エラー・シグニチャが全ての行及び1つの列に影響する、単一DIMMのエラー・シグニチャではないことを決定すれば、ブロック1186で、エラー・シグニチャが全ての行及び2つの列(例えば、Px>2及びQ0y=2及びQ1y=2)に影響する、単一DIMM及び単一DRAMのエラー・シグニチャであるか否かを決定する。そうであれば、ブロック1190で、DIMM(D0a,D1a,D2a,・・DFa,Q0a,Q1a。但し、Q0y及びQ1yは、y=a,bである)に関する障害を仮定して、訂正を試みる。ブロック1190〜1198によって実行される処理は、図7〜図12を参照して既に説明した。ブロック1192では、Q0a、Q1a、Q0b及びQ1b RAID−6アルゴリズムで特定され且つ訂正される、追加的なシンボル・エラーDxa及びDxbを位置決めする。ブロック1193では、全てのシンドロームを再生成し且つそれらが全てゼロでないことをチェックする。
次に、ブロック1194で、DIMM(D0b,D1b,D2b,・・DFb,Q0b,Q1b。但し、Q0y及びQ1yは、y=a,bである)に関する障害を仮定して、訂正を試みる。ブロック1195では、Q0a,Q1a,Q0b及びQ1bRAID−6アルゴリズムで特定され且つ訂正される、追加的なシンボル・エラーDxa及びDxbを位置決めする。ブロック1196では、全てのシンドロームを再生成し且つそれらが全てゼロでないことをチェックする。
次に、ブロック1197では、DIMM a又はDIMM bだけが全ての非ゼロ・シンドロームを生成したか否かを決定する。そうであれば(すなわち、エラーは、DIMM a又はDIMM bの何れかであると決定することができる)、ブロック1198で、訂正済みの値をメモリに書き込むことにより、全ての非ゼロ・シンドロームに関連する訂正済みのデータを戻す。次に、処理は、図13のブロック1110で継続する。
ブロック1197で、DIMM a及びDIMM bの両方が全ての非ゼロ・シンドロームを生成したことを決定すれば(すなわち、当該エラーは、DIMM a又はDIMM bの何れかであり得る)、処理は、ブロック1188で継続する。また、ブロック1186で、エラー・シグニチャが全ての行及び2つの列に影響する、単一DIMM及び単一DRAMエラー・シグニチャでなかったことを決定すれば、処理は、ブロック1188で継続する。ブロック1188では、エラーは、一の訂正不能メモリ・エラーであると決定される。
図16は、2次元の3角測量法を実行するために使用することができる、典型的なプロセスのフローチャートを示す。このプロセスは、ブロック1202で開始する。ブロック1204では、メモリから読み取られたデータから、Px0、Q0y又はQ1yチェックサムが再生成され、格納済みチェックサムに追加される。ブロック1206では、当該データに関連する全てのチェックサム・シンドロームがゼロ(すなわち、当該データがエラーを有さない)に等しいか否かを決定する。当該データがエラーを有さなければ、処理は、ブロック1208で継続し、ブロック1210で、「エラーなし」という結果が要求元に戻される。
ブロック1206で、当該データがエラーを保持すると決定すれば、ブロック1212で、非ゼロ・シンドロームを有する、Px0の全てのx及びQzyのyを識別する。ブロック1214では、(例えば、図17のテーブルを使用して)エラーを、SD1、SD2、SD3、SD4、SD5、SD6、SE1又はSE2として分類する。ブロック1216では、SD1、SD2、SD3及びSD4として分類されたエラーについて、シンボル・エラーの位置を、Dxyに設定する。ブロック1218では、SD5として分類されたエラーについて、シンボル・エラーの位置を、DIMM D0y,D1y,D2y,・・Dfy,Q0yに設定する。ブロック1220では、SD6として分類されたエラーについて、シンボル・エラーの位置を、DIMM D0a,D1a,D2a,・・Dfa,Q0a,Q1aか、又はD0b,D1b,D2b,・・DFb,Q0b,Q1bの何れかに設定する。但し、y=a,bである。ブロック1222では、正しいDIMM及び一致するシンドロームを推測した後に、追加のシンボル・エラーの位置を、Q0a,Q1a,Q0b及びQ1b RAID−6アルゴリズムによって特定され且つ訂正されたDxa及びDxbに設定する。その後、処理は、ブロック1210で継続する。
図17は、図13〜図16を参照して説明した処理によって使用される、エラー分類の要約を含む。
本明細書に開示した処理及び分類は、例示的なものであるに過ぎない。実施形態は、本発明の範囲から逸脱することなく、他の処理及び分類を使用することができる。
実施形態では、ハブ装置は、分岐接続又は2地点間バス構造(さらに、かかるバス構造は1つ以上の追加のハブ装置に対するカスケード接続を含むことができる)を通して、メモリ・コントローラに接続することができる。メモリ・アクセス要求は、メモリ・コントローラからバス構造(例えば、メモリ・バス)を介して選択されたハブに送信される。ハブ装置は、受信されたメモリ・アクセス要求に応答して、これを変換することにより、ハブ装置からの書き込みデータを格納するか又は読み取りデータをハブ装置に供給するようにメモリ装置を制御する。読み取りデータは1つ以上の通信パケットへ符号化され、メモリ・バスを通してメモリ・コントローラに送信される。
代替実施形態では、メモリ・コントローラは、これを1つ以上のプロセッサ・チップ及びサポート用論理と統合して、1つ以上のプロセッサ又はサポート用論理を搭載したマルチチップ・キャリア内に含まれる、個別のチップ(一般に「ノースブリッジ」チップと呼ばれるもの)内にパッケージ化するか、又はアプリケーション/環境と最も良く適合する種々の代替形式でパッケージ化することができる。これらの解決策のうち任意のものは、1つ以上のハブ・チップ又はメモリ装置に接続するために、1つ以上の狭い/高速リンクを使用してもよいし、そのようなリンクを使用しなくてもよい。
メモリ・モジュールは、DIMM、シングル・インライン・メモリ・モジュール(SIMM)又は他のメモリ・モジュール、或いはカード構造を含む、種々の技術によって実装することができる。一般に、DIMMは、ランダム・アクセス・メモリ(RAM)集積回路又はダイを小さな回路ボードの一方又は両方の表面に備え、信号又は電源ピンを当該回路ボードの両方の表面に備えたものを表す。一方、SIMMは、RAM集積回路又はダイを小さな回路ボード又は基板の一方又は両方の表面に備え、1つの長いエッジに沿って単一行のピンを備えたものを表す。図1に示すDIMMは、168本のピンを含むが、その後のDIMMは、100本〜300本以上のピンを有するように構成されている。実施形態では、メモリ・モジュールは、2つ以上のハブ装置を含むことができる。
実施形態では、メモリ・バスは、メモリ・モジュール上のハブ装置に対する分岐接続を使用するか、又は2地点間接続を使用して構築される。下流バスと呼ばれるコントローラ・インタフェースの下流部分(又はメモリ・バス)は、メモリ・モジュール上のハブ装置に送信される、コマンド、アドレス、データ及び他の情報(動作、初期化又はステータス情報)を含むことができる。各ハブ装置は、バイパス回路を介して後続のハブ装置に情報を単に転送したり、情報が下流のハブ装置を目標としていると決定する場合は、情報を受け取り、解釈し、再駆動したり、情報の宛先を決定するために最初にその情報を解釈せずに、その情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。
上流バスと呼ばれるメモリ・バスの上流部分は、要求された読み取りデータ、エラー、ステータス又は他の動作情報を戻す。この情報は、バイパス回路を介して後続のハブ装置へ転送したり、この情報が上流のハブ装置又はプロセッサ複合体内のメモリ・コントローラを目標としていると決定する場合は、この情報を受け取り、解釈し、再駆動したり、この情報の宛先を決定するために最初にこの情報を解釈せずに、この情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。
代替実施形態では、2地点間バスは、下流の通信(メモリ・コントローラからメモリ・モジュール上のハブ装置への通信)中にバス情報を1つ以上の可能なハブ装置に供給するとともに、上流の通信(メモリ・モジュール上のハブ装置からメモリ・コントローラへの通信)中にバス情報をしばしば1つ以上の上流ハブ装置を介して供給するための、スイッチ又はバイパス機構を含む。他の実施形態は、当分野では公知のダミー基板(continuity module)を使用することを含み、かかるダミー基板をメモリ・コントローラとカスケード相互接続メモリ・システム内で最初に装着したハブ装置(すなわち、1つ以上のメモリ装置と通信関係にあるハブ装置)との間に配置することができる。このようにすると、メモリ・コントローラと最初に装着したハブ装置との間にある任意の中間ハブ装置位置は、たとえ1つ以上の中間ハブ装置位置がハブ装置を含んでいないとしても、メモリ・コントローラと最初に装着したハブ装置との間を通過する情報を受信することができる。このダミー基板は、任意のバス制限に従うことを条件として、最初の位置(メモリ・コントローラに最も近い位置)、最後の位置(終端点の直前にある位置)又はその中間位置を含む、任意のモジュール位置に設置することができる。マルチモジュール・カスケード相互接続バス構造においてダミー基板を有利に使用するには、メモリ・モジュール上の中間のハブ装置を除去し、当該中間のハブ装置を除去した後にもシステムが継続的に動作するように、当該中間のハブ装置をダミー基板と置き換えるようにするとよい。より一般的な実施形態では、このダミー基板は、その入力から対応する出力まで全ての必要な信号を転送するための相互接続線を含むか、又はリピータ装置を通して再駆動されてもよい。さらに、このダミー基板は、不揮発性ストレージ装置(例えば、EEPROM)を含むことができるが、主メモリ・ストレージ装置を含まないであろう。
実施形態では、メモリ・システムは、カスケード相互接続メモリ・バスを介してメモリ・コントローラに接続された1つ以上のメモリ・モジュール上に1つ以上のハブ装置を含むが、2地点間バス、分岐接続メモリ・バス又は共用バスのような他のメモリ構造も実装することができる。使用される信号方法、目標動作周波数、スペース、電力、コスト等の制約に依存して、種々の代替バス構造を考慮することができる。2地点間バスは、分岐信号線、スイッチ装置又はスタブを有するバス構造と比較して信号の劣化が少ないという理由で、電気的な相互接続を備えたシステムにおいて最適の性能を提供することができる。しかし、複数の装置又はサブシステムとの通信を必要とするシステム内で使用すると、この方法は、追加のコンポーネントに伴うコスト及びシステム電力の増加に帰着するばかりか、中間のバッファリング又は再駆動を必要とするために潜在的メモリ密度を減少させることがある。
また、図面には示されていないが、メモリ・モジュール又はハブ装置は、「存在検出」バス、I2Cバス又はSMBusのような、別個のバスを含むことができる。このバスは、(一般に、起動後に)ハブ装置又はメモリ・サブシステムの属性を決定すること、障害又はステータス情報をシステムに報告すること、起動後又は通常の動作中にハブ装置又はメモリ・サブシステムを構成することを含む、1つ以上の目的のために使用される。また、このバスは、そのバス特性に依存して、ハブ装置又はメモリ・モジュールからメモリ・コントローラに対し動作の有効な完了を報告したり、メモリ・コントローラ要求の実行中に生じる障害を識別するための手段を提供することができる。
2地点間バス構造と同様の性能は、スイッチ装置を追加することによって得ることができる。これらの及び他の解決策は、2地点間バスの特性の多くを維持しつつも、より低い電力で増加したメモリ・パッケージ化密度を提供する。分岐接続バスは、より低い動作周波数に制限されるとはいえ、多くのアプリケーションについては有利なコスト/性能の代替的な解決策を提供する。光バスの解決策は、2地点間又は分岐接続アプリケーションの何れかにおいて、著しく増加した周波数及び帯域幅を許容するが、コストとスペースの点で不利である。
本明細書では、「バッファ」又は「バッファ装置」という用語は、(コンピュータ内で使用されるような)一時ストレージ・ユニット、特に或るレートで情報を受け取り且つ他のレートでその情報を伝える一時ストレージ・ユニットを表す。実施形態では、バッファは、2つの信号(例えば、変更される電圧レベル又は電流能力)間の両立性を提供する電子装置である。「ハブ」という用語は、「バッファ」という用語と交換可能に使用されることがある。ハブは、他の幾つかの装置に接続される、複数のポートを含む装置である。ポートは、対応するI/O機能性にサービスを提供するインタフェースの一部である(例えば、ポートは、2地点間リンクのうちの1つ又はバスを介してデータ、アドレス及び制御情報を送信及び受信するために利用することができる)。ハブは、幾つかのシステム、サブシステム又はネットワークを互いに接続するための中心の装置とすることができる。受動ハブは、単にメッセージを転送するに過ぎないのに対し、能動ハブ(リピータ)は、データのストリームを増幅及びリフレッシュすることにより、距離とともに増大する減衰を補償する。本明細書では、「ハブ装置」という用語は、メモリ機能を実行するための論理(ハードウェア及び/又はソフトウェア)を含む、ハブ・チップを表す。
本明細書では、「バス」という用語は、コンピュータ内の2つ以上の機能装置を接続する複数セットの導体(例えば、線及び集積回路内の印刷回路ボードの配線又は接続)のうちの1つを表す。データ・バス、アドレス・バス及び制御バスは、それらの名前に拘わらず、多くの場合に互いに他を必要としているので、全体として単一のバスを構成する。バスは、各々が2つ以上の接続点を有する複数の信号線を含むことがあり、かかる信号線は、2つ以上のトランシーバ、送信機又は受信機を電気的に接続する、主伝送パスを形成する。「バス」という用語とは対照的に、「チャネル」という用語は、メモリ・システム内のメモリ・コントローラに関連づけられるような「ポート」の機能を記述するためにしばしば使用され、1つ以上のバス又は複数セットのバスを含むことがある。「チャネル」という用語は、メモリ・コントローラ上のポートを表す。しかし、この用語は、一般にはI/O又は他の周辺装置と関連して使用され、例えば、プロセッサ又はメモリ・コントローラと1つ以上のメモリ・サブシステムのうちの1つとの間のインタフェースを表すために使用されることが多い。
本明細書では、「デイジー・チェーン」という用語は、バス結線構造であって、例えば、装置Aが装置Bに接続され、装置Bが装置Cに接続され、以下同様にして各装置が接続されるようなバス結線構造を表す。一般に、最後の装置は、抵抗器又は終端子に接続される。単純なバスとは対照的に、全ての装置が同一の信号を受信するか、又は各装置は1つ以上の信号を修正してそれらを次の装置に渡すことができる。本明細書では、「カスケード」又は「カスケードは相互接続」という用語は、一連のステージ(装置)又は相互接続されたネットワーキング装置(例えば、ハブ)の集合を表す。これらのハブは、論理的なリピータとして動作し、既存のデータ・ストリーム内にデータをマージすることを可能にする。また、本明細書では、「2地点間バス」又は「リンク」という用語は、各々が1つ以上の終端子を含むことができる、複数の信号線又はそのうちの1つを表す。2地点間バス又はリンクでは、各信号線は、2つのトランシーバ接続点を有し、その各トランシーバ接続点は、送信回路、受信回路又はトランシーバ回路に接続される。「信号線」という用語は、少なくとも1つの論理的な信号を伝送するために使用される1つ以上の導電体又は光回線(optical carrier)を表す。一般に、かかる導電体又は光回線は、単一の回線若しくは2つ以上の回線として、又は対より線、並列若しくは同心円式のものとして構成される。
一般に、メモリ装置は、主としてメモリ(ストレージ)セルから構成される集積回路として定義され、DRAM(動的ランダム・アクセス・メモリ)、SRAM(静的ランダム・アクセス・メモリ)、FeRAM(強誘電性RAM)、MRAM(磁気ランダム・アクセス・メモリ)、フラッシュ・メモリ、情報を電気的、光学的、磁気的、生物学的又は他の形態で格納する他の形式のランダム・アクセス・メモリ等を含む。動的メモリ装置のタイプには、FPM DRAM(高速ページ・モード動的ランダム・アクセス・メモリ)、EDO(拡張データ・アウト)DRAM、BEDO(バーストEDO)DRAM、SDR(シングル・データ・レート)同期DRAM、DDR(ダブル・データ・レート)同期DRAM、又はDDR2、DDR3、DDR4のような今後期待される後継装置、及びグラフィックスRAM、ビデオRAM、LP RAM(低消費電力DRAM)のような関連する技術のものがあり、これらは、しばしば関連するDRAMに見られる基本的な機能、特徴又はインタフェースに基づいている。
メモリ装置は、チップ(ダイ)又は種々のタイプ及び構成を有する単一若しくはマルチチップ・パッケージの形式で使用することができる。マルチチップ・パッケージでは、メモリ装置は、他のメモリ装置、論理チップ、アナログ装置及びプログラム可能な装置のような他のタイプの装置とパッケージ化され、また抵抗器、コンデンサ及び誘導子のような受動装置を含むことができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
モジュール・サポート装置(バッファ、ハブ、ハブ論理チップ、レジスタ、PLL、DLL、不揮発性メモリ等を含む)は、技術、電力、スペース、コスト及び他のトレード・オフに基づいて、複数の個別チップ又はコンポーネントから構成することができ、複数の個別チップとして1つ以上の基板上で組み合わせることができ、単一のパッケージ上で組み合わせられることができ、さらには単一デバイス上に統合することもできる。さらに、抵抗器、コンデンサのような種々の受動装置の1つ以上は、技術、電力、スペース、コスト及び他のトレード・オフに基づいて、サポート・チップ・パッケージ上に統合することができ、或いは基板、ボード又は未加工のカード自体へ統合することができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
メモリ装置、ハブ(バッファ)、レジスタ、クロック装置、受動装置、他のメモリ・サポート装置又はコンポーネントを、メモリ・サブシステム又はハブ装置に接続するためには、電気的、光学的又は代替手段を介して2つ以上の装置間の通信を可能にするための、ハンダ相互接続、導電接着剤、ソケット構造、接触圧及び他の方法を含む種々の方法を使用することができる。
1つ以上のメモリ・モジュール(又はメモリ・サブシステム)又はハブ装置を、メモリ・システム、プロセッサ複合体、コンピュータ・システム又は他のシステム環境に接続するためには、ハンダ相互接続、コネクタ、接触圧、導電接着剤、光相互接続並びに他の通信及び電力供給方法のうちの1つ以上を使用することができる。コネクタ・システムは、コネクタ(雄型/雌型)、導電性の接触又は雄型若しくは雌型コネクタと接合する1つのキャリア上のピン、光接続、接触圧(しばしば固定機構と協働する)又は種々の他の通信及び電力供給方法の1つ以上を含むことができる。相互接続は、メモリ・アセンブリの1つ以上の端に沿って又はメモリ・サブシステムの端から離れた位置に配置することができる。この配置位置を左右する要素には、アップグレード/修復のしやすさ、使用可能なスペース/ボリューム、熱伝導、コンポーネントのサイズ及び形状、及び他の物理的、電気的、光学的、視覚的/物理的アクセス等の、アプリケーション上の要件がある。メモリ・モジュール上の電気的相互接続を、接点、ピン又はタブと称することが多い。コネクタ上の電気的相互接続は、接点又はピンと称することが多い。
本明細書では、「メモリ・サブシステム」という用語は、1つ以上のメモリ装置、1つ以上のメモリ装置及び関連するインタフェース又はタイミング/制御回路、又はメモリ・バッファ、ハブ装置又はスイッチと関連する1つ以上のメモリ装置を表すが、これらに限定されない。また、「メモリ・サブシステム」という用語は、1つ以上のメモリ装置と、これに関連するインタフェース又はタイミング/制御回路又はメモリ・バッファ、ハブ装置又はスイッチとを、基板、カード、モジュール又は関係するアセンブリ上に組み立てたものを表すことができる。かかる基板、カード、モジュール又は関係するアセンブリは、メモリ・サブシステムを他の回路と電気的に接続するためのコネクタ又はこれと同様の手段を含むことができる。また、本明細書に開示したメモリ・モジュールは、1つ以上のメモリ装置及びハブ装置を含んでいるので、これをメモリ・サブシステムと称することができる。
メモリ・サブシステム又はハブ装置に対してローカルに設けることができる追加の補助機能は、書き込み又は読み取りバッファ、1レベル以上のメモリ・キャッシュ、ローカルのプリフェッチ論理、データ暗号化/暗号化解除、圧縮/圧縮解除、プロトコル変換、コマンド優先順位付け論理、電圧又はレベル変換、エラー検出又は訂正回路、データ消し込み、ローカルの省電力回路又は報告、動作又はステータス・レジスタ、初期化回路、性能モニタリング又は制御、1つ以上のコプロセッサ、サーチ・エンジン及び以前に他のメモリ・サブシステムに設けられていた他の機能を含む。或る機能をメモリ・サブシステムに対してローカルに配置すると、当該サブシステム内の未使用の回路をしばしば利用することを通して、この特定の機能に関係する追加の性能を得ることができる。
メモリ・サブシステムのサポート装置は、メモリ装置が接続されるのと同じ基板又はアセンブリに接続するか、或いは別個のインターポーザ又は基板にマウントすることができる。かかるインターポーザ又は基板は、種々のプラスチック、シリコン、セラミック又は他の材料を使用して製造され、サポート装置をメモリ装置若しくはメモリ又はコンピュータ・システムの他のコンポーネントに機能的に相互接続するための、電気的、光学的又は他の通信パスを含む。
バス、チャネル、リンク等に沿った情報転送(例えば、パケット)は、多くの信号方法のうち1つ以上を使用して行うことができる。かかる信号方法は、シングル・エンド式、差動式、光学式又は他のアプローチのような方法を含み、電気的な信号方法は、単一又はマルチレベルのアプローチの何れかを使用する、電圧又は電流信号方法のような方法を含む。また、信号は、時間又は周波数、非ゼロ復帰、位相偏移キーイング、振幅変調等の方法を使用して変調することができる。集積回路自体の動作に必要な電源電圧が減少されるのと整合するように(しばしば独立的にではあるが)、電圧レベルは、1.5V、1.2V、1V及びより低い信号電圧に、今後も減少し続けると予想される。
メモリ・サブシステム及びメモリ・システム内では、グローバル・クロッキング、ソース同期クロッキング、符号化クロッキング又はこれらの方法及び他の方法の組み合わせを含む、1つ以上のクロッキング方法を使用することができる。クロック信号方法は、信号線自体のそれと同一とすることができ、又は計画されたクロック周波数及び種々のサブシステム内の計画されたクロックの数に対し適合するものであれば、前記クロッキング方法のうちの1つ又は他の代替方法を使用することができる。単一のクロックを、メモリを対象とする全ての通信並びにメモリ・サブシステム内の全てのクロック化機能と関連づけることができ、又は前述の1つ以上の方法を使用して複数のクロックを駆動することができる。複数のクロックが使用される場合、メモリ・サブシステム内の機能は、メモリ・サブシステムを一意に駆動する1つのクロックに関連づけることができ、又はメモリ・サブシステムと授受されている情報と関係するクロックに由来する1つのクロック(例えば、符号化クロックに関連するクロック)に基づくことができる。代替的に、1つの一意的なクロックをメモリ・サブシステムに転送される情報のために使用し、別個のクロックを1つ(又はそれ以上)のメモリ・サブシステムから供給される情報のために使用することができる。これらのクロックは、通信又は機能的な周波数と同じ又はその整数倍の周波数で動作することができ、データ、コマンド又はアドレス情報に対しそのエッジ又は中心に整列するか又は他のタイミング位置に整列することができる。
一般に、メモリ・サブシステムに引き渡される情報は、アドレス、コマンド及びデータ、並びにステータス又はエラー条件を要求又は報告すること、メモリをリセットすること、メモリ又は論理の初期化を完了すること等に関連する他の情報から成るであろう。一般に、メモリ・サブシステムから引き渡される情報は、当該メモリ・サブシステムに引き渡される前記情報の全て又は任意のものを含むことができるが、アドレス及びコマンド情報を含まないであろう。この情報は、通常のメモリ装置インタフェース仕様(一般に並列)と整合する通信方法を使用して通信することができ、「パケット」構造に符号化することができる。かかるパケット構造は、将来のメモリ・インタフェースと整合するか、通信帯域幅を増加させ又は受信情報を受信装置によって必要とされるフォーマットに変換することにより、サブシステムがメモリ技術とは独立的に動作することを可能にするために開発されるものとすることができる。
メモリ・サブシステムの初期化は、使用可能なインタフェース・バス、所望の初期化速度、使用可能なスペース、コスト/複雑さの目的、サブシステム相互接続構造、この目的及び他の目的のために使用可能な代替プロセッサ(例えば、サービス・プロセッサ)の使用等に基づいて、1つ以上の方法を介して行うことができる。1つの実施形態では、高速バスを使用してメモリ・サブシステムの初期化を行うことができる。一般に、この場合には、先ず、信頼できる通信を確立するためのトレーニング・プロセスを完了し、次に、種々のコンポーネントに関連する属性又は「存在検出」データ又は当該サブシステムに関連する特性を照会し、最後に、適切な装置を当該システム内の意図された動作に関連する情報でプログラムすることが行われる。一般に、カスケード化システムでは、第1のメモリ・サブシステムとの通信が確立された後、一連の後続(下流)サブシステムのうちカスケード相互接続バスに沿った次の位置にあるサブシステムとの通信が順次に確立されるであろう。
第2の初期化方法は、初期化プロセス中に高速バスを1つの周波数で動作させ、その後の通常動作中に高速バスを他の(例えば、より高い)周波数で動作させるというものである。この実施形態では、より低い周波数の動作に関連するタイミング・マージンが増加することに起因して、各サブシステムの照会又はプログラミングを完了する前に、カスケード相互接続バス上の全てのメモリ・サブシステムとの通信を開始することが可能である。
第3の初期化方法は、カスケード相互接続バスを通常の周波数で動作させるも、アドレス、コマンド又はデータ転送に関連するサイクルの数を増加させることができる。1つの実施形態では、アドレス、コマンド又はデータ情報の全て又は一部を保持するパケットを、通常の動作中に1つのクロック・サイクルで転送するが、同じ量又はタイプの情報を、初期化中に2サイクル以上にわたって転送することができる。従って、この初期化プロセスは、「通常」のコマンドではなく、「遅い」コマンドの形式を使用する。このモードには、各サブシステムに含まれるPOR(パワーオン・リセット)論理を介して行われる各サブシステム及びメモリ・コントローラによる起動又は再起動の後の或る時点で、自動的に入ることができる。
第4の初期化方法は、別個のバスを利用することができる。このバスは、存在検出バス(米国特許第5513135号を参照)、I2Cバス(JEDECによって公開された168ピンのDIMMファミリに係る規格である、21Cの改訂版7R8を参照)又は周知のSMBUS等を含む。このバスは、デイジー・チェーン/カスケード相互接続、分岐接続又は代替構造を介してメモリ・システム内の1つ以上のモジュールに接続することにより、メモリ・サブシステムを照会し、総合的なシステム環境内で動作するように各メモリ・サブシステムをプログラムし、当該システム環境内の所望の又は検出された性能、熱、構成又は他の変更に基づいて、通常のシステム動作中に他の時間における動作特性を調整することができる。
また、前述の初期化方法に関連して又はこれとは独立に、他の初期化方法を使用することができる。また、前記第4の初期化方法について説明したような別個のバスを使用すると、初期化のための独立の手段を提供することができるという利点に加えて、サブシステムの動作特性をオンザフライで変更することができ、さらに使用度、温度データ、障害情報等のサブシステムの動作情報を報告するか又はこれに応答することができる(米国特許第6381685号を参照)。
リソグラフィの改良、よりよいプロセス制御、より低い抵抗値を有する材料の使用、増加したフィールド・サイズ及び他の半導体技術の改良、増加した装置の回路密度(しばしば増加したダイのサイズと軌を一にする)により、集積装置上の機能を増加させたり、以前には別個の装置上に実装されていた機能を統合することが容易になってきた。この統合は、意図された機能の総合的性能を改良するだけでなく、ストレージ密度の増加、電力の減少、スペース要件の減少、コストの低下等を促進するように作用するであろう。この統合は、自然な進化のプロセスであって、システムに関連する基本的なビルディング・ブロックへの構造的変化の必要性に帰着するであろう。
メモリ・システム又はサブシステムの各要素に関連する通信パス、データ・ストレージの内容及び全ての機能動作の完全性は、1つ以上の障害検出又は訂正方法を使用することによって高度に保証することができる。これらの種々の要素のうちの全部又は任意のものは、CRC(巡回冗長符号)、EDC(エラー検出及び訂正)、パリティ又は他の符号化/復号化方法のような、この目的に適したエラー検出及び/又は訂正方法を含むことができる。信頼性をさらに拡張するためには、コンピュータ、通信及び関係するシステムにおいて、(情報の転送に関連する間欠的な障害を克服するための)動作の再試行を使用したり、障害のある通信パス又は線を交換するための1つ以上の代替又は交換方法を使用したり、補数化−再補数化技術を使用することができる。
2地点間リンクのような簡単なバス又は分岐接続構造のような複雑なバス上でバス終端を使用することは、増加した性能要求に対応するためにより多く行われるようになっている。これらの種々の終端方法には、抵抗器、コンデンサ、誘導子又はその任意の組み合わせのような終端装置を、信号線と電源電圧又はアース、終端電圧又は他の信号との間に接続するものがある。終端装置は、受動性又は能動性終端構造の一部とすることができ、1つ以上の信号線に沿った1つ以上の位置に存在するか、又は送信又は受信装置の一部として存在することができる。この終端子は、伝送路のインピーダンスと一致するように選択されるか、又はコスト、スペース、電力等の制約内で、使用可能な周波数、動作マージン及び関連する属性を最大化するような代替アプローチを介して選択することができる。
技術的な結果及び利点は、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、メモリ・システムが機能低下なしに動作する能力を含む。これは、メモリ・システムの可用性及び保守性における著しい改良につながることがある。
前述のように、本発明の実施形態は、コンピュータ実装プロセス及びかかるプロセスを実施するための装置の形式で具体化することができる。また、本発明の実施形態は、フレキシブル・ディスク、CD−ROM、ハード・ドライブ又は他のコンピュータ可読記憶媒体のような有形媒体内に記録された、諸命令を保持するコンピュータ・プログラムの形式で具体化することができる。その場合、かかるコンピュータ・プログラムがコンピュータにロードされ且つ実行される場合、当該コンピュータは、本発明を実施するための装置になる。また、本発明は、ストレージ媒体内に格納され、コンピュータによる実行のために当該コンピュータにロードされ、或いは電気的なケーブル、光ファイバ、電磁放射等の伝送媒体を介して伝送されるコンピュータ・プログラムの形式で具体化することができる。その場合、かかるコンピュータ・プログラムがコンピュータにロードされ且つ実行される場合、当該コンピュータは、本発明を実施するための装置になる。汎用のマイクロプロセッサ上で実装される場合、かかるコンピュータ・プログラムのセグメントは、特定の論理回路を作成するように当該マイクロプロセッサを構成する。
以上では、実施形態を参照して本発明を説明したが、当業者には明らかなように、本発明の範囲から逸脱することなく、種々の変更を行ったり、実施形態の特定の要素の代わりにその均等手段を使用することができる。
302・・・DIMM
304・・・DRAMチップ
306a〜306e・・・メモリ・チャネル
308・・・メモリ・コントローラ
310・・・ホスト・システム
312・・・ハブ装置
314・・・メモリ・ブロック
316・・・メモリ・ノード

Claims (8)

  1. メモリ・コントローラと、
    前記メモリ・コントローラ及び複数のメモリ装置と接続された複数のメモリ・モジュールと、
    複数のエラー・コードを使用する、少なくとも2つの機能的に異なるエラー検出手段であって、該各エラー・コードにはシンドロームと前記メモリ装置のサブセットが関連づけられてなるエラー検出手段と、
    前記少なくとも2つの機能的に異なるエラー検出手段によって生成された少なくとも2つの非ゼロ・シンドロームを利用して、該非ゼロ・シンドロームに関連するメモリ装置の共通するサブセット内にある故障かもしれないメモリ装置を追加的に検出するようにエラー訂正機能を拡張し、前記メモリ・システムが故障かもしれないメモリ装置の存在下でも支障なく動作し続けるようにする手段とを有し、
    前記複数のエラー・コードは、複数の前記メモリ・モジュールを横切って行方向に並べられた複数の前記メモリ装置に適用されるRAID−3エラー訂正コードと、単一の前記メモリ・モジュールを横切って列方向に並べられた複数の前記メモリ装置に適用されるRAID−6エラー訂正コードを含む、
    メモリ・システム。
  2. 前記メモリ・モジュールが、前記メモリ・モジュール上でエラー検出及び訂正に利用される1つまたは複数のメモリ装置を含む、請求項1に記載のメモリ・システム。
  3. 前記複数のメモリ・モジュールは、5つの異なるチャネルを介して前記メモリ・コントローラと通信する5つのメモリ・モジュールを含み、
    前記5つのメモリ・モジュールが、1つのメモリ・モジュール上のエラー検出及び訂正のために使用される2つのメモリ装置を有する4つのメモリ・モジュールと、前記4つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記1つのメモリ・モジュールを含む、請求項1に記載のメモリ・システム。
  4. 行整列し且つ検出不能となる複数の障害を生じないことを保証するために、RAID−6エラー訂正コードと共にオフセット多重シフトが使用される、請求項1に記載のメモリ・システム。
  5. メモリ・コントローラと、前記メモリ・コントローラ及び複数のメモリ装置と接続された複数のメモリ・モジュールをもつメモリ・システムにおいて、エラーを検出し且つ訂正するための方法であって、
    複数のエラー・コードを使用する、少なくとも2つの機能的に異なるエラー検出を行うステップであって、該各エラー・コードにはシンドロームと前記メモリ装置のサブセットが関連づけられてなるエラー検出ステップと、
    前記少なくとも2つの機能的に異なるエラー検出手段によって生成された少なくとも2つの非ゼロ・シンドロームを利用して、該非ゼロ・シンドロームに関連するメモリ装置の共通するサブセット内にある故障かもしれないメモリ装置を追加的に検出するようにエラー訂正機能を拡張し、前記メモリ・システムが故障かもしれないメモリ装置の存在下でも支障なく動作し続けるようにするステップとを有し、
    前記複数のエラー・コードは、複数の前記メモリ・モジュールを横切って行方向に並べられた複数の前記メモリ装置に適用されるRAID−3エラー訂正コードと、単一の前記メモリ・モジュールを横切って列方向に並べられた複数の前記メモリ装置に適用されるRAID−6エラー訂正コードを含む、
    方法。
  6. 前記メモリ・モジュールが、前記メモリ・モジュール上でエラー検出及び訂正に利用される1つまたは複数のメモリ装置を含む、請求項5に記載の方法。
  7. 前記複数のメモリ・モジュールは、5つの異なるチャネルを介して前記メモリ・コントローラと通信する5つのメモリ・モジュールを含み、
    前記5つのメモリ・モジュールが、1つのメモリ・モジュール上のエラー検出及び訂正のために使用される2つのメモリ装置を有する4つのメモリ・モジュールと、前記4つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記1つのメモリ・モジュールを含む、請求項5に記載の方法。
  8. 行整列し且つ検出不能となる複数の障害を生じないことを保証するために、RAID−6エラー訂正コードと共にオフセット多重シフトが使用される、請求項5に記載の方法。
JP2010513832A 2007-06-28 2008-06-10 メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラを含むメモリ・システム及び方法 Active JP5349470B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/769,929 US8041990B2 (en) 2007-06-28 2007-06-28 System and method for error correction and detection in a memory system
US11/769,929 2007-06-28
PCT/EP2008/057199 WO2009000639A2 (en) 2007-06-28 2008-06-10 System and method for error correction and detection in a memory system

Publications (2)

Publication Number Publication Date
JP2010531499A JP2010531499A (ja) 2010-09-24
JP5349470B2 true JP5349470B2 (ja) 2013-11-20

Family

ID=40090304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010513832A Active JP5349470B2 (ja) 2007-06-28 2008-06-10 メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラを含むメモリ・システム及び方法

Country Status (7)

Country Link
US (1) US8041990B2 (ja)
EP (1) EP2171586B1 (ja)
JP (1) JP5349470B2 (ja)
KR (1) KR101119358B1 (ja)
CN (1) CN101681283B (ja)
TW (1) TWI430084B (ja)
WO (1) WO2009000639A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354818B2 (en) 2014-02-25 2016-05-31 Kabushiki Kaisha Toshiba Memory device and data storing method
US10261697B2 (en) 2015-06-08 2019-04-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8028186B2 (en) * 2006-10-23 2011-09-27 Violin Memory, Inc. Skew management in an interconnection system
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US7979616B2 (en) * 2007-06-22 2011-07-12 International Business Machines Corporation System and method for providing a configurable command sequence for a memory interface device
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US7900084B2 (en) * 2007-12-21 2011-03-01 Intel Corporation Reliable memory for memory controller with multiple channels
US20100095188A1 (en) * 2008-10-09 2010-04-15 Transwitch Corporation Apparatus and method for detecting and correcting errors in control characters of a multimedia interface
US8472199B2 (en) * 2008-11-13 2013-06-25 Mosaid Technologies Incorporated System including a plurality of encapsulated semiconductor chips
US20100138717A1 (en) * 2008-12-02 2010-06-03 Microsoft Corporation Fork codes for erasure coding of data blocks
US20100162037A1 (en) * 2008-12-22 2010-06-24 International Business Machines Corporation Memory System having Spare Memory Devices Attached to a Local Interface Bus
US8924819B2 (en) * 2009-01-23 2014-12-30 Macronix International Co., Ltd. Memory device and operation method thereof
US8189420B2 (en) * 2009-06-04 2012-05-29 Micron Technology, Inc. Advanced detection of memory device removal, and methods, devices and connectors
US8046628B2 (en) * 2009-06-05 2011-10-25 Micron Technology, Inc. Failure recovery memory devices and methods
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
EP2264604A1 (en) * 2009-06-15 2010-12-22 Thomson Licensing Device for real-time streaming of two or more streams in parallel to a solid state memory device array
US8255773B2 (en) * 2009-06-29 2012-08-28 Sandisk Technologies Inc. System and method of tracking error data within a storage device
CN102812518B (zh) * 2010-01-28 2015-10-21 惠普发展公司,有限责任合伙企业 存储器存取方法和装置
US20110258520A1 (en) * 2010-04-16 2011-10-20 Segura Theresa L Locating and correcting corrupt data or syndrome blocks
US8719675B1 (en) * 2010-06-16 2014-05-06 Google Inc. Orthogonal coding for data storage, access, and maintenance
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US8549378B2 (en) * 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8327080B1 (en) 2010-09-28 2012-12-04 Emc Corporation Write-back cache protection
US9003153B2 (en) 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US8732557B2 (en) * 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
TWI446160B (zh) 2011-07-21 2014-07-21 Silicon Motion Inc 快閃記憶體控制器及資料讀取方法
TWI476589B (zh) * 2011-08-25 2015-03-11 Macronix Int Co Ltd 記憶體編程方法及應用其之快閃記憶體裝置
US20130318393A1 (en) * 2011-11-15 2013-11-28 Ocz Technology Group Inc. Solid-state mass storage device and methods of operation
EP2780585A1 (en) 2011-11-15 2014-09-24 KK-Electronic A/S A system and method for identifying suggestions to remedy wind turbine faults
DE112011106003B4 (de) 2011-12-22 2023-01-05 Intel Corp. Vorrichtung, Tablet-Computergerät und System
US9690673B2 (en) 2012-01-31 2017-06-27 Gary Gostin Single and double chip spare
US10379971B2 (en) 2012-01-31 2019-08-13 Hewlett Packard Enterprise Development Lp Single and double chip space
US8990646B2 (en) 2012-05-31 2015-03-24 Hewlett-Packard Development Company, L.P. Memory error test routine
KR101684045B1 (ko) * 2012-05-31 2016-12-07 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 로컬 에러 검출 및 글로벌 에러 정정
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
WO2014061161A1 (ja) * 2012-10-19 2014-04-24 富士通株式会社 記録再生装置、誤り訂正方法および制御装置
US8966348B2 (en) 2012-11-30 2015-02-24 Hewlett-Packard Development Company, L.P. Memory error identification based on corrupted symbol patterns
US20140173170A1 (en) * 2012-12-14 2014-06-19 Hewlett-Packard Development Company, L.P. Multiple subarray memory access
JP6005533B2 (ja) 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法
US9430418B2 (en) 2013-03-15 2016-08-30 International Business Machines Corporation Synchronization and order detection in a memory system
US9898365B2 (en) 2013-07-31 2018-02-20 Hewlett Packard Enterprise Development Lp Global error correction
CN104347122B (zh) * 2013-07-31 2017-08-04 华为技术有限公司 一种消息式内存模组的访存方法和装置
TWI515749B (zh) * 2013-08-23 2016-01-01 慧榮科技股份有限公司 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
CN104424127A (zh) * 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN108447516B (zh) * 2013-08-23 2020-04-24 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
CN107632904B (zh) 2013-08-23 2020-12-22 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN110175088B (zh) * 2013-08-23 2022-11-11 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US9343181B2 (en) 2013-08-30 2016-05-17 Hewlett Packard Enterprise Development Lp Memory module errors
US9805775B1 (en) 2013-11-08 2017-10-31 Altera Corporation Integrated circuits with improved memory controllers
WO2015094258A1 (en) 2013-12-19 2015-06-25 Hewlett-Packard Development Company, L.P. Transmission of command strings and status strings via memory bus
KR102110767B1 (ko) * 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
US9268660B2 (en) * 2014-03-12 2016-02-23 International Business Machines Corporation Matrix and compression-based error detection
US9251054B2 (en) * 2014-03-27 2016-02-02 International Business Machines Corporation Implementing enhanced reliability of systems utilizing dual port DRAM
US9672880B2 (en) 2014-06-16 2017-06-06 Honeywell International Inc. Radiation upset detection
US9754684B2 (en) 2014-11-06 2017-09-05 Samsung Electronics Co., Ltd. Completely utilizing hamming distance for SECDED based ECC DIMMs
US9747035B2 (en) 2014-12-17 2017-08-29 Empire Technology Development Llc Reducing memory overhead associated with memory protected by a fault protection scheme
CN104991833B (zh) * 2015-06-15 2018-03-27 联想(北京)有限公司 一种错误检测方法及电子设备
US20160378594A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Method and apparatus to decode low density parity codes
TWI653536B (zh) 2015-07-08 2019-03-11 美商萬國商業機器公司 用於調整最佳化參數以自訂用於共用匯流排上目標晶片之信號眼之方法、系統及電腦程式產品
CN106373616B (zh) * 2015-07-23 2020-02-07 深圳市中兴微电子技术有限公司 一种检测随机存储器故障的方法、装置和网络处理器
CN105183579B (zh) * 2015-09-24 2019-09-24 联想(北京)有限公司 一种数据校验方法及装置、电子设备
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
GB2548407A (en) * 2016-03-18 2017-09-20 Memoscale As Coding technique
US10078567B2 (en) 2016-03-18 2018-09-18 Alibaba Group Holding Limited Implementing fault tolerance in computer system memory
US10268541B2 (en) 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
KR102638789B1 (ko) 2016-09-05 2024-02-22 에스케이하이닉스 주식회사 테스트방법 및 이를 이용한 반도체시스템
US10379939B2 (en) * 2017-01-04 2019-08-13 Samsung Electronics Co., Ltd. Memory apparatus for in-chip error correction
KR102243582B1 (ko) * 2017-04-24 2021-04-23 에스케이하이닉스 주식회사 반도체장치
GB201715073D0 (en) 2017-09-19 2017-11-01 Memoscale As Data security
US10303545B1 (en) 2017-11-30 2019-05-28 International Business Machines Corporation High efficiency redundant array of independent memory
CN110348244B (zh) * 2018-04-02 2023-03-17 深信服科技股份有限公司 基于仲裁的多校验和验证方法、系统、装置及存储介质
TWI722496B (zh) * 2019-06-20 2021-03-21 慧榮科技股份有限公司 使用者資料的加解密方法及裝置
KR20210013387A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 메모리 시스템
US11042432B1 (en) 2019-12-20 2021-06-22 Western Digital Technologies, Inc. Data storage device with dynamic stripe length manager
US11256587B2 (en) * 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
KR20210138241A (ko) 2020-05-12 2021-11-19 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 모듈
KR20220031801A (ko) 2020-09-03 2022-03-14 삼성전자주식회사 메모리 모듈, 메모리 모듈의 보호 장치 및 메모리 모듈 보호 시스템
WO2023106434A1 (ko) * 2021-12-06 2023-06-15 주식회사 딥아이 Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법
US11681581B1 (en) * 2022-06-21 2023-06-20 Western Digital Technologies, Inc. Data integrity protection with partial updates
US12038809B1 (en) 2023-03-06 2024-07-16 SK Hynix Inc. Failure analysis for uncorrectable error events

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464747A (en) * 1982-02-18 1984-08-07 The Singer Company High reliability memory
DE68928112T2 (de) 1988-03-18 1997-11-20 Toshiba Kawasaki Kk Masken-rom mit Ersatzspeicherzellen
GB8926004D0 (en) 1989-11-17 1990-01-10 Inmos Ltd Repairable memory circuit
JP2659283B2 (ja) 1991-01-14 1997-09-30 シャープ株式会社 半導体記憶装置の製造方法
KR100296850B1 (ko) 1992-05-28 2001-10-24 썬 마이크로시스템즈, 인코포레이티드 캐시램용다수의뱅크열용장성초기화제어기
EP0701715A4 (en) 1993-06-04 1999-11-17 Network Appliance Corp METHOD FOR PROVIDING PARITY IN A RAID SUBSYSTEM USING REMANENT MEMORY
US5488691A (en) 1993-11-17 1996-01-30 International Business Machines Corporation Memory card, computer system and method of operation for differentiating the use of read-modify-write cycles in operating and initializaiton modes
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US5463643A (en) 1994-03-07 1995-10-31 Dell Usa, L.P. Redundant memory channel array configuration with data striping and error correction capabilities
US5513135A (en) 1994-12-02 1996-04-30 International Business Machines Corporation Synchronous memory packaged in single/dual in-line memory module and method of fabrication
US5680564A (en) 1995-05-26 1997-10-21 National Semiconductor Corporation Pipelined processor with two tier prefetch buffer structure and method with bypass
US6012839A (en) 1995-06-30 2000-01-11 Quantum Corporation Method and apparatus to protect data within a disk drive buffer
DE59701778D1 (de) * 1996-08-30 2000-06-29 Siemens Ag Fehlererkennung in einem speichersystem
US5835425A (en) 1997-09-04 1998-11-10 Siemens Aktiengesellschaft Dimension programmable fusebanks and methods for making the same
US6223301B1 (en) 1997-09-30 2001-04-24 Compaq Computer Corporation Fault tolerant memory
EP1517327A3 (en) * 1998-02-25 2005-03-30 Matsushita Electric Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
US6173382B1 (en) 1998-04-28 2001-01-09 International Business Machines Corporation Dynamic configuration of memory module using modified presence detect data
US6505305B1 (en) 1998-07-16 2003-01-07 Compaq Information Technologies Group, L.P. Fail-over of multiple memory blocks in multiple memory modules in computer system
US6854070B2 (en) 2000-01-25 2005-02-08 Hewlett-Packard Development Company, L.P. Hot-upgrade/hot-add memory
US6845472B2 (en) 2000-01-25 2005-01-18 Hewlett-Packard Development Company, L.P. Memory sub-system error cleansing
US6715116B2 (en) 2000-01-26 2004-03-30 Hewlett-Packard Company, L.P. Memory data verify operation
US6820072B1 (en) * 2000-08-22 2004-11-16 Hewlett-Packard Development Company, L.P. Validation of probabilistic troubleshooters and diagnostic system
US6418068B1 (en) 2001-01-19 2002-07-09 Hewlett-Packard Co. Self-healing memory
US6763444B2 (en) 2001-05-08 2004-07-13 Micron Technology, Inc. Read/write timing calibration of a memory array using a row or a redundant row
JP3565798B2 (ja) 2001-06-14 2004-09-15 英二 藤原 バースト誤りパターン生成方法及びバーストおよびバイト誤り検出・訂正装置
KR100413762B1 (ko) 2001-07-02 2003-12-31 삼성전자주식회사 뱅크 수를 가변할 수 있는 반도체 장치 및 그 방법
US6845474B2 (en) 2001-09-10 2005-01-18 Hewlett-Packard Development Company, L.P. Problem detector and method
US7028213B2 (en) 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US6973612B1 (en) 2001-11-13 2005-12-06 Unisys Corporation Familial correction with non-familial double bit error detection for directory storage
JP2003303139A (ja) 2002-04-09 2003-10-24 Nec Corp 冗長メモリモジュールおよびメモリコントローラ
US6948091B2 (en) 2002-05-02 2005-09-20 Honeywell International Inc. High integrity recovery from multi-bit data failures
US7293138B1 (en) 2002-06-27 2007-11-06 Adaptec, Inc. Method and apparatus for raid on memory
EP1547252A4 (en) 2002-07-29 2011-04-20 Robert Halford MULTIDIMENSIONAL DATA PROTECTION AND MIRRORING METHOD FOR MICROBIAL DATA
US6957365B2 (en) * 2002-08-16 2005-10-18 Sun Microsystems, Inc. Method and apparatus for using acoustic signals to identify disk drives that are likely to fail
US7149945B2 (en) 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
JP3892832B2 (ja) * 2003-08-11 2007-03-14 株式会社東芝 半導体記憶装置
US7099994B2 (en) * 2003-09-29 2006-08-29 Hewlett-Packard Development Company, L.P. RAID memory system
US8645622B2 (en) 2003-11-18 2014-02-04 International Business Machines Corporation Method to protect data on a disk drive from uncorrectable media errors
US7191257B2 (en) * 2003-12-22 2007-03-13 National Instruments Corp. System and method for real-time processing of nondeterministic captured data events
US20050164373A1 (en) 2004-01-22 2005-07-28 Oldham Mark F. Diffusion-aided loading system for microfluidic devices
JP2005242797A (ja) 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd エラー訂正回路
US8464093B1 (en) 2004-09-03 2013-06-11 Extreme Networks, Inc. Memory array error correction
US7395488B2 (en) * 2004-12-29 2008-07-01 Zoran Corporation System and method for efficient use of memory device bandwidth
US8107714B2 (en) * 2005-01-18 2012-01-31 The Board Of Regents Of The University Of Texas System Methods for detecting and tagging scene changes
US7424648B2 (en) * 2005-03-10 2008-09-09 Matsushita Electric Industrial Co., Ltd. Nonvolatile memory system, nonvolatile memory device, data read method, and data read program
JP4474648B2 (ja) * 2005-03-25 2010-06-09 日本電気株式会社 メモリシステム及びそのホットスワップ方法
EP1872225B1 (en) 2005-04-18 2013-07-31 Research In Motion Limited Method for handling a detected error in a script-based application
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US20060256615A1 (en) * 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
US7721182B2 (en) 2005-05-27 2010-05-18 International Business Machines Corporation Soft error protection in individual memory devices
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8619452B2 (en) * 2005-09-02 2013-12-31 Google Inc. Methods and apparatus of stacking DRAMs
US7307902B2 (en) * 2005-08-30 2007-12-11 Hewlett-Packard Development Company, L.P. Memory correction system and method
US7227797B2 (en) * 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
US8386702B2 (en) * 2005-10-27 2013-02-26 Hewlett-Packard Development Company, L.P. Memory controller
US7577899B2 (en) 2006-02-13 2009-08-18 Harris Corporation Cyclic redundancy check (CRC) based error correction method and device
US8375064B2 (en) 2006-05-05 2013-02-12 International Business Machines Corporation Apparatus, system, and method for read back verification of stored data
US7484138B2 (en) 2006-06-09 2009-01-27 Taiwan Semiconductor Manufacturing Co., Ltd. Method and system for improving reliability of memory device
US7895502B2 (en) 2007-01-04 2011-02-22 International Business Machines Corporation Error control coding methods for memories with subline accesses
US7596648B2 (en) * 2007-03-08 2009-09-29 Dell Products L.P. System and method for information handling system error recovery
US7656727B2 (en) * 2007-04-25 2010-02-02 Hewlett-Packard Development Company, L.P. Semiconductor memory device and system providing spare memory locations
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354818B2 (en) 2014-02-25 2016-05-31 Kabushiki Kaisha Toshiba Memory device and data storing method
US10261697B2 (en) 2015-06-08 2019-04-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
US10949094B2 (en) 2015-06-08 2021-03-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device

Also Published As

Publication number Publication date
US8041990B2 (en) 2011-10-18
WO2009000639A2 (en) 2008-12-31
US20090006886A1 (en) 2009-01-01
EP2171586A2 (en) 2010-04-07
EP2171586B1 (en) 2013-05-08
KR20090118031A (ko) 2009-11-17
CN101681283A (zh) 2010-03-24
TW200919171A (en) 2009-05-01
KR101119358B1 (ko) 2012-03-13
CN101681283B (zh) 2012-07-25
WO2009000639A3 (en) 2009-05-28
TWI430084B (zh) 2014-03-11
JP2010531499A (ja) 2010-09-24

Similar Documents

Publication Publication Date Title
JP5349470B2 (ja) メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラを含むメモリ・システム及び方法
JP5142138B2 (ja) メモリ・システム内の障害メモリ要素を識別する方法及びメモリ・システム
US8041989B2 (en) System and method for providing a high fault tolerant memory system
US7949931B2 (en) Systems and methods for error detection in a memory system
US8201069B2 (en) Cyclical redundancy code for use in a high-speed serial link
US10191676B2 (en) Scalable storage protection
US7984329B2 (en) System and method for providing DRAM device-level repair via address remappings external to the device
US8086783B2 (en) High availability memory system
US7584336B2 (en) Systems and methods for providing data modification operations in memory subsystems
US8055976B2 (en) System and method for providing error correction and detection in a memory system
CA2532766C (en) Data storage array
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US8359521B2 (en) Providing a memory device having a shared error feedback pin
US8024642B2 (en) System and method for providing constrained transmission and storage in a random access memory
WO2014061161A1 (ja) 記録再生装置、誤り訂正方法および制御装置
JP7249719B2 (ja) 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック
US12032443B2 (en) Shadow DRAM with CRC+RAID architecture, system and method for high RAS feature in a CXL drive
CN116486891A (zh) 用于cxl驱动器中的高ras特征的具有crc+raid架构的影子dram、系统及方法
US7526714B2 (en) Apparatus for checking data coherence, raid controller and storage system having the same, and method therefor
US20240303159A1 (en) Data protection and recovery
JP2013205853A (ja) フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

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: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130820

R150 Certificate of patent or registration of utility model

Ref document number: 5349470

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150