主讲教师 丁纪凯

68

Click here to load reader

description

计 算 机 组 成 原 理. computer organization principle. 主讲教师 丁纪凯. 指 令 系 统. 第 5 章. 本章要点 指令系统是计算机全部指令的集合,同硬件电路 的工作密切相关,是 CPU 的一个重要特性。本章重点 论述了指令的寻址方式,结合 80X86 系列机和 MIPS 机 的指令系统讲解机器指令的组成,并根据两种典型的 CPU 结构正确分析基本指令的执行过程。. 第 5 章 — 指令系统. 5.1 指令与指令系统 5.2 介绍两类指令系统 - PowerPoint PPT Presentation

Transcript of 主讲教师 丁纪凯

Page 1: 主讲教师     丁纪凯

主讲教师 丁纪凯主讲教师 丁纪凯

computer organization principle

计 算 机 组 成 原 理

Page 2: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

指 令 系 统

第 5 章

Page 3: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

本章要点本章要点 指令系统是计算机全部指令的集合,同硬件电路 的工作密切相关,是 CPU 的一个重要特性。本章重点 论述了指令的寻址方式,结合 80X86 系列机和 MIPS 机 的指令系统讲解机器指令的组成,并根据两种典型的 CPU 结构正确分析基本指令的执行过程。

第 5 章 — 指令系统

Page 4: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.1 指令与指令系统 5.2 介绍两类指令系统 5.3 指令流程

第 5 章 指 令 系 统

Page 5: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.1.1 指令格式 1. 指令 指令是指示计算机执行某种基本操作的命令, CPU 能执行的指令是

用二进制代码表示的机器指令。

5.1 指令与指令系统

机器指令由操作码( opcode )和操作数( operand )两个字段组成。

操作码字段指出该指令的功能——执行何种操作。若操作码字段 有 n 位,则可表示 2n 条指令——有 2n 种不同的基本操作。

操作码 操作数

操作数字段(又称为“地址码”)指出该指令的操作对象 ,通常为 一个立即数(在指令代码中直接给出)、寄存器中内容、存储单元 的内容或 I/O 端口的内容:

Page 6: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

(1) 若为立即数,则操作数字段即该立即数的二进制表示; (2) 若为寄存器内容,则操作数字段即该寄存器的地址,以寄存器 地址的二进制编码表示 . 例如 CPU 有 8 个寄存器,则这 8 个寄存器地 址可用 3 位二进制码“ 000” ~“ 111” 表示之; (3) 若为存储器内容,则操作数字段即该存储器地址的二进制表示。

按指令执行过程,操作数有源操作数和目的操作数之分: 源操作数——参予操作的原始数椐, 目的操作数——指令执行后的结果数据。

Page 7: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

2. 指令的地址码结构 按指令操作的不同,源操作数可以是 1 个,也可以是 2 个,而有的 指令无操作数,据此,按指令中地址码个数的不同,指令格式可分为:

零地址指令 ; 一地址指令 ; 二地址指令 ; 三地址指令 ; ( 1 )零地址指令 指令格式如下:

指令中只有操作码字段( op ),而无操作数——地址码字段。 这类指令在如下两种情况下出现:

● ● 该条指令运行时不需要操作数; 例如 80x86 系列中的空操作指令 NOP 和暂停指令 HLT

● ● 指令有操作对象(操作数 ) ,但该操作数是指令操作码已指 定或隐含的,通常指定为累加器进行操作,称为“隐地址” ——

Page 8: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

操作数由指令操作码隐含约定。 例如 80x86 系列中的 BCD 修正指令 DAA (机器码格式为 27H ),操 作码 27H 中己隐含约定操作数为 AL ,该指令实现 BCD 码加法操作后, 对 AL 寄存器中的内容进行修正操作, 采用隐地址指令减少了指令的长度,简化了指令的结构。

( 2 ) 一地址指令 ★ 指令格式如下:

该类指令的功能是: op ( A )     或 ( AC ) op ( A ) AC

其中 op 为操作码,表示该指令的功能; A 为一个操作数的地址码——寄存器名(寄存器的编号)、 内存或 I/O 端口的地址; AC 为累加器(在一地址指令中为“隐地址” );

Page 9: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

( A )为地址码的内容,即 A 的寄存器、内存或 I/O 端口的中的 内容; ( AC )为累加器 AC 中的内容;

★ 采用一地址指令的两种情况: 一种是单操作数指令单操作数指令,源与目的为同一操作数,由指令中地址 码 A 指定。 例如: 80x86 系列中的增量指令 INC CL 的机器码格式为 : FE C1 H 即 111111 10 11 000 001 f1 f21 f22 f23 f1 字段 FEH 和 f22 字段 000 表示这是 8 位增量指令, f21 字段 11 说明是寄存器操作数、 f23 字段 001 指出寄存器为CL 。 一种是双操作数 双操作数 — 一个操作数由指令的地址码 A 给出,另一 个操作数是隐含的,一般为累加器 AC 。

