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

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

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

特許7603051チップレット統合型機械学習アクセラレータ
<>
  • 特許-チップレット統合型機械学習アクセラレータ 図1
  • 特許-チップレット統合型機械学習アクセラレータ 図2
  • 特許-チップレット統合型機械学習アクセラレータ 図3
  • 特許-チップレット統合型機械学習アクセラレータ 図4
  • 特許-チップレット統合型機械学習アクセラレータ 図5
  • 特許-チップレット統合型機械学習アクセラレータ 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-11
(45)【発行日】2024-12-19
(54)【発明の名称】チップレット統合型機械学習アクセラレータ
(51)【国際特許分類】
   G06F 12/0888 20160101AFI20241212BHJP
   G06F 12/0893 20160101ALI20241212BHJP
   G06F 12/0875 20160101ALI20241212BHJP
   G06F 12/0811 20160101ALI20241212BHJP
   G06N 20/00 20190101ALI20241212BHJP
【FI】
G06F12/0888
G06F12/0893
G06F12/0875 104
G06F12/0811
G06N20/00
【請求項の数】 20
(21)【出願番号】P 2022502435
(86)(22)【出願日】2020-07-21
(65)【公表番号】
(43)【公表日】2022-09-26
(86)【国際出願番号】 US2020042931
(87)【国際公開番号】W WO2021016273
(87)【国際公開日】2021-01-28
【審査請求日】2023-07-06
(31)【優先権主張番号】62/877,241
(32)【優先日】2019-07-22
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/877,249
(32)【優先日】2019-07-22
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/933,863
(32)【優先日】2020-07-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スワプニール ピー. サカルシート
(72)【発明者】
【氏名】アンドリュー エス. ポミャノフスキ
(72)【発明者】
【氏名】マキシム ヴィー. カザコフ
(72)【発明者】
【氏名】ヴィニート ゴエル
(72)【発明者】
【氏名】ミリンド エヌ. ネムレカール
(72)【発明者】
【氏名】スカイラー ジョナソン サレハ
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2018-092562(JP,A)
【文献】特開2015-064863(JP,A)
【文献】特表2012-515992(JP,A)
【文献】特開2005-339557(JP,A)
【文献】国際公開第2018/034875(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08-12/0897
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
第1のチップレットの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記第1のチップレットの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記第1のチップレット内の機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、を含む、
方法。
【請求項2】
前記キャッシュ操作を実行することは、前記第1のチップレットとは別のダイ上のプロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項1の方法。
【請求項3】
前記プロセッシングコアに対してキャッシュ操作を実行することは、前記プロセッシングコアのキャッシュからエビクトされたキャッシュラインを記憶することと、前記プロセッシングコアのキャッシュにおけるミスに応じて、前記プロセッシングコアにキャッシュラインを提供することと、のうち1つ以上を含む、
請求項2の方法。
【請求項4】
前記第1の部分をキャッシュとして構成すること、又は、前記第1のサブ部分を直接アクセス可能なメモリとして構成することは、前記第1のチップレットとは別のダイ上のプロセッシングコアのスケジューラ又は計算ユニットからの要求に応じて実行される、
請求項1の方法。
【請求項5】
前記第1のチップレットとは別のプロセッサコアの要求に応じて、直接アクセス可能なメモリとして構成された前記第1のサブ部分にデータを記憶することをさらに含む、
請求項1の方法。
【請求項6】
前記機械学習操作を実行することは、前記データを入力として消費する機械学習操作を実行することを含む、
請求項5の方法。
【請求項7】
前記機械学習操作は、行列乗算演算を含む、
請求項1の方法。
【請求項8】
前記第1の部分は、前記第1のチップレットの内部メモリのうち第1の量のメモリを含み、
前記方法は、前記第1の部分を介して前記キャッシュ操作を実行する間に、直接アクセス可能なメモリとして構成された前記内部メモリの第2の部分で機械学習操作を実行することをさらに含む、
請求項1の方法。
【請求項9】
前記第1のチップレットに対して機械学習操作を実行するように要求するプロセッシングコアから物理的に分離している第2のチップレットにデータを送信すること、又は、前記第2のチップレットからデータを受信することをさらに含み、前記データは、前記プロセッシングコアを流れない、前記第1のチップレットと前記第2のチップレットとの間の直接接続を介して送信又は受信される、
請求項1の方法。
【請求項10】
1つ以上の機械学習アクセラレータと、
チップレットメモリと、を備え、
前記1つ以上の機械学習アクセラレータ及び前記チップレットメモリは、
前記チップレットメモリの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記チップレットメモリの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記1つ以上の機械学習アクセラレータのうち何れかの機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、
を行うように構成されている、
デバイス。
【請求項11】
前記キャッシュ操作を実行することは、前記チップレットメモリとは別のダイ上のプロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項10のデバイス。
【請求項12】
前記プロセッシングコアに対してキャッシュ操作を実行することは、前記プロセッシングコアのキャッシュからエビクトされたキャッシュラインを記憶することと、前記プロセッシングコアのキャッシュにおけるミスに応じて、前記プロセッシングコアにキャッシュラインを提供することと、のうち1つ以上を含む、
請求項11の方法。
【請求項13】
前記第1の部分をキャッシュとして構成すること、又は、前記第1のサブ部分を直接アクセス可能なメモリとして構成することは、前記チップレットメモリとは別のダイ上のプロセッシングコアのスケジューラ又は計算ユニットからの要求に応じて実行される、
請求項10のデバイス。
【請求項14】
前記チップレットメモリは、前記チップレットメモリとは別のプロセッサコアの要求に応じて、直接アクセス可能なメモリとして構成された前記第1のサブ部分にデータを記憶するようにさらに構成されている、
請求項10のデバイス。
【請求項15】
前記機械学習操作を実行することは、前記データを入力として消費する機械学習操作を実行することを含む、
請求項14の方法。
【請求項16】
前記機械学習操作は、行列乗算演算を含む、
請求項10のデバイス。
【請求項17】
前記第1の部分は、第1のチップレットの前記チップレットメモリのうち第1の量のメモリを含み、
前記1つ以上の機械学習アクセラレータは、前記第1の部分を介してキャッシュ操作が実行されている間に、直接アクセス可能なメモリとして構成された前記チップレットメモリの第2の部分で機械学習操作を実行するように構成されている、
請求項10のデバイス。
【請求項18】
前記1つ以上の機械学習アクセラレータ及び前記チップレットメモリは、第1のチップレットに対して機械学習操作を実行するように要求するプロセッシングコアから物理的に分離している第2のチップレットにデータを送信すること、又は、前記第2のチップレットからデータを受信するようにさらに構成されており、前記データは、前記プロセッシングコアを流れない、前記第1のチップレットと前記第2のチップレットとの間の直接接続を介して送信又は受信される、
請求項10のデバイス。
【請求項19】
第1のチップレットメモリと、1つ以上の機械学習アクセラレータの第1のセットと、を含む第1のチップレットと、
第2のチップレットと、
プロセッシングコアと、を備え、
前記第1のチップレットは、
前記第1のチップレットメモリの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記第1のチップレットメモリの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記1つ以上の機械学習アクセラレータのうち何れかの機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、
を行うように構成されている、
デバイス。
【請求項20】
前記キャッシュ操作を実行することは、前記プロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項19のデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本願は、2019年7月22日出願の「CHIPLET APPROACH FOR COUPLING GPU WITH MACHINE LEARNING ACCELERATION AT HIGH POWER EFFICIENCY」と題する米国仮特許出願第62/877,241号の優先権を主張し、その全体が、参照することによって本明細書に組み込まれる。本願は、2019年7月22日出願の「HIGH BW INTER-CONNECTED CHIPLETS AND GPU FOR HIGH PERFORMANCE GAMING AND MACHINE LEARNING WORKLOADS」と題する米国仮特許出願第62/877,249号の優先権を主張し、その全体が、参照することによって本明細書に組み込まれる。本願は、2020年7月20日出願の「CHIPLET-INTEGRATED MACHINELEARNING ACCELERATORS」と題する米国特許出願第16/933,863号の優先権を主張し、その全体が、参照することによって本明細書に組み込まれる。
【背景技術】
【0002】
機械学習は、急速に進歩している分野である。トレーニングや推論等の機械学習操作のためのハードウェアの改良が絶えず行われている。
【0003】
添付図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
図1】本開示の1つ以上の機能を実装することができる例示的なデバイスのブロック図である。
図2】一例による、図1のデバイスの詳細を示す図である。
図3図2に示されたグラフィックス処理パイプラインの更なる詳細を示すブロック図である。
図4】APDのブロック図を表す図であり、一例による、キャッシュ/機械学習アクセラレータチップレットの詳細を示す図である。
図5】一例による、キャッシュ/機械学習アクセラレータチップレットの詳細を示す図である。
図6】一例による、チップレットを使用して機械学習操作を実行する方法のフロー図である。
【発明を実施するための形態】
【0005】
機械学習操作を実行するための技術が提供される。本技術は、第1のチップレットの第1の部分をキャッシュとして構成することと、第1の部分を介してキャッシュ操作を実行することと、チップレットの第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、第1のチップレット内の機械学習アクセラレータによって、第1のサブ部分で機械学習操作を実行することと、を含む。
【0006】
図1は、本開示の1つ以上の機能を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ、又は、他のコンピューティングデバイスのうち何れかであってもよいが、これらに限定されない。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。何れの入力ドライバ112も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具現化され、入力デバイス108を制御する目的(例えば、動作制御、入力ドライバ112からの入力の受信、及び、入力ドライバ112へのデータ提供)を果たす。同様に、何れの出力ドライバ114も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具現化され、出力デバイスを制御する目的(例えば、動作制御、出力ドライバ114からの入力の受信、及び、出力ドライバ114へのデータ提供)を果たす。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0007】
様々な代替案において、プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替案において、メモリ104は、プロセッサ102と同じダイ上に配置されるか、プロセッサ102とは別に配置される。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
【0008】
ストレージ106は、固定式又は着脱可能なストレージ(例えば、限定されないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカー、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0009】
入力ドライバ112及び出力ドライバ114は、それぞれ入力デバイス108及び出力デバイス110とインターフェースして駆動するように構成された1つ以上のハードウェア、ソフトウェア、及び/又は、ファームウェアの構成要素を含む。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。出力ドライバ114は、ディスプレイデバイス118に結合されたアクセラレーテッド処理デバイス(Accelerated Processing Device:APD)116を含み、APD116は、いくつかの例では、ディスプレイデバイス118(物理的なディスプレイデバイス、又は、出力を表示するためにリモートディスプレイプロトコルを使用するシミュレートされたデバイス)に結合されている。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、計算コマンド及びグラフィックスレンダリングコマンドを処理し、ピクセル出力を表示のためにディスプレイデバイス118に提供するように構成されている。以下にさらに詳細に説明するように、APD116は、単一命令複数データ(Single-Instruction Multiple-Data:SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含む。従って、本明細書では、様々な機能が、APD116によって又はAPD116と組み合わせて実行されるものとして説明されているが、様々な代替案において、APD116によって実行されるものとして説明されている機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、ディスプレイデバイス118にグラフィック出力を提供するように構成されている同様の機能を有する他のコンピューティングデバイスによって追加的又は代替的に実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムは、本明細書で説明する機能を実行するように構成され得ることが企図される。あるいは、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが企図される。
【0010】
図2は、一例による、デバイス100とAPD116の詳細を示す図である。プロセッサ102(図1)は、オペレーティングシステム120、ドライバ122及びアプリケーション126を実行し、他のソフトウェアを代替的又は追加的に実行することもできる。オペレーティングシステム120は、ハードウェアリソースの管理、サービス要求の処理、プロセス実行のスケジューリング及び制御、並びに、他の操作の実行等のように、デバイス100の様々な態様を制御する。APDドライバ122は、APD116の動作を制御して、グラフィックスレンダリングタスク又は他の作業等のタスクを、処理のためにAPD116に送信する。また、APDドライバ122は、APD116の処理コンポーネント(以下にさらに詳細に説明するSIMDユニット138等)によって実行されるプログラムをコンパイルするジャストインタイムコンパイラを含む。
【0011】
APD116は、並列処理に適し得るグラフィックス操作及び非グラフィックス操作等の選択された機能のコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル演算、幾何学的計算、及び、ディスプレイデバイス118への画像のレンダリング等のグラフィックスパイプライン操作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する操作等のように、グラフィックス操作に直接関係しない計算処理操作を実行する。いくつかの例では、これらの計算処理操作は、SIMDユニット138上で計算シェーダを実行することによって実行される。
【0012】
APD116は、計算ユニット132を含み、これらは、プロセッサ102(又は、別のユニット)の要求に応じてSIMDパラダイムに従って並列に操作を実行するように構成された1つ以上のSIMDユニット138を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより同じプログラムを実行するが、異なるデータでそのプログラムを実行することができるというパラダイムである。一例では、各SIMDユニット138は、16レーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測によってレーンをオフにすることができる。予測は、分岐制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが個々のレーンで実行される計算に基づいている条件分岐等の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンを予測し、異なる制御フローパスを連続実行することで、任意の制御フローを可能にする。
【0013】
計算ユニット132における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に(又は、部分的に同時に、部分的に連続して)実行され得る。1つ以上のウェーブフロントが「ワークグループ」に含まれ、ワークグループは、同じプログラムを実行するように指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成する各ウェーブフロントを実行することによって実行され得る。別の方法では、ウェーブフロントは、単一のSIMDユニット138上で実行されるか、様々なSIMDユニット138上で実行される。ウェーブフロントは、単一のSIMDユニット138で同時に(又は、疑似的に同時に)実行することができるワークアイテムの最大の集合と考えることができる。「疑似的に同時」な実行は、SIMDユニット138のレーン数よりも大きいウェーブフロントの場合に発生する。このような状況では、ウェーブフロントが複数のサイクルで実行され、ワークアイテムの様々な集合が様々なサイクルで実行される。APDスケジューラ136は、計算ユニット132及びSIMDユニット138上で様々なワークグループ及びウェーブフロントをスケジューリングすることに関連する動作を実行するように構成されている。
【0014】
計算ユニット132によってもたらされる並列性は、ピクセル値計算、頂点変換、及び、他のグラフィックス操作等のグラフィックス関連操作に適している。従って、場合によっては、プロセッサ102からグラフィックス処理コマンドを受け入れるグラフィックスパイプライン134は、並列実行のために計算ユニット132に計算タスクを提供する。
【0015】
また、計算ユニット132は、グラフィックスに関連しない、又は、グラフィックスパイプライン134の「通常の」操作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の操作のために実行される処理を補完するために実行されるカスタム操作)を実行するために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムをAPD116に送信して実行させる。
【0016】
図3は、図2に示すグラフィックス処理パイプライン134の追加の詳細を示すブロック図である。グラフィックス処理パイプライン134は、各々がグラフィックス処理パイプライン134の特定の機能を実行するステージを含む。各ステージは、プログラム可能な計算ユニット132で実行されるシェーダプログラムとして部分的若しくは完全に実装されるか、又は、計算ユニット132の外部の固定機能の非プログラム可能ハードウェアとして部分的若しくは完全に実装される。
【0017】
入力アセンブラステージ302は、ユーザが充填したバッファ(例えば、アプリケーション126等のように、プロセッサ102によって実行されるソフトウェアの要求で充填されたバッファ)からプリミティブデータを読み取り、パイプラインの残りの部分が使用するためにデータをプリミティブにアセンブルする。入力アセンブラステージ302は、ユーザが充填したバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラステージ302は、パイプラインの残りの部分で使用するために、アセンブルされたプリミティブをフォーマットする。
【0018】
頂点シェーダステージ304は、入力アセンブラステージ302によってアセンブルされたプリミティブの頂点を処理する。頂点シェーダステージ304は、変換、スキニング、モーフィング、頂点毎のライティング等のように、頂点毎の様々な操作を実行する。変換操作は、頂点の座標を変換するための様々な操作を含む。これらの操作は、頂点座標を変更するモデリング変換、ビュー変換、投影変換、パースペクティブ分割(perspective division)及びビューポート変換のうち1つ以上を含み、非座標属性を変更する他の操作も含む。
【0019】
頂点シェーダステージ304は、1つ以上の計算ユニット132で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前生成されたプログラムに基づいている。ドライバ122は、このようなコンピュータプログラムをコンパイルして、計算ユニット132での実行に適したフォーマットを有する頂点シェーダプログラムを生成する。
【0020】
ハルシェーダステージ306、テッセレータステージ308及びドメインシェーダステージ310は、連携してテッセレーションを実行し、テッセレーションは、プリミティブを細分化することにより、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダステージ306は、入力プリミティブに基づいてテッセレーションのためのパッチを生成する。テッセレータステージ308は、パッチ用のサンプルのセットを生成する。ドメインシェーダステージ310は、パッチのサンプルに対応する頂点のための頂点位置を計算する。ハルシェーダステージ306及びドメインシェーダステージ310は、頂点シェーダステージ304と同様に、ドライバ122によってコンパイルされた、計算ユニット132上で実行されるシェーダプログラムとして実装することができる。
【0021】
ジオメトリシェーダステージ312は、プリミティブ毎に頂点操作を実行する。ジオメトリシェーダステージ312は、ポイントスプライト拡張(point sprite expansion)、動的パーティクルシステム操作(dynamic particle system operations)、ファーフィン生成(fur-fin generation)、シャドウボリューム生成、キューブマップへのシングルパスレンダリング(single pass render-to-cubemap)、プリミティブ毎のマテリアルスワッピング、プリミティブ毎のマテリアル設定等の操作を含む、様々な異なるタイプの操作を実行することができる。場合によっては、ドライバ122によってコンパイルされ、計算ユニット132上で実行されるジオメトリシェーダプログラムが、ジオメトリシェーダステージ312の操作を実行する。
【0022】
ラスタライザステージ314は、ラスタライザステージ314の上流で生成された単純なプリミティブ(三角形)を受け入れてラスタライズする。ラスタライズは、何れのスクリーンピクセル(又は、サブピクセル)が特定のプリミティブによってカバーされるかを決定することを含む。ラスタライズは、固定機能ハードウェアによって実行される。
【0023】
ピクセルシェーダステージ316は、上流で生成されたプリミティブ及びラスタライズの結果に基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダステージ316は、テクスチャメモリからテクスチャを適用することができる。ピクセルシェーダステージ316の操作は、ドライバ122によってコンパイルされ、計算ユニット132上で実行されるピクセルシェーダプログラムによって実行される。
【0024】
出力マージャステージ318は、ピクセルシェーダステージ316からの出力を受け入れ、これらの出力をフレームバッファにマージし、z検定及びアルファブレンディング等の操作を実行して、スクリーンピクセルの最終的な色を決定する。
【0025】
グラフィックス処理パイプライン134を含みグラフィックスレンダリングを実行することができるAPD116の実装が開示されている。しかしながら、本開示の教示は、グラフィックス処理パイプライン134を含まないか、このようなパイプラインを利用してグラフィックスレンダリングを実行しないAPD116の実装に及ぶ。
【0026】
図4は、APD116のブロック図を表しており、一例によるキャッシュ/機械学習アクセラレータチップレット404の詳細を示している。APD116は、図2に関して説明したAPDスケジューラ136及び計算ユニット132を含む。また、APD116は、APDからキャッシュへのインターフェース406を介してAPDコア402に結合され、外部インターフェース410を介して他のメモリ(例えば、システムメモリ104又はAPD116のメモリ)に結合される1つ以上のキャッシュ及び機械学習アクセラレータチップレット404を含む。いくつかの実施形態では、1つ以上のチップレット404は、1つ以上のチップレット内インターフェース408を介して1つ以上の他のチップレット404に接続されている。
【0027】
キャッシュ/機械学習アクセラレータチップレット404は、データを記憶するように構成されたメモリモジュールと、機械学習アクセラレータと、を含む。いくつかの実施形態では、機械学習アクセラレータは、入力行列に対して行列乗算を実行して出力結果を提供するように構成された行列乗算回路を含む。
【0028】
いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402とは別の物理的ダイである。いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402に使用される製造プロセスよりも大規模な製造プロセスで製造される。製造プロセスとは、デバイス機能が製造される規模を指す。製造プロセスは、当該技術分野において「プロセスノード」と呼ばれることがある。いくつかの例示的な製造プロセスは、10ナノメートル(nm)プロセス及び7nmプロセスを含む。APDコア402と比較してチップレット404に対してより大きな製造プロセス規模を使用することにより、APDコア402の高性能を依然として提供しながら、APDコア402と比較して、チップレット404をより低コスト及びより高い歩留まりで製造することができる。
【0029】
キャッシュ/機械学習アクセラレータチップレット404のメモリモジュールは、APDコア402の操作のためのキャッシュメモリとして使用されることと、機械学習アクセラレータの操作のための入力オペランド及び出力結果を記憶するメモリとして使用されることと、の間で切り替え可能である。より具体的には、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402のキャッシュメモリとして動作することと、例えば、キャッシュ/機械学習アクセラレータチップレットの機械学習アクセラレータ404によってアクセス可能な直接アクセス可能なメモリ(directly accessible memory)として動作することと、の間で構成可能である。いくつかの実施形態では、APDスケジューラ136及び計算ユニット132のうち何れか又は両方は、キャッシュ/機械学習アクセラレータチップレット404の任意の部分に、キャッシュとして又は直接アクセス可能なメモリとして動作するように指示することができる。
【0030】
いくつかの実施形態では、APDコア402は、キャッシュ階層の少なくとも一部を形成する1つ以上のキャッシュメモリを含む。また、メモリ階層は、キャッシュ/機械学習アクセラレータチップレット404のキャッシュメモリを含む。いくつかの例では、キャッシュ/機械学習アクセラレータチップレット404のキャッシュメモリは、APDコア402のキャッシュ階層の一部に対してレベル3のキャッシュとして機能する。
【0031】
いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402と、キャッシュ階層よりもメモリ階層の上位にあるメモリ(APD116専用のメモリ又はシステムメモリ104)と、の間の物理的インターフェースとしても機能する。言い換えれば、キャッシュ/機械学習アクセラレータチップレット404は、キャッシュ階層の或るレベルとして機能し、その階層の他のレベル(APDコア402の下位レベルと、APD116又はシステムメモリ104内のメモリ等の上位レベルと、を含む)と物理的にインターフェースするメモリを含む。図4は、外部インターフェース410が「メモリに」接続されていることを示していることに留意されたい。様々な例において、言及される「メモリ」は、APD116又はシステムメモリ104の汎用(例えば、非キャッシュ)メモリである。従って、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402内のキャッシュ階層の部分とメモリとの間の物理的インターフェースとして機能する。
【0032】
図5は、一例による、キャッシュ/機械学習アクセラレータチップレット404の詳細を示す図である。図示するように、キャッシュ/機械学習アクセラレータチップレット404は、複数の機械学習アクセラレータ502と、チップレットメモリ504と、を含む。いくつかの実施形態では、機械学習アクセラレータ502は、行列乗算演算を実行するように構成されたハードウェア回路である。
【0033】
行列乗算演算は、完全接続層(fully connected layers)や畳み込み層のための層入力から層出力を生成する操作を実行する等のように、機械学習操作で一般的に使用されている。様々な例において、APDスケジューラ136又は計算ユニット132の何れか又は両方は、キャッシュ/機械学習アクセラレータチップレット404の何れかにコマンドを送信し、データをチップレットメモリ504にフェッチし、結果を出力するために、フェッチされたデータに対して、機械学習アクセラレータ502を介して行列乗算演算を実行することが可能である。様々な例では、キャッシュ/機械学習アクセラレータチップレット404は、行列乗算の結果をチップレットメモリ504に記憶する。様々な例では、キャッシュ/機械学習アクセラレータチップレット404は、この結果をAPDコア402等の外部エンティティ、APD116のメモリ又はメモリ104に送信する。
【0034】
いくつかの例では、ニューラルネットワークは、相互接続された一連の層として実装される。各層は、異なる層又はニューラルネットワークへの入力から、1つ以上の入力を受け取る。異なる層の計算は、デバイス100の異なるエンティティによって実行されることが可能である。一例では、キャッシュ/機械学習アクセラレータチップレット404は、行列乗算又は畳み込み演算を実行し、APDコア402(例えば、計算ユニット132)は、アクティブ化、バッチ正規化又は他の演算等のように、ニューラルネットワークを実装するための他の計算を実行する。いくつかの例では、APDスケジューラ136又はプロセッサ102等のコーディネータは、ニューラルネットワークでトレーニング又は推論を実行するための様々な操作を実行するように、これらの異なるエンティティに命令する。例えば、コーディネータは、キャッシュ/機械学習アクセラレータチップレット404に対して、行列乗算を必要とする層の入力データに対して行列乗算演算を実行するように指示し、計算ユニット132に対して、このような他の操作を利用する層のニューラルネットワークに対して他の操作を実行するように指示する。
【0035】
APDスケジューラ136は、異なる計算ユニット132及びキャッシュ/機械学習アクセラレータチップレット404上で同時に実行するための多くの異なるタスクをスケジュールすることができる。一例では、APDスケジューラ136は、計算ユニット132で実行するためにシェーダプログラムをスケジュールすることができ、その一方で、キャッシュ/機械学習アクセラレータチップレット404で実行するための操作をスケジュールすることができる。図5に示すように、チップレットメモリ504は、キャッシュ506として構成されたメモリと直接アクセス可能なメモリ508との間で構成可能である。より具体的には、プロセッサ102、APDスケジューラ136又は計算ユニット132等のエンティティは、特定のキャッシュ/機械学習アクセラレータチップレット404のチップレットメモリ504の特定の部分が、キャッシュ506として、又は、直接アクセス可能なメモリ508として構成されるように要求する。これに応じて、キャッシュ/機械学習アクセラレータチップレット404は、要求された部分をキャッシュ506又は直接アクセス可能なメモリ508として構成し、残りの部分をキャッシュ506又は直接アクセス可能なメモリ508のうち他方として構成する。
【0036】
キャッシュ506として構成されたメモリは、一般的なキャッシュメモリとして機能する。具体的には、キャッシュ506は、APDコア402のキャッシュよりもキャッシュ階層においてより上位のレベルとして機能する。一例では、キャッシュ506として構成されたメモリは、レベル3のキャッシュメモリとして機能し、APDコア402は、1つ以上のレベル0のキャッシュ、1つ以上のレベル1のキャッシュ、及び、1つ以上のレベル2のキャッシュを含む。このような例では、レベル3のキャッシュメモリは、レベル2のキャッシュからのミスを処理し、1つ以上のレベル2のキャッシュからエビクトされたキャッシュラインを受信して記憶し、APD116内のメモリ又はシステムメモリ104等のバッキングメモリにキャッシュラインをエビクトする。いくつかの例では、キャッシュメモリは、APD116の計算ユニット132内で実行されるシェーダプログラムのためのキャッシュとして機能する。キャッシュ506として構成されたメモリは、機械学習アクセラレータ502又は計算ユニット132等の実行ユニットが、このようなキャッシュ506に配置されるデータを具体的に要求することができないという意味で、「直接アクセス可能」ではないことに留意されたい。例えば、通常のメモリでは、実行ユニットは、その通常のメモリ内のアドレスにデータを配置するように要求することができる。しかしながら、キャッシュでは、データは、キャッシュにおけるミス等のアクションに応じて、キャッシュコントローラによってキャッシュ内に配置され、実行ユニットは、キャッシュに記憶されているデータを間接的に制御するだけである。
【0037】
対照的に、直接アクセス可能なメモリ508は、実行ユニットによって直接アクセス可能である。「直接アクセス可能」という用語は、APDスケジューラ136、計算ユニット132又は機械学習アクセラレータ502等の実行ユニットが、直接アクセス可能なメモリ508に記憶されるか、そこからロードされるデータを明示的に要求することができることを意味する。いくつかの実施形態では、これらの要求は、データを記憶するかデータを読み取る特定のキャッシュ/機械学習アクセラレータチップレット404を指定し、同様に、そのキャッシュ/機械学習アクセラレータチップレット404内のアドレスを指定する。他の箇所で説明しているように、機械学習アクセラレータ502は、同じチップレット404の直接アクセス可能なメモリ508内のデータを消費し、操作の結果を同じチップレット404の直接アクセス可能なメモリ508に出力する行列乗算等の機械学習操作を実行することができ、時にはそれを実行する。
【0038】
いくつかの実施形態では、チップレット404は、チップレット間接続408を含む。本明細書の他の箇所で説明するように、チップレット404は、他のソースからデータを取得し、他の場所にデータを書き込む。一例では、チップレット404は、異なるチップレット404によって消費される出力を生成するための操作を実行する。チップレット間接続408を含む実施形態では、チップレット404は、他のチップレット404との間でこのようなデータを直接的に送信又は受信することができる。
【0039】
本明細書の他の箇所で説明するように、チップレット404及びAPDコア402の操作は、機械学習ネットワークのトレーニング又は推論のために実行される。いくつかの例では、グラフコンパイラ(図示省略)は、ネットワークの層、各層の操作、各層の入力、及び、各層の出力を示す機械学習ネットワークのグラフ記述をコンパイルする。任意の層の入力は、異なる層の出力又はネットワークへの入力であってもよく、任意の層の出力は、異なる層の入力又はネットワークの出力であってもよい。グラフコンパイラは、チップレット404の機械学習アクセラレータ502によって実行される操作のセットを生成し、いくつかの実施形態では、APDスケジューラ136によって実行される操作のセットを生成し、いくつかの実施形態では、計算ユニット132によって実行されるシェーダプログラムのセットを生成する。いくつかの実施形態では、1つ以上のシェーダプログラムは、1つ以上の層の操作を実行するための命令を含む。いくつかの実施形態では、いくつかのこのようなシェーダプログラムは、機械学習アクセラレータ502が、このような層に必要な行列乗算演算を実行することを要求する命令を含み、オプションで、層への入力のために直接アクセス可能なメモリ508として構成されたチップレットメモリ504にデータを送信する命令を含む。いくつかの実施形態では、いくつかのこのようなシェーダプログラムは、直接アクセス可能なメモリ508から、異なるチップレット404の直接アクセス可能なメモリ508又はAPDコア402内のメモリ等の異なるメモリにデータを移動させる命令を含む。いくつかの実施形態では、APDスケジューラ136は、計算ユニット132の代わりに又はそれに加えて、チップレット404に対して機械学習アクセラレータ操作を実行するように要求するための操作、及び/又は、チップレット404からデータを読み取り又はチップレット404に書き込みする操作を実行する。
【0040】
いくつかの実施形態では、チップレット404は、直接アクセス可能なメモリ508内にデータを読み取るように構成され、及び/又は、直接アクセス可能なメモリ508から別のメモリにデータを記憶するように構成されたダイレクトメモリアクセスエンジンを含む。様々な代替の実施形態では、計算ユニット132又はAPDスケジューラ136は、データを読み取り及び/又はデータを書き込むようにダイレクトメモリアクセスエンジンに命令する。
【0041】
上述したように、チップレットメモリ504は、キャッシュ506と、直接アクセス可能なメモリ508と、の間で構成可能である。チップレットメモリ504は、第1の部分がキャッシュメモリ506であるように構成され、その後に、第1の部分の少なくとも一部分が直接アクセス可能なメモリ508であるように構成されてもよいことを理解されたい。言い換えると、一度キャッシュメモリ506として使用されたチップレットメモリ404は、直接アクセス可能なメモリ508として再利用することができる。同様に、一度直接アクセス可能なメモリ508として使用されたチップレットメモリ404は、キャッシュメモリ506として再利用することができる。キャッシュとして構成された同じチップレット404の異なる部分と、直接アクセス可能として構成された同じチップレット404の異なる部分と、が同時に使用され得ることも理解されたい。例えば、1つのチップレット404上で、APD116のキャッシュ操作を実行すると同時に、行列乗算等の機械学習操作を実行することが可能である。
【0042】
図6は、一例による、チップレット404を用いて機械学習操作を実行するための方法600のフロー図である。図1図5のシステムに関して説明するが、当業者は、任意の技術的に実行可能な順序で方法600のステップを実行するように構成された任意のシステムも、本開示の範囲内にあることを理解するであろう。
【0043】
方法600は、ステップ602で始まり、チップレット404は、チップレットメモリ504の第1の部分をキャッシュ506として構成する。様々な例において、この構成は、APDスケジューラ136又は計算ユニット132の要求で生じる。
【0044】
ステップ604では、APD116は、キャッシュ506として構成された第1の部分を使用してキャッシュ操作を実行する。キャッシュ操作は、APDコア402内のキャッシュからエビクトされたキャッシュラインを記憶することと、APDコア402への要求に応じてキャッシュラインを提供することと、を含む。
【0045】
ステップ606において、チップレット404は、チップレット404の第1の部分の少なくとも第1のサブ部分を、直接アクセス可能なメモリ508として構成する。様々な例において、この構成は、APDスケジューラ136又は計算ユニット132の要求で生じる。ステップ608において、チップレット404は、直接アクセス可能として構成されたチップレット404の第1の部分の第1のサブ部分を用いて機械学習操作を実行する。様々な例において、機械学習操作を実行することは、機械学習ネットワークの層に対して行列乗算を実行して、その層の結果を取得することを含む。様々な例では、操作は、データを第1のサブ部分に記憶し、第1のサブ部分から別のチップレット404及びAPDコア402等のチップレット404の外部のエンティティにデータを送信する操作を含む。
【0046】
図に示す各ユニットは、本明細書で説明する操作を実行するように構成されたハードウェア回路を表し、グラフィックス処理パイプライン300の特定のユニットはプログラム可能であり、従ってプログラムを実行することができる。
【0047】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わず単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用することができる。
【0048】
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施することができる。適切なプロセッサは、例として、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶可能な命令)の処理結果を使用して製造プロセスを構成することによって、製造されてもよい。このような処理結果は、マスクワークであってもよく、マスクワークは、本開示の特徴を実装するプロセッサを製造する半導体製造プロセスにおいて使用される。
【0049】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアに実装されてもよい。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及び着脱可能ディスク等の磁気媒体、磁気光学媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
図1
図2
図3
図4
図5
図6