目录
一、指令的划分
从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。
微指令:微程序级的命令,它属于硬件;
宏指令:由若干条机器指令组成的软件指令,它属于软件;
机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算。一台计算机中所有机器指令的集合,称为这台计算机的指令系统(指令集)。
二、发展历程
1、50年代:指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。
2、60年代后期:增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化。 60年代后期开始出现系列计算机(指基本指令系统相同、基本体系结构相同的一系列计算机)一个系列往往有多种型号,它们在结构和性能上有所差异。同一系列的各机种有共同的指令集而且新推出的机种指令系统一定包含所有旧机种的全部指令,旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,大大减少了软件开发费用。
3、70年代末期:大多数计算机的指令系统多达几百条。我们称这些计算机为复杂指令系统计算机(CISC)。
4、70年代后期至现在:精简指令系统RISC 但是如此庞大的指令系统难以保证正确性,不易调试维护,造成硬件资源浪费。为此人们又提出了便于VLSI技术实现的精简指令系统计算机(RISC)。 RISC尽量简化指令功能,只保留那些功能简单,能在一个节拍内(2GHz)执行完成指令,较复杂的功能用一段子程序来实现。它充分考虑了超大规模集成电路设计、制造中的有关问题和当前软件研究的某些成果,从硬软件结合的角度解决了许多矛盾,从而取得了巨大成功。
5、80年代至现在:超长指令字VLIW
CISC设计风格的主要特点是:
1)指令系统复杂; | 复杂 |
2)绝大多数指令需要多个机器周期方可执行完毕; | 费时 |
3)各种指令都可访问存储器; | 自由主义 |
4)采用微程序控制; | 地方主义 |
5)有专用寄存器; | 小金库 |
6)难以用优化编译器生成高效的目标代码程序。 | 低效率 |
RISC设计风格的主要特点是:
1)简化指令系统; | 简化 |
2)除了LOAD/STORE指令外,所有指令都在一个时钟周期内执行完毕; | 省时 |
3)除了LOAD/STORE指令外,其余指令只与寄存器打交道; | 集体主义 |
4)绝大部分采用硬联线控制,不用或少用微程序实现; | 搞活流通 |
5)使用较多的通用寄存器,一般至少有32个,绝没有专用寄存器; | 查封小金库 |
6)采用优化编译技术,生成高效的目标代码程序。 | 高效率 |
三、指令系统的性能要求
确定一台计算机的指令系统并评价其优劣,通常从4个方面考虑:
(1) 指令系统的完备性,要求指令系统丰富、功能齐全、使用方便。
(2) 指令系统的高效性,程序占内存空间少,运行速度快。
(3) 指令系统的规整性,包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。对称性指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式; 匀齐性是指一种操作性质的指令可以支持各种数据类型; 指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取。
(4) 指令系统的兼容性,同一系列的低档计算机的程序能在新的高档机上直接运行。
软件的兼容性:
1.向后兼容:在某一时间生产的机器上运行的目标软件能够直接运行于更晚生产的机器上。
2.向前兼容
3.向上兼容:低档机器上运行的目标软件能够直接运行于高档机器上。
4.向下兼容
注:向后兼容必须做到,向上兼容尽量做到;向前兼容、向下兼容可以不考虑。
四、低级语言与硬件结构的关系
计算机语言具有高级语言和低级语言之分。
1、高级语言,其语句和用法与具体机器的指令系统无关。
2、低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而汇编语言用指令助记符来编写程序。
(1)计算机能够直接识别和执行的唯一语言是二进制语言,但人们采用符号语言或高级语言编写程序。为此,必须借助汇编程序或编译程序,把符号语言或高级语言翻译成二进制码组成的机器语言。
(2)汇编语言依赖于计算机的硬件结构和指令系统。不同的机器有不同的指令,所以用汇编语言编写的程序不能在其他类型的机器上运行。
(3)高级语言与计算机的硬件结构及指令系统无关,在编写程序方面比汇编语言优越。但是高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。
五、指令执行步骤
指令的执行步骤,一般要经过到内存读取指令,控制器分析指令,控制器按指令要求的具体操作功能,用一到几个执行步骤, "驱动"计算机相关部件完成指令的运算、操作功能,并在这一过程准备好下一条指令的地址到程序计数器PC中,至此本条指令的功能算是完成了,接下来检查有无中断请求,若无中断请求,则进入下一条指令的执行过程。