TWI754310B - 純函數語言神經網路加速器系統及電路 - Google Patents
純函數語言神經網路加速器系統及電路 Download PDFInfo
- Publication number
- TWI754310B TWI754310B TW109121403A TW109121403A TWI754310B TW I754310 B TWI754310 B TW I754310B TW 109121403 A TW109121403 A TW 109121403A TW 109121403 A TW109121403 A TW 109121403A TW I754310 B TWI754310 B TW I754310B
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- command
- memory
- data
- accelerator
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title description 14
- 230000015654 memory Effects 0.000 claims abstract description 145
- 239000011159 matrix material Substances 0.000 claims description 75
- 210000002569 neuron Anatomy 0.000 claims description 63
- 239000000872 buffer Substances 0.000 claims description 44
- 210000004027 cell Anatomy 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 22
- 238000012546 transfer Methods 0.000 claims description 20
- 230000004888 barrier function Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 14
- 230000007423 decrease Effects 0.000 claims description 7
- 238000004091 panning Methods 0.000 claims description 2
- 238000009825 accumulation Methods 0.000 claims 1
- 238000005192 partition Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 description 12
- 239000013598 vector Substances 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
Abstract
一種加速器電路,包括用以接收指令串流的控制介面、用以儲存輸入資料的第一記憶體、以及引擎電路,引擎電路包括用以將指令串流的指令解碼成複數個命令的調度電路、複數個佇列電路、以及複數個命令執行電路,複數個佇列電路的每一個支援佇列資料結構以儲存從指令解碼的複數個命令中的各自命令,複數個命令執行電路的每一個接收並執行取自複數個佇列的相對應佇列的命令。
Description
本揭露內容與硬體處理器電路以及加速器電路有關,且特別地,與可執行純函數指令的處理器電路以及加速器電路有關。
處理器是一種實施含有在資料元件上操作的指令的指令集架構(ISA)的硬體處理裝置(例如,中央處理單元(CPU)或圖形處理單元(GPU))。張量處理器可實施含有在含有資料元件的張量上操作的指令的ISA。張量是含有有序純量資料元件的多向資料結構。藉由在含有複數個資料元件的張量上操作,張量處理器可在只在單一資料元件上支援純量指令操作的純量處理器上達成顯著的效能改進。
102:處理器(CPU)
104:加速器電路
106:介面電路
108:記憶體
110:處理器(CPU)
112:指令集架構
114:主系統
116:從屬系統
118:系統介面
200:加速器電路
202:引擎
204:控制介面
206:系統匯流排主埠
208:高速從屬埠
210:中斷控制器
212:性能監視器
302:指令
304:調度邏輯
308:DMA(直接記憶體存取)輸入命令
306:神經元矩陣命令
310:DMA輸出命令
312:神經元矩陣命令佇列
314:DMA輸入命令佇列
316:DMA輸出命令佇列
318:神經元矩陣
320:DMA輸入
322:DMA輸出
324:區域記憶庫參考板
326:區域記憶庫
604:尺寸計數器
606:Fmap饋送器
608:核心饋送器
610:Psum饋送器
612:區域記憶庫0-9
614:寫入器
616:純量暫存器0-7
ISA:指令集架構
CPU:中央處理單元
GPU:圖形處理單元
DMA:直接記憶體存取
AXI:高級可擴充介面
從下面給出的實施方式以及從本揭露內容各種實施方式的所附圖式將更完全地了解本揭露內容。然而,圖式不應被視為將本揭露內容限制於具體實施方式,但僅用於解釋以及了解。
圖1根據本揭露內容的一個實施方式示例了一種包括加速器電路的系統。
圖2根據本揭露內容的一個實施方式示例了一種加速器電路的示意圖。
圖3根據本揭露內容的一個實施方式示例了一種引擎電路的示意圖。
圖4根據本揭露內容的一個實施方式示例了一種區域記憶體參考板的示意圖。
圖5根據本揭露內容的一個實施方式示例了一種計算胞元的矩陣。
圖6根據本揭露內容的一個實施方式示例了一種計算胞元的示意圖。
處理器,特別是,張量處理器,可用以執行複雜的計算,例如,神經網路應用。神經網路被廣泛地用於人工智慧(AI)應用中。在此揭露內容中的神經網路是可在電路上實施以基於輸入資料做出決定的人工神經網路。神經網路可包括一或更多層的節點。層可為輸入層、隱藏層或輸出層的任何一者。
輸入層可包括曝露至輸入資料的節點,且輸出層可包括曝露至輸出的節點。輸入層以及輸出層是可見層,因為它們可從神經網路外面觀察到。在輸入層以及輸出層之間的層稱為隱藏層。隱藏層可包括在硬體中實施的節點,以執行從輸入層傳播至輸出層的計算。可使用共同的預定函數集來執行計算,例如,濾波函數以及激活函數。濾波函數可包括乘法運算以及求和(也稱為歸約)運算。激活函數可為全通函數、S型函數(sig)、或雙曲正切函數(tanh)的其中任何一個。
在一些實施方式中,CPU可委派GPU以執行與神經網路或其他的計算密集型工作有關的計算。在其他的實施方式中,可實施耦合至CPU的加速器電路以接管GPU的工作量。加速器電路可包括製造用於神經網路計算的加速計算的特殊用途硬體電路系統。雖然加速器電路目前是在雲端或在裝置端實施,相較於GPU可以相對較低的成本執行高性能計算,相較於GPU,這些加速器電路的實施方式不與CPU的程式設計介面整合,且因此更難以由程式設計師除錯。
為了克服上述識別的問題以及目前加速器電路實施方式的其他的缺陷,本揭露內容提供包括在純函數框架內、允許加速器電路的直接程式設計以及除錯方便的加速器電路的實施方式技術解決方案。純函數框架處理類似於數學函數評估的所有計算。藉由定義,純函數框架保證框架內指令執行的結果只取決於其自變數,無論任何全域或區域狀況的狀態。因此,在框架內的指令執行結果是由輸入值決定。
純函數框架的架構實施方式提供了特定的技術特徵。在框架內的所有指令是可作為純函數處理的記憶體至記憶體的指令。記憶體至記憶體指令從第一記憶體檢索資料、處理資料、並將資料轉移至第二記憶體,其中第一記憶體以及第二記憶體可為相同的(或在相同的記憶體位置)或不同的記憶體。框架內的指令可為單一純函數指令、或從單一純函數指令建構出的複合純函數。在框架內的指令可被同時執行,以隱藏記憶體存取的階段。CPU直接控制並監控指令執行的流程。框架可提供允許加速器電路與由CPU或由其他系統(例如,從屬系統)中的其他加速器電路所執行的其他程式配合地工作的客戶調用指令。框架也可在沒有編譯器最佳化的情況下允許指令的直接加速。此外,框架可允許遲緩評估(即,當需要時函數的評估)以及貝他歸約(即,使用表達式輸入來計算結果)。在有遲緩評估以及貝他歸約的情況下,框架可達到資料局部性(即,將計算移動至接近資料位在節點上的地方、而非將大量的資料移動至計算位置的能力)。框架使得指令的控制流程以及加速器電路的行為可經由CPU所執行的程式來觀察到,而沒有外部狀態所發揮的作用。因為純函數的特徵,這確保了性能在所給定的環境中是可靠且可預測,因此使程式設計師較容易將他們的應用程式除錯。
框架可提供包括互連(非分離)計算單元電路的加乘累積(multiplication-addition-cumulation,MAC)矩陣電路。CPU可重複使用MAC矩陣電路以用於卷積、點乘積、集用以及整流線性單位函數(ReLU)計算。框架可允許四維組織化區域資料佈局以及三維組織化MAC矩陣,以進一步加強系統的能力。
CPU可執行針對朝向加速器電路的指令。在一個實施方式中,指令可被建構以包括四個(4)部分:操作部分、總體資訊部分、局部資訊部分以及內部記憶體分配部分。操作部分可具體說明加速器電路將要執行的功能性。具體而言,操作部分可包括具體說明加乘累積(MAC)、最大集用、或整流線性單位函數(ReLU)計算其中一者的計算欄位。
總體資訊部分可具體說明影響張量資料作為整體的參數值,例如起始點、寬度、高度等等。總體資訊可包括四個張量,包括輸入特徵映射(基數、總體寬度,面積=總體寬度*總體高度)、核心(基數、核心寬度、核心高度、核心面積=核心寬度*核心高度,輸入核心大小=核心寬度*核心高度*總體輸入頻道)、部分總和(基數、總體寬度(與輸出共享)、總體寬度*總體高度(與輸出共享))以及輸出特徵映射(基數、總體寬度、總體寬度*總體高度)以及元資料基數。
局部資訊部分可具體說明與張量資料的分割相關聯的尺寸值,例如,分割寬度、分割高度、與分割相關聯的頻道數目等等。此外,局部資訊部分可具體說明硬體執行偏好,以允許指令在特定尺寸上選擇平行執行。局部資訊可包括四個張量,包括與輸出特徵映射共享的部分總和(減退抽樣之前的寬度、局部寬度、局部寬度*局部高度、局部輸出頻道)、核心映射(輸入核心映射大小=核心寬度*核心高度*局部輸入頻道)、輸入特徵映射(差量寬度=輸入局部寬度–輸出局部寬度、差量高度=輸入局部高度–輸出局部高度、局部輸入頻道)以及硬體分割(計算單元的分割)。
內部記憶體分配部分可具體說明用於指令的記憶庫。內部記憶體分配可包括區域記憶庫識別碼,其中每個識別碼是運算元,例如,輸入特徵映射、邊界特徵映射、核心映射、部分總和映射以及輸出特徵映射作為張量、向量或純量庫。內部記憶體分配資訊也可包括用以結合指令以形成新的複合純函數、同時節省不必要的資料轉移的再用旗標以及無同步化旗標。內部記憶體分配資訊也可包括區域記憶體資料類型以在區域記憶體中指出運算元的資料類型。
每個指令的執行可包括直接記憶體存取(DMA)輸入、計算、以及DMA輸出的三個階段。在DMA輸入階段中,加速器電路可使用DMA模式直接將資料從外部記憶體載入至與加速器電路相關聯的區域記憶體。在計算階段中,加速器電路可從來源位置從區域記憶體讀取資料、執行計算,並將結果寫入回區域記憶體至區域記憶體中的目的位置。在DMA輸出階段中,加速器電路可在DMA模式中將儲存在區域記憶體中的結果資料轉移至外部記憶體。
在一個實施方式中,框架可允許虛擬指令的執行。虛擬指令是對大小參數(例如,寬度、長度、或頻道的數目)不具有限制的指令。這可藉由移除局部資訊部分來達成。內部記憶體分配可被延伸至較大數目的記憶庫,且每個記憶庫將會支援資料的總體大小的保持。
圖 1
根據本揭露內容的一個實施方式示例了一種包括加速器電路的系統100。系統100可包括主系統114以及從屬系統116。在一個實施方式中,主系統114以及從屬系統116可被配置具有相同的組件,且可整合主與從屬的角色。替代地,從屬系統116可被配置具有主系統114組件的子集,以支援由主系統114執行的計算。在另一個實施方式中,系統100可以只包括獨立主系統114而沒有從屬系統116。
系統114可包括硬體處理器(例如,CPU或GPU)102、加速器電路104以及將處理器102通訊地連接至加速器電路104的介面電路106。此外,系統114可包括在加速器電路104的外部用於儲存資料的記憶體108。
在一個實施方式中,系統114可為計算系統或單晶片系統(SoC)。處理器102可為硬體處理器,例如中央處理單元(CPU)、圖形處理單元(GPU)、或任何適合類型的處理裝置。處理器102可包括指令執行管線(未示出)、暫存檔案(未示出)以及根據指令集架構(ISA)具體說明的電路實施指令。
在一個實施方式中,處理器102可為包括向量/張量指令執行管線(未示出)、向量/張量暫存檔案(未示出)、以及根據向量/張量指令集架構(ISA)具體說明的電路實施向量/張量指令的向量/張量處理器。向量/張量指令可在含有特定數目的資料元件的向量/張量上操作。為了簡明的描述,本揭露內容將在本文中把計數器以及向量處理器歸類於處理器。因此,除非另外明確地具體說明,處理器可被了解為計數器處理器或向量處理器。
記憶體裝置108可包括通訊地耦合至處理器102以及加速器電路104的儲存裝置。在一個實施方式中,記憶體裝置108可儲存用於神經網路應用程式的輸入資料以及由神經網路應用程式產生的輸出資料。輸入資料可為包括取自應用資料的特徵值的特徵映射(一或更複數個尺寸),例如,影像資料、語音資料、光達(Lidar)資料等等,且輸出資料可由神經網路決定,其中決定可包括將影像中的物體分成不同類別的分類、影像中物體的識別、或語音中片語的辨識。
加速器電路104可通訊地耦合至處理器102以及記憶體裝置108以使用其中的特殊用途電路來執行計算密集的工作。在下述中,處理器102也可意指加速器電路104的主機。加速器電路104可代表處理器102來執行這些工作。例如,可程式化處理器102以將神經網路應用拆解成複數個(數百或數千個)計算工作,並將這些工作的性能委派至加速器電路104。在由加速器電路104完成這些工作之後,處理器102可接收計算結果作為回報。加速器電路104可為專用積體電路(ASIC)、現場可程式閘陣列(FPGA)、數位訊號處理器(DSP)、網路處理器或諸如此類。在一個實施方式中,在純函數平台內實施加速器電路104,以至於由處理器102發佈至加速器電路104的指令被作為純函數執行。因此,藉由在加速器電路104上執行指令所產生的輸出只取決於輸入值。加速器電路104的純函數實施方式允許程式設計師對於指令執行的控制流程的能見度以及除錯由處理器102所執行的神經元網路應用的能力。結合圖 2
,在下述中提供了加速器電路104的實施方式。
介面電路106可為實施以將指令以及資料從處理器102傳輸至加速器電路104及/或記憶體108的通用匯流排介面。例如,處理器102可利用介面電路106以將指令發佈至加速器電路104,並將控制訊號產生至記憶體108,以造成從記憶體108的DMA讀取以及至記憶體108的DMA寫入。
在特定的情況中,如圖 1
中所示,主系統114的加速器電路104可從從屬系統116請求幫助。主系統114可經由系統介面118被連接至從屬系統116。主系統114的加速器電路104可經由系統介面118將指令發佈至從屬系統116的處理器(CPU、GPU)110及/或將指令直接發佈至從屬系統116的加速器電路112。以此方式,主系統114可使用從屬系統116以進一步加強其計算能力。
圖 2
根據本揭露內容的一個實施示例了一種加速器電路200的示意圖。如圖 2
中所示,加速器電路200可包括引擎電路202、控制介面204、系統匯流排主埠206、中斷控制器210以及性能監視器212。加速器電路200可隨選地包括高速從屬埠208以連接至另一個從屬系統。
引擎電路202可包括指令剖析以及調度電路、異步化命令佇列、神經元矩陣命令執行電路、暫存器以及區域記憶庫。在由處理器(例如,CPU、GPU)發佈的指令方向,引擎電路202可在純函數平台中執行處理器的計算,在這情況之下,由引擎電路202產生的輸出結果只取決於輸入值。由引擎電路202執行的計算可包括卷積、點乘積、ReLU等等。結合圖 3
提供了引擎電路202的詳細描述。
控制介面204可將引擎電路202連接至主機的處理器(CPU、GPU),以至於主機的處理器可將指令發佈至引擎電路202。在一個實施方式中,控制介面204可直接連接至指令執行管線以接收指令以及被引導至引擎電路202的配置資料。在另一個實施方式中,控制介面204連接至主機的通用匯流排系統以接收指令以及被引導至引擎電路202的配置資料。在兩個實施方式中,指令以及被引導至引擎電路202的配置資料可被與引擎電路202相關聯的識別碼識別。回應於接收來自主機處理器的指令,控制介面204可將從處理器接收的指令傳遞至引擎電路202。回應於接收配置資料,控制介面204可設定性能監視器212以及中斷控制器210的配置。
系統匯流排主埠206是用於連接外部記憶體(加速器電路200之外)的介面。外部記憶體可使用直接記憶體存取(DMA)輸入頻道來儲存可被轉移至引擎電路202的區域記憶體的輸入值,並使用DMA輸出頻道將輸出結果從區域記憶體轉移至外部記憶體。DMA輸入/輸出可獨立於主機的處理器在區域記憶體以及主記憶體之間轉移資料,因此降低了施加在主機的處理器上的資料轉移負擔。在一個實施方式中,取決於系統的配置,系統匯流排主埠206可為一或兩個高級可擴充介面(AXI)埠。
高速從屬埠208是用於將加速器電路200的引擎電路202連接至從屬系統的介面。高速從屬埠208可幫助引擎電路202中的內部記憶體以及從屬系統的內部記憶體之間的資料交換,不經由主外部記憶體傳遞,因此達到主系統以及從屬系統之間的低延遲資料傳輸。
性能監視器212可包括電路邏輯以監控與引擎電路202相關聯的不同性能參數。控制介面204可接收可用以設定以及復位要被監控的性能參數的配置資料。性能參數可包括資料傳輸的利用率以及引擎電路202內神經元矩陣命令執行電路的利用率。考慮到頻道頻寬,資料傳輸的利用率可測量在引擎電路202以及外部記憶體之間轉移的資料量。考慮到矩陣中神經元的總數目,神經元矩陣命令執行電路的利用率可測量神經元矩陣命令執行電路內主動神經元數目。性能監視器212可經由控制介面將這些性能參數回饋至主機的處理器。
中斷控制器210可對偵測到與引擎電路202相關聯的高度優先事件已發生做出反應而產生中斷訊號至主機。高度優先事件可包括與引擎電路202相關聯的硬體錯誤(或故障)。其他的高度優先事件可包括命令完成、命令緩衝區已滿或空事件。中斷訊號可被傳輸至主機的中斷處置器,其中中斷處置器可代表主機的處理器進一步處理中斷訊號。例如,中斷處置器可懸置目前由處理器執行的工作,並指導處理器處置該中斷。替代地,中斷處置器可遮蔽中斷訊號而沒有通知處理器。在一個實施方式中,控制介面204可接收用於中斷控制器210的配置資料,並基於配置資料設定中斷控制器210。例如,配置資料可用以設定儲存在中斷狀態暫存器中的旗標。每個旗標可相對應於特定的中斷事件。當旗標被設定時,中斷控制器210可將相對應於中斷事件的中斷訊號轉送至主機。當旗標被復位時,中斷控制器210可忽略中斷事件並拒絕將中斷訊號轉送至主機。
如上所討論,引擎電路202可經由控制介面204從主機的處理器接收指令。一些指令可指導引擎電路202以執行某些計算工作(例如,卷積、點乘積、或ReLU)。其他的指令可在指令執行串流中插入檢查點以經由控制介面204將除錯資訊提供回主機的處理器。
引擎電路是執行資料載入、處理以及儲存工作的加速器電路的部分。為此目的,引擎電路可被實施以具有兩個資訊流程。第一流程(稱為「控制平面」,在圖 3
中使用虛線代表)可管理由控制介面接收的指令串流。第二流程(稱為「資料平面」,在圖 3
中由實線代表)可管理向量/張量的資料元件。
圖 3
根據本揭露內容的一個實施方式示例了一種引擎電路300的示意圖。參見圖 3
,引擎電路300可包括調度邏輯304、神經元矩陣命令佇列312、DMA輸入命令佇列314、DMA輸出命令佇列316、神經元矩陣命令執行電路318、DMA輸入命令執行電路320、DMA輸出指令執行電路322、區域記憶庫參考板324以及區域記憶庫326的硬體組件。對於控制平面,調度邏輯304可從控制介面接收指令302。如上所討論,指令302可包括操作部分、總體資訊部分、局部資訊部分以及內部記憶體分配部分的四個部分。
調度邏輯304可剖析與由主機的處理器發佈的指令串流中的指令相關聯的資訊,並基於從四個部分取得的資訊產生三個用於指令的命令。三個命令可包括DMA輸入命令308、神經元矩陣命令306以及DMA輸出命令310。這三個命令分別相對應於指令執行的DMA輸入階段、計算階段以及DMA輸出階段。調度器邏輯304可將DMA輸入命令308放置於DMA輸入命令佇列314中,將神經元矩陣命令306放置在神經元矩陣命令佇列312中,以及將DMA輸出命令310放置在DMA輸出命令佇列316中。在一個實施方式中,使用儲存在儲存裝置(例如,局部暫存器、區域記憶體)中的堆疊資料結構來實施DMA輸入命令佇列314、神經元矩陣命令佇列312以及DMA輸出命令佇列316。可將DMA輸入命令佇列314、神經元矩陣命令佇列312以及DMA輸出命令佇列316實施為具有登錄數目的(例如,在每個佇列中16個登錄)的先入先出(FiFo)佇列。FiFo佇列確保在三個佇列任何一個中的命令以它們被放置在佇列中的順序被依序地發佈。然而,沒有必要讓源自相同指令的三個命令被同步地執行。因此,即使它們已源自共同的指令,在不同佇列中的命令可以紊亂的順序發佈。也就是說,在來自指令串流中較晚指令的佇列中的命令可比來自指令串流中較早指令的另一佇列中的另一命令更早發佈。三個佇列的利用允許了源自不同指令的不同命令被同時執行。此特徵使資料能夠預先載入(例如,在使用資料的神經元矩陣命令被發佈之前將資料載入至區域記憶庫),因此隱藏了記憶體延遲並改進了引擎電路300的整體性能。
DMA輸入命令執行電路320可接收取自DMA輸入命令佇列314的DMA輸入命令308並執行DMA輸入命令308;神經元矩陣命令執行電路318可接收取自神經元矩陣命令佇列312的神經元矩陣命令306以及執行神經元矩陣命令306;DMA輸出命令執行電路322可接收取自DMA輸出命令佇列316的DMA輸出命令310以及執行DMA輸出命令310。區域記憶庫參考板324可包括邏輯電路以確保雖然指令的DMA輸入命令308、神經元矩陣命令306以及DMA輸出命令310以異步化的方式執行,執行的結果是正確的。
在一個實施方式中,區域記憶庫參考板324可包括實施在硬體中、負責確保具有互鎖相依的命令以正確的順序執行的計數器。區域記憶庫參考板324可產生控制讀取以及寫入操作至區域記憶庫326的訊號。有兩種類型的相依,包括資料相依以及資源相依。資料相依可包括:指令的神經元矩陣命令306可能需要由相同指令的DMA輸入命令308所提供的資料;神經元矩陣命令306可能需要來自相同的神經元矩陣命令執行電路所執行的先前神經元矩陣命令的結果的資料;指令的DMA輸出命令310可能需要來自相同指令的神經元矩陣命令306的資料。資源相依可包括:DMA輸入命令308不能寫入至區域記憶庫,因為記憶庫正被神經元矩陣命令306讀取或正由DMA輸出命令310輸出至外部記憶體;神經元矩陣命令不能寫入至區域記憶庫,因為記憶庫正由DMA輸出命令310輸出至外部記憶體。
圖 4
根據本揭露內容的一個實施示例了一種區域記憶體參考板400的的示意圖。區域記憶體參考板400可包括硬體計數器以基於資料相依以及資源相依來確保命令執行的正確順序。參見圖 4
,區域記憶體參考板400可包括計數器402、404、以及可用以產生控制讀取以及寫入操作至區域記憶庫326的訊號的參考暫存器406、408。
在一個實施方式中,可提供DMA輸入屏障訊號、神經元矩陣屏障訊號以及DMA輸出屏障訊號給區域記憶庫326中的每個記憶庫。這些屏障訊號可決定記憶庫是否可被讀取或寫入。對決定DMA輸入命令執行電路320結束至記憶庫的資料傳輸、指出了對記憶庫有新的讀取參考(或位址指標)做出反應,DMA輸入命令執行電路320可造成計數器402的增量(di_prod_cnt)增加一。對決定神經元矩陣命令執行電路318完成了讀取記憶庫做出反應,神經元矩陣命令執行電路318可造成計數器404的增量(di_cons_cnt)。當儲存在計數器402中的值(di_prod_cnt)等於儲存在計數器404中的值(di_cons_cnt)時,由DMA輸入命令執行電路320產生的參考全被神經元矩陣命令執行電路318所消耗。在此情況中,神經元矩陣命令執行電路318需要等待更多新的參考。當儲存在計數器402中的值(di_prod_cnt)不匹配儲存在計數器404中的值(di_cons_cnt)時,由DMA輸入命令執行電路320之前所產生的參考尚未被神經元矩陣命令執行電路318消耗,且DMA輸入命令執行電路318需要等待。一個特殊的情況是,當與記憶庫相關聯的再用旗標被設定時,DMA輸入命令執行電路320可造成計數器402的增量,而不等待所有的先前參考被消耗。這允許了事先執行更多DMA輸入命令。
當DMA輸入命令執行電路320開始保留對於記憶庫的存取權用於節省計算結果時,DMA輸入命令執行電路320可設定參考暫存器406(nr_w_ref)。這標記了指令執行的起始點。當計算結果被存至記憶庫時,參考暫存器406可被神經元矩陣命令執行電路318清除。DMA輸入命令執行電路320或神經元矩陣命令執行電路318可設定參考暫存器408(do_r_ref),指出儲存在記憶庫中的資料正被轉移至外部記憶體。DMA輸出命令執行電路322可清除參考暫存器408,指出資料已被轉移出至外部記憶體,且記憶庫被釋放。
計數器402、404以及參考暫存器406、408被提供給每個區域記憶庫。因此,在執行之前,所有的命令必須檢查所有的屏障訊號。如圖 4
中所示,DMA輸入屏障訊號是由下述任一條件設定:(1)di_prod_cnt == di_cons_cnt;或rn_w_ref被設定成1;或do_r_ref被設定成1。如果di_prod_cnt != di_cons_cnt,則設定神經元矩陣屏障訊號。DMA輸出屏障訊號是由下述任一條件設定:(1)nr_w_ref = 1;或(2)do_r_ref = 0。屏障訊號可防止相對應命令的執行。例如,當DMA輸入屏障訊號被設定時,DMA命令執行電路320可懸置對記憶庫的存取;當神經元矩陣屏障訊號被設定時,神經元矩陣命令執行電路318可懸置對記憶庫的存取;當DMA輸出屏障訊號被設定時,DMA輸出命令執行電路322可懸置對記憶庫的存取。
圖 4
中所示的範例實施方式只包括一個神經元矩陣命令執行電路以及一個DMA輸出命令執行電路。因此,參考暫存器406、408只包括可被設定成一或復位成零的一個位元旗標。其他的實施方式可包括多於一個神經元矩陣命令執行電路或多於一個DMA輸出命令執行電路,計數器(像那些402、404)可代替位元旗標被使用。
參見圖 3
,有兩個用於與引擎電路相關聯的資料平面的資料流。主動資料流可包括藉由執行DMA輸入命令308檢索從外部記憶體至區域記憶庫326的資料、由神經元矩陣命令執行電路處理資料以及將資料儲存回區域記憶庫326,以及藉由執行DMA輸出命令322將資料寫出至外部記憶體。主動資料流是由引擎電路300控制,所有的請求是由引擎電路300發佈。被動資料流包括為了神經元矩陣命令執行電路318流動以檢索來自內部記憶體的資料並將結果儲存在內部記憶體中的資料。
神經元矩陣命令執行電路可執行在指令的操作部分中由操作碼(運算碼)具體說明的操作。神經元矩陣命令執行電路可包括計算胞元的矩陣以及屏障訊號控制邏輯。圖 5
根據本揭露內容的一個實施示例了一種計算胞元500的矩陣。矩陣可為沿著x以及y維度具有相同數目的胞元的正方形矩陣或沿著x以及y維度具有不相等數目的胞元的長方形矩陣。如圖 5
中所示,在二維陣列內的胞元在水平(x)以及垂直(y)維度中連接。每個胞元可包括一組尺寸計數器、饋送器電路、寫入器電路、計算單元陣列以及一組區域記憶庫。因此,其中每個胞元包括計算單元陣列的胞元矩陣特別適合用於執行張量計算。張量資料物體是沿著三維編入索引的資料立方體,而陣列物體是沿著二維編入索引的資料陣列。
每個計算胞元可被配置用以使用於其中的計算單元陣列來執行向量操作。圖 6
根據本揭露內容的一個實施方式示例了一種計算胞元600的示意圖。參見圖 6
,計算胞元600可包括計算單元陣列(每個單元由U代表)602以及控制邏輯電路。控制邏輯電路可包括尺寸計數器604、三個饋送器電路606、608、610、區域記憶庫612、寫入器電路614以及定標器暫存器616。計算胞元600可基於神經元矩陣命令以及被引導至胞元的神經元矩陣屏障訊號在儲存於區域記憶體中的資料上操作。每個計算單元是可在一或更複數個控制訊號的控制下執行一種類型的計算的單一電路區塊。可將控制訊號分成兩個群組。第一群組的控制訊號是由解碼神經元矩陣命令產生,且獨立於胞元的內部元件,在某種意義上而言,一旦神經元矩陣命令被發佈至神經元矩陣命令執行電路,第一群組的控制訊號被設定。第一群組的控制訊號被施加至所有的計算單元。第二群組的控制訊號是基於儲存在尺寸計數器604中的值由第一饋送器電路606(Fmap饋送器)於內部動態地產生。第二群組的控制訊號可隨著施加至陣列內不同的計算單元而改變。第二群組的控制訊號可包括,如後所討論,mac_en
、acc_clear_en
、export
、acc_reset_en
等等。當尺寸計數器跨越資料結構(例如,陣列)的界限時,這些控制訊號被致能以執行較高的維度操作例如,3D張量、關於深度、關於點、關於元件等等。第二群組的控制訊號可幫助確保每個計算單元具有具有二維陣列結構的正確輸入/輸出值以及正確計算結果。
尺寸計數器604可用以倒數與計算相關聯的不同尺寸值。在一個實施方式中,可將神經元矩陣屏障訊號提供至尺寸計數器604用於賦能或去能計算胞元。如果神經元矩陣屏障訊號被設定(例如,成1),尺寸計數器可被去能以及防止由神經元矩陣命令存取。如果神經元矩陣屏障訊號未被設定(例如,在0),尺寸計數器可由神經元矩陣命令初始化。神經元矩陣命令可提供尺寸計數器代表輸入資料(稱為特徵資料)以及濾波器資料(稱為核心)的高度以及寬度的初始值。計算是用以使用卷積將濾波器(例如,高/低通濾波器)應用至輸入資料(例如,2D影像)上。
尺寸計數器604可包括核心寬度計數器、核心高度計數器、輸入頻道計數器、輸入面積計數器(輸入的高度及/或寬度)以及輸出頻道計數器。核心寬度計數器以及核心高度計數器可儲存核心的寬度以及高度。輸入頻道計數器可具體說明從記憶庫檢索資料的次數。對於特定的計算,因為計算單元的大小限制,可能有需要檢索輸入資料多次。大特徵映射可被分割成被分開處理的較小部分。在這樣的情況中,頻道計數器可儲存與特徵映射相關聯的部分的數目。輸出頻道計數器可具體說明記憶庫以接收輸出結果。例如,輸出頻道計數器可儲存在這些特徵映射部分上執行卷積計算的次數。計算的總量可與核心寬度*核心高度*分割計數器*輸入頻道計數器*輸出頻道計數器成比例。
儲存在尺寸計數器中的值可被饋送至饋送器電路606、608、610。饋送器電路606(Fmap饋送器)可控制來自區域記憶庫612的輸入資料(特徵映射)的轉移。饋送器電路608(核心饋送器)可控制來自區域記憶庫612的核心的轉移。饋送器電路610(Psum饋送器)可控制區域記憶庫612中部分總和值的轉移。饋送器電路606可,基於儲存在尺寸計數器604中的值以及從神經元矩陣命令接收的運算碼,將運算元值(op0s)供應至計算單元以及控制訊號mac_en
、acc_clear
以及export
。可結合饋送器電路608、610以將其他兩個運算元(op1s、op2s)供應至計算單元。饋送器電路610可產生控制訊號acc_reset
。運算元值op0s可為可從其檢索特徵映射的區域記憶庫的參考;運算元值op1s可為提供核心的區域記憶庫的參考;運算元值op2s可為用於儲存部分總和的區域記憶庫的參考。
可基於儲存在尺寸計數器中的值來賦能以及去能控制訊號。當核心寬度計數器或核心高度計數器儲存非零的值時,饋送器電路606可設定mac_en
訊號、觸發加乘累積(MAC)操作。當在核心寬度計數器中的值減少時,饋送器電路606可賦能平移至西邊的訊號,造成在計算單元陣列602中的值平移至西方(N、S、E、W如中所示圖 6
分別代表北、南、東、西方向)。當核心高度計數器中的值減少時,饋送器電路606可賦能平移至北邊的訊號,造成在計算單元陣列602中的值平移至北方。當輸入頻道計數器中的值減少時,饋送器電路606可賦能特徵映射就緒訊號,指出特徵映射已準備好由計算單元陣列讀取用於計算。當輸入面積計數器中的值減少時,饋送器電路606可賦能acc_clear
以及export
訊號,造成來自計算單元的結果匯出至區域記憶庫以及計算單元中累加器的清除。
饋送器電路(Fmap饋送器)控制了特徵映射資料以及邊界特徵映射資料的運算元從區域記憶庫至四種類型的緩衝器中的轉移。四種類型的緩衝器可包括用於供應op0s至計算單元的運算元緩衝器、用於供應東鄰近資料值至保持運算元緩衝器的區域的東邊界緩衝器、用於供應南鄰近資料值至保持運算元緩衝器的區域的南邊界緩衝器、以及用於供應東鄰近資料值至保持南邊界緩衝器的區域的角落(或東南)邊界緩衝器。
可在三個(3)級別中實施運算元緩衝器以及東邊界緩衝器。級別0緩衝器是用於Fmap饋送器以(從區域記憶庫)檢索資料至級別0緩衝器;級別1緩衝器是用以保持用於向北平移的資料;級別2緩衝器是用以保持用於向東平移的資料。當特徵映射就緒訊號第一次被賦能時,Fmap饋送器將資料讀取至級別0緩衝器中,且Fmap饋送器可將級別0緩衝器中的資料值推送至級別1緩衝器,並當特徵映射就緒訊號被再次賦能時釋放用於載入下一個區塊的資料的級別0緩衝器。儲存在級別2緩衝器中的資料值對賦能平移至西邊的訊號做出反應而被平移至西邊。Fmap饋送器可從級別1緩衝器重新載入資料,並對賦能平移至北邊的訊號做出反應而將級別1緩衝器中的資料值平移至北邊一列。雖然多級別緩衝器方案可能需要更多的緩衝器,當有數千個計算單元時,多級別緩衝器方案可顯著地降低連接線的量。每個緩衝器可與位元旗標相關聯,每個位元旗標識別行或列是否是最後一個有效的行或列。當資料被平移至北邊的行或東邊的列時,由大旗標識別為最後一個行或列的行或列最後可被自動地填入零。
可基於輸入面積(跨步:1)、輸入頻道(跨步:四捨五入至胞元高度的倍數的特徵映射高度,其中四捨五入確保在相同位置、來自不同輸入頻道的資料被饋送至相同的單元中)、特徵映射高度計數器、以及輸出頻道來計算存取區域記憶庫612的位址。
核心饋送器可控制用於核心映射運算元的區域記憶庫中的資料轉移。核心饋送器可包括兩個級別的緩衝器,級別0緩衝器保持來自記憶庫的核心元件的列,以及級別1緩衝器保持被廣播至胞元中所有單元的重複元件。
Psum饋送器可控制用於部分總和映射運算元的區域記憶庫中的資料轉移。Psum饋送器可只包括一個級別的緩衝器。
寫入器電路614可控制從計算單元至區域記憶庫中的資料輸出。計算單元可發佈寫入賦能(wen)訊號以賦能寫入器中的啟動單元,然後將啟動單元的輸出寫入至區域記憶體中。啟動單元支援線性、ReLU、S型以及雙曲正切函數。
可以類似於區域記憶庫的方式來定址並參考純量暫存器616。純量暫存器616可儲存可被施加至特徵映射中的元件的純量值。例如,純量暫存器616可儲存可被施加至特徵映射中每個元件的倍數值。
範例1是加速器電路,加速器電路包括用以接收指令串流的控制介面、用以儲存輸入資料的第一記憶體、以及引擎電路,引擎電路包括將指令串流的一個指令解碼成複數個命令的調度電路、複數個佇列電路、以及複數個命令執行電路,複數個佇列電路的每一個支援佇列資料結構以儲存從指令解碼的複數個命令的個別命令,複數個命令執行電路的每一個用以接收並執行取自複數個佇列的相對應佇列的命令。
雖然已關於有限數目的實施方式來描述了本揭露內容,本領域的技術人員將從其領略許多修飾以及變化。所附申請專利範圍旨在涵蓋落在此揭露內容的真實精神與範圍內的所有這樣的修飾以及變化。
設計可經歷各種階段,從創造至模擬至製造。代表一個設計的資料可以許多方式來代表此設計。首先,如同在模擬中有用的是,硬體可使用硬體描述語言或另一個函數描述語言來代表。此外,具有邏輯及/或電晶體閘的電路級別模型可在設計過程的一些階段被製造。此外,大部分的設計,在某個階段,到達了代表硬體模型中各種裝置實體佈置的資料級別。在其中使用傳統半導體製造技術的例子中,代表硬體模型的資料可能是具體說明在存在或缺乏用以製造積體電路的遮罩的不同遮蔽層上的各種特徵的資料。在設計的任何表現中,資料可被儲存在任何形式的機器可讀取媒體中。記憶體或例如碟片之類的磁性或光學儲存可為機器可讀取媒體,以儲存經由光學或電波調變來傳輸的資訊或以另外產生以傳輸這樣的資訊。當指出或攜帶碼或設計的電載波被傳輸至執行電訊號的複製、緩衝或再傳輸的程度時,會做出新的副本。因此,通訊提供者或網路提供者可至少暫時地將例如編碼成載波的資訊之類的文章儲存在有形、機器可讀取的媒體上,體現了本揭露內容實施方式的技術。
如本文中所使用的模組意指硬體、軟體及/或韌體的任何組合。作為範例,模組包括與非暫時性媒體相關聯的硬體,例如微控制器,以儲存被調適以由微控制器執行的碼。因此,在一個實施方式中提及模組,意指硬體,其被具體配置用以辨識及/或執行要被保持在非暫時媒體上的碼。此外,在另一個實施方式中,模組的使用意指包括碼的非暫時媒體,其被具體調適成由微控制器執行以執行預定的操作。且如同可推斷的,在更另一個實施方式中,用語模組(在此範例中)可意指微控制器以及非暫時媒體的組合。經常被示例為分開的模組邊界通常會不同且有可能會重疊。例如,第一以及第二模組可共享硬體、軟體、韌體或其組合,而可能保留一些獨立的硬體、軟體或韌體。在一個實施方式中,用語邏輯的使用包括硬體,例如電晶體、暫存器,或其他的硬體,例如可程式化邏輯裝置。
在一個實施方式中,用語「被配置用以」的使用意指配置、放在一起、製造、提供用以販售、引進及/或設計裝置、硬體、邏輯或元件,以執行所設計或決定的工作。在此範例中,如果沒有在操作的裝置或其元件是被設計、耦合及/或互連以執行所述設計工作,其仍「被配置用以」執行所設計的工作。如純示例性的範例,邏輯閘可在操作期間提供0或1。但是「被配置用以」提供賦能訊號至時鐘的邏輯閘不包括每個可提供1或0的潛在邏輯閘。反而,邏輯閘是一種以某種方式耦合以在操作期間1或0輸出是用以賦能時鐘的邏輯閘。再次注意,用語「被配置用以」的使用不需要操作,但反而著重在裝置、硬體及/或元件的潛在狀態,其中在潛在狀態中,當裝置、硬體及/或元件正在操作時,裝置、硬體及/或元件被設計以執行特定工作。
此外,在一個實施方式中,片語「以(to)」、「能夠/以(capable of/to)」及/或「可操作用以」的使用意指以這樣的方式設計以以特定方式賦能裝置、邏輯、硬體及/或元件的使用的某些裝置、邏輯、硬體及/或元件。注意,在一個實施方式中,如上「以」、「能夠/以」或「可操作用以」的使用意指裝置、邏輯、硬體及/或元件的潛在狀態,其中裝置、邏輯、硬體及/或元件未被操作,但以這樣的方式設計以以特定方式來賦能裝置的使用。
如本文中所使用的,值包括數目、狀態、邏輯狀態或二進制邏輯狀態的任何已知表示。常常,邏輯位準、邏輯值(logic value)、或邏輯值(logical value)的使用也稱為1以及0,其單純代表二進制邏輯狀態。例如,1意指高邏輯位準以及0意指低邏輯位準。在一個實施方式中,儲存胞元,例如電晶體或快閃胞元,可能能夠保持單一邏輯值或複數個邏輯值。然而,已使用過電腦系統中其他的值代表。例如,十進位數字十也可表示為910的二進制值以及十六進位字母A。因此,值包括能夠被保持在電腦系統中的資訊的任何表示。
此外,狀態可由值或值的部分代表。作為範例,第一值,例如邏輯一,可代表預設或初始狀態,而第二值,例如邏輯零,可代表非預設狀態。此外,在一個實施方式中,用語重設以及設定分別意指預設以及更新值或狀態。例如,預設值潛在地包括高邏輯值,即,重設,而更新值潛在地包括低邏輯值,即,設定。注意可利用任何組合的值以代表任何數目的狀態。
上述提及的方法、硬體、軟體、韌體或碼的實施方式可經由儲存在可由處理元件執行的機器可存取、機器可讀取、電腦可存取或電腦可讀取媒體上的指令或碼來實施。非暫時機器可存取/可讀取媒體包括提供(即,儲存及/或傳輸)為例如電腦或電子系統之類的機器可讀取形式的資訊的任何機制。例如,非暫時機器可存取媒體包括隨機存取記憶體(RAM),例如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電儲存裝置;光學儲存裝置;音響儲存裝置;用於保持從暫時(傳播)訊號(例如,載波、紅外線訊號、數位訊號)接收的資訊的其他形式的儲存裝置;等等,其與可從其接收資訊的非暫時媒體區別。
可將用以設計程式邏輯以執行本揭露內容實施方式的指令儲存在系統的記憶體中,例如DRAM、快取記憶體、快閃記憶體或其他的儲存。此外,指令可經由網路或藉由其他電腦可讀取媒體的方式分布。因此機器可讀取媒體可包括用於儲存或傳輸為機器(例如,電腦)可讀取形式的資訊的任何機制,但不限於軟式磁片、光碟(optical disk)、光碟(Compact Disc)、唯讀記憶體(CD-ROM)以及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可清除可程式化唯讀記憶體(EPROM)、電氣可清除可程式化唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或在經由電、光學、音響或其他形式的傳播訊號(例如,載波、紅外線訊號、數位訊號,等等)在網際網路上的資訊傳輸中使用的有形機器可讀取儲存。因此,電腦可讀取媒體包括適合用於儲存或傳輸為機器(例如,電腦)可讀取形式的電子指令或資訊的任何類型的有形機器可讀取媒體。
此說明書從頭到尾對於「一個(one)實施方式」或「一(an)實施方式」的參考意指與實施方式有關的所述特定特徵(feature)、結構或特徵(characteristic)被包括在本揭露內容的至少一個實施方式中。因此,在此說明書從頭到尾各處中的片語「在一個(one)實施方式中」或「在一(an)實施方式中」的出現不一定全部意指相同的實施方式。此外,可以任何適合的方式將特定的特徵(feature)、結構、或特徵(characteristic)結合在一或更複數個實施方式中。
在前述的說明書中,已參照特定的範例實施方式給出了詳細的描述。然而,將明顯的是,可對其做出各種修飾以及改變,而不悖離如所附申請專利範圍中所提及的本揭露內容的較廣精神與範圍。因此,說明書以及圖式要以示例性的概念而非限制性的概念來看待。此外,前述實施方式以及其他示範性的語言的使用不一定意指相同的實施方式或相同的範例,但可意指不同且有區別的實施方式,以及潛在相同的實施方式。
200:加速器電路
202:引擎
204:控制介面
206:系統匯流排主埠
208:高速從屬埠
210:中斷控制器
212:性能監視器
DMA:直接記憶體存取
AXI:高級可擴充介面
Claims (20)
- 一種加速器電路,包括:用以接收一指令串流的一控制介面;用以儲存一輸入資料的一第一記憶體;以及一引擎電路,通訊地耦合至該控制介面以及該第一記憶體,該引擎電路包括:用以將該指令串流中的一指令解碼成複數個命令的一調度電路;複數個佇列電路,該複數個佇列電路的每一個支援一佇列資料結構以儲存從該指令解碼的該複數個命令中的各自命令;以及複數個命令執行電路,該複數個命令執行電路的每一個接收並執行取自該複數個佇列的相對應佇列的一命令,其中從該指令解碼的該複數個命令以一異步化的方式執行。
- 如請求項1所述的加速器電路,其中該複數個命令執行電路要執行從該指令解碼的該複數個命令而不同步化。
- 如請求項1或請求項2所述的加速器電路,其中該複數個佇列電路的每一個支援該佇列資料結構以儲存從該指令串流解碼的一連串命令,以及其中該複數個命令執行電路的每一個要接收並依序地執行取自該複數個佇列中的相對應佇列的該連串命令。
- 如請求項1所述的加速器電路,其中該指令包括一操作部分以具體說明由該加速器電路執行的一操作、一總體資訊部分以具體說明一張量的一尺寸資訊、一局部資訊部分以具體說明該張量的一分割、以及一區域記憶體資訊部分以具體說明分配至該操作的該第一記憶體中的一或更複數個記憶庫。
- 如請求項4所述的加速器電路,其中該調度電路是用以將該指令串流的該指令解碼成相對應於一資料輸入階段的一直接記憶體存取(DMA)輸入命令、相對應於一計算階段的一神經元矩陣命令、以及相對應於一輸出階 段的一DMA輸出命令。
- 如請求項5所述的加速器電路,其中該複數個佇列電路包括支援一DMA命令佇列的一第一佇列電路、支援一神經元矩陣命令佇列的一第二佇列電路、以及支援一DMA輸出命令佇列的一第三佇列電路。
- 如請求項6所述的加速器電路,其中該複數個命令執行電路包括一DMA輸入命令執行電路以執行該DMA輸入命令、一神經元矩陣命令執行電路以執行該神經元矩陣命令、以及一DMA輸出命令執行電路以執行該DMA輸出命令。
- 如請求項7所述的加速器電路,其中該DMA輸入命令的執行造成從該加速器電路的外部的一第二記憶體至該第一記憶體的該輸入資料的一DMA讀取。
- 如請求項8所述的加速器電路,其中該神經元矩陣命令執行電路包括:複數個計算胞元的一矩陣,其每個計算胞元連接至該矩陣的至少另一個計算胞元;以及一屏障控制邏輯,以產生控制該複數個計算胞元的該矩陣的複數個控制訊號。
- 如請求項9所述的加速器電路,其中該複數個計算胞元的該矩陣中的每個計算胞元包括:一計算單元陣列;複數個尺寸計數器;通訊地耦合至該計算單元陣列的複數個饋送器電路;以及與該複數個饋送器電路相關聯的複數個區域記憶庫。
- 如請求項10所述的加速器電路,其中該複數個尺寸計數器 包括:一核心高度計數器,以儲存一核心的一第一高度值;一核心寬度計數器,以儲存該核心的一第一寬度值;一特徵映射高度計數器,以儲存一特徵映射的一第二高度值作為部分的該輸入資料;一特徵映射寬度計數器,以儲存該特徵映射的一第二寬度值;以及一輸入頻道計數器,以將一第一參考儲存至儲存該特徵映射的該複數個區域記憶庫中的一第一區域記憶庫;以及一輸出頻道計數器,以將一第二參考儲存至一第二區域記憶庫以儲存由該計算單元陣列產生的一結果。
- 如請求項11所述的加速器電路,其中該操作包括一加乘累積(MAC)、一最大值、或一整流線性單位函數(ReLU)操作的其中之一。
- 如請求項11所述的加速器電路,其中該複數個饋送器電路包括:一特徵映射饋送器電路以提供:該特徵映射從該第一區域記憶庫至該複數個計算單元;一MAC賦能訊號,當設定時,賦能該MAC操作;一累積清除訊號,當設定時,清除與該複數個計算單元的至少其中之一相關聯的一累加器;以及一匯出訊號,當設定時,賦能一寫入器電路以將該結果匯出至該第二區域記憶庫;一核心饋送器電路,以控制該核心從該複數個區域記憶體至該複數個計算單元的一轉移;以及一部分總和饋送器電路,以: 控制一部分總和從該複數個區域記憶體至該複數個計算單元的一轉移,其中該部分總和是由連接至該加速器電路的另一個加速器電路產生;以及賦能一累加器重設訊號以重設該累加器。
- 如請求項13所述的加速器電路,其中該饋送器電路包括一個三級別的緩衝器,包括:一運算元緩衝器,以儲存指派至該計算單元陣列的不同計算單元的複數個運算元,其中該等運算元源自該特徵映射;一東邊界緩衝器,以儲存該計算單元陣列中在一相對應計算單元東邊的計算單元的複數個東鄰近資料,其中每個該等東鄰近資料會被轉移至該相對應計算單元;一南邊界緩衝器,以儲存該計算單元陣列中在一相對應計算單元南邊的計算單元的複數個南鄰近資料,其中每個該等南鄰近資料會被轉移至該相對應計算單元;以及一角落邊界緩衝器,以儲存該計算單元陣列中在一相對應計算單元東南邊的計算單元的複數個東南鄰近資料,其中每個該等東南鄰近資料會被轉移至該相對應計算單元。
- 如請求項14所述的加速器電路,其中該饋送器電路是用以:對決定儲存在該核心寬度計數器中的該第一寬度值是非零做出反應,設定該MAC賦能訊號;對決定儲存在該核心寬度計數器中的該第一寬度值的一減少做出反應,賦能一平移至西邊的訊號用於該計算單元陣列;對決定儲存在該核心高度計數器中的該第一高度值的一減少做出反應,賦能一平移至北邊的訊號用於該計算單元陣列;以及 對決定儲存在該輸入頻道計數器中的該第一參考值的一減少做出反應,賦能一特徵映射就緒訊號。
- 如請求項15所述的加速器電路,其中該饋送器電路是用以:對賦能該特徵映射就緒訊號做出反應,從該複數個區域記憶庫至該運算元緩衝器讀取該特徵映射;對從該複數個記憶庫至該運算元緩衝器讀取該特徵映射做出反應,將儲存在該運算元緩衝器中的該等運算元移動至該東邊界緩衝器以及該南邊界緩衝器並釋放該運算元緩衝器;減少儲存在該核心寬度計數器中的該第一寬度值以產生該平移至西邊的訊號;減少儲存在該核心高度計數器中的該第一高度值以產生該平移至北邊的訊號;以及對再次賦能該特徵映射就緒訊號做出反應,從該複數個區域記憶庫至該運算元緩衝器讀取該特徵映射。
- 如請求項10所述的加速器電路,其中每個計算胞元更包括可由該指令參考的複數個純量暫存器,且其中該複數個純量暫存器的至少其中之一是用以將作為一倍數的一純量值儲存至該計算單元陣列的至少一計算單元。
- 如請求項1所述的加速器電路,其中該引擎電路更包括:一區域記憶體參考板,以管理該第一記憶體以及該複數個命令執行電路之間的資料轉移;一中斷控制器,以產生一中斷訊號至對偵測該引擎電路工作中的一錯誤做出反應的一主機; 一性能監視器,以監視該引擎電路的性能;一系統匯流排主埠,通訊地耦合至在該加速器電路外部的一第二記憶體;以及一高速從屬埠,通訊地耦合至一第二加速器電路。
- 如請求項1所述的加速器電路,其中該指令串流包括一除錯指令,以及其中對該除錯指令的執行做出反應,該引擎電路是用以經由一該控制介面將除錯資訊提供至一外部處理器。
- 一種用於執行一純函數計算的系統,包括:一處理器;以及如請求項1至請求項19所述的加速器電路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/094512 | 2019-07-03 | ||
PCT/CN2019/094512 WO2021000282A1 (en) | 2019-07-03 | 2019-07-03 | System and architecture of pure functional neural network accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202109286A TW202109286A (zh) | 2021-03-01 |
TWI754310B true TWI754310B (zh) | 2022-02-01 |
Family
ID=74101136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109121403A TWI754310B (zh) | 2019-07-03 | 2020-06-23 | 純函數語言神經網路加速器系統及電路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220405221A1 (zh) |
EP (1) | EP3994573A4 (zh) |
KR (1) | KR20220036950A (zh) |
CN (1) | CN114341805A (zh) |
TW (1) | TWI754310B (zh) |
WO (1) | WO2021000282A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809981B1 (en) * | 2019-11-27 | 2023-11-07 | Amazon Technologies, Inc. | Performing hardware operator fusion |
CN112669852B (zh) * | 2020-12-15 | 2023-01-31 | 北京百度网讯科技有限公司 | 内存分配方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201901607A (zh) * | 2017-05-15 | 2019-01-01 | 美商谷歌有限責任公司 | 可組態及可程式化影像處理器單元 |
TW201911139A (zh) * | 2017-08-02 | 2019-03-16 | 美商谷歌有限責任公司 | 神經網路交叉條堆疊 |
TW201911140A (zh) * | 2017-08-11 | 2019-03-16 | 美商谷歌有限責任公司 | 具有常駐在晶片上之參數的神經網路加速器 |
TW201921295A (zh) * | 2017-09-01 | 2019-06-01 | 美商高通公司 | 超低功率神經元形態人工智慧計算加速器 |
TW201921263A (zh) * | 2017-04-24 | 2019-06-01 | 美商英特爾股份有限公司 | 使用低和高精確度的混合推理 |
TW201923586A (zh) * | 2017-07-30 | 2019-06-16 | 埃拉德 希提 | 以記憶體爲基礎的分散式處理器架構 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5272664A (en) * | 1993-04-21 | 1993-12-21 | Silicon Graphics, Inc. | High memory capacity DRAM SIMM |
US6055619A (en) * | 1997-02-07 | 2000-04-25 | Cirrus Logic, Inc. | Circuits, system, and methods for processing multiple data streams |
US5887175A (en) * | 1997-02-14 | 1999-03-23 | Integrated Device Technology, Inc. | Apparatus and method for managing interrupt delay on floating point error |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
WO2007049150A2 (en) * | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
US8443175B2 (en) * | 2009-07-10 | 2013-05-14 | Via Technologies, Inc. | Microprocessor with first processor for debugging second processor |
US8782356B2 (en) * | 2011-12-09 | 2014-07-15 | Qualcomm Incorporated | Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions |
US9880935B2 (en) * | 2014-03-24 | 2018-01-30 | Intel Corporation | Efficient data transfer between a processor core and an accelerator |
US10031758B2 (en) * | 2014-03-31 | 2018-07-24 | Netronome Systems, Inc. | Chained-instruction dispatcher |
US9841974B2 (en) * | 2014-04-25 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Renaming with generation numbers |
US10095518B2 (en) * | 2015-11-16 | 2018-10-09 | Arm Limited | Allowing deletion of a dispatched instruction from an instruction queue when sufficient processor resources are predicted for that instruction |
US10496412B2 (en) * | 2016-02-08 | 2019-12-03 | International Business Machines Corporation | Parallel dispatching of multi-operation instructions in a multi-slice computer processor |
US10241946B2 (en) * | 2017-01-18 | 2019-03-26 | Nxp Usa, Inc. | Multi-channel DMA system with command queue structure supporting three DMA modes |
US11290392B2 (en) * | 2017-01-30 | 2022-03-29 | Intel Corporation | Technologies for pooling accelerator over fabric |
WO2019112959A1 (en) * | 2017-12-04 | 2019-06-13 | Optinum Semiconductor Technologies, Inc. | System and architecture of neural network accelerator |
EP3994621A1 (en) * | 2019-07-03 | 2022-05-11 | Huaxia General Processor Technologies Inc. | Instructions for operating accelerator circuit |
-
2019
- 2019-07-03 KR KR1020227003568A patent/KR20220036950A/ko active Search and Examination
- 2019-07-03 US US17/623,329 patent/US20220405221A1/en active Pending
- 2019-07-03 CN CN201980099887.5A patent/CN114341805A/zh active Pending
- 2019-07-03 EP EP19936365.6A patent/EP3994573A4/en not_active Withdrawn
- 2019-07-03 WO PCT/CN2019/094512 patent/WO2021000282A1/en unknown
-
2020
- 2020-06-23 TW TW109121403A patent/TWI754310B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201921263A (zh) * | 2017-04-24 | 2019-06-01 | 美商英特爾股份有限公司 | 使用低和高精確度的混合推理 |
TW201901607A (zh) * | 2017-05-15 | 2019-01-01 | 美商谷歌有限責任公司 | 可組態及可程式化影像處理器單元 |
TW201923586A (zh) * | 2017-07-30 | 2019-06-16 | 埃拉德 希提 | 以記憶體爲基礎的分散式處理器架構 |
TW201911139A (zh) * | 2017-08-02 | 2019-03-16 | 美商谷歌有限責任公司 | 神經網路交叉條堆疊 |
TW201911140A (zh) * | 2017-08-11 | 2019-03-16 | 美商谷歌有限責任公司 | 具有常駐在晶片上之參數的神經網路加速器 |
TW201921295A (zh) * | 2017-09-01 | 2019-06-01 | 美商高通公司 | 超低功率神經元形態人工智慧計算加速器 |
Also Published As
Publication number | Publication date |
---|---|
EP3994573A1 (en) | 2022-05-11 |
US20220405221A1 (en) | 2022-12-22 |
KR20220036950A (ko) | 2022-03-23 |
WO2021000282A1 (en) | 2021-01-07 |
EP3994573A4 (en) | 2022-08-10 |
CN114341805A (zh) | 2022-04-12 |
TW202109286A (zh) | 2021-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI768383B (zh) | 用於操作加速器電路的指令 | |
AU2019392179B2 (en) | Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
JP4934356B2 (ja) | 映像処理エンジンおよびそれを含む映像処理システム | |
US9466091B2 (en) | Atomic memory update unit and methods | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US9921873B2 (en) | Controlling work distribution for processing tasks | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
US11880925B2 (en) | Atomic memory update unit and methods | |
TWI754310B (zh) | 純函數語言神經網路加速器系統及電路 | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
CN114930292A (zh) | 协作式工作窃取调度器 | |
US20220300326A1 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
US11822541B2 (en) | Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments | |
CN117667210A (zh) | 指令控制装置、方法、处理器、芯片和板卡 | |
JP2023552789A (ja) | 算術論理演算ユニット用のソフトウェアベースの命令スコアボード | |
CN116774968A (zh) | 具有一组线程束的高效矩阵乘法和加法 | |
WO2019113021A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |