ランク別巡回冗長検査

申请号 JP2014519050 申请日 2012-06-28 公开(公告)号 JP5754037B2 公开(公告)日 2015-07-22
申请人 インテル・コーポレーション; 发明人 スバスチャンドラボース、ラメシュ; トーマス、テッシル; ミトラ、サムバラン; ダス、デバレーナ; チェン、カイ;
摘要
权利要求

SDDC(Single Device Data Correction)メモリモジュールであるメモリモジュールと、 前記メモリモジュールの複数のランクのうち第1のランクの一のデバイスで障害が発生することを条件とするトリガ条件であって、前記第1のランクに関して巡回冗長検査(CRC)プロセスをトリガするCRCトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてCRCイネーブル信号を生成するCRCイネーブル部と、 前記CRCイネーブル部に結合されている複数のタイミング素子と を備え、 前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、 前記複数のランクのうち前記第1のランクに対応する、前記複数のタイミング素子のうちの第1のタイミング素子は、前記CRCイネーブル信号の受信に基づいて、前記第1のランクについてCRCを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、装置。DDDC(Dual Device Data Correction)メモリモジュールであるメモリモジュールと、 前記メモリモジュールの複数のランクのうち第1のランクの2個のデバイスで障害が発生することを条件とするトリガ条件であって、前記第1のランクに関して巡回冗長検査(CRC)プロセスをトリガするCRCトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてCRCイネーブル信号を生成するCRCイネーブル部と、 前記CRCイネーブル部に結合されている複数のタイミング素子と を備え、 前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、 前記複数のランクのうち前記第1のランクに対応する、前記複数のタイミング素子のうちの第1のタイミング素子は、前記CRCイネーブル信号の受信に基づいて、前記第1のランクについてCRCを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、装置。前記第1のタイミング素子は、 前記CRCイネーブル信号に基づいて複数の値のうち第1の値を選択的に出する選択ロジックと、 前記選択ロジックに結合されており、前記第1の値に基づいて前記コマンドブラックアウト制御を生成するタイマと を有する、請求項1又は2に記載の装置。前記複数のランクは、メモリコントローラロジックと前記メモリモジュールとの間の一のメモリチャネルを介してアクセスするように構成されており、前記第1の値は、前記第1のランクにスケジューリングされているメモリコマンドが前記一のメモリチャネルをクリアした後に後続のメモリコマンドを前記複数のランクのうち任意の他のランクにスケジューリングするように、十分な複数のデータクロックサイクルを割り当てる、請求項3に記載の装置。前記選択ロジックに結合されている複数の設定レジスタ(複数のCR) をさらに備え、 前記選択ロジックは、CRCがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCイネーブルランク間ターンアラウンドレイテンシ(CRCイネーブルITL)およびCRCがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCディセーブルITLを前記複数のCRから受信し、前記CRCイネーブル信号の受信に基づいて前記CRCイネーブルITLを出力するマルチプレクサを有する、請求項3に記載の装置。モードレジスタセット(MRS)のプログラミングまたはオンザフライでCRCを利用することで、前記第1のランクを宛先とするメモリコマンドについてCRCプロセスを動的にイネーブルするCRC素子をさらに備える、請求項1から5のいずれか一項に記載の装置。SDDC(Single Device Data Correction)メモリモジュールであるメモリモジュールの複数のランクのうち第1のランクに関して巡回冗長検査トリガ条件(CRCトリガ条件)を検出する段階であって、前記CRCトリガ条件は、前記メモリモジュールの前記第1のランクの一のデバイスで障害が発生することを条件とする段階と、 前記検出する段階に基づいて前記第1のランクに対して発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする段階と、 前記第1のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてCRCタイミングを動的にイネーブルする段階と を備える方法。DDDC(Dual Device Data Correction)メモリモジュールであるメモリモジュールの複数のランクのうち第1のランクに関して巡回冗長検査トリガ条件(CRCトリガ条件)を検出する段階であって、前記CRCトリガ条件は、前記メモリモジュールの前記第1のランクの2個のデバイスで障害が発生することを条件とする段階と、 前記検出する段階に基づいて前記第1のランクに対して発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする段階と、 前記第1のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてCRCタイミングを動的にイネーブルする段階と を備える方法。前記CRCプロセスを動的にイネーブルする段階は、前記第1のランクのメモリデバイスのレジスタで構成されるモードレジスタセットをプログラミングする段階を有する 請求項7又は8に記載の方法。前記CRCプロセスを動的にイネーブルする段階は、 前記第1のランクに対して発行されたメモリコマンドにおいてCRCイネーブルビットを設定する段階を有する 請求項7又は8に記載の方法。前記CRCタイミングを動的にイネーブルする段階は、CRCがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCイネーブルランク間ターンアラウンドレイテンシ(CRCイネーブルITL)に基づいて前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する段階を有する、請求項7又は8に記載の方法。前記コマンドブラックアウト制御を生成する段階は、 前記CRCイネーブルITLを出力するように、前記第1のランクに対応するタイミング素子内の選択ロジックを制御する段階と、 タイマを用いて、前記CRCイネーブルITLに基づいて前記コマンドブラックアウト制御を生成する段階と を有する請求項11に記載の方法。前記選択ロジックを制御する段階は、前記CRCイネーブルITL、および、CRCがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCディセーブルITLを受信するマルチプレクサを、前記CRCイネーブルITLを出力するように制御する段階を含む、請求項12に記載の方法。請求項7から13のいずれか一項に記載の方法を実行する装置。コンピュータに、請求項7から13のいずれか一項に記載の方法を実行させるためのプログラム。複数の要求を発行する処理ロジックと、 SDDC(Single Device Data Correction)メモリモジュールであり、複数のランクを有するメモリモジュールと、 前記処理ロジックおよび前記メモリモジュールと結合されているメモリコントローラロジックと、 を備え、 前記メモリコントローラロジックは、前記複数の要求に基づいて前記複数のランクに対して複数のメモリコマンドを発行し、 前記複数のメモリコマンドに対応するデータは、一の共通メモリチャネルを介して転送され、 前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてイネーブルされた巡回冗長検査(CRC)プロセスを許容するように、前記複数のメモリコマンドをスケジューリングするスケジューリングユニットを有し、 前記スケジューリングユニットは、前記複数のランクのうち第1のランクの一のデバイスで障害が発生することを条件とするトリガ条件であって、前記第1のランクに関してCRCプロセスをトリガするCRCトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてCRCイネーブル信号を生成するCRCイネーブル部と、 前記CRCイネーブル部に結合されている複数のタイミング素子とを含み、 前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、 前記複数のランクのうち前記第1のランクに対応する、前記複数のタイミング素子のうちの第1のタイミング素子は、前記CRCイネーブル信号の受信に基づいて、前記第1のランクについてCRCを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、 システム。複数の要求を発行する処理ロジックと、 DDDC(Double Device Data Correction)メモリモジュールであり、複数のランクを有するメモリモジュールと、 前記処理ロジックおよび前記メモリモジュールと結合されているメモリコントローラロジックと、 を備え、 前記メモリコントローラロジックは、前記複数の要求に基づいて前記複数のランクに対して複数のメモリコマンドを発行し、 前記複数のメモリコマンドに対応するデータは、一の共通メモリチャネルを介して転送され、 前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてイネーブルされたCRCプロセスを許容するように、前記複数のメモリコマンドをスケジューリングするスケジューリングユニットを有し、 前記スケジューリングユニットは、前記複数のランクのうち第1のランクの2個のデバイスで障害が発生することを条件とするトリガ条件であって、前記第1のランクに関して巡回冗長検査(CRC)プロセスをトリガするCRCトリガ条件の検出を示す情報を受信し、前記情報の受信に基づいてCRCイネーブル信号を生成するCRCイネーブル部と、 前記CRCイネーブル部に結合されている複数のタイミング素子とを含み、 前記複数のタイミング素子のそれぞれは、前記複数のランクのうち一つのランクに対応し、 前記複数のランクのうち前記第1のランクに対応する、前記複数のタイミング素子のうちの第1のタイミング素子は、前記CRCイネーブル信号の受信に基づいて、前記第1のランクについてCRCを可能とするべく前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する、 システム。前記メモリコントローラロジックは、前記複数のランクのそれぞれにおいてCRCプロセスをイネーブルするCRC素子を有する、 請求項16又は17に記載のシステム。前記複数のメモリコマンドは複数のリードコマンドであり、 前記メモリコントローラロジックは、 前記複数のリードコマンドのうち一のリードコマンドに応じて前記複数のランクのうち第1のランクからリターンされたデータに対してエラー訂正符号チェック(ECCチェック)を実行し、前記ECCチェックに基づきECCチェック結果を生成するECCチェッカと、 前記データに対してCRCチェックを実行し、前記CRCチェックに基づいてCRCチェック結果を生成するCRCチェッカと、 前記第1のランクについてCRCプロセスがイネーブルされている場合には前記ECCチェック結果および前記CRCチェック結果の両方に基づいて、または、前記第1のランクについてCRCプロセスがイネーブルされていない場合には前記ECCチェック結果のみに基づいて、前記データが有効である旨を示す信号を発行するトラッカと を有する、請求項16又は17に記載のシステム。前記複数のメモリコマンドは複数のライトコマンドであり、 前記メモリコントローラロジックは、 前記処理ロジックから受信した、前記複数のランクのうち第1のランクに書き込むべきデータに基づいてCRCを生成するCRC生成部と、 前記第1のランクについてCRCプロセスがイネーブルされているか否かの判断に基づいて、前記CRCを選択的に出力するようにマルチプレクサを制御するCRC制御ユニットと を有する、請求項16又は17に記載のシステム。1以上のアンテナを有し、無線ネットワークの1以上のコンポーネントとの間で無線通信リンクを構築および維持する無線ネットワークインターフェースコントローラをさらに備える、請求項16又は17に記載のシステム。モバイルコンピューティングデバイスを構成する請求項16から21のいずれか一項に記載のシステム。SDDC(Single Device Data Correction)メモリモジュールであるメモリモジュールの複数のランクのうち第1のランクについて巡回冗長検査(CRC)トリガ条件の検出を行う手段であって、前記CRCトリガ条件は、前記第1のランクの一のデバイスで障害が発生することを条件とする手段と、 前記検出の結果に基づいて前記第1のランクに対して発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする手段と、 前記第1のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてCRCタイミングを動的にイネーブルする手段と を備える装置。DDDC(Double Device Data Correction)メモリモジュールであるメモリモジュールの複数のランクのうち第1のランクについて巡回冗長検査(CRC)トリガ条件の検出を行う手段であって、前記CRCトリガ条件は、前記第1のランクの2個のデバイスで障害が発生することを条件とする手段と、 前記検出の結果に基づいて前記第1のランクに対して発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする手段と、 前記第1のランクとメモリチャネルを共有する前記複数のランクのうちのランクについてCRCタイミングを動的にイネーブルする手段と を備える装置。前記CRCプロセスを動的にイネーブルする手段は、前記第1のランクのメモリデバイスのレジスタのモードレジスタセットをプログラミングする手段を有する 請求項23又は24に記載の装置。前記CRCプロセスを動的にイネーブルする手段は、前記第1のランクに対して発行されたメモリコマンドにおいてCRCイネーブルビットを設定する手段を有する、請求項23又は24に記載の装置。前記CRCタイミングを動的にイネーブルする手段は、CRCがイネーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCイネーブルランク間ターンアラウンドレイテンシ(CRCイネーブルITL)に基づいて前記複数のランクに対してカウントダウンタイマが満了するまでメモリコマンドをスケジューリングしないコマンドブラックアウト制御を生成する手段を有する請求項23又は24に記載の装置。前記コマンドブラックアウト制御を生成する手段は、 前記CRCイネーブルITLを出力するように、前記第1のランクに対応するタイミング素子内の選択ロジックを制御する手段と、 タイマで、前記CRCイネーブルITLに基づき前記コマンドブラックアウト制御を生成する手段と を含む、請求項27に記載の装置。前記選択ロジックを制御する手段は、 前記CRCイネーブルITL、および、CRCがディセーブルされている場合においてメモリコマンドを実行するのに必要な時間であるCRCディセーブルITLを受信するマルチプレクサを、前記CRCイネーブルITLを出力するように制御する手段を含む、請求項28に記載の装置。

说明书全文

<関連出願> 本願は、米国特許出願第13/175,472号(出願日:2011年7月1日、発明の名称:「RANK−SPECIFIC CYCLIC REDUNDANCY CHECK(ランク別巡回冗長検査)」)に基づき優先権を主張する。当該出願の開示内容は全て、参照により本願に組み込まれる。

本開示の実施形態は、概してエラー検出に関し、具体的にはランク別巡回冗長検査に関する。

DDDC(dual device data correction:デュアルデバイスデータコレクション)メモリモジュールは、あるランクで一のメモリデバイスで障害が発生すると、障害が発生したデバイスをマップアウトして、このランクの別の箇所で発見される冗長性を利用して、修復可能であるとしてよい。しかし、同じランクで第2のデバイスが障害を発生させると、エラー訂正符号(ECC)保護が弱体化して、SDC(サイレントデータコラプション)の危険性が対応して高くなるとしてよい。SDCの危険性を低減するため(または、効果的な修復ポリシーを実現することを目的としてチャネルエラーとダイナミックランダムアクセスメモリストレージエラーとを識別する等のその他の目的のため)にCRC(巡回冗長検査)コードが用いられるが、CRCコードの利用に応じて性能が低下する場合がある。

実施形態は、添付図面を参照しつつ、以下に記載する詳細な説明を読むことで容易に理解できるであろう。説明を分かり易くするべく、同様の参照番号は同様の構成素子を示す。実施形態は、添付図面において、本発明を限定するものではなく例示するものとして図示されている。

