JP5754037B2 - ランク別巡回冗長検査 - Google Patents

ランク別巡回冗長検査 Download PDF

Info

Publication number
JP5754037B2
JP5754037B2 JP2014519050A JP2014519050A JP5754037B2 JP 5754037 B2 JP5754037 B2 JP 5754037B2 JP 2014519050 A JP2014519050 A JP 2014519050A JP 2014519050 A JP2014519050 A JP 2014519050A JP 5754037 B2 JP5754037 B2 JP 5754037B2
Authority
JP
Japan
Prior art keywords
crc
rank
memory
ranks
enable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014519050A
Other languages
English (en)
Other versions
JP2014523034A (ja
Inventor
スバスチャンドラボース、ラメシュ
トーマス、テッシル
ミトラ、サムバラン
ダス、デバレーナ
チェン、カイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014523034A publication Critical patent/JP2014523034A/ja
Application granted granted Critical
Publication of JP5754037B2 publication Critical patent/JP5754037B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

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

Claims (29)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/175,472 US8527836B2 (en) 2011-07-01 2011-07-01 Rank-specific cyclic redundancy check
US13/175,472 2011-07-01
PCT/US2012/044734 WO2013006387A2 (en) 2011-07-01 2012-06-28 Rank-specific cyclic redundancy check

Publications (2)

Publication Number Publication Date
JP2014523034A JP2014523034A (ja) 2014-09-08
JP5754037B2 true JP5754037B2 (ja) 2015-07-22

Family

ID=47391973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014519050A Expired - Fee Related JP5754037B2 (ja) 2011-07-01 2012-06-28 ランク別巡回冗長検査

Country Status (6)

Country Link
US (2) US8527836B2 (ja)
EP (1) EP2727115B1 (ja)
JP (1) JP5754037B2 (ja)
KR (1) KR101570622B1 (ja)
CN (1) CN103765522B (ja)
WO (1) WO2013006387A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527836B2 (en) * 2011-07-01 2013-09-03 Intel Corporation Rank-specific cyclic redundancy check
KR20130130593A (ko) 2012-05-22 2013-12-02 삼성전자주식회사 분산 안테나를 사용하는 복수 개의 기지국을 포함하는 무선통신 시스템에서 기준 신호 측정 방법 및 장치
US20160070022A1 (en) * 2013-09-13 2016-03-10 Baker Hughes Incorporated Fast scintillation high density oxide and oxy-fluoride glass and nano-structured materials for well logging applications
KR20170102875A (ko) * 2014-12-31 2017-09-12 퀄컴 인코포레이티드 리던던시 버전 패킷들로부터 정보 복원을 위한 시스템들 및 방법들
US9697094B2 (en) 2015-02-06 2017-07-04 Intel Corporation Dynamically changing lockstep configuration
KR102296738B1 (ko) 2015-06-01 2021-09-01 삼성전자 주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 에러 정정 방법
CN105302658A (zh) * 2015-12-09 2016-02-03 浪潮电子信息产业股份有限公司 一种存储器数据校正测试方法
JP6160717B1 (ja) * 2016-01-15 2017-07-12 日本電気株式会社 プロセッサ、および、データ転送方法
IT201800005506A1 (it) * 2018-05-18 2019-11-18 Sistema di elaborazione, relativo circuito integrato e procedimento
CN109783487A (zh) * 2018-12-07 2019-05-21 广州经传多赢投资咨询有限公司 证券数据的存储方法
KR20230021409A (ko) 2021-08-05 2023-02-14 에스케이하이닉스 주식회사 트레이닝동작을 수행하기 위한 반도체시스템
US11775387B2 (en) * 2022-01-21 2023-10-03 Micron Technology, Inc. Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002351689A (ja) 2001-05-30 2002-12-06 Nec Corp データ転送システム
US20040225944A1 (en) * 2003-05-09 2004-11-11 Brueggen Christopher M. Systems and methods for processing an error correction code word for storage in memory components
US7149945B2 (en) * 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
US7243205B2 (en) * 2003-11-13 2007-07-10 Intel Corporation Buffered memory module with implicit to explicit memory command expansion
US7177211B2 (en) * 2003-11-13 2007-02-13 Intel Corporation Memory channel test fixture and method
US7133960B1 (en) * 2003-12-31 2006-11-07 Intel Corporation Logical to physical address mapping of chip selects
US8250295B2 (en) * 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7398449B1 (en) * 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7437651B2 (en) * 2004-06-29 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US7308638B2 (en) * 2004-06-29 2007-12-11 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US7577896B2 (en) 2004-10-26 2009-08-18 Brocade Communications Systems, Inc. Apparatus and method for performing cyclic redundancy check (CRC) on partial protocol data units (PDUS)
US7454586B2 (en) * 2005-03-30 2008-11-18 Intel Corporation Memory device commands
US7872892B2 (en) * 2005-07-05 2011-01-18 Intel Corporation Identifying and accessing individual memory devices in a memory channel
US20070089032A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Memory system anti-aliasing scheme
DE102005053625B4 (de) * 2005-11-10 2007-10-25 Infineon Technologies Ag Speichermodul mit einer Mehrzahl von Speicherbausteinen
US7404055B2 (en) * 2006-03-28 2008-07-22 Intel Corporation Memory transfer with early access to critical portion
US7913147B2 (en) * 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7810013B2 (en) * 2006-06-30 2010-10-05 Intel Corporation Memory device that reflects back error detection signals
US7774684B2 (en) * 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US7870459B2 (en) * 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
KR100850207B1 (ko) 2006-12-29 2008-08-04 삼성전자주식회사 시스터메틱 코드 발생을 위한 듀얼 클럭킹 방법을 채용한메모리 장치
US8132074B2 (en) * 2007-11-19 2012-03-06 Intel Corporation Reliability, availability, and serviceability solutions for memory technology
TWI358735B (en) * 2008-01-03 2012-02-21 Nanya Technology Corp Memory access control method
US8359521B2 (en) * 2008-01-22 2013-01-22 International Business Machines Corporation Providing a memory device having a shared error feedback pin
US8140936B2 (en) * 2008-01-24 2012-03-20 International Business Machines Corporation System for a combined error correction code and cyclic redundancy check code for a memory channel
US8185801B2 (en) * 2008-01-31 2012-05-22 International Business Machines Corporation System to improve error code decoding using historical information and associated methods
US8185800B2 (en) * 2008-01-31 2012-05-22 International Business Machines Corporation System for error control coding for memories of different types and associated methods
US8023358B2 (en) 2008-04-02 2011-09-20 International Business Machines Corporation System and method for providing a non-power-of-two burst length in a memory system
US8196009B2 (en) 2008-06-18 2012-06-05 Intel Corporation Systems, methods, and apparatuses to transfer data and data mask bits in a common frame with a shared error bit code
US8245105B2 (en) * 2008-07-01 2012-08-14 International Business Machines Corporation Cascade interconnect memory system with enhanced reliability
US20100005214A1 (en) 2008-07-01 2010-01-07 International Business Machines Corporation Enhancing bus efficiency in a memory system
US8321758B2 (en) * 2008-08-05 2012-11-27 Advanced Micro Devices, Inc. Data error correction device and methods thereof
US8463987B2 (en) * 2008-09-23 2013-06-11 Intel Corporation Scalable schedulers for memory controllers
US7957216B2 (en) 2008-09-30 2011-06-07 Intel Corporation Common memory device for variable device width and scalable pre-fetch and page size
US8086783B2 (en) * 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
US8098539B2 (en) * 2009-08-26 2012-01-17 Qualcomm Incorporated Hybrid single and dual channel DDR interface scheme by interleaving address/control signals during dual channel operation
US8862973B2 (en) * 2009-12-09 2014-10-14 Intel Corporation Method and system for error management in a memory device
US8495435B2 (en) * 2010-09-22 2013-07-23 Intel Corporation Dynamic physical memory replacement through address swapping
US8527836B2 (en) * 2011-07-01 2013-09-03 Intel Corporation Rank-specific cyclic redundancy check

Also Published As

Publication number Publication date
US8527836B2 (en) 2013-09-03
KR101570622B1 (ko) 2015-11-19
KR20140024060A (ko) 2014-02-27
CN103765522B (zh) 2016-11-09
WO2013006387A3 (en) 2013-02-28
US8745464B2 (en) 2014-06-03
CN103765522A (zh) 2014-04-30
US20130007560A1 (en) 2013-01-03
EP2727115A2 (en) 2014-05-07
EP2727115B1 (en) 2020-04-15
EP2727115A4 (en) 2015-02-18
US20130332795A1 (en) 2013-12-12
JP2014523034A (ja) 2014-09-08
WO2013006387A2 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
JP5754037B2 (ja) ランク別巡回冗長検査
US11675659B2 (en) DDR memory error recovery
US10042700B2 (en) Integral post package repair
CN105589762B (zh) 存储器装置、存储器模块和用于纠错的方法
US8307270B2 (en) Advanced memory device having improved performance, reduced power and increased reliability
US9009531B2 (en) Memory subsystem data bus stress testing
US9454451B2 (en) Apparatus and method for performing data scrubbing on a memory device
US10628248B2 (en) Autonomous dram scrub and error counting
CN107544923B (zh) 用于控制对存储器设备的访问的装置以及相关方法
NL2029034B1 (en) Adaptive internal memory error scrubbing and error handling
US9917601B2 (en) Adaptive error correction in a memory system
US9519442B2 (en) Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic
WO2017065802A1 (en) Scrubbing data in a memory device
EP3553662A1 (en) Intergral post package repair
JP2019083082A (ja) フラッシュメモリモジュール及びフラッシュメモリ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150428

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150430

R150 Certificate of patent or registration of utility model

Ref document number: 5754037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees