CN111913745A - 一种嵌入式多指令集处理器设计方法 - Google Patents
一种嵌入式多指令集处理器设计方法 Download PDFInfo
- Publication number
- CN111913745A CN111913745A CN202010885161.9A CN202010885161A CN111913745A CN 111913745 A CN111913745 A CN 111913745A CN 202010885161 A CN202010885161 A CN 202010885161A CN 111913745 A CN111913745 A CN 111913745A
- Authority
- CN
- China
- Prior art keywords
- instruction
- risc
- instruction set
- target
- output
- 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
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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种嵌入式多指令集处理器设计方法,本发明涉及的嵌入式多指令集处理器的执行步骤包括:指令取指;分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;指令转换将属于第一指令集的目标指令解释成第二指令集的指令;多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;指令缓存;译码执行。本发明能够在较低硬件开销条件下解决嵌入式领域存在的软件兼容问题,实现嵌入式多指令集处理器同时支持RISC‑V和ARM Thumb指令集,具有硬件结构简单、增加的硬件开销较少、对ARM Thumb程序的性能影响较小的优点。
Description
技术领域
本发明涉及微处理器设计领域,具体涉及一种嵌入式多指令集处理器设计方法。
背景技术
随着第五代移动通信(5G)和物联网的发展,嵌入式处理器的需求迅速增加,竞争更加激烈,越来越多优秀的指令集加入了嵌入式领域的竞争。这带来的负面影响则是软件兼容问题,因为计算机应用程序都是针对某一个特定指令集编译生成的,不能直接运行在不同指令集的处理器上。这就导致了更换新指令集的处理器将会带来巨大的软件成本,这样的软件成本可能会使用户不选择更新的、更优秀的指令集的处理器,这严重阻碍了具有新特性的新指令集的发展。
为了降低更换新指令集处理器的软件成本,必须有切实可行的方法来解决软件兼容问题。诸如QEMU、FX!32、DAISY软件二进制翻译系统,是桌面和服务器领域中解决不同指令集间软件兼容问题的常用方法。但是将这一方法用于嵌入式处理器中就存在两个限制:一是存储限制,软件二进制翻译系统需要较大的存储空间来存储软件的代码,而由于嵌入式设备对芯片面积的要求,往往没有这么大的存储空间;二是性能限制,大多数现有的软件二进制翻译系统都是用于功能模拟,性能则没有得到太多关注,直接用于嵌入式系统中可能会导致运行非原生指令集程序的性能大幅降低。
为了提高软件二进制翻译的性能,一些处理器通过硬件对其进行了加速。如GODSON-3和Crusoe处理器。这些处理器主要从两个方面加速二进制翻译,一是加速二进制翻译的过程,另一个是对二进制翻译得到代码进行优化加速。
除了使用软件二进制翻译系统来解决软件兼容问题,还可以直接通过硬件来让处理器支持运行多个指令集的程序,能够运行多个指令集程序的处理器就叫做多指令集处理器。显然,支持多个指令集会增加处理器的面积和功耗。嵌入式设备的使用场景要求了嵌入式处理器必须要严格控制面积和功耗。因此,如果想要将多指令集处理器技术应用到嵌入式领域中,就必须找到一种低开销实现多指令集处理器的方式。
目前,实现多指令集处理器有三种方式。第一种是通过硬件实现一个二进制翻译系统;第二种是实现多个译码器来支持不同指令集;第三种则通过多核处理器的方式,每个核心支持不同的指令集。这三种实现方式的硬件成本逐渐增加。
ARM Thumb和RISC-V指令集是目前嵌入式领域最炙手可热的指令集。其中,ARMThumb是ARM Cortex-M系列处理器使用的指令集,是目前嵌入式领域使用最广泛的指令集;而RISC-V指令集则是最近几年发展最迅速的指令集,其主要优势是开源。因此,解决这两个指令集之间(尤其是RISC-V对ARM Thumb)的软件兼容对嵌入式处理器的发展有重要意义。因此,如何实现一种多指令集处理器以克服前述三种方法的缺陷,尤其是针对兼容ARMThumb和RISC-V指令集以克服前述三种方法的缺陷,已经一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种嵌入式多指令集处理器设计方法,本发明能够在较低硬件开销条件下解决嵌入式领域存在的软件兼容问题,实现嵌入式多指令集处理器同时支持RISC-V和ARM Thumb指令集,具有硬件结构简单、增加的硬件开销较少、对ARM Thumb程序的性能影响较小的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种嵌入式多指令集处理器设计方法,该设计方法设计的嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
可选地,所述第一指令集为ARM Thumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
可选地,所述指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
此外,本发明还提供一种嵌入式多指令集处理器的实现方法,该嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
可选地,所述第一指令集为ARM Thumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
可选地,所述指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
此外,本发明还提供一种嵌入式多指令集处理器,包括:
取指单元,用于根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断逻辑,用于根据目标指令属于第一指令集还是第二指令集选择输出分支;
二进制解释器,用于将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择器,用于在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
流水线寄存器,用于缓存多路选择器输出的指令;
译码执行单元,用于对缓存的指令译码执行。
可选地,所述第一指令集为ARM Thumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
可选地,所述二进制解释器包括:
指令转换单元,用于将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;
指令输出单元,用于每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
此外,本发明还提供一种计算机终端设备,包括微处理器和存储器,所述微处理器为所述的嵌入式多指令集处理器。
和现有技术相比,本发明具有下述优点:
1、硬件结构简单。相对于常见的单RISC-V指令集处理器,该处理器只是在取指单元和译码单元之间插入了一个二进制解释器。
2、增加的硬件开销较少。额外的硬件开销主要是二进制解释器,能够满足嵌入式设备对芯片面积和功耗的要求。
3、对ARM Thumb程序的性能影响较小。该处理器的性能主要由执行RISC-V指令的处理器决定,通过对ARM Thumb指令集中标志位、分支指令、条件执行的优化,其运行ARMThumb程序的性能能够达到运行RISC-V程序的80%左右。
附图说明
图1为本发明实施例中执行步骤的基本流程图。
图2为本发明实施例中多指令集处理器的结构图。
图3为本发明实施例中二进制解释器的详细结构。
图4为本发明实施例中多指令集处理器的工作原理示意图。
具体实施方式
这里以实现支持RISC-V RV32IM和ARMv6-M(ARM Thumb的子集)的多指令集处理器为例,对本发明嵌入式多指令集处理器设计方法进行进一步的详细说明。毫无疑问,本发明嵌入式多指令集处理器设计方法并不局限于支持RISC-V RV32IM和ARMv6-M(ARM Thumb的子集),而是能够实现广泛的兼容ARM Thumb和RISC-V指令集。
如图1所示,本实施例嵌入式多指令集处理器设计方法设计的嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
本实施例中,第一指令集为ARM Thumb指令集,第二指令集为RISC-V指令集,译码执行单元为RISC-V指令译码执行单元。
本实施例中,指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
此外,本实施例还提供一种嵌入式多指令集处理器的实现方法,该嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
本实施例中,第一指令集为ARM Thumb指令集,第二指令集为RISC-V指令集,译码执行单元为RISC-V指令译码执行单元。
本实施例中,指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
此外,如图2和图3所示,本实施例还提供一种嵌入式多指令集处理器,包括:
取指单元,用于根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,程序计数器用于生成待取指令的指令地址;
分支判断逻辑,用于根据目标指令属于第一指令集还是第二指令集选择输出分支;
二进制解释器,用于将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择器,用于在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
流水线寄存器,用于缓存多路选择器输出的指令;
译码执行单元,用于对缓存的指令译码执行。
本实施例中,第一指令集为ARM Thumb指令集,第二指令集为RISC-V指令集,译码执行单元为RISC-V指令译码执行单元。
本实施例中的二进制解释器用于将ARM Thumb指令转换成对应的RISC-V指令,然后通过译码执行RISC-V指令即可实现对两个指令集的支持。因此,该处理器中的其它单元可以按照普通RISC-V处理器进行实现。
本实施例中,二进制解释器包括:
指令转换单元,用于将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;
指令输出单元,用于每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
本实施例中二进制解释器具体为用于将一条输入的ARMv6-M指令转换为对应的RISC-V指令序列,然后每周期输出一条RISC-V指令,在解释得到的RISC-V指令被全部送到译码单元之前,解释器需要暂停取指单元的取指操作。在将ARMv6-M指令转换到RISC-V指令的过程中,需要为每条ARMv6-M指令找到对应的RISC-V指令序列来完成相同的工作,以及为两个指令集的寄存器找到一个映射关系,我们将ARMv6-M中R0~R15映射到RISC-V的R16~R31。在二进制解释器中判断执行条件。虽然ARMv6-M并不支持条件执行,但是依然有必要说明如何在二进制解释器中支持ARM Thumb的条件执行。ARM Thumb中有专门的条件执行指令IT来设置执行条件和条件执行的指令数目,这些信息都被保存在一个寄存器中。在二进制解释器转换ARM Thumb指令之前,通过比较这个寄存器中的值和标志位的状态决定这条指令是否需要被执行。如果需要被执行才进行相应的转换,否则二进制解释器输出一条空转指令并取后面的指令继续判断。
参见图4可知,ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,然后每周期从RISC-V指令列表中取出一条RISC-V指令。本实施例中将取指单元和译码单元放在了两个流水段,其中二进制解释器和取指单元位于同一流水段,因此在图4中取出的RISC-V指令并不是直接送到译码执行单元,而是先放入流水线寄存器中。
多路选择器根据当前处理器运行的指令集决定是将从指令存储器中取到的指令还是二进制解释器输出的指令送往流水线寄存器。如果当前执行的是RISC-V指令集,那么将直接取到的指令送往流水线寄存器;如果执行的是ARMv6-M指令集,那么就将解释器输出的指令送往流水线寄存器。本实施例中,加入硬件标志位判断的算术逻辑单元(ALU)。支持RISC-V指令的ALU是不需要进行标志位判断的,但是为了提高运行ARMv6-M程序的性能,我们在ALU中加入了标志位判断逻辑,并在CSR(控制和状态寄存器)中加入了一个标志位寄存器。由于译码RISC-V指令的译码器并不会产生与ARMv6-M标志位相关的控制信号,因此我们将这些控制信号的产生放在了二进制解释器中,其在进行指令转换的同时,会产生这条指令所需的标志位控制信号。本实施例中,在该嵌入式多指令集处理器中实现了两个分支判断逻辑,分别用于RISC-V分支判断和ARMv6-M分支判断。由于该处理器中译码执行的是RISC-V指令,为了能够实现ARMv6-M的分支判断逻辑,我们需要将其用于分支判断的条件码送到分支逻辑中。在我们的发明中,使用RISC-V BEQ指令中的RS1域来保存ARMv6-M的条件码,在进行ARMv6-M分支判断时,将RS1域传入分支逻辑中,并根据RS1的编码情况比较对应的标志位。
参见图3,本实施例中嵌入式多指令集处理器的工作流程如下:1)取指单元根据程序计数器的内容从指令存储器或指令Cache中取出一条指令,图中①;2)将ARMv6-M指令解释成RISC-V指令,由于进行了优化,二进制解释器还会产生一些控制信号,图中③和⑤; 3)根据当前处理器执行的指令集,选择对应的指令放入流水线寄存器中,图中④。如果执行的RISC-V指令集,直接将来自于指令存储器或指令Cache的指令放入流水线寄存器中(图中②);如果执行的是ARMv6-M指令集,那么就将解释器输出的指令放入流水线寄存器(图中③)。4)译码执行该指令,图中⑥,这个过程和单指令集处理器类似,不再赘述;5)执行结束,接着执行下一条指令。
参见前文可知,为了提高运行ARM Thumb程序的性能,本实施例中针对ARM Thumb中的标志位、分支指令以及条件执行对部分单元进行了优化。该处理器将二进制解释器放在取指单元和译码单元之间简化了取指单元的逻辑,当一条ARM Thumb被转换成多条RISC-V指令时二进制解释器只需暂停取指单元即可。ARM Thumb中许多指令都会改变或者使用标志位,但执行RISC-V指令并不需要考虑标志位。由于使用软件进行标志位判断会使得一条ARM Thumb指令转换成许多条RISC-V指令,这严重影响了运行ARM Thumb程序的性能。因此,该处理器在执行单元中增加了标志位判断逻辑,并在控制状态寄存器(CSR)中加入了用于保存标志位的寄存器。标志位的实现方式也影响了分支指令的实现方式。如果在分支单元中仅仅存在RISC-V分支判断逻辑(比较两个数的大小决定分支是否发生),即使加入了标志位判断逻辑和寄存器,一条ARM Thumb分支指令依然需要多条RISC-V指令才能够实现。因此,该处理在分支单元中加入了ARM Thumb的分支判断逻辑(根据标志位的状态决定是否跳转),并使用RISC-V BEQ指令中RS1域保存ARM Thumb的条件码。ARM Thumb中的条件执行通过判断标志位是否满足条件来决定一条执行是否需要被执行。在本发明中,执行条件的判断逻辑被放在二进制解释器中,只有满足执行条件的ARM Thumb指令才会被解释成RISC-V指令。这种实现方式相较于在执行单元中判断执行条件能够节省更多流水线周期且控制逻辑更加简单。
此外,本实施例还提供一种计算机终端设备,包括微处理器和存储器,微处理器为前述的嵌入式多指令集处理器。
综上所述,面向嵌入式领域中存在的软件兼容问题、针对嵌入式设备对处理器面积和功耗的要求,本实施例设计了一个基于二进制解释的支持RISC-V和ARM Thumb指令集的多指令集处理器,该多指令集处理器硬件结构简单,方便基于现有的RISC-V处理器进行二次开发;并且,其实现的硬件开销较低,能够满足嵌入式设备对处理器面积和功耗的要求。同时,经过简单的优化,该处理器执行ARM Thumb程序的性能能够到达RISC-V程序性能的较高水平。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种嵌入式多指令集处理器设计方法,其特征在于,该设计方法设计的嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
2.根据权利要求1所述的嵌入式多指令集处理器设计方法,其特征在于,所述第一指令集为ARM Thumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
3.根据权利要求2所述的嵌入式多指令集处理器设计方法,其特征在于,所述指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
4.一种嵌入式多指令集处理器的实现方法,其特征在于,该嵌入式多指令集处理器的执行步骤包括:
指令取指:根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断:根据目标指令属于第一指令集还是第二指令集选择输出分支;
指令转换:将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择:在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
指令缓存:缓存多路选择器输出的指令;
译码执行:对缓存的指令译码执行。
5.根据权利要求4所述的嵌入式多指令集处理器的实现方法,其特征在于,所述第一指令集为ARM Thumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
6.根据权利要求5所述的嵌入式多指令集处理器的实现方法,其特征在于,所述指令转换的详细步骤包括:首先将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;然后每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
7.一种嵌入式多指令集处理器,其特征在于,包括:
取指单元,用于根据程序计数器中的指令地址从指令存储器或指令Cache中取出一条目标指令,所述程序计数器用于生成待取指令的指令地址;
分支判断逻辑,用于根据目标指令属于第一指令集还是第二指令集选择输出分支;
二进制解释器,用于将属于第一指令集的目标指令解释成第二指令集的指令;
多路选择器,用于在目标指令属于第一指令集时选择转换后的指令输出、在目标指令属于第二指令集时直接选择目标指令输出;
流水线寄存器,用于缓存多路选择器输出的指令;
译码执行单元,用于对缓存的指令译码执行。
8.根据权利要求7所述的嵌入式多指令集处理器,其特征在于,所述第一指令集为ARMThumb指令集,所述第二指令集为RISC-V指令集,所述译码执行单元为RISC-V指令译码执行单元。
9.根据权利要求8所述的嵌入式多指令集处理器,其特征在于,所述二进制解释器包括:
指令转换单元,用于将属于ARM Thumb指令集的目标指令基于预设的指令映射表转换为对应的RISC-V指令列表,并将每一条RISC-V指令的标志位写入控制状态寄存器CSR中用于保存标志位的寄存器,并使用RISC-V BEQ指令中RS1域保存目标指令的条件码;
指令输出单元,用于每周期从RISC-V指令列表中取出一条RISC-V指令,若该RISC-V指令的标志位和条件码满足执行条件则将该RISC-V指令输出、否则输出一条空转指令,且在解释得到的RISC-V指令列表被全部送到译码单元之前暂停取指单元的取指操作。
10.一种计算机终端设备,包括相互连接的微处理器和存储器,其特征在于,所述微处理器为权利要求7~9中任意一项所述的嵌入式多指令集处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885161.9A CN111913745B (zh) | 2020-08-28 | 2020-08-28 | 一种嵌入式多指令集处理器设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885161.9A CN111913745B (zh) | 2020-08-28 | 2020-08-28 | 一种嵌入式多指令集处理器设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913745A true CN111913745A (zh) | 2020-11-10 |
CN111913745B CN111913745B (zh) | 2022-06-28 |
Family
ID=73267659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010885161.9A Active CN111913745B (zh) | 2020-08-28 | 2020-08-28 | 一种嵌入式多指令集处理器设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913745B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590194A (zh) * | 2021-07-22 | 2021-11-02 | 中国人民解放军国防科技大学 | 一种跨指令集的执行部件移植与剪裁方法 |
CN114168197A (zh) * | 2021-12-09 | 2022-03-11 | 海光信息技术股份有限公司 | 指令执行方法、处理器以及电子装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080172657A1 (en) * | 2007-10-01 | 2008-07-17 | The Board Of Trustees Of The Leland Stanford Junior University | Binary translation using peephole translation rules |
US20100262955A1 (en) * | 1999-10-13 | 2010-10-14 | Robert Bedichek | Method for integration of interpretation and translation in a microprocessor |
CN102799461A (zh) * | 2011-05-24 | 2012-11-28 | 联想(北京)有限公司 | 一种应用的执行方法、装置及电子设备 |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
CN107133017A (zh) * | 2016-02-29 | 2017-09-05 | 罗伯特·博世有限公司 | 用于运行微处理器的方法 |
-
2020
- 2020-08-28 CN CN202010885161.9A patent/CN111913745B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100262955A1 (en) * | 1999-10-13 | 2010-10-14 | Robert Bedichek | Method for integration of interpretation and translation in a microprocessor |
US20080172657A1 (en) * | 2007-10-01 | 2008-07-17 | The Board Of Trustees Of The Leland Stanford Junior University | Binary translation using peephole translation rules |
CN102799461A (zh) * | 2011-05-24 | 2012-11-28 | 联想(北京)有限公司 | 一种应用的执行方法、装置及电子设备 |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
CN107133017A (zh) * | 2016-02-29 | 2017-09-05 | 罗伯特·博世有限公司 | 用于运行微处理器的方法 |
Non-Patent Citations (1)
Title |
---|
SCHIAVONE P D: "Slow and Steady Wins the Race? A Comparison of Ultra-Low-Power RISC-V Cores or Internet-of-Things Applications", 《2017 27TH INTERNATIONAL SYMPOSIUM ON POWER AND TIMING MODELING,OPTIMIZATION AND SIMULATION (PATMOS)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590194A (zh) * | 2021-07-22 | 2021-11-02 | 中国人民解放军国防科技大学 | 一种跨指令集的执行部件移植与剪裁方法 |
CN113590194B (zh) * | 2021-07-22 | 2024-03-26 | 中国人民解放军国防科技大学 | 一种跨指令集的执行部件移植与剪裁方法 |
CN114168197A (zh) * | 2021-12-09 | 2022-03-11 | 海光信息技术股份有限公司 | 指令执行方法、处理器以及电子装置 |
CN114168197B (zh) * | 2021-12-09 | 2023-05-23 | 海光信息技术股份有限公司 | 指令执行方法、处理器以及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111913745B (zh) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7203932B1 (en) | Method and system for using idiom recognition during a software translation process | |
US9146740B2 (en) | Branch prediction preloading | |
US9367471B2 (en) | Fetch width predictor | |
US20150106598A1 (en) | Computer Processor Employing Efficient Bypass Network For Result Operand Routing | |
CN111913745B (zh) | 一种嵌入式多指令集处理器设计方法 | |
KR20150038408A (ko) | 가속된 레인 간 벡터 감축 명령어들 | |
US10713053B2 (en) | Adaptive spatial access prefetcher apparatus and method | |
US20120284489A1 (en) | Methods and Apparatus for Constant Extension in a Processor | |
KR20070116857A (ko) | 예측성 프로세서 컴퍼넌트 서스펜션을 위한 시스템 및 방법 | |
US11861367B2 (en) | Processor with variable pre-fetch threshold | |
KR20160130324A (ko) | 1들을 최하위 비트들이 되도록 풀링하면서 비트들을 좌측으로 시프팅하기 위한 명령어 | |
US7873819B2 (en) | Branch target buffer addressing in a data processor | |
KR20200138439A (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
TW201346732A (zh) | 指示可變長度指令集的指令長度之技術 | |
GB2515148A (en) | Converting conditional short forward branches to computationally equivalent predicated instructions | |
US20040181654A1 (en) | Low power branch prediction target buffer | |
EP4020114A1 (en) | Time and frequency domain side-channel leakage suppression using integrated voltage regulator cascaded with runtime crypto arithmetic transformations | |
KR20040045467A (ko) | 자바 하드웨어 가속기에 대한 추론적 실행 | |
CN114661358A (zh) | 基于分支指令信息来访问分支目标缓冲器 | |
US20190370038A1 (en) | Apparatus and method supporting code optimization | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
US7925855B1 (en) | Method and system for using external storage to amortize CPU cycle utilization | |
CN114661360A (zh) | 基于分支指令类型的分段分支目标缓冲器 | |
Benini et al. | Code compression architecture for cache energy minimisation in embedded systems | |
CN112395000A (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 |