CN114721720B - 一种指令集扩展方法、装置、电子设备及存储介质 - Google Patents
一种指令集扩展方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114721720B CN114721720B CN202210632979.9A CN202210632979A CN114721720B CN 114721720 B CN114721720 B CN 114721720B CN 202210632979 A CN202210632979 A CN 202210632979A CN 114721720 B CN114721720 B CN 114721720B
- Authority
- CN
- China
- Prior art keywords
- instruction
- type
- function
- instructions
- hyperbolic
- 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
- 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/30181—Instruction operation extension or modification
-
- 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/30098—Register arrangements
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种指令集扩展方法、装置、电子设备及存储介质,首先选择RISC‑V指令集的指令类型中的R‑type作为扩展指令的指令类型,然后根据R‑type指令的编码格式对三角函数和双曲函数进行扩展指令编码,再根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,最后针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展。充分利用RISC‑V指令集精简、可扩展的特性,将三角函数和双曲函数计算定义为R‑type指令,与RISC‑V架构已有基础指令集和硬件乘除法指令集相区分,实现三角函数和双曲函数计算的指令压缩,减少函数计算时间。
Description
技术领域
本发明涉及基于RISC-V架构的处理器技术领域,尤其是涉及一种指令集扩展方法、装置、电子设备及存储介质。
背景技术
指令集是存储在处理器内部,连接硬件与软件的接口。处理器通过从内存中读取指令、进行译码和执行操作,来完成复杂的运算任务。每个处理器都具有特定的指令集与其对应,指令集的设计直接影响处理器的性能。处理器设计中除了设定支持基本运算和控制的指令集外,还需要针对特定的应用领域设计扩展指令集。特定应用领域的指令集扩展可以化繁为简,使处理器直接根据译码信息执行,避免通过基本指令集产生复杂的运算流程,造成资源浪费。
RISC-V指令集是基于精简指令集(RISC)基础上开发的开源指令集架构(ISA),是个完全开放的、标准的、能够支持各种应用的全新指令集。RISC-V指令集包含一个指令数很少的基础指令集和一系列可选的指令集。基础指令集为整数指令集RV32I与RV64I,分别提供32位与64位的地址空间;其他的可选指令集包括乘除运算(M)、原子操作(A)、浮点运算(F)、压缩指令(C)等。RISC-V 架构在设计之初就留出了足够的可编码空间来支持第三方指令集扩展,用户可以根据特定的需求设计自定义扩展指令,通过灵活选择不同的模块组合或者进行扩展,构建适用于任何一个领域的微处理器,比如高精度计算、低功耗嵌入式等。
目前对于有三角函数、双曲函数的高级语言程序,如果目标指令集构架(ISA)支持三角函数等的机器指令(如X86),编译器则会通过将相关代码编译成ISA支持的机器指令来优化。而对于像 RISC-V这类ISA中没有三角函数和反双曲函数的机器指令支持的架构,编译器会使用标准C库,用多条机器代码实现相应的功能。三角函数和双曲函数基于RISC-V基础指令集(RV32I)进行编译时会生成几十条指令,计算时间长。而使用FPGA逻辑资源来实现三角函数及双曲函数的计算可以缩短计算时间。因此,如何对配备了CORDIC扩展指令的硬件电路进行优化,以减少计算时间、简化控制逻辑、提高运算速度、降低硬件开销,是目前亟需解决的问题。
发明内容
本发明所要解决的技术问题是如何对配备了CORDIC扩展指令的硬件电路进行优化,以减少计算时间、简化控制逻辑、提高运算速度、降低硬件开销。
为改善上述技术问题,本发明提供了一种指令集扩展方法、装置、电子设备及存储介质。
本发明实施例的第一方面,提供了一种指令集扩展方法,包括以下步骤:
选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型;
根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码;
根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令为R-type、I-type、S-type、B-type、U-type 或J-type的指令;
针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展,
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
进一步地,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令
进一步地,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,具体包括:
所述译码模块对三角函数和双曲函数扩展指令的opcode、rs1、rs2、rd、funct3和funct7信息进行译码,
其中,opcode用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
进一步地,所述方法还包括:
在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
本发明实施例的第二方面,提供了一种指令集扩展装置,包括:
指令选择单元,用于选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型;
指令编码单元,用于根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码;
指令添加单元,用于根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令为R-type、I-type、S-type、B-type、U-type 或J-type的指令;
电路扩展单元,用于针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展;
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
进一步地,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
进一步地,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,具体包括:
所述译码模块对三角函数和双曲函数扩展指令的opcode、rs1、rs2、rd、funct3和funct7信息进行译码,
其中,opcode用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
进一步地,所述装置还包括:
指令执行单元,用于在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
发明实施例的第三方面,提供了一种电子设备,其特征在于,包括:
一个或多个处理器 ;存储器 ;一个或多个应用程序, 其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如第一方面所述的方法。
本发明实施例的第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如第一方面所述的方法。
采用上述技术方案,本发明具有如下有益效果:
本发明提供的基于RISC-V架构的指令集扩展方法、装置以及处理器核,充分利用RISC-V指令集精简、可扩展的特性,将三角函数和双曲函数计算定义为R-type指令,与RISC-V架构已有基础指令集和硬件乘除法指令集相区分,实现三角函数和双曲函数计算的指令压缩,减少函数计算时间。
附图说明
图1为本发明实施例提供的指令集扩展方法的方法流程图;
图2为本发明实施例提供的R-type指令结构示意图;
图3为本发明实施例提供的三角函数和双曲函数扩展指令示意图;
图4为本发明实施例提供的三角函数和双曲函数扩展指令匹配码示意图;
图5为本发明实施例提供的装置的功能模块框图;
图6为本发明实施例的用于执行根据本申请实施例的指令集扩展方法的电子设备的结构框图。
图7是本发明实施例的用于保存或者携带实现根据本申请实施例的指令集扩展方法的程序代码的计算机可读存储介质的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语 “顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
请参阅图1,本实施例提供的基于RISC-V架构的指令集扩展方法,该方法包括:
步骤1:选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型。
RISC-V指令集的指令类型通常包括R-type、I-type、S-type、B-type、U-type 和J-type这几种,在本发明的实施例中,选择R-type作为扩展指令的指令类型。
本实施例中,所有指令的位宽为32位,三角函数和双曲函数均为计算指令,R-type(寄存器-寄存器类型)指令可以将三角函数和双曲函数的输入角度在寄存器中寄存,相较于I-type(立即数类型)指令,数据位宽更长,避免了输入精度较低造成的计算精度下降,R-type指令各个位的定义如图2所示。
步骤2:根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码。
本实施例中,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息。其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
作为本实施例的优选实施方式,rs1、rs2和rd寄存器地址位宽为5位,funct7的位宽为7位,funct3的位宽为3位,opcode的位宽为7位。
三角函数和双曲函数扩展指令如图3所示,三角函数和双曲函数扩展指令的opcode编码与R-type指令的opcode编码保持一致,定义为0110011;与RISC-V架构中硬件乘除法扩展指令的funct7(0000001)和基础指令集的funct7(0000000)相区分,三角函数和双曲函数扩展指令的funct7编码为0000010;三角函数和双曲函数扩展指令的funct3编码为000~111,000为有符号正弦指令,001为有符号余弦指令,010为无符号正弦指令,011为无符号余弦指令,100为有符号双曲正弦指令,101为有符号双曲余弦指令,110为无符号双曲正弦指令,111为无符号双曲余弦指令。
具体地,通过三角函数和双曲函数扩展指令集的funct3的最高位对三角函数计算和双曲函数计算进行区分,通过funct3的第2位对三角函数和双曲函数的输入角度是否为有符号数进行区分,通过funct3的第3位对正弦计算和余弦计算进行区分,每一位对应不同功能实现,简化扩展电路实现时的译码过程。
步骤3:根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表。
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令为R-type、I-type、S-type、B-type、U-type 或J-type的指令。
本实施例中,宏定义根据R-type定义,对三角函数和双曲函数扩展指令的各个位进行rs1、rs2、rd、funct7、funct3和opcode信息的定义。三角函数和双曲函数扩展指令匹配码如图4所示,匹配码将rs1、rs2和rd均置为0,funct7编码为0000010,funct3编码为000~111,opcode编码为0110011,因此有符号数正弦指令的匹配码为0x4000033,有符号数余弦指令的匹配码为0x4001033,无符号数正弦指令的匹配码为0x4002033,无符号数余弦指令的匹配码为0x4003033,有符号数双曲正弦指令的匹配码为0x4004033,有符号数双曲余弦指令的匹配码为0x4005033,无符号数双曲正弦指令的匹配码为0x4006033,无符号数双曲余弦指令的匹配码为0x4007033。由于三角函数和双曲函数扩展指令均为R-type指令,掩码为0xfe00707f。
步骤4:针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展。
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
具体地,译码模块对三角函数和双曲函数扩展指令的opcode、rs1、rs2、rd、funct3和funct7进行译码。其中,opcode用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。译码完成后,生成控制信号送入指令执行模块。
本实施例中,funct3的每一位对应不同功能的控制信号,最高位用来使能三角函数和双曲函数计算装置中的三角函数迭代模块或双曲函数迭代模块,第2位用来使能迭代模块为有符号数操作或无符号数操作,最低位用来选择输出为x值还是y值。每一位对应不同的功能实现,直接作为相关功能的使能信号输入给指令执行模块,节省了扩展电路在译码逻辑上的资源消耗。
步骤5:在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
本实施例中,三角函数和双曲函数计算装置基于CORDIC算法实现,通过连续多次小角度旋转的方法来逐渐逼近三角函数或双曲函数的实际值。在收到译码模块送出的控制信号后,三角函数和双曲函数计算装置进行一定数量周期的迭代计算。完成所有迭代计算后输出计算结果,并将结果写回步骤4中译码模块得到的rd寄存器中。
如图5所示,本发明实施提供的指令集扩展装置,所述装置包括:
指令选择单元110,用于选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型;
指令编码单元120,用于根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码;
指令添加单元130,用于根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令为R-type、I-type、S-type、B-type、U-type 或J-type的指令;
电路扩展单元140,用于针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展;
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
作为本实施例的优选实施方式,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
作为本实施例的优选实施方式,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,具体包括:
所述译码模块对三角函数和双曲函数扩展指令的opcode、rs1、rs2、rd、funct3和funct7信息进行译码,
其中,opcode用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
作为本实施例的优选实施方式,所述装置还包括:
指令执行单元150,用于在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
本发明实施例提供的指令集扩展装置,用于实现上述指令集扩展方法,因此具体实施方式与上述方法相同,在此不再赘述。
如图6所示,本发明实施例提供的一种电子设备300的结构框图。该电子设备300可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备300。本申请中的电子设备300可以包括一个或多个如下部件:处理器310、存储器320、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器320中并被配置为由一个或多个处理器310执行, 一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器310可以包括一个或者多个处理核。处理器310利用各种接口和线路连接整个电子设备300内的各个部分,通过运行或执行存储在存储器320内的指令、程序、代码集或指令集,以及调用存储在存储器320内的数据,执行电子设备300的各种功能和处理数据。可选地,处理器310可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器310可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器310中,单独通过一块通信芯片进行实现。
存储器320可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器320可用于存储指令、程序、代码、代码集或指令集。存储器320可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
如图7所示,本发明实施例提供的一种计算机可读存储介质400的结构框图。该计算机可读介质中存储有程序代码410,所述程序代码410可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质400可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质400包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质400具有执行上述方法中的任何方法步骤的程序代码410的存储空间。这些程序代码410可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码410可以例如以适当形式进行压缩。
综上所述,本发明提供了一种指令集扩展方法、装置、电子设备及存储介质,充分利用RISC-V指令集精简、可扩展的特性,将三角函数和双曲函数计算定义为R-type指令,与RISC-V架构已有基础指令集和硬件乘除法指令集相区分,实现三角函数和双曲函数计算的指令压缩,减少函数计算时间。
在本申请所公开的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种指令集扩展方法,其特征在于,包括以下步骤:
选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型;
根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码;
根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令的类型为R-type、I-type、S-type、B-type、U-type 或J-type类型的指令;
针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展,
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
2.根据权利要求1所述的指令集扩展方法,其特征在于,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
3.根据权利要求2所述的指令集扩展方法,其特征在于,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,具体包括:
所述译码模块对三角函数和双曲函数扩展指令的opcode信息、rs1、rs2、rd、funct3和funct7信息进行译码,
其中,opcode信息用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
4.根据权利要求3所述的指令集扩展方法,其特征在于,所述方法还包括:
在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
5.一种指令集扩展装置,其特征在于,包括:
指令选择单元,用于选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型;
指令编码单元,用于根据R-type指令的编码格式对三角函数和双曲函数进行扩展指令编码;
指令添加单元,用于根据所述扩展指令编码,在编译器中添加三角函数和双曲函数扩展指令的宏定义并更新opcodes表,
其中,宏定义是对扩展指令的各个位进行定义,opcodes表用于记录扩展指令的匹配码和掩码,匹配码记录扩展指令的寄存器和立即数以外的信息;掩码记录指令的类型为R-type、I-type、S-type、B-type、U-type 或J-type类型的指令;
电路扩展单元,用于针对三角函数和双曲函数扩展指令对处理器核中的译码模块和执行模块进行电路扩展;
其中,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,并生成控制信号送入指令执行模块,所述执行模块,用于进行三角函数和双曲函数的计算。
6.根据权利要求5所述的指令集扩展装置,其特征在于,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
7.根据权利要求6所述的指令集扩展装置,其特征在于,所述译码模块用于对三角函数和双曲函数扩展指令进行译码,具体包括:
所述译码模块对三角函数和双曲函数扩展指令的opcode信息、rs1、rs2、rd、funct3和funct7信息进行译码,
其中,opcode信息用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
8.根据权利要求6所述的指令集扩展装置,其特征在于,所述装置还包括:
指令执行单元,用于在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行模块的三角函数和双曲函数计算装置中,进行三角函数和双曲函数的计算并输出计算结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器 ;
存储器 ;
一个或多个应用程序, 其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行, 所述一个或多个程序配置用于执行如权利要求1-4任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210632979.9A CN114721720B (zh) | 2022-06-07 | 2022-06-07 | 一种指令集扩展方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210632979.9A CN114721720B (zh) | 2022-06-07 | 2022-06-07 | 一种指令集扩展方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114721720A CN114721720A (zh) | 2022-07-08 |
CN114721720B true CN114721720B (zh) | 2022-09-02 |
Family
ID=82232468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210632979.9A Active CN114721720B (zh) | 2022-06-07 | 2022-06-07 | 一种指令集扩展方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721720B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114707110B (zh) * | 2022-06-07 | 2022-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN116841618B (zh) * | 2023-07-04 | 2024-02-02 | 上海耀芯电子科技有限公司 | Tta处理器的指令压缩方法和系统,解压方法和系统 |
CN116991477B (zh) * | 2023-08-03 | 2024-01-30 | 上海合芯数字科技有限公司 | 旋转类指令执行方法、系统及执行单元 |
CN118276951B (zh) * | 2024-06-04 | 2024-08-09 | 山东浪潮科学研究院有限公司 | 基于risc-v的指令扩展方法及实现装置 |
CN118502822A (zh) * | 2024-07-22 | 2024-08-16 | 中科亿海微电子科技(苏州)有限公司 | 一种risc-v指令加速运算方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415728B (zh) * | 2018-03-01 | 2020-12-29 | 中国科学院计算技术研究所 | 一种用于处理器的扩展浮点运算指令执行方法及装置 |
CN111078290B (zh) * | 2019-12-17 | 2023-03-14 | 西安电子科技大学 | 一种用于可扩展指令集的编译器及编译方法 |
CN112256330B (zh) * | 2020-11-03 | 2021-11-09 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
-
2022
- 2022-06-07 CN CN202210632979.9A patent/CN114721720B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114721720A (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114721720B (zh) | 一种指令集扩展方法、装置、电子设备及存储介质 | |
KR102471606B1 (ko) | 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷 | |
RU2656730C2 (ru) | Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой | |
CN101488083B (zh) | 用于转换向量数据的方法、装置和指令 | |
JP4986431B2 (ja) | プロセッサ | |
US7991984B2 (en) | System and method for executing loops in a processor | |
CN110909882A (zh) | 用于执行水平铺块操作的系统和方法 | |
US8707013B2 (en) | On-demand predicate registers | |
US9154157B2 (en) | Search unit to accelerate variable length compression/decompression | |
EP1861775B1 (en) | Processor and method of indirect register read and write operations | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN111124495B (zh) | 一种数据处理方法、解码电路及处理器 | |
CN111443948B (zh) | 指令执行方法、处理器和电子设备 | |
KR100834412B1 (ko) | 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서 | |
EP4293502A1 (en) | Processing unit, computing device and instruction processing method | |
CN114707110B (zh) | 一种三角函数和双曲函数扩展指令计算装置及处理器核 | |
CN115525338A (zh) | 处理器核、处理器、片上系统、计算装置和指令处理方法 | |
JP3863544B1 (ja) | 演算処理装置及び演算処理方法 | |
JP3570287B2 (ja) | マイクロコンピュータ | |
CN113721985A (zh) | Risc-v向量寄存器分组设置方法、装置及电子设备 | |
WO2022174542A1 (zh) | 一种数据处理的方法、装置、处理器和计算设备 | |
CN118057308A (zh) | 指令处理优化方法及相关装置 | |
CN118502764A (zh) | 一种代码编译方法及电子设备 | |
JP2002318686A (ja) | プロセッサ | |
CN114968356A (zh) | 一种数据处理的方法、装置、处理器和计算设备 |
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 |