Page 10: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例如 80x86 系列中的乘法指令 MUL CL 的机器码格式为: F6 E1H 即 11110110 11 100 001

f1 f21 f22 f23

f1 字段的 11110110 和 f22 的 100 表示该指令为两个 8 位数相乘, f21 的 11 表示是两个寄存器相乘, f23 的 001 表示乘数为 CL ,执行 AL×CL ,结果送 AX 的操作,其中被乘数 AL 和乘积 AX 在机器码格式 中无操作数字段表示。

( 3 ) 二地址指令 指令格式如下 :

该类指令的功能是: ( A1 ) op ( A2 ) A1

Page 11: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

( 4 ) 三地址指令

该类指令的功能是: ( A2 ) op ( A3 ) A1

指令格式如下 :

其中 , op 为操作码,表示该指令的功能; A2 为第一个源操作数的地址码——寄存器名、内存或 I/O 端口 的地址,也可以是立即数; A3 为第二个源操作数的地址码——寄存器名、内存或 I/O 端口 的地址,也可以是立即数; A1 为目的操作数(操作结果)的地址码——寄存器名、内存或 I/O 端口的地址; ( A2 )为地址码的内容,即 A2 的寄存器、内存或 I/O 端口的中的 内容; ( A3 )为地址码的内容,即 A3 的寄存器、内存或 I/O 端口的中的 内容;

Page 12: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

上述零地址、一地址和二地址指令的特点是: 指令代码短、硬件实现简单以及执行速度快。一般用于结构较简 单而且字长较短的小型机和微型机中。 三地址指令的特点是: 指令代码长、指令功能强、便于编程。一般用于结构较复杂而且 字长较长大型机中。

Page 13: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

3. 指令的操作码

指令系统中的每一条指令都有一个唯一确定的操作码,指令不同, 其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达 全部的指令。指令操作码的编码可以分为规整型和非规整型两类。

( 1 )规整形(定长编码) 简单的编码方法,操作码字段的位数和位置是固定的,其位数 应当有足够长。 若一指令系统有 m 条指令,则指令中操作码字段的位数为 N 位 应满足 m≤2N ,即 N≥log2 m

该方法有利于简化硬件设计,减少指令译码时间。 广泛应用 于大中型计算机中。

Page 14: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 IBM370 机 ( 字长 32 位 ) ,在它的半字长,单字长, 1 个半字长指令 中操作码位数都一样为 8 位。 8 位操作码最多可有 256 条指令。 ( 2 ) 非规整形(变长编码)

操作码字段位数不同,且分散在指令字的不同位置上,能有效 压缩指令中操作码字段的平均长度,但将增加指令译码和分析的难 度,使控制器的设计复杂化。 最常用的非规整型编码方式是扩展操作码法。让地址码长度 长的指令(如三地址指令)的操作码字段短些,操作数地址码长度 短的指令(如一或零地址指令)的操作码字段长些。 例 PDP-11 机(字长 16位)的指令分为单字长、两字长、三字 长三种,操作码字段占 4~ 16位不等,可遍及整个指令长度。

Page 15: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 1 指令格式如下所示,其中 op 为操作码, A1 、 A2 均为寄存器地址码, 试分析该指令的特点。 15 9 7 4 3 0

解: (1) 单字长 (2 字节 ) 二地址指令 (2) OP 采用 7 位,可有 27 = 128 条指令 (3) 源和目的操作数都是寄存器 , 即( reg1 ) op(reg2)→reg1

寄存器代码均用 4 位表示,可分别指定 16 个 reg 之中一个。

OP A1 A2

例 2 某计算机指令长度为 16 位,每个地址码为 4 位,采用扩展操作码的方 法设计指令系统,要求有 15 条三地址指令, 15 条二地址指令, 15条一 地址指令和 16 条零地址指令。解:若采用定长编码方法,三地址指令只能有 16 条,利用扩展操作码法可在

指令长度不变情况下,使指令总数大大超过 16 条。

Page 16: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

设计方法是在设计一类指令中至少留下一个编码作为扩展窗口,与下一个 地址码组成一个更多位数操作码。

( 1 )采用操作码 4 位设计三地址指令,取 指令的编码: 0000 XXXX YYYY ZZZZ ~ 1110 XXXX YYYY ZZZZ 共 15 条; ( 2 )用 1111 作为扩展窗口,取用操作码 8 位设计二地址指令,取 指令的编码: 1111 0000 YYYY ZZZZ ~ 1111 1110 YYYY ZZZZ 共 15 条; ( 3 )用 1111 1111 作为扩展窗口,取用操作码 12 位设计一地址指令,取 指令的编码: 1111 1111 0000 ZZZZ ~ 1111 1111 1110 ZZZZ 共15 条; ( 4 )用 1111 1111 1111 作为扩展窗口,取用操作码 16 位设计零地址指令,取 指令的编码: 1111 1111 1111 0000 ~  1111 1111 1111 1111 共 16 条;

Page 17: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

汇编语言是一种符号语言,其特点是用符号形式表示计算机指令, 用指令助记符代替机器指令的操作码、用标识符代替地址码。这是一 种面向具体计算机的语言。 汇编语言与机器语言相比、除保留了机器语言的优点外,还具有 易懂、易写、易记、易调试和易修改等优点。与高级语言相比,具有 执行速度快、节省内存和控制精确等优点。不同的 CPU 有不同的汇编语 言。

4. 汇编语言指令

80x86 系列 CPU 的汇编语言指令分析:

( 1 ) 8086CPU 部分指令助记符表

Page 18: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

Page 19: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

Page 20: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

( 2 ) 8086汇编语言指令中所用到的寄存器

Page 21: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

( 3 ) 80X86汇编语言指令中所用到的存储器操作数表示为: [DISP] / [ REG] / [REG+DISP] 其中, DISP 为 16 位或 32 位立即数(对 8086 只能是 16 位立即数); REG 为 16 位或 32 位寄存器(对 8086 只能是 16 位寄存器),可形 成寄存器间接寻址、基址寻址和变址寻址,也可以用二个寄存器形成 基址变址寻址。

Page 22: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.1.2 寻址方式 指令的寻址方式是指“指令中操作数的表示形式”。 指令中的操作数—操作对象通常来源于:

I/O 端口( I/O 接口中存放信息的寄存器)— 操作数在 I/O 端口中 (即指令代码中的地址码部分所指出的 I/O 端口中的内容);

立即数 — 操作数即指令代码中的地址码部分;

寄存器 — 操作数在寄存器中(即指令代码中的地址码部分所指 出的寄存器中的内容); 内存单元— 操作数在内存单元中(即指令代码中的地址码部分 所指出的内存单元中的内容);

Page 23: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

前两种操作数的表示比较简单, 立即寻址指立即数操作数,即指令中的地址码部分; 寄存器寻址指寄存器操作数,即由代表寄存器编号的二进制值表 示地址码; 存储器(内存)寻址指存储器操作数,即指令地址码给出内存单 元的地址,由于内存单元的地址一般较长,通常以其有效地址表示。 而有效地址又有多种表示,因此“存储器寻址”又有多种表示形式。 I/O 端口操作数的地址较短,比“存储器寻址”简单些。

计算机指令的寻址方式可归纳为如下几种: 立即寻址 ; 隐含寻址 ; 寄存器寻址 ; 直接寻址 ; 寄存器间接寻址 ; 存储器间接寻址 ; 变址寻址 ; 基址寻址 ; 相对寻址 ;

Page 24: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

1. 立即寻址 操作数直接由指令中的地址码给出,该操作数的寻址方式称为“立 即寻址”。 指令格式为:

该指令是一条三地址指令, 指令中的 op1 为操作码; Rd 为存放目的 操作数的寄存器的编号、 Rs1 为一个源操作数的寄存器的编号、 imm 为另一个源操作数,是一个立即数;

该指令功能是: ( Rs1 ) op1 imm Rd

这里的一个源操作数 imm 为立即寻址。 若 op1 为 AND逻辑与的操作码,指令功能是: ( Rs1 ) AND imm Rd

通常立即寻址的操作数用于对寄存器赋值,进行初始化,也用于要 求有立即数参予的一些数据运算(算术和逻辑运算)的指令中。

Page 25: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

注意: 立即数只能作为源操作数,不能作为目的操作数。 在汇编语言指令中,通常直接用数字表示操作数, 例如: ADD AL , 20H ; 例如:有的计算机中,在常数前加上 # 表示立即数, ADD AL , #20H ; 2. 寄存器寻址

操作数是一个寄存器中存放的数据,寄存器的编号由指令中对应的 地址码给出。 三地址指令的格式为:

地址码字段 Rs1 、 Rs2 和 Rd 都是寄存器寻址的操作数。把指令中的 地址码——寄存器号 Rs1 、 Rs2 和 Rd 作为指针,直接指向对应寄存器 中的操作数。若寄存器号 Rs1 、 Rs2 和 Rd 字段各为 n 位二进制代码,可 以有 2n 个寄存器作为操怍数。

Page 26: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

该指令功能是: ( Rs1 ) op1 (Rs2) Rd

3. 直接寻址 操作数在存储器中,存储器的地址在指令中由代码直接給出。 寻址过程示意图如下:

指令中的地址码字段 X 即内存操作数的地址,据此代码,从对应内存中取出内存操作数参予运算。 操作数的地址是指令代码的组成部分,适用于访问固定的存储单元。 当内存容量很大时,地址码会很长。在汇编语言指令中,直接寻址中的内存地址可直接在指令中用数字給出,有的计算机中在数字前后加上一个符号 [ ] 。

Page 27: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

直接寻址的三地址指令的格式为:

例如: 指令 JUMP 2000 ; AND AL , [2000H] ;

op1 为操作码,表示执行的操作; Rd 为存放目的操作数的寄存器; Rs1 为一个存放源操作数的寄存器; addr 为一个存放另一源操作数的内存单元地址 ,以立即数表示的;

该指令功能是: ( Rs1) OP1 mem (addr) Rd

Page 28: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例:指令 AND AL , BL, [2000H] ; 指令功能为 ( BL ) AND mem(2000H) AL mem ( 2000H )表示地址为 2000H 的内存单元的内容; 该指令的机器指令中, Rd 为寄存器 AL 的编号, Rs1 为寄存器 BL的 编号; addr 为立即数 2000H 表示的内存地址; 4. 寄存器间接寻址 操作数在内存中,内存地址在 寄存器中,指令中給出寄存器的 编号。 寻址过程示意图如下:

Page 29: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

指令中的 R 字段为寄存器编号,由此字段可找到对应的寄存器,从 该寄存器中取出内容 (R) ——X ,即内存操作数的地址,据此地址可从 对应内存中取出操作数。 由于寄存器的内容可以攺变,所以这种寻址方式具有很强的寻址能 力。 在汇编语言指令中,表示寄存器间接寻址中的寄存器通常用寄存器 名,并在其前后加上符号 ( ) 或 [ ] 。 例如: AND R1 , (R2) , R3 ; MOV AX , [ BX ] ;

寄存器间接寻址的三地址指令的格式为:

Page 30: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

op1 为操作码,表示执行的操作; Rd 为存放目的操作数的寄存器,指令中以寄存器的编号表示; Rs1 为存放内存操作数的存储单元地址的寄存器 ,指令中给出寄 存器的编号; Rs2 为一个存放源操作数的寄存器;指令中以寄存器的编号表示;

该指令功能是: mem [ ( Rs1 ) ] OP1 (Rs2) Rd

例:指令 AND R1 ,( R2 ), R3 ,

指令功能为 mem [ ( R2 ) ] AND ( R3 ) R1

编号 R2 的寄存器中的内容( R2 )为内存地址,取出该地址对应的 内存单元中的内容是一个源操作数,表示为 mem [ ( R2 ) ] ,这个 源操作数的寻址方式为寄存器间接寻址。

Page 31: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5. 存储器间接寻址 指令中给出的地址码字段 A 是存放操作数地址的存储单元的地址, 即操作数地址的地址。 寻址过程示意图如下:

指令中,地址码字段 A 給出内存地址,由 A

找到内存单元 2 ,取出其内容 X ,再以 X 为地址 找到内存单元 1 ,该内存单元 1 中存放的数即参 予操作的操作数。

存储器间接寻址方式的寻址能力很强,但由于多次访问存储器而影 响指令执行的速度。 在汇编语言指令中,内存地址 A 用数字加上符号 ( ) 或 @( )表示。

Page 32: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例如:指令 ADD R2 , ( 2000 ) 、 AND R1, @ ( R2 ) , R3

存储器间接寻址的三地址指令的格式为:

op1 为操作码; Rd 、 Rs2 为存放目的操作数、源操作数的寄存器,指令中均以寄存 器的编号表示; Rs1 为存放操作数地址的存储单元的地址的寄存器 ,指令中给出寄 存器的编号;

该指令功能是: mem [mem ( Rs1 ) ] OP1 (Rs2) Rd

Page 33: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例: 指令 AND R1 , @ ( R2 ), R3 ;

指令功能为: mem [mem ( R2 ) ] AND (R3) R1

指令中, Rs2 字段为寄存器 R3 的编号,由此字段可找到对应的寄存 器 R3 ,从该寄存器中取出内容 ( R3 )为一个源操作数; Rd 为存放目的操作数寄存器 R1 的编号 ; Rs1 字段为寄存器 R2 的编号,由此编号找到对应的寄存器 R2 ,从该寄存器中取出内容( R2 )为 A 即一级内存操作数的地址, 可从内存地址 A 的内存中取出操作数地址 X ,然后再由地址 X 的内 存单元取出参加运算的操作数。

由 Rs1 字段给出的 R2 二次寻址求得内存操作数 mem [mem ( Rs1 ) ]

作为一个源操作数,这个源操作数的寻址方式即为存储器间接寻址。

Page 34: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

6. 变址寻址 操作数在内存中,操作数的地址由两部分组成:一 是寄存器中的 数据,二是指令中給出的一个地址码,两者相加之和即为存放操作数的内

存单元地址。 寻址过程示意图如下:

指令中, R 字段为寄存器号, A 为 一个立即数的代码,操作数的地址为( R ) + A , 当寄存器中的内容进行加 1 或减 1 操作后寻址时,可以用来对一个内存数组进行访问。 在汇编语言指令中,变址寻址操作数的表示通常为 A ( R ) 或 [R+A] 。 例如:指令 ADD R2 , 100 ( R1 ) 。 ADD R2 , [R1+100]

Page 35: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

7. 基址寻址 操作数在内存中,操作数的地址由两部分组成:一是寄存器中的数 据,二是指令中給出的一个地址码,两者相加之和即内存操作数的地 址。若寄存器中的数值是固定的,而地址码的值是可变化的,这种寻 址方式称为” 基址寻址 “。 基址寻址与变址寻址的指令在形式上相似,其区别是变址寻址中, R 中的值是可变 的;而基址寻址中, R 中的值是固定的。 8. 相对寻址 操作数在内存中,操作数的地址是程序计数器 PC值加上一个偏移量 A ,而该偏移量在指令代码中,这种寻址方式称为”相对寻址”。 寻址过程示意图如下:

Page 36: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

A 可以为正值,也可以为负值。通常 A 值小于内存地址值; 操作数的地址为 PC+A ; 所以相对寻址能以较短的地址码来访问内存。 在汇编语言指令中,一般用 A( PC ) 表示操作数的地址。 例: ADD A , 2000H ( PC )

指令功能为: ( AC ) + mem [ (PC)+2000H ] AC

Page 37: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

9. 隐含寻址 指令中不给出操作数,根据指令中操作码即可确定操作数的存储 位置,操作数隐含在操作码中,这种寻址方式称为”隐含寻址”。 例:指令 PUSH AX 源操作数是 AX ,目的操作数为堆栈指针 SP 指出的内存单元, 是隐含的。 在大多数计算机中,累加器 A 、 AL 与 AX 常用作隐含寻址中的操 作数。 例: 指令 ADD #3 该指令中源操作数为立即数 3 ,目的操作数为 A 是隐含的。 例: 指令 MUL BL 乘数为 BL ,被乘数为 AL ,也是隐含的。

Page 38: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.2 介绍两类指令系统 5.2.1 80x86 系列指令系统 80x86 及其兼容芯片是应用最多的处理器芯片,属于 CISC 型的指令 系统。 8086 指令是变字长指令,不同指令的操作码和寻址方式不同,指 令长度也不一致,每条指令由 1 ~ 6 个字节组成。以 8086CPU 为例说明 CISC芯片分析指令编码的特点。

最常用的两操作数的传送、加、减、与、或指令的编码格式如图 所示。

操作码 —— 反映该指令的功能 ; 类型 —— 反映操作数的类型(字长等); 寻址方式 —— 反映操作数的寻址方式,寄存器操作数的编码也在 其间;

Page 39: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

操作数 —— 操作数中的立即数、内存操作数中的位移量部分。 对于实现“寄存器与寄存器,寄存器与存储器之间”的上述操作的指 令而言, 上述 8086 指令编码格式可细化为以下图所示的格式。

第一字节第一字节中 6 位 OPCODE 可表示 64 个不同的操作 ; D 位表示数据传送的方向: D=0 ,寄存器为源操作数, D=1 ,寄存器 为目的操作数 ; W 位表示操作数是字还是字节: W=1 ,为字操作, W=0 ,为字节操作

第二字节第二字节中 3 位 REG 字段的编码如表 :

Page 40: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

两个操作数中有一个是寄存器,其编码由上表所示;另一个是寄存器或是存储器,其指令代码由第二个字节中的 MOD 字段和 R/M 字段决定,如下表所示。

MOD = 00 、 01 和 10 时,另一操作数为存储器操作数; MOD = 11 时,另一操作数为寄存器操作数;

Page 41: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

MOD = 00 时 R/M = 000 ~ 011 :为不带位移量的基址变址寻址 100 、 101 和 111 :为不带位移量的寄存器间接寻址 110 :为直接寻址

Page 42: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

MOD = 01 时, R/M = 000 ~ 011 :为带 8 位位移量的基址变址寻址 100 ~ 111 :为带 8 位移量的寄存器间接寻址 MOD = 10 时, R/M = 000 ~ 011 :为带 16 位位移量的基址变址寻址 100 ~ 111 :为带 16 位移量的寄存器间接寻址 MOD = 11 时,另一操作数为寄存器操作数: 8 位寄存器为 AL 、 BL 、 CL 、 DL 、 AH 、 BH 、 CH 和 DH

16 位寄存器为 AX 、 BB 、 CX 、 DX 、 SP 、 BP 、 SI 和DI

Page 43: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 5-1 查表写出指令 MOV [BX + 2340H] , AX 的机器指令。 解: 源操作数 AX 为寄存器,目的操作数 [BX +2340H] 为存储器操作数。 该指令为 16 位操作; 机器指令共4 字节, MOV 指令的操作码为 100010 ,各字段的取值分别为: D=0 ; W=1 第 2 字节中 MOD = 10 ; REG = 000 ; R/M

= 111 , 指令机器码为:

为书写方便,机器指令可以十六进制数表示为: 89874023H

Page 44: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 5-2 查表写出指令 ADD [BX +2340H] , AX 的机器指令。 解:只需改变操作码即可,加法指令的操作码为 000000 ,其余字段 不变。 则该指令的机器码如下:

指令的十六进制数机器码为: 01874023H

Page 45: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 5-3 查表写出指令 AND [BX +2340H] , AX 的机器指令 。

解:只需改变操作码即可,该指令的操作码为 001000 ,其余字段不变。 则该指令的机器码如下:

指令的十六进制数机器码为: 21874023H

Page 46: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 5-4 查表写出指令 SUB [BX +2340H] , AX 的机器指令。 解:只需改变操作码即可,该指令的操作码为 001010 ,其余字段不变。

则该指令的机器码如下:

指令的十六进制数机器码为: 29874023H

Page 47: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

例 5-5 查表写出指令 MOV [BX +2340H] ,1234H 的机器指令 。 解: 该指令是将 16 位数送内存 [BX +2340H] ; 源操作数为 16 位立即数 1234H ,机器码指令中增加了第 5 、 6 两字节 的立即数 1234H ,由于源操作数为 16 位立即数,操作码为 7 位: 1100011 该指令为 6 字节指令,其机器码如下:

指令的十六进制数机器码为: C78740233412H

Page 48: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.2.2 MIPS处理器的指令系统 1. MIPS处理器 MIPS处理器是 MIPS技术公司推出的一种 RISC芯片。自1986年来陆续 推出 R2000处理器、 R3000处理器、 R8000 、、 R10000 、和R12000等型号 处理器。 MIPS处理器的主要特征: (1) 指令系统简单; (2) 采用流水技术,依靠优化编译器进行指令序列的重新安排,以 防止流水线中出现的相互冲突; (3) 使用较多寄存器, 32 个通用寄存器、一对存储 64 位数据的寄存 器 Hi,Lo 以及异常 PC 寄存器 epc 。 32 个通用寄存器分别表示为 $0到 $31 ,其中 $0 固定为 0 。 Hi,Lo 寄存器用于存放定点乘法的结果。

Page 49: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

(4) 采用“比较与转移”指令,比较和转移这两个动作在一条指令内 便可完成,如 beq $1, $2, 1000 。 (5) 没有状态寄存器。

2. MIPS 系列微处理器的指令系统 MIPS处理器指令系统的主要特点是 MIPS处理器的指令系统简单; 采用 32 位字长的等字长指令; ( 1 ) 指令格式有三种——寄存器型( R 型)、立即数型( I型)和转移 型( J型): ◆ R 类型的指令:该类型指令从寄存器堆中读取两个源操作数,计 算结果写回寄存器堆; ◆ I类型的指令:该类型指令使用一个 16 位的立即数作为一个源操 作数;

Page 50: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

◆ J类型的指令:该类型指令使用一个 26 位的立即数作为跳转的目 标地址; 三类指令格式为:

rs : 源操作数 1 的寄存器编号; rt : 源操作数 2 的寄存器编号; rd : 目的操作数的寄存器编号; shamt : 移位次数(移位指令); funct : 功能码,操作码的扩展,指定操作类型; immediate :立即数; target : 目标地址;

Page 51: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

( 2 )从操作功能分, MIPS 的指令种类有:

算术运算指令 ; 逻辑运算指令 ; 数据传送指令 ; 条件转移指令 ; 无条件跳转指令 ; 特殊指令 ; 异常指令 ; 协处理器指令等;

