109

Click here to load reader

第 4 章 指令系统和控制器部件

  • Upload
    quang

  • View
    203

  • Download
    7

Embed Size (px)

DESCRIPTION

第 4 章 指令系统和控制器部件. 4.1 指令系统. 4.2 控制器部件. 指令:. 是指示计算机执行基本操作的命令 。 指令也是用户使用计算机的最小功能单位。. 从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。. 微指令: 是微程序级的命令,它属于硬件; 宏指令: 是由苦干条机器指令组成的软件指令,它属于软件; 机器指令: 则介于微指令与宏指令之间,通常简称为指令。每一条指令可完成一个独立的算术运算或逻辑运算操作。 本章所讨论的指令是机器指令。. 指令系统:. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 4 章 指令系统和控制器部件

第第 44 章 指令系统和控制器部章 指令系统和控制器部件件

4.1 4.1 指令系统指令系统4.2 4.2 控制器部件控制器部件

Page 2: 第 4 章 指令系统和控制器部件

指令: 是指示计算机执行基本操作的命令。指令也是用户使用计算机的最小功能单位。

从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。

Page 3: 第 4 章 指令系统和控制器部件

微指令:是微程序级的命令,它属于硬件;宏指令:是由苦干条机器指令组成的软件指令,它属于软件; 机器指令:则介于微指令与宏指令之间,通常简称为指令。每一条指令可完成一个独立的算术运算或逻辑运算操作。 本章所讨论的指令是机器指令。

Page 4: 第 4 章 指令系统和控制器部件

指令系统:

  一台计算机支持 (或称使用 )的全部指令的集合构成该计算机的指令系统。

  由于指令与计算机的性能以及硬件结构密切相关,所以不同系列、不同型号的计算机其指令系统是不一样的。

Page 5: 第 4 章 指令系统和控制器部件

4.1 4.1 指令系统指令系统 指令的基本格式 指令格式的优化 寻址方式 指令系统举例 Th-union 汇编语言程序设计

Page 6: 第 4 章 指令系统和控制器部件

一、指令的格式

  任何一条机器指令由一组有意义的二进制代码构成,称为一个指令字。

1 、机器指令

0000000000000000000100010010001000000001000000010001000100100010

用机器指令编写的程序是计算机惟一能够直接识别并执行的程序,称为机器语言程序。机器语言程序被称为目标程序 (目标代码)。

Page 7: 第 4 章 指令系统和控制器部件

机器直接执行,速度快。 缺点:与机器硬件直接相关,通用性差;

编程不直观、难以记忆、使用很不方便。

机器语言的特点机器语言的特点

Page 8: 第 4 章 指令系统和控制器部件

为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用符号代替操作数的存放地址等,这样就形成了汇编指令。 例:机器指令: 0000011100100001 汇编指令: MVRR R2 , R1 用汇编指令编写的程序称为汇编源程序。  一条机器指令对应一条汇编指令。用汇编指令编写程序就直观方便得多。

Page 9: 第 4 章 指令系统和控制器部件

用汇编语言编写程序及执行的过程

程序员程序员MVRR R0 , R1

ADD R0 , R3

MVRR R0 , R1

ADD R0 , R3

汇编程序汇编程序1000100111011000

1000100111011000

执行执行

汇编语言指令汇编语言指令 机器指令代码机器指令代码

(翻译)(翻译)

Page 10: 第 4 章 指令系统和控制器部件

高级语言

汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。

Page 11: 第 4 章 指令系统和控制器部件

(1) 用C语言实现: Main ()

{ int a, b, sum;

a=123; b=456;

sum=a+b

}

例如:编程实现 123 加 456 → 求和

Page 12: 第 4 章 指令系统和控制器部件

(2) 用 8086 汇编语言实现: a dw 123

b dw 456

sum dw ?

Code segment

assume CS: Code, DS:Data

Main:mov ax,data

mov ds,ax

mov ax, a

add ax, bmov sum , axmov ax, 4c00h

int 21h

Main endp

Code ends

end main

Page 13: 第 4 章 指令系统和控制器部件

(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

Page 14: 第 4 章 指令系统和控制器部件

三种语言编写程序占用字节数

程序设计语言 可执行程序占用字节数

高级语言 ( C )

CSUM.EXE 4330

汇编语言 ASMSUM.COM 21

机器语言 MACHINE.COM 21

Page 15: 第 4 章 指令系统和控制器部件

操作码操作码 操作数地址码操作数地址码

  任何一条机器指令由一组有意义的二进制代码构成,称为一个指令字。

其基本格式可划分成二个部分:

2. 指令的基本格式

表明操作数存放的位置,以便找到操作数完成指令的功能。

规定指令完成规定指令完成何种功能。何种功能。

Page 16: 第 4 章 指令系统和控制器部件

Th-union 的机器指令 汇编指令的机器指令 汇编指令  

例如:例如:

00000000000000000001000100100010 ADDADD R1 R1 ,, R2R200000001000000010001000100100010 SUBSUB R1 R1 ,, R2R200001001000010010011001100000000 INCINC R3 R310001000100010000001000100000000 MVRDMVRD R1 R1 ,, 0000

555500000000000000000101010101010101

指令的操作码字段

指令的操 作数字段

00 00 55 55

Page 17: 第 4 章 指令系统和控制器部件

1 )操作码

定长操作码

变长操作码

在指令系统中,每一条指令都有唯一确定的操作码。

  分二种形式:

Page 18: 第 4 章 指令系统和控制器部件

a. 定长操作码形式

  在指令字中,操作码字段的位数和位置是固定的。

  早期的计算机一般采用定长操作码的设计,控制简单,且对操作码的译码实现容易。

Page 19: 第 4 章 指令系统和控制器部件

IBM 360/370 操作码是八位的:    00000000~ 11111111 该指令系统最多可有多少条指令?

