MIPS和ARM数据通路的区别

4
我刚上课学了 MIPS 架构。我正在阅读其他指令集架构(目前是 ARM),发现 ARM 和 MIPS 之间存在一些差异,比如不同的指令格式、寄存器集等。
ARM 数据通路与 MIPS 有什么区别吗?因为数据通路涉及取指、解码和执行指令,对于所有指令集架构来说必须是相同的。
我在阅读资料时没有找到关于 ARM 数据通路方面的信息。

1
ARM和MIPS都可以使用不同的微体系结构进行实现(并且它们已经被实现了),因此根据您比较的实现对,差异就有多少就有多少。 - harold
1
一个重要的区别是ARM有很多条件执行,而MIPS有延迟槽。此外,ARM有一个条件寄存器,需要特殊处理以获得良好的性能。ARM还具有相当复杂的寻址、预移位算术操作和序列化的加载/存储操作。另一方面,MIPS有一个可怕的乘除单元,需要特殊处理。 - EOF
1
可能是因为没有一个“数据路径”。您有一个指定程序员模型的ISA规范,以及使用具有(许多)数据路径的微架构的实现。 - EOF
1
@EOF 最后一个问题(抱歉打扰),如果我们考虑标量顺序流水线MIPS和ARM流水线设计的简化模型,数据路径会有什么区别?假设我们只考虑基本指令,如ADD、LDR、SDR和分支指令。 - azhar baloch
1
在这种模型中,由于缺少延迟槽,ARM在误判分支时会倾向于具有一个周期更长的流水线气泡。 - EOF
显示剩余4条评论
2个回答

5
你学习过的MIPS无疑是教科书(Patterson和Hennessey)中的一个版本。实际的MIPS核心和ARM核心可以/确实因核心而异,你可以拥有多个不同于流水线阶段实现的armv7-m核心。注意ARM和MIPS以及RISC通常不是微码化的,不要让x86实现影响你的理解。
因此,对于这个问题没有一个答案,并且对于MIPS处理器使用什么数据路径、ARM处理器使用什么数据路径来进行取指、译码、执行、写回等步骤也没有一个统一的答案。
所有处理器无论是否是RISC都使用了fetch、decode、execute等概念,只是它们如何以及何时执行这些概念的细节不同。它们可以将这些步骤分解为更小的步骤并在更长的管道中实现,或者并行执行并拥有更宽的管道。
如果想了解更多关于MIPS,可以前往MIPS网站下载他们的文档;如果想了解关于ARM的信息,则需要查看特定架构系列和感兴趣的具体核心的体系结构参考手册和技术参考手册。此外,您可能还需要获取amba / axi文档以了解总线如何工作,尽管您可以设计一个使用不同总线的ARM,但如果您被教授了传统的地址双向数据、写入 strobe、读取 strobe、chip enable 类型的总线,则这是一种很好的教育方式。

ARM32今天是非常微码化的。你只需要看一下架构手册,就会发现有很多指令由于修改多个寄存器等原因无法适应超标量/乱序执行范式。Aarch64清理了最糟糕的情况(LDM/STM、SMULL/UMULL、VTRN/VZIP/VUZP/VSWP...)。 - EOF
定义:今天,从哪个架构开始,您认为这是发生的?ldm/stm对于状态机来说很琐碎,乘法不需要微代码,这些都很容易实现。 - old_timer
没有意义会浪费大量的空间,多个寄存器,超标量不需要微码... - old_timer

2

两者都是RISC(精简指令集架构)。

根据D.Patterson和L.Hennessy的说法:

主要区别在于MIPS具有更多寄存器,而ARM具有更多寻址模式。对于算术逻辑和数据传输指令,MIPS和ARM具有类似的指令集核心。

与MIPS不同,ARM不保留一个寄存器来包含0。虽然MIPS只有三种简单的数据寻址模式,但ARM有九种。

条件分支

MIPS使用寄存器内容来评估条件分支。ARM使用存储在程序状态字中的传统四个条件码位:负数进位溢出。它们可以在任何算术或逻辑指令上设置;与早期架构不同,这种设置在每个指令上是可选的。显式选项会导致流水线实现中出现较少的问题。ARM使用条件分支来测试条件码以确定所有可能的无符号和有符号关系。[D.Patterson和L.Hennessey的《计算机组织与设计》]

我找不到关于ARM数据路径的信息?

我建议您阅读D.Patterson和L.Hennessey的《计算机组织与设计》ARM版。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接