System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于微电子,具体涉及一种完备的risc-v压缩指令集定制方法。
技术介绍
1、risc-v是一种开放源代码的指令集架构,risc-v指令集根据不同应用场景中指令长度的需求,提供了16位、32位、64位与128位的标准格式,16位指令、32位指令格式常应用于嵌入式设备、通用计算等场景,64位指令与128位指令因支持地址空间的增加,多应用于高性能计算、高精度计算与并行计算等领域。risc-v指令集具有可扩展、模块化的优势,可以根据使用需求,选用支持的指令集扩展。已有的risc-v指令集拥有近20种标准扩展指令集,每种扩展指令都拥有独特的应用领域,如a扩展支持原子操作、v扩展支持对于向量的计算、b扩展支持比特级别加速操作以及k扩展支持常用加解密算法的加速操作等。
2、32位基本整数指令集rv32i包含了图灵完备的指令类型,定义了32个32位通用寄存器组,满足应用程序二进制接口(application binary interface,abi)的寄存器使用需求,寻址空间为2的32次方。rv32i指令有六种基本指令格式:r型指令、i型指令、s型指令、b型指令、u型指令及j型指令;r型指令用于源寄存器1、源寄存器2与目的寄存器之间的操作,i型指令用于短立即数与访存load的操作,s指令用于访存store的操作,b型指令用于条件跳转的操作,u型指令用于长立即数的操作,j型指令用于无条件跳转的操作。这六种基本指令格式满足了一个基本的risc-v处理器所需支持的操作,包含环境调用指令、环境调试指令、外部可见访存请求指令在内,
3、risc-v提供一种可选的嵌入式架构rv32e,仅需16个通用整数寄存器组成寄存器组,主要用于追求极低面积与极低功耗的嵌入式场景。除此之外,rv32e的其他特性与rv32i完全相同。
4、risc-v的c指令集rv32c添加了处理器对于16位压缩指令的支持,缩短指令的长度能够提高指令密度,降低存储需求,适用于存储资源与存储带宽受限的场景。rv32c指令集将每一条16位压缩指令与一条标准的32位指令一一对应,risc-v的压缩指令设计方式,使得处理器设计的过程中,仅需要在取指阶段,添加压缩指令转换为普通指令的逻辑,就能处理压缩后的指令,同时,这种设计方式使得编译器编写者能够忽略rv32c指令。
5、rv32c的指令编码区间中,最低两位为00、01和10,最高三位为功能码区域,因此rv32c的指令集具有24个指令区间,其中分为fld、flw等8个浮点操作指令区间,addispn、addi等15个整数操作指令区间以及1个保留的区间。
6、然而,在面向控制的嵌入式系统中,并不需要浮点操作,因此rv32c的浮点操作指令在面向控制的嵌入式系统当中并没有使用,这也就意味着这些指令区间浪费了。并且,现有的rv32c是不完备的,比如rv32e中的slt指令,其操作含义为将源寄存器1与源寄存器2进行有符号比较,若小于则将目的寄存器置为1,否则置为0。对于这种指令,仅仅使用单独的rv32c指令集则无法完成。除此之外,对于csr类型指令、环境调用、环境调试等指令均无法通过单独的rv32c指令集实现。
技术实现思路
1、针对上述
技术介绍
中存在的问题,本专利技术的目的是提供一种完备的risc-v压缩指令集定制方法,在保留原有压缩扩展中整型指令的基础上,将浮点操作指令移除,并且通过寄存器地址缩减、区间重排等技术支持rve中的所有操作,从而形成一个完备的压缩指令集。
2、为了实现上述目的,本专利技术采用如下技术方案:
3、一种完备的risc-v压缩指令集定制方法,包括如下步骤:
4、首先,将压缩指令集rv32c中的浮点操作区间去除,同时将rv32c中的5bit寄存器地址缩减到4bit,将空闲出来的空间用于扩展功能码区间或者立即数长度,并对移位区间进行区间重排;
5、其次,根据对基准程序集的统计分析,使用一个区间定制csr类型中的csrrw、csrrc和csrrs指令,并且给csr寄存器、源寄存器和目的寄存器均分配3bit的地址空间;将使用频率较高且rv32c中无法实现的指令,包括条件跳转指令、load指令及store指令进行定制;
6、然后,将使用频率较低且rv32c中不支持的指令,包括移位指令、小于置位指令以及auipc指令定制为cr类型,多余空间定制为两条寄存器跳转指令;
7、最后,定制长立即数加载指令,若只需要支持16位指令,将最低位为11的区间定制为一条长立即数加载指令,该条指令将12位立即数加载到目的寄存器当中;若选择仅将完备的压缩指令集当做rv32c的一个扩展,则此区间仍为32位指令区间;
8、最终形成完备的risc-v定制压缩指令集。
9、进一步的,所述区间重排的方法为:缩减rv32c中移位指令的立即数长度,缩减c.slli指令区间的寄存器地址。
10、进一步的,所述缩减c.slli指令区间的寄存器地址的方法为:将[100]-[01]区间中的srli和srai两条指令并入[000]-[10]区间,并且将sltiu指令定制到[000]-[10]区间,之后对[100]-[01]区间增加寄存器地址位宽或立即数长度,以此来增强指令。
11、进一步的,所述条件跳转指令的定制包括blt指令、bltu指令、beq指令和bne指令的定制。
12、进一步的,所述load指令及store指令的定制应考虑支持6bit的立即数,并且默认源寄存器为sp寄存器。
13、相比于现有技术的缺点和不足,本专利技术具有以下有益效果:
14、(1)本专利技术对于rv32c中已有的指令,移除浮点操作区间,并通过寄存器地址缩减和区间重排技术,在原先指令格式的基础上进行改进,在不改变指令格式的情况下能够增强原先指令的功能;对于rv32c中不支持的指令则进行完全定制,包括csr类型指令、条件跳转指令、load\store指令、其他指令以及可选的长立即数加载指令;
15、(2)本专利技术提供的一种完备的risc-v压缩指令集,能够在深嵌入式领域降低指令存储空间,进一步降低深嵌入式系统的功耗以及成本。
本文档来自技高网...【技术保护点】
1.一种完备的RISC-V压缩指令集定制方法,其特征在于,包括如下步骤:
2.如权利要求1所述的完备的RISC-V压缩指令集定制方法,其特征在于,所述区间重排的方法为:缩减RV32C中移位指令的立即数长度,缩减c.slli指令区间的寄存器地址。
3.如权利要求2所述的完备的RISC-V压缩指令集定制方法,其特征在于,所述缩减c.slli指令区间的寄存器地址的方法为:将[100]-[01]区间中的srli和srai两条指令并入[000]-[10]区间,并且将sltiu指令定制到[000]-[10]区间,之后对[100]-[01]区间增加寄存器地址位宽或立即数长度,以此来增强指令。
4.如权利要求1所述的完备的RISC-V压缩指令集定制方法,其特征在于,所述条件跳转指令的定制包括blt指令、bltu指令、beq指令和bne指令的定制。
5.如权利要求1所述的完备的RISC-V压缩指令集定制方法,其特征在于,所述Load指令及Store指令的定制考虑支持6bit的立即数,并且默认源寄存器为SP寄存器。
【技术特征摘要】
1.一种完备的risc-v压缩指令集定制方法,其特征在于,包括如下步骤:
2.如权利要求1所述的完备的risc-v压缩指令集定制方法,其特征在于,所述区间重排的方法为:缩减rv32c中移位指令的立即数长度,缩减c.slli指令区间的寄存器地址。
3.如权利要求2所述的完备的risc-v压缩指令集定制方法,其特征在于,所述缩减c.slli指令区间的寄存器地址的方法为:将[100]-[01]区间中的srli和srai两条指令并入[000]-[10]区间,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。