JP2018190416A - コーディングメカニズム及びその方法 - Google Patents

コーディングメカニズム及びその方法 Download PDF

Info

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
Application number
JP2018087282A
Other languages
English (en)
Other versions
JP2018190416A5 (ja
JP7231989B2 (ja
Inventor
迪 民 牛
Dimin Niu
迪 民 牛
牧 天 張
Mu-Tien Chang
牧 天 張
宏 忠 ツェン
Hongzhong Zheng
宏 忠 ツェン
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018190416A publication Critical patent/JP2018190416A/ja
Publication of JP2018190416A5 publication Critical patent/JP2018190416A5/ja
Application granted granted Critical
Publication of JP7231989B2 publication Critical patent/JP7231989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/1044Adding 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
    • 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/1048Adding 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus 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

【課題】DDRチャンネルを通じてDIMMのためのモーフィングECCエンコーダ及びデコーダを含むコーディングメカニズム及びその方法を提供する。【解決手段】データに対する基本ビット数を含む第1コードを生成する第1エンコーダと、前記データに対する補助ビット数を含む第2コードを生成する第2エンコーダと、モードレジスタに対するストレージと、前記第2エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第1エンコーダは前記第1コードを生成するのに常に使用され、前記第2エンコーダは前記第2コードを生成するのに選択的に使用され、前記第2コードは前記第1コードと共に前記第1コード単独よりさらに強いエンコーディングを提供する。【選択図】 図1

Description

本発明はメモリモジュールに関し、特に、メモリートランザクション(transaction)の内の多様なレベルのエンコーディング及びデコーディングを支援するコーディングメカニズム及びその方法に関する。
DDR(Dual Data Rate)チャンネルを利用するNVDIMM(Non−Volatile Dual In−Line Memory Module)はトランザクションベースのインターフェースを通じた非同期式ハンドシェーク(handshake)を要求する。
NVDIMM以外の他の形態のメモリーによっても使用され得るこのハンドシェークは、可変の読み取り/書き込みタイミングを有することができ、そして、DIMMからフィードバック情報が必要である。
なお、いくつかのシステムでは、ホストとDIMM間のメターデータ(要請ID、ヒット/ミス(hit/miss)情報、供給業者(vendor)メタデータなど)の交換を所望する。
メタデータを伝達する専用のチャンネルは、ハードウェアの変更を要求するであろうが、メタデータを伝達する専用のパッケージを利用することは、パフォーマンスのオーバーヘッドを増加させるはずである。
ECC(Error Correcting Code)に割り当てられたビットを利用してメタデータを交換することができる。
インテル(登録商標)社に譲渡された米国特許出願公開明細書(US2014/0040550、Nale et al.)は、メタデータのためECCビットを使用する一つのアクセス方法を説明する。
この解決方法では、メタデータ情報の伝送を要求する“近距離(near)/遠距離(far)”の非同期式メモリー階層があり、かつプロトコルはメタデータの交換を提供する。
しかしながら、このプロトコルでは供給企業者らが供給業者特有の機能に対するメタデータを実装することはできない。
なお、メタデータの交換を可能とするためECCビットを使用することは、そのビットはECCに使用できないことを意味する。
よって、メタデータとして使用のためECCビットを割り当てることは弱いECCシステムに繋がる。
この問題を複雑にしているのは、相異なるシステムではメタデータに対し相異なるビット数を要求するはずであり、エラー訂正のため使用可能なビット数に影響を与える。
ECCとメタデータの両方のためにECCビットの使用を管理する方法が必要である。
米国特許第8892980号明細書 米国特許第9407294号明細書 米国特許出願公開第2014/0040550号明細書 米国特許出願公開第2015/0363262号明細書 米国特許出願公開第2016/0284424号明細書
そこで、本発明は上記従来のメモリートランザクションにおける問題点に鑑みてなされたものであって、本発明の目的は、DDRチャンネルを通じてDIMMのためのモーフィングECCエンコーダ及びデコーダを含むコーディングメカニズム及びその方法を提供することにある。
上記目的を達成するためになされた本発明によるコーディングメカニズムは、ハードウェアで実行されるコーディングメカニズムであって、データに対する基本ビット数(base number of bits)を含む第1コードを生成する第1エンコーダと、前記データに対する補助ビット数(supplementary number of bits)を含む第2コードを生成する第2エンコーダと、モードレジスタ(mode register)に対するストレージと、前記第2エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第1エンコーダは前記第1コードを生成するのに常に使用され、前記第2エンコーダは前記第2コードを生成するのに選択的に使用され、前記第2コードは前記第1コードと共に前記第1コード単独よりさらに強いエンコーディングを提供することを特徴とする。
また、上記目的を達成するためになされた本発明によるコーディングメカニズムは、ハードウェアで実行されるコーディングメカニズムであって、データ及び基本ビット数を含む第1コードに対する第1結果を生成する第1デコーダと、前記データ及び補助ビット数を含む少なくとも第2コードに対する第2結果を生成する第2デコーダと、モードレジスタに対するストレージと、前記第2デコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第1デコーダは前記第1結果を生成するのに常に使用され、前記第2デコーダは前記第2結果を生成するのに選択的に使用され、前記第2結果は前記第1結果と共に前記第1結果単独よりさらに強いデコーディングを提供することを特徴とする。
上記目的を達成するためになされた本発明によるコーディングメカニズム方法は、メモリートランザクションに対するデータを受信するステップと、前記メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビット数を判定(determining)するステップと、前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップと、前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップと、を有することを特徴とする。
本発明に係るコーディングメカニズム及びその方法によれば、エンコーダ/デコーダの“常にオン(always on)”の部分はエラーを検出できるCRC(Cyclic Redundancy Check)を具現することができ、切換可能なエンコーダ/デコーダはエラー訂正も可能なパリティー(parity)情報を具現することができ、切換可能なエンコーダ/デコーダ回路の動作はモードレジスタの特定な値を設定して変更することができるという効果がある。
本発明の実施形態による複数レベルのエンコーディング/デコーディングを遂行するように作動するストレージ装置を有するマシンの概要を示すブロック図である。 図1のマシンの追加的な詳細を示すブロック図である。 本発明の実施形態によるエンコ−ディング/デコーディングを遂行するように作動する図1のマシンのメモリーモジュールを示すブロック図である。 本発明の実施形態によるエンコ−ディング/デコーディングを遂行するように作動する図1のメモリーコントローラーを示すブロック図である。 (a)及び(b)は、64+8ビット幅のメモリーチャンネルにおいてエンコーディング/デコーディングのため使用される可変個数のECCビットを示す図である。 (a)及び(b)は、32+8ビット幅のメモリーチャンネルにおいてエンコーディング/デコーディングのため使用される可変個数のECCビットを示す図である。 本発明の第1の実施形態による図3及び図4のコーディングメカニズムを示すブロック図である。 本発明の第2の実施形態による図3及び図4のコーディングメカニズムを示すブロック図である。 本発明の第3の実施形態による図3及び図4のコーディングメカニズムを示すブロック図である。 本発明の第4の実施形態による図3及び図4のコーディングメカニズムを示すブロック図である。 本発明の第5の実施形態による図3及び図4のコーディングメカニズムを示すブロック図である。 本発明の実施形態による図7、図9、及び図11のコーディングメカニズムを利用してメモリートランザクションのためデータをエンコーディングする例示的な手順を説明するためのフローチャートである。 本発明の実施形態による図7、図9、及び図11のコーディングメカニズムを利用してメモリートランザクションのためデータをエンコーディングする例示的な手順を説明するためのフローチャートである。 本発明の実施形態による図8、及び図10のコーディングメカニズムを利用してメモリートランザクションのためデータをデコーディングする例示的な手順を説明するためのフローチャートである。 本発明の実施形態による図8、及び図10のコーディングメカニズムを利用してメモリートランザクションのためデータをデコーディングする例示的な手順を説明するためのフローチャートである。 本発明の実施形態によるエラー検出及び訂正を支援するためコードを利用する例示的な手順を説明するためのフローチャートである。
次に、本発明に係るコーディングメカニズム及びその方法を実施するための形態の具体例を図面を参照しながら説明する。
本明細書で、第1、第2などの用語を多様な構成要素を説明するのに使用するが、こういう構成要素はこういう用語により限定されないこととして理解されるであろう。こういう用語は一つの構成要素を、他の要素と区別するため使用する。
例えば、第1モジュールは第2モジュールと命名することもでき、そして同様に本発明の範囲を逸脱しない範囲で、第2モジュールは第1モジュールと命名することもできる。
本明細書で、本発明の説明に使用する用語は、特定の実施形態のみを記述するための目的で使用され、本発明を限定する意図では使用されない。文脈上、明白に違うように表わさない限り、単数の形態が本発明の説明及び付加された請求項で使用される際、複数の形態を含むことを意図する。
なお、本明細書に使用する“及び/又は”の用語は、一つ以上の関連する羅列された事項の全ての可能な組み合わせを表わすか含むことで理解されるであろう。“含む”の用語が、本明細書で使用する場合、記述された特徴、数字、ステップ、動作、構成、及び/又は要素の存在を明記することであり、これらの一つ以上の他の特徴、数字、ステップ、動作、構成、要素、及び/又はグループの存在又は付加を排除しないことをさらに理解されるべきである。
図面の構成及び特徴は必ずしも一定な比率で描かれるものではない。
従来、DRAM(Dynamic Random Access Memory)は、同期式プロトコルを使用しDIMM(Dual In−line Memory Module)とメモリーコントローラー間のメモリートランザクション(transaction、または処理)を管理する。
同期式インターフェースはいくつの長所を持つ。
DIMM及びメモリーコントローラーの両方がいつデータが使用可能であるかを正確に認識します。
一方、NVDIMM(Non−Volatile Dual In−line Memory Module)は非同期式プロトコルを使用する(NVDIMM−P)。
非同期式プロトコルを用いて、メモリートランザクションを完了するのに必要な時間は、遂行される動作やNVDIMMを製造するのに使用される材料など、任意の個数の要因に基づいて変化する可能性がある。
なお、非同期式プロトコルは、NVDIMMでメモリーコントローラーにフィードバック(feedback)を要求するハンドシェーキング(handshaking)を要求する。
このフィードバックは、NVDIMMでメモリーコントローラーへ伝送されるデータに付着されたメタデータの形態を有する。
なお、ホストは、データと共に保存されるメタデータを指定できる。このメタデータは、ECCビットのような、メモリートランザクションの内でいくつかの“スペア(spare)”ビットを用いるデータにしばしば添付される。
メモリーからデータが読み込まれる(read)されると、このメタデータもまた読み込まれ、メモリーコントローラーに戻らなければならない。
相異なる供給業者らは相異なるメタデータのビット割当を要求でき、そして多様なメタデータの要求を支援する多様な従来の方法は、各々固有の短所を有する。
本質的にメタデータのビットを支援するのは、ECCのためのビットの効用性と、そしてこれにECC強度の均衡を要求する。
例えば、データの8個のバースト(burst)の各々にECCのための8個のビットを包含するメモリーモジュールを考慮する。
この組み合わせは、各512ビットメモリトランザクションに対するECCのため、使用可能な総計64ビットを変換する。
バースト当り8個ビットの中で3個がメタデータのため使用されると、64個ECCビットの中で24個はメタデータのため使用され、残りの40個ビットはECCのため使用可能である。
しかし、バースト当り8個ビットの中で2個のみがメタデータのため使用されると、64個のビットの中で16個のみがメタデータのため使用され、残りの48個のビットはECCのため使用可能である。
前者の組み合わせは、メタデータのため多くのビットを提供するがECCが弱くなる。
後者の組み合わせは、ECCが強くなるがメタデータのため少ないビットを提供する。
メモリーモジュールがメタデータ及びECCに割り当てられた特定の個数のビットを含んで製作されると、相異なるメモリーモジュールが相異なるメタデータ及びECC要求を支援するのに必要である。
もっと良いソリューション(solution)は、残りのビットから関連されたメタデータ量の柔軟性を勘案して、一つの装置内で複数の相異なるECCアルゴリズム(一部は強く、一部は弱い)を支援することである。
DDR5のような、未来のメモリーソリューションは他の問題を導入する。
DDR5メモリーから狭いチャンネルへの変化で、エラー訂正のためのオーバーヘッドと共にプリフェッチされる(pre−fetched)ビット数が増加する。
例えば、DDR4メモリーは16個データチップ当り2個のECCチップを要求する。
一方、DDR5メモリーは8個データチップ当り2個のECCチップを要求する。
従って、DDR5で既存のECC能力(capability)を維持するには増加されたECCオーバーヘッドを要求する。
既存のオーバーヘッドを維持するのはメモリーのECC能力を弱化させる。
従来、複数のコーディングシステムは、2個(或いは、それ以上の)の全てのエンコーダ又はデコーダを要求するが、しかし、一度に一つ(活性ECCメカニズムのためのコーディングシステム)だけ活性化され、はるかにずっと多くの回路を要求する。
本発明の実施形態において、エンコーダ/デコーダは“常にオン(always on)”の部分と、もっと大きい範囲を提供する切換可能な部分に分けられる。
本発明の実施形態がどのように動作できるかの例示として、エンコーダ/デコーダの“常にオン(always on)”の部分はエラーを検出できる(しかし、必ずしもエラー訂正ではない)CRC(Cyclic Redundancy Check、巡回冗長検査)を具現できる。
切換可能なエンコーダ/デコーダは、エラー訂正もできるパリティー情報を具現できる。
切換可能なエンコーダ/デコーダ回路の動作は、モードレジスタの特定の値を設定して変更することができる。
本明細書の設計は、NVDIMM及び未来のDDR(x)インターフェースベースのDRAMの全てに適用することができる。
図1は、本発明の実施形態による複数レベルのエンコーディング/デコーディングを遂行するように作動するストレージ装置を有するマシンの概要を示すブロック図である。
図1を参照すると、マシン(machine)105を示す。
マシン105は、デスクトップ又はラップトップコンピュータ、サーバ(独立実行型サーバ又はラックサーバの中の一つ)、又は本発明の実施形態が役に立つことのできる任意の他の装置を含むが、これに限定されない任意の所望するマシンであり得る。
マシン105は、専門化された携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置をなお含むことができる。
マシン105は、任意の所望するアプリケーションを実行できる。
データベースアプリケーションが良い例示であるが、本発明の実施形態は任意の所望するアプリケーションまで拡張することができる。
マシン105は、それの特定の形態とは関係なく、プロセッサ110、メモリー115、及びストレージ装置120を含み得る。
プロセッサ110は、任意の多様なプロセッサであり得る。
例えば、インテル(登録商標)Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、又はAtom(登録商標)プロセッサ、AMD(登録商標)Opteron(登録商標)プロセッサ、ARM(登録商標)プロセッサなどであり得る。
図1では一つのプロセッサを示すが、マシン105は任意の個数のプロセッサを含むことができ、各々はシングルコア又はマルチコアプロセッサであり得る。
メモリー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は、任意の多様なストレージ装置であり得る。
ストレージ装置120は、メモリーの中に有り得る装置ドライバー130によって制御することができる。
図2は、図1のマシン105の追加的な詳細を示すブロック図である。
図2を参照すると、一般的に、マシン105はマシンの構成要素の動作を調整するのに使用されるメモリーコントローラー125及びクロック205を含み得る一つ以上のプロセッサ110を含む。
プロセッサ110は、なお例示としてRAM(Random Access Memory)、ROM(Read−Only Memory)、又は他の状態保存媒体を含み得るメモリーと接続することができる。
なお、プロセッサ110はストレージ装置120と接続でき、そして例えば、イーサネット(登録商標)コネクターであり得るネットワークコネクター210と接続され得る。
プロセッサ110は、なお他の構成要素の中でユーザーインターフェース220及び入出力エンジン225を利用して管理できる入出力インターフェースポートに付着するバス215と接続され得る。
図3は、本発明の実施形態によるエンコーディング/デコーディングを遂行するように作動する図1のマシン105のメモリーモジュールを示すブロック図である。
図3を参照すると、メモリーモジュール115を示す。
メモリモジュール115は、チップ(305−1〜305−6)を含む。
図3は、6個のチップ(305−1〜305−6)を含むものとしてメモリーモジュールを示すが、しかし本発明の実施形態は任意の個数のチップ305の使用を支援できる。
メモリーモジュール115は、また、DIMMコントローラー310を含む。
DIMMコントローラー310は、チップ(305−1〜305−6)間のデータ移動、メモリーモジュール115の中でキャッシュ(図示せず)を支援するキャッシュメカニズム、及び他の機能を制御する。
DIMMコントローラー310の一部であり得るコーディングメカニズム315は、メモリートランザクションの一部として、ECC(Error Correction Code)のような多様なコーディングを遂行及び/又は使用できる。
例えば、コーディングメカニズム315は、メモリートランザクションの一部であるデータ上のエラー訂正コードを生成するか使用できる。
図7〜図9を参照して後述で説明するように、コーディングメカニズム315は、メモリーモジュール115の中で要求される空間及びメモリモジュール115によって生成される熱を減らすためのハードウェア具現(部分的に或いは完全に)を共有できる複数のコーディングを支援できる。
なお、多様なコーディングは関わり合うことができる。
即ち、一つのコーディングは完全に別個ではない他のコーディングを補完できる。
例えば、コーディングメカニズム315は、コーディング回路又はコーディング装置であり得る。
図4は、本発明の実施形態によるエンコーディング/デコーディングを遂行するように作動する図1のメモリーコントローラー125を示すブロック図である。
図4を参照すると、メモリコントローラー125はコーディングメカニズム315を含む。
メモリーコントローラー125は、また図1のマシン105の間でのデータを受信し、送信する受信機/送信機405、図1のマシン105からメモリートランザクションを受信する特定のメモリーモジュールを選択するメモリーモジュール選択機410などのような他の従来の構成要素を含み得る。
一般的に、図3のメモリーモジュール115及びメモリコントローラー125の中の一つがデータをエンコーディングするものであり、他の一つがデータをデコーディングするものであるが、メモリーコントローラー125の中のコーディングメカニズム315は図3のメモリーモジュール115の中のコーディングメカニズム315と同様に動作する。
例えば、コーディングメカニズム315がエラー検出及び訂正コードを生成するのに使用されると、一つのコーディングメカニズム315はエラー検出及び訂正コードを生成するものであり、そして他のコーディングメカニズム315はメモリートランザクションの一部として伝送された任意のデータにエラーがあるか否かを判別するため、そのコードを使用するものである。
図5の(a)及び(b)は、エンコーディング/デコーディングのため使用される可変的な個数のECCビットを示す図である。
図5の(a)は、広いメモリーチャンネルを示す。
図5の(a)で(そして、図5の(b)で)、メモリートランザクションの各バーストは72個のビット(データの64個のビット及び非データ(non−data)の8個のビット)を伝送する。
総計8個のバーストは、メモリートランザクション当り総計512個のビットのデータを、そしてメモリートランザクション当り64個のビットの非データを伝達するはずである。
各バーストの内で、非データに割り当てられた8個のビットの中の5個のビットはエラー検出/訂正のため使用されるものとして示し、3個のビットはメタデータのため使用されるものとして示した。
エラー検出/訂正のため使用される5個のビットは、例示では、エラー検出/訂正のため常に使用される“基本ビット数”505と考慮され得る。
3個の残りの非データのビットは、特定の具現により、エラー検出/訂正又はメタデータのため使用され得る。
図5の(a)と対照的に、図5の(b)では、同一の72個のビットを示すが、しかし、図5の(b)では、基本ビット数505は、相変わらず同一の(5個のビット)だが、他の非データのビットはメタデータに全ては割り当てない。
代わりに、これらのビットの中の2個はメタデータに割り当てられ、しかし他の(1個)残りのビットはエラー検出/訂正に割り当てられる。
エラー検出/訂正に割り当てられたこの追加ビットはこの例示では、補助ビット数510として呼称する。
8個のECCビットの中の6個が図5の(b)でエラー訂正のため、実際に使用されるので、図5の(b)は図5の(a)と比較すると、もっと優秀なエラー検出/訂正を提供する。
データ、非データ、ECC、及びメタデータのため使用するビットの個数は、例示的である。
任意の個数のビットは任意のカテゴリーのため使用することができる。
図5の(a)及び(b)と対照的に、図6の(a)及び(b)は、狭いメモリーチャンネルを示す。
図6の(a)で(そして、図6の(b)で)、メモリートランザクション内の各バーストは40個のビット(データの32個のビット及び非データの8個のビット)を伝送する。
総計16個のバーストはメモリートランザクション当り総計512個のビットのデータ、そしてメモリートランザクション当り128個ビットのメタデータ/ECCを伝達するはずである。
各バースト内で、非データに割り当てられた8個のビットの中の4個のビットはエラー検出/訂正のため使用され、4個のビットはメタデータのため使用される。
エラー検出/訂正のため使用される4個のビットは例示ではエラー検出/訂正のため、常に使用される“基本ビット数”505と考慮することができる。
残りの非データのビットは特定の具現により、エラー検出/訂正又はメタデータのため使用され得る。
図6の(a)と対照的に、図6の(b)では同一の40個のビットを示すが、しかし、図6の(b)では、基本ビット数505は、相変わらず同一の(4個のビット)だが、他の非データのビットはメタデータに全ては割り当てない。
代わりに、これらのビットの中の2個はメタデータに割り当てられ、そして他の2個のビットはエラー検出/訂正に割り当てられる。
エラー検出/訂正に割り当てられた2個の追加ビットは、例示では“補助ビット数”510と考慮することができる。
8個の非データのビットの中の6個が、図6の(b)でエラー訂正のため実際に使用されるので、図6の(b)は図6の(a)と比較すると、もっと優秀なエラー検出/訂正を提供する。
図7は、本発明の第1の実施形態による、図3及び図4のコーディングメカニズム315を示すブロック図である。
図7を参照すると、コーディングメカニズム315は、エンコーダ(705、710)、スイッチ715、及びストレージ720を含む。
エンコーダ(705,710)は入力データを受け、データからコード(725、730)を生成する。
第1エンコーダ705は、第2エンコーダ710が使用されるか否かに関わらず、データを符号で処理するのに常に使用される主エンコーダとして見なすことができる。
第2エンコーダ710は、二次的なエンコーダとして見なすことができる。
第2エンコーダ710は、スイッチ715が閉じると使用される。
スイッチ715は、ストレージ720に保存されたモードレジスタ735の値により順次に開くか閉じる。
例えば、第1エンコーダ705は、図5の(a)〜図6の(b)の基本ビット数(例えば、図5の(a)及び(b)の5個のビット、又は図6の(a)及び(b)の4個のビット)を用い、入力データに基づいてエラー検出コードを生成する。
その次に、(二次的な)第2エンコーダ710は、図5の(a)〜図6の(b)の二次的な補助ビット数510(例えば、図5の(b)の1個のビット、図6の(b)の2個のビット)が正(+)であるか(「0」より大きいか)否かにより追加エラー訂正コードの追加ビットを生成するのに使用することができる。
モードレジスタ735には第2エンコーダ710が活性化されるように、スイッチ715が開くか又は閉じるかを示す値を設定することができる。
但し、1個のスイッチのみを図7では使用したので、モードレジスタ735は、1ビットのデータのみを含むことができる。
例えば、ビットが「0」に設定されるとスイッチ715は開き、そしてビットが「1」に設定されるとスイッチ715は閉じる。
モードレジスタ735は,任意の所望するアクセス方法を利用し、スイッチ715(又は、図9〜図11を参照して説明する任意の追加スイッチ)を開くか又は閉じるかを表わすことができる。
図7では、図3及び図4のコーディングメカニズム315がエラー訂正コードとして使用され得るコードをどのように生成するかを示すが、図7のコーディングメカニズム315は、データが正確に伝送されたか検証及び/又は訂正するため、このエラー訂正コードを使用しない。
図8では、本発明の第2の実施形態により、こういうコードをデコーディングできる図3及び図4のコーディングメカニズム315を示す。
図8を参照すると、コーディングメカニズムが、データ及び図7のコード(725、730)のようなコードを受信することを示す。
この情報は、図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だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
図7及び図8は、2個レベルのエンコーダ及びデコーダを用いてエンコーディング及びデコーディングを遂行するコーディングメカニズム315を示したが、本発明の実施形態は任意の所望する構成を用いて任意の個数のレベル内の任意の個数のエンコーダ及びデコーダを支援できる。
図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の値を用いて管理することができる。
また、例えば、第1エンコーダ705は、図5の(a)及び(b)の5個の基本ビット数505、又は図6の(a)及び(b)の4個の基本ビット数505を用いて、入力データに基づいてエラー検出コードを生成する。
その次に、二次的なエンコーダ(710、905)は、図5の(b)及び図6の(b)の二次的な補助ビット数510が少なくても1個又は2個であるか否かにより、エラー訂正コードの1個又は2個(又は、それ以上の)の追加ビットを生成するのに使用され得る。
図9は、2個のスイッチ(715、910)を含むので、モードレジスタ735は開くか閉じるスイッチ(715、910)の全ての適切な組み合わせを支援するため1個のビット以上が必要であり得る。
例えば、モードレジスタ735の最下位のビットは、スイッチ715が開くか閉じるかを指定でき、モードレジスタ735の次の下位ビットは、スイッチ910が開くか閉じるかを指定できる。
モードレジスタ735は、任意の所望するアクセス方法を用いてどのスイッチが開くか閉じるかを表わすことができる。
図9は、3個のエンコーダ(705、710、905)を用いてエンコーディングを遂行する図3及び図4のコーディングメカニズム315を示した。
同様の方式で、図3及び図4のコーディングメカニズム315は、なお2個以上のデコーダを用いてデコーディングを遂行できる。
図10は、本発明の第4の実施形態によるコーディングメカニズムの例示を示すブロック図である。
図10を参照すると、コーディングメカニズム315がデータ及び図7及び図9の第1〜第3コード(725、730、915)のようなコードを受信することを示す。
図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として示す。
図5の(b)及び図6の(b)の補助ビット数510が第2デコーダ815のみにより生成するよりはもっと多くのビットを含むと、(また、潜在的にデータ及びコードと共に)第2デコーダ815の出力は、なおも図5の(b)及び図6の(b)の補助ビット数510に基づいて追加デコーディングを遂行する第3デコーダ1005に移動する。
第3デコーダ1005の結果は第3結果1010として示す。
第3デコーダ1005が使用されるか否かは、モードレジスタ735に基づいて開くか閉じるスイッチ1015により制御される。
全ての結果(810、820、1010)を使用することはデータのより良い判別を提供することが期待され得る。
例えば、第1結果810、第2結果820だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
図7〜図10に示した本発明の実施形態において、エンコーディングは、図7及び図9の選択的な並列エンコーダ(710、905)(parallel encoders)を用いて行われ、一方、デコーディングは、図8及び図10の直列デコーダ(815、1005)(cascading decoders)を用いて行われる。
しかし、本発明の実施形態は、直列エンコーダ(又は並列及び直列エンコーダの組み合わせ)を用いてエンコーディングを遂行することができ、並列デコーダ(又は、並列及び直列デコーダの組み合わせ)を用いてデコーディングを遂行できる図3及び図4のコーディングメカニズム315を含む。
図11は、本発明の第5の実施形態による直列エンコーダを利用する図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の値により順次に開くか閉じることができる。
また、例えば、第1エンコーダ705は、図5の(a)及び図5の(b)の5個の基本ビット数505、又は図6の(a)及び図6の(b)の4個の基本ビット数505を用いて、入力データに基づいてエラー検出コードを生成する。
その次に、二次的なエンコーダ(第2エンコーダ)710は、図5の(b)及び図6の(b)の二次的な補助ビット数510が少なくても1個又は2個であるか否かにより、エラー訂正コードの1個又は2個(または、それ以上)の追加ビットを生成するのに使用される。
メタデータのビットが全然必要ではないと、即ち、図5の(b)及び図6の(b)の二次的な補助ビット数510がエンコーダにより生成されたビットの個数より大きければ、第3エンコーダ905は、なお追加の二次的なビットを用いて、追加に、そしてさらにエラー訂正が可能な(further and more−capable)エラー訂正コードを生成するのに使用される。
直列エンコーダを使用する本発明の実施形態において、図8及び図10のコーディングメカニズム315と共に、直列内下位のエンコーダは入力として以前のエンコーダの出力を受信でき、なおオリジナルのデータを受信できる可能性がある。
従って、例えば、図11の第3エンコーダ905は、図11の第2コード730を受信でき、そしてなおオリジナルのデータを受信して図11の第3コード915を生成する。
図9のように、図11は、2個のスイッチ(715、910)を含むので、モードレジスタ735は開くか閉じるスイッチ(715、910)の全ての適切な組み合わせを支援するため1ビット以上が必要であり得る。
例えば、モードレジスタ735の最下位ビットは、スイッチ715が開くか閉じるかを指定でき、モードレジスタ735の次の下位ビットは、スイッチ910が開くか閉じるかを指定できる。
モードレジスタ735は、任意の所望するアクセスを利用してどのスイッチが開くか閉じるかを表わすことができる。
本明細書では、“コーダー(coder)”の用語は、エンコーダ及びデコーダの全部を含む包括的な用語になるように意図している。
同様に、本明細書では、“エラー管理(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が強いエラー検出又はエラー訂正を提供すれば、両者は“エラー管理”と見なす。
図7〜図11は、本発明の特定の実施形態を提示する。
しかし、本発明の他の実施形態は、エンコーダ又はデコーダの任意の所望する組み合わせを支援できる。
従って、例えば、図3及び図4のコーディングメカニズム315は、いくつの直列のコーダー及び代替の他のコーダーを包含できる。
又は、図3及び図4のコーディングメカニズム315は、直列の下位レベルで、複数の代替のコーダーと共に、直列の最上位で一つのコーダーを有することができる。
そして、このような直列の代替コーダーの組み合わせの全ては本発明の実施形態として含まれる。
また、モードレジスタ735の値は、モードレジスタ735の値からスイッチ(715、910)への任意の所望するマッピング(mapping)を用いて、どのスイッチが開くか、そしてどのスイッチが閉じるか制御できる。
なお、本発明の実施形態は、全ての任意の構成において、エンコーディング及びデコーディングメカニズムの全てを支援できる。
例えば、図3及び図4のコーディングメカニズム315は、図7、図9、図11で示したようなエンコーダ、そして図8及び図10で示したようなデコーダを全部包含できる。
なお、図7は、2個のデコーダ(705、710)のみを示し、そして図9及び図11の各々は、3個のエンコーダ(705、710、905)を示す。
同様に、図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)、及び図8及び図10のデコーダ(805、815、1005)は、ハードウェア具現を共有できる。
例示として、図7、図9、及び図11のエンコーダ(705、710、905)は、全ての可能なECCビットを生成する1個のエンコーダとして具現され得る。
次に、図7、図9、及び図11のスイッチ(715、910)は、図7、図9、及び図11のコーディングメカニズム315から出力されるあるECCビットを選択できる。
「エラー検出ビット」だけ、いくつの「エラー訂正ビット」、及び/又は全ての「エラー訂正ビット」(又は、「弱いエラー検出/訂正」対「強いエラー検出/訂正」、「弱いエラー検出/訂正ビット」だけ、いくつの「強いエラー検出/訂正ビット」、又は全ての「強いエラー検出/訂正ビット」)を実施形態として含むことができる。
図5の(b)及び図6の(b)の補助ビット数510は、実際には2つ以上のビットのセットを含み得る。
例えば、図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を生成するのに使用し得る。
(エンコーダ又はデコーダである)1個の二次的なコーダーだけがあると、図5の(b)及び図6の(b)の単1の補助ビット数で十分である。
しかし、複数の二次的なコーダーがあると(又は、別法として又は結合して、第2コーダー、第3コーダーなど)、このような複数のコーダーをいつ活性化するかを管理する代替方法がある。
本発明の実施形態において、複数の二次的なコーダーにより支援される相異なるビット数を管理する図5の(b)及び図6の(b)の複数の補助ビット数510が有り得る。
例えば、図11のコーディングメカニズムを考慮する。
第2エンコーダ710は、第2コード730として2個の追加ビットを提供するのに使用することができ、そして第3エンコーダ905は第3コード915としてコードの第3追加ビットを提供できる。
これを表わすため、図5の(b)及び図6の(b)の補助ビット数510は2補助ビットを実際に包含できる。
その次に、システムがメタデータのため3ビットを要求すると、このような値の全ては補助エラー訂正コードのため使用可能なビットがないということを示す「0」で設定し得る。
しかし、システムがメタデータにため1ビットだけを要求すれば補助ビット数の中で一つは「2」で設定し得る。
そして、システムがメタデータのためビットを要求しないと、補助ビット数の中で一つは「2」で設定することができ、他の補助ビット数は「1」で設定することができる。
この情報から、図11のモードレジスタ735は、使用可能な補助ビット数のため適切に図11のエンコーダ(710、905)を活性化するように設定され得る。
本発明の他の実施形態において、図5の(b)及び図6の(b)の補助ビット数510は単一の値として、メタデータとして使用されない全ての追加ビット(図5の(a)〜図6の(b)の基本ビット数505として表現されること以上)を表わすことができる。
その次に、コーダーは全ての使用可能なビットを使用するのに適切に活性化され得る。
こういう本発明の実施形態において、図5の(b)及び図6の(b)の補助ビット数510は、いくら多くのビットがメタデータのため必要であるかによって「0」、「2」、又は「3」(又は、図5の(b)及び図6の(b)の基本ビット数505、及び図5の(b)及び図6の(b)の補助ビット数510の値より異なる値)で設定され得る。
その次に、図11のエンコーダ(710、905)により生成される知られたビット数と比較してこの値を比べることで、図11のモードレジスタ735は、図11のエンコーダ(710、905)を活性化するように設定することができる。
例えば、図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は活性化されないように設定し得る。
そして、図5の(b)及び図6の(b)の補助ビット数510が「3」であると、図11のモードレジスタ735は、図11のエンコーダ(710、905)の全てが活性化されるように設定し、コード(730、915)内の全てを追加ビット数「3」に生成する。
図3及び図4のコーディングメカニズム315は、通常ハードウェアの形態で具現されるので、図7、図9、及び図11のコード(730、915)の一部として生成され得るビット数は予め知られ、最大可能なエラー検出/訂正を支援するため、どれだけ多くの二次的なコーダーが必要であるかを容易に判別することができる。
(図11のような)直列コーダーの場合、本発明の実施形態において、図11のモードレジスタ735により活性化されるコーダーは(図5の(b)及び図6の(b)の補助ビット数510に基づいて)特定の順序(シークエンス)が必要である。
従って、例えば、図11のエンコーダ(710、905)の各々が(図11のコード(730、915)内で)2ビットのコードを生成するが、しかし図5の(b)及び図6の(b)の補助ビット数510は「3」であり、図11の第3エンコーダ905は活性化されてはならない(用いられるビット数よりもっと多くのビットを生成するはずである)。
しかし、代案として使用可能なコーダーの場合、本発明の実施形態において、図9のコーディングメカニズム315として、コーダーは活性化のため選択され、図5の(b)及び図6の(b)の使用可能な補助ビット数510を最大化できる。
例えば、図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を提供する。
そして、図4のメモリーコントローラー125を支援する本発明の実施形態は、図1のメモリーモジュール115と通信でき、固有のECC能力の使用を最大化できる。(勿論、マシンが図3のメモリーモジュール115及び図4のメモリーコントローラー125を全て含むと、二つはそれらの中でいずれの一つが個別的に支援する最適のECCを使用できる)
換言すれば、例えば、NVDIMMのメモリーを使用する本発明の実施形態において、NVDIMMのメモリーモジュールは、ホストによって要求されるメタデータのビット数に基づいて提供されたECCの支援レベルを変更できる。
他の例として、DDR5のメモリーを使用する本発明の実施形態において、図1のメモリーコントローラー125は、DDR5のメモリーがECC能力の現在レベル、又はECCのオーバーヘッドの現在レベルを維持するか否かに基づいてECCの支援レベルを変更できる。
通常、図1のマシン105の電源が入ると「ECC」対「メタデータ」のために使用されるビット数が判別され、(ランタイム(runtime)の間の変更は、受信時データがどのように解析されるかに影響を与えるので)ランタイムの間、変更されない。
しかし、本発明のいくつの実施形態では、ランタイムの間「ECC」対「メターデータ」のため使用されるビット数を変更するのを支援できる。
「ECC」対「メタデータ」のため使用されるビット数が一応判別されると、図7〜図11のモードレジスタ735を設定することができる。
例えば、図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及び図12bは本発明の実施形態によるメモリートランザクションのためのエンコーディングデータに対する例示的な手順を説明するためのフローチャートである。
図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エンコーディングを遂行する。
図12bを参照すると、ステップS1220で、図7、図9、及び図11のコーディングメカニズム315は、エンコーディングされ得る任意の補助ビットが存在するかを(又は全ての残りのビットがメタデータのため使用されるかを)判別する。
エンコーディングされ得る補助ビットがない場合、ステップS1225でメモリートランザクションは(図3のメモリーモジュール115又は図4のメモリーコントローラー125の中のいずれかの一つにより)図7、図9、及び図11のデータ及び第1コード725を用いて遂行される。
エンコーディングされ得る補助ビットがある場合、ステップS1230で二次的なエンコーダが補助ビット数を使用するのに選択される。
ステップ1230は、点線1235で示すように選択的である。
例えば、図7及び図11のコーディングメカニズム315が使用されると、図7及び図11のコーディングメカニズム315の任意の一つの“レベル”で選択可能な1個だけのエンコーダが存在する。
しかし、図9のコーディングメカニズム315が使用されると、図9のコーディングメカニズム315の任意の一つの“レベル”で選択可能な任意の個数のエンコーダが存在する。
よって、エンコーダは選択される必要がある。
任意の基準により、エンコーダを選択することができる。
例えば、エンコーディングのため使用可能なビットを最大限使用するエンコーダ、又は特定のタイプのエンコーディングを提供するエンコーダなどを選択することができる。
エンコーダが選択されれば、ステップS1240で、二次的なエンコーディングは選択されたエンコーダを用いて遂行する。
ステップS1245で、図7、図9、及び図11のコーディングメカニズム315は、エンコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
エンコーディングされ得る任意の残りの補助ビットがあれば、ステップS1250で(ステップS1230、S1240を必須的に反復して)追加エンコーディングを遂行する。
エンコーディングされ得る任意の残りの補助ビットがなければ、ステップS1225に進み、メモリートランザクションにてデータ及びコードが使用される。
図13a及び図13bは本発明の実施形態による図8及び図10のコーディングメカニズムを用いてメモリートランザクションのため、データをデコーディングする例示的な手順を説明するためのフローチャートである。
図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デコーディングを遂行する。
次に、図13bを参照すると、ステップS1325で、図8及び図10のコーディングメカニズム315は、デコーディングされ得る任意の補助のビットが存在するかを(又は、全ての残りのビットがメタデータのため使用されるかを)判別する。
デコーディングされ得る補助ビットがない場合、ステップS1330でメモリートランザクションは(図3のメモリーモジュール115又は図4のメモリーコントローラー125の中のいずれかの一つにより)図8及び図10のデータ及び第1結果810を用いて遂行される。
デコーディングされ得る補助ビットがある場合、ステップS1335で補助ビット数を使用するのに二次的なデコーダ(第2デコーダ)が選択される。
ステップ1335は、点線1340で示すように選択的である。
例えば、図8及び図10のコーディングメカニズム315が、図8及び図10のコーディングメカニズム315の任意の一つの“レベル”で選択可能な1個だけのデコーダを示し、他の具現として図8及び図10のコーディングメカニズム315の任意のレベルで複数のデコーダを提供できる。
よって、デコーダは選択される必要がある。
任意の基準によりデコーダが選択され得る。
例えば、デコーディングのため使用可能なビットを最大限使用するデコーダ、又は特定のタイプのデコーディングを提供するデコーダなどを選択することができる。
デコーダが選択されれば、ステップS1345で、二次的なデコーディングは選択されたデコーダを利用して遂行する。
次に、ステップS1350で、図8及び図10のコーディングメカニズム315は、デコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
デコーディングされ得る任意の残りの補助ビットがある場合、ステップS1355で(ステップS1335、S1345を必須的に反復して)追加デコーディングを遂行する。
デコーディングされ得る任意の残りの補助ビットがない場合、ステップS1330に進み、メモリートランザクションのデータ及び結果が使用される。
図14は、本発明の実施形態によるエラー検出及び訂正を支援するためコードを利用する例示的な手順を説明するためのフローチャートである。
図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)は強いコーディング(反復して、エラー検出及びエラー訂正の中の一つ)を遂行するのに使用される。
図12の(a)〜図14で、本発明のいくつかの実施形態を示した。
しかし、当業者はステップの順序を変更することで、ステップを省略することで、又は図に示さないリンク(link)を含むことで、本発明の他の実施形態も可能であることを認識するはずである。
フローチャートのこういう変形の全ては、明示的に記載されているか否かにかかわらず、発明概念の実施形態とみなされる。
以下の説明は、本発明の一部の側面が具現され得る適切な1つまたは複数のマシンの簡単で一般的な説明を提供することを意図する。
1つのマシン又は複数のマシンは、少なくとも一部は他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなくキーボード、マウスなどのような従来の入力装置からの入力により制御することができる。
本明細書で使用するように、“マシン”の用語は単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン、又はいっしょに動作する装置と通信するように連結されたシステムを広く含むことで意図する。
例示的なマシンは、例えば、自動車、電車、タクシーなどのような個人用又は公共輸送のような輸送装置だけではなくPC(Personal Computer)、ワークステーション、サーバ、ポータブルコンピュータ(portable computer)、ハンドヘルド(handheld)装置、電話、タブレット(tablet)などのようなコンピューティング装置を包含する。
1つのマシン又は複数のマシンは、プログラム可能な又はプログラム不可能な論理装置又はアレイ、ASIC(Application Specfic Intergrated Circuit)、エンベデッド(embedded)コンピュータ、スマートカードなどのようなエンベデッドコントローラーを含むことができる。
1つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信接続を介して一つ又は一つ以上の遠隔マシンに対する一つ以上の接続を使用できる。
マシンは、イントラネット(intranet)、インターネット、LAN(Local Area Network) WAN(Wide Area Network)などのような物理的及び/又は論理的ネットワークの手段で繋がり合うことができる。
当業者は、ネットワーク通信が多様な有線及び/又は無線の近距離又は遠距離キャリア(carrier)及び無線周波数(RF)、衛星、マイクロ波、IEEE802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルの利用を理解するであろう。
本発明の実施形態は、マシンによりアクセスされる際にマシンが作業を遂行するか、又は抽象的な類型のデータ又は下位レベルのハードウェアコンテキスト(context)の定義を惹起する関数、手順、データ構造、アプリケーションプログラムなどを含む関連されたデータを参照して、又は協力して説明され得る。
関連するデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリー、又は他のストレージ装置、そしてハードドライブ、フロッピー(登録商標)ディスク、光学保存、テープ、フラッシュメモリー、メモリースティック(登録商標)、デジタルビデオディスク、生体保存などを含む関連する保存媒体に保存することができる。
関連するデータは、物理的及び/又は論理的ネットワークを含む伝送環境を経てパケット、直列データ、並列データ、電波信号などの形態に伝達され、圧縮された又は暗号化されたフォーマットを使用することができる。
関連するデータは、分散環境において使用することができ、マシンアクセスのため地域的に及び/又は遠隔で保存され得る。
本発明の実施形態は、一つ又はそれ以上のプロセッサにより実行可能な命令を含む非一時的なマシン読み出しの可能な媒体を含むことができ、命令は本明細書で説明したように本発明の要素を遂行する命令を含む。
本発明の実施形態は、制限なし次のステータスに拡張することができる。
ステータス1.本発明の実施形態は、ハードウェアで具現されたコーディングメカニズムを含み、コーディングメカニズムは、データに対する基本ビット数を含む第1コードを生成する第1エンコーダと、データに対する補助ビット数を含む第2コードを生成する第2エンコーダと、モードレジスタに対するストレージと、第2エンコーダが使用されるかの可否を制御するようにモードレジスタに応答するスイッチと、を有し、第1エンコーダは第1コードを生成するのに常に使用され、そして第2エンコーダを生成するのに選択的に使用され、第2コードは第1コードと共に第1コード単独よりさらに強いエンコーディングを提供する。
ステータス2.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーモジュール内で具現される。
ステータス3.本発明の実施形態は、ステータス2に従うコーディングメカニズムを含むが、メモリーモジュールはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス4.本発明の実施形態は、ステータス3に従うコーディングメカニズムを含むが、コーディングメカニズムはNVDIMM−Pプロトコルを用いて通信する。
ステータス5.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
ステータス6.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムは補助ビット数を利用してデータに対する第3コードを生成する第3エンコーダをさらに含み、スイッチは、モードレジスタに応答して第2エンコーダを使用するか、第3エンコーダを使用するか、又は第2エンコーダと第3エンコーダを全部使用しないものから選択するように作動する。
ステータス7.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、コーディングメカニズムは第2補助ビット数を利用してデータに対する第3コードを生成する第3エンコーダをさらに含み、スイッチは、モードレジスタに応答して第2エンコーダを使用するか、第2エンコーダ及び第3エンコーダの全てを使用するか、又は第2エンコーダと第3エンコーダを全部使用しないものから選択するように作動する。
ステータス8.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが第2エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス9.本発明の実施形態は、ステータス8に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが補助ビット数が「0」より大きいか否かに応答する第2エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス10.本発明の実施形態は、ステータス1に従うコーディングメカニズムを含むが、第1エンコーダ及び第2エンコーダは部分的なハードウェア具現を共有する。
ステータス11.本発明の実施形態は、ハードウェアで具現されたコーディングメカニズムを含み、コーディングメカニズムは、データ及び基本ビット数を含む第1コードに対する第1結果を生成する第1デコーダと、データ及び補助ビット数を含む第2コードに対する第2結果を生成する第2デコーダと、モードレジスタに対するストレージと、第2デコーダが使用されるか否かを制御するようにモードレジスタに応答するスイッチを含むが、第1デコーダは第1結果を生成するのに常に使用され、第2デコーダは第2結果を生成するのに選択的に使用され、第2結果は、第1結果と共に第1結果の単独よりさらに強いデコーディングを提供する。
ステータス12.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、第2デコーダはデータ、第1コード、及び第2コードに対応する第2結果を生成するように作動する。
ステータス13.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーモジュール内で具現される。
ステータス14.本発明の実施形態は、ステータス13に従うコーディングメカニズムを含むが、メモリーモジュールはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス15.本発明の実施形態は、ステータス14に従うコーディングメカニズムを含むが、コディングメカニズムはNVDIMM−Pプロトコルを用いて通信する。
ステータス16.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
ステータス17.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムは補助ビット数を用いてデータ及び少なくても第3コードに対する第3結果を生成する第3デコーダをさらに含み、スイッチは、モードレジスタに応答して第2デコーダを使用するか、第3デコーダを使用するか、又は第2デコーダと第3デコーダを全部使用しないものから選択するように作動する。
ステータス18.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、コーディングメカニズムは第2補助ビット数を用いてデータ及び少なくても第3コードに対する第3結果を生成する第3デコーダをさらに含み、スイッチは、モードレジスタに応答して第2デコーダを使用するか、第2デコーダ及び第3デコーダを全部使用するか、又は第2デコーダと第3デコーダを全部使用しないものから選択するように作動する。
ステータス19.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、モードレジスタはスイッチが第2デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス20.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、モードレジスタはスイッチが補助ビット数が「0」より大きいか否かに応答する第2デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス21.本発明の実施形態は、ステータス11に従うコーディングメカニズムを含むが、第1デコーダ及び第2デコーダは部分的なハードウェア具現を共有する。
ステータス22.本発明の実施形態はコーディングメカニズム方法を含み、メモリートランザクションに対するデータを受信するステップと、メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビットの個数を判別するステップと、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップと、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを有する。
ステータス23.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップを含む。
ステータス24.本発明の実施形態は、ステータス23に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含む。
ステータス25.本発明の実施形態は、ステータス24に従うコーディングメカニズム方法を含み、第2コードは第1コードと共に第1コードの単独よりさらに強いエラー管理コーディングを提供する。
ステータス26.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップを含む。
ステータス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コードを受信するステップを含む。
ステータス31.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、コーディングメカニズム方法はDIMM(Dual In−Line Memory Module)及びメモリーコントローラの中の一つにより遂行される。
ステータス32.本発明の実施形態は、ステータス31に従うコーディングメカニズム方法を含み、DIMMはNVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス33.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数が「0」より大きいと補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス34.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内のエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内のエラー訂正を支援するステップを含む。
ステータス35.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
ステータス36.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー訂正を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー訂正を支援するステップを含む。
ステータス37.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、少なくても第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス38.本発明の実施形態は、ステータス37に従うコーディングメカニズム方法を含み、少なくとも、第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス39.本発明の実施形態は、ステータス38に従うコーディングメカニズム方法を含み、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス40.本発明の実施形態は、マシンにより遂行される保存された命令語を含む非一時的ストレージ媒体を含む物品(article、或いは装置)を有し、命令語がマシンによって遂行されると、メモリートランザクションに対するデータを受信するステップと、メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビットの個数を判別するステップと、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップと、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを行う。
ステータス41.本発明の実施形態は、ステータス22に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップを含む。
ステータス42.本発明の実施形態は、ステータス41に従う物品を含み、基本ビット数に基づいてデータに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、補助ビット数に基づいてデータに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含む。
ステータス43.本発明の実施形態は、ステータス42に従う物品を含み、第2コードは第1コードと共に第1コードの単独よりさらに強いエラー管理コーディングを提供する。
ステータス44.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第1デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第2デコーディングを遂行するステップを含む。
ステータス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コードを受信するステップを含む。
ステータス49.本発明の実施形態は、ステータス40に従う物品を含み、コーディングメカニズム方法は、DIMM(Dual In−Line Memory Module)及びメモリーコントローラの中の一つにより遂行される。
ステータス50.本発明の実施形態は、ステータス49に含む物品を含み、DIMMは、NVDIMM(Non−Volatile Dual In−Line Memory Module)を含む。
ステータス51.本発明の実施形態は、ステータス40に従う物品を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、補助ビット数が「0」より大きいと補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス52.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内のエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内のエラー訂正を支援するステップを含む。
ステータス53.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
ステータス54.本発明の実施形態は、ステータス40に従う物品を含み、基本ビット数に基づいてデータに対する第1エラー管理コーディングを遂行するステップは、データ内の弱いエラー訂正を支援するステップを含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、データ内の強いエラー訂正を支援するステップを含む。
ステータス55.本発明の実施形態は、ステータス40に従う物品を含み、補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、少なくても第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップを含む。
ステータス56.本発明の実施形態は、ステータス55に従う物品を含み、少なくとも第2エラー管理コーディング及び第3エラー管理コーディングから補助ビット数に基づいてデータに対する第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
ステータス57.本発明の実施形態は、ステータス56に従う物品を含み、第2補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第3エラー管理コーディングを遂行するステップを含む。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
本発明に係るコーディングメカニズム及びその方法は、DDRチャンネルを介してDIMMでのモーフィングECCエンコーダ及びデコーダを包含するコーディングメカニズムを有するすべての電子装置に好適に使用される。
105 マシン
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)

  1. ハードウェアで実行されるコーディングメカニズムであって、
    データに対する基本ビット数(base number of bits)を含む第1コードを生成する第1エンコーダと、
    前記データに対する補助ビット数(supplementary number of bits)を含む第2コードを生成する第2エンコーダと、
    モードレジスタ(mode register)に対するストレージと、
    前記第2エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
    前記第1エンコーダは前記第1コードを生成するのに常に使用され、前記第2エンコーダは前記第2コードを生成するのに選択的に使用され、
    前記第2コードは前記第1コードと共に前記第1コード単独よりさらに強いエンコーディングを提供することを特徴とするコーディングメカニズム。
  2. 前記モードレジスタは、前記スイッチが前記第2エンコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項1に記載のコーディングメカニズム。
  3. 前記モードレジスタは、前記スイッチが前記補助ビット数が「0」より大きいか否かに応答する前記第2エンコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項2に記載のコーディングメカニズム。
  4. 前記第1エンコーダ及び前記第2エンコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項1に記載のコーディングメカニズム。
  5. ハードウェアで実行されるコーディングメカニズムであって、
    データ及び基本ビット数を含む第1コードに対する第1結果を生成する第1デコーダと、
    前記データ及び補助ビット数を含む少なくとも第2コードに対する第2結果を生成する第2デコーダと、
    モードレジスタに対するストレージと、
    前記第2デコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
    前記第1デコーダは前記第1結果を生成するのに常に使用され、前記第2デコーダは前記第2結果を生成するのに選択的に使用され、
    前記第2結果は前記第1結果と共に前記第1結果単独よりさらに強いデコーディングを提供することを特徴とするコーディングメカニズム。
  6. 前記第2デコーダは、前記データ、前記第1コード、及び前記第2コードに応答する第2結果を生成するように作動することを特徴とする請求項5に記載のコーディングメカニズム。
  7. 前記モードレジスタは、前記スイッチが前記第2デコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項5に記載のコーディングメカニズム。
  8. 前記モードレジスタは、前記スイッチが前記補助ビット数が「0」より大きいか否かに応答する前記第2デコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項7に記載のコーディングメカニズム。
  9. 前記第1デコーダ及び前記第2デコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項5に記載のコーディングメカニズム。
  10. メモリートランザクションに対するデータを受信するステップと、
    前記メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビット数を判定(determining)するステップと、
    前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップと、
    前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップと、を有することを特徴とするコーディングメカニズム方法。
  11. 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第1エンコーディングを遂行するステップを含み、
    前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第2エンコーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
  12. 前記基本ビット数に基づいて前記データに対する第1エンコーディングを遂行するステップは、第1コードを生成するステップを含み、
    前記補助ビット数に基づいて前記データに対する第2エンコーディングを遂行するステップは、第2コードを生成するステップを含むことを特徴とする請求項11に記載のコーディングメカニズム方法。
  13. 前記第2コードは、前記第1コードと共に前記第1コード単独よりさらに強いエラー管理を提供することを特徴とする請求項12に記載のコーディングメカニズム方法。
  14. 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第1デコーディングを遂行するステップを含み、
    前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第2デコーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
  15. 前記基本ビット数に基づいて前記データに対する第1デコーディングを遂行するステップは、前記基本ビット数に基づいて前記データ及び第1コードに対応する第1デコーディングを遂行するステップを含み、
    前記補助ビット数に基づいて前記データに対する第2デコーディングを遂行するステップは、前記データ及び少なくとも第2コードに対応する第2デコーディングを遂行するステップを含むことを特徴とする請求項14に記載のコーディングメカニズム方法。
  16. 前記データ及び少なくとも第2コードに対応する第2デコーディングを遂行するステップは、前記データ、前記第1コード、及び前記第2コードに対応して第2デコーディングを遂行するステップを含むことを特徴とする請求項15に記載のコーディングメカニズム方法。
  17. 前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記補助ビット数が「0」より大きい場合、前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
  18. 前記基本ビット数に基づいて前記データに対する第1エラー管理コーディングを遂行するステップは、前記データ内のエラー検出を支援するステップを含み、
    前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、前記データ内のエラー訂正を支援するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
  19. 前記補助ビット数に基づいて前記データに対する第2エラー管理コーディングを遂行するステップは、少なくとも前記第2エラー管理コーディング及び第3エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップを含むことを特徴とする請求項10に記載のコーディングメカニズム方法。
  20. 少なくとも前記第2エラー管理コーディング及び第3エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第2エラー管理コーディングを遂行するステップは、第2補助ビット数に基づいて前記データに対する前記第3エラー管理コーディングを遂行するステップを含むことを特徴とする請求項19に記載のコーディングメカニズム方法。
JP2018087282A 2017-05-08 2018-04-27 コーディングメカニズム及びその方法 Active JP7231989B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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