CN115438778A - 执行Winograd卷积的集成电路装置 - Google Patents

执行Winograd卷积的集成电路装置 Download PDF

Info

Publication number
CN115438778A
CN115438778A CN202110614466.0A CN202110614466A CN115438778A CN 115438778 A CN115438778 A CN 115438778A CN 202110614466 A CN202110614466 A CN 202110614466A CN 115438778 A CN115438778 A CN 115438778A
Authority
CN
China
Prior art keywords
convolution
data
addition
winograd
adder
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.)
Pending
Application number
CN202110614466.0A
Other languages
English (en)
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202110614466.0A priority Critical patent/CN115438778A/zh
Publication of CN115438778A publication Critical patent/CN115438778A/zh
Pending legal-status Critical Current

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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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

Abstract

本发明涉及执行Winograd卷积的集成电路装置,集成电路装置包括逆变换单元,逆变换单元包括输入缓存、寄存器堆、加法器组。输入缓存用以暂存所述对位乘数据;寄存器堆用以自所述输入缓存取出暂存的对位乘数据并存储至特定地址,以成为加法操作数;加法器组用以自所述特定地址读取所述加法操作数进行加法运算,以产生卷积结果。

Description

执行Winograd卷积的集成电路装置
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及执行Winograd卷积的集成电路装置。
背景技术
随着信息化时代的高速发展,人工智能与机器学习领域的研究炙手可热,相关产业蓬勃发展。卷积神经网络在计算机视觉、自动驾驶、机器翻译、语音识别、智能家居等各方面都有着广泛的作用。
卷积神经网络的参数量大,运算量大,使得卷积神经网络模型在便携移动终端有限面积和算力下被严重的限制其执行性能,同时非专用性设计的处理器在进行卷积运算时也会造成功耗的巨大开销。
Winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:神经元及权值进行一定规模切分后,分别做线性变换,也就是Winograd正变换,再将变换后的神经元和权值进行对位乘法,把对位乘法结果再次进行线性变换,即Winograd逆变换,最后得到与原卷积操作等价的卷积结果。
由于在Winograd卷积操作的过程中,神经元和权值的正逆变换矩阵都由简单的固定数值构成,故而可以仅利用加法来实现Winograd神经元和权值的正逆变换过程。而Winograd算法中所需的乘法操作仅出现在对位乘过程中,此过程的乘法复杂度较原始卷积算法有相当程度缩减。由于硬件实现乘法运算的开销(时序、功耗、面积)比实现同位宽的加法要高很多,因此以Winograd卷积替代原始卷积操作能够带来硬件能效比和运算时间上的明显收益。
然而,目前没有一种硬件针对Winograd卷积加速算法来设计,使得现有人工智能芯片无法完全展现Winograd卷积运算的优势。因此,一种能够高效运行Winograd卷积算法的硬件设备是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种执行Winograd卷积的集成电路装置。
在一个方面中,本发明揭露一种执行Winograd卷积的集成电路装置,包括逆变换单元、卷积结果缓存及片外内存。逆变换单元包括输入缓存、寄存器堆及加法器组。输入缓存用以暂存对位乘数据;寄存器堆用以自输入缓存取出暂存的对位乘数据并存储至特定地址,以成为多个加法操作数。加法器组用以自特定地址逐一读取加法操作数进行加法运算,其中加法器组根据加法元操作数的元素个数将加法元操作数拆解成多个加法元操作数,每个加法元操作数中只有一个元素与加法操作数中的对应位置的元素的数值相同,其他元素均为0。加法器组对多个加法元操作数进行运算以得到多个Winograd逆变换中间结果,并加总多个Winograd逆变换中间结果,以获得卷积结果。卷积结果缓存用以暂存卷积结果,而片外内存用以存储来自卷积结果缓存的卷积结果。
本发明提出的硬件结构能够匹配Winograd卷积加速算法,具有保证网络精度、性能加速、面积缩减以及功耗降低的技术效果。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出F(2×2,3×3)的原始卷积转换成Winograd卷积的示意图;
图2是示出本发明实施例的板卡的结构图;
图3是示出本发明实施例的集成电路装置的结构图;
图4是示出本发明实施例的计算装置的内部结构示意图;
图5是示出本发明实施例的正变换单元的示意图;
图6是示出本发明实施例的逆变换单元的示意图;
图7是示出本发明实施例将加法操作数拆解成多个加法元操作数的示意图;以及
图8是示出本发明实施例的流水线的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
Winograd卷积加速算法(以下简称Winograd算法或Winograd卷积)是利用对卷积运算中的操作数进行线性变换,进而发现需要乘法数最小的变换方法,再通过增加部分加法操作代替所需要的乘法操作。从硬件层面来说,乘法器相比于加法器所需的结构更加复杂,面积功耗更大,综合处理性能更差,故以加法取代乘法的Winograd算法在处理二维卷积运算时具有极大优势。
对于二维卷积来说,卷积结果可以表示为F(m×n,r×s),即输出形状为m×n,权值形状为r×s。Winograd算法的矩阵表示式为:
Y=AT[(GgGT)⊙(BTdB)]A
其中,Y表示卷积操作的输出矩阵,AT为逆变换左乘常量矩阵,G为权值变换左乘常量矩阵,g为原始卷积的权值,GT为权值变换右乘常量矩阵,⊙表示按位乘法,BT为神经元变换左乘常量矩阵,d为神经元数据,B为神经元变换右乘常量矩阵,A为逆变换右乘常量矩阵。各变换的左乘矩阵和右乘矩阵仅为转置关系。
以F(2×2,3×3)为例,前述各常数矩阵如下所示:
Figure BDA0003097494130000041
Figure BDA0003097494130000042
Figure BDA0003097494130000043
图1示出F(2×2,3×3)的原始卷积转换成Winograd卷积的示意图。如图所示,神经元数据101与卷积核102进行卷积运算。计算时,将神经元数据101根据滑动窗口103中的元素按一行排列,滑动窗口103滑动4次形成4×9矩阵104,再将卷积核102的元素按一列排列,形成9×1矩阵105,4×9矩阵104与9×1矩阵105进行卷积运算,得到4×1卷积结果106。
再根据图中虚线进行切分,4×9矩阵104转变成2×3矩阵107,9×1矩阵105转变成3×1矩阵108,4×1卷积结果106转变成2×1卷积结果109。在线性变换后,2×1卷积结果109的第一个元素R0=M0+M1+M2,且R1=M1-M2-M3。而M0、M1、M2、M3可以用以下式子表示:
M0=(K0-K2)·W0
Figure BDA0003097494130000051
Figure BDA0003097494130000052
M3=(K1-K3)·W2
通过前述的切分与线性变换,原本卷积运算需要执行36次乘法,而Winograd算法仅需要执行16次乘法,降低了2.25倍的乘法计算复杂度。
由上述二维卷积的Winograd算法的转换可以看出,Winograd算法主要分为以下几个步骤。首先,对权值进行权值常数矩阵的左乘和右乘,即GgGT,得到Winograd线性变换之后的权值;同时对神经元数据进行神经元常数矩阵的左乘和右乘,即BTdB,得到Winograd线性变换之后的神经元。再者,将Winograd变换后的神经元和权值矩阵进行对位相乘操作,即(GgGT)⊙(BTdB),得到对位乘法结果。最后,将对位乘法结果进行Winograd逆变换常数矩阵的左乘和右乘操作,即AT[(GgGT)⊙(BTdB)]A,最终得到与原始卷积等价的卷积结果。
从硬件设计的角度来说,本发明针对上述三个过程之间的依赖性以及运算区别特征,将这三个大的变换步骤进行流水化设计,以实现更高效的加速性能。
图2示出本发明实施例的一种板卡20的结构示意图。如图2所示,板卡20包括芯片201,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡20适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
芯片201通过对外接口装置202与外部设备203相连接。外部设备203例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备203通过对外接口装置202传递至芯片201。芯片201的计算结果可以经由对外接口装置202传送回外部设备203。根据不同的应用场景,对外接口装置202可以具有不同的接口形式,例如PCIe接口等。
板卡20还包括用于存储数据的存储器件204,其包括一个或多个存储单元205。存储器件204通过总线与控制器件206和芯片201进行连接和数据传输。板卡20中的控制器件206配置用于对芯片201的状态进行调控。为此,在一个应用场景中,控制器件206可以包括单片机(Micro Controller Unit,MCU)。
图3是示出此实施例的芯片201中的组合处理装置的结构图。如图3中所示,组合处理装置30包括计算装置301、接口装置302、处理装置303和DRAM 304。
计算装置301配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,特别是Winograd卷积运算,其可以通过接口装置302与处理装置303进行交互,以共同完成用户指定的操作。
接口装置302用于在计算装置301与处理装置303间传输数据和控制指令。例如,计算装置301可以经由接口装置302从处理装置303中获取输入数据,写入计算装置301片上的存储装置。进一步,计算装置301可以经由接口装置302从处理装置303中获取控制指令,写入计算装置301片上的控制缓存中。替代地或可选地,接口装置302也可以读取计算装置301的存储装置中的数据并传输给处理装置303。
处理装置303作为通用的处理装置,执行包括但不限于数据搬运、对计算装置301的开启和/或停止等基本控制。根据实现方式的不同,处理装置303可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置301而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置301和处理装置303整合共同考虑时,二者视为形成异构多核结构。
DRAM 304用以存储待处理的数据,为片外内存,大小通常为16G或更大,用于保存计算装置301和/或处理装置303的数据,尤其是存储欲进行Winograd卷积运算的神经元数据及权值。在此实施例中,处理装置303已经事先将原始卷积的权值线性变换成Winograd权值GgGT,存储在DRAM 304中。
图4示出计算装置301的结构图。计算装置301包括总线401、直接存储器访问(DMA)模块402、指令缓存(Iram)407、译码单元(IDU)408、神经元缓存(Nram)409、正变换单元(NTU,neuron transformation unit)410、正变换数据缓存(WNram)411、权值缓存(Wram)412、对位乘累加运算器(MAC)413、对位乘数据缓存(WRram)414、逆变换单元(ITU)415、结果缓存(Rram)416及逻辑运算模块(ALU,arithmetic logic unit)417。
总线401是各装置之间传送信息的公共通信干线,由导线组成的传输线束,按照组合处理装置30所传输的信息种类,总线401为数据总线、地址总线和控制总线的统称,用来传输数据、数据地址和指令。总线401作为DRAM 304与计算装置301的通讯渠道,在此实施例中具体为PCIe。
DMA模块402用以将数据从一个地址空间复制到另外一个地址空间,通常是将数据在外部内存(如DRAM 304)与计算装置301内部缓存间进行搬运。在实现DMA传输时,处理装置201把总线控制权交给DMA模块402,DMA模块402控制总线401进行数据搬运,结束DMA传输后,DMA模块402把总线控制权交回给处理装置201。
DMA模块402包括神经元直接存储器访问(NDMA)403、权值直接存储器访问(WDMA)404、指令直接存储器访问(IDMA)405及结果直接存储器访问(RDMA)406。NDMA 403用以自DRAM 304输入神经元数据,WDMA 404用以自DRAM 304输入Winograd权值,IDMA 405用以自DRAM 304输入指令,RDMA 406用以将计算结果输出至DRAM 304。在其他实施例中,NDMA403、WDMA 404、IDMA 405及RDMA 406可以由同一个直接存储器访问来实现。
Iram 407用以暂存IDMA 405输入的指令,IDU 408自Iram 407取出指令进行译码,并根据译码后的指令以控制其他单元运作。IDU 408是整个计算装置301的译码调度单元,负责译码从DRAM 304获取的控制指令,转换为控制信号协调片上各个模块/单元的运作,同时还要负责指令的保序、解依赖,进行分支预测、异常处理、中断处理等诸多任务。图中细线箭头为控制流,粗线箭头为数据流。
Nram 409根据译码后的指令,用以暂存NDMA 403发送的神经元数据,NTU 410根据译码后的指令,自Nram 409读取神经元数据进行正变换,也就是进行BTdB的运算,以产生正变换数据,所产生的正变换数据暂存在WNram 411中。
图5示出NTU 410的示意图。NTU 410包括输入缓存501、寄存器堆502、加法器组503及输出缓存504。
当NTU 410收到指令欲从Nram 409载入神经元数据时,输入缓存501作为先入先出队列缓存,用以暂存神经元数据。载入神经元数据的阶段将会持续到所有数据接收完成,不同规模的卷积滤波器会配置固定且独立的缓存资源划分和输入计数,整体过程由IDU 408发送指令控制。
寄存器堆502根据译码后的指令,按照规划好的运算顺序,自输入缓存501取出暂存的神经元数据,存储至寄存器堆502的特定地址,这些存储在寄存器堆502的特定地址的神经元数据成为加法操作数。在此实施例中,由于输入、运算、输出三个阶段的流水时间长度相等,故而会出现缓存硬件资源依赖的现象,为了解决资源依赖的问题,寄存器堆502切分为相同大小的乒存储单元505与乓存储单元506,第i个加法操作数及计算完所产生的正变换数据暂存在乒存储单元505中,第i+1个加法操作数及第i+1个正变换数据则暂存在乓存储单元506,第i+2个加法操作数及第i+2个正变换数据又暂存在乒存储单元505,覆盖第i个加法操作数及第i+2个正变换数据,寄存器堆502依此规则进行存储。
加法器组503根据译码后指令,自寄存器堆502的特定地址依序读取加法操作数进行加法运算。在此实施例中,加法器组503的数量为2组以对应加法运算调度方向,每组包括16个加法器以对应向量化方向,每个加法器为FB32加法器,在神经元数据的通道方向按照特定顺序执行Winograd卷积的正变换中的加法运算,此特定顺序为先计算Winograd卷积的左乘矩阵BT的加法,再计算Winograd卷积的右乘矩阵B的加法,最后产生正变换数据,再将正变换数据存回寄存器堆502中。运算顺序以及寄存器分配、运算时间均与卷积滤波器规模相关,由IDU 408发送指令控制。此运算阶段与前述载入神经元数据的阶段产生数据依赖,以流水方式执行,由硬件通过计数实现。
输出缓存504亦为先入先出队列缓存,用以暂存依序来自乒存储单元505及乓存储单元506的正变换数据。此输出阶段需要依赖于运算阶段的整体完成,才能进行相应缓存的输出。
WNram 411包括多个缓存单元,例如包括4个缓存单元,来自NTU 410的正变换数据是通过路由分发方式发送至这些缓存单元的一个或多个。
回到图4,Wram 412根据译码后的指令,暂存WDMA 404发送来的Winograd权值,MAC413根据译码后的指令,自Wram 412读取Winograd权值,并自WNram 411读取正变换数据,对正变换数据与Winograd权值进行对位乘累加运算,也就是进行[(GgGT)⊙(BTdB)]的运算,以产生对位乘数据,并将对位乘数据暂存至WRram 414。
在此实施例中,MAC 413包括64个MAC运算器,均分为4组分别进行4个不同批量的运算,每组的16个MAC运算器为独立分布。WNram 411的正变换数据需要同时发送给这64个MAC运算器,使其与不同的Winograd权值进行对位乘累加运算,因此WNram 411以广播或者分发路由的方式发送正变换数据。由于输出负载大,为保证驱动能力和时序,WNram 411的正变换数据通过N1、N2两级广播或者分发路由,首先发送给4个N1节点,每个N1节点广播或者分发路由给4个N2节点,每个N2节点再广播或者分发路由给4个MAC运算器。MAC运算器首先进行对位相乘,然后将得到的结果向量依次累加,逻辑功能相当于求向量内积或者进行矩阵乘法中元素值的运算。
ITU 415根据译码后的指令,自WRram 414读取对位乘数据,逆变换对位乘数据,也就是进行AT[(GgGT)⊙(BTdB)]A的运算,以获得卷积结果,卷积结果暂存在Rram 416中。
图6示出ITU 415的示意图。ITU 415包括输入缓存601、寄存器堆602、加法器组603及输出缓存604。
当ITU 415收到指令欲从WRram 414载入对位乘数据时,输入缓存601作为先入先出队列缓存,用以暂存对位乘数据。载入对位乘数据的阶段将会持续到所有数据接收完成,不同规模的卷积滤波器会配置固定且独立的缓存资源划分和输入计数,整体过程由IDU408发送指令控制。
寄存器堆602根据译码后的指令,按照固定的运算顺序,自输入缓存601取出暂存的对位乘数据,存储至寄存器堆602的特定地址,这些存储在寄存器堆602的特定地址的对位乘数据成为加法操作数。同样地,为了解决资源依赖的问题,寄存器堆602具有相同大小的乒存储单元605与乓存储单元606,第i个加法操作数及计算完所产生的卷积结果暂存在乒存储单元605中,第i+1个加法操作数及第i+1个卷积结果则暂存在乓存储单元606,第i+2个加法操作数及第i+2个卷积结果又暂存在乒存储单元605,覆盖第i个加法操作数及第i个卷积结果,寄存器堆602依此规则进行存储。
加法器组603根据译码后指令,自寄存器堆602的特定地址依序读取加法操作数进行加法运算。与加法器组503相同,加法器组603的数量为2组以对应加法运算调度方向,每组包括16个加法器以对应向量化方向,每个加法器为FB32加法器,在对位乘数据的通道方向按照特定顺序执行Winograd卷积的逆变换中的加法运算,此特定顺序为先计算Winograd卷积的左乘矩阵AT的加法,再计算Winograd卷积的右乘矩阵A的加法,最后产生卷积结果,再将卷积结果存回寄存器堆602中。运算顺序以及寄存器分配、运算时间均与卷积滤波器规模相关,由IDU 408发送指令控制。此运算阶段与前述载入对位乘数据的阶段产生数据依赖,以流水方式执行,由硬件通过计数实现。
更详细来说,加法器组603将加法操作数拆解成多个加法元操作数,这些加法元操作数均为张量形式。多个加法元操作数的个数与加法操作数的元素个数相同,每个加法元操作数中只有一个元素与加法操作数中的对应位置的元素的数值相同,其他元素均为0。图7示出此实施例将加法操作数拆解成多个加法元操作数的示意图。图中以加法操作数701为2×2矩阵示例说明,其包括4个元素a11、a12、a21、a22,加法器组603将加法操作数701拆解为4个加法元操作数702、703、704、705,其中加法元操作数702仅在对应位置的元素中包括a11,其他元素均为0,加法元操作数703仅在对应位置的元素中包括a12,其他元素均为0,加法元操作数704仅在对应位置的元素中包括a21,其他元素均为0,加法元操作数705仅在对应位置的元素中包括a22,其他元素均为0。
当加法器组603对加法操作数701执行Winograd卷积的逆变换中的运算时,取而代之对4个加法元操作数702、703、704、705进行运算,如此一来,仅需要针对4个加法元操作数702、703、704、705中的非0元素进行运算即可。对于每一个加法元操作数,将该加法元操作数左边乘以左乘矩阵AT、右边乘以右乘矩阵A,以得到该加法元操作数的Winograd逆变换中间结果。最后再将4个加法元操作数702、703、704、705的Winograd逆变换中间结果进行加总,即可得到加法操作数701的卷积结果。在实际的运算过程中,此等操作可以直接获取,不需要重复运算,从而缩短计算时间、节约计算资源。
输出缓存604亦为先入先出队列缓存,用以暂存依序来自乒存储单元605及乓存储单元606的卷积结果。此输出阶段需要依赖于运算阶段的整体完成,才能进行相应缓存的输出。
除了Winograd卷积外,计算装置301还能够执行所有神经网络相关的运算,ALU417用以根据译码后的指令,执行两大任务:第一个任务是卷积融合操作的运算,即运算可以和卷积层在片上一次性完成不需要依赖更多数据的运算,这些运算包括激活、加偏置、方向部分和累加等运算过程;第二个任务是非卷积运算。ALU 417产生的运算结果亦暂存于Rram 416中。ALU 417的存在可以保证卷积神经网络中的各种运算在计算装置301中都可以完整实现,使得计算装置301具有神经网络的通用性和完整性。
RDMA 406根据译码后的指令,将卷积结果自Rram 416中取出并输出至DRAM 304,至此完成整个卷积运算。同样地,RDMA 406亦可根据译码后的指令,将ALU 417生成的其他运算结果自Rram 416中取出并输出至DRAM 304。
由于卷积运算的数据规模庞大,为了降低指令本身的启动开销,此实施例进一步利用指令控制使得相关模块/单元得以执行流水,提高硬件的使用率。
从上述可知,神经元数据的输入时机与数据规模会影响Winograd卷积指令的神经元正变换过程,权值数据输入时机与数据规模也会影响Winograd卷积指令的对位乘累加运算过程,而Winograd卷积逆变换的完成时机会影响卷积结果输出指令的执行。因此,从控制的角度来说,指令的先后顺序及执行的时间点是关键的,不仅如此,此实施例还需要在存在依赖关系的指令之间插入同步指令,以解决输入输出程序与Winograd卷积程序的数据依赖问题。
图8示出此实施例流水线的示意图,主要通过IDU 408来控制Nram 409、NTU 410、Wram 412、MAC 413、ITU 415及Rram 416间的流水操作。
在进行第i次的卷积运算时,IDU 408发送指令控制Nram 409在时间点T1启动自DRAM 304载入神经元数据i,而载入神经元数据i会在时间点T2完成。在神经元数据i完成载入前,于时间点T3,IDU 408根据同步指令控制NTU 410启动自Nram 409读取神经元数据i进行正变换,以产生正变换数据i。自时间点T3起,在Nram 409载入神经元数据i的同时,NTU410亦自Nram 409读取神经元数据i进行正变换,正变换数据i会在时间点T4完成。
神经元数据i的卷积运算需要搭配Winograd权值i,基于此实施例的硬件结构,神经元数据i的输入由NDMA 403负责,Winograd权值i的输入由WDMA 404负责,可以并行,但是考虑到计算装置301的输入输出带宽是固定的,且神经元数据i需要先经过NTU 410做正变换,才会与Winograd权值i由MAC 413进行对位乘累加,故此实施例设计让神经元数据i在时间点T1先被载入并在时间点T3做正变换,Winograd权值i稍后才输入至Wram 412,使得Nram409、NTU 410、Wram 412与MAC 413彼此间得以良好的搭配,尽量避免造成某一个模块/单元闲置或堵塞。为此,IDU 408在正变换数据i完全产生前,根据同步指令控制Wram 412启动自DRAM 304载入Winograd权值i。启动载入Winograd权值i的时间点可以根据计算装置301的输入输出带宽而定,较佳地,可以选择在时间点T3,即启动正变换与启动载入Winograd权值i同时被执行。假设Winograd权值i也在时间点T4完成下载。
在Winograd权值i完成载入前,于时间点T5,IDU 408根据同步指令控制MAC 413启动对正变换数据i与Winograd权值i进行对位乘累加运算,以产生对位乘数据i。自时间点T5起,在Wram 412载入Winograd权值i的同时,MAC 413亦进行对位乘累加运算,对位乘数据i会在时间点T6完成。
在对位乘数据i完成产生前,于时间点T7,IDU 408根据指令控制ITU 415启动自WRram 414读取对位乘数据i进行逆变换,以产生卷积结果i。自时间点T7起,在MAC 413进行对位乘累加运算的同时,ITU 415也在进行逆变换运算,卷积结果i会在时间点T8完成。
Rram 416启动暂存卷积结果i的时间点可以有两个,一个是在卷积结果i完全产生前,也就是介于时间点T7与T8间,另一个是在卷积结果i完全产生后。图8是以在卷积结果i完全产生后启动暂存卷积结果i为例,于时间点T8,IDU 408根据同步指令控制Rram 416启动暂存卷积结果i,并在时间点T9完成暂存。
在神经元数据i输出完毕后,便可开始进行第i+1次的卷积运算,IDU 408发送指令控制Nram 409在时间点T2启动自DRAM 304载入神经元数据i+1,而载入神经元数据i+1会在时间点T10完成,换言之,在正变换数据i完全产生前,Nram 409已启动载入神经元数据i+1。在神经元数据i+1完成载入前,于时间点T4,IDU 408根据同步指令控制NTU 410启动自Nram409读取神经元数据i+1进行正变换,以产生正变换数据i+1。自时间点T4起,在Nram 409载入神经元数据i+1的同时,NTU 410也自Nram 409读取神经元数据i+1进行正变换,正变换数据i+1会在时间点T11完成。
IDU 408在正变换数据i+1完全产生前,且在MAC 413完全产生对位乘数据i前,根据同步指令控制Wram 412启动自DRAM 304载入Winograd权值i+1。启动载入Wi+1nograd权值i+1的时间点可以根据计算装置301的输入输出带宽而定,较佳地,可以选择在时间点T4,即启动正变换与启动载入Winograd权值i+1同时被执行。假设Winograd权值i+1也在时间点T11完成下载。
在Winograd权值i+1完成载入前,于时间点T6,在ITU 415完全产生卷积结果i前,IDU 408根据同步指令控制MAC 413启动对正变换数据i+1与Winograd权值i+1进行对位乘累加运算,以产生对位乘数据i+1。自时间点T6起,在Wram 412载入Winograd权值i+1的同时,MAC 413亦进行对位乘累加运算,对位乘数据i+1会在时间点T12完成。
在对位乘数据i+1完成产生前,于时间点T8,IDU 408根据指令控制ITU 415启动自WRram 414读取对位乘数据i+1进行逆变换,以产生卷积结果i+1。自时间点T8起,在MAC 413进行对位乘累加运算的同时,ITU 415也在进行逆变换运算,卷积结果i+1会在时间点T13完成。
同样地,Rram 416启动暂存卷积结果i+1的时间点可以有两个,一个是在卷积结果i+1完全产生前,也就是介于时间点T9与T13间,另一个是在卷积结果i+1完全产生后,以在卷积结果i+1完全产生后启动暂存卷积结果i+1为例,于时间点T13,IDU 408根据同步指令控制Rram 416启动暂存卷积结果i+1,并在时间点T14完成暂存。
基于图4所示的计算装置301的结构,此实施例根据前述的流水来执行Winograd卷积运算,能够充分的善用硬件优势,提升输入输出与运算效率。
本发明基于Winograd算法的特性进行硬件设计,以实现加速通用性,并提出加速Winograd卷积运算速度的流水级操作方式,还在硬件实现过程中通过时分复用、广播路由等方法充分利用可复用资源。本发明提出的硬件结构能够匹配Winograd卷积算法,具有保证网络精度、性能加速、面积缩减以及功耗降低的技术效果。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (5)

