JP2021531572A - Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること - Google Patents
Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること Download PDFInfo
- Publication number
- JP2021531572A JP2021531572A JP2021501321A JP2021501321A JP2021531572A JP 2021531572 A JP2021531572 A JP 2021531572A JP 2021501321 A JP2021501321 A JP 2021501321A JP 2021501321 A JP2021501321 A JP 2021501321A JP 2021531572 A JP2021531572 A JP 2021531572A
- Authority
- JP
- Japan
- Prior art keywords
- mac
- address
- circuit
- kernel
- cycle
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 12
- 238000012546 transfer Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 8
- 230000001934 delay Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 abstract description 25
- 230000004913 activation Effects 0.000 description 18
- 238000013527 convolutional neural network Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 230000001186 cumulative effect Effects 0.000 description 7
- 230000006978 adaptation Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000010923 batch production Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
ここで、D1は活性化入力特徴次元の深度(たとえば、IFMの数)であり、D2は活性化出力特徴次元の深度(たとえば、OFMの数)であり、Xは、X[r,c,d1]としてインデックス付けされたランク3活性化入力であり、ここで、d1∈[0,D1−1]はIFM深度インデックスであり、r∈[0,H1−1]およびc∈[0,W1−1]は、それぞれ、2次元(2D)IFMの行インデックスおよび列インデックスであり、Hは、H[u,v,d1,d2]としてインデックス付けされたランク4重み入力であり、ここで、(d1,d2)はIFM深度インデックスd1とOFM深度d2との交差部におけるカーネルを指し、u∈[0,Fy−1]およびv∈[0,Fx−1]は、それぞれ、2Dカーネルの行インデックスおよび列インデックスであり、ここで、Fyはカーネルの高さであり、Fxはカーネルの幅であり、Sxは列に沿ったストライドであり、Syは行に沿ったストライドであり、Yは、Y[r,c,d2]としてインデックス付けされたランク3活性化出力であり、ここで、d2∈[0,D2−1]はOFM深度インデックスであり、r∈[0,H2−1]およびc∈[0,W2−1]は、それぞれ、2D OFMの行インデックスおよび列インデックスであり、conv2d()は2D畳み込み演算子である。畳み込み演算は、式2で説明されるようなドット積演算を実施する。
ここで、N1は、MAC回路のアレイの高さ(たとえば、アレイの各列中のMAC回路の数)であり、niはIFM位相インデックス
であり、
はアレイの行インデックスである。IFM深度D1またはOFM深度D2を超えるカーネルの重みは、式5に示されているように、0になるように制約される。
H[:,:,d1,d2]=0 : d1≧D1またはd2≧D2である場合 (5)
ここで、MACは、MAC[r,c,u,v,d2,ni]としてインデックス付けされた1つの列に沿ったN1個のMAC回路にわたってある時間に累算されたランク6値であり、(d2,ni)は、IFM[niN1,niN1+N1−1]とOFM深度インデックスd2との交差部におけるすべてのカーネルを指し、u∈[0,Fy−1]およびv∈[0,Fx−1]は、それぞれ、2Dカーネルの行インデックスおよび列インデックスであり、r∈[0,H2−1]およびc∈[0,W2−1]は、それぞれ、2D OFMの行インデックスおよび列インデックスであり、ここで、H2はOFMの高さであり、W2はOFMの幅である。MACは、式7に示されているように表され得る。
ここで、MULは、ある時間におけるMAC回路の乗算回路の出力である。MULは、
としてインデックス付けされたランク7値であり、ここで、
は、IFM深度インデックスd1とOFM深度インデックスd2との交差部におけるカーネルを指す。MACは、式8に示されているように表され得る。
におけるカーネルキャッシュ332からのカーネルHにアクセスするために使用される。カーネルHは、乗算出力値
を生成するためにIFMデータXを乗算される。各行からのすべての乗算出力値
が、アレイ106のMAC回路(たとえば、200−0、201−0、...、231−0)の列中の加算カスケードチェーンに沿って累算された後に、最上MAC回路(たとえば、231−0)は、最上MAC回路の加算出力においてMAC[r,c,u,v,d2,ni]を生成する。次いで、アキュムレータ(たとえば、220−0)は、MACを記憶し、
を実施して、OFMの特定の行および列インデックス(r,c)についての最終ドット積値を得る。
は、異なるOFM深度インデックスd2について、MACサイクルごとに連続的に更新される。OFM深度D2は、OFM深度インデックスd2が式9に示されているように表され得るような複数のOFM位相に分割される。
ここで、N2は、MAC回路のアレイの幅(たとえば、アレイの各行中のMAC回路の数)であり、n0はOFM位相インデックス
であり、
はアレイの列インデックスである。
を有する場合、それは、MAC演算が、列インデックス
のMAC回路によって、異なるOFM深度インデックスd2に対応する異なるOFM位相中で実施されることを意味する。OFM位相のサブセットが、OFMパスとして一緒にグループ化される。複数のOFM位相が一緒に時分割多重化される。1よりも大きい任意の整数が、2または3で均等に割り切れるので、複数のOFM位相インデックスn0は、式10で説明されるように、OFMパスインデックスp0として一緒にグループ化され得る。
が奇数の整数である場合、すべてのOFMパスは2つのOFM位相を含む。
が、1よりも大きい偶数の整数である場合、最後のOFMパスを除くすべてのOFMパスは、2つのOFM位相を含み、最後のOFMパスは3つのOFM位相を含む。
であり、したがって、4つのIFM位相(ni∈[0,3])がある。OFM位相の数は
であり、したがって、13個のOFM位相(n0∈[0,12])がある。13個のOFM位相は、6つのOFMパス(p0∈[0,5])にスプリットされる。
は、1よりも大きい偶数の整数(12)であるので、最初の5つのOFMパス(p0∈[0,4])の各々は、最初の10個のOFM位相(n0∈[0,9])のうちの2つを含む。第6および最後のOFMパス(p0=5)は、3つのOFM位相(n0∈[10,12])を含む。したがって、2つのスレッドまたは3つのスレッドのいずれかが、MAC回路中でインターリーブした。
を生成している。たとえば、最左MAC回路(たとえば、200−0(0,0)、201−0(1,0)、202−0(2,0)、231−0(31,0))は、2つのMACサイクルごとにパターン
、
を繰り返すことによって、第1のOFMパスp0=0におけるOFM深度インデックスd2=0、16についての乗算出力値MULを生成している。
は、2つのMACサイクルのうちの第1のMACサイクル中に実施され、
は、2つのMACサイクルのうちの第2のMACサイクル中に実施される。
および
を実施することによって、2つの連続するMACサイクルのバーストにおける第1のOFMパスp0=0におけるOFM深度インデックスd2=0、16についての最終ドット積Y[r,c,0]、Y[r,c,16]を生成する。
)ので、最上アキュムレータがOFMの特定の行および列インデックス(r,c)についての最終ドット積Y[r,c,d2]を生成するために、複数のMACサイクルが必要とされ得る。出力有効シーケンスは、バースト長がOFMパスにおけるOFM位相の数に等しいバーストにおいて出力される。OFM出力シーケンス
は、内部ループがOFMの行および列インデックス(r,c)またはOFM深度インデックスd2によって反復されるところに依存する。7×7 OFMを有する図4の例を続けると、図6Aは、OFMの行および列インデックス(r,c)によって反復される最左アキュムレータ222−0のOFM出力シーケンスを示す。対照的に、図6Bは、OFM深度インデックスd2によって反復される最左アキュムレータ222−0のOFM出力シーケンスを示す。
If(phase_update_vld=‘1’)および(phase_update_id=現在の位相)
If(phase_update_en=‘1’)
「control_out」を「control_in」で更新し、アトミック演算を開始する
Else
「control_out」をデフォルト値で強制する
End if
End if
および
に対応する。しかしながら、コントローラ108は、MACレートにおいてMAC回路についていくために、MACサイクルごとにカーネルのキャッシュアドレスを生成しない。そうではなく、コントローラ108は、コントローラ108の演算周波数(たとえば、MACレートの1/2)においてベースアドレスを生成する。制御ギアボックス110は、コントローラ108から受信されたベースアドレスに基づいてMACサイクルごとにカーネルの直接マッピングされたキャッシュアドレスを生成する。3つのOFM位相を含む最後のOFMパスp0=5について、ベースアドレスは、3つのMACサイクルごとに更新される。しかしながら、コントローラ108の演算周波数は変化せず、コントローラ108は、依然として、MACレートの1/2において演算する。
If(phase_update_vld=‘1’)および(phase_update_id=現在の位相)
If(phase_update_en=‘1’)
「data_out」を「data_in」で更新し、アトミック演算を開始する
Else
「data_out」をデフォルト値で強制する
End if
End if
)が2つまたは3つのMACサイクルごとに更新されるので、アレイの各行のIAFU内に1つのスレッドのみがある。IAFUからの出力がグローバルメモリ102にループバックされた場合、スレッドは、アレイのMAC回路と同様のインターリービング方式に従ってインターリーブされ得る。図13は、図4の例におけるパラメータに基づくIAFUについての深度スプリッティング例を示す。4つのIFM位相ni∈[0,3]があり、4つのIFM位相は2つのIFMパスpi∈[0,1]にスプリットされる。各IFMパスp0∈[0,1]は、2つのIFM位相を含み、したがって、2つのIFM位相が1つのIAFU中でインターリーブされる。各IAFUは、ある時間における1つのIFMパス(pi)における異なるIFM深度インデックス(d1)ついて出力される活性化関数を生成する。活性化関数が適用された後に活性化深度が変更されないので、IFM入力深度シーケンスは、OFM出力深度シーケンスと同じである。
Claims (15)
- 積和(MAC)回路のアレイ
を備える回路装置であって、各MAC回路が、複数のカーネルの記憶のために構成されたキャッシュを含み、前記MAC回路は、
第1のレートにおいて入力特徴マップ(IFM)のデータ要素の第1のセットを受信することと、
第1のMACサイクル中に、前記データ要素の前記第1のセットと、第1の出力特徴マップ(OFM)深度インデックス(d2)に関連する前記カーネルのうちの第1のカーネル(H)とに対して第1のMAC演算を実施することであって、MACサイクルのレートが前記第1のレートよりも速い、第1のMAC演算を実施することと、
前記第1のMACサイクルに連続的に続く第2のMACサイクル中に、前記データ要素の前記第1のセットと、第2のOFM深度インデックス(d2)に関連する前記カーネルのうちの第2のカーネル(H)とに対して第2のMAC演算を実施することと
を行うように構成された、回路装置。 - 前記アレイに結合され、
前記キャッシュ中の前記第1のカーネルの第1のアドレスを受信することと、
前記第1のアドレスに基づいて前記キャッシュ中の前記第2のカーネルの第2のアドレスを生成することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に提供することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に提供することと
を行うように構成された、制御回路をさらに備える、請求項1に記載の回路装置。 - 前記制御回路は、前記第1のアドレスがブロックデータ転送の開始アドレスにマッピングされたことに応答して、前記第2のアドレスを生成するために、前記第1のアドレスを固定値だけ増分するように構成され、
前記制御回路は、前記第1のアドレスがブロックデータ転送の終了アドレスにマッピングされたことに応答して、前記第2のアドレスを生成するために、前記第1のアドレスを固定値だけ減分するように構成された、
請求項2に記載の回路装置。 - 前記アレイの前記MAC回路が、前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記データ要素の前記第1のセットと、第3のOFM深度インデックス(d2)に関連する前記カーネルのうちの第3のカーネル(H)とに対して第3のMAC演算を実施するように構成された、請求項1から3のいずれか一項に記載の回路装置。
- 前記アレイの前記MAC回路が、前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記データ要素の前記第1のセットと、第3のOFM深度インデックス(d2)に関連する前記カーネルのうちの第3のカーネル(H)とに対して第3のMAC演算を実施するように構成され、前記回路装置は、前記アレイに結合され、
前記キャッシュ中の前記カーネルのうちの前記第1のカーネルの第1のアドレスを受信することと、
前記第1のアドレスに基づいて前記キャッシュ中の前記カーネルのうちの前記第2のカーネルの第2のアドレスを生成することと、
前記第1のアドレスに基づいて前記キャッシュ中の前記カーネルのうちの前記第3のカーネルの第3のアドレスを生成することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に提供することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に提供することと、
前記第3のMACサイクル中に前記第3のアドレスを前記MAC回路に提供することと
を行うように構成された、第1の制御回路をさらに備える、請求項1から3のいずれか一項に記載の回路装置。 - 前記アレイの前記MAC回路が、前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記データ要素の前記第1のセットと、第3のOFM深度インデックス(d2)に関連する前記カーネルのうちの第3のカーネル(H)とに対して第3のMAC演算を実施するように構成され、前記回路装置は、前記アレイに結合され、
前記キャッシュ中の前記カーネルのうちの前記第1のカーネルの第1のアドレスを受信することと、
第2のアドレスを生成するために、前記第1のアドレスを固定値だけ増分することと、
第3のアドレスを生成するために、前記第2のアドレスを前記固定値だけ増分することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に提供することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に提供することと、
前記第3のMACサイクル中に前記第3のアドレスを前記MAC回路に提供することと
を行うように構成された、第1の制御回路をさらに備える、請求項1から3のいずれか一項に記載の回路装置。 - 前記アレイの前記MAC回路が、前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記データ要素の前記第1のセットと、第3のOFM深度インデックス(d2)に関連する前記カーネルのうちの第3のカーネル(H)とに対して第3のMAC演算を実施するように構成され、前記回路装置は、
前記アレイに結合され、
前記キャッシュ中の前記カーネルのうちの前記第1のカーネルの第1のアドレスを受信することと、
第2のアドレスを生成するために、前記第1のアドレスを固定値だけ増分することと、
第3のアドレスを生成するために、前記第2のアドレスを前記固定値だけ増分することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に提供することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に提供することと、
前記第3のMACサイクル中に前記第3のアドレスを前記MAC回路に提供することと
を行うように構成された、第1の制御回路と、
前記アレイに結合され、
前記第1のレートに等しいかまたは前記第1のレートよりも速い入力レートにおいて、前記IFMの前記データ要素の前記第1のセットおよび前記IFMの前記データ要素の第2のセットを受信することと、
入力制御信号に応答して、前記データ要素の前記第2のセットを前記MAC回路に提供することを少なくともMACサイクルだけ遅延させることと
を行うように構成された、第2の制御回路と
をさらに備える、請求項1から3のいずれか一項に記載の回路装置。 - 前記アレイの前記MAC回路が、
前記第1のレートよりも遅い第2のレートにおいて、前記IFMの前記データ要素の第2のセットを受信することと、
前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記データ要素の前記第2のセットと、第3のOFM深度インデックス(d2)に関連する前記カーネルのうちの第3のカーネル(H)とに対して第3のMAC演算を実施することと、
前記第3のMACサイクルに連続的に続く第4のMACサイクル中に、前記データ要素の前記第2のセットと、第4のOFM深度インデックス(d2)に関連する前記カーネルのうちの第4のカーネル(H)とに対して第4のMAC演算を実施することと、
前記第4のMACサイクルに連続的に続く第5のMACサイクル中に、前記データ要素の前記第2のセットと、第5のOFM深度インデックス(d2)に関連する前記カーネルのうちの第5のカーネル(H)とに対して第5のMAC演算を実施することと
を行うように構成された、請求項1から3のいずれか一項に記載の回路装置。 - 第1のレートにおいて、入力特徴マップ(IFM)のデータ要素の第1のセットを積和(MAC)回路のアレイに入力することと、
第1のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第1のセットと、前記MAC回路のキャッシュに記憶された第1のカーネル(H)とに対して第1のMAC演算を実施することであって、前記第1のカーネルが第1の出力特徴マップ(OFM)深度インデックス(d2)に関連し、MACサイクルのレートが前記第1のレートよりも速い、第1のMAC演算を実施することと、
前記第1のMACサイクルに連続的に続く第2のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第1のセットと、前記MAC回路の前記キャッシュに記憶された第2のカーネル(H)とに対して第2のMAC演算を実施することであって、前記第2のカーネルが第2のOFM深度インデックス(d2)に関連する、第2のMAC演算を実施することと
を含む、方法。 - 前記キャッシュ中の前記第1のカーネルの第1のアドレスを、前記アレイに結合された制御回路に入力することと、
前記制御回路によって、前記第1のアドレスに基づいて前記キャッシュ中の前記第2のカーネルの第2のアドレスを生成することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に入力することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に入力することと
をさらに含む、請求項9に記載の方法。 - 前記第2のアドレスを生成することは、前記第1のアドレスがデータブロック転送の開始アドレスにマッピングされたことに応答して、前記第1のアドレスを固定値だけ増分することを含み、
前記第2のアドレスを生成することは、前記第1のアドレスがデータブロック転送の終了アドレスにマッピングされたことに応答して、前記第1のアドレスを固定値だけ減分することを含む、
請求項10に記載の方法。 - 前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第1のセットと、前記MAC回路の前記キャッシュに記憶された第3のカーネル(H)とに対して第3のMAC演算を実施することであって、前記第3のカーネルが第3のOFM深度インデックス(d2)に関連する、第3のMAC演算を実施することをさらに含む、請求項9から11のいずれか一項に記載の方法。
- 前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第1のセットと、前記MAC回路の前記キャッシュに記憶された第3のカーネル(H)とに対して第3のMAC演算を実施することであって、前記第3のカーネルが第3のOFM深度インデックス(d2)に関連する、第3のMAC演算を実施することと、
前記キャッシュ中の前記カーネルのうちの前記第1のカーネルの第1のアドレスを、前記アレイに結合された第1の制御回路に入力することと、
前記第1の制御回路によって、前記第1のアドレスに基づいて前記キャッシュ中の前記第2のカーネルの第2のアドレスを生成することと、
前記第1の制御回路によって、前記第1のアドレスに基づいて前記キャッシュ中の前記第3のカーネルの第3のアドレスを生成することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に入力することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に入力することと、
前記第3のMACサイクル中に前記第3のアドレスを前記MAC回路に入力することと
をさらに含む、請求項9から11のいずれか一項に記載の方法。 - 前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第1のセットと、前記MAC回路の前記キャッシュに記憶された第3のカーネル(H)とに対して第3のMAC演算を実施することであって、前記第3のカーネルが第3のOFM深度インデックス(d2)に関連する、第3のMAC演算を実施することと、
前記キャッシュ中の前記カーネルのうちの前記第1のカーネルの第1のアドレスを、前記アレイに結合された第1の制御回路に入力することと、
前記第1の制御回路によって、前記第1のアドレスに基づいて前記キャッシュ中の前記第2のカーネルの第2のアドレスを生成することと、
前記第1の制御回路によって、前記第1のアドレスに基づいて前記キャッシュ中の前記第3のカーネルの第3のアドレスを生成することと、
前記第1のMACサイクル中に前記第1のアドレスを前記MAC回路に入力することと、
前記第2のMACサイクル中に前記第2のアドレスを前記MAC回路に入力することと、
前記第3のMACサイクル中に前記第3のアドレスを前記MAC回路に入力することと、
前記第1のレートに等しいかまたは前記第1のレートよりも速い入力レートにおいて、前記IFMの前記データ要素の前記第1のセットおよび前記IFMの前記データ要素の第2のセットを、前記アレイに結合された第2の制御回路に入力することと、
前記第2の制御回路によって、前記第2の制御回路への入力制御信号に応答して、前記データ要素の前記第2のセットを前記MAC回路に入力することを少なくともMACサイクルだけ遅延させることと
をさらに含む、請求項9から11のいずれか一項に記載の方法。 - 前記第1のレートよりも遅い第2のレートにおいて、前記IFMの前記データ要素の第2のセットを前記アレイの前記MAC回路に入力することと、
前記第2のMACサイクルに連続的に続く第3のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第2のセットと、前記MAC回路の前記キャッシュに記憶された第3のカーネル(H)とに対して第3のMAC演算を実施することであって、前記第3のカーネルが第3のOFM深度インデックス(d2)に関連する、第3のMAC演算を実施することと、
前記第3のMACサイクルに連続的に続く第4のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第2のセットと、前記MAC回路の前記キャッシュに記憶された第4のカーネル(H)とに対して第4のMAC演算を実施することであって、前記第4のカーネルが第4のOFM深度インデックス(d2)に関連する、第4のMAC演算を実施することと、
前記第4のMACサイクルに連続的に続く第5のMACサイクル中に、前記MAC回路によって、前記データ要素の前記第2のセットと、前記MAC回路の前記キャッシュに記憶された第5のカーネル(H)とに対して第5のMAC演算を実施することであって、前記第5のカーネルが第5のOFM深度インデックス(d2)に関連する、第5のMAC演算を実施することと
をさらに含む、請求項9から11のいずれか一項に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/040,357 US11429850B2 (en) | 2018-07-19 | 2018-07-19 | Performing consecutive mac operations on a set of data using different kernels in a MAC circuit |
US16/040,357 | 2018-07-19 | ||
PCT/US2019/041586 WO2020018369A1 (en) | 2018-07-19 | 2019-07-12 | Performing consecutive mac operations on a set of data using different kernels in a mac circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021531572A true JP2021531572A (ja) | 2021-11-18 |
JP7495924B2 JP7495924B2 (ja) | 2024-06-05 |
Family
ID=67480366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021501321A Active JP7495924B2 (ja) | 2018-07-19 | 2019-07-12 | Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること |
Country Status (6)
Country | Link |
---|---|
US (1) | US11429850B2 (ja) |
EP (1) | EP3791261B1 (ja) |
JP (1) | JP7495924B2 (ja) |
KR (1) | KR20210025114A (ja) |
CN (1) | CN112424745B (ja) |
WO (1) | WO2020018369A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210105053A (ko) * | 2020-02-18 | 2021-08-26 | 에스케이하이닉스 주식회사 | 연산 회로 및 그것을 포함하는 딥 러닝 시스템 |
CN115134856A (zh) * | 2021-03-25 | 2022-09-30 | 中国移动通信有限公司研究院 | 一种mac功能及其通信方法、通信设备 |
KR20220154346A (ko) * | 2021-05-13 | 2022-11-22 | 삼성전자주식회사 | 복제 비트-셀 기반의 mac 연산 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
US20180005074A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Convolutional Neural Network On Programmable Two Dimensional Image Processor |
JP2018073103A (ja) * | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US20160210550A1 (en) * | 2015-01-20 | 2016-07-21 | Nomizo, Inc. | Cloud-based neural networks |
US10614354B2 (en) * | 2015-10-07 | 2020-04-07 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
WO2017129325A1 (en) | 2016-01-29 | 2017-08-03 | Fotonation Limited | A convolutional neural network |
CN110073329B (zh) * | 2016-12-16 | 2021-06-22 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
US10402527B2 (en) | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
US11086967B2 (en) * | 2017-03-01 | 2021-08-10 | Texas Instruments Incorporated | Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA) |
-
2018
- 2018-07-19 US US16/040,357 patent/US11429850B2/en active Active
-
2019
- 2019-07-12 WO PCT/US2019/041586 patent/WO2020018369A1/en unknown
- 2019-07-12 EP EP19746297.1A patent/EP3791261B1/en active Active
- 2019-07-12 KR KR1020217004172A patent/KR20210025114A/ko not_active Application Discontinuation
- 2019-07-12 JP JP2021501321A patent/JP7495924B2/ja active Active
- 2019-07-12 CN CN201980047920.XA patent/CN112424745B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180005074A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Convolutional Neural Network On Programmable Two Dimensional Image Processor |
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
JP2018073103A (ja) * | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
Non-Patent Citations (1)
Title |
---|
安藤 洸太: "深層畳込みニューラルネットワークに向けたデータ流再構成型演算器アレイアーキテクチャ", 電子情報通信学会技術研究報告 VOL.116 NO.53 IEICE TECHNICAL REPORT, vol. 第116巻 53号, JPN6023023584, 12 May 2016 (2016-05-12), JP, pages 29 - 34, ISSN: 0005221613 * |
Also Published As
Publication number | Publication date |
---|---|
KR20210025114A (ko) | 2021-03-08 |
WO2020018369A1 (en) | 2020-01-23 |
JP7495924B2 (ja) | 2024-06-05 |
US20200026989A1 (en) | 2020-01-23 |
CN112424745A (zh) | 2021-02-26 |
EP3791261B1 (en) | 2023-01-11 |
CN112424745B (zh) | 2024-01-26 |
US11429850B2 (en) | 2022-08-30 |
EP3791261A1 (en) | 2021-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7039580B2 (ja) | テンソル演算および加速度 | |
US10572225B1 (en) | Circuit arrangements and methods for performing multiply-and-accumulate operations | |
CN112119459B (zh) | 用于张量数据的存储器布置 | |
EP2017743A2 (en) | High speed and efficient matrix multiplication hardware module | |
JP7495924B2 (ja) | Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること | |
US10411709B1 (en) | Circuit arrangements and methods for dividing a three-dimensional input feature map | |
KR20180123846A (ko) | 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
US10936311B1 (en) | Sparse matrix processing circuitry | |
US11106968B1 (en) | Circuit arrangements and methods for traversing input feature maps | |
Chang et al. | Efficient hardware accelerators for the computation of Tchebichef moments | |
US11194490B1 (en) | Data formatter for convolution | |
US11429851B1 (en) | Neural network controller | |
Petrut et al. | Configurable fpga architecture for hardware-software merge sorting | |
US10877732B2 (en) | Performing constant modulo arithmetic | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection | |
Rakanovic et al. | Argus CNN accelerator based on kernel clustering and resource-aware pruning | |
Zeng | FPGA-based high throughput merge sorter | |
CN210721552U (zh) | 卷积电路 | |
US20210288650A1 (en) | Semiconductor device and circuit layout method | |
US11768663B1 (en) | Compaction of multiplier and adder circuits | |
US9235671B1 (en) | Combining logic elements into pairs in a circuit design system | |
US9043739B1 (en) | Placement based arithmetic operator selection | |
WO2024197396A1 (en) | Event-based neural network processing system | |
Wong et al. | A new scalable systolic array processor architecture for simultaneous discrete convolution of k different (nxn) filter coefficient planes with a single image plane |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220708 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230913 |
|
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: 20240206 |
|
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: 20240521 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240524 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7495924 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |