第二章 微处理器及其系统

119
1 第第第 第第第第第第第 8086/8088 第第第第 8086/8088 第第第第第第 8086/8088 第第第第 80x86 第第第第

Upload: yank

Post on 12-Jan-2016

173 views

Category:

Documents


3 download

DESCRIPTION

第二章 微处理器及其系统. 8086/8088 微处理器 8086/8088 的寄存器结构 8086/8088 的存储器 80x86 微处理器. Intel 8086 的结构. Intel 8086 的编程结构 Intel 8086 的寄存器结构 Intel 8086 的存储器编址和 I/O 编址. Intel 8086 的结构. 编程结构: 从程序员和使用者的角度来看的结构。 这种结构与 CPU 内部的物理结构和实际布局有区别。 分两部分: 1 、总线接口单元 BIU ( Bus Interface Unit ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章 微处理器及其系统

1

第二章 微处理器及其系统

8086/8088 微处理器 8086/8088 的寄存器结构 8086/8088 的存储器 80x86 微处理器

Page 2: 第二章 微处理器及其系统

2

Intel 8086的结构

Intel 8086 的编程结构

Intel 8086 的寄存器结构

Intel 8086 的存储器编址和 I/O 编址

Page 3: 第二章 微处理器及其系统

3

Intel 8086的结构 编程结构:从程序员和使用者的角度来看的结构。 这种结构与 CPU 内部的物理结构和实际布局有区别。

分两部分: 1 、总线接口单元 BIU ( Bus Interface Unit ) 2 、执行部件 EU ( Execution Unit )

Page 4: 第二章 微处理器及其系统

4

Intel 8086的结构特点 (1) 内部结构 是 16 位的 (内部寄存器,内部运算部件,内部操作按 16 位设计); (2) 外部数据总线 16 条,能处理 16 位数据 , 也能处理 8 位数

据; (具有 16 位运算指令) (3) 汇编语言与 8080/8085 兼容,即能执行整套 8080/8085 的指令 . 增加了许多 16 位操作指令; (4) 20 条地址总线,直接寻址能力 1M 字节; (5) 40 条引线封装; (6) 单相时钟; (7) 电源为 5V 。 8086与 8088 的主要区别在于 8086 的外部数据总线 16 位。

Page 5: 第二章 微处理器及其系统

5

CH

DH

DI

SP

BP

SI

65

标志

3执行部分

控制电路

运算寄存器

ALU1 2 4

DSSS

ES输入/输出

控制电路I P

CS

内部暂存器

BH

AH

DL

CL

AL

BL

20位

地址加法

16位

外部总线

指令队列缓冲器

8位

16位

通用寄存器

执行部件(EU) 总线接口部件(BIU)

8086 编程结构

Page 6: 第二章 微处理器及其系统

6

( 1 ).总线接口单元 BIU功能: 负责与 存储器、 I/O 端口传送数据。

具体讲:• 总线接口部件要从内存 取指令送到指令队列;• CPU 执行指令时,要配合执行部件从指定的内存单元 或者外设端口中取数据,将数据传送给执行部件; 或把执行部件的操作结果传送给指定的 M 或 I/O 口。

1 、总线接口单元 BIU( Bus Interface Unit )

Page 7: 第二章 微处理器及其系统

7

4 个段地址寄存器( CS 、 DS 、 ES 、 SS ), 16 位指令指针寄存器 IP , 20 位的地址加法器 (16d 段地址 + 偏移地址=物理地址 ),

6 字节( 8086 )或 4 字节( 8088 )的指令队列 ,

总线控制电路 :

处理器与外界总线联系的转接电路。

包括三组总线:

20 位地址总线, 16 位 (8086) 或 8 位( 8088 )双向数据总线,一组控制总线。

( 2 ).总线接口单元 BIU 组成

Page 8: 第二章 微处理器及其系统

8

指令队列

8086 的指令队列为 6 个字节 ,

8088 的指令队列为 4 个字节。

不论是 8086 还是 8088 都会在执行指令的同时从内存中取下一条或几条指令,取来的指令放在指令队列中,使 BIU 具有预取指令的功能,是一种先进先出( FIFO )的数据结构。

(3 ).说 明

Page 9: 第二章 微处理器及其系统

9

说 明

指令执行顺序

顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令。

执行转移指令: BIU 清除指令队列中的内容,从新的地址取入指令,立即送往执行单元,然后再从新单元开始重新填满队列。

Page 10: 第二章 微处理器及其系统

10

地址加法器的作用:

用来形成 20 位物理地址,如CS=F010H, IP=1000H ,则要访问的物理地址是:

CS*16+IP=F1100H

说 明

Page 11: 第二章 微处理器及其系统

11

( 1 )、 功能:负责指令执行。

( 2 )、 组成:

4 个通用寄存器: AX、 BX、 CX、DX;

4 个专用寄存器: BP、 SP、 SI、DI;

标志寄存器( PSW ):

9 个标志位,其中 6 个条件标志位用于存放结果状态 ;

2 、 EU ( Execution Unit)执行单元

Page 12: 第二章 微处理器及其系统

12

算术逻辑单元: 16 位加法器,用于对寄存器和指令操作数进行算术或逻

辑运算; EU 控制系统:

接受从总线接口单元的指令队列中取来的指令代码,对其译码和向 EU 内各有关部分发出时序命令信号,协调执行指令规定的操作。

Page 13: 第二章 微处理器及其系统

13

由此可见, 8086/8088 取指部分与执行部分是分开的。

在一条指令的执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队;

在一条指令执行完成后 , 就可以立即执行下一条指令,减少 CPU 为取指令而等待的时间,提高CPU 的利用率和整个运行速度。

Page 14: 第二章 微处理器及其系统

14

BIU 和 EU 分开,取指和执行可以重迭,

大大减少了等待取指所需的时间,提高 CPU 的利用率。

重迭操作技术:一方面提高了整个执行速率,

另一方面降低了与之相配的存储器的存取速度的要求。

取指 取指 取指 取指 得到数据

等待 执行 执行 执行 执行

8086/8088微处理器 :

Page 15: 第二章 微处理器及其系统

15

程序执行由取指令和执行指令的循环来完成的,每条指令执行完后 CPU 必须等待到下条指令取出来后才能执行。

取指 执行 取指 执行 . . . . . . 取指 执行

时间坐标

对于 8080与 8085及较早的 8 位微处理器 :

Page 16: 第二章 微处理器及其系统

16

2 Intel 8086 的寄存器结构

AH AL

BH BL

CH CL

DH DL

SP

BP

SI

DI

IP

PSW

CS

DS

SS

ES

AX

BX

CX

DX

累加器

基址

计数

数据

数据寄存器

015

07815

015

015

附加数据段

堆栈段

数据段

代码段

段寄存器

指令指针

状态标志控制寄存器

堆栈指针

基址指针

源变址

目的变址

指针寄存器

变址寄存器

通用寄存器

Page 17: 第二章 微处理器及其系统

17

Intel 8086的寄存器结构

标志寄存器

OFDF IF TFSFZF AF PF CF

015 245678910

Page 18: 第二章 微处理器及其系统

18

1 、通用寄存器

通用寄存器包括:

数据寄存器、地址指针寄存器、变址寄存器。

数据寄存器包括 : AX 、 BX 、 CX 、DX 。

地址指针寄存器包括 : SP 、 BP 。

变址寄存器包括 : SI 、 DI 。

2 、段寄存器

段寄存器包括 : CS 、 SS 、 DS 、 ES 。

3 、控制寄存器

控制寄存器包括: IP 、 PSW 。

Intel 8086的寄存器结构

Page 19: 第二章 微处理器及其系统

19

1 、通用寄存器

( 1 )数据寄存器

AX、 BX、 CX、DX 作为通用寄存器。

用来暂存计算过程中所用到的操作数,结果或其它信息。

访问形式 :

可以用字( 16 位)的形式访问 ;

也可以用字节( 8 位)形式访问 ,

它们的高 8 位记作 : AH 、 BH 、 CH 、 DH 。

它们的低 8 位记作 : AL 、 BL 、 CL 、DL 。

Intel 8086的寄存器结构

Page 20: 第二章 微处理器及其系统

20

AX—— ( Accumulator )作为累加器。

它是算术运算的主要寄存器,所有 I/O 指令都使用这一寄存器与外部设备交换数据。

例: IN AL , 20HOUT 30H , AX

Intel 8086的寄存器结构

Page 21: 第二章 微处理器及其系统

21

BX——Base 用作基址寄存器使用。

在计算内存储器地址时,经常用来存放基址。

例: MOV AX, [BX+03H]

Intel 8086的寄存器结构

Page 22: 第二章 微处理器及其系统

22

CX——Count 可以作计数寄存器使用。 在循环 LOOP 指令和串处理指令中用作隐含计数器。

例: MOV CX , 200HAGAIN: ……

……LOOP AGAIN ;( CX)-1(CX), 结果 0

转 AGAIN

Intel 8086的寄存器结构

Page 23: 第二章 微处理器及其系统

23

DX——Data 可以作为数据寄存器使用。

一般在双字长乘除法运算时, 把DX和 AX 组合在一起存放一个双字长 (32位 ) 数, DX 用来存放高 16位 ;

对某些 I/O 操作 DX 可用来存放 I/O 的端口地址(口地址 256 )。

例: MUL BX ; (AX)(BX)(DX)(AX)

例 : IN AL , DX

Intel 8086的寄存器结构

Page 24: 第二章 微处理器及其系统

24

( 2 )地址指针与变址寄存器: 段起始地址

SP 、 BP 、 SI 、 DI 四个 16 位寄存器。

以字为单位在运算过程中存放操作数,

经常用以在段内寻址时提供偏移地址。 段内偏移地址

段地址 : 只取段起始地址高 16 位值。

偏移地址 : 指在段内某内存单元物理地址相对段起始地址的偏移值。

高 16 位值 0000B

Intel 8086的寄存器结构

Page 25: 第二章 微处理器及其系统

25

地址指针寄存器 (SP 、 BP )

SP ( stack pointer )——堆栈指针寄存器 用来指示栈顶的偏移地址 , 必须与 SS 段寄存器联合使用确定实际地址。

堆栈和指针如下页图所示。

BP ( base pointer )——基址指针寄存器 可以与 SS 寄存器联合使用来确定堆栈段中某一存储器单元地址。

Intel 8086的寄存器结构

Page 26: 第二章 微处理器及其系统

26

8086 系统存储器与总线连接 堆栈和指针

设 : ( SS)=3F00H,(SP)=0060H 堆栈和指针如下图:堆栈是内存开辟的一个特殊数据区,一端固定,一端浮动,严格按照后进先出的工作原则。

数据总线

地址总线

D7~D0

1 M X 8位存储体

A19~A0

00000H

FFFFFH

A19~A0

......

......

a1

a0

栈底4EFFFH

3F060H(SP)=60H

3F000H(SS)=3F00H

Page 27: 第二章 微处理器及其系统

27

• 变址寄存器 (SI 、 DI)

SI——Source Index Register 源变址寄存器。

DI——Destination Index 目的变址寄存器。

使用场合:常用于变址寻址。• 一般与 DS 联用,用来确定数据段中某一存储单元的地址,

SI , DI 具有自动增量和自动减量功能 .

例: MOV AX, [SI]

Intel 8086的寄存器结构

Page 28: 第二章 微处理器及其系统

28

• 在串处理指令中, SI 、 DI 作为隐含的源变址和目的变址寄 存器分别达到在数据段和附加段中寻址的目的。

执行示意图如右图。

例: ……

MOV SI , 2000H

MOV DI , 3000H

MOV CX, 100H

CLD......

MOVSB

…….

. . . . . .

. . . . . .

. . . . . .

3000H:2000H

3000H:2100H

5000H:3000H

5000H:3100H

DS:2000H~DS:20FFH

ES:3000H~ES:30FFH

(DS) (SI)

(ES) (DI)

存储器

串处理指令执行示意图

Page 29: 第二章 微处理器及其系统

29

2 、段寄存器段寄存器 : 4 个 16 位段寄存器 CS 、 DS 、 SS 、 ES 。

用来识别当前可寻址的四个段,不可互换的使用。

CS——Code Segment Register 代码段寄存器

用来识别当前代码段(程序一般放在代码段)。

DS——Data Segment Register 数据段寄存器

用来识别当前数据段寄存器。

SS——Stack Segment Register 堆栈段寄存器,

用来识别当前堆栈段。

ES——Extra Segment Register 附加段寄存器,

用来识别当前附加段。

Page 30: 第二章 微处理器及其系统

30

3 、控制寄存器控制寄存器: IP 、 PSW

IP—Instruction Pointer 指令指针寄存器

用来存储代码段中的偏移地址 ;

程序运行过程中 IP 始终指向下一次要取出的指令偏移地址。 IP 要与 CS 寄存器相配合才能形成真正的物理地址。

PSW— ( Processor States Word Program )

程序状态字寄存器, 16 位寄存器。 由状态标志、控制标志构成。

只用了其中 9 位 , 6 位状态标志 , 3 位控制标志。如下表示。 OF DF IF TF SF ZF AF PF CF

015 245678910

Page 31: 第二章 微处理器及其系统

31

状态标志 :

用来记录程序中运行结果的状态信息作为

后续条件转移指令的转移控制条件。

状态包括 6 位: CF 、 PF 、 AF 、 ZF 、 SF 、 OF 。

① OF(Overflow Flag )溢出标志(一般指补码溢出)

OF=1 :在运算过程中,如操作数超过了机器表示的范围称为溢出。

OF=0 :在运算过程中,如操作数未超过了机器能表示的范围称为不溢出。

字节允许范围 -128—+127 ,

字运算范围 -32768—+32767 。

Page 32: 第二章 微处理器及其系统

32

② SF ( Sign Flag )符号标志

SF=1 :记录运算结果的符号为负。

SF=0 :记录运算结果的符号为正。

③ ZF ( Zero Flag )零标志

ZF=1 :运算结果为 0 。

ZF=0 :运算结果不为 0 。

④ CF ( Carry Flag )进位标志

CF=1 :记录运算时从最高有效位产生进位值。

CF=0 :记录运算时从最高有效位不产生进值。

Page 33: 第二章 微处理器及其系统

33

⑤ AF ( Auxiliary Carry Flag )辅助进位标志

AF=1 :记录运算时第 3 位(半个字节)产生进位值。

AF=0 :记录运算时第 3 位(半个字节)不产生进位值。

⑥ PF(Parity Flag) 奇偶标志

PF=1: 结果操作数低 8 位中有偶数个 1 。

PF=0: 结果操作数低 8 位中有奇数个 1 。

用来为机器中传送信息时可能产生的代码出现情况提供检验条件。

Page 34: 第二章 微处理器及其系统

34

控制标志 :

对控制标志位进行设置后 , 对其后的操作起控制作用。

控制标志位包括 3 位 : TF 、 IF 、 DF 。

跟踪(陷阱)标志 TF 、中断标志 IF 、方向标志

DF 。 ① TF(Trap Flag)跟踪 (陷阱 ) 标志位

TF=1 , 每执行一条指令后,自动产生一次内部中断,

使 CPU 处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。

TF=0, CPU 正常工作,不产生陷阱。

Page 35: 第二章 微处理器及其系统

35

② IF(Interupt Flag)中断标志 位

IF=1, 允许外部可屏蔽中断。 CPU可以响应可屏蔽中断请求。

IF=0, 关闭中断。 CPU禁止响应可屏蔽中断请求。

IF的状态对不可屏蔽中断和内部软中断没有影响。

③ DF(Direction Flag)方向标志位

DF=1,每次串处理操作后使变址寄存器 SI和 DI减量,使串处理从高地址向低地址方向处理。

DF=0,每次串处理操作后使变址寄存器 SI和 DI增量 , 使串

处理从 低地址向高地址方向处理。

DF方向标志位是在串处理指令中控制处理信息的方向用的。

Page 36: 第二章 微处理器及其系统

36

•控制信息 : 由系统程序或用户程序根据需要用指令来设置的。

• 状态信息 : 由中央处理器 , 根据计算结果自动设置的,

机器提供了设置状态信息指令 , 必要时 , 程序员可以用这些指令来建立状态信息。

Page 37: 第二章 微处理器及其系统

37

1 0 0 0 1 1 0 1 0 0 0 1 0 100

0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1+

0111101010101010

标志 :

运算结果最高位为 0 SF=0∴ ;

运算结果本身≠ 0 ZF=0∴

低 8 位中 1 的个数为奇数个 ∴ PF=0 ;

最高位没有进位 ∴ CF=0

第三位向第四位无进位 ∴ AF=0 ;

次高位向最高位没有进位 ,最高位向前没有进位 , OF=0∴ 。

例 1 :执行两个数的加法,分析对标志位的影响。

Page 38: 第二章 微处理器及其系统

38

标志 :运算结果最高位为 1 , SF=1 ;运算结果本身不为 0 , ZF=0 ;最高位向前无进位, CF=0 次高位向最高位产生进位 ,而最高位向前没有进位, OF=1 ;结果低 8 位含偶数个 1 , PF=1 ;第三位向第四位有进位 , AF=1 。在绝大多数情况下,一次运算后并不影响所有标志,程序也并不需要对所有的标志作全面的关注。一般只是在某些操作后 , 对其中某个标志进行检测。

例 2 :执行两个数的加法,分析对标志位的影响。0 1 0 1 0 0 0 0 1 1 1 0 0 110

0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0+

1100010110011001

AF=1OF=1

Page 39: 第二章 微处理器及其系统

复位后相关寄存器的初始状态

寄存器 初始状态 寄存器 初始状态

状态标志寄存器 清 0 IP 0000H

CS FFFFH DS 0000H

SS 0000H ES 0000H

指令队列寄存器 清空 其他寄存器 0000H

Page 40: 第二章 微处理器及其系统

40

1 、存储单元的地址和内容

2 、存储器地址分段

3 、各段在存储器中分配

3 8086 的存储器编址和 I/O 编址

Page 41: 第二章 微处理器及其系统

41

1 、存储单元的地址和内容及与 CPU之间数据传送

( 1 )、存储单元的地址和内容

存储器位编号:

8088 字长 16 位,由二个字节组成,位编号如下:

高位字节 MSB( 8 ~ 15 位) 低位字节 LSB( 0 ~ 7 位)

8088 内部的 ALU 能进行 16 位运算。 有关地址寄存器如 SP、 IP、 BP、 SI、DI 等都是 16位的。

0123456789101112131415

01234567

Page 42: 第二章 微处理器及其系统

42 内存单元的地址和内容

存储单元地址:按照字节编址

. . . . . .

1100 1111B

. . . . . .

物理地址 内容

00000H

00001H

00002H

00006H

FFFFFH

Page 43: 第二章 微处理器及其系统

43

存储单元的的内容:一个存储单元有效的信息。

机器字长是 16 位,

大部分数据以字节为单位表示,• 一个字存入存储器占有相继的二个单元:

低位字节存入低地址,高位字节存入高地址。

字单元的地址采用它的低地址来表示。

例: 字单元 : ( 0004H)=1234H,

字节单元 : ( 0004H)=34H

同一个地址既可以看作字节单元地址,

又可看作字单元地址,需要根据使用情况确定。

字单元地址:可以是偶数也可以是奇数,

34H

12H

1EH

2FH

0000H

0001H

0002H

0003H

0004H

0005H

0006H

.. .

1234H

1235H

1236H

.. .

Page 44: 第二章 微处理器及其系统

44

(2)、 CPU 和存储器或 I/O 端口之间传送数据

8086

8086 数据总线是 16 位的。

讨论 CPU 和存储器或 I/O 端口之间传送数据方式:

字数据读 /写操作

字节读 /写操作

Page 45: 第二章 微处理器及其系统

45

字数据读 /写操作

(a) 操作数存放在偶地址开始两个存储单元或两个 I/O 端口中:

即操作数字的低 8 位——在偶地址单元或 在偶地址端口;

高 8 位——在奇地址单元或在奇地址端口。

在一个总线周期内完成(通常 4 个时钟周期) 16 位数据传送,

操作数必须存放在偶地址开始两个存储单元或两个 I/O 端口中。

Page 46: 第二章 微处理器及其系统

图 存储体与总线的连接图 存储体与总线的连接

DBD15~D8

D7~D0

奇存储体

A0

ABBHE

A19~ A1

偶存储体 CS A19~A1

D7~D0

CS A19~A1

D7~D0

8086CPU 访问 ( 读或写 ) 存储器由信号 BHE和 A0 组合形成。 8086CPU 访问 ( 读或写 ) 存储器由信号 BHE和 A0 组合形成。

Page 47: 第二章 微处理器及其系统

47

CPU8低 位数据

8高 位数据8高 位数据线

低地址

高地址

奇地址偶地址

内存/读 写偶地址字

8低 位数据线

对应的偶地址单元 / 偶地址端口—数据通过数据总线低 8 位传输。

对应的奇地址单元 / 奇地址端口—数据通过数据总线高 8 位传输。

字数据读 /写偶地址字操作如下图:

Page 48: 第二章 微处理器及其系统

48

(b)操作数存放在奇地址开始两个存储单元或两个 I/O 端口中

如下图所示:

读 /写奇地址字

数据

数据CPU

空闲

奇地址

偶地址

高地址

低地址

内存第一个总线周期

数据

数据CPU

奇地址

偶地址

高地址

低地址

内存

第二个总线周期

空闲

Page 49: 第二章 微处理器及其系统

49

在第一个总线周期中 :

对应于奇地址单元或奇地址端口字节(操作字低 8 位)

通过数据总线高 8 位进行传输,而数据总线低 8 位处于空闲状态;

在第二个总线周期中 :

对应于偶地址单元或偶地址端口字节(操作字高8 位)

通过数据总线低 8 位进行传输,而数据总线高 8 位处于空闲状态 .

由此可见,

操作数存放在奇地址开始两个存储单元 /两个 I/O 端口中进行

数据传输, 8086 需要二个总线周期。

Page 50: 第二章 微处理器及其系统

50

字节读 /写操作: 对偶地址单元 / 偶地址端口的字节数据进行读 /写如下图所示:

在一个总线周期中,只有数据总线的低 8 位传输数据,

高 8 位处于空闲状态。

数据CPU 偶地址

高地址

低地址

内存

空闲 奇地址

/读 写偶地址字节

Page 51: 第二章 微处理器及其系统

51

对奇地址单元 / 奇地址端口的字节数据进行读 /写如下图所示:

在一个总线周期中,只有数据总线的高 8 位传输数据,

而低 8 位处于空闲状态。

数据CPU

空闲

奇地址

高地址

低地址

内存

偶地址

/读 写奇地址字节

Page 52: 第二章 微处理器及其系统

52

80888088 数据总线只有 8 位。讨论 CPU 和存储器或 I/O 端口 之间传送数据:

每个总线周期只传输 1 个字节,所以对每个字操作要增加 4 个时钟周期。

( 4 )、存储器特性:存储器的内容是取之不尽的。

即从某个单元取出其内容后,该单元仍保持原来的内容 不变,可以重复取出; 只有存入信息后,原有的内容自动消失。

Page 53: 第二章 微处理器及其系统

53

8086 有 20 条地址总线,直接寻址能力为 220=1M 字节。

用 16 进制数表示 1M 字节的地址范围应为 00000H~FFFFFH 。

( 1 )、 8086 内部 20 位物理地址形成

( 2 )、逻辑地址与物理地址

2 、存储器地址分段:

Page 54: 第二章 微处理器及其系统

54

( 1 )、 8088 内部 20 位物理地址形成

存储器地址分段 8088 地址总线是 20 位的, CPU 中的寄存器是 16 位的,20 位地址无法用 16 位寄存器表示,必须分段。

程序员在编制程序时把存储器划分成段。

段内地址 16 位 , 每个段的大小最大可达 64KB ;实际可以根据需要来确定段大小,可以是 1 , 100 , 1000 ,在 64K范围内的任意字节数。

IBM PC 机对段的起始地址有限制,即段不能从任意地址开始:必须从任一小段( paragraph )的首地址开始。

Page 55: 第二章 微处理器及其系统

55

小段的概念

从 0 地址开始每 16 字节为一小段,

对于 16 位地址总线,段内存储器小段地址如下:

如: 0000H , 0001H , 0002H ,……, 000EH , 000FH 一个小段

0010H , 0011H , 0012H ,……, 001EH , 001FH

0020H , 0021H , 0022H ,……, 002EH , 002FH

… …

FFF0H, FFF1H, FFF2H, ……, FFFEH, FFFFH

其中:第一列就是每个小段的首地址。

Page 56: 第二章 微处理器及其系统

56

每个小段首地址特征:

在 16 进制表示的地址中,最低位为 0H

(即 20 位地址的低 4 位为 0000B )。

在 1M 字节的地址空间,共有 64K 个小段其首地址为:

0000 0H

0001 0H

4123 0H

4124 0H

FFFE 0H

FFFF 0H

Page 57: 第二章 微处理器及其系统

57

20 位物理地址形成

物理地址: 在 1M 字节存储器里,每个存储单元都有一个唯一的 20位地址作为该存储单元的物理地址。

CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取出(或存入)该单元中的内容。

20 位物理地址形成:由 16 位段地址和 16 位偏移地址组成。

段地址 : 只取段起始地址高 16 位值。偏移地址 : 指在段内某内存单元物理地址相对段起始地址的偏移值。

Page 58: 第二章 微处理器及其系统

58

物理地址计算方法:

即把段地址左移 4 位再加上偏移地址值形成物理地址,写成: 物理地址 = 16d 段地址 + 偏移地址。

* 每个存储单元只有唯一的物理地址。 但可由不同的段地址和不同的偏移地址组成。

16位段地址 0000

16位偏移地址

015

015

20位物理地址

019

+

Page 59: 第二章 微处理器及其系统

59

( 3 )、逻辑地址与物理地址

逻辑地址与物理地址概念 逻辑地址与物理地址概念如下页图所示。

逻辑地址:由段基址和段内偏移地址组成的地址, 段基址和段内偏移地址都是 16 位的无符号二进制数, 在程序设计时使用。

物理地址:存储器的绝对地址( 20 位的实际地址), 范围从 00000H ~ FFFFFH , 是由 CPU访问存储

器时 由地址总线发出的地址。

存储器管理:将程序中逻辑地址转移为物理地址的机构。

Page 60: 第二章 微处理器及其系统

60

段基址 0 0 0 0

3 2 1 015 0

偏移地址

基址加法器

物理地址

015

019

物理地址的形成

......

20000H

25F60H

25F61H

25F62H

25F63H

2000H

段基址

逻辑地址

段内偏移地址5F62H

逻辑地址与物理地址

Page 61: 第二章 微处理器及其系统

61

逻辑地址来源

操作类型 正常使用(隐含)段基址

可替换段地址

偏移地址

物理地址计算

取指令 CS 无 IP (CS)16d+(IP)

堆栈操作 SS 无 SP (SS) 16d+(SP)

BP 间址 SS CS,DS,ES

有效地址EA

(SS) 16d+EA

存取变量 DS CS,ES,SS

有效地址EA

(DS )16d+EA

源字符串 DS CS,ES,SS

SI (DS) 16d+(SI)

目标字符串 ES 无 DI (ES) 16d+(DI)

Page 62: 第二章 微处理器及其系统

62

取指令:自动选择代码段寄存器 CS ,

再加上由 IP决定的 16 位偏移量,

计算得到要取的指令 20 位物理地址。

堆栈栈顶操作:自动选择堆栈段寄存器 SS ,

再加上由 SP决定的 16 位偏移量,

计算得到堆栈栈顶操作需要的 20 位物理地址。

Page 63: 第二章 微处理器及其系统

63

涉及到操作数:自动选择数据段寄存器 DS 或附加段寄存器 ES ,

再加上 16 位偏移量,计算得到操作数的 20 位物理地址。

其中:

16 位偏移量 : 包含在:指令中的直接地址

某个 16 位地址寄存器的值

指令中的位移量 +16 位地址寄存器中值等。

16 位偏移量关键取决于指令的寻址方式。

Page 64: 第二章 微处理器及其系统

64

代码段

数据段

堆栈段

CS

IP

DS

SI ,DI BX或

SS

SP BP或

段寄存器和其他寄存器组合指向存储单元示意图

归纳段寄存器和其他寄存器组合指向存储单元示意图如下:

Page 65: 第二章 微处理器及其系统

65

3 、各段在存储器中分配

各段在存储器中分配分 4 种情况讨论:

( 1 ).由操作系统负责分配

一般情况,各段在存储器中的分配是由操作系统负责。

每个段可以独立地占用 64K 存储区。

( 2 ).各段也可以允许重迭

每个段的大小允许根据实际需要分配,不一定要占 64KB 。

每个存储单元的内容不允许发生冲突

(段可重迭,但使用时防止冲突)。

Page 66: 第二章 微处理器及其系统

66

( 3 ).在程序的首部设定各段寄存器的值

如果程序中的四个段都是 64K 的范围之内,

程序运行时所需要的信息都在本程序所定义的段区之内,

程序员只要在程序的首部设定各段寄存器的值就可以了。

( 4 ).动态地修改段寄存器的内容

如果程序的某一段(如数据段)在程序运行过程中会超过 64K空间,或者程序中可能访问除本身四个段以外的其他段区的信息, 那么在程序中必须动态地修改段寄存器的内容。

Page 67: 第二章 微处理器及其系统

67

64K程序

64K数据

64K堆栈

00000H

01000H

21000H

46000H

64K附加数据A0000H

0100H

2100H

4600H

A000H

段寄存器

CS

DS

SS

ES

4K程序

2K数据

100H堆栈

00000H

01000H

02000H

A0000H

0100H

0200H

0280H

段寄存器

CS

DS

SS02800H

64KB 为一段代码段范围 :01000H~10FFFH

各段允许重迭:代码段: 01000H~1FFFH数据段: 02000H~027FFH堆栈段: 02800H~028FFH

Page 68: 第二章 微处理器及其系统

68

注意:

以 8088/8086CPU的 IBMPC 系统中,存储器首尾地址的用途固定。

• 00000H~003FFH共 1K 内存单元用于存放中断向量。

• FFFF0H~FFFFFH 是存储器底部的 16 个单元。

系统加电复位时,会自动转到 FFFF0H 单元执行,

而在 FFFF0H 处存放一条无条件转移指令,转向系统初始化程序。

Page 69: 第二章 微处理器及其系统

8038680386 微处理器的结构微处理器的结构

一、 80386 微处理器的体系结构 二、存储器管理 三、 80386 的工作方式 四、中断

Page 70: 第二章 微处理器及其系统

80386微处理器的主要特点

采用全 32 位结构,其内部寄存器、 ALU 和操作是 32 位,数据线和地址线均为 32 位 提供 32 位外部总线接口,最大数据传输率为 32MB/s ,具有自动切换数据总线宽度的功能 具有片内集成的存储器管理部件 MMU ,可支持虚拟存储和特权保护,虚拟存储器空间可达 64太字节( TB ) 具有实地址方式、保护方式和虚拟 8086方式 3 种工作方式 采用了比 8086更先进的流水线结构,使其能高效、并行地完成取指、译码、执行和存储管理功能 ( 指令队列 16 字节长)

Page 71: 第二章 微处理器及其系统

80386的内部结构

总线接口部件( BIU)

指令预取部件( IPU)

指令译码部件( IDU)

指令执行部件( EU)

分段部件( SU)

分页部件( PU)

返 回

Page 72: 第二章 微处理器及其系统

总线接口部件( BIU ) 微处理器与系统的接口

其功能是:在取指令、取数据、分段部件请求和分页部件请求时,有效地满足微处理器对外部总线的传输要求。

BIU能接收多个内部总线请求,并且能按优先权加以选择,最大限度地利用所提供的总线宽度,为这些请求服务。

Page 73: 第二章 微处理器及其系统

指令预取部件( IPU )

职责是从存储器预先取出指令 有一个能容纳 16 条指令的队列

Page 74: 第二章 微处理器及其系统

指令译码部件( IDU ) 职责是从预取部件的指令队列中取出指令字节,对它们进行译码后存入自身的已译码指令队列中,并且作好供执行部件处理的准备工作。

如果在预译码时发现是转移指令,可提前通知总线接口部件 BIU去取目标地址中的指令,取代原预取队列中的顺序指令。

Page 75: 第二章 微处理器及其系统

指令执行部件( EU ) 由控制部件、数据处理部件和保护测试部件组成。 控制部件中包含着控制 ROM、译码电路等微程序驱动

机构。 数据处理部件中有 8 个 32位通用寄存器、算术逻辑运

算器 ALU、一个 64位桶形移位器、一个乘除法器和专用的控制逻辑,它负责执行控制部件所选择的数据操作。

保护测试部件用于微程序控制下,执行所有静态的与段有关的违章检验。执行部件 EU中还设有一条附加的32位的内部总线及专门的总线控制逻辑,以确保指令的正确完成。

Page 76: 第二章 微处理器及其系统

分段部件( SU ) 作用是应执行部件的请求,把逻辑地址转换成线性

地址。

在完成地址转换的同时还执行总线周期的分段合法性检验。

该部件可以实现任务之间的隔离,也可以实现指令和数据区的再定位。

Page 77: 第二章 微处理器及其系统

分段部件 SU和分页部件 PU统称为存储器管理部件 MMU( Memory Management Unit)

分页部件( PU ) 作用是把由分段部件产生的线性地址转换成物理地址

,并且要检验访问是否与页属性相符合。 为了加快线性地址到物理地址的转换速度, 80386

内设有一个页描述符高速缓冲存储器( TLB ),其中可以存储 32项页描述符,使得在地址转换期间,大多数情况下不需要到内存中查页目录表和页表。

试验证明 TLB 的命中率可达 98%。 对于在 TLB 内没有命中的地址转换, 80386 设有硬

件查表功能,从而缓解了因查表引起的速度下降问题。

Page 78: 第二章 微处理器及其系统

系统总线

分段部件 SU 分页部件 PU

执行部件 EU 预取部件 IPU译码部件 IDU

总线部件 BIU

线性地址

译码指令

数据(操作和结果)

有效地址

物理地址32 位

指令字节指令

80386 功能结构简图

Page 79: 第二章 微处理器及其系统

80386 内部寄存器 通用寄存器 段寄存器 系统地址寄存器 指针和标志寄存器 控制寄存器 调试寄存器 测试寄存器

Page 80: 第二章 微处理器及其系统

通用寄存器组( 32/16/8 位) EAX EBX ECX EDX ESI EDI EBP ESP

低 16 位可分为两个 8 位寄存器

低 16 位可作为独立的寄存器

注: 32 位寻址时,这 8个 32 位寄存器全部可用于提供偏移地址。

Page 81: 第二章 微处理器及其系统

段寄存器( 16 位) CS DS ES SS FS GS

每个 16 位段寄存器对应一个64 位的高速缓冲段描述符

一旦选择子装入段寄存器,相应的段描述符立刻被自动装入高速缓冲段描述符中

新增的 2 个段寄存器

Page 82: 第二章 微处理器及其系统

80386有 6 个 16 位的段寄存器,分别为CS、 SS、DS、 ES、 FS和GS 。在保护模式下,段寄存器的内容如图所示。

RPL(D1-D0 ):请求者特权级。 00 为最高级, 11 为最低级。 TI(D2): 描述符表选择位。 0 为选择全局描述符表, 1 为选择局部描述符表。

选择子( D15-D3) : 13 位的选择子,用于选择描述符表中的某一个描述符。一个描述符表中,最多有 213=8192 个描述符。

15

3 2 1 0

选择子 TI RPL

Page 83: 第二章 微处理器及其系统

指令指针及标志寄存器( 32 位)

指令指针 EIP

标志寄存器 EFLAGS (增加了 4 个标志位)

IOPL—— 指定 I/0 操作处于哪个特权级; NT——当前任务是否嵌套于另一任务; RF—— 调试结束,下一条指令后恢复程序的执行;

VM—— 是否工作于虚拟 8086方式 EFLAGS

Page 84: 第二章 微处理器及其系统

控制寄存器 80386 设置了 4 个 32 位的控制寄存器: CR0, CR1, CR2和 CR3 。

它们和系统地址寄存器一起,保存着全局性的机器状态,主要供操作系统使用。

Page 85: 第二章 微处理器及其系统

调试寄存器 80386 设有 8 个 32 位调试寄存器

DR0~DR7 ,它们为调试提供了硬件支持。

Page 86: 第二章 微处理器及其系统

测试寄存器

80386 设置了 8 个 32 位的测试寄存器 TR0~TR7,其中 TR0~TR5由 INTEL公司保留,用户只能访问 TR6, TR7 。

TR6 是测试控制寄存器, TR7 是测试状态寄存器,保存测试结果的状态。

Page 87: 第二章 微处理器及其系统

系统地址段寄存器(程序不可见) GDTR—— 48 位全局描述符表寄存器

指示全局描述符表的基地址 (32位 ) 和表的界限 (16位 )

IDTR —— 48 位中断描述符表寄存器 指示中断描述符表的基地址 (32位 ) 和表的界限 (16位 )

TR —— 16 位任务状态寄存器 LDTR—— 16 位局部描述符表寄存器

以上这些寄存器不直接被程序访问。

Page 88: 第二章 微处理器及其系统

程序不可见的寄存器

CSDSESSSFSGS

基地址 界限 权限

TRLDTR

基地址 界限GDTRIDTR

基地址 界限 权限

程序不可见区域

描述符(寄存器)高速缓冲区

Page 89: 第二章 微处理器及其系统

8086到 80386 的改进:

•16 位寄存器发展为 32 位寄存器;•增加了保护方式;•引入了多任务、任务切换的概念;•引入了四级特权机制,程序能在不同特权间切换;•引入了存储器管理单元 MMU ;•增加了新指令。

Page 90: 第二章 微处理器及其系统

二、 80X86 的存储器寻址方式 32 位内外 DB, 32位 AB ,直接寻址: 4GB ;虚存管理:

64TB

实地址模式 用段地址和偏移地址的组合寻址内存的第一个 1MB空间 段地址在段寄存器( CS、DS、 ES、 SS )中

实模式是指微处理器只能对物理存储器(或实际存储器)的 1MB空间进行访问的寻址方式,即它只允许微处理器寻址第一个 1MB存储器空间,即使是 Pentium 4 微处理器包括了更多的物理存储器空间也是如此。注意,第一个 1MB 存储器称为实模式存储器或常规内存。 DOS 操作系统就要求微处理器工作于实模式。

8086/ 8088只能工作于实模式,而 80286 及其以上的微处理器既可以工作于实模式,又可以工作于保护模式。

Page 91: 第二章 微处理器及其系统

保护虚地址模式 80286 以上微处理器在保护模式下寻址存储器时,既允许

访问位于第一个 1MB 的存储器空间(常规内存),又允许访问第一个 1MB 以上的存储器空间(扩展内存)。并且,对不同型号的微处理器而言,允许它们各自访问扩展内存空间的大小也不相同。

80286、 80386、 80486、 Pentium~ Pentium4 寻址空间(每个段的大小):

80286: 224( 8MB )80386 以上: 232( 4GB )

虚拟地址空间 64TB( 8K+8K 个描述符) 保护模式的寻址机制将从两个方面给予概括地说明,重点讨论选择子和描述符这两种新的数据结构的定义及使用原理,还要讨论为实现快速寻址而在微处理器内增设的不可见寄存器及其基本工作原理。

Page 92: 第二章 微处理器及其系统

选择子和描述符的基本概念是什么?选择子是指由系统或指令装入段寄存器中的 16 位信息;而描述符是指存放在存储器的描述符表中的由 8 字节组成的若干信息域,并且有两个可供访问程序和(或)数据的系统段描述符表,每一个表中包含有 8192 个描述符。

寻址时如何由选择子来选择描述符?在寻址时,选择子要从两个基本的系统段描述符表(以后还会讲到存储器中的第三个描述符表即中断描述符表)之一中选择 8192 个描述符中的一个。每个描述符占有连续的 8 个字节存储单元,它们用来说明存储段的起始位置、长度和访问权限。

Page 93: 第二章 微处理器及其系统

保护模式的存储器寻址

1MB实模式存储器

扩展存储器

由段寄存器提供段信息

由描述符提供段信息

FFFFFH

00000H

100000H

两种方式中的偏移地址的用法相同

•它们的段寄存器中存放的不再是段地址,而是一个 16 位的选择子,利用这个选择子先到存储器中去选择某个描述表内的一个描述符,再从描述符中取得段基地址以及段限与访问权限。

Page 94: 第二章 微处理器及其系统

选择子和描述符 选择子可以访问的两个描述符表是 :全局描述符表GDT

,它的起始地址存放在全局描述符表寄存器 GDTR 中;局部描述符表 LDT ,它的起始地址间接地存放在局部描述符表寄存器 LDTR 中。

注意:在存储器中全局描述符表只有一个,而存储器中的局部描述符表则是每个任务都有一个。

全局描述符包含有适用于所有应用程序的段定义,而局部描述符通常只用于某一个应用程序的段定义。由于每个描述符表中包含有 8192 个描述符,所以,在任何时刻,一个应用程序在理论上最多可选择两个描述表中的所有描述符,即 16384 个描述符。因为描述符用来说明寻址时的存储段,这就允许系统可能为每个应用程序描述多达16384 个存储段。

Page 95: 第二章 微处理器及其系统

如何访问描述符段寄存器内容

(选择子)

全局描述符表局部描述符表描述符表

GDTR

15 0GDT

描述符

···

···

线性地址空间偏

当前访问的段

存储器

分段管理机制

Page 96: 第二章 微处理器及其系统

描述符的格式( 80386 以上)

访问权限

段界限 (L19-L16)

G( 粒度 ) G=1 ,界限要乘以 4KB ,即段的大小为 4KB~ 4GB ; G=0 ,段的大小为 0~ 1MB 。D(16/32) D=1 ,寄存器和偏移地址均为 32 位; D=0 时均为 16位。AV( 段有效 ) AV=1 ,段有效; AV=0 ,段无效。访问权限:在保护方式下控制存储的访问。如:能否读写、优先 级别、段如何扩展等。

15 8 7 6 5 4 3 0

段基址 (B31~ B24) DG 0 AV

0

2

4

6

1

3

5

7

段基址 (B23~ B16)

段基址 (B15~ B0)

段界限 (L15~ L0)

Page 97: 第二章 微处理器及其系统

粒度位 G 的作用

粒度位 G段界限 起始地址 结束地址 段长度

0

00000H 10000000H 10000000H 1B

00001H 10000000H 10000001H 2B

001FFH 10000000H 100001FFH 512B

FFFFFH 10000000H 100FFFFFH 1MB

1

00000XXXH 10000000H 10000FFFH 4KB

00001XXXH 10000000H 10001FFFH 8KB

001FFXXXH 10000000H 101FFFFFH 2MB

FFFFFXXXH 10000000H 0FFFFFFFH 4GB

Page 98: 第二章 微处理器及其系统

例 :

0008HDS

描述符表

FF00000010

000092

段界限

段基地址

00100000H

001000FFH

数据段描述符

存储器

粒度 =0

GDTR 00000000H

FFFFFFFFH

图中的数据段寄存器 DS为 0008H ,它用请求特权级 00 从全局描述符表中寻址描述符 1 。描述符 1 定义段基地址为 00100000H 及段界限为 00FFH 的一个段,这个段就是数据段区域。如果某寻址单元的段内偏移量为 00008000H,则该单元的物理地址 = 段起始地址 + 段内偏移量=00100000H+00008000H=00108000H 。

Page 99: 第二章 微处理器及其系统

选择子的格式 选择子:加载到段寄存器中的内容

选择子( Selector ): 13 位 TI RPL

15 3 2 1 0

从 8192 个全局描述符或 8192个局部描述符中选择一个描述符

=0 使用 GDTR 作为描述符表的段基址,即访问 GDT=1 使用 LDTR 作为描述符表的段基址,即访问 LDT

请求者优先级别00 最高, 11 最低

Page 100: 第二章 微处理器及其系统

保护模式下,每个任务可寻址 8192 个全局段和 8192(2^13) 个局部段,每个段的最大长度为 4GB ,则一个任务最大的寻址范围,即虚拟存储空间是:

8192×4GB+8192×4GB=64TB

Page 101: 第二章 微处理器及其系统

1. 实地址方式 系统启动后, 80386自动进入实地址方式。

寻址方式、存储器管理、中断处理与 8086 一样。 操作数默认长度为 16 位,但允许访问 32 位寄存器(在指令前加前缀)。

不用虚拟地址,最大地址范围仍限于 1MB ,只采用分段方式,每段最大 64KB 。

存储器中保留两个固定的区域,一个是初始化程序区 FFFFFH-FFFF0H ,另一个为中断向量表 003FFH-00000H 。

80386的 4 特权级,在实地址方式下,程序在最高级 0 级上执行, 80386 指令集除了少数指令外,绝大多数指令在实地址方式下都有效。

80386 的工作模式

Page 102: 第二章 微处理器及其系统

虚拟存储

2. 保护虚拟地址方式 所谓保护是在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。

保护方式是 80386最常用的方式,系统启动后先进入实地址方式,完成系统初始化后立即转到保护方式。

这种方式提供了多任务环境下的各种复杂功能以及对复杂存储器组织的管理机制。只有在保护方式下, 80386才能发挥其强大的功能。

Page 103: 第二章 微处理器及其系统

保护虚拟地址方式特点 存储器采用虚拟地址空间、线性地址空间和物理地址空间三种方式来描述。在保护方式下, 80386寻址机构不同于 8086,与80286类似,是通过描述符的数据结构来实现对内存访问的。

强大的寻址空间。在保护方式下, 80386可以寻址的空间大致64TB ( 2^46)。这个空间就是所谓的虚拟地址空间。

使用 80386 的 4 级保护功能,可实现程序与程序、用户与用户、用户与操作系统之间的隔离和保护,为多任务操作系统提供优化支持。

在保护方式下, 80386既可以进行 16位运算,又可进行 32位运算。无论是 16位,还是 32位的运算,只要在保护方式下,它就能启动其分页单元,以支持虚拟内存。

Page 104: 第二章 微处理器及其系统

虚拟 8086方式 所谓虚拟 8086 模式是 指 一 个多任务的 环境

( Multitasking ),即模拟多个 8086 的工作方式。在这个模式之下, 80386被模拟成多个 8086微处理器并行工作。

虚拟 8086模式允许 80386将内存划分成若干部分,每个部分由操作系统分配给不同的应用程序,而应用程序、数据以及内存管理程序等部分则存放在所分配的内存中。

因此操作系统可根据时间上的平均分配或优先权,分给每个应用程序的执行时间。

Page 105: 第二章 微处理器及其系统

虚拟 8086方式主要特点 可执行原来采用 8086书写的应用程序。

段寄存器的用法与实地址方式一样,即段寄存器内容乘以 16后加上偏移量即可得到 20位的线性地址。

可以使用分页方式,将 1MB分为 256个页面。

分页内存是将内存以 4KB为单位进行划分,每一个 4KB称为一“页”,因此可以比段寻址方式划分要细,从而可处理较小的应用程序与数据段。

尽管在 V86方式下得到的线性地址是 20位即 1MB的空间,但由于线性地址可以通过页表映射到任何 32位物理地址,所以应用程序可以在80386现有实际内存的任何地方执行。

如果没有分页内存管理能力,则小片段的程序或数据在段寻址模式下,仍需要占有数十 KB的空间,且数据读写缓慢。

Page 106: 第二章 微处理器及其系统

实地址方式与虚拟 8086方式的主要区别

实地址方式的内存管理只采用分段管理方式,不采用分页管理,而虚拟 8086方式既分段又分页。

存储空间不同。实地址下的最大寻址空间为 1MB,而虚拟 8086方式下每个任务可以在整个内存空间寻址,即 1MB的寻址空间可以在整个存储器范围内浮动,因此 V86方式实际寻址空间为 4GB。

实地址方式下微处理器所有的保护机制都不起作用,因此不支持多任务,而虚拟 8086方式即可以运行 8086程序,又支持多任务操作,这就解决了 80286保护方式既要维持保护机制,又要运行 8086程序的矛盾。虚拟 8086方式可以是 80386保护方式中多任务操作的一个任务,而实地址方式总是针对整个 80386系统。

Page 107: 第二章 微处理器及其系统

实模式 REAL

PROTECTED保护模式

VIRTUAL虚拟 8086

※LMSW 指令※修改 CR0 指令

RRESET 位后修改 CR0的 PE=0

的 PE位 =1

通过中断

执行IRETD 指令

RESET 信号

RESET

对 CPU复位

三种模式之间的转换见图:

Intel80X86微处器三种工作模式关系: 实模式、保护模式和虚拟 86模式

Page 108: 第二章 微处理器及其系统

Pentium微处理器关于 Pentium (奔腾)的命名

按照 80X86 的逻辑, 80486 之后的下一个 CPU名字应是 80586 ,但是 Intel公司决定不再采用数字命名,原因是为了保护商标版权,所以 Intel 为了获得新一代 CPU 的商标专利 , 将 其 取名为 Pentium , 它 来 源 于希腊字“ Pente” ,其意思为 5 ,现在人们习惯上也将 Pentium叫做 586 ,或称作奔腾 586 ,或称 P5( Pentium未正式命名前的称呼)。

Page 109: 第二章 微处理器及其系统

Pentium 微处理器是 1993年投入使用的,与 80X86 系列保持完全兼容。采用 0.8微米的 Bi-CMOS技术,使芯片集成度达到310万个晶体管。全部引脚被封装在一个大型的 237针 PGA 中。时钟频率有 60MHz、 66MHz 、 75MHz 、 90MHz 、 100MHz、 120MHz、 133MHz、 150MHz 及 166MHz 等多种,其中 Pentium-66的运算速度为 112MIPS 。业内人士认为Pentium 是一个划时代的微处理器,它的性能已超过了原有的工作站及超级小型机。

Page 110: 第二章 微处理器及其系统

1 .采用超标量双流水线结构 超标量流水线设计是 Pentium 微处理器技术的核心。所谓超标量就是处理器内部含有多个执行单元来完成多条指令的同时执行。 Pentium 有两条分别称为 U 和 V 的指令流水线,各自有独立的算术逻辑单元 ALU 及高速缓存结构。这种双流水线并行作业的方式,使得 Pentium 在每个时钟周期内可同时执行两条指令。此外,还有一个执行单元,保证同时完成一条浮点运算指令。

Pentium 微处理器有如下技术特点:

Page 111: 第二章 微处理器及其系统

为 了 减 少 由 于 转 移导致流水线 的效率损失, Pentium采用分支预测技术来动态预测指令的目标地址,从而节省了 CPU 的执行时间。通常在用户程序中包含不少的条件转移指令,在流水线计算机中,这些转移指令由于产生分支可能使予取和予译码指令作废。 Pentium 内部有两个予取指令缓冲队列,在执行条件转移指令前,一个以顺序方式予取指令,另一个以转移方式予取

2 .分支预测技术

Page 112: 第二章 微处理器及其系统

指令,后者也称作分支目标缓冲器BTB( Branch Target Buffer ),这是一个小的 cache ,它基于转移指令,尤其是循环转移的固有特点,可以认为在大多数情况下,当一条转移指令被再次执行时,其成功与否及转移目标与上次相同。据此可构造动态的分支目标预测硬件。 BTB 是一种效果较好的硬件机制,统计表明BTB 的容量较大时(如超过 256项)预测准确率可达 90% 。通过这种动态分支预测技术,不管是否产生转移,所需指令都在执行前予取好。

Page 113: 第二章 微处理器及其系统

Pentium 内部有两个 Cache ,每个 8KB。一个 Cache 用于指令高速缓存,另一个用于数据高速缓存。这两个高速缓存可同时存取,前者可提供多达 32 位的原始操作码,后者每个时钟周期内可以提供两次存取的数据。这种双路高速缓存结构减少了争用高速缓存所造成的冲突,改进了处理器性能。

3 .双 Cache的采用

Page 114: 第二章 微处理器及其系统

浮点运算过程分为 8 个流水步级,前 4 步同整数流水线,接下来两步为二级浮点操作,最后两步为写结果、出错报告等。浮点运算单元对一些常用指令如 ADD、MUL 等不是采用微程序,而是由硬件实现,使浮点运算速度更快。

4 .更快的浮点运算单元

Page 115: 第二章 微处理器及其系统

Pentium 对 一 些 常 用 指 令 如MOV 、 PUSH 、 POP 、 INC 、 DEC 、 TEST及 JMP 等改用硬件实现,而不使用微操作,加快了指令的执行速度。

5 .固化常用指令

Page 116: 第二章 微处理器及其系统

Pentium 内部总线与 80386、 80486 一样,数据线和地址线的宽度都为 32 位,但 CPU 和内存进行数据交换的外部数据总线为 64 位,提高了读写存储器的速度,使得一个总线周期内的数据传输量提高了一倍。例如,在主频 66MHz 时,内部64 位总线使 CPU 与内存可一次传送 8 个字节数据,这样, Pentium 传送数据的速度达 528MB/S( 8 字节 ×66MHz )。此外, Pentium 还支持一种叫突发式的总线周期,该模式可在一个总线周期内传送 4 个 64 位数。

6 .增加总线宽度

Page 117: 第二章 微处理器及其系统

在存储管理中, Pentium 的页面大小除可采用 80386、 80486的 4KB页面外,还可选用高达 4MB 的页面。页面尺寸由控制寄存器 CR4 中的 PSE 位来选择。当选用 4MB 页面时,只需用页组目录项表来寻址 4MB 页面,无需页表,从而极大地减少了内存用量,并加快访问内存的速度。

Page 118: 第二章 微处理器及其系统

Itanium微处理器 地址总线64位,数据总线64位,内部集成度为

2.2亿个晶体管,约是 Pentium的 10倍。 特点:

可有三级 Cache ; 多个执行部件和多个通道; 数量众多寄存器; 采用完全并行指令计算技术; 采用新机制的分支预测技术。

Page 119: 第二章 微处理器及其系统

119

本小节结束