首页> 中国专利> 用于深度学习的可重构处理单元

用于深度学习的可重构处理单元

摘要

一种用于深度学习的可重构处理单元,包括:配置控制单元,用于接收来自外部总线的配置信息和总线命令,生成模式指令和控制指令,以及得到配置参数;先入先出存储器,接收外部数据和输出计算结果数据;多路选择器,将外部数据输入到算术逻辑单元或静态随机存储器;算术逻辑单元,利用配置参数,对外部数据进行计算,得到计算结果数据,并将计算结果数据输入到静态随机存储器或先入先出存储器;静态随机存储器,存储计算结果数据或外部数据,将所述计算结果数据或外部数据输出到算术逻辑单元,或将计算结果数据输出到所述先入先出存储器。

著录项

  • 公开/公告号CN114780481A

    专利类型发明专利

  • 公开/公告日2022-07-22

    原文格式PDF

  • 申请/专利权人 中国科学技术大学;

    申请/专利号CN202210483441.6

  • 发明设计人 陈松;蒋先阁;倪小兵;孙文迪;

    申请日2022-04-29

  • 分类号G06F15/78;G06N3/063;

  • 代理机构中科专利商标代理有限责任公司;

  • 代理人孙蕾

  • 地址 230026 安徽省合肥市包河区金寨路96号

  • 入库时间 2023-06-19 16:06:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-22

    公开

    发明专利申请公布

说明书

技术领域

本公开涉及网络装置领域,更具体地,涉及一种用于深度学习的可重构处理单元。

背景技术

随着计算机技术的发展,深度学习成为近几年的机器学习的研究热点之一,深度学习对于目标特征的训练和推理需要进行大量的数据运算,进行深度学习计算运算的处理器的主要有通用处理器(GPP,General-Purpose Processor)、专用集成电路(ASIC,Application Specific Integrated Circuit)等。常见的深度学习的算子主要有卷积、池化、激活函数等。

GPP可以应对各种类型的计算应用,包括数学方面和逻辑方面的运算,但是GPP不能充分利用算法并行性对数据进行处理;ASIC是应对特定用户要求和特定电子系统的需要而设计、制造的集成电路,设计周期长、设计成本高。可重构处理器是一种将一定数量的处理单元通过特定连接方式连接的可以实现对不同的算法进行并行处理的处理结构,可重构处理器研究中,按照可重构粒度主要可以分为细粒度和粗粒度两种,细粒度可重构处理器通用性高,但是在计算过程中,细粒度可重构处理器配置时间过长、无法满足在一些实时性应用中动态实时性配置的需求。

发明内容

有鉴于此,本公开提供了一种用于深度学习的可重构处理单元,包括:

配置控制单元,用于接收来自外部总线的配置信息和总线命令,并根据上述配置信息和总线命令生成模式指令和控制指令,以及得到配置参数。

先入先出存储器,用于根据上述控制指令,接收外部数据和输出计算结果数据。

多路选择器,用于根据上述模式指令和控制指令,将上述外部数据输入到算术逻辑单元或静态随机存储器。

算术逻辑单元,响应于上述控制信息,利用上述配置参数,对来自多路选择器或静态随机存储器的上述外部数据进行计算,得到8比特数据精度或16比特数据精度的计算结果数据,并将计算结果数据输入到上述静态随机存储器或上述先入先出存储器。

以及,静态随机存储器,响应于上述模式指令和控制指令,用于存储来自上述算术逻辑单元产生的计算结果数据或上述外部数据,将上述计算结果数据或外部数据输出到上述算术逻辑单元,或将上述计算结果数据输出到上述先入先出存储器。

根据本公开的实施例,上述配置控制单元包括:

配置寄存器,用于接收来自外部总线的配置信息,生成上述模式指令。

以及,控制器,用于接收来自外部总线的总线命令,生成上述使能信号。

上述配置寄存器还用于根据来自上述控制器的使能信号,基于配置信息得到上述配置参数。

以及,上述控制器还用于根据响应于上述模式指令,基于配置信息得到上述控制指令。

根据本公开的实施例,上述配置寄存器包括:单元模式寄存器、行寄存器、列寄存器、池化模式寄存器、通道寄存器、量化寄存器。

