第2章Intel IA-32处理器结构与原理

Download Report

Transcript 第2章Intel IA-32处理器结构与原理

现代微机原理与接口技术(第3版)
第2章 Intel IA-32/Intel 64处理器
结构与原理
1
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.1 提高处理器的性能
2.1.1 问题的分析
衡量CPU的性能指标可以是单位时间CPU完成的指
令数,其计算公式如下:
CPU性能 = CPU的主频×IPC
也可用CPU完成应用程序所需的总时间。其计算公
式如下::
程序的指令数×CPI
CPU时间 =
时钟频率
IPC:每时钟执行的指令条数。
CPI:每指令平均时钟数
思考:根据公式要提高CPU性能,可采用什么办法
2 ?
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
如何提高主频:
要提高主频→减少每个流水级的执行周期→减小每个
流水级的任务量→将任务再分解→增加流水线深度
IA-32的流水线级数
型号
流水级数
Pentium
5
P6架构
12-13
主频MHz
66
200
Pentium 4
20~31
Core Nehalem
14
16
2000~3600 2667
思考:流水线级数变多后,有没有副作用?
3
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
思考:从图上可以得到哪些结论?
4
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.1.2 提高处理器指令级并行性的技术
如果各指令之间不存在相关性,那么它们在流水线中
是可以并行执行的,这种指令间潜在的重叠就是指令
级并行(Thread-Level Parallelism, ILP)。
1.指令间的相关性
(1)结构相关
所谓结构相关(也称为名相关)是指不同指令同时存
取相同的寄存器或存储器,但这些指令间不存在数据
流。
在冯·诺依曼存储结构中,数据和程序放在同一存
储器,如果此时一条指令要读或写数据,而刚好取
指单元要取指令,就出现结构相关
5
http://www.njyangqs.com/
1.指令间的相关性
现代微机原理与接口技术(第3版)
(2)数据相关
某条指令的操作数依赖前一条或前几条指令的运行结
果,这就是所谓的数据相关。
① 写后读相关(RAW,Read After Write)
A=B+C
D=3*A // 在数据A上写后读
② 读后写相关(WAR,Write After Read)
A=B+C
B=D*2 // 在数据B上读后写
② 写后写相关(WAW,Write After Write)
A=B+C
A=D*2 // 在数据A上写后写
思考:C语言里的 i+=2 包含了哪些数据相关?
6
http://www.njyangqs.com/
1.指令间的相关性
现代微机原理与接口技术(第3版)
(3)控制相关
控制相关可以看作是对指令指针寄存器的RAW相关问
题。
取指阶段需要读指令指针寄存器,而分支语句会在执
行阶段计算出新的转移地址写入指令指针寄存器,于
是当分支条件满足的时候,就出现下条指令读指令指
针寄存器(取指阶段)早于分支语句写该寄存器(执
行阶段)的情况。
7
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.超标量技术
所谓超标量是指处理器中含有多条流水线,每个时钟
能够译码、发射、执行多条指令。显然,超标量技术
提高了处理器的IPC,也进而减少了理想流水线CPI。
在超标量流水线中,并行执行的流水线条数称为超标
度。从Pentium到Ivy Bridge处理器的超标度为2~4。
8
I1
I2
I3
I4
I5
I6
I7
I8
I9
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
OF
EX
思考:超标度为几?
WB
WB
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3. 动态执行技术的使用(P6架构开始)
 乱序执行技术
 为了提高指令流的执行效率,乱序执行核心分析多条指令
的数据相关性和资源可用性,然后在不损失数据完整性的
前提下,采用能充分发挥多个处理部件并行工作的指令顺
序来执行。这个指令顺序可能和原始程序的不一样。 乱
非乱序执行演示
乱序执行演示
R=F-7
Q=D-E
P=A*2
A=B+C
R=F-7
Q=D-E
P=A*2
A=B+C
流
水
1
9
执
行
方
向
流
水
2
流
水
1
执
行
方
向
流
水
2
序
可
解
决
什
么
问
题
?
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3. 动态执行技术的使用(P6架构开始)
 分支预测
 预测分支未来的方向,为处理器预先译码分支之后的
指令提供依据
 静态分支预测
• 预测无条件转移指令发生分支
• 预测向前分支的条件转移指令不发生转移
• 预测向后分支的条件转移指令发生转移
 动态分支预测
