350 likes | 529 Views
第五章 指令系统. 本章教学内容. 5.1 指令系统的发展 5.2 指令格式 5.3 数据表示 5.4 寻址方式(编址方式) 5.5 指令类型 5.6 指令系统的兼容性 5.7 RISC 和 CISC 5.8 指令系统举例. 本章重难点. 寻址方法的应用、指令操作码的扩展编码技术以及 RISC 的概念和特征。. 5.1 指令系统的发展. 指令 使计算机完成基本运算所需信号的组合,包括数据信息、地址信息和控制信息。 指令是用户使用计算机和计算机本身运行的最小功能单位 。 指令系统 一台计算机使用和支持的全部指令构成该机的指令系统。
E N D
第五章 指令系统 本章教学内容 5.1 指令系统的发展 5.2 指令格式 5.3 数据表示 5.4 寻址方式(编址方式) 5.5 指令类型 5.6 指令系统的兼容性 5.7 RISC和CISC 5.8 指令系统举例
本章重难点 寻址方法的应用、指令操作码的扩展编码技术以及RISC的概念和特征。
5.1 指令系统的发展 • 指令 • 使计算机完成基本运算所需信号的组合,包括数据信息、地址信息和控制信息。 • 指令是用户使用计算机和计算机本身运行的最小功能单位。 • 指令系统 • 一台计算机使用和支持的全部指令构成该机的指令系统。 • 从计算机本身的组成来看,指令系统直接与计算机系统的性能和硬件结构的复杂程度密切相关,它是设计一台计算机的起点和基本依据。
1. 20世纪50年代和60年代早期 指令系统一般只有定点加减、逻辑运算、数据传送和转移等十几至几十条最基本的指令,而且寻址方式简单。 2. 60年代中、后期 除了具有以上最基本的指令以外,还设置了乘除法运算指令、浮点运算指令、十进制运算指令以及字符串处理指令等,指令数多达一、二百条,寻址方式也趋于多样化。 3.60年代出现了系列(series)计算机 原因:为了继承已有的软件,减少软件的开发费用. 系列计算机:是指基本指令系统相同,基本体系结构相同的一系列计算机。 如IBM370系列,VAX—11系列,IBMPC(XT/AT/286/386/486/Pentium)微机系列等。 优点:在旧机种上运行各种软件可以不加任何修改地在新机种上运行。(向下兼容)
随着VLSI技术的发展,硬件结构越来越复杂,所支持的指令系统也趋于多用途、强功能化。随着VLSI技术的发展,硬件结构越来越复杂,所支持的指令系统也趋于多用途、强功能化。 指令系统的改进是围绕着缩小指令与高级语言的语义差异以及有利于操作系统的优化而进行的。 CISC(复杂指令系统计算机)的问题: (1) 设计周期长,正确性难以保证且不易维护等; (2) 需要大量硬件支持的大多数较复杂的指令却利用率很低,造成硬件资源的极大浪费。 为了解决这个问题,在70年代末人们提出了便于VLSI实现的精简指令系统计算机,简称RISC(精简指令系统计算机)。 CISC:Complex instruction set computer RISC: reduced instruction set computer
要评价一台计算机的指令系统,通常从以下四个方面考虑:要评价一台计算机的指令系统,通常从以下四个方面考虑: • 指令系统的完备性—常用指令齐全、编程方便。 • 指令系统的高效性—程序占用的内存空间少、运行速度快。 • 指令系统的规整性—指令和数据使用规则统一简单、易学易记。 • 指令系统的兼容性—同一系列的抵档计算机的程序能在高档计算机上直接运行。
5.2 指令格式 一、指令格式 操作码或操作数的功能分别是什么? 零地址指令 一地址指令 二地址指令 三地址指令 多地址指令 根据操作数(地址码)个数的多少,指令可以分为以下五种:
二、指令操作码的扩展技术 1、操作码定长 一般在指令字的最高位分配若干个固定位表示操作码。 m2n 若操作码占用n位,则可以表示多少条不同的指令? 这种格式对于简化硬件设计,减少指令译码时间非常有利,在字长较长的大、中型机和超级小型机以及RISC上广泛采用。 操作码定长编码法的特点是什么? 2、操作码长度可变 ⑴含义? 各指令操作码的位置、位数不固定,根据需要变化。 这种格式能够有效地压缩程序中操作码的平均长度,在字长较短的微型机上广泛采用。 如Z80、Intel8086/Pentium等。 ⑵优点? ⑶缺点? 增加指令译码和分析的难度,使控制器的设计复杂化。
例. 指令字长16位,可含有3、2、1或0个地址, 每个地址占4位,可表示多少条指令?(见教材P130~131) ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 操作码 地址码 可表示61条指令 15~ 12 11~ 8 7 ~ 4 3 ~ 0 0000 XY Z 1110 X Y Z 三地址指令 15条 1111 0000 Y Z 11111110 Y Z 二地址指令 15条 11111111 0000 Z 1111 1111 1110 Z 一地址指令 15条 111111111111 0000 1111 11111111 1111 零地址指令 16条
例:若指令字长是16位,若零地址指令有15条、一地址指令31条、二地址指令14条、三地址指令15条。假设每个地址码需要用4位的二进制表示,该指令系统应如何编码?例:若指令字长是16位,若零地址指令有15条、一地址指令31条、二地址指令14条、三地址指令15条。假设每个地址码需要用4位的二进制表示,该指令系统应如何编码? 可变长度的指令系统的设计,到底使用何种扩展方法有一个重要的原则: 就是使用频度(即指令在程序中的出现概率)高的指令应分配短的操作码;使用频度低的指令相应地分配较长的操作码。(霍夫曼编码法) 作用:有效地缩短操作码在程序中的平均长度,节省存储器空间,缩短了经常使用的指令的译码时间,因而可以提高程序的运行速度。
P131:假如某计算机模型:7条指令(I1~I7),程序中出现的概率用Pi表示,则可考虑表5.1所示的方案,这就是扩展操作码,使用频率高的指令的操作码为2位,低的用4位。这不是压缩到最小代码的方案,因为在计算机中的操作码还是希望有一定的规整性,否则会引起硬件实现的复杂化。P131:假如某计算机模型:7条指令(I1~I7),程序中出现的概率用Pi表示,则可考虑表5.1所示的方案,这就是扩展操作码,使用频率高的指令的操作码为2位,低的用4位。这不是压缩到最小代码的方案,因为在计算机中的操作码还是希望有一定的规整性,否则会引起硬件实现的复杂化。 由此可见,操作码扩展技术是一种重要的指令优化技术,它可以缩短指令的平均长度,减少程序的总位数以及增加指令字所能表示的操作信息。当然,扩展操作码比固定操作码译码复杂,使控制器的设计难度增大,且需更多的硬件来支持。
三. 指令长度与字长的关系 字长:指计算机能直接处理的二进制数据的位数,它是计算机的一个重要技术指标。 作用:字长决定了计算机的运算精度,字长越长,计算机的运算精度越高。 一般机器的字长都是字节长度(即8位)的l,2,4或8倍数。 指令的长度:主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。各指令的长度不是固定的,但也不是任意的。 指令的长度通常为字节的整数倍。
指令的长度与机器的字长没有固定的关系,它既可以小于或等于机器的字长,也可以大于机器的字长。前者称为短格式指令,后者称为长格式指令,一条指令存放在地址连续的存储单元中。指令的长度与机器的字长没有固定的关系,它既可以小于或等于机器的字长,也可以大于机器的字长。前者称为短格式指令,后者称为长格式指令,一条指令存放在地址连续的存储单元中。 在同一台计算机中可能既有短格式指令又有长格式指令,但通常是把最常用的指令(如算术逻辑运算指令、数据传送指令)设计成短格式指令,以便节省存储空间和提高指令的执行速度。 例:out port,AL-----长格式 out DX,AL-----短格式
5.3 数据表示 1.操作数的类型 逻辑(布尔)数、定点数(整数)、浮点数(实数)、十进制数、字符串、数组等 一个数据的位数>1字节或1个字的宽度,这个数据就需要存储在相邻的多个字节的位置上。按照高位数据和低位数据在存储器中的存储次序,可分为大数端(big endian)和小数端(little endian)两种存储方式。 将最低字节存储在最小地址位置的存储方式称为小数端方式。 将最低字节存储在最大地址位置的存储方式称为大数端方式。 许多新型计算机系统结构都同时支持大数端和小数端数据存储方式。 2.操作数的存储方式
例:十进制数1000000,用十六进制数据表示为:F4240H, 在32位数据类型中存储为000F4240H。例:十进制数1000000,用十六进制数据表示为:F4240H, 在32位数据类型中存储为000F4240H。 (1)小数端存放 40420F00 0123 存储器地址编号 (2)大数端存放 000F4240 0123
目前计算机所用数据字长一般为32位。存储器的地址,一般按字节表示。计算机的指令系统可支持对字节、半字、字、双字的运算,有些计算机有位处理指令。目前计算机所用数据字长一般为32位。存储器的地址,一般按字节表示。计算机的指令系统可支持对字节、半字、字、双字的运算,有些计算机有位处理指令。 为便于硬件实现,一般要求多字节数据对准边界,如P132图5.2(a)所示。当所存数据不能满足此要求时,则填充一个至多个空白字节。 也有的计算机不要求对准边界,但可能增加访问存储器次数。
3.数据对齐方式 在数据对齐存储方式下,要求一个数据字占据完整的一个字的存储位置。而不能分成两部分。 例:一个32位的字 在按字对齐方式下,它的地址应当是4的倍数,即其地址的二进制码的最低两位为00,这样它占据的存储器位置是地址为:4n、4n+1、4n+2、4n+3(n为自然数)。在32位宽的存储中,这个字可以一次读取或写入。 在不按字对齐方式下,它的地址就如出现: 4n-1、4n、4n+1、4n+2的情况。这样的数据在32位宽的存储中,需要分两次读取或写入。
例: 字节地址 字节地址 3210 3210 0 0 4 4 8 8 12 12 16 16 数据字的存储地址为8 数据字的存储地址为9 分两次读/写
5.4 寻址方式 1、什么是寻址方式? 2、常用的操作数寻址方式有哪几种? 3、请分析下段程序中各条指令分别采用何种寻址方式? …… START: MOV CX,[2000H] MOV BX,2500H MOV CX,[BX] MOV AX,TABLE[SI] ADD AL,50[BX] JNC PP INC AH PP: PUSH CX ADD AH,BH JMP START ……
5.5 指令类型 指令系统决定了计算机的基本功能,因此指令系统的设计是计算机系统设计中的一个核心问题。 一台计算机的指令系统通常有几十条至几百条指令,按其所完成的功能可分为:算术逻辑运算指令、移位操作指令、浮点运算指令、十进制运算指令、字符串处理指令、向量运算指令、数据传送指令、转移指令、堆栈操作指令、输入输出指令、特权指令等。 相关内容同汇编。
5.6 指令系统的兼容性(自学) 1、什么是指令系统的兼容性? 2、指令系统的兼容性在什么情况下提出的? 3、指令系统兼容性的优点是什么?
5.7 精简指令系统计算机(RISC)和 复杂指令系统计算机(CISC) 一. 什么是复杂指令系统计算机? 1.更多的指令和复杂的指令有利于提高操作系统的效率,缩短指令系统与高级语言的语义差别。 2.为了向下兼容而只能扩充不能减去任意一条指令。 3.缺点:研制周期变长,调试和维护难度加大,系统性能下降。 例:DEC公司的VAX11/780有303条指令,18种寻址方式,我们称这些计算机为复杂指令系统计算机为CISC,intel公司的i80X86微处理器,IBM公司的大型、中型计算机等均为CISC。
二. RISC(reduced insruction set computer)的产生与发展 1975年IBM公司的John cocke提出精简指令系统的想法,1982年加州伯克莱大学的RISC I和RISC II样机、斯坦福大学的MIPS样机、IBM公司的IBM 801样机相继完成。 • 三. RISC的特点 • 选用简单指令。 • 指令长度固定,寻址方式少。 • 除取数/存数外,其他指令都在寄存器之间进行,不涉及存储器访问。 • CPU中通用寄存器数量多。 • 大部分指令在<=1个机器周期内完成。 • 主要为硬布线控制逻辑、少用微码控制。 • 高级语言编程,优化编译,提高程序运行。
5.8 指令系统举例 下面通过几种类型计算机的简介来增加对指令系统的认识。 一. SPARC的指令系统 1. SPARC的指令类型 (1)算术运算/逻辑运算/移位指令 31条 如:加法指令 ADD 普通加法 ADDCC 普通加法且置状态触发器N、Z、V、C ADDX 带进位加法 ADDXCC 带进位加法且置状态触发器N、Z、V、C
(2)存数/取数指令 22条 字节、半字、字、双字的存取 存储器分区:用户程序区、用户数据区、 系统程序区和系统数据区。 用户程序只能用普通指令在用户程序区取指令,在用户数据区存取数据;系统程序可用特权指令访问任意存储区域。 (3)控制转移指令(5条) (4)读/写专用寄存器指令(8条) (5)浮点运算指令 (6)协处理器指令
2.SPARC的指令格式 OP、OP2、OP3——操作码 Opf ———————浮点指令操作码 Rd ———————目的寄存器 Rsl、rs2—————通用寄存器 Simml3 —————扩展符号立即数 I ————————第二个操作数选择 指令字长32位、共有三种格式
3.各类指令的功能及寻址方式 下面我们把第1类至第4类指令作一简单介绍。 (1)算术逻辑运算指令 (rs1)OP(rs2) )→rd (当 i=0时) (rs1)OP Simm13→rd (当 i=1时) 本指令将rs1,rs2的内容(或Simml3)按操作码所规定的操作进行运算后将结果送rd。 (2) 取数/存数指令 LOAD: 存储器->rd STORE: rd->存储器 在RISC中,只有LOAD/STORE指令访问存储器
(3)控制转移类指令 此类指令改变PC值,SPARC有五种控制转移指令: ①条件转移(Branch) ②转移并连接(JMPL) ③调用(CALL) ④陷阱(trap) 。 ⑤从trap程序返回(RETT) (4)读/写专用寄存器指令 SPARC有四个专用寄存器(PSR,Y,WIM,TBR),其中PSR称为程序状态寄存器。 4.某些指令的实现技巧 在SPARC中,有一些指令没有设置,但很容易用一条其他指令来替代,这是因为SPARC约定R0的内容恒为零,而且立即数可以作为一个操作数处理,表5.3中列出的一些指令就属于这种情况。
从这里可以看出,指令系统是很灵活的,有些操作可以用硬件来完成,也可以用软件完成。例如:表5.3中的MOVE指令,可以设置这条指令,用硬件实现,也可以用另一条指令(即软件的方法)来实现这条指令。当然有时可能需要连续执行几条指令才能完成另一条指令的功能。所以计算机中软、硬件功能的分工不是一成不变的。从这里可以看出,指令系统是很灵活的,有些操作可以用硬件来完成,也可以用软件完成。例如:表5.3中的MOVE指令,可以设置这条指令,用硬件实现,也可以用另一条指令(即软件的方法)来实现这条指令。当然有时可能需要连续执行几条指令才能完成另一条指令的功能。所以计算机中软、硬件功能的分工不是一成不变的。
二. 指令编码示例 1、假设某计算机支持以下九条指令 (1)ADD R0,R1; (R0)+(R1)→R0、Cy ADD R1,10H; 10H+(R1)→R1、Cy (2)SUB R1,R0; (R1)-(R0)→R1 SUB R1,10H;(R1)- 10H →R1 (3)MOV R0,R1; (R1) →R0 MOV R0,10H; 10H →R0(4)IN R0,01H;从01端口中输入数据到R0 OUT 02H,R0;将R0寄存器的内容传送到 02H端口 (5) RR R0,1;将R0寄存器中的内容右移一位
源操作数寻址方式:0—立即寻址 1—寄存器寻址 目的操作数寻址方式:0—直接寻址式; 1—寄存器寻址 2、指令编码 假设某机器的字长是八位,支持1.中所列的指令:指令是二地址指令,源操作数可采用两种寻址方式—寄存器寻址(R0、R1)和立即寻址;目标操作数可采用寄存器和直接两种寻址方式。请为上述九条机器指令设计可行的代码方案。 解:采用定长编码方案,指令格式如下: 目标寄存器编号 源寄存器编号 =0000表示ADD =0001表示SUB =0010表示MOV =0011表示IN =0100表示OUT =0101表示RR
三、指令的两种表示形式 1、符号化表示(汇编指令) 如: ADD R0,R1 SUB R0,R1 等 特点:直观、易读、易记 助记符号可以任意选择,但与所选用的 汇编解释程序应保持一致 2、二进制数表示的指令(机器指令) 如: 00001011、0001110等 特点:难读、但能被机器直接识别
作业(P160) 5.15.75.9 5.11