JP2022541461A - チップレット統合型機械学習アクセラレータ - Google Patents
チップレット統合型機械学習アクセラレータ Download PDFInfo
- Publication number
- JP2022541461A JP2022541461A JP2022502435A JP2022502435A JP2022541461A JP 2022541461 A JP2022541461 A JP 2022541461A JP 2022502435 A JP2022502435 A JP 2022502435A JP 2022502435 A JP2022502435 A JP 2022502435A JP 2022541461 A JP2022541461 A JP 2022541461A
- Authority
- JP
- Japan
- Prior art keywords
- chiplet
- cache
- memory
- machine learning
- processing core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 82
- 230000015654 memory Effects 0.000 claims abstract description 114
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000009877 rendering Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000012549 training Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
機械学習操作を実行するための技術が提供されている。本技術は、第1のチップレットの第1の部分をキャッシュとして構成することと、第1の部分を介してキャッシュ操作を実行することと、チップレットの第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、第1のチップレット内の機械学習アクセラレータによって、第1のサブ部分で機械学習操作を実行することと、を含む。【選択図】図5
Description
(関連出願への相互参照)
本願は、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号の優先権を主張し、その全体が、参照することによって本明細書に組み込まれる。
本願は、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号の優先権を主張し、その全体が、参照することによって本明細書に組み込まれる。
機械学習は、急速に進歩している分野である。トレーニングや推論等の機械学習操作のためのハードウェアの改良が絶えず行われている。
添付図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
機械学習操作を実行するための技術が提供される。本技術は、第1のチップレットの第1の部分をキャッシュとして構成することと、第1の部分を介してキャッシュ操作を実行することと、チップレットの第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、第1のチップレット内の機械学習アクセラレータによって、第1のサブ部分で機械学習操作を実行することと、を含む。
図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に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替案において、プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替案において、メモリ104は、プロセッサ102と同じダイ上に配置されるか、プロセッサ102とは別に配置される。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
ストレージ106は、固定式又は着脱可能なストレージ(例えば、限定されないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカー、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
入力ドライバ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パラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが企図される。
図2は、一例による、デバイス100とAPD116の詳細を示す図である。プロセッサ102(図1)は、オペレーティングシステム120、ドライバ122及びアプリケーション126を実行し、他のソフトウェアを代替的又は追加的に実行することもできる。オペレーティングシステム120は、ハードウェアリソースの管理、サービス要求の処理、プロセス実行のスケジューリング及び制御、並びに、他の操作の実行等のように、デバイス100の様々な態様を制御する。APDドライバ122は、APD116の動作を制御して、グラフィックスレンダリングタスク又は他の作業等のタスクを、処理のためにAPD116に送信する。また、APDドライバ122は、APD116の処理コンポーネント(以下にさらに詳細に説明するSIMDユニット138等)によって実行されるプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、並列処理に適し得るグラフィックス操作及び非グラフィックス操作等の選択された機能のコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル演算、幾何学的計算、及び、ディスプレイデバイス118への画像のレンダリング等のグラフィックスパイプライン操作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する操作等のように、グラフィックス操作に直接関係しない計算処理操作を実行する。いくつかの例では、これらの計算処理操作は、SIMDユニット138上で計算シェーダを実行することによって実行される。
APD116は、計算ユニット132を含み、これらは、プロセッサ102(又は、別のユニット)の要求に応じてSIMDパラダイムに従って並列に操作を実行するように構成された1つ以上のSIMDユニット138を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより同じプログラムを実行するが、異なるデータでそのプログラムを実行することができるというパラダイムである。一例では、各SIMDユニット138は、16レーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測によってレーンをオフにすることができる。予測は、分岐制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが個々のレーンで実行される計算に基づいている条件分岐等の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンを予測し、異なる制御フローパスを連続実行することで、任意の制御フローを可能にする。
計算ユニット132における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に(又は、部分的に同時に、部分的に連続して)実行され得る。1つ以上のウェーブフロントが「ワークグループ」に含まれ、ワークグループは、同じプログラムを実行するように指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成する各ウェーブフロントを実行することによって実行され得る。別の方法では、ウェーブフロントは、単一のSIMDユニット138上で実行されるか、様々なSIMDユニット138上で実行される。ウェーブフロントは、単一のSIMDユニット138で同時に(又は、疑似的に同時に)実行することができるワークアイテムの最大の集合と考えることができる。「疑似的に同時」な実行は、SIMDユニット138のレーン数よりも大きいウェーブフロントの場合に発生する。このような状況では、ウェーブフロントが複数のサイクルで実行され、ワークアイテムの様々な集合が様々なサイクルで実行される。APDスケジューラ136は、計算ユニット132及びSIMDユニット138上で様々なワークグループ及びウェーブフロントをスケジューリングすることに関連する動作を実行するように構成されている。
計算ユニット132によってもたらされる並列性は、ピクセル値計算、頂点変換、及び、他のグラフィックス操作等のグラフィックス関連操作に適している。従って、場合によっては、プロセッサ102からグラフィックス処理コマンドを受け入れるグラフィックスパイプライン134は、並列実行のために計算ユニット132に計算タスクを提供する。
また、計算ユニット132は、グラフィックスに関連しない、又は、グラフィックスパイプライン134の「通常の」操作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の操作のために実行される処理を補完するために実行されるカスタム操作)を実行するために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムをAPD116に送信して実行させる。
図3は、図2に示すグラフィックス処理パイプライン134の追加の詳細を示すブロック図である。グラフィックス処理パイプライン134は、各々がグラフィックス処理パイプライン134の特定の機能を実行するステージを含む。各ステージは、プログラム可能な計算ユニット132で実行されるシェーダプログラムとして部分的若しくは完全に実装されるか、又は、計算ユニット132の外部の固定機能の非プログラム可能ハードウェアとして部分的若しくは完全に実装される。
入力アセンブラステージ302は、ユーザが充填したバッファ(例えば、アプリケーション126等のように、プロセッサ102によって実行されるソフトウェアの要求で充填されたバッファ)からプリミティブデータを読み取り、パイプラインの残りの部分が使用するためにデータをプリミティブにアセンブルする。入力アセンブラステージ302は、ユーザが充填したバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラステージ302は、パイプラインの残りの部分で使用するために、アセンブルされたプリミティブをフォーマットする。
頂点シェーダステージ304は、入力アセンブラステージ302によってアセンブルされたプリミティブの頂点を処理する。頂点シェーダステージ304は、変換、スキニング、モーフィング、頂点毎のライティング等のように、頂点毎の様々な操作を実行する。変換操作は、頂点の座標を変換するための様々な操作を含む。これらの操作は、頂点座標を変更するモデリング変換、ビュー変換、投影変換、パースペクティブ分割(perspective division)及びビューポート変換のうち1つ以上を含み、非座標属性を変更する他の操作も含む。
頂点シェーダステージ304は、1つ以上の計算ユニット132で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前生成されたプログラムに基づいている。ドライバ122は、このようなコンピュータプログラムをコンパイルして、計算ユニット132での実行に適したフォーマットを有する頂点シェーダプログラムを生成する。
ハルシェーダステージ306、テッセレータステージ308及びドメインシェーダステージ310は、連携してテッセレーションを実行し、テッセレーションは、プリミティブを細分化することにより、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダステージ306は、入力プリミティブに基づいてテッセレーションのためのパッチを生成する。テッセレータステージ308は、パッチ用のサンプルのセットを生成する。ドメインシェーダステージ310は、パッチのサンプルに対応する頂点のための頂点位置を計算する。ハルシェーダステージ306及びドメインシェーダステージ310は、頂点シェーダステージ304と同様に、ドライバ122によってコンパイルされた、計算ユニット132上で実行されるシェーダプログラムとして実装することができる。
ジオメトリシェーダステージ312は、プリミティブ毎に頂点操作を実行する。ジオメトリシェーダステージ312は、ポイントスプライト拡張(point sprite expansion)、動的パーティクルシステム操作(dynamic particle system operations)、ファーフィン生成(fur-fin generation)、シャドウボリューム生成、キューブマップへのシングルパスレンダリング(single pass render-to-cubemap)、プリミティブ毎のマテリアルスワッピング、プリミティブ毎のマテリアル設定等の操作を含む、様々な異なるタイプの操作を実行することができる。場合によっては、ドライバ122によってコンパイルされ、計算ユニット132上で実行されるジオメトリシェーダプログラムが、ジオメトリシェーダステージ312の操作を実行する。
ラスタライザステージ314は、ラスタライザステージ314の上流で生成された単純なプリミティブ(三角形)を受け入れてラスタライズする。ラスタライズは、何れのスクリーンピクセル(又は、サブピクセル)が特定のプリミティブによってカバーされるかを決定することを含む。ラスタライズは、固定機能ハードウェアによって実行される。
ピクセルシェーダステージ316は、上流で生成されたプリミティブ及びラスタライズの結果に基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダステージ316は、テクスチャメモリからテクスチャを適用することができる。ピクセルシェーダステージ316の操作は、ドライバ122によってコンパイルされ、計算ユニット132上で実行されるピクセルシェーダプログラムによって実行される。
出力マージャステージ318は、ピクセルシェーダステージ316からの出力を受け入れ、これらの出力をフレームバッファにマージし、z検定及びアルファブレンディング等の操作を実行して、スクリーンピクセルの最終的な色を決定する。
グラフィックス処理パイプライン134を含みグラフィックスレンダリングを実行することができるAPD116の実装が開示されている。しかしながら、本開示の教示は、グラフィックス処理パイプライン134を含まないか、このようなパイプラインを利用してグラフィックスレンダリングを実行しないAPD116の実装に及ぶ。
図4は、APD116のブロック図を表しており、一例によるキャッシュ/機械学習アクセラレータチップレット404の詳細を示している。APD116は、図2に関して説明したAPDスケジューラ136及び計算ユニット132を含む。また、APD116は、APDからキャッシュへのインターフェース406を介してAPDコア402に結合され、外部インターフェース410を介して他のメモリ(例えば、システムメモリ104又はAPD116のメモリ)に結合される1つ以上のキャッシュ及び機械学習アクセラレータチップレット404を含む。いくつかの実施形態では、1つ以上のチップレット404は、1つ以上のチップレット内インターフェース408を介して1つ以上の他のチップレット404に接続されている。
キャッシュ/機械学習アクセラレータチップレット404は、データを記憶するように構成されたメモリモジュールと、機械学習アクセラレータと、を含む。いくつかの実施形態では、機械学習アクセラレータは、入力行列に対して行列乗算を実行して出力結果を提供するように構成された行列乗算回路を含む。
いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402とは別の物理的ダイである。いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402に使用される製造プロセスよりも大規模な製造プロセスで製造される。製造プロセスとは、デバイス機能が製造される規模を指す。製造プロセスは、当該技術分野において「プロセスノード」と呼ばれることがある。いくつかの例示的な製造プロセスは、10ナノメートル(nm)プロセス及び7nmプロセスを含む。APDコア402と比較してチップレット404に対してより大きな製造プロセス規模を使用することにより、APDコア402の高性能を依然として提供しながら、APDコア402と比較して、チップレット404をより低コスト及びより高い歩留まりで製造することができる。
キャッシュ/機械学習アクセラレータチップレット404のメモリモジュールは、APDコア402の操作のためのキャッシュメモリとして使用されることと、機械学習アクセラレータの操作のための入力オペランド及び出力結果を記憶するメモリとして使用されることと、の間で切り替え可能である。より具体的には、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402のキャッシュメモリとして動作することと、例えば、キャッシュ/機械学習アクセラレータチップレットの機械学習アクセラレータ404によってアクセス可能な直接アクセス可能なメモリ(directly accessible memory)として動作することと、の間で構成可能である。いくつかの実施形態では、APDスケジューラ136及び計算ユニット132のうち何れか又は両方は、キャッシュ/機械学習アクセラレータチップレット404の任意の部分に、キャッシュとして又は直接アクセス可能なメモリとして動作するように指示することができる。
いくつかの実施形態では、APDコア402は、キャッシュ階層の少なくとも一部を形成する1つ以上のキャッシュメモリを含む。また、メモリ階層は、キャッシュ/機械学習アクセラレータチップレット404のキャッシュメモリを含む。いくつかの例では、キャッシュ/機械学習アクセラレータチップレット404のキャッシュメモリは、APDコア402のキャッシュ階層の一部に対してレベル3のキャッシュとして機能する。
いくつかの実施形態では、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402と、キャッシュ階層よりもメモリ階層の上位にあるメモリ(APD116専用のメモリ又はシステムメモリ104)と、の間の物理的インターフェースとしても機能する。言い換えれば、キャッシュ/機械学習アクセラレータチップレット404は、キャッシュ階層の或るレベルとして機能し、その階層の他のレベル(APDコア402の下位レベルと、APD116又はシステムメモリ104内のメモリ等の上位レベルと、を含む)と物理的にインターフェースするメモリを含む。図4は、外部インターフェース410が「メモリに」接続されていることを示していることに留意されたい。様々な例において、言及される「メモリ」は、APD116又はシステムメモリ104の汎用(例えば、非キャッシュ)メモリである。従って、キャッシュ/機械学習アクセラレータチップレット404は、APDコア402内のキャッシュ階層の部分とメモリとの間の物理的インターフェースとして機能する。
図5は、一例による、キャッシュ/機械学習アクセラレータチップレット404の詳細を示す図である。図示するように、キャッシュ/機械学習アクセラレータチップレット404は、複数の機械学習アクセラレータ502と、チップレットメモリ504と、を含む。いくつかの実施形態では、機械学習アクセラレータ502は、行列乗算演算を実行するように構成されたハードウェア回路である。
行列乗算演算は、完全接続層(fully connected layers)や畳み込み層のための層入力から層出力を生成する操作を実行する等のように、機械学習操作で一般的に使用されている。様々な例において、APDスケジューラ136又は計算ユニット132の何れか又は両方は、キャッシュ/機械学習アクセラレータチップレット404の何れかにコマンドを送信し、データをチップレットメモリ504にフェッチし、結果を出力するために、フェッチされたデータに対して、機械学習アクセラレータ502を介して行列乗算演算を実行することが可能である。様々な例では、キャッシュ/機械学習アクセラレータチップレット404は、行列乗算の結果をチップレットメモリ504に記憶する。様々な例では、キャッシュ/機械学習アクセラレータチップレット404は、この結果をAPDコア402等の外部エンティティ、APD116のメモリ又はメモリ104に送信する。
いくつかの例では、ニューラルネットワークは、相互接続された一連の層として実装される。各層は、異なる層又はニューラルネットワークへの入力から、1つ以上の入力を受け取る。異なる層の計算は、デバイス100の異なるエンティティによって実行されることが可能である。一例では、キャッシュ/機械学習アクセラレータチップレット404は、行列乗算又は畳み込み演算を実行し、APDコア402(例えば、計算ユニット132)は、アクティブ化、バッチ正規化又は他の演算等のように、ニューラルネットワークを実装するための他の計算を実行する。いくつかの例では、APDスケジューラ136又はプロセッサ102等のコーディネータは、ニューラルネットワークでトレーニング又は推論を実行するための様々な操作を実行するように、これらの異なるエンティティに命令する。例えば、コーディネータは、キャッシュ/機械学習アクセラレータチップレット404に対して、行列乗算を必要とする層の入力データに対して行列乗算演算を実行するように指示し、計算ユニット132に対して、このような他の操作を利用する層のニューラルネットワークに対して他の操作を実行するように指示する。
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のうち他方として構成する。
キャッシュ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に配置されるデータを具体的に要求することができないという意味で、「直接アクセス可能」ではないことに留意されたい。例えば、通常のメモリでは、実行ユニットは、その通常のメモリ内のアドレスにデータを配置するように要求することができる。しかしながら、キャッシュでは、データは、キャッシュにおけるミス等のアクションに応じて、キャッシュコントローラによってキャッシュ内に配置され、実行ユニットは、キャッシュに記憶されているデータを間接的に制御するだけである。
対照的に、直接アクセス可能なメモリ508は、実行ユニットによって直接アクセス可能である。「直接アクセス可能」という用語は、APDスケジューラ136、計算ユニット132又は機械学習アクセラレータ502等の実行ユニットが、直接アクセス可能なメモリ508に記憶されるか、そこからロードされるデータを明示的に要求することができることを意味する。いくつかの実施形態では、これらの要求は、データを記憶するかデータを読み取る特定のキャッシュ/機械学習アクセラレータチップレット404を指定し、同様に、そのキャッシュ/機械学習アクセラレータチップレット404内のアドレスを指定する。他の箇所で説明しているように、機械学習アクセラレータ502は、同じチップレット404の直接アクセス可能なメモリ508内のデータを消費し、操作の結果を同じチップレット404の直接アクセス可能なメモリ508に出力する行列乗算等の機械学習操作を実行することができ、時にはそれを実行する。
いくつかの実施形態では、チップレット404は、チップレット間接続408を含む。本明細書の他の箇所で説明するように、チップレット404は、他のソースからデータを取得し、他の場所にデータを書き込む。一例では、チップレット404は、異なるチップレット404によって消費される出力を生成するための操作を実行する。チップレット間接続408を含む実施形態では、チップレット404は、他のチップレット404との間でこのようなデータを直接的に送信又は受信することができる。
本明細書の他の箇所で説明するように、チップレット404及びAPDコア402の操作は、機械学習ネットワークのトレーニング又は推論のために実行される。いくつかの例では、グラフコンパイラ(図示省略)は、ネットワークの層、各層の操作、各層の入力、及び、各層の出力を示す機械学習ネットワークのグラフ記述をコンパイルする。任意の層の入力は、異なる層の出力又はネットワークへの入力であってもよく、任意の層の出力は、異なる層の入力又はネットワークの出力であってもよい。グラフコンパイラは、チップレット404の機械学習アクセラレータ502によって実行される操作のセットを生成し、いくつかの実施形態では、APDスケジューラ136によって実行される操作のセットを生成し、いくつかの実施形態では、計算ユニット132によって実行されるシェーダプログラムのセットを生成する。いくつかの実施形態では、1つ以上のシェーダプログラムは、1つ以上の層の操作を実行するための命令を含む。いくつかの実施形態では、いくつかのこのようなシェーダプログラムは、機械学習アクセラレータ502が、このような層に必要な行列乗算演算を実行することを要求する命令を含み、オプションで、層への入力のために直接アクセス可能なメモリ508として構成されたチップレットメモリ504にデータを送信する命令を含む。いくつかの実施形態では、いくつかのこのようなシェーダプログラムは、直接アクセス可能なメモリ508から、異なるチップレット404の直接アクセス可能なメモリ508又はAPDコア402内のメモリ等の異なるメモリにデータを移動させる命令を含む。いくつかの実施形態では、APDスケジューラ136は、計算ユニット132の代わりに又はそれに加えて、チップレット404に対して機械学習アクセラレータ操作を実行するように要求するための操作、及び/又は、チップレット404からデータを読み取り又はチップレット404に書き込みする操作を実行する。
いくつかの実施形態では、チップレット404は、直接アクセス可能なメモリ508内にデータを読み取るように構成され、及び/又は、直接アクセス可能なメモリ508から別のメモリにデータを記憶するように構成されたダイレクトメモリアクセスエンジンを含む。様々な代替の実施形態では、計算ユニット132又はAPDスケジューラ136は、データを読み取り及び/又はデータを書き込むようにダイレクトメモリアクセスエンジンに命令する。
上述したように、チップレットメモリ504は、キャッシュ506と、直接アクセス可能なメモリ508と、の間で構成可能である。チップレットメモリ504は、第1の部分がキャッシュメモリ506であるように構成され、その後に、第1の部分の少なくとも一部分が直接アクセス可能なメモリ508であるように構成されてもよいことを理解されたい。言い換えると、一度キャッシュメモリ506として使用されたチップレットメモリ404は、直接アクセス可能なメモリ508として再利用することができる。同様に、一度直接アクセス可能なメモリ508として使用されたチップレットメモリ404は、キャッシュメモリ506として再利用することができる。キャッシュとして構成された同じチップレット404の異なる部分と、直接アクセス可能として構成された同じチップレット404の異なる部分と、が同時に使用され得ることも理解されたい。例えば、1つのチップレット404上で、APD116のキャッシュ操作を実行すると同時に、行列乗算等の機械学習操作を実行することが可能である。
図6は、一例による、チップレット404を用いて機械学習操作を実行するための方法600のフロー図である。図1~図5のシステムに関して説明するが、当業者は、任意の技術的に実行可能な順序で方法600のステップを実行するように構成された任意のシステムも、本開示の範囲内にあることを理解するであろう。
方法600は、ステップ602で始まり、チップレット404は、チップレットメモリ504の第1の部分をキャッシュ506として構成する。様々な例において、この構成は、APDスケジューラ136又は計算ユニット132の要求で生じる。
ステップ604では、APD116は、キャッシュ506として構成された第1の部分を使用してキャッシュ操作を実行する。キャッシュ操作は、APDコア402内のキャッシュからエビクトされたキャッシュラインを記憶することと、APDコア402への要求に応じてキャッシュラインを提供することと、を含む。
ステップ606において、チップレット404は、チップレット404の第1の部分の少なくとも第1のサブ部分を、直接アクセス可能なメモリ508として構成する。様々な例において、この構成は、APDスケジューラ136又は計算ユニット132の要求で生じる。ステップ608において、チップレット404は、直接アクセス可能として構成されたチップレット404の第1の部分の第1のサブ部分を用いて機械学習操作を実行する。様々な例において、機械学習操作を実行することは、機械学習ネットワークの層に対して行列乗算を実行して、その層の結果を取得することを含む。様々な例では、操作は、データを第1のサブ部分に記憶し、第1のサブ部分から別のチップレット404及びAPDコア402等のチップレット404の外部のエンティティにデータを送信する操作を含む。
図に示す各ユニットは、本明細書で説明する操作を実行するように構成されたハードウェア回路を表し、グラフィックス処理パイプライン300の特定のユニットはプログラム可能であり、従ってプログラムを実行することができる。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わず単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用することができる。
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施することができる。適切なプロセッサは、例として、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶可能な命令)の処理結果を使用して製造プロセスを構成することによって、製造されてもよい。このような処理結果は、マスクワークであってもよく、マスクワークは、本開示の特徴を実装するプロセッサを製造する半導体製造プロセスにおいて使用される。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアに実装されてもよい。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及び着脱可能ディスク等の磁気媒体、磁気光学媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
Claims (20)
- 第1のチップレットの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記第1のチップレットの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記第1のチップレット内の機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、を含む、
方法。 - 前記キャッシュ操作を実行することは、前記第1のチップレットとは別のダイ上のプロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項1の方法。 - 前記プロセッシングコアに対してキャッシュ操作を実行することは、前記プロセッシングコアのキャッシュからエビクトされたキャッシュラインを記憶することと、前記プロセッシングコアのキャッシュにおけるミスに応じて、前記プロセッシングコアにキャッシュラインを提供することと、のうち1つ以上を含む、
請求項2の方法。 - 前記第1の部分をキャッシュとして構成すること、又は、前記第1のサブ部分を直接アクセス可能なメモリとして構成することは、前記第1のチップレットとは別のダイ上のプロセッシングコアのスケジューラ又は計算ユニットからの要求に応じて実行される、
請求項1の方法。 - 前記チップレットとは別のプロセッサコアの要求に応じて、直接アクセス可能なメモリとして構成された前記第1のサブ部分にデータを記憶することをさらに含む、
請求項1の方法。 - 前記機械学習操作を実行することは、前記データを入力として消費する機械学習操作を実行することを含む、
請求項5の方法。 - 前記機械学習操作は、行列乗算演算を含む、
請求項1の方法。 - 前記第1の部分は、前記第1のチップレットの内部メモリの第1のメモリ量を含み、
前記方法は、前記第1の部分を介して前記キャッシュ操作を実行する間に、直接アクセス可能なメモリとして構成された前記メモリの第2の部分で機械学習操作を実行することをさらに含む、
請求項1の方法。 - 前記第1のチップレットに対して機械学習操作を実行するように要求するプロセッシングコアから物理的に分離している第2のチップレットにデータを送信すること、又は、前記第2のチップレットからデータを受信することをさらに含み、前記データは、前記プロセッシングコアを流れない、前記第1のチップレットと前記第2のチップレットとの間の直接接続を介して送信又は受信される、
請求項1の方法。 - 1つ以上の機械学習アクセラレータと、
チップレットメモリと、を備え、
前記チップレットメモリは、
前記チップレットメモリの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記チップレットメモリの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記1つ以上の機械学習アクセラレータのうち何れかの機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、
を行うように構成されている、
デバイス。 - 前記キャッシュ操作を実行することは、前記チップレットメモリとは別のダイ上のプロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項10のデバイス。 - 前記プロセッシングコアに対してキャッシュ操作を実行することは、前記プロセッシングコアのキャッシュからエビクトされたキャッシュラインを記憶することと、前記プロセッシングコアのキャッシュにおけるミスに応じて、前記プロセッシングコアにキャッシュラインを提供することと、のうち1つ以上を含む、
請求項11の方法。 - 前記第1の部分をキャッシュとして構成すること、又は、前記第1のサブ部分を直接アクセス可能なメモリとして構成することは、前記チップレットメモリとは別のダイ上のプロセッシングコアのスケジューラ又は計算ユニットからの要求に応じて実行される、
請求項10のデバイス。 - 前記チップレットメモリは、前記チップレットとは別のプロセッサコアの要求に応じて、直接アクセス可能なメモリとして構成された前記第1のサブ部分にデータを記憶するようにさらに構成されている、
請求項10のデバイス。 - 前記機械学習操作を実行することは、前記データを入力として消費する機械学習操作を実行することを含む、
請求項14の方法。 - 前記機械学習操作は、行列乗算演算を含む、
請求項10のデバイス。 - 前記第1の部分は、第1のチップレットの内部メモリの第1のメモリ量を含み、
前記1つ以上の機械学習アクセラレータは、前記第1の部分を介してキャッシュ操作が実行されている間に、直接アクセス可能なメモリとして構成された前記メモリの第2の部分で機械学習操作を実行するように構成されている、
請求項10のデバイス。 - 前記チップレットメモリは、第1のチップレットに対して機械学習操作を実行するように要求するプロセッシングコアから物理的に分離している第2のチップレットにデータを送信すること、又は、前記第2のチップレットからデータを受信するようにさらに構成されており、前記データは、前記プロセッシングコアを流れない、前記第1のチップレットと前記第2のチップレットとの間の直接接続を介して送信又は受信される、
請求項10のデバイス。 - 第1のチップレットメモリと、1つ以上の機械学習アクセラレータの第1のセットと、を含む第1のチップレットと、
第2のチップレットと、
プロセッシングコアと、を備え、
前記第1のチップレットは、
前記第1のチップレットメモリの第1の部分をキャッシュとして構成することと、
前記第1の部分を介してキャッシュ操作を実行することと、
前記第1のチップレットメモリの前記第1の部分の少なくとも第1のサブ部分を直接アクセス可能なメモリとして構成することと、
前記1つ以上の機械学習アクセラレータのうち何れかの機械学習アクセラレータによって、前記第1のサブ部分で機械学習操作を実行することと、
を行うように構成されている、
デバイス。 - 前記キャッシュ操作を実行することは、前記プロセッシングコアに対してキャッシュ操作を実行することを含む、
請求項19のデバイス。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962877241P | 2019-07-22 | 2019-07-22 | |
US201962877249P | 2019-07-22 | 2019-07-22 | |
US62/877,249 | 2019-07-22 | ||
US62/877,241 | 2019-07-22 | ||
US16/933,863 | 2020-07-20 | ||
US16/933,863 US20210026686A1 (en) | 2019-07-22 | 2020-07-20 | Chiplet-integrated machine learning accelerators |
PCT/US2020/042931 WO2021016273A1 (en) | 2019-07-22 | 2020-07-21 | Chiplet-integrated machine learning accelerators |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022541461A true JP2022541461A (ja) | 2022-09-26 |
Family
ID=74190249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022502435A Pending JP2022541461A (ja) | 2019-07-22 | 2020-07-21 | チップレット統合型機械学習アクセラレータ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210026686A1 (ja) |
EP (1) | EP4004835A4 (ja) |
JP (1) | JP2022541461A (ja) |
KR (1) | KR20220035426A (ja) |
CN (1) | CN114144797A (ja) |
WO (1) | WO2021016273A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11429480B2 (en) | 2020-08-31 | 2022-08-30 | Micron Technology, Inc. | Method of demand scrubbing by placing corrected data in memory-side cache |
US11782757B2 (en) * | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
US20220198318A1 (en) * | 2020-12-17 | 2022-06-23 | SiMa Technologies, Inc. | Instruction streaming for a machine learning accelerator |
US20230418745A1 (en) * | 2022-06-28 | 2023-12-28 | Advanced Micro Devices, Inc. | Technique to enable simultaneous use of on-die sram as cache and memory |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798673B2 (en) * | 2013-03-14 | 2017-10-24 | Sandisk Technologies Llc | Paging enablement of storage translation metadata |
KR102219288B1 (ko) * | 2013-12-09 | 2021-02-23 | 삼성전자 주식회사 | 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법 |
US20190146837A1 (en) * | 2014-09-29 | 2019-05-16 | Samsung Electronics Co., Ltd. | Distributed real-time computing framework using in-storage processing |
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
US9786646B2 (en) * | 2015-12-23 | 2017-10-10 | X-Celeprint Limited | Matrix addressed device repair |
CN109074845B (zh) * | 2016-03-23 | 2023-07-14 | Gsi 科技公司 | 存储器内矩阵乘法及其在神经网络中的使用 |
US10817802B2 (en) * | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
US20180024938A1 (en) * | 2016-07-21 | 2018-01-25 | Advanced Micro Devices, Inc. | Allocating physical pages to sparse data sets in virtual memory without page faulting |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US11694066B2 (en) * | 2017-10-17 | 2023-07-04 | Xilinx, Inc. | Machine learning runtime library for neural network acceleration |
US10509596B2 (en) * | 2017-12-21 | 2019-12-17 | Advanced Micro Devices, Inc. | Extreme-bandwidth scalable performance-per-watt GPU architecture |
US20190278593A1 (en) * | 2018-03-09 | 2019-09-12 | Nvidia Corporation | Accelerating linear algebra kernels for any processor architecture |
US11347994B2 (en) * | 2018-10-15 | 2022-05-31 | Intel Corporation | Weight prefetch for in-memory neural network execution |
US10691593B1 (en) * | 2018-12-19 | 2020-06-23 | Micron Technology, Inc. | Predictive data storage hierarchical memory systems and methods |
US11176493B2 (en) * | 2019-04-29 | 2021-11-16 | Google Llc | Virtualizing external memory as local to a machine learning accelerator |
US11521116B2 (en) * | 2019-06-25 | 2022-12-06 | Nxp Usa, Inc. | Self-optimizing multi-core integrated circuit |
-
2020
- 2020-07-20 US US16/933,863 patent/US20210026686A1/en active Pending
- 2020-07-21 KR KR1020227004629A patent/KR20220035426A/ko unknown
- 2020-07-21 CN CN202080052852.9A patent/CN114144797A/zh active Pending
- 2020-07-21 WO PCT/US2020/042931 patent/WO2021016273A1/en unknown
- 2020-07-21 EP EP20843437.3A patent/EP4004835A4/en active Pending
- 2020-07-21 JP JP2022502435A patent/JP2022541461A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220035426A (ko) | 2022-03-22 |
EP4004835A4 (en) | 2023-08-23 |
WO2021016273A1 (en) | 2021-01-28 |
US20210026686A1 (en) | 2021-01-28 |
CN114144797A (zh) | 2022-03-04 |
EP4004835A1 (en) | 2022-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210026686A1 (en) | Chiplet-integrated machine learning accelerators | |
JP7253488B2 (ja) | 複合ワールドスペースパイプラインシェーダステージ | |
US10102662B2 (en) | Primitive culling using automatically compiled compute shaders | |
US10474490B2 (en) | Early virtualization context switch for virtualized accelerated processing device | |
JP7122396B2 (ja) | グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法 | |
US11194614B2 (en) | Varying firmware for virtualized device | |
US20210374607A1 (en) | Stacked dies for machine learning accelerator | |
US11061429B2 (en) | Fine-grained speed binning in an accelerated processing device | |
JP7308197B2 (ja) | アクセラレーテッド処理デバイスの帯域幅を増加させるための並列データ転送 | |
US11656877B2 (en) | Wavefront selection and execution | |
US20230206395A1 (en) | Hardware support for convolution operations | |
US11900499B2 (en) | Iterative indirect command buffers | |
US10664403B1 (en) | Per-group prefetch status to reduce duplicate prefetch requests | |
US20210407182A1 (en) | Load instruction for multi sample anti-aliasing | |
US20220179784A1 (en) | Techniques for supporting large frame buffer apertures with better system compatibility |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230706 |