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

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

▶ ザイリンクス インコーポレイテッドの特許一覧

特表2023-544552ハードウェアコヒーレント計算拡張メモリ
<>
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図1
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図2
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図3
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図4
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図5
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図6
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図7
  • 特表-ハードウェアコヒーレント計算拡張メモリ 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-24
(54)【発明の名称】ハードウェアコヒーレント計算拡張メモリ
(51)【国際特許分類】
   G06F 12/0815 20160101AFI20231017BHJP
【FI】
G06F12/0815
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023519330
(86)(22)【出願日】2021-05-14
(85)【翻訳文提出日】2023-05-18
(86)【国際出願番号】 US2021032543
(87)【国際公開番号】W WO2022066232
(87)【国際公開日】2022-03-31
(31)【優先権主張番号】17/035,484
(32)【優先日】2020-09-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.SMALLTALK
3.QUICKPATH
4.NVLINK
5.OPENCAPI
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ミッタル, ミリンド
(72)【発明者】
【氏名】ダスティダー, ジャディブ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205PP21
5B205PP28
5B205UX04
(57)【要約】
本明細書の実施形態は、ホストからI/Oデバイス内のハードウェアにデータ(例えば、複数のキャッシュラインを含むキャッシュライン又はデータブロック)の所有権を移転することを説明する。一実施形態では、ホスト及びI/Oデバイス(例えば、アクセラレータ)は、キャッシュコヒーレントシステムの一部であり、データの所有権がホスト内のホームエージェント(HA)からI/Oデバイス内のローカルHA、例えば、計算スレーブエージェント(CSA)に移転され得る。それにより、I/Oデバイス上の機能(例えば、アクセラレータ機能)は、これらの要求がホストHAに送信される必要なく、ローカルHAからデータを要求することができる。更に、アクセラレータ機能は、ローカルHAがデータをキャッシュラインベースで追跡するか、又はデータブロック(例えば、複数のキャッシュライン)によって追跡するかを示すことができる。これは、機能のデータの所望の使用に応じて、データを追跡することからのオーバーヘッドを低減することができる柔軟性を提供する。
【選択図】図2
【特許請求の範囲】
【請求項1】
ハードウェアアクセラレータであって、
アクセラレータ機能回路と、
前記ハードウェアアクセラレータ内の前記アクセラレータ機能回路に通信可能に結合され、ホストのホームエージェント(HA)に通信可能に結合するように構成された計算スレーブエージェント(CSA)であって、前記CSA及び前記HAは、同じコヒーレントドメインの一部である、CSAと、を備え、
前記CSAは、前記CSAが前記データセットのためのローカルHAとして機能するように、前記HAにデータセットの所有権を要求するように構成され、
前記アクセラレータ機能回路は、前記CSAが前記ローカルHAとして機能するときに前記データセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、ハードウェアアクセラレータ。
【請求項2】
前記CSAが前記HAに前記データセットの所有権を要求する前に、前記アクセラレータ機能回路は、前記データセットの読み出し又は修正のうちの少なくとも1つを行うための要求を前記CSAに送信するように構成され、前記アクセラレータ機能回路からの前記要求は、前記CSAが前記データセットを前記キャッシュラインレベルで追跡するか前記データブロックレベルで追跡するかを示す、請求項1に記載のハードウェアアクセラレータ。
【請求項3】
前記HAは、前記CSAからの前記要求に応答して、RAへのスヌープを実行して前記ホストからの前記データセットのキャッシュされたコピーをフラッシュするように構成されている、請求項2に記載のハードウェアアクセラレータ。
【請求項4】
前記HAは、前記スヌープが完了したという指示を受信した後に、プッシュキャッシュ保守動作(CMO)を前記CSAに送信するように構成され、前記プッシュCMOは、バッファ又は最終レベルキャッシュにスタックされた前記データセットの任意のキャッシュされたコピーを前記CSA内のスレーブエージェントに移動させる、請求項3に記載のハードウェアアクセラレータ。
【請求項5】
前記スレーブエージェントが前記プッシュCMOを受信したと判定した後、前記CSAは、前記データセットのためのローカルHAとして機能するように遷移する、請求項4に記載のハードウェアアクセラレータ。
【請求項6】
前記CSAは、(i)前記ホスト内の前記HAが前記データセットを追跡しない排他状態、又は(ii)前記CSA及び前記HAの両方が前記データセットを追跡し、前記ホスト内の前記RAが前記データセットのキャッシュされたコピーを有する共有状態のうちの1つにおいて、前記ローカルHAとして機能することができる、請求項1に記載のハードウェアアクセラレータ。
【請求項7】
前記HAは、
前記CSAが前記ローカルHAとして機能し始めた後に、前記データセットを修正するための要求を前記RAから受信することと、
前記CSAがもはや前記ローカルHAとして機能しない無効化状態に遷移するための要求を前記CSAに送信することであって、前記データセットの所有権は、前記HAに戻される、送信することと、を行うように構成されている、請求項1に記載のハードウェアアクセラレータ。
【請求項8】
ホストに通信可能に結合されるように構成されたI/Oデバイスであって、前記デバイスは、
アクセラレータ機能と、
前記アクセラレータ機能及び前記ホスト内のHAに通信可能に結合されたCSAであって、前記CSA及び前記HAは、同じコヒーレントドメインの一部である、CSAと、を備え、
前記CSAは、前記CSAが前記データセットのためのローカルHAとして機能するように、前記HAにデータセットの所有権を要求するように構成され、
前記アクセラレータ機能は、前記CSAが前記ローカルHAとして機能するときに前記データセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、I/Oデバイス。
【請求項9】
前記CSAが前記HAに前記データセットの所有権を要求する前に、前記アクセラレータ機能は、前記データセットの読み出し又は修正のうちの少なくとも1つを行うための要求を前記CSAに送信するように構成され、前記アクセラレータ機能からの前記要求は、前記CSAが前記データセットを前記キャッシュラインレベルで追跡するか前記データブロックレベルで追跡するかを示す、請求項8に記載のI/Oデバイス。
【請求項10】
前記HAは、前記CSAからの前記要求に応答して、前記ホスト内のRAへのスヌープを実行して前記ホストからの前記データセットのキャッシュされたコピーをフラッシュするように構成されている、請求項9に記載のI/Oデバイス。
【請求項11】
前記HAは、前記スヌープが完了したという指示を受信した後に、プッシュCMOを前記CSAに送信するように構成され、前記プッシュCMOは、バッファ又は最終レベルキャッシュにスタックされた前記データセットの任意のキャッシュされたコピーを前記CSA内のスレーブエージェントに移動させる、請求項10に記載のI/Oデバイス。
【請求項12】
前記スレーブエージェントが前記プッシュCMOを受信したと判定した後、前記CSAは、前記データセットのためのローカルHAとして機能するように遷移する、請求項11に記載のI/Oデバイス。
【請求項13】
前記CSAは、(i)前記ホスト内の前記HAが前記データセットを追跡しない排他状態、又は(ii)前記CSA及び前記HAの両方が前記データセットを追跡し、前記ホスト内のRAが前記データセットのキャッシュされたコピーを有する共有状態のうちの1つにおいて、前記ローカルHAとして機能することができる、請求項8に記載のI/Oデバイス。
【請求項14】
方法であって、
RA及びHAを含むホストをI/Oデバイスに通信可能に結合することであって、前記I/Oデバイスは、前記I/Oデバイス及び前記HA内のアクセラレータ機能に通信可能に結合されたCSAを含み、前記CSA及び前記HAは、同じコヒーレントドメインの一部である、結合することと、
前記CSAを使用して、前記CSAが前記データセットのためのローカルHAとして機能するように、前記HAにデータセットの所有権を要求することと、を含み、
前記アクセラレータ機能は、前記CSAが前記ローカルHAとして機能するときに前記データセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、概して、キャッシュコヒーレントシステムにおいてホストからI/Oデバイス(例えば、アクセラレータ)にデータの所有権を移転することに関する。
【背景技術】
【0002】
コンピュートエクスプレスリンク(Compute Express Link、CXL)、アクセラレータ用キャッシュコヒーレントインターコネクト(Cache Coherent Interconnect for Accelerators、CCIX)、QuickPathインターコネクト(QuickPath Interconnect、QPI)/Ultra Pathインターコネクト(Ultra Path Interconnect、UPI)、AMDインフィニティファブリック、NVLink、及びOpenCAPIによって使用可能にされるものなどのサーバCPU-アクセラレータシステムは、全て本質的にハードウェアキャッシュコヒーレントシステムであり、すなわち、ハードウェアは、プロセッサ又はアクセラレータがデータ及びメタデータ(データに関する情報)のプロデューサ又はコンシューマとして働いているかどうかにかかわらず、アクセスされ、変更され、キャッシュされたデータのユニバーサルでコヒーレントなビューを維持する。
【0003】
現在の共有メモリホスト-アクセラレータ実行フレームワークは、それらのシステムにおけるプロデューサ-コンシューマ対話のための細粒度ハードウェアコヒーレンシに依存している。時間とともに、ホスト又はアタッチされたアクセラレータ上のCPUのうちの少なくとも1つは、アプリケーションの一部として、又は機能を実行する一部として、データ又はメタデータのプロデューサ又はコンシューマとして働く。プロデューサ-コンシューマペア間のそのデータの移動は、ホストCPUとアクセラレータとの間のプロデューサ-コンシューマアクションが粗粒度のブロックレベルにあるかどうかにかかわらず、ホスト又はアクセラレータのいずれかにおけるハードウェアコヒーレンシメカニズムによって、細粒度のキャッシュラインレベルで追跡される。この細粒度の追跡はまた、ホームノード及びメモリがホストCPUプロデューサ/コンシューマに隣接しているか、アクセラレータプロデューサ/コンシューマに隣接しているかにかかわらず行われる。
【0004】
ハードウェアコヒーレンシベースのプロデューサ-コンシューマ対話は、プロデューサとコンシューマとの間のデータ及びメタデータ移動の細粒度の追跡に依存する。データ及びメタデータに対するプロデューサ及びコンシューマアクションは、典型的には、データのサイズがキャッシュラインよりも数桁大きいかどうかにかかわらず、キャッシュライン(例えば、64バイト)粒度で、例えば、MB、GB、又は更にはTB粒度で行われる。細粒度ハードウェアコヒーレンシを実施することの欠点は、データ及びメタデータに対するプロデューサアクション及びコンシューマアクションのサイズとは無関係の細粒度の追跡が、このデータ移動を細粒度で追跡するリソース(キャッシュ及びスヌープフィルタなど)と、データ及びメタデータの移動を追跡し、システムがアクセスされ、変更され、キャッシュされたデータのユニバーサルでコヒーレントなビューを維持するためのコヒーレンシメッセージングオーバーヘッドとの両方に関して、リソースの非効率的な使用をもたらすことである。また、ホームノードにおけるハードウェアコヒーレンシ計算及びメッセージングオーバーヘッドは、細粒度の追跡が必要とされるメモリの1つの領域のコヒーレンシを維持する性能にも影響を及ぼすが、これは、プロデューサ及びコンシューマアクションが粗粒度の追跡で十分であるようなメモリの別の領域上で同時コヒーレンシアクションが行われているからである。したがって、現在のキャッシュコヒーレントシステムでは、(i)ホストが、ホストによって管理されるアクセラレータ接続メモリへのアクセラレータコヒーレンシアクションを細粒度で不必要に追跡し、(ii)ホストとアクセラレータとの間で帯域幅及びキューイングリソースを消費する不必要なデータ移動があり、例えば、メモリがホストによって管理されるので、ローカルアクセラレータ接続メモリへのアクセラレータアクセスがホストをループしなければならず、(iii)アクセラレータがキャッシュを有し、アクセラレータ接続メモリもキャッシュを有する場合、アクセラレータ接続メモリへのアクセラレータコヒーレンシアクションのためのキャッシングリソースの使用が非効率的であり、(iv)ホストによって管理されるアクセラレータ接続メモリへのアクセラレータコヒーレンシアクションが、他のホストCPUからホストメモリへのコヒーレンシアクションの性能に影響を与える。
【発明の概要】
【0005】
一実施形態は、ハードウェアアクセラレータを説明する。ハードウェアアクセラレータは、ハードウェアアクセラレータ内のアクセラレータ機能回路に通信可能に結合された計算スレーブエージェント(computational slave agent、CSA)を含む。CSAは、ホストのホームエージェント(home agent、HA)に通信可能に結合するように構成される。CSA及びHAは、同じコヒーレントドメインの一部である。CSAは、CSAがデータセットのためのローカルHAとして機能するように、HAからデータセットの所有権を要求するように構成される。アクセラレータ機能回路は、CSAがローカルHAとして機能するときに、キャッシュラインレベル又はデータブロックレベルでデータセットを追跡するかどうかを示す。
【0006】
別の実施形態は、要求エージェント(request agent、RA)及びホームエージェント(HA)を含むホストと、ホストに通信可能に結合された入力/出力(input/output、I/O)デバイスとを含むコンピューティングシステムを説明し、I/Oデバイスは、I/Oデバイス及びHA内のアクセラレータ機能に通信可能に結合された計算スレーブエージェント(CSA)を含み、CSA及びHAは、同じコヒーレントドメインの一部である。更に、CSAは、CSAがデータセットのためのローカルHAとして機能するように、HAからデータセットの所有権を要求するように構成され、アクセラレータ機能は、CSAがローカルHAとして機能するとき、キャッシュラインレベル又はデータブロックレベルでデータセットを追跡するかどうかを示す。
【0007】
本明細書で説明する別の実施形態は、RA及びHAを含むホストをI/Oデバイスに通信可能に結合することであって、I/Oデバイスは、I/Oデバイス内のアクセラレータ機能及びHAに通信可能に結合されたCSAを含み、CSA及びHAは、同じコヒーレントドメインの一部である、結合することと、CSAを使用して、CSAがデータセットのローカルHAとして機能するように、HAにデータセットの所有権を要求することと、を含む方法である。更に、アクセラレータ機能は、CSAがローカルHAとして機能するときに、キャッシュラインレベル又はデータブロックレベルでデータセットを追跡するかどうかを示す。
【0008】
本明細書で説明される別の実施形態は、アクセラレータ機能と、アクセラレータ機能に通信可能に結合されたCSAと、ホスト内のHAと、を含むI/Oデバイスであり、CSA及びHAは、同じコヒーレントドメインの一部である。CSAは、CSAがデータセットのためのローカルHAとして機能するように、HAからデータセットの所有権を要求するように構成され、アクセラレータ機能は、CSAがローカルHAとして機能するとき、キャッシュラインレベル又はデータブロックレベルでデータセットを追跡するかどうかを示す。
【図面の簡単な説明】
【0009】
上記で列挙された特徴が詳細に理解され得るように、上記で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって得ることができ、それらの実装形態のうちの一部が添付の図面に示される。しかしながら、添付の図面は、典型的な例示的な実装形態のみを示し、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。
図1】一例による、アクセラレータデバイスに結合されたホストのブロック図である。
図2】一例による、I/Oデバイス内のハードウェアにデータの所有権を移転するフローチャートである。
図3】一例による、I/Oデバイス内のハードウェアからホストにデータの所有権を移転するためのフローチャートである。
図4】一例による、共有状態から排他状態に所有権を変更するときにホストホームエージェントを更新するためのフローチャートである。
図5】一例による、キャッシュラインの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。
図6】一例による、複数のキャッシュラインの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。
図7】一例による、データのブロックの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。
図8】一例による、プログラマブルICのフィールドプログラマブルゲートアレイの実装形態を示す。
【発明を実施するための形態】
【0010】
種々の特徴が、図面を参照して以下に説明される。図面は、縮尺通りに描かれている場合も、そうでない場合もあり、同様の構造又は機能の要素は、図面全体を通して同様の参照番号によって表されることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、説明の網羅的な説明として又は特許請求の範囲の限定として意図されない。加えて、例示された例は、示された全ての態様又は利点を有する必要はない。特定の例に関連して説明される態様又は利点は、必ずしもその例に限定されず、そのように図示されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の例において実施され得る。
【0011】
本明細書の実施形態は、ホストからI/Oデバイス内のハードウェアへのデータ(例えば、キャッシュライン又は複数のキャッシュラインを含むデータのブロック)の所有権の移転を説明する。一実施形態では、ホスト及びI/Oデバイス(例えば、アクセラレータデバイス)は、CXL、CCIX、QPI/UPI、AMDインフィニティファブリック、NVLink、及びOpenCAPIによって使用可能にされるものなどのキャッシュコヒーレントシステムの一部である。上述の欠点を軽減又は克服するために、以下の技術は、ホスト内のホームエージェント(HA)からI/Oデバイス内のローカルHA、例えば、計算スレーブエージェント(CSA)にデータの所有権を移転することができる。それにより、I/Oデバイス上の機能(例えば、アクセラレータ機能)は、これらの要求がホストHAに送信される必要なく、ローカルHAからデータを要求することができる。更に、アクセラレータ機能は、ローカルHAがキャッシュラインレベル又はデータブロックレベルのいずれでデータを追跡すべきかを示すことができる。これは、アクセラレータ機能のデータの所望の使用に応じて、データを追跡することからのオーバーヘッドを低減することができる柔軟性を提供する。更に、データの所有権は、同じキャッシュコヒーレントドメイン内にあるホストHA及びローカルHAによって共有することができる。例えば、ホスト上の要求エージェント(RA)は、参照のためにデータの読み出し専用コピーを保持することができ、一方、ローカルHAは、ホストHAに要求を送信することなく、I/Oデバイス上のアクセラレータ機能がデータにアクセスすることを可能にする。
【0012】
図1は、一例による、I/Oデバイス130に結合されたホスト105を含むハードウェアキャッシュコヒーレントコンピューティングシステム100のブロック図である。コンピューティングシステム100において、ホスト105(例えば、サーバ又は他のコンピューティングデバイス若しくはシステム)は、PCIe接続125を介してI/Oデバイス130(例えば、アクセラレータデバイス、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、グラフィックス処理ユニット(graphics processing unit、GPU)、集積回路、プリント回路基板(printed circuit board、PCB)、又はシステムオンチップ(system on a chip、SOC))に通信可能に結合される。一実施形態では、I/Oデバイス130は、ホスト105(例えば、PCIeスロットに接続されたPCBカード)に統合されるか、又はデバイス130は、ホスト105の外部にあり得る。
【0013】
ホスト105は、HA115(ホストHAと称される)に結合された少なくとも1つのRA110を含む。図示されていないが、ホスト105は、任意の数の処理コアを含むことができる任意の数のプロセッサを含み得る。ホスト105はまた、揮発性メモリ要素、不揮発性メモリ要素、及びそれらの組み合わせを有するメモリを含み得る。例えば、プロセッサ(又はプロセッサ上で実行されるソフトウェアアプリケーション)は、メモリ内の異なるアドレスに対して読み出し及び書き込みトランザクションを実行するRA110であり得る。HA115は、システム内のメモリアドレス範囲を担当する。換言すれば、HA115は、キャッシュコヒーレンシが維持されるように、範囲内のメモリアドレスの所有権を有する。RA110がHA115によって所有されるデータを変更したい場合、HA115はその要求を承認する必要がある。更に、RA110がデータを読み出したい場合、HA115は、RA110に最新のコピーが提供されていることを保証する。
【0014】
I/Oデバイス130は、アクセラレータ機能150に結合された複数のCSA135を含む。すなわち、アクセラレータ機能150は、ホストHA115によって追跡又は所有されるデータを読み出し、修正するために、CSA135を使用することができる。例えば、アクセラレータ機能150(例えば、ハードウェア処理要素又はプログラマブル論理上に実装された機械学習機能、暗号機能、圧縮機能、ネットワーク機能など)は、データを読み出す又は書き込むための要求をCSA135に送信することができ、CSA135は、これらの要求をHA115に転送する。多くの場合、要求されるデータは、I/Oデバイス130内のメモリに記憶される。したがって、アクセラレータ機能150によって要求されたデータが、ホストHA115ではなく、CSA135のうちの1つなどのI/Oデバイス130内のローカルHAによって所有(又は追跡)されることが有利である。
【0015】
図示のように、CSA135は、1つ以上のスレーブエージェント(slave agent、SA)145に結合されたRA140を含む。CSA135は、少なくとも3つの異なる状態又は動作モードを有することができる。第1の状態では、CSA135はデータを追跡又は所有しない。例えば、I/Oデバイス130は、データがI/Oデバイス130上のメモリに記憶される拡張メモリとしてホスト105によって使用されてもよいが、I/Oデバイス130はデータを処理しない(例えば、アクセラレータ機能はデータに対して動作していなくてもよい)。これは、CSA135がデータのローカルHAとして機能しないので、無効状態と称され得る。別の状態では、CSA135はローカルHAとして機能するが、共有状態にある。この状態では、CSA135及びホストHA115は、データの所有権を共有することができる。すなわち、CSA135及びホストHA115は両方ともデータを追跡することができる。この状態の一例は、ホスト105内のRA110とI/Oデバイス130内のRA140の両方がデータを要求している状態である。
【0016】
第3の状態では、CSA135はローカルHAとしてデータを所有するが、ホストHA115は所有しない(排他状態と称される)。一実施形態では、ホストHA115は、データがCSA135によって所有されているという記録を有していない。言い換えると、ホストHA115は、所有権データをCSA135に移転したことを追跡しなくてよい。これにより、HA115におけるオーバーヘッドが更に低減される。図示のように、HA115は、それが所有又は追跡するデータのメモリアドレスを示す追跡データリスト120を含む。データの所有権をCSA135に移転するとき、移転されたデータのメモリアドレスは追跡データリスト120から削除されてもよい。したがって、ホストRA110がデータを要求した場合、HA115は、そのデータがどこにあるかを知らないが、CSA135に要求(例えば、スヌープ)を送信して、所有権を望んでいることをCSA135に通知する。データのためのローカルHAとして現在機能しているCSA135は、次いで、所有権をホストHA115に戻す。
【0017】
図2は、一例による、I/Oデバイス(例えば、CSA)内のハードウェアにデータの所有権を移転する方法200のフローチャートである。方法200は、ホストHAが、1つ以上のキャッシュラインを含み得るデータ(例えば、1つ以上のキャッシュラインを含むデータセット)を所有又は追跡すると仮定して開始する。ブロック205において、CSA、より具体的にはCSA内のRAは、I/Oデバイス内のアクセラレータ機能からデータを処理するための要求を受信する。アクセラレータ機能はまた、CSAがデータのためのローカルHAになるべきかどうか(例えば、CSAが無効化状態から共有状態又は排他状態のいずれかに遷移すべきかどうか)を示す。
【0018】
更に、アクセラレータ機能は、CSAがキャッシュラインレベル又はブロックレベルでデータを追跡すべきかどうかを示すことができる。アクセラレータ機能は、データを読み出し、かつ/又は修正するオーケストレータであり、したがって、特定のアプリケーションが、各キャッシュラインを個々に追跡するか、又は複数のキャッシュラインをデータのブロックとして追跡するCSAからより多くの利益を得るかどうかを知る。すなわち、1つのアプリケーションは、キャッシュラインレベルでデータを追跡するCSAからより多くの利益を得ることができ、別のアプリケーションは、ブロックレベルでデータを追跡するCSAからより多くの利益を得ることができる。一実施形態では、アクセラレータ機能は、キャッシュラインレベルでの追跡又はブロックレベルでの追跡からより多くの利益を得ることができる挙動のパターンを表すコードを実行するか、又はプログラマブル論理を有することができる。
【0019】
ブロック210で、I/Oデバイス内のCSA又はRAは、キャッシュ保守動作(cache maintenance operation、CMO)をホストHAに送信する。一実施形態では、CMOは、ホストHAがCMO内で示されるデータの所有権をCSAに移転すべきであることを示す。例えば、CMOは、ホストHAが、(最終レベルキャッシュ又はバッファなどのホスト内の1つ以上のローカルキャッシュ内に記憶され得る)要求されたデータの最新バージョンを識別し、CSAにプッシュする、クリーン無効化動作であってもよい。
【0020】
ブロック215において、CSAは、データがホスト内のRAと共有されるべきかどうかを判定する。例えば、ホストRAは、データのコピーを保持したい場合がある。そのシナリオでは、アクセラレータ機能は、プロデューサであり得、データに対して計算を実行している。アクセラレータ機能がデータを修正するか、又はホストがキャッシュされたコピーを有するかにかかわらず、CSAを共有状態に切り替えることにより、ホストRAは、そのローカルキャッシュコピー(例えば、高速アクセスのための読み出し専用データ構造)を参照し続けることが可能になる。CSAが共有状態にあるとき、排他状態にあるときとは異なり、ホストHAは、データがホスト及びI/Oデバイス内のRAによって共有されているという事実を追跡する。
【0021】
CSAが排他状態でデータを所有する場合、方法200はブロック220に進み、ホストHAは、ホスト内のデータのキャッシュされたコピーを無効化する。一実施形態では、ホストHAは、キャッシュされたコピーを除去するためにフラッシュCMOを発行する。更に、方法200には示されていないが、ホスト内のデータのキャッシュされたコピーをフラッシュし、無効化するとき、ローカルHA(すなわち、CSA)が排他状態でデータを所有することになるので、ホストHAは、その追跡データリストからデータを除去することもできる。したがって、ホストHAはもはやデータを追跡する必要がなくなる。
【0022】
ブロック225において、ホストHAは、プッシュCMOを送信して、データの任意のバッファリングされたコピーをI/Oデバイス内のCSA内のSAにプッシュする。しかしながら、I/Oデバイス内のSAにデータをプッシュすることは、データが実際にSAに到達することを保証しない場合がある。例えば、データは、最終レベルキャッシュ又はバッファにスタックされてもよい。したがって、ホストHAは、CMOがSAに到達した後にのみ完了する新しいプッシュCMO、CleanInvalidateDeepを発行することができる。したがって、このプッシュCMOは、データがI/Oデバイス内のSAに到達することを保証しないフラッシュとは異なる。
【0023】
ブロック230において、CSAは、SAがプッシュCMOを受信するまで待機する。すなわち、CSAは、RAからSAへのトラフィックを監視して、プッシュCMOがいつSAに到達するかを判定する。これが行われると、ブロック235で、CSAは、CSAがキャッシュラインレベル又はブロックレベルのいずれかでデータを所有し、追跡する排他状態のローカルHAに遷移する。その結果、CSAは、最初にホストHAから許可を得ることなく、I/Oデバイス内のローカルRAがデータを読み出し、修正することを許可することができる。したがって、アクセラレータ機能がデータを要求すると、CSAは、メモリからデータを取り出し、アクセラレータ機能が読み出してI/Oデバイス内で修正するためのデータのローカルコピーをキャッシュすることができる。
【0024】
ブロック215に戻ると、データの所有権が、代わりに、排他状態のデータを所有するCSAではなく、ホストHA及びCSA(すなわち、ローカルHA)によって共有されるべきである場合、方法200は、ローカルHAと共有されるべきホスト内のデータが共有状態に変更されるブロック237に進む。ブロック240において、ホストHAは、データの任意のバッファされたコピーをCSA内のSAにプッシュするために、プッシュCMOを送信する。特に、ホストHAは、ブロック220とは対照的に、ホスト内のデータのキャッシュされたコピーを無効化しない。更に、ホストHAは、ブロック225で説明したのと同じ技術を使用して、データをI/Oデバイス内のSAにプッシュすることができる。
【0025】
ブロック245において、CSAは、SAがプッシュCMOを受信したことを確認するまで待機する。確認されると、ブロック250で、CSAは、共有状態のローカルHAに遷移する。この状態では、CSAとホストHSAの両方がデータを追跡する。例えば、ホストHAは、データがホスト内のRAとI/Oデバイス内のRAの両方で使用されていることを、その追跡データリスト内で追跡してもよい。ホストHAは、データがホスト内のRAによって使用されていることを追跡する必要があるため、同じデータがI/Oデバイス内のRAによって使用されていることも追跡することで、非常にわずかなオーバーヘッド(例えば、1つ以上の追加のビット)がホストHAに追加される。
【0026】
図3は、一例による、I/Oデバイス内のハードウェアからホストにデータの所有権を移転するための方法300のフローチャートである。方法300は、図2の方法200で説明したように、CSAが共有状態又は排他状態のいずれかでローカルHAに遷移したと仮定する。CSAがデータを(部分的に又は排他的に)所有する場合、ホストHAは、ホスト内のRAからデータを修正する要求を受信する。ホスト上のRAがデータを編集することを許可する前に、ホストHAは再びデータの排他的所有権を有していなければならない。
【0027】
ブロック305で、ホストHAは、共有状態又は排他状態のいずれかでローカルHAによって現在所有されているデータを求める要求を、ホスト内のRAから受信する。データが共有状態のローカルHAによって所有されている場合、ホストHAは、I/Oデバイス内のRAもデータを使用していることを知ることができる。データが排他状態でローカルHAによって所有されている場合、上述したように、ホストHAは、データがローカルHAに移転された後にデータを追跡する必要がないので、ホストHAは、どのCSAがローカルHAであるかを知ることができない。いずれの場合も、ホストHAは、データの排他的所有権を取り戻すことができる。
【0028】
ブロック310において、ホストHAは、ローカルHA/CSAにスヌープを送信する。スヌープは、ホストHAがデータの所有権を戻したいことをローカルHAに通知する。これに応答して、ローカルHAは、最新バージョンのデータがホストに移転されるように、ローカルキャッシュをフラッシュすることができる。
【0029】
ブロック315において、CSA/ローカルHAは、CSAがもはやローカルHAとして機能しない無効化状態に遷移する。したがって、データに対するI/Oデバイス内のRAからの要求は、CSAによってサービスされるのではなく、ホストHAに転送される。このようにして、ホストHAは、ローカルHAからデータの所有権を取り戻すことができる。
【0030】
図4は、一例による、共有状態から排他状態に所有権を変更するときにホストHAを更新するための方法400のフローチャートである。ブロック405において、CSAは、共有状態のローカルHAに遷移する。すなわち、CSA及びホストHAは、同じデータの所有権を共有する。その結果、ホスト内のRAとI/Oデバイス内のRAの両方が同じデータにアクセスすることができる。
【0031】
ブロック410で、ホストHAは、データのキャッシュされたコピーがホストRA及びI/Oデバイス内のRAによって使用されているという事実を追跡する。すなわち、ホストHA内の追跡データリストは、ホスト及びI/Oデバイス内の両方のRAがデータのキャッシュされたコピーを有することを示すことができる。そうすることによって、例えば、ホストRAが高速読み出し専用データアクセスのためにデータのコピーを保持することができる間に、I/Oデバイス上のRAがデータを修正することが可能になる。ホストHAは、データのホスト及びI/Oデバイスの両方の使用を追跡するので、ホストRAがデータを修正する要求を送信した場合、ホストHAは、ホストRAがデータを修正することを許可する前に、まず、I/OデバイスのRA内のデータのコピーを無効化し、フラッシュする必要があることを知る。
【0032】
しかしながら、ブロック415において、ホストHAは、ホストRAがもはやデータのコピーにアクセスする必要がないというCMOをホストRAから受信する。したがって、データを必要とする唯一のRAは、I/Oデバイス内のRAである。
【0033】
ブロック420において、ホストHAは、追跡データリストを更新して、ホストRA及びI/OデバイスRAの両方におけるデータの追跡を停止し、それによって、ホストHAにおけるオーバーヘッドを低減する。更に、ローカルHAは、データがもはやホスト内のRAによって使用されていないので、共有状態から排他状態に遷移することができる。ホスト内のRAがデータの使用を再び要求した場合、システムは、ホストHAがローカルHAと所有権を再び共有することができる(及びローカルHAが共有状態に遷移する)図3の方法300を使用することができる。
【0034】
図5は、一例による、キャッシュラインの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。一実施形態では、図5のタイミングチャートは、図2で説明した方法200に対応する追加の詳細を提供する。タイミングチャートは、アクセラレータ機能が、ホストHAによって所有されるデータを求めるデータ要求をI/Oデバイス内のCSAに送信することから始まる。すなわち、CSAは現在、ローカルHAとして機能していない(すなわち、CSAは無効化状態にある)。
【0035】
この実施形態では、アクセラレータからのデータ要求は、CSA(排他状態のローカルHAに遷移した後)がキャッシュラインレベルでデータを追跡すべきであることを示す特定のキャッシュラインに対するものである。これに応答して、CSAは、クリーン無効化CMOをホストHAに発行し、これはホストHAにホスト内のキャッシュラインのキャッシュされたコピーをフラッシュして無効化するように促す。このプロセスの一部として、図5は、ホストHAがホストRAにスヌープを発行して、キャッシュされたコピーを無効化し、フラッシュすることを示している。ホストHAは、クリーン無効化CMOを受信したことを示す完了(comp)CMOをCSAに発行することもできる。
【0036】
スヌープCMOからcompを受信した後、ホストHAは、プッシュCMO(すなわち、Clean Invalidate Deep(CleanInvDeep))をCSAに発行する。上述したように、フラッシュを実行するとき、キャッシュラインのフラッシュされたコピーは、最終レベルキャッシュ又はバッファにスタックされ、CSA内のSAに到達しない場合がある。プッシュCMOは、キャッシュラインの最新バージョンがSAに到達することを保証する。
【0037】
CleanInvDeepがSAに到達したことを確認すると、CSAは、排他状態のローカルHAに遷移することができ、アクセラレータによるキャッシュラインのローカルアクセスが許可される。CSAは、プッシュCMOを受信したことの確認をホストHAに送信することができる。ホストHAは、その追跡データリスト内のキャッシュラインの追跡を停止することができる。更に、図5のタイムラインを使用して、CSAを共有状態のローカルHSAに遷移させることもできるが、その実施形態では、ホスト内のキャッシュされたコピーを無効化することはできない。すなわち、CSAは、ホストHAがキャッシュされたコピーを無効化しないように、クリーン無効化とは異なるCMOを送信することができる。
【0038】
図5はまた、図3の方法300で説明したように、ホストHAが再びキャッシュラインの所有権を受け取ることを示している。所有権をCSAに移転した後、後で、タイムラインによって示されるように、ホストRAは、読み出し固有要求又は書き込み固有要求を使用して、キャッシュラインへのアクセスを要求する。例えば、ホスト内で実行されているプロセッサ機能は、キャッシュラインを読み出すか又は修正することを望む場合がある。ホストHAはキャッシュラインを追跡していないので、ホストHAは、キャッシュラインの最新バージョンをホストHAに送信するようにCSAに命令するスヌープをCSAに送信する。更に、CSAは、ローカルHAとしての機能から、もはやローカルHAとして機能しない無効化状態に遷移する。
【0039】
図6は、一例による、複数のキャッシュラインの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。すなわち、アクセラレータ機能が単一のキャッシュラインの所有権を要求する図5とは異なり、図6のアクセラレータは複数のキャッシュラインに対するデータ要求を送信し、CSAはキャッシュラインを個別に追跡する必要がある。これに応答して、CSAは、キャッシュライン(すなわち、ライン1~N)の各々に対してCMOを発行する。上述したように、CMOのタイプは、CSAが共有状態に遷移するか排他状態に遷移するかに応じて変化する。共有状態である場合、ホストHAは、ホスト内のキャッシュされたコピーを無効化しなくてもよい。
【0040】
上記と同様に、ホストHAは、データの最新バージョンを取り出すためにホストRAに1つ以上のスヌープを発行し、各キャッシュラインに対応するCSAにcomp CMOを送信する。スヌープに応答してcomp CMOを受信すると、ホストHAは、キャッシュラインがCSA内のSAにプッシュされるように、キャッシュライン1~NのためのプッシュCMO(すなわち、CleanInvDeep CMO)を送信することができる。CSAは、最後のキャッシュライン(すなわち、ラインN)のプッシュCMOを受信すると、共有状態又は排他状態のいずれかでローカルHAとして実行するように遷移することができる。
【0041】
その後、ホストRAは、読み出し/書き込み固有要求を使用してキャッシュラインへのアクセスを要求することができる。上述したように、ホストHAは、無効化状態(又は、所有権がローカルHA及びホストHAの両方によって共有される場合には共有状態)に遷移するCSAの所有権を取り戻すことができる。
【0042】
図7は、一例による、データのブロックの所有権をI/Oデバイス内のハードウェアに移転するためのタイミングチャートである。この実施形態では、アクセラレータは、複数のキャッシュラインを含むデータブロックに対する要求を送信する。すなわち、個々のキャッシュラインを追跡するCSAの代わりに、図7は、ローカルHAに遷移し、キャッシュラインレベルではなくブロックレベルで対応するデータを追跡するようにCSAに命令するアクセラレータを示している。
【0043】
これに応答して、CSAは、ブロック内の各キャッシュライン(例えば、ライン1~N)のCMOを送信する。この場合も、アクセラレータがホストHA及びCSAにデータブロックの所有権を共有するように命令した場合、又はデータブロックがCSAによって排他的に所有される場合、CMOのタイプは変化する。データブロック内の各キャッシュラインのCMOを送信した後、CSA、より具体的にはCSA内のRAは、クリーン無効化ブロックディープ(CleanInvBlockDeep)をホストHAに送信する。次に、CSAはブロックキャッシュ状態の監視を開始する。
【0044】
ホストHAは、上述したように、ホストRAにスヌープCMOを発行し、CSAにcompを発行する。しかしながら、ホストHAが(ホストRAからcompを受信した後に)各キャッシュラインに対してプッシュCMOを発行する図6とは異なり、ホストHAは、プッシュCMO CleanInvBlockDeepをCSAに発行し返す。一実施形態では、CSAは、集約されたポートごとにCleanlnvBlockDeepを受信する(集約されたポートが使用可能であると仮定する)。別様で、ホストHAは単一のCleanInvBlockDeepを発行する。CleanInvBlockDeepを受信した後、CSAは、共有状態又は排他状態のいずれかで、ローカルHAとして機能するように遷移することができる。
【0045】
図7には示されていないが、ホストHAは、上述した技術を使用して、データブロックの部分的又は排他的所有権を取り戻すことができる。
【0046】
上記の技術は、一部の非限定的な利点を提供する。例えば、アクセラレータがコヒーレンシ管理をホストからアクセラレータに透過的に移行したので、ホストHAは、もはや、ホストによって管理されるアクセラレータ接続メモリへのアクセラレータコヒーレンシアクションを細粒度で追跡しない。更に、スヌープフィルタなどのホスト追跡リソースもまた、もはや不必要に消費されず、これらのリソースは、これらの同じスヌープフィルタを使用してホスト-CPU-メモリ相互作用のための追跡リソースを改善するために解放される。更に、ホストからアクセラレータへのコヒーレンシ管理の移行に続いて、アクセラレータは、ローカルアクセラレータ接続メモリに直接アクセスするため、ホストとアクセラレータとの間の不必要なデータ移動がなくなる。また、アクセラレータにおけるキャッシュリソースが効率的に使用され、アクセラレータキャッシュは、ユースケース及びトラフィックパターンに基づいて、アクセラレータキャッシュ及びアクセラレータ接続メモリキャッシュの両方として作用することができる。更に、アクセラレータ接続メモリへのアクセラレータコヒーレンシアクションは、もはやホストに影響を及ぼさないため、もはや他のホストCPUからホストメモリへのコヒーレンシアクションの性能に影響を及ぼさない。
【0047】
図8は、I/Oデバイス130のFPGA800の実装形態を示しており、より具体的には、送受信機37、CLB33、BRAM34、入力/出力ブロック(「IOB」)36、構成及びクロッキング論理(「CONFIG/CLOCKS」)42、DSPブロック35、特殊入力/出力ブロック(「IO」)41(例えば、構成ポート及びクロックポート)、及びデジタルクロックマネージャ、アナログ/デジタルコンバータ、システム監視論理などの他のプログラマブル論理39を含む、多数の異なるプログラマブルタイルを含むPLアレイを伴うFPGAを伴う。FPGAはまた、PCIeインターフェース40、アナログ/デジタル変換器(ADC)38などを含み得る。
【0048】
一部のFPGAでは、各プログラマブルタイルは、図8の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素の入力及び出力端子48への接続を有する少なくとも1つのプログラマブル相互接続要素(「INT」)43を含み得る。各プログラマブル相互接続要素43はまた、同じタイル又は他のタイル内の隣接するプログラマブル相互接続要素の相互接続セグメント49への接続を含み得る。各プログラマブル相互接続要素43はまた、論理ブロック(図示せず)間の汎用ルーティングリソースの相互接続セグメント50への接続を含み得る。汎用ルーティングリソースは、相互接続セグメント(例えば、相互接続セグメント50)のトラックを備える論理ブロック(図示せず)と、相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含み得る。汎用ルーティングリソースの相互接続セグメント(例えば、相互接続セグメント50)は、1つ以上の論理ブロックにまたがり得る。プログラマブル相互接続要素43は、汎用ルーティングリソースとともに、図示されたFPGAのためのプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0049】
例示的な実装形態では、CLB33は、ユーザ論理を実装するようにプログラムされ得る構成可能論理要素(「CLE」)44に加え、単一のプログラマブル相互接続要素(「INT」)43を含み得る。BRAM34は、1つ以上のプログラマブル相互接続要素に加えて、BRAM論理要素(「BRL」)45を含み得る。典型的には、タイルに含まれる相互接続数は、タイルの高さに依存する。図示された例では、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数(例えば、4つ)も使用され得る。DSPブロック35は、適切な数のプログラマブル相互接続要素に加えて、DSP論理要素(「DSPL」)46を含み得る。IOB36は、例えば、プログラマブル相互接続要素43の1つのインスタンスに加えて、入力/出力論理要素(「IOL」)47の2つのインスタンスを含み得る。当業者には明らかなように、例えばIO論理要素47に接続された実際のIOパッドは、典型的には、入力/出力論理要素47の領域に限定されない。
【0050】
図示された例では、(図8に示された)ダイの中心近くの水平領域が、構成、クロック、及び他の制御論理のために使用される。この水平領域又は列から延在する垂直列51は、FPGAの幅にわたってクロック及び構成信号を分配するために使用される。
【0051】
図8に示すアーキテクチャを利用する一部のFPGAは、FPGAの大部分を構成する規則的な柱状構造を中断させる追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロック及び/又は専用論理であり得る。
【0052】
図8は、例示的なFPGAアーキテクチャのみを示すことが意図されていることに留意されたい。例えば、行内の論理ブロックの数、行の相対的な幅、行の数及び順序、行に含まれる論理ブロックのタイプ、論理ブロックの相対的なサイズ、並びに図8の上部に含まれる相互接続/論理実装形態は、純粋に例示的なものである。例えば、実際のFPGAでは、ユーザ論理の効率的な実装形態を容易にするために、CLBが現れるところではどこでもCLBの2以上の隣接する行が典型的には含まれるが、隣接するCLB行の数はFPGAの全体のサイズとともに変化する。
【0053】
上記において、本開示に提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、説明された特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装及び実践するように企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は先行技術を上回る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定とはみなされない。
【0054】
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェア態様とハードウェア態様概して「回路」、「モジュール」、若しくは「システム」と称される場合があるソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとることができる。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
【0055】
1つ以上のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、又は半導体のシステム、装置、又はデバイス、あるいは前述のものの任意の好適な組み合わせであり得るが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み出し専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み出し専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述のものの任意の適切な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれと関連して使用するためのプログラムを含有又は記憶することができる、任意の有形媒体である。
【0056】
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。かかる伝搬信号は、電磁、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、種々の形態のうちのいずれかをとってもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、又は移送することができる、任意のコンピュータ可読媒体であってもよい。
【0057】
コンピュータ可読媒体上に具体化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、又はこれらの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して送信することができる。
【0058】
本開示の態様のための動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれ得る。プログラムコードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上及び部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ若しくはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)又はワイドエリアネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は外部コンピュータへの接続が(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。
【0059】
本開示の態様は、本開示で提示される実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して以下で説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定された機能/動作を実装するための手段を作成するように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されて、機械を生成することができる。
【0060】
これらのコンピュータプログラム命令はまた、コンピュータ可読媒体に記憶された命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定された機能/動作を実装する命令を含む製品を生成するように、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読媒体に記憶され得る。
【0061】
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させて、コンピュータ又は他のプログラマブル装置上で実行される命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定された機能/動作を実装するためのプロセスを提供するように、コンピュータ実施プロセスを生成することができる。
【0062】
図中のフローチャート及びブロック図は、本発明の種々の例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表し得る。一部の代替実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、又はブロックは、時には、関与する機能性に応じて、逆の順序で実行されてもよい。ブロック図及び/又はフローチャート例解図の各ブロック、並びにブロック図及び/又はフローチャート例解図におけるブロックの組み合わせは、指定された機能若しくは動作を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0063】
開示された技術の一部の例は、以下の非限定的な例において特徴付けられ得る。
【0064】
実施例1.ハードウェアアクセラレータであって、
アクセラレータ機能回路と、
アクセラレータ機能回路に通信可能に結合され、ホスト内のホームエージェント(HA)と通信するように構成された計算スレーブエージェント(CSA)であって、CSA及びHAは、同じコヒーレントドメインの一部である、CSAと、を備え、
CSAは、CSAがデータセットのためのローカルHAとして機能するように、HAにデータセットの所有権を要求するように構成され、
アクセラレータ機能回路は、CSAがローカルHAとして機能するときにデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、ハードウェアアクセラレータ。
【0065】
実施例2.CSAがHAにデータセットの所有権を要求する前に、アクセラレータ機能は、データセットの読み出し又は修正のうちの少なくとも1つを行うための要求をCSAに送信するように構成され、アクセラレータ機能からの要求は、CSAがデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、実施例1に記載のハードウェアアクセラレータ。
【0066】
実施例3.HAは、CSAからの要求に応答して、ホスト内の要求エージェント(RA)へのスヌープを実行してホストからデータセットのキャッシュされたコピーをフラッシュするように構成されている、実施例2に記載のハードウェアアクセラレータ。
【0067】
実施例4.HAは、スヌープが完了したという指示を受信した後に、プッシュキャッシュ保守動作(CMO)をCSAに送信するように構成され、プッシュCMOは、バッファ又は最終レベルキャッシュにスタックされたデータセットの任意のキャッシュコピーをCSA内のスレーブエージェントに移動させる、実施例3に記載のハードウェアアクセラレータ。
【0068】
実施例5.スレーブエージェントがプッシュCMOを受信したと判定した後、CSAは、データセットのためのローカルHAとして機能するように遷移する、実施例4に記載のハードウェアアクセラレータ。
【0069】
実施例6.CSAは、(i)ホスト内のHAがデータセットを追跡しない排他状態、又は(ii)CSA及びHAの両方がデータセットを追跡し、ホスト内のRAがデータセットのキャッシュされたコピーを有する共有状態のうちの1つにおいて、ローカルHAとして機能することができる、実施例1に記載のハードウェアアクセラレータ。
【0070】
実施例7.HAは、
CSAがローカルHAとしての役割を開始した後に、データセットを修正するための要求をホスト内のRAから受信することと、
CSAがもはやローカルHAとして機能しない無効化状態に遷移するための要求をCSAに送信することであって、データセットの所有権は、HAに戻される、送信することと、を行うように構成されている、実施例1に記載のハードウェアアクセラレータ。
【0071】
実施例8.方法であって、
RA及びHAを含むホストをI/Oデバイスに通信可能に結合することであって、I/Oデバイスは、I/Oデバイス及びHA内のアクセラレータ機能に通信可能に結合されたCSAを含み、CSA及びHAは、同じコヒーレントドメインの一部である、結合することと、
CSAを使用して、CSAがデータセットのためのローカルHAとして機能するように、HAにデータセットの所有権を要求することと、を含み、
アクセラレータ機能は、CSAがローカルHAとして機能するときにデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、方法。
【0072】
実施例9.CSAがHAからデータセットの所有権を要求する前に、
データセットを読み出すこと又は修正することのうちの少なくとも1つを行うための要求をアクセラレータ機能からCSAに送信することを更に含み、アクセラレータ機能からの要求は、CSAがデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、実施例8に記載の方法。
【0073】
実施例10.
HAを使用して、CSAからの要求に応答して、RAへのスヌープを実行してホストからのデータセットのキャッシュされたコピーをフラッシュすることを更に含む、実施例9に記載の方法。
【0074】
実施例11.
スヌープが完了したという指示を受信した後に、HAからプッシュCMOをCSAに送信することを更に含み、プッシュCMOは、バッファ又は最終レベルキャッシュにスタックされたデータセットの任意のキャッシュされたコピーをCSA内のスレーブエージェントに移動させる、実施例10に記載の方法。
【0075】
実施例12.スレーブエージェントがプッシュCMOを受信したと判定した後に、
データセットのためのローカルHAとして機能するようにCSAを遷移させることを更に含む、実施例11に記載の方法。
【0076】
実施例13.CSAは、(i)ホスト内のHAがデータセットを追跡しない排他状態、又は(ii)CSA及びHAの両方がデータセットを追跡し、ホスト内のRAがデータセットのキャッシュされたコピーを有する共有状態のうちの1つにおいて、ローカルHAとして機能することができる、実施例8に記載の方法。
【0077】
実施例14.
CSAがローカルHAとして機能し始めた後に、データセットを修正するためのRAからの要求をHAにおいて受信することと、
CSAがもはやローカルHAとして機能しない無効化状態に遷移するための要求をHAからCSAに送信することであって、データセットの所有権は、HAに戻される、送信することと、を更に含む、実施例8に記載の方法。
【0078】
実施例15.ホストに通信可能に結合されるように構成されたI/Oデバイスであって、デバイスは、
アクセラレータ機能と、
アクセラレータ機能及びホスト内のHAに通信可能に結合されたCSAであって、CSA及びHAは、同じコヒーレントドメインの一部である、CSAと、を備え、
CSAは、CSAがデータセットのためのローカルHAとして機能するように、HAにデータセットの所有権を要求するように構成され、
アクセラレータ機能は、CSAがローカルHAとして機能するときにデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、I/Oデバイス。
【0079】
実施例16.CSAがHAにデータセットの所有権を要求する前に、アクセラレータ機能は、データセットの読み出し又は修正のうちの少なくとも15つを行うための要求をCSAに送信するように構成され、アクセラレータ機能からの要求は、CSAがデータセットをキャッシュラインレベルで追跡するかデータブロックレベルで追跡するかを示す、実施例15に記載のI/Oデバイス。
【0080】
実施例17.HAは、CSAからの要求に応答して、ホスト内のRAへのスヌープを実行してホストからのデータセットのキャッシュされたコピーをフラッシュするように構成されている、実施例16に記載のI/Oデバイス。
【0081】
実施例18.HAは、スヌープが完了したという指示を受信した後に、プッシュCMOをCSAに送信するように構成され、プッシュCMOは、バッファ又は最終レベルキャッシュにスタックされたデータセットの任意のキャッシュされたコピーをCSA内のスレーブエージェントに移動させる、実施例17に記載のI/Oデバイス。
【0082】
実施例19.スレーブエージェントがプッシュCMOを受信したと判定した後、CSAは、データセットのためのローカルHAとして機能するように遷移する、実施例18に記載のI/Oデバイス。
【0083】
実施例20.CSAは、(i)ホスト内のHAがデータセットを追跡しない排他状態、又は(ii)CSA及びHAの両方がデータセットを追跡し、ホスト内のRAがデータセットのキャッシュされたコピーを有する共有状態のうちの1つにおいて、ローカルHAとして機能することができる、実施例15に記載のI/Oデバイス。
【0084】
上記は特定の例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】