• 使用分支目标缓冲器BTB记录分支转移历史信息
• BTB中缓存了先前执行过的分支语句的指令地址BIA
,分支跳转的目的地址BTA,以及分支历史记录
• 取指时,同时检索L1 Cache和BTB
• 如最终分支结果与预测相符,则避免了流水线的停顿
• 如最终分支结果与预测不符合,那么将刷新BTB的有
关记录,并进行分支误预测的恢复操作
10
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3. 动态执行技术的使用(P6架构开始)
 推测执行
 在分支预测基础上,推测分支路径,并按推测执行。
 一旦证实分支预测正确,已提前建立的“预测结果”立
即变成“最终结果”并及时修改机器的状态。
 寄存器重命名
 如果两条指令只是寄存器名字相重,实际数据并不相关
,可以对其中一条指令的换寄存器来解决。
 寄存器重命名技术是在指令被译码成微代码时将IA指令
使用的IA通用寄存器映射成微代码使用的内部寄存器。
 用这种办法可以解决寄存器结构相关的问题。
11
http://www.njyangqs.com/
4. 分离Cache与指令配对
现代微机原理与接口技术(第3版)
 数据-代码分离式L1 Cache,符合MESI协议。
 数据-代码分离式L1Cache能解决流水线的什么问题?
指令配对
 配对指令是可以同时进不同流水线的指令
 配对的指令必须是简单指令
 两条指令之间不可存在“写后读”或“写后写”这样的
寄存器相关性
 一条指令不能同时既包含位移量又包含立即数
 带前缀(Jcc指令的OF除外)的指令只能出现在U流水中
,因为Pentium的V流水只执行简单指令
 浮点运算指令不能和任何指令配对(FCXH除外)
MOV AX, 200
MOV CX, AX
12
MOV AX, 200
MOV AX, 412
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.1.3 提高处理器数据级并行性的技术
1.多媒体SIMD指令扩展技术
for (int i=0;i<=MAX;i++)
c[i]=a[i]+b[i];
不使用 SIMD指令
A[1]
A[0]
+
not used
+
not used
+
B[0]
B[1]
not used
not used
C[0]
C[1]
not used
not used
not used
+
128-bit
Registers
not
used
not used
使用 SIMD指令
13
A[3]
+
A[2]
+
A[1]
B[3]
B[2]
B[1]
C[3]
C[2]
C[1]
+
A[0]
+
128-bit Registers
B[0]
C[0]
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
4x doubles
8x floats
2x dqword
2x doubles
4x floats
1x dqword
16x bytes
AVX****
SSE4***
SSE**
SSE2
SSE3
MMX*
8x words
4x dwords
2x qwords
8x bytes
4x words
2x dwords
1x qwords
* MMX使用的是64位的 x87 浮点寄存器作为MMX寄存器;
**SSE, SSE2和SSE3使用了新的128位的XMM 寄存器;也可用MMX寄存器
***SSE4使用了新的128位的XMM寄存器,但是不使用MMX寄存器
****AVX使用了新的256位的YMM 寄存器;也可用XMM寄存器,但是不使用MMX寄存器
14
http://www.njyangqs.com/
2.融合图形处理单元GPU
现代微机原理与接口技术(第3版)
 GPU在浮点运算、并行计算等计算方面可以提
供数十倍乃至于上百倍于CPU的性能
 图形核心具有12个新设计的EU(执行单元),
它们包含更大的寄存器文件,用以提高并行性
和复杂着色的执行效率
 EU改进了并行分支技术来提高面对深度嵌套条
件下的并行化的效率
 图形核心无论在媒体处理还是3D方面因为提供
