【指令系统】
指令系统是计算机的主要属性,位于硬件和软件的交面上
指令系统的发展朝向两种截然不同的方向,一种是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC),典型的是采用 X86 架构的计算机
另一种是减少指令种类和简化指令功能,提高指令的执行速度,这类机器称为精简指令系统计算机(RISC),典型的是采用 ARM、MIPS 架构的计算机
【CISC】
随着 VLSI 技术的发展,硬件成本不断下降,软件成本不断上升,促使人们在指令系统中增加更多更复杂的指令,以适应不同的应用领域,构成了复杂指令系统计算机(CISC)
CISC 的主要特点有:
- 指令系统复杂庞大,指令数目一般为 $200$ 条以上
- 指令的长度不固定,指令格式多,寻址方式多
- 可以访存的指令不受限制
- 各种指令使用频度相差很大
- 各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成
- 控制器大多数采用微程序控制
- 难以用优化编译生成高效的目标代码程序
面对庞大的指令系统,对指令的设计提出了极高的要求,研制周期变得很长,后来发现,一味追求指令系统的复杂和完备程度不是提高计算机性能的唯一途径
在对传统CISC指令系统的测试表明,各种指令的使用频率相差悬殊,大概只有 $20%$ 的比较简单的指令被反复使用,约占整个程序的 $80%$,而 $80%$ 左右的指令则很少使用,约占整个程序的 $20%$
从这一事实出发,人们开始了对指令系统合理性的研究,于是 RISC 随之诞生
【RISC】
精简指令系统计算机(RISC)的中心思想是要求指令系统简化,尽量使用寄存器一寄存器操作指令,指令格式力求一致,RISC的主要特点有:
- 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有取数/存数指令访存,其余指令的操作都在寄存器之间进行
- CPU 中通用寄存器数量相当多
- 采用指令流水线技术,大部分指令在一个时钟周期内完成
- 以硬布线控制为主,不用或少用微程序控制
- 特别重视编译优化工作,以减少程序执行时间
值得注意的是,从指令系统兼容性看, CISC 大多能实现软件兼容,即高档机包含了低档机的全部指令,并可加以扩充,但 RISC 简化了指令系统,指令条数少,格式也不同于老机器,因此大多数 RISC 机不能与老机器兼容
由于 RISC 具有更强的实用性,故应该是未来处理器的发展方向,但事实上,当今时代 Intel 几乎一统江湖,且早期很多软件都是根据 CISC 设计的,单纯的 RISC 将无法兼容
此外,现代 CISC 结构的 CPU 已经融合了很多 RISC 的成分,其性能差距已经越来越小,复杂指令 CISC 可以提供更多的功能,这是程序设计所需要的
【CISC 与 RISC 的对比】
CISC 与 RISC 的对比如下表:
对比项目 | CISC | RISC |
---|---|---|
指令系统 | 复杂、庞大 | 简单、精简 |
指令数目 | 一般大于 $200$ 条 | 一般小于 $100$ 条 |
指令字长 | 不固定 | 定长 |
可访存指令 | 无限制 | 只有 Load/Store 指令 |
各种指令执行时间 | 相差大 | 大多在一个周期内完成 |
各种指令使用频度 | 相差大 | 均常用 |
通用寄存器数量 | 少 | 多 |
目标代码 | 难以用优化编译生成高效的目标代码程序 | 采用优化的编译程序生成目标代码程序 |
控制方式 | 绝大多数为微程序控制 | 绝大多数为组合逻辑控制 |
指令流水线 | 可不实现 | 必须实现 |