TWI737145B - 具有常駐在晶片上之參數的神經網路加速器 - Google Patents
具有常駐在晶片上之參數的神經網路加速器 Download PDFInfo
- Publication number
- TWI737145B TWI737145B TW109102859A TW109102859A TWI737145B TW I737145 B TWI737145 B TW I737145B TW 109102859 A TW109102859 A TW 109102859A TW 109102859 A TW109102859 A TW 109102859A TW I737145 B TWI737145 B TW I737145B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- block
- parameters
- accelerator
- bus
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title abstract description 108
- 230000015654 memory Effects 0.000 claims abstract description 263
- 230000004913 activation Effects 0.000 claims abstract description 82
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 10
- 238000010801 machine learning Methods 0.000 claims description 5
- 238000001994 activation Methods 0.000 abstract description 81
- 210000004027 cell Anatomy 0.000 description 58
- 238000000034 method Methods 0.000 description 30
- 238000012545 processing Methods 0.000 description 29
- 239000000872 buffer Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000009825 accumulation Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 239000000306 component Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 210000004205 output neuron Anatomy 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- XGRYDJSRYGHYOO-UHFFFAOYSA-N Thesine Natural products C1=CC(O)=CC=C1C1C(C(=O)OCC2C3CCCN3CC2)C(C=2C=CC(O)=CC=2)C1C(=O)OCC1C2CCCN2CC1 XGRYDJSRYGHYOO-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Abstract
一種加速器之一項實施例包含:一運算單元;一第一記憶體組,用於儲存輸入啟動;及一第二記憶體組,用於儲存用於執行運算之參數,該第二記憶體組經組態以在該運算單元上儲存足夠量之該等神經網路參數,以容許低於一指定位準之延時與高於一指定位準之處理量。該運算單元包含至少一個胞,該至少一個胞包括自該第二記憶體組接收參數且執行運算之至少一個乘法累積(「MAC」)運算子。該運算單元進一步包含一第一遍歷單元,該第一遍歷單元將一控制信號提供至該第一記憶體組,以引起一輸入啟動被提供至可由該MAC運算子存取之一資料匯流排。該運算單元執行與一資料陣列之至少一個元素相關聯之運算,該一或多個運算係由該MAC運算子執行。
Description
本說明書大體上係關於一種用於深度神經網路(「DNN」)層之運算的神經網路(「NN」)運算塊。
一般言之,本說明書中描述之標的物之一個新穎態樣可體現於將一神經網路之參數儲存於一加速器上。神經網路不同於典型運算工作負載在於其等工作集(即,整個運算所需之總儲存量)實際上有限。此工作集大體上對應於參數之數目,通常自數十萬至數十億。此儲存數量與現有硬體儲存技術相容。
儘管存在此等事實,但當前加速器含有用於參數之一本端儲存器,參數透過該本端儲存器轉送,即,參數不永久常駐在晶片上。實情係,參數針對各新推斷串流傳輸自外部記憶體。
因此,外部記憶體頻寬係全部神經網絡(「NN」)加速器之一主要限制。本說明書中描述之實施例使用用於參數之一永久儲存器替換用於參數之暫時性本端儲存器,即,實施例保持NN之全部參數常駐在加速器中,且不再自外部記憶體串流傳輸其等。
將參數儲存於晶片上之益處包含:克服NN加速器之效能限制;動態地促進乘法累積(「MAC」)運算子之數目之一增加,此係因為已克服效能限制;及提供較低功率神經網絡加速器,此係因為外部記憶體存取通常需要比本端記憶體存取多至少一數量級之能量。
在某些實施例中,該加速器包含一運算單元。該運算單元包含:一第一記憶體組,其用於儲存輸入啟動或輸出啟動;一第二記憶體組,其用於儲存用於執行運算之神經網路參數,該第二記憶體組經組態以在該運算單元上儲存足夠量之該等神經網路參數以容許針對一給定NN模型及架構之低於一指定位準之延時與高於一指定位準之處理量;至少一個胞,其包含自該第二記憶體組接收參數且執行運算之至少一個MAC運算子;一第一遍歷單元,其與至少該第一記憶體組資料通信,該第一遍歷單元經組態以將一控制信號提供至該第一記憶體組以引起一輸入啟動被提供至可由該MAC運算子存取之一資料匯流排;及其中該加速器執行與一資料陣列之至少一個元素相關聯之一或多個運算,該一或多個運算由該MAC運算子執行且部分包括自該資料匯流排接收之該輸入啟動與自該第二記憶體組接收之一參數之一乘法運算。若用於參數之儲存器足以保持全部神經網絡參數,則加速器之效能將不由記憶體頻寬判定。在該情況中,每一週期為全部MAC饋送參數係可行的。
本說明書中描述之標的物之另一新穎態樣可體現於用於加速張量運算之一電腦實施方法中。該電腦實施方法包含:藉由一第一記憶體組回應於該第一記憶體組接收一控制信號而發送一第一輸入啟動,其中該第一輸入啟動由一資料匯流排傳輸;藉由至少一個MAC運算子自用於儲存用於執行運算之神經網路參數之一第二記憶體組接收一或多個參數,該第二記憶體組在該運算單元上儲存足夠量之該等神經網路參數以容許針對一給定NN模型及架構之低於一指定臨限值之延時及高於一指定臨限值之處理量;及藉由該MAC運算子執行與一資料陣列之至少一個元素相關聯之一或多個運算,其中該一或多個運算部分包括自該資料匯流排存取之至少該第一輸入啟動與自該第二記憶體組接收之至少一個參數之一乘法運算。
本說明書中描述之標的物之另一新穎態樣可體現於用於加速運算之一方法中。該方法包含:在執行之前,將神經網絡權重參數載入一神經網絡加速器中;及在執行期間,處理至該加速器之輸入而實質上不存取該加速器外部之神經網絡權重參數。該方法可進一步包含:若神經網絡權重參數之數目太大而無法適配於一單一加速器晶粒上,則將神經網絡權重參數載入多個緊密連接之加速器晶粒中;及處理至該等加速器晶粒之輸入而實質上不存取該等緊密連接之加速器晶粒外部之神經網絡權重參數。
本說明書中描述之標的物可在特定實施例中實施以便實現一或多個以下優點。使用暫存器以記錄記憶體位址值容許一程式使用一個指令反覆深度嵌套迴圈。在一單一運算塊中,基於自暫存器擷取之記憶體位址值而遍歷可自窄記憶體及寬記憶體單元存取之一張量。記憶體位址值對應於張量之元素。張量運算基於深度迴圈嵌套之執行而在個別運算塊中發生。運算可分佈遍及多個塊。基於將針對一多層神經網絡之張量運算分佈遍及若干運算塊而增強且加速運算效率。可遍歷張量且可使用降低數目個指令執行張量運算。
本說明書中描述之實施例對神經網路(「NN」)加速器操作及設計具有一影響。實施例致力於神經網路加速器設計之顯著限制之一者,即低延時及高處理量之組合。給定一高處理量及一給定NN模型及架構,使參數常駐在晶片上大大降低延時。加速器不需要高記憶體頻寬且能量下降。
具有如本說明書中描述之一塊配置提供編譯類型區域性。例如,使完全連接模型緊鄰SRAM導致對比一快取區模型之更大內部頻寬。本說明書中描述之實施例快於習知神經網路加速器進行操作。某些實施例具有更多運算子;為了饋送運算子,加速器需要更多內部頻寬。為了解決此需要,架構分佈記憶體且將參數帶至加速器上。
本說明書中描述之標的物亦可在特定實施例中實施以便實現其他優點。例如,藉由採用將一窄低頻寬記憶體與一高頻寬寬記憶體耦合之一記憶體階層,可針對具有非常不同之維度及區域性之DNN層達成MAC運算子之高度利用。窄低頻寬記憶體可容許以任何順序遍歷一多維陣列之定址靈活性。
此態樣及其他態樣之其他實施方案包含經組態以執行編碼於電腦儲存裝置上之方法之動作之對應系統、設備及電腦程式。一或多個電腦之一系統可憑藉安裝於該系統上之在操作中引起該系統執行該等動作之軟體、韌體、硬體或其等之一組合如此組態。一或多個電腦程式可憑藉具有在藉由資料處理設備執行時,引起該設備執行該等動作之指令而如此組態。
在隨附圖式及下文描述中闡述本說明書中所描述之標的物之一或多項實施方案之細節。自描述、圖式及發明申請專利範圍將明白標的物之其他可能特徵、態樣及優點。
相關申請案之交叉參考
本申請案主張2017年8月11日申請之關於Neural Network Accelerator with Parameters Resident on Chip之美國專利申請案第62/544,171號之申請日的權利,且該案係以引用的方式併入本文中。
本說明書中描述之標的物係關於用於加速運算之一方法。該方法包含:在執行之前,將神經網絡權重參數載入一神經網絡加速器中;及在執行期間,處理至加速器之輸入而實質上不存取加速器外部之神經網絡權重參數。該方法可進一步包含:若神經網絡權重參數之數目太大而無法適配於一單一加速器晶粒上,則將神經網絡權重參數載入多個緊密連接之加速器晶粒中;及處理至加速器晶粒之輸入而實質上不存取緊密連接之加速器晶粒外部之神經網絡權重參數。
一種加速器之一項實施例包含:一運算單元;一第一記憶體組,其用於儲存輸入啟動;及一第二記憶體組,其用於儲存用於執行運算之參數,該第二記憶體組經組態以在該運算單元上儲存足夠量之該等神經網路參數以容許低於一指定位準之延時與高於一指定位準之處理量。該運算單元包含至少一個胞,該至少一個胞包括自該第二記憶體組接收參數且執行運算之至少一個乘法累積(「MAC」)運算子。該運算單元進一步包含一第一遍歷單元,該第一遍歷單元將一控制信號提供至該第一記憶體組以引起一輸入啟動被提供至可由該MAC運算子存取之一資料匯流排。該運算單元執行與一資料陣列之至少一個元素相關聯之運算,該一或多個運算由該MAC運算子執行。
本說明書中描述之標的物亦係關於一種硬體運算系統,其包含經組態以加速一神經網絡層之機器學習推斷工作負載之多個運算單元。硬體運算系統之各運算單元係自含式的且可獨立地執行一多層神經網絡之一給定層所需之運算。本說明書大體上係關於一種用於深度神經網絡(「DNN」)層之運算之神經網絡(「NN」)運算塊,其具有常駐在晶片上之參數以容許針對一給定NN模型及架構之低於一指定位準之延時與高於一指定位準之處理量。
具有多個層之一神經網絡可用於運算推斷。例如,給定一輸入,神經網絡可針對輸入運算一推斷。神經網絡藉由透過神經網絡之各層處理輸入而運算此推斷。特定言之,神經網絡之層各具有一各自權重集。各層接收一輸入且根據該層之權重集處理該輸入以產生一輸出。
因此,為了自一經接收輸入運算一推斷,神經網絡接收輸入且透過各神經網絡層處理其以便產生推斷,其中來自一個神經網絡層之輸出作為輸入被提供至下一神經網絡層。可將與一神經網絡層相關聯之資料輸入或輸出(例如,至神經網絡之輸入或依序低於該層之層之輸出)稱為該層之啟動。
在一些實施方案中,依序配置神經網絡之層。在其他實施方案中,以一有向圖配置層。亦即,任何特定層可接收多個輸入、多個輸出或兩者。神經網絡之層亦可經配置使得一層之一輸出可作為一輸入被發送回至一先前層。
在本說明書中描述之硬體運算系統可藉由使張量運算分佈遍及多個運算塊而執行一神經網絡層之運算。在一神經網絡層內執行之一運算程序可包含包含輸入啟動之一輸入張量與包含權重之一參數張量之一乘法。運算包含在一或多個週期內使一輸入啟動與一權重相乘及在許多週期內執行一乘積之一累積。
一張量係一多維幾何物件且例示性多維幾何物件包含矩陣及資料陣列。一般言之,藉由一運算塊執行一程序以藉由處理一嵌套迴圈以遍歷一N維張量來執行張量運算。在一個例示性運算程序中,各迴圈可負責遍歷N維張量之一特定維度。針對一給定張量建構,一運算塊可需要存取一特定張量之一元素以執行與張量相關聯之複數個點積運算。當由一窄記憶體結構提供之一輸入啟動與由一寬記憶體結構提供之一參數或權重相乘時,發生運算。由於張量儲存於一記憶體中,故一張量索引集可需要轉譯成一記憶體位址集。一般言之,一運算塊之一張量遍歷單元執行提供與張量相關聯之各維度之索引及遍歷索引元素以執行運算之順序之控制操作。當將乘法結果寫入至一輸出匯流排且儲存於記憶體中時,張量運算結束。
圖1展示用於加速與深度神經網路(DNN)相關聯之張量運算之一例示性運算系統100之一方塊圖。系統100通常包含一控制器102、一主機介面108、一輸入/輸出(I/O)鏈路110、包含一第一塊集112及一第二塊集114之多個塊、一分類器部分116及在一匯流排圖118 (其係為了清楚起見而展示,但不包含於系統100中)中識別之資料匯流排。控制器102通常包含資料記憶體104、指令記憶體106及經組態以執行編碼於一電腦可讀儲存媒體中之一或多個指令之至少一個處理器。指令記憶體106可儲存可由控制器102之一或多個處理器執行之一或多個機器可讀指令。資料記憶體104可係用於儲存且隨後存取與發生於系統100內之運算相關之各種資料之各種資料儲存媒體之任何者。
控制器102經組態以執行與系統100內之張量運算相關之一或多個指令(包含儲存於指令記憶體106中之指令)。在一些實施方案中,資料記憶體104及指令記憶體106係揮發性記憶體單元或若干揮發性記憶體單元。在一些其他實施方案中,資料記憶體104及指令記憶體106係非揮發性記憶體單元或若干非揮發性記憶體單元。資料記憶體104及指令記憶體106亦可係另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或包含呈一儲存區域網路或其他組態之裝置之一裝置陣列。在各種實施方案中,控制器102亦可被引用或稱為核心管理器102。
如描繪,主機介面108耦合至I/O鏈路110、控制器102及分類器部分116。主機介面108自I/O鏈路110接收指令及資料參數且將指令及參數提供至控制器102。一般言之,可透過指令匯流排124 (下文描述)將指令提供至系統100中之一或多個裝置且可透過環形匯流排128 (下文描述)將參數提供至系統100中之一或多個裝置。在一些實施方案中,指令由控制器102在一初始時間自主機介面118接收且儲存於指令記憶體106中以供控制器102在一後續時間執行。
分類器部分116同樣地耦合至控制器102及第二塊集114之塊7。在一些實施方案中,將分類器部分116實施為系統100內之一單獨塊。在替代實施方案中,將分類器部分116安置或定位於控制器102內作為控制器102之一子電路或子裝置。分類器部分116通常經組態以對經接收作為完全連接層之輸出之經累積預啟動值執行一或多個函數。完全連接層可跨塊集112及114中之塊被分割。因此,各塊經組態以產生可儲存於塊之一(若干)記憶體單元中之預啟動值(即,線性輸出)之一子集。分類結果匯流排120提供自分類器部分116至控制器102之一資料路徑。經由分類結果匯流排120將包含後函數值(即,結果)之資料自分類器部分116提供至控制器102。
匯流排圖118展示提供第一塊集112與第二塊集114之塊之間之一或多個互連資料通信路徑之資料匯流排。匯流排圖118提供用於識別一分類結果匯流排120、CSR/主控匯流排122、指令匯流排124、網狀匯流排126及環形匯流排128之一圖例,如圖1中描繪。一般言之,一塊係系統100之加速器架構內之一核心組件且係用於發生於系統中之張量運算之焦點。各塊係與系統中之其他塊協作以加速跨一多層神經網路之一或多個層之運算之一個別運算單元。雖然塊集112、114中之塊可共用與一給定指令相關聯之張量運算之執行,但一個別運算單元係經組態以相對於塊集112、114內之其他對應塊獨立地執行張量運算之一子集之一自含式運算組件。
CSR匯流排122係使控制器102能夠傳輸設定程式組態且讀取與一或多個塊相關聯之狀態暫存器之一或多個指令之一單主控多受控匯流排。CSR匯流排122可以一單菊鍊組態與一個主控匯流排區段及多個受控匯流排區段連接。如圖1中展示,CSR匯流排122透過將塊集112、114中之塊及控制器102以一環連接至主機介面110之一匯流排資料路徑而提供通信耦合。在一些實施方案中,主機介面110係CSR匯流排環之單一主控裝置且整個CSR匯流排位址空間係映射至主機介面110中之一記憶體空間之記憶體。
CSR匯流排122可由主機介面110使用以執行一或多個操作,包含(例如):程式化控制器102中之記憶體緩衝器指標以使控制器102能夠開始自指令記憶體106提取指令;更新/程式化在一或多個運算期間保持靜態之各種塊設置(例如,用於多項式近似計算之係數表);及/或將韌體載入/重新載入分類部分116。在一個實例中,韌體重新載入可包含待應用至線性輸出(即,預啟動值)之新函數。相應地,能夠存取CSR匯流排122之每一受控裝置將具有連結至受控裝置且識別其之一相異節點識別符(節點ID)。節點ID將係一指令位址之部分且將由CSR受控裝置(即,控制器102、塊112、114及分類器116)使用、檢測或以其他方式檢查以判定CSR封包是否經定址至受控裝置。
在一些實施方案中,可藉由主機介面102透過控制器102傳輸一或多個指令。指令可(例如)係32位元寬,其中前7位元包含指示待接收且執行指令之指令位址/目的地之標頭資訊。標頭之前7位元可含有表示一特定節點ID之資料參數。CSR匯流排環上之受控裝置(例如,各塊)可因此檢測指令之標頭以判定是否將主控裝置(主機介面110)之請求定址至檢測標頭之塊。若標頭之節點ID不指示目的地係檢測塊,則檢測塊將複製輸入CSR指令封包至連接至下一塊之CSR匯流排輸入以供下一塊檢測。
指令匯流排124源自控制器102且類似於CSR匯流排122,亦透過以一環將塊集112、114中之塊連接回至控制器102之一匯流排資料路徑而提供通信耦合。在一個實施方案中,控制器102經由指令匯流排124廣播一或多個指令。由控制器102廣播之指令可不同於經由CSR匯流排122提供之指令。然而,一塊接收及/或消耗或執行經由匯流排124接收之指令之方式可類似於用於執行經由CSR匯流排122接收之指令之程序。
在一個實例中,指令之一標頭(即,一位元映像)對一接收塊指示接收塊需要基於與指令相關聯之一位元映像而消耗一特定指令。位元映像可具有依據位元定義之一特定寬度。通常基於指令之參數而將指令自一個塊轉送至下一塊上。在一個實施方案中,指令匯流排124之寬度可經組態為小於指令之大小/寬度。因此,在此一組態中,指令之傳輸將達若干週期且指令匯流排124之匯流排站(bus stop)將具有解碼器以將在塊處接收之指令放置於與該塊相關聯之適當目標指令緩衝器中。
如下文進一步描述,塊集112、114中之塊通常經組態以支援兩個大類之指令。亦可將兩個大類稱為指令類型。指令類型包含一張量運算(TensorOp)指令及一直接記憶體存取(DMAOp)指令。在一些實施方案中,DMAOp指令具有被容許為同時之一或多個特殊化。可將一或多個特殊化稱為DMAOp指令子類型或運算碼。在一些情況中,每一獨有及/或有效DMAOp指令類型/子類型元組將在一特定塊內具有一單獨指令緩衝器。
在塊112、114之一特定塊處,與指令匯流排124相關聯之匯流排站將檢查標頭位元映像以判定指令類型/子類型。指令可由塊接收,且隨後在藉由該塊執行該指令之前被寫入至該塊之一指令緩衝器。其中寫入指令之塊的指令緩衝器可係由指令之類型及子類型指標/欄位判定。指令緩衝器可包含確定一或多個相關指令之消耗之優先級之一先進先出(FIFO)控制方案。因此,在此FIFO控制方案下,相同類型/子類型之指令將始終按指令到達指令匯流排上的順序被執行。
一塊內之不同指令緩衝器係TensorOp指令緩衝器及DMAOp指令緩衝器。如上文指示,指令類型包含TensorOp指令及DMAOp指令。關於DMAOp指令,指令子類型(指示一「寫入」緩衝器位置)包含以下項:1)網狀傳入指令緩衝器;2)網狀傳出指令緩衝器;3)窄-寬DMA指令緩衝器;4)寬-窄DMA指令緩衝器;及5)環形匯流排DMA指令緩衝器。將在下文參考圖2更詳細描述此等緩衝器位置。寬及窄名稱在整個說明書中使用,且通常係指一或多個記憶體單元之寬度(位元/位元組)之一近似大小。如本文中使用,「窄」可指各具有小於16位元之一大小或寬度的一或多個記憶體單元,且「寬」可指各具有介於16位元與64位元之間之一大小或寬度的一或多個記憶體單元。
網狀匯流排126提供與CSR匯流排122、指令匯流排124及環形匯流排128 (下文描述)相異之一資料通信路徑。如圖1中描繪,網狀匯流排126提供在X維度及Y維度兩者上將各塊耦合或連接至其對應相鄰塊之一通信路徑。在各種實施方案中,網狀匯流排126可用於在鄰近塊中之一或多個窄記憶體單元之間傳送輸入啟動數量。如展示,網狀匯流排126不容許將輸入啟動資料直接轉送至非鄰近塊。
在各種實施方案中,網狀匯流排126及經由網狀匯流排126連接之各個塊可具有以下組態。網之四個邊角塊具有兩個傳出埠及兩個傳入埠。網之四個邊緣塊具有三個傳入埠及三個傳出埠。全部非邊緣、非邊角塊具有四個傳入埠及四個傳出埠。一般言之,給定一例示性N × N塊佈局,邊緣塊係僅具有三個相鄰塊之塊而邊角塊係具有兩個相鄰塊之塊。關於經由網狀匯流排126之資料流方法論,一般言之,針對一特定塊經由網狀匯流排126到達之每一輸入啟動必須被提交至塊之一或多個窄記憶體單元。再者,針對具有少於四個傳入埠之塊組態,DMAOp指令可將零值寫入至塊之窄記憶體中之位置而非等待一缺失輸入埠上之資料。同樣地,針對具有少於四個傳出埠之塊組態,DMAOp指令將不執行與任何缺失埠之傳送相關之窄記憶體讀取及埠寫入。
在一些實施方案中,將藉由一張量遍歷單元(下文「TTU」)基於經由網狀匯流排126提供之傳入/傳出DMAOp產生一特定輸入啟動將寫入至或自其讀取一特定輸入啟動之一(若干)窄記憶體單元之一位置或位址。一傳入DMAOp及一傳出DMAOp可同時執行且任何所需同步將透過由控制器102管控之同步旗標控制方案管理。下文參考圖2及圖3進一步詳細描述TTU。
環形匯流排128源自控制器102且類似於CSR匯流排122及指令匯流排124,亦透過以一環將塊112、114連接回至控制器102之一匯流排資料路徑而提供通信耦合。在各種實施方案中,環形匯流排128通常連接或耦合全部塊112、114中之全部寬記憶體單元(下文參考圖2更詳細描述)。因此,環形匯流排128之一有效負載寬度對應於安置於塊集112、114之各塊內之寬記憶體單元之寬度。如上文論述,環形匯流排128亦包含指示需要消耗包括經由環形匯流排128傳達之指令或參數之有效負載資料之塊之一位元映像標頭。
關於經由環形匯流排128在一特定塊處接收之資料(即,有效負載),回應於接收資訊,各塊將在將位元映像標頭中指示之接收塊所獨有之位置資料轉送至另一塊之前清零(即,清除)該資料。因此,當標頭位元映像不具有指示待接收有效負載之一特定塊之剩餘位元集資料時,將停止將有效負載轉送至另一塊。有效負載資料通常係指由一或多個塊在基於深度嵌套迴圈之執行而執行之張量運算期間使用之啟動及權重。
在一些實施方案中,可將控制器102描述為環形匯流排128之一部分。在一個實例中,針對在一特定塊內執行之DMAOp指令,控制器102可用於自環形匯流排站彈出資料/有效負載且將有效負載轉送至環中之一下一塊中之一環形匯流排站。控制器102亦可引起有效負載資料被提交至塊之一或多個寬記憶體單元,前提是位元映像標頭中之指令要求此動作。需要寫入資料之一或多個寬記憶體單元之位址可由特定塊內之DMAOp指令產生。
在各種實施方案中,塊集112、114之各塊可係有效負載資料之一生產者或有效負載資料之一消耗者。當一塊係有效負載資料之一生產者時,該塊自其寬記憶體單元之一或多者讀取資料且經由環形匯流排128多播資料以供一或多個其他塊消耗。當一塊係有效負載資料之一消耗者時,該塊接收資料且將該資料寫入至該塊內之一或多個寬記憶體單元且轉送該有效負載資料以供一或多個其他塊消耗。關於有效負載資料經由環形匯流排128之移動,在任何給定時間,在環形匯流排128上通常將僅存在資料之一個生產者/主控裝置。全部塊中之DMAOp指令執行順序(例如,FIFO控制方案)將確保在一給定時間,在環形匯流排128上僅存在資料之一個生產者/主控裝置。
在一些實施方案中,控制器102使用一同步旗標控制架構以確保在一給定時間,在環形匯流排128上僅存在有效負載資料之一個生產者/主控裝置。在一個實例中,藉由一塊至一環形輸出之每一寫入將觸發對應同步旗標計數之一遞增。控制器102可檢查有效負載資料以判定包括有效負載之資料塊或片段之數目。控制器102接著監測塊之執行以確保在另一塊在主控模式中執行之前藉由塊轉送及/或消耗預期數目個資料片段。
確保在一給定時間,在環形匯流排128上僅存在資料之一個生產者/主控裝置之一例外狀況在存在經由環形匯流排128連接之在環形匯流排上不具有一重疊區域之本端多播群組時發生。例如,塊0 (主控裝置)可多播(即,產生資料)至塊0至塊3分組中之一塊,而塊4 (主控裝置)亦可對塊4至塊7分組中之一塊完成相同動作。此雙主控多播方法論之一重要要求係不同多播群組必須不被容許看見彼此之資料封包,此係因為封包重疊可發生且導致一或多個資料運算錯誤。
如圖1中展示,控制器102提供將塊集112、114中之塊耦合或連接至I/O 110之一通信資料路徑且包含若干核心函數。控制器102之核心函數通常包含:將一或多個I/O輸入啟動饋送至塊集112、114中之塊;將自I/O 110接收之一或多個輸入啟動及參數饋送至塊;將自I/O 110接收之一或多個指令饋送至塊;將I/O輸出啟動發送至主機介面108;及充當CSR匯流排122以及環形匯流排128之一環形站。如下文更詳細描述,第一塊集112及第二塊集114各包含用於執行基於包括內部及外部迴圈之一深度迴圈嵌套而執行之一或多個張量運算之多個塊。
系統100通常如下操作。主機介面108將定義針對一給定運算發生之直接記憶體存取操作(DMAOp)之一或多個指令提供至控制器102。與經饋送至控制器102之指令相關聯之描述符將包含控制器促進與多維資料陣列(張量)相關聯之大規模點積運算所需之資訊。一般言之,控制器102自主機介面108接收用於針對一神經網路之一給定層執行張量運算之輸入啟動、塊指令及模型參數(即,權重)。控制器102可接著引起指令以由(若干)指令定義之一資料流方式多播至塊112、114。如上文論述,消耗一指令之塊可接著基於指令標頭中之位元映像資料而起始一新/後續指令至另一塊之一廣播。
關於資料流,經由環形匯流排128將輸入啟動及參數傳輸至塊集112、114之塊。塊112、114之各者將儲存運算經指派至該特定塊之輸出啟動之一子集所需之輸入啟動之一子集。針對一塊之DMAOp指令將引起輸入啟動自寬記憶體移動至窄記憶體。一塊內之運算在所需輸入啟動、參數/權重及運算指令(TTU操作、記憶體位址等)在該塊中可用時開始。當一塊內之MAC運算子(下文描述)完成由指令集定義之全部點積運算且預啟動函數應用至乘法運算之結果(即,輸出啟動)時,發生於一塊內之運算結束。
一或多個張量運算之結果包含將一運算層之輸出啟動寫入至執行運算之塊之一(若干)窄記憶體單元。針對某些張量運算,將存在輸出邊緣啟動經由網狀匯流排126至相鄰塊之一傳送。需要輸出邊緣啟動至相鄰塊之傳送以在運算跨多個層時針對一後續層運算輸出啟動。當針對全部層之運算完成時,一DMAOp將透過環形匯流排128將最後啟動移動至分類器塊116。控制器102將接著自分類器塊116讀取最後啟動且執行一DMAOp以將最後啟動移動至主機介面108。在一些實施方案中,分類器部分116執行NN之一輸出層(即,最後層)之運算。在其他實施方案中,NN之輸出層係分類器層、一迴歸層或通常與神經網絡相關聯之另一層類型之一者。
圖2繪示一例示性神經網路(NN)運算塊200。一般言之,例示性塊200可對應於上文參考圖1論述之第一塊集112及第二塊集114內之任何塊。在各種實施方案中,運算塊200亦可被引用或稱為運算單元200。各運算塊200係經組態以相對於塊集112、114內之其他對應塊獨立地執行指令之一自含式運算單元。如上文簡要論述,各運算塊200執行兩個類型之指令:一TensorOp指令及一DMAOp指令。一般言之,各指令類型將包含與深度迴圈嵌套相關聯之運算操作且因此各指令類型將通常在多個時刻內執行以確保完成全部迴圈反覆。
如下文更詳細論述,不同指令類型由透過在運算塊200內管理之同步旗標控制件在資料上同步之運算塊200內之獨立控制單元執行。同步旗標控制件管理運算塊200內之不同指令類型之執行之間之同時性。與各指令類型相關聯之各運算操作將以嚴格發出順序(即,先進先出)執行。關於兩個指令類型(TensorOP及DMAOp),在此等不同指令類型之間不存在排序保證且各類型由運算塊200作為一單獨控制執行緒處理。
關於資料流建構,運算塊200通常包含各提供用於進出運算塊200之資料流之一通信路徑之資料路徑202及資料路徑205。如上文描述,系統100包含以一環形組態佈置之三個相異資料匯流排結構-CSR匯流排122、指令匯流排124及環形匯流排128。參考圖2,資料路徑205對應於指令匯流排124,而資料路徑202通常對應於CSR匯流排122及環形匯流排128之一者。如展示,資料路徑202包含提供用於離開運算塊200之資料之一輸出路徑之一環形輸出203及提供用於進入運算塊200之資料之一輸入路徑之一環形輸入204。
運算塊200進一步包含包含一TensorOp張量遍歷單元(TTU) 226之一TensorOp控制件206及包含一DMAOp TTU 228之一DMAOp控制件208。TensorOp控制件206通常管理至TensorOp TTU暫存器232之寫入及自TensorOp TTU暫存器232之讀取且管控遍歷操作以供TensorOp TTU 226執行。同樣地,DMAOp控制件208通常管理至DMAOp TTU暫存器234之寫入及自DMAOp TTU暫存器234之讀取且管控遍歷操作以供DMAOp TTU 228執行。TTU暫存器232包含用於儲存包括在藉由TensorOp控制件206執行指令之後待由TensorOp TTU 226執行之操作之一或多個指令之指令緩衝器。同樣地,TTU暫存器234包含用於儲存包括在藉由DMAOp控制件208執行指令之後待由TTU 208執行之操作之一或多個指令之指令緩衝器。如下文進一步描述,TTU由運算塊200用於遍歷通常常駐在窄記憶體210及寬記憶體212中之一或多個張量之陣列元素。
在一些實施方案中,用於藉由運算塊200執行之某些指令經由資料路徑205 (即,指令匯流排124之一部分)到達塊。運算塊200將檢查標頭位元映像以判定指令類型(TensorOp或DMAOp)及指令子類型(讀取操作或寫入操作)。隨後取決於指令類型而將由運算塊200接收之(若干)指令寫入至一特定指令緩衝器。一般言之,在藉由運算塊200之一組件執行指令之前接收且儲存指令(即,寫入至緩衝器)。如圖2中展示,指令緩衝器(即,TensorOp TTU暫存器232及DMAOp TTU暫存器234)可各包含確定一或多個相關指令之消耗(執行)之優先級之一先進先出(FIFO)控制方案。
如上文簡要論述,一張量係一多維幾何物件且例示性多維幾何物件包含矩陣及資料陣列。包含深度嵌套迴圈之一演算法可由運算塊200執行以藉由反覆一或多個嵌套迴圈以遍歷一N維張量來執行張量運算。在一個例示性運算程序中,迴圈嵌套之各迴圈可負責遍歷N維張量之一特定維度。如本文中描述,TensorOp控制件206通常管控一或多個張量運算,該一或多個張量運算驅動其中遍歷且存取一特定張量建構之維度元素以完成由深度嵌套迴圈定義之運算之序列。
運算塊200進一步包含一窄記憶體210及一寬記憶體212。窄及寬名稱通常係指窄記憶體210及寬記憶體212之記憶體單元之寬度之一大小(位元/位元組)。在一些實施方案中,窄記憶體210包含各具有小於16位元之一大小或寬度之記憶體單元且寬記憶體212包含各具有小於32位元之一大小或寬度之記憶體單元。一般言之,運算塊200經由資料路徑205接收輸入啟動且DMA控制件208執行一運算以將輸入啟動寫入至窄記憶體210中。同樣地,運算塊200經由資料路徑202接收參數(權重)且DMA控制件208執行一運算以將參數寫入至寬記憶體212中。在一些實施方案中,窄記憶體210可包含一記憶體仲裁器,該記憶體仲裁器通常用於共用記憶體系統中以針對各記憶體週期決定將容許哪一控制裝置(例如,TensorOp控制件206或DMAOp控制件208)存取窄記憶體210之該等共用記憶體單元。
運算塊200進一步包含一輸入啟動匯流排216及一MAC陣列214,該MAC陣列214包含各包含一MAC運算子215及一加法暫存器220之多個胞。一般言之,MAC陣列214使用MAC運算子215及加法暫存器220跨多個胞執行包含與點積運算相關之算數運算之張量運算。輸入啟動匯流排216提供其中藉由窄記憶體210逐個提供輸入啟動以供MAC陣列214之各MAC運算子215各自存取之一資料路徑。因此,基於一輸入啟動之逐個廣播,一特定胞之一單一MAC運算子215將各接收一輸入啟動。由MAC陣列214之MAC運算子執行之算數運算通常包含使由窄記憶體210提供之一輸入啟動與自寬記憶體212存取之一參數相乘以產生一單一輸出啟動值。
在算數運算期間,部分和可累積且儲存於一對應(例如)加法暫存器220中,或寫入至寬記憶體212且藉由MAC陣列214之一特定胞重新存取以完成後續乘法運算。可將張量運算描述為具有一第一部分及第二部分。當乘法運算(例如)藉由完成一輸入啟動與一參數之一乘法以產生一輸出啟動而產生輸出啟動時,第一部分完成。第二部分包含一非線性函數至一輸出啟動之應用且當在應用函數之後將輸出啟動寫入至窄記憶體210時,第二部分完成。
運算塊200進一步包含一輸出啟動匯流排218、包括一輸出啟動管線224之一非線性單元(NLU) 222、一NLU控制件238及指示運算塊200中之一組件之一核心屬性之一參考圖230。參考圖230係為了清楚起見而展示,但不包含於運算塊200中。核心屬性包含一特定組件是否係一單元、一儲存裝置、一運算子、一控制裝置或一資料路徑。一般言之,在完成張量運算之第一部分之後,經由輸出啟動匯流排218將輸出啟動自MAC陣列214提供至NLU 222。在到達NLU 222之後,經由啟動管線224接收之指定一啟動函數之資料被應用至輸出啟動且輸出啟動接著被寫入至窄記憶體210。在一些實施方案中,輸出啟動匯流排218包含至少一個管線化移位暫存器236且完成張量運算之第二部分包含使用啟動匯流排218之一移位暫存器236以使輸出啟動朝向窄記憶體210移位。
關於(例如)兩個多維資料陣列之點積運算,針對一單一運算塊200,MAC陣列214提供穩健單指令多資料(SIMD)功能性。SIMD通常意謂全部平行單元(多個MAC運算子215)共用相同指令(基於深度迴圈嵌套),但各MAC運算子215對不同資料元素執行指令。在一個基本實例中,逐元素將陣列[1,2,3,4]及[5,6,7,8]相加以在一個週期中獲得陣列[6,8,10,12]將通常需要四個算數單元以對各元素執行操作。藉由使用SIMD,四個單元可共用相同指令(例如,「相加」)且並行執行運算。因此,系統100及運算塊200提供優於先前方法之張量運算之經增強加速及平行性。
在一個實例中且如下文更詳細描述,一單一指令可由控制器102提供至多個運算塊200 (見圖1之塊集112、114)以供多個MAC陣列214消耗。一般言之,神經網路層可包含多個輸出神經元且輸出神經元可經分割使得與輸出神經元之一子集相關聯之張量運算可被指派至塊集112、114之一特定塊。塊集112、114之各塊可接著對一給定層之神經元之不同群組執行相關張量運算。因此,運算塊200可提供至少兩個形式之平行性:1)一個形式包含在塊集112、114之多個塊當中對輸出啟動(其等對應於輸出神經元之子集)分割;及2)另一形式包含基於塊集112、114之塊當中之分割(使用一單一指令)同時運算輸出神經元之多個子集。
圖3繪示包括用以追蹤之各具有一深度八之四個張量之一例示性張量遍歷單元(TTU)結構300。TTU 300通常包含一計數器張量302、一步幅張量304、一初始張量306及一限制張量308。TTU 300進一步包含一加法器組310及一張量位址索引312。如上文描述,一張量係一多維幾何物件且為了存取張量之一元素,必須提供各維度之一索引。由於張量儲存於窄記憶體210及寬記憶體212中,故必須將一張量索引集轉譯為一記憶體位址集。在一些實施方案中,藉由使記憶體位址成為索引之一線性組合且經由張量位址索引312反映位址而完成索引至記憶體位址之轉譯。
每一控制執行緒存在一TTU且運算塊200中之每一指令類型(TensorOP及DMAOp)存在一控制執行緒。相應地,如上文描述,在運算塊200中存在兩個TTU集:1) TensorOp TTU 226;及2) DMAOp TTU 228。在各種實施方案中,TensorOp控制件206將引起TTU 300在一特定張量運算之開始時載入TensorOp TTU計數器302、限制308及步幅值304且在指令止用之前將不改變暫存器值。兩個TTU之各者將需要針對運算塊200中之以下記憶體位址埠產生一位址:1)寬記憶體212位址埠;及2)窄記憶體210,其具有呈現為四個位址埠之四個經獨立仲裁組。
如上文論述,在一些實施方案中,窄記憶體210可包含一記憶體仲裁器,該記憶體仲裁器通常用於共用記憶體系統中以針對各記憶體週期決定將容許哪一控制裝置(例如,TensorOp控制件206或DMAOp控制件208)存取窄記憶體210之共用記憶體資源。在一個實例中,不同指令類型(TensorOp及DMAOp)係請求需要被仲裁之記憶體存取之獨立控制執行緒。當一特定控制執行緒將一張量元素提交至記憶體時,控制執行緒使經提交至記憶體之張量參考之計數器302遞增。
在一個實例中,當TensorOp控制件206執行用於存取一張量之一特定元素之一指令時,TTU 300可判定張量之特定元素之位址,使得控制件206可存取儲存器(例如,窄記憶體210)以讀取表示特定元素之一啟動值之資料。在一些實施方案中,一程式可包含一嵌套迴圈且控制件206可執行一指令以根據與嵌套迴圈相關聯之當前索引變數值存取嵌套迴圈內之一二維陣列變數之一元素。
TTU 300可同時針對一(若干)給定張量之高達X數目個TTU列保持遍歷狀態。同時常駐在TTU 300中之各張量佔用一專屬硬體張量控制描述符。硬體控制描述符可由每一列位置之X數目個TTU計數器302、步幅304及支援每一列維度具有高達X數目個TTU計數器之張量之限制暫存器308組成。在一些實施方案中,列之數目及每一列之計數器之數目可係不同的。
針對一給定位置暫存器,自包含將位置暫存器相加在一起之一加法運算運算最後記憶體位址。將基址併入計數器302中。針對常駐在相同記憶體中之張量參考共用一或多個加法器。在一個實施方案中,由於在一週期中在任何給定埠上僅可存在一單一載入器/儲存器,故迴圈嵌套控制件之一功能將係以確保常駐在相同窄或寬記憶體中之多個張量參考不使其等計數器在任何給定週期遞增。用於運算記憶體存取位址值(包含判定偏移值)之暫存器之使用更詳細描述於2016年2月3日申請之標題為「Matrix Processing Apparatus」之專利申請案第15/014,265號,該案之整個揭示內容藉此以全文引用的方式整體明確併入本文中。
下文提供可用於樣例化一專用TTU 300之模板參數:1) TTU列之X數目;2)每一列之TTU計數器之X數目;3) TTU加法器單元之X數目;4)每一TTU列指示共用加法器參考;及5)每一計數器指示X計數器大小[TTU][列][深度]。全部TTU暫存器架構上可見。需要經存取用於運算之一特定張量元素之一位址(即,張量位址312)係計數器之加法之結果。當將一遞增信號自控制執行緒發出至一列TTU時,TTU 300執行一單週期運算且藉由一最內維度之一步幅304使該維度遞增且傳播翻轉(rollover)通過全部深度。
一般言之,TTU 300判定與一或多個張量相關聯之一狀態。狀態可包含迴圈限值、當前迴圈索引變數值、用於運算一記憶體位址值之維度乘數及/或用於處置分支迴圈界限之程式計數器值。TTU 300可包含一或多個張量狀態元件及一算數邏輯單元。張量狀態元件之各者可係一儲存元件,例如,一暫存器或任何其他適合儲存電路。在一些實施方案中,張量狀態元件可實體或邏輯配置成不同群組。
圖4繪示包含經由輸入匯流排216將啟動404廣播至一或多個乘法累積(MAC)運算子之一窄記憶體210之一例示性架構。移位暫存器404提供一移位功能性,藉此每次將一個啟動404發送出至輸入匯流排216上以供一MAC胞410中之一或多個MAC運算子215接收。一般言之,MAC胞410 (包含MAC運算子215)可經定義為計算一部分和之運算胞且在一些實施方案中,經組態以將一部分和資料寫入至輸出匯流排218。如展示,胞410可由一或多個MAC運算子組成。在一個實施方案中,將一MAC胞410中之MAC運算子215之數目稱為胞之發出寬度。作為一實例,一雙發出胞係指具有兩個MAC運算子之一胞,該兩個MAC運算子可運算兩個啟動值(來自窄記憶體210)與兩個參數(來自寬記憶體212)之乘法且執行兩個乘數之結果與當前部分和之間之一加法。
如上文描述,輸入匯流排216係將輸入啟動提供至線性單元(即,MAC陣列214)之MAC運算子215之一廣播匯流排。在一些實施方案中,在全部MAC運算子215之間共用相同輸入。輸入匯流排216之寬度必須足夠寬,以將經廣播輸入供應至一給定MAC陣列214之對應數目個胞。考量以下實例以繪示輸入匯流排216之結構。當線性單元中之胞的數目等於四且啟動寬度等於八位元時,輸入匯流排216可經組態以每一週期提供高達四個輸入啟動。在此實例中,MAC陣列214中之每一胞將僅存取經廣播之四個啟動中之一者。
基於由運算塊200接收之指令的TensorOp欄位設置,MAC陣列214之胞可需要使用相同輸入啟動來執行運算。可將此稱為MAC陣列214之一胞內的Zout分割。同樣地,一胞內的Zin分割在MAC陣列214之胞需要不同啟動以執行運算時發生。在前一種情況中,重複單一輸入啟動四次,且在四個週期內廣播自窄記憶體210讀取之四個啟動。在後一種情況中,每一週期需要窄記憶體210之一讀取。針對先前提及之實例,TensorOp控制件206基於自控制器102接收之指令的執行來協調此廣播方法論。
圖5繪示包含用於將輸出啟動提供至圖2及圖4之一窄記憶體單元210之一輸出匯流排218之一例示性架構。一般言之,運算塊200中之MAC陣列214之每一MAC胞215運算一不同之輸出啟動。然而,關於一輸出特徵陣列,在其中輸出特徵深度小於一運算塊200中之MAC胞215之數目的情況中,可對胞進行分組以形成一或多個胞群組。在一胞群組中之全部MAC胞215運算相同之輸出(即,針對一輸出特徵圖),然而,各胞僅運算對應於Zin維度之一子集之輸出之一子集。因此,一MAC胞215之輸出現在是一部分和,而不是最後線性輸出。在一些實施方案中,NLU 222將基於藉由NLU控制件238提供至NLU 222之一控制信號,將此等部分和彙總成最後線性輸出。
如上文論述,輸出匯流排218係一管線化移位暫存器。在各種實施方案中,當張量運算之一第一部分結束且TensorOp控制件206 (藉由執行一指令)指示一部分和需要被寫出時,將存在提供至輸出匯流排218之部分和之一平行負載。平行負載的數目將對應於運算塊200中之MAC胞的數目。TensorOp控制件206將接著引起部分和數量被移出且透過非線性管線發送。在一些實施方案中,可存在其中未實際上利用一塊中之全部MAC胞以執行運算的境況。在此一境況中,非移位至輸出匯流排上的全部部分和將皆係有效的。在此實例中,TensorOp控制件206可將一控制信號提供至MAC陣列214以指示應移出之有效胞的數目。經載入輸出匯流排218之平行負載數量仍將對應於運算塊中之MAC胞的數目,然而,僅有效值將被移出且被提交至窄記憶體210。
圖6係用於使用一神經網路(NN)運算塊(諸如圖2之運算塊200)執行張量運算之程序600之一例示性流程圖。程序600在方塊602藉由將足夠參數載入晶片上之第二記憶體中以容許針對一給定NN模型及架構之低於一指定位準之延時及高於一指定位準之處理量而開始。處理量係在存在大量請求/推斷之情況下達成之最大效能。延時係運算一單一請求所耗費之最大時間。程序600在方塊604繼續且運算塊200之窄記憶體210將啟動逐個發送(即,廣播)至輸入啟動資料匯流排216上。將啟動值儲存於一窄記憶體210中。窄記憶體210可係允許定址至特定記憶體位置用於存取輸入數量之靜態隨機存取記憶體(SRAM)組之一集合。經由輸入啟動匯流排216將自記憶體210讀取之啟動廣播至包括多個MAC運算子215及加法暫存器220之MAC陣列214 (即,線性單元)之線性胞。在程序600之方塊606,運算塊200之MAC運算子215各接收兩個輸入-一個輸入(一啟動)係自輸入啟動匯流排216接收;且另一輸入(一參數)係自寬記憶體212接收。相應地,啟動饋送各MAC運算子215之輸入之一者且在MAC陣列214之胞中之各MAC運算子215自寬記憶體212獲取其等第二乘數輸入。
在程序600之方塊608,運算塊200之MAC陣列214基於自記憶體存取之一資料陣列結構之元素而執行包括點積運算之張量運算。寬記憶體212可具有等於線性單元之寬度(例如,32位元)之一位元寬度。因此,線性單元(LU)係自一向量記憶體(即,寬記憶體212)接收資料之一SIMD向量算數邏輯單元(「ALU」)單元。在一些實施方案中,MAC運算子215亦可自寬記憶體212獲取累加器輸入(部分和)。在一些實施方案中,存在針對與兩個不同運算元(參數及部分和)相關之讀取及/或寫入之相對於寬記憶體212埠之分時。一般言之,為了最佳化面積,寬記憶體212可具有有限數目個埠。因此,當需要同時自寬記憶體212讀取一運算元(例如,一參數)且將一運算元(例如,一部分和)寫入至寬記憶體212時,可使與一特定運算元相關聯之一管線暫停。
在方塊610,運算塊200之一運算胞(其具有MAC運算子215及加法暫存器220)基於由MAC/運算胞執行之乘法運算而產生至少一個輸出啟動。MAC胞運算之結果包含(在部分和算數運算期間)寫回至記憶體之部分和或被發送至輸出匯流排218之輸出啟動。運算塊200之NLU 222可將一非線性啟動函數應用至輸出啟動且將啟動寫入至窄記憶體210。在一些實施方案中,輸出匯流排218係一移位暫存器且可累積來自MAC運算子215之結果/輸出啟動之一平行負載,且每次將其等移出一個用於將非線性函數及寫入操作應用至相同塊之窄記憶體210。
本說明書中描述之實施例使用以下兩方面的觀察:1)大多數現有神經網路(NN)加速器之一瓶頸係載入NN權重(亦稱為參數)所需之記憶體頻寬;及2)即使產生模型中之參數之數目大(即,在自數個KB至數個GB之範圍中),其中大多數模型之範圍在數個MB至數百個MB之間,然此等數目在可(例如)使用跨塊分佈之記憶體實施於硬體中(包含在晶片上記憶體中)之數目之範圍內。
僅僅在晶粒上添加一大記憶體(例如,一快取區或高速暫存記憶體)以含有全部參數係不足夠的。克服記憶體頻寬限制之目標係擴充架構之效能。此意謂增加運算子(通常MAC)之數目。但為了達成高效能,一者必須能夠每一週期為此等運算子饋送參數。將「效能」不僅理解為處理量,而且亦理解為延時(此係針對許多使用者面對應用之情況)亦係重要的。
換言之,在一神經網路(NN)加速器中,每次將參數載入一個層係非常昂貴的。若一者可將參數預載入晶片上,則一者需在運行時間載入的僅係啟動。換言之,實施例包含一大規模晶片上記憶體。
本說明書中描述之實施例對神經網路(NN)加速器操作及設計具有一影響。實施例致力於神經網路加速器設計之顯著限制之一者,即低延時及高處理量之組合。考量一NN加速器意欲表示一整個神經網路。在輸入處為某一資料,例如,一小影像或聲音。NN加速器前後接連地執行層。在效能及能量方面昂貴的係前後接連地載入層之參數。NN加速器載入一層之參數,進行運算,保持層之輸出且接著載入下一層之參數;正是在此程序中消耗大多數記憶體頻寬。
給定一高處理量及一給定NN模型及架構,使參數常駐在晶片上大大降低延時。加速器僅需要載入聲音之數位元組,接著加速器可極快地運行。加速器不需要高記憶體頻寬且能量下降。
其中將記憶體自記憶體載入CPU之范紐曼(Von Neumann)模型係一常見架構。此一經典范紐曼式架構(其中記憶體常駐在晶粒之一端上且運算運算子在晶粒之另一端上)在大量運算子之情況下將不實際(若非不可行),此係因為其將暗示大量導線以將資料自記憶體(或記憶體組)路由至運算子。代替本發明之實施例,利用NN運算之記憶體區域性性質以依其中記憶體跨塊分佈之一塊狀組織(如圖2及圖8中展示)配置架構。
NN大但並非巨大,因此一者可接近其可有效地在晶片上適配一個或數個NN之全部參數之點。NN加速器移向自含式架構。給定一塊架構,一者可將晶片內部之記憶體分割。代替在晶片之一個邊角中具有一個大SRAM,實施例將正確的SRAM分配至每一塊且亦避免晶片上頻寬問題。在某些實施例中,在各塊中之一寬記憶體含有參數,且一寬環(大約具有類似於寬記憶體之寬度)按一高頻寬饋送寬記憶體。在本說明書中描述之實施例預期架構變動。取決於NN層性質,實施例可至少具有以下兩個NN架構。
針對大體上由完全連接層構成之神經網路,存在跨層之參數之較少再使用。在一完全連接層中之神經元具有至先前層中之全部啟動之完全連接。考量其中未再使用參數之一完全連接神經網路(考量無批量處理之情況,例如,即時應用)。若全部參數未含有在寬記憶體內,則必須經由一環形匯流排自一外部記憶體提取參數。在該情況中,整體設計之效能變得受外部記憶體頻寬限制。若全部參數常駐在寬記憶體中,則不需要外部記憶體存取,且每一週期可為全部運算子饋送參數,從而達成最大效能。代替僅使用外部記憶體用於提取參數,本說明書中描述之實施例使參數保持常駐在寬記憶體中。
作為一實例,考量在完全連接層中具有50 M參數(或為了清楚起見,50 MB)之一模型。考量具有按1GHz操作之16384個MAC之一加速器。考量至模型之輸入係16 KB。對於當前應用,全部值係合理的。最大效能對應於在50*10^6 / (16384 * 10^9) = 3.05*10^-6秒中執行模型。其繼而對應於(50*10^6 + 16,384) / (3.05*10^-6) = 16.40 TB/s之一記憶體頻寬。作為一比較點,典型DRAM晶片提供大約10 GB/s之數量級,當前最先進技術高頻寬記憶體(HBM)提供約256 GB/s。
卷積神經網路將參數自一個塊傳遞至另一塊。針對其中跨神經元再使用參數(亦稱為啟動)之大體上由卷積層構成之神經網路,記憶體頻寬要求較不高,但仍通常高於一典型外部記憶體。環形頻寬可足以將參數載入塊,前提是其連接至具有與環相同之寬度之一大晶粒上記憶體。換言之,針對各推斷,塊需要存取/載入模型之全部參數;此對於任何模型皆適用。在一神經網路中之完全連接層之唯一差異係在一個推斷期間僅使用各參數一次;針對卷積層,在層內多次使用參數。
作為一實例,考量在卷積層中具有50 M參數之一模型。此等層之一些可最終相當小,其他層大,因此參數之再使用將不同;跨模型之一合理平均數係每一參數~100次再使用。因此,使用如上文之相同推理,頻寬要求將下降至16.40 TB/s / 100 ~ 164 GB/s。對於具成本效益之DRAM,頻寬要求仍保持高。然而,使用上文之架構,連接至164*8=1312位元寬之一大記憶體之具有相同寬度的環能夠按適當速度伺服塊。
考量其中記憶體足夠大以含有一完全連接模型中之層之全部參數之一第一實施例。若全部塊欲在一個層上同時起作用,則參數需要分佈遍及塊。實施例跨塊對各層之輸出神經元/啟動分割;在執行期間,各塊處理層之一子集,運算對應部分和且將其傳遞至其相鄰者,即,部分和繞環旋轉,且在一完全旋轉之後,塊產生最終和。
一第二實施例包含預載入/快取全部塊中之(當前使用)參數之相同子集,此係因為塊同時使用相同參數。在執行期間,參數(子集)而非部分啟動和繞環旋轉。
塊之數目係一擴充因素。一者可藉由憑藉使用本說明書中描述之實施例改良延時及處理量而不增加記憶體要求來達成強擴充。然而,將塊一起進行批處理以擴充運算能力增加記憶體要求及所需啟動之數目。難以在不增加記憶體頻寬超過習知記憶體選項的情況下進行批處理類型擴充。批處理通常涉及即時應用且涉及延時及處理量要求兩者。
值得注意的係,具有在一快取區中之參數不同於具有在寬記憶體中作為一塊配置之部分之參數。具有如本說明書中描述之一塊配置提供編譯類型區域性。例如,使完全連接模型緊鄰SRAM導致對比一快取區模型之更大內部頻寬。
本說明書中描述之實施例快於習知神經網路加速器進行操作。某些實施例具有更多運算子;為了饋送運算子,加速器需要更多內部頻寬。為了解決此需要,架構分佈記憶體且將參數帶至加速器上。
最大當前晶片係約650平方毫米。因此,對一者在晶片上可具有多少SRAM存在限制。實施例包含在給定空間約束中使用密集記憶體,包含使用3D堆疊。
本說明書中描述之實施例適用於推斷(後訓練)模式及訓練模式兩者。
作為一新增細微差別,存在另一層級之階層;存在記憶體階層且通常亦存在一暫存器檔案階層。將參數載入暫存器中且接著再使用暫存器以達成記憶體頻寬擴展;在暫存器檔案中以及在記憶體中存在記憶體頻寬。換言之,存在一新增成本節約,即,自記憶體至暫存器檔案及接著自暫存器檔案至運算之佈線之減少。在本說明書中描述之實施例中,存在與暫存器檔案相關聯之一降低佈線成本;自SRAM直接消耗參數至定址。換言之,記憶體直接饋送ALU。
圖7展示用於加速與深度神經網路(DNN)相關聯之張量運算之一運算系統700之一替代實施例之一方塊圖。系統700通常包含一控制器/非核心702、一記憶體介面708、包含一第一塊集712及一第二塊集714之多個塊。控制器702通常包含資料記憶體704、指令記憶體706及經組態以執行編碼於一電腦可讀儲存媒體中之一或多個指令之至少一個處理器。指令記憶體706可儲存可由控制器702之一或多個處理器執行之一或多個機器可讀指令。資料記憶體704可係用於儲存且隨後存取與發生於系統700內之運算相關之各種資料之各種資料儲存媒體之任何者。
控制器702經組態以執行與系統700內之張量運算相關之一或多個指令(包含儲存於指令記憶體706中之指令)。在一些實施方案中,資料記憶體704及指令記憶體706係揮發性記憶體單元或若干揮發性記憶體單元。在一些其他實施方案中,資料記憶體704及指令記憶體706係非揮發性記憶體單元或若干非揮發性記憶體單元。資料記憶體704及指令記憶體706亦可係另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或包含呈一儲存區域網路或其他組態之裝置之一裝置陣列。在各種實施方案中,控制器702亦可被引用或稱為核心管理器702。
記憶體介面708自一I/O鏈路接收指令及資料參數且將指令及參數提供至控制器702。一般言之,可透過指令匯流排 (未展示控制器與塊之間之指令匯流排)將指令提供至系統700中之一或多個裝置且可透過環形匯流排728將參數提供至系統700中之一或多個裝置。在一些實施方案中,指令由控制器702在一初始時間自主機介面708接收且儲存於指令記憶體706中以供控制器702在一後續時間執行。
環形匯流排728源自控制器102且透過以一環將塊712、714連接回至控制器702之一匯流排資料路徑而提供通信耦合。在各種實施方案中,環形匯流排728通常連接或耦合全部塊712、714中之全部寬記憶體單元。因此,環形匯流排728之一有效負載寬度對應於安置於塊集712、714之各塊內之寬記憶體單元之寬度。如上文論述,環形匯流排728亦包含指示需要消耗包括經由環形匯流排728傳達之指令或參數之有效負載資料之塊之一位元映像標頭。
關於經由環形匯流排728在一特定塊處接收之資料(即,有效負載),回應於接收資訊,各塊將在將位元映像標頭中指示之接收塊所獨有之位置資料轉送至另一塊之前清零(即,清除)該資料。因此,當標頭位元映像不具有指示待接收有效負載之一特定塊之剩餘位元集資料時,將停止將有效負載轉送至另一塊。有效負載資料通常係指由一或多個塊在基於深度嵌套迴圈之執行而執行之張量運算期間使用之啟動及權重。
在一些實施方案中,可將控制器702描述為環形匯流排728之一部分。在一個實例中,針對在一特定塊內執行之DMAOp指令,控制器702可用於自環形匯流排站彈出資料/有效負載且將有效負載轉送至環中之一下一塊中之一環形匯流排站。控制器702亦可引起有效負載資料被提交至塊之一或多個寬記憶體單元,前提是位元映像標頭中之指令要求此動作。需要寫入資料之一或多個寬記憶體單元之位址可由特定塊內之DMAOp指令產生。
在各種實施方案中,塊集712、714之各塊可係有效負載資料之一生產者或有效負載資料之一消耗者。當一塊係有效負載資料之一生產者時,該塊自其寬記憶體單元之一或多者讀取資料且經由環形匯流排728多播資料以供一或多個其他塊消耗。當一塊係有效負載資料之一消耗者時,該塊接收資料且將該資料寫入至該塊內之一或多個寬記憶體單元且轉送該有效負載資料以供一或多個其他塊消耗。關於有效負載資料經由環形匯流排728之移動,在任何給定時間,在環形匯流排728上通常將僅存在資料之一個生產者/主控裝置。全部塊中之DMAOp指令執行順序(例如,FIFO控制方案)將確保在一給定時間,在環形匯流排728上僅存在資料之一個生產者/主控裝置。
在一些實施方案中,控制器702使用一同步旗標控制架構以確保在一給定時間,在環形匯流排728上僅存在有效負載資料之一個生產者/主控裝置。在一個實例中,藉由一塊至一環形輸出之每一寫入將觸發對應同步旗標計數之一遞增。控制器702可檢查有效負載資料以判定包括有效負載之資料塊或片段之數目。控制器702接著監測塊之執行以確保在另一塊在主控模式中執行之前藉由塊轉送及/或消耗預期數目個資料片段。
確保在一給定時間,在環形匯流排728上僅存在資料之一個生產者/主控裝置之一例外狀況在存在經由環形匯流排728連接之在環形匯流排上不具有一重疊區域之本端多播群組時發生。此雙主控多播方法論之一重要要求係不同多播群組必須不被容許看見彼此之資料封包,此係因為封包重疊可發生且導致一或多個資料運算錯誤。
與圖1相比,圖7之塊由環形匯流排以一鋸齒狀或蛇形方式連接而塊自身形成一正方形型樣。在所繪示實施例中,加速器分別包括8個及16個塊。在替代實施例中,加速器可包含更多塊。
圖8係圖2之運算塊之一簡化圖解。
圖9係用於使用一神經網路(NN)運算塊(諸如圖2之運算塊200)執行張量運算之程序900之一例示性流程圖。程序900在方塊902藉由(例如)在執行之前將NN權重參數載入一NN加速器中而開始。程序900在方塊904藉由處理至加速器之輸入而實質上不存取加速器外部之神經網路權重參數而繼續。在方塊906,程序基於處理至加速器之輸入而產生至少一個輸出啟動。
可在數位電子電路、有形體現之電腦軟體或韌體、電腦硬體中實施本說明書中描述之標的物及功能性操作之實施例,包含本說明書中揭示之結構及其等結構等效物或該等結構之一或多者之組合。可將本說明書中描述之標的物之實施例實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以供資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。替代地或另外,程式指令可編碼於一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該信號經產生以編碼用於傳輸至適合接收器設備以供一資料處理設備執行之資訊。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由操作輸入資料且產生(若干)輸出而執行功能。程序及邏輯流程亦可由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路)或一GPGPU (通用圖形處理單元))執行,且設備亦可實施為專門邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路)或一GPGPU (通用圖形處理單元))。
適於執行一電腦程式之電腦包含例如(可基於)通用或專用微處理器或兩者,或任何其他種類之中央處理單元。一般言之,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之關鍵元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般言之,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或經可操作地耦合以自一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)接收資料或將資料傳送至一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或兩者。然而,一電腦無需具有此等裝置。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包含舉例而言:半導體記憶體裝置,例如,EPROM、EEPROM及快閃記憶體裝置;磁碟,例如,內部硬碟機或可抽換式磁碟。處理器及記憶體可由專門邏輯電路補充或併入於專門邏輯電路中。
雖然本說明書含有許多具體實施方案細節,但不應將此等細節理解為對任何發明或可主張之內容之範疇之限制,而是應理解為對特定發明之特定實施例所特有的特徵之描述。亦可在一單一實施例中組合實施本說明書中在各別實施例之內容背景中描述之特定特徵。相反地,亦可在多個實施例中單獨地或以任何適合子組合實施在一單一實施例之內容背景中描述之各種特徵。再者,儘管上文可將特徵描述為以特定組合作用且甚至最初如此主張,然在一些情況中,來自一所主張組合之一或多個特徵可自該組合去除,且該所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中以一特定順序描繪操作,但不應將此理解為要求依所展示之特定順序或依循序順序執行此等操作,或執行全部所繪示之操作以達成所要結果。在某些境況中,多重任務處理及並行處理可為有利的。再者,不應將上文描述之實施例中之各種系統模組及組件之分離理解為在全部實施例中皆要求此分離,且應將此理解為所描述之程式組件及系統通常可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例係在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可依一不同順序執行且仍達成所要結果。作為一個實例,附圖中描繪之程序不一定要求所展示之特定順序或循序順序以達成所要結果。在特定實施方案中,多重任務處理及並行處理可為有利的。
100:運算系統
102:控制器/核心管理器
104:資料記憶體
106:指令記憶體
108:主機介面
110:輸入/輸出(I/O)鏈路
112:第一塊集
114:第二塊集
116:分類器部分
118:匯流排圖
120:分類結果匯流排
122:CSR/主控匯流排
124:指令匯流排
126:網狀匯流排
128:環形匯流排
200:神經網路(NN)運算塊
202:資料路徑
203:環形輸出
204:環形輸入
205:資料路徑
206:TensorOp控制件
208:DMAOp控制件
210:窄記憶體
212:寬記憶體
214:乘法累積(MAC)陣列
215:乘法累積(MAC)運算子
216:輸入啟動匯流排
218:輸出啟動匯流排
220:加法暫存器
222:非線性單元(NLU)
224:輸出啟動管線
226:TensorOp張量遍歷單元(TTU)
228:DMAOp張量遍歷單元(TTU)
230:參考圖
232:TensorOp張量遍歷單元(TTU)暫存器
234:DMAOp張量遍歷單元(TTU)暫存器
236:管線化移位暫存器
238:非線性單元(NLU)控制件
300:張量遍歷單元(TTU)結構
302:計數器張量
304:步幅張量
306:初始張量
308:限制張量
310:加法器組
312:張量位址索引
404:啟動
410:乘法累積(MAC)胞
600:程序
602:方塊
604:方塊
606:方塊
608:方塊
610:方塊
700:運算系統
702:控制器/非核心
704:資料記憶體
706:指令記憶體
708:記憶體介面
712:第一塊集
714:第二塊集
728:環形匯流排
900:程序
902:方塊
904:方塊
906:方塊
圖1係一例示性運算系統之一方塊圖。
圖2繪示一例示性神經網路運算塊。
圖3繪示一例示性張量遍歷單元(TTU)結構。
圖4繪示包含將輸入啟動提供至一或多個乘法累積(MAC)運算子之一窄記憶體單元之一例示性架構。
圖5繪示包含將輸出啟動提供至圖2及圖4之窄記憶體單元之一輸出匯流排之一例示性架構。
圖6係用於使用圖2之神經網路運算塊執行張量運算之一程序之一例示性流程圖。
圖7係一運算系統之一替代實施例。
圖8係一神經網路運算塊之一替代實施例。
圖9係用於藉由將神經網路權重參數載入一神經網路加速器中而加速運算之一程序之一例示性流程圖。
各個圖式中之相似元件符號及名稱指示相似元件。
100:運算系統
102:控制器/核心管理器
104:資料記憶體
106:指令記憶體
108:主機介面
110:輸入/輸出(I/O)鏈路
112:第一塊集
114:第二塊集
116:分類器部分
118:匯流排圖
120:分類結果匯流排
122:CSR/主控匯流排
124:指令匯流排
126:網狀匯流排
128:環形匯流排
Claims (8)
- 一種用於加速一機器學習模型之張量運算之加速器,其包括:複數個運算單元,各運算單元包括:一記憶體組(memory bank),其經組態以在該運算單元上儲存用於該機器學習模型之參數之一各自部分,參數之該各自部分足以容許針對該機器學習模型之低於一指定位準的延時(latency)與高於一指定位準的處理量(throughput);至少一個胞(cell),其包括至少一個運算子(operator),該至少一個運算子自該記憶體組接收參數之該各自部份之至少一些且執行一或多個運算;其中該一或多個運算與一資料陣列之至少一個元素(element)相關聯,該一或多個運算部分包括基於自該記憶體組接收之一參數之一乘法運算,且該記憶體組及該至少一個運算子係位於一相同晶粒上,其中在該一或多個運算之執行之前,該加速器經組態以分佈(distribute)將被儲存於該複數個運算單元之各自記憶體組中之所有該等參數,且該加速器經組態以加速該等張量運算而實質上不用存取該加速器外部之該等機器學習參數。
- 如請求項1之加速器,其中該記憶體組經組態以儲存多於100,000個參數。
- 如請求項1之加速器,其中該記憶體組經組態以儲存多於1,000,000 個參數。
- 如請求項1之加速器,其中該記憶體組經組態以儲存多於100,000,000個參數。
- 如請求項1之加速器,其中該記憶體組包括SRAM。
- 如請求項1之加速器,其進一步包括可由該至少一運算子存取之一資料匯流排。
- 如請求項6之加速器,其進一步包括與至少另一記憶體組資料通信(data communication)之一遍歷單元(traversal unit),其中該遍歷單元經組態以提供一控制信號至其他記憶體組,以引起一輸入啟動(input activation)被提供至可由該至少一運算子存取之該資料匯流排。
- 如請求項7之加速器,其中該其他記憶體組經組態以提供輸入啟動之逐個廣播(one-by-one broadcast)至該資料匯流排,使得該至少一運算子之各者接收一各自輸入啟動。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762544171P | 2017-08-11 | 2017-08-11 | |
US62/544,171 | 2017-08-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202044124A TW202044124A (zh) | 2020-12-01 |
TWI737145B true TWI737145B (zh) | 2021-08-21 |
Family
ID=63449663
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107127941A TWI679590B (zh) | 2017-08-11 | 2018-08-10 | 具有常駐在晶片上之參數的神經網路加速器 |
TW109102859A TWI737145B (zh) | 2017-08-11 | 2018-08-10 | 具有常駐在晶片上之參數的神經網路加速器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107127941A TWI679590B (zh) | 2017-08-11 | 2018-08-10 | 具有常駐在晶片上之參數的神經網路加速器 |
Country Status (9)
Country | Link |
---|---|
US (4) | US10504022B2 (zh) |
EP (1) | EP3665622A1 (zh) |
JP (2) | JP7171622B2 (zh) |
KR (3) | KR102456464B1 (zh) |
CN (1) | CN109389214A (zh) |
DE (2) | DE202018104609U1 (zh) |
GB (1) | GB2568776B (zh) |
TW (2) | TWI679590B (zh) |
WO (1) | WO2019032808A1 (zh) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366328B2 (en) * | 2017-09-19 | 2019-07-30 | Gyrfalcon Technology Inc. | Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit |
US10832753B2 (en) * | 2017-07-31 | 2020-11-10 | General Electric Company | Components including structures having decoupled load paths |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11620490B2 (en) * | 2017-10-17 | 2023-04-04 | Xilinx, Inc. | Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions |
US10936942B2 (en) * | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
US10803379B2 (en) | 2017-12-12 | 2020-10-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
US10846621B2 (en) | 2017-12-12 | 2020-11-24 | Amazon Technologies, Inc. | Fast context switching for computational networks |
US10621489B2 (en) | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US11144316B1 (en) | 2018-04-17 | 2021-10-12 | Ali Tasdighi Far | Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning |
US11966835B2 (en) | 2018-06-05 | 2024-04-23 | Nvidia Corp. | Deep neural network accelerator with fine-grained parallelism discovery |
US11640533B2 (en) | 2018-08-03 | 2023-05-02 | Arm Limited | System, method and apparatus for training neural networks using multiple datasets |
US20210201124A1 (en) * | 2018-08-27 | 2021-07-01 | Neuralmagic Inc. | Systems and methods for neural network convolutional layer matrix multiplication using cache memory |
US10747845B2 (en) * | 2018-08-31 | 2020-08-18 | Arm Limited | System, method and apparatus for computationally efficient data manipulation |
US11769040B2 (en) | 2018-09-10 | 2023-09-26 | Nvidia Corp. | Scalable multi-die deep learning system |
CN109359732B (zh) * | 2018-09-30 | 2020-06-09 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
US20200117988A1 (en) * | 2018-10-11 | 2020-04-16 | International Business Machines Corporation | Networks for distributing parameters and data to neural network compute cores |
US10970201B2 (en) | 2018-10-24 | 2021-04-06 | Arm Limited | System, method and apparatus for data manipulation |
EP3674982A1 (en) * | 2018-12-27 | 2020-07-01 | IMEC vzw | Hardware accelerator architecture for convolutional neural network |
US11410014B2 (en) | 2019-02-11 | 2022-08-09 | Apple Inc. | Customizable chip for AI applications |
US11748599B2 (en) * | 2019-02-21 | 2023-09-05 | Texas Instruments Incorporated | Super-tiling in neural network processing to enable analytics at lower memory speed |
WO2020172829A1 (zh) * | 2019-02-27 | 2020-09-03 | 华为技术有限公司 | 一种神经网络模型处理方法及装置 |
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
US11270197B2 (en) * | 2019-03-12 | 2022-03-08 | Nvidia Corp. | Efficient neural network accelerator dataflows |
CN110032374B (zh) * | 2019-03-21 | 2023-04-07 | 深兰科技(上海)有限公司 | 一种参数提取方法、装置、设备及介质 |
US10534747B2 (en) * | 2019-03-29 | 2020-01-14 | Intel Corporation | Technologies for providing a scalable architecture for performing compute operations in memory |
KR102550451B1 (ko) * | 2019-04-04 | 2023-06-30 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 데이터 처리방법과 장치 및 관련 제품 |
CN111782577B (zh) | 2019-04-04 | 2023-03-24 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
CN111831337B (zh) * | 2019-04-19 | 2022-11-29 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN111966401A (zh) * | 2019-05-20 | 2020-11-20 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN111985628B (zh) * | 2019-05-24 | 2024-04-30 | 澜起科技股份有限公司 | 计算装置及包括所述计算装置的神经网络处理器 |
US11941512B2 (en) | 2019-06-26 | 2024-03-26 | Western Digital Technologies, Inc. | Neural network engine utilizing a serial bus |
CN112148391A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 生成基于芯片的计算功能的方法、装置、设备和存储介质 |
WO2021000281A1 (en) * | 2019-07-03 | 2021-01-07 | Huaxia General Processor Technologies Inc. | Instructions for operating accelerator circuit |
US20220405221A1 (en) * | 2019-07-03 | 2022-12-22 | Huaxia General Processor Technologies Inc. | System and architecture of pure functional neural network accelerator |
KR20210006120A (ko) * | 2019-07-08 | 2021-01-18 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 데이터 처리 시스템 및 이를 위한 가속 장치 |
CN112541581A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种加速计算单元和加速计算系统 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
US10915298B1 (en) | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
DE102019127795A1 (de) | 2019-10-15 | 2021-04-15 | Infineon Technologies Ag | Schaltung und ein Verfahren zum Bestimmen einer Lage eines Magneten und Joystick |
US11341086B2 (en) * | 2019-11-22 | 2022-05-24 | Rambus Inc. | Compute accelerator with 3D data flows |
US11127442B2 (en) * | 2019-12-06 | 2021-09-21 | Xilinx, Inc. | Data transfers between a memory and a distributed compute array |
KR20210077352A (ko) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 이를 위한 가속 장치 |
EP4010848A1 (en) * | 2019-12-18 | 2022-06-15 | Google LLC | Parameter caching for neural network accelerators |
US11610104B1 (en) | 2019-12-30 | 2023-03-21 | Ali Tasdighi Far | Asynchronous analog accelerator for fully connected artificial neural networks |
US11615256B1 (en) | 2019-12-30 | 2023-03-28 | Ali Tasdighi Far | Hybrid accumulation method in multiply-accumulate for machine learning |
US11922292B2 (en) * | 2020-01-27 | 2024-03-05 | Google Llc | Shared scratchpad memory with parallel load-store |
DE102020201182A1 (de) * | 2020-01-31 | 2021-08-05 | Robert Bosch Gesellschaft mit beschränkter Haftung | Hardwarebeschleunigte Berechnung von Faltungen |
EP4100887A4 (en) * | 2020-03-05 | 2023-07-05 | Huawei Cloud Computing Technologies Co., Ltd. | METHOD AND SYSTEM FOR SHARING AND BITWIDTH ALLOCATION OF DEEP LEARNING MODELS FOR INFERENCE ON DISTRIBUTED SYSTEMS |
US20210295145A1 (en) * | 2020-03-23 | 2021-09-23 | Mentium Technologies Inc. | Digital-analog hybrid system architecture for neural network acceleration |
US12073310B2 (en) * | 2020-04-01 | 2024-08-27 | Microsoft Technology Licensing, Llc | Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations |
US11507817B2 (en) | 2020-04-17 | 2022-11-22 | Samsung Electronics Co., Ltd. | System and method for performing computations for deep neural networks |
CN113568665B (zh) * | 2020-04-29 | 2023-11-17 | 北京希姆计算科技有限公司 | 一种数据处理装置 |
US11501151B2 (en) * | 2020-05-28 | 2022-11-15 | Arm Limited | Pipelined accumulator |
CN113806246A (zh) * | 2020-06-16 | 2021-12-17 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
US20220004399A1 (en) * | 2020-07-03 | 2022-01-06 | Mediatek Inc. | Dynamic loading neural network inference at dram/on-bus sram/serial flash for power optimization |
US11556312B2 (en) | 2020-07-10 | 2023-01-17 | International Business Machines Corporation | Photonic in-memory co-processor for convolutional operations |
US11954580B2 (en) | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
US20220114440A1 (en) * | 2020-10-14 | 2022-04-14 | Google Llc | Queue Allocation in Machine Learning Accelerators |
US11704562B1 (en) | 2020-11-04 | 2023-07-18 | Meta Platforms, Inc. | Architecture for virtual instructions |
US11709783B1 (en) | 2020-11-11 | 2023-07-25 | Meta Platforms, Inc. | Tensor data distribution using grid direct-memory access (DMA) controller |
US11972349B1 (en) | 2020-11-12 | 2024-04-30 | Meta Platforms, Inc. | Flexible compute array utilization in a tensor processor |
KR102673748B1 (ko) * | 2020-11-27 | 2024-06-10 | 한국전자통신연구원 | 다차원 직접 메모리 접근 컨트롤러 및 그것을 포함하는 컴퓨터 시스템 |
JP7485086B2 (ja) | 2020-12-10 | 2024-05-16 | 日本電信電話株式会社 | 命令処理方法及び命令処理回路 |
US20220198249A1 (en) * | 2020-12-18 | 2022-06-23 | Hewlett Packard Enterprise Development Lp | Execution of neural networks |
US12001893B1 (en) | 2020-12-28 | 2024-06-04 | Meta Platforms, Inc. | Distributed synchronization scheme |
US11922306B2 (en) | 2020-12-28 | 2024-03-05 | Meta Platforms, Inc. | Tensor controller architecture |
US11790611B2 (en) | 2020-12-30 | 2023-10-17 | Meta Platforms, Inc. | Visual editor for designing augmented-reality effects that utilize voice recognition |
US11477007B1 (en) * | 2021-04-13 | 2022-10-18 | International Business Machines Corporation | Packing arbitrary tensors into tiles with descriptive shapes |
US11656909B2 (en) | 2021-04-15 | 2023-05-23 | National Taiwan University | Tensor accelerator capable of increasing efficiency of data sharing |
CN114004347A (zh) | 2021-08-30 | 2022-02-01 | 平头哥(上海)半导体技术有限公司 | 用于加速图神经网络属性访问的硬件加速器、系统和方法 |
US11966745B2 (en) | 2021-11-15 | 2024-04-23 | Google Llc | Sparse SIMD cross-lane processing unit |
US11972263B2 (en) | 2021-11-22 | 2024-04-30 | Google Llc | Cooperative instruction prefetch on multicore system |
KR102700292B1 (ko) * | 2021-11-26 | 2024-08-29 | 건국대학교 산학협력단 | 신경망 가속기의 통신 특성을 동적으로 재구성하는 프로세서 장치, 및 그의 구동 방법 |
WO2023139990A1 (ja) * | 2022-01-24 | 2023-07-27 | LeapMind株式会社 | ニューラルネットワーク回路およびニューラルネットワーク演算方法 |
US11977499B2 (en) * | 2022-03-22 | 2024-05-07 | Google Llc | Streaming transfers and ordering model |
CN114781632B (zh) * | 2022-05-20 | 2024-08-27 | 重庆科技大学 | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 |
US12045612B2 (en) | 2022-09-12 | 2024-07-23 | International Business Machines Corporation | Special-purpose digital-compute hardware for efficient element-wise aggregation, scaling and offset |
CN115586885B (zh) * | 2022-09-30 | 2023-05-05 | 晶铁半导体技术(广东)有限公司 | 一种存内计算单元和加速方法 |
WO2024185925A1 (ko) * | 2023-03-06 | 2024-09-12 | 주식회사 유엑스팩토리 | 컨볼루션 신경망 시스템 |
US11886974B1 (en) * | 2023-07-20 | 2024-01-30 | Chromatic Inc. | Neural network chip for ear-worn device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201617977A (zh) * | 2014-07-22 | 2016-05-16 | 英特爾股份有限公司 | 用於卷積神經網路的權重位移機構 |
TW201640422A (zh) * | 2014-12-19 | 2016-11-16 | 英特爾股份有限公司 | 用於在類神經網路中協同式及分散式計算的方法及設備 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03121581A (ja) * | 1989-10-04 | 1991-05-23 | Olympus Optical Co Ltd | 文字読取装置 |
JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US5958048A (en) | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
JP2001117900A (ja) | 1999-10-19 | 2001-04-27 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置 |
GB2359641B (en) | 2000-02-25 | 2002-02-13 | Siroyan Ltd | Mapping circuitry and method |
WO2001090888A1 (en) | 2000-05-23 | 2001-11-29 | Theis Jean Paul | A data processing system having an address generation unit with hardwired multidimensional memory indexing support |
US7117421B1 (en) * | 2002-05-31 | 2006-10-03 | Nvidia Corporation | Transparent error correction code memory system and method |
US6952821B2 (en) | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
US7107199B2 (en) | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
US7047480B2 (en) * | 2002-11-12 | 2006-05-16 | Microsoft Corporation | Matrix multiplication in a Galois field for forward error correction |
US7225439B2 (en) | 2003-03-21 | 2007-05-29 | Sun Microsystems, Inc. | Combining write-barriers within an inner loop with fixed step |
CN1259617C (zh) | 2003-09-09 | 2006-06-14 | 大唐微电子技术有限公司 | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 |
CN100520714C (zh) | 2005-01-25 | 2009-07-29 | Nxp股份有限公司 | 多线程处理器 |
US8806183B1 (en) | 2006-02-01 | 2014-08-12 | Ixys Ch Gmbh | Blank bit and processor instructions employing the blank bit |
US8904155B2 (en) | 2006-03-17 | 2014-12-02 | Qualcomm Incorporated | Representing loop branches in a branch history register with multiple bits |
US8438365B2 (en) | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
ATE463788T1 (de) | 2007-06-26 | 2010-04-15 | Ericsson Telefon Ab L M | Datenverarbeitungseinheit für anweisungen in geschachtelten schleifen |
US20100122066A1 (en) | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
CA2684226A1 (en) | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
US10803009B2 (en) | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
US9507593B2 (en) | 2011-12-23 | 2016-11-29 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
US9165243B2 (en) * | 2012-02-15 | 2015-10-20 | Microsoft Technology Licensing, Llc | Tensor deep stacked neural network |
US9292787B2 (en) * | 2012-08-29 | 2016-03-22 | Microsoft Technology Licensing, Llc | Computer-implemented deep tensor neural network |
US20140181171A1 (en) | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
US20140188961A1 (en) | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
US9035946B1 (en) | 2014-02-13 | 2015-05-19 | Raycast Systems, Inc. | Computer hardware architecture and data structures for triangle binning to support incoherent ray traversal |
CN105260322B (zh) | 2014-06-30 | 2020-09-01 | 中兴通讯股份有限公司 | 一种对循环缓冲区消除循环移位的方法和装置 |
US9830193B1 (en) * | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
CN105184366B (zh) * | 2015-09-15 | 2018-01-09 | 中国科学院计算技术研究所 | 一种时分复用的通用神经网络处理器 |
US10380479B2 (en) * | 2015-10-08 | 2019-08-13 | International Business Machines Corporation | Acceleration of convolutional neural network training using stochastic perforation |
US10353861B2 (en) * | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Mechanism for communication between architectural program running on processor and non-architectural program running on execution unit of the processor regarding shared resource |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US11170294B2 (en) * | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US9875104B2 (en) | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
CN105892989B (zh) * | 2016-03-28 | 2017-04-12 | 中国科学院计算技术研究所 | 一种神经网络加速器及其运算方法 |
CN108416436B (zh) * | 2016-04-18 | 2021-06-01 | 中国科学院计算技术研究所 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
US11120329B2 (en) * | 2016-05-07 | 2021-09-14 | Intel Corporation | Multicast network and memory transfer optimizations for neural network hardware acceleration |
US10817802B2 (en) * | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
US10387771B2 (en) * | 2016-05-26 | 2019-08-20 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
US10498855B2 (en) * | 2016-06-17 | 2019-12-03 | Cisco Technology, Inc. | Contextual services in a network using a deep learning agent |
CN106485317A (zh) * | 2016-09-26 | 2017-03-08 | 上海新储集成电路有限公司 | 一种神经网络加速器以及神经网络模型的实现方法 |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
CN106557332A (zh) * | 2016-11-30 | 2017-04-05 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置 |
CN106875011B (zh) * | 2017-01-12 | 2020-04-17 | 南京风兴科技有限公司 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN106909970B (zh) * | 2017-01-12 | 2020-04-21 | 南京风兴科技有限公司 | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置 |
GB2568776B (en) | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
-
2018
- 2018-08-07 GB GB1812820.7A patent/GB2568776B/en active Active
- 2018-08-09 JP JP2019568100A patent/JP7171622B2/ja active Active
- 2018-08-09 US US16/059,686 patent/US10504022B2/en active Active
- 2018-08-09 KR KR1020197036387A patent/KR102456464B1/ko active IP Right Grant
- 2018-08-09 KR KR1020247013902A patent/KR20240060857A/ko active Application Filing
- 2018-08-09 KR KR1020227035835A patent/KR102662211B1/ko active IP Right Grant
- 2018-08-09 EP EP18762676.7A patent/EP3665622A1/en active Pending
- 2018-08-09 WO PCT/US2018/045974 patent/WO2019032808A1/en unknown
- 2018-08-10 TW TW107127941A patent/TWI679590B/zh active
- 2018-08-10 TW TW109102859A patent/TWI737145B/zh active
- 2018-08-10 DE DE202018104609.8U patent/DE202018104609U1/de active Active
- 2018-08-10 DE DE102018119513.3A patent/DE102018119513A1/de active Pending
- 2018-08-10 CN CN201810908471.0A patent/CN109389214A/zh active Pending
-
2019
- 2019-09-12 US US16/569,607 patent/US11501144B2/en active Active
-
2022
- 2022-11-02 JP JP2022176493A patent/JP7546640B2/ja active Active
- 2022-11-10 US US17/985,061 patent/US11727259B2/en active Active
-
2023
- 2023-06-30 US US18/217,107 patent/US20240078417A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201617977A (zh) * | 2014-07-22 | 2016-05-16 | 英特爾股份有限公司 | 用於卷積神經網路的權重位移機構 |
TW201640422A (zh) * | 2014-12-19 | 2016-11-16 | 英特爾股份有限公司 | 用於在類神經網路中協同式及分散式計算的方法及設備 |
Non-Patent Citations (1)
Title |
---|
Ando, K., Ueyoshi, K., Orimo, K., Yonekawa, H., Sato, S., Nakahara, H., ... & Motomura, M. (2017, June). BRein memory: A 13-layer 4.2 K neuron/0.8 M synapse binary/ternary reconfigurable in-memory deep neural network accelerator in 65 nm CMOS. In 2017 Symposium on VLSI Circuits (pp. C24-C25). IEEE. 2017/06/05 https://ieeexplore.ieee.org/document/8008533 * |
Also Published As
Publication number | Publication date |
---|---|
JP7546640B2 (ja) | 2024-09-06 |
KR102456464B1 (ko) | 2022-10-19 |
US20230162015A1 (en) | 2023-05-25 |
JP2020532780A (ja) | 2020-11-12 |
KR102662211B1 (ko) | 2024-05-07 |
CN109389214A (zh) | 2019-02-26 |
US20200005128A1 (en) | 2020-01-02 |
TW202044124A (zh) | 2020-12-01 |
US20240078417A1 (en) | 2024-03-07 |
US11501144B2 (en) | 2022-11-15 |
KR20200005638A (ko) | 2020-01-15 |
US20190050717A1 (en) | 2019-02-14 |
US10504022B2 (en) | 2019-12-10 |
JP7171622B2 (ja) | 2022-11-15 |
KR20220143969A (ko) | 2022-10-25 |
JP2023022028A (ja) | 2023-02-14 |
WO2019032808A1 (en) | 2019-02-14 |
EP3665622A1 (en) | 2020-06-17 |
GB2568776A (en) | 2019-05-29 |
GB201812820D0 (en) | 2018-09-19 |
KR20240060857A (ko) | 2024-05-08 |
TW201911140A (zh) | 2019-03-16 |
GB2568776B (en) | 2020-10-28 |
US11727259B2 (en) | 2023-08-15 |
DE102018119513A1 (de) | 2019-02-14 |
TWI679590B (zh) | 2019-12-11 |
DE202018104609U1 (de) | 2018-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737145B (zh) | 具有常駐在晶片上之參數的神經網路加速器 | |
US11816480B2 (en) | Neural network compute tile | |
EP4004730A1 (en) | Redistributing tensor elements between machine learning computing units | |
WO2022139795A1 (en) | Preemption in a machine learning hardware accelerator | |
CN115244909A (zh) | 机器学习加速器中的队列分配 | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 |