バス障害を検出するためのコンピュータによって実装される方法であって、aエラー検出コードの複数のシンドロームを受け取るステップを含み、前記エラー検出コードは、複数のレーンを含み且つ前記エラー検出コードによって保護される、前記バスを介して送信された複数のフレームに関連しており、b前記シンドロームの各々ごとに、前記レーンの各々について、b1当該レーンが障害レーンであるという仮定の下に、当該シンドロームを復号して復号結果を出力するステップと、b2前記復号結果が有効な復号であるか否かを決定するステップと、b3前記復号結果が有効な復号であるという決定に応答して、当該レーンに投票するステップを含み、c前記投票に応答して、障害レーンを識別するステップをさらに含み、前記障害レーンが、前記バス上の少なくとも1つの他のレーンよりも多い投票を有することによって特徴づけられる、方法。前記ステップb1が、当該レーン用の候補エラーベクトルを生成するステップと、単一ビットエラーを示す前記候補エラーベクトルに応答して、当該シンドロームを復号することによって生成された他のレーン用の投票を取り消すステップを含む、請求項1に記載の方法。前記障害レーンが、前記バス上の他の任意のレーンと少なくとも同数の投票を有することにより特徴づけられる、請求項1に記載の方法。前記レーンの各々が、値を格納する関連する走行カウンタを有し、前記ステップb3が、当該レーンに関連する走行カウンタを増分するステップを含み、前記ステップcが、前記障害レーンを選択するために複数の前記走行カウンタ内の値を比較するステップを含む、請求項1に記載の方法。前記比較するステップが、より低い走行カウンタ値に対するより高い走行カウンタ値の比率を計算するステップを含み、前記ステップcが、前記障害レーンを選択するために前記計算された比率を比率閾値と比較するステップをさらに含む、請求項4に記載の方法。前記複数のシンドロームのうち指定された数のシンドロームが受け取られた後に、前記ステップcが実行される、請求項1に記載の方法。前記ステップb1が、前記複数のシンドロームのサブセットについて実行され且つ候補エラーベクトルを生成するステップを含み、前記複数のシンドロームのうち前記サブセット内に存在しないシンドロームが、前記候補エラーベクトルをクロス検査するために前記ステップb1によって使用される、請求項1に記載の方法。前記障害レーンを識別し且つ修正アクションを開始することに応答して、前記投票がリセットされる、請求項1に記載の方法。指定された期間の後に、前記投票がリセットされる、請求項1に記載の方法。バス障害を検出するためのシステムであって、前記バスを介して送信された複数のフレーム用の複数のシンドロームを受け取り且つ当該複数のシンドロームをトラップするように構成されたバスインタフェース装置を備え、各フレームは、各レーンごとに複数のビット転送を含んでおり、前記バスインタフェース装置と通信するシンドローム処理論理をさらに備え、前記シンドローム処理論理が、aエラー検出コードの複数のシンドロームを受け取る動作を実行するように構成され、前記エラー検出コードは、複数のレーンを含み且つ前記エラー検出コードによって保護される、前記バスを介して送信された複数のフレームに関連しており、b前記シンドロームの各々ごとに、前記レーンの各々について、b1当該レーンが障害レーンであるという仮定の下に、当該シンドロームを復号して復号結果を出力する動作と、b2前記復号結果が有効な復号であるか否かを決定する動作と、b3前記復号結果が有効な復号であるという決定に応答して、当該レーンに投票する動作を実行するように構成され、c前記投票に応答して、障害レーンを識別する動作を実行するようにさらに構成され、前記障害レーンが、前記バス上の少なくとも1つの他のレーンよりも多い投票を有することによって特徴づけられる、システム。前記動作b1が、当該レーン用の候補エラーベクトルを生成する動作と、単一ビットエラーを示す前記候補エラーベクトルに応答して、当該シンドロームを復号することによって生成された他のレーン用の投票を取り消す動作を含む、請求項10に記載のシステム。前記障害レーンが、前記バス上の他の任意のレーンと少なくとも同数の投票を有することにより特徴づけられる、請求項10に記載のシステム。前記レーンの各々が、値を格納する関連する走行カウンタを有し、前記動作b3が、当該レーンに関連する走行カウンタを増分する動作を含み、前記動作cが、前記障害レーンを選択するために複数の前記走行カウンタ内の値を比較する動作を含む、請求項10に記載のシステム。前記比較する動作が、より低い走行カウンタ値に対するより高い走行カウンタ値の比率を計算する動作を含み、前記動作cが、前記障害レーンを選択するために前記計算された比率を比率閾値と比較する動作をさらに含む、請求項13に記載のシステム。前記複数のシンドロームのうち指定された数のシンドロームが受け取られた後に、前記動作cが実行される、請求項10に記載のシステム。前記動作b1が、前記複数のシンドロームのサブセットについて実行され且つ候補エラーベクトルを生成する動作を含み、前記複数のシンドロームのうち前記サブセット内に存在しないシンドロームが、前記候補エラーベクトルをクロス検査するために前記動作b1によって使用される、請求項10に記載のシステム。前記障害レーンを識別し且つ修正アクションを開始することに応答して、前記投票がリセットされる、請求項10に記載のシステム。指定された期間の後に、前記投票がリセットされる、請求項10に記載のシステム。前記バスインタフェース装置が、メモリシステム内のハブ装置である、請求項10に記載のシステム。前記バスインタフェース装置が、メモリシステム内のメモリコントローラである、請求項10に記載のシステム。請求項1ないし請求項8の何れか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータプログラム。メモリシステムバスのようなバス内の障害レーンを検出するための1つのアプローチは、エラー訂正コードECCを使用することである。ECCは、多数の障害ビットを検出し且つ訂正することができるが、エラー検出コードよりも多い冗長ビットを必要とする。一般に、エラー検出コードは、エラーを検出することができるが、当該エラーの物理的な性質を完全に解決することができない。例えば、エラー検出コードは、障害レーン内の全ての可能なエラーパターンについて当該障害レーンを完全に識別できないことがある。従って、エラー検出コードだけでは、エラーを特定の障害レーンに正確に分離できないことがある。障害レーンを検出するための他のアプローチは、レーンシャドーイングを使用して、データのコピーをスペアレーンを介して送信するというものである。しかし、レーンシャドーイングは、任意の時点においてレーンのサブセットについてだけ機能するに過ぎないから、所与の障害レーン用の分析ウインドウの外部で生じるエラーイベントを見逃すことがある。本発明の第1の側面に従って、バス障害を検出するためのコンピュータによって実装される方法が提供される。本方法は、エラー検出コードの複数のシンドロームを受け取るステップを含む。前記エラー検出コードは、複数のレーンを含み且つ前記エラー検出コードによって保護される、前記バスを介して送信された複数のフレームに関連する。本方法は、前記シンドロームの各々ごとに、前記レーンの各々について、当該レーンが障害レーンであるという仮定の下に、当該シンドロームを復号して復号結果を出力するステップと、前記復号結果が有効な復号であるか否かを決定するステップと、前記復号結果が有効な復号であるという決定に応答して、当該レーンに投票するステップを含む。次に、前記投票に応答して、障害レーンが識別される。前記障害レーンは、前記バス上の少なくとも1つの他のレーンよりも多い投票を有することによって特徴づけられる。本発明の第2の側面に従って、バス障害を検出するためのシステムが提供される。本システムは、前記バスを介して送信された複数のフレーム用のシンドロームを受け取り且つトラップするように構成されたバスインタフェース装置を備える。各フレームは、各レーンごとに複数のビット転送を含む。本システムは、前記バスインタフェース装置と通信するシンドローム処理論理をさらに備える。前記シンドローム処理論理は、エラー検出コードの複数のシンドロームを受け取る動作を実行するように構成される。前記エラー検出コードは、複数のレーンを含み且つ前記エラー検出コードによって保護される、前記バスを介して送信された複数のフレームに関連する。前記シンドローム処理論理は、前記シンドロームの各々ごとに、前記レーンの各々について、当該レーンが障害レーンであるという仮定の下に、当該シンドロームを復号して復号結果を出力する動作と、前記復号結果が有効な復号であるか否かを決定する動作と、前記復号結果が有効な復号であるという決定に応答して、当該レーンに投票する動作を実行するように構成される。前記投票に応答して、障害レーンが識別される。前記障害レーンは、前記バス上の少なくとも1つの他のレーンよりも多い投票を有することによって特徴づけられる。本発明の第3の側面に従って、バス障害を検出するためのコンピュータプログラムが提供される。本コンピュータプログラムは、本発明の第1の側面に係る方法発明の各ステップをコンピュータに実行させるためのものである。添付図面及び以下の詳細な説明を参照すれば、本発明に従った他のシステム、方法及び/又はコンピュータプログラムが、当業者にとって明白になるであろう。そのような追加のシステム、方法及び/又はコンピュータプログラムの全ては、本明細書の開示の範囲内に包含され、本発明の範囲内に包含され、請求項の記載によって保護されることが意図される。本発明は、バスを介して転送される或るフレーム内で唯1つのビット障害が生じるような状況でエラー条件をモニタすることにより、障害レーンを分離する際の精度を向上させることができるという効果を奏する。例えば、或るフレーム内で唯1つのビット障害が検出されるケースでは、レーン障害識別における100の精度を達成することができるという効果を奏する。本発明の実施形態は、エラー検出コードを使用して保護される、バス内の或る障害レーンを検出する。当該障害レーンを統計的に識別するために、複数のカウンタ及びエラー検出コードの複数のシンドロームの分析を使用することができる。分析の結果、バス内のレーンの数と等しい数のエントリを有するビットベクトルが得られる。各レーンごとにカウンタがあり、当該カウンタは分析の結果で増分される。もし、特定のレーンについて、ビットベクトルがゼロに等しければ、当該レーン用のカウンタは放置される。さもなければ、当該レーン用のカウンタは増分される。前記分析は、どの障害レーンがエラーの原因であるかということを完全に解決する代わりに、障害レーンについての複数の可能性を与える。従って、単一のシンドロームが分析されるとき、2つ以上のカウンタが増分されることがある。このプロセスは、新しい複数のシンドロームが受け取られるにつれて、複数回にわたって反復される。単一のシンドローム分析については、障害レーンを解決することは可能ではないかもしれないが、複数のシンドロームが分析され且つ複数のカウンタの蓄積された内容が得られるにつれて、障害レーンは、高い確率でより高いカウントを有することになるであろう。分析されるシンドロームの数が多くなるほど、分析結果の品質が向上する。バスを介して転送される或るフレーム内で唯1つのビット障害が生じるような状況でエラー条件をモニタすると、或る障害レーンを分離する際の精度を向上させることができる。例えば、或るフレーム内で唯1つのビット障害が検出されるケースでは、レーン障害識別における100の精度を達成することができるであろう。本明細書では、巡回冗長検査CRCを参照して、前記分析を詳細に説明する。しかし、前記分析は、任意の線形エラー検出コードにも適用可能であり、CRCだけに制限されない。線形エラー検出コードは、パリティ検査行列Hによって特徴づけられる。一般に、このコードは、マルチビットシンボルにも適用可能であるが、説明の便宜上、このコードは、バイナリシンボルに作用するものと仮定する。パリティ検査行列H内の行の数rは、このコード内の検査ビットの数と等しい。列の数はnは、n=rkと等しい。但し、kは、エラー検出コード内のペイロードビットの数である。dを、kペイロードビットを表す列ベクトルとし、cを、これらのkペイロードビットに関連するrビットを表す列ベクトルとする。その場合、バスを介して送信される全ベクトルは、次の通りである。但し、c及びdは、vを形成するように連結されている。検査ビットcの位置はこのベクトルの上部にある必要はないし、検査ビットは隣接して配置する必要もない。ここで、この構成を仮定するのは、この説明の理解を容易にするために過ぎない。ペイロードdが与えられると、Hv=0となるように検査ビットcが計算される。Hvは、2を法とする行列/ベクトル乗算を使用して、行列Hをベクトルvと乗算することを示す。その後、ベクトルvは、通信路を介して送信され、その結果、ベクトルv上にエラーが加わることがある。このエラーは、nエントリを有するエラーベクトルeによって表される。エラーベクトルeのnエントリは、エラーが存在しない場合は、複数のゼロを有し、エラーが存在する場合は、複数の1を有する。バス内にLレーンが存在し、そして各レーンがバスを介した或るフレームの送信の全体にわたってn/Lビットを搬送するものと仮定する。従って、nがLによって割り切れることも仮定する。ベクトルvは、L部分に分割することができる。その各部分は、次のように隣接する複数のビットを有する。n/Lビットを含むL部分の各々は、通信路を介して送信される。同様に、エラーベクトルeは、次のように分割することができる。データパターンveが受け取られる場合、デコーダは、ベクトルvに依存しない式、s=Hve=0He=He、を使用して、対応するシンドロームを計算する。もし、エラーがなかったならばe=0、シンドロームsはゼロであり、当該フレームは良好であると見なされる。もし、s=Heがゼロに等しくなければ、エラーが検出されたことになり、通常は、再試行が要求されるであろう。さらに、r>n/Lであるものと仮定する。すなわち、このコード内の検査ビットrの数が、所与のレーン内のビット数n/Lよりも多いということである。行列Hは、H=[H1H2...HL]として分割することができる。もし、レーンiにのみ集中しているエラーが存在すれば但し、e=[0...ei...00]であり、eiは非ゼロである、受け取られたシンドロームは、s=Hieiである。Hiは、2つのセクションに分割することができる。第1のセクションHi_Aは、n/L行を含み、第2のセクションHi_Bは、残りの行を含む。この分割は、次に示す通りである。同様に、シンドロームsは、次のように分割することができる。従って、Hi_Aは、次元n/L×n/Lを有する正方行列であり、Hi_Bは、次元r-n/L×n/Lを有する行列である。同様に、s_Aは、n/Lエントリを有し、s_Bは、r-n/Lエントリを有する。もし、このコードが、Hi_Aが可逆行列であるようなものであれば、Hi_Aの逆数とs_Aの乗算結果は、eiに等しい。これは、invHi_As_A=eiとして表すことができる。すなわち、当該レーンに影響するエラーパターンeiを有効に回復するということである。留意すべきは、全てのiについてHi_Aが可逆であるという特性は、例えば、巡回コードを使用することによって得ることができ、そして或るレーン内の連続するビットが当該巡回コード内の連続するビットに対応することを保証する。巡回コードの幾つかの例は、クラスoのBCHコードである。前記エラーパターンeiを回復した結果として、次の式第2の等式も当てはまる。留意すべきは、この式が第1の等式を使用してマーカmiを追加的に定義するということである。式1は、障害バスレーンを検出するための基礎である。もし、レーンiが問題を有するレーンであれば、設計されたコードのH及びシンドロームsのみに依存する、式1の左側のマーカmiは、ゼロに等しくなければならない。どのレーンに障害があるかは知られていないので、式1の左側は、全てのLレーンについて計算される。但し、式1の左側を計算する間に、インデックスiを1からLまで変更させつつ、本質的に各レーンが障害レーンであるものと順々に仮定する。この計算がゼロに帰着したインデックスiについては、関連するレーンが障害レーン候補として宣言され、分析ビットベクトル投票_レーンのi番目のビットが1にセットされる。すなわち、投票_レーン[i]は、1にセットされる本明細書では、これをレーンiに投票すると称する。この計算が非ゼロに帰着したインデックスiについては、投票_レーン[i]は、0にセットされる本明細書では、これをレーンiに投票しないと称する。留意すべきは、各レーンごとにシンドロームs_Aのサブセットを使用してエラー量e_iが計算され、その間に、残りのシンドロームビットs_Bを使用して候補エラーベクトルのクロス検査が実行されるということである。もし、クロス検査が成功すれば、有効な復号信号が生成される。さもなければ、無効な復号信号が生成される。1つのフレームに適用される前記手順の説明は、当分野で公知のバスエラー訂正手順に対応しない。バスエラー訂正手順では、各シンドロームの復号は、訂正不能エラー信号を生じるか、又はバスに適用されるとデータ破壊を除去するであろうと信じられる訂正を生じる。対照的に、前述の手順では、多数のフレームが処理された後にだけ障害レーンを検出することを目的として、各レーンが障害レーンであるという仮定の下に各シンドロームの復号を実行し、そして有効な復号が得られるならば、そのレーンは投票を受け取る。従って、前述の手順の実施形態を使用して、1つのフレームが処理されたときは、一意的な障害レーンが必ずしも識別されるとは限らない。前述のように、実施形態に従って、各ビットレーンごとに1つずつ設けられたカウンタは、障害レーンである関連するレーンの投票をカウントする。これらのカウンタは、複数のエラー検出従ってシンドローム分析イベントにわたって持続するから、これらのカウンタは走行カウンタとも呼ばれる。ビットベクトル投票_レーンは、各ビットレーン用のカウンタを増分するために使用することができる。具体的には、ビットベクトル投票_レーンの値が、これらのカウンタの現在値に加算される。唯1つのレーンについてマーカmiの計算結果がゼロになることがあるが、一般に、式1では、2つ以上のレーンについてマーカmiの計算結果がゼロになることがあり得る。このことは、対応するカウンタが増分されるであろうということを意味する。もし、或るレーンが持続的なエラーを有するが、その実際のエラーパターンがアクセス相互間で変化すれば、当該障害レーン用のカウンタは、他のレーン用のカウンタよりも多い増分を得る。複数のカウンタを追跡するハードウェア、ファームウェア又はソフトウェアは、これを使用することにより、或るカウンタが閾値に達したか否かを決定する。そうであれば、対応するレーンは、レーンスペアリング用の良い候補である。もし、エラーパターンが単一ビットエラーであれば、エラー検出コードが適切に設計されていることを条件として、少しの曖昧さもなく、障害レーンを正確に識別することができる。実施形態では、使用されるエラー検出コードは、少なくとも任意の2ビットエラーを検出するという能力を有する。従って、任意の2つの単一ビットエラーのシンドロームは、同じではあり得ない。単一ビットエラーが存在する場合、2つ以上のレーンが単一ビットエラーを有するeiを計算し、そして式1の計算の結果が同時にゼロになることはあり得ない。代替実施形態では、式1の代わりに、式2及び3の2段階の計算を実行することができる。但し、eiは、レーンi用の候補エラーベクトルと呼ばれる。各レーンi={1...M}ごとに、ei内に正確に1ビットエラーが存在し、そしてそれと同時に、mi=0であるか否かが決定される。この特性を有する唯1つのが見出されるときは、mi=0であるが、eiが正確に1ビットエラーではない、と異なる他のiがあったとしても、オプションとして、常に、だけのために投票が生成される。これは、一般的なレーンエラーパターンのエラー検出能力をわずかに犠牲にするが、少しの曖昧さもなく、全ての単一ビットエラーが検出されることを保証するという有利な効果を有する。換言すれば、単一ビットエラーを示す候補エラーベクトルが存在するときは、常に、復号中に生成された諸レーン用の他の全ての可能な投票が取り消されるということである。ここで、図1を参照して説明する。図1のメモリシステム100に含まれる複数の完全バッファ型デュアルインラインメモリモジュールDIMMは、高速通信路を介して通信し、本明細書に開示するようなエラー検出コードシンドロームの分析を使用する。メモリシステム100は、処理システム102用の主メモリとして、ホスト処理システム内に組み入れることができる。メモリシステム100に含まれる多数のDIMM103a~103dは、ハブ装置104を備えており、通信路106又はカスケード相互接続バス差動式の単方向性上流バス118及び差動式の単方向性下流バス116から構成されるを介して通信する。DIMM103a~103dは、ダブルデータレートDDR動的ランダムアクセスメモリDRAM装置でもよい、複数のメモリ装置109に加えて、当分野で公知の他のコンポーネント例えば、抵抗、コンデンサ等を含むことができる。DDRの任意のバージョン例えば、DDR2、DDR3、DDR4等をDIMM103a~103d上に含めることができるので、メモリ装置109は、DRAM109又はDDRxと呼ばれることもある。メモリコントローラ110は、DIMM103aとインタフェースし、通信路106を介して、DIMM103a~103dのうち任意のものを目標とするコマンド、アドレス及びデータ値を送信する。コマンド、アドレス及びデータ値は、フレームとしてフォーマット化され、高いデータ転送速度における送信のために直列化されることがある。一般に、ハブ装置104及びメモリコントローラ110は、バスインタフェース装置と呼ばれることもある。実施形態では、或るDIMMが上流DIMM又はメモリコントローラ110から或るフレームを受け取るとき、当該DIMMは、当該フレームをディジーチェーン内の次のDIMMに再駆動する例えば、DIMM103aはDIMM103bに再駆動し、DIMM103bはDIMM103cに再駆動し、以下同様である。それと同時に、当該DIMMは、当該フレームを復号してその内容を決定する。従って、各DIMMにおける再駆動及びコマンド復号は、並行に又は殆ど並行に生ずることができる。もし、当該コマンドが読み取り要求であれば、DIMM103a~103d及びメモリコントローラ110は、当該コマンドの内容を使用して、上流バス118上の読み取りデータトラフィックを追跡する。DIMM103a~103d上のハブ装置104は、通信路106へのバスインタフェース例えば、ポートを介して諸コマンドを受け取る。ハブ装置104上のバスインタフェースは、幾つかあるコンポーネントのうち、特に受信機及び送信機を含む。実施形態では、各ハブ装置104は、通信路106を介して上流ハブ装置104又はメモリコントローラ110と通信するための上流バスインタフェース及び通信路106を介して下流ハブ装置104と通信するための下流バスインタフェースの両方を含む。また、各ハブ装置104は、カウンタ112、レジスタ114及びエラー処理論理ERRLOGIC120を含む。同様に、メモリコントローラ110も、カウンタ112、レジスタ114及びエラー処理論理120を含むことができる。カウンタ112は、エラー率を計算し且つ障害条件をレジスタ114内にセットするために、エラー処理論理120によって使用されるエラーカウンタとして機能することができる。カウンタ112は、ソフトウェア、ファームウェア、ハードウェア又はその組み合わせの形態で実装することができる。特定の障害レーンを識別するためのシンドロームの詳細な処理は、処理システム102のシンドローム処理論理122にオフロードすることができる。図1には、メモリコントローラ110を単一のメモリ装置上のハブ装置104に接続する単一のメモリ通信路106だけが示されているが、これらのモジュールから構成されるシステムは、2つ以上の個別のメモリ通信路を含むことができる。その場合、これらのメモリ通信路の各々は、所望のシステム機能性及び/又は性能を達成するために、単一の通信路に複数のモジュールが装着されているときは単独で動作されるか又は2つ以上の通信路に複数のモジュールが装着されているときは並列に動作される。さらに、通信路106内には、任意の数のレーンを含めることができる。例えば、下流バス116は、13ビットレーンと、2スペアレーンと、1クロックレーンを含むことができる。それに対し、上流バス118は、20ビットレーンと、2スペアレーンと、1クロックレーンを含むことができる。8、12及び16転送フレームがサポートされるように実施形態では、13ビットレーンが各転送内に含まれる、下流CRCの実施形態が選択/適用される。この下流CRCは、任意のレーン障害、任意の転送障害及び最大5ビットのランダムエラーを検出する。これに加えて、下流CRCエラーが検出される場合は、その下流フレームの内容が無視され、そして障害情報レジスタFIRビットがレジスタ114内にセットされる。FIRは、ハブ装置104内で検出される障害に関する情報を格納するための、アーキテクチャで定義された手段である。メモリコントローラ110及び/又は他のシステム要素は、FIRを照会することにより、どのようなアクションを実行する必要があるかもしあればを決定することができる。システム100がイネーブルされている場合、セットされているFIRビットに応答して、エラー回復状態に入ることができる。検査ビット用の標準ロケーションは、コードワードの先頭又は末尾にある。下流コードの実施形態は、検査ビット位置が非標準ロケーションにあるように設計されている。この非標準ロケーションが望ましいのは、プロトコルがどのように設計されているかという問題と関係するからである。さらに、検査ビットを標準の位置に配置した後、これらの検査ビットをあちこち移動させると、コードの重要な特性例えば、全レーン障害検出等が破壊されることがある。さらに、全てのロケーションがCRC検出を提供するのに適しているとは限らない。本明細書に開示する典型的な下流フレームフォーマットは、検査ビット位置の非標準ロケーションを使用する。最大20ビットレーンが最大8転送についてカバーされるように、上流CRCが選択/適用される。この上流CRCは、任意のレーン障害、任意の転送障害エスケープ率は2-16及び最大4ビットのランダムエラーを検出する。さらに、全ての上流ハブ装置104は、当該ハブ装置104を通過する際に上流CRCデータをモニタすることにより、上流CRCエラーを検出する。任意のエラーが検出されると、当該ハブ装置104は、全ての読み取りトラフィックを中断し、ポイゾンされたpoisonedCRCを転送し、FIRビットをセットし、エラー回復状態に入る。実施形態では、下流CRCエラー検出コードは、13レーン×16ビート最大フレームフォーマット上で使用される。このCRCコードは、任意のレーン障害、任意の転送障害及び最大5ビットのランダムエラーを検出することができる。特に、ランダムなサイレントエラー率は、ほぼ2のマイナス17乗~2-17である。このCRC多項式の実施形態は、次の通りである。これは、他のゼロのうち連続的な5つのゼロを有するBCHBoseChaudhuriHocquenghemコードである。この典型的なコードは、最小距離6を有する。基本コードは、実際には17ビットを必要とするに過ぎないから、適切な長さを与えるために追加ビットが人為的に加えられている。図2は、本明細書に開示する通信路CRCの実施形態を使用する、下流の8転送フレームを示す。図3は、本明細書に開示する通信路CRCの実施形態を使用する、下流の12転送フレームを示す。同様に、図4は、本明細書に開示する通信路CRCの実施形態を使用する、下流の16転送フレームを示す。図2~図4に示すように、CRCビット位置は、次の通りである。156、157、158、159、169、170、171、172、182、183、184、185、186、195、196、197、198及び199。一般的なパリティ検査行列を計算した後に、前述の位置におけるCRCビットを計算するのに適した行列を得るために、ガウス消去法Gaussianeliminationが使用された。CRCの符号化及び復号化の両方のために、標準的なシフトレジスタの実装を使用することができるが、高速バスについては、排他論理和を使用する並列アプローチが好ましい。エラー処理論理120内のCRC論理を再使用するために、CRCは、最長のフレームサイズについて定義される。16転送フレームの場合、最長のフレームサイズは、208ビットである。全ての208ビットを使用するとは限らない任意のフレームは、単に全ての未使用ビットをゼロにセットする。基本的なCRCアルゴリズムの実施形態は、CRC検査ビットを符号化し、フレームプロトコルに従って、これらのCRC検査ビットをバスを介して送信する。当該データが当該バスの他端例えば、図1のハブ装置104内にあるチェッカによって受け取られた後、新しい又は再生成された1組のCRC検査ビットが計算される。次に、シンドロームベクトルを形成するために、前記受け取られたCRC検査ビット及び前記再生成されたCRC検査ビットが比較排他論理和される。もし、このシンドロームがビット単位の0ベクトルであれば、当該データの送信中にエラーが生じなかったと仮定される。任意の非ゼロシンドロームは、エラーが生じたことを示す。この実装は、標準的なCRCと同様に、シンドロームの調査による直接的なエラー分離をサポートしない。図1のハブ装置104は、下流CRCエラーを検出するとき、その下流フレームの全ての内容を無視し、適切なFIRビットをセットし、ポイゾンし、障害のあるCRCを転送し、そしてイネーブルされていることを条件として、エラー回復状態に入る。図1のカウンタ112は、各受信機リンクごとに、CRCエラー率を計算するための構成可能なカウンタを含む。また、図1のカウンタ112は、各信号レーンごとに、各CRCシンドロームの分析結果を記録するためのエラーカウンタを含むことができる。図1のエラー処理論理120内にあるエラー率論理は、各実行時間、メモリ通信路フレームごとにタイマを増分し、またカウンタ112を使用して、検出された任意の非ポイゾンCRCエラーをカウントする。前述の下流のケースと類似する態様で、可能な障害レーンを決定するために、障害のある各CRCシンドロームがシンドローム処理論理122によって分析される。その結果は、これらの障害が存在し得るレーンに投票することにより、当該論理によって通信される。CRCは、或るフレーム内の全ての単一ビットエラーについてその障害レーンを一意的に識別し且つ統計的に有意な数の障害についてのランダムなレーン障害の間にその障害レーンを正確に識別するのに十分に強力である。CRCエラー訂正は、完全にランダムなレーンエラーについては一意的なエラー検出を保証するには十分に強力ではないので、複数の障害候補が識別されることがあり得る。カウンタ112内のレーンエラーカウンタは、それらのレーンが障害候補として識別される当該レーンに投票が行われるごとに増分する。メモリ通信路106が正常に動作しているとき、カウンタ112内の全てのレーンエラーカウンタは、CRCエラー閾値を超過していないので、周期的にクリアされるであろう。メモリ通信路106が再初期化によって訂正することができない間欠エラーを発生する場合、カウンタ112内のCRCエラーカウンタは、その構成可能な閾値を超えるであろう。この時点で、カウンタ112内の全てのレーンエラーカウンタがフリーズし、そしてアテンションを要求するために、FIRビットがレジスタ114にセットされるであろう。シンドローム処理論理122は、カウンタ112内のレーンエラーカウンタを読み取り且つどのレーンもしあればを修復すべきであるかを決定することにより、前記アテンション要求をサービスすることができる。各CRCエラーについて複数のレーン障害候補が識別されることがあるが、エラーカウンタが閾値を超えるのに十分なCRCシンドローム分析結果を蓄積したときは、最も頻繁に障害を起こしているレーンの明らかな統計的指標が存在するであろう。もし、識別された障害を修復するためにスペアレーンが使用可能であれば、処理システム102は、障害レーンを非活動化するコマンドを発行することにより、前記間欠障害をハード障害に変更することができる。このハード障害は、メモリコントローラ110及び/又はハブ装置104によって自動的に起動される後続の再初期化及び修復シーケンスによって検出し且つ訂正することができる。実施形態では、通信路106内の各受信機は、1つの障害CRCシンドロームの結果を記録するための、レジスタ114内の専用トラップレジスタを含む。かかるトラップレジスタは、検出された最初のCRCエラーを記録するか又は検出された最新のCRCエラーを連続的に更新するように構成することができる。新しいエラーが捕捉されるとき、有効ビットがトラップレジスタ内にセットされ、そしてトラップレジスタが処理システム102によって読み取られるとき、有効ビットが自動的にリセットされる。実施形態では、1つのレーンの投票が他のレーンの投票を著しく上回らなければ、複数のレーンのうち1つのレーンが選択され且つ修復される。次に、新しいエラー率がモニタされる。もし、例えば、閾値内で修復後の新しいエラー率が以前のエラー率よりも著しく良くなければ、最初の修復がバックオフされ元に戻され、そして他のレーンが選択され且つ修復される。この修復及びバックオフの処理は、新しいエラー率が以前のエラー率よりも著しく良くなるまで、継続することができる。実施形態では、2つ以上のレーン修復が許容されるならば、修復のために上位の候補から2つ以上のレーンが選択される。このようにして、複数の修復を実行することができる。図5は、本明細書に開示する通信路CRCの実施形態を使用する、上流の8転送フレームを示す。その上流CRCは、8転送フレームフォーマット並びにそのCRC及びエラー検査ビット番号について、次のように説明される。このコードは、20レーン×8ビートフレームフォーマットについて使用することが意図される。このコードは、任意のレーン障害、任意の転送障害エスケープ率は2-16及び最大4ビットのランダムエラーを検出することができる、実施形態では、上流CRC多項式は、次の通りである。これは、他のゼロのうち連続的な4つのゼロを有するBCHコードである。従って、このコードは、最小距離5を有する。下流フォーマット用のこのコードの多項式は、上流フォーマット用のコードに1x2を乗算することにより得られた。図5に示されるようなCRCビット位置は、144、145、146、147、148、149、150、151、152、153、154、155、156、157、158及び159である。典型的なCRCアルゴリズムは、CRC検査ビットを符号化し、フレームプロトコルに従って、これらのCRC検査ビットをバスを介して送信することを含む。当該データが当該バスの他端例えば、図1のハブ装置104内にあるチェッカによって受け取られた後、新しい又は再生成された1組のCRC検査ビットが計算される。次に、シンドロームベクトルを形成するために、前記受け取られたCRC検査ビット及び前記再生成されたCRC検査ビットが比較排他論理和される。もし、このシンドロームがビット単位の0ベクトルであれば、当該データの送信中にエラーが生じなかったと仮定される。任意の非ゼロシンドロームは、エラーが生じたことを示す。この実装は、標準的なCRCと同様に、シンドロームの調査による直接的なエラー分離をサポートしない。この説明は、特定の数のレーン及び転送を有する下流フレーム及び上流フレーム、特定の最大数の単一ビットエラーのためのエラー検出コード、レーンエラー及び潜在的な転送エラーに焦点を合わせているが、他のパラメーターのためのエラー検出コードを設計することも可能である。本明細書に開示する技術は、エラー検出コードを使用する種々の通信バスに適用することができ、メモリシステムへの適用に制限されない。実施形態では、ハブ装置104は、分岐接続又は2地点間バス構造さらに、かかるバス構造は1つ以上の追加のハブ装置に対するカスケード接続を含むことができるを通して、図1のメモリコントローラ110に接続することができる。メモリアクセス要求は、メモリコントローラ110からバス構造例えば、メモリバスを通して選択されたハブ装置104に送信される。ハブ装置104は、これらのメモリアクセス要求を受け取ることに応答してこれを変換することにより、ハブ装置104からの書き込みデータを格納するか又は読み取りデータをハブ装置104に供給するようにメモリ装置109を制御する。読み取りデータは1つ以上の通信フレームへ符号化され、メモリバスを通してメモリコントローラ110に送信される。代替実施形態では、メモリコントローラ110は、これを1つ以上のプロセッサチップ及びサポート用論理と統合して、1つ以上のプロセッサ及び/又はサポート用論理を搭載したマルチチップキャリア内に含まれる、個別のチップ一般にノースブリッジチップと呼ばれるもの内にパッケージ化するか、又はアプリケーション/環境と最も良く適合する種々の代替形式でパッケージ化することができる。これらの解決策のうち任意のものは、1つ以上のハブチップ及び/又はメモリ装置に接続するために、1つ以上の狭い/高速リンクを使用してもよいし、そのようなリンクを使用しなくてもよい。図6は、シンドローム分析を使用して障害バスレーンを検出するためのプロセス600を示す。ブロック602では、シンドローム処理論理122は、バス例えば、図1の上流バス118を介して送信された複数のフレーム用のシンドロームを受け取る。各フレームは、図2~図5に示すように、レーンごとに複数のビット転送を含む。これらのシンドロームは、バスインタフェース装置例えば、メモリコントローラ110又はハブ装置104からのトラップされた値とすることができる。これらのシンドロームは、図1のレジスタ114内にトラップすることができ、そしてエラー条件を分離するための詳細なシンドローム分析を開始すべき閾値をカウンタ112が超えたことをエラー検出論理120が決定するとき、障害指示がセットされる。ブロック604では、シンドローム処理論理122は、各レーンが障害レーンであるという仮定の下に、これらのシンドロームをエラーベクトルに復号する。これらのエラーベクトルは、或るエラー条件に寄与するであろう特定のシンドロームビットの組み合わせを選択する。同じシンドロームビットが複数のエラーベクトル計算に関係することがあり得るので、全ての可能なエラーの組み合わせについて当該エラーを単一レーンに分離することは可能ではないことがある。ブロック606では、シンドローム処理論理122は、複数のフレームのうち1つのフレームからのエラーベクトル内に単一ビット障害を有する唯1つのレーンを復号することに応答して、不良レーンを識別する。また、シンドローム処理論理122は、これらのシンドローム用の検証ビットが、これらのシンドロームから復号されたエラーベクトルに関して一致するか否かを決定することができる。なお、これらの検証ビットは、エラー検出コード内にある程度の冗長性を提供し、前記不良レーンに投票するためにエラーベクトルと組み合わせて使用することができる。シンドローム処理論理122は、前記単一ビット障害を有する唯1つのレーンを復号することに応答して、当該単一ビット障害に対する100のエラー識別精度を保証するために、他の全てのレーンのための投票をクリアすることができる。ブロック608では、シンドローム処理論理122は、複数の単一ビット障害が存在するという決定に応答して、本明細書に開示する投票プロセスの実施形態を使用することにより、エラーベクトルが複数のフレームにわたる或るエラーを一貫して示す場合には、不良レーンを識別する。実施形態では、シンドローム処理論理122は、或るエラーが一貫して示されるか否かを決定するために、受け取られた投票の数を比較する。この比較は、より少ない投票数を有するレーンに対するより多い投票数を有するレーンの比率を計算した後、当該計算された比率を比率閾値と比較することを含むことができる。例えば、或るレーンが示す障害頻度が他のレーンが示す障害頻度よりも4倍以上大きければ、当該レーンを不良レーンとして宣言することができる。この比較は、統計的に有意なサンプルセットが使用されることを保証するために、所定数のシンドロームが分析された後に、これを行うことができる。実施形態では、走行カウンタは、不良レーンを識別し且つ修正アクション例えば、バスインタフェース装置のリセット、スペアレーンの使用又はバスレーンのリトレーニングを開始した後にリセットされる。他の実施形態では、走行カウンタは、指定された期間の後にリセットされる。請求項に記載された全ての手段又はステップ機能要素に対応するフレーム、材料、行為及びそれらの均等物は、請求項に明示的に記載された他の要素と組み合わせてその機能を実施するための任意のフレーム、材料又は行為を含むことが意図される。本発明に関する記述は、例示及び説明を目的として与えられたものであり、網羅的であること及び開示された形態に本発明を限定することを意図するものではない。当業者にとって、本発明の範囲及び精神から逸脱することなく、多くの修正及び変形を施し得ることが明らかであろう。実施形態は、本発明の原理及び実際の応用を最もよく説明し、考えられる特定の用途に適するような種々の修正を伴う種々の実施形態に関して当業者が本発明を理解することを可能にするために、選択され説明されたものである。本発明の諸能力は、ソフトウェア、ファームウェア、ハードウェア又はそれらの組み合わせの形態で実装することができる。当業者には明らかなように、本発明の諸側面は、システム、方法又はコンピュータプログラムとして具体化することができる。従って、本発明の諸側面は、完全にハードウェアの実施形態、ファームウェア、常駐ソフトウェア、マイクロコード等を含む完全にソフトウェアの実施形態、又はソフトウェア及びハードウェア側面を組み合わせた実施形態の形式を取ることができ、これらの全てを一般に回路、モジュール又はシステムと称することができる。さらに、本発明の諸側面は、コンピュータ可読プログラムコードを1つ以上のコンピュータ可読媒体上に具体化したコンピュータプログラムの形式を取ることができる。図1のシンドローム処理論理122を実行する諸命令を格納するために、1つ以上のコンピュータ可読媒体の任意の組み合わせを使用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。例えば、コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁気、赤外線、半導体システム、装置又はこれらの任意の適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体の特定の例は、1つ以上の線を有する電気接続、ポータブルコンピュータ用のフレキシブルディスク、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM、消去可能プログラマブル読み取り専用メモリEPROM又はフラッシュメモリ、光ファイバ、ポータブルのコンパクトディスクを使った読み出し専用メモリCD-ROM、光ストレージ装置、磁気ストレージ装置又はこれらの任意の適切な組み合わせとすることができる。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム等に関連して又はこれらによって使用するためのプログラムを保持するか又は格納することができる、任意の媒体とすることができる。コンピュータ可読信号媒体は、伝搬されるデータ信号の形式を有することもできるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ使用可能プログラムコードを具体化することができる。そのような伝搬信号は、電磁気、光学又はその任意の適切な組み合わせ等を含む、種々の形式のうち任意の形式を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではない任意のコンピュータ可読媒体であって、命令実行システム等に関連して又はこれらによって使用するためのプログラムを通信し、伝搬し又は移送することができる。コンピュータ可読媒体上に具体化されたプログラムコードは、無線、有線、光ファイバケーブル、RF又はこれらの任意の適切な組み合わせを含む、適切な任意の媒体を使用して送信することができる。本発明の諸側面に係る動作を実施するためのコンピュータプログラムコードは、Java、Smalltalk、C等のようなオブジェクト指向プログラミング言語及びCプログラミング言語又は同様のプログラミング言語のような通常の手続き的プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書くことができる。かかるプログラムコードは、完全にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上で、独立のソフトウェアパッケージとしてユーザコンピュータ上で完全に実行可能であり、その一部をユーザコンピュータ上で且つ他の一部を遠隔コンピュータ上で実行可能であり、或いは遠隔コンピュータ又はサーバ上で完全に実行可能である。後者のシナリオでは、遠隔コンピュータは、ローカルエリアネットワークLAN又は広域ネットワークWANを含む任意のタイプのネットワークを通してユーザコンピュータに接続することができ、或いはその接続を例えば、インターネットサービスプロバイダを使用するインターネットを通して外部コンピュータに行うことができる。以上では、本発明の実施形態に従った方法、装置システム及びコンピュータプログラムのフローチャート及び/又はブロック図を参照して、本発明の諸側面を説明した。この点に関し、フローチャート及び/又はブロック図の各ブロック、並びにフローチャート及び/又はブロック図の諸ブロックの組み合わせは、諸コンピュータプログラム命令によって実装することができることを理解されたい。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、前記コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサ上で実行される諸命令が、前記フローチャート又はブロック図の諸ブロックで指定された機能/行為を実装するための手段を作成することを目的として、一のマシンを生産することができる。また、これらのコンピュータプログラム命令をコンピュータ可読媒体内に格納すると、前記コンピュータ可読媒体内に格納された諸命令が、前記フローチャート及び/又はブロック図の諸ブロックで指定された機能/行為を実装する命令手段を含む一の製品を生産することを目的として、コンピュータ又は他のプログラム可能なデータ処理装置に対し特定の態様で機能するように指示することができる。また、これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置にロードすると、前記コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で実行される諸命令が、前記フローチャート及び/又はブロック図の諸ブロックで指定された機能/行為を実装するためのプロセスを提供することを目的として、一のコンピュータ実装方法を生成するように前記コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で一連の動作ステップを実行させることができる。諸図面のうちフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータプログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令から成る、モジュール、セグメント又はコード部分を表すことがある点に留意されたい。また、幾つかの代替的実装では、ブロック内に表記された機能を図面に示した順序とは異なる順序で実施することができる点にも留意されたい。例えば、特定の機能性に依存して、連続的に示した2つのブロックを実質的に並列に実施したり、これらのブロックを反対の順序で実施することができる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェアベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる点にも留意されたい。添付図面は、1例であるに過ぎない。本発明の精神から逸脱することなく、これらの図面又はそこに記載された諸ステップ諸動作に対し多くの変形を施すことができる。例えば、これらのステップを異なる順序で行ったり、諸ステップを追加、除去又は修正することができる。これらの変形の全ては、本発明の範囲に属するものと考えられる。