Th-union 操作码是八位的: 00000000~ 11111111 该指令系统最多可有 256 条指令。

例如:

256256

Page 20: 第 4 章 指令系统和控制器部件

RRRR型型

OPCOPC R1 R1 R2R2

8 4 4 8 4 4

RSRS型型

OPCOPC Rn Rm B DRn Rm B D 8 4 4 4 128 4 4 4 12

RXRX型型

OPCOPC R1 X2 B2 D2R1 X2 B2 D2 8 4 4 4 128 4 4 4 12

SISI 型型 OPCOPC I2 B1 D2I2 B1 D2 8 4 4 128 4 4 12

SSSS 型型 OPCOPC L B1 D1 B2 D2L B1 D1 B2 D2 8 8 8 8 4 4 12 4 1212 4 12

IBM 360/370 IBM 360/370 计算机的指令格式计算机的指令格式Ri :通用寄存器

Xi :变址寄存器

Bi :基址寄存器

Di :位移量

I: 立即数

L: 数据的长度

Page 21: 第 4 章 指令系统和控制器部件

定长操作码的特点 优点:有利于简化硬件设计,提高

指令译码的速度和指令执行的速度。

缺点:限制了指令系统的扩充、 不利于缩短指令的长度,存在有很大程度的信息冗余 。

Page 22: 第 4 章 指令系统和控制器部件

b. 变长操作码形式  指令系统中,各指令的操作码字段位数不等长。

例: PDP-11 小型机的指令系统 其指令长度为 16位,操作码字段的长

度有4、7、 10、 13 、 16 等不同的情况。

Page 23: 第 4 章 指令系统和控制器部件

ModMod RiRi ModMod RjRj OPOP

四位 六位 六位四位 六位 六位

RiRi ModMod RjRj OPOP (( 77 ))

ModMod RjRj OPOP (( 1010 ))

RjRj OPOP (( 1313 ))

OPOP (( 1616 ))

为增加操作码长度,采用 —— 操作码逐段扩展技术

Page 24: 第 4 章 指令系统和控制器部件

变长操作码的特点

优点:可方便扩充指令系统有利于缩短指令操作码的平均长度。

缺点:指令译码的控制复杂,硬件电路复杂。

Page 25: 第 4 章 指令系统和控制器部件

2) 地址码的设计和安排  按照指令中地址码字段给出的地址的个数的不同,

无地址指令(零地址指令)

一地址指令(单地址指令)

双地址指令

多地址指令

有四种情况 :

Page 26: 第 4 章 指令系统和控制器部件

Th-unionTh-union 的机器指令 汇编指令的机器指令 汇编指令 

00000000000000000001000100100010 ADD R1ADD R1 ,, R2R200000001000000011000100010011001 SUB R8SUB R8 ,, R9R900001001000010010011001100000000 INC R3INC R310001000100010000001000100000000 MOV R1 MOV R1 ,, 00550055

HH00000000000000000101010101010101

Page 27: 第 4 章 指令系统和控制器部件

a. 无地址指令 (零地址指令 )

有二种情况: 指令不需要任何操作数。

例:例: NOPNOP、、 HALTHALT

操作数为隐含的,或操作数地址是默认的。 例:例: PUSHFPUSHF、、 POPFPOPF

操作码操作码格式 :

Page 28: 第 4 章 指令系统和控制器部件

b. 一地址指令 (单地址指令 )

操作码操作码 地 址 码地 址 码

只有一个地址码,用于单操作数指令。 例:例: INCINC 、、 SHLSHL 、、 JMPJMP 、、 CALLCALL

或者双操作数指令,但其中一个操作数的地址为默认值。 例:例: MULMUL 、、 DIVDIV

格式 :

Page 29: 第 4 章 指令系统和控制器部件

c. 双地址指令

地址码地址码 22 地址码地址码 11 操作码 操作码

地址码1既是地址码1既是源操作数源操作数的地址,也是的地址,也是目目的操作数的操作数的地址。的地址。 双操作数在运算类、传送类指令中使用双操作数在运算类、传送类指令中使用较多。 较多。 ADD DR, SR

格式 :

Page 30: 第 4 章 指令系统和控制器部件

d. 多地址指令 地址码地址码 33 地址码地址码 22 地址码地址码 11 操作码 操作码

地址码地址码 44地址码地址码 33地址码地址码 22 地址码地址码 11 操作码  操作码

特点:操作完成后源操作数的内容不被破坏,用户编程方便。严重的缺点是指令字较长。

格式1 :

格式2 :

Page 31: 第 4 章 指令系统和控制器部件

3) 指令字长度 机器指令的二进制序列的位数。

定长指令变长操作码

变长指令定长操作码

Page 32: 第 4 章 指令系统和控制器部件

例:某机指令系统,指令字为 16位固定长,要求有3地址指令、2地址指令、1地址指令和0地址指令,每个地址码4位。应如何设计?

a. 定长指令变长操作码 该种形式是将操作码的设计与地址码的设计作为一个整体考虑,以形成高效合理的指令编码。

Page 33: 第 4 章 指令系统和控制器部件

设计方案为:设计方案为: 三地址指令采用三地址指令采用44位操作码位操作码

00000000 ~ ~ 11101110 双地址指令采用双地址指令采用88位操作码 位操作码

1111111100000000 ~ ~ 1111111111101110 一地址指令采用一地址指令采用 1212 位操作码位操作码

111111111111111100000000 ~ ~ 111111111111111111101110 无地址指令采用无地址指令采用 1616 位操作码位操作码

11111111111111111111111100000000 ~ ~ 11111111111111111111111111111111

Page 34: 第 4 章 指令系统和控制器部件

00000000 XXXXXXXX XXXXXXXX XXXXXXXX~~

44 位位操作操作

码码(3(3 地址指令地址指令 1515条条 ))11101110 XXXXXXXX XXXXXXXX XXXXXXXX

88 位位操作操作

码码~~ (2(2 地址指令地址指令 1515

条条 ))

11111111 00000000 XXXXXXXX XXXXXXXX11111111 11101110 XXXXXXXX XXXXXXXX

~~ (1(1 地址指令地址指令 1515条条 ))

11111111 1111 00001111 0000 XXXXXXXX11111111 1111 11101111 1110 XXXXXXXX

1212 位位操作码操作码

~~ (0(0 地址指令地址指令 1616条条 ))

11111111 1111 1111 1111 1111 0000000011111111 1111 1111 1111 1111 11111111

1616 位位操作码操作码

Page 35: 第 4 章 指令系统和控制器部件

练习:  设某机为定长指令字结构,指令长度 12位,每个地址码占3位,试提出一种方案,使该系统包含4条三地址指令,8条二地址指令,180 条单地址指令。  另:能否构成三地址指令4条,单地址指令 255 条,零地址指令 64条呢?

Page 36: 第 4 章 指令系统和控制器部件

指令字的长度与机器字长没有固定的关系。指令字的长度与机器字长没有固定的关系。

b. 变长指令定长操作码

例: IBM360/370 指令的操作码是8位的, 指令字为 16 位、 32 位、 48 位。

TH-union 指令的操作码是 8位的, 指令字为 16 位 .

Page 37: 第 4 章 指令系统和控制器部件

Th-unionTh-union 的指令格式的指令格式

单字指令仅用一个指令字。 双字指令要用两个指令字 , 此时第二个

指令字的内容可能是立即数、一个绝对地址或一个变址位移量。

I/O I/O 端口地址端口地址 条件转移指令的偏移量条件转移指令的偏移量

直接数 直接数 / / 内存地址 内存地址 / / 指令中变址偏移指令中变址偏移量量

操 作 码操 作 码 目的寄存器目的寄存器 源寄存器源寄存器 88 位 位 44 位 位 44 位位

Page 38: 第 4 章 指令系统和控制器部件

Th-unionTh-union 的机器指令 汇编指令的机器指令 汇编指令 

00000000000000000001000100100010 ADDADD R1R1 ,, R2R200000001000000010001000100100010 SUBSUB R1R1 ,, R2R200001001000010010011001100000000 INCINC R3R310001000100010000001000100000000 MVRDMVRD R1R1 ,, 0000555500000000000000000101010101010101

Page 39: 第 4 章 指令系统和控制器部件

二、指令格式的优化定义 : 缩短指令字的长度方法 : 地址码优化 操作码优化 (这是本节主要讨论的 )优化目标 :

节省程序的存储空间 指令格式规整 ,易于译码 保持指令的执行速度

Page 40: 第 4 章 指令系统和控制器部件

Huffman Huffman 编码法编码法码长码长理论值:理论值:

其中, Pi 表示第 i种操作码在程序中出现的概

率 ( 使用频度 ), n为操作码的种数。

HH = ∑p = ∑pi i •• loglog22 p pii

nn

i=1i=1

11

Page 41: 第 4 章 指令系统和控制器部件

若采用3位固定长度操作码,信息冗余量:

R = ( 3-R = ( 3-1.951.95 ) / 3 ≈ 35 %) / 3 ≈ 35 %

其中: 1.95 为哈夫曼编码法的理论值

Page 42: 第 4 章 指令系统和控制器部件

模型机的指令操作码哈夫曼编码法

指令 Pi Huffman 编码 码长 I1I1 0.450.45 00 11 I2I2 0.300.30 1010 22 I3I3 0.150.15 110110 33 I4I4 0.050.05 11101110 44 I5I5 0.030.03 1111011110 55 I6I6 0.010.01 111110111110 66 I7I7 0.010.01 111111111111 66

Page 43: 第 4 章 指令系统和控制器部件

LL == 0.450.45 XX 11 ++ 0.300.30 XX 22

++ 0.150.15 XX 33 ++ 0.050.05 XX 44

++ 0.030.03 XX 55 ++ 0.010.01 XX 66

++ 0.010.01 XX 66

== 1.971.97(( 位位 ))

所以,平均码长接近理论值!

Page 44: 第 4 章 指令系统和控制器部件

信息冗余量:

R =1.97-1.95

1.97= 1.02% << 35%

Page 45: 第 4 章 指令系统和控制器部件

例:某计算机有例:某计算机有 1010 条指令,它们的使用频率分别为条指令,它们的使用频率分别为 ::0.30, 0.20, 0.16, 0.09, 0.08,0.30, 0.20, 0.16, 0.09, 0.08,

0.07, 0.04, 0.03, 0.02, 0.010.07, 0.04, 0.03, 0.02, 0.01 。。用用 HuffmanHuffman 编码对它们的操作码进行编码,并计算平编码对它们的操作码进行编码,并计算平均代码长度。均代码长度。

Huffman 编码通过采用 huffman树进行,如下所示:

Page 46: 第 4 章 指令系统和控制器部件

0.15

1.00

0.39

0.19

0.10

0.06

0.03

0.31

0.61

0.01 0.02 0.03 0.04 0.07 0.08 0.09 0.16 0.20 0.30

Huffman 树结构

11

11

11

11

11

11

11

11

11

0

00

0

00

0

00

00

0000

Page 47: 第 4 章 指令系统和控制器部件

Huffman 编码的结果以及各编码的长度如下所示:0.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.010.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 00000011 01 101 001 1001 1000 0001 00001 000001 000000 2 2 3 3 4 4 4 5 6 62 2 3 3 4 4 4 5 6 6

平均代码长度为平均代码长度为 (0.30+0.20)×(0.30+0.20)×22 1.001.00 ++(0.16+0.09)×(0.16+0.09)×33 0.750.75 ++(0.08+0.07+0.04)×(0.08+0.07+0.04)×44 0.760.76 ++ 0.03× 0.03×55 0.15 0.15 ++(0.02+0.01)×(0.02+0.01)×66 0.180.18== 1 + 0.75 + 0.76 + 0.15 + 0.18 1 + 0.75 + 0.76 + 0.15 + 0.18 == 2.842.84

Page 48: 第 4 章 指令系统和控制器部件

哈夫曼编码的优点 :平均长度最短信息冗余量最小

哈夫曼编码的缺点 : 操作码种类多,译码复杂。

Page 49: 第 4 章 指令系统和控制器部件

模型机的指令操作码扩展编码法指令指令 PiPi 1-2-3-5 1-2-3-5 2-42-4 I1I1 0.450.45 00 0000 I2I2 0.300.30 1010 0101 I3I3 0.150.15 110110 1010 I4I4 0.050.05 1110011100 11110000 I5I5 0.030.03 1110111101 11110101 I6I6 0.010.01 1111011110 11111010 I7I7 0.010.01 1111111111 11111111

Page 50: 第 4 章 指令系统和控制器部件

例子中 1-2-3-5 编码法码长平均值 L = 0.45 × 1 + 0.30 × 2 + 0.15 × 3 + 0.05 × 5 + 0.03 × 5 + 0.01 × 5 + 0.01 × 5 = 2.00

与哈夫曼编码法相比,信息冗余量: R = (2-1.95)/2.00 = 2.5%

Page 51: 第 4 章 指令系统和控制器部件

例子中 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%

Page 52: 第 4 章 指令系统和控制器部件

设某机型需设计 100 条指令。试确定以下两种操作码设计方案的操作码长度。

1)采用定长操作码格式。

2)采用扩展操作码法。 (设 10℅的指令使用频度为 90℅)

思考:

Page 53: 第 4 章 指令系统和控制器部件

三、寻址方式寻址方式:指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。

不同的计算机系统,使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能也各不相同。

Page 54: 第 4 章 指令系统和控制器部件

1 、指令寻址顺序 ( PC ) + 1 PC

跳跃 由转移指令指出

LDA 1000ADD 1001DEC 1200JMP 7LDA 2000SUB 2001INCSTA 2500LDA 1100...

0123456789

PC+1

指令地址寻址方式指令地址 指令

顺序寻址1顺序寻址2顺序寻址3

跳跃寻址7顺序寻址8

Page 55: 第 4 章 指令系统和控制器部件

2 、数据寻址

约定 指令字长 = 存储字长 = 机器字长

形式地址 A操作码 寻址特征

通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。 在指令中给出的操作数的地址被称为形式地址,使用形式地址信息并按一定的规则计算出来的一个数值才是数据(或指令)的实际地址。

Page 56: 第 4 章 指令系统和控制器部件

运算器中寄存器的编号或专用寄存器名称(编号) 输入 / 输出指令中 I/O 设备的输入输出端口地

址 内存储器的一个存储单元 ( 或一 I/O设备 ) 的地

在指令的操作数地址字段,可能要指出:

在计算机的指令系统中,会有多种基本寻址方式和某些复合寻址方式 ,简介如下 :

Page 57: 第 4 章 指令系统和控制器部件

1) 直接寻址 在指令的地址码字段直接给出所需的操作数 (或指令 )在存储器中的地址。

存储器地址为操作数在存储器中的地址。或转移指令等用到的指令地址。

内存储

器 操作数 操作数

  操作码操作码        存储器地址存储器地址……

Page 58: 第 4 章 指令系统和控制器部件

例: MOV R1 , [0800]

0 0 0 00 0 0 0 1 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0

操作码 操作码 00010001 不用不用

特点是什么?特点是什么? 简单直观,执行速度快。

编程不灵活,访问空间有限。

Page 59: 第 4 章 指令系统和控制器部件

2)寄存器寻址

  操作码操作码          寄存器编号寄存器编号……

例如:例如: 00001100001100001000100010011001 SUBSUB R8R8 ,, RR99 01110101110100000011001100000000 INCINC R3R3

指令地址码字段给出某一通用寄存器的编号 (地址 ),且所需的操作数就在这个寄存器中,这就是寄存器寻址方式。

• 执行阶段不访存,只访问寄存器,执行速度快。• 寄存器个数有限,可缩短指令字长。

Page 60: 第 4 章 指令系统和控制器部件

3) 间接寻址方式

  若寄存器中存放的是操作数在内存中所在单元的地址,这就是寄存器间接寻址方式。

a. 通过寄存器的间接寻址方式

  OPOP                    Reg NoReg No……

Page 61: 第 4 章 指令系统和控制器部件

寄存器间接寻址示意图

  OPOP                01010101  ……

0000 0000 0000 0000 0000 0000 01110111

R5R5

0 0 0 0 0 0 7 H7 H

操作数操作数

……

……

……

0007000700060006

00080008

FFFFFFFF

00000000……

……

……

Page 62: 第 4 章 指令系统和控制器部件

(1)寄存器寻址与寄存器间接寻址的不同点

操作数所在位置不同

指令执行的速度不同

思考题

(2) 设计寄存器间接寻址的必要性

可有效缩短指令的长度

可方便程序处理的需要

Page 63: 第 4 章 指令系统和控制器部件

b. 通过存储器的间接寻址方式 指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为存储器间接寻址方式。

操作数

Addr1

特点: 比直接寻址灵活,并且可用指令中的短地址访问大的内存空间;取操作数需二次访问主存,降低了指令执行的速度。

OPOP                AddrAddr……

Page 64: 第 4 章 指令系统和控制器部件

4) 基址寻址方式 在计算机中设置一个专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。

