计算机组成原理 教学课件 ppt 作者 严云洋ch5

上传人:w****i 文档编号:94398742 上传时间:2019-08-06 格式:PPT 页数:88 大小:752.50KB
返回 下载 相关 举报
计算机组成原理 教学课件 ppt 作者 严云洋ch5_第1页
第1页 / 共88页
计算机组成原理 教学课件 ppt 作者 严云洋ch5_第2页
第2页 / 共88页
计算机组成原理 教学课件 ppt 作者 严云洋ch5_第3页
第3页 / 共88页
计算机组成原理 教学课件 ppt 作者 严云洋ch5_第4页
第4页 / 共88页
计算机组成原理 教学课件 ppt 作者 严云洋ch5_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《计算机组成原理 教学课件 ppt 作者 严云洋ch5》由会员分享,可在线阅读,更多相关《计算机组成原理 教学课件 ppt 作者 严云洋ch5(88页珍藏版)》请在金锄头文库上搜索。

1、第5章 指令系统 指令和指令系统是计算机中最基本的概念。指令是指示计算机执行某些操作的命令,一台计算机内所有指令的集合构成该机的指令系统。指令系统是计算机的主要属性,位于硬件和软件的交界面上。 本章要点 1. 指令格式 指令的基本格式 定长操作码指令格式 扩展操作码指令格式 2. 指令的寻址方式 有效地址的概念 数据寻址和指令寻址 常见寻址方式 3. CISC和RISC的基本概念,5.1 机器指令 在计算机中,指令用于直接表示对计算机硬件实体的控制信息,是计算机硬件惟一能够直接理解并执行的命令,故也称为机器指令。利用机器指令设计的编程语言称为机器语言,通常一条机器语言语句就是一条机器指令,用机

2、器语言编制的程序称为机器语言程序。任何用其他语言编制的程序都必须经过“翻译”,翻译为机器语言程序,才能在机器中正确运行。指令系统是面向机器的,不同的计算机系统具有不同的指令集,即每一个计算机系统都有自己的指令系统。,5.1.1 指令格式 在计算机中,指令与数据一样是采用二进制代码表示的。通常把表示一条指令的一串二进制代码称为指令码或指令字。为了说明机器硬件应完成的操作,一条指令中应指明指令要执行的操作和作为操作对象的操作数的来源以及操作结果的去向。图5-1给出了指令的基本格式。 图5-1 指令的基本格式 在机器指令中,操作码OP表示指令应执行的操作和应具有的功能,是一条指令中不可缺少的部分,不

3、同的指令应有不同的操作码;地址码是一个广义的概念,用于表示与操作数据相关的地址信息。地址码既可以表示参与操作的操作数的存放地址或操作结果的存放地址,也可以表示操作数本身。一条指令可以具有多个地址码字段,也可以没有地址码。,5.1.2 指令字长 指令字的长度是指一个指令字中包含的二进制代码的位数。在一个指令系统中,如果各种指令字的长度均为固定的,则称为定长指令字结构;如果各种指令字的长度随指令功能而异,则称为可变长指令字结构。,虽然不同指令系统的指令长度各不相同,但因为指令与数据都是存放在存储器中的,所以无论是定长还是可变长指令,其长度都不能随意确定。为了便于存储,指令长度与机器字长之间具有一定

4、的对应关系。由于机器字长通常等于字符长度的整倍数,而一个字符一般占有一个字节的长度,因此指令长度通常设计为字节的整倍数。例如奔腾系列机的指令系统中,最短的指令长度为个字节,最长的指令长度为12个字节。在按字节编址的存储器中,采用长度为字节的整倍数的指令,可以充分利用存储空间,提高内存访问的效率。 根据指令长度与机器字长的匹配关系,通常将指令长度等于机器字长的指令,称为单字长指令;指令长度等于两个机器字长的指令,称为双字长指令;根据需要,有的指令系统中还有更多倍字长的指令以及半字长指令等。由于短指令占用存储空间少,有利于提高指令执行速度,通常把最常用的指令(如算术逻辑运算指令、数据传送指令等)设

5、计成短指令格式。,5.1.3 指令的地址结构 计算机执行一条指令所需要的全部信息都必须包含在指令中。对于一般的双操作数运算类指令来说,除去操作码(OP)之外,指令还应包含以下信息。 (1)第一操作数地址,用A1表示。 (2)第二操作数地址,用A2表示。 (3)操作结果存放地址,用A3表示。 (4)下条将要执行的指令的地址,用A4表示。 这些信息可以在指令中明显的给出,称为显地址;也可以依照某种事先的约定,用隐含的方式给出,称为隐地址。下面从地址结构的角度来介绍几种指令格式。,四地址指令 前述的4个地址信息都在地址字段中明显的给出,其指令的格式为: 指令的含义: , 用于指示下条将要执行的指令的

6、地址 其中A1表示地址,(A1)表示存放于该地址中的内容。 这种格式的主要优点是直观,下条指令的地址明显。但其最严重的缺点是指令的长度太长,如果每个地址为16位,整个地址码字段就要长达64位,所以这种格式是不切实际的。,2. 三地址指令 正常情况下,大多数指令按顺序依次被从主存中取出来执行,只有在遇到转移指令时,程序的执行顺序才会改变。因此,可以用一个程序计数器(Program Counter,PC)来存放指令地址。通常每执行一条指令,PC就自动加l(设每条指令只占一个主存单元),直接得到将要执行的下一条指令的地址。这样,指令中就不必再显式地给出下一条指令的地址。三地址指令格式为: 指令的含义

7、: (隐含) 执行一条三地址的双操作数运算指令,至少需要访问4次主存。第一次取指令本身,第二次取被操作数,第三次取操作数,第四次保存运算结果。 这种格式省去了一个地址,但指令长度仍比较长,所以只在字长较长的大、中型机中使用,小型、微型计算机中很少使用。,3. 二地址指令 三地址指令执行完后,主存中的两个操作数均不会被破坏,可供再次使用。然而,通常并不一定需要完整的保留两个操作数。比如,可让第一操作数地址同时兼作存放结果的地址(目的地址),这样即得到了二地址指令,其格式为: 指令的含义: (隐含) 其中A1表示目的操作数地址, A2表示源操作数地址。 注意:指令执行之后,目的操作数地址中原存的内

8、容已被破坏了。 执行一条二地址的双操作数运算指令,同样至少需要访问4次主存。,4. 一地址指令 一地址指令顾名思义只有一个显地址,它的指令格式为: 一地址指令只有一个地址,那么另一个操作数来自何方呢?指令中虽未显式给出,但按事先约定,这个隐含的操作数就放在一个专门的寄存器中。因为这个寄存器在连续性运算时,保存着多条指令连续操作的累计结果,故称为累加寄存器(Accumulator,Acc)。 指令的含义: (隐含) 执行一条一地址的双操作数运算指令,只需要访问两次主存。第一次取指令本身,第二次取操作数。被操作数和运算结果都放在累加寄存器中,所以读取和存入都不需要访问主存。,5. 零地址指令 零地

9、址指令格式中只有操作码字段,没有地址码字段,其格式为: 零地址的算术逻辑类指令是用在堆栈计算机中的,堆栈计算机没有一般计算机中必备的通用寄存器,因此堆栈就成为提供操作数和保存运算结果的惟一场所。通常,参加算术逻辑运算的两个操作数隐式地从堆栈顶部弹出,送到运算器中进行运算,运算的结果再隐式地压入堆栈。有关堆栈的概念将在稍后讨论。,指令中地址个数的选取要考虑诸多的因素。从缩短程序长度、方便用户使用、增加操作并行度等方面来看,选用三地址指令格式较好;从缩短指令长度,减少访存次数、简化硬件设计等方面来看,一地址指令格式较好。对于同一个问题,用三地址指令编写的程序最短,但指令长度(程序存储量)最长;而用

10、二、一、零地址指令来编写程序,程序的长度一个比一个长,但指令的长度一个比一个短。表5-1给出了不同地址数指令的特点及适用场合。 表5-1 不同地址数指令的特点及适用场合,地址数量程序长度程序存储量 执行速度 适用场合 三地址短 最大一般向量、矩阵运算为主二地址一般 很大 很低一般不宜采用一地址 较长较大 较快连续运算,硬件结构简单零地址 最长最小最低嵌套、递归问题。 前面介绍的操作数地址都是指主存单元的地址,实际上许多操作数可能是存放在通用寄存器里的。随着计算技术和集成电路技术的迅速发展,许多计算机在CPU中设置了相当数量的通用寄存器,用它们来暂存运算数据或中间结果,这样可以大大减少访存次数,

11、提高计算机的处理速度。如实际使用的二地址指令多为二地址R(通用寄存器)型,一般计算机的通用寄存器数量有832个,其地址(或称寄存器编号)有35位就可以了。由于二地址R型指令的地址码字段很短,且操作数就在寄存器中,所以这类指令的程序存储量最小,程序执行速度最快,在小型、微型计算机中被大量使用。,【例5.1】分别利用三地址、二地址、一地址和零地址指令编制计算算术表达式的程序。 解:假设a、b、c为操作数,A、B、C为操作数地址 (1)三地址指令程序 MUL A,B,X ADD X,C,X SUB X,D,X ADD E,F,Y DIV X,Y,X 共需5条三地址指令,每条指令4次访存,执行此程序共

12、访存20次。,(2)二地址指令程序 MOV X,A MUL X,B ADD X,C SUB X,D MOV Y,E ADD Y,F DIV X,Y 共需7条二地址指令,MOV指令3次访存,算术运算指令4次访存,执行此程序共访存次。,(3)一地址指令程序 LOAD E ADD F STORE X LOAD A MUL B ADD C SUB D DIV X STORE X 共需9条一地址指令,每条指令2次访存,执行此程序共访存92=18次,(4)零地址指令程序 PUSH A PUSH B MUL PUSH C ADD PUSH D SUB PUSH E PUSH F ADD DIV POP X

13、共需12条指令,其中7条一地址的进、出栈指令,5条零地址的算术运算指令,进、出栈指令3次访存,算术逻辑指令4次访存,执行此程序共访存73+54=41次,5.1.4 指令操作码 操作码用于指明指令要完成的操作功能及其特性。指令系统中的每一条指令都有一个惟一确定的操作码,不同的指令具有不同的操作码。为了能够表示指令系统中的全部操作,指令字中必须有足够长度的操作码字段。若指令系统中有种操作,即指令系统中可包含条指令,则操作码的位数应满足:。 不同的指令系统,操作码的编码长度可能不同。若指令中操作码的编码长度是固定的,则称为定长编码;若操作码的编码长度是变长的,则称为变长编码。,1)定长编码 在采用定

14、长编码的指令中,所有指令的操作码长度一致,集中位于指令字的固定字段中,是一种简单规整的编码方法。由于采用定长编码的操作码在指令字中所占的位数和位置是固定的,因此指令译码简单,有利于简化硬件设计。,2)变长编码 在采用变长编码的指令中,不同指令的操作码长度不完全相同,操作码的位数不固定,分散地位于指令字的不同位置上。采用变长编码的方法,可以有效地压缩指令操作码的平均长度,便于用较短的指令字长表示更多的操作类型,寻址更大的存储空间。在早期的小型机和微型机中,由于指令字较短,均采用变长编码的指令操作码,如Intel 8086、PDP-11等机器。但变长编码的指令操作码的位数不固定且位置分散,因而增加

15、了指令译码与分析的难度,使硬件设计复杂化。,为了在满足需要的前提下,有效地缩短指令字长,通常采用扩展操作码技术进行变长操作码的编码。扩展操作码技术的思想就是当指令字长一定时,设法使操作码的长度随地址数的减少而增加,这样地址数不同的指令可以具有不同长度的操作码,从而可以充分利用指令字的各个字段,在不增加指令长度的情况下扩展操作码的长度,使有限字长的指令可以表示更多的操作类型。下面的例子说明了如何采用扩展操作码技术设计变长操作码。,设某机的指令长度为16位,其中操作码为4位,具有三个地址字段,每个地址字段长为位。其指令格式为: 如果按照定长编码的方法,4位操作码只能表示16条三地址指令。如果系统中

16、除三地址指令外,还具有二地址、一地址和零地址指令,且要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,则采用定长编码的方法是不可能满足要求的,这就需要采用变长操作码的方式设计操作码。 首先从三地址指令开始编码,由图5-2可以看到,三地址指令的操作码(OP)部分为4位,可以采用这16种编码,因为只需要15条三地址指令,所以用编码表示它们的操作码,而编码可作为区分是否是三地址指令的标志。对于二地址指令,由于少用一个地址字段,所以操作码部分可以扩展到部分,这时15条二地址指令的编码可以定义为,编码作为区分是否是二地址指令的标志。由此可见,当操作码的高位为时,表示操作码已扩展到部分。对于一地址指令,操作码部分可以扩展到部分,这时15条一地址指令的编码可以定义为,编码作为区分是否是一地址指令的标志。对于零地址指令,由于不需要地址字段,所以操作

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号