《指令系统和控制器部.ppt》由会员分享,可在线阅读,更多相关《指令系统和控制器部.ppt(109页珍藏版)》请在三一办公上搜索。
1、第4章 指令系统和控制器部件,4.1 指令系统,4.2 控制器部件,指令:,是指示计算机执行基本操作的命令。指令也是用户使用计算机的最小功能单位。,从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。,微指令:是微程序级的命令,它属于硬件;宏指令:是由苦干条机器指令组成的软件指令,它属于软件;机器指令:则介于微指令与宏指令之间,通常简称为指令。每一条指令可完成一个独立的算术运算或逻辑运算操作。本章所讨论的指令是机器指令。,指令系统:,一台计算机支持(或称使用)的全部指令的集合构成该计算机的指令系统。,由于指令与计算机的性能以及硬件结构密切相关,所以不同系列、不同型号的计算机
2、其指令系统是不一样的。,4.1 指令系统,指令的基本格式指令格式的优化寻址方式指令系统举例 Th-union汇编语言程序设计,一、指令的格式,任何一条机器指令由一组有意义的二进制代码构成,称为一个指令字。,1、机器指令,00000000000100100000000100010010,用机器指令编写的程序是计算机惟一能够直接识别并执行的程序,称为机器语言程序。机器语言程序被称为目标程序(目标代码)。,机器直接执行,速度快。缺点:与机器硬件直接相关,通用性差;编程不直观、难以记忆、使用很不方便。,机器语言的特点,为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用符号代替操作数的存放地
3、址等,这样就形成了汇编指令。例:机器指令:汇编指令:MVRR R2,R1 用汇编指令编写的程序称为汇编源程序。,一条机器指令对应一条汇编指令。用汇编指令编写程序就直观方便得多。,用汇编语言编写程序及执行的过程,程序员,高级语言,汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。,(1)用语言实现:Main()int a,b,sum;a=123;b=456;sum=a+b,例如:编程实现 123 加 456 求和,(2)用8086汇编语言实现:a dw 123 b dw 456 sum
4、 dw?Code segment assume CS:Code,DS:Data Main:mov ax,data mov ds,ax mov ax,a,add ax,bmov sum,axmov ax,4c00hint 21hMain endpCode endsend main,(3)用机器语言实现:键入代码:-e cs:100 A1 0F 01 03 06 11 01 A3 13 01 B8 00 4C CD 21 为数据分配空间:-e ds:10F 7B 00 C8 01 00 00,三种语言编写程序占用字节数,任何一条机器指令由一组有意义的二进制代码构成,称为一个指令字。,其基本格式可划
5、分成二个部分:,2.指令的基本格式,表明操作数存放的位置,以便找到操作数完成指令的功能。,规定指令完成何种功能。,Th-union的机器指令 汇编指令,例如:,0000000000010010 ADD R1,R20000000100010010 SUB R1,R20000100100110000 INC R31000100000010000 MVRD R1,00550000000001010101,指令的操作码字段,指令的操 作数字段,0 0 5 5,1)操作码,定长操作码,变长操作码,在指令系统中,每一条指令都有唯一确定的操作码。分二种形式:,a.定长操作码形式,在指令字中,操作码字段的位数
6、和位置是固定的。,早期的计算机一般采用定长操作码的设计,控制简单,且对操作码的译码实现容易。,IBM 360/370 操作码是八位的:0000000011111111 该指令系统最多可有多少条指令?,Th-union操作码是八位的:0000000011111111 该指令系统最多可有256条指令。,例如:,256,RR型,OPC R1 R2,8 4 4,RS型,OPC Rn Rm B D,8 4 4 4 12,RX型,OPC R1 X2 B2 D2,8 4 4 4 12,SI型,OPC I2 B1 D2,8 4 4 12,SS型,OPC L B1 D1 B2 D2,8 8 4 12 4 12,
7、IBM 360/370 计算机的指令格式,Ri:通用寄存器Xi:变址寄存器Bi:基址寄存器Di:位移量I:立即数L:数据的长度,定长操作码的特点,优点:有利于简化硬件设计,提高指令译码的速度和指令执行的速度。缺点:限制了指令系统的扩充、不利于缩短指令的长度,存在有很大程度的信息冗余。,b.变长操作码形式,指令系统中,各指令的操作码字段位数不等长。,例:PDP-11小型机的指令系统,其指令长度为16位,操作码字段的长度有、10、13、16等不同的情况。,OP(16),为增加操作码长度,采用 操作码逐段扩展技术,变长操作码的特点,优点:可方便扩充指令系统有利于缩短指令操作码的平均长度。缺点:指令译
8、码的控制复杂,硬件电路复杂。,2)地址码的设计和安排,按照指令中地址码字段给出的地址的个数的不同,,无地址指令(零地址指令),一地址指令(单地址指令),双地址指令,多地址指令,有四种情况:,Th-union的机器指令 汇编指令0000000000010010 ADD R1,R20000000110001001 SUB R8,R90000100100110000 INC R31000100000010000 MOV R1,0055H0000000001010101,a.无地址指令(零地址指令),有二种情况:,指令不需要任何操作数。例:NOP、HALT,操作数为隐含的,或操作数地址是默认的。例:P
9、USHF、POPF,格式:,b.一地址指令(单地址指令),操作码,地 址 码,只有一个地址码,用于单操作数指令。例:INC、SHL、JMP、CALL,或者双操作数指令,但其中一个操作数的地址为默认值。例:MUL、DIV,格式:,c.双地址指令,地址码既是源操作数的地址,也是目的操作数的地址。双操作数在运算类、传送类指令中使用较多。ADD DR,SR,格式:,d.多地址指令,特点:操作完成后源操作数的内容不被破坏,用户编程方便。严重的缺点是指令字较长。,格式:,格式:,3)指令字长度,机器指令的二进制序列的位数。,定长指令变长操作码,变长指令定长操作码,例:某机指令系统,指令字为16位固定长,要
10、求有地址指令、地址指令、地址指令和地址指令,每个地址码位。应如何设计?,a.定长指令变长操作码,该种形式是将操作码的设计与地址码的设计作为一个整体考虑,以形成高效合理的指令编码。,设计方案为:,三地址指令采用位操作码 0000 1110 双地址指令采用位操作码 11110000 11111110 一地址指令采用12位操作码 111111110000 111111111110 无地址指令采用16位操作码 1111111111110000 1111111111111111,练习:设某机为定长指令字结构,指令长度12位,每个地址码占位,试提出一种方案,使该系统包含条三地址指令,条二地址指令,180
11、条单地址指令。另:能否构成三地址指令条,单地址指令 255条,零地址指令64条呢?,指令字的长度与机器字长没有固定的关系。,b.变长指令定长操作码,例:IBM360/370 指令的操作码是位的,指令字为16位、32位、48位。TH-union 指令的操作码是8位的,指令字为16位.,Th-union的指令格式,单字指令仅用一个指令字。双字指令要用两个指令字,此时第二个指令字的内容可能是立即数、一个绝对地址或一个变址位移量。,I/O 端口地址,条件转移指令的偏移量,直接数/内存地址/指令中变址偏移量,操 作 码,目的寄存器,源寄存器,8位 4位 4位,Th-union的机器指令 汇编指令,000
12、0000000010010 ADD R1,R20000000100010010 SUB R1,R20000100100110000 INC R31000100000010000 MVRD R1,00550000000001010101,二、指令格式的优化,定义:缩短指令字的长度方法:地址码优化 操作码优化(这是本节主要讨论的)优化目标:节省程序的存储空间 指令格式规整,易于译码 保持指令的执行速度,Huffman 编码法码长理论值:,其中,Pi表示第i种操作码在程序中出现的概率(使用频度),n为操作码的种数。,若采用位固定长度操作码,信息冗余量:,R=(3-1.95)/3 35%,其中:1.9
13、5 为哈夫曼编码法的理论值,模型机的指令操作码哈夫曼编码法,指令Pi Huffman编码 码长 I10.4501 I20.30102 I30.151103 I40.0511104 I50.03111105 I60.011111106 I70.011111116,L=0.45 X 1+0.30 X 2+0.15 X 3+0.05 X 4+0.03 X 5+0.01 X 6+0.01 X 6=1.97(位),所以,平均码长接近理论值!,信息冗余量:,例:某计算机有10条指令,它们的使用频率分别为:0.30,0.20,0.16,0.09,0.08,0.07,0.04,0.03,0.02,0.01。用
14、Huffman编码对它们的操作码进行编码,并计算平均代码长度。,Huffman编码通过采用huffman树进行,如下所示:,Huffman 树结构,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,Huffman编码的结果以及各编码的长度如下所示:0.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.01 11 01 101 001 1001 1000 0001 00001 000001 000000 2 2 3 3 4 4 4 5 6 6,平均代码长度为(0.30+0.20)2 1.00+(0.16+0.09)3 0.75+(0.
15、08+0.07+0.04)4 0.76+0.035 0.15+(0.02+0.01)6 0.18=1+0.75+0.76+0.15+0.18=2.84,哈夫曼编码的优点:平均长度最短信息冗余量最小 哈夫曼编码的缺点:操作码种类多,译码复杂。,模型机的指令操作码扩展编码法,指令Pi 1-2-3-52-4 I10.45 000 I20.301001 I30.1511010 I40.05111001100 I50.03111011101 I60.01111101110 I70.01111111111,例子中1-2-3-5编码法码长平均值,L=0.45 1+0.30 2+0.15 3+0.05 5+0
16、.03 5+0.01 5+0.01 5=2.00与哈夫曼编码法相比,信息冗余量:R=(2-1.95)/2.00=2.5%,例子中2-4编码法码长平均值,L=0.45 2+0.3 2+0.15 2+0.05 4+0.03 4+0.01 4+0.01 4=2.20与哈夫曼编码法相比,信息冗余量:R=(2.2-1.95)/2.2=11.4%,设某机型需设计 100条指令。试确定以下两种操作码设计方案的操作码长度。1)采用定长操作码格式。2)采用扩展操作码法。(设10的指令使用频度为90),思考:,三、寻址方式,寻址方式:指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。,不同的计算机系统,
17、使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能也各不相同。,1、指令寻址,顺序,跳跃,由转移指令指出,2、数据寻址,约定,指令字长=存储字长=机器字长,通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。在指令中给出的操作数的地址被称为形式地址,使用形式地址信息并按一定的规则计算出来的一个数值才是数据(或指令)的实际地址。,运算器中寄存器的编号或专用寄存器名称(编号)输入/输出指令中I/O 设备的输入输出端口地址 内存储器的一个存储单元(或一I/O设备)的地址,在指令的操作数地址字段,可能要指出:,在计算机的指令系统中,会有多种基本寻址方式和某些复合寻址方
18、式,简介如下:,1)直接寻址,在指令的地址码字段直接给出所需的操作数(或指令)在存储器中的地址。,存储器地址为操作数在存储器中的地址。或转移指令等用到的指令地址。,内存储器,操作数,操作码 存储器地址,例:MOV R1,0800,特点是什么?,简单直观,执行速度快。编程不灵活,访问空间有限。,2)寄存器寻址,例如:0000110010001001 SUB R8,R9 0111010000110000 INC R3,指令地址码字段给出某一通用寄存器的编号(地址),且所需的操作数就在这个寄存器中,这就是寄存器寻址方式。,执行阶段不访存,只访问寄存器,执行速度快。,寄存器个数有限,可缩短指令字长。,
19、3)间接寻址方式,若寄存器中存放的是操作数在内存中所在单元的地址,这就是寄存器间接寻址方式。,a.通过寄存器的间接寻址方式,寄存器间接寻址示意图,(1)寄存器寻址与寄存器间接寻址的不同点 操作数所在位置不同 指令执行的速度不同,思考题,(2)设计寄存器间接寻址的必要性 可有效缩短指令的长度 可方便程序处理的需要,b.通过存储器的间接寻址方式,指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为存储器间接寻址方式。,操作数,Addr1,特点:比直接寻址灵活,并且可用指令中的短地址访问大的内存空间;取操作数需二次访问主存,降低了指令执行的速度。,4)
20、基址寻址方式,在计算机中设置一个专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。,基址寄存器,加法器,操作数,例:disp=18H,BS=5700H 则操作数地址=5718H,主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。,5)变址寻址方式,操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的地址码(Disp)相加得到。,通用寄存器,加法器,存储器,操作数,例:Disp=18H,Reg=5,R5)=5700H 则操作数地址=5718H,便于对数组元素进行处理,此方式是计算机中常用的一种
21、寻址方式。,6)块(串)寻址方式,为了对数组运算提供更好的支持,采用该种寻址方式的指令中,要对整个数组实现某种运算,只需给出数组的首地址和末地址,这条指令执行一次,可对数组的全部元素完成某种运算操作。此方式是现代计算机中广泛采用的一种寻址方式。,7)隐含寻址方式,对于双操作数指令,如果事先约定参与运算的一个操作数固定存放在某个寄存器或某个存储单元中。指令中不直接给出某个操作数的地址,被称为隐含寻址方式。,寻址特征,A,ACC,暂存,另一个操作数隐含在 ACC 中,如 8086,MUL 指令,被乘数隐含在 AX(16位)或 AL(8位)中,MOVS 指令,源操作数的地址隐含在 SI 中,目的操作
22、数的地址隐含在 DI 中,指令字中少了一个地址字段,可缩短指令字长。,8)立即寻址方式,所需的一个操作数在指令的地址码部分直接给出。,特点:在取指令的同时取出了操作数,不必访问主存,提高了指令的执行速度;灵活性差。,操作数(或指令)的地址由程序计数器PC的内容(即当前执行指令的地址)和指令的地址码相加得到。,例如:disp=48H(PC)=5600H则实际地址=disp+(PC)=5648H,主要用于转移指令,对缩短指令长度很有用。位移量可正可负,通常用补码表示。,9)相对寻址方式,主存空间,2000,PC,JMP,+30,现行指令,JMP NEXT,ADD AX,BX,2001,2001,2
23、031,PC在指令中不指定,是隐含的,所以可以缩短指令长度。,例题:设相对转移指令占两个字节,第一个字节是操作码,其地址是 2000H,第二个字节是相对位移量,那么:,(PC)=2002H,(1)若第二个字节的内容为06H,则转移到的地址为_。2008H 2009H 1FFCH FFBH(2)若转移到的地址为1FFDH,则第二个字节的内容为_。05H FBH FDH FFH,堆栈是内存储器中一块按“后进先出”原则进行读写的存储区,并通过一个专用的寄存器(堆栈指针SP)给出堆栈的栈顶地址,完成数据的读写操作,故不必在指令中用操作数地址字段给堆栈地址。通常在读写操作的前后伴随有计算机自动(不是用户
24、通过指令)修改SP内容的动作,以确保按正确的“后进先出”原则读写堆栈区。,四、堆栈结构及寻址,如何在指令中表示寻址方式呢?,1.用操作码区分2.在指令中划分专用的字段来说明,问题:下图所指的寻址方式的名称是什么?,立即寻址,寄存器寻址,问题:下图所指的寻址方式的名称是什么?,存储器直接寻址,问题:下图所指的寻址方式的名称是什么?,存储器间接寻址,寄存器间接寻址,问题:下图所指的寻址方式是什么?,相对寻址,寻址方式 有效地址EA的计算公式 寻址范围 立即寻址 直接寻址 间接寻址 变址寻址 相对寻址 解:因为OP字段长5位,所以指令能定义25=32种指令。,例:某机字长为16位,存储器按字编址,访
25、内存指令格式如下:15 11 10 8 7 0,其中OP是操作码,M定义寻址方式,A为形式地址。设PC和Rx分别为程序计数器和变址寄存器,字长16位。(1)该指令能定义多少种指令?(2)表中各种寻址方式的寻址范围为多少?(3)写出表中各种寻址方式的有效地址EA的计算公式。,EA=(PC)1个字,即指令自身EA=A 256个字EA=(A)64K字EA=(Rx)+A 64K字EA=(PC)+A 256个字(PC附近),练习题:某机字长16位,内存容量为64K字,指令格式为单字长单地址,其有64条指令,问:1)若只采用直接寻址方式,指令能访问多少内存单元?2)为了扩充指令的寻址范围,可采用直接/间接
26、寻址方式,若只增加一位直接/间接标志,指令可寻址范围为多少?指令直接寻址的范围为多少?,一个完善的指令系统应满足如下四方面的要求:,五、指令系统举例,完备性是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用方便。,有效性是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。,规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。,1.对称性是指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;2.匀齐性是指一种操作性质的指令可以支持各种数据类
27、型;3.指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取。,兼容性 要能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。要能做到“向后兼容”,即先生产机器上运行的软件可以在后生产的机器上运行。,指令系统举例 Intel8086指令系统,指令分类 指令名称 指令助记符 指令功能,传送类指令,传送指令 MOV Ri/M,Ri RR,RM 堆栈指令 PUSH Ri Ri入栈 输入输出指令 IN AL/AH,端口号 端口累加器,程序控制类指令,无条件转移指令 JMP A APC 条件转移指令 JRNZ A Z=1 时APC 循环指令 LOOP,Pentium指令
28、格式,指令格式复杂;,寻址方式多样;,通用寄存器较少;,编译系统复杂;,典型CISC 指令集.,指令流水实现复杂;,MIPS指令格式,指令格式简单;,寻址方式较少;,通用寄存器较多;,编译系统简单高效;,典型RISC 指令集.,容易实现流水操作;,TH-union指令系统的寻址方式 1.立即寻址 例:MVRD R0,00AA 2.寄存器寻址 例:ADD R0,R1 3.寄存器间址 例:MVRR R1,R0,六、指令系统的发展,当前的计算机指令系统,从其构成的复杂和完备程度,或者说设计中追求的不同的目标,区分为:,复杂指令系统 CISC精简指令系统 RISC精确并行指令计算技术 EPIC,CIS
29、C 复杂指令集计算机(Complex Instruction Set Computer),指令系统复杂庞大,指令数目一般多达500条以上。寻址方式多。指令格式多,功能强。指令字长不固定。各种指令的使用频度相差很大。各种指令的执行时间相差很大。大多数采用微程序控制器。,指令系统内容丰富对用户来说程序设计方便程序短小功能强大编译简单,提高机器性能只能以提高处理器频率庞大的指令系统导致硬件结构更加复杂由于多采用微程序控制,使微程序更加庞大由于指令长短不一,不易使用先进的流水技术执行速度和性价比难以提高。,精简指令集计算机是70年代提出的一种新的设计思想。80年代出现了第片RISC微处理器芯片。目前,
30、大多处理机都采用了RISC体系结构,RISC精简指令集计算机(Reduced Instruction Set Computer),1.选取使用频率最高的一些简单指令,以及很有用但不复杂的指令。2.指令长度固定,指令格式种类少,寻址方式种类少。3.只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。4.CPU中通用寄存器数量相当多。5.采用组合逻辑控制器,不用或少用微程序控制。6.采用指令流水调度,以减少程序执行时间。,RISC指令系统要求使用大量的通用寄存器,提高了处理器的速度,同时也增加了任务切换时的开销。RISC简化了控制器的设计,但同时需要靠编译器的优化来提高性能,这对编译器
31、的设计提出了很高的要求。RISC不够标准,指令代码难以理解,与传统的CISC不兼容等都给RISC的设计、使用带来不少问题。,因此RISC开始引入CISC的一些优点以提高性能。与此同时,CISC也开始吸取RISC的优点,如:Pentium 就溶入了RISC技术。,随着时间的推移,技术进步,要实现高性能计算机已不是传统上的CISC或RISC所能胜任的。INTEL 64位CPU主要设计目标就是克服当今CPU系统构架的瓶颈,开发一个全新的系统构架,最大程度地开发指令级并行操作。因此INTEL 提出了创新的设计理念精确并行指令计算(EPIC)按照这种思想设计的64位CPU,INTEL称之为IA-64结构
32、。,EPIC精确并行指令计算技术,硬件功能软件化:复杂的并行指令打包交给软件处理,硬件只需按序高速并行处理指令和数据。128位指令束:IA-64将指令打包处理,指令束128位长,含有3个41位指令和1个5位模板。编译程序:对编译程序提出了更高要求,IA-64将指令流的优化交给了编译程序。分支判定技术:可以同时指令两条分支,分支中每条指令都有标志位。(64个分支预测寄存器)数据推测装载技术:IA-64结构允许编译器来管理控制指令的推测和使用数据的推测,从而大大降低了某些操作的执行时间。,INTEL 指令系统的发展,.技术(Multi Media eXtension),MMX指令集针对多媒体信息处
33、理中的特点,新增了57条多媒体指令。条数学运算指令、条数据比较指令、条压缩数据还原指令、条逻辑运算指令、条移位指令、条数据转换指令、条FP/MMX状态转换指令,和若干分支指令,MMX的一个关键技术是单指令多数据技术,SIMD,即能够利用一条多媒体指令同时处理多对数据,以提高处理器的性能。例如处理声音数据的左右声道、图象数据的RGB色彩混合等。,MMX采用了64位“压缩整型数据”,可将64位数据置于单个寄存器中,使处理器能够同时处理8个字节的数据,从而达到使用一条指令处理多个数据的目的。,SIMD,Single Instruction Multiple Data单指令多数据,新型数据结构,这种数
34、据结构具有连续的内存地址,技术(Streaming SIMD Extensions),SSE1指令集共有70条指令。Pentium 3,8 条优化内存指令、50条提高3D图形运算效率的SIMD浮点运算指令、12条MMX整数运算增强指令。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效的提高浮点运算速度。,SSE2指令集共有144条指令。Pentium 4包括:浮点SIMD指令、整型SIMD指令、SIMD浮点和整型数据之间转换等指令。SSE2重要的改进包括引入新的数据格式,如128位的SIMD整数运算和64位双精度浮点运算等。,SIMD,Single Instruc
35、tion Multiple Data 单指令多数据,SISD,Single Instruction Single Data 单指令单数据,INTEL X86指令数量一览表,AMD 3DNow!指令数量,AMD 3DNow!指令与MMX指令的用途不完全相同。MMX指令:主要侧重于整数运算,主要针对图形描绘、数据压缩与解压缩、音频处理等。3DNow!指令:侧重于浮点运算,主要针对三维建摸、坐标变换、效果渲染等三维图形应用场合。,在Pentium Pro CPU推出后,INTEL将X86指令系统和寄存器组称为INTEL结构(IA)也称IA指令系统。许多X86指令本质上非常复杂,需要额外的译码和执行电路。例如一条X86指令可能需要一次或多次的内存读写,指令的长度可能是113个字节。从Pentium Pro CPU开始,INTEL将长度不定的X86指令解码成为长度固定的RISC指令,或称为微操作指令。,