1、2,第六章 指令系统,指令格式,6.1,本章小结,寻址方式,6.2,指令类型,6.3,6.4,指令系统,3,6.1 指令格式,指令是由操作码和地址码两部分组成的:,操作码:用来指明该指令所要完成的操作,如加法、减法、传送、移位、转移等等。 地址码:用来寻找运算所需要的操作数(源操作数和目的操作数)。,4,1、操作码,操作码长度固定:这种格式便于硬件设计,指令译码时间短,广泛应用于字长较长的、大中型计算机和超级小型计算机,如IBM370和VAX-11系列机,操作码长度均为8位。 操作码长度不固定: 这种格式可有效地压缩操作码的平均长度,在字长较短的微机中被广泛采用。如PDP-11,Intel80
2、86/80386等。,5,2、地址码,(1)三地址指令: (A1)OP(A2)A3,(2)二地址指令: (A1)OP(A2)A1 A1:目的操作数 A2:源操作数,(3)单地址指令: (ACC)OP(A)ACC OP(A)A 单目操作:如NEG、INC等指令,6,2、按照地址码分类,(4)零地址指令不涉及操作数:如NOP、HLT指令 操作数隐含:如PUSH、POP指令,7,3、操作数类型,按照指令处理的操作数存放位置分: 存储器类型:操作数存放在主存中,A为其地址信息 寄存器类型:操作数存放在CPU的通用寄存器中,A为寄存器号 立即数类型:操作数存放在指令(地址字段)中,8,3、操作数类型,按
3、照指令处理的操作数性质分: 地址(addresses):存储器地址,是无符号整数。 数字(numbers):整数、浮点数、十进制数。 字符(characters) 逻辑数据:真假两种状态,9,二、指令字长和操作码扩展,10,1、指令字长度,指令字长决定于,操作码的长度,指令字长 = 存储字长,2. 指令字长 可变,操作数地址的长度,操作数地址的个数,1. 指令字长 固定,按字节的倍数变化,11,2、指令操作码扩展,指令中操作码的长度决定了指令的条数指令的操作码通常有两种编码格式:固定操作码长度格式可变操作码长度格式设计操作码长度可变的指令时,通常采用扩展操作码技术,使操作码的长度随地址数的减少
4、而增加扩展码:操作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把操作码扩展到地址码字段。,12,举例,4位操作码,15条三地址指令,8位操作码,15条二地址指令,12位操作码,15条一地址指令,16位操作码,13,6.2 寻址方式,14,一、指令寻址,1、顺序寻址方式 控制器中使用程序计数器PC来指示指令在内存中的地址。在程序顺序执行时,指令的地址码由PC自加1得出。 2、跳跃寻址方式 当程序执行转移指令时,程序不再顺序执行,而是跳转到另一个地址去执行,此时,由该条转移指令的地址码字段可以得到新指令地址,然后将其置入PC中。,15,二、数据寻址,指令的地址码
5、字段,通常都不代表操作数的真实地址,把它称作形式地址记为A。操作数的真实地址称为有效地址记作EA,它是由寻址方式和形式地址共同来确定的。,16,二、数据寻址,9,8,基址寻址,7,变址寻址,6,寄存器间接寻址方式,5,寄存器寻址方式,4,间接寻址,3,直接寻址,2,立即寻址,1,10,堆栈寻址,相对寻址,基址变地寻址,17,1、立即寻址(Immediate Addressing),操作数在指令的地址码字段,即: DATAA 例如: MOV AL, 5 MOV AX, 3064H MOV AL, A,18,2直接寻址(Direct Addressing),操作数位于存储器中,操作数所在的存储器单
6、元的地址存放在指令的地址字段A中,即: 有效地址EA=A,19,3、间接寻址( Indirect Addressing ),操作数位于存储器中,操作数所在的存储器单元地址也存放在存储器中,该存储器地址则存放在指令的地址字段中,即: 有效地址EA=(A) 即:A为操作数地址的地址,20,4、寄存器寻址方式 ( Register Addressing ),操作数位于寄存器中,操作数所在的寄存器编号存放在指令的地址字段A中,即:MOV AX, BX MOV AL, BH,21,5、寄存器间接寻址方式,操作数位于存储器中,操作数所在的存储器地址存放在寄存器中,而该寄存器编号存放在指令的地址字段A中,即
7、: 有效地址EA(Ri ),22,6、变址寻址(Indexed Addressing),操作数位于存储器中,操作数所在的存储器地址EA由变址寄存器RI和指令的地址字段A指出: 有效地址EA(RI )A,23,7、基址寻址 ( Based Addressing ),操作数位于存储器中,操作数所在的存储器地址EA由基址寄存器Rb和指令的地址字段A指出: 有效地址EA(Rb )A,24,8、基址变址寻址,有效地址EA=(Ri)+(Rb)+ A,25,9、相对寻址 ( Relative Addressing ),操作数位于存储器中,操作数所在的存储器地址EA由程序计数器PC和指令的地址字段A指出: E
8、A(PC )A A通常称作相对偏移量DISP。 相对寻址主要用于转移指令,执行之后,程序将转移到(PC)偏移量为地址的指令去执行。 偏移量可正、可负,通常用补码表示,即可相对PC值向后或向前转移。,26,09考研题:,某机器字长16位,主存按字节编制,转移指令采用相对寻址,有两个字节组成,第一个字节为操作码字段,第二字节为相对位移字段。假定取指令时,每取一个字节PC自动加1.若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转移后的目标地址是 A.2006H B.2007H C.2008H D.2009H,27,10、堆栈寻址 ( Stack Addressi
9、ng ),操作数位于存储器中,操作数所在的存储器地址EA由堆栈指针寄存器SP隐含指出,通常用于堆栈指令。 堆栈是由若干个连续主存单元组成的先进后出(first in last out,即FILO)存储区,第一个放入堆栈的数据存放在栈底,最近放入的数据存放在栈顶。栈底是固定不变的,而栈顶是随着数据的入栈和出栈在时刻变化。栈顶的地址由堆栈指针SP指明。 一般计算机中,堆栈从高地址向低地址扩展,即栈底的地址总是大于或等于栈顶的地址,称为上推堆栈;也有少数计算机相反,称为下推堆栈。 堆栈寻址主要用来暂存中断和子程序调用时现场数据及返回地址。,28,堆栈的结构,堆栈的操作:压入(PUSH)和弹出(POP
10、) 压入指令 PUSH Ri:其操作是: (SP)1SP,(Ri) (SP) 弹出指令POP Ri:其操作是: (SP) Ri ,(SP)1SP 其中(SP)表示堆栈指针SP的内容;(SP)表示SP所指的栈顶的内容。,29,6.3 指令类型,1 数据传送指令 包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送。 2算术逻辑运算指令 实现算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或)。有些计算机还设置有位操作指令,如位测试(测试指定位的值)、位清零、位求反指令等。 3 移位操作指令 可分为算术移位、逻辑移位和循环移位。,30,31,6.3 指令类型,4程序控制类指令
11、无条件转移指令:无条件转至目的地址处执行。 条件转移指令:条件满足转至目的地址处执行,否则顺序执行 调用与返回指令: 调用指令CALL用于从当前的程序位置转至子程序的入口; 返回指令RETURN用于子程序执行完后重新返回到原程序的断点。 陷阱指令 陷阱其实是一种意外事故的中断。,32,6.3 指令类型,5堆栈操作指令 6输入输出指令:它完成从外设端口读入一个数据到CPU的寄存器内,或将数据从CPU的寄存器输出到某外设的端口中。 7处理器控制指令:包括等待指令、停机指令、空操作指令、开中断指令等 8.特权指令:特权指令只能给操作系统或其他系统软件,而不能提供给用户使用,以防止破坏系统或其他用户信
12、息,33,6.4 指令系统的设计技术,34,一、指令系统的要求 1、完备性:指指令系统直接提供的指令足够使用,而不必用软件来实现。 2、有效性:是指利用该指令系统所编写的程序能够高效地运行。程序占据存储空间小、执行速度快。 3、规整性:对称性:所有的指令都可使用各种寻址方式;匀齐性:指令可以支持各种数据类型;指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取。 4、兼容性:“向上兼容”,即低档机上运行的软件可以在高档机上运行。,35,二、指令系统的发展指令系统的设计与计算机硬件有密切的关系,随着计算机硬件技术的发展,指令系统的设计也在不断地发展,指令系统越来越丰富,寻
13、址方式也越来越多样化。随着VLSI(超大规模集成电路)技术的迅速发展,计算机系统的硬件成本不断下降,功能则越来越强。实现复杂的计算功能由硬件完成,如VAX11/780有303条指令,16种寻址方式,称之为复杂指令集计算机(CISC)。有些指令使用频率很低,却付出了高昂的硬件代价,对提高程序执行速度作用并不显著,于是,人们就产生一种想法:设计一种指令系统很简单的计算机,从而使计算机结构更简单、合理,提高CPU效率,称之为精简指令集计算机(RISC)。,36,三、CISC的特点指令系统复杂。具体表现为指令条数多、寻址方式多、指令格式多。指令串行执行,大多数指令需要多个时钟周期完成。采用微程序控制,
14、因为微程序控制器适合于实现CISC指令执行过程的控制。有较多的专用寄存器,大部分运算所需的数据均需访问存储器获取。编译程序难以用优化措施生成高效的目标代码程序。,37,四、RISC的特点指令系统设计时选择一些使用频率较高的简单指令,且选择一些很有用但不复杂的指令。指令长度固定,指令格式种类少,寻址方式种类少。只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。采用流水线技术。超级标量及超级流水线技术,增加了指令执行的并行度,使得一条指令的平均指令执行时间小于一个机器周期。CPU中通用寄存器数量相当多,可以减少访存次数。以硬布线控制逻辑为主,不用或少用微码控制。采用优化的编译程序,力
15、求有效地支持高级语言程序。,38,同CISC比较,RISC的优点 (1) 可以充分利用VLSI芯片面积 (2) 可以提高计算机运算速度 指令数、寻址方式和指令格式的种类都较少,且指令的编码很有规律,使指令译码加快。 在简化指令的情况下,硬布线连接比微程序控制的延迟小,可缩短CPU的周期。 CPU的通用寄存器多,减少了访存次数,加快了速度 大部分指令能在一个周期内完成,特别适合于流水线工作。 有的RISC机采用寄存器窗口重叠技术,程序嵌套时不必将寄存器内容保存到存储器中,加快了速度。,39,同CISC比较,RISC的优点 (3) 设计容易,可降低成本,提高可靠性。 (4) 能有效支持高级语言程序
16、 RISC靠编译程序的优化来支持高级语言程序。 指令少,寻址方式少,反而使编译程序容易选择更有效的指令和寻址方式。 通用寄存器多,可尽量安排快速的寄存器操作,使编译程序的代码优化效率较高。 有的RISC机采用寄存器窗口重叠技术,使过程间的参数传送快,且不必保存与恢复现场,因而能直接支持调用子程序和过程的高级语言程序。 在编译时尽量做好程序优化工作,而减少程序执行时间,40,CISC与RISC的应用 用户使用 RISC 微处理器结构简单,指令规整,性能容易把握,易学易用 CISC微处理器结构复杂,功能强大,实现特殊功能容易 应用范围由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机
17、器更适合于专用机;而CISC 机器则更适合于通用机,如Intel系列微型机,41,五、指令系统举例 例1 假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。 (1)设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种?解:根据操作数的地址码为6位则二地址指令中操作码的位数为 16-6-6=44位操作码可以有 24=16 种操作由于操作码固定,共有16种操作,其中 零地址指令有P种,一地址指令有Q种,所以二地址指令最多有 16-P-Q种,42,指令系统举例 (2)采用扩展操作码技术,若二地址指令有X种,零地址指令有Y种,则一地址指令最多有几种
18、? 解:采用扩展操作码技术,操作码位数可变,地址码字段可以扩展为操作码,则二地址、一地址和零地址的操作码长度分别为4位、10位和16位。可见,二地址指令操作码每减少一种,就可多构成26种一地址指令操作码一地址指令操作码每减少一种,就可多构成26种零地址指令操作码,43,指令系统举例因二地址指令有X种,则一地址指令最多有(24 - X) 26 种设一地址指令有M种,则零地址指令最多有(24-X) 26-M 26根据题中给出零地址指令有Y种,即Y= (24-X) 26- M 26则一地址指令最多有M=(24-X) 26 - Y 2-6,44,指令系统举例 例2 某模型机共有64种操作,操作码位数固
19、定,且具有以下特点: (1)采用一地址或二地址格式 (2)由寄存器寻址、直接寻址和相对寻址(位移量为-128+127)三种寻址方式 (3)有16个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中 (4)取数/存数指令在通用寄存器和寄存器之间传送数据 (5)存储器容量为1MB,按字节编址 要求设计算术逻辑指令和相对转移指令的格式,并简述理由。,45,解: (1)算术逻辑指令格式为寄存器-寄存器型,取字长16位 格式为:,6,2,4,4,操作码6位 26=64 可实现64种操作,寻址模式2位 22=4 可表示寄存器寻址、直接寻址、相对寻址,Ri和Rj各取4位 24=16 指出源
20、操作数和目的操作数的寄存器编号(共16个),46,解: (2)取数/存数指令格式为寄存器-存储器型,取双字长32位 格式为:,6,2,4,4,A2,A1和A2共20位, 为存储器地址220=1MB 表示源操作数地址(取数指令) 或目的操作数地址(存数指令) 可访问1MB存储器,操作码6位 不变,寻址模式2位 不变,Ri为4位 不变,47,解: (3)相对转移指令格式为一地址格式,取字长16位 格式为:,6,2,8,操作码6位 不变,寻址模式2位 不变,A为8位偏移量 对应转移位移量 -128+127,48,本章小结 机器指令由操作码字段和地址码字段组成。扩展操作码技术实现指令优化,但也增加了硬
21、件设计难度 指令的寻址方式包括指令寻址和数据寻址,指令寻址主要是顺序和跳跃两种方式;数据寻址有许多种寻址方式,其目的是获得本条指令执行所需要的操作数 根据指令的功能,可将指令分类为数据传送、算术逻辑运算类、移位操作类、转移类、堆栈操作类、输入输出类等指令 指令系统的设计应满足完备性、有效性、规整性、兼容性四个方面的要求。CISC指令系统庞大的指令集及其存在问题,RISC指令以它简洁、高效等特点而得到快速地发展 通过指令系统例子,结合实际理解和掌握指令系统的设计方法,49,一、指令系统的要求,1、完备性:指指令系统直接提供的指令足够使用,而不必用软件来实现。 2、有效性:是指利用该指令系统所编写
22、的程序能够高效地运行。程序占据存储空间小、执行速度快。 3、规整性: 对称性:所有的指令都可使用各种寻址方式; 匀齐性:指令可以支持各种数据类型; 指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取。 4、兼容性:“向上兼容”,即低档机上运行的软件可以在高档机上运行。,50,二、指令系统的发展,“复杂指令系统计算机”,简称CISC(Complex Instruction Set Computer) 指令格式不固定,寻址方式丰富,功能复杂 一些比较简单的指令,在程序中仅占指令系统中指令总数的20%,但出现的频率却占80%;占指令总数20%的最复杂的指令,却占用了控制存储
23、器容量的80%,且使用频率却不高。,51,精简指令系统计算机(Reduced Instruction Set Computer,简称RISC) RISC体系结构的芯片经历了三代: 第一代以32位数据通路为代表,支持Cache,软件支持较少,性能与CISC体系结构的产品相当,如RISC 、MIPS、IBM801等。 第二代产品提高了集成度,增加了对多处理机系统的支持,提高了时钟频率,建立了完善的存储管理体系,软件支持系统也逐渐完善。它们已具有单指令流水线,可同时执行多条指令。 第三代RISC产品为64位微处理器,采用了超级流水线技术和超标量技术,提高了指令级的并行处理能力,使RISC处理器的整体
24、性能更好。如MIPS的R4000处理器。,二、指令系统的发展,52,三、CISC的特点,早期CISC指令系统的主要特点是: 指令系统复杂。具体表现为指令条数多、寻址方式多、指令格式多。指令串行执行,大多数指令需要多个时钟周期完成。 采用微程序控制,因为微程序控制器适合于实现CISC指令执行过程的控制。 有较多的专用寄存器,大部分运算所需的数据均需访问存储器获取。 编译程序难以用优化措施生成高效的目标代码程序。,53,三、CISC的特点,CISC主要在以下方面来对增强指令的功能 面向目标程序增强指令功能 具体方法有: 提高运算类指令的功能 提高传送类指令的功能 增强程序控制指令功能 面向编译程序
25、目标代码生成优化的改进 提供面向操作系统优化的指令,54,大部分RISC机具有以下特点: (1) 指令系统设计时选择一些使用频率较高的简单指令,且选择一些很有用但不复杂的指令。 (2) 指令长度固定,指令格式种类少,寻址方式种类少。 (3) 只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。,四、RISC的特点,55,(4) 采用流水线技术。超级标量及超级流水线技术,增加了指令执行的并行度,使得一条指令的平均指令执行时间小于一个机器周期。 (5) CPU中通用寄存器数量相当多,可以减少访存次数。 (6) 以硬布线控制逻辑为主,不用或少用微码控制。 (7) 采用优化的编译程序,力求
26、有效地支持高级语言程序。,四、RISC的特点,56,(1) 可以充分利用VLSI芯片面积 (2) 可以提高计算机运算速度 指令数、寻址方式和指令格式的种类都较少,且指令的编码很有规律,使指令译码加快。 在简化指令的情况下,硬布线连接比微程序控制的延迟小,可缩短CPU的周期。 CPU的通用寄存器多,减少了访存次数,加快了速度 大部分指令能在一个周期内完成,特别适合于流水线工作。 有的RISC机采用寄存器窗口重叠技术,程序嵌套时不必将寄存器内容保存到存储器中,加快了速度。,同CISC比较,RISC的优点,57,(3) 设计容易,可降低成本,提高可靠性。 (4) 能有效支持高级语言程序 RISC靠编
27、译程序的优化来支持高级语言程序。 指令少,寻址方式少,反而使编译程序容易选择更有效的指令和寻址方式。 通用寄存器多,可尽量安排快速的寄存器操作,使编译程序的代码优化效率较高。 有的RISC机采用寄存器窗口重叠技术,使过程间的参数传送快,且不必保存与恢复现场,因而能直接支持调用子程序和过程的高级语言程序。 在编译时尽量做好程序优化工作,而减少程序执行时间,同CISC比较,RISC的优点,58,指令系统举例 例1 假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。 (1)设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种?解:根据操作数的地址
28、码为6位则二地址指令中操作码的位数为 16-6-6=44位操作码可以有 24=16 种操作由于操作码固定,共有16种操作,其中零地址指令有P种,一地址指令有Q种,所以二地址指令最多有 16-P-Q种,59,指令系统举例 (2)采用扩展操作码技术,若二地址指令有X种,零地址指令有Y种,则一地址指令最多有几种? 解:采用扩展操作码技术,操作码位数可变,地址码字段可以扩展为操作码,则二地址、一地址和零地址的操作码长度分别为4位、10位和16位。可见,二地址指令操作码每减少一种,就可多构成26种一地址指令操作码一地址指令操作码每减少一种,就可多构成26种零地址指令操作码,60,指令系统举例因二地址指令
29、有X种,则一地址指令最多有(24 - X) 26 种设一地址指令有M种,则零地址指令最多有(24-X) 26-M 26根据题中给出零地址指令有Y种,即Y= (24-X) 26- M 26则一地址指令最多有M=(24-X) 26 - Y 2-6,61,指令系统举例 例2 某模型机共有64种操作,操作码位数固定,且具有以下特点: (1)采用一地址或二地址格式 (2)由寄存器寻址、直接寻址和相对寻址(位移量为-128+127)三种寻址方式 (3)有16个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中 (4)取数/存数指令在通用寄存器和寄存器之间传送数据 (5)存储器容量为1MB
30、,按字节编址 要求设计算术逻辑指令和相对转移指令的格式,并简述理由。,62,解:(1)算术逻辑指令格式为寄存器-寄存器型,取字长16位,格式为:,6,2,4,4,操作码6位 26=64 可实现64种操作,寻址模式2位 22=4 可表示寄存器寻址、直接寻址、相对寻址,Ri和Rj各取4位 24=16 指出源操作数和目的操作数的寄存器编号(共16个),63,解: (2)取数/存数指令格式为寄存器-存储器型,取双字长32位,格式为:,6,2,4,4,A2,A1和A2共20位, 为存储器地址220=1MB 表示源操作数地址(取数指令) 或目的操作数地址(存数指令) 可访问1MB存储器,操作码6位 不变,
31、寻址模式2位 不变,Ri为4位 不变,64,解: (3)相对转移指令格式为一地址格式,取字长16位,格式为:,6,2,8,操作码6位 不变,寻址模式2位 不变,A为8位偏移量 对应转移位移量 -128+127,65,本章小结 机器指令由操作码字段和地址码字段组成。扩展操作码技术实现指令优化,但也增加了硬件设计难度 指令的寻址方式包括指令寻址和数据寻址,指令寻址主要是顺序和跳跃两种方式;数据寻址有许多种寻址方式,其目的是获得本条指令执行所需要的操作数 根据指令的功能,可将指令分类为数据传送、算术逻辑运算类、移位操作类、转移类、堆栈操作类、输入输出类等指令 指令系统的设计应满足完备性、有效性、规整性、兼容性四个方面的要求。CISC指令系统庞大的指令集及其存在问题,RISC指令以它简洁、高效等特点而得到快速地发展 通过指令系统例子,结合实际理解和掌握指令系统的设计方法,