计算机组织与结构 第3章 汇编级机器组织课件_第1页
计算机组织与结构 第3章 汇编级机器组织课件_第2页
计算机组织与结构 第3章 汇编级机器组织课件_第3页
计算机组织与结构 第3章 汇编级机器组织课件_第4页
计算机组织与结构 第3章 汇编级机器组织课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章汇编级机器组织1第3章汇编级机器组织1※指令系统定义:机器指令—要求硬件直接实现某种运算或操作的命令;指令系统—所有机器指令的集合。※指令系统与软硬件关系:§3.1指令系统组成指令系统按约定形成按约定实现计算机硬件计算机软件应用需求相一致执行软件应用结果

指令系统是软硬件间的一个“约定”!是软硬件交界面之一指令格式:操作功能-操作命令间的约定按一定格式编写的操作命令按一定格式实现的操作功能2※指令系统定义:※指令系统与软硬件关系:§3.1一、指令功能1、指令的操作数(1)数据结构与数据表示*数据结构:计算机软件能够直接识别和引用的数据类型;

*数据表示:计算机硬件能够直接识别和引用的数据类型;*相互关系:数据结构直接使用方法(x%)软件映像方法(1-x%)数据表示使用频率较高(2)指令的操作数*操作数类型:所有种类的数据表示,通常有定点/浮点数、逻辑数、字符、地址等;*操作数长度:部分种类有几种长度,如定点/浮点数及逻辑数等使用频率均较高,可节约存储空间3一、指令功能1、指令的操作数(1)数据结构与数据表示2、指令的操作*指令操作类型—软件中使用频率较高的基本操作;

如数据传送、算逻运算、转移控制等种类※课件约定—

第A个寄存器的地址用RA表示、内容用(RA)表示;

第A个主存单元的地址用[A]表示、内容用[A]表示;

操作的源操作数用内容表示、目标操作数用地址表示(1)数据传送*操作功能:REG、主存、I/O设备间的数据传送;如—R0←(R1)、R0←[0100H],各部件均可为目标操作数*操作数:8b/16b/…的信息(数值/字符/地址等);*操作数个数:2个无需区分数据类型(无数据运算)42、指令的操作※课件约定—(1)数据传送*操作数(2)算术逻辑运算*操作功能:算术运算—加、减、乘、除、+1、-1、求补等;如:R0←(R1)+[0100H]、R2←(R2)+1逻辑运算—与、或、非等;如:R0←(R0)&(R1)、R0←~(R0)*操作数:算术运算—为8b/16b/…的有符号/无符号定点数,

逻辑运算—为8b/16b/…逻辑数,

源操作数、目标操作数的数据类型应相同;*操作数个数:1~3个(如+1、C←A+B、A←A+B);*操作结果状态:Z(是否为零)、S(是否为负数)、V(是否溢出)、C(是否有进位/借位)等状态产生与保存—由ALU产生、用状态寄存器保存关系运算=算术运算+结果状态+逻辑运算5(2)算术逻辑运算*操作数:算术运算—为8b/16b/(3)转移操作*操作功能:改变程序的逻辑顺序(即下条指令地址→PC),有条件转移、无条件转移、调用、返回等种类;…C←C-1JZ2000…2000

2010…逻辑地址程序条件转移操作…JMP+9…A←A+1…20002010…2019逻辑地址程序无条件转移操作…CALL2200A←A+1…2000

20102011…逻辑地址主程序调用操作…CALL**…RETURN…2200

…2280…逻辑地址子程序返回操作注:①条件转移操作的条件由测试条件及转移条件组成;

②调用操作参数有目标指令地址及返回指令地址;③返回操作参数仅为返回指令地址堆栈(存储部件)(隐含方式)写入④嵌套调用要求堆栈是按“后进先出”顺序(不按地址)访问的部件(隐含方式)读出“后进先出”顺序6(3)转移操作…2000逻辑地址程序条件转移操作*操作数:显式—指令的绝对地址或相对地址(偏移量),隐式—状态寄存器的状态、堆栈的顶部内容;*显式操作数个数:1个或0个(4)移位操作*操作功能:逻辑左/右移、算术左/右移、循环左/右移等;如:R0←(R0)<<逻辑2、R1←(R1)>>算术(R2)*操作数:操作数据—8b/16b/…的定点数或逻辑数,

移动位数—8b/16b/…的无符号定点数;*操作数个数:2个(5)其他类型操作