一部の実施形態に応じたスケジューリングユニットを示す概略図である。

一部の実施形態に応じた、図1のスケジューリングユニットを備えるシステムを示す概略図である。

一部の実施形態に応じた、図2に示すシステムのリードパス素子を示す概略図である。

一部の実施形態に応じた、リード処理に対応する波形を示す図である。

一部の実施形態に応じた、図2に示すシステムのライトパス素子を示す概略図である。

一部の実施形態に応じた、メモリコントローラロジックの動作を説明するためのフローチャートである。

一部の実施形態に係るシステムを示す図である。

以下に記載する詳細な説明では、本明細書の一部を成す添付図面を参照する。添付図面では、同様の参照番号は同様の構成要素を複数の図面にわたって示すものであり、実施され得る実施形態を例として図示している。他の実施形態も利用し得るものであり、本開示の範囲から逸脱することなく構造またはロジックを変更し得るものと理解されたい。このため、以下に記載する詳細な説明は限定的にとらえるべきではなく、実施形態の範囲は特許請求の範囲およびその均等物で定義される。

さまざまな処理を、請求の対象である主題を最も理解し易い方法にしたがって、複数の別箇の動作または処理として説明し得る。しかし、説明順序は、これらの処理が必ずしも特定の順序で行わなければならないことを意味するものと解釈されるべきではない。特に、これらの処理は、提示した順序で実行されない場合もあるとしてよい。説明した処理は、説明した実施形態とは異なる順序で実行するとしてよい。さまざまな処理を追加して実行するとしてもよいし、および/または、説明した処理を別の実施形態では省略するとしてもよい。

本開示では、「Aおよび/またはB」という表現は、(A)、(B)または(AおよびB)を意味する。本開示では、「A、Bおよび/またはC」という表現は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、BおよびC)を意味する。

本明細書では、「ある実施形態において」または「実施形態において」という表現を利用する場合がある。これらはそれぞれ、1以上の同一または異なる実施形態を意味するとしてよい。さらに、「備える」、「有する」、「含む」等の用語は、本開示の実施形態に関して用いられる場合、同義語と見なす。

さまざまなエンティティを、実行する処理に基づいて紹介および説明する場合がある。これらのエンティティは、以下で説明する処理を実現するべく協働するハードウェア素子、ソフトウェア素子および/またはファームウェア素子を含むと理解されたい。

本開示に係る実施形態は、CRCイネーブル条件が発生すると、CRCをメモリモジュールの特定のランクで実行可能にする方法を説明している。CRCイネーブル条件は、所定数のメモリデバイスが一の所与のランクで障害を発生させることであるとしてよい。実施形態は、ランク別CRCを可能とするべく動的メモリバス制御を実現するマイクロアーキテクチャを利用する解決方法を提供する。これには、メモリコマンドがCRCイネーブルランクにスケジューリングされている場合、コマンドブラックアウトタイマしきい値を変更することが含まれるとしてよい。

図1は、一部の実施形態に係るスケジューリングユニット100を示す図である。図2は、一部の実施形態に応じた、システム200を示す図である。処理ロジック208およびメモリモジュール212に結合されているメモリコントローラロジック204のコンテキスト内にスケジューリングユニット100が存在している。スケジューリングユニット100は、メモリモジュール212に関するメモリコマンドをスケジューリングするとしてよい。スケジューリングユニット100は、図1に示すように、複数のタイミング素子108に結合されているCRCイネーブル部104を有するとしてよい。タイミング素子108は、スケジューラ112に結合されているとしてよい。

