第二章 微处理器
? 8086 微处理器
? IA 微处理器的进化
? Pentium 微处理器
2.3 Pentium 微处理器
? Pentium 的结构特点
? 超标量流水线
? 指令的分支与预测
? Pentium的工作模式
1)总线单元
2)数据 Cache
3)代码 Cache
4)指令预取器
5)预取缓冲器
6)指令译码单元
7)控制单元
8)整数执行单元
9)寄存器组
10)地址产生器
11)分页单元
12)浮点单元
1,Pentium的
功能单元
2.3.1 Pentium
的结构特点
1,Pentium的功能单元
1)总线单元
l 地址发送接收器
l 写缓冲器
l 数据总线收发器
l 总线控制逻辑
l 总线主控制
l 第二级 Cache控制
l 内部 Cache控制
l 奇偶校验码生成和
控制
1,Pentium的功能单元
2)数据 Cache
? 8K字节
? 每行 32字节
? 两路组相联结构组织的高速缓存
? Cache目录为三端口结构
? 允许两条流水线同时访问并支持监听功
能。
1,Pentium的功能单元
3)代码 Cache
? 8K字节
? 每行 32字节
? 两路组相联结构组织的高速缓存
? Cache目录为三端口结构
? 允许两条流水线同时访问并支持监听功
能。
1,Pentium的功能单元
4)指令预取器
将所需要的指令从代码 Cache读到指令预
取器,如果所需要的指令行不在代码 Cache
中,它启动一个总线的猝发周期,CPU从外
部存储器取指进行 Cache行填充操作,
1,Pentium的功能单元
5)预取缓冲器
? 包含两组指令预取缓冲器, 两组之间 相互独立 。
? 指令预取器从指令 Cache中取出指令, 将它们顺
序 存放在一组预取缓冲器 中, 另一组 缓冲器则
处于 空闲 状态 。
? 当 预测分支指令 会发生 转移 时, 预取器将从转
移目标地址开始取出指令, 放入第二组 空闲的
预取缓冲器中 。
? 之后, 预取器一直使用第二组缓冲器直到 另一
条分支指令 被预测, 再 切换 回第一组缓冲器 。
? 在线性取指和执行指令时, 预取缓冲器将一对
指令分别送到两条流水线 U和 V的指令译码器,
进行指令配对分析 。
1,Pentium的功能单元
6)指令译码单元
? 两级指令译码单元, 译码级 1( Decode1) 和译
码级 2( Decode2) 。 ( 组成 )
? 译码级 1除了包含指令配对检查逻辑以外, 还包
含分支目标缓冲器 BTB( Branch Target Buffer) 。
BTB具有分支预测功能 。 ( 结构 )
? 译码级 2包含流水线 U和 V的存储器操作数产生逻
辑, 分段逻辑以及期望检测逻辑 。 ( 结构 )
? 在 Decode1中, 检查在两条流水线中操作码是否
满足 Pentium指令的配对规则, 如果满足, 两条
指令同时被送到 Decode2。 ( 功能 )
? 如果指令是分支指令, 则由 BTB检查预测该指令
是否会发生分支转移 。 在 Decode2中, 计算指令
的操作数在存储器中的地址 。 ( 功能 )
1,Pentium的功能单元
7)控制单元
? 包含微代码序列器和微代码控制 ROM( 组成 )
? 进行解释指, 令控制断点, 控制中断 ( 功能 )
? 控制整数流水线和浮点流水线的操作 ( 功能 )
1,Pentium的功能单元
8)执行单元
? 两个 ALU,分别属于 U,V流水线 ( 结构 )
? 一个桶状移位器, 属于 U流水线 ( 结构 )
? U的执行单元可以完成比 V相对复杂的指
令, 并可先于 V 中的 ALU 完成操作 。
( 功能 )
1,Pentium的功能单元
9)寄存器组
10) 地址产生器
每条流水线有一个地址产生器。根据每条
流水线中指令的操作数形成特定的地址。
1,Pentium的功能单元
11) 分页单元
将地址产生器来的线性地址转换为物理地
址 。 分页单元包含一个转换旁视缓冲器
( translation look-aside buffer), 用来保存
最近使用过的页目录项和页表项 。
12) 浮点单元
一条浮点流水线具有 8级流水步, 可以在
每个 CLK执行一条指令, 最快可以达到每个
CLK执行两条指令 。
2、寄存器组织
Pentium的寄存器组织
2、寄存器组织
1)基本结构寄存器
? 通用 REG EAX~EBX
ESP,EBP,ESI,EDI
? 段 REG CS,SS,DS,ES,FS,GS
在保护模式下, 虚拟存储地址 64T字节, 存储管理寄
存器便是实现存储管理机制 。 段寄存器 CS,SS,DS、
ES,FS,GS分别存放代码, 堆栈和数据段的段选择
符, 段选择符指向定义段的段描述符 。
? 指令指针 REG EIP
? 标志 REG EFlags*
除 386 VM(虚拟 86/保护模式)系统标志外,增加
ID,VIP(虚拟中断挂起)等 4位。
2)系统级寄存器
? 控制 REG CR0~CR3,CR4
PE:保护模式允许,MP:系统中有协处理器,PG:选择线性地
址到物理地址的页表转换 ……
CD,Cache 禁止,NW:不写直达,WP:保护用户级页,VME:
虚拟方式扩展,MCE:机器检查允许 ……
2)系统级寄存器
? 系统地址 REG GDTR
IDTR
LDTR
TR
段描述符提供段的大小, 位置以及段的访问控制
和状态信息, 8字节组成 。 段描述符根据属性描述符
分为全局描述符, 中断描述符以及局部描述符, 分别
存放在全局描述符表, 中断描述符表以及局部描述符
表中 。 全局描述符表寄存器 GDTR,中断描述符表寄
存器 IDTR则分别存放了全局描述符表和中断描述符
表的线性基地址和表的限长 。 局部描述符表寄存器
LDTR和任务寄存器 TR是用来存放局部描述符和任
务描述符的选择子 。 由段选择符通过描述符表就能够
找到段描述符进而得到段的基地址, 加上偏移量最终
得到线性地址 。
3)调试与测试寄存器
? 调试 REG DR0~DR7
保存断点线性地址,DR6:状态,
DR7:控制
? 测试 REG TR3~TR7
保存片内 CACHE测试数据,
TR6:控制,
TR7:状态
2.3.2 超标量流水线
1、系统复位和代码 Cache填充
? RESET以后, Cache是被禁止的, 应由驻留程序设
置 Cache的使能位 。
? Cache首次置为有效后, 内部的数据无效 。 指令预取
器从 Cache预取指令时, 发生 Cache不命中 。
? Cache向总线单元提出 Cache行填充请求, 通知总线
单元从外部 Cache或主存储器取指, 将 Cache行填满 。
? Cache行填充是在总线的猝发周期进行的 。 CPU每次
将 32字节代码在一个猝发周期内读入 Cache行填充缓
冲器 。 在送入 Cache的同时, 送入指令预取器 。
2,指令预取
? 指令由指令预取器从代码 Cache中取出, 成对存放在
两组预取缓冲器 ( 预取指令队列 ) 中有效的一组缓冲
器中 。
? 指令队列中指令顺序存放, 提供给两条指令流水线,
直至遇到一条分支指令时可能会发生变化 。
? 预测分支指令是否发生地址转移, 是在执行级的译码
单元 1 由分支目标缓冲器中的分支预测逻辑进行判断
的 。
? 如果预测该分支指令将要发生地址转移, 则 BTB通知
指令预取器切换指令存放的队列, 预取器从分支目标
地址处开始取指 。 如果预测不发生转移, 预取器仍然
顺序取指并将指令存放在现行工作的指令队列中 。
? 指令队列切换后, 由当前有效的指令队列给两条流水
线输送分支目标地址及以后的指令 。
2,指令预取
分支目标缓冲器与指令预取单元
3、指令配对和操作数地址计算
? 有效的指令队列将两条指令分别送 U和 V流水线的
Decode1,配对检测逻辑进行配对检查 。
? 如果两条指令能够配对执行, 译码级 1将它们送到
译码级 2。
? 如果不能配对, 则将 V流水线中的指令转移到 U流水
线中, 两条指令在 U流水线中串行地执行 。
? 在译码级 2中计算操作数地址 。 不管操作数是什么
寻址方式, 译码级 2用 一个 CLK完成操作数地址的
计算 。
3、指令配对和操作数地址计算
流水线的双译码 2级
4、指令并行执行条件和配对规则
1) 指令的并行执行
? U,V流水线执行级各有一个 ALU。 U的 ALU包含一
个桶状移位器, 可以执行一些在 V流水线中不能执行
的复杂指令 。
? 两条指令能够配对, 它们被并行执行 。 两个 ALU可
同时形成数据 Cache或数据存储器的访问请求, 对目
标寄存器或标志寄存器的回写 。 指令执行是通过 5个
流水步完成的 。
? 在执行级, 如果 V流水线拖延了时间, U流水线可以
继续做如回写目标寄存器或标志寄存器的工作 。 反
之则不行 。 若 U流水线拖延, V只能等待 U。
4、指令并行执行条件和配对规则
1) 指令的并行执行
Pentium流水线的双执行级
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令是简单指令;
mov reg,reg/mem/imm
mov mem,reg/imm
alu reg,reg/mem/imm
inc reg/mem
dec reg/mem
push reg/mem
pop reg
等等 。
? 非一字节指令长度相等;
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令不存在寄存器争用的问题, 即两条指令并行
执行时不会访问同一个寄存器;
read-after-write相关,
mov AX,imm;
mov [BP],AX;
write-after-write相关,
例 1,mov AX,imm;
mov AX,[BP];
例 2,mov AL,imm1;
mov AH,imm2,
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令中只有第一条指令能带指令前缀 。
? 有些指令只能在 U流水线中执行, 它们在指令序列中
是第一条指令时才能配对 。
图
2.2.4 指令的分支与预测
1、分支目标缓冲器和分支预测逻辑
1)概述
?分支预测逻辑, 可以对将要执行的分支指令进行动
态的转移预测 。
?分支预测逻辑是以该分支指令的历史执行情况为预
测依据的 。
?支持分支预测机制的关键部件是分支目标缓冲器
BTB(Branch Target Buffer)。 它是一个 256行 4路组相
联结构的 Cache,它记录了已执行过的分支指令的信
息 。
?指令执行后 ALU将分支指令的执行结果反馈到 BTB,
BTB再根据转移预测的正确与否来修正历史记录位
并指示预取器和预取队列做相应操作
1、分支目标缓冲器和分支预测逻辑
2) 分支目标缓冲器 BTB(Branch Target Buffer)
256个目录行, 每行包括,
?1 bit指示该项是否正在使用
?2 bits历史记录位表示该分支指令发生转移的频度
?这条转移指令源存储器的地址;
?该转移指令最后一次执行时的目标地址;
分支预测逻辑根据 BTB中的记录, 按照一定转移预测
策略对当前的分支指令进行转移预测 。
1、分支目标缓冲器和分支预测逻辑
2) 分支目标缓冲器 BTB(Branch Target Buffer)
历史记录 表示转移发生频度
00
Strongly not taken
01
Weakly not taken
10
Weakly taken
11 Strongly taken
表 2- 转移频度表
2、动态转移预测策略
1) 转移预测策略
? 一条分支指令进入任意一条流水线后, BTB就根
据它的源存储器地址在 Cache中查找;
? 如果这条指令在 BTB中有记录项, 分支预测逻辑
便以记录项的历史信息为依据, 预测转移发生的情况
? 历史记录为 11表示转移强烈发生, 10表示转移
较弱发生, 历史记录为 01表示转移基本不发生,
00表示转移强烈不发生 。
? 若历史记录项为 10或 11则指示正向预测, 预测
该指令将发生转移, 并指示预取器从在 BTB中
记录的指令转移目标地址开始取指令, 切换到
另一条指令队列顺序存放指令 。
? 若历史记录项为 01或 00则指示负向预测, 分支
预测逻辑预测该分支指令不发生转移 。
2、动态转移预测策略
1) 转移预测策略
? 当分支指令第一次进入流水线时, 它在 Cache中
没有记录项, 便产生一次查找 BTB不命中 。 对这条
分支指令的预测为不发生转移, 即使这条指令是无
条件转移指令 。 预取器也不做指令队列的切换 。
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
根据转移发生情况对历史位的修改
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
? 如果 正确 地预测了转移 发生 。 BTB记录的历史位上
升 。 分支指令之后的正确目标地址指令已经存在于流
水线 。
? 如果 错误 地预测转移 发生 。 BTB记录的历史位下
降 。 在流水线中分支指令以后的指令是不正确的, 必
须刷新 。 分支预测逻辑指示预取器切换到另一条指令
队列顺序取指 。
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
? 如果 正确 地预测了转移 不发生, 并且
? BTB中存在该分支指令相应的目录, 则目录的历
史位降级 。
? 在第一译码级发生了一次 BTB不命中, 说明 BTB
中不存在相应的目录项, 也不必在 BTB中建立目
录 。
? 如果 错误 地预测转移 不发生, 并且
? BTB中存在该指令相应的目录, 那么将目录的历
史位升级 。
? BTB中不存在该指令相应的目录, 则建立一个目
录并将它的历史位置为强烈发生 ( 11) 。
2.2.5 Pentium的工作模式
1,Pentium的工作模式
? 实地址方式( real address mode)
? 保护虚拟地址方式( protected virtual address
mode)
? 虚拟 8086方式( virtual 8086 mode)
? 系统管理方式( system management mode)
1,Pentium的工作模式
1) 实地址方式
? 在系统加电和复位以后, 微处理器进入实地址模式 。
? 采用和 8086类似的编程环境, 只是在 8086基础上进
行了扩充, 扩展了 32寄存器的指令, 并在 8086的编
程寄存器上增加了一些新的寄存器 。 它的寻址机构,
存储管理方式, 中断处理机制和 8086微处理器类似 。
? 在实地址模式中, 不使用虚拟地址 。
? 实地址模式用于系统的初始化 。 可以在实地址方式
下进入保护模式和系统管理模式 。
1,Pentium的工作模式
2)保护虚拟地址方式
? 是 Pentium微处理器的基本操作方式 。
? 对复杂的多任务操作系统环境提供全方位的支持,
实现复杂的系统管理功能 。
? 对存储器和数据有多种保护能力, 最突出的是段
的 4级特权保护 。
? 在保护模式下, 系统可以寻址 64TB( 16K× 4GB)
的虚拟地址空间 。 Pentium微处理器的存储管理机
制具有将虚拟逻辑地址转换到线性地址, 进而得
到物理地址的功效 。 通过描述符表等内存管理数
据结构, 将大容量的磁盘存储空间映射到内存储
器空间 。
1,Pentium的工作模式
2)保护虚拟地址方式
特权级的环形保护
1,Pentium的工作模式
3)虚拟 8086方式
? 是保护方式的一种功能,它并不是一种实际的处
理器工作方式。
? 可以在保护方式以及多任务的情况下运行 8086的
程序。该方式具有保护方式的任务属性,属于一
种准操作方式。目的是为了让在 8086方式下编制
的软件在保护方式下仍然能够执行 。
1,Pentium的工作模式
4)系统管理方式
? 提供了一种对操作系统或用户透明的专用程序,
实现了操作系统平台的专用功能, 如电源管理,
系统安全管理等 。
? 这些 专用程序只能被系统固件所利用, 专用代码
的运行透明于操作系统 。
? 系统管理方式只有在外部中断 SMI# 有效时, CPU保
存了运行程序或任务的上下文关系之后, 切入独
立的系统管理程序的地址空间 。
1,Pentium的工作模式
4)系统管理方式
? SMM(由 SMI#引起)中断入口为 38000H。
? SMM将 Pentium的状态保存到一个叫做转储记录
( dump record)的内存区域中( 3FFABH~3FFFFH,
3FE00H~3FEF7H)。
记录包括 CR0,CR3,Eflags,EIP… 停机自动重起
等
? Pentium CPU的系统可以进入睡眠模式并且可以返
回到中断点。
? PSM指令使系统退出 SMM模式。
1,Pentium的工作模式
4)系统管理方式
Pentium 不同工作
模式的地址空间
2、工作模式之间的转换
? 系统复位后, 微处理器进入实地址工作模式 。
? 控制寄存器 CR0中的 PE位的状态控制保护模
式与实地址模式之间的切换 。 PE=1时系统
为保护模式; PE=0时系统为实地址模式 。
? 标志寄存器 EFLAG中的 VM( 虚拟模式 ) 位
的状态管理虚拟 8086模式与保护模式之间的
切换 。 VM=1时, 系统为虚拟 8086模式;
VM=0时, 系统为保护模式 。
? 微处理器接收到 SMI中断时, 系统进入系统
管理模式 。
? 在系统管理模式下, 执行 RSM指令 ( 从系
统管理模式返回 ), 微处理器将返回中断前
的状态 。
2、工作模式之间的转换
? 进入保护模式前的工作
?初始化中断描述符表 IDT
? 初始化全局描述符表 GDT
? CR0,PE=1
? 执行段内 JMP指令清除指令队列,把 TSS
描述符基址装入 TR
? 将初始选择子装入段寄存器
2、工作模式之间的转换
控制寄存器 CR0,PE
EFLAG,VM
SMI#;
RSM指令
工作模式之间的转换
小结
? 8086微处理器分为执行部件 EU和总线接口部件 BIU两
个部分。执行部件负责指令的执行,总线接口部件负
责与存储器,I/O端口数据的传送。 EU和 BIU相互配合
实现指令级流水线。
? 8086具有最大或最小两种工作模式。在不同模式下,
8086部分管脚的定义也有所不同。理解管脚信号定义
和作用,是学习配置典型系统,理解微计算机工作原
理的基础。配置系统时,要正确使用地址锁存器和数
据驱动器,保证经过驱动以后的系统总线保持三态功
能。
? 在取指或传送数据时,CPU通过 BIU与存储器或 I/O端
口交换信息,BIU执行总线周期,完成对存储器和 I/O
的访问。一个总线周期一般由 T1~ T4四个状态组成。
总线操作时序,是分析系统、进行系统设计的依据。
小结
? 8086引入了存储器分段概念,8086的分段是 x86分段机
制的雏形。 8086通过段寄存器和偏移量寄存器共同实
现对存储单元物理地址的访问,内存的分段还为程序
的浮动装配创造了条件。
? Intel结构处理器可以处理 256种类型的向量中断,外部
中断按照是否受 IF标志控制分为可屏蔽中断和非屏蔽
中断。内部中断是 CPU执行 INT n指令或 CPU执行指令
出现错误时产生的中断。处理器根据中断类型查找中
断向量表,从中得到中断程序的入口地址。
小结
? 从 8086到 Pentium,Intel结构处理器不断
采用的新技术,克服微型计算机的瓶颈
效应,提高系统的速度和性能。其中包
括预取指令队列,Cache技术、存储管理
技术、超标量流水线技术以及指令的分
支预测技术。
小结
? Pentium处理器改造了指令预取技术,用两条预取指令
队列和分支预测缓冲器支持指令的分支预测,预测逻
辑以分支指令的历史执行情况为依据预测指令是否转
移,提高了指令预取功能的效率。
? Pentium有两条可以同步执行的 U和 V流水线。每个时
钟周期完成 2条整数指令或一条浮点指令。 U和 V流水
线分为指令预取、译码 1、译码 2、执行和回写五级流
水步。
? Pentium有四种工作模式,除了实地址模式、保护虚拟
地址模式和虚拟 8086模式以外,Pentium还可以工作在
系统管理模式。
? 实模式和保护模式之间、保护模式和虚拟 8086模式之
间以及它们和系统管理模式之间可以通过设置控制寄
存器 CR0中的 PE,标志寄存器 EFLAG中的 VM,以及
SMI#中断的请求和 SMI#中断返回指令 RSM来互相切换。
? 8086 微处理器
? IA 微处理器的进化
? Pentium 微处理器
2.3 Pentium 微处理器
? Pentium 的结构特点
? 超标量流水线
? 指令的分支与预测
? Pentium的工作模式
1)总线单元
2)数据 Cache
3)代码 Cache
4)指令预取器
5)预取缓冲器
6)指令译码单元
7)控制单元
8)整数执行单元
9)寄存器组
10)地址产生器
11)分页单元
12)浮点单元
1,Pentium的
功能单元
2.3.1 Pentium
的结构特点
1,Pentium的功能单元
1)总线单元
l 地址发送接收器
l 写缓冲器
l 数据总线收发器
l 总线控制逻辑
l 总线主控制
l 第二级 Cache控制
l 内部 Cache控制
l 奇偶校验码生成和
控制
1,Pentium的功能单元
2)数据 Cache
? 8K字节
? 每行 32字节
? 两路组相联结构组织的高速缓存
? Cache目录为三端口结构
? 允许两条流水线同时访问并支持监听功
能。
1,Pentium的功能单元
3)代码 Cache
? 8K字节
? 每行 32字节
? 两路组相联结构组织的高速缓存
? Cache目录为三端口结构
? 允许两条流水线同时访问并支持监听功
能。
1,Pentium的功能单元
4)指令预取器
将所需要的指令从代码 Cache读到指令预
取器,如果所需要的指令行不在代码 Cache
中,它启动一个总线的猝发周期,CPU从外
部存储器取指进行 Cache行填充操作,
1,Pentium的功能单元
5)预取缓冲器
? 包含两组指令预取缓冲器, 两组之间 相互独立 。
? 指令预取器从指令 Cache中取出指令, 将它们顺
序 存放在一组预取缓冲器 中, 另一组 缓冲器则
处于 空闲 状态 。
? 当 预测分支指令 会发生 转移 时, 预取器将从转
移目标地址开始取出指令, 放入第二组 空闲的
预取缓冲器中 。
? 之后, 预取器一直使用第二组缓冲器直到 另一
条分支指令 被预测, 再 切换 回第一组缓冲器 。
? 在线性取指和执行指令时, 预取缓冲器将一对
指令分别送到两条流水线 U和 V的指令译码器,
进行指令配对分析 。
1,Pentium的功能单元
6)指令译码单元
? 两级指令译码单元, 译码级 1( Decode1) 和译
码级 2( Decode2) 。 ( 组成 )
? 译码级 1除了包含指令配对检查逻辑以外, 还包
含分支目标缓冲器 BTB( Branch Target Buffer) 。
BTB具有分支预测功能 。 ( 结构 )
? 译码级 2包含流水线 U和 V的存储器操作数产生逻
辑, 分段逻辑以及期望检测逻辑 。 ( 结构 )
? 在 Decode1中, 检查在两条流水线中操作码是否
满足 Pentium指令的配对规则, 如果满足, 两条
指令同时被送到 Decode2。 ( 功能 )
? 如果指令是分支指令, 则由 BTB检查预测该指令
是否会发生分支转移 。 在 Decode2中, 计算指令
的操作数在存储器中的地址 。 ( 功能 )
1,Pentium的功能单元
7)控制单元
? 包含微代码序列器和微代码控制 ROM( 组成 )
? 进行解释指, 令控制断点, 控制中断 ( 功能 )
? 控制整数流水线和浮点流水线的操作 ( 功能 )
1,Pentium的功能单元
8)执行单元
? 两个 ALU,分别属于 U,V流水线 ( 结构 )
? 一个桶状移位器, 属于 U流水线 ( 结构 )
? U的执行单元可以完成比 V相对复杂的指
令, 并可先于 V 中的 ALU 完成操作 。
( 功能 )
1,Pentium的功能单元
9)寄存器组
10) 地址产生器
每条流水线有一个地址产生器。根据每条
流水线中指令的操作数形成特定的地址。
1,Pentium的功能单元
11) 分页单元
将地址产生器来的线性地址转换为物理地
址 。 分页单元包含一个转换旁视缓冲器
( translation look-aside buffer), 用来保存
最近使用过的页目录项和页表项 。
12) 浮点单元
一条浮点流水线具有 8级流水步, 可以在
每个 CLK执行一条指令, 最快可以达到每个
CLK执行两条指令 。
2、寄存器组织
Pentium的寄存器组织
2、寄存器组织
1)基本结构寄存器
? 通用 REG EAX~EBX
ESP,EBP,ESI,EDI
? 段 REG CS,SS,DS,ES,FS,GS
在保护模式下, 虚拟存储地址 64T字节, 存储管理寄
存器便是实现存储管理机制 。 段寄存器 CS,SS,DS、
ES,FS,GS分别存放代码, 堆栈和数据段的段选择
符, 段选择符指向定义段的段描述符 。
? 指令指针 REG EIP
? 标志 REG EFlags*
除 386 VM(虚拟 86/保护模式)系统标志外,增加
ID,VIP(虚拟中断挂起)等 4位。
2)系统级寄存器
? 控制 REG CR0~CR3,CR4
PE:保护模式允许,MP:系统中有协处理器,PG:选择线性地
址到物理地址的页表转换 ……
CD,Cache 禁止,NW:不写直达,WP:保护用户级页,VME:
虚拟方式扩展,MCE:机器检查允许 ……
2)系统级寄存器
? 系统地址 REG GDTR
IDTR
LDTR
TR
段描述符提供段的大小, 位置以及段的访问控制
和状态信息, 8字节组成 。 段描述符根据属性描述符
分为全局描述符, 中断描述符以及局部描述符, 分别
存放在全局描述符表, 中断描述符表以及局部描述符
表中 。 全局描述符表寄存器 GDTR,中断描述符表寄
存器 IDTR则分别存放了全局描述符表和中断描述符
表的线性基地址和表的限长 。 局部描述符表寄存器
LDTR和任务寄存器 TR是用来存放局部描述符和任
务描述符的选择子 。 由段选择符通过描述符表就能够
找到段描述符进而得到段的基地址, 加上偏移量最终
得到线性地址 。
3)调试与测试寄存器
? 调试 REG DR0~DR7
保存断点线性地址,DR6:状态,
DR7:控制
? 测试 REG TR3~TR7
保存片内 CACHE测试数据,
TR6:控制,
TR7:状态
2.3.2 超标量流水线
1、系统复位和代码 Cache填充
? RESET以后, Cache是被禁止的, 应由驻留程序设
置 Cache的使能位 。
? Cache首次置为有效后, 内部的数据无效 。 指令预取
器从 Cache预取指令时, 发生 Cache不命中 。
? Cache向总线单元提出 Cache行填充请求, 通知总线
单元从外部 Cache或主存储器取指, 将 Cache行填满 。
? Cache行填充是在总线的猝发周期进行的 。 CPU每次
将 32字节代码在一个猝发周期内读入 Cache行填充缓
冲器 。 在送入 Cache的同时, 送入指令预取器 。
2,指令预取
? 指令由指令预取器从代码 Cache中取出, 成对存放在
两组预取缓冲器 ( 预取指令队列 ) 中有效的一组缓冲
器中 。
? 指令队列中指令顺序存放, 提供给两条指令流水线,
直至遇到一条分支指令时可能会发生变化 。
? 预测分支指令是否发生地址转移, 是在执行级的译码
单元 1 由分支目标缓冲器中的分支预测逻辑进行判断
的 。
? 如果预测该分支指令将要发生地址转移, 则 BTB通知
指令预取器切换指令存放的队列, 预取器从分支目标
地址处开始取指 。 如果预测不发生转移, 预取器仍然
顺序取指并将指令存放在现行工作的指令队列中 。
? 指令队列切换后, 由当前有效的指令队列给两条流水
线输送分支目标地址及以后的指令 。
2,指令预取
分支目标缓冲器与指令预取单元
3、指令配对和操作数地址计算
? 有效的指令队列将两条指令分别送 U和 V流水线的
Decode1,配对检测逻辑进行配对检查 。
? 如果两条指令能够配对执行, 译码级 1将它们送到
译码级 2。
? 如果不能配对, 则将 V流水线中的指令转移到 U流水
线中, 两条指令在 U流水线中串行地执行 。
? 在译码级 2中计算操作数地址 。 不管操作数是什么
寻址方式, 译码级 2用 一个 CLK完成操作数地址的
计算 。
3、指令配对和操作数地址计算
流水线的双译码 2级
4、指令并行执行条件和配对规则
1) 指令的并行执行
? U,V流水线执行级各有一个 ALU。 U的 ALU包含一
个桶状移位器, 可以执行一些在 V流水线中不能执行
的复杂指令 。
? 两条指令能够配对, 它们被并行执行 。 两个 ALU可
同时形成数据 Cache或数据存储器的访问请求, 对目
标寄存器或标志寄存器的回写 。 指令执行是通过 5个
流水步完成的 。
? 在执行级, 如果 V流水线拖延了时间, U流水线可以
继续做如回写目标寄存器或标志寄存器的工作 。 反
之则不行 。 若 U流水线拖延, V只能等待 U。
4、指令并行执行条件和配对规则
1) 指令的并行执行
Pentium流水线的双执行级
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令是简单指令;
mov reg,reg/mem/imm
mov mem,reg/imm
alu reg,reg/mem/imm
inc reg/mem
dec reg/mem
push reg/mem
pop reg
等等 。
? 非一字节指令长度相等;
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令不存在寄存器争用的问题, 即两条指令并行
执行时不会访问同一个寄存器;
read-after-write相关,
mov AX,imm;
mov [BP],AX;
write-after-write相关,
例 1,mov AX,imm;
mov AX,[BP];
例 2,mov AL,imm1;
mov AH,imm2,
4、指令并行执行条件和配对规则
2) 指令的配对规则
? 两条指令中只有第一条指令能带指令前缀 。
? 有些指令只能在 U流水线中执行, 它们在指令序列中
是第一条指令时才能配对 。
图
2.2.4 指令的分支与预测
1、分支目标缓冲器和分支预测逻辑
1)概述
?分支预测逻辑, 可以对将要执行的分支指令进行动
态的转移预测 。
?分支预测逻辑是以该分支指令的历史执行情况为预
测依据的 。
?支持分支预测机制的关键部件是分支目标缓冲器
BTB(Branch Target Buffer)。 它是一个 256行 4路组相
联结构的 Cache,它记录了已执行过的分支指令的信
息 。
?指令执行后 ALU将分支指令的执行结果反馈到 BTB,
BTB再根据转移预测的正确与否来修正历史记录位
并指示预取器和预取队列做相应操作
1、分支目标缓冲器和分支预测逻辑
2) 分支目标缓冲器 BTB(Branch Target Buffer)
256个目录行, 每行包括,
?1 bit指示该项是否正在使用
?2 bits历史记录位表示该分支指令发生转移的频度
?这条转移指令源存储器的地址;
?该转移指令最后一次执行时的目标地址;
分支预测逻辑根据 BTB中的记录, 按照一定转移预测
策略对当前的分支指令进行转移预测 。
1、分支目标缓冲器和分支预测逻辑
2) 分支目标缓冲器 BTB(Branch Target Buffer)
历史记录 表示转移发生频度
00
Strongly not taken
01
Weakly not taken
10
Weakly taken
11 Strongly taken
表 2- 转移频度表
2、动态转移预测策略
1) 转移预测策略
? 一条分支指令进入任意一条流水线后, BTB就根
据它的源存储器地址在 Cache中查找;
? 如果这条指令在 BTB中有记录项, 分支预测逻辑
便以记录项的历史信息为依据, 预测转移发生的情况
? 历史记录为 11表示转移强烈发生, 10表示转移
较弱发生, 历史记录为 01表示转移基本不发生,
00表示转移强烈不发生 。
? 若历史记录项为 10或 11则指示正向预测, 预测
该指令将发生转移, 并指示预取器从在 BTB中
记录的指令转移目标地址开始取指令, 切换到
另一条指令队列顺序存放指令 。
? 若历史记录项为 01或 00则指示负向预测, 分支
预测逻辑预测该分支指令不发生转移 。
2、动态转移预测策略
1) 转移预测策略
? 当分支指令第一次进入流水线时, 它在 Cache中
没有记录项, 便产生一次查找 BTB不命中 。 对这条
分支指令的预测为不发生转移, 即使这条指令是无
条件转移指令 。 预取器也不做指令队列的切换 。
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
根据转移发生情况对历史位的修改
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
? 如果 正确 地预测了转移 发生 。 BTB记录的历史位上
升 。 分支指令之后的正确目标地址指令已经存在于流
水线 。
? 如果 错误 地预测转移 发生 。 BTB记录的历史位下
降 。 在流水线中分支指令以后的指令是不正确的, 必
须刷新 。 分支预测逻辑指示预取器切换到另一条指令
队列顺序取指 。
2、动态转移预测策略
2) 分支指令执行后 BTB对记录的操作
? 如果 正确 地预测了转移 不发生, 并且
? BTB中存在该分支指令相应的目录, 则目录的历
史位降级 。
? 在第一译码级发生了一次 BTB不命中, 说明 BTB
中不存在相应的目录项, 也不必在 BTB中建立目
录 。
? 如果 错误 地预测转移 不发生, 并且
? BTB中存在该指令相应的目录, 那么将目录的历
史位升级 。
? BTB中不存在该指令相应的目录, 则建立一个目
录并将它的历史位置为强烈发生 ( 11) 。
2.2.5 Pentium的工作模式
1,Pentium的工作模式
? 实地址方式( real address mode)
? 保护虚拟地址方式( protected virtual address
mode)
? 虚拟 8086方式( virtual 8086 mode)
? 系统管理方式( system management mode)
1,Pentium的工作模式
1) 实地址方式
? 在系统加电和复位以后, 微处理器进入实地址模式 。
? 采用和 8086类似的编程环境, 只是在 8086基础上进
行了扩充, 扩展了 32寄存器的指令, 并在 8086的编
程寄存器上增加了一些新的寄存器 。 它的寻址机构,
存储管理方式, 中断处理机制和 8086微处理器类似 。
? 在实地址模式中, 不使用虚拟地址 。
? 实地址模式用于系统的初始化 。 可以在实地址方式
下进入保护模式和系统管理模式 。
1,Pentium的工作模式
2)保护虚拟地址方式
? 是 Pentium微处理器的基本操作方式 。
? 对复杂的多任务操作系统环境提供全方位的支持,
实现复杂的系统管理功能 。
? 对存储器和数据有多种保护能力, 最突出的是段
的 4级特权保护 。
? 在保护模式下, 系统可以寻址 64TB( 16K× 4GB)
的虚拟地址空间 。 Pentium微处理器的存储管理机
制具有将虚拟逻辑地址转换到线性地址, 进而得
到物理地址的功效 。 通过描述符表等内存管理数
据结构, 将大容量的磁盘存储空间映射到内存储
器空间 。
1,Pentium的工作模式
2)保护虚拟地址方式
特权级的环形保护
1,Pentium的工作模式
3)虚拟 8086方式
? 是保护方式的一种功能,它并不是一种实际的处
理器工作方式。
? 可以在保护方式以及多任务的情况下运行 8086的
程序。该方式具有保护方式的任务属性,属于一
种准操作方式。目的是为了让在 8086方式下编制
的软件在保护方式下仍然能够执行 。
1,Pentium的工作模式
4)系统管理方式
? 提供了一种对操作系统或用户透明的专用程序,
实现了操作系统平台的专用功能, 如电源管理,
系统安全管理等 。
? 这些 专用程序只能被系统固件所利用, 专用代码
的运行透明于操作系统 。
? 系统管理方式只有在外部中断 SMI# 有效时, CPU保
存了运行程序或任务的上下文关系之后, 切入独
立的系统管理程序的地址空间 。
1,Pentium的工作模式
4)系统管理方式
? SMM(由 SMI#引起)中断入口为 38000H。
? SMM将 Pentium的状态保存到一个叫做转储记录
( dump record)的内存区域中( 3FFABH~3FFFFH,
3FE00H~3FEF7H)。
记录包括 CR0,CR3,Eflags,EIP… 停机自动重起
等
? Pentium CPU的系统可以进入睡眠模式并且可以返
回到中断点。
? PSM指令使系统退出 SMM模式。
1,Pentium的工作模式
4)系统管理方式
Pentium 不同工作
模式的地址空间
2、工作模式之间的转换
? 系统复位后, 微处理器进入实地址工作模式 。
? 控制寄存器 CR0中的 PE位的状态控制保护模
式与实地址模式之间的切换 。 PE=1时系统
为保护模式; PE=0时系统为实地址模式 。
? 标志寄存器 EFLAG中的 VM( 虚拟模式 ) 位
的状态管理虚拟 8086模式与保护模式之间的
切换 。 VM=1时, 系统为虚拟 8086模式;
VM=0时, 系统为保护模式 。
? 微处理器接收到 SMI中断时, 系统进入系统
管理模式 。
? 在系统管理模式下, 执行 RSM指令 ( 从系
统管理模式返回 ), 微处理器将返回中断前
的状态 。
2、工作模式之间的转换
? 进入保护模式前的工作
?初始化中断描述符表 IDT
? 初始化全局描述符表 GDT
? CR0,PE=1
? 执行段内 JMP指令清除指令队列,把 TSS
描述符基址装入 TR
? 将初始选择子装入段寄存器
2、工作模式之间的转换
控制寄存器 CR0,PE
EFLAG,VM
SMI#;
RSM指令
工作模式之间的转换
小结
? 8086微处理器分为执行部件 EU和总线接口部件 BIU两
个部分。执行部件负责指令的执行,总线接口部件负
责与存储器,I/O端口数据的传送。 EU和 BIU相互配合
实现指令级流水线。
? 8086具有最大或最小两种工作模式。在不同模式下,
8086部分管脚的定义也有所不同。理解管脚信号定义
和作用,是学习配置典型系统,理解微计算机工作原
理的基础。配置系统时,要正确使用地址锁存器和数
据驱动器,保证经过驱动以后的系统总线保持三态功
能。
? 在取指或传送数据时,CPU通过 BIU与存储器或 I/O端
口交换信息,BIU执行总线周期,完成对存储器和 I/O
的访问。一个总线周期一般由 T1~ T4四个状态组成。
总线操作时序,是分析系统、进行系统设计的依据。
小结
? 8086引入了存储器分段概念,8086的分段是 x86分段机
制的雏形。 8086通过段寄存器和偏移量寄存器共同实
现对存储单元物理地址的访问,内存的分段还为程序
的浮动装配创造了条件。
? Intel结构处理器可以处理 256种类型的向量中断,外部
中断按照是否受 IF标志控制分为可屏蔽中断和非屏蔽
中断。内部中断是 CPU执行 INT n指令或 CPU执行指令
出现错误时产生的中断。处理器根据中断类型查找中
断向量表,从中得到中断程序的入口地址。
小结
? 从 8086到 Pentium,Intel结构处理器不断
采用的新技术,克服微型计算机的瓶颈
效应,提高系统的速度和性能。其中包
括预取指令队列,Cache技术、存储管理
技术、超标量流水线技术以及指令的分
支预测技术。
小结
? Pentium处理器改造了指令预取技术,用两条预取指令
队列和分支预测缓冲器支持指令的分支预测,预测逻
辑以分支指令的历史执行情况为依据预测指令是否转
移,提高了指令预取功能的效率。
? Pentium有两条可以同步执行的 U和 V流水线。每个时
钟周期完成 2条整数指令或一条浮点指令。 U和 V流水
线分为指令预取、译码 1、译码 2、执行和回写五级流
水步。
? Pentium有四种工作模式,除了实地址模式、保护虚拟
地址模式和虚拟 8086模式以外,Pentium还可以工作在
系统管理模式。
? 实模式和保护模式之间、保护模式和虚拟 8086模式之
间以及它们和系统管理模式之间可以通过设置控制寄
存器 CR0中的 PE,标志寄存器 EFLAG中的 VM,以及
SMI#中断的请求和 SMI#中断返回指令 RSM来互相切换。