浮点运算、十进制运算、字符串处理等7*操作数:显式—指令的绝对地址或相对地址(偏移量),(二、指令格式*指令格式组成:由操作码、地址码两个字段组成操作码字段地址码字段*指令格式的相关参数:OPA1A2目标地址←(A1)OP(A2)②操作数类型(长度)?①操作类型?⑤A1/A2?④地址个数?③操作数对应的部件及地址?⑥下条指令地址?*指令系统组成:由若干种机器指令格式组成第1种:第2种:…第n种:A1A2…OP1AOP2A1A2OPn注:①各种指令操作码须互不相同!②操作数类型为硬件数据表示!8二、指令格式*指令格式组成:由操作码、地址码两个字段组1、操作码字段*功能:用编码指明(约定)操作的性质,包括操作类型、操作数类型及长度3个方面;例1—指令系统约定:操作类型≤8种,加法操作需支持8/16位定点数、单/双精度浮点数,移位操作需支持8/16位定点数,逻辑非操作只需支持8位逻辑数。操作码字段如何编码?加法逻辑非

逻辑数

8位定点数浮点数8位16位单精度双精度移位

定点数8位16位操作数长度由操作类型默认表示操作数类型由操作类型默认表示0000000000000010010100011000√方案1:支持种类[+操作类型]×方案2:数据表示编码000000000000001001010或1100101010101010091、操作码字段例1—指令系统约定:操作类型≤8种,加*操作类型编码方法:性能参数—规整性、程序中指令的平均操作码长;└→影响译码复杂度└→影响程序空间大小定长编码—按序编码、长度L=log2操作类型数量;变长编码—按使用频率分布编码(如霍夫曼扩展编码)例2—7种操作使用频率分别为0.4、0.26、0.15、0.06、0.05、0.04、0.04,请进行各操作类型的操作码编码。0.080.040.040.050.060.150.260.401I7I6I5I4I3I2I100.11100.19100.34100.60101.0010操作Ii频率Pi定长编码霍夫曼编码I1I2I3I4I5I6I70.400.260.150.060.050.040.0400000101001110010111001011011100111011111011111∑PiIi3.002.32码段1段4段霍夫曼扩展编码00011011001101111011112.382段10*操作类型编码方法:定长编码—按序编码、长2、地址码字段*功能:用编码指明各操作数的地址、源/目标属性,

指明下条指令地址;*地址码个数:①指令系统中—规定地址码个数的最大值,②不同指令中—用操作码约定地址码个数;重叠源/目标、隐含表示,可减少个数*地址码源/目标属性:⑴隐含约定第一个(或最后一个)地址码,⑵显式指明;*操作数地址的表示:下小节讨论;*下条指令地址的表示:当前指令为顺序型—隐含表示,PC=(PC)+当前指令长度,当前指令为转移型—显式表示,=IR中的(地址码);8112、地址码字段*地址码个数:重叠源/目标、隐含表示,可例3—续例1,指令系统规定指令≤2个地址码,若加法、移位、逻辑非操作的地址码个数分别为2个、2个、1个,请说明如何约定地址码个数及源/目标属性?加法逻辑非

逻辑数

8位定点数浮点数8位16位单精度双精度移位

定点数8位16位000000000100010000110010

0

0010

101000A1A2A1A2A1A2A1A2AA1A2A1A2约定:操作码为010000时为2个地址码,

否则为1个地址码A1A2A1A2A1A2A1A2AA1A2A1A2DDDDDD*或隐含:第一个为目标地址码显式:D=0时目标码为A1D=1时目标码为A2组合:大部分操作隐含、部分操作显式12例3—续例1,指令系统规定指令≤2个地址码,若加法、3、指令字*组成:由操作码及地址码组成,操作码在指令字前部;零地址指令:单地址指令:双地址指令:三地址指令:OPOPAOPA1A2OPA1A2A3*指令字类型:

按地址个数分—指令字长=n×存储字长,机器字长=m×存储字长;按指令字长分—指与机器字长的关系单字长指令、半字长指令、双字长指令等*指令字结构:(指令系统特性)定长指令字结构—不同指令的指令字长完全相同,变长指令字结构—不同指令的指令字长不尽相同n为常数为常数11133、指令字零地址指令:OPOPAOPA1A2OPA1A2A3解:⑴操作码长度=16-6-6=4,双地址指令种数=24-P-Q;例4—设指令字长为16位、各地址码均为6位,指令字有零地址、单地址、双地址3种格式;⑴采用定长操作码时,若零地址、单地址指令分别为P种和Q种,双地址指令最多有多少种?⑵采用扩展操作码时,若零地址、双地址指令分别为X种和Y种,单地址指令最多种类数M为多少?⑵零、单、双地址指令操作码长度=16、10、4,X=[(24-Y)×26-M]×26,则M=(24-Y)×26-X×2-6A1A2A?种Q种P种空闲空闲A1A2AY种共M种共X种可用(24-Y)×26-M种可用(24-Y)×26种14解:⑴操作码长度=16-6-6=4,双地址指令种数§3.2操作数存放与寻址方式一、操作数的存放方式1、数据在REG中的存放方式基础—通常REG长度=CPU字长,REG按其数量进行编址。*数据长度=REG长度时的存放方式:使用REG全部位;*数据长度<REG长度时的存放方式:有两种方案;R0………地址码=000R3地址码=011R7R4………地址码=100地址码=111方案1—使用REG低端R0………地址码=000R3地址码=110地址码=111R7地址码=001R4………方案2—使用部分REG*地址码格式:√方案2—OP1F2

xxx数据长度=REG长度时OP0F2

xxx数据长度<REG长度时15§3.2操作数存放与寻址方式一、操作数的存放方式1、数据在2、数据在存储器中的存放方式基础—存储字长=最短的数据长度;*存放方式:存放在连续存储单元中,用最小单元地址表示数据地址;*地址码格式:OPnF3

Nn为数据长度类型的编号*存放方式属性:有次序和边界两个方面大端次序NN+1N+2N+3B3B2B1B0数据组成:地址码:B3B2B1B0高位低位F3N小端次序NN+1N+2N+3B0B1B2B3次序—有大端次序和小端次序两种方式,可任选一种NN+1N+2N+3BBBB数据长度162、数据在存储器中的存放方式*存放方式:存放在连续存储边界不对齐方式多体存储器地址3~07~411~815~12C(N=3)A(N=0)B(N=1)C(续)D(N=7)D(续)E(N=9)数F(N=10)边界对齐方式A(N=0)B(N=2)C(N=4)D(N=8)E(N=10)F(N=12)多体存储器整数边界对齐方式:长度为2n个存储字的数据在存储器中存储时,最小单元地址(N)的最低n位必须为零。如长度为20、21、22个存储字的N为XXXX、XXX0、XX00边界—有边界不对齐和边界对齐两种方式,常选对齐方式3、数据(常数)在指令中的存放方式*存放方式:边界—采用边界不对齐方式;(尽量减少指令字长)次序—与存储器存放次序一致。(方便CPU处理)*地址码格式:OP

1D高D低OP

0F1D低F117边界不对齐方式多体存储器地址C(N=3)A(N=0)B(N=4、堆栈存取方式*堆栈:堆栈是一种按“后进先出”顺序

存取的存储区;按“先进先出”顺序存取的存储区称为队列只有一种数据长度(常为CPU字长)需求简单、简化实现*堆栈存取方式:类似于圆桶中放入/取出木板操作步骤—入栈:先移动栈顶,再在栈顶写入数据,出栈:先从栈顶读出数据,再移动栈顶;操作类型—入栈(PUSH/压栈)、出栈(POP/弹出);①空堆栈A②A入栈③B入栈④出栈(B)ABA存取特征—后进先出顺序、不按地址访问,破坏性读出(只对栈顶操作);6184、堆栈存取方式*堆栈:堆栈是一种按“后进先出”顺序*寄存器堆栈:

--用移位REG实现,面向硬件组成特征—大小及栈顶固定,栈顶栈底①空堆栈②入栈③入栈④出栈ABAA移动的是数据*存储器堆栈:

--借用主存空间实现,面向软件组成特征—大小及栈顶可变,操作步骤—对于入栈时SP递减移动方式入栈:①SP←(SP)-X,②[SP]←源数据出栈:①目标地址←[SP],②SP←(SP)+X对于入栈时SP递增移动方式,入栈+X、出栈-XCPU用计数器表示“栈底”;CPU用堆栈指针REG指向栈顶,用相关REG表示栈底或大小;堆栈存储空间8000H……803FH8040HSP19*寄存器堆栈:--用移位REG实现,面向硬件栈顶例1—设主存按字节编址,指令系统约定数据在MEM中采用小端次序存放,MEM堆栈数据长度为2B、入栈时SP递减移动。若栈底指向03FFH、(R0)=0010H、(R1)=0020H,请画出空堆栈、R0入栈、R1入栈、R2←出栈时,SP及栈顶内容的变化情况。堆栈指针SP0040H堆栈存储空间……003CH003DH003EH003FH0040H栈底(b)R0入栈堆栈指针SP003EH

10H00H堆栈指针SP003CH堆栈指针SP003EH栈底堆栈存储空间

……003CH003DH003EH003FH0040H(a)空堆栈堆栈存储空间……003CH003DH003EH003FH0040H栈底(c)R1入栈10H00H20H00H堆栈存储空间……003CH003DH003EH003FH0040H栈底(d)R2←出栈10H00H20H00H20例1—设主存按字节编址,指令系统约定数据在MEM中采二、寻址方式*寻址方式:形成当前指令操作数或操作数地址

及下条指令地址的方式;*存放数据的部件:寄存器、主存、I/O设备,堆栈、IR(指令中);

*存放指令的部件:主存;常采用独立编址(均从零开始)方式*数据/指令的MEM地址:

有效地址(EA)—程序中表示的MEM地址,如程序逻辑地址物理地址(PA)—MEM的硬件地址,如主存地址

两者关系—PA=EA的存储管理后地址按地址访问不按地址访问8作业一:P164—4、5、621二、寻址方式*寻址方式:形成当前指令操作数或操作数地址1、指令寻址方式*指令种类:顺序型指令、转移型指令;*指令寻址方式:

顺序寻址—用于顺序型指令的下条指令寻址

隐含寻址,下条指令EA=(PC)+“1”;

跳跃寻址—用于转移型指令的下条指令寻址①直接寻址,下条指令EA=(地址码);②相对寻址,下条指令EA=(PC)+偏移量;显式*指令寻址方式表示:地址码的表示在数据寻址方式中讨论操作码操作数地址码操作码下条指令地址码转移型指令格式顺序型指令格式操作数地址码(无)下条指令地址码(隐含)③隐含寻址,下条指令EA=(栈顶)或(特定部件)6221、指令寻址方式*指令寻址方式:跳跃寻址—CALL2010D←B/100…B←0C←100B←B+A[C]C←C-1JZ2016JMP-4RETURN20002001…2010201120122013201420152016EA目标程序下条指令地址寻址例2—C语言程序:Sort();D=B/100;……voidSort(){intB=0,C=100;do{B=B+A[i];C--;if(C==0)gotoAA;}while(1);AA:return;}6EA=2016(直接)或(PC)+“1”(隐含)注②:JZ指令的下条指令地址形成与转移条件有关;取指阶段(含分析指令)执行阶段PC+“1”若转移指令产生转移(相对)EA=(PC)-“4”注①:CALL指令与RETURN指令常使用堆栈传递指令地址;(直接)EA=2010、(隐含)栈顶←2001(隐含)EA=(PC)+“1”…(隐含)EA=(PC)+“1”(隐含)EA=(PC)+“1”(隐含)EA=(PC)+“1”(隐含)EA=(PC)+“1”(隐含)EA=(栈顶)注③:JZ、JMP指令形成下条指令EA时,已进行过(PC)+“1”23CALL20102000EA目标程序下条指令2、数据寻址方式*目标:缩短指令中地址码长度,方便编译程序生成代码*地址码:由部件及地址形成方式类型、地址形成参数组成(1)立即寻址方式

常数操作数为形式地址本身,即操作数存放在指令中。为便于理解,以单操作数指令为例!(2)寄存器寻址方式

REG操作数地址为形式地址本身,即数据REG编号。…操作数…数据寄存器数据REG号操作码F2A操作数=(A)寻址方式位I形式地址A地址码组成:操作数或地址:=函数(寻址方式位I,形式地址A)21操作码F1A操作数=A操作数242、数据寻址方式*地址码:由部件及地址形成方式类型、地(3)直接寻址方式

主存操作数EA为形式地址本身,即程序逻辑地址。(4)间接寻址方式

主存操作数EA为形式地址对应的MEM内容。程序段主存

操作数逻辑地址操作码F3A操作数EA=A主存逻辑地址操作数…A’操作数EA=[A]=A’操作码F4A注:主存操作数寻址方式多数可用作指令寻址方式注:因需要2次访存,很少使用(适合于指向指针的指针操作)25(3)直接寻址方式(4)间接寻址方式程序段主存逻辑地址操(5)寄存器间接寻址方式

主存操作数EA为形式地址对应的地址REG内容。…A’…地址寄存器地址REG号操作码F5A操作数EA=(A)程序段主存

操作数(6)基址寻址方式

主存操作数EA为基址REG内容加上形式地址的结果。注:①地址REG包含基址REG和变址REG两种类型;

②基址寻址对存储管理特别有效(基址REG不变)F6B

A操作数EA=(B)+A操作码程序段主存操作数…地址A’…基址寄存器基址REG基址REG号注:为缩短地址码长度,数据REG和地址REG常混用(通用REG)2426(5)寄存器间接寻址方式…地址寄存器地址REG号操作码F5(8)相对寻址方式

主存中指令EA为PC内容加上偏移量的结果。PC寄存器XX操作码F8A指令EA=(PC)+A程序段主存下条指令(7)变址寻址方式

主存操作数EA为变址REG内容加上形式地址的结果。F7IA操作数EA=(I)+A操作码数据段主存操作数…地址A’…地址寄存器起址A变址REG号注:①基址REG/变址REG数量=1时,均可隐含表示(B/I);②变址寻址对程序的块处理很有效(形式地址A不变)注:偏移量为形式地址(机器数)的真值,是有符号数!27(8)相对寻址方式PC寄存器XX操作码F8A指令EA=(例3—设计算机主存按字节编址,相对寻址的转移指令格式如下:CPU取指令时每取出一个字节自动完成PC←(PC)+1。若0100H、0101H两个存储单元中存放的是相对寻址的转移指令。

①若该转移指令的转移目标指令地址EA=0120H,则[0101H]=?②若[0101H]=92H,则该转移指令的转移目标指令地址EA=?操作码A(原码表示)F8第一字节第二字节解—①下条指令EA=(PC)+DISP在执行阶段形成,指令取出后,(PC)=0100H+2=0102H,

②指令取出后,(PC)=0102H,因[DISP]原=92H,故DISP=-12H,则EA=(PC)+DISP=0102H-12H=00F0H。指令执行时,故DISP=0120H-0102H=+001

1110B,[0101H]=A=[DISP]原=0001

1110=1EH28例3—设计算机主存按字节编址,相对寻址的转移指令格式9、隐含寻址方式

操作数地址由指令操作码隐含约定,与地址码无关。☆不同计算机系统对寻址方式的命名可能有所不同!寻址类型常用寻址方式数据寻址除相对寻址外,一般均可使用指令寻址一般只使用直接、寄存器间接、相对、隐含方式

寻址方式应用:*隐含方式:①操作数隐含在某REG中;如:(a)基于累加器CPU中,指令AC←(AC)+[M]隐含AC(b)顺序型指令的下条指令EA=(PC)+1隐含PC②操作数/操作数地址/指令地址隐含为堆栈中。如:(a)常用堆栈传递过程调用的参数,(b)调用/返回指令的下条指令地址299、隐含寻址方式☆不同计算机系统对寻址方式的命名可能

例4—某计算机主存按字节编址、有符号定点数采用原码编码,有基址REG和变址REG各1个(分别记为RB和RI),单地址指令格式如右图所示,设(RB)=0037H、(RI)=1122H、(PC)=1234H,请计算MEM中指令内容为①4428H②2244H③1392H④3592H的操作数或EA。解—①指令字=0100

0100

0010

1000B,

②指令字=0010

0010

0100

0100B,基址寻址(A=44H),

③指令字=0001

0011

1001

0010B,变址寻址(A=92H),

④指令字=0011

0101

0010

0001B,相对寻址(A=92H),OPFA15109870F=00为立即寻址,01为相对寻址10为基址寻址,11为变址寻址[操作数]原=A=28H;操作数EA=(RB)+A=0037H+44H=007BH;操作数EA=(RI)+A=1122H+92H=1110H;A=[DSP]原=92H,则DSP=-001

0010B=-12H,转移目标指令EA=(PC)+DSP=(1234H+2)-12H=1224H。262730例4—某计算机主存按字节编址、有符号定点数采用原码编例5—某CPU中有4个数据REG(R0~R3)、CPU字长为8位、主存按字节编址、有符号定点数采用原码编码,取指令时每取一个字节自动完成PC←(PC)+1,指令系统的部分指令格式如下图所示。⑴指令格式中操作码特性?目标操作数、寻址方式位表示?⑵编程实现求主存中数组A[0]+…+A[99]之和。数据寻址指令寻址寄存器+立即(隐含)EA=(PC)+2寄存器+寄存器间接(隐含)EA=(PC)+1寄存器间接+寄存器(隐含)EA=(PC)+1寄存器+寄存器(隐含)EA=(PC)+1寄存器+寄存器间接(隐含)EA=(PC)+1寄存器+隐含(隐含)EA=(PC)+1寄存器+隐含(隐含)EA=(PC)+1无(直接)EA=ADDR或(隐含)EA=(PC)+2无(相对)EA=(PC)+DSP或(隐含)EA=(PC)+1RD0

0

0

0RDRDRSRD4位2位

2位空RDVALRSRS空ADDR空RD空指令格式指令功能赋值(MOV):RD←VAL取数(LD):RD←[(RS)]存数(ST):[(RD)]←(RS)加法(ADD):RD←(RD)+(RS)RD←(RD)+[(RS)]自增(INC):RD←(RD)+1自减(DEC):RD←(RD)-1转移(JNZ):Z=0时转移Z=1时不转移0

0

1

00

0

1

10

1

00

1

1

00

1

1

11

0

0RDRS0

1

0DSP1

0

0101031例5—某CPU中有4个数据REG(R0~R3)、CP解—⑴操作码:变长,目标操作数:约定在首个地址码中,

寻址方式位:指令只有一种寻址方式时隐含表示;C语言程序BYTER0=0;//累加和BYTER1=100;//计数器BYTE*R2=&A[0];//地址do{BYTER3=*R2;R0=R0+R3;R2++;R1--;}while(R1≠0);//数据A[0]…//数据A[99]RD0

0

0

0RDRDRSRD空RDVALRSRS空ADDR空RD空指令格式指令功能赋值:RD←VAL取数:RD←[(RS)]存数:[(RD)]←(RS)加法:RD←(RD)+(RS)RD←(RD)+[(RS)]自增:RD←(RD)+1自减:RD←(RD)-1转移:Z=0时转移Z≠0时不转移0

0

1

00

0

1

10

1

00

1

1

00

1

1

11

0

0RDRS0

1

0DSP1

0

01010⑵先写C语言程序,再翻译成机器语言程序:01010010011010**011101**1001110106H07H08H09H地址

程序代码

00000001…0110010000H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH…70H000000**00000000000001**01100100000010**000011000010111001000011011010**011101**1000****00000110…32解—⑴操作码:变长,目标操作数:约定在首个地址码中,§4.3指令格式举例一、指令格式目标第i种指令格式第i+1种指令格式OPi

DTDLDF1A1DF2A2OPi+1

DTDLDF1A11、指令格式的目标*对硬件有较好的支持:有助于减少译码时间*对软件有较好的支持:有助于减少指令数及指令长度

减少指令数—指令功能强、地址码个数多,地址范围大、寻址方式多、对称性好等,

缩短指令长度—地址码个数少、范围小,冗余空间小等;

减少译码时间—指令格式规整、地址码并行译码、操作数地址形成简单等。33§4.3指令格式举例一、指令格式目标第i种指令格式第i+2、指令格式优化方法--指令格式目标实现方法

※指令格式目标的矛盾—软件目标←→硬件目标减少指令数←→缩短指令长度②采用扩展操作码编码方式;*遵循大概率事件优先原则:利于提高性能/价格

可以减少指令数、缩短指令长度,减少译码时间①高频率操作(或数据类型等)才采用硬件(机器指令)实现;OPi

DT

DLDF1A1OPj

DLOPk

DTDF2A2DF1A1DF1A1③根据使用频率,确定各种操作的地址码个数、寻址方式、地址范围等342、指令格式优化方法--指令格式目标实现方法*可分开存放操作码:利于提高规整性*隐含部分地址码:利于提高规整性、缩短指令长度,不利用软件编程(灵活性、指令数)OPi

DT

DLDF1A1OPj

DLOPj’DF1A1OPi

DT

DLDF1A1OPj

DLDF1A1DF1A1DF2

A2仅为寄存器寻址OPj

OPi

DF1A1DF1A1OPj

OPi

DF1A1约定A2为固定的REG*寻址方式位前移:利于地址码并行译码即将多个寻址方式位合并、紧邻操作码存放OPi

DF1A1译码时间TDF1+TA1+TDF2+TA2DF2A2OPi

DF12A1A2译码时间TDF12+max{TA1,TA2}3335*可分开存放操作码:利于提高规整性*隐含部分地址二、Pentium指令系统1、寻址方式共支持9种寻址方式,多数指令使用多种寻址方式。寻址方式操作数或地址操作数存放部件立即寻址操作数=指令中立即数IR中寄存器寻址操作数=(R)寄存器中直接寻址EA=A存储器中基址寻址(含变址寻址)EA=(B),或EA=(I)基址+偏移寻址EA=(B)+A,或EA=(I)+A基址+变址+偏移寻址EA=(B)+(I)+A比例变址+偏移寻址EA=(I)×S+A基址+比例变址+偏移寻址EA=(B)+(I)×S+A相对寻址EA=(EIP)+A说明:通用寄存器R—EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI;基址寄存器B—EBX、EBP;变址寄存器I—ESI、EDI;

A—偏移地址或偏移量;EIP—程序计数器;S—比例因子36二、Pentium指令系统1、寻址方式寻址方式操作数或地址操2、指令格式有近200条指令;采用变长指令格式(以字节为基本单位)。*指令格式:[指令前缀+]指令本身指令前缀0B或1B0B或1B0B或1B0B或1B功能前缀段前缀操作数长度地址长度前缀指令本身1B或2B0B或1B0B或1B0、1、2、4B0、1、2、4B操作码寻址方式变址基址参数偏移量参数立即数参数*指令前缀:

显式扩展指令本身的功能或参数;如:新增的SSE指令,8/16位长度→8/16位和32/64位等“[]”指可缺省应用—当前指令与上条指令的指令前缀相同时,可缺省MODREG/OPR/M2b3b3bSSINDEXBASE2b3b3b实现兼容性的方法之一372、指令格式*指令格式:[指令前缀+]指令本身指令前*指令本身的相关约定:①地址码个数—≤2个,其中IMME型及MEM型均≤1个;②操作数长度—支持8/16/32位,

8位与16位的区分使用操作码实现,

8/16位与32位的区分使用指令前缀实现③REG型操作数的存放—32位采用REG全部位数,16位采用“使用REG低端”方案,

8位采用“使用部分REG”方案,

MEM型操作数的存放—采用小端次序、边界对齐方式36151638*指令本身的相关约定:②操作数长度—支持8*指令本身的操作码字段:操作码编码—采用扩展编码方法;操作数类型/长度约定—①不同数据类型用不同操作码表示(如定点/浮点数),OPOP

W8位或16位操作数8位和16位操作数OPOPOPOP地址码字段1B1B地址码字段OP’OP’②支持长度=8位或16位时,用操作码隐含指明,支持长度=8位和16位时,用W位指明,

支持长度=8/16位和32位等时,用指令前缀指明3739*指令本身的操作码字段:操作码编码—采用扩*指令本身的地址码字段:MODREGR/MDISPREG-REG/MEM型:MOD空闲R/MDISPIMME-REG/MEM型:IMMEMOD空闲R/MDISPREG/MEM型:双地址指令单地址指令R/MMOD=11MOD=00,01,10W=0W=1MOD=00MOD=01MOD=10000ALAXBX+SIBX+SI+DISP8BX+SI+DISP16001CLCXBX+DIBX+DI+DISP8BX+DI+DISP16010DLDXBP+SIBP+SI+DISP8BP+SI+DISP16011BLBXBP+DIBP+DI+DISP8BP+DI+DISP16100AHSPSISI+DISP8SI+DISP16101CHBPDIDI+DISP8DI+DISP16110DHSI直接寻址BP+DISP8BP+DISP16111BHDIBXBX+DISP8BX+DISP16R/M型地址码—MOD为寻址方式位单/双地址指令的地址码字组成—零地址指令无地址码REG型地址码—同MOD=11的R/M,用OP隐含约定为REG寻址“空闲”可用作OP3740*指令本身的地址码字段:MODREGR/MDISPRE目标操作数约定—同时支持REG型和R/M型时,用D位指明IMME型地址码—同对应数据表示指令支持IMME型和非IMME型寻址方式时,用I位指明OP(如0000000)WMODREGR/M1B1BOP(如000000)WIMOD空R/MIMMEOP(如000000)WMODREGR/MIOP(如0000001)WMOD空R/MIMMEI=0I=1例1—REG/MEM-REG型及REG/MEM-IMME型的数据传送指令OPDWMODREGR/M1B1B如D=0时为REG←R/M,D=1时为R/M←REG100010WMODREGR/MDREG/MEM-REG型100011WMOD000R/M1IMMEREG/MEM-IMME型41目标操作数约定—同时支持REG型和R/M型时,用

例2—某8位字长的模型机中,主存按字节编址,CPU中有8个数据REG和2个变址REG。所有的7种双操作数操作的使用频率分别为0.35、0.25、0.20、0.10、0.05、0.03、0.02。(1)若约定:操作码为2种长度的霍夫曼等长扩展编码,请写出各指令操作码;(2)若约定:上述短操作码对应的是8位REG-REG型指令,长操作码对应的是16位REG-MEM型指令;MEM型地址码采用变址+偏移寻址方式,即EA=(REGI)+DSP,偏移量DSP的范围不小于±63;REG型、MEM型操作数均可作为目标操作数;请写出这两类指令的指令格式,标出各字段长度。42例2—某8位字长的模型机中,主存按字节编址,CPU中

解—(1)由霍夫曼编码可见:等长扩展的编码为2位和4位

(2)因数据长度只有一种,故指令中无需长度标志位W;扩展编码的操作码为:00~10、1100~1111;REG-REG型指令格式—目标操作数隐含表示(如最左)OP-HREG-D17

6

5

4

32

1

0REG-D2REG-MEM型指令格式—目标操作数用D位显式表示REG型地址码—不需要寻址方式位,长度=MEM型地址码—不需要寻址方式位,由RI及DSP组成变址REG(RI)长度=

偏移量(DSP)长度≥OP-LREG-D1512

11108760DSPDRID=0时,目标操作数为REG型,D=1时为MEM型log28=3位1位,1位(符号)+6位(数值)=7位;1043解—(1)由霍夫曼编码可见:等长扩展的编码为2位和4三、PowerPC指令系统1、寻址方式共支持6种寻址方式,多数指令只使用1~2种。└→可简化硬件设计寻址方式操作数或地址应用指令类型存放部件立即寻址操作数=指令中立即数算逻指令IR中寄存器寻址操作数=(R)算逻指令寄存器中绝对寻址EA=A转移指令存储器中相对寻址EA=(PC)+A转移指令间接寻址EA=(B)+A转移指令、装入指令间接变址寻址EA=(B)+(I)装入指令说明:通用寄存器R—共32个;

基址寄存器B—32个通用寄存器中任意一个;

变址寄存器I—32个通用寄存器中任意一个。44三、PowerPC指令系统1、寻址方式寻址方式操作数或地址2、指令格式只有几十条指令;采用定长指令格式(32位,共有4种)。*指令格式特征:操作码—采用扩展编码方法,操作码可分开存放;偏移量型立即数型OPERDISPALOPERRD/OPTIONRS/CRIMME/DISPAL寄存器型OPERRD/RSRS/RDRS/SHAMTFUNCROPERRDRSRSRSFUNCROPER—操作码,FUNC—操作码扩展,DISP—偏移量,IMME—立即数RD—目标寄存器号,RS—源寄存器号,R—是否记录到状态寄存器OPTION—转移方法,CR—检测条件位,A—绝对/相对寻址位,L—链接位6位5位5位5位5位6位地址码—≤4个,多数为REG型,目标操作数隐含表示;寻址方式—大多数指令只有1~2种,占用1~2个操作码可省略寻址方式位452、指令格式*指令格式特征:偏移量型OPERDISPA§3.4指令系统发展

系统性能/价格与指令系统:TCPU=IN×CPI×TC

软硬件与指令系统:指令系统是软硬件的主要交界面;指令系统按约定形成计算机硬件计算机软件按约定实现执行软件应用需求形成软件指令格式的命令实例指令格式的功能实现机构指令系统CISCRISC降低价格—减少程序中指令数量;└→增加指令的功能及种类提高性能—提高指令的执行速度。└→减少指令的功能及种类46§3.4指令系统发展

系统性能/价格与指令系统:T一、CISC的指令系统(ComplexInstructionSetComputer)*CISC指令系统的目标:

侧重强化指令功能,以减少目标代码空间*CISC指令系统的应用特点:

程序目标代码空间较小;编译程序的设计复杂;指令的实现控制复杂,不利于VLSI、流水、并行*CISC指令系统特征:·采用变长指令字结构;←利于提高可扩展性、实现兼容性·指令种类较多、格式复杂,支持多种寻址方式;·大多为REG-MEM型指令;·使用少量寄存器;·指令执行时间较长(通常为几个~几十个TC)47一、CISC的指令系统(ComplexInstructi二、RISC的指令系统(ReducedInstructionSetComputer)*RISC指令系统特征:·采用定长指令字结构;·指令种类较少、格式简单,支持少量寻址方式;·除LOAD/STORE外,基本上全部是REG-REG型指令;·使用大量寄存器;·指令执行速度快(基本上为1个TC)*RISC指令系统的应用特点:

目标代码空间较大;编译程序的设计简单;

指令的实现控制简单,有利于VLSI、流水、并行*RISC指令系统的目标:

侧重提高指令执行速度,需简化指令功能4648二、RISC的指令系统(ReducedInstructi三、CISC与RISC的发展*CISC与RISC的比较:(理论上或模拟机上)性能方面—RISC略好,得益于VLSI、流水、并行技术

其他方面—CISC略好,得益于变长的、复杂的指令格式*CISC与RISC的发展:停止了争吵,出现了技术交融RISC—增加指令系统复杂度,纯RISC→类RISC;CISC—采用RISC技术,纯CISC→CISC外表+RISC内核应用需求增加及产品换代的需要49三、CISC与RISC的发展*CISC与RISC的比较第3章汇编级机器组织50第3章汇编级机器组织1※指令系统定义:机器指令—要求硬件直接实现某种运算或操作的命令;指令系统—所有机器指令的集合。※指令系统与软硬件关系:§3.1指令系统组成指令系统按约定形成按约定实现计算机硬件计算机软件应用需求相一致执行软件应用结果

指令系统是软硬件间的一个“约定”!是软硬件交界面之一指令格式:操作功能-操作命令间的约定按一定格式编写的操作命令按一定格式实现的操作功能51※指令系统定义:※指令系统与软硬件关系:§3.1一、指令功能1、指令的操作数(1)数据结构与数据表示*数据结构:计算机软件能够直接识别和引用的数据类型;

*数据表示:计算机硬件能够直接识别和引用的数据类型;*相互关系:数据结构直接使用方法(x%)软件映像方法(1-x%)数据表示使用频率较高(2)指令的操作数*操作数类型:所有种类的数据表示,通常有定点/浮点数、逻辑数、字符、地址等;*操作数长度:部分种类有几种长度,如定点/浮点数及逻辑数等使用频率均较高,可节约存储空间52一、指令功能1、指令的操作数(1)数据结构与数据表示2、指令的操作*指令操作类型—软件中使用频率较高的基本操作;

如数据传送、算逻运算、转移控制等种类※课件约定—

第A个寄存器的地址用RA表示、内容用(RA)表示;

第A个主存单元的地址用[A]表示、内容用[A]表示;

操作的源操作数用内容表示、目标操作数用地址表示(1)数据传送*操作功能:REG、主存、I/O设备间的数据传送;如—R0←(R1)、R0←[0100H],各部件均可为目标操作数*操作数:8b/16b/…的信息(数值/字符/地址等);*操作数个数:2个无需区分数据类型(无数据运算)532、指令的操作※课件约定—(1)数据传送*操作数(2)算术逻辑运算*操作功能:算术运算—加、减、乘、除、+1、-1、求补等;如:R0←(R1)+[0100H]、R2←(R2)+1逻辑运算—与、或、非等;如:R0←(R0)&(R1)、R0←~(R0)*操作数:算术运算—为8b/16b/…的有符号/无符号定点数,

逻辑运算—为8b/16b/…逻辑数,

源操作数、目标操作数的数据类型应相同;*操作数个数:1~3个(如+1、C←A+B、A←A+B);*操作结果状态:Z(是否为零)、S(是否为负数)、V(是否溢出)、C(是否有进位/借位)等状态产生与保存—由ALU产生、用状态寄存器保存关系运算=算术运算+结果状态+逻辑运算54(2)算术逻辑运算*操作数:算术运算—为8b/16b/(3)转移操作*操作功能:改变程序的逻辑顺序(即下条指令地址→PC),有条件转移、无条件转移、调用、返回等种类;…C←C-1JZ2000…2000

2010…逻辑地址程序条件转移操作…JMP+9…A←A+1…20002010…2019逻辑地址程序无条件转移操作…CALL2200A←A+1…2000

20102011…逻辑地址主程序调用操作…CALL**…RETURN…2200

…2280…逻辑地址子程序返回操作注:①条件转移操作的条件由测试条件及转移条件组成;

②调用操作参数有目标指令地址及返回指令地址;③返回操作参数仅为返回指令地址堆栈(存储部件)(隐含方式)写入④嵌套调用要求堆栈是按“后进先出”顺序(不按地址)访问的部件(隐含方式)读出“后进先出”顺序55(3)转移操作…2000逻辑地址程序条件转移操作*操作数:显式—指令的绝对地址或相对地址(偏移量),隐式—状态寄存器的状态、堆栈的顶部内容;*显式操作数个数:1个或0个(4)移位操作*操作功能:逻辑左/右移、算术左/右移、循环左/右移等;如:R0←(R0)<<逻辑2、R1←(R1)>>算术(R2)*操作数:操作数据—8b/16b/…的定点数或逻辑数,

移动位数—8b/16b/…的无符号定点数;*操作数个数:2个(5)其他类型操作

浮点运算、十进制运算、字符串处理等56*操作数:显式—指令的绝对地址或相对地址(偏移量),(二、指令格式*指令格式组成:由操作码、地址码两个字段组成操作码字段地址码字段*指令格式的相关参数:OPA1A2目标地址←(A1)OP(A2)②操作数类型(长度)?①操作类型?⑤A1/A2?④地址个数?③操作数对应的部件及地址?⑥下条指令地址?*指令系统组成:由若干种机器指令格式组成第1种:第2种:…第n种:A1A2…OP1AOP2A1A2OPn注:①各种指令操作码须互不相同!②操作数类型为硬件数据表示!57二、指令格式*指令格式组成:由操作码、地址码两个字段组1、操作码字段*功能:用编码指明(约定)操作的性质,包括操作类型、操作数类型及长度3个方面;例1—指令系统约定:操作类型≤8种,加法操作需支持8/16位定点数、单/双精度浮点数,移位操作需支持8/16位定点数,逻辑非操作只需支持8位逻辑数。操作码字段如何编码?加法逻辑非

逻辑数

8位定点数浮点数8位16位单精度双精度移位

定点数8位16位操作数长度由操作类型默认表示操作数类型由操作类型默认表示0000000000000010010100011000√方案1:支持种类[+操作类型]×方案2:数据表示编码000000000000001001010或11001010101010100581、操作码字段例1—指令系统约定:操作类型≤8种,加*操作类型编码方法:性能参数—规整性、程序中指令的平均操作码长;└→影响译码复杂度└→影响程序空间大小定长编码—按序编码、长度L=log2操作类型数量;变长编码—按使用频率分布编码(如霍夫曼扩展编码)例2—7种操作使用频率分别为0.4、0.26、0.15、0.06、0.05、0.04、0.04,请进行各操作类型的操作码编码。0.080.040.040.050.060.150.260.401I7I6I5I4I3I2I100.11100.19100.34100.60101.0010操作Ii频率Pi定长编码霍夫曼编码I1I2I3I4I5I6I70.400.260.150.060.050.040.0400000101001110010111001011011100111011111011111∑PiIi3.002.32码段1段4段霍夫曼扩展编码00011011001101111011112.382段59*操作类型编码方法:定长编码—按序编码、长2、地址码字段*功能:用编码指明各操作数的地址、源/目标属性,

指明下条指令地址;*地址码个数:①指令系统中—规定地址码个数的最大值,②不同指令中—用操作码约定地址码个数;重叠源/目标、隐含表示,可减少个数*地址码源/目标属性:⑴隐含约定第一个(或最后一个)地址码,⑵显式指明;*操作数地址的表示:下小节讨论;*下条指令地址的表示:当前指令为顺序型—隐含表示,PC=(PC)+当前指令长度,当前指令为转移型—显式表示,=IR中的(地址码);8602、地址码字段*地址码个数:重叠源/目标、隐含表示,可例3—续例1,指令系统规定指令≤2个地址码,若加法、移位、逻辑非操作的地址码个数分别为2个、2个、1个,请说明如何约定地址码个数及源/目标属性?加法逻辑非

逻辑数

8位定点数浮点数8位16位单精度双精度移位

定点数8位16位000000000100010000110010

0

0010

101000A1A2A1A2A1A2A1A2AA1A2A1A2约定:操作码为010000时为2个地址码,

否则为1个地址码A1A2A1A2A1A2A1A2AA1A2A1A2DDDDDD*或隐含:第一个为目标地址码显式:D=0时目标码为A1D=1时目标码为A2组合:大部分操作隐含、部分操作显式61例3—续例1,指令系统规定指令≤2个地址码,若加法、3、指令字*组成:由操作码及地址码组成,操作码在指令字前部;零地址指令:单地址指令:双地址指令:三地址指令:OPOPAOPA1A2OPA1A2A3*指令字类型:

按地址个数分—指令字长=n×存储字长,机器字长=m×存储字长;按指令字长分—指与机器字长的关系单字长指令、半字长指令、双字长指令等*指令字结构:(指令系统特性)定长指令字结构—不同指令的指令字长完全相同,变长指令字结构—不同指令的指令字长不尽相同n为常数为常数11623、指令字零地址指令:OPOPAOPA1A2OPA1A2A3解:⑴操作码长度=16-6-6=4,双地址指令种数=24-P-Q;例4—设指令字长为16位、各地址码均为6位,指令字有零地址、单地址、双地址3种格式;⑴采用定长操作码时,若零地址、单地址指令分别为P种和Q种,双地址指令最多有多少种?⑵采用扩展操作码时,若零地址、双地址指令分别为X种和Y种,单地址指令最多种类数M为多少?⑵零、单、双地址指令操作码长度=16、10、4,X=[(24-Y)×26-M]×26,则M=(24-Y)×26-X×2-6A1A2A?种Q种P种空闲空闲A1A2AY种共M种共X种可用(24-Y)×26-M种可用(24-Y)×26种63解:⑴操作码长度=16-6-6=4,双地址指令种数§3.2操作数存放与寻址方式一、操作数的存放方式1、数据在REG中的存放方式基础—通常REG长度=CPU字长,REG按其数量进行编址。*数据长度=REG长度时的存放方式:使用REG全部位;*数据长度<REG长度时的存放方式:有两种方案;R0………地址码=000R3地址码=011R7R4………地址码=100地址码=111方案1—使用REG低端R0………地址码=000R3地址码=110地址码=111R7地址码=001R4………方案2—使用部分REG*地址码格式:√方案2—OP1F2

xxx数据长度=REG长度时OP0F2

xxx数据长度<REG长度时64§3.2操作数存放与寻址方式一、操作数的存放方式1、数据在2、数据在存储器中的存放方式基础—存储字长=最短的数据长度;*存放方式:存放在连续存储单元中,用最小单元地址表示数据地址;*地址码格式:OPnF3

Nn为数据长度类型的编号*存放

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论