《计算机组成原理电子教案第5章.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理电子教案第5章.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章 指令系统指令系统计算机组成原理电子教案 陆 遥5.1 指令系统概述指令系统概述5.2 指令格式及其设计指令格式及其设计 指令的基本格式 指令的操作数类型和操作类型 寻址方式 指令操作码的设计 指令地址码的设计 指令格式举例5.3 精简指令系统计算机精简指令系统计算机 5.3.1 从CISC到RISC RISC的主要特点n一条一条机器指令机器指令(简称(简称指令指令),就是给计算机下达),就是给计算机下达的一个基本操作命令。一台计算机中所有指令的的一个基本操作命令。一台计算机中所有指令的集合,称为这台计算机的集合,称为这台计算机的指令系统指令系统。n硬件设计人员采用各种手段实现指令
2、系统,而软硬件设计人员采用各种手段实现指令系统,而软件设计人员则使用指令系统中的指令来编制各种件设计人员则使用指令系统中的指令来编制各种各样的系统软件和应用软件,达到使用计算机的各样的系统软件和应用软件,达到使用计算机的目的。目的。n计算机指令系统的发展,是与计算机计算机指令系统的发展,是与计算机硬件技术硬件技术的的发展、发展、应用领域应用领域的扩大和的扩大和应用要求应用要求的提高密切相的提高密切相关的。关的。5.1 指令系统概述指令系统概述n为了使计算机系统在功能增强、性能提高的同时,为了使计算机系统在功能增强、性能提高的同时,还能实现软件的兼容(向后兼容),推出了系列还能实现软件的兼容(向
3、后兼容),推出了系列计算机。计算机。n所谓所谓系列计算机系列计算机,是指,是指基本指令系统相同基本指令系统相同,基本基本系统结构相同系统结构相同的一系列计算机。的一系列计算机。n从指令系统的发展过程来看,从第一台电子计算从指令系统的发展过程来看,从第一台电子计算机诞生,到上世纪机诞生,到上世纪70年代末的年代末的30多年里,指令系多年里,指令系统是沿着不断增大、不断复杂化的单一方向发展统是沿着不断增大、不断复杂化的单一方向发展的。之后,出现了指令系统发展的一个新的方向的。之后,出现了指令系统发展的一个新的方向精简指令系统方向。精简指令系统方向。n采用采用精简指令系统精简指令系统的计算机,称为的
4、计算机,称为精简指令系统精简指令系统计算机(计算机(RISC),相对而言,采用,相对而言,采用复杂指令系统复杂指令系统的计算机则称为的计算机则称为复杂指令系统计算机(复杂指令系统计算机(CISC)。5.2 指令格式及其设计指令格式及其设计 指令的基本格式n指令由操作码和地址码两部分组成,其基本格式指令由操作码和地址码两部分组成,其基本格式如下。如下。n操作码操作码本质上就是指令的编号,用于标识不同的本质上就是指令的编号,用于标识不同的指令。指令。操作码由控制器中的操作码由控制器中的指令译码器指令译码器进行识别,进行识别,根据识别的结果,由控制电路发出指令执行所需根据识别的结果,由控制电路发出指
5、令执行所需的各种操作控制信号,控制相关部件完成指令的的各种操作控制信号,控制相关部件完成指令的操作功能。操作功能。n地址码地址码用于指出指令的操作数据所存放的位置用于指出指令的操作数据所存放的位置(包括原始数据的存放位置和处理结果的存放位(包括原始数据的存放位置和处理结果的存放位置)。置)。n地址码可以是地址码可以是存储单元地址存储单元地址,可以是,可以是寄存器编号寄存器编号,也可以是也可以是I/O端口地址端口地址。由于各种存储装置的容量。由于各种存储装置的容量不同,所以,地址码的位数也不同。不同,所以,地址码的位数也不同。n一条指令的操作往往需要涉及多个数据,因此,一条指令的操作往往需要涉及
6、多个数据,因此,指令中的地址码可能会有多个。指令中的地址码可能会有多个。n按指令中地址码个数的不同,可把指令格式分为按指令中地址码个数的不同,可把指令格式分为三地址指令三地址指令、二地址指令二地址指令、一地址指令一地址指令和和零地址零地址指令指令四类。四类。n一条一条指令的长度指令的长度是指这条指令的二进制编码的位是指这条指令的二进制编码的位数,它是这条指令的操作码以及全部地址码的位数,它是这条指令的操作码以及全部地址码的位数之和。由于现在的计算机存储器多以字节编址,数之和。由于现在的计算机存储器多以字节编址,为了方便指令的存取,为了方便指令的存取,指令的长度都取字节长度指令的长度都取字节长度
7、的整数倍的整数倍。n根据指令长度与机器字长的关系,通常把长度等根据指令长度与机器字长的关系,通常把长度等于机器字长的指令称为于机器字长的指令称为单字长指令单字长指令,把长度等于,把长度等于两倍机器字长的指令称为两倍机器字长的指令称为双字长指令双字长指令,而把长度,而把长度等于机器字长一半的指令称为等于机器字长一半的指令称为半字长指令半字长指令,等等。,等等。指令的操作数类型和操作类型 1操作数类型操作数类型n指令所能处理的一切信息,都可以看作是指令的指令所能处理的一切信息,都可以看作是指令的操作数。操作数。n按操作数的性质来分类,操作数可分为:地址,按操作数的性质来分类,操作数可分为:地址,数
8、值,字符和逻辑数据四类;按数据格式来分类,数值,字符和逻辑数据四类;按数据格式来分类,操作数又可分为定点格式和浮点格式两类。操作数又可分为定点格式和浮点格式两类。n对不同类型的数据,其操作方式是不一样的,需对不同类型的数据,其操作方式是不一样的,需要设计不同的指令来完成不同的操作。因此,操要设计不同的指令来完成不同的操作。因此,操作数类型对指令系统的设计有很大的影响。作数类型对指令系统的设计有很大的影响。2操作类型操作类型n对各种计算机而言,其指令的操作种类都大同小对各种计算机而言,其指令的操作种类都大同小异,一般都包含以下一些基本的操作类型:异,一般都包含以下一些基本的操作类型:数据传送类操
9、作。数据传送类操作。算术类操作。算术类操作。逻辑类操作。逻辑类操作。控制转移类操作。控制转移类操作。输入输出类操作。输入输出类操作。系统控制类操作。系统控制类操作。处理器控制类操作。处理器控制类操作。寻址方式n产生指令地址的方式称为产生指令地址的方式称为指令寻址方式指令寻址方式,产生操,产生操作数地址的方式称为作数地址的方式称为数据寻址方式数据寻址方式。n如果程序是顺序执行,则依靠如果程序是顺序执行,则依靠PC的自动加的自动加1,就,就能不断产生所需执行的各条指令的地址。能不断产生所需执行的各条指令的地址。n如果程序需要改变执行的顺序,则要通过控制转如果程序需要改变执行的顺序,则要通过控制转移
10、类指令来实现;这些指令可以(条件转移指令移类指令来实现;这些指令可以(条件转移指令是在转移条件成立时)将转移目标处的指令地址是在转移条件成立时)将转移目标处的指令地址装入装入PC,使控制器下次所取的指令为转移目标指,使控制器下次所取的指令为转移目标指令令。n数据的寻址方式比较多,也比较复杂。根据某种数据的寻址方式比较多,也比较复杂。根据某种寻址方式产生的操作数地址,称为操作数的寻址方式产生的操作数地址,称为操作数的有效有效地址地址EA。1直接寻址直接寻址n这是一种产生这是一种产生存储器操作数地址存储器操作数地址的寻址方式,它的寻址方式,它将操作数在存储器中的存放地址直接作为地址码,将操作数在存
11、储器中的存放地址直接作为地址码,置于指令的地址码部分;指令执行时,直接按此置于指令的地址码部分;指令执行时,直接按此地址即可进行操作数的访问。地址即可进行操作数的访问。n直接寻址的直接寻址的优点优点是:提供存储器操作数地址的速是:提供存储器操作数地址的速度最快;实现一个存储器操作数的访问只需一次度最快;实现一个存储器操作数的访问只需一次访存。访存。缺点缺点是:地址码较长,会大大增加指令的是:地址码较长,会大大增加指令的长度。长度。2间接寻址间接寻址n该寻址方式用于产生该寻址方式用于产生存储器操作数存储器操作数的地址。指令的地址。指令中给出的地址码被称为中给出的地址码被称为间接地址间接地址。间接
12、寻址的过。间接寻址的过程如下图所示。程如下图所示。n间接寻址方式的最大间接寻址方式的最大缺点缺点,就是要对存储器进行,就是要对存储器进行两次访问,才能完成一个操作数的读两次访问,才能完成一个操作数的读/写。写。3寄存器寻址寄存器寻址n如果如果操作数存于寄存器中操作数存于寄存器中,则采用该寻址方式,则采用该寻址方式,在指令的地址码部分给出相应的在指令的地址码部分给出相应的寄存器编号寄存器编号(亦(亦即寄存器地址),即可对该寄存器中的操作数进即寄存器地址),即可对该寄存器中的操作数进行访问。行访问。n由于寄存器的存取速度很快,所以,由于寄存器的存取速度很快,所以,寄存器寻址寄存器寻址方式能以很快的
13、速度完成操作数的访问方式能以很快的速度完成操作数的访问。此外,。此外,寄存器的数量少,其编号的位数也少,寄存器的数量少,其编号的位数也少,能够有效能够有效地减少指令中地址码的长度地减少指令中地址码的长度。4寄存器间接寻址寄存器间接寻址n该寻址方式将该寻址方式将存储器操作数存储器操作数的地址置于一个寄存的地址置于一个寄存器中,并在指令的地址码部分给出该寄存器的编器中,并在指令的地址码部分给出该寄存器的编号。下图所示,为寄存器间接寻址方式的过程。号。下图所示,为寄存器间接寻址方式的过程。n寄存器间接寻址从寄存器中取得存储器操作数地寄存器间接寻址从寄存器中取得存储器操作数地址,速度快。以较短的寄存器
14、号换取较长的存储址,速度快。以较短的寄存器号换取较长的存储器地址,有利于缩短指令中地址码长度器地址,有利于缩短指令中地址码长度。n如果使用加如果使用加1或减或减1指令对寄存器中的操作数地址指令对寄存器中的操作数地址进行修改,可以方便地通过循环控制,对在存储进行修改,可以方便地通过循环控制,对在存储器中连续存放的一组数据依次进行处理。器中连续存放的一组数据依次进行处理。5变址寻址变址寻址n该寻址方式用于访问该寻址方式用于访问存储器操作数存储器操作数。变址寻址需。变址寻址需要用到一种要用到一种变址寄存器变址寄存器;变址寄存器中存放用于;变址寄存器中存放用于改变存储器地址的改变存储器地址的正偏移量正
15、偏移量(即地址增量),而(即地址增量),而基础的存储器地址在指令的地址码字段中给出。基础的存储器地址在指令的地址码字段中给出。n变址寻址也适合于对在存储器中连续存放的一组变址寻址也适合于对在存储器中连续存放的一组数据依次进行处理。变址寻址的主要缺点,是需数据依次进行处理。变址寻址的主要缺点,是需要设置专门的要设置专门的地址加法器地址加法器来计算操作数的地址。来计算操作数的地址。6基址寻址基址寻址n该寻址方式用于访问该寻址方式用于访问存储器操作数存储器操作数。基址寻址所。基址寻址所用的寄存器称为用的寄存器称为基址寄存器基址寄存器,用于存放存储器某,用于存放存储器某个区域的首地址,指令中另外设置一
16、个地址码字个区域的首地址,指令中另外设置一个地址码字段,用来表示一个段,用来表示一个无符号偏移量无符号偏移量。n基址寻址与变址寻址在对寄存器内容和地址码字基址寻址与变址寻址在对寄存器内容和地址码字段的解释上相反,因此,它们的使用场合是不同段的解释上相反,因此,它们的使用场合是不同的。的。7相对寻址相对寻址n相对寻址与基址寻址类似,但寄存器改为使用程相对寻址与基址寻址类似,但寄存器改为使用程序计数器序计数器PC,且不用在指令中表示出来。相对寻,且不用在指令中表示出来。相对寻址是以下条指令的地址为基础地址,再加上一个址是以下条指令的地址为基础地址,再加上一个偏移量来产生操作数地址的。偏移量来产生操
17、作数地址的。相对寻址中的偏移相对寻址中的偏移量是一个带符号的数量是一个带符号的数,用补码表示用补码表示。因此,相对。因此,相对寻址可以在基础地址前后一定范围内寻址。这种寻址可以在基础地址前后一定范围内寻址。这种寻址方式特别适用于转移指令,用以产生转移目寻址方式特别适用于转移指令,用以产生转移目标指令的地址标指令的地址,也适用于浮动程序的设计,也适用于浮动程序的设计。n变址寻址、基址寻址和相对寻址有着相似的地址变址寻址、基址寻址和相对寻址有着相似的地址产生过程,通常被统称为产生过程,通常被统称为偏移寻址方式偏移寻址方式。8隐含寻址隐含寻址n如果指令中某个操作数的地址码是默认的,则不如果指令中某个
18、操作数的地址码是默认的,则不必在指令中表示出来,该操作数的寻址方式就称必在指令中表示出来,该操作数的寻址方式就称为隐含寻址方式。为隐含寻址方式。n采用隐含寻址可以在指令中减少一个地址码,有采用隐含寻址可以在指令中减少一个地址码,有利于缩短指令的长度。但隐含寻址也降低了指令利于缩短指令的长度。但隐含寻址也降低了指令使用的灵活性。使用的灵活性。9堆栈寻址堆栈寻址n进栈和出栈指令直接利用进栈和出栈指令直接利用栈顶指针栈顶指针获取操作数的获取操作数的地址,不需在指令中表示这个地址。所以,堆栈地址,不需在指令中表示这个地址。所以,堆栈寻址也是一种隐含寻址。寻址也是一种隐含寻址。10立即寻址立即寻址n立即
19、寻址方式将操作数直接放在指令的地址码字立即寻址方式将操作数直接放在指令的地址码字段,当控制器从存储器读入这条指令时,该操作段,当控制器从存储器读入这条指令时,该操作数也同时被读取进来;这种操作数称为数也同时被读取进来;这种操作数称为立即数立即数。n立即数只能作为源操作数,不能作目标操作数。立即数只能作为源操作数,不能作目标操作数。寻址方式有效地址说明直接寻址EA=AA为地址码部分给出的存储器直接地址间接寻址EA=(A)A为地址码给出的地址,该地址对应的存储字的内容为操作数地址寄存器寻址EA=RR为寄存器,操作数就存于R中寄存器间接寻址EA=(R)R为寄存器,R的内容为操作数在存储器中的地址变址
20、寻址EA=(R)+AR为变址寄存器,A为基础地址,R的内容加上A得操作数的地址基址寻址EA=(R)+AR为基址寄存器,A为偏移量,R的内容加上A得操作数的地址相对寻址EA=(PC)+APC为程序计数器,A为偏移量,PC的内容加上A得操作数的地址隐含寻址EA=指定寄存器指定寄存器是默认的,不用在地址码中表示堆栈寻址EA=(SP)SP是堆栈的栈顶指针,其内容即为栈顶处的存储单元地址立即寻址操作数=AA为立即数,置于地址码部分 指令操作码的设计n对操作码的设计,主要有两方面的要求:一是节对操作码的设计,主要有两方面的要求:一是节省程序的存储空间(即提高空间效率);二是降省程序的存储空间(即提高空间效
21、率);二是降低硬件译码的复杂程度,加快指令的处理速度低硬件译码的复杂程度,加快指令的处理速度(即提高时间效率)。(即提高时间效率)。n操作码的设计方法有三种:固定长度操作码,操作码的设计方法有三种:固定长度操作码,Huffman编码法和扩展编码法。编码法和扩展编码法。1固定长度操作码固定长度操作码n这是一种最简单的操作码设计方法,它将指令系这是一种最简单的操作码设计方法,它将指令系统中所有指令的操作码都设计成相同的长度。其统中所有指令的操作码都设计成相同的长度。其操作码长度(位数)操作码长度(位数)k与指令数量与指令数量n之间的关系是之间的关系是n固定长度操作码固定长度操作码非常规整非常规整,
22、便于硬件译码便于硬件译码(译码(译码器只需识别一种长度的编码),是器只需识别一种长度的编码),是RISC系统普遍系统普遍采用的操作码设计方法。但是,这种编码方法的采用的操作码设计方法。但是,这种编码方法的操作码平均长度大操作码平均长度大,空间效率差空间效率差。2Huffman编码法编码法nHuffman编码法根据一个指令系统中各种指令使编码法根据一个指令系统中各种指令使用概率的不同,为指令设计不同长度的操作码;用概率的不同,为指令设计不同长度的操作码;其中,使用概率越高的指令,其操作码越短,反其中,使用概率越高的指令,其操作码越短,反之则越长。之则越长。nHuffman编码法是实际可用的操作码
23、设计方法中,编码法是实际可用的操作码设计方法中,操作码平均长度最短操作码平均长度最短(即空间效率最高)的编码(即空间效率最高)的编码方法。方法。n设指令系统有设指令系统有n(n1)种指令,第)种指令,第i(i=1,2,n)种指令的使用概率为)种指令的使用概率为pi,操作码长度为,操作码长度为li,则按,则按Huffman编码法所得到的操作码的平均长编码法所得到的操作码的平均长度为度为 【例5.1】设某模型机共有设某模型机共有7种不同的指令种不同的指令I1I7,其使用概,其使用概率依次为,。用率依次为,。用Huffman编码法为这编码法为这7种指令种指令设计操作码,计算操作码的平均长度,并与固定
24、长度操作设计操作码,计算操作码的平均长度,并与固定长度操作码作比较。码作比较。解解:Huffman编码法的基础是编码法的基础是Huffman树,也称最优二叉树,也称最优二叉树。树。Huffman树的各终端结点分别对应着需要编码的各条树的各终端结点分别对应着需要编码的各条指令,且使用概率越高的指令,距离树根结点就越近。指令,且使用概率越高的指令,距离树根结点就越近。指指 令令使用概率使用概率操作操作码码操作操作码长码长度度I10.4501位位I20.301 02位位I30.151 1 03位位I40.051 1 1 04位位I50.031 1 1 1 05位位I60.011 1 1 1 1 06
25、位位I70.011 1 1 1 1 16位位 由此可得操作码的平均长度为由此可得操作码的平均长度为 如采用固定长度操作码,操作码长度如采用固定长度操作码,操作码长度k至少取至少取3位,平均长位,平均长度也是度也是3位。与位。与Huffman编码法相比,其操作码的冗余量编码法相比,其操作码的冗余量为为nHuffman编码法的主要问题,就是操作码长度变编码法的主要问题,就是操作码长度变化太多,极不规整,不利于硬件的译码。此外,化太多,极不规整,不利于硬件的译码。此外,极不规整的操作码也很难与地址码配合,形成有极不规整的操作码也很难与地址码配合,形成有规则长度的指令编码。由于上述原因,规则长度的指令
26、编码。由于上述原因,Huffman编码法一般不用于实际的指令操作码设计。编码法一般不用于实际的指令操作码设计。3扩展编码法扩展编码法n扩展编码法也以扩展编码法也以Huffman编码法的思想为基础,编码法的思想为基础,按指令使用概率的不同,设计不同长度的操作码。按指令使用概率的不同,设计不同长度的操作码。但是,扩展编码法但是,扩展编码法减少了操作码长度的变化减少了操作码长度的变化,并,并限制了可用的几种长度值限制了可用的几种长度值,使操作码变得较为规,使操作码变得较为规整,以降低硬件译码的难度。整,以降低硬件译码的难度。n扩展编码法有扩展编码法有等长扩展编码法等长扩展编码法和和不等长扩展编码不等
27、长扩展编码法法两种实现方法。等长扩展编码是指编码的长度两种实现方法。等长扩展编码是指编码的长度按固定的增量扩展,按固定的增量扩展,如如4-8-12扩展法;不等长扩扩展法;不等长扩展编码则指操作码的长度增量不相等,如展编码则指操作码的长度增量不相等,如4-6-10扩扩展法。展法。n硬件译码时是按短码优先原则进行的,所以,不硬件译码时是按短码优先原则进行的,所以,不能使所设计的较短操作码成为较长操作码的能使所设计的较短操作码成为较长操作码的前缀前缀。n下表所列,是对例中的下表所列,是对例中的7条指令,分别按条指令,分别按1-2-3-5不等长扩不等长扩展编码法和展编码法和2-4等长扩展编码法所设计的
28、操作码。等长扩展编码法所设计的操作码。其中,采用其中,采用1-2-3-5不等长扩展编码法的操作码平均长度为不等长扩展编码法的操作码平均长度为指指 令令使用概率使用概率1-2-3-5不等长扩展编码不等长扩展编码2-4等等长扩长扩展展编码编码I10.4500 0I20.301 00 1I30.151 1 01 0I40.051 1 1 0 01 1 0 0I50.031 1 1 0 11 1 0 1I60.011 1 1 1 01 1 1 0I70.011 1 1 1 11 1 1 1 采用采用2-4等长扩展编码法的操作码平均长度为等长扩展编码法的操作码平均长度为n为了避免出现前缀问题,不能将短编
29、码用尽,必为了避免出现前缀问题,不能将短编码用尽,必须保留若干个编码用于长编码的扩展。须保留若干个编码用于长编码的扩展。【例5.2】设某机的指令系统有设某机的指令系统有72条指令,试采用条指令,试采用4-8等长等长扩展编码法为其设计操作码。扩展编码法为其设计操作码。解解:首先,根据指令使用概率的高低,将指令分成两组,:首先,根据指令使用概率的高低,将指令分成两组,使用概率较高的一组采用使用概率较高的一组采用4位操作码,另一组则用位操作码,另一组则用8位操作位操作码。但是,每组究竟包含多少条指令,要结合所采用的编码。但是,每组究竟包含多少条指令,要结合所采用的编码法来确定;总的原则是使操作码的平
30、均长度尽可能短。码法来确定;总的原则是使操作码的平均长度尽可能短。4位编码最多只有位编码最多只有16种,而且,为了扩展编码,还必须保种,而且,为了扩展编码,还必须保留若干个编码用于扩展,因此,留若干个编码用于扩展,因此,4位的操作码必须少于位的操作码必须少于16种,也就是说,种,也就是说,8位操作码的数量要多于位操作码的数量要多于56种。由于扩展种。由于扩展增量为增量为4位,所以,每保留一个位,所以,每保留一个4位编码,就能扩展位编码,就能扩展16个个8位编码;根据位编码;根据8位操作码的数量,至少需要保留位操作码的数量,至少需要保留4个个4位操位操作码,才能满足扩展编码的需要(共可扩展作码,
31、才能满足扩展编码的需要(共可扩展164=64个个8位位操作码)。因此,操作码)。因此,4位操作码只能设计位操作码只能设计12种,而种,而8位操作码位操作码共需设计共需设计60种。种。【例5.3】设某机的指令系统有设某机的指令系统有72条指令,试采用条指令,试采用4-8-12等等长扩展编码法为其设计操作码。长扩展编码法为其设计操作码。解解:设计方案有很多,总的设计原则始终是使操作码的平:设计方案有很多,总的设计原则始终是使操作码的平均长度尽可能短。下表中列出了几种设计方案。均长度尽可能短。下表中列出了几种设计方案。4位操作位操作码码数数量量8位操作位操作码码数数量量12位操作位操作码码数数量量1
32、5(保留(保留1个个编码编码)13(保留(保留3个个编码编码)4414(保留(保留2个个编码编码)30(保留(保留2个个编码编码)2813(保留(保留3个个编码编码)47(保留(保留1个个编码编码)12 指令地址码的设计n地址码的设计主要涉及到地址码的设计主要涉及到地址码个数地址码个数的选择和的选择和寻寻址方式址方式的设计。的设计。n一条指令中设置几个地址码,首先与指令的操作一条指令中设置几个地址码,首先与指令的操作类型有关,其次与寻址方式有关。类型有关,其次与寻址方式有关。n寻址方式设计是指令格式设计的重要内容。寻址方式设计是指令格式设计的重要内容。必须必须在指令中明确表示每个操作数的寻址方
33、式在指令中明确表示每个操作数的寻址方式。n一种做法是,一种做法是,在指令操作码中包含操作数的寻址在指令操作码中包含操作数的寻址方式信息方式信息。n另一种做法,另一种做法,是在指令的地址码部分表示操作数是在指令的地址码部分表示操作数的寻址方式。的寻址方式。具体做法是,在地址码部分为每个具体做法是,在地址码部分为每个操作数设置一个寻址方式字段,用以指出所采用操作数设置一个寻址方式字段,用以指出所采用的寻址方式。的寻址方式。n对不同的寻址方式,其操作数地址的产生方法不对不同的寻址方式,其操作数地址的产生方法不同,操作数地址的组成成份也不同。一个操作数同,操作数地址的组成成份也不同。一个操作数地址码的
34、典型组成成份有:地址码的典型组成成份有:n有些计算机把上述地址码的成份做成有些计算机把上述地址码的成份做成组合式组合式的,的,不同的寻址方式将组合不同的成份来产生操作数不同的寻址方式将组合不同的成份来产生操作数的地址,不需要的成份则不出现在地址码中;也的地址,不需要的成份则不出现在地址码中;也有些计算机采用有些计算机采用固定格式固定格式的地址码,对当前寻址的地址码,对当前寻址方式不使用的成分看作无效即可。方式不使用的成分看作无效即可。【例5.4】某机字长为某机字长为32位,有位,有32个通用寄存器(可兼作变个通用寄存器(可兼作变址寄存器和基址寄存器),指令系统包含址寄存器和基址寄存器),指令系
35、统包含160条指令,采条指令,采用固定长度操作码。试设计其单字长一地址指令格式,要用固定长度操作码。试设计其单字长一地址指令格式,要求具有直接寻址、间接寻址、寄存器寻址、寄存器间接寻求具有直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址寻址等址、变址寻址、基址寻址等6种寻址方式。种寻址方式。解解:由于是单字长指令,所以指令长度为:由于是单字长指令,所以指令长度为32位;指令数为位;指令数为160条,可知操作码条,可知操作码OPC为为8位;有位;有32(25)个通用寄存器,)个通用寄存器,所以寄存器号所以寄存器号R需需5位;通用寄存器可兼作变址寄存器和基位;通用寄存器可兼作变址寄存
36、器和基址寄存器,所以不必设置变址寄存器号和基址寄存器号,址寄存器,所以不必设置变址寄存器号和基址寄存器号,统一使用寄存器号统一使用寄存器号R即可;寻址方式有即可;寻址方式有6种,寻址方式种,寻址方式M需需3位;剩余位;剩余16位作为偏移量位作为偏移量D。指令格式如下:。指令格式如下:【例5.5】某机字长为某机字长为32位,有位,有16个通用寄存器(可兼作变个通用寄存器(可兼作变址寄存器和基址寄存器),指令系统包含址寄存器和基址寄存器),指令系统包含130条指令,采条指令,采用固定长度操作码。试设计其单字长二地址指令格式,要用固定长度操作码。试设计其单字长二地址指令格式,要求源操作数具有寄存器寻
37、址和寄存器间接寻址两种寻址方求源操作数具有寄存器寻址和寄存器间接寻址两种寻址方式,目标操作数具有直接寻址、间接寻址、寄存器寻址、式,目标操作数具有直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址寻址等寄存器间接寻址、变址寻址、基址寻址等6种寻址方式。种寻址方式。解解:由于是单字长指令,所以指令长度为:由于是单字长指令,所以指令长度为32位;指令数为位;指令数为130条,可知操作码条,可知操作码OPC为为8位;有位;有16(24)个通用寄存器,)个通用寄存器,所以寄存器号所以寄存器号R需需4位。源操作数有位。源操作数有2种寻址方式,其寻址种寻址方式,其寻址方式方式Ms为为1位,还需
38、要一个寄存器位,还需要一个寄存器Rs;目标操作数寻址方;目标操作数寻址方式有式有6种,其寻址方式种,其寻址方式Md需需3位,还要一个寄存器位,还要一个寄存器Rd,剩,剩余余12位作为偏移量位作为偏移量D。指令格式如下。指令格式如下 指令格式举例n指令的长度有指令的长度有固定长度固定长度和和可变长度可变长度两种。固定长两种。固定长度的指令一般只在某些度的指令一般只在某些RISC系统中使用,而多数系统中使用,而多数计算机系统的指令是可变长度的。计算机系统的指令是可变长度的。n下图所示,为下图所示,为IBM 370系列计算机的系列计算机的5种主要指令种主要指令格式。格式。nIBM 370系列计算机的
39、字长为系列计算机的字长为32位,有位,有16个通用个通用寄存器,可兼作变址寄存器和基址寄存器使用。寄存器,可兼作变址寄存器和基址寄存器使用。指令长度有指令长度有16位、位、32位和位和48位等几种,所有指令位等几种,所有指令的操作码长度固定为的操作码长度固定为8位,属于位,属于固定长度操作码的固定长度操作码的可变长度指令结构可变长度指令结构;指令的寻址方式信息包含在指令的寻址方式信息包含在操作码中操作码中。n除除RS型格式为三地址指令格式外,其余均为二地型格式为三地址指令格式外,其余均为二地址指令格式,其中,址指令格式,其中,R表示寄存器,表示寄存器,X表示变址寄表示变址寄存器,存器,B表示基
40、址寄存器,表示基址寄存器,D表示偏移量,表示偏移量,I表示表示立即数,立即数,L表示数据块长度(字节数)。表示数据块长度(字节数)。n小型计算机小型计算机PDP-11的字长为的字长为16位,有位,有8个个16位通位通用寄存器,可兼作变址寄存器使用,其中,用寄存器,可兼作变址寄存器使用,其中,R7作作为程序计数器,为程序计数器,R6作为堆栈指针。作为堆栈指针。PDP-11使用了使用了13种不同的指令格式,其指令长度和操作码长度种不同的指令格式,其指令长度和操作码长度都是可变的;寻址方式有都是可变的;寻址方式有8种,寻址方式字段为种,寻址方式字段为3位,设置在地址码部分。位,设置在地址码部分。n指
41、令格式中,指令格式中,“源源”和和“目标目标”各为各为6位,其中包位,其中包含含3位寻址方式信息和一个位寻址方式信息和一个3位的寄存器编号位的寄存器编号,表表示操作数可以采用寄存器间接寻址方式和变址寻示操作数可以采用寄存器间接寻址方式和变址寻址方式等址方式等;R是一个通用寄存器编号,表示操作是一个通用寄存器编号,表示操作数采用寄存器寻址方式;数采用寄存器寻址方式;FP是浮点寄存器编号,是浮点寄存器编号,可以指定可以指定4个浮点寄存器之一;个浮点寄存器之一;“位移位移”是转移指是转移指令的相对位移量(带符号);令的相对位移量(带符号);CC是条件码字段。是条件码字段。nPentium指令格式中,
42、除了操作码是必不可少的,指令格式中,除了操作码是必不可少的,地址码的所有成份都做成组合式的,都是可选的。地址码的所有成份都做成组合式的,都是可选的。nMOD/RM字节指出操作数是在寄存器中还是在存字节指出操作数是在寄存器中还是在存储器中。储器中。Reg/Opc用于给出一个寄存器号(对寄用于给出一个寄存器号(对寄存器寻址方式),或者作为操作码的存器寻址方式),或者作为操作码的3个附加位;个附加位;R/M可以用来给出一个寄存器号(对寄存器寻址可以用来给出一个寄存器号(对寄存器寻址方式),或者与方式),或者与Mod组合,形成多种存储器操作组合,形成多种存储器操作数的寻址方式;数的寻址方式;Mod用于
43、单独或与用于单独或与R/M组合,形组合,形成各种寻址方式。成各种寻址方式。nMOD/RM字节的某些编码,需要包含字节的某些编码,需要包含SIB字节来字节来完整描述寻址方式。比例因子完整描述寻址方式。比例因子S是一个倍数值,其是一个倍数值,其取值为取值为1,2,4或或8,用于放大变址寄存器的内容;,用于放大变址寄存器的内容;变址寄存器变址寄存器I用于指出一个变址寄存器号;基址寄用于指出一个变址寄存器号;基址寄存器存器B用于指出一个基址寄存器号。用于指出一个基址寄存器号。nPentium的指令格式中,只有一套完整的寻址方式的指令格式中,只有一套完整的寻址方式信息,因此,一条指令中,信息,因此,一条
44、指令中,只能有一个操作数采只能有一个操作数采用存储器寻址方式用存储器寻址方式,另一个操作数(如果有的话)另一个操作数(如果有的话)只能通过操作码来说明寻址方式只能通过操作码来说明寻址方式,且只能采用寄,且只能采用寄存器寻址方式或立即寻址方式。存器寻址方式或立即寻址方式。【例5.6】某模型机字长为某模型机字长为16位,共有位,共有64种操作,操作码长种操作,操作码长度固定,且具有以下特点:度固定,且具有以下特点:采用一地址或二地址指令格式。采用一地址或二地址指令格式。有寄存器寻址、直接寻址和相对寻址(偏移量为有寄存器寻址、直接寻址和相对寻址(偏移量为-128 +127)三种寻址方式。)三种寻址方
45、式。有有16个通用寄存器,算术运算和逻辑运算的操作数均在个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中。寄存器中,结果也在寄存器中。取数取数/存数指令在通用寄存器和存储器之间传送数据。存数指令在通用寄存器和存储器之间传送数据。存储器容量为存储器容量为1MB,按字节编址。,按字节编址。要求设计算术逻辑运算指令、取数要求设计算术逻辑运算指令、取数/存数指令和相对转移存数指令和相对转移指令的格式,并简述理由。指令的格式,并简述理由。解解:首先,计算以下重要参数:采用固定长度操作码设计:首先,计算以下重要参数:采用固定长度操作码设计64(26)种操作,操作码长度为)种操作,操作
46、码长度为6位;有位;有3种寻址方式,寻址种寻址方式,寻址方式字段采用方式字段采用2位;有位;有16(24)个通用寄存器,寄存器编)个通用寄存器,寄存器编号为号为4位;相对偏移量为位;相对偏移量为-128 +127,采用,采用8位补码表示;位补码表示;存储器容量为存储器容量为1MB(220字节),存储器操作数的有效地址字节),存储器操作数的有效地址为为20位。位。算术逻辑运算指令采用二地址指令格式;操作数均在寄算术逻辑运算指令采用二地址指令格式;操作数均在寄存器中,所以采用寄存器寻址方式,在地址码部分给出源存器中,所以采用寄存器寻址方式,在地址码部分给出源和目标寄存器编号。指令长度取单字长即可,
47、指令格式如和目标寄存器编号。指令长度取单字长即可,指令格式如下:下:其中,其中,OPC为操作码,为操作码,M为寻址方式字段,为寻址方式字段,Rs和和Rd分别分别为源和目标寄存器编号。为源和目标寄存器编号。取数取数/存数指令为二地址寄存器存数指令为二地址寄存器存储器型指令;寄存存储器型指令;寄存器操作数采用寄存器寻址方式,给出寄存器编号,存储器器操作数采用寄存器寻址方式,给出寄存器编号,存储器操作数采用直接寻址方式,需要一个操作数采用直接寻址方式,需要一个20位的直接地址。指位的直接地址。指令长度为双字长,其格式如下:令长度为双字长,其格式如下:其中,其中,OPC为操作码,为操作码,M为寻址方式
48、字段,为寻址方式字段,R为寄存器编为寄存器编号(取数时为目标寄存器,存数时为源寄存器),号(取数时为目标寄存器,存数时为源寄存器),A为为20位直接地址(取数时为源操作数地址,存数时为目标操作位直接地址(取数时为源操作数地址,存数时为目标操作数地址)。数地址)。相对转移指令采用相对寻址方式产生转移目标指令的地相对转移指令采用相对寻址方式产生转移目标指令的地址,相对寻址所需的程序计数器址,相对寻址所需的程序计数器PC是默认的,不用在指是默认的,不用在指令中显式表示,指令的地址码部分只需给出一个用补码表令中显式表示,指令的地址码部分只需给出一个用补码表示的示的8位偏移量即可。指令长度取单字长,格式
49、如下:位偏移量即可。指令长度取单字长,格式如下:其中,其中,OPC为操作码,为操作码,M为寻址方式字段,为寻址方式字段,D为偏移量为偏移量(用补码表示)。(用补码表示)。5.3 精简指令系统计算机精简指令系统计算机5.3.1 从CISC到RISCn前面介绍的前面介绍的IBM 370系列计算机、系列计算机、PDP-11小型计小型计算机和算机和Pentium系列微型计算机,都是复杂指令系系列微型计算机,都是复杂指令系统计算机(统计算机(CISC)。它们的共同特点是:)。它们的共同特点是:指令系统庞大,指令数量多,有很多功能复杂指令系统庞大,指令数量多,有很多功能复杂的指令;的指令;指令格式变化多,
50、操作码长度和指令长度通常指令格式变化多,操作码长度和指令长度通常都是可变的;都是可变的;寻址方式种类繁多,操作数通常可采用多种寻寻址方式种类繁多,操作数通常可采用多种寻址方式,其中包含很多访问存储器的寻址方式;址方式,其中包含很多访问存储器的寻址方式;指令对存储器的访问频繁。指令对存储器的访问频繁。n指令系统复杂化在带来一些益处的同时,也使得指令系统复杂化在带来一些益处的同时,也使得计算机系统结构越来越复杂,给计算机系统带来计算机系统结构越来越复杂,给计算机系统带来了研制周期长、投入大、错误隐患多、调试困难了研制周期长、投入大、错误隐患多、调试困难等问题。而且,大量复杂的指令功能难以直接用等问