JP2018190416A - コーディングメカニズム及びその方法 - Google Patents
コーディングメカニズム及びその方法 Download PDFInfo
- Publication number
- JP2018190416A JP2018190416A JP2018087282A JP2018087282A JP2018190416A JP 2018190416 A JP2018190416 A JP 2018190416A JP 2018087282 A JP2018087282 A JP 2018087282A JP 2018087282 A JP2018087282 A JP 2018087282A JP 2018190416 A JP2018190416 A JP 2018190416A
- Authority
- JP
- Japan
- Prior art keywords
- bits
- coding
- code
- data
- encoder
- 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.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 147
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012937 correction Methods 0.000 claims description 67
- 238000001514 detection method Methods 0.000 claims description 52
- 238000010586 diagram Methods 0.000 description 20
- 230000009977 dual effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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 arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4239—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
Description
NVDIMM以外の他の形態のメモリーによっても使用され得るこのハンドシェークは、可変の読み取り/書き込みタイミングを有することができ、そして、DIMMからフィードバック情報が必要である。
メタデータを伝達する専用のチャンネルは、ハードウェアの変更を要求するであろうが、メタデータを伝達する専用のパッケージを利用することは、パフォーマンスのオーバーヘッドを増加させるはずである。
インテル(登録商標)社に譲渡された米国特許出願公開明細書(US2014/0040550、Nale et al.)は、メタデータのためECCビットを使用する一つのアクセス方法を説明する。
この解決方法では、メタデータ情報の伝送を要求する“近距離(near)/遠距離(far)”の非同期式メモリー階層があり、かつプロトコルはメタデータの交換を提供する。
しかしながら、このプロトコルでは供給企業者らが供給業者特有の機能に対するメタデータを実装することはできない。
よって、メタデータとして使用のためECCビットを割り当てることは弱いECCシステムに繋がる。
ECCとメタデータの両方のためにECCビットの使用を管理する方法が必要である。
例えば、第1モジュールは第2モジュールと命名することもでき、そして同様に本発明の範囲を逸脱しない範囲で、第2モジュールは第1モジュールと命名することもできる。
なお、本明細書に使用する“及び/又は”の用語は、一つ以上の関連する羅列された事項の全ての可能な組み合わせを表わすか含むことで理解されるであろう。“含む”の用語が、本明細書で使用する場合、記述された特徴、数字、ステップ、動作、構成、及び/又は要素の存在を明記することであり、これらの一つ以上の他の特徴、数字、ステップ、動作、構成、要素、及び/又はグループの存在又は付加を排除しないことをさらに理解されるべきである。
図面の構成及び特徴は必ずしも一定な比率で描かれるものではない。
同期式インターフェースはいくつの長所を持つ。
DIMM及びメモリーコントローラーの両方がいつデータが使用可能であるかを正確に認識します。
非同期式プロトコルを用いて、メモリートランザクションを完了するのに必要な時間は、遂行される動作やNVDIMMを製造するのに使用される材料など、任意の個数の要因に基づいて変化する可能性がある。
なお、非同期式プロトコルは、NVDIMMでメモリーコントローラーにフィードバック(feedback)を要求するハンドシェーキング(handshaking)を要求する。
このフィードバックは、NVDIMMでメモリーコントローラーへ伝送されるデータに付着されたメタデータの形態を有する。
メモリーからデータが読み込まれる(read)されると、このメタデータもまた読み込まれ、メモリーコントローラーに戻らなければならない。
相異なる供給業者らは相異なるメタデータのビット割当を要求でき、そして多様なメタデータの要求を支援する多様な従来の方法は、各々固有の短所を有する。
本質的にメタデータのビットを支援するのは、ECCのためのビットの効用性と、そしてこれにECC強度の均衡を要求する。
この組み合わせは、各512ビットメモリトランザクションに対するECCのため、使用可能な総計64ビットを変換する。
バースト当り8個ビットの中で3個がメタデータのため使用されると、64個ECCビットの中で24個はメタデータのため使用され、残りの40個ビットはECCのため使用可能である。
しかし、バースト当り8個ビットの中で2個のみがメタデータのため使用されると、64個のビットの中で16個のみがメタデータのため使用され、残りの48個のビットはECCのため使用可能である。
前者の組み合わせは、メタデータのため多くのビットを提供するがECCが弱くなる。
後者の組み合わせは、ECCが強くなるがメタデータのため少ないビットを提供する。
もっと良いソリューション(solution)は、残りのビットから関連されたメタデータ量の柔軟性を勘案して、一つの装置内で複数の相異なるECCアルゴリズム(一部は強く、一部は弱い)を支援することである。
DDR5メモリーから狭いチャンネルへの変化で、エラー訂正のためのオーバーヘッドと共にプリフェッチされる(pre−fetched)ビット数が増加する。
例えば、DDR4メモリーは16個データチップ当り2個のECCチップを要求する。
一方、DDR5メモリーは8個データチップ当り2個のECCチップを要求する。
従って、DDR5で既存のECC能力(capability)を維持するには増加されたECCオーバーヘッドを要求する。
既存のオーバーヘッドを維持するのはメモリーのECC能力を弱化させる。
本発明の実施形態において、エンコーダ/デコーダは“常にオン(always on)”の部分と、もっと大きい範囲を提供する切換可能な部分に分けられる。
本発明の実施形態がどのように動作できるかの例示として、エンコーダ/デコーダの“常にオン(always on)”の部分はエラーを検出できる(しかし、必ずしもエラー訂正ではない)CRC(Cyclic Redundancy Check、巡回冗長検査)を具現できる。
切換可能なエンコーダ/デコーダは、エラー訂正もできるパリティー情報を具現できる。
本明細書の設計は、NVDIMM及び未来のDDR(x)インターフェースベースのDRAMの全てに適用することができる。
図1を参照すると、マシン(machine)105を示す。
マシン105は、デスクトップ又はラップトップコンピュータ、サーバ(独立実行型サーバ又はラックサーバの中の一つ)、又は本発明の実施形態が役に立つことのできる任意の他の装置を含むが、これに限定されない任意の所望するマシンであり得る。
マシン105は、専門化された携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置をなお含むことができる。
マシン105は、任意の所望するアプリケーションを実行できる。
データベースアプリケーションが良い例示であるが、本発明の実施形態は任意の所望するアプリケーションまで拡張することができる。
プロセッサ110は、任意の多様なプロセッサであり得る。
例えば、インテル(登録商標)Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、又はAtom(登録商標)プロセッサ、AMD(登録商標)Opteron(登録商標)プロセッサ、ARM(登録商標)プロセッサなどであり得る。
メモリー115は、フラッシュメモリー、SRAM(Static Random Access Memory)、PRAM(Persistent Random Access Memory)、FRAM(登録商標)(Ferroelectric Random Access Memory)、又はMRAM(Magnetoresistive Random Access Memory)のようなNVRAM(Non−Volatile Random Access Memory)などのような任意の多様なメモリーであり得る。
メモリー115は、なお相異なるメモリー種類の任意の所望する組み合わせであり得る。
メモリー115は、メモリーコントローラー125、マシン105の一部により制御することができる。
ストレージ装置120は、メモリーの中に有り得る装置ドライバー130によって制御することができる。
図2を参照すると、一般的に、マシン105はマシンの構成要素の動作を調整するのに使用されるメモリーコントローラー125及びクロック205を含み得る一つ以上のプロセッサ110を含む。
プロセッサ110は、なお例示としてRAM(Random Access Memory)、ROM(Read−Only Memory)、又は他の状態保存媒体を含み得るメモリーと接続することができる。
なお、プロセッサ110はストレージ装置120と接続でき、そして例えば、イーサネット(登録商標)コネクターであり得るネットワークコネクター210と接続され得る。
プロセッサ110は、なお他の構成要素の中でユーザーインターフェース220及び入出力エンジン225を利用して管理できる入出力インターフェースポートに付着するバス215と接続され得る。
図3を参照すると、メモリーモジュール115を示す。
メモリモジュール115は、チップ(305−1〜305−6)を含む。
図3は、6個のチップ(305−1〜305−6)を含むものとしてメモリーモジュールを示すが、しかし本発明の実施形態は任意の個数のチップ305の使用を支援できる。
DIMMコントローラー310は、チップ(305−1〜305−6)間のデータ移動、メモリーモジュール115の中でキャッシュ(図示せず)を支援するキャッシュメカニズム、及び他の機能を制御する。
DIMMコントローラー310の一部であり得るコーディングメカニズム315は、メモリートランザクションの一部として、ECC(Error Correction Code)のような多様なコーディングを遂行及び/又は使用できる。
図7〜図9を参照して後述で説明するように、コーディングメカニズム315は、メモリーモジュール115の中で要求される空間及びメモリモジュール115によって生成される熱を減らすためのハードウェア具現(部分的に或いは完全に)を共有できる複数のコーディングを支援できる。
なお、多様なコーディングは関わり合うことができる。
即ち、一つのコーディングは完全に別個ではない他のコーディングを補完できる。
例えば、コーディングメカニズム315は、コーディング回路又はコーディング装置であり得る。
図4を参照すると、メモリコントローラー125はコーディングメカニズム315を含む。
メモリーコントローラー125は、また図1のマシン105の間でのデータを受信し、送信する受信機/送信機405、図1のマシン105からメモリートランザクションを受信する特定のメモリーモジュールを選択するメモリーモジュール選択機410などのような他の従来の構成要素を含み得る。
例えば、コーディングメカニズム315がエラー検出及び訂正コードを生成するのに使用されると、一つのコーディングメカニズム315はエラー検出及び訂正コードを生成するものであり、そして他のコーディングメカニズム315はメモリートランザクションの一部として伝送された任意のデータにエラーがあるか否かを判別するため、そのコードを使用するものである。
図5の(a)は、広いメモリーチャンネルを示す。
図5の(a)で(そして、図5の(b)で)、メモリートランザクションの各バーストは72個のビット(データの64個のビット及び非データ(non−data)の8個のビット)を伝送する。
総計8個のバーストは、メモリートランザクション当り総計512個のビットのデータを、そしてメモリートランザクション当り64個のビットの非データを伝達するはずである。
エラー検出/訂正のため使用される5個のビットは、例示では、エラー検出/訂正のため常に使用される“基本ビット数”505と考慮され得る。
3個の残りの非データのビットは、特定の具現により、エラー検出/訂正又はメタデータのため使用され得る。
代わりに、これらのビットの中の2個はメタデータに割り当てられ、しかし他の(1個)残りのビットはエラー検出/訂正に割り当てられる。
エラー検出/訂正に割り当てられたこの追加ビットはこの例示では、補助ビット数510として呼称する。
8個のECCビットの中の6個が図5の(b)でエラー訂正のため、実際に使用されるので、図5の(b)は図5の(a)と比較すると、もっと優秀なエラー検出/訂正を提供する。
データ、非データ、ECC、及びメタデータのため使用するビットの個数は、例示的である。
任意の個数のビットは任意のカテゴリーのため使用することができる。
図6の(a)で(そして、図6の(b)で)、メモリートランザクション内の各バーストは40個のビット(データの32個のビット及び非データの8個のビット)を伝送する。
総計16個のバーストはメモリートランザクション当り総計512個のビットのデータ、そしてメモリートランザクション当り128個ビットのメタデータ/ECCを伝達するはずである。
エラー検出/訂正のため使用される4個のビットは例示ではエラー検出/訂正のため、常に使用される“基本ビット数”505と考慮することができる。
残りの非データのビットは特定の具現により、エラー検出/訂正又はメタデータのため使用され得る。
代わりに、これらのビットの中の2個はメタデータに割り当てられ、そして他の2個のビットはエラー検出/訂正に割り当てられる。
エラー検出/訂正に割り当てられた2個の追加ビットは、例示では“補助ビット数”510と考慮することができる。
8個の非データのビットの中の6個が、図6の(b)でエラー訂正のため実際に使用されるので、図6の(b)は図6の(a)と比較すると、もっと優秀なエラー検出/訂正を提供する。
図7を参照すると、コーディングメカニズム315は、エンコーダ(705、710)、スイッチ715、及びストレージ720を含む。
エンコーダ(705,710)は入力データを受け、データからコード(725、730)を生成する。
第1エンコーダ705は、第2エンコーダ710が使用されるか否かに関わらず、データを符号で処理するのに常に使用される主エンコーダとして見なすことができる。
第2エンコーダ710は、二次的なエンコーダとして見なすことができる。
第2エンコーダ710は、スイッチ715が閉じると使用される。
スイッチ715は、ストレージ720に保存されたモードレジスタ735の値により順次に開くか閉じる。
その次に、(二次的な)第2エンコーダ710は、図5の(a)〜図6の(b)の二次的な補助ビット数510(例えば、図5の(b)の1個のビット、図6の(b)の2個のビット)が正(+)であるか(「0」より大きいか)否かにより追加エラー訂正コードの追加ビットを生成するのに使用することができる。
但し、1個のスイッチのみを図7では使用したので、モードレジスタ735は、1ビットのデータのみを含むことができる。
例えば、ビットが「0」に設定されるとスイッチ715は開き、そしてビットが「1」に設定されるとスイッチ715は閉じる。
モードレジスタ735は,任意の所望するアクセス方法を利用し、スイッチ715(又は、図9〜図11を参照して説明する任意の追加スイッチ)を開くか又は閉じるかを表わすことができる。
図8では、本発明の第2の実施形態により、こういうコードをデコーディングできる図3及び図4のコーディングメカニズム315を示す。
この情報は、図5の(a)〜図6の(b)の基本ビット数505に基づいてデータの最初のデコーディングを遂行して第1結果810を生成する第1デコーダ805に入力される。
しかし、図5の(b)及び図6の(b)の補助ビット数510が「0」ではないと、(可能なコーディングメカニズム315で入力されたデータ及びコードと共に)デコーダの出力は、なお図5の(b)及び図6の(b)の補助ビット数510に基づいて追加デコーディングを遂行する第2デコーダ815に移動する。
第2デコーダ815の結果は第2結果820として示す。
第2デコーダ815が使用されるか否かは、モードレジスタ735に基づいて開くか閉じるスイッチ825により制御される。
結果(810、820)が全部使用されると、データのより良い判別を期待できる。
例えば、第1結果810だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
図9は、本発明の第3の実施形態による図3及び図4のコーディングメカニズム315を示すブロック図である。
図9を参照すると、コーディングメカニズム315は、エンコーダ(705、710、905)、スイッチ(715、910)、及びストレージ720を含む。
第1、第2エンコーダ705、710のように、第3エンコーダ905は入力データを受けることができ、データから第3コード915を生成する。
第2エンコーダ710、第3エンコーダ905は、スイッチに基づいて、任意の所望する組み合わせ内で活性化することができる。
例えば、第1コード725を生成するのに第1エンコーダ705だけが使用される場合、スイッチ(715、910)は全部開く。
又は、第1〜第3コード(725、730、915)を各々生成するのに第1〜第3エンコーダ(705、710、905)が全部使用される場合、スイッチ(715、910)は全部閉じる。
又は、第2コード730又は第3コード915を生成するのに第2エンコーダ710、第3エンコーダ905の中の一つだけが使用される場合、スイッチ(715、910)の中の一つだけを閉じる。
スイッチ(715、910)は、モードレジスタ735の値を用いて管理することができる。
その次に、二次的なエンコーダ(710、905)は、図5の(b)及び図6の(b)の二次的な補助ビット数510が少なくても1個又は2個であるか否かにより、エラー訂正コードの1個又は2個(又は、それ以上の)の追加ビットを生成するのに使用され得る。
例えば、モードレジスタ735の最下位のビットは、スイッチ715が開くか閉じるかを指定でき、モードレジスタ735の次の下位ビットは、スイッチ910が開くか閉じるかを指定できる。
モードレジスタ735は、任意の所望するアクセス方法を用いてどのスイッチが開くか閉じるかを表わすことができる。
同様の方式で、図3及び図4のコーディングメカニズム315は、なお2個以上のデコーダを用いてデコーディングを遂行できる。
図10は、本発明の第4の実施形態によるコーディングメカニズムの例示を示すブロック図である。
図8を参照して前述したように、この情報は、図5の(a)〜図6の(b)の基本ビット数505に基づいてデータの最初のデコーディングを遂行し、第1結果810を生成する第1デコーダ805に入力される。
しかし、図5の(b)及び図6の(b)の補助ビット数510が「0」ではないと、(潜在的にデータ及びコードと共に)第1デコーダ805の出力は、なおも図5の(b)及び図6の(b)の補助ビット数510に基づいて追加デコーディングを遂行するデコーダに移動する。
第2デコーダ815の結果は第2結果820として示す。
第3デコーダ1005の結果は第3結果1010として示す。
第3デコーダ1005が使用されるか否かは、モードレジスタ735に基づいて開くか閉じるスイッチ1015により制御される。
全ての結果(810、820、1010)を使用することはデータのより良い判別を提供することが期待され得る。
例えば、第1結果810、第2結果820だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
しかし、本発明の実施形態は、直列エンコーダ(又は並列及び直列エンコーダの組み合わせ)を用いてエンコーディングを遂行することができ、並列デコーダ(又は、並列及び直列デコーダの組み合わせ)を用いてデコーディングを遂行できる図3及び図4のコーディングメカニズム315を含む。
図11を参照すると、コーディングメカニズム315がエンコーダ(705、710、905)、スイッチ(715、910)、及びストレージ720を含むものを示す。
この全ての構成要素は、図9と同様に動作する。
しかし、第2エンコーダ710の代替である第3エンコーダ905の代わりに、第3エンコーダ905は第2エンコーダ710をオプションとして補完できる。
即ち、図11の第3エンコーダ905は図11の第2エンコーダ710が使用されないと、使用されない。
よって、第3エンコーダ905は、スイッチ(715,910)が全部閉じると使用される。
スイッチ(715、910)は、ストレージ720に保存されたモードレジスタ735の値により順次に開くか閉じることができる。
その次に、二次的なエンコーダ(第2エンコーダ)710は、図5の(b)及び図6の(b)の二次的な補助ビット数510が少なくても1個又は2個であるか否かにより、エラー訂正コードの1個又は2個(または、それ以上)の追加ビットを生成するのに使用される。
メタデータのビットが全然必要ではないと、即ち、図5の(b)及び図6の(b)の二次的な補助ビット数510がエンコーダにより生成されたビットの個数より大きければ、第3エンコーダ905は、なお追加の二次的なビットを用いて、追加に、そしてさらにエラー訂正が可能な(further and more−capable)エラー訂正コードを生成するのに使用される。
従って、例えば、図11の第3エンコーダ905は、図11の第2コード730を受信でき、そしてなおオリジナルのデータを受信して図11の第3コード915を生成する。
例えば、モードレジスタ735の最下位ビットは、スイッチ715が開くか閉じるかを指定でき、モードレジスタ735の次の下位ビットは、スイッチ910が開くか閉じるかを指定できる。
モードレジスタ735は、任意の所望するアクセスを利用してどのスイッチが開くか閉じるかを表わすことができる。
同様に、本明細書では、“エラー管理(error management)”の用語は(図7、9、11のコーディングメカニズム315と共に)エラー検出及び/又は訂正コードの生成、そして(図8及び図10のコーディングメカニズム315と共に)任意のエラーを検出及び訂正することから、このようなコードの使用の全てを含む包括的用語になるように意図している。
なお、“エラー管理”の用語は、エラー検出及び訂正の全ての変形を含むように意図している。
従って、例えば、図7、9、11の第1コード725がオリジナルのデータ内のエラー検出能力を提供し、そして図7、9、11の第2コード730がオリジナルのデータ内のエラー訂正能力を提供すれば、両者は“エラー管理”と見なす。
同様に、図7、9、11の第1コード725が弱いエラー検出又はエラー訂正結果を提供し、図7、9、11の第2コード730が強いエラー検出又はエラー訂正を提供すれば、両者は“エラー管理”と見なす。
しかし、本発明の他の実施形態は、エンコーダ又はデコーダの任意の所望する組み合わせを支援できる。
従って、例えば、図3及び図4のコーディングメカニズム315は、いくつの直列のコーダー及び代替の他のコーダーを包含できる。
又は、図3及び図4のコーディングメカニズム315は、直列の下位レベルで、複数の代替のコーダーと共に、直列の最上位で一つのコーダーを有することができる。
そして、このような直列の代替コーダーの組み合わせの全ては本発明の実施形態として含まれる。
また、モードレジスタ735の値は、モードレジスタ735の値からスイッチ(715、910)への任意の所望するマッピング(mapping)を用いて、どのスイッチが開くか、そしてどのスイッチが閉じるか制御できる。
なお、本発明の実施形態は、全ての任意の構成において、エンコーディング及びデコーディングメカニズムの全てを支援できる。
例えば、図3及び図4のコーディングメカニズム315は、図7、図9、図11で示したようなエンコーダ、そして図8及び図10で示したようなデコーダを全部包含できる。
同様に、図8は、2個のデコーダ(805、825)を示し、一方、図10は、3個のデコーダ(805、825、1005)を示す。
本発明の実施形態は任意の個数のコーダー、及び任意の所望する構成を支援できる。
本発明の実施形態のために必要なコーダーの最小個数は、エンコーダ(705、710)又はデコーダ(805,815)のような2個のコーダーを含むものであり、ここでエンコーダ705又はデコーダ805のような1個のコーダーはいつも活性化され、そしてエンコーダ710又はデコーダ815のような1個のコーダーは第1コーダーを補完するのに使用することができる。
例示として、図7、図9、及び図11のエンコーダ(705、710、905)は、全ての可能なECCビットを生成する1個のエンコーダとして具現され得る。
次に、図7、図9、及び図11のスイッチ(715、910)は、図7、図9、及び図11のコーディングメカニズム315から出力されるあるECCビットを選択できる。
「エラー検出ビット」だけ、いくつの「エラー訂正ビット」、及び/又は全ての「エラー訂正ビット」(又は、「弱いエラー検出/訂正」対「強いエラー検出/訂正」、「弱いエラー検出/訂正ビット」だけ、いくつの「強いエラー検出/訂正ビット」、又は全ての「強いエラー検出/訂正ビット」)を実施形態として含むことができる。
例えば、図5の(b)及び図6の(b)でメタデータビットが必要ではないと仮定する。
図5の(b)の補助ビット数510は3個のはずであり、そして図6の(b)の補助ビット数510は4個のはずである。
しかし、4コードビットを生成するのを支援できる図7、図9、及び図11のコーディングメカニズム315の内において第2コーダーがないこともある。
本発明のこういう実施形態において、図7、図9、及び図11の第2エンコーダ710は、2ビットのエラー訂正能力を付加する図7、図9、及び図11の第2コード730を生成するのに使用することができ、そして図9及び図11の第3エンコーダ905は追加の2ビットのエラー訂正能力を付加する図9及び図11の第3コード915を生成するのに使用し得る。
しかし、複数の二次的なコーダーがあると(又は、別法として又は結合して、第2コーダー、第3コーダーなど)、このような複数のコーダーをいつ活性化するかを管理する代替方法がある。
本発明の実施形態において、複数の二次的なコーダーにより支援される相異なるビット数を管理する図5の(b)及び図6の(b)の複数の補助ビット数510が有り得る。
例えば、図11のコーディングメカニズムを考慮する。
第2エンコーダ710は、第2コード730として2個の追加ビットを提供するのに使用することができ、そして第3エンコーダ905は第3コード915としてコードの第3追加ビットを提供できる。
その次に、システムがメタデータのため3ビットを要求すると、このような値の全ては補助エラー訂正コードのため使用可能なビットがないということを示す「0」で設定し得る。
しかし、システムがメタデータにため1ビットだけを要求すれば補助ビット数の中で一つは「2」で設定し得る。
そして、システムがメタデータのためビットを要求しないと、補助ビット数の中で一つは「2」で設定することができ、他の補助ビット数は「1」で設定することができる。
この情報から、図11のモードレジスタ735は、使用可能な補助ビット数のため適切に図11のエンコーダ(710、905)を活性化するように設定され得る。
その次に、コーダーは全ての使用可能なビットを使用するのに適切に活性化され得る。
こういう本発明の実施形態において、図5の(b)及び図6の(b)の補助ビット数510は、いくら多くのビットがメタデータのため必要であるかによって「0」、「2」、又は「3」(又は、図5の(b)及び図6の(b)の基本ビット数505、及び図5の(b)及び図6の(b)の補助ビット数510の値より異なる値)で設定され得る。
例えば、図5の(b)及び図6の(b)の補助ビット数510が「0」であると、その次に、図11のモードレジスタ735は、図11のエンコーダ(710,905)の中でいずれも活性化されないように設定することができる。
図5の(b)及び図6の(b)の補助ビット数510が「2」であると、(図11の第2エンコーダ710は第2コード730内全ての使用可能な補助ビットを使用するのに充分なビットを生成するはずであるので)図11のモードレジスタ735は、図11の第2エンコーダ710が活性化されるように、しかし図11の第3エンコーダ905は活性化されないように設定し得る。
図3及び図4のコーディングメカニズム315は、通常ハードウェアの形態で具現されるので、図7、図9、及び図11のコード(730、915)の一部として生成され得るビット数は予め知られ、最大可能なエラー検出/訂正を支援するため、どれだけ多くの二次的なコーダーが必要であるかを容易に判別することができる。
従って、例えば、図11のエンコーダ(710、905)の各々が(図11のコード(730、915)内で)2ビットのコードを生成するが、しかし図5の(b)及び図6の(b)の補助ビット数510は「3」であり、図11の第3エンコーダ905は活性化されてはならない(用いられるビット数よりもっと多くのビットを生成するはずである)。
例えば、図5の(b)及び図6の(b)の補助ビット数510が「3」であり、(図9の第2エンコーダ710により生成された)図9の第2コード730が追加ビット数「2」を含んだとし、そして(図9の第3エンコーダ905により生成された)図9の第3コード915が追加ビット数「3」を含んだことで仮定した。
システムのエラー検出/訂正を最大化するため、図9のモードレジスタ735は、図9の第3エンコーダ905が活性化されるように、しかし図9の第2エンコーダ710は活性化されないように設定しなけばならない。
このような方式で、(図9のエンコーダ710により生成されることとして)2ビットのみではない、追加エラー訂正ビット数「3」を生成し得る。
本発明の実施形態は、図1のメモリーコントローラー125及び図1のメモリーモジュール115がECC対メタデータに対する可変的なビット数を支援できるようにする。
結果的に、図1のメモリーコントローラー125及び図1のメモリーモジュール115の全ては、種々の「ECC対メタデータ」を支援する該当構成要素と共にメモリートランザクションを支援できる。
即ち、図3のメモリーモジュール115を支援する本発明の実施形態は、メモリーコントローラー125の特定のメタデータの要求に関わらずに、図1のメモリーコントローラー125と通信でき、図1のメモリーコントローラー125のメタデータ要件が与えられると、使用可能な最適のECCを提供する。
換言すれば、例えば、NVDIMMのメモリーを使用する本発明の実施形態において、NVDIMMのメモリーモジュールは、ホストによって要求されるメタデータのビット数に基づいて提供されたECCの支援レベルを変更できる。
他の例として、DDR5のメモリーを使用する本発明の実施形態において、図1のメモリーコントローラー125は、DDR5のメモリーがECC能力の現在レベル、又はECCのオーバーヘッドの現在レベルを維持するか否かに基づいてECCの支援レベルを変更できる。
しかし、本発明のいくつの実施形態では、ランタイムの間「ECC」対「メターデータ」のため使用されるビット数を変更するのを支援できる。
例えば、図6の(b)の補助ビット数510が「0」であると、図7〜図11のモードレジスタ735は、図7〜図11のスイッチ(715、910)が開くように設定する。
図6の(b)の補助ビット数510が「0」ではないと、図7〜図11のモードレジスタ735は、メモリトランザクションのエラー訂正能力を補完するように、図7〜図11の適切なコーダー(710、905)を活性化するように図7〜図11の適切なスイッチ(715、910)が閉じるように設定し得る。
図12aを参照すると、まず、ステップS1205で、図7、図9、及び図11のコーディングメカニズム315はメモリートランザクションのためのデータを受信する。
次に、ステップS1210で、図7、図9、及び図11のコーディングメカニズム315は、エラー検出及び訂正で使用可能な図5の(a)〜図6の(b)の基本ビット数及び図5の(b)及び図6の(b)の補助ビット数510を判別する。
次に、ステップS1215で、図7、図9、及び図11の第1エンコーダ705は、図5の(a)〜図6の(b)の基本ビット数505を用いて第1エンコーディングを遂行する。
エンコーディングされ得る補助ビットがない場合、ステップS1225でメモリートランザクションは(図3のメモリーモジュール115又は図4のメモリーコントローラー125の中のいずれかの一つにより)図7、図9、及び図11のデータ及び第1コード725を用いて遂行される。
エンコーディングされ得る補助ビットがある場合、ステップS1230で二次的なエンコーダが補助ビット数を使用するのに選択される。
ステップ1230は、点線1235で示すように選択的である。
しかし、図9のコーディングメカニズム315が使用されると、図9のコーディングメカニズム315の任意の一つの“レベル”で選択可能な任意の個数のエンコーダが存在する。
よって、エンコーダは選択される必要がある。
任意の基準により、エンコーダを選択することができる。
例えば、エンコーディングのため使用可能なビットを最大限使用するエンコーダ、又は特定のタイプのエンコーディングを提供するエンコーダなどを選択することができる。
ステップS1245で、図7、図9、及び図11のコーディングメカニズム315は、エンコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
エンコーディングされ得る任意の残りの補助ビットがあれば、ステップS1250で(ステップS1230、S1240を必須的に反復して)追加エンコーディングを遂行する。
エンコーディングされ得る任意の残りの補助ビットがなければ、ステップS1225に進み、メモリートランザクションにてデータ及びコードが使用される。
図13aを参照すると、まず、ステップS1305で、図8及び図10のコーディングメカニズム315はデータトランザクションのためのデータを受信する。
次に、ステップS1310で、図8及び図10のコーディングメカニズム315は、メモリートランザクションでデータのためのコードを受信する。
ステップS1305、ステップS1310は、ステップS1305、ステップS1310により提案されたような分離された動作ではなく、一つの動作として遂行することもできる。
次に、ステップS1315で、図8及び図10のコーディングメカニズム315は、エラー検出及び訂正で使用可能な図5の(a)〜図6の(b)の基本ビット数505及び図5の(b)及び図6の(b)の補助ビット数510を判別する。
次に、ステップS1320で、図8及び図10の第1デコーダ805は、図5の(a)〜図6の(b)の基本ビット数505を用いて第1デコーディングを遂行する。
デコーディングされ得る補助ビットがない場合、ステップS1330でメモリートランザクションは(図3のメモリーモジュール115又は図4のメモリーコントローラー125の中のいずれかの一つにより)図8及び図10のデータ及び第1結果810を用いて遂行される。
デコーディングされ得る補助ビットがある場合、ステップS1335で補助ビット数を使用するのに二次的なデコーダ(第2デコーダ)が選択される。
ステップ1335は、点線1340で示すように選択的である。
よって、デコーダは選択される必要がある。
任意の基準によりデコーダが選択され得る。
例えば、デコーディングのため使用可能なビットを最大限使用するデコーダ、又は特定のタイプのデコーディングを提供するデコーダなどを選択することができる。
次に、ステップS1350で、図8及び図10のコーディングメカニズム315は、デコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
デコーディングされ得る任意の残りの補助ビットがある場合、ステップS1355で(ステップS1335、S1345を必須的に反復して)追加デコーディングを遂行する。
デコーディングされ得る任意の残りの補助ビットがない場合、ステップS1330に進み、メモリートランザクションのデータ及び結果が使用される。
図14を参照すると、ステップS1405で、図7、図9、及び図11の第1コード725はエラー検出を遂行するのに使用される。
次に、ステップS1410で、図7、図9、及び図11のコード(725、730、915)はエラー検出及び訂正の全てを遂行するのに使用される。
あるいは、ステップS1415で、図7、図9、及び図11の第1コード725は弱いコーディング(エラー検出又はエラー訂正の中で一つ)を遂行するのに使用される。
そして、ステップS1420で、図7、図9、及び図11のコード(725、730、915)は強いコーディング(反復して、エラー検出及びエラー訂正の中の一つ)を遂行するのに使用される。
しかし、当業者はステップの順序を変更することで、ステップを省略することで、又は図に示さないリンク(link)を含むことで、本発明の他の実施形態も可能であることを認識するはずである。
フローチャートのこういう変形の全ては、明示的に記載されているか否かにかかわらず、発明概念の実施形態とみなされる。
1つのマシン又は複数のマシンは、少なくとも一部は他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなくキーボード、マウスなどのような従来の入力装置からの入力により制御することができる。
本明細書で使用するように、“マシン”の用語は単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン、又はいっしょに動作する装置と通信するように連結されたシステムを広く含むことで意図する。
例示的なマシンは、例えば、自動車、電車、タクシーなどのような個人用又は公共輸送のような輸送装置だけではなくPC(Personal Computer)、ワークステーション、サーバ、ポータブルコンピュータ(portable computer)、ハンドヘルド(handheld)装置、電話、タブレット(tablet)などのようなコンピューティング装置を包含する。
1つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信接続を介して一つ又は一つ以上の遠隔マシンに対する一つ以上の接続を使用できる。
マシンは、イントラネット(intranet)、インターネット、LAN(Local Area Network) WAN(Wide Area Network)などのような物理的及び/又は論理的ネットワークの手段で繋がり合うことができる。
当業者は、ネットワーク通信が多様な有線及び/又は無線の近距離又は遠距離キャリア(carrier)及び無線周波数(RF)、衛星、マイクロ波、IEEE802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルの利用を理解するであろう。
関連するデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリー、又は他のストレージ装置、そしてハードドライブ、フロッピー(登録商標)ディスク、光学保存、テープ、フラッシュメモリー、メモリースティック(登録商標)、デジタルビデオディスク、生体保存などを含む関連する保存媒体に保存することができる。
関連するデータは、物理的及び/又は論理的ネットワークを含む伝送環境を経てパケット、直列データ、並列データ、電波信号などの形態に伝達され、圧縮された又は暗号化されたフォーマットを使用することができる。
関連するデータは、分散環境において使用することができ、マシンアクセスのため地域的に及び/又は遠隔で保存され得る。
ステータス1.本発明の実施形態は、ハードウェアで具現されたコーディングメカニズムを含み、コーディングメカニズムは、データに対する基本ビット数を含む第1コードを生成する第1エンコーダと、データに対する補助ビット数を含む第2コードを生成する第2エンコーダと、モードレジスタに対するストレージと、第2エンコーダが使用されるかの可否を制御するようにモードレジスタに応答するスイッチと、を有し、第1エンコーダは第1コードを生成するのに常に使用され、そして第2エンコーダを生成するのに選択的に使用され、第2コードは第1コードと共に第1コード単独よりさらに強いエンコーディングを提供する。
ステータス3.本発明の実施形態は、ステータス2に従うコーディングメカニズムを含むが、メモリーモジュールはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス4.本発明の実施形態は、ステータス3に従うコーディングメカニズムを含むが、コーディングメカニズムはNVDIMM−Pプロトコルを用いて通信する。
ステータス5.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
ステータス7.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムは第2補助ビット数を利用してデータに対する第3コードを生成する第3エンコーダをさらに含み、スイッチは、モードレジスタに応答して第2エンコーダを使用するか、第2エンコーダ及び第3エンコーダの全てを使用するか、又は第2エンコーダと第3エンコーダを全部使用しないものから選択するように作動する。
ステータス8.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが第2エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス9.本発明の実施形態は、ステータス8に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが補助ビット数が「0」より大きいか否かに応答する第2エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス10.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、第1エンコーダ及び第2エンコーダは部分的なハードウェア具現を共有する。
ステータス13.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーモジュール内で具現される。
ステータス14.本発明の実施形態は、ステータス13に従うコーディングメカニズムを含むが、メモリーモジュールはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス15.本発明の実施形態は、ステータス14に従うコーディングメカニズムを含むが、コディングメカニズムはNVDIMM−Pプロトコルを用いて通信する。
ステータス16.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
ステータス18.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムは第2補助ビット数を用いてデータ及び少なくても第3コードに対する第3結果を生成する第3デコーダをさらに含み、スイッチは、モードレジスタに応答して第2デコーダを使用するか、第2デコーダ及び第3デコーダを全部使用するか、又は第2デコーダと第3デコーダを全部使用しないものから選択するように作動する。
ステータス19.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、モードレジスタはスイッチが第2デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス20.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、モードレジスタはスイッチが補助ビット数が「0」より大きいか否かに応答する第2デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス21.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、第1デコーダ及び第2デコーダは部分的なハードウェア具現を共有する。
ステータス24.本発明の実施形態は、ステータス23に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含む。
ステータス25.本発明の実施形態は、ステータス24に従うコーディングメカニズム方法を含み、第2コードは第1コードと共に第1コードの単独よりさらに強いエラー管理コーディングを提供する。
ステータス27.本発明の実施形態は、ステータス26に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップは、第1結果を生成するステップを含み、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップは、第2結果を生成するステップを含む。
ステータス28.本発明の実施形態は、ステータス26に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップは、基本ビット数に基づいてデータ及び第1コードに対応する第1デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップは、データ及び少なくても第2コードに対応する第2デコーディングを遂行するステップを含む。
ステータス29.本発明の実施形態は、ステータス28に従うコーディングメカニズム方法を含み、データ及び少なくても第2コードに対応する第2デコーディングを遂行するステップは、データ、第1コード、及び第2コードに対応して第2デコーディングを遂行するステップを含む。
ステータス30.本発明の実施形態は、ステータス28に従うコーディングメカニズム方法を含み、メモリートランザクションに対するデータを受信するステップは、第1コード及び少なくとも第2コードを受信するステップを含む。
ステータス32.本発明の実施形態は、ステータス31に従うコーディングメカニズム方法を含み、DIMMはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス33.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数が「0」より大きいと補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス35.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
ステータス36.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー訂正を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー訂正を支援するステップを含む。
ステータス38.本発明の実施形態は、ステータス37に従うコーディングメカニズム方法を含み、少なくとも、第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス39.本発明の実施形態は、ステータス38に従うコーディングメカニズム方法を含み、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス42.本発明の実施形態は、ステータス41に従う物品を含み、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含む。
ステータス43.本発明の実施形態は、ステータス42に従う物品を含み、第2コードは第1コードと共に第1コードの単独よりさらに強いエラー管理コーディングを提供する。
ステータス45.本発明の実施形態は、ステータス44に従う物品を含み、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップは、第1結果を生成するステップを含み、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップは、第2結果を生成するステップを包含する。
ステータス46.本発明の実施形態は、ステータス44に従う物品を含み、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップは、基本ビット数に基づいてデータ及び第1コードに対応する第1デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップは、データ及び少なくても第2コードに対応する第2デコーディングを遂行するステップを含む。
ステータス47.本発明の実施形態は、ステータス46に従う物品を含み、データ及び少なくとも第2コードに対応する第2デコーディングを遂行するステップは、データ、第1コード、及び第2コードに対応して第2デコーディングを遂行するステップを含む。
ステータス48.本発明の実施形態は、ステータス46に従う物品を含み、メモリートランザクションに対するデータを受信するステップは、第1コード及び少なくとも第2コードを受信するステップを含む。
ステータス50.本発明の実施形態は、ステータス49に含む物品を含み、DIMMは、NVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス52.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内のエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内のエラー訂正を支援するステップを含む。
ステータス53.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
ステータス55.本発明の実施形態は、ステータス40に従う物品を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、少なくても第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス56.本発明の実施形態は、ステータス55に従う物品を含み、少なくとも第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス57.本発明の実施形態は、ステータス56に従う物品を含み、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
110 プロセッサ
115 メモリーモジュール
120 ストレージ装置
125 メモリーコントローラー
130 装置ドライバー
205 クロック
210 ネットワークコネクター
215 バス
220 ユーザーインターフェース
225 入出力エンジン
305−1〜305−6 チップ
310 DIMMコントローラー
315 コーディングメカニズム
405 受信機/送信機
410 メモリーモジュール選択機
705 第1エンコーダ
710 第2エンコーダ
715、825、910、1015 スイッチ
720 ストレージ
725 第1コード
730 第2コード
735 モードレジスタ
805 第1デコーダ
810 第1結果
815 第2デコーダ
820 第2結果
905 第3エンコーダ
915 第3コード
1005 第3デコーダ
1010 第3結果
Claims (20)
- ハードウェアで実行されるコーディングメカニズムであって、
データに対する基本ビット数(base number of bits)を含む第1コードを生成する第1エンコーダと、
前記データに対する補助ビット数(supplementary number of bits)を含む第2コードを生成する第2エンコーダと、
モードレジスタ(mode register)に対するストレージと、
前記第2エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
前記第1エンコーダは前記第1コードを生成するのに常に使用され、前記第2エンコーダは前記第2コードを生成するのに選択的に使用され、
前記第2コードは前記第1コードと共に前記第1コード単独よりさらに強いエンコーディングを提供することを特徴とするコーディングメカニズム。 - 前記モードレジスタは、前記スイッチが前記第2エンコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項1に記載のコーディングメカニズム。
- 前記モードレジスタは、前記スイッチが前記補助ビット数が「0」より大きいか否かに応答する前記第2エンコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項2に記載のコーディングメカニズム。
- 前記第1エンコーダ及び前記第2エンコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項1に記載のコーディングメカニズム。
- ハードウェアで実行されるコーディングメカニズムであって、
データ及び基本ビット数を含む第1コードに対する第1結果を生成する第1デコーダと、
前記データ及び補助ビット数を含む少なくとも第2コードに対する第2結果を生成する第2デコーダと、
モードレジスタに対するストレージと、
前記第2デコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
前記第1デコーダは前記第1結果を生成するのに常に使用され、前記第2デコーダは前記第2結果を生成するのに選択的に使用され、
前記第2結果は前記第1結果と共に前記第1結果単独よりさらに強いデコーディングを提供することを特徴とするコーディングメカニズム。 - 前記第2デコーダは、前記データ、前記第1コード、及び前記第2コードに応答する第2結果を生成するように作動することを特徴とする請求項5に記載のコーディングメカニズム。
- 前記モードレジスタは、前記スイッチが前記第2デコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項5に記載のコーディングメカニズム。
- 前記モードレジスタは、前記スイッチが前記補助ビット数が「0」より大きいか否かに応答する前記第2デコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項7に記載のコーディングメカニズム。
- 前記第1デコーダ及び前記第2デコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項5に記載のコーディングメカニズム。
- メモリートランザクションに対するデータを受信するステップと、
前記メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビット数を判定(determining)するステップと、
前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップと、
前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップと、を有することを特徴とするコーディングメカニズム方法。 - 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第1エンコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第2エンコーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。 - 前記基本ビット数に基づいて前記データに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、
前記補助ビット数に基づいて前記データに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含むことを特徴とする請求項11に記載のコーディングメカニズム方法。 - 前記第2コードは、前記第1コードと共に前記第1コード単独よりさらに強いエラー管理を提供することを特徴とする請求項12に記載のコーディングメカニズム方法。
- 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第1デコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第2デコーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。 - 前記基本ビット数に基づいて前記データに対する第1デコーディングを遂行するステップは、前記基本ビット数に基づいて前記データ及び第1コードに対応する第1デコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第2デコーディングを遂行するステップは、前記データ及び少なくとも第2コードに対応する第2デコーディングを遂行するステップを含むことを特徴とする請求項14に記載のコーディングメカニズム方法。 - 前記データ及び少なくとも第2コードに対応する第2デコーディングを遂行するステップは、前記データ、前記第1コード、及び前記第2コードに対応して第2デコーディングを遂行するステップを含むことを特徴とする請求項15に記載のコーディングメカニズム方法。
- 前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数が「0」より大きい場合、前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
- 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記データ内のエラー検出を支援するステップを含み、
前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記データ内のエラー訂正を支援するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。 - 前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、少なくとも前記第2エラー管理コーディング及び第3エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
- 少なくとも前記第2エラー管理コーディング及び第3エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいて前記データに対する前記第3エラー管理コーディングを遂行するステップを含むことを特徴とする請求項19に記載のコーディングメカニズム方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762503317P | 2017-05-08 | 2017-05-08 | |
US62/503,317 | 2017-05-08 | ||
US15/675,679 US10552256B2 (en) | 2017-05-08 | 2017-08-11 | Morphable ECC encoder/decoder for NVDIMM over DDR channel |
US15/675,679 | 2017-08-11 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018190416A true JP2018190416A (ja) | 2018-11-29 |
JP2018190416A5 JP2018190416A5 (ja) | 2021-05-20 |
JP7231989B2 JP7231989B2 (ja) | 2023-03-02 |
Family
ID=64014811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018087282A Active JP7231989B2 (ja) | 2017-05-08 | 2018-04-27 | コーディングメカニズム及びその方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10552256B2 (ja) |
JP (1) | JP7231989B2 (ja) |
KR (1) | KR102421048B1 (ja) |
CN (1) | CN108874577B (ja) |
TW (1) | TWI740009B (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008192054A (ja) * | 2007-02-07 | 2008-08-21 | Megachips Lsi Solutions Inc | 半導体メモリシステム |
US20140105202A1 (en) * | 2004-02-13 | 2014-04-17 | Broadcom Corporation | Encoding system and method for a transmitter in wireless communications |
JP2016122338A (ja) * | 2014-12-25 | 2016-07-07 | 株式会社メガチップス | エラー訂正装置 |
JP2016161990A (ja) * | 2015-02-26 | 2016-09-05 | ファナック株式会社 | 誤り訂正機能による寿命予測を有する制御装置 |
US20170077955A1 (en) * | 2015-09-11 | 2017-03-16 | Micron Technology, Inc. | Multi channel memory with flexible code-length ecc |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0011353B1 (en) * | 1978-11-06 | 1982-06-16 | British Broadcasting Corporation | Cyclic redundancy data check encoding method and apparatus |
CN1220387C (zh) * | 2000-07-06 | 2005-09-21 | 三星电子株式会社 | 视频编解码器系统、数据处理方法、编解码控制方法 |
KR100811184B1 (ko) * | 2005-10-21 | 2008-03-07 | 삼성전자주식회사 | 아우터 인코더 및 그 방법 |
US8055979B2 (en) * | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
US8024637B2 (en) * | 2007-04-02 | 2011-09-20 | Broadcom Corporation | Super block error correction code (ECC) adaptable to communication systems including hard disk drives (HDDs) and other memory storage devices |
KR101398200B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
US8429498B1 (en) * | 2009-03-25 | 2013-04-23 | Apple Inc. | Dual ECC decoder |
US8560918B1 (en) * | 2009-04-21 | 2013-10-15 | Marvell International Ltd. | Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system |
WO2011159805A2 (en) | 2010-06-15 | 2011-12-22 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
US9318166B2 (en) * | 2011-07-22 | 2016-04-19 | SanDisk Technologies, Inc. | Systems and methods of storing data |
US9342453B2 (en) | 2011-09-30 | 2016-05-17 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9294132B1 (en) * | 2011-11-21 | 2016-03-22 | Proton Digital Systems, Inc. | Dual-stage data decoding for non-volatile memories |
US9183085B1 (en) * | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
TWI594254B (zh) * | 2012-07-17 | 2017-08-01 | 慧榮科技股份有限公司 | 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置 |
KR102068030B1 (ko) * | 2012-12-11 | 2020-01-20 | 삼성전자 주식회사 | 메모리 컨트롤러 및 그 동작방법 |
US9344117B2 (en) * | 2013-03-15 | 2016-05-17 | Mellanox Technologies, Ltd. | Methods and systems for error-correction decoding |
US9201728B2 (en) * | 2013-09-12 | 2015-12-01 | Seagate Technology Llc | Memory device with variable code rate |
US9621188B2 (en) * | 2014-03-17 | 2017-04-11 | Samsung Electronics Co., Ltd. | Soft and hard decision message-passing decoding |
US10116336B2 (en) | 2014-06-13 | 2018-10-30 | Sandisk Technologies Llc | Error correcting code adjustment for a data storage device |
US9407294B2 (en) | 2014-07-07 | 2016-08-02 | Kabushi Kaisha Toshiba. | Non-volatile memory controller with error correction (ECC) tuning via error statistics collection |
US9691505B2 (en) | 2015-03-27 | 2017-06-27 | Intel Corporation | Dynamic application of error correction code (ECC) based on error type |
US20170288705A1 (en) * | 2016-04-05 | 2017-10-05 | Alibaba Group Holding Limited | Shared memory with enhanced error correction |
-
2017
- 2017-08-11 US US15/675,679 patent/US10552256B2/en active Active
-
2018
- 2018-01-10 KR KR1020180003472A patent/KR102421048B1/ko active IP Right Grant
- 2018-03-02 TW TW107107123A patent/TWI740009B/zh active
- 2018-04-27 JP JP2018087282A patent/JP7231989B2/ja active Active
- 2018-04-28 CN CN201810400609.6A patent/CN108874577B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140105202A1 (en) * | 2004-02-13 | 2014-04-17 | Broadcom Corporation | Encoding system and method for a transmitter in wireless communications |
JP2008192054A (ja) * | 2007-02-07 | 2008-08-21 | Megachips Lsi Solutions Inc | 半導体メモリシステム |
JP2016122338A (ja) * | 2014-12-25 | 2016-07-07 | 株式会社メガチップス | エラー訂正装置 |
JP2016161990A (ja) * | 2015-02-26 | 2016-09-05 | ファナック株式会社 | 誤り訂正機能による寿命予測を有する制御装置 |
US20170077955A1 (en) * | 2015-09-11 | 2017-03-16 | Micron Technology, Inc. | Multi channel memory with flexible code-length ecc |
Also Published As
Publication number | Publication date |
---|---|
CN108874577B (zh) | 2023-11-03 |
TW201907299A (zh) | 2019-02-16 |
US10552256B2 (en) | 2020-02-04 |
US20180322007A1 (en) | 2018-11-08 |
KR102421048B1 (ko) | 2022-07-14 |
CN108874577A (zh) | 2018-11-23 |
JP7231989B2 (ja) | 2023-03-02 |
TWI740009B (zh) | 2021-09-21 |
KR20180123426A (ko) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6983313B2 (ja) | 不揮発性メモリの書込みクレジットの管理 | |
KR101531080B1 (ko) | 데이터 처리 시스템에서 단일화된 캐시에 대한 에러 검출 스킴들 | |
KR102190683B1 (ko) | 메모리 데이터 에러 정정 방법 | |
TWI703436B (zh) | 資料儲存裝置及其操作方法 | |
US8656263B2 (en) | Trellis-coded modulation in a multi-level cell flash memory device | |
CN113205839B (zh) | 通过时钟调制验证读取数据可靠性的存储器系统及其操作方法 | |
US11928025B2 (en) | Memory device protection | |
CN114816829A (zh) | 分布ecc比特以为元数据分配ecc比特 | |
JP2021504863A (ja) | メモリアドレス指定方法と関連するコントローラ、メモリデバイス、及びホスト | |
JP6342013B2 (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
US10855314B2 (en) | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords | |
US11194661B1 (en) | Memory system for accessing data in stripe form and operating method thereof | |
CN104182292A (zh) | 一种数据存储方法及装置 | |
US20200226020A1 (en) | Error correction using hierarchical decoders | |
JP7231989B2 (ja) | コーディングメカニズム及びその方法 | |
KR20210150779A (ko) | 위임된 작업을 처리하는 메모리 시스템 및 동작 방법 | |
US11256565B2 (en) | Transaction metadata | |
US20230280930A1 (en) | Memory controller and memory system for executing error correction operation | |
US20240053904A1 (en) | Efficient security metadata encoding in error correcting code (ecc) memory without dedicated ecc bits | |
US20240145025A1 (en) | Memory controller and memory system including the same | |
KR20220157879A (ko) | 다단계 오류 수정 코드들이 있는 저지연 ssd 읽기 아키텍처 | |
KR20240079388A (ko) | 메모리 컨트롤러 및 메모리 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210409 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210409 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210713 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220325 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20220607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220906 |
|
C60 | Trial request (containing other claim documents, opposition documents) |
Free format text: JAPANESE INTERMEDIATE CODE: C60 Effective date: 20220906 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20220916 |
|
C21 | Notice of transfer of a case for reconsideration by examiners before appeal proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C21 Effective date: 20220920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230111 |
|
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: 20230124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230217 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7231989 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |