CN109857460A - 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** - Google Patents

基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** Download PDF

Info

Publication number
CN109857460A
CN109857460A CN201910125953.3A CN201910125953A CN109857460A CN 109857460 A CN109857460 A CN 109857460A CN 201910125953 A CN201910125953 A CN 201910125953A CN 109857460 A CN109857460 A CN 109857460A
Authority
CN
China
Prior art keywords
matrix
instruction
coprocessor
convolution
request
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
CN201910125953.3A
Other languages
English (en)
Other versions
CN109857460B (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.)
Nanjing Huajie Imi Software Technology Co Ltd
Original Assignee
Nanjing Huajie Imi Software 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 Nanjing Huajie Imi Software Technology Co Ltd filed Critical Nanjing Huajie Imi Software Technology Co Ltd
Priority to CN201910125953.3A priority Critical patent/CN109857460B/zh
Publication of CN109857460A publication Critical patent/CN109857460A/zh
Application granted granted Critical
Publication of CN109857460B publication Critical patent/CN109857460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Advance Control (AREA)

Abstract

本发明公开了一套基于RISC‑V指令集架构的用于矩阵卷积计算的指令、接口和协处理器的方法、***完整机制,将传统的矩阵卷积计算以软硬件结合的方式高效实现,利用RISC‑V指令集的扩展性,通过设计少量的指令和专用的卷积计算单元(即协处理器),减少矩阵卷积计算指令的访存次数和执行周期,降低了应用层软件计算的复杂度、提高了大型矩阵卷积计算的效率、提升矩阵卷积的计算速度,也利于上层开发人员灵活调用,简化编码设计。同时,利用RISC‑V指令集设计的处理器,在功耗、体积和灵活性方面相对ARM,X86等架构也有巨大优势,能够适应不同的应用场景,在人工智能领域有着广阔前景。

Description

基于RISC-V架构的矩阵卷积计算方法、接口、协处理器及***
技术领域
本发明涉及矩阵卷积计算,尤其是基于RISC-V架构的矩阵卷积计算方法、接口、协处理器及***。
背景技术
随着人工智能的发展,图像识别、神经网络、深度学习等技术得到了广泛而深入的应用,其底层实现存在着大量矩阵卷积计算,矩阵卷积是这些技术最基础和核心的算法。矩阵卷积的计算就是大量数据的乘累加,传统的C/C++语言实现,需要多层的循环计算、多次的访存读取数据,运行于传统架构的***,运算速度、功耗和体积已经无法满足现代人工智能的要求。
现有技术一般采用高级语言的实现方式,访存指令多、执行时间长、实时性较差、能效比低,无法满足现代图像处理的要求。即便是采用ASIC芯片实现的矩阵卷积运算,设计也比较碎片化,通用性不强,灵活性也不足。传统的实现步骤例如:一个卷积核A,一般为3*3的矩阵,如表1所示:
-4 -3 -2
-1 0 1
2 3 4
表1
一个待处理矩阵B,如表2所示;
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
表2
首先,将卷积核翻转180°,如表3所示:
2 3 4
-1 0 1
-4 -3 -2
表3
然后,将卷积核A的中心元素对准待处理矩阵B的第一个元素,再将对应元素相乘后累加,没有元素的区域采用边缘拷贝的方式填充,如表4所示:
表4
输出矩阵C中第一个元素值为:2*1+3*1+4*2+-1*1+0*1+1*2+-4*5+-3*5+-2*6=-37。
按此方法处理矩阵B中的每一个元素,最终得到一个输出矩阵C,如表5所示,就是卷积结果。
-37 -30 -30 -33
-69 -66 -66 -69
-69 -66 -70 -69
-33 -30 -30 -33
表5
若能高效快速实现大量数据的乘累加,则能明显加速图像识别、神经网络、深度学习等应用领域的处理速度。
发明内容
发明目的:若能高效快速实现大量数据的乘累加,则能明显加速图像识别、神经网络、深度学习等应用领域的处理速度。针对上述现有技术存在的缺陷,本发明旨在提供一种基于RISC-V架构的矩阵卷积计算方法、接口、协处理器及***。
技术方案:一种基于RISC-V架构的矩阵卷积计算方法,包括基于RISC-V架构定义用于矩阵卷积计算的三条指令:定义用于指定需要运算的卷积核的SETUP-KERNEL指令、用于指定需要运算的矩阵块并执行卷积计算的SETUP-MATRIX指令和用于取回卷积计算结果的CONVOLUTION指令;所述三条指令定义选用同一个Custom指令组;
定义SETUP-KERNEL指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为卷积核在内存中的首地址,操作数rs2的值为矩阵大小N;
定义SETUP-MATRIX指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待处理矩阵块在存储器中的首地址,待处理矩阵块为源矩阵中,大小等于卷积核,用于单次计算的输入矩阵,操作数rs2的值为行距;
定义CONVOLUTION指令的方法为:定义指令有写回结果,指令执行的结果存放在rd索引的通用寄存器中,指令不需读取操作数rs1、rs2。
进一步的,还包括基于RISC-V架构定义的指令在RCI接口中的执行方法:
主处理器在译码器中判断当前指令的操作码opcode是否属于custom指令组;如果是,则依据32位指令的xs1和xs2标识位继续判断是否需要读取源操作数rs1和rs2;根据需求读取源操作数;
主处理器通过RCI接口的指令请求通道将32位custom指令派发给协处理器,派发的指令包含了操作码、功能码和两个源操作数;
协处理器通过指令请求通道接收指令后,对指令进一步译码,并执行实际的操作;主处理器和协处理器采用同步握手,协处理器能够连续接受多条指令,主处理器可以先后连续发送多条指令至协处理器;
协处理器在执行完指令后,通过RCI接口的指令反馈通道将结果返回主处理器;对于需要写回结果的指令,数据反馈通道中还传输计算结果的值;
主处理器接收到反馈结果后,将结果写回目的寄存器,指令从流水线中退出。
进一步的,所述根据需求读取源操作数具体还包括:主处理器维护数据的一致性,保证读取源操作数时不存在与其他指令读写冲突;协处理器完成读写请求后,主处理器释放协处理器请求的存储器资源,允许接收其它指令的读写请求。
进一步的,所述协处理器对指令进一步译码后,如果需要访问存储器,则通过数据请求通道向主处理器的load-store单元发起数据请求;数据请求信息包括访问的存储器地址、读或者写标志;对于读操作,则通过load-store单元对存储器进行一次4字节对齐的读操作;对于写操作,则load-store单元通过数据请求通道中rci_request_mem_dat信号控制写入的数据。
进一步的,所述主处理器和协处理器采用同步握手具体包括:只要主处理器的load-store单元能够连续进行存储器读写操作,则协处理器支持连续的存储器读写请求。
进一步的,还包括:主处理器的load-store单元完成存储器读写操作后,通过数据反馈通道向协处理器反馈;对于读操作,数据反馈通道中的信息包括读取的数据和本次操作的错误标志;对于写操作,数据反馈通道中的信息包括本次操作的错误标志。
进一步的,还包括基于RISC-V架构定义的指令在协处理器中的执行方法:
S1:使用SETUP-KERNEL指令指定运算需要的卷积核,控制模块根据参数,将卷积核复制到协处理器内部缓冲区;
S2:使用SETUP-MATRIX指令指定运算的矩阵块,并将矩阵块复制到协处理器内部缓冲区;之后开始执行计算;根据SETUP-MATRIX指令触发协处理器从存储器逐个读取矩阵块的元素,并与卷积核元素进行相乘并累加;当读取完整矩阵块最后一个元素后,整个累加和也计算完毕;
S3:使用CONVOLUTION指令将计算结果返回;
S4:重复执行步骤S2-S3,直至将源矩阵计算完毕,输出一张完整的卷积矩阵。
进一步的,所述步骤S2还包括:对于执行计算的矩阵块中与前次计算的矩阵块中重复的元素,协处理器在内部直接重复利用。
进一步的,在处理源矩阵之前,应用程序对矩阵进行边缘扩展。
进一步的,还包括:协处理器如果需要访问存储器,则通知主处理器阻止其他指令访问存储器。
一种基于RISC-V架构的矩阵卷积计算RCI接口,包括:
指令请求通道,用于将主处理器在指令执行单元基于RISC-V架构定义的用于矩阵卷积计算的指令和源操作数派发给协处理器;
指令反馈通道,用于将协处理器的指令执行结果通知主处理器,并将结果写回主处理器;
数据请求通道,用于向主处理器发送协处理器的存储器读写请求;
数据反馈通道,用于将主处理器的存储器读写结果向协处理器反馈。
进一步的,所述指令请求通道定义了以下信号:
rci_request_valid信号,位宽为1,用于主处理器向协处理器发送指令请求信号;
rci_request_ack信号,位宽为1,用于协处理器向主处理器反馈指令接收信号;
rci_request_custom信号,位宽为32,用于传输完整的32位custom指令;
rci_request_rs1信号,位宽为32,用于向协处理器传输源操作数1;
rci_request_rs2信号,位宽为32,用于向协处理器传输源操作数2;
指令反馈通道定义了以下信号:
rci_response_valid信号,位宽为1,用于协处理器向主处理器发送反馈请求信号;
rci_response_ack信号,位宽为1,用于主处理器向协处理器反馈接收信号;
rci_response_rst信号,位宽为32,用于返回计算结果;
rci_response_err信号,位宽为1,用于指示指令执行错误状态;
数据请求通道定义了以下信号:
rci_request_mem_valid信号,位宽为1,用于协处理器向主处理器发送存储器读写请求信号;
rci_request_mem_ack信号,位宽为1,用于主处理器向协处理器反馈读写接收信号;
rci_request_mem_addr信号,位宽32,用于派发存储器地址;
rci_request_mem_dat信号,位宽32,用于传输写入的数据;
rci_request_mem_rw信号,位宽1,用于指示读或写信号;
数据反馈通道定义了以下信号:
rci_response_mem_valid信号,位宽为1,用于主处理器向协处理发送存储器读写反馈请求信号;
rci_response_mem_ack信号,位宽为1,用于协处理器向主处理器发送存储器读写反馈信号;
rci_response_mem_dat信号,位宽为32,用于传输存储器读的数据;
rci_response_mem_err信号,位宽为1,用于指令读写反馈错误状态。
一种基于RISC-V架构的矩阵卷积计算的协处理器,包括控制模块、矩阵计算单元和内部缓冲区;
控制模块用于指定运算需要的卷积核、根据指令将卷积核复制到内部缓冲区、逐个读取矩阵块的元素、指定运算的矩阵块,并将矩阵块复制到内部缓冲区,将矩阵计算单元的计算结果返回,在矩阵计算单元计算完毕后输出一张完整的卷积矩阵;
矩阵计算单元用于执行源矩阵的卷积计算,将内部缓冲区的矩阵块元素与卷积核元素进行相乘并累加。
进一步的,所述控制模块使用SETUP-KERNEL指令指定运算需要的卷积核,使用SETUP-MATRIX指令指定运算的矩阵块,使用CONVOLUTION指令将计算结果返回;根据SETUP-MATRIX指令触发从存储器逐个读取矩阵块的元素。
一种基于RISC-V架构的矩阵卷积计算***,包括协处理器、主处理器、用于在主处理器和协处理器之间传输请求及反馈的RCI接口;
主处理器包括用于解析、执行指令的指令执行单元和用于为协处理器提供基于专用总线的访问通道的load-store单元;
协处理器包括控制模块、矩阵计算单元和内部缓冲区;
控制模块用于指定运算需要的卷积核、根据指令将卷积核复制到内部缓冲区、逐个读取矩阵块的元素、指定运算的矩阵块,并将矩阵块复制到内部缓冲区,将矩阵计算单元的计算结果返回,在矩阵计算单元计算完毕后输出一张完整的卷积矩阵;
矩阵计算单元用于执行源矩阵的卷积计算,将内部缓冲区的矩阵块元素与卷积核元素进行相乘并累加。
进一步的,所述RCI接口包括:
指令请求通道,用于将主处理器在指令执行单元基于RISC-V架构定义的用于矩阵卷积计算的指令和源操作数派发给协处理器;
指令反馈通道,用于将协处理器的指令执行结果通知主处理器,并将结果写回主处理器;
数据请求通道,用于向主处理器发送协处理器的存储器读写请求;
数据反馈通道,用于将主处理器的存储器读写结果向协处理器反馈,
有益效果:本发明提供了一套基于RISC-V指令集架构的用于矩阵卷积计算的指令、接口和协处理器的方法、***完整机制,将传统的矩阵卷积计算以软硬件结合的方式高效实现,利用RISC-V指令集的扩展性,通过设计少量的指令和专用的卷积计算单元(即协处理器),减少矩阵卷积计算指令的访存次数和执行周期,降低了应用层软件计算的复杂度、提高了大型矩阵卷积计算的效率、提升矩阵卷积的计算速度,也利于上层开发人员灵活调用,简化编码设计。同时,利用RISC-V指令集设计的处理器,在功耗、体积和灵活性方面相对ARM,X86等架构也有巨大优势,能够适应不同的应用场景,在人工智能领域有着广阔前景。
附图说明
图1是实施例中***结构示意图;
图2是实施例中custom指令编码格式图;
图3是实施例中SETUP-KERNEL指令编码格式图;
图4是实施例中SETUP-MATRIX指令编码格式图;
图5是实施例中CONVOLUTION指令编码格式图;
图6是实施例中RCI接口通道传输示意图。
具体实施方式
下面通过一个最佳实施例并结合附图对本技术方案进行详细说明。
本发明提供了一种基于RISC-V架构的矩阵卷积计算方法、实施该方法的RCI接口(RISC-V Coprocessor Interface)、协处理器及整体***。计算方法中包含基于RISC-V架构的自定义指令部分,定义了矩阵卷积操作所需要的指令编码。
如图1所示,与计算方法相应的基于RISC-V架构的矩阵卷积计算***,包括协处理器、主处理器、用于在主处理器和协处理器之间传输请求及反馈的RCI接口和用于存储的存储器;
RCI接口定义了主处理器和协处理器之间的数据通道和信号、处理流程;
主处理器包括用于解析、执行指令的指令执行单元和用于为协处理器提供基于专用总线的访问通道的load-store单元,load-store单元还用于进行读、写操作,图中还包括写回模块,写回模块是主处理器的常规模块,其在本发明中的功能、结构与常规处理器基本一致,可由本领域技术人员根据常识设置,***中的其他具体结构也可根据技术常识配合本发明的特征部分合理设置;
协处理器用于执行具体的自定义指令,并通过其处理单元计算矩阵卷积,包括控制模块、矩阵计算单元和内部缓冲区;
控制模块用于指定运算需要的卷积核、根据指令将卷积核复制到内部缓冲区、逐个读取矩阵块的元素、指定运算的矩阵块,并将矩阵块复制到内部缓冲区,将矩阵计算单元的计算结果返回,在矩阵计算单元计算完毕后输出一张完整的卷积矩阵;
矩阵计算单元用于执行源矩阵的卷积计算,将内部缓冲区的矩阵块元素与卷积核元素进行相乘并累加。
(一)自定义指令部分:
RISC-V指令集架构是一个灵活可扩展的架构,其在32位指令中定义了4组Custom指令类型,分别为custon0、custon1、custon2、custon3,用于协处理器扩展。
Custom指令编码格式如图2所示:
(1)指令第0位至第6位区间为指令操作码opcode,用于选择custom指令组。
(2)xs1和xs2用于指示源寄存器rs1和rs2是否有效;如果为xs1的值为1,则表示rs1位索引的通用寄存器为操作数1;如果xs1为0,则该指令不需要源操作数1;xs2同理,用于指示源操作数2。
(3)xd用于指示目的寄存器rd是否有效;如果xd位的值为1,则表示指令需要将计算结果写回rd位索引的目的寄存器。如果xd位0,则指令没有写回值。
(4)指令第25位至31位的funct7区间位功能编码区间,用于定义具体指令。
本发明基于RISC-V架构定义用于矩阵卷积计算的三条指令:
如图3所示,定义SETUP-KERNEL指令的方法为:
令opcode=0b0001011,即采用Custom0指令组;也可以采用custon1、
custon2或custon3指令组,只要三条指令定义的是同一个custom指令组即可。
xd=0b0,即指令不需要任何写回结果;
xs1=0b1,即指令需要读取操作数rs1,操作数rs1的值为卷积核在内存中的首地址;
xs2=0b1,即指令需要读取操作数rs2,操作数rs2的值为矩阵大小N;
funct7=0b1100000,即该值编码为SETUP-KERNEL指令;
rs1和rs2可使用任意RISC-V通用寄存器;
如图4所示,定义SETUP-MATRIX指令的方法为:
令opcode=0b0001011,即采用Custom0指令组;
xd=0b0,即指令不需要任何写回结果;
xs1=0b1,即指令需要读取操作数rs1,操作数rs1的值为待处理矩阵块在存储器中的首地址;此待处理矩阵块为源矩阵中,大小等于卷积核,用于单次计算的输入矩阵;
xs2=0b1,即指令需要读取操作数rs2,操作数rs2的值为行距;
funct7=0b1100001,即该值编码为SETUP-MATRIX指令;
如图5所示,定义CONVOLUTION指令的方法为:
令opcode=0b0001011,即采用Custom0指令组;
xd=0b1,即指令有写回结果,指令执行的结果存放在rd索引的通用寄存器中;
xs1=0b0,即指令不需要读取操作数rs1;
xs2=0b0,即指令不需要读取操作数rs2;
funct7=0b1100002,即该值编码为CONVOLUTION指令;
(二)RCI接口部分:
RCI接口是主处理器和协处理器之间的信息传输通道,主要作用是传递主处理器的请求和反馈协处理器的处理结果。
RCI接口主要包括4个通道:
指令请求通道,用于将主处理器在指令执行单元基于RISC-V架构定义的用于矩阵卷积计算的指令和源操作数派发给协处理器;
指令请求通道定义了以下信号:
rci_request_valid信号,位宽为1,用于主处理器向协处理器发送指令请求信号;
rci_request_ack信号,位宽为1,用于协处理器向主处理器反馈指令接收信号;
rci_request_custom信号,位宽为32,用于传输完整的32位custom指令;
rci_request_rs1信号,位宽为32,用于向协处理器传输源操作数1;
rci_request_rs2信号,位宽为32,用于向协处理器传输源操作数2;
指令反馈通道,用于将协处理器的指令执行结果通知主处理器,并将结果写回主处理器;
指令反馈通道定义了以下信号:
rci_response_valid信号,位宽为1,用于协处理器向主处理器发送反馈请求信号;
rci_response_ack信号,位宽为1,用于主处理器向协处理器反馈接收信号;
rci_response_rst信号,位宽为32,用于返回计算结果;
rci_response_err信号,位宽为1,用于指示指令执行错误状态;
数据请求通道,用于向主处理器发送协处理器的存储器读写请求;
数据请求通道定义了以下信号:
rci_request_mem_valid信号,位宽为1,用于协处理器向主处理器发送存储器读写请求信号;
rci_request_mem_ack信号,位宽为1,用于主处理器向协处理器反馈读写接收信号;
rci_request_mem_addr信号,位宽32,用于派发存储器地址;
rci_request_mem_dat信号,位宽32,用于传输写入的数据;
rci_request_mem_rw信号,位宽1,用于指示读或写信号;
数据反馈通道定义了以下信号:
rci_response_mem_valid信号,位宽为1,用于主处理器向协处理发送存储器读写反馈请求信号;
rci_response_mem_ack信号,位宽为1,用于协处理器向主处理器发送存储器读写反馈信号;
rci_response_mem_dat信号,位宽为32,用于传输存储器读的数据;
rci_response_mem_err信号,位宽为1,用于指令读写反馈错误状态。
如图6所示,指令在RCI接口中执行流程如下:
1.主处理器在译码器中判断当前指令的操作码opcode是否属于custom指令组。如果是,则依据32位指令的xs1和xs2标识位继续判断是否需要读取源操作数rs1和rs2。根据需求读取源操作数。主处理器需要维护数据的一致性,保证读取源操作数时不存在与其他指令读写冲突。
2.主处理器通过RCI接口的指令请求通道将32位custom指令派发给协处理器。派发的指令包含了操作码,功能码和两个源操作数,功能码用于识别指令名称。
3.协处理器通过请求通道接收指令后,需要对指令进一步译码,并执行实际的操作。主处理器和协处理器采用同步握手,协处理器能够连续接受多条指令,主处理器可以先后连续发送多条指令置协处理器。
4.协处理器在执行完指令后,通过RCI接口的指令反馈通道将结果返回主处理器。如果协处理器执行了多条指令,需要保证反馈通道中反馈结果的顺序须与请求指令的顺序一致。对于需要写回结果的指令,返回通道中还需要传输计算结果的值。
5.主处理器接收到反馈结果后,将结果写回目的寄存器,指令从流水线中退出。
对于数据处理的需求,协处理器也需要访问主处理器能够寻址的存储器空间。通过RCI接口,协处理器可以通过custom指令访问指令存储器,数据存储器,***总线等。custom指令对存储器的访问机制指定如下:
1.主处理器的load-store unit为RCI协处理器设计基于专用总线的访问通道。
2.协处理器对通过RCI接口发过来的指令译码后,如果需要访问存储器,应该通知主处理器阻止其他指令访问存储器以免发生资源竞争而死锁。
3.协处理器访问存储器是通过数据请求通道向主处理器的load-store unit发起请求。数据请求信息包括访问的存储器地址,读或者写标志。对于读操作,则通过load-store单元对存储器进行一次4字节对齐的读操作;对于写操作,则load-store单元通过数据请求通道中rci_request_mem_dat控制写入的数据。
4.主处理器load-store unit完成存储器读写后,通过数据反馈通道向协处理器反馈。对于读操作,数据反馈通道中的信息包括读取的数据和本次操作的错误标志。对于写操作,数据反馈通道中的信息包括本次操作的错误标志。
5.主处理器的load-store unit和协处理器采用同步握手接口,只要主处理器的load-store unit能够连续进行存储器读写操作,则协处理器支持连续的存储器读写请求。
6.协处理器完成读写请求后,主处理器释放协处理器请求的存储器资源,允许接收其它指令的读写请求。
(三)协处理器部分:
如图1所示,协处理器实现机制如下:
S1:使用SETUP-KERNEL指令指定运算需要的卷积核,控制模块根据参数,将卷积核复制到协处理器内部缓冲区;这样可以避免每次去读取卷积核。
S2:使用SETUP-MATRIX指令指定运算的矩阵块,并将矩阵块复制到协处理器内部缓冲区;之后开始执行计算;指令会触发协处理器从存储器逐个读取矩阵块的元素,并与卷积核元素进行相乘并累加。当读取完整矩阵块最后一个元素后,整个累加和也计算完毕。对于执行计算的矩阵块中与前次计算的矩阵块中重复的元素,协处理器可以在内部直接重复利用,减少访问外部存储器次数,提高处理效率。
S3:使用CONVOLUTION指令将计算结果返回;
S4:重复执行步骤S2-S3,直至将源矩阵计算完毕,输出一张完整的卷积矩阵。
对于源矩阵,在处理之前,应用程序需要对矩阵进行边缘扩展,可采用边缘复制的方式。这样可以降低协处理器设计的复杂度,无需协处理器特殊处理源矩阵的边缘元素。
协处理器如果需要访问存储器,则通知主处理器阻止其他指令访问存储器。
以上仅是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (16)