了大量的固定功能的硬件支持,使得在相同的
热能耗下,性能得以显著的提升。
15
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.1.4 提高处理器线程级并行性的技术
1. 超线程(Hyper-Threading, HT)技术,SMT
• 允许物理上单个的处理器采用共享执行资源的方法同时执
行两个或更多的分离代码流(线程)
• HT技术由单处理器上的2个或者多个逻辑处理器组成,每
个逻辑处理器都有自己的IA-32结构状态(AS)
• 每个逻辑处理器都有自己的IA-32通用寄存器、段寄存器
、控制寄存器、调试寄存器等
• 逻辑处理器共享的资源包括执行引擎和系统总线接口
支持HT的IA-32处理器
AS
AS
处理器核心
处理器核心
处理器核心
每个处理器一
个独立封装
http://www.njyangqs.com/
AS=IA-32结构状态
2个逻辑处理器
共享一个核
16
传统多IA-32处理器系统
AS
AS
现代微机原理与接口技术(第3版)
2. 多核(Multi-Core)技术,CMP
• 通过在一个物理封装中包含多个分离的完整执行
核来提供硬件多线程能力
• 每个完整的执行核不仅有自己的AS,还拥有自己
的执行引擎,总线接口与L2 Cache 。
• 结构上有支持HT技术的和不支持HT技术的多核
结构
• 核之间有交叉开关、总线链接、环链路多种连接
方式
• 众核(Many-Core)技术
大于32核的CPU
采用片上网络(NoC)互联较多
Intel采用双向环链接其第一个众核,61核的MIC
17
http://www.njyangqs.com/
Intel的多核结构
Pentium D IA-32处理器 现代微机原理与接口技术(第3版)
Pentium EE IA-32处理器
AS
AS
AS AS AS
AS
执行引擎 执行引擎
执行引擎 执行引擎
Local APIC Local APIC
L2 Cache
L2 Cache
总线接口
总线接口
系统总线
Core 2 Duo处理器
AS
执行引擎
Local APIC
Local Local Local Local
APIC APIC APIC APIC
L2 Cache L2 Cache
总线接口
总线接口
系统总线
AS
执行引擎
Local APIC
L2 Cache
总线接口
系统总线
18
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.1.5 Intel 64 结构 (EM64T技术)
• 完全兼容IA-32指令集
• Intel 64架构包括兼容模式和64位模式
兼容模式允许大多数IA-32程序无需修改地运
行在64位操作系统下
64位模式下具有以下特性:
64位线性地址空间
最高支持40位物理地址空间
增加8个新的通用寄存器
增加8个新的流SIMD扩展(SSE, SSE2和SSE3)
64位宽的通用寄存器和指令指针寄存器
19
http://www.njyangqs.com/
2.2 Core微结构的处理器
2.2.1 Core微结构
20
现代微机原理与接口技术(第3版)
• 4 个14级流水线
•兼容32位的64位设计
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.2.2 Core 2处理器内部结构示意图
21
http://www.njyangqs.com/
2.2.3 酷睿2处理器新技术
现代微机原理与接口技术(第3版)
• 宽位动态执行(Wide Dynamic Execution)
 着眼于提高每时钟周期处理的指令数,改善执行时
间和能源效率
P6架构
Core架构
3个译码器
3条流水线
4个译码器
同时完整的取、发
4条流水线
射、执行3条指令
同时完整的取、发
射、执行4条指令
22
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
Instruction Queue
• 宽位动态执行
 宏融合(macrofusion)
技术能够在译码期间将
常见的指令对组合到一
个单独的微代码中(
Micro-op)
for (int i=0; i<100000; i++) {
…
Cycle 1
}
Cycle 2
23
add
ecx, 1
mov
[mem1], ecx
mov
eax, [mem1]
cmp
eax, [mem2]
jge
label
add
ecx, 1
mov
[mem1], ecx
mov
eax, [mem1]
cmp
eax, [mem2]
jge
label
dec0
dec1
dec2
dec3
dec0
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
Instruction Queue
• 宽位动态执行
 宏融合(macrofusion)
技术能够在译码期间将
常见的指令对组合到一
个单独的微代码中(
Micro-op)
for (unsigned int i=0;
i<100000; i++) {
…
}
24
Cycle 1 add
add
ecx, 1
mov
[mem1], ecx
mov
eax, [mem1]
cmp
eax, [mem2]
jae
label
ecx, 1
mov
[mem1], ecx
mov
eax, [mem1]
cmpjae eax, [mem2], label
dec0
dec1
dec2
dec3
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• 宽位动态执行
 微代码融合(Micro-op fusion)技术能在微代码
执行前将译码自同一个x86指令的几个常见微代
码对融合成一个微代码
u-ops of a Store “mov [mem1] ,edx”
sta mem1
std [mem1] ,edx
st [mem1] , edx
微代码融合有效地“加宽”了流水线
25
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• 智能功效管理(Intelligent Power Capability)
超细粒度功耗控制能够只对处于工作状态的
部件提供电源,而关闭非工作部件的电源供
应,从而有效降低功耗。
分离总线技术能够使总线宽度动态适应数据
宽度的需要,对无效的信息位使其进入低电
压状态,从而进一步降低功耗。
功效管理平台技术通过调整散热风扇运作模
式,从外部降低处理器温度。
26
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• Intel 智能内存访问(Intel® Smart Memory Access)
1000
能
100
性
CPU
10
CPU-存储器性能差
距每年增长50%
DRAM
DRAM 9%/年.
(2X/10年)
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
1
µProc
60%/年.
(2X/1.5年)
 目标
27
CPU
L1Cache
 WHEN – 确信数据能在最早的时候被取
L2Cache
出并准备好
L3Cache
 WHERE – 确信要使用的数据靠CPU最
Memory
近
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• Intel 智能内存访问(Intel® Smart
Memory Access)
 内存消歧技术利用装载(load)数据指令和存储(
store)数据指令之间的乱序执行来提高推测执行部
件的效率,其原则是尽量将load指令提到它前面不
冲突的store指令之前执行。(解决WHEN的问题)
Memory
28
Store1
Y
Load2
Y
Store3
W
Load4
X
没有内存消歧技术时Load4
这样做究竟有什么好处?
下面来看有内存消歧技术的情况
先乱序
只能等待前面所有Store结束
Data W
Data Z
Data Y
Data X
http://www.njyangqs.com/
• Intel
智能内存访问(Intel®
现代微机原理与接口技术(第3版)
Smart Memory Access)
 高级预取技术确保被使用的数据已经位于最靠近能
获得最小内存延迟的地方。(解决WHERE问题)



用独立于流水线的预测器预测将来要用的数据,提前取
到Cache中
L1D是3 clk的延迟和1 clk的通过时间; L2是14和2 clk
Cache失效延迟
失效后去读 L2 ~ 10 cycles
 L2 失效, 存取存储器 ~300 cycles (server/FBD)
 L2 失效, 存取存储器 ~165 cycles (Desk/DDR2)
 L1

Cache 带宽
 Cache带宽

~ 8.5 bytes/cycle
存储带宽
 桌面系统
~ 6 GB/sec/socket (linux)
 服务器 ~3.5 GB/sec/socket
29
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• Intel高级智能Cache (Intel® Advanced Smart
Cache) -带来了新的双核结构
采用了共享L2 Cache的双核结构
可以在两个核心间动态调整L2 Cache的分配
AS
AS
执行引擎
执行引擎
Local APIC Local APIC
Cache
Line
L2
Cache
总线接口
前端总线
30
AS
执行引擎
AS
执行引擎
Local APIC Local APIC
L2 Cache
Cache
Line
L2 Cache
总线接口
总线接口
前端总线
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.3 SandyBridge微结构的处理器
2.3.1 SandyBridge微结构
31
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.3.2 SandyBridge的环状互连结构
 SandyBridge采用片上系统设计
,提供了一个高带宽双向环状总
线来连接IA核与非核中不同的子
系统
 一个系统代理 、图形单元(GT
)、最后一级Cache
 环形总线由四条独立的环组成
 数据环(DT)、请求环(QT)、响
