各类指令集简介
# 各类指令集简介
# X86 指令集
特点
- 向下兼容
- 变长指令
- 代码密度高, 空间占用少,但译码复杂
- 支持多种寻址方式,可访问不对齐的内存地址
- 通用寄存器少
- X86-32 有 8 个通用寄存器, x86-64扩展到 16 个通用寄存器
- 至多只有一个操作数在内存中
- 另一个操作数为立即数或者寄存器
X86 指令集长盛不衰的原因
- 商业上的成功(生态环境)
- 技术上注重向下兼容
缺点
- 向下兼容导致指令集越来越大,越来越复杂
- 其内核为类 RISC 内核,复杂指令采用 micro-op 模式进行翻译,使得功耗相对增大,在嵌入式领域不占优势
- 对很多领域,资源利用率低
# MIPS 指令集
特点
- 发展己十分成熟
- 寄存器多(32个,还有32个浮点寄存器), 只有 Load/Store 指令访问内存的方式(可认为是 RISC 与 CISC 的本质区别)
- 指令集格式规整,长度一致,指令的操作码在固定位置上
- 寻址方式简单,每条指令的操作也较简单
- 指令格式只有 3 种
设计思想
- 使得各个指令的流水线分段较为均匀
- 分段一致,每段操作时延相差不多,可以提高主频
- 尽量使得能够每一周期完成一条指令,控制简单
- 尽量利用软件办法避免流水线中的数据相关/控制相关问题
- 即用简单的指令来实现复杂的指令
MIPS 是经典的 RISC 指令集
- 兼具 RISC 设计的简洁优雅与不足,代码密度较低
# ARM 指令集
特点
- "有点不同"的 RISC 指令集
- 提供简单的操作,一个周期就可执行一条指令
- 编译器或程序员可以通过几条简单指令的组合来实现复杂的操作
- 使用 Load/Store 的存储模式
- 大多数指令采用相同的字节长度, 操作码的位置固定
- 大多数指令具有“条件执行”模式
- 具有 16 位的压缩指令集(thumb)
- 为了提高代码密度
ARM 介于经典的 RISC 和 CISC 之间
- 相对复杂
- 注重代码密度和降低功率
- 浮点较弱,但可逐步扩展强化
# 小结
CISC 与 RISC 相互借鉴,走向融合
- 兼容性考虑是指令集发展的关键性因素
- ARM 博采众长,中庸之道,成功并不偶然
编辑 (opens new window)