JP2024020270A - 特殊目的計算ユニットを用いたハードウェアダブルバッファリング - Google Patents
特殊目的計算ユニットを用いたハードウェアダブルバッファリング Download PDFInfo
- Publication number
- JP2024020270A JP2024020270A JP2023187546A JP2023187546A JP2024020270A JP 2024020270 A JP2024020270 A JP 2024020270A JP 2023187546 A JP2023187546 A JP 2023187546A JP 2023187546 A JP2023187546 A JP 2023187546A JP 2024020270 A JP2024020270 A JP 2024020270A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data elements
- value
- group
- buffer
- 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
- 230000003139 buffering effect Effects 0.000 title description 13
- 230000015654 memory Effects 0.000 claims abstract description 343
- 239000000872 buffer Substances 0.000 claims abstract description 310
- 238000013500 data storage Methods 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims description 12
- 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
- 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
- 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/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/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/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/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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Image Input (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Communication Control (AREA)
Abstract
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 (21)
- データを転送するための装置であって、
少なくとも第1のメモリおよび第2のメモリを含む複数のメモリと、
1つ以上の処理ユニットとを備え、前記1つ以上の処理ユニットは、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されている複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するように構成され、前記シーケンスの前記バッファメモリアドレスを決定することは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別することによってなされ、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループのバッファメモリアドレスを決定することによってなされ、前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が、前記第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループのメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てることと、
前記バッファ割り当て要素の前記値が、前記第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てるために、前記第1のメモリの前記ベースアドレスと、前記第2のメモリの前記メモリアドレスオフセット値と、前記1つ以上のデータ要素のグループの前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記メモリアドレスを決定することによって、前記データ要素を前記第2のメモリに割り当てることとを含み、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループの前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えることによってなされ、
前記1つ以上の処理ユニットは、さらに、
1つ以上のデータ要素の各グループの前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するように構成される、装置。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項1に記載の装置。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記データ要素のシーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項1または2に記載の装置。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、前記データ要素のシーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループの前記メモリオフセット値を決定することを備える、前述の請求項のいずれか1項に記載の装置。
- 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記1つ以上のデータ要素のグループの前記メモリオフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定することと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレス値から独立した前記1つ以上のデータ要素のグループの前記オフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定することとを備える、請求項4に記載の装置。 - 前記1つ以上のデータ要素のグループの前記メモリオフセット値は、N次元テンソルの各次元についてのループの反復回数に基づく、請求項4または5に記載の装置。
- 前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリのメモリアドレスと前記第2のメモリのアドレスとの間の差に基づく、前述の請求項のいずれか1項に記載の装置。
- データを転送するためのコンピューティングシステムによって実行される方法であって、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されている複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するステップを備え、前記シーケンスの前記バッファメモリアドレスを決定するステップは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別するステップによってなされ、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定するステップは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループのバッファメモリアドレスを決定するステップによってなされ、前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定するステップは、
前記バッファ割り当て要素の前記値が、複数のメモリの第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループのメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てるステップと、
前記バッファ割り当て要素の前記値が、前記複数のメモリの第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てるために、前記第1のメモリの前記ベースアドレスと、前記第2のメモリの前記メモリアドレスオフセット値と、前記1つ以上のデータ要素のグ
ループの前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記メモリアドレスを決定することによって、前記データ要素を前記第2のメモリに割り当てるステップとを含み、
前記シーケンスの前記バッファメモリアドレスを決定するステップは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループの前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えるステップによってなされ、
前記方法は、さらに、
1つ以上のデータ要素の各グループの前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するステップを備える、方法。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項8に記載の方法。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記データ要素のシーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項8または9に記載の方法。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定するステップは、前記データ要素のシーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループの前記メモリオフセット値を決定することを備える、請求項8から10のいずれか1項に記載の方法。
- 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定するステップは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記1つ以上のデータ要素のグループの前記メモリオフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定するステップと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレス値から独立した前記1つ以上のデータ要素のグループの前記オフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定するステップとを備える、請求項11に記載の方法。 - 前記1つ以上のデータ要素のグループの前記メモリオフセット値は、N次元テンソルの各次元についてのループの反復回数に基づく、請求項11または12に記載の方法。
- 前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリのメモリアドレスと前記第2のメモリのアドレスとの間の差に基づく、請求項11から13のいずれか1項に記載の方法。
- データを転送するためのシステムであって、
少なくとも第1のメモリおよび第2のメモリを含む複数のメモリと、
1つ以上の数値演算ユニットを含む1つ以上の処理ユニットとを備え、前記1つ以上の処理ユニットは、
第1のデータ格納場所に格納され、第2のデータ格納場所に転送されている複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するように構成され、前記シーケンスの前記バッファメモリアドレスを決定することは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別することによってなされ、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループのバッファメモリアドレスを決定することによってなされ、前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が、前記第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループのメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てることと、
前記バッファ割り当て要素の前記値が、前記第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てるために、前記第1のメモリの前記ベースアドレスと、前記第2のメモリの前記メモリアドレスオフセット値と、前記1つ以上のデータ要素のグループの前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループの前記メモリアドレスを決定することによって、前記データ要素を前記第2のメモリに割り当てることとを含み、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループの前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えることによってなされ、
前記1つ以上の処理ユニットは、さらに、
各々の決定されたメモリアドレスを特定するデータを出力するように構成され、
1つ以上のプロセッサは、1つ以上のデータ要素の各グループの前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するように構成される、システム。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項15に記載のシステム。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記データ要素のシーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項15または16に記載のシステム。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、前記データ要素のシーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループの前記メモリオフセット値を決定することを備える、請求項15から17のいずれか1項に記載のシステム。
- 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループの前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記1つ以上のデータ要素のグループの前記メモリオフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定することと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレス値から独立した前記1つ以上のデータ要素のグループの前記オフセット値との合計を前記1つ以上のデータ要素のグループの前記バッファメモリアドレスとして決定することとを備える、請求項18に記載のシステム。 - 前記1つ以上のデータ要素のグループの前記メモリオフセット値は、N次元テンソルの各次元についてのループの反復回数に基づく、請求項18または19に記載のシステム。
- 前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリのメモリアドレスと前記第2のメモリのアドレスとの間の差に基づく、請求項18から20のいずれか1項に記載のシステム。
Applications Claiming Priority (5)
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 | ||
PCT/US2018/038009 WO2019009993A1 (en) | 2017-07-05 | 2018-06-18 | DOUBLE MATERIAL BUFFER USING A SPECIALIZED CALCULATION UNIT |
JP2019530793A JP7062659B2 (ja) | 2017-07-05 | 2018-06-18 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
JP2022069548A JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022069548A Division JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024020270A true JP2024020270A (ja) | 2024-02-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 (2)
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 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Country Status (7)
Country | Link |
---|---|
US (3) | US10175912B1 (ja) |
EP (2) | EP3686743A1 (ja) |
JP (3) | JP7062659B2 (ja) |
KR (2) | KR102309522B1 (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 |
Family Cites Families (27)
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 | コンパイル方法及びコンピュータ読み取り可能な記録媒体 |
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
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 |
JP2006301724A (ja) | 2005-04-15 | 2006-11-02 | Seiko Epson Corp | メモリコントローラ、画像処理コントローラ及び電子機器 |
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 |
US10726328B2 (en) * | 2015-10-09 | 2020-07-28 | Altera Corporation | Method and apparatus for designing and implementing a convolution neural net accelerator |
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 KR KR1020197015789A patent/KR102309522B1/ko active IP Right Grant
- 2018-06-18 KR KR1020217030911A patent/KR102335909B1/ko active IP Right Grant
- 2018-06-18 CN CN201880004800.7A patent/CN110036374B/zh active Active
- 2018-06-18 JP JP2019530793A patent/JP7062659B2/ja active Active
- 2018-06-18 CN CN202310201075.5A patent/CN116303111A/zh active Pending
- 2018-06-18 EP EP20162095.2A patent/EP3686743A1/en not_active Withdrawn
- 2018-06-18 EP EP18743611.8A patent/EP3529701B1/en active Active
- 2018-06-18 WO PCT/US2018/038009 patent/WO2019009993A1/en unknown
- 2018-07-05 TW TW110108162A patent/TWI777442B/zh active
- 2018-07-05 TW TW107123234A patent/TWI671633B/zh active
- 2018-07-05 TW TW108128281A patent/TWI722526B/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
Also Published As
Publication number | Publication date |
---|---|
JP2020506453A (ja) | 2020-02-27 |
TWI671633B (zh) | 2019-09-11 |
KR20210119584A (ko) | 2021-10-05 |
US20190012112A1 (en) | 2019-01-10 |
CN110036374B (zh) | 2023-03-10 |
US20190138243A1 (en) | 2019-05-09 |
EP3529701B1 (en) | 2020-03-11 |
KR102335909B1 (ko) | 2021-12-06 |
EP3529701A1 (en) | 2019-08-28 |
JP7379581B2 (ja) | 2023-11-14 |
US10496326B2 (en) | 2019-12-03 |
US20200183612A1 (en) | 2020-06-11 |
KR102309522B1 (ko) | 2021-10-07 |
TW201945937A (zh) | 2019-12-01 |
US11099772B2 (en) | 2021-08-24 |
TW202131194A (zh) | 2021-08-16 |
CN116303111A (zh) | 2023-06-23 |
JP2022106815A (ja) | 2022-07-20 |
CN110036374A (zh) | 2019-07-19 |
TWI777442B (zh) | 2022-09-11 |
EP3686743A1 (en) | 2020-07-29 |
TW201908977A (zh) | 2019-03-01 |
JP7062659B2 (ja) | 2022-05-06 |
WO2019009993A1 (en) | 2019-01-10 |
KR20190073535A (ko) | 2019-06-26 |
US10175912B1 (en) | 2019-01-08 |
TWI722526B (zh) | 2021-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7379581B2 (ja) | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング | |
JP7035080B2 (ja) | 代替ループ限界値 | |
US11907830B2 (en) | Neural network architecture using control logic determining convolution operation sequence | |
EP3265907B1 (en) | Data processing using resistive memory arrays | |
KR102243036B1 (ko) | 가산기를 이용한 다차원 텐서의 데이터 액세스 | |
TWI740274B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231120 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231120 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20231120 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240318 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20240618 |