(57)【要約】【課題】メモリ・システムの保守性を改良するための方法及びシステムを提供する。【解決手段】  本方法は、読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作するメモリ・システム内の障害メモリ要素を識別することに係る。本方法は、訂正不能エラー（ＵＥ）に関連するシンドローム・ビット及びアドレスを受信するステップを含む。また、本方法は、以前の訂正可能エラー（ＣＥ）が生じていることに応答して、メモリ装置の位置を指定する前記ＣＥのロケーションを検索するステップと、前記ＣＥの前記ロケーション及び前記ＵＥの前記シンドローム・ビットを入力として使用することにより、メモリ装置の位置を指定する前記ＵＥのロケーションを決定するステップと、前記ＵＥの前記ロケーションに関連する障害メモリ要素を識別するステップとをさらに含む。【選択図】  図８
2008165772.tif 000002
【特許請求の範囲】
【請求項１】
読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作するメモリ・システム内の障害メモリ要素を識別する方法であって、
訂正不能エラー（ＵＥ）に関連するシンドローム・ビット及びアドレスを受信するステップと、
以前の訂正可能エラー（ＣＥ）が生じていることに応答して、
メモリ装置の位置を指定する前記ＣＥのロケーションを検索するステップと、
前記ＣＥの前記ロケーション及び前記ＵＥの前記シンドローム・ビットを入力として使用することにより、メモリ装置の位置を指定する前記ＵＥのロケーションを決定するステップと、
前記ＵＥの前記ロケーションに関連する障害メモリ要素を識別するステップとを含む、方法。
【請求項２】
前記障害メモリ要素がメモリ装置である、請求項１記載の方法。
【請求項３】
前記障害メモリ要素がメモリ・モジュールである、請求項１記載の方法。
【請求項４】
前記ＵＥの前記ロケーションで読み取られたデータを訂正するステップをさらに含む、請求項１記載の方法。
【請求項５】
前記受信するステップ、前記検索するステップ、前記決定するステップ及び前記識別するステップのうちの１つ以上がサービス・プロセッサによって実行される、請求項１記載の方法。
【請求項６】
前記ＣＥの前記ロケーションが不揮発性記憶装置から検索される、請求項１記載の方法。
【請求項７】
前記障害メモリ要素を識別する視覚的な標識を活性化するステップ及び前記障害メモリ要素を指示する報告を生成するステップのうちの１つ以上を実行することをさらに含む、請求項１記載の方法。
【請求項８】
前記ＣＥ及び前記ＵＥの一方又は両方の大きさを決定するステップをさらに含む、請求項１記載の方法。
【請求項９】
前記検索するステップ、前記決定するステップ及び前記識別するステップが、前記ＣＥが前記ＵＥのアドレス・レンジと同じアドレス・レンジで生じていることに応答して実行される、請求項１記載の方法。
【請求項１０】
読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作するメモリ・システム内の障害メモリ要素を識別する方法であって、
訂正不能エラー（ＵＥ）に関連するアドレス並びに当該ＵＥに関係する１つ以上のシンドローム・ビット及び読み取りデータを含むデータを受信するステップと、
以前の訂正可能エラー（ＣＥ）が生じていることに応答して、
前記ＣＥに関係する読み取りデータを検索するステップと、
前記ＣＥに関係する前記読み取りデータ及び前記ＵＥに関係する前記データを入力として使用することにより、障害メモリ要素を識別するステップとを含む、方法。
【請求項１１】
前記障害メモリ要素がメモリ装置及びメモリ・モジュールのうちの１つ以上である、請求項１０記載の方法。
【請求項１２】
前記ＵＥに関係する前記読み取りデータを訂正するステップをさらに含む、請求項１０記載の方法。
【請求項１３】
前記受信するステップ、前記検索するステップ及び前記識別するステップのうちの１つ以上がサービス・プロセッサによって実行される、請求項１０記載の方法。
【請求項１４】
前記ＣＥのロケーションが不揮発性記憶装置から検索される、請求項１０記載の方法。
【請求項１５】
前記障害メモリ要素を識別する視覚的な標識を活性化するステップ及び前記障害メモリ要素を指示する報告を生成するステップのうちの１つ以上を実行することをさらに含む、請求項１０記載の方法。
【請求項１６】
前記検索するステップ及び前記識別するステップが、前記ＣＥが前記ＵＥのアドレス・レンジと同じアドレス・レンジで生じていることに応答して実行される、請求項１０記載の方法。
【請求項１７】
障害メモリ要素を識別するためのメモリ・システムであって、
読み取り要求に応答して一斉に動作する２つ以上のメモリ・モジュールを備え、前記メモリ・モジュールの各々は、１つ以上のメモリ装置を含み、
一のアドレスにおける第１の障害に関連する障害情報を格納するための記憶手段と、
論理を含むプロセッサとをさらに備え、
前記論理が、
訂正不能エラー（ＵＥ）に関連するシンドローム・ビット及びアドレスを受信し、
以前の訂正可能エラー（ＣＥ）が生じていることに応答して、
メモリ装置の位置を指定する前記ＣＥのロケーションを検索し、
前記ＣＥの前記ロケーション及び前記ＵＥの前記シンドローム・ビットを入力として使用することにより、メモリ装置の位置を指定する前記ＵＥのロケーションを決定し、
前記ＵＥの前記ロケーションに関連する障害メモリ要素を識別するように構成されている、メモリ・システム。
【請求項１８】
前記検索する動作、前記決定する動作及び前記識別する動作が、前記ＣＥが前記ＵＥのアドレス・レンジと同じアドレス・レンジで生じていることに応答して実行される、請求項１７記載のメモリ・システム。
【請求項１９】
前記論理がハードウェア及びソフトウェアのうちの１つ以上で実装される、 請求項１７記載のメモリ・システム。
【請求項２０】
前記論理が前記ＵＥの前記ロケーションで読み取られたデータを訂正する動作をさらに実行するように構成されている、請求項１７記載のメモリ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに係り、さらに詳細に説明すれば、障害のあるメモリ部品の存在下でメモリ・システムの保守性を改良することに係る。
【背景技術】
【０００２】
一般に、最近の高性能コンピュータ用の主メモリ・システムは、１つ以上のメモリ制御要素を介して１つ以上のプロセッサに接続された、１つ以上の動的ランダム・アクセス・メモリ（ＤＲＡＭ）装置から成る。コンピュータ・システムの総合性能は、プロセッサの性能／構造、メモリ・キャッシュ、入出力（Ｉ／Ｏ）サブシステム、メモリ制御機能の効率、主メモリ装置、メモリ相互接続インタフェースのタイプ及び構造、当該システムの１つ以上の要素に関連する任意の障害検出／訂正機能のタイプ及び効率を含む、コンピュータ構造の重要な各要素によって影響される。
【０００３】
図１は、米国特許第５５１３１３５号に開示されている、初期の同期メモリ・モジュールを示す。図１に示されているメモリ・モジュールは、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）である。このモジュールは、高性能動作を促進するために、同期ＤＲＡＭ  １０８、バッファ装置１１２、最適化されたピン配置、及び相互接続兼容量性減結合方法から成る。さらに、この特許は、位相ロック・ループ（ＰＬＬ）のような装置を使用して、モジュール上でクロックを再駆動することを記述する。
【０００４】
図２は、米国特許第６１７３３８２号に開示されている、コンピュータ・システム２１０を示す。その同期メモリ・モジュール２２０は、バス２４０を介してメモリ・コントローラ２１４に直接に（２地点間）接続され、また（特定用途向け集積回路又は「ＡＳＩＣ」のような）論理回路２２４は、メモリ・コントローラ２１４から受信されるアドレス、データ及び制御情報をバッファし、登録し、又はこれらの情報に作用する。メモリ・モジュール２２０は、メモリ初期化プロセスの一部として又は通常の動作中に、集積回路間（Ｉ２Ｃ）制御バス２３４のような独立バスを介して、複数の選択可能又はプログラム可能なモードで動作するようにプログラムすることができる。この特許によれば、メモリ・コントローラ２１４に直接に接続された複数のメモリ・モジュールを必要とするアプリケーションで利用される場合、モジュールを前記バスから電気的に分離するための電界効果トランジスタ（ＦＥＴ）スイッチを使用することにより、結果的なスタブを最小化することができると説明されている。
【０００５】
さらに、前掲の米国特許第５５１３１３５号及び米国特許第６１７３３８２号は、定義された全ての機能（アドレス、コマンド、データ、プレゼンス・ディテクト等）を単一の装置へ統合する能力を説明する。これらの機能を統合することは、技術の改良によって可能になる当該分野における一般的な慣行であって、追加的なモジュール密度又は機能性を可能にする。
【０００６】
当該分野において広範な研究開発努力が継続的に行われている１つの目標は、メモリ・システム／サブシステムの設計又は構造を改良することによって総合的なシステム性能及び密度を最大化するための、改良された革新的な解決策を提供することである。高可用性及び最小の故障時間に対する必要性は、システムの総合的な信頼性に関係するさらなる挑戦を与える。というのは、顧客が新しいコンピュータ・システムに期待するのは、平均故障間隔（ＭＴＢＦ）の点で既存のシステムを著しく超えるということだけでなく、追加の機能、向上した性能、増加した記憶装置、より低い運用コスト等をも含んでいるからである。
【０００７】
【特許文献１】米国特許第５５１３１３５号明細書
【特許文献２】米国特許第６１７３３８２号明細書
【特許文献３】米国特許第６５１０１００号明細書
【特許文献４】米国特許第６５８７９１２号明細書
【特許文献５】米国特許第６３８１６８５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来は、強化されたエラー訂正技術を使用することが、ＭＴＢＦを改良する主要な要因であった。しかしながら、（一般に、６４バイト、１２８バイト又はそれ以上の）キャッシュ・ライン・アクセスにサービスするために並列にアクセスされる（２つ、４つ又はそれ以上の）モジュールのクラスタ内にある単障害モジュールを識別することが、ますます困難になってきた。このことが特に当てはまるのは、ＥＣＣ論理（ＥＣＣ回路、ＥＣＣ機能又はＥＣＣ構造）によってエラーが「訂正不能」として識別されるような場合である。制限された量の障害データ（特に、訂正不能エラーが修復アクションに帰着した場合）及びシステムを速やかにオンラインにするという必要性を仮定すると、定期的又は不定期的な修復アクション中に、明白なメモリ・システム障害に応答して１つより多いメモリ・モジュールを除去することが一般的である。不必要に交換される機能的モジュールの数を減少させるためには、特定の障害メモリ・モジュールを速やかに且つ正確に識別する能力を有することが望ましい。
【課題を解決するための手段】
【０００９】
本発明の第１の側面に従って、読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作するメモリ・システム内の障害メモリ要素を識別する方法が提供される。この方法は、訂正不能エラー（ＵＥ）に関連するシンドローム・ビット及びアドレスを受信することを含む。以前の訂正可能エラー（ＣＥ）が生じていることに応答して、当該ＣＥのロケーションが検索される。前記ＣＥの前記ロケーションは、前記ＣＥのメモリ装置の位置を指定するものである。前記ＣＥの前記ロケーション及び前記ＵＥの前記シンドローム・ビットを入力として使用することにより、前記ＵＥのロケーションが決定される。前記ＵＥの前記ロケーションは、メモリ装置の位置を指定するものである。前記ＵＥの前記ロケーションに関連する障害メモリ要素が識別される。
【００１０】
本発明の第２の側面に従って、読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作するメモリ・システム内の障害メモリ要素を識別する方法が提供される。この方法は、訂正不能エラー（ＵＥ）に関連するアドレス並びに当該ＵＥに関係する１つ以上のシンドローム・ビット及び読み取りデータを含むデータを受信することを含む。以前の訂正可能エラー（ＣＥ）が生じていることに応答して、当該ＣＥに関係するデータが検索される。前記ＣＥに関係する前記データ及び前記ＵＥに関係する前記データを入力として使用することにより、前記障害メモリ要素が識別される。 
【００１１】
本発明の第３の側面に従って、障害メモリ要素を識別するためのメモリ・システムが提供される。このメモリ・システムは、２つ以上のメモリ・モジュールと、記憶手段と、論理を含むプロセッサとを備える。前記メモリ・モジュールの各々は、１つ以上のメモリ装置を含む。また、前記メモリ・モジュールのうちの少なくとも２つは、読み取り要求に応答して一斉に動作する。前記記憶手段は、一のアドレスにおける第１の障害に関連する障害情報を格納する。前記論理は、訂正不能エラー（ＵＥ）に関連するシンドローム・ビット及びアドレスを受信する。以前の訂正可能エラー（ＣＥ）が生じていることに応答して、当該ＣＥのロケーションが検索される。前記ＣＥの前記ロケーションは、前記ＣＥのメモリ装置の位置を指定するものである。前記ＣＥの前記ロケーション及び前記ＵＥの前記シンドローム・ビットを入力として使用することにより、前記ＵＥのロケーションが決定される。前記ＵＥの前記ロケーションは、メモリ装置の位置を指定するものである。前記ＵＥの前記ロケーションに関連する障害メモリ要素が識別される。
【発明を実施するための最良の形態】
【００１２】
本発明の代表的実施形態（以下「実施形態」と略記）は、メモリ・システム内で障害が生じる場合に交換すべきメモリ・モジュールの数を減少させるために、メモリ・システム内の特定の障害メモリ・モジュールを識別することを支援する。第１の訂正可能バイト・エラーのロケーション情報は、第２の訂正不能バイト・エラーのロケーションを検出するために利用される。実施形態では、第２のエラーのロケーションは、障害のあるメモリ要素（例えば、メモリ・モジュール又はメモリ装置）を識別するために利用される。さらに、第２のバイト・エラーを訂正すると、メモリ・システムは、生産又は診断目的のためにその実行を継続することができる。
【００１３】
最先端コンピュータ・システムのうちの或るものは、１バイト・エラー訂正、２バイト・エラー検出用のリード・ソロモン符号（又はそれと同等の符号）を使用して、データを符号化している。この符号を使用すると、システムは、単一ビット障害から回復することができるばかりか、この符号が（例えば、如何なるメモリ・チップ障害も高々１バイトに影響するように）適切に適用される場合には、ＤＲＡＭメモリ・チップ全体まで影響するような障害からも回復することができる。訂正される第１のエラーは、訂正可能エラー（ＣＥ）と呼ばれる。メモリ・チップ障害の種類は、大規模な障害（例えば、「チップ・キル」）を含み、より一般的には、Ｉ／Ｏドライバ／レシーバ障害、コネクタ障害等によって引き起こされる、個々のＩ／Ｏレーンの障害を含む。
【００１４】
前述のリード・ソロモン符号を使用している環境で、第２のエラーが生じる場合、この符号（現に利用されているもの）は、このエラーを訂正することができず、訂正不能エラー（ＵＥ）信号を生成する。ＵＥが生じる場合の通常のポリシは、システムの実行を停止させるというものである。しかしながら、２つのエラー（すなわち、ＣＥ及びＵＥ）が最初に同時に生じるというケースは、まれである。むしろ、或るアドレスで第１の障害（例えば、単一ビット障害、Ｉ／Ｏ障害、チップ・キル等）が生じ、その直後の時間に、同じＥＣＣワード内の異なるビット、バイト又はバイト部分に影響する、第２の障害が生じるというケースの方が比較的多い。この場合、第１の障害と第２の障害との間の時間に、当該アドレスに関連するデータに対する追加的なアクセス（例えば、プロセッサによって要求されたアクセス、消し込み機構に起因するアクセス等）を行うと、第１の障害及びロケーションと一致する永続的エラーに帰着するであろう。
【００１５】
図３〜図５は、実施形態が適用される、通常のメモリ構造を例示する。
【００１６】
図３は、米国特許第６５１０１００号に開示されている、通常の分岐型スタブ・バス上に最大４つのレジスタードＤＩＭＭ  ３４０を含むメモリ・システム３１０を示す。そのサブシステムは、メモリ・コントローラ３２０、外部クロック・バッファ３３０、レジスタードＤＩＭＭ  ３４０、アドレス・バス３５０、制御バス３６０、データ・バス３７０、アドレス・バス３５０及びデータ・バス３７０上の終端子３９５を含む。図３には、単一のメモリ・チャネルだけが示されているが、これらのモジュールから構成されるシステムは、メモリ・コントローラ３２０からの複数の個別メモリ・チャネルを含むのが一般的である。その場合、これらのメモリ・チャネルの各々は、所望のシステム機能性又は性能を達成するために、（単一のチャネルに複数のモジュールが装着されているときは）単独で動作されるか、又は（複数のチャネルに複数のモジュールが装着されているときは）並列に動作される。通常のレジスタードＤＩＭＭを使用すると、各メモリ・チャネルから７２ビットのデータ・バス幅が利用可能になる。図３には、単一のメモリ・チャネルだけが示されているが、メモリ・システムは、図示のタイプのメモリ・チャネルを２つ、４つ又はそれ以上有するのが普通であり、この場合には、キャッシュ・ライン動作に応答して３２、６４又は１２８バイト以上のデータを転送する。さらに、各ＤＩＭＭ ３４０（メモリ・モジュール）は、一般に７２ビットのデータを保持し、メモリ・コントローラ３２０内に設けられたＥＣＣ論理を使用することにより、殆どのデータ・エラーを訂正することができる。
【００１７】
図４は、米国特許第６５８７９１２号に開示されている、同期メモリ・モジュール４１０及びシステム構造を示す。そのリピータ・ハブ４２０は、バス４２１及び４２２を介して、ローカルに再駆動したアドレス、コマンド及びデータをローカル・メモリ装置４０１及び４０２に供給する。ローカル・クロックの生成は、この特許の他の図面及び関連する本文で説明されているようにして行われ、そして適切なメモリ・インタフェース信号を再駆動してシステム内の次のモジュール又はコンポーネントに供給することは、バス４００を介して行われる。
【００１８】
図５は、１つ以上のプロセッサ要素及び統合メモリ・コントローラ５１０を含む、集積化プロセッサ・チップ５００から成るメモリ・システムを示す。図５に示す構成では、複数の独立したカスケード相互接続メモリ・バス５０６は、並列バス及び関連する装置を横切って分配又は「ストライプ」されるデータ及びエラー検出／訂正情報に対する高帯域幅の単一の独立アクセス要求をサポートすることを目的として、一斉に動作するように論理的に互いに集合化される。メモリ・コントローラ５１０は、４つの狭く且つ高速の２地点間メモリ・バス５０６に接続され、当該バス５０６の各々は、メモリ・コントローラ５１０の幾つかの固有のインタフェース・チャネルのうちの１つを、少なくともハブ装置５０４及び１つ以上のメモリ装置５０９（ＤＲＡＭ）を含む、カスケード相互接続メモリ・サブシステム５０３に接続する。最近の同期メモリ装置を使用すると、メモリ・コントローラ５１０によって開始されるアクセスは、一般に１２８バイトのデータ（８バイトのＤＩＭＭ幅×一斉に動作する ４ ＤＩＭＭ×選択された各ＤＲＡＭからの４ビット・バースト）の転送に帰着する。
【００１９】
通常のバッファードＤＩＭＭを使用すると、（例えば、８ビット幅の９個のメモリ装置５０９をアクセスするか、又は４ビット幅の１８個のメモリ装置５０９をアクセスすることによって）各ＤＩＭＭ上で７２ビットのデータ・バス幅が利用可能となり、その結果、ＥＣＣ論理を使用して殆どのデータ・エラーを識別し且つ訂正することが可能になる。図３及び図４と同様に、図５のＥＣＣ論理は、一般にメモリ・コントローラ５１０内に設けられ、検査ビット生成及び後続のエラー検出／訂正を含む。
【００２０】
前述のように、最近のメモリのＥＣＣ論理は、メモリ・コントローラ内に設けることができるが、かかるＥＣＣ論理をメモリ・コントローラの外部にある他のシステム要素（例えば、プロセッサ自体、メモリ・ハブ、レジスタ、バッファ又はメモリ・コントローラとメモリ装置との間の他のメモリ・インタフェース装置、メモリ装置自体）の内部に設けることもできる。
【００２１】
図６は、実施形態を実装するために利用することができる、メモリ・システムのブロック図を示す。このメモリ・システムは、１つ以上のプロセッサ要素及び統合メモリ・コントローラ６１０を含む、集積化プロセッサ・チップ６００から成る。図６に示す構成では、複数の独立したカスケード相互接続メモリ・バス６０６は、並列バス及び関連する装置を横切って分配又は「ストライプ」されるデータ及びエラー検出／訂正情報に対する高帯域幅の単一の独立アクセス要求をサポートすることを目的として、一斉に動作するように論理的に互いに集合化される。メモリ・コントローラ６１０は、４つの狭く且つ高速の２地点間メモリ・バス６０６に接続され、当該バス６０６の各々は、メモリ・コントローラ６１０の幾つかの固有のインタフェース・チャネルのうちの１つを、少なくともハブ装置６０４及び１つ以上のメモリ装置６０９（ＤＲＡＭ）を含む、カスケード相互接続メモリ・サブシステム６０３に接続する。
【００２２】
図６のメモリ・システムは、図５のメモリ・システムと同様のものであるが、サービス・プロセッサ６１２、エラーに関する情報（例えば、それらのアドレス、それらのロケーション、検索されたデータ及びシンドローム・ビット）を格納するための不揮発性記憶装置（ＮＶＳ）６１４及びＥＣＣ論理６１６を追加的に備えている点が異なる。図６に示す実施形態では、（例えば、図８を参照して後述する）ＵＥ処理の部分は、メモリ・コントローラ６１０のＥＣＣ論理６１６内に設けられ、ＵＥ処理の他の部分は、サービス・プロセッサ６１２内に設けられる。統合プロセッサ・チップ６００の外部にあるサービス・プロセッサ６１２を利用することの利点は、統合プロセッサ・チップ６００が動作不能であっても、サービス・プロセッサ６１２を利用してエラー診断を行うことができるということにある。同様に、メモリ・コントローラ６１０の外部にあるサービス・プロセッサ６１２を利用することの利点は、メモリ・コントローラ６１０が動作不能であっても、サービス・プロセッサ６１２を利用してエラー診断を行うことができるということにある。さらに、エラーに関する情報を格納するためにＮＶＳ ６１４を使用することの利点は、メモリ・コントローラ６１０又はサービス・プロセッサ６１２が動作不能であっても、ＮＶＳ ６１４がアクセス可能であるということにある。
【００２３】
図７は、実施形態を実装するために利用することができる、カスケード化メモリ・モジュール及び単方向バスを有するメモリ構造を示す。図７は、メモリ・コントローラ６１０の外部にサービス・プロセッサ６１２及びＮＶＳ ６１４を設けた、図６の他の表示である。本明細書で説明する例では、現在のメモリ・システムについて一般的であるように、キャッシュ・ラインは１２８バイトである。しかしながら、この数は、実施形態の範囲から逸脱することなく、変更することができる。 図７のメモリ・システムは、１つだけのメモリ・モジュール７０２を含むに過ぎないが、オプションとして、このモジュール７０２に対し、（例えば、図６に示すように）１つ以上の追加のモジュールをカスケード相互接続することができる。他の実施形態は、１ランクだけのメモリ・モジュールを含むか、又は必要とされるライン・サイズ（例えば、３２、６４、１２８、２５６バイト等）を最適な態様で提供するのに必要なメモリ・モジュールの他の組み合わせを含むことができる。
【００２４】
図７に示すように、メモリ・コントローラ６１０は、４つの狭く且つ高速の２地点間メモリ・バス６０６ａ〜６０６ｄに接続され、当該バス６０６の各々は、メモリ・コントローラ６１０の幾つかの固有のインタフェース・チャネルのうちの１つを、メモリ・モジュール７０２ａ〜７０２ｄの各々に接続する。図７の実施形態では、メモリ・モジュール７０２の各々は、１つ以上のメモリ装置５０９を含み、当該メモリ装置５０９の各々は、８つのデータ入力／出力（Ｉ／Ｏ）レーンを有し、バースト長４で動作する。このバースト長は、選択されたメモリ装置５０９の各々がメモリ装置５０９への所定のアクセス中にＩ／Ｏレーンを通して（メモリ・バス６０６を介して）処理する（例えば、読み取り又は書き込み）データ・ビート（例えば、順次データ転送）の数である。実施形態では、１２８バイトのキャッシュ・ラインをサービスするために、合計３２個のメモリ装置５０９が必要である。一般に、図７に示すように、メモリ・モジュール７０２内の８つのメモリ装置５０９ごとに、９番目のメモリ装置５０９が追加される。すなわち、図７に示す例では、４つのメモリ・モジュール７０２を横切って合計４つのメモリ装置５０９が追加されることになる。実施形態では、４つの追加メモリ装置５０９のうちの１つは、予備のメモリ装置５０９として指定され、他の３つの追加メモリ装置５０９は、ＥＣＣ情報を格納するために利用される。
【００２５】
追加の３冗長バイトを有する３２バイトのデータを保護するリード・ソロモン符号は、各メモリ装置のデータ・ビートに適用される。この符号は、任意の１バイト・エラーを訂正し、任意の２バイト・エラーを検出することができる。２バイト・エラーが生じる場合、両方のエラーのロケーションが既知であれば、このリード・ソロモン符号を利用することにより、両方のエラーを訂正することができる。図７のメモリ・システムでは、４つのメモリ・モジュール７０２のうちの１つのメモリ・モジュール７０２にある任意のメモリ装置５０９上で１バイト以内のエラーを識別し且つ訂正することができる。実施形態は、１バイトまでのデータに影響する、第２のエラー（例えば、チップ・キル）のロケーションを決定することに向けられる。一旦第２のエラーのロケーションが決定されると、第２のエラーを訂正するか、又は第２のエラーのロケーションを報告することができる。後者の報告は、どのメモリ要素（例えば、メモリ装置５０９、メモリ・サブシステム６０３、メモリ・モジュール７０２等）に障害があるか、そしてメモリ・システム内のエラーを訂正するために、どの交換可能な要素（例えば、メモリ・モジュール、メモリ・カード等）を交換すべきか、を決定するために使用することができる。
【００２６】
実施形態では、各メモリ装置５０９は、当該メモリ装置５０９のロケーション（従って、そのエラー・ロケーション）を指定するために、図７の左端にあるメモリ装置５０９から順に通し番号１〜３６を付与される。すなわち、メモリ・モジュール７０２ａ内の９個のメモリ装置５０９には、通し番号１〜９が付与され、メモリ・モジュール７０２ｂ内の９個のメモリ装置５０９には、通し番号１０〜１８が付与され、メモリ・モジュール７０２ｃ内の９個のメモリ装置５０９には、通し番号１９〜２７が付与され、メモリ・モジュール７０２ｄ内の９個のメモリ装置５０９には、通し番号２８〜３６が付与される。従って、エラーがロケーション２０内にあれば、このエラーは、メモリ・モジュール７０２ｃ内の左から２番目にあるメモリ装置５０９に関連する。かかるメモリ装置のロケーション（位置）を使用すると、これに対応する障害メモリ要素（例えば、メモリ・モジュール７０２ｃ）を交換のために識別することができる。さらに、この障害ロケーション情報は、修復のために障害モジュールを返す場合に、障害モジュールに加えて、そのメモリ装置の障害ロケーションを含めることにより、障害モジュールのその後の修復を容易にすることができる。他の実施形態では、９個以上又は９個以下のメモリ装置を（例えば、１８、３６又は７２個のメモリ装置を有する）メモリ・モジュール７０２にインストールするとともに、障害ビット又は障害バイトのロケーションを使用することにより、障害モジュールを識別することができる（例えば、８ビット幅のメモリ装置を１８個有するメモリ・モジュール７０２ｃの場合、７２ビットのモジュール・データ幅を横切る４番目の８ビット・グループに対しエラーが関係付けられる）。複数ランクのメモリ・モジュールでは、各メモリ・モジュールが前述のように８ビット幅のメモリ装置を１８個有するものとすれば、障害のアドレスは、障害のあるメモリ装置のランクを識別するであろう。
【００２７】
メモリ・モジュールの構成（例えば、メモリ装置の数、メモリ装置のデータ幅、モジュール密度等）は、システム初期化中に決定され、その時点で、プロセッサ、サービス・プロセッサ、メモリ・コントローラ又は他の制御要素は、一般にＩＩＣ又はこれと同様のインタフェース・バスを介して、メモリ・モジュールにインストールされた不揮発性記憶装置（例えば、シリアル・プレゼンス・ディテクト、すなわちＳＰＤ ＥＥＰＲＯＭ）に対する照会を行う。一旦メモリ・サブシステムの構造が決定されると、メモリ・インタフェースは、（例えば、バス６０６を介する）高速通信を許容するように初期化され、そして通常のシステム動作に先立って、他の初期化及び確認動作が行われる。これらの後続ステップの間、ＥＣＣ論理６１６及び不揮発性記憶装置６１４は、モジュール照会プロセス中に決定されたメモリ装置及びモジュール情報に基づいて、障害メモリ装置又は障害モジュールの正確な識別を許容するように構成することができる。
【００２８】
実施形態では、第１のＣＥ又は第２のＵＥが標準のＥＣＣ処理（例えば、最近のメモリ・システムによって既に行われている、２重エラーの存在を検出し且つ単一エラーを訂正するための標準のＥＣＣ復号器）によって検出される場合、これらのエラーに関する情報は、サービス・プロセッサ６１２のような第２のシステムによってアクセス可能な記憶媒体（例えばＮＶＳ ６１４）内に格納される。実施形態では、第２のシステムは、第２のＵＥを検出するためのアルゴリズムを実装する、ソフトウェア又はハードウェア・ツールを通して、前記情報を分析する。他の実施形態は、この分析を行うために、プロセッサ、メモリ・コントローラ、外部の処理装置、他の処理手段又は分析手段を使用することができる。第２のＵＥに寄与する障害のロケーションを決定するためには、第２のＵＥは、メモリ・アクセス中にＣＥが以前にログされたアドレスで生じなければならない。第２のシステムが必要とする最小の情報は、第２のＵＥについて読み取られたデータのシンドローム及び（永続的な）第１のＣＥのロケーションである。第２のＵＥのシンドロームは、ＥＣＣパリティ検査行列（通常は「Ｈ」と表記）と、受信済みのデータ・ベクトル（通常は、「ｃ」と表記。ｃは列ベクトルである）とを乗算することにより得られる。この乗算は、ｓ＝Ｈｃとして表現することができる。第２のＵＥのロケーションを得るために第２のシステム上のソフトウェア・ツールが必要とする全ての情報は、第２のＵＥのシンドローム及び第１のＣＥのロケーションであるが、第１のＣＥ及び第２のＵＥの大きさ（magnitude）があれば、なお望ましい。代替的に、前記シンドロームの代わりに又はそれに加えて、第２のＵＥ及び第１のＣＥが生じるときに読み取られる実際のデータを格納することができる。このようにすると、第２のシステム上のソフトウェア・ツールは、障害の性質（例えば、Ｉ／Ｏレーンが、その入力値に拘わらず、常に「１」ビットを出力するというもの）を決定することができる。この情報は、例えば、障害の統計を収集するためにも使用することができる。
【００２９】
図８は、実施形態によって実装することができる、ＵＥ（例えば、第２のバイト・エラー）のロケーションを識別するためのプロセスを示すフローチャートである。図８は、読み取り要求に応答して２つ以上のメモリ・モジュールが一斉に動作する場合に、メモリ・システム（例えば、図５〜図７及び図９を参照）内の障害メモリ要素（例えば、メモリ装置又はメモリ・モジュール）を識別するための代表的なプロセスを示す。ブロック８０２では、特定の記憶ロケーションに対するアクセスが行われるときに、エラーが検出される。実施形態では、このエラーは、標準のＥＣＣ処理によって検出される。ブロック８０４で決定されるように、このエラーがＣＥであれば、ブロック８０６で、当該ＣＥのロケーションを決定し且つ当該ＣＥを訂正するために、標準のＥＣＣ ＣＥ処理が実行される。実施形態では、ブロック８０６の処理は、メモリ・コントローラ内にある標準のＥＣＣ処理によって実行される。次に、ブロック８０８では、ＣＥのアドレス及びロケーションが格納される。実施形態では、この情報は、メモリ・コントローラ６１０が動作不能であってもアクセスできるように、ＮＶＳ ６１４内に格納される。他の実施形態では、一意的な各障害の単一のコピーだけが格納され、そして一意的な各障害ごとにエラー・カウントが（予め定義した最大カウントまで）コンパイルされる。このエラー・カウントは、ＣＥが永続的エラーであることを確認するために使用することができる。
【００３０】
ブロック８０４で決定されるように、このエラーがＵＥであれば、ブロック８１０で、当該ＵＥのアドレス及びシンドローム・ビットが、例えばＮＶＳ ６１４内に格納される。ブロック８１２では、ＣＥが以前に生じているか否かを決定するための検査が行われる。ＣＥが以前に生じていなければ、ブロック８１４で、標準のＵＥ処理を実行する。実施形態では、これはメモリ・コントローラ内にある標準のＥＣＣ処理によって行われ、その結果、メモリ・システムの動作が停止されることがある。図８のプロセスは、２重エラーが生じる場合には、そのうちの１つのエラーがチップ・キルに由来するという可能性がかなりあるという点で、チップ・キル状況で利用することができる。他方、現在のＵＥと同じアドレスでＣＥが以前に生じている場合にのみ、当該以前のＣＥのロケーションを使用して当該ＣＥにおけるエラーのロケーションを予測するように、アルゴリズムを制限することができる。より一般化して云えば、ＵＥと同じアドレス・レンジでＣＥが以前に生じていれば、このアドレス・レンジ内のＣＥのロケーションを使用することにより、当該ＵＥに関係していそうなチップを予測する可能性を考慮に入れる、ということである。チップ・キルの第１の例では、アドレス・レンジは、チップ全体にわたるアドレス・レンジと等しい。第２の例では、アドレス・レンジは、単一のアドレスから成る。本発明を異なる故障メカニズムに適応させるためには、アドレス・レンジを選択するための他の可能性が存在する。
【００３１】
ＣＥが以前に生じていれば、ブロック８１６で、ＵＥに関連する障害メモリ要素を決定する。実施形態では、この処理は、ＵＥのシンドローム・ビット及び以前のＣＥのロケーションを使用して行われる。実施形態では、この処理は、ＵＥに寄与するエラーのうちの１つのためのロケーション（例えば、ビット・ロケーション又はバイト・ロケーション）が、ＣＥのためのエラーのロケーションと同じであると仮定して行われる。実施形態では、このロケーションは、一のメモリ・モジュール上にある一のメモリ装置の一の位置を指定する。代替実施形態では、ＵＥのロケーションを決定するために、後述の如き、より精巧なスキームを利用する。ＵＥのロケーションに基づいて、障害メモリ要素が識別される。ブロック８１８で決定されるように、メモリ・コントローラ６１０が診断モードになければ、ブロック８２０で、ＵＥのロケーション（例えば、ＵＥが識別されたときに、１つ以上のビット障害に寄与する１つ以上のモジュール）が報告される。代替実施形態では、障害モジュールのロケーションは、第１の永続的ＣＥエラーを有するモジュールから成るであろう。但し、第２のエラーを有するモジュールは、（第２のエラーが別個のモジュール上にあれば）ＣＥエラーしきい値が満足されるまで、又は訂正不能エラーを含む将来のアクセス中に、第２のエラーが第１の永続的エラーとして識別されるまで、識別されないであろう。前記報告は、障害モジュールの隣にあるメモリ・モジュール上又はそのメモリ・ソケット上にある視覚的な標識（例えば、点滅光又はＬＥＤ、点滅光のパターン）を起動するか、又は警報、印刷出力、電子通知等を介してエラーを報告することを含むことができる。一方、ブロック８１８で決定されるように、メモリ・コントローラ６１０が診断モードにあれば、ブロック８２２で、ＵＥが訂正されるので、メモリ・サブシステムはその動作を継続することができる。ブロック８２２を適用することができるのは、システムが診断モードで稼働中であり、第２のエラーの訂正、ＮＶＳ ６１４への情報の格納及び停止を行った後に、システムが（２重障害にも拘わらず）再びオンに転じて、診断及び修復のために動作するような場合である。さらに、実際のシステム稼働時間が３重エラーに遭遇することよりも一層重要な生産環境（例えば、不正確な計算の生起確率が非常に小さい場合には、かかる不正確な計算が殆ど意味のない大規模な検索システム）では、診断モードは、幾つかのアプリケーションを有することがある。前述のように、一旦、訂正不能エラー状態に寄与する障害のロケーションが分かると、当分野では公知の一般的な技術を適用することにより、第２のエラー（ＵＥ）を訂正するのに必要なＥＣＣ復号器を実装することができる。
【００３２】
代替実施形態では、ブロック８０８で、ＣＥが生じたときにメモリ装置から読み取られるデータが、ＣＥのアドレスとともに格納される。さらに、ブロック８１０で、ＵＥのアドレスに加えて、ＵＥが生じたときにメモリ装置から読み取られるデータ及びシンドローム・ビットのうちの一方又は両方を含むデータが、記憶装置内に格納される。ブロック８１６では、以前のＣＥに関係する読み取りデータ及びＵＥに関係する読み取りデータが、障害メモリ要素を識別するために使用される。
【００３３】
他の代替実施形態では、ブロック８１２は、現在のＵＥと同じアドレスで以前のＣＥが生じているか否かを決定する。ＵＥと同じアドレスでＣＥが生じている場合のみ、ブロック８１６〜８２２が実行される。ＵＥと同じアドレスでＣＥが生じていなければ、ブロック８１４が実行される。
【００３４】
図８のプロセスの一部又は全部は、ＥＣＣ論理６１６によって実装することができる。このＥＣＣ論理６１６は、メモリ・コントローラ６１０のための標準のＥＣＣ処理に加えて、第２のバイト・エラー（ＵＥ）のロケーションを決定するように、本明細書で説明する処理を実装するための拡張機能を含む。さらに、図８のプロセスは、ハードウェア、ソフトウェア又はハードウェア及びソフトウェアの組み合わせの形態で実装することができる。
【００３５】
実施形態では、図８のプロセスの一部又は全部が、サービス・プロセッサ６１２によって実装される。というのは、このような実装形態では、メモリ・コントローラ６１０が動作不能であっても、図８のプロセスを実行することができ、さらにＥＣＣ論理６１６内の標準のＥＣＣ処理の性能に悪影響を与えることなく、図８のプロセスを実行することができるからである。例えば、ＥＣＣ論理６１６内の標準のＥＣＣ処理は、既にエラーを検出し、エラー（ＣＥ及びＵＥの両方）に関する情報をＮＶＳ ６１４内に書き込んでいることがある（例えば、ブロック８０２、８０８及び８１０を参照）。ＵＥを検出する場合、サービス・プロセッサ６１２を呼び出すように標準のＥＣＣ処理を修正することにより、以前のＣＥが生じているか否かを決定するための図８のブロック８１２以後の処理をサービス・プロセッサ６１２に実行させることができる。以前のＣＥが生じていなければ、制御権を標準のＥＣＣ処理に戻して、ブロック８１４を実行することができる。以前のＣＥが生じていれば、サービス・プロセッサ６１２は、（必要に応じて、標準のＥＣＣ処理内のモジュールを呼び出すことにより）ブロック８１６〜８２２を実行する。前述の例は、図８のプロセスをＥＣＣ論理６１６及びサービス・プロセッサ６１２の間で分割するための１つの方法であるに過ぎない。
【００３６】
他の実施形態では、ブロック８１６（又はブロック８１０若しくは８２２）の完了時に、サービス・プロセッサ、プロセッサ又はメモリ・コントローラは、将来のＵＥ事象を防止することを目的として、永続的エラー又は訂正不能エラー状態に寄与した新しいエラーを訂正するための、チップ・スペアリング、ビットレーン・スペアリング又は他の利用可能な方法を呼び出すことができる。一旦修復処置が取られ且つこれが確認されると、修復済みの障害に関連する格納情報がクリアされ、障害トラッキング又はその後の訂正不能エラー処理と無関係な他の報告目的のためにＮＶＭの他の領域に格納されるであろう。
【００３７】
図９は、実施形態を実装するために利用することができる、カスケード化メモリ・モジュール及び単方向バスを有するメモリ構造を示す。図９のメモリ・システムは、図７のメモリ・システムと同様のものであるが、図８のプロセスの全てがＥＣＣ論理９０６に含まれており、そしてＵＥ回復に関係するＥＣＣ論理９０６の少なくとも一部（例えば、ブロック８１０以後の処理）がプロセッサ９０４内に設けられている点が異なる。図８のプロセスが利用する情報は、ＮＶＳ ６１４内に格納される。 
【００３８】
図９のメモリ・システムは、２つ以上のメモリ・モジュール７０２を含み、当該メモリ・モジュール７０２は、メモリ・コントローラ９０２からの読み取り要求に応答して一斉に動作するようになっている。メモリ・モジュール７０２の各々は、１つ以上のメモリ装置を含む。また、メモリ・システムは、一のアドレスにおける第１の障害に関連する障害情報を格納するための記憶手段（例えば、プロセッサ９０４又はＥＣＣ論理９０６内に設けられた不揮発性記憶装置６１４又は他の記憶装置）を含む。さらに、メモリ・システムは、（例えば、ＥＣＣ論理９０６内に含まれる）論理を支援するためのプロセッサ９０４（例えば、プロセッサ９０４又は図６に示すサービス・プロセッサ６１２の全て又はサブセット）を含む。この論理は、ＵＥのロケーションに関連する障害メモリ要素（例えば、メモリ・モジュール７０２又はメモリ・モジュール７０２上のメモリ装置）を識別する。
【００３９】
以下で説明する実施形態は、２エラーのうち第１のエラーのロケーションが分かっている場合に、２エラーを訂正するための復号手順を含む。実施形態は、任意の１ライン要求にサービスすべく４つのＤＩＭＭ（又は他の数のＤＩＭＭ）が一斉に動作するようなシステムにおいて、障害のあるメモリ装置、ＤＩＭＭ（メモリ・モジュール）等を決定するために利用することができる。以下で説明する符号は、任意の１バイト・エラーを訂正し、任意の２バイト・エラーを検出することができる。永続的ＣＥを検出する場合、このＣＥに関する情報（例えば、アドレス、ロケーション、アクセスされたデータ、シンドローム・ビット）を格納し、その後のＵＥに応答して当該格納情報を使用することにより、永続的ＣＥと同じＥＣＣワード（例えば、メモリ・アクセス）で生じ且つ訂正不能エラー状態に帰着する、第２のエラーを検出することができるばかりか、この第２のエラーを選択的に訂正することができる。その後、第２のエラーに関係する情報を、第１のエラーに関係する情報とともに使用すれば、障害のある１つ以上のＤＩＭＭ、又はメモリ・モジュール７０２を検出することができる。
【００４０】
以下で説明する実施形態は、ハードウェアの形態で実装される。しかしながら、前述のタスクの目的からすれば、この特徴をハードウェアの形態で実装することは、原理的に必須の事項ではない。すなわち、符号のシンドローム情報を第１のエラーのロケーションとともに不揮発性記憶装置内に格納しておき、修復時に当該情報を検索した後、これをソフトウェア・ツールで分析できるようにすれば、所期の目的を達成することができるからである。他方、ＵＥのロケーションを決定することができる実施形態は、（３重エラーの遭遇時に警告を与えることを条件として）システムの実際のエラー訂正能力を増加させるために使用することができる。その場合には、性能上の理由で、かかる実施形態をハードウェアの形態で実装することが好ましい。実装上の他のオプションには、例えば、ＵＥのロケーションを検出するも、ＵＥを訂正しないような機能を有する、ハードウェアの形態が存在する。
【００４１】
実施形態では、以下で説明するアルゴリズムを使用するのは、２重エラーを検出し且つ単一エラーを訂正するための標準のＥＣＣ復号器が、ＵＥを検出したことを通知する場合だけである。正確に２つのエラーから成るＵＥが訂正される条件とは、これらエラーのうち１つのエラーのロケーションが適切な入力変数内にロードされるというものである。このアルゴリズムがエラーを訂正することができなければ、このアルゴリズムは、ＵＥ信号（真数の１）を有するであろう。
【００４２】
一般に、２つのエラーを検出し且つ単一エラーを訂正するためのリード・ソロモン符号は、各ＥＣＣワードが満足しなければならないパリティ検査方程式を表すために、ＥＣＣパリティ検査行列又はＨ行列を利用する。Ｈ行列は、ＥＣＣ検査ビット及びシンドローム・ビットを生成するための、ＸＯＲ論理を指定するためにも使用される。Ｈ行列の或る行ベクトル内にある１に対応するＥＣＣワードのビットのＸＯＲ演算の結果は、常に０に等しい。ＶがＥＣＣワードを表す２進ベクトルとすれば、Ｈ行列とＶの転置との積は、全てゼロのベクトル、すなわち Ｈ・Ｖt ＝０ ｍｏｄ ２である。パリティ検査方程式を使用すると、データ・ビットのＸＯＲ演算を通して検査ビットの値を計算することができる。データ・ビット及び対応する検査ビットは、メモリ内に格納されるＥＣＣワードを形成する。他方、ＥＣＣ符号化ワードがメモリからフェッチされる場合、パリティ検査方程式を使用することにより、受信データの有効性を表すシンドロームを生成することができる。
【００４３】
例えば、２進の原始多項式を ｐ（ｘ）＝１＋ｘ＋ｘ６＋ｘ７＋ｘ８  ）とし、ａを２５６の要素を有する有限体ＧＦ（２８）におけるｐ（ｘ）の根であるとすれば、ａのコンパニオン行列は、次のように表される。
【数１】
2008165772.tif 000003
【００４４】
Ｔの幾つかのべき乗は、Ｈ行列の要素を表すために使用される。Ｔｉは、非ゼロの有限体の要素ａｉのコンパニオン行列である（０＜＝ｉ＜＝２５４）。また、各ａｉは、８ビットの２進ベクトルとして表現することができる。
【００４５】
（２８８，２６４）ＳＳＣ−ＤＳＤ（単一シンボル・エラー訂正−２重シンボル・エラー検出）符号は、２４検査ビット（３シンボル）及び２６４データ・ビット（３３シンボル）、すなわち合計で２８８ビット（３６シンボル）を有し、次のＨ行列によって構築及び指定される。
【数２】
2008165772.tif 000004
【００４６】
Ｉは８×８の単位行列であり、Ｉ２４ は２４×２４の単位行列である。 Ｍ２ の最後の２行は、Ｍ１ の最初の１６列のうちの最後の２行の置換であることに留意されたい。この特性は、シンドローム生成及びシンドローム復号におけるモジュール化実装について使用することができる。
【００４７】
実施形態では、ＥＣＣワードの最初の３３シンボル位置を、データ・シンボルと称し、最後の３シンボル位置を、検査シンボルと称する。また、Ｈ行列は、Ｈ＝［Ｈ１，Ｈ２，...,Ｈ３６］として表すことができる。但し、各Ｈｉ は、２４×８の２進行列であり、これをシンボル列と称する。各シンボル列は、３つの８×８部分行列から成り、そのうちの１つが単位行列であることに留意されたい。この特性は、シンドロームを復号する際にシンボル・エラー・パターンを容易に識別することができるように設計されている。同じシンボル内の８ビットの全ては、同じメモリアレイ・チップ内に格納されるものと仮定する。
【００４８】
ＳＳＣ−ＤＳＤ符号である場合、前述のＨ行列は、次の特性を有する。
（１）各シンボル列の列ベクトルは、１次独立である。
（２）任意の２シンボル列の列ベクトルによって張られた空間の次元は、１６である。
（３）任意の３シンボル列の列ベクトルによって張られた空間の次元は、２４である。
【００４９】
データ・ビットｋの数が２６４未満であれば、Ｈ行列のデータ部分から幾つかの２進列を削除することにより、ＥＣＣを短くすることができる。例えば、データ・ビットの数がｋ＝２５６であれば、Ｍ１の最後のシンボル列（８つの２進列から成る）をＨ行列から削除することにより、（２８０，２５６）ＳＳＣ−ＤＳＤ符号を形成することができる。一方、データ・ビットの数がｋ＝２６０であれば、Ｍ１の最後のシンボル列のビット位置３、４、７、８をＨ行列から削除することにより、（２８４，２６０）ＳＳＣ−ＤＳＤ符号を形成することができる。
【００５０】
ＥＣＣ符号化データＷを受信するとき、このデータを検査することにより、シンドロームＳ＝Ｈ・Ｗｔ が全てゼロのベクトルであるか否かを決定する。Ｓが全てゼロのベクトルであれば、Ｗ内にはエラーが存在しないと仮定する。さもなければ、Ｓを復号することにより、Ｗ内のエラーが訂正可能であるか否かを決定するとともに、エラーのロケーションを決定する。実施形態では、シンドロームＳは、３つのコンポーネントＳ１、Ｓ２ 及びＳ３ に分割される。すなわち、Ｓ＝（Ｓ１，Ｓ２，Ｓ３）である。これらのコンポーネントの各々は、８ビットの２進ベクトルであり、ＧＦ（２８）の要素と考えることができる。
【００５１】
以下の例では、Ｅｉ は、シンボル位置ｉにおけるエラー・パターンであり、Ｌｉ は、シンボルｉのためのシンボル・エラー標識である。シンボルｉがエラーである場合にのみ、Ｌｉ の値は１である。さらに、Ｖは、数式Ｈ・Ｖｔ＝０ ｍｏｄ２を満足する符号化ＥＣＣワードであり、Ｗ＝Ｖ＋Ｅ（ｍｏｄ  ２）は、エラー・ベクトルＥ＝（Ｅ１，Ｅ２，...,Ｅ３６）によって破損したＶのワードである。シンドロームを復号することにより一旦エラー・ベクトルＥを決定すると、Ｖ＝Ｗ＋Ｅ（ｍｏｄ  ２）をセットすることにより、元のベクトルＶを回復することができる。従って、数式Ｈ・Ｖｔ＝０ ｍｏｄ  ２から、Ｓは次のように表される。
Ｓ＝Ｈ・Ｗｔ＝Ｈ・（Ｖｔ＋Ｅｔ）＝Ｈ・Ｅｔ ｍｏｄ  ２
【００５２】
さらに、エラー・ベクトルが位置ｉにおける単一シンボル・エラーから成れば、Ｓは次のように表される。
Ｓ＝Ｈｉ・Ｅｉｔ  ｍｏｄ  ２）
【００５３】
例えば、ｉ＝１３であれば、シンドロームは次のようになる。
【数３】
2008165772.tif 000005
【００５４】
この場合、Ｓ１＝Ｔ２・Ｅｉt，Ｓ２＝Ｅｉt，Ｓ３＝Ｔ６０・Ｅｉｔである。従って、Ｓ１＝Ｔ２・Ｓ２ 及びＳ３＝Ｔ６０・Ｓ２ であれば、Ｌ１３＝１及びＥ１３＝Ｓ２ｔ となる。同様にして、全てのシンボル・エラー標識を生成することができる。シンドロームが非ゼロであり、またこのようにして生成されたシンボル・エラー指標のどれもオンになっていなければ、ＵＥ信号がオンとなる。このシンドローム復号方法は、当分野では公知である。
【００５５】
標準のＥＣＣ復号器がＵＥフラグを活性化したという仮定の下では、１より多いエラーが生じたことが分かっている。以下で説明するアルゴリズムは、正確に２つのエラーが生じたこと、そしてそのうちの第１のエラー（例えば、永続的ＣＥ）のロケーションが既知であることを仮定する。以下の例の全体を通して、インデックスｉは、第１のエラー（ＣＥ）の既知のロケーションを識別し、インデックスｊは、第２のエラー（ＵＥ）の未知のロケーションを識別する。ｉ及びｊの値に拘わらず、シンドロームの値は、常に次の式によって表される。
Ｓ１＝Ｈ１，ｉＥｉ＋Ｈ１，ｊＥｊ              （１）
Ｓ２＝Ｈ２，ｉＥｉ＋Ｈ２，ｊＥｊ              （２）
Ｓ３＝Ｈ３，ｉＥｉ＋Ｈ３，ｊＥｊ              （３）
但し、Ｅｉ及びＥｊは、エラーの大きさであり、非ゼロであると仮定する。集合｛１,..,３３｝に属するｋについての比、Ｈ２，ｋ／Ｈ１，ｋ、Ｈ３，ｋ／Ｈ２，ｋ 及びＨ３，ｋ／Ｈ１，ｋ は、説明中の復号化機構の鍵である。次の表１は、Ｍ１に対するこれらの比を明示的に示す。
【表１】
2008165772.tif 000006
【００５６】
また、次の表２は、Ｍ２に対するこれらの比を明示的に示す。
【表２】
2008165772.tif 000007
【００５７】
ｒ及びｓが集合｛１,..,３３｝に属する場合の、興味のある主要な特性は、次の通りである。
Ｈ３，r／Ｈ２，r は、Ｈ３，s／Ｈ２，s とは異なる。
Ｈ２，r／Ｈ１，r は、Ｈ２，s／Ｈ１，s とは異なる。
Ｈ３，r／Ｈ１，r は、Ｈ３，s／Ｈ１，s とは異なる。
このことは、前述の表を直接調べれば、理解することができる。
【００５８】
ケース１．第１のエラーの既知のロケーションｉが集合｛３４，３５，３６｝に属する
ｉ＝３４であると仮定すると、Ｈｉ，２＝Ｈｉ，３＝０となるから、前述の式（１）〜（３）は、次のように変換される。
S１＝Ｅｉ＋Ｈ１，ｊＥｊ                    （４）
S２＝Ｈ２，ｊＥｊ                          （５）
S３＝Ｈ３，ｊＥｊ                          （６）
j＝３５であれば、Ｓ３＝０及びＳ２＝Ｅｊ となり、j＝３６であれば、Ｓ２＝０及びＳ３＝Ｅｊ となる。他方、ｊが集合｛１,..,３３｝に属するのであれば、Ｓ２ 又はＳ３ の何れも、ゼロに等しくなり得ない（なぜなら、Ｈ２，ｊ 及びＨ３，ｊ は、両方とも非ゼロであるからである）。Ｓ２ とＨ３，ｊ／Ｈ２，ｊ とを乗算すると、Ｓ３ が得られる。さらに、集合｛１,..,３３｝に属するがｊと等しくない、他の任意のｋについて、Ｈ３，ｋ／Ｈ２，ｋ は、Ｈ３，ｊ／Ｈ２，ｊ とは異なる（これは、本セクションの冒頭で観察したことである）。従って、図１０に示す回路は、ｉ＝３４である場合の特定の状況において、ｊの値を検出するであろう（この回路では、Ｌｊ＝０を除いて、全ての出力信号Ｌｘは１に等しいから、一致（＝＝）回路は、これが真であれば０を与え、さもなければ１を与える）。ｊの値を検出すると、エラーの大きさＥｉ、Ｅｊを計算しなければならない。 図１１は、これらを計算するための回路を示す。ｉ＝３５及びｉ＝３６であるケースについても、同様の構成を設計することができる。
【００５９】
ケース２．第１のエラーの既知のロケーションｉが集合｛１,..,３３｝に属する
（仮定により非ゼロである）Ｈ１，ｉ、Ｈ２，ｉ 及びＨ３，ｉ を分割すると、次式に示すような結果が得られる。
Ｓ１／Ｈ１，ｉ＝Ｅｉ＋（Ｈ１，ｊ／Ｈ１，ｉ）Ｅｊ      （７）
Ｓ２／Ｈ２，ｉ＝Ｅｉ＋（Ｈ２，ｊ／Ｈ２，ｉ）Ｅｊ      （８）
Ｓ３／Ｈ３，ｉ＝Ｅｉ＋（Ｈ３，ｊ／Ｈ３，ｉ）Ｅｊ      （９）
この体上の加算演算は、単にＸＯＲ演算であり、従って、加算及び減算は同一の演算である。式（７）〜（９）から２つを選び（合計で３つの可能性がある）、選んだ式を加算すると、次式に示すような結果が得られる。
Ａ１＋２＝Ｓ１／Ｈ１，ｉ＋Ｓ２／Ｈ２，ｉ＝（Ｈ１，j／Ｈ１，ｉ＋Ｈ２、j／Ｈ２，ｉ）Ｅｊ    （１０）
Ａ２＋３＝Ｓ２／Ｈ２，ｉ＋Ｓ３／Ｈ３，ｉ＝（Ｈ２，ｊ／Ｈ２，ｉ＋Ｈ３，ｊ／Ｈ３，ｉ）Ｅｊ （１１）
Ａ１＋３＝Ｓ１／Ｈ１，ｉ＋Ｓ３／Ｈ３，ｉ＝（Ｈ１，ｊ／Ｈ１，ｉ＋Ｈ３，ｊ／Ｈ３，ｉ）Ｅｊ （１２）
ｊが集合｛３４，３５，３６｝に属するのであれば、前式の１つだけがゼロになるであろう。さらに、ｊが集合｛１,..,３３｝に属するのであれば、Ａ１＋２、Ａ２＋３、Ａ１＋３ のどれもゼロに等しくなり得ない。これは、本セクションの初めにＨ行列から導いた特性から理解することができる。 ｊ＝３４であると仮定すると、Ｈ２，ｊ＝Ｈ３，ｊ＝０となり、従ってＡ２＋３＝０となる。さらに、Ａ１＋２＝Ａ１＋３＝Ｅｊ／Ｈ１，ｉとなる。j＝３５及びｊ＝３６について同様の分析を行うと、次の表に示す結果が得られる。
【表３】
2008165772.tif 000008
【００６０】
ｊが集合｛１,..,３３｝に属し且つＡ１＋２＝０であれば、Ｈ１，ｊ／Ｈ１，ｉ＝Ｈ２，ｊ／Ｈ２，ｉ となることに留意されたい。これを操作すると、Ｈ２，ｊ／Ｈ１，j＝Ｈ２、ｉ／Ｈ２，ｊ が得られ、また仮定によりｉはｊとは異なるので、本セクションの初めに説明したＨ行列の特性からの矛盾に帰着する。同様に、Ａ２＋３＝０であれば、Ｈ３，ｊ／Ｈ２，ｊ＝Ｈ３，ｉ／Ｈ２，ｉ となり、またＡ１＋３＝０であれば、Ｈ３，ｊ／Ｈ１，ｊ＝Ｈ３，ｉ／Ｈ１，ｉ となって、同様の矛盾に帰着する。
【００６１】
前述の説明が示唆するのは、（Ａ１＋２，Ａ２＋３，Ａ１＋３）内に１つのゼロが存在すると、そのことを使用することにより、ｊが集合｛１,..,３３｝に属するケースとｊが集合｛３４，３５，３６｝に属するケースとを区別することができる、ということである。さらに、ｊが集合｛３４，３５，３６｝に属するケースでは、表３は、ｊ，Ｅｊ を直接的に検出するための技法を与え、式（１）〜（３）を通してＥｉ を検出するための技法を与える。
【００６２】
残っている問題は、ｊが集合｛１,..,３３｝に属する場合に、どのように解読するか、ということである。Ｈ行列を直接調べることにより、集合｛１,..,３３｝に属する全てのインデックスｋについて、Ｈ行列が次の関係を満たすことを推論することができる。
Ｈ２，k Ｈ３，ｋ＝Ｔ５６（Ｈ１，k）２
Ｈ３，ｉ 及びＨ３，ｊ を置き換えるためにこの関係を使用して比Ａ２＋３／Ａ１＋２ を形成し、その結果を簡約化すると、次式が得られる。
【数４】
2008165772.tif 000009
【００６３】
式（１３）の比Ｈ１，ｉ／Ｈ２，ｉ は既知であり、式（１３）の左辺も既知であるから、Ｈ１，j／Ｈ２，ｊ を次のように解くことができる。
Ｈ１，j／Ｈ２，ｊ＝（Ａ２＋３／Ａ１＋２＋１）（Ｈ１，ｉ／Ｈ２，ｉ）
【００６４】
エラー・ロケーションｊを検出するためには、前記の式を満たすように、ｊの一意的な値を識別しなければならない。この一意性は、前述のＨ行列の特性から当然に導かれるものである。エラー・ロケーションｊを検出すると、エラーの大きさが次式のように見つけられる。
【数５】
2008165772.tif 000010
【００６５】
図１２及び図１３は、概略的な回路の形態で、Ａ１＋２、Ａ２＋３ 及びＡ１＋３ の計算と、エラー・ロケーション・アルゴリズムとを示す。
【００６６】
前述の説明は、２つのエラーが生じ且つそのうちの第１のエラーのロケーションが既知である場合に、これらの２つのエラーを訂正するために、実施形態によって実行することができる１セットの計算を実証するものである。実装のためには、ガロア体除算回路（任意の要素でガロア体の要素を除算するもの）を実装するタスクを回避することが望ましい
【００６７】
Ａ１＋２ 及びＡ２＋３ を形成するタスクは、集合｛１,..,３３｝に属する全てのインデックスｋについて、３つの量、Ｓ１／Ｈ１，ｋ、Ｓ２／Ｈ２，ｋ 及びＳ３／Ｈ３，ｋ を並列に計算した後、エラーの既知のロケーションであるｉを入力として有するマルチプレクサを使用して、正しい計算を選択することにより達成することができる。要素Ｈ１，ｋ、Ｈ２，ｋ 及びＨ３，ｋ は既知であるから、それらの逆元も予め計算することができる。従って、前記のタスクは、乗算に変えることができる。
【００６８】
Ａ２＋３／Ａ１＋２ の計算を回避するためには、次の関係が真でなければならない。
（Ｈ１，ｊ／Ｈ２，ｊ）Ａ１＋２＝（Ａ１＋２＋Ａ２＋３）（Ｈ１，ｉ／Ｈ２，ｉ）
この関係が成立するｊの一意的な値を検出するために、集合｛１,..,３３｝に属する全てのインデックスｋについて、積（Ｈ１ｋ／Ｈ２ｋ）Ａ１＋２ が列に形成された後、右辺と一致するか否かを検査することが行われる。因子（Ｈ１，ｉ／Ｈ２，ｉ）は、ハードワイヤされた入力及び選択子ｉを有する、マルチプレクサを使用することによって得られる。
【００６９】
式（１４）のエラーの大きさを計算するためには、ガロア体上の１つの逆元演算がまだ残っている（この逆元を計算した後、Ｅｉ 及びＥｊ の両方を計算するために、その結果を共有することができる）。実施形態では、分母Ｈ１，ｉ Ｈ２，j＋Ｈ１，j Ｈ２，ｉ を計算し、次に、２５６個の８ビット・エントリを有するメモリを介してその結果を反転する。
【００７０】
実施形態は、コンピュータ・システムを含み、そのプロセッサ及びＩ／Ｏ装置（例えば、要求元）は、メモリ・コントローラ及びメモリ装置を含むメモリ・システムに相互接続される。実施形態では、メモリ・システムは、１セットのハブ装置（「ハブ・チップ」とも称する）にインタフェースされたプロセッサ又はメモリ・コントローラを含む。これらのハブ装置は、メモリ装置に接続及びインタフェースされる。実施形態では、メモリ・システムは、データ及び命令を格納するための複数のメモリ装置から成る物理メモリ配列を含む。これらのメモリ装置は、メモリ・コントローラに対し直接的に接続するか、又はハブ装置を介してメモリ・コントローラに間接的に接続することができる。実施形態では、ハブ・ベースのメモリ・システムは、メモリ・コントローラに接続された通信ハブ装置にメモリ装置を接続している。また、実施形態では、このハブ装置は、２つ以上のハブ装置を含むメモリ・モジュール（例えば、単一の基板又は物理装置）上に設けられ、そして当該２つ以上のハブ装置は、メモリ・バスを介して互いに（及び可能であれば、他のメモリ・モジュール上に設けられた他のハブ装置に）カスケード相互接続される。
【００７１】
ハブ装置は、分岐接続又は２地点間バス構造（さらに、かかるバス構造は１つ以上の追加のハブ装置に対するカスケード接続を含むことができる）を通して、メモリ・コントローラに接続することができる。メモリ・アクセス要求は、メモリ・コントローラからバス構造（例えば、メモリ・バス）を介して選択されたハブに送信される。ハブ装置は、受信されたメモリ・アクセス要求に応答して、これを変換することにより、ハブ装置からの書き込みデータを格納するか又は読み取りデータをハブ装置に供給するようにメモリ装置を制御する。読み取りデータは１つ以上の通信パケットへ符号化され、メモリ・バスを通してメモリ・コントローラに送信される。
【００７２】
代替実施形態では、メモリ・コントローラは、これを１つ以上のプロセッサ・チップ及びサポート用論理と統合して、１つ以上のプロセッサ又はサポート用論理を搭載したマルチチップ・キャリア内に含まれる、個別のチップ（一般に「ノースブリッジ」チップと呼ばれるもの）内にパッケージ化するか、又はアプリケーション／環境と最も良く適合する種々の代替形式でパッケージ化することができる。これらの解決策のうち任意のものは、１つ以上のハブ・チップ又はメモリ装置に接続するために、１つ以上の狭い／高速リンクを使用してもよいし、そのようなリンクを使用しなくてもよい。
【００７３】
メモリ・モジュールは、ＤＩＭＭ、シングル・インライン・メモリ・モジュール（ＳＩＭＭ）又は他のメモリ・モジュール、或いはカード構造を含む、種々の技術によって実装することができる。一般に、ＤＩＭＭは、ランダム・アクセス・メモリ（ＲＡＭ）集積回路又はダイを小さな回路ボードの一方又は両方の表面に備え、信号又は電源ピンを当該回路ボードの両方の表面に備えたものを表す。一方、ＳＩＭＭは、ＲＡＭ集積回路又はダイを小さな回路ボード又は基板の一方又は両方の表面に備え、１つの長いエッジに沿って単一行のピンを備えたものを表す。図１に示すＤＩＭＭは、１６８本のピンを含むが、その後のＤＩＭＭは、１００本ないし３００本以上のピンを有するように構成されている。実施形態では、メモリ・モジュールは、２つ以上のハブ装置を含むことができる。
【００７４】
実施形態では、メモリ・バスは、メモリ・モジュール上のハブ装置に対する分岐接続を使用するか、又は２地点間接続を使用して構築される。下流バスと呼ばれるコントローラ・インタフェースの下流部分（又はメモリ・バス）は、メモリ・モジュール上のハブ装置に送信される、コマンド、アドレス、データ及び他の情報（動作、初期化又はステータス情報）を含むことができる。各ハブ装置は、バイパス回路を介して後続のハブ装置に情報を単に転送したり、情報が下流のハブ装置を目標としていると決定する場合は、情報を受け取り、解釈し、再駆動したり、情報の宛先を決定するために最初にその情報を解釈せずに、その情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。
【００７５】
上流バスと呼ばれるメモリ・バスの上流部分は、要求された読み取りデータ、エラー、ステータス又は他の動作情報を戻す。この情報は、バイパス回路を介して後続のハブ装置へ転送したり、この情報が上流のハブ装置又はプロセッサ複合体内のメモリ・コントローラを目標としていると決定する場合は、この情報を受け取り、解釈し、再駆動したり、この情報の宛先を決定するために最初にこの情報を解釈せずに、この情報のうちの一部又は全てを再駆動したり、或いはこれらのオプションのサブセット又はその組み合わせを実行することができる。実施形態では、上流バスは、メモリ・システムからの応答を受信するために使用されるプロトコルを有する。
【００７６】
代替実施形態では、２地点間バスは、下流の通信（メモリ・コントローラからメモリ・モジュール上のハブ装置への通信）中にバス情報を１つ以上の可能なハブ装置に供給するとともに、上流の通信（メモリ・モジュール上のハブ装置からメモリ・コントローラへの通信）中にバス情報をしばしば１つ以上の上流ハブ装置を介して供給するための、スイッチ又はバイパス機構を含む。他の実施形態は、当該分野では公知のバスの終端用モジュール又はダミー基板（continuity module）を使用することを含み、かかるダミー基板をメモリ・コントローラとカスケード相互接続メモリ・システム内で最初に装着したハブ装置（すなわち、１つ以上のメモリ装置と通信関係にあるハブ装置）との間に配置することができる。このようにすると、メモリ・コントローラと最初に装着したハブ装置との間にある任意の中間ハブ装置位置は、たとえ１つ以上の中間ハブ装置位置がハブ装置を含んでいないとしても、メモリ・コントローラと最初に装着したハブ装置との間を通過する情報を受信することができる。このダミー基板は、任意のバス制限に従うことを条件として、最初の位置（メモリ・コントローラに最も近い位置）、最後の位置（終端点の直前にある位置）又はその中間位置を含む、任意のモジュール位置に設置することができる。マルチモジュール・カスケード相互接続バス構造においてダミー基板を有利に使用するには、メモリ・モジュール上の中間のハブ装置を除去し、当該中間のハブ装置を除去した後にもシステムが継続的に動作するように、当該中間のハブ装置をダミー基板と置き換えるようにするとよい。より一般的な実施形態では、このダミー基板は、その入力から対応する出力まで全ての必要な信号を転送するための相互接続ワイヤを含むか、又はリピータ装置を通して再駆動されてもよい。さらに、このダミー基板は、不揮発性記憶装置（例えば、ＥＥｐＲＯＭ）を含むことができるが、主メモリ装置を含まないであろう。
【００７７】
実施形態では、メモリ・システムは、カスケード相互接続メモリ・バスによってメモリ・コントローラに接続された１つ以上のメモリ・モジュール上に１つ以上のハブ装置を含むが、２地点間バス、分岐接続メモリ・バス又は共用バスのような他のメモリ構造も実装することができる。使用される信号方法、目標動作周波数、スペース、電力、コスト等の制約に依存して、種々の代替バス構造を考慮することができる。２地点間バスは、分岐信号線、スイッチ装置又はスタブを有するバス構造と比較して信号の劣化が少ないという理由で、電気的な相互接続を備えたシステムにおいて最適の性能を提供することができる。しかし、複数の装置又はサブシステムとの通信を必要とするシステム内で使用すると、この方法は、追加のコンポーネントに伴うコスト及びシステム電力の増加に帰着するばかりか、中間のバッファリング又は再駆動を必要とするために潜在的メモリ密度を減少させることがある。
【００７８】
また、図面には示されていないが、メモリ・モジュール又はハブ装置は、「プレゼンス・ディテクト」バス、Ｉ２Ｃバス又はＳＭＢｕｓのような、別個のバスを含むことができる。このバスは、（一般に、起動後に）ハブ装置又はメモリ・サブシステムの属性を決定すること、障害又はステータス情報をシステムに報告すること、起動後又は通常の動作中にハブ装置又はメモリ・サブシステムを構成することを含む、１つ以上の目的のために使用される。また、このバスは、そのバス特性に依存して、ハブ装置又はメモリ・モジュールからメモリ・コントローラに対し動作の有効な完了を報告したり、メモリ・コントローラ要求の実行中に生じる障害を識別するための手段を提供することができる。
【００７９】
２地点間バス構造と同様の性能は、スイッチ装置を追加することによって得ることができる。これらの及び他の解決策は、２地点間バスの特性の多くを維持しつつも、より低い電力で増加したメモリ・パッケージ化密度を提供する。分岐接続バスは、より低い動作周波数に制限されるとはいえ、多くのアプリケーションについては有利なコスト／性能の代替的な解決策を提供する。光バスの解決策は、２地点間又は分岐接続アプリケーションの何れかにおいて、著しく増加した周波数及び帯域幅を許容するが、コストとスペースの点で不利である。
【００８０】
「バッファ」又は「バッファ装置」という用語は、（コンピュータ内で使用されるような）一時記憶装置、特に或るレートで情報を受け取り且つ他のレートでその情報を伝える一時記憶装置を表す。実施形態では、バッファは、２つの信号（例えば、変更される電圧レベル又は電流能力）間の両立性を提供する電子装置である。「ハブ」という用語は、「バッファ」という用語と交換可能に使用されることがある。ハブは、他の幾つかの装置に接続される、複数のポートを含む装置である。ポートは、対応するＩ／Ｏ機能性にサービスを提供するインタフェースの一部である（例えば、ポートは、２地点間リンクのうちの１つ又はバスを介してデータ、アドレス及び制御情報を送信及び受信するために利用することができる）。ハブは、幾つかのシステム、サブシステム又はネットワークを互いに接続するための中心の装置とすることができる。受動ハブは、単にメッセージを転送するに過ぎないのに対し、能動ハブ（リピータ）は、データのストリームを増幅及びリフレッシュすることにより、距離とともに増大する減衰を補償する。「ハブ装置」という用語は、メモリ機能を行うための論理（ハードウェア又はソフトウェア）を含む、ハブ・チップを表す。
【００８１】
「バス」という用語は、コンピュータ内の２つ以上の機能装置を接続する複数セットの導体（例えば、ワイヤ及び集積回路内の印刷回路ボードの配線又は接続）のうちの１つを表す。データ・バス、アドレス・バス及び制御バスは、それらの名前に拘わらず、多くの場合に互いに他を必要としているので、全体として単一のバスを構成する。バスは、各々が２つ以上の接続点を有する複数の信号線を含むことがあり、これらの信号線は、２つ以上のトランシーバ、送信機又は受信機を電気的に接続する、主伝送パスを形成する。「バス」という用語とは対照的に、「チャネル」という用語は、メモリ・システム内のメモリ・コントローラに関連づけられるような「ポート」の機能を記述するためにしばしば使用され、１つ以上のバス又は複数セットのバスを含むことがある。「チャネル」という用語は、メモリ・コントローラ上のポートを表す。しかし、この用語は、一般にはＩ／Ｏ又は他の周辺装置と関連して使用され、例えば、プロセッサ又はメモリ・コントローラと１つ以上のメモリ・サブシステムのうちの１つとの間のインタフェースを表すために使用されることが多い。
【００８２】
「デイジー・チェーン」という用語は、バス・ワイヤリング構造であって、例えば、装置Ａが装置Ｂにワイヤされ、装置Ｂが装置Ｃにワイヤされ、以下同様にして各装置がワイヤされるようなバス・ワイヤリング構造を表す。一般に、最後の装置は、抵抗器又は終端子にワイヤされる。単純なバスとは対照的に、全ての装置が同一の信号を受信するか、又は各装置は１つ以上の信号を修正してそれらを次の装置に渡すことができる。「カスケード」又は「カスケードは相互接続」という用語は、一連のステージ(装置）又は相互接続されたネットワーキング装置(例えば、ハブ）の集合を表す。かかるハブは、論理的なリピータとして動作するとともに、既存のデータ・ストリーム中にデータをマージすることを可能にする。また、「２地点間バス」又は「リンク」という用語は、各々が１つ以上の終端子を含むことができる、複数の信号線又はそのうちの１つを表す。２地点間バス又はリンクでは、各信号線は、２つのトランシーバ接続点を有し、その各トランシーバ接続点は、送信回路、受信回路又はトランシーバ回路に接続される。「信号線」という用語は、少なくとも１つの論理的な信号を伝送するために使用される１つ以上の導電体又は光回線（optical carrier）を表す。一般に、かかる導電体又は光回線は、単一の回線若しくは２つ以上の回線として、又は対より線、並列若しくは同心円式のものとして構成される。
【００８３】
一般に、メモリ装置は、主としてメモリ（記憶）セルから構成される集積回路として定義され、ＤＲＡＭ（動的ランダム・アクセス・メモリ）、ＳＲＡＭ（静的ランダム・アクセス・メモリ）、ＦｅＲＡＭ（強誘電性ＲＡＭ）、ＭＲＡＭ（磁気ランダム・アクセス・メモリ）、フラッシュ・メモリ、情報を電気的、光学的、磁気的、生物学的又は他の形態で格納する他の形式のランダム・アクセス・メモリ等を含む。動的メモリ装置のタイプには、ＦｐＭ  ＤＲＡＭ（高速ページ・モード動的ランダム・アクセス・メモリ）、ＥＤＯ（拡張データ・アウト）ＤＲＡＭ、ＢＥＤＯ（バーストＥＤＯ）ＤＲＡＭ、ＳＤＲ（単一データ・レート）同期ＤＲＡＭ、ＤＤＲ（ダブル・データ・レート）同期ＤＲＡＭ、又はＤＤＲ２、ＤＤＲ３、ＤＤＲ４のような今後期待される後継装置、及びグラフィックスＲＡＭ、ビデオＲＡＭ、Ｌｐ  ＲＡＭ（低消費電力ＤＲＡＭ）のような関連する技術のものがあり、これらは、しばしば関連するＤＲＡＭに見られる基本的な機能、特徴又はインタフェースに基づいている。
【００８４】
メモリ装置は、チップ（ダイ）又は種々のタイプ及び構成を有する単一若しくはマルチチップ・パッケージの形式で利用することができる。マルチチップ・パッケージでは、メモリ装置は、他のメモリ装置、論理チップ、アナログ装置及びプログラム可能な装置のような他のタイプの装置とパッケージ化され、また抵抗器、コンデンサ及び誘導子のような受動装置を含むことができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
【００８５】
モジュール・サポート装置（バッファ、ハブ、ハブ論理チップ、レジスタ、ｐＬＬ、ＤＬＬ、不揮発性記憶装置等を含む）は、技術、電力、スペース、コスト及び他のトレードオフに基づいて、複数の個別チップ又はコンポーネントから構成することができ、複数の個別チップとして１つ以上の基板上で組み合わせることができ、単一のパッケージ上で組み合わせられることができ、さらには単一デバイス上に統合することもできる。さらに、抵抗器、コンデンサのような種々の受動装置の１つ以上は、技術、電力、スペース、コスト及び他のトレードオフに基づいて、サポート・チップ・パッケージ上に統合することができ、或いは基板、ボード又は未加工のカード自体へ統合することができる。これらのパッケージは、統合化ヒートシンク又は他の冷却手段を含み、これを、中間キャリア又は他の直近のキャリア又は熱除去システムに接続することができる。
【００８６】
メモリ装置、ハブ（バッファ）、レジスタ、クロック装置、受動装置、他のメモリ・サポート装置又はコンポーネントを、メモリ・サブシステム又はハブ装置に接続するためには、電気的、光学的又は代替手段を介して２つ以上の装置間の通信を可能にするための、ハンダ相互接続、導電接着剤、ソケット構造、接触圧及び他の方法を含む種々の方法を使用することができる。
【００８７】
１つ以上のメモリ・モジュール（又はメモリ・サブシステム）又はハブ装置を、メモリ・システム、プロセッサ複合体、コンピュータ・システム又は他のシステム環境に接続するためには、ハンダ相互接続、コネクタ、接触圧、導電接着剤、光相互接続並びに他の通信及び電力供給方法のうちの１つ以上を使用することができる。コネクタ・システムは、コネクタ（雄型／雌型）、導電性の接触又は雄型若しくは雌型コネクタと接合する１つのキャリア上のピン、光接続、接触圧（しばしば固定機構と協働する）又は種々の他の通信及び電力供給方法の１つ以上を含むことができる。相互接続は、メモリ・アセンブリの１つ以上の端に沿って又はメモリ・サブシステムの端から離れた位置に配置することができる。この配置位置を左右する要素には、アップグレード／修復のしやすさ、利用可能なスペース／ボリューム、熱伝導、コンポーネントのサイズ及び形状、及び他の物理的、電気的、光学的、視覚的／物理的アクセス等の、アプリケーション上の要件がある。
【００８８】
「メモリ・サブシステム」という用語は、１つ以上のメモリ装置、１つ以上のメモリ装置及び関連するインタフェース又はタイミング／制御回路、又はメモリ・バッファ、ハブ装置又はスイッチと関連する１つ以上のメモリ装置を表すが、これらに限定されない。また、「メモリ・サブシステム」という用語は、１つ以上のメモリ装置と、これに関連するインタフェース又はタイミング／制御回路又はメモリ・バッファ、ハブ装置又はスイッチとを、基板、カード、モジュール又は関係するアセンブリ上に組み立てたものを表すことができる。かかる基板、カード、モジュール又は関係するアセンブリは、メモリ・サブシステムを他の回路と電気的に接続するためのコネクタ又はこれと同様の手段を含むことができる。また、本明細書に開示したメモリ・モジュールは、１つ以上のメモリ装置及びハブ装置を含んでいるので、これをメモリ・サブシステムと称することができる。
【００８９】
メモリ・サブシステム又はハブ装置に対してローカルに設けることができる追加の補助機能は、書き込み又は読み取りバッファ、１レベル以上のメモリ・キャッシュ、ローカルのプリフェッチ論理、データ暗号化／暗号化解除、圧縮／圧縮解除、プロトコル変換、コマンド優先順位付け論理、電圧又はレベル変換、エラー検出又は訂正回路、データ消し込み、ローカルの省電力回路又は報告、動作又はステータス・レジスタ、初期化回路、性能モニタリング又は制御、１つ以上のコプロセッサ、サーチ・エンジン及び以前に他のメモリ・サブシステムに設けられていた他の機能を含む。或る機能をメモリ・サブシステムに対してローカルに配置すると、当該サブシステム内の未使用の回路をしばしば利用することを通して、この特定の機能に関係する追加の性能を得ることができる。
【００９０】
メモリ・サブシステムのサポート装置は、メモリ装置が接続されるのと同じ基板又はアセンブリに接続するか、或いは別個のインターポーザ又は基板にマウントすることができる。かかるインターポーザ又は基板は、種々のプラスチック、シリコン、セラミック又は他の材料を使用して製造され、サポート装置をメモリ装置若しくはメモリ又はコンピュータ・システムの他のコンポーネントに機能的に相互接続するための、電気的、光学的又は他の通信パスを含む。
【００９１】
バス、チャネル、リンク等に沿った情報転送（例えば、パケット）は、多くの信号方法のうち１つ以上を使用して行うことができる。かかる信号方法は、シングル・エンド式、差動式、光学式又は他のアプローチのような方法を含み、電気的な信号方法は、単一又はマルチレベルのアプローチの何れかを使用する、電圧又は電流信号方法のような方法を含む。また、信号は、時間又は周波数、非ゼロ復帰、位相偏移キーイング、振幅変調等の方法を使用して変調することができる。集積回路自体の動作に必要な電源電圧が減少されるのと整合するように（しばしば独立的にではあるが）、電圧レベルは、１．５Ｖ、１．２Ｖ、１Ｖ及びより低い信号電圧に、今後も減少し続けると予想される。
【００９２】
メモリ・サブシステム及びメモリ・システム内では、グローバル・クロッキング、ソース同期クロッキング、符号化クロッキング又はこれらの方法及び他の方法の組み合わせを含む、１つ以上のクロッキング方法を利用することができる。クロック信号方法は、信号線自体のそれと同一とすることができ、又は計画されたクロック周波数及び種々のサブシステム内の計画されたクロックの数に対し適合するものであれば、前記クロッキング方法のうちの１つ又は他の代替方法を利用することができる。単一のクロックを、メモリを対象とする全ての通信並びにメモリ・サブシステム内の全てのクロック化機能と関連づけることができ、又は前述の１つ以上の方法を使用して複数のクロックを駆動することができる。複数クロックが使用される場合、メモリ・サブシステム内の機能は、メモリ・サブシステムを一意に駆動する１つのクロックに関連づけることができ、又はメモリ・サブシステムと授受されている情報と関係するクロックに由来する１つのクロック（例えば、符号化クロックに関連するクロック）に基づくことができる。代替的に、１つの一意的なクロックをメモリ・サブシステムに転送される情報のために使用し、別個のクロックを１つ（又はそれ以上）のメモリ・サブシステムから供給される情報のために使用することができる。これらのクロックは、通信又は機能的な周波数と同じ又はその整数倍の周波数で動作することができ、データ、コマンド又はアドレス情報に対しそのエッジ又は中心に整列するか又は他のタイミング位置に整列することができる。
【００９３】
一般に、メモリ・サブシステムに引き渡される情報は、アドレス、コマンド及びデータ、並びにステータス又はエラー条件を要求又は報告すること、メモリをリセットすること、メモリ又は論理の初期化を完了すること等に関連する他の情報から成るであろう。一般に、メモリ・サブシステムから引き渡される情報は、当該メモリ・サブシステムに引き渡される前記情報の全て又は任意のものを含むことができるが、アドレス及びコマンド情報を含まないであろう。この情報は、通常のメモリ装置インタフェース仕様（一般に並列）と整合する通信方法を使用して通信することができ、「パケット」構造に符号化することができる。かかるパケット構造は、将来のメモリ・インタフェースと整合するか、通信帯域幅を増加させ又は受信情報を受信装置によって必要とされるフォーマットに変換することにより、サブシステムがメモリ技術とは独立的に動作することを可能にするために開発されるものとすることができる。
【００９４】
メモリ・サブシステムの初期化は、利用可能なインタフェース・バス、所望の初期化速度、利用可能なスペース、コスト／複雑さの目的、サブシステム相互接続構造、この目的及び他の目的のために使用可能な代替プロセッサ（例えば、サービス・プロセッサ）の使用等に基づいて、１つ以上の方法を介して行うことができる。１つの実施形態では、高速バスを使用してメモリ・サブシステムの初期化を行うことができる。一般に、この場合には、先ず、信頼できる通信を確立するためのトレーニング・プロセスを完了し、次に、種々のコンポーネントに関連する属性又は「プレゼンス・ディテクト（presence detect）」データ又は当該サブシステムに関連する特性を照会し、最後に、適切な装置を当該システム内の意図された動作に関連する情報でプログラムすることが行われる。一般に、カスケード化システムでは、第１のメモリ・サブシステムとの通信が確立された後、一連の後続（下流）サブシステムのうちカスケード相互接続バスに沿った次の位置にあるサブシステムとの通信が順次に確立されるであろう。
【００９５】
第２の初期化方法は、初期化プロセス中に高速バスを１つの周波数で動作させ、その後の通常動作中に高速バスを他の（例えば、より高い）周波数で動作させるというものである。この実施形態では、より低い周波数の動作に関連するタイミング・マージンが増加することに起因して、各サブシステムの照会又はプログラミングを完了する前に、カスケード相互接続バス上の全てのメモリ・サブシステムとの通信を開始することが可能である。
【００９６】
第３の初期化方法は、カスケード相互接続バスを通常の周波数で動作させるも、アドレス、コマンド又はデータ転送に関連するサイクルの数を増加させることができる。１つの実施形態では、アドレス、コマンド又はデータ情報の全て又は一部を保持するパケットを、通常の動作中に１つのクロック・サイクルで転送するが、同じ量又はタイプの情報を、初期化中に２サイクル以上にわたって転送することができる。従って、この初期化プロセスは、「通常」のコマンドではなく、「遅い」コマンドの形式を使用する。このモードには、各サブシステムに含まれるＰＯＲ（パワーオン・リセット）論理を介して行われる各サブシステム及びメモリ・コントローラによる起動又は再起動の後の或る時点で、自動的に入ることができる。
【００９７】
第４の初期化方法は、別個のバスを利用することができる。このバスは、プレゼンス・ディテクト・バス（前掲の米国特許第５５１３１３５号を参照）、Ｉ２Ｃバス（ＪＥＤＥＣによって公開された１６８ピンのＤＩＭＭファミリに係る規格である、２１Ｃの改訂版７Ｒ８を参照）又は周知のＳＭＢＵＳ等を含む。このバスは、デイジー・チェーン／カスケード相互接続、分岐接続又は代替構造を介してメモリ・システム内の１つ以上のモジュールに接続することにより、メモリ・サブシステムを照会し、総合的なシステム環境内で動作するように各メモリ・サブシステムをプログラムし、当該システム環境内の所望の又は検出された性能、熱、構成又は他の変更に基づいて、通常のシステム動作中に他の時間における動作特性を調節することができる。
【００９８】
また、前述の初期化方法に関連して又はこれとは独立に、他の初期化方法を使用することができる。また、前記第４の初期化方法について説明したような別個のバスを使用すると、初期化のための独立の手段を提供することができるという利点に加えて、サブシステムの動作特性をオンザフライで変更することができ、さらに利用度、温度データ、障害情報等のサブシステムの動作情報を報告するか又はこれに応答することができる（前掲の米国特許第６３８１６８５号を参照）。
【００９９】
リソグラフィの改良、よりよいプロセス制御、より低い抵抗値を有する材料の使用、増加したフィールド・サイズ及び他の半導体技術の改良、増加した装置の回路密度（しばしば増加したダイのサイズと軌を一にする）により、集積装置上の機能を増加させたり、以前には別個の装置上に実装されていた機能を統合することが容易になってきた。この統合は、意図された機能の総合的性能を改良するだけでなく、記憶密度の増加、電力の減少、スペース要件の減少、コストの低下等を促進するように作用するであろう。この統合は、自然な進化のプロセスであって、システムに関連する基本的なビルディング・ブロックへの構造的変化の必要性に帰着するであろう。
【０１００】
メモリ・システム又はサブシステムの各要素に関連する通信パス、データ記憶装置の内容及び全ての機能動作の完全性は、１つ以上の障害検出又は訂正方法を使用することによって高度に保証することができる。信頼性をさらに拡張するためには、（情報の転送に関連する間欠的な障害を克服するための）動作の再試行を使用したり、障害のある通信パス又は線を置き換えるための１つ以上の代替又は置換方法を使用したり、補数化−再補数化技術を使用することができる。
【０１０１】
２地点間リンク又は分岐接続構造等のバス上でバス終端を使用することは、増加した性能要求に対応するためによい多く行われるようになっている。これらの種々の終端方法には、抵抗器、コンデンサ、誘導子又はその任意の組み合わせのような終端装置を、信号線と電源電圧又はアース、終端電圧又は他の信号との間に接続するものがある。終端装置は、受動性又は能動性終端構造の一部とすることができ、１つ以上の信号線に沿った１つ以上の位置に存在するか、又は送信又は受信装置の一部として存在することができる。この終端子は、伝送路のインピーダンスと一致するように選択されるか、又はコスト、スペース、電力等の制約内で、使用可能な周波数、動作マージン及び関連する属性を最大化するような代替アプローチを介して選択することができる。
【０１０２】
実施形態の技術的な効果及び利点は、メモリ・システム内の障害メモリ・モジュールを識別するための能力を含む。これは、コストの相当な削減に結びつくことがある。なぜなら、メモリ・システム内の１つのメモリ・モジュールだけが修復を必要としている場合に、メモリ・システム内の全てのメモリ・モジュールを交換する必要はないからである。さらに、これは、メモリ・システムのダウン時間を最小化するとともに、障害が解決される確率を向上させることに帰着する。
【０１０３】
前述のように、本発明の実施形態は、コンピュータで実装されるプロセス及びこれらのプロセスを実行するための装置として具体化することができる。また、本発明の実施形態は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ等のコンピュータ可読記憶媒体に記録されたコンピュータ・プログラムとして、或いは電気的なケーブル、光ファイバ、電磁放射等の伝送媒体を介して伝送されるコンピュータ・プログラムとして、具体化することができる。その場合、かかるコンピュータ・プログラムがコンピュータにロードされ且つ実行される場合、このコンピュータは、本発明を実施するための装置になる。汎用のマイクロプロセッサ上で実装される場合、かかるコンピュータ・プログラムのセグメントは、特定の論理回路を作成するように当該マイクロプロセッサを構成する。
【０１０４】
本発明は実施形態を参照して説明されたが、本発明の範囲から逸脱することなく、種々の変更を行ったり、実施形態の特定の要素の代わりにその均等手段を使用することができる。また、本発明の本質的な範囲から逸脱することなく、特定の状況又は材料に適合するように本発明の概念に変更を施すことができる。従って、本発明は、本明細書において最良の実施形態として記載された特定の実施形態に限定されるものではなく、各請求項の範囲に属する全ての実施形態を包含するものである。
【図面の簡単な説明】
【０１０５】
【図１】初期の同期メモリ・モジュールを例示する図である。
【図２】メモリ・コントローラに直接的に接続された完全バッファ（fully buffered）型の同期メモリ・モジュールを備えたコンピュータ・システムを例示する図である。
【図３】単一の分岐型スタブ・バスを備えたメモリ・システムを例示する図である。
【図４】リピータ機能を含む完全バッファ型の同期メモリ・モジュール及びシステム構造を例示する図である。
【図５】単一のデータ・アクセス要求をサポートするように一斉に動作する複数の独立したカスケード相互接続メモリ・インタフェース・バスを含む、メモリ・システムのブロック図である。
【図６】実施形態を実装するために利用することができる、メモリ・システムのブロック図である。
【図７】実施形態を実装するために利用することができる、カスケード相互接続メモリ・モジュール及び単方向バスを有するメモリ構造を示す図である。
【図８】訂正不能エラーのロケーションを識別するために、実施形態によって実装することができる、プロセスのフローチャートである。
【図９】実施形態を実装するために利用することができる、カスケード相互接続メモリ・モジュール及び単方向バスを有するメモリ構造を示す図である。
【図１０】実施形態によって実装することができる、ｉ＝３４である場合の特定の状況において、エラーｊのエラー・ロケーションを検出するための回路を示す図である。
【図１１】実施形態によって実装することができる、エラーの大きさＥｉ、Ｅｊを計算するための回路を示す図である。
【図１２】実施形態によって実装することができる、シンドロームＳ１、Ｓ２ 及びＳ３ からＡ１＋２、Ａ２＋３ 及びＡ１＋３ を生成するための回路を示す図である。
【図１３】実施形態によって実装することができる、ｉが集合｛１,..,３３｝に属する場合の特定の状況において、エラー・ロケーション信号を生成するための回路を示す図である。
【図１】
2008165772.tif 000011
【図２】
2008165772.tif 000012
【図３】
2008165772.tif 000013
【図４】
2008165772.tif 000014
【図５】
2008165772.tif 000015
【図６】
2008165772.tif 000016
【図７】
2008165772.tif 000017
【図８】
2008165772.tif 000018
【図９】
2008165772.tif 000019
【図１０】
2008165772.tif 000020
【図１１】
2008165772.tif 000021
【図１２】
2008165772.tif 000022
【図１３】
2008165772.tif 000023