Page 52: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.3 指令流程 5.3.1 指令执行过程 组成计算机程序的指令序列存放在主存储器中。计算机执行程序的 过程就是按序从主存储器取出指令然后执行指令的过程。 CPU 执行指令的过程分为:取指令、指令分析、指令操作执行等三个 阶段: ( 1 )取指阶段 除转移类指令外,程序中的指令是按顺序执行的, CPU 按 PC (存 放待取指令在主存中的地址)中的地址从主存中取出指令,当取出一 条指令后, PC 中内容更新为下一条指令的地址(实际过程是 CPU 每从 主存中取出一个指令字节, PC 中的内容就自动加 1 ,若一条指令为4 个 字节,则取出该指令后, PC+4 ,指向下一条指令地址),

Page 53: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

若取出的指令为转移类指令(转移指令、调用指令和返回指令) , 执行该类指令时,将转移的目标地址送 PC ,以使 CPU 能取出并执行 目标地址的指令。 ( 2 )指令分析(译码)阶段 在取指阶段,主存中取出的指令经数据寄存储器 DR ,存入指令 寄存器 IR 中。在本阶段将指令送指令译码器 ID译码、分析、识别, 产生同该指令相对应的指令信号,经操作控制器(协同时序产生 器),产生执行该指令所需要的满足一定时序关系的一组操作控制 信号。 ( 3 )执行操作阶段 完成指令规定的各种操作,形成稳定的运算结果,并将其存储 起来。

Page 54: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.3.2 三种周期在指令执行过程中,涉及到三种周期的时间概念:(1) 指令周期

指从一条指令的启动到下一条指令的启动的间隔时间。 亦即 CPU 执行一条指令所需要的全部时间,包括取指令、译码和 执行指令所需的时间。 指令周期的长短取决于指令的功能。不同指令的指令周期的长短 不一样,例如访内指令的指令周期会大于非访内指令。 (2) 机器周期 ( 又称 CPU周期 )

一条指令的执行需要经过若干个操作阶段。机器周期是指令执行 中每一步操作所需的时间。 一般用 CPU完成一个运算操作所需时间作为机器周期的基本时间, 代表大多数指令操作步骤的时间。

Page 55: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

通常以从主存中读取一个指令字的最短时间规定为机器周期。 (3) 时钟周期 时钟周期是 CPU 主频的周期(通常称为节拍脉冲或 T 周期),它 是 CPU处理操作的最基本单位。

三种周期的关系通常可表示为: 早期的早期的 CPUCPU 而言: 一个指令周期由若干个机器周期组成,机器周期的个数随指令 不同而不同; 一个机器周期又包含若干个时钟周期; 近代近代的新型计算机的 CPUCPU 采用了并行处理技术,使 CPU 的平均指 令周期可以小于一个时钟周期。

Page 56: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.3.3 典型的 CPU 结构类型 指令执行过程和 CPU 的类型及具体指令的类型有关。介绍典型的单总线 结构类型的 CPU 。

11 、、 CPU 的单总线结构 一种单总线结构如左图示意图所示。

R0~Rn-1 : n 个通用寄存器 GR ,是一种多累加 器结构。 R0~Rn-1 中任一个都可作为源操作 数和目的(结果)操作数; ALU :算术逻辑部件,输入端 A 由寄存器 Y 输入,输入端 B 直接来自内部总线,可由其它送入总线的寄存器提供, ALU 的输出送寄存器 Z ,通过内部总线 BUS 送目的寄存器(由指令指定);

Page 57: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

SR : 状态寄存器,保存运算结果的有关标志位; MAR :主存地址寄存器,存放被访问信息在主存中的地址; MDR :主存数据寄存器,存放从主存取出的信息以及欲写入主存的信 息; ABUS 、 DBUS : CPU 同主存之间的地址总线和数据总线即芯片总线 (片总线); IR :指令寄存器,主存取出的指令代码经MDR 存于其中; ID :指令译码器, 由 IR 送指令译码器 ID译码; 操作控制器:指令由 ID译码后送入,操作控制器根据 ID 送来的指令信 号和时序产生器输出的时序信号,产生指令执行时所需要 的操作控制信号 C0~Ci-1 ; C0~Ci-1 :共 i个操作控制信号,按指定时序送 CPU 、主存和 I/O 接口中的 相关部件,以完成指定的数据处理;

Page 58: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

总线 BUS :是寄存器与寄存器、寄存器与 ALU 之间传送信息的公共通路, 这一通路在 CPU 中称为“数据通路”,这是一种称为单总线的数 据通路。 在任一时刻,总线上可以有多个部件同时接收数据,但只能 有一个部件向同一条总线发送数据,否则会在总线上产生总 线冲突,因此必须对连接到总线上的各部件(寄存器等)进 行输出端控制。

