收藏 分享(赏)

计算机组成原理指令系统(part3).ppt

上传人:Facebook 文档编号:3429139 上传时间:2018-10-27 格式:PPT 页数:74 大小:945KB
下载 相关 举报
计算机组成原理指令系统(part3).ppt_第1页
第1页 / 共74页
计算机组成原理指令系统(part3).ppt_第2页
第2页 / 共74页
计算机组成原理指令系统(part3).ppt_第3页
第3页 / 共74页
计算机组成原理指令系统(part3).ppt_第4页
第4页 / 共74页
计算机组成原理指令系统(part3).ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、计算机组成原理与汇编语言 (2006级),北航计算机学院 刘旭东 Tel :82316285 Mail:,第三部分 指令系统,一、指令格式 二、指令系统举例 三、指令系统设计,1.1 指令系统概述,指令系统的基本问题 操作类型:应该提供那些(多少)操作? 用LD/ST/INC/BRN已经足够编写任何计算程序,但不实用,程序太长。 操作对象:如何表示?可以表示多少? 大多数是双值运算(如AB+C) 存在单值运算(如AB) 指令格式:如何将这些内容编码成一致的格式? 指令长度、字段、编码等问题,1.1 指令系统概述,机器指令的要素 操作码(Operation Code):指明进行的何种操作(如 A

2、DD, MOV,I/O) 源操作数地址(Source Operand Reference):参加操作的操作数的地址,可能有多个。 目的操作数地址(Destination Operand Reference):保存操作结果的地址。 下一条指令的地址(Next Instruction Reference):指明下一条要运行的指令的位置,一般指令是按顺序依次执行的,所以绝大多数指令中并不显示的指明下一条指令的地址,也就是说,指令格式中并不包含这部分信息。只有少数指令需要显示指明下一条指令的地址。,1.1 指令概述,操作数的位置 存储器(存储器地址) 寄存器(寄存器地址) 输入输出端口(输入输出端口地

3、址),1.1 指令系统概述,Applications,OS,Compiler,Instruction Set Architecture (ISA),Instruction Processing,Input/ Output,Hardware layers for design abstraction,Datapath & Control,Digital Design,Circuit Design,Software layers of abstraction,指令集系统结构(ISA),1.1 指令系统概述,指令集系统结构(ISA)种类 大部分ISA都可归类为通用寄存器系统结构 Register-M

4、emory式ISA(如80X86) 多种指令可以访问内存; 存在寄存器操作数和内存操作数直接运行的指令; Load-Store式ISA(如MIPS) 只有装载(LOAD)和存储(STORE)指令可以访问内存 运算指令操作数全部为寄存器操作数; Load-Store是ISA的一种趋势,1.1 指令系统概述,寄存器寄存器简单、固定长度编码、指令执行时钟数基本一致与可以访问存储单元的结构相比,需要更多指令总数 寄存器存储器数据无需预先装入就可用,可产生较好的指令密度二元操作源操作数被破坏操作数的位置可能使指令执行时钟数多样化 存储器存储器 最紧凑,不会因为中间存储浪费寄存器 指令系统长度变化大(考虑

5、3操作数指令) 存储器访问成为瓶颈,1.1 指令系统概述,通用寄存器的优势 寄存器比存储器快 寄存器便于编译器使用 寄存器可以保存变量 减少存储器访问,提高速度 提高代码密度,寄存器地址比存储器地址短,1.1 指令系统概述,指令类型 数据传输指令:寄存器与存储器之间,寄存器之间传递数据; 算术/逻辑运算指令:寄存器(或存储器)中整型数或逻辑型数据的运算操作。 程序控制指令:控制程序执行顺序,条件转移或跳转,子程序调用和返回等; 浮点运算指令:处理浮点数的运算。,1.2 指令格式,操作数的类型 地址(操作数地址,指令地址) 数值(整型数或定点数,浮点数,十进制数) 字符 逻辑型数,1.2 指令格

6、式,地址的数目 三地址:Des (Sur1) OP (Sur2),双地址:Des (Sur) OP (Des),单地址:累加器作为其中一个操作数的双操作数型,或单操作数型,无地址:隐含操作数型,或无操作数型,OP,1.2 指令格式,操作码结构 固定长度操作码:操作码长度(占二进制位数)固定不变。 硬件设计简单 指令译码时间开销较小 指令空间效率较低 可变长度操作码:操作码长度随指令地址数目的不同而不同。 硬件设计相对复杂 指令译码时间开销较大 指令空间利用率较高 指令长度 定长指令系统 变长指令系统:一般为字节的整数倍,1.2 指令格式,关于指令扩展操作码的举例 1. 设某机器采用固定长度指令

