IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-500785リモート実行デバイスにおけるホストベースのエラー検出能力の提供
<>
  • 特表-リモート実行デバイスにおけるホストベースのエラー検出能力の提供 図1
  • 特表-リモート実行デバイスにおけるホストベースのエラー検出能力の提供 図2
  • 特表-リモート実行デバイスにおけるホストベースのエラー検出能力の提供 図3
  • 特表-リモート実行デバイスにおけるホストベースのエラー検出能力の提供 図4
  • 特表-リモート実行デバイスにおけるホストベースのエラー検出能力の提供 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-10
(54)【発明の名称】リモート実行デバイスにおけるホストベースのエラー検出能力の提供
(51)【国際特許分類】
   G06F 11/00 20060101AFI20231227BHJP
【FI】
G06F11/00 604C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023537111
(86)(22)【出願日】2021-12-21
(85)【翻訳文提出日】2023-07-31
(86)【国際出願番号】 US2021064632
(87)【国際公開番号】W WO2022146790
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/136,549
(32)【優先日】2020-12-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】シュリカンス ガナパシー
(72)【発明者】
【氏名】ロス ヴィー. ラ フェトラ
(72)【発明者】
【氏名】ジョン カラマティアノス
(72)【発明者】
【氏名】サダンヴァ グルムルティ
(72)【発明者】
【氏名】シャイジーン アガ
(72)【発明者】
【氏名】ビラス スリダラン
(72)【発明者】
【氏名】マイケル イグナトウスキー
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
(57)【要約】
リモート実行デバイスにおいてホストベースのエラー検出能力を提供することが開示される。リモート実行デバイスは、メモリに記憶されたデータブロックを修正するホストオフロード動作を実施する。メタデータは、ローカルメタデータ生成がホストベースのメタデータ生成をエミュレートするように、修正されたデータブロックに対してローカルに生成される。データブロックに関する記憶されたメタデータは、データブロックの修正された部分に関するローカルに生成されたメタデータで更新される。ホストが、更新されたメタデータを使用して修正されたデータブロックに対して完全性チェックを実施する場合、ホストは、ホストによって生成されたメタデータとリモート実行デバイス内で生成されたメタデータとを区別しない。
【選択図】図1
【特許請求の範囲】
【請求項1】
リモート実行デバイスにおいてホストベースのエラー検出能力を提供する方法であって、
データブロックを修正することと、
修正されたデータブロックに関するメタデータをローカルに生成することと、
前記データブロックに関する記憶されたホスト生成メタデータを、前記修正されたデータブロックに関する、ローカルに生成されたメタデータで更新することと、を含む、
方法。
【請求項2】
前記修正されたデータブロック及び更新されたメタデータを記憶することと、
前記修正されたデータブロックを読み取る要求をホストから受信したことに応じて、前記修正されたデータブロック及び前記更新されたメタデータを送信することと、を含む、
請求項1の方法。
【請求項3】
前記データブロック及び前記データブロックに関するホスト生成メタデータを記憶することと、
ホストから受信したメタデータ生成ルックアップテーブル(LUT)を記憶することと、を含み、
前記修正されたデータブロックに関するメタデータをローカルに生成することは、前記LUTを利用して前記データブロックに関するメタデータを生成することを含む、
請求項1の方法。
【請求項4】
ホストから要求を受信したことに応じて、前記データブロック及び前記データブロックに関する記憶されたホスト生成メタデータを読み取ることと、
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することと、を含む、
請求項1の方法。
【請求項5】
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用して、前記データブロックに関するメタデータをローカルに生成することを含む、
請求項4の方法。
【請求項6】
前記データブロックは、前記データブロックに関する記憶されたホスト生成メタデータの検証が完了するのを待つことなく修正される、
請求項5の方法。
【請求項7】
前記データブロック及び前記メタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取ることと、
前記データブロックを修正する前に、前記ローカルに生成されたECC情報を検証することと、を含む、
請求項4の方法。
【請求項8】
前記修正されたデータブロック及び更新されたメタデータについてのECC情報を生成することと、
前記ECC情報を前記ECCストレージに記憶することと、を含む、
請求項7の方法。
【請求項9】
前記データブロックを修正することは、プロセッシングインメモリ(PIM)デバイスによって前記データブロックを修正することを含む、
請求項1の方法。
【請求項10】
装置であって、
メモリデバイスと、
前記メモリデバイスに結合されたプロセッシングインメモリ(PIM)デバイスと、を備え、
前記PIMデバイスは、
データブロックを修正することと、
前記修正されたデータブロックに関するメタデータをローカルに生成することと、
前記データブロックに関する記憶されたホスト生成メタデータを、前記修正されたデータブロックに関する、ローカルに生成されたメタデータで更新することと、
を行うように構成されている、
装置。
【請求項11】
前記PIMデバイスは、
前記データブロック及び前記データブロックに関するホスト生成メタデータを記憶することと、
ホストから受信したメタデータ生成ルックアップテーブル(LUT)を記憶することと、
を行うように構成されており、
前記修正されたデータブロックに関するメタデータをローカルに生成することは、前記LUTを利用してメタデータを生成することを含む、
請求項10の装置。
【請求項12】
前記PIMデバイスは、
ホストからPIM要求を受信したことに応じて、前記データブロック及び前記データブロックに関する記憶されたホスト生成メタデータを読み取ることと、
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することと、
を行うように構成されている、
請求項10の装置。
【請求項13】
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用して、前記データブロックに関するメタデータをローカルに生成することを含む、
請求項12の装置。
【請求項14】
前記PIMデバイスは、
前記データブロック及び前記メタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取ることと、
前記データブロックを修正する前に、前記ローカルに生成されたECC情報を検証することと、
を行うように構成されている、
請求項12の装置。
【請求項15】
前記PIMデバイスは、
前記修正されたデータブロック及び更新されたメタデータについてのECC情報を生成することと、
前記ECC情報を前記ECCストレージに記憶することと、
を行うように構成されている、
請求項14の装置。
【請求項16】
システムであって、
ホストプロセッサデバイスと、
前記ホストプロセッサデバイスに結合されたメモリデバイスと、を備え、
前記メモリデバイスは、
データブロックを修正することと、
前記修正されたデータブロックに関するメタデータをローカルに生成することと、
前記データブロックに関する記憶されたホスト生成メタデータを、前記修正されたデータブロックに関する、ローカルに生成されたメタデータで更新することと、
を行うように構成されている、
システム。
【請求項17】
前記メモリデバイスは、
前記データブロック及び前記データブロックに関するホスト生成メタデータを記憶することと、
前記ホストプロセッサデバイスから受信したメタデータ生成ルックアップテーブル(LUT)を記憶することと、
を行うように構成されており、
前記修正されたデータブロックに関するメタデータをローカルに生成することは、前記LUTを利用して前記メタデータを生成することを含む、
請求項16のシステム。
【請求項18】
前記メモリデバイスは、
前記ホストプロセッサデバイスからPIM要求を受信したことに応じて、前記データブロック及び前記データブロックに関する記憶されたホスト生成メタデータを読み取ることと、
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することと、
を行うように構成されている、
請求項16のシステム。
【請求項19】
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用して、前記データブロックに関するメタデータをローカルに生成することを含む、
請求項18のシステム。
【請求項20】
前記メモリデバイスは、
前記データブロック及び前記メタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取ることと、
前記データブロックを修正する前に、前記ローカルに生成されたECC情報を検証することと、
を行うように構成されている、
請求項18のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングシステムは、多くの場合、命令を取り出して実行し、実行された命令の結果を適切な場所に記憶することができるいくつかの処理リソース(例えば、1つ以上のプロセッサ)を含む。処理リソース(例えば、中央処理装置(central processing unit、CPU))は、データ(例えば、1つ以上のオペランド)に対して論理演算を実施することによって命令を実行するために使用することができる、例えば、算術論理ユニット(arithmetic logic unit、ALU)回路、浮動小数点ユニット(floating point unit、FPU)回路、及び/又は、組み合わせ論理ブロック等のいくつかの機能ユニットを備えることができる。例えば、機能ユニット回路は、オペランドに対する加算、減算、乗算及び/又は除算等の算術演算を実施するために使用されてもよい。典型的には、処理リソース(例えば、プロセッサ及び/又は関連付けられた機能ユニット回路)は、メモリアレイの外部にあってもよく、データは、命令のセットを実行するために、処理リソースとメモリアレイとの間のバスを介してアクセスされる。メモリアレイにおいてデータをフェッチ又は記憶するためのアクセスの量を低減するために、コンピューティングシステムは、処理リソース又は処理リソースのグループによる使用のために最近アクセス又は修正されたデータを一時的に記憶するキャッシュ階層を採用し得る。しかしながら、処理性能は、ある種の動作をプロセッサインメモリ(processor-in-memory、PIM)デバイスにオフロードすることによって更に改善され、PIMデバイスでは、処理リソースは、メモリの内部及び/又は近くに実装され、それにより、計算のためにデータを処理リソースの近くに持ってくるのではなく、データを記憶するメモリ位置の近くでデータ処理が実施される。PIMデバイスは、外部通信を低減及び/又は排除することによって時間を節約することができ、電力を節約することもできる。
【0002】
あるアプリケーションは、キャッシュ階層で頻繁にミスしてメモリからデータをフェッチする、一時的なデータ再利用が少ないか又はないフェーズを有する。加えて、これらのフェーズは、低い計算強度(フロップ/バイトの比)を示し得る。これらのフェーズの間、データ移動が激しく、フェーズがメモリ限界であるため、エネルギー効率及び性能が低下する。したがって、これらのフェーズは、PIMデバイス又はアクセラレータにオフロードするのに特に適している。例えば、プログラマは、特定のコードシーケンスがオフロードされるべきであるという指標をアプリケーションソースコード内に提供することができ、又は、コンパイラが、そのような決定を行ってもよい。オフロードされた命令の解釈及びオーケストレーションは、依然として、アプリケーションをホストする処理リソースによって実施されなければならない。
【図面の簡単な説明】
【0003】
図1】本開示の実施形態によるリモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的なシステムのブロック図である。
図2】本開示の実施形態による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供する例示的な方法を示すフロー図である。
図3】本開示の実施形態による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供する別の例示的な方法を示すフロー図である。
図4】本開示の実施形態による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供する別の例示的な方法を示すフロー図である。
図5】本開示の実施形態による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供する別の例示的な方法を示すフロー図である。
【発明を実施するための形態】
【0004】
プロセッシングインメモリ(Processing-in-Memory、PIM)アーキテクチャは、プロセッサとメモリとの間のデータリンク上の帯域幅が節約され、プロセッサの電力消費が低減され得るように、メモリ内又はメモリの近くで実行するための命令をオフロードすることをサポートする。例えば、PIMデバイスによるオフロードされた命令の実行は、データをローカル中央処理装置(CPU)レジスタにロードすること、及び、データをローカルCPUストレージからメモリに書き戻すことを必要としない。PIMアーキテクチャは、通常、PIMデバイスに動作をオフロードするためのPIM命令を実行するように構成されたPIM対応ホスト(例えば、CPU又はグラフィック処理ユニットGPU)を含む。典型的には、PIMデバイスは、メモリデバイス内に計算能力(例えば、PIM論理)を実装するメモリデバイスであるが、PIMデバイスは、メモリデバイスに密結合されてもよい。説明を容易にするために、本開示では、PIMデバイスは、計算能力を実装するメモリデバイス内に埋め込まれたPIM論理を有するPIM対応メモリデバイスであると仮定する。
【0005】
メモリに書き込まれたデータのエラー検出をサポートするために、ホストは、メモリに書き込まれたデータの信頼性、可用性及び保守性(reliability, availability and serviceability、RAS)メタデータを生成することができる。このメタデータは、通常、データと共にメモリデバイスに記憶され、データが後でメモリデバイスから取り出される場合にエラー検出チェックを実施するために使用される。例えば、ホストは、エラー検出機能をメモリから読み取られたデータに適用して、その機能の結果がメタデータと一致するかどうかを判定することができる。このエラー検出チェックを満たさないことは、メモリからデータを正確に取り出すことができないこと、又は、データ自体の破損を示すことがある。データの修正がRASメタデータを無効にする恐れがあるので、そのデータがPIM動作によって修正される場合に問題が生じる。すなわち、PIM修正データがホストによって取り出される場合、PIM修正データに適用されたエラー検出機能の結果は、データと共に記憶されたRASメタデータと一致しない可能性が高い。
【0006】
この問題に対する1つの解決策は、メモリデバイスにおいてホストベースのエラー保護技術をミラーリングすることである。しかしながら、これは、全てのPIM対応メモリベンダ及び全てのPIM対応ホストベンダが同じエラー保護技術を使用することに同意することが必要であり得るか、又は、ホストが、ホストによって使用される独自のエラー検出技術を用いてPIM対応メモリデバイスを具体的に構成することが必要であり得る。非常に多くの場合、ホストベンダは、これらの独自技術を開示したくない。したがって、PIM対応メモリデバイスにおいてホストベースのエラー検出技術をミラーリング又は正確に複製することは、実行可能な解決策ではない場合がある。
【0007】
本開示による実施形態は、ホストベースのエラー検出技術を複製することなく、PIMデバイスにおいてホストベースのエラー検出能力を提供することを対象とする。むしろ、これらの実施形態は、PIMデバイス自体の中で、PIM動作によって後に修正されるデータについて、ホスト生成メタデータを更新する。いくつかの実施形態では、PIM生成メタデータは、ホストから受信したヒント、提案又はキューに基づいて、ホストのメタデータ生成技術をエミュレートする。PIM生成メタデータで更新されるホスト生成メタデータは、ホストによって生成されたであろうRASメタデータとビットごとに一致することになる。したがって、これらの実施形態は、あたかもホスト自体がPIM計算データのためのRASメタデータを生成したかのように、PIM計算データのためのエラー検出能力を提供する。
【0008】
本開示による一実施形態は、メモリデバイスに記憶されたデータブロックを修正することを含む、リモート実行デバイスにおいてホストベースのエラー検出能力を提供する方法を対象とする。また、方法は、修正されたデータブロックに関するメタデータをローカルに生成することを含む。方法はまた、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新することを含む。
【0009】
いくつかの実施形態では、方法は、修正されたデータブロック及び更新されたメタデータを記憶することを含む。また、これらの実施形態は、ホストから修正されたデータブロックを読み取る要求を受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信することを含む。
【0010】
いくつかの実施形態では、方法は、データブロック及びデータブロックに関するホスト生成メタデータを記憶することを含む。また、これらの実施形態は、ホストから受信されたメタデータ生成ルックアップテーブル(look-up table、LUT)を記憶することを含む。データブロックの修正された部分に関するメタデータをローカルに生成することは、LUTを利用して、修正されたデータブロックに対するホストメタデータ生成をエミュレートすることを含み得る。
【0011】
いくつかの実施形態では、方法は、ホストから要求を受信したことに応じて、データブロック及びデータブロックに関する記憶されたホスト生成メタデータを読み取ることを含む。また、これらの実施形態は、データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証することを含む。データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用してデータブロックに関するメタデータを生成することを含んでもよい。データブロックの修正は、データブロックに関する記憶されたメタデータの検証が完了するのを待つことなく実施されてもよい。
【0012】
いくつかの実施形態では、方法は、記憶されたデータブロック及びメタデータについてローカルに生成されたエラー訂正コード(error correction code、ECC)情報をECCストレージから読み取ることと、データブロックを修正する前にローカルに生成されたECC情報を検証することと、を含む。いくつかの実施形態では、方法は、修正されたデータブロック及び更新されたメタデータについてのECC情報を生成することと、ECC情報をECCストレージに記憶することと、を含む。
【0013】
本開示による実施形態は、メモリデバイスと、メモリデバイスに結合されたプロセッシングインメモリ(PIM)デバイスと、を含むリモート実行デバイスにおいてホストベースのエラー検出能力を提供するための装置を対象とする。PIMデバイスは、データブロックを修正するように構成されている。また、PIMデバイスは、修正されたデータブロックに関するメタデータをローカルに生成するように構成されている。PIMデバイスは、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新するように更に構成されている。
【0014】
いくつかの実施形態では、PIMデバイスは、データブロック及びデータブロックに関するホスト生成メタデータを記憶し、ホストから受信されたメタデータ生成ルックアップテーブル(LUT)を記憶するように更に構成されている。データブロックの修正された部分に関するメタデータをローカルに生成することは、LUTを利用して、修正されたデータブロックに対するホストメタデータ生成をエミュレートすることを含み得る。
【0015】
いくつかの実施形態では、PIMデバイスは、ホストからPIM要求を受信したことに応じて、データブロック及びデータブロックに関する記憶されたホスト生成メタデータを読み取るように更に構成されている。これらの実施形態では、PIMデバイスは、データブロックに対するホストメタデータ生成をシミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証するように構成されている。データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用してデータブロックに関するメタデータを生成することを含んでもよい。
【0016】
いくつかの実施形態では、PIMデバイスは、記憶されたデータブロック及びメタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取り、データブロックを修正する前にローカルに生成されたECC情報を検証するように構成されている。いくつかの実施形態では、メモリデバイスは、修正されたデータブロック及び更新されたメタデータについてのECC情報を生成し、ECC情報をECCストレージに記憶するように更に構成されている。
【0017】
本開示による実施形態は、メモリデバイスとメモリデバイスに結合されたホストプロセッサとを含むリモート実行デバイスにおいてホストベースのエラー検出能力を提供するためのシステムを対象とする。メモリデバイスは、記憶されたデータブロックを修正するように構成されている。また、メモリデバイスは、修正されたデータブロックに関するメタデータをローカルに生成するように構成されている。メモリデバイスは、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新するように更に構成されている。
【0018】
いくつかの実施形態では、メモリデバイスは、データブロック及びデータブロックに関するホスト生成メタデータを記憶し、ホストから受信されたメタデータ生成ルックアップテーブル(LUT)を記憶するように更に構成されている。データブロックの修正された部分に関するメタデータをローカルに生成することは、LUTを利用して、修正されたデータブロックに対するホストメタデータ生成をシミュレートすることを含み得る。
【0019】
いくつかの実施形態では、メモリデバイスは、ホストからPIM要求を受信したことに応じて、データブロック及びデータブロックに関する記憶されたホスト生成メタデータを読み取るように更に構成されている。これらの実施形態では、メモリデバイスは、データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証するように構成されている。データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用してデータブロックに関するメタデータを生成することを含んでもよい。
【0020】
いくつかの実施形態では、メモリデバイスは、記憶されたデータブロック及びメタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取り、データブロックを修正する前にローカルに生成されたECC情報を検証するように更に構成されている。いくつかの実施形態では、メモリデバイスは、修正されたデータブロック及び更新されたメタデータについてのECC情報を生成し、ECC情報をECCストレージに記憶するように更に構成されている。
【0021】
本開示による実施形態は、図1から始めて更に詳細に説明される。図1は、本開示による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的なシステム100のブロック図を示す。図1の例示的なシステム100は、PIM対応メモリデバイス104等のリモート実行デバイスに結合されたホストプロセッサ102を含むが、読者は、いくつかの実施形態が、ホストプロセッサ102に代わって動作する他のタイプのリモート実行デバイスを使用してもよいことを理解するであろう。ホストプロセッサ102は、メモリデバイス104に対してデータを読み書きする命令を含む命令を実行する少なくとも1つのCPU116を含む。ホストプロセッサ102のメモリコントローラ112は、実行された命令から生成されたメモリ要求を受信し、その要求を、メモリチャネルを介してメモリデバイス104に送信されるメモリコマンドに解釈する。メモリデバイス104内のメモリインターフェース論理118は、コマンド(及び関連付けられたデータ)を受信し、メモリバンク106に対しデータを読み取るか又は書き込むことによって要求を満たす。いくつかの例では、メモリデバイスは、メモリインターフェースダイの上に積層され、いくつかのシリコン貫通ビア(through-silicon vias、TSV)を介してメモリインターフェースダイに電気的且つ通信可能に結合された1つ以上のダイナミックランダムアクセス(dynamic random access、DRAM)ダイを含む積層メモリデバイスであってもよい。例えば、メモリデバイス104は、高帯域幅メモリ(high bandwidth memory、HBM)デバイスであり得る。様々な例において、メモリデバイス104は、オフロード命令(例えば、PIM命令)を実行するための実行論理がCPU116の一部ではないという点で、リモート実行デバイスである。例えば、メモリデバイス104は、実行の局所性に関してホストプロセッサ102から「リモート」のままでありながら、ホストプロセッサ102と同じチップ上又は同じパッケージ内に実装され得る。いくつかの例では、システム100のホストプロセッサ102及びメモリデバイス104は、同じチップ(例えば、システムオンチップ(system-on-chip、SoC))上に統合されている。他の例では、システム100は、プロセッサ102及びそのコンポーネント(例えば、SoCとして)が、同じ半導体パッケージ内のメモリデバイス104と共にインターポーザウェハ上に配置されるシステムインパッケージ(SiP)アーキテクチャを実装する。
【0022】
RASの目的を満たすために、ホストプロセッサ102は、メモリデバイス104に対してデータを読み書きする場合にエラー検出技術を使用することができる。そのような技術の1つは、メモリに書き込まれるデータに関する線形エラー訂正/検出コードを生成することである。このコードは、メモリデバイス104に書き込まれるデータと共にメタデータとして記憶され得る。その後、データがメモリデバイス104から読み取られる場合、同じコードが、取り出されたデータに対して生成されて、そのコードが、データと共にメタデータ内に記憶されたコードと一致するかどうかを判定することができる。不一致がある場合、メモリデバイスからデータを読み取る際にエラーが発生している恐れがある。図1の例では、線形エラー訂正/検出コードは巡回冗長検査(cyclic redundancy check、CRC)コードであると仮定する。
【0023】
ホストプロセッサ102が、(メモリコントローラ112及びメモリインターフェース論理118を介して)メモリバンク106にデータ108を書き込む動作を実行する、図1に示された例を考える。データ108に対する書込み要求を発行する前に、ホストエラー訂正モジュール114は、メタデータ110に含まれるデータ108のためにCRCを生成する関数を適用する。データ108及びメタデータ110は、書き込み動作の一部としてメモリバンク106に記憶される。例えば、ホストは、データのMバイトごとにCRC16を生成してもよい。CRCは、入力データを多項式個(生成多項式とも呼ばれる)で除算することによって生成される。一例では、生成多項式は、CRCコードによって命令されるNバイト幅であり、除算の剰余は、生成されたCRCである。CRC及びMバイトのデータを含むメタデータは、メモリデバイスに転送され、記憶される。
【0024】
上記の例を続けると、ホストプロセッサ102からの読み取り要求に応じて、データ108及びメタデータ110がメモリバンク106から読み取られ、(メモリコントローラ112及びメモリインターフェース論理118を介して)ホストプロセッサ102に送信される。エラー訂正モジュール114は、同じ関数を適用してデータ108のCRCを生成し、このCRCをメタデータ110内のCRCと比較することによって、受信データ108の完全性を検証する。不一致がある場合、データ108の読み取りエラー又は破損が発生した可能性が高い。CRCコードに限定されない他の適切なエラー検出技術がエラー訂正モジュール114によって使用されてもよいことを読者は理解するであろう。むしろ、任意の適切な線形エラー訂正/検出コードを使用することができる。
【0025】
また、メモリデバイス104は、データがメモリバンク106に正しく読み取られたか又は書き込まれたかを決定するためのローカルエラー検出及び訂正能力を含み得る。いくつかの例では、メモリデバイス104は、エラー訂正コード(ECC)モジュール128を含む。例えば、ECCモジュール128は、ECCモジュール128がスタックダイメモリデバイス(例えば、HBM)の各ダイ上に実装されるという点で、オンダイECCであり得る。ECCは、ホストとの間で送信される全てのデータ(メタデータを含む)にエラー検出/訂正能力を提供するように、メモリベンダ(独自仕様又は標準仕様の何れか)によって設計され得る。ECCコード化は、新しいデータがメモリに書き込まれる前に実施される。チェックビットはコード化され、ECCストレージ130等のECC指定ストレージ領域に記憶される。同様に、ECCデコードは、メモリバンク106からデータ及びメタデータの両方を読み取り、チェックビットストレージから(例えば、ECCストレージ130から)チェックビットを読み取ることによって、データがメモリから読み取られた後に実施される。読み取られたデータ及びメタデータに対して計算されたチェックビットは、チェックビットストレージからの記憶されたチェックビットと比較される。ECCデコードはメモリデバイス104内で実施されるので、メモリデバイスは、チェックビットのデコード中にエラーが検出された場合に、ホストプロセッサ102に透過性情報を提供することができる。
【0026】
いくつかの例において、メモリデバイス104は、メモリバンク106内のデータストアに対してPIM動作(例えば、算術演算)を実行するためのPIM論理120及びPIMレジスタ122を含むPIMデバイス150を含む。いくつかの実施形態では、PIMデバイス150は各メモリバンクに対して実装されてもよく、他の実施形態では、PIMデバイス150は各メモリチャネルに対して実装されてもよい。限定ではなく例として、メモリデバイス104は、メモリバンク内のある位置からレジスタファイル(すなわち、PIMレジスタ122)のレジスタr0にデータをロードし、ホストのCPU116によって計算されたホストプロセッサ102から受信したデータをレジスタファイルのレジスタr1にロードするためのコマンドのセットを受信することができる。この例では、PIM論理120は、レジスタr1の値をレジスタr0の値に加算し、その結果をレジスタr0に記憶する動作(例えば、メモリデバイスのコマンドバッファ(図示せず)に記憶された固定機能又は静的演算)を実施する。次に、PIMデータと呼ばれるレジスタr0からの結果が、メモリバンク106内の位置に書き戻される。この例では、メモリバンク106内のメモリ位置が、データ108を含むMバイトのデータブロックのアドレスであると考える。データ108の一部132が修正されているので、メタデータ110内のCRC又は他の線形コードは、ホストプロセッサ102に読み戻された場合に完全性チェックに失敗する可能性が高い。本開示の残りの部分では、PIM修正されたデータの部分132は、「PIMデータ」と呼ばれることがあり、一方データ108の未修正部分は、「非PIMデータ」と呼ばれることがある。
【0027】
上記から分かるように、ホスト生成CRC(又は他の線形エラー検出コード)は、PIM動作が、CRCが計算された元のデータを修正した後に無効になる場合がある。メモリデバイスにおいてホストエラー検出技術を完全に複製すること(これは、全てのPIM対応メモリベンダがエラー検出技術を全てのPIM対応ホストベンダと調整することを必要とし得る)を回避するために、本開示による実施形態は、より小さいデータブロックのCRCのキャッシュを使用して、大きいデータブロックのCRCを繰り返し構築する。
【0028】
いくつかの実施形態において、PIMデバイス150は、データブロック108のメタデータ110を更新するためのメタデータ生成部ユニット124を含む。データの一部のみが修正されるいくつかの例では、CRCは、データ108の修正された部分132に対してのみ計算される必要がある。例えば、データ108の修正された部分132のみについてCRCを生成することは、データ108のMバイト全体についてCRCを生成することと比較して高速である。修正された部分のみについてCRCを生成するために、いくつかの実施形態は、ホストプロセッサ102から受信されるホストのエラー検出技術についてのヒントを利用する。いくつかの例では、最も一般的に使用される16ビット剰余のCRC値のホストポピュレートされた(host-populated)ルックアップテーブル(LUT)が、メタデータ110を更新及び再構築するために利用される。これらの例では、LUTは、キーを表すビット位置と、値を表すそれらのCRC剰余とのディクショナリを記憶するLUTストレージ126で実装され得る。次いで、LUTは、ホストプロセッサ102のCRC計算論理全体を複製することなく、CRCを計算するために使用される。いくつかの例では、LUTストレージ126のコンテンツは、パリティ又はECCで保護され得る。いくつかの実施形態では、ホストプロセッサ102は、メモリマッピングされた命令を通じて、又は、パワーオンセルフテスト(power-on self-test、POST)シーケンスの一部としてブート時に、LUTストレージ126をポピュレートする。PIM動作の一部として修正されたデータに関してメモリデバイス104内でローカルにメタデータを生成することについて、以下で更に詳細に説明する。
【0029】
更なる説明のために、図2は、本開示による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的な方法を示すフロー図を示す。図2に示す例は、図1に示すPIM対応メモリデバイス104等のリモート実行デバイス214、アクセラレータ、又は、ホストシステムの代わりに動作を実行する他のデバイスを含む。また、図2に示す例は、図1に示したホストプロセッサ102と同様の構成のホストプロセッサ212を含む。図2の例示的な方法は、メモリデバイスに記憶されたデータブロックに向けられたホスト要求に応じて、記憶されたデータブロックの完全性を検証する(200)ことを含む。いくつかの例では、記憶されたデータブロックの完全性を検証すること(200)は、リモート実行デバイス214が、メモリデバイスに記憶されたデータを修正するコマンドを受信し、データに関連付けられた記憶されたエラー検出メタデータを、要求に応じてデータに対して生成されたエラー検出メタデータと比較し、記憶されたメタデータが生成されたメタデータと一致することを検証することによって実行される。
【0030】
また、図2の方法は、データブロックを修正する(202)ことを含む。いくつかの例では、データブロックを修正する(202)ことは、リモート実行デバイス214がメモリバンク(例えば、図1のメモリバンク106)からリモート実行デバイス214のレジスタ(例えば、図1のレジスタ122)にデータをロードすることによって実行される。これらの例では、データブロックを修正する(202)ことは、計算論理(例えば、図1のPIM論理120)において、レジスタ内のデータの少なくとも一部を修正する1つ以上の動作を実行することによって更に実行される。例えば、動作は、PIM論理における算術論理ユニット(ALU)において実行される算術演算又は論理演算であってもよい。
【0031】
また、図2の方法は、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことを含む。いくつかの例では、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことは、リモート実行デバイス214内で生成されたデータの修正された部分のメタデータが、ホストプロセッサ212によって生成されたメタデータであるかのように認識可能であるように、動作(複数可)によって修正されたデータブロックの部分に関するメタデータを生成するメタデータ生成ユニット(例えば、図1のメタデータ生成ユニット124)によって実行される。これらの例では、データブロックに関するメタデータは、線形エラー検出コード値(例えば、CRC値)を含む。チェック値を生成するためにホストプロセッサ212によって使用される線形エラー検出コードの特定の機能は、上述したように、メモリデバイス214にとって未知であり、したがって、メモリデバイス214は、ホストプロセッサ212によって使用されるメタデータ生成プロセスを正確に複製することができない。代わりに、メモリデバイス214内のメタデータ生成ユニットは、修正されたデータブロックに対して(又は動作(複数可)によって修正されたデータの部分のみに対して)ホストのメタデータ生成をエミュレートする。いくつかの例では、メタデータ生成ユニットは、ホストプロセッサ212によって使用される線形エラー検出関数についての部分情報を使用して、修正されたデータのチェック値を再構成することによって、ホストプロセッサのメタデータ生成技術をエミュレートする。この部分的な情報は、例えば、関数のタイプ(例えば、CRC)、ワードコード化幅、及び、チェック値へのビット列のマッピングを含み得る。メタデータ生成ユニットによるホストメタデータ生成エミュレーションは、以下で更に詳細に説明される。
【0032】
また、図2の方法は、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新する(206)ことを含む。いくつかの例では、データブロックに関する記憶されたホスト生成メタデータを修正部分のローカルに生成されたメタデータで更新する(206)ことは、リモート実行デバイス214がホスト生成メタデータ内のチェック値をデータワードのローカルに生成されたチェック値で置換することによって実行される。例えば、リモート実行デバイスは、データブロックに対してPIM動作を実行するPIM対応メモリデバイスであってもよい。この例では、データワードは、PIM動作(複数可)によって修正されたデータ(すなわち、PIMデータ)を含む。線形コードの固有の特性により、結果として得られる更新されたメタデータは、PIMデータに対する更新されたチェック値と、修正されたデータブロックに対するメタデータをプロセッサが生成した場合にホストプロセッサ自体によって生成されたであろうチェック値とビット単位で一致する非PIMデータに対する元のチェック値との組み合わせを含む。
【0033】
また、図2の方法は、修正されたデータブロック及び更新されたメタデータを記憶する(208)ことを含む。いくつかの例では、修正されたデータブロック及び更新されたメタデータを記憶する(208)ことは、PIMデータ及び非PIMデータを含むデータブロックを記憶し、ホスト生成メタデータ及びローカルに生成されたメタデータを含む更新されたメタデータを、データブロック及びメタデータがロードされた特定の位置のメモリバンクに記憶することによって実行される。
【0034】
また、図2の方法は、修正されたデータブロックを読み取る要求をホストから受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信する(210)ことを含む。いくつかの例では、修正されたデータブロックを読み取る要求をホストから受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信する(210)ことは、メモリデバイスによって、修正されたデータブロック及び更新されたメタデータが記憶されている特定のメモリ位置内のデータを読み取る読み取り要求をホストプロセッサ212から受信し、修正されたデータブロック及び更新されたメタデータをホストプロセッサ212に送信することによって実行される。ホストプロセッサ212によって実施されるデータ完全性検証は、メタデータを再生成することと、再生成されたメタデータをメモリデバイスから受信されたメタデータ(すなわち、更新されたメタデータ)と比較することと、を含み得る。データの修正された部分に関するメタデータは、ホストベースのメタデータ生成をシミュレートすることによって生成されたので、ホストプロセッサ212は、更新されたメタデータの完全性を有効であると認識する。
【0035】
更なる説明のために、図3は、本開示による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的な方法を示すフロー図を示す。図2に示される例示的な方法と同様に、図3の例示的な方法は、メモリデバイスに記憶されたデータブロックに向けられたホスト要求に応じて、記憶されたデータブロックの完全性を検証する(200)ことと、データブロックを修正する(202)ことと、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことと、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新する(206)ことと、修正されたデータブロック及び更新されたメタデータを記憶する(208)ことと、ホストから修正されたデータブロックを読み取る要求を受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信する(210)ことと、を含む。
【0036】
図3の方法は、データブロック及びデータブロックのホスト生成メタデータを記憶する(302)ことを更に含む。動作(例えば、PIM動作)によるデータブロックの任意の修正の前に、データブロックは、最初に、メモリデバイスに記憶される。いくつかの例では、データブロック及びデータブロックに関するホスト生成メタデータを記憶する(302)ことは、データブロックを特定のメモリ位置に記憶する要求を受信し、データブロックをメモリバンク内の特定のメモリ位置に記憶することによって実行される。これらの例では、データのブロック及び対応するメタデータが一緒に記憶される。一例では、メタデータはデータブロック内でインターリーブされる。別の例では、データブロックに関するメタデータは、データブロックに付加される。
【0037】
また、図3の方法は、ホストから受信したメタデータ生成ルックアップテーブル(LUT)を記憶する(304)ことを含む。いくつかの例では、ホストから受信されたメタデータ生成LUTを記憶する(304)ことは、リモート実行デバイス214によって、ホストベースのメタデータ生成計算に関する限定された情報を記述するLUTを受信することによって実行される。例えば、LUTは、CRC計算の最も一般的に使用されるビット剰余を含むことができる。LUTは、キーを表すビット位置及び値を表すそれらのCRC剰余のディクショナリを記憶する予約された記憶場所(例えば、図1のLUTストレージ126)に実装され得る。これらの例では、CRCは、LUTを使用して、リモート実行デバイス214内のCRC計算論理全体を複製することなく計算され得る。
【0038】
ホストプロセッサ212は、CRC等の線形コードを利用するので、PIMデータのためのメタデータ生成は、以下の性質を利用することができる。
【0039】
【数1】

加算は、等価なXOR演算を示す2要素のガロア体上で行われる。いくつかの実施形態では、LUTストレージは、XOR演算がSRAMバンク内で実施され得るスタティックRAM(static RAM、SRAM)バンクを用いて実装される。他の実施形態では、LUTストレージは、個別の論理で実装されるXOR演算を有するフロップ又はラッチバンクとして実装される。いくつかの例では、ホストプロセッサ212は、メモリマッピングされた命令を通して、又は、POSTシーケンスの一部としてブート時に、LUTストレージ内にLUTをポピュレートする。
【0040】
図3の方法では、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことは、LUTを利用してメタデータを生成する(306)ことを含む。いくつかの例では、リモート実行デバイス214にローカルなメタデータ生成ユニットは、入力データワードを詳しく検討し、LUTを使用してエラー検出メタデータを計算することによって、エラー検出メタデータ(例えば、CRC値)を反復的に生成する。MバイトのデータブロックがCRCエラー検出メタデータと共に記憶される例を考える。データブロックに対するホストメタデータ生成をエミュレートするために、最上位バイトから始めてNバイトのデータワードごとに、(a)CRCレジスタを「0」に設定し、(b)CRCレジスタを用いてNバイトのデータのXORを取り、(c)Nバイトのデータ内に設定された各ビットに対し、LUTを読み取ってビット単位の剰余キーを見出し、CRCレジスタを用いてキーのXORを取り、(d)CRCレジスタを(c)から得た値に設定する。完了すると、CRCレジスタの内容は、データブロック全体についてローカルに生成されたメタデータを表す。読者は、この計算が、(例えば、PIM動作の結果として)データブロックの修正された部分に対してのみ、記憶されたメタデータを更新するために使用され得ることを理解するであろう。例えば、データブロックの2つの最上位バイトのみが修正される場合、それらのNバイトのデータに関するメタデータのみが、記憶されたメタデータにおいて更新される必要がある。上記の例ではCRCコードが使用されているが、同じ原理が任意の線形エラー検出コードに適用され得ることを読者は更に理解するであろう。
【0041】
上記の例では、LUTは、CRCルックアップのための全ての可能なチェックサムを記憶するために最大MN個のエントリを有する。CRC16を使用する32バイトデータワードの場合、そのような手法のオーバーヘッドは、PIMデバイスごとに0.5KBのストレージである(PIMデバイスは、メモリチャネルごと又はメモリバンクごとに実装され得る)。一実施形態では、LUTは、PIM計算のピーク実行帯域幅を維持するために、複数のバンク又は読取りポートの何れかを介してサイクルごとに複数のCRCルックアップをサポートすることができる。別の実施形態では、各メモリデバイスチャネルが特定の数のエントリのグローバルLUTストレージを有し、(PIMを使用する)各メモリバンクがより少数のエントリを有するローカルLUTストレージを有する、LUTストレージの階層が利用され得る。例えば、ローカルLUTストレージは、PIMデータに関してそのバンク内で遭遇するデータの頻度によって管理される置換ポリシーで動作すると仮定することができる。
【0042】
更なる説明のために、図4は、本開示による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的な方法を示すフロー図を示す。図2に示される例示的な方法と同様に、図4の例示的な方法は、メモリデバイスに記憶されたデータブロックに向けられたホスト要求に応じて、記憶されたデータブロックの完全性を検証する(200)ことと、データブロックを修正する(202)ことと、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことと、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新する(206)ことと、修正されたデータブロック及び更新されたメタデータを記憶する(208)ことと、ホストから修正されたデータブロックを読み取る要求を受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信する(210)ことと、を含む。
【0043】
図4の方法では、記憶されたデータブロックの完全性を検証する(200)ことは、ホストから要求を受信したことに応じて、データブロック及びデータブロックに関する記憶されたホスト生成メタデータを読み取る(402)ことを含む。いくつかの例では、要求410は、PIM要求である。これらの例では、要求410は、データに対してPIM動作を実施する前に、データがメモリバンクから読み取られることを要求する。これらの例では、記憶されたデータブロック及びメタデータは、PIM動作を実施する前にメモリバンクから読み取られ、バッファ又はレジスタにロードされる。記憶されたメタデータは、データブロックに関するホスト生成メタデータを含む。場合によっては、以前のPIM動作がデータブロックを修正した場合、記憶されたメタデータは、ローカルに(すなわち、リモート実行デバイス214において)生成された更新されたメタデータを含み得る。
【0044】
図4の方法では、記憶されたデータブロックの完全性を検証する(200)ことは、データブロックに対するホストメタデータ生成をエミュレートすることによって、データブロックに関する記憶されたホスト生成メタデータを検証する(404)ことも含む。いくつかの例では、データブロックに対するホストメタデータ生成をエミュレートすることによってデータブロックに関する記憶されたホスト生成メタデータを検証する(404)ことは、リモート実行デバイスにおいて、データブロックに関するメタデータを再生成し、再生成されたメタデータを記憶されたメタデータと比較することによって行われる。これにより、動作を実施する前にデータが破損していないことが保証される。いくつかの実施形態では、データブロックに関する記憶されたメタデータを検証する(404)ことは、メタデータ生成ユニットによって実行されるが、他の実施形態では、動作を実施する前の「フロントエンド」メタデータ再生成及び検証は、動作が完了した後に「バックエンド」で実施されるメタデータ生成とは別の構成要素において実装され得る。データブロックに対するホストメタデータ生成をシミュレートすることは、LUTに関して上述したように実行されてもよい。例えば、データブロックに関する記憶されたホスト生成メタデータを検証する(404)ことは、データブロックに関するメタデータをローカルに生成するためにLUTを利用する(406)ことによって、メタデータ生成ユニットによって実行される。いくつかの実施形態では、LUTを利用してデータのメタデータのブロック(metadata the block of data)を生成する(406)ことは、LUTストレージを使用して上述したように搬送される。
【0045】
記憶されたメタデータがMバイトのデータブロックに対するCRCコードを含む例を考える。データブロックに対するホストメタデータ生成をエミュレートするために、最上位バイトから始めてNバイトのデータワードごとに、(a)CRCレジスタを「0」に設定し、(b)CRCレジスタを用いてNバイトのデータのXORを取り、(c)Nバイトのデータ内に設定された各ビットに対し、LUTストレージ内のLUTを読み取ってビット単位の剰余キーを見出し、CRCレジスタを用いてキーのXORを取り、(d)CRCレジスタを(c)から得た値に設定する。完了すると、CRCレジスタの内容は、データブロック全体についてローカルに生成されたメタデータを表す。次に、データブロックに対してローカルに生成されたメタデータを、データブロックに関する記憶されたメタデータと比較して、動作を実施する前にデータが破損しているか否かを判定する。
【0046】
リモート実行デバイス、例えば、PIM対応メモリデバイス内でメタデータ生成及び検証を実施することの1つの主要な問題は、メタデータ生成及び検証を実施するために追加のメモリアクセスサイクルを必要とすることによるメモリ帯域幅の潜在的な低減である。CRCは、PIM計算の前(すなわち、フロントエンド)に一度生成及び検証される必要があり、PIM計算の後(すなわち、バックエンド)にまた再生成される必要がある。このことは、いくつかの追加のサイクルをPIM計算に追加し、メタデータ生成及び検証によってボトルネックになるので、PIM計算の全体的なスループットを低減する。更に、ホストが、PIMが動作するデータにアクセスするのを待っている場合、メモリアクセス待ち時間はより長くなる。このことに対処するために、いくつかの実施形態は、フロントエンド上で2段階のメタデータ検証を利用することができる。例えば、高速であるが低カバレッジのエラー検出コードが、全体的なフロントエンド検証を高速化するために採用され得る。メタデータ検証(例えば、CRC検証)のためのより遅いが高カバレッジコードは、より強固なメタデータ検証を提供する。高速コードを使用する初期検証は、低速コードがデータを検証するためにアクティブに動作している間に、PIM動作が進行することを可能にする。例えば、高速コードは、入力データに対して最小限のチェックを実施することができる単純なインターリーブされたパリティコードとすることができる。そのような例では、メモリデバイスは、PIM動作を実行する前にメタデータ生成及び検証が完了するのを待つ必要がない。
【0047】
いくつかの例では、メタデータ生成及び検証の結果が、より高速なコードエラー検出コードの結果と一致しない場合、現在のPIM動作はスカッシュされ(squashed)、データは破損しているものとしてマークされる。ホストシステムは、反応的処置を実施することができる。これらの例では、ロールバック及び回復をサポートするために、PIM計算の結果は、メタデータ生成及び検証がデータの完全性を検証するまで、メモリバンク又はローカルレジスタに戻されて記憶されない。これらの例では、PIM計算の結果は、フロントエンド検証が完了するまで一時バッファ内に保持される。一時バッファは、これらのインフライト命令に依存する後続の命令が、このバッファから直接供給されるオペランドを取得する転送層としても機能し得る。
【0048】
メタデータを再生成することができないいくつかの実施形態では、データがクリーンであっても、メタデータをそのデータと共に破損しているものとして明示的にマークすることができる。例えば、ホストプロセッサが、真のエラーと、メタデータを生成できないことに起因する(cause by)擬似エラーとを区別することができるように、このデータを破損しているものとしてマークする場合に、異なるシグネチャを使用することができる。メタデータを生成できず、破損しているものとしてマークすることができない場合、データは依然として有効であり得る。ホストプロセッサは、メタデータがPIMデバイス内で正常に生成又は再生成されなかったデータに対して反応的処置を取ることができる。一例では、破損したメタデータがPIMデータとしてマークされているとホストプロセッサが判定した場合、ホストプロセッサは、そのキャッシュライン内の一意のNバイトデータの各々のチェックサムをLUTに反応的にポピュレートすることができる。次に、ホストプロセッサは、メモリデバイスが最近更新されたLUTを用いて正しいメタデータを計算することができるかどうかを試行し確認するために、読み取り要求を再現しようと試みることができる。別の例では、ホストプロセッサが、メモリデバイスが更なるアクションを実施することを可能にする信号を送る前に、再試行の回数についての閾値が許可され得る。LUTストレージ内の利用可能なエントリを用いてメタデータを生成することができないメモリデバイス内のデータは、メモリデバイスがメタデータを計算しようと試みることができるように、ホストプロセッサがLUTストレージをポピュレートすることを可能にするために、有限の時間量の間、(スワップされることなく)メモリデバイス内に存在し続けるべきである。
【0049】
更なる説明のために、図5は、本開示による、リモート実行デバイスにおいてホストベースのエラー検出能力を提供するための例示的な方法を示すフロー図を示す。図4に示された例示的な方法と同様に、図5の例示的な方法は、データブロック及びデータブロックに関する記憶されたメタデータを読み取る(402)ことと、データブロックに対するホストメタデータ生成をシミュレートすることによって、データブロックに関する記憶されたメタデータを検証する(404)こととを含む、記憶されたデータブロックの完全性を検証する(200)ことと、データブロックを修正する(202)ことと、修正されたデータブロックに関するメタデータをローカルに生成する(204)ことと、データブロックに関する記憶されたホスト生成メタデータを、修正されたデータブロックに関するローカルに生成されたメタデータで更新する(206)ことと、修正されたデータブロック及び更新されたメタデータを記憶する(208)ことと、ホストから修正されたデータブロックを読み取る要求を受信したことに応じて、修正されたデータブロック及び更新されたメタデータを送信する(210)ことと、を含む。
【0050】
図5の方法は、記憶されたデータブロック及びメタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取る(502)ことを更に含む。いくつかの実施形態では、メモリデバイス214は、メモリデバイス自体のメモリバンクとの間で読み書きされるデータを検証するためにメモリデバイスによって使用されるECCを実装し得る。ECCは、ECC生成部/検証部(例えば、図1のECCモジュール128)によって生成され得る。例えば、チェックビット等のECC情報は、ECCストレージ(例えば、130)に記憶され得る。いくつかの例では、記憶されたデータブロック及びメタデータについてローカルに生成されたECC情報をECCストレージから読み取る(502)ことは、記憶されたデータブロック及びメタデータについてECC情報をチェックビットストレージから読み取ることによって実行される。
【0051】
また、図5の方法は、データブロックを修正する前に、ローカルに生成されたECCを検証する(504)ことを含む。いくつかの例では、データブロックを修正する前にローカルに生成されたECCを検証する(504)ことは、組み合わされたデータブロック及びメタデータについてECCを計算し、計算されたECCをチェックビットストレージから読み取られたECC情報と比較することによって実行される。計算されたECCと記憶されたECCとが一致する場合、記憶されたデータブロック及び記憶されたメタデータのローカル完全性は損なわれていない。
【0052】
一実施形態では、ECCは、メタデータ検証が完了するのを待つことなく動作が実施されることを可能にするために、ECCによって提供されるカバレッジに依存することによって、高速コードとして採用され得る。データがクリーンであることをECC検証が信号で知らせるとすぐに、動作が進行し得る。別の実施形態では、ECC検証及びメタデータ検証は並行して実施される。アクセス待ち時間はECCエンコード/デコードを含むので、ECC検証及びメタデータ検証の両方を並行して実施することができる。
【0053】
また、図5の方法は、修正されたデータブロック及び更新されたメタデータについてのECC情報を生成する(506)ことを含む。いくつかの例では、修正されたデータブロック及び更新されたメタデータについてのECC情報を生成する(506)ことは、ECC生成部/検証部が修正されたデータブロック及び更新されたメタデータについてECCを計算することによって実行される。
【0054】
また、図5の方法は、ECC情報をECCストレージに記憶する(508)ことを含む。いくつかの例では、ECC情報をECCストレージに記憶する(508)ことは、修正されたデータブロック及び更新されたメタデータのECCチェックビットをECCストレージに記憶することによって実行される。
【0055】
場合によっては、修正されたデータブロックに対する更新されたメタデータの生成が完了するまで、ECC生成部/検証部は続行することができず、その対応するアドレス内のデータに対する後続の要求にサービスを提供することができない。いくつかの実施形態では、修正されたデータブロックに対するバックエンドメタデータ生成は、データをメモリに書き込まないが、中間結果をローカルレジスタ(例えば、図1のレジスタ122)に記憶する動作シーケンスに対して省略されてもよい。後続の命令が現在の命令と同じアドレスへの読取りアクセスを必要とする場合、転送ネットワーク一時バッファはデータを提供することができる。この場合、フロントエンドにおけるECC検証及びメタデータ検証は、このデータ転送が行われる場合にバイパスされてもよい。後続の命令が同じアドレスへの書込みアクセス又は任意の他のアドレスへの任意のアクセスを必要とする場合、メモリデバイスは、計算及びバックエンドメタデータ生成プロセスが完了するのを待つ。後続の命令がローカルレジスタからのデータのみを供給する場合、これらの命令を進めることができる。バックエンドにおけるメタデータ生成が完了すると、データは、新しいデータ用の空間を作るために一時バッファから除去される。
【0056】
いくつかの実施形態では、バックエンドメタデータ生成は、完全にパイプライン化され、修正されたデータをその部分的に生成されたメタデータと共に保持するのに十分なバッファリングがある場合、ピーク動作実行を持続することができる。メタデータが計算されている間に従属的動作がデバイス上でスケジューリングされている場合、スループットは低下するであろう。
【0057】
いくつかの実施形態では、メタデータ生成は、動作のために変更されたバイトのマスクを生成し、そのデータのためのメタデータのみを生成することによって、バックエンド上で促進される。データの一部のみが修正される場合、修正されたデータのその部分に関するメタデータは、提案されたLUTアルゴリズムによって生成される。この出力について元のデータとのXORを取ることによって、PIM計算データのメタデータを生成することができる。そのような手法のオーバーヘッドは、O1~O(n)であり、ここで、「n」は修正されたバイト数である。
【0058】
上記の開示を考慮して、ホストによって提供されるエラー検出メタデータ生成のためのヒントを使用することによって、PIMデバイス等のリモート実行デバイスは、1)リモート実行動作を実行する前にホストによって生成されたメタデータを検証し、2)ホストベースのメタデータ生成論理をリモート実行デバイスにコピーすることなく、ホストベースのメタデータ生成機能をエミュレートする方法で、リモート実行動作によって修正されたデータに対するエラー検出メタデータを生成することができることを、読者は理解するであろう。メモリ内ECC計算等の高速コードを利用して、記憶されたデータの完全性を最初に検証して、リモート実行動作を実行できるようにしつつ、一方で記憶されたデータのメタデータを再生成し、記憶されたメタデータに対して検証することができることも、読者には理解されよう。ECC検証及びメタデータ再生成/検証は、性能を改善するために並行して実行されてもよい。記憶されたメタデータの検証時に、リモート実行動作の結果は、一時バッファに記憶され、修正されたデータに対してメタデータが生成される間にその結果を使用する他のリモート実行動作に対して利用可能にされてもよいことも読者には理解されよう。修正されたデータに関するエラー検出メタデータは、データの未修正部分についてのメタデータを生成することなく、データの修正された部分についてのみ更新されたメタデータが作成されるという点で、断片的に生成されてもよい。したがって、ホストが、リモート実行動作によって更新されたデータと、メタデータ生成ヒントを使用してメモリデバイス内で更新されたメタデータとを読み取る場合、ホストは、ホストによって生成されたメタデータとメモリ内で生成されたメタデータとを区別しない。
【0059】
実施形態は、システム、装置、方法及び/又は論理回路であり得る。本開示のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++等のオブジェクト配向プログラミング言語、及び、「C」プログラミング言語若しくは同様のプログラミング言語等の従来の手続きプログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコード若しくはオブジェクトコードの何れかであり得る。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又はプログラマブル論理アレイ(programmable logic array、PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し得る。
【0060】
本開示の態様は、本開示のいくつかの実施形態による方法、装置(システム)及び論理回路のフロー図及び/又はブロック図を参照して本明細書に記載されている。フロー図及び/又はブロック図の各ブロック、並びに、フロー図及び/又はブロック図におけるブロックの組み合わせは、論理回路によって実装することができることが理解されよう。
【0061】
論理回路は、プロセッサ、他のプログラマブルデータ処理装置又は他のデバイスに実装されて、コンピュータ実装プロセスを生成するために、プロセッサ、他のプログラマブル装置又は他のデバイス上で実施される一連の動作ステップを行わせることができ、そのため、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令は、フロー図及び/又はブロック図のブロックに指定される機能/行為を実装する。
【0062】
図中のフロー図及びブロック図は、本開示の様々な実施形態によるシステム、方法及び論理回路の可能な実施形態のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実施形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよいし、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図及び/又はフローチャートの各ブロック、並びに、ブロック図及び/又はフローチャートにおけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は、専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0063】
本開示は、その実施形態を参照して具体的に示され、説明されてきたが、以下の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び詳細における様々な変更が行われ得ることが理解されるであろう。したがって、本明細書に記載された実施形態は、説明のためのものに過ぎず、本発明を限定するものではない。本開示は、詳細な説明ではなく添付の特許請求の範囲によって定義され、その範囲内の全ての差異は、本開示に含まれると解釈されるであろう。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-08-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
装置であって、
メモリデバイスと、
前記メモリデバイスに結合されたプロセッシングインメモリ(PIM)デバイスと、を備え、
前記PIMデバイスは、
データブロックを修正することと、
前記修正されたデータブロックに関するメタデータをローカルに生成することと、
前記データブロックに関する記憶されたホスト生成メタデータを、前記修正されたデータブロックに関する、ローカルに生成されたメタデータで更新することと、
を行うように構成されている、
装置。
【請求項2】
前記PIMデバイスは、
前記データブロック及び前記データブロックに関するホスト生成メタデータを記憶することと、
ホストから受信したメタデータ生成ルックアップテーブル(LUT)を記憶することと、
を行うように構成されており、
前記修正されたデータブロックに関するメタデータをローカルに生成することは、前記LUTを利用してメタデータを生成することを含む、
請求項の装置。
【請求項3】
前記PIMデバイスは、
ホストからPIM要求を受信したことに応じて、前記データブロック及び前記データブロックに関する記憶されたホスト生成メタデータを読み取ることと、
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することと、
を行うように構成されている、
請求項の装置。
【請求項4】
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用して、前記データブロックに関するメタデータをローカルに生成することを含む、
請求項の装置。
【請求項5】
前記PIMデバイスは、
前記データブロック及び前記メタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取ることと、
前記データブロックを修正する前に、前記ローカルに生成されたECC情報を検証することと、
を行うように構成されている、
請求項の装置。
【請求項6】
前記PIMデバイスは、
前記修正されたデータブロック及び更新されたメタデータについてのECC情報を生成することと、
前記ECC情報を前記ECCストレージに記憶することと、
を行うように構成されている、
請求項の装置。
【請求項7】
システムであって、
ホストプロセッサデバイスと、
前記ホストプロセッサデバイスに結合されたメモリデバイスと、を備え、
前記メモリデバイスは、
データブロックを修正することと、
前記修正されたデータブロックに関するメタデータをローカルに生成することと、
前記データブロックに関する記憶されたホスト生成メタデータを、前記修正されたデータブロックに関する、ローカルに生成されたメタデータで更新することと、
を行うように構成されている、
システム。
【請求項8】
前記メモリデバイスは、
前記データブロック及び前記データブロックに関するホスト生成メタデータを記憶することと、
前記ホストプロセッサデバイスから受信したメタデータ生成ルックアップテーブル(LUT)を記憶することと、
を行うように構成されており、
前記修正されたデータブロックに関するメタデータをローカルに生成することは、前記LUTを利用して前記メタデータを生成することを含む、
請求項のシステム。
【請求項9】
前記メモリデバイスは、
前記ホストプロセッサデバイスからPIM要求を受信したことに応じて、前記データブロック及び前記データブロックに関する記憶されたホスト生成メタデータを読み取ることと、
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することと、
を行うように構成されている、
請求項のシステム。
【請求項10】
前記データブロックに対するホストメタデータ生成をエミュレートすることによって、前記データブロックに関する記憶されたホスト生成メタデータを検証することは、ルックアップテーブル(LUT)を利用して、前記データブロックに関するメタデータをローカルに生成することを含む、
請求項のシステム。
【請求項11】
前記メモリデバイスは、
前記データブロック及び前記メタデータについてローカルに生成されたエラー訂正コード(ECC)情報をECCストレージから読み取ることと、
前記データブロックを修正する前に、前記ローカルに生成されたECC情報を検証することと、
を行うように構成されている、
請求項のシステム。
【国際調査報告】