各タイミング素子108はそれぞれ、メモリモジュール212の各ランク220に対応しているとしてよく、現在発行されているコマンドに基づいてコマンドスケジューリングを制御するとしてよい。タイミング素子108はそれぞれ、以下で説明するタイミング素子0と同様のアーキテクチャを持つとしてよい。

タイミング素子0は、さまざまなメモリコマンドを可能にするために必要なランク間ターンアラウンドレイテンシ(ITL)に対応する複数の値を提供するコンフィグレーションレジスタ(CR)116を含むとしてよい。CR116は、選択ロジック120に結合されているとしてよく、ITLを選択ロジック120に供給するとしてよい。選択ロジック120は、タイマ132に供給される一の出値を選択的に供給するマルチプレクサ124および128を含むとしてよい。選択ロジック120が供給する値は、スケジューラ112および/またはCRCイネーブル部104から受信する制御信号によって制御されるとしてよい。これについては以下で説明する。

タイマ132は、選択ロジック120が供給する出力値に対応するコマンドブラックアウト制御を生成するとしてよく、コマンドブラックアウト制御をスケジューラ112に供給するとしてよい。一部の実施形態によると、タイマ132は、選択ロジック120から得られる出力値が設定されるカウントダウンタイマであってよい。これらの実施形態では、コマンドブラックアウト制御は、タイマ132がカウントダウンしている間はアクティブであるとしてよく、タイマ132が終了すると非アクティブになるとしてよい。

スケジューラ112は、タイミング素子108から受信するコマンドブラックアウト制御に基づいて、コマンドキュー136に格納されているメモリコマンドをスケジューリングするとしてよい。メモリコマンドは、メモリ制御モジュール204に供給されるとしてよい。尚、対応するデータはメモリチャネル216を介して転送される。

概して、スケジューリングユニット100は、メモリチャネル216をクリアした後に後続のコマンドがメモリチャネル216を共有する任意のその他のランクに対してスケジューリングされるように、メモリコマンドが十分な時間を持つように動作するとしてよい。例えば、リードコマンドがランク1に対してスケジューリングされている場合、別のリードコマンドは、リターンされたデータがメモリチャネル216をクリアするために必要な時間にわたって、メモリチャネル216を介してアクセスする任意の他のランクにスケジューリングされるべきではない。この例では、データをリターンするのに必要なデータクロック(DCLK)が2データクロックと仮定すると、選択ロジック120はタイマ132に「2」という値を供給するとしてよい。タイマ132は、カウントダウンタイマを2に初期化して、コマンドブラックアウト制御をアクティブに設定し、データクロック毎に1ずつカウントダウンタイマをデクリメントするとしてよい。カウントダウンタイマが満了すると、タイマ132はコマンドブラックアウト制御を非アクティブに設定するとしてよい。スケジューラ112はこのため、タイマ132が切れるまで、メモリチャネル216を共有しているどのランクにもリードコマンドをスケジューリングしないとしてよい。

メモリチャネル216をクリアするためにメモリコマンドに必要な時間は、特定のランクについてCRCがイネーブルされているか否かに応じて決まるとしてよい。このため、本開示の実施形態は、CRCイネーブル部104および選択ロジック120を提供して、CRCのランク別アクティブ化を可能とする。具体的には、CRCイネーブル部104は、各ランク220のCRCステータスの記録を取るとしてよく、対応するタイミング素子上のマルチプレクサ124を制御して、CRCイネーブルITLまたはCRCディセーブルITLをマルチプレクサ128に供給するとしてよい。CRCイネーブルITLは、CRCが特定のメモリコマンドに対して実行されている場合の当該メモリコマンドに対応付けられている値であってよい。CRCディセーブルITLは、CRCが実行されていない場合の同じメモリコマンドに対応付けられている値であってよい。CRCイネーブルITLは、CRCディセーブルITLとCRCデルタとを加算した結果に等しいとしてよい。一部の実施形態によると、図4を参照しつつ後述する実施形態も含め、リードコマンドのCRCディセーブルITLは2で、CRCデルタは3で、CRCイネーブルITLは5であるとしてよい。

一部の実施形態によると、CRCイネーブル部104は、制御データ経路ユニット224内のCRC素子228に結合されているとしてよい。他の実施形態によると、CRCイネーブル部104およびCRC素子228を組み合わせて、スケジューリングユニット100、制御データ経路ユニット224等に含めるとしてもよい。CRC素子228は、CRC値を算出して確認することに加え、後述するように、CRCトリガ条件が発生しているかどうかに関してさまざまなランクをモニタリングして、CRCイネーブル部104にCRCトリガ条件の情報を供給するとしてよい。

一部の実施形態によると、CRCトリガ条件は、特定のランクの特定数のメモリデバイス232、例えば、ダイナミックランダムアクセスメモリ(DRAM)デバイスで障害が発生することに対応するとしてよい。例えば、簡単に上述したが、DDDC(dual device data correction:デュアルデバイスデータコレクション)メモリモジュールは、一のデバイスで障害が発生すると、障害が発生したデバイスをマップアウトして、メモリモジュール内の別の箇所で発見される冗長性を利用して、修復可能であるとしてよい。しかし、一のランクの第2のデバイスで障害が発生すると、エラー訂正符号(ECC)保護が弱体化して、サイレントデータコラプション(SDC)の危険性が対応して高くなる場合がある。このため、メモリモジュール212がDDDCメモリモジュールである場合、一の所与のランクで障害が発生するメモリデバイスが2個になると、この所与のランクに対して発行されるメモリコマンドに対してCRCプロセスの利用がトリガされる場合がある。メモリモジュール212がSDDC(single device data correction:シングルデバイスデータコレクション)メモリモジュールである場合、一の所与のランクの一のメモリデバイスで障害が発生すると、CRCプロセスの利用がトリガされるとしてよい。他の実施形態によると、障害が発生するデバイスの数を変えたり、または、デバイスの一部での障害の発生に変更しても、CRCトリガ条件と見なされるとしてもよい。

さまざまな実施形態によると、CRC素子228はさらに、ランク220に対して動的にCRCをイネーブルするとしてよい。CRC素子228は、モードレジスタセット(MRS)プログラミングを用いるか、または、オンザフライでCRCを用いてターゲットランクに対してCRCを動的にイネーブルするとしてよい。MRSプログラミングの場合、CRC素子228は、システムメモリ割込を発行して、ターゲットランクへの全てのメモリコマンドをブロックするとしてよい。CRC素子228は、任意のインフライト(in−flight)のメモリコマンドが完了するまでに必要とする最長時間に対応する期間にわたって待機するとしてよい。CRC素子228は、処理中のメモリコマンドがあるか否かを判断するべく特定のCRに対してポーリングを行うとしてよい。インフライトのメモリコマンドが無いと判断した後、CRC素子228は、CRCをイネーブルするべくターゲットランクのメモリデバイスのモードレジスタセット(MRS)レジスタのリードモディファイライト(RMW)を行うとしてよい。この後、通常のメモリコマンドをターゲットランクの機能しているメモリデバイスに発行するとしてよい。

CRCをオンザフライで利用する場合、CRC素子228は、ターゲットランクに対して発行されたメモリコマンドにおいてCRCイネーブルビット、例えば、A12ビットを設定するとしてよい。設定されたビットによって、CRCが特定のメモリコマンドに対応付けられていることが分かるようになるとしてよい。

CRCは、一のランクに対する全てのメモリコマンドについてイネーブルされるとしてもよいし、選択されたメモリコマンドについてのみイネーブルされるとしてもよい。例えば、同時にリードおよびライトの両方についてCRCをイネーブルすることは必要でないとしてもよい。リードについてCRCをイネーブルすることが許容可能な、RAS(信頼性、可用性、保守性)パラメータを持つ場合には、ライトについてCRCをディセーブルするとしてもよいし、この逆も同様である。

図3は、一部の実施形態に係るシステム200のリードパス素子を示す図である。具体的には、処理ロジック208は、データを要求するデータシンク304と、さまざまな要求の記録を取る処理ロジック(PL)トラッカ308とを備えるものとして図示されている。メモリコントローラロジック204は、CRC素子228の一部を成すメモリコントローラロジック(MCL)トラッカ312と、ECCチェッカ316と、CRCチェッカ320とを備えるものとして図示されている。図4は、一部の実施形態に係る、図1から図3をさらに参照しつつ説明するリードコマンドフローを説明するために用いる複数の波形を示す図である。

リードコマンドフローの例を、ランク0におけるロケーションAに対する第1のリードコマンド、および、ランク1におけるロケーションBに対する第2のリードコマンドに関して以下で説明する。ランク0では、CRCがイネーブルされている。ランク1では、CRCがディセーブルされている。スケジューラ112は、キュー136から、第1のリードコマンドを選択するとしてよい。スケジューラ112は、タイミング素子0のマルチプレクサ128に対して制御信号を発行して、ランク0に対するリードコマンドに対応する値を出力するようマルチプレクサ128を制御するとしてよい。ランク0についてCRCがイネーブルされているので、CRCイネーブル部104はCRCイネーブルITL、例えば、5を出力するようにマルチプレクサ124を制御するとしてよい。CRCイネーブルITLは、マルチプレクサ128からタイマ132へ出力されるとしてよい。タイマ132は、ロケーションAに対するリードコマンドを可能とするべく5個のデータクロックサイクルにわたってコマンドブラックアウト制御をアクティブ化するとしてよい。

図4を参照すると、第1および第2のデータクロックサイクルにおいて、データ(RDA0−RDA3)は、メモリモジュール212からメモリコントローラロジック204へとメモリチャネル216を介してリターンされるとしてよい。リターンされたデータは、ECCチェッカ316およびCRCチェッカ320に並列に供給されるとしてよい。リターンされたデータはさらに、ライトパルス404で表すように、第2および第3のデータサイクルで、データシンク304に直接書き込まれるとしてよい。ECCチェッカ316は、リターンされたデータに対してECCチェックを実行して、第3のデータサイクルでECCチェック結果408をMCLトラッカ312に供給するとしてよい。

第3および第4のデータクロックサイクルにおいて、フィラーデータ(RDA−ff)は、メモリチャネル216を介して転送されるとしてよい。第5のデータクロックサイクルにおいて、リターンされたデータに対応するCRCデータ(RDA−crc)がメモリチャネル216を介して転送されるとしてよい。CRCチェッカ320は、リターンされたデータおよびCRCデータに対してCRCチェックを実行し、次のデータサイクル、つまり、第6のデータクロックサイクルでCRCチェック結果412をMCLトラッカ312に対して供給するとしてよい。

MCLトラッカ312は、ECCチェック結果408およびCRCチェック結果412の両方を受信すると、リターンされたデータが有効である旨を示す確認応答416をPLトラッカ308に対して発行するとしてよい。

第5のデータクロックサイクルの後、タイマ132から出力されるコマンドブラックアウト制御が非アクティブ化され、スケジューラ112が第2のリードコマンドをランク1のロケーションBにスケジューリングするとしてよい。ランク1ではCRCがディセーブルされているので、タイミング素子1の選択ロジックは、CRCディセーブルITLを出力し、タイミング素子1のタイマが、2個のデータクロックサイクルにわたってコマンドブラックアウト制御をアクティブ化するとしてよい。

第2のリードコマンドを実行した結果、データ(RDB0−RDB3)が第6および第7のデータクロックサイクルでリターンされるとしてよい。ロケーションAからのリードと同様に、ECCチェッカ316がリターンされたデータに対してECCチェックを実行し、続くデータクロックサイクル、つまり、第8のデータクロックサイクルでECCチェック結果420を供給するとしてよい。しかしこの場合、MCLトラッカ312は、CRCデータおよびCRCチェック結果を待つ必要はなく、ECCチェック結果420と同時に確認応答424を発行することができる。

CRCイネーブルITLまたはCRCディセーブルITLの一方のスケジューリングおよびアクセスは、ライトコマンドフローについても、リードコマンドフローに関して上述したものと同様であるとしてよい。一部の実施形態に応じたシステム200のライトパス素子は、図5に図示している。具体的には、処理ロジック208は、データソース504を備えるものとして図示されている。メモリコントローラロジック204は、少なくとも図示しているように互いに結合されているCRC制御ユニット508、CRC生成部512、ECC生成部516およびマルチプレクサ520を備えるものとして図示されている。CRC制御ユニット508、CRC生成部512およびマルチプレクサ520は、CRC素子228の一部であってよい。

データソース504は、メモリコントローラロジック204にデータを供給するとしてよい。当該データはメモリモジュール212に書き込まれる。データは、マルチプレクサ520、CRC生成部512およびECC生成部516に供給されるとしてよい。CRC生成部512およびECC生成部516はそれぞれ、メモリモジュール212に書き込むべきデータに対応するCRCおよびECCを生成するとしてよい。CRC生成部は、データのコピーと共にCRCをマルチプレクサ520に供給するとしてよい。CRC制御ユニット508は、データの書き込み先である特定のランクについてCRCがイネーブルされている場合、データおよびCRCがメモリモジュール212に出力されるようにマルチプレクサ520を制御するとしてよい。特定のランクについてCRCがイネーブルされていない場合、CRC制御ユニット508はCRC無しでデータを出力するようマルチプレクサ520を制御するとしてよい。

図6は、一部の実施形態に応じた、メモリコントローラロジックの動作を説明するフローチャート600である。ブロック604において、メモリコントローラロジックのエンティティ、例えば、CRC素子は、メモリモジュールのランクについてCRCトリガ条件をモニタリングするとしてよい。CRCトリガ条件をモニタリングすることは、ランク毎に障害が発生したメモリデバイスの数の記録を取ることを含むとしてよい。

ブロック608において、メモリコントローラロジックのエンティティ、例えば、CRC素子が、CRCトリガ条件が検出されたか否かを判断するとしてよい。所与のランクについて所定数のメモリデバイスで障害が発生している場合、CRCトリガ条件が検出されているとしてよい。CRCトリガ条件が検出されない場合、ブロック604でCRCトリガ条件のモニタリングに戻るとしてよい。CRCトリガ条件が検出されている場合、ブロック612に進むとしてよい。

ブロック612において、メモリコントローラロジックのエンティティ、例えば、CRC素子は、CRCトリガ条件に対応付けられているランクを宛先とするメモリコマンドについてCRCプロセスを動的にイネーブルするとしてよい。一部の実施形態によると、CRCプロセスは、上述したようにMRSプログラミングで、または、CRCをオンザフライで利用することで、動的にイネーブルされるとしてよい。

ブロック616において、メモリコントローラロジックのエンティティ、例えば、CRCイネーブル部は、CRCイネーブルランクとの間でメモリチャネルを共有しているランクについて、CRCタイミングを動的にイネーブルするとしてよい。一部の実施形態によると、CRCイネーブル部は、CRCトリガ条件の検出を示す情報をCRC素子から受信するとしてよい。CRCイネーブル部はこの後、CRCイネーブルランクに対応するタイミング素子においてスケジューリングロジックを制御して、当該ランクに関するCRCメモリコマンドを可能とする値をタイマに供給するとしてよい。

説明した本開示の実施形態は、一の所与のランクについて所定数のデバイスで障害が発生している等の特定のトリガ条件に基づいてCRCを選択的に利用する。このようにCRCを選択的に利用することで、必要でないCRCを利用して性能が劣化することを防ぎつつ、所望される場合にCRCを実行することができ、メモリシステムの全体的な動作が改善される。上述したように、SDCのレートが受け入れがたいレベルになる可能性が高い場合に、チャネルエラーとDRAMストレージエラーとを区別して効果的な修復ポリシーをイネーブルするべく、または、他の理由でCRCが所望されるとしてよい。

本開示の実施形態は、所望に応じて設定するべく任意の適切なハードウェアおよび/またはソフトウェアを用いてシステムで実現するとしてよい。図7は、一実施形態について、1以上のプロセッサ704と、プロセッサ704のうち少なくとも一つに結合されているシステム制御ロジック708と、システム制御ロジック708に結合されているシステムメモリ712と、システム制御ロジック708に結合されている不揮発性メモリ(NVM)/ストレージ716と、システム制御ロジック708に結合されている1以上の通信インターフェース720とを備えるシステム700の例を示す。

一実施形態について、システム制御ロジック708は、システム制御ロジック708と通信しているプロセッサ704のうち少なくとも1つ、および/または、任意の適切なデバイスまたはコンポーネントに対して任意の適切なインターフェースを実現するべく任意の適切なインターフェースコントローラを有するとしてよい。

システム制御ロジック708は、メモリモジュール212と同様であるシステムメモリ712に対するインターフェースを実現するべく、メモリコントローラロジック204と同様であるメモリコントローラロジック710を有するとしてよい。メモリコントローラロジック710は、ハードウェアモジュール、ソフトウェアモジュールおよび/またはファームウェアモジュールであってよい。上述したように、メモリコントローラロジック710は、所与のランクについて所定数のデバイスで障害が発生している等の特定のトリガ条件に基づき、CRCを選択的に利用するとしてよい。

システムメモリ712は、例えば、システム700についてのデータおよび/または命令をロードおよび格納するために用いるとしてよい。システムメモリ712は、一実施形態において、適切な揮発性メモリ、例えば、適切なDRAMを有するとしてよい。一部の実施形態によると、システムメモリ712は、ダブルデータレートタイプフォーシンクロナスダイナミックランダムアクセスメモリ(DDR4 SDRAM)を含むとしてよい。

システム制御ロジック708は、一実施形態について、NVM/ストレージ716および通信インターフェース720に対してインターフェースを提供する1以上の入出力(I/O)コントローラを有するとしてよい。

NVM/ストレージ716は、例えば、データおよび/または命令を格納するために用いられるとしてよい。NVM/ストレージ716は、例えば、フラッシュメモリ等の任意の適切な不揮発性メモリを含むとしてよく、および/または、例えば、1以上のハードディスクドライブ(HDD)、1以上のコンパクトディスク(CD)ドライブおよび/または1以上のデジタルバーサティルディスク(DVD)ドライブ等の任意の適切な不揮発性ストレージデバイスを含むとしてよい。

NVM/ストレージ716は、システム700がインストールされているデバイスの物理的な一部を構成しているストレージリソースを含むとしてよい。または、当該デバイスがアクセス可能であってよいが、必ずしもデバイスの一部でなくてもよい。例えば、NVM/ストレージ716は、通信インターフェース720を介してネットワークを通じてアクセスされるとしてよい。

通信インターフェース720は、1以上のネットワークを介して、および/または、任意のその他の適切なデバイスと通信するべく、システム700のためのインターフェースを実現するとしてよい。一部の実施形態によると、通信インターフェース720は、無線ネットワークの1以上のコンポーネントとの間で無線通信リンクを構築および維持するべく1以上のアンテナ728を持つ無線ネットワークインターフェースコントローラ724を含むとしてよい。システム700は、1以上の無線ネットワーク規格および/またはプロトコルのいずれかに応じて、無線ネットワークの1以上のコンポーネントと無線通信を行うとしてよい。

一実施形態によると、プロセッサ704の少なくとも1つは、システム制御ロジック708の1以上のコントローラ用のロジック、例えば、メモリコントローラロジック710と共に、パッケージングされるとしてよい。一実施形態によると、プロセッサ704のうち少なくとも1つは、システム制御ロジック708の1以上のコントローラ用のロジックと共にパッケージングされて、システムインパッケージ(SiP)を形成しているとしてよい。一実施形態について、プロセッサ704のうち少なくとも1つは、システム制御ロジック708の1以上のコントローラ用のロジックと同じダイ上に集積化されているとしてよい。一実施形態について、プロセッサ704の少なくとも1つは、システム制御ロジック708の1以上のコントローラ用のロジックと同じダイ上に集積化されてシステムオンチップ(SoC)を形成しているとしてよい。

さまざまな実施形態によると、システム700は、これらに限定されないが、サーバ、ワークステーション、デスクトップコンピューティングデバイスまたはモバイルコンピューティングデバイス(例えば、ラップトップコンピューティングデバイス、手持ちコンピューティングデバイス、タブレット、ネットブック等)であってよい。さまざまな実施形態によると、システム700が備える構成要素の数は増減させるとしてもよく、および/または、アーキテクチャを変更するとしてもよい。

さまざまな実施形態に係る装置を説明する。当該装置は、メモリモジュールの複数のランクのうち第1のランクに関するCRCトリガ条件の情報を受信し、当該情報の受信に基づいてCRCイネーブル信号を生成するCRCイネーブル部と、CRCイネーブル部に結合されている複数のタイミング素子とを備えるとしてよい。複数のタイミング素子は、それぞれが複数のランクのいずれか1つに対応する。第1のランクに対応する第1のタイミング素子は、CRCイネーブル信号の受信に基づいて第1のランクについてCRCを可能とするコマンドブラックアウト制御を生成する。CRCトリガ条件の情報は、第1のランクにおいて所定数のメモリデバイスで障害が発生したことを示す情報であってよい。一部の実施形態によると、メモリモジュールは、DDDCメモリモジュールであってよく、所定数は「2」であるとしてよい。他の実施形態によると、メモリモジュールはSDDCメモリモジュールであってよく、所定数は「1」であってよい。

一部の実施形態によると、第1のタイミング素子は、CRCイネーブル信号に基づいて複数の値から第1の値を選択的に出力する選択ロジックと、選択ロジックに結合されており第1の値に基づいてコマンドブラックアウト制御を生成するタイマとを有するとしてよい。複数のランクは、メモリコントローラロジックとメモリモジュールとの間のメモリチャネルを介してアクセスされる構成になっていてよく、第1の値は、第1のランクにスケジューリングされているメモリコマンドがメモリチャネルをクリアした後に後続のメモリコマンドを複数のランクのうち別のランクにスケジューリングされるように、十分な複数のデータクロックサイクルを割り当てる構成になっている。

一部の実施形態によると、当該装置はさらに、選択ロジックに結合されている複数のCRを備えるとしてよい。選択ロジックは、CRCイネーブルランク間ターンアラウンドレイテンシ(ITL)およびCRCディセーブルITLをCRから受信して、CRCイネーブル信号を受信することに基づいてCRCイネーブルITLを出力するマルチプレクサを有するとしてよい。

一部の実施形態によると、CRC素子は、モードレジスタセット(MRS)プログラミングによって、または、オンザフライでCRCを用いて、第1のランクを宛先とするメモリコマンドについてCRCプロセスを動的にイネーブルするとしてよい。

さまざまな実施形態によると、方法が説明されている。当該方法は、メモリモジュールの複数のランクのうち第1のランクについて巡回冗長検査(CRC)トリガ条件を検出する段階と、検出する段階に基づいて第1のランクに対いて発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする段階と、第1のランクとメモリチャネルを共有するランクについてCRCタイミングを動的にイネーブルする段階とを備えるとしてよい。CRCトリガ条件を検出する段階は、第1のランクにおいて所定数のメモリデバイスで障害が発生していることを検出する段階を有するとしてよい。

一部の実施形態によると、CRCプロセスを動的にイネーブルする段階は、第1のランクのメモリデバイスのモードレジスタセットのレジスタをプログラミングする段階、第1のランクに対して発行されたメモリコマンドにおいてCRCイネーブルビットを設定する段階、および/または、CRCイネーブルランク間ターンアラウンドレイテンシ(ITL)に基づいてコマンドブラックアウト制御を生成する段階を有するとしてよい。コマンドブラックアウト制御は、CRCイネーブルITLを出力するように、第1のランクに対応するタイミング素子内の選択ロジックを制御し、タイマを用いて、CRCイネーブルITLに基づきコマンドブラックアウト制御を生成することによって生成されるとしてよい。選択ロジックは、CRCイネーブルITLおよびCRCディセーブルITLを受信するマルチプレクサを、CRCイネーブルITLを出力するように制御することによって制御されるとしてよい。

一部の実施形態では、実行されるとデバイスに本明細書で説明した方法のいずれかを実行させる命令を格納している1以上のコンピュータ可読媒体を備える。

さまざまな実施形態によると、システムが説明されている。当該システムは、複数の要求を発行する処理ロジックと、複数のランクを有するメモリモジュールと、処理ロジックおよびメモリモジュールに結合されているメモリコントローラロジックとを備えるとしてよい。メモリコントローラロジックは、複数の要求に基づき複数のランクに対して複数のメモリコマンドを発行する。複数のメモリコマンドに対応するデータは、一の共通のメモリチャネルを介して転送されるよう構成されている。メモリコントローラは、複数のランクの各ランク毎にCRCプロセスがイネーブルされるように複数のメモリコマンドをスケジューリングするように構成されているスケジューリングユニットを有する。

メモリコントローラロジックは、各ランク毎にCRCプロセスをイネーブルするよう構成されているCRC素子を有するとしてよく、スケジューリングユニットは、CRCタイミングをイネーブルするCRCイネーブル部を含む。

複数のメモリコマンドはリードコマンドであってよく、メモリコントローラロジックはさらに、複数のリードコマンドのうち一のリードコマンドに応じて複数のランクのうち第1のランクからリターンされたデータに対してエラー訂正符号(ECC)チェックを実行するよう、そして、ECCチェックに基づいてECCチェック結果を生成するよう構成されているECCチェッカと、データに対してCRCチェックを実行するよう、そして、CRCチェックに基づいてCRCチェック結果を生成するよう構成されているCRCチェッカと、第1のランクに対してCRCプロセスがイネーブルされている場合はECCチェック結果およびCRCチェック結果の両方に基づいて、または、第1のランクについてCRCプロセスがイネーブルされていない場合はECCチェック結果のみに基づいて、データが有効である旨を示すよう信号を発行するよう構成されているトラッカとを有するとしてよい。

複数のメモリコマンドはライトコマンドであってよく、メモリコントローラロジックはさらに、プロセッサから受信された、複数のランクのうち第1のランクに書き込むべきデータに基づいてCRCを生成するよう構成されているCRC生成部と、CRCプロセスが第1のランクについてイネーブルされているか否かの判断結果に基づいてCRCを選択的に出力するようにマルチプレクサを制御するよう構成されているCRC制御ユニットとを有するとしてよい。

一部の実施形態によると、当該システムは、1以上のアンテナを有し、無線ネットワークの1以上のコンポーネントとの間で無線通信リンクを構築および維持する無線ネットワークインターフェースコントローラを備えるとしてよい。当該システムは、モバイルコンピューティングデバイスを構成する。

さまざまな実施形態によると、装置が説明されている。当該装置は、メモリモジュールの複数のランクのうち第1のランクについて巡回冗長検査(CRC)トリガ条件を検出する手段と、検出結果に基づいて第1のランクに対して発行されたメモリコマンドについてCRCプロセスを動的にイネーブルする手段と、第1のランクとメモリチャネルを共有するランクについてCRCタイミングを動的にイネーブルする手段とを備えるとしてよい。

一部の実施形態によると、CRCトリガ条件を検出する手段は、第1のランクにおいて所定数のメモリデバイスで障害が発生していることを検出する手段を有するとしてよい。

一部の実施形態によると、CRCプロセスを動的にイネーブルする手段は、第1のランクのメモリデバイスにおいてモードレジスタセットのレジスタをプログラミングする手段、ランクに対して発行されたメモリコマンドにおいてCRCイネーブルビットを設定する手段、および/または、CRCイネーブルランク間ターンアラウンドレイテンシ(ITL)に基づいてコマンドブラックアウト制御を生成する手段を有するとしてよい。

コマンドブラックアウト制御を生成する手段は、CRCイネーブルITLを出力するように、ランクに対応するタイミング素子内の選択ロジックを制御する手段と、タイマで、CRCイネーブルITLに基づきコマンドブラックアウト制御を生成する手段とを含むとしてよい。

一部の実施形態によると、選択ロジックを制御する手段は、CRCイネーブルITLおよびCRCディセーブルITLを受信するマルチプレクサを、CRCイネーブルITLを出力するように制御する手段を含むとしてよい。

本明細書では説明のため特定の実施形態を図示および説明してきたが、図示および説明した実施形態に代えて同じ目的を実現するように算出された多岐にわたる変形例および/あるいは均等例の実施例および実施形態を、本開示の範囲から逸脱することなく、実施するとしてもよい。本願は、本明細書で説明した実施形態を変形または適合させた実施形態も含むものとする。このため、本明細書で説明した実施形態は請求項およびその均等物によってのみ限定されるものであることを明確に意図したものである。

QQ群二维码
意见反馈