TW202129518A - 僅使用一單一側自多維陣列加載運算元及輸出結果 - Google Patents
僅使用一單一側自多維陣列加載運算元及輸出結果 Download PDFInfo
- Publication number
- TW202129518A TW202129518A TW109141621A TW109141621A TW202129518A TW 202129518 A TW202129518 A TW 202129518A TW 109141621 A TW109141621 A TW 109141621A TW 109141621 A TW109141621 A TW 109141621A TW 202129518 A TW202129518 A TW 202129518A
- Authority
- TW
- Taiwan
- Prior art keywords
- cell
- array
- weight
- arithmetic array
- arithmetic
- Prior art date
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 148
- 230000005284 excitation Effects 0.000 claims description 118
- 238000000034 method Methods 0.000 claims description 28
- 230000000644 propagated effect Effects 0.000 claims description 14
- 238000003491 array Methods 0.000 claims description 11
- 230000001902 propagating effect Effects 0.000 claims description 11
- 239000013598 vector Substances 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 2
- 230000004913 activation Effects 0.000 abstract 4
- 238000001994 activation Methods 0.000 abstract 4
- 239000000872 buffer Substances 0.000 description 24
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000003628 erosive effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 235000019801 trisodium phosphate Nutrition 0.000 description 1
Images
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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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
-
- 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/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
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
實施一種運算陣列,其中自該陣列之一單一側加載或輸出全部運算元及結果。該運算陣列包括配置成n個列及m個行之複數個胞元,各經組態以基於一權重值及一激發值而產生一經處理值。該等胞元經由共線權重及激發傳輸通道接收權重及激發值,該等共線權重及激發傳輸通道各跨該運算陣列之一第一側邊緣延伸以將權重值及激發值提供至該陣列之該等胞元。另外,在該陣列之該m個行之各者之一頂胞元處產生之結果值經路由通過該陣列以在產生該等結果值之一相同相對時序自該陣列之該相同第一側邊緣輸出。
Description
本發明大體上係關於運算陣列,且更特定言之係關於運算陣列之輸入及輸出之路由。
在許多運算陣列中,自運算陣列之不同側加載及輸出運算元及輸出。例如,在許多脈動陣列設計中,經由陣列之兩個不同側加載不同運算元(例如,權重及激發),而自陣列之一第三側輸出所產生之結果值。然而,經由運算陣列之多個側加載輸入及接收結果可限制運算陣列相對於用於操作運算陣列之記憶體及控制器電路之大小,且可增加路由運算陣列之各種輸入及輸出所需之佈線之長度及複雜性。
實施一種運算陣列,其中自該陣列之一單一側加載或輸出全部運算元及結果。該運算陣列包括配置成n
個列及m
個行之複數個胞元,各經組態以基於一權重值及一激發值而產生一經處理值。該等胞元經由共線權重及激發傳輸通道接收權重及激發值,該等共線權重及激發傳輸通道各跨該運算陣列之一第一側邊緣延伸以將權重值及激發值提供至該陣列之該等胞元。另外,在該陣列之該m
個行之各者之一頂胞元處產生之結果值經路由通過該陣列以在產生該等結果值之一相同相對時序自該陣列之該相同第一側邊緣輸出。
根據一些實施例,提供一種系統,其包括一運算陣列,該運算陣列包括配置成n
個列及m
個行之複數個胞元,各經組態以基於一權重值及一激發值而產生一經處理值。該系統進一步包括對應於至少一權重傳輸通道及一激發傳輸通道之至少兩個共線傳輸通道。該權重傳輸通道及該激發傳輸通道各跨該運算陣列之一第一側邊緣延伸以將權重值及激發值提供至該陣列之該等胞元。
在一些實施例中,該運算陣列經組態以基於由各胞元產生之該等經處理值而產生複數個結果值。在一些實施例中,該至少兩個共線傳輸通道進一步包括跨該運算陣列之該第一側邊緣延伸之一結果輸出通道,該結果輸出通道輸出由該運算陣列產生之該複數個結果值。
在一些實施例中,該運算陣列經組態以在該運算陣列之該m
個行之各者之一端部胞元處產生對應於由該運算陣列之該各自行之該等胞元產生之經處理值之一彙總之該複數個結果值之一結果值,且經由該結果輸出通道自該運算陣列之該第一側輸出該所產生之m
個結果值。
在一些實施例中,該運算陣列經組態以使用在該陣列之該等胞元之至少一部分之各者中實施之路由電路自該運算陣列之該第一側輸出該所產生之m
個結果。在一些實施例中,該等路由電路經組態以使該m
個結果之各者沿該各自行傳播達數個胞元直至到達該各自行內之沿該運算陣列之一對角線之一胞元,且使該m
個結果之各者自沿該運算陣列之該對角線之該各自胞元跨該運算陣列之m
個列傳播,使得在產生該m
個結果之一相同相對時序自該運算陣列之該第一側自該運算陣列輸出該m
個結果之各者。
相關申請案之交叉參考
本申請案根據35 U.S.C. § 119(e)規定主張2019年11月26日申請之美國臨時申請案第62/940,818號之優先權,該案之全部內容以引用的方式併入本文中。
該等圖及以下描述僅藉由圖解而係關於較佳實施例。應注意,自以下論述,本文中揭示之結構及方法之替代實施例將容易地被認為可在不脫離所主張內容之原理的情況下採用之可行替代方案。
現將詳細參考若干實施例,其等之實例在附圖中加以繪示。應注意,在任何可行之處,類似或相同元件符號可用於圖中且可指示類似或相同功能性。該等圖僅為圖解目的而描繪所揭示系統(或方法)之實施例。熟習此項技術者將自以下描述容易地認知,可在不脫離本文中描述之原理的情況下採用本文中繪示之結構及方法之替代實施例。概述
本文中描述之一特製2D矩陣功能單元(下文中被稱為一運算陣列)完全自單元之僅一個維度(1D) (例如,左側)加載其運算元且產生結果。一運算陣列可對應於用於矩陣乘法、執行迴旋運算及/或類似物之一脈動陣列。在一些實施例中,一運算陣列用於實施一機器學習模型。
大多數運算陣列設計使用陣列之三個側來加載運算元(權重及激發)且輸出所產生結果(新激發)。例如,許多脈動陣列設計使陣列加載有分別來自陣列之底部或頂部及左側之權重及激發,且自陣列之頂部或底部輸出結果。例如,圖1繪示包括乘法累加胞元(MACC胞元)陣列之一運算陣列,其中自三個不同側將運算元加載至陣列中。如圖1中繪示,自陣列之一左側加載激發值,自陣列之一底側加載權重值,且結果傳播通過陣列之各行以自陣列之頂側輸出。
當自一運算陣列之不同側加載及輸出運算元及結果時,需要沿陣列之不同側之額外電路,以便加載及接收運算元及結果,從而潛在地限制縮放陣列之大小之能力。圖2A繪示一2D運算陣列,其中自不同側加載/輸出運算元(例如,權重及激發)及結果。圖2A之運算陣列可以類似於圖1中繪示之方式之一方式加載運算元及輸出結果。如圖2A中繪示,多維陣列之生長意味著陣列周圍之區域(例如,包括將運算元饋送至陣列之電路)之二次收縮。此侵蝕阻止僅在一單一方向上縮放。
另一方面,藉由自一個側加載全部運算元,可達成架構之直接線性縮放。圖2B繪示一2D運算陣列,其中自一單一側(例如,陣列之左側)加載/輸出運算元及結果。藉由僅自一單一側加載/輸出,移除二次縮放限制。例如,歸因於不必適應運算陣列之兩個維度上之改變,相鄰電路(包括記憶體、預處理器等)之寬度可為固定的,其中僅高度經縮放以匹配運算陣列之高度。
使用本文中呈現之技術,實施一2D運算陣列之一設計,其中自陣列之一單一側加載或輸出全部運算元及結果。單側加載之優點包含陣列之可縮放性。隨著運算陣列之大小(例如,陣列中之MACC數目)增加,饋送其之運算元要求亦增加。因此,隨著陣列生長O(n^2),陣列之各邊緣生長達O(n)。
圖3A繪示根據一些實施例之含有一運算陣列之頂層晶片巨型架構。巨型架構100包括儲存待由一運算陣列110使用以產生結果值之激發輸入及權重之一記憶體105。如圖3A中繪示,運算陣列110經由一或多個激發傳輸線及一或多個權重傳輸線透過運算陣列110之一第一側(繪示為圖3A中之左側)自記憶體105接收激發及權重值。另外,運算陣列110經由一或多個結果傳輸線透過第一側將結果值輸出至記憶體105 (例如,以儲存於記憶體105內)。在一些實施例中,儲存於記憶體105中之所接收結果值可用於判定待加載至運算陣列110上以供未來運算之激發值。
在一些實施例中,運算陣列110係包括一乘法累加(MACC)胞元陣列之矩陣乘法單元(MXM)。在其他實施例中,運算陣列110係用於執行迴旋運算之一迴旋陣列或其他類型之陣列。
在一些實施例中,來自記憶體105之權重在加載至運算陣列中之前可臨時儲存於一權重緩衝器115中。下文更詳細描述權重緩衝器115。在一些實施例中,可繞開權重緩衝器115,使得來自記憶體105之權重值經由權重傳輸線直接加載至運算陣列110上,如下文將論述。
儘管圖3A將運算陣列110繪示為相鄰於記憶體105定位,然應理解,在一些實施例中,運算陣列110可藉由額外組件與記憶體105分開。例如,圖3B繪示根據一些實施例之含有一記憶體及一運算陣列之一處理器之一高階圖。處理器可為一張量串流處理器(TSP)且組織為複數個功能區或單元,各經組態以對所接收資料執行特定功能。此等可包含:記憶體單元(MEM),其等經組態以儲存資料;向量執行模組(VXM)單元,其等包括經組態以對所接收資料執行逐點算術或邏輯運算之算術邏輯單元(ALU);MXM單元,其等包括用於執行矩陣乘法之一MACC胞元陣列;及開關執行模組(SXM)單元,其等容許資料在跨處理器之不同信道之間移動。記憶體105可對應於一MEM單元,而運算陣列110可對應於圖3B中繪示之一MXM單元。
在圖3B中繪示之處理器中,資料運算元(包含待由運算陣列使用之權重及激發值以及自運算陣列輸出之結果值)經由沿一第一維度(例如,在如圖3B中展示之任一方向上水平地)延伸之資料信道跨處理器之功能區傳輸,從而容許資料跨處理器之功能區傳輸。例如,在一些實施例中,各功能單元含有一胞元或運算塊陣列。例如,MEM單元可包括一記憶體胞元陣列,而VXM單元及MXM單元分別包括ALU及MACC胞元陣列。處理器之各功能區之胞元經組織為複數個列,其中各列之胞元由包括複數根導線之一各自資料信道連接,該複數根導線連接該列之相鄰胞元。處理器之各功能區之胞元可經由一資料信道接收資料運算元,對所接收資料運算元執行一或多個運算,且將所得資料輸出至資料信道上以傳輸至隨後功能區之胞元。例如,在一些實施例中,一資料運算元可自MEM單元之一記憶體胞元讀取,沿一資料信道(例如,對應於記憶體胞元之列)傳輸以由VXM單元之一ALU胞元處理,且接著傳輸至運算陣列(例如,MXM單元)之一MACC胞元以用於矩陣乘法,其之結果可傳輸回至MEM單元之一胞元以供儲存或傳輸至另一功能單元之一胞元以供進一步處理。另外,一功能區之一胞元可經由一資料信道接收一資料運算元且使資料運算元傳遞通過而無需額外處理(例如,一資料運算元自MEM單元之一記憶體胞元讀取且跨一資料信道傳輸通過VXM之ALU胞元而無需處理以在一MXM處進行處理以用於矩陣乘法中)。
儘管圖3B繪示以一特定順序配置之處理器之各種區,然應理解,在其他實施例中,處理器之各種單元可不同地配置。
能夠自一運算陣列之一單一側加載權重及激發值且輸出結果值容許在記憶體與運算陣列(及/或處理器晶片上之其他功能單元)之間傳輸之全部資料運算元沿著沿一單一維度延伸之資料信道傳輸。在一些實施例中,功能單元之各胞元相鄰於(或毗鄰)其等列中之其他胞元,且藉由連接各列之毗鄰胞元以形成用於該列之一共線資料信道而傳輸資料。歸因於共線佈線方案連接毗鄰胞元且減少擁塞,此容許跨處理器之功能單元傳輸一增加量之資料。
例如,一功能單元內部及功能單元之間的信號數目受限於「節距」(一對導線之間的距離),該「節距」判定可採用之導線密度(例如,導線數/mm)。例如,在具有50 nm節距之一晶片上,每mm可存在最大20K根導線,或由於通常不可能使用每單一可用導線,所以假定可用導線空間之50%利用率,則每mm可存在10K根導線。在一些實施例中,處理器之各胞元可為約1 mm高,從而容許跨胞元之各列之多至約10K個信號。在一些實施例中,一單一資料信道可具有:(2個方向)x(每串流138個位元)x32個串流=8,832根導線,其係<10 K/mm,如上文運算。在具有20個列之一處理器晶片中,針對依900 MHz操作之160 TB/s之一晶片上網路容量,此容許(20個資料信道)x(每資料信道8,832根導線)=176,640根導線。
然而,路由擁塞將消耗導線資源,以便連接並非毗鄰之組件。因此,一毗鄰設計式樣容許一共線資料流且最小化導線擁塞,從而容許更高效地利用可用基礎ASIC導線密度(例如,達成上文描述之導線密度),且最小化總導線長度。例如,運算陣列/MXM經組態以自陣列之相同側接收運算元輸入且輸出結果值(例如,向東流動之串流將運算元自記憶體攜載至MXM且向西流動之串流將結果自MXM攜載回至記憶體),從而容許運算陣列經由無需轉彎之平行導線連接至處理器(例如,記憶體)之其他功能區。然而,若在相反方向上產生結果(即,若在MXM之不同側上接收/輸出運算元及結果),則將需正交地路由信號以將結果返回至所要記憶體單元以供儲存。若資料路徑必須「轉彎」且正交地路由,則其消耗額外導線資源,從而侵蝕資料路徑之可用導線。為避免此,晶片上網路使用雙向串流暫存器(向東及向西)以使運算元及結果跨各信道穿梭(例如,容許MXM經由各列之資料信道跨MXM之相同側接收運算元且傳輸結果)。例如,一晶片上網路之其他實施例可包含一環或環面以使功能區之胞元互連且使用ASIC上之可用導線密度,同時最小化轉彎且導致導線擁塞之一需求。在一些實施例中(例如,如圖3B中繪示),各資料信道內之功能單元經組織以使功能單元(例如,MXM-MEM-VXM-MEM-MXM)交錯以利用功能單元之間的此資料流局部性。此晶片上導線密度遠大於用於在TSP之間通信之可用晶片外接針頻寬。
運算陣列胞元結構
在一些實施例中,如上文論述,運算陣列包括一胞元陣列(例如,n
個列×m
個行)。各胞元可對應於一基本運算基元,諸如一MACC函數。各胞元可採用多至三個輸入,且產生一單一輸出。一胞元之輸入可包括:一輸入偏差/偏移或子結果,其表示自一相鄰胞元(若存在)輸入之一部分結果;輸入權重/參數(例如,在一訓練程序期間判定之權重,或在運算陣列用於訓練的情況下表示一些初始權重,該等初始權重將在隨機梯度下降(SGD)正向及反向傳播階段或其他訓練技術期間更新);及輸入通道/激發,其等對應於傳入通道,可表示來自一神經網路之先前層之輸入影像或激發。胞元處理所接收輸入以產生對應於輸出特徵圖之一部分和之一輸出特徵。在一些實施例中,此等可在隨後經正規化且經歷一「激發函數」(例如,修正線性單元或ReLU)以將其等映射至輸入域上,其等可在該輸入域用於隨後層中。
例如,在用於執行一MACC函數之一胞元中,胞元將一所接收輸入權重與一所接收激發相乘,且將所得乘積相加至自一相鄰胞元接收之一輸入偏差(例如,部分和)。所得總和作為一偏差或子結果輸出至另一相鄰胞元,或在不存在用於接收所得總和之相鄰胞元的情況下作為一結果值自運算陣列輸出。在一些實施例中,在一單一時脈循環中加載各處理胞元輸入。下文更詳細描述權重及激發之加載。
在一些實施例中,各胞元包括一子胞元陣列。例如,一胞元可經組態以處理各包括複數個元素(例如,16個1位元組元素)之權重及激發值,且包括一子胞元陣列(例如,16x16個子胞元),各經組態以處理一權重元素(例如,1位元組權重元素)及一激發元素(例如,1位元組激發元素)以產生一各自結果。在一些實施例中,運算陣列包括20x20個胞元之一陣列,各胞元具有16x16個子胞元,從而產生一320x320元素陣列。
運算陣列權重加載
在一些實施例中,運算陣列之各胞元含有用於本端儲存所接收權重值之一或多個暫存器。此容許激發與權重獨立地傳遞,無需對激發及權重兩者在一胞元中之到達計時,從而簡化信號至其等所要位置中之路由。另外,加載至一胞元上之一特定權重可經儲存且用於涉及不同激發值之多個運算。
圖4A及圖4B繪示根據一些實施例之將權重加載至一運算陣列之胞元中。圖4A繪示在許多典型運算陣列系統中可如何將權重加載至一運算陣列中。一權重傳輸線402跨越包括複數個胞元404之運算陣列之一列或行,且(例如,直接或經由一權重緩衝器)傳輸自一記憶體接收之權重值。如圖4A中繪示,複數個捕獲暫存器406沿權重傳輸線402定位。各捕獲暫存器406經組態以捕獲由權重傳輸線402傳輸之一當前權重值,且在權重傳輸線402上將一先前捕獲之權重值傳遞至一隨後捕獲暫存器406。在一些實施例中,權重傳輸線402包含用於由權重傳輸線跨越之列或行之各胞元404之一個捕獲暫存器406。在各時脈循環,用於一特定胞元之捕獲暫存器406可將其當前儲存之權重值沿對應於一隨後胞元之權重傳輸線402傳遞至下一捕獲暫存器406,使得沿權重傳輸線402傳輸之各權重值在複數個時脈循環內傳播。
運算陣列之各胞元包含一權重暫存器408。在權重加載期間,各權重暫存器408經組態以自一對應捕獲暫存器406接收一權重值且儲存所接收權重值以供胞元在隨後運算中使用。權重暫存器408各接收一控制信號,該控制信號控制各權重暫存器408何時自其對應捕獲暫存器406讀取。例如,將用於權重暫存器408之控制信號與透過權重傳輸線402之權重值傳輸同步,使得當捕獲暫存器406接收待加載於胞元404中之權重值時,用於一胞元404之各權重暫存器408讀取其對應捕獲暫存器406之當前儲存權重值。儲存於權重暫存器408上之權重值可由胞元404維持且用於多個循環內之運算。
自記憶體至運算陣列之資料移動之協調被稱為「控制流」。控制流由一控制器實行,該控制器發出描述操作及資料移動(例如,權重及激發值之加載、結果值之輸出)、權重重用及記憶體元件之協調使用(例如,權重緩衝器之使用及/或繞開)之指令。
圖4B繪示根據一些實施例之如何將權重值加載至一運算陣列中。圖4B中之權重傳輸線402傳輸自一記憶體接收之權重值。在一些實施例中,權重傳輸線402對應於形成對應於包含胞元404之運算陣列之一列之一資料信道之至少一部分之複數根導線。然而,取代包含用於胞元404之各者之一捕獲暫存器,在一單一時脈循環內透過權重傳輸線402在複數個胞元上傳輸權重資料,其中一捕獲暫存器406定位於各複數個胞元之間。胞元404之各者耦合至捕獲暫存器406,使得胞元404之權重暫存器408能夠自相同捕獲暫存器406讀取當前透過權重傳輸線402傳輸之權重值。在一些實施例中,各權重暫存器408自控制器接收一控制信號(例如,一寫入啟用信號),該控制信號指示權重暫存器408是否將讀取透過權重傳輸線402 (例如,自捕獲暫存器406)傳輸之當前值。因而,透過權重傳輸線402之權重值傳輸及提供至權重暫存器408之各者之控制信號可經同步,使得在相同時脈循環內沿權重傳輸線402傳輸一特定胞元404所預期之權重值,在該相同時脈循環內將一寫入啟用控制信號提供至特定胞元404之權重暫存器408 (或具有一預定偏移),使得胞元之權重暫存器408能夠接收所傳輸權重值。
在一些實施例中,在複數個時脈循環之各者期間,權重傳輸線402將一所傳輸權重值儲存於捕獲暫存器406上以由複數個胞元之一胞元404讀取(例如,基於一所接收控制信號)。在其中一胞元包括複數個子胞元(例如,16x16個子胞元)之實施例中,一所傳輸權重值可包括用於各子胞元之權重值。例如,在一些實施例中,權重傳輸線402包括16根導線,其等各將16個值(例如,16個值之一向量)串流傳輸至捕獲暫存器406上,該16個值由胞元404讀取且用作胞元之16x16個子胞元之權重值。在一些實施例中,一胞元404接收包括16個值之16個向量之所傳輸權重值,且轉置各向量以將權重值提供至子胞元之一各自行。
在其他實施例中,可在一單一時脈循環期間透過權重傳輸線402傳輸用於多個胞元之多個權重值,其中回應於接收寫入啟用信號,胞元之各者之權重暫存器可自捕獲暫存器接收彙總在一起之多個權重值,且將所接收權重值之一各自部分提取及儲存於權重暫存器中(例如,基於胞元之一位址)。
藉由組態權重傳輸線402及胞元之權重暫存器408,使得權重暫存器408自定位於多個胞元之組之間的捕獲暫存器讀取權重值,減少實施權重傳輸線所需之區域量。另外,加載權重值所需之暫存器之減少數目減少將一時脈信號提供至暫存器所需之時脈功率之總量。
在一些實施例中,權重傳輸線可僅能夠在一單一時脈循環內(例如,在一特定距離內)橫跨特定數目個胞元傳輸權重值。因而,在一些實施例中,多個捕獲暫存器可沿權重傳輸線對應於運算陣列之各列中之多組胞元定位,從而將運算陣列之各列劃分為多個區段。在一些實施例中,對應於一捕獲暫存器之各區段之一胞元數目係基於權重傳輸線能夠在一單一時脈循環內傳輸權重值之距離。
圖5A繪示根據一些實施例之將權重加載至一運算陣列上。如圖5A中繪示,透過一權重傳輸線502跨一運算陣列傳輸權重資料。權重傳輸線502經組態以將權重值提供至運算陣列之一特定列之胞元。運算陣列之各列可含有複數個胞元(例如,m個胞元),其等各被劃分為p個胞元(例如,10個胞元)之組。
權重傳輸線502在一單一時脈循環期間透過運算陣列之一組p個胞元504傳輸一權重值。沿權重傳輸線502對應於各組p個胞元(或在各組p個胞元之間)定位之一捕獲暫存器506捕獲由權重傳輸線502透過該組p個胞元傳輸之權重值,且在一隨後時脈循環內將所捕獲權重值沿權重傳輸線502傳遞至下一組p個胞元(例如,至一隨後捕獲暫存器)。在一些實施例中,取代捕獲暫存器506,可使用不同類型之元件來確保跨傳輸線之所傳輸權重值之時序。例如,在一些實施例中可使用一鎖存器。在其他實施例中,可使用波狀管線(wave pipelining)技術將傳播權重值之時序保持在正確速率。
如圖5A中繪示,一組p個胞元之各胞元504能夠自捕獲暫存器506讀取及儲存由權重傳輸線502在該組p個胞元上傳輸之一權重值。在一些實施例中,p個胞元之各者接收一控制信號,該控制信號控制胞元何時自捕獲暫存器506讀取及儲存所傳輸權重值。在一些實施例中,運算陣列在複數個循環(例如,p個循環)內針對該組p個胞元加載p個不同權重值,其中一不同胞元在各循環期間加載其各自權重值。由於沿權重傳輸線502之各捕獲暫存器用於將權重值提供至運算陣列之一列內之多個胞元(例如,p個胞元),所以運算陣列之胞元之一列加載權重值所需之時脈循環之一總數目減少,此係因為一權重值將需在其間行進以到達該列之各胞元之一捕獲暫存器數目減少。例如,針對兩組p個胞元加載權重值(例如,如圖5A中繪示)可在2p+1個時脈循環內執行(其中額外1個時脈循環考量將權重值自第一捕獲暫存器傳輸至第二捕獲暫存器所需之一時脈循環)。
在一些實施例中,運算陣列之各胞元自一控制器接收一控制信號。在其他實施例中,控制器將一控制信號傳輸至一胞元子集,該胞元子集接著在一或多個隨後時脈循環內將控制信號傳播至運算陣列之其餘胞元。例如,在一些實施例中,各胞元可經組態以將其之所接收控制信號儲存於一控制信號暫存器中且在一隨後時脈循環內將控制信號傳播至垂直方向上、水平方向上或兩者上之一相鄰胞元。透過權重傳輸線502之權重值傳輸可基於控制信號之傳播而計時,使得當傳輸胞元所預期之權重值時,各胞元自權重傳輸線讀取。
圖5B繪示根據一些實施例之當針對一運算陣列之一胞元加載權重時可如何使用一控制信號。在一些實施例中,各胞元接收一控制信號,該控制信號指示胞元是否應將當前透過權重傳輸線傳輸之權重值讀取至胞元之權重暫存器中。例如,控制信號可包括「0」或「1」,其中「0」指示胞元不應將當前傳輸之權重值讀取至權重暫存器中,而「1」指示胞元應將當前傳輸之權重值讀取至權重暫存器中。
在一些實施例中,各胞元使用一控制信號暫存器來儲存一所接收控制信號。控制信號暫存器可儲存控制信號之值,且在一隨後時脈循環內將控制信號提供至運算陣列之一隨後胞元。例如,如圖5B中繪示,用於一胞元之控制信號暫存器可將控制信號提供至運算陣列之下一列之一隨後胞元(例如,當前胞元正上方之一胞元)以及運算陣列之下一行之一隨後胞元(例如,當前胞元正右方之一胞元)。將控制信號傳播通過相鄰胞元簡化將控制信號提供至運算陣列之胞元所需之佈線,此係因為陣列之胞元可彼此連接,而無需用於各胞元之一單獨控制導線。在一些實施例中,胞元之控制信號暫存器可僅將控制信號提供至下一列之一胞元(例如,沿運算陣列中之其胞元行向上傳播控制信號)且不提供至下一行之一胞元。
在一些實施例中,運算陣列之胞元經組態以自與接收資料(例如,權重資料)之方向不同之一方向接收控制信號。圖5C繪示根據一些實施例之可如何藉由一運算陣列之胞元接收控制信號之一圖。如圖5C中繪示,運算陣列可與一指令控制單元(ICU) 508相關聯。ICU 508較佳地接近於記憶體及運算陣列定位。在其他實施例中,ICU 508可定位於運算陣列之與記憶體相對之一側上。ICU 508經組態以接收至少一個指令且針對運算陣列之各行產生一各自命令信號。如圖5C中展示,ICU 508經由控制信號線510沿運算陣列之一邊緣(例如,底邊緣)將控制信號傳輸至運算陣列之胞元,該邊緣垂直於透過其傳輸資料(例如,權重值)之邊緣(例如,左邊緣)。在一些實施例中,由於控制信號資料相較於由運算陣列使用之權重及激發值之資料在大小上通常小得多(例如,小兩個數量級),所以傳輸控制信號所需之佈線量比用於傳輸權重及激發值之佈線小得多。因而,可經由運算陣列之與權重及/或激發不同之一側傳輸控制信號,而無需沿運算陣列之不同側之大量額外電路。
在一些實施例中,由於各胞元經組態以將控制信號傳播至多至兩個相鄰胞元(例如,垂直方向上之一相鄰胞元及水平方向上之一相鄰胞元,例如,如圖5B中繪示),所以控制信號可對角地傳播通過運算陣列(例如,自陣列之一邊角開始且朝向陣列之一相對邊角傳播)。然而,控制信號自運算陣列之一個邊角至相對邊角的傳播可需要針對運算陣列之全部胞元加載權重值,而無針對運算陣列之胞元之僅一部分加載權重值的選項。例如,由運算陣列之一邊角胞元接收之一控制信號可導致胞元在一第一時脈循環期間加載一權重值,該控制信號接著被傳播至運算陣列之其餘胞元,從而導致其餘胞元之各者在隨後時脈循環期間加載權重值。在其他實施例中,控制信號可由一特定列或行之全部胞元接收,且接著跨運算陣列傳播。例如,運算陣列之一最右行之各胞元可接收一控制信號,從而導致胞元在一第一時脈循環期間加載一權重值,該控制信號接著在隨後時脈循環內跨運算陣列之列傳播(例如,在一第二時脈循環期間傳播至各列之一第二胞元,等等)。以此方式傳播控制信號可容許僅針對運算陣列之一列子集加載權重值。
在一些實施例中,為容許僅針對運算陣列之所要部分(例如,運算陣列之一特定矩形子區)之權重值加載,控制信號可包括在兩個不同方向上傳播通過運算陣列之兩個單獨部分。例如,控制信號可包括一垂直部分及一水平部分。圖6繪示根據一些實施例之一控制信號之垂直部分及水平部分傳播通過一運算陣列。如圖6中繪示,運算陣列600之各胞元602可接收對應於一水平部分之一第一控制信號部分c1及對應於一垂直部分之一第二控制信號部分c2。
水平部分c1及垂直部分c2之各者可包括胞元是否應將當前傳輸之權重值讀取至其權重暫存器中之一指示符(例如,「0」或「1」值),其中胞元僅在垂直部分及水平部分兩者皆指示應讀取權重值(例如,c1及c2兩者皆具有「1」值)時讀取權重值。另一方面,若c1或c2指示胞元不應自權重傳輸線讀取當前權重值(例如,c1或c2具有「0」值),則胞元不讀取當前傳輸之權重值。
控制器可將一控制信號部分提供至運算陣列之一邊緣上之各胞元以跨陣列傳播。例如,控制器可將一控制信號之一水平部分c1提供至運算陣列600之垂直邊緣(例如,左邊緣)上之各胞元且將一垂直部分c2提供至運算陣列600之一水平邊緣(例如,底邊緣)上之各胞元,該水平部分c1及該垂直部分c2之各者可接著在隨後時脈循環內分別在一水平或垂直方向上跨陣列傳播。各胞元僅在一垂直方向上傳播控制信號之垂直部分c2且僅在一水平方向上傳播水平部分c1。
藉由將控制信號分割為單獨部分(例如,水平部分c1及垂直部分c2)且僅當控制信號之兩個部分皆如此指示(例如,控制信號之兩個部分皆係1)時自權重傳輸線讀取,運算陣列可經組態以針對運算陣列之特定部分加載權重。圖6中繪示之控制信號加載方案可被稱為對角線加載,其中控制權重值之加載之控制信號沿一對角線傳播,該對角線在數個時脈循環內跨運算陣列移動。
例如,圖7A繪示根據一些實施例之一運算陣列,其中僅在陣列之一特定部分中加載權重。如圖7A中繪示,運算陣列700沿一垂直邊緣(例如,右邊緣)及一水平邊緣(例如,底邊緣)接收控制信號部分,該等控制信號部分分別在一水平方向及一垂直方向上跨陣列傳播。控制信號部分可包括「1」值或「0」值,指示一胞元是否應加載當前沿一相關聯權重傳輸線傳輸之權重值。因而,水平控制信號部分可指定用於加載權重之運算陣列之列,而垂直控制信號部分可指定用於加載權重之運算陣列之行。
由於各胞元基於所接收控制信號之兩個部分而加載沿陣列之權重傳輸線傳輸之權重,所以僅定位於皆具有「1」之一控制信號部分之列及行上之運算陣列之胞元將加載權重,而運算陣列之其餘胞元將不加載權重。因而,藉由基於水平及垂直控制信號之交叉而將權重加載於運算陣列之胞元中,可針對運算陣列之特定區執行權重加載,而無需針對運算陣列之全部胞元加載權重值。
在一些實施例中,取代各胞元沿一垂直邊緣及一水平邊緣兩者接收一控制信號部分,運算陣列之胞元經組態以自一單一方向(例如,垂直地)接收控制信號。圖7B繪示根據一些實施例之一運算陣列,其中僅在陣列之一特定部分中加載權重。在一些實施例中,運算陣列之胞元經組態以沿各行接收控制信號(例如,如圖5C中繪示)。如圖7B中繪示,運算陣列710之各行接收一信號,該信號指示該行是否應加載沿一相關聯權重傳輸線傳輸之權重值。在一些實施例中,由於接收「1」命令之行之全部胞元將加載權重值,故對應於一所要區外之列之行之胞元可接收零值權重。在其他實施例中,該行之胞元接收指示一列範圍之一命令,其中各胞元基於其是否在所指示列範圍內而加載或不加載權重值。在一些實施例中,組態運算陣列以僅在一單一方向上(例如,垂直地)接收控制信號可簡化佈線及路由。因而,運算陣列可經組態以分開控制信號之接收與資料(例如,權重及/或激發值)之接收,其中經由一第一方向(例如,垂直地)傳輸控制信號,而在一第二不同方向上(例如,水平地)傳輸資料。
在一些實施例中,運算陣列之行與一指令控制單元(ICU)相關聯。ICU經組態以接收用於一或多個行之一指令且判定待發送至各行之胞元之一控制信號。例如,在一些施例中,ICU接收用於運算陣列之胞元之一安裝權重指令。安裝權重指令可包括至少一起始行參數及/或一結束行參數。ICU剖析指令且判定待提供至各行之胞元之一命令,例如若行處於由指令指示之起始行與結束行之間的情況下提供「1」命令,或否則提供「0」命令。在一些實施例中,指令可進一步含有指示一最頂列之一參數,該最頂列指示胞元之結果在該處向下而非向上傳播之行之一列(下文更詳細描述)。
儘管圖7A及圖7B僅將運算陣列之一單一區繪示為加載權重,然在其他實施例中,控制信號部分可經組態以基於運算陣列之哪些列及行被提供水平及垂直控制信號值「1」而針對運算陣列之多個非連續區加載權重。
能夠僅在運算陣列之特定子區中加載權重容許具有低批量大小之模型之更高效處理。例如,針對具有16x16個胞元之一運算陣列,若僅需陣列之2x16區來實施一模型,則僅需2個時脈循環來將權重值重新加載至陣列上,從而容許每2個時脈循環加載模型之權重值。
權重加載順序
圖8A至圖8C繪示根據一些實施例之至運算陣列之胞元之權重傳輸之順序及時序。如上文論述,將沿權重傳輸線之權重值傳輸與跨運算陣列之胞元之控制信號傳播同步,以便將正確權重值加載至各胞元中。由於胞元之控制信號可跨運算陣列對角地傳播,所以跨運算陣列之各列或行之權重傳輸線之權重值傳輸可經排序及交錯以反映控制信號傳播。出於實例目的,圖8A至圖8C之各者繪示具有配置成三個列及三個行之九個胞元之一運算陣列。
圖8A繪示根據一些實施例之將控制信號提供至一運算陣列。類似於圖7A中繪示之運算陣列700,控制信號部分由陣列之底邊緣及左側邊緣上之胞元接收且在複數個隨後時脈循環內分別跨陣列向上及向右傳播。由於所傳播控制信號在不同時間由運算陣列之不同胞元接收,所以透過權重傳輸線傳輸以加載至運算陣列之胞元上之權重值之時序及順序可取決於權重傳輸線在運算陣列上之方向及定向。儘管圖8A繪示經由一水平方向提供至運算陣列之胞元之水平控制信號部分,然應理解,在一些實施例中,可經由在垂直方向上延伸之一控制信號線將水平控制信號部分提供至各列之最左胞元(例如,第一行之胞元)(例如,使得將控制信號提供至運算陣列之胞元之全部控制信號線在垂直方向上延伸)。在其中水平及垂直控制信號在各時脈循環傳播至每列/行之一隨後胞元之實施例中,水平控制信號部分及垂直控制信號部分可各以一交錯方式提供(例如,各列之胞元在一先前列之時脈循環之後的一個時脈循環接收水平控制信號部分,且各行之胞元在一先前行之時脈循環之後的一個時脈循環接收垂直控制信號部分)以維持各胞元接收指示該胞元加載權重資料之各自水平及垂直控制信號部分之一時序。
在其他實施例中,控制信號在僅一個方向(例如,垂直方向)上傳播至運算陣列之胞元。例如,運算陣列之各行之一底胞元可經由一各自控制信號線接收一控制信號(例如,如圖5C中繪示),且將所接收控制信號傳播至其各自行中之隨後胞元。在一些實施例中,各行之控制信號經交錯。例如,控制信號可經交錯,使得一第一行之底胞元在一第一時脈循環期間接收一寫入啟用控制信號,且一第二行之底胞元在一第二時脈循環期間接收一寫入啟用控制信號等等,使得陣列之一給定列之各胞元在一不同時脈循環期間接收一寫入啟用控制信號。此可經執行,使得運算陣列之一給定列之各胞元可加載一不同權重值(例如,自沿該列之一權重傳輸線之一捕獲暫存器)。
圖8B繪示根據一些實施例之一運算陣列中之權重加載順序,其中逐行加載權重。運算陣列之胞元1至9之各者將加載有一各自權重值w1至w9。運算陣列可與對應於運算陣列之行之各者之複數個權重傳輸線(例如,對應於運算陣列之三個行之三個權重傳輸線)相關聯。
權重值w1至w9以匹配透過運算陣列之胞元之控制信號傳播之一順序加載於權重傳輸線上。例如,胞元9可在一第一時脈循環期間接收一控制信號之垂直及水平部分(例如,如圖8A中繪示之一控制信號之垂直及水平部分,或經由垂直方向接收之交錯控制信號,如上文論述),該控制信號指示其應加載在一特定時間期間(例如,在第一時脈循環期間)傳輸於權重傳輸線上之一權重值。因而,為匹配控制信號之時序,在第一時脈循環期間透過對應於胞元91之行之權重傳輸線傳輸權重值w91。在一第二時脈循環期間,將權重w64及w82加載至其等各自胞元中。在一第三時脈循環期間,加載權重w3、w5及w7,此後接著在一第四時脈循環期間加載權重w26及w48,且在一第五時脈循環期間加載權重w19。因而,權重值w1至w9以基於運算陣列之行之一順序加載,各行之權重值基於跨運算陣列之胞元之一控制信號傳播而交錯。
圖8C繪示根據一些實施例之一運算陣列中之權重加載順序,其中逐列加載權重。在圖8C中繪示之實例中,權重傳輸線橫跨運算陣列之各列(例如,對應於運算陣列之三個列之三個權重傳輸線)。由於控制信號以相同於圖8B中之方式跨運算陣列之胞元傳播,所以在各時脈循環內傳輸相同權重值(例如,在一第一時脈循環內傳輸w1,在一第二時脈循環內傳輸w2及w4,且在一第三時脈循環內傳輸w3、w5及w7,在一第四時脈循環內傳輸w6及w8,且在一第五時脈循環內傳輸w9)。然而,由於權重傳輸線跨列而非行定向(如圖8B中繪示),所以權重值在橫跨列之不同權重傳輸線上之分佈相對於權重在橫跨行之權重傳輸線上之分佈而轉置。例如,雖然圖8B繪示透過不同權重傳輸線傳輸權重w1、w2及w3,但在圖8C之組態中,以相同時序但在相同傳輸線上傳輸權重w1、w2及w3。類似地,雖然圖8B繪示在不同時脈循環期間透過相同權重傳輸線傳輸之權重w1、w4及w7,但在圖8C中繪示之組態中,透過不同權重傳輸線但以相同時序傳輸權重w1、w4及w7。
因而,如何透過權重傳輸線傳輸權重值之時序取決於控制信號傳播通過運算陣列之胞元之時序。另外,權重值在不同權重傳輸線上之分佈取決於權重傳輸線之定向及方向,其中當權重傳輸線係水平時,權重值之分佈相對於當權重傳輸線係垂直時轉置。
藉由轉置所加載權重值之順序,可將權重加載與輸入激發流對準。藉由對準權重加載與激發加載,可更容易縮放運算陣列之大小(例如,如關於圖2A及圖2B論述)。另外,實施用於將權重及激發值加載至運算陣列中之權重及激發傳輸線所需之一佈線量可大幅減小。
圖9A繪示根據一些實施例之一運算陣列之一高階圖,其中自不同側加載權重及激發。如圖9A中繪示,記憶體能夠經由橫跨運算陣列之水平寬度之激發傳輸線將激發值加載至運算陣列上。激發傳輸線直接自記憶體路由至運算陣列之邊緣(例如,運算陣列之左邊緣)且跨運算陣列延伸。另一方面,自一不同方向(例如,自底邊緣垂直地)將權重值加載至運算陣列上。因而,為自底邊緣將權重值加載至運算陣列上,權重傳輸線必須延伸至記憶體之底邊緣,跨記憶體之底邊緣與運算陣列之各自行之間的距離,且橫跨運算陣列之行之長度。因此,加載權重值所需之佈線量可顯著大於加載激發值所需之佈線量。在一些實施例中,運算陣列經組態,使得運算陣列之各胞元在一個維度上較長(例如,矩形而非方形)。在其中權重傳輸線必須跨運算陣列之較長維度延伸之情況中(例如,如圖9A中繪示),將權重值加載至運算陣列上所需之額外佈線量進一步增加。此外,在一些實施例中,為保留時序,至運算陣列之各行之傳輸線之長度可需在長度上匹配,即使針對最靠近於記憶體之運算陣列之行,亦需要額外佈線。
另一方面,圖9B繪示根據一些實施例之一運算陣列之一高階圖,其中對準權重加載與激發加載。如圖9B中繪示,權重傳輸線及激發傳輸線兩者可直接共線地自記憶體路由至運算陣列,且橫跨運算陣列之水平寬度,從而大幅減少路由權重及激發傳輸線所需之一佈線量。此可減小容納用於將運算元加載至運算陣列上之電路所需之一面積以及潛在地減小在運算陣列上加載操作時之一延時量。在其中運算陣列在一個維度上較長之實施例中,運算陣列及記憶體可經放置,使得權重及激發線橫跨運算陣列之較短維度,此減小所需之一佈線量以及容許權重傳輸線含有較少捕獲暫存器(例如,如圖5A中繪示),此係歸因於各權重傳輸線需要跨運算陣列橫跨一較短距離。此外,由於權重傳輸線之各者橫跨運算陣列之水平寬度,所以與權重傳輸線經路由至運算陣列之一底邊緣且沿陣列之各自行向上的情況相比,更容易維持權重傳輸線之長度之均勻性。另外,由於權重傳輸線無需轉彎以到達運算陣列110,所以減少導線擁塞,且可更高效地利用晶片上用於配置佈線之空間。
沿相同側之結果值輸出
在一些實施例中,除能夠自運算陣列之相同第一側加載權重及激發以外,由運算陣列透過處理權重及激發值而產生之結果亦自第一側輸出。在一些實施例中,輸出結果值可儲存於記憶體中且用作隨後運算之激發值。藉由自運算陣列之與加載激發值相同之側輸出結果值,可減小儲存結果且在一隨後時間重新加載其等作為新激發值所需之一佈線量。
在一些實施例中,基於運算陣列之一對角線路由經運算結果值,使得其等可自運算陣列之與加載權重及激發值相同之側輸出,同時維持時序(例如,由運算陣列計算之全部結果值可在其等被計算之後的一設定時間量內由陣列輸出)。陣列之對角線將陣列分為上三角形及下三角形。
圖10A繪示根據一些實施例之一運算陣列之一圖,其中計算結果值。如圖10A中繪示,自運算陣列之相同側加載權重及激發值(運算元)(經由複數個權重傳輸線(例如,如上文描述,其等可被統稱為權重傳輸通道)及複數個激發傳輸線(其等可被統稱為激發傳輸通道))。例如,在一些實施例中,權重傳輸通道及激發傳輸通道跨運算陣列之一側邊緣延伸且耦合至運算陣列之各列中之第一胞元。另外,藉由彙總陣列之各行之胞元之輸出而計算結果值,從而在陣列之各行之頂部處產生結果值。在一些實施例中,運算陣列中之各行之頂部處之胞元可包括一或多個後處理電路以對所產生結果值執行一或多個後處理功能。
由於在陣列之各行之頂胞元處判定結果值,所以路由結果值以自陣列之頂邊緣輸出可為相對簡單的(因為陣列之各行之頂胞元皆相鄰於頂邊緣)。然而,為路由結果值以自運算陣列之與加載運算元相同之側(例如,左邊緣,經由複數個結果輸出線或(統稱地)一結果輸出通道)輸出,路由應經組態,使得在各結果被計算之後由運算陣列輸出該結果之一時間係恆定的,而無關於在哪一行計算結果值。
圖10B繪示用於在陣列之各行之頂胞元處輸出經彙總結果值之結果路徑。結果在一相反方向上(例如,向下)傳播,圍繞對角線反射,且自與加載運算元相同之側出現。藉由使結果值向下位移且自對角線反射,使自陣列之各行輸出結果值所需之時脈循環數目恆定。
因此,在圖10A及圖10B中繪示之實施例中,首先自陣列之左側將權重加載及儲存於其等各自胞元中(例如,使用上文關於圖4及圖5描述之技術)。自相同側將激發傳遞至陣列中且基於權重值進行處理。一旦經處理,各胞元產生一子結果,其等跨各行之胞元進行彙總。由各行中之最後胞元(例如,頂胞元)產生最終結果值,對應於該行中之全部胞元之子結果之一彙總。
如圖10B中繪示,當在陣列之各行之頂胞元處產生結果值時,其首先沿相同行向下反射。在到達對角線時,結果值接著自對角線反射且自運算陣列路由朝向運算陣列之第一側(例如,向左)。藉由使結果值向下且自對角線反射,由各結果值傳遞至其自第一側輸出之位置所通過之胞元數目針對運算陣列之全部行係相同的。因而,即使一些結果值在運算陣列之較靠近於第一側之行中產生,一結果值在其已被計算之後自運算陣列輸出之時間量針對全部行仍係恆定的。
運算陣列之胞元之至少一部分包含一路由電路,該路由電路經組態以將運算陣列之最終結果值(例如,在各行之頂胞元處判定)路由為運算陣列之第一組以進行輸出。如圖10A及圖10B中展示,運算陣列之胞元被劃分為對角胞元1002、路由非對角胞元1004及非路由胞元1006。當產生一最終結果值(例如,在陣列之各行之頂胞元處)時,運算陣列之對角胞元1002及路由非對角胞元1004之路由電路將最終結果值路由至運算陣列之第一側,而在最終結果值之路由中涉及非路由胞元1006。
圖10A及圖10B中繪示之用於自運算陣列之第一側路由輸出資料(例如,最終結果值)之技術可應用於具有n個列×m個行之運算陣列。運算陣列在m個行之各者之頂胞元處產生m個結果值,該等結果值沿各行向下傳播(藉由該行之作用中非對角胞元)直至到達一對角胞元。在其中n與m不相等之實施例中,對角胞元可經指定為各行之第i個最頂胞元,自與第一側相對之行開始(例如,最遠離於第一側之行之第一最頂胞元、第二遠離於第一側之行之第二最頂胞元等)。結果值自對角胞元「反射」且沿其各自對角胞元之列傳播,從而確保全部結果以相同時序自運算陣列之第一側輸出。在一些實施例中,運算陣列可經組態以具有大於或等於一行數之一列數以確保存在可自其等輸出結果值之足夠列。在一些實施例中,可轉置待使用運算陣列相乘之一矩陣,諸如m<n。
圖11繪示根據一些實施例之用於路由結果值之陣列之一個別胞元內之一路由電路之一高階電路圖。陣列之各胞元包括一路由電路。路由電路接收胞元之一子結果值(例如,MACC結果,對應於藉由處理一權重值及一激發值而產生之一經處理值,與自行中之一先前胞元(若存在)接收之一子結果值或部分和彙總),且將結果傳遞至行中之下一胞元(例如,上方胞元) (若存在)。若不存在下一胞元(例如,當前胞元係行之頂胞元),則胞元之子結果值將係待由運算陣列輸出之結果值(例如,最終結果值)。
路由電路儲存胞元是否在陣列之頂列上及胞元是否在陣列之對角線上之指示。在一些實施例中,控制器將關於陣列內之各胞元是否係一頂胞元或一對角胞元之一指示傳輸至該胞元。此容許陣列內之不同胞元成為頂胞元及/或對角胞元。例如,若僅陣列之一部分用於運算(例如,如圖7A及圖7B中繪示),則相較於整個陣列或陣列之一整個平面用於運算的情況,指定為頂胞元及對角胞元之胞元將為不同的。在一些實施例中,運算陣列接收指示一起始行、結束行及/或頂列之一指令(例如,一安裝權重指令)。ICU可基於指令參數而判定哪些胞元係一頂胞元或對角胞元,且將適當指令傳輸至各胞元(例如,作為一命令信號之部分)。在其他實施例中,各胞元可接收一或多個指令參數(諸如一頂列、起始行及/或結束行之一指令),且判定其是否係一頂胞元或對角胞元。另外,各胞元可判定其是否係一路由胞元或非路由胞元(例如,其是否在對角線上方或下方) (或接收此之一指示)。
若胞元在陣列之一頂列上,則胞元之子結果對應於待輸出之陣列之行之結果值(例如,最終結果值)。因而,路由電路使結果沿相同行向下反射。另一方面,若胞元並非一頂胞元,則胞元之結果並非待輸出之最終結果值,且路由電路代替地將胞元之結果傳播至其行中之下一胞元(例如,向上)以進行進一步計算,且接收自一上方胞元接收之一結果(對應於尚未輸出之一先前計算結果值)且將其向下傳播至一下方胞元。
若胞元在陣列之對角線上,則路由電路經組態以接收結果值(例如,胞元之MACC結果(若胞元亦係一頂胞元)或來自一上方胞元之結果)且將其向左反射。另一方面,若胞元不在一對角線上,則其自右方胞元接收一結果,且將其向左傳播(至一隨後胞元或自運算陣列之左側輸出)。
儘管圖11繪示在特定方向上路由結果值,然應理解,相同技術可用於在其他方向上或朝向運算陣列之其他側路由結果值。另外,雖然圖11繪示在各胞元中使用多工器,但在其他實施例中,藉由胞元路由結果值可以其他方式執行。例如,在一些實施例中(例如,其中運算陣列之一大小係固定的),一胞元可經硬接線以基於其在運算陣列中之位置而在特定方向上路由結果值。在一些實施例中,各胞元可使用一或多個開關或其他類型之電路來路由結果值。在一些實施例中,路由電路可經組態以在將結果路由至一下方胞元之前檢查胞元是否並非係一對角胞元。
在一些實施例中,僅運算陣列之對角胞元1002及作用中非對角胞元1004含有路由電路,而運算陣列之非作用胞元1006不含有路由電路。在其中運算陣列之大小可經組態(例如,使用如圖7A及/或圖7B中繪示之控制信號)之其他實施例中,哪些胞元係對角胞元、路由非對角胞元及非路由胞元可基於運算陣列之組態而改變。因而,全部胞元可含有一各自路由電路。在一些實施例中,非路由胞元之路由電路可斷電或在一較低功率狀態中運行。
因而,在使用上文描述之技術的情況下,運算陣列能夠皆自陣列之相同第一側加載激發及權重值以及輸出結果值。藉由透過陣列之第一側路由全部輸入及輸出,可更容易縮放陣列之大小,且可大幅減小所需之佈線量。
儘管圖11繪示作為運算陣列之各胞元之部分實施之一路由電路,然應理解,在其他實施例中,各胞元之各子胞元可包括用於路由由子胞元產生之結果值以由運算陣列輸出之一各自路由電路。例如,在其中各胞元包括複數個子胞元(例如,一子胞元陣列)之一些實施例中,各子胞元可包括類似於圖11中繪示之路由電路之一路由電路,且其中以子胞元層級而非胞元層級(例如,基於陣列內之頂子胞元及對角子胞元)執行結果值之路由。
圖12繪示根據一些實施例之用於將權重及激發加載至一運算陣列中之一例示性架構。圖12繪示一運算陣列1200內之一胞元列1202。一激發傳輸線1204經由陣列之一第一側(例如,左側)進入運算陣列之一邊界且跨胞元列運行。在一些實施例中,跨激發傳輸線定位之捕獲暫存器1206捕獲所傳輸激發值,從而容許其等加載至列之各胞元內之一激發暫存器1208上。在一些實施例中,一激發值在連續時脈循環內傳播至列中之各胞元(例如,一特定激發值在一第一時脈循環期間加載至列之第一胞元上,在一第二時脈循環期間加載至列之一第二胞元上等等)。在其他實施例中,取代捕獲暫存器,可使用其他元件或技術,諸如鎖存器或波狀管線。在一些實施例中,激發傳輸線1204可傳輸彙總在一起之多個激發值,其中各胞元可提取經彙總激發值之一特定激發值以用於運算。
一權重傳輸線1210經由陣列之一第一側(例如,左側)進入運算陣列之一邊界且跨胞元列運行。沿權重傳輸線定位之一權重分佈暫存器1212接收所傳輸權重值,該等所傳輸權重值可由胞元之權重暫存器1214讀取。在一些實施例中,胞元之各權重暫存器1214經組態以接收指示權重暫存器何時將讀取權重分佈暫存器內之當前權重值之一控制信號。在其他實施例中,權重分佈暫存器基於處理胞元之位址及一所接收控制信號而判定哪一胞元將接收權重值。由於權重分佈暫存器1212能夠將所接收權重分佈至列中之任何胞元,所以權重可快速地被加載至特定胞元中而無需傳播通過運算陣列。在一些實施例中,權重分佈暫存器在各循環接收一不同權重值,同時將一寫入啟用控制信號提供至列之連續胞元,從而導致列之一個胞元在每時脈循環加載一各自權重值(例如,列之一第一胞元在一第一時脈循環期間加載一第一權重值,列之一第二胞元在一第二時脈循環期間加載一第二權重值等等)。
各胞元可處理所接收權重及激發值(例如,相乘)以產生一經處理值,該經處理值與自一下方列(若存在)接收之一部分和1216彙總。若胞元不位於陣列之一頂列,則經彙總部分和值被傳播至一上方列之一隨後胞元。另一方面,若胞元位於陣列之頂列,則經處理值與部分和1216之彙總形成待輸出之一結果值。另外,各胞元經組態以在一路由電路1218 (其可對應於圖11中繪示之路由電路)處接收來自一上方胞元及/或一右方胞元之結果資料(例如,一結果值),且基於胞元是否在陣列之一頂列中或在列之一對角線上而向下或向右傳播結果。
在一些實施例中,由於各列之胞元取決於由一先前列(例如,下方列)產生之一結果值來判定其等自身之結果值,所以可以一交錯方式加載陣列之列之激發值(例如,各列係其上方之列「前面」之一個激發值)。
在一些實施例中,運算陣列1200之胞元經組態以在全部權重值已被加載於運算陣列1200中之前開始加載激發值且計算結果。例如,如圖12中展示,激發值在複數個循環內跨各列1202傳播(例如,經由捕獲暫存器1206)。一旦接收列之各胞元之權重值,該胞元便可加載一激發值且開始計算一結果。例如,由於運算陣列能夠在各時脈循環針對列之下一胞元加載一不同權重值,所以一旦列之第一胞元已加載一權重值,運算陣列便可開始跨列之胞元傳播一第一激發值(例如,在一相同時脈循環期間、在之後的一個時脈循環或其他預定時間偏移)。經加載權重值可進一步用於處理列之各胞元之隨後接收激發值。由於一旦列之一第一胞元已加載一權重值,運算陣列便可開始在一特定列上加載激發值且處理結果,所以運算陣列能夠更高效地使用不同批次之權重來執行計算,此係歸因於在開始處理激發之前無需等待直至加載一新批次之全部權重。延遲之此減小容許運算陣列處置其中在使用新權重更新之前僅使用一組給定權重來處理少量激發之應用。
路由電路之使用容許運算陣列之最終輸出值(例如,在各行之一頂胞元處產生)自第一側輸出,同時保留輸出結果值之相對時序。例如,在一些實施例中,針對具有20個列之一運算陣列,將由一行之胞元針對一第一激發值計算之結果傳播至該行之一頂胞元以產生該行之一最終結果值將需要20個循環,且自運算陣列之第一側輸出結果將需要20個額外循環(例如,將陣列之第i個行之最終結果值向下傳播以到達該行之對角胞元將需要20-i個循環,且將值自對角胞元傳播至陣列之第一側將需要i個循環)。另外,陣列之最後一行在第一行之後的m個循環針對一給定行之激發值判定其結果(其中m係陣列中之總行數),從而導致自陣列針對一給定行之激發值輸出第一行及最後一行之結果值之間存在額外m個循環。
在其中指令/控制信號在複數個循環內經由行之胞元跨運算陣列之各行傳播(例如,每胞元1個胞元)之一些實施例中,權重值及激發值以一交錯方式傳播(例如,如圖8C中繪示)以匹配所傳播控制信號之一時序。雖然先前圖繪示使用特定技術將權重值及激發值之各者加載至運算陣列上,但在一些實施例中,可加載權重及激發值之方式可顛倒(例如,沿具有用於各胞元之捕獲暫存器之一傳輸線加載權重值,且沿具有一分佈暫存器之一傳輸線讀取加載激發值,該分佈暫存器經組態以將值分佈至多個胞元,或其中各胞元能夠直接自傳輸線讀取激發值)或其等之某一組合。
權重緩衝器
運算陣列之高效使用需要以匹配可由運算陣列接收權重值之速率之一速率將權重加載至運算陣列上。例如,使用圖6中繪示之控制信號傳播方案來將權重加載至nxn運算陣列或一運算陣列之子集中,可在n個時脈循環內將權重加載至全部nxn個胞元中。藉由匹配權重加載與運算陣列能夠接收權重之速率,可在不中斷的情況下(例如,在n個循環內)將權重加載至運算陣列上。
然而,在一些實施例中,以全頻寬將權重驅動至運算陣列中消耗大量珍貴資料匯流排頻寬。為容許快速地加載權重且亦不中斷用於執行運算之激發值之加載,可使用一權重緩衝器。在一些實施例中,依其將權重值加載至權重緩衝器上之頻寬小於權重值依其能夠離開權重緩衝器以加載至運算陣列上之頻寬。例如,加載至權重緩衝器之權重值可經導向至複數個緩衝器之一者,各對應於運算陣列之一或多個列。隨後可將權重值自複數個緩衝器並行加載至運算陣列之不同列上,從而容許一次加載大量權重值。
例如,隨著運算陣列處理加載權重及激發值,待加載至陣列上之未來權重值可經排置(staged)於權重緩衝器中以準備在一短時間框內加載至運算陣列上。此「突發」高頻寬權重加載容許處理模型時之良好效能,此係因為其容許在不中斷的情況下加載模型之權重值。
因而,在一些實施例中,權重緩衝器提供一類似電容器能力以儲存權重值直至其等準備好被加載至運算陣列上。權重值可隨時間儲存於權重緩衝器中,且接著快速排出以加載至運算陣列上。在一些實施例中,權重緩衝器亦可藉由提供額外本端導線頻寬而提供一接針擴展器功能(例如,以容許在一單一時脈循環內跨複數個胞元傳輸多個權重值)。
在一些實施例中,儲存於權重緩衝器中之權重傳遞通過一預處理器,該預處理器容許切換權重以將其等適當地配置於運算陣列內,重用權重以產生有用迴旋構造及/或數字預處理。
因此,權重緩衝器之使用可藉由容許非同步地及/或在許多循環內將權重加載至權重緩衝器中,同時用作一類似電容器硬體結構,從而能夠將所儲存權重值快速加載至運算陣列上而促進運算陣列之運算資源之高效使用。此潛在地簡化排程,此係因為其容許控制器在一延長時間週期內加載權重值的時間靈活性。
雖然一權重緩衝器之使用可容許更高效權重加載,但在一些實施例中,可期望繞開權重緩衝器或完全免除權重緩衝器(例如,以節省電力及/或簡化電路設計)。例如,在一些實施例中,在超過n個循環內將權重加載至nxn胞元陣列中。
額外考量
實施例之前述描述已為圖解目的而呈現;其並不意欲為詳盡性的或將專利權限制於所揭示之精確形式。熟習相關技術者可瞭解,鑑於上文揭示內容,許多修改及變動係可能的。
此描述之一些部分在對資訊的操作之演算法及符號表示方面描述實施例。通常由熟習資料處理技術者使用此等演算法描述及表示來將其等工作之實質有效地傳達給其他熟習此項技術者。此等操作雖然在功能上、運算上或邏輯上描述,但應被理解為由電腦程式或等效電路、微程式碼或類似物實施。此外,亦已證明,在不失一般性的情況下,將此等操作配置稱為模組有時是方便的。所描述操作及其等相關聯模組可體現為軟體、韌體、硬體或其等之任何組合。
可單獨或結合其他裝置一起使用一或多個硬體或軟體模組執行或實施本文中描述之步驟、操作或程序之任一者。在一項實施例中,使用包括含有電腦程式碼之一電腦可讀媒體之一電腦程式產品來實施一軟體模組,該電腦程式碼可由一電腦處理器執行以執行所描述之任何或全部步驟、操作或程序。
最後,已主要出於可讀性及指導目的選擇本說明書中使用之語言,且其可能尚未被選擇來劃定或限制專利權。因此,專利權之範疇意欲不受此詳細描述限制,而是受限於在基於此之一申請案上發佈之任何發明申請專利範圍。因此,實施例之揭示內容意欲為闡釋性而非限制在以下發明申請專利範圍中闡述之專利權之範疇。
100:巨型架構
105:記憶體
110:運算陣列
115:權重緩衝器
402:權重傳輸線
404:胞元
406:捕獲暫存器
408:權重暫存器
502:權重傳輸線
504:胞元
506:捕獲暫存器
508:指令控制單元(ICU)
510:控制信號線
600:運算陣列
602:胞元
700:運算陣列
710:運算陣列
1002:對角胞元
1004:路由非對角胞元
1006:非路由胞元
1200:運算陣列
1202:胞元列
1204:激發傳輸線
1206:捕獲暫存器
1208:激發暫存器
1210:權重傳輸線
1212:權重分佈暫存器
1214:權重暫存器
1216:部分和
1218:路由電路
c1:第一控制信號部分/水平部分
c2:第二控制信號部分/垂直部分
圖1繪示包括一乘法累加胞元(MACC胞元)陣列之一運算陣列,其中自三個不同側加載運算元。
圖2A繪示一二維(2D)運算陣列,其中自不同側加載/輸出運算元(例如,權重及激發)及結果。
圖2B繪示根據一些實施例之一2D運算陣列,其中自一單一側加載/輸出運算元及結果。
圖3A繪示根據一些實施例之含有一運算陣列之頂層晶片巨型架構。
圖3B繪示根據一些實施例之含有一記憶體及一運算陣列之一處理器之一高階圖。
圖4A及圖4B繪示根據一些實施例之將權重加載至一運算陣列之胞元中。
圖5A繪示根據一些實施例之將權重加載至一運算陣列上。
圖5B繪示根據一些實施例之當針對一運算陣列之一胞元加載權重時可如何使用一控制信號。
圖5C繪示根據一些實施例之可如何藉由一運算陣列之胞元接收控制信號之一圖。
圖6繪示根據一些實施例之一控制信號之垂直部分及水平部分傳播通過一運算陣列。
圖7A繪示根據一些實施例之一運算陣列,其中僅在陣列之一特定部分中加載權重。
圖7B繪示根據一些實施例之一運算陣列,其中僅在陣列之一特定部分中加載權重。
圖8A至圖8C繪示根據一些實施例之權重傳輸之順序及時序。
圖9A繪示根據一些實施例之一運算陣列之一高階圖,其中自不同側加載權重及激發。
圖9B繪示根據一些實施例之一運算陣列之一高階圖,其中對準權重加載與激發加載。
圖10A繪示根據一些實施例之一運算陣列之一圖,其中計算結果值。
圖10B繪示根據一些實施例之用於在陣列之各行之頂胞元處輸出經彙總結果值之結果路徑。
圖11繪示根據一些實施例之路由結果值之陣列內之一個別胞元之一高階電路圖。
圖12繪示根據一些實施例之用於將權重及激發加載至一運算陣列中之一例示性架構。
該等圖僅為圖解目的而描繪各種實施例。熟習此項技術者將自以下論述容易地認知,可在不脫離本文中描述之原理的情況下採用本文中繪示之結構及方法之替代實施例。
1002:對角胞元
1004:路由非對角胞元
1006:非路由胞元
Claims (20)
- 一種系統,其包括: 一運算陣列,其包括配置成n 個列及m 個行之複數個胞元,各胞元經組態以基於一權重值及一激發值而產生一經處理值; 至少兩個共線傳輸通道,其等對應於至少一權重傳輸通道及一激發傳輸通道; 其中該權重傳輸通道及該激發傳輸通道各跨該運算陣列之一第一側邊緣延伸以將權重值及激發值提供至該運算陣列之該等胞元。
- 如請求項1之系統,其中: 該運算陣列經組態以基於由各胞元產生之該等經處理值而產生複數個結果值,且 一結果輸出通道與該至少兩個共線傳輸通道共線,該結果輸出通道跨該運算陣列之該第一側邊緣延伸,輸出由該運算陣列產生之該複數個結果值。
- 如請求項2之系統,其中該運算陣列經組態以: 在該運算陣列之該m 個行之各者之一端部胞元處產生對應於由該運算陣列之該各自行之該等胞元產生之經處理值之一彙總之該複數個結果值之一結果值; 經由該結果輸出通道自該運算陣列之該第一側輸出該所產生之m個結果值。
- 如請求項3之系統,其中該運算陣列經組態以藉由以下步驟而自該運算陣列之該第一側輸出該所產生之m 個結果: 使該m 個結果之各者沿該各自行傳播達數個胞元直至到達該各自行內之沿該運算陣列之一對角線之一胞元,及 使該m 個結果之各者自沿該運算陣列之該對角線之該各自胞元跨該運算陣列之m 個列傳播,使得自該運算陣列之該第一側自該運算陣列輸出該m 個結果之各者。
- 如請求項4之系統,其中自該運算陣列之該n 個列之一不同列輸出該m 個結果之各者。
- 如請求項2之系統,其中該運算陣列之各胞元儲存其是否係該運算陣列之一頂胞元或一對角胞元之一指示,且包括一路由電路,該路由電路經組態以基於該胞元是否係該運算陣列之一頂胞元或一對角胞元而路由一所接收結果值。
- 如請求項1之系統,其進一步包括儲存複數個權重值及複數個激發值之一記憶體,其中該運算陣列經由該至少兩個傳輸通道耦合至該記憶體,且其中該權重傳輸通道及該激發傳輸通道將來自儲存於該記憶體中之該複數個權重值及該複數個激發值之權重值及激發值提供至該運算陣列之該等胞元。
- 如請求項1之系統,其進一步包括一控制器電路,該控制器電路經組態以將沿該運算陣列之該等行傳播之複數個控制信號傳輸至該運算陣列之該等胞元。
- 如請求項1之系統,其中該權重傳輸通道針對該運算陣列之一列包括耦合至該運算陣列之該列之一組胞元之一傳輸線及一捕獲暫存器,其中該組胞元之至少一個胞元能夠回應於該胞元接收一寫入啟用控制信號而讀取儲存於該捕獲暫存器處之一權重值。
- 如請求項9之系統,其中在複數個時脈循環之各者期間,將一不同權重值儲存至該捕獲暫存器以由該組胞元之一不同胞元讀取及儲存。
- 如請求項1之系統,其中該運算陣列之一列中之各胞元接收相同激發值,且其中該運算陣列之該列之一特定行中之一胞元經組態以在一第一時脈循環期間經由該激發傳輸通道接收該激發值,且在一第二時脈循環期間將該所接收激發值傳播至該運算陣列之一隨後行中之該列之一胞元。
- 如請求項11之系統,其中該列之該等胞元經組態以在複數個時脈循環之各者內經由該權重傳輸通道接收各自權重值,且其中在該列之各胞元接收其各自權重值之後的一預定時間週期將該激發值傳播至各胞元。
- 如請求項1之系統,其中n 等於m 。
- 如請求項1之系統,其中該運算陣列之各胞元包括一子胞元陣列。
- 如請求項1之系統,其中該所儲存權重值包括複數個權重向量。
- 一種方法,其包括: 透過對應於至少一權重傳輸通道及一激發傳輸通道之至少兩個共線傳輸通道傳輸複數個權重值及複數個激發值; 在包括配置成n 個列及m 個行之複數個胞元之一運算陣列處接收來自該權重傳輸通道及該激發傳輸通道之該複數個權重值及該複數個激發值,其中該權重傳輸通道及該激發傳輸通道各跨該運算陣列之一第一側邊緣延伸以將該複數個權重值之一權重值及該複數個激發值之一激發值提供至該運算陣列之各胞元;及 基於一所接收權重值及一所接收激發值而在該運算陣列之各胞元處產生一經處理值。
- 如請求項16之方法,其進一步包括: 基於由各胞元產生之該等經處理值而在該運算陣列處產生複數個結果值,及 經由跨該運算陣列之該第一側邊緣延伸之一結果輸出通道輸出由該運算陣列產生之該複數個結果值。
- 如請求項17之方法,其中基於由各胞元產生之該等經處理值而在該運算陣列處產生複數個結果值包括: 在該運算陣列之該m 個行之各者之一端部胞元處產生對應於由該運算陣列之該各自行之該等胞元產生之經處理值之一彙總之該複數個結果值之一結果值; 經由該結果輸出通道自該運算陣列之該第一側輸出該所產生之m 個結果值。
- 如請求項18之方法,其中經由該結果輸出通道自該運算陣列之該第一側輸出該所產生之m 個結果值包括: 使該m 個結果之各者沿該各自行傳播達數個胞元直至到達該各自行內之沿該運算陣列之一對角線之一胞元,及 使該m 個結果之各者自沿該運算陣列之該對角線之該各自胞元跨該運算陣列之m 個列傳播,使得自該運算陣列之該第一側自該運算陣列輸出該m 個結果之各者。
- 如請求項18之方法,其中自該運算陣列之該n 個列之一不同列輸出該m 個結果之各者。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962940818P | 2019-11-26 | 2019-11-26 | |
US62/940,818 | 2019-11-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202129518A true TW202129518A (zh) | 2021-08-01 |
Family
ID=75973952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109141621A TW202129518A (zh) | 2019-11-26 | 2020-11-26 | 僅使用一單一側自多維陣列加載運算元及輸出結果 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11392535B2 (zh) |
EP (1) | EP4066170A4 (zh) |
CN (1) | CN114930351A (zh) |
TW (1) | TW202129518A (zh) |
WO (1) | WO2021108559A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812117B (zh) * | 2021-08-27 | 2023-08-11 | 台灣積體電路製造股份有限公司 | 用於記憶體內計算(cim)的記憶體元件及方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11615320B1 (en) | 2020-06-30 | 2023-03-28 | Cadence Design Systems, Inc. | Method, product, and apparatus for variable precision weight management for neural networks |
US11676068B1 (en) | 2020-06-30 | 2023-06-13 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis |
US11823018B1 (en) | 2020-06-30 | 2023-11-21 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth |
US11651283B1 (en) | 2020-06-30 | 2023-05-16 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights |
US11687831B1 (en) | 2020-06-30 | 2023-06-27 | Cadence Design Systems, Inc. | Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference |
KR20220090104A (ko) * | 2020-12-22 | 2022-06-29 | 삼성전자주식회사 | 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치 |
CN113344183B (zh) * | 2021-06-03 | 2022-09-30 | 沐曦集成电路(上海)有限公司 | 一种在计算系统中实现卷积运算的方法及计算系统 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5058001A (en) | 1987-03-05 | 1991-10-15 | International Business Machines Corporation | Two-dimensional array of processing elements for emulating a multi-dimensional network |
US5195056A (en) * | 1987-05-21 | 1993-03-16 | Texas Instruments, Incorporated | Read/write memory having an on-chip input data register, having pointer circuits between a serial data register and input/output buffer circuits |
US5333279A (en) | 1992-06-01 | 1994-07-26 | Intel Corporation | Self-timed mesh routing chip with data broadcasting |
US6298162B1 (en) | 1992-12-23 | 2001-10-02 | Lockheed Martin Corporation | Image compression/expansion using parallel decomposition/recomposition |
US5842034A (en) | 1996-12-20 | 1998-11-24 | Raytheon Company | Two dimensional crossbar mesh for multi-processor interconnect |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7343472B2 (en) * | 2002-10-22 | 2008-03-11 | Broadcom Corporation | Processor having a finite field arithmetic unit utilizing an array of multipliers and adders |
US7236995B2 (en) | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
US20050273559A1 (en) | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
KR101738641B1 (ko) | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
US9563851B2 (en) | 2011-06-07 | 2017-02-07 | Analog Devices, Inc. | Programmable probability processing |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9557993B2 (en) | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
US9146747B2 (en) | 2013-08-08 | 2015-09-29 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing configurable computational imaging pipeline |
US10438117B1 (en) * | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US9703531B2 (en) | 2015-11-12 | 2017-07-11 | Arm Limited | Multiplication of first and second operands using redundant representation |
US20170177352A1 (en) | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US10068041B2 (en) | 2016-02-01 | 2018-09-04 | King Fahd University Of Petroleum And Minerals | Multi-core compact executable trace processor |
US10528864B2 (en) * | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US9646243B1 (en) * | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
US10949736B2 (en) * | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
US10521488B1 (en) * | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US10140252B2 (en) | 2017-02-28 | 2018-11-27 | Microsoft Technology Licensing, Llc | Hardware node with matrix-vector multiply tiles for neural network processing |
US9691019B1 (en) | 2017-03-07 | 2017-06-27 | Google Inc. | Depth concatenation using a matrix computation unit |
WO2018174936A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
US10838910B2 (en) * | 2017-04-27 | 2020-11-17 | Falcon Computing | Systems and methods for systolic array design from a high-level program |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US10915319B2 (en) | 2017-05-15 | 2021-02-09 | Google Llc | Two dimensional masked shift instruction |
US10167800B1 (en) | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
EP3682330B1 (en) * | 2017-09-21 | 2022-08-24 | Huawei Technologies Co., Ltd. | Multi-thread systolic array |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
US10459876B2 (en) * | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US11188814B2 (en) * | 2018-04-05 | 2021-11-30 | Arm Limited | Systolic convolutional neural network |
US11966835B2 (en) * | 2018-06-05 | 2024-04-23 | Nvidia Corp. | Deep neural network accelerator with fine-grained parallelism discovery |
KR20200107295A (ko) * | 2019-03-07 | 2020-09-16 | 에스케이하이닉스 주식회사 | 시스톨릭 어레이 및 프로세싱 시스템 |
-
2020
- 2020-11-25 CN CN202080092377.8A patent/CN114930351A/zh active Pending
- 2020-11-25 EP EP20893869.6A patent/EP4066170A4/en active Pending
- 2020-11-25 WO PCT/US2020/062241 patent/WO2021108559A1/en unknown
- 2020-11-25 US US17/104,465 patent/US11392535B2/en active Active
- 2020-11-26 TW TW109141621A patent/TW202129518A/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812117B (zh) * | 2021-08-27 | 2023-08-11 | 台灣積體電路製造股份有限公司 | 用於記憶體內計算(cim)的記憶體元件及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4066170A1 (en) | 2022-10-05 |
US20210157767A1 (en) | 2021-05-27 |
EP4066170A4 (en) | 2024-01-17 |
US11392535B2 (en) | 2022-07-19 |
CN114930351A (zh) | 2022-08-19 |
WO2021108559A1 (en) | 2021-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202129518A (zh) | 僅使用一單一側自多維陣列加載運算元及輸出結果 | |
US8112612B2 (en) | Processing system with interspersed processors using selective data transfer through communication elements | |
TWI771675B (zh) | 控制流程屏障和可重組態的資料處理器 | |
JPH04267466A (ja) | 連想並列処理システム | |
KR20220015813A (ko) | 딥러닝 연산 수행 방법 및 장치 | |
KR20170016998A (ko) | 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 | |
CN114450661A (zh) | 用于可重配置架构的编译器流程逻辑 | |
JP2008537268A (ja) | 可変精度相互接続を具えたデータ処理エレメントの配列 | |
EP3384498B1 (en) | Shift register with reduced wiring complexity | |
EP0557997A2 (en) | Information processing apparatus and information processing system | |
US20070136560A1 (en) | Method and apparatus for a shift register based interconnection for a massively parallel processor array | |
US7263543B2 (en) | Method for manipulating data in a group of processing elements to transpose the data using a memory stack | |
US7430742B2 (en) | Method for load balancing a line of parallel processing elements | |
JPH0727515B2 (ja) | 2次元メッシュ・アレイの処理要素 | |
Nestor | FPGA implementation of a multilayer maze router | |
Stojcev et al. | Data reordering converter: an interface block in a linear chain of processing arrays | |
JPH0126108B2 (zh) |