JP7249719B2 - 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック - Google Patents

共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック Download PDF

Info

Publication number
JP7249719B2
JP7249719B2 JP2020555447A JP2020555447A JP7249719B2 JP 7249719 B2 JP7249719 B2 JP 7249719B2 JP 2020555447 A JP2020555447 A JP 2020555447A JP 2020555447 A JP2020555447 A JP 2020555447A JP 7249719 B2 JP7249719 B2 JP 7249719B2
Authority
JP
Japan
Prior art keywords
error correction
memory
data
latency
correction unit
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.)
Active
Application number
JP2020555447A
Other languages
English (en)
Other versions
JP2021521524A (ja
Inventor
オコナー、ジェームス
トレーガー、バリー
マウレ、ウォーレン
ゴラブ、マルク
マイケル、ブラッド、ウィリアム
ミーニイ、パトリック、ジェームス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021521524A publication Critical patent/JP2021521524A/ja
Application granted granted Critical
Publication of JP7249719B2 publication Critical patent/JP7249719B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G11C2029/0409Online test
    • 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
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Hardware Redundancy (AREA)

Description

本発明の実施形態は、一般に、コンピュータ・メモリに関連しており、より詳細には、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供することに関連している。
コンピュータ・システムは、多くの場合、コンピュータが電源投入されて動作可能である間にオペレーティング・システム・ソフトウェア、プログラム、およびその他のデータなどの情報を保持するために、かなりの量の高速なランダム・アクセス・メモリ(RAM:random access memory)、ならびにハード・ディスク・ドライブ(HDD:harddisk drives)および半導体ディスク(SSD:solid state disks)などの不揮発性ストレージを必要とする。この情報は、典型的には、データのビットとも呼ばれる1および0のパターンから成るバイナリ・データである。データのビットは、多くの場合、より高いレベルでグループ化されて構造化される。例えば、バイトは、8ビットから成る。このバイナリ情報は、典型的には、コンピュータ・システムの電源投入時および初期プログラム・ロード(IPL:initial program load)時に、HDDなどの不揮発性ストレージからRAMに読み込まれる。データは、典型的にはのコンピュータの動作中にも、不揮発性ストレージからRAMにページインされ、RAMから不揮発性ストレージにページアウトされる。典型的には、コンピュータ・システムが使用するすべてのプログラムおよび情報が、より小さくより高速な、より費用のかかるRAMメモリに同時に収まることはできない。収まった場合でも、RAMが揮発性ストレージであるため、このデータは、コンピュータ・システムの電源が切られたときに失われる。現在、多数のHDDおよびSSDを使用して不揮発性ストレージ・システムを構築するのが一般的である。
本発明の実施形態は、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供するための方法、システム、およびコンピュータ・プログラム製品を含む。非限定的なシステムの例として、複数のメモリ・デバイスおよびメモリ・バッファ・デバイスを含むメモリ・モジュールを含むメモリ・システムが挙げられる。複数のメモリ・デバイスの各々は、高ランダム・ビット・エラー・レート(RBER:random bit error rate)・メモリ・デバイスおよび低RBERメモリ・デバイスのうちの1つとして特徴付けられる。メモリ・バッファ・デバイスは、複数のメモリ・デバイスのうちの1つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスを含む。メモリ・バッファ・デバイスは、高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックも含む。共通のエラー修正ロジックは、異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを含む。複数のエラー修正ユニットは、ランダム・シンボル・エラーを分離して修正するための第1の高速経路エラー修正ユニット(fast path error correction unit)を含む。第1の高速経路エラー修正ユニットのレイテンシは、複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない。利点として、高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方に同じエラー修正ロジック(例えば、回路)を使用できることを挙げることができる。結合された回路は、高速経路エラー修正ユニットを提供することによって、高RBERを示すメモリ・デバイスおよび低RBERを示すメモリ・デバイスの両方のエラーをチェックして修正することによる性能への影響を最小限に抑えることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、データ読み取りインターフェイスで受信されたデータをデータの要求元に直接送信するための迂回経路をさらに含む共通のエラー修正ロジックを含んでよく、この迂回経路は、第1の高速経路エラー修正ユニットのレイテンシより少ない迂回のレイテンシを有する。利点として、データ読み取りがエラーを示さない限り、全くレイテンシを読み取りサイクルに追加しない経路を提供できることを挙げることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、ランダム・シンボル・エラーと共に、複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第2の高速経路エラー修正ユニットをさらに含む複数のエラー修正ユニットを含んでよく、第2の高速経路エラー修正ユニットのレイテンシは第1の高速経路エラー修正ユニットのレイテンシより大きい。利点として、ランダム・シンボル・エラーと共に欠陥のあるメモリ・デバイスを処理する高速経路エラー修正ユニットを提供することによって、欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、欠陥のあるメモリ・デバイスを置き換えるための予備メモリ・デバイスにおける変更を含んでよい。利点として、欠陥のあるメモリ・デバイスの代わりに予備メモリ・デバイスを提供することによる、可用性の改善を挙げることができる。利点として、欠陥のあるメモリ・デバイスに必要な修正をなくすことによって、その後の読み取りの性能への影響を最小限に抑えることができることを挙げることもできる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、2つの欠陥のあるメモリ・デバイスを分離して修正するように構成されている第2の高速経路エラー修正ユニットを含んでよい。利点として、2つの欠陥のあるメモリ・デバイスを処理する高速経路エラー修正ユニットを提供することによって、2つの欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、少なくとも1つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む共通のエラー修正ロジックを含んでよい。利点として、ランダム・シンボル・エラーをフィルタリングして除去できることによる、改善されたエラー修正能力を挙げることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、受信されたデータが128個のデータ・シンボルおよび22個のエラー訂正符号(ECC:error correction code)シンボルを含み、第1の高速経路エラー修正ユニットが、128個のデータ・シンボルのうちの最大2つにおけるランダム・シンボル・エラーを分離して修正するということを、含んでよい。利点として、エラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
上または下で説明されている特徴のうちの1つまたは複数に加えて、または代替として、さらなる実施形態は、欠陥のあるメモリ・デバイスおよび最大4つのデータ・シンボルにおけるランダム・シンボル・エラーを分離して修正するように構成された第2の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大9つのデータ・シンボルにおけるランダム・ビット・エラーを分離して修正するように構成された第3のエラー修正ユニットとをさらに含む複数の修正ユニットを含んでよい。第2の高速経路エラー修正ユニットのレイテンシは、第1の高速経路エラー修正ユニットのレイテンシより長く、第3のエラー修正ユニットのレイテンシより小さい。利点として、種々のエラー状態を処理するさまざまな高速経路エラー修正ユニットを提供することによって、欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
その他の特徴および長所が、本発明の手法によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を長所および特徴と共によく理解するために、説明および図面を参照されたい。
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
デュアル・インライン・メモリ・モジュール(DIMM:dual in-linememory module)を含む現在のメモリ・システムを示す図である。 デュアル・インライン・メモリ・モジュール(DIMM:dual in-linememory module)を含む現在のメモリ・システムを示す図である。 現在のメモリ・システムにおけるエラー修正動作の表を示す図である。 本発明の1つまたは複数の実施形態に従って、DIMMを含むメモリ・システムを示す図である。 本発明の1つまたは複数の実施形態に従って、DIMMを含むメモリ・システムを示す図である。 本発明の1つまたは複数の実施形態に従って、エラー修正ロジックによって実行されるエラー修正動作の表を示す図である。 本発明の1つまたは複数の実施形態に従って、エラー修正回路を含むメモリ・システムのブロック図である。 本発明の1つまたは複数の実施形態に従って、メモリからデータを読み取るためのプロセスのフロー図である。 本発明の1つまたは複数の実施形態に従って、データ・シンボルおよびエラー訂正符号(ECC)シンボルの異なる組み合わせを示す図である。 本発明の1つまたは複数の実施形態に従って、読み取り再試行を実行するためのプロセスのフロー図である。 本発明の1つまたは複数の実施形態に従って、エラー修正ロジックを含むメモリ・システムのブロック図である。 本発明の1つまたは複数の実施形態に従って、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供する一部または全部の態様を実装するための、コンピュータ・システムのブロック図である。
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
添付の図および開示された実施形態に関する以下の詳細な説明では、図に示された種々の要素が、2桁または3桁の参照番号を付与されている。わずかな例外を除いて、各参照番号の左端の数字は、その要素が最初に示された図に対応している。
ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic randomaccess memory)・デバイスの設計および製造ならびにその他の種類の革新的ストレージ・デバイスにおける最近の進歩は、一部の技術に、従来のDRAMデバイスで発生するものよりはるかに高いランダム・ビット・エラー・レート(RBER)をもたらした。例えば、従来の低RBER DRAMデバイスは、約1E-20の範囲内のRBERを有することがあり、より新しい技術は、さらに頻繁なランダム・ビット・エラーを示し、約1E-5の範囲内のRBERを有することがある。高RBERを有するDRAMまたはその他のストレージ技術を使用する場合、ビット・エラーおよびシンボル・エラーが定期的に発生することがあるため、キャッシュ・ラインにおけるシンボル・エラーの発生は、極めてまれな現象ではなくなる。3ギガヘルツ(GHz)より大きいクロック周波数を有するシステムの場合、エラーは、動作の1マイクロ秒ごとの頻度で、または1マイクロ秒未満ごとの頻度でも、発生することがある。これによって、75サイクルに1回の頻度で、1つのシンボル・エラーが発生することになる。一部の状況では、高RBERを有するメモリ・デバイスが利用され、その他の状況では、低RBERを有するメモリ・デバイスが引き続き利用されることが予想される。
本発明の実施形態は、高RBERを示すメモリ・デバイスおよび低RBERを示すメモリ・デバイスの両方に、エラーをチェックして修正することによる性能への影響を最小限に抑える共通のランダム・ビット・エラーまたはランダム・シンボル・エラーの修正方式を提供する。共通のエラー修正ロジック(ハードウェアまたはソフトウェアあるいはその両方)によって実装され得る本明細書に記載された共通のエラー修正設計は、ダイナミック・ランダム・アクセス・メモリ(DRAM)の動作に対する性能への影響を最小限に抑えながら、高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方に利用できる。本明細書に記載された実施形態によって、SK Hynixが提供するMDS(Managed DRAM Solution)DRAMおよびNANDフラッシュ・デバイス(書き込み耐久限度に達した後に、急速に増大するビット・エラー・レートを有する)などの、ただしこれらに限定されない、任意の高RBERメモリ・デバイスを実装できる。同様に、本明細書に記載された実施形態によって、DDR3、DDR4、およびDDR5などのダブル・データ・レート(DDR:double data rate)・メモリ・デバイス、ならびにHDDに関連付けられた磁気プラッタなどの、ただしこれらに限定されない、任意の低RBERメモリ・デバイスを実装できる。高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方に同じエラー修正ロジックを使用できることは、任意のRBERのメモリ・デバイスをメモリ・モジュール上に設置し、共通のメモリ制御/バッファ・チップを使用して相互運用できるようにすることによって、柔軟性を実現する。何が高RBERメモリ・デバイスおよび低RBERメモリ・デバイスを構成するかは、技術に応じて変わることができる。一実施形態例では、低RBER DRAMデバイスは、1ビット当たり約1E-20のエラーの範囲内のRBERを有し、高RBER DRAMデバイスは、1ビット当たり約1E-5のエラーの範囲内のRBERを有する。
本明細書に記載された実施形態のうちの1つまたは複数は、IBM(R) Power Systems(TM)サーバで通常は使用される128バイトのキャッシュ・ラインを対象にするが、実施形態は、任意のサイズのキャッシュ・ラインおよびキャッシュ・メモリ以外の位置に格納されたデータに対して実装され得る。1つまたは複数の実施形態は、さらに多くのECCシンボルを保持するための追加のDRAMチップを組み込み、x8およびx16 DRAM内のチップ・キル(chip kill)に関連する追加のシンボル・エラーのエラー修正を拡張することによって、x8またはx16などの、x4以外のDRAMチップを使用して実装されてもよい。IBM(R) Power Systemsは、10番目のx8 DRAMチップを9個のDRAMチップのランクに追加することによって、従来のECCを使用してこれをすでに行っている。
本明細書に記載された本発明の1つまたは複数の実施形態に従って、バランスのとれた方法が提供され、この方法は、予備メモリ・デバイスまたはメモリ・チップを活用することによって、従来のDRAMハードウェアのエラーおよびランダム・シンボル・エラーにおける大幅な増加の両方を効果的に修正でき、チップ・キルまたはその他の壊滅的なチップ・ハードウェアの故障のシンボル・エラーならびに追加のエラー訂正符号(ECC)シンボルの影響を(現在の設計と比較して)最小限に抑える。この方法は、データを読み取るための共通のデコーダを含んでおり、故障したチップを予備に置き換え、故障したチップに関連する失われたデータを再作成することによって第1のチップ・キルの事象に関連する修正の絶え間ない集中をなくすために使用される追加のECCシンボルと共に、予備DRAMチップを含むことによって、第1のチップ・キル(すなわち、メモリ・デバイス全体が故障しているとしてマーク付けされる)が発生するときの性能を向上させた。本発明の1つまたは複数の実施形態に従って、デコーダは、低RBERデバイスのレイテンシが影響を受けないように、高速な出口経路を使用して設計される。例えば、新しい高速な出口経路のうちの1つは、ランダムな1つおよび2つのシンボル・エラーを修正し、低RBERデバイスにはめったに使用されないが、高RBERデバイスには非常に頻繁に使用される。本発明の1つまたは複数の実施形態に従って、ECCは、従来のECCと比較した場合に、追加のロジックを含む。本明細書に記載された統合された(または共通の)ECCは、さらに重大なDRAMのハードウェア故障(例えば、チップ・キル)と共に少数の単一ソフト・エラーおよびハードの単一セル故障を処理するように設計された従来のECCと共に、多数のランダム・シンボル・エラーを処理することができ、低RBERデバイスのレイテンシに対する影響を最小限に抑えて、大量の複数のランダム・シンボル・エラーを効果的に処理することができるECCである。
本発明の1つまたは複数の実施形態に従って、OpenCAPIメモリ・インターフェイス(OMI:OpenCAPI memory interface)DIMMが実装される。各DIMMは、DRAMチップの1つまたは複数のランクと、DRAMに対して制御およびアクセスし、データの読み取りおよび書き込み、ならびにエラー修正を実行するためのハードウェアまたはソフトウェアあるいはその両方を含むバッファ・チップとを含むことができる。本発明の1つまたは複数の実施形態に従って、本明細書に記載されたエラー修正ロジックは、バッファ・チップ上に配置され、ハードウェアまたはソフトウェアあるいはその両方において実装され得る。本発明の1つまたは複数の実施形態に従って、バッファ・チップは、DIMM上に配置されず、DIMMまたはDIMM上のメモリ・デバイスあるいはその両方と、1つまたは複数のバスを介して通信する。
現世代のDDR4 DRAMチップなどの現在の低BERレートのメモリ・デバイスの主要な故障モードは、軽微なハードウェアの欠陥として、および宇宙線およびアルファ粒子の衝突に起因するビット反転として、自分自身を明示することができる単一セルのエラーを含む。単一セルのエラーの発生頻度は、サーバ内に設置されたメモリのサイズによって決まるが、それらの一般に、おそらく通常は多くても、1つのシステム当たり少数で毎日発生する、比較的まれな事象である。バックグラウンド・スクラビング・メカニズムを使用して、ソフト・エラーを探しながらすべてのアドレス位置を読み取り、エラーを検出した場合、スクラビングによってエラーの修正を試みることによって、システム内のソフト・エラーを検出して修正することができる。IBM(R) Power Systemsなどのサーバ上のメモリ全体のスクラビングは、典型的には、1日に2~3回行われることがあるが、さらに多い頻度または少ない頻度で発生するようにスケジューリングされ得る。
さらに重大なハードウェア故障は、単一のキャッシュ・ラインにマッピングされているDRAMチップの複数のビットがエラーになる、ビット・ライン故障を含む。「チップ・キル」は、DRAMデバイスまたはチップのかなりの部分が故障し、チップから読み取られたすべてのビットがエラーになることを引き起こす、より壊滅的な故障である。チップ・キル故障は、通常、まれであるが、特に大きなサーバ群全体で発生し、発生した場合に、データを修正するための追加サイクルの発生を引き起こす。チップ・キルは、DRAMが存在するランクに関連付けられたすべてのDRAMのアドレスにエラーを引き起こし、メモリ・インターリーブが有効化されていても、多くの場合、修正のための追加サイクルの不利益が発生し、したがって、修正に起因して発生した追加サイクルに起因する性能低下をもたらす可能性がある。
RAMは、システムごとおよびアプリケーションごとの特定のメモリ要件に基づいて、ストレージの増分量をコンピュータに追加できるように、多くの場合、着脱可能なモジュールとして設計されてパッケージ化される。DIMMは、おそらく現在使用されている最も普及しているメモリ・モジュール構造である。DIMMは、複数のメモリ・チップが取り付けられた薄い長方形のカードであり、通常は、保持しているデータが失われるのを防ぐために定期的なリフレッシュを必要とするダイナミック・メモリ・デバイスまたはチップを使用して、設計される。当初、DRAMチップは、非同期式デバイスだったが、後の世代の同期式DRAM(SDRAM)チップは、性能を改善するために同期式インターフェイスを有している。最終的に、その他の速度の向上と共に、プリフェッチを使用してメモリ帯域幅を改善し、レイテンシを改善する、DDRデバイスが利用可能になった。バースト長は、任意のアクセス中にDRAMチップの各データ線(DQ)から読み取られたビットの数または各データ線(DQ)に書き込まれたビットの数である。DDR3およびDDR4メモリ・デバイスは、典型的には、標準的な8のバースト長を有し、DDR5メモリ・デバイスは、典型的には、標準的な16のバースト長を有する。
RAM、HDD、およびSSDを含むデータ・ストレージのサイズは、コンピュータ・システムがより強力になるにつれて、増大し続けた。数百兆ビットから成る単一のコンピュータRAMを含むことは、現在珍しいことではない。エラー修正などの何らかの軽減がなければ、RAMのただ1つのビットの故障がコンピュータ・システム全体の故障を引き起こす可能性がある。軽減されないハード・エラーは、それが単一のセルの故障、複数のビットの故障、チップ全体の故障、またはDIMM全体の故障のいずれであれ、修理されるまで、システムを動作不能にすることがある。予備部品が到着して故障を修理できるまで、ダウンタイムが数時間、または場合によっては数日さえ続くことがある。このダウンタイムは、ビジネス(特に、コンピュータ・システムに高度に依存するビジネス)に大きな影響を与えることがある。
データは物理的な電気的デバイスに格納され、最も壊滅的な故障は、デバイス全体の故障に関連する。データのすべてが単一のデバイスに格納され、その単一のデバイスが故障した場合、すべてのデータが失われ、回復は不可能である。格納されるデータを複数の物理的デバイスにわたって分散することは、まだ機能しているデバイスに格納されている残りのデータおよびECCシンボルを利用することによって、失われたデータの回復を可能にするために採用されている戦略である。欠陥のあるデバイスは、DIMM上のDRAMメモリ・チップ(すなわち、「チップ・キル」)、DIMM全体の故障、またはHDDの故障であることがあり、これらの各々は、多数のデータおよびECCシンボルを含む。故障中に失われるデータおよびECCが多いほど、欠落しているデータを修正して回復するために必要なECCシンボルの合計が多くなる。最も効果的なエラー修正方式の設計にとって、ストレージ・システムの物理的構造の慎重な検討は重要である。
正常動作中にHDDの故障、SSDの故障、またはRAMの故障が発生する確率は、増大し続けるコンピュータ・メモリのサイズ、およびそれと同時に小さくなり続けるメモリ・デバイス(例えば、DRAMチップおよびNANDフラッシュ・チップ)のサイズに起因するストレージの密度の増加に少なくとも部分的に起因して、増え続けた。より小さい回路サイズが物理的限界の寸前に近づくにつれて、可変保持時間エラー(variable retention time errors)などの新しい故障モードが現れたため、堅牢なエラー修正の必要性がいっそう重要になった。
ビット・エラーを検出して修正するための手法は、過去数十年を経て、複雑な科学に進化した。最も基本的な検出手法の1つは、奇数パリティまたは偶数パリティの使用であり、この手法では、データ・ワード内のビットの排他的OR(XOR)が一緒に計算されて、パリティ・ビットを生成する。例えば、偶数個の1を含むデータ・ワードは0のパリティ・ビットを有し、奇数個の1を含むデータ・ワードは1のパリティ・ビットを有する。シングル・ビット・エラーがデータ・ワード内で発生する場合、このエラーは、データからパリティを再生成し、その後、このパリティが、ワードと共に格納されている最初に生成されたパリティと一致するかどうかチェックすることによって、検出され得る。
Richard Hammingは、さらに複雑なXORフィールド(エラー訂正符号(ECC)フィールド)を各符号語に追加することによって、このパリティ手法を拡張して、エラーを検出するだけでなく、エラーを修正することもできるということを認識した。このECCフィールドは、エラー(データ・ワードのわずかな変化)を簡単に検出し、特定し、修正できるようにする、排他的ORが一緒に計算されるワード内の異なるビットの組み合わせである。検出して修正できるエラーの数は、データ・ワードに追加されたECCフィールドの長さに直接関連している。1つの目標は、有効なデータ・ワードおよび符号語の組み合わせの間の最小限の分離距離を確保することである。検出されて修正されるエラーの数が多いほど、有効な符号語間の最小限の分離距離を確保するために必要なECCフィールドが長くなる。有効な符号語間のこの距離は、ハミング距離と呼ばれる。
エラー検出手法およびエラー修正手法は、一般に、ノイズのある通信の送信媒体内のデータ、またはデバイスの物理的特性に起因するデータ・エラーの有限な確率が存在するストレージ媒体のデータを復元するためにも使用される。RAM内の1または0を表す電圧レベルとしてデータを格納するために使用される回路は、高エネルギーの宇宙線およびアルファ粒子に起因するデバイスの故障および状態変化の両方の影響を受ける。磁気面上の磁場として1および0を格納するHDDも、最初に格納されていたデータ・パターンからのデータ・パターンの変化を引き起こす可能性のある磁気媒体における不完全性およびその他のメカニズムの影響を受ける。
1980年代において、RAMメモリ・デバイスのサイズは、ソフト・エラーの発生頻度がシステムの信頼性全体に顕著な影響を与え始める程度にまで初めて縮小した。各ビットを保持するラッチ回路は、メモリ・ビットの反転がかなり定期的に発生し始めるほど、正常な背景放射に関連するアルファ粒子の衝突および宇宙線に十分に敏感になった。これらの粒子はデバイスに損傷を与えないが、一時的なメモリ・エラーを引き起こす。これらはソフト・エラーと呼ばれ、多くの場合、単一のビットのみに影響を与える。このタイプの単一ビット故障は、正しいデータまたは新しいデータをメモリ位置に単に再び書き込むことによって、修正できる。
Hammingによって提案されたようなメモリのECCは、エラーの検出および修正を可能にするために、パリティ符号の組み合わせをデータ・ワードのさまざまなビット位置で使用する。データ・ワードがメモリに書き込まれるたびに、新しいECC符号語が生成されてデータと共に格納され、データがメモリから読み取られるときに、データの検出および修正を可能にする。RAMデバイスに適用された最初のECCは、ダブルビット・エラー検出(DED:double-bit error detection)およびシングルビット・エラー修正(SEC:single-bit error correction)を可能にした。一時的なエラーの修正に加えて、SEC/DECのECCは、RAMデバイス内の単一ビットの永続的ハード・エラーの透過的な回復も可能にする。
加えて、補完/再補完プロセスを使用してソフト・エラーを修正して、メモリのアライメント・エラーを減らすのを支援することによって、ECCの有効性を改善するために、スクラビング・ルーチンも開発された。
HDDは、多くの場合、不良セクタを検出するために使用されるECCなどのチェッカーを組み込んだ。巡回冗長検査(CRC:Cyclic redundancy check)および水平冗長検査(LRC:longituderedundancy check)が、HDD電子機器に組み込まれるチェッカーとして、または故障を検出して修正するためのディスク・アダプタと共に、採用されてもよい。これらのチェッカーは、HDDのエラーを検出して修正するために、上位のコードおよびアプリケーションによって使用されてもよい。CRCおよびLRCは、データ・エラーの検出を支援するために、データと同時に生成されて書き込まれる。CRCおよびLRCは、典型的には、データから生成される相対的に小さい、実質的に一意のビット・パターンを生成するハッシュ関数を介して作成される。データがHDDから読み取られるときに、チェックサムが再生成され、プラッタまたはディスクに格納されているチェックサムと比較される。ディスク上でエンコードされている磁気パターンから取り出されたデータにエラーがないことを保証するために、これらのチェックサムのシグネチャは、最初に生成されてデータと共にディスクに保存されているシグネチャと正確に一致するか、または同一でなければならない。
性能を改善するか、またはディスク・ストレージ・システムの可用性を高めるか、あるいはその両方のために、新磁気ディスク制御機構(RAID:Redundant array of independent disk)システムが開発された。RAIDシステムは、データを複数の独立したHDDにわたって分散する。それぞれ異なる特徴および関連する異なる良い点と悪い点を有する多くの異なるRAID方式が開発されている。性能、可用性、および使用率/効率(顧客のデータを実際に保持しているディスクの割合)は、RAID方式の特徴または属性の例である。ある属性における改善が、多くの場合、別の属性の悪化をもたらすことがあるため、種々のRAID方式に関連するトレードオフを慎重に検討する必要がある。
RAID-0は、性能を改善するための複数のHDDにわたるデータのストライピングである。RAID-1は、可用性を改善し、データ損失を防ぐために2つの異なるHDD上にデータの正確なコピーを2つ維持する、データのミラーリングである。一部のRAID方式を一緒に使用して、組み合わさった恩恵を得ることができる。例えば、RAID-10は、性能および可用性の両方を改善するための、アレイ内の複数のHDDにわたるデータ・ストライピングおよびミラーリングの両方である。RAID-3、RAID-4、およびRAID-5は、単一のXORチェックサムを使用して単一のデータ要素のエラーを修正するという点において、非常に似ている。RAID-3は、専用のパリティHDDを使用するバイト・レベルのストライピングであり、RAID-4は、専用のパリティHDDと共にブロック・レベルのストライピングを使用し、RAID-5は、RAID-4に似たブロック・レベルのストライピングであるが、分散されたパリティを使用する。RAID-5では、パリティがすべてのHDDにわたって実質的に均一に分散され、このようにして、性能ボトル・ネックとしての専用のパリティHDDを除去しているため、専用のパリティHDDが存在しない。RAID-3、RAID-4、およびRAID-5の重要な属性は、それぞれ、何らかの独立した手段を用いて故障の位置を特定できる場合に、単一のデータ要素の故障を修正できることである。この能力によって、RAID-3、RAID-4、およびRAID-5は、完全なHDDの故障を修正できる。
産業界全体で使用されているRAID関連の用語には、一貫性のなさおよび曖昧さが存在することがある。以下の定義は、特に明記しない限り、本開示におけるこれらの用語の使用によって意味される内容である。「アレイ」は、RAIDの消失符号の1つまたは複数のインスタンスが実装されるシンボルを保持するハード・ディスク・ドライブの集合である。「シンボル」または「要素」は、データまたはパリティの基本単位である。これらは、消失符号の基礎的要素である。HDDの場合、シンボルは、典型的には、連続的なセクタのセット内に保持される。要素は、固定された数のバイトから成る。要素を固定された数のブロックとして定義することも一般的である。したがって、「ブロック」も固定された数のバイトを表す。「ストライプ」は、データ要素およびパリティ要素の完全な接続されたセットであり、この依存しているデータ要素のセット全体で計算されるパリティ計算の関係に従属的に関連している。符号化理論では、ストライプは符号語または符号のインスタンスである。「ストリップ」は、1つの物理的HDD上に存在するストライプの断片であり、単一のハード・ディスク・ドライブ上の近接する要素の集合を含む。ストリップは、同じディスクおよびストライプのデータ要素またはパリティ要素あるいはその両方を含む。ストリップおよび列という用語は、交換可能なように使用される。符号化理論では、ストリップは符号語に関連付けられ、ストライプ単位と呼ばれることもある。符号語内のストリップのセットがストライプを形成する。ストリップが同じ数の要素を含むのが、最も一般的である。場合によっては、ストライプは、まとめてグループ化されて、「ストライド」と呼ばれる上位の構造を形成することがある。
産業界全体で一般に認められているRAID-6の単一の定義は存在しない。一般に、RAID-6は、二重チェックサムを含むブロック・レベルまたはバイト・レベルのストライピングのことを指し、何らかの独立した手段によって故障を特定できた場合に、最大2つのデータ要素の故障の修正を可能にする。RAID-6は、故障の位置が不明である場合に、単一故障を特定して修正する能力も有する。RAID-6は、さらに一般的なリードソロモン・エラー訂正符号の特定の例である。これらの強力な符号には、深宇宙探査から、デジタル・ビデオ・ディスク(DVD:digital video disc)・プレイヤーにおけるコンパクト・ディスクのエラーまでに及ぶ応用においてエラーを修正する、広範囲にわたる用途があった。
RS符号は、データ要素またはシンボルに適用される非バイナリの巡回符号である。RS(n, k)符号は、k=データ・シンボルの数、m=ビット単位のシンボル長、およびn=シンボルの総数を有し、0<k<n<2(m+1)であると定義され得る。独立した手段によってエラーの位置が決定されない場合、c=シンボル・エラー修正能力をさらに定義することによって、n-k=2cが得られる。言い換えると、シンボルの総数とデータ・シンボルの数の差が、RS符号のデータ修正能力に直接比例する。
最小距離は、有効な符号語間のビット差の数である。本明細書において使用されるとき、符号語という用語は、後に1つまたは複数のECCシンボルが続く、単位として読み取られて修正されるデータ・シンボルのグループのことを指す。RS符号は、任意の線形符号の可能な最大の最小距離を実現する。非バイナリ符号の場合、ハミング距離に類似している最小距離は、dmin=n-k-1によって与えられる。e=消失訂正能力(すなわち、故障の位置が独立して決定された場合に故障を修正する能力)を定義することによって、e=dmin-1=n-k=2cが得られる。言い換えると、何らかの独立した手段によってエラーの位置が決定されない場合に、故障の半数のみを修正することができ、したがってRS符号は、位置を決定してエラーを修正することにおいて役立つ。
RS符号は、未知数について解くために使用できる一連の連立方程式であると考えることができる。これらの未知数は、故障を含むデータ・シンボルまたはシンボルの位置のいずれかである。RAID-6は、例えば、2つの方程式を使用して、各行内の各データ要素に適用される2つの独立したチェックサムを生成する。Q(x)=RSチェックサム(ここで、x=a)、P(x)=RSチェックサム(ここで、x=1)、およびd0, d1, ..., dN=多項式係数を定義することによって、多項式形を有する次のRSチェックサム方程式が得られる: Q(x) = d0 + d1*x + d2*x + ... d(N-1)*x(N-1)。この方程式を使用して、係数について解き、データ要素を修正することができ、または故障の位置が不明である場合に、この方程式を使用して、xの累乗について解き、位置を特定することができる。
RAID-3、RAID-4、およびRAID-5の単純なXORが、方程式が次のようになるようにx=1とした場合の特殊ケースであるということがわかり得る:
P(x) = d0 + d1 + d2+ ... d(N-1)。この一般方程式の多くの使用可能な変形が存在する。主な要件は、この方程式が原始多項式であること、すなわち、共通根が存在しない場合に、素数に類似しているということである。それによって、解が常に有限体(ガロア体)内の一意の値にマッピングされることを保証する。
一般に、現在のエラー修正ロジックは、高RBERメモリ・デバイスまたは低RBERメモリ・デバイスのいずれかに対して最適化され、エラー修正ロジックを含む同じ回路が、両方の種類のメモリ・デバイスに使用されるのを防ぐことができる。
ここで図1を参照すると、DIMM102を含む現在のメモリ・システム100が概して示されている。図1に示されているメモリ・システム100は、バッファ・デバイス104を含むDIMM102に加えて、データを格納するための16個のデータDRAMの2つのランク(すなわち、合計で32個のデータDRAM106)、ECCおよびメタデータ・シンボルを格納するための4つ(1つのランクにつき2つ)のECC DRAM108、ならびに2つ(1つのランクにつき1つ)の予備DRAM110を含む。バイト・サイズのシンボルに対するリードソロモン(RS:Reed-Solomon)のようなシンボル修正などの従来のECC設計を、チップ・キルなどのハードウェア故障の位置が記録される故障マーキング手法と共に、利用できる。欠陥のあるメモリ・デバイスの位置を記録するか、またはマーク付けすることによって、有限な限られた数のECCシンボルを節約し、より効果的に利用して、エラー修正能力を改善することができる。ECCシンボルは、本明細書では「修正情報」とも呼ばれる。
図1のメモリ・システム100に示されているように、エラー修正ロジックは、19×4個のDRAMチップの2つのランクを利用する128バイトのキャッシュ・ライン用に設計されている。DDR4 x4 DRAMチップは、各アクセスが8ニブル、または8バイトの4つのシンボルを得るように、典型的には、8のバースト長を有する。この設計は、単一セル故障が、それ自身を単一のシンボル・エラーとして明示するが、エラーを修正するために発生する追加サイクルの数は、その特定のDRAMのアドレスがアクセスされるときにのみ発生し、したがって、性能に対して大きな影響を与えないようになっている。チップ・キルは、多くても8ニブル(4つのシンボル)に影響を与えるが、ランク内のすべてのDRAMのアドレスのデータに対して修正が必要になり、そのため性能上の不利益がより広範囲にわたり、重大である。
メタデータを保持する各ランク内の2つのECC DRAM108は、7つのECCシンボル(この例ではバイト)および他の目的に(例えば、データの属性を説明するタグとして)使用される1バイトを提供する。図1に示されているように、ECCは、64バイトのデータに対して同時に動作するため、7つのECCシンボルを使用して、3つのランダム・シンボル・エラーを特定し、修正することができる。エラー・マーキングは、エラーの位置が前もって決定されるか、または何らかの他の手段によって決定されるため、より多くのエラーの修正を可能にする。図1に示されているバッファ・デバイス104などの現在のOMIバッファ・チップは、低RBER DRAMデバイを対象にした従来の方法を実装し、図3を参照して下で説明されているエラー修正などのエラー修正を実行する。
ここで図2を参照すると、DIMM132を含む現在のメモリ・システム130が概して示されている。図2のメモリ・システム130では、単一のランクへの2つの連続する読み取りのアクセスによって、キャッシュ・ラインが読み取られ、図1に示されているように2つのランクからキャッシュ・ラインを抽出するのと全く同じ量のデータを生成する。図1のメモリ・システム100における2つのランクの方法と比較したときの、1つの顕著な違いは、チップ・キル故障によってキャッシュ・ライン内で失われるシンボルの数が2倍になるという点である。図2に示されているメモリ・システム130は、16のバースト長の単一の読み取りを使用して、DDR5 DRAMチップと共に使用することもできる。
ここで図3を参照すると、現在のメモリ・システムにおけるエラー修正動作の表200が概して示されている。128バイトのキャッシュ・ラインを含んでいても、ECCが64バイトのデータを処理する図1に示されている例では、データまたは符号語をバッファ・デバイス104に取得するのに、(1つのポートを使用して)4サイクルかかる。本明細書において使用されるとき、「サイクル」という用語は、バッファ・デバイス104上にあるプロセッサまたは読み取られているデータを要求しているプロセッサなどのプロセッサのクロック・サイクルのことを指す。図2に示されている表200は、次の3つの高速経路の出口点208に関して、サイクル数210および推定発生頻度212を示している: 低RBERメモリ・デバイスで検出された任意のエラーの修正に消費されるサイクル数を最小限に抑えるように設計された出口0経路202、出口1経路204、および出口2経路206。3つの出口点208は、例えば、図1のDIMM102上のバッファ・デバイス104などのバッファ・デバイス上にあるエラー修正ロジックによって、実装され得る。
第1の基本経路の出口点である出口0経路202は、追加サイクルを全く消費せず、ほとんどのデータが修正を必要としないということを仮定する、エラー修正ロジックの迂回経路である。投機的読み込みの場合、要求元(例えば、コア・プロセッサ)によって迂回データが消費される。非投機的読み込みの場合、データが修正を必要としないということを保証するために、要求元によってデータが直ちに消費されない。したがって、プロセッシング・コアを通る一部の経路は、このデータの処理を続行することを許可し、そのため後でECCによってデータ・エラーが検出されない場合(通常は、これが当てはまる)、処理において遅延が発生しないため、性能が改善される。後でエラーが検出された場合、パイプ・ラインがフラッシュされ、正しい修正済みの置換データがパイプに供給される。
図3の表200を参照すると、エラー修正ロジックから出る次の最速経路は出口1経路204であり、出口1経路204は、単一のマーク付けされたチップおよび最大1つの追加のランダム・シンボル・エラーを修正することができる。このためには、チップ・キルの修正のための4つのECCシンボル、および付随するランダム・シンボル・エラーを特定して修正するための別の2つのシンボルが必要になる。エラー修正ロジックを通るこの経路(出口1経路204)は、データをバッファ・デバイス104に取得するための4サイクル、および修正を実行するための4サイクルという、追加の8サイクルを消費する。表200に示されているように、さまざまな理由により発生する可能性があるマーク付きの単一のランダム・シンボル・エラーの発生頻度は、低BER DRAMチップの場合、相対的に小さい。このエラーは、通常は、多くても1日に極めて少ない回数発生し、おそらくそれよりはるかに少ない頻度でしか発生しないソフト・エラーまたはスタック・セルあるいはビット・ライン・エラー(bit line error)さえを含む。
チップ・キル故障は、典型的には、比較的まれである。大きなサーバ群では、多くの場合、チップ・キル故障を含むDIMMを置き換える必要がないことが望ましく、したがって、第1のチップ・キル故障を素早く除去するために、予備DRAMチップが使用される。チップ・キルが存在する場合、予備DRAMが変更されるまで、出口1経路204が、エラー修正ロジックを通る基本経路になり、追加の8サイクルのみを消費する。単一のチップ・キル故障の場合、追加された8サイクルに関連する性能への影響は、一時的であり、したがって修理が不要であるため、長期間の悪影響を性能に与えない。チップ・キルによる性能への影響を最小限に抑えるために、予備チップが、欠陥のあるメモリ・デバイスの交換用として使用される構成に変更される。この置換プロセスが完了し、代替チップにデータが再作成されて復元された後に、エラー修正ロジックを通る出口1経路204が通過されなくなり、出口0経路202を使用して読み取りが再開される。
他のすべてのエラー事象の場合、エラー修正ロジックからの最終経路は、完全なECC機能を採用する出口2経路206である。出口2経路206は、1つのマーク付けされないチップ・キルおよび最大1つの追加のシンボル・エラーを修正することができる。エラー修正ロジックを通ってこの経路を通過するには、追加の12サイクルがかかる。どのメモリ・デバイスまたはチップに欠陥があるか不明であることに起因して、エラー修正ロジックが、有効な解の検索においてチップ・キルのすべての組み合わせについて解く必要があるため、この経路の通過にはより長いサイクルがかかる。出口2経路206は、12サイクル(データをバッファ・チップに取得するための4サイクルおよび修正を実行するための8サイクル)を消費する。出口2経路206は、チップ・キルが存在する場合に、それがマーク付けされる以前に使用される。エラー修正ロジックは、可能性のあるすべてのチップ・キルの状況について解き、1つの状況が一致する場合、このロジックはエラーを修正し、次に、欠陥のあるチップにマークを付けることができ、その後、ランク内の第1のチップ・キルの場合に、(12サイクルの代わりに8サイクルを消費して)出口1経路204を使用することができ、予備チップを変更できるようにする。エラー修正ロジックがエラーを修正できない場合、より少ないエラーを含むキャッシュ・ラインが得られるように期待して、読み取りの再試行が実行される。
大まかに言うと、「t」個のエラーおよび「e」個の消失の場合のエラー位置多項式を取得するには、典型的には、e+2tサイクルがかかる。一般に、正しい数のエラーが識別されたことをより確かなものにするために、2つ以上のシンドロームが処理されるべきである。しかし、SarwateおよびShanbhagのRIBMデコーダに基づく一部のデコーダは、すべてのシンドロームを一緒に処理し、デコーディングが完了していることのチェックを、連続する不一致がすべて0であることをチェックすることによって、より少ないサイクルで実行することができる。本明細書において使用されるとき、「シンドローム」という用語は、エラーが発生しなかった場合に0になることが保証され、そうでない場合、エラーの位置および値を決定するために使用される、受信されたデータに対して行われる計算のことを指す。従来のリードソロモン・デコーダでは、シンドロームは、エラーになっている受信されたデータ内の位置を決定する根を持つ多項式を計算するために使用される。この多項式は、エラー位置多項式と呼ばれる。エラー位置多項式は、そのシンボル位置内の修正する必要のあるビットを計算するために、エラー評価多項式と呼ばれる第2の多項式と共に使用される。一部のECCでは、一般的な位置多項式を計算しない特殊なデコーダによってエラー修正回路が実装されるため、位置多項式を計算するためのサイクル数に関する式e+2tが当てはまらない。
本発明の1つまたは複数の実施形態に従って、バックグラウンド・スクラブが実行されるまで、予備チップが変更されない。この結果、より長い追加サイクルの不利益が発生するが、予備メモリ・デバイスを変更し、故障したメモリ・デバイスに関連するデータを再作成する機能をファームウェアに実行させることによって、ハードウェアロジックを簡略化することができる。
ここで図4を参照すると、本発明の1つまたは複数の実施形態に従って、DIMM302を含むメモリ・システム300が概して示されている。図4に示されているメモリ・システム300は、バッファ・デバイス304を含むDIMM302に加えて、データを格納するための32個(1つのランクにつき16個)のデータDRAM306、ECC(または修正情報)およびメタデータ・シンボルを格納するための6つ(1つのランクにつき3つ)のECC DRAM308、ならびに2つ(1つのランクにつき1つ)の予備DRAM310を含む。バイト・サイズのシンボルに対するリードソロモン(RS)のようなシンボル修正などの従来のECC設計を、チップ・キルなどのハードウェア故障の位置が記録される故障マーキング手法と共に、利用できる。欠陥のあるメモリ・デバイスの位置を記録するか、またはマーク付けすることによって、有限な限られた数のECCシンボルを節約し、より効果的に利用して、エラー修正能力を改善することができる。
図4のメモリ・システム300に示されているように、エラー修正ロジックは、20×4個のDRAMチップの2つのランクを利用する128バイトのキャッシュ・ライン用に設計されている。DDR4 x4 DRAMチップは、各アクセスが8ニブル、または4バイトのシンボルを得るように、典型的には、8のバースト長を有する。この設計は、単一セル故障が、それ自身を単一のシンボル・エラーとして明示するが、エラーを修正するために発生する追加サイクルの数は、その特定のDRAMのアドレスがアクセスされるときにのみ発生し、したがって、性能に対して大きな影響を与えないようになっている。チップ・キルは、多くても8ニブル(4バイトのシンボル)に影響を与えるが、ランク内のすべてのDRAMのアドレスのデータに対して修正が必要になり、そのため性能上の不利益がより広範囲にわたり、重大である。
メタデータを保持する各ランク内の3つのECC DRAM308は、11個のECCシンボル(この例ではバイト)および他の目的に(例えば、タグとして)使用される1バイトを提供する。図4に示されているように、従来のECCとは異なり、このECCは、128バイトのデータを同時に処理し、キャッシュ・ライン全体でより多くのECCシンボルを処理できるようにすることによって、修正の堅牢性を強化するため、22個のECCシンボルを使用して、7つのランダム・シンボル・エラーを容易に特定し、修正することができる。理論的には、ランダム・シンボル・エラーが唯一の関心である場合、22個のECCシンボルを使用して11個のシンボル・エラーを特定し、修正することができる。エラー・マーキングは、エラーの位置が前もって決定されるか、または何らかの他の手段によって決定されるため、より多くのエラーの修正を可能にする。1つまたは複数の実施形態に従って、バッファ・デバイス304は、図6を参照して下で説明されているエラー修正などのエラー修正を実行するために、低RBERを有するメモリ・デバイスおよび高RBERを有するメモリ・デバイスの両方に対して最適化されたエラー修正ロジックを実装する。本発明の1つまたは複数の実施形態に従って、低RBERメモリ・デバイスに対する(例えば、経過サイクルに対する)影響を最小限に抑えて、高RBERメモリ・デバイスをサポートする能力が実現される。
本発明(ECCデコーダまたはエラー修正ロジック)の1つまたは複数の実施形態に従って、図4に示されているDIMM302の場合、エラーおよび消失に伴うレイテンシを次のように推定できる。デュアル・ポートのバッファ・チップを使用した場合、DRAMデバイスからバッファ・チップにすべてのデータが到着するには、8サイクル(1つのランクにつき4サイクル)がかかる。シングル・ポートのバッファ・チップを使用した場合、バッファ・チップにすべてのデータが到着するには、16サイクルがかかる。シンドロームは、多くても追加の1サイクルでデータが取得されたときに計算されるため、8サイクルまたは9サイクル後にシンドロームが計算される。図に示されているように、一部の実施形態では、すべてのデータが到着するのに16サイクルを必要とすることがあり、その場合、デコーディングのサイクルの総数が8だけ増える。
1つまたは複数の実施形態に従って、データが8サイクルを超えて到着し、「e」個のシンボルがマーク付けされており、追加の「t」個のエラーを修正するのが望ましい。「t」個のエラーおよび「e」個の消失の場合のエラー位置多項式を取得するには、典型的には、e+2tサイクルがかかる。エラーが正しく識別されて修正されたという信頼性を得るために、2つの追加のシンボルが処理され、そのためマーク付けされたチップを仮定すると、チップ・キルに関する4つのシンボルおよび(例えば、2つのDRAM間に共有データ・バスが存在することに起因する)DRAMドライバの点在する故障の二重のチップ・マークに関する8つのシンボル・エラーが存在し、これらが両方ともチップに影響を与える可能性がある。次の2つのシンドロームとの一貫性を検証するために、サイクル・コストまたはサイクル数は8+e+2t+2になり、ここで、8はDRAMチップからデータを取り出すためのサイクル数であり、eは消失の数であり、2tは、t個のエラーの場合の位置多項式であり、+2は、データを修正するため(修正を計算して各データ位置に適用するため)にかかる、エラー位置多項式の計算後のサイクル数である。したがって、サイクル数は10+e+2tに等しくなり、マーク付けされた二重のチップに関してe=8を仮定すると、サイクル数は10+2tに等しくなる。マーク付けされたチップが存在しない場合、サイクル数は10+2tになり、このサイクル数は、シンドロームを前提として、位置多項式を見つけるコストだけではない合計サイクル・コストである。
したがって、追加サイクルの合理的に控えめな推定は、マーク付けされたチップが存在する場合、18+2tになり、エラーを修正するべきマーク付けされたチップが存在しない場合、10+2tになる。これは、数サイクルを超えて修正されたデータを返すデコーダを含めて、データの取得の開始から修正されたデータが返されるまでのレイテンシになる。新しいチップ故障が発生し、新しい欠陥のあるチップ以外に最大で3つのエラーが存在する場合、8(欠陥のあるチップのシンボル)+3(その他のランダム・シンボル・エラー)=11個のシンボル・エラーの修正が実行され得る。このようにして、10+e+2tを使用して10+2(8+3)が得られ、エラーを処理するために、10+22=32サイクルがかかる。これは、使用できる戦略の一例にすぎず、欠陥のあるメモリ・デバイス以外の追加のエラーを修正するための戦略が、他の実施形態によって採用され得る。
本発明の1つまたは複数の実施形態に従って、共通の低RBER DRAMおよび高RBER DRAMのエラー修正ロジック設計戦略/方法が実装される。一実施形態に従って、エラー修正ロジックが、128バイトのキャッシュ・ラインのエラーを修正する。データ・シンボル、ECCシンボル、およびその他のメタデータが、20個のメモリ・デバイスの2つのランクから取り出され、20個のメモリ・デバイスのうち、16個のメモリ・デバイスがデータを保持し、3つのメモリ・デバイスがECCシンボルおよびメタデータを保持し、1つのメモリ・デバイスが予備メモリ・デバイスである。高RBERメモリ・デバイスにおけるより多くのビット・エラーを軽減するために、ランクごとにECCシンボルの追加のメモリ・デバイスが使用される。この構造によって、22個のECCシンボルおよびメタデータの2つのシンボルが得られ、高RBER DRAMが確実に機能できるようにし、さらにOMIバッファなどのバッファ・デバイスの標準的な低RBER DRAMの性能に悪影響を与えない。
加えて、本発明の1つまたは複数の実施形態に従って、同じバッファ・チップを含む単一のDIMMを、製品ライン(例えば、ローエンド、ミッドレンジ、およびハイエンド)全体にわたって使用できる。これを可能にするために、異なる種類のメモリ・デバイスが、単一のDIMMへの同じコネクタを有することができる。バッファ・チップ上で別々のエラー修正ロジックを提供することによって、例えば低RBER DRAMの場合の実施形態例によって、異なるキャッシュ・ライン・サイズもサポートされ得る。現在のOMIバッファ・デバイスは、ある程度の非効率性をもたらす可能性があるシングル・ポートを有しており、この非効率性は、2ポート設計を使用して解決することができるが、2つのポートはより大きいバッファ・チップを必要とし、より大きいバッファ・チップは、より小さいDIMMのフォーム・ファクタに適合しない。1ポート設計は、本発明の実施形態例が利用する128バイトのキャッシュ・ライン全体を取り出すために、より多くのサイクルを必要とする可能性があるが、より大きいバッファ・チップを決定するほど多くの追加サイクルではない。
本発明の実施形態例は、低RBER DRAMをサポートし、128バイトのキャッシュ・ラインが利用されている場合でも、64バイトのデータを処理することができる。本発明の1つまたは複数の実施形態は、2つのランクのDRAMチップの出力を点在させることもでき、これは、チップのドライバ回路が故障による影響を受ける場合、2つのDRAMチップに影響を与えるチップ・キルをもたらす可能性があり、4バイト・シンボルのチップ・キル・エラーの代わりに、8バイト・シンボルのチップ・キル・エラーをもたらす可能性がある。
本発明の実施形態例は、低RBER DRAMデバイスおよび高RBER DRAMデバイスの両方で使用するための共通の構造(例えば、共通のエラー修正ロジック)を含む。新しい共通のエラー修正ロジックは、ハードウェアにおいて実装された場合、より多くのシリコンの面積を必要とし、低RBER DRAMデバイス用に最適化された従来のエラー修正ロジックのシリコンの面積の約4~8倍を必要とすると推定される。
ここで図5を参照すると、本発明の1つまたは複数の実施形態に従って、DIMM332を含むメモリ・システム330が概して示されている。図5のメモリ・システム330では、単一のランクへの2つの連続する読み取りのアクセスによって、キャッシュ・ラインが読み取られ、図4に示されている2つのランクからキャッシュ・ラインを抽出するのと全く同じ量のデータを生成する。図4のメモリ・システム300における2つのランクの方法と比較したときの、1つの顕著な違いは、チップ・キル故障によってキャッシュ・ライン内で失われるシンボルの数が2倍になるという点である。図5に示されているメモリ・システム330は、16のバースト長の単一の読み取りを使用して、DDR5 DRAMチップと共に使用することもできる。
ここで図6を参照すると、本発明の1つまたは複数の実施形態に従って、共通のエラー修正ロジックによって実行されるエラー修正動作の表400が概して示されている。ECCが64バイトのデータを処理する図1および図3に示されている例では、データまたは符号語をバッファ・デバイス304に取得するのに、(1つのポートを使用して)4サイクルかかる。図6に示されている表400は、高RBER DRAMおよび低RBER DRAMの両方において検出された任意のエラーの修正に起因して消費されるサイクル数を最小限に抑えるように設計された4つの経路の出口点408(出口0経路402、出口1経路404、出口2経路405、および出口3経路406)について、サイクル数410、高RBER DRAMでの推定発生頻度411、および低RBER DRAMでの推定発生頻度412を示している。本発明の1つまたは複数の実施形態に従って、4つの出口点408は、図4のDIMM302上のバッファ・デバイス304などのバッファ・デバイス上にあるエラー修正ロジックによって実装される。
基本の出口0経路402は、図3に関して上で説明された出口0経路202と同じである。この経路は、追加サイクルを全く消費しない迂回経路である。ここでも、高RBER DRAMデバイスからアクセスされるほとんどのデータがエラーを含まず、修正を必要としないが、実際には低RBER DRAMよりはるかに高い頻度でランダム・シンボル・エラーが発生するということが、仮定される。
図6に示されている次の高速経路の出口点408は、高RBER DRAMにおいて最も一般的なランダム・シンボル・エラー(1つまたは2つのシンボル内のランダム・エラー)を修正することを対象にする出口1経路404である。エラー修正ロジックは、マーク付けされたメモリ・デバイスが存在しない場合に、単一および二重のシンボル・エラーを修正する。この修正は、データをバッファ・チップに取得するための8サイクル、シンドロームを計算するための6サイクル、および修正を実行するための1サイクルを含む、15サイクルをデータ読み取りに追加する。本発明の1つまたは複数の実施形態に従って、計算される追加のシンドロームごとに、追加サイクルが追加される。高RBER DRAMに関連する単一および二重のシンボル・エラーは、160個のシンボルのキャッシュ・ライン内のランダムな位置に現れるため、発生した場合、修正の一部としてその位置が特定される必要がある。1E-5のビット・エラー・レートを仮定すると、平均で1マイクロ秒ごとに約21個の単一のシンボル・エラーが発生し、平均で1マイクロ秒ごとに約130個の二重のシンボル・エラーが発生することが予測され得る。これらの仮定されたレートで、二重または単一のシンボル・エラーは、75~80サイクルごとに発生し、低RBER DRAMと比較した場合に、約18%~20%の性能低下をもたらすことが予測される。2つのポートを備えるより大きいバッファ・チップを使用して、データまたは符号語をバッファに取得するのにかかる時間を8サイクルから4サイクルに短縮することによって、この性能低下を約14%に減らすことが可能である。
前述したように、ソフト・エラーまたはスタック・セルあるいはビット・ライン・エラーさえに起因する低RBER DRAMの単一のシンボル・エラーは、典型的には、一度に数回未満、発生する。キャッシュ・ライン内の二重のシンボル・エラーは、さらにいっそうまれであるため、エラー修正ロジックを通るこの出口1経路404は、低RBER DRAMの動作に影響を与えない。出口1経路404が低RBER DRAMの性能を改善するということさえ主張できるが、単一および二重のエラーの発生頻度は、典型的には、十分にまれであるため、この改善は無視できる。
本発明の1つまたは複数の実施形態に従って単一のシンボル・エラーを修正することの影響は、次のように計算できる。1マイクロ秒ごとに40個の1シンボル・エラーが発生すること、および3ギガヘルツ(GHz)のクロック速度を仮定する(そのため、各サイクルは0.3333ナノ秒である)。1マイクロ秒ごとに21個の単一のシンボル・エラーは、100ナノ秒ごとに約2つの単一のシンボル・エラー、または50ナノ秒ごとに1つの1シンボル・エラー、または平均で150サイクルごとに1つの単一のシンボル・エラーと同等である。単一のシンボル・エラーが修正されるたびに15サイクルが追加される場合、150サイクルのエラーのない動作を実行するのに、約165サイクルがかかり、すなわち、エラーのない動作からの約10%の低下である。
同様の方法で、本発明の1つまたは複数の実施形態に従って二重のシンボル・エラーを修正することの影響は、次のように計算できる。1ミリ秒ごとに130個の2シンボル・エラーが発生すること、および3ギガヘルツ(GHz)のクロック速度を仮定する(そのため、各サイクルは0.3333ナノ秒である)。1ミリ秒ごとに130個の2シンボル・エラーは、10マイクロ秒ごとに1.3個の2シンボル・エラー、または7.7マイクロ秒ごとに1つの2シンボル・エラー、または平均で2万サイクルごとに1つの2シンボル・エラーと同等である。2シンボル・エラーが修正されるたびに15サイクルが追加される場合、10,000サイクルのエラーのない動作を実行するのに、約10,015サイクルがかかり、すなわち、エラーのない動作からの約0.15%の低下であり、無視できる。
図6を再び参照すると、次の出口点408は出口2経路405である。表400に示されているように、出口2経路405は、修正を実行するのに22~25サイクルかかると推定される。出口2経路405は、マーク付けされた1つのチップ・キルおよび最大4つの追加のランダム・シンボル・エラーを処理するように設計されている。高RBERチップの場合、1秒当たり約500回、3つのシンボル・エラーが発生すると予測され、1秒当たり約90回、4つのシンボル・エラーが発生すると予測される。これは、430万サイクルごとに約1つのエラーを表し、430万サイクルごとに1回、22~25サイクルを追加することは、無視できる。しかし、出口2経路405は、単一のマーク付けされたチップ・キルの修正も含む。チップ・キルが発生するのはまれであるが、発生した場合、エラー修正ロジックのECC構造の1つまたは複数の実施形態例は、ランクがアクセスされるたびに22~25サイクルを追加する。22~25サイクルは、図3の出口1経路204を参照して前述したように、単一のチップ・キルおよび1つのシンボル・エラーに必要な8サイクルの2~3倍であり、そのため、現在の方法と比較した場合、チップ・キルが発生するときに、レイテンシを低RBER DRAMに追加する。しかし、追加されるレイテンシは、欠陥のあるチップが欠陥として検出された後に、それを置き換えるために予備DRAMチップが自動的に変更されてから、第1のチップ・キルの間に短時間存続する。ランク内の第2のDRAMの故障が発生するのは極めてまれであるが、発生した場合、追加された22~25サイクルが、無視できない性能への影響をもたらし、これは、DIMMまたはメモリ・デバイスの交換によってしか解決できない。
本発明の1つまたは複数の実施形態に従ってメモリ・デバイスがマーク付けされた場合(すなわち、チップ・キルが存在する場合)に3つ~4つのシンボル・エラーを修正することの影響は、次のように計算できる。1秒ごとに700個の3または4シンボル・エラーおよび3GHzのクロック速度を仮定する(そのため、各サイクルは0.3333ナノ秒である)。1秒ごとに700個の3または4シンボル・エラーは、10ミリ秒ごとに7つの3または4シンボル・エラー、または1,428ミリ秒ごとに1つの3または4シンボル・エラー、または平均で430万サイクルごとに1つの3または4シンボル・エラーと同等である。3または4シンボル・エラーが修正されるたびに10サイクルが追加される場合、修正のための追加の時間は無視できる。しかし、エラー修正ロジックを通るこの経路におけるチップ・キルは、ランクがアクセスされるたびに使用され、チップ・キルの経路を使用するために必要な10サイクルは、図3の出口1経路204によって必要とされるサイクルより2サイクル多い。
図6を再び参照すると、次の出口点408は、単一のマーク付けされたチップ・キルおよび最大9つの追加のランダム・シンボル・エラーを処理する出口3経路406である。エラー修正ロジックを通るこの経路は、32~35サイクルを必要とする。高RBER DRAMチップの場合、4~5分ごとに1回、キャッシュ・ライン内で5つのシンボル・エラーが発生することが推定され、6つ、7つ、または8つのシンボル・エラーがはるかに低い頻度であることが推定されるため、追加されるサイクルは無視できる。チップ・キルの状況では、追加サイクルは無視できないが、第1のチップ・キルに関連する繰り返される修正は、予備DRAMチップを変更することによって素早く解決される。DRAMドライバが2つのDRAMチップに伴う(例えば、二重のチップ・キルのような)問題を引き起こし、8つのシンボルが修正を必要とするまれな事例では、エラー修正ロジックの1つまたは複数の実施形態例によって、最大7つの追加のランダム・シンボル・エラーと共に、8つのシンボルすべてを修正することができ、サーバが動作を続行することを可能にするが、ある程度の無視できない性能への影響を伴うため、DIMMの交換が必要になる。キャッシュ・ライン全体を抽出するために単一のDDR4ランクからの二重の8バースト長の読み取りが実行されるか、または単一のDDR5ランクからの単一の16バースト長の読み取りが実行される代替の実施形態では、チップ・キルに起因してエラーになるシンボルの数は、常に8(4つのシンボルがエラーになる2つのランクのDDR4の実施形態の2倍)になる。前と同様に、この場合、またはマーク付けなしで二重のチップ・キルが発生する場合、エラー修正回路は、結合されているどの対が故障しているかを決定するために、可能性のあるすべての二重のチップ・キル・エラーの状況について解く可能性がある。
ここで図7を参照すると、本発明の1つまたは複数の実施形態に従って、エラー修正回路を含むメモリ・システム500のブロック図が概して示されている。図7は、メモリ502と、エラー修正ロジック516と、データを要求しているプロセッサ560(「要求元」)とを含む。エラー修正ロジック516は、図4のバッファ・デバイス304などのバッファ・デバイスによって実装され得る。エラー修正ロジック516は、システム・メモリのメモリ・コントローラによって実装されるか、あるいはメモリ・デバイスのキャッシュ・コントローラまたはその他のコントローラによって実装され得る。エラー修正ロジック516は、異なる複雑度を有するエラー(1つまたは2つのランダム・シンボル・エラー、1つのマーク付けされたチップ・キルおよび最大3つ~4つのランダム・シンボル・エラー、ならびに1つのマーク付けされたチップ・キルおよび9つのランダム・シンボル・エラー)を修正できるECC検出および修正ロジック512(例えば、回路)を含む。メモリ・バッファ・チップ580は、メモリ制御ロジック550と、「出口1」506と示された1つまたは2つのランダム・シンボル・エラー修正ロジックと、「出口2」508と示された1つのマーク付けされたチップ・キルおよび3つ~4つのランダム・シンボル・エラー修正ロジックと、「出口3」510と示された1つのマーク付けされたチップ・キルおよび9つのランダム・シンボル・エラー修正ロジックとを含む。
プロセッサ560によって読み込み命令が発行され、対応するメモリ・ブロック(またはキャッシュ・ライン)がメモリ502から受信された場合、そのメモリ・ブロックが、出力のうちの1つを介してプロセッサ560に送信される。エラー修正ロジック516のデフォルトの動作は、メモリから読み取られた未加工の(修正されていない)データが、図7の「出口0迂回」504と示された経路を介してプロセッサ560に配信される、迂回モードである。システム・アーキテクチャに依って、データは、1つまたは複数のバスを通過するか、またはエラー修正ロジック516とプロセッサ560の間を相互接続する。
当業者は、4つ以上の修正回路を提供することができ、本発明と共に任意のエラー訂正符号を使用できるということを理解するであろう。
1つまたは2つのシンボル・エラーを修正するために必要な計算は、1つのマーク付けされたチップ・キルおよび最大4つのランダム・シンボル・エラーを修正するために必要な計算よりも少ないロジックおよび時間を必要とする。迂回動作の相対的レイテンシが0である場合、1つまたは2つのシンボル・エラー修正のレイテンシはxになり、1つのマーク付けされたチップおよび最大4つのランダム・シンボル・エラーのレイテンシはyになり、1つのマーク付けされたチップおよび5つ~9つのランダム・シンボル・エラーのレイテンシはzになり、x<y<zである。読み取りの再試行の実行は、この単一の動作のレイテンシを増やすが、複数の修正出力を提供し、その複雑度での完全な修正に必要な1つの出力を選択することによって、メモリ・コントローラの全体的スループットが大幅に増加し、ただし追加されるレイテンシを最小限に抑える。
ここで図8を参照すると、本発明の1つまたは複数の実施形態に従って、メモリからデータを読み取るためのプロセスのフロー図600が概して示されている。図8に示されている処理は、図7のエラー修正ロジック516などのエラー修正ロジックによって実行され得る。この処理はブロック602で開始し、データを読み取るための通常のメモリの動作がブロック604で実行される。ブロック606で、読み取られたデータ内にシンボル・エラーが存在するかどうかが判定される。シンボル・エラーが存在しない場合、処理が、図7の出口0迂回504などの出口0迂回モードで、ブロック616に進む。
次に、ブロック612が実行されて、シンドロームにおいて単一および二重のチップ・キルのシグネチャを探し、いずれかが検出された場合、チップ・キルを含むメモリ・デバイスがマーク付けされる。このようにして、ブロック612は、検出された新しいハードウェア・エラーをマーク付けする。処理がブロック614に進み、ブロック614で、第1のチップ・キルが検出された場合、予備メモリ・デバイスが変更される(マーク付けされたメモリ・デバイスの代わりに使用される)。通常のメモリの動作がブロック604に進む。
ブロック606で、シンボル・エラーが存在することが決定された場合、処理がブロック608に進み、1つまたは2つのシンボル・エラーが検出されたかどうかを判定する。シンドロームが1つまたは2つのシンボル・エラーを示している場合、処理が、図7の出口1 506などの出口1高速経路修正モードで、ブロック610に進む。その後、処理がブロック612に進む。
ブロック608で、1つまたは2つのシンボル・エラーが存在しないことが決定された場合、処理がブロック618に進み、1つのメモリ・デバイスがチップ・キルとしマーク付けされ、3つまたは4つのシンボル・エラーが検出されたかどうかを判定する。シンドロームがマーク付けされたDRAMデバイスおよび3つまたは4つのシンボル・エラーを示している場合、処理が、図7の出口2 508などの出口2高速経路修正モードで、ブロック620に進む。その後、処理がブロック612に進む。
ブロック618で、マーク付けされたチップ・キルおよび3つまたは4つのシンボル・エラーが存在しないことが決定された場合、処理がブロック622に進み、1つのメモリ・デバイスがチップ・キルとしマーク付けされ、5つ~9つのシンボル・エラーが検出されたかどうかを判定する。シンドロームがマーク付けされたDRAMデバイスおよび5つ~9つのシンボル・エラーを示している場合、処理が、図7の出口3 510などの出口3修正モードで、ブロック624に進む。その後、処理がブロック612に進む。
ブロック622で、マーク付けされたチップ・キルおよび最大9つのシンボル・エラーが存在しないことが決定された場合、処理がブロック626に進み、ブロック626で、修正が成功したかどうかが判定される。修正が成功した場合、処理がブロック612に進む。ブロック626で、修正が成功しなかったということが決定された場合、処理がブロック628に進み、再試行がすでに実行されたかどうかを判定する。再試行がまだ実行されていない場合、処理がブロック634に進み、読み取りを再試行し、修正を試みる。修正が成功しなかった場合、ブロック628および634で、処理が読み取りの再試行を実行する。再び読み取った場合にキャッシュ・ラインがより少ないエラー(例えば、一時的なエラー)を含むことがあるということを念頭に置いて、読み取りの再試行および修正の試みが実行される。これが当てはまらない場合、システムは、読み取られているキャッシュ・ラインに関連付けられたより少ないランダム・シンボル・エラーを伴うチップ・キルについて解こうとする試みにおいて、同じランクに関連付けられた異なるキャッシュ・ラインを読み取ることも試みる。これは、システムがエラーをマーク付けしてから、対象のキャッシュ・ラインを読み取って修正することができる場合に、当てはまることがある。
ブロック628で、再試行がすでに実行されたということが決定された場合、処理がブロック630に進み、二重のチップ・マーク(例えば、2つDRAMデバイス間に点在するバス・エラー)が存在するかどうかを判定する。二重のチップ・マークが検出された場合、それが、マーク付けされたハードウェアの特殊ケースとしてマーク付けされる(すなわち、チップ・マークの代わりに、DRAMの対の二重のチップ・マークになる)。次に、修正不可能なエラーとして修正が失敗して、処理がブロック632に進む。これが、プロセッサに対してチェックストップまたはマシン・チェックを引き起こすことがある。ブロック630で、二重のチップ・マークが存在しないことが決定された場合、処理がブロック636に進み、ブロック636で、ロジックがすべての二重のチップ・キルの組について解こうとし、エラーを修正する解を検出した場合、ブロック638で、それが修正の解であるということが仮定され、ブロック612で、それを使用してチップ・キルの対をマーク付けする(この解が偶然であり、正しく機能している可能性は極めて低い)。
ブロック636で解が検出されなかった場合、処理がブロック632に進み、失敗した修正を処理する。
ここで図9を参照すると、本発明の1つまたは複数の実施形態に従って、データ・シンボルおよびエラー訂正符号(ECC)シンボル700の異なる組み合わせが概して示されている。図9に示されているシンボル・エラーの予想される数の推定値は、x4 DRAMが利用されており、高RBER DRAMの場合のランダムな均等に分散されたシングル・ビット・エラーのレートが1E-5エラー/ビットであり、低RBER DRAMの場合のランダムな均等に分散されたシングル・ビット・エラーのレートが1E-20エラー/ビットであり、3,680GB/sのメモリ帯域幅(すなわち、230GB/s x 16ソケット)または2.944E13ビット/秒であり、マークが存在してもx4チップ・キルを修正するために、4つのECCシンボルが必要であるという仮定に基づく。
図9からわかるように、高RBERデバイスに伴う課題は、頻繁なランダムな単一のシンボル・エラーだけでなく、単一の符号語内の複数のシンボル・エラーがより一般的であり、それらを軽減するために、従来使用されていたものと全く異なる新しいECC構造を必要としたということである。本明細書に記載された本発明の1つまたは複数の実施形態によって提供される技術的改善は、さらに重大なDRAMのハードウェア故障(例えば、チップ・キル)と共に少数の単一のソフト・エラーおよびハードの単一セル故障を処理するように設計された従来のECCとの、多数のランダム・シンボル・エラーを処理できるECCの統合を含む。この共通の統合されたECCは、低RBERデバイスのレイテンシに対する影響を最小限に抑えて、大量の複数のランダム・シンボル・エラーを処理する。
702とマーク付けされた行に示されているように、160バイトの符号語が高RBER DRAMと共に使用された場合、1つの1シンボル・エラーが1マイクロ秒ごとに発生し、130個の2シンボル・エラーが1ミリ秒ごとに発生し、511個の3シンボル・エラーが1秒ごとに発生し、91個の4シンボル・エラーが1分ごとに発生し、308個の5シンボル・エラーが1時間ごとに発生し、219個の6シンボル・エラーが1年ごとに発生し、0.36個の7シンボル・エラーが1年ごとに発生し、0.52個の8シンボル・エラーが1,000年ごとに発生すると予想される。
さまざまな動作のサイクル数が、ハードウェアの実装方法および技術ごとのRBERにおける変動に基づくECCの最適な調整方法に依って、変化する可能性があるため、図9に示されているデータは本質的に例である。
ここで図10を参照すると、本発明の1つまたは複数の実施形態に従って、図8の読み取り再試行ブロック634などの読み取りの再試行を実行するためのプロセス800のフロー図が概して示されている。図10に示されている処理は、図7のエラー修正ロジック516などのエラー修正ロジックによって実行され得る。一実施形態では、プロセスがブロック802で開始し、ブロック802で、キャッシュ・ライン読み取りの修正での前の試みが失敗している。ブロック804で、キャッシュ・ラインが再び読み取られ、ブロック806で、再び読み取られたキャッシュ・ラインが、以前に読み取られて正常に修正されなかったときよりも少ないエラーを含むかどうかが判定される。より少ないエラーが存在する場合、処理がブロック808に進み、ブロック808で、エラー修正ロジックが、すべての単一および二重のチップ・キルの状況を修正するための解を見つけようとする。ブロック810で判定されているように、解が検出された場合、ブロック812で処理が終了する(例えば、図8のブロック612に戻る)。解が検出されなかった場合、処理がブロック820に進む。
ブロック806で判定されているように、再び読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったときよりも少ないエラーを含んでいない場合、処理がブロック814に進み、ブロック814で、同じランク内の異なるアドレスからキャッシュ・ラインが読み取られる。処理がブロック818に進み、ブロック818で、ブロック814で読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったキャッシュ・ラインよりも少ないエラーを含むかどうかが判定される。より少ないエラーが存在する場合、処理がブロック808に進み、ブロック808で、エラー修正ロジックが、すべての単一および二重のチップ・キルの状況を修正するための解を見つけようとする。ブロック810で判定されているように、解が検出された場合、ブロック812で処理が終了する(例えば、図8のブロック612に戻る)。解が検出されなかった場合、処理がブロック820に進む。
ブロック818で、ブロック814で読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったキャッシュ・ラインよりも少ないエラーを含んでいないということが決定された場合、処理がブロック820に進む。ブロック820で、しきい値回数(この例では、「n」)の読み取りの再試行が実行されたかどうかが判定される。しきい値回数の読み取りの再試行が実行されていない場合、処理がブロック816および814に進み、ブロック814で、同じランク内の異なるアドレスからキャッシュ・ラインが読み取られる。しきい値回数の読み取りの再試行が実行されており、解が検出されなかった場合、修正が失敗し、処理がブロック822に進む(例えば、図8のブロック632)。
このようにして、修正が失敗した場合、キャッシュ・ラインが再び読み取られ、それが正しく機能しなかった場合、処理が、チップ・キルまたは二重のチップ・キルについて解こうとして、異なるアドレスからの再読み取りを試みる。この方法は、異なるアドレスが、チップ・キルのシンボル・エラーを伴うより少ないシンボル・エラーを含むことがあり、そしてエラーを伴うアドレスに関連するエラーを修正できる可能性があるため、正しく動作することがある。
ここで図11を参照すると、本発明の1つまたは複数の実施形態に従って、エラー修正ロジックを含むメモリ・システム900のブロック図が概して示されている。図11に示されているメモリ・システム900は、平面基板902上のDIMMコネクタ908に差し込まれるx4 DRAM DIMM906を含む。メモリ・システム900によって実行される処理は、(例えば、図4のメモリ・システム300に関して)前述した処理に類似しているが、エラー修正ロジックが、平面基板902上のバッファ・デバイス904内にあり、DIMM906によって共有されている。本発明の1つまたは複数の実施形態に従って、メモリ・システム900内の各DIMM906は、データを格納するための32個のデータDRAM、ECCチェックサムおよびメタデータ・シンボルを格納するための6つのECC DRAM、ならびに128バイトのキャッシュ・ライン内の最大15個のシンボルを修正するための2つの予備DRAMを含む。図11に示されているメモリ・システム900は、エラー修正ロジックを(図4に示されているような)DIMMから平面基板902に移動することによって、よりシンプルなDIMMを利用できるようにする。
ここで図12を参照すると、本発明の1つまたは複数の実施形態に従って、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正を提供する一部または全部の態様を実装するためのコンピュータ・システム1000のブロック図が概して示されている。本明細書に記載された処理は、ハードウェア、ソフトウェア(例えば、ファームウェア)、またはハードウェアとソフトウェアの組み合わせにおいて実装され得る。一実施形態例では、記載された方法は、少なくとも一部においてハードウェアに実装されてよく、モバイル・デバイス、パーソナル・コンピュータ、ワークステーション、ミニコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用コンピュータ・システム1000のマイクロプロセッサの一部であってよい。
一実施形態例では、図12に示されているように、コンピュータ・システム1000は、プロセッサ1005、メモリ・コントローラ1015に結合されたメモリ1012、および1つまたは複数の入力デバイス1045、またはローカルI/Oコントローラ1035を介して通信によって結合された周辺機器などの出力デバイス1047、あるいはその組み合わせを含む。これらのデバイス1047および1045は、例えば、プリンタ、スキャナ、マイクロホンなどを含んでよい。従来のキーボード1050およびマウス1055は、I/Oコントローラ1035に結合され得る。I/Oコントローラ1035は、例えば、1つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であってよい。I/Oコントローラ1035は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの追加の要素を含んでよい。
I/Oデバイス1047、1045は、例えばディスク・ストレージおよびテープ・ストレージ、ネットワーク・インターフェイス・カード(NIC:network interface card)または変調器/復調器(他のファイル、デバイス、システム、またはネットワークにアクセスするため)、無線周波(RF:radio frequency)またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、入力および出力の両方と通信するデバイスをさらに含んでよい。
プロセッサ1005は、ハードウェア命令またはソフトウェア、具体的には、メモリ1012に格納されたハードウェア命令またはソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ1005は、カスタム・メイドであるか、または市販されたプロセッサ、中央処理装置(CPU:central processing unit)、コンピュータ・システム1000に関連付けられた複数のプロセッサ間の補助プロセッサ、(マイクロチップまたはチップ・セットの形態での)半導体ベースのマイクロプロセッサ、マイクロプロセッサ、または命令を実行するためのその他のデバイスであってよい。プロセッサ1005は、実行可能命令のフェッチを高速化するための命令キャッシュ、データのフェッチおよび格納を高速化するためのデータ・キャッシュ、および実行可能命令とデータの両方の仮想アドレスから物理アドレスへの変換を高速化するために使用されるトランスレーション・ルックアサイド・バッファ(TLB:translation look-aside buffer)などのキャッシュを含むことができるが、これらに限定されない。キャッシュは、さらに多くのキャッシュ・レベル(L1、L2など)の階層として構造化され得る。
メモリ1012は、揮発性メモリ素子(例えば、DRAM、SRAM、SDRAMなどのランダム・アクセス・メモリ(RAM:random access memory))および不揮発性メモリ素子(例えば、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electronically erasable programmable read only memory)、プログラマブル読み取り専用メモリ(PROM:programmable read only memory)、テープ、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read only memory)、ディスク、フロッピー(R)・ディスク、カートリッジ、カセットなど)のうちの1つまたは組み合わせを含んでよい。さらに、メモリ1012は電子、磁気、光、またはその他の種類のストレージ媒体を組み込んでよい。メモリ1012が、種々のコンポーネントが互いに遠く離れた位置にあるが、プロセッサ1005によってアクセスされてよい、分散アーキテクチャを含むことができるということに注意する。
メモリ1012内の命令は、1つまたは複数の別々のプログラムを含んでよく、それらのプログラムの各々は、ロジック的機能を実装するための実行可能命令の順序付けられたリストを含む。図12の例では、メモリ1012内の命令は、適切なオペレーティング・システム(OS:operating system)1011を含む。オペレーティング・システム1011は、基本的に他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
例えば、プロセッサ1005の命令またはその他の取り出し可能な情報を含む追加データが、ストレージ1027に格納されてよく、ストレージ1027はハード・ディスク・ドライブまたは半導体ドライブなどのストレージ・デバイスであってよい。メモリ1012またはストレージ1027に格納される命令は、プロセッサが本開示のディスパッチ・システムおよび方法の1つまたは複数の態様を実行できるようにする命令を含んでよい。
コンピュータ・システム1000は、ディスプレイ1030に結合されたディスプレイ・コントローラ1025をさらに含んでよい。一実施形態例では、コンピュータ・システム1000は、ネットワーク1065に結合するためのネットワーク・インターフェイス1060をさらに含んでよい。ネットワーク1065は、コンピュータ・システム1000と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のIPベースのネットワークであってよい。ネットワーク1065は、コンピュータ・システム1000と外部システムの間で、データを送受信する。一実施形態例では、ネットワーク1065は、サービス・プロバイダによって管理された管理IPネットワークであってよい。ネットワーク1065は、例えば、WiFi、WiMaxなどの無線プロトコルおよび無線技術を使用して、無線方式で実装され得る。ネットワーク1065は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであってもよい。ネットワーク1065は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN:local area network)、無線広域ネットワーク(WAN:wide areanetwork)、パーソナル・エリア・ネットワーク(PAN:personal area network)、仮想プライベート・ネットワーク(VPN:virtual private network)、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含んでよい。
本明細書において説明されているように、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正を提供するためのシステムおよび方法が、コンピュータ・プログラム製品において、または図12に示されているようなコンピュータ・システム1000において、全体的または部分的に具現化され得る。
本明細書では、関連する図面を参照して、本発明の種々の実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間の種々の接続および位置関係(例えば、上、下、近接など)が示される。これらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合のいずれかを指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載された種々の作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含むさらに包括的な手順または工程に組み込まれ得る。
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含む」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含む組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、その他の要素を含むことができる。
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含むと理解され得る。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含むと理解され得る。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。
簡潔さの目的で、本発明の態様の作成および使用に関連する従来手法は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムの種々の態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含むコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasableprogrammable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタルバーサタイルディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備え得る。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Java(R)、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide areanetwork)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われ得る。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブルロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路を人用にカスタマイズするためのコンピュータ可読プログラム命令を実行し得る。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明の種々の実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定されたロジック機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表し得る。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生し得る。例えば、連続して示された2つのブロックは、実際には、含まれている機能に依って、実質的に同時に実行され得るか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限られない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。

Claims (17)

  1. メモリ・システムであって、
    メモリ・モジュールを備えており、前記メモリ・モジュールが、
    複数のメモリ・デバイスであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート(RBER)・メモリ・デバイスおよび低RBERメモリ・デバイスのうちの1つとして特徴付けられる、前記複数のメモリ・デバイスと、
    メモリ・バッファ・デバイスとを備えており、前記メモリ・バッファ・デバイスが、
    前記複数のメモリ・デバイスのうちの1つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスと、
    高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックとを備えており、前記共通のエラー修正ロジックが、
    異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第1の高速経路エラー修正ユニットを含んでおり、前記第1の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少なく、
    前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第2の高速経路エラー修正ユニットをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより大きく、前記第2の高速経路エラー修正ユニットが2つの欠陥のあるメモリ・デバイスを分離して修正し、
    予備メモリ・デバイスが、前記欠陥のあるメモリ・デバイスを置き換えるように変更される、
    メモリ・システム。
  2. 前記共通のエラー修正ロジックが、
    前記データ読み取りインターフェイスで受信されたデータを前記データの要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第1の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項1に記載のメモリ・システム。
  3. 前記共通のエラー修正ロジックが、少なくとも1つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項1に記載のメモリ・システム。
  4. 前記受信されたデータが128個のデータ・シンボルおよび22個のエラー訂正符号(ECC)シンボルを含んでおり、前記第1の高速経路エラー修正ユニットが、前記128個のデータ・シンボルおよび22個のECCシンボルのうちの最大2つにおけるランダム・シンボル・エラーを分離して修正する、請求項1に記載のメモリ・システム。
  5. 前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大4つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第2の高速経路エラー修正ユニットをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより長い、請求項に記載のメモリ・システム。
  6. 前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大9つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第3のエラー修正ユニットをさらに含んでおり、前記第3の高速経路エラー修正ユニットのレイテンシが前記第2の高速経路エラー修正ユニットの前記レイテンシより長い、請求項に記載のメモリ・システム。
  7. 前記共通のエラー修正ロジックが、追加のエラーがエラー修正の異なる段階に存在するかどうかを判定するように構成されたシンドローム不一致計算器(syndrome discrepancy calculator)をさらに備えている、請求項1に記載のメモリ・システム。
  8. メモリ・バッファ・デバイスであって、
    複数のメモリ・デバイスのうちの1つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート(RBER)・メモリ・デバイスおよび低RBERメモリ・デバイスのうちの1つとして特徴付けられる、前記データ読み取りインターフェイスと、
    高RBERメモリ・デバイスおよび低RBERメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックとを備えており、前記共通のエラー修正ロジックが、
    異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第1の高速経路エラー修正ユニットを含んでおり、前記第1の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少なく、
    前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第2の高速経路エラー修正ユニットをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより大きく、前記第2の高速経路エラー修正ユニットが2つの欠陥のあるメモリ・デバイスを分離して修正し、
    予備メモリ・デバイスが、前記欠陥のあるメモリ・デバイスを置き換えるように変更される、
    メモリ・バッファ・デバイス。
  9. 前記共通のエラー修正ロジックが、
    前記データ読み取りインターフェイスで受信されたデータを前記データの要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第1の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項に記載のメモリ・バッファ・デバイス。
  10. 前記共通のエラー修正ロジックが、少なくとも1つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項に記載のメモリ・バッファ・デバイス。
  11. 前記受信されたデータが128個のデータ・シンボルおよび22個のエラー訂正符号(ECC)シンボルを含んでおり、前記第1の高速経路エラー修正ユニットが、前記128個のデータ・シンボルおよび22個のECCシンボルのうちの最大2つにおけるランダム・シンボル・エラーを分離して修正する、請求項に記載のメモリ・バッファ・デバイス。
  12. 前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大4つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第2の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大9つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第3のエラー修正ユニットとをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより長く、前記第3のエラー修正ユニットのレイテンシより少ない、請求項11に記載のメモリ・バッファ・デバイス。
  13. メモリ・モジュールに結合されて配置された複数のメモリ・デバイスのうちの1つでの位置に対応するメモリ・アドレスから読み取られたデータを受信することであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート(RBER)・メモリ・デバイスおよび低RBERメモリ・デバイスのうちの1つとして特徴付けられる、前記受信することと、
    前記受信されたデータを入力として使用して共通のエラー修正ロジックを実行し、修正されたデータを生成することであって、前記共通のエラー修正ロジックが、高ランダム・シンボル・エラー・レート(RBER)・メモリ・デバイスおよび低RBERメモリ・デバイスの両方においてエラー状態を検出して修正するように構成されており、前記共通のエラー修正ロジックが、異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第1の高速経路エラー修正ユニットを含んでおり、前記第1の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない、前記生成することと、
    前記修正されたデータを前記データの要求元に出力することと、
    前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第2の高速経路エラー修正ユニットをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより大きく、前記第2の高速経路エラー修正ユニットが2つの欠陥のあるメモリ・デバイスを分離して修正することと、
    予備メモリ・デバイスが、前記欠陥のあるメモリ・デバイスを置き換えるように変更されること
    を含む、方法。
  14. 前記共通のエラー修正ロジックが、
    データ読み取りインターフェイスで受信された前記データを前記修正されたデータとして前記データの前記要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第1の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項13に記載の方法。
  15. 前記共通のエラー修正ロジックが、少なくとも1つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項13に記載の方法。
  16. 前記受信されたデータが128個のデータ・シンボルおよび22個のエラー訂正符号(ECC)シンボルを含んでおり、前記第1の高速経路エラー修正ユニットが、前記128個のデータ・シンボルおよび22個のECCシンボルのうちの最大2つにおけるランダム・シンボル・エラーを分離して修正する、請求項13に記載の方法。
  17. 前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大4つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第2の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大9つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第3のエラー修正ユニットとをさらに含んでおり、前記第2の高速経路エラー修正ユニットのレイテンシが前記第1の高速経路エラー修正ユニットの前記レイテンシより長く、前記第3のエラー修正ユニットのレイテンシより少ない、請求項16に記載の方法。
JP2020555447A 2018-04-16 2019-04-02 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック Active JP7249719B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/953,805 US10824504B2 (en) 2018-04-16 2018-04-16 Common high and low random bit error correction logic
US15/953,805 2018-04-16
PCT/IB2019/052691 WO2019202428A1 (en) 2018-04-16 2019-04-02 Common high and low random bit error correction logic

Publications (2)

Publication Number Publication Date
JP2021521524A JP2021521524A (ja) 2021-08-26
JP7249719B2 true JP7249719B2 (ja) 2023-03-31

Family

ID=68161547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020555447A Active JP7249719B2 (ja) 2018-04-16 2019-04-02 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック

Country Status (6)

Country Link
US (1) US10824504B2 (ja)
JP (1) JP7249719B2 (ja)
CN (1) CN111989745B (ja)
DE (1) DE112019001968B4 (ja)
GB (1) GB2587948B (ja)
WO (1) WO2019202428A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901839B2 (en) 2018-09-26 2021-01-26 International Business Machines Corporation Common high and low random bit error correction logic
CN114116137B (zh) * 2021-12-03 2023-03-14 北京得瑞领新科技有限公司 存储系统中纠错码的仿真方法及装置、存储介质、设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207376A (ja) 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 不揮発性記憶装置およびメモリコントローラ
JP2011065599A (ja) 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
JP2013003656A (ja) 2011-06-13 2013-01-07 Mega Chips Corp メモリコントローラ
US20150121166A1 (en) 2013-10-24 2015-04-30 International Business Machines Corporation Ecc bypass using low latency ce correction with retry select signal

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103830B1 (en) * 2002-12-18 2006-09-05 Applied Micro Circuits Corporation DC balanced error correction coding
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7305518B2 (en) 2004-10-20 2007-12-04 Hewlett-Packard Development Company, L.P. Method and system for dynamically adjusting DRAM refresh rate
US7227797B2 (en) * 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
US20070061669A1 (en) 2005-08-30 2007-03-15 Major Karl L Method, device and system for detecting error correction defects
US7949931B2 (en) * 2007-01-02 2011-05-24 International Business Machines Corporation Systems and methods for error detection in a memory system
US20100005220A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features
US20100332942A1 (en) * 2008-09-10 2010-12-30 Arm Limited Memory controller for NAND memory using forward error correction
US8560922B2 (en) * 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
KR20130086887A (ko) * 2012-01-26 2013-08-05 삼성전자주식회사 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법
US8898544B2 (en) 2012-12-11 2014-11-25 International Business Machines Corporation DRAM error detection, evaluation, and correction
WO2014113572A1 (en) 2013-01-16 2014-07-24 Maxlinear, Inc. Dynamic random access memory for communications systems
KR102050896B1 (ko) * 2013-02-19 2019-12-02 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
CN107608817B (zh) 2016-07-12 2020-11-10 深圳大心电子科技有限公司 解码方法、存储器存储装置及存储器控制电路单元
US10120585B2 (en) * 2016-08-10 2018-11-06 SK Hynix Inc. Memory system of optimal read reference voltage and operating method thereof
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207376A (ja) 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 不揮発性記憶装置およびメモリコントローラ
JP2011065599A (ja) 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
JP2013003656A (ja) 2011-06-13 2013-01-07 Mega Chips Corp メモリコントローラ
US20150121166A1 (en) 2013-10-24 2015-04-30 International Business Machines Corporation Ecc bypass using low latency ce correction with retry select signal

