CN113642713B - 一种用于神经网络张量处理器的4d计算装置 - Google Patents
一种用于神经网络张量处理器的4d计算装置 Download PDFInfo
- Publication number
- CN113642713B CN113642713B CN202110955122.6A CN202110955122A CN113642713B CN 113642713 B CN113642713 B CN 113642713B CN 202110955122 A CN202110955122 A CN 202110955122A CN 113642713 B CN113642713 B CN 113642713B
- Authority
- CN
- China
- Prior art keywords
- mac
- calculation
- data
- accumulation
- eep
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims abstract description 159
- 238000009825 accumulation Methods 0.000 claims abstract description 145
- 238000003491 array Methods 0.000 claims description 31
- 102100030148 Integrator complex subunit 8 Human genes 0.000 claims description 28
- 101710092891 Integrator complex subunit 8 Proteins 0.000 claims description 28
- 230000006399 behavior Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 8
- 239000000203 mixture Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
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
- G06N3/065—Analogue means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种神经网络张量处理器的4D计算装置,包括片上存储单元、dat数据流处理单元、wt数据流处理单元、两个MAC计算阵列单元和两个累加单元;其中,片上存储单元用于保存4D计算装置计算所需的dat数据和wt数据;dat数据流处理单元用于接收来自所述片上存储单元的dat数据,并根据不同的计算模式整合该dat数据,最终形成后续计算所需的dat数据,并发送给两个MAC计算阵列单元;wt数据流处理单元用于接收来自所述片上存储单元的wt数据,并根据不同的计算模式整合该wt数据,最终形成后续计算所需的wt数据,并发送给两个MAC计算阵列单元;累加单元用于实现MAC计算阵列单元计算结果的累加操作,并将累加后的计算结果进行缓存、输出,用于后续计算。
Description
技术领域
本发明涉及神经网络张量处理器技术领域,尤其涉及一种用于神经网络张量处理器的4D计算装置。
背景技术
传统处理器(包括CPU、GPU以及DSP等)采用基于指令的计算方法,其数据计算受指令的限制,通常具有较低的计算密度。也即在一定的数据位宽下(例如512位的数据位宽),通常需要大量的电路结构用于处理指令。最低效率如CPU,一条指令通常仅带一个32位或64位数据。
对于高性能计算的GPU,其通过多线程技术改善了计算密度,也即通过数量众多的计算线程来为计算资源提供数据,但其本质仍然是指令集架构,通过多线程可以提高计算密度,但仍然无法避免由指令相关电路带来的计算冗余。
发明内容
本发明的目的在于提供一种用于神经网络张量处理器的4D计算装置,采用非指令集架构,无需传统处理器中指令相关电路结构,从而解决传统处理器中由指令带来的计算密度较低的问题。
为实现上述目的,本发明提供了一种如下技术方案:
一种神经网络张量处理器的4D计算装置,包括片上存储单元、dat数据流处理单元、wt数据流处理单元、第一MAC计算阵列单元、第二MAC计算阵列单元和两个累加单元;
所述片上存储单元,用于保存4D计算装置计算所需的dat数据和wt数据;
所述dat数据流处理单元,用于接收来自所述片上存储单元的dat数据,并根据不同的计算模式整合该dat数据,最终形成后续计算所需的dat数据,并发送给所述第一MAC计算阵列单元和所述第二MAC计算阵列单元;
所述wt数据流处理单元用于接收来自所述片上存储单元的wt数据,并根据不同的计算模式整合该wt数据,最终形成后续计算所需的wt数据,并发送给所述第一MAC计算阵列单元和所述第二MAC计算阵列单元;
两所述累加单元分别用于实现第一MAC计算阵列单元、第二MAC计算阵列单元计算结果的累加操作,并将累加后的计算结果进行缓存、输出,用于后续计算。
进一步地,所述片上存储单元包括两个写接口、两个读接口和多个存储块,两个写接口分别用于写dat数据和wt数据,其中,dat数据的写地址、写数据和写使能信号由外部模块产生,wt数据的写地址、写数据和写使能信号由外部模块产生;所述读接口的位宽是M比特,所述写接口的位宽是M比特的X分之一;每个存储块包含X个宽度是M/X且深度为N的SRAM;每个存储块的容量是M*N比特,片上存储单元包含存储块的数量为Y,片上存储单元总的存储容量为M*N*X*Y比特;所述读接口的读地址由外部模块产生,该读接口的读数据分别发送给dat数据流处理单元和wt数据流处理单元。
进一步地,所述M等于1024,所述X等于2;所述N等于512。
进一步地,所述存储块的数量Y为5或9。
进一步地,所述dat数据流处理单元、所述wt数据流处理单元接收来自外部的数据流控制指令,根据数据流控制指令的数据流控制信息,重新整合dat数据和wt数据,所述的整合工作包括:(1)产生dummy控制信号,替换片上存储单元中的原始数据为dummy数据,所述dummy数据是指值为0、数值表达范围内的最大负数或最大正数的数据;(2)根据外部控制信号选择输入数据中的部分数据;根据数据流控制指令中的数据有效位数信息选择输入数据中的部分数据;(4)根据数据流控制信息,对输入数据进行延时控制。
进一步地,所述对输入数据进行延时控制的方法为:将从片上存储单元获取的dat数据按16比特分成多个数据,并按顺序对数据进行0到n个时钟周期的延时操作;将从片上存储单元获取的wt数据按16比特分成多个数据,并按顺序对数据进行0到n个时钟周期的延时操作,所述n的取值与第一和第二MAC计算阵列单元中的MAC级联结构相关。
进一步地,所述第一MAC计算阵列单元包括EEP_4Dcore_active、EEP_4Dcore_rt_out、k-1组MAC计算阵列和一组DW MAC计算阵列;所述第二MAC计算阵列单元包括EEP_4Dcore_active模块、EEP_4Dcore_rt_out模块和k组MAC计算阵列;其中k=(M/Q)/(16/Y),式中,M为读接口的位宽,Q为MAC计算阵列包含的MAC乘法累加单元数,Y为计算精度,单位为比特;
所述EEP_4Dcore_active,用于将输入的dat数据和wt数据分配给MAC计算阵列,其中,dat数据按照广播的方式发送给所有MAC计算阵列,wt数据分别发送给MAC计算阵列;
所述MAC计算阵列,用于实现乘法累加计算;
所述DW MAC计算阵列,用于实现乘法累加计算及执行并行乘法运算,其中的每个MAC执行并行乘法计算时输出一个DW MAC结果;
所述EEP_4Dcore_rt_out模块,用于整合来自MAC计算阵列的计算结果,并通过插入适当的流水线寄存器来调整神经网络张量处理器设计的时序性能。
进一步地,所述MAC计算阵列由最大p组MAC级联累加计算模块组成,MAC计算阵列内部的p组MAC级联累加计算模块通过两两相加的方式累加在一起,最终得到一个MAC累加结果。
进一步地,每组MAC级联累加计算模块内部包含T个级联累加计算树结构,并最终相加得到一个累加结果,该累加结果为该MAC级联累加计算模块的输出。
进一步地,所述级联累加计算树结构至少包括单精度模式和混合精度模式中的一种,在单精度模式下,所述级联累加计算树结构包括w个级联的FP16 MAC,每个FP16 MAC由一个乘法器和一个加法器组成,其乘法器的输出作为其加法器的一个输入;w个FP16 MAC逐级累加输出一个MAC累加结果;在混合精度模式下,所述级联累加计算树结构包括w个级联的FP16/INT8 MAC和w个级联的INT8 MAC,当配置为混合精度计算时,所述w个FP16/INT8MAC逐级累加输出一个FP16/INT8结果;当配置为INT8精度计算时,所述w个INT8 MAC逐级累加输出一个INT8结果。
进一步地,所述MAC计算阵列的参数关系为:p=Q/(T*w)。
进一步地,Q=64,T=2;w=4;p=8。
进一步地,所述DW MAC计算阵列由r组DW MAC级联累加计算模块和p-r组MAC级联累加计算模块组成,r<p,
所述DW MAC计算阵列执行乘法累加计算模式或并行计算模式,
在乘法累加计算模式下,r组DW MAC级联累加计算模块和p-r组MAC级联累加计算模块通过两两相加的方式累加在一起,最后各自得到的临时结果相加最终得到一个MAC累加结果;
在并行计算模式下,MAC级联累加计算模块内的各MAC不进行累加计算,而是执行并行乘法计算,每个MAC输出一个乘法计算结果。
进一步地,p=8;r=4。
进一步地,每组DW MAC级联累加计算模块内部包含T个DW级联累加计算树结构,所述DW级联累加计算树结构至少包括单精度模式和混合精度模式的一种在单精度模式下,所述DW级联累加计算树结构包括w个级联的FP16 MAC,每个FP16 MAC由一个乘法器和一个加法器组成,其乘法器的输出作为其加法器的一个输入;w个FP16 MAC逐级累加输出一个MAC累加结果;在混合精度模式下,所述DW级联累加计算树结构包括w个级联的FP16/INT8 MAC和w个级联的INT8 MAC,当配置为混合精度计算时所述w个FP16/INT8MAC逐级累加输出一个FP16/INT8结果,所述w个FP16/INT8 MAC执行并行乘法计算各输出一个FP16/INT8的DW MAC结果;当配置为INT8精度计算时,所述w个INT8 MAC逐级累加输出一个INT8结果,所述w个INT8 MAC执行并行乘法运算各输出一个INT8的DW MAC结果。
进一步地,T=2,w=4。
进一步地,所述累加单元包含模块:EEP_4Dcore_calculator、EEP_4Dcore_assembly_ctrl和EEP_4Dcore_delivery_buffer,
所述EEP_4Dcore_calculator为累加计算模块,内部包含16组ACC累加模块,每个ACC累加模块拥有一个深度为32的缓存,用于存储待计算的临时结果;
所述EEP_4Dcore_assembly_ctrl用于控制累加计算模块的行为,所述行为包括何时开始、何时结束以及何时输出计算结果;
所述EEP_4Dcore_delivery_buffer是一个深度为256的结果缓存,其内部保存所述EEP_4Dcore_calculator的计算结果,并等待外部装置从中取出计算结果从而进行下一步的计算操作。
进一步地,所述ACC累加模块内部包含一个累加器和一个ACC缓存,用于实现数据的累加计算,ACC累加模块的控制由EEP_4Dcore_assembly_ctrl提供,所述EEP_4Dcore_assembly_ctrl根据数据流控制指令的信息,提供准确的累加开始和累加结束信号,从而指示ACC累加模块何时从ACC缓存读入临时结果用于累加,以及何时把临时结果存储到ACC缓存中,以及何时输出最终结果。
本发明和现有技术相比,其显著特点为:本发明实现一种用于神经网络张量处理器的4D计算结构,该4D计算结构采用数据流架构,计算过程无指令,无需传统处理器中指令相关电路结构,从而解决传统处理器中由指令带来的计算密度较低的问题,实现高效率和高密度的计算。
附图说明
图1是本发明的4D计算装置所涉及的神经网络张量处理器的数据流计算引擎;
图2是本发明的4D计算装置的内部结构框图;
图3是本发明的EEP_OCM模块的内部结构框图;
图4是本发明的EEP_4Dcore_core_a的内部结构框图;
图5是本发明的MAC计算阵列的内部结构框图;
图6是本发明的级联累加计算树的内部结构框图;
图7是本发明的DW MAC计算阵列的内部结构框图;
图8是本发明的DW级联累加计算树的内部结构框图;
图9是本发明的混合精度级联累加计算树的内部结构框图;
图10是本发明的EEP_4Dcore_core_b的内部结构框图;
图11是本发明的EEP_4Dcore_acc的内部结构框图;
图12是本发明的EEP_4Dcore_calculator的内部结构框图;
图13是本发明的ACC累加模块的内部结构框图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
现结合附图和具体实施方式对本发明进一步说明。
实施例1:
本发明的4D计算装置涉及前案专利(发明名称为:一种神经网络张量处理器,申请号为:202011421828.6)中的″4D计算模块″,如图1所示。
本实施例给出了4D计算装置的一种具体的内部结构。
4D计算装置内部拥有存储资源(EEP_OCM)和计算资源(MAC计算阵列),其主要作用是实现乘法累加计算,而相关计算控制信息,包括EEP_OCM数据读地址和控制信息,则由外部的控制模块产生。上述计算控制信息以数据流序列的方式存在,以紧凑的方式(每个clock一个)进行传输,实现每个clock都进行的计算操作,最终达到较高的计算资源利用率。
在本实施例中,4D计算装置的内部结构如图2所示,其中,外部输入的是计算控制信息和EEP_OCM数据输入,输出计算结果。
4D计算装置包含如下主要模块:
4D计算装置的基本计算流程如下:
4D计算装置拥有16组FP16 MAC乘法累加树结构或者32组INT8 MAC乘法累加树结构,每个时钟周期的计算可以获得16个FP16结果或者32个INT8结果,该结果会由EEP_4Dcore_acc累加模块进行累加计算。经过多次的累加计算操作后,可以获得16个FP16最终结果或者32个INT8最终结果。该最终结果将存储在delivery buffer中并且在1Dcore模块就绪的情况下,把结果发送给1Dcore用于后续计算。
EEP_OCM
EEP_OCM是用于为4D计算装置保存计算所需的dat数据和wt数据的片上存储器。在本实施例中,EEP-OCM拥有两个512比特数据宽度的写接口,分别用于写dat数据和wt数据。其中,dat数据的写地址、写数据和写使能信号由外部模块产生,wt数据的写地址、写数据和写使能信号由外部模块产生。
EEP-OCM内部包含多个存储块bank,每个存储块bank包含两个宽度是512比特且深度为512比特的SRAM(容量为32KB),因此,每个存储块bank的存储器容量为64KB。EEP-OCM写接口的位宽是512比特,可通过特定的信号来选择bank内部的两个SRAM。
EEP-OCM可以有多种容量配置。EEP-OCM的容量越大,计算时对数据和计算的拆分就越少(计算时,需要把本次计算所需的dat数据和wt数据缓存入OCM中,通常情况下,对于完整的一次计算,dat数据和wt数据的尺寸往往大于OCM的存储容量,因此需要把计算拆解为多个子计算,使得每次子计算的dat和wt数据可以存入EEP-OCM)。通常情况下,计算的拆分会引入一些计算冗余,该计算冗余会小量增加计算延迟。通常情况下,EEP-OCM的容量越大,相同算法的计算延迟会越低。然而,EEP-OCM的容量越大,芯片后端物理设计时的难度就会越大。因此,从经验上来讲,bank数为5或9为宜。也即典型情况下存储器容量为320KB或576KB。
EEP-OCM拥有两个1024比特数据宽度的读接口,该读接口的读地址由外部模块产生,该读接口的读数据分别发送给EEP_OCM_dl_stream和EEP_OCM_wl_stream。
以bank数为5,OCM的内部结构框图如图3所示。
EEP_OCM_dl_stream
在本实施例中,EEP_OCM_dl_stream从EEP_OCM获取1024比特数据宽度的dat数据,该数据经过一定处理后,会分别发送给EEP_4Dcore_core_a和EEP_4Dcore_core_b。
由于EEP_4Dcore_core_a/EEP_4Dcore_core_b内的MAC计算阵列采用以4个MAC为一组的级联方式实现乘法累加,并且每个MAC的输出都直接连接到一个寄存器上。因此,需要在EEP_OCM_dl_stream中对对应数据进行一定的延迟操作,从而匹配级联的乘法累加方式。
EEP_OCM_dl_stream把1024比特的输入数据按16比特分为64个数据,并按顺序对数据进行delay 0 clock,delay 1 clock,delay 2 clock以及delay 3 clock操作。
EEP_OCM_dl_stream会根据来自外部的控制信息产生dummy数据(固定为某个可以配置的值)。该dummy数据会代替来自OCM的数据输出(dummy数据输出过程中,OCM读数据是无效的)。另外,EEP_OCM_dl_stream会根据来自外部的控制信息选择1024比特中的有效数据,该有效数据的选择与MAC计算阵列的有效MAC数以及计算模式相关。
EEP_OCM_dl_stream的核心功能是接收来自OCM的1024比特的计算数据,并接收来自外部的数据流控制指令。根据数据流控制信息,重新整合正确的1024比特的计算数据并发送给MAC计算阵列。
上述1024比特数据重新整合工作主要包括如下几个方面:
(1)根据dummy控制信号,替换OCM原始数据为dummy数据;
(2)在某些模式下(例如depthwise模式),根据外部控制信号选择1024比特中的一部分(以256比特为单位长度分为四部分);
(3)根据控制指令中的数据有效位数信息选择1024比特中的一部分(以256比特为单位长度分为四部分);
另外,除了1024比特的数据,同时发送给MAC计算阵列的还有部分控制指令,从而实现后续MAC阵列和ACC累加计算的控制。
EEP_OCM_wl_stream
在本实施例中,EEP_OCM_wl_stream从EEP_OCM获取1024比特的wt数据,该数据经过一定处理后,会分别发送给EEP_4Dcore_core_a和EEP_4Dcore_core_b。
由于EEP_4Dcore_core_a/EEP_4Dcore_core_b内的MAC计算阵列采用以4个MAC为一组的级联方式实现乘法累加,并且每个MAC的输出都直接连接到一个寄存器上。因此,需要在EEP_OCM_wl_stream中对对应数据进行一定的延迟操作,从而匹配级联的乘法累加方式。
EEP_OCM_wl_stream把1024比特的wt数据按16比特分为64个数据,并按顺序对数据进行delay 0 clock,delay 1 clock,delay 2 clock以及delay 3 clock操作。
EEP_OCM_wl_stream的核心功能是接收来自OCM的1024比特参数,接收来自EEP_4Dcore_ctrl_wl的数据流控制指令。根据数据流控制信息,重新整合正确的1024比特参数并发送给EEP_4Dcore_core_a和EEP_4Dcore_core_b。
上述1024比特重新整合工作主要包括如下几个方面:
(1)某些模式下(例如depthwise模式),根据数据流控制信息选择1024比特中的一部分(以256比特分为四部分);
(2)根据数据流控制指令中的数据有效位数信息对1024比特参数进行移位操作;另外,除了1024比特的数据,同时发送给MAC计算阵列的还有MAC阵列选择信号。
EEP_4Dcore_core_a和EEP_4Dcore_core_b分别拥有8组MAC计算阵列(总共16组)。计算时,参数分16个时钟周期分别发送参数数据给16组MAC计算阵列,而这16组参数就通过特定信号来实现选择控制。
EEP_4Dcore_core_a
在本实施例中,如图4所示,EEP_4Dcore_core_a包含7组MAC计算阵列和1组DW MAC计算阵列,每组MAC计算阵列由最大8组MAC级联累加计算模块组成,每组MAC级联累加计算模块由两列相加的级联累加计算树组成,每个级联累加计算包含4个FP16MAC乘法累加器(单精度模式下)或者4个FP16/INT8 MAC乘法累加器+4个INT8 MAC乘法累加器(混合精度模式下)。
如图4所示,EEP_4Dcore_core_a包含如下模块:
(1)EEP_4Dcore_active,主要作用是把输入的dat数据和wt数据分配给MAC计算阵列,其中,dat数据按照广播的方式发送给所有MAC计算阵列,计算wt数据分别发送给MAC计算阵列(每个时钟周期发送给一个MAC计算阵列,由8比特信号选择更新的MAC阵列计算阵列);
(2)MAC计算阵列,主要作用是实现乘法累加计算;
(3)EEP_4Dcore_active,主要作用是整合来自MAC计算阵列的计算结果,并通过插入适当的流水线寄存器来调整神经网络张量处理器设计的时序性能。
MAC计算阵列
在本实施例中,EEP_4Dcore_core_a包含8组计算阵列,其中7组是MAC计算阵列,其内部包含8组MAC级联累加计算模块,MAC计算阵列的具体内部结构框图如图5所示。
MAC计算阵列内部的8组MAC级联累加计算模块通过两两相加的方式累加在一起,最终得到一个MAC累加结果。
每个MAC级联累加计算模块内部包含两个级联累加计算树结构,并最终相加得到一个累加结果。
每个级联累加计算树结构包含四个级联的MAC,每个MAC由一个乘法器和一个加法器组成,其内部结构如图6所示。
为了得到更好的时序性能,级联累加计算树结构中的每个MAC输出端都配有一个输出寄存器,因此,输入经过四个时钟周期可以得到级联累加计算结果,而为了适配这种级联流水的计算结构,相邻的输入数据必须经过delay从而匹配上述级联计算范式。
有关EEP-TPU的MAC数量:
从上述结构框图可以看到,MAC级联累加计算模块包含两个级联累加计算树,因此MAC级联累加计算模块的MAC数为8;MAC计算阵列包含8个MAC级联累加计算模块,因此MAC计算阵列的MAC数为64;EEP-TPU总共包括16组MAC计算阵列,因此总的MAC数为1024。如果使用混合精度计算,总的MAC数量翻倍,为2048(包含1024个fp16/int8混用MAC和1024个int8专用MAC)。
DW MAC计算阵列
在本实施例中,EEP_4Dcore_core_a包含8组计算阵列,其中1组是DW MAC计算阵列模块,其内部包含4组MAC级联累加计算模块和4组DW MAC级联累加计算模块,具体内部结构框图如图7所示。
DW MAC计算阵列的核心功能是在实现传统乘法累加计算的同时,实现并行乘法(不累加)计算,这种并行乘法(不累加)计算模式被定义为depthwise计算模式,被用于多种算子,包括DW卷积、pooling、argmax等。
DW MAC级联累加计算模块拥有两类输出,一类是和MAC级联累加计算模块相同的MAC累加输出(一个输出数据),该另一类是DW MAC输出(8个输出数据)。4个DW MAC级联累加计算模块总共输出32个输出数据。
在并行计算模式下,DW MAC级联累加计算模块内部的MAC不进行累加计算,而是并行输出乘法计算结果(每个MAC输出一个)。因此,1个DW MAC级联累加计算模块内包含8个MAC,输出8个DW MAC结果。
DW级联累加计算树的内部结构框图如图8所示。
EEP-TPU拥有混合精度计算模式。在拥有混合精度计算模式的设计中,拥有两类MAC:FP16/INT8混用MAC和INT8 MAC。其中,
FP16/INT8混用MAC可同时计算FP16精度乘法累加和INT8精度乘法累加,其输入和输出数据通路在不同精度下公用,因此数据位宽为可支持FP16计算的最大配置。INT8计算下复用FP16的数据资源和计算资源。
INT8 MAC为INT8计算专用MAC,该MAC的输入和输出数据通道仅支持8bit计算,拥有INT8计算下专用的数据资源和计算资源,不可被其他模式所复用。
混合精度级联累加计算树可支持FP16计算和INT8计算,其内部结构如图9所示。
无论是FP16精度还是INT8精度,参考EEP_OCM相关模块的描述,OCM的输出数据带宽都是每个时钟周期1024bit,在FP16模式下,1024bit可被当作64个数据被MAC计算阵列的64个MAC所使用;在INT8模式下,1024bit可被当作128个数据被MAC计算阵列的64个FP16/INT8混用MAC和64个INT8专用MAC所使用。从而实现最大的MAC计算利用率。
EEP_4Dcore_core_b
在本实施例中,EEP_4Dcore_core_b与EEP_4Dcore_core_a几乎完全相同,其包含8组MAC计算阵列。与EEP_4Dcore_core_a不同的是,EEP_4Dcore_core_b不能实现并行乘法计算模式,没有DW MAC计算阵列。
EEP_4Dcore_core_b的内部结构框图如图10所示。
内部具体结构及描述,可参考EEP_4Dcore_core_a模块相关描述。
EEP_4Dcore__acc
EEP_4Dcore_acc是MAC计算结果累加模块。EEP_4Dcore_core_a和EEP_4Dcore_core_b拥有共16组MAC计算阵列,通常情况下,16组MAC计算阵列会计算得到16个乘法累加结果,而该16个乘法累加结果会输出给EEP_4Dcore_acc模块暂存,同时新输入的数据不断和暂存的旧数据进行累加,直到获得最终结果后输出。
在本实施例中,如图11所示,EEP_4Dcore_acc主要包含如下模块:
(1)EEP_4Dcore_calculator,累加计算模块,内部包含16组完全并行的ACC累加模块,每个ACC累加模块拥有一个深度为32的缓存,用于存储待计算的临时结果。
(2)EEP_4Dcore_assembly_ctrl,控制累加计算模块的行为,包括何时开始、何时结束以及何时输出计算结果等。
(3)EEP_4Dcore_delivery_buffer是一个深度为256的结果缓存,其内部保存上述EEP_4Dcore_calculator的计算结果,并等待1Dcore从中取出从而进行下一步的计算操作。EEP_4Dcore_delivery_buffer的主要目的是匹配4Dcore和1Dcore的计算速度,进一步提高运行性能。
EEP__4Dcore_calculator
在本实施例中,EEP_4Dcore_calculator内部包含16路完全并行的ACC累加模块,其结构框图如图12所示。
ACC累加模块(EEP_4Dcore_CALC_ef16_int8)内部包含一个累加器和一个ACC缓存,其核心功能是实现数据的累加计算,其内部结构如图13所示。
ACC累加模块的控制由EEP_4Dcore_assembly_ctrl模块提供。EEP_4Dcore_assembly_ctrl的核心功能是根据数据流控制指令的信息,提供准确的累加开始和累加结束信号,从而指示累加器中何时从ACC缓存读入临时结果用于累加,何时把临时结果存储到ACC缓存中,以及何时输出最终结果。
EEP__4Dcore__delivery_buffer
EEP_4Dcore_delivery_buffer的核心功能是为4Dcore提供一个可以缓存其计算结果的存储空间,该存储空间从宏观角度可以被看作一个FIFO。该FIFO的写端口来自4Dcore,读端口来自外部输出模块。
在本实施例中,EEP_4Dcore_delivery_buffer的存储空间深度为256,数据位宽为388比特,其读地址和写地址都由EEP_4Dcore_delivery_ctrl模块提供。
EEP_4Dcore_delivery_ctrl模块的核心功能是维护存储FIFO的读信号和写信号(包括写地址和写数据)。
当读信号有效时,读数据直接发送给外部输出模块。
以上给出了4D计算装置的一实施例。在实际应用中,基于本结构的4D计算装置,其模块、单元的数量及数据宽度等参数,可做如下结构性设定:
(1)在本4D计算装置中,一个片上存储器对应一个dat数据流处理单元、一个wt数据流处理单元、N个MAC计算阵列和N个累加模块。
(2)片上存储器的读接口位宽是M比特,写接口位宽是M比特的X分之一,实施例1中选择的读接口位宽M=1024比特,写接口位宽为512比特。
(3)MAC计算阵列和累加模块的数量N与张量处理器的计算精度有关,如果计算精度是Y比特,则N=M/(Y*64),其中的64指MAC计算阵列单元包含64个MAC(如图7所示)可以处理64个Y比特精度的数据。例如,对于M=1024,Y=16(16位计算精度)的系统,N=1;对于M=1024,Y=8(8位计算精度)的系统,N=2(本实施例使用8比特精度计算);对于M=1024,Y=1的情况,N=16。
(4)1个MAC计算阵列与1个累加模块共同产生16个输出结果数据,N个MAC计算阵列单元与N个累加单元共同产生16*N个输出结果数据。N越大计算并行度越高。因此,为了提高系统性能,可以采用读接口数据位宽更大的片上存储单元,或者使用更低的计算精度,如N=1比特。
(5)MAC级联累加计算模块包含T个级联累加计算树,本实施例中T=2。
(6)级联累加计算树内的级联层级为w,包含w个MAC,本实施例中w=4。
(7)MAC级联累加计算模块的MAC数量为T*w,如前所述MAC计算阵列的MAC数量为Q,因此,p=Q/(T*w),本实施例中,选择Q=64,T=2,w=4,因此p=8。
(8)EEP_OCM_wl_stream把1024比特的wt数据按16比特分为64个数据,并按顺序对数据进行delay 0 clock,delay 1 clock,delay 2 clock以及delay 3 clock操作。其中延时时钟数n的取值与图6中的级联累加计算树内的级联层级w有关,n=w-1。本实施例的级联层级w为4,n为3。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (16)
1.一种神经网络张量处理器的4D计算装置,其特征在于,包括片上存储单元、dat数据流处理单元、wt数据流处理单元、第一MAC计算阵列单元、第二MAC计算阵列单元和两个累加单元;
所述片上存储单元,用于保存4D计算装置计算所需的dat数据和wt数据;
所述dat数据流处理单元,用于接收来自所述片上存储单元的dat数据,并根据不同的计算模式整合该dat数据,最终形成后续计算所需的dat数据,并发送给所述第一MAC计算阵列单元和所述第二MAC计算阵列单元;
所述wt数据流处理单元用于接收来自所述片上存储单元的wt数据,并根据不同的计算模式整合该wt数据,最终形成后续计算所需的wt数据,并发送给所述第一MAC计算阵列单元和所述第二MAC计算阵列单元;
两所述累加单元分别用于实现第一MAC计算阵列单元、第二MAC计算阵列单元计算结果的累加操作,并将累加后的计算结果进行缓存、输出,用于后续计算;
所述dat数据流处理单元、所述wt数据流处理单元接收来自外部的数据流控制指令,根据数据流控制指令的数据流控制信息,重新整合dat数据和wt数据,整合工作包括:(1)产生dummy控制信号,替换片上存储单元中的原始数据为dummy数据,所述dummy数据是指值为0、数值表达范围内的最大负数或最大正数的数据;(2)根据外部控制信号选择输入数据中的部分数据;根据数据流控制指令中的数据有效位数信息选择输入数据中的部分数据;(3)根据数据流控制信息,对输入数据进行延时控制;
所述第一MAC计算阵列单元包括EEP_4Dcore_active、EEP_4Dcore_rt_out、k-1组MAC计算阵列和一组DW MAC计算阵列;所述第二MAC计算阵列单元包括EEP_4Dcore_active模块、EEP_4Dcore_rt_out模块和k组MAC计算阵列,其中k=(M’/Q)/(16/Y’),式中,M’为读接口的位宽,Q为MAC计算阵列包含的MAC乘法累加单元数,Y’为计算精度,单位为比特;
所述EEP_4Dcore_active,用于将输入的dat数据和wt数据分配给MAC计算阵列,其中,dat数据按照广播的方式发送给所有MAC计算阵列,wt数据分别发送给MAC计算阵列;
所述MAC计算阵列,用于实现乘法累加计算;
所述DW MAC计算阵列,用于实现乘法累加计算及执行并行乘法运算,其中的每个MAC执行并行乘法计算时输出一个DW MAC结果;
所述EEP_4Dcore_rt_out模块,用于整合来自MAC计算阵列的计算结果,并通过插入适当的流水线寄存器来调整神经网络张量处理器设计的时序性能。
2.如权利要求1所述的神经网络张量处理器的4D计算装置,其特征在于:所述片上存储单元包括两个写接口、两个读接口和多个存储块,两个写接口分别用于写dat数据和wt数据,其中,dat数据的写地址、写数据和写使能信号由外部模块产生,wt数据的写地址、写数据和写使能信号由外部模块产生;所述读接口的位宽是M比特,所述写接口的位宽是M比特的X分之一;每个存储块包含X个宽度是M/X且深度为N的SRAM;每个存储块的容量是M*N比特,片上存储单元包含存储块的数量为Y,片上存储单元总的存储容量为M*N*X*Y比特;所述读接口的读地址由外部模块产生,该读接口的读数据分别发送给dat数据流处理单元和wt数据流处理单元。
3.如权利要求2所述的神经网络张量处理器的4D计算装置,其特征在于:所述M等于1024,所述X等于2;所述N等于512。
4.如权利要求2所述的神经网络张量处理器的4D计算装置,其特征在于:所述存储块的数量Y为5或9。
5.如权利要求1所述的神经网络张量处理器的4D计算装置,其特征在于:所述对输入数据进行延时控制的方法为:将从片上存储单元获取的dat数据按16比特分成多个数据,并按顺序对数据进行0到n个时钟周期的延时操作;将从片上存储单元获取的wt数据按16比特分成多个数据,并按顺序对数据进行0到n个时钟周期的延时操作,所述n的取值与第一和第二MAC计算阵列单元中的MAC级联结构相关。
6.如权利要求1所述的神经网络张量处理器的4D计算装置,其特征在于:所述MAC计算阵列由最大p组MAC级联累加计算模块组成,MAC计算阵列内部的p组MAC级联累加计算模块通过两两相加的方式累加在一起,最终得到一个MAC累加结果。
7.如权利要求6所述的神经网络张量处理器的4D计算装置,其特征在于:
每组MAC级联累加计算模块内部包含T个级联累加计算树结构,并最终相加得到一个累加结果,该累加结果为该MAC级联累加计算模块的输出。
8.如权利要求7所述的神经网络张量处理器的4D计算装置,其特征在于:所述级联累加计算树结构至少包括单精度模式和混合精度模式中的一种,在单精度模式下,所述级联累加计算树结构包括w个级联的FP16 MAC,每个FP16 MAC由一个乘法器和一个加法器组成,其乘法器的输出作为其加法器的一个输入;w个FP16 MAC逐级累加输出一个MAC累加结果;在混合精度模式下,所述级联累加计算树结构包括w个级联的FP16/INT8 MAC和w个级联的INT8MAC,当配置为混合精度计算时,所述w个FP16/INT8 MAC逐级累加输出一个FP16/INT8结果;当配置为INT8精度计算时,所述w个INT8 MAC逐级累加输出一个INT8结果。
9.如权利要求8所述的神经网络张量处理器的4D计算装置,其特征在于:所述MAC计算阵列的参数关系为:p=Q/(T*w)。
10.如权利要求9所述的神经网络张量处理器的4D计算装置,其特征在于:Q=64,T=2;w=4;p=8。
11.如权利要求6所述的神经网络张量处理器的4D计算装置,其特征在于:所述DW MAC计算阵列由r组DW MAC级联累加计算模块和p-r组MAC级联累加计算模块组成,r<p,
所述DW MAC计算阵列执行乘法累加计算模式或并行计算模式,
在乘法累加计算模式下,r组DW MAC级联累加计算模块和p-r组MAC级联累加计算模块通过两两相加的方式累加在一起,最后各自得到的临时结果相加最终得到一个MAC累加结果;
在并行计算模式下,MAC级联累加计算模块内的各MAC不进行累加计算,而是执行并行乘法计算,每个MAC输出一个乘法计算结果。
12.如权利要求11所述的神经网络张量处理器的4D计算装置,其特征在于:p=8;r=4。
13.如权利要求11所述的神经网络张量处理器的4D计算装置,其特征在于:每组DW MAC级联累加计算模块内部包含T个DW级联累加计算树结构,所述DW级联累加计算树结构至少包括单精度模式和混合精度模式的一种,在单精度模式下,所述DW级联累加计算树结构包括w个级联的FP16 MAC,每个FP16 MAC由一个乘法器和一个加法器组成,其乘法器的输出作为其加法器的一个输入;w个FP16 MAC逐级累加输出一个MAC累加结果;在混合精度模式下,所述DW级联累加计算树结构包括w个级联的FP16/INT8 MAC和w个级联的INT8 MAC,当配置为混合精度计算时,所述w个FP16/INT8 MAC逐级累加输出一个FP16/INT8结果,所述w个FP16/INT8 MAC执行并行乘法计算各输出一个FP16/INT8的DW MAC结果;当配置为INT8精度计算时,所述w个INT8 MAC逐级累加输出一个INT8结果,所述w个INT8 MAC执行并行乘法运算各输出一个INT8的DW MAC结果。
14.如权利要求13所述的神经网络张量处理器的4D计算装置,其特征在于:T=2;w=4。
15.如权利要求1所述的神经网络张量处理器的4D计算装置,其特征在于:所述累加单元包含模块:EEP_4Dcore_calculator、EEP_4Dcore_assembly_ctrl和EEP_4Dcore_delivery_buffer,
所述EEP_4Dcore_calculator为累加计算模块,内部包含16组ACC累加模块,每个ACC累加模块拥有一个深度为32的缓存,用于存储待计算的临时结果;
所述EEP_4Dcore_assembly_ctrl用于控制累加计算模块的行为,所述行为包括何时开始、何时结束以及何时输出计算结果;
所述EEP_4Dcore_delivery_buffer是一个深度为256的结果缓存,其内部保存所述EEP_4Dcore_calculator的计算结果,并等待外部装置从中取出计算结果从而进行下一步的计算操作。
16.如权利要求15所述的神经网络张量处理器的4D计算装置,其特征在于:所述ACC累加模块内部包含一个累加器和一个ACC缓存,用于实现数据的累加计算,ACC累加模块的控制由EEP_4Dcore_assembly_ctrl提供,所述EEP_4Dcore_assembly_ctrl根据数据流控制指令的信息,提供准确的累加开始和累加结束信号,从而指示ACC累加模块何时从ACC缓存读入临时结果用于累加,何时把临时结果存储到ACC缓存中,以及何时输出最终结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110955122.6A CN113642713B (zh) | 2021-08-19 | 2021-08-19 | 一种用于神经网络张量处理器的4d计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110955122.6A CN113642713B (zh) | 2021-08-19 | 2021-08-19 | 一种用于神经网络张量处理器的4d计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113642713A CN113642713A (zh) | 2021-11-12 |
CN113642713B true CN113642713B (zh) | 2023-08-01 |
Family
ID=78422896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110955122.6A Active CN113642713B (zh) | 2021-08-19 | 2021-08-19 | 一种用于神经网络张量处理器的4d计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113642713B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112488908A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种计算装置、计算方法、存储介质及终端 |
CN112580792A (zh) * | 2020-12-08 | 2021-03-30 | 厦门壹普智慧科技有限公司 | 一种神经网络多核张量处理器 |
CN112740236A (zh) * | 2018-09-28 | 2021-04-30 | 高通股份有限公司 | 在深度神经网络中利用激活稀疏性 |
-
2021
- 2021-08-19 CN CN202110955122.6A patent/CN113642713B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112740236A (zh) * | 2018-09-28 | 2021-04-30 | 高通股份有限公司 | 在深度神经网络中利用激活稀疏性 |
CN112580792A (zh) * | 2020-12-08 | 2021-03-30 | 厦门壹普智慧科技有限公司 | 一种神经网络多核张量处理器 |
CN112488908A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种计算装置、计算方法、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN113642713A (zh) | 2021-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN108537330B (zh) | 应用于神经网络的卷积计算装置及方法 | |
US20090024685A1 (en) | High Speed and Efficient Matrix Multiplication Hardware Module | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
US20200349106A1 (en) | Mixed-precision neural-processing unit tile | |
CN112465110B (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN112418396B (zh) | 一种基于fpga的稀疏激活感知型神经网络加速器 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
WO2022226721A1 (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN110851779A (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN116521611A (zh) | 一种深度学习处理器的泛化架构设计方法 | |
CN113485750B (zh) | 数据处理方法及数据处理装置 | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN113642713B (zh) | 一种用于神经网络张量处理器的4d计算装置 | |
CN117539546A (zh) | 基于非空列存储的稀疏矩阵向量乘加速方法及装置 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN116258185A (zh) | 一种处理器、可变精度的卷积网络计算方法和计算设备 | |
CN115496190A (zh) | 一种面向卷积神经网络训练的高效可重构硬件加速器 | |
Wu et al. | A novel low-communication energy-efficient reconfigurable CNN acceleration architecture | |
CN112346703B (zh) | 一种用于卷积神经网络计算的全局平均池化电路 |
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 |