1.一种执行Winograd卷积的集成电路装置,包括:
逆变换单元,包括:
输入缓存,用以暂存对位乘数据;
寄存器堆,用以自所述输入缓存取出暂存的对位乘数据并存储至特定地址,以成为多个加法操作数;以及
加法器组,用以自所述特定地址逐一读取加法操作数进行加法运算,其中所述加法器组根据所述加法元操作数的元素个数将所述加法元操作数拆解成多个加法元操作数,每个加法元操作数中只有一个元素与所述加法操作数中的对应位置的元素的数值相同,其他元素均为0,所述加法器组对所述多个加法元操作数进行运算以得到多个Winograd逆变换中间结果,并加总所述多个Winograd逆变换中间结果,以获得卷积结果;
卷积结果缓存,用以暂存所述卷积结果;以及
片外内存,用以存储来自所述卷积结果缓存的所述卷积结果。
2.根据权利要求1所述的集成电路装置,其中每个加法器为FB32加法器。
3.根据权利要求1所述的集成电路装置,其中所述加法器组先计算Winograd卷积的左乘矩阵的加法,再计算Winograd卷积的右乘矩阵的加法,以产生所述卷积结果。
4.根据权利要求1所述的集成电路装置,其中所述逆变换单元还包括输出缓存,用以暂存来自所述加法器组的所述卷积结果。
5.根据权利要求4所述的集成电路装置,其中所述输入缓存及所述输出缓存为先入先出队列缓存。
CN202110614466.0A 2021-06-02 2021-06-02 执行Winograd卷积的集成电路装置 Pending CN115438778A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110614466.0A CN115438778A (zh) 2021-06-02 2021-06-02 执行Winograd卷积的集成电路装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110614466.0A CN115438778A (zh) 2021-06-02 2021-06-02 执行Winograd卷积的集成电路装置

Publications (1)

Publication Number Publication Date
CN115438778A true CN115438778A (zh) 2022-12-06

Family

ID=84240368

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110614466.0A Pending CN115438778A (zh) 2021-06-02 2021-06-02 执行Winograd卷积的集成电路装置

Country Status (1)

Country Link
CN (1) CN115438778A (zh)

Similar Documents

Publication Publication Date Title
US11531540B2 (en) Processing apparatus and processing method with dynamically configurable operation bit width
CN110597559B (zh) 计算装置以及计算方法
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
US11507350B2 (en) Processing apparatus and processing method
CN110163357B (zh) 一种计算装置及方法
CN111488976B (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111488963B (zh) 神经网络计算装置和方法
CN109711540B (zh) 一种计算装置及板卡
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
CN115081603A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN115438778A (zh) 执行Winograd卷积的集成电路装置
CN115438777A (zh) 对神经元数据执行Winograd卷积正变换的装置
CN114692849A (zh) 逆变换Winograd卷积的对位乘数据的逆变换单元、装置与板卡
CN114692810A (zh) 计算Winograd卷积的装置与板卡
CN114692811A (zh) 执行Winograd卷积的装置与板卡
CN114692850A (zh) 对神经元数据执行Winograd卷积正变换的装置与板卡
CN114692848A (zh) 获得卷积结果的装置与板卡
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN115081601A (zh) 同步Winograd卷积的计算装置与方法
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
CN115081606A (zh) 执行Winograd卷积的装置与板卡
CN115079927A (zh) 暂存卷积结果的缓存、计算装置、集成电路装置及板卡
CN115081604A (zh) 暂存Winograd权值的缓存、计算装置、集成电路装置及板卡
CN115081605A (zh) 暂存Winograd卷积中的神经元数据的缓存、装置与板卡

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