7、系统,指令长度为16位,包括 3 地址指令15条、双地址指令10条和若干单地址指令,假定每个地址占4位,请问,该指令系统最多可以容纳多少单地址指令,并设计该指令系统的操作码编码方案。,基本思路 1. 每一条指令需要一个唯一的操作码编码。 2. 不同类型的指令应该具有不同的标识。 3. 采用扩展操作码方案。,1.3 寻址方式,寻址:根据形式地址查找到操作数的过程。,形式地址与有效地址 形式地址:指令中直接给出的地址编码。 有效地址:根据形式地址和寻址方式计算出来的操作数在内存单元中的地址。,有效地址:操作数Data的内存单元地址Add,1.3 寻址方式,寻址方式 定义:指令代码中地址字段的一部分

8、,指明操作数的获取方式或操作数地址的计算方式。 指令中每一个地址字段均有其寻址方式编码(或隐含寻址方式),目的地址,源地址,1.3 寻址方式,指令代码和寻址描述中有关缩写的约定 OP:操作码 Des:目的操作数地址 Sur:源操作数地址 A或Add: 形式地址(内存地址) Mod:寻址方式 Rn : 通用寄存器 Rx :变址寄存器 Rb : 基址寄存器 SP:堆栈指针(寄存器) EA :有效地址 Data :操作数 Operand :操作数 (X):表示对象X的内容(值),如(Rn)表示寄存器Rn的内容(值),(A):内存中地址为A的单元的内容。 Imme. Data : 立即数 XXH:16

9、进制数XX,1.3 寻址方式,立即寻址 操作数直接在指令代码中给出。,说明 立即寻址只能作为双操作数指令的源操作数。 Operand = Imme. Data 例:MOV AX,1000H,思考 立即寻址的操作数在什么地方,存储器 or 寄存器? 立即数的地址?,1.3 寻址方式,寄存器直接寻址 操作数在寄存器中,指令地址字段给出寄存器的地址(编码) EA = Rn, Operand = (Rn) 例:MOV BX, AX,Data,1.3 寻址方式,存储器直接寻址 操作数在存储器中,指令地址字段直接给出操作数在存储器中的地址 EA = A, Operand = (A) 例:MOV AX, 1

10、000H,Data,1.3 寻址方式,寄存器间接寻址 操作数在存储器中,指令地址字段中给出的寄存器的内容是操作数在存储器中的地址。 EA = (Rn), Operand = (Rn) 例:MOV AX, BX,Data,1.3 寻址方式,存储器间接寻址 操作数在存储器中,指令地址字段中给出的存储器地址的单元内容是操作数在存储器中的地址。 EA = (A1), Operand = (A1) 例:MOV R1, (1000H) PDP-11的指令,Data,1.3 寻址方式,基址寻址 操作数在存储器中,指令地址字段给出一基址寄存器和一形式地址,基变址寄存器的内容与形式地址之和是操作数的内存地址。

11、EA = (Rb)+A, Operand = (Rb)+A) 例:MOV AX, 1000HBX,Data,基址寻址的作用:较短的形式地址长度可以实现较大的存储空间的寻址。,1.3 寻址方式,变址寻址 操作数在存储器中,指令地址字段给出一变址寄存器和一形式地址,变址寄存器的内容与形式地址之和是操作数的内存地址。 EA = (Rx)+A, Operand = (Rx)+A) 有的系统中,变址寻址完成后,变址寄存器的内容将自动进行调整。Rx (Rx) + (操作数Data的字节数) 例:MOV AX, 1000HDI,Data,变址寻址的作用:数组操作,串操作,1.3 寻址方式,相对寻址 基址寻址

12、的特例,由程序计数器PC作为基址寄存器,指令中给出的形式地址作为位移量,二者之和是操作数的内存地址。 EA = (PC)+A, Operand = (PC)+A) 例:JNE A,Data,1.3 寻址方式,堆栈寻址 堆栈的结构:一段内存区域。 栈底,栈顶, 堆栈指针(SP):是一个特殊寄存器部件, 指向栈顶 堆栈操作:PUSH ( 从寄存器到堆栈),POP (从堆栈到寄存器),1.3 寻址方式,堆栈寻址 压栈操作:PUSH Rn,假定寄存器Rn为16位寄存器(SP) (Rn), SP (SP)-2,Data,1.3 寻址方式,堆栈寻址 出栈操作:POP Rn,假定寄存器Rn为16位寄存器SP

13、 (SP) + 2, Rn (SP),Data,1.3 寻址方式,页面寻址 将程序计算器PC的高位部分与形式地址拼接形成操作数的有效地址。 EA (PC)H, 拼接 A 内存分位若干页, (PC)H,指明页地址,形式地址A表明页内的位移量,Data,1.3 寻址方式,Addressing Mode Usage3 programs measured on machine with all addressing modes- Displacement(基址) 42% avg, 32% to 66%- Immediate(立即) 33% avg, 17% to 43%- Register indir

14、ect: 13% avg, 3% to 24%- Scaled(基址变址) 7% avg, 0% to 16%- Memory indirect: 3% avg, 1% to 6%- Misc: 2% avg, 0% to 3%75% displacement & immediate 88% displacement, immediate & register indirect,1.3 寻址方式,关于立即数(Immediate)5060:小于等于 8 位7580:小于等于 16 位关于位移量(Displacement)大部分情况为:1216位,1.3 指令类型,数据传送指令:Move,Stor

15、e,Load,Set,Clear,Exchange 算术运算指令:包括定点数、浮点数运算和十进制数运算 逻辑运算指令:And,Or,Not,Xor,Compare,Test 移位指令 算术移位,逻辑移位,循环移位 程序控制类指令 几个重要的寄存器:程序计数器PC,程序状态字PSW(或标志寄存器),堆栈指针SP 转移指令:无条件转移指令,有条件转移指令 循环控制指令(LOOP) 子程序调用与返回指令(CALL,RET) 程序中断指令及返回(INT,IRET) 串操作指令(MOVSB,MOVSW) I/O指令:IN,OUT 堆栈指令:PUSH,POP,1.3 指令类型,80X86使用最多的10条指

16、令,一、指令格式 二、指令系统举例 三、指令系统设计,2.1 80868088指令系统:CPU与存储器结构,80868088CPU寄存器结构,2.1 80868088指令系统: CPU与存储器结构,存储器及其存储器地址结构 主存容量为1M(220),可直接访问的主存物理地址为20位。超过1M的存储空间通过其他方式访问。 80868088机器字长16位,所有寄存器长度位16位,数据总线16位。 主存采用分段的结构 主存存储单元的地址构成:段基址(16 bits): 段内偏移(16 bits) 可执行程序(.EXE)的存储结构:代码段(Code Segment),数据段(Data Segment)

17、,堆栈段(Stack Segment),扩展数据段(可选) 命令程序(.COM)的存储结构:代码段,数据段和堆栈段必须是同一个段。所以命令程序最大为64KB存储空间。,2.1 80868088指令系统: CPU与存储器结构,存储器地址结构与计算,2.1 80868088指令系统: CPU与存储器结构,存储器单元结构 按字节单元编址,字节单元 (2000H)20H (2001H)10H,字单元 (2000H)1020H (2004H)5060H,双字单元 (2000H)30401020H,2.2 80868088指令系统:寄存器,通用寄存器:数据寄存器(Data Register) AX,BX,

18、CX,DX(16位); AH,AL,BH,BL,CH,CL,DH,DL(8位) 各寄存器原则上没有固定的应用 AX:累加器 BX:基址寄存器 CX:计数器 DX:数据寄存器,2.2 80868088指令系统:寄存器,通用寄存器:指针寄存器(Pointer Register) 堆栈指针:SP(16 位) 基址指针:BP(16位),默认指向堆栈段,通用寄存器:变址寄存器(Index Register) SI,DI:16位 一般情况下,二者使用上无差异,在串操作中,SI 对应源操作数,DI对应目的操作数,2.2 80868088指令系统:寄存器,通用寄存器:段寄存器(Segment Register

19、) 代码段(Code Segment),数据段(Data Segment),堆栈段(Stack Segment),扩展数据段(Extend data Segment) 代码段寄存器:CS(16 bits) 数据段寄存器:DS (16 bits) 堆栈段寄存器:SS (16 bits) 扩展段寄存器:ES (16 bits),2.2 80868088指令系统:寄存器,指令指针IP(Instruction Pointer) IP(16 bits)指向代码段中下一条要执行的指令。 CS:IP 形成下一次要执行的指令的内存地址。,标志寄存器FLAGS(Flags Register) 16位,记录当前C

20、PU运行程序的各种状态 进位标志位 CF(Carry Flag) 奇偶标志位 PF(Parity Flag) 辅助进位标志位 AF(Auxitiary Flag) 零值标志位 ZF(Zero Flag) 符号标志位 SF(Sign Flag) 溢出标志位 OF(Overflow Flag) 单步跟踪标志位 TF(Trace Flag) 中断允许标志位 IF(Interrupt-enable Flag) 方向标志位 DF(Direction Flag),2.3 80868088指令系统:寻址方式,立即寻址 MOV AX,1234H (指令代码:B83412H),2.3 80868088指令系统:

21、寻址方式,寄存器(直接)寻址 MOV AX, BX (指令代码:89D8H),2.3 80868088指令系统:寻址方式,(存储器)直接寻址 MOV AX, 0100H (指令代码:A10001H) 等价于 MOV AX,DS:0100H EA = DS:0100H,2.3 80868088指令系统:寻址方式,寄存器间接寻址 MOV AX, BX (指令代码:8B07H) 等价于 MOV AX,DS:BX EA = DS: (BX),MOV BH,BP = MOV BH,SS:BP MOV CX,SI = MOV CX,DS:SI MOV DI,BX = MOV DS:DI,BX,2.3 80

22、868088指令系统:寻址方式,基址(变址)寻址 MOV AX, 1000HBX (指令代码:8B870001H) 等价于 MOV AX, DS:BX1000H EA = DS: (BX)+1000H,2.3 80868088指令系统:寻址方式,基址变址寻址 MOV AX, 1000HBXSI (指令代码:8B800001H) 等价于 MOV AX, DS:BX+SI+1000H EA = DS: (BX)+(SI)+1000H 基址寄存器只能选:BX,BP 变址寄存器只能选:SI,DI 基址寄存器BX:默认DS段 基址寄存器BP:默认SS段,MOV AX,10HBXDI = MOV AX,D

23、S:BX+DI+10H MOV AL,20HBPSI = MOV AL,SS:BP+SI+20H,2.3 80868088指令系统:寻址方式,串操作寻址 串操作指令(MOVSBMOVSW)隐含的寻址方式 源操作数地址 DS: (SI) 目的操作数地址 ES: (DI) 寻址完成后SI,DI自动调整(根据方向标志位DF调整),MOV SI,1000H MOV DI,3000H MOV CX,0100H CLD REP MOVSB,2.3 80868088指令系统:寻址方式,I/O寻址 I/O指令特有的寻址方式 IN AL,DX OUT DX,AL I/O端口地址:12位端口地址 I/O端口:I/

24、O接口部件中可访问的空间(寄存器),向COM1口发送字符A MOV DX, 3F8H MOV AL, 41H OUT DX, AL,2.4 80868088指令系统:指令格式与编码,一般双操作数指令格式与编码 RR型或RS型,必有一个操作数在寄存器中(寄存器直接寻址) 长度26个字节(前2个字节必须) Opcode:操作码(6位) d: 方向字段(1位)。在第二个字节中,REG确定一个操作数(寄存器直接寻址),MOD和R/M确定另一个操作数的寻址方式。方向字段d表明REG确定的是源操作数还是目的操作数。 d=1, REG确定目的操作数,MOD+R/M确定源操作数 d=0, REG确定源操作数,

25、MOD+R/M确定目的操作数 W:字字节字段(1位):操作数是字节(8位)还是字(16位) W=1,字(16位) W=0,字节(8位),2.4 80868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续) REG:寄存器字段,指明两个操作数中寄存器直接寻址的那个操作数。与W字段配合使用。,2.4 80868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续) MOD和R/M:确定另外一个操作数。,2.4 80868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续) 位移量部分:8位或16位,或者无。 立即数:8位或16位,或者无。,2.4 8086808

26、8指令系统:指令格式与编码,指令编码举例 MOV AX,1000HBXSI MOV的操作码Opcdoe100010 d=1:目的操作数是寄存器直接寻址 W=1:16位字操作 REG=000:表示AX MOD=10, R/M=000:另一个操作数EA=(BX)+(SI)+1000H 指令前两个字节1000101110000000(8B80H) 4字节指令编码:8B800010H,2.4 80868088指令系统:指令格式与编码,与累加器(AX或AL)相关双操作数的指令 AX(AL):寄存器直接寻址 另一操作数:存储器直接立即数 指令代码中省略累加器编码字段,采用特定的操作码以区别于其他双操作数指

27、令。 1010001:Mem Acc 1010000:Acc Mem,指令:MOV AX, 1000H 指令代码:10100001 00000000 00010000,2.4 80868088指令系统:指令格式与编码,其他指令格式 单操作数指令编码格式 与立即数相关的指令的特定格式,单操作数指令,2.5 80868088指令系统:指令类型,指令类型 传送指令:MOV,XCHG,LDS,LEA 算术运算指令:ADD,INC,SUB,CMP等 逻辑运算指令:AND,OR,NOT,TEST等 处理器控制指令:CLC,STC,CLI,STI,CLD,NOP等 程序控制指令:CALL,RET,JMP,J

28、NE,INT,IRET等 串指令:MOVSB,MOVSW等 I/O指令:IN,OUT,2.6 MIPS 指令格式简介,MIPS R系列 寄存器 RISC处理器 2328 bit Bytes 3232 bit GPRs 3232 bit FPRs HI, LO, PC,2.6 MIPS 指令格式简介,MIPS 寄存器使用的约定,2.6 MIPS 指令格式简介,MIPS指令格式 32位固定长度指令格式(3种格式类型) 最多3地址指令:add $t0, $s1, $S2 ($t0$s1+$s2) 对于Load/Store指令,单一寻址模式:BaseDisplacement 没有间接寻址 16位立即数

29、 简单转移条件(与0比较,或者比较两个寄存器是否相等) 无条件码,2.6 MIPS指令格式简介,MIPS 指令格式 Op: 6 bits, Opcdoe Rs: 5 bits, The first register source operand Rt: 5 bits, The second register source operand Rd: 5 bits, The register destination operand Shamt: 5 bits, Shift amount ( shift instruction) Func: 6 bits, function code ( anothe

30、r Opcode),2.6 MIPS指令格式简介,MIPS 寻址方式,2.6 MIPS指令格式简介,MIPS 指令类型,2.6 MIPS指令格式简介,2.6 MIPS 指令格式简介,RSIC的指令系统的特点 处理器通用寄存器数量较多 由使用频率较高的简单指令构成; 指令字长固定,操作码固定; 指令格式种类少,寻址方式种类少; 访问内存仅限Load/Store指令,其他操作针对寄存器; 指令采用流水技术,2.7 PDP-11指令格式简介,PDP-11 寄存器 机器字长16位 816 bits GPRs, (一个作SP,一个作PC) 指令字长:16位、32位和48位三种; 采用扩展操作码 13类指

31、令,零地址、单地址和双地址 包括RR型、RS型和SS型双操作数指令(R:寄存器,S:存储器) 指令格式比较复杂 寻址方式:立即、寄存器直接、寄存器间接、存储器直接、存储器间接、基址、自增变址、自减变址、基址变址、基址变址间接等,2.7 PDP-11指令格式简介,PDP11指令格式,一、指令格式 二、指令系统举例 三、指令系统设计,3.1 指令系统的设计,设计依据 操作特性:不同操作的数量,具体是些什么操作,复杂程度等。 数据类型:各种操作所处理的数据的类型。 指令格式:指令长度,地址数目,指令中不同域的大小等。 寄存器数目:CPU中可以直接访问的寄存器的数目及使用方法。 寻址(Addressi

32、ng):操作数的寻址方式。,3.1 指令系统的设计,指令设计的相关因素 操作类型的数量:决定操作码的位数。 操作数的数量:采用几个操作数,每个操作数均应包括寻址模式编码。有时操作数是隐含的。 寻址方式数量:有时寻址方式可以是隐含的(由操作码决定) 。 寄存器数量 :确定寄存器编码的位数。 地址范围:存储器直接寻址很少见,但变址(或基址)寻址时,较大的寻址范围必须以较多的displacement位数为前提。 编址粒度(Address Granularity):字节编址或字编址。字节编址方便,但要以更多的地址位数为代价。,3.1 指令系统的设计,指令设计 指令编码设计首先考虑指令编码中的固定不变的

33、部分,然后考虑可变的部分。 指令编码中的固定部分:指令系统方案确定后不可能发生变化的部分。 操作码(数量,位数,编码) 寻址方式(数量,位数,编码) 寄存器(数量,位数,编码) 不同指令所涉及的地址数量 如果代码大小至关重要:使用可变长度指令格式 如果性能至关重要:使用固定长度指令格式,3.1 指令系统的设计,指令系统设计举例 某机字长为16位,数据总线16位,内存容量64KB,8个16位通用寄存器R0R7。指令系统基本要求是: 四种寻址方式:立即寻址,寄存器直接寻址,寄存器间接寻址,变址寻址;立即数和变址寻址时位移量disp均可达16位。 32条双操作数指令(其中必有一操作数是寄存器直接寻址)。 128条单操作数指令。,3.1 指令系统的设计,指令系统设计举例(续) 双操作数指令格式,

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

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报