JP2024502933A - メモリデバイスにおけるデータ保護のための方法及び装置 - Google Patents
メモリデバイスにおけるデータ保護のための方法及び装置 Download PDFInfo
- Publication number
- JP2024502933A JP2024502933A JP2023534103A JP2023534103A JP2024502933A JP 2024502933 A JP2024502933 A JP 2024502933A JP 2023534103 A JP2023534103 A JP 2023534103A JP 2023534103 A JP2023534103 A JP 2023534103A JP 2024502933 A JP2024502933 A JP 2024502933A
- Authority
- JP
- Japan
- Prior art keywords
- data block
- data
- size
- error correction
- block
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012937 correction Methods 0.000 claims abstract description 99
- 238000010586 diagram Methods 0.000 abstract description 12
- 230000015654 memory Effects 0.000 description 25
- 230000005540 biological transmission Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 8
- 239000002184 metal Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012804 iterative process Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003071 parasitic effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005672 electromagnetic field Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000011810 insulating material Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
データを効率的に伝送するための装置及び方法が記載される。送信機は、受信機にデータを送信する。送信機のエンコーダは、受信された第1のデータブロックを複数のサブブロックに分割する。エンコーダは、互いに比較する各サブブロックの一部を選択する。特定のサブブロック内の一部は、他のサブブロックの他の部分と同じオフセット及び同じサイズを有する。エンコーダが、複数の部分が互いに一致すると判定した場合、エンコーダは、第1のデータブロックに対応する第2のデータブロックを受信機に送信する。第2のデータブロックは、受信された第1のデータブロックのサイズと同じサイズを有し、第2のデータブロックは、複数のエラー訂正スキームのうち何れかのセキュリティデータを含む。したがって、第2のデータブロックは、伝送されるデータの量を増加させることなくセキュリティを提供する。【選択図】図5
Description
本発明は、米国エネルギー省によって授与されたLawrence Livermore National Security(元請契約番号DE-AC52-07NA27344、下請契約番号B620717)によるPathForward Projectの下で政府の支援を受けてなされた。政府は、本発明において一定の権利を有する。
(関連技術の説明)
半導体チップ内の機能ブロック間で情報を転送する場合、複数の平行な金属トレース上で電気信号が送信される。送信機は、平行な金属トレースにわたって電気信号を送信する。受信機は、電気信号を受信する。金属トレースは、その長さ全体にわたって分布インダクタンス、キャパシタンス及び抵抗等の伝送線の影響を与える。現代の集積回路では、相互接続キャパシタンスは、半導体デバイスのゲートキャパシタンスよりもシグナルインテグリティ及び信号転送速度を低減させる。単位長さ当たりの相互接続キャパシタンスは、側壁フリンジキャパシタンス(sidewall fringing capacitance)及びクロスカップリングキャパシタンス(cross-coupling capacitance)の両方を含む。例えば、信号を伝導する金属トレースのための電磁場及び接地平面上のリターン電流は、隣接する金属トレース及び隣接するデバイス上に電気的干渉を生成する。電力消費及び短チャネル効果を低減するために動作電圧が減少し続けるにつれて、ブール論理に使用される信号スイング(signal swing)は、ノイズマージンと同様に減少する。
半導体チップ内の機能ブロック間で情報を転送する場合、複数の平行な金属トレース上で電気信号が送信される。送信機は、平行な金属トレースにわたって電気信号を送信する。受信機は、電気信号を受信する。金属トレースは、その長さ全体にわたって分布インダクタンス、キャパシタンス及び抵抗等の伝送線の影響を与える。現代の集積回路では、相互接続キャパシタンスは、半導体デバイスのゲートキャパシタンスよりもシグナルインテグリティ及び信号転送速度を低減させる。単位長さ当たりの相互接続キャパシタンスは、側壁フリンジキャパシタンス(sidewall fringing capacitance)及びクロスカップリングキャパシタンス(cross-coupling capacitance)の両方を含む。例えば、信号を伝導する金属トレースのための電磁場及び接地平面上のリターン電流は、隣接する金属トレース及び隣接するデバイス上に電気的干渉を生成する。電力消費及び短チャネル効果を低減するために動作電圧が減少し続けるにつれて、ブール論理に使用される信号スイング(signal swing)は、ノイズマージンと同様に減少する。
ある供給ピンがバス上の全てのラインバッファに供給した場合、ワイドバスの同時切り換えによって著しい電圧降下が生じ得る。寄生インダクタンスによって、リンギング及び伝搬遅延の低減等のように、チップに対する伝送線の影響が増加する。結果として生じる電圧降下は、式L di/dtに比例する。ここで、Lは寄生インダクタンスであり、di/dtは電流消費量の時間変化率である。現在、ロジックハイ値を保つノードでは、その電圧値を最小閾値未満に低減させる電圧降下を経験する場合がある。回復回路を伴わないメモリ及びラッチの場合には、記憶値が失われ得る。非ゼロ抵抗ワイヤを通って流れる電源電流によってもIR(電流‐抵抗)電圧降下が生じ、これは重要な経路におけるデータ保持破損及びタイミング障害の一因となる。
上記を考慮して、データを効率的に伝送するための方法及び機構が所望される。
本発明は、様々な修正及び代替形態の余地があるが、具体的な実施形態が例として図面に示されており、本明細書で詳細に説明される。しかしながら、図面及びその詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内に入る全ての修正、均等物及び代替物を包含するものであることを理解されたい。
以下の説明では、本発明の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに本発明が実施され得ることを認識するべきである。いくつかの例では、本発明を不明瞭にすることを避けるために、周知の回路、構造及び技術が詳細に示されていない。更に、説明の簡略化及び明確化のために、図に示される要素は、必ずしも縮尺どおりに描画されていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている。
データを効率的に伝送するためのシステム及び方法が企図される。様々な実施形態では、コンピューティングシステムは、受信機にデータを送信する送信機を含む。送信機及び受信機は、様々なアプリケーションを処理するために使用される様々な機能ブロック間の通信バス上で使用される構成要素である。いくつかの例では、通信バスは、メモリコントローラとメモリデバイスとの間に位置する。他の例では、通信バスは、同じダイ上に位置する処理ユニット間に位置するか、システムオンチップ(system on a chip、SoC)パッケージ内の個別のダイ上に位置するか、又は、マザーボード上の個別のチップ上に位置する。送信機は、少なくとも制御ユニット及びエラー訂正ユニットを有するエンコーダを含む。エラー訂正ユニットは、複数のエラー訂正スキームのうち何れかを選択することができる。エラー訂正スキームは、伝送されるデータに対応するセキュリティデータを生成する。このセキュリティデータは、単に受信されたペイロードデータ内のエラーを検出するのではなく、受信されたペイロードデータ内の任意のエラーを識別及び訂正するために使用される。いくつかの実施形態では、エラー訂正スキームはエラーコード訂正(error code correction、ECC)スキームであり、セキュリティデータはエラー訂正コードである。ECCスキームの例は、ハミングコードスキーム、バイナリ畳み込みコードスキーム、リードソロモンコードスキーム及び低密度パリティ検査コードスキームである。
送信機のエンコーダは、伝送される第1のデータブロックを受信する。この第1のデータブロックは、受信機に送信されるペイロードデータに加えて、任意のパケットヘッダ及び他のメタデータを含む。エンコーダは、受信した第1のデータブロックを複数のサブデータブロックに分割する。その後、エンコーダは、互いに比較する各サブブロックの一部を選択する。様々な実施形態では、特定のサブブロック内の選択された部分は、他のサブブロックの他の部分と同じオフセット及び同じサイズを有する。比較した後、エンコーダが、複数のサブブロックの複数の部分が互いに一致すると判定した場合、エンコーダは、第1のデータブロックに対応する第2のデータブロックを受信機に送信する。第2のデータブロックは、受信された第1のデータブロックのサイズと同じサイズを有し、第2のデータブロックは、複数のエラー訂正スキームのうち何れかのセキュリティデータを含む。追加的に、第2のデータブロックは、第1のデータブロックと同じ数のサブブロックを含む。したがって、第2のデータブロックは、伝送されるデータの量を増加させることなくセキュリティを提供する。第2のデータブロックを生成するためのステップは、以下の説明において更に説明される。
図1を見ると、コンピューティングシステム100の一実施形態の一般化したブロック図が示されている。図示されているように、通信バス100は、情報を電気信号として送信することができる送信機(伝送機)110と、電気信号を転送するための伝送線140~142と、信号を受信することができる受信機150と、を含む。伝送線140~142の数は任意の数とすることができ、その数は設計要件に基づく。説明を容易にするために図示されていないが、送信機110及び受信機150の各々は、それぞれ電気信号を駆動するための及び電気信号を受信するための伝送線140~142の各々のための回路構成を含む。例えば、トランジスタのような能動デバイスと、抵抗器、コンデンサ及びインダクタのような受動デバイスと、の両方が、伝送線140~142の何れかの端部で使用される。この回路構成は、受信機150のための終端及びサンプリング能力を提供し、この回路構成は、特定の通信プロトコルをサポートする。この通信プロトコルは、クロックサイクル当たりのデータ転送の数、信号電圧レベル、信号タイミング、信号及びクロック位相、並びに、クロック周波数等のように、情報転送のために使用される値を判定する。
「バス」という用語は、「チャネル」と称されることもあり、各「伝送線」は、「レーン」又は「トレース」又は「ワイヤ」であることに留意されたい。様々な実施形態では、伝送線140~142は、半導体製造中に様々な好適な金属源から構築され、様々な任意の好適な絶縁材料によって囲まれる。「ピン」、「ポート」、「端子」及び「ノード」という用語は、本明細書では互換的に使用されることにも留意されたい。設計に応じて、伝送線140~142は、メモリコントローラとメモリデバイスとの間、同じダイ上に位置する処理ユニット間、システムオンチップ(SoC)パッケージ上のシステム内の個別のダイ上に位置する処理ユニット間、マザーボード上の個別のチップ上に位置する処理ユニット間、又は、通信ファブリック内のクラスタ間に配置される。伝送線140~142の他の設計及び配置が可能であり、企図される。1つの送信機110及び1つの受信機150が示されているが、他の実施形態では、任意の数のこれらの構成要素、並びに、送信機110及び受信機150内の任意の数のサブ構成要素が使用される。
送信機110は、インターフェース120を介して伝送線140~142上で送信されるデータを受信し、キュー122~124のうち何れかにデータを記憶する。いくつかの実施形態では、インターフェース120は、データのソース、データに関連付けられた要求又はコマンドのタイプ、データの優先度レベル等の基準に基づいて、受信したデータを記憶するためのキュー122~124のうち何れかを選択する。アービトレータ126は、キュー122~124から取り出してエンコーダ130に送信されるデータを選択する回路構成を含む。アービトレータ126は、優先度レベル、サービス品質(quality of service、QoS)パラメータ、データの経過時間、データのソース、ラウンドロビン選択スキーム等の様々な要因に基づいて、キュー122~124からデータを選択する。
エンコーダ130は、少なくとも制御ユニット132と、エラー訂正ユニット134と、を有する。いくつかの実施形態では、エラー訂正ユニット134は、伝送されたデータ内のエラーを検出すること、及び、伝送されたデータ内の1つ以上のエラーを訂正することの両方のために使用される様々なエラー訂正スキームを実行するための回路構成を含む。エラー訂正スキームの例は、ハミングコードスキーム、バイナリ畳み込みコードスキーム、リードソロモンコードスキーム、及び、低密度パリティ検査コードスキームである。他の実施形態では、エラー訂正ユニット134は、利用可能なエラー訂正スキームの指標を記憶するためのテーブル又は他のメモリを使用し、複数の利用可能なエラー訂正スキームのうち選択されたスキームの指標及び保護されるデータのコピーとともにコマンドを外部ユニットに送信する。後に、エラー訂正ユニット134は、結果を受信し、その結果が、伝送線140~142にわたってデータを送信するために使用される。
制御ユニット132は、受信したデータブロックと同じサイズを有し、セキュリティデータも含む、受信したデータブロックに対応する出力データブロックを送信しようと試みる。これを行うために、制御ユニット132は、受信したデータブロックを複数のサブデータブロックに分割する。一例では、第1のデータブロックは64バイトを含み、送信機のエンコーダは、この64バイトの第1のデータブロックを8つの8バイトサブブロックに分割する。一実施形態では、エンコーダは、比較する部分としてサブブロックの最上位バイトを選択する。この場合、各部分について、オフセットが対応するサブブロック内で0であり、サイズが1バイトである。制御ユニット132が、8つのサブブロックの8つの1バイト部分が互いに一致すると判定した場合、エンコーダは、送信されるセキュリティデータの量を判定する。そうするために、制御ユニット132は、伝送線140~142上で送信される出力データブロック内にその部分の1つ以上のコピーを含めることを防止する。例えば、制御ユニット132は、セキュリティデータを記憶するための8バイトサブブロック当たり57ビット((64バイト-7バイト)/8サブブロック)を提供する、出力データブロック内に部分のコピーのうち7つを含むことを防止する。
エンコーダ130は、8バイトサブブロック当たり57ビットと、利用可能なエラー訂正スキームのうち何れかの入力データサイズとの一致に基づいて、利用可能なエラー訂正スキームのうち何れかを選択する。一実施形態では、エンコーダは、選択されたエラー訂正スキームとしてハミングコード(64、57、7)スキームを選択する。ハミングコードスキームの第1のパラメータは、セキュリティデータに加えて元のデータを含む64ビット等のコードワードサイズを含む。ハミングコードスキームの第2のパラメータは、伝送される元のデータを含む57ビット等の入力データサイズを含む。ハミングコードスキームの第3のパラメータは、7ビット等のセキュリティデータのサイズを含む。「セキュリティデータ」、「セキュリティビット」、「補助データ」、「補助ビット」、「冗長データ」、「冗長ビット」という用語は、本明細書では互換的に使用されることに留意されたい。
出力データブロックの各サブブロックについて、エンコーダ130は、セキュリティデータであるハミングコード(64、57、7)スキームに基づいて7つの生成された冗長ビットを生成し、挿入する。したがって、出力データブロックの各サブブロックは、受信した64バイトのデータブロックからの57ビットの元のデータと、ハミングコード(64、57、7)スキームを使用する対応する7つの冗長ビットと、を含む。したがって、出力データブロックの各サブブロックは8バイトのサイズを有する。8つのサブブロックでは、出力データブロックは、64バイト(8つのサブブロック×8バイト/サブブロック)の合計サイズを有する。したがって、出力データブロックは、データ伝送中に発生する1つ以上のビットエラーの検出及び訂正の両方に使用されるセキュリティデータを追加的に記憶しているにもかかわらず、受信したデータブロックと同じサイズを有する。また、エンコーダは、ハミングコード(64、57、7)スキーム等の選択されたエラー訂正スキームを指定する指標を出力データブロックのメタデータに挿入する。
キュー160は、送信機110によって送信されたデータブロックを受信する。受信機150のデコーダ170は、ヘッダ又は他のメタデータの特定のフィールドを検査して、選択されたエラー訂正スキームの指標を検索する。デコーダ170は、受信したデータブロックを検証し、場合によっては訂正するために、指標によって指定されたエラー訂正スキームを使用する。デコーダ170は、サブブロックにわたって不変であるデータの一部分のコピーを取り出すこともできる。例えば、部分がサブブロックの最上位バイトである場合、サブブロックの少なくとも1つは、依然として部分のコピーを含む。デコーダ170は、取り出された部分及び検証された(及び訂正された)データから元のデータブロックを生成する。その後、デコーダ170は、生成されたデータを他の処理回路構成に送信する。制御ユニット132、デコーダ170等のサブ構成要素は、送信機110から受信機150にデータを伝送する上記のステップを実行するために、回路構成等のハードウェアで実装されることに留意されたい。
図2を参照すると、伝送用データ200の一実施形態の一般化したブロック図が示されている。処理回路構成は、データブロック210を生成し、送信機は、データブロック210を受信して、受信機に送信する前に更に処理する。図示した実施形態では、データブロック210が64バイトのサイズを有するが、他のデータサイズも可能であり、企図されている。データブロック210は、いくつかの例ではペイロードデータであり、ペイロードデータに関連付けられたコマンド又はメッセージ又はヘッダは、ペイロードデータとは個別に送信することができることに留意されたい。データブロック210の内容は、16進数で示されている。16進数の各々は、4ビットを表す。他の構成も可能であるが、データブロック210は、左側に位置する最上位バイトを有する。
送信機のエンコーダは、データブロック210を複数のサブブロックに分割する。ここで、データブロック210は、サブブロック212、214、216として示される8つの8バイトサブブロックに分割される。送信機のエンコーダは、2つ以上のサブデータブロック212~216の各々の一部を互いに比較する。一例では、送信機のエンコーダは、比較するサブブロック212~216の各々の最上位バイトを選択する(例えば、部分222、224、..、226)。サブブロック212~216の最上位バイトは、部分220として示されている。この例では、オフセットが、対応するサブブロック内でゼロであり、その部分のサイズが、1バイトである。他の例では、オフセット及びサイズが異なり得る。図示した例に見られるように、これらのバイトの各々は、同じ値3fを有する。
同じデータタイプのデータブロックを使用する特定の作業負荷は、データブロックにわたって類似性を有する傾向があることに留意されたい。例えば、倍精度浮動小数点(Floating Point、FP)作業負荷は、64ビットワード等のデータブロックにわたる高いビット類似性を含む。高い類似性の主な理由は、1つの符号ビットと11個の指数ビットが64ビットワードにわたってわずかに変化することである。したがって、送信機は、受信機に送信される出力データブロック中にデータの部分220のバイトのうち1つ以上を含めることを防止することができる。また、送信機は、元のデータブロック210と同じ64バイトサイズを有する出力データブロックにセキュリティデータを挿入することができる。したがって、信頼性を増加させるためにセキュリティデータを利用するにもかかわらず、電力消費が低減され、伝送されるデータが少なくなる。
図3を参照すると、伝送用データ300の一実施形態の一般化したブロック図が示されている。(図2の)データブロック210と同様に、処理回路構成は、データブロック310及びデータブロック330を生成し、送信機は、データブロック310及び330を受信して、受信機に送信する前に更に処理する。図示した実施形態では、データブロック310及び330が64バイトのサイズを有するが、他のデータサイズも可能であり、企図されている。送信機のエンコーダは、データブロック310及び330を、サブブロック312、314、316、及び、サブブロック332、334、336として示される16個の4バイトサブブロックに分割する。いくつかの実施形態では、送信機のエンコーダは、比較する部分としてサブブロックの最上位バイトを選択する。サブブロック312~316の最上位バイトは、部分320として示されている。同様に、サブブロック332~336の最上位バイトは、部分340として示されている。この場合、サブブロック312~316の左側に位置するバイトは、選択された部分(すなわち、322、324、...、326)である。同様に、サブブロック332~336の左側に位置するバイトは、選択された部分(すなわち、342、344、...、346)である。
データブロック320の各部分及びデータブロック340の各部分は、図2で先に説明したのと同様の方法で選択される。図から分かるように、データブロック310のこれらのバイトの各々は、同じ値0dを有する。同様に、データブロック330のこれらのバイトの各々は、同じ値0dを有する。送信機のエンコーダは、サブデータブロック322~326の2つ以上の部分を互いに比較する。同様に、送信機のエンコーダは、サブデータブロック342~346の2つ以上の部分を互いに比較する。
先に述べたように、同じデータタイプのデータブロックを使用する特定の作業負荷は、データブロックにわたって類似性を有する傾向がある。例えば、単精度浮動小数点作業負荷のための1つの符号ビット及び8つの指数ビットは、データブロック310について示されるように、32ビットワードにわたって不変のままである傾向がある。追加的に、整数作業負荷の最上位バイトは、データブロック330に対して示されるように、32ビットワードにわたって不変のままである傾向がある。データワードにわたる高い類似性は、出力データブロックに類似データの1つ以上のコピーを含めることを防止し、代わりにセキュリティデータを含める機会を提供する。したがって、セキュリティデータを記憶しているにもかかわらず、出力データブロックは、元のデータブロックのデータサイズよりも大きいデータサイズを有しない。したがって、データ伝送に起因する電力消費が低減するが、データ信頼性は増加する。
先に説明したように、データブロック310及び330等のデータは、様々なタイプの構成要素間で通信バスを介して伝送される。いくつかの実施形態では、通信バスは、メモリコントローラとメモリデバイスとの間にあり、メモリデバイスは、高い信頼性に対する要求に起因してエラー訂正スキームをサポートする。メモリデバイスは、様々なダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)等の様々なランダムアクセスメモリ(random access memory、RAM)のうち何れか、NVDIMM-P等の様々な不揮発性(non-volatile、NV)デュアルインラインメモリモジュール(dual in-line memory module、DIMM)のうち何れか、相変化メモリ(phase-change memory、PCM)、強誘電体メモリ(ferroelectric memory、FeRAM)、磁気抵抗メモリ(magnetoresistive memory、MRAM)、抵抗性メモリ(resistive memory、ReRAM又はRRAM)、三次元(three dimensional、3D)クロスポイント(cross-point、XPoint)メモリ等の別のタイプのデータ記憶技術のうち何れか等を含む。メモリデバイスが医療分野、金融分野、科学分野等のためのコンピューティングシステム処理アプリケーションにおいて使用される場合、エラー訂正スキームは、これらのスキームがより多くの電力を消費するにもかかわらず、信頼性を増加させるために使用される。しかし、先に説明したように、セキュリティデータを追加するにもかかわらず、データサイズを増加させることなく、入力データを受信して、出力データを生成して、通信バス上に伝送することができる。追加的に、そのようなステップは、メモリコントローラとメモリデバイスとの間以外の他のインターフェースに対しても実行される。
図4を参照すると、制御ユニット400の一実施形態の一般化したブロック図が示されている。図示した実施形態では、制御ユニット400は、入力データ402を受信し、通信バス上で送信するための出力データ450を生成するデータ変換器440を含む。ハードウェア回路等の回路構成が、データ変換器440を実装するために使用される。データ変換器440は、出力データ450を生成する場合に、テーブル410~420及び外部エラー訂正ユニットからの情報を使用する。テーブル410~420のアクセス回路構成は、説明を容易にするために図示されていない。テーブル410~420は、情報を記憶するために回路構成を使用し、この回路構成は、様々なメモリのうち何れかを実装するために使用される。例えば、回路構成は、ランダムアクセスメモリ、レジスタ、フリップフロップ回路、キュー、コンテンツアドレス指定可能なメモリ(content addressable memory、CAM)等のうち1つ以上を実装する。
テーブル410は、フィールド412~416等の複数のフィールドを使用する。有効ビットを有するステータスフィールド、テーブル410内の行を識別するためのインデックスフィールド、使用される対応するエラー訂正スキームに後でマッピングされる別のインデックスフィールド等のように、図示されていない他のフィールドも可能であり、企図される。フィールド412は、エラー訂正スキームの指標を記憶する。先に説明したように、エラー訂正スキームの例は、ハミングコードスキーム、バイナリ畳み込みコードスキーム、リードソロモンコードスキーム、及び、低密度パリティ検査コードスキームである。これらのスキームのうち1つ以上は、様々なタイプを含む。例えば、サポートされるハミングコードスキームは、ハミングコード(128、120、8)スキーム、ハミングコード(64、57、7)スキーム、ハミングコード(32、26、6)スキーム、及び、ハミングコード(16、11、5)スキームのうち1つ以上を含む。
フィールド414は、利用可能なエラー訂正スキームの入力データサイズを記憶する。例えば、ハミングコード(64、57、7)スキームの入力データサイズは、57ビットである。フィールド416は、対応するエラー訂正スキームの優先度レベルを記憶する。2つ以上の利用可能なエラー訂正スキームが、伝送されるデータのためのセキュリティデータを提供することが可能である場合、制御ユニット400は、最も高い優先度レベルを有するエラー訂正スキームを選択する。場合によっては、優先度レベルは、入力データサイズの増加とともに増加する。他の場合には、優先度レベルは、他の基準に基づいて設定される。
テーブル420は、少なくともフィールド422~430を記憶する。テーブル410と同様に、テーブル420は、テーブル内の有効なエントリ又は行を示す有効ビットを有するステータスフィールド等のように、図示されていない他のフィールドを含むことが可能であり、企図されている。フィールド422は、サブブロックのサポートされるサイズのうち何れかを記憶する。例えば、伝送されるデータブロックが64バイトのサイズを有する場合、データブロックを8つの8バイトサブブロック、16個の4バイトサブブロック等に分割することが可能である。フィールド424は、データブロックに含まれるサブブロックの数を記憶する。フィールド426は、サブブロックの数及びサイズが既知になると、出力データブロックのために使用する再利用データの量を記憶する。これは、出力データブロックに含まれることが防止されるデータの量である。
フィールド428は、出力データブロックに含めることを防止するデータの量が既知になると、出力データブロックに含める元のデータの量を記憶する。例えば、64バイトのサイズを有する受信したデータブロックに対して、制御ユニット400がデータブロックを16個の4バイトサブブロックに分割し、サブブロックの各々におけるデータの最上位1バイト部分が互いに一致すると判定した場合、制御ユニット400は、16個の1バイト部分のうち12個を出力データブロックに含めることを防止する。8つの部分又は15個の部分又は別の数の部分ではなく、12個の部分を防止する判定は、(図6の)方法600において更に説明される。12個の1バイト部分が出力データブロックに含まれることが防止されると、出力データブロックに配置される元の64バイトのデータの量は、52バイトすなわち416ビットである。
フィールド430は、サブブロック当たりの残りのデータのサイズを記憶する。例えば、416ビットを16個のサブブロックで分割すると、受信したデータブロックの元のデータを記憶するために使用するサブブロック当たり26ビットが提供される。サブブロックのサイズは4バイトであり、フィールド422に記憶されるので、サブブロックにセキュリティデータを記憶するための残りの6ビットがある。制御ユニット400は、テーブル420のフィールド430に記憶された情報をテーブル410のフィールド414に記憶された情報と比較して、何れのエラー訂正スキームを選択するかを判定することに留意されたい。
テーブル410は、非デフォルトエラー訂正スキームの情報を記憶することに留意されたい。受信データ402が、サブブロックにわたって一致する部分を有するサブブロックに分割される場合、制御ユニット400は、非デフォルトエラー訂正スキームを使用して出力データ450を生成する。いくつかの実施形態では、出力データ450のサイズは、入力データ402とセキュリティデータとを組み合わせたサイズ以下である。いくつかの実施形態では、制御ユニット400は、非デフォルトエラー訂正スキームを使用して、セキュリティデータを出力データ450内に配置するにもかかわらず、入力データ402と同じサイズを有する出力データ450を生成する。例えば、入力データ402及び出力データ450の各々は、64バイトのサイズを有する。
入力データ402がサブブロックにわたって一致する部分を有さない場合、制御ユニットは、デフォルトエラー訂正スキームを使用して出力データ450を生成し、出力データ450は、セキュリティデータを出力データ402に配置することに起因して、入力データ402よりも大きいサイズを有する。例えば、デフォルトタイプのエラー訂正スキームがハミングコード(72、64、8)スキームであり、入力データ402が64バイトのサイズを有し、8つのサブブロックの各々が8バイト(64ビット)のサイズを有し、サブブロックにわたって一致する部分がない場合、出力データ450のサイズは64バイトより大きくなる。出力データ450は、サブブロック当たり72ビットを有し、入力データ402からの64ビットの元のデータと、ハミングコード(72、64、8)スキームによって生成されたセキュリティデータのための8ビットの冗長ビットと、を有する。サブブロック当たり72ビット及び8つのサブブロックでは、出力データ450の合計サイズは、576ビット、又は、セキュリティデータとして生成された冗長ビットの64ビットを有する64バイトである。
図5を参照すると、データを効率的に伝送するための方法500の一実施形態が示されている。説明のために、この実施形態(及び、図6、図7)におけるステップは、順番に示されている。しかしながら、他の実施形態では、いくつかのステップは、図示した順序とは異なる順序で行われ、いくつかのステップは、同時に実行され、いくつかのステップは、他のステップと組み合わされ、いくつかのステップは、存在しない。
送信機のエンコーダは、受信機に伝送される入力データブロックを受信する(ブロック502)。エンコーダは、受信した入力データブロックに対してある数のサブブロックを選択し(ブロック504)、データブロックを、選択された数のサブブロックに分割する(ブロック506)。エンコーダは、選択された数のサブデータブロックのうち2つ以上のサブブロックの各々の一部分を互いに比較する(ブロック508)。いくつかの実施形態では、部分は、サブブロックの全てから比較のために選択される。選択された部分は、対応するサブブロック内で同じオフセット及びサイズを有する。一例では、エンコーダは、比較のために2つ以上のサブブロックの最上位バイトを選択する。そのような例では、比較する各部分について、オフセットがゼロであり、サイズが1バイトである。しかしながら、他の例では、部分を選択するためのサブブロックの数は、異なる値を有する。同様に、他の例では、部分のオフセット及びサイズは、異なる値を有する。
エンコーダが、比較された部分が互いに一致しないと判定した場合(条件ブロック510の「いいえ」)、及び、エンコーダが、比較されるサブブロックの最後の利用可能な数に達していない場合(条件ブロック512の「いいえ」)、方法500の制御フローはブロック504に戻り、そこで、エンコーダは、受信したデータブロックに対して別の数のサブブロックを選択する。先に述べたように、いくつかの実施形態では、ブロック504~512で実行されるステップは、連続的ではなく同時に実行される。そのような実施形態では、エンコーダは、複数の選択された数のサブブロックについてブロック504~512のステップを同時に実行する。
一例では、エンコーダは、ある数の8つのサブブロックを選択し、同時に別の数の4つのサブブロックを選択する。受信した入力データブロックが64バイトのサイズを有する場合、サブブロックの数の第1の選択に対して8つの8バイトサブブロックがあり、第2の選択に対して16個の4バイトサブブロックがある。したがって、一例では、エンコーダは、8つの8バイトサブブロックの各々の最上位バイトを互いに比較し、同時に、16個の4バイトサブブロックの各々の最上位バイトを互いに比較する。比較は同時に実行されるが、いくつかの設計では、8つのサブブロックの選択は、4つのサブブロックの選択よりも高い優先度を有する。優先度は、8つの8バイトサブブロックの全ての部分について一致が見出され、16個の4バイトサブブロックの全ての部分について一致が見出される場合に使用される。
条件ブロック510に戻ると、エンコーダが、比較された部分が互いに一致しないと判定した場合(条件ブロック510の「いいえ」)、及び、エンコーダが、比較されるサブブロックの最後の利用可能な数に達した場合(条件ブロック512の「はい」)、エンコーダは、データブロックを伝送するためにデフォルトタイプのエラー訂正スキームを使用する(ブロック514)。エンコーダがデフォルトタイプのエラー訂正スキームを使用する場合、セキュリティデータが受信した入力データブロックに追加されて出力データブロックを生成するので、出力データブロックの合計サイズは、受信した入力データブロックのサイズよりも大きい。
エラー訂正スキームの選択は、出力データブロックのサイズに基づく。様々な実施形態では、出力データブロックは、入力データブロックと同じ数のサブブロックに分割される。出力データブロックのサイズ及び出力データブロックのサブブロック当たりのデータサイズは互いに依存しており、それらはエラー訂正スキームを選択するために使用される。エンコーダが、入力データブロックの比較される部分が互いに一致すると判定した場合(条件ブロック510の「はい」)、エンコーダは、出力データブロックのサブブロック当たりのデータサイズを判定する(ブロック516)。
いくつかの実施形態では、ブロック516における出力データブロックのサブブロック当たりのデータサイズを判定することは、(図4の)フィールド426を有するテーブル420等のテーブル又は他のメモリを最初に検索することによって行われる。出力データブロックのサブブロック当たりのデータサイズを判定することにより、再利用データのサイズも判定される。再利用データのサイズの一例は、(図4の)テーブル420のフィールド426である。再利用データのサイズは、中間データブロックを生成するために入力データブロックから除去されるデータの量である。エンコーダは、入力データブロックから、2つ以上の比較された部分のうち互いに一致する1つ以上の部分を除去することによって、この中間データブロックを生成する。その後、エンコーダは、セキュリティデータを中間データブロックに挿入することによって、出力データブロックを生成する。エンコーダは、選択されたエラー訂正スキームを使用して、以下の説明において更に説明されるようにセキュリティデータを生成する。
他の実施形態では、(図4の)テーブル420等のテーブル又はメモリは、そのような情報を未だ記憶していない。したがって、中間データブロックを生成するために入力データブロックから除去される部分のコピーの数を判定するために、反復プロセスが実行される。(図6の)次の方法600のステップは、そのような反復プロセスを説明する。データのデータブロックの中間ブロックを生成するために入力データブロックから除去される部分のコピーの数が(テーブル検索から、又は、前の反復プロセスから)既知になると、ブロック516のステップが実行される。更に他の実施形態では、好ましいエラー訂正スキームが最初に選択され、この好ましいエラー訂正スキームの入力データサイズが、出力データブロックのサブブロック当たりのデータサイズを判定するために使用される。次に、データのデータブロックの中間ブロックを生成するために入力データブロックから除去される部分のコピーの数が判定される。何れのステップに優先度を付けて最初に実行するかの選択は、何れの情報が既に容易に利用可能であるかに基づく。
(図4の)テーブル420のフィールド426を読み取る等のように、データのデータブロックの中間ブロックを生成するために入力データブロックから除去される部分のコピーの数が既知である場合、一例では、受信した入力データブロックは64バイトのサイズを有し、8つの8バイトサブブロックがあり、比較される選択された部分は8つのサブブロックの最上位バイトである。この例では、8つの部分全てが互いに一致し、エンコーダは、データのデータブロックの中間ブロックを生成するために、入力データブロックから8つの部分のうち7つを除去することを判定する。後に、エンコーダは、中間データブロックにセキュリティデータを挿入して、出力データブロックを生成する。したがって、出力データブロックは、受信した入力データブロックの57バイトを含む(64-7=57)。エンコーダは、57バイト、すなわち456ビットを8つのサブブロックに分配する。したがって、出力データブロックの各サブブロックは、受信した64バイトの入力データブロックからの57ビット(456/8=57)の元の入力データを含む。
エンコーダは、判定されたデータサイズを、利用可能なタイプのエラー訂正スキームの入力データサイズと比較する(ブロック518)。上記の例を使用して、エンコーダは、サブブロック当たり57ビットの判定されたデータサイズを、複数の利用可能なタイプのエラー訂正スキームの入力データサイズと比較する。判定されたデータサイズが、利用可能なタイプのエラー訂正スキームの何れのデータサイズとも一致しない場合(条件ブロック520の「いいえ」)、方法500の制御フローはブロック514に移動し、ここで、エンコーダは、データブロックを伝送するためにデフォルトタイプのエラー訂正スキームを使用する(ブロック514)。
判定されたデータサイズが、利用可能なタイプのエラー訂正スキームのデータサイズと一致する場合(条件ブロック520の「はい」)、エンコーダは、データブロックを伝送するために、一致するタイプのエラー訂正スキームを使用する(ブロック522)。例えば、エンコーダは、中間データブロックに挿入するセキュリティデータを生成するために、一致するタイプのエラー訂正スキームを使用する。エンコーダが一致するタイプのエラー訂正スキームを使用する場合、出力ブロックデータの合計サイズは、入力データブロックとセキュリティデータとを組み合わせたサイズ以下である。いくつかの実施形態では、セキュリティデータは、比較される部分の1つ以上のコピーを出力データブロックに含めることを防止することによって利用可能になるデータ記憶空間を消費するので、出力ブロックデータの合計サイズは、受信した入力データブロックのサイズと同じである。
上記の例を続けると、判定された57ビットのデータサイズは、ハミングコード(64、57、7)の57ビットの入力データサイズに一致する。出力データブロックの各サブブロックについて、エンコーダは、セキュリティデータであるハミングコードに基づいて7つの生成された冗長ビットを生成し、挿入する。したがって、出力データブロックの各サブブロックは、受信した64バイトの入力データブロックからの57ビットの元の入力データと、ハミングコード(64、57、7)スキームを使用して生成された対応する7つの冗長ビットと、を含む。したがって、出力データブロックの各サブブロックは8バイトのサイズを有する。8つのサブブロックでは、出力データブロックは、64バイト(8つのサブブロック×8バイト/サブブロック)の合計サイズを有し、これは、受信した入力データブロックと同じサイズである。また、エンコーダは、ハミングコード(64、57、7)スキーム等の一致するエラー訂正スキームを指定する指標を、出力データブロックのメタデータに挿入する。したがって、受信機内のデコーダは、出力データブロックを受信し、少なくともこの指標を使用して、セキュリティデータを有する受信したデータブロックから元のデータブロックを生成することができる。
図6を参照すると、データを効率的に伝送するための方法600の一実施形態が示されている。送信機のエンコーダは、受信機に伝送されるデータブロックを既に受信している。また、エンコーダは、受信したデータブロックをサブブロックに既に分割し、サブブロックにわたって部分を比較している。例えば、エンコーダは、方法500の制御フローを(図5の)ブロック510からブロック516に移動するステップを既に実行している。エンコーダは、データブロックの複数のサブブロックの部分が互いに一致すると判定する(ブロック602)。エンコーダは、整数を選択する(ブロック604)。整数の範囲は、1から、部分の数から1を引いた数までである。例えば、受信したデータブロックが64バイトのサイズを有し、エンコーダがデータブロックを8つの8バイトサブブロックに分割した場合、一例では、8つの部分が存在し、各部分は各サブブロックの最上位バイトである。したがって、選択する整数のセットは1~7の範囲である。エンコーダは、整数の数の部分のコピーを差し引いたデータブロックをサブブロックの数で除算することによって、サブブロックの入力データサイズを計算する(ブロック606)。例えば、データブロックが64バイトのサイズを有し、エンコーダがデータブロックを8つの8バイトサブブロックに分割し、部分がサブブロックの最上位バイトであり、選択された整数が2である場合、エンコーダは、サブブロックの入力データサイズを、64バイトから2バイト(一致部分の2つのコピー)を差し引いたものを8バイトのサブブロックサイズで除算したものであると計算する。この計算では、サブブロックの入力データサイズは、(64バイト-2バイト)/8バイト=7.75となる。7.75等の非整数である入力データサイズを有する利用可能なエラー訂正スキームはない。したがって、エンコーダは、別の整数を選択し、ステップを繰り返す必要がある。
サブブロックの計算されたデータサイズが、利用可能なタイプのエラー訂正スキームの何れの入力データサイズとも一致せず(条件ブロック610の「いいえ」)、エンコーダが最後の整数に達していない(条件ブロック612の「いいえ」)場合、方法600の制御フローは、エンコーダが別の整数を選択するブロック604に戻る。上述したように、選択する整数のセットは、1から、部分の数から1を引いた数までの範囲である。8つの部分がある場合、選択する整数のセットは1~7の範囲である。
サブブロックの計算されたデータサイズが、利用可能なタイプのエラー訂正スキームの何れの入力データサイズとも一致せず(条件ブロック610の「いいえ」)、エンコーダが最後の整数に達している(条件ブロック612の「はい」)場合、エンコーダは、データブロックを伝送するためにデフォルトタイプのエラー訂正スキームを使用する(ブロック614)。エンコーダがデフォルトタイプのエラー訂正スキームを使用する場合、セキュリティデータが受信した入力データブロックに追加されるので、出力データの合計サイズは、受信した入力データブロックのサイズよりも大きい。サブブロックの計算されたデータサイズが、利用可能なタイプのエラー訂正スキームの入力データサイズと一致する場合(条件ブロック610の「はい」)、エンコーダは、データブロックを伝送するために、一致するタイプのエラー訂正スキームを使用する(ブロック616)。エンコーダが一致するタイプのエラー訂正スキームを使用する場合、いくつかの実施形態では、出力データブロックのサイズは、入力データブロックと、セキュリティデータと、を組み合わせたサイズ以下である。いくつかの実施形態では、出力データブロックのサイズは、受信した入力データブロックのサイズと同じである。セキュリティデータは、入力データブロックに見出される部分の1つ以上のコピーを出力データブロックに含めることを防止することによって利用可能になるデータ記憶空間を消費する。
いくつかの実施形態では、方法500及び600のために実行されるステップは、(図4の)テーブル420と同様のテーブルを生成するために使用されることに留意されたい。したがって、方法500及び600の反復ステップは、経時的に連続して実行されない。例えば、テーブル420の第2の行(エントリ)は、一致する部分がサブブロックにわたって見出される場合、12バイトの元のデータが出力データブロックに含まれることを防止されることを示す。64バイトの受信したデータブロックのパラメータ、及び、16個の4バイトサブブロックに分割することについて、フィールド426内の12バイトのサイズは常に真である。したがって、この値が見つかると、この値は、再び再計算されるのではなく、迅速なアクセスのために記憶し、取り出すことができる。したがって、利用可能なエラー訂正スキームが送信機に追加され、送信機から削除されると、テーブルが更新され、記憶された情報の生成が可能になる。
図7を参照すると、データを効率的に伝送するための方法700の一実施形態が示されている。受信機におけるデコーダは、送信機からデータブロックを受信する(ブロック702)。デコーダは、伝送に使用されるエラー訂正スキームのタイプを指定する指標を検査する(ブロック704)。いくつかの実施形態では、指標は、受信したデータブロックのヘッダ又は他のメタデータの特定のフィールドに記憶されたマルチビット値である。マルチビット値は、データブロックを伝送するために使用されるエラー訂正スキームの指定されたタイプを判定するためにデコードされる。
指標がデフォルトタイプのエラー訂正スキームを指定する場合(条件ブロック706の「はい」)、デコーダは、受信したデータブロックを検証するためにデフォルトタイプのエラー訂正スキームを使用する(ブロック708)。そのような場合、セキュリティデータが元のデータブロックのコピーに追加されたので、受信したデータブロックは、元のデータブロックよりも大きなデータサイズを有する。デコード後、結果として得られるデータブロックは、受信したデータブロックよりも小さいサイズを有することになる。例えば、デフォルトタイプのエラー訂正スキームがハミングコード(72、64、8)スキームである場合、元のデータブロックは64バイトのサイズを有し、8つのサブブロックの各々は8バイト(64ビット)のサイズを有する。しかしながら、エンコーダは、64ビットの元のデータ及びセキュリティデータのための8ビットの生成された冗長ビットとともに、サブブロック当たり72ビットを伝送した。サブブロック当たり72ビット及び8つのサブブロックでは、伝送されたデータブロックの合計サイズは、576ビット、又は、セキュリティデータとして生成された冗長ビットの64ビットを有する64バイトである。
指標が非デフォルトタイプのエラー訂正スキームを指定する場合(条件ブロック706の「いいえ」)、デコーダは、受信したデータブロックを検証し、場合によっては訂正するために非デフォルトタイプのエラー訂正スキームを使用する(ブロック710)。そのような場合、セキュリティデータが、比較において使用される部分の1つ以上のコピーを差し引いた元のデータブロックのコピーに追加されたので、受信したデータブロックは、元のデータブロックと同じデータサイズを有する。デコーダは、サブブロックにわたって不変であるデータの一部分のコピーを取り出す(ブロック712)。例えば、部分がサブブロックの最上位バイトである場合、サブブロックの少なくとも1つは、依然として部分のコピーを含む。デコーダは、取り出された部分及び検証されたデータから元のデータブロックを生成する(ブロック714)。
上述した実施形態のうち1つ以上が、ソフトウェアを含むことに留意されたい。そのような実施形態では、方法及び/又は機構を実施するプログラム命令は、コンピュータ可読記憶媒体に伝達又は記憶される。プログラム命令を記憶するように構成されている多数のタイプの媒体が利用可能であり、ハードディスク、フロッピー(登録商標)ディスク、CD-ROM、DVD、フラッシュメモリ、プログラマブルROM(Programmable ROM、PROM)、ランダムアクセスメモリ(RAM)、及び、様々な他の形態の揮発性又は不揮発性記憶装置が挙げられる。一般的に言えば、コンピュータアクセス可能記憶媒体は、命令及び/又はデータをコンピュータに提供するために、使用中にコンピュータによってアクセス可能な任意の記憶媒体を含む。例えば、コンピュータアクセス可能記憶媒体としては、磁気又は光学媒体、例えば、ディスク(固定又は取り外し可能)、テープ、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、又は、Blu-Ray(登録商標)等の記憶媒体が挙げられる。記憶媒体としては、RAM(例えば、同期ダイナミックRAM(synchronous dynamic RAM、SDRAM)、ダブルデータレート(double data rate、DDR、DDR2、DDR3等)SDRAM、低電力DDR(low-power DDR、LPDDR2等)SDRAM、ラムバスDRAM(Rambus DRAM、RDRAM)、スタティックRAM(static RAM、SRAM)等)、ROM、フラッシュメモリ等の揮発性又は不揮発性メモリ媒体、ユニバーサルシリアルバス(Universal Serial Bus、USB)インターフェース等の周辺インターフェースを介してアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)等が更に挙げられる。記憶媒体としては、微小電気機械システム(microelectromechanical system、MEMS)、並びに、ネットワーク及び/又はワイヤレスリンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
追加的に、様々な実施形態では、プログラム命令は、C等の高レベルプログラミング言語、又は、Verilog、VHDL等の設計言語(design language、HDL)、又は、GDSIIストリームフォーマット(GDSII)等のデータベースフォーマットでのハードウェア機能の動作レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述を含む。場合によっては、記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成する合成ツールによって読み出される。ネットリストは、システムを含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために、配置及びルーティングされ得る。次に、マスクは、システムに対応する半導体回路又は回路を生成するために、様々な半導体製造ステップで使用され得る。代替的に、コンピュータアクセス可能記憶媒体上の命令は、必要に応じて、ネットリスト(合成ライブラリを有する若しくは有しない)又はデータセットである。追加的に、命令は、Cadence(登録商標)、EVE(登録商標)及びMentor Graphics(登録商標)等のベンダからのハードウェアベースのタイプのエミュレータによるエミュレーションのために利用される。
上記の実施形態はかなり詳細に説明されているが、上記の開示が十分に理解されると、多数の変形及び修正が当業者には明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
Claims (20)
- 回路であって、
送信される第1のデータブロックを受信するように構成されたインターフェースと、
複数のエラー訂正スキームを実行するように構成されたエラー訂正ユニットと、
回路構成と、を備え、
前記回路構成は、
前記第1のデータブロックを複数のサブデータブロックに分割することと、
前記複数のサブデータブロックのうち2つ以上のサブブロックの各々の一部を互いに比較することと、
前記2つ以上のサブブロックの2つ以上の比較された部分が互いに一致するという判定に少なくとも部分的に基づいて、前記第1のデータブロックに対応する第2のデータブロックを生成することであって、前記第2のデータブロックは、前記複数のエラー訂正スキームのうち何れかに対応するセキュリティデータを含み、前記第1のデータブロックと前記セキュリティデータとを組み合わせたサイズ以下のサイズを有する、ことと、
を行うように構成されている、
回路。 - 前記第2のデータブロックは、前記第1のデータブロックと同じ数のサブブロックを含む、
請求項1の回路。 - 前記複数のエラー訂正スキームのうち何れかは、前記複数のサブブロックのうち何れかのサブブロックのサイズに等しいサイズを有するコードワードを生成する、
請求項1の回路。 - 前記第2のデータブロックは、前記第1のデータブロックと同じサイズを有する、
請求項1の回路。 - 前記回路構成は、
前記第1のデータブロックから、前記2つ以上の比較された部分のうち互いに一致する1つ以上の部分を除去することによって、第3のデータブロックを生成することと、
前記第3のデータブロックのサイズを前記複数のサブブロックの数で除算することによって、所定のサイズを判定することと、
前記所定のサイズが前記複数のエラー訂正スキームのうち所定のエラー訂正スキームのデータ入力サイズに一致するという判定に少なくとも部分的に基づいて、前記所定のエラー訂正スキームを選択することと、
を行うように構成されている、
請求項1の回路。 - 前記回路構成は、
前記複数のエラー訂正スキームのうち所定のエラー訂正スキームを、前記第2のデータブロックのサイズから前記セキュリティデータのサイズを差し引いたサイズに少なくとも部分的に基づいて選択することと、
前記所定のエラー訂正スキームを使用して、前記第2のデータブロックに含まれるセキュリティデータを生成することと、
を行うように構成されている、
請求項1の回路。 - 前記回路構成は、前記所定のエラー訂正スキームを指定する指標を前記第2のデータブロックのメタデータに挿入するように構成されている、
請求項6の回路。 - 前記比較された部分が互いに一致しないという判定に少なくとも部分的に基づいて、前記第1のデータブロックに対応する第3のデータブロックを生成し、前記第3のデータブロックは、前記第1のデータブロックのサイズよりも大きいサイズを有する、
請求項1の回路。 - 方法であって、
インターフェースが、送信される第1のデータブロックを受信することと、
制御ユニットが、前記第1のデータブロックを複数のサブデータブロックに分割することと、
前記制御ユニットが、前記複数のサブデータブロックのうち2つ以上のサブブロックの各々の一部を互いに比較することと、
前記2つ以上のサブブロックの2つ以上の比較された部分が互いに一致すると判定したことに応じて、前記制御ユニットが、前記第1のデータブロックに対応する第2のデータブロックを生成することであって、前記第2のデータブロックは、前記複数のエラー訂正スキームのうち何れかに対応するセキュリティデータを含み、前記第1のデータブロックと前記セキュリティデータとを組み合わせたサイズ以下のサイズを有する、ことと、を含む、
方法。 - 前記第1のデータブロックと同じ数のサブブロックを有する前記第2のデータブロックを生成することを更に含む、
請求項9の方法。 - 前記第1のデータブロックと同じサイズを有する前記第2のデータブロックを生成することを更に含む、
請求項9の方法。 - 前記第1のデータブロックから、前記2つ以上の比較された部分のうち互いに一致する1つ以上の部分を除去することによって、第3のデータブロックを生成することと、
前記第3のデータブロックのサイズを前記複数のサブブロックの数で除算することによって、所定のサイズを判定することと、
前記所定のサイズが前記複数のエラー訂正スキームのうち所定のエラー訂正スキームのデータ入力サイズに一致するという判定に少なくとも部分的に基づいて、前記所定のエラー訂正スキームを選択することと、を更に含む、
請求項9の方法。 - 前記複数のエラー訂正スキームのうち所定のエラー訂正スキームを、前記第2のデータブロックのサイズから前記セキュリティデータのサイズを差し引いたサイズに少なくとも部分的に基づいて選択することと、
前記所定のエラー訂正スキームを使用して、前記第2のデータブロックに含まれるセキュリティデータを生成することと、を更に含む、
請求項9の方法。 - 前記書影のエラー訂正スキームを指定する指標を前記第2のデータブロックのメタデータに挿入することを更に含む、
請求項13の方法。 - 前記比較された部分が互いに一致しないと判定したことに応じて、前記第1のデータブロックに対応する第3のデータブロックを生成することであって、前記第3のデータブロックは、前記第1のデータブロックのサイズよりも大きいサイズを有する、ことを更に含む、
請求項9の方法。 - 装置であって、
データブロックを送信するように構成された複数の送信機と、
データブロックを受信するように構成された複数の受信機と、を備え、
前記複数の送信機のうち1つ以上はエンコーダを備え、
前記エンコーダは、
送信される第1のデータブロックを受信するように構成されたインターフェースと、
複数のエラー訂正スキームを含むエラー訂正ユニットであって、各スキームは、送信されるデータに対応するセキュリティデータを生成するように構成されている、エラー訂正ユニットと、
制御ユニットと、を備え、
前記制御ユニットは、
前記第1のデータブロックを複数のサブデータブロックに分割することと、
前記複数のサブデータブロックのうち2つ以上のサブブロックの各々の一部を互いに比較することと、
前記2つ以上のサブブロックの2つ以上の比較された部分が互いに一致するという判定に少なくとも部分的に基づいて、前記第1のデータブロックに対応する第2のデータブロックを生成することであって、前記第2のデータブロックは、前記複数のエラー訂正スキームのうち何れかに対応するセキュリティデータを含み、前記第1のデータブロックと前記セキュリティデータとを組み合わせたサイズ以下のサイズを有する、ことと、
を行うように構成されている、
装置。 - 前記第2のデータブロックは、前記第1のデータブロックと同じ数のサブブロックを含む、
請求項16の装置。 - 前記第2のデータブロックは、前記第1のデータブロックと同じサイズを有する、
請求項16の装置。 - 前記制御ユニットは、
前記第1のデータブロックから、前記2つ以上の比較された部分のうち互いに一致する1つ以上の部分を除去することによって、第3のデータブロックを生成することと、
前記第3のデータブロックのサイズを前記複数のサブブロックの数で除算することによって、所定のサイズを判定することと、
前記所定のサイズが前記複数のエラー訂正スキームのうち所定のエラー訂正スキームのデータ入力サイズに一致するという判定に少なくとも部分的に基づいて、前記所定のエラー訂正スキームを選択することと、
を行うように構成されている、
請求項16の装置。 - 前記制御ユニットは、
前記複数のエラー訂正スキームのうち所定のエラー訂正スキームを、前記第2のデータブロックのサイズから前記セキュリティデータのサイズを差し引いたサイズに少なくとも部分的に基づいて選択することと、
前記所定のエラー訂正スキームを使用して、前記第2のデータブロックに含まれるセキュリティデータを生成することと、
を行うように構成されている、
請求項16の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/118,434 | 2020-12-10 | ||
US17/118,434 US11663073B2 (en) | 2020-12-10 | 2020-12-10 | Method and apparatus for data protection in memory devices |
PCT/US2021/054446 WO2022125183A1 (en) | 2020-12-10 | 2021-10-11 | Method and apparatus for data protection in memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024502933A true JP2024502933A (ja) | 2024-01-24 |
Family
ID=78725602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023534103A Pending JP2024502933A (ja) | 2020-12-10 | 2021-10-11 | メモリデバイスにおけるデータ保護のための方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11663073B2 (ja) |
EP (1) | EP4260192A1 (ja) |
JP (1) | JP2024502933A (ja) |
KR (1) | KR20230113613A (ja) |
CN (1) | CN116601896A (ja) |
WO (1) | WO2022125183A1 (ja) |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727474A (en) | 1983-02-18 | 1988-02-23 | Loral Corporation | Staging memory for massively parallel processor |
US5263032A (en) | 1991-06-27 | 1993-11-16 | Digital Equipment Corporation | Computer system operation with corrected read data function |
US5390308A (en) | 1992-04-15 | 1995-02-14 | Rambus, Inc. | Method and apparatus for address mapping of dynamic random access memory |
US6137645A (en) * | 1997-09-30 | 2000-10-24 | Victor Company Of Japan, Ltd. | Method and apparatus for encoding and decoding digital data blocks with improved error correction |
FI103070B (fi) | 1997-12-17 | 1999-04-15 | Valmet Corp | Paperikoneen taipumakompensoidun telan säätöventtiiliin liittyvä sulku venttiili |
FI106498B (fi) * | 1999-03-16 | 2001-02-15 | Nokia Mobile Phones Ltd | Menetelmä siirtoikkunan valinnassa ja matkaviestin |
US6438726B1 (en) | 1999-05-18 | 2002-08-20 | Advanced Micro Devices, Inc. | Method of dual use of non-volatile memory for error correction |
US6675344B1 (en) | 2000-05-01 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Multiple ECC schemes to improve bandwidth |
GB0031436D0 (en) | 2000-12-22 | 2001-02-07 | Koninkl Philips Electronics Nv | Method and apparatus for data reproduction |
US6915479B2 (en) | 2001-05-17 | 2005-07-05 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for error correction |
JP4652641B2 (ja) * | 2001-10-11 | 2011-03-16 | ソニー株式会社 | ディスク記録媒体、ディスクドライブ装置、再生方法 |
US7308621B2 (en) | 2002-04-30 | 2007-12-11 | International Business Machines Corporation | Testing of ECC memories |
US7103608B1 (en) * | 2002-05-10 | 2006-09-05 | Oracle International Corporation | Method and mechanism for storing and accessing data |
US7117421B1 (en) | 2002-05-31 | 2006-10-03 | Nvidia Corporation | Transparent error correction code memory system and method |
JP3815562B2 (ja) * | 2002-11-28 | 2006-08-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ処理方法、これを用いた通信システム、そのデータ送信装置、データ受信装置及びプログラム |
JP4220365B2 (ja) * | 2003-12-08 | 2009-02-04 | 株式会社ケンウッド | 送信装置、受信装置、データ送信方法及びデータ受信方法 |
JP4260688B2 (ja) * | 2004-06-09 | 2009-04-30 | 富士通株式会社 | データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法 |
US6965537B1 (en) | 2004-08-31 | 2005-11-15 | Micron Technology, Inc. | Memory system and method using ECC to achieve low power refresh |
JP4634157B2 (ja) * | 2005-01-17 | 2011-02-16 | 株式会社日立製作所 | ストレージシステム |
TWI277869B (en) | 2005-08-23 | 2007-04-01 | Via Tech Inc | Architecture and method for storing data |
JP2008108297A (ja) | 2006-10-23 | 2008-05-08 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR101455393B1 (ko) * | 2008-03-03 | 2014-10-27 | 삼성전자주식회사 | 무선 통신 시스템에서 제어 정보를 송수신하는 방법 및 장치 |
US8306136B2 (en) * | 2009-10-22 | 2012-11-06 | Thales Canada Inc. | Communications system utilizing orthogonal linear frequency modulated waveforms |
US10298957B2 (en) | 2010-10-06 | 2019-05-21 | International Business Machines Corporation | Content-based encoding in a multiple routing path communications system |
GB2477607B (en) * | 2011-01-17 | 2011-12-28 | Quantum Corp | Sampling based data de-duplication |
KR20130094160A (ko) * | 2012-01-20 | 2013-08-23 | 삼성전자주식회사 | 스트리밍 서비스를 제공하는 방법 및 장치 |
US9021330B2 (en) | 2012-05-15 | 2015-04-28 | Alcatel Lucent | System and method for multi-channel FEC encoding and transmission of data |
US10007428B2 (en) * | 2013-08-16 | 2018-06-26 | Micron Technology, Inc. | Data storage management |
KR101757307B1 (ko) * | 2013-08-20 | 2017-07-26 | 엘지전자 주식회사 | 스트리밍 서비스를 통한 미디어 데이터 전송 장치, 스트리밍 서비스를 통한 미디어 데이터 수신 장치, 스트리밍 서비스를 통한 미디어 데이터 전송 방법, 및 스트리밍 서비스를 통한 미디어 데이터 수신 방법 |
US20160261375A1 (en) | 2015-03-04 | 2016-09-08 | Qualcomm Incorporated | Packet format and coding method for serial data transmission |
US10572172B2 (en) * | 2018-04-20 | 2020-02-25 | EMC IP Holding Company LLC | Multi-granular data reduction for remote data replication |
-
2020
- 2020-12-10 US US17/118,434 patent/US11663073B2/en active Active
-
2021
- 2021-10-11 CN CN202180082683.8A patent/CN116601896A/zh active Pending
- 2021-10-11 WO PCT/US2021/054446 patent/WO2022125183A1/en active Application Filing
- 2021-10-11 JP JP2023534103A patent/JP2024502933A/ja active Pending
- 2021-10-11 EP EP21811553.3A patent/EP4260192A1/en active Pending
- 2021-10-11 KR KR1020237022113A patent/KR20230113613A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US11663073B2 (en) | 2023-05-30 |
CN116601896A (zh) | 2023-08-15 |
KR20230113613A (ko) | 2023-07-31 |
WO2022125183A1 (en) | 2022-06-16 |
EP4260192A1 (en) | 2023-10-18 |
US20220188185A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102426619B1 (ko) | 영구 메모리 시스템 등을 위한 데이터 무결성 | |
US7921245B2 (en) | Memory system and device with serialized data transfer | |
US10761997B2 (en) | Methods of memory address verification and memory devices employing the same | |
KR101626040B1 (ko) | 높은 신뢰도 메모리 컨트롤러 | |
US20230236934A1 (en) | Instant write scheme with dram submodules | |
JP2021177623A (ja) | 列読み出し操作のためのデータシンボルの符号化を実行する技術 | |
US9047329B1 (en) | Method and system for an algorithm and circuit for a high performance exact match lookup function | |
US7739460B1 (en) | Integrated circuit memory systems having write-back buffers therein that support read-write-modify (RWM) operations within high capacity memory devices | |
US11663073B2 (en) | Method and apparatus for data protection in memory devices | |
US11836044B2 (en) | Error coalescing | |
US20220300370A1 (en) | Configurable Error Correction Code (ECC) Circuitry and Schemes | |
US7873843B2 (en) | Static power reduction for midpoint-terminated busses | |
US20220066874A1 (en) | Shared Error Correction Code (ECC) Circuitry | |
WO2023202592A1 (zh) | 数据写入方法以及处理系统 | |
WO2023109571A1 (zh) | 存储级内存、数据处理方法和处理器系统 | |
US20210286549A1 (en) | Variable width column read operations in 3d storage devices with programmable error correction code strength | |
US8990631B1 (en) | Packet format for error reporting in a content addressable memory | |
CN117170574A (zh) | 用于存储器裸片的堆叠的数据保护 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231106 |