文档介绍:第5章指令系统
指令系统的发展
指令格式
数据表示
寻址方式(编址方式)
指令类型
指令系统的兼容性
精简指令系统计算机(RISC)和复杂指令系统计算机(CISC)
指令系统举例
机器语言、汇编语言和高级语言
习题
指令系统的发展
计算机系统主要由硬件(hardware)和软件(software)两部分组成。所谓硬件就是由中央处理机(CPU)、存储器以及外部设备等组成的实际装置。软件则是为便于用户使用计算机而编写的各种程序,最终转换成一系列机器指令后在计算机上执行。
计算机的性能与它所设置的指令系统有很大的关系,而指令系统的设置又与机器的硬件结构密切相关。通常性能较好的计算机都设置有功能齐全、通用性强、指令丰富的指令系统,但这需要复杂的硬件结构来支持。
在20世纪50年代和60年代早期,由于计算机采用分立元件(电子管或晶体管),其体积庞大,价格昂贵,因此,大多数计算机的硬件结构比较简单。所支持的指令系统一般只有定点加减、逻辑运算、数据传送和转移等十几至几十条最基本的指令,而且寻址方式简单。到60年代中、后期,随着集成电路的出现,计算机的价格不断下降,硬件功能不断增强,指令系统也越来越丰富。除了具有以上最基本的指令以外,还设置了乘除法运算指令、浮点运算指令、十进制运算指令以及字符串处理指令等,指令数多达一、二百条,寻址方式也趋于多样化。
随着集成电路的发展和计算机应用领域的不断扩大,计算机的软件价格相对不断提高。为了继承已有的软件,减少软件的开发费用,人们迫切希望各机器上的软件能够兼容,以便在旧机器上编制的各种软件也能在新的、性能更好的机器上正确运行,因此,在60年代出现了系列(series)计算机。
所谓系列计算机是指基本指令系统相同,基本体系结构相同的一系列计算机,如IBM 370系列,VAX-11系列,IBMPC (XT/AT/286/386/486/Pentium)微机系列等。一个系列往往有多种型号,各型号的基本结构相同,但由于推出的时间不同,所采用的器件也不同,因此在结构和性能上可以有很大差异。通常是新推出的机种在性能和价格方面要比早推出的机种优越。系列机能解决软件兼容问题的必要条件是该系列的各机种有共同的指令集,而且新推出的机种的指令系统一定包含旧机种的所有指令,因此在旧机种上运行的各种软件可以不加任何修改地在新机种上运行。
计算机发展至今,其硬件结构随着超大规模集成电路(VLSI)技术的飞速发展而越来越复杂化,所支持的指令系统也趋于多用途、强功能化。指令系统的改进是围绕着缩小指令与高级语言的语义差异以及有利于操作系统的优化而进行的。为了便于操作系统的实现和优化,还设置有控制系统状态的特权指令、管理多道程序和多处理机系统的专用指令等。
然而,指令结构太复杂也会带来一些不利的因素,如设计周期长,正确性难以保证且不易维护等;此外,实验证明,在如此庞大的指令系统中,只有诸如算术、逻辑运算、数据传送、转移和子程序调用等几十条最基本的指令才是经常使用的,而需要大量硬件支持的大多数较复杂的指令却利用率很低,造成硬件资源的极大浪费。为了解决这个问题,在70年代末人们提出了便于VLSI实现的精简指令系统计算机,简称RISC()。
指令格式
指令格式
计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:
(1) 操作码,具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同操作。
(2) 操作数的地址。CPU通过该地址就可以取得所需的操作数。
(3) 操作结果的存储地址。把对操作数的处理所产生的结果保存在该地址中,以便再次使用。
(4) 下一条指令的地址。一般来说,当程序顺序执行时,下条指令的地址由程序计数器(PC)指出,仅当改变程序的运行顺序(如转移、调用子程序)时,下条指令的地址才由指令给出。
从上述分析可知,一条指令实际上包括两种信息即操作码和地址码。操作码(operation code)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数;地址码用来描述该指令的操作对象,或者直接给出操作数或者指出操作数的存储器地址或寄存器地址(即寄存器名)。根据地址码部分所给出地址的个数,指令格式可分为如下几种。