应环(RSP)、侦听环(SNP)
SandyBridge的Graphics部分主要包含了
32
命令流处理器(Command Streamers)、媒体处理器(
Media Processing)、多格式媒体解码器(Multi-Foumat
Codec)、执行单元(EU)、统一执行单元阵列(Array of
Unified Execution Units)、媒体取样器(Media Sampler)、
纹理采样器(Texture Sampler)以及指令缓冲等。
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.4 IA-32处理器基本执行环境
2.4.1 IA-32处理器的工作模式
• 实地址模式 -开机进入的模式
- 与8086/8088兼容,但可以处理32位数据
- 1MB内存空间,分段管理,所有程序全在0 (核心)级
- MS-DOS运行在此模式下,PC机开机首先进入的也
是该模式
- 对内存和程序甚至操作系统没有任何保护能力
• 保护模式-最主要的工作模式
- 支持多任务操作,并保护每个任务的数据和程序
- 存储器采用虚拟地址空间、线性地址空间和物理地
址空间三种方式来描述,具有存储保护功能
- 虚拟地址空间64TB(246)
- 4级管理,可以使用分页或分段技术管理内存
- Windows、Linux操作系统均运行在该模式下
33
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• 虚拟8086模式(V86模式)-怀旧的感觉
- 在保护模式下可以同时模拟多个8086处理器的工作
比较项目
实地址模式
虚拟8086模式
内存管理
分段管理
既分段又分页
存储空间
1MB
每个8086程序任务寻址1MB,总寻
址空间4GB
多任务
不支持
支持,虚拟8086模式是IA-32保护模
式中多任务的一个任务
• 系统管理模式-“休闲”时光
- 为操作系统和正在运行的应用程序提供透明的电源
管理和系统安全平台功能
- 进入本模式系统将转到一个独立的地址空间运行,
并保存当前程序或任务的基本环境
• IA-32e模式(支持Intel 64 Architecture的处理器才有)
34
http://www.njyangqs.com/
工作模式的转换
35
现代微机原理与接口技术(第3版)
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.4.2 IA-32处理器在实地址模式下的存储管理
1. IA-32的基本数据类型
IA32的基本数据类型包括Byte, Word, Doubleword,
Quadword和Double Quadword
1) 整型数据类型
包括无符号数和有符号数,其中有符号数以2的补
码形式表示,最高位为符号位,1表示负数
36
类型
位数
无符号数范围
有符号数范围
字节
8
0~255
-128~+127
字
双字
四字
16
32
64
0~65535
0~232-1(4G-1)
0~264-1(16T-1)
-32768~+32767
-231~+231-1
-263~+263-1
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2) 浮点数据类型
最高位为符号位,接下来是有效数和阶码,有效数
给定了数的有效位数,决定数的精度;阶码决定数据
范围。
类型
37
符号 有效 阶码
位数 位数 位数
单精度浮点数
1
24
8
双精度浮点数
1
53
11
扩展精度浮点数
1
64
16
数据范围
1.18×10-38 ~
3.40 ×1038
2.23×10-308~
1.79×10308
- 4932
3.37×10
~
1.18×104932
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3) 指针数据类型
指针用于定位存储单元的地址,包括近指针和远指针
• 16位模式下
• 近指针为段内16位有效地址
• 远指针包括16位段首地址和16位段内有效地址
• 32位模式下
• 近指针为段内32位有效地址
• 远指针包括16位段选择器和32位段内有效地址
• 64位模式下
• 近指针为64位有效地址
• 操作数是32位时,远指针包括16位段选择器和16位段内
有效地址
• 操作数是32位时,远指针包括16位段选择器和32位段内
有效地址
• 操作数是64位时,远指针包括16位段选择器和64位段内
有效地址
38
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
4) 位域(field)数据类型
是一个连续的二进制位序列,可以从存储器任何一
个字节的任何一位开始。可包含32位数据。
5) 串数据类型
是一个连续的位、字节、字或双字序列,位串可以
从存储器任何一个字节的任何一位开始,并可包含232-1
位,字节、字或双字串可包含232字节。
6) BCD和压缩BCD数据类型
用4位无符号二进制数表示十进制的0~9。压缩BCD
每个字节包含二位十进制数,非压缩BCD数每字节的
低4位表示一位十进制数,高4位为0。
39
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.存储单元的地址和内容
以字节为单位编址,即一个字节数据占一个存储
单元
• 数据采用小端存放方式
• 以字、双字、四字和双四字为单位存储数据时,分
•
40
别占相邻2个、4个、8个和16个连续字节单元,其最
低字节的地址为该数据地址。
地址一般采用边界对齐,如果边界不对齐,IA-32会
采用2倍于边界对齐时的总线周期来完成读写操作,
有些双四字的操作甚至会引起一般性保护异常。
http://www.njyangqs.com/
存储单元的地址和内容
12H
34H
56H
78H
9AH
BCH
DEH
FFH
41
0000H
0001H
0002H
0003H
0004H
0005H
0006H
0007H
现代微机原理与接口技术(第3版)
0000H地址上,
字节数据是12H
字数据是3412H
双字数据是78563412H
四字数据是FFDEBC9A78563412H
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3. 实地址模式存储器寻址
在此模式下,IA-32可以理解成是一个可处理32位数
据的高速的8086。
a. 存储器地址的分段
• 解决16位寄存器表示20位地址的问题
• 段是最大长度为64KB的连续的内存储器块
•物理地址 每个存储单元的20位实际地址,有唯一
性,访问主存时必须用物理地址
• 逻辑地址 每个存储单元的地址用两部分表示:
段基址(段首址的高16位)
偏移量 (段内某单元相对段首址的地址差,也称
为有效地址EA)
42
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
• 物理地址=段基址×16+偏移量
书写形式:段基址:偏移量
16位段地址
(左移四位)
+
=
: 16位段内偏移
16位段地址
0000
16位段内偏移
20位物理地址
6417H∶0100H
6417H×10H + 0100H = 64170H + 0100H = 64270H
几个不同的逻辑段地址在物理地址上是可重叠的
43
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.4.3 IA-32处理器中的寄存器
基本寄存器
系统级寄存器
数据寄存器
通用寄存器
地址指针寄存器
变址寄存器
段寄存器
指令指针寄存器
标志寄存器
控制寄存器
系统地址寄存器
调试与测试寄存器
浮点寄存器
44
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
1.通用寄存器
高16位扩展
16位名称 32位名称
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
DI
SI
32位
AX
BX
CX
DX
SP
BP
DI
SI
EAX
EBX
ECX
EDX
ESP
EBP
EDI
ESI
累加器
基址变址
计数
数据
堆栈指针
基址指针
目的变址
源变址
16位
• AX、BX、CX、DX、SP、BP、DI、SI分别是EAX、EBX
、ECX、EDX 、ESP、EBP、EDI、ESI的低16位
• AL、BL 、CL、DL分别是AX、BX、CX、DX的低八位
• AH、BH 、CH、DH分别是AX、BX、CX、DX的高八位
45
http://www.njyangqs.com/
1.1 通用数据寄存器




现代微机原理与接口技术(第3版)
EAX 累加器存放操作数和结果,乘除运算、
I/O指令中特指
EBX 基址寄存器 查表转换和间接寻址时存
放基址
ECX 计数寄存器 串操作和循环中做计数
EDX 数据寄存器 乘除运算、I/O指令中特指
• 可以32位、16位或8位形式访问,例如,
EAX可使用16位的AX,也可以使用8位的
AH、AL
46
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
1.2 通用地址寄存器




ESP
EBP
ESI
EDI
堆栈指针寄存器,存放栈顶地址
基址指针寄存器,存放栈段基地址
源变址寄存器
目的变址寄存器
• 存放地址的偏移量,也可存放操作数,
但只能以32位或16位为单位访问
如:ESI可以使用16位的SI
47
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
1.3 64位模式下的通用寄存器
48
http://www.njyangqs.com/
2.段寄存器
2.1段寄存器介绍
现代微机原理与接口技术(第3版)
……
堆栈段
CS 代码段寄存器
数据段
 DS 数据段寄存器
附加段
 SS 堆栈段寄存器
代码段
 ES 附加段寄存器
……
 FS、GS 附加段寄存器
一个完整的程序
• 段寄存器均为16位的寄存器
• 用于存储器寻址,存放段的开始地址
• 在64位模式下,FS, GS无效,CS, DS, ES, SS
均指向基地址为0的“段”。

49
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.2段寄存器与段
IA-32的6个16位的段寄存器,专门存放段基地
址:
• 代码段存放当前程序的指令代码
• 数据段存放程序涉及的源数据或结果
• 堆栈段是以“先入后出”为原则的数据区
• 附加段是辅助数据区,存放串或其他数据
• 用户可以同时使用6个段,段间可以邻接、部
分重叠、 重叠或不相邻,但注意,段的实体
(被实际使用的段空间)是不能重叠的。
50
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
段寄存器和相应存放偏移地址的寄存器之间的默认组合
段
默认段 16位偏移
寄存器
IP
代码段 CS
数据段 DS
BX、SI、 DI、
一个8或16位
数
堆栈段 SS
SP或BP
32位偏移
附加段 ES
FS
GS
EDI(用于串指令)
无默认
无默认
51
DI
无默认
无默认
EIP
EAX、EBX、ECX、
EDX、 EDI、 ESI、一个
8或32位数
ESP或EBP
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
2.3 关于堆栈与堆栈段





52
堆栈是内存中以字为单元的“先入后出”、最
大空间为64KB的存储区域,采用自底向上生
成堆栈,栈底地址大于栈顶地址
栈区最高地址-1的单元为栈底,最后进栈数据
所对应的地址单元为栈顶
SS指向栈的起始单元(地址最小的单元)
SP寄存器动态跟踪栈顶位置,初始化时SP的值
为堆栈的长度,即指向栈底+2单元
将数据送入堆栈叫压栈,从栈中取出数据叫弹
出,均以字(16位或32位)为单位
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
53
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
3.指令指针寄存器
 EIP 指令指针寄存器:即程序计数器,指向
下一条指令在代码段中的偏移量
高16位扩展
16位的IP
32位指令指针寄存器EIP

64位模式下,扩展高32位成为64位RIP
高32位扩展
32位的EIP
64位指令指针寄存器RIP
54
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
4.标志寄存器
• EFLAGS 标志寄存器( 程序状态字寄存器
PSW ):记录系统运行中的各种状态 和信
息。由各种标志位构成,反映运算后的结果
特征,将影响某些指令(如条件转移指令)
的执行。
55
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
8086/8088程序状态寄存器(标志寄存器)
b15
b8 b7
OF DF IF TF SF ZF
符号
名称
CF
进位标志
OF
溢出标志
ZF
零标志
SF
符号标志
AF 辅助进位标志
PF
奇偶标志
DF
方向标志
IF 中断允许标志
TF
跟踪标志
56
AF
PF
b0
CF
值为“1”的条件
加/减法时产生进位/借位
运算结果超出有符号整数能表示的范围
运算结果为0时
运算结果的最高位为“1”时
运算时半字节(b3)产生进位/借位
操作结果低8位为“1”的位数为偶数时
串操作中地址指针向低地址方向移动
允许CPU响应可屏蔽中断请求时
CPU处于单步执行的工作方式
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
思考题:以下的几个4位十六进制数相加,会使得
8088状态寄存器的以下几位为什么值?
CF
57
C000H 4008H
8000H
+ 8000H + C000H + 4008H
0000H
8000H 8010H
1
0
1
0808H
+ C000H
C808H
0
PF
1
1
0
0
AF
0
0
1
0
ZF
1
0
0
0
SF
0
1
1
1
OF
1
0
1
0
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
注意:
1. 进位标志CF是表示无符号数是否超出范围
,如CF=1,运算结果仍然正确;
2. 溢出标志表示的是有符号数运算结果是否超
出范围,超出范围则运算结果已经不正确;
3. 处理器对两个操作数进行运算的时候是按照
无符号数求得结果,并相应设置CF,根据
是否超出有符号数的范围设置OF;
4. 对于程序员,如果做无符号运算,应该关心
CF,做有符号运算应该关心OF。
58
http://www.njyangqs.com/
IA-32 标志寄存器EFLAG
保留
这部分同8088
ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF
31… 22 21 20 19 18 17
符号
IOPL
现代微机原理与接口技术(第3版)
16 15 14 13 12 11 10 9 8
7
6 5 4
3 2 1 0
值为“1”的条件
其值表示该任务使用的I/O操作的特权级
00为最高的核心级,11是最低的用户级
NT
嵌套标志
当前任务嵌套在另一个任务中时
RF
恢复标志
DBUG调试时忽略下一条指令遇到的断点
VM 虚拟8086模式 从保护模式进入到虚拟8086模式
AC
对齐检查
数据访问允许对齐检查
VIF 虚拟中断位
允许V86扩展或允许保护模式虚拟中断
VIP 虚拟中断未决位 有未决的虚拟中断
ID
标识位
对它的读写表明处理器支持CPUID
59
名称
IO特权位
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
当机器复位的时候CS=FFFFH,EIP, DS, ES, SS,
FS, GS以及EFLAGS寄存器被清零。因为复位之
后CS:EIP= FFFF:00000000,因此机器复位或开
机后,都会自动从这个地址开始取指令,这里应
该是BIOS的第一条指令。
60
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
结构相关引出分离缓存
时钟
第1条指令
第2条指令
第3条指令
第4条指令
0
1
取指
2
译码
取指
3
执行
4
5
6
7
存储
回写
译码
执行
存储
回写
取指
译码
执行
存储
回写
取指
译码
执行
存储
8
回写
……
……
返回
61
http://www.njyangqs.com/
现代微机原理与接口技术(第3版)
突发数据传输(一次地址,多次连续的数据传输)
返回
62
http://www.njyangqs.com/