(57)【要約】      （修正有）【課題】メモリエラーを訂正するための共有パリティチェック技術を提供する。【解決手段】メモリコントローラは、書き込み動作の間、データビットを受信してメモリデバイスに書き込み、メモリコントローラＥＣＣコンポーネント及びデータビットを使用して複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、メモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットをデータビットに追加し、データビット、メモリコントローラＥＣＣチェックビット、１又は複数のパリティビットをメモリデバイスに送信し、読み取り動作の間、データビット及びメモリコントローラＥＣＣチェックビットをメモリデバイスから受信し、メモリコントローラＥＣＣチェックビットについてデータビットをチェックするとともに検出されたエラーを訂正し、データビットを返すよう構成される。【選択図】図２
2019169127.tif 000002
【特許請求の範囲】
【請求項１】
メモリデバイスに結合される装置であって、
書き込み動作の間、前記メモリデバイスに書き込むデータビットを受信し、前記メモリデバイスはオンダイＥＣＣコンポーネントを含み、前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記複数のメモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記複数のメモリコントローラＥＣＣチェックビット、及び前記１又は複数のパリティビットを前記メモリデバイスに送信し、読み取り動作の間、前記メモリデバイスから前記データビット及び前記複数のメモリコントローラＥＣＣチェックビットを受信し、前記データビットを前記複数のメモリコントローラＥＣＣチェックビットに対してチェックし、検出されたエラーを訂正し、前記データビットを返すよう構成されたメモリコントローラエラー訂正符号コンポーネント（メモリコントローラＥＣＣコンポーネント）を備える、装置。
【請求項２】
検出されたエラーを訂正するよう構成された前記メモリコントローラＥＣＣコンポーネントは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くよう構成された前記メモリコントローラＥＣＣコンポーネントを含む、請求項１に記載の装置。
【請求項３】
検出されたエラーを訂正するよう構成された前記メモリコントローラＥＣＣコンポーネントは、
単一のＩ／Ｏデータラインに限られるエラーを取り除くよう構成された前記メモリコントローラＥＣＣコンポーネントを含む、請求項１に記載の装置。
【請求項４】
メモリデバイスにデータを書き込む及び前記メモリデバイスからデータを読み出す方法であって、
データビットを受信して前記メモリデバイスに書き込み、前記メモリデバイスはオンダイＥＣＣコンポーネントを含み、前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記複数のメモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記複数のメモリコントローラＥＣＣチェックビット、前記１又は複数のパリティビットを前記メモリデバイスに送信することにより、書き込み動作を実行する段階と、
前記メモリデバイスから前記データビット及び前記複数のメモリコントローラＥＣＣチェックビットを受信し、前記データビットを前記複数のメモリコントローラＥＣＣチェックビットに対してチェックし、検出されたエラーを訂正し、前記データビットを返すことにより読み取り動作を実行する段階と、
を備える方法。
【請求項５】
検出されたエラーを訂正することは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くことを含む、請求項４に記載の方法。
【請求項６】
検出されたエラーを訂正することは、単一のＩ／Ｏデータラインに限られるエラーを取り除くことを含む、請求項４に記載の方法。
【請求項７】
メモリコントローラエラー訂正符号コンポーネント（メモリコントローラＥＣＣコンポーネント）を含むメモリコントローラと、
オンダイＥＣＣコンポーネント及びメモリを含むメモリデバイスと、を備え、
前記メモリコントローラは、データビットを受信して前記メモリデバイスに書き込み、前記メモリコントローラＥＣＣコンポーネント及び前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記複数のメモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記複数のメモリコントローラＥＣＣチェックビット、及び前記１又は複数のパリティビットを前記メモリデバイスに送信するよう構成され、
前記メモリデバイスは、前記データビット、前記複数のメモリコントローラＥＣＣチェックビット、及び前記１又は複数のパリティビットを受信し、前記オンダイＥＣＣコンポーネント及び前記データビットを使用して、複数のオンダイＥＣＣチェックビットを決定し、前記データビット、前記複数のメモリコントローラＥＣＣチェックビット、及び前記複数のオンダイＥＣＣチェックビットを前記メモリに記憶するよう構成される、
システム。
【請求項８】
前記メモリコントローラＥＣＣコンポーネントは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くよう構成される、請求項７に記載のシステム。
【請求項９】
前記メモリコントローラＥＣＣコンポーネントは、単一のＩ／Ｏデータラインに限られるエラーを取り除くよう構成される、請求項７に記載のシステム。
【請求項１０】
コンピュータによって実行されることに応じて、前記コンピュータに請求項４から６のいずれか一項に記載の方法を実行させるプログラム。
【請求項１１】
請求項１０に記載のプログラムを格納する機械可読媒体。
【請求項１２】
請求項４から６のいずれか一項に記載の方法を実行するための手段を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に説明される例は、概して、メモリ内のエラーを訂正するための技術に関する。
【背景技術】
【０００２】
エラー訂正符号（ＥＣＣ）は、データ内のエラーを検出するのに使用されてよい。ＤＤＲ５として既知の第５世代ダブルデータレート同期ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及びＨＢＭ３として既知の第３世代広帯域幅メモリ（ＨＢＭ）のような幾つかの新しいメモリタイプにおいて、オンダイＥＣＣコンポーネントとも呼ばれる"ＤＲＡＭ内"ＥＣＣの回路が、ＨＢＭ３及びＤＤＲ５メモリに含まれて単一セル欠陥又は弱磁化ビットからのエラーを訂正することにより収率を増大してよい。オンダイＥＣＣコンポーネントは、２又はそれより多くのエラーが存在する場合に、シングルエラー訂正（ＳＥＣ）符号を使用するとともに訂正ミスする、又はビットをエイリアスすることができる。ＤＤＲ型デュアルインラインメモリモジュール（ＤＩＭＭ）では、エラーは、総キャッシュラインの一部を読み出すだけの単一デバイスに限られ、従って、オンダイＥＣＣコンポーネントが訂正ミスしても、多くのメモリコントローラＥＣＣスキームにより訂正可能又は検出可能である。しかし、ＨＢＭデバイスでは、キャッシュライン全体が単一デバイスから読み出されるため、エラーは、キャッシュライン全体に分散され得る。マルチビットエラーが存在する場合、オンダイＥＣＣコンポーネントが、影響を受けるオンダイＥＣＣ領域内のいずれかの箇所で追加ビットを訂正ミスできる。例えば、列に限られたマルチビットエラー（列選択の失敗に対する可能なエラーパターン）は、列エラーに変わり、列選択の失敗により影響されるオンダイＥＣＣ領域において訂正ミスするオンダイＥＣＣコンポーネントからの追加のランダムなビットエラー、又はソフトシングルビットエラーと並ぶ単一セル障害（ＤＲＡＭの障害の最も共通のタイプ）からのエラーは、キャッシュライン上に拡散するランダムなトリプルビットエラーとなる。
【０００３】
マルチビットエラーが存在するとき、キャッシュラインが、ＨＢＭデバイスのような単一デバイス又はシングルメモリデバイスからキャッシュライン全体を取ってくる他のメモリデバイスから取得されるメモリにおけるオンダイＥＣＣの訂正ミスに取り組む既知のソリューションはない。
【図面の簡単な説明】
【０００４】
【図１】例示的なメモリコントローラ及びメモリデバイスの構成を示す。
【０００５】
【図２】読み取り動作の例示的なデータフローを示す。
【０００６】
【図３】データレイアウトの例示的な第１ダイアグラムを示す。
【０００７】
【図４】データレイアウトの例示的な第２ダイアグラムを示す。
【０００８】
【図５】データレイアウトの例示的な第３ダイアグラムを示す。
【０００９】
【図６】データレイアウトの例示的な第４ダイアグラムを示す。
【００１０】
【図７】メモリコントローラに対する書き込み動作の論理フローの例を示す。
【００１１】
【図８】メモリデバイスに対する書き込み動作の論理フローの例を示す。
【００１２】
【図９】メモリデバイスに対する読み取り動作の論理フローの例を示す。
【００１３】
【図１０】メモリコントローラに対する読み取り動作の論理フローの例を示す。
【００１４】
【図１１】例示的なコンピューティングプラットフォームを示す。
【発明を実施するための形態】
【００１５】
エラー訂正する１つのアプローチは、オンダイＥＣＣコンポーネントによって引き起こされるあらゆる追加のエラーを訂正又は検出することを試みるとともに、元のマルチビットエラーを検出又は訂正することを同時に試みるメモリコントローラＥＣＣ回路を有することである。このアプローチは、ＨＢＭ３又は同様のデバイスの信頼性に著しく且つネガティブに影響を与え、メモリコントローラＥＣＣによるあらゆるエラー検出及び訂正を信頼できないものにする。シングルビットエラーはオンダイＥＣＣコンポーネントによって訂正されるから、メモリコントローラＥＣＣは、主として、オンダイＥＣＣコンポーネントが訂正ミスしてよいエラータイプであるマルチビットエラーにさらされる。加えて、多数の単一セル障害及び弱磁化ビットを示すメモリは、単一セル障害又は弱磁化ビットを整列させるソフトエラーによって引き起こされるダブルビットエラーの可能性を増加する。メモリコントローラＥＣＣは、ランダムなトリプルビットエラー訂正を提供して、ソフトエラーから完全に保護する必要がある。ランダムなトリプルビットエラー訂正は、ランダムなダブルビットエラー訂正と比較すると、エラー訂正の間、追加の待ち時間を引き起こし、２つの追加のエラー訂正シンボルを要求する。他のエラータイプ（例えば、列選択エラー、レーンエラー等）からの保護を提供するために、メモリコントローラＥＣＣは、元のマルチビットエラーパターン及びオンダイＥＣＣによって引き起こされる追加のランダムなシングルビットエラーの訂正／検出をサポートしなければならない。オンダイＥＣＣコンポーネントによって引き起こされる各追加のエラーは、訂正待ち時間を増加し、少なくとも２つの追加のＥＣＣシンボルを要求し、それにより回路の煩雑さを増大する。
【００１６】
ＥＣＣ保護されたメモリデバイスは、キャッシュライン上でビット単位のパリティを計算するシンボルベースのＥＣＣを採用してよい。これらのソリューションは、様々な方法で実装されてよいが、幾つかの条件が、キャッシュラインに書き込まれるデータ、メタデータ、及びＥＣＣビットに課されるであろう。メモリがこのデータをオンダイＥＣＣコンポーネントを用いてチェックすると、メモリはパリティ条件もチェックして、エラー訂正が、シングルビットエラーが存在するときのみなされるようにして、オンダイＥＣＣコンポーネントによる訂正ミスを防ぐ。
【００１７】
従って、コンピューティングプラットフォームがメモリデバイス訂正のために使用する外部ＥＣＣビットの一部（「外部」はメモリデバイスの外を意味する）をメモリデバイスによって使用される内部ＥＣＣ訂正スキームと共有することにより、改善されたエラー検出及び訂正機能が提供されてよい。
【００１８】
本発明の実施形態は、オンダイＥＣＣを使用するＨＢＭ３及び他のメモリデバイス並びに同様のパリティ構造の信頼性を改善する。オンダイＥＣＣコンポーネントによる訂正ミスは、メモリコントローラＥＣＣコンポーネントがマルチビットエラーから回復する能力を著しく弱める、又は訂正に必要なＥＣＣビットの数及び訂正の待ち時間を劇的に増加する。本発明の実施形態は、ＨＢＭ３又は同様のメモリデバイスの信頼性を増大し、エラー訂正のコスト及び待ち時間を低下するために使用されてよい。
【００１９】
図１は、例示的なメモリコントローラ及びメモリデバイスの構成１００を示す。幾つかの例では、図１に示されるように、構成１００は、オンダイＥＣＣコンポーネント１１０及びメモリ１１２を含むメモリデバイス１０２を含む。メモリデバイス１０２は、メモリコントローラ１０４に通信可能に結合されてよい。
【００２０】
幾つかの例では、メモリ１１２は、これらに限定されないが、ＲＡＭ、Ｄ−ＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＳＲＡＭ、Ｔ−ＲＡＭ、又はＺ−ＲＡＭを含む揮発性タイプのメモリを含んでよい。揮発性メモリの一例は、ＤＲＡＭ、又はＳＤＲＡＭのような幾つかの変形を含む。本明細書に説明されるようなメモリは、ＨＢＭ（２０１３年１０月にＪｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ（ＪＥＤＥＣ）  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｓｓｏｃｉａｔｉｏｎ（ＪＥＤＥＣ）が元々発表した高帯域幅メモリＤＲＡＭ、ＪＥＳＤ２３５）及びＤＤＲ５（現在ＪＥＤＥＣで検討中のＤＤＲバージョン５）、及び／又はその他のような多くのメモリ技術、及びそのような規格の派生物、改訂、バージョン、又は拡張に基づく技術と互換性があってよい。
【００２１】
オンダイＥＣＣコンポーネント１１０は、メモリ１１２内のデータ内のエラーを検出及び訂正するためのロジックを備える。メモリコントローラ１０４は、メモリデバイス１０２に少なくとも一時的に記憶されるデータへのアクセスを制御するよう構成されてよい。図１の例では１つのメモリデバイスのみが示されるが、他の例では、複数のメモリデバイスがメモリコントローラ１０４によって制御されてよいことを理解されたい。メモリコントローラ１０４は、メモリ１１２から取得されるデータ内のエラーを検出及び訂正するためのメモリコントローラＥＣＣコンポーネント１１４を備えてよい。
【００２２】
本発明の実施形態は、マルチビットエラーが存在するかどうかを確認するためにチェックされ、マルチビットエラーが存在するとき、オンダイＥＣＣ訂正を停止してよいオンダイＥＣＣコンポーネント１１０にパリティ条件を提供することにより、オンダイＥＣＣが訂正ミスしないようにする方法及び装置を提供する。
【００２３】
図２は、読み取り動作の例示的なデータフローを示す。データ及びオンダイＥＣＣチェックビット２０２は、オンダイＥＣＣコンポーネント１１０によってメモリ１１２から読み出されてよい。データ及びオンダイＥＣＣチェックビット２０２は、１又は複数のパリティビットを含んでよい。オンダイＥＣＣコンポーネント１１０は、オンダイＥＣＣチェックビットを解析することに基づいてデータ内のエラーを検出及び訂正して、シングルエラー訂正符号（ＳＥＣ）データ２０４を生成してよい。しかし、エラーの訂正ミスは、オンダイＥＣＣコンポーネント１１０によって導入されてよい。メモリコントローラＥＣＣコンポーネント１１４は、これらの訂正ミスを検出及び訂正し、訂正されたデータ２０６を生成してよい。
【００２４】
ＥＣＣスキームにおいて使用されるパリティビットは、メモリ１１２に書き込まれるデータ及び外部ＥＣＣチェックビットに条件を課す。例えば、メモリ１１２からＩ／Ｏデータライン上で送信されるデータのすべてのバーストにわたるビット単位のパリティは、外部ＥＣＣ符号の一部としてデータに追加されてよい。このパリティの効果は、バースト内のすべてのビットの排他的ＯＲ演算（ＸＯＲ）がゼロになるという条件である。
【００２５】
本発明の実施形態では、メモリコントローラ１０４は、書き込みが発生し、これらのビットがメモリデバイス１０２内のデータを用いて記憶されると、メモリコントローラＥＣＣチェックビット（パリティビットを含む）を生成してよい。読み出しが起こると、メモリデバイス１０２はデータ及びオンダイＥＣＣチェックビットをともにフェッチし、オンダイＥＣＣコンポーネント１１０によりデータ及びオンダイＥＣＣチェックビットを処理する。次いで、すべてのビットが、ＳＥＣ訂正されたデータ２０４としてメモリコントローラ１０４に送信される。ここで、メモリコントローラＥＣＣコンポーネント１１４は、データ及びメモリコントローラＥＣＣチェックビットの間の不一致をチェックし、必要に応じて、訂正を実行する。メモリコントローラは、データワード（一般的に、データパターンに制限はない）を受信し、エンコーディングスキームに基づいてメモリコントローラＥＣＣチェックビットを生成し、それらをコードワードを形成するデータビットに追加する。無効なコードワード（すなわち、データ及びチェックビットが互いに一致しない）は、データ、チェックビット、又は両方のいずれかにおけるエラーを示す。次に、メモリコントローラＥＣＣコンポーネントは、受信された無効ワードに最も近いコードワードを見つけようとする。次に、エラーがメモリコントローラＥＣＣコンポーネントによって訂正可能である場合、元のコードワードが見つけられ、データが回復される。エラーが、２つのことのうちの１つが起こるよりも訂正可能でない場合、無効なコードワードは、有効なコードワードから過度に離れて訂正可能でない（例えば、検出可能で訂正不可能なエラー（ＤＵＥ））又は無効なコードは別のコードワードに過度に近くて訂正ミスされる（例えば、サイレントデータ破損（ＳＤＣ））。コードワード間の距離は、符号に依存する異なる方法で定義されることができる。例えば、無効なコードワードが有効なコードワードからハミング距離１である場合（この場合、コードワードが別のコードワードからハミング距離１であると、エラーシンドロームはＨ行列の列に等しい）、ＳＥＣコードはハミング距離を調べて訂正しようとするであろう。メモリコントローラＥＣＣコンポーネントは、バーストエラー訂正符号を使用してよく、このタイプの符号は予想されるエラーのタイプについての幾つかの情報を使用して、距離メトリックがどう決定されるかを知らせる。例えば、これらの符号のうちの１つは、エラーが、コードワードにわたってランダムに拡がる代わりに、１６ビットのブロックに限定されると予想してよい。バーストエラー訂正符号の場合、受信したコードワードに最も近いコードワードを見つけることは、ハミングコードの場合より複雑であってよい。
【００２６】
図３は、データレイアウトの例示的な第１ダイアグラムを示す。この例では、図３は、すべてのバーストにわたるビット単位のパリティを有するＨＢＭ３の１／２キャッシュラインビットレイアウトを示す。実施形態では、このデータレイアウトは、データ及び外部ＥＣＣチェック及びパリティビット、又はメタデータビットに対して使用されてよい。この例では、バーストのセット３００は、３０２、３０４、３０６、３０８、３１０、３１２、３１４、及び３１６とそれぞれラベルされた８つのバーストＢＬ０，ＢＬ１，ＢＬ２，ＢＬ３，ＢＬ４，ＢＬ５，ＢＬ６，ＢＬ７を備える。各バーストは、メモリデバイス１０２及びメモリコントローラ１０４の間のＩ／Ｏデータライン（例えば、キャッシュライン）上のデータのシグナリングを備える。各Ｉ／Ｏデータラインは、４０ビットの情報を転送するためにＤＱ０からＤＱ３９まで番号付けられたＤＱとして既知であってよい。この例では、バーストＢＬ０  ３０２は、ビットＢ０〜ビットＢ３１で示される３２ビットのデータ３１８を備え、外部ＥＣＣチェックビット、追加のパリティビット、又はメタデータビット３２０は、ビットＥ０〜ビットＥ６と示される７つのビットを備え、及びパリティビット３２２は、ビットＰ０と示される１ビットを備える。バーストＢＬ０  ３０２のパリティビットは、ＤＱ０からＤＱ３８までのバースト内のすべてのビット（ビット０〜ビット３８（すなわち、Ｂ０からＢ３１及びＥ０からＥ６）になる）のビット単位のＸＯＲであってよい。例えば、これは、次式のように特定されてよい。
【００２７】
Ｐ０＝Ｂ０＋Ｂ１＋Ｂ２＋Ｂ３＋…＋Ｂ３１＋Ｅ０＋Ｅ１＋Ｅ２＋…＋Ｅ６
【００２８】
ここで、ＢはバーストＢＬ０  ３０２内のデータビット３１８であってよく、ＥはバーストＢＬ０  ３０２内の外部ＥＣＣチェックビット、追加のパリティビット、又はメタデータビット３２０であってよく、「＋」はＸＯＲ演算を表す。
【００２９】
セット３００内の残りのバーストは、同様に定義されてよい。例えば、バーストＢＬ１  ３０４は、ビットＢ３２〜ビット６３で示される３２ビットのデータを備え、ＥＣＣチェックビットは、ビットＥ７〜ビットＥ１３で示される７つのビットを備え、パリティビットはビットＰ１で示される１ビット等を備える。
【００３０】
同様に、データ転送のためのパリティは、（シンボリック訂正符号に共通であるように）複数のビットブロックにわたって計算されてもよい。ＨＢＭ３のようなキャッシュラインレイアウトの場合、２又は４のブロック幅が共通の選択であってよい。
【００３１】
図４は、データレイアウトの例示的な第２ダイアグラムを示す。この例の場合、キャッシュライン内の２ビット幅のブロックにわたってパリティを計算すると、このレイアウトになるであろう。この例では、図４は、すべての偶数及び奇数のバーストにわたるビット単位のパリティを有するＨＢＭ３の１／２キャッシュラインビットレイアウトを示す。実施形態では、このデータレイアウトは、データ及び外部ＥＣＣチェックビット、追加のパリティビット、又はメタデータビットに対して使用されてよい。この例では、バーストのセット４００は、４０２、４０４、４０６、４０８、４１０、４１２、４１４、及び４１６とそれぞれラベルされた８つのバーストＢＬ０，ＢＬ１，ＢＬ２，ＢＬ３，ＢＬ４，ＢＬ５，ＢＬ６，ＢＬ７を備える。この例では、バーストＢＬ０  ４０２は、ビットＢ０〜ビットＢ３１で示される３２ビットのデータ４１８を備え、外部ＥＣＣチェックビット、追加のパリティビット、又はメタデータビット４２２は、ビットＥ０〜ビットＥ５と示される６つのビットを備え、及びパリティビット４２２は、ビットＰ０及びＰ１と示される２ビットを備える。バーストＢＬ０  ４０２のこの場合におけるパリティビットは、偶数ＤＱ又は奇数ＤＱからのバースト内のすべてのビット（すなわち、偶数番号のＤＱ：ＤＱ０からＤＱ３６（偶数番号のビットＢ０からＢ３０及び偶数番号のビットＥ０からＥ４）又は奇数番号のＤＱ：ＤＱ１からＤＱ３７（奇数番号のビットＢ１からＢ３１及び奇数番号のビットＥ１からＥ５））のビット単位のＸＯＲであってよい。例えば、これは、次式のように特定されてよい。
【００３２】
Ｐ０＝Ｂ０＋Ｂ２＋Ｂ４＋Ｂ６＋…＋Ｂ３０＋Ｅ０＋Ｅ２＋Ｅ４
【００３３】
Ｐ１＝Ｂ１＋Ｂ３＋Ｂ５＋Ｂ７＋…＋Ｂ３１＋Ｅ１＋Ｅ３＋Ｅ５
【００３４】
ここで、ＢはバーストＢＬ０  ４０２内のデータビット４１８であってよく、ＥはバーストＢＬ０  ４０２内の外部ＥＣＣチェックビット、追加のパリティビット、又はメタデータビット４２０であってよく、「＋」はＸＯＲ演算を表す。
【００３５】
セット４００内の残りのバーストは、同様に定義されてよい。
【００３６】
このパリティの効果は、バースト内の偶数ＤＱからのすべてのビットのＸＯＲがゼロになり、バースト内の奇数ＤＱからのすべてのビットのＸＯＲがゼロになることである。また、これらの条件は、バースト内のすべてのビットのＸＯＲがゼロであることを暗示する。
【００３７】
同様のスキームは、４ビットの幅を有するブロック上のパリティに対して使用されてよい。この例では、パリティビットは、バースト内の第４ビット毎に計算されてよい。このパリティの効果は、バースト内の第４ＤＱ毎からのビットのＸＯＲがゼロになることである。これは、バースト内のすべての偶数／奇数ＤＱからのビットのＸＯＲもゼロであり、バースト内のすべてのビットのＸＯＲもゼロであることを暗示する。
【００３８】
メモリコントローラＥＣＣコンポーネント１１４及びオンダイＥＣＣコンポーネント１１０の訂正ミスからの所望の保護レベルに基づいて、これらのパリティ条件は、オンダイＥＣＣコンポーネント１１０に通信されてよい。実施形態では、ＤＲＡＭ内ＥＣＣエンジンは、使用されているパリティ条件の幾つかの事前知識を有する、又はパリティ条件についてチェックすることができる。パリティ条件は、パリティビットと同じではないが、それらはバースト内にあるパリティビットによって決定される。例えば、段落２８内の式は、Ｐ１に対する式を定義する。Ｐ１がバーストゼロに追加されると、バーストゼロ内のすべてのビットのＸＯＲは、Ｐ１＋Ｂ０＋Ｂ１＋…＋Ｅ０＋Ｅ１＋…＋Ｅ６＝（Ｂ０＋Ｂ０＋Ｂ１＋…＋Ｅ０＋Ｅ１＋…＋Ｅ６）＋Ｂ０＋Ｂ１＋…＋Ｅ０＋Ｅ１＋…＋Ｅ６＝（Ｂ０＋Ｂ０）＋（Ｂ１＋Ｂ１）＋…＋（Ｅ０＋Ｅ０）＋（Ｅ１＋Ｅ１）＋…＋（Ｅ６＋Ｅ６）＝０＋０＋…＋０＋０＋…＋０＝０である。パリティビットはＰ１だけであり、パリティ式を使用することにより計算される。パリティ条件は、バースト内のビットの幾つかの部分にわたる合計がゼロに等しくなるであろうというプロパティである。ゼロに合計されるバースト内のビットは、どのパリティ式が使用された／どれだけの数のパリティビットがバースト内にあるかに依存する。
【００３９】
実施形態では、通信され得るパリティ条件のレベルは、メモリコントローラＥＣＣコンポーネント１１４によって訂正可能であろうマルチビットエラーを提示されたときにオンダイＥＣＣコンポーネント１１０によるかなりの数の訂正ミスを取り除くことができる最少のパリティ条件であろう。例えば、メモリコントローラＥＣＣコンポーネント１１４が、単一ＤＱ及びランダムダブルビットエラーに限定された欠陥のみを訂正することができてよい場合、次に、オンダイＥＣＣコンポーネント１１０に与えられるパリティ条件は、バースト内のすべてのビットのＸＯＲがゼロになるであろうことである。これは、単一ＤＱに限られたすべてのダブルビットエラー及びエラーのオンダイＥＣＣの訂正ミスを取り除くであろうが、単一ＤＱに限られないトリプルビット又はそれより多くのエラーの訂正ミス取り除かないであろう、ＤＱに限られないトリプルビット又はそれより多くのエラーはメモリコントローラＥＣＣコンポーネント１１４によってどうしても確実に訂正又は検出されることができない。
【００４０】
オンダイＥＣＣコンポーネント１１０は、ＳＥＣコード計算と並列して、データ内に存在するどのパリティ条件に対しても、パリティの値を計算してもよい。メモリ１１２内に記憶されたビット内にシングルビットエラーが存在する場合、オンダイＥＣＣコンポーネント１１０によって実行されるパリティ計算の結果に存在するであろう２つの条件がある。
（１）パリティ計算の結果は、パリティ条件を満たさない正確に１つのバーストを示すであろう。
（２）オンダイＥＣＣコンポーネント１１０によって確認される不良ビットは、バースト内及び、該当する場合、パリティ条件を満たさないバーストの一部（例えば、バーストの奇数部分又は偶数部分）に含まれるであろう（すなわち、訂正後にパリティを計算すると、すべてのバーストがパリティ条件を満たす結果になる）。
【００４１】
これらの条件のいずれも満たされていない場合、マルチビットエラーが存在し、オンダイＥＣＣ訂正がデータ内に追加のエラーを引き起こすであろうから、オンダイＥＣＣコンポーネント１１０は訂正を中断すべきである。これらの２つの条件は、ダブルエラーの場合にオンダイＥＣＣコンポーネント１１０によるすべての訂正ミス及びより大きなグラニュラリティエラーに対するすべての又はほとんどの訂正ミスを取り除くのに十分である。ダブルビットエラーの２つの例示的な場合が以下に示される。
【００４２】
図５は、データレイアウト５００の例示的な第３ダイアグラムを示す。図５は、別個のバースト内にあるが、同じオンダイＥＣＣ訂正領域にあるキャッシュライン内の２つのシングルビットエラー５０２、５０４を示す。エラー５０２は、オンダイＥＣＣコンポーネント１１０によって検出されてよいが、ビット５０５にて訂正ミスされる。結果として得られるパリティチェック５０６は、第１のシングルビットエラー条件（上の（１））に違反する２つの１を示し、訂正５０８の後のパリティはすべてゼロではなく、第２のシングルビットエラー条件（上の（２））に違反する。
【００４３】
図６は、データレイアウト６００の例示的な第４ダイアグラムを示す。図６は、同じバースト内の２つのシングルビットエラー６０２、６０４を示す。ここで、オンダイＥＣＣコンポーネント１１０は、６０５にて誤ってエラーを検出する。結果として得られるパリティチェック６０６は、第１のシングルビットエラー条件に違反するすべてのゼロを示し、訂正６０８後のパリティは再びゼロではなく、第２のシングルビットエラー条件に違反する。
【００４４】
本発明の実施形態では、そのような訂正ミスは検出及び回復されてよい。
【００４５】
図７は、メモリコントローラ１０４に対する書き込み動作の論理フロー７００の例を示す。論理フローは、ソフトウェア、ファームウェア、及び／又はハードウェア内に実装されてよい。ソフトウェア及びファームウェアの実施形態では、論理フローは、光、磁気、又は半導体ストレージのような少なくとも１つの非一時的コンピュータ可読媒体又は機械可読媒体に記憶されたコンピュータ実行可能命令によって実装されてよい。ブロック７０２にて、メモリコントローラ１０４は、コンピュータ分野で知られているように、キャッシュライン上でメモリデバイス１０２に書き込むデータビットを受信する。本発明の実施形態では、データビットは、プロセッサ、ハードディスクドライブ、又はコンピューティングプラットフォーム内の他のコンポーネントから受信されてよい。実施形態では、受信されるデータビットの数は５１２であってよいが、他のコンピューティングプラットフォームでは、８、１６、３２、６４、１２８、２５６、１０２４等のように、他の量が受信されてよい。ブロック７０４にて、メモリコントローラ１０４は、メモリコントローラＥＣＣコンポーネント１１４を使用して、受信したデータビットの複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定する。ブロック７０６にて、メモリコントローラＥＣＣチェックビット及びパリティビットは、（図３及び４の例に示されるように）データビットに追加されてよい。ブロック７０８にて、メモリコントローラは、データビット、メモリコントローラＥＣＣチェックビット、及びパリティビットをメモリデバイス１０２に送信する。
【００４６】
図８は、メモリデバイス１０２に対する書き込み動作の論理フロー８００の例を示す。ブロック８０２にて、メモリデバイス１０２は、メモリコントローラ１０４からデータビット、メモリコントローラＥＣＣチェックビット、及び１又は複数のパリティビットを受信する。ブロック８０４にて、メモリデバイス１０２は、オンダイＥＣＣコンポーネント１１０を使用して、受信したデータビットに対してオンダイＥＣＣチェックビットを決定する。実施形態では、オンダイＥＣＣチェックビットは、ＸＯＲツリーを使用して決定されてよい。実施形態では、オンダイＥＣＣコンポーネント１１０は、メモリコントローラ１０４から受信した１２８データビット及び１６メモリコントローラＥＣＣチェックビット毎に８つのオンダイＥＣＣチェックビットを計算してよい。実施形態では、オンダイＥＣＣは、（１２８ビット＋１６ビット）／８ビットＳＥＣコードであってよい。別の実施形態では、オンダイＥＣＣコンポーネント１１０は、メモリコントローラ１０４から受信した２５６データビット及び３２メモリコントローラＥＣＣチェックビット毎に１６つのオンダイＥＣＣチェックビットを計算してよい。実施形態では、オンダイＥＣＣは、（２５６ビット＋３２ビット）／１６ビットＳＥＣコードであってよい。実施形態では、ＳＥＣコードは、メモリコントローラから受信したすべてのデータビットを処理するのに十分な回数適用されてよい。ブロック８０６にて、メモリデバイス１０２は、任意選択的に、各データバースト内のデータビットについてパリティ条件をチェックしてよい。ブロック８０８にて、メモリデバイス１０２は、データビット、メモリコントローラＥＣＣチェックビット、及びオンダイＥＣＣチェックビットをメモリ１１２内に記憶する。実施形態では、メモリコントローラＥＣＣチェックビットは、データとともに、メモリデバイス内に記憶され、ストレージ及びオンダイＥＣＣ訂正の目的のためにメモリデバイスによって単にデータとして扱われてよい。
【００４７】
図９は、メモリデバイス１０２に対する読み取り動作の論理フロー９００の例を示す。ブロック９０２にて、メモリデバイスからデータを読み出すことが要求されると、メモリデバイス１０２は、メモリ１１２からデータビット、メモリコントローラＥＣＣチェックビット、及びオンダイＥＣＣチェックビットを取得する。ブロック９０４にて、オンダイＥＣＣコンポーネント１１０を使用するメモリデバイスは、オンダイＥＣＣチェックビットを使用してシングルビットエラーについてデータビットをチェックし、訂正は必要に応じて適用されてよい。
【００４８】
実施形態では、Ｈ行列が、受信したコードワードと乗算されて、オンダイＥＣＣエラーシンドロームを取得してよい。オンダイＥＣＣエラーシンドロームは、概して、受信したコードワード（エラー訂正符号チェックビットに追加された（エラー訂正符号に関する）受信したデータ）に乗算されるＨ行列として定義される。
【数１】
2019169127.tif 000003
実施形態では、オンダイＥＣＣエラーシンドロームは、チェックビットの数に等しい長さを有するベクトルであってよい。実施形態では、オンダイＥＣＣエラーシンドロームは、ＳＥＣデコーダによって生成されてよい。次に、オンダイＥＣＣエラーシンドロームは、Ｈ行列の列と比較されてよく、ビットがＨ行列内の列に等しい場合、対応ビットが反転される。
【００４９】
実施形態では、次に、オンダイＥＣＣエラーシンドロームがゼロの場合、メモリデバイスはデータビットを変更しない。次に、オンダイＥＣＣエラーシンドロームが非ゼロで検出可能で訂正不可能なエラー（ＤＵＥ）を示す場合、メモリデバイスはデータビットを変更しない。ＤＵＥは、エラー訂正符号がエラー（すなわち、エラーシンドロームが非ゼロ）を識別するときに起こるが、オンダイＥＣＣコンポーネントは、エラーロケーションを識別することができない（エラーシンドロームは訂正可能エラーパターンに対応しない）。オンダイＥＣＣにおいて使用されるようなＳＥＣコードの場合、コードワード内のビットの約２倍の数のエラーシンドロームがあるため、これはマルチビットエラーのおよそ５０％において起こり得る。別の実施形態では、オンダイＥＣＣコンポーネントは、パリティシンドロームは１のウエイトを有することをチェックしてよく、そうである場合、１ダイＥＣＣコンポーネントは、さらにパリティ条件をチェックすることなくエラーを訂正する。
【００５０】
オンダイエラーＥＣＣシンドロームがシングルビットエラーを示す場合、メモリデバイスはパリティ計算をチェックする。オンダイＥＣＣシンドロームがオンダイＥＣＣコードのＨ行列の列に等しい場合（すなわち、受信した無効なコードワードが有効なコードワードからハミング距離１である場合）、オンダイＥＣＣシンドロームは、シングルビットエラーを示すであろう。次に、パリティシンドロームが１のウエイトである場合、メモリデバイスは、データビット内のエラーを訂正してよい。実施形態では、パリティシンドロームは、バイナリベクトルのウエイトをベクトル内の１の数として定義するハミングウエイトであってよい。次に、パリティシンドロームが１のウエイトを有さない場合、メモリデバイスは、データビットを変更しない。実施形態では、パリティシンドロームは、パリティ条件をチェックすることにより生成されるエラーシンドロームであってよい。パリティシンドロームは、パリティ条件を満たさない各セグメント（バースト、バーストの偶数半部、バーストの奇数半部等）に対して１を有するであろう。
【００５１】
ブロック９０６にて、メモリデバイス１０２は、各バーストに対してパリティ条件をチェックする。実施形態では、ブロック９０４及び９０６は、並列に処理されてよい。ブロック９０８にて、メモリデバイス１０２は、任意選択的に、訂正後にパリティ条件を再計算し、パリティシンドロームがここでゼロになることを確かめるためにチェックしてよい。次に、パリティシンドロームがここでゼロでない場合、メモリデバイス１０２は、ブロック９０４にて訂正を逆にする。すなわち、パリティ条件が満たされていない場合、マルチビットエラーが存在し、オンダイＥＣＣ訂正がデータビット内で追加のエラーを引き起こすであろうから、オンダイＥＣＣコンポーネント１１０は訂正を中断すべきである。実施形態では、このチェックは、ブロック９０４にて実行されてもよい。ここで、メモリデバイスは、シンドロームがエラー内にあることを示すビットと同じバースト内でパリティが１であったかどうかを判断するためにチェックしてよい。ブロック９１０にて、メモリデバイスは、データビット及びメモリコントローラＥＣＣチェックビットをメモリコントローラ１０４に送信する。一実施形態において、追加のメタデータビットが送信されてもよい。
【００５２】
図１０は、メモリコントローラ１０４に対する読み取り動作の論理フロー１０００の例を示す。ブロック１００２にて、メモリコントローラ１０４は、メモリデバイス１０２からデータビット及びメモリコントローラＥＣＣチェックビットを受信する。一実施形態において、追加のメタデータビットが受信されてもよい。ブロック１００４にて、メモリコントローラは、メモリコントローラＥＣＣコンポーネント１１４を使用して、受信したメモリコントローラＥＣＣチェックビットに対して受信したデータビットをチェックし、必要に応じて訂正を実行する。ブロック１００６にて、メモリコントローラは、データビットを、データを要求するコンピュータプラットフォームコンポーネントに返す。
【００５３】
図１１は、例示的なコンピューティングプラットフォーム１１００を示す。幾つかの例では、図１１に示されるように、コンピューティングプラットフォーム１１００は、メモリコントローラ１０４、メモリデバイス１０２、処理コンポーネント１１０８、他のプラットフォームコンポーネント１１１０、及び通信インタフェース１１１２を含む回路１１０６を備えてよい。
【００５４】
幾つかの例によれば、処理コンポーネント１１０８は、処理動作又はロジックを実行してよい。処理コンポーネント１１０８は、様々なハードウェア要素、ソフトウェア要素、又は両方の組み合わせを含んでよい。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、グラフィックスチップ、回路、プロセッサ回路、回路要素（例えば、トランジスタ、抵抗、キャパシタ、インダクタなど）、集積回路、ＡＳＩＣ、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナリングプロセッサ（ＤＳＰ）、ＦＰＧＡ／プログラマブルロジック、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含んでよい。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、デバイスドライバ、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアコンポーネント、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータ・コード・セグメント、ワード、バリュー、シンボル、又はこれらの任意の組み合わせを含んでよい。例がハードウェア要素及び／又はソフトウェア要素を使用して実装されるかどうかの判断は、任意の例に所望されるように、望ましい演算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバスの速度、及び他の設計若しくは性能の制約のような任意の数の要因に応じて変わり得る。
【００５５】
幾つかの例では、他のコンピューティングプラットフォームコンポーネント１１０は、１又は複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、インタフェース、発振器、タイミングデバイス、電源、ハードディスクドライブ（ＨＤＤ）などのような共通のコンピューティング要素又は回路を含んでよい。メモリユニット１１２の例は、これらに限定されないが、リードオンリメモリ（ＲＯＭ）、ＲＡＭ、ＤＲＡＭ、ＤＤＲ  ＤＲＡＭ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ、ＤＤＲ５、ＨＢＭ３、ＳＲＡＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、ＥＰＲＯＭ，ＥＥＰＲＯＭ、フラッシュメモリ、強誘電体メモリ、ＳＯＮＯＳメモリ、強誘電体ポリマーメモリのようなポリマーメモリ、ナノワイヤ、ＦｅＴＲＡＭ又はＦｅＲＡＭ、オボニックメモリ、相変化メモリ、メモリスタ、ＳＴＴ−ＭＲＡＭ、磁気又は光カード、３Ｄ  ＸＰｏｉｎｔ（登録商標）、及び情報を記憶するのに適したあらゆる他のタイプの記憶媒体のような、１又は複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読及び／又は機械可読記憶媒体を含んでよい。
【００５６】
幾つかの例では、通信インタフェース１１１２は、通信インタフェースをサポートするロジック及び／又は特徴を含んでよい。これらの例として、通信インタフェース１１１２は、直接又はネットワーク通信リンク上で通信する様々な通信プロトコル又は基準に従って動作する１又は複数の通信インタフェースを含んでよい。直接通信は、ＳＭＢｕｓ、ＰＣＩｅ、ＮＶＭｅ、ＱＰＩ、ＳＡＴＡ、ＳＡＳ、又はＵＳＢ通信プロトコルのような通信プロトコルの使用を介して行ってよい。ネットワーク通信は、Ｅｔｈｅｒｎｅｔ（登録商標）、インフィニバンド、ＳＡＴＡ、又はＳＡＳ通信プロトコルのような通信プロトコルの使用を介して行ってよい。
【００５７】
コンピューティングプラットフォーム１１００のコンポーネント及び特徴は、ディスクリート回路、ＡＳＩＣ、論理ゲート、及び／又はシングルチップアーキテクチャの任意の組み合わせを使用して実装されてよい。さらに、コンピューティングプラットフォーム１１００の特徴は、マイクロコントローラ、プログラマブルロジックアレイ、及び／又はマイクロプロセッサ、又は好適な場合に上述の任意の組み合わせを使用して実装されてよい。ハードウェア、ファームウェア、及び／又はソフトウェア要素は、本明細書では、「ロジック」又は「回路」とまとめて又は個別に呼ばれてよいことに留意されたい。
【００５８】
図１１のブロックダイアグラムに示される例示的なコンピューティングプラットフォーム１１００は、多くの潜在的な実装のうちの１つの機能的な記述例を表してよいことが理解されるべきである。従って、添付図内に示されるブロック機能の分割、省略、又は包含は、これらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェア及び／又は要素が必ず実施形態において分割、省略、又は包含されることを意味するのではない。
【００５９】
コンピューティングプラットフォーム１１００は、例えば、ユーザ機器、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット、スマートフォン、エンベデッドエレクトロニクス、ゲームコンソール、サーバ、サーバアレイ又はサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースシステム、又はこれらの組み合わせであってよい、コンピューティングデバイスの一部であってよい。従って、本明細書で説明されるコンピューティングプラットフォーム１１００の機能及び／又は特定のコンフィギュレーションは、適切に所望されるように、コンピューティングプラットフォーム１１００の様々な実施形態において包含又は省略されてよい。
【００６０】
少なくとも一例の１又は複数の態様は、機械により読み出されると、コンピューティングデバイス又はシステムが機械、コンピューティングデバイス、又はシステムにロジックを作成させ、本明細書において説明される技術を実行させるプロセッサ内で様々なロジックを表す、少なくとも１つの機械可読媒体上に記憶された代表的な命令により実装されてよい。そのような表現は、有形の機械可読媒体に記憶され、実際にロジック又はプロセッサを製造する製造機械にロードするために様々な顧客又は製造施設に供給され得る。
【００６１】
様々な例は、ハードウェア要素、ソフトウェア要素、又は両方の組み合わせを使用して実装され得る。幾つかの例では、ハードウェア要素は、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路要素（例えば、トランジスタ、抵抗、キャパシタ、インダクタなど）、集積回路、ＡＳＩＣ、ＰＬＤ、ＤＳＰ、ＦＰＧＡ、メモリユニット、論理ゲート、レジスタ、半導体デバイス、グラフィックスチップ、チップ、マイクロチップ、チップセットなどを含んでよい。幾つかの例では、ソフトウェア要素は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、ＡＰＩ、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータ・コード・セグメント、ワード、バリュー、シンボル、又はこれらの任意の組み合わせを含んでよい。例がハードウェア要素及び／又はソフトウェア要素を使用して実装されるかどうかの判断は、任意の実装に所望されるように、望ましい演算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバスの速度、及び他の設計若しくは性能の制約のような任意の数の要因に応じて変わり得る。
【００６２】
幾つかの例は、製造物品又は少なくとも１つのコンピュータ可読媒体を含み得る。コンピュータ可読媒体は、ロジックを記憶するための非一時的記憶媒体を含み得る。幾つかの例では、非一時的記憶媒体は、揮発性メモリ又は不揮発性メモリ、リムーバブル又は非リムーバブルメモリ、消去可能又は消去不可能メモリ、書き込み可能又は書き換え可能メモリなどを含む、電子データを記憶することができる１又は複数のタイプのコンピュータ可読記憶媒体を含み得る。幾つかの例では、ロジックは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、ＡＰＩ、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータ・コード・セグメント、ワード、バリュー、シンボル、又はこれらの任意の組み合わせのような様々なソフトウェア要素を含んでよい。
【００６３】
幾つかの例によれば、コンピュータ可読媒体としては、機械により実行されると、コンピューティングデバイス又はシステムが機械、コンピューティングデバイス、又はシステムに説明された例に従って方法及び／又は動作を実行させる命令を記憶又は保持する非一時的記憶媒体が挙げられ得る。命令は、ソースコード、コンパイル済みコード、解釈済みコード、実行可能コード、静的コード、動的コード等の任意の適切な種類のコードを含み得る。命令は、機械、コンピューティングデバイス又はシステムに特定の機能を実行するように指示するための予め定義されたコンピュータ言語、方法又は構文に従って実装され得る。命令は、任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル済み及び／又はインタプリタプログラミング言語を使用して実装され得る。
【００６４】
幾つかの例は、その派生物と共に、「一例（ｏｎｅ  ｅｘａｍｐｌｅ）」又は「例（ａｎ  ｅｘａｍｐｌｅ）」という表現を用いて説明され得る。これらの用語は、例に関連して説明された具体的な特徴、構造、又は特性が少なくとも１つの例に含まれることを意味する。本明細書の様々な箇所における「一例」というフレーズの出現は、必ずしもすべて同じ例を参照するとは限らない。
【００６５】
幾つかの例は、その派生物と共に、「結合され（ｃｏｕｐｌｅｄ）」及び「接続され（ｃｏｎｎｅｃｔｅｄ）」という表現を用いて説明され得る。これらの用語は、必ずしも互いに同義語であることを意図するものではない。例えば、「接続」及び／又は「結合」という用語を使用した説明は、２又はそれより多くの要素が互いに直接物理的又は電気的に接触していることを示してもよい。しかし、「結合」という用語は、また、２又はそれより多くの要素が互いに直接接触していないが、それでもなお互いに協働又は相互作用することを意味してよい。
【００６６】
本開示の要約書は、連邦規則法典集第３７巻に準拠して提供されることが強調される。１．７２（ｂ）章は、読者が技術的開示の性質を迅速に確認することを可能にする要約を要求する。これは、特許請求の範囲の適用範囲又は意味についての解釈又は限定には用いられないという理解のもとで提出されるものである。さらに、前述の詳細な説明では、開示を簡素化する目的で、様々な特徴が単一の例にまとめられていることが分かる。この開示方法は、請求された例が各請求項に明示的に記載されているよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は単一の開示された例のすべての特徴より少ない特徴にある。従って、以下の特許請求の範囲は、詳細な説明に組み込まれ、各請求項は別々の例としてそれ自体で成り立つ。添付の特許請求の範囲において、「ｉｎｃｌｕｄｉｎｇ」および「ｉｎ  ｗｈｉｃｈ」といった用語を、それぞれ「ｃｏｍｐｒｉｓｉｎｇ」および「ｗｈｅｒｅｉｎ」といった各用語に相当する平易な英語（Ｐｌａｉｎ−Ｅｎｇｌｉｓｈ）として用いる。また、「第１」、「第２」、および「第３」等の用語は、単に標示として用いられており、それらの対象に数値的な要件を課すことを意図するものではない。
【００６７】
構造上の特徴および／または方法論の視点から見た処理に特有の用語で主題を説明してきたが、添付した特許請求の範囲で定義されている主題は必ずしも、上述した特定の特徴または処理に限定されるわけではないと理解されたい。むしろ、上記の具体的な特徴及び動作は、特許請求の範囲を実施する例示的形態として開示されている。
【００６８】
本明細書によれば、以下の各項目に記載の構成もまた開示される。
［項目１］
メモリデバイスに結合される装置であって、書き込み動作の間、前記メモリデバイスに書き込むデータビットを受信し、前記メモリデバイスはオンダイＥＣＣコンポーネントを含み、前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記メモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記１又は複数のパリティビットを前記メモリデバイスに送信し、読み取り動作の間、前記メモリデバイスから前記データビット及び前記メモリコントローラＥＣＣチェックビットを受信し、前記データビットを前記メモリコントローラＥＣＣチェックビットに対してチェックし、検出されたエラーを訂正し、前記データビットを返すよう構成されたメモリコントローラエラー訂正符号（ＥＣＣ）コンポーネントを備える、装置。
［項目２］
検出されたエラーを訂正するよう構成された前記メモリコントローラＥＣＣコンポーネントは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くよう構成された前記メモリコントローラＥＣＣコンポーネントを含む、項目１に記載の装置。
［項目３］
検出されたエラーを訂正するよう構成された前記メモリコントローラＥＣＣコンポーネントは、単一のＩ／Ｏデータラインに限られるエラーを取り除くよう構成された前記メモリコントローラＥＣＣコンポーネントを含む、項目１に記載の装置。
［項目４］
メモリデバイスにデータを書き込む及び前記メモリデバイスからデータを読み出す方法であって、データビットを受信して前記メモリデバイスに書き込み、前記メモリデバイスはオンダイＥＣＣコンポーネントを含み、前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記メモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記１又は複数のパリティビットを前記メモリデバイスに送信することにより、書き込み動作を実行する段階と、前記メモリデバイスから前記データビット及び前記メモリコントローラＥＣＣチェックビットを受信し、前記データビットを前記メモリコントローラＥＣＣチェックビットに対してチェックし、検出されたエラーを訂正し、前記データビットを返すことにより読み取り動作を実行する段階と、を備える方法。
［項目５］
検出されたエラーを訂正することは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くことを含む、項目４に記載の方法。
［項目６］
検出されたエラーを訂正することは、単一のＩ／Ｏデータラインに限られるエラーを取り除くことを含む、項目４に記載の方法。
［項目７］
メモリコントローラエラー訂正符号（ＥＣＣ）コンポーネントを含むメモリコントローラと、オンダイＥＣＣコンポーネント及びメモリを含むメモリデバイスと、を備え、前記前記メモリコントローラは、データビットを受信して前記メモリデバイスに書き込み、前記メモリコントローラＥＣＣコンポーネント及び前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定し、前記メモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加し、前記データビット、前記メモリコントローラＥＣＣチェックビット、及び前記１又は複数のパリティビットを前記メモリデバイスに送信するよう構成され、前記メモリデバイスは、前記データビット、前記メモリコントローラＥＣＣチェックビット、及び前記１又は複数のパリティビットを受信し、前記オンダイＥＣＣコンポーネント及び前記データビットを使用して、複数のオンダイＥＣＣチェックビットを決定し、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記オンダイＥＣＣチェックビットを前記メモリに記憶するよう構成される、を備えるシステム。
［項目８］
前記メモリコントローラＥＣＣコンポーネントは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くよう構成される、項目７に記載のシステム。
［項目９］
前記メモリコントローラＥＣＣコンポーネントは、単一のＩ／Ｏデータラインに限られるエラーを取り除くよう構成される、項目７に記載のシステム。
［項目１０］
メモリコントローラエラー訂正符号（ＥＣＣ）コンポーネントを含むメモリコントローラにより、データビットを受信して、オンダイＥＣＣコンポーネント及びメモリを含むメモリデバイスに書き込む段階と、前記メモリコントローラＥＣＣコンポーネント及び前記データビットを使用して、複数のメモリコントローラＥＣＣチェックビット及び１又は複数のパリティビットを決定する段階と、前記メモリコントローラＥＣＣチェックビット及び前記１又は複数のパリティビットを前記データビットに追加する段階と、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記１又は複数のパリティビットを前記メモリデバイスに送信する段階と、前記メモリデバイスにより、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記１又は複数のパリティビットを受信する段階と、前記オンダイＥＣＣコンポーネント及び前記データビットを使用して、複数のオンダイＥＣＣチェックビットを決定する段階と、前記データビット、前記メモリコントローラＥＣＣチェックビット、前記オンダイＥＣＣチェックビットを前記メモリに記憶する段階と、を備える方法。
［項目１１］
複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除く段階をさらに備える、項目１０に記載の方法。
［項目１２］
単一のＩ／Ｏデータラインに限られるエラーを取り除く段階をさらに備える、項目１０に記載の方法。
［項目１３］
メモリコントローラエラー訂正符号（ＥＣＣ）コンポーネントを含むメモリコントローラと、オンダイＥＣＣコンポーネント及びメモリを含むメモリデバイスと、データビット、メモリコントローラＥＣＣチェックビット、及びオンダイＥＣＣチェックビットを前記メモリから取得し、前記オンダイＥＣＣコンポーネントを使用してシングルビットエラーについて前記データビットをチェックするとともに検出されたシングルビットエラーを訂正し、前記データビットに対してパリティ条件をチェックし、前記パリティ条件を再計算し、前記データビット及び前記メモリコントローラＥＣＣチェックビットを前記メモリコントローラに送信するよう構成される前記メモリデバイスと、前記データビット及び前記メモリコントローラＥＣＣチェックビットを前記メモリデバイスから受信し、前記メモリコントローラＥＣＣコンポーネントを使用して前記メモリコントローラＥＣＣチェックビットについて前記データビットをチェックするとともに検出されたエラーを訂正し、前記データビットを返すよう構成される前記メモリコントローラと、を備えるシステム。
［項目１４］
検出されたエラーを訂正するよう構成された前記メモリコントローラは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くよう構成された前記メモリコントローラを含む、項目１３に記載のシステム。
［項目１５］
検出されたエラーを訂正するよう構成された前記メモリコントローラは、単一のＩ／Ｏデータラインに限られるエラーを取り除くよう構成された前記メモリコントローラを含む、項目１３に記載のシステム。
［項目１６］
前記メモリデバイスは、並列して、前記オンダイＥＣＣコンポーネントを使用してシングルビットエラーについて前記データビットをチェックするともに検出されたシングルビットエラーを訂正し、前記データビットについてパリティ条件をチェックするよう構成される、項目１３に記載のシステム。
［項目１７］
前記メモリデバイスは、前記メモリから読み出される前記データビット内にシングルビットエラーが検出された場合、各オンダイＥＣＣ領域に対して１の値を有する１ビットが正確に存在するように、前記パリティ条件を再計算するように構成される、項目１３に記載のシステム。
［項目１８］
前記メモリデバイスは、前記メモリから読み出される前記データビット内にシングルビットエラーが検出された場合、前記オンダイＥＣＣコンポーネントにより確認されるエラー内の前記シングルビットが非ゼロパリティビットに一致するように前記パリティ条件を再計算するよう構成される、項目１３に記載のシステム。
［項目１９］
前記オンダイＥＣＣコンポーネントは、マルチビットエラーが検出されたとき、データビットの訂正を中断するよう構成される、項目１３に記載のシステム。
［項目２０］
前記オンダイＥＣＣコンポーネントは、前記パリティ条件の再計算の結果が非ゼロのパリティであるとき、シングルビットエラーの訂正を逆にするように構成される、項目１３に記載のシステム。
［項目２１］
前記パリティ条件のうちの少なくとも１つは、ゼロであるバースト内のすべてのビットのＸＯＲである、項目１３に記載のシステム。
［項目２２］
データビット、メモリコントローラＥＣＣチェックビット、及びオンダイＥＣＣチェックビットをオンダイＥＣＣコンポーネントを含むメモリから取得する段階と、前記オンダイＥＣＣコンポーネントを使用してシングルビットエラーについて前記データビットをチェックするとともに検出されたシングルビットエラーを訂正する段階と、前記データビットについてパリティ条件をチェックする段階と、パリティ条件を再計算する段階と、前記データビット及び前記メモリコントローラＥＣＣチェックビットをメモリコントローラＥＣＣコンポーネントを含むメモリコントローラに送信する段階と、前記メモリコントローラにより、前記データビット及び前記メモリコントローラＥＣＣチェックビットを前記メモリデバイスから受信する段階と、前記メモリコントローラＥＣＣコンポーネントを使用して前記メモリコントローラＥＣＣチェックビットについて前記データビットをチェックするとともに検出されたエラーを訂正する段階と、前記データビットを返す段階と、を備える方法。
［項目２３］
検出されたエラーを訂正することは、複数のビットエラーのうちのオンダイＥＣＣコンポーネントの訂正ミスを取り除くことを含む、請求項２２に記載の方法。
［項目２４］
検出されたエラーを訂正することは、単一のＩ／Ｏデータラインに限られるエラーを取り除くことを含む、項目２２に記載の方法。
［項目２５］
前記オンダイＥＣＣコンポーネントを使用してシングルビットエラーについて前記データビットをチェックするともに検出されたシングルビットエラーを訂正する段階と、前記データビットについてパリティ条件をチェックする段階と、を並列して実行する、項目２２に記載の方法。
［項目２６］
前記パリティ条件を再計算する段階は、前記メモリから読み出される前記データビット内にシングルビットエラーが検出されたかどうかを判断する段階を備え、各オンダイＥＣＣ領域に対して１の値を有する１ビットが正確に存在する、項目２２に記載の方法。
［項目２７］
前記パリティ条件を再計算する段階は、前記メモリから読み出される前記データビット内にシングルビットエラーが検出されたかどうかを判断する段階を含み、前記オンダイＥＣＣコンポーネントにより確認されるエラー内の前記シングルビットが非ゼロパリティビットに一致する、項目２２に記載の方法。
［項目２８］
マルチビットエラーが検出されたとき、前記オンダイＥＣＣコンポーネントによりデータビットの訂正を中断する段階をさらに備える、項目２２に記載の方法。
［項目２９］
前記パリティ条件の再計算の結果が非ゼロのパリティであるとき、シングルビットエラーの訂正を逆にする段階をさらに備える、項目２２に記載の方法。
［項目３０］
前記パリティ条件のうちの少なくとも１つは、ゼロであるバースト内のすべてのビットのＸＯＲである、項目２２に記載の方法。
【図１】
2019169127.tif 000004
【図２】
2019169127.tif 000005
【図３】
2019169127.tif 000006
【図４】
2019169127.tif 000007
【図５】
2019169127.tif 000008
【図６】
2019169127.tif 000009
【図７】
2019169127.tif 000010
【図８】
2019169127.tif 000011
【図９】
2019169127.tif 000012
【図１０】
2019169127.tif 000013
【図１１】
2019169127.tif 000014
【外国語明細書】
2019169127000001.pdf