指令系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086指令系统综述
1.背景
计算机的程序是由一系列机器指令组成的。指令就是要计算机执行某种操作的命令。从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。微指令是微程序级的命令,它属于硬件;宏指令是由若干条机器指令组成的软件指令,它属于软件;而机器指令则介于微指令与宏指令之间,通常简称为指令,每一条指令可完成一个独立的算术运算或逻辑运算操作。
本文所讨论的指令,是机器指令。一台计算机中所有机器指令的集合,称为这台计算机的指令系统。指令是构成程序的最基本单位,是指挥处理器完成某项具体任务操作的一个或多个字节信息。因而计算机指令集的选择是计算机体系结构设计的核心问题,是软硬件功能分配最主要的交界面,它历来是体系结构设计者、系统软件设计者和硬件设计者所共同关注的问题,现在计算机系统理论认为指令集是影响到指令流水效率的根本原因,诸如变长指令,复杂寻址等都使得流水困难。因此采用什么指令集将极大地决定如何设计处理器的内部结构以及译码机制。
2.指令系统的发展过程
回顾计算机的发展历史,指令系统的发展经历了从简单到复杂的演变过程。
早在20世纪50-60年代,计算机大多数采用分立元件的晶体管或电子管组成,其体积庞大,价格也很昂贵,因此计算机的硬件结构比较简单,所支持的指令系统也只有十几至几十条最基本的指令,而且寻址方式简单。
到60年代中期,随着集成电路的出现,计算机的功耗、体积、价格等不断下降,硬件功能不断增强,指令系统也越来越丰富。
60年代后期出现了系列计算机。所谓系列计算机,是指基本指令系统相同、基本体系结构相同的一系列计算机。如Pentium系列。系列机解决了各机种的软件兼容问题,其必要条件是同一系列的各机种有共同的指令集,而且新推出的机种指令系统一定包含所有旧机种的全部指令。
在70年代,高级语言己成为大、中、小型机的主要程序设计语言,计算机应用日益普及。由于软件的发展超过了软件设计理论的发展,复杂的软件系统设计一直没有很好的理论指导,导致软件质量无法保证,从而出现了所谓的“软件危机”。人们认为,缩小机器指令系统与高级语言语义差距,为高级语言提供很多的支持,是缓解软件危机有效和可行的办法。计算机设计者们利用当时已经成熟的微程序技术和飞速发展的VLSI技术,增设各种各样的复杂的、面向高级语言的指令,使指令系统越来越庞大。这是几十年来人们在设计计算机时,保证和
提高指令系统有效性方面传统的想法和作法。按这种传统方法设计的计算机系统称为复杂指令系统计算机,简称CISC.
但是如此庞大的指令系统不但使计算机的研制周期变长,难以保证正确性,不易调试维护,而且由于采用了大量使用频率很低的复杂指令而使硬件资源浪费。为此人们又提出了便于VLSI技术实现的精简指令系统计算机,简称RISC。RISC是一种计算机体系结构的设计思想,是近代计算机体系结构发展史中的一个里程碑。90年代初,IEEE的MichaelSlater对于RISC的定义做了如下描述:RISC处理器所设计的指令系统应使流水线处理能高效率执行,并使优化编译器能生成优化代码。
3.对指令系统的基本要求
给指令系统确定一个统一的衡量标准是很困难的,但是在一般情况下,
指令系统应满足以下几个基本的要求:
1.指令系统的完备性指令系统的完备性是指在使用汇编语言编制程序时,指令系统应提供足够丰富的指令,以便于编程时选用,即要求指令系统的指令丰富、功能齐全和使用方便。完备性是一个基本原则,一般来说,一个完备的指令系统应包括前面提到的那几种类型的指令。
2.指令系统的有效性有效性是指该指令系统所编制的程序能高效率的运
行。
所谓高效率主要表现在执行速度快、占用存储空间小两个方面。有效性是一个很复杂的问题,它与完备性是密切相关的,一个功能齐全的指令系统必定会有高的有效性。如目前许多计算机中增设的数据转换指令、字符串操作指令等,这些无疑会大大提高指令系统的有效性。
3.指令系统的规整性指令系统的规整性包括指令的对称、均匀,与数据格式一致等特性。指令的对称是指所有的数据存储单元(如寄存器、主存单元等)被指令系统同等对待,所有的指令都可以使用各种寻址方式;指令的均匀是指同一种操作性质的指令,可以支持各种不同数据类型和不同字长的运算。例如,加法指令能支持不同数据类型(如定点数、浮点数、十进制数等)和不同字长(如字节、字和双字,甚至四倍字)的运算;指令格式与数据格式一致是指指令长度与数据长度有一定的关系,以利于存取和处理。指令长度一般取字节的整倍数,数据长度则取字节的1、2、4 或8 倍不等。
4.指令系统的兼容性不同的机器结构,指令系统不同。但同一系列的机型则具有相同的基本结构和共同的基本指令集,故指令系统是兼容的。由于系列机中不同机型推出的时间先后不同,结构和性能上存在着差异,不可能做到全部软件兼容。通常在高档机上可以运行低档机的软件,而在低档机上则不一定能运行高档机的软件,因此称为“向上兼容”。
以上所述的对指令系统的基本要求只是一种理想的情况,对于某一台具体的计算机而言,不可能全部满足这些要求,因为这需要很强的硬件支持,同时一味追求十分理想的机器也是不必要的。
4.指令系统种类
常见指令按功能可划分为:
①数据处理指令:包括算术运算指令、逻辑运算指令、移位指令、比较指令等。
②数据传送指令:包括寄存器之间、寄存器与主存储器之间的传送指令等。
③程序控制指令:包括条件转移指令、无条件转移指令、转子程序指令等。
④输入-输出指令:包括各种外围设备的读、写指令等。有的计算机将输入-输出指令包含在数据传送指令类中。
⑤状态管理指令:包括诸如实现置存储保护、中断处理等功能的管理指令。
⑥其他后来引入的新指令。比如:向量指令和标量指令;特权指令和用户指令。
5.指令系统的设计
指令系统的结构分为三种类型:堆栈结构、累加器结构、通用寄存器结构。对于不同类型的结构,操作数的位置、个数以及操作数的给出方式(显式或隐式)也会不同。操作数的给出方式为:显式给出(用指令字中的操作数字段给出)、隐式给出(使用事先约定好的单元)。
ALU指令的操作数个数:
3个操作数的指令:两个源操作数、一个目的操作数
2个操作数的指令:其中一个操作数既作为源操作数,又作为目的操作数。ALU指令中存储器操作数的个数可以是0~3中的某一个,为0表示没有存储器操作数。
通用寄存器型结构进一步细分为3种类型:寄存器-寄存器型(RR型)(操作数可以来自存储器)、寄存器-存储器型(RM型)(所有操作数都是来自通用寄存器组) 、存储器-存储器型(MM型)。
3种通用寄存器型结构的优缺点((m,n)表示指令的n个操作数中有m个存储器操作数):
寄存器-寄存器型(0,3)
优点:指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。
缺点:与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大。
寄存器-存储器型(1,2)
优点:可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加载。容易对指令进行编码,目标代码比较紧凑。
缺点:指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的
执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大。存储器-存储器型(2,2)或(3,3)
优点:目标代码最紧凑,不需要设置寄存器来保存变量。
缺点:指令字长变化很大,特别是3操作数指令。而且每条指令完成的工作也