CN111291859A - 通用矩阵-矩阵乘法数据流加速器半导体电路 - Google Patents

通用矩阵-矩阵乘法数据流加速器半导体电路 Download PDF

Info

Publication number
CN111291859A
CN111291859A CN201911159633.6A CN201911159633A CN111291859A CN 111291859 A CN111291859 A CN 111291859A CN 201911159633 A CN201911159633 A CN 201911159633A CN 111291859 A CN111291859 A CN 111291859A
Authority
CN
China
Prior art keywords
matrix
lookup table
bank
accelerator
semiconductor circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911159633.6A
Other languages
English (en)
Other versions
CN111291859B (zh
Inventor
谷芃
克里希纳·马拉迪
郑宏忠
牛迪民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111291859A publication Critical patent/CN111291859A/zh
Application granted granted Critical
Publication of CN111291859B publication Critical patent/CN111291859B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/008Artificial 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B12/00Dynamic random access memory [DRAM] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing 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)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (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

本发明公开一种包括智能三维堆叠动态随机存取存储器架构的通用矩阵‑矩阵乘法(GEMM)数据流加速器半导体电路。所述通用矩阵‑矩阵乘法数据流加速器半导体电路包括:存储器存储体;外围查找表,存储在存储器存储体中;以及第一向量缓冲器,存储用作查找表中的行地址的第一向量。所述电路包括第二向量缓冲器及查找表缓冲器,第二向量缓冲器存储用作查找表中的列地址的第二向量,查找表缓冲器从查找表接收并存储查找表表项。所述电路还包括求取第一乘积与第二乘积的和的加法器以及存储所述和的输出缓冲器。查找表缓冲器确定第一向量与第二向量的乘积而不实行乘法运算。实施例包括用于减小潜伏时间的分级查找架构。累积结果以脉动方式传播。

Description

通用矩阵-矩阵乘法数据流加速器半导体电路
[相关申请数据]
本申请主张在2018年12月7日提出申请的序列号为62/777,046的美国专利申请的权利,所述美国专利申请并入本申请供参考。
技术领域
本发明概念涉及深度学习,且更具体来说,涉及一种用于深度学习中的通用矩阵-矩阵乘法及张量计算的数据流加速器架构。
背景技术
深度神经网络被认为是有望实现人工智能的方法且已在许多应用中展现出其有效性。训练深度神经网络需要高的精度及宽的动态范围二者,这要求进行高效的浮点运算(floating point operation)。包括大多数浮点运算且在训练深度神经网络中占用最多时间的张量计算(tensor computation)是进行加速的关键基元运算(primitiveoperation)。由于计算性能按比例缩放得比存储器带宽及潜伏时间快得多且片外数据移动(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)裸片中出现显著且不可接受的面积开销。另外,新兴的基于非易失性存储器的加速器会遭受写入耐久性差及写入潜伏时间长的问题,这不适合于写入密集型深度学习训练任务。另外,基于静态随机存取存储器(staticrandom-access memory,SRAM)的加速器不具有足够的片上存储容量来存储进行深度学习训练所需的所有模型参数及中间结果。
发明内容
本文中所公开的发明概念包括一种包括智能三维(three-dimensional,3D)堆叠DRAM架构的通用矩阵-矩阵乘法(general matrix-matrix multiplication,GEMM)数据流加速器半导体电路。所述GEMM数据流加速器半导体电路包括:存储器存储体;外围查找表,存储在所述存储器存储体中;以及第一向量缓冲器,存储用作所述查找表中的行地址的第一向量。所述GEMM数据流加速器电路还可包括查找表缓冲器,所述查找表缓冲器从所述存储器存储体中的完整查找表接收查找表表项并将所述查找表表项储存为缓存复本。所述GEMM数据流加速器电路还包括第二向量缓冲器,所述第二向量缓冲器被配置成存储用作所述查找表的列地址的第二向量并将所述第二向量串流传输到所述查找表缓冲器。所述GEMM数据流加速器半导体电路还包括求取第一乘积与第二乘积的和的加法器以及存储所述和的结果的输出缓冲器。所述查找表缓冲器确定所述第一向量与所述第二向量的外积而不实行乘法运算。所公开的实施例包括用于减小潜伏时间的分级查找架构。累积结果以脉动方式传播。
附图说明
参照附图阅读以下详细说明,本发明原理的上述及其他特征及优点将变得更显而易见,在附图中:
图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是根据本文中所公开的一些实施例的反向传播数据布局及数据流的示例性方块图。
[符号的说明]
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:权重张量。
具体实施方式
现将详细参照本发明概念的实施例,本发明概念的实例在附图中示出。在以下详细说明中,阐述诸多具体细节以实现对本发明概念的透彻理解。然而应理解,所属领域中的普通技术人员无需这些具体细节也可实践本发明概念。在其他情形中,未详细阐述众所周知的方法、程序、组件、电路及网络,以免使实施例的各个方面模糊不清。
应理解,尽管本文中可能使用“第一(first)”、“第二(second)”等用语来阐述各种元件,然而这些元件不应受这些用语限制。这些用语仅用于区分各个元件。举例来说,在不背离本发明概念的范围的条件下,“第一堆叠”可被称为“第二堆叠”,且相似地,“第二堆叠”可被称为“第一堆叠”。
在本文对本发明概念的说明中所用的用语仅用于阐述特定实施例,而并非旨在对本发明进行限制。除非上下文清楚地另外指明,否则在对本发明概念的说明及随附的权利要求书中使用的单数形式“一(a、an)”及“所述(the)”旨在也包括复数形式。还应理解,本文中使用的用语“和/或”指代且囊括相关列出项中的任意者及相关列出项中的一者或多者的所有可能的组合。还应理解,当在本说明书中使用用语“包括(comprises)”和/或“包括(comprising)”时,其指明所述特征、整数、步骤、操作、元件、和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。图式的组件及特征未必按比例绘制。
本公开涉及一种用于深度学习中的通用矩阵-矩阵乘法(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-multiplexedtechnique)来聚合部分和(partial sum)。为避免回写(write-back)及重新加载部分和,可采用脉动数据流架构,其中前一存储体的累积器可传输累积器的当前部分和以用于下一存储体的累积,且最末存储体可将其结果中继到其他信道。3D堆叠中的硅通孔(Through-silicon-via,TSV)可用于提供高的信道间数据传输带宽。所公开的GEMM区块映射技术可将任意大小的输入张量分布在同一数据流组中的所有存储体上。由于输入部分张量(inputpartial 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存储体之外使用乘法加法或乘法累积(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上。处理器可为中央处理器(centralprocessing 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进行互连。作为另外一种选择或另外,TSV435可对每一基础裸片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的输入。TSV435可将信道(例如,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和/或PG2105。
图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、一个或多个ALU2430、开关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)实例。
Figure BDA0002285710690000171
以下是根据本文中所公开的一些实施例的反向数据布局的伪代码实例。
Figure BDA0002285710690000181
以下是根据本文中所公开的一些实施例的正向计算调度软件调度技术的伪代码实例。
Figure BDA0002285710690000182
以下是根据本文中所公开的一些实施例的反向计算调度的伪代码实例。
Figure BDA0002285710690000191
可在空间及时间两方面实现并行度。换句话说,对于多个时间处理循环中的给定处理循环,矩阵数据可由多个存储体并行处理。每一新的处理循环可使矩阵数据由多个不同存储体并行处理。因此,本文中所公开的张量计算数据流加速器的性能可得到提高。
因此,可对每一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 AccessMemory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、电可编程ROM(ElectricallyProgrammable ROM,EPROM)、电可擦可编程ROM(Electrically Erasable ProgrammableROM,EEPROM)、寄存器、硬盘、可移动磁盘(removable disk)、压缩盘只读存储器(compactdisk ROM,CD ROM)或所属领域中已知的任何其他形式的存储介质中。
以下论述旨在提供对可在其中实施本发明概念某些方面的一个或多个合适的机器的简短总体说明。通常,所述一个或多个机器包括附装有处理器、存储器(例如,RAM、ROM或其他状态保存介质)、存储装置、视频接口及输入/输出接口端口的系统总线。所述一个或多个机器可至少部分地通过以下来控制:来自例如键盘、鼠标等传统输入装置的输入;以及从另一机器接收到的指令、与虚拟现实(virtual reality,VR)环境的互动、生物反馈(biometric feedback)或其他输入信号。本文中所用用语“机器”旨在广泛地囊括单一机器、虚拟机器或由以通信方式耦合的一起运行的机器、虚拟机器或装置形成的系统。示例性机器包括计算装置(例如个人计算机、工作站、服务器、便携式计算机、手持式装置、电话、平板计算机(tablet)等)以及运输装置(例如私人或公共运输(例如汽车、火车、计程车等))。
所述一个或多个机器可包括嵌入式控制器,例如可编程或非可编程逻辑装置或阵列、专用集成电路(Application Specific Integrated Circuit,ASIC)、嵌入式计算机、智能卡等。所述一个或多个机器可利用连接到一个或多个远程机器(例如通过网络接口、调制解调器或其他通信性耦合)的一或多个连接。机器可通过例如内部网(intranet)、互联网、局域网、广域网等物理网络和/或逻辑网络进行互连。所属领域中的技术人员应理解,网络通信可利用各种有线和/或无线短程或长程载体及协议,所述载体及协议包括射频(radiofrequency,RF)、卫星、微波、电气及电子工程师学会(Institute of Electrical andElectronics Engineers,IEEE)545.11、
Figure BDA0002285710690000251
光学的、红外的、缆线、激光等。
本发明概念的实施例可通过参照或结合相关联的数据来阐述,相关联的数据包括当由机器存取时会使机器实行任务或定义抽象数据类型或低级硬件上下文的功能、程序(procedure)、数据结构、应用程序等。相关联的数据可存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或其他存储装置及其相关联的存储介质(包括硬盘驱动器、软盘、光学存储器、磁带、闪存、记忆棒(memory stick)、数字视频盘、生物存储器等)中。相关联的数据可以数据包(packet)、串行数据、并行数据、传播信号等形式通过传输环境(包括物理网络和/或逻辑网络)进行递送,且可以压缩或加密的格式使用。相关联的数据可在分布式环境中使用且可存储在本地和/或远程以供机器存取。
已参照所示实施例阐述并示出了本发明概念的原理,将认识到,在不背离这些原理的条件下可对所示实施例进行排列及细节上的修改且可以任何期望的方式对所示实施例进行组合。且尽管以上论述着重于特定实施例上,但也可预期存在其他配置。具体来说,即使本文中使用了例如“根据本发明概念的实施例”等表达,这些短语也旨在一般性地提及实施例的可能性,而不旨在将本发明概念限制到特定的实施例配置。本文中所用的这些用语可提及可组合到其他实施例中的相同或不同的实施例。
本发明概念的实施例可包括非暂时性机器可读介质,所述非暂时性机器可读介质包括可由一个或多个处理器执行的指令,所述指令包括实行如本文所述的本发明概念的要素的指令。
上述示例性实施例不应被视为对示例性实施例的发明概念进行限制。尽管已阐述了几个示例性实施例,但所属领域中的技术人员将容易理解,在不实质上背离本公开的新颖教示及优点的条件下,可对这些实施例进行许多修改。因此,所有这些修改均旨在包含于由权利要求所界定的本发明概念的范围内。

Claims (20)

1.一种通用矩阵-矩阵乘法数据流加速器半导体电路,包括:
存储器存储体;
外围查找表,存储在所述存储器存储体中;
第一向量缓冲器,被配置成存储用作所述外围查找表中的行地址的第一向量;
第二向量缓冲器,被配置成存储用作所述外围查找表中的列地址的第二向量;以及
一个或多个查找表缓冲器,被配置成接收一个或多个查找表表项,其中所述第二向量缓冲器被配置成将所述第二向量串流传输到所述一个或多个查找表缓冲器,且所述一个或多个查找表缓冲器被配置成存储来自所述外围查找表的所述一个或多个查找表表项,
其中所述一个或多个查找表缓冲器被配置成至少部分地基于来自所述外围查找表的所述一个或多个查找表表项来确定所述第一向量与所述第二向量的乘积。
2.根据权利要求1所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述乘积是第一乘积,所述通用矩阵-矩阵乘法数据流加速器半导体电路还包括:
一个或多个加法器,被配置成求取所述第一乘积与第二乘积的和;以及
输出缓冲器,被配置成存储所述第一乘积与所述第二乘积的所述和的结果。
3.根据权利要求2所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述一个或多个查找表缓冲器被配置成使用所述第一向量的值及所述第二向量的值分别作为所述外围查找表中的所述列地址及所述行地址来确定所述第一乘积而不实行乘法运算。
4.根据权利要求2所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述一个或多个查找表缓冲器被配置成使用第三向量的值及第四向量的值分别作为所述查找表中的所述列地址及所述行地址来确定所述第二乘积而不实行乘法运算。
5.根据权利要求1所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述存储器存储体、所述外围查找表、所述第一向量缓冲器、所述一个或多个查找表缓冲器及所述第二向量缓冲器形成用于减小潜伏时间的分级查找架构。
6.根据权利要求1所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括包括所述一个或多个查找表缓冲器在内的多个查找表缓冲器,其中所述多个查找表缓冲器被配置成存储对应的多个矩阵向量以确定所述多个矩阵向量的多个乘积而不存取存储在所述存储器存储体中的所述外围查找表且不实行乘法运算。
7.根据权利要求6所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括智能存储体单元的外围阵列,其中所述智能存储体单元的外围阵列被配置成形成流水线式数据流链,在所述流水线式数据流链中,来自所述智能存储体单元的外围阵列中的一个智能存储体单元的部分输出数据被馈送到所述智能存储体单元的外围阵列中的另一智能存储体单元中以进行数据累积。
8.根据权利要求7所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述智能存储体单元中的每一者包括所述存储器存储体、所述外围查找表、所述多个查找表缓冲器、一个或多个加法器、及输出缓冲器。
9.根据权利要求8所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述多个智能存储体单元中的第一智能存储体单元被配置成将所述乘积输出到与所述第一智能存储体单元相邻的第二智能存储体单元。
10.根据权利要求9所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述第二智能存储体单元被配置成存储从所述第一智能存储体单元接收的所述乘积。
11.根据权利要求10所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中:
所述乘积是第一乘积;
所述第二智能存储体单元被配置成以串流方式从所述存储器存储体接收第三向量;
所述第二智能存储体单元的所述一个或多个查找表缓冲器被配置成使用所述外围查找表基于所述第三向量来确定第二乘积而不实行所述乘法运算;
所述第二智能存储体单元的所述一个或多个加法器被配置成计算所述第一乘积与所述第二乘积的和;且
所述第二智能存储体单元的所述输出缓冲器被配置成存储所述第一乘积与所述第二乘积的所述和。
12.根据权利要求11所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中:
所述第二智能存储体单元被配置成将所述第一乘积与所述第二乘积的所述和输出到所述智能存储体单元的外围阵列中的第三智能存储体单元,其中所述第三智能存储体单元与所述第二智能存储体单元相邻;且
所述第三智能存储体单元被配置成存储所述和。
13.根据权利要求12所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中:
所述智能存储体单元的外围阵列是被配置成以蛇形方式传播部分和的脉动阵列;且
所述智能存储体单元的外围阵列被配置成以串流方式接收多个输入矩阵向量,并在与所述部分和的数据流方向垂直的方向上传播所述多个输入矩阵向量。
14.根据权利要求13所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述存储器存储体是动态随机存取存储器存储体,所述通用矩阵-矩阵乘法数据流加速器半导体电路还包括:
近动态随机存取存储器处理数据流加速器单元裸片,包括多个信道,其中:
所述信道中的每一者包括以蛇形方式排列的所述智能存储体单元的外围阵列;且
所述智能存储体单元中的每一者包括所述动态随机存取存储器存储体、所述查找表、所述多个查找表缓冲器、所述一个或多个加法器及所述输出缓冲器。
15.根据权利要求14所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中所述近动态随机存取存储器处理数据流加速器单元裸片是彼此上下堆叠的多个近动态随机存取存储器处理数据流加速器单元裸片中的一者。
16.根据权利要求15所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括:
无源硅中间层;
处理器,设置在所述无源硅中间层上;以及
基础裸片,与所述处理器相邻地设置在所述无源硅中间层上,
其中所述多个近动态随机存取存储器处理数据流加速器单元裸片堆叠在所述基础裸片顶上。
17.根据权利要求16所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括:
一个或多个硅通孔,设置成穿过所述多个近动态随机存取存储器处理数据流加速器单元裸片及所述基础裸片,
其中所述一个或多个硅通孔被配置成对所述多个近动态随机存取存储器处理数据流加速器单元裸片与所述基础裸片进行互连以及对所述基础裸片与所述处理器进行互连;且
其中所述多个近动态随机存取存储器处理数据流加速器单元裸片及所述基础裸片被配置成从所述处理器卸载计算。
18.根据权利要求15所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括:
无源硅中间层;
控制器,设置在所述无源硅中间层上;以及
基础裸片,与所述控制器相邻地设置在所述无源硅中间层上,
其中所述多个近动态随机存取存储器处理数据流加速器单元裸片堆叠在所述基础裸片顶上。
19.根据权利要求18所述的通用矩阵-矩阵乘法数据流加速器半导体电路,还包括:
一个或多个硅通孔,设置成穿过所述多个近动态随机存取存储器处理数据流加速器单元裸片及所述基础裸片,
其中所述一个或多个硅通孔被配置成对所述多个近动态随机存取存储器处理数据流加速器单元裸片与所述基础裸片进行互连以及对所述基础裸片与所述控制器进行互连;且
其中所述多个近动态随机存取存储器处理数据流加速器单元裸片及所述基础裸片被配置成从与所述通用矩阵-矩阵乘法数据流加速器半导体电路分开的主机卸载计算。
20.根据权利要求15所述的通用矩阵-矩阵乘法数据流加速器半导体电路,其中:
堆叠的所述多个近动态随机存取存储器处理数据流加速器单元裸片与所述基础裸片被配置成并行地处理所述部分输出数据。
CN201911159633.6A 2018-12-07 2019-11-22 通用矩阵-矩阵乘法数据流加速器半导体电路 Active CN111291859B (zh)

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,860 US11100193B2 (en) 2018-12-07 2019-04-18 Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
US16/388,860 2019-04-18

Publications (2)

Publication Number Publication Date
CN111291859A true CN111291859A (zh) 2020-06-16
CN111291859B CN111291859B (zh) 2022-06-14

Family

ID=70971724

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201911158714.4A Pending CN111291858A (zh) 2018-12-07 2019-11-22 张量计算数据流加速器半导体电路
CN201911159633.6A Active CN111291859B (zh) 2018-12-07 2019-11-22 通用矩阵-矩阵乘法数据流加速器半导体电路

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201911158714.4A Pending CN111291858A (zh) 2018-12-07 2019-11-22 张量计算数据流加速器半导体电路

Country Status (5)

Country Link
US (3) US20200183837A1 (zh)
JP (2) JP7209616B2 (zh)
KR (2) KR102511911B1 (zh)
CN (2) CN111291858A (zh)
TW (2) TWI789547B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946282A (zh) * 2020-07-17 2022-01-18 美光科技公司 使用查找表的可重新配置的存储器内处理逻辑
US11887693B2 (en) 2020-12-16 2024-01-30 Lodestar Licensing Group Llc Reconfigurable processing-in-memory logic

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200183837A1 (en) * 2018-12-07 2020-06-11 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
US11334358B2 (en) * 2019-12-09 2022-05-17 Amazon Technologies, Inc. Hardware accelerator having reconfigurable instruction set and reconfigurable decoder
US11841792B1 (en) 2019-12-09 2023-12-12 Amazon Technologies, Inc. Instructions with multiple memory access modes
US11429310B2 (en) * 2020-03-06 2022-08-30 Samsung Electronics Co., Ltd. Adjustable function-in-memory computation system
US11461651B2 (en) * 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip 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
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
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
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
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
CN117501250A (zh) * 2021-09-22 2024-02-02 华为技术有限公司 用于矩阵计算加速的方法和装置
KR20230061180A (ko) * 2021-10-28 2023-05-08 주식회사 사피온코리아 컴퓨팅 시스템 및 이를 위한 전치 방법
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 深圳市九天睿芯科技有限公司 神经网络加速装置、方法、芯片、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN104238993A (zh) * 2013-06-11 2014-12-24 亚德诺半导体技术公司 微处理器集成电路的向量矩阵乘积加速器
US20180075339A1 (en) * 2016-09-09 2018-03-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
US20180315158A1 (en) * 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling

Family Cites Families (28)

* Cited by examiner, † Cited by third party
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
PL1955123T3 (pl) * 2005-11-15 2010-06-30 Ericsson Telefon Ab L M Urządzenie mnożące z tablicą wyszukiwań
US7532785B1 (en) * 2007-10-23 2009-05-12 Hewlett-Packard Development Company, L.P. Photonic interconnects for computer system devices
US20140207794A1 (en) * 2010-08-30 2014-07-24 Nokia Corporation Method and apparatus for conducting a search based on context
JP2012064087A (ja) 2010-09-17 2012-03-29 Keio Gijuku 生活習慣病の診断予測装置、生活習慣病の診断予測方法及びプログラム
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 富士通株式会社 歪補償装置および歪補償方法
WO2017171769A1 (en) 2016-03-31 2017-10-05 Hewlett Packard Enterprise Development Lp Logical operations
EP3560111A4 (en) * 2016-12-21 2020-12-02 Intel Capital Corporation WIRELESS COMMUNICATION TECHNOLOGY, DEVICES, AND METHODS
WO2018126073A1 (en) 2016-12-30 2018-07-05 Lau Horace H Deep learning hardware
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
US11501152B2 (en) * 2017-05-05 2022-11-15 Intel Corporation Efficient learning and using of topologies of neural networks in machine learning
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives
US11373266B2 (en) * 2017-05-05 2022-06-28 Intel Corporation Data parallelism and halo exchange for distributed machine learning
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
US11164072B2 (en) * 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Convolution engines for systolic neural network processor
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 深圳云天励飞技术股份有限公司 用于实现卷积运算的处理元件、装置和方法
US20200183837A1 (en) * 2018-12-07 2020-06-11 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN104238993A (zh) * 2013-06-11 2014-12-24 亚德诺半导体技术公司 微处理器集成电路的向量矩阵乘积加速器
US20180075339A1 (en) * 2016-09-09 2018-03-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
US20180315158A1 (en) * 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
CN108805792A (zh) * 2017-04-28 2018-11-13 英特尔公司 具有先进调度的可编程粗粒度化和稀疏矩阵计算硬件

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946282A (zh) * 2020-07-17 2022-01-18 美光科技公司 使用查找表的可重新配置的存储器内处理逻辑
US11947967B2 (en) 2020-07-17 2024-04-02 Lodestar Licensing Group Llc Reconfigurable processing-in-memory logic using look-up tables
US11887693B2 (en) 2020-12-16 2024-01-30 Lodestar Licensing Group Llc Reconfigurable processing-in-memory logic

Also Published As

Publication number Publication date
US20200184001A1 (en) 2020-06-11
KR20200070089A (ko) 2020-06-17
JP2020091853A (ja) 2020-06-11
KR20200070088A (ko) 2020-06-17
TW202024960A (zh) 2020-07-01
CN111291859B (zh) 2022-06-14
US11100193B2 (en) 2021-08-24
CN111291858A (zh) 2020-06-16
TWI811450B (zh) 2023-08-11
US20200183837A1 (en) 2020-06-11
TWI789547B (zh) 2023-01-11
JP2020091861A (ja) 2020-06-11
JP7209616B2 (ja) 2023-01-20
US20210374210A1 (en) 2021-12-02
KR102511911B1 (ko) 2023-03-20
TW202038099A (zh) 2020-10-16
JP7474586B2 (ja) 2024-04-25

Similar Documents

Publication Publication Date Title
CN111291859B (zh) 通用矩阵-矩阵乘法数据流加速器半导体电路
CN110231958B (zh) 一种矩阵乘向量运算方法及装置
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
Zhou et al. Transpim: A memory-based acceleration via software-hardware co-design for transformer
WO2019128404A1 (zh) 矩阵乘法器
KR20190010642A (ko) 심층 신경망용 가속기
Choi et al. An energy-efficient deep convolutional neural network training accelerator for in situ personalization on smart devices
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
Tao et al. Lw-gcn: A lightweight fpga-based graph convolutional network accelerator
Chen et al. An efficient accelerator for multiple convolutions from the sparsity perspective
Wang et al. TAICHI: A tiled architecture for in-memory computing and heterogeneous integration
CN115310037A (zh) 矩阵乘法计算单元、加速单元、计算系统和相关方法
CN109615061B (zh) 一种卷积运算方法及装置
Han et al. EGCN: An efficient GCN accelerator for minimizing off-chip memory access
WO2023114417A2 (en) One-dimensional computational unit for an integrated circuit
Lu et al. A reconfigurable DNN training accelerator on FPGA
Qiu et al. An FPGA‐Based Convolutional Neural Network Coprocessor
Dey et al. An application specific processor architecture with 3D integration for recurrent neural networks
Yang et al. A 65-nm energy-efficient interframe data reuse neural network accelerator for video applications
Cheng et al. Towards a deep-pipelined architecture for accelerating deep GCN on a multi-FPGA platform
Chen et al. Exploring the programmability for deep learning processors: from architecture to tensorization
Iliev et al. FC_ACCEL: Enabling Efficient, Low-Latency and Flexible Inference in DNN Fully Connected Layers, using Optimized Checkerboard Block matrix decomposition, fast scheduling, and a resource efficient 1D PE array with a custom HBM2 memory subsystem
CN109615062B (zh) 一种卷积运算方法及装置
Cheng et al. MuDBN: An Energy-Efficient and High-Performance Multi-FPGA Accelerator for Deep Belief Networks
Li et al. A sparse matrix vector multiplication accelerator based on high-bandwidth memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant