【RISC-V设计-03】- RISC-V指令集之基本整数指令

发布于:2024-08-09 ⋅ 阅读:(120) ⋅ 点赞:(0)

【RISC-V设计-03】- RISC-V指令集之基本整数指令

1. 基本指令简介

RV32I 是 RISC-V 指令集体系结构的一个基本指令集,其中“RV”代表 RISC-V,“32”表示 32 位,“I”表示整数(Integer)。这是所有 RISC-V 处理器都必须实现的指令集。RV32I 指令集的指令清单可以分为四大类,包括整数操作、加载与存储、控制转移(条件分支跳转和无条件跳转)以及杂项操作等。

2. 立即数运算指令

I型指令:立即数运算指令
序号 指令
31
25
24
20
19
15
14
12
11
7
6
0
1 ADDI imm[11:0] rs 000 rd 0010011
2 SLTI imm[11:0] rs 001 rd 0010011
3 SLTIU imm[11:0] rs 011 rd 0010011
4 XORI imm[11:0] rs 100 rd 0010011
5 ORI imm[11:0] rs 110 rd 0010011
6 ANDI imm[11:0] rs 111 rd 0010011
7 SLLI 0000000 shamt rs 001 rd 0010011
8 SRLI 0000000 shamt rs 101 rd 0010011
9 SRAI 0100000 shamt rs 101 rd 0010011

3. 寄存器运算指令

R型指令:寄存器运算指令
序号 指令
31
25
24
20
19
15
14
12
11
7
6
0
1 ADD 0000000 rs2 rs1 000 rd 0110011
2 SUB 0100000 rs2 rs1 000 rd 0110011
3 SLL 0000000 rs2 rs1 001 rd 0110011
4 SLT 0000000 rs2 rs1 010 rd 0110011
5 SLTU 0000000 rs2 rs1 011 rd 0110011
6 XOR 0000000 rs2 rs1 100 rd 0110011
7 SRL 0000000 rs2 rs1 101 rd 0110011
8 SRA 0100000 rs2 rs1 101 rd 0010011
9 OR 0000000 rs2 rs1 110 rd 0110011
10 AND 0000000 rs2 rs1 111 rd 0110011

4. 加载与存储指令

I和S型指令:加载与存储指令
序号 指令
31
25
24
20
19
15
14
12
11
7
6
0
1 LB imm[11:0] rs 000 rd 0000011
2 LBU imm[11:0] rs 100 rd 0000011
3 LH imm[11:0] rs 001 rd 0000011
4 LHU imm[11:0] rs 101 rd 0000011
5 LW imm[11:0] rs 010 rd 0000011
6 SB imm[11:5] rs2 rs1 000 imm[4:0] 0100011
7 SH imm[11:5] rs2 rs1 001 imm[4:0] 0100011
8 SW imm[11:5] rs2 rs1 010 imm[4:0] 0100011

5. 无条件长跳转指令

U和UJ型指令:长跳转指令
序号 指令 31
30
21
20
19
15
14
12
11
7
6
0
1 JAL imm[20] imm[10:1] imm[11] imm[19:12] rd 1101111
2 JALR imm[11:0] rs 000 rd 1101111

6. 有条件分支指令

SB型指令:条件分支指令
序号 指令 31
30
25
24
20
19
15
14
12
11
8
7
6
0
1 BEQ imm[12] imm[10:5] rs2 rs1 000 imm[4:1] imm[11] 1100011
2 BNE imm[12] imm[10:5] rs2 rs1 001 imm[4:1] imm[11] 1100011
3 BLT imm[12] imm[10:5] rs2 rs1 100 imm[4:1] imm[11] 1100011
4 BGE imm[12] imm[10:5] rs2 rs1 101 imm[4:1] imm[11] 1100011
5 BLTU imm[12] imm[10:5] rs2 rs1 110 imm[4:1] imm[11] 1100011
6 BGEU imm[12] imm[10:5] rs2 rs1 111 imm[4:1] imm[11] 1100011

7. 立即数加载指令

U型指令:长立即数指令
序号 指令
31
12
11
7
6
0
1 LUI imm[31:12] rd 0110111
2 AUIPC imm[31:12] rd 0010111

8. 杂项操作指令

特殊型指令:杂项指令
序号 指令
31
28
27
24
23
20
19
15
14
12
11
7
6
0
1 FENCE 0000 pred succ 00000 000 00000 0001111
2 ECALL 0000 0000 0000 00000 000 00000 1110011
3 EBREAK 0000 0000 0001 00000 000 00000 1110011

9. 指令集总结

RV32I 是 RISC-V 最为基础的指令。在之前的版本里,涵盖有 CSR 指令以及 Fence.I 指令。然而,在最新的规范当中,它们从 RV32I 中被移除,转而成为独立的 Z 扩展指令,即 Zicsr 和 Zifencei 。这种改变促使设计变得更为灵活。在某些资源受限但对特定功能需求不高的小型嵌入式系统中,开发者可以根据实际应用场景和资源状况,决定是否要引入这两种指令,从而更好地优化系统性能和成本。像一些简单的传感器控制单元,可能就无需强制实现这两个指令,以节省硬件资源和设计复杂度。


网站公告

今日签到

点亮在社区的每一天
去签到