gpt4 book ai didi

cpu-architecture - RISC V手册混淆: instruction format VS immediate format

转载 作者:行者123 更新时间:2023-12-04 07:24:25 25 4
gpt4 key购买 nike

我有一些与 RISC V 手册相关的问题它有不同类型的指令编码,如R型、I型。就像 MIPS 编码一样。

* R-type

31 25 24 20 19 15 14 12 11 7 6 0
+------------+---------+---------+------+---------+-------------+
| funct7 | rs2 | rs1 |funct3| rd | opcode |
+------------+---------+---------+------+---------+-------------+

* I-type

31 20 19 15 14 12 11 7 6 0
+----------------------+---------+------+---------+-------------+
| imm | rs1 |funct3| rd | opcode |
+----------------------+---------+------+---------+-------------+

* S-type

31 25 24 20 19 15 14 12 11 7 6 0
+------------+---------+---------+------+---------+-------------+
| imm | rs2 | rs1 |funct3| imm | opcode |
+------------+---------+---------+------+---------+-------------+

* U-type

31 11 7 6 0
+---------------------------------------+---------+-------------+
| imm | rd | opcode |
+---------------------------------------+---------+-------------+

但它还有一种叫做立即格式的东西: 如I-立即、S-立即等

* I-immediate

31 10 5 4 1 0
+-----------------------------------------+-----------+-------+--+
| <-- 31 | 30:25 | 24:21 |20|
+-----------------------------------------+-----------+-------+--+

* S-immediate

31 10 5 4 1 0
+-----------------------------------------+-----------+-------+--+
| <-- 31 | 30:25 | 11:8 |7 |
+-----------------------------------------+-----------+-------+--+

* B-immediate

31 12 11 10 5 4 1 0
+--------------------------------------+--+-----------+-------+--+
| <-- 31 |7 | 30:25 | 11:8 |z |
+--------------------------------------+--+-----------+-------+--+

* U-immediate

31 30 20 19 12 11 0
+--+-------------------+---------------+-------------------------+
|31| 30:20 | 19:12 | <-- z |
+--+-------------------+---------------+-------------------------+

* J-immediate

31 20 19 12 11 10 5 4 1 0
+----------------------+---------------+--+-----------+-------+--+
| <-- 31 | 19:12 |20| 30:25 | 24:21 |z |
+----------------------+---------------+--+-----------+-------+--+

根据手册,它说这些立即数是由RISC-V指令产生的,但是它们之间有什么关系?

立即格式有什么意义?

最佳答案

第二组图向您展示了立即数位如何连接并符号扩展为 32 位整数(因此它们可以用作普通 32 位 ALU 指令(如 addi )的源操作数,这些指令既需要他们的输入大小相同)。

对于 I 类型指令,这很简单,只需将指令字算术右移 20 位即可,因为只有一个立即数字段,并且它在指令字的顶部是连续的。

对于S型立即数指令,指令字中有两个单独的字段:[31:25][11:7] ,这表明它们是按这个顺序排列的,而不是 [11:7, 31:25]并且它们之间没有任何隐含的零。

B 型立即数指令显然将位 7 放在 [30:25] 前面,低位是隐含的零。 (所以结果数字总是偶数)。我认为 B 型适用于分支。

U 类型也很有趣,用尾随零填充 20 位立即数。它用于lui创建 32 位常量的高位(addi 提供其余部分)。 U 类型和 I 类型总共有 32 个立即位,这并非巧合。

要访问静态数据,lui可以创建地址的高位部分,而 lw可以直接提供低部分,而不是使用 addi在寄存器中创建完整地址。这对于 MIPS 和 PowerPC 等 RISC ISA 来说也是典型的(参见示例 on the Godbolt compiler explorer )。但与大多数其他 RISC ISA 不同,RISC-V 有 auipc which adds the U-type immediate to the program counter ,无需从 GOT(全局偏移表)加载地址即可实现高效 PIC。 (最近的 MIPS 修订版还添加了一条 add-to-PC 指令,但很长一段时间 MIPS 在 PIC 方面表现相当糟糕)。

lui可以编码任何 4k 对齐地址,即具有 4k 页的页起始地址。

关于cpu-architecture - RISC V手册混淆: instruction format VS immediate format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com