(57)【要約】【課題】メモリ・システム内のエラーを検出し且つ訂正するための方法及びシステムを提供する。【解決手段】  本システムは、メモリ・コントローラと、複数のメモリ・モジュールと、一の機構を含む。前記複数のメモリ・モジュールは、前記メモリ・コントローラ及び複数のメモリ装置と通信する。前記機構は、前記複数のメモリ・モジュールのうちの１つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出する。前記機構は、前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にする。【選択図】図３
2010531499.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・システム内のエラーを検出し且つ訂正するためのメモリ・コントローラであって、
前記メモリ・システム内の１つ以上のエラーを検出するための手段を備え、
前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成され、
前記１つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、３角測量法を使用して前記エラーのタイプを識別するための手段と、
一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、前記メモリ・システムが機能低下なしに動作することができるように、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第１のＥＣＣ符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第２のＥＣＣ符号を使用して、前記１つ以上のエラーを訂正するための手段をさらに備えた、メモリ・コントローラ。
【請求項２】
前記訂正するための手段が、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記第２のＥＣＣ符号と共にオフセット多重シフトが使用される、請求項１に記載のメモリ・コントローラ。
【請求項３】
一の障害メモリ・モジュールを識別する際に、前記メモリ・システムの信頼性を改良するために、当該障害メモリ・モジュールの同一性が、前記第１のＥＣＣ符号内のパラメータとして使用される、請求項１又は請求項２に記載のメモリ・コントローラ。
【請求項４】
前記第１のＥＣＣ符号が、ＲＡＩＤ−３ ＥＣＣ符号であり、前記第２のＥＣＣ符号が、ＲＡＩＤ−６ ＥＣＣ符号である、請求項１乃至請求項３の何れか１項に記載のメモリ・コントローラ。
【請求項５】
メモリ・システムであって、
請求項１乃至請求項４の何れか１項に記載のメモリ・コントローラと、
前記メモリ・コントローラ及び複数のメモリ装置と通信する複数のメモリ・モジュールを備える、メモリ・システム。
【請求項６】
前記複数のメモリ・モジュールは、５つの異なるチャネルを介して前記メモリ・コントローラと通信する５つのメモリ・モジュールを含み、
前記５つのメモリ・モジュールが、１つのメモリ・モジュール上のエラー検出及び訂正のために使用される２つのメモリ装置を有する４つのメモリ・モジュールと、前記４つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記１つのメモリ・モジュールを含む、請求項５に記載のメモリ・システム。
【請求項７】
メモリ・システム内のエラーを検出し且つ訂正するための方法であって、
前記メモリ・システム内の１つ以上のエラーを検出するステップを含み、
前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成され、
前記１つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、３角測量法を使用して前記エラーのタイプを識別するステップと、
一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、前記メモリ・システムが機能低下なしに動作することができるように、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第１のＥＣＣ符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第２のＥＣＣ符号を使用して、前記１つ以上のエラーを訂正するステップをさらに含む、方法。
【請求項８】
前記訂正するステップが、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記第２のＥＣＣ符号と共にオフセット多重シフトが使用される、請求項７に記載の方法。
【請求項９】
一の障害メモリ・モジュールを識別する際に、前記メモリ・システムの信頼性を改良するために、当該障害メモリ・モジュールの同一性が、前記第１のＥＣＣ符号内のパラメータとして使用される、請求項７又は請求項８に記載の方法。
【請求項１０】
前記第１のＥＣＣ符号が、ＲＡＩＤ−３ ＥＣＣ符号であり、前記第２のＥＣＣ符号が、ＲＡＩＤ−６ ＥＣＣ符号である、請求項７乃至請求項９の何れか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・メモリに係り、さらに詳細に説明すれば、ＲＡＩＤメモリ・システム内のエラー検出及び訂正に係る。
【背景技術】
【０００２】
コンピュータ・システムは、コンピュータの電源がオンにされ且つ動作可能である間に、オペレーティング・システム・ソフトウェア、プログラム及び他のデータのような情報を保持するために、相当な量の高速ＲＡＭ（ランダム・アクセス・メモリ）を必要とすることが多い。一般に、この情報は２進数であって、データのビットとして知られている１又は０のパターンから成る。データの諸ビットは、より高いレベルにグループ化され且つ編成されることが多い。例えば、１バイトは、一般には８ビットから成るが、エラーの識別及び訂正に使用するための情報を含む場合には、１バイトは追加のビット（例えば、第９ビット、第１０ビット等）から成ることがある。通常、この２進情報は、コンピュータ・システムの電源オン及び初期プログラム・ロード（ＩＰＬ）中に、ハード・ディスク・ドライブ（ＨＤＤ）のような不揮発性ストレージ（ＮＶＳ）からＲＡＭにロードされる。また、データは、通常のコンピュータ動作中に、ＮＶＳを対象としてページ・イン及びページ・アウトされる。一般に、コンピュータ・システムによって使用される全てのプログラム及び情報は、より小さく、より高価なダイナミックＲＡＭ（ＤＲＡＭ）に収容することができず、また収容することができたとしても、コンピュータ・システムの電源がオフにされるときに、当該データが失われるであろう。現在では、複数のＨＤＤを使用してＮＶＳシステムを構築することが普通である。
【０００３】
コンピュータのＲＡＭは、モジュールの形式を有するプラグ接続可能な複数のサブシステムから設計されることが多いから、システム及びアプリケーションごとの特定のメモリ要件に応じて、インクリメンタルな量のＲＡＭを各コンピュータに追加することができる。「ＤＩＭＭ」、すなわちデュアル・インライン・メモリ・モジュールは、現用中の最も普及しているメモリ・モジュールである。ＤＩＭＭは、１つ以上のメモリ装置を含む薄い長方形のカードであって、当該カード上に搭載された、１つ以上のレジスタ、バッファ、ハブ装置、不揮発性ストレージ（例えば、消去可能なプログラマブルＲＯＭ又は「ＥＰＲＯＭ」）及び種々の受動装置（例えば、抵抗器及びコンデンサ）を含むことがある。ＤＩＭＭに搭載されることが多い動的メモリ・チップ又はＤＲＡＭは、その内部に格納したデータが失われることを防止するために、これを定期的にリフレッシュする必要がある。ＤＲＡＭチップは、当初は非同期式装置であったが、最近のチップ、すなわち同期ＤＲＡＭ（ＳＤＲＡＭ）（例えば、シングル・データ・レート又は「ＳＤＲ」、ダブル・データ・レート又は「ＤＤＲ」、ＤＤＲ２、ＤＤＲ３等）は、性能を改良するために同期インタフェースを有する。メモリ帯域幅を改良し且つ待ち時間を減少させるためにプリフェッチング及び他の速度強化技術を使用する、ＤＤＲ装置が使用可能である。例えば、ＤＤＲ３は、８の標準バースト長を有する。
【０００４】
コンピュータ・システムが強力になるにつれて、メモリ装置の密度も、継続的に成長してきた。現在、単一コンピュータのＲＡＭ内容が、数百兆ビットから成ることも珍しくない。しかし、単一ＲＡＭ装置の一部に障害（failure）が生じただけで、コンピュータ・システムの全体が機能しなくなることがある。「ハード」（再現性）又は「ソフト」（非再現性）障害の何れかであり得る、メモリ・エラーが生じる場合、かかる障害は、単一セル、複数ビット、完全（full）チップ障害又は完全ＤＩＭＭ障害として生じることがあり、かかる障害が修復されるまで、システムＲＡＭの全て又は一部が使用不能になることがある。修復ターン・アラウンド・タイムは、数時間又は数日に及ぶことがあり、その結果、コンピュータ・システムに依存するビジネスに対して大きな影響を与えることがある。
【０００５】
最近のコンピュータ内のメモリ・ストレージの量が継続的に成長するにつれて、通常の動作中にＲＡＭ障害に遭遇する確率も、継続的に増加してきた。
【０００６】
過去数十年の間、ビット・エラーを検出し且つ訂正する技術は、精巧な科学へと発展してきた。最も基本的な検出技術は、奇数又は偶数パリティの生成、すなわちデータ語内の１又は０の数を「排他的論理和」（ＸＯＲ）し、パリティ・ビットを生成するというものである。例えば、偶数の１を有するデータ語は、０のパリティ・ビットを有し、奇数の１を有するデータ語は、１のパリティ・ビットを有し、そしてかかるパリティ・ビットが、格納済みメモリ・データに追加される。読み取り動作中に、当該データ語内に単一エラーが存在すれば、当該データからパリティを再生成し且つ当該パリティが格納済み（最初に生成済み）パリティと一致するか否かをチェックすることにより、当該エラーを検出することができる。
【０００７】
リチャード・ハミングは、各符号語にＸＯＲフィールド、すなわちエラー訂正符号（ＥＣＣ）フィールドを追加することにより、パリティ技術が、エラーを検出するだけでなく、エラーを訂正するためにも拡張できることを認識した。ＥＣＣフィールドは、互いにＸＯＲされたデータ語内の異なるビットの組み合わせであって、エラー（当該データ語に対する小さな変化）を容易に検出し、その位置を特定（pinpoint）し、訂正することを可能にするものである。検出及び訂正可能なエラーの数は、データ語に追加されるＥＣＣフィールドの長さと直接的に関係する。この技術は、有効なデータ語と符号語の組み合わせとの間の最小の分離距離を保証することを含む。検出し且つ訂正することが望まれるエラーの数が大きくなるほど、符号語がより長くなり、その結果、有効な符号語間の距離がより大きくなる。有効な符号語間の最小距離は、最小ハミング距離として知られている。
【０００８】
かかるエラー検出及びエラー訂正技術は、装置の物理特性に起因してデータ・エラーの有限の確率が存在する場合に、雑音性の通信伝送媒体又はストレージ媒体内でデータをその元の正しい形式に復元するために使用されるのが普通である。一般に、メモリ装置は、ＲＡＭ内で１又は０を表す電圧レベルとしてデータを格納するから、高エネルギーの宇宙線及びα粒子に起因する、装置障害及び状態変化の両方を被りやすい。同様に、磁性面上の磁界として１及び０を格納するＨＤＤは、磁気媒体内の欠陥及び他の機構の影響を受けやすく、その結果、データ・パターンが最初に格納されたものから変化することがある。
【０００９】
１９８０年代に、ＲＡＭメモリ装置のサイズは、α粒子の衝突及び宇宙線がメモリ・ビットを反転させることに敏感になる段階に最初に達した。これらの粒子は、装置を破損しないが、メモリ・エラーを生じさせることがある。かかるメモリ・エラーはソフト・エラーとして知られており、殆どの場合、単一ビットにだけ影響する。一旦識別されると、かかるビット障害は、当該メモリ位置に再書き込みを行うだけで、これを訂正することができる。ソフト・エラーの出現頻度は、システム全体の信頼性に顕著な影響を及ぼす段階まで、大きくなってきた。
【００１０】
メモリＥＣＣは、ハミングによって提案されたもののように、エラーの検出及び訂正を可能にするために、データ語の種々のビット位置におけるパリティ符号の組み合わせを使用する。データ語をメモリに書き込むたびに、新しいＥＣＣ符号を生成し、これをデータと共に格納しなければならない。そのようにすると、メモリから読み取られたデータ内に含まれるＥＣＣ符号が、当該読み取り済みデータから生成された新しく計算済みのＥＣＣ符号と一致しないケースでは、当該データのエラーを検出し且つ訂正することができる。
【００１１】
最初のＥＣＣは、以前の手段によって提供されたフォールト・トレランスを凌駕することを目的として、コンピュータ・システム内のＲＡＭに適用された。単一ビット・エラー訂正（ＳＥＣ）及び２重ビット・エラー検出（ＤＥＤ）を可能にする、２進のＥＣＣ符号が展開された。また、このＳＥＣ／ＤＥＤＥＣＣは、ＲＡＭ内の単一ビットのハード・エラーを透過的に回復することを可能にする。
【００１２】
また、ソフト・エラーを検出し且つ訂正することができるように、補数化／再補数化プロセスを通してソフト・エラーを突き止めることにより、メモリ・エラーを減少させることをサポートするための、消し込み（scrubbing）ルーチンが開発された。
【００１３】
幾つかのストレージ製造業者は、完全メモリ・チップ障害を訂正するために、リード・ソロモン（ＲＳ）符号のような拡張ＥＣＣ技術を使用した。また、幾つかのメモリ・システム設計は、不良チップに置き換わるようにメモリ・システム内に自動的に導入することができる、標準の予備メモリ・チップ（例えば、「スペア」チップ）を有する。これらの技術は、ＲＡＭの信頼性を非常に改良したが、メモリ・サイズが継続的に成長し且つ顧客の信頼性期待値が増加するにつれて、さらなる拡張が要請されている。システムが完全ＤＩＭＭ障害を克服し、そしてシステム動作と並行してＤＩＭＭを交換することが要請されている。さらに、１つ以上のＤＩＭＭとメモリ・コントローラ／組み込みプロセッサの間の接続間の単一障害点に影響する、他の障害モードも考慮しなければならない。例えば、メモリ・コントローラとメモリ装置の間の接続のうちの幾つかは、メモリ・コントローラの外側にあり且つＤＩＭＭ上に存在するか又はＤＩＭＭとは別個の１つ以上の中間バッファを含むことがあるが、その障害時には、単一ＤＩＭＭ障害、完全ＤＩＭＭ障害又はより広いメモリ・システム障害の一部として現れるという影響を有することがある。
【００１４】
より高度なエラー訂正技術を使用することにより、コンピュータＲＡＭの信頼性（「フォールト・トレランス」とも称する）を改良するという明白な要請が存在するが、かかる要請を実現する試みは、使用可能な顧客のメモリ、性能、スペース、熱等への影響によって妨げられてきた。データの追加コピーを含めることによる冗長度（例えば、「ミラーリング」）又はより精巧なエラー符号化技術を使用することは、コストを押し上げ、設計を複雑にするばかりか、他の重要なビジネス上の物差し（商品化に要する時間）に影響することがある。例えば、幾つかのストレージ製造業者によって、メモリ・ミラーリングの簡単なアプローチが提示されたことがある。メモリ・ミラーリングを使用すると、システムは、より破局的なメモリ障害を克服することができるが、その受諾率又は成約率は、非常に低かった。というのは、このアプローチは、設計内に既に存在する基本のＳＥＣ／ＤＥＣＥＣＣに加えて、一般にメモリ・サイズを２倍にすることを必要とし、そして使用可能なインストール済みＲＡＭの５０％未満をシステム使用のために顧客に残すに過ぎないからである。
【００１５】
ＥＣＣ技術は、ストレージ・システムをより微妙な（subtle）障害モードから保護しつつ、顧客がＨＤＤの障害に起因するデータ損失又はデータ完全性の問題に遭遇しないように、ＨＤＤ障害を訂正することによりストレージ・システムの可用性を改良するために使用されてきた。
【００１６】
ストレージ・システムの幾つかの供給業者は、コンピュータＲＡＭに対するＨＤＤの可用性を改良するために、ＲＡＩＤ（Redundant Array of Independent Disks）技術を成功裡に使用してきた。ＲＡＩＤ技術を使用すると、多くの点で、ＨＤＤ障害から回復することがより簡単となる。というのは、ＲＡＭ内の障害よりも、ＨＤＤ内の障害を分離する方が遙かに簡単であるからである。ＨＤＤは、不良セクタを検出するために、ＥＣＣのようなチェッカを埋め込んでいることが多い。さらに、巡回冗長検査（ＣＲＣ）及び水平冗長検査（ＬＲＣ）が、ＨＤＤエレクトロニクス又はディスク・アダプタ内に埋め込まれているか、又はこれらが、ＨＤＤエラーを検出するためにより高いレベルの符号及びアプリケーションによって使用されるチェッカであることがある。ＣＲＣ及びＬＲＣは、データ・エラーの検出を容易にするために、データと同時に書き込まれる。ＣＲＣ及びＬＲＣは、データから小さな実質的に一意のビット・パターンを生成するために使用されるハッシュ関数である。データがＨＤＤから読み取られる場合、チェックサムが再生成され、プラッタ上に格納されたそれと比較される。ディスク上の符号化済み磁気パターンから検索されたデータがディスク上に最初に書き込まれたデータであることを保証するために、それらのシグネチャは、正確に一致しなければならない。
【００１７】
ＲＡＩＤシステムは、ディスク・ストレージ・システムの性能を改良し且つその可用性を増大させることを目的として、開発されてきた。ＲＡＩＤは、幾つかの独立ＨＤＤにわたってデータを分散させる。これまでに開発されている種々のＲＡＩＤスキームのそれぞれは、異なる特性を有し、異なる利点及び欠点を有する。性能、可用性及び使用率／効率（顧客データを実際に保持するディスクのパーセンテージ）が、恐らく最も重要なものである。種々のスキームに関連するトレード・オフは、これを注意深く考慮しなければならない。すなわち、１つの属性の改良が他の属性の減少に帰着することが多いからである。
【００１８】
ＲＡＩＤ−０は、性能を改良するために、複数のＨＤＤにわたってデータをストライピングする。ＲＡＩＤ−１は、可用性を改良し且つデータ損失を防止するために、２つの異なるＨＤＤ上にデータの２つの正確なコピーを維持して、データのミラーリングを行う。幾つかのＲＡＩＤスキームは、組み合わされた利点を得るために、これをともに使用することができる。例えば、ＲＡＩＤ−１０は、性能及び可用性の両方を改良するために、アレイ内の幾つかのＨＤＤにわたってデータ・ストライピング及びミラーリングの両方を使用する。
【００１９】
ＲＡＩＤ−３、ＲＡＩＤ−４及びＲＡＩＤ−５は、単一データ要素エラーを訂正するために単一のＸＯＲチェックサムを使用するという点で、互いに非常に類似する。ＲＡＩＤ−３は、パリティ専用のＨＤＤを備え、バイト・レベルのストライピングを使用する。ＲＡＩＤ−４は、パリティ専用のＨＤＤを備え、ブロック・レベルのストライピングを使用する。ＲＡＩＤ−５は、ＲＡＩＤ−４のようにブロック・レベルのストライピングを使用するが、パリティを分散させる。パリティ専用のＨＤＤは、もはや存在しない。パリティは、全てのＨＤＤにわたって実質的に一様に分散され、それにより、性能ボトルネックとしてのパリティ専用のＨＤＤを除去する。ＲＡＩＤ−３、ＲＡＩＤ−４及びＲＡＩＤ−５の重要な属性は、或る独立の手段によって単一のデータ要素障害の位置を特定することができる場合に、当該障害を訂正することができるという点にある。
【００２０】
ＲＡＩＤ−６については、当分野で広く受け入れられている単一の定義は存在しない。一般に、ＲＡＩＤ−６は、２重のチェックサムを備え、ブロック又はバイト・レベルのストライピングを使用するものを表す。ＲＡＩＤ−６の重要な属性は、或る独立の手段によって高々２つのデータ要素障害の位置を特定することができる場合に、当該障害を訂正することができるという点にある。また、ＲＡＩＤ−６は、単一障害の位置が未知である場合に、当該障害の位置を特定し且つこれを訂正する能力を有する。
【００２１】
図１は、１つ以上のプロセッサ要素及び統合メモリ・コントローラ１１０を含む、集積化プロセッサ・チップ１００から構成された最近のシステムを示す。図１の構成では、複数の独立的なカスケード相互接続メモリ・インタフェース・バス１０６は、並列バス及び関連する装置にわたって分散又は「ストライプ」されたデータ及びエラー検出／訂正情報に対する高帯域幅の単一の独立アクセス要求をサポートすることを目的として、一斉に動作するように論理的に互いに集合化される。メモリ・コントローラ１１０は、４つの狭く且つ高速の２地点間メモリ・バス１０６に接続され、当該バス５０６の各々は、メモリ・コントローラの幾つかの固有のインタフェース・チャネルのうちの１つをカスケード相互接続メモリ・サブシステム１０３（又はメモリ・モジュール、例えばＤＩＭＭ）に接続する。メモリ・サブシステム１０３は、少なくともハブ装置１０４及び１つ以上のメモリ装置１０９を含む。また、幾つかのシステムは、メモリ・バス１０６のサブセットに複数のメモリ・サブシステム１０３が装着されているときの動作を可能にする。このケースでは、１つ以上のメモリ・バス１０８は、単一のアクセス要求をサポートするために一斉に動作することができる。
【００２２】
図２は、カスケード化メモリ・モジュール１０３及び単方向バス１０６を有するメモリ構造を示す。当該カスケード構造内にあるメモリ・モジュール１０３内のハブ装置１０４によって提供される機能のうちの１つは、単方向バス１０６を介して、他のメモリ・モジュール１０３又はメモリ・コントローラ１１０に信号を送信する再駆動機能である。図２は、メモリ・コントローラ１１０と、２つのメモリ・バス１０６（２４本の線を有する下流メモリ・バス及び２５本の線を有する上流メモリ・バス）上にあり且つメモリ・コントローラ１１０に直接に又はカスケード式に接続される、４つのメモリ・モジュール１０３を含む。メモリ・コントローラ１１０の隣にあるメモリ・モジュール１０３は、メモリ・コントローラ１１０に直接に接続される。他のメモリ・モジュール１０３は、メモリ・コントローラ１１０にカスケード式に接続される。図２には示されていないが、メモリ・コントローラ１１０は、プロセッサ１００内に統合することができ、その場合には、図１の複数のメモリ・バス１０６に接続することができる。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】米国特許第５５１３１３５号明細書
【特許文献２】米国特許第６３８１６８５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００２４】
当分野では、メモリ・システム内の障害検出及び訂正を改良することが要請されている。メモリ・システムが一の完全ＤＩＭＭ障害を克服し、そしてシステム動作と並行して当該ＤＩＭＭを交換できるようにすることが望ましいであろう。
【課題を解決するための手段】
【００２５】
従って、本発明は、第１の側面において、メモリ・システムを提供する。このメモリ・システムは、メモリ・コントローラと、前記メモリ・コントローラ及び複数のメモリ装置と通信する複数のメモリ・モジュールと、前記複数のメモリ・モジュールのうちの１つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出し且つ前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに（unimpaired）動作を継続することができるようにするための機構を備える。
【００２６】
好ましくは、前記メモリ・モジュールは、当該メモリ・モジュール上のエラー検出及び訂正のために使用される１つ以上のメモリ装置を含む。
【００２７】
好ましくは、前記複数のメモリ・モジュールのうちの１つに含まれる実質的に全てのメモリ装置は、前記複数のメモリ・モジュールにわたるエラー検出及び訂正のために使用される。
【００２８】
好ましくは、前記エラー検出は、前記メモリ・モジュール障害及びメモリ装置障害を分離するために３角測量法（triangulation）を使用することを含む。
【００２９】
好ましくは、前記複数のメモリ・モジュールは、５つの異なるチャネルを介して前記メモリ・コントローラと通信する５つのメモリ・モジュールを含み、当該５つのメモリ・モジュールは、１つのメモリ・モジュール上のエラー検出及び訂正のために使用される２つのメモリ装置を有する４つのメモリ・モジュールと、当該４つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記１つのメモリ・モジュールを含む。
【００３０】
好ましくは、前記機構は、複数のメモリ・モジュールにわたる一の行内で編成された前記複数のメモリ装置に適用されるＲＡＩＤ−３ ＥＣＣ符号と、単一メモリ・モジュールにわたる複数の列で編成された前記複数のメモリ装置に適用されるＲＡＩＤ−６ ＥＣＣ符号を使用する。この場合、単一データ要素だけが任意の行と列の間で共有される。
【００３１】
好ましくは、前記エラー訂正が、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記ＲＡＩＤ−６ ＥＣＣ符号と共にオフセット多重シフトが使用される。
【００３２】
好ましくは、前記メモリ・システムの機械的パッケージングは、システム動作と並行して１つ以上メモリ・モジュールの交換を可能にするように適応される。
【００３３】
好ましくは、前記機構は、前記メモリ装置障害と一致し且つ一のメモリ・モジュールと前記メモリ・コントローラの間の通信に影響する一の障害を検出するとともに、当該障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作することを可能にする。
【００３４】
第２の側面において、メモリ・コントローラが提供される。このメモリ・コントローラは、複数のメモリ装置と通信する複数のメモリ・モジュールへの一のインタフェースと、前記複数のメモリ・モジュールのうちの１つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出し且つ当該メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にするための機構を備える。
【００３５】
好ましくは、前記メモリ・モジュールは、当該メモリ・モジュール上のエラー検出及び訂正のために使用される１つ以上のメモリ装置を含む。
【００３６】
好ましくは、前記エラー検出は、前記メモリ・モジュール障害及びメモリ装置障害を分離するために３角測量法を使用することを含む。
【００３７】
好ましくは、前記複数のメモリ・モジュールは、５つの異なるチャネルを介して前記メモリ・コントローラと通信する５つのメモリ・モジュールを含み、当該５つのメモリ・モジュールは、１つのメモリ・モジュール上のエラー検出及び訂正のために使用される２つのメモリ装置を有する４つのメモリ・モジュールと、当該４つのメモリ・モジュールにわたるエラー検出及び訂正のために使用される前記１つのメモリ・モジュールを含む。
【００３８】
好ましくは、前記機構は、複数のメモリ・モジュールにわたる一の行内で編成された前記複数のメモリ装置に適用されるＲＡＩＤ−３ ＥＣＣ符号と、単一メモリ・モジュールにわたる複数の列で編成された前記複数のメモリ装置に適用されるＲＡＩＤ−６ ＥＣＣ符号を使用する。この場合、単一データ要素だけが任意の行と列の間で共有される。
【００３９】
好ましくは、前記エラー訂正が、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記ＲＡＩＤ−６ ＥＣＣ符号と共にオフセット多重シフトが使用される。
【００４０】
第３の側面において、メモリ・システム内のエラーを検出し且つ訂正するための方法が提供される。この方法は、前記メモリ・システム内の１つ以上のエラーを検出するステップを含み、前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成され、前記１つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、３角測量法を使用して前記エラーのタイプを識別するステップと、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、前記メモリ・システムが機能低下なしに動作することができるように、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第１のＥＣＣ符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第２のＥＣＣ符号を使用して、前記１つ以上のエラーを訂正するステップをさらに含む。
【００４１】
好ましくは、前記訂正するステップが、行整列し且つ検出不能となる複数の障害を生じないことを保証するために、前記第２のＥＣＣ符号と共にオフセット多重シフトが使用される。
【００４２】
好ましくは、一の障害メモリ・モジュールを識別する際に、前記メモリ・システムの信頼性を改良するために、当該障害メモリ・モジュールの同一性（identity）が、前記第１のＥＣＣ符号内のパラメータとして使用される。
【００４３】
好ましくは、前記第１のＥＣＣ符号は、ＲＡＩＤ−３ ＥＣＣ符号であり、前記第２のＥＣＣ符号は、ＲＡＩＤ−６ＥＣＣ符号である。
【００４４】
実施形態は、一のメモリ・コントローラ、複数のメモリ・モジュール及び一の機構を有する、メモリ・システムを含む。前記複数のメモリ・モジュールは、前記メモリ・コントローラ及び複数のメモリ装置と通信する。前記機構は、前記複数のメモリ・モジュールのうちの１つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出する。前記機構は、前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にする。
【００４５】
他の実施形態は、複数のメモリ・モジュールへの一のインタフェース及び一の機構を有する、メモリ・コントローラを含む。前記複数のメモリ・モジュールは、複数のメモリ装置と通信する。前記機構は、前記複数のメモリ・モジュールのうちの１つが他のメモリ・モジュール上の一のメモリ装置障害と一致する障害を生じたことを検出する。前記機構は、前記メモリ・モジュール障害及び前記メモリ装置障害の存在下において、前記メモリ・システムが機能低下なしに動作を継続することを可能にする。
【００４６】
さらに他の実施形態は、メモリ・システム内のエラーを検出し且つ訂正するための方法を含む。この方法は、前記メモリ・システム内の１つ以上のエラーを検出するステップを含む。前記メモリ・システムは、複数のメモリ装置を有する複数のメモリ・モジュールを含み、前記複数のメモリ・モジュールは、メモリ・コマンドに応答して一斉にアクセスされるように構成される。また、この方法は、前記１つ以上のエラーを一のメモリ装置障害及び一のメモリ・モジュール障害の一方又は両方に分離するために、３角測量法を使用して前記エラーのタイプを識別するステップと、複数のメモリ・モジュール内の複数のメモリ装置に水平に適用される第１のＥＣＣ符号及び一のメモリ・モジュール内の複数のメモリ装置に垂直に適用される第２のＥＣＣ符号を使用して、前記１つ以上のエラーを訂正するステップを含む。前記メモリ・システムは、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、機能低下なしに動作することができる。
【発明の効果】
【００４７】
本発明は、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、メモリ・システムが機能低下なしに動作するという効果を奏する。これは、メモリ・システムの可用性及び保守性における著しい改良につながることがある。
【図面の簡単な説明】
【００４８】
【図１】複数の単方向バスを備えた、カスケード相互接続メモリ・システムを示す図である。
【図２】複数の単方向バスを備えた、カスケード相互接続メモリ・システムを示す図である。
【図３】本発明の実施形態によって使用される、典型的なコンピュータ・メモリ・システム構成のブロック図である。
【図４】単一ＤＲＡＭチップ・エラーを訂正する、論理ビューのブロック図である。
【図５】高々一の完全ＤＩＭＭ障害を訂正する、論理ビューのブロック図である。
【図６】２つのＤＲＡＭチップ・エラーを訂正する、論理ビューのブロック図である。
【図７】第２のＤＲＡＭチップ障害と一致する一の完全ＤＩＭＭ障害を訂正する際の困難さを例示する、論理ビューのブロック図である。
【図８】第２のＤＲＡＭチップ障害と一致する一の完全ＤＩＭＭ障害を訂正する際の困難さを例示する、論理ビューのブロック図である。
【図９】第２のＤＲＡＭチップ障害と一致する一の完全ＤＩＭＭ障害を訂正するための種々のシナリオを示す図である。
【図１０】第２のＤＲＡＭチップ障害と一致する一の完全ＤＩＭＭ障害を訂正するための種々のシナリオを示す図である。
【図１１】第２のＤＲＡＭチップ障害と一致する一の完全ＤＩＭＭ障害を訂正するための種々のシナリオを示す図である。
【図１２】２つの追加的なＤＲＡＭ装置障害と一致する完全ＤＩＭＭ障害を訂正する論理ビューのブロック図である。
【図１３】本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。
【図１４】本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。
【図１５】本発明の実施形態を使用して、エラー検出及び訂正を実行するプロセスのフローチャートである。
【図１６】２次元の３角測量法を実行するために使用することができる、典型的なプロセスのフローチャートである。
【図１７】本発明の実施形態によって使用される、エラー分類を要約するテーブルである。
【発明を実施するための形態】
【００４９】
本発明の実施形態（以下「実施形態」と表記）は、高々一の全チップ（例えば、ＤＲＡＭ）障害と一致する、高々一の完全ＤＩＭＭ障害を検出し且つ訂正するために、２つの独立的な符号（一方はＲＡＭのセクションに水平に適用され、他方はＲＡＭのセクションに垂直に適用される）を使用する。このようにすると、第２のチップ・エラーの存在下においてさえ、障害を有するＤＩＭＭを並行的に修復することができ、その修復中に、コンピュータ・システム・メモリを継続的に動作させることができる。第２のチップ・エラーを処理するというこの能力は、新規であり且つ非常に重要である。というのは、ＤＩＭＭの修復を完了する前に、第２のエラー（特に、メモリ・ソフト・エラー）が生じるという有限の確率が存在するからである。
【００５０】
本明細書では、「一致する」という用語は、２つ以上のエラー・パターンの発生を表す。１つの例では、第１の訂正可能エラーが生じ、この訂正可能エラーを修復することができる前の、その後の時点で、第２の障害が生じる。この場合、第１及び第２の障害は、一致すると云われる。修復時間は、常にゼロより長く、修復時間が長くなればなるほど、第１の障害と一致する第２の障害が生じる蓋然性は大きくなる。実施形態は、一のＤＩＭＭ障害を識別する前に、一のＤＩＭＭ障害及び高い確率を有する一の追加チップ・エラーの訂正に備える。一旦、一のＤＩＭＭ障害を識別すると、実施形態は、常に、一のＤＩＭＭ障害及び一の追加チップ・エラーの訂正を提供する。本明細書では、「ＤＩＭＭ障害」又は「メモリ・モジュール障害」という用語を使用するが、実施形態が保護せんとする障害モードは、一般に、ＤＩＭＭからメモリ・コントローラにデータを伝送する通信媒体の障害を含む。
【００５１】
実施形態は、複数のＲＡＭ装置（例えば、ＤＲＡＭ、ＳＤＲＡＭ等）から成るコンピュータ・メモリ・システムのための、透過的な回復及び完全にオン・ラインの並行ＤＩＭＭ修復を提供する。他のメモリ・チップ障害と一致する、高々一の完全メモリ・サブシステム（例えば、ＤＩＭＭ）障害用の透過的な回復が提供される。実施形態は、コンピュータ・システムＲＡＭ用のノード構造を使用することに加えて、ＲＡＭ内に格納された必要なシステム・データへのアクセスを失うことなく、任意のメモリ・ノードの電源を遮断することを可能にする、ＥＣＣの革新的なアプリケーションを使用する。そのため、コンピュータ・システム・メモリは、あたかも全てのメモリ・ノードが存在し、電源がオンにされ且つ完全に動作可能であるかのように、機能低下なしに継続的に動作し、ＲＡＭ内に格納された全てのデータへの完全なアクセスを提供する。本明細書では、「メモリ・ノード」という用語は、単一の論理列に関連する全てのＤＩＭＭの集合を表す。一の論理列は、一のストリップ内の単一シンボル位置に関連する、複数のシンボルを保持する。実施形態では、これらはＲＡＩＤ−３ＥＣＣ符号の単一シンボルである。常にではないが、単一の列が、単一のメモリ・チャネルに関連することが多い。本明細書に開示する態様でノードを構成する重要性は、当該ノードがシステムから除去される場合に、ＥＣＣ符号が全ての欠落シンボルを再生成するための能力を提供することにある。
【００５２】
実施形態では、「ダブル・データ・レート３」（ＤＤＲ３）ＳＤＲＡＭチップが使用される。ＤＩＭＭは、ＤＤＲ３ ＳＤＲＡＭチップを使用して設計され、その各チップは、ＤＩＭＭ上に格納された全データの等しい部分を保持する。また、実施形態は、４本の入出力ピン（例えば、×４装置）を有するように編成されたＤＤＲ３装置を使用し、その場合、各アクセスは、８のバースト長を有する。言いかえれば、メモリ・アクセスごとに、各ＳＤＲＡＭは、８のバーストで４ビットのデータ（１ニブル）を提供し、その結果、合計で３２ビット又は４バイト（４ビット×８バースト長＝３２ビット＝４バイト）をもたらす。
【００５３】
当分野で使用されているＲＡＩＤ関連の用語には、ある不整合性及び曖昧さがある。以下の定義は、別段の説明がない限り、本明細書で使用するこれらの用語の意味を暗示する。「アレイ」は、複数のハード・ディスク・ドライブの集合であり、その内部で、ＲＡＩＤ消失符号（erasure code）の１つ以上のインスタンスが実装されるものである。「シンボル」又は「要素」は、データ又はパリティの基本単位であり、消失符号のビルディング・ブロックである。符号理論では、これはシンボル内の一のビットに割り当てられるデータであり、典型的には、１セットの連続するセクタである。「要素」は、一定数のバイトから成る。要素を一定数のブロックとして定義することも普通である。「ブロック」は、一定数のバイトである。「ストライプ」は、パリティ計算関連に従属的に関係する、データ及びパリティ要素の完全な結合集合である。符号理論では、ストライプは、符号語又は符号インスタンスである。「ストリップ」は、単一ハード・ディスク・ドライブ上の隣接要素の集合である。一のストリップは、同じディスク及びストライプからの複数のデータ要素、複数のパリティ要素又はその両方を保持する。「ストリップ」及び「列」という用語は、交換可能に使用される。符号理論では、ストリップは、符号語に関連し、ストライプ単位と称することもある。一の符号語内のストリップの集合は、一のストライプを形成する。ストリップについて最も多く見られるのは、複数のストリップが、同じ数の要素を保持することである。或るケースでは、複数のストライプをグループ化して、ストライドと称する、より高いレベルの構成体を形成することがある。
【００５４】
ＲＡＩＤ−６は、より一般的なＲＳ符号の特定の例である。ＲＳ符号が最初に世に出たのは、アーヴィング・リード及びガス・ソロモンが１９６０年に論文を発表した時である。これらの強力な符号は、深宇宙の問題からＤＶＤプレーヤ内のディスク・エラーに至るまでの種々のエラーを訂正するという広範囲の用途を有している。ＲＳ符号は、データ要素又はシンボルに適用される、非２進の巡回符号である。ＲＳ（ｎ，ｋ）符号は、ｋ＝データ・シンボルの数、ｍ＝ビットで表したシンボル長、ｎ＝シンボルの総数を有するものとして定義することができる。従って、以下の数１に示す通りとなる。
【数１】
2010531499.tif 000003
【００５５】
さらに、障害位置が独立的に決定されない場合に、ｃ＝シンボル・エラー訂正能力を定義すると、ｎ−ｋ＝２ｃに帰着する。言いかえれば、シンボルの総数及びデータ・シンボルの数の差は、ＲＳ符号のデータ訂正能力に正比例する。ＲＳ符号は、任意の線形符号について、最大の可能な最小距離を達成する。非２進符号については、ハミング距離と類似する最小距離は、ｄｍｉｎ＝ｎ−ｋ＋１によって与えられる。
【００５６】
さらに、ｅ＝消失訂正能力（すなわち、障害位置が独立的に決定される場合の、当該障害を訂正するための能力）を定義すると、ｅ＝ｄｍｉｎ−１＝ｎ−ｋ＝２ｃｎ）に帰着する。言いかえれば、障害位置が或る独立の手段によって決定される場合と比較すると、障害位置が未知である場合は、半分の障害を訂正することが可能である。
【００５７】
ＲＳ符号は、未知数を解決するために一連の連立方程式を使用する。これらの未知数は、データ・シンボル又は障害を有するシンボルの位置の何れかである。例えば、ＲＡＩＤ−６は、各行内の各データ要素に適用される２つの独立的なチェックサムを生成するために、２つの方程式を使用する。Ｑ（ｘ）＝ＲＳチェックサムを定義し（但し、ｘ＝ａ）、Ｐ（ｘ）＝ＲＳチェックサムを定義し（但し、ｘ＝１）、そしてｄ０，ｄ１・・ｄＮ＝多項式係数を定義すると、ＲＳチェックサムの方程式は、以下の数２に示すように、多項式で表現することができる。この方程式は、係数の値を求め、一のデータ要素を訂正し、そして障害の位置が未知であれば、当該位置を特定するべくｘの冪の値を求めるために使用することができる。
【数２】
2010531499.tif 000004
【００５８】
ＲＡＩＤ−３、ＲＡＩＤ−４及びＲＡＩＤ−５の簡単なＸＯＲは、ｘ＝１である場合の多項式の和であり、その結果、前記方程式がＰ（ｘ）＝ｄ０＋ｄ１＋ｄ２＋・・＋ｄ（Ｎ−１）となる、特別のケースであることが理解されよう。この一般的な方程式には、実施形態によって使用することができる、多数の変形が存在する。主な要件は、これが原始多項式であるということである。すなわち、共通根を有さない場合、これが一の素数と類似することを意味する。これは、有限体又はガロア体について、解が常に一意的であることを保証する。
【００５９】
図３は、実施形態におけるコンピュータ・メモリ・システムの構成方法を例示する。メモリは、５つのＤＩＭＭ ３０２から成るメモリ・ブロック３１４の単位でシステムに追加される。各ＤＩＭＭ３０２は、１８個のＤＲＡＭチップを有する。従って、各メモリ・ブロック３１４内には、５つのＤＩＭＭ ３０２にわたって合計９０個のＤＲＡＭチップがある。６４個のＤＲＡＭチップは、顧客データを保持し、２６個のＤＲＡＭチップは、チェックサムを保持するために使用される（参照番号３０４を付したＤＲＡＭチップ、及びメモリ・チャネル３０６ｅに接続されたＤＩＭＭ３０２上に位置するメモリ・ブロック３１４内の全てのＤＲＡＭチップ）。各メモリ・ブロック・アクセスは、３６０バイトのデータを提供し（ＤＲＡＭが４バイトであると仮定）、そのうち２５６バイトは使用可能な顧客データであり、１０４バイトはチェックサム用である。この結果、信頼性・可用性・保守性（ＲＡＳ）オーバーヘッドは、２８.９％となる。当然ながら、本発明は、この特定のメモリ構成に制限されない。本発明は、異なるＤＲＡＭチップ及びＤＩＭＭ構造を使用する、他の多くのメモリ構成にも適用可能であるからである。
【００６０】
図３の実施形態は、５つのメモリ・ノード３１６を含み、各メモリ・ノード３１６は、一のメモリ・チャネル３０６にカスケード相互接続された３つのメモリ・モジュール（ＤＩＭＭ３０２）を含む。この実施形態では、５つのメモリ・チャネル３０６ａ〜３０６ｅが、ホスト・システム３１０内に位置する、メモリ・コントローラ３０８に接続される。ＤＩＭＭ３０２の各々は、メモリ装置（例えば、ＤＲＡＭチップ）及びメモリ・チャネル３０６と通信するためのハブ装置３１２を含む。
【００６１】
この実施形態では、チョップド（chopped）・バースト・モード・サポート及び優先読み取りポリシの使用による（すなわち、メモリ・システムは、重要度の順序で複数の語を検索するように設計されている）低い待ち時間アクセスを提供するために、ＥＣＣ符号は、６４データ・バイトのブロック上で生成される。ＤＤＲ３装置では、「バースト・チョップド・モード」サポートは、ＤＤＲ３について指定された通常の８のバーストの代わりに、４のバーストのＤＲＡＭアクセスを可能にする。また、本発明で使用されるＥＣＣ符号は、１２８バイトのブロックにも適用することができ、その場合にも、チョップド・バースト・モードを依然としてサポートすることができる。これらのＥＣＣ符号は、６４、１２８又は２５６バイトのブロックに適用することができる。しかし、これらのＥＣＣ符号が、単一のメモリ・アクセスで検索されるか又は格納される完全な２５６バイトに適用されるならば、チョップド・バースト・モードをサポートすることができない。というのは、エラーを検出するために格納済みチェックサムと比較すべきチェックサムを生成又は再生成するためには、２５６バイトのデータの全てが必要とされるからである。
【００６２】
図３は、実施形態によって使用される、１つのＲＡＭシステム構造の高水準ビューである。各メモリ・ノード３１６は、３つのＤＩＭＭ３０２から成る。メモリ・ノード３１６当たりのＤＩＭＭ ３０２の数は、多くのハブ・ベースのモジュールで使用可能な拡張（例えば、カスケード相互接続）バスのような手段を通して、４つ以上のＤＩＭＭ３０２を含むように拡張することができる。図３のメモリ・ノード構造は、システム・メモリ動作に影響を与えることなく、任意のメモリ・ノード３１６の電源を遮断し且つＤＩＭＭを交換することを可能にする。メモリ・システムは、任意の単一メモリ・ノード３１６の電源が遮断されても、機能低下なしに動作を継続するであろう。
【００６３】
図３では、参照番号３０４を付したＤＲＡＭチップ及びメモリ・チャネル３０６ｅに接続されたメモリ・ノード３１６内の全てのＤＲＡＭチップは、並行ＤＩＭＭ修復を可能にする、特別のＥＣＣ符号を保持する。ＤＩＭＭ３０２上の残りのＤＲＡＭは、使用可能な顧客データを保持する。
【００６４】
ＤＩＭＭ ３０２は、５つのＤＩＭＭから成るメモリ・ブロック３１４の単位でシステムに追加される。図３において、５つのＤＩＭＭの最上行は、システムの第１のＤＩＭＭブロック３１４を表す。また、これは最小のメモリ構成を表す。次のＤＩＭＭブロックは、その直下の行になるであろう。
【００６５】
右端のメモリ・ノード３１６において、各列内の第５のＤＩＭＭ（例えば、メモリ・チャネル３０６ｅに接続された各行の右端にあるＤＩＭＭ）は、他のメモリ・ノード３１６内の複数のＤＩＭＭにわたって計算された一のＲＡＩＤ−３チェックサムを保持する、複数のＤＲＡＭチップを有する。メモリ・チャネル３０６ｅに接続されたこれらのＤＲＡＭは、顧客データを保持しない（又は非常に僅かな顧客データを保持する）。ＲＡＩＤ−５がＨＤＤのために使用されることが多いのは、ＲＡＩＤ−３と異なり、ボトルネックを回避するために、複数のチェックサムが全てのＨＤＤにわたって分散されるからである。かかるなボトルネックがこの実施形態に存在しない理由は、一のメモリ・ブロック内の全てのＤＲＡＭチップが同時にアクセスされるということにある。そのため、チェックサムの分散は不要である。この実施形態では、単一のアクセス中に６４バイトのデータ・ブロックが処理されるという理由で、各データ要素は、１バイトのシンボル長さを有する。他の実施形態は、ＲＡＩＤ−３の代わりに、より長いシンボル・サイズのデータ要素を含む、ＲＡＩＤ−４を使用する。以下の説明では、ＲＡＩＤ−３という用語を使用するが、幾つかの事例では、ＲＡＩＤ−４をも使用することができることを理解されたい。重要な点は、ＨＤＤ構成の性能を改良するためにＲＡＩＤ−５で使用されたものと同様の分散パリティが、ここでは必要でないということである。ＲＡＩＤ−３チェックサムを計算するために、図３のＤＩＭＭ３０２の複数の列に対応する、他の複数のメモリ・ノード３１６内の対応する各ＤＲＡＭチップからの対応するデータ要素が使用される。各ＤＩＭＭにわたってＲＡＩＤ−３を使用すると、エラーを有する特定のＤＩＭＭ３０２が独立の手段を通して特定される場合には、完全ＤＩＭＭ障害を訂正することができる。
【００６６】
実施形態は、２つの独立的なＥＣＣ符号、すなわち水平に適用される第１のＥＣＣ符号及び垂直に適用される第２のＥＣＣ符号を使用することにより、有効なエラー検出及びエラー分離特性を提供する。エラーを訂正するためにＲＡＩＤ−３及びＲＡＩＤ−６符号が広範囲に使用される場合は、ＨＤＤエラーを検出し且つ分離することよりも、ＤＲＡＭチップ・エラー（特に、単一ビットの反転（単一セルのエラー）のようなより微妙なエラー）を検出し且つ特定することの方が遙かに困難である。ＨＤＤは、より微妙なエラーを検出し且つ特定するために、各データ要素又はグループのデータ要素に関連する装置上の組み込み符号を使用することが多い。これらの符号は、簡単なパリティに加えて、比較的良好なエラー検出及び分離を提供するＣＲＣ及びＬＲＣを含む。ＲＡＩＤ−３及びＲＡＩＤ−６のエラー訂正の有効性が倍加するのは、独立の手段を通してエラーを特定することができる場合である。一般に、ディスク・アダプタからＨＤＤへのインタフェースは、コマンド／応答タイプのインタフェースである。かかるインタフェースは、各ＤＲＡＭチップへのインタフェースによって通常提供されるものよりも、完全な障害を生じたＨＤＤを遙かに良好に検出することができる。
【００６７】
ＨＤＤインタフェースは、特定のＨＤＤが応答していない場合に、ディスク・アダプタが直ちにこれを認識するようなものである。一のＤＲＡＭチップに障害が生じる場合は、検索済みデータが格納済みデータと異なる点を除けば、当該障害の如何なる指示も存在しないことがある。かかる障害は、或る独立の手段によって検出しなければならない。ＨＤＤストレージは、安価で且つ高密度であるから、チェッキングの追加に関連するオーバーヘッドは、ＲＡＭほどには法外に高価にならない。エラー検出能力を改良するために、組み込みチェッカをＲＡＭに追加すると、メモリ密度、電力消費、性能、全体的なメモリ・サイズが著しい影響を受け、その結果、コンピュータ・システムのコストが増大することがある。ＲＡＭＥＣＣ符号ができるだけ効率的であることが、非常に重要である。
【００６８】
これらの制限を克服するために、実施形態は、エラーを有効に分離するために、水平に適用されるＲＡＩＤ−３符号、垂直に適用されるＲＡＩＤ−６符号及び２次元の３角測量法を使用する。一旦エラーが分離されると、エラーを訂正するために、ＲＡＩＤ−３行符号及びＲＡＩＤ−６列符号の両方を使用することができる。前述のように、ＲＡＩＤ−３符号は、複数のＤＩＭＭにわたって適用される。ＲＡＩＤ−６符号（実施形態では、［１８，１６］ＲＳ符号）は、各ＤＩＭＭに独立的に適用される。図３において参照番号３０４を付したＤＲＡＭチップは、それらが存在するＤＩＭＭ３０２用の［１８，１６］ＲＳチェックサムを保持する。これらの［１８，１６］ＲＳチェックサムは、各ＤＩＭＭ ３０２上の他の１６個のＤＲＡＭチップの対応するデータ要素を使用して計算される。
【００６９】
各データ要素に水平及び垂直に適用されるこれらの独立的なＥＣＣ符号（すなわち、複数のＤＩＭＭにわたって複数の行内にある複数のＤＲＡＭチップのデータ要素に適用されるＲＡＩＤ−３符号及び各ＤＩＭＭの複数の列内にある複数のＤＲＡＭチップのデータ要素に適用されるＲＡＩＤ−６符号）の組み合わせは、実質的なオーバーヘッドなしに、障害分離及びエラー訂正能力を実質的に向上させる。この新しいＥＣＣ符号は、今日、高性能システム上で使用されている多くの現在のＥＣＣ符号よりも多い、２８.９％又は１７.８％のオーバーヘッドを有する。高性能システムのメモリ用の典型的な現用ＥＣＣ符号は、［３５，３２］ＲＳ符号であり、単一チップ・エラー訂正及び２重チップ・エラー検出を提供する。
【００７０】
後述するように、実施形態は、高い確率で、高々一の完全ＤＩＭＭ障害（１８個のＤＲＡＭチップ）の１００％の検出及び訂正を提供する。単一ＤＩＭＭ上の３以上のＤＲＡＭチップ・エラーについては、ＲＡＩＤ−６列方程式が、有効な解であるように見えるものを間違って生成するという小さな可能性がある。このケースでは、適用されるＲＡＩＤ−６列符号は、必ずしもエラーを検出しないであろう。しかし、これらのエラーが単一ＤＩＭＭ内に含まれる限り、ＲＡＩＤ−５チェックは、これらのエラーを常に検出するであろう。一旦障害を有するＤＩＭＭが識別されると、実施形態は、高々一の完全ＤＩＭＭ障害を常に訂正するであろう。
【００７１】
後述するように、実施形態は、高い確率で、一の完全ＤＩＭＭ障害（１９個のＤＲＡＭチップ）と一致する、高々一の全チップ障害の１００％の検出及び訂正を提供する。第２のエラーから回復する能力が重要である。というのは、同時的な障害イベントが希であるために蓋然性は低いが、並行ＤＩＭＭ修復を実行中に又はその完了前に、一の完全ＤＩＭＭ障害と一致する、他のＤＩＭＭ上の第２のエラーに遭遇することがあるからである。これは、特に単一セルの２次障害に当てはまる。前述のように、一旦、障害を有するＤＩＭＭが識別されると、実施形態は、一のチップ（本明細書では「メモリ装置」とも称する）障害と一致する、高々一の完全ＤＩＭＭ障害を常に訂正するであろう。
【００７２】
以下に記述する典型的なエラー・シナリオは、拡張された回復能力及び任意の制限を強調しつつ、実施形態がどのように機能するかということを説明するものである。
【００７３】
図４は、図３を参照して説明したメモリ・システム構成の論理ビューを示す。以下の説明では、次の表現を使用する。
Ｄｘｙ＝データ要素
Ｐｘｙ＝ＲＡＩＤ−３行チェックサム
Ｐｘｙ‘＝再生成済みチェックサム
Ｑｘｙ＝ＲＡＩＤ−６列チェックサム
Ｑｘｙ’＝再生成済みチェックサム
Ｑ０ｘ＝１つのＲＡＩＤ−６列チェックサム（これは、ＲＡＩＤ−６のＲＡＩＤ−５列チェックサムになるであろう。例えば、Ｑ０１＝Ｄ０１＋Ｄ１１＋Ｄ２１＋・・＋ＤＦ１。但し、「＋」はＸＯＲである）
Ｑ１ｙ＝他のＲＡＩＤ−６列チェックサム
【数３】
2010531499.tif 000005
ｅｘｙ、ｚｘｙ、及びｗｘｙ＝エラー（エラーを生成するように訂正データに追加される確率変数）
Ｒｘｙ＝ＱｘｙチェックサムのＲＡＩＤ−３行チェックサム。
【００７４】
図４の左側の論理表現は、完全に機能するコンピュータ・メモリ構成を示す。各列は、１８個のＤＲＡＭチップから成る単一ＤＩＭＭを表す。各ＤＲＡＭチップ上のデータ要素は、Ｄｘｙとして指定される。ＲＡＩＤ−３チェックサム要素４０２（Ｐｘｙ及びＲｘｙ）は、複数のＤＩＭＭにわたる各ＤＲＡＭデータ要素上の行ごとに生成される。ＲＡＩＤ−３については、チェックサムは、各行内のデータ要素のＸＯＲである（Ｐｘ０＝Ｄｘ０＋Ｄｘ１＋Ｄｘ２＋Ｄｘ３）。例えば、ｘ＝２の場合、Ｐ２０＝Ｄ２０＋Ｄ２１＋Ｄ２２＋Ｄ２３である。
【００７５】
列内の各データ要素に適用され且つ関連する列を下って生成されるＲＡＩＤ−６チェックサム要素４０４は、Ｑｘｙとして指定される。
【００７６】
図４は、単一ＤＲＡＭチップ・エラーが、どのように検出され且つ訂正されるかを例示する。図４の左側の論理表現は、エラーを有さない完全に機能的なメモリを示す。図４の右側の論理表現は、参照記号Ｄ４２を付したＤＲＡＭチップ内でエラーが生じたことを示す。このエラーは、単一ビット・エラー、複数ビット・エラー又は当該ＤＲＡＭチップの完全障害までの他の任意のエラーの組み合わせであることがある。実施形態は、単一ＤＲＡＭチップ・エラーについては、１００％の検出及び訂正を提供する。
【００７７】
エラーを有する特定のＤＲＡＭチップは、本明細書において「２次元の３角測量法」と称する技術を使用して分離され、その場合、ＲＡＩＤ−３行チェックサム及びＲＡＩＤ−６列チェックサムは、エラーの位置を特定するために同時に使用される。メモリ読み取り動作中、ＲＡＩＤ−３チェックサムＰｘｙ‘及びＲＡＩＤ−６チェックサムＱｘｙ’は、メモリから読み取られたデータから再生成される。再生成済みチェックサムＰｘｙ‘、Ｑｘｙ’及びＲｘｙ’は、格納済みチェックサムＰｘｙ、Ｑｘｙ及びＲｘｙと比較される。もし、それらが全て等しければ、すなわちＰｘｙ‘＝Ｐｘｙ、Ｑｘｙ’＝Ｑｘｙ及びＲｘｙ’＝Ｒｘｙであれば、データ・エラーが存在しないと仮定することができる。メモリから検索されたデータは、正しいことが検証される。もし、再生成済みの単一のチェックサムＱｘｙ’だけが格納済みチェックサムと一致しなければ、当該チェックサムを保持するＤＲＡＭチップがエラーを有することを指示する。このケースでは、顧客データは依然として有効であるから、データ訂正は必要とされない。
【００７８】
図４に示すように、当該行に関連する、再生成済みＲＡＩＤ−３チェックサムＰｘｙ‘は、格納済みチェックサムと一致しない。これは、その行内に一のエラーがあることを指示する。この例では、Ｐ４０はＰ４０’と一致しないから、Ｄ４０、Ｄ４１、Ｄ４２、Ｄ４３及びＰ４０を保持する、当該行に関連する一のエラーがあることが分かる。データ要素Ｄ４０、Ｄ４１、Ｄ４２、Ｄ４３又はＲＡＩＤ−３行チェックサムＰ４０が、当該エラーに関連することがある。複数エラーが存在することすらある。再生成済みＲＡＩＤ−３行チェックサムＰ４０’を格納済みチェックサムＰ４０と比較することは、当該行を分離するに過ぎないであろう。さらなる分離のために、ＲＡＩＤ−６列チェックサムが使用される。もし、全ての再生成済みＲＡＩＤ−６列チェックサム（Ｑｘｙ’）が格納済みチェックサム（Ｑｘｙ）と一致すれば、ＲＡＩＤ−３チェックサムのＤＲＡＭチップＰｘｙが、エラーを有する。この例では、再生成済みＲＡＩＤ−６チェックサム（Ｑ０２’及びＱ１２’）は、格納済みチェックサム（Ｑ０２及びＱ１２）と一致しない。ここで、２次元の３角測量法を使用すると、エラーの位置をＤ４２に特定することができる。これは、エラーを有するＤＲＡＭチップである。
【００７９】
一旦当該エラーが分離されると、他の行データ要素を格納済みＲＡＩＤ−３チェックサムとＸＯＲする（Ｄ４２＝Ｄ４０＋Ｄ４１＋Ｄ４３＋Ｐ４０）か、又は列データ要素を格納済みＲＡＩＤ−６チェックサムとＸＯＲする（Ｄ４２＝Ｄ０２＋Ｄ１２＋Ｄ２２＋Ｄ３２＋Ｄ５２＋・・＋ＤＢ２＋ＤＣ２＋ＤＤ２＋ＤＥ２＋ＤＦ２＋Ｑ０２）だけで、エラー訂正が達成される。他のＲＡＩＤ−６、［１８，１６］ＲＳ方程式も、エラーを訂正するために使用することができる。
【００８０】
これが単一ＤＲＡＭチップ・エラーであるためには、再生成済み３つのチェックサム、すなわちＲＡＩＤ−３チェックサム及び２つのＲＡＩＤ−６チェックサムの全ては、格納済みチェックサムと一致してはならず、そして他の全ての再生成済みＲＡＩＤ−３及びＲＡＩＤ−６チェックサムは、それらの格納済みチェックサムと一致しなければならない。この例では、Ｐ４０’はＰ４０と一致せず、そしてこれに対応する不一致が存在する。すなわち、再生成済みＲＡＩＤ−６チェックサムＱ０２’及びＱ１２’は、対応する格納済みＲＡＩＤ−６チェックサムＱ０２及びＱ１２と一致しない。従って、Ｄ４２に関連する一のＤＲＡＭチップ・エラーがあることが分かる。同様に、もし、再生成済みＲＡＩＤ−６チェックサムのうちの１つ（Ｑ０ｙ’又はＱ１ｙ）だけが、対応する格納済みＲＡＩＤ−３チェックサムのうちの１つ（Ｑ０ｙ又はＱ１ｙ）と一致しなければ、これが当該エラーの源であることが分かる。単一のデータ要素エラー（Ｄｘｙ）が存在するためには、再生成済みチェックサム及び格納済みチェックサム（Ｑ０ｙ’及びＱ０ｙ、並びにＱ１ｙ’及びＱ１ｙ）は、Ｐｘｙ‘及びＰｘｙと同様に、不一致を示さなければならない。
【００８１】
実施形態の完全な能力を検討するために、以下では、より複雑なエラー・シナリオの例を説明する。
【００８２】
図５は、単一ＤＩＭＭ上の全部で１８個のＤＲＡＭチップの完全ＤＩＭＭ障害に至るまで、当該ＤＩＭＭ上の複数のＤＲＡＭチップ・エラーを処理するために、前述のアプローチがどのようにして容易に拡張されるかを例示する。先ず、単一ＤＩＭＭ障害のシナリオを説明する。この例では、再生成済みＲＡＩＤ−３行チェックサムＰｘｙ‘のうちの多数、恐らく全てが、格納済みＲＡＩＤ−３行チェックサムＰｘｙと一致せず、エラーを有する複数の行があることを指示する。しかし、この例では、再生成済みＲＡＩＤ６チェックサムＱｘｙ’が格納済みチェックサムＱｘｙと比較されるとき、単一の列に関連する２つのチェックサムだけが一致しないことが検出される。従って、当該エラーが、単一ＤＩＭＭ内に保持されることが分かる。この例では、再生成済みチェックサムＱ０２’及びＱ１２’は、格納済みチェックサムＱ０２及びＱ１２と一致しないから、当該障害が第３のＤＩＭＭに関連することが分かる。希なケースでは、当該ＤＩＭＭ内のエラーが、関連するＲＡＩＤ−６チェックサムがゼロに等しいようなものである可能性があり、そのケースでは、この復号方法は、エラー訂正ではなく、単にエラー検出を与える。
【００８３】
エラーを有する単一の列だけがある限り、次のようにＲＡＩＤ−３行方程式を使用して、ＤＩＭＭ全体に相当するデータを再生成し、消失訂正することができる。
Ｄｘ２＝Ｄｘ０＋Ｄｘ１＋Ｄｘ３＋Ｐｘ０
但し、ｘ＝０，１，２・・，Ｆ
これは非常に重要な能力である。並行ＤＩＭＭ修復を可能にするためには、完全ＤＩＭＭ障害の回復が必要である。当該ＤＩＭＭがホット・プラグされる場合、これは一の完全ＤＩＭＭ障害のように見えるであろう。ＤＩＭＭごとに存在検出（presence detect）線を追加すると、ＤＩＭＭがシステムから除去される場合に、分離を保証するのを支援することができる。
【００８４】
図６は、２つのＤＲＡＭチップ・エラーが２つの異なるＤＩＭＭに生じる場合に、これらのＤＲＡＭチップ・エラーがどのように処理されるかを例示する。２つのランダムなエラーが同時に生じる確率は、事実上ゼロであるが、第１の障害が並行修復又はＤＲＡＭスペアリング活動によって除去される前に、第２の障害に遭遇する或る確率がある。
【００８５】
図６では、Ｄ４２及びＤ９１に関連する実際のＤＲＡＭチップ・エラーが存在する。これらのエラーは、前述のものと同じチェックサム再生成手順を通して検出される。その場合、再生成済みＲＡＩＤ−３チェックサムＰ４０’及びＰ９０’は、格納済みチェックサムＰ４０及びＰ９０と一致しないであろう。従って、これらのエラーは、これらの２行に関連することが分かる。また、第２の列に関連する、再生成済みＲＡＩＤ−６チェックサムＱ０１’及びＱ１１’は、格納済みチェックサムＱ０１及びＱ１１と一致しないであろう。従って、第２の列に関連する一のエラーがあることが分かる。さらに、第３の列に関連する、再生成済みＲＡＩＤ−６チェックサムＱ０２’及びＱ１２’は、格納済みチェックサムＱ０２及びＱ１２と一致しないであろう。従って、第３の列に関連するエラーがあることが分かる。エラーを有するＤＲＡＭを特定するために、２次元の３角測量法が、独立的なチェックサムと共に使用される。Ｐ４０及びＱ０２又はＱ１２の交点は、一のエラーを有する一のＤＲＡＭチップとして、Ｄ４２を正確に特定することが明らかである。また、Ｐ９０及びＱ０１又はＱ１１の交点は、一のエラーを有する一のＤＲＡＭチップとして、Ｄ９１を正確に特定することが明らかである。
【００８６】
また、Ｄ４１を特定するＰ４０及びＱ０１又はＱ１１の交点と、Ｄ９２を特定するＰ９０及びＱ０２又はＱ１２の交点がある。しかし、これらのＤＲＡＭチップは、エラーを有さない。これだけから、４つのＤＲＡＭチップのどれがエラーを有するかを決定することは可能でない。しかし、これは問題でない。ＲＡＩＤ−６、［１８，１６］ＲＳ符号は、３の最小距離を有するから、他の独立的な手段を通して位置が特定される場合は、単一エラーを分離し且つ訂正するか又は２つの消失を訂正することを可能にする。このケースでは、ＲＡＩＤ−３行チェックサムは、行を特定することを可能にし、ＲＡＩＤ−６列チェックサムは、列を特定することを可能にする。ここで、問題となっている４つのＤＲＡＭチップ全ての消失を訂正するための、４つの方程式及び４つの未知数Ｄ４１、Ｄ４２、Ｄ９１、Ｄ９２がある。
【数４】
2010531499.tif 000006
【００８７】
図６は、どのようにすれば、任意の高々２つの同時的なＤＲＡＭチップ・エラーを、常に分離し且つ訂正することができるかを例示する。
【００８８】
図７は、第２のＤＲＡＭチップと一致する高々一の完全ＤＩＭＭ障害がある場合に遭遇する困難性を例示する。もし、第１の障害が分離されず且つその位置が特定されないならば、再生成済みチェックサム及び格納済みチェックサムを単に比較するだけでは、２つのＤＩＭＭ上のどのＤＲＡＭチップがエラーを有するかを決定することはできない。これは、ＲＡＩＤ−３行チェッカ（Ｐｘｙ及びＲｘｙ）の全て又はその殆どが、これらの行に関連するエラーがあることを指示するという事実に起因する。しかし、Ｐｘｙ行チェッカとＱｘｙ列チェッカの交点は、両ＤＩＭＭ上の全てのＤＲＡＭチップ上に潜在的なエラーが存在し得ることを指示する。しかし、このジレンマを回避する方法がある。
【００８９】
図８は、他のＤＩＭＭ上の他の単一ＤＲＡＭチップ・エラーと一致する一の完全ＤＩＭＭエラーがある場合に、訂正中にエラーがどのように伝播するかを一層詳細に例示する。このケースでは、高い確率で、これらのタイプのエラーの１００％の検出及び訂正を提供するように、当該アルゴリズムが適切に機能するためには、最初にどのエラーが生じたかを知ることは必要とされない。前述のように、他の単一ＤＲＡＭチップ・エラーと一致する一のＤＩＭＭエラーが生じる場合、再生成済みＲＡＩＤ−３行チェックサム（Ｐｘｙ’）の殆ど又は全ては、格納済みチェックサム（Ｐｘｙ）と一致せず、その結果、これらの行内のエラーを指示する。しかし、このケースでは、第１のＤＩＭＭ用の再生成済みＲＡＩＤ−６列チェックサム（Ｑ００’及びＱ１０’）は、格納済みチェックサム（Ｑ００及びＱ１０）と一致せず、その結果、第１のＤＩＭＭに関連する一のエラーを指示する。また、第１のＤＩＭＭ用の再生成済みＲＡＩＤ−６列チェックサム（Ｑ０２’及びＱ１２’）は、格納済みチェックサム（Ｑ０２及びＱ１２）と一致せず、その結果、（高い確率で）第３のＤＩＭＭに関連する一のエラーを指示する。この例では、障害を生じたＤＩＭＭは特定されないから、これらのエラーからの回復は、その情報なしで行わなければならない。データを訂正することができるのは、他のＤＩＭＭ上の一の完全ＤＩＭＭ障害（最大で１９個のＤＲＡＭチップ・エラーに相当）と一致する、１つのＤＩＭＭ上の高々単一ＤＲＡＭチップ・エラーが存在する場合だけである。これを達成するためには、問題となっている各ＤＩＭＭが完全ＤＩＭＭエラーを有し且つ他のＤＩＭＭが単一ＤＲＡＭチップ・エラーを有すると仮定し、両方のケースで単一の有効な解を捜さなければならない。
【００９０】
図８では、第３のＤＩＭＭが完全ＤＩＭＭ障害を有し、第１のＤＩＭＭが単一ＤＲＡＭチップ・エラーを有するものと仮定されている。第３のＤＩＭＭ上のデータを訂正するために、ＲＡＩＤ−３行方程式は、次のように使用することができる。
Ｄｘ２＝Ｄｘ０＋Ｄｘ１＋Ｄｘ３＋Ｐｘ０
但し、ｘ＝０，１，２，・・，Ｆ
【００９１】
第３のＤＩＭＭ上の消失を訂正するためにＲＡＩＤ−３を使用することを試みる際に、エラー・パターンは、最後に右側で終わる。Ｄ４０及びＤ４２は、依然としてエラーｅ４０を保持する。事態を一層悪くするのは、このエラーがＸＯＲ演算中に相殺されるのと同じエラーであるために、ＲＡＩＤ−３行によって検出されないことである。再生成済みＰ４０’と比較される格納済みＰ４０は、エラーが存在しないことを指示する。しかし、少なくとも１つのエラーが依然として存在していることは分かっているから、システムは先に進み、ＲＡＩＤ−６列方程式を使用して、当該エラーを特定し且つ訂正する。その結果、Ｄ４０及びＤ４２の両方に関連するｅ４０エラーが除去され、全ての再生成済みＲＡＩＤ−３チェックサム及びＲＡＩＤ−６チェックサムが格納済みチェックサムと一致するであろう。この段階で、これが有効な解でないことを保証するために、他のＤＩＭＭが完全ＤＩＭＭ障害を有することが仮定される。
【００９２】
図９は、第１のＤＩＭＭが完全ＤＩＭＭ障害を有し且つ第３のＤＩＭＭが単一ＤＲＡＭチップ・エラーを有するという間違った仮定がなされる場合に、何が起こるかを例示する。前述のように、ＲＡＩＤ−３行方程式は、第３のＤＩＭＭ上のデータを訂正するために、次のように使用される。
Ｄｘ０＝Ｄｘ１＋Ｄｘ２＋Ｄｘ３＋Ｐｘ０
但し、ｘ＝０，１，２，・・，Ｆ
その結果、図９の右側のブロック内に示すエラー・パターンが得られる。第３のＤＩＭＭ上のＤＲＡＭチップに関連する全てのエラーは、第１のＤＩＭＭ上の対応するＤＲＡＭチップに伝播する。これらのエラーは同じエラーであるので、全ての再生成済みＲＡＩＤ−３行チェックサムＰｘｙ’を格納済みチェックサムと比較すると、これらのエラーが同じであることが指示される。ＲＡＩＤ−３行チェックサムは、エラーを検出しないであろう。従って、行エラーが存在するという指示は、得られないであろう。しかし、第１及び第３のＲＡＩＤ−６列チェックサムは、エラーがそれらの列に存在することを示すであろう。従って、ここで、再生成済みチェックサム及び格納済みチェックサムを照会すると、その結果は、今や第１及び第３のＤＩＭＭ上の全てのＤＲＡＭにエラーが伝播していることを除き、他のＤＩＭＭが完全ＤＩＭＭ障害を有すると正しく仮定された場合に起こったことにそっくりのように見える。
【００９３】
図１０は、正しい仮定がなされた場合、前述のように、２つの単一チップ・エラーであろうと思われるものを特定し且つ訂正するためにＲＡＩＤ−６列を使用する試みがなされるときに何が起こるかを例示する。ＲＡＩＤ−６方程式を解決しようと試みるとき、殆どの場合に、無効な解が得られるであろう。これが起こる場合、当該解答が間違っていることが検出され、他の解答が正しいことが分かる。しかし、２５５個の可能な位置のうち１８個の有効な位置がある。従って、当該エラーを検出しない確率は、比較的高い（１８／２５５＝０．０７０６）。有効に見えて、検出されないような無効な解を生成する可能性は、７％（１００のうち７）である。このケースでは、ＲＡＩＤ−６訂正が実行され、これが一旦完了すると、再生成済みチェックサムが格納済みチェックサムと等しいことが検出されるであろう。全てのチェックサムがＲＡＩＤ−３チェックサム及びＲＡＩＤ−６チェックサムの両方と一致することが検出されるであろう。ＲＡＩＤ−６方程式を使用すると、当該列内に複数のエラーがある場合は、間違った結果が得られることがある（ここでは、ＲＡＩＤ−６は、２つの消失済みシンボル・エラーの訂正符号としてではなく、単一エラーの訂正符号として使用されている）。図１０のこの例では、計算の結果、右側のエラー・パターンが得られ、そこでは、各行内の各対応するＤＲＡＭチップに関連するエラーは、同一である。すなわち、
ｓ００＝Ｑ００＋Ｑ００’＝ｚ０２＋ｚ１２＋ｚ２２＋・・ＺＦ２＋Ｗ０２
ｓ０２＝Ｑ０２＋Ｑ０２’＝Ｚ０２＋Ｚ１２＋Ｚ２２＋・・＋ＺＦ２＋Ｗ０２
従って、
ｓ００＝ｓ０２
【００９４】
これは、ＲＡＩＤ−６方程式の解が、格納済みデータから独立しており、両方の列について同じであるエラーにのみ依存することを指示する。これらのエラーは同じであるから、これは、検出されない無効な解が行整列することを保証し、ＲＡＩＤ−３又はＲＡＩＤ−６チェックサムがこれらのエラーを検出することを不可能にする。検出されない間違った解が行整列する限り、ＲＡＩＤ６列訂正を実行した後、これらのエラーは、ＲＡＩＤ−３行チェックサムによって検出されないであろう（このＲＡＩＤ−６訂正は、訂正不能エラー又は「ＵＥ」に帰着しないと仮定する）。この例では、格納済みチェックサムＰ６０及び再生成済みチェックサムＰ６０’は一致する。というのは、ＸＯＲ演算中に、Ｄ６０及びＤ６２の両方にあるエラー（Ｓ００＋ｚ６２）は、相殺するからである。
【００９５】
しかし、図１１に例示するように、この問題に対する比較的簡単な解決策がある。ＲＡＩＤ−６方程式の解は、エラー情報だけの関数である。以下では、ＲＡＩＤ−６訂正を試みた後に、未検出エラーの行及びエラー値整列問題をどのように解決することができるかを説明する。
【００９６】
図９の第１の列用の格納済みチェックサムＱ００は、最初は次の通りである。
Ｑ００＝Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０
当該エラーを訂正することを試みるためにＲＡＩＤ−３行が使用された後、この格納済みチェックサムは、次のようになる。
Ｑｍｏｄ００＝Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０＋ｗ０２
＝Ｑ００＋ｗ０２
再生成済みチェックサムは、次の通りである。
Ｑ００’＝Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０＋ｚ０２＋ｚ１２＋ｚ２２            ＋・・＋ｚＦ２
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
Ｓ００＝Ｑｍｏｄ００＋Ｑ００’＝Ｑ００＋ｗ０２＋Ｑ００’
＝ｚ０２＋ｚ１２＋ｚ２２＋・・＋ｚＦ２＋ｗ０２
【００９７】
第３の列上で同じ演算を実行すると、次のようになる。格納済みチェックサムＱ０２は、最初は、次の通りである。
Ｑ０２＝Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋  ＤＦ２
当該エラーを訂正することを試みるためにＲＡＩＤ−３行が使用された後、この格納済みチェックサムは、次のようになる。
Ｑｍｏｄ０２＝Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２＋ｗ０２
＝Ｑ０２＋ｗ０２
再生成済みチェックサムは、次の通りである。
Ｑ０２’＝Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２＋ｚ０２＋ｚ１２＋ｚ２２            ＋・・＋ｚＦ２
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
Ｓ０２＝Ｑｍｏｄ０２＋Ｑ０２’＝  Ｑ０２＋ｗ０２＋Ｑ０２’
＝ｚ０２＋ｚ１２＋ｚ２２＋・・＋ｚＦ２＋ｗ０２
【００９８】
従って、第１及び第３の列の両方におけるＲＡＩＤ−６チェックサム用の解は同じであり、次のようになることが明らかである。
Ｓ００＝Ｓ０２＝ｚ０２＋ｚ１２＋ｚ２２＋・・＋ｚＦ２＋ｗ０２
第２のチェックサムの同様の分析は、次の結果を与える。
【数５】
2010531499.tif 000007
従って、エラーが有効な解であるように見えるものを偶然に生じるならば、これらのエラーは常に行整列し、ＲＡＩＤ−３行チェッキングによっては検出できないであろう。
【００９９】
しかし、図１１に示すように、この整列を防止する簡単な手順がある。４つの定数ａ、ｂ、ｃ、ｄを、それらの全てが互いに等しくない一意的な数で且つゼロでない数として、定義する。第１のＲＡＩＤ−６チェックサムを、
Ｑ００＝Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０
Ｑ０１＝Ｄ０１＋Ｄ１１＋Ｄ２１＋・・＋ＤＦ１
Ｑ０２＝Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２
Ｑ０３＝Ｄ０３＋Ｄ１３＋Ｄ２３＋・・＋ＤＦ３
の代わりに、
Ｑ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）
Ｑ０１＝ｂ＊（Ｄ０１＋Ｄ１１＋Ｄ２１＋・・＋ＤＦ１）
Ｑ０２＝ｃ＊（Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２）
Ｑ０３＝ｄ＊（Ｄ０３＋Ｄ１３＋Ｄ２３＋・・＋ＤＦ３）
であるように修正する。
【０１００】
参考のために、図９の例を再び使用して説明すると、格納済みチェックサムＱ０２は、最初は、次のようになる。
Ｑ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）
当該エラーを訂正することを試みるためにＲＡＩＤ−３行が使用された後、この格納済みチェックサムは、次のようになる。
Ｑｍｏｄ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）＋ｗ０２
＝Ｑ００＋ｗ０２
再生成済みチェックサムは、次の通りである。
Ｑ００’＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０＋ｚ０２＋ｚ１２              ＋ｚ２２＋・・＋ｚＦ２）
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
Ｓ００＝Ｑｍｏｄ００＋Ｑ００’＝Ｑ００＋ｗ０２＋Ｑ００’
＝ａ＊（ｚ０２＋ｚ１２＋ｚ２２＋・・＋ｚＦ２）＋ｗ０２
格納済みデータ値を得るために、これを「ａ」で除算すると、その結果は次の通りである。
Ｓ００／ａ＝ｚ０２＋ｚ１２＋ｚ２２＋・・＋ｚＦ２＋ｗ０２／ａ
【０１０１】
第３の列では、検索される第１のチェックサムは、
Ｑ０２＝Ｗ０２＋ｃ＊（Ｄ０２＋Ｄ１２＋・・＋ＤＦ２）
であり、再生成済みチェックサムは、
Ｑ０２’＝ｃ＊（Ｄ０２＋Ｄ１２＋・・＋ＤＦ２＋Ｚ０２＋Ｚ１２＋・・＋ＺＦ２）
である。従って、
Ｓ０２＝Ｑ０２＋Ｑ０２’＝Ｗ０２＋ｃ＊（Ｚ０２＋Ｚ１２＋・・＋ＺＦ２）
となる。もし、ｗ０２がゼロに等しくなければ、Ｓ０２／ｃ及びＳ００／ａが異なることは明らかである。これは、列１及び列３で行われる単一シンボル訂正が同じ訂正であることを防止する。この方法は、全てのＤＩＭＭ上の第２の冗長チップに格納済みのチェックサムに対し同様の修正を実行することにより、改良することができる。
【０１０２】
第１及び第３の列の両方における第１のＲＡＩＤ−６チェックサム用の解は、同じにならないことが分かる。というのは、Ｗ０２がゼロでない場合、ｗ０２／ａ及びｗ０２／ｃは、等しくないからである。この例では、ＲＡＩＤ−６を介してエラーを訂正する試みは、ＲＡＩＤ−３行チェックサムによって検出可能な、ＤＲＡＭチップＤ６２及びＤ９０内のエラーを有するデータを生成する。
【０１０３】
以下の説明は、オフセットが適用される場合、図８の第１のシナリオ（第３のＤＩＭＭが完全ＤＩＭＭ障害を有すると正しく仮定）が、依然として機能することを示す。前述のように、ＲＡＩＤ−３行方程式は、第３のＤＩＭＭ上のデータを訂正するために、次のように使用される。
Ｄｘ２＝Ｄｘ０＋Ｄｘ１＋Ｄｘ３＋Ｐｘ０
但し、ｘ＝０，１，２，・・，Ｆ
第３のＤＩＭＭ上の消失を訂正するためにＲＡＩＤ−３を使用することを試みる場合、その結果は、右側のエラー・パターンである。Ｄ４０及びＤ４２は、依然としてエラーｅ４０を保持する。再び、当該エラーは、それが同じエラーであるという理由で、ＲＡＩＤ−３行によって検出されない。従って、これらのエラーは、ＲＡＩＤ−３行のＸＯＲ演算中に相殺される。格納済みチェックサムＰ４０を再生成済みチェックサムＰ４０’と比較した結果は、エラーがないことを指示する。しかし、依然として少なくとも１つのエラーがあることが分かっているから、当該アルゴリズムは、前進して、それらのエラーを特定し且つ訂正するためのオフセットを有する修正済みＲＡＩＤ−６列方程式を使用する。
【０１０４】
オフセットを有する修正済みＲＡＩＤ−６方程式は、次の通りである。
Ｑ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）
Ｑ０１＝ｂ＊（Ｄ０１＋Ｄ１１＋Ｄ２１＋・・＋ＤＦ１）
Ｑ０２＝ｃ＊（Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２）
Ｑ０３＝ｄ＊（Ｄ０３＋Ｄ１３＋Ｄ２３＋・・＋ＤＦ３）
格納済みチェックサムＱ００は、最初は、次の通りである。
Ｑ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）
当該エラーを訂正することを試みるためにＲＡＩＤ−３行が使用された後、この格納済みチェックサムは、次のようになる。
Ｑｍｏｄ００＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０）＝  Ｑ００
再生成済みチェックサムは、次の通りである。
Ｑ００’＝ａ＊（Ｄ００＋Ｄ１０＋Ｄ２０＋・・＋ＤＦ０＋ｅ４０）
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
Ｓ００＝Ｑｍｏｄ００＋Ｑ００’＝ａ＊（ｅ４０）
定数「ａ」は、除算を通して除去され、その結果として得られるｅ４０は、オフセットが適用される前に得られた結果と同じである。
【０１０５】
ここで、第３の列上で同じ演算が行われる。  格納済みチェックサムＱ０２は、最初は、次の通りである。
Ｑ０２＝ｃ＊（Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２＋ｅ４０）
当該エラーを訂正することを試みるためにＲＡＩＤ−３行が使用された後、この格納済みチェックサムは、次のようになる。
Ｑｍｏｄ０２＝ｃ＊（Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２）＝  Ｑ０２
再生成済みチェックサムは、次の通りである。
Ｑ０２’＝ｃ＊（Ｄ０２＋Ｄ１２＋Ｄ２２＋・・＋ＤＦ２＋ｅ４０）
この再生成済みチェックサムを格納済みチェックサムと比較すると、その結果は、次の通りである。
Ｓ０２＝Ｑｍｏｄ０２＋Ｑ０２’＝ｃ＊（ｅ４０）
定数「ｃ」は、除算を通して除去され、その結果として得られるｅ４０は、オフセットが適用される前に得られた結果と同じである。従って、オフセットは、両方のケースで正しく機能する。
【０１０６】
図１２は、非常に蓋然性が低いイベント、すなわち一の完全ＤＩＭＭキル（本明細書では「一のＤＩＭＭ障害」とも称する）が、他のＤＩＭＭ上の追加的な２つのＤＲＡＭ装置（本明細書では「ＤＲＡＭチップ」とも称する）エラーと同時に（本明細書では「一致する」とも称する）生じるようなイベントにおいて、何が起こるかを例示する。ここでは、最初に、第３のＤＩＭＭが完全ＤＩＭＭ障害を有すると正しく仮定される。前述のように、ＲＡＩＤ−３行チェックサムを使用することにより消失を訂正する試みがなされると、左側のエラー・パターンが得られる。前述のように、これらのエラーのどちらも、ＲＡＩＤ−３行チェックサム（Ｐｘｙ）で検出することができない。これらのエラーは、ＲＡＩＤ−６列チェックサムで検出可能であるが、各列内に複数のエラーがあるから、ＲＡＩＤ−６は、これらのエラーを特定し且つ訂正することができない。もし、１行当たり１つのエラーがあると仮定し、前述のように、ＲＡＩＤ−６方程式を解く試みがなされるならば、エラーを検出しない可能性は、７％（１８／２５５＝０.０７０６として計算された比較的高い確率）である。列チェックサムに関連するエラーがないので、オフセット乗数は助けにならない。これらのエラーが検出されない場合、解は、行整列し、その問題を検出することを不可能にするであろう。
【０１０７】
実施形態の有効性を改良するために、存在検出（ＤＩＭＭがインストールされたこと及びＤＩＭＭ属性を識別するもの）及び障害ロギングを使用することができる。
【０１０８】
図１３〜図１５は、前述の処理を実行するために実施形態によって実装することができる、典型的なプロセスのフローチャートを示す。このプロセスを実行する機構は、メモリ・コントローラ３０８上に位置する、ソフトウェア及びハードウェアの一方又は両方によって実装することができる。代替実施形態では、前記機構の一部分は、メモリ・コントローラ３０８に置かれ、また前記機構の他の部分は、１つ以上のメモリ・モジュール３０２（例えば、ハブ装置３１２）上に置かれる。この場合、メモリ・コントローラ３０８とメモリ・モジュール３０２の間で、処理を共有することができる。他の代替実施形態では、前記機構の全て又は一部は、ホスト・プロセッサ３１０上に置かれる。
【０１０９】
図１３を参照して説明する。処理は、ブロック１１０２で開始する。ブロック１１０４では、読み取り要求（例えば、主ストア・キャッシュ・ライン読み取り要求）を受け取る。ブロック１１０６では、前記読み取り要求に応答して戻されたデータ内にエラーが存在するか否かを決定する。もし、チェックサム・シンドロームの全てがゼロに等しくなければ、エラーが存在する。エラーが存在しなければ、処理はブロック１１０８で継続し、そこで要求されたデータが要求元に戻される（例えば、正しいデータをキャッシュに転送する）。
【０１１０】
ブロック１１０６で、エラーが存在することを決定すれば、ブロック１１１２で、エラー・シグニチャが単一データ・シンボル・エラー・シグニチャ（例えば、Ｐｘ＝１、Ｑ０ｙ＝１及びＱ１ｙ＝１）であるか否かを決定する。そうであれば、ブロック１１１４で、２次元の３角測量法を使用して、シンボル・エラー位置を特定する。ブロック１１１６では、３角測量法の結果が既知の特定済みの単一シンボル（ＳＤ１）エラーであるか否かを決定する。多重エラーについては、エラー位置を特定する動作は、より大きな確実性で正しいエラー・シグニチャを決定するために使用することができる。そうすると、或る曖昧さに遭遇するような希なイベントについて、検出及び訂正の有効性を改良することができる。ブロック１１１６で決定されるように、３角測量法の結果が既知の特定済みの単一シンボル（ＳＤ１）エラーであれば、処理は、ブロック１１２０で継続する。さもなければ、ブロック１１１８で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック１１２０で継続し、そこでメモリに保存することによりエラー（又は消失）を訂正するために、Ｐｘ０、Ｑ０ｙ又はＱ１ｙチェックサムを使用する。その後、処理は、ブロック１１０８で継続する。
【０１１１】
ブロック１１１２で、エラー・シグニチャが単一データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック１１２２で、当該エラー・シグニチャが１つの行及び１つの列（例えば、Ｐｘ＝１、Ｑ０ｙ＝１又はＱ１ｙ＝１）に影響する、単一チェックサム・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１２４で、２次元の３角測量法を使用して、シンボル・エラー位置を特定する。ブロック１１２６では、３角測量法の結果が既知の特定済みの単一シンボル（ＳＥ１）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１３０で継続する。さもなければ、ブロック１１２８で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック１１３０で継続し、そこでＰｘ０、Ｑ０ｙ又はＱ１ｙチェックサムが再生成され、メモリに書き込まれる。次に、処理は、ブロック１１０８で継続する。
【０１１２】
ブロック１１２２で、エラー・シグニチャが単一チェックサム・エラー・シグニチャでないことを決定すれば、ブロック１１３２で、エラー・シグニチャが２重チェックサム・エラー・シグニチャ（例えば、Ｐｘ＝１及びＱ０ｙ＝１、又はＰｘ及びＱ１ｙ＝１）であるか否かを決定する。そうであれば、ブロック１１３６では、２次元の３角測量法を使用して、シンボル・エラー位置を特定する。ブロック１１３８では、３角測量法の結果が既知の特定済みの２重シンボル（ＳＤ２）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１４２で継続する。さもなければ、ブロック１１４０で、位置及びエラー・タイプを保存することにより、エラーを特定する。次に、処理は、ブロック１１４１で継続し、そこでＰｘ０、Ｑ０ｙ又はＱ１ｙチェックサムが再生成され、メモリに書き込まれる。次に、処理は、ブロック１１０８で継続する。
【０１１３】
ブロック１１３２で、エラー・シグニチャが２重チェックサム・エラー・シグニチャでないことを決定すれば、処理は、図１４のブロック１１３４に進む。図１４のブロック１１４４では、エラー・シグニチャが２つの行及び２つの列（例えば、Ｐｘ＝２及びＱ０ｙ＝２及びＱ１ｙ＝２）に影響する、２重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１４６で、２次元の３角測量法を２回使用して、両方のシンボル・エラー位置を特定する。ブロック１１４８では、３角測量法の結果が両方とも既知の特定済みの単一シンボル（ＳＤ１）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１５２で継続する。さもなければ、ブロック１１５０で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック１１５２では、両方の消失を訂正するためにＰｘ０、Ｑ０ｙ又はＱ１ｙチェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図１３のブロック１１１０で継続する。
【０１１４】
ブロック１１４４で、エラー・シグニチャが２つの行及び２つの列に影響する、２重データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック１１５４で、エラー・シグニチャが１つの行及び２つの列（例えば、Ｐｘ＝１及びＱ０ｙ＝２及びＱ１ｙ＝２）に影響する、２重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１５６で、２次元の３角測量法を２回使用して、両方のシンボル・エラー位置を特定する。ブロック１１５８では、３角測量法の結果が両方とも既知の特定済みの単一シンボル（ＳＤ１）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１６２で継続する。さもなければ、ブロック１１６０で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック１１６２では、両方の消失を訂正するためにＱ０ｙ又はＱ１ｙチェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図１３のブロック１１１０で継続する。
【０１１５】
ブロック１１５４で、エラー・シグニチャが１つの行及び２つの列に影響する、２重データ・シンボル・エラー・シグニチャでないことを決定すれば、ブロック１１６４で、エラー・シグニチャが２つの行及び１つの列（例えば、Ｐｘ＝２及びＱ０ｙ＝１及びＱ１ｙ＝１）に影響する、２重データ・シンボル・エラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１６８で、２次元の３角測量法を２回使用して、両方のシンボル・エラー位置を特定する。ブロック１１７０では、３角測量法の結果が両方とも既知の特定済みの単一シンボル（ＳＤ１）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１７４で継続する。さもなければ、ブロック１１７２で、位置及びエラー・タイプを保存することにより、エラーを特定する。ブロック１１７４では、両方の消失を訂正するためにＰｘ０チェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図１３のブロック１１１０で継続する。
【０１１６】
ブロック１１６４で、エラー・シグニチャが２つの行及び１つの列に影響する、２重データ・シンボル・エラー・シグニチャでないことを決定すれば、図１５のブロック１１６６に進む。図１５のブロック１１７６では、エラー・シグニチャが全ての行及び１つの列（例えば、Ｐｘ＞２及びＱ０ｙ＝１及びＱ１ｙ＝１）に影響する、単一ＤＩＭＭのエラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１７８で、２次元の３角測量法を２回使用して、ＤＩＭＭ位置を特定する。ブロック１１８０では、３角測量法の結果が両方とも既知の特定済みの単一ＤＩＭＭ（ＳＤ５）エラーであるか否かを決定する。そうであれば、処理は、ブロック１１８４で継続する。さもなければ、ブロック１１８２で、位置及びエラー・タイプを保存することにより、ＤＩＭＭを特定する。ブロック１１８４では、両方の消失を訂正するためにＰｙ０チェックサムが使用され、訂正済みのデータがメモリに書き込まれる。次に、処理は、図１３のブロック１１１０で継続する。
【０１１７】
ブロック１１７６で、エラー・シグニチャが全ての行及び１つの列に影響する、単一ＤＩＭＭのエラー・シグニチャではないことを決定すれば、ブロック１１８６で、エラー・シグニチャが全ての行及び２つの列（例えば、Ｐｘ＞２及びＱ０ｙ＝２及びＱ１ｙ＝２）に影響する、単一ＤＩＭＭ及び単一ＤＲＡＭのエラー・シグニチャであるか否かを決定する。そうであれば、ブロック１１９０で、ＤＩＭＭ（Ｄ０ａ，Ｄ１ａ，Ｄ２ａ，・・ＤＦａ，Ｑ０ａ，Ｑ１ａ。但し、Ｑ０ｙ及びＱ１ｙは、ｙ＝ａ，ｂである）に関する障害を仮定して、訂正を試みる。ブロック１１９０〜１１９８によって実行される処理は、図７〜図１２を参照して既に説明した。ブロック１１９２では、Ｑ０ａ、Ｑ１ａ、Ｑ０ｂ及びＱ１ｂ ＲＡＩＤ−６アルゴリズムで特定され且つ訂正される、追加的なシンボル・エラーＤｘａ及びＤｘｂを位置決めする。ブロック１１９３では、全てのシンドロームを再生成し且つそれらが全てゼロでないことをチェックする。
【０１１８】
次に、ブロック１１９４で、ＤＩＭＭ（Ｄ０ｂ，Ｄ１ｂ，Ｄ２ｂ，・・ＤＦｂ，Ｑ０ｂ，Ｑ１ｂ。但し、Ｑ０ｙ及びＱ１ｙは、ｙ＝ａ，ｂである）に関する障害を仮定して、訂正を試みる。ブロック１１９５では、Ｑ０ａ，Ｑ１ａ，Ｑ０ｂ及びＱ１ｂＲＡＩＤ−６アルゴリズムで特定され且つ訂正される、追加的なシンボル・エラーＤｘａ及びＤｘｂを位置決めする。ブロック１１９６では、全てのシンドロームを再生成し且つそれらが全てゼロでないことをチェックする。
【０１１９】
次に、ブロック１１９７では、ＤＩＭＭ ａ又はＤＩＭＭ ｂだけが全ての非ゼロ・シンドロームを生成したか否かを決定する。そうであれば（すなわち、エラーは、ＤＩＭＭ ａ又はＤＩＭＭ ｂの何れかであると決定することができる）、ブロック１１９８で、訂正済みの値をメモリに書き込むことにより、全ての非ゼロ・シンドロームに関連する訂正済みのデータを戻す。次に、処理は、図１３のブロック１１１０で継続する。
【０１２０】
ブロック１１９７で、ＤＩＭＭ ａ及びＤＩＭＭ ｂの両方が全ての非ゼロ・シンドロームを生成したことを決定すれば（すなわち、当該エラーは、ＤＩＭＭ ａ又はＤＩＭＭ ｂの何れかであり得る）、処理は、ブロック１１８８で継続する。また、ブロック１１８６で、エラー・シグニチャが全ての行及び２つの列に影響する、単一ＤＩＭＭ及び単一ＤＲＡＭエラー・シグニチャでなかったことを決定すれば、処理は、ブロック１１８８で継続する。ブロック１１８８では、エラーは、一の訂正不能メモリ・エラーであると決定される。
【０１２１】
図１６は、２次元の３角測量法を実行するために使用することができる、典型的なプロセスのフローチャートを示す。このプロセスは、ブロック１２０２で開始する。ブロック１２０４では、メモリから読み取られたデータから、Ｐｘ０、Ｑ０ｙ又はＱ１ｙチェックサムが再生成され、格納済みチェックサムに追加される。ブロック１２０６では、当該データに関連する全てのチェックサム・シンドロームがゼロ（すなわち、当該データがエラーを有さない）に等しいか否かを決定する。当該データがエラーを有さなければ、処理は、ブロック１２０８で継続し、ブロック１２１０で、「エラーなし」という結果が要求元に戻される。
【０１２２】
ブロック１２０６で、当該データがエラーを保持すると決定すれば、ブロック１２１２で、非ゼロ・シンドロームを有する、Ｐｘ０の全てのｘ及びＱｚｙのｙを識別する。ブロック１２１４では、（例えば、図１７のテーブルを使用して）エラーを、ＳＤ１、ＳＤ２、ＳＤ３、ＳＤ４、ＳＤ５、ＳＤ６、ＳＥ１又はＳＥ２として分類する。ブロック１２１６では、ＳＤ１、ＳＤ２、ＳＤ３及びＳＤ４として分類されたエラーについて、シンボル・エラーの位置を、Ｄｘｙに設定する。ブロック１２１８では、ＳＤ５として分類されたエラーについて、シンボル・エラーの位置を、ＤＩＭＭ  Ｄ０ｙ，Ｄ１ｙ，Ｄ２ｙ，・・Ｄｆｙ，Ｑ０ｙに設定する。ブロック１２２０では、ＳＤ６として分類されたエラーについて、シンボル・エラーの位置を、ＤＩＭＭ  Ｄ０ａ，Ｄ１ａ，Ｄ２ａ，・・Ｄｆａ，Ｑ０ａ，Ｑ１ａか、又はＤ０ｂ，Ｄ１ｂ，Ｄ２ｂ，・・ＤＦｂ，Ｑ０ｂ，Ｑ１ｂの何れかに設定する。但し、ｙ＝ａ，ｂである。ブロック１２２２では、正しいＤＩＭＭ及び一致するシンドロームを推測した後に、追加のシンボル・エラーの位置を、Ｑ０ａ，Ｑ１ａ，Ｑ０ｂ及びＱ１ｂ  ＲＡＩＤ−６アルゴリズムによって特定され且つ訂正されたＤｘａ及びＤｘｂに設定する。その後、処理は、ブロック１２１０で継続する。
【０１２３】
図１７は、図１３〜図１６を参照して説明した処理によって使用される、エラー分類の要約を含む。
【０１２４】
本明細書に開示した処理及び分類は、例示的なものであるに過ぎない。実施形態は、本発明の範囲から逸脱することなく、他の処理及び分類を使用することができる。
【０１２５】
実施形態では、ハブ装置は、分岐接続又は２地点間バス構造（さらに、かかるバス構造は１つ以上の追加のハブ装置に対するカスケード接続を含むことができる）を通して、メモリ・コントローラに接続することができる。メモリ・アクセス要求は、メモリ・コントローラからバス構造（例えば、メモリ・バス）を介して選択されたハブに送信される。ハブ装置は、受信されたメモリ・アクセス要求に応答して、これを変換することにより、ハブ装置からの書き込みデータを格納するか又は読み取りデータをハブ装置に供給するようにメモリ装置を制御する。読み取りデータは１つ以上の通信パケットへ符号化され、メモリ・バスを通してメモリ・コントローラに送信される。
【０１２６】
代替実施形態では、メモリ・コントローラは、これを１つ以上のプロセッサ・チップ及びサポート用論理と統合して、１つ以上のプロセッサ又はサポート用論理を搭載したマルチチップ・キャリア内に含まれる、個別のチップ（一般に「ノースブリッジ」チップと呼ばれるもの）内にパッケージ化するか、又はアプリケーション／環境と最も良く適合する種々の代替形式でパッケージ化することができる。これらの解決策のうち任意のものは、１つ以上のハブ・チップ又はメモリ装置に接続するために、１つ以上の狭い／高速リンクを使用してもよいし、そのようなリンクを使用しなくてもよい。
【０１２７】
メモリ・モジュールは、ＤＩＭＭ、シングル・インライン・メモリ・モジュール（ＳＩＭＭ）又は他のメモリ・モジュール、或いはカード構造を含む、種々の技術によって実装することができる。一般に、ＤＩＭＭは、ランダム・アクセス・メモリ（ＲＡＭ）集積回路又はダイを小さな回路ボードの一方又は両方の表面に備え、信号又は電源ピンを当該回路ボードの両方の表面に備えたものを表す。一方、ＳＩＭＭは、ＲＡＭ集積回路又はダイを小さな回路ボード又は基板の一方又は両方の表面に備え、１つの長いエッジに沿って単一行のピンを備えたものを表す。図１に示すＤＩＭＭは、１６８本のピンを含むが、その後のＤＩＭＭは、１００本〜３００本以上のピンを有するように構成されている。実施形態では、メモリ・モジュールは、２つ以上のハブ装置を含むことができる。
【０１２８】
実施形態では、メモリ・バスは、メモリ・モジュール上のハブ装置に対する分岐接続を使用するか、又は２地点間接続を使用して構築される。下流バスと呼ばれるコントローラ・インタフェースの下流部分（又はメモリ・バス）は、メモリ・モジュール上のハブ装置に送信される、コマンド、アドレス、データ及び他の情報（動作、初期化又はステータス情報）を含むことができる。各ハブ装置は、バイパス回路を介して後続のハブ装置に情報を単に転送したり、情報が下流のハブ装置を目標としていると決定する場合は、情報を受け取り、解釈し、再駆動したり、情報の宛先を決定するために最初にその情報を解釈せずに、その情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。
【０１２９】
上流バスと呼ばれるメモリ・バスの上流部分は、要求された読み取りデータ、エラー、ステータス又は他の動作情報を戻す。この情報は、バイパス回路を介して後続のハブ装置へ転送したり、この情報が上流のハブ装置又はプロセッサ複合体内のメモリ・コントローラを目標としていると決定する場合は、この情報を受け取り、解釈し、再駆動したり、この情報の宛先を決定するために最初にこの情報を解釈せずに、この情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。
【０１３０】
代替実施形態では、２地点間バスは、下流の通信（メモリ・コントローラからメモリ・モジュール上のハブ装置への通信）中にバス情報を１つ以上の可能なハブ装置に供給するとともに、上流の通信（メモリ・モジュール上のハブ装置からメモリ・コントローラへの通信）中にバス情報をしばしば１つ以上の上流ハブ装置を介して供給するための、スイッチ又はバイパス機構を含む。他の実施形態は、当分野では公知のダミー基板（continuity module）を使用することを含み、かかるダミー基板をメモリ・コントローラとカスケード相互接続メモリ・システム内で最初に装着したハブ装置（すなわち、１つ以上のメモリ装置と通信関係にあるハブ装置）との間に配置することができる。このようにすると、メモリ・コントローラと最初に装着したハブ装置との間にある任意の中間ハブ装置位置は、たとえ１つ以上の中間ハブ装置位置がハブ装置を含んでいないとしても、メモリ・コントローラと最初に装着したハブ装置との間を通過する情報を受信することができる。このダミー基板は、任意のバス制限に従うことを条件として、最初の位置（メモリ・コントローラに最も近い位置）、最後の位置（終端点の直前にある位置）又はその中間位置を含む、任意のモジュール位置に設置することができる。マルチモジュール・カスケード相互接続バス構造においてダミー基板を有利に使用するには、メモリ・モジュール上の中間のハブ装置を除去し、当該中間のハブ装置を除去した後にもシステムが継続的に動作するように、当該中間のハブ装置をダミー基板と置き換えるようにするとよい。より一般的な実施形態では、このダミー基板は、その入力から対応する出力まで全ての必要な信号を転送するための相互接続線を含むか、又はリピータ装置を通して再駆動されてもよい。さらに、このダミー基板は、不揮発性ストレージ装置（例えば、ＥＥＰＲＯＭ）を含むことができるが、主メモリ・ストレージ装置を含まないであろう。
【０１３１】
実施形態では、メモリ・システムは、カスケード相互接続メモリ・バスを介してメモリ・コントローラに接続された１つ以上のメモリ・モジュール上に１つ以上のハブ装置を含むが、２地点間バス、分岐接続メモリ・バス又は共用バスのような他のメモリ構造も実装することができる。使用される信号方法、目標動作周波数、スペース、電力、コスト等の制約に依存して、種々の代替バス構造を考慮することができる。２地点間バスは、分岐信号線、スイッチ装置又はスタブを有するバス構造と比較して信号の劣化が少ないという理由で、電気的な相互接続を備えたシステムにおいて最適の性能を提供することができる。しかし、複数の装置又はサブシステムとの通信を必要とするシステム内で使用すると、この方法は、追加のコンポーネントに伴うコスト及びシステム電力の増加に帰着するばかりか、中間のバッファリング又は再駆動を必要とするために潜在的メモリ密度を減少させることがある。
【０１３２】
また、図面には示されていないが、メモリ・モジュール又はハブ装置は、「存在検出」バス、Ｉ２Ｃバス又はＳＭＢｕｓのような、別個のバスを含むことができる。このバスは、（一般に、起動後に）ハブ装置又はメモリ・サブシステムの属性を決定すること、障害又はステータス情報をシステムに報告すること、起動後又は通常の動作中にハブ装置又はメモリ・サブシステムを構成することを含む、１つ以上の目的のために使用される。また、このバスは、そのバス特性に依存して、ハブ装置又はメモリ・モジュールからメモリ・コントローラに対し動作の有効な完了を報告したり、メモリ・コントローラ要求の実行中に生じる障害を識別するための手段を提供することができる。
【０１３３】
２地点間バス構造と同様の性能は、スイッチ装置を追加することによって得ることができる。これらの及び他の解決策は、２地点間バスの特性の多くを維持しつつも、より低い電力で増加したメモリ・パッケージ化密度を提供する。分岐接続バスは、より低い動作周波数に制限されるとはいえ、多くのアプリケーションについては有利なコスト／性能の代替的な解決策を提供する。光バスの解決策は、２地点間又は分岐接続アプリケーションの何れかにおいて、著しく増加した周波数及び帯域幅を許容するが、コストとスペースの点で不利である。
【０１３４】
本明細書では、「バッファ」又は「バッファ装置」という用語は、（コンピュータ内で使用されるような）一時ストレージ・ユニット、特に或るレートで情報を受け取り且つ他のレートでその情報を伝える一時ストレージ・ユニットを表す。実施形態では、バッファは、２つの信号（例えば、変更される電圧レベル又は電流能力）間の両立性を提供する電子装置である。「ハブ」という用語は、「バッファ」という用語と交換可能に使用されることがある。ハブは、他の幾つかの装置に接続される、複数のポートを含む装置である。ポートは、対応するＩ／Ｏ機能性にサービスを提供するインタフェースの一部である（例えば、ポートは、２地点間リンクのうちの１つ又はバスを介してデータ、アドレス及び制御情報を送信及び受信するために利用することができる）。ハブは、幾つかのシステム、サブシステム又はネットワークを互いに接続するための中心の装置とすることができる。受動ハブは、単にメッセージを転送するに過ぎないのに対し、能動ハブ（リピータ）は、データのストリームを増幅及びリフレッシュすることにより、距離とともに増大する減衰を補償する。本明細書では、「ハブ装置」という用語は、メモリ機能を実行するための論理（ハードウェア及び／又はソフトウェア）を含む、ハブ・チップを表す。
【０１３５】
本明細書では、「バス」という用語は、コンピュータ内の２つ以上の機能装置を接続する複数セットの導体（例えば、線及び集積回路内の印刷回路ボードの配線又は接続）のうちの１つを表す。データ・バス、アドレス・バス及び制御バスは、それらの名前に拘わらず、多くの場合に互いに他を必要としているので、全体として単一のバスを構成する。バスは、各々が２つ以上の接続点を有する複数の信号線を含むことがあり、かかる信号線は、２つ以上のトランシーバ、送信機又は受信機を電気的に接続する、主伝送パスを形成する。「バス」という用語とは対照的に、「チャネル」という用語は、メモリ・システム内のメモリ・コントローラに関連づけられるような「ポート」の機能を記述するためにしばしば使用され、１つ以上のバス又は複数セットのバスを含むことがある。「チャネル」という用語は、メモリ・コントローラ上のポートを表す。しかし、この用語は、一般にはＩ／Ｏ又は他の周辺装置と関連して使用され、例えば、プロセッサ又はメモリ・コントローラと１つ以上のメモリ・サブシステムのうちの１つとの間のインタフェースを表すために使用されることが多い。
【０１３６】
本明細書では、「デイジー・チェーン」という用語は、バス結線構造であって、例えば、装置Ａが装置Ｂに接続され、装置Ｂが装置Ｃに接続され、以下同様にして各装置が接続されるようなバス結線構造を表す。一般に、最後の装置は、抵抗器又は終端子に接続される。単純なバスとは対照的に、全ての装置が同一の信号を受信するか、又は各装置は１つ以上の信号を修正してそれらを次の装置に渡すことができる。本明細書では、「カスケード」又は「カスケードは相互接続」という用語は、一連のステージ(装置）又は相互接続されたネットワーキング装置(例えば、ハブ）の集合を表す。これらのハブは、論理的なリピータとして動作し、既存のデータ・ストリーム内にデータをマージすることを可能にする。また、本明細書では、「２地点間バス」又は「リンク」という用語は、各々が１つ以上の終端子を含むことができる、複数の信号線又はそのうちの１つを表す。２地点間バス又はリンクでは、各信号線は、２つのトランシーバ接続点を有し、その各トランシーバ接続点は、送信回路、受信回路又はトランシーバ回路に接続される。「信号線」という用語は、少なくとも１つの論理的な信号を伝送するために使用される１つ以上の導電体又は光回線（optical carrier）を表す。一般に、かかる導電体又は光回線は、単一の回線若しくは２つ以上の回線として、又は対より線、並列若しくは同心円式のものとして構成される。
【０１３７】
一般に、メモリ装置は、主としてメモリ（ストレージ）セルから構成される集積回路として定義され、ＤＲＡＭ（動的ランダム・アクセス・メモリ）、ＳＲＡＭ（静的ランダム・アクセス・メモリ）、ＦｅＲＡＭ（強誘電性ＲＡＭ）、ＭＲＡＭ（磁気ランダム・アクセス・メモリ）、フラッシュ・メモリ、情報を電気的、光学的、磁気的、生物学的又は他の形態で格納する他の形式のランダム・アクセス・メモリ等を含む。動的メモリ装置のタイプには、ＦＰＭ  ＤＲＡＭ（高速ページ・モード動的ランダム・アクセス・メモリ）、ＥＤＯ（拡張データ・アウト）ＤＲＡＭ、ＢＥＤＯ（バーストＥＤＯ）ＤＲＡＭ、ＳＤＲ（シングル・データ・レート）同期ＤＲＡＭ、ＤＤＲ（ダブル・データ・レート）同期ＤＲＡＭ、又はＤＤＲ２、ＤＤＲ３、ＤＤＲ４のような今後期待される後継装置、及びグラフィックスＲＡＭ、ビデオＲＡＭ、ＬＰ  ＲＡＭ（低消費電力ＤＲＡＭ）のような関連する技術のものがあり、これらは、しばしば関連するＤＲＡＭに見られる基本的な機能、特徴又はインタフェースに基づいている。
【０１３８】
メモリ装置は、チップ（ダイ）又は種々のタイプ及び構成を有する単一若しくはマルチチップ・パッケージの形式で使用することができる。マルチチップ・パッケージでは、メモリ装置は、他のメモリ装置、論理チップ、アナログ装置及びプログラム可能な装置のような他のタイプの装置とパッケージ化され、また抵抗器、コンデンサ及び誘導子のような受動装置を含むことができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
【０１３９】
モジュール・サポート装置（バッファ、ハブ、ハブ論理チップ、レジスタ、ＰＬＬ、ＤＬＬ、不揮発性メモリ等を含む）は、技術、電力、スペース、コスト及び他のトレード・オフに基づいて、複数の個別チップ又はコンポーネントから構成することができ、複数の個別チップとして１つ以上の基板上で組み合わせることができ、単一のパッケージ上で組み合わせられることができ、さらには単一デバイス上に統合することもできる。さらに、抵抗器、コンデンサのような種々の受動装置の１つ以上は、技術、電力、スペース、コスト及び他のトレード・オフに基づいて、サポート・チップ・パッケージ上に統合することができ、或いは基板、ボード又は未加工のカード自体へ統合することができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
【０１４０】
メモリ装置、ハブ（バッファ）、レジスタ、クロック装置、受動装置、他のメモリ・サポート装置又はコンポーネントを、メモリ・サブシステム又はハブ装置に接続するためには、電気的、光学的又は代替手段を介して２つ以上の装置間の通信を可能にするための、ハンダ相互接続、導電接着剤、ソケット構造、接触圧及び他の方法を含む種々の方法を使用することができる。
【０１４１】
１つ以上のメモリ・モジュール（又はメモリ・サブシステム）又はハブ装置を、メモリ・システム、プロセッサ複合体、コンピュータ・システム又は他のシステム環境に接続するためには、ハンダ相互接続、コネクタ、接触圧、導電接着剤、光相互接続並びに他の通信及び電力供給方法のうちの１つ以上を使用することができる。コネクタ・システムは、コネクタ（雄型／雌型）、導電性の接触又は雄型若しくは雌型コネクタと接合する１つのキャリア上のピン、光接続、接触圧（しばしば固定機構と協働する）又は種々の他の通信及び電力供給方法の１つ以上を含むことができる。相互接続は、メモリ・アセンブリの１つ以上の端に沿って又はメモリ・サブシステムの端から離れた位置に配置することができる。この配置位置を左右する要素には、アップグレード／修復のしやすさ、使用可能なスペース／ボリューム、熱伝導、コンポーネントのサイズ及び形状、及び他の物理的、電気的、光学的、視覚的／物理的アクセス等の、アプリケーション上の要件がある。メモリ・モジュール上の電気的相互接続を、接点、ピン又はタブと称することが多い。コネクタ上の電気的相互接続は、接点又はピンと称することが多い。
【０１４２】
本明細書では、「メモリ・サブシステム」という用語は、１つ以上のメモリ装置、１つ以上のメモリ装置及び関連するインタフェース又はタイミング／制御回路、又はメモリ・バッファ、ハブ装置又はスイッチと関連する１つ以上のメモリ装置を表すが、これらに限定されない。また、「メモリ・サブシステム」という用語は、１つ以上のメモリ装置と、これに関連するインタフェース又はタイミング／制御回路又はメモリ・バッファ、ハブ装置又はスイッチとを、基板、カード、モジュール又は関係するアセンブリ上に組み立てたものを表すことができる。かかる基板、カード、モジュール又は関係するアセンブリは、メモリ・サブシステムを他の回路と電気的に接続するためのコネクタ又はこれと同様の手段を含むことができる。また、本明細書に開示したメモリ・モジュールは、１つ以上のメモリ装置及びハブ装置を含んでいるので、これをメモリ・サブシステムと称することができる。
【０１４３】
メモリ・サブシステム又はハブ装置に対してローカルに設けることができる追加の補助機能は、書き込み又は読み取りバッファ、１レベル以上のメモリ・キャッシュ、ローカルのプリフェッチ論理、データ暗号化／暗号化解除、圧縮／圧縮解除、プロトコル変換、コマンド優先順位付け論理、電圧又はレベル変換、エラー検出又は訂正回路、データ消し込み、ローカルの省電力回路又は報告、動作又はステータス・レジスタ、初期化回路、性能モニタリング又は制御、１つ以上のコプロセッサ、サーチ・エンジン及び以前に他のメモリ・サブシステムに設けられていた他の機能を含む。或る機能をメモリ・サブシステムに対してローカルに配置すると、当該サブシステム内の未使用の回路をしばしば利用することを通して、この特定の機能に関係する追加の性能を得ることができる。
【０１４４】
メモリ・サブシステムのサポート装置は、メモリ装置が接続されるのと同じ基板又はアセンブリに接続するか、或いは別個のインターポーザ又は基板にマウントすることができる。かかるインターポーザ又は基板は、種々のプラスチック、シリコン、セラミック又は他の材料を使用して製造され、サポート装置をメモリ装置若しくはメモリ又はコンピュータ・システムの他のコンポーネントに機能的に相互接続するための、電気的、光学的又は他の通信パスを含む。
【０１４５】
バス、チャネル、リンク等に沿った情報転送（例えば、パケット）は、多くの信号方法のうち１つ以上を使用して行うことができる。かかる信号方法は、シングル・エンド式、差動式、光学式又は他のアプローチのような方法を含み、電気的な信号方法は、単一又はマルチレベルのアプローチの何れかを使用する、電圧又は電流信号方法のような方法を含む。また、信号は、時間又は周波数、非ゼロ復帰、位相偏移キーイング、振幅変調等の方法を使用して変調することができる。集積回路自体の動作に必要な電源電圧が減少されるのと整合するように（しばしば独立的にではあるが）、電圧レベルは、１．５Ｖ、１．２Ｖ、１Ｖ及びより低い信号電圧に、今後も減少し続けると予想される。
【０１４６】
メモリ・サブシステム及びメモリ・システム内では、グローバル・クロッキング、ソース同期クロッキング、符号化クロッキング又はこれらの方法及び他の方法の組み合わせを含む、１つ以上のクロッキング方法を使用することができる。クロック信号方法は、信号線自体のそれと同一とすることができ、又は計画されたクロック周波数及び種々のサブシステム内の計画されたクロックの数に対し適合するものであれば、前記クロッキング方法のうちの１つ又は他の代替方法を使用することができる。単一のクロックを、メモリを対象とする全ての通信並びにメモリ・サブシステム内の全てのクロック化機能と関連づけることができ、又は前述の１つ以上の方法を使用して複数のクロックを駆動することができる。複数のクロックが使用される場合、メモリ・サブシステム内の機能は、メモリ・サブシステムを一意に駆動する１つのクロックに関連づけることができ、又はメモリ・サブシステムと授受されている情報と関係するクロックに由来する１つのクロック（例えば、符号化クロックに関連するクロック）に基づくことができる。代替的に、１つの一意的なクロックをメモリ・サブシステムに転送される情報のために使用し、別個のクロックを１つ（又はそれ以上）のメモリ・サブシステムから供給される情報のために使用することができる。これらのクロックは、通信又は機能的な周波数と同じ又はその整数倍の周波数で動作することができ、データ、コマンド又はアドレス情報に対しそのエッジ又は中心に整列するか又は他のタイミング位置に整列することができる。
【０１４７】
一般に、メモリ・サブシステムに引き渡される情報は、アドレス、コマンド及びデータ、並びにステータス又はエラー条件を要求又は報告すること、メモリをリセットすること、メモリ又は論理の初期化を完了すること等に関連する他の情報から成るであろう。一般に、メモリ・サブシステムから引き渡される情報は、当該メモリ・サブシステムに引き渡される前記情報の全て又は任意のものを含むことができるが、アドレス及びコマンド情報を含まないであろう。この情報は、通常のメモリ装置インタフェース仕様（一般に並列）と整合する通信方法を使用して通信することができ、「パケット」構造に符号化することができる。かかるパケット構造は、将来のメモリ・インタフェースと整合するか、通信帯域幅を増加させ又は受信情報を受信装置によって必要とされるフォーマットに変換することにより、サブシステムがメモリ技術とは独立的に動作することを可能にするために開発されるものとすることができる。
【０１４８】
メモリ・サブシステムの初期化は、使用可能なインタフェース・バス、所望の初期化速度、使用可能なスペース、コスト／複雑さの目的、サブシステム相互接続構造、この目的及び他の目的のために使用可能な代替プロセッサ（例えば、サービス・プロセッサ）の使用等に基づいて、１つ以上の方法を介して行うことができる。１つの実施形態では、高速バスを使用してメモリ・サブシステムの初期化を行うことができる。一般に、この場合には、先ず、信頼できる通信を確立するためのトレーニング・プロセスを完了し、次に、種々のコンポーネントに関連する属性又は「存在検出」データ又は当該サブシステムに関連する特性を照会し、最後に、適切な装置を当該システム内の意図された動作に関連する情報でプログラムすることが行われる。一般に、カスケード化システムでは、第１のメモリ・サブシステムとの通信が確立された後、一連の後続（下流）サブシステムのうちカスケード相互接続バスに沿った次の位置にあるサブシステムとの通信が順次に確立されるであろう。
【０１４９】
第２の初期化方法は、初期化プロセス中に高速バスを１つの周波数で動作させ、その後の通常動作中に高速バスを他の（例えば、より高い）周波数で動作させるというものである。この実施形態では、より低い周波数の動作に関連するタイミング・マージンが増加することに起因して、各サブシステムの照会又はプログラミングを完了する前に、カスケード相互接続バス上の全てのメモリ・サブシステムとの通信を開始することが可能である。
【０１５０】
第３の初期化方法は、カスケード相互接続バスを通常の周波数で動作させるも、アドレス、コマンド又はデータ転送に関連するサイクルの数を増加させることができる。１つの実施形態では、アドレス、コマンド又はデータ情報の全て又は一部を保持するパケットを、通常の動作中に１つのクロック・サイクルで転送するが、同じ量又はタイプの情報を、初期化中に２サイクル以上にわたって転送することができる。従って、この初期化プロセスは、「通常」のコマンドではなく、「遅い」コマンドの形式を使用する。このモードには、各サブシステムに含まれるＰＯＲ（パワーオン・リセット）論理を介して行われる各サブシステム及びメモリ・コントローラによる起動又は再起動の後の或る時点で、自動的に入ることができる。
【０１５１】
第４の初期化方法は、別個のバスを利用することができる。このバスは、存在検出バス（米国特許第５５１３１３５号を参照）、Ｉ２Ｃバス（ＪＥＤＥＣによって公開された１６８ピンのＤＩＭＭファミリに係る規格である、２１Ｃの改訂版７Ｒ８を参照）又は周知のＳＭＢＵＳ等を含む。このバスは、デイジー・チェーン／カスケード相互接続、分岐接続又は代替構造を介してメモリ・システム内の１つ以上のモジュールに接続することにより、メモリ・サブシステムを照会し、総合的なシステム環境内で動作するように各メモリ・サブシステムをプログラムし、当該システム環境内の所望の又は検出された性能、熱、構成又は他の変更に基づいて、通常のシステム動作中に他の時間における動作特性を調整することができる。
【０１５２】
また、前述の初期化方法に関連して又はこれとは独立に、他の初期化方法を使用することができる。また、前記第４の初期化方法について説明したような別個のバスを使用すると、初期化のための独立の手段を提供することができるという利点に加えて、サブシステムの動作特性をオンザフライで変更することができ、さらに使用度、温度データ、障害情報等のサブシステムの動作情報を報告するか又はこれに応答することができる（米国特許第６３８１６８５号を参照）。
【０１５３】
リソグラフィの改良、よりよいプロセス制御、より低い抵抗値を有する材料の使用、増加したフィールド・サイズ及び他の半導体技術の改良、増加した装置の回路密度（しばしば増加したダイのサイズと軌を一にする）により、集積装置上の機能を増加させたり、以前には別個の装置上に実装されていた機能を統合することが容易になってきた。この統合は、意図された機能の総合的性能を改良するだけでなく、ストレージ密度の増加、電力の減少、スペース要件の減少、コストの低下等を促進するように作用するであろう。この統合は、自然な進化のプロセスであって、システムに関連する基本的なビルディング・ブロックへの構造的変化の必要性に帰着するであろう。
【０１５４】
メモリ・システム又はサブシステムの各要素に関連する通信パス、データ・ストレージの内容及び全ての機能動作の完全性は、１つ以上の障害検出又は訂正方法を使用することによって高度に保証することができる。これらの種々の要素のうちの全部又は任意のものは、ＣＲＣ（巡回冗長符号）、ＥＤＣ（エラー検出及び訂正）、パリティ又は他の符号化／復号化方法のような、この目的に適したエラー検出及び／又は訂正方法を含むことができる。信頼性をさらに拡張するためには、コンピュータ、通信及び関係するシステムにおいて、（情報の転送に関連する間欠的な障害を克服するための）動作の再試行を使用したり、障害のある通信パス又は線を交換するための１つ以上の代替又は交換方法を使用したり、補数化−再補数化技術を使用することができる。
【０１５５】
２地点間リンクのような簡単なバス又は分岐接続構造のような複雑なバス上でバス終端を使用することは、増加した性能要求に対応するためにより多く行われるようになっている。これらの種々の終端方法には、抵抗器、コンデンサ、誘導子又はその任意の組み合わせのような終端装置を、信号線と電源電圧又はアース、終端電圧又は他の信号との間に接続するものがある。終端装置は、受動性又は能動性終端構造の一部とすることができ、１つ以上の信号線に沿った１つ以上の位置に存在するか、又は送信又は受信装置の一部として存在することができる。この終端子は、伝送路のインピーダンスと一致するように選択されるか、又はコスト、スペース、電力等の制約内で、使用可能な周波数、動作マージン及び関連する属性を最大化するような代替アプローチを介して選択することができる。
【０１５６】
技術的な結果及び利点は、一のメモリ装置障害と一致する一のメモリ・モジュール障害の存在下において、メモリ・システムが機能低下なしに動作する能力を含む。これは、メモリ・システムの可用性及び保守性における著しい改良につながることがある。
【０１５７】
前述のように、本発明の実施形態は、コンピュータ実装プロセス及びかかるプロセスを実施するための装置の形式で具体化することができる。また、本発明の実施形態は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ又は他のコンピュータ可読記憶媒体のような有形媒体内に記録された、諸命令を保持するコンピュータ・プログラムの形式で具体化することができる。その場合、かかるコンピュータ・プログラムがコンピュータにロードされ且つ実行される場合、当該コンピュータは、本発明を実施するための装置になる。また、本発明は、ストレージ媒体内に格納され、コンピュータによる実行のために当該コンピュータにロードされ、或いは電気的なケーブル、光ファイバ、電磁放射等の伝送媒体を介して伝送されるコンピュータ・プログラムの形式で具体化することができる。その場合、かかるコンピュータ・プログラムがコンピュータにロードされ且つ実行される場合、当該コンピュータは、本発明を実施するための装置になる。汎用のマイクロプロセッサ上で実装される場合、かかるコンピュータ・プログラムのセグメントは、特定の論理回路を作成するように当該マイクロプロセッサを構成する。
【０１５８】
以上では、実施形態を参照して本発明を説明したが、当業者には明らかなように、本発明の範囲から逸脱することなく、種々の変更を行ったり、実施形態の特定の要素の代わりにその均等手段を使用することができる。
【符号の説明】
【０１５９】
３０２・・・ＤＩＭＭ 
３０４・・・ＤＲＡＭチップ
３０６ａ〜３０６ｅ・・・メモリ・チャネル
３０８・・・メモリ・コントローラ
３１０・・・ホスト・システム
３１２・・・ハブ装置
３１４・・・メモリ・ブロック
３１６・・・メモリ・ノード
【図１】
2010531499.tif 000008
【図２】
2010531499.tif 000009
【図３】
2010531499.tif 000010
【図４】
2010531499.tif 000011
【図５】
2010531499.tif 000012
【図６】
2010531499.tif 000013
【図７】
2010531499.tif 000014
【図８】
2010531499.tif 000015
【図９】
2010531499.tif 000016
【図１０】
2010531499.tif 000017
【図１１】
2010531499.tif 000018
【図１２】
2010531499.tif 000019
【図１３】
2010531499.tif 000020
【図１４】
2010531499.tif 000021
【図１５】
2010531499.tif 000022
【図１６】
2010531499.tif 000023
【図１７】
2010531499.tif 000024
【国際調査報告】
2010531499.tif 000025
2010531499.tif 000026
2010531499.tif 000027