上述单元模式寄存器接收来自外部总线的配置信息,根据上述配置信息生成模式指令,上述模式指令包含卷积模式指令和池化模式指令。

以及,在上述单元模式寄存器生成上述卷积模式指令的情况下,上述行寄存器、列寄存器、通道寄存器、量化寄存器响应于来自上述控制器的使能信号,基于上述配置信息生成上述配置参数。

在上述单元模式寄存器生成上述池化模式指令的情况下,上述行寄存器、列寄存器、池化模式寄存器响应于来自上述控制器的使能信号,基于上述配置信息生成上述配置参数。

根据本公开的实施例,上述控制器包括:译码器、累加状态机、发送状态机、加载状态机、最大值状态机、输出状态机。

其中,上述累加状态机、发送状态机用于响应于上述卷积模式指令接收来自外部总线的总线命令,生成上述使能信号,以及基于译码器译码的上述配置信息得到上述控制指令。

上述加载状态机、最大值状态机、输出状态机用于响应于上述池化模式指令,接收来自外部总线的总线命令,生成上述使能信号,以及基于译码器译码的上述配置信息得到上述控制指令。

根据本公开的实施例,上述配置控制单元用于:

确定上述先入先出存储器的状态。

在确定上述先入先出存储器处于空状态情况下,上述先入先出存储器不向上述多路选择器输出外部数据,使得上述可重构处理单元不进行计算。

以及,在确定上述先入先出存储器处于满状态情况下,上述先入先出存储器不获取上述可重构处理单元产生的计算结果数据,使得上述可重构处理单元不进行计算。

在上述先入先出存储器不处于空状态或满状态情况下,上述先入先出存储器向上述多路选择器输出外部数据,以及向上述可重构处理单元外部输出计算结果数据,使得上述可重构处理单元开始进行计算。

根据本公开的实施例,上述多路选择器用于:

上述多路选择器响应于上述控制指令和卷积模式指令,将上述先入先出存储器接收的第一输入队列的上述外部数据输入上述算术逻辑单元或上述静态随机存储器。

上述多路选择器响应于上述控制指令和池化模式指令,将上述先入先出存储器接收的第二输入队列的上述外部数据输入上述算术逻辑单元或上述静态随机存储器。

根据本公开的实施例,上述静态随机存储器还用于:

响应于上述控制指令,将来自上述多路选择器的上述外部数据缓存为查找表数据;以及存储上述算术逻辑单元的计算中间数据。

根据本公开的实施例,上述算术逻辑单元包括:加法器、乘法器、移位器、输出图计数器、通道计数器、部分和寄存器。

上述卷积模式指令包含乘法指令和加法指令。

上述控制器响应于上述卷积模式指令,上述累加状态机、发送状态机基于译码器译码上述配置信息,得到上述控制指令;上述先入先出存储器响应于上述卷积模式指令和上述累加状态机、发送状态机生成的上述控制指令,接收外部数据和输出计算结果数据;上述多路选择器响应于上述卷积模式指令和上述累加状态机生成的上述控制指令,将上述先入先出存储器接收的第一输入队列的上述外部数据输入上述算术逻辑单元;上述算术逻辑单元的上述输出图计数器响应于上述累加状态机生成的上述控制指令,确定上述算术逻辑单元计算后的输出图的行数和列数,控制上述输出图的大小;上述算术逻辑单元的上述通道计数器响应于上述发送状态机生成的上述控制指令,确定计算时通道累加的次数、计算时数据存取静态随机存储器的次数;上述算术逻辑单元上述加法器、乘法器、移位器、部分和寄存器利用上述计算时通道累加的次数、计算时数据存取静态随机存储器的次数对上述外部数据进行计算,实现对上述外部数据的向量乘法、矩阵乘法、矩阵加法运算,得到计算结果数据;以及,响应于上述卷积模式指令,上述控制器将上述量化寄存器的上述上述配置参数译码,译码后的配置参数通过上述乘法器与上述计算结果数据相乘,得到8比特数据精度或16比特数据精度的计算结果数据。

根据本公开的实施例,上述算术逻辑单元还包括最大值寄存器、最大值计数器、比较器。

上述池化模式指令包含最大池化指令、平均池化指令。

