CN111142841A - 支持卷积运算的处理器电路系统及其卷积运算控制方法 - Google Patents

支持卷积运算的处理器电路系统及其卷积运算控制方法 Download PDF

Info

Publication number
CN111142841A
CN111142841A CN201911403500.9A CN201911403500A CN111142841A CN 111142841 A CN111142841 A CN 111142841A CN 201911403500 A CN201911403500 A CN 201911403500A CN 111142841 A CN111142841 A CN 111142841A
Authority
CN
China
Prior art keywords
convolution
data
multiplier
data cache
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
CN201911403500.9A
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 Jieming Technology Co ltd
Original Assignee
Putian Jiemu 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 Putian Jiemu Technology Co Ltd filed Critical Putian Jiemu Technology Co Ltd
Priority to CN201911403500.9A priority Critical patent/CN111142841A/zh
Publication of CN111142841A publication Critical patent/CN111142841A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种支持卷积运算的处理器电路系统及其卷积运算控制方法。所述支持卷积运算的处理器电路系统包括:指令发射模块;卷积运算模块,包括卷积控制器以及均与卷积控制器连接的算术逻辑运算单元、装载存储单元、卷积核数据缓存、卷积数据缓存和临时数据缓存;卷积控制器连接指令发射模块;算术逻辑运算单元用于进行卷积运算;装载存储单元用于处理卷积核数据的装载和卷积数据的装载;卷积核数据缓存用于存放卷积核数据;卷积数据缓存用于存放卷积数据;临时数据缓存用于缓存卷积运算产生的中间结果数据;指令提交模块。本发明可以大幅度节省卷积运算的电路面积,并提高卷积运算时的算术逻辑运算单元的利用率。

Description

支持卷积运算的处理器电路系统及其卷积运算控制方法
技术领域
本发明涉及处理器技术领域,尤其涉及一种支持卷积运算的处理器电路系统及其卷积运算控制方法。
背景技术
随着卷积神经网络的发展,以及卷积作为神经网络的基本计算,一些嵌入式设备处于对图像、语音等的处理要求,需要完成大量的卷积运算。为了更好的支持卷积运算,现有的实现方案普遍采用以下两种方式:一种是,选用具有矢量数据处理能力的处理器,以提高数据并行处理能力,从而缩短卷积运算的时间;另一种是,采用通用处理器、加卷积加速引擎作为协处理器的双核结构,通用处理器用于完成常规运算,而卷积加速引擎用于完成卷积运算。
但是,采用具有数据并行处理能力的通用处理器来实现卷积运算,需要将卷积运算拆分成大量的乘法指令、加法指令和访存指令,整个运算过程需要不断的取指,大量的访问内存操作会造成整个运算时间较长,能效差。采用通用处理器加卷积加速引擎作为协处理器的双核结构,通用处理器和卷积运算的协处理器无法实现硬件资源的共享,面积开销大。
因此,如何优化用于实现卷积运算的处理器结构,减少面积,并提高能效,是目前亟待解决的技术问题。
发明内容
本发明提供了一种支持卷积运算的处理器电路系统及其卷积运算控制方法,用于优化用于实现卷积运算的处理器电路结构,减少面积,并提高能效。
为了解决上述问题,本发明提供了一种支持卷积运算的处理器电路系统,包括:
指令发射模块,用于接收处理器指令,并将卷积指令并发送给卷积运算模块;
卷积运算模块,包括卷积控制器以及均与所述卷积控制器连接的算术逻辑运算单元、装载存储单元、卷积核数据缓存、卷积数据缓存和临时数据缓存;所述卷积控制器连接所述指令发射模块;所述算术逻辑运算单元,包括乘加器,所述乘加器由乘法器和加法器串联形成,用于进行卷积运算中所需的乘加操作;所述装载存储单元用于处理卷积核数据的装载和卷积数据的装载;所述卷积核数据缓存用于存放卷积核数据;所述卷积数据缓存用于存放卷积数据;所述临时数据缓存用于缓存卷积运算产生的中间结果数据;
指令提交模块,连接所述卷积运算模块,用于提交完成卷积运算的卷积指令,更新架构寄存器。
可选的,所述乘加器的数量为多个。
可选的,还包括:
数据存储模块,连接所述装载存储单元、所述卷积核数据缓存和所述卷积数据缓存,用于向所述卷积核数据缓存装载所述卷积核数据,并用于向所述卷积数据缓存装载所述卷积数据。
可选的,所述乘加器的数据处理速率与小于或者等于所述数据存储模块装载所述卷积核数据和所述卷积数据的速率。
可选的,所述卷积数据缓存的大小为两倍的所述数据存储模块向所述卷积数据缓存装载的所述卷积数据的位宽。
可选的,所述卷积核数据缓存的深度小于或者等于所述卷积核数据中的卷积核列数。
不仅如此,本发明还提供了一种如上述任一项所述的支持卷积运算的处理器电路系统的卷积运算控制方法,包括如下步骤:
获取卷积指令;
读取所述卷积核数据缓存中的卷积核数据,作为所述乘加器的乘数输入;
读取所述卷积数据缓存中的卷积数据,作为所述乘加器的被乘数输入;
读取所述临时数据缓存中的中间结果数据,作为所述乘加器的加数输入,所述中间结果数据为前一次所述乘加器的乘加运算得到,所述中间结果数据的初始值为0;
根据所述乘数、所述被乘数和所述加数进行卷积运算。
可选的,获取卷积指令之前,还包括如下步骤:
将所述临时数据缓存中的数据清零。
可选的,所述乘加器的数量为X;所述卷积运算控制方法还包括如下步骤:
读取所述卷积核数据缓存中的一个卷积核数据,同时作为Y个所述乘加器的乘数输入,其中,X、Y均为正整数,且X≥Y;
读取所述卷积数据缓存中的Y个所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
可选的,还包括如下步骤:
将所述卷积数据顺序划分为多组,每组包括Y个所述卷积数据,针对每一组进行如下步骤:
读取所述卷积数据缓存中的一组所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入,Y个所述中间结果数据为上一组所述卷积数据进行乘加运算得到的结果;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
本发明提供的支持卷积运算的处理器电路系统及其卷积运算控制方法,通过复用处理器原有的算术逻辑运算单元来实现卷积运算中的乘法与加法,从而可以大幅度节省卷积运算的电路面积。同时,通过复用通用处理器原有的通用寄存器作为临时数据缓存来存储卷积运算过程中的中间数据,从而可以进一步精简电路结构,减少了装载操作,减少了访存带宽要求,提高了卷积运算时算术逻辑运算单元的利用率,能效性高。
附图说明
附图1是本发明具体实施方式中支持卷积运算的处理器电路系统的结构框图;
附图2是本发明具体实施方式中支持卷积运算的处理器电路系统的卷积运算控制方法流程图。
具体实施方式
下面结合附图对本发明提供的支持卷积运算的处理器电路系统及其卷积运算控制方法的具体实施方式做详细说明。
本具体实施方式提供了一种支持卷积运算的处理器电路系统,附图1是本发明具体实施方式中支持卷积运算的处理器电路系统的结构框图。如图1所示,本具体实施方式提供的支持卷积运算的处理器电路系统,包括:
指令发射模块10,用于接收处理器指令,并将卷积指令并发送给卷积运算模块;
卷积运算模块11,包括卷积控制器111以及均与所述卷积控制器111连接的算术逻辑运算单元112、装载存储单元113、卷积核数据缓存114、卷积数据缓存115和临时数据缓存116;所述卷积控制器111连接所述指令发射模块10;所述算术逻辑运算单元112,包括乘加器,所述乘加器由乘法器和加法器串联形成,用于进行卷积运算中所需的乘加操作;所述装载存储单元113用于处理卷积核数据的装载和卷积数据的装载;所述卷积核数据缓存114用于存放卷积核数据;所述卷积数据缓存115用于存放卷积数据;所述临时数据缓存116用于缓存卷积运算产生的中间结果数据;
指令提交模块12,连接所述卷积运算模块11,用于提交完成卷积运算的卷积指令,更新架构寄存器。
具体来说,所述指令发射模块10与现有处理器内的指令发射模块的功能相同,都是根据接收到的指令的功能类型,发射给对应的执行模块。所述指令提交模块12也与现有处理器内的指令提交模块的功能相同,即在执行模块执行完所述指令发射模块10发射的所述指令、并写回数据结果后,将指令进行提交,更新架构寄存器,这也标志着所述指令的生命周期结束。本具体实施方式中的所述卷积运算模块11是位于所述指令发射模块10与所述指令提交模块12之间的一个指令执行模块,用于执行所述指令发射模块10发射的卷积指令。所述卷积运算模块11属于处理器的一部分,而不是另外的协处理器,即本具体实施方式提供的所述处理器仍为一个单核的处理器。本具体实施方式中所述的处理器可以是但不限于嵌入式处理器。
所述卷积控制器11在接收到所述指令发射模块10发射的卷积指令之后,控制卷积运算的所有过程,包括:发起卷积核数据、卷积数据的装载请求;读取所述卷积核数据缓存114中的卷积核数据、读取所述卷积数据缓存115中的卷积数据、以及读取所述临时数据缓存116中的中间结果数据(即临时数据),并将读取的所述卷积核数据、所述卷积数据和所述中间结果数据发送至所述算术逻辑运算单元112,以在所述算术逻辑运算单元112中进行基本的乘加运算;将获取的所述算术逻辑运算单元112的运算结果写入所述临时数据缓存116;如果已经获得卷积核窗口对应的卷积运算结果数据,则将所述卷积运算结果数据的存储请求发送至所述装载存储单元113。
所述算术逻辑运算单元112可以直接复用所述处理器中原有的算术逻辑计算单元。所述算术逻辑运算单元112包括若干个乘加器,所述乘加器由乘法器与加法器串联构成。
为了提高卷积运算的并行度,可选的,所述乘加器的数量为多个。本具体实施方式中所述的“多个”是指两个以上。
可选的,所述支持卷积运算的处理器电路系统还包括:
数据存储模块13,连接所述装载存储单元113、所述卷积核数据缓存114和所述卷积数据缓存115,用于向所述卷积核数据缓存114装载所述卷积核数据,并用于向所述卷积数据缓存115装载所述卷积数据。
具体来说,所述数据存储模块13可以为所述处理器中原有的数据缓存,用于存放所述处理器运行所需要的所有数据。
所述装载存储单元113可以复用所述处理器原有的装载存储单元,除了处理所述处理器正常的装载、存储操作指令,还能够处理所述卷积控制器111发起的卷积核数据的装载、卷积数据的装载、以及所述卷积运算结果数据的存储操作请求。
所述卷积核数据缓存114用于存放所述数据存储模块13装载进来的所述卷积核数据。可选的,所述卷积核数据缓存114的深度小于或者等于所述卷积核数据中的卷积核列数。这是因为,容量较大的所述卷积核数据缓存114可以有效减少卷积运算过程中的装载操作,从而降低功耗。
所述卷积数据缓存115用于存放所述数据存储模块13装载进来的所述卷积数据。可选的,所述卷积数据缓存115的大小为两倍的所述数据存储模块13向所述卷积数据缓存115装载的所述卷积数据的位宽。
为了最大化提高乘法器与加法器的使用效率,可选的,所述乘加器的数据处理速率小于或者等于所述数据存储模块13装载所述卷积数据的速率。
所述临时数据缓存116用于缓存所述卷积运算过程中产生的中间结果数据。由于本具体实施方式是复用所述处理器中的算术逻辑计算单元,因此无法一次完成卷积核窗口对应卷积数据的全部乘加运算,故需要将中间累加结果临时存放在所述临时数据缓存16中。所述临时数据缓存116可以复用所述处理器原有的通用寄存器电路资源,也可以增加新的寄存器电路资源。本具体实施方式提供的支持卷积运算的处理器电路系统在进行卷积运算的过程中,所支持的最大卷积核的列数据受所述临时数据缓存116容量大小的限制,即支持卷积运算的卷积核的列数小于等效临时数据缓存的容量。
在其他具体实施方式中,还可以选择具有点积运算、矩阵乘法运算等功能的处理器,将完整的卷积运算拆分为多条点积、矩阵乘法运算,复用处理器原本具有的点积运算单元完成相应的点积运算、复用所述处理器原本具有的矩阵乘法单元完成矩阵乘法运算。
不仅如此,本具体实施方式还提供了一种如上述任一项所述的支持卷积运算的处理器电路系统的卷积运算控制方法,附图2是本发明具体实施方式中支持卷积运算的处理器电路系统的卷积运算控制方法流程图。如图1、图2所示,本具体实施方式提供的支持卷积运算的处理器电路系统的卷积运算控制方法,包括如下步骤:
步骤S21,获取卷积指令;
步骤S22,读取所述卷积核数据缓存中的卷积核数据,作为所述乘加器的乘数输入;
步骤S23,读取所述卷积数据缓存中的卷积数据,作为所述乘加器的被乘数输入;
步骤S24,读取所述临时数据缓存中的中间结果数据,作为所述乘加器的加数输入,所述中间结果数据为前一次所述乘加器的乘加运算得到,所述中间结果数据的初始值为0;
步骤S25,根据所述乘数、所述被乘数和所述加数进行卷积运算。
为了防止污染卷积运算,可选的,获取卷积指令之前,还包括如下步骤:
将所述临时数据缓存中的数据清零。
可选的,所述乘加器的数量为X个;所述卷积运算控制方法还包括如下步骤:
读取所述卷积核数据缓存中的一个卷积核数据,同时作为Y个所述乘加器的乘数输入,其中,X、Y均为正整数,且X≥Y;
读取所述卷积数据缓存中的Y个所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
具体来说,所述支持卷积运算的处理器电路系统中所述乘加器的数量可以为多个,在进行实际的卷积运算的过程中,可以仅使用部分的所述乘加器,也可以使用全部的所述乘加器,具体根据实际情况进行选择。本具体实施方式中所述的“多个”是指两个以上。
可选的,所述卷积运算控制方法还包括如下步骤:
将所述卷积数据顺序划分为多组,每组包括Y个所述卷积数据,针对每一组进行如下步骤:
读取所述卷积数据缓存中的一组所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入,Y个所述中间结果数据为上一组所述卷积数据进行乘加运算得到的结果;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
以下如表1所示的卷积数据、表2所示的卷积核数据、表3所示的卷积运算结果数据、以及表4所示的卷积运算详细步骤为例进行说明。如表1所述,所述卷积数据为8行8列的二维数据,所述卷积核数据为3行3列的二维数据,所述卷积运算结构数据为6行6列的二维数据,卷积核滑动窗口步长为1。
表1卷积数据
a00 a01 a02 a03 a04 a05 a06 a07
a10 a11 a12 a13 a14 a15 a16 a17
a20 a21 a22 a23 a24 a25 a26 a27
a30 a31 a32 a33 a34 a35 a36 a37
a40 a41 a42 a43 a44 a45 a46 a47
a50 a51 a52 a53 a54 a55 a56 a57
a60 a61 a62 a63 a64 a65 a66 a67
a70 a71 a72 a73 a74 a75 a76 a77
表2卷积核数据
b00 b01 b02
b10 b11 b12
b20 b21 b22
表3卷积运算结果数据
Figure BDA0002348038340000081
Figure BDA0002348038340000091
表4卷积运算详细步骤
Figure BDA0002348038340000092
Figure BDA0002348038340000101
如表1、表2、表3和表4所示,所述算术逻辑运算单元中具有四个乘加器,即乘加器0、乘加器1、乘加器2和乘加器3,以上仅是举例说明,本领域技术人员可以根据实际需要调整乘加器的数量。所述临时数据缓存116中具有四个临时寄存器,即第一寄存器v0、第二寄存器v1、第三寄存器v2、第四寄存器v3、第五寄存器v4、第六寄存器v5、第七寄存器v6、第八寄存器v7。表4中的v0、v1、v2、v3、v4、v5、v6、v7表示对应的寄存器中的值。
周期0:读取所述卷积核数据缓存114中的卷积核数据b00,同时作为四个所述乘加器的乘数输入;读取所述卷积数据缓存115中的卷积数据a00、a01、a02、a03,分别作为乘加器0、乘加器1、乘加器2、乘加器3的被乘数输入;读取所述临时数据缓存116中四个所述临时寄存器v0、v1、v2、v3中的值分别作为乘加器0、乘加器1、乘加器2、乘加器3的加数输入,由于周期0刚刚开始卷积运算,故v0、v1、v2、v3中的值均为0。经过一次乘加运算,乘加器0得到的计算结果a00*b00+v0作为一个中间结果写入所述第一寄存器v0,并覆盖前次所述第一寄存器v0中的值;乘加器1得到的计算结果a01*b00+v1作为一个中间结果写入所述第二寄存器v1,并覆盖前次所述第二寄存器v1中的值;乘加器2得到的计算结果a02*b00+v2作为一个中间结果写入所述第三寄存器v2,并覆盖前次所述第三寄存器v2中的值;乘加器3得到的计算结果a03*b00+v3作为一个中间结果写入所述第四寄存器v3,并覆盖前次所述第四寄存器v3中的值。
周期1:读取所述卷积核数据缓存114中的卷积核数据b00,同时作为四个所述乘加器的乘数输入;读取所述卷积数据缓存115中的卷积数据a04、a05、a06、a07,分别作为乘加器0、乘加器1、乘加器2、乘加器3的被乘数输入;读取所述临时数据缓存116中第五寄存器v4、第六寄存器v5、第七寄存器v6、第八寄存器v7中的值分别作为乘加器0、乘加器1、乘加器2、乘加器3的加数输入,在本周期中第五寄存器v4、第六寄存器v5、第七寄存器v6、第八寄存器v7中的值均为0。乘加器0得到a04*b00+v4的结果,将结果以覆盖的方式写入第五寄存器v4;乘法器1得到a05*b00+v5的结果,将结果以覆盖的方式写入第六寄存器v5;乘法器2得到a06*b00+v6的结果,将结果以覆盖的方式写入第七寄存器v6;乘法器3得到a07*b00+v7的结果,将结果以覆盖的方式写入第八寄存器v7。
周期0和周期1完成了卷积核数据b00与卷积数据第0行所有数据的乘加运算。
类似的,周期2和周期3完成卷积核b01与卷积数据第0行所有数据的乘加运算,其中卷积运算过程不需要a00*b01。
周期4和周期5完成卷积核数据b02与卷积数据第0行所有数据的乘加运算,其中卷积运算过程中不需要a00*b02,a01*b02的结果。
周期0~周期5的六个周期完成了卷积核数据第0行和卷积数据第0行所有卷积运算中所需要的乘加运算。
类似的,周6~周期11的六个周期完成卷积核数据第1行和卷积数据第1行所有卷积运算中所需要的乘加运算。
周12~周期17的六个周期完成卷积核第2行和卷积数据第2行所有卷积运算中所需要的乘加运算。
周期16结束后,第一寄存器v0、第二寄存器v1中已经获得了c00与c01卷积结果:
c00=a00*b00+a01*b01+a02*b02+a10*b10+a11*b11+a12*b12+a20*b20+a21*b21+a22*b22;
c01=a01*b00+a02*b01+a03*b02+a11*b10+a12*b11+a13*b12+a21*b20+a22*b21+a23*b22。
所述卷积控制器111可以将所述第一寄存器v0和所述第二寄存器v1中结果数据存储至所述数据存储模块13,完成存储后需要将所述第一寄存器v0和所述第二寄存器v1中的数据清零,以便被重新使用。
周期17结束后,第三寄存器v2、第四寄存器v3、第五寄存器v4和第六寄存器v5中已经分别获得了c02、c03、c04、c05的卷积结果:
c02=a02*b00+a03*b01+a04*b02+a12*b10+a13*b11+a14*b12+a22*b20+a23*b21+a24*b22;c03=a03*b00+a04*b01+a05*b02+a13*b10+a14*b11+a15*b12+a23*b20+a24*b21+a25*b22;c04=a04*b00+a05*b01+a06*b02+a14*b10+a15*b11+a16*b12+a24*b20+a25*b21+a26*b22;c05=a05*b00+a06*b01+a07*b02+a15*b10+a16*b11+a17*b12+a25*b20+a26*b21+a27*b22。
所述卷积控制器111可以将第三寄存器v2、第四寄存器v3、第五寄存器v4和第六寄存器v5中结果数据存储至所述数据存储模块13,完成存储后需要将第三寄存器v2、第四寄存器v3、第五寄存器v4和第六寄存器v5中的数据清零,以便被重新使用。
周期17结束后卷积结果第0行的数据已经全部产生,周期18开始计算卷积结果第2行的数据。一直到周期143得到了所有的卷积结果数据。
本具体实施方式提供的支持卷积运算的处理器电路系统及其卷积运算控制方法,通过复用处理器原有的算术逻辑运算单元来实现卷积运算中的乘法与加法,从而可以大幅度节省卷积运算电路面积。同时,通过复用处理器原有的寄存器作为临时数据缓存来存储卷积运算过程中的中间数据,从而可以进一步精简电路结构,减少了装载操作,减少了访存带宽要求,提高了卷积运算时算术逻辑运算单元的利用率,能效性高。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种支持卷积运算的处理器电路系统,其特征在于,包括:
指令发射模块,用于接收处理器指令,并将卷积指令并发送给卷积运算模块;
卷积运算模块,包括卷积控制器以及均与所述卷积控制器连接的算术逻辑运算单元、装载存储单元、卷积核数据缓存、卷积数据缓存和临时数据缓存;所述卷积控制器连接所述指令发射模块;所述算术逻辑运算单元,包括乘加器,所述乘加器由乘法器和加法器串联形成,用于进行卷积运算中所需的乘加操作;所述装载存储单元用于处理卷积核数据的装载和卷积数据的装载;所述卷积核数据缓存用于存放卷积核数据;所述卷积数据缓存用于存放卷积数据;所述临时数据缓存用于缓存卷积运算产生的中间结果数据;
指令提交模块,连接所述卷积运算模块,用于提交完成卷积运算的卷积指令,更新架构寄存器。
2.根据权利要求1所述的支持卷积运算的处理器电路系统,其特征在于,所述乘加器的数量为多个。
3.根据权利要求1所述的支持卷积运算的处理器电路系统,其特征在于,还包括:
数据存储模块,连接所述装载存储单元、所述卷积核数据缓存和所述卷积数据缓存,用于向所述卷积核数据缓存装载所述卷积核数据,并用于向所述卷积数据缓存装载所述卷积数据。
4.根据权利要求4所述的支持卷积运算的处理器电路系统,其特征在于,所述卷积数据缓存的大小为两倍的所述数据存储模块向所述卷积数据缓存装载的所述卷积数据的位宽。
5.根据权利要求4所述的支持卷积运算的处理器电路系统,其特征在于,所述乘加器的数据处理速率与小于或者等于所述数据存储模块装载所述卷积数据的速率。
6.根据权利要求1所述的支持卷积运算的处理器电路系统,其特征在于,所述卷积核数据缓存的深度小于或者等于所述卷积核数据中的卷积核列数。
7.一种如权利要求1-6中任一项所述的支持卷积运算的处理器电路系统的卷积运算控制方法,其特征在于,包括如下步骤:
获取卷积指令;
读取所述卷积核数据缓存中的卷积核数据,作为所述乘加器的乘数输入;
读取所述卷积数据缓存中的卷积数据,作为所述乘加器的被乘数输入;
读取所述临时数据缓存中的中间结果数据,作为所述乘加器的加数输入,所述中间结果数据为前一次所述乘加器的乘加运算得到,所述中间结果数据的初始值为0;
根据所述乘数、所述被乘数和所述加数进行卷积运算。
8.根据权利要求7所述的卷积运算控制方法,其特征在于,获取卷积指令之前,还包括如下步骤:
将所述临时数据缓存中的数据清零。
9.根据权利要求7所述的卷积运算控制方法,其特征在于,所述乘加器的数量为X个;所述卷积运算控制方法还包括如下步骤:
读取所述卷积核数据缓存中的一个卷积核数据,同时作为Y个所述乘加器的乘数输入,其中,X、Y均为正整数,且X≥Y;
读取所述卷积数据缓存中的Y个所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
10.根据权利要求9所述的卷积运算控制方法,其特征在于,还包括如下步骤:
将所述卷积数据顺序划分为多组,每组包括Y个所述卷积数据,针对每一组进行如下步骤:
读取所述卷积数据缓存中的一组所述卷积数据,分别作为Y个所述乘法器的被乘数输入;
读取所述临时数据缓存中的Y个中间结果数据,分别作为Y个所述乘加器的加数输入,Y个所述中间结果数据为上一组所述卷积数据进行乘加运算得到的结果;
Y个所述乘加器分别根据各自的所述乘数、所述被乘数和所述加数进行乘加运算。
CN201911403500.9A 2019-12-31 2019-12-31 支持卷积运算的处理器电路系统及其卷积运算控制方法 Pending CN111142841A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911403500.9A CN111142841A (zh) 2019-12-31 2019-12-31 支持卷积运算的处理器电路系统及其卷积运算控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911403500.9A CN111142841A (zh) 2019-12-31 2019-12-31 支持卷积运算的处理器电路系统及其卷积运算控制方法

Publications (1)

Publication Number Publication Date
CN111142841A true CN111142841A (zh) 2020-05-12

Family

ID=70522376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911403500.9A Pending CN111142841A (zh) 2019-12-31 2019-12-31 支持卷积运算的处理器电路系统及其卷积运算控制方法

Country Status (1)

Country Link
CN (1) CN111142841A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982530A (zh) * 2023-03-13 2023-04-18 苏州浪潮智能科技有限公司 加速器运算控制方法、系统、存储介质、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982530A (zh) * 2023-03-13 2023-04-18 苏州浪潮智能科技有限公司 加速器运算控制方法、系统、存储介质、装置及设备

Similar Documents

Publication Publication Date Title
US11698773B2 (en) Accelerated mathematical engine
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
CN109146072B (zh) 基于卷积神经网络加速器的数据重用方法
US20190095776A1 (en) Efficient data distribution for parallel processing
US20070271325A1 (en) Matrix multiply with reduced bandwidth requirements
CN108388537B (zh) 一种卷积神经网络加速装置和方法
US20210349692A1 (en) Multiplier and multiplication method
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
US11093580B2 (en) Matrix multiplier with submatrix sequencing
US11915118B2 (en) Method and apparatus for processing computation of zero value in processing of layers in neural network
CN109597647B (zh) 数据处理方法及设备
TW202115560A (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
CN112074847A (zh) 拆分用于在神经网络处理器中处理的输入数据
WO2021036729A1 (zh) 一种矩阵运算方法、运算装置以及处理器
CN111639701B (zh) 一种图像特征提取的方法、系统、设备及可读存储介质
US20200364289A1 (en) Data processing method and apparatus
CN115983348A (zh) 支持卷积神经网络扩展指令的risc-v加速器系统
CN111142841A (zh) 支持卷积运算的处理器电路系统及其卷积运算控制方法
EP3264261B1 (en) Processor and control method of processor
CN109948787B (zh) 用于神经网络卷积层的运算装置、芯片及方法
KR20200110165A (ko) 뉴럴 네트워크의 레이어들의 처리에서 제로 값(zero value)의 연산을 처리하는 방법 및 장치
CN111047037A (zh) 数据处理方法、装置、设备及存储介质
EP4024206A1 (en) Computing device and method for reusing data
US20220012304A1 (en) Fast matrix multiplication

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
CB02 Change of applicant information

Address after: 351199 705-706, building a, Jiulong community, No. 999, lihuadong Avenue, Xialin street, Chengxiang District, Putian City, Fujian Province

Applicant after: Fujian Jiemu Technology Co.,Ltd.

Address before: 351100 floor 2, building 1, No. 1998, Licheng middle Avenue, Longqiao street, Chengxiang District, Putian City, Fujian Province

Applicant before: Putian Jiemu Technology Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20231114

Address after: Room 308 and Room 309, No. 268 Xiangke Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210

Applicant after: Shanghai Jieming Technology Co.,Ltd.

Address before: 351199 705-706, building a, Jiulong community, No. 999, lihuadong Avenue, Xialin street, Chengxiang District, Putian City, Fujian Province

Applicant before: Fujian Jiemu Technology Co.,Ltd.

TA01 Transfer of patent application right