1.一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,包括基于RISC-V架构定义用于矩阵卷积计算的三条指令:定义用于指定需要运算的卷积核的SETUP-KERNEL指令、用于指定需要运算的矩阵块并执行卷积计算的SETUP-MATRIX指令和用于取回卷积计算结果的CONVOLUTION指令;所述三条指令定义选用同一个Custom指令组;
定义SETUP-KERNEL指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为卷积核在内存中的首地址,操作数rs2的值为矩阵大小N;
定义SETUP-MATRIX指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待处理矩阵块在存储器中的首地址,待处理矩阵块为源矩阵中,大小等于卷积核,用于单次计算的输入矩阵,操作数rs2的值为行距;
定义CONVOLUTION指令的方法为:定义指令有写回结果,指令执行的结果存放在rd索引的通用寄存器中,指令不需读取操作数rs1、rs2。
2.根据权利要求1所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,还包括基于RISC-V架构定义的指令在RCI接口中的执行方法:
主处理器在译码器中判断当前指令的操作码opcode是否属于custom指令组;如果是,则依据32位指令的xs1和xs2标识位继续判断是否需要读取源操作数rs1和rs2;根据需求读取源操作数;
主处理器通过RCI接口的指令请求通道将32位custom指令派发给协处理器,派发的指令包含了操作码、功能码和两个源操作数;
协处理器通过指令请求通道接收指令后,对指令进一步译码,并执行实际的操作;主处理器和协处理器采用同步握手,协处理器能够连续接受多条指令,主处理器可以先后连续发送多条指令至协处理器;
协处理器在执行完指令后,通过RCI接口的指令反馈通道将结果返回主处理器;对于需要写回结果的指令,数据反馈通道中还传输计算结果的值;
主处理器接收到反馈结果后,将结果写回目的寄存器,指令从流水线中退出。
3.根据权利要求2所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,所述根据需求读取源操作数具体还包括:主处理器维护数据的一致性,保证读取源操作数时不存在与其他指令读写冲突;协处理器完成读写请求后,主处理器释放协处理器请求的存储器资源,允许接收其它指令的读写请求。
4.根据权利要求2所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,所述协处理器对指令进一步译码后,如果需要访问存储器,则通过数据请求通道向主处理器的load-store单元发起数据请求;数据请求信息包括访问的存储器地址、读或者写标志;对于读操作,则通过load-store单元对存储器进行一次4字节对齐的读操作;对于写操作,则load-store单元通过数据请求通道中rci_request_mem_dat信号控制写入的数据。
5.根据权利要求2所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,所述主处理器和协处理器采用同步握手具体包括:只要主处理器的load-store单元能够连续进行存储器读写操作,则协处理器支持连续的存储器读写请求。
6.根据权利要求2所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,还包括:主处理器的load-store单元完成存储器读写操作后,通过数据反馈通道向协处理器反馈;对于读操作,数据反馈通道中的信息包括读取的数据和本次操作的错误标志;对于写操作,数据反馈通道中的信息包括本次操作的错误标志。
7.根据权利要求1所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,还包括基于RISC-V架构定义的指令在协处理器中的执行方法:
S1:使用SETUP-KERNEL指令指定运算需要的卷积核,控制模块根据参数,将卷积核复制到协处理器内部缓冲区;
S2:使用SETUP-MATRIX指令指定运算的矩阵块,并将矩阵块复制到协处理器内部缓冲区;之后开始执行计算;根据SETUP-MATRIX指令触发协处理器从存储器逐个读取矩阵块的元素,并与矩阵核元素进行相乘并累加;当读取完整矩阵块最后一个元素后,整个累加和也计算完毕;
S3:使用CONVOLUTION指令将计算结果返回;
S4:重复执行步骤S2-S3,直至将源矩阵计算完毕,输出一张完整的卷积矩阵。
8.根据权利要求7所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,所述步骤S2还包括:对于执行计算的矩阵块中与前次计算的矩阵块中重复的元素,协处理器在内部直接重复利用。
9.根据权利要求7所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,在处理源矩阵之前,应用程序对矩阵进行边缘扩展。
10.根据权利要求7所述的一种基于RISC-V架构的矩阵卷积计算方法,其特征在于,还包括:协处理器如果需要访问存储器,则通知主处理器阻止其他指令访问存储器。
11.一种实施权利要求1-10中任一项所述计算方法的基于RISC-V架构的矩阵卷积计算RCI接口,其特征在于,包括:
指令请求通道,用于将主处理器在指令执行单元基于RISC-V架构定义的用于矩阵卷积计算的指令和源操作数派发给协处理器;
指令反馈通道,用于将协处理器的指令执行结果通知主处理器,并将结果写回主处理器;
数据请求通道,用于向主处理器发送协处理器的存储器读写请求;
数据反馈通道,用于将主处理器的存储器读写结果向协处理器反馈。
12.根据权利要求11所述的一种基于RISC-V架构的矩阵卷积计算RCI接口,其特征在于,所述指令请求通道定义了以下信号:
rci_request_valid信号,位宽为1,用于主处理器向协处理器发送指令请求信号;
rci_request_ack信号,位宽为1,用于协处理器向主处理器反馈指令接收信号;
rci_request_custom信号,位宽为32,用于传输完整的32位custom指令;
rci_request_rs1信号,位宽为32,用于向协处理器传输源操作数1;
rci_request_rs2信号,位宽为32,用于向协处理器传输源操作数2;
指令反馈通道定义了以下信号:
rci_response_valid信号,位宽为1,用于协处理器向主处理器发送反馈请求信号;
rci_response_ack信号,位宽为1,用于主处理器向协处理器反馈接收信号;
rci_response_rst信号,位宽为32,用于返回计算结果;
rci_response_err信号,位宽为1,用于指示指令执行错误状态;
数据请求通道定义了以下信号:
rci_request_mem_valid信号,位宽为1,用于协处理器向主处理器发送存储器读写请求信号;
rci_request_mem_ack信号,位宽为1,用于主处理器向协处理器反馈读写接收信号;
rci_request_mem_addr信号,位宽32,用于派发存储器地址;
rci_request_mem_dat信号,位宽32,用于传输写入的数据;
rci_request_mem_rw信号,位宽1,用于指示读或写信号;
数据反馈通道定义了以下信号:
rci_response_mem_valid信号,位宽为1,用于主处理器向协处理发送存储器读写反馈请求信号;
rci_response_mem_ack信号,位宽为1,用于协处理器向主处理器发送存储器读写反馈信号;
rci_response_mem_dat信号,位宽为32,用于传输存储器读的数据;
rci_response_mem_err信号,位宽为1,用于指令读写反馈错误状态。
13.一种实施权利要求1-10中任一项所述计算方法的基于RISC-V架构的矩阵卷积计算的协处理器,其特征在于,包括控制模块、矩阵计算单元和内部缓冲区;
控制模块用于指定运算需要的卷积核、根据指令将卷积核复制到内部缓冲区、逐个读取矩阵块的元素、指定运算的矩阵块,并将矩阵块复制到内部缓冲区,将矩阵计算单元的计算结果返回,在矩阵计算单元计算完毕后输出一张完整的卷积矩阵;
矩阵计算单元用于执行源矩阵的卷积计算,将内部缓冲区的矩阵块元素与卷积核元素进行相乘并累加。
14.根据权利要求11所述的一种基于RISC-V架构的矩阵卷积计算的协处理器,其特征在于,所述控制模块使用SETUP-KERNEL指令指定运算需要的卷积核,使用SETUP-MATRIX指令指定运算的矩阵块,使用CONVOLUTION指令将计算结果返回;根据SETUP-MATRIX指令触发从存储器逐个读取矩阵块的元素。
15.一种实施权利要求1-10中任一项所述计算方法的基于RISC-V架构的矩阵卷积计算***,其特征在于,包括协处理器、主处理器、用于在主处理器和协处理器之间传输请求及反馈的RCI接口;
主处理器包括用于解析、执行指令的指令执行单元和用于为协处理器提供基于专用总线的访问通道的load-store单元;
协处理器包括控制模块、矩阵计算单元和内部缓冲区;
控制模块用于指定运算需要的卷积核、根据指令将卷积核复制到内部缓冲区、逐个读取矩阵块的元素、指定运算的矩阵块,并将矩阵块复制到内部缓冲区,将矩阵计算单元的计算结果返回,在矩阵计算单元计算完毕后输出一张完整的卷积矩阵;
矩阵计算单元用于执行源矩阵的卷积计算,将内部缓冲区的矩阵块元素与卷积核元素进行相乘并累加。
16.根据权利要求15所述的一种基于RISC-V架构的矩阵卷积计算***,其特征在于,所述RCI接口包括:
指令请求通道,用于将主处理器在指令执行单元基于RISC-V架构定义的用于矩阵卷积计算的指令和源操作数派发给协处理器;
指令反馈通道,用于将协处理器的指令执行结果通知主处理器,并将结果写回主处理器;
数据请求通道,用于向主处理器发送协处理器的存储器读写请求;
数据反馈通道,用于将主处理器的存储器读写结果向协处理器反馈。
CN201910125953.3A 2019-02-20 2019-02-20 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** Active CN109857460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910125953.3A CN109857460B (zh) 2019-02-20 2019-02-20 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910125953.3A CN109857460B (zh) 2019-02-20 2019-02-20 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及***

Publications (2)

Publication Number Publication Date
CN109857460A true CN109857460A (zh) 2019-06-07
CN109857460B CN109857460B (zh) 2021-09-21

Family

ID=66898444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910125953.3A Active CN109857460B (zh) 2019-02-20 2019-02-20 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及***

Country Status (1)

Country Link
CN (1) CN109857460B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443214A (zh) * 2019-08-12 2019-11-12 山东浪潮人工智能研究院有限公司 一种基于risc-v的人脸识别加速电路***及加速方法
CN110490311A (zh) * 2019-07-08 2019-11-22 华南理工大学 基于risc-v架构的卷积神经网络加速装置及其控制方法
CN110502278A (zh) * 2019-07-24 2019-11-26 福州瑞芯微电子股份有限公司 基于RiscV扩展指令的神经网络协处理器及其协处理方法
CN111078287A (zh) * 2019-11-08 2020-04-28 苏州浪潮智能科技有限公司 一种向量运算协处理方法与装置
CN111126583A (zh) * 2019-12-23 2020-05-08 中国电子科技集团公司第五十八研究所 一种通用神经网络加速器
CN111159094A (zh) * 2019-12-05 2020-05-15 天津芯海创科技有限公司 一种基于risc-v的近数据流式计算加速阵列
CN111240457A (zh) * 2020-01-17 2020-06-05 济南浪潮高新科技投资发展有限公司 一种基于risc-v的动态功耗管理方法
CN111400986A (zh) * 2020-02-19 2020-07-10 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理***
CN111507336A (zh) * 2020-03-18 2020-08-07 杭州电子科技大学 基于risc-v的卷积神经网络的文字识别方法
CN112200305A (zh) * 2020-09-30 2021-01-08 中国电力科学研究院有限公司 一种神经网络加速协处理器、处理***及处理方法
CN112257843A (zh) * 2020-09-23 2021-01-22 浙江大学 一种基于MobileNetV1网络推理任务的扩展指令集的***
CN112256330A (zh) * 2020-11-03 2021-01-22 中国人民解放军军事科学院国防科技创新研究院 用于加速数字信号处理的risc-v指令集扩展方法
CN112306660A (zh) * 2020-11-05 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种基于risc-v协处理器的数据处理方法及***
WO2021093582A1 (zh) * 2019-11-11 2021-05-20 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
CN112988238A (zh) * 2021-05-06 2021-06-18 成都启英泰伦科技有限公司 一种基于可扩展指令集cpu内核的扩展运算装置及方法
JP2021111313A (ja) * 2019-12-31 2021-08-02 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド 情報処理用方法及び装置
CN113220225A (zh) * 2021-04-06 2021-08-06 浙江大学 Risc-v处理器的内存数据读写方法及装置、处理器、存储介质
CN114548390A (zh) * 2022-02-25 2022-05-27 电子科技大学 一种基于risc-v和神经形态计算的异构架构处理***

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898769B2 (en) * 2002-10-10 2005-05-24 International Business Machines Corporation Decoupling capacitor sizing and placement
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN108108809A (zh) * 2018-03-05 2018-06-01 山东领能电子科技有限公司 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN108133267A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为最后级高速缓存片或神经网络单元存储器操作的存储器阵列的处理器
CN108268932A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 神经网络单元
CN108805222A (zh) * 2018-05-08 2018-11-13 南京邮电大学 一种基于arm平台的深度学习数字手写体识别方法
WO2018211129A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to improve convolution efficiency
CN109144573A (zh) * 2018-08-16 2019-01-04 胡振波 基于risc-v指令集的二级流水线架构
CN109213147A (zh) * 2018-08-01 2019-01-15 上海交通大学 一种基于深度学习的机器人避障轨迹规划方法及***

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898769B2 (en) * 2002-10-10 2005-05-24 International Business Machines Corporation Decoupling capacitor sizing and placement
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN108133267A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为最后级高速缓存片或神经网络单元存储器操作的存储器阵列的处理器
CN108268932A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 神经网络单元
WO2018211129A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to improve convolution efficiency
CN108108809A (zh) * 2018-03-05 2018-06-01 山东领能电子科技有限公司 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN108805222A (zh) * 2018-05-08 2018-11-13 南京邮电大学 一种基于arm平台的深度学习数字手写体识别方法
CN109213147A (zh) * 2018-08-01 2019-01-15 上海交通大学 一种基于深度学习的机器人避障轨迹规划方法及***
CN109144573A (zh) * 2018-08-16 2019-01-04 胡振波 基于risc-v指令集的二级流水线架构

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨维科: "基于Rocket_Chip开源处理器的CNN加速模块的设计及实现", 《微电子学与计算机》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110490311A (zh) * 2019-07-08 2019-11-22 华南理工大学 基于risc-v架构的卷积神经网络加速装置及其控制方法
CN110502278A (zh) * 2019-07-24 2019-11-26 福州瑞芯微电子股份有限公司 基于RiscV扩展指令的神经网络协处理器及其协处理方法
CN110502278B (zh) * 2019-07-24 2021-07-16 瑞芯微电子股份有限公司 基于RiscV扩展指令的神经网络协处理器及其协处理方法
CN110443214A (zh) * 2019-08-12 2019-11-12 山东浪潮人工智能研究院有限公司 一种基于risc-v的人脸识别加速电路***及加速方法
CN110443214B (zh) * 2019-08-12 2022-03-01 山东浪潮科学研究院有限公司 一种基于risc-v的人脸识别加速电路***及加速方法
CN111078287A (zh) * 2019-11-08 2020-04-28 苏州浪潮智能科技有限公司 一种向量运算协处理方法与装置
CN111078287B (zh) * 2019-11-08 2022-07-19 苏州浪潮智能科技有限公司 一种向量运算协处理方法与装置
WO2021093582A1 (zh) * 2019-11-11 2021-05-20 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
CN111159094A (zh) * 2019-12-05 2020-05-15 天津芯海创科技有限公司 一种基于risc-v的近数据流式计算加速阵列
CN111126583A (zh) * 2019-12-23 2020-05-08 中国电子科技集团公司第五十八研究所 一种通用神经网络加速器
JP2021111313A (ja) * 2019-12-31 2021-08-02 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド 情報処理用方法及び装置
JP6998991B2 (ja) 2019-12-31 2022-01-18 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド 情報処理用方法及び装置
CN111240457B (zh) * 2020-01-17 2023-07-21 山东浪潮科学研究院有限公司 一种基于risc-v的动态功耗管理方法
CN111240457A (zh) * 2020-01-17 2020-06-05 济南浪潮高新科技投资发展有限公司 一种基于risc-v的动态功耗管理方法
CN111400986B (zh) * 2020-02-19 2024-03-19 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理***
CN111400986A (zh) * 2020-02-19 2020-07-10 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理***
CN111507336A (zh) * 2020-03-18 2020-08-07 杭州电子科技大学 基于risc-v的卷积神经网络的文字识别方法
CN112257843A (zh) * 2020-09-23 2021-01-22 浙江大学 一种基于MobileNetV1网络推理任务的扩展指令集的***
CN112257843B (zh) * 2020-09-23 2022-06-28 浙江大学 一种基于MobileNetV1网络推理任务的扩展指令集的***
CN112200305A (zh) * 2020-09-30 2021-01-08 中国电力科学研究院有限公司 一种神经网络加速协处理器、处理***及处理方法
CN112256330B (zh) * 2020-11-03 2021-11-09 中国人民解放军军事科学院国防科技创新研究院 用于加速数字信号处理的risc-v指令集扩展方法
CN112256330A (zh) * 2020-11-03 2021-01-22 中国人民解放军军事科学院国防科技创新研究院 用于加速数字信号处理的risc-v指令集扩展方法
CN112306660A (zh) * 2020-11-05 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种基于risc-v协处理器的数据处理方法及***
CN113220225B (zh) * 2021-04-06 2022-04-12 浙江大学 Risc-v处理器的内存数据读写方法及装置、处理器、存储介质
CN113220225A (zh) * 2021-04-06 2021-08-06 浙江大学 Risc-v处理器的内存数据读写方法及装置、处理器、存储介质
CN112988238A (zh) * 2021-05-06 2021-06-18 成都启英泰伦科技有限公司 一种基于可扩展指令集cpu内核的扩展运算装置及方法
CN114548390A (zh) * 2022-02-25 2022-05-27 电子科技大学 一种基于risc-v和神经形态计算的异构架构处理***

Also Published As

Publication number Publication date
CN109857460B (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
CN109857460A (zh) 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及***
CN105247484B (zh) 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US10204055B2 (en) System and methods for expandably wide processor instructions
US10515049B1 (en) Memory circuits and methods for distributed memory hazard detection and error recovery
CN109213723A (zh) 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和***
CN109522254A (zh) 运算装置及方法
US20190004955A1 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
CN109643233B (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
CN102750133B (zh) 支持simd的32位三发射的数字信号处理器
US20190004945A1 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
CN110018850A (zh) 用于可配置空间加速器中的多播的设备、方法和***
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
KR20170096105A (ko) 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치
KR20170099848A (ko) 컨볼루션 연산을 수행하기 위한 저장 디바이스 및 방법
CN107766079B (zh) 处理器以及用于在处理器上执行指令的方法
US11403104B2 (en) Neural network processor, chip and electronic device
CN108205448B (zh) 具有在每个维度上可选择的多维循环寻址的流引擎
US20220043770A1 (en) Neural network processor, chip and electronic device
CN108205447A (zh) 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎
CN113312303B (zh) 处理器微架构***、SoC芯片及低功耗智能设备
CN104049937A (zh) 裸露向量管线之间的链接
WO2023092620A1 (zh) 基于risc-v的三维互联众核处理器架构及其工作方法
CN105373367A (zh) 支持标向量协同工作的向量simd运算结构
CN100489830C (zh) 面向科学计算的64位流处理器芯片

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