gpt4 book ai didi

assembly - 为什么 RV64 为 32 位操作而不是 64 位操作引入了新的操作码

转载 作者:行者123 更新时间:2023-12-04 19:33:12 35 4
gpt4 key购买 nike

在阅读 RISC-V 规范时,我注意到 64 位版本与 32 位版本的不同之处在于,它

  • 将寄存器扩展到 64 位
  • 更改了在整个 64 位范围内操作的指令。
  • 添加了执行 32 位操作的新指令

  • 这使得 RV32 代码与 RV64 不兼容。
    但是,如果 64 位版本已通过以下方式实现:
  • 将寄存器扩展到 64 位
  • 重命名 ADD/SUB/SHL/..ADDW/SUBW/SHLW/..并使它们仅在带符号扩展的 32 位上运行。
  • 添加新说明 ADD/SUB/SHL/..ADDD/SUBD/SHLD/..作用于完整的 64 位

  • 这将允许 RV32 程序也可以在 RV64 上运行。为了实现 CPU,工作量将保持不变,因为在这两种情况下都必须实现 64 位和 32 位指令,并且只有 64 位和 32 位版本的操作码会被交换到规范。 (除了乘法指令。)

    那么为什么 RISC-V 决定将新的操作码分配给 32 位操作而不是 RV64 中的 64 位操作呢?

    最佳答案

    RV64 和 RV32 非常兼容。如果程序不依赖于隐式 32 位模运算并且所有地址都适合 32 位,则机器代码可能是相同的。但是,将完整的 RV32 用户模式添加到 RV64 处理器非常容易。

    RV32 的 64 位超集太复杂了。 AUIPC、JAL、LOAD、STORE 和 BRANCH 没有足够的操作码空间。额外的扩展会更糟。

    RV64 中的少数 32 位指令主要用于过度使用模 32 位算法的程序。这是很常见的问题。但是,快速且可移植的代码应该避免它们。

    关于assembly - 为什么 RV64 为 32 位操作而不是 64 位操作引入了新的操作码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42627337/

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