首页> 中国专利> 用于加速数字信号处理的RISC-V指令集扩展方法

用于加速数字信号处理的RISC-V指令集扩展方法

摘要

本发明公开了一种用于加速数字信号处理的RISC‑V指令集扩展方法,用于构建用于数字信号处理的RISC‑V指令集,包括:根据数字信号处理的算法类型,确定用于数字信号处理的扩展指令的操作类型集合;根据处理器架构,设置扩展指令的操作数类型;根据数字信号处理的精度运算特点,设置扩展指令的数据处理模式;对扩展指令的操作类型集合、操作数类型和数据处理模式进行组合,构建扩展指令子集;根据RISC‑V指令集的指令格式,对扩展指令子集进行编码,构建用于数字信号处理的RISC‑V指令集。本发明的方法能够克服现有RISC‑V指令集应用于数字信号处理时,存在的运算类型欠缺、数据宽度灵活性和数据结果精度不足问题,提高处理器在进行数字信号处理时的性能。

著录项

说明书

技术领域

本发明涉及数字信号处理技术领域,具体涉及一种用于加速数字信号处理的RISC-V指令集扩展方法。

背景技术

指令集是处理器底层硬件与运行于其上的软件之间的桥梁和接口,处理器通过从内存中读取指令,并进行译码和执行,完成复杂的运算和控制任务。每个处理器都有特定的指令集与其进行对应,指令集的设计直接影响到处理器的性能。目前的处理器设计中,除了需要为基本运算和控制设定相应的指令集外,通常还需要设计面向特定应用领域的扩展指令集。面向特定应用领域的指令集子系统是将复杂的运算控制流程简化为相应的操作,并由处理器根据解码的信息直接运行,能够避免通过基本指令集产生复杂控制运算流程。

RISC-V指令集是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),是一个完全开放的、标准的、能够支持各种应用的全新指令集。RISC-V指令集包含一个非常小的基础指令集和一系列可选的指令集。其中,基础指令集为整数指令集RV32I与RV64I,分别提供32位与64位的地址空间;其他的可选指令集包括乘除运算、原子操作、浮点运算、压缩指令、位运算、事务存储、以及向量计算等。RISC-V指令集的特点在于规整的指令编码和模块化的指令子集,同时指令集也预留了大量的指令编码空间,可以高效实现用户的自定义扩展。用户通过灵活选择不同的模块组合或者进行扩展,可以构建适用于任何一个领域的微处理器,比如云计算、存储、并行计算、虚拟化/容器、低功耗嵌入式和数字信号处理等领域。

现有的数字信号处理(Digital Signal Processing,DSP)通常具有如下的运算特征:在数字滤波、傅里叶变换、向量矩阵等典型DSP应用场景中,都有大量的乘累加操作;对于定点数据,针对不同的应用场景,数据宽度通常为8bit、16bit或32bit;数字信号处理通常还支持饱和运算和舍入运算,以保证数据精度。然而,由于目前RISC-V指令集没有点积和乘累加等数字信号处理的运算类型的指令,并且主要针对数据位宽为32bit或64bit的数据进行处理,同时也缺少饱和操作、舍入操作等精度有效性处理操作的指令支持,导致现有的RISC-V指令集应用于数字信号处理时存在着较大的局限性。

发明内容

为解决上述现有技术中存在的技术问题,本发明提供一种用于加速数字信号处理的RISC-V指令集扩展方法。

为此,本发明公开了一种用于加速数字信号处理的RISC-V指令集扩展方法,所述方法用于构建用于数字信号处理的RISC-V指令集,包括:

根据数字信号处理的算法类型,确定用于数字信号处理的扩展指令的操作类型集合;

根据处理器架构,设置扩展指令的操作数类型;

根据数字信号处理的精度运算特点,设置扩展指令的数据处理模式;

对扩展指令的操作类型集合、操作数类型和数据处理模式进行组合,构建扩展指令子集;

根据RISC-V指令集的指令格式,对扩展指令子集进行编码,构建用于数字信号处理的RISC-V指令集。

在一些可选的实施方式中,根据数字信号处理的算法类型,确定数字信号处理的各个核心算法的运算类型,对所有运算类型进行归类和整合,生成用于数字信号处理的扩展指令的操作类型集合。

在一些可选的实施方式中,数字信号处理的各个核心算法的运算类型采用BDTI-DSP基准测试中的12类运算。

在一些可选的实施方式中,根据处理器架构,将扩展指令的操作数类型分为有符号数和无符号数两类,并采用SIMD方式,将操作数设置为8×8bit、4×16bit和2×32bit三种位宽类型。

在一些可选的实施方式中,根据数字信号处理的精度运算特点,设置扩展指令的数据处理模式为可选择的饱和操作和舍入操作两种数据处理模式。

在一些可选的实施方式中,对扩展指令的操作类型集合、操作数类型和数据处理模式进行组合,构建单指令多数据的寄存器-寄存器类型指令子集、单指令多数据的寄存器-立即数类型指令子集和单指令单数据指令子集三个扩展指令子集。

在一些可选的实施方式中,根据RISC-V指令集的指令格式,采用以下步骤对扩展指令子集进行编码:

选择不同的custom指令子集,对扩展指令子集的opcode区间进行编码,以区分不同的扩展指令子集;

根据每一个扩展指令子集的操作类型,在RISC-V指令集的funct7区间中设计编码方式,以保证覆盖扩展指令子集的所有操作类型;

根据扩展指令子集的操作数类型和数据处理模式,在RISC-V指令集的funct7区间和funct3区间选择特定的位进行编码表示。

本发明技术方案的主要优点如下:

本发明的用于加速数字信号处理的RISC-V指令集扩展方法能够构建用于数字信号处理的RISC-V指令集,克服现有的RISC-V指令集应用于数字信号处理时,存在的运算类型欠缺、数据宽度灵活性不足和数据结果精度不足等问题,显著提高处理器在进行数字信号处理时的性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例的用于加速数字信号处理的RISC-V指令集扩展方法的流程图;

图2为本发明一实施例的RISC-V指令集中寄存器-寄存器类型指令的指令格式示意图;

图3为本发明一实施例的RISC-V指令集中寄存器-立即数类型指令的指令格式示意图;

图4为本发明一实施例的用于加速数字信号处理的RISC-V指令集扩展方法中扩展指令子集的编码过程的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合附图,详细说明本发明一实施例提供的技术方案。

如图1所示,本发明一实施例提供了一种用于加速数字信号处理的RISC-V指令集扩展方法,该方法用于构建用于数字信号处理的RISC-V指令集,包括以下步骤:

根据数字信号处理的算法类型,确定用于数字信号处理的扩展指令的操作类型集合;

根据处理器架构,设置扩展指令的操作数类型;

根据数字信号处理的精度运算特点,设置扩展指令的数据处理模式;

对扩展指令的操作类型集合、操作数类型和数据处理模式进行组合,构建扩展指令子集;

根据RISC-V指令集的指令格式,对扩展指令子集进行编码,构建用于数字信号处理的RISC-V指令集。

以下对本发明一实施例提供的用于加速数字信号处理的RISC-V指令集扩展方法中的各个步骤进行具体说明。

步骤1,根据数字信号处理的算法类型,确定用于数字信号处理的扩展指令的操作类型集合;

本发明一实施例中,根据数字信号处理的算法类型,确定数字信号处理的各个核心算法的运算类型,对所有运算类型进行归类和整合,生成用于数字信号处理的扩展指令的操作类型集合,操作类型集合也为运算类型集合。

具体地,本发明一实施例中,数字信号处理的各个核心算法的运算类型采用BDTI-DSP基准测试中的12类运算。

BDTI-DSP基准测试指的是现有的由BDTI(Berkeley Design Technology Int.)提出的一种DSP基准测试,该BDTI-DSP基准测试是一种介于过于简单的MIPS(Microprocessorwithout interlocked piped stages)类指标和过于复杂的完全基于应用的指标之间的评价方法,该BDTI-DSP基准测试是一种DSP性能衡量标准。BDTI-DSP基准测试覆盖12类数字信号处理运算,这12类运算能够代表数字信号处理中的核心算法的运算类型。

根据BDTI基准测试中的12类运算,对每一类运算涉及的操作进行分析,生成如表1所示的用于数字信号处理的扩展指令的操作类型集合。

表1扩展指令的操作类型集合

步骤2,根据处理器架构,设置扩展指令的操作数类型;

根据现有的处理器架构,处理器的通用寄存器的宽度通常为64bit或32bit。为此,本发明一实施例中,针对通用寄存器的宽度为64bit的处理器,将扩展指令的操作数类型分为有符号数和无符号数两类,并采用SIMD方式,将操作数设置为8×8bit、4×16bit和2×32bit三种位宽类型,以在将RISC-V指令集用于数字信号处理时,增加处理器在不同应用场景下的灵活性,提升处理器的数据并行处理能力。同理,针对通用寄存器的宽度为32bit的处理器,可以将扩展指令的操作数类型分为有符号数和无符号数两类,并采用SIMD方式,将操作数设置为4×8bit和2×16bit两种位宽类型。

单指令多数据(Single Instruction Multiple Data,SIMD)是一种实现数据级并行的结构技术,SIMD技术通过在一条单独的指令中对多个数据同时执行多个同样的运算操作,以增加处理器的吞吐量,能够极大地提高在多媒体和各种数字信号处理中广泛应用的向量运算的计算速度。

步骤3,根据数字信号处理的精度运算特点,设置扩展指令的数据处理模式;

由于现有的数字信号处理为了保证数据精度,能够支持和设置饱和运算和舍入运算。为此,本发明一实施例中,根据数字信号处理的精度运算特点,针对不同运算类型,设置扩展指令的数据处理模式为可选择的饱和操作和舍入操作两种数据处理模式。

其中,饱和操作指的是当运算结果超出数据位宽的表示范围时,直接取表示范围的最大值或最小值;舍入操作指的是当运算结果超出数据位宽的表示范围时,采用0舍1入方式对运算结果进行截断。

步骤4,对扩展指令的操作类型集合、操作数类型和数据处理模式进行组合,构建扩展指令子集;

具体地,对操作类型集合、操作数类型和数据处理模式进行组合,构建三个扩展指令子集,三个扩展指令子集分别包括:单指令多数据的寄存器-寄存器类型指令子集、单指令多数据的寄存器-立即数类型指令子集和单指令单数据指令子集。

本发明一实施例中,基于上述步骤1、步骤2和步骤3确定的操作类型集合、操作数类型和数据处理模式的具体内容,构建如表2所示的单指令多数据的寄存器-寄存器类型(SIMD-R)指令子集、如表3所示的单指令多数据的寄存器-立即数类型(SIMD-I)指令子集、以及如表4所示的单指令单数据(Non-SIMD)指令子集。

表2单指令多数据:寄存器-寄存器类型(SIMD-R)

表3单指令多数据:寄存器-立即数类型(SIMD-I)

表4单指令单数据(Non-SIMD)

步骤5,根据RISC-V指令集的指令格式,对扩展指令子集进行编码,构建用于数字信号处理的RISC-V指令集;

具体地,根据RISC-V指令集中寄存器-寄存器类型指令格式和寄存器-立即数类型指令格式,对扩展指令子集进行编码,构建用于数字信号处理的RISC-V指令集。

参见图2,寄存器-寄存器类型指令的指令格式的长度为32位,包括6个字段:第6~0位的opcode区间为操作码字段,用于定义指令子集;第11~7位的rd区间为目的寄存器字段,用于表示目的寄存器号;第14~12位的funct3区间为功能编码字段,用于定义具体指令;第19~15位的rs1区间为第一个源寄存器字段,用于表示第一个源寄存器号;第24~20位的rs2区间为第二个源寄存器字段,用于表示第二个源寄存器号;第31~25位的funct7区间为功能编码字段,用于定义具体指令。

参见图3,寄存器-立即数类型指令的指令格式的长度为32位,包括5个字段:第6~0位的opcode区间为操作码字段,用于定义指令子集;第11~7位的rd区间为目的寄存器字段,用于表示目的寄存器号;第14~12位的funct3区间为功能编码字段,用于定义具体指令;第19~15位的rs1区间为源寄存器字段,用于表示源寄存器号;第31~20位的imm区间为立即数字段,用于表示立即数的值。

其中,opcode区间定义了4组custom指令子集,分别为custom-0、custom-1、custom-2、custom-3,可用于进行自定义指令扩展。

本发明一实施例中,通过利用空闲的custom指令子集来实现扩展指令子集的编码。具体地,根据译码流程,按照扩展指令子集在三个粒度上的层次划分,基于RISC-V指令集的编码格式,采用如下步骤对扩展指令子集进行编码:

选择不同的custom指令子集,对扩展指令子集的opcode区间进行编码,以区分不同的扩展指令子集;

根据每一个扩展指令子集的操作类型,在RISC-V指令集的funct7区间中设计编码方式,以保证覆盖扩展指令子集的所有操作类型;

根据扩展指令子集的操作数类型和数据处理模式,在RISC-V指令集的funct7区间和funct3区间选择特定的位进行编码表示。

以下基于上述构建的单指令多数据的寄存器-寄存器类型指令子集、单指令多数据的寄存器-立即数类型指令子集、以及单指令单数据指令子集三个扩展指令子集对扩展指令子集的编码过程进行具体说明。

步骤51,选择不同的custom指令子集,对扩展指令子集的opcode区间进行编码,以区分不同的扩展指令子集;

如图4所示,为三个扩展指令子集分别选择custom指令子集,作为各自的opcode区间编码;对于单指令多数据的寄存器-寄存器类型指令子集,选择custom-0,即opcode为0001011;对于单指令多数据的寄存器-立即数类型指令子集,选择custom-1,即opcode为0101011;对于单指令单数据指令子集,选择custom-2,即opcode为1011011。如此,形成的三个扩展指令子集,与RISC-V指令集中通过opcode区间已经定义的其他指令子集不会产生冲突,同时还可以复用原有的opcode译码结构,避免芯片译码段和指令发射段复杂度增加。

步骤52,根据每一个扩展指令子集的操作类型,在RISC-V指令集中的funct7区间中设计编码方式,以保证覆盖扩展指令子集的所有操作类型;

具体地,由于单指令多数据的寄存器-寄存器类型指令子集中包含16个操作类型,RISC-V指令集中寄存器-寄存器类型指令的指令格式中,funct7区间为功能编码字段,用于定义具体指令;为此,使用该funct7区间的高5位,即funct7[6:2],区分单指令多数据的寄存器-寄存器类型指令子集中的16个操作类型,占用32个编码空间中的16个,其余16个留用,可用于满足后续扩展需求。

由于单指令多数据的寄存器-立即数类型指令子集中包含4个操作类型,RISC-V指令集中寄存器-立即数类型指令的指令格式中,可以使用imm区间的高7位作为功能编码字段,用于定义具体指令;为此,使用该imm区间的高5位,即imm[11:7],区分单指令多数据的寄存器-立即数类型指令子集中的4个操作类型,占用32个编码空间中的4个,其余28个留用,可用于满足后续扩展需求。

由于单指令单数据指令子集中包含4个操作类型,均为寄存器-寄存器类型,RISC-V指令集中寄存器-寄存器类型指令的指令格式中,规定rs1区间和rs2区间分别用于表示第一个源寄存器号和第二个源寄存器号,单指令单数据指令子集为三个源操作数;为此,使用funct7区间的高5位,即funct7[6:2],用于表示第三个源寄存器号,使用funct7区间的低2位,即funct7[1:0],区分单指令单数据指令子集中的4个操作类型,占用4个编码空间中的4个。

步骤53,根据扩展指令子集的操作数类型和数据处理模式,在RISC-V指令集中的funct7区间和funct3区间选择特定的位进行编码表示。

由于单指令多数据的寄存器-寄存器类型指令子集、单指令多数据的寄存器-立即数类型指令子集、以及单指令单数据指令子集三个扩展指令子集的操作数包含有符号数或者无符号数两种类型;为此,使用RISC-V指令集的指令格式中的funct3区间的最高位,即funct3[2],用于区分有符号数或者无符号数。

由于单指令多数据的寄存器-寄存器类型指令子集和单指令多数据的寄存器-立即数类型指令子集两个扩展指令子集的运算结果可以进行饱和处理,即数据处理模式包括饱和操作;为此,使用RISC-V指令集的指令格式中的funct3区间的中间位,即funct3[1],用于选择是否进行饱和操作。

由于单指令多数据的寄存器-寄存器类型指令子集和单指令多数据的寄存器-立即数类型指令子集两个扩展指令子集的运算结果可以进行舍入处理,即数据处理模式包括舍入操作;为此,使用RISC-V指令集的指令格式中的funct3区间的中间位,即funct3[0],用于选择是否进行舍入操作。

由于单指令多数据的寄存器-寄存器类型指令子集、单指令多数据的寄存器-立即数类型指令子集两个扩展指令子集的SIMD模式包含8×8bit、4×16bit、2×32bit共三种;为此,对于单指令多数据的寄存器-寄存器类型指令子集,使用RISC-V指令集的指令格式中的funct7区间的低2位,即funct7[1:0],用于区分3种向量模式,占用4个编码空间中的3个;对于单指令多数据的寄存器-立即数类型指令子集,使用RISC-V指令集的指令格式中的imm区间的第6、7位,即imm[6:5],用于区分3种向量模式,占用4个编码空间中的3个。

可见,本发明一实施例提供的用于加速数字信号处理的RISC-V指令集扩展方法至少能够取得以下有益效果:

通过在RISC-V指令集中扩展增加典型运算指令,并引入SIMD模式,能够增加处理器的数据吞吐量,提升处理器在进行数字信号处理时的性能;

通过设置8×8bit、4×16bit和2×32bit三种位宽类型,使数据位宽覆盖8bit、16bit或32bit,能够提高扩展后的RISC-V指令集用于数字信号处理时的数据位宽的选择灵活性,以满足不同应用场景下的数据精度需求;

扩展指令子集的编码方式与RISC-V指令集保持一致,能够避免引入新的指令格式,可复用原有的指令译码、指令发射结构以及寄存器资源,有效地避免芯片复杂度的提升。

本发明一实施例提供的用于加速数字信号处理的RISC-V指令集扩展方法能够构建用于数字信号处理的RISC-V指令集,克服现有的RISC-V指令集应用于数字信号处理时,存在的运算类型欠缺、数据宽度灵活性不足和数据结果精度不足等问题,显著提高处理器在进行数字信号处理时的性能。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。

最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号