【问题标题】:Differences between RISC-V and others ISAsRISC-V 与其他 ISA 的区别
【发布时间】:2013-06-09 13:47:02
【问题描述】:

有人可以向我解释(RISC 与 CISC)与 RISC-V ISA 之间的巨大差异吗?我在互联网上找不到 CISC 和 RISC-V 之间的任何相关区别。

【问题讨论】:

标签: cpu-architecture riscv instruction-set


【解决方案1】:

RISC-V 是伯克利开发的一种新的 ISA,用于协助研究和教育。它是开放的、干净的、易于扩展的(而且也是现实的)。

构建研究处理器的一个常见问题是找到一个可以使用的 ISA,它不会与遗留决策(延迟槽、寄存器窗口)混淆,不受专利保护,并且有足够的操作码空间来探索新的指令/加速器/处理器微架构。

即将发布公开版本 (v2.0),您可以在 riscv.org 阅读当前草案。 (披露:我使用 RISC-V 进行自己的研究,我坐在设计和实施它的人旁边)。 [编辑:它已于 2014 年 5 月正式发布 (http://riscv.org/download.html#tab_isaspec)].

与其他ISA相比,它可能与MIPS和ARMv8最相似(RISC-V v1.0实际上是在ARMv8出来之前发布的)。它是一个加载存储架构(没有像 x86 这样的寄存器内存操作,除了一组 AMO)。 RISC-V 的某些部分可以说是“CISC-y”,例如出于能量原因支持压缩指令的选项(16b)或更大的指令以获得更多操作码空间(可变指令长度是可选的超集, ISA 的基本集是所有 32b 指令)。 FMA 也感觉有点 CISC-y,具有三个源操作数和两个操作。但现在我们正在进入关于什么是 CISC 和什么是 RISC 的意见领域。归根结底,RISC-V 是一个非常容易解码的 ISA,其中的所有指令都很容易安排和进行危险检查(没有奇怪的副作用,就像您在 CISC ISA 中发现的那样)。

【讨论】:

  • FMA 并没有真正实现为单独的a*b + c 操作;请记住,它必须避免对 a*b 结果进行任何舍入;这是重点的一部分。还要记住,乘法可以分解为部分乘积的加法,因此添加到现有操作数而不是零几乎不会增加任何成本。 (这部分参数更适用于整数乘法累加 (MAC) 指令,其中没有指数移位)。所以大部分成本是支持用于调度/危险检测跟踪的 3 输入指令。
【解决方案2】:

RISC-V 是一个研究 ISA,但已经有多个 FPGA 软核实现,而不是 提到模拟器。它与 MIPS(以及 NIOS 2、MicroBlaze、Alpha、LM32...)最相似,但一个重要的区别是如何处理分支:

可见的分支延迟槽在很大程度上被认为是复杂的超标量实现,并且对于编译器来说具有挑战性。随着分支预测的进步,它们不再需要,因此 RISC-V 省略了它们。此外,由于分支可以稍后在流水线中解析,RISC-V 的条件分支可以比较任意两个寄存器的相等性和顺序。

【讨论】:

  • 我想补充一点,根据他们在 (riscv.eecs.berkeley.edu) 找到的用户级别手册,他们还制造了六种实现 RISC-V 的设计(用于研究目的)。
  • MIPS64r6 (2014) 重新排列了操作码空间并提供了无延迟槽分支指令。但它仍然必须支持遗留的延迟分支,使 uarch 和异常返回格式复杂化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多