复杂和精简指令集

指令的分类

  • 数据传送指令:树妖实现主存和寄存器之间,或者寄存器和寄存器之间的数据传送

    • 一般传送指令: MOV AX,BX

    • 数据交换指令: XCHG

    • 堆栈操作指令: PUSH,POP

  • 运算类指令

    • 算术运算指令: 定点和浮点的算术运算,大型机有向量运算指令

    • 逻辑运算指令:无符号数的位操作,代码的转换、判断及运算

  • 程序控制类指令

    • 程序控制类指令用于控制程序的执行方向,并使程序具有测试、分析与判断的能力。

  • 输入和输出指令、字符串处理指令、特权指令、其他指令

基本指令系统的操作

20%和80%规律:CISC中大约有20%的指令使用频率高,占据了80%的处理机时间,而有80%的不常用指令只占用处理机的20%时间。

VLSI(超大规模集成电路)工艺要求规整性,而大量复杂指令控制逻辑极其不规整,给VLSI工艺造成了很大的困难。

现在用微程序实现复杂指令与用简单指令组成的子程序相比,没有多大的区别。因为现在控制存储器和主存的速度差缩小。

CISC中,通过增强指令系统的功能,简化了软件,增加了硬件的复杂程度。然而指令复杂了,指令的执行时间必然加长,从而使整个系统的执行时间反而增加,因而在计算机体系结构设计中,软硬件的功能分配必须恰当

复杂指令系统计算机CISC

Complex Instruction Set Computer

  • 指令系统庞大,指令条数可达几百条

  • 指令长度不固定,指令格式种类多,寻址方式种类多

  • 能够访存的指令不受限制

  • 各种指令使用频度差别大

  • 各种指令执行时间差别大,不利于流水线

  • 一般采用微程序控制

  • 难以优化编译生成高效目标代码

复杂指令系统给很多运算设置了独立的指令。比如二进制加减法有指令,十进制加减法也有自己的指令(而不是使用二进制加减法实现),甚至十六进制也有自己的指令。或者乘除法也有自己的指令而不是通过加减法指令实现

属于复杂指令集的处理器有CDC 6600arrow-up-rightSystem/360arrow-up-rightVAXarrow-up-rightPDP-11arrow-up-rightMotorola 68000arrow-up-right家族、x86arrow-up-rightAMD Opteronarrow-up-right等。

精简指令系统计算机RISC

Reduced Instruction Set Computer

  • 选取使用频率最高的简单指令,指令条数少

  • 指令长度固定,指令格式种类少,寻址方式种类少

  • 只有取数/存数指令访存。其余指令都在寄存器之间进行

  • 指令功能简单,控制器多使用硬布线

  • CPU中通用寄存器多,减少访存

  • 大部分指令能在一个机器周期完成,利于流水线

  • 使用硬布线控制逻辑,控制器简单,留出更多芯片空间来实现大容量cache

  • 注重编译的优化

即指实现简单的指令。复杂指令通过简单指令的组合实现

基于ARM微处理器的片上系统arrow-up-right(system on a chip, SoC)的框图arrow-up-right

目前常见的精简指令集微处理器arrow-up-right包括DEC Alphaarrow-up-rightARCarrow-up-rightARMarrow-up-rightAVRarrow-up-rightMIPSarrow-up-rightPA-RISCarrow-up-rightPower ISAarrow-up-right(包括PowerPCarrow-up-rightPowerXCellarrow-up-right)、RISC-Varrow-up-rightSPARCarrow-up-right等。

扩展阅读

ARM 高级精简指令集机器 (Advanced RISC Machine)

RISC-V 是一个基于精简指令集(RISC)原则的开源指令集架构

Last updated