JP7062659B2 - 特殊目的計算ユニットを用いたハードウェアダブルバッファリング - Google Patents
特殊目的計算ユニットを用いたハードウェアダブルバッファリング Download PDFInfo
- Publication number
- JP7062659B2 JP7062659B2 JP2019530793A JP2019530793A JP7062659B2 JP 7062659 B2 JP7062659 B2 JP 7062659B2 JP 2019530793 A JP2019530793 A JP 2019530793A JP 2019530793 A JP2019530793 A JP 2019530793A JP 7062659 B2 JP7062659 B2 JP 7062659B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- buffer
- value
- group
- 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
- 238000004364 calculation method Methods 0.000 title claims description 22
- 230000003139 buffering effect Effects 0.000 title description 14
- 230000015654 memory Effects 0.000 claims description 336
- 239000000872 buffer Substances 0.000 claims description 311
- 238000013500 data storage Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 23
- 238000013528 artificial neural network Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 239000007853 buffer solution Substances 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
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid 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)
Description
本明細書は、一般に、ハードウェアダブルバッファを有する特殊目的計算ユニットを用いて機械学習計算を行うことに関する。
本明細書には、N次元テンソルのデータをダブルバッファリングするための特殊目的計算ユニットの使用に関連する技術が記載されている。
詳細な説明
一般に、ソフトウェアアルゴリズムがN次元テンソルを処理するとき、ネステッドループが用いられる場合がある。各ループは、N次元テンソルのそれぞれの次元を横断することに関与し得る。多次元テンソルは、マトリックスまたは多次元マトリックスであってもよい。たとえば、二次元テンソルは、マトリックスであり、三次元テンソルは、複数の二次元マトリックスからなる三次元マトリックスである。N次元テンソルの各次元は、1つ以上の要素を含んでもよく、各要素は、それぞれのデータ値を格納してもよい。たとえば、テンソルは、プログラムにおける変数であってもよく、当該変数は、3つの次元を有してもよい。第1の次元は、300個の要素の長さを有してもよく、第2の次元は、1000個の要素の長さを有してもよく、第3の次元は、20個の要素の長さを有してもよい。当然のことながら、各次元において他の個数の要素も可能である。
Claims (15)
- データを転送するための装置であって、
少なくとも第1のメモリおよび第2のメモリを含む複数のメモリと、
1つ以上の処理ユニットとを備え、前記1つ以上の処理ユニットは、
第1のデータ格納場所に格納され、前記第1のデータ格納場所からバッファメモリとしての前記複数のメモリを介して第2のデータ格納場所に転送されるN次元テンソルの複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するように構成され、前記シーケンスの前記バッファメモリアドレスを決定することは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別することによってなされ、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎のバッファメモリアドレスを決定することによってなされ、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が、前記第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループ中の各データ要素毎のメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てることを含み、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値は、前記N次元テンソルを横断するために用いられるループネストにおける複数のループの現在のインデックス値に基づき、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、さらに、
前記バッファ割り当て要素の前記値が、前記第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記第1のメモリの前記ベースアドレスと、前記第2のメモリのメモリアドレスオフセット値と、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てることを含み、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループ中の各データ要素毎の前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えることによってなされ、
前記1つ以上の処理ユニットは、さらに、
各データ要素毎の前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するように構成され、
前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリの第1のメモリアドレスと前記第2のメモリの第1のメモリアドレスとの間の差に基づく、装置。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項1に記載の装置。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
N次元テンソルの前記複数のデータ要素を備える前記シーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項1または2に記載の装置。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、前記シーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値を決定することを備える、請求項1~3のいずれか1項に記載の装置。
- 前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定することと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定することとを備える、請求項4に記載の装置。 - データを転送するためのコンピューティングシステムによって実行される方法であって、
第1のデータ格納場所に格納され、前記第1のデータ格納場所からバッファメモリとしての複数のメモリを介して第2のデータ格納場所に転送されるN次元テンソルの複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するステップを備え、前記シーケンスの前記バッファメモリアドレスを決定するステップは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別するステップによってなされ、前記複数の値の各々は、少なくとも第1のメモリおよび第2のメモリを含む複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定するステップは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎のバッファメモリアドレスを決定するステップによってなされ、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定するステップは、
前記バッファ割り当て要素の前記値が、前記第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループ中の各データ要素毎のメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てるステップを含み、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値は、前記N次元テンソルを横断するために用いられるループネストにおける複数のループの現在のインデックス値に基づき、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定するステップは、さらに、
前記バッファ割り当て要素の前記値が、前記第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記第1のメモリの前記ベースアドレスと、前記第2のメモリのメモリアドレスオフセット値と、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てるステップを含み、
前記シーケンスの前記バッファメモリアドレスを決定するステップは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループ中の各データ要素毎の前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えるステップによってなされ、
前記方法は、さらに、
各データ要素毎の前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するステップを備え、
前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリの第1のメモリアドレスと前記第2のメモリの第1のメモリアドレスとの間の差に基づく、方法。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項6に記載の方法。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
N次元テンソルの前記複数のデータ要素を備える前記シーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項6または7に記載の方法。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定するステップは、前記シーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値を決定することを備える、請求項6から8のいずれか1項に記載の方法。
- 前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定するステップは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定するステップと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定するステップとを備える、請求項9に記載の方法。 - データを転送するためのシステムであって、
少なくとも第1のメモリおよび第2のメモリを含む複数のメモリと、
1つ以上の数値演算ユニットを含む1つ以上の処理ユニットとを備え、前記1つ以上の処理ユニットは、
第1のデータ格納場所に格納され、前記第1のデータ格納場所からバッファメモリとしての前記複数のメモリを介して第2のデータ格納場所に転送されるN次元テンソルの複数のデータ要素を備えるシーケンスのバッファメモリアドレスを決定するように構成され、前記シーケンスの前記バッファメモリアドレスを決定することは、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、複数の値の間で切り替え可能なバッファ割り当て要素の値を識別することによってなされ、前記複数の値の各々は、前記複数のメモリのうちの異なる1つに対応し、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎のバッファメモリアドレスを決定することによってなされ、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が、前記第1のメモリに対応する第1の値である場合に、前記第1のメモリのベースアドレスと前記1つ以上のデータ要素のグループ中の各データ要素毎のメモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第1のメモリに割り当てることを含み、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値は、前記N次元テンソルを横断するために用いられるループネストにおける複数のループの現在のインデックス値に基づき、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、さらに、
前記バッファ割り当て要素の前記値が、前記第2のメモリに対応する、前記第1の値とは異なる第2の値である場合に、前記第1のメモリの前記ベースアドレスと、前記第2のメモリのメモリアドレスオフセット値と、前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値との組み合わせに基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することによって、前記1つ以上のデータ要素のグループを前記第2のメモリに割り当てることを含み、
前記シーケンスの前記バッファメモリアドレスを決定することは、さらに、
前記シーケンスにおける前記複数のデータ要素のうちの1つ以上のデータ要素の各グループについて、前記データ要素のシーケンスの1つ以上のデータ要素の後続グループ中の各データ要素毎の前記バッファメモリアドレスを決定する前に、前記バッファ割り当て要素の前記値を切り替えることによってなされ、
前記1つ以上の処理ユニットは、さらに、
各データ要素毎の前記決定されたバッファメモリアドレスを用いて、各データ要素を前記第1または第2のメモリのそれぞれのメモリ場所に転送するように構成され、
前記第2のメモリの前記メモリアドレスオフセット値は、前記第1のメモリの第1のメモリアドレスと前記第2のメモリの第1のメモリアドレスとの間の差に基づく、システム。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
前記第1のデータ格納場所および前記第2のデータ格納場所の各々は、少なくとも、前記第1のデータ記憶容量よりも大きな第2のデータ記憶容量を備える、請求項11に記載のシステム。 - 前記第1のメモリおよび前記第2のメモリは、各々が第1のデータ記憶容量を有するバッファであり、
N次元テンソルの前記複数のデータ要素を備える前記シーケンスは、前記第1のデータ記憶容量を超えるデータ量を備える、請求項11または12に記載のシステム。 - 前記バッファ割り当て要素の前記値および前記第2のメモリのメモリアドレスオフセット値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、前記シーケンスを反復するために用いられる1つ以上のループの反復回数に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記メモリオフセット値を決定することを備える、請求項11~13のいずれか1項に記載のシステム。
- 前記バッファ割り当て要素の前記値に基づいて前記1つ以上のデータ要素のグループ中の各データ要素毎の前記バッファメモリアドレスを決定することは、
前記バッファ割り当て要素の前記値が前記第2の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記第2のメモリの前記メモリアドレスオフセット値と、(iii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定することと、
前記バッファ割り当て要素の前記値が前記第1の値であるたびに、(i)前記第1のメモリの前記ベースアドレスと、(ii)前記データ要素の前記メモリオフセット値との合計を前記データ要素の前記バッファメモリアドレスとして決定することとを備える、請求項14に記載のシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022069548A JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
JP2023187546A JP2024020270A (ja) | 2017-07-05 | 2023-11-01 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Applications Claiming Priority (3)
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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022069548A Division JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020506453A JP2020506453A (ja) | 2020-02-27 |
JP7062659B2 true JP7062659B2 (ja) | 2022-05-06 |
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 After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022069548A Active JP7379581B2 (ja) | 2017-07-05 | 2022-04-20 | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
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) | 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 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001022950A (ja) | 1999-05-20 | 2001-01-26 | Mitsubishi Electric Inf Technol Center America Inc | ボリュームレンダリンググラフィックボード |
JP2002182925A (ja) | 2000-12-12 | 2002-06-28 | Hitachi Ltd | コンパイル方法及びコンピュータ読み取り可能な記録媒体 |
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
US20060236012A1 (en) | 2005-04-15 | 2006-10-19 | Seiko Epson Corporation | Memory controller, image processing controller, and electronic instrument |
JP2011039302A (ja) | 2009-08-11 | 2011-02-24 | Seiko Epson Corp | バッファー制御回路、表示コントローラー及び電子機器 |
US20130238821A1 (en) | 2012-03-06 | 2013-09-12 | Lsi Corporation | Methods and apparatus for packing received frames in buffers in a serial attached scsi (sas) device |
Family Cites Families (21)
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 |
US7155570B1 (en) | 2000-09-29 | 2006-12-26 | Intel Corporation | FIFO write/LIFO read trace buffer with software and hardware loop compression |
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 |
US8458377B2 (en) * | 2010-03-05 | 2013-06-04 | Lsi Corporation | DMA engine capable of concurrent data manipulation |
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
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001022950A (ja) | 1999-05-20 | 2001-01-26 | Mitsubishi Electric Inf Technol Center America Inc | ボリュームレンダリンググラフィックボード |
JP2002182925A (ja) | 2000-12-12 | 2002-06-28 | Hitachi Ltd | コンパイル方法及びコンピュータ読み取り可能な記録媒体 |
JP2002254729A (ja) | 2001-03-02 | 2002-09-11 | Sharp Corp | 画像データのdma制御装置 |
US20060236012A1 (en) | 2005-04-15 | 2006-10-19 | Seiko Epson Corporation | Memory controller, image processing controller, and electronic instrument |
JP2006301724A (ja) | 2005-04-15 | 2006-11-02 | Seiko Epson Corp | メモリコントローラ、画像処理コントローラ及び電子機器 |
JP2011039302A (ja) | 2009-08-11 | 2011-02-24 | Seiko Epson Corp | バッファー制御回路、表示コントローラー及び電子機器 |
US20130238821A1 (en) | 2012-03-06 | 2013-09-12 | Lsi Corporation | Methods and apparatus for packing received frames in buffers in a serial attached scsi (sas) device |
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 |
JP2024020270A (ja) | 2024-02-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 |
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 |
---|---|---|
JP7062659B2 (ja) | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング | |
JP7035080B2 (ja) | 代替ループ限界値 | |
JP6921951B2 (ja) | ニューラルネットワーク命令セットアーキテクチャ | |
EP3265907B1 (en) | Data processing using resistive memory arrays | |
JP2022095773A (ja) | 加算器を使用した多次元テンソルにおけるデータへのアクセス | |
WO2011156247A2 (en) | Processor for large graph algorithm computations and matrix operations | |
TW202215366A (zh) | 對圖形進行分區的方法以及更新圖形的頂點的裝置及方法 | |
CN118132230A (zh) | 众核架构下的神经形态芯片的数据拆分处理方法和处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190814 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190814 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211012 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211021 |
|
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: 20220322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220420 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7062659 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |