TW201928701A - 用於計算的系統及方法 - Google Patents
用於計算的系統及方法 Download PDFInfo
- Publication number
- TW201928701A TW201928701A TW107131346A TW107131346A TW201928701A TW 201928701 A TW201928701 A TW 201928701A TW 107131346 A TW107131346 A TW 107131346A TW 107131346 A TW107131346 A TW 107131346A TW 201928701 A TW201928701 A TW 201928701A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- processing unit
- node
- circuits
- circuit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 204
- 230000015654 memory Effects 0.000 claims abstract description 95
- 238000004891 communication Methods 0.000 claims abstract description 34
- 238000004364 calculation method Methods 0.000 claims abstract description 30
- 239000013598 vector Substances 0.000 claims description 59
- 238000009825 accumulation Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 2
- 239000004744 fabric Substances 0.000 abstract 2
- 239000000047 product Substances 0.000 description 51
- 238000010586 diagram Methods 0.000 description 29
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 229940050561 matrix product Drugs 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000006227 byproduct Substances 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
- G06F15/17343—Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5332—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- G06F9/3897—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 with adaptable data path
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Logic Circuits (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種用於計算的系統。暫用記憶體通過通信結構連接到多個可配置處理單元,所述通信結構包括多個可配置節點。暫用記憶體發送出多個資料字元串流。每一個資料字元是用於對節點或處理單元的配置進行設定的配置字元或者載送運算元或計算結果的資料字元。每一個處理單元根據其當前配置執行操作並將結果返回到通信結構,從而將結果傳達回暫用記憶體。
Description
根據本發明的實施例的一個或多個方面涉及一種處理系統,且更具體來說,涉及用於執行平行計算的可配置系統。
用於神經網路訓練及推斷的現有技術處理系統可能成本高昂,且可能不具有易於適應神經網路計算中頻繁使用的各種張量計算(tensor calculation)(例如,高效的稀疏運算)的靈活性。
因此,需要一種改善的系統來執行神經網路計算。
本公開實施例的各個方面涉及一種用於計算的系統。暫用記憶體通過通信結構連接到多個可配置處理單元,所述通信結構包括多個可配置節點。暫用記憶體發送出多個資料字元串流。每一個資料字元是用於對節點或處理單元的配置進行設定的配置字元或者載送運算元或計算結果的資料字元。每一個處理單元根據其當前配置執行操作並將結果返回到通信結構,從而將結果傳達回暫用記憶體。
根據本發明的實施例,提供一種用於計算的系統,所述系統包括:多個處理單元電路;通信結構,包括多個節點電路;以及暫用記憶體,所述暫用記憶體通過所述通信結構連接到所述處理單元電路,所述處理單元電路中的一個或多個包括配置寄存器,所述配置寄存器被配置成儲存配置值,所述處理單元電路中的一個或多個被配置成:在兩個輸入端處接收相應的兩個資料字元,所述兩個資料字元中的每一者具有控制部分及資料部分,且:當所述兩個資料字元中的一個資料字元具有將所述一個資料字元標識為處理單元配置字元的控制部分時,將所述處理單元配置字元的所述資料部分儲存在所述配置寄存器中;以及當所述兩個資料字元均不是處理單元配置字元時,根據所述配置值對所述兩個資料字元執行操作。
在一個實施例中,所述執行所述操作包括:當所述配置值指定逐單元乘法時,將所述兩個資料字元中的第一資料字元的所述資料部分乘以所述兩個資料字元中的第二資料字元的所述資料部分。
在一個實施例中,所述執行所述操作包括:當所述配置值指定逐單元加法時,將所述兩個資料字元中的第一資料字元的所述資料部分加到所述兩個資料字元中的第二資料字元的所述資料部分。
在一個實施例中,所述執行所述操作包括:當所述配置值指定乘法與累加時:通過將所述兩個資料字元中的第一資料字元的所述資料部分乘以所述兩個資料字元中的第二資料字元的所述資料部分來形成乘積,以及將所述乘積加到累加器值。
在一個實施例中,所述處理單元電路中的一者包括5,000個或少於5,000個閘。
在一個實施例中,所述節點電路中的一者包括2,000個或少於2,000個閘。
根據本發明的實施例,提供一種用於計算的系統,所述系統包括:多個處理單元電路;通信結構,包括多個節點電路;以及暫用記憶體,所述暫用記憶體通過所述通信結構連接到所述處理單元電路,所述節點電路中的一個或多個包括多個節點鏈接電路,所述多個節點電路中的第一節點電路的所述多個節點鏈接電路中的第一節點鏈接電路具有多個輸入端並具有輸出端,且包括:資料寄存器,以及配置寄存器,被配置成儲存配置值,所述第一節點鏈接電路被配置成在所述輸入端處接收相應的多個資料字元,所述資料字元中的每一者具有控制部分及資料部分,且:當所述資料字元中的一個資料字元具有將所述一個資料字元標識為節點鏈接配置字元的控制部分時,將所述節點鏈接配置字元的所述資料部分儲存在所述配置寄存器中;以及當所述資料字元均不是節點鏈接配置字元時,根據所述配置值而定:將來自所述輸入端中的一者的資料字元發送到所述資料寄存器,和/或將來自所述輸入端中的一者的資料字元發送到所述輸出端,和/或將來自所述資料寄存器的資料字元發送到所述輸出端。
在一個實施例中,所述節點電路中的一個或多個具有:四個輸入端,在實質上正交的方向上從節點電路向內延伸;以及四個輸出端,在實質上正交的方向上從所述節點電路向外延伸。
在一個實施例中,一個或多個所述節點電路中的節點電路包括四個節點鏈接電路,所述四個節點鏈接電路各自具有:四個輸入端,分別連接到所述節點電路的所述四個輸入端;以及輸出端,連接到所述節點電路的所述四個輸出端中的相應一個輸出端。
在一個實施例中,所述處理單元電路中的一者包括5,000個或少於5,000個閘。
在一個實施例中,所述節點電路中的一者包括2,000個或少於2,000個閘。
在一個實施例中,所述暫用記憶體包括:儲存體;以及儲存控制器,所述儲存控制器包括多個列高速緩衝記憶體,所述列高速緩衝記憶體中的一個或多個具有與所述資料字元相同的位元寬度,所述儲存控制器被配置成將資料從所述儲存體傳送到所述列高速緩衝記憶體以及從所述列高速緩衝記憶體傳送到所述儲存體,所述列高速緩衝記憶體中的一個或多個被配置成:串流輸出一系列資料字元,以及串流輸入一系列資料字元。
在一個實施例中,所述列高速緩衝記憶體中的一者是雙緩衝器。
在一個實施例中,所述資料字元中的每一個資料字元的所述控制部分具有為四個位元的寬度,且所述資料字元中的每一個資料字元的所述資料部分具有為十六個位元的寬度。
根據本發明的實施例,提供一種用於計算的方法,所述方法包括:對處理模組進行配置,所述處理模組包括:多個處理單元電路;通信結構,包括多個節點鏈接電路,所述多個節點鏈接電路各自具有多個輸入端並具有輸出端;以及暫用記憶體,所述配置包括:由所述暫用記憶體發送多個節點鏈接配置字元,所述多個節點鏈接配置字元各自被定址到所述多個節點鏈接電路中的節點鏈接電路;由所述多個節點鏈接電路中的第一節點鏈接電路接收被定址到所述第一節點鏈接電路的資料字元,所述第一節點鏈接電路具有連接到所述多個處理單元電路中的第一處理單元電路的輸入端的輸出端;由所述第一節點鏈接電路設定所述第一節點鏈接電路的配置,以使所述第一節點鏈接電路將在所述第一節點鏈接電路的第一輸入端處接收的資料字元轉發到所述第一節點鏈接電路的所述輸出端;由所述第一節點鏈接電路的所述第一輸入端接收處理單元配置字元;由所述第一節點鏈接電路的所述第一輸入端將所述處理單元配置字元發送到所述第一處理單元電路;以及由所述第一處理單元電路將所述處理單元配置字元的資料部分儲存在所述第一處理單元電路的配置寄存器中。
在一個實施例中,所述方法包括計算多個乘積,所述計算包括:由所述暫用記憶體通過延伸經過第一多個節點鏈接電路的第一路徑將第一系列運算元發送到所述第一處理單元電路;由所述暫用記憶體通過延伸經過第二多個節點鏈接電路的第二路徑將第二系列運算元發送到所述第一處理單元電路;由所述第一處理單元電路計算一系列成對的乘積,所述一系列成對的乘積中的每一個成對的乘積是以下的乘積:所述第一系列運算元中的運算元,與所述第二系列運算元中的對應的運算元。
在一個實施例中,所述方法包括:將第一向量從稠密表示形式轉換成稀疏表示形式,所述第一向量包括具有非零值的第一單元以及緊接著的具有零值的第二單元,所述轉換包括以第一2元組替代所述第一單元,所述第一2元組具有:與所述第一向量的所述第一單元相等的第一單元,以及大於一的第二單元。
在一個實施例中,所述方法包括將第二向量的稀疏表示形式與所述第一向量的所述稀疏表示形式對齊,所述對齊包括:從所述第二向量的所述稀疏表示形式刪除與所述第一向量的所述第二單元對應的2元組,以及增大所述第二向量的第一2元組的第二單元的值,所述第二向量的所述第一2元組緊位於被刪除的所述2元組之前。
在一個實施例中,所述方法包括:由所述多個處理單元電路中的處理單元電路將所述第一向量的所述第一2元組的所述第一單元乘以所述第二向量的所述第一2元組的第一單元,以形成結果2元組的第一單元;以及將所述結果2元組的第二單元設定成等於所述第一向量的所述第一2元組的所述第二單元。
在一個實施例中,所述處理單元電路中的一者包括5,000個或少於5,000個閘,且所述節點鏈接電路中的一者包括500個或少於500個閘。
以下結合附圖闡述的詳細說明旨在作為對根據本發明提供的神經處理加速器的示例性實施例的說明,且並非旨在表示可用以構造或利用本發明的唯一形式。所述說明結合所示出的實施例來闡述本發明的特徵。然而應理解,不同的實施例也可實現相同或等效的功能及結構,這些不同的實施例也旨在囊括在本發明的精神及範圍內。如在本文中別處所表明,相同元件編號旨在指示相同元件或特徵。
參照圖1,在一些實施例中,神經處理系統包括多個處理模組110,每一個處理模組110包括暫用記憶體115以及多個處理單元120(標記為PE),處理單元120通過通信結構125連接到彼此且連接到暫用記憶體。在操作中,暫用記憶體115通過通信結構125將運算元饋送到處理單元120,處理單元120對運算元進行處理以產生結果,且所述結果通過通信結構125被回饋到暫用記憶體115(或回饋到另一個暫用記憶體115)。通信結構125包括多個互連節點,所述多個互連節點中的每一者具有多個輸入端及輸出端、且可程式設計為將資料從其輸入端中的任何輸入端引導到其輸出端中的任何輸出端,如以下進一步詳細闡述。由此,可對通信結構125進行程式設計以在暫用記憶體115與處理單元120之間、以及在處理單元120中的任何一個處理單元120與任何另一個處理單元120之間建立資料路徑。儘管圖1未按比例繪示,然而一些實施例使用圖1所示佈局來在各個處理單元120之間以及在暫用記憶體115與處理單元120之間通過通信結構125提供相對短的通信路徑。
圖1所示神經處理系統可適合於高效地執行各種處理任務,如以下參照圖2A到圖2I及圖3A到圖3E進一步詳細地闡述。圖2A示出可如何執行逐單元向量運算,例如逐單元向量乘積,。
在一些實施例中,所述模組或整個神經處理系統是具有單時鐘域(single clock domain)的同步數位電路。第一運算元的串流是以每時鐘迴圈一個為單位從記憶體A中被饋送出,且第二運算元的串流是以每時鐘迴圈一個為單位從記憶體B中被饋送出。運算元的每一個串流一般來說是以不同的遞送延遲被遞送到處理單元120。因此,每一個運算元均是在所排程的要進行處理的時刻之前發送的。在圖2A所示注釋中,舉例來說,前兩個運算元被排程為在時刻t0
處由處理單元120接收。為了能夠在時刻t0
處由處理單元120接收到,來自記憶體A的第一運算元會在時刻t-dA
處發送,其中下標表示時鐘迴圈中的時刻,即,來自記憶體A的第一運算元是在t0
之前dA個時鐘迴圈的時刻處發送的,其中dA是通信結構125將運算元從記憶體A遞送到處理單元120所花費的時間。相似地,為了能夠在時刻t0
處由處理單元120接收到,來自記憶體B的第一運算元在時刻t-dB
處發送,即,來自記憶體B的第一運算元是在t0
之前dB個時鐘迴圈的時刻處發送的,其中dB是通信結構125將運算元從記憶體B遞送到處理單元120所花費的時間。遞送延遲dA與遞送延遲dB可為相同的或者它們可為不同的。每一個遞送延遲可取決於資料經過通信結構125時所通過的路徑,且還取決於沿著所述路徑的節點的配置(所述節點中的每一者可具有可配置延遲)。其餘的運算元隨後可以每時鐘迴圈每記憶體一個為單位從記憶體A及記憶體B中發送出,如圖中所示。其他逐單元運算(例如,逐單元和或差(element-wise sum or difference))可利用被配置成執行適合的運算的處理單元120(如以下進一步詳細論述)來以相同的方式執行。
處理單元120可對資料進行處理並將結果(可被視為四個乘積、或者四單元(逐單元)乘積向量的四個單元)發送到第三記憶體(記憶體C)。處理延遲在圖2A中被標識為tp
,即p個時鐘迴圈。
記憶體A、記憶體B及記憶體C可全部為一個暫用記憶體115(即,一個處理模組110的暫用記憶體)的一部分或者其中的一者或多者可為不同的暫用記憶體115的一些部分。
圖2B示出可如何執行逐單元矩陣運算,例如逐單元矩陣乘積,。
第一運算元的三個並列串流(每一個對應於第一被乘數的一列)是從記憶體A中被饋送出,且第二運算元的三個並列串流(每一個對應於第二被乘數的一列)是從記憶體B中被饋送出。第一被乘數的第一列與第二被乘數的第一列的逐單元乘積是由第一處理單元120a以每次一對單元為單位形成的。相似地,第一被乘數的第二列及第三列與第二被乘數的第二列及第三列的逐單元乘積分別是由第二處理單元120b及第三處理單元120c以每次一對單元為單位形成的。第一被乘數的一列與第二被乘數的對應一列的每一個逐單元乘積是使用圖2A所示電路的相應副本形成的。由此,逐單元乘積是以並列化3倍的方式執行的,這三個向量運算(對應於將進行相乘的三對列)並存執行。在其他實施例中,相同的運算可以串行方式執行(其中記憶體A以單個串流形式一次一個地發送出第一運算元的十二個單元,且記憶體B以單個串流形式一次一個地發送出第二運算元的十二個單元)或者具有不同的並列化程度(例如,通過使四個處理單元120中的每一個處理單元120執行在形成第一被乘數的相應行與第二被乘數的對應行的逐單元乘積過程中所涉及的三次乘法來以並列化四倍進行運算)。
圖2C示出可如何執行向量點乘積,例如,。
如在逐單元向量乘積的情形中一樣,第一運算元的串流是從記憶體A中被饋送出且第二運算元的串流是從記憶體B中被饋送出。處理單元120對逐單元乘積進行累加以形成點乘積,並將結果發送到第三記憶體(記憶體C)。處理單元120中的累加器可在處理單元120接收到配置命令時重定(如以下進一步詳細闡述)。
圖2D示出可如何形成由矩陣乘積的對角線單元組成的向量,例如,。
結果向量的單元中的每一者是第一輸入矩陣(第一被乘數)的列與第二輸入矩陣(第二被乘數)的行的點乘積。這些點乘積中的每一者是以上參照圖2C所述的方式進行計算的(第一點乘積由第一處理單元120a計算,第二點乘積由第二處理單元120b計算,且第三點乘積由第三處理單元120c計算)。整個矩陣乘積(包括如圖2D所示計算的對角線單元且還包括非對角線單元)可以類似的方式計算,這是因為矩陣乘積的單元中的每一者是第一被乘數的一個列與第二被乘數的行的點乘積。
圖2E示出可如何使用不具有累加器的處理單元120來形成向量點乘積,例如,。
第一處理單元120a形成逐單元乘積,且第二處理單元120b充當累加器。
圖2F示出可如何執行具有常數核(constant kernel)的一維卷積,例如,。
核([1 2])的單元例如由記憶體B預先程式設計到第一處理單元120a中及第二處理單元120b中(或者被程式設計到與這兩個處理單元120中的每一者的第二輸入端連接的配置結構的兩個相應的節點中,如以下進一步詳細闡述)。運算元的串流(在此情形中為值[a b c d])是從記憶體A中被饋送出且被廣播到第一處理單元120a及第二處理單元120b二者(作為通信結構125的適合的優先配置的結果,以下進一步詳細論述)。第一處理單元120a將運算元的串流的每一個單元乘以核的第一單元(在此實例中為1)且第二處理單元120b將運算元的串流的每一個單元乘以核的第二單元(在此實例中為2)。乘積串流被發送到第三處理單元120c,其中第二乘積串流(由第二處理單元120b產生)延遲一個時鐘迴圈以使乘積a·1與乘積b·2同時到達第三處理單元120c。通信結構125或第三處理單元120c可如以下進一步詳細地闡述在乘積a·1及b·2到達之前的時鐘迴圈期間重新配置,以使在前一時鐘迴圈中由第三處理單元120c接收到並進行處理的乘積a·2被通信結構125或第三處理單元120c捨棄。還可以相似的方式將乘積d·1捨棄。如圖中所示,第三處理單元120c逐對地對乘積(被捨棄的乘積除外)進行求和並將所述和發送到記憶體C。
圖2G示出可如何執行具有常數核的二維卷積,例如,。
核的第一列的單元例如由記憶體B預先程式設計到第一處理單元120a中及第二處理單元120b中。如在一維卷積的情形中一樣,運算元的串流(在此情形中為值[a b c d])是從記憶體A中被饋送出且被廣播到第一處理單元120a及第二處理單元120b二者(作為通信結構125的適合的優先配置的結果,以下進一步詳細論述)。第一處理單元120a將運算元的串流的每一個單元乘以核的第一單元(在此實例中為1)且第二處理單元120b將運算元的串流的每一個單元乘以核的第二單元(在此實例中為2)。乘積串流被發送到第三處理單元120c,其中第二乘積串流(由第二處理單元120b產生)延遲一個時鐘迴圈以使乘積a·1與乘積b·2同時到達第三處理單元120c。不作為卷積的一部分的乘積被捨棄(通過重新配置處理單元120及通信結構125中的一者或多者被捨棄),且第三處理單元120c如圖中所示逐對地對乘積(被捨棄的乘積除外)進行求和。第四處理單元120d、第五處理單元120e及第六處理單元120f一同形成輸入矩陣的第二列與核的第二列的乘積的類似的和。由第三處理單元120c與第六處理單元120f產生的和被饋送到第七處理單元120g,第七處理單元120g如圖中所示形成最終卷積。
圖2H示出可如何執行具有稀疏常數核的二維卷積,例如,。
這種卷積與和圖2G對應的卷積的不同之處在於常數核的第二列的第二單元是零(其在圖2G的計算中是非零的且被程式設計到第五處理單元120e中),且因此如果存在第五處理單元120e,則第五處理單元120e將只乘以零。因此,圖2H的配置中不存在第五處理單元120e。第六處理單元120f也不存在。在圖2G所示實施例中,第六處理單元120f形成輸入矩陣的第二列與核的第二列的乘積的逐對和;在圖2H所示實施例中,每一對項中的一個項是零,因此作為替代地使用另一個項(其由第三處理單元120c生成)。
圖2I示出可如何執行具有常數核的1×1一維卷積,例如,。
如在圖2F的計算的情形中一樣,預載入第一處理單元120a及第二處理單元120b以執行乘以相應的常數項的乘法,且第一處理單元120a及第二處理單元120b分別將其接收的每一個輸入值乘以相應的常數。接著通過第三處理單元120c來逐對地對乘積進行求和。
圖3A到圖3E示出可如何使用「稀疏表示形式」格式來以高效方式處理稀疏向量、矩陣及其他張量的實例,所述「稀疏表示形式」格式可用於表示一系列數中的一個或多個零。在一些實施例中,這是通過省略零單元以及將每一個非零數表示為2元組來以稀疏表示形式實現的,所述2元組的第一單元是值,且所述2元組的第二單元是位址增量。如果向量的傳統的或「稠密」的表示形式中的下一個單元也為非零的,則位址增量是1,否則增量等於一加上當前單元之後的零的數目。在表1中針對兩個實例示出這種對應形式。舉例來說,第一向量具有四個非零單元[a, b, c, d]。由於這些單元中沒有單元是零,因此這一向量的稀疏表示形式的每一個2元組的第一單元等於稠密表示形式的對應的單元的值,且每一個2元組的第二單元是1。第二向量具有四個單元,且在稠密表示形式中被寫為[1, 2, 0, 4],即,第三單元是零。在第二向量的稀疏表示形式中,將零省略,以使得稀疏表示形式只具有三個2元組。位於零值之前的值的2元組具有增量2,以表示這一單元之後的零已被省略。
表
1
圖3A示出當以稀疏格式接收到表1所示的這兩個向量時,處理單元120可如何將這兩個向量相乘。在每一個時鐘迴圈處,在處理單元120的這兩個輸入端處接收到的這兩個2元組的第二單元具有相同的值,且所述值用於「結果2元組」(儲存結果的2元組,其第一單元等於輸入2元組的第一單元的乘積)的第二單元。處理單元120因此能夠以三次運算來計算兩個四單元向量(二者均以稀疏表示形式供應且其中一者包含值是零的一個單元)的逐單元乘積(以由三個2元組來形成以稀疏表示形式表示的四單元乘積向量)。
從稠密表示形式到稀疏表示形式的轉換可由暫用記憶體115的儲存控制器中適合的電路來執行。在圖3B中示出向稀疏表示形式進行的轉換作為一個實例。向量[a, b, c, d]的稠密表示形式是從記憶體A中被饋送出;由於這一向量不具有零單元,因此對於這一向量而言,轉換成稀疏表示形式具有以下效果:將單元中的每一者轉換成其中第一單元等於向量的稠密表示形式的對應單元且第二單元(位址增量)等於1的2元組。向量[1, 2, 0, 4]是從記憶體B中被饋送出;由於這一向量在第三位置中具有零單元,因此第二2元組具有等於2的第二單元(位址增量)以表示已在第二單元之後將零單元刪除。如圖中所示,向稀疏表示形式進行轉換的結果可保存在另一個記憶體(記憶體C)中。從稀疏表示形式到稠密表示形式的轉換可由暫用記憶體115的儲存控制器中適合的電路來以類似方式執行,如圖3C所示。向量[a, b, c, d]的稀疏表示形式{a, 1} {b, 1} {c, 1} {d, 1}是從記憶體A中被饋送出;由於這一向量不具有零單元(且因此,每一個位址增量均為一),因此對於這一向量而言轉換成稠密表示形式具有以下效果:將單元的每一個2元組轉換成稠密表示形式的單元,所述稠密表示形式的單元等於對應的2元組的第一單元。向量[1, 2, 0, 4]的稀疏表示形式{1, 1} {2, 2} {4, 1}是從記憶體B中被饋送出;由於這一向量在第二2元組的第二單元中的位址增量為2,因此第二2元組被擴展以形成稠密表示形式的兩個單元(2及0);對於其他兩個2元組中的每一者而言,位址增量是一,且因此2元組的第一單元變成與向量的稠密表示形式的對應單元的值,即[1, 2, 0, 4]。如圖中所示,向稠密表示形式進行轉換的結果可保存在另一個記憶體(記憶體C)中。
圖3D所示串流對齊預處理步驟可用於在執行運算之前將稀疏表示形式的兩個向量的單元對齊。如果運算是乘法(例如,逐單元乘法或點乘積),則另一個向量具有零值的向量的每一個非零單元可被刪除或者等同地,所述2元組可被移除且前一2元組的地址增量遞增1。在圖3D所示實例中,串流對齊步驟具有以下效果:從第一向量將第三2元組刪除,且將前一2元組的地址增量遞增一(從{b, 1}到{b, 2})。如果將要執行的運算是加法或減法,則可利用為0的第一2元組單元來恢復另一個向量具有非缺失的2元組的向量中的每一個缺失2元組(且位於所恢復的2元組之前的2元組的位址增量可遞減一)。
圖3E示出對呈稀疏表示形式的兩個經串流對齊向量執行的逐單元乘法。處理單元120進行以下操作:(i)對所接收到的每一對2元組中的第一單元執行運算(乘法)以形成對應的結果2元組的第一單元;以及(ii)將位址增量(其由於串流對齊處理的原因而對兩個輸入2元組而言為相同的)複製到結果2元組的位址增量單元。
通信結構125可包括多個節點(或「節點電路」),所述每一個節點各自包括四個節點鏈接(或「節點鏈接電路」)。每一個節點可具有來自四個實質上正交的方向(在本文中被稱為北、南、東及西)的四個輸入端以及處於相同方向上的四個輸出端。圖4A示出一個實施例中的節點鏈接405。節點鏈接還具有分別與節點的四個輸入端連接的四個輸入端,以及與節點的四個輸出端中的一者連接的一個輸出端。每一個節點鏈接具有配置寄存器410,配置寄存器410的內容控制以下方面:哪一個輸入端連接到輸出端;是否在節點鏈接中將所接收的資料延遲;或者是否儲存最近接收的資料作為常數(constant)。節點鏈接還包括四輸入多工器(MUX)415、資料寄存器420及雙輸入多工器425。配置寄存器的兩個位元可控制四輸入多工器415,四輸入多工器415選擇這四個輸入端中的哪一個輸入端將連接到節點鏈接405的輸出端。配置寄存器的一個位元可控制資料寄存器420的時鐘使能輸入,以使得(在時鐘被去能時)資料寄存器420可用於儲存常數(儲存在時鐘輸入被使能的最後一個迴圈中)。雙輸入多工器425的設定(由配置寄存器410的一個位元控制)決定節點鏈接的輸出是四輸入多工器415的輸出端處的值還是儲存在資料寄存器420中的(常數或延遲)值。在一些實施例中,每一個節點鏈接在輸出端處包括附加寄存器(即,對每一個輸出進行寄存)。
圖4B示出通信結構125的節點430。如上所述,節點包括四個節點鏈接405。每一個節點鏈接405包括控制電路435(圖4A中未示出)。控制電路435在圖4C中示出;控制電路435包括有限態機器(finite state machine,FSM)432、配置字元檢測電路440,配置字元檢測電路440檢測在四個輸入端中的任何輸入端處接收到配置字元的時刻(如以下進一步詳細闡述),且當這種情況發生時,配置字元檢測電路440將新值寫入到配置寄存器410。
節點及處理單元可形成網(例如圖5A所示網),其中被示出為延伸出圖式邊緣的連接是連接到例如附加節點430、附加處理單元或暫用記憶體115。每一個處理單元120可如圖中所示具有兩個輸出端;第二輸出端是可使用的,舉例來說,如果處理單元120被配置成接收兩個輸入值且分別在兩個輸出端處輸出這兩個輸入值中較大的一個輸入值及這兩個輸入值中較小的一個輸入值。
在操作中,在暫用記憶體115、節點430及處理單元120之間傳送的資料可呈資料字元形式,例如,各自具有4位元寬的控制部分及16位元寬的資料部分的20位元寬的字。圖5B示出可如何配置通信結構125的實例,即,可如何對節點鏈接405中的配置寄存器410進行程式設計。暫用記憶體115中的一者可發送出節點配置字元的序列520a,每一個節點配置字元各自可由節點鏈接405辨認出,例如在前四個位元中具有二進位值0000,如以下參照表2進一步詳細闡述。序列520a中的第一配置命令可由第一節點430a的節點鏈接辨認為:(i)節點配置命令(由於前四個位元是0000),以及(ii)定址到所述節點鏈接(由於隨後的8個位元與儲存在所述節點鏈接中的唯一8位元識別字相等)。所述節點鏈接可接著向第一節點430a的所述節點鏈接的輸出端發送不操作(no operation,NOP)資料字元,並通知第一節點430a的其他節點鏈接當前接收的資料字元將被抑制。第一節點430a的其他節點鏈接中的每一者接著還將不操作(NOP)資料字元發送到第一節點430a的各自相應的輸出端。第一節點430a可接著將節點配置字元的序列520a的第二資料字元及隨後的資料字元(即,節點配置字元的精簡序列520b)轉發到第二節點430b。由控制部分標識為包含用於節點鏈接405的配置資料的資料字元可被稱為「節點鏈接配置字元」,且由控制部分標識為包含用於處理單元120的配置資料的資料字元可被稱為「處理單元配置字元」。
採用這種被稱為「剝離及轉發(strip and forward)」程式設計的方式,可對所有節點430進行程式設計,每一個節點一旦被程式設計便會根據自己的當前程式設計狀態轉發進一步配置資訊及資料。處理單元120以相似的方式進行程式設計,處理單元120中的一者在圖5B的示例性程式設計資料路徑中示出。
參照表2,如上所述,每一個資料字元可具有20個位元的寬度,在這20個位元中,前四個位元是控制位元,且其餘16個位元是資料位元。具有控制字元等於二進位0000的任何資料字元(完全由零組成的NOP字元除外)是節點鏈接配置字元,且如上所述進行處理。具有控制字元等於二進位0001的任何資料字元是處理單元配置字元,且由接收到所述資料字元的處理單元120採用相似的方式進行處理,即,當處理單元120接收到這種資料字元時,處理單元120會將資料字元的資料位元保存在其控制寄存器中。具有控制部分等於二進位0011的停止字元(STOP word)使接收到所述停止字元的處理單元120將其累加器清零,並停止處理資料一直到處理單元120接收到另一個處理單元配置字元為止。停止字元可用於終止處理單元120中的乘法與累加運算。
在一些實施例中,使用控制部分大於二進位0111的資料字元來對呈稀疏表示形式的向量的2元組進行編碼,其中控制部分是位址增量加7(即,為二進位1000的控制字元值表示位址增量為1)。
表
2
圖6A是一些實施例中處理單元120的示意圖。包括相應的寄存器及多工器的相應輸入電路610連接到輸入端中的每一者,且可用於:(i)通過未發生改變的方式饋送輸入值;(ii)將輸入值延遲一個時鐘迴圈;或(iii)儲存常數值以用於多個後續計算中。乘法器620形成由輸入電路610供應的各個值的乘積,且加法器630形成多對值的和。第一資料切換多工器640a判斷加法器630在其第一輸入端處接收的是乘法器620的輸出還是多個輸入電路610中的第一個輸入電路610的輸出。第二資料切換多工器640b判斷加法器630是執行逐對和還是充當累加器。處理單元120還包括兩個輸出寄存器650。
圖6B是根據另一個實施例的處理單元120的方塊圖。不同類型的處理單元120可在處理模組110中進行組合(圖1)或者任何一個處理單元120可對若干類型的處理單元的特徵進行組合,例如圖6A及圖6B所示處理單元120。圖6B所示處理單元120包括第一多工器660、第一寄存器665與第二多工器670、以及數學電路680,第一多工器660判斷是使用新接收的資料還是來自輸出端的資料進行計算,第一寄存器665與第二多工器670一同選擇是否將資料延遲一個時鐘迴圈,數學電路680可能夠進行例如圖中所示數學運算等各種數學運算(例如,對平方、平方根、倒數(reciprocal)或對數(logarithm)的計算)。在一些實施例中,可存在其他專用處理單元,包括例如被配置成執行除法的處理單元。
處理單元120還可被配置成對各種資料類型(包括浮點(floating point,FP)、帶符號的整數(int)、不帶符號的整數(uint)及布林資料(boolean))執行運算以及被配置成在各種資料類型之間執行強制轉換運算(casting operation)。這種運算的實例包括:乘法(FP16, FP16)、(u/int8/16, u/int8/16);加法(FP16, FP16)、(u/int8/16, u/int8/16);減法(FP16, FP16)、(u/int8/16, u/int8/16);求反(negate)(FP16, FP16)、(u/int8/16, u/int8/16);將FP16強制轉換成int16/uint16/int8/uint8,將int16/uint16/int8/uint8強制轉換成FP16,將FP16強制轉換成布林資料,將布林資料強制轉換成FP16;最大化(FP16, FP16);最小化(FP16, FP16);求較大(FP16, FP16)且回傳布林資料(greater(FP16, FP16) -> boolean);對布林資料進行的小於、等於、大於或等於(greater-or-equal)、小於或等於(less-or-equal)、邏輯與、或、求反、互斥或;對int8/16、uint8/16進行的逐位元的與、或、求反、互斥或;左移/右移算術/迴圈(shift left/right arith/circular)ints、uints;及判斷FP16是不是非數(NaN)且回傳布林資料(isNaN(FP16)->boolean)、判斷FP16是否擁有有限值(isInf(FP16))。在本段落中使用的注釋中,斜的「/」表示「或」以使得例如u/int8/16意指uint8、uint16、int8或int16。
在一些實施例中,節點430及處理單元120二者均為小的,即,節點430及處理單元120需要很少的閘來構造;因此,每單位處理能力的成本可為低的,且包括多個處理模組110的系統(圖1)可按比例擴展從而以相對低的成本提供顯著量的總處理能力。由於節點430及處理單元120的大小相對小,因此在構造系統的成本方面以及在運行成本(例如,功耗及所需空間)方面的成本可相對低。在一些實施例中,每一個節點鏈接405包括500個或少於500個閘,且每一個處理單元120包括5,000個或少於5,000個閘。
圖7A到圖7E示出暫用記憶體115的結構及組織,暫用記憶體115包括儲存控制器710及儲存體720。儲存體720可為雙埠記憶體,例如,靜態隨機存取記憶體(static random access memory,SRAM)。儲存控制器710可進行以下操作:(i)在儲存體720與多個列高速緩衝記憶體之間複製資料以使暫用記憶體115用作具有大量的(例如,數十個)埠的儲存系統;以及(ii)對資料執行預處理操作及後處理操作,例如在稠密表示形式與稀疏表示形式之間轉換以及執行串流對齊。每一個列高速緩衝記憶體可被實施為雙緩衝器(double buffer),如圖7E所示。儲存體720可經由將暫用記憶體115連接到主機中央處理器(central processing unit,CPU)的先進可擴展介面(Advanced eXtensible Interface,AXI)橋接器來通過直接儲存存取(direct memory access,DMA)進行存取。在操作中,主機CPU可對儲存體720進行程式設計,且接著向儲存控制器710發出起始命令,儲存控制器710可接著開始將資料串流輸出到通信結構125,以便首先對通信結構125的節點430及處理單元120進行配置,其次執行計算。在一些實施例中,SRAM與高速緩衝記憶體成對。資料是以串流形式進行存取的,所述串流形式涉及一個接一個地從SRAM讀取值。在功率方面,對SRAM進行讀寫可能相對昂貴;因此可將資料複製到高速緩衝記憶體線中並從所述線串流輸出以節省功率。可對高速緩衝記憶體進行靜態排程。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層和/或區段,然而這些元件、組件、區、層和/或區段不應受這些用語限制。這些用語僅用於區分各個元件、組件、區、層或區段。因此,在不背離本發明概念的精神及範圍的條件下,可將本文中所論述的第一元件、組件、區、層或區段稱為第二元件、組件、區、層或區段。
為易於說明,本文中可使用例如「在…之下(beneath)」、「在…下面(below)」、「下部的(lower)」、「在…下方(under)」、「在…上方(above)」、「上部的(upper)」等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係。應理解,這些空間相對性用語旨在除圖中所繪示的取向外還囊括裝置在使用或操作中的不同取向。舉例來說,如果圖中所示裝置被翻轉,則被闡述為位於其他元件或特徵「下面」或「之下」或者「下方」的元件此時將被取向為位於所述其他元件或特徵「上方」。因此,示例性用語「在…下面」及「在…下方」可囊括「上方」及「下方」兩種取向。裝置可具有其他取向(例如,旋轉90度或處於其他取向)且本文中使用的空間相對性描述語應相應地進行解釋。另外,還應理解,當將一層稱為位於兩個層「之間」時,所述層可為所述兩個層之間的唯一層,或者也可存在一個或多個中間層。
本文所用術語僅用於闡述特定實施例,而並非旨在限制本發明概念。本文所用用語「實質上(substantially)」、「大約(about)」及類似用語用作近似用語、而並非作為程度用語,並且旨在考慮到所屬領域中的一般技術人員將知的測量值或計算值的固有偏差。本文所用用語「主要成分(major component)」是指組合物、聚合物或產物中所存在的比所述組合物或產物中的任何其他單一成分的量多的成分。相比之下,用語「主成分(primary component)」是指構成組合物、聚合物或產物的至少50%重量或多於50%重量的成分。本文所用用語「主要部分(major portion)」在應用於多個項時是指所述項中的至少一半。
除非上下文中清楚地另外指明,否則本文所用單數形式「一(a及an)」旨在也包含複數形式。還應理解,當在本說明書中使用用語「包括(comprises和/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件和/或組件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、組件和/或其群組的存在或添加。本文所用用語「和/或」包含相關列出項中的一個或多個項的任意及所有組合。當例如「...中的至少一者(at least one of)」等表達位於一系列元件之後時是修飾整個系列的元件而並非修飾所述系列中的個別元件。另外,在闡述本發明概念的實施例時使用「可(may)」是指代「本發明的一個或多個實施例」。另外,用語「示例性(exemplary)」旨在指實例或例示。本文所用用語「使用(use)」、「正使用(using)」及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」及「被利用(utilized)」同義。
應理解,當稱一元件或層位於另一元件或層「上(on)」、「連接到(connected to)」、「耦合到(coupled to)」或「鄰近於(adjacent to)」另一元件或層時,所述元件或層可「直接位於另一元件或層上(directly on)」、「直接連接到(directly connected to)」、「直接耦合到(directly coupled to)」、或「直接鄰近於(directly adjacent to)」另一元件或層,抑或可存在一個或多個中間元件或層。相比之下,當稱一元件或層「直接位於另一元件或層上」、「直接連接到」、「直接耦合到」或「緊鄰於(immediately adjacent to)」另一元件或層時,則不存在中間元件或層。
本文所述任意數值範圍旨在包括歸入所述範圍內的相同數值精度的所有子範圍。舉例來說,「1.0到10.0」的範圍旨在包括所述最小值1.0與所述最大值10.0之間(且包含所述最小值1.0及所述最大值10.0在內)的所有子範圍,即,具有等於或大於1.0的最小值以及等於或小於10.0的最大值,例如(舉例來說)2.4到7.6。本文所述任意最大數值限制旨在包括歸入其中的所有更低的數值限制,並且本說明書中所述的任意最小數值限制旨在包括歸入其中的所有更高的數值限制。
儘管本文已具體闡述並示出了神經處理加速器的示例性實施例,然而對於所屬領域中的技術人員來說許多潤飾及變化將顯而易見。因此,應理解,根據本發明原理所構造而成的神經處理加速器可採用除本文所具體闡述的方式之外的其他方式實施。在以上權利要求書及其等效範圍中也對本發明加以定義。
110‧‧‧處理模組
115‧‧‧暫用記憶體
120‧‧‧處理單元
120a‧‧‧第一處理單元
120b‧‧‧第二處理單元
120c‧‧‧第三處理單元
120d‧‧‧第四處理單元
120e‧‧‧第五處理單元
120f‧‧‧第六處理單元
120g‧‧‧第七處理單元
125‧‧‧通信結構
405‧‧‧節點鏈接
410‧‧‧配置寄存器
415‧‧‧四輸入多工器
420‧‧‧資料寄存器
425‧‧‧雙輸入多工器
430、430c、430d‧‧‧節點/附加節點
430a‧‧‧第一節點
430b‧‧‧第二節點
432‧‧‧有限態機器
435‧‧‧控制電路
440‧‧‧配置字元檢測電路
520a‧‧‧序列
520b‧‧‧精簡序列
610‧‧‧輸入電路
620‧‧‧乘法器
630‧‧‧加法器
640a‧‧‧第一資料切換多工器
640b‧‧‧第二資料切換多工器
650‧‧‧輸出寄存器
660‧‧‧第一多工器
665‧‧‧第一寄存器
670‧‧‧第二多工器
680‧‧‧數學電路
710‧‧‧儲存控制器
720‧‧‧儲存體
t0
、t1
、t2
、t3
、t4
、t-dA
、t-dA+1
、t-dA+2
、t-dA+3
、t-dB
、t-dB+1
、t-dB+2
、t-dB+3
、tp
、tp+1
、tp+1+d
、tp+2+d
、tp+3+d
、tp+4+d
、tp+2
、tp+3
、tp+4
、tp+5
、tp+dC
、tp+1+dC
、tp2+dC
、tp+3+dC
、tp+4+dC
、tp+4+d+dC
、tp+5+dC
、tp+d
、tm
、tm+1
、tm+2
、tm+p
、tm+1+p
、tm+2+p
、tm+p+dC
、tm+1+p+dC
、tm+2+p+dC‧‧‧時刻
i_a、i_b、a1、a2、e1、e2、DI、A‧‧‧輸入
o_a、o_b、Header_o_a、Header_o_b、DO‧‧‧輸出
參照說明書、權利要求書及附圖將會瞭解及理解本發明的這些及其他特徵及優點,在附圖中: 圖1是根據本發明實施例的用於計算的系統的示意性佈局圖。 圖2A是根據本發明實施例的用於計算的資料流程圖。 圖2B是根據本發明實施例的用於計算的資料流程圖。 圖2C是根據本發明實施例的用於計算的資料流程圖。 圖2D是根據本發明實施例的用於計算的資料流程圖。 圖2E是根據本發明實施例的用於計算的資料流程圖。 圖2F是根據本發明實施例的用於計算的資料流程圖。 圖2G是根據本發明實施例的用於計算的資料流程圖。 圖2H是根據本發明實施例的用於計算的資料流程圖。 圖2I是根據本發明實施例的用於計算的資料流程圖。 圖3A是根據本發明實施例的用於計算的資料流程圖。 圖3B是根據本發明實施例的用於計算的資料流程圖。 圖3C是根據本發明實施例的用於計算的資料流程圖。 圖3D是根據本發明實施例的用於計算的資料流程圖。 圖3E是根據本發明實施例的用於計算的資料流程圖。 圖4A是根據本發明實施例的節點鏈接的方塊圖。 圖4B是根據本發明實施例的節點的方塊圖。 圖4C是根據本發明實施例的控制電路的方塊圖。 圖5A是根據本發明實施例的用於計算的系統的一部分的方塊圖。 圖5B是根據本發明實施例的用於重新配置操作的資料流程圖。 圖6A是根據本發明實施例的處理單元的方塊圖。 圖6B是根據本發明實施例的處理單元的方塊圖。 圖7A是根據本發明實施例的暫用記憶體的方塊圖。 圖7B是根據本發明實施例的暫用記憶體的方塊圖。 圖7C是根據本發明實施例的暫用記憶體的方塊圖。 圖7D是根據本發明實施例的暫用記憶體的方塊圖。 圖7E是根據本發明實施例的暫用記憶體的方塊圖。
Claims (20)
- 一種用於計算的系統,包括: 多個處理單元電路; 通信結構,包括多個節點電路;以及 暫用記憶體, 所述暫用記憶體通過所述通信結構連接到所述處理單元電路, 所述處理單元電路中的一個或多個包括配置寄存器,所述配置寄存器被配置成儲存配置值, 所述處理單元電路中的一個或多個被配置成: 在兩個輸入端處接收相應的兩個資料字元,所述兩個資料字元中的每一者具有控制部分及資料部分,且: 當所述兩個資料字元中的一個資料字元具有將所述一個資料字元標識為處理單元配置字元的控制部分時,將所述處理單元配置字元的所述資料部分儲存在所述配置寄存器中;以及 當所述兩個資料字元均不是處理單元配置字元時,根據所述配置值對所述兩個資料字元執行操作。
- 如申請專利範圍第1項所述的系統,其中所述執行所述操作包括: 當所述配置值指定逐單元乘法時,將所述兩個資料字元中的第一資料字元的所述資料部分乘以所述兩個資料字元中的第二資料字元的所述資料部分。
- 如申請專利範圍第1項所述的系統,其中所述執行所述操作包括: 當所述配置值指定逐單元加法時,將所述兩個資料字元中的第一資料字元的所述資料部分加到所述兩個資料字元中的第二資料字元的所述資料部分。
- 如申請專利範圍第1項所述的系統,其中所述執行所述操作包括: 當所述配置值指定乘法與累加時: 通過將所述兩個資料字元中的第一資料字元的所述資料部分乘以所述兩個資料字元中的第二資料字元的所述資料部分來形成乘積,以及 將所述乘積加到累加器值。
- 如申請專利範圍第1項所述的系統,其中所述處理單元電路中的一者包括5,000個或少於5,000個閘。
- 如申請專利範圍第1項所述的系統,其中所述節點電路中的一者包括2,000個或少於2,000個閘。
- 一種用於計算的系統,包括: 多個處理單元電路; 通信結構,包括多個節點電路;以及 暫用記憶體, 所述暫用記憶體通過所述通信結構連接到所述處理單元電路, 所述節點電路中的一個或多個包括多個節點鏈接電路, 所述多個節點電路中的第一節點電路的所述多個節點鏈接電路中的第一節點鏈接電路具有多個輸入端並具有輸出端,且包括: 資料寄存器,以及 配置寄存器,被配置成儲存配置值, 所述第一節點鏈接電路被配置成在所述輸入端處接收相應的多個資料字元,所述資料字元中的每一者具有控制部分及資料部分,且: 當所述資料字元中的一個資料字元具有將所述一個資料字元標識為節點鏈接配置字元的控制部分時,將所述節點鏈接配置字元的所述資料部分儲存在所述配置寄存器中;以及 當所述資料字元均不是節點鏈接配置字元時,根據所述配置值而定: 將來自所述輸入端中的一者的資料字元發送到所述資料寄存器,和/或 將來自所述輸入端中的一者的資料字元發送到所述輸出端,和/或 將來自所述資料寄存器的資料字元發送到所述輸出端。
- 如申請專利範圍第7項所述的系統,其中所述節點電路中的一個或多個具有: 四個輸入端,在實質上正交的方向上從節點電路向內延伸,以及 四個輸出端,在實質上正交的方向上從所述節點電路向外延伸。
- 如申請專利範圍第8項所述的系統,其中一個或多個所述節點電路中的節點電路包括四個節點鏈接電路,所述四個節點鏈接電路各自具有: 四個輸入端,分別連接到所述節點電路的所述四個輸入端,以及 輸出端,連接到所述節點電路的所述四個輸出端中的相應一個輸出端。
- 如申請專利範圍第7項所述的系統,其中所述處理單元電路中的一者包括5,000個或少於5,000個閘。
- 如申請專利範圍第7項所述的系統,其中所述節點電路中的一者包括2,000個或少於2,000個閘。
- 如申請專利範圍第7項所述的系統,其中所述暫用記憶體包括: 儲存體;以及 儲存控制器, 所述儲存控制器包括多個列高速緩衝記憶體, 所述列高速緩衝記憶體中的一個或多個具有與所述資料字元相同的位元寬度,所述儲存控制器被配置成將資料從所述儲存體傳送到所述列高速緩衝記憶體以及從所述列高速緩衝記憶體傳送到所述儲存體, 所述列高速緩衝記憶體中的一個或多個被配置成: 串流輸出一系列資料字元,以及 串流輸入一系列資料字元。
- 如申請專利範圍第12項所述的系統,其中所述列高速緩衝記憶體中的一者是雙緩衝器。
- 如申請專利範圍第12項所述的系統,其中 所述資料字元中的每一個資料字元的所述控制部分具有為四個位元的寬度,且 所述資料字元中的每一個資料字元的所述資料部分具有為十六個位元的寬度。
- 一種用於計算的方法,包括: 對處理模組進行配置,所述處理模組包括: 多個處理單元電路; 通信結構,包括多個節點鏈接電路,所述多個節點鏈接電路各自具有多個輸入端並具有輸出端;以及 暫用記憶體, 所述配置包括: 由所述暫用記憶體發送多個節點鏈接配置字元,所述多個節點鏈接配置字元各自被定址到所述多個節點鏈接電路中的節點鏈接電路; 由所述多個節點鏈接電路中的第一節點鏈接電路接收被定址到所述第一節點鏈接電路的資料字元,所述第一節點鏈接電路具有連接到所述多個處理單元電路中的第一處理單元電路的輸入端的輸出端; 由所述第一節點鏈接電路設定所述第一節點鏈接電路的配置,以使所述第一節點鏈接電路將在所述第一節點鏈接電路的第一輸入端處接收的資料字元轉發到所述第一節點鏈接電路的所述輸出端; 由所述第一節點鏈接電路的所述第一輸入端接收處理單元配置字元; 由所述第一節點鏈接電路的所述第一輸入端將所述處理單元配置字元發送到所述第一處理單元電路;以及 由所述第一處理單元電路將所述處理單元配置字元的資料部分儲存在所述第一處理單元電路的配置寄存器中。
- 如申請專利範圍第15項所述的方法,其中還包括計算多個乘積,所述計算包括: 由所述暫用記憶體通過延伸經過第一多個節點鏈接電路的第一路徑將第一系列運算元發送到所述第一處理單元電路; 由所述暫用記憶體通過延伸經過第二多個節點鏈接電路的第二路徑將第二系列運算元發送到所述第一處理單元電路; 由所述第一處理單元電路計算一系列成對的乘積,所述一系列成對的乘積中的每一個成對的乘積是以下的乘積: 所述第一系列運算元中的運算元,與 所述第二系列運算元中的對應的運算元。
- 如申請專利範圍第16項所述的方法,其中還包括:將第一向量從稠密表示形式轉換成稀疏表示形式,所述第一向量包括具有非零值的第一單元以及緊接著的具有零值的第二單元,所述轉換包括以第一2元組替代所述第一單元,所述第一2元組具有: 與所述第一向量的所述第一單元相等的第一單元,以及 大於一的第二單元。
- 如申請專利範圍第17項所述的方法,其中還包括將第二向量的稀疏表示形式與所述第一向量的所述稀疏表示形式對齊,所述對齊包括: 從所述第二向量的所述稀疏表示形式刪除與所述第一向量的所述第二單元對應的2元組,以及 增大所述第二向量的第一2元組的第二單元的值,所述第二向量的所述第一2元組緊位於被刪除的所述2元組之前。
- 如申請專利範圍第18項所述的方法,其中還包括: 由所述多個處理單元電路中的處理單元電路將所述第一向量的所述第一2元組的所述第一單元乘以所述第二向量的所述第一2元組的第一單元,以形成結果2元組的第一單元;以及 將所述結果2元組的第二單元設定成等於所述第一向量的所述第一2元組的所述第二單元。
- 如申請專利範圍第15項所述的方法,其中所述處理單元電路中的一者包括5,000個或少於5,000個閘,且 所述節點鏈接電路中的一者包括500個或少於500個閘。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762607882P | 2017-12-19 | 2017-12-19 | |
US62/607,882 | 2017-12-19 | ||
US15/916,189 US11360930B2 (en) | 2017-12-19 | 2018-03-08 | Neural processing accelerator |
US15/916,189 | 2018-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928701A true TW201928701A (zh) | 2019-07-16 |
TWI795435B TWI795435B (zh) | 2023-03-11 |
Family
ID=66814458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107131346A TWI795435B (zh) | 2017-12-19 | 2018-09-06 | 用於計算的系統及方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11360930B2 (zh) |
JP (1) | JP7268996B2 (zh) |
KR (1) | KR102649482B1 (zh) |
CN (1) | CN110059820A (zh) |
TW (1) | TWI795435B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11996157B2 (en) | 2019-09-23 | 2024-05-28 | SK Hynix Inc. | Processing-in-memory (PIM) devices |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6860694B2 (ja) * | 2017-04-17 | 2021-04-21 | セレブラス システムズ インク. | 加速化ディープラーニングのタスクアクティベーション |
US11429861B1 (en) | 2017-05-01 | 2022-08-30 | Perceive Corporation | Device storing multiple sets of parameters for machine-trained network |
US11531727B1 (en) | 2018-04-20 | 2022-12-20 | Perceive Corporation | Computation of neural network node with large input values |
US11468145B1 (en) | 2018-04-20 | 2022-10-11 | Perceive Corporation | Storage of input values within core of neural network inference circuit |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US11049013B1 (en) | 2018-04-20 | 2021-06-29 | Perceive Corporation | Encoding of weight values stored on neural network inference circuit |
US11568227B1 (en) | 2018-04-20 | 2023-01-31 | Perceive Corporation | Neural network inference circuit read controller with multiple operational modes |
US11222257B1 (en) | 2018-04-20 | 2022-01-11 | Perceive Corporation | Non-dot product computations on neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
US11663454B2 (en) * | 2019-03-29 | 2023-05-30 | Aspiring Sky Co. Limited | Digital integrated circuit with embedded memory for neural network inferring |
US11514136B2 (en) * | 2019-05-17 | 2022-11-29 | Aspiring Sky Co. Limited | Circuit for neural network convolutional calculation of variable feature and kernel sizes |
US11941533B1 (en) | 2019-05-21 | 2024-03-26 | Perceive Corporation | Compiler for performing zero-channel removal |
US11811401B2 (en) | 2019-08-14 | 2023-11-07 | Google Llc | Dual-mode operation of application specific integrated circuits |
KR20220015680A (ko) * | 2020-07-31 | 2022-02-08 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
KR20220015813A (ko) * | 2020-07-31 | 2022-02-08 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
US11599139B1 (en) * | 2021-09-03 | 2023-03-07 | Xepic Corporation Limited | Dynamic adjustment of root clock frequency in logic system design during verification |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2129882A1 (en) | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
JP2001188767A (ja) * | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
WO2001067273A2 (en) * | 2000-03-08 | 2001-09-13 | Sun Microsystems, Inc. | Vliw computer processing architecture with on-chip dynamic ram |
US6836767B2 (en) * | 2001-10-03 | 2004-12-28 | International Business Machines Corporation | Pipelined hardware implementation of a neural network circuit |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
CN101427264A (zh) * | 2004-04-08 | 2009-05-06 | 硅奥普迪思公司 | 用于位平面数据的高密度存储和处理的方法和装置 |
JP4547198B2 (ja) | 2004-06-30 | 2010-09-22 | 富士通株式会社 | 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体 |
JP4743581B2 (ja) * | 2004-09-17 | 2011-08-10 | 富士ゼロックス株式会社 | データ処理システムおよびその制御方法 |
KR101595637B1 (ko) * | 2011-04-01 | 2016-02-18 | 인텔 코포레이션 | 벡터 친숙형 명령어 형식 및 그의 실행 |
US9237095B2 (en) * | 2012-02-17 | 2016-01-12 | Netronome Systems, Inc. | Island-based network flow processor integrated circuit |
US8990616B2 (en) | 2012-09-28 | 2015-03-24 | International Business Machines Corporation | Final faulty core recovery mechanisms for a two-dimensional network on a processor array |
US9160617B2 (en) | 2012-09-28 | 2015-10-13 | International Business Machines Corporation | Faulty core recovery mechanisms for a three-dimensional network on a processor array |
KR20150127608A (ko) * | 2013-03-01 | 2015-11-17 | 아토나프 가부시키가이샤 | 데이터 처리 장치 및 그 제어 방법 |
JP2015088058A (ja) * | 2013-10-31 | 2015-05-07 | キヤノン株式会社 | 情報処理装置およびその制御方法 |
US10417525B2 (en) | 2014-09-22 | 2019-09-17 | Samsung Electronics Co., Ltd. | Object recognition with reduced neural network weight precision |
EP3035203A1 (en) | 2014-12-19 | 2016-06-22 | Intel Corporation | Fine-grain storage interface and method for low power accelerators |
EP3035249B1 (en) | 2014-12-19 | 2019-11-27 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10552370B2 (en) * | 2015-10-08 | 2020-02-04 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with output buffer feedback for performing recurrent neural network computations |
US10372947B2 (en) * | 2016-12-02 | 2019-08-06 | Microsoft Technology Licensing, Llc | Parsing, processing, and/or securing stream buffers |
-
2018
- 2018-03-08 US US15/916,189 patent/US11360930B2/en active Active
- 2018-09-06 TW TW107131346A patent/TWI795435B/zh active
- 2018-09-27 KR KR1020180115294A patent/KR102649482B1/ko active IP Right Grant
- 2018-12-17 JP JP2018235311A patent/JP7268996B2/ja active Active
- 2018-12-18 CN CN201811548728.2A patent/CN110059820A/zh active Pending
-
2022
- 2022-05-23 US US17/751,487 patent/US11645224B2/en active Active
-
2023
- 2023-04-11 US US18/133,306 patent/US11995027B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11996157B2 (en) | 2019-09-23 | 2024-05-28 | SK Hynix Inc. | Processing-in-memory (PIM) devices |
Also Published As
Publication number | Publication date |
---|---|
US11995027B2 (en) | 2024-05-28 |
US20190187983A1 (en) | 2019-06-20 |
US20220292049A1 (en) | 2022-09-15 |
KR102649482B1 (ko) | 2024-03-20 |
KR20190074195A (ko) | 2019-06-27 |
US11360930B2 (en) | 2022-06-14 |
JP7268996B2 (ja) | 2023-05-08 |
JP2019109892A (ja) | 2019-07-04 |
TWI795435B (zh) | 2023-03-11 |
CN110059820A (zh) | 2019-07-26 |
US11645224B2 (en) | 2023-05-09 |
US20230244632A1 (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201928701A (zh) | 用於計算的系統及方法 | |
EP3566134B1 (en) | Multi-function unit for programmable hardware nodes for neural network processing | |
US11347477B2 (en) | Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations | |
CN110033086B (zh) | 用于神经网络卷积运算的硬件加速器 | |
US11119765B2 (en) | Processor with processing cores each including arithmetic unit array | |
US10879904B1 (en) | Application specific integrated circuit accelerators | |
JP2018055677A (ja) | 外積累算演算のためのプロセッサおよび方法 | |
US20190212982A1 (en) | Processor, information processing apparatus and operation method for processor | |
CN110059805B (zh) | 用于二值阵列张量处理器的方法 | |
US20200293283A1 (en) | Programmable multiply-add array hardware | |
JP2007522571A (ja) | 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置 | |
Konishi et al. | PCA-1: A fully asynchronous, self-reconfigurable LSI | |
US20210232902A1 (en) | Data Flow Architecture for Processing with Memory Computation Modules | |
JP7282980B2 (ja) | オンチップ動作の初期化 | |
US11016822B1 (en) | Cascade streaming between data processing engines in an array | |
Belletti et al. | QCD on the cell broadband engine | |
CN111078286B (zh) | 数据通信方法、计算系统和存储介质 | |
JP2005531843A (ja) | アレイプロセッサにおける除算 | |
Yeniceri et al. | An emulated digital wave computer core implementation | |
KR102416325B1 (ko) | 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 | |
Raha et al. | 8.2 A Versatile 7nm Adaptive Compute Acceleration Platform Processor | |
US20230058749A1 (en) | Adaptive matrix multipliers | |
US11921559B2 (en) | Power grid distribution for tensor streaming processors | |
Shenoy et al. | Design and Implementation of Reconfigurable Neural Network Accelerator | |
Martínez-Álvarez et al. | An expandable hardware platform for implementation of CNN-based applications |