JP7379581B2 - 特殊目的計算ユニットを用いたハードウェアダブルバッファリング - Google Patents
特殊目的計算ユニットを用いたハードウェアダブルバッファリング Download PDFInfo
- Publication number
- JP7379581B2 JP7379581B2 JP2022069548A JP2022069548A JP7379581B2 JP 7379581 B2 JP7379581 B2 JP 7379581B2 JP 2022069548 A JP2022069548 A JP 2022069548A JP 2022069548 A JP2022069548 A JP 2022069548A JP 7379581 B2 JP7379581 B2 JP 7379581B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- buffer
- value
- buffer allocation
- 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.)
- Active
Links
- 230000003139 buffering effect Effects 0.000 title description 13
- 239000000872 buffer Substances 0.000 claims description 290
- 230000015654 memory Effects 0.000 claims description 257
- 238000013500 data storage Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims 6
- 238000013528 artificial neural network Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/08—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- 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
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
-
- 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/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Input (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Communication Control (AREA)
Description
本明細書は、一般に、ハードウェアダブルバッファを有する特殊目的計算ユニットを用いて機械学習計算を行うことに関する。
本明細書には、N次元テンソルのデータをダブルバッファリングするための特殊目的計算ユニットの使用に関連する技術が記載されている。
記データ要素のシーケンスの1つ以上のデータ要素の後続グループの上記バッファメモリアドレスを決定する前に、上記バッファ割り当て要素の上記値を切り替えてもよい。上記1つ以上の処理ユニットは、1つ以上のデータ要素の各グループの上記決定されたバッファメモリアドレスを用いて、各データ要素を上記第1または第2のメモリのそれぞれのメモリ場所に転送してもよい。
めの命令総数を減らすことができる。また、データを第2のバッファに割り当てる前に、第1のバッファが一杯であるか否かを判断するのではなく、バッファ割り当て要素の値を切り替えることにより、処理をより迅速に行うことが可能になり、プロセッサに対する計算需要を少なくすることができる。命令が減少することにより、性能も高くなる。なぜなら、処理ユニットは、より少ない命令を処理してメモリアドレスを判断するからである。特殊目的ハードウェアユニットにおいてダブルバッファ命令を符号化することは、プロセッサがデータをバッファに割り当てるために実行するであろう計算サイクル数を減少させ、そのため、他の計算タスクのためのプロセッサ帯域幅を増加させる。
詳細な説明
一般に、ソフトウェアアルゴリズムがN次元テンソルを処理するとき、ネステッドループが用いられる場合がある。各ループは、N次元テンソルのそれぞれの次元を横断することに関与し得る。多次元テンソルは、マトリックスまたは多次元マトリックスであってもよい。たとえば、二次元テンソルは、マトリックスであり、三次元テンソルは、複数の二次元マトリックスからなる三次元マトリックスである。N次元テンソルの各次元は、1つ以上の要素を含んでもよく、各要素は、それぞれのデータ値を格納してもよい。たとえば、テンソルは、プログラムにおける変数であってもよく、当該変数は、3つの次元を有してもよい。第1の次元は、300個の要素の長さを有してもよく、第2の次元は、1000個の要素の長さを有してもよく、第3の次元は、20個の要素の長さを有してもよい。当然のことながら、各次元において他の個数の要素も可能である。
三次元テンソルの例を続けて、変数iによって追跡されるループを横断するために外側forループが用いられてもよく、変数jによって追跡されるループを横断するために中央forループループが用いられてもよく、変数kによって追跡されるループを横断するために内側forループが用いられてもよい。この例では、アクセスされる第1の要素は、(i=0,j=0,k=0)であってもよく、第2の要素は、(i=0,j=0,k=1)であってもよい、などである。
データを読み取ることができるように、受信したアドレス値を処理ユニット102のプロセッサに提供することができる。
を含み得る。数値演算ユニット124は、たとえばテンソル状態要素に格納された値に基づいてテンソル要素のメモリアドレスまたはメモリアドレスオフセット値を計算するのに用いられることができる。テンソル横断ユニットを用いてメモリアドレスを決定するための技術の一例については、2016年10月27日に出願された「ニューラルネットワーク計算タイル」と題される米国特許出願番号第15/335,769号および2016年2月3日に出願された「多次元テンソルにおけるデータへのアクセス」と題される米国特許出願番号第15/014,265号に記載されており、これらの特許出願の内容全体は引用によって本明細書に援用される。
納場所B114を含む複数のデータ格納場所を含み得る。各格納場所は、共通のメモリユニットまたは異なるメモリユニットの種々のメモリアドレスであってもよい。記憶媒体104は、バッファA116およびバッファB118を含む複数の一時メモリも含み得る。処理ユニット102は、データを第2のデータ格納場所(たとえば、格納場所B114)に転送する前に、データを第1のデータ格納場所(たとえば、格納場所A112)から1つ以上のバッファ(たとえば、バッファA116および/またはバッファB118)に転送することができる。
ユニット106は、たとえば内側ループのテンソルインデックス要素をインクリメントすることによって、ループのテンソルインデックス要素を更新することができる。内側ループの更新されたテンソルインデックス要素が、内側ループのテンソル境界要素に格納された値に等しい場合には、テンソルインデックス要素がリセットされ得て、ネステッドにおける内側ループの次の外側ループのテンソルインデックス要素が更新され得る。次いで、テンソル横断ユニット120は、上記のように、テンソルインデックス要素にそれらの対応する乗数を乗算して結果を合計することによって、内側ループのこの反復に対応する次の要素のメモリアドレスを決定することができる。
テンソル横断ユニット106から要求することができる。テンソル横断ユニット106は、ループインデックスに基づいて、ループの反復に対応するテンソル要素のグループのメモリオフセット値を決定することができる。また、テンソル横断ユニット106は、上記のように、バッファ割り当て要素の値に基づいて、テンソル要素のグループを第1のバッファに割り当てるか第2のバッファ(または、3つ以上の場合にはさらなるバッファ)に割り当てるかを判断することができる。テンソル横断ユニット106は、ベースメモリアドレス、テンソル要素のグループのメモリオフセット値、およびバッファ割り当て要素の値によっては第2のバッファのメモリオフセット値に基づいて、テンソル要素のグループのバッファメモリアドレスを決定することができる。
よい。テンソル要素は、N次元テンソルの一部であってもよい。たとえば、テンソルは、ネステッドループを用いて横断されてもよく、各ループは、N次元テンソルのそれぞれの次元を横断することに関与する。
るデータ要素のメモリオフセット値を用いることができる。
は、全ての実施形態においてこのような分離が必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一体化されてもよく、または複数のソフトウェア製品にパッケージングされてもよい、ということが理解されるべきである。
Claims (20)
- データを転送するための装置であって、
複数のメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されているN次元テンソルのデータのバッファメモリアドレスを決定するように配置され、Nは、2以上の整数であり、前記決定することは、
複数の値の間で切り替え可能なバッファ割り当て要素の現在の値を識別することを備え、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、前記決定することはさらに、
前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になるまで、前記バッファ割り当て要素の前記現在の値に対応する前記N次元テンソルの前記データの第1の部分を前記メモリに割り当てることを備え、前記割り当てることは、
少なくとも(i)前記複数のメモリのベースアドレスと、(ii)前記バッファ割り当て要素の前記現在の値に対応する前記メモリのメモリアドレスオフセット値と、(iii)データ要素のメモリオフセット値との組み合わせに基づいて、データの前記第1の部分の各データ要素の前記バッファメモリアドレスを決定することを含み、各データ要素の前記メモリオフセット値は、前記N次元テンソルを横断するために使用されるループネストにおける複数のループの現在のインデックス値に基づき、前記1つまたは複数のプロセッサはさらに、
各データ要素の前記決定されたバッファメモリアドレスを使用して、前記N次元テンソルの前記データの前記第1の部分を、前記バッファ割り当て要素の前記現在の値に対応する前記メモリのそれぞれのメモリ場所に転送するように配置され、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えるように配置される、装置。 - 前記1つまたは複数のプロセッサは、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して、前記バッファ割り当て要素の前記値を切り替えるように配置される、請求項1に記載の装置。
- 前記メモリのうちの1つの前記メモリアドレスオフセット値はゼロであり、各々の他のメモリの前記メモリアドレスオフセット値はゼロでない、請求項1または2に記載の装置。
- 前記複数のメモリの各メモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項1~3のいずれか一項に記載の装置。 - 各データ要素の前記メモリオフセット値は、前記N次元テンソルの各次元についてのループの反復回数に基づく、請求項1~4のいずれか一項に記載の装置。
- 前記1つまたは複数のプロセッサは、前記N次元テンソルの前記データの前記第1の部分を、前記バッファ割り当て要素の前記現在の値に対応する前記メモリの前記それぞれのメモリ場所から前記第2のデータ格納場所に転送するように配置される、請求項1~5のいずれか一項に記載の装置。
- 前記バッファ割り当て要素の前記値は、前記バッファ割り当て要素の前記値を切り替えるために使用されるループのループ変数であり、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に前記バッファ割り当て要素の前記値を切り替えることは、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して前記ループ変数を反復することを備える、請求項1~6のいずれか一項に記載の装置。 - データを転送するためのコンピューティングシステムによって実行される方法であって、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されているN次元テンソルのデータのバッファメモリアドレスを決定するステップを備え、Nは、2以上の整数であり、前記決定するステップは、
複数の値の間で切り替え可能なバッファ割り当て要素の現在の値を識別するステップを備え、前記複数の値の各々は、複数のメモリのうちの異なる1つに対応し、前記決定するステップはさらに、
前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になるまで、前記バッファ割り当て要素の前記現在の値に対応する前記N次元テンソルの前記データの第1の部分を前記メモリに割り当てるステップを備え、前記割り当てるステップは、
少なくとも(i)前記複数のメモリのベースアドレスと、(ii)前記バッファ割り当て要素の前記現在の値に対応する前記メモリのメモリアドレスオフセット値と、(iii)データ要素のメモリオフセット値との組み合わせに基づいて、データの前記第1の部分の各データ要素の前記バッファメモリアドレスを決定するステップを含み、各データ要素の前記メモリオフセット値は、前記N次元テンソルを横断するために使用されるループネストにおける複数のループの現在のインデックス値に基づき、前記方法はさらに、
各データ要素の前記決定されたバッファメモリアドレスを使用して、前記N次元テンソルの前記データの前記第1の部分を、前記バッファ割り当て要素の前記現在の値に対応する前記メモリのそれぞれのメモリ場所に転送するステップと、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えるステップとを備える、方法。 - 前記バッファ割り当て要素の前記値は、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して切り替えられる、請求項8に記載の方法。
- 前記メモリのうちの1つの前記メモリアドレスオフセット値はゼロであり、各々の他のメモリの前記メモリアドレスオフセット値はゼロでない、請求項8または9に記載の方法。
- 前記複数のメモリの各メモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項8~10のいずれか一項に記載の方法。 - 各データ要素の前記メモリオフセット値は、前記N次元テンソルの各次元についてのループの反復回数に基づく、請求項8~11のいずれか一項に記載の方法。
- 前記N次元テンソルの前記データの前記第1の部分を、前記バッファ割り当て要素の前記現在の値に対応する前記メモリの前記それぞれのメモリ場所から前記第2のデータ格納場所に転送するステップをさらに備える、請求項8~12のいずれか一項に記載の方法。
- 前記バッファ割り当て要素の前記値は、前記バッファ割り当て要素の前記値を切り替えるために使用されるループのループ変数であり、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に前記バッファ割り当て要素の前記値を切り替えるステップは、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して前記ループ変数を反復するステップを備える、請求項8~13のいずれか一項に記載の方法。 - データを転送するためのシステムであって、
複数のメモリと、
1つまたは複数の数値演算ユニットを含む1つまたは複数の処理ユニットとを備え、前記1つまたは複数の処理ユニットは、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されているN次元テンソルのデータのバッファメモリアドレスを決定するように構成され、Nは、2以上の整数であり、前記決定することは、
複数の値の間で切り替え可能なバッファ割り当て要素の現在の値を識別することを備え、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、前記決定することはさらに、
前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になるまで、前記バッファ割り当て要素の前記現在の値に対応する前記N次元テンソルの前記データの第1の部分を前記メモリに割り当てることを備え、前記割り当てることは、
少なくとも(i)前記複数のメモリのベースアドレスと、(ii)前記バッファ割り当て要素の前記現在の値に対応する前記メモリのメモリアドレスオフセット値と、(iii)データ要素のメモリオフセット値との組み合わせに基づいて、データの前記第1の部分の各データ要素の前記バッファメモリアドレスを決定することを含み、各データ要素の前記メモリオフセット値は、前記N次元テンソルを横断するために使用されるループネストにおける複数のループの現在のインデックス値に基づき、前記1つまたは複数の処理ユニットはさらに、
各データ要素の前記決定されたバッファメモリアドレスを使用して、前記N次元テンソルの前記データの前記第1の部分を、前記バッファ割り当て要素の前記現在の値に対応する前記メモリのそれぞれのメモリ場所に転送するように構成され、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えるように構成される、システム。 - 前記1つまたは複数の処理ユニットは、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して、前記バッファ割り当て要素の前記値を切り替えるように配置される、請求項15に記載のシステム。
- 前記メモリのうちの1つの前記メモリアドレスオフセット値はゼロであり、各々の他のメモリの前記メモリアドレスオフセット値はゼロでない、請求項15または16に記載のシステム。
- 前記複数のメモリの各メモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項15~17のいずれか一項に記載のシステム。 - 各データ要素の前記メモリオフセット値は、前記N次元テンソルの各次元についてのループの反復回数に基づく、請求項15~18のいずれか一項に記載のシステム。
- 前記バッファ割り当て要素の前記値は、前記バッファ割り当て要素の前記値を切り替えるために使用されるループのループ変数であり、
前記N次元テンソルの前記データの次の部分のバッファメモリアドレスを決定する前に前記バッファ割り当て要素の前記値を切り替えることは、前記バッファ割り当て要素の前記現在の値に対応する前記メモリが一杯になったと判断したことに応答して前記ループ変数を反復することを備える、請求項15~19のいずれか一項に記載のシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023187546A JP2024020270A (ja) | 2017-07-05 | 2023-11-01 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/641,824 US10175912B1 (en) | 2017-07-05 | 2017-07-05 | Hardware double buffering using a special purpose computational unit |
US15/641,824 | 2017-07-05 | ||
JP2019530793A JP7062659B2 (ja) | 2017-07-05 | 2018-06-18 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
PCT/US2018/038009 WO2019009993A1 (en) | 2017-07-05 | 2018-06-18 | DOUBLE MATERIAL BUFFER USING A SPECIALIZED CALCULATION UNIT |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019530793A Division JP7062659B2 (ja) | 2017-07-05 | 2018-06-18 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023187546A Division JP2024020270A (ja) | 2017-07-05 | 2023-11-01 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022106815A JP2022106815A (ja) | 2022-07-20 |
JP7379581B2 true JP7379581B2 (ja) | 2023-11-14 |
Family
ID=62981308
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019530793A Active JP7062659B2 (ja) | 2017-07-05 | 2018-06-18 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
JP2022069548A Active JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
JP2023187546A Pending JP2024020270A (ja) | 2017-07-05 | 2023-11-01 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019530793A Active JP7062659B2 (ja) | 2017-07-05 | 2018-06-18 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023187546A Pending JP2024020270A (ja) | 2017-07-05 | 2023-11-01 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Country Status (7)
Country | Link |
---|---|
US (3) | US10175912B1 (ja) |
EP (2) | EP3686743A1 (ja) |
JP (3) | JP7062659B2 (ja) |
KR (2) | KR102335909B1 (ja) |
CN (2) | CN110036374B (ja) |
TW (3) | TWI777442B (ja) |
WO (1) | WO2019009993A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
US10936942B2 (en) | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
CN111324294B (zh) * | 2018-12-17 | 2023-11-07 | 地平线(上海)人工智能技术有限公司 | 存取张量数据的方法和装置 |
US11748599B2 (en) * | 2019-02-21 | 2023-09-05 | Texas Instruments Incorporated | Super-tiling in neural network processing to enable analytics at lower memory speed |
CN111756940A (zh) * | 2020-07-07 | 2020-10-09 | 广州威谱通信设备有限公司 | 一种可编程寻址双输入混音的精简数字语音通信系统 |
US11954580B2 (en) | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
US11704562B1 (en) | 2020-11-04 | 2023-07-18 | Meta Platforms, Inc. | Architecture for virtual instructions |
US11709783B1 (en) | 2020-11-11 | 2023-07-25 | Meta Platforms, Inc. | Tensor data distribution using grid direct-memory access (DMA) controller |
US11972349B1 (en) | 2020-11-12 | 2024-04-30 | Meta Platforms, Inc. | Flexible compute array utilization in a tensor processor |
US11922306B2 (en) | 2020-12-28 | 2024-03-05 | Meta Platforms, Inc. | Tensor controller architecture |
US12001893B1 (en) | 2020-12-28 | 2024-06-04 | Meta Platforms, Inc. | Distributed synchronization scheme |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
JP2006301724A (ja) | 2005-04-15 | 2006-11-02 | Seiko Epson Corp | メモリコントローラ、画像処理コントローラ及び電子機器 |
US20170103298A1 (en) | 2015-10-09 | 2017-04-13 | Altera Corporation | Method and Apparatus for Designing and Implementing a Convolution Neural Net Accelerator |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163132A (en) * | 1987-09-24 | 1992-11-10 | Ncr Corporation | Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device |
JPH02132566A (ja) * | 1988-11-14 | 1990-05-22 | Toshiba Corp | 画像データ転送装置 |
US4910683A (en) * | 1988-12-20 | 1990-03-20 | Sun Microsystems, Inc. | Method and apparatus for fractional double buffering |
JPH03131951A (ja) * | 1989-10-18 | 1991-06-05 | Fujitsu Ltd | データ転送方式 |
JPH0553982A (ja) * | 1991-08-28 | 1993-03-05 | Nec Corp | メモリ制御回路 |
DE69727465T2 (de) * | 1997-01-09 | 2004-12-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6363470B1 (en) | 1998-10-06 | 2002-03-26 | Texas Instruments Incorporated | Circular buffer management |
JP2001022950A (ja) | 1999-05-20 | 2001-01-26 | Mitsubishi Electric Inf Technol Center America Inc | ボリュームレンダリンググラフィックボード |
US7155570B1 (en) | 2000-09-29 | 2006-12-26 | Intel Corporation | FIFO write/LIFO read trace buffer with software and hardware loop compression |
JP2002182925A (ja) | 2000-12-12 | 2002-06-28 | Hitachi Ltd | コンパイル方法及びコンピュータ読み取り可能な記録媒体 |
EP1367493A1 (en) | 2002-05-30 | 2003-12-03 | STMicroelectronics Limited | Prefetch buffer |
JP4004389B2 (ja) | 2002-11-27 | 2007-11-07 | 富士通株式会社 | バッファメモリ管理方法及びシステム |
US6931497B2 (en) | 2003-01-09 | 2005-08-16 | Emulex Design & Manufacturing Corporation | Shared memory management utilizing a free list of buffer indices |
GB0313986D0 (en) | 2003-06-17 | 2003-07-23 | Zarlink Semiconductor Inc | Data memory extension for use in double buffered TDM switches |
US20080270332A1 (en) * | 2003-08-26 | 2008-10-30 | Paul Rudolf | Associative Memory Device and Method Based on Wave Propagation |
US7864864B2 (en) | 2005-06-27 | 2011-01-04 | Intel Corporation | Context buffer address determination using a plurality of modular indexes |
US20100281192A1 (en) | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Apparatus and method for transferring data within a data processing system |
JP2011039302A (ja) | 2009-08-11 | 2011-02-24 | Seiko Epson Corp | バッファー制御回路、表示コントローラー及び電子機器 |
US8458377B2 (en) * | 2010-03-05 | 2013-06-04 | Lsi Corporation | DMA engine capable of concurrent data manipulation |
US8892787B2 (en) * | 2012-03-06 | 2014-11-18 | Lsi Corporation | Methods and apparatus for packing received frames in buffers in a serial attached SCSI (SAS) device |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
US9875104B2 (en) | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
-
2017
- 2017-07-05 US US15/641,824 patent/US10175912B1/en active Active
-
2018
- 2018-06-18 EP EP20162095.2A patent/EP3686743A1/en not_active Withdrawn
- 2018-06-18 WO PCT/US2018/038009 patent/WO2019009993A1/en unknown
- 2018-06-18 CN CN201880004800.7A patent/CN110036374B/zh active Active
- 2018-06-18 KR KR1020217030911A patent/KR102335909B1/ko active IP Right Grant
- 2018-06-18 KR KR1020197015789A patent/KR102309522B1/ko active IP Right Grant
- 2018-06-18 CN CN202310201075.5A patent/CN116303111A/zh active Pending
- 2018-06-18 EP EP18743611.8A patent/EP3529701B1/en active Active
- 2018-06-18 JP JP2019530793A patent/JP7062659B2/ja active Active
- 2018-07-05 TW TW110108162A patent/TWI777442B/zh active
- 2018-07-05 TW TW108128281A patent/TWI722526B/zh active
- 2018-07-05 TW TW107123234A patent/TWI671633B/zh active
-
2019
- 2019-01-04 US US16/240,459 patent/US10496326B2/en active Active
- 2019-12-02 US US16/700,385 patent/US11099772B2/en active Active
-
2022
- 2022-04-20 JP JP2022069548A patent/JP7379581B2/ja active Active
-
2023
- 2023-11-01 JP JP2023187546A patent/JP2024020270A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
JP2006301724A (ja) | 2005-04-15 | 2006-11-02 | Seiko Epson Corp | メモリコントローラ、画像処理コントローラ及び電子機器 |
US20170103298A1 (en) | 2015-10-09 | 2017-04-13 | Altera Corporation | Method and Apparatus for Designing and Implementing a Convolution Neural Net Accelerator |
Also Published As
Publication number | Publication date |
---|---|
TW202131194A (zh) | 2021-08-16 |
CN110036374B (zh) | 2023-03-10 |
US10175912B1 (en) | 2019-01-08 |
US10496326B2 (en) | 2019-12-03 |
JP2020506453A (ja) | 2020-02-27 |
US20200183612A1 (en) | 2020-06-11 |
JP7062659B2 (ja) | 2022-05-06 |
TW201908977A (zh) | 2019-03-01 |
KR102335909B1 (ko) | 2021-12-06 |
KR20190073535A (ko) | 2019-06-26 |
US20190138243A1 (en) | 2019-05-09 |
EP3686743A1 (en) | 2020-07-29 |
KR102309522B1 (ko) | 2021-10-07 |
TWI777442B (zh) | 2022-09-11 |
TWI722526B (zh) | 2021-03-21 |
TWI671633B (zh) | 2019-09-11 |
TW201945937A (zh) | 2019-12-01 |
WO2019009993A1 (en) | 2019-01-10 |
JP2022106815A (ja) | 2022-07-20 |
EP3529701A1 (en) | 2019-08-28 |
KR20210119584A (ko) | 2021-10-05 |
CN116303111A (zh) | 2023-06-23 |
JP2024020270A (ja) | 2024-02-14 |
EP3529701B1 (en) | 2020-03-11 |
CN110036374A (zh) | 2019-07-19 |
US11099772B2 (en) | 2021-08-24 |
US20190012112A1 (en) | 2019-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7379581B2 (ja) | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング | |
JP7279226B2 (ja) | 代替ループ限界値 | |
US20220051087A1 (en) | Neural Network Architecture Using Convolution Engine Filter Weight Buffers | |
JP7051895B2 (ja) | 加算器を使用した多次元テンソルにおけるデータへのアクセス | |
EP3265907B1 (en) | Data processing using resistive memory arrays | |
TW202215366A (zh) | 對圖形進行分區的方法以及更新圖形的頂點的裝置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220511 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220511 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230328 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230711 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20231003 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231101 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7379581 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |