ARM、MIPS、RISC 您所在的位置:网站首页 mcplc指令 ARM、MIPS、RISC

ARM、MIPS、RISC

2023-03-22 10:41| 来源: 网络整理| 查看: 265

指令集大体上可以分为两大类:

CISC(complex instruction set computer)RISC(reduced instruction set computer)

由于 CISC 和 RISC 不像物理和数学概念一样可以做出无二义性的严谨定义,所以主流观点都认为

CISC 的指令隐含有对总线的 load / store 操作,即 add, sub 等算术逻辑指令的操作数允许是一个内存地址,执行操作数为内存地址的算术逻辑指令会先将数据从内存加载到 位于 Execute Unit 里面的 ALU 中进行运算

RISC 的指令若要读写总线则需要使用显式 load / store 指令,除此之外其他类型的指令不能读写总线

(这里的总线(BUS)读写是包括内存读写和外设 I/O 接口的输入和输出)

按照这种分类,以上三种指令集都属于 RISC

但是讨论 RISC 时还需要关注 RISC 系列指令集中每一条指令的原子化粒度,也就是这个指令集中每一条指令做的事情是否足够简单,指令集中的指令功能之间是否存在相互正交性(即功能之间互相不重复)

这也是 ARM,MIPS,RISC-V 三种 RISC 指令集的主要差别所在

先来看目前最流行的 ARM

ARM Architecture Reference Manual - https://documentation-service.arm.com/static/5f8dacc8f86e16515cdb865a

从这里可以看出 ARM 指令几乎全部都带有 cond 条件码,也就是说 ARM 的一条指令其实做了两件原子操作——判断+执行

另外这还只是 ARM 的 instructions 本身的特性,ARM Cortex 系列 CPU 还存在双 stack 机制和一些独特的权限切换方式,例如 BX LR 指令会判断某些 bit 来决定跳转目标应该使用的权限和 stack 段,如果抛开 load/store 这种狭义的 RISC 定义来看,ARM 其实已经算不上简单指令集了,因为它一条指令其实做了很多复杂的操作

再来看看 MIPS,MIPS 是早期龙芯的指令集,也是早期很多低端家用路由器,嵌入式设备,VCD/DVD 音响设备的 CPU 主要使用的指令集

https://www.dcc.fc.up.pt/~ricroc/aulas/1920/ac/apontamentos/P04_encoding_mips_instructions.pdf

MIPS 的机器码已经非常简单了,从图上可以看出 MIPS 仅仅有三种不同的 format

看幻灯片表格中的 comments 介绍,有人可能会惊讶地发现 MIPS 居然没有 CPU 中最常用的 MOVe 指令,这个指令去哪了呢?

回想一下我之前提到的指令的“正交性”,MIPS 其实在正交性上做得很好。因为 MOV 操作的本质是将一个寄存器的数据复制到另一个寄存器上,如果要实现这个操作,其实完全可以用多条现有的算术逻辑运算指令实现

举个例子:

MOV R0, #0 // R0=0

完全可以用 XOR R0, R0

并且事实上现在很多编译器真的就是用这条指令实现寄存器归零操作,大家可以想想看为什么?

其实你用反汇编工具仔细比较一下 MOV 和 XOR 就能看出端倪,只要任何指令引入了 immediate 立即数,就不可避免地增加指令长度,带来的就是 cache 的占用,总线读取周期的占用,存储代码用的 ROM 或硬盘空间的占用,在上个世纪九十年代存储器还是寸土寸金的时代这种浪费是不可接受的

但是绝对的指令正交也会引入其他问题,例如指令正交将会导致实现一个小操作需要多个指令来完成,某些情况下多个指令仍然会需要占用更多 cache 空间以及指令预取队列长度

指令少并且功能正交的好处就是 CPU 可以做得非常简单,因为无论是解码单元还是执行单元都只需要用少量逻辑就能实现大部分程序逻辑,并且也会更加省电,这也是为什么早期家用电器等没有复杂控制逻辑的电子设备采用 MIPS 的原因(当然还有一个原因是授权费相对也不高)

最后再来看看当下非常热门的明星级开放指令集 RISC-V

https://riscv.org/technical/specifications/

可以说 RISC-V 综合了 ARM 和 MIPS 的优点,做到了指令功能的平衡与规整,平衡意味着在空间和时间上都控制得当,规整意味着解码单元会很好做,有大量逻辑门可以复用

另外 RISC-V 比较有特色的地方是对指令集功能做了良好分割,以实现渐进式兼容和灵活的扩展性,也方便 IP 厂商根据需要定制与裁剪内核

RISC-V 是多个 RV 指令集系列的总称,我们在大学教科书中接触的最多的是 RV32I 也就是上图所示的指令

除此之外还有专门面向小内存低功耗设计的 RVC,其将寄存器裁剪至 16 个,指令位宽也缩减到 16-bit

还有 64-bit 环境下的 RV64 系列等

当然 RISC-V 与 ARM 和 MIPS 最大的差别还是在于其为 RISC-V 基金会进行标准的制定和维护工作而非商业公司,任何人可以无偿使用该指令集开发自己的 CPU ,或者往自己已有的芯片中集成开源免费的 RISC-V IP Core,这是比较吸引电子设备厂商的重要原因。

PS:之前的内容更多关注在 RISC-V,忽视了题目本身是比较 ARM,MIPS 和 RISC-V 三大指令集的原始题意,所以现在对答案进行完整修改以符合题意。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有