RISCV32 与 RISCV64

aqu*_*019 1 assembly riscv riscv32

Riscv32 和 Riscv64 有什么区别?我一直在研究 ISA 文档,但找不到任何地方明确提到它,所以现在很困惑。

不幸的是,我无法从谷歌找到任何关于此的文档。有什么指针吗?

Eri*_*idt 8

RISC V 有很多选择。RV32I 和 RV64I 是基本指令集,分别是 32 位和 64 位指令集。 \xc2\xa0 还有一个 128 位版本 RV128I,以及一个较小的 32 位版本 RV32E,它只有 16 个通用指令集\xc2\xa0 对于所有指令集,基本集都是 32 位指令。

\n

对于基本指令集,它们添加了可选扩展,例如浮点、乘法和除法等,因此 RV32IMAC 是基于 RV32I 并具有 M、A 和 C 扩展。

\n

RV32I、RV64I 和 RV128I 之间的主要区别在于寄存器的宽度,宽度为 32、64 或 128 位 \xe2\x80\x94 以及较大宽度带来的地址空间的预期增加。\xc2\xa0 所有指令集使用 32 位指令,并使用压缩指令选项 RVC,将 16 位指令添加到混合中。\xc2\xa0 尚未将更大尺寸的指令定义为标准,但有用于更大指令的操作码空间,例如,48 位、64 位及以上可以添加到 RV32 或 RV64(或 RV128)。

\n

RV32 和 RV64 之间也存在一些操作码差异。\xc2\xa0 较大的宽度会添加一些指令来处理较大的尺寸。\xc2\xa0 RV64I 例如,使用与 RV32I 相同的操作码进行添加,但意味着64 位加法而不是 32 位加法,而 RV64I 中有一个新的操作码用于仅执行 32 位加法 (addw)。\xc2\xa0 RV64I 使用与 RV32I 相同的操作码进行加载和存储(对于字节数据) 、半位和 32 位字长),但包括用于加载/存储 64 位数据的新操作码。

\n

否则,RV64 相对于 RV32 的一个好处是能够寻址大于 4GB 的大地址空间,这也适用于 x86 与 x64。\xc2\xa0 由于我们可能会用完 32 位地址空间的数据空间,因此更大的地址空间以及能够在 64 位寄存器中进行 64 位计算是该处理器被称为 64 位处理器的要点(尽管共享 32 位 RV32 的指令大小)(这在很大程度上也适用于x86 与 x64,因为它们之间有很多相似之处,例如从 1 字节到 10 字节左右的可变长度指令。)

\n

也可以看看:

\n\n