JP7387017B2 - アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム - Google Patents
アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム Download PDFInfo
- Publication number
- JP7387017B2 JP7387017B2 JP2022549154A JP2022549154A JP7387017B2 JP 7387017 B2 JP7387017 B2 JP 7387017B2 JP 2022549154 A JP2022549154 A JP 2022549154A JP 2022549154 A JP2022549154 A JP 2022549154A JP 7387017 B2 JP7387017 B2 JP 7387017B2
- Authority
- JP
- Japan
- Prior art keywords
- sliding window
- feature map
- count value
- height
- count
- 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
- 238000000034 method Methods 0.000 title claims description 144
- 238000013135 deep learning Methods 0.000 title claims description 27
- 238000004590 computer program Methods 0.000 title description 5
- 239000013598 vector Substances 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 33
- 238000004364 calculation method Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 26
- 238000004458 analytical method Methods 0.000 claims description 24
- 239000000872 buffer Substances 0.000 description 28
- 238000010586 diagram Methods 0.000 description 26
- 238000013461 design Methods 0.000 description 6
- 239000002041 carbon nanotube Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- XDDAORKBJWWYJS-UHFFFAOYSA-N glyphosate Chemical compound OC(=O)CNCP(O)(O)=O XDDAORKBJWWYJS-UHFFFAOYSA-N 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
- Image Generation (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
Description
超長命令語(Very Long Instruction Word)の解析に基づいて実行パラメータを取得し、そのうち、実行パラメータはスライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得し;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて第一目標データの偏移量(offset)を決定し;
第一目標データの開始アドレスを取得し;及び
開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得するステップを含む。
前記解析モジュールは、超長命令語の解析に基づいて実行パラメータを取得するために用いられ、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ、
前記取得モジュールは、第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得するために用いられ、
前記決定モジュールは、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて第一目標データの偏移量を決定するために用いられ、
前記取得モジュールはさらに、第一目標データの開始アドレスを取得するために用いられ、
前記計算モジュールは、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得するために用いられる。
少なくとも2つの、上述のような第三側面に記載のアドレス生成ユニットを含み、
少なくとも2つの前記アドレス生成ユニットには、データを読み取るための少なくとも1つのアドレス生成ユニット、及びデータを書き込むための少なくとも1つのアドレス生成ユニットを含まれる。
1、バッチ(batch)
図1を参照する。図1は本出願の実施例におけるtensorの一例を示す図である。図1に示すように、図1における(A)の図に示すのは1つのtensorの1つのbatchであり、該batchは深さがC0と表され、高さがH0と表され、幅がW0と表される。
図1における(B)の図を参照する。そのうち、A1により指示されるのはbatchであり、1つのbatchに対して切割を行った後に、A2により指示されるtileを得ることができ、tileはその対応する深さがMと表される、高さがHと表され、幅がWと表される。なお、tileは、オンチップメモリがtensor全体をキャッシュすることができないためtensorに対して切割を行った後に取得されるものであり、オンチップメモリがtensor全体をキャッシュすることができる場合、tileの次元の切り分けを行う必要はなく、即ち、テンソル全体は1つのtileと見なすことができる。
図1における(B)の図を参照する。そのうち、A3により指示されるのはsliceであり、1つのtileに対して切割を行った後に、A3により指示されるsliceを得ることができ、sliceは高さがHと表され、幅がWと表され、sliceの幅及び高さにおける座標が(x,y)であるときに、対応する長さがmであるベクトル(vector)を取得し得る。
図1における(B)の図を参照する。そのうち、A4により指示されるのは、サイズがH*W*1のfeature mapであり、そのうち、“1”はfeature mapの深さを示し、1つのsliceに対して切割を行った後に、A4により指示されるfeature mapを得ることができ、sliceが128個のデータチャンネル(channel)に対応するとする場合、該sliceに対して分割を行うことで128個のfeature mapを取得することができる。
“ウィンドウ(window)”と略称されても良い。本出願に係る“ウィンドウ”又は“スライディングウィンドウ”は“カーネルウィンドウ”と理解され得る。図1における(C)の図を参照する。そのうち、A5により指示されるのはkernel_windowであり、kernel_windowはfeature map上でスライディングの方式で値をとることができる。
tensor演算の定義は次のとおりである。1つの演算子(又は関数)について言えば、データアクセスのアドレスは往々にして規則化されており、かつ計算することができる。プーリング(pool)演算を例とし、プーリングはループ(loop)をコアとする演算であり、中央処理装置(central processing unit、CPU)又はグラフィックス処理器(graphics processing unit、GPU)によりコンパイルされた後に、実行される命令流から見ると、大量の重複命令セグメントが存在し、重複する命令数についてkernel_window、slice及びbatchを重複周期とし、命令実行順序を決定し、そして、データ配列フォーマット(例えば、NHWC(バッチ、高さ、幅、チャンネル数))を決定し、それから、データアクセスアドレスを決定し、即ち、優先的にkernel_window内のデータに順次アクセスし、その後、kernel_windowを固定したストライド(stride)移動し、次の1つのkernel_windowを取得するので、データアクセスのアドレスは規則化されており、かつ計算することができる。このような特徴により、tensor計算の特性に基づいて深層学習処理器におけるベクトル処理ユニットに対して最適化を行うことができる。毎回の操作が預知可能な決定性操作であるときに、アクセスインターフェイスの帯域幅を最大限に利用し、すべてのアクセス操作をパイプライン化することで、各クロック周期において計算用の1組のベクトルデータが演算ユニットに到達するようにさせ、アクセス損失を減らすことができる。よって、3次元のtensorを処理するときに、vector、kernel_window、feature map、slice、tile及びbatchなどの異なる次元の対応パラメータに基づいて、入力される1つ又は複数のbatchのtensor上でデータを順次読み取って、演算ユニット、例えば、算術論理ユニット(arithmetic logic unit、ALU)に送信し得る。これにより、深層学習処理器におけるチップのアドレス生成ユニット(address generation Unit、AGU)は、tensorのアクセス特性に基づいて設計が簡素化され、アクセスの効率を向上させることができる。
B1に属し、B21乃至B22が指示するデータはすべてkernel_window B2に属する。なお、本出願では図2におけるB11とB12との間の数及びB21とB22との間の数について限定せず、kernel_windowに対して1つのstrideを単位として各深さのfeature
map上でスライディングを行い、1つの位置をスライディングする度に、kernel_window内の1つのデータがオンチップメモリ(onchip-memory)のうちから順次読み出され、複数のkernel_windowにより読み出されるデータは連続したデータ流を形成する。各クロック周期では、1つのkernel_windowの2次元座標に対応して、索引(index)により1つの1*1*VEPのベクトルデータを取得し、そして、ベクトルデータを複数のALUに入力して演算を行ってもらう。具体的には、異なるkernel_windowに対応するデータを区別するために、各kernel_windowにおける最初の1つのデータ及び最後の1つのデータに標識(ID(識別子))を追加することができる。例えば、1つのkernel_window B1における最初の1つのデータB11にウィンドウ開始標識を追加し、kernel_window B1における最後の1つのデータB12にウィンドウ終了標識を追加し、また、例えば、次の1つのkernel_window B2における最初の1つのデータB21にウィンドウ開始標識を追加し、kernel_window B2における最後の1つのデータB22にウィンドウ終了標識を追加することができる。kernel_window B1及びkernel_window B2におけるデータをALUに入力し、ALUはchannelによりウィンドウ標識(即ち、ウィンドウ開始標識又はウィンドウ終了標識)を受信することができ、kernel_windowのウィンドウ開始標識及びウィンドウ終了標識を操作のトリガー条件として設定するときに、ALUは、ウィンドウB1における最初の1つのデータB11においてキャリー(carry(運ばれる))されるウィンドウ開始標識を得た場合、現在計算するのがkernel_window B1内のデータであると決定することができ、ALUは、kernel_window B1における最後の1つのデータB12においてキャリーされるウィンドウ終了標識を得たときに、現在のkernel_window
B1内のデータの入力が完了したと決定することができ、その他は、これに基づいて類推することができる。
深層学習処理器では計算及びデータ提供を行うことができ、データ提供は計算時に計算待ちデータを計算ユニットに伝送することであり、記憶器が一般に多段アーキテクチャを採用するので、データ提供は通常、オフチップメモリ(offchip-memory)からオンチップメモリ(onchip-memory)へ、onchip-memoryからALU専用のバッファ(onchip-near-alu-buffer)へ若しくはonchip-memoryからALU専用のレジスタファイル(onchip-near-alu-register file)へ、及びonchip-near-alu-buffer若しくはonchip-near-alu-register
fileからALUへの3段伝送を含み、そのうち、offchip-memoryからonchip-memoryへ、及びonchip-memoryからonchip-near-alu-buffer若しくはonchip-near-alu-register fileへの伝送は主にデータ準備段階であり、onchip-near-alu-buffer若しくはonchip-near-alu-register
fileからALUへの伝送は計算中のデータ読み込み段階である。本出願により提供されるAGUは、onchip-near-alu-buffer又はonchip-near-alu-register fileからALUへのデータ読み込み段階の問題を解決するために用いられ、あるいは、onchip-memoryからALUへのデータ読み込み段階の問題を解決するために用いられ、提供されるアドレス生成方法は、AGUにおいてtensorアクセスに対してパラメータ化を行うことで、ワンセットのパラメータによる複数の種類のアクセスモードへのサポートを実現し、tensorアクセスの汎用性を向上させ、また、入力されるtensor上でデータを順次読み取り、データアクセスの効率を向上させることができる。
multi data、SIMD)処理器におけるALUの次元における並列度と一致している。
AGUは多段CNTをカスケード接続することにより構成され、各段のCNTは同じセットの設計(パラメータ)を採用し、実際の応用では異なるパラメータを設定する。理解を容易にするために、図4を参照する。図4は本出願の実施例におけるCNTのカスケード接続に基づく多段反復の一例を示す図である。図4に示すように、複数層(階層)のCNTの直列接続があり、即ち、L0_CNTからL6_CNTまでのカスケード接続があり、下の1つの層のCNTの計数が上限値に達したとき、1つ上の層のCNTに対して桁上げ操作を行う。同時に、現在の出力の計数値を更新する。具体的には、L0計数はベクトル内ループ(vector loop)の計数を示し、L1計数はスライディングウィンドウ幅ループ(window width loop)の計数を示し、L2計数はスライディングウィンドウ高さループ(window height loop)の計数を示し、L3計数は特徴マップ幅ループ(feature map width loop)の計数を示し、L4計数は特徴マップ高さループ(feature map height loop)の計数を示し、L5計数はスライスループ(slice loop)の計数を示し、L6計数はバッチループ(batch loop)の計数を示し、L5計数及びL6計数は制御部分であり、L0計数乃至L4計数は1回の呼び出しループであり、即ち、L0計数乃至L4計数が1回呼び出された後にL5計数に対して桁上げ操作を行うことができ、L0計数終了後にリードアドレスをdata bufferに1回送信することができ、L0計数における深さ計数値がディセーブルにされた場合、各AGUがdata bufferに1組のリードアドレスを送信することで、ALUは演算時に該リードアドレスのうちから対応するデータを得ることができる。
と表すことができ、スライディングウィンドウ高さ範囲は、
と表すことができ、スライディングウィンドウ高さストライドは、
と表すことができ、特徴マップ幅範囲は、
と表すことができ、及び特徴マップ高さ範囲は、
と表すことができる。
はx番目のloopの高さ計数値と表することができ、
はx番目のloopの幅計数値と表すことができ、
は現在の計数のvector_cntと表すことができる。
mapには複数のkernel_windowが含まれても良く、C5が指示するのはfeature mapにおける1つのkernel_windowであり、第一目標データがC6により指示される要素位置に格納されることを例にして説明を行い、要素位置C6について言えば、feature mapでは、C61が指示するのは第一特徴マップ高さ計数値であり、C62が指示するのは第一特徴マップ幅計数値であり、feature mapについて言えば、第一特徴マップ高さ計数値C61は0であり、第一特徴マップ幅計数値C62は0である。
はスライディングウィンドウ幅計数値、例えば、第一スライディングウィンドウ幅計数値と表すことができ、
は特徴マップ幅計数値、例えば、第一特徴マップ幅計数値と表すことができ、
はスライディングウィンドウ高さ計数値、例えば、第一スライディングウィンドウ高さ計数値と表すことができ、
は第一目標データに対応するバッチ計数値と表すことができ、
convolution)を例として説明を行い、実行コードは以下のとおりである。
//操作数Kが3次元テンソルであり、size(K)=[1,HK,WK,CI]である
//出力結果Bが3次元テンソルであり、size(B)=[NTI,HTO,WKO,CI]である
for(i_NTI=0;i_NTI<NTI;i_NTI++) //batch loop
for(i_CI=0;i_CI<CI;i_CI++) //channel loop
for(i_HTI=0;i_HTI<HTI;i_HTI++) //input height loop
for(i_WTI=0;i_WTI<WTI;i_WTI++) //input width loop
for(i_HK=0;i_HK<HK;i_HK++) // kernel loop on x
for(i_WK=0;i_WK<WK;i_WK++) //kernel loop on y
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI]+=
K[i_HK][i_WK][i_CI]*A[i_NTI][i_HTI+i_HK][i_WTI+I_WK][i_CI]; //add bias
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI]+=bias[i_CI];
そのうち、Nはbatchを表し、Tはテンソルを表し、Iは入力(input)を表し、Oは出力(output)を表し、Wは幅(width)を表し、Hは高さ(height)を表し、Kは畳み込みカーネル(kernel_window)を表す。
//操作数Kが3次元テンソルであり、size(K)=[1,HK,WK,CI]である
//出力結果Bが3次元テンソルであり、size(B)=B[NTI,HTO,WKO,CI]である
//Vector
Engineの並列度Vep=128である
for(i_NTI=0;i_NTI<NTI;i_NTI++) // L6
for(i_CI=0;i_CI<ceil(CI/VEP);i_CI++) // L5
for(i_HTI=0;i_HTI<HTI;i_HTI++) // L4
for(i_WTI=0;i_WTI<WTI;i_WTI++) // L3
for(i_HK=0;i_HK<HK;i_HK++) // L2
for(i_WK=0;i_WK<WK;i_WK++) // L1
for(i_VEP=0;i_VEP<VEP;i_VEP++) // L0
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI*VEP+i_VEP]+=
K[i_HK][i_WK][i_CI]*A[i_NTI][i_HTI+i_HK][i_WTI+I_WK][i_CI*VEP+i_VEP]; //add bias
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI*VEP+i_VEP]+=
bias[i_CI*VEP+i_VEP];
そのうち、Nはbatchを表し、Tはテンソルを表し、Iは入力を表し、Oは出力を表し、Wは幅を表し、Hは高さを表し、Kは畳み込みカーネルを表し、L6はbatch loopを表し、L5はchannel loopを表し、L4はinput
height loopを表し、L3はinput width
loopを表し、L2はx方向上のkernel loopを表し、L1はy方向上のkernel loopを表し、L0はvector
loopを表す。なお、並列度がVEPであるSIMD演算ユニットでは、L0に対応するforループはALUにおいて並列処理される。
第一スライディングウィンドウ幅計数値とスライディングウィンドウ幅ストライドの和を求め、第二スライディングウィンドウ幅計数値を取得し;
第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、第二スライディングウィンドウ高さ計数値を取得し;
第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、幅計数値を取得し;
第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の和を求め、高さ計数値を取得し;及び
高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との和を求め、第一目標データの偏移量を取得することを含む。
が0(かつ0∈(0,2))であり、第一スライディングウィンドウ高さ計数値
が0(かつ0∈(0,2))であり、第一特徴マップ幅計数値
が5(かつ5∈(0,9))であり、第一特徴マップ高さ計数値
が5(かつ5∈(0,9))であり、スライディングウィンドウ幅ストライド
が1であり、スライディングウィンドウ高さストライド
が1であり、行間隔係数
が10であり、かつ列間隔係数
が1であることを1つ例として説明を行う。
=0+1=1
であり、公式(1)を採用して第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、即ち、第二スライディングウィンドウ高さ計数値
=0+1=1
であり、公式(4)を用いて第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、即ち、
幅計数値
であり、公式(3)を使用して第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の加算を行、即ち、
高さ計数値
であり、公式(6)を採用して、高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との和を求め、即ち、
第一目標データの偏移量
第一目標データに対応する基本アドレスを取得し、そのうち、基本アドレスは超長命令語の解析に基づいて取得される設定パラメータであり;
第一目標データに対応するスライス計数値及びバッチ計数値を取得し;
スライス計数値とスライスアドレスインクリメントとの乗算結果と、バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを取得し、そのうち、スライスアドレスインクリメント及びバッチアドレスインクリメントはすべて超長命令語の解析に基づいて取得される設定パラメータであり;及び
アドレス総インクリメントと基本アドレスの加算を行い、第一目標データの開始アドレスを得ることを含んでも良い。
及びbatchアドレスインクリメント
が含まれ、基本アドレスは第一目標データの属するテンソルにおける最初のデータに対応するアドレスであり、sliceアドレスインクリメントはsliceの逓増後のアドレスインクリメント(増加した物理アドレス)であり、batchアドレスインクリメントはbatchの逓増後のアドレスインクリメント(増加したアドレス空間)である。これにより、前述の実施例における公式(7)を用いてスライス計数値とスライスアドレスインクリメントの乗算を行って対応する乗算結果
を取得し、かつバッチ計数値とバッチアドレスインクリメントの乗算を行って対応する乗算結果
を取得し、そして、2つの乗算結果の和を求め、アドレス総インクリメント
を取得し、最後に、アドレス総インクリメントと基本アドレスの加算を行い、第一目標データの開始アドレス
を取得することができる。
が1であり、第一目標データに対応する
が1024であり、かつ第一目標データに対応する
が8192であることを1つの例にして紹介を行い、これにより、
=4096、かつ
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、深さ計数値に対してリセット処理を行うことを含んでも良い。
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にある場合、第一スライディングウィンドウ高さ計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値に対してリセット処理を行い;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値及び深さ計数値に対してリセット処理を行うことを含んでも良い。
第一特徴マップ幅計数値が特徴マップ幅範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一特徴マップ幅計数値に対してリセット処理を行い;
第一特徴マップ高さ計数値が特徴マップ高さ範囲内にない場合、第一特徴マップ高さ計数値に対して桁上げ操作を行い、第一特徴マップ高さ計数値に対してリセット処理を行い;及び
第一特徴マップ高さ計数値が特徴マップ高さ範囲内にない場合、スライス計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うことを含んでも良い。
スライス計数値が最大スライス数値範囲を超過した場合、バッチ計数値に対して桁上げ操作を行い、また、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行い、そのうち、最大スライス数値範囲は第一目標データに対応するテンソル深さ及びベクトル並列度によって決定され;及び
バッチ計数値が最大バッチ値以上である場合、バッチ計数値、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行い、そのうち、最大バッチ値は超長命令語の解析に基づいて取得される設定パラメータであることを含んでも良い。
第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取り;及び
第二データチャンネルにより算術論理ユニットに第一目標データを送信することを含んでも良い。
第二目標データの第二目標アドレスを得たとき、第二目標アドレスに基づいて、第三データチャンネルにより第二目標データを読み取り、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;及び
第四データチャンネルにより算術論理ユニットに第二目標データを送信することを含んでも良い。
E3によりdata bufferのうちから第二目標アドレスに対応する第二目標データを読み取り、そして、channel E4によりALUに第二目標データを送信することができる。AGU_R0では第三目標データの第三目標アドレスを得た後に、channel E5によりdata bufferに該第三目標アドレスを送信し、また、該第三目標アドレスに基づいて、channel
E5によりdata bufferのうちから第三目標アドレスに対応する第三目標データを読み取り、そして、channel E6によりALUに第三目標データを送信することができる。これに基づいて類推して、同時に128個のデータに対して読み取りを行うことができ、各データは何れも異なるchannelにより読み取り及び書き込みが行われる。理解すべきは、図9の例は本技術案への理解用のみであり、実際の応用では、具体的なデータの読み取り及び書き込み方式は実際の状況に応じて柔軟に決定すべきであるということである。
第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取り;及び
第二データチャンネルにより、算術論理ユニットに第一目標データを送信することを含んでも良い。
第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第一データチャンネルにより第二目標データを読み取り、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;及び
第三データチャンネルにより算術論理ユニットに第二目標データを送信することを含んでも良い。
F1によりdata bufferに該第二目標アドレスを送信し、また、該第二目標アドレスに基づいて、channel F1によりdata bufferのうちから第二目標アドレスに対応する第二目標データを読み取り、その後、channel F3によりALUに第二目標データを送信することができる。これに基づいて類推して、128番目のデータの目標アドレスを得た後に、依然としてchannel E1によりdata bufferに該目標アドレスを送信し、また、該目標アドレスに基づいて、channel
E1によりdata bufferのうちから対応するデータを読み取り、そして、channel F5によりALUにデータを送信することができる。理解すべきは、図10に示す例は本技術案への理解用のみであり、実際の応用では、具体的な目標データを読み取り及び送信する方式は実際の状況に応じて柔軟に決定すべきであるということである。
ベクトル層に対応する開始計数値と終了計数値が等しい場合、ベクトル層に対応するループ機能の使用を禁止し、
スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ幅層に対応するループ機能の使用を禁止し、
スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ高さ層に対応するループ機能の使用を禁止し、
特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、特徴マップ幅層に対応するループ機能の使用を禁止し、
特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、特徴マップ高さ層に対応するループ機能の使用を禁止し、
スライス層に対応する開始計数値と終了計数値が等しい場合、スライス層に対応するループ機能の使用を禁止し、
バッチ層に対応する開始計数値と終了計数値が等しい場合、バッチ層に対応するループ機能の使用を禁止する。
ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し、
スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し、
スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し、
特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し、
特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し、
スライス層は第六ループ開始情報及び第六ループ終了情報に対応し、
バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する。
決定モジュール203は第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて、第一目標データの偏移量を決定するために用いられる。
第一スライディングウィンドウ幅計数値とスライディングウィンドウ幅ストライドの和を求め、第二スライディングウィンドウ幅計数値を取得し;
第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、第二スライディングウィンドウ高さ計数値を取得し;
第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、幅計数値を取得し;
第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の和を求め、高さ計数値を取得し;及び
高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との加算を行い、第一目標データの偏移量を得るために用いられる。
第一目標データに対応する基本アドレスを取得し、そのうち、基本アドレスは超長命令語の解析に基づいて取得される設定パラメータであり;
第一目標データに対応するスライス計数値及びバッチ計数値を取得し;
スライス計数値とスライスアドレスインクリメントとの乗算結果と、バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを取得し、そのうち、スライスアドレスインクリメント及びバッチアドレスインクリメントは何れも超長命令語の解析に基づいて取得される設定パラメータであり;
アドレス総インクリメントと基本アドレスの和を求め、第一目標データの開始アドレスを得るために用いられる。
処理モジュール205はさらに、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ;
処理モジュール205は具体的に、第一特徴マップ幅計数値と特徴マップ幅ストライドの和を求め、第二特徴マップ幅計数値を得るために用いられる。
処理モジュール205はさらに、第一特徴マップ高さ計数値が特徴マップ高さ範囲にない場合、スライス計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ;
処理モジュール205は具体的に、第一特徴マップ高さ計数値と特徴マップ高さストライドの和を求め、第二特徴マップ高さ計数値を得るために用いられる。
処理モジュール205はさらに、スライス計数値が最大スライス数値範囲を超えた場合、バッチ計数値に対して桁上げ操作を行い、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ、そのうち、最大スライス数値範囲は第一目標データに対応するテンソル深さ及びベクトル並列度に基づいて決定され;
処理モジュール205はさらに、バッチ計数値が最大バッチ値以上である場合、バッチ計数値、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ、そのうち、最大バッチ値は超長命令語の解析に基づいて取得される設定パラメータである。
送信モジュール207は第二データチャンネルにより算術論理ユニットに第一目標データを送信するために用いられ;
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第三データチャンネルにより第二目標データを読み取るために用いられ、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;
送信モジュール207はさらに、第四データチャンネルにより算術論理ユニットに第二目標データを送信するために用いられる。
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取るために用いられ;
送信モジュール207はさらに、第二データチャンネルにより算術論理ユニットに第一目標データを送信するために用いられ;
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第一データチャンネルにより第二目標データを読み取るために用いられ、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;
送信モジュール207はさらに、第三データチャンネルにより算術論理ユニットに第二目標データを送信するために用いられる。
使用禁止モジュール208はさらに、スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ幅層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ高さ層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、特徴マップ幅層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、特徴マップ高さ層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、スライス層に対応する開始計数値と終了計数値が等しい場合、スライス層に対応するループ機能の使用を禁止するために用いられ;及び
使用禁止モジュール208はさらに、バッチ層に対応する開始計数値と終了計数値が等しい場合、バッチ層に対応するループ機能の使用を禁止するために用いられる。
ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し;
スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し;
スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し;
特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し;
特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し;
スライス層は第六ループ開始情報及び第六ループ終了情報に対応し;及び
バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する。
Random Access Memory、NVRAM)を含んでも良い。
オペレーティングシステム:各種のシステムプログラムを含み、各種の基本サービスを実現し、かつハードウェアベースのタスクを処理するために用いられる。
超長命令語の解析に基づいて実行パラメータを取得し、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得し;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて、第一目標データの偏移量を決定し;
第一目標データの開始アドレスを取得し;及び
開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを得るために用いられる。
processing、DSP)、特定用途向け集積回路(application
specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又は他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスター論理デバイス、ディスクリートハードウェアアセンブリであっても良く、本発明の実施例に開示の各方法、ステップ及論理ブロックを実現又は実行することができる。汎用処理器はマイクロプロセッサあっても良く、又は、該処理器は任意の従来のプロセッサなどであり得る。本発明の実施例に開示の方法のステップはハードウェア復号化プロセッサによって実行されるように直接具現化され得るか、又は、復号化プロセッサ内のハードウェアとソフトウェアモジュールの組み合わせによって実行され得る。ソフトウェアモジュールはランダムアクセスメモリ、フラッシュメモリ、読み取り専用メモリ、プログラム可能な読み取り専用メモリ、電気的に消去可能なプログラム可能なメモリ、レジスタなどの当技術分野で成熟した記憶媒体に配置することができる。該記憶媒体は記憶器330に配置され、深層学習処理器320は記憶器330における情報を読み取り、そのハードウェアと組み合わせて上述の方法のステップを完了することができる。
Claims (17)
- アドレス生成ユニットが実行するアドレス生成方法であって、
超長命令語の解析に基づいて実行パラメータを取得するステップであって、前記実行パラメータはスライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられる、ステップ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、前記第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を得るステップ;
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内にあり、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にあり、かつ前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にあり、かつ前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にある場合、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するステップ;
前記第一目標データの開始アドレスを得るステップ;及び
前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップを含む、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、
前記の、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するステップは、
前記第一スライディングウィンドウ幅計数値と前記スライディングウィンドウ幅ストライドとの和を求め、第二スライディングウィンドウ幅計数値を得るステップ;
前記第一スライディングウィンドウ高さ計数値と前記スライディングウィンドウ高さストライドとの和を求め、第二スライディングウィンドウ高さ計数値を得るステップ;
前記第二スライディングウィンドウ幅計数値と前記第一特徴マップ幅計数値との和を求め、幅計数値を得るステップ;
前記第二スライディングウィンドウ高さ計数値と前記第一特徴マップ高さ計数値との和を求め、高さ計数値を得るステップ;及び
前記高さ計数値と行間隔係数との乗算結果と、前記幅計数値と列間隔係数との乗算結果との和を求め、前記第一目標データの偏移量を得るステップを含む、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、
前記の、前記第一目標データの開始アドレスを得るステップは、
前記第一目標データに対応する基本アドレスを得るステップであって、前記基本アドレスは前記超長命令語の解析に基づいて取得される設定パラメータである、ステップ;
前記第一目標データに対応するスライス計数値及びバッチ計数値を得るステップ;
前記スライス計数値とスライスアドレスインクリメントとの乗算結果と、前記バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを得るステップであって、前記スライスアドレスインクリメント及び前記バッチアドレスインクリメントは何れも前記超長命令語の解析に基づいて取得される設定パラメータである、ステップ;及び
前記アドレス総インクリメントと前記基本アドレスとの和を求め、第一目標データの前記開始アドレスを得るステップを含む、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、さらに、
前記第一目標データに対応する前記深さ計数値が前記深さ計数範囲を超えた場合、前記第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、かつ前記深さ計数値に対してリセット処理を行う、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、
前記実行パラメータはさらに、特徴マップ幅ストライドを決定するために用いられ、
前記アドレス生成方法は、さらに、
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内になく、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にある場合、前記第一スライディングウィンドウ高さ計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値に対してリセット処理を行うステップ;及び
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内になく、かつ前記第一スライディングウィンドウ高さ計数値も前記スライディングウィンドウ高さ範囲内にない場合、前記第一特徴マップ幅計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップを含み、
前記の、前記第一特徴マップ幅計数値に対して桁上げ操作を行うことは、
前記第一特徴マップ幅計数値と前記特徴マップ幅ストライドとの和を求め、第二特徴マップ幅計数値を得るステップを含む、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、
前記実行パラメータはさらに、特徴マップ高さストライドを決定するために用いられ、
前記アドレス生成方法は、さらに、
前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にない場合、前記第一特徴マップ幅計数値に対して桁上げ操作を行い、かつ前記第一特徴マップ幅計数値に対してリセット処理を行うステップ;
前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にない場合、前記第一特徴マップ高さ計数値に対して桁上げ操作を行い、かつ前記第一特徴マップ高さ計数値に対してリセット処理を行うステップ;及び
前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にない場合、スライス計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップを含み、
前記の、前記第一特徴マップ高さ計数値に対して桁上げ操作を行うことは、
前記第一特徴マップ高さ計数値と前記特徴マップ高さストライドとの和を求め、第二特徴マップ高さ計数値を得ることを含む、アドレス生成方法。 - 請求項1に記載のアドレス生成方法であって、さらに、
スライス計数値が最大スライス数値範囲を超えた場合、バッチ計数値に対して桁上げ操作を行い、かつ前記スライス計数値、前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、前記第一特徴マップ幅計数値、前記第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップであって、前記最大スライス数値範囲は前記第一目標データに対応するテンソル深さ及びベクトル並列度に基づいて決定されるものである、ステップ;及び
前記バッチ計数値が最大バッチ値以上である場合、前記バッチ計数値、前記スライス計数値、前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、前記第一特徴マップ幅計数値、前記第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップであって、前記最大バッチ値は前記超長命令語の解析に基づいて取得される設定パラメータである、ステップを含む、アドレス生成方法。 - 請求項1乃至7のうちの何れか1項に記載のアドレス生成方法であって、
前記の、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップの後に、前記アドレス生成方法は、さらに、
前記第一目標アドレスに基づいて、第一データチャンネルにより前記第一目標データを読み取るステップ;及び
第二データチャンネルにより算術論理ユニットに前記第一目標データを送信するステップを含み、
前記アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たときに、前記第二目標アドレスに基づいて、第三データチャンネルにより前記第二目標データを読み取るステップであって、前記第二目標アドレスは前記第一目標アドレスに隣接する次の1つの物理アドレスである、ステップ;及び
第四データチャンネルにより前記算術論理ユニットに前記第二目標データを送信するステップを含むステップを含む、アドレス生成方法。 - 請求項1乃至7のうちの何れか1項に記載の方法であって、
前記の、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップの後に、前記方法は、さらに、
前記第一目標アドレスに基づいて、第一データチャンネルにより前記第一目標データを読み取るステップ;及び
第二データチャンネルにより算術論理ユニットに前記第一目標データを送信するステップを含み、
前記アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たときに、前記第二目標アドレスに基づいて、前記第一データチャンネルにより前記第二目標データを読み取るステップであって、前記第二目標アドレスは前記第一目標アドレスに隣接する次の1つの物理アドレスである、ステップ;及び
第三データチャンネルにより前記算術論理ユニットに前記第二目標データを送信するステップを含む、アドレス生成方法。 - 請求項7に記載のアドレス生成方法であって、
前記ベクトル並列度はベクトル層に対応し、前記スライディングウィンドウ幅範囲はスライディングウィンドウ幅層に対応し、前記スライディングウィンドウ高さ範囲はスライディングウィンドウ高さ層に対応し、前記特徴マップ幅範囲は特徴マップ幅層に対応し、前記特徴マップ高さ範囲は特徴マップ高さ層に対応し、最大スライス数値範囲はスライス層に対応し、最大バッチ値はバッチ層に対応し、
前記ベクトル層に対応する開始計数値と終了計数値が等しい場合、前記ベクトル層に対応するループ機能の使用を禁止し、
前記スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、前記スライディングウィンドウ幅層に対応するループ機能の使用を禁止し、
前記スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、前記スライディングウィンドウ高さ層に対応するループ機能の使用を禁止し、
前記特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、前記特徴マップ幅層に対応するループ機能の使用を禁止し、
前記特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、前記特徴マップ高さ層に対応するループ機能の使用を禁止し、
前記スライス層に対応する開始計数値と終了計数値が等しい場合、前記スライス層に対応するループ機能の使用を禁止し、
前記バッチ層に対応する開始計数値と終了計数値が等しい場合、前記バッチ層に対応するループ機能の使用を禁止する、アドレス生成方法。 - 請求項10に記載のアドレス生成方法であって、
前記ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し、
前記スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し、
前記スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し、
前記特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し、
前記特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し、
前記スライス層は第六ループ開始情報及び第六ループ終了情報に対応し、
前記バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する、アドレス生成方法。 - アドレス生成ユニットであって、
解析モジュール、取得モジュール、決定モジュール及び計算モジュールを含み、
前記解析モジュールは、超長命令語の解析に基づいて実行パラメータを取得するために用いられ、前記実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ、
前記取得モジュールは、第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、前記第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を得るために用いられ、
前記決定モジュールは、前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内にあり、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にあり、かつ前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にあり、かつ前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にある場合、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するために用いられ、
前記取得モジュールはさらに、前記第一目標データの開始アドレスを得るために用いられ、
前記計算モジュールは、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るために用いられる、アドレス生成ユニット。 - 請求項1乃至11のうちの何れか1項に記載のアドレス生成方法を実行するように構成される、アドレス生成ユニット。
- 深層学習処理器であって、
少なくとも2つの、請求項13に記載のアドレス生成ユニットを含み、
少なくとも2つの前記アドレス生成ユニットには、データを読み取るための少なくとも1つの前記アドレス生成ユニット、及び、データを書き込むためのア少なくとも1つのドレス生成ユニットが含まれる、深層学習処理器。 - 請求項14に記載の深層学習処理器を含む、チップ。
- 請求項15に記載のチップを含む、電子機器。
- コンピュータに、請求項1乃至11のうちの何れか1項に記載のアドレス生成方法を実行させるためのプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623936.5A CN111506520B (zh) | 2020-07-01 | 2020-07-01 | 一种地址生成的方法、相关装置以及存储介质 |
CN202010623936.5 | 2020-07-01 | ||
PCT/CN2021/097563 WO2022001550A1 (zh) | 2020-07-01 | 2021-06-01 | 一种地址生成的方法、相关装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023513608A JP2023513608A (ja) | 2023-03-31 |
JP7387017B2 true JP7387017B2 (ja) | 2023-11-27 |
Family
ID=71878829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022549154A Active JP7387017B2 (ja) | 2020-07-01 | 2021-06-01 | アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US11734007B2 (ja) |
EP (1) | EP4071619A4 (ja) |
JP (1) | JP7387017B2 (ja) |
CN (1) | CN111506520B (ja) |
WO (1) | WO2022001550A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
CN112559046A (zh) * | 2020-12-09 | 2021-03-26 | 清华大学 | 数据处理装置及人工智能处理器 |
CN116804973B (zh) * | 2022-03-18 | 2024-06-18 | 深圳鲲云信息科技有限公司 | 地址生成装置、方法、数据缓存器和人工智能芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180004515A1 (en) | 2016-06-29 | 2018-01-04 | Fujitsu Limited | Processor and control method of processor |
US20180197068A1 (en) | 2016-10-27 | 2018-07-12 | Google Llc | Neural network instruction set architecture |
JP2019053736A (ja) | 2015-04-23 | 2019-04-04 | グーグル エルエルシー | 画像プロセッサのためのラインバッファユニット |
JP2020503584A (ja) | 2016-10-26 | 2020-01-30 | ザイリンクス インコーポレイテッドXilinx Incorporated | テンソル演算および加速度 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021489A (en) * | 1997-06-30 | 2000-02-01 | Intel Corporation | Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture |
US6266751B1 (en) * | 1997-11-14 | 2001-07-24 | Agere Systems Guardin Corp. | Continuously sliding window method and apparatus for sharing single-ported memory banks between two agents |
US7958181B2 (en) * | 2006-09-21 | 2011-06-07 | Intel Corporation | Method and apparatus for performing logical compare operations |
CN103543984B (zh) * | 2012-07-11 | 2016-08-10 | 世意法(北京)半导体研发有限责任公司 | 用于特殊相关应用的修改型平衡吞吐量数据路径架构 |
US20160378488A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US10108538B1 (en) * | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
US20190065202A1 (en) * | 2017-08-31 | 2019-02-28 | MIPS Tech, LLC | Pointer-size controlled instruction processing |
JP6961640B2 (ja) * | 2018-03-22 | 2021-11-05 | 南京地平▲線▼机▲器▼人技▲術▼有限公司 | データ処理のシステムおよび方法 |
CN110766127B (zh) * | 2018-07-25 | 2022-09-23 | 赛灵思电子科技(北京)有限公司 | 神经网络计算专用电路及其相关计算平台与实现方法 |
CN111079917B (zh) * | 2018-10-22 | 2023-08-11 | 北京地平线机器人技术研发有限公司 | 张量数据分块存取的方法及装置 |
KR20200057475A (ko) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템 |
US11301546B2 (en) * | 2018-11-19 | 2022-04-12 | Groq, Inc. | Spatial locality transform of matrices |
US20200175396A1 (en) * | 2018-12-04 | 2020-06-04 | Intel Corporation | Deterministic neural networking interoperability |
CN109919311B (zh) * | 2019-03-13 | 2020-04-10 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
CN110516793B (zh) * | 2019-08-27 | 2022-06-17 | Oppo广东移动通信有限公司 | 一种池化处理方法及装置、存储介质 |
CN110780921B (zh) * | 2019-08-30 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
-
2020
- 2020-07-01 CN CN202010623936.5A patent/CN111506520B/zh active Active
-
2021
- 2021-06-01 WO PCT/CN2021/097563 patent/WO2022001550A1/zh unknown
- 2021-06-01 JP JP2022549154A patent/JP7387017B2/ja active Active
- 2021-06-01 EP EP21831537.2A patent/EP4071619A4/en active Pending
-
2022
- 2022-04-26 US US17/730,058 patent/US11734007B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019053736A (ja) | 2015-04-23 | 2019-04-04 | グーグル エルエルシー | 画像プロセッサのためのラインバッファユニット |
US20180004515A1 (en) | 2016-06-29 | 2018-01-04 | Fujitsu Limited | Processor and control method of processor |
JP2018005369A (ja) | 2016-06-29 | 2018-01-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP2020503584A (ja) | 2016-10-26 | 2020-01-30 | ザイリンクス インコーポレイテッドXilinx Incorporated | テンソル演算および加速度 |
US20180197068A1 (en) | 2016-10-27 | 2018-07-12 | Google Llc | Neural network instruction set architecture |
JP2019533868A (ja) | 2016-10-27 | 2019-11-21 | グーグル エルエルシー | ニューラルネットワーク命令セットアーキテクチャ |
Also Published As
Publication number | Publication date |
---|---|
CN111506520A (zh) | 2020-08-07 |
WO2022001550A1 (zh) | 2022-01-06 |
EP4071619A1 (en) | 2022-10-12 |
EP4071619A4 (en) | 2023-07-26 |
US11734007B2 (en) | 2023-08-22 |
JP2023513608A (ja) | 2023-03-31 |
US20220261249A1 (en) | 2022-08-18 |
CN111506520B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580394B2 (en) | Accelerated deep learning | |
JP7387017B2 (ja) | アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム | |
US11960566B1 (en) | Reducing computations for data including padding | |
US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
US20210097376A1 (en) | Backpressure for Accelerated Deep Learning | |
US10445638B1 (en) | Restructuring a multi-dimensional array | |
CN109993285B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
US20190102671A1 (en) | Inner product convolutional neural network accelerator | |
KR102354722B1 (ko) | 계산 장치 및 방법 | |
US20190034327A1 (en) | Accessing prologue and epilogue data | |
CN113435682A (zh) | 分布式训练的梯度压缩 | |
CN113449861A (zh) | 使用部分梯度更新的推测性训练 | |
US20230062352A1 (en) | Efficient transforms and transposes for rate-distortion optimization and reconstruction in video encoders | |
CN114008589A (zh) | 用于在顺序处理器上进行多次执行的动态代码加载 | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
WO2021118857A1 (en) | Hardware accelerator having reconfigurable instruction set | |
US10997277B1 (en) | Multinomial distribution on an integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220815 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230801 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231027 |
|
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: 20231107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231114 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7387017 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |