(57)【特許請求の範囲】
【請求項１】
ＳＤＤＣ（Ｓｉｎｇｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールと、
前記メモリモジュールの複数のランクのうち第１のランクの一のデバイスで障害が発生することを条件とするトリガ条件であって、前記第１のランクに関して巡回冗長検査（ＣＲＣ）プロセスをトリガするＣＲＣトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてＣＲＣイネーブル信号を生成するＣＲＣイネーブル部と、
前記ＣＲＣイネーブル部に結合されている複数のタイミング素子と
を備え、
前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、
前記複数のランクのうち前記第１のランクに対応する、前記複数のタイミング素子のうちの第１のタイミング素子は、前記ＣＲＣイネーブル信号の受信に基づいて、前記第１のランクについてＣＲＣを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、装置。
【請求項２】
ＤＤＤＣ（Ｄｕａｌ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールと、
前記メモリモジュールの複数のランクのうち第１のランクの２個のデバイスで障害が発生することを条件とするトリガ条件であって、前記第１のランクに関して巡回冗長検査（ＣＲＣ）プロセスをトリガするＣＲＣトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてＣＲＣイネーブル信号を生成するＣＲＣイネーブル部と、
前記ＣＲＣイネーブル部に結合されている複数のタイミング素子と
を備え、
前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、
前記複数のランクのうち前記第１のランクに対応する、前記複数のタイミング素子のうちの第１のタイミング素子は、前記ＣＲＣイネーブル信号の受信に基づいて、前記第１のランクについてＣＲＣを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、装置。
【請求項３】
前記第１のタイミング素子は、
前記ＣＲＣイネーブル信号に基づいて複数の値のうち第１の値を選択的に出力する選択ロジックと、
前記選択ロジックに結合されており、前記第１の値に基づいて前記コマンドブラックアウト制御を生成するタイマと
を有する、請求項１又は２に記載の装置。
【請求項４】
前記複数のランクは、メモリコントローラロジックと前記メモリモジュールとの間の一のメモリチャネルを介してアクセスするように構成されており、前記第１の値は、前記第１のランクにスケジューリングされているメモリコマンドが前記一のメモリチャネルをクリアした後に後続のメモリコマンドを前記複数のランクのうち任意の他のランクにスケジューリングするように、十分な複数のデータクロックサイクルを割り当てる、請求項３に記載の装置。
【請求項５】
前記選択ロジックに結合されている複数の設定レジスタ（複数のＣＲ）
をさらに備え、
前記選択ロジックは、ＣＲＣがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＣＲＣイネーブルＩＴＬ）およびＣＲＣがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣディセーブルＩＴＬを前記複数のＣＲから受信し、前記ＣＲＣイネーブル信号の受信に基づいて前記ＣＲＣイネーブルＩＴＬを出力するマルチプレクサを有する、請求項３に記載の装置。
【請求項６】
モードレジスタセット（ＭＲＳ）のプログラミングまたはオンザフライでＣＲＣを利用することで、前記第１のランクを宛先とするメモリコマンドについてＣＲＣプロセスを動的にイネーブルするＣＲＣ素子をさらに備える、請求項１から５のいずれか一項に記載の装置。
【請求項７】
ＳＤＤＣ（Ｓｉｎｇｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールの複数のランクのうち第１のランクに関して巡回冗長検査トリガ条件（ＣＲＣトリガ条件）を検出する段階であって、前記ＣＲＣトリガ条件は、前記メモリモジュールの前記第１のランクの一のデバイスで障害が発生することを条件とする段階と、
前記検出する段階に基づいて前記第１のランクに対して発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする段階と、
前記第１のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてＣＲＣタイミングを動的にイネーブルする段階と
を備える方法。
【請求項８】
ＤＤＤＣ（Ｄｕａｌ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールの複数のランクのうち第１のランクに関して巡回冗長検査トリガ条件（ＣＲＣトリガ条件）を検出する段階であって、前記ＣＲＣトリガ条件は、前記メモリモジュールの前記第１のランクの２個のデバイスで障害が発生することを条件とする段階と、
前記検出する段階に基づいて前記第１のランクに対して発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする段階と、
前記第１のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてＣＲＣタイミングを動的にイネーブルする段階と
を備える方法。
【請求項９】
前記ＣＲＣプロセスを動的にイネーブルする段階は、前記第１のランクのメモリデバイスのレジスタで構成されるモードレジスタセットをプログラミングする段階を有する
請求項７又は８に記載の方法。
【請求項１０】
前記ＣＲＣプロセスを動的にイネーブルする段階は、
前記第１のランクに対して発行されたメモリコマンドにおいてＣＲＣイネーブルビットを設定する段階を有する
請求項７又は８に記載の方法。
【請求項１１】
前記ＣＲＣタイミングを動的にイネーブルする段階は、ＣＲＣがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＣＲＣイネーブルＩＴＬ）に基づいて前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する段階を有する、請求項７又は８に記載の方法。
【請求項１２】
前記コマンドブラックアウト制御を生成する段階は、
前記ＣＲＣイネーブルＩＴＬを出力するように、前記第１のランクに対応するタイミング素子内の選択ロジックを制御する段階と、
タイマを用いて、前記ＣＲＣイネーブルＩＴＬに基づいて前記コマンドブラックアウト制御を生成する段階と
を有する請求項１１に記載の方法。
【請求項１３】
前記選択ロジックを制御する段階は、前記ＣＲＣイネーブルＩＴＬ、および、ＣＲＣがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣディセーブルＩＴＬを受信するマルチプレクサを、前記ＣＲＣイネーブルＩＴＬを出力するように制御する段階を含む、請求項１２に記載の方法。
【請求項１４】
請求項７から１３のいずれか一項に記載の方法を実行する装置。
【請求項１５】
コンピュータに、請求項７から１３のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項１６】
複数の要求を発行する処理ロジックと、
ＳＤＤＣ（Ｓｉｎｇｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであり、複数のランクを有するメモリモジュールと、
前記処理ロジックおよび前記メモリモジュールと結合されているメモリコントローラロジックと、
を備え、
前記メモリコントローラロジックは、前記複数の要求に基づいて前記複数のランクに対して複数のメモリコマンドを発行し、
前記複数のメモリコマンドに対応するデータは、一の共通メモリチャネルを介して転送され、
前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてイネーブルされた巡回冗長検査（ＣＲＣ）プロセスを許容するように、前記複数のメモリコマンドをスケジューリングするスケジューリングユニットを有し、
前記スケジューリングユニットは、前記複数のランクのうち第１のランクの一のデバイスで障害が発生することを条件とするトリガ条件であって、前記第１のランクに関してＣＲＣプロセスをトリガするＣＲＣトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてＣＲＣイネーブル信号を生成するＣＲＣイネーブル部と、
前記ＣＲＣイネーブル部に結合されている複数のタイミング素子とを含み、
前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、
前記複数のランクのうち前記第１のランクに対応する、前記複数のタイミング素子のうちの第１のタイミング素子は、前記ＣＲＣイネーブル信号の受信に基づいて、前記第１のランクについてＣＲＣを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、
システム。
【請求項１７】
複数の要求を発行する処理ロジックと、
ＤＤＤＣ（Ｄｏｕｂｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであり、複数のランクを有するメモリモジュールと、
前記処理ロジックおよび前記メモリモジュールと結合されているメモリコントローラロジックと、
を備え、
前記メモリコントローラロジックは、前記複数の要求に基づいて前記複数のランクに対して複数のメモリコマンドを発行し、
前記複数のメモリコマンドに対応するデータは、一の共通メモリチャネルを介して転送され、
前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてイネーブルされたＣＲＣプロセスを許容するように、前記複数のメモリコマンドをスケジューリングするスケジューリングユニットを有し、
前記スケジューリングユニットは、前記複数のランクのうち第１のランクの２個のデバイスで障害が発生することを条件とするトリガ条件であって、前記第１のランクに関して巡回冗長検査（ＣＲＣ）プロセスをトリガするＣＲＣトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてＣＲＣイネーブル信号を生成するＣＲＣイネーブル部と、
前記ＣＲＣイネーブル部に結合されている複数のタイミング素子とを含み、
前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、
前記複数のランクのうち前記第１のランクに対応する、前記複数のタイミング素子のうちの第１のタイミング素子は、前記ＣＲＣイネーブル信号の受信に基づいて、前記第１のランクについてＣＲＣを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、
システム。
【請求項１８】
前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてＣＲＣプロセスをイネーブルするＣＲＣ素子を有する、
請求項１６又は１７に記載のシステム。
【請求項１９】
前記複数のメモリコマンドは複数のリードコマンドであり、
前記メモリコントローラロジックは、
前記複数のリードコマンドのうち一のリードコマンドに応じて前記複数のランクのうち第１のランクからリターンされたデータに対してエラー訂正符号チェック（ＥＣＣチェック）を実行し、前記ＥＣＣチェックに基づきＥＣＣチェック結果を生成するＥＣＣチェッカと、
前記データに対してＣＲＣチェックを実行し、前記ＣＲＣチェックに基づいてＣＲＣチェック結果を生成するＣＲＣチェッカと、
前記第１のランクについてＣＲＣプロセスがイネーブルされている場合には前記ＥＣＣチェック結果および前記ＣＲＣチェック結果の両方に基づいて、または、前記第１のランクについてＣＲＣプロセスがイネーブルされていない場合には前記ＥＣＣチェック結果のみに基づいて、前記データが有効である旨を示す信号を発行するトラッカと
を有する、請求項１６又は１７に記載のシステム。
【請求項２０】
前記複数のメモリコマンドは複数のライトコマンドであり、
前記メモリコントローラロジックは、
前記処理ロジックから受信した、前記複数のランクのうち第１のランクに書き込むべきデータに基づいてＣＲＣを生成するＣＲＣ生成部と、
前記第１のランクについてＣＲＣプロセスがイネーブルされているか否かの判断に基づいて、前記ＣＲＣを選択的に出力するようにマルチプレクサを制御するＣＲＣ制御ユニットと
を有する、請求項１６又は１７に記載のシステム。
【請求項２１】
１以上のアンテナを有し、無線ネットワークの１以上のコンポーネントとの間で無線通信リンクを構築および維持する無線ネットワークインターフェースコントローラをさらに備える、請求項１６又は１７に記載のシステム。
【請求項２２】
モバイルコンピューティングデバイスを構成する請求項１６から２１のいずれか一項に記載のシステム。
【請求項２３】
ＳＤＤＣ（Ｓｉｎｇｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールの複数のランクのうち第１のランクについて巡回冗長検査（ＣＲＣ）トリガ条件の検出を行う手段であって、前記ＣＲＣトリガ条件は、前記第１のランクの一のデバイスで障害が発生することを条件とする手段と、
前記検出の結果に基づいて前記第１のランクに対して発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする手段と、
前記第１のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてＣＲＣタイミングを動的にイネーブルする手段と
を備える装置。
【請求項２４】
ＤＤＤＣ（Ｄｏｕｂｌｅ  Ｄｅｖｉｃｅ  Ｄａｔａ  Ｃｏｒｒｅｃｔｉｏｎ）メモリモジュールであるメモリモジュールの複数のランクのうち第１のランクについて巡回冗長検査（ＣＲＣ）トリガ条件の検出を行う手段であって、前記ＣＲＣトリガ条件は、前記第１のランクの２個のデバイスで障害が発生することを条件とする手段と、
前記検出の結果に基づいて前記第１のランクに対して発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする手段と、
前記第１のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてＣＲＣタイミングを動的にイネーブルする手段と
を備える装置。
【請求項２５】
前記ＣＲＣプロセスを動的にイネーブルする手段は、前記第１のランクのメモリデバイスのレジスタのモードレジスタセットをプログラミングする手段を有する
請求項２３又は２４に記載の装置。
【請求項２６】
前記ＣＲＣプロセスを動的にイネーブルする手段は、前記第１のランクに対して発行されたメモリコマンドにおいてＣＲＣイネーブルビットを設定する手段を有する、請求項２３又は２４に記載の装置。
【請求項２７】
前記ＣＲＣタイミングを動的にイネーブルする手段は、ＣＲＣがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＣＲＣイネーブルＩＴＬ）に基づいて前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する手段を有する請求項２３又は２４に記載の装置。
【請求項２８】
前記コマンドブラックアウト制御を生成する手段は、
前記ＣＲＣイネーブルＩＴＬを出力するように、前記第１のランクに対応するタイミング素子内の選択ロジックを制御する手段と、
タイマで、前記ＣＲＣイネーブルＩＴＬに基づき前記コマンドブラックアウト制御を生成する手段と
を含む、請求項２７に記載の装置。
【請求項２９】
前記選択ロジックを制御する手段は、
前記ＣＲＣイネーブルＩＴＬ、および、ＣＲＣがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるＣＲＣディセーブルＩＴＬを受信するマルチプレクサを、前記ＣＲＣイネーブルＩＴＬを出力するように制御する手段を含む、請求項２８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願＞
本願は、米国特許出願第１３／１７５，４７２号（出願日：２０１１年７月１日、発明の名称：「ＲＡＮＫ−ＳＰＥＣＩＦＩＣ  ＣＹＣＬＩＣ  ＲＥＤＵＮＤＡＮＣＹ  ＣＨＥＣＫ（ランク別巡回冗長検査）」）に基づき優先権を主張する。当該出願の開示内容は全て、参照により本願に組み込まれる。
【０００２】
本開示の実施形態は、概してエラー検出に関し、具体的にはランク別巡回冗長検査に関する。
【背景技術】
【０００３】
ＤＤＤＣ（ｄｕａｌ  ｄｅｖｉｃｅ  ｄａｔａ  ｃｏｒｒｅｃｔｉｏｎ：デュアルデバイスデータコレクション）メモリモジュールは、あるランクで一のメモリデバイスで障害が発生すると、障害が発生したデバイスをマップアウトして、このランクの別の箇所で発見される冗長性を利用して、修復可能であるとしてよい。しかし、同じランクで第２のデバイスが障害を発生させると、エラー訂正符号（ＥＣＣ）保護が弱体化して、ＳＤＣ（サイレントデータコラプション）の危険性が対応して高くなるとしてよい。ＳＤＣの危険性を低減するため（または、効果的な修復ポリシーを実現することを目的としてチャネルエラーとダイナミックランダムアクセスメモリストレージエラーとを識別する等のその他の目的のため）にＣＲＣ（巡回冗長検査）コードが用いられるが、ＣＲＣコードの利用に応じて性能が低下する場合がある。
【図面の簡単な説明】
【０００４】
実施形態は、添付図面を参照しつつ、以下に記載する詳細な説明を読むことで容易に理解できるであろう。説明を分かり易くするべく、同様の参照番号は同様の構成素子を示す。実施形態は、添付図面において、本発明を限定するものではなく例示するものとして図示されている。
【図１】一部の実施形態に応じたスケジューリングユニットを示す概略図である。
【図２】一部の実施形態に応じた、図１のスケジューリングユニットを備えるシステムを示す概略図である。
【図３】一部の実施形態に応じた、図２に示すシステムのリードパス素子を示す概略図である。
【図４】一部の実施形態に応じた、リード処理に対応する波形を示す図である。
【図５】一部の実施形態に応じた、図２に示すシステムのライトパス素子を示す概略図である。
【図６】一部の実施形態に応じた、メモリコントローラロジックの動作を説明するためのフローチャートである。
【図７】一部の実施形態に係るシステムを示す図である。
【発明を実施するための形態】
【０００５】
以下に記載する詳細な説明では、本明細書の一部を成す添付図面を参照する。添付図面では、同様の参照番号は同様の構成要素を複数の図面にわたって示すものであり、実施され得る実施形態を例として図示している。他の実施形態も利用し得るものであり、本開示の範囲から逸脱することなく構造またはロジックを変更し得るものと理解されたい。このため、以下に記載する詳細な説明は限定的にとらえるべきではなく、実施形態の範囲は特許請求の範囲およびその均等物で定義される。
【０００６】
さまざまな処理を、請求の対象である主題を最も理解し易い方法にしたがって、複数の別箇の動作または処理として説明し得る。しかし、説明順序は、これらの処理が必ずしも特定の順序で行わなければならないことを意味するものと解釈されるべきではない。特に、これらの処理は、提示した順序で実行されない場合もあるとしてよい。説明した処理は、説明した実施形態とは異なる順序で実行するとしてよい。さまざまな処理を追加して実行するとしてもよいし、および／または、説明した処理を別の実施形態では省略するとしてもよい。
【０００７】
本開示では、「Ａおよび／またはＢ」という表現は、（Ａ）、（Ｂ）または（ＡおよびＢ）を意味する。本開示では、「Ａ、Ｂおよび／またはＣ」という表現は、（Ａ）、（Ｂ）、（Ｃ）、（ＡおよびＢ）、（ＡおよびＣ）、（ＢおよびＣ）または（Ａ、ＢおよびＣ）を意味する。
【０００８】
本明細書では、「ある実施形態において」または「実施形態において」という表現を利用する場合がある。これらはそれぞれ、１以上の同一または異なる実施形態を意味するとしてよい。さらに、「備える」、「有する」、「含む」等の用語は、本開示の実施形態に関して用いられる場合、同義語と見なす。
【０００９】
さまざまなエンティティを、実行する処理に基づいて紹介および説明する場合がある。これらのエンティティは、以下で説明する処理を実現するべく協働するハードウェア素子、ソフトウェア素子および／またはファームウェア素子を含むと理解されたい。
【００１０】
本開示に係る実施形態は、ＣＲＣイネーブル条件が発生すると、ＣＲＣをメモリモジュールの特定のランクで実行可能にする方法を説明している。ＣＲＣイネーブル条件は、所定数のメモリデバイスが一の所与のランクで障害を発生させることであるとしてよい。実施形態は、ランク別ＣＲＣを可能とするべく動的メモリバス制御を実現するマイクロアーキテクチャを利用する解決方法を提供する。これには、メモリコマンドがＣＲＣイネーブルランクにスケジューリングされている場合、コマンドブラックアウトタイマしきい値を変更することが含まれるとしてよい。
【００１１】
図１は、一部の実施形態に係るスケジューリングユニット１００を示す図である。図２は、一部の実施形態に応じた、システム２００を示す図である。処理ロジック２０８およびメモリモジュール２１２に結合されているメモリコントローラロジック２０４のコンテキスト内にスケジューリングユニット１００が存在している。スケジューリングユニット１００は、メモリモジュール２１２に関するメモリコマンドをスケジューリングするとしてよい。スケジューリングユニット１００は、図１に示すように、複数のタイミング素子１０８に結合されているＣＲＣイネーブル部１０４を有するとしてよい。タイミング素子１０８は、スケジューラ１１２に結合されているとしてよい。
【００１２】
各タイミング素子１０８はそれぞれ、メモリモジュール２１２の各ランク２２０に対応しているとしてよく、現在発行されているコマンドに基づいてコマンドスケジューリングを制御するとしてよい。タイミング素子１０８はそれぞれ、以下で説明するタイミング素子０と同様のアーキテクチャを持つとしてよい。
【００１３】
タイミング素子０は、さまざまなメモリコマンドを可能にするために必要なランク間ターンアラウンドレイテンシ（ＩＴＬ）に対応する複数の値を提供するコンフィグレーションレジスタ（ＣＲ）１１６を含むとしてよい。ＣＲ１１６は、選択ロジック１２０に結合されているとしてよく、ＩＴＬを選択ロジック１２０に供給するとしてよい。選択ロジック１２０は、タイマ１３２に供給される一の出力値を選択的に供給するマルチプレクサ１２４および１２８を含むとしてよい。選択ロジック１２０が供給する値は、スケジューラ１１２および／またはＣＲＣイネーブル部１０４から受信する制御信号によって制御されるとしてよい。これについては以下で説明する。
【００１４】
タイマ１３２は、選択ロジック１２０が供給する出力値に対応するコマンドブラックアウト制御を生成するとしてよく、コマンドブラックアウト制御をスケジューラ１１２に供給するとしてよい。一部の実施形態によると、タイマ１３２は、選択ロジック１２０から得られる出力値が設定されるカウントダウンタイマであってよい。これらの実施形態では、コマンドブラックアウト制御は、タイマ１３２がカウントダウンしている間はアクティブであるとしてよく、タイマ１３２が終了すると非アクティブになるとしてよい。
【００１５】
スケジューラ１１２は、タイミング素子１０８から受信するコマンドブラックアウト制御に基づいて、コマンドキュー１３６に格納されているメモリコマンドをスケジューリングするとしてよい。メモリコマンドは、メモリ制御モジュール２０４に供給されるとしてよい。尚、対応するデータはメモリチャネル２１６を介して転送される。
【００１６】
概して、スケジューリングユニット１００は、メモリチャネル２１６をクリアした後に後続のコマンドがメモリチャネル２１６を共有する任意のその他のランクに対してスケジューリングされるように、メモリコマンドが十分な時間を持つように動作するとしてよい。例えば、リードコマンドがランク１に対してスケジューリングされている場合、別のリードコマンドは、リターンされたデータがメモリチャネル２１６をクリアするために必要な時間にわたって、メモリチャネル２１６を介してアクセスする任意の他のランクにスケジューリングされるべきではない。この例では、データをリターンするのに必要なデータクロック（ＤＣＬＫ）が２データクロックと仮定すると、選択ロジック１２０はタイマ１３２に「２」という値を供給するとしてよい。タイマ１３２は、カウントダウンタイマを２に初期化して、コマンドブラックアウト制御をアクティブに設定し、データクロック毎に１ずつカウントダウンタイマをデクリメントするとしてよい。カウントダウンタイマが満了すると、タイマ１３２はコマンドブラックアウト制御を非アクティブに設定するとしてよい。スケジューラ１１２はこのため、タイマ１３２が切れるまで、メモリチャネル２１６を共有しているどのランクにもリードコマンドをスケジューリングしないとしてよい。
【００１７】
メモリチャネル２１６をクリアするためにメモリコマンドに必要な時間は、特定のランクについてＣＲＣがイネーブルされているか否かに応じて決まるとしてよい。このため、本開示の実施形態は、ＣＲＣイネーブル部１０４および選択ロジック１２０を提供して、ＣＲＣのランク別アクティブ化を可能とする。具体的には、ＣＲＣイネーブル部１０４は、各ランク２２０のＣＲＣステータスの記録を取るとしてよく、対応するタイミング素子上のマルチプレクサ１２４を制御して、ＣＲＣイネーブルＩＴＬまたはＣＲＣディセーブルＩＴＬをマルチプレクサ１２８に供給するとしてよい。ＣＲＣイネーブルＩＴＬは、ＣＲＣが特定のメモリコマンドに対して実行されている場合の当該メモリコマンドに対応付けられている値であってよい。ＣＲＣディセーブルＩＴＬは、ＣＲＣが実行されていない場合の同じメモリコマンドに対応付けられている値であってよい。ＣＲＣイネーブルＩＴＬは、ＣＲＣディセーブルＩＴＬとＣＲＣデルタとを加算した結果に等しいとしてよい。一部の実施形態によると、図４を参照しつつ後述する実施形態も含め、リードコマンドのＣＲＣディセーブルＩＴＬは２で、ＣＲＣデルタは３で、ＣＲＣイネーブルＩＴＬは５であるとしてよい。
【００１８】
一部の実施形態によると、ＣＲＣイネーブル部１０４は、制御データ経路ユニット２２４内のＣＲＣ素子２２８に結合されているとしてよい。他の実施形態によると、ＣＲＣイネーブル部１０４およびＣＲＣ素子２２８を組み合わせて、スケジューリングユニット１００、制御データ経路ユニット２２４等に含めるとしてもよい。ＣＲＣ素子２２８は、ＣＲＣ値を算出して確認することに加え、後述するように、ＣＲＣトリガ条件が発生しているかどうかに関してさまざまなランクをモニタリングして、ＣＲＣイネーブル部１０４にＣＲＣトリガ条件の情報を供給するとしてよい。
【００１９】
一部の実施形態によると、ＣＲＣトリガ条件は、特定のランクの特定数のメモリデバイス２３２、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスで障害が発生することに対応するとしてよい。例えば、簡単に上述したが、ＤＤＤＣ（ｄｕａｌ  ｄｅｖｉｃｅ  ｄａｔａ  ｃｏｒｒｅｃｔｉｏｎ：デュアルデバイスデータコレクション）メモリモジュールは、一のデバイスで障害が発生すると、障害が発生したデバイスをマップアウトして、メモリモジュール内の別の箇所で発見される冗長性を利用して、修復可能であるとしてよい。しかし、一のランクの第２のデバイスで障害が発生すると、エラー訂正符号（ＥＣＣ）保護が弱体化して、サイレントデータコラプション（ＳＤＣ）の危険性が対応して高くなる場合がある。このため、メモリモジュール２１２がＤＤＤＣメモリモジュールである場合、一の所与のランクで障害が発生するメモリデバイスが２個になると、この所与のランクに対して発行されるメモリコマンドに対してＣＲＣプロセスの利用がトリガされる場合がある。メモリモジュール２１２がＳＤＤＣ（ｓｉｎｇｌｅ  ｄｅｖｉｃｅ  ｄａｔａ  ｃｏｒｒｅｃｔｉｏｎ：シングルデバイスデータコレクション）メモリモジュールである場合、一の所与のランクの一のメモリデバイスで障害が発生すると、ＣＲＣプロセスの利用がトリガされるとしてよい。他の実施形態によると、障害が発生するデバイスの数を変えたり、または、デバイスの一部での障害の発生に変更しても、ＣＲＣトリガ条件と見なされるとしてもよい。
【００２０】
さまざまな実施形態によると、ＣＲＣ素子２２８はさらに、ランク２２０に対して動的にＣＲＣをイネーブルするとしてよい。ＣＲＣ素子２２８は、モードレジスタセット（ＭＲＳ）プログラミングを用いるか、または、オンザフライでＣＲＣを用いてターゲットランクに対してＣＲＣを動的にイネーブルするとしてよい。ＭＲＳプログラミングの場合、ＣＲＣ素子２２８は、システムメモリ割込を発行して、ターゲットランクへの全てのメモリコマンドをブロックするとしてよい。ＣＲＣ素子２２８は、任意のインフライト（ｉｎ−ｆｌｉｇｈｔ）のメモリコマンドが完了するまでに必要とする最長時間に対応する期間にわたって待機するとしてよい。ＣＲＣ素子２２８は、処理中のメモリコマンドがあるか否かを判断するべく特定のＣＲに対してポーリングを行うとしてよい。インフライトのメモリコマンドが無いと判断した後、ＣＲＣ素子２２８は、ＣＲＣをイネーブルするべくターゲットランクのメモリデバイスのモードレジスタセット（ＭＲＳ）レジスタのリードモディファイライト（ＲＭＷ）を行うとしてよい。この後、通常のメモリコマンドをターゲットランクの機能しているメモリデバイスに発行するとしてよい。
【００２１】
ＣＲＣをオンザフライで利用する場合、ＣＲＣ素子２２８は、ターゲットランクに対して発行されたメモリコマンドにおいてＣＲＣイネーブルビット、例えば、Ａ１２ビットを設定するとしてよい。設定されたビットによって、ＣＲＣが特定のメモリコマンドに対応付けられていることが分かるようになるとしてよい。
【００２２】
ＣＲＣは、一のランクに対する全てのメモリコマンドについてイネーブルされるとしてもよいし、選択されたメモリコマンドについてのみイネーブルされるとしてもよい。例えば、同時にリードおよびライトの両方についてＣＲＣをイネーブルすることは必要でないとしてもよい。リードについてＣＲＣをイネーブルすることが許容可能な、ＲＡＳ（信頼性、可用性、保守性）パラメータを持つ場合には、ライトについてＣＲＣをディセーブルするとしてもよいし、この逆も同様である。
【００２３】
図３は、一部の実施形態に係るシステム２００のリードパス素子を示す図である。具体的には、処理ロジック２０８は、データを要求するデータシンク３０４と、さまざまな要求の記録を取る処理ロジック（ＰＬ）トラッカ３０８とを備えるものとして図示されている。メモリコントローラロジック２０４は、ＣＲＣ素子２２８の一部を成すメモリコントローラロジック（ＭＣＬ）トラッカ３１２と、ＥＣＣチェッカ３１６と、ＣＲＣチェッカ３２０とを備えるものとして図示されている。図４は、一部の実施形態に係る、図１から図３をさらに参照しつつ説明するリードコマンドフローを説明するために用いる複数の波形を示す図である。
【００２４】
リードコマンドフローの例を、ランク０におけるロケーションＡに対する第１のリードコマンド、および、ランク１におけるロケーションＢに対する第２のリードコマンドに関して以下で説明する。ランク０では、ＣＲＣがイネーブルされている。ランク１では、ＣＲＣがディセーブルされている。スケジューラ１１２は、キュー１３６から、第１のリードコマンドを選択するとしてよい。スケジューラ１１２は、タイミング素子０のマルチプレクサ１２８に対して制御信号を発行して、ランク０に対するリードコマンドに対応する値を出力するようマルチプレクサ１２８を制御するとしてよい。ランク０についてＣＲＣがイネーブルされているので、ＣＲＣイネーブル部１０４はＣＲＣイネーブルＩＴＬ、例えば、５を出力するようにマルチプレクサ１２４を制御するとしてよい。ＣＲＣイネーブルＩＴＬは、マルチプレクサ１２８からタイマ１３２へ出力されるとしてよい。タイマ１３２は、ロケーションＡに対するリードコマンドを可能とするべく５個のデータクロックサイクルにわたってコマンドブラックアウト制御をアクティブ化するとしてよい。
【００２５】
図４を参照すると、第１および第２のデータクロックサイクルにおいて、データ（ＲＤＡ０−ＲＤＡ３）は、メモリモジュール２１２からメモリコントローラロジック２０４へとメモリチャネル２１６を介してリターンされるとしてよい。リターンされたデータは、ＥＣＣチェッカ３１６およびＣＲＣチェッカ３２０に並列に供給されるとしてよい。リターンされたデータはさらに、ライトパルス４０４で表すように、第２および第３のデータサイクルで、データシンク３０４に直接書き込まれるとしてよい。ＥＣＣチェッカ３１６は、リターンされたデータに対してＥＣＣチェックを実行して、第３のデータサイクルでＥＣＣチェック結果４０８をＭＣＬトラッカ３１２に供給するとしてよい。
【００２６】
第３および第４のデータクロックサイクルにおいて、フィラーデータ（ＲＤＡ−ｆｆ）は、メモリチャネル２１６を介して転送されるとしてよい。第５のデータクロックサイクルにおいて、リターンされたデータに対応するＣＲＣデータ（ＲＤＡ−ｃｒｃ）がメモリチャネル２１６を介して転送されるとしてよい。ＣＲＣチェッカ３２０は、リターンされたデータおよびＣＲＣデータに対してＣＲＣチェックを実行し、次のデータサイクル、つまり、第６のデータクロックサイクルでＣＲＣチェック結果４１２をＭＣＬトラッカ３１２に対して供給するとしてよい。
【００２７】
ＭＣＬトラッカ３１２は、ＥＣＣチェック結果４０８およびＣＲＣチェック結果４１２の両方を受信すると、リターンされたデータが有効である旨を示す確認応答４１６をＰＬトラッカ３０８に対して発行するとしてよい。
【００２８】
第５のデータクロックサイクルの後、タイマ１３２から出力されるコマンドブラックアウト制御が非アクティブ化され、スケジューラ１１２が第２のリードコマンドをランク１のロケーションＢにスケジューリングするとしてよい。ランク１ではＣＲＣがディセーブルされているので、タイミング素子１の選択ロジックは、ＣＲＣディセーブルＩＴＬを出力し、タイミング素子１のタイマが、２個のデータクロックサイクルにわたってコマンドブラックアウト制御をアクティブ化するとしてよい。
【００２９】
第２のリードコマンドを実行した結果、データ（ＲＤＢ０−ＲＤＢ３）が第６および第７のデータクロックサイクルでリターンされるとしてよい。ロケーションＡからのリードと同様に、ＥＣＣチェッカ３１６がリターンされたデータに対してＥＣＣチェックを実行し、続くデータクロックサイクル、つまり、第８のデータクロックサイクルでＥＣＣチェック結果４２０を供給するとしてよい。しかしこの場合、ＭＣＬトラッカ３１２は、ＣＲＣデータおよびＣＲＣチェック結果を待つ必要はなく、ＥＣＣチェック結果４２０と同時に確認応答４２４を発行することができる。
【００３０】
ＣＲＣイネーブルＩＴＬまたはＣＲＣディセーブルＩＴＬの一方のスケジューリングおよびアクセスは、ライトコマンドフローについても、リードコマンドフローに関して上述したものと同様であるとしてよい。一部の実施形態に応じたシステム２００のライトパス素子は、図５に図示している。具体的には、処理ロジック２０８は、データソース５０４を備えるものとして図示されている。メモリコントローラロジック２０４は、少なくとも図示しているように互いに結合されているＣＲＣ制御ユニット５０８、ＣＲＣ生成部５１２、ＥＣＣ生成部５１６およびマルチプレクサ５２０を備えるものとして図示されている。ＣＲＣ制御ユニット５０８、ＣＲＣ生成部５１２およびマルチプレクサ５２０は、ＣＲＣ素子２２８の一部であってよい。
【００３１】
データソース５０４は、メモリコントローラロジック２０４にデータを供給するとしてよい。当該データはメモリモジュール２１２に書き込まれる。データは、マルチプレクサ５２０、ＣＲＣ生成部５１２およびＥＣＣ生成部５１６に供給されるとしてよい。ＣＲＣ生成部５１２およびＥＣＣ生成部５１６はそれぞれ、メモリモジュール２１２に書き込むべきデータに対応するＣＲＣおよびＥＣＣを生成するとしてよい。ＣＲＣ生成部は、データのコピーと共にＣＲＣをマルチプレクサ５２０に供給するとしてよい。ＣＲＣ制御ユニット５０８は、データの書き込み先である特定のランクについてＣＲＣがイネーブルされている場合、データおよびＣＲＣがメモリモジュール２１２に出力されるようにマルチプレクサ５２０を制御するとしてよい。特定のランクについてＣＲＣがイネーブルされていない場合、ＣＲＣ制御ユニット５０８はＣＲＣ無しでデータを出力するようマルチプレクサ５２０を制御するとしてよい。
【００３２】
図６は、一部の実施形態に応じた、メモリコントローラロジックの動作を説明するフローチャート６００である。ブロック６０４において、メモリコントローラロジックのエンティティ、例えば、ＣＲＣ素子は、メモリモジュールのランクについてＣＲＣトリガ条件をモニタリングするとしてよい。ＣＲＣトリガ条件をモニタリングすることは、ランク毎に障害が発生したメモリデバイスの数の記録を取ることを含むとしてよい。
【００３３】
ブロック６０８において、メモリコントローラロジックのエンティティ、例えば、ＣＲＣ素子が、ＣＲＣトリガ条件が検出されたか否かを判断するとしてよい。所与のランクについて所定数のメモリデバイスで障害が発生している場合、ＣＲＣトリガ条件が検出されているとしてよい。ＣＲＣトリガ条件が検出されない場合、ブロック６０４でＣＲＣトリガ条件のモニタリングに戻るとしてよい。ＣＲＣトリガ条件が検出されている場合、ブロック６１２に進むとしてよい。
【００３４】
ブロック６１２において、メモリコントローラロジックのエンティティ、例えば、ＣＲＣ素子は、ＣＲＣトリガ条件に対応付けられているランクを宛先とするメモリコマンドについてＣＲＣプロセスを動的にイネーブルするとしてよい。一部の実施形態によると、ＣＲＣプロセスは、上述したようにＭＲＳプログラミングで、または、ＣＲＣをオンザフライで利用することで、動的にイネーブルされるとしてよい。
【００３５】
ブロック６１６において、メモリコントローラロジックのエンティティ、例えば、ＣＲＣイネーブル部は、ＣＲＣイネーブルランクとの間でメモリチャネルを共有しているランクについて、ＣＲＣタイミングを動的にイネーブルするとしてよい。一部の実施形態によると、ＣＲＣイネーブル部は、ＣＲＣトリガ条件の検出を示す情報をＣＲＣ素子から受信するとしてよい。ＣＲＣイネーブル部はこの後、ＣＲＣイネーブルランクに対応するタイミング素子においてスケジューリングロジックを制御して、当該ランクに関するＣＲＣメモリコマンドを可能とする値をタイマに供給するとしてよい。
【００３６】
説明した本開示の実施形態は、一の所与のランクについて所定数のデバイスで障害が発生している等の特定のトリガ条件に基づいてＣＲＣを選択的に利用する。このようにＣＲＣを選択的に利用することで、必要でないＣＲＣを利用して性能が劣化することを防ぎつつ、所望される場合にＣＲＣを実行することができ、メモリシステムの全体的な動作が改善される。上述したように、ＳＤＣのレートが受け入れがたいレベルになる可能性が高い場合に、チャネルエラーとＤＲＡＭストレージエラーとを区別して効果的な修復ポリシーをイネーブルするべく、または、他の理由でＣＲＣが所望されるとしてよい。
【００３７】
本開示の実施形態は、所望に応じて設定するべく任意の適切なハードウェアおよび／またはソフトウェアを用いてシステムで実現するとしてよい。図７は、一実施形態について、１以上のプロセッサ７０４と、プロセッサ７０４のうち少なくとも一つに結合されているシステム制御ロジック７０８と、システム制御ロジック７０８に結合されているシステムメモリ７１２と、システム制御ロジック７０８に結合されている不揮発性メモリ（ＮＶＭ）／ストレージ７１６と、システム制御ロジック７０８に結合されている１以上の通信インターフェース７２０とを備えるシステム７００の例を示す。
【００３８】
一実施形態について、システム制御ロジック７０８は、システム制御ロジック７０８と通信しているプロセッサ７０４のうち少なくとも１つ、および／または、任意の適切なデバイスまたはコンポーネントに対して任意の適切なインターフェースを実現するべく任意の適切なインターフェースコントローラを有するとしてよい。
【００３９】
システム制御ロジック７０８は、メモリモジュール２１２と同様であるシステムメモリ７１２に対するインターフェースを実現するべく、メモリコントローラロジック２０４と同様であるメモリコントローラロジック７１０を有するとしてよい。メモリコントローラロジック７１０は、ハードウェアモジュール、ソフトウェアモジュールおよび／またはファームウェアモジュールであってよい。上述したように、メモリコントローラロジック７１０は、所与のランクについて所定数のデバイスで障害が発生している等の特定のトリガ条件に基づき、ＣＲＣを選択的に利用するとしてよい。
【００４０】
システムメモリ７１２は、例えば、システム７００についてのデータおよび／または命令をロードおよび格納するために用いるとしてよい。システムメモリ７１２は、一実施形態において、適切な揮発性メモリ、例えば、適切なＤＲＡＭを有するとしてよい。一部の実施形態によると、システムメモリ７１２は、ダブルデータレートタイプフォーシンクロナスダイナミックランダムアクセスメモリ（ＤＤＲ４  ＳＤＲＡＭ）を含むとしてよい。
【００４１】
システム制御ロジック７０８は、一実施形態について、ＮＶＭ／ストレージ７１６および通信インターフェース７２０に対してインターフェースを提供する１以上の入出力（Ｉ／Ｏ）コントローラを有するとしてよい。
【００４２】
ＮＶＭ／ストレージ７１６は、例えば、データおよび／または命令を格納するために用いられるとしてよい。ＮＶＭ／ストレージ７１６は、例えば、フラッシュメモリ等の任意の適切な不揮発性メモリを含むとしてよく、および／または、例えば、１以上のハードディスクドライブ（ＨＤＤ）、１以上のコンパクトディスク（ＣＤ）ドライブおよび／または１以上のデジタルバーサティルディスク（ＤＶＤ）ドライブ等の任意の適切な不揮発性ストレージデバイスを含むとしてよい。
【００４３】
ＮＶＭ／ストレージ７１６は、システム７００がインストールされているデバイスの物理的な一部を構成しているストレージリソースを含むとしてよい。または、当該デバイスがアクセス可能であってよいが、必ずしもデバイスの一部でなくてもよい。例えば、ＮＶＭ／ストレージ７１６は、通信インターフェース７２０を介してネットワークを通じてアクセスされるとしてよい。
【００４４】
通信インターフェース７２０は、１以上のネットワークを介して、および／または、任意のその他の適切なデバイスと通信するべく、システム７００のためのインターフェースを実現するとしてよい。一部の実施形態によると、通信インターフェース７２０は、無線ネットワークの１以上のコンポーネントとの間で無線通信リンクを構築および維持するべく１以上のアンテナ７２８を持つ無線ネットワークインターフェースコントローラ７２４を含むとしてよい。システム７００は、１以上の無線ネットワーク規格および／またはプロトコルのいずれかに応じて、無線ネットワークの１以上のコンポーネントと無線通信を行うとしてよい。
【００４５】
一実施形態によると、プロセッサ７０４の少なくとも１つは、システム制御ロジック７０８の１以上のコントローラ用のロジック、例えば、メモリコントローラロジック７１０と共に、パッケージングされるとしてよい。一実施形態によると、プロセッサ７０４のうち少なくとも１つは、システム制御ロジック７０８の１以上のコントローラ用のロジックと共にパッケージングされて、システムインパッケージ（ＳｉＰ）を形成しているとしてよい。一実施形態について、プロセッサ７０４のうち少なくとも１つは、システム制御ロジック７０８の１以上のコントローラ用のロジックと同じダイ上に集積化されているとしてよい。一実施形態について、プロセッサ７０４の少なくとも１つは、システム制御ロジック７０８の１以上のコントローラ用のロジックと同じダイ上に集積化されてシステムオンチップ（ＳｏＣ）を形成しているとしてよい。
【００４６】
さまざまな実施形態によると、システム７００は、これらに限定されないが、サーバ、ワークステーション、デスクトップコンピューティングデバイスまたはモバイルコンピューティングデバイス（例えば、ラップトップコンピューティングデバイス、手持ちコンピューティングデバイス、タブレット、ネットブック等）であってよい。さまざまな実施形態によると、システム７００が備える構成要素の数は増減させるとしてもよく、および／または、アーキテクチャを変更するとしてもよい。
【００４７】
さまざまな実施形態に係る装置を説明する。当該装置は、メモリモジュールの複数のランクのうち第１のランクに関するＣＲＣトリガ条件の情報を受信し、当該情報の受信に基づいてＣＲＣイネーブル信号を生成するＣＲＣイネーブル部と、ＣＲＣイネーブル部に結合されている複数のタイミング素子とを備えるとしてよい。複数のタイミング素子は、それぞれが複数のランクのいずれか１つに対応する。第１のランクに対応する第１のタイミング素子は、ＣＲＣイネーブル信号の受信に基づいて第１のランクについてＣＲＣを可能とするコマンドブラックアウト制御を生成する。ＣＲＣトリガ条件の情報は、第１のランクにおいて所定数のメモリデバイスで障害が発生したことを示す情報であってよい。一部の実施形態によると、メモリモジュールは、ＤＤＤＣメモリモジュールであってよく、所定数は「２」であるとしてよい。他の実施形態によると、メモリモジュールはＳＤＤＣメモリモジュールであってよく、所定数は「１」であってよい。
【００４８】
一部の実施形態によると、第１のタイミング素子は、ＣＲＣイネーブル信号に基づいて複数の値から第１の値を選択的に出力する選択ロジックと、選択ロジックに結合されており第１の値に基づいてコマンドブラックアウト制御を生成するタイマとを有するとしてよい。複数のランクは、メモリコントローラロジックとメモリモジュールとの間のメモリチャネルを介してアクセスされる構成になっていてよく、第１の値は、第１のランクにスケジューリングされているメモリコマンドがメモリチャネルをクリアした後に後続のメモリコマンドを複数のランクのうち別のランクにスケジューリングされるように、十分な複数のデータクロックサイクルを割り当てる構成になっている。
【００４９】
一部の実施形態によると、当該装置はさらに、選択ロジックに結合されている複数のＣＲを備えるとしてよい。選択ロジックは、ＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＩＴＬ）およびＣＲＣディセーブルＩＴＬをＣＲから受信して、ＣＲＣイネーブル信号を受信することに基づいてＣＲＣイネーブルＩＴＬを出力するマルチプレクサを有するとしてよい。
【００５０】
一部の実施形態によると、ＣＲＣ素子は、モードレジスタセット（ＭＲＳ）プログラミングによって、または、オンザフライでＣＲＣを用いて、第１のランクを宛先とするメモリコマンドについてＣＲＣプロセスを動的にイネーブルするとしてよい。
【００５１】
さまざまな実施形態によると、方法が説明されている。当該方法は、メモリモジュールの複数のランクのうち第１のランクについて巡回冗長検査（ＣＲＣ）トリガ条件を検出する段階と、検出する段階に基づいて第１のランクに対いて発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする段階と、第１のランクとメモリチャネルを共有するランクについてＣＲＣタイミングを動的にイネーブルする段階とを備えるとしてよい。ＣＲＣトリガ条件を検出する段階は、第１のランクにおいて所定数のメモリデバイスで障害が発生していることを検出する段階を有するとしてよい。
【００５２】
一部の実施形態によると、ＣＲＣプロセスを動的にイネーブルする段階は、第１のランクのメモリデバイスのモードレジスタセットのレジスタをプログラミングする段階、第１のランクに対して発行されたメモリコマンドにおいてＣＲＣイネーブルビットを設定する段階、および／または、ＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＩＴＬ）に基づいてコマンドブラックアウト制御を生成する段階を有するとしてよい。コマンドブラックアウト制御は、ＣＲＣイネーブルＩＴＬを出力するように、第１のランクに対応するタイミング素子内の選択ロジックを制御し、タイマを用いて、ＣＲＣイネーブルＩＴＬに基づきコマンドブラックアウト制御を生成することによって生成されるとしてよい。選択ロジックは、ＣＲＣイネーブルＩＴＬおよびＣＲＣディセーブルＩＴＬを受信するマルチプレクサを、ＣＲＣイネーブルＩＴＬを出力するように制御することによって制御されるとしてよい。
【００５３】
一部の実施形態では、実行されるとデバイスに本明細書で説明した方法のいずれかを実行させる命令を格納している１以上のコンピュータ可読媒体を備える。
【００５４】
さまざまな実施形態によると、システムが説明されている。当該システムは、複数の要求を発行する処理ロジックと、複数のランクを有するメモリモジュールと、処理ロジックおよびメモリモジュールに結合されているメモリコントローラロジックとを備えるとしてよい。メモリコントローラロジックは、複数の要求に基づき複数のランクに対して複数のメモリコマンドを発行する。複数のメモリコマンドに対応するデータは、一の共通のメモリチャネルを介して転送されるよう構成されている。メモリコントローラは、複数のランクの各ランク毎にＣＲＣプロセスがイネーブルされるように複数のメモリコマンドをスケジューリングするように構成されているスケジューリングユニットを有する。
【００５５】
メモリコントローラロジックは、各ランク毎にＣＲＣプロセスをイネーブルするよう構成されているＣＲＣ素子を有するとしてよく、スケジューリングユニットは、ＣＲＣタイミングをイネーブルするＣＲＣイネーブル部を含む。
【００５６】
複数のメモリコマンドはリードコマンドであってよく、メモリコントローラロジックはさらに、複数のリードコマンドのうち一のリードコマンドに応じて複数のランクのうち第１のランクからリターンされたデータに対してエラー訂正符号（ＥＣＣ）チェックを実行するよう、そして、ＥＣＣチェックに基づいてＥＣＣチェック結果を生成するよう構成されているＥＣＣチェッカと、データに対してＣＲＣチェックを実行するよう、そして、ＣＲＣチェックに基づいてＣＲＣチェック結果を生成するよう構成されているＣＲＣチェッカと、第１のランクに対してＣＲＣプロセスがイネーブルされている場合はＥＣＣチェック結果およびＣＲＣチェック結果の両方に基づいて、または、第１のランクについてＣＲＣプロセスがイネーブルされていない場合はＥＣＣチェック結果のみに基づいて、データが有効である旨を示すよう信号を発行するよう構成されているトラッカとを有するとしてよい。
【００５７】
複数のメモリコマンドはライトコマンドであってよく、メモリコントローラロジックはさらに、プロセッサから受信された、複数のランクのうち第１のランクに書き込むべきデータに基づいてＣＲＣを生成するよう構成されているＣＲＣ生成部と、ＣＲＣプロセスが第１のランクについてイネーブルされているか否かの判断結果に基づいてＣＲＣを選択的に出力するようにマルチプレクサを制御するよう構成されているＣＲＣ制御ユニットとを有するとしてよい。
【００５８】
一部の実施形態によると、当該システムは、１以上のアンテナを有し、無線ネットワークの１以上のコンポーネントとの間で無線通信リンクを構築および維持する無線ネットワークインターフェースコントローラを備えるとしてよい。当該システムは、モバイルコンピューティングデバイスを構成する。
【００５９】
さまざまな実施形態によると、装置が説明されている。当該装置は、メモリモジュールの複数のランクのうち第１のランクについて巡回冗長検査（ＣＲＣ）トリガ条件を検出する手段と、検出結果に基づいて第１のランクに対して発行されたメモリコマンドについてＣＲＣプロセスを動的にイネーブルする手段と、第１のランクとメモリチャネルを共有するランクについてＣＲＣタイミングを動的にイネーブルする手段とを備えるとしてよい。
【００６０】
一部の実施形態によると、ＣＲＣトリガ条件を検出する手段は、第１のランクにおいて所定数のメモリデバイスで障害が発生していることを検出する手段を有するとしてよい。
【００６１】
一部の実施形態によると、ＣＲＣプロセスを動的にイネーブルする手段は、第１のランクのメモリデバイスにおいてモードレジスタセットのレジスタをプログラミングする手段、ランクに対して発行されたメモリコマンドにおいてＣＲＣイネーブルビットを設定する手段、および／または、ＣＲＣイネーブルランク間ターンアラウンドレイテンシ（ＩＴＬ）に基づいてコマンドブラックアウト制御を生成する手段を有するとしてよい。
【００６２】
コマンドブラックアウト制御を生成する手段は、ＣＲＣイネーブルＩＴＬを出力するように、ランクに対応するタイミング素子内の選択ロジックを制御する手段と、タイマで、ＣＲＣイネーブルＩＴＬに基づきコマンドブラックアウト制御を生成する手段とを含むとしてよい。
【００６３】
一部の実施形態によると、選択ロジックを制御する手段は、ＣＲＣイネーブルＩＴＬおよびＣＲＣディセーブルＩＴＬを受信するマルチプレクサを、ＣＲＣイネーブルＩＴＬを出力するように制御する手段を含むとしてよい。
【００６４】
本明細書では説明のため特定の実施形態を図示および説明してきたが、図示および説明した実施形態に代えて同じ目的を実現するように算出された多岐にわたる変形例および／あるいは均等例の実施例および実施形態を、本開示の範囲から逸脱することなく、実施するとしてもよい。本願は、本明細書で説明した実施形態を変形または適合させた実施形態も含むものとする。このため、本明細書で説明した実施形態は請求項およびその均等物によってのみ限定されるものであることを明確に意図したものである。
【図１】
0005754037.tif 000002
【図２】
0005754037.tif 000003
【図３】
0005754037.tif 000004
【図４】
0005754037.tif 000005
【図５】
0005754037.tif 000006
【図６】
0005754037.tif 000007
【図７】
0005754037.tif 000008