基址寄存器基址寄存器 加法器加法器操作数操作数

存储

OPOP        dispdisp……

Page 65: 第 4 章 指令系统和控制器部件

例:例: disp = 18Hdisp = 18H,, [BS] = 5700H[BS] = 5700H 则操作数地址 则操作数地址 = 5718H= 5718H

主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。

Page 66: 第 4 章 指令系统和控制器部件

5)变址寻址方式 操作数的地址由指定的变址寄存器(由 Reg指定)的内容和指令中的地址码( Disp)相加得到。

通用寄存器通用寄存器 加法器加法器

存储器

操作操作数数

  OPOP               RegReg     DispDisp……

Page 67: 第 4 章 指令系统和控制器部件

例:例: Disp=18HDisp=18H,, Reg=5Reg=5 ,, R5)=5700HR5)=5700H 则操作数地址 则操作数地址 = 5718H= 5718H 便于对数组元素进行处理,此方式是计算机中常用的一种寻址方式。

Page 68: 第 4 章 指令系统和控制器部件

6)块 (串 ) 寻址方式 为了对数组运算提供更好的支持,采用该种寻址方式的指令中,要对整个数组实现某种运算,只需给出数组的首地址和末地址,这条指令执行一次,可对数组的全部元素完成某种运算操作。

此方式是现代计算机中广泛采用的一种寻址方式。

Page 69: 第 4 章 指令系统和控制器部件

7)隐含寻址方式 对于双操作数指令,如果事先约定参与运算的一个操作数固定存放在某个寄存器或某个存储单元中。指令中不直接给出某个操作数的地址,被称为隐含寻址方式。

Page 70: 第 4 章 指令系统和控制器部件

ADD A

操作数

主存寻址特征

AACC

暂存

ALU

另一个操作数隐含在 ACC 中

如 8086

MUL 指令 被乘数隐含在 AX ( 16 位)或 AL ( 8 位)中MOVS 指令 源操作数的地址隐含在 SI 中

目的操作数的地址隐含在 DI 中 指令字中少了一个地址字段,可缩短指令字长。

Page 71: 第 4 章 指令系统和控制器部件

8) 立即寻址方式   所需的一个操作数在指令的地址码部分直接给出。

特点:在取指令的同时取出了操作数,不必访问主存,提高了指令的执行速度 ; 灵活性差。

  OPOP                    NumNum…

Page 72: 第 4 章 指令系统和控制器部件

操作数 (或指令 )的地址由程序计数器 PC 的内容 (即当前执行指令的地址 )和指令的地址码相加得到。

例如:例如: disp = 48Hdisp = 48H (PC) = 5600H(PC) = 5600H则实际地址 则实际地址 = disp + (PC) = 5648= disp + (PC) = 5648HH 主要用于转移指令,对缩短指令长度很有

用。位移量可正可负,通常用补码表示。

9) 相对寻址方式

Page 73: 第 4 章 指令系统和控制器部件

主存空间主存空间

20002000

PC

JMP +30+30现行指令

JMP NEXTNEXT

ADD AX ,BX

200120012001

20312031

PC在指令中不指定,是隐含的,所以可以缩短指令长度。

Page 74: 第 4 章 指令系统和控制器部件

例题:设相对转移指令占两个字节,第一个字节是操作码,其地址是 2000H,第二个字节是相对位移量,那么: (PC)=2002H

(1)(1) 若第二个字节的内容为若第二个字节的内容为 06H06H ,则转移到的地址,则转移到的地址为为 ______ ______ 。。 ① ① 2008H2008H ② 2009H ③ 1FFCH ④ FFBH ② 2009H ③ 1FFCH ④ FFBH

(2)(2) 若转移到的地址为若转移到的地址为 1FFDH1FFDH ,则第二个字节的内,则第二个字节的内容为容为 ______________ 。。 ① ① 05H ② 05H ② FBFBH ③ FDH ④ FFHH ③ FDH ④ FFH

Page 75: 第 4 章 指令系统和控制器部件

堆栈是内存储器中一块按“后进先出后进先出”原则进行读写的存储区,并通过一个专用的寄存器 (堆栈指针 SPSP)给出堆栈的栈顶地址,完成数据的读写操作,故不必在指令中用操作数地址字段给堆栈地址。通常在读写操作的前后伴随有计算机自动 ( 不是用户通过指令 )修改 SPSP内容的动作,以确保按正确的“后进先出后进先出”原则读写堆栈区。

四、堆栈结构及寻址

Page 76: 第 4 章 指令系统和控制器部件

如何在指令中表示寻址方式呢?如何在指令中表示寻址方式呢?

1. 用操作码区分

2.在指令中划分专用的字段来说明

Page 77: 第 4 章 指令系统和控制器部件

问题问题 :: 下图所指的寻址方式的名称是什么?下图所指的寻址方式的名称是什么?

操作码 操作数

操作码

寄存器

操作数

R

立即寻址立即寻址

寄存器寻址寄存器寻址

Page 78: 第 4 章 指令系统和控制器部件

操作码

存储器 指令

操作数

A

问题问题 :: 下图所指的寻址方式的名称是什么?下图所指的寻址方式的名称是什么?

存储器直接寻址存储器直接寻址

Page 79: 第 4 章 指令系统和控制器部件

操作码

操作数 A

存储器 寄存器

R

存储器

操作码

操作数

A'

A

问题问题 :: 下图所指的寻址方式的名称是什么?下图所指的寻址方式的名称是什么?

存储器间接寻址存储器间接寻址寄存器间接寻址寄存器间接寻址

Page 80: 第 4 章 指令系统和控制器部件

操作码

操作数 PC

存储器 A

问题问题 :: 下图所指的寻址方式是什么?下图所指的寻址方式是什么?

相对寻址相对寻址

