CN111090465B - 一种rv32ic指令集的译码系统及其译码方法 - Google Patents
一种rv32ic指令集的译码系统及其译码方法 Download PDFInfo
- Publication number
- CN111090465B CN111090465B CN201911317893.1A CN201911317893A CN111090465B CN 111090465 B CN111090465 B CN 111090465B CN 201911317893 A CN201911317893 A CN 201911317893A CN 111090465 B CN111090465 B CN 111090465B
- Authority
- CN
- China
- Prior art keywords
- instruction
- bit
- unit
- risc
- decoding
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种RV32IC指令集的译码系统,包括RV32I指令集单元,包含32位I类型RISC‑V指令的编码信息;RV32C指令集单元,包含16位压缩RISC‑V指令的编码信息;32位指令重建单元,用于将16位RISC‑V压缩指令转化为对应的32位RISC‑V指令;还包括32位指令拆分单元、控制与数据生成单元和选择器,系统针对RV32IC指令集设计出最少的运算单元并加以复用,高效编码运算控制信号,由此大大减小逻辑的面积,从而从根本上降低了译码的逻辑复杂性以及有效减少译码逻辑单元数,为低功耗低面积的RISC‑V处理器设计提供了一种高效的译码系统和方法。
Description
技术领域
本发明涉及处理器技术领域,具体的说,是一种RV32IC指令集的译码系统及其译码方法。
背景技术
RISC-V指令集是由2010年加州大学伯克利分校提出的一种开源指令集。32位ARM指令集格式的条件码cond完全对齐。32位RISC-V指令集格式的操作码opcode完全对齐,且功能位funct3也在相同的比特位上。16位RISC-V指令集格式的操作码op完全对齐,且功能位funct3也在相同的比特位上。
RISC-V指令集较ARM指令集具有更加规整的指令格式。如何对RISC-V指令进行快速译码并高效编码运算处理的控制信号以及操作数据是设计低功耗、低面积的RISC-V处理器的一个关键。传统的译码方式是直接全译,即每一条指令对应着自己的全译码逻辑,尚未对一些共有的逻辑单元进行复用。因此,随着指令数的增加,译码逻辑面积也近是呈线性增加,导致功耗也跟随着增加。此外,译码产生的运算控制信号与运算单元的类型息息相关,较多的运算单元意味着越大的逻辑面积,不利于降低芯片的功耗。
发明内容
本发明的目的在于提供一种RV32IC指令集的译码系统及其译码方法,用于解决现有技术中编码方式的逻辑复杂度高、逻辑面积大,从而功耗非常高的问题。
本发明通过下述技术方案解决上述问题:
一种RV32IC指令集的译码系统,包括
RV32I指令集单元,包含32位I类型RISC-V指令的编码信息;
RV32C指令集单元,包含16位压缩RISC-V指令的编码信息;
32位指令重建单元,用于将16位RISC-V压缩指令转化为对应的32位RISC-V指令;
32位指令拆分单元,用于将32位RISC-V指令进行拆分,提取指令中包含的指令信息;
控制与数据生成单元,用于将32位指令拆分单元提取的指令信息进行控制编码与数据处理,生成控制信号与操作数据;
选择器,其输入端为系统输入入口,同时与32位指令重建单元的输出端相连,用于输入数据和32位指令重建单元输出数据的判断选择,输出端与32位指令拆分单元相连。
优选地,所述控制与数据生成单元之后连接有运算单元。
优选地,所述运算单元包括加法运算单元、异或运算单元、或运算单元、与运算单元以及带符号右移运算单元,根据指令类型进行运算类型的选择。
优选地,所述加法运算单元适用于加法指令、减法指令、相等比较指令和小于比较指令;异或运算单元可以适用于异或指令;或运算单元可以使用于或运算指令;与运算单元可以适用于与运算指令;带符号右移运算单元可以适用于左移运算指令、右移运算指令。
还包括一种RV32IC指令集的译码方法,适用于上述编码系统,所述方法包括如下步骤:
步骤1:系统接收输入的RV32IC指令,并根据该指令的低两比特位进行判断,若为“11”则跳转到步骤4,否则跳转到步骤2;
步骤2:根据op位即低两比特位以及funct3位和/或funct4位快速译出16位指令,跳转至步骤3;
步骤3:将16为指令转换为对应的32位指令,然后跳转至步骤4;
步骤4:根据RV32I指令集的编码对其inst[6:2]位,即opcode[6:2]位进行判断,然后依据funct3位或funct7位译出该32位指令。
优选地,所述方法还包括步骤5:对控制与数据生成单元依据指令信息进行编码运算控制信号、非运算控制信号以及操作数处理。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明将16位指令转为32位指令,统一为32位指令格式,降低32位指令拆分以及控制与数据生成的逻辑复杂度;
(2)本发明针对RV32IC指令集设计出最少的运算单元并加以复用,高效编码运算控制信号,由此大大减小逻辑的面积,从而从根本上降低了译码的逻辑复杂性以及有效减少译码逻辑单元数,为低功耗低面积的RISC-V处理器设计提供了一种高效的译码方法。
(3)本发明针对32位指令提出了详细的逐层次的译码流程以及相应的译码系统,很好的解决现有技术中译码的逻辑面积大的问题。
附图说明
图1为本发明的RV32IC指令集的译码系统的组成结构及指令流向示意图。
图2为本发明的RV32IC指令集的译码方法的流程示意图。
图3为本发明的32位RISC-V指令集格式图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种RV32IC指令集的译码系统,包括
RV32I指令集单元,包含32位I类型RISC-V指令的编码信息;
RV32C指令集单元,包含16位压缩RISC-V指令的编码信息;
32位指令重建单元,用于将16位RISC-V压缩指令转化为对应的32位RISC-V指令;
32位指令拆分单元,用于将32位RISC-V指令进行拆分,提取指令中包含的指令信息;
控制与数据生成单元,用于将32位指令拆分单元提取的指令信息进行控制编码与数据处理,生成控制信号与操作数据;
选择器,其输入端为系统输入入口,同时与32位指令重建单元的输出端相连,用于输入数据和32位指令重建单元输出数据的判断选择,输出端与32位指令拆分单元相连,一般采用2选1的选择器即可,附图1中表示为MUX。
本系统后还可设置包括加法运算单元、异或运算单元、或运算单元、与运算单元以及带符号右移运算单元的运算单元,用于对系统的控制与数据生成单元所输出的指令进行运算,但运算单元的结构并不仅限于此,可以根据实际应用的需要进行运算单元的增减。
系统的具体工作流程如图2所示,具体的,以支持RISC-V的32位I类及32位C类指令集RV32IC为例:
若输入指令为一条RV32I类指令,系统接收后进入如下流程:
step1:判断该指令的inst[1:0],发现是“11”,表明是一条RV32I类指令。
step2:判断inst[6:2]位,依据RV32I类指令集的编码信息进行判断该指令所属RV32I类中的类型。
step3:如果属于RV32I类中的U型或者J型指令,类型可见32位RISC-V指令集格式表,如图3所示,则利用32位指令拆分单元提取出该指令数据信息,包括立即数信息imm以及目标寄存器地址信息rd,同时根据该指令的含义,设置对应的指令控制信息;如果不属于RV32I类型中的U型或者J型指令,则再次依据指令的funct3或funct7比特位译出该指令,同时利用32位指令拆分单元提取出该指令数据信息,包括立即数信息imm,源寄存器地址信息rs1,rs2,以及目标寄存器地址信息rd,同时根据该指令的含义,设置对应的指令控制信息。
step4:将上述产生的指令数据信息以及指令控制信息送入控制与数据生成单元,将数据信息进行处理,如将立即数信息处理后得到32位的立即数;同时,根据指令的控制信息,选择对应的运算单元,并编码运算控制信号为使用该运算单元,如减法指令可以选择使用加法器运算单元,编码运算控制信号为使用加法运算单元。非运算操作的控制信号,如读写数据存储器的操作,回写通用寄存器的操作,也应由该指令的含义去指示产生。
若输入指令为一条RV32C类指令,进入如下流程:
step1:判断该指令的inst[1:0],发现不是“11”,表明是一条RV32C类指令。
step2:依据该指令的op位,funct3位或者funct4位直接快速译出该指令。
step3:将该16位压缩指令转为32位指令。
step4:如果属于RV32I类中的U型或者J型指令,同如图3所示,则利用32位指令拆分单元提取出该指令数据信息,包括立即数信息imm以及目标寄存器地址信息rd,同时根据该指令的含义,设置对应的指令控制信息;如果不属于RV32I类型中的U型或者J型指令,则再依据指令的funct3或funct7比特位译出该指令,同时利用32位指令拆分单元提取出该指令数据信息,包括立即数信息imm,源寄存器地址信息rs1,rs2,以及目标寄存器地址信息rd,同时根据该指令的含义,设置对应的指令控制信息。
step5:将上述产生的指令数据信息以及指令控制信息送入控制与数据生成单元,将数据信息进行处理,如将立即数信息处理后得到32位的立即数;同时,根据指令的控制信息,选择对应的运算单元,并编码运算控制信号为使用该运算单元,如左移指令可以选择使用右移运算单元,编码运算控制信号为使用右移运算单元。非运算操作的控制信号,如读写数据存储器的操作,回写通用寄存器的操作,也应由该指令的含义去指示产生。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种RV32IC指令集的译码系统,其特征在于:包括
RV32I指令集单元,包含32位I类型RISC-V指令的编码信息;
RV32C指令集单元,包含16位压缩RISC-V指令的编码信息;
32位指令重建单元,用于将16位RISC-V压缩指令转化为对应的32位RISC-V指令;
32位指令拆分单元,用于将32位RISC-V指令进行拆分,提取指令中包含的指令信息;
控制与数据生成单元,用于将32位指令拆分单元提取的指令信息进行控制编码与数据处理,生成控制信号与操作数据;所述控制与数据生成单元之后连接有运算单元;所述运算单元包括加法运算单元、异或运算单元、或运算单元、与运算单元以及带符号右移运算单元,根据指令类型进行运算类型的选择;所述加法运算单元适用于加法指令、减法指令、相等比较指令和小于比较指令;异或运算单元可以适用于异或指令;或运算单元可以使用于或运算指令;与运算单元可以适用于与运算指令;带符号右移运算单元可以适用于左移运算指令、右移运算指令;
选择器,其输入端为系统输入入口,同时与32位指令重建单元的输出端相连,用于输入数据和32位指令重建单元输出数据的判断选择,输出端与32位指令拆分单元相连。
2.一种RV32IC指令集的译码方法,其特征在于,所述方法包括如下步骤:
步骤1:系统接收输入的RV32IC指令,并根据该指令的低两比特位进行判断,若为“11”则跳转到步骤4,否则跳转到步骤2;
步骤2:根据op位即低两比特位以及funct3位和/或funct4位快速译出16位指令,跳转至步骤3;
步骤3:将16位指令转换为对应的32位指令,然后跳转至步骤4;
步骤4:根据RV32I指令集的编码对其inst[6:2]位,即opcode[6:2]位进行判断,然后依据funct3位或funct7位译出该32位指令;
所述方法还包括步骤5:对控制与数据生成单元依据指令信息进行编码运算控制信号、非运算控制信号以及操作数处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911317893.1A CN111090465B (zh) | 2019-12-19 | 2019-12-19 | 一种rv32ic指令集的译码系统及其译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911317893.1A CN111090465B (zh) | 2019-12-19 | 2019-12-19 | 一种rv32ic指令集的译码系统及其译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111090465A CN111090465A (zh) | 2020-05-01 |
CN111090465B true CN111090465B (zh) | 2022-08-19 |
Family
ID=70395765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911317893.1A Active CN111090465B (zh) | 2019-12-19 | 2019-12-19 | 一种rv32ic指令集的译码系统及其译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090465B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256330B (zh) * | 2020-11-03 | 2021-11-09 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436781A (zh) * | 2011-11-04 | 2012-05-02 | 杭州中天微系统有限公司 | 基于隐式相关性和隐式旁路的微处理器指令拆分装置 |
CN104407880A (zh) * | 2014-10-27 | 2015-03-11 | 杭州中天微系统有限公司 | 支持硬件非对齐存储访问的risc处理器加载/存储单元 |
CN108780394A (zh) * | 2015-12-29 | 2018-11-09 | 英特尔公司 | 用于转换编码格式的硬件装置和方法 |
CN110018848A (zh) * | 2018-09-29 | 2019-07-16 | 安凯(广州)微电子技术有限公司 | 一种基于risc-v的混合混算系统及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US7594098B2 (en) * | 2005-07-01 | 2009-09-22 | Stmicroelectronics, Sa | Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN105677298B (zh) * | 2015-12-30 | 2018-03-27 | 李朝波 | 一种将计算机指令中立即数扩展的方法和装置 |
CN109918130A (zh) * | 2019-01-24 | 2019-06-21 | 中山大学 | 一种具有快速数据旁路结构的四级流水线risc-v处理器 |
-
2019
- 2019-12-19 CN CN201911317893.1A patent/CN111090465B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436781A (zh) * | 2011-11-04 | 2012-05-02 | 杭州中天微系统有限公司 | 基于隐式相关性和隐式旁路的微处理器指令拆分装置 |
CN104407880A (zh) * | 2014-10-27 | 2015-03-11 | 杭州中天微系统有限公司 | 支持硬件非对齐存储访问的risc处理器加载/存储单元 |
CN108780394A (zh) * | 2015-12-29 | 2018-11-09 | 英特尔公司 | 用于转换编码格式的硬件装置和方法 |
CN110018848A (zh) * | 2018-09-29 | 2019-07-16 | 安凯(广州)微电子技术有限公司 | 一种基于risc-v的混合混算系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111090465A (zh) | 2020-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292222B (zh) | 用于数据解压缩的硬件装置和方法 | |
Beszédes et al. | Survey of code-size reduction methods | |
TWI731868B (zh) | 用於使用硬體與軟體之壓縮的系統、方法及裝置 | |
CN1933334B (zh) | 从比例二进制编码十进制转换到十进制浮点的系统和方法 | |
CN105264779A (zh) | 使用simd指令的数据压缩和解压 | |
JP5869125B2 (ja) | エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 | |
KR100991700B1 (ko) | 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
CN111090465B (zh) | 一种rv32ic指令集的译码系统及其译码方法 | |
Xie et al. | A code decompression architecture for VLIW processors | |
Wang et al. | Code compression for embedded systems using separated dictionaries | |
CN109558169B (zh) | 一种微处理器指令集在线可重构方法 | |
Bonny et al. | Efficient code compression for embedded processors | |
TW201419140A (zh) | 可重新配置的指令編碼方法、執行方法及電子裝置 | |
US20070118722A1 (en) | Method for compressing instruction codes | |
TW201319934A (zh) | 可重新配置的指令編碼方法及處理器架構 | |
Bonny et al. | Instruction re-encoding facilitating dense embedded code | |
Chen et al. | Improved Dictionary-Based Code-Compression Schemes with XOR Reference for RISC/VLIW Architecture | |
Santos et al. | Instruction decoders based on pattern factorization | |
CN105426161A (zh) | 一种power指令集向量协处理器的译码电路 | |
Xianhua et al. | Efficient code size reduction without performance loss | |
GB2314947A (en) | Digital signal processor | |
CN114299971A (zh) | 一种语音编码方法、语音解码方法和语音处理装置 | |
CN117806705A (zh) | 一种压缩指令的执行方法及系统级芯片 | |
JP2020047221A (ja) | プロセッサ、情報処理方法、プログラム |
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 |