上述控制器响应于上述池化模式指令,上述加载状态机、最大值状态机、输出状态机基于译码器译码上述配置信息,得到上述控制指令;上述先入先出存储器响应于上述池化模式指令和上述加载状态机、输出状态机生成的上述控制指令,接收外部数据和输出计算结果数据;上述多路选择器上述卷积模式指令和上述累加状态机生成的上述控制指令,将上述先入先出存储器接收的第二输入队列的上述外部数据输入上述算术逻辑单元;上述算术逻辑单元的上述输出图计数器响应于上述加载状态机生成的上述控制指令,确定上述算术逻辑单元计算后的输出图的行数和列数,控制上述输出图的大小;上述算术逻辑单元的上述最大值寄存器响应于上述最大值状态机生成的上述控制指令,用于存储每个通道计算时最大池化核的最大值;上述算术逻辑单元的上述最大值寄存器、最大值计数器、部分和寄存器、比较器、加法器、输出图计数器利用上述外部数据进行计算,实现对上述外部数据的最大池化、平均池化运算,得到计算结果数据。

根据本公开的实施例,上述静态随机存储器还用于:响应于控制信息,基于上述查找表对上述8比特数据精度的计算结果数据进行激活函数运算;响应于控制信息,将16比特数据精度的上述计算结果数据以多段多项式拟合的模式存储,基于上述查找表将每一段16比特数据精度的上述计算结果数据进行激活函数运算,得到多个一阶激活函数运算结果。以及;上述算术逻辑单元还用于将上述多个一阶激活函数运算结果累加,得到上述计算结果数据的16比特数据精度的激活函数运算结果。根据本公开的实施例,通过由配置控制单元对可重构处理单元的功能进行控制,配置控制单元控制先入先出存储器接收外部数据;控制多路选择器将上述外部数据输入到算术逻辑单元或静态随机存储器;控制算术逻辑单元,对上述外部数据进行计算,得到8比特数据精度或16比特数据精度的计算结果数据;控制静态随机存储器存储来自上述算术逻辑单元产生的计算结果数据或上述外部数据,将上述计算结果数据或外部数据输出到上述算术逻辑单元;控制先入先出存储器输出计算结果数据。

上述可重构处理单元对粗粒度数据进行计算,缩减了配置信息的大小,提高了运算速度;不同模式指令控制实现向量乘法、矩阵乘法矩阵加法、最大池化、平均池化、Sigmoid函数,Tanh函数的计算时复用上述算术逻辑单元的功能,以及上述静态随机存储器实现缓存数据的功能,提高硬件资源利用率。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了本公开实施例的用于深度学习的可重构处理单元的结构框图;

图2示意性示出了本公开实施例的配置控制单元的结构框图;

图3示意性示出了根据本公开实施例的可重构计算在卷积模式下的硬件的微架构图;

图4示意性示出了根据本公开的实施例的可重构计算在池化模式下的硬件的微架构图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。

在实现本公开构思的过程中,发明人发现相关技术中细粒度可重构器主要以进行比特级运算的查找表(LUT,Look-Up-Table)运算的现场可编程逻辑门阵列(FPGA,FieldProgrammable Gate Array)为代表,FPGA的细粒度属性导致算子抽象层级偏细、所需配置信息多,增加了计算过程中信号传输的延时、降低了运算速度。为了满足运算需求,需要增加处理器数量,这导致增大了芯片面积,细粒度可重构器的配置时间过长、无法满足在一些实时性应用中动态实时性配置的需求。

为了至少部分地解决相关技术中存在的技术问题,本公开的实施例提供了一种用于深度学习的可重构处理单元。

图1示意性示出了根据本公开实施例的用于深度学习的可重构处理单元的结构框图。

如图1所示,上述用于深度学习的可重构处理单元包括:

配置控制单元,用于接收来自外部总线的配置信息和总线命令,并根据上述配置信息和总线命令生成模式指令和控制指令,以及得到配置参数。

先入先出存储器,用于根据上述控制指令,接收外部数据和输出计算结果数据。

多路选择器,用于根据上述模式指令和控制指令,将上述外部数据输入到算术逻辑单元或静态随机存储器。

算术逻辑单元,响应于上述控制信息,利用上述配置参数,对来自多路选择器或静态随机存储器的上述外部数据进行计算,得到8比特数据精度或16比特数据精度的计算结果数据,并将计算结果数据输入到上述静态随机存储器或上述先入先出存储器。

静态随机存储器,响应于上述模式指令和控制指令,用于存储来自上述算术逻辑单元产生的计算结果数据或上述外部数据,将上述计算结果数据或外部数据输出到上述算术逻辑单元,或将上述计算结果数据输出到上述先入先出存储器。

根据本公开实施例,配置控制单元,配置参数可以输入到算术逻辑单元中与外部数据进行计算,通过控制配置参数可以调整计算结果数据的精度,满足不同计算精度要求。

图2示意性示出了根据本公开实施例的配置控制单元的结构框图。

如图2所示,上述配置控制单元包括:

配置寄存器,用于接收来自外部总线的配置信息,生成上述模式指令;以及,控制器,用于接收来自外部总线的总线命令,生成上述使能信号;上述配置寄存器还用于根据来自上述控制器的使能信号,基于配置信息得到上述配置参数;以及,上述控制器还用于根据响应于上述模式指令,基于配置信息得到上述控制指令。

根据本公开实施例,配置控制单元接收外部总线的配置信息和总线命令,得到模式指令和控制指令并发送给静态随机存储器、多路选择、算术逻辑单元、先入先出存储器,通过配置控制单元指定可重构处理单元的功能、控制可重构处理单元的计算流程。

根据本公开的实施例,上述配置寄存器可以包括:单元模式寄存器、行寄存器、列寄存器、池化模式寄存器、通道寄存器、量化寄存器。

上述单元模式寄存器接收来自外部总线的配置信息,根据上述配置信息生成模式指令,上述模式指令包含卷积模式指令和池化模式指令;以及,在上述单元模式寄存器生成上述卷积模式指令的情况下,上述行寄存器、列寄存器、通道寄存器、量化寄存器响应于来自上述控制器的使能信号,基于上述配置信息生成上述配置参数;在上述单元模式寄存器生成上述池化模式指令的情况下,上述行寄存器、列寄存器、池化模式寄存器响应于来自上述控制器的使能信号,基于上述配置信息生成上述配置参数。

根据本公开实施例,配置寄存器中的通道寄存器可以含有通道累加寄存器(chan_add_reg)和重复累加寄存器(chan_add_re_reg),在通道寄存器生成的配置参数中,高8比特表示重复累加寄存器生成的配置参数,低8比特表示通道累加寄存器生成的配置参数。配置寄存器中的量化寄存器可以包括量化移位寄存器和量化参数寄存器。在量化寄存器生成的配置参数中,量化寄存器响应于控制信号,可以向算术逻辑单元输出一串37比特长度的配置参数,高5比特表示量化移位寄存器生成的配置参数,低32比特表示量化参数寄存器生成的配置参数;量化寄存器生成的配置参数与不同模式指令控制下算术逻辑单元中的计算数据结合,确定计算结果数据的精度,量化移位寄存器表示计算数据需要进行左移的数据位宽。

配置寄存器根据来自外部总线的配置信息,使其中不同寄存器产生配置参数,可以基于配置参数确定计算数据的行信息、列信息、指定不同寄存器的功能。实现只通过外部总线对可重构处理单元进行单次配置,控制可重构处理单元进行多次计算的功能。如果要改变配置寄存器的配置参数,可以通过外部总线重新输入配置信号,实现不同模式计算的实时切换。

根据本公开的实施例,上述控制器包括:译码器、累加状态机、发送状态机、加载状态机、最大值状态机、输出状态机。

其中,上述累加状态机、发送状态机用于响应于上述卷积模式指令接收来自外部总线的总线命令,生成上述使能信号,以及基于译码器译码的上述配置信息得到上述控制指令;上述加载状态机、最大值状态机、输出状态机用于响应于上述池化模式指令,接收来自外部总线的总线命令,生成上述使能信号,以及基于译码器译码的上述配置信息得到上述控制指令。

根据本公开实施例,控制器中的累加状态机(Cadd_state)和发送状态机(Send_state)响应于上述卷积模式,共同控制多路选择器、算术逻辑单元、静态随机存储器;累加状态机控制先入先出存储器接收外部数据,发送状态机先入先出存储器输出计算结果数据。

控制器中的累加状态机(Cadd_state)表示通过接收外部数据完成乘累加操作,得到部分和数据,并将部分和数据存入静态随机存储器中,如果累加状态机控制的下没有完成所有部分和数据计算,则需要通过取出静态随机存储器中的多个部分和数据重新累加,完成数据计算。

根据本公开实施例,控制器中的加载状态机、最大值状态机、输出状态机响应于上述池化模式指令共同控制多路选择器、算术逻辑单元、静态随机存储器;加载状态机控制先入先出存储器接收外部数据,输出状态机先入先出存储器输出计算结果数据。

根据本公开的实施例,上述配置控制单元用于:

确定上述先入先出存储器的状态;在确定上述先入先出存储器处于空状态情况下,上述先入先出存储器不向上述多路选择器输出外部数据,使得上述可重构处理单元不进行计算;以及在确定上述先入先出存储器处于满状态情况下,上述先入先出存储器不获取上述可重构处理单元产生的计算结果数据,使得上述可重构处理单元不进行计算。

在上述先入先出存储器不处于空状态或满状态情况下,上述先入先出存储器向上述多路选择器输出外部数据,以及向上述可重构处理单元外部输出计算结果数据,使得上述可重构处理单元开始进行计算。

根据本公开实施例,先由配置控制单元根据来自外部总线的配置信息和总线命令对上述可重构处理单元进行配置,后由先入先出存储器根据控制指令执行对数据的接收和输出,实现数据控制,使可重构处理单元在计算开始前先配置模块内部子单元状态,配置完成之后再接收外部数据执行特定操作。可重构处理单元模块内部各个子单元的相对独立,只需要配置控制单元分别进行控制,而不需要在计算过程中对重构处理单元模块内部各个子单元联合控制,减少了外部总线的配置信息和总线命令的数据量。

根据本公开的实施例,上述多路选择器用于:

上述多路选择器响应于上述控制指令和卷积模式指令,将上述先入先出存储器接收的第一输入队列的上述外部数据输入上述算术逻辑单元或上述静态随机存储器;

上述多路选择器响应于上述控制指令和池化模式指令,将上述先入先出存储器接收的第二输入队列的上述外部数据输入上述算术逻辑单元或上述静态随机存储器。

根据本公开实施例,使用一个多路选择器响应于上述控制指令和不同的模式指令,可以实现在一个可重构处理单元中只使用一个多路选择器对来自先入先出存储器接收的外部数据的来源进行选择,并将外部数据输入算术逻辑单元或静态随机存储器,减少了多路选择器的使用数量,减小可重构处理单元的体积,提高硬件资源利用率。

根据本公开的实施例,上述算术逻辑单元包括:加法器、乘法器、移位器、输出图计数器、通道计数器、部分和寄存器。

上述卷积模式指令包含乘法指令和加法指令。

上述控制器响应于上述卷积模式指令,上述累加状态机、发送状态机基于译码器译码上述配置信息,得到上述控制指令。

上述先入先出存储器响应于上述卷积模式指令和上述累加状态机、发送状态机生成的上述控制指令,接收外部数据和输出计算结果数据。

上述多路选择器响应于上述卷积模式指令和上述累加状态机生成的上述控制指令,将上述先入先出存储器接收的第一输入队列的上述外部数据输入上述算术逻辑单元。

上述算术逻辑单元的上述输出图计数器响应于上述累加状态机生成的上述控制指令,确定算术逻辑单元计算后的输出图的行数和列数,控制输出图的大小。

上述算术逻辑单元的上述通道计数器响应于上述发送状态机生成的上述控制指令,确定计算时通道累加的次数、计算时数据存取静态随机存储器的次数。

上述算术逻辑单元上述加法器、乘法器、移位器、部分和寄存器利用上述计算时通道累加的次数、计算时数据存取静态随机存储器的次数对上述外部数据进行计算,实现对上述外部数据的向量乘法、矩阵乘法、矩阵加法运算,得到计算结果数据。以及

响应于上述卷积模式指令,上述控制器将上述量化寄存器的上述上述配置参数译码,译码后的配置参数通过上述乘法器与上述计算结果数据相乘,得到8比特数据精度或16比特数据精度的计算结果数据。

图3示意性示出了根据本公开实施例的可重构计算在卷积模式下的硬件的微架构图。

图3中虚线表示可重构处理单元中的控制信号,实线部分表示可重构处理单元中的数据信号;先入先出存储器空状态或满状态情况下产生的的空信号满信号不需要在图中反映;模式配置、配置使能、通道配置和量化配置均为配置控制单元相应的配置信号和使能信号。

如图3所示,单元模式寄存器接收来自外部总线的配置信息,被设置为具体的卷积模式指令。累加状态机、发送状态机基于具体的卷积模式指令,生成对应使能信号。行寄存器、列寄存器、通道寄存器、量化寄存器响应于对应使能信号,基于接收到来自外部总线的配置信息生成配置参数。译码器基于配置参数译码生成控制信号,并将控制信号输入算术逻辑单元。控制信号可以包括累加状态机生成的有关行寄存器、列寄存器的控制信号,发送状态机生成的控制信号,以及有关通道寄存器、量化寄存器的控制信号。

先入先出存储器响应于累加状态机的接收请求,接收外部数据。外部数据可以包括第一输入队列的外部数据和第二输入队列的外部数据。先入先出存储器响应于发送状态机的发送请求,输出计算结果数据。多路选择器响应于控制指令和具体的卷积模式指令,接收来自先入先出存储器的第一输入队列的外部数据,并将外部数据输入算术逻辑单元。

算术逻辑单元可以包括输出图计数器和部分和寄存器。输出图计数器输出图计数器响应于累加状态机发送的有关行寄存器、列寄存器的控制信号,控制输出图的大小。部分和寄存器响应于发送状态机发送的控制信号,进行部分和数据的暂存。算术逻辑单元响应于有关通道寄存器、量化寄存器的控制信号,对数据进行乘累加和数据位宽的处理。此外,算术逻辑单元还可以包括加法器、乘法器、激活单元和移位寄存器、通道计数器。算术逻辑单元可以主要用于实现乘法、加法、乘累加、移位、比较等操作。

根据本公开实施例,卷积模式主要实现的功能为向量乘法功能和矩阵加法功能,其中具体配置信息表示为如下表1:

表1

向量乘加功能:对于现有的卷积神经网络,通常卷积核大小为3×3,可将卷积核展开为长度为9的一维向量运算。

如上图表1中功能“1”所示,设置spe_mode=“vect_mac”模式,row_reg=“1”,col_reg=“1”,chan_add_reg=“9”,chan_add_re_reg=“1”完成9×1的向量累加运算并且将计算结果输出到可重构单元之外。单元模式(spe_mode)参数寄存器设置算术逻辑单元的功能为乘累加操作,并且将乘累加结果放置到内部的部分和(Psum)寄存器中。算术逻辑单元中乘累加单元由加法器和乘法器以二阶流水线的设计方式得到,可以减少关键路径的延迟。乘累加单元只针对8比特的输入数据进行处理,对应设置部分和寄存器的位宽为32比特,保证部分和数据的输出结果不会溢出,计算完成的结果通过乘以比例因子的方法进行截位处理,保证输出结果的精度。重复累加寄存器(chan_add_re_reg)=1,表示进行向量计算的结果直接输出到输出先入先出存储器中。

如上图表1中功能“2”所示,设置spe_mode=“vect_mac”模式,row_reg=“2”,col_reg=“2”,chan_add_reg=“9”,chan_add_re_reg=“2”,完成行数和列数分别为2×2的卷积核,且卷积核大小为9,输入通道是2的卷积运算。首先将第一个通道的计算结果存入到静态随机存储器中,然后计算第二通道的结果,并且将第二个通道的计算机结果和第一个通达的计算结果进行累加完成两个通道的乘累加计算。

矩阵累加功能:可重构处理单元支持流模式操作,具体的,通过先入先出存储器获取一个矩阵,可重构处理单元将矩阵存储到静态随机存储器中,然后等待下一次配置控制单元输入第二矩阵,此时从静态随机存储器中取出第一矩阵和第二矩阵累加,如果chan_add_re_reg=“1”则直接输出到先入先出存储器,如果chan_add_re_reg设置为n,则等待n个大小相同的矩阵输入完成之后,将输出结果送到输出先入先出存储器中。

完成所有输入通道和卷积核的乘累加操作之后,需要对输出图进行量化。为了满足不同深度学习算法需要的精度不同,通过可以加载外部输入的量化参数到量化参数寄存器,将输出数据乘以输入的量化参数并且截取指定位宽来对于输出图数据进行不同精度要求的量化。