Page 81: 第 4 章 指令系统和控制器部件

────────────────────────── 寻址方式 有效地址 EA的计算公式 寻址范围 立即寻址 直接寻址 间接寻址 变址寻址 相对寻址

解:因为 OP字段长 5 位,所以指令能定义 25=32 种指令。

例:某机字长为 16位,存储器按字编址,访内存指令格式如下: 15 11 10 8 7 0

OPOP MM AA

其中 OP是操作码, M定义寻址方式, A为形式地址。设 PC 和Rx分别为程序计数器和变址寄存器,字长 16 位。 ( 1)该指令能定义多少种指令? ( 2)表中各种寻址方式的寻址范围为多少? ( 3)写出表中各种寻址方式的有效地址 EA的计算公式。

EA=EA= (( PCPC ) ) 11 个字,即指令自身个字,即指令自身EA=A 256EA=A 256 个字个字EA=EA= (( AA ) ) 64K64K 字字EA=EA= (( RxRx )) +A 64K+A 64K 字字EA=EA= (( PCPC )) +A 256+A 256 个字个字 (PC(PC 附近附近 ))

Page 82: 第 4 章 指令系统和控制器部件

练习题:

某机字长 16 位,内存容量为 64K字,指令格式为单字长单地址,其有 64条指令,问: 1 )若只采用直接寻址方式,指令能访问多少内存单元? 2 )为了扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接 /间接标志,指令可寻址范围为多少?指令直接寻址的范围为多少?

Page 83: 第 4 章 指令系统和控制器部件

一个完善的指令系统应满足如下四方面的要求:

  完备性完备性

有效性有效性

规整性规整性

兼容性兼容性

五、指令系统举例

Page 84: 第 4 章 指令系统和控制器部件

完备性完备性是指用汇编语言编写各种程序时,指令是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、来实现。完备性要求指令系统丰富、功能齐全、使用方便。 使用方便。

有效性有效性是指利用该指令系统所编写的程序能够是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。 储空间小、执行速度快。

Page 85: 第 4 章 指令系统和控制器部件

规整性规整性包括指令系统的对称性、匀齐性、指令包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性格式和数据格式的一致性。。1.对称性是指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;2.匀齐性是指一种操作性质的指令可以支持各种数据类型;3.指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取。

Page 86: 第 4 章 指令系统和控制器部件

兼容性兼容性 要能做到“向上兼容”,即低档机上运行要能做到“向上兼容”,即低档机上运行

的软件可以在高档机上运行。 的软件可以在高档机上运行。 要能做到“向后兼容”,即先生产机器上要能做到“向后兼容”,即先生产机器上

运行的软件可以在后生产的机器上运行。运行的软件可以在后生产的机器上运行。

Page 87: 第 4 章 指令系统和控制器部件

指令系统举例指令系统举例 —— Intel8086Intel8086 指令系统指令系统

指令分类 指令名称 指令助记符 指令功能指令分类 指令名称 指令助记符 指令功能

传送类指

传送类指

令令传送指令 MOV Ri/M , Ri R→R , R→M

… … …堆栈指令 PUSH Ri Ri 入栈 …

输入输出指令 IN AL/AH , 端口号 端口→累加器 … …

Page 88: 第 4 章 指令系统和控制器部件

算术与逻辑运算类指

算术与逻辑运算类指

令令加法指令 ADD Ri , Ri R+R →R

… … …加 1 指令 INC Ri /M R+1→R

逻辑与指令 AND Ri, Rj

… …

指令分类 指令名称 指令助记符 指令功能指令分类 指令名称 指令助记符 指令功能

Page 89: 第 4 章 指令系统和控制器部件

程序控制类指令

程序控制类指令

无条件转移指令 JMP A A→PC

… … …条件转移指令 JRNZ A Z=1 时 A→PC

循环指令 LOOP

… …

指令分类 指令名称 指令助记符 指令功能指令分类 指令名称 指令助记符 指令功能

Page 90: 第 4 章 指令系统和控制器部件

Pentium 指令格式

字节 :1 或 2 0 或 1 0 或 1 0,1 ,2 或 4 0,1,2 或 4 OP MOD/RM SIB Disp Imm

Mod Reg/Op R/M SS Index Base

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 指令格式复杂 ;寻址方式多样 ;通用寄存器较少 ;

编译系统复杂 ;

典型 CISC 指令集 .指令流水实现复杂 ;

Page 91: 第 4 章 指令系统和控制器部件

MIPS 指令格式

指令格式简单 ;寻址方式较少 ;通用寄存器较多 ;

编译系统简单高效 ;

典型 RISC 指令集 .容易实现流水操作 ;

Page 92: 第 4 章 指令系统和控制器部件

TH-unionTH-union 指令系统的寻址方式指令系统的寻址方式 1. 立即寻址 例: MVRD R0 , 00AA

2. 寄存器寻址 例: ADD R0 , R1

3. 寄存器间址 例: MVRR R1 , [R0]

Page 93: 第 4 章 指令系统和控制器部件

六、指令系统的发展六、指令系统的发展  当前的计算机指令系统,从其构成的复杂和完备程度,或者说设计中追求的不同的目标,区分为:

复杂指令系统 复杂指令系统 CISCCISC精简指令系统 精简指令系统 RISCRISC精确并行指令计算技术精确并行指令计算技术 EPICEPIC

Page 94: 第 4 章 指令系统和控制器部件

CISC —CISC —复杂指令集计算机复杂指令集计算机(( CComplex omplex IInstruction nstruction SSet et CComputeromputer))

1)指令系统复杂庞大,指令数目一般多达 500 条以上。2)寻址方式多。3)指令格式多,功能强。4)指令字长不固定。5)各种指令的使用频度相差很大。6)各种指令的执行时间相差很大。7)大多数采用微程序控制器。

