(57)【要約】共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックであって、複数のメモリ・デバイスおよびメモリ・バッファ・デバイスを含むメモリ・モジュールを含んでいる。メモリ・デバイスの各々は、高ランダム・ビット・エラー・レート（ＲＢＥＲ）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスのうちの１つとして特徴付けられる。メモリ・バッファ・デバイスは、メモリ・デバイスのうちの１つのメモリ・アドレスから読み取られたデータを受信するためのデータ読み取りインターフェイスを含む。メモリ・バッファ・デバイスは、高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するための共通のエラー修正ロジックも含む。共通のエラー修正ロジックは、異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを含む。エラー修正ユニットは、ランダム・シンボル・エラーを分離して修正するための第１の高速経路エラー修正ユニットを含む。
2021521524.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・システムであって、
メモリ・モジュールを備えており、前記メモリ・モジュールが、
複数のメモリ・デバイスであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート（ＲＢＥＲ）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスのうちの１つとして特徴付けられる、前記複数のメモリ・デバイスと、
メモリ・バッファ・デバイスとを備えており、前記メモリ・バッファ・デバイスが、
前記複数のメモリ・デバイスのうちの１つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスと、
高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックとを備えており、前記共通のエラー修正ロジックが、
異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第１の高速経路エラー修正ユニットを含んでおり、前記第１の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない、メモリ・システム。
【請求項２】
前記共通のエラー修正ロジックが、
前記データ読み取りインターフェイスで受信されたデータを前記データの要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第１の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項１に記載のメモリ・システム。
【請求項３】
前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第２の高速経路エラー修正ユニットをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより大きい、請求項１に記載のメモリ・システム。
【請求項４】
予備メモリ・デバイスが、前記欠陥のあるメモリ・デバイスを置き換えるように変更される、請求項３に記載のメモリ・システム。
【請求項５】
前記第２の高速経路エラー修正ユニットが、２つの欠陥のあるメモリ・デバイスを分離して修正するようにさらに構成されている、請求項３に記載のメモリ・システム。
【請求項６】
前記共通のエラー修正ロジックが、少なくとも１つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項１に記載のメモリ・システム。
【請求項７】
前記受信されたデータが１２８個のデータ・シンボルおよび２２個のエラー訂正符号（ＥＣＣ）シンボルを含んでおり、前記第１の高速経路エラー修正ユニットが、前記１２８個のデータ・シンボルおよび２２個のＥＣＣシンボルのうちの最大２つにおけるランダム・シンボル・エラーを分離して修正する、請求項１に記載のメモリ・システム。
【請求項８】
前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大４つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第２の高速経路エラー修正ユニットをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより長い、請求項７に記載のメモリ・システム。
【請求項９】
前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大９つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第３のエラー修正ユニットをさらに含んでおり、前記第３の高速経路エラー修正ユニットのレイテンシが前記第２の高速経路エラー修正ユニットの前記レイテンシより長い、請求項８に記載のメモリ・システム。
【請求項１０】
前記共通のエラー修正ロジックが、追加のエラーがエラー修正の異なる段階に存在するかどうかを判定するように構成されたシンドローム不一致計算器（syndrome discrepancy calculator）をさらに備えている、請求項１に記載のメモリ・システム。
【請求項１１】
メモリ・バッファ・デバイスであって、
複数のメモリ・デバイスのうちの１つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート（ＲＢＥＲ）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスのうちの１つとして特徴付けられる、前記データ読み取りインターフェイスと、
高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックとを備えており、前記共通のエラー修正ロジックが、
異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第１の高速経路エラー修正ユニットを含んでおり、前記第１の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない、メモリ・バッファ・デバイス。
【請求項１２】
前記共通のエラー修正ロジックが、
前記データ読み取りインターフェイスで受信されたデータを前記データの要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第１の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項１１に記載のメモリ・バッファ・デバイス。
【請求項１３】
前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第２の高速経路エラー修正ユニットをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより大きい、請求項１１に記載のメモリ・バッファ・デバイス。
【請求項１４】
予備メモリ・デバイスが、前記欠陥のあるメモリ・デバイスを置き換えるように変更される、請求項１３に記載のメモリ・バッファ・デバイス。
【請求項１５】
前記第２の高速経路エラー修正ユニットが、２つの欠陥のあるメモリ・デバイスを分離して修正するようにさらに構成されている、請求項１３に記載のメモリ・バッファ・デバイス。
【請求項１６】
前記共通のエラー修正ロジックが、少なくとも１つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項１１に記載のメモリ・バッファ・デバイス。
【請求項１７】
前記受信されたデータが１２８個のデータ・シンボルおよび２２個のエラー訂正符号（ＥＣＣ）シンボルを含んでおり、前記第１の高速経路エラー修正ユニットが、前記１２８個のデータ・シンボルおよび２２個のＥＣＣシンボルのうちの最大２つにおけるランダム・シンボル・エラーを分離して修正する、請求項１１に記載のメモリ・バッファ・デバイス。
【請求項１８】
前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大４つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第２の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大９つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第３のエラー修正ユニットとをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより長く、前記第３のエラー修正ユニットのレイテンシより少ない、請求項１７に記載のメモリ・バッファ・デバイス。
【請求項１９】
メモリ・モジュールに結合されて配置された複数のメモリ・デバイスのうちの１つでの位置に対応するメモリ・アドレスから読み取られたデータを受信することであって、前記複数のメモリ・デバイスの各々が、高ランダム・ビット・エラー・レート（ＲＢＥＲ）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスのうちの１つとして特徴付けられる、前記受信することと、
前記受信されたデータを入力として使用して共通のエラー修正ロジックを実行し、修正されたデータを生成することであって、前記共通のエラー修正ロジックが、高ランダム・シンボル・エラー・レート（ＲＢＥＲ）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方においてエラー状態を検出して修正するように構成されており、前記共通のエラー修正ロジックが、異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを備えており、前記複数のエラー修正ユニットが、ランダム・シンボル・エラーを分離して修正するための第１の高速経路エラー修正ユニットを含んでおり、前記第１の高速経路エラー修正ユニットのレイテンシが前記複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない、前記生成することと、
前記修正されたデータを前記データの要求元に出力することとを含む、方法。
【請求項２０】
前記共通のエラー修正ロジックが、
データ読み取りインターフェイスで受信された前記データを前記修正されたデータとして前記データの前記要求元に直接送信するための迂回経路をさらに備えており、前記迂回経路が、前記第１の高速経路エラー修正ユニットの前記レイテンシより少ない迂回のレイテンシを有している、請求項１９に記載の方法。
【請求項２１】
前記複数のエラー修正ユニットが、ランダム・シンボル・エラーと共に、前記複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第２の高速経路エラー修正ユニットをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより大きい、請求項１９に記載の方法。
【請求項２２】
前記第２の高速経路エラー修正ユニットが、２つの欠陥のあるメモリ・デバイスを分離して修正するようにさらに構成されている、請求項２１に記載の方法。
【請求項２３】
前記共通のエラー修正ロジックが、少なくとも１つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む、請求項１９に記載の方法。
【請求項２４】
前記受信されたデータが１２８個のデータ・シンボルおよび２２個のエラー訂正符号（ＥＣＣ）シンボルを含んでおり、前記第１の高速経路エラー修正ユニットが、前記１２８個のデータ・シンボルおよび２２個のＥＣＣシンボルのうちの最大２つにおけるランダム・シンボル・エラーを分離して修正する、請求項１９に記載の方法。
【請求項２５】
前記複数の修正ユニットが、欠陥のあるメモリ・デバイスおよび最大４つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第２の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大９つのデータ・シンボル内のランダム・シンボル・エラーを分離して修正するように構成された第３のエラー修正ユニットとをさらに含んでおり、前記第２の高速経路エラー修正ユニットのレイテンシが前記第１の高速経路エラー修正ユニットの前記レイテンシより長く、前記第３のエラー修正ユニットのレイテンシより少ない、請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、コンピュータ・メモリに関連しており、より詳細には、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供することに関連している。
【背景技術】
【０００２】
コンピュータ・システムは、多くの場合、コンピュータが電源投入されて動作可能である間にオペレーティング・システム・ソフトウェア、プログラム、およびその他のデータなどの情報を保持するために、かなりの量の高速なランダム・アクセス・メモリ（ＲＡＭ：random access memory）、ならびにハード・ディスク・ドライブ（ＨＤＤ：harddisk drives）および半導体ディスク（ＳＳＤ：solid state disks）などの不揮発性ストレージを必要とする。この情報は、典型的には、データのビットとも呼ばれる１および０のパターンから成るバイナリ・データである。データのビットは、多くの場合、より高いレベルでグループ化されて構造化される。例えば、バイトは、８ビットから成る。このバイナリ情報は、典型的には、コンピュータ・システムの電源投入時および初期プログラム・ロード（ＩＰＬ：initial program load）時に、ＨＤＤなどの不揮発性ストレージからＲＡＭに読み込まれる。データは、典型的にはのコンピュータの動作中にも、不揮発性ストレージからＲＡＭにページインされ、ＲＡＭから不揮発性ストレージにページアウトされる。典型的には、コンピュータ・システムが使用するすべてのプログラムおよび情報が、より小さくより高速な、より費用のかかるＲＡＭメモリに同時に収まることはできない。収まった場合でも、ＲＡＭが揮発性ストレージであるため、このデータは、コンピュータ・システムの電源が切られたときに失われる。現在、多数のＨＤＤおよびＳＳＤを使用して不揮発性ストレージ・システムを構築するのが一般的である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
【課題を解決するための手段】
【０００４】
本発明の実施形態は、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供するための方法、システム、およびコンピュータ・プログラム製品を含む。非限定的なシステムの例として、複数のメモリ・デバイスおよびメモリ・バッファ・デバイスを含むメモリ・モジュールを含むメモリ・システムが挙げられる。複数のメモリ・デバイスの各々は、高ランダム・ビット・エラー・レート（ＲＢＥＲ：random bit error rate）・メモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスのうちの１つとして特徴付けられる。メモリ・バッファ・デバイスは、複数のメモリ・デバイスのうちの１つでの位置に対応するメモリ・アドレスから読み取られたデータを受信するように構成されたデータ読み取りインターフェイスを含む。メモリ・バッファ・デバイスは、高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方から読み取られたデータにおけるエラー状態を検出して修正するように構成された共通のエラー修正ロジックも含む。共通のエラー修正ロジックは、異なる複雑度のエラー修正を提供し、異なるレイテンシを有する複数のエラー修正ユニットを含む。複数のエラー修正ユニットは、ランダム・シンボル・エラーを分離して修正するための第１の高速経路エラー修正ユニット（fast path error correction unit）を含む。第１の高速経路エラー修正ユニットのレイテンシは、複数のエラー修正ユニットのうちの他のエラー修正ユニットのレイテンシより少ない。利点として、高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方に同じエラー修正ロジック（例えば、回路）を使用できることを挙げることができる。結合された回路は、高速経路エラー修正ユニットを提供することによって、高ＲＢＥＲを示すメモリ・デバイスおよび低ＲＢＥＲを示すメモリ・デバイスの両方のエラーをチェックして修正することによる性能への影響を最小限に抑えることができる。
【０００５】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、データ読み取りインターフェイスで受信されたデータをデータの要求元に直接送信するための迂回経路をさらに含む共通のエラー修正ロジックを含んでよく、この迂回経路は、第１の高速経路エラー修正ユニットのレイテンシより少ない迂回のレイテンシを有する。利点として、データ読み取りがエラーを示さない限り、全くレイテンシを読み取りサイクルに追加しない経路を提供できることを挙げることができる。
【０００６】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、ランダム・シンボル・エラーと共に、複数のメモリ・デバイスのうちの欠陥のあるメモリ・デバイスを分離して修正するように構成された第２の高速経路エラー修正ユニットをさらに含む複数のエラー修正ユニットを含んでよく、第２の高速経路エラー修正ユニットのレイテンシは第１の高速経路エラー修正ユニットのレイテンシより大きい。利点として、ランダム・シンボル・エラーと共に欠陥のあるメモリ・デバイスを処理する高速経路エラー修正ユニットを提供することによって、欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
【０００７】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、欠陥のあるメモリ・デバイスを置き換えるための予備メモリ・デバイスにおける変更を含んでよい。利点として、欠陥のあるメモリ・デバイスの代わりに予備メモリ・デバイスを提供することによる、可用性の改善を挙げることができる。利点として、欠陥のあるメモリ・デバイスに必要な修正をなくすことによって、その後の読み取りの性能への影響を最小限に抑えることができることを挙げることもできる。
【０００８】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、２つの欠陥のあるメモリ・デバイスを分離して修正するように構成されている第２の高速経路エラー修正ユニットを含んでよい。利点として、２つの欠陥のあるメモリ・デバイスを処理する高速経路エラー修正ユニットを提供することによって、２つの欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
【０００９】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、少なくとも１つのランダム・シンボル・エラーを除去することによって欠陥のあるメモリ・デバイスを分離するために、他のメモリ・アドレスからのデータ読み取りを要求するように構成された読み取り再試行ロジックをさらに含む共通のエラー修正ロジックを含んでよい。利点として、ランダム・シンボル・エラーをフィルタリングして除去できることによる、改善されたエラー修正能力を挙げることができる。
【００１０】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、受信されたデータが１２８個のデータ・シンボルおよび２２個のエラー訂正符号（ＥＣＣ：error correction code）シンボルを含み、第１の高速経路エラー修正ユニットが、１２８個のデータ・シンボルのうちの最大２つにおけるランダム・シンボル・エラーを分離して修正するということを、含んでよい。利点として、エラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
【００１１】
上または下で説明されている特徴のうちの１つまたは複数に加えて、または代替として、さらなる実施形態は、欠陥のあるメモリ・デバイスおよび最大４つのデータ・シンボルにおけるランダム・シンボル・エラーを分離して修正するように構成された第２の高速経路エラー修正ユニットと、欠陥のあるメモリ・デバイスおよび最大９つのデータ・シンボルにおけるランダム・ビット・エラーを分離して修正するように構成された第３のエラー修正ユニットとをさらに含む複数の修正ユニットを含んでよい。第２の高速経路エラー修正ユニットのレイテンシは、第１の高速経路エラー修正ユニットのレイテンシより長く、第３のエラー修正ユニットのレイテンシより小さい。利点として、種々のエラー状態を処理するさまざまな高速経路エラー修正ユニットを提供することによって、欠陥のあるメモリ・デバイスのエラーをチェックして修正することによる性能への影響を最小限に抑えることができることを挙げることができる。
【００１２】
その他の特徴および長所が、本発明の手法によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を長所および特徴と共によく理解するために、説明および図面を参照されたい。
【００１３】
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００１４】
【図１】デュアル・インライン・メモリ・モジュール（ＤＩＭＭ：dual in-linememory module）を含む現在のメモリ・システムを示す図である。
【図２】デュアル・インライン・メモリ・モジュール（ＤＩＭＭ：dual in-linememory module）を含む現在のメモリ・システムを示す図である。
【図３】現在のメモリ・システムにおけるエラー修正動作の表を示す図である。
【図４】本発明の１つまたは複数の実施形態に従って、ＤＩＭＭを含むメモリ・システムを示す図である。
【図５】本発明の１つまたは複数の実施形態に従って、ＤＩＭＭを含むメモリ・システムを示す図である。
【図６】本発明の１つまたは複数の実施形態に従って、エラー修正ロジックによって実行されるエラー修正動作の表を示す図である。
【図７】本発明の１つまたは複数の実施形態に従って、エラー修正回路を含むメモリ・システムのブロック図である。
【図８】本発明の１つまたは複数の実施形態に従って、メモリからデータを読み取るためのプロセスのフロー図である。
【図９】本発明の１つまたは複数の実施形態に従って、データ・シンボルおよびエラー訂正符号（ＥＣＣ）シンボルの異なる組み合わせを示す図である。
【図１０】本発明の１つまたは複数の実施形態に従って、読み取り再試行を実行するためのプロセスのフロー図である。
【図１１】本発明の１つまたは複数の実施形態に従って、エラー修正ロジックを含むメモリ・システムのブロック図である。
【図１２】本発明の１つまたは複数の実施形態に従って、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジックを提供する一部または全部の態様を実装するための、コンピュータ・システムのブロック図である。
【発明を実施するための形態】
【００１５】
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、２つの要素間に通信経路が存在することを表しており、それらの要素間に要素／接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
【００１６】
添付の図および開示された実施形態に関する以下の詳細な説明では、図に示された種々の要素が、２桁または３桁の参照番号を付与されている。わずかな例外を除いて、各参照番号の左端の数字は、その要素が最初に示された図に対応している。
【００１７】
ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：dynamic randomaccess memory）・デバイスの設計および製造ならびにその他の種類の革新的ストレージ・デバイスにおける最近の進歩は、一部の技術に、従来のＤＲＡＭデバイスで発生するものよりはるかに高いランダム・ビット・エラー・レート（ＲＢＥＲ）をもたらした。例えば、従来の低ＲＢＥＲ  ＤＲＡＭデバイスは、約１Ｅ−２０の範囲内のＲＢＥＲを有することがあり、より新しい技術は、さらに頻繁なランダム・ビット・エラーを示し、約１Ｅ−５の範囲内のＲＢＥＲを有することがある。高ＲＢＥＲを有するＤＲＡＭまたはその他のストレージ技術を使用する場合、ビット・エラーおよびシンボル・エラーが定期的に発生することがあるため、キャッシュ・ラインにおけるシンボル・エラーの発生は、極めてまれな現象ではなくなる。３ギガヘルツ（ＧＨｚ）より大きいクロック周波数を有するシステムの場合、エラーは、動作の１マイクロ秒ごとの頻度で、または１マイクロ秒未満ごとの頻度でも、発生することがある。これによって、７５サイクルに１回の頻度で、１つのシンボル・エラーが発生することになる。一部の状況では、高ＲＢＥＲを有するメモリ・デバイスが利用され、その他の状況では、低ＲＢＥＲを有するメモリ・デバイスが引き続き利用されることが予想される。
【００１８】
本発明の実施形態は、高ＲＢＥＲを示すメモリ・デバイスおよび低ＲＢＥＲを示すメモリ・デバイスの両方に、エラーをチェックして修正することによる性能への影響を最小限に抑える共通のランダム・ビット・エラーまたはランダム・シンボル・エラーの修正方式を提供する。共通のエラー修正ロジック（ハードウェアまたはソフトウェアあるいはその両方）によって実装され得る本明細書に記載された共通のエラー修正設計は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の動作に対する性能への影響を最小限に抑えながら、高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方に利用できる。本明細書に記載された実施形態によって、ＳＫ  Ｈｙｎｉｘが提供するＭＤＳ（Managed DRAM Solution）ＤＲＡＭおよびＮＡＮＤフラッシュ・デバイス（書き込み耐久限度に達した後に、急速に増大するビット・エラー・レートを有する）などの、ただしこれらに限定されない、任意の高ＲＢＥＲメモリ・デバイスを実装できる。同様に、本明細書に記載された実施形態によって、ＤＤＲ３、ＤＤＲ４、およびＤＤＲ５などのダブル・データ・レート（ＤＤＲ：double data rate）・メモリ・デバイス、ならびにＨＤＤに関連付けられた磁気プラッタなどの、ただしこれらに限定されない、任意の低ＲＢＥＲメモリ・デバイスを実装できる。高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスの両方に同じエラー修正ロジックを使用できることは、任意のＲＢＥＲのメモリ・デバイスをメモリ・モジュール上に設置し、共通のメモリ制御／バッファ・チップを使用して相互運用できるようにすることによって、柔軟性を実現する。何が高ＲＢＥＲメモリ・デバイスおよび低ＲＢＥＲメモリ・デバイスを構成するかは、技術に応じて変わることができる。一実施形態例では、低ＲＢＥＲ  ＤＲＡＭデバイスは、１ビット当たり約１Ｅ−２０のエラーの範囲内のＲＢＥＲを有し、高ＲＢＥＲ  ＤＲＡＭデバイスは、１ビット当たり約１Ｅ−５のエラーの範囲内のＲＢＥＲを有する。
【００１９】
本明細書に記載された実施形態のうちの１つまたは複数は、ＩＢＭ（Ｒ）  Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓ（ＴＭ）サーバで通常は使用される１２８バイトのキャッシュ・ラインを対象にするが、実施形態は、任意のサイズのキャッシュ・ラインおよびキャッシュ・メモリ以外の位置に格納されたデータに対して実装され得る。１つまたは複数の実施形態は、さらに多くのＥＣＣシンボルを保持するための追加のＤＲＡＭチップを組み込み、ｘ８およびｘ１６  ＤＲＡＭ内のチップ・キル（chip kill）に関連する追加のシンボル・エラーのエラー修正を拡張することによって、ｘ８またはｘ１６などの、ｘ４以外のＤＲＡＭチップを使用して実装されてもよい。ＩＢＭ（Ｒ）  Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓは、１０番目のｘ８  ＤＲＡＭチップを９個のＤＲＡＭチップのランクに追加することによって、従来のＥＣＣを使用してこれをすでに行っている。
【００２０】
本明細書に記載された本発明の１つまたは複数の実施形態に従って、バランスのとれた方法が提供され、この方法は、予備メモリ・デバイスまたはメモリ・チップを活用することによって、従来のＤＲＡＭハードウェアのエラーおよびランダム・シンボル・エラーにおける大幅な増加の両方を効果的に修正でき、チップ・キルまたはその他の壊滅的なチップ・ハードウェアの故障のシンボル・エラーならびに追加のエラー訂正符号（ＥＣＣ）シンボルの影響を（現在の設計と比較して）最小限に抑える。この方法は、データを読み取るための共通のデコーダを含んでおり、故障したチップを予備に置き換え、故障したチップに関連する失われたデータを再作成することによって第１のチップ・キルの事象に関連する修正の絶え間ない集中をなくすために使用される追加のＥＣＣシンボルと共に、予備ＤＲＡＭチップを含むことによって、第１のチップ・キル（すなわち、メモリ・デバイス全体が故障しているとしてマーク付けされる）が発生するときの性能を向上させた。本発明の１つまたは複数の実施形態に従って、デコーダは、低ＲＢＥＲデバイスのレイテンシが影響を受けないように、高速な出口経路を使用して設計される。例えば、新しい高速な出口経路のうちの１つは、ランダムな１つおよび２つのシンボル・エラーを修正し、低ＲＢＥＲデバイスにはめったに使用されないが、高ＲＢＥＲデバイスには非常に頻繁に使用される。本発明の１つまたは複数の実施形態に従って、ＥＣＣは、従来のＥＣＣと比較した場合に、追加のロジックを含む。本明細書に記載された統合された（または共通の）ＥＣＣは、さらに重大なＤＲＡＭのハードウェア故障（例えば、チップ・キル）と共に少数の単一ソフト・エラーおよびハードの単一セル故障を処理するように設計された従来のＥＣＣと共に、多数のランダム・シンボル・エラーを処理することができ、低ＲＢＥＲデバイスのレイテンシに対する影響を最小限に抑えて、大量の複数のランダム・シンボル・エラーを効果的に処理することができるＥＣＣである。
【００２１】
本発明の１つまたは複数の実施形態に従って、ＯｐｅｎＣＡＰＩメモリ・インターフェイス（ＯＭＩ：OpenCAPI memory interface）ＤＩＭＭが実装される。各ＤＩＭＭは、ＤＲＡＭチップの１つまたは複数のランクと、ＤＲＡＭに対して制御およびアクセスし、データの読み取りおよび書き込み、ならびにエラー修正を実行するためのハードウェアまたはソフトウェアあるいはその両方を含むバッファ・チップとを含むことができる。本発明の１つまたは複数の実施形態に従って、本明細書に記載されたエラー修正ロジックは、バッファ・チップ上に配置され、ハードウェアまたはソフトウェアあるいはその両方において実装され得る。本発明の１つまたは複数の実施形態に従って、バッファ・チップは、ＤＩＭＭ上に配置されず、ＤＩＭＭまたはＤＩＭＭ上のメモリ・デバイスあるいはその両方と、１つまたは複数のバスを介して通信する。
【００２２】
現世代のＤＤＲ４  ＤＲＡＭチップなどの現在の低ＢＥＲレートのメモリ・デバイスの主要な故障モードは、軽微なハードウェアの欠陥として、および宇宙線およびアルファ粒子の衝突に起因するビット反転として、自分自身を明示することができる単一セルのエラーを含む。単一セルのエラーの発生頻度は、サーバ内に設置されたメモリのサイズによって決まるが、それらの一般に、おそらく通常は多くても、１つのシステム当たり少数で毎日発生する、比較的まれな事象である。バックグラウンド・スクラビング・メカニズムを使用して、ソフト・エラーを探しながらすべてのアドレス位置を読み取り、エラーを検出した場合、スクラビングによってエラーの修正を試みることによって、システム内のソフト・エラーを検出して修正することができる。ＩＢＭ（Ｒ）  Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓなどのサーバ上のメモリ全体のスクラビングは、典型的には、１日に２〜３回行われることがあるが、さらに多い頻度または少ない頻度で発生するようにスケジューリングされ得る。
【００２３】
さらに重大なハードウェア故障は、単一のキャッシュ・ラインにマッピングされているＤＲＡＭチップの複数のビットがエラーになる、ビット・ライン故障を含む。「チップ・キル」は、ＤＲＡＭデバイスまたはチップのかなりの部分が故障し、チップから読み取られたすべてのビットがエラーになることを引き起こす、より壊滅的な故障である。チップ・キル故障は、通常、まれであるが、特に大きなサーバ群全体で発生し、発生した場合に、データを修正するための追加サイクルの発生を引き起こす。チップ・キルは、ＤＲＡＭが存在するランクに関連付けられたすべてのＤＲＡＭのアドレスにエラーを引き起こし、メモリ・インターリーブが有効化されていても、多くの場合、修正のための追加サイクルの不利益が発生し、したがって、修正に起因して発生した追加サイクルに起因する性能低下をもたらす可能性がある。
【００２４】
ＲＡＭは、システムごとおよびアプリケーションごとの特定のメモリ要件に基づいて、ストレージの増分量をコンピュータに追加できるように、多くの場合、着脱可能なモジュールとして設計されてパッケージ化される。ＤＩＭＭは、おそらく現在使用されている最も普及しているメモリ・モジュール構造である。ＤＩＭＭは、複数のメモリ・チップが取り付けられた薄い長方形のカードであり、通常は、保持しているデータが失われるのを防ぐために定期的なリフレッシュを必要とするダイナミック・メモリ・デバイスまたはチップを使用して、設計される。当初、ＤＲＡＭチップは、非同期式デバイスだったが、後の世代の同期式ＤＲＡＭ（ＳＤＲＡＭ）チップは、性能を改善するために同期式インターフェイスを有している。最終的に、その他の速度の向上と共に、プリフェッチを使用してメモリ帯域幅を改善し、レイテンシを改善する、ＤＤＲデバイスが利用可能になった。バースト長は、任意のアクセス中にＤＲＡＭチップの各データ線（ＤＱ）から読み取られたビットの数または各データ線（ＤＱ）に書き込まれたビットの数である。ＤＤＲ３およびＤＤＲ４メモリ・デバイスは、典型的には、標準的な８のバースト長を有し、ＤＤＲ５メモリ・デバイスは、典型的には、標準的な１６のバースト長を有する。
【００２５】
ＲＡＭ、ＨＤＤ、およびＳＳＤを含むデータ・ストレージのサイズは、コンピュータ・システムがより強力になるにつれて、増大し続けた。数百兆ビットから成る単一のコンピュータＲＡＭを含むことは、現在珍しいことではない。エラー修正などの何らかの軽減がなければ、ＲＡＭのただ１つのビットの故障がコンピュータ・システム全体の故障を引き起こす可能性がある。軽減されないハード・エラーは、それが単一のセルの故障、複数のビットの故障、チップ全体の故障、またはＤＩＭＭ全体の故障のいずれであれ、修理されるまで、システムを動作不能にすることがある。予備部品が到着して故障を修理できるまで、ダウンタイムが数時間、または場合によっては数日さえ続くことがある。このダウンタイムは、ビジネス（特に、コンピュータ・システムに高度に依存するビジネス）に大きな影響を与えることがある。
【００２６】
データは物理的な電気的デバイスに格納され、最も壊滅的な故障は、デバイス全体の故障に関連する。データのすべてが単一のデバイスに格納され、その単一のデバイスが故障した場合、すべてのデータが失われ、回復は不可能である。格納されるデータを複数の物理的デバイスにわたって分散することは、まだ機能しているデバイスに格納されている残りのデータおよびＥＣＣシンボルを利用することによって、失われたデータの回復を可能にするために採用されている戦略である。欠陥のあるデバイスは、ＤＩＭＭ上のＤＲＡＭメモリ・チップ（すなわち、「チップ・キル」）、ＤＩＭＭ全体の故障、またはＨＤＤの故障であることがあり、これらの各々は、多数のデータおよびＥＣＣシンボルを含む。故障中に失われるデータおよびＥＣＣが多いほど、欠落しているデータを修正して回復するために必要なＥＣＣシンボルの合計が多くなる。最も効果的なエラー修正方式の設計にとって、ストレージ・システムの物理的構造の慎重な検討は重要である。
【００２７】
正常動作中にＨＤＤの故障、ＳＳＤの故障、またはＲＡＭの故障が発生する確率は、増大し続けるコンピュータ・メモリのサイズ、およびそれと同時に小さくなり続けるメモリ・デバイス（例えば、ＤＲＡＭチップおよびＮＡＮＤフラッシュ・チップ）のサイズに起因するストレージの密度の増加に少なくとも部分的に起因して、増え続けた。より小さい回路サイズが物理的限界の寸前に近づくにつれて、可変保持時間エラー（variable retention time errors）などの新しい故障モードが現れたため、堅牢なエラー修正の必要性がいっそう重要になった。
【００２８】
ビット・エラーを検出して修正するための手法は、過去数十年を経て、複雑な科学に進化した。最も基本的な検出手法の１つは、奇数パリティまたは偶数パリティの使用であり、この手法では、データ・ワード内のビットの排他的ＯＲ（ＸＯＲ）が一緒に計算されて、パリティ・ビットを生成する。例えば、偶数個の１を含むデータ・ワードは０のパリティ・ビットを有し、奇数個の１を含むデータ・ワードは１のパリティ・ビットを有する。シングル・ビット・エラーがデータ・ワード内で発生する場合、このエラーは、データからパリティを再生成し、その後、このパリティが、ワードと共に格納されている最初に生成されたパリティと一致するかどうかチェックすることによって、検出され得る。
【００２９】
Richard Hammingは、さらに複雑なＸＯＲフィールド（エラー訂正符号（ＥＣＣ）フィールド）を各符号語に追加することによって、このパリティ手法を拡張して、エラーを検出するだけでなく、エラーを修正することもできるということを認識した。このＥＣＣフィールドは、エラー（データ・ワードのわずかな変化）を簡単に検出し、特定し、修正できるようにする、排他的ＯＲが一緒に計算されるワード内の異なるビットの組み合わせである。検出して修正できるエラーの数は、データ・ワードに追加されたＥＣＣフィールドの長さに直接関連している。１つの目標は、有効なデータ・ワードおよび符号語の組み合わせの間の最小限の分離距離を確保することである。検出されて修正されるエラーの数が多いほど、有効な符号語間の最小限の分離距離を確保するために必要なＥＣＣフィールドが長くなる。有効な符号語間のこの距離は、ハミング距離と呼ばれる。
【００３０】
エラー検出手法およびエラー修正手法は、一般に、ノイズのある通信の送信媒体内のデータ、またはデバイスの物理的特性に起因するデータ・エラーの有限な確率が存在するストレージ媒体のデータを復元するためにも使用される。ＲＡＭ内の１または０を表す電圧レベルとしてデータを格納するために使用される回路は、高エネルギーの宇宙線およびアルファ粒子に起因するデバイスの故障および状態変化の両方の影響を受ける。磁気面上の磁場として１および０を格納するＨＤＤも、最初に格納されていたデータ・パターンからのデータ・パターンの変化を引き起こす可能性のある磁気媒体における不完全性およびその他のメカニズムの影響を受ける。
【００３１】
１９８０年代において、ＲＡＭメモリ・デバイスのサイズは、ソフト・エラーの発生頻度がシステムの信頼性全体に顕著な影響を与え始める程度にまで初めて縮小した。各ビットを保持するラッチ回路は、メモリ・ビットの反転がかなり定期的に発生し始めるほど、正常な背景放射に関連するアルファ粒子の衝突および宇宙線に十分に敏感になった。これらの粒子はデバイスに損傷を与えないが、一時的なメモリ・エラーを引き起こす。これらはソフト・エラーと呼ばれ、多くの場合、単一のビットのみに影響を与える。このタイプの単一ビット故障は、正しいデータまたは新しいデータをメモリ位置に単に再び書き込むことによって、修正できる。
【００３２】
Hammingによって提案されたようなメモリのＥＣＣは、エラーの検出および修正を可能にするために、パリティ符号の組み合わせをデータ・ワードのさまざまなビット位置で使用する。データ・ワードがメモリに書き込まれるたびに、新しいＥＣＣ符号語が生成されてデータと共に格納され、データがメモリから読み取られるときに、データの検出および修正を可能にする。ＲＡＭデバイスに適用された最初のＥＣＣは、ダブルビット・エラー検出（ＤＥＤ：double-bit error detection）およびシングルビット・エラー修正（ＳＥＣ：single-bit error correction）を可能にした。一時的なエラーの修正に加えて、ＳＥＣ／ＤＥＣのＥＣＣは、ＲＡＭデバイス内の単一ビットの永続的ハード・エラーの透過的な回復も可能にする。
【００３３】
加えて、補完／再補完プロセスを使用してソフト・エラーを修正して、メモリのアライメント・エラーを減らすのを支援することによって、ＥＣＣの有効性を改善するために、スクラビング・ルーチンも開発された。
【００３４】
ＨＤＤは、多くの場合、不良セクタを検出するために使用されるＥＣＣなどのチェッカーを組み込んだ。巡回冗長検査（ＣＲＣ：Cyclic redundancy check）および水平冗長検査（ＬＲＣ：longituderedundancy check）が、ＨＤＤ電子機器に組み込まれるチェッカーとして、または故障を検出して修正するためのディスク・アダプタと共に、採用されてもよい。これらのチェッカーは、ＨＤＤのエラーを検出して修正するために、上位のコードおよびアプリケーションによって使用されてもよい。ＣＲＣおよびＬＲＣは、データ・エラーの検出を支援するために、データと同時に生成されて書き込まれる。ＣＲＣおよびＬＲＣは、典型的には、データから生成される相対的に小さい、実質的に一意のビット・パターンを生成するハッシュ関数を介して作成される。データがＨＤＤから読み取られるときに、チェックサムが再生成され、プラッタまたはディスクに格納されているチェックサムと比較される。ディスク上でエンコードされている磁気パターンから取り出されたデータにエラーがないことを保証するために、これらのチェックサムのシグネチャは、最初に生成されてデータと共にディスクに保存されているシグネチャと正確に一致するか、または同一でなければならない。
【００３５】
性能を改善するか、またはディスク・ストレージ・システムの可用性を高めるか、あるいはその両方のために、新磁気ディスク制御機構（ＲＡＩＤ：Redundant array of independent disk）システムが開発された。ＲＡＩＤシステムは、データを複数の独立したＨＤＤにわたって分散する。それぞれ異なる特徴および関連する異なる良い点と悪い点を有する多くの異なるＲＡＩＤ方式が開発されている。性能、可用性、および使用率／効率（顧客のデータを実際に保持しているディスクの割合）は、ＲＡＩＤ方式の特徴または属性の例である。ある属性における改善が、多くの場合、別の属性の悪化をもたらすことがあるため、種々のＲＡＩＤ方式に関連するトレードオフを慎重に検討する必要がある。
【００３６】
ＲＡＩＤ−０は、性能を改善するための複数のＨＤＤにわたるデータのストライピングである。ＲＡＩＤ−１は、可用性を改善し、データ損失を防ぐために２つの異なるＨＤＤ上にデータの正確なコピーを２つ維持する、データのミラーリングである。一部のＲＡＩＤ方式を一緒に使用して、組み合わさった恩恵を得ることができる。例えば、ＲＡＩＤ−１０は、性能および可用性の両方を改善するための、アレイ内の複数のＨＤＤにわたるデータ・ストライピングおよびミラーリングの両方である。ＲＡＩＤ−３、ＲＡＩＤ−４、およびＲＡＩＤ−５は、単一のＸＯＲチェックサムを使用して単一のデータ要素のエラーを修正するという点において、非常に似ている。ＲＡＩＤ−３は、専用のパリティＨＤＤを使用するバイト・レベルのストライピングであり、ＲＡＩＤ−４は、専用のパリティＨＤＤと共にブロック・レベルのストライピングを使用し、ＲＡＩＤ−５は、ＲＡＩＤ−４に似たブロック・レベルのストライピングであるが、分散されたパリティを使用する。ＲＡＩＤ−５では、パリティがすべてのＨＤＤにわたって実質的に均一に分散され、このようにして、性能ボトル・ネックとしての専用のパリティＨＤＤを除去しているため、専用のパリティＨＤＤが存在しない。ＲＡＩＤ−３、ＲＡＩＤ−４、およびＲＡＩＤ−５の重要な属性は、それぞれ、何らかの独立した手段を用いて故障の位置を特定できる場合に、単一のデータ要素の故障を修正できることである。この能力によって、ＲＡＩＤ−３、ＲＡＩＤ−４、およびＲＡＩＤ−５は、完全なＨＤＤの故障を修正できる。
【００３７】
産業界全体で使用されているＲＡＩＤ関連の用語には、一貫性のなさおよび曖昧さが存在することがある。以下の定義は、特に明記しない限り、本開示におけるこれらの用語の使用によって意味される内容である。「アレイ」は、ＲＡＩＤの消失符号の１つまたは複数のインスタンスが実装されるシンボルを保持するハード・ディスク・ドライブの集合である。「シンボル」または「要素」は、データまたはパリティの基本単位である。これらは、消失符号の基礎的要素である。ＨＤＤの場合、シンボルは、典型的には、連続的なセクタのセット内に保持される。要素は、固定された数のバイトから成る。要素を固定された数のブロックとして定義することも一般的である。したがって、「ブロック」も固定された数のバイトを表す。「ストライプ」は、データ要素およびパリティ要素の完全な接続されたセットであり、この依存しているデータ要素のセット全体で計算されるパリティ計算の関係に従属的に関連している。符号化理論では、ストライプは符号語または符号のインスタンスである。「ストリップ」は、１つの物理的ＨＤＤ上に存在するストライプの断片であり、単一のハード・ディスク・ドライブ上の近接する要素の集合を含む。ストリップは、同じディスクおよびストライプのデータ要素またはパリティ要素あるいはその両方を含む。ストリップおよび列という用語は、交換可能なように使用される。符号化理論では、ストリップは符号語に関連付けられ、ストライプ単位と呼ばれることもある。符号語内のストリップのセットがストライプを形成する。ストリップが同じ数の要素を含むのが、最も一般的である。場合によっては、ストライプは、まとめてグループ化されて、「ストライド」と呼ばれる上位の構造を形成することがある。
【００３８】
産業界全体で一般に認められているＲＡＩＤ−６の単一の定義は存在しない。一般に、ＲＡＩＤ−６は、二重チェックサムを含むブロック・レベルまたはバイト・レベルのストライピングのことを指し、何らかの独立した手段によって故障を特定できた場合に、最大２つのデータ要素の故障の修正を可能にする。ＲＡＩＤ−６は、故障の位置が不明である場合に、単一故障を特定して修正する能力も有する。ＲＡＩＤ−６は、さらに一般的なリードソロモン・エラー訂正符号の特定の例である。これらの強力な符号には、深宇宙探査から、デジタル・ビデオ・ディスク（ＤＶＤ：digital video disc）・プレイヤーにおけるコンパクト・ディスクのエラーまでに及ぶ応用においてエラーを修正する、広範囲にわたる用途があった。
【００３９】
ＲＳ符号は、データ要素またはシンボルに適用される非バイナリの巡回符号である。ＲＳ（ｎ，  ｋ）符号は、ｋ＝データ・シンボルの数、ｍ＝ビット単位のシンボル長、およびｎ＝シンボルの総数を有し、０＜ｋ＜ｎ＜２（ｍ＋１）であると定義され得る。独立した手段によってエラーの位置が決定されない場合、ｃ＝シンボル・エラー修正能力をさらに定義することによって、ｎ−ｋ＝２ｃが得られる。言い換えると、シンボルの総数とデータ・シンボルの数の差が、ＲＳ符号のデータ修正能力に直接比例する。
【００４０】
最小距離は、有効な符号語間のビット差の数である。本明細書において使用されるとき、符号語という用語は、後に１つまたは複数のＥＣＣシンボルが続く、単位として読み取られて修正されるデータ・シンボルのグループのことを指す。ＲＳ符号は、任意の線形符号の可能な最大の最小距離を実現する。非バイナリ符号の場合、ハミング距離に類似している最小距離は、ｄｍｉｎ＝ｎ−ｋ−１によって与えられる。ｅ＝消失訂正能力（すなわち、故障の位置が独立して決定された場合に故障を修正する能力）を定義することによって、ｅ＝ｄｍｉｎ−１＝ｎ−ｋ＝２ｃが得られる。言い換えると、何らかの独立した手段によってエラーの位置が決定されない場合に、故障の半数のみを修正することができ、したがってＲＳ符号は、位置を決定してエラーを修正することにおいて役立つ。
【００４１】
ＲＳ符号は、未知数について解くために使用できる一連の連立方程式であると考えることができる。これらの未知数は、故障を含むデータ・シンボルまたはシンボルの位置のいずれかである。ＲＡＩＤ−６は、例えば、２つの方程式を使用して、各行内の各データ要素に適用される２つの独立したチェックサムを生成する。Ｑ（ｘ）＝ＲＳチェックサム（ここで、ｘ＝ａ）、Ｐ（ｘ）＝ＲＳチェックサム（ここで、ｘ＝１）、およびｄ０，  ｄ１，  ．．．，  ｄＮ＝多項式係数を定義することによって、多項式形を有する次のＲＳチェックサム方程式が得られる：  Ｑ（ｘ）  ＝  ｄ０  ＋  ｄ１＊ｘ  ＋  ｄ２＊ｘ２  ＋  ．．．  ｄ（Ｎ−１）＊ｘ（Ｎ−１）。この方程式を使用して、係数について解き、データ要素を修正することができ、または故障の位置が不明である場合に、この方程式を使用して、ｘの累乗について解き、位置を特定することができる。
【００４２】
ＲＡＩＤ−３、ＲＡＩＤ−４、およびＲＡＩＤ−５の単純なＸＯＲが、方程式が次のようになるようにｘ＝１とした場合の特殊ケースであるということがわかり得る：
Ｐ（ｘ）  ＝  ｄ０  ＋  ｄ１  ＋  ｄ２＋  ．．．  ｄ（Ｎ−１）。この一般方程式の多くの使用可能な変形が存在する。主な要件は、この方程式が原始多項式であること、すなわち、共通根が存在しない場合に、素数に類似しているということである。それによって、解が常に有限体（ガロア体）内の一意の値にマッピングされることを保証する。
【００４３】
一般に、現在のエラー修正ロジックは、高ＲＢＥＲメモリ・デバイスまたは低ＲＢＥＲメモリ・デバイスのいずれかに対して最適化され、エラー修正ロジックを含む同じ回路が、両方の種類のメモリ・デバイスに使用されるのを防ぐことができる。
【００４４】
ここで図１を参照すると、ＤＩＭＭ１０２を含む現在のメモリ・システム１００が概して示されている。図１に示されているメモリ・システム１００は、バッファ・デバイス１０４を含むＤＩＭＭ１０２に加えて、データを格納するための１６個のデータＤＲＡＭの２つのランク（すなわち、合計で３２個のデータＤＲＡＭ１０６）、ＥＣＣおよびメタデータ・シンボルを格納するための４つ（１つのランクにつき２つ）のＥＣＣ  ＤＲＡＭ１０８、ならびに２つ（１つのランクにつき１つ）の予備ＤＲＡＭ１１０を含む。バイト・サイズのシンボルに対するリードソロモン（ＲＳ：Reed-Solomon）のようなシンボル修正などの従来のＥＣＣ設計を、チップ・キルなどのハードウェア故障の位置が記録される故障マーキング手法と共に、利用できる。欠陥のあるメモリ・デバイスの位置を記録するか、またはマーク付けすることによって、有限な限られた数のＥＣＣシンボルを節約し、より効果的に利用して、エラー修正能力を改善することができる。ＥＣＣシンボルは、本明細書では「修正情報」とも呼ばれる。
【００４５】
図１のメモリ・システム１００に示されているように、エラー修正ロジックは、１９×４個のＤＲＡＭチップの２つのランクを利用する１２８バイトのキャッシュ・ライン用に設計されている。ＤＤＲ４  ｘ４  ＤＲＡＭチップは、各アクセスが８ニブル、または８バイトの４つのシンボルを得るように、典型的には、８のバースト長を有する。この設計は、単一セル故障が、それ自身を単一のシンボル・エラーとして明示するが、エラーを修正するために発生する追加サイクルの数は、その特定のＤＲＡＭのアドレスがアクセスされるときにのみ発生し、したがって、性能に対して大きな影響を与えないようになっている。チップ・キルは、多くても８ニブル（４つのシンボル）に影響を与えるが、ランク内のすべてのＤＲＡＭのアドレスのデータに対して修正が必要になり、そのため性能上の不利益がより広範囲にわたり、重大である。
【００４６】
メタデータを保持する各ランク内の２つのＥＣＣ  ＤＲＡＭ１０８は、７つのＥＣＣシンボル（この例ではバイト）および他の目的に（例えば、データの属性を説明するタグとして）使用される１バイトを提供する。図１に示されているように、ＥＣＣは、６４バイトのデータに対して同時に動作するため、７つのＥＣＣシンボルを使用して、３つのランダム・シンボル・エラーを特定し、修正することができる。エラー・マーキングは、エラーの位置が前もって決定されるか、または何らかの他の手段によって決定されるため、より多くのエラーの修正を可能にする。図１に示されているバッファ・デバイス１０４などの現在のＯＭＩバッファ・チップは、低ＲＢＥＲ  ＤＲＡＭデバイを対象にした従来の方法を実装し、図３を参照して下で説明されているエラー修正などのエラー修正を実行する。
【００４７】
ここで図２を参照すると、ＤＩＭＭ１３２を含む現在のメモリ・システム１３０が概して示されている。図２のメモリ・システム１３０では、単一のランクへの２つの連続する読み取りのアクセスによって、キャッシュ・ラインが読み取られ、図１に示されているように２つのランクからキャッシュ・ラインを抽出するのと全く同じ量のデータを生成する。図１のメモリ・システム１００における２つのランクの方法と比較したときの、１つの顕著な違いは、チップ・キル故障によってキャッシュ・ライン内で失われるシンボルの数が２倍になるという点である。図２に示されているメモリ・システム１３０は、１６のバースト長の単一の読み取りを使用して、ＤＤＲ５  ＤＲＡＭチップと共に使用することもできる。
【００４８】
ここで図３を参照すると、現在のメモリ・システムにおけるエラー修正動作の表２００が概して示されている。１２８バイトのキャッシュ・ラインを含んでいても、ＥＣＣが６４バイトのデータを処理する図１に示されている例では、データまたは符号語をバッファ・デバイス１０４に取得するのに、（１つのポートを使用して）４サイクルかかる。本明細書において使用されるとき、「サイクル」という用語は、バッファ・デバイス１０４上にあるプロセッサまたは読み取られているデータを要求しているプロセッサなどのプロセッサのクロック・サイクルのことを指す。図２に示されている表２００は、次の３つの高速経路の出口点２０８に関して、サイクル数２１０および推定発生頻度２１２を示している：  低ＲＢＥＲメモリ・デバイスで検出された任意のエラーの修正に消費されるサイクル数を最小限に抑えるように設計された出口０経路２０２、出口１経路２０４、および出口２経路２０６。３つの出口点２０８は、例えば、図１のＤＩＭＭ１０２上のバッファ・デバイス１０４などのバッファ・デバイス上にあるエラー修正ロジックによって、実装され得る。
【００４９】
第１の基本経路の出口点である出口０経路２０２は、追加サイクルを全く消費せず、ほとんどのデータが修正を必要としないということを仮定する、エラー修正ロジックの迂回経路である。投機的読み込みの場合、要求元（例えば、コア・プロセッサ）によって迂回データが消費される。非投機的読み込みの場合、データが修正を必要としないということを保証するために、要求元によってデータが直ちに消費されない。したがって、プロセッシング・コアを通る一部の経路は、このデータの処理を続行することを許可し、そのため後でＥＣＣによってデータ・エラーが検出されない場合（通常は、これが当てはまる）、処理において遅延が発生しないため、性能が改善される。後でエラーが検出された場合、パイプ・ラインがフラッシュされ、正しい修正済みの置換データがパイプに供給される。
【００５０】
図３の表２００を参照すると、エラー修正ロジックから出る次の最速経路は出口１経路２０４であり、出口１経路２０４は、単一のマーク付けされたチップおよび最大１つの追加のランダム・シンボル・エラーを修正することができる。このためには、チップ・キルの修正のための４つのＥＣＣシンボル、および付随するランダム・シンボル・エラーを特定して修正するための別の２つのシンボルが必要になる。エラー修正ロジックを通るこの経路（出口１経路２０４）は、データをバッファ・デバイス１０４に取得するための４サイクル、および修正を実行するための４サイクルという、追加の８サイクルを消費する。表２００に示されているように、さまざまな理由により発生する可能性があるマーク付きの単一のランダム・シンボル・エラーの発生頻度は、低ＢＥＲ  ＤＲＡＭチップの場合、相対的に小さい。このエラーは、通常は、多くても１日に極めて少ない回数発生し、おそらくそれよりはるかに少ない頻度でしか発生しないソフト・エラーまたはスタック・セルあるいはビット・ライン・エラー（bit line error）さえを含む。
【００５１】
チップ・キル故障は、典型的には、比較的まれである。大きなサーバ群では、多くの場合、チップ・キル故障を含むＤＩＭＭを置き換える必要がないことが望ましく、したがって、第１のチップ・キル故障を素早く除去するために、予備ＤＲＡＭチップが使用される。チップ・キルが存在する場合、予備ＤＲＡＭが変更されるまで、出口１経路２０４が、エラー修正ロジックを通る基本経路になり、追加の８サイクルのみを消費する。単一のチップ・キル故障の場合、追加された８サイクルに関連する性能への影響は、一時的であり、したがって修理が不要であるため、長期間の悪影響を性能に与えない。チップ・キルによる性能への影響を最小限に抑えるために、予備チップが、欠陥のあるメモリ・デバイスの交換用として使用される構成に変更される。この置換プロセスが完了し、代替チップにデータが再作成されて復元された後に、エラー修正ロジックを通る出口１経路２０４が通過されなくなり、出口０経路２０２を使用して読み取りが再開される。
【００５２】
他のすべてのエラー事象の場合、エラー修正ロジックからの最終経路は、完全なＥＣＣ機能を採用する出口２経路２０６である。出口２経路２０６は、１つのマーク付けされないチップ・キルおよび最大１つの追加のシンボル・エラーを修正することができる。エラー修正ロジックを通ってこの経路を通過するには、追加の１２サイクルがかかる。どのメモリ・デバイスまたはチップに欠陥があるか不明であることに起因して、エラー修正ロジックが、有効な解の検索においてチップ・キルのすべての組み合わせについて解く必要があるため、この経路の通過にはより長いサイクルがかかる。出口２経路２０６は、１２サイクル（データをバッファ・チップに取得するための４サイクルおよび修正を実行するための８サイクル）を消費する。出口２経路２０６は、チップ・キルが存在する場合に、それがマーク付けされる以前に使用される。エラー修正ロジックは、可能性のあるすべてのチップ・キルの状況について解き、１つの状況が一致する場合、このロジックはエラーを修正し、次に、欠陥のあるチップにマークを付けることができ、その後、ランク内の第１のチップ・キルの場合に、（１２サイクルの代わりに８サイクルを消費して）出口１経路２０４を使用することができ、予備チップを変更できるようにする。エラー修正ロジックがエラーを修正できない場合、より少ないエラーを含むキャッシュ・ラインが得られるように期待して、読み取りの再試行が実行される。
【００５３】
大まかに言うと、「ｔ」個のエラーおよび「ｅ」個の消失の場合のエラー位置多項式を取得するには、典型的には、ｅ＋２ｔサイクルがかかる。一般に、正しい数のエラーが識別されたことをより確かなものにするために、２つ以上のシンドロームが処理されるべきである。しかし、SarwateおよびShanbhagのＲＩＢＭデコーダに基づく一部のデコーダは、すべてのシンドロームを一緒に処理し、デコーディングが完了していることのチェックを、連続する不一致がすべて０であることをチェックすることによって、より少ないサイクルで実行することができる。本明細書において使用されるとき、「シンドローム」という用語は、エラーが発生しなかった場合に０になることが保証され、そうでない場合、エラーの位置および値を決定するために使用される、受信されたデータに対して行われる計算のことを指す。従来のリードソロモン・デコーダでは、シンドロームは、エラーになっている受信されたデータ内の位置を決定する根を持つ多項式を計算するために使用される。この多項式は、エラー位置多項式と呼ばれる。エラー位置多項式は、そのシンボル位置内の修正する必要のあるビットを計算するために、エラー評価多項式と呼ばれる第２の多項式と共に使用される。一部のＥＣＣでは、一般的な位置多項式を計算しない特殊なデコーダによってエラー修正回路が実装されるため、位置多項式を計算するためのサイクル数に関する式ｅ＋２ｔが当てはまらない。
【００５４】
本発明の１つまたは複数の実施形態に従って、バックグラウンド・スクラブが実行されるまで、予備チップが変更されない。この結果、より長い追加サイクルの不利益が発生するが、予備メモリ・デバイスを変更し、故障したメモリ・デバイスに関連するデータを再作成する機能をファームウェアに実行させることによって、ハードウェアロジックを簡略化することができる。
【００５５】
ここで図４を参照すると、本発明の１つまたは複数の実施形態に従って、ＤＩＭＭ３０２を含むメモリ・システム３００が概して示されている。図４に示されているメモリ・システム３００は、バッファ・デバイス３０４を含むＤＩＭＭ３０２に加えて、データを格納するための３２個（１つのランクにつき１６個）のデータＤＲＡＭ３０６、ＥＣＣ（または修正情報）およびメタデータ・シンボルを格納するための６つ（１つのランクにつき３つ）のＥＣＣ  ＤＲＡＭ３０８、ならびに２つ（１つのランクにつき１つ）の予備ＤＲＡＭ３１０を含む。バイト・サイズのシンボルに対するリードソロモン（ＲＳ）のようなシンボル修正などの従来のＥＣＣ設計を、チップ・キルなどのハードウェア故障の位置が記録される故障マーキング手法と共に、利用できる。欠陥のあるメモリ・デバイスの位置を記録するか、またはマーク付けすることによって、有限な限られた数のＥＣＣシンボルを節約し、より効果的に利用して、エラー修正能力を改善することができる。
【００５６】
図４のメモリ・システム３００に示されているように、エラー修正ロジックは、２０×４個のＤＲＡＭチップの２つのランクを利用する１２８バイトのキャッシュ・ライン用に設計されている。ＤＤＲ４  ｘ４  ＤＲＡＭチップは、各アクセスが８ニブル、または４バイトのシンボルを得るように、典型的には、８のバースト長を有する。この設計は、単一セル故障が、それ自身を単一のシンボル・エラーとして明示するが、エラーを修正するために発生する追加サイクルの数は、その特定のＤＲＡＭのアドレスがアクセスされるときにのみ発生し、したがって、性能に対して大きな影響を与えないようになっている。チップ・キルは、多くても８ニブル（４バイトのシンボル）に影響を与えるが、ランク内のすべてのＤＲＡＭのアドレスのデータに対して修正が必要になり、そのため性能上の不利益がより広範囲にわたり、重大である。
【００５７】
メタデータを保持する各ランク内の３つのＥＣＣ  ＤＲＡＭ３０８は、１１個のＥＣＣシンボル（この例ではバイト）および他の目的に（例えば、タグとして）使用される１バイトを提供する。図４に示されているように、従来のＥＣＣとは異なり、このＥＣＣは、１２８バイトのデータを同時に処理し、キャッシュ・ライン全体でより多くのＥＣＣシンボルを処理できるようにすることによって、修正の堅牢性を強化するため、２２個のＥＣＣシンボルを使用して、７つのランダム・シンボル・エラーを容易に特定し、修正することができる。理論的には、ランダム・シンボル・エラーが唯一の関心である場合、２２個のＥＣＣシンボルを使用して１１個のシンボル・エラーを特定し、修正することができる。エラー・マーキングは、エラーの位置が前もって決定されるか、または何らかの他の手段によって決定されるため、より多くのエラーの修正を可能にする。１つまたは複数の実施形態に従って、バッファ・デバイス３０４は、図６を参照して下で説明されているエラー修正などのエラー修正を実行するために、低ＲＢＥＲを有するメモリ・デバイスおよび高ＲＢＥＲを有するメモリ・デバイスの両方に対して最適化されたエラー修正ロジックを実装する。本発明の１つまたは複数の実施形態に従って、低ＲＢＥＲメモリ・デバイスに対する（例えば、経過サイクルに対する）影響を最小限に抑えて、高ＲＢＥＲメモリ・デバイスをサポートする能力が実現される。
【００５８】
本発明（ＥＣＣデコーダまたはエラー修正ロジック）の１つまたは複数の実施形態に従って、図４に示されているＤＩＭＭ３０２の場合、エラーおよび消失に伴うレイテンシを次のように推定できる。デュアル・ポートのバッファ・チップを使用した場合、ＤＲＡＭデバイスからバッファ・チップにすべてのデータが到着するには、８サイクル（１つのランクにつき４サイクル）がかかる。シングル・ポートのバッファ・チップを使用した場合、バッファ・チップにすべてのデータが到着するには、１６サイクルがかかる。シンドロームは、多くても追加の１サイクルでデータが取得されたときに計算されるため、８サイクルまたは９サイクル後にシンドロームが計算される。図に示されているように、一部の実施形態では、すべてのデータが到着するのに１６サイクルを必要とすることがあり、その場合、デコーディングのサイクルの総数が８だけ増える。
【００５９】
１つまたは複数の実施形態に従って、データが８サイクルを超えて到着し、「ｅ」個のシンボルがマーク付けされており、追加の「ｔ」個のエラーを修正するのが望ましい。「ｔ」個のエラーおよび「ｅ」個の消失の場合のエラー位置多項式を取得するには、典型的には、ｅ＋２ｔサイクルがかかる。エラーが正しく識別されて修正されたという信頼性を得るために、２つの追加のシンボルが処理され、そのためマーク付けされたチップを仮定すると、チップ・キルに関する４つのシンボルおよび（例えば、２つのＤＲＡＭ間に共有データ・バスが存在することに起因する）ＤＲＡＭドライバの点在する故障の二重のチップ・マークに関する８つのシンボル・エラーが存在し、これらが両方ともチップに影響を与える可能性がある。次の２つのシンドロームとの一貫性を検証するために、サイクル・コストまたはサイクル数は８＋ｅ＋２ｔ＋２になり、ここで、８はＤＲＡＭチップからデータを取り出すためのサイクル数であり、ｅは消失の数であり、２ｔは、ｔ個のエラーの場合の位置多項式であり、＋２は、データを修正するため（修正を計算して各データ位置に適用するため）にかかる、エラー位置多項式の計算後のサイクル数である。したがって、サイクル数は１０＋ｅ＋２ｔに等しくなり、マーク付けされた二重のチップに関してｅ＝８を仮定すると、サイクル数は１０＋２ｔに等しくなる。マーク付けされたチップが存在しない場合、サイクル数は１０＋２ｔになり、このサイクル数は、シンドロームを前提として、位置多項式を見つけるコストだけではない合計サイクル・コストである。
【００６０】
したがって、追加サイクルの合理的に控えめな推定は、マーク付けされたチップが存在する場合、１８＋２ｔになり、エラーを修正するべきマーク付けされたチップが存在しない場合、１０＋２ｔになる。これは、数サイクルを超えて修正されたデータを返すデコーダを含めて、データの取得の開始から修正されたデータが返されるまでのレイテンシになる。新しいチップ故障が発生し、新しい欠陥のあるチップ以外に最大で３つのエラーが存在する場合、８（欠陥のあるチップのシンボル）＋３（その他のランダム・シンボル・エラー）＝１１個のシンボル・エラーの修正が実行され得る。このようにして、１０＋ｅ＋２ｔを使用して１０＋２（８＋３）が得られ、エラーを処理するために、１０＋２２＝３２サイクルがかかる。これは、使用できる戦略の一例にすぎず、欠陥のあるメモリ・デバイス以外の追加のエラーを修正するための戦略が、他の実施形態によって採用され得る。
【００６１】
本発明の１つまたは複数の実施形態に従って、共通の低ＲＢＥＲ  ＤＲＡＭおよび高ＲＢＥＲ  ＤＲＡＭのエラー修正ロジック設計戦略／方法が実装される。一実施形態に従って、エラー修正ロジックが、１２８バイトのキャッシュ・ラインのエラーを修正する。データ・シンボル、ＥＣＣシンボル、およびその他のメタデータが、２０個のメモリ・デバイスの２つのランクから取り出され、２０個のメモリ・デバイスのうち、１６個のメモリ・デバイスがデータを保持し、３つのメモリ・デバイスがＥＣＣシンボルおよびメタデータを保持し、１つのメモリ・デバイスが予備メモリ・デバイスである。高ＲＢＥＲメモリ・デバイスにおけるより多くのビット・エラーを軽減するために、ランクごとにＥＣＣシンボルの追加のメモリ・デバイスが使用される。この構造によって、２２個のＥＣＣシンボルおよびメタデータの２つのシンボルが得られ、高ＲＢＥＲ  ＤＲＡＭが確実に機能できるようにし、さらにＯＭＩバッファなどのバッファ・デバイスの標準的な低ＲＢＥＲ  ＤＲＡＭの性能に悪影響を与えない。
【００６２】
加えて、本発明の１つまたは複数の実施形態に従って、同じバッファ・チップを含む単一のＤＩＭＭを、製品ライン（例えば、ローエンド、ミッドレンジ、およびハイエンド）全体にわたって使用できる。これを可能にするために、異なる種類のメモリ・デバイスが、単一のＤＩＭＭへの同じコネクタを有することができる。バッファ・チップ上で別々のエラー修正ロジックを提供することによって、例えば低ＲＢＥＲ  ＤＲＡＭの場合の実施形態例によって、異なるキャッシュ・ライン・サイズもサポートされ得る。現在のＯＭＩバッファ・デバイスは、ある程度の非効率性をもたらす可能性があるシングル・ポートを有しており、この非効率性は、２ポート設計を使用して解決することができるが、２つのポートはより大きいバッファ・チップを必要とし、より大きいバッファ・チップは、より小さいＤＩＭＭのフォーム・ファクタに適合しない。１ポート設計は、本発明の実施形態例が利用する１２８バイトのキャッシュ・ライン全体を取り出すために、より多くのサイクルを必要とする可能性があるが、より大きいバッファ・チップを決定するほど多くの追加サイクルではない。
【００６３】
本発明の実施形態例は、低ＲＢＥＲ  ＤＲＡＭをサポートし、１２８バイトのキャッシュ・ラインが利用されている場合でも、６４バイトのデータを処理することができる。本発明の１つまたは複数の実施形態は、２つのランクのＤＲＡＭチップの出力を点在させることもでき、これは、チップのドライバ回路が故障による影響を受ける場合、２つのＤＲＡＭチップに影響を与えるチップ・キルをもたらす可能性があり、４バイト・シンボルのチップ・キル・エラーの代わりに、８バイト・シンボルのチップ・キル・エラーをもたらす可能性がある。
【００６４】
本発明の実施形態例は、低ＲＢＥＲ  ＤＲＡＭデバイスおよび高ＲＢＥＲ  ＤＲＡＭデバイスの両方で使用するための共通の構造（例えば、共通のエラー修正ロジック）を含む。新しい共通のエラー修正ロジックは、ハードウェアにおいて実装された場合、より多くのシリコンの面積を必要とし、低ＲＢＥＲ  ＤＲＡＭデバイス用に最適化された従来のエラー修正ロジックのシリコンの面積の約４〜８倍を必要とすると推定される。
【００６５】
ここで図５を参照すると、本発明の１つまたは複数の実施形態に従って、ＤＩＭＭ３３２を含むメモリ・システム３３０が概して示されている。図５のメモリ・システム３３０では、単一のランクへの２つの連続する読み取りのアクセスによって、キャッシュ・ラインが読み取られ、図４に示されている２つのランクからキャッシュ・ラインを抽出するのと全く同じ量のデータを生成する。図４のメモリ・システム３００における２つのランクの方法と比較したときの、１つの顕著な違いは、チップ・キル故障によってキャッシュ・ライン内で失われるシンボルの数が２倍になるという点である。図５に示されているメモリ・システム３３０は、１６のバースト長の単一の読み取りを使用して、ＤＤＲ５  ＤＲＡＭチップと共に使用することもできる。
【００６６】
ここで図６を参照すると、本発明の１つまたは複数の実施形態に従って、共通のエラー修正ロジックによって実行されるエラー修正動作の表４００が概して示されている。ＥＣＣが６４バイトのデータを処理する図１および図３に示されている例では、データまたは符号語をバッファ・デバイス３０４に取得するのに、（１つのポートを使用して）４サイクルかかる。図６に示されている表４００は、高ＲＢＥＲ  ＤＲＡＭおよび低ＲＢＥＲ  ＤＲＡＭの両方において検出された任意のエラーの修正に起因して消費されるサイクル数を最小限に抑えるように設計された４つの経路の出口点４０８（出口０経路４０２、出口１経路４０４、出口２経路４０５、および出口３経路４０６）について、サイクル数４１０、高ＲＢＥＲ  ＤＲＡＭでの推定発生頻度４１１、および低ＲＢＥＲ  ＤＲＡＭでの推定発生頻度４１２を示している。本発明の１つまたは複数の実施形態に従って、４つの出口点４０８は、図４のＤＩＭＭ３０２上のバッファ・デバイス３０４などのバッファ・デバイス上にあるエラー修正ロジックによって実装される。
【００６７】
基本の出口０経路４０２は、図３に関して上で説明された出口０経路２０２と同じである。この経路は、追加サイクルを全く消費しない迂回経路である。ここでも、高ＲＢＥＲ  ＤＲＡＭデバイスからアクセスされるほとんどのデータがエラーを含まず、修正を必要としないが、実際には低ＲＢＥＲ  ＤＲＡＭよりはるかに高い頻度でランダム・シンボル・エラーが発生するということが、仮定される。
【００６８】
図６に示されている次の高速経路の出口点４０８は、高ＲＢＥＲ  ＤＲＡＭにおいて最も一般的なランダム・シンボル・エラー（１つまたは２つのシンボル内のランダム・エラー）を修正することを対象にする出口１経路４０４である。エラー修正ロジックは、マーク付けされたメモリ・デバイスが存在しない場合に、単一および二重のシンボル・エラーを修正する。この修正は、データをバッファ・チップに取得するための８サイクル、シンドロームを計算するための６サイクル、および修正を実行するための１サイクルを含む、１５サイクルをデータ読み取りに追加する。本発明の１つまたは複数の実施形態に従って、計算される追加のシンドロームごとに、追加サイクルが追加される。高ＲＢＥＲ  ＤＲＡＭに関連する単一および二重のシンボル・エラーは、１６０個のシンボルのキャッシュ・ライン内のランダムな位置に現れるため、発生した場合、修正の一部としてその位置が特定される必要がある。１Ｅ−５のビット・エラー・レートを仮定すると、平均で１マイクロ秒ごとに約２１個の単一のシンボル・エラーが発生し、平均で１マイクロ秒ごとに約１３０個の二重のシンボル・エラーが発生することが予測され得る。これらの仮定されたレートで、二重または単一のシンボル・エラーは、７５〜８０サイクルごとに発生し、低ＲＢＥＲ  ＤＲＡＭと比較した場合に、約１８％〜２０％の性能低下をもたらすことが予測される。２つのポートを備えるより大きいバッファ・チップを使用して、データまたは符号語をバッファに取得するのにかかる時間を８サイクルから４サイクルに短縮することによって、この性能低下を約１４％に減らすことが可能である。
【００６９】
前述したように、ソフト・エラーまたはスタック・セルあるいはビット・ライン・エラーさえに起因する低ＲＢＥＲ  ＤＲＡＭの単一のシンボル・エラーは、典型的には、一度に数回未満、発生する。キャッシュ・ライン内の二重のシンボル・エラーは、さらにいっそうまれであるため、エラー修正ロジックを通るこの出口１経路４０４は、低ＲＢＥＲ  ＤＲＡＭの動作に影響を与えない。出口１経路４０４が低ＲＢＥＲ  ＤＲＡＭの性能を改善するということさえ主張できるが、単一および二重のエラーの発生頻度は、典型的には、十分にまれであるため、この改善は無視できる。
【００７０】
本発明の１つまたは複数の実施形態に従って単一のシンボル・エラーを修正することの影響は、次のように計算できる。１マイクロ秒ごとに４０個の１シンボル・エラーが発生すること、および３ギガヘルツ（ＧＨｚ）のクロック速度を仮定する（そのため、各サイクルは０．３３３３ナノ秒である）。１マイクロ秒ごとに２１個の単一のシンボル・エラーは、１００ナノ秒ごとに約２つの単一のシンボル・エラー、または５０ナノ秒ごとに１つの１シンボル・エラー、または平均で１５０サイクルごとに１つの単一のシンボル・エラーと同等である。単一のシンボル・エラーが修正されるたびに１５サイクルが追加される場合、１５０サイクルのエラーのない動作を実行するのに、約１６５サイクルがかかり、すなわち、エラーのない動作からの約１０％の低下である。
【００７１】
同様の方法で、本発明の１つまたは複数の実施形態に従って二重のシンボル・エラーを修正することの影響は、次のように計算できる。１ミリ秒ごとに１３０個の２シンボル・エラーが発生すること、および３ギガヘルツ（ＧＨｚ）のクロック速度を仮定する（そのため、各サイクルは０．３３３３ナノ秒である）。１ミリ秒ごとに１３０個の２シンボル・エラーは、１０マイクロ秒ごとに１．３個の２シンボル・エラー、または７．７マイクロ秒ごとに１つの２シンボル・エラー、または平均で２万サイクルごとに１つの２シンボル・エラーと同等である。２シンボル・エラーが修正されるたびに１５サイクルが追加される場合、１０，０００サイクルのエラーのない動作を実行するのに、約１０，０１５サイクルがかかり、すなわち、エラーのない動作からの約０．１５％の低下であり、無視できる。
【００７２】
図６を再び参照すると、次の出口点４０８は出口２経路４０５である。表４００に示されているように、出口２経路４０５は、修正を実行するのに２２〜２５サイクルかかると推定される。出口２経路４０５は、マーク付けされた１つのチップ・キルおよび最大４つの追加のランダム・シンボル・エラーを処理するように設計されている。高ＲＢＥＲチップの場合、１秒当たり約５００回、３つのシンボル・エラーが発生すると予測され、１秒当たり約９０回、４つのシンボル・エラーが発生すると予測される。これは、４３０万サイクルごとに約１つのエラーを表し、４３０万サイクルごとに１回、２２〜２５サイクルを追加することは、無視できる。しかし、出口２経路４０５は、単一のマーク付けされたチップ・キルの修正も含む。チップ・キルが発生するのはまれであるが、発生した場合、エラー修正ロジックのＥＣＣ構造の１つまたは複数の実施形態例は、ランクがアクセスされるたびに２２〜２５サイクルを追加する。２２〜２５サイクルは、図３の出口１経路２０４を参照して前述したように、単一のチップ・キルおよび１つのシンボル・エラーに必要な８サイクルの２〜３倍であり、そのため、現在の方法と比較した場合、チップ・キルが発生するときに、レイテンシを低ＲＢＥＲ  ＤＲＡＭに追加する。しかし、追加されるレイテンシは、欠陥のあるチップが欠陥として検出された後に、それを置き換えるために予備ＤＲＡＭチップが自動的に変更されてから、第１のチップ・キルの間に短時間存続する。ランク内の第２のＤＲＡＭの故障が発生するのは極めてまれであるが、発生した場合、追加された２２〜２５サイクルが、無視できない性能への影響をもたらし、これは、ＤＩＭＭまたはメモリ・デバイスの交換によってしか解決できない。
【００７３】
本発明の１つまたは複数の実施形態に従ってメモリ・デバイスがマーク付けされた場合（すなわち、チップ・キルが存在する場合）に３つ〜４つのシンボル・エラーを修正することの影響は、次のように計算できる。１秒ごとに７００個の３または４シンボル・エラーおよび３ＧＨｚのクロック速度を仮定する（そのため、各サイクルは０．３３３３ナノ秒である）。１秒ごとに７００個の３または４シンボル・エラーは、１０ミリ秒ごとに７つの３または４シンボル・エラー、または１，４２８ミリ秒ごとに１つの３または４シンボル・エラー、または平均で４３０万サイクルごとに１つの３または４シンボル・エラーと同等である。３または４シンボル・エラーが修正されるたびに１０サイクルが追加される場合、修正のための追加の時間は無視できる。しかし、エラー修正ロジックを通るこの経路におけるチップ・キルは、ランクがアクセスされるたびに使用され、チップ・キルの経路を使用するために必要な１０サイクルは、図３の出口１経路２０４によって必要とされるサイクルより２サイクル多い。
【００７４】
図６を再び参照すると、次の出口点４０８は、単一のマーク付けされたチップ・キルおよび最大９つの追加のランダム・シンボル・エラーを処理する出口３経路４０６である。エラー修正ロジックを通るこの経路は、３２〜３５サイクルを必要とする。高ＲＢＥＲ  ＤＲＡＭチップの場合、４〜５分ごとに１回、キャッシュ・ライン内で５つのシンボル・エラーが発生することが推定され、６つ、７つ、または８つのシンボル・エラーがはるかに低い頻度であることが推定されるため、追加されるサイクルは無視できる。チップ・キルの状況では、追加サイクルは無視できないが、第１のチップ・キルに関連する繰り返される修正は、予備ＤＲＡＭチップを変更することによって素早く解決される。ＤＲＡＭドライバが２つのＤＲＡＭチップに伴う（例えば、二重のチップ・キルのような）問題を引き起こし、８つのシンボルが修正を必要とするまれな事例では、エラー修正ロジックの１つまたは複数の実施形態例によって、最大７つの追加のランダム・シンボル・エラーと共に、８つのシンボルすべてを修正することができ、サーバが動作を続行することを可能にするが、ある程度の無視できない性能への影響を伴うため、ＤＩＭＭの交換が必要になる。キャッシュ・ライン全体を抽出するために単一のＤＤＲ４ランクからの二重の８バースト長の読み取りが実行されるか、または単一のＤＤＲ５ランクからの単一の１６バースト長の読み取りが実行される代替の実施形態では、チップ・キルに起因してエラーになるシンボルの数は、常に８（４つのシンボルがエラーになる２つのランクのＤＤＲ４の実施形態の２倍）になる。前と同様に、この場合、またはマーク付けなしで二重のチップ・キルが発生する場合、エラー修正回路は、結合されているどの対が故障しているかを決定するために、可能性のあるすべての二重のチップ・キル・エラーの状況について解く可能性がある。
【００７５】
ここで図７を参照すると、本発明の１つまたは複数の実施形態に従って、エラー修正回路を含むメモリ・システム５００のブロック図が概して示されている。図７は、メモリ５０２と、エラー修正ロジック５１６と、データを要求しているプロセッサ５６０（「要求元」）とを含む。エラー修正ロジック５１６は、図４のバッファ・デバイス３０４などのバッファ・デバイスによって実装され得る。エラー修正ロジック５１６は、システム・メモリのメモリ・コントローラによって実装されるか、あるいはメモリ・デバイスのキャッシュ・コントローラまたはその他のコントローラによって実装され得る。エラー修正ロジック５１６は、異なる複雑度を有するエラー（１つまたは２つのランダム・シンボル・エラー、１つのマーク付けされたチップ・キルおよび最大３つ〜４つのランダム・シンボル・エラー、ならびに１つのマーク付けされたチップ・キルおよび９つのランダム・シンボル・エラー）を修正できるＥＣＣ検出および修正ロジック５１２（例えば、回路）を含む。メモリ・バッファ・チップ５８０は、メモリ制御ロジック５５０と、「出口１」５０６と示された１つまたは２つのランダム・シンボル・エラー修正ロジックと、「出口２」５０８と示された１つのマーク付けされたチップ・キルおよび３つ〜４つのランダム・シンボル・エラー修正ロジックと、「出口３」５１０と示された１つのマーク付けされたチップ・キルおよび９つのランダム・シンボル・エラー修正ロジックとを含む。
【００７６】
プロセッサ５６０によって読み込み命令が発行され、対応するメモリ・ブロック（またはキャッシュ・ライン）がメモリ５０２から受信された場合、そのメモリ・ブロックが、出力のうちの１つを介してプロセッサ５６０に送信される。エラー修正ロジック５１６のデフォルトの動作は、メモリから読み取られた未加工の（修正されていない）データが、図７の「出口０迂回」５０４と示された経路を介してプロセッサ５６０に配信される、迂回モードである。システム・アーキテクチャに依って、データは、１つまたは複数のバスを通過するか、またはエラー修正ロジック５１６とプロセッサ５６０の間を相互接続する。
【００７７】
当業者は、４つ以上の修正回路を提供することができ、本発明と共に任意のエラー訂正符号を使用できるということを理解するであろう。
【００７８】
１つまたは２つのシンボル・エラーを修正するために必要な計算は、１つのマーク付けされたチップ・キルおよび最大４つのランダム・シンボル・エラーを修正するために必要な計算よりも少ないロジックおよび時間を必要とする。迂回動作の相対的レイテンシが０である場合、１つまたは２つのシンボル・エラー修正のレイテンシはｘになり、１つのマーク付けされたチップおよび最大４つのランダム・シンボル・エラーのレイテンシはｙになり、１つのマーク付けされたチップおよび５つ〜９つのランダム・シンボル・エラーのレイテンシはｚになり、ｘ＜ｙ＜ｚである。読み取りの再試行の実行は、この単一の動作のレイテンシを増やすが、複数の修正出力を提供し、その複雑度での完全な修正に必要な１つの出力を選択することによって、メモリ・コントローラの全体的スループットが大幅に増加し、ただし追加されるレイテンシを最小限に抑える。
【００７９】
ここで図８を参照すると、本発明の１つまたは複数の実施形態に従って、メモリからデータを読み取るためのプロセスのフロー図６００が概して示されている。図８に示されている処理は、図７のエラー修正ロジック５１６などのエラー修正ロジックによって実行され得る。この処理はブロック６０２で開始し、データを読み取るための通常のメモリの動作がブロック６０４で実行される。ブロック６０６で、読み取られたデータ内にシンボル・エラーが存在するかどうかが判定される。シンボル・エラーが存在しない場合、処理が、図７の出口０迂回５０４などの出口０迂回モードで、ブロック６１６に進む。
【００８０】
次に、ブロック６１２が実行されて、シンドロームにおいて単一および二重のチップ・キルのシグネチャを探し、いずれかが検出された場合、チップ・キルを含むメモリ・デバイスがマーク付けされる。このようにして、ブロック６１２は、検出された新しいハードウェア・エラーをマーク付けする。処理がブロック６１４に進み、ブロック６１４で、第１のチップ・キルが検出された場合、予備メモリ・デバイスが変更される（マーク付けされたメモリ・デバイスの代わりに使用される）。通常のメモリの動作がブロック６０４に進む。
【００８１】
ブロック６０６で、シンボル・エラーが存在することが決定された場合、処理がブロック６０８に進み、１つまたは２つのシンボル・エラーが検出されたかどうかを判定する。シンドロームが１つまたは２つのシンボル・エラーを示している場合、処理が、図７の出口１  ５０６などの出口１高速経路修正モードで、ブロック６１０に進む。その後、処理がブロック６１２に進む。
【００８２】
ブロック６０８で、１つまたは２つのシンボル・エラーが存在しないことが決定された場合、処理がブロック６１８に進み、１つのメモリ・デバイスがチップ・キルとしマーク付けされ、３つまたは４つのシンボル・エラーが検出されたかどうかを判定する。シンドロームがマーク付けされたＤＲＡＭデバイスおよび３つまたは４つのシンボル・エラーを示している場合、処理が、図７の出口２  ５０８などの出口２高速経路修正モードで、ブロック６２０に進む。その後、処理がブロック６１２に進む。
【００８３】
ブロック６１８で、マーク付けされたチップ・キルおよび３つまたは４つのシンボル・エラーが存在しないことが決定された場合、処理がブロック６２２に進み、１つのメモリ・デバイスがチップ・キルとしマーク付けされ、５つ〜９つのシンボル・エラーが検出されたかどうかを判定する。シンドロームがマーク付けされたＤＲＡＭデバイスおよび５つ〜９つのシンボル・エラーを示している場合、処理が、図７の出口３  ５１０などの出口３修正モードで、ブロック６２４に進む。その後、処理がブロック６１２に進む。
【００８４】
ブロック６２２で、マーク付けされたチップ・キルおよび最大９つのシンボル・エラーが存在しないことが決定された場合、処理がブロック６２６に進み、ブロック６２６で、修正が成功したかどうかが判定される。修正が成功した場合、処理がブロック６１２に進む。ブロック６２６で、修正が成功しなかったということが決定された場合、処理がブロック６２８に進み、再試行がすでに実行されたかどうかを判定する。再試行がまだ実行されていない場合、処理がブロック６３４に進み、読み取りを再試行し、修正を試みる。修正が成功しなかった場合、ブロック６２８および６３４で、処理が読み取りの再試行を実行する。再び読み取った場合にキャッシュ・ラインがより少ないエラー（例えば、一時的なエラー）を含むことがあるということを念頭に置いて、読み取りの再試行および修正の試みが実行される。これが当てはまらない場合、システムは、読み取られているキャッシュ・ラインに関連付けられたより少ないランダム・シンボル・エラーを伴うチップ・キルについて解こうとする試みにおいて、同じランクに関連付けられた異なるキャッシュ・ラインを読み取ることも試みる。これは、システムがエラーをマーク付けしてから、対象のキャッシュ・ラインを読み取って修正することができる場合に、当てはまることがある。
【００８５】
ブロック６２８で、再試行がすでに実行されたということが決定された場合、処理がブロック６３０に進み、二重のチップ・マーク（例えば、２つＤＲＡＭデバイス間に点在するバス・エラー）が存在するかどうかを判定する。二重のチップ・マークが検出された場合、それが、マーク付けされたハードウェアの特殊ケースとしてマーク付けされる（すなわち、チップ・マークの代わりに、ＤＲＡＭの対の二重のチップ・マークになる）。次に、修正不可能なエラーとして修正が失敗して、処理がブロック６３２に進む。これが、プロセッサに対してチェックストップまたはマシン・チェックを引き起こすことがある。ブロック６３０で、二重のチップ・マークが存在しないことが決定された場合、処理がブロック６３６に進み、ブロック６３６で、ロジックがすべての二重のチップ・キルの組について解こうとし、エラーを修正する解を検出した場合、ブロック６３８で、それが修正の解であるということが仮定され、ブロック６１２で、それを使用してチップ・キルの対をマーク付けする（この解が偶然であり、正しく機能している可能性は極めて低い）。
【００８６】
ブロック６３６で解が検出されなかった場合、処理がブロック６３２に進み、失敗した修正を処理する。
【００８７】
ここで図９を参照すると、本発明の１つまたは複数の実施形態に従って、データ・シンボルおよびエラー訂正符号（ＥＣＣ）シンボル７００の異なる組み合わせが概して示されている。図９に示されているシンボル・エラーの予想される数の推定値は、ｘ４  ＤＲＡＭが利用されており、高ＲＢＥＲ  ＤＲＡＭの場合のランダムな均等に分散されたシングル・ビット・エラーのレートが１Ｅ−５エラー／ビットであり、低ＲＢＥＲ  ＤＲＡＭの場合のランダムな均等に分散されたシングル・ビット・エラーのレートが１Ｅ−２０エラー／ビットであり、３，６８０ＧＢ／ｓのメモリ帯域幅（すなわち、２３０ＧＢ／ｓ  ｘ  １６ソケット）または２．９４４Ｅ１３ビット／秒であり、マークが存在してもｘ４チップ・キルを修正するために、４つのＥＣＣシンボルが必要であるという仮定に基づく。
【００８８】
図９からわかるように、高ＲＢＥＲデバイスに伴う課題は、頻繁なランダムな単一のシンボル・エラーだけでなく、単一の符号語内の複数のシンボル・エラーがより一般的であり、それらを軽減するために、従来使用されていたものと全く異なる新しいＥＣＣ構造を必要としたということである。本明細書に記載された本発明の１つまたは複数の実施形態によって提供される技術的改善は、さらに重大なＤＲＡＭのハードウェア故障（例えば、チップ・キル）と共に少数の単一のソフト・エラーおよびハードの単一セル故障を処理するように設計された従来のＥＣＣとの、多数のランダム・シンボル・エラーを処理できるＥＣＣの統合を含む。この共通の統合されたＥＣＣは、低ＲＢＥＲデバイスのレイテンシに対する影響を最小限に抑えて、大量の複数のランダム・シンボル・エラーを処理する。
【００８９】
７０２とマーク付けされた行に示されているように、１６０バイトの符号語が高ＲＢＥＲ  ＤＲＡＭと共に使用された場合、１つの１シンボル・エラーが１マイクロ秒ごとに発生し、１３０個の２シンボル・エラーが１ミリ秒ごとに発生し、５１１個の３シンボル・エラーが１秒ごとに発生し、９１個の４シンボル・エラーが１分ごとに発生し、３０８個の５シンボル・エラーが１時間ごとに発生し、２１９個の６シンボル・エラーが１年ごとに発生し、０．３６個の７シンボル・エラーが１年ごとに発生し、０．５２個の８シンボル・エラーが１，０００年ごとに発生すると予想される。
【００９０】
さまざまな動作のサイクル数が、ハードウェアの実装方法および技術ごとのＲＢＥＲにおける変動に基づくＥＣＣの最適な調整方法に依って、変化する可能性があるため、図９に示されているデータは本質的に例である。
【００９１】
ここで図１０を参照すると、本発明の１つまたは複数の実施形態に従って、図８の読み取り再試行ブロック６３４などの読み取りの再試行を実行するためのプロセス８００のフロー図が概して示されている。図１０に示されている処理は、図７のエラー修正ロジック５１６などのエラー修正ロジックによって実行され得る。一実施形態では、プロセスがブロック８０２で開始し、ブロック８０２で、キャッシュ・ライン読み取りの修正での前の試みが失敗している。ブロック８０４で、キャッシュ・ラインが再び読み取られ、ブロック８０６で、再び読み取られたキャッシュ・ラインが、以前に読み取られて正常に修正されなかったときよりも少ないエラーを含むかどうかが判定される。より少ないエラーが存在する場合、処理がブロック８０８に進み、ブロック８０８で、エラー修正ロジックが、すべての単一および二重のチップ・キルの状況を修正するための解を見つけようとする。ブロック８１０で判定されているように、解が検出された場合、ブロック８１２で処理が終了する（例えば、図８のブロック６１２に戻る）。解が検出されなかった場合、処理がブロック８２０に進む。
【００９２】
ブロック８０６で判定されているように、再び読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったときよりも少ないエラーを含んでいない場合、処理がブロック８１４に進み、ブロック８１４で、同じランク内の異なるアドレスからキャッシュ・ラインが読み取られる。処理がブロック８１８に進み、ブロック８１８で、ブロック８１４で読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったキャッシュ・ラインよりも少ないエラーを含むかどうかが判定される。より少ないエラーが存在する場合、処理がブロック８０８に進み、ブロック８０８で、エラー修正ロジックが、すべての単一および二重のチップ・キルの状況を修正するための解を見つけようとする。ブロック８１０で判定されているように、解が検出された場合、ブロック８１２で処理が終了する（例えば、図８のブロック６１２に戻る）。解が検出されなかった場合、処理がブロック８２０に進む。
【００９３】
ブロック８１８で、ブロック８１４で読み取られたキャッシュ・ラインが以前に読み取られて正常に修正されなかったキャッシュ・ラインよりも少ないエラーを含んでいないということが決定された場合、処理がブロック８２０に進む。ブロック８２０で、しきい値回数（この例では、「ｎ」）の読み取りの再試行が実行されたかどうかが判定される。しきい値回数の読み取りの再試行が実行されていない場合、処理がブロック８１６および８１４に進み、ブロック８１４で、同じランク内の異なるアドレスからキャッシュ・ラインが読み取られる。しきい値回数の読み取りの再試行が実行されており、解が検出されなかった場合、修正が失敗し、処理がブロック８２２に進む（例えば、図８のブロック６３２）。
【００９４】
このようにして、修正が失敗した場合、キャッシュ・ラインが再び読み取られ、それが正しく機能しなかった場合、処理が、チップ・キルまたは二重のチップ・キルについて解こうとして、異なるアドレスからの再読み取りを試みる。この方法は、異なるアドレスが、チップ・キルのシンボル・エラーを伴うより少ないシンボル・エラーを含むことがあり、そしてエラーを伴うアドレスに関連するエラーを修正できる可能性があるため、正しく動作することがある。
【００９５】
ここで図１１を参照すると、本発明の１つまたは複数の実施形態に従って、エラー修正ロジックを含むメモリ・システム９００のブロック図が概して示されている。図１１に示されているメモリ・システム９００は、平面基板９０２上のＤＩＭＭコネクタ９０８に差し込まれるｘ４  ＤＲＡＭ  ＤＩＭＭ９０６を含む。メモリ・システム９００によって実行される処理は、（例えば、図４のメモリ・システム３００に関して）前述した処理に類似しているが、エラー修正ロジックが、平面基板９０２上のバッファ・デバイス９０４内にあり、ＤＩＭＭ９０６によって共有されている。本発明の１つまたは複数の実施形態に従って、メモリ・システム９００内の各ＤＩＭＭ９０６は、データを格納するための３２個のデータＤＲＡＭ、ＥＣＣチェックサムおよびメタデータ・シンボルを格納するための６つのＥＣＣ  ＤＲＡＭ、ならびに１２８バイトのキャッシュ・ライン内の最大１５個のシンボルを修正するための２つの予備ＤＲＡＭを含む。図１１に示されているメモリ・システム９００は、エラー修正ロジックを（図４に示されているような）ＤＩＭＭから平面基板９０２に移動することによって、よりシンプルなＤＩＭＭを利用できるようにする。
【００９６】
ここで図１２を参照すると、本発明の１つまたは複数の実施形態に従って、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正を提供する一部または全部の態様を実装するためのコンピュータ・システム１０００のブロック図が概して示されている。本明細書に記載された処理は、ハードウェア、ソフトウェア（例えば、ファームウェア）、またはハードウェアとソフトウェアの組み合わせにおいて実装され得る。一実施形態例では、記載された方法は、少なくとも一部においてハードウェアに実装されてよく、モバイル・デバイス、パーソナル・コンピュータ、ワークステーション、ミニコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用コンピュータ・システム１０００のマイクロプロセッサの一部であってよい。
【００９７】
一実施形態例では、図１２に示されているように、コンピュータ・システム１０００は、プロセッサ１００５、メモリ・コントローラ１０１５に結合されたメモリ１０１２、および１つまたは複数の入力デバイス１０４５、またはローカルＩ／Ｏコントローラ１０３５を介して通信によって結合された周辺機器などの出力デバイス１０４７、あるいはその組み合わせを含む。これらのデバイス１０４７および１０４５は、例えば、プリンタ、スキャナ、マイクロホンなどを含んでよい。従来のキーボード１０５０およびマウス１０５５は、Ｉ／Ｏコントローラ１０３５に結合され得る。Ｉ／Ｏコントローラ１０３５は、例えば、１つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であってよい。Ｉ／Ｏコントローラ１０３５は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ（キャッシュ）、ドライバ、リピータ、およびレシーバなどの追加の要素を含んでよい。
【００９８】
Ｉ／Ｏデバイス１０４７、１０４５は、例えばディスク・ストレージおよびテープ・ストレージ、ネットワーク・インターフェイス・カード（ＮＩＣ：network interface card）または変調器／復調器（他のファイル、デバイス、システム、またはネットワークにアクセスするため）、無線周波（ＲＦ：radio frequency）またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、入力および出力の両方と通信するデバイスをさらに含んでよい。
【００９９】
プロセッサ１００５は、ハードウェア命令またはソフトウェア、具体的には、メモリ１０１２に格納されたハードウェア命令またはソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ１００５は、カスタム・メイドであるか、または市販されたプロセッサ、中央処理装置（ＣＰＵ：central processing unit）、コンピュータ・システム１０００に関連付けられた複数のプロセッサ間の補助プロセッサ、（マイクロチップまたはチップ・セットの形態での）半導体ベースのマイクロプロセッサ、マイクロプロセッサ、または命令を実行するためのその他のデバイスであってよい。プロセッサ１００５は、実行可能命令のフェッチを高速化するための命令キャッシュ、データのフェッチおよび格納を高速化するためのデータ・キャッシュ、および実行可能命令とデータの両方の仮想アドレスから物理アドレスへの変換を高速化するために使用されるトランスレーション・ルックアサイド・バッファ（ＴＬＢ：translation look-aside buffer）などのキャッシュを含むことができるが、これらに限定されない。キャッシュは、さらに多くのキャッシュ・レベル（Ｌ１、Ｌ２など）の階層として構造化され得る。
【０１００】
メモリ１０１２は、揮発性メモリ素子（例えば、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのランダム・アクセス・メモリ（ＲＡＭ：random access memory））および不揮発性メモリ素子（例えば、ＲＯＭ、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read only memory）、電子的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ：electronically erasable programmable read only memory）、プログラマブル読み取り専用メモリ（ＰＲＯＭ：programmable read only memory）、テープ、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read only memory）、ディスク、フロッピー（Ｒ）・ディスク、カートリッジ、カセットなど）のうちの１つまたは組み合わせを含んでよい。さらに、メモリ１０１２は電子、磁気、光、またはその他の種類のストレージ媒体を組み込んでよい。メモリ１０１２が、種々のコンポーネントが互いに遠く離れた位置にあるが、プロセッサ１００５によってアクセスされてよい、分散アーキテクチャを含むことができるということに注意する。
【０１０１】
メモリ１０１２内の命令は、１つまたは複数の別々のプログラムを含んでよく、それらのプログラムの各々は、ロジック的機能を実装するための実行可能命令の順序付けられたリストを含む。図１２の例では、メモリ１０１２内の命令は、適切なオペレーティング・システム（ＯＳ：operating system）１０１１を含む。オペレーティング・システム１０１１は、基本的に他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
【０１０２】
例えば、プロセッサ１００５の命令またはその他の取り出し可能な情報を含む追加データが、ストレージ１０２７に格納されてよく、ストレージ１０２７はハード・ディスク・ドライブまたは半導体ドライブなどのストレージ・デバイスであってよい。メモリ１０１２またはストレージ１０２７に格納される命令は、プロセッサが本開示のディスパッチ・システムおよび方法の１つまたは複数の態様を実行できるようにする命令を含んでよい。
【０１０３】
コンピュータ・システム１０００は、ディスプレイ１０３０に結合されたディスプレイ・コントローラ１０２５をさらに含んでよい。一実施形態例では、コンピュータ・システム１０００は、ネットワーク１０６５に結合するためのネットワーク・インターフェイス１０６０をさらに含んでよい。ネットワーク１０６５は、コンピュータ・システム１０００と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のＩＰベースのネットワークであってよい。ネットワーク１０６５は、コンピュータ・システム１０００と外部システムの間で、データを送受信する。一実施形態例では、ネットワーク１０６５は、サービス・プロバイダによって管理された管理ＩＰネットワークであってよい。ネットワーク１０６５は、例えば、ＷｉＦｉ、ＷｉＭａｘなどの無線プロトコルおよび無線技術を使用して、無線方式で実装され得る。ネットワーク１０６５は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであってもよい。ネットワーク１０６５は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、無線広域ネットワーク（ＷＡＮ：wide areanetwork）、パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）、仮想プライベート・ネットワーク（ＶＰＮ：virtual private network）、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含んでよい。
【０１０４】
本明細書において説明されているように、共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正を提供するためのシステムおよび方法が、コンピュータ・プログラム製品において、または図１２に示されているようなコンピュータ・システム１０００において、全体的または部分的に具現化され得る。
【０１０５】
本明細書では、関連する図面を参照して、本発明の種々の実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間の種々の接続および位置関係（例えば、上、下、近接など）が示される。これらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合のいずれかを指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載された種々の作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含むさらに包括的な手順または工程に組み込まれ得る。
【０１０６】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含む」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含む組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、その他の要素を含むことができる。
【０１０７】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも１つ」および「１つまたは複数」という用語は、１以上の任意の整数（すなわち、１、２、３、４など）を含むと理解され得る。「複数」という用語は、２以上の任意の整数（すなわち、２、３、４、５など）を含むと理解され得る。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
【０１０８】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±８％または５％、あるいは２％の範囲を含むことができる。
【０１０９】
簡潔さの目的で、本発明の態様の作成および使用に関連する従来手法は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムの種々の態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
【０１１０】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含むコンピュータ可読記憶媒体を含んでよい。
【０１１１】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー（Ｒ）・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-onlymemory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasableprogrammable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタルバーサタイルディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【０１１２】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備え得る。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【０１１３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide areanetwork）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われ得る。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブルロジック回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate array）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic array）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路を人用にカスタマイズするためのコンピュータ可読プログラム命令を実行し得る。
【０１１４】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０１１５】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【０１１６】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【０１１７】
図内のフローチャートおよびブロック図は、本発明の種々の実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定されたロジック機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表し得る。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生し得る。例えば、連続して示された２つのブロックは、実際には、含まれている機能に依って、実質的に同時に実行され得るか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【０１１８】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限られない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【図１】
2021521524.tif 000003
【図２】
2021521524.tif 000004
【図３】
2021521524.tif 000005
【図４】
2021521524.tif 000006
【図５】
2021521524.tif 000007
【図６】
2021521524.tif 000008
【図７】
2021521524.tif 000009
【図８】
2021521524.tif 000010
【図９】
2021521524.tif 000011
【図１０】
2021521524.tif 000012
【図１１】
2021521524.tif 000013
【図１２】
2021521524.tif 000014
【国際調査報告】
2021521524.tif 000015
2021521524.tif 000016