2 、 控制信号 CPU 中各部件信息的输入和输出除输入输出的数据信号外,还需要 有相应的输入控制信号和输出控制信号这些控制信号包括:

Rnout : Rn 寄存器的输出控制信号,当 Rnout 有效时, Rn 中的数据输出 到总线;( n=0 , 1 , 2 ,…)

Page 59: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

Rnin : Rn 寄存器的输入控制,当 Rnin 有效时,总线上的数据输入Rn ;

IRout: IR 的输出控制,当 IRout 有效时, IR 上数据输出到总线;

IRin : IR 的输入控制,当 IRin 有效时,总线上数据输入 IR ;

PCout: PC 的输出控制,当 PCout 有效时, PC 上数据输出到总线;

PCin : PC 的输入控制,当 PCin 有效时,总线上数据输入PC ;

Yin : Y 寄存器的输入控制,当 Yin 有效时,总线上数据输入Y ;

PC+1 : PC 寄存器更新控制,当 PC+1 有效时, PC值增量; MARin: MAR输入控制,当 MARin 有效时,总线上地址信息送入MAR ;

MDRout: MDR输出控制,当 MDRout 有效时, MDR 上数据输出到总线;

MDRin: MDR输入控制,当 MDRin 有效时,总线上数据送入MDR ;

Zout : Z 寄存器的输出控制,当 Zout 有效时, Z 上数据输出到总线;

Page 60: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

ADD : ALU 加法操作控制, ADD 有效时 ALU 对 A 、 B 两端输入数据进行加法运算;

Read :读主存信号,当 Read 有效时, CPU读主存; Write :写主存信号,当 Write 有效时, CPU写主存;

Page 61: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

5.3.4 指令流程举例——单总线结构 CPU 分析基于图5-13所示的单总线结构 CPU 的指令流程。

1. 运算指令的执行过程

① 送指令地址 指令地址在 PC 寄存器中,首先把 PC值送存储地址寄存器 MAR ,并从此 地址读内存。 PC→MAR 读存储器( read )

指令: ADD R3 , R1 , R2 ; ( R1 ) +( R2 )→ R3

② 计算下一条指令的地址 下一条指令地址 = 当前 PC值 + 当前指令字节数 ; 若取单字节指令 ( 下面的指令都是单字节指令 ) , 则 PC+1→PC ③ 读入指令 指令代码从内存储器中读出,通过 DBUS 送 CPU 进行译码以决定该指令 的操作。

Page 62: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

DBUS→MDR→IR

⑥ 结果送指定寄存器 R3

Z→R3

④ 源操作数寄存器 R1 送 ALU 的输入寄存器 Y R1→Y 通过单总线

⑤ 源操作数寄存器 R2 送 ALU 的输入,同 Y 相加输出到 ALU 寄存器 Z

R2+Y→Z

若有一个源操作数是内存操作数,则在第④步中还需进行一次访存— 读内存操作; 若运算结果要求存放在某一内存单元,则在第⑥步也需有一次访存— 写内存操作。

Page 63: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

Page 64: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

2. 访问存储器指令的执行过程 ( 1 )读存储器指令 指令: LOAD R1 , mem ; ( mem )→R1 , mem 为内存地址值,以 mem 为地址的内存单元中的数据送寄存器 R1 。

② 指令读入译码 DBUS→MDR→IR 译码

① 取指令 PC→MAR 读存储器( read ) PC+1→PC

③ 计算地址,读内存 IR (地址段)→MAR 读存储器( read ); DBUS→MDR

Page 65: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

④ 写回,存结果 MDR→R1

① 取指令 PC→MAR 读存储器( read ) PC+1→PC

( 2 )写存储器指令 指令: STORE R1 , mem ; R1→(mem) , R1 内容存入以mem

为地址的内存单元。

③ 计算地址 写内存 IR (地址段)→MAR

R1→MDR 写存储器( write ) 在写存储器时, CPU 通过 IR (地址段)→MAR提供内存地址,通过 R1→MDR提供写入的数据。

② 指令读入译码 DBUS→MDR→IR 译码

Page 66: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

3. 控制指令的执行过程

② 指令读入译码 DBUS→MDR→IR 译码

指令: BR offs ; PC+offs→PC , offs 为相对转移地址 ① 取指令 PC→MAR 读存储器( read ) PC+1→PC

③ 计算地址 PC→Y , Y+IR (地址段 offs )→ Z

④ 转移 Z→PC

上述各指令执行时所需的控制信号如下表所示。上述各指令执行时所需的控制信号如下表所示。

Page 67: 主讲教师     丁纪凯

计 算 机 组 成 原 理 第 5 章

单总线结构 CPU 的指令流程

Page 68: 主讲教师     丁纪凯