Page 95: 第 4 章 指令系统和控制器部件

指令系统内容丰富指令系统内容丰富对用户来说程序设计方便对用户来说程序设计方便程序短小功能强大程序短小功能强大编译简单编译简单

提高机器性能只能以提高处理器频率提高机器性能只能以提高处理器频率庞大的指令系统导致硬件结构更加复杂庞大的指令系统导致硬件结构更加复杂由于多采用微程序控制,使微程序更加庞大由于多采用微程序控制,使微程序更加庞大由于指令长短不一,不易使用先进的流水技术由于指令长短不一,不易使用先进的流水技术执行速度和性价比难以提高。执行速度和性价比难以提高。

Page 96: 第 4 章 指令系统和控制器部件

  精简指令集计算机是  精简指令集计算机是 7070 年代提出的一种新年代提出的一种新的设计思想。的设计思想。 8080 年代出现了第1片年代出现了第1片 RISCRISC 微处微处理器芯片。目前,大多处理机都采用了理器芯片。目前,大多处理机都采用了 RISCRISC 体体系结构系结构

RISC—RISC—精简指令集计算机精简指令集计算机(( RReduced educed IInstruction nstruction SSet et CComputeromputer))

Page 97: 第 4 章 指令系统和控制器部件

1. 1. 选取使用频率最高的一些简单指令,以及很有用但选取使用频率最高的一些简单指令,以及很有用但不复杂的指令。不复杂的指令。

2. 2. 指令长度固定,指令格式种类少,寻址方式种类少。指令长度固定,指令格式种类少,寻址方式种类少。

3. 3. 只有取数只有取数 //存数指令访问存储器,其余指令的操作都存数指令访问存储器,其余指令的操作都在寄存器之间进行。在寄存器之间进行。

4. CPU4. CPU 中通用寄存器数量相当多。中通用寄存器数量相当多。

5. 5. 采用组合逻辑控制器,不用或少用微程序控制。采用组合逻辑控制器,不用或少用微程序控制。

6. 6. 采用指令流水调度,以减少程序执行时间。采用指令流水调度,以减少程序执行时间。

Page 98: 第 4 章 指令系统和控制器部件

RISC 指令系统要求使用大量的通用寄存器,提高了处理器的速度,同时也增加了任务切换时的开销。

RISC 简化了控制器的设计,但同时需要靠编译器的优化来提高性能,这对编译器的设计提出了很高的要求。

RISC 不够标准,指令代码难以理解,与传统的 CISC 不兼容等都给 RISC 的设计、使用带来不少问题。

因此 RISC开始引入 CISC 的一些优点以提高性能。与此同时, CISC 也开始吸取 RISC 的优点,如:Pentium 就溶入了 RISC技术。

Page 99: 第 4 章 指令系统和控制器部件

  随着时间的推移,技术进步,要实现  随着时间的推移,技术进步,要实现高性能高性能计算机已不是传统上的计算机已不是传统上的 CISCCISC 或或 RISCRISC 所能胜任的。所能胜任的。INTEL 64INTEL 64 位位 CPUCPU 主要设计目标就是克服当今主要设计目标就是克服当今 CPUCPU系统构架的瓶颈,开发一个全新的系统构架,最系统构架的瓶颈,开发一个全新的系统构架,最大程度地开发指令级并行操作。因此大程度地开发指令级并行操作。因此 INTEL INTEL 提出提出了创新的设计理念——了创新的设计理念——精确并行指令计算精确并行指令计算(( EPIEPICC ))

按照这种思想设计的按照这种思想设计的 6464 位位 CPUCPU ,, INTELINTEL 称称之为之为 IA-64IA-64 结构。结构。

EPICEPIC——精确并行指令计算技术精确并行指令计算技术

Page 100: 第 4 章 指令系统和控制器部件

硬件功能软件化:复杂的并行指令打包交给软件处理,硬件只需按序高速并行处理指令和数据。

128 位指令束: IA-64将指令打包处理,指令束 128位长,含有 3个 41 位指令和 1个 5位模板。编译程序:对编译程序提出了更高要求, IA-64将指令流的优化交给了编译程序。分支判定技术:可以同时指令两条分支,分支中每条指令都有标志位。( 64个分支预测寄存器)数据推测装载技术: IA-64 结构允许编译器来管理控制指令的推测和使用数据的推测,从而大大降低了某些操作的执行时间。

Page 101: 第 4 章 指令系统和控制器部件

INTEL 指令系统的发展

Page 102: 第 4 章 指令系统和控制器部件

11 .. MMX技术 MMX技术 ( ( MMulti ulti MMedia eedia eXXtension tension )) MMXMMX指令集针对多媒体信息处理中的特点,新增了5757条多媒体指令。     9条数学运算指令、9条数学运算指令、

2条数据比较指令、2条数据比较指令、4条压缩数据还原指令、4条压缩数据还原指令、4条逻辑运算指令、4条逻辑运算指令、3条移位指令、3条移位指令、1条数据转换指令、1条数据转换指令、1条1条 FP/MMXFP/MMX状态转换指令,状态转换指令,和若干分支指令和若干分支指令

Page 103: 第 4 章 指令系统和控制器部件

MMXMMX 的一个关键技术是单指令多数据技术的一个关键技术是单指令多数据技术 SIMDSIMD ,即能够利用一条多媒体指令同时处理,即能够利用一条多媒体指令同时处理多对数据,以提高处理器的性能。多对数据,以提高处理器的性能。 例如处理声音数据的左右声道、图象数据的例如处理声音数据的左右声道、图象数据的 RRGBGB 色彩混合等。色彩混合等。

MMXMMX采用了采用了 6464 位“压缩整型数据”,可将位“压缩整型数据”,可将 6464 位数位数据置于单个寄存器中,使处理器能够同时处理据置于单个寄存器中,使处理器能够同时处理 88 个个字节的数据,从而达到使用一条指令处理多个数据字节的数据,从而达到使用一条指令处理多个数据的目的。的目的。SIMDSIMD, , SSingle ingle IInstruction nstruction MMultiple ultiple DDataata

单指令多数据单指令多数据

Page 104: 第 4 章 指令系统和控制器部件

新型数据结构新型数据结构63 56 48 40 32 24 16 8 63 56 48 40 32 24 16 8 0 0 字节字节 字节字节 字节字节 字节字节 字节字节 字节字节 字节字节 字节字节

88 个的个的 88位字位字

63 48 32 16 63 48 32 16 0 0 11 个压缩的字个压缩的字 11 个压缩的字个压缩的字 11 个压缩的字个压缩的字 11 个压缩的字个压缩的字

44 个的个的 1166 位字位字

63 32 63 32 0 0 11 个压缩的双字数据个压缩的双字数据 11 个压缩的双字数据个压缩的双字数据

22 个的个的 3322 位字位字

63 63 0 0 11 个压缩的个压缩的 44 字数据字数据

11 个的个的 6644 位字位字

这种数据结构具有连续的内存地址

Page 105: 第 4 章 指令系统和控制器部件

2.2.SSESSE技术 技术 ( ( SStreaming treaming SSIMD IMD EExtensions )xtensions )

SSE1SSE1 指令集共有指令集共有 7070 条指令。 条指令。 Pentium 3Pentium 3

8 8 条优化内存指令、条优化内存指令、 5050 条提高条提高 3D3D 图形运算效率的图形运算效率的 SIMDSIMD 浮浮点运算指令、点运算指令、 1212 条条 MMXMMX 整数运算增强指令。整数运算增强指令。 SSESSE 兼容兼容 MMXMMX指令,它可以通过指令,它可以通过 SIMDSIMD和单时钟周期并行处理多个浮点数据来和单时钟周期并行处理多个浮点数据来有效的提高浮点运算速度。有效的提高浮点运算速度。

Page 106: 第 4 章 指令系统和控制器部件

SSE2SSE2 指令集共有指令集共有 144144 条指令。 条指令。 Pentium 4Pentium 4

包括:包括: 浮点浮点 SIMDSIMD指令、指令、 整型整型 SIMDSIMD指令、指令、 SIMDSIMD 浮点和整型数据之间转换等指令。浮点和整型数据之间转换等指令。 SSE2SSE2重要的改进包括引入新的数据格式,如重要的改进包括引入新的数据格式,如 128128位的位的 SIMDSIMD 整数运算和整数运算和 6464 位双精度浮点运算等。位双精度浮点运算等。

SIMDSIMD, , SSingle ingle IInstruction nstruction MMultiple ultiple DData ata 单指令多数单指令多数据据

SISDSISD, , SSingle ingle IInstruction nstruction SSingle ingle DData ata 单指令单数单指令单数据据

Page 107: 第 4 章 指令系统和控制器部件

适用适用 CPUCPU 发表日期发表日期 新增指令新增指令 指令总数指令总数8086 1978.6 89 条 8989 条条8087 1978 77 条 166166 条条80286 1982.2 新增 24 条 190190 条条80386 1985.10 新增 14 条 204204 条条80387 1985 新增 7 条 211211 条条80486 1989.8 新增 5 条 216216 条条Pentium 1993.3 新增 6 条 222222 条条Pentium ProPentium Pro 1995.111995.11 新增新增 88 条条 230230 条条Pentium MMX 1997.1 新增 MMX 指令 57 条 287287 条条Pentium II 1997.5 新增 4 条 291291 条条Pentium III 1999.2 新增 SSE1 指令 70 条 361361 条条Pentium 4 2001.7 新增 SSE2 指令 144 条 505505 条条Itanium 2000.8 未公布

INTEL X86INTEL X86 指令数量一览表指令数量一览表

Page 108: 第 4 章 指令系统和控制器部件

指令名称 适用 CPU 发表日期 新增指令3DNow! AMD K6-2 1998 21 条3DNow!+ AMD Athlon XP 2001.10 52 条

AMD 3DNow!AMD 3DNow!指令数量指令数量

AMD 3DNow!AMD 3DNow!指令与指令与 MMXMMX指令的用途不完全相同。指令的用途不完全相同。

MMXMMX指令指令:主要侧重于整数运算,主要针对图形描绘、:主要侧重于整数运算,主要针对图形描绘、数据压缩与解压缩、音频处理等。数据压缩与解压缩、音频处理等。

3DNow!3DNow!指令指令:侧重于浮点运算,主要针对三维建摸、:侧重于浮点运算,主要针对三维建摸、坐标变换、效果渲染等三维图形应用场合。坐标变换、效果渲染等三维图形应用场合。

Page 109: 第 4 章 指令系统和控制器部件

在在 Pentium ProPentium Pro CPU CPU推出后,推出后, INTELINTEL 将将 X86X86 指令指令系统和寄存器组称为系统和寄存器组称为 INTELINTEL结构(结构( IAIA)也称)也称 IAIA指令指令系统。系统。 许多许多 X86X86 指令本质上非常复杂,需要额外的译码指令本质上非常复杂,需要额外的译码和执行电路。例如一条和执行电路。例如一条 X86X86 指令可能需要一次或多次指令可能需要一次或多次的内存读写,指令的长度可能是的内存读写,指令的长度可能是 11~~ 1313 个字节。个字节。 从从 Pentium ProPentium Pro CPU CPU开始,开始, INTELINTEL 将将长度不定长度不定的的X86X86 指令解码成为指令解码成为长度固定长度固定的的 RISCRISC 指令,或称为微操指令,或称为微操作指令。作指令。