Also Published As

Publication number Publication date
WO2019202428A1 (en) 2019-10-24
CN111989745B (zh) 2024-08-09
US20190317856A1 (en) 2019-10-17
GB2587948B (en) 2021-11-24
JP2021521524A (ja) 2021-08-26
US10824504B2 (en) 2020-11-03
GB202017634D0 (en) 2020-12-23
GB2587948A (en) 2021-04-14
CN111989745A (zh) 2020-11-24
DE112019001968T5 (de) 2020-12-24
DE112019001968B4 (de) 2022-10-27

Similar Documents

Publication Publication Date Title
US10901839B2 (en) Common high and low random bit error correction logic
US9823967B2 (en) Storage element polymorphism to reduce performance degradation during error recovery
US8041990B2 (en) System and method for error correction and detection in a memory system
US8041989B2 (en) System and method for providing a high fault tolerant memory system
US8086783B2 (en) High availability memory system
US10572345B2 (en) First responder parities for storage array
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US9128868B2 (en) System for error decoding with retries and associated methods
US8171377B2 (en) System to improve memory reliability and associated methods
US20140063983A1 (en) Error Detection And Correction In A Memory System
US8352806B2 (en) System to improve memory failure management and associated methods
US8176391B2 (en) System to improve miscorrection rates in error control code through buffering and associated methods
US8181094B2 (en) System to improve error correction using variable latency and associated methods
US10417088B2 (en) Data protection techniques for a non-volatile memory array
US11170869B1 (en) Dual data protection in storage devices
US10606692B2 (en) Error correction potency improvement via added burst beats in a dram access cycle
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
US20160139988A1 (en) Memory unit
JP7249719B2 (ja) 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック
US20160147598A1 (en) Operating a memory unit
WO2016038673A1 (ja) 誤り訂正装置、誤り訂正方法、及び誤り訂正システム

Legal Events

Date Code Title Description
RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20201009

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210830

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220914

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230123

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: 20230228

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230316

R150 Certificate of patent or registration of utility model

Ref document number: 7249719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150