(57)【特許請求の範囲】
【請求項１】
メモリ・コントローラがエラー検出に応答する方法であって、
単一のコマンドを少なくとも第１のコマンドと第２のコマンドとに分割するステップと、
前記第１のコマンドを第１のリドライブ装置に向けて、前記第２のコマンドを第２のリドライブ装置に向けてそれぞれ発行するステップと、
メモリ・コントローラと前記第２のリドライブ装置との間の伝送エラーの検出に応答して、前記第２のコマンドを前記第２のリドライブ装置に向けて再発行するステップと、
前記第１のコマンドに応答して前記第１のリドライブ装置から受け取った第１のデータを第１のバッファに格納するステップと、
前記再発行された第２のコマンドに応答して前記第２のリドライブ装置から受け取った第２のデータを第２のバッファに格納するステップと、
前記単一のコマンドに応答したデータを完成させるために、前記第２のデータを前記第１のデータと結合させるステップと、を含み、
前記伝送エラーを検出するステップは、前記第２のコマンドに応答して前記第２のリドライブ装置から警告状態フレームを受け取るステップを含む、方法。
【請求項２】
前記第１のコマンドの発行後に第３のコマンドを前記第１のリドライブ装置に向けて発行するステップと、
前記第３のコマンドに応答して前記第１のリドライブ装置から受け取った第３のデータを前記第１のバッファに格納するステップと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記第２のコマンドの発行後に第４のコマンドを前記第２のリドライブ装置に向けて発行するステップと、
前記メモリ・コントローラと前記第２のリドライブ装置との間の伝送エラーの検出に応答して、前記第４のコマンドを前記第２のリドライブ装置に向けて再発行するステップと、
前記再発行された第４のコマンドに応答して前記第２のリドライブ装置から受け取った第４のデータを前記第２のバッファに格納するステップと、をさらに含む、請求項２に記載の方法。
【請求項４】
１つまたは複数の単一コマンドに応答したデータを完成させるために、前記第４のデータを前記第３のデータと結合させるステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記警告状態フレームの受信に応答して、前記第１のリドライブ装置及び前記第２のリドライブ装置の両方に向けた後続コマンドの発行を停止するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記メモリ・コントローラと前記警告状態フレームの前記第２のリドライブ装置との間のリンクをクリアするためのソフト・リセットを発行するステップをさらに含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、データ通信に関し、より具体的には、エラー検出に応答することに関する。
【背景技術】
【０００２】
データの正常な格納及び伝送が、データ内のエラーによって妨げられることがある。多数の要因によりデータ破損が生じ得る。例えば、アルファ粒子又はノイズに起因する意図していないビット・フリップからソフト・エラーが生じることがある。別の例として、時間の経過に伴う温度又は電圧の変動に起因するドリフト又はスキューが、データ内にハード・エラーを生じさせることがある。
【０００３】
通常、エラーの検出を受けて、訂正行動（corrective action）が開始される。例えば、メモリ・コントローラは、伝送中にコマンドが破損したと判断した後、コマンドを再発行することができる。ある場合には、メモリ・コントローラは、リンクを介してコマンドをメモリ構造体に向けて再発行する前に、メモリ・コントローラとメモリ構造体の間のリンクのリトレインを開始することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
訂正行動は、幾つかの動作を実行するために、メモリ構造体の能力を制限することがある。例えば、リンクのリトレイン中、メモリ・コントローラは、読み書きコマンドをメモリ構造体に伝送するためにリンクを使用できないことがある。メモリ・コントローラが訂正行動を実行する時間を減らすことにより、通常の動作を実行するためのメモリ・コントローラの可用性を増大させることができる。可用性の増大が、効率の改善及びメモリ待ち時間の減少につながる。従って、メモリ・コントローラが、訂正行動に対して通常の動作に費やす時間の割合を増大させることが望ましい。
【課題を解決するための手段】
【０００５】
特定の実施形態において、エラー検出に応答するための方法が開示される。本方法は、第１のコマンドを第１のリドライブ（redrive）装置に向けて、第２のコマンドを第２のリドライブ装置に向けて発行することを含む。本方法はまた、メモリ・コントローラと第２のリドライブ装置との間での伝送エラーの検出に応じて、第２のコマンドを第２のリドライブ装置に向けて再発行することも含む。本方法は、第１のコマンドに応答して第１のリドライブ装置から受け取った第１のデータを第１のバッファに格納することをさらに含む。本方法は、再発行された第２のコマンドに応答して第２のリドライブ装置から受け取った第２のデータを第２のバッファに格納することを含む。本方法はまた、第２のデータを第１のデータと結合させることも含む。
【０００６】
別の実施形態において、エラー検出に応答する方法が開示される。本方法は、メモリ・コントローラとリドライブ装置との間のリンクのリトレインの開始に応じて、一定パターンを伝送することを含む。本法はまた、一定パターンを最小継続時間伝送した後に一定パターンの伝送を中断し、遷移のシーケンスを伝送することも含む。本方法は、遷移のシーケンスを伝送した後、一定パターンの伝送を再開することをさらに含む。
【０００７】
別の実施形態において、エラー検出に応答する方法が開示される。本方法は、第１のスクラブ・コントローラにおいて第１のスクラブ・コマンドを生成することを含む。本方法はまた、第２のスクラブ・コントローラにおいて第２のスクラブ・コマンドを生成することも含む。本方法は、メモリ・コントローラ・ポートにおいて第１のスクラブ・コマンドと第２のスクラブ・コマンドの発行を交互に行うことをさらに含む。
【０００８】
ここで本方法の実施形態を、添付図面を参照しながら単なる例証として説明する。
【図面の簡単な説明】
【０００９】
【図１】エラー検出に応答するためのシステムの第１の実施形態のブロック図である。
【図２】エラー検出に応答するためのシステムの第２の実施形態のブロック図である。
【図３】エラー検出に応答する方法の第１の実施形態のフロー図である。
【図４】エラー検出に応答するためのシステムの第３の実施形態のブロック図である。
【図５】エラー検出に応答する方法の第２の実施形態のフロー図である。
【図６】エラー検出に応答するためのシステムの第４の実施形態のブロック図である。
【図７】エラー検出に応答するためのシステムの第５の実施形態のブロック図である。
【図８】エラー検出に応答する方法の第３の実施形態のフロー図である。
【発明を実施するための形態】
【００１０】
図１は、エラー検出に応答するための、全体が１００で示されるシステムの第１の実施形態の図である。このシステム１００は、第１のリドライブ装置１０４と、第２のリドライブ装置１０６と、第１のバッファ１０８及び第２のバッファ１１０を有するメモリ・コントローラ１０２とを含む。メモリ・コントローラ１０２及び第１のリドライブ装置１０４は、第１の高速リンクを介して接続することができ、メモリ・コントローラ１０２及び第２のリドライブ装置１０６は、第２の高速リンクを介して接続することができる。各々の高速リンクは、２つの一方向高速リンクを指すことができる。例えば、メモリ・コントローラ１０２は、第１の高速リンクのサウスバウンド・リンクを介して第１のリドライブ装置１０４に伝送することができ、第１のリドライブ装置１０４は、第１の高速リンクのノースバウンド・リンクを介してメモリ・コントローラ１０２に伝送することができる。
【００１１】
一般的に、メモリ・コントローラ１０２は、単一のコマンドを２つのコマンド（例えば、第１のコマンド１１２及び第２のコマンド１１４）に分割することができる。第１のコマンド１１２は第１のリドライブ装置１０２に伝送することができ、第２のコマンド１１４は第２のリドライブ装置１０６に伝送することができる。単一のコマンドを完了するために、第１のコマンド１１２及び第２のコマンド１１４の両方を実行することができる。メモリ・コントローラ１０２は、第１のコマンド１１２の伝送に応答して第１のリドライブ装置１０４から正常なデータ（good data）（例えば、第１のデータ１１６）を受け取り、かつ、第２のコマンド１１４の伝送に応答してメモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラー１１８を検出することができる。単一コマンドへの応答は、第１のコマンド１１２及び第２のコマンド１１４の両方に応答して正常なデータを受け取らなければ、完了することができない。第１のデータ１１６を破棄し、第１のコマンド１１２及び第２のコマンド１１４の両方を再伝送する代わりに、メモリ・コントローラ１０２は、第１のコマンド１１２に応答して受け取った正常なデータ（例えば、第１のデータ１１６）を格納することができる。メモリ・コントローラ１０２は、第２のコマンド１１４（例えば、再発行された第２のコマンド（１２０）を第２のリドライブ装置１０６に向けて再発行することができる。
【００１２】
再発行された第２のコマンド１２０に応答して正常なデータ（第２のデータ１２２）を受け取った後、メモリ・コントローラは、第１のデータ１１６と第２のデータ１２２を結合させて、単一コマンドに応答した同期された完全なデータを生成する。両方のコマンドの代わりに第２のコマンド１１４だけを再発行することにより、幾つかのエラーを防ぐことができる。例えば、第１のコマンドの実行が、メモリ構造体内のデータを変更することがある。第１のコマンド１１２の再発行により、第１のデータ１１６において取り出された最初のデータの代わりに、メモリ構造体内の変更されたデータの取り出しが開始されることがある。
【００１３】
再発行された第２のコマンド１２０に応答して受け取った第２のデータ１２２と結合させるために第１のデータ１１６を保存することにより、実行される訂正行動の複雑さを軽減することができる。訂正行動の複雑さを軽減することにより、訂正行動を実行するのに費やされる時間を減らし、通常のプロセスを実行するのにメモリ・コントローラを使用できる時間を増やすことができる。訂正行動を実行するのに費やされる時間に対して、通常のプロセスを実行するのに費やされる時間の割合を増やすことにより、メモリ・コントローラ１０２の効率を改善し、メモリ待ち時間を減らすことができる。
【００１４】
メモリ・コントローラ１０２は、第１のコマンド１１２を第１のリドライブ装置１０４に向けて、第２のコマンド１１４を第２のリドライブ装置１０６に向けて発行するように構成することができる。メモリ・コントローラ１０２は、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラーの検出に応答して、第２のコマンド（例えば、再発行された第２のコマンド１２０）を第２のリドライブ装置１０６に向けて再発行するように構成することができる。メモリ・コントローラ１０２は、第１のコマンド１１２に応答して第１のリドライブ装置１０４から受け取った第１のデータ１１６を第１のバッファ１０８に格納するように構成される。メモリ・コントローラ１０２は、再発行された第２のコマンド１２０に応答して第２のリドライブ装置１０６から受け取った第２のデータ１２２を第２のバッファ１１０に格納するように構成することができる。メモリ・コントローラ１０２は、第２のデータ１２２を第１のデータ１１６と結合させるように構成される。
【００１５】
メモリ・コントローラ１０２は、第１のコマンド１１２を第１のリドライブ装置１０４に向けて発行することができる。第１のリドライブ装置１０４は、第１のコマンド１１２をデコードし、再フォーマットして、第１のリドライブ装置１０４に接続された第１のメモリ構造体（図示せず）に送ることができる。例えば、第１のコマンド１１２をデコードし、再フォーマットした後、第１のリドライブ装置１０４は、第１のコマンド１１２を第１のメモリ構造体に伝送することができる。
【００１６】
第１のリドライブ装置１０４から第１のコマンド１１２を受け取ることに応答して、第１のメモリ構造体は、第１のデータ１１６を第１のリドライブ装置１０４に伝送することができる。第１のリドライブ装置１０４は、第１のデータ１１６を再フォーマットし、第１の高速リンクのノースバウンド・リンクを介して、再フォーマットされた第１のデータ１１６をメモリ・コントローラ１０２に伝送することができる。第１のデータ１１６を受け取ることに応答して、メモリ・コントローラ１０２は、第１のデータ１１６を第１のバッファ１０８に格納することができる。第１のデータ１１６を第１のバッファ１０８に格納することにより、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラー１１８の検出に応答して訂正行動を実行する間、メモリ・コントローラ１０２が正常なデータを保存することが可能になる。
【００１７】
伝送エラー１１８を検出することは、第２のリドライブ装置１０６が、メモリ・コントローラ１０２から受け取った第２のコマンド１１４内の伝送エラー１１８を検出することを含むことができる。例えば、第２のリドライブ装置１０６は、巡回冗長検査（ＣＲＣ）エラーに関してメモリ・コントローラ１０２から受け取ったコマンドをチェックする論理を含むことができる。ＣＲＣチェックは、第２のサウスバウンド・リンクを介して、メモリ・コントローラ１０２から受け取った第２のコマンド１１４がＣＲＣエラー（例えば、伝送エラー１１８）を含むことを示し得る。
【００１８】
伝送エラー１１８を検出した後、第２のリドライブ装置１０６は、メモリ・コントローラ１０２から受け取った第２のコマンド・ストリーム内の第２の後続コマンドを削除し（drop）、警告状態フレーム１５０をメモリ・コントローラ１０２に戻すことができる。第２のコマンド・ストリーム内の第２の後続コマンドを削除することは、第２のリドライブ装置１０６が、第２のコマンド１１４又は第２の後続コマンドを第２のメモリ構造体（図示せず）に対してリドライブしないことを含むことができる。
【００１９】
第２のリドライブ装置１０６は、伝送エラー１１８の検出に応答して、第２の高速リンクのノースバウンド・リンクを介して、警告状態フレームのストリームをメモリ・コントローラ１０２に戻すことができる。メモリ・コントローラ１０２は、受け取った警告状態フレームを用いて、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラー１１８を検出することができる。例えば、メモリ・コントローラ１０２は、伝送エラー１１８が第２の高速リンクのサウスバウンド・リンク内で生じたと判断することができる。この判断は、第２の高速リンクのノースバウンド・リンクを介した警告状態フレーム１５０の受信に基づくことができる。
【００２０】
伝送エラー１１８の検出に応答して、メモリ・コントローラ１０２は、第１のリドライブ装置１０４及び第２のリドライブ装置１０６の両方に向けた後続コマンドの発行を停止し、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間のリンクにおける訂正行動を実行することができる。例えば、警告状態フレーム１５０を受け取った後、メモリ・コントローラ１０２は、第２の高速リンクのリンク・リセットを発行することができる。リンク・リセットにより、警告状態フレームの第２の高速リンクをクリアすることができる。第２の高速リンクがクリアされた後、第２の高速リンクを、いつでも第２のコマンド・ストリームを再発行できる状態にすることができる。メモリ・コントローラ１０２は、第２の高速リンクのサウスバウンド・リンクを介して、第２のコマンド（例えば、再発行された第２のコマンド１２０）を第２のリドライブ装置１０６に向けて再発行することができる。
【００２１】
メモリ・コントローラ１０２は、第２のコマンド・ストリームを第２のリドライブ装置１０６に向けて再発行し、第２のリドライブ装置１０６が、第２のコマンド・ストリームを第２のメモリ構造体に対してリドライブするのを可能にすることができる。例えば、メモリ・コントローラ１０２は、伝送エラー１１８の検出に応答して、第２のリドライブ装置１０６が第２のコマンド・ストリームを終了した時点からの第２のコマンド・ストリームを再発行することができる。メモリ・コントローラ１０２は、第２のコマンド・ストリームを第２のリドライブ装置１０６に向けて再発行し、再発行された第２のコマンド１２０から開始させることができる。
【００２２】
第２のリドライブ装置１０６は、再発行された第２のコマンド１２０を第２のメモリ構造体に対してリドライブすることができる。再発行された第２のコマンド１２０の受信に応答して、第２のメモリ構造体は、第２のデータ１２２を取り出し、第２のデータ１２２を第２のリドライブ装置１０６に伝送することができる。第２のリドライブ装置１０６は、第２のデータ１２２をメモリ・コントローラ１０２に伝送することができる。メモリ・コントローラ１０２は、第２のデータ１２２を第２のバッファ１１０内に格納し、第１のバッファ１０８にある第１のデータ１１６と結合させる。伝送エラー１１８が検出されたとき、コマンドを両方のリドライブ装置に向けて再発行する代わりに、第１のデータ１１６を格納することによって、メモリ・コントローラ１０２が第１のコマンド１１２を第１のリドライブ装置１０４に向けて再発行することにより生じ得るエラーを回避することが可能になる。例えば、第１のコマンド１１２の実行が、メモリ構造体内の元のデータを変更している可能性がある。
【００２３】
第１のデータ１１６として取り出された元のデータの代わりに、第１のコマンド１１２の再発行が、メモリ構造体内の変更されたデータの取り出しを開始することがある。第１のデータ１１６を保存して、再発行された第２のコマンド１２０に応答して受け取った第２のデータ１２２と結合させることにより、実行される訂正行動の複雑さを軽減することができる。訂正行動の複雑さを軽減することにより、訂正行動を実行するのに費やされる時間を減らし、通常プロセスを実行するのにメモリ・コントローラ１０２を使用できる時間を増やすことができる。訂正行動を実行するのに費やされる時間に対する、通常プロセスを実行するのに費やされる時間の割合を増やすことにより、メモリ・コントローラ１０２の効率を改善し、メモリ待ち時間を減らすことができる。
【００２４】
図２を参照すると、エラー検出に応答するための、全体が２００で示されるシステムの別の実施形態の図が示される。このシステム２００は、図１で参照したシステム１００内に見出される多くの要素を含み、ここで同様の要素は同じ参照番号を有する。
【００２５】
動作中、メモリ・コントローラ１０２は、第１のコマンド１１２を第１のリドライブ装置１０４に向けて発行することができる。第１のリドライブ装置１０４は、第１のコマンド１１２をデコードし、再フォーマットして第１のメモリ構造体（図示せず）に送ることができる。第１のメモリ構造体を第１のリドライブ装置１０４に接続することができる。例えば、第１のコマンド１１２をデコードし、再フォーマットした後、第１のリドライブ装置１０４は、第１のコマンド１１２を第１のメモリ構造体に伝送することができる。
【００２６】
第１のリドライブ装置１０４から第１のコマンド１１２を受け取ることに応答して、第１のメモリ構造体は、第１のデータ１１６を第１のリドライブ装置１０４に伝送することができる。第１のリドライブ装置１０４は、第１のデータ１１６を再フォーマットし、第１の高速リンクのノースバウンド・リンクを介して、再フォーマットされた第１のデータ１１６をメモリ・コントローラ１０２に伝送することができる。第１のデータ１１６を受け取ることに応答して、メモリ・コントローラ１０２は、第１のデータ１１６を第１のバッファ１０８に格納することができる。第１のデータ１１６を第１のバッファ１０８に格納することにより、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラー１１８の検出に応答して訂正行動を実行する間、メモリ・コントローラ１０２が正常なデータ（即ち、第１のデータ１１６）を保存することが可能になる。
【００２７】
伝送エラー１１８を検出することは、第２のリドライブ装置１０６が、メモリ・コントローラ１０２から受け取った第２のコマンド１１４内の伝送エラー１１８を検出することを含むことができる。例えば、第２のリドライブ装置１０６は、ＣＲＣエラーに関してメモリ・コントローラ１０２から受け取ったコマンドをチェックする論理を含むことができる。ＣＲＣチェックは、第２のサウスバウンド・リンクを介してメモリ・コントローラ１０２から受け取った第２のコマンド１１４がＣＲＣエラー（例えば、伝送エラー１１８）を含むことを示すことができる。
【００２８】
伝送エラー１１８を検出した後、第２のリドライブ装置１０６は、メモリ・コントローラ１０２から受け取った第２のコマンド・ストリーム内の第２の後続コマンドを削除することができる。第２のリドライブ装置１０６はさらに、警告状態フレームをメモリ・コントローラ１０２に戻すことができる。第２のコマンド・ストリーム内の第２の後続コマンドを削除することは、第２のリドライブ装置１０６が、第２のコマンド１１４又は第２の後続コマンドを第２のメモリ構造体（図示せず）に対してリドライブしないことを含むことができる。
【００２９】
第２のリドライブ装置１０６は、警告状態フレーム１６０のストリームをメモリ・コントローラ１０２に戻すことができる。伝送エラー１１８の検出に応答して、第２の高速リンクのノースバウンド・リンクを介して、フレーム１６０を戻すことができる。メモリ・コントローラ１０２は、受け取った警告状態フレーム１６０を用いて、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラー１１８を検出することができる。例えば、メモリ・コントローラ１０２は、伝送エラー１１８が第２の高速リンクのサウスバウンド・リンク内で生じたと判断することができる。この判断は、第２の高速リンクのノースバウンド・リンクを介した警告状態フレームの受信に基づくことができる。
【００３０】
伝送エラー１１８の検出に応答して、メモリ・コントローラ１０２は、第１のリドライブ装置１０４及び第２のリドライブ装置１０６の両方に向けた後続コマンドの発行を停止することができる。メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の第２の高速リンクにおける訂正行動を実行することができる。例えば、警告状態フレーム１６０を受け取った後、メモリ・コントローラ１０２は、第２の高速リンクのリンク・リセットを発行することができる。リンク・リセットは、警告状態フレーム１６０の第２の高速リンクをクリアすることができる。さらに、第２の高速リンクを、いつでも第２のコマンド・ストリームを再発行できる状態にすることができる。メモリ・コントローラ１０２は、第２の高速リンクのサウスバウンド・リンクを介して、第２のコマンド（例えば、再発行された第２のコマンド１２０）を第２のリドライブ装置１０６に向けて再発行することができる。
【００３１】
メモリ・コントローラ１０２は、第２のコマンド・ストリームを第２のリドライブ装置１０６に向けて再発行し、第２のリドライブ装置１０６が、第２のコマンド・ストリームを第２のメモリ構造体に対してリドライブするのを可能にすることができる。例えば、メモリ・コントローラ１０２は、伝送エラー１１８の検出に応答して第２のリドライブ装置１０６が第２のコマンド・ストリームを終了した時点からの第２のコマンド・ストリームを再発行することができる。メモリ・コントローラ１０２は、第２のコマンド・ストリームを第２のリドライブ装置１０６に向けて再発行し、第２のコマンド（例えば、再発行された第２のコマンド１２０）から開始することができる。
【００３２】
特定の実施形態において、第２のリドライブ装置１０６は、再発行された第２のコマンド１２０を第２のメモリ構造体に対してリドライブすることができる。再発行された第２のコマンド１２０の受信に応答して、第２のメモリ構造体は、第２のデータ１２２を取り出し、第２のデータ１２２を第２のリドライブ装置１０６に伝送することができる。第２のリドライブ装置１０６は、第２のデータ１２２をメモリ・コントローラ１０２に伝送することができる。メモリ・コントローラ１０２は、第２のデータ１２２を第２のバッファ１１０内に格納し、第１のバッファ１０８にある第１のデータ１１６と結合させることができる。
【００３３】
伝送エラー１１８が検出される前に、第２のコマンドの組をメモリ・コントローラ１０２からリドライブ装置に向けて発行することができる。例えば、メモリ・コントローラ１０２は、第１のコマンド１１２の発行後に、第３のコマンド１６２を第１のリドライブ装置に向けて発行することができる。メモリ・コントローラ１０２は、第２のコマンド１１４の発行後に、第４のコマンド１６６を第２のリドライブ装置１０６に向けて発行することができる。メモリ・コントローラ１０２は、第３のコマンド１６２に応答して第３のデータ１６４を受け取ることができる。第３のデータ１６４は、第１のバッファ１０８に格納することができる。しかしながら、第２のリドライブ装置１０６から警告状態フレーム１６０を受け取った後、メモリ・コントローラ１０２は、第４のコマンド（例えば、再発行された第４のコマンド１７０）を第２のリドライブ装置１０６に向けて発行することができる。メモリ・コントローラ１０２は、再発行された第４のコマンド１７０に応答して第４のデータ１７２を受け取ることができる。メモリ・コントローラ１０２は、第４のデータ１７２を第２のバッファ１１０に格納して、第１のバッファ１０８にある第３のデータ１６４と結合させることができる。特定の実施形態において、第１のバッファ１０８は、幾つかのバッファを含む。第１のデータ１１６は、第１のバッファの幾つかのバッファのうちの１つの中に格納することができ、第３のデータ１６４は、第１のバッファの幾つかのバッファのうちの別のものの中に格納することができる。
【００３４】
伝送エラー１１８が検出されたときに両方のリドライブ装置に向けてコマンドを再発行する代わりに、第１のデータ１１６及び第３のデータ１６４を格納することによって、メモリ・コントローラ１０２が第１のコマンド１１２及び第３のコマンド１６２を第１のリドライブ装置１０４に向けて再発行することにより生じ得るエラーを回避することが可能になる。例えば、第１のコマンド１１２の実行が、メモリ構造体内の元のデータを変更している可能性がある。第１のコマンド１１２の再発行により、第１のデータ１１６内で取り出されたような元のデータの代わりに、メモリ構造体内の変更されたデータを取り出すことができる。第１のデータ１１６を保存して、再発行された第２のコマンド１２０に応答して受け取った第２のデータ１２２と結合させることにより、実行される訂正行動の複雑さを軽減することができる。訂正行動の複雑さを軽減することにより、訂正行動を実行するのに費やされる時間を減らし、通常プロセスを実行するのにメモリ・コントローラ１０２を使用できる時間を増やすことができる。訂正行動を実行するのに費やされる時間に対する、通常プロセスを実行するのに費やされる時間の割合を増やすことにより、メモリ・コントローラ１０２の効率を改善し、メモリ待ち時間を減らすことができる。
【００３５】
図３は、エラー検出に応答するための、全体が３００で示される方法の第１の実施形態のフロー図である。特定の実施形態において、方法３００は、図１及び図２のシステムのいずれか、又はそれらの任意の組合せによって実行される。方法３００は、ブロック３０２において、第１のコマンドを第１のリドライブ装置に向けて発行し、第２のコマンドを第２のリドライブ装置に向けて発行することを含むことができる。例えば、図１及び図２のメモリ・コントローラ１０２は、第１のコマンド１１２を第１のリドライブ装置１０４に向けて発行し、第２のコマンド１１４を第２のリドライブ装置１０６に向けて発行することができる。方法３００はまた、ブロック３０４において、メモリ・コントローラと第２のリドライブ装置との間の伝送エラーの検出に応答して、第２のコマンドを第２のリドライブ装置に向けて再発行することを含むこともできる。例えば、図１及び図２のメモリ・コントローラ１０２は、メモリ・コントローラ１０２と第２のリドライブ装置１０６との間の伝送エラーの検出に応答して、第２のコマンド１２０を第２のリドライブ装置１０６に向けて再発行することができる。
【００３６】
方法３００はさらに、ブロック３０６において、第１のコマンドに応答して第１のリドライブ装置から受け取った第１のデータを第１のバッファに格納することを含むことができる。例えば、図１及び図２のメモリ・コントローラ１０２は、第１のコマンド１１２に応答して第１のリドライブ装置１０４から受け取った第１のデータ１１６を第１のバッファ１０８に格納することができる。方法３００は、ブロック３０８において、再発行された第２のコマンドに応答して第２のリドライブ装置から受け取った第２のデータを第２のバッファに格納することを含むことができる。例えば、メモリ・コントローラ１０２は、再発行された第２のコマンド１２０に応答して第２のリドライブ装置１０６から受け取った第２のデータ１２２を第２のバッファ１１０に格納することができる。方法３００はまた、ブロック３１０において、第２のデータを第１のデータと結合させることを含むことができる。例えば、図１及び図２のメモリ・コントローラ１０２は、第２のデータ１２２を第１のデータ１１６と結合させることができる。
【００３７】
図４は、エラー検出に応答するための、全体が４００で示されるシステムの別の実施形態の図である。この実施形態は、前述のようにリンク・リセットに応答してリンクをクリアする方法として用いることができる。システム４００は、メモリ・コントローラ４０２及びリドライブ装置４０４を含む。メモリ・コントローラ４０２及びリドライブ装置４０４は、リンク４０６を介して接続することができる。リンク４０６は、２つの一方向の高速リンクを含むことができる。例えば、メモリ・コントローラ４０２は、リンク４０６のサウスバウンド・リンクを介してリドライブ装置４０４に伝送することができ、リドライブ装置４０４は、リンク４０６のノースバウンド・リンクを介してメモリ・コントローラ４０２に伝送することができる。
【００３８】
一般的に、メモリ・コントローラ４０２は、信号パターンをリドライブ装置４０４に伝送して、メモリ・コントローラ４０２がリンクのリトレインを開始すること４０７を示すことができる。リンク・リトレイン行動（link retrain action）を示す信号パターンの伝送を普通のデータ伝送と区別するために、信号パターンは、遷移がない一定のパターンとすることができる。例えば、メモリ・コントローラ４０２は、デジタル定数１と等しい信号を複数の周期にわたって伝送することができる。この信号は、デジタル定数ゼロと等しい信号への遷移を含まない。
【００３９】
メモリ・コントローラ４０２及びリドライブ装置４０４は、アライメントを維持するために、信号パターン内の遷移に依存する。メモリ・コントローラ４０２及びリドライブ装置４０４は、一定パターンの伝送中に遷移を受け取ることなしに、アライメントを維持することはできない。例えば、一定パターン４０８の伝送により、メモリ・コントローラ４０２及びリドライブ装置４０４が、アライメントを失うこと又は更なるアライメント不整（misalignment）が生じることがある。更なるアライメント不整の結果、アライメントを取り戻すために後の段階でより多くのプロセスを実行するアライメント・ロッキング・アルゴリズムがもたらされ得る。
【００４０】
一定パターンの伝送を中断し４０９、一定パターンの伝送４１６を再開する４１４前に遷移４１２のシーケンス４１０を伝送することにより、リンク・リトレイン行動中、メモリ・コントローラ４０２及びリドライブ装置４０４がアライメントを維持することが可能になる。アライメントは、伝送される遷移４１２の数が許容可能な最小遷移密度を満たすときに維持され得る。リンク・リトレイン行動中にアライメントを維持することは、リンク・リトレイン行動の後の段階で、メモリ・コントローラ４０２及びリドライブ装置４０４がより低効率のアライメント・ロッキング・アルゴリズムを用いることを可能にする。例えば、比較的ゆっくりと実行することができるが、低減された電力、空間及び製造要件を有するアライメント・ロッキング・アルゴリズムを選択することができる。アライメントが失われていないので、このアライメント・ロッキング・アルゴリズムは、より少ないプロセスを実行して、アライメントを再確認すること又はアライメントを再開することができる。アライメント・ロッキング・アルゴリズムが実行するプロセス数を減らすことにより、リンク・リトレイン行動全体の待ち時間を減らすことができる。リンク・リトレイン行動の待ち時間を減らすことで、メモリ・コントローラ４０２の全体的効率を改善することができ、サイズの縮小によりコストが低くなる。
【００４１】
メモリ・コントローラ４０２は、メモリ・コントローラ４０２とリドライブ装置４０４との間のリンクのリトレインの開始４０７に応答して、一定パターンを伝送するように構成することができる。メモリ・コントローラ４０２は、遷移４１２のシーケンス４１０を伝送するために、一定パターンが最小継続時間伝送された後に、一定パターンの伝送４０８を中断して４０９、遷移４１２のシーケンス４１０を伝送するように構成することができる。メモリ・コントローラ４０２は、遷移４１２のシーケンス４１０を伝送した後、一定パターンの伝送４１６を再開４１４するように構成することができる。
【００４２】
メモリ・コントローラ４０２は、コマンド・ストリームをリドライブ装置４０４に向けて発行することができる。例えば、リドライブ装置４０４は、リンク４０６のサウスバウンド・リンクを介して、メモリ・コントローラ４０２からコマンド・ストリームを受け取ることができる。リドライブ装置４０４は、コマンド・ストリームをデコードし、再フォーマットして、リドライブ装置４０４に接続されたメモリ構造体（図示せず）に送ることができる。メモリ構造体は、コマンド・ストリームに応答してデータを取り出し、そのデータをリドライブ装置４０４に伝送することができる。リドライブ装置４０４は、データを再フォーマットし、再フォーマットされたデータをメモリ・コントローラ４０２に伝送することができる。例えば、リドライブ装置４０４は、データを再フォーマットした後、リンク４０６のノースバウンド・リンクを介して、そのデータをメモリ・コントローラ４０２に伝送することができる。
【００４３】
サウスバウンド・リンク及びノースバウンド・リンクの両方における通信を、エラーに関してチェックすることができる。リドライブ装置４０４によって、サウスバウンド・リンクを介して受け取ったコマンド・ストリーム上のエラー検出を実行することができる。例えば、リドライブ装置４０４は、ＣＲＣチェックを実行する論理を含むことができる。ＣＲＣチェックは、コマンド・ストリーム内の特定のコマンドが単一ビット・エラー（即ち、伝送エラー）を含むと判断することができる。伝送エラーを検出した後、リドライブ装置４０４は、コマンド・ストリーム内の全ての後続コマンドを削除して、警告状態フレームをメモリ・コントローラ４０２に戻すことができる。
【００４４】
特定の一実施形態において、リドライブ装置４０４は、伝送エラーに応答して、ノースバウンド・リンクを介して警告状態フレームのストリームをメモリ・コントローラ４０２に戻す。メモリ・コントローラ４０２は、受け取った警告状態フレームを用いて、メモリ・コントローラ４０２とリドライブ装置４０４との間での伝送エラーを検出することができる。例えば、メモリ・コントローラ４０２は、ノースバウンド・リンクを介した警告状態フレームの受信に基づいて、伝送エラーがリンク４０６のサウスバウンド・リンク内で発生したと判断することができる。
【００４５】
伝送エラーの検出に応答して、メモリ・コントローラ４０２は、訂正行動を実行することができる。例えば、警告状態フレームを受け取った後、メモリ・コントローラ４０２は、リンク４０６のリンク・リセットを発行することができる。リンク・リセットは、警告状態フレームのリンク４０６をクリアすることができる。リンク４０６は、いつでもコマンド・ストリームを再発行できる状態にすることができる。例えば、メモリ・コントローラ４０２は、リンク４０６のサウスバウンド・リンクを介してコマンド・ストリームをリドライブ装置に向けて再発行することができる。
【００４６】
リンク・リセットは警告状態フレームのリンク４０６のクリアが失敗に終わることがある。リンク４０６が、再発行されたコマンドを受け取る準備ができていないことが。例えば、メモリ・コントローラ４０２は、リンク・リセットを実行した後で、ノースバウンド・リンク上で警告状態フレームを受け取り続けることがある。メモリ・コントローラ４０２は、リンク・リトレイン行動を開始する４０７ことができる。リンク・リトレイン行動は、メモリ・コントローラ４０２とリドライブ装置４０４との間のリンク４０６をリトレインすることを含むことができる。
【００４７】
リンク４０６をリトレインすることは、メモリ・コントローラ４０２が、リンクがリトレインされていることをリドライブ装置４０４に通知することを含むことができる。メモリ・コントローラ４０２がリンク・リトレイン行動を開始している４０７ことをリドライブ装置４０４に通知することは、一定パターン４０８をリドライブ装置４０４に伝送することを含むことができる。特定の実施形態において、一定パターンは、リドライブ装置における通常の動作をディスエーブルにする「ディスエーブルｂ」信号である。例えば、一定パターン４０８の伝送中、メモリ・コントローラ４０２は、遷移がないデジタル定数のシーケンスを伝送することができる。メモリ・コントローラ４０２は、ゼロへの遷移がない全ての１を伝送することができる。遷移がない信号パターンを受け取ることに応答して、リドライブ装置４０４は、メモリ・コントローラ４０２がリンク・リトレイン行動を開始した４０７と判断することができる。
【００４８】
一定パターンを最小継続時間伝送して、メモリ・コントローラ４０２がリンク・リトレイン行動を開始している４０７ことを示す表示として、リドライブ装置４０４がその伝送を記録するのを確実にすることができる。最小継続時間は、リドライブ装置４０４が一定パターンを認識するための最小数の単位間隔に基づくことができる。単位間隔は、メモリ・コントローラ４０２が、回線速度でリンク上の１つの遷移を伝送するための時間とすることができる。例えば、メモリ・コントローラ４０２は、１４４の単位間隔の間、遷移がない一定パターンを伝送して、メモリ・コントローラ４０２がリンク・リトレイン行動を開始した４０７ことを、リドライブ装置４０４に示すことができる。
【００４９】
メモリ・コントローラ４０２は、遷移４１２のシーケンス４１０を伝送することによって、一定パターンを最小継続時間伝送した後、一定パターン４０８の伝送を中断する４０９ことができる。遷移４１２のシーケンス４１０を伝送することにより、メモリ・コントローラ４０２とリドライブ装置４０４との間のアライメントが維持される。遷移４１２のシーケンス４１０内の遷移４１２の数は、リンク４０６の最小ビット遷移密度に基づくことができる。最小ビット遷移密度は、メモリ・コントローラ４０２とリドライブ装置４０４との間のビット・アライメントを維持するための遷移４１２の最小数を示すことができる。例えば、ビット・アライメントを維持するのに必要な遷移４１２の最小数は、８個の遷移４１２とすることができる。メモリ・コントローラ４０２は、全てが１の一定パターンを再開する前に、１及びゼロのデジタル定数に相当する交互信号パターンを伝送することができる。
【００５０】
遷移４１２のシーケンス４１０を伝送した後、メモリ・コントローラ４０２は、一定パターンの伝送４１６を再開する４１４ことができる。一定パターン４０８を中断し４０９、遷移４１２のシーケンス４１０を発行することによって、メモリ・コントローラ４０２及びリドライブ装置４０４が、アライメント状態のままであることが可能になる。リンク・リトレイン行動中にアライメントを維持することは、リンク・リトレイン行動の後の段階で、メモリ・コントローラ４０２及びリドライブ装置４０４がより低効率のアライメント・ロッキング・アルゴリズムを使用することを可能にする。例えば、ゆっくり動作するが、使用電力が少なく、占める空間がより少なくなるように、アライメント・ロッキング・アルゴリズムを選択することができる。アライメント・ロッキング・アルゴリズムは、比較的ゆっくりと実行できるが、より少数のプロセスを実行してアライメントを取り戻すことができる。アライメント・ロッキング・アルゴリズムが実行するプロセスの数を減らすことにより、リンク・リトレイン行動全体の待ち時間を減らすことができる。リンク・リトレイン行動の待ち時間を減らすことにより、メモリ・コントローラ４０２の全体的な効率を改善することができる。
【００５１】
図５は、エラー検出に応答するための、全体が５００で示される方法の第２の実施形態のフロー図である。特定の実施形態において、方法５００は、図４のシステムによって実行される。方法５００は、ブロック５０２において、メモリ・コントローラとリドライブ装置との間のリンクのリトレインの開始に応答して、一定パターンを伝送することを含む。例えば、図４のメモリ・コントローラ４０２は、メモリ・コントローラ４０２とリドライブ装置４０４との間のリンク４０６のリトレインの開始４０７に応答して、一定パターン４０８を伝送する。方法５００はまた、ブロック５０４において、一定パターンを最小継続時間伝送した後、一定パターンの伝送を中断して、遷移のシーケンスを伝送することも含む。例えば、図４のメモリ・コントローラ４０２は、一定パターンを最小継続時間伝送した後、一定パターン４０８の伝送を中断し４０９、遷移４１２のシーケンス４１０を伝送することができる。方法５００は、ブロック５０６において、遷移のシーケンスを伝送した後で一定パターンの伝送を再開することをさらに含む。例えば、図４のメモリ・コントローラ４０２は、遷移４１２のシーケンス４１０を伝送した後で一定パターンの伝送４１６を再開する４１４ことができる。
【００５２】
図６は、エラー検出に応答するための、全体が６００で示されるシステムの第５の実施形態の図である。システム６００は、リドライブ装置６０４と、コマンド・アービトレーション論理６１２、第１のスクラブ・コントローラ６０８及び第２のスクラブ・コントローラ６１０を有するメモリ・コントローラ・ポート６０２とを含む。メモリ・コントローラ・ポート６０２及びリドライブ装置６０４は、リンク６０６を介して接続される。リンク６０６は、２つの一方向リンクを含むことができる。例えば、メモリ・コントローラ６０２は、リンク６０６のサウスバウンド・リンクを介してリドライブ装置６０４に伝送することができ、リドライブ装置６０４は、リンク６０６のノースバウンド・リンクを介してメモリ・コントローラ６０２に伝送することができる。
【００５３】
一般に、各々のスクラブ・コントローラは、特定のメモリ構造体をスクラブするためのスクラブ・コマンドを生成することができる。例えば、第１のスクラブ・コントローラ６０８は、第１のメモリ構造体（図示せず）に向けられる第１のスクラブ・コマンド６１４を生成することができ、第２のスクラブ・コントローラ６１０は、第２のメモリ構造体（図示せず）に向けられる第２のスクラブ・コマンド６１６を生成することができる。メモリ・コントローラは、各々のスクラブ・コントローラからのスクラブ・コマンドの発行を交互に行うことができる。各々のスクラブ・コントローラを交互に行うことにより、メモリ・コントローラ・ポート６０２が、単一のリンク６０６を介して複数のメモリ構造体をスクラブすることができる。
【００５４】
メモリ・コントローラ・ポート６０２は、第１のスクラブ・コントローラ６０８において第１のスクラブ・コマンド６１４を生成するように構成することができる。メモリ・コントローラ・ポート６０２は、第２のスクラブ・コントローラ６１０において第２のスクラブ・コマンド６１６を生成するように構成することができる。メモリ・コントローラ・ポート６０２は、メモリ・コントローラ・ポート６０２において第１のスクラブ・コマンド６１４及び第２のスクラブ・コマンド６１６の発行を交互に行うように構成することができる。
【００５５】
メモリ・コントローラ・ポート６０２は、スクラブ・コマンドを用いてデータ内のエラーを検出し、訂正することができる。例えば、第１のスクラブ・コントローラ６０８は、メモリ・コントローラ・ポート６０２から発行されるスクラブ読み出しコマンド（例えば、第１のスクラブ・コマンド）を生成することができる。スクラブ読出しコマンドの発行に応答して、メモリ・コントローラ・ポート６０２は、スクラブ読み出しデータを受け取ることができる。メモリ・コントローラ・ポート６０２は、エラー訂正コード（ＥＣＣ）に関してスクラブ読み出しデータをチェックする論理を含むことができる。例えば、ＥＣＣチェックが、スクラブ読み出しデータが単一ビット・エラーを含むことを示すことができる。メモリ・コントローラ・ポート６０２は、エラーを訂正するために、冗長ビット・ステアリング（ＲＢＳ）を呼び出すことができる。エラーが訂正された後、第１のスクラブ・コントローラ６０８は、メモリ・コントローラ・ポート６０２から発行されるスクラブ書き込みコマンドを生成することができる。スクラブ書き込みコマンドは、訂正されたスクラブ読み出しデータを、スクラブ読み出しデータが以前に取り出されたメモリ・アドレス内に書き込むことができる。
【００５６】
メモリ・コントローラ・ポート６０２は、第１のスクラブ・コマンド６１４及び第２のスクラブ・コマンド６１６の発行を交互に行うことができる。コマンド・アービトレーション論理６１２は、第１のスクラブ・コマンド６１４及び第２のスクラブ・コマンド６１６の発行を交互に行う。スクラブ・コマンドの発行を交互に行うことは、次の順序で、即ち、第１のスクラブ・コマンド、第２のスクラブ・コマンド、第１のスクラブ・コマンド、及び第２のスクラブ・コマンドの順序で、スクラブ・コマンドを発行することを含むことができる。各々のスクラブ・コマンドを交互に行うことにより、メモリ・コントローラ・ポート６０２が、単一のリンク（例えば、リンク６０６）を介して複数のメモリ構造体をスクラブすることが可能になる。例えば、第１のスクラブ・コマンド６１４は、第１のメモリ構造体に向けることができ、第２のスクラブ・コマンド６１６は、第２のメモリ構造体に向けることができる。第１のメモリ構造体及び第２のメモリ構造体内のアドレスは、同じメモリ・コントローラ・ポート６０２によって同時にスクラブすることができる。
【００５７】
図７を参照すると、エラー検出に応答するための、全体が７００で示されるシステムの別の実施形態が示される。システム７００は、リドライブ装置６０４、第１のメモリ構造体７３０、及び第２のメモリ構造体７３２を含む。このシステムはまた、コマンド・アービトレーション論理６１２、第１のスクラブ・コントローラ６０８及び第２のスクラブ・コントローラ６１０を有するメモリ・コントローラ・ポート６０２も含む。メモリ・コントローラ・ポート６０２とリドライブ装置６０４は、リンク６０６を介して接続することができる。リンク６０６は、２つの一方向リンクを含むことができる。例えば、メモリ・コントローラは、リンク６０６のサウスバウンド・リンクを介してリドライブ装置６０４に伝送することができ、リドライブ装置６０４は、リンク６０６のノースバウンド・リンクを介してメモリ・コントローラに伝送することができる。リドライブ装置６０４は、第１のメモリ・バス７３６を介して第１のメモリ構造体７３０に接続することができ、第２のメモリ・バス７３８を介して第２のメモリ構造体７３２に接続することができる。
【００５８】
一般に、各々のスクラブ・コントローラは、特定のメモリ構造体をスクラブするためのスクラブ・コマンドを生成することができる。例えば、第１のスクラブ・コントローラ６０８は、第１のメモリ構造体７３０に向けられる第１のスクラブ・コマンド６１４を生成することができる。第２のスクラブ・コントローラ６１０は、第２のメモリ構造体７３２に向けられる第２のスクラブ・コマンド６１６を生成することができる。メモリ・コントローラは、リンク６０６を介した各々のスクラブ・コントローラからリドライブ装置６０４に向けてのスクラブ・コマンドの発行を交互に行うことができる。リドライブ装置６０４は、第１のスクラブ・コマンド６１４を第１のメモリ構造体７３０に向けて発行することができ、かつ、第２のスクラブ・コマンド６１６を第２のメモリ構造体７３２に向けて発行することができる。各々のスクラブ・コントローラを交互に行うことにより、メモリ・コントローラ・ポート６０２が、単一のリンク（例えば、リンク６０６）を介して複数のメモリ構造体をスクラブすることが可能になる。
【００５９】
メモリ・コントローラ・ポート６０２は、スクラブ・コマンドを用いて、データ内のエラーを検出し、訂正することができる。例えば、第１のスクラブ・コントローラ６０８は、メモリ・コントローラ・ポート６０２からリドライブ装置６０４に向けて発行される第１のスクラブ読み出しコマンド（例えば、第１のスクラブ・コマンド）を生成することができる。リドライブ装置６０４は、スクラブ読み出しコマンドをフォーマットし、デコードして、第１のメモリ構造体７３０に伝送することができる。例えば、リドライブ装置６０４は、スクラブ読み出しコマンドを、第１のメモリ構造体７３０によって認識されるＤＤＲアドレスに変更することができる。リドライブ装置６０４は、第１のメモリ・バス７３６を介して、フォーマットされたスクラブ読み出しコマンドを第１のメモリ構造体７３０に伝送することができる。
【００６０】
フォーマットされたスクラブ読み出しコマンド（例えば、第１のスクラブ・コマンド）を受け取ることに応答して、第１のメモリ構造体７３０は、スクラブ読み出しデータ（例えば、第１のデータ７２０）を取り出し、第１のメモリ・バス７３６を介して、スクラブ読み出しデータをリドライブ装置６０４に向けて伝送することができる。第１のメモリ構造体７３０は、バースト・チョップ４（ＢＣ４）モードにおいて、スクラブ読み出しデータを取り出すことができる。ＢＣ４モードで動作することにより、第１のメモリ構造体７３０は、４ビートのギャップが後に続く４ビートのデータを取り出すことができる。例えば、第１のメモリ構造体７３０は、４ビートのスクラブ読み出しデータ（例えば、第１のデータ７２０）リドライブ装置６０４に向けて伝送することができ、４ビートのギャップが後に続く。リドライブ装置６０４は、ギャップと第１のデータ７２０の部分との交互パターンを含む第１のデータ・ストリームを受け取ることができる。
【００６１】
リドライブ装置６０４は、リンク６０６を介して、メモリ・コントローラから第２のスクラブ・コマンド６１６を受け取ることができる。特定の実施形態において、コマンド・アービトレーション論理６１２は、第１のスクラブ・コマンド６１４と第２のスクラブ・コマンド６１６の発行を交互に行う。リドライブ装置６０４は、第２のメモリ・バス７３８上で、第２のコマンドを第２のメモリ構造体７３２に伝送することができる。第２のスクラブ・コマンド６１６に応答して、第２のメモリ構造体７３２は、第２のデータ７２２を取り出し、第２のメモリ・バス７３８を介して第２のデータ７２２をリドライブ装置６０４に伝送することができる。ＢＣ４モードで動作することにより、第２のメモリ構造体７３２は、４ビートの第２のデータ７２２をリドライブ装置６０４に伝送することができ、４ビートのギャップが後に続く。リドライブ装置６０４は、ギャップと第２のデータ７２２の部分との交互パターンを含む第２のデータ・ストリームを受け取ることができる。
【００６２】
リドライブ装置６０４は、第１のデータ・ストリーム内の第１のデータ７２０及び第２のデータ・ストリーム内の第２のデータ７２２をフォーマットし、デコードすることができる。例えば、リドライブ装置６０４は、第１のデータ７２０及び第２のデータ７２２を、メモリ・コントローラ・ポート６０２内のアドレスに対応するデータに変更することができる。第１のデータ７２０及び第２のデータ７２２をフォーマットした後、リドライブ装置６０４は、リンク６０６を介して、第１のデータ７２０及び第２のデータ７２２をメモリ・コントローラ・ポート６０２に伝送することができる。
【００６３】
リドライブ装置６０４は、第１のデータ・ストリームからの第１のデータ７２０の伝送及び第２のデータ・ストリームからの第２のデータ７２２の伝送を交互に行うことができる。リドライブ装置６０４は、ギャップなしに第１のデータ・ストリーム及び第２のデータ・ストリームを伝送することができる。メモリ・コントローラ・ポート６０２は、ギャップなしに第１のデータ及び第２のデータの交互パターンを受け取ることができる。メモリ・コントローラ・ポート６０２は、第１のデータ７２０を第１のスクラブ・コントローラ６０８に向け、第２のデータ７２２を第２のスクラブ・コントローラ６１０に向けることができる。ギャップなしにリンク６０６を介してデータを受け取ることにより、リンク６０６の利用率を高めることができる。
【００６４】
メモリ・コントローラ・ポート６０２は、エラーに関して、リンク６０６を介して受け取ったデータをチェックする論理を含むことができる。例えば、ＥＣＣチェックは、スクラブ読み出しデータ（例えば、第１のデータ７２０）が単一ビット・エラーを含むことを示すことがある。メモリ・コントローラ・ポート６０２は、エラーを訂正するために、ＲＢＳを呼び出すことができる。エラーが訂正された後、第１のスクラブ・コントローラ６０８は、スクラブ書き込みコマンド（例えば、第１のコマンド）をリドライブ装置６０４に向けて発行することができる。リドライブ装置６０４は、スクラブ書き込みコマンドをフォーマットし、スクラブ書き込みコマンドを第１のメモリ構造体７３０に伝送することができる。スクラブ書き込みコマンドは、第１のメモリ構造体７３０内のデータをＲＢＳによって訂正されたスクラブ読み出しデータで上書きするように、第１のメモリ構造体７３０に指示することができる。
【００６５】
メモリ・コントローラ・ポート６０２によって発行される第２のスクラブ・コマンド６１６の１つは、スクラブ書き込みコマンドとすることができる。リドライブ装置６０４は、スクラブ書き込みコマンドの交互パターンを、第１のメモリ構造体７３０及び第２のメモリ構造体７３２の両方に向けて発行することができる。第１のスクラブ・コマンド６１４と第２のスクラブ・コマンド６１６の発行を交互に行うことにより、メモリ・コントローラ・ポート６０２が、単一のリンク６０６を介して第１のメモリ構造体７３０及び第２のメモリ構造体７３２の両方をスクラブすることが可能になる。複数のメモリ構造体におけるメモリ・スクラブ（memory scrubbing）を実行することにより、メモリ・コントローラ・ポート６０２の効率が向上し、メモリ待ち時間が短くなる。
【００６６】
図８は、エラー検出に応答するための、全体が８００で示される方法の第３の実施形態のフロー図である。方法８００は、図６及び図７のシステムのいずれか、又はそれらの任意の組み合わせによって実行される。方法８００は、ブロック８０２において、第１のスクラブ・コントローラにおいて第１のスクラブ・コマンドを生成することを含む。例えば、図６又は図７の第１のスクラブ・コントローラ６０８は、第１のスクラブ・コマンド６１４を生成することができる。方法８００はまた、ブロック８０４において、第２のスクラブ・コントローラにおいて第２のスクラブ・コマンドを生成することも含む。例えば、図６及び図７の第２のスクラブ・コントローラ６１０は、第２のスクラブ・コマンド６１６を生成することができる。方法８００は、ブロック８０６において、メモリ・コントローラ・ポートにおいて第１のスクラブ・コマンド及び第２のスクラブ・コマンドの発行を交互に行うことをさらに含む。例えば、図６及び図７のメモリ・コントローラ・ポート６０２は、第１のスクラブ・コマンド６１４及び第２のスクラブ・コマンド６１６の発行を交互に行うことができる。
【００６７】
特定の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又は、ハードウェア要素とソフトウェア要素の両方を含む実施形態の形態を取ることができる。開示される方法は、ソフトウェアの形態で実装され、ソフトウェアは、これらに限られるものではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む。
【００６８】
さらに、実施形態は、コンピュータ若しくはいずれかの命令実行システムによって又はそれらと接続して用いられるプログラム・コードを提供するコンピュータ使用可能媒体又はコンピュータ可読媒体からアクセスできるコンピュータ・プログラムの形を取ることができる。この説明の目的のために、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと接続して用いられるプログラムを含み、格納し、通信し、伝搬し、又は移送することができるいずれかの装置とすることができる。
【００６９】
媒体は、電子システム、磁気システム、光学システム、電磁気システム、赤外線システム、若しくは半導体システム（又は装置若しくはデバイス）或いは伝搬媒体とすることができる。コンピュータ可読媒体の例として、半導体メモリ又は固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、剛性磁気ディスク及び光ディスクが挙げられる。光ディスクの現在の例として、コンパクト・ディスク−読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−読み出し／書き込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤが挙げられる。
【００７０】
プログラム・コードを格納し及び／又は実行するのに適したデータ処理システムは、システム・バスを通じて直接的又は間接的にメモリ要素に結合される少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、実行中に大容量記憶装置からコードを取り出す必要がある回数を減少させるために少なくとも幾つかのプログラム・コードを一時的に格納するキャッシュ・メモリとを含むことができる。
【００７１】
入力／出力又はＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス等を含むが、これらに限定されない）は、直接的に又は介在するＩ／Ｏコントローラを通して、システムに結合することができる。
【００７２】
介在するプライベート・ネットワーク又はパブリック・ネットワークを通して、データ処理システムを他のデータ処理システム又は遠隔のプリンタ若しくはストレージ・デバイスに結合することができるように、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム、及びイーサネット・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのほんの一部に過ぎない。
【００７３】
本発明は種々の実施形態の説明によって示され、これらの実施形態は極めて詳細に説明されたが、添付の特許請求の範囲をこうした詳細に制限するか又は多少なりとも限定することは、本出願人の意図するところではない。このように、幅広い態様における本発明は、示され説明された特定の詳細、代表的な装置、方法、及び例示に限定されるものではない。従って、添付の特許請求の範囲によって定められる出願人の一般的な発明概念の範囲から逸脱することなく、こうした詳細から離れることができる。
【符号の説明】
【００７４】
１００、２００、４００、６００、７００：システム
１０２、４０２：メモリ・コントローラ
１０４、１０６、４０４、６０４：リドライブ装置
１０８：第１のバッファ
１１０：第２のバッファ
１１２：第１のコマンド
１１４：第２のコマンド
１１６、７２０：第１のデータ
１１８：伝送エラー
１２０：再発行された第２のコマンド
１２２、７２２：第２のデータ
１５０、１６０：警告状態フレーム
１６２：第３のコマンド
１６４：第３のデータ
１６６：第４のコマンド
１７０：再発行された第４のコマンド
１７２：第４のデータ
３００、５００、８００：方法
４０６、６０６：リンク
４０８：一定パターン
４１０：シーケンス
４１２：遷移
６０２：メモリ・コントローラ・ポート
６０８：第１のスクラブ・コントローラ
６１０：第２のスクラブ・コントローラ
６１２：コマンド・アービトレーション論理
６１４：第１のスクラブ・コマンド
６１６：第２のスクラブ・コマンド
７３０：第１のメモリ構造体
７３２：第２のメモリ構造体
７３６：第１のメモリ・バス
７３８：第２のメモリ・バス
【図１】
0005930469.tif 000002
【図２】
0005930469.tif 000003
【図３】
0005930469.tif 000004
【図４】
0005930469.tif 000005
【図５】
0005930469.tif 000006
【図６】
0005930469.tif 000007
【図７】
0005930469.tif 000008
【図８】
0005930469.tif 000009