(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-03-29
(54)【発明の名称】インラインECC保護のための方法及びシステム
(51)【国際特許分類】
G06F 11/10 20060101AFI20220322BHJP
G06F 12/02 20060101ALI20220322BHJP
G06F 12/0875 20160101ALI20220322BHJP
G06F 13/14 20060101ALI20220322BHJP
【FI】
G06F11/10 648
G06F12/02 570A
G06F12/0875 100
G06F13/14 320H
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021533424
(86)(22)【出願日】2019-12-10
(85)【翻訳文提出日】2021-08-11
(86)【国際出願番号】 US2019065416
(87)【国際公開番号】W WO2020123471
(87)【国際公開日】2020-06-18
(32)【優先日】2018-12-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390020248
【氏名又は名称】日本テキサス・インスツルメンツ合同会社
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【上記1名の代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】デニス ローランド ビュードイン
(72)【発明者】
【氏名】リテシュ ディラジラル ソジトラ
(72)【発明者】
【氏名】サミュエル ポール ヴィサリ
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AB26
5B205JJ01
5B205WW17
(57)【要約】
メモリデバイス(106)からデータを読出す及び/又は書込むためにシステム(107)からコマンドを受け取るように構成される相互接続(101)を有するメモリシステム(100)。メモリシステムは、相互接続からコマンドを受け取り、ECCデータを管理し、システムアドレス及び物理メモリデバイスアドレス間のアドレス変換を実施するよう構成されるブリッジ(102)も有する。アドレス変換は、第1のデータアドレスを有する第1のデータブロックの後でそれに隣接する第1のECCデータブロックのための第1のECCメモリアドレスを計算し、第1のECCブロックの後でそれに隣接する第2のECCメモリアドレスを計算し、第2のECCブロックの後でそれに隣接する第2のデータアドレスを計算することによる。ブリッジは、データの完全なバーストについてECCデータを検査及び計算もし得、及び/又は読出し及び/又は書込みデータを含むデータの完全なバーストのためのECCデータをキャッシュし得る。
【特許請求の範囲】
【請求項1】
集積回路であって、
メモリデバイスの物理アドレスからデータを読み出す及び/又はメモリデバイスの物理アドレスにデータを書き込むためのコマンドをシステムから受け取るように構成される相互接続、及び
前記相互接続から前記コマンドを受け取り、システムアドレスと前記物理アドレスとの間のアドレス変換を実施するように構成されるブリッジ、
を含み、
前記アドレス変換が、第1のデータアドレスを有する第1のデータブロックの後であり前記第1のデータブロックに隣接する第1のECCデータブロックのためのメモリアドレスを計算すること、前記第1のECCブロックの後でありそれに隣接する第2のECCメモリアドレスを計算すること、及び、前記第2のECCブロックの後でありそれに隣接する第2のデータアドレスを計算することによって成される、
集積回路。
【請求項2】
請求項1に記載の集積回路であって、前記第1のECCデータブロックが前記第1のデータブロックのためのECCデータを含み、前記第2のECCデータブロックが前記第2のデータブロックのためのECCデータを含む、集積回路。
【請求項3】
請求項1に記載の集積回路であって、前記第1のECCデータブロック及び前記第2のECCデータブロックが各々64バイトであり、前記第1のデータブロック及び前記第2のデータブロックが各々512バイトである、集積回路。
【請求項4】
請求項1に記載の集積回路であって、前記第1のデータアドレス、前記第2のデータアドレス、前記第1のECCメモリアドレス、及び前記第2のECCメモリアドレスが、前記メモリデバイスにおける連続する位置に対応する、集積回路。
【請求項5】
集積回路であって、
データの一部を読み出す及び/又は書き込むためにコマンドをシステムから受け取るように構成される相互接続、及び
前記相互接続から前記コマンドを受け取り、前記データの一部を含むデータのバーストのためのECCデータを検査及び計算するように構成されるブリッジ、
を含む、集積回路。
【請求項6】
外部メモリとインタフェースするための集積回路であって、前記集積回路が、
データの一部を読みだす及び/又は書き込むためのコマンドをシステムから受け取るように構成される相互接続、及び
前記相互接続から前記コマンドを受け取り、ECCデータを検査及び計算するように構成されるブリッジであって、前記データの一部を含むデータの完全なバーストのためのECCデータをキャッシュするようにさらに構成される前記ブリッジ、
を含む、集積回路。
【請求項7】
請求項6に記載の集積回路であって、前記コマンドが第1のコマンドであり、前記第1のコマンドが書き込みコマンドである場合、前記ブリッジが、データの部分的ブロックを第1のアドレスに書き込み、前記外部メモリから前記第1のアドレスにおけるデータのブロックと前記データのブロックに関連するECCデータとを読み出すように更に構成され、
前記ブリッジが、前記書き込みコマンド及び前記データの部分的ブロックを保持して、前記ブリッジへの前記データのブロックの戻しを保留するように構成される保持キューを含む、
集積回路。
【請求項8】
請求項7に記載の集積回路であって、前記ブリッジが更に、前記外部メモリから前記データのブロックと前記データのブロックのためのECCデータとを受け取り、前記データの部分的ブロックを前記データのブロックとマージして、マージされたデータを作成し、前記マージされたデータを前記外部メモリに書き込むように構成される、集積回路。
【請求項9】
請求項8に記載の集積回路であって、前記ブリッジが更に、前記データのブロックのために前記ECCデータをキャッシュするように構成される、集積回路。
【請求項10】
請求項7に記載の集積回路であって、前記ブリッジが更に、第2のアドレスに関連する第2のコマンドを前記システムから受け取り、前記第2のアドレスが前記保持キュー内の任意のアドレスと一致する場合、前記第2のコマンドを前記保持キューに置くように構成される、集積回路。
【請求項11】
メモリシステムであって、
メモリデバイス、
プロセッサ、
前記メモリデバイスの物理アドレスからデータを読み出す及び/又は前記メモリデバイスの物理アドレスにデータを書き込むために前記プロセッサからコマンドを受け取るように構成される相互接続、及び
前記相互接続から前記コマンドを受け取り、システムアドレスと前記物理アドレスとの間のアドレス変換を実施するように構成されるブリッジ、
を含み、
前記アドレス変換が、第1のデータアドレスを有する第1のデータブロックの後であり前記第1のデータブロックに隣接する第1のECCデータブロックのための第1のECCメモリアドレスを計算し、前記第1のECCブロックの後であり前記第1のECCブロックに隣接する第2のECCメモリアドレスを計算し、前記第2のECCブロックの後であり前記第2のECCブロックに隣接する第2のデータアドレスを計算することによって成される、
メモリシステム。
【請求項12】
請求項11に記載のメモリシステムであって、前記第1のECCデータブロックが前記第1のデータブロックのためのECCデータを含み、前記第2のECCデータブロックが前記第2のデータブロックのためのECCデータを含む、メモリシステム。
【請求項13】
請求項11に記載のメモリシステムであって、前記第1のECCデータブロック及び第2のECCデータブロックが各々64バイトであり、前記第1のデータブロック及び第2のデータブロックが各々512バイトである、メモリシステム。
【請求項14】
請求項11に記載のメモリシステムであって、前記第1のデータアドレス、第2のデータアドレス、第1のECCメモリアドレス、及び第2のECCメモリアドレスが、前記メモリデバイス内の連続する位置に対応する、メモリシステム。
【請求項15】
メモリシステムであって、
メモリデバイス、
プロセッサ、
データの一部を読み出す及び/又は前記メモリデバイスに書き込むためのコマンドを前記プロセッサから受け取るように構成される相互接続、及び
前記相互接続から前記コマンドを受け取り、ECCデータを検査及び計算するように構成されるブリッジであり、前記データの一部を含むデータの完全なバーストのためのECCデータをキャッシュするようにさらに構成される前記ブリッジ、
を含む、メモリシステム。
【請求項16】
請求項15に記載のメモリシステムであって、前記コマンドが第1のコマンドであり、前記ブリッジが、前記第1のコマンドが書き込みコマンドである場合、第1のアドレスにデータの部分的ブロックを書き込み、前記外部メモリから前記第1のアドレスにおけるデータのブロックと前記データのブロックに関連するECCデータとを読み出すようにさらに構成され、
前記ブリッジが、前記書き込みコマンド及び前記データの部分的ブロックを保持して、前記ブリッジへの前記データのブロックの戻しを保留するように構成される保持キューを含む、
メモリシステム。
【請求項17】
請求項16に記載のメモリシステムであって、前記ブリッジが、前記データのブロックと前記データのブロックのためのECCデータとを前記外部メモリから受け取り、前記データの部分的ブロックを前記データのブロックとマージして、マージされたデータを作成し、前記マージされたデータを前記外部メモリに書き込むようにさらに構成される、メモリシステム。
【請求項18】
請求項17に記載のメモリシステムであって、前記ブリッジが、前記データのブロックのための前記ECCデータをキャッシュするようにさらに構成される、メモリシステム。
【請求項19】
請求項16に記載のメモリシステムであって、前記ブリッジが、第2のアドレスに関連する第2のコマンドを前記システムから受け取り、前記第2のアドレスが前記保持キューの任意のアドレスと一致する場合、前記第2のコマンドを前記保持キューに置くようにさらに構成される、メモリシステム。
【請求項20】
外部メモリにデータを書き込む又はそこからデータを読み出す方法であって、前記メモリが、
データの一部を読み出す及び/又は書き込むコマンドをシステムから受け取ること、及び
前記データの一部を含むデータの完全なバーストのためのECCデータをキャッシュすること、
を含む、方法。
【請求項21】
請求項20に記載の方法であって、前記受け取ることが、データの部分的ブロックを第1のアドレスに書き込むための第1の書き込みコマンドを受け取ることを含む場合、
前記外部メモリから、前記第1のアドレスを含み、前記データのブロックに関連するECCデータを含むデータのブロックを読み出すこと、及び
前記第1の書き込みコマンド及びデータの部分的ブロックをキューに置くこと、
をさらに含む、方法。
【請求項22】
請求項21に記載の方法であって、
前記データのブロックと前記データのブロックのためのECCデータとを外部前記メモリから受け取ること、
前記データの部分的ブロックを前記データのブロックとマージして、マージされたデータを作成すること、及び
前記マージされたデータを前記外部メモリに書き込むこと、
をさらに含む、方法。
【請求項23】
請求項22に記載の方法であって、前記データのブロックのための前記ECCデータをキャッシュすることをさらに含む、方法。
【請求項24】
請求項21に記載の方法であって、
第2のアドレスに関連する第2のコマンドを前記システムから受け取ること、
前記第2のアドレスが前記キュー内の任意のアドレスと一致する場合、前記第2のコマンドを前記キューに置くこと、
をさらに含む、方法。
【請求項25】
請求項20に記載の方法であって、前記キャッシュすることが、前記データの一部を含むデータの8つの連続するバーストのためのECCデータをキャッシュすることを含む、方法。
【請求項26】
外部メモリにデータを書き込む又はそこからデータを読み出す方法であって、
データの一部を読み出す及び/又は書き込むコマンドをシステムから受け取ること、
前記データの一部を含むデータの完全なバーストのためのECCデータを検査すること、
を含む、方法。
【請求項27】
システムメモリアドレスを物理メモリアドレスに変換する方法であって、
第1のデータブロックに関連する第1のECCブロックを提供すること、
第2のデータブロックに関連する第2のECCブロックを提供すること、
第1のデータアドレスを有する前記第1のデータブロックの後であり前記第1のデータブロックに隣接する前記第1のECCデータブロックについて第1のECCメモリアドレスを計算すること、
前記第1のECCブロックの後でありそれに隣接する第2のECCメモリアドレスを計算すること、
前記第2のECCブロックの後でありそれに隣接する前記第2のECCデータブロックについて第2のECCメモリアドレスを計算すること、
を含む、方法。
【請求項28】
請求項27に記載の方法であって、前記第1のデータブロック、第1のECCブロック、第2のECCブロック、及び第2のデータブロックが、前記第1のデータアドレス、第1のECCメモリアドレス、第2のECCメモリアドレス、及び第2のデータアドレスに基づいてメモリにおいて連続している、方法。
【発明の詳細な説明】
【技術分野】
【0001】
コンピューティングシステムにおいて、メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)又はダブルデータレート(DDR)同期ダイナミックランダムアクセスメモリ(SDRAM))に格納されたデータは、書き込み又は読み出し動作の間、コントローラ、物理インタフェース(PHY)又はボードにおいて、又はデータがそこに格納されている間のメモリ自体において、エラーを被る場合がある。また、外部メモリはしばしば、第三者によってつくられ、及び/又は、機能的に安全な応用例に対して評価されないか、又はそうした応用例のために十分に信頼性がないかもしれない。メモリからのデータやコマンドが正しくないと、システムが正しく動作しなくなることがある。システムの誤った動作は、特に機能的安全性又は信頼性が重要であるシステム又は応用例において、望ましくない。
【0002】
メモリエラーには、一般に、永続的、過渡的、及び系統的という3つのタイプがある。永久的なエラーは、通常、メモリ又は関連する回路要素の物理的な破損又は劣化の結果であり、シリコンや配線の短絡である可能性がある。過渡的エラーは粒子の衝突によるものであり、一般に、(例えば、フリップフロップにおいて)ビットフリップ状態をもたらす。系統的なエラーは論理のバグである。例えば、システムは設計どおりに正しく動作し、ハードウェアやソフトウェアにバグがあるだけ等である。
【発明の概要】
【0003】
本明細書で説明される例には、メモリデバイスの物理アドレスからデータを読み出す、及び/又は、物理アドレスにデータを書き込むためのコマンドをシステムから受け取るように構成される相互接続を含む集積回路が含まれる。集積回路は、相互接続からコマンドを受け取り、システムアドレスと物理アドレスとの間のアドレス変換を実施するように構成されるブリッジをさらに含む。アドレス変換は、第1のデータアドレスを有する第1のデータブロックの後であり第1の誤り訂正符号(ECC)データブロックに隣接する第1のデータブロックのための第1のECCメモリアドレスを計算することと、第1のECCデータブロックの後であり第1のECCデータブロックに隣接する第2のECCメモリアドレスを計算することと、第2のECCシステムの後であり第2のECCシステムに隣接する第2のコマンドアドレスを計算することとによって実施される。
【0004】
本明細書で説明される別の例示の集積回路が、データの一部を読み出す及び/又は書き込むためのコマンドをシステムから受け取るように構成される相互接続を含む。集積回路はまた、相互接続からコマンドを受け取り、データの一部を含むデータのバーストについてECCデータを検査及び計算するように構成されるブリッジを含む。
【0005】
本明細書で説明される別の例示の集積回路は、データの一部を読み出す及び/又は書き込むためのコマンドをシステムから受け取るように構成される相互接続を含む。この集積回路は、相互接続からコマンドを受け取り、ECCデータを検査及び計算するように構成されるブリッジをさらに含む。ブリッジは、データの一部を含むデータの完全なバーストについてECCデータをキャッシュするようにさらに構成される。
【0006】
本明細書で説明される例はまた、メモリデバイス、プロセッサ、及び相互接続を有するメモリシステムを含み、相互接続は、メモリデバイスの物理アドレスからデータを読み出し、及び/又は、メモリデバイスの物理アドレスへデータを書き込むために、プロセッサからコマンドを受け取るように構成される。メモリデバイスは更に、相互接続からコマンドを受け取り、システムアドレスと物理アドレスとの間のアドレス変換を実施するように構成されるブリッジを含む。アドレス変換は、第1のデータアドレスを有する第1のデータブロックの後であり第1のデータブロックに隣接する第1のECCメモリアドレスを計算すること、第1のECCブロックの後であり第1のECCブロックに隣接する第2のECCメモリアドレスを計算すること、及び、第2のECCブロックの後であり第2のECCブロックに隣接する第2のデータアドレスを計算することによって実施される。
【0007】
本明細書で説明される別の例示のメモリデバイスは、メモリデバイス、プロセッサ、及び相互接続を含むメモリシステムと、ブリッジとを含む。相互接続は、データの一部を読み出すため、及び/又はデータの一部をメモリデバイスに書き込むためのコマンドをプロセッサから受け取るように構成される。ブリッジは、相互接続からコマンドを受け取り、ECCデータを検査及び計算するように構成され、ブリッジは更に、データの一部を含むデータの完全なバーストについてECCデータをキャッシュするように構成される。
【0008】
また、本明細書で説明される例は、外部メモリにデータを書き込む、又は外部メモリからデータを読み出す方法を含む。この方法は、データの一部を読み出す及び/又は書き込むためのコマンドをシステムから受け取り、データの一部を含むデータの完全なバーストについてECCデータをキャッシュすることを含む。
【0009】
また、本明細書では、外部メモリにデータを書き込む又はそこからデータを読み出す例示の方法について記載する。この方法は、データの一部を読み出す及び/又は書き込むためのコマンドをシステムから受け取り、データの一部を含むデータの完全なバーストについてECCデータを検査することを含む。
【0010】
また、本明細書では、システムメモリアドレスを物理メモリアドレスに変換する例示の方法について記載する。この方法は、第1のデータブロックに関連する第1のECCブロックを提供し、第2のデータブロックに関連する第2のECCブロックを提供することを含む。この方法はまた、第1のデータアドレスを有する第1のデータブロックの後であって第1のデータブロックに隣接する第1のECCデータブロックについて第1のECCメモリアドレスを計算し、第1のECCブロックの後であって第1のECCブロックに隣接する第2のECCメモリアドレスを計算し、第2のECCメモリの後であって第2のECCブロックに隣接する第2のデータブロックについて第2のデータアドレスを計算することを含む。
【0011】
種々の例の詳細な説明のため、ここで、添付の図面を参照する。
【図面の簡単な説明】
【0012】
【
図1】例示のメモリシステムのブロック図を図示する。
【0013】
【
図2】例示のECCブリッジのブロック図を図示する。
【0014】
【
図3】例示のリード・モディファイ・ライトブロックのブロック図を図示する。
【0015】
【
図4】例示のインラインECCブロックのブロック図を図示する。
【0016】
【0017】
【
図6】
図5の例示のアドレス指定パターンの例示の部分を図示する。
【0018】
【
図7】例示の状態機械(SM)ブロックのブロック図を図示する。
【0019】
【
図8】本明細書に記載される例示のメモリシステムを含む例示のデバイスを図示する。
【発明を実施するための形態】
【0020】
「~に基づく」という記載は、「少なくとも部分的に~に基づく」を意味する。従って、XがYに基づく場合、Xは、Y及び任意の数の他の要因の関数であり得る。
【0021】
本明細書に記載される例は、バーストの各ワードにわたって単一エラー訂正二重エラー検出(SECDED)ECCを計算する。バーストのサイズは、メモリデバイスの要件に依存し、一般に2の累乗(例えば、16、32、64、128、256)である。ECCシンドロームは、データ又はECCデータのバーストがページ境界を越えて延在しないように、通常データ(「インライン」)と混合されて格納される。一般に、格納及び検索は、2つの別個のコマンドからなる。1つはデータ用であり、もう1つはECCシンドローム用である。データ及びECCシンドロームのためのアドレス計算は、ホストシステムが依然として平坦で連続的なメモリマップを見るように、自動的に行われ得る。アドレス計算は、データ/ECCのチャンク全体を失うことによって、単一のアドレス上の永久欠陥がマスクされないことを保証するローリングシステムを用いることができる。
【0022】
また、いくつかの実施例は、どれだけ多くのデータが書き込まれるか又は読み出されるかにかかわらず、バースト全体にわたってECCを計算及び検査して、誤合致を提供するECCシンドロームのバースト又はエイリアシングに問題がないことをさらに確実にする。本明細書に記載される例示のシステムは、完全なデータ一貫性を維持しながら、データの完全なECC量子(quanta)より少ない量子が書き込まれるときに、自動的にリード・モディファイ・ライト(RMW)動作を実施する。本明細書で説明される例示のシステムはまた、サブバースト読み出しを要求するときに必要とされるであろうサブバースト書き込み及び複数読み出しを受け取るときに発生し得るRMW動作を低減するために、書き込み及び読み出しが格納及びマージされるECCキャッシュを実装する。
【0023】
図1は、本明細書に記載される一例に従ったメモリシステム100を示す。メモリシステム100は、マスター107がメモリから読み出す及び/又はメモリに書き込むためのインタフェースを提供する相互接続101を含む。マスター107は、例えばプロセッサを含み得る。相互接続101は、必要な変換を実施し、マスター107からECCブリッジ102に呼を送信する。ECCブリッジ102は、コンピューティングシステムとメモリデバイスとの間のインタフェースとして機能する。ECCブリッジ102は、例えば、エラー訂正符号(ECC)検査、システムアドレスと物理アドレスとの間のアドレス変換、及びコンピューティングシステムドメインとメモリデバイスドメインとの間の電圧変換(メモリコントローラ102から始まる)を扱い得る。メモリドメインは、メモリコントローラ103、物理層(PHY)104、ボードトレース105、及びメモリデバイス106自体を含む。メモリコントローラ103、物理層(PHY)104、ボードトレース105、及びメモリデバイス106は、例えば、SDRAMであってもよく、外部又は内部RAMであってもよい。
【0024】
図2は、ECCブリッジ102のブロック図を示す。ECCブリッジ102は、コンピューティングシステム電圧ドメイン201を用いて、コンピューティングシステム電圧で動作する相互接続101とインタフェースする。ECCブリッジ102はまた、メモリ電圧(例えば、DDR電圧)で動作するメモリデバイス106とインタフェースするためのメモリ電圧ドメイン203を含む。ECCブリッジ102はまた、コンピューティングシステム電圧ドメイン201とメモリ電圧ドメイン203との間で電圧変換を行うための電圧コンバータ202を含む。
【0025】
メモリ電圧ドメイン203は、電圧コンバータ202から電圧変換された読み出し又は書込みコマンド(及び付随するデータ)を受け取り、受け取ったコマンドをキューに入れるコマンドアービタ204を含む。リード・モディファイ・ライト(RMW)ブロック205は、リード・モディファイ・ライト動作、例えば、不完全ECC量子書き込みコマンドに対する読み出しコマンド、を扱う。ECC量子は、ECCシンドローム当たりのデータのサイズ(例えば、8バイトのデータ)である。インラインECCブロック206は、3つの主要な機能、ECCの付加/計算、ECCデータのキャッシュ、及び、メモリデバイスにおける物理アドレスへのシステムアドレスの変換を行う。
【0026】
RMWブロック205は、
図3でより詳細に示されている。コマンドアービタ204からのコマンド及びデータは、調停(arbitration)スケジューラ301によって受け取られる。調停スケジューラ301は、RMWブロック205について取り込みを行い、入力コマンドをルーティングし、追加の必要なタスクを実施する。調停スケジューラ301は、インラインECCブロック206に、(以下に記載するような)RMWブロック205による追加の処理を必要としない、及び/又は、先入れ先出し(FIFO)キューであり得るRMWバックログ保持キュー302における任意のコマンドに対するアドレス衝突(コヒーレント)ではない任意のコマンドを転送し得る。例えば、調停スケジューラ301は、(1)すべての書き込みデータバイトイネーブルがECC量子に対して設定されている、(2)システムアドレスがECC保護領域にない、又は(3)データがRMWバックログ保持キュー302内のどのコマンドともコヒーレントでない、という条件のいずれかが満たされている場合に、書き込みコマンドをインラインECCブロック206に転送し得る。調停スケジューラ301は、RMWバックログ保持キュー302内のいずれのコマンドにもデータがコヒーレントでない場合、読み出しコマンドをインラインECCブロック206に転送し得る。調停スケジューラ301によってインラインECCブロック206に転送されるコマンドは、マルチスレッドFIFOキュー304を介して転送され得る。
【0027】
データの部分的ECC量子を書き込むためのコマンドでは、調停スケジューラ301は、データの全バーストのための読み出しコマンドを発行し、書き込みコマンドをRMWバックログ保持キュー302に入れる。読み出しデータが状態機械(SM)207から戻されると、それはデータマージャーブロック303に置かれ、そこでRMWバックログ保持キュー302に置かれた部分的量子書込みデータとマージされる。データマージャーブロック303は、マージされたデータを調停スケジューラ301にルーティングし、調停スケジューラ301は、インラインECC206にルーティングされたマージされたデータバーストのための書き込みコマンドを発行する。
【0028】
調停スケジューラ301はまた、状況の変化に起因して、もはやコヒーレントではないRMWバックログ保持キュー302内のコマンドも処理する。このケースでは、データが上述のようにマージャーを必要とし得るか、又は、コマンドが単にインラインECC206に渡され得る。上述したように、RMWバックログ保持キュー302は、コマンド及びデータを保持し、これらは、コヒーレンシ解像度で待機するか、部分的書き込みによる戻りデータで待機するかのいずれかである。
【0029】
インラインECCブロック206は、
図4でより詳細に示されている。インラインECCブロック206に送られたコマンド及びデータは、コマンド調停及び生成ブロック401及びECC符号化ブロック405によって受け取られる。ECC符号化ブロック405は、書き込みコマンドで書き込まれるべきデータの量子に対するECCを計算する。ECC符号化ブロック405はまた、任意選択で、データのアドレスを各ECC内に符号化し得る。符号化されたアドレスは、ECC量子、バースト、又はブロックのアドレスであり得、システム又は仮想アドレスであり得、又は、メモリデバイス内の物理アドレスであり得る。これらのアドレスのうちの1つ以上が、各ECCシンドローム内に符号化され得る。
【0030】
インバウンドコマンドでは、コマンド調停及び生成ブロック401は、ECC領域及びオーナーシップ(ownership)情報に基づいてコマンドのシーケンスを生成する。例えば、或るキャッシュエントリが、特定のCPUによって「所有」され得、そのCPUによってのみ利用可能とし得る。ECCキャッシュバッファ402内のECCキャッシュラインの小さな組が、他のすべてのシステムイニシエータのために確保され得る。
【0031】
コマンド調停及び生成ブロック401によって読み出しコマンドが受け取られると、コマンド調停及び生成ブロック401は、関連するデータについてのECCがすでにECCキャッシュバッファ402にあるかどうかを判定する。ECCがECCキャッシュバッファ402にある場合、コマンド調停及び生成ブロック401は、読み出しコマンドをSM207にルーティングし、キャッシュされたECCを用いる。関連するデータのためのECCがECCキャッシュバッファ402にないが、ECCキャッシュバッファ402がECCブロックをキャッシュする空間を有する場合、コマンド調停及び生成ブロック401は、データ及びECCブロックの両方について、SM207に読み出しコマンドをルーティングする。SM207がECCブロックを戻すと、それらはECCキャッシュバッファ402に(オプションで、マルチスレッドFIFOキュー404を介して)格納される。関連するデータのためのECCがECCキャッシュバッファ402になく、追加のECCブロックのための利用可能な空間がない場合、ECCキャッシュバッファ402は、データとECCブロックの両方についてSM207に読み出しコマンドを送信する前に、最も古い読み出しECCデータを取り除く。取り除いたECCデータが「ダーティ」である場合、つまりキャッシュされたECCデータが物理メモリに格納されているECCデータとは異なる場合、ECCブロックは外部メモリに書き込まれ得る。
【0032】
コマンド調停及び生成ブロック401によって書き込みコマンドが受け取られると、コマンド調停及び生成ブロック401は、関連するデータのためのECCがすでにECCキャッシュバッファ402内にあるか否かを判定する。ECCがECCキャッシュバッファ402にある場合、ECCは、ECCキャッシュバッファ402内のキャッシュされたECCにマージされ、「ダーティ」とマーキングされる。関連するデータのためのECCがECCキャッシュバッファ402にないが、ECCキャッシュバッファ402が、ECCブロックをキャッシュするための空間を有する場合、ECCキャッシュバッファ402内の最も古い所有エントリが割り当てられ、ECCがその空間に格納されて「ダーティ」とマーキングされる。コマンド調停及び生成ブロック401は、データブロックのためにSM207に書き込みコマンドを発行する。
【0033】
関連するデータのためのECCがECCキャッシュバッファ402内になく、ECCキャッシュバッファ内の空間が所有されていない場合、コマンド調停及び生成ブロック401は、データブロックのためにSM207に書き込みコマンドを発行する。関連するデータのためのECCがECCキャッシュバッファ402内になく、すべての所有エントリがダーティである場合、ECCキャッシュバッファ402内の最も古いエントリが取り除かれ、ダーティである場合、外部メモリに書き込まれ得る。この空間は再割り当てされ得、書き込みコマンドのためのECCは、ECCキャッシュバッファ402のその再割り当てされた空間に書き込まれ得る。
【0034】
コマンド調停及び生成ブロック401によってSM207に送られたコマンドは、マルチスレッドFIFOキュー403を介して送られ得る。
【0035】
図4の例示のインラインECCブロック206では、ECCキャッシュバッファ402が、以前に読み書きされたECCブロックを将来の使用のために保持する。ECCキャッシュバッファ402は、ECCデータの各バイトについて、キャッシュされたECCバイトが物理メモリに格納されたECCバイトと異なるか否かを示す「ダーティ」フラグを有する。本明細書で記載する例では、ECCキャッシュバッファ内の各エントリが、8バーストのデータに対するECCシンドロームデータを保持する。この場合、ECCキャッシュバッファは、8個の連続するデータブロック(512バイト)に対して64バイトのECCシンドロームデータを保持する。
【0036】
上述したように、インラインECCブロック206は、システムアドレスと物理メモリアドレスとの間のアドレス変換も実施する。コマンド調停及び生成ブロック401は、このアドレス変換を実施し、変換されたアドレスをSM207に発行された読み出し及び書き込みコマンドに挿入する。本明細書で説明される例では、2つの64バイトECCブロックが、2つの512バイトデータブロック(各々8つの64バイトメモリバーストを有する)間に配置されるように、システムアドレスが変換される。このアドレス変換の例を
図5に示す。
図5から分かるように、ECCブロック52及び53は、512バイトデータブロック51及び54の間に連続的に配置される。
【0037】
このアドレス変換は、データ及びECCシンドローム格納にわたるすべてのアドレスビットを互い違いにすることによって、コマンド又はアドレス指定における欠陥に対する保護を提供する。この互い違いのパターンはメモリ空間の効率的な使用を提供し、通常のデータ使用のために空間の8/9を保持する一方で、ECCシンドロームのために1/9だけを取っておき、無駄になるメモリ空間はたとえあるとしてもほとんどない。また、8バースト(例えば、512バイト)毎のデータがECCに使用される1つのブロックを共有するので、アドレスビットエラーが、整合されたECCブロックにあたることはなく、データと同様にメモリアドレスが保護される。特に、バーストカウントに2の累乗(例えば、この例において8)を用い、バーストカウントに3の累乗+ECCシンドローム(例えば、この例ではバーストカウント(8)+1=9)を用いることによって、任意のアドレスビット欠陥が、データ及びECCが整合され、エラーをもたらすことを妨げる。また、バースト整合が如何なる128バイトぺージ境界にも交差しないように、2つの64バイトECCブロックが連続的に配置されている。このような配置は、例えば、128バイトバーストをサポートし得、128バイトを128バイトのメモリ整合された境界上で開始させ得る。メモリデバイスのバースト整合構成に応じて、また、データブロック+ECCブロックの数が素数バイアスを有するように、異なる数及びサイズのECCブロック及びデータバースト/ブロックを用いることができる。
【0038】
図6は、
図5のデータブロック51及び54とECCブロック52及び52との間の関係をより詳細に示す。データブロック51は、8つの64バイトバーストd0~d7を有する。データブロック54は、8つの64バイトバーストd8~dFを有する。64バイトECCブロック52は、データブロック51用のECCデータe0を含んでおり、64バイトECCブロック53は、ECCブロック54用のECCデータe1を含んでいる。
図5及び
図6のアドレスパターンを用いると、ブロック51及び54の第1のバーストは、メモリ全体を通して常に128バイト境界上にある。従って、この特定の例では、メモリデバイスに送られるすべての読み出しコマンドは128ビット整合であるべきであり、すべての2バースト動作は常に2バースト(このケースでは128バイト)整合される。
【0039】
他の整合の例も本システムによって意図される。例えば、256バイト整合を、64バーストメモリデバイスと共に用いることができる。このようなケースでは、4つの64バイトECCブロックが、16ブロックのデータの間に置かれる。これにより、256バイト整合されたすべてのマスターリクエストが、メモリデバイスに256バイト整合される。
【0040】
図7は、状態機械(SM)207のブロック図を示す。アービタ701は、資源が利用可能であることを保証するためにメモリコントローラ103へのコマンドを調停する責務を負う。アービタ701によってメモリコントローラ103に送られるコマンドは、マルチスレッドFIFOキュー704を介して送られ得る。読み出し戻りFIFO703が、読み出しコマンドに応答してメモリデバイス(
図1のメモリデバイス106など)からデータ及びECCを受け取ると、読み出し戻りFIFOは、そのデータのためのデータとオーナーシップを保持し、ECCデータをラインECC206に返す。読み出し戻りFIFO703は、ECC訂正及び検出(ECC COR/DET)ブロック702にデータを送り、ECC COR/DETブロック702は、SECDEDデバイスのケースでは、シングルエラーが訂正し、及び/又はダブルエラーが、インラインECCブロック206から受け取ったECCデータを用いてメモリのECC保護された領域を検出し、訂正された読み出しデータをマージャ-のためにRMWブロック205に返す。ECC訂正及び検出ブロック702は、メモリデバイスから受け取ったデータのバースト全体にわたってこのECC検査を実施する。バースト毎に8つのECCブロックが検査されるため、また、ECCシンドロームもメモリアドレスを含むため、アドレスビットエラーの事象においてECCシンドローム上の誤ヒットの可能性は小さい。読み出し戻りFIFO703は、読み出しECCデータを直接インラインECC206に戻すことができる。
【0041】
本明細書で説明されるECCキャッシュの例(例えば、ECCキャッシュバッファ402)は、メモリデバイスインタフェース上の最適バーストより少ないことを回避するために、トランザクションの効率的なマージ及びキャッシュを提供する。幾つかの実施例は、要求されたデータにかかわらず、コマンド及びアドレスのためのさらなる保護を提供するために、バースト全体にわたってECCを検査及び計算する。データバーストアクセス全体(DDRメモリの64バイトデータバースト全体など)にわたってECCを検査することで、コマンド又はアドレス欠陥から保護される。また、幾つかの例はさらに、アドレスをバーストにわたって拡散する新規な方式によって、トランザクションのアドレスをECCシンドロームに符号化し、追加のビットなしにトランザクションをさらに保護することもできる。幾つかの例は更に、より高いエラー検出率を可能にするために、パリティなどの付加的な診断手段を用いて機能(例えば、アドレス変換、ECC生成など)を保護する。幾つかの例は更に、難読化又は暗号化を追加してデータを保護し、エラー検出を強化することによって拡張され得る。
【0042】
本明細書に記載の解決策は、アドレス空間のより効率的な使用を提供し(無駄なメモリを潜在的になくし)、新規なアドレス変換方式を用いることによってアドレス欠陥(行、列、バンク、及びランク)に対する優れた保護を提供し、RMW及びサブバーストアクセスを最小化することによってメモリインタフェースのより効率的な使用を提供し、メモリコマンドキューに入る前に2つの独立したコマンドを生成することによってメモリコントローラ全体に対する保護を提供し、アドレスをECCシンドロームに符号化することによって付加的な保護を提供するので、既存の解決策よりも有益である。
【0043】
本明細書に記載されるインラインECC保護手法は、任意のタイプの電子機器システム又はデバイスで実装され得、オートモーティブ(例えば、ADAS又は高度ドライバ支援システム)又は産業応用例など、機能的安全性が重要である応用例におけるシステム及びデバイスに特に有用である。そのようなデバイスの一例には、ハードウェア要素(回路要素を含む)、ソフトウェア要素(有形コンピュータ読み取り可能媒体上に格納されたコンピュータコードを含む)、又は、ハードウェア及び/又はソフトウェア要素の組み合わせを含み得る、デバイスの機能に寄与する様々な内部及び/又は外部構成要素が含まれ得る。こういったデバイスは、入力/出力(I/O)ポート、入力構造、一つ又は複数のプロセッサ、メモリ、電源などを含み得る。
【0044】
図8は、本明細書に記載の例に従った、例示のプロセッサ81及びメモリデバイス100を有する、1つのそのような例示のデバイス80を示す。
【0045】
プロセッサ81は、デバイス80の全般的な動作を制御し得る。例えば、プロセッサ81は、オペレーティングシステム、プログラム、ユーザー及びアプリケーションインタフェース、ならびに、デバイスの他の任意の機能を実行するための処理能力を提供し得る。プロセッサ81は、一つ又は複数の汎用マイクロプロセッサ、特定用途マイクロプロセッサ(ASIC)、又はそのような処理構成要素の組み合わせなど、一つ又は複数のマイクロプロセッサを含み得る。プロセッサ81は、×86又はRISCアーキテクチャに基づく一つ又はそれ以上のプロセッサ、ならびに、専用グラフィックスプロセッサ(GPU)、画像信号プロセッサ、デジタルシグナルプロセッサ、ビデオプロセッサ、オーディオ、及び/又は関連するチップセットを含み得る。プロセッサ81は、多数の同じ又は異なるタイプのプロセッシングコアを含み得、システムオンチップ(SOC)デバイスとして実装され得る。
【0046】
プロセッサ81によって処理されるべき命令又はデータは、メモリデバイス100などのコンピュータ読み取り可能媒体に格納され得る。メモリデバイス100は、メモリデバイス(例えば、DRAM、SDRAM、又は内部メモリ)と、上述のインラインECC機能を実装するECCブリッジとを含み得る。
【0047】
本明細書において、ECC機能性及びアドレス変換は、ECCブリッジ102において行われるものとして説明されているが、この機能は代わりに、全体的又は部分的に、別の構成要素(例えば、メモリコントローラ103)において実装されてもよい。
【0048】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。
【国際調査報告】