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

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

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

特許7568657ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク
<>
  • 特許-ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク 図1
  • 特許-ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク 図2
  • 特許-ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク 図3
  • 特許-ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク 図4
  • 特許-ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】ハイブリッドなハードウェア-ソフトウェアコヒーレントフレームワーク
(51)【国際特許分類】
   G06F 12/0815 20160101AFI20241008BHJP
   G06F 12/0808 20160101ALI20241008BHJP
【FI】
G06F12/0815
G06F12/0808
【請求項の数】 15
(21)【出願番号】P 2021570287
(86)(22)【出願日】2020-05-08
(65)【公表番号】
(43)【公表日】2022-08-01
(86)【国際出願番号】 US2020032198
(87)【国際公開番号】W WO2020242748
(87)【国際公開日】2020-12-03
【審査請求日】2023-04-20
(31)【優先権主張番号】16/425,841
(32)【優先日】2019-05-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ミッタル,ミリンド
(72)【発明者】
【氏名】ダスティダール,ジャディブ
【審査官】北村 学
(56)【参考文献】
【文献】国際公開第2010/038301(WO,A1)
【文献】国際公開第2017/209883(WO,A1)
【文献】国際公開第2017/223346(WO,A1)
【文献】国際公開第2018/052671(WO,A1)
【文献】米国特許出願公開第2019/0042425(US,A1)
【文献】米国特許出願公開第2019/0102311(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
処理ユニットと、ホームエージェント(HA)と、アクセラレータアプリケーションとを含むホストと、
前記ホストに通信可能に結合されたアクセラレータデバイスであって、少なくとも1つのアクセラレータ機能を実行するように構成された要求エージェント(RA)と、スレーブエージェント(SA)と、ローカルメモリとを備え、前記ローカルメモリは前記ホスト内の前記処理ユニットと同じコヒーレントドメインの一部である、アクセラレータデバイスと、を備え、
前記アクセラレータアプリケーションは、データセットの所有権を前記HAから前記アクセラレータデバイスに移転させるように構成され、
前記アクセラレータデバイスは、
前記データセットの最新のコピーを前記ローカルメモリに記憶し、
前記SAを使用して前記RAからのメモリ要求を処理し、
前記データセットの所有権を前記HAに戻すように構成されている、コンピューティングシステム。
【請求項2】
前記アクセラレータアプリケーションは、前記データセットを識別するように構成され、前記データセットは、メモリブロックまたはメモリページのサブ部分である、請求項1に記載のコンピューティングシステム。
【請求項3】
前記データセットの所有権を前記HAから前記アクセラレータデバイスに移転させた後、前記メモリブロックまたは前記メモリページの残りの部分は、前記HAによって引き続きホームされる、請求項2に記載のコンピューティングシステム。
【請求項4】
前記SAを使用した前記RAからの前記メモリ要求の処理は、前記HAから許可を受け取ることなく実行される、請求項1に記載のコンピューティングシステム。
【請求項5】
前記処理ユニットはキャッシュを備え、前記キャッシュは前記データセットの変更バージョンを記憶する、請求項1に記載のコンピューティングシステム。
【請求項6】
前記アクセラレータデバイスは、
前記データセットの所有権が前記アクセラレータデバイスに移転された後に、前記データセットの前記変更バージョンが前記ローカルメモリに移動されるように前記キャッシュをフラッシュするように前記処理ユニットに命令するフラッシュコマンドを前記HAに送信するようにさらに構成さいる、請求項5に記載のコンピューティングシステム。
【請求項7】
前記処理ユニットは、前記フラッシュコマンドに応答して、
前記キャッシュ内の前記データセットの前記変更バージョンを無効化する、および
将来の低レイテンシ再参照のために前記データセットの前記変更バージョンのキャッシュされたクリーンコピーを保持する、のいずれかを行うように構成されている、請求項6に記載のコンピューティングシステム。
【請求項8】
前記アクセラレータアプリケーションは、
前記データセットの所有権が前記アクセラレータデバイスに移転される前に、前記データセットの前記変更バージョンが前記ローカルメモリに移動されるように前記キャッシュをフラッシュするように前記処理ユニットに命令するフラッシュコマンドを前記HAに送信するように構成されている、請求項5に記載のコンピューティングシステム。
【請求項9】
前記アクセラレータアプリケーションは、
前記データセットの所有権が前記アクセラレータデバイスに移転される前に、前記キャッシュを無効化するように前記処理ユニットに命令する無効化コマンドを前記HAに送信するように構成されている、請求項8に記載のコンピューティングシステム。
【請求項10】
アクセラレータデバイスであって、
少なくとも1つのアクセラレータ機能を実行するように構成された計算エンジンを備える要求エージェント(RA)と、
メモリコントローラを備えるスレーブエージェント(SA)と、
メモリと、を備え、
前記RAは、前記アクセラレータデバイスに結合されたホスト内のホームエージェント(HA)から前記SAへのデータセットの所有権を受け取るように構成され、前記所有権はソフトウェアアプリケーションによって移転され、
前記メモリコントローラは、前記SAに所有権が移転されると、前記計算エンジンによって送信された、前記メモリに記憶された前記データセットにアクセスする要求を処理するように構成され、
前記RAは、前記SAから前記HAに所有権を戻すように構成されている、アクセラレータデバイス。
【請求項11】
前記データセットは、メモリブロックまたはメモリページのサブ部分であり、前記データセットの所有権を前記HAから前記SAに移転させた後、前記メモリブロックまたは前記メモリページの残りの部分は前記HAによって引き続きホームされ、前記要求の処理は、前記HAから許可を受け取ることなく実行される、請求項10に記載のアクセラレータデバイス。
【請求項12】
前記アクセラレータデバイスは、前記ホストのコヒーレントドメインを拡張して前記アクセラレータデバイス内に前記メモリおよび前記SAを含めるために、コヒーレント相互接続プロトコルを使用して前記ホストと通信するように構成されている、請求項10に記載のアクセラレータデバイス。
【請求項13】
方法であって、
ホスト内のホームエージェント(HA)からアクセラレータデバイスにデータセットの所有権を移転させるステップであって、前記アクセラレータデバイスは前記ホストに通信可能に結合され、前記ホストのコヒーレントドメインは前記アクセラレータデバイスに拡張される、ステップと、
前記データセットを前記アクセラレータデバイス内のローカルメモリに移動させるステップと、
前記アクセラレータデバイス内のスレーブエージェント(SA)を使用して、前記アクセラレータデバイス内の要求エージェント(RA)からのメモリ要求を処理するステップと、
所有権を前記アクセラレータデバイスから前記HAに戻すステップと、を含む、方法。
【請求項14】
前記ホスト上で実行されているアクセラレータアプリケーションを使用してデータセットを識別するステップをさらに含み、
前記データセットはメモリブロックまたはメモリページのサブ部分であり、前記データセットの所有権を前記HAから前記アクセラレータデバイスに移転させた後、前記メモリブロックまたは前記メモリページの残りの部分は前記HAによって引き続きホームされる、請求項13に記載の方法。
【請求項15】
前記アクセラレータデバイスに所有権を移転させた後、前記アクセラレータデバイスによって発行されたキャッシュメンテナンス動作(CMO)に応答して、キャッシュ内の変更されたデータセットを無効化するステップをさらに含む、
請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示の例は、一般に、ホストとアクセラレータデバイスとの間でデータを転送するために協調ハードウェア-ソフトウェアコヒーレントフレームワークを使用するアクセラレータに関する。
【背景技術】
【0002】
背景技術
従来のI/Oモデルでは、ホストコンピューティングシステムは、周辺I/Oデバイスに固有のカスタムI/Oデバイスドライバを使用してアクセラレータタスクまたは機能を実行するときに、周辺I/Oデバイス(例えば、アクセラレータ)とインタフェースする。このモデルの欠点は、すべてのアクセラレータ-メモリ相互作用が、サーバホストと呼ばれることもあるメインCPU-メモリ複合体内のホームエージェントノードを通過しなければならないことである。このモデルは、ハードウェアによって実施されるコヒーレンシを使用するので、アクセラレータ-メモリのデータフットプリントがキャッシュラインよりも桁違いに大きい(MB、GB、またはTBの場合もある)かどうかにかかわらず、サーバホスト上のプロセッサ(プロデューサ)が最終的に、アクセラレータが計算を実行したデータフットプリントの一部にしかアクセスできない場合でも、すべてのアクセラレータ-メモリ相互作用は、ホームエージェントノードによって処理および追跡される。別の欠点は、アクセラレータによってアクセスおよびキャッシュされるすべてのメモリがリモートのサーバホスト取付メモリであることである。このモデルのさらなる欠点は、PCIe I/Oベースのアクセラレータがメモリをキャッシュできないことである。アクセラレーターメモリ相互作用は、サーバホスト取付メモリと、その手法のレイテンシ、帯域幅、およびプロトコルメッセージングオーバーヘッドの欠点においてのみ行われる。
【0003】
一方、ハードウェアキャッシュコヒーレント共有メモリマルチプロセッサパラダイムは、マルチプロセッサCPU上での実行タスクまたは機能におけるインタフェースの一般的な命令セットアーキテクチャ(ISA)非依存モデルを活用する。インタフェースの一般的なISA非依存(例えば、Cコード)モデルは、処理ユニットの数と、それらの処理ユニットに利用可能な共有メモリの量との両方を調整する。従来、周辺I/Oデバイスは、ホストコンピューティングシステム上で実行するCPUによって使用されるコヒーレントパラダイムから利益を得ることができなかった。
【発明の概要】
【課題を解決するための手段】
【0004】
発明の概要
データセットの所有権をアクセラレータデバイスに移転させるための技術が記載される。一例は、処理ユニット、ホームエージェント(HA)、およびアクセラレータアプリケーションを備えるホストと、ホストに通信可能に結合されたアクセラレータデバイスとを含むコンピューティングシステムであり、アクセラレータデバイスは、少なくとも1つのアクセラレータ機能を実行するように構成された要求エージェント(RA)と、スレーブエージェント(SA)と、ローカルメモリを備え、ローカルメモリは、ホスト内の処理ユニットと同じコヒーレントドメインの一部である。アクセラレータアプリケーションは、データセットの所有権をHAからアクセラレータデバイスに移転させるように構成され、アクセラレータデバイスは、データセットの最新のコピーをローカルメモリに記憶し、SAを使用してRAからのメモリ要求を処理し、データセットの所有権をHAに戻すように構成される。
【0005】
いくつかの実施形態では、アクセラレータアプリケーションは、データセットを識別するように構成され、データセットは、メモリブロックまたはメモリページのサブ部分である。
【0006】
いくつかの実施形態では、データセットの所有権をHAからアクセラレータデバイスに移転させた後、メモリブロックまたはメモリページの残りの部分は、HAによって引き続きホームされる。
【0007】
いくつかの実施形態では、SAを使用したRAからのメモリ要求の処理は、HAから許可を受け取ることなく実行される。
【0008】
いくつかの実施形態では、処理ユニットはキャッシュを備え、キャッシュはデータセットの変更バージョンを記憶する。
【0009】
いくつかの実施形態では、アクセラレータデバイスは、データセットの所有権がアクセラレータデバイスに移転された後に、データセットの変更バージョンがローカルメモリに移動されるようにキャッシュをフラッシュするように処理ユニットに命令するフラッシュコマンドをHAに送信するように構成される。
【0010】
いくつかの実施形態では、処理ユニットは、フラッシュコマンドに応答して、キャッシュ内のデータセットの変更バージョンを無効化するか、または将来の低レイテンシ再参照のためにデータセットの変更バージョンのキャッシュされたクリーンコピーを保持するように構成される。
【0011】
いくつかの実施形態では、アクセラレータアプリケーションは、データセットの所有権がアクセラレータデバイスに移転される前に、データセットの変更バージョンがローカルメモリに移動されるようにキャッシュをフラッシュするように処理ユニットに命令するフラッシュコマンドをHAに送信するように構成される。
【0012】
いくつかの実施形態では、アクセラレータアプリケーションは、データセットの所有権がアクセラレータデバイスに移転される前に、キャッシュを無効化するように処理ユニットに命令する無効化コマンドをHAに送信するように構成される。
【0013】
本明細書に記載の一例は、少なくとも1つのアクセラレータ機能を実行するように構成された計算エンジンを備えるRAと、メモリコントローラを備えるSAと、メモリとを含むアクセラレータデバイスである。RAは、アクセラレータデバイスに結合されたホスト内のHAからSAへのデータセットの所有権を受け取るように構成され、所有権はソフトウェアアプリケーションによって移転される。メモリコントローラは、所有権がSAに移転されると、計算エンジンによって送信された、メモリに記憶されたデータセットにアクセスする要求を処理するように構成される。RAは、所有権をSAからHAに戻すように構成される。
【0014】
いくつかの実施形態では、データセットはメモリブロックまたはメモリページのサブ部分であり、データセットの所有権をHAからSAに移転させた後、メモリブロックまたはメモリページの残りの部分はHAによって引き続きホームされ、要求の処理はHAから許可を受け取ることなく実行される。
【0015】
いくつかの実施形態では、アクセラレータデバイスは、ホストのコヒーレントドメインを拡張してアクセラレータデバイス内にメモリおよびSAを含めるために、コヒーレント相互接続プロトコルを使用してホストと通信するように構成される。
【0016】
本明細書で説明する一例は方法であって、方法は、ホスト内のHAからアクセラレータデバイスにデータセットの所有権を移転させるステップであって、アクセラレータデバイスはホストに通信可能に結合され、ホストのコヒーレントドメインはアクセラレータデバイスに拡張される、ステップと、データセットをアクセラレータデバイス内のローカルメモリに移動させるステップと、アクセラレータデバイス内のSAを使用して、アクセラレータデバイス内のRAからのメモリ要求を処理するステップと、所有権をアクセラレータデバイスからHAに戻すステップと、を含む。
【0017】
いくつかの実施形態では、方法は、ホスト上で実行されているアクセラレータアプリケーションを使用してデータセットを識別するステップを含み、データセットはメモリブロックまたはメモリページのサブ部分であり、データセットの所有権をHAからアクセラレータデバイスに移転させた後、メモリブロックまたはメモリページの残りの部分はHAによって引き続きホームされる。
【0018】
いくつかの実施形態では、方法は、アクセラレータデバイスに所有権を移転させた後、アクセラレータデバイスによって発行されたキャッシュメンテナンス動作(CMO)に応答して、キャッシュ内の変更されたデータセットを無効化するステップを含む。
【0019】
図面の簡単な説明
上記の特徴が詳細に理解され得るように、上記で簡潔に要約したものより具体的な説明は、例示的な実装を参照することによって得ることができ、そのいくつかは添付の図面に示されている。しかしながら、添付の図面は、典型的な例示的な実装のみを示しており、したがってその範囲を限定するものと見なされるべきではないことに留意されたい。
【図面の簡単な説明】
【0020】
図1】一例による、アクセラレータデバイスに結合されたホストのブロック図である。
図2】一例による、アクセラレータデバイスに結合されたホストのブロック図である。
図3】一例による、協調ハードウェア-ソフトウェアコヒーレントフレームワークを使用するためのフローチャートである。
図4】一例による、協調ハードウェア-ソフトウェアコヒーレントフレームワークを使用するためのフローチャートである。
図5】一例によるプログラマブルICのフィールドプログラマブルゲートアレイ実装を示す。
【発明を実施するための形態】
【0021】
発明を実施するための形態
様々な特徴を、図面を参照して以下に説明する。図面は縮尺通りに描かれていてもいなくてもよく、同様の構造または機能の要素は図面全体を通して同様の参照番号で表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、説明の網羅的な説明として、または特許請求の範囲に対する限定として意図されていない。さらに、図示された例は、示されたすべての態様または利点を有する必要はない。特定の例に関連して説明される態様または利点は、必ずしもその例に限定されず、そのように示されていなくても、またはそのように明示的に説明されていなくても、任意の他の例で実施することができる。
【0022】
本明細書の例は、ホストコンピューティングデバイス内のハードウェア要素と同じコヒーレントドメインを共有するアクセラレータデバイス(例えば、周辺I/Oデバイスまたはアクセラレータ取付メモリ)を説明する。結果として、アクセラレータデバイスのコヒーレントドメイン内の計算リソースは、ホスト内のCPU間通信と同様の方法でホストと通信することができる。これは、計算リソースが、(アドレス変換なしの)直接通信、より効率的なメモリ使用、非均一メモリアクセス(NUMA)認識などのコヒーレンシ型機能を利用できることを意味する。コヒーレントメモリは、ホームエージェントノードがキャッシュラインレベルでメモリを管理するきめ細かいメモリ管理に依存する。
【0023】
しかしながら、典型的にはアクセラレータタスクは大容量のメモリを処理し、これは、ホスト内のホームエージェントがアクセラレータデバイスによって処理されるデータを管理するハードウェアコヒーレンシではなくソフトウェアコヒーレンシを使用してより良好に管理され得る。例えば、ハードウェアコヒーレンシモデルの欠点は、すべてのアクセラレータ-メモリ相互作用が依然として最初にサーバホストを通過することである。このモデルは、アクセラレータ-メモリのデータフットプリントがキャッシュラインよりも桁違いに大きい(MB、GB、またはTBの場合もある)かどうかにかかわらず、ハードウェアによって実施されるコヒーレンシを使用し、メモリがアクセラレータに取り付けられているかどうかにかかわらず、アクセラレータが計算を実行したデータフットプリントの一部にしかプロセッサ(プロデューサ)が最終的にアクセスできない場合でも、すべてのアクセラレータ-メモリ相互作用は、依然としてホストによって最初に処理および追跡される。対照的に、ソフトウェアコヒーレンシは、従来のホスト-I/Oモデルと同様に、アクセラレータデバイスがそのメモリに記憶されたデータを管理する場所であり、ホストは大容量データをI/Oデバイスに転送し、デバイスはデータを処理し、I/Oデバイスは、処理されたデータの準備ができるとホストに通知する。その間、ソフトウェアコヒーレンシモデルは、I/Oアクセラレータが処理したデータが準備されるまでホストがデータにアクセスしないことを保証する。
【0024】
本明細書の実施形態は、ハイブリッドなハードウェア-ソフトウェアフレームワークを作成するためのハードウェアとソフトウェアのコヒーレンシの混合を説明し、これは、ホストとアクセラレータが同じコヒーレントドメインにあるときに、大容量データがホストからアクセラレータデバイスに移動される際にデータを管理するオーバーヘッドを低減する。一実施形態では、ホスト上で実行されているアクセラレータアプリケーションは、処理のためにアクセラレータデバイスに転送したいデータセットを識別する。アクセラレータアプリケーションは、データに関するメタデータを変更することによって、またはアクセラレータデバイスによってアクセスされる制御データ構造を変更することによって、ソフトウェアコヒーレント方法を介してアクセラレータデバイスに通知する。これに応答して、アクセラレータデバイスは、ハードウェアコヒーレント技術を使用してホストに要求を送信し、データセットの最新バージョンと、データセットのキャッシュコピーがホストに残っていないことを要求する。次いで、ホストは、ハードウェアコヒーレント技術を使用して、データの最新バージョンがアクセラレータデバイス内のメモリに記憶されることを保証し、CPUキャッシュ内のデータセットのすべてのコピーを無効化する。アクセラレータデバイス内の要求エージェントは、アクセラレータアプリケーションに従って、スレーブエージェントを介してローカルメモリ内のデータセットの処理を開始する。一実施形態では、要求エージェントは、ローカルメモリのサブセットをキャッシュし、キャッシュコピーを処理することができる。ソフトウェアコヒーレンシは、アクセラレータデバイス内の要求エージェントから受信した任意のメモリ動作要求が、スレーブエージェントがホストから許可を得ることなく、スレーブエージェントを介してローカルメモリ内のデータセットにアクセスできることを保証している。例えば、スレーブエージェントは、データセットの最新バージョンがあるかどうか、またはアクセラレータデバイスによって処理されるデータのキャッシュコピーが残っているかどうかをホームエージェントで確認する必要はない。アクセラレータデバイスがデータセットの処理を完了すると、アクセラレータデバイスは、キャッシュされたサブセットをフラッシュし、ローカルメモリを更新し、ソフトウェアコヒーレント方法を介して、例えば、アクセラレータデバイスが、ホストプロセッサによってアクセスされるメタデータまたは制御データ構造を変更することによって、ホスト内のホームエージェントに所有権を戻す。これは、アクセラレータデバイスがホストとは異なるドメインにある従来のホストI/Oモデルにおいてタスクが完了したときと同様に、データセットとシステムの残りの部分とのハードウェアコヒーレンシのエンフォーサとしてホストを再確立する。したがって、アクセラレータデバイスおよびホストは、同じコヒーレンシドメインにあること、およびハードウェアコヒーレンシ実施に依存することによって、ソフトウェア方法を介して、大容量データの所有権をアクセラレータデバイス内のローカルメモリに移転させる際に発生する高いオーバーヘッドを回避する。アクセラレータデバイスおよびホストは、同じコヒーレンシドメインにあることによって、アクセラレータデバイス内のローカルメモリから処理されたデータをホストに戻す際の高いオーバーヘッドを回避することもできる。
【0025】
図1は、一例による、アクセラレータデバイス140に結合されたホスト105を含むコンピューティングシステム100のブロック図である。アクセラレータデバイス140は、ホスト105によって発行されたタスクを実行する任意のデバイス(例えば、周辺I/Oデバイス)とすることができる。一実施形態では、ホスト105は、PCIe接続を使用してアクセラレータデバイス140に通信可能に結合される。別の実施形態では、アクセラレータデバイス140は、別個のI/Oデバイスではなく、ホスト取付メモリの一部である。ホスト105は、単一のコンピュータ(例えば、サーバ)または相互接続された複数の物理コンピューティングシステムを表すことができる。いずれの場合も、ホスト105は、複数のCPU110と、メモリ115と、ホームエージェント135とを備える。
【0026】
メモリ115は、本明細書に記載の機能を実行することができる任意のOSとすることができるオペレーティングシステム(OS)120を含む。一実施形態では、OS120(またはハイパーバイザまたはカーネル)は、CPU110およびメモリ115のためのキャッシュコヒーレント共有メモリマルチプロセッサパラダイムを確立する。一実施形態では、CPU110およびメモリ115は、キャッシュコヒーレント共有メモリマルチプロセッサパラダイムに従うコヒーレントドメインを形成するようにOS管理(またはカーネル/ハイパーバイザ管理)される。
【0027】
本明細書の実施形態では、共有メモリマルチプロセッサパラダイムは、そのパラダイムのすべての性能上の利点、ソフトウェアの柔軟性、および低減されたオーバーヘッドと共に、アクセラレータデバイス140に利用可能である。さらに、アクセラレータデバイス140内の計算リソースをCPU110およびメモリ115と同じコヒーレントドメインに追加することにより、汎用のISA非依存の開発環境が可能になる。
【0028】
一実施形態では、アクセラレータデバイス140およびホスト105は、コヒーレント相互接続プロトコルを使用して、ホスト105のコヒーレントドメインをアクセラレータデバイス140に拡張する。例えば、アクセラレータデバイス140は、デバイス140内のコヒーレントドメインを拡張するために、アクセラレータのためのキャッシュコヒーレント相互接続(CCIX)を使用することができる。CCIXは、ヘテロジニアスシステムアーキテクチャのためのキャッシュコヒーレントフレームワークを提供する高性能チップ間相互接続アーキテクチャである。CCIXは、カーネル管理セマンティクスをアクセラレータデバイス140にもたらす。キャッシュコヒーレンシは、ホスト105上のCPU110と、任意の数の周辺I/Oデバイス上に配置され得るシステム内の他の様々なアクセラレータとの間で自動的に維持される。
【0029】
しかしながら、ホスト105内のコヒーレントドメインを拡張してアクセラレータデバイス140内の計算リソースを含むために、Quick Path Interconnect(QPI)、Omni-Path、Infinity Fabric、NVLink、またはOpenCAPIなどのCCIX以外の他のコヒーレント相互接続プロトコルが使用されてもよい。すなわち、アクセラレータデバイス140は、アクセラレータデバイス140内の計算リソースを含むコヒーレントドメインの形成を容易にする任意のタイプのコヒーレント相互接続プロトコルをサポートするようにカスタマイズすることができる。
【0030】
一実施形態では、HA135は、システム100内のメモリ、すなわちホスト105内のメモリ115とアクセラレータデバイス140内のメモリ160の両方に対してコヒーレンシ動作を実行する。コヒーレントシステムでは、メモリアドレス範囲は指定されたHAによってホームされ、これは、ホスト105内のCPU110およびアクセラレータデバイス140内の要求エージェント145によってアクセスされるキャッシュラインに対する迅速なコヒーレンシ解決の利点を提供する。HA135は、異なる場所(またはキャッシュ)に同時に記憶することができるデータの最新バージョンが、そのデータの読み取りまたは変更の要求が受信されたときに取得されることを保証する。これらの要求は、CPU110または取り付けられたアクセラレータデバイス140内の要求エージェント(例えば、要求エージェント145)から発することができる。1つのHA135が示されているが、コンピューティングシステム100は任意の数のHAを有することができ、各HAは異なるメモリアドレス範囲としてホームに役立つ。
【0031】
アクセラレータデバイス140は、(ホスト105の拡張スロットにプラグインされる)プラガブルカード、システムオンチップ(SoC)、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)などの多くの異なるタイプの周辺デバイスとすることができる。例えば、アクセラレータデバイス140は、プログラマブル論理(例えば、プログラマブル論理アレイ)を含むことができ、またはプログラマブル論理を含まなくてもよいが、代わりにハード化回路(ソフトウェアプログラム可能であってもよい)のみを含むことができる。
【0032】
アクセラレータデバイス140は、要求エージェント(RA)145と、スレーブエージェント(SA)155と、メモリ160(ローカルメモリともいう)とを備える。一実施形態では、RA145は、特別な計算を実行するように最適化された計算エンジンである。一実施形態では、RA145は、ハードウェア、ファームウェア、またはそれらの組み合わせである。例えば、RA145は、プログラマブル論理に実装された1つまたは複数の計算エンジンであってもよい。別の例では、RA145は、ハード化回路(例えば、GPUまたは他のASICのコア)から形成された計算エンジンであってもよい。いずれの場合も、RA145は、アクセラレータデバイスに対するアクセラレータ機能150を実行する。これらの機能150は、機械学習アクセラレータ、暗号化アクセラレータ、グラフィックアクセラレータ、検索アクセラレータ、展開/圧縮アクセラレータなどの一部とすることができる。一実施形態では、アクセラレータ機能150は、アクセラレータデバイス140内のプログラマブル論理(例えば、プログラマブル論理アレイ)に実装される。別の実施形態では、アクセラレータ機能150は、処理コアまたはエンジンなどの硬化論理(ソフトウェア構成可能であってもよい)に実装される。
【0033】
一般に、RA145内の計算エンジン(複数可)は、これらの同じ機能がホスト105内のCPU110のうちの1つまたは複数を使用して実行された場合よりも速く、またはより効率的にアクセラレータ機能150を実行する。1つのアクセラレータ機能150が示され、1つのアクセラレータアプリケーション125が示されているが、コンピューティングシステム100は任意の数のアクセラレータ機能を有することができ、各アクセラレータ機能はメモリ内の異なるデータセットを処理している。
【0034】
一実施形態では、SA155は、メモリ160からのデータの読み出しまたはメモリ160へのデータの書き込み要求を処理するメモリコントローラ(ハードウェア回路とすることができる)である。RA145は、データメモリ動作がRA145からメモリ160へ実行される場合、コヒーレンシが維持されることを保証する。例えば、RA145がメモリ160からデータを読み出したい場合、RA145は、データの最新バージョンがシステム100の他の場所で利用可能であるかどうかを判定するために、最初に要求をHA135へ送信してもよい。さらに、メモリ160は、アクセラレータデバイス140内に示されているが、別の実施形態では、メモリ160は、アクセラレータデバイス140を形成する集積回路とは別個のチップ(例えば、取付メモリ)上にあってもよい。
【0035】
以下でより詳細に説明するように、SA155は、システム100の現在の段階または構成に応じて異なる機能を有する。1つの段階では、HA135は、メモリ160に記憶されたデータの唯一のエージェントであり、SA155は、コヒーレントシステムにおける典型的なメモリコントローラのように機能する。しかしながら、別の段階では、ソフトウェアコヒーレンシは、ローカルメモリ160に記憶されたデータの所有権をSA155に与えており、RA145は、メモリ160に記憶されたデータを処理するときにHA135に許可を求める必要はない。例えば、RA145が、アクセラレータ機能150を実行するためにメモリ160からデータを読み出したい場合、第2の段階において、SA155は、RA145が最初にHA135をチェックして、システム100の他の場所(例えば、メモリ115、またはCPU110のうちの1つのチップ内キャッシュに記憶される)にそのデータの最新バージョンがあるかどうかを確かめることなく、そのデータを提供することができる。
【0036】
RA145は、メモリ160とは別個のものとして示されているが、一実施形態では、RA145は、メモリ160内に組み込まれ、メモリ内計算を実行する計算エンジンであってもよい。その場合、図1に示すように物理的に別個のRA145およびSA155を有するアクセラレータデバイス140ではなく、アクセラレータの位置は、論理的に別個であり、メモリ内計算を実行するRA145およびSA155と共にメモリ内であり得る。
【0037】
図2は、一例による、アクセラレータデバイス140に結合されたホスト105のブロック図である。従来のI/Oモデルとは異なり、メモリ160およびアクセラレータデバイス140内の処理要素(例えば、RA145およびSA155)は、ホスト105内のCPU110およびメモリと同じコヒーレントドメイン内にある。このように、ホスト105内のHA135は、ホスト105およびアクセラレータデバイス140に記憶されたデータがコヒーレントに記憶されることを保証し、その結果、データがホスト105またはアクセラレータデバイス140内のメモリに記憶されているかにかかわらず、メモリ動作の要求は、それがホスト105またはアクセラレータデバイス140のどちらに由来するかにかかわらず、データの最新バージョンを受信する。
【0038】
いくつかのアプリケーションでは、データを処理する際のボトルネックは、そのデータを処理するのにかかる時間ではなく、データをそのデータを処理する計算ユニットに移動させることから生じる。言い換えれば、プロセッサまたは計算エンジンがボトルネックである代わりに、プロセッサまたは計算エンジンとの間でデータを移動させることが、動作を実行することができる速度を制限する。この状況は、アクセラレータが特定のタイプの機能を非常に高速に実行することができる特殊な計算エンジン(例えば、アクセラレータエンジン)を有するため、アクセラレータが使用されるときにしばしば発生する。多くの場合、アクセラレータを使用する効率を制限するのは、計算エンジンではなく、処理のためにデータをアクセラレータに移動させるシステムの能力である。データを計算エンジンに移動させることがタスクを完了するのに必要な時間を制限する状況は、計算メモリボトルネックと呼ばれる。計算エンジンをデータの近くに移動させることは、この問題を軽減するのに役立ち得る。
【0039】
第1の実施形態では、ホスト105からアクセラレータデバイス140に大容量データが移動される従来のI/Oデータ共有モデルを使用することができる。しかしながら、ホスト105およびアクセラレータデバイス140は、もはや同じコヒーレンシドメインにはない。結果として、I/Oベースのアクセラレータデバイスはメモリをキャッシュすることができず、これにより、処理すべきデータから計算エンジン(例えば、RA145)をさらに分離する。ハードウェアコヒーレンシを使用する代わりに、ソフトウェアコヒーレンシが使用され、ここではソフトウェアアプリケーション(例えば、アクセラレータアプリケーション125)が、管理したいデータのHA135と確立し、アクセラレータデバイス140に移転させる(例えば、データセット130)。アクセラレータデバイス140がデータの処理を完了すると、アクセラレータアプリケーション125は、データの所有権を再び取得し、そのデータのハードウェアコヒーレンシをHA135と維持(または再確立)することができる。
【0040】
第2の実施形態では、ホスト105およびアクセラレータデバイス140は、同じコヒーレントドメインを共有することができ、その結果、データをアクセラレータデバイス140にキャッシュして、計算メモリボトルネックを軽減するのを助けることができる。例えば、メモリは、(例えば、ホスト接続メモリ)ホスト105に取付られ、データは、RA145内のキャッシュ内に記憶されうる。しかしながら、このモデルの欠点は、すべてのアクセラレータ-メモリ相互作用が、ホスト105内のメインCPU-メモリ複合体内のHA135を通過することである。この実施形態はまた、ハードウェアによって実施されるコヒーレンシを使用するので、アクセラレータ-メモリのデータフットプリントがキャッシュラインよりも桁違いに大きい(MB、GB、またはTBの場合もある)かどうかにかかわらず、CPU110(プロデューサ)が最終的に、アクセラレータデバイス140が計算を実行したデータフットプリントの一部にしかアクセスできない場合でも、すべてのアクセラレータ-メモリ相互作用は、HA135によって処理および追跡される。言い換えれば、HA135は、たとえCPU110Aがそのデータのほんの一部にしかアクセスできない場合であっても、RA145内のキャッシュに送信されたすべてのデータを追跡しなければならない。別の欠点は、アクセラレータデバイス140によってアクセスおよびキャッシュされるすべてのメモリがリモートのホスト取付メモリであることである。
【0041】
第3の実施形態では、アクセラレータデバイス140によって処理されたデータを記憶するメモリは、アクセラレータデバイス140に取り付けられている(またはその中にある)が(例えば、メモリ160)、ホスト105内のHA135によってホームされる。この実施形態では、すべてのアクセラレータ-メモリ相互作用が依然としてホスト105内のHA135を通過するという点で、第2の実施形態の欠点も当てはまる。しかしながら、前の実施形態とは異なり、キャッシュラインの所有権がアクセラレータデバイス140によって取得されると、データセット130への更新は、メモリ160に対してローカルに行うことができる。この実施形態はまた、ハードウェア強化型コヒーレンシを使用するので、アクセラレータ-メモリのデータフットプリントがキャッシュラインよりも桁違いに大きい(MB、GB、またはTBの場合もある)かどうかにかかわらず、およびメモリがアクセラレータに取り付けられているかどうかにかかわらず、CPU110Aが最終的にアクセラレータデバイス140によって処理されたデータセット130の一部にしかアクセスできない場合でも、すべてのアクセラレータ-メモリ相互作用が依然としてHA135によって最初に処理および追跡されるという点で、第2の実施形態の他の欠点も当てはまる。
【0042】
上記の3つの実施形態ではなく、上記の第1、第2、および第3の実施形態の利点がそれらの欠点を回避しながらシステムに組み込まれる協調フレームワークを使用することができる。上記の利点に加えて、協調フレームワークはさらなる利点を有する。一実施形態では、メモリはホスト105内のHA135によって引き続きホームされ、ホスト105内のCPU110によってアクセスされるキャッシュラインに迅速なコヒーレンシ解決の利点を提供し続ける。また、第1の実施形態のように、メモリへのすべてのアクセラレータアクセスが粗いレベルでソフトウェアコヒーレンシによって追跡されること、または、第2および第3の実施形態のように、メモリへのすべてのアクセラレータアクセスがきめ細かい追跡を有することを要求するのとは対照的に、協調フレームワークでは、アクセラレータ-メモリ相互作用のきめ細かいサブセットのみが、所有権を主張するために最初にHA135を通過する。
【0043】
協調フレームワークの別の利点に関して、すべてのメモリページまたはメモリブロック全体がCPUキャッシュ(例えば、キャッシュ210)からフラッシュされ得るソフトウェアコヒーレンシとは異なり、HA135に進むアクセラレータ-メモリ相互作用のサブセットについては、ホストCPU110にキャッシュされている部分のみがCPUキャッシュ210からスヌープされる。CPUキャッシュ210の内容に触れないアクセラレータ-メモリ相互作用はキャッシュされ続け、そのデータへの低レイテンシのアクセスをCPU110(およびそれらのコア205)に提供することができる。
【0044】
協調フレームワークの別の利点として、アクセラレータ-メモリ相互作用がホスト取付メモリとの間でのみ行われる第2および第3の実施形態、ならびにその手法のレイテンシ、帯域幅、およびプロトコルメッセージングオーバーヘッドの欠点とは異なり、協調フレームワークでは、アクセラレータ-メモリ相互作用はアクセラレータ取付メモリ160上で行われる可能性があり、アクセラレータの位置は、低レイテンシ、高帯域幅の専用経路を提供し、かつRA145とSA155との間の後続のプライベートアクセラレータ-メモリ相互作用によるプロトコルメッセージングオーバーヘッドも最小化する、近メモリまたはメモリ内である。
【0045】
協調フレームワークの別の利点として、アクセラレータの位置が近メモリまたはメモリ内である第3の実施形態とは異なり、メモリとの相互作用は、ホームノードの所有権を必要とする。協調フレームワークでは、アクセラレータデバイス140が、計算が実行されるデータセット130の所有権を主張すると、所有権がHA135に戻されるまで、HA135との相互作用なしにすべての後続の計算メモリ動作が行われる。
【0046】
以下の実施形態は、協調フレームワークを使用して上記の利点を達成するための異なる技術を説明する。しかしながら、協調フレームワークは、これらの利点に限定されない。フレームワークのいくつかの実装形態は、上に列挙されたものよりも利点が少ない場合があるが、他の実装形態は、列挙されていない異なる利点を有する場合がある。
【0047】
図3は、一例による、協調ハードウェア-ソフトウェアコヒーレントフレームワークを使用するための方法300のフローチャートである。ブロック305において、アクセラレータアプリケーションは、処理のためにアクセラレータに送信するデータセットを識別する。一実施形態では、アクセラレータアプリケーションは、アクセラレータデバイスから利益を得ることができるタスクを実行するソフトウェアアプリケーションである。例えば、アクセラレータアプリケーションは、アクセラレータデバイスが1つまたは複数の機械学習エンジンを含む機械学習アプリケーション、アクセラレータデバイスがグラフィック処理を実行するビデオアプリケーション、アクセラレータデバイスが特定の単語またはフレーズを検索する検索エンジン、またはアクセラレータデバイスがデータに対して暗号化/復号アルゴリズムを実行するセキュリティアプリケーションであってもよい。
【0048】
いずれの場合でも、アクセラレータデバイスは、ホストおよびアクセラレータデバイスが同じコヒーレンシドメインを共有している間に、ホスト上のHAからアクセラレータデバイス上のSAにデータの所有権を移転させることを可能にする協調フレームワークを認識することができる。したがって、アクセラレータデバイスは、協調フレームワークの一部としてのアクセラレータデバイスに送信したいデータセットを識別することができる。
【0049】
ブロック310において、アクセラレータアプリケーション(例えば、または何らかの他のソフトウェアアプリケーション)は、データセットの所有権をサーバホストからアクセラレータデバイスに移転させる。一実施形態では、アクセラレータアプリケーションは、アクセラレータデバイスによって監視されるメタデータまたはフラグを更新する。これを更新すると、データセットの所有権がHAからアクセラレータデバイス(例えば、アクセラレータデバイス内のRA)に移転される。この所有権の移転により、アクセラレータデバイス内のハードウェアは、ホスト内のHAを気にすることなくデータセット上で動作できることを知ることができる(現在アクセラレータデバイスがデータセットを所有しているため)。
【0050】
一実施形態では、アクセラレータアプリケーションは、計算メモリ動作が実行されるデータのサブセットのみの所有権を移転させる。すなわち、アクセラレータアプリケーションは、アクセラレータデバイスがそのアクセラレータ機能の一部として処理するデータのみを識別することができる。したがって、ホスト内のアクセラレータアプリケーションは、アクセラレータデバイスが処理するデータについてのみ所有権を移転させることができる。これは、(それらのページおよびメモリブロックのサブ部分であり得る)必要なデータセットだけでなく、すべてのページまたはメモリブロック全体がCPUキャッシュからフラッシュされる従来のI/Oモデルおよびソフトウェアコヒーレンシを超える利点である。
【0051】
ブロック315において、アクセラレータデバイス(またはより具体的には、RA)は、サーバホストからのデータセットの最新のコピーを要求することによって、データセットの所有権を行使する。そうすることにより、データセットがアクセラレータデバイス内のローカルメモリに移動される。一実施形態では、データセットは、ホストとアクセラレータデバイスとの間のハードウェアコヒーレンシの維持の一部として、アクセラレータデバイスのローカルメモリ内にあることが保証され得る。その場合、ブロック305で識別されたデータセットは、ブロック310でアクセラレータアプリケーションが所有権を移転させる前に、アクセラレータ内のローカルメモリに既に記憶されていてもよい。しかしながら、別の実施形態では、RA(またはアクセラレータデバイス)は、データセットがアクセラレータデバイス内のローカルメモリに移動されること、および/またはキャッシュコピーが残らないことを保証するために、フラッシュおよび/または無効化コマンドを使用することができる。アクセラレータデバイス内のローカルメモリがデータセットの最新バージョンを含むことを保証するための様々な技術は、図4で後により詳細に説明される。
【0052】
ブロック320において、RAは、SAを使用してメモリ要求を処理する。SAがアクセラレータデバイス内のメモリ要求を処理するとき、SAは、例えば、データの最新バージョンがシステム内の他の場所で利用可能であるかどうかを最初にHAでチェックすることなく、それらの要求を処理することができる。すなわち、データセットは、現在アクセラレータデバイスによってホームされている。
【0053】
一実施形態では、データセットがアクセラレータデバイスによってホームされている間、HAはデータセットに対するいかなる変更も追跡しない。これにより、最初にSAがHAからの許可を得る必要なく、RAがデータセットを読み出して変更することができるため、システムのオーバーヘッドが削減される。上述したように、HAはキャッシュラインごとにデータを追跡し、これは、メモリ動作を処理する前に、データセット内の各キャッシュラインがHAによってチェックされる必要があることを意味する。しかしながら、SAがデータセットをホームすると、この機能は、ホスト内のHAからの支援なしにSAによってのみ実行される。
【0054】
さらに、データセットがRAによって処理されている間、およびそれが完了したことをRAが示さない限り、ソフトウェアコヒーレンシは、ホスト内のCPUがデータセットを読み出すことしかできず、書き込むことができないことを保証する。ソフトウェアコヒーレンシはまた、CPUがまだ更新されていないデータを読み出そうとする場合、その読み出しを実行する際にCPUが「古い」値を読み取ることからいかなる意味も導出してはならないことを保証する。アクセラレータがソフトウェア/HAに所有権を戻した後にのみ、CPUは更新されたデータ内の値から意味を導出することができる。
【0055】
ブロック325において、RAは、データセットの処理が完了したかどうかを判定する。RAがデータセットに対してそのアクセラレータ機能の実行を完了していない場合、方法300は320を繰り返し、RAは、データセットの部分について追加のメモリ要求をSAに送信し続ける。しかしながら、RAがデータセットの処理を完了すると、方法300はブロック330に進み、RAはデータセットの所有権をHAに戻す。したがって、ブロック310で実行されるようにソフトウェアが所有権を移転させるのではなく、ブロック330において、アクセラレータデバイスがデータセットの処理を完了したことをアクセラレータアプリケーションに示すソフトウェアアクセス可能メタデータを設定するのは、アクセラレータデバイス内のハードウェアである。一実施形態では、RAは、RAがデータセットに対するアクセラレータ機能の実行を完了したときに、プロデューサ-コンシューマモデルがCPUに通知することを必要とする場合のために、メタデータを更新する。HAは、(変更された)データのハードウェアコヒーレンシが、ホスト取付メモリおよびCPU内のキャッシュなどのホスト内のエンティティと維持される(または再確立される)ことを保証することができる。言い換えれば、ソフトウェア(例えば、アクセラレータアプリケーション)は、HAを使用して暗黙的にデータセットの所有権を行使する。アクセラレータアプリケーションは、コヒーレンシエンフォーサとしてHAを認識しているだけである。
【0056】
一実施形態では、方法400に示すようにデータセットの所有権をHAからSAに移転させ、HAに戻すことは、ソフトウェアコヒーレンシの一種と考えることができるが、ターゲットデータセットが識別され、ホスト内のキャッシュ(例えば、CPUキャッシュ)のフラッシュ/無効化が不要であるため、従来のI/Oモデルで使用されるソフトウェアコヒーレンシとは異なる。
【0057】
図4は、一例による、協調ハードウェア-ソフトウェアコヒーレント方式を使用するための方法400のフローチャートである。一般に、方法400は、方法300で説明したように、HAがデータの所有権をSAに移転できるように、ホスト内の様々なメモリ要素からアクセラレータデバイス内のローカルメモリにデータを移動させるための様々な技術を説明する。
【0058】
ブロック405において、CPUはデータセットの少なくとも一部をキャッシュする。すなわち、アクセラレータアプリケーションがデータセットの所有権を移転させる前に、データセットの一部をCPU内のキャッシュに記憶することができる。ブロック410において、CPUは、そのキャッシュに記憶されたデータセットの一部を変更する。すなわち、方法300のブロック310においてアクセラレータアプリケーションが所有権を移転させる前に、データセットの一部は、ホスト内の様々なキャッシュおよびメモリに記憶されてもよい。様々なキャッシュに記憶されたデータセットは、ホスト内のメモリの複製コピーであるか、またはソフトウェア(例えば、アクセラレータアプリケーション)がHAを使用して暗黙的にデータセットの所有権を行使した結果としてのデータセットへの更新とすることができる。したがって、データセットの所有権をアクセラレータデバイス内のSAに移転させる前に、システムは、データセットの最新バージョンがアクセラレータ取付メモリ、すなわちローカルメモリに記憶されることを保証するための技術を必要とする。
【0059】
ブロック415において、方法400は、変更されたデータセットをアクセラレータデバイスに送信するためにソフトウェアが使用されるかハードウェアが使用されるかに応じて分かれる。すなわち、アクセラレータデバイスが最新のデータセットを有することを保証するためのタスクは、ソフトウェア(例えば、アクセラレータアプリケーション)またはアクセラレータデバイス内のハードウェア(例えば、RA)のいずれかによって実行することができる。
【0060】
ソフトウェアにこのタスクが割り当てられていると仮定すると、方法400はブロック420に進み、ホスト内のアクセラレータアプリケーションは、変更されたデータがアクセラレータデバイスに送信されることを保証する。一実施形態では、ブロック420は、アクセラレータデバイスがホスト内のHAからアクセラレータデバイスにデータセットの所有権を移転させる前(例えば、方法300のブロック310の前)に実行される。
【0061】
代替サブブロック425および430として示されている、サーバ内の変更されたデータをアクセラレータデバイスに移動させるための少なくとも2つの異なるオプションがある。ブロック425において、HAは、アクセラレータアプリケーションからフラッシュコマンドのみを受信する。一実施形態では、このフラッシュコマンドは、すべての変更データ(例えば、CPUキャッシュ内の変更されたデータ)が永続的(すなわち、不揮発性)メモリまたはアクセラレータデバイス内のターゲットメモリで更新されたことを保証するための永続的フラッシュまたはターゲットへのフラッシュである。フラッシュコマンドに応答して、HAは、変更されたデータがホスト内の様々なキャッシュからフラッシュされ、アクセラレータデバイス内のローカルメモリにコピーされることを保証する。
【0062】
ホスト内のCPUは、キャッシュを無効化するか、または将来の低レイテンシ再参照のためにデータセットに対応するコンテンツのキャッシュされたクリーンコピーを保持する。この例では、HAはアクセラレータアプリケーションから明示的な無効化コマンドを受信しなくてもよいが、CPUは、先に進んでそれらのキャッシュに記憶されたそれらのデータセットの一部を無効化することができる。別の例では、CPUは、データがアクセラレータデバイス内のSAによってホームされている間、データセットの独自のローカルコピー(変更することができる)を保持することができる。
【0063】
代替の実施形態では、ブロック430において、HAは、アクセラレータアプリケーションからフラッシュコマンドおよび無効化コマンドを受信する。これに応答して、ホスト内のCPUは、それらのキャッシュをフラッシュして無効化する。
【0064】
一実施形態では、ブロック425および430に記載されるフラッシュおよび無効化コマンドは、変更されたデータセット(例えば、最新のデータセット)がローカルメモリに記憶されることを自動的に保証するキャッシュメンテナンス動作(CMO)である。一実施形態では、アクセラレータアプリケーションが発行することができる2つのタイプのCMOがあり、1つは最新のデータセットがローカルメモリに記憶されていることを保証するが、CPUがキャッシュコピー(例えば、フラッシュコマンドのみ)を維持することを可能にするものであり、もう1つは最新のデータセットがローカルメモリに記憶されていることを保証するだけでなく、キャッシュコピーが残っていないことも保証するもの(例えば、フラッシュおよび無効化コマンド)である。
【0065】
ブロック415に戻って、ソフトウェアではなくアクセラレータデバイス内のハードウェアが、変更されたデータセットを確実に受信することを任されている場合、方法はブロック435に進み、ハードウェアは、(方法300のブロック310で説明したように)アクセラレータアプリケーションがデータセットの所有権をアクセラレータデバイスに移転させるまで待機する。所有権のこの移転が行われると、方法400はブロック435に進み、アクセラレータデバイス内のハードウェア(例えば、RA)は、変更されたデータがアクセラレータデバイスに送信されることを保証するために、1つまたは複数のCMOを発行する。ブロック420と同様に、代替サブブロック445および450として示されている、ホスト内の変更されたデータをアクセラレータデバイスに移動させるための少なくとも2つの異なるオプションがある。ブロック445において、HAは、RAからフラッシュコマンドのみを受信する。ホスト内のCPUによって行うことができる動作は、ブロック425で説明したものと同じであり得るので、ここでは繰り返さない。
【0066】
あるいは、ブロック450において、HAは、RAからフラッシュコマンドおよび無効化コマンドを受信する。これに応答して、ブロック430に記載されるように、ホスト内のCPUは、それらのキャッシュをフラッシュして無効化する。
【0067】
一実施形態では、HAは最終レベルのキャッシュを有することができる。所有権を移転させるとき、HAは、最新のデータセットが最終レベルのキャッシュに固定されず、代わりにアクセラレータデバイスのローカルメモリにコピーされることを保証することができる。最終レベルのキャッシュ内の最終状態は、CPUキャッシュの最終状態と同じであり、ブロック420またはブロック440のいずれかから生じるCPUキャッシュ内の動作と一致する。
【0068】
図3および図4に記載された技術のいくつかのさらなる非限定的な利点は、(データがアクセラレータ上のSAによってホームされていないときに)メモリがホスト内のHAによってホームされ続けている場合、CPUによるメモリへのすべてのキャッシュ動作およびコヒーレンシ動作がローカルHAによって迅速に解決され、したがって、協調フレームワークが並列に存在する場合でも、高性能なCPU-メモリアクセスを維持することである。さらに、協調フレームワークは、別個のまたは組み合わされたCMOおよび所有権要求をHAに行使するために、アクセラレータ-メモリ相互作用のサブセットのみの所有権を要求することができる。関連するサブセットについてのみ所有権を移転させることにより、アクセラレータは、従来のI/Oモデルにおける純粋なソフトウェアコヒーレンシモデルで必要とされるようなデータセット全体の所有権を主張する必要がないことによる性能上の利点を有する。
【0069】
さらなる利点は、アクセラレータ-メモリ相互作用と重複しないサブセットが、高性能なCPU-メモリアクセスを維持するローカルHAによって処理され続けるという性能上の利点も、CPU-メモリ相互作用が得ることができることである。さらに、一実施形態では、CPUとアクセラレータとの間で共有されるデータサブセットのみがCPUキャッシュからフラッシュされ、アクセラレータと共有されないコンテンツはCPUにキャッシュされ続け、そのデータへの低レイテンシアクセスをCPUに提供することができる。また、計算メモリドメイン固有アーキテクチャの実行におけるアクセラレータ-メモリ相互作用は、CPU-メモリ相互作用から独立した低レイテンシの高帯域幅専用経路上で行われる。協調フレームワークのソフトウェアコヒーレンシサブセットは、ホストとアクセラレータとの間のメタデータハンドオフが独立したCPU-メモリ実行およびアクセラレータ-メモリ実行を可能にし、したがってCPUおよびアクセラレータデバイス両方の全体的な断面帯域幅、レイテンシ、およびプログラム実行性能を改善することを保証することができる。
【0070】
さらに、上記の実施形態は、計算メモリボトルネックのためのハイブリッドなハードウェア-ソフトウェアコヒーレンシフレームワークを具体的に説明しているが、同様の技術を関連するCPUアクセラレータ共有メモリアプリケーションに適用することができる。
【0071】
図5は、アクセラレータデバイス140のFPGA500の実装を示し、より具体的にはFPGAは、トランシーバ37、CLB33、BRAM34、入力/出力ブロック(「IOB」)36、構成およびクロッキング論理(「CONFIG/CLOCKS」)42、DSPブロック35、専用入力/出力ブロック(「IO」)41(例えば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログ-デジタルコンバータ、システム監視論理などの他のプログラマブル論理39を含む多数の異なるプログラマブルタイルを含むPLアレイを有する。FPGAはまた、PCIeインタフェース40、アナログ-デジタルコンバータ(ADC)38などを含むことができる。
【0072】
いくつかのFPGAでは、各プログラマブルタイルは、図5の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素の入力および出力端子48への接続を有する少なくとも1つのプログラマブル相互接続要素(「INT」)43を含むことができる。各プログラマブル相互接続要素43はまた、同じタイルまたは他のタイル内の隣接するプログラマブル相互接続要素のセグメント49を相互接続するための接続を含むことができる。各プログラマブル相互接続要素43はまた、論理ブロック(図示せず)間の汎用ルーティングリソースのセグメント50を相互接続するための接続を含むことができる。汎用ルーティングリソースは、相互接続セグメント(例えば、相互接続セグメント50)のトラックを備える論理ブロック(図示せず)と相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含むことができる。汎用ルーティングリソース(例えば、相互接続セグメント50)の相互接続セグメントは、1つまたは複数の論理ブロックにまたがることができる。プログラマブル相互接続要素43は、汎用ルーティングリソースと共に、図示のFPGA用のプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0073】
例示的な実装形態では、CLB33は、ユーザ論理に加えて単一のプログラマブル相互接続要素(「INT」)43を実装するようにプログラムすることができる構成可能論理要素(「CLE」)44を含むことができる。BRAM34は、1つまたは複数のプログラマブル相互接続要素に加えて、BRAM論理要素(「BRL」)45を含むことができる。通常、タイルに含まれる相互接続要素の数は、タイルの高さに依存する。図示の例では、BRAMタイルは5つのCLBと同じ高さを有するが、他の数(例えば、4)も使用することができる。DSPブロック35は、適切な数のプログラマブル相互接続要素に加えて、DSP論理要素(「DSPL」)46を含むことができる。IOB36は、例えば、プログラマブル相互接続要素43の1つのインスタンスに加えて、入力/出力論理要素(「IOL」)47の2つのインスタンスを含むことができる。当業者には明らかなように、例えばIO論理要素47に接続される実際のIOパッドは、通常、入力/出力論理要素47の領域に限定されない。
【0074】
図示の例では、ダイの中心付近の水平領域(図5に示す)は、構成、クロック、および他の制御論理に使用される。この水平領域または列から延びる垂直列51は、FPGAの幅全体にクロックおよび構成信号を分配するために使用される。
【0075】
図5に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する規則的な柱状構造を破壊する追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用論理とすることができる。
【0076】
図5は、単なる例示的なFPGAアーキテクチャを示すことを意図していることに留意されたい。例えば、図5の上部に含まれる行の論理ブロックの数、行の相対幅、行の数および順序、行に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および相互接続/論理の実装は、純粋に例示的なものである。例えば、実際のFPGAでは、ユーザ論理の効率的な実装を容易にするために、通常、CLBが現れる場所に複数の隣接するCLB行が含まれるが、隣接するCLB行の数はFPGAの全体サイズによって異なる。
【0077】
上記では、本開示で提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、記載された特徴および要素の任意の組み合わせは、異なる実施形態に関連するかどうかにかかわらず、想定される実施形態を実装および実施することが想定される。さらに、本明細書に開示された実施形態は、他の可能な解決策または従来技術を超える利点を達成することができるが、所与の実施形態によって特定の利点が達成されるかどうかは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態および利点は単なる例示であり、特許請求の範囲に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素または限定とは見なされない。
【0078】
当業者には理解されるように、本明細書に開示される実施形態は、システム、方法、またはコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書ではすべて一般に「回路」、「モジュール」、または「システム」と呼ばれ得るソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、態様は、コンピュータ可読プログラムコードが具現化された1つまたは複数のコンピュータ可読媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
【0079】
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、またはデバイス、もしくはこれらの任意の適切な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つまたは複数の配線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、またはこれらの任意の適切な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、もしくはそれに関連して使用するためのプログラムを含むか、または記憶することができる任意の有形媒体である。
【0080】
コンピュータ可読信号媒体は、例えばベースバンドにおいて、または搬送波の一部として、コンピュータ可読プログラムコードが内部に具現化された伝搬データ信号を含むことができる。そのような伝搬信号は、電磁気、光学、またはそれらの任意の適切な組み合わせを含むがこれらに限定されない様々な形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、もしくはそれらと関連して使用するためのプログラムを通信、伝搬、または輸送することができる任意のコンピュータ可読媒体であってもよい。
【0081】
コンピュータ可読媒体上に具現化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、またはこれらの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して送信され得る。
【0082】
本開示の態様のための動作を実行するためのコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで記述することができる。プログラムコードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに接続されてもよい。
【0083】
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して以下に説明される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実施され得ることが理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて機械を生成することができ、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作成する。
【0084】
これらのコンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読媒体に記憶されてもよく、その結果、コンピュータ可読媒体に記憶された命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施する命令を含む製品を製造する。
【0085】
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成するために、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされてもよく、その結果、コンピュータ、または他のプログラマブル装置上で実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施するためのプロセスを提供する。
【0086】
図のフローチャートおよびブロック図は、本発明の様々な例によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替実施態様では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、関連する機能に応じて、時には逆の順序で実行されてもよい。また、ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組み合わせは、指定された機能または動作を実行するか、専用ハードウェアとコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
【0087】
上記は特定の例を対象としているが、その基本的な範囲から逸脱することなく他のおよびさらなる例を考案することができ、その範囲は以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5