计算机组成与系统结构.ppt

上传人:本田雅阁 文档编号:2653874 上传时间:2019-04-30 格式:PPT 页数:101 大小:1.04MB
返回 下载 相关 举报
计算机组成与系统结构.ppt_第1页
第1页 / 共101页
计算机组成与系统结构.ppt_第2页
第2页 / 共101页
计算机组成与系统结构.ppt_第3页
第3页 / 共101页
亲,该文档总共101页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机组成与系统结构.ppt》由会员分享,可在线阅读,更多相关《计算机组成与系统结构.ppt(101页珍藏版)》请在三一文库上搜索。

1、计算机组成与系统结构,上海交通大学 网络教育学院 陈泽宇 博士 副教授,2019年4月30日星期二,2,第1章 计算机系统概论 第2章 运算方法和运算器 第3章 存储系统 第4章 指令系统 第5章 中央处理器(CPU) 第6章 总线系统 第7章 输入输出(I/O)系统 第8章 并行计算机系统,2019年4月30日星期二,3,第4章 指令系统,4.1 指令系统概述 4.2 指令格式 4.3 指令分类 4.4 寻址方式 4.5 指令系统实例,2019年4月30日星期二,4,4.1 指令系统概述,4.1.1 指令系统的发展 4.1.2 指令系统的性能要求,2019年4月30日星期二,5,4.1.1

2、指令系统的发展,指令是计算机硬件能够识别并直接执行操作的命令 一台计算机中所有指令的集合构成了该机的指令系统 指令系统是表征计算机性能的重要因素, 其格式与功能不仅直接影响到机器的硬件结构, 也直接影响到系统软件,影响到机器的适用范围 设计一个合理有效、功能齐全、通用性强、丰富的指令系统是至关重要的,2019年4月30日星期二,6,从计算机组成的层次结构来说,计算机的指令分为微指令、机器指令和宏指令三类 微指令是微程序级的命令,属于硬件 宏指令是由若干条机器指令组成的软件指令,属于软件 机器指令,也就是我们通常所说的指令,介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算操作,

3、2019年4月30日星期二,7,指令系统的发展经历了从简单到复杂的演变过程 1950至60年代,分立元件(晶体管或电子管)计算机的硬件结构简单,所支持的指令系统只有十几至几十条最基本的指令,而且寻址方式简单 1960年代中期,集成电路计算机的硬件功能不断增强,其指令系统也越来越丰富 1960年代后期,基本指令系统相同、基本体系结构相同的系列计算机开始出现,从而解决了各机种的软件兼容问题 同一系列的各机种具有共同的指令集,而且新推出的机种其指令系统一定包含旧机种的全部指令,2019年4月30日星期二,8,1970年代,高级语言成为主要程序设计语言,计算机应用日益普及 计算机设计者增设了各种各样复

4、杂的、面向高级语言的指令,使指令系统越来越庞大 称为复杂指令系统计算机(Complex Instruction Set Computer),简称CISC 不仅使计算机研制开发周期变长,正确性难以保证,调试维护困难,而且大量使用频率很低的复杂指令造成了硬件资源的浪费 人们提出了精简指令系统计算机(Reduced Instruction Set Computer),简称RISC 选取使用频率最高的一些简单指令,指令条数少; 指令长度固定,指令格式种类少,寻址方式种类少; 只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行,2019年4月30日星期二,9,4.1.2 指令系统的性能要求,

5、1. 完备性 2. 有效性 3. 规整性 4. 兼容性,2019年4月30日星期二,10,指令系统的性能决定了计算机的基本功能 一个完善的指令系统应满足四个方面的要求: 完备性、有效性、规整性、兼容性,2019年4月30日星期二,11,1. 完备性,指令系统的完备性是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现 完备性要求指令系统丰富、功能齐全、使用方便 一台计算机中必不可少的最基本的指令构成了指令系统的完备性 而其他一些指令则可以通过基本指令来实现,或者直接通过硬件来实现 在指令系统中采用硬件指令,可以提高程序执行速度,也便于用户编写程序,2019年4月30

6、日星期二,12,2有效性,有效性是指利用指令系统提供的指令而编写的程序能够高效率地运行 高效率主要表现在程序占据存储空间小,执行速度快 通常,一个功能完善的指令系统必定有很好的有效性,2019年4月30日星期二,13,3规整性,规整性是指指令系统的对称性、匀齐性、指令格式和数据格式的一致性 指令的对称性是指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式 这对提高程序的可读性、简化程序设计带来便利 指令的匀齐性是指一种操作性质的指令可以支持各种数据类型 例如,算术运算指令可支持字节、字和双字整数运算,十进制数运算,单、双精度浮点运算等 因此,程序设计者在选用指令

7、时无须考虑数据类型,可提高编程效率 指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取,2019年4月30日星期二,14,4兼容性,兼容性是指计算机的体系结构设计基本相同,计算机之间具有相同的基本结构、数据表示和共同的基本指令集合 因此指令系统也是兼容的,即同一个软件可以不加修改就在其他系统结构相同的机器上使用 做到所有软件都完全兼容是不可能的 目前,对于同一系列的计算机,新推出机种的指令系统通常包含旧机种的全部指令,实现了“向上兼容”,即低档机上运行的软件不需任何修改便可在高档机上运行,2019年4月30日星期二,15,4.2 指令格式,4.2.1 操作码 4.2

8、.2 地址码 4.2.3 指令字长度 4.2.4 指令助记符,2019年4月30日星期二,16,机器指令是用机器字来表示的 表示一条指令的机器字称为指令字(简称指令) 指令格式是指令字用二进制代码表示的结构形式,一般由两部分组成 操作码(Operation Code)字段 表征指令的操作特性与功能 地址码(Address Code)字段 通常用来指定参与操作的操作数的地址,2019年4月30日星期二,17,4.2.1 操作码,设计计算机时,对指令系统的每一条指令都要规定一个操作码,它是指明指令操作性质的命令码 CPU从主存每次取出一条指令,指令中的操作码告诉CPU应该执行什么性质的操作 例如,

9、可用操作码“000”表示“加法”操作,操作码“010”表示“减法”操作等 不同的操作码代表不同的指令,2019年4月30日星期二,18,组成操作码字段的位数一般取决于计算机指令系统的规模 所需指令数越多,组成操作码字段的位数也就越多 例如,一个指令系统只有8条指令,则需要3位操作码;如果有32条指令,则需要5位操作码 一般来说,一个包含n位操作码的指令系统最多能够表示2n条指令,2019年4月30日星期二,19,4.2.2 地址码,1. 零地址指令 2. 一地址指令 3. 二地址指令 4. 三地址指令 5. 多地址指令,2019年4月30日星期二,20,指令系统中的地址码用来描述指令的操作对象

10、 在地址码中可以直接给出操作数本身,也可以给出操作数在存储器或寄存器中的地址、操作数在存储器中的间接地址等 根据指令功能的不同,一条指令中可以有一个、两个或者多个操作数地址,也可以没有操作数地址 一般情况下要求有两个操作数地址,但若要考虑存放操作结果,就需要有三个操作数地址,2019年4月30日星期二,21,根据地址码的数量,可以将指令的格式分为:零地址指令、一地址指令、二地址指令、三地址指令和多地址指令,2019年4月30日星期二,22,1. 零地址指令,指令格式中没有地址码部分,只有操作码 该类指令分两种情况: 一种是无需操作数 如空操作指令、停机指令等 另一种是操作数为默认的(或称隐含的

11、) 如操作数在累加器或者堆栈中,它们的操作数由硬件机构来提供,2019年4月30日星期二,23,2. 一地址指令,常称为单操作数指令,该指令中只有一个地址码 这种指令可能是单操作数运算 给出的地址既作为操作数的地址,也作为操作结果的存储地址 也可能是二元运算 指令中提供一个操作数,另一个操作数则是隐含的 例如,以运算器中累加寄存器AC中的数据为被操作数,指令字的地址码字段所指向的数为操作数,操作结果又放回累加寄存器AC中,2019年4月30日星期二,24,其数学含义为 (AC) OP (A) AC 式中, OP表示操作性质,如加、减、乘、除等 (AC)表示累加寄存器AC中的数 (A)表示主存中

12、地址为A的存储单元中的数,或者是运算器中地址为A的通用寄存器中的数 表示把操作(运算)结果传送到指定的地方 注意:地址码字段A指明的是操作数的地址,而不是操作数本身,2019年4月30日星期二,25,3. 二地址指令,最常见的指令格式,又称为双操作数指令 通常情况下,指令中包括两个参加运算的操作数的地址码 运算结果保存在其中一个操作数的地址码中,从而使得该地址中原来的数据被覆盖 其数学含义为 (A1)OP(A2) A1 式中, 两个地址码字段A1和A2分别指明参与操作的两个数在主存或通用寄存器中的地址 地址A1兼做存放操作结果的地址,2019年4月30日星期二,26,4. 三地址指令,指令中包

13、括两个操作数地址码和一个结果地址码 可使得在操作结束后,原来的操作数不被改变 其数学含义为 (A1)OP(A2) A3 式中, A1和A2指明两个操作数地址 A3为存放操作结果的地址,2019年4月30日星期二,27,5. 多地址指令,以四地址指令为例 四地址指令比三地址指令增加了下一条要执行的指令地址 其优点是非常直观,指令所用的所有参数都有各自的存放地址,并且有明确的下一条指令地址,程序的流程很明确 其缺点也是显而易见的,这就是指令所占的长度太长,2019年4月30日星期二,28,从操作数的物理位置来说,二地址指令格式又可归结为三种类型: 1)存储器-存储器(Storage-Storage

14、, SS)型指令 指令在操作时需要多次访问主存 参与读、写操作的数都放在主存里 2)寄存器-寄存器(Register-Register, RR)型指令 指令在操作时需要多次访问寄存器 从寄存器中取操作数,把操作结果放到寄存器中 由于不需要访问主存,机器执行寄存器-寄存器型指令的速度很快 3)寄存器-存储器(Register-Storage, RS)型指令 指令在操作时既要访问主存单元,又要访问寄存器,2019年4月30日星期二,29,计算机选择什么样的指令格式,包括多方面的因素 一般情况下,地址码越少,占用的存储器空间就越小,运行速度也越快,具有时间和空间上的优势 而地址码越多,指令内容就越丰

15、富 因此,要通过指令的功能来选择指令的格式 一个指令系统中所采用的指令地址结构并不是惟一的,往往混合采用多种格式,以增强指令的功能,2019年4月30日星期二,30,4.2.3 指令字长度,一个指令字中包含二进制代码的位数,称为指令字长度 计算机能直接处理的二进制数据的位数称为机器字长 决定了计算机的运算精度 机器字长通常与主存单元的位数一致,2019年4月30日星期二,31,指令字长度 指令字长度等于机器字长的指令,称为单字长指令 指令字长度等于半个机器字长的指令,称为半字长指令 指令字长度等于两个机器字长的指令,称为双字长指令 例如, IBM 370系列32位机的指令格式有半字长的,单字长

16、的,还有一个半字长的 Pentium系列机的指令字长度也是可变的,有8位、16位、32位、64位不等,2019年4月30日星期二,32,使用多字长指令 目的在于提供足够的地址位来解决访问主存任何单元的寻址问题 主要缺点是必须两次或多次访问主存以取出一整条指令 降低了CPU的运算速度,同时占用了更多的存储空间,2019年4月30日星期二,33,在一个指令系统中,如果各种指令字长度是相等的,就称为等长指令字结构 这种指令字结构简单,且指令字长度不变 例如都采用单字长指令或半字长指令 如果各种指令字长度随指令功能而异,就称为变长指令字结构 这种指令字结构灵活,能充分利用指令长度,但指令的控制较为复杂

17、 比如有的指令是单字长指令,有的指令是双字长指令,2019年4月30日星期二,34,4.2.4 指令助记符,计算机指令的操作码和地址码在计算机中用二进制数据来表示 对于书写和阅读程序非常麻烦 通常用一些比较容易记忆的文字符号来表示指令中的操作码和操作数,称为助记符 助记符通常是34个英文缩写字母,提示了每条指令的意义 书写和阅读起来比较方便,也易于记忆,2019年4月30日星期二,35,例如,加法指令用ADD来代表操作码001,减法指令用SUB来代表操作码010,传送指令用MOV来代表操作码011,等等 典型的指令助记符,2019年4月30日星期二,36,注意:在不同的计算机中,指令助记符的规

18、定是不一样的 由于硬件只能识别二进制语言,因此指令助记符必须转换成对应的二进制操作码 这种转换可以借助汇编程序自动完成 汇编程序的作用相当于一个“翻译”,2019年4月30日星期二,37,4.3 指令分类,4.3.1 数据传送指令 4.3.2 算术运算指令 4.3.3 逻辑运算指令 4.3.4 程序控制指令 4.3.5 输入输出指令 4.3.6 字符串处理指令 4.3.7 系统控制指令,2019年4月30日星期二,38,不同机器的指令系统是各不相同的 从指令的操作码功能来考虑,一个较为完善的指令系统中常见的指令类型包括: 数据传送指令、算术运算指令、逻辑运算指令、程序控制指令、输入输出指令、字

19、符串处理指令、系统控制指令,2019年4月30日星期二,39,4.3.1 数据传送指令,数据传送指令是最基本、最常用、最重要的指令 用来使数据在主存与CPU寄存器之间进行传输 可以一次传送一个数据或一批数据 包括取数指令LOAD、存数指令STORE、存储器或寄存器间数据传送指令MOVE等,2019年4月30日星期二,40,4.3.2 算术运算指令,算术运算是计算机能够执行的基本数值计算 包括加法ADD、减法SUB、乘法MUL、除法DIV等指令 算术运算指令的操作数有多种类型 定点数、浮点数,定点数又可以分为带符号数和无符号数,浮点数又可以分为单精度和双精度 因此,每一种运算指令也按操作数的类型

20、分为带符号数定点运算、无符号数定点运算、单精度浮点运算、双精度浮点运算等,2019年4月30日星期二,41,4.3.3 逻辑运算指令,逻辑运算是对数据进行逻辑操作 包括逻辑与AND、逻辑或OR、逻辑非NOT等三种基本操作以及同或、异或等组合逻辑操作,2019年4月30日星期二,42,4.3.4 程序控制指令,1转移指令 2转子程序指令与子程序返回指令 3程序中断指令,2019年4月30日星期二,43,控制程序的流程,使程序具有调试与判断功能 主要包括:转移指令、转子程序指令与子程序返回指令、程序中断指令等,2019年4月30日星期二,44,1转移指令,包括条件转移和无条件转移指令 将程序计数器

21、PC(Program Counter)中的指令地址值更新为需要转移的目标指令的地址值 条件转移指令是指当满足规定的条件后才执行转移 无条件转移指令则不受任何约束地将程序转移,2019年4月30日星期二,45,2转子程序指令与子程序返回指令,转子程序指令是实现子程序调用的指令 子程序是能够完成某一特定功能的程序段 由于经常要使用,所以独立出来作为子程序,在需要时由主程序调用 子程序返回指令 为了能够从子程序中正确返回到主程序的断点(Breakpoint)并继续执行,在调用子程序时, 首先将主程序中下一条指令的地址存放在一个临时存储单元中 然后转入执行子程序 等子程序执行到最后一条指令(通常是返回

22、指令)时,将存放在临时存储单元中的地址取出作为下一条指令地址,这样就返回了主程序,2019年4月30日星期二,46,3程序中断指令,中断一般是在计算机系统出现异常情况或接到特殊请求时随机产生的 当产生中断时,程序转入中断处理程序 为了在应用程序中使用中断服务程序,指令系统提供了各种引起中断的指令,2019年4月30日星期二,47,4.3.5 输入输出指令,主机与外围设备进行信息交换的一类指令 用于启动外设、检测外设的工作状态、读写外设的数据等 信息由外围设备传向主机称为输入(Input),反之则称为输出(Output) 有些计算机对于主存和外设未采用统一编码技术 因此需要专门的输入输出操作指令

23、; 有些计算机把外设看作一个特殊的存储单元而与存储器单元统一编址 因此用一般的访问存储器的指令即可访问外设,2019年4月30日星期二,48,4.3.6 字符串处理指令,字符串处理指令 包括字符串传送、转换、比较、查找、匹配、替换等 这些指令的设置可以大大加快文字处理软件的运行速度,2019年4月30日星期二,49,4.3.7 系统控制指令,用于改变计算机系统的工作状态 包括停机指令、空操作指令、条件码指令和开/关中断指令等 当用户程序执行完毕时,可以安排一条停机指令 此时计算机不再继续执行程序 空操作指令除了递增程序计数器之外,不进行任何其他操作,2019年4月30日星期二,50,条件码用来

24、保存当前指令执行结果的特征,条件码指令对条件码进行置位或清除操作 开/关中断指令可以视作为特殊的条件码指令 开/关中断意味着对中断请求的允许或禁止 在某些计算机中可以用条件码中的一位标志位来进行设置 在其他计算机中可采用设定程序优先级的方法来实现开/关中断的功能,2019年4月30日星期二,51,除了以上提到的指令外,还有特权指令 特权指令是指具有特殊权限的指令 主要用于系统资源的分配和管理 一般不直接提供给用户使用,2019年4月30日星期二,52,4.4 寻址方式,4.4.1 指令寻址方式 4.4.2 操作数寻址方式 4.4.3 堆栈寻址方式,2019年4月30日星期二,53,存储器既可用

25、来存放指令,又可用来存放数据 在程序运行过程中,形成指令或操作数地址的方式,称为寻址方式 寻址方式可以分为两类 指令寻址方式较为简单 数据寻址方式较为复杂,2019年4月30日星期二,54,4.4.1 指令寻址方式,1顺序寻址方式 2跳跃寻址方式,2019年4月30日星期二,55,1顺序寻址方式,由于指令地址在主存中顺序排列,当执行一段程序时,通常是一条指令接着一条指令地顺序执行 从存储器取出第一条指令,然后执行这条指令 接着从存储器取出第二条指令,再执行第二条指令 ,2019年4月30日星期二,56,这种程序顺序执行的过程称为指令的顺序寻址方式 CAI演示 为此,必须使用程序计数器PC来计数

26、指令的顺序号 该顺序号就是指令在主存中的地址 指令逐条顺序执行,由PC+1PC控制,2019年4月30日星期二,57,2跳跃寻址方式,所谓指令的跳跃寻址,是指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出 CAI演示 程序跳跃后,按新的指令地址开始顺序执行 指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址,2019年4月30日星期二,58,采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而缩短程序长度,或将某些程序作为公共程序调用 指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的,2019年4月30日星期二,59,4.4.2 操作数寻

27、址方式,1立即寻址方式 2直接寻址方式 3间接寻址方式 4寄存器寻址方式 5基址寻址方式 6变址寻址方式 7相对寻址方式,2019年4月30日星期二,60,指令中形成操作数或操作数地址的方式称为操作数的寻址方式 一般把指令中直接给出的地址称为形式地址 从形式地址生成有效地址的各种方式称为各种不同的存储器寻址方式 每种寻址方式都有一种对形式地址进行变换处理的运算规则,2019年4月30日星期二,61,1立即寻址方式,指令的地址码字段指出的不是地址,而是操作数本身,这种寻址方式称为立即寻址方式 立即寻址由于在取出指令的同时也取出了操作数,所以指令的执行速度很快 但由于操作数是指令的一部分,不便于修

28、改,降低了程序的通用性和灵活性 因此,立即寻址方式只适合于操作数固定的场合 通常用于为主存单元和寄存器提供常数 例如: ADD B, 33H ;33H为立即数,2019年4月30日星期二,62,2直接寻址方式,直接寻址就是在指令的地址字段中直接指出操作数在主存中的地址 即形式地址等于有效地址 这种寻址方式简单、直观,是一种最基本的寻址方式,2019年4月30日星期二,63,例如, INC 3A00H是一条加1指令,采用直接寻址方式,指令有效地址E=3A00H,表示将地址为3A00H的存储单元中的操作数加1 CAI演示,2019年4月30日星期二,64,3间接寻址方式,间接寻址中指令地址码字段所

29、指向的存储单元中存储的不是操作数本身,而是操作数的地址 间接寻址方式需要多次访问主存储器,既增加了指令的执行时间,又要占用主存储器单元 但是,这种寻址方式也为编程人员带来了较大的灵活性,实现起来也很简便,2019年4月30日星期二,65,而且,间接寻址指令可以访问较大的存储空间,从而扩大指令的寻址能力 由于地址码位数的限制,如果采用直接寻址方式,能够访问的存储空间十分有限 而间接寻址的地址码所指向的存储单元则有足够的位数,因此可以访问全部存储空间,2019年4月30日星期二,66,例如, INC (3A00H)是一条加1指令,采用间接寻址方式,指令有效地址E=(3A00H)=4000H,将地址

30、为4000H的存储单元中的操作数加1 CAI演示,2019年4月30日星期二,67,4寄存器寻址方式,寄存器寻址方式就是指令中的地址码是寄存器的编号,而不是操作数地址或操作数本身 寄存器的寻址方式也可以分为直接寻址和间接寻址,两者的区别在于: 前者的指令地址码给出寄存器编号,寄存器的内容就是操作数本身; 后者的指令地址码给出寄存器编号,寄存器的内容是操作数的地址 根据该地址访问主存后才能得到真正的操作数 寄存器寻址方式的优点 用寄存器来暂存操作数或其地址,无需访问主存,速度快,2019年4月30日星期二,68,例如, INC R1是一条加1指令,采用寄存器直接寻址方式,指令有效地址E=R1,将

31、寄存器R1中的操作数加1 CAI演示,2019年4月30日星期二,69,例如, INC (R1)是一条加1指令,采用寄存器间接寻址方式,指令有效地址为E=(R1)=3A00H,将地址为3A00H的存储单元中的操作数加1 CAI演示,2019年4月30日星期二,70,5基址寻址方式,基址寻址是将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址 其优点是可以扩大寻址能力 相对于形式地址,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中进行寻址,2019年4月30日星期二,71,例如, INC BX+300H是一条加1指令,采用基址寻址方式,指令有效地址E=(BX)+300H=0

32、380H,将地址为0380H的存储单元中的操作数加1 CAI演示,2019年4月30日星期二,72,6变址寻址方式,变址寻址方式是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址 使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化 例如,有一个字符串存储在以AC1H为首址的连续主存单元中,只需要将首地址AC1H作为指令中的形式地址,而在变址寄存器中指出字符的序号,便可访问字符串中的任一字符,2019年4月30日星期二,73,例如, INC RX+300H是一条加1指令,采用变址寻址方式,指令有效地址E=(RX)+300H=03AAH,将地址为03AAH的存储单元

33、中的操作数加1 CAI演示,2019年4月30日星期二,74,变址寻址和基址寻址方法十分类似,但用途不同 变址寻址主要用于数组的访问 基址寻址则用于扩大寻址范围,从而在较大的存储空间中进行寻址,2019年4月30日星期二,75,7相对寻址方式,相对寻址,是相对于当前的指令地址而言的寻址方式 相对寻址是把程序计数器PC的内容加上指令中的形式地址而形成操作数的有效地址 程序计数器的内容就是当前指令的地址,所以相对寻址是相对于当前的指令地址而言的 此时的形式地址通常称为位移量 也就是操作数位置与当前指令位置之间的相对距离 其值可正可负,相对于当前指令地址而浮动 在相对寻址方式中,由于指令的地址和它所

34、涉及的操作数位置相对固定,因此,操作数与指令可以放在主存的任何地方,但仍能保证程序的正确执行,2019年4月30日星期二,76,例如, INC PC+200H是一条加1指令,采用相对寻址方式,指令有效地址E=(PC)+200H=2200H,将地址为2200H的存储单元中的操作数加1 CAI演示,2019年4月30日星期二,77,除了以上提到的几种操作数寻址方式之外,还有块寻址、段寻址方式等 块寻址是在指令中指出数据块的起始地址和数据块的长度,使用一条块寻址指令完成一个数据块的传送 段寻址是指将存储器空间划分为若干个单元,在寻址一个具体单元时,由一个基地址(CPU中的段寄存器)再加上某些寄存器提

35、供的偏移量来形成有效地址 段寻址方式的实质还是基址寻址方式,2019年4月30日星期二,78,【例4-1】 一种二地址RS型指令的结构如下所示: 其中I为间接寻址标志位,X为寻址模式字段,D为偏移量字段。通过I、X、D的组合,可构成下表所示的寻址方式。 请写出6种寻址方式的名称。 【解】直接寻址 相对寻址 变址寻址 寄存器间接寻址 间接寻址 基址寻址,2019年4月30日星期二,79,【例4-2】 某16位机器所使用的指令格式和寻址方式如下所示。指令格式中的S(源)、D(目标)都是通用寄存器,M是主存中的一个单元,MOV是传送指令,STA为写数指令,LDA为读数指令。 要求: 分析三种指令的指

36、令格式与寻址方式特点。 CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗?,2019年4月30日星期二,80,【解】 第一种指令是单字长二地址指令,RR型; 第二种指令是双字长二地址指令,RS型,其中S采用基址寻址或变址寻址,R由源寄存器决定; 第三种也是双字长二地址指令,RS型,其中R由目标寄存器决定,S由20位地址(直接寻址)决定。 处理机完成第一种指令所花时间最短,因为是RR型指令,不需要访问存储器。 第二种指令所花时间最长,因为是RS型指令,需要访问存储器,同时要进行寻址方式的变换运算(基址或变址),这也需要时间。 第二种指

37、令的执行时间不会等于第三种指令,因为第三种指令虽然也访问存储器,但节省了求有效地址运算的时间开销。,2019年4月30日星期二,81,【例4-3】 某微机的指令格式如下所示: OP:操作码; D:位移量; X:寻址特征位, X=00:直接寻址; X=01:用变址寄存器X1进行变址; X=10:用变址寄存器X2进行变址; X=11:相对寻址。 设(PC)=1234H,(X1)=0037H,(X2)=1122H,请确定下列指令的有效地址。 (1)4420H (2)2244H (3)1322H (4)3521H,2019年4月30日星期二,82,【解】 (1)4420H = 010001 00 00

38、100000 B X=00,D=20H,是直接寻址,有效地址E=D=20H (2)2244H = 001000 10 01000100 B X=10,D=44H,是X2变址寻址,有效地址E=(X2)+D =1122H+44H=1166H (3)1322H = 000100 11 00100010 B X=11,D=22H,是相对寻址,有效地址E=(PC)+D =1234H+22H=1256H (4)3521H = 001101 01 00100001 B X=01,D=21H,是X1变址寻址,有效地址E=(X1)+D =0037H+21H=0058H,2019年4月30日星期二,83,4.4.

39、3 堆栈寻址方式,1寄存器堆栈 2存储器堆栈,2019年4月30日星期二,84,计算机中的堆栈(Stack)是一组能存储和取出数据的暂时存储单元 所有信息的存入和取出均按照后进先出(LIFO)或先进后出(FILO)的原则进行 堆栈存取方式决定了其“一端存取”的特点 数据按顺序存入堆栈称为进栈或压栈(Push) 堆栈中一个单元的数据称为栈项 栈项按与进栈相反的顺序从堆栈中取出称为出栈或弹出(Pop) 最后进栈的数据或最先出栈的数据称为栈顶元素,2019年4月30日星期二,85,1寄存器堆栈,寄存器堆栈又称串联堆栈、硬堆栈 某些计算机在CPU中设置了一组专门用于堆栈的寄存器,每个寄存器可保存一个字

40、的数据 因为这些寄存器直接设置于CPU中,所以它们是极好的暂存单元 CPU通过进栈指令(PUSH)把数据存入堆栈,通过出栈指令(POP)把数据从堆栈中取出,2019年4月30日星期二,86,寄存器堆栈(CAI演示) 空栈表示栈顶无数据,即位于栈顶的寄存器中无可用的数据; 存入数据a,即把数据a存入栈顶,数据a可以来自主存、程序计数器PC等部件; 再存入数据b,数据b位于栈顶,先进入的数据a则移至下一个寄存器; 执行出栈操作,位于栈顶的数据b被取出,与此同时数据a移至栈顶,2019年4月30日星期二,87,最后进栈的数据位于栈顶,位于栈顶的数据出栈时最先被取出 在寄存器堆栈中,还必须有“栈空”和

41、“栈满”的指示,以防在栈空时企图执行出栈、在栈满时企图执行进栈的误操作 可以通过另外设置一个计数器来实现: 每次进栈,计数器加1,计数值等于堆栈中寄存器个数时表示栈满; 每次出栈,计数器减1,该计数值等于0时表示栈空 寄存器堆栈的特点是仅有一个出入口,后进先出,且堆栈的容量固定,不需要占用主存,2019年4月30日星期二,88,2存储器堆栈,当前计算机普遍采用的一种堆栈结构是存储器堆栈 从主存中划出一块区域来作堆栈,又称软堆栈 这种堆栈的大小可变,栈底固定,栈顶浮动 由于主存的容量越来越大,存储器堆栈能够满足程序员对堆栈容量的要求,而且在需要时可建立多个存储器堆栈 这种堆栈有三个主要优点: 堆

42、栈能够具有程序员要求的任意长度; 只要程序员喜欢,愿意建立多少堆栈,就能建立多少堆栈 可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址,2019年4月30日星期二,89,构成存储器堆栈的硬件有两部分 一是在主存中开辟用于堆栈的存储区 二是在CPU中设置一个专用的寄存器堆栈指针SP(Stack Pointer)来保存栈顶地址 除了硬件之外,还必须有实现进栈、出栈操作的指令 作为堆栈的存储区,其两端的存储单元有高、低地址之分,因此,存储器堆栈又可分为两种: 从高地址开始生成堆栈 从低地址开始生成堆栈,2019年4月30日星期二,90,1)从高地址开始生成堆栈(自底向上生成堆栈),从高地址开

43、始生成堆栈是一种较常用的方式,这种堆栈的栈底地址大于栈顶地址 CAI演示 在建栈时,SP指向堆栈中地址最大的单元(栈底) 每次进栈时,首先把要进栈的数据存入SP所指向的存储单元,然后把指针SP-1; 出栈时,先把指针SP+1,然后从SP所指向的存储单元取出数据,2019年4月30日星期二,91,进栈操作: 首先数据Msp,然后指针(SP)-1SP Msp表示SP所指定的存储单元 出栈操作: 首先(SP)+1SP,然后(Msp)读出 (Msp)表示SP所指定的存储单元的内容,2019年4月30日星期二,92,2)从低地址开始生成堆栈(自顶向下生成堆栈),这种堆栈的栈底地址小于栈顶地址 建栈时SP

44、指向堆栈中地址最小的单元(栈底) 进栈操作: 首先数据Msp,然后指针(SP)+1SP 出栈操作: 首先(SP)-1SP,然后(Msp)读出,2019年4月30日星期二,93,存储器堆栈的操作方式与寄存器堆栈不同,它移动的是栈顶 而在寄存器堆栈中移动的是数据 堆栈中对数据的操作具有后进先出的特点 凡是以后进先出方式进行的信息传送都可以用堆栈很方便地实现 例如, 在子程序的调用中,用堆栈存放主程序的返回地址,实现子程序的嵌套和递归调用 在程序中断处理中,用堆栈存放多级中断的相关信息,实现多级中断的嵌套,2019年4月30日星期二,94,4.5 指令系统实例,4.5.1 8086/8088指令系统

45、 4.5.2 Pentium指令系统 4.5.3 Pentium 4指令系统 4.5.4 Core 2指令系统,2019年4月30日星期二,95,4.5.1 8086/8088指令系统,Intel早期的处理器产品从8086/8088发展到80486,每一代CPU都有不同的指令系统 80x86系列CPU的指令集是在8086/8088 CPU的指令系统上发展起来的 8086/8088 CPU的指令系统是80x86的基本指令集 80286、80386、80486的指令系统保留了基本指令集,并在此基础上又进行了扩充 扩充指令中的一部分是8086/8088基本指令的增强和一些专用指令,它们与基本指令集一

46、起构成80x86系列微处理器的实模式指令集; 另一部分则是系统控制指令,它们对80286、80386、80486保护模式下的各种高级应用提供了控制能力,2019年4月30日星期二,96,8086/8088指令系统大体可以分为: 数据传送类指令 算术运算类指令 逻辑运算与移位类指令 串操作类指令 控制转移类指令 处理器控制类指令,2019年4月30日星期二,97,4.5.2 Pentium指令系统,奔腾(Pentium)微处理器是Intel公司1993年推出的一款32位微处理器,是继80486之后x86系列的下一代产品 Pentium外部有64位的数据总线以及36位的地址总线,同时也支持64位的

47、物理地址空间 Pentium引入了超标量技术,内部具有可以并行工作的两条整数处理流水线,即“U”流水线和“V”流水线,可以在每个时钟周期执行2条指令 Pentium的浮点单元在80486的基础上进行了彻底的改进,包括对专用的加法、乘法和除法单元采用了新的算法,2019年4月30日星期二,98,Pentium处理器的指令集是向上兼容的,因此它保留了8086/8088处理器的基本指令集 Pentium处理器与80x86指令集相比,新增了一些指令,主要有: 1. CPU标识指令(CPUID) 2. 寄存器与CR4之间的传送指令(MOV) 3. 八字节的比较并交换指令(CMPXCHG8B),2019年

48、4月30日星期二,99,4.5.3 Pentium 4指令系统,相对于早期处理器的指令集,Pentium 4处理器新增的指令有以下几个: 1. 读时间标记计数器指令(RDTSC) 2. 读/写模式专用寄存器指令(RDMSR/ WRMSR) 3. 恢复系统管理模式指令(RSM) 4. 读性能监控计数器指令(RDPMC) 5. SSE2和SSE3扩展指令集,2019年4月30日星期二,100,4.5.4 Core 2指令系统,Core 2处理器最直接的改观便是彻底放弃了单核心处理器设计,全面转入“双核”乃至“多核”技术 Core 2处理器可以拥有双核乃至四核,支持64bit指令集 支持MMX、SSE、SSE2、SSE3、SSSE3、EM64T等指令集和技术 Core 2处理器采用独有的“指令融合”技术 即把两个特定的宏指令(x86指令)“融合”为一个微操作(-op) 指令融合的好处:使得每个周期内需要执行的指令数减少,提高处理能力,2019年4月30日星期二,101,Core 2处理器相对于早期的Intel处理器指令集,新增了许多指令 1. 优化指令(ADDPS/HSUBPS/HADDPD/HSUBPD) 2. 数据处理指令(ADDSUBPS/ADDSUBPD/MOVSHDUP/MOVSLDUP/MOVDDUP) 3. 数据传输指令(FISTTP) 4. 特殊处理指令(LDDQU),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1