(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-18
(54)【発明の名称】ダイレクトメモリアクセスコマンドのハードウェア管理
(51)【国際特許分類】
G06F 13/28 20060101AFI20241010BHJP
G06F 12/0831 20160101ALI20241010BHJP
【FI】
G06F13/28 310C
G06F12/0831
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024525409
(86)(22)【出願日】2022-10-28
(85)【翻訳文提出日】2024-06-11
(86)【国際出願番号】 US2022048214
(87)【国際公開番号】W WO2023076591
(87)【国際公開日】2023-05-04
(32)【優先日】2021-11-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョセフ グレイトハウス
(72)【発明者】
【氏名】ショーン ケリー
(72)【発明者】
【氏名】アラン スミス
(72)【発明者】
【氏名】アンソニー アサロ
(72)【発明者】
【氏名】リンーリン ワン
(72)【発明者】
【氏名】ミリンド ネムレカール
(72)【発明者】
【氏名】ハリ テンジララ
(72)【発明者】
【氏名】フェリックス クーリング
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205KK16
5B205MM03
(57)【要約】
DMA転送コマンドのハードウェア管理のための方法は、第1のDMAエンジン[314]によって、DMA転送コマンドにアクセスすることと、DMA転送コマンドによって要求されたデータ転送の第1の部分を判定することと、を含む。第1のDMAエンジンによるデータ転送の第1の部分の転送は、DMA転送コマンドに少なくとも部分的に基づいて開始される。同様に、第2のDMAエンジンによるデータ転送の第2の部分は、DMA転送コマンドに少なくとも部分的に基づいて開始される。データ転送の第1の部分及び第2の部分を転送した後、DMA転送コマンドによって要求されたデータ転送の完了を知らせる指標が生成される。
【選択図】
図3
【特許請求の範囲】
【請求項1】
方法であって、
DMA転送コマンドに少なくとも部分的に基づいて、第1のDMAエンジンによるデータ転送の第1の部分の転送を開始することと
前記DMA転送コマンドに少なくとも部分的に基づいて、第2のDMAエンジンによる前記データ転送の第2の部分の転送を開始することと、を含む、
方法。
【請求項2】
前記第1のDMAエンジンが、前記DMA転送コマンドがシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信することと、
前記第1のDMAエンジンが、前記DMAバッファから前記DMA転送コマンドをフェッチすることと、を含む、
請求項1の方法。
【請求項3】
前記第1のDMAエンジンによる前記データ転送の前記第1の部分の転送を開始することは、
前記第1のDMAエンジンが、キャッシュプローブ要求をキャッシュメモリに送信することと、
前記キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、前記データ転送の前記第1の部分を転送することと、を含む、
請求項2の方法。
【請求項4】
前記第2のDMAエンジンによる前記データ転送の前記第2の部分の転送を開始することは、
前記第2のDMAエンジンが、キャッシュプローブ要求をキャッシュメモリに送信することと、
前記キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信したことに基づいて、オーナーメインメモリから前記データ転送の前記第2の部分を転送することと、を含む、
請求項2又は3の方法。
【請求項5】
前記データ転送の前記第1の部分を判定することは、前記第1のDMAエンジンと前記第2のDMAエンジンとの間で総DMA転送サイズをインターリーブすることを含む、
請求項1の方法。
【請求項6】
一次DMAエンジンにおいて、前記DMA転送コマンドを受信し、前記DMA転送コマンドを複数のより小さいワークロードに分割することを含む、
請求項1の方法。
【請求項7】
前記一次DMAエンジンから前記複数のより小さいワークロードのうち何れかを受信することを含む、
請求項6の方法。
【請求項8】
プロセッサデバイスであって、
ベース集積回路(IC)ダイであって、前記ベースICダイの上に3D積層された複数の処理積層型ダイチップレットを含み、前記複数の処理積層型ダイチップレットを互いに通信可能に結合するチップ間データファブリックを含む、ベースICダイと、
前記ベースICダイの上に3D積層された複数のDMAエンジンであって、DMA転送コマンドによって要求されたデータ転送の一部を実行するようにそれぞれ構成された複数のDMAエンジンと、を備える、
プロセッサデバイス。
【請求項9】
前記複数のDMAエンジンの各々は、複数の転送エンジンを駆動する単一のコマンドエンジンを含む、
請求項8のプロセッサデバイス。
【請求項10】
前記複数のDMAエンジンの各々は、前記DMA転送コマンドがシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信するように構成されている、
請求項8又は9のプロセッサデバイス。
【請求項11】
前記複数のDMAエンジンのうち第1のDMAエンジンは、第1の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、前記データ転送の第1の部分を転送するように構成されている、
請求項8のプロセッサデバイス。
【請求項12】
前記複数のDMAエンジンのうち第2のDMAエンジンは、第2の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリに前記キャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信することに基づいて、オーナーメインメモリから前記データ転送の第2の部分を転送するように構成されている、
請求項11のプロセッサデバイス。
【請求項13】
前記複数のDMAエンジンの各々は、前記複数のDMAエンジン間で総DMA転送サイズをインターリーブすることによって、前記データ転送の部分を独立して判定するように構成されている、
請求項8のプロセッサデバイス。
【請求項14】
前記DMA転送コマンドを受信し、前記DMA転送コマンドを複数のより小さいワークロードに分割するように構成された一次DMAエンジンを備える、
請求項8のプロセッサデバイス。
【請求項15】
前記一次DMAエンジンは、前記複数のより小さいワークロードのうち異なるワークロードを前記複数のDMAエンジンの各々に送信するように構成されている、
請求項14のプロセッサデバイス。
【請求項16】
システムであって、
並列プロセッサマルチチップモジュールに通信可能に結合されたホストプロセッサを備え、
前記並列プロセッサマルチチップモジュールは、
ベース集積回路(IC)ダイであって、前記ベースICダイの上に3D積層された複数の処理積層型ダイチップレットを含み、前記複数の処理積層型ダイチップレットを互いに通信可能に結合するチップ間データファブリックを含む、ベースICダイと、
前記ベースICダイの上に3D積層された複数のDMAエンジンであって、DMA転送コマンドによって要求されたデータ転送の一部を実行するようにそれぞれ構成された複数のDMAエンジンと、を備える、
システム。
【請求項17】
前記DMA転送コマンドを受信し、前記DMA転送コマンドを複数のより小さいワークロードに分割するように構成された一次DMAエンジンであって、前記複数のより小さいワークロードのうち異なるワークロードを前記複数のDMAエンジンの各々に送信するように構成された一次DMAエンジンを備える、
請求項16のシステム。
【請求項18】
前記複数のDMAエンジンの各々は、前記複数のDMAエンジン間で総DMA転送サイズをインターリーブすることによって、前記データ転送の部分を独立して判定するように構成されている、
請求項16又は17のシステム。
【請求項19】
前記複数のDMAエンジンのうち第1のDMAエンジンは、第1の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、前記データ転送の第1の部分を転送するように構成されている、
請求項16のシステム。
【請求項20】
前記複数のDMAエンジンのうち第2のDMAエンジンは、第2の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリに前記キャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信することに基づいて、オーナーメインメモリから前記データ転送の第2の部分を転送するように構成されている、
請求項19のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
システムダイレクトメモリアクセス(DMA)エンジンは、コンピュータシステム内のデバイス(例えば、入出力インターフェース及びディスプレイコントローラ)とメモリとの間、又は、メモリ内の異なる位置の間のデータのダイレクトメモリアクセス転送を調整するモジュールである。DMAエンジンは、多くの場合、中央処理装置(CPU)又はグラフィックスプロセッサ(GPU)等のプロセッサ上に配置され、プロセッサ上で動作するアプリケーションからコマンドを受信する。コマンドに基づいて、DMAエンジンは、DMAソース(例えば、メモリ内に定義された第1のメモリバッファ)からデータを読み出し、DMA宛先(例えば、メモリ内に定義された第2のバッファ)にデータを書き込む。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、マルチダイプロセッサを実装するコンピューティングシステムのブロック図である。
【
図2】いくつかの実施形態による、DMAコマンドのハードウェア管理を実施するための例示的なコンピューティングシステムの一部のブロック図である。
【
図3】いくつかの実施形態による、DMAコマンドのハードウェア管理を実施するための例示的なマルチプロセッサコンピューティングシステムの一部を示すブロック図である。
【
図4】いくつかの実施形態による、キャッシュステータスに基づく転送コマンドのハードウェア管理分割を実施するシステムの一例を示すブロック図である。
【
図5】いくつかの実施形態による、転送コマンドのハードウェア管理分割を実施するシステムの別の例を示すブロック図である。
【
図6】いくつかの実施形態による、DMA転送コマンドのハードウェア管理分割を実行する方法を示すフロー図である。
【発明を実施するための形態】
【0004】
従来のプロセッサは、システムメモリに記憶されたデータのブロックを読み書きするための1つ以上のダイレクトメモリアクセスエンジンを含む。ダイレクトメモリアクセスエンジンは、転送を管理する負担からプロセッサコアを解放する。プロセッサコアからのデータ転送要求に応じて、ダイレクトメモリアクセスエンジンは、計算コードを遅延させることなくデータ転送動作を実行できるように、必要な制御情報を対応するソース及び宛先に提供し、したがって、通信と計算とが時間的に重複することを可能にする。ダイレクトメモリアクセスエンジンが制御情報の形成及び通信を非同期的に処理することにより、プロセッサコアは、データ転送要求の満足(satisfaction)を待っている間に他のタスクを実行するために解放される。
【0005】
分散アーキテクチャは、物理的又は論理的に分離された処理ユニットが高性能相互接続を介して協調的に動作するモノリシック処理アーキテクチャの代替としてますます一般的になってきている。分散アーキテクチャの一例はチップレットアーキテクチャであり、これは、処理ユニットのいくつかの部分をより小さいノードで製造する利点を獲得する一方で、他の部分がより小さいノードの縮小されたスケールから恩恵を受けない場合に、他の部分がより大きい寸法を有するノードで製造されることを可能にする。ダイレクトメモリアクセスエンジンの数は、チップレットベースのシステムで増加する可能性が高い(例えば、同等のモノリシックな非チップレットベースの設計と比較して)。
【0006】
ダイレクトメモリアクセスエンジンの利用を改善することによってシステム性能を向上させるために、
図1~
図6は、ダイレクトメモリ転送コマンドの処理のためにハードウェア管理による調整を利用するシステム及び方法を示す。様々な実施形態において、DMA転送コマンドのハードウェア管理のための方法は、第1のDMAエンジンによって、DMA転送コマンドにアクセスすること、及び、DMA転送コマンドによって要求されたデータ転送の第1の部分を判定することを含む。第1のDMAエンジンによるデータ転送の第1の部分の転送は、DMA転送コマンドに少なくとも部分的に基づいて開始される。同様に、第2のDMAエンジン(すなわち、第1のDMAエンジンとは異なるDMAエンジン)によるデータ転送の第2の部分が、DMA転送コマンドに少なくとも部分的に基づいて開始される。データ転送の第1の部分及び第2の部分を転送した後、DMA転送コマンドによって要求されたデータ転送の完了を知らせる指標が生成される。このようにして、転送コマンドによって指定された作業がDMAエンジン間で分割されるため、個々のDMAエンジンを大きくしたり、全体的なDMAスループットやデータファブリックの帯域幅使用量を増加させるための機能を追加したりする必要がなく、合計帯域幅使用量が増加する。
【0007】
図1は、いくつかの実施形態による、マルチダイプロセッサを実装するコンピューティングシステム100の一実施形態のブロック図を示す。様々な実施形態では、コンピューティングシステム100は、少なくとも1つ以上のプロセッサ102A~102Nと、ファブリック104と、入力/出力(input/output、I/O)インターフェース106と、メモリコントローラ108と、ディスプレイコントローラ110と、他のデバイス112と、を含む。様々な実施形態では、グラフィックス及び他のタイプのワークロードのための命令の実行をサポートするために、コンピューティングシステム100は、中央処理ユニット(central processing unit、CPU)等のホストプロセッサ114を含む。様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスのうち何れかを含む。コンピューティングシステム100の構成要素の数は、いくつかの実施形態において変化することに留意されたい。また、いくつかの実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、
図1に示される以外の他の方式で構築される。
【0008】
ファブリック104は、コンピューティングシステム100の構成要素の間で通信するために利用される様々なタイプのプロトコルの何れかに準拠する任意の通信相互接続を表す。ファブリック104は、処理ユニット102、I/Oインターフェース106、メモリコントローラ108、ディスプレイコントローラ110及び他のデバイス112を互いに接続するデータパス、スイッチ、ルータ及び他のロジックを提供する。ファブリック104は、コヒーレンシを容易にするために、要求、応答及びデータトラフィック、並びに、プローブトラフィックを処理する。また、ファブリック104は、コンピューティングシステム100の様々な構成要素への割り込み要求ルーティング及び構成アクセスパスを処理する。加えて、ファブリック104は、構成要求、応答及び構成データトラフィックを処理する。いくつかの実施形態では、ファブリック104は、共有バス構成、クロスバー構成及びブリッジを有する階層バスを含むバスベースである。他の実施形態では、ファブリック104は、パケットベースであり、ブリッジ、クロスバー、ポイントツーポイント又は他の相互接続を有する階層である。ファブリック104の観点から、コンピューティングシステム100の他の構成要素は、「クライアント」と呼ばれる。ファブリック104は、様々なクライアントによって生成された要求を処理し、その要求を他のクライアントに渡すように構成される。
【0009】
メモリコントローラ108は、任意の数及びタイプのメモリデバイスに結合された任意の数及びタイプのメモリコントローラを表す。例えば、メモリコントローラ108に結合されたメモリデバイスのタイプは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体メモリ(Ferroelectric Random Access Memory、FeRAM)等を含む。メモリコントローラ108は、プロセッサ102、I/Oインターフェース106、ディスプレイコントローラ110及び他のデバイス112によって、ファブリック104を介してアクセス可能である。I/Oインターフェース106は、任意の数及びタイプのI/Oインターフェース(例えば、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、PCI拡張(PCI-Extended、PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(gigabit Ethernet、GBE)バス、ユニバーサルシリアルバス(universal serial bus、USB))を表す。様々なタイプの周辺デバイスがI/Oインターフェース106に結合される。そのような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインターフェースカード等を含む(が、これらに限定されない)。他のデバイス112は、任意の数及びタイプのデバイス(例えば、マルチメディアデバイス、ビデオコーデック)を表す。
【0010】
様々な実施形態において、プロセッサ102の各々は、並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(Artificial Intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)である。各並列プロセッサ102は、並列プロセッサが単一の半導体集積回路のように使用可能(例えば、アドレス指定可能)となるように、ブリッジチップと共に通信可能に結合された2つ以上のベース集積回路ダイ(
図2に関して以下でより詳細に説明される)を含むマルチチップモジュール(例えば、半導体ダイパッケージ)として構築される。本開示で使用される場合、「ダイ」及び「チップ」という用語は、互換的に使用される。当業者は、従来の(例えば、マルチチップではない)半導体集積回路が、ウェハとして又はウェハ内に形成され、後に(例えば、ウェハがダイシングされる場合に)ウェハから分離されるダイ(例えば、シングルチップIC)として製造され、多くの場合、複数のICがウェハ内に同時に製造されることを認識するであろう。IC及び場合によってはディスクリート回路並びに場合によっては他の構成要素(プリント回路基板、インターポーザ及び場合によっては他のものを含む非半導体パッケージング基板等)は、マルチダイ並列プロセッサ内に組み立てられる。
【0011】
以下の
図2~
図6に関してより詳細に説明されるように、様々な実施形態では、個々のプロセッサ102の各々は、いくつかの実施形態による処理積層型ダイチップレットを使用する1つ以上のベースICダイを含む。ベースダイは、N個の通信可能に結合されたグラフィックス処理積層型ダイチップレットを含む単一の半導体チップパッケージとして形成される。様々な実施形態において、ベースICダイは、デバイスとメモリとの間(又はメモリ内の異なる位置の間)のデータのDMA転送を調整する2つ以上のDMAエンジンを含む。様々な実施形態が、例示及び説明を容易にするために、CPU及びGPUの特定のコンテキストにおいて以下で説明されるが、本明細書で説明される概念は、加速処理ユニット(accelerated processing unit、APU)、ディスクリートGPU(discrete GPU、dGPU)、人工知能(AI)アクセラレータ、他の並列プロセッサ等を含む他のプロセッサにも同様に適用可能であることを認識されたい。
【0012】
図2を参照すると、例示的なコンピューティングシステム200の部分のブロック図が示されている。いくつかの例では、コンピューティングシステム200は、
図1に関して図示及び説明したように、デバイス100の一部又は全部を使用して実施される。コンピューティングシステム200は、少なくとも第1の半導体ダイ202を含む。様々な実施形態では、半導体ダイ202は、1つ以上のプロセッサ204A~204N、入力/出力(I/O)インターフェース206、ダイ内相互接続208、メモリコントローラ210、及び、ネットワークインターフェース212を含む。他の例では、コンピューティングシステム200は、更なる構成要素、異なる構成要素を含み、及び/又は、異なる方法で配置される。いくつかの実施形態では、半導体ダイ202は、プロセッサが単一の半導体集積回路のように使用され得るように、2つ以上の集積回路(IC)ダイを含む半導体ダイパッケージとして構成されたマルチチップモジュールである。本開示で使用される場合、「ダイ」及び「チップ」という用語は、互換的に使用され得る。
【0013】
いくつかの実施形態では、プロセッサ204A~204Nの各々は、1つ以上の処理デバイスを含む。一実施形態では、プロセッサ204A~204Nのうち少なくとも1つは、CPU等の1つ以上の汎用処理デバイスを含む。いくつかの実施形態では、そのような処理デバイスは、
図1に関して図示及び説明したようにプロセッサ102を使用して実施される。別の実施形態では、プロセッサ204A~204Nのうち少なくとも1つは、1つ以上の並列プロセッサを含む。並列プロセッサの例には、GPU、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等が含まれる。
【0014】
I/Oインターフェース206は、1つ以上のI/Oインターフェース(例えば、周辺コンポーネント相互接続(PCI)バス、PCI拡張(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)等)を含む。いくつかの実施形態では、I/Oインターフェース206は、
図1に関して図示及び説明したように、入力ドライバ112及び/又は出力ドライバ114を使用して実装される。様々なタイプの周辺デバイスをI/Oインターフェース206に結合することができる。そのような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインターフェースカード等を含む(が、これらに限定されない)。いくつかの実施形態では、そのような周辺デバイスは、
図1に関して図示及び説明したように、入力装置108及び/又は出力装置118を使用して実装される。
【0015】
様々な実施形態において、各プロセッサは、1つ以上のレベルのキャッシュを有するキャッシュサブシステムを含む。いくつかの実施形態では、プロセッサ204A~204Nの各々は、コア複合体の複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)キャッシュ)を含む。メモリコントローラ210は、ダイ内相互接続208を介してアクセス可能等のように、プロセッサ204A~204Nによってアクセス可能な少なくとも1つのメモリコントローラを含む。様々な実施形態において、メモリコントローラ210は、任意の適切なタイプのメモリコントローラのうち1つ以上を含む。メモリコントローラの各々は、任意の数及びタイプのメモリデバイス(図示せず)に結合され(又は通信し)、それらへのアクセスを制御する。いくつかの実施形態では、そのようなメモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体メモリ(FeRAM)、又は、任意の他の適切なメモリデバイスを含む。ダイ内相互接続208は、バス、データファブリック等の
図2に示すデバイス間の通信に適した任意のコンピュータ通信媒体を含む。
【0016】
図3は、例示的なマルチプロセッサコンピューティングシステム300の一部を示すブロック図である。システム300又はその一部は、半導体ダイ202(
図2に関して図示及び説明したように)及び/又はデバイス100(
図1及び
図2に関して図示及び説明したように)の一部又は全部を使用して実装可能である。様々な実施形態において、システム300は、いくつかの実施形態による処理積層型ダイチップレットを使用するプロセッサマルチチップモジュール302を含む。プロセッサマルチチップモジュール302は、N=3個の通信可能に結合されたグラフィックス処理積層型ダイチップレット304を含む単一の半導体チップパッケージとして形成される。図示したように、プロセッサマルチチップモジュール302は、第1のグラフィックス処理積層型ダイチップレット304A、第2のグラフィックス処理積層型ダイチップレット304B、及び、第3のグラフィックス処理積層型ダイチップレット304Cを含む。
【0017】
グラフィックス処理積層型ダイチップレット304は、例示及び説明を容易にするためにGPU用語の特定のコンテキストで以下に説明されるが、様々な実施形態において、説明されるアーキテクチャは、本開示の範囲から逸脱することなく、様々なタイプの並列プロセッサ(
図2及び
図3を参照してより広範に上述したような)の何れにも適用可能であることを認識されたい。加えて、様々な実施形態では、本明細書で使用される場合、「チップレット」という用語は、限定するものではないが、以下の特性を含む任意のデバイスを指す。つまり、1)チップレットは、完全な問題を解くために使用される計算ロジックの少なくとも一部を含む能動シリコンダイを含む(すなわち、計算ワークロードは、これらの能動シリコンダイの複数にわたって分散される)、2)チップレットは、同じ基板上にモノリシックユニットとして一緒にパッケージ化される、3)プログラミングモデルは、これらの個別の計算ダイ(すなわち、グラフィックス処理積層型ダイチップレット)を単一のモノリシックユニットとして組み合わせるという概念を維持する(すなわち、各チップレットは、計算ワークロードを処理するためにチップレットを使用するアプリケーションに個別のデバイスとして露出されない)。
【0018】
様々な実施形態において、プロセッサマルチチップモジュール302は、チップレット間(例えば、第1のグラフィックス処理積層型ダイチップレット304A、第2のグラフィックス処理積層型ダイチップレット304B、及び、第3のグラフィックス処理積層型ダイチップレット304Cの任意の組み合わせの間で)の高帯域幅ダイ間相互接続として動作するチップ間データファブリック306を含む。いくつかの実施形態では、プロセッサマルチチップモジュール302は、チップレット304A~304Cのそれぞれの上に形成された1つ以上のプロセッサコア308(例えば、CPU及び/若しくはGPU、又は、プロセッサコアダイ)を含む。更に、様々な実施形態において、チップレット304A~304Cの各々は、1つ以上のレベルのキャッシュメモリ310と、ダイナミックランダムアクセスメモリ(DRAM)モジュール等の外部システムメモリモジュール312と通信するための1つ以上のメモリPHY(図示せず)と、を含む。
【0019】
また、チップレット304A~304Cの各々は、1つ以上のDMAエンジン314を含む。様々な実施形態において、1つ以上のDMAエンジン314は、システム300内のデバイスとメモリとの間(又はメモリ内の異なる位置の間)のデータのDMA転送を調整する。様々な実施形態において、1つ以上のDMAエンジン314は、複数のデバイス/アクセラレータ間のデータの移動を調整し、一方、例えばプロセッサコア308において他のデータに対して計算が実行される。様々な実施形態において、1つ以上のDMAエンジン314は、いくつかの実施形態において、DMAコントローラ(図示せず)の一部であるが、DMAエンジン及びDMAコントローラという用語は、本明細書において互換的に使用される。DMAエンジン314は、コマンドに応じて、プロセッサコア308の関与なしに、例えば、1つ以上のメモリモジュール312との間でデータを転送するように動作する。同様に、DMAエンジン314は、いくつかの実施形態では、チップ内データ転送を実行する。理解されるように、DMAエンジン314は、データ転送を管理する負担からプロセッサコアを解放し、様々な実施形態において、メモリ間データコピー等のソフトウェアからの様々なデータ転送要件を処理するためのグローバルデータ転送エージェントとして使用される。
【0020】
1つ以上のDMAエンジン314は、ディスクリプタとしても知られるDMAコマンドによって指定される所望のデータ転送動作を実行するために、アプリケーション/エージェントキュー及びそれぞれのDMAバッファからのコマンドパケットのフェッチ及び復号を提供する。DMAコマンドには、データ又は命令を含むメモリ位置の転送又は転送を制御するメモリフローコマンド(例えば、メモリの内外にデータを転送するためのread/get又はwrite/putコマンド)が含まれる。DMAコマンドディスクリプタは、様々な実施形態において、データ転送動作ごとに、データを読み出すソースアドレス、転送サイズ、及び、データを書き込む宛先アドレスを示す。ディスクリプタは、概して、リンクされたリスト又はチェーンとしてメモリ内に編成され、各ディスクリプタは、実行される次のディスクリプタのメモリ内のアドレスを示すフィールドを含む。様々な実施形態において、ディスクリプタは、有効ビットを有するコマンドの配列であり、コマンドは既知のサイズであり、1つ以上のDMAエンジン314は、無効化コマンドに達すると停止する。リスト内の最後のディスクリプタは、「次のディスクリプタ」フィールド内にヌルポインタを有し、それ以上実行されるコマンドがなく、チェーンの終わりに達するとDMAがアイドル状態になるべきであることをDMAエンジンに示す。
【0021】
プロセッサコアからのデータ転送要求に応じて、DMAエンジン314は、データ転送要求が満たされるように、必要な制御情報を対応するソース及び宛先に提供する。DMAエンジン314が制御情報の形成と通信を処理するため、プロセッサコアは、データ転送要求が満たされるのを待っている間、他のタスクを実行できるようになる。様々な実施形態において、DMAエンジン314の各々は、プロセッサコア又はCPUを介さずにメモリ及び/又は周辺入出力(I/O)デバイス及びメモリ内の位置の間でデータを転送する1つ以上の専用補助プロセッサを含む。
【0022】
いくつかの実施形態では、DMAの要求は、プロセッサ308のうち1つ以上によって生成されたDMAコマンドを、DMAバッファ316(DMA転送コマンドを保持するためのDMAキューとも互換的に呼ばれる)等のメモリマッピングされたIO(MMIO)位置に配置することによって処理される。様々な実施形態において、DMAバッファは、DMAエンジン314が(例えば、DRAMメモリに行く必要なく)DMAコマンドを読み出すことができるように、読み出し又は書き込み命令が転送されるハードウェア構造である。データ転送動作を実行するために、様々な実施形態において、DMAエンジン314は、DMAバッファ316内のコマンドのシーケンスにアクセスすることによってプロセッサ308によって生成された命令(例えば、DMA転送コマンド/データ転送要求)を受信する。その後、DMAエンジン314は、処理のためにDMAバッファ316からDMAコマンド(ディスクリプタとしても知られる)を取り出す。いくつかの実施形態では、DMAコマンドは、例えば、直接仮想メモリアクセス(DVMA)及びI/Oバスアクセスの開始アドレス、並びに、所定の最大値までの転送長を指定する。
【0023】
DMAバッファ316は、説明を容易にするためにチップレット304に実装されるものとして
図3に示されているが、当業者であれば、DMAバッファ316は、本開示の範囲から逸脱することなく、本明細書に記載のシステム及びデバイスの様々な構成要素において実装可能であることを認識するであろう。例えば、いくつかの実施形態では、DMAバッファ316は、メモリモジュール312等のメインメモリ内に構成される。メモリ内のコマンドキューのその位置は、DMAエンジン314が転送コマンドを読み出すために行く場所である。様々な実施形態において、DMAバッファ316は、1つ以上のリングバッファ(例えば、モジュロアドレス指定によってアドレス指定される)として構成される。
【0024】
DMAエンジン314は、バス(図示せず)を介してDMAバッファ316からDMA転送コマンドにアクセスする(又はコマンドを受信する)。受信した命令に基づいて、いくつかの実施形態では、DMAエンジン314は、データファブリック306を介して任意のメモリ(例えば、メモリモジュール312)からデータを読み出してバッファリングし、データファブリック306を介してバッファリングされたデータを任意のメモリに書き込む。いくつかの実施形態では、DMAソース及びDMA宛先は、異なるデバイス(例えば、異なるチップレット)上に物理的に配置される。同様に、マルチプロセッサシステムでは、DMAソース及びDMA宛先は、場合によっては、異なるプロセッサに関連付けられた異なるデバイスに配置される。そのような場合、DMAエンジン314は、物理アドレスを取得するために仮想アドレスを解決し、DMA転送に影響を及ぼすためにリモートread及び/又はwriteコマンドを発行する。例えば、様々な実施形態において、受信された命令に基づいて、DMAエンジン314は、DMA転送に影響を及ぼす命令を有するメッセージをデータファブリックデバイスに送信する。
【0025】
DMA中、1つ以上のプロセッサコア308は、DMAバッファ316内のDMAコマンドをキューに入れ、それらの存在をDMAエンジン314にシグナリングすることができる。例えば、いくつかの実施形態では、システム300上で実行されるアプリケーションプログラムは、DMAデータ転送のチェーンを開始するために、DMAエンジン(例えば、DMAバッファ316)にアクセス可能なメモリ内のディスクリプタの適切なチェーンを準備する。次いで、プロセッサコア308は、チェーン内の最初のディスクリプタのメモリアドレスを示すメッセージ(又は他の通知)をDMAエンジン314に送信し、これは、ディスクリプタの実行を開始するためのDMAエンジンへの要求である。通常、アプリケーションはメッセージをDMAエンジンの「ドアベル(doorbell)」、つまりこの目的のために指定された特定のバスアドレスを持つ制御レジスタに送信する。DMA実行を開始するためにこのようなメッセージを送信することは、DMAエンジン314の「ドアベルを鳴らす(ringing the doorbell)」として知られている。DMAエンジン314は、第1のディスクリプタを読み出して実行することによって応答する。そして、ディスクリプタが実行されたことをアプリケーションに示すためにディスクリプタのステータスフィールドを更新する。DMAエンジン314は、リンクされたリスト全体を通じて「次」フィールドを辿り、最後のディスクリプタ内のヌルポインタに達するまで、各ディスクリプタを実行されたものとしてマーキングする。最後のディスクリプタを実行した後、DMAエンジン314はアイドル状態になり、実行のための新しいリストを受信する準備が整う。
【0026】
図3に示すような様々な実施形態では、システム300は、チップ間データファブリック306によって互いに接続された2つ以上のアクセラレータを含む。更に、
図3に示すように、グラフィックス処理積層型ダイチップレット304の構成要素(例えば、1つ以上のプロセッサコア308、DMAエンジン314、DMAバッファ316等)は、相互接続318(例えば、他の構成要素を介して)を介して互いに通信する。このようにして、相互接続318は、マルチプロセッサコンピューティングシステム300の構成要素間の通信を容易にするデータファブリックの一部を形成する。更に、チップ間データファブリック306は、データファブリックの一部も形成する様々な通信可能に結合されたグラフィックス処理積層型ダイチップレット304及びI/Oインターフェース(図示せず)上にデータファブリックを延在する。様々な実施形態において、相互接続318は、バス、データファブリック等のように、
図3に示されるデバイス間の通信に適した任意のコンピュータ通信媒体を含む。いくつかの実施形態では、相互接続318は、説明を容易にするために
図3には示されていない他の構成要素に接続され、及び/又は、他の構成要素と通信する。例えば、いくつかの実施形態では、相互接続318は、
図2に関して図示及び説明したような1つ以上の入力/出力(I/O)インターフェース206への接続を含む。
【0027】
理解されるように、チップ間データファブリック306及び/又は相互接続318は、単一のDMAエンジンが利用可能なデータファブリック帯域幅を飽和させることができないような高帯域幅を有することが多い。様々な実施形態において、より詳細に後述するように、システム300は、DMAを介したメモリ転送コマンドの処理のために複数のDMAエンジン314への転送コマンドのハードウェア管理(すなわち、例えばオペレーティングシステム又はハイパーバイザの一方又は両方を含むシステムソフトウェアアプリケーションによる入力なしにデバイスハードウェアによって媒介される)分割を実行するために、増加した数のDMAエンジン314(例えば、
図3の実施形態に示すように、チップレット304ごとに1つ)を利用する。このようにして、転送コマンドによって指定された作業は、複数のチップレット304及びそれらのそれぞれのDMAエンジン314にわたって本質的に分割され、それによって、個々のDMAエンジン314が全体的なDMAスループット及びデータファブリック帯域幅の使用を増加させるために、より大きくするか又はより多くの機能を有する必要なく、総帯域幅使用量が増加する。
【0028】
動作中、(例えば、ドアベルリング)通知に応じて、DMAエンジン314は、データ転送動作及びパケット転送を実行するために、DMAバッファ316から(関連するパラメータと共に)DMA転送コマンドを読み出して実行する。様々な実施形態では、動作パラメータ(例えば、DMAコマンドパラメータ)は、通常、送信側と受信側の両方について、ベースアドレス、ストライド、要素サイズ及び通信する要素の数である。具体的には、DMAエンジン314は、複数のダイ(例えば、MCM302)又はチップレット304にわたる複数のDMAエンジン314が、DMA転送パラメータを有するパケットを含む同じ位置を読みように構成される。続いて、以下により詳細に記載されるように、DMAエンジン314は、ハードウェア機構を介して互いに同期及び調整して、DMA転送において協働して動作する。様々な実施形態において、DMAエンジン314は、単一のDMAエンジンがDMA転送の一部のみを実行するように、コマンド転送のハードウェア管理分割を行う。例えば、2つのDMAエンジン314間のDMA転送の分割は、個々のDMAエンジンが他のDMAエンジンと同時に転送の半分を実行しているので、単位時間当たりの帯域幅使用量又はDMA転送スループットを倍増させる可能性を有する。
【0029】
図4を参照すると、いくつかの実施形態による、キャッシュステータスに基づく転送コマンドのハードウェア管理分割を実施するシステムの一例を示すブロック図が示されている。デバイス400又はその一部は、半導体ダイ202(
図2に関して図示及び説明したように、)及び/又はデバイス100(
図1及び
図2に関して図示及び説明したように、)の一部又は全部を使用して実装可能である。様々な実施形態において、デバイス400は、いくつかの実施形態による処理積層型ダイチップレットを使用するベースダイ402を含む。ベースダイ402は、N=2個の通信可能に結合されたグラフィックス処理積層型ダイチップレット404を含む単一の半導体チップパッケージとして形成される。図示したように、プロセッサベースダイ402は、第1のグラフィックス処理積層型ダイチップレット404A及び第2のグラフィックス処理積層型ダイチップレット404Bを含む。
【0030】
様々な実施形態において、ベースダイ402は、チップレット間の高帯域幅ダイ間相互接続(例えば、第1のグラフィックス処理積層型ダイチップレット404Aと第2のグラフィックス処理積層型ダイチップレット404Bとの間)として動作するチップ間データファブリック406を含む。いくつかの実施形態では、ベースダイ402は、チップレット404A~404Bのそれぞれの上に形成された1つ以上のプロセッサコア408(例えば、CPU及び/若しくはGPU、又は、プロセッサコアダイ)を含む。更に、様々な実施形態において、チップレット404A~404Bの各々は、1つ以上のレベルのキャッシュメモリ410と、ダイナミックランダムアクセスメモリ(DRAM)モジュール等の外部システムメモリモジュール412と通信するための1つ以上のメモリPHY(図示せず)と、を含む。全体として考慮すると、複数のチップレット(例えば、チップレット404A及び404B)に通信可能に結合されたメインメモリ(例えば、メモリモジュール412)及びそれらのローカルキャッシュは、デバイス400のための共有メモリを形成する。理解されるように、各チップレット404は、共有メモリシステム全体の一部への直接的な物理的接続のみを有する。
【0031】
様々な実施形態において、ベースダイ402は、ベースダイ402の上に配置された2つ以上のDMAエンジン414(例えば、第1のDMAエンジン414A及び第2のDMAエンジン414B)を含む。様々な実施形態において、DMAエンジン414は、システム400内のデバイスとメモリとの間(又はメモリ内の異なる位置の間)のデータのDMA転送を調整する。様々な実施形態において、DMAエンジン414は、複数のデバイス/アクセラレータ間のデータの移動を調整し、一方、例えばプロセッサコア408において他のデータに対して計算が実行される。様々な実施形態において、1つ以上のDMAエンジン414は、いくつかの実施形態において、DMAコントローラ(図示せず)の一部であるが、DMAエンジン及びDMAコントローラという用語は、本明細書において互換的に使用される。DMAエンジン414は、コマンドに応じて、プロセッサコア408の関与なしに、例えば、1つ以上のメモリモジュール412との間でデータを転送するように動作する。同様に、DMAエンジン414は、いくつかの実施形態では、チップ内データ転送を実行する。
【0032】
グラフィックス処理積層型ダイチップレット304は、例示及び説明を容易にするためにGPU用語の特定のコンテキストで以下に説明されるが、様々な実施形態において、説明されるアーキテクチャは、本開示の範囲から逸脱することなく、様々なタイプの並列プロセッサ(
図2及び
図3を参照してより広範に上述したような)の何れにも適用可能であることを認識されたい。更に、DMAエンジン414は、
図4において個々のコンピュートチップレットの上部にあるように示されているが、当業者であれば、転送コマンドのハードウェア管理分割が、本開示の範囲から逸脱することなく、様々なシステム位置においてDMAエンジンによって実行され得ることを認識するであろう。例えば、いくつかの実施形態では、DMAエンジンは、(例えば、
図5に関して説明したように)ベースダイの上に置かれる。同様に、システム及びデバイスは、ここではチップレットベースのシステムのコンテキストで説明されているが、転送コマンドのハードウェア管理分割は、モノリシックダイを含む複数のDMAエンジンを含む任意のシステム構成で実行され得る特定のアーキテクチャに限定されないことを当業者は認識するであろう。
【0033】
いくつかの実施形態では、DMAの要求は、プロセッサ408のうち1つ以上によって生成されたDMAコマンド(交換可能にパケットとも呼ばれる)を、DMAバッファ416(交換可能にDMA転送コマンドを保持するためのDMAキューとも呼ばれる)等のメモリマップIO(MMIO)位置に配置することによって処理される。様々な実施形態において、DMAバッファ416は、DMAエンジン414が(例えば、DRAMメモリに行く必要なく)DMAコマンドを読み出すことができるように、読み出し又は書き込み命令が転送されるハードウェア構造である。データ転送動作を実行するために、様々な実施形態において、DMAエンジン414は、DMAバッファ416内のコマンドのシーケンスにアクセスすることによって、プロセッサ408によって生成された命令(例えば、DMA転送コマンド/データ転送要求)を受信する。その後、DMAエンジン414は、処理のためにDMAバッファ416からDMAコマンド(ディスクリプタとしても知られる)を取り出す。いくつかの実施形態では、DMAコマンドは、例えば、直接仮想メモリアクセス(DVMA)及びI/Oバスアクセスの開始アドレス、並びに、所定の最大値までの転送長を指定する。
【0034】
DMAバッファ416は、説明を容易にするためにベースダイ402に実装されるものとして
図4に示されているが、当業者であれば、DMAバッファ416は、本開示の範囲から逸脱することなく、本明細書に記載のシステム及びデバイスの様々な構成要素において実装可能であることを認識するであろう。例えば、いくつかの実施形態では、DMAバッファ416は、メモリモジュール412等のメインメモリ内に構成される。メモリ内のコマンドキューのその位置は、DMAエンジン414が転送コマンドを読み出すために行く場所である。様々な実施形態において、DMAバッファ416は、1つ以上のリングバッファ(例えば、モジュロアドレス指定によってアドレス指定される)として構成される。
【0035】
図4に例示されるように、DMAエンジン414A及び414Bは、(DMAバッファ416又はシステムメモリモジュール412のような)1つ以上のDMAワークロード又はDMAジョブが形成され、メモリに満たされたことを示すDMA通知418を受信する。上述したような様々な実施形態において、DMA通知418は、メモリ内にDMAディスクリプタが準備されていることを示すドアベルリング又は他の通知器を含む。DMA通知418の受信に応じて、DMAエンジン414A及び414Bは、DMAバッファ416からDMAジョブ記述420をそれぞれ独立してフェッチする。いくつかの実施形態では、DMAエンジン414がDMA転送コマンドを取り出すための通信経路は、プロセッサとチップレット404との接続のための経路としてPCIEインターフェース(例えば、
図1に関して上述したようなI/Oインターフェース106)を含む。他の実施形態において、DMAエンジン414がDMA転送コマンドを取り出すための通信経路は、オンダイプロセッサとDMAエンジン414との接続のための経路としての内部データファブリック(例えば、
図3に関して上述したような相互接続318)を含む。
【0036】
同じ位置(すなわち、DMAバッファ416)から同じDMAジョブ記述を独立してフェッチすることに加えて、DMAエンジン414A及び414Bの各々は、実行すべきDMA転送コマンドによって要求されるデータ転送の部分を独立して判定する。一実施形態では、DMAエンジン414A及び414Bの各々は、キャッシュプローブ要求422(例えば、読み出しプローブ及び/又は書き込みプローブ)をそれらのそれぞれのチップレット404のキャッシュメモリ410及びメインメモリ(例えば、メモリモジュール412)にブロードキャストすることによって、投機的DMA転送を発行する。キャッシュプローブ要求に応じて、各チップレット404のキャッシュメモリ410及びメインメモリは、要求しているDMAエンジンに1つ以上のリターンレスポンスを返す。例えば、DMA読み出しプローブの場合、キャッシュメモリ410は、要求されたデータがキャッシュメモリ410内で見つかったか否かを示すためにキャッシュヒット又はキャッシュミスを返すことができる。
【0037】
図4に示すように、取り出されたDMAジョブ記述420は、物理アドレスX及びYからデータを読み取る単一の転送コマンドである。アドレスX及びYに関連付けられたデータの一部が、第1のグラフィックス処理積層型ダイチップレット404Aのキャッシュメモリ410(例えば、L3又は何らかの最終レベルキャッシュ)に現在存在しているかどうかを判定するために、DMAエンジン414Aは、メモリモジュール412の前にキャッシュプローブ要求422をキャッシュメモリ410(キャッシュコントローラ[図示せず]を含む)にブロードキャストし、アドレスXのキャッシュヒット及びアドレスYのキャッシュミスを示す1つ以上のリターンレスポンスを受信する。アドレスX及びYに関連付けられたデータの一部が、第2のグラフィックス処理積層型ダイチップレット404Bのキャッシュメモリ410に現在存在しているかどうかを判定するために、DMAエンジン414Bは、同様に、キャッシュプローブ要求422をキャッシュメモリ410にブロードキャストし、アドレスXのキャッシュミス及びアドレスYのキャッシュミスを示す1つ以上のリターンレスポンスを受信する。
【0038】
様々な実施形態では、プローブは、キャッシュがデータブロックのコピーを有するかどうかを示す応答を要求するために、及び、いくつかの実施形態では、キャッシュがデータブロックを配置すべきキャッシュ状態を示すために、コヒーレンシポイント(例えば、DMAエンジン414において)からコンピュータシステム内の1つ以上のキャッシュに渡されるメッセージを含む。いくつかの実施形態では、DMAエンジン414がその対応するメモリコントローラ(例えば、メモリコントローラによって制御されるメモリ内のアドレス又はアドレス領域に記憶されたデータを求めるメモリ要求)をターゲットとするメモリ要求を受信した場合、DMAエンジン414は、その対応するキャッシュディレクトリに対するルックアップ(例えば、タグベースのルックアップ)を実行して、要求が何れかのキャッシュサブシステムの少なくとも1つのキャッシュラインにキャッシュされたメモリアドレス又は領域をターゲットとするかどうかを判定する。
【0039】
更に、特定の物理アドレスは、メモリモジュール412の一箇所にのみ存在する。例えば、チップレットベースのシステムでは、各ダイは、特定の範囲のアドレス(又は特定のアドレスパターンはローカルダイとリモートダイに属する)を有するメモリチャネルに割り当てられるか、そうでなければ物理的に接続される。仮想アドレスから物理アドレスへの変換から、各DMAエンジン414は、DMA転送コマンドのアドレスがその物理ダイに接続されているメモリの範囲内にあるかどうかを認識する。DMAエンジン414がDMA転送コマンドを復号し、データがローカルメモリ内にないと判定した場合、DMAエンジン414は、DMAジョブのこれらの部分をスキップする。更に、全てのDMAエンジン414がこの同じ方法で動作する場合、メモリチャネル全体がカバーされる。
【0040】
図4の例示的な実施形態では、物理アドレスX及び物理アドレスYのデータは、第2のグラフィックス処理積層型ダイチップレット404Bに直接接続されたメモリモジュール412に記憶される。しかしながら、第1のグラフィックス処理積層型ダイチップレット404Aのキャッシュメモリ410は、物理アドレスXに対する要求されたデータを既に含んでいるので、DMAエンジン414Aは、(異なるチップレットのキャッシュからデータを取り出すこととは対照的に)アドレスXに関連付けられたデータ転送の部分を実行する。したがって、DMAエンジン414AにアドレスXに関連付けられたデータのDMA転送を実行させることは、チップ間データファブリック406を越えて異なるチップレットのデータ所有メモリモジュール412(又はキャッシュ)にアクセスするよりも、よりエネルギーが最適であり、レイテンシがより低い。
【0041】
同様に、キャッシュプローブ要求422が第1及び第2のチップレット404の両方のキャッシュメモリ410においてキャッシュミスをもたらすことに起因して、データ所有キャッシュメモリ410のDMAエンジン414Bは、物理アドレスYに関連付けられたデータのDMA転送を実行する。換言すれば、データにより近いDMAエンジン414は、DMA転送を実行するエンジンである。その後、DMAエンジン414は、割り込み信号をプロセッサコア408に送ること等によって、DMA転送が完了したことをシグナリングする。このようにして、より近いDMAエンジン414によるDMA転送パケット全体の分割及びDMA転送の実行(各DMAエンジンが他のDMAエンジンと並列にその転送を実行する)のハードウェア管理された調整は、DMA転送動作が全ての異なるチャネルにわたってメモリからデータを読み出す必要性を回避する(例えば、異なるチップレットに関連付けられたキャッシュメモリ又はDRAMからデータを読み出すことは、相互接続を通過してエネルギー性能ヒットを取るトラフィックを必要とする)。
【0042】
全てのDMAエンジン414がDMAジョブのその部分を完了すると、DMAジョブが完了したことを示す信号が要求プロセッサに返される。例えば、いくつかの実施形態では、これは、DMAバッファへの完了を示す値の書き込み、メモリ内の他の何らかの位置への値の書き込み、要求プロセッサへの割り込み等によって達成される。要求プロセッサは、DMAジョブ全体が完了した場合にのみ通知されるため、DMAエンジン414は、DMAジョブ完了が、全てのDMAエンジン414がDMAジョブのその部分で完了した場合にのみ示されるように、何らかの方法で同期する。いくつかの実施形態では、これは、いくつのDMAエンジンがそれらの部分を完了したかを示すためにDMAバッファ内のカウンタをアトミックにインクリメントすること、メモリ内の同期構造を介して又はファブリック406を介したDMAエンジン間の直接メッセージングを介して等の様々な技術によって達成される。
【0043】
以下により詳細に記載されるような他の実施形態において、DMAエンジンは、転送コマンドのパケットの分割を、(
図4に記載されているようなアクセスされるべき物理アドレスを見る代わりに、)データ転送の量及び複数のDMAエンジン間のワークロードのインターリーブに基づいて判定する。
【0044】
図5を参照すると、いくつかの実施形態による、転送コマンドのハードウェア管理分割を実施するシステムの別の例を示すブロック図が示されている。デバイス500又はその一部は、半導体ダイ202(
図2に関して図示及び説明したように、)及び/又はデバイス100(
図1及び
図2に関して図示及び説明したように、)の一部又は全部を使用して実装可能である。様々な実施形態において、デバイス500は、いくつかの実施形態による処理積層型ダイチップレットを用いるベースダイ502を含む。ベースダイ502は、N=2個の通信可能に結合されたグラフィックス処理積層型ダイチップレット504を含む単一の半導体チップパッケージとして形成される。図示したように、プロセッサベースダイ502は、第1のグラフィックス処理積層型ダイチップレット504A及び第2のグラフィックス処理積層型ダイチップレット504Bを含む。
【0045】
様々な実施形態において、ベースダイ502は、チップレット間の高帯域幅ダイ間相互接続(例えば、第1のグラフィックス処理積層型ダイチップレット504Aと第2のグラフィックス処理積層型ダイチップレット504Bとの間)として動作するチップ間データファブリック506を含む。いくつかの実施形態では、ベースダイ502は、チップレット504A~504Bのそれぞれの上に形成された1つ以上のプロセッサコア508(例えば、CPU及び/若しくはGPU、又は、プロセッサコアダイ)を含む。更に、様々な実施形態において、チップレット504A~504Bの各々は、1つ以上のレベルのキャッシュメモリ510と、ダイナミックランダムアクセスメモリ(DRAM)モジュール等の外部システムメモリモジュール512と通信するための1つ以上のメモリPHY(図示せず)と、を含む。全体として考慮すると、複数のチップレット(例えば、チップレット504A及び504B)に通信可能に結合されたメインメモリ(例えば、メモリモジュール512)及びそれらのローカルキャッシュは、デバイス500のための共有メモリを形成する。理解されるように、各チップレット504は、共有メモリシステム全体の一部への直接的な物理的接続のみを有する。
【0046】
様々な実施形態において、ベースダイ502は、ベースダイ502の上に配置された2つ以上のDMAエンジン514(例えば、第1のDMAエンジン514A及び第2のDMAエンジン514B)を含む。様々な実施形態において、DMAエンジン514は、システム500内のデバイスとメモリとの間(又はメモリ内の異なる位置の間)のデータのDMA転送を調整する。様々な実施形態において、DMAエンジン514は、複数のデバイス/アクセラレータ間のデータの移動を調整し、一方、例えばプロセッサコア508において他のデータに対して計算が実行される。
【0047】
様々な実施形態において、1つ以上のDMAエンジン514は、いくつかの実施形態において、DMAコントローラ(図示せず)の一部であるが、DMAエンジン及びDMAコントローラという用語は、本明細書において互換的に使用される。DMAエンジン514は、コマンドに応じて、プロセッサコア508の関与なしに、例えば、1つ以上のメモリモジュール512との間でデータを転送するように動作する。同様に、DMAエンジン514は、いくつかの実施形態では、チップ内データ転送を実行する。いくつかの実施形態では、DMAエンジン514は、フロントエンドパケットプロセッサ(図示せず)並びにバックエンドコマンドエンジン及び転送エンジン(図示せず)を含む。転送エンジンは、実際のDMA転送/データ移動を実行するDMAエンジン514の部分であり、コマンドエンジンは、何れの動作を実行すべきかを伝えるために転送エンジンを駆動する。様々な実施形態では、パケットプロセッサは、アドバンストRISCマシン(ARM)、パイプラインステージがインターロックしないマイクロプロセッサ(MIPS)、シリアルデータプロセッサ(SDP)及び/又はバッファ管理、テーブル検索、キュー管理、ファブリック処理、及び、当該技術分野で知られているホスト処理機能を実行することが可能な他のRISCコア等の1つ以上の処理エンジンを含む。パケットプロセッサは、様々な実施形態において、DMAパケットが到着するのを待つマイクロコントローラである。パケットプロセッサは、DMAパケットを受信して読み出した後、DMAコントローラのバックエンドをオンにしてデータ転送を行う。
【0048】
様々な実施形態において、バックエンドコマンドエンジンは、他のシステム構成要素がDMA転送を開始するために通信するマイクロコントローラ(又は他のファームウェア、ステートマシン等)である。いくつかの実施形態では、コマンドエンジンは、複数の転送エンジンを駆動する単一のコマンドエンジンを含む。他の実施形態では、コマンドエンジンは、転送エンジンごとに単一のコマンドエンジンを含む。更に、DMAエンジン514は、コマンドエンジンが何れの動作を実行すべきかについて合意することを可能にするいくつかの分散アルゴリズムを含む。例えば、単一のDMAエンジン514が2つのコマンドエンジンを含む場合、各コマンドエンジンは、メモリ内で待機しているパケットがあることをハードウェアによって指示され得る。パケットを読み取った後、コマンドエンジンは、コマンドエンジンバス又は両方のコマンドエンジンがバリア又はロック等のソフトウェア同期を実行することを認識しているメモリ内の特別な位置等の同期機構を介して互いに同期する。様々な実施形態において、両方のコマンドエンジンはパケットを読み取る。その後、両方のコマンドエンジンは、コマンドを読み取り、互いに通信してデータ転送を分割する。理解されるように、コマンドエンジンは、(両方のコマンドエンジンがDMA転送のそれぞれの部分を実行し終えた後に)要求プロセッサ(例えば、CPU又はプロセッサコア508)にDMA転送が完了したことを伝える等のために、様々な場合に互いに同期する。
【0049】
グラフィックス処理積層型ダイチップレット504は、例示及び説明を容易にするためにGPU用語の特定のコンテキストで以下に説明されるが、様々な実施形態において、説明されるアーキテクチャは、本開示の範囲から逸脱することなく、様々なタイプの並列プロセッサ(
図2及び
図3を参照してより広範に上述したような)の何れにも適用可能であることを認識されたい。更に、DMAエンジン514は、
図5においてベースダイ502の上部に位置するように示されているが、当業者は、転送コマンドのハードウェア管理分割が、本開示の範囲から逸脱することなく、様々なシステム位置においてDMAエンジンによって実行され得ることを認識するであろう。例えば、いくつかの実施形態では、DMAエンジンは、(
図4に関してより詳細に上述したように)個々のコンピュートチップレットの上に位置する。同様に、システム及びデバイスは、ここではチップレットベースのシステムのコンテキストで説明されているが、転送コマンドのハードウェア管理分割は、モノリシックダイを含む複数のDMAエンジンを含む任意のシステム構成で実行され得る特定のアーキテクチャに限定されないことを当業者は認識するであろう。
【0050】
いくつかの実施形態では、DMAの要求は、プロセッサ508のうち1つ以上によって生成されたDMAコマンド(交換可能にパケットとも呼ばれる)を、DMAバッファ516(交換可能にDMA転送コマンドを保持するためのDMAキューとも呼ばれる)等のメモリマップIO(MMIO)位置に配置することによって処理される。様々な実施形態において、DMAバッファは、DMAエンジン514が(例えば、DRAMメモリに行く必要なく)DMAコマンドを読み出すことができるように、読み出し又は書き込み命令が転送されるハードウェア構造である。データ転送動作を実行するために、様々な実施形態において、DMAエンジン514は、命令(例えば、プロセッサ508によって生成されたDMA転送コマンド/データ転送要求)を受信する。例えば、いくつかの実施形態では、DMAエンジン514は、処理のためにDMAバッファ516からDMAコマンド(ディスクリプタとしても知られる)を取り出す。
【0051】
DMAバッファ516は、説明を容易にするためにベースダイ502に実装されるものとして
図5に示されているが、当業者であれば、DMAバッファ516は、本開示の範囲から逸脱することなく、本明細書に記載のシステム及びデバイスの様々な構成要素において実装可能であることを認識するであろう。例えば、いくつかの実施形態では、DMAバッファ516は、メモリモジュール512等のメインメモリ内に構成される。メモリ内のコマンドキューのその位置は、DMAエンジン514が転送コマンドを読み出すために行く場所である。
【0052】
図5に例示されるように、いくつかの実施形態において、DMAエンジン514A及び514Bは、一次DMAエンジン522からDMAジョブ通知518(DMAエンジン514Aへの第1のDMAジョブ通知518A及びDMAエンジン514Bへの第2のDMAジョブ通知518B)を受信する。一次DMAエンジン522は、DMAジョブのサブミッタ(例えば、サーバ、CPU等)と実際のデータ転送を実行する二次/リモートDMAエンジン(例えば、第1のDMAエンジン514A及び第2のDMAエンジン514B)との間を仲介する中央エージェントとして動作する。
【0053】
図4に関して上述したようないくつかの実施形態において、一次DMAエンジン522は、第1のDMAジョブ通知518A及び第2のDMAジョブ通知518Bを送信し、これらは同じ信号であり、1つ以上のDMAワークロード又はDMAジョブが形成され、メモリ(DMAバッファ516又はシステムメモリモジュール512等)に充填されたことを示す。DMA通知518の受信に応じて、DMAエンジン514A及び514Bは、DMAバッファ516からDMAジョブ記述520を各々独立してフェッチし、2つ以上の別々のエンティティ(例えば、2つのDMAエンジン514A及び514B)が各々同じパケットを読み取り、DMA転送をどのように実行するかを独立して判定する分散判定方式でDMAジョブワークロードを分割する。あるいは、他の実施形態において、一次DMAエンジン522は、DMAジョブ記述子をDMAエンジン514A及び514Bに直接送信し、バッファ516からのDMAジョブ記述の取り出しを指示するステップをスキップする。
【0054】
同じ位置(すなわち、DMAバッファ516)から同じDMAジョブ記述を独立してフェッチすることに加えて、DMAエンジン514A及び514Bの各々は、実行すべきDMA転送コマンドによって要求されるデータ転送の部分を独立して決定する。例えば、
図4に関連してより詳細に記載されているように、DMAエンジン514は、より近いDMAエンジン514(例えば、チップレット間相互接続をトラバースすることなく、同一ダイキャッシュ又はローカルDRAMを介してより近い)によるDMA転送パケット全体の分割及びDMA転送の実行(各DMAエンジンは、他のDMAエンジンと並列にその転送を実行する)に基づいてハードウェア管理による調整を実行する。
【0055】
いくつかの実施形態では、DMAエンジン514は、データ転送量に基づいて転送コマンドのパケットを分割し、複数のDMAエンジン間でワークロードをインターリーブする決定を介して、ハードウェア管理による調整を実行する。例えば、
図5に例示されるように、DMAジョブ記述520は、物理アドレスXから物理アドレスYへの1000メガバイトのデータの転送を指示する単一の転送コマンドである。一実施形態において、DMAエンジン514は、それらの間で合計DMA転送サイズを等しく分割する。例えば、デバイス500は、第1のDMAエンジン514AがグローバルID=0を有し、第2のDMAエンジン514BがグローバルID=1を有する2つのDMAエンジンを含む。したがって、デバイス500のハードウェアは、ハードウェア構成内のDMAエンジンの総数及び相対的な順序を識別する情報を含む。この例では、同じDMAジョブ記述520を読み出した後、第1のDMAエンジン514A(例えば、グローバルID=0)は、最初の500メガバイトのデータを転送することによってDMA転送の前半を実行する。同様に、第2のDMAエンジン415B(例えば、グローバルID=1)は、第2の500メガバイトのデータを転送することによって、DMA転送の後半を並列に実行する。
【0056】
当業者であれば、転送コマンドワークロードのこの分割は、本明細書に記載の特定の実施形態に限定されず、複数のDMAエンジン間のDMA転送及びDMAワークロードのインターリーブの任意のハードウェア管理された調整が、本開示の範囲から逸脱することなく実施可能であることを認識するであろう。非限定的な例として、いくつかの実施形態では、ハードウェア管理DMAワークロード分割の実施形態は、奇数/偶数バイト数分割(例えば、単一バイトベースで)、メモリチャネルアドレッシング、メモリページサイズ、メモリページ位置、完全にインターリーブされていない交互のデータブロック基準、又は、任意の他のタイプのインターリーブを含む。理解されるように、様々な実施形態において、特定のインターリーブのサイズは、システム内の特定の相互接続ハードウェア、メモリ転送サイズ及びキャッシュに依存する。インターリーブタイプ及び何れかのデータ分割タイプの最適化は、特定の実装のためのシステムマイクロアーキテクチャのタイプに応じて可変である。例えば、一実施形態では、インターリーブ分割サイズは、実行する必要があるページ変換の量を減らすために、転送サイズがページ変換サイズと一致するようにページ変換サイズに基づく。別の実施形態において、各DMAエンジン514は、アドレス範囲の代わりに転送される特定量のデータ(例えば、1000メガバイト)を割り当てられる。例えば、そのような実施形態において、各DMAエンジン514は、他のDMAエンジンと並列に1000メガバイトのデータを転送し、それによって、DMAジョブ記述520は、物理アドレスXから物理アドレスYへの1000メガバイトのデータの転送を指示する単一の転送コマンドであり、第2のDMAエンジン514Bがアイドル状態のままである間に第1のDMAエンジン514Aをオンにするだけである。
【0057】
別の実施形態において、DMAエンジン514Aへの第1のDMAジョブ通知518A及びDMAエンジン514B通知への第2のDMAジョブ通知518Bは、DMAエンジンがDMAバッファ516からDMAジョブ記述520をフェッチすべきであることを示すものではない。むしろ、一次DMAエンジン522は、単一のDMAジョブ(例えば、物理アドレスXから物理アドレスYへの1000メガバイトのデータの転送を指示するDMAジョブ記述520)を複数のより小さいジョブに分割し、異なるワークロードを各別々のDMAエンジン514に個別に送信する。したがって、各二次/リモートDMAエンジンは、元のDMAジョブ記述520の一部を見る。
【0058】
この例では、一次DMAエンジン522は、(二次/リモートDMAエンジンとしての)第1のDMAエンジン514Aに、第1の500メガバイトのデータを転送することによってDMA転送の前半を実行するように指示する第1のDMAジョブ通知518Aを送信することによって、DMAジョブ記述520を2つのより小さいワークロードに分割する。同様に、一次DMAエンジン522は、第2の500メガバイトのデータを転送することによってDMA転送の後半を実行するように(二次/リモートDMAエンジンとして)第2のDMAエンジン514Bに命令する第2のDMAジョブ通知518Bを送信する。各個々の二次/リモートDMAエンジンがDMAジョブのそれぞれの部分を終了した後、二次DMAエンジン514は、それらの作業完了を一次DMAエンジン522に通知する。その後、一次DMAエンジン522は、ジョブ全体が完了したことを通信する。
【0059】
この例では、個別のDMAエンジン514は、それに送信されるジョブの全体を実行する(例えば、DMAエンジン514は、各DMAエンジンがワークロードの何れの部分がローカルにそれに適用可能であるかを個別に判定する上述した実施形態とは対照的に、任意の裁量なしにそれに割り当てられたワークロードを実行することによって純粋なダミーとして機能する)。様々な実施形態において、一次DMAエンジン522は、各リモートDMAエンジンに利用可能な作業及び/又は利用可能な帯域幅又は他の処理リソースを割り当てるために一次DMAエンジンが利用可能なDMAエンジンの数を判定する。
【0060】
図6は、いくつかの実施形態による、DMA転送コマンドのハードウェア管理分割を実行する方法600のブロック図である。例示及び説明を容易にするために、方法600は、
図1~
図5のシステム及びデバイスを参照して、それらの例示的なコンテキストにおいて以下で説明される。しかしながら、方法600は、これらの例示的なコンテキストに限定されず、代わりに、異なる実施形態では、本明細書で提供されるガイドラインを使用して、様々な可能なシステム構成の何れかに対して採用される。
【0061】
方法600は、ブロック602において、第1のDMAエンジンによって、DMA転送コマンドにアクセスし、DMA転送コマンドによって要求されたデータ転送の第1の部分を判定することによって開始する。例えば、DMAエンジン414に関して
図4に示すように、DMAエンジン414A及び414Bは、(DMAバッファ416又はシステムメモリモジュール412のような)1つ以上のDMAワークロード又はDMAジョブが形成され、メモリに満たされたことを示すDMA通知418を受信する。上述したような様々な実施形態において、DMA通知418は、メモリ内にDMAディスクリプタが準備されていることを示すドアベルリング又は他の通知器を含む。DMA通知418の受信に応じて、DMAエンジン414A及び414Bは、DMAバッファ416からDMAジョブ記述420をそれぞれ独立してフェッチする。
【0062】
いくつかの実施形態において、DMAエンジン414A及び414Bの各々は、実行すべきDMA転送コマンドによって要求されるデータ転送の一部を独立して判定する。一実施形態では、DMAエンジン414A及び414Bの各々は、キャッシュプローブ要求422(例えば、読み出しプローブ及び/又は書き込みプローブ)をそれらのそれぞれのチップレット404のキャッシュメモリ410及びメインメモリ(例えば、メモリモジュール412)にブロードキャストすることによって、投機的DMA転送を発行する。キャッシュプローブ要求に応じて、各チップレット404のキャッシュメモリ410及びメインメモリは、要求しているDMAエンジンに1つ以上のリターンレスポンスを返す。例えば、DMA読み出しプローブの場合、キャッシュメモリ410は、要求されたデータがキャッシュメモリ410内で見つかったか否かを示すためにキャッシュヒット又はキャッシュミスを返すことができる。
【0063】
DMAエンジン514に関して
図5に例示されるような他の実施形態において、DMAエンジン514A及び514Bは、一次DMAエンジン522からDMAジョブ通知518(DMAエンジン514Aへの第1のDMAジョブ通知518A及びDMAエンジン514Bへの第2のDMAジョブ通知518B)を受信する。一次DMAエンジン522は、単一のDMAジョブ(例えば、物理アドレスXから物理アドレスYへの1000メガバイトのデータの転送を指示するDMAジョブ記述520)を複数のより小さいジョブに分割し、異なるワークロードを各別々のDMAエンジン514に個別に送信する。したがって、各二次/リモートDMAエンジンは、元のDMAジョブ記述520の一部を見る。
【0064】
方法600は、ブロック604に続き、DMA転送コマンドに少なくとも部分的に基づいて、第1のDMAエンジンによるデータ転送の第1の部分の転送を開始する。例えば、第1のDMAエンジン414Aに関して
図4に示すように、アドレスX及びYに関連付けられたデータの一部が第1のグラフィックス処理積層型ダイチップレット404Aのキャッシュメモリ410(例えば、L3又は何らかの最終レベルキャッシュ)に現在存在しているかどうかを判定するために、DMAエンジン414Aは、メモリモジュール412の前にキャッシュプローブ要求422をキャッシュメモリ410(キャッシュコントローラ[図示せず]を含む)にブロードキャストし、アドレスXに対するキャッシュヒット及びアドレスYに対するキャッシュミスを示す1つ以上のリターンレスポンスを受信する。
図4の例示的な実施形態では、物理アドレスX及び物理アドレスYに対するデータは、第2のグラフィックス処理積層型ダイチップレット404Bに直接接続されたメモリモジュール412に記憶される。第1のグラフィックス処理積層型ダイチップレット404Aのキャッシュメモリ410は、物理アドレスXに対する要求されたデータを既に含んでいるので、DMAエンジン414Aは、(異なるチップレットのキャッシュからデータを取り出すこととは対照的に)アドレスXに関連付けられたデータ転送の部分を実行する。
【0065】
DMAエンジン514に関して
図5に例示されるようないくつかの実施形態では、DMAエンジン514は、データ転送量に基づいて転送コマンドのパケットを分割し、複数のDMAエンジン間でワークロードをインターリーブする決定を介して、ハードウェア管理による調整を実行する。例えば、
図5に例示されるように、DMAジョブ記述520は、物理アドレスXから物理アドレスYへの1000メガバイトのデータの転送を指示する単一の転送コマンドである。一実施形態において、DMAエンジン514は、それらの間で総DMA転送サイズを等しく分割する。例えば、デバイス500は、第1のDMAエンジン514AがグローバルID=0を有し、第2のDMAエンジン514BがグローバルID=1を有する2つのDMAエンジンを含む。したがって、デバイス500のハードウェアは、ハードウェア構成内のDMAエンジンの総数及び相対的な順序を識別する情報を含む。この例では、同じDMAジョブ記述520を読み出した後、第1のDMAエンジン514A(例えば、グローバルID=0)は、最初の500メガバイトのデータを転送することによってDMA転送の前半を実行する。同様に、第2のDMAエンジン415B(例えば、グローバルID=1)は、第2の500メガバイトのデータを転送することによって、DMA転送の後半を並列に実行する。
【0066】
方法600は、ブロック606に続き、DMA転送コマンドに少なくとも部分的に基づいて、第2のDMAエンジンによるデータ転送の第2の部分の転送を開始する。例えば、第1のDMAエンジン414Aに関して
図4に示すように、アドレスX及びYに関連付けられたデータの一部が第2のグラフィックス処理積層型ダイチップレット404Bのキャッシュメモリ410内に現在存在しているかどうかを判定するために、DMAエンジン414Bは、同様に、キャッシュプローブ要求422をキャッシュメモリ410にブロードキャストし、アドレスXのキャッシュミス及びアドレスYのキャッシュミスを示す1つ以上のリターンレスポンスを受信する。キャッシュプローブ要求422が第1及び第2のチップレット404の両方のキャッシュメモリ410においてキャッシュミスをもたらすことにより、データ所有キャッシュメモリ410のDMAエンジン414Bは、物理アドレスYに関連付けられたデータのDMA転送を実行する。言い換えれば、データにより近いDMAエンジン414は、DMA転送を実行するエンジンである。
【0067】
ブロック608において、データ転送の第1の部分及び第2の部分を転送した後、DMA転送コマンドによって要求されたデータ転送の完了を知らせる指標(指示)が生成される。例えば、
図4に例示されるように、DMAエンジン414は、DMAエンジン414間の何らかの形式の同期後にプロセッサコア408へ割り込み信号を送信すること等によって、DMA転送が完了したことをシグナリングする。同様に、
図5に関して、二次DMAエンジン514は、個々の二次/リモートDMAエンジンがDMAジョブのそれぞれの部分を終了した後に、それらの作業完了を一次DMAエンジン522に通知する。その後、一次DMAエンジン522は、ジョブ全体が完了したことを通信する。
【0068】
したがって、本明細書で説明されるように、より近いDMAエンジンによるDMA転送パケット全体の分割及びDMA転送の実行(各DMAエンジンが他のDMAエンジンと並列にその転送を実行する)のハードウェア管理された調整は、DMA転送動作が全ての異なるチャネルにわたってメモリからデータを読み出す必要性を回避する(例えば、異なるチップレットに関連付けられたキャッシュメモリ又はDRAMからデータを読み出すことは、相互接続を通過してエネルギー性能ヒットを取るトラフィックを必要とする)。例えば、当業者は、往復DMAトラフィックが他のトラフィックと競合し、電力を消費することを認識するであろう。したがって、DMAコマンドのハードウェア管理分割は、他のトラフィック使用のための電力の低減及び帯域幅の増加をもたらす。
【0069】
本明細書に開示されるように、いくつかの実施形態において、方法は、DMA転送コマンドに少なくとも部分的に基づいて、第1のDMAエンジンによるデータ転送の第1の部分の転送を開始すること、及び、DMA転送コマンドに少なくとも部分的に基づいて、第2のDMAエンジンによるデータ転送の第2の部分の転送を開始することを含む。一態様において、方法は、第1のDMAエンジンによって、DMA転送コマンドがシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信すること、及び、第1のDMAエンジンによって、DMAバッファからDMA転送コマンドをフェッチすることを含む。別の態様では、第1のDMAエンジンによるデータ転送の第1の部分の転送を開始することは、第1のDMAエンジンによって、キャッシュプローブ要求をキャッシュメモリへ送信すること、及び、キャッシュメモリ内のキャッシュヒットを示すリターンレスポンスの受信に基づいて、データ転送の第1の部分を転送することを含む。更に別の態様では、第2のDMAエンジンによるデータ転送の第2の部分の転送を開始することは、第2のDMAエンジンによって、キャッシュプローブ要求をキャッシュメモリへ送信すること、及び、キャッシュメモリ内のキャッシュミスを示すリターンレスポンスの受信に基づいて、オーナー(所有者)メインメモリからデータ転送の第2の部分を転送することを含む。
【0070】
1つの態様では、データ転送の第1の部分を判定することは、第1のDMAエンジンと第2のDMAエンジンとの間で総DMA転送サイズをインターリーブすることを更に含む。別の態様では、この方法は、一次DMAエンジンにおいて、DMA転送コマンドを受信することと、DMA転送コマンドを複数のより小さなワークロードに分割することと、を含む。更に別の態様では、方法は、一次DMAエンジンから、複数のより小さいワークロードのうち何れかを受信することを含む。
【0071】
いくつかの実施形態では、プロセッサデバイスは、ベース集積回路(IC)ダイであって、ベースICダイの上に3D積層された複数の処理積層型ダイチップレットを含み、処理積層型ダイチップレットを互いに通信可能に結合するチップ間データファブリックを含む、ベースICダイと、ベースICダイの上に3D積層された複数のDMAエンジンであって、複数のDMAエンジンの各々は、DMA転送コマンドによって要求されたデータ転送の一部を実行するように構成されている、DMAエンジンと、を含む。一態様において、複数のDMAエンジンの各々は、複数の転送エンジンを駆動する単一のコマンドエンジンを含む。別の態様では、複数のDMAエンジンの各々は、DMA転送コマンドはシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信するように構成される。更に別の態様では、複数のDMAエンジンのうち第1のDMAエンジンは、第1の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、データ転送の第1の部分を転送するように構成される。更に別の態様では、複数のDMAエンジンのうち第2のDMAエンジンは、第2の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信することに基づいてオーナー(所有者)メインメモリからデータ転送の第2の部分を転送するように構成される。
【0072】
一態様において、複数のDMAエンジンの各々は、複数のDMAエンジン間で総DMA転送サイズをインターリーブすることによって、データ転送の部分を独立して判定するように構成される。別の態様では、プロセッサデバイスは、DMA転送コマンドを受信し、DMA転送コマンドを複数のより小さいワークロードに分割するように構成された一次DMAエンジンを含む。更に別の態様では、一次DMAエンジンは、複数のより小さいワークロードのうち異なるワークロードを複数のDMAエンジンの各々に送信するように更に構成される。
【0073】
いくつかの実施形態では、システムは、並列プロセッサマルチチップモジュールに通信可能に結合されたホストプロセッサを備え、並列プロセッサマルチチップモジュールは、ベース集積回路(IC)ダイであって、ベースICダイの上に3D積層された複数の処理積層型ダイチップレットを含み、処理積層型ダイチップレットを互いに通信可能に結合するチップ間データファブリックを含む、ベースICダイと、ベースICダイの上に3D積層された複数のDMAエンジンであって、複数のDMAエンジンの各々は、DMA転送コマンドによって要求されたデータ転送の一部を実行するように構成されている、DMAエンジンと、を含む。一態様において、システムは、DMA転送コマンドを受信し、DMA転送コマンドを複数のより小さいワークロードに分割するように構成された一次DMAエンジンであって、複数のより小さいワークロードのうち異なるワークロードを複数のDMAエンジンの各々に送信するように更に構成された一次DMAエンジンを含む。別の態様では、複数のDMAエンジンの各々は、複数のDMAエンジン間で総DMA転送サイズをインターリーブすることによって、データ転送の部分を独立して判定するように構成される。更に別の態様では、複数のDMAエンジンのうち第1のDMAエンジンは、第1の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、データ転送の第1の部分を転送するように構成される。更に別の態様では、複数のDMAエンジンのうち第2のDMAエンジンは、第2の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信することに基づいてオーナー(所有者)メインメモリからデータ転送の第2の部分を転送するように構成される。
【0074】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0075】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0076】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0077】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2024-06-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
DMA転送コマンドに少なくとも部分的に基づいて、第1のDMAエンジンによるデータ転送の第1の部分の転送を開始することと
前記DMA転送コマンドに少なくとも部分的に基づいて、第2のDMAエンジンによる前記データ転送の第2の部分の転送を開始することと、を含む、
方法。
【請求項2】
前記第1のDMAエンジンが、前記DMA転送コマンドがシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信することと、
前記第1のDMAエンジンが、前記DMAバッファから前記DMA転送コマンドをフェッチすることと、を含む、
請求項1の方法。
【請求項3】
前記第1のDMAエンジンによる前記データ転送の前記第1の部分の転送を開始することは、
前記第1のDMAエンジンが、キャッシュプローブ要求をキャッシュメモリに送信することと、
前記キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、前記データ転送の前記第1の部分を転送することと、を含む、
請求項2の方法。
【請求項4】
前記第2のDMAエンジンによる前記データ転送の前記第2の部分の転送を開始することは、
前記第2のDMAエンジンが、キャッシュプローブ要求をキャッシュメモリに送信することと、
前記キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信したことに基づいて、オーナーメインメモリから前記データ転送の前記第2の部分を転送することと、を含む、
請求項2又は3の方法。
【請求項5】
前記データ転送の前記第1の部分を判定することは、前記第1のDMAエンジンと前記第2のDMAエンジンとの間で総DMA転送サイズをインターリーブすることを含む、
請求項1の方法。
【請求項6】
一次DMAエンジンにおいて、前記DMA転送コマンドを受信し、前記DMA転送コマンドを複数のより小さいワークロードに分割することを含む、
請求項1の方法。
【請求項7】
前記一次DMAエンジンから前記複数のより小さいワークロードのうち何れかを受信することを含む、
請求項6の方法。
【請求項8】
プロセッサデバイスであって、
ベース集積回路(IC)ダイであって、前記ベースICダイの上に3D積層された複数の処理積層型ダイチップレットを含み、前記複数の処理積層型ダイチップレットを互いに通信可能に結合するチップ間データファブリックを含む、ベースICダイと、
前記ベースICダイの上に3D積層された複数のDMAエンジンであって、DMA転送コマンドによって要求されたデータ転送の一部を実行するようにそれぞれ構成された複数のDMAエンジンと、を備える、
プロセッサデバイス。
【請求項9】
前記複数のDMAエンジンの各々は、複数の転送エンジンを駆動する単一のコマンドエンジンを含む、
請求項8のプロセッサデバイス。
【請求項10】
前記複数のDMAエンジンの各々は、前記DMA転送コマンドがシステムメモリ内のDMAバッファに記憶されていることを示すDMA通知を受信するように構成されている、
請求項8又は9のプロセッサデバイス。
【請求項11】
前記複数のDMAエンジンのうち第1のDMAエンジンは、第1の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリにキャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュヒットを示すリターンレスポンスを受信することに基づいて、前記データ転送の第1の部分を転送するように構成されている、
請求項8のプロセッサデバイス。
【請求項12】
前記複数のDMAエンジンのうち第2のDMAエンジンは、第2の処理積層型ダイチップレットに通信可能に結合されたキャッシュメモリに前記キャッシュプローブ要求を送信し、前記キャッシュメモリにおけるキャッシュミスを示すリターンレスポンスを受信することに基づいて、オーナーメインメモリから前記データ転送の第2の部分を転送するように構成されている、
請求項11のプロセッサデバイス。
【請求項13】
前記複数のDMAエンジンの各々は、前記複数のDMAエンジン間で総DMA転送サイズをインターリーブすることによって、前記データ転送の部分を独立して判定するように構成されている、
請求項8のプロセッサデバイス。
【請求項14】
前記DMA転送コマンドを受信し、前記DMA転送コマンドを複数のより小さいワークロードに分割するように構成された一次DMAエンジンを備える、
請求項8のプロセッサデバイス。
【請求項15】
前記一次DMAエンジンは、前記複数のより小さいワークロードのうち異なるワークロードを前記複数のDMAエンジンの各々に送信するように構成されている、
請求項14のプロセッサデバイス。
【国際調査報告】