根据本公开的实施例,上述算术逻辑单元还包括最大值寄存器、最大值计数器、比较器。

上述池化模式指令包含最大池化指令、平均池化指令。

上述控制器响应于上述池化模式指令,上述加载状态机、最大值状态机、输出状态机基于译码器译码上述配置信息,得到上述控制指令。

上述先入先出存储器响应于上述池化模式指令和上述加载状态机、输出状态机生成的上述控制指令,接收外部数据和输出计算结果数据。

上述多路选择器上述卷积模式指令和上述累加状态机生成的上述控制指令,将上述先入先出存储器接收的第二输入队列的上述外部数据输入上述算术逻辑单元。

上述算术逻辑单元的上述输出图计数器响应于上述加载状态机生成的上述控制指令,确定算术逻辑单元计算后的输出图的行数和列数,控制输出图的大小。

上述算术逻辑单元的上述最大值寄存器响应于上述最大值状态机生成的上述控制指令,用于存储每个通道计算时最大池化核的最大值。

上述算术逻辑单元的上述最大值寄存器、最大值计数器、部分和寄存器、比较器、加法器、输出图计数器利用上述外部数据进行计算,实现对上述外部数据的最大池化、平均池化运算,得到计算结果数据。

图4示意性示出了根据本公开的实施例的可重构计算在池化模式下的硬件的微架构图。

图4中虚线、实线先入先出存储器产生的的空信号满信号设置与图3相同,在此不再赘述。

如图4所示,单元模式寄存器接收来自外部总线的配置信息,被设置为具体的卷积模式指令。加载状态机、最大值状态机、输出状态机基于具体的卷积模式指令生成对应使能信号。行寄存器、列寄存器、池化模式寄存器响应于对应使能信号,基于接收到来自外部总线的配置信息配置信息生成配置参数。译码器基于配置参数译码生成控制信号,并将控制信号输入算术逻辑单元。控制信号可以包括加载状态机发送的有关行寄存器、列寄存器的控制信号,以及加载状态机发送的有关池化模式寄存器的控制信号。

先入先出存储器响应于加载状态机的接收请求,接收外部数据。先入先出存储器响应于输出状态机的发送请求,输出计算结果数据。多路选择器响应于控制指令和卷积模式指令,接收自先入先出存储器的的第二输入队列的外部数据,并将外部数据输入算术逻辑单元。

算术逻辑单元中输出图计数器响应于加载状态机发送的有关行寄存器、列寄存器的控制信号,控制输出图的大小。最大值寄存器响应于加载状态机发送的有关池化模式寄存器的控制信号,控制算术逻辑单元进行具体的池化操作。部分和寄存器缓存最大池化、平均池化等操作中产生的数据。算术逻辑单元可以具体展开为加法器、乘法器、比较器、最大值寄存器、最大值计数器、比较器、加法器。算术逻辑单元可以主要实现最大池化、平均池化等操作。

根据本公开实施例,通过复用静态随机存储器和对应算术逻辑单元完成不同要求的池化操作:如:池化核为2或池化核为3的步长可变的池化运算。当完成池化核为7的平均池化运算,通过量化寄存器中缓存的量化因子,完成除法单元的计算,避免使用除法器,减小可重构处理单元体积。

更具体的,可以设置spe_mode=“max_pool”模式,设置算术逻辑单元执行比较器功能,每次开始最大池化计算前,将输入图通过多路选择器加载到静态随机存储器中,虽然相比于专用的池化电路增加了存入数据的周期,但“max_pool”模式保证输入图可以在完成卷积之后可以直接进行池化,同时可以完成不同滑动步长和不同卷积核的池化。

可以静态随机存储器设计大小为1024×32,如果输入图是8比特数据,则每次最多可以支持四个通道同时进行池化。每次开始时将第一个数放到最大值寄存器(max_reg)中,如果最大值池化核(kernel_size)设置为2,则每个窗口的4个数输出一个最大结果放到最大值寄存器中,如果最大值池化核设置为3,则每个窗口9个数输出一个最大结果放到最大值寄存器中。

可以设置spe_mode=“avg_pool”模式,则算术逻辑单元功能调用之前的乘累加单元,完成窗口的部分和的乘累加操作。算术逻辑单元将完成窗口的部分和的乘累加操作得到的数据乘以比例因子,完成平均计算。如果完成7×7的平均池化,则将完成长度为49的向量乘累加计算之后,将49缓存到量化寄存器中作为量化因子,使用时乘以49的倒数,然后通过截位操作,完成除法计算,达到平均池化的计算效果。

根据本公开实施例,可重构处理器可以以8比特数据精度或16比特数据精度的算术逻辑单元和32比特数据精度的存储单元作为最小的重构粒度进行数据计算,数据粒度变大可以减小可重构处理器所需配置信息量,可以通过重构单元之间的互联结构,增加信号传输带宽,在保证运算速度正常的情况下,减小芯片面积。

更具体的,可重构处理器的算术逻辑单元的加法器和乘法器都可以进行8比特数据精度或16比特数据精度的数据计算,加法器和乘法器通过二阶流水线设计组合得到的乘加器可以进行8比特数据精度的数据计算,静态随机存储器的内存位宽为32比特。可重构处理器计算数据粒度较大,可以降低所需配置信息量,提高可重构处理器运算速度。

根据本公开的实施例,上述静态随机存储器还用于:响应于控制信息,基于上述查找表对上述8比特数据精度的计算结果数据进行激活函数运算;响应于控制信息,将16比特数据精度的上述计算结果数据以多段多项式拟合的模式存储,基于上述查找表将每一段16比特数据精度的上述计算结果数据进行激活函数运算,得到多个一阶激活函数运算结果。以及

上述算术逻辑单元还用于将上述多个一阶激活函数运算结果累加,得到上述计算结果数据的16比特数据精度的激活函数运算结果。

根据本公开实施例,静态随机存储器还可以存储所述算术逻辑单元的计算中间数据,例如存储部分和数据,使用静态随机存储器存储所述算术逻辑单元的计算中间数据一方面可以增加算术逻辑单元对计算中间数据的访问速度,另一方面静态随机存储器存储时会对数据进行量化处理,静态随机存储器将数据输出后降低了数据所需存储空间。

根据本公开实施例,在完成上述输入通道的计算之后,网络层还可能进行激活函数的操作,激活函数可以包括,ReLU函数、Sigmoid函数、Tanh函数等。

ReLU函数只要和0相比,大于0则输出正值,可以直接使用算术逻辑单元比较器进行计算。常用可重构处理单元设计中,实现Sigmoid函数、Tanh函数一般只用查找表的方式实现。利用静态随机存储器的地址作为索引,将Tanh函数和Sigmoid函数的结果提前加载到静态随机存储器中,完成查找表的配置。对于典型的8比特数据,可以在静态随机存储器中利用8比特的查找表实现结果查找。对于16比特数据,由于静态随机存储器大小限制,设置了查找表和多项式拟合的方式实现结果查询,实现16比特Sigmoid函数、Tanh函数高精度查找,可以将Sigmoid函数设置成多段多项式拟合的模式,利用polyfit函数将多段一阶拟合函数的系数存入查找表中,利用算术逻辑单元中的乘累加功能,实现利用多段线性函数的实现拟合方式。

根据本公开实施例,由于部分和寄存器可以将数据累加到静态随机存储器中,使得卷积层和池化层可以进行层融合计算,可以设置spe_mode=“conv_pool”模式,可重构单元可以在完成卷积模式之后进行池化,减少对片外存储的访问,提高计算速度。

根据本公开实施例,设置计算两个16×16的输入图的矩阵乘法、矩阵加法、最大池化核为2×2步长为2的最大池化、计算计算结果数据16个点的Sigmoid函数值,并对设置的计算进行性能评估,其中计算结果表示为如下表2:

表2

面积功耗评估(在SMIC 28nm工艺下的性能),在时钟频率为400m的条件下评估了可重构处理单元的资源消耗和功耗表现。其中面积和功耗表现表示为如下表3:

表3

可重构处理单元可以近似达到ASIC的能效。

误差精度评估,在8比特模式和16比特模式下评估了激活函数的性能表现,性能数值表示为如下表4:

表4

根据本公开实施例,可重构处理单元还可以设置接收来自外部总线的多种配置信息和总线命令,实现不同的计算操作,可重构处理单元功能配置表可以表示为如下表5:

表5

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号