TWI811450B - 張量計算資料流程加速器半導體電路 - Google Patents
張量計算資料流程加速器半導體電路 Download PDFInfo
- Publication number
- TWI811450B TWI811450B TW108132890A TW108132890A TWI811450B TW I811450 B TWI811450 B TW I811450B TW 108132890 A TW108132890 A TW 108132890A TW 108132890 A TW108132890 A TW 108132890A TW I811450 B TWI811450 B TW I811450B
- Authority
- TW
- Taiwan
- Prior art keywords
- data flow
- flow accelerator
- processing
- semiconductor circuit
- tensor
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 92
- 239000011159 matrix material Substances 0.000 claims abstract description 62
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 claims abstract description 52
- 229910052710 silicon Inorganic materials 0.000 claims abstract description 52
- 239000010703 silicon Substances 0.000 claims abstract description 52
- 230000002093 peripheral effect Effects 0.000 claims abstract description 39
- 230000036961 partial effect Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 196
- 239000000872 buffer Substances 0.000 claims description 117
- 239000013598 vector Substances 0.000 claims description 60
- 238000004364 calculation method Methods 0.000 claims description 14
- 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 claims description 10
- 230000002441 reversible effect Effects 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 abstract description 8
- 230000000644 propagated effect Effects 0.000 abstract description 8
- 230000017105 transposition Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 47
- 239000011229 interlayer Substances 0.000 description 30
- 238000007667 floating Methods 0.000 description 15
- 239000010410 layer Substances 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013506 data mapping Methods 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000001994 activation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010367 cloning Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012546 transfer 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/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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/008—Artificial life, i.e. computing arrangements simulating life based on physical entities controlled by simulated intelligence so as to replicate intelligent life forms, e.g. based on robots replicating pets or humans in their appearance or behaviour
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B12/00—Dynamic random access memory [DRAM] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Robotics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Complex Calculations (AREA)
- Power Engineering (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
Abstract
本發明揭露一種張量計算資料流程加速器半導體電路。
張量計算資料流程加速器半導體電路包括動態隨機存取記憶體記憶體庫及與動態隨機存取記憶體記憶體庫相鄰設置的乘法加法單元的週邊陣列。乘法加法單元的週邊陣列配置成形成流水線式資料流程鏈,其中來自乘法加法單元的陣列的一個乘法加法單元的部分輸出資料被饋送到乘法加法單元的陣列的另一乘法加法單元以進行資料累積。近動態隨機存取記憶體處理資料流程加速器單元裸晶可堆疊在基礎裸晶頂。基礎裸晶可與處理器或控制器相鄰地設置在被動矽中間層。近動態隨機存取記憶體處理資料流程加速器單元可並行處理部分矩陣輸出資料。部分矩陣輸出資料可以正向或反向方向傳播。張量計算資料流程加速器可實行部分矩陣轉置。
Description
本申請主張在2018年12月7日提出申請的序號為62/777,046的美國專利申請的權利,所述美國專利申請併入本申請供參考。
本發明概念涉及深度學習,且更具體來說,涉及一種用於深度學習中的通用矩陣-矩陣乘法及張量計算的資料流程加速器架構。
深度神經網路被認為是有望實現人工智慧的方法且已在許多應用中展現出其有效性。訓練深度神經網路需要高的精度及寬的動態範圍二者,這要求進行高效的浮點運算(floating point operation)。包括大多數浮點運算且在訓練深度神經網路中佔用最多時間的張量計算(tensor computation)是進行加速的關鍵基元運算(primitive operation)。由於計算性能按比例縮放得比記憶體頻寬及潛伏時間快得多且片外資料移動(off-chip data movement)
比浮點運算多消耗兩個數量級的能量,因此用於張量計算的以計算為中心的加速器會遭受“記憶體牆(memory wall)”問題。
張量計算在深度學習中對各種各樣的應用起著重要作用。能夠在記憶體模組內部或記憶體模組附近實現計算能力的記憶體內處理(process-in-memory,PIM)架構因其內部頻寬大、資料移動減少及大規模記憶體並行度而展現出使張量計算加速的潛力。然而,傳統的PIM方法主要探索深度學習推理應用,深度學習推理應用可容忍降低的精度,但也可能無法進行複雜的浮點訓練任務。近資料處理(Near-Data-Processing,NDP)架構侵入性較小且將複雜的算數邏輯單位(Arithmetic Logic Unit,ALU)放置在記憶體核心記憶體庫之外。然而,由於面積預算的原因,ALU的數目會受到嚴格限制,且與以計算為中心的架構相比,NDP方法還會損失大量的內部頻寬。與以計算為中心的方法相比,這些缺點使NDP架構在浮點性能方面不太有效。
另外,將浮點單元簡單地相加來滿足張量處理的計算需求會導致動態隨機存取記憶體(dynamic random access memory,DRAM)裸晶中出現顯著且不可接受的面積開銷。另外,新興的基於非揮發性記憶體的加速器會遭受寫入耐久性差及寫入潛伏時間長的問題,這不適合於寫入密集型深度學習訓練任務。另外,基於靜態隨機存取記憶體(static random-access memory,SRAM)的加速器不具有足夠的晶片上儲存容量來儲存進行深度學習訓練所需的所有模型參數及中間結果。
本文中所揭露的發明概念包括一種張量計算資料流程加速器半導體電路。所述張量計算資料流程加速器半導體電路包括DRAM記憶體庫及與DRAM記憶體庫相鄰地設置的乘法加法單元的週邊陣列。乘法加法單元的週邊陣列被配置成形成流水線式資料流程鏈,在所述流水線式資料流程鏈中,來自乘法加法單元的陣列中的一個乘法加法單元的部分輸出資料被饋送到乘法加法單元的陣列中的另一乘法加法單元中以進行資料累積。近DRAM處理資料流程(NDP-DF)加速器單元裸晶可堆疊在基礎裸晶頂上。基礎裸晶可與處理器或控制器相鄰地設置在被動矽中間層上。NDP-DF加速器單元可並行地處理部分矩陣輸出資料。部分矩陣輸出資料可在正向方向或反向方向上傳播。張量計算資料流程加速器可實行部分矩陣轉置。
100:標量浮點乘法累積引擎/浮點乘法累積引擎
105:查找表/完整查找表
110:符號位元邏輯
115:加法器電路
120:累加器
125、130、430、730、930:參考符號
135:輸出
140:乘積
145:A符號位元/B符號位元
150:A指數/B指數
155:A分數/B分數
200、1000、1100、1300、2000:方塊圖
202:本地動態隨機存取記憶體(DRAM)記憶體庫/本機存放區體
220:C表項
225:A表項
230:B表項
235、235a、235b:查找表緩衝器
300:通用矩陣-矩陣乘法(GEMM)資料流程加速器
305:B向量緩衝器
310:A向量緩衝器
315a、315b:加法器
320:輸出緩衝器
325:查找表陣列
330:資料陣列
335:查找表緩衝器部
340:結果
400:整合堆疊資料流程加速器
405:層/堆疊
410:近DRAM處理資料流程(NDP-DF)加速器單元/NDP-DF裸晶
415、615、815、2405:基礎裸晶
420、620、820、2505:被動矽中間層
425:xPU/處理器
435、2115、2120、2140:矽通孔(TSV)
500、700、900:主機
505、705、905:通訊鏈路
600、800:離散堆疊資料流程加速器
625、2125:控制器
825:控制器/開關
850、2130:開關
1005:線
1010:實線
1015:虛線
1105、1220:輸入緩衝器
1110:脈動乘法累積(MAC)陣列
1200、2500、2600:張量計算資料流程加速器
1205:雙緩衝器
1210:MAC單元
1215、PE[1]、PE[2]、PE[3]、PE[4]、PE[5]、PE[6]、PE[7]、PE[8]:處理引擎(PE)
1225:權重緩衝器/本地權重緩衝器
1230:部分和緩衝器
1235、2650:垂直虛線
1240、2655:水平實線
1305:乘法器電路
1310:加法器電路
1405:高度
1410:寬度
2005:第一輸入張量
2010:第一權重張量
2015:第二輸入張量
2020:第二權重張量
2025:第一分塊組/資料饋送
2030:第二分塊組
2035:第三分塊組
2040:第四分塊組
2105、PG[1]、PG[2]、PG[8]:處理組(PG)
2110:共用資料匯流排
2205:立方體
2210、2215:堆疊
2410:網路介面
2415:可程式化核心
2420:庫週邊裝置
2425:緩衝器
2430:算數邏輯單位(ALU)
2605:DRAM記憶體庫/本地DRAM記憶體庫
2610:資料緩衝器
2615:第一被乘數緩衝器
2620:多工器
2625:輸入先進先出(FIFO)
2630:第二被乘數緩衝器
2635:MAC
2640:輸出FIFO
2700:正向傳播資料佈局及資料流程/資料佈局及資料流程
2705:輸出矩陣
2710、2715:部分向量
2720:外積運算
2725:輸入矩陣
2730:權重矩陣
2735:輸出次序
2740:方框
3000:反向傳播資料佈局及資料流程
3005:虛線/線
3010:實線/線
3015:輸出資料記憶體庫
B0、B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15:智慧記憶體庫單元
CH0、CH1:通道
CG[1]、CG[2]、CG[3]、CG[4]、CG[5]、CG[6]、CG[7]、CG[8]:
計算組
T1、T2、TM、TN:輸入張量
W1、W2、WM、WN:權重張量
參照附圖閱讀以下詳細說明,本發明原理的上述及其他特徵及優點將變得更顯而易見,在附圖中:圖1是根據本文中所揭露的一些實施例的使用查找表的標量乘法累積運算的示例性方塊圖及流程圖。
圖2是示出根據本文中所揭露的一些實施例的本地DRAM記憶體庫的示例性方塊圖,本地DRAM記憶體庫包括完整查找表及相關聯的輸入矩陣以用於計算。
圖3是根據本文中所揭露的一些實施例的GEMM資料流程加速器的示例性方塊圖。
圖4是示出根據本文中所揭露的一些實施例的整合堆疊資料
流程加速器的側視立面圖的示例性方塊圖。
圖5是示出根據本文中所揭露的一些實施例的整合堆疊資料流程加速器的平面圖的示例性方塊圖。
圖6是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器的側視立面圖的示例性方塊圖。
圖7是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器的平面圖的示例性方塊圖。
圖8是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器的側視立面圖的示例性方塊圖。
圖9是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器的平面圖的示例性方塊圖。
圖10是根據本文中所揭露的一些實施例的包括可與GEMM資料流程加速器結合使用的單個近動態隨機存取記憶體處理資料流程(near-DRAM-processing dataflow,NDP-DF)裸晶的內容的示例性方塊圖。
圖11是根據本文中所揭露的一些實施例的包括可與張量計算資料流程加速器結合使用的單個NDP-DF裸晶的內容的示例性方塊圖。
圖12是根據本文中所揭露的一些實施例的張量計算資料流程加速器的示例性方塊圖。
圖13是乘法累積單元(multiply and accumulate,MAC)的示例性方塊圖。
圖14是示出脈動MAC陣列的高度及脈動MAC陣列的寬度的示例性方塊圖。
圖15是層間資料饋送及分塊技術(tiling technique)的示例性方塊圖。
圖16是根據本文中所揭露的一些實施例的張量計算資料流程加速器的處理組(processing group,PG)的微架構的示例性方塊圖。
圖17是根據本文中所揭露的一些實施例的張量計算資料流程加速器的PG的立方體的示例性側視立面圖。
圖18是根據本文中所揭露的一些實施例的包括多個PG的庫(vault)的張量計算資料流程加速器的PG的立方體的示例性平面圖。
圖19是根據本文中所揭露的一些實施例的張量計算資料流程加速器的基礎裸晶的示例圖。
圖20是根據本文中所揭露的一些實施例的包括被動矽中間層及設置在被動矽中間層上的多個立方體的張量計算資料流程加速器的示例性方塊圖。
圖21是根據本文中所揭露的一些實施例的張量計算資料流程加速器的示例性方塊圖。
圖22是根據本文中所揭露的一些實施例的正向傳播資料佈局及資料流程的示例性方塊圖。
圖23是根據本文中所揭露的一些實施例的包括連接在一起的多個處理組的計算組的示例性方塊圖。
圖24是根據本文中所揭露的一些實施例的張量計算資料流程加速器的多個立方體的示例性方塊圖,其示出如何實行歸約運算(reduction operation)。
圖25到圖27是根據本文中所揭露的一些實施例的反向傳播資料佈局及資料流程的示例性方塊圖。
現將詳細參照本發明概念的實施例,本發明概念的實例在附圖中示出。在以下詳細說明中,闡述諸多具體細節以實現對本發明概念的透徹理解。然而應理解,所屬領域中的普通技術人員無需這些具體細節也可實踐本發明概念。在其他情形中,未詳細闡述眾所周知的方法、程式、元件、電路及網路,以免使實施例的各個方面模糊不清。
應理解,儘管本文中可能使用“第一(first)”、“第二(second)”等用語來闡述各種元件,然而這些元件不應受這些用語限制。這些用語僅用於區分各個元件。舉例來說,在不背離本發明概念的範圍的條件下,“第一堆疊”可被稱為“第二堆疊”,且相似地,“第二堆疊”可被稱為“第一堆疊”。
在本文對本發明概念的說明中所用的用語僅用於闡述特定實施例,而並非旨在對本發明進行限制。除非上下文清楚地另外指明,否則在對本發明概念的說明及隨附的權利要求書中使用的單數形式“一(a、an)”及“所述(the)”旨在也包括複數形式。還應理解,本文中使用的用語“和/或”指代且囊括相關列出項中的任意者及相關列出項中的一者或多者的所有可能的組合。還應理解,當在本說明書中使用用語“包括(comprises)”和/或“包括(comprising)”時,其指明所述特徵、整數、步驟、操作、元件、和/或元件的存在,但不排除一個或多個其他特徵、
整數、步驟、操作、元件、元件和/或其群組的存在或添加。圖式的元件及特徵未必按比例繪製。
本揭露涉及一種用於深度學習中的通用矩陣-矩陣乘法(general matrix-matrix multiplication;GEMM)及張量計算的資料流程加速器架構。本文中所揭露的實施例將浮點標量-向量乘法變換成在基於動態隨機存取記憶體(DRAM)的查找表中進行的併發查找運算(concurrent lookup operation),且將DRAM核心記憶體庫之外的所有週邊邏輯支援進行相加。因此,相對於單純將浮點乘法單元相加而言,會消耗較小的面積且實現較短的潛伏時間。本文中所揭露的實施例比原位類比(in-situ analog)PIM單元更實用,原位類比PIM單元需要對記憶體感測電路進行明顯的修改。為減少在表查找期間列啟動的數目,週邊邏輯可採用一個或多個查找表緩衝器來緩存查找結果,且所揭露的資料映射在批量深度學習訓練任務中產生極高的緩衝器命中率(buffer hit rate)。所揭露的映射還保證輸入張量來自本地DRAM記憶體庫,因此將記憶體庫原始內部頻寬完全用於讀取流量。為改善可按比例縮放性(scalability)及寫入流量,揭露一種脈動陣列資料流程架構,所述脈動陣列資料流程架構跨越多個記憶體庫及通道來對張量計算進行按比例縮放,使得相鄰的記憶體庫或通道以生產者-消費者流水線方式運行,且資料可僅在最終階段被寫入到記憶體庫中。為支援稀疏張量計算,可使用零跳過(zero-skipping)邏輯。
本文中所揭露的實施例使用記憶體查找表(lookup table,LUT)來實施乘數,其中乘數可用作列位址,且被乘數可用作行位址。LUT的寬度可包含在記憶體庫中,且可在DRAM子
陣列中高效地儲存及存取。為減少既消耗功率又消耗時間的DRAM LUT列啟動,可在記憶體庫週邊電路中添加LUT緩衝器,且可使用通用矩陣-矩陣乘法(GEMM)分塊技術來增加LUT緩衝器中查找結果的重複使用。為改善輸送量,可使用基於查找的張量外積處理引擎(processing engine,PE)。每一緩衝器可被分成若干區段,每一區段可服務於一個獨立的基於值的查找。在記憶體庫週邊中也可包括累加器,以採用分時多工技術(time-multiplexed technique)來聚合部分和(partial sum)。為避免回寫(write-back)及重新載入部分和,可採用脈動資料流程架構,其中前一記憶體庫的累加器可傳輸累加器的當前部分和以用於下一記憶體庫的累積,且最末記憶體庫可將其結果中繼到其他通道。3D堆疊中的矽通孔(Through-silicon-via,TSV)可用于提供高的通道間資料傳輸頻寬。所揭露的GEMM區塊映射技術可將任意大小的輸入張量分佈在同一資料流程組中的所有記憶體庫上。由於輸入部分張量(input partial tensor)及LUT對於記憶體庫來說均是本地的,因此可使用寬的記憶體庫介面(例如,256位元)來存取張量,且可使用列克隆引用(row-clone citation)在一個循環內存取LUT的整個列。
因此,基於DRAM的查找表可與近記憶體資料流程架構一同使用,以對深度學習中的浮點張量計算進行加速,從而與以計算為中心的方法相比增加頻寬可按比例縮放性的有益效果。支援記憶體內查找資料流程張量計算。使用記憶體庫內部頻寬的基於外積的GEMM區塊映射會減少列啟動且增加頻寬可按比例縮放性。
本文中所揭露的實施例可包括基於DRAM的三維堆疊加速器,基於DRAM的三維堆疊加速器具有充足的晶片上儲存容量、對稱的讀取/寫入性能,且不存在寫入耐久性問題。三維堆疊可增大記憶體及計算的密度,且提供高頻寬裸晶間通訊。由於浮點乘數器的大部分面積由分數乘法器主導,因此整個分數乘法表可以可忽略不計的容量開銷儲存在一個DRAM記憶體庫中。並行乘法可轉變成並行查找計算。通過在每一記憶體庫旁邊添加週邊電路,可將一個記憶體庫變換成一個PE,以減輕查找開銷並提高PE的性能。所揭露的資料映射技術保證所有讀取流量均處於每一記憶體庫的本地以縮短資料移動距離,且還使用記憶體庫級(bank-level)讀取頻寬。本文中揭露了記憶體庫級電路及微架構細節。為在將資料回寫之前增加資料的重複使用,可對通道內的多個記憶體庫使用脈動資料流程架構,其中部分結果被傳播到鄰近的記憶體庫以用於累積。為維持流暢的資料流程並使每一記憶體庫的利用率最大化,可使用高效的資料饋送技術進行神經網路層間資料移動。對於更一般的神經網路訓練,可將一個或多個通用ALU設置在三維堆疊的基礎裸晶上,以實現重要但不耗時的運算(例如批量正規化、啟動及池化(pooling))。本文中還揭露了裸晶及堆疊級架構細節。還揭露了一種可按比例縮放技術,以將任意大小的矩陣乘法及卷積運算公式化為向量外積運算、使用流水線並行度及資料並行度程式化來決定資料映射且對計算進行調度。還揭露了用於加速器的新架構及控制器設計。本文中還揭露了控制器、計算調度、整個應用資料映射、及系統整合方面。
圖1是根據本文中所揭露的一些實施例的使用查找表的
標量浮點乘法累積引擎100的示例性方塊圖。浮點乘法累積引擎100可包括查找表105、符號位元邏輯110、加法器電路115及累加器120。查找表105可在125處接收A分數155列位址且在130處接收B分數155行位址。換句話說,A分數155的值用作查找表105中的列位址,且B分數155的值用作查找表105中的行位址。因此,不再需要傳統上使用的部分乘積乘法器。因此節省了大量裸晶面積。來自查找表105的輸出135與由符號位元邏輯110確定的A符號位元145及B符號位元145進行組合。符號位元(例如,A符號位元145及B符號位元145)指示乘法結果的符號。加法器電路115可將與A分數及B分數相關聯的指數(例如,A指數150及B指數150)相加。乘法運算的乘積140可由累加器120進行累積。在一些實施例中,乘積140是11位元的值。查找表105可為基於DRAM的查找表。基於DRAM的查找表105可用于實施向量外積。在一些實施例中,基於DRAM的查找表105的大小是16百萬位元(Mb)。
週邊邏輯可包括在DRAM記憶體庫之外,使得無需改變DRAM核心。與在DRAM記憶體庫之外使用乘法累積(multiply-and-accumulate,MAC)單元相比,基於DRAM的查找表105節省了大量面積及處理開銷。另外,與基礎邏輯裸晶上的NDP相比,基於DRAM的查找表105提供了更高的內部頻寬(例如,記憶體庫級頻寬)及更高的計算性能。因此,在使用查找表105的記憶體內處理(PIM)架構中支援浮點張量乘法。
圖2是示出根據本文中所揭露的一些實施例的包括完整查找表105的本地DRAM記憶體庫202的示例性方塊圖200。查
找表105可包括兩個整數的所有可能組合的乘積結果。所述兩個整數具有相同的位元長度,所述位元長度等於浮點數的分數部分的長度。A表項225及B表項230可儲存在本地DRAM記憶體庫(例如,202)中,且C表項220可在不同PE之間傳播及累積。鏈中的最終PE可使所累積的C表項220儲存回本地DRAM記憶體庫(例如,202)。A表項225可直接從本地DRAM記憶體庫202串流傳輸,從而使用DRAM列緩衝器及高的記憶體庫讀取頻寬。B表項230可包括一個或多個權重且可用作從本機存放區體202存取完整查找表105的列位址。在從本地DRAM記憶體庫202串流傳輸A表項225的同時,完整查找表105的結果可在查找表緩衝器235中臨時靜止不動,如以下所進一步闡釋。
圖3是根據本文中所揭露的一些實施例的GEMM資料流程加速器300的示例性方塊圖。GEMM資料流程加速器300可包括本地DRAM記憶體庫202、包括多個查找表緩衝器(例如,235a及235b)的查找表緩衝器部335。GEMM資料流程加速器300還可包括B向量緩衝器305及A向量緩衝器310。GEMM資料流程加速器300還可包括一個或多個加法器(例如,315a及315b)。GEMM資料流程加速器300還可包括輸出緩衝器320。
GEMM資料流程加速器300可實行一個或多個外積運算。在由圓圈1指示的第一步驟中,可從本地DRAM記憶體庫202讀取B向量並將B向量儲存在B向量緩衝器305中。在圓圈2處,在DRAM列克隆運算中,可將B向量保存到查找表緩衝器235a中。在由圓圈3指示的第三步驟中,可從本地DRAM記憶體庫202讀取A向量並將A向量儲存在A向量緩衝器310中。在圓圈4處,
可將A向量串流傳輸到查找表緩衝器(例如,235a及235b)中的一者或多者,且可基於與DRAM記憶體庫202中的查找表(例如,圖1的105)相關聯的A向量及B向量資訊來確定乘積(例如,圖1的140)。換句話說,查找表緩衝器(例如,235a及235b)可在不實行乘法運算的情況下確定乘積。在圓圈5處,可對乘積(例如,圖1的140)實行加法運算。加法運算的結果340可儲存在輸出緩衝器320中。換句話說,可將所述乘積與另一乘積相加且對乘積的和進行累積。在圓圈6處,輸出緩衝器320可將結果340發送到查找表陣列325和/或資料陣列330。
步驟圓圈1、圓圈2及圓圈3可利用記憶體庫級高頻寬。步驟圓圈3、圓圈4、圓圈5及圓圈6處所示的步驟可重複進行多次,且比步驟圓圈1及圓圈2多重複進行許多倍。這是因為,對於在查找表緩衝器部335中提供的所述多個查找表緩衝器(例如,235a及235b),可存在高的緩衝器命中率。因此,通過在查找表緩衝器部335中提供許多查找表緩衝器(例如,235a及235b),儲存在DRAM記憶體庫202中的完整查找表(例如,105)的性能會顯著改善。舉例來說,可使用8個、16個、32個、64個、128個、256個或更多個查找表緩衝器。
圖4是示出根據本文中所揭露的一些實施例的整合堆疊資料流程加速器400的側視立面圖的示例性方塊圖。整合堆疊資料流程加速器400可包括近DRAM處理資料流程(NDP-DF)加速器單元410的多個層405。儘管圖4示出了四個NDP-DF加速器單元410,然而應理解,可彼此上下堆疊任何合適數目的NDP-DF加速器單元410。NDP-DF加速器單元410可在垂直方向上彼此上
下堆疊。NDP-DF加速器單元410可堆疊在基礎裸晶415上。基礎裸晶415可包括控制器、緩衝器、處理邏輯等。基礎裸晶415可堆疊在被動矽中間層420上。處理器(例如,xPU 425)可與基礎裸晶415相鄰地堆疊在被動矽中間層420上。處理器可為中央處理器(central processing unit,CPU)、圖形處理單元(graphical processing unit,GPU)或其他合適的處理器。
計算可從處理器425卸載到NDP-DF加速器單元410的堆疊405及基礎裸晶415上,如430處所示。矽通孔(TSV)435可設置成穿過NDP-DF加速器單元410中的一者或多者。TSV 435可對NDP-DF加速器單元410與基礎裸晶415進行互連。作為另外一種選擇或另外,TSV 435可對基礎裸晶415與處理器425進行互連。TSV 435可通過被動矽中間層420對基礎裸晶415與處理器425進行互連。
圖5是示出根據本文中所揭露的一些實施例的整合堆疊資料流程加速器400的平面圖的示例性方塊圖。整合堆疊資料流程加速器400可包括NDP-DF加速器單元410的多個堆疊405。NDP-DF加速器單元410的堆疊中的每一者可通過被動矽中間層420以通訊方式耦合到處理器425。主機500可通過通訊鏈路505以通訊方式耦合到整合堆疊資料流程加速器400。通訊鏈路505可為有線鏈路、無線鏈路、卡、埠等。
圖6是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器600的側視立面圖的示例性方塊圖。離散堆疊資料流程加速器600可包括NDP-DF加速器單元410的多個層405。儘管圖6示出了四個NDP-DF加速器單元410,然而應理解,可彼
此上下堆疊任何合適數目的NDP-DF加速器單元410。NDP-DF加速器單元410可在垂直方向上彼此上下堆疊。NDP-DF加速器單元410可堆疊在基礎裸晶615上。基礎裸晶615可包括控制器、緩衝器、處理邏輯等。基礎裸晶615可堆疊在被動矽中間層620上。控制器625可與基礎裸晶615相鄰地堆疊在被動矽中間層620上。
矽通孔(TSV)435可設置成穿過NDP-DF加速器單元410中的一者或多者。TSV 435可對NDP-DF加速器單元410與基礎裸晶615進行互連。作為另外一種選擇或另外,TSV 435可對基礎裸晶615與控制器625進行互連。TSV 435可通過被動矽中間層620對基礎裸晶615與控制器625進行互連。
圖7是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器600的平面圖的示例性方塊圖。離散堆疊資料流程加速器600可包括NDP-DF加速器單元410的多個堆疊405。NDP-DF加速器單元410的堆疊中的每一者可通過被動矽中間層620以通訊方式耦合到控制器625。主機700可通過通訊鏈路705以通訊方式耦合到離散堆疊資料流程加速器600。通訊鏈路705可為有線鏈路、無線鏈路、卡、埠等。計算可從主機700卸載到離散堆疊資料流程加速器600上,如730處所示。
圖8是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器800的側視立面圖的示例性方塊圖。離散堆疊資料流程加速器800可包括近DRAM處理資料流程(NDP-DF)加速器單元410的多個層405。儘管圖8示出了每一堆疊405的四個NDP-DF加速器單元410,然而應理解,可彼此上下堆疊任何合適數目的NDP-DF加速器單元410。NDP-DF加速器單元410可在垂
直方向上彼此上下堆疊。每一堆疊405中的NDP-DF加速器單元410可堆疊在對應的基礎裸晶(例如,815)上。每一基礎裸晶815可包括控制器、緩衝器、處理邏輯等。每一基礎裸晶815可堆疊在被動矽中間層820上。控制器825可與基礎裸晶815中的一者相鄰地堆疊在被動矽中間層820上。
矽通孔(TSV)435可設置成穿過NDP-DF加速器單元410中的一者或多者。TSV 435可對NDP-DF加速器單元410與對應的基礎裸晶815進行互連。作為另外一種選擇或另外,TSV 435可對每一基礎裸晶815與控制器825進行互連。TSV 435可通過被動矽中間層820對每一基礎裸晶815與控制器825進行互連。一個或多個開關850可與基礎裸晶815中的一者或多者相鄰地設置在被動矽中間層820上。在一些實施例中,控制器825也包括開關。
圖9是示出根據本文中所揭露的一些實施例的離散堆疊資料流程加速器800的平面圖的示例性方塊圖。離散堆疊資料流程加速器800可包括NDP-DF加速器單元410的多個堆疊405。在一些實施例中,NDP-DF加速器單元410具有十二(12)個堆疊405。在一些實施例中,除了控制器/開關825之外,還具有四(4)個開關850。每一開關850可以通訊方式耦合到NDP-DF加速器單元410的堆疊405中的四(4)個堆疊405。NDP-DF加速器單元410的堆疊中的每一者可通過開關850和/或被動矽中間層820以通訊方式耦合到控制器825。在一些實施例中,控制器/開關825設置在被動矽中間層820的中心區中,其中在任一側上具有NDP-DF加速器單元410的六(6)個堆疊405且在任一側上具有
兩(2)個開關850。
主機900可通過通訊鏈路905以通訊方式耦合到離散堆疊資料流程加速器800。通訊鏈路905可為有線鏈路、無線鏈路、卡、埠等。計算可從主機900卸載到離散堆疊資料流程加速器800上,如930處所示。
圖10是包括可與上述浮點乘法累積引擎100和/或GEMM資料流程加速器300結合使用的單個NDP-DF裸晶410的內容的示例性方塊圖1000。NDP-DF裸晶410可包括多個通道(例如,CH0、CH1)。通道(例如,CH0、CH1)中的每一者可包括多個智慧記憶體庫單元(例如,B0、B1到B15)。通道(例如,CH0、CH1)可通過線1005彼此連接。舉例來說,CH0的智慧記憶體庫單元B12的輸出可連接到CH1的智慧記憶體庫單元B0的輸入。TSV 435可將通道(例如,CH0、CH1)連接到其他NDP-DF裸晶410(例如,如圖4到圖9所示的NDP-DF裸晶410)的其他通道。每一通道(例如,CH1)內的實線1010表示通過此通道的智慧記憶體庫單元中的每一者的脈動資料流程方向。換句話說,脈動資料流程可以蛇形方式行進穿過智慧記憶體庫單元中的每一者,即從智慧記憶體庫單元B0開始,接著行進到智慧記憶體庫單元B3,接著改變方向並以相反的方向從智慧記憶體庫單元B7行進到智慧記憶體庫單元B4,接著再次改變方向,依此類推。每一通道(例如,CH1)內的虛線1015表示記憶體庫資料輸入/輸出(input/output,I/O)路徑。因此,記憶體庫資料I/O路徑穿過通過智慧記憶體庫單元的蛇形資料流程。
智慧記憶體庫單元(例如,B0)中的每一者可包括DRAM
記憶體庫(例如,圖3的202)。DRAM記憶體庫(例如,202)中的每一者可包括完整查找表(例如,圖1的105)。DRAM記憶體庫(例如,202)中的每一者可具有相關聯的多個查找表緩衝器(例如,235a、235b)、多個加法器(例如,315a、315b)及輸出緩衝器(例如,320)。如以上及以下所闡釋,查找表緩衝器(例如,235a、235b)可臨時儲存完整查找表105的部份。在一些實施例中,所有讀取操作均處於每一DRAM記憶體庫(例如,202)的本地,且所有寫入操作被傳播到下一DRAM記憶體庫。查找表緩衝器(例如,235a、235b)、加法器(例如,315a、315b)及輸出緩衝器(例如,320)可處於DRAM記憶體庫(例如,202)中的每一者的週邊且對鄰近的記憶體庫進行連接。還可包括其他週邊邏輯,例如多工器及解多工器(de-multiplexor)(未示出)。來自輸出緩衝器的輸出可被饋送到相鄰的記憶體庫中。舉例來說,來自一個記憶體庫的輸出緩衝器的輸出可被饋送到相鄰記憶體庫的加法器。可在空間及時間兩方面實現並行度。換句話說,對於多個時間處理循環中的給定處理循環,矩陣資料可由多個記憶體庫並行處理。每一新的處理循環可使矩陣資料由多個不同記憶體庫並行處理。因此,本文中所揭露的GEMM資料流程加速器的性能可得到提高。
圖11是包括可與以下闡述的張量計算資料流程加速器結合使用的單個NDP-DF裸晶410的內容的示例性方塊圖1100。NDP-DF裸晶410可包括多個通道(例如,CH0、CH1)。通道(例如,CH0、CH1)中的每一者可包括多個智慧記憶體庫單元(例如,B0、B1到B15)。通道(例如,CH0、CH1)可通過線1005彼此
連接。舉例來說,CH0的智慧記憶體庫單元B12的輸出可連接到CH1的智慧記憶體庫單元B0的輸入。TSV 435可將通道(例如,CH0、CH1)連接到其他NDP-DF裸晶410(例如,如圖4到圖9所示的NDP-DF裸晶410)的其他通道。每一通道(例如,CH1)內的實線1010表示通過此通道的智慧記憶體庫單元中的每一者的脈動資料流程方向。換句話說,脈動資料流程可以蛇形方式行進穿過智慧記憶體庫單元中的每一者,即從智慧記憶體庫單元B0開始,接著行進到智慧記憶體庫單元B3,接著改變方向並以相反的方向從智慧記憶體庫單元B7行進到智慧記憶體庫單元B4,接著再次改變方向,依此類推。每一通道(例如,CH1)內的虛線1015表示記憶體庫資料I/O路徑。因此,記憶體庫資料I/O路徑穿過通過智慧記憶體庫單元的蛇形資料流程。
智慧記憶體庫單元(例如,B0)中的每一者可包括DRAM記憶體庫(例如,圖3的202)。DRAM記憶體庫(例如,202)中的每一者可具有相關聯的輸入緩衝器(例如,1105)、脈動乘法累積(MAC)陣列1110及輸出緩衝器(例如,320)。在一些實施例中,所有讀取操作均處於每一DRAM記憶體庫(例如,202)的本地,且所有寫入操作被傳播到下一DRAM記憶體庫。輸入緩衝器(例如,1105)、MAC陣列(例如,1110)及輸出緩衝器(例如,320)可處於DRAM記憶體庫(例如,202)中的每一者的週邊且對鄰近的記憶體庫進行連接。還可包括其他週邊邏輯,例如多工器及解多工器(未示出)。來自輸出緩衝器的輸出可被饋送到相鄰的記憶體庫中。舉例來說,來自一個記憶體庫的輸出緩衝器的輸出可被饋送到相鄰記憶體庫的脈動MAC陣列。可在空間及時
間兩方面實現並行度。換句話說,對於多個時間處理循環中的給定處理循環,矩陣資料可由多個記憶體庫並行處理。每一新的處理循環可使矩陣資料由多個不同記憶體庫並行處理。因此,本文中所揭露的張量計算資料流程加速器的性能可得到提高。
圖12是根據本文中所揭露的一些實施例的張量計算資料流程加速器1200的示例性方塊圖。圖13是MAC單元1210的示例性方塊圖1300。現參照圖12及圖13。
張量計算資料流程加速器1200可包括本地DRAM記憶體庫202、一個或多個輸入緩衝器(例如,1105)、脈動MAC陣列1110及輸出緩衝器320。脈動MAC陣列1110可包括多個處理引擎(PE)(例如,1215)。在一些實施例中,輸入緩衝器1105形成雙緩衝器1205。每一PE 1215可包括輸入緩衝器1220、MAC單元1210、權重緩衝器1225及部分和緩衝器1230。PE 1215內的垂直虛線1235示出了資料的輸入方向。PE 1215內的水平實線1240示出了資料的部分和方向。權重緩衝器1225可向MAC單元1210饋送權重值。MAC單元1210可包括乘法器電路1305及加法器電路1310,如圖13所示。
張量計算資料流程加速器1200可實行標量-向量乘法運算,其中輸入來自一個PE且部分結果去往脈動MAC陣列1110中的下一PE。權重可被預先定義並儲存在每一PE(例如,1215)的本地權重緩衝器1225中,以備實行乘法累積運算,如以下所進一步闡述。
圖14是示出脈動MAC陣列1110的高度1405及脈動MAC陣列1110的寬度1410的示例性方塊圖。應理解,脈動MAC
陣列1110可具有任何合適數目的PE 1215、任何合適的高度1405及任何合適的寬度1410。
圖15是層間資料饋送及分塊技術的示例性方塊圖2000。所述技術可包括記憶體庫的多個層(例如,層1及層2)。所述層中的每一者可包括多個記憶體庫(例如,記憶體庫1到記憶體庫N)。在2005處可提供第一輸入張量。在2010處可提供第一權重張量。在2015處可提供第二輸入張量。在2020處可提供第二權重張量。輸入張量的第一分塊組2025(例如,T1到TN)可與層1的多個記憶體庫(例如,記憶體庫1到記憶體庫N)相關聯。權重張量的第二分塊組2030(例如,W1到WN)可與層1的多個記憶體庫(例如,記憶體庫1到記憶體庫N)相關聯。輸入張量的第三分塊組2035(例如,T1到TM)可與層2的多個記憶體庫(例如,記憶體庫1到記憶體庫N)相關聯。權重張量的第四分塊組2040(例如,W1到WM)可與層2的多個記憶體庫(例如,記憶體庫1到記憶體庫N)相關聯。在層1記憶體庫與第三分塊組2035之間可提供資料饋送2025。
圖16是根據本文中所揭露的實施例的張量計算資料流程加速器的處理組(PG)2105的微架構的示例性方塊圖。PG 2105可包括多個PE(例如,PE[1]到PE[8])。PE可通過共用資料匯流排2110彼此連接並連接到TSV 2115。PG 2105可通過TSV 2115及TSV 2120連接到開關2130。控制器2125可以通訊方式耦合到開關2130和/或PG 2105且可控制開關2130和/或PG 2105。
圖17是根據本文中所揭露的一些實施例的張量計算資料流程加速器的PG的立方體2205的示例性側視立面圖,在所述
張量計算資料流程加速器中,多個PG(例如,PG[1]到PG[8])可在多個堆疊(例如,2210及2215)中彼此上下堆疊以形成PG的立方體。TSV 2140可對每一堆疊的PG進行內連。
圖18是包括PG的多個庫(例如,庫[1]到庫[8])的張量計算資料流程加速器的PG的立方體2205的示例性平面圖。舉例來說,庫可包括PG的垂直分組。
圖19是根據本文中所揭露的一些實施例的張量計算資料流程加速器的基礎裸晶2405的示例圖。基礎裸晶2405可包括網路介面2410及可程式化核心2415。基礎裸晶2405還可包括多個庫週邊裝置裝置2420。每一庫週邊裝置2420可包括緩衝器2425、一個或多個ALU 2430、開關2130、控制器2125和/或一個或多個TSV 2120。庫週邊裝置(例如,2420)中的每一者可與對應的庫(例如,圖18的庫[1])相關聯且向對應的庫提供支援緩衝服務、處理服務及交換服務。
圖20是包括被動矽中間層2505及設置在被動矽中間層2505上的多個立方體(例如,2205)的張量計算資料流程加速器2500的示例性方塊圖。立方體(例如,2205)可彼此通訊,如交叉箭頭所示。
圖21是根據本文中所揭露的一些實施例的張量計算資料流程加速器2600的示例性方塊圖。張量計算資料流程加速器2600可包括DRAM記憶體庫2605、資料緩衝器2610、第一被乘數緩衝器2615、例如多工器2620等的選擇器、輸入先進先出(first-in-first-out,FIFO)2625、第二被乘數緩衝器2630、多個MAC(例如,2635)及輸出FIFO 2640。
張量計算資料流程加速器2600可實行一個或多個計算映射運算。在由圓圈1指示的第一步驟中,可從本地DRAM記憶體庫2605讀取A向量並將A向量儲存在資料緩衝器2610中。在圓圈2處,可複製A向量並將A向量儲存在被乘數緩衝器2630中。在由圓圈3指示的第三步驟中,可從本地DRAM記憶體庫2605讀取B向量並將B向量儲存在資料緩衝器2610中。在圓圈4處,可複製B向量並將B向量儲存在被乘數緩衝器2615中。在圓圈5處,可使用MAC(例如,2635)實行多次標量-向量乘法,其中輸入來自給定的PE且部分結果被轉送到下一PE,依此類推。垂直虛線(例如,2650)表示通過多工器2620從被乘數緩衝器2615接收的矩陣資料的輸入方向。水平實線(例如,2655)表示部分和在穿過MAC(例如,2635)傳播及累積時的流動方向。應理解,MAC 2635的陣列可具有任何合適的高度及寬度。
圖22是根據本文中所揭露的一些實施例的正向傳播資料佈局及資料流程2700的示例性方塊圖。資料佈局及資料流程2700可包括輸出矩陣2705。輸出矩陣2705示出示例性部分向量2710及部分向量2715以及相關聯的外積運算2720。示出的輸入矩陣2725可包括多個PG(PG[1]、PG[2]等)。PG中的每一者可包括多個PE(PE[1]、PE[2]等)。還示出了權重矩陣2730。權重矩陣2730可包括多個PG(PG[1]、PG[2]等)。權重矩陣2730可包括一個或多個計算組(例如,CG[1]),每一計算組包括多個PG。PG中的每一者可包括多個PE(PE[1]、PE[2]等)。在一些實施例中,每一PG具有八(8)個PE。示出了運算的輸出次序2735。舉例來說,來自外積運算2720的輸出可以蛇形方式通過輸出矩陣
2705傳播。在CG產生最終結果的分塊(例如,方框2740)之後,最終結果的分塊可被串流傳輸到基礎裸晶(例如,圖19的2405)用於最終歸約。在同一通道中對所有部分結果進行歸約之後,可跨通道組合部分結果,如以下所進一步闡述。
圖23是根據本文中所揭露的一些實施例的包括連接在一起的多個處理組(例如,PG[1]、PG[2])的計算組(例如,CG[1])的示例性方塊圖。舉例來說,每一PG可包括多個PE(例如,PE[1]到PE[8])。來自一個PG(例如,PG[1])的一個PE(例如,PE[8])的輸出可被饋送到另一PG(例如,PG[2])的另一PE(例如,PE[1])的輸入中。因此,矩陣資料可得到處理及累積。
圖24是根據本文中所揭露的一些實施例的張量計算資料流程加速器(例如,圖21的2600)的多個立方體(例如,立方體[1]、立方體[2])的示例性方塊圖。每一立方體(例如,立方體[1]、立方體[2])可包括多個計算組(例如,CG[1]、CG[2]等)。每一計算組可將矩陣資料饋送到庫(例如,庫[1]、庫[2]等)中,使得矩陣資料在歸約運算中被歸約到對應的庫,如圓圈1所示。在圓圈2處,矩陣資料被聚合並從一個庫(例如,庫[1])歸約到另一庫(例如,庫[2])中。在圓圈3處,在跨立方體累積運算中,矩陣資料被聚合並被歸約到立方體[2]的庫(例如,庫[4])。此具有O(log2(numberCG))個歸約循環的最大潛伏時間,且由於此過程隨著最終結果的輸出分塊的逐漸產生而完全流水線化,因此性能開銷最小化且可被有效地忽略。
圖25到圖27是根據本文中所揭露的一些實施例的反向傳播資料佈局及資料流程3000的示例性方塊圖。反向傳播資料佈
局及資料流程3000可包括多個輸入資料DRAM記憶體庫(例如,輸入資料記憶體庫[1]、輸入資料記憶體庫[2]等)。反向傳播資料佈局及資料流程3000還可包括輸出資料記憶體庫3015。反向傳播資料佈局及資料流程3000還可包括多個PG(例如,PG[1]及PG[2]),其中每一PG包括多個PE(例如,PE[1]、PE[2]等)。虛線3005表示部分結果累積,且實線3010表示輸入資料傳播。換句話說,可通過線3010從輸入資料記憶體庫(例如,輸入資料記憶體庫[1]、輸入資料記憶體庫[2]等)接收輸入矩陣資料並將輸入矩陣資料提供給PE(例如,PE[1]、PE[2]等)。PE可使用輸入矩陣資料來實行乘法及加法運算,且接著可沿線3005對部分結果進行累積。
以下是根據本文中所揭露的一些實施例的正向資料佈局軟體劃分技術(partition technique)的偽代碼(pseudo-code)實例。
以下是根據本文中所揭露的一些實施例的反向資料佈局的偽代碼實例。
以下是根據本文中所揭露的一些實施例的正向計算調度軟體調度技術的偽代碼實例。
以下是根據本文中所揭露的一些實施例的反向計算調度的偽代碼實例。
可在空間及時間兩方面實現並行度。換句話說,對於多個時間處理循環中的給定處理循環,矩陣資料可由多個記憶體庫並行處理。每一新的處理循環可使矩陣資料由多個不同記憶體庫並行處理。因此,本文中所揭露的張量計算資料流程加速器的性能可得到提高。
因此,可對每一DRAM記憶體庫的週邊添加計算邏輯,從而將通常的被動元件變成智慧處理引擎。每一庫中的基礎邏輯裸晶中的控制器可控制資料存取及計算調度。主要計算資源(例如,MAC陣列)可作為DRAM記憶體庫的週邊側邏輯設置在DRAM裸晶上。使用PE的脈動MAC陣列使矩陣資料被處理及累積。轉置引擎(transpose engine)可用於反向傳遞。由於計算邏輯(例如,MAC陣列)與DRAM記憶體庫相鄰,因此記憶體是分散式的,且有利於實現反向友好記憶體佈局(backward-friendly memory layout)及部分轉置佈局。三維堆疊DRAM技術可用于增
強並行度。
本文中所揭露的實施例具有針對受記憶體限制(memory-bound)且計算密集型內核的強大計算能力。因此,MAC陣列及相關聯的組件可嵌在記憶體內處理(PIM)三維堆疊架構內,其中計算邏輯被整合在DRAM記憶體庫旁邊、與例如GPU計算部分開。矩陣乘法及其他處理發生在DRAM記憶體庫之外但與DRAM記憶體庫相鄰,從而利用記憶體庫級內部高頻寬,其中所有讀取均來自本地DRAM記憶體庫。本文中所揭露的本發明的實施例支持浮點算術且特別適用於例如人工神經網路及其相關聯的訓練。
本文中所揭露的實施例是針對深度學習訓練中的受頻寬限制浮點GEMM運算。對於涉及對累積維數(例如,GEMM[M,K,N]中的K維數)進行分塊的技術,不需要進行回寫且對於同一記憶體庫不存在讀取/寫入衝突。所有寫入操作均傳播到資料流程流水線的下一級。所有前面的層的輸出是下面的層的輸入記憶體庫,此減少了總體矩陣資料移動。本文中所揭露的一些實施例包括資料佈局及對矩陣轉置的硬體支援,這使得能夠實現反向傳播過程。
如本文中所揭露,邏輯層可堆疊在DRAM裸晶之間或鄰近DRAM裸晶堆疊,DRAM裸晶使用TSV在垂直方向上彼此通訊。通過將浮點乘法單元的數目最小化來提高硬體效率。本文中所揭露的PIM架構使用用於外積引擎的劃分方法,其中部分結果以脈動方式在PE之間傳播。可使用基於DRAM的查找表來減小浮點單元的面積開銷。使用分級結構來減小基於查找表的浮點單
元的潛伏時間。對每一PE使用外積計算技術。可對任意大小的GEMM運算使用劃分及調度演算法,以改善性能及能量效率。因此,在PIM架構中提供浮點張量乘法。可使用基於DRAM的查找表來實施向量外積。可使用脈動陣列流水線式結構進行記憶體庫間連接。週邊邏輯可設置在DRAM記憶體庫之外但與DRAM記憶體庫相鄰,使得不需要對DRAM核心邏輯進行改變,從而使本文中所揭露的實施例對於實施來說非常可行。與在DRAM記憶體庫之外直接添加MAC單元相比,基於DRAM的查找表可節省大量的面積開銷。與基於基礎邏輯裸晶技術的NDP相比,本文中所揭露的實施例提供更高的內部頻寬(記憶體庫級而非TSV級)及更高的計算性能。可使用多個查找表緩衝器來減少長列啟動潛伏時間(long-row activation latency)及能量消耗。
上述方法的各種運算可通過能夠實行所述運算的任何合適的手段(例如各種硬體和/或軟體元件、電路和/或模組)來實行。
一些實施例包括張量計算資料流程加速器半導體電路。所述張量計算資料流程加速器半導體電路可包括記憶體記憶體庫及與記憶體記憶體庫相鄰地設置的乘法加法單元的週邊陣列。在一些實施例中,乘法加法單元的週邊陣列被配置成形成流水線式資料流程鏈,在所述流水線式資料流程鏈中,來自乘法加法單元的陣列中的一個乘法加法單元的部分輸出資料被饋送到乘法加法單元的陣列中的另一乘法加法單元中以進行資料累積。
在一些實施例中,張量計算資料流程加速器半導體電路可包括處理引擎的週邊陣列,所述處理引擎各自包括乘法加法單
元的週邊陣列中的乘法加法單元。在一些實施例中,處理引擎中的每一者包括輸入緩衝器、部分和緩衝器及權重緩衝器。在一些實施例中,處理引擎中的每一者的權重緩衝器被配置成在初始化狀態中儲存權重矩陣向量。在一些實施例中,處理引擎的週邊陣列中的處理引擎的輸入緩衝器被配置成以串流方式從記憶體記憶體庫接收輸入矩陣向量。在一些實施例中,處理引擎的乘法加法單元被配置成計算輸入矩陣向量與儲存在處理引擎的權重緩衝器中的權重矩陣向量的乘積。
在一些實施例中,處理引擎的週邊陣列是被配置成以蛇形方式傳播部分和的脈動陣列。在一些實施例中,處理引擎的週邊陣列被配置成以串流方式接收多個輸入矩陣向量,並在與所述部分和的資料流程方向垂直的方向上傳播所述多個輸入矩陣向量。
在一些實施例中,記憶體記憶體庫是DRAM記憶體庫。所述電路還可包括包括多個通道的近DRAM處理資料流程(NDP-DF)加速器單元裸晶。在一些實施例中,通道中的每一者包括以蛇形方式排列的多個智慧記憶體庫單元。在一些實施例中,智慧記憶體庫單元中的每一者包括DRAM記憶體庫、輸入緩衝器、脈動MAC陣列及輸出緩衝器。
在一些實施例中,脈動MAC陣列包括乘法加法單元的週邊陣列。在一些實施例中,NDP-DF加速器單元裸晶是彼此上下堆疊的多個NDP-DF加速器單元裸晶中的一者。
在一些實施例中,所述張量計算資料流程加速器半導體電路還可包括:被動矽中間層;處理器,設置在被動矽中間層上;
以及基礎裸晶,與處理器相鄰地設置在被動矽中間層上。在一些實施例中,所述多個NDP-DF加速器單元裸晶堆疊在所述基礎裸晶頂上。在一些實施例中,所述張量計算資料流程加速器半導體電路還可包括穿過所述多個NDP-DF加速器單元裸晶及基礎裸晶設置的一個或多個矽通孔(TSV)。在一些實施例中,所述一個或多個TSV被配置成對所述多個NDP-DF加速器單元裸晶與基礎裸晶進行互連以及對基礎裸晶與處理器進行互連。在一些實施例中,所述多個NDP-DF加速器單元裸晶及基礎裸晶被配置成從處理器卸載計算。
在一些實施例中,所述張量計算資料流程加速器半導體電路還可包括:被動矽中間層;控制器,設置在被動矽中間層上;以及基礎裸晶,與控制器相鄰地設置在被動矽中間層上。在一些實施例中,所述多個NDP-DF加速器單元裸晶堆疊在基礎裸晶頂上。在一些實施例中,所述張量計算資料流程加速器半導體電路還可包括穿過所述多個NDP-DF加速器單元裸晶及基礎裸晶設置的一個或多個矽通孔(TSV)。在一些實施例中,所述一個或多個TSV被配置成對所述多個NDP-DF加速器單元裸晶與基礎裸晶進行互連以及對基礎裸晶與控制器進行互連。在一些實施例中,所述多個NDP-DF加速器單元裸晶及基礎裸晶被配置成從與所述張量計算資料流程加速器半導體電路分開的主機卸載計算。
在一些實施例中,所述多個堆疊的NDP-DF加速器單元裸晶與基礎裸晶被配置成並行地處理部分輸出資料。在一些實施例中,所述多個堆疊的NDP-DF加速器單元裸晶及基礎裸晶被配置成在反向方向上傳播部分輸出資料。在一些實施例中,所述多
個堆疊的NDP-DF加速器單元裸晶及基礎裸晶被配置成實行部分矩陣轉置。
本文中所揭露的一些實施例包括GEMM資料流程加速器半導體電路。所述GEMM資料流程加速器半導體電路可包括:記憶體記憶體庫;週邊查找表,儲存在記憶體記憶體庫中;以及第一向量緩衝器,被配置成儲存用作查找表中的列位址的第一向量。所述GEMM資料流程加速器半導體電路還可包括第二向量緩衝器,所述第二向量緩衝器被配置成儲存用作查找表中的行位址的第二向量。GEMM資料流程加速器半導體電路還可包括一個或多個查找表緩衝器,所述一個或多個查找表緩衝器被配置成接收一個或多個查找表表項。在一些實施例中,第二向量緩衝器被配置成將第二向量串流傳輸到所述一個或多個查找表緩衝器,且所述一個或多個查找表緩衝器被配置成儲存來自查找表的所述一個或多個查找表表項。在一些實施例中,所述一個或多個查找表緩衝器被配置成確定第一向量與第二向量的乘積而不實行乘法運算。
在一些實施例中,所述乘積是第一乘積,且GEMM電路還包括:一個或多個加法器,被配置成求取第一乘積與第二乘積的和;以及輸出緩衝器,被配置成儲存第一乘積與第二乘積的和的結果。在一些實施例中,所述一個或多個查找表緩衝器被配置成使用第一向量的值及第二向量的值分別作為查找表中的行位址及列位址來確定第一乘積而不實行乘法運算。在一些實施例中,所述一個或多個查找表緩衝器被配置成使用第三向量的值及第四向量的值分別作為查找表中的行位址及列位址來確定第二乘
積而不實行乘法運算。
在一些實施例中,記憶體記憶體庫、週邊查找表、第一向量緩衝器、所述一個或多個查找表緩衝器及第二向量緩衝器形成用於減小潛伏時間的分級查找架構。在一些實施例中,所述GEMM資料流程加速器半導體電路還包括包括所述一個或多個查找表緩衝器在內的多個查找表緩衝器。在一些實施例中,所述多個查找表緩衝器被配置成儲存對應的多個矩陣向量以確定所述多個矩陣向量的多個乘積而不存取儲存在記憶體記憶體庫中的查找表且不實行乘法運算。
在一些實施例中,所述GEMM資料流程加速器半導體電路還包括智慧記憶體庫單元的週邊陣列。在一些實施例中,智慧記憶體庫單元的週邊陣列被配置成形成流水線式資料流程鏈,在所述流水線式資料流程鏈中,來自智慧記憶體庫單元的陣列中的一個智慧記憶體庫單元的部分輸出資料被饋送到智慧記憶體庫單元的陣列中的另一智慧記憶體庫單元中以進行資料累積。
在一些實施例中,智慧記憶體庫單元中的每一者包括記憶體記憶體庫、查找表、所述多個查找表緩衝器、一個或多個加法器、及輸出緩衝器。在一些實施例中,所述多個智慧記憶體庫單元中的第一智慧記憶體庫單元被配置成將所述乘積輸出到與第一智慧記憶體庫單元相鄰的第二智慧記憶體庫單元。在一些實施例中,第二智慧記憶體庫單元被配置成儲存從第一智慧記憶體庫單元接收的所述乘積。
在一些實施例中,所述乘積是第一乘積,且第二智慧記憶體庫單元被配置成以串流方式從記憶體記憶體庫接收第三向
量。在一些實施例中,第二智慧記憶體庫單元的所述一個或多個查找表緩衝器被配置成使用查找表基於第三向量來確定第二乘積而不實行乘法運算。在一些實施例中,第二智慧記憶體庫單元的所述一個或多個加法器被配置成計算第一乘積與第二乘積的和。在一些實施例中,第二智慧記憶體單元的輸出緩衝器被配置成儲存第一乘積與第二乘積的和。
在一些實施例中,第二智慧記憶體庫單元被配置成將第一乘積與第二乘積的和輸出到智慧記憶體庫單元的週邊陣列中的第三智慧記憶體庫單元。在一些實施例中,第三智慧記憶體庫單元與第二智慧記憶體庫單元相鄰。在一些實施例中,第三智慧記憶體庫單元被配置成儲存所述和。
在一些實施例中,智慧記憶體庫單元的週邊陣列是被配置成以蛇形方式傳播部分和的脈動陣列。在一些實施例中,智慧記憶體庫單元的週邊陣列被配置成以串流方式接收多個輸入矩陣向量,並在與部分和的資料流程方向垂直的方向上傳播所述多個輸入矩陣向量。
在一些實施例中,記憶體記憶體庫是DRAM記憶體庫,所述電路還包括包括多個通道的近DRAM處理資料流程(NDP-DF)加速器單元裸晶。在一些實施例中,通道中的每一者包括以蛇形方式排列的智慧記憶體庫單元的週邊陣列。在一些實施例中,智慧記憶體庫單元中的每一者包括DRAM記憶體庫、查找表、所述多個查找表緩衝器、所述一個或多個加法器及輸出緩衝器。
在一些實施例中,NDP-DF加速器單元裸晶是彼此上下
堆疊的多個NDP-DF加速器單元裸晶中的一者。在一些實施例中,所述GEMM電路還包括:被動矽中間層;處理器,設置在被動矽中間層上;以及基礎裸晶,與處理器相鄰地設置在被動矽中間層上。在一些實施例中,所述多個NDP-DF加速器單元裸晶堆疊在基礎裸晶頂上。
在一些實施例中,GEMM電路還包括一個或多個矽通孔(TSV),所述一個或多個TSV設置成穿過所述多個NDP-DF加速器單元裸晶及基礎裸晶設置。在一些實施例中,所述一個或多個TSV被配置成對所述多個NDP-DF加速器單元裸晶與基礎裸晶進行互連以及對基礎裸晶與處理器進行互連。在一些實施例中,所述多個NDP-DF加速器單元裸晶及基礎裸晶被配置成從處理器卸載計算。
在一些實施例中,GEMM資料流程加速器半導體電路還包括:被動矽中間層;控制器,設置在被動矽中間層上;以及基礎裸晶,與控制器相鄰地設置在被動矽中間層上。在一些實施例中,所述多個NDP-DF加速器單元裸晶堆疊在基礎裸晶頂上。
在一些實施例中,GEMM資料流程加速器半導體電路還包括一個或多個矽通孔(TSV),所述一個或多個TSV設置成穿過所述多個NDP-DF加速器單元裸晶及基礎裸晶。在一些實施例中,所述一個或多個TSV被配置成對所述多個NDP-DF加速器單元裸晶與基礎裸晶進行互連以及對基礎裸晶與控制器進行互連。在一些實施例中,所述多個NDP-DF加速器單元裸晶及基礎裸晶被配置成從與張量計算資料流程加速器半導體電路分開的主機卸載計算。在一些實施例中,所述多個堆疊的NDP-DF加速器單元裸晶
與基礎裸晶被配置成並行地處理部分輸出資料。
結合本文中所揭露的實施例闡述的方法或者演算法及功能的區塊或步驟可直接以硬體實施、以由處理器執行的軟體模組實施、或以二者的組合來實施。如果以軟體實施,則所述功能可作為一個或多個指令或代碼儲存在有形的非暫時性電腦可讀媒體上或通過有形的非暫時性電腦可讀媒體傳送。軟體模組可駐留在隨機存取記憶體(Random Access Memory,RAM)、快閃記憶體、唯讀記憶體(Read Only Memory,ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可擦可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、抽取式磁碟(removable disk)、壓縮磁碟唯讀記憶體(compact disk ROM,CD ROM)或所屬領域中已知的任何其他形式的儲存媒體中。
以下論述旨在提供對可在其中實施本發明概念某些方面的一個或多個合適的機器的簡短總體說明。通常,所述一個或多個機器包括附裝有處理器、記憶體(例如,RAM、ROM或其他狀態保存媒體)、儲存裝置、視頻界面及輸入/輸出介面埠的系統匯流排。所述一個或多個機器可至少部分地通過以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及從另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境的互動、生物回饋(biometric feedback)或其他輸入訊號。本文中所用用語“機器”旨在廣泛地囊括單一機器、虛擬機器器或由以通訊方式耦合的一起運行的機器、虛擬機器器或裝置形成的系統。示例性機器包括計算裝置(例如個人電腦、工作站、伺服器、可攜式電腦、
掌上型裝置、電話、平板電腦(tablet)等)以及運輸裝置(例如私人或公共運輸(例如汽車、火車、計程車等))。
所述一個或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一個或多個機器可利用連接到一個或多個遠端機器(例如通過網路介面、資料機或其他通訊性耦合)的一或多個連接。機器可通過例如內部網路(intranet)、網際網路、區域網路、廣域網路等物理網路和/或邏輯網路進行互連。所屬領域中的技術人員應理解,網路通訊可利用各種有線和/或無線短程或長程載體及協議,所述載體及協議包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)545.11、藍牙®、光學的、紅外線的、纜線、鐳射等。
本發明概念的實施例可通過參照或結合相關聯的資料來闡述,相關聯的資料包括當由機器存取時會使機器實行任務或定義抽象資料類型或低級硬體上下文的功能、程式(procedure)、資料結構、應用程式等。相關聯的資料可儲存在例如揮發性和/或非揮發性記憶體(例如,RAM、ROM等)中或其他儲存裝置及其相關聯的儲存媒體(包括硬碟驅動器、軟碟、光學記憶體、磁帶、快閃記憶體、記憶棒(memory stick)、數位視訊盤、生物記憶體等)中。相關聯的資料可以資料包(packet)、串列資料、並行資料、傳播訊號等形式通過傳輸環境(包括物理網路和/或邏輯網路)進行遞送,且可以壓縮或加密的格式使用。相關聯的資料可在分
散式環境中使用且可儲存在本地和/或遠端以供機器存取。
已參照所示實施例闡述並示出了本發明概念的原理,將認識到,在不背離這些原理的條件下可對所示實施例進行排列及細節上的修改且可以任何期望的方式對所示實施例進行組合。且儘管以上論述著重於特定實施例上,但也可預期存在其他配置。具體來說,即使本文中使用了例如“根據本發明概念的實施例”等表達,這些短語也旨在一般性地提及實施例的可能性,而不旨在將本發明概念限制到特定的實施例配置。本文中所用的這些用語可提及可組合到其他實施例中的相同或不同的實施例。
本發明概念的實施例可包括非暫時性機器可讀媒體,所述非暫時性機器可讀媒體包括可由一個或多個處理器執行的指令,所述指令包括實行如本文所述的本發明概念的要素的指令。
上述示例性實施例不應被視為對示例性實施例的發明概念進行限制。儘管已闡述了幾個示例性實施例,但所屬領域中的技術人員將容易理解,在不實質上背離本揭露的新穎教示及優點的條件下,可對這些實施例進行許多修改。因此,所有這些修改均旨在包含於由權利要求所界定的本發明概念的範圍內。
100:標量浮點乘法累積引擎/浮點乘法累積引擎
105:查找表/完整查找表
110:符號位元邏輯
115:加法器電路
120:累加器
125、130:參考符號
140:乘積
145:A符號位元/B符號位元
150:A指數/B指數
155:A分數/B分數
Claims (20)
- 一種張量計算資料流程加速器半導體電路,包括:記憶體記憶體庫;以及處理單元的週邊陣列,與所述記憶體記憶體庫進行通訊,其中所述處理單元的週邊陣列被配置成形成流水線式資料流程鏈,在所述流水線式資料流程鏈中,來自所述處理單元的週邊陣列中的第一處理單元的部分輸出資料被饋送到所述處理單元的週邊陣列中的另一處理單元中以進行資料累積。
- 如申請專利範圍第1項所述的張量計算資料流程加速器半導體電路,其中:所述處理單元的陣列包括乘法加法單元的陣列;所述第一處理單元是第一乘法加法單元;所述另一處理單元是第二乘法加法單元;所述乘法加法單元的陣列與所述記憶體記憶體庫相鄰地設置;且所述張量計算資料流程加速器半導體電路還包括處理引擎的週邊陣列,所述處理引擎的週邊陣列中的處理引擎分別包括所述乘法加法單元的陣列中的乘法加法單元。
- 如申請專利範圍第2項所述的張量計算資料流程加速器半導體電路,其中所述處理引擎中的每一者包括:輸入緩衝器;部分和緩衝器;以及權重緩衝器。
- 如申請專利範圍第3項所述的張量計算資料流程加速器半導體電路,其中所述處理引擎中的每一者的所述權重緩衝器被配置成在初始化狀態中儲存權重矩陣向量。
- 如申請專利範圍第4項所述的張量計算資料流程加速器半導體電路,其中所述處理引擎的週邊陣列中的一個處理引擎的所述輸入緩衝器被配置成以串流方式從所述記憶體記憶體庫接收輸入矩陣向量。
- 如申請專利範圍第5項所述的張量計算資料流程加速器半導體電路,其中所述一個處理引擎的所述乘法加法單元被配置成計算所述輸入矩陣向量與儲存在所述一個處理引擎的所述權重緩衝器中的所述權重矩陣向量的乘積。
- 如申請專利範圍第6項所述的張量計算資料流程加速器半導體電路,其中:所述一個處理引擎是第一處理引擎;且所述第一處理引擎被配置成將所述乘積輸出到與所述第一處理引擎相鄰的第二處理引擎。
- 如申請專利範圍第7項所述的張量計算資料流程加速器半導體電路,其中所述第二處理引擎被配置成將所述乘積儲存在所述第二處理引擎的所述部分和緩衝器中。
- 如申請專利範圍第8項所述的張量計算資料流程加速器半導體電路,其中:所述輸入矩陣向量是第一輸入矩陣向量; 所述乘積是第一乘積;所述第二處理引擎的所述輸入緩衝器被配置成以串流方式從所述記憶體記憶體庫接收第二輸入矩陣向量;所述第二處理引擎的所述乘法加法單元被配置成計算所述第二輸入矩陣向量與儲存在所述第二處理引擎的所述權重緩衝器中的所述權重矩陣向量的第二乘積;且所述第二處理引擎的所述乘法加法單元被配置成計算所述第一乘積與所述第二乘積的和。
- 如申請專利範圍第9項所述的張量計算資料流程加速器半導體電路,其中:所述第二處理引擎被配置成將所述第一乘積與所述第二乘積的所述和輸出到所述處理引擎的週邊陣列中的第三處理引擎,其中所述第三處理引擎與所述第二處理引擎相鄰;且所述第三處理引擎被配置成將所述和儲存在所述第三處理引擎的所述部分和緩衝器中。
- 如申請專利範圍第10項所述的張量計算資料流程加速器半導體電路,其中:所述處理引擎的週邊陣列是被配置成以蛇形方式傳播部分和的脈動陣列;且所述處理引擎的週邊陣列被配置成以串流方式接收多個輸入矩陣向量,並在與所述部分和的資料流程方向垂直的方向上傳播所述多個輸入矩陣向量。
- 如申請專利範圍第3項所述的張量計算資料流程加速器半導體電路,其中所述記憶體記憶體庫是動態隨機存取記憶體記憶體庫,所述張量計算資料流程加速器半導體電路更包括:近動態隨機存取記憶體處理資料流程加速器單元裸晶,包括多個通道,其中:所述通道中的每一者包括以蛇形方式排列的多個智慧記憶體庫單元;且所述智慧記憶體庫單元中的每一者包括動態隨機存取記憶體記憶體庫、輸入緩衝器、脈動乘法累積陣列及輸出緩衝器。
- 如申請專利範圍第12項所述的張量計算資料流程加速器半導體電路,其中:所述脈動乘法累積陣列包括所述乘法加法單元的陣列;且所述近動態隨機存取記憶體處理資料流程加速器單元裸晶是彼此上下堆疊的多個近動態隨機存取記憶體處理資料流程加速器單元裸晶中的一者。
- 如申請專利範圍第13項所述的張量計算資料流程加速器半導體電路,更包括:被動矽中間層;處理器,設置在所述被動矽中間層上;以及基礎裸晶,與所述處理器相鄰地設置在所述被動矽中間層上,其中所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶堆疊在所述基礎裸晶頂上。
- 如申請專利範圍第14項所述的張量計算資料流程加速器半導體電路,更包括:一個或多個矽通孔,設置成穿過所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶,其中所述一個或多個矽通孔被配置成對所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶與所述基礎裸晶進行互連以及對所述基礎裸晶與所述處理器進行互連;且其中所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶被配置成從所述處理器卸載計算。
- 如申請專利範圍第13項所述的張量計算資料流程加速器半導體電路,更包括:被動矽中間層;控制器,設置在所述被動矽中間層上;以及基礎裸晶,與所述控制器相鄰地設置在所述被動矽中間層上,其中所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶堆疊在所述基礎裸晶頂上。
- 如申請專利範圍第16項所述的張量計算資料流程加速器半導體電路,更包括:一個或多個矽通孔,設置成穿過所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶,其中所述一個或多個矽通孔被配置成對所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶與所述基礎裸晶進行互連以及對所述基礎裸晶與所述控制器進行互連;且 其中所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶被配置成從與所述張量計算資料流程加速器半導體電路分開的主機卸載計算。
- 如申請專利範圍第13項所述的張量計算資料流程加速器半導體電路,其中堆疊的所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶與所述基礎裸晶被配置成並行地處理所述部分輸出資料。
- 如申請專利範圍第13項所述的張量計算資料流程加速器半導體電路,其中堆疊的所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶被配置成在反向方向上傳播部分輸出資料。
- 如申請專利範圍第13項所述的張量計算資料流程加速器半導體電路,其中堆疊的所述多個近動態隨機存取記憶體處理資料流程加速器單元裸晶及所述基礎裸晶被配置成實行部分矩陣轉置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862777046P | 2018-12-07 | 2018-12-07 | |
US62/777,046 | 2018-12-07 | ||
US16/388,863 | 2019-04-18 | ||
US16/388,863 US20200183837A1 (en) | 2018-12-07 | 2019-04-18 | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202024960A TW202024960A (zh) | 2020-07-01 |
TWI811450B true TWI811450B (zh) | 2023-08-11 |
Family
ID=70971724
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108132452A TWI789547B (zh) | 2018-12-07 | 2019-09-09 | 通用矩陣-矩陣乘法資料流加速器半導體電路 |
TW108132890A TWI811450B (zh) | 2018-12-07 | 2019-09-12 | 張量計算資料流程加速器半導體電路 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108132452A TWI789547B (zh) | 2018-12-07 | 2019-09-09 | 通用矩陣-矩陣乘法資料流加速器半導體電路 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11100193B2 (zh) |
JP (2) | JP7209616B2 (zh) |
KR (2) | KR20200070089A (zh) |
CN (2) | CN111291859B (zh) |
TW (2) | TWI789547B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100193B2 (en) * | 2018-12-07 | 2021-08-24 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
KR102425909B1 (ko) * | 2019-07-30 | 2022-07-29 | 한국과학기술원 | 뉴럴 네트워크 가속기 시스템 및 그것의 동작 방법 |
US11947959B2 (en) * | 2019-09-10 | 2024-04-02 | Micron Technology, Inc. | Re-using processing elements of an artificial intelligence processor |
US11841792B1 (en) | 2019-12-09 | 2023-12-12 | Amazon Technologies, Inc. | Instructions with multiple memory access modes |
US11334358B2 (en) * | 2019-12-09 | 2022-05-17 | Amazon Technologies, Inc. | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder |
US11429310B2 (en) * | 2020-03-06 | 2022-08-30 | Samsung Electronics Co., Ltd. | Adjustable function-in-memory computation system |
CN113362878A (zh) | 2020-03-06 | 2021-09-07 | 三星电子株式会社 | 用于存储器内计算的方法和用于计算的系统 |
US11874897B2 (en) | 2020-04-09 | 2024-01-16 | Micron Technology, Inc. | Integrated circuit device with deep learning accelerator and random access memory |
US11887647B2 (en) | 2020-04-09 | 2024-01-30 | Micron Technology, Inc. | Deep learning accelerator and random access memory with separate memory access connections |
US11461651B2 (en) * | 2020-04-09 | 2022-10-04 | Micron Technology, Inc. | System on a chip with deep learning accelerator and random access memory |
US11355175B2 (en) | 2020-04-09 | 2022-06-07 | Micron Technology, Inc. | Deep learning accelerator and random access memory with a camera interface |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
WO2021241048A1 (ja) * | 2020-05-28 | 2021-12-02 | パナソニックIpマネジメント株式会社 | Aiチップ |
WO2022000101A1 (en) * | 2020-06-28 | 2022-01-06 | Huawei Technologies Co., Ltd. | Method to avoid memory bank conflicts and pipeline conflicts in tensor memory layout |
US20220019407A1 (en) * | 2020-07-14 | 2022-01-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | In-memory computation circuit and method |
US11403111B2 (en) * | 2020-07-17 | 2022-08-02 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic using look-up tables |
US20220044101A1 (en) * | 2020-08-06 | 2022-02-10 | Micron Technology, Inc. | Collaborative sensor data processing by deep learning accelerators with integrated random access memory |
US11755523B2 (en) * | 2020-08-20 | 2023-09-12 | Rambus Inc. | Stacked device system |
US11960438B2 (en) | 2020-09-08 | 2024-04-16 | Rambus Inc. | Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture |
KR102225149B1 (ko) | 2020-10-21 | 2021-03-10 | 주식회사 스카이칩스 | 지능형 제어 기반 생체신호 처리 장치 |
US11355170B1 (en) | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
US20210150328A1 (en) * | 2021-01-27 | 2021-05-20 | Intel Corporation | Hierarchical Hybrid Network on Chip Architecture for Compute-in-memory Probabilistic Machine Learning Accelerator |
US11748062B2 (en) | 2021-01-28 | 2023-09-05 | Macronix International Co., Ltd. | Multiplication and addition operation device and control method for multiplication and addition operation thereof |
US20220308833A1 (en) * | 2021-03-24 | 2022-09-29 | Intel Corporation | Multiplication circuit based on constituent partial product lookup table |
US11656909B2 (en) | 2021-04-15 | 2023-05-23 | National Taiwan University | Tensor accelerator capable of increasing efficiency of data sharing |
US11693796B2 (en) * | 2021-05-31 | 2023-07-04 | Arm Limited | Multi-dimensional data path architecture |
US20220405556A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Single function to perform combined matrix multiplication and bias add operations |
KR102695927B1 (ko) * | 2021-07-21 | 2024-08-19 | 삼성전자주식회사 | 인메모리 연산을 수행하는 메모리 장치 및 그 방법 |
US12032829B2 (en) | 2021-07-21 | 2024-07-09 | Samsung Electronics Co., Ltd. | Memory device performing in-memory operation and method thereof |
CN117501250A (zh) * | 2021-09-22 | 2024-02-02 | 华为技术有限公司 | 用于矩阵计算加速的方法和装置 |
KR20230061180A (ko) * | 2021-10-28 | 2023-05-08 | 주식회사 사피온코리아 | 컴퓨팅 시스템 및 이를 위한 전치 방법 |
CN114356840A (zh) * | 2021-12-15 | 2022-04-15 | 北京苹芯科技有限公司 | 具有存内/近存计算模块的SoC系统 |
US11630605B1 (en) * | 2022-08-10 | 2023-04-18 | Recogni Inc. | Methods and systems for processing read-modify-write requests |
KR20240083233A (ko) * | 2022-12-02 | 2024-06-12 | 삼성전자주식회사 | 메모리 장치 및 그 동작 방법 |
CN115860079B (zh) * | 2023-01-30 | 2023-05-12 | 深圳市九天睿芯科技有限公司 | 神经网络加速装置、方法、芯片、电子设备及存储介质 |
KR20240136078A (ko) * | 2023-03-06 | 2024-09-13 | 주식회사 사피온코리아 | 벡터 프로세서 및 그의 동작 방법 |
CN118332239B (zh) * | 2024-04-16 | 2024-10-15 | 大连理工大学 | 基于循环优化技术的通用卷积运算加速器架构的设计与实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201214176A (en) * | 2010-08-30 | 2012-04-01 | Nokia Corp | Method and apparatus for conducting a search based on context |
US20180322606A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
CN108805283A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 在机器学习中对神经网络的拓扑的高效学习和使用 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2698675B2 (ja) * | 1989-12-11 | 1998-01-19 | 大日本印刷株式会社 | カラー画像情報の符号化及び再生方法 |
JP3182171B2 (ja) | 1991-08-29 | 2001-07-03 | 富士通株式会社 | 光モジュール |
JPH07248841A (ja) * | 1994-03-09 | 1995-09-26 | Mitsubishi Electric Corp | 非線形関数発生装置およびフォーマット変換装置 |
US9195784B2 (en) * | 1998-08-31 | 2015-11-24 | Cadence Design Systems, Inc. | Common shared memory in a verification system |
WO2003021423A2 (en) * | 2001-09-04 | 2003-03-13 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
WO2007057033A1 (en) * | 2005-11-15 | 2007-05-24 | Telefonaktiebolaget L M Ericsson (Publ) | Table lookup multiplier |
US7532785B1 (en) * | 2007-10-23 | 2009-05-12 | Hewlett-Packard Development Company, L.P. | Photonic interconnects for computer system devices |
JP2012064087A (ja) | 2010-09-17 | 2012-03-29 | Keio Gijuku | 生活習慣病の診断予測装置、生活習慣病の診断予測方法及びプログラム |
US20140289445A1 (en) | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
JP2017098711A (ja) * | 2015-11-20 | 2017-06-01 | 富士通株式会社 | 歪補償装置および歪補償方法 |
EP3286638A4 (en) | 2016-03-31 | 2018-09-05 | Hewlett-Packard Enterprise Development LP | Logical operations |
US11501131B2 (en) | 2016-09-09 | 2022-11-15 | SK Hynix Inc. | Neural network hardware accelerator architectures and operating method thereof |
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
KR102635791B1 (ko) * | 2016-12-21 | 2024-02-08 | 인텔 코포레이션 | 무선 통신 기술, 장치 및 방법 |
US20190392297A1 (en) * | 2016-12-30 | 2019-12-26 | Intel Corporation | Deep learning hardware |
US11086967B2 (en) | 2017-03-01 | 2021-08-10 | Texas Instruments Incorporated | Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA) |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US10628295B2 (en) * | 2017-12-26 | 2020-04-21 | Samsung Electronics Co., Ltd. | Computing mechanisms using lookup tables stored on memory |
US10761850B2 (en) * | 2017-12-28 | 2020-09-01 | Texas Instruments Incorporated | Look up table with data element promotion |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
US11164074B2 (en) * | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Multi-core systolic processor system for neural network processing |
US10346093B1 (en) * | 2018-03-16 | 2019-07-09 | Xilinx, Inc. | Memory arrangement for tensor data |
US11188814B2 (en) * | 2018-04-05 | 2021-11-30 | Arm Limited | Systolic convolutional neural network |
US10599429B2 (en) * | 2018-06-08 | 2020-03-24 | Intel Corporation | Variable format, variable sparsity matrix multiplication instruction |
US11348909B2 (en) * | 2018-09-28 | 2022-05-31 | Intel Corporation | Multi-die packages with efficient memory storage |
CN111144545B (zh) * | 2018-11-02 | 2022-02-22 | 深圳云天励飞技术股份有限公司 | 用于实现卷积运算的处理元件、装置和方法 |
US11100193B2 (en) * | 2018-12-07 | 2021-08-24 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
-
2019
- 2019-04-18 US US16/388,860 patent/US11100193B2/en active Active
- 2019-04-18 US US16/388,863 patent/US20200183837A1/en active Pending
- 2019-09-09 TW TW108132452A patent/TWI789547B/zh active
- 2019-09-12 TW TW108132890A patent/TWI811450B/zh active
- 2019-10-11 KR KR1020190126481A patent/KR20200070089A/ko not_active Application Discontinuation
- 2019-10-11 KR KR1020190126467A patent/KR102511911B1/ko active IP Right Grant
- 2019-11-14 JP JP2019205909A patent/JP7209616B2/ja active Active
- 2019-11-22 CN CN201911159633.6A patent/CN111291859B/zh active Active
- 2019-11-22 CN CN201911158714.4A patent/CN111291858A/zh active Pending
- 2019-11-26 JP JP2019213487A patent/JP7474586B2/ja active Active
-
2021
- 2021-07-13 US US17/374,988 patent/US20210374210A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201214176A (en) * | 2010-08-30 | 2012-04-01 | Nokia Corp | Method and apparatus for conducting a search based on context |
US20180322606A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
CN108805283A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 在机器学习中对神经网络的拓扑的高效学习和使用 |
Also Published As
Publication number | Publication date |
---|---|
US20210374210A1 (en) | 2021-12-02 |
US11100193B2 (en) | 2021-08-24 |
CN111291859A (zh) | 2020-06-16 |
KR20200070088A (ko) | 2020-06-17 |
TW202038099A (zh) | 2020-10-16 |
JP7209616B2 (ja) | 2023-01-20 |
TWI789547B (zh) | 2023-01-11 |
US20200184001A1 (en) | 2020-06-11 |
JP7474586B2 (ja) | 2024-04-25 |
CN111291859B (zh) | 2022-06-14 |
JP2020091853A (ja) | 2020-06-11 |
TW202024960A (zh) | 2020-07-01 |
KR20200070089A (ko) | 2020-06-17 |
KR102511911B1 (ko) | 2023-03-20 |
CN111291858A (zh) | 2020-06-16 |
JP2020091861A (ja) | 2020-06-11 |
US20200183837A1 (en) | 2020-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI811450B (zh) | 張量計算資料流程加速器半導體電路 | |
Zhou et al. | Transpim: A memory-based acceleration via software-hardware co-design for transformer | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
WO2019128404A1 (zh) | 矩阵乘法器 | |
Ma et al. | Performance modeling for CNN inference accelerators on FPGA | |
Zhu et al. | A 3D-stacked logic-in-memory accelerator for application-specific data intensive computing | |
KR101647907B1 (ko) | 내부 프로세서를 구비한 메모리 및 메모리 내의 데이터 통신 방법 | |
JP2020091853A5 (zh) | ||
KR20190121048A (ko) | 3 차원 적층 구조를 갖는 뉴로모픽 회로 및 이를 포함하는 반도체 장치 | |
US11797830B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
Tao et al. | Lw-gcn: A lightweight fpga-based graph convolutional network accelerator | |
Akın et al. | Understanding the design space of dram-optimized hardware FFT accelerators | |
TWI815392B (zh) | 存內計算裝置及用於執行mac操作之方法 | |
Li et al. | Fsa: A fine-grained systolic accelerator for sparse cnns | |
Wang et al. | TAICHI: A tiled architecture for in-memory computing and heterogeneous integration | |
Das et al. | Towards near data processing of convolutional neural networks | |
Ding et al. | HAIMA: A Hybrid SRAM and DRAM Accelerator-in-Memory Architecture for Transformer | |
Lu et al. | An energy-efficient 3D cross-ring accelerator with 3D-SRAM cubes for hybrid deep neural networks | |
Akin et al. | FFTs with near-optimal memory access through block data layouts: Algorithm, architecture and design automation | |
Han et al. | EGCN: An efficient GCN accelerator for minimizing off-chip memory access | |
HeydariGorji et al. | In-storage processing of I/O intensive applications on computational storage drives | |
EP4423631A2 (en) | One-dimensional computational unit for an integrated circuit | |
Qiu et al. | An FPGA‐Based Convolutional Neural Network Coprocessor | |
Yun et al. | CLAY: CXL-based Scalable NDP Architecture Accelerating Embedding Layers | |
CN109583577A (zh) | 运算装置及方法 |