CN110018848B - 一种基于risc-v的混合混算系统及方法 - Google Patents
一种基于risc-v的混合混算系统及方法 Download PDFInfo
- Publication number
- CN110018848B CN110018848B CN201811144784.XA CN201811144784A CN110018848B CN 110018848 B CN110018848 B CN 110018848B CN 201811144784 A CN201811144784 A CN 201811144784A CN 110018848 B CN110018848 B CN 110018848B
- Authority
- CN
- China
- Prior art keywords
- information
- data
- instruction
- mixing
- mixed
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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
Abstract
本发明公开了一种基于RISC‑V的混合混算系统及方法,其中,系统包括指令控制模块和混合混算模块,所述指令控制模块内设有扩展指令,所述扩展指令内报含有操作信息;所述指令控制模块用于依次自动设置运算数据和操作信息后,将运算数据和操作信息通过扩展指令传输至混合混算模块;所述混合混算模块用于根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果。本发明通过单扩展指令实现复杂的混合运算,简化了基于RISC‑V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;使反汇编机器码更简洁明了;减少因多次循环运算带来的时间消耗,提高系统的性能,可广泛应用于通信技术领域。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于RISC-V的混合混算系统及方法。
背景技术
RISC-V是加州大学伯克利分校设计并发布的一种开源指令集架构。RISC-V的授权模式为BSD模块,自2014年正式发布后,不论是学校还是企业都纷纷加入了RISC-V的研究中,国内外的知名学府与研究机构有剑桥大学、苏黎世联邦理工大学、印度理工学院和中国科学院,而知名企业有谷歌和IBM等。围绕RISC-V的生态环境逐渐完善,并涌现出众多的开源处理器及SOC。基于RISC-V的开源处理器有:Rocket、BOOM、Z-scale、RI5CY、ZERO-RISCY、蜂鸟E200、ORCA、SCR系列、YARVI、FlexPRET、PicoRV32、SHAKTI、VexRiscv和SiFive等。而SOC则有:Freedom、LowRISC、RISC-V VHDL、PULPino系列和蜂鸟E200系列的SOC。
虽然已有大量关于RISC-V的研究,但这些研究更多是偏向于指令集的开发和处理器的研究上,而基于指令控制模块的协处理模块还没有被深入地发掘。RISC-V是开源的指令集,为了使指令集简洁高效,对指令集实行了模块化。用47条基本指令实现基本指令集,后缀为I,任何一款采用RISC-V架构的处理器都必须要实现基本指令集。同时RISC-V还包含多种指令控制模块集,M为乘除法指令集、A原子操作指令集、F单精度浮点指令集、D双精度浮点指令集、Q四精度浮点指令集和C压缩指令集。如果实现的指令集包含IMAFD,则可以使用G来表示该处理器支持的指令集形式。同时RISC-V指令集预留了4条自定义指令,用于定制专用的处理模块和特殊的软件环境,从而使处理器特定化。RISC-V指令集的特点是简洁和干净,而RISC-V的SIMD(single instruction multiple data)指令还在定制中,所以该指令集中暂时不会包含类似乘加这类复杂的运算,同时也不会包含循环乘加和指数运算。RISC-V还在定制P DSP指令集和V矢量指令集,虽然P和V指令控制模块集完成定制后会有乘加操作的指令,但循环乘加和指数函数这类更为复杂的操作是无法使用单指令完成的。
发明内容
为了解决上述技术问题,本发明的目的是提供一种通过单指令即可完成复杂的混合混算的系统。
本发明的另一目的是提供一种一种通过单指令即可完成复杂的混合混算的方法。
本发明所采用的技术方案是:
一种基于RISC-V的混合混算系统,包括指令控制模块和混合混算模块,所述指令控制模块内设有基于RISC-V自定义的扩展指令,所述扩展指令内报含有操作信息;
所述指令控制模块用于依次自动设置运算数据和操作信息后,将运算数据和操作信息通过扩展指令传输至混合混算模块;
所述混合混算模块用于根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果。
进一步,所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
进一步,所述指令控制模块通过以下方式依次设置扩展指令:
将扩展指令的操作信息设置为第一信息后,将扩展指令发送至混合混算模块;
接收到混合混算模块发送的第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,并将扩展指令发送至混合混算模块;
接收到混合混算模块发送的第二反馈信息后,将扩展指令的操作信息设置为第四信息,并将扩展指令发送至混合混算模块。
进一步,所述混合混算模块接收到操作信息后进行如下判断运算:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
进一步,所述混合混算模块上设有信号接口,当混合混算模块进行混合运算时,实时通过信号接口向指令控制模块发送运算状态信号。
本发明所采用的另一技术方案是:
一种基于RISC-V的混合混算方法,包括以下步骤:
依次自动设置扩展指令的运算数据和操作信息后,将运算数据和操作信息通过扩展指令进行传输;
根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果。
进一步,所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
进一步,所述依次自动设置扩展指令的操作信息后,将操作信息通过扩展指令进行传输的步骤,具体包括以下步骤:
将扩展指令的操作信息设置为第一信息后,通过扩展指令传输第一信息;
获得第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,并通过扩展指令传输第二信息或第三信息;
获得第二反馈信息后,将扩展指令的操作信息设置为第四信息,并通过扩展指令传输第四信息。
进一步,所述根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果的步骤,具体包括以下步骤:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
进一步,在进行运算时,包括以下步骤:
实时通过信号接口发送运算状态信号。
本发明的有益效果是:本发明通过单扩展指令实现复杂的混合运算,简化了基于RISC-V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;减少了反汇编机器码的容量,使反汇编机器码更简洁明了;减少因多次循环运算带来的时间消耗,提高系统的性能。
附图说明
图1是本发明一种基于RISC-V的混合混算系统的结构框图;
图2是本发明一种基于RISC-V的混合混算方法的步骤流程图;
图3是混合混算模块的判断操作步骤流程图。
具体实施方式
实施例一
如图1所示,一种基于RISC-V的混合混算系统,包括指令控制模块和混合混算模块,所述指令控制模块内设有基于RISC-V自定义的扩展指令,所述扩展指令内报含有操作信息;
所述指令控制模块用于依次自动设置运算数据和操作信息后,将运算数据和操作信息通过扩展指令传输至混合混算模块;
所述混合混算模块用于根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果。
上述系统的工作原理为:本发明通过设置自定义的扩展指令,并通过扩展指令来控制混合混算模块的运算执行步骤,实现单指令完成复杂的混合运算,简化了基于RISC-V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;减少了反汇编机器码的容量,使反汇编机器码更简洁明了;减少因多次循环运算带来的时间消耗,提高系统的性能。
进一步作为优选的实施方式,所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
进一步作为优选的实施方式,所述指令控制模块通过以下方式依次设置扩展指令:
将扩展指令的操作信息设置为第一信息后,将扩展指令发送至混合混算模块;
接收到混合混算模块发送的第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,并将扩展指令发送至混合混算模块;
接收到混合混算模块发送的第二反馈信息后,将扩展指令的操作信息设置为第四信息,并将扩展指令发送至混合混算模块。
进一步作为优选的实施方式,所述混合混算模块接收到操作信息后进行如下判断运算:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
进一步作为优选的实施方式,所述混合混算模块上设有信号接口,当混合混算模块进行混合运算时,实时通过信号接口向指令控制模块发送运算状态信号。
以下结合具体实施例对上述系统进行详细说明。
(1)自定义扩展指令的指令部分采用32位的指令长度,指令内容包括指令操作码(opcode)、目标寄存器、操作函数、源寄存器1、源寄存器2和数值,其中数值可复用为底数(base)和指数(index)部分。具体指令内容如表1所示。操作码采用RISC-V自定义扩展指令1,默认为7位的16进制数(0x2b);目标寄存器、源寄存器1和源寄存器2的位宽均为5位;操作函数(funct)是位宽为3位,具有8种不同的操作;数值为指令的31至25位,位宽共7位,在不同操作中数值的前4位和后3位具有不同的意义。
表1
31 28 | 27 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 |
base/num[6:3] | index/num[2:0] | rs2 | rs1 | funct | rd | opcode |
4bits | 3bits | 5bits | 5bits | 3bits | 5bits | 7’b0101011(2b) |
(2)混合混算模块的操作内容由操作函数的值决定,也即由操作信息决定,操作函数的值的位宽为3位,操作函数包含8种操作,不同的数值代表不同的操作。操作3-6作为预留操作,留给其他复杂的混合混算,而操作0为数据装载,操作1为单次乘加/循环乘加/单次乘减/循环乘减/指数运算,且读出运算结果的低32位数据,操作2为括号优先运算,操作7为读取高32位的运算结果值。操作1和操作2的混合混算数据为定点无符号数据。其中,操作0为第一信息,操作1为第二信息,操作2为第三信息,操作7为第四信息。
(3)操作1为先乘后加/先乘后减操作,其具体混算公式为Y0=A*B+C-D和Yn+1==Yn*B+C-D,操作2为先括号后乘法操作,其具体混算公式为Y0=A*(B+C-D)和Yn+1==Yn*(B+C-D),A、B、C和D分别来着于源寄存器rs1和rs2,目标寄存器rd的值为Y的结果,A和B通过操作0进行数据装载,C和D则通过操作1或操作2进行数据装载。
(4)无论是操作1还是操作2,若为单次操作,则不需要使用数值(num),若为多次操作,数值(num)为多次循环的依据,循环的次数为(EF+G)次,E为底数值,底数不可为0,F为指数值,G为尾数值,E和F通过操作0进行数据装载,G通过操作1/2进行数据装载。多次循环操作时,下一次的B、C、D、E、F和G的值是不变的,A的值将代入上一次运算的Y值,直至运算次数完成。
(5)混合混算模块具体功能由混算公式(Y0=A*B+C-D与Yn+1==Yn*B+C-D或Y0=A*(B+C-D)与Yn+1==Yn*(B+C-D))和循环次数(EF+G)组成,具体的功能如表2所示。
表2
(6)在使用混合混算模块时,操作的顺序必须是操作0-操作1-操作7或操作0-操作2-操作7,若不进行操作0的数据装载,则采用A、B、E、F的默认值进行混合混算,结果为循环(G+1)次的减法运算。A、B、E、F的默认值为0、0、1、0。
(7)单次乘加/乘减操作需要运行的操作顺序为操作0-操作1-操作7,A为被乘数,B为乘数,C为加数,D为减数,而E为默认值1,F为默认值0,G为默认值0,先算乘法后算加减法,操作1运行完后得到的Y值为低32位的数据,然后运行操作7读出运算结果的高32位数据。
(8)单次括号操作需要运行的操作顺序为操作0-操作2-操作7,A为被乘数,B为乘数,C为加数,D为减数,而E为默认值1,F为默认值0,G为默认值0,先算加减法后算乘法,操作2运行完后得到的Y值为低32位的数据,然后运行操作7读出运算结果的高32位数据。
(9)多次乘加/乘减操作需要运行的操作顺序为操作0-操作1-操作7,A为被乘数,B为乘数,C为加数,D为减数,而E为底数,F为指数,G为尾数,由E、F、G能组成任意次数,先算乘法后算加减法,操作1运行完后得到的Y值为低32位的数据,然后运行操作7读出运算结果的高32位数据。
(10)多次括号操作需要运行的操作顺序为操作0-操作2-操作7,A为被乘数,B为乘数,C为加数,D为减数,而E为底数,F为指数,G为尾数,由E、F、G能组成任意次数,先算加减后算乘法,操作2运行完后得到的Y值为低32位的数据,然后运行操作7读出运算结果的高32位数据。
(11)指数运算中,A为被乘数,B为乘数,且A=B,同时C和D均为0,有E、F和G组成指数的值。
(12)混合混算模块的操作判断图如图3所示。
(13)当操作为单次操作时,模块的运行时间为单周期;但操作为多次操作时,模块的运行时间为多周期,在运算期间混合混算模块会提供一个忙信号告诉上级处理器混合混算模块当前处理中,不接收新的指令请求。同时当指令控制模块发送操作请求后,混合混算模块会根据运算的情况回应指令控制模块的请求,即混合混算模块计算完毕后会回应处理的请求,在此之前混合混算模块会一直处于忙的状态,同时会拒绝接收指令控制模块新的操作指令。表3为混合混算模块全部的接口信号。
表3
通过上述系统,可获得至少三个主要的有益效果:
1、简化了基于RISC-V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;
2、减少了反汇编机器码的容量,使反汇编机器码更简洁明了;
3、减少因多次循环运算带来的时间消耗,提高系统的性能。
3点优点的依据和原因将结合以下两段代码说明。下面的两段代码均为反汇编的机器码,第一段是采用本发明的RISC-V自定义的扩展指令完成的,而第二段是采用RISC-V基本指令集I和乘除法指令集M完成的。由第一段机器码中可知自定义扩展指令是没有具体的命名的,是直接采用数据来进行表示。对比两段代码,混合混算在第一段机器码中,只需要1条操作指令则能完成相应的乘加操作,而第二段的机器码中,需要用到乘法的mul指令,加法的addi和add指令,还有判断的bne指令。因此减少了反汇编机器码的容量,使反汇编机器码更简洁明了,同时基于RISC-V自定义扩展的机器码只需要一条指令则能完成了混合混算的复杂操作,采用基本指令集I和乘除法指令集M的则需要多条指令来完成多次的乘加操作。在运算时间上,采用RISC-V自定义扩展指令混合混算模块的单次乘加操作需要1个时钟,若循环乘加1000000次,则基于RISC-V自定义扩展指令混合混算模块的运算时间为1000000个时钟周期,加上装载数据、读高32位数据和各种赋值指令,运算时间会在1000000个时钟周期上有所添加。若采用RISC-V基本指令集I和乘除法指令集M完成1000000次乘加操作的话,单次乘加运算需要用4条指令完成,分别为mul、addi、add和bne,每条指令为单时钟周期,则总共需要4000000个时钟周期,在时间消耗上会大大增加。因此基于RISC-V自定义扩展指令的混合混算模块减少了因多次循环运算带来的时间消耗,大大提高了系统的性能。
第一段机器码:
第二段机器码:
实施例二
如图2所示,一种基于RISC-V的混合混算方法,包括以下步骤:
S1、依次自动设置扩展指令的运算数据和操作信息后,将运算数据和操作信息通过扩展指令进行传输。
S2、根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果。
上述方法,通过设置自定义的扩展指令,并通过扩展指令来控制混合混算模块的运算执行步骤,实现单指令完成复杂的混合运算,简化了基于RISC-V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;减少了反汇编机器码的容量,使反汇编机器码更简洁明了;减少因多次循环运算带来的时间消耗,提高系统的性能。
进一步作为优选的实施方式,所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
具体的,步骤S1中所述依次自动设置扩展指令的操作信息后,将操作信息通过扩展指令进行传输的步骤,具体包括以下步骤:
S11、将扩展指令的操作信息设置为第一信息后,通过扩展指令传输第一信息。
S12、获得第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,并通过扩展指令传输第二信息或第三信息。
S13、获得第二反馈信息后,将扩展指令的操作信息设置为第四信息,并通过扩展指令传输第四信息。
具体的,所述步骤S2具体包括以下步骤:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
具体的,在进行运算时,包括以下步骤:
实时通过信号接口发送运算状态信号。
以下结合具体实施例对上述方法进行详细讲解。
在下面的具体实施例中,需要运行1000000次乘加循环,需要运行的实例C语言代码如下,T_U32为无符号整型数据,该代码的具体功能是运行Y=A*B+C-D,计算的次数为NUM0[6:3]^NUM0[2:0]+NUM1[6:0]。通过do_mix_muladd()函数实现多次乘加的调用,输入A,B,C,D,NUM0和NUM1完成参数的配置。
具体代码如下:
基于上述代码的具体执行步骤如下:
(1)指令控制模块会先将十进制的4、3、166和0存入a1、a2、a3和a4寄存器中,然后再将全部寄存器的值通过RISC-V自定义扩展指令传至混合混算模块中,第一次的自定义扩展指令操作为操作0,即操作信息为第一信息,混合混算模块进行A、B、E和F的装载,即A=4,B=3,E=10和F=6,E和F是要通过二进制转十进制的转换,166的二进制为10100110(b),10的二进制为1010(b),6的二进制为0110(b)。
(2)混合混算模块回应指令控制模块的操作1请求(发送第一反馈信息),并将数据存入相应的寄存器中。
(3)指令控制模块再将2、1、0和0存入a1、a2、a3和a4寄存器中,然后再将全部寄存器的值通过RISC-V自定义扩展指令传至混合混算模块中,第二次的自定义扩展指令操作为操作1,即操作信息为第二信息,进行C、D和尾数的装载,即C=2,D=1和尾数=0。
(4)通过两次数据的装载,混合混算模块即可以开始混算,混算的公式为Y0=A*(B+C-D)和Yn+1==Yn*(B+C-D),而循环的次数为EF+G=106+0=1000000次。
(5)混合混算模块在计算期间会将mix_busy信号一直拉高,告诉指令控制模块混合混算模块处于忙的状态,因此不再接收新的操作指令。
(6)当混合混算模块完成操作1的工作后,回应指令控制模块的请求(发送第二反馈信息),并返回计算结果的低32位。
(7)指令控制模块再将0、0、0和0存入a1、a2、a3和a4寄存器中,然后再将全部寄存器的值通过RISC-V自定义扩展指令传至混合混算模块中,该自定义扩展指令操作为操作7,将之前计算结果的高32位读出。
通过上述的实施例,可清晰获知本发明方法通过自定义的单扩展指令即可实现复杂的混合运算,极大地简化了基于RISC-V指令集的处理器的一些复杂操作,简化了复杂混合混算的计算过程;减少了反汇编机器码的容量,使反汇编机器码更简洁明了;减少因多次循环运算带来的时间消耗,提高系统的性能。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (8)
1.一种基于RISC-V的混合混算系统,其特征在于,包括指令控制模块和混合混算模块,所述指令控制模块内设有基于RISC-V自定义的扩展指令,所述扩展指令内报含有操作信息;
所述指令控制模块用于依次自动设置运算数据和操作信息后,将运算数据和操作信息通过扩展指令传输至混合混算模块;
所述混合混算模块用于根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果;
所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
2.根据权利要求1所述的一种基于RISC-V的混合混算系统,其特征在于,所述指令控制模块通过以下方式依次设置扩展指令:
将扩展指令的操作信息设置为第一信息后,将扩展指令发送至混合混算模块;接收到混合混算模块发送的第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,并将扩展指令发送至混合混算模块;
接收到混合混算模块发送的第二反馈信息后,将扩展指令的操作信息设置为第四信息,并将扩展指令发送至混合混算模块。
3.根据权利要求2所述的一种基于RISC-V的混合混算系统,其特征在于,所述混合混算模块接收到操作信息后进行如下判断运算:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
4.根据权利要求3所述的一种基于RISC-V的混合混算系统,其特征在于,所述混合混算模块上设有信号接口,当混合混算模块进行混合运算时,实时通过信号接口向指令控制模块发送运算状态信号。
5.一种基于RISC-V的混合混算方法,其特征在于,包括以下步骤:
依次自动设置扩展指令的运算数据和操作信息后,将运算数据和操作信息通过扩展指令进行传输;
根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果;
所述操作信息包括第一信息、第二信息、第三信息和第四信息,所述运算方式包括数据装载、高位读取、第一混算方式和第二混算方式,所述第一信息与数据装载对应,所述第二信息与第一混算方式对应,所述第三信息与第二混算方式对应,所述第四信息与高位读取对应;
所述第一混算方式由以下公式组成:
Y0=A*B+C-D,Yn+1==Yn*B+C-D,循环次数为(EF+G);
所述第二混算方式采用以下公式进行运算:
Y0=A*(B+C-D),Yn+1==Yn*(B+C-D),循环次数为(EF+G);
其中,Y0为第一次运算的结果,Yn为上一次运算结果,Yn+1为下一次运算结果,A为第一运算数据,B为第二运算数据,C为第三运算数据,D为第四运算数据,E为底数值,F为指数值,G为尾数值。
6.根据权利要求5所述的一种基于RISC-V的混合混算方法,其特征在于,所述依次自动设置扩展指令的操作信息后,将操作信息通过扩展指令进行传输的步骤,具体包括以下步骤:
将扩展指令的操作信息设置为第一信息后,通过扩展指令传输第一信息;
获得第一反馈信息后,将扩展指令的操作信息设置为第二信息或第三信息,
并通过扩展指令传输第二信息或第三信息;
获得第二反馈信息后,将扩展指令的操作信息设置为第四信息,并通过扩展指令传输第四信息。
7.根据权利要求6所述的一种基于RISC-V的混合混算方法,其特征在于,所述根据操作信息选择对应的运算方式后,结合运算数据和选择的运算方式进行混合运算,并输出运算结果的步骤,具体包括以下步骤:
判断操作信息是否为第一信息,若是,装载第一运算数据、第二运算数据、底数值和指数值后,发送第一反馈信息至指令控制模块;反之,执行下一步;判断操作信息是否为第二信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第一混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第三信息,若是,装载第三运算数据、第四运算数据和尾数值,并结合第二混算方式和已经装载的数据进行运算后,输出运算结果的低位数据以及发送第二反馈信息至指令控制模块;反之,执行下一步;
判断操作信息是否为第四信息,并在判定操作信息为第四信息时,输出运算的高位数据。
8.根据权利要求7所述的一种基于RISC-V的混合混算方法,其特征在于,在进行运算时,包括以下步骤:
实时通过信号接口发送运算状态信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144784.XA CN110018848B (zh) | 2018-09-29 | 2018-09-29 | 一种基于risc-v的混合混算系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144784.XA CN110018848B (zh) | 2018-09-29 | 2018-09-29 | 一种基于risc-v的混合混算系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110018848A CN110018848A (zh) | 2019-07-16 |
CN110018848B true CN110018848B (zh) | 2023-07-11 |
Family
ID=67188496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811144784.XA Active CN110018848B (zh) | 2018-09-29 | 2018-09-29 | 一种基于risc-v的混合混算系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018848B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090465B (zh) * | 2019-12-19 | 2022-08-19 | 四川长虹电器股份有限公司 | 一种rv32ic指令集的译码系统及其译码方法 |
CN111258731A (zh) * | 2020-01-13 | 2020-06-09 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的多核程序调度系统及方法 |
CN112256330B (zh) * | 2020-11-03 | 2021-11-09 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
CN112947999B (zh) * | 2021-03-10 | 2022-06-28 | 超睿科技(上海)有限公司 | 一种精简指令集计算机指令功能扩展的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983162A (zh) * | 2005-09-28 | 2007-06-20 | 英特尔公司 | 具有扩展函数的混合模式浮点流水线 |
US7493470B1 (en) * | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
CN102662635A (zh) * | 2012-03-21 | 2012-09-12 | 清华大学 | 超长指令字变长指令实现方法及实现该方法的处理器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235176B2 (en) * | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
-
2018
- 2018-09-29 CN CN201811144784.XA patent/CN110018848B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493470B1 (en) * | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
CN1983162A (zh) * | 2005-09-28 | 2007-06-20 | 英特尔公司 | 具有扩展函数的混合模式浮点流水线 |
CN102662635A (zh) * | 2012-03-21 | 2012-09-12 | 清华大学 | 超长指令字变长指令实现方法及实现该方法的处理器 |
Non-Patent Citations (2)
Title |
---|
基于一种可配置可扩展处理器的MELP语音算法的改进与实现;陈双燕等;《微电子学与计算机》;20060720(第06期);全文 * |
面向网络报文转发的RISC-V压缩指令定制;吕倩茹等;《计算机工程与科学》;20180315(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110018848A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018848B (zh) | 一种基于risc-v的混合混算系统及方法 | |
CN102262525B (zh) | 基于矢量运算的矢量浮点运算装置及方法 | |
KR100470299B1 (ko) | 곱셈-누산 연산의 단일 사이클 처리 | |
JP6495220B2 (ja) | 選択可能な副精度に対して、低減された電力要求を有する浮動小数点プロセッサ | |
KR101173405B1 (ko) | 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장 | |
KR100948512B1 (ko) | 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼 | |
US20060112160A1 (en) | Floating-point number arithmetic circuit | |
JPH10124484A (ja) | データプロセッサ及びデータ処理システム | |
JPS6347874A (ja) | 算術演算装置 | |
US4208722A (en) | Floating point data processing system | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN104461449A (zh) | 基于向量指令的大整数乘法实现方法及装置 | |
CN101384989B (zh) | 在数字信号处理器中执行布斯乘法的方法和系统 | |
CN106951394A (zh) | 一种可重构定浮点通用fft处理器 | |
US8707013B2 (en) | On-demand predicate registers | |
CN109976705B (zh) | 浮点格式数据处理装置、数据处理设备及数据处理方法 | |
US20040117421A1 (en) | Methods and systems for computing floating-point intervals | |
CN202331425U (zh) | 基于矢量运算的矢量浮点运算装置 | |
JPH11327875A (ja) | 演算回路 | |
KR20080094812A (ko) | 개선된 감소 트리 회로를 갖는 부스 곱셈기 | |
US9164728B1 (en) | Ternary DSP block | |
EP2296093A2 (en) | DSP execution unit for efficient alternate modes of operation | |
US7433912B1 (en) | Multiplier structure supporting different precision multiplication operations | |
WO2019084170A1 (en) | METHOD, DEVICE AND SYSTEM FOR TASK PROCESSING | |
KR20170030327A (ko) | 연산을 제어하기 위한 장치 및 방법 |
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: 510555 No. 107 Bowen Road, Huangpu District, Guangzhou, Guangdong Applicant after: Guangzhou Ankai Microelectronics Co.,Ltd. Address before: 510663 unit 301, 302, 303, 3 / F, C1 area, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province (office use only) Applicant before: ANYKA (GUANGZHOU) MICROELECTRONICS TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |