《第四章 指令系统.ppt》由会员分享,可在线阅读,更多相关《第四章 指令系统.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 指令系统指令系统指令系统:一台计算机中所有机器指令的集合,称为这台计算机的指令系统。指令系统是表征一台计算机性能的重要因素,其格式与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件,影响到机器的适用范围。早期,20世纪50年代及60年代初期,由于受器件限制,计算机的硬件结构比较简单,所支持的指令系统一般只有定点加、减、逻辑运算,数据传送及转移等十几至几十条指令。60年代中后期,集成电路出现后,硬件功能不断增强,价格也不断下降,指令系统越来越复杂,浮点运算,字符串处理等指令都出现在指令系统中,指令条数多达一、二百条。60年代,为继承已有的软件,减少软件的开发费用,出现了系列机
2、。系列机是指基本指令系统相同,基本体系结构相同的机器,其主要特征是软件兼容。70年代中后期,随着大规模、超大规模集成电路的发展,计算机的硬件结构越来越复杂,指令系统越来越庞大,越来越丰富,走向了强功能、多用途化,常达几百条。系统复杂,一方面功能强大,另一方面也带来许多问题,如:设计周期长,正确性难以保证且不易维护;此外,许多指令使用频度很低,造成硬件资源的浪费。70年代末,出现了精简指令系统计算机(RISC)。精简指令系统计算机只选择使用频度高的指令,指令格式规整,指令执行速度快,机器整体性能高,指令条数在一百条以内。相对于精简指令系统计算机,指令系统庞大的计算机称为复杂指令系统计算机(CIS
3、C)。指令系统的发展基础是硬件技术的发展,随着硬件技术的发展,指令系统不断发展改进,其改进主要围绕两点:缩小与高级语言的差异。便于操作系统的实现和优化。4 4.1.2.1.2 对指令系统的性能要求对指令系统的性能要求 指令系统的性能如何,决定了计算机的基本功能。指令系统的性能如何,决定了计算机的基本功能。指令系统的设计是计算机系统设计的一个核心问指令系统的设计是计算机系统设计的一个核心问题。题。一个完善的指令系统应满足如下四方面的要求:一个完善的指令系统应满足如下四方面的要求:完备性完备性 指用汇编语言编写程序时,指令系统提供的指指用汇编语言编写程序时,指令系统提供的指令要足够使用。这要求指令
4、系统丰富、功能齐全。令要足够使用。这要求指令系统丰富、功能齐全。有效性有效性 指利用该指令系统所编写的程序能够高效率地指利用该指令系统所编写的程序能够高效率地运行。高效率是指占据地存储空间小,执行地速运行。高效率是指占据地存储空间小,执行地速度快。度快。规整性 指对称性、匀齐性以及指令格式和数据格式的一致性。对称性是指指令系统中所有寄存器和存储单元都可同等对待,所有的指令都可使用各种寻址方式;匀齐性是指一种操作性质的指令可支持各种数据类型;指令格式和数据格式的一致性是指指令长度与数据长度有一定的关系。兼容性 是指系列机中基本指令系统相同,具有向上兼容性,即低档机的软件可在高档机上运行。4.1.
5、3 低级语言与硬件结构的关系 计算机只能识别机器语言,低级语言(机器语言、汇编语言)与硬件结构有关,与指令系统有关。机器语言、汇编语言使用的指令都是指令系统中的指令,不同机器,指令系统不同,其机器语言、汇编语言也不相同。高级语言与机器硬件和指令系统没有直接的关系。4.2 指令格式指令格式4.2.1 概述 指令是用机器字来表示的。指令字:表示一条指令的机器字称之。指令格式:指令用二进制代码表示的结构形式。指令格式与机器字长、存储容量及指令功能有很大关系。指令中包含的信息越多,其功能越强,但指令字长将增加访存次数,影响指令执行速度。如何合理地、科学地设计指令格式,使指令既能给出足如何合理地、科学地
6、设计指令格式,使指令既能给出足够的信息,其长度又尽可能地与机器字长相匹配,以节省够的信息,其长度又尽可能地与机器字长相匹配,以节省空间、缩短时间,提高机器性能是指令格式设计中地重要空间、缩短时间,提高机器性能是指令格式设计中地重要问题。问题。一般而言,在一条机器指令中应该指明以下信息:一般而言,在一条机器指令中应该指明以下信息:操作的类型。说明操作的类型和功能,一般在计算机操作的类型。说明操作的类型和功能,一般在计算机中可以有几十种到几百种不同类型的操作。每条指令都必中可以有几十种到几百种不同类型的操作。每条指令都必须指定其操作的类型。须指定其操作的类型。操作数的存储位置。也称为操作数的地址,
7、它说明参操作数的存储位置。也称为操作数的地址,它说明参加运算的数据存储在什么地方。操作数的存储位置可以是加运算的数据存储在什么地方。操作数的存储位置可以是寄存器、存储器单元、或者直接安排在指令中。寄存器、存储器单元、或者直接安排在指令中。操作结果的去向。它说明将运算结果存储在什么地方,操作结果的去向。它说明将运算结果存储在什么地方,如寄存器号或存储器单元的地址。如寄存器号或存储器单元的地址。此外,在指令中还需要给出下一条指令的地址,它说明此外,在指令中还需要给出下一条指令的地址,它说明到哪里去取下一条指令。到哪里去取下一条指令。指令的基本格式包括两大部分:操作码和地址码。4 4.2.2.2.2
8、 操作码操作码 每条指令都有一个操作码,操作码指明了指令每条指令都有一个操作码,操作码指明了指令的操作类型,通常也包含操作数的数据类型等信的操作类型,通常也包含操作数的数据类型等信息。息。操作码可以是固定长度的,也可以是可变长度操作码可以是固定长度的,也可以是可变长度的。固定长度的操作码是指所有指令的操作码长的。固定长度的操作码是指所有指令的操作码长度相同,它便于指令的译码。可变长度的操作码度相同,它便于指令的译码。可变长度的操作码是指各指令的操作码长度可以不同,其指令译码是指各指令的操作码长度可以不同,其指令译码比较复杂。比较复杂。采用可变长度的操作码可以进行更为灵活的编采用可变长度的操作码
9、可以进行更为灵活的编码,一种方法是根据指令使用的概率进行编码,码,一种方法是根据指令使用的概率进行编码,以缩短操作码的平均长度。由于每条指令的使用以缩短操作码的平均长度。由于每条指令的使用频率不是相等的,因此就可以用较短的代码对常频率不是相等的,因此就可以用较短的代码对常用指令进行编码,而用较长的代码对不常用指令用指令进行编码,而用较长的代码对不常用指令进行编码。进行编码。例:设某台计算机有100条指令,现要求:(1)采用固定长度操作码编码,试设计操作码的编码格式。(2)假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用可变长操作码设计一种操作码编码
10、格式,并求出操作码的平均长度。4 4.2.3.2.3 地址码地址码 指令中指明操作数地址的字段称为地址码。地指令中指明操作数地址的字段称为地址码。地址码中可包含存储器地址,也可包含寄存器号等。址码中可包含存储器地址,也可包含寄存器号等。指令中可以有一个、两个或者三个操作数,也可指令中可以有一个、两个或者三个操作数,也可以没有操作数。根据指令中地址码的数量,可将以没有操作数。根据指令中地址码的数量,可将指令分为零地址指令、一地址指令、二地址指令指令分为零地址指令、一地址指令、二地址指令和三地址指令。和三地址指令。零地址指令:指令中只有操作码,而没有地零地址指令:指令中只有操作码,而没有地址码。这
11、种指令有两种情况:一种是无需操作数,址码。这种指令有两种情况:一种是无需操作数,如空操作指令如空操作指令NOPNOP(no operationno operation);另一种是操);另一种是操作数为默认的,或称隐含的,如操作数在累加器作数为默认的,或称隐含的,如操作数在累加器中。中。一地址指令:指令中只有一个地址码。这种一地址指令:指令中只有一个地址码。这种指令可能是单操作数的运算,也可能是另一个操指令可能是单操作数的运算,也可能是另一个操作数隐含为累加器,或者是常数作数隐含为累加器,或者是常数0 0和和1 1等。等。二地址指令:指令中包含参加运算的两个操二地址指令:指令中包含参加运算的两个
12、操作数的地址,运算结果通常存储在其中的一个地作数的地址,运算结果通常存储在其中的一个地址中。址中。三地址指令:指令中通常包含两个操作数的三地址指令:指令中通常包含两个操作数的地址和一个运算结果的地址。它使得在操作之后地址和一个运算结果的地址。它使得在操作之后源操作数不被破坏,但如果三个地址都是存储器源操作数不被破坏,但如果三个地址都是存储器地址的话,这种指令将变得较长。地址的话,这种指令将变得较长。地址码除了可指定寄存器号及存储器的地址外,地址码除了可指定寄存器号及存储器的地址外,也可直接存放操作数。这种操作数又称为立即数。也可直接存放操作数。这种操作数又称为立即数。对两地址指令,从操作数的物
13、理位置看,又可分为三种类型:SS型指令:两个操作数都在存储器中。RS型指令:一个操作数在存储器中,一个操作数在寄存器中。RR型指令:两个操作数都在寄存器中。操作码的设计应当与地址码的设计相配合,以形成高效合理的指令编码。例如,在指令长度固定的情况下,地址码数量较多的指令中可安排较短的操作码,地址码数量较小的指令中可安排较长的操作码。这种操作码设计方法称为操作码扩展法。例:设某计算机指令字长为16位,每个地址码为6位,指令系统中要求有如下形式的指令:二地址指令15条,一地址指令63条,零地址指令32条。试用操作码扩展法为各指令编码。4.2.4 指令字长度 指令字所包含的二进制代码的位数,称为指令
14、字长度。指令字的长度应该与计算机的字长相匹配,一般指令的长度定为计算机字长的整数倍或者字节的整数倍。指令字长度等于机器字长的指令称为单字长指令,指令字长度等于两个机器字长的指令称为双字长指令。单字长指令只需一次访存就可以读取。使用双字长指令乃至多字长指令的目的在于提供足够的操作数地址信息,从而增强指令的功能。在给定字长的情况下,设计指令系统最简单的方法是将指令字长度固定,固定长度指令字结构比较简单,可简化指令的译码,特别是单字长的固定长度指令字,可加快取指令的速度及指令的执行速度。可变长指令字结构则可以根据指令中地址码的数量和长度确定指令字的长度,在可变长指令字结构中,取指令的操作需要根据指令
15、的长度进行调整,指令读取的速度比较慢,在读取不等长指令时,程序计数器PC在每次取指令之后必须根据指令的长度进行更新。4.2.5 指令助记符 指令的操作码及地址码在计算机中用二进制代码表示。这种表示方式很难被程序员阅读理解,也不便于程序员编写程序,因此通常用一些比较容易记忆的文字符号来表示指令中的操作码和地址码,这种符号称为助记符,比如用MOV表示数据传送操作,用ADD表示加法操作等等。同样,寄存器和存储器单元也可用字母及数字来代表,如R1寄存器、R2寄存器、地址为A的存储单元、地址为B的存储单元等。4 4.2.6.2.6 指令格式举例指令格式举例 一、一、8 8位微机指令格式位微机指令格式 操
16、作码固定,采用可变长指令字结构。操作码固定,采用可变长指令字结构。二、二、PDPPDP1111系列机指令格式系列机指令格式 16 16位小型机,操作码字段不固定,采用可变长位小型机,操作码字段不固定,采用可变长指令字结构。指令字结构。三、三、PentiumPentium机指令格式机指令格式 32 32位,可变长指令字,且带前缀。位,可变长指令字,且带前缀。前缀是对其后的指令进行显示约定。前缀是对其后的指令进行显示约定。PentiumPentium机的前缀有:指令前缀,段取代前缀,操作数长机的前缀有:指令前缀,段取代前缀,操作数长度前缀,地址长度取代前缀。度前缀,地址长度取代前缀。例:有一机器的
17、指令格式如图,其中例:有一机器的指令格式如图,其中OPOP为操作码,为操作码,试分析指令格式的特点。试分析指令格式的特点。例:有一机器的指令格式如图,其中例:有一机器的指令格式如图,其中OPOP为操作码,为操作码,试分析指令格式的特点。试分析指令格式的特点。4.3 指令和数据的寻址方式指令和数据的寻址方式 操作数或指令字的访问方式有地址指定方式、相联存储方式及堆栈存取方式。在通用机中,内存基本上采用地址指定方式。寻址方式:当采用地址指定方式时,形成操作数或指令地址的方式,称之。寻址方式可分为两类:指令寻址方式和操作数寻址方式。4.3.1 指令寻址方式 指令寻址方式有两种:顺序寻址 指令顺序执行
18、时,由程序计数器PC给出指令地址。跳跃寻址 指令非顺序执行(转移)时,在指令中给出转移地址。4.3.2 操作数寻址方式 操作数寻址方式通常简称为寻址方式。操作数寻址方式是指令格式设计中的重要方面,也是分析指令系统的一个着手点。寻址方式与机器的硬件结构、软件编程及指令执行效率均有密切关系。不同的计算机,寻址方式也不同。在具体设计时,寻址方式可由指令的操作码给出,也可由指令中的专门字段给出。一种典型的单地址指令结构如图:一种典型的单地址指令结构如图:典型的、常用的基本寻址方式有:典型的、常用的基本寻址方式有:隐含寻址隐含寻址 立即寻址立即寻址 直接寻址直接寻址 间接寻址间接寻址 寄存器寻址寄存器寻
19、址 寄存器间接寻址寄存器间接寻址 相对寻址相对寻址 基址寻址基址寻址 变址寻址变址寻址 块寻址块寻址 段寻址段寻址4 4.3.3.3.3 寻址方式举例寻址方式举例 一、一、PDPPDP1111系列机寻址方式系列机寻址方式 二、二、PentiumPentium机的寻址方式机的寻址方式 实地址模式:段寻址实地址模式:段寻址 保护模式:保护模式:3232位线性地址转换为位线性地址转换为3232位物理地位物理地址。址。例:某16位机器所使用的指令格式如图所示,该机有2个20位的基址寄存器,4个16位的变址寄存器,16个16位通用寄存器,指令汇编格式中的S(源)、D(目标)都是通用寄存器,M是主存中的一
20、个单元。三种指令的操作码分别是MOV(OP)(A)H H,STA(OP)(1B)H H,MOV(OP)(3C)H H。MOV是传送指令,STA是写数指令,LDA是读数指令。要求:要求:分析三种指令的指令格式与寻址方式特点。分析三种指令的指令格式与寻址方式特点。CPU CPU完成哪种操作所花时间最短?哪种操作所完成哪种操作所花时间最短?哪种操作所花时间最长?第二种指令的执行时间会等于第三花时间最长?第二种指令的执行时间会等于第三种指令的执行时间吗?种指令的执行时间吗?下列情况下,每个下列情况下,每个1616进制指令字分别代表什么进制指令字分别代表什么操作?其中如有编码不正确,如何修正才能成为操作
21、?其中如有编码不正确,如何修正才能成为合法指令?合法指令?(F0F1)(F0F1)H H(3CD2)H H (2856)(2856)H H (6DC6)(6DC6)H H (1C2)(1C2)H H 4.4 堆栈寻址堆栈寻址 堆栈是一种按“先进后出”或“后进先出”进行存取的存储区域,堆栈主要用来暂存中断断点、子程序调用时的返回地址及参数、现场信息等。堆栈通常是在主存中指定的一个区域,在堆栈容量很小的情况下,也可以用一组寄存器来构成堆栈。4.4.1 4.4.1 串联堆栈串联堆栈 有些计算机中有一组专门的寄存器构成的堆栈,有些计算机中有一组专门的寄存器构成的堆栈,称为串联堆栈,又称为硬堆栈。称为串
22、联堆栈,又称为硬堆栈。这种堆栈的栈顶是固定的,寄存器组中各寄存这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,一个寄存器的内容可以传送到器是相互连接的,一个寄存器的内容可以传送到其与相邻的寄存器中。在执行压入操作(进栈)其与相邻的寄存器中。在执行压入操作(进栈)时,一个压入信号将使所有寄存器的内容依次向时,一个压入信号将使所有寄存器的内容依次向下移动一个位置,即寄存器下移动一个位置,即寄存器i i的内容被传送到的内容被传送到i+1i+1,同时一个,同时一个n n位的字被压入栈顶(寄存器位的字被压入栈顶(寄存器0 0)。在)。在执行弹出操作(出栈)时,一个弹出信号将把所执行弹出操作(出栈
23、)时,一个弹出信号将把所有寄存器的内容依次向上移动一个位置,即寄存有寄存器的内容依次向上移动一个位置,即寄存器器i i的内容被传送到寄存器的内容被传送到寄存器i-1i-1,栈顶(寄存器,栈顶(寄存器0 0)的内容被弹出。的内容被弹出。4.4.2 存储器堆栈 寄存器堆栈的成本比较高,不适合作大容量的堆栈,而从主存中划出一段区域来作堆栈是最常用的方法。这种堆栈又称为软堆栈,其栈底固定,栈顶浮动,故需一个专门的硬件寄存器作为堆栈栈顶指针,简称为栈指针SP。栈指针所指定的存储单元,就是堆栈的栈顶。如果堆栈的栈底地址小于栈顶地址,则称堆栈为增地址生成方式;如果堆栈的栈底地址大于栈顶地址,则称堆栈为减地址
24、生成方式。4.5.5 典型指令典型指令 指令系统的设计是整个计算机系统设计的一个核心问题。设计一个合理而有效的指令系统至关重要,它对机器的性价比有很大的影响。一台计算机中最基本的、必不可少的指令是不多的,很多指令都可用基本指令组合来实现。指令系统中的相当一部分指令都是为了提高程序的执行速度和便于编程而设置的。4.5.1 指令的分类 不同机器,其指令系统不同,但一般机器的指令系统都包含以下类型的指令。1.数据传送类指令 这是一种基本的指令类型,主要完成寄存器与寄存器,寄存器与存储器,存储器与存储器之间的数据传送。2.算术逻辑运算类指令 这也是一种基本指令类型,主要完成算术逻辑运算。3 3.移位操
25、作指令移位操作指令 这也是一种基本指令类型,主要完成算术移位,这也是一种基本指令类型,主要完成算术移位,逻辑移位,循环移位。逻辑移位,循环移位。4 4.程序控制类指令程序控制类指令 这也是一种基本指令类型,主要用来控制程序流这也是一种基本指令类型,主要用来控制程序流的转移。通常包括无条件转移,条件转移,过程的转移。通常包括无条件转移,条件转移,过程调用与返回等指令。调用与返回等指令。5.5.输入输出类指令输入输出类指令 主要用来启动外设,检测外设工作状态,实现外主要用来启动外设,检测外设工作状态,实现外设与主机之间的信息交换。设与主机之间的信息交换。若外设与存储器统一编址,就不需要专门的输入若外设与存储器统一编址,就不需要专门的输入输出指令。输出指令。6.字符串处理类指令 这是一种非数值处理指令,主要包括字符串传送,字符串转换,字符串比较,字符串查找,字符串抽取,字符串替换等。7.特权指令 具有特殊权限的指令,一般只限于OS或系统软件使用,用户不能直接使用。在多用户、多任务的计算机中用于资源的分配和管理。8.其它指令 如:状态寄存器的置位、复位指令,测试指令,空操作指令,暂停指令等。4.5.2 基本指令系统示例4.5.3 指令系统设计 1.确定指令种类及各类指令条数。2.确定指令格式 操作码设计 寻址方式设计
限制150内