16 KiB
16 KiB
第三章 32位 Pentium 微处理器
本章系统介绍 Pentium(奔腾)32 位微处理器的内部结构、寄存器组、编程模型、引脚信号以及操作模式,是从 8086 向 32 位保护模式过渡的核心章节。
一、详细内容分析
1. Pentium 处理器内部结构(3.1)
1.1 基本构成(四大部分)
Pentium 内部按功能可划分为以下四部分:
| 功能部件 | 组成 | 作用 |
|---|---|---|
| 总线接口部件 | 内外总线接口 | 与外部存储器、I/O 交换数据 |
| 存储器扩展及管理 | 代码 Cache、数据 Cache、转移目标缓冲器(BTB)、分段分页部件 | 高速缓存与管理虚拟地址 |
| 控制器 | 控制 ROM、控制部件、预取缓冲存储器、指令译码部件 | 指令流的驱动与解释 |
| 运算器 | 整数运算部件(U/V 双 ALU)、整数寄存器组、浮点运算部件、浮点寄存器组 | 数据加工 |
1.2 结构六大特性(重点)
- 超标量流水线,超标量为 2——拥有 U、V 两条独立整数流水线,每周期最多可并行执行 2 条整数指令。
- 分立 Cache,指令数据各 8 KB——代码 Cache 与数据 Cache 分离,避免取指/取数冲突;并各有 TLB(快表)配合。
- 8 级流水线的浮点运算部件——浮点单元流水线深度 8 级,明显深于整数流水线。
- 动态转移预测——通过 BTB(Branch Target Buffer)记录分支历史,预测分支目标地址,减少流水线断流。
- 数据线内部 32 位、外部 64 位——属于 32 位机;外部数据总线加宽到 64 位以提升传输带宽。
- 4 种工作方式——实地址模式、保护虚地址模式(含虚拟 8086 模式)、系统管理模式。
1.3 双流水线 U / V
- U 流水线(Universal Pipeline):可执行所有整数指令,包括复杂指令。
- V 流水线(Vicinal Pipeline):只能执行简单指令(U 流水线的子集)。
- 两条流水线都有独立的地址生成器、ALU,可同时工作,实现"超标量"。
- 整数寄存器组 8 个 32 位寄存器(EAX/EBX/ECX/EDX/ESP/EBP/ESI/EDI)为 U、V 共享。
1.4 Cache 与 TLB
- 指令 Cache 8 KB、数据 Cache 8 KB,双端口结构,每个时钟可存取 32 位(数据侧 64 位)。
- Cache 中各含一个 TLB(Translation Lookaside Buffer),用于缓存最近使用的页表项,加速虚实地址转换。
2. Pentium 微处理器编程结构(3.2)
2.1 寄存器组总览(5 部分)
Pentium 寄存器组共 71 个寄存器,分为:
| 类别 | 数量 | 说明 |
|---|---|---|
| 基本结构寄存器 | 16 | 通用 8 + 专用 2 + 段 6 |
| 系统级寄存器 | 9 | 系统地址 4 + 控制 5(CR0-CR4) |
| 调试寄存器 | 8 | DR0–DR7 |
| 模型专用寄存器 | 20 | 用于性能监控、机器检测等 |
| 浮点寄存器 | 18 | 8 × 80 位数据 + 8 × 16 位控制/状态/标记 + 2 × 16/80 |
2.2 基本结构寄存器(与 8086 对比)
Pentium 将 8086 的 16 位寄存器全部扩展为 32 位(在前面加 "E"),但仍兼容使用低 16 位。
通用寄存器(8 个 32 位)
| 32 位 | 16 位 | 8 位(H/L) | 名称 |
|---|---|---|---|
| EAX | AX | AH / AL | 累加器 |
| EBX | BX | BH / BL | 基址寄存器 |
| ECX | CX | CH / CL | 计数寄存器 |
| EDX | DX | DH / DL | 数据寄存器 |
| ESP | SP | — | 堆栈指针 |
| EBP | BP | — | 基址指针 |
| ESI | SI | — | 源变址寄存器 |
| EDI | DI | — | 目的变址寄存器 |
专用寄存器(2 个)
| 32 位 | 16 位 | 名称 |
|---|---|---|
| EIP | IP | 指令指针 |
| EFLAGS | FLAGS | 标志寄存器 |
段寄存器(6 个 16 位)
CS、DS、SS、ES、FS、GS——Pentium 比 8086 增加了 FS、GS 两个附加段寄存器,便于复杂数据访问。
2.3 标志寄存器 EFLAGS
EFLAGS 扩展为 32 位(8086 仅 16 位),新增标志位含义如下:
| 位 | 标志 | 含义 |
|---|---|---|
| VM(17) | 虚拟 8086 方式 | VM=1 时 CPU 工作在虚拟 8086 模式 |
| RF(16) | 恢复标志 | RF=1 时即使遇断点也不产生单步异常 |
| NT(14) | 嵌套任务 | NT=1 表示当前任务嵌套于另一任务 |
| IOPL(12、13) | I/O 特权级 | 0–3,0 最高;CPL ≤ IOPL 才能执行 I/O 指令 |
| AC(18) | 对齐检查 | AC=1 时未对齐访问产生异常中断 17 |
| VIF(19) | 虚拟中断标志 | IF 的虚拟映像 |
| VIP(20) | 虚拟中断挂起 | 指示虚拟中断是否挂起 |
| ID(21) | 标识标志 | ID=1 表示支持 CPUID 指令 |
| OF/DF/IF/TF/SF/ZF/AF/PF/CF | 与 8086 相同 | 溢出/方向/中断允许/陷阱/符号/零/辅助进位/奇偶/进位 |
与 8086 相同部分:低 12 位状态标志基本保留;新增位集中在高 16 位。
2.4 段寄存器与保护模式段描述符
- 6 个段寄存器(CS/DS/SS/ES/FS/GS)每个 16 位,程序员可见,但实际段信息存放在内部的 段描述符寄存器(64 位,对程序员透明)。
- 段描述符寄存器包含:32 位段基址 + 20 位段限(界限) + 12 位段属性。
- 段描述符:8 字节,用于描述段的信息(基址、限长、属性)。
- 段描述符表(GDT/LDT):把多个段描述符组织成表。
- 段选择符:16 位,存于段寄存器中,指出对应描述符在描述符表中的位置(含索引、表选择、特权级)。
- 保护模式下逻辑地址→物理地址:逻辑地址 = 段选择符 : 32 位段内偏移;由选择符查描述符表得 32 位段基址,基址 + 偏移 = 物理地址。
2.5 系统级寄存器(系统地址 + 控制)
系统地址寄存器(4 个)——确定各种描述符表的基址:
| 寄存器 | 全称 | 格式 | 数量 |
|---|---|---|---|
| GDTR | 全局描述符表寄存器 | 32 位基地址 + 16 位界限 | 整个系统 1 个 GDT |
| IDTR | 中断描述符表寄存器 | 32 位基地址 + 16 位界限 | 整个系统 1 个 IDT |
| LDTR | 局部描述符表寄存器 | 16 位选择符 + 32 位基址 + 20 位界限 + 12 位属性 | 每个任务 1 个 LDT |
| TR | 任务状态寄存器 | 16 位选择符 + 32 位基址 + 20 位界限 + 12 位属性 | 任务切换时保存/恢复机器状态 |
控制寄存器(5 个:CR0–CR4)——用于控制 CPU 工作模式和分页机制:
- CR0:含 PE 位(保护模式允许,PE=1 进入保护模式)和 PG 位(分页允许,PG=1 启用分页)。
- CR1:保留未用。
- CR2:缺页(Page Fault)时保存导致异常的线性地址。
- CR3:页目录基址寄存器(PDBDR),保存页目录表的物理基址。
- CR4:扩展控制位(如 PSE 4 MB 页、PAE 等)。
3. Pentium 微处理器外部结构(3.3)
Pentium 引脚主要分为 10 类功能:
- 地址线及控制:A31–A3(32 位地址),A20M(地址位 20 屏蔽,用于实模式回绕)、ADS/ADSC、AP(地址偶校验)、APCHK、BE7–BE0(8 字节选通)。
- 数据线及控制:D63–D0(64 位数据总线)、DP7–DP0(数据偶校验)、PCHK、PEN。
- 总线周期控制:D/C、M/IO、W/R 信号组合定义总线周期类型;BRDY、NA(地址请求下一流水)、LOCK、SCYC 等。
- Cache 控制:CACHE、PCD(页级 Cache 禁止)、PWT(写直达)、KEN(Cache 行使能)、WB/WT、EADS、FLUSH、INV 等。
- 系统控制:CLK(60/66.6 MHz 外部、内部 100/120/133/166/200 MHz 倍频)、INIT、RESET、INTR、NMI。
- 总线控制:HOLD/HLDA(DMA 申请)、BREQ(总线请求)、BOFF(强制释放)。
- 检测与处理:BUSCHK、IERR、FERR、IGNNE、FRCMC。
- 系统管理模式:SMI、SMIACT。
- 测试:TCK、TDI、TDO、TMS、TRST(JTAG)。
- 跟踪和检查:PM0–PM2、BP0–BP3(性能监控/断点)、BT0–BT3(分支跟踪)、IU/IV/IBT(U/V 流水线指令完成/分支输出)、R/S、PRDY。
外部时钟为 60 或 66.6 MHz,内部倍频(1.5/2/2.5/3 倍)后得到 100/120/133/166/200 MHz 等频率。
4. Pentium 微处理器的操作模式(3.5)
Pentium 有 3 种主要操作模式:
实地址模式(Real Mode)
保护虚地址模式 ┬─ 一般保护模式
└─ 虚拟 8086 模式
4.1 实地址模式(Real Mode)
- Pentium 与 8086 兼容,基本体系结构相同。
- 存储空间 1 MB;不允许分页,所以线性地址 = 物理地址。
- 物理地址 = 段地址 × 16 + 偏移地址(与 8086 完全一致)。
- 保留两个物理区域:
- 中断向量区:
0000:0000H ~ 0000:03FFH(1 KB) - 系统初始化区:
0FFFF:0000H ~ 0FFFF:000FH(16 字节)
- 中断向量区:
- 可以在实模式下通过设置控制寄存器切换到保护模式。
4.2 保护虚地址模式
保护概念包含三方面:
- 任务间存储器空间保护:每个任务有独立地址空间。
- 段属性及界限保护:通过段描述符中的限长、属性检查越界。
- 特权级保护:见下文。
存储空间:
- 32 位物理地址 → 4 GB 物理地址空间。
- 46 位逻辑地址 → 64 TB 逻辑地址空间。
环(特权级):4 级,0~3(高→低):
- 0 级:最高特权级(内核/操作系统核心)。
- 3 级:最低特权级(用户程序)。
- 高特权级可访问低特权级数据;低特权级可调用高特权级程序(通过门机制),但不能任意访问。
保护模式存储器寻址:逻辑地址 = 选择符 + 偏移地址;通过选择符查描述符表得段基址,与偏移相加得到物理地址。
4.3 虚拟 8086 模式
- 是保护模式下的一种子模式。
- 标志位 VM=1 时进入。
- 使 Pentium 可以在保护模式下执行 8086 应用程序(如运行 DOS 程序),同时仍享受分页、特权级等保护特性。
4.4 分页机制(补充)
- 保护模式下可启用分页(CR0.PG=1),将 32 位线性地址映射到 32 位物理地址。
- 二级页表结构:页目录(Page Directory)+ 页表(Page Table),每页 4 KB。
- CR3 保存页目录基址;CR2 保存缺页线性地址。
- TLB 用于缓存最近用过的页表项,命中可显著加速地址转换。
5. 知识点扩展(PPT 之外补充)
5.1 Pentium 的"三大技术"——考试高频
Pentium 相对 80386 的核心创新在于 RISC 化超标量设计,主要三大技术:
- 超标量(Superscalar):双流水线 U/V,单周期可发射 2 条指令。
- 超流水线(Superpipelined):整数流水线 5 级(取指、译码1、译码2、执行、写回),浮点 8 级,深度流水线提高主频。
- 动态分支预测(Branch Prediction):通过 BTB 缓存分支历史,目标地址预测准确率可达 75–90%。
5.2 后继型号演进(简要)
- Pentium Pro (P6):引入乱序执行(OOO)、集成 L2 Cache、RISC 微操作(μop)将 CISC 指令分解为 RISC 类操作。
- Pentium II:P6 核心 + MMX 多媒体指令集,Slot 1 封装。
- Pentium III:增加 SSE(Streaming SIMD Extensions,70 条新指令,128 位 XMM 寄存器)。
- Pentium 4 (NetBurst):超长流水线(20~31 级)、高主频、引入 SSE2/SSE3,主打频率战。
- 新增指令(Pentium 起):CPUID、RDTSC、CMPXCHG8B、RDMSR/WRMSR 等系统管理类指令;MMX(多媒体扩展);后续 SSE 系列。
5.3 与 8086 的核心差异速查表
| 项目 | 8086 | Pentium |
|---|---|---|
| 数据总线宽度 | 16 位 | 内部 32 位 / 外部 64 位 |
| 地址总线宽度 | 20 位 | 32 位 |
| 物理地址空间 | 1 MB | 4 GB |
| 通用寄存器 | 16 位 | 32 位(兼容 16 位与 8 位) |
| 段寄存器 | 4 个(CS/DS/SS/ES) | 6 个(+ FS/GS) |
| 流水线 | 无 / 简单预取 | U/V 双流水线超标量 |
| Cache | 无 | L1 分立 8K+8K |
| 分支预测 | 无 | BTB 动态预测 |
| 工作模式 | 实模式 | 实模式 + 保护模式 + 虚拟 8086 |
二、考点总结
必背核心(高频)
- 【高频】Pentium 与 8086 的对比:寄存器 32 位扩展、段寄存器增加到 6 个、外部数据总线 64 位、地址线 32 位、物理空间 4 GB。
- 【高频】Pentium 三大技术:超标量(U/V 双流水线,2 条指令/周期)、超流水线(整数 5 级、浮点 8 级)、动态分支预测(BTB)。
- 【高频】32 位扩展寄存器:EAX/EBX/ECX/EDX/ESP/EBP/ESI/EDI、EIP、EFLAGS;可继续拆分使用 AX/BX/CX/DX 与 AH/AL 等。
- 【高频】段寄存器 6 个:CS、DS、SS、ES、FS、GS;段描述符 8 字节 = 32 位基址 + 20 位限 + 12 位属性。
- 【高频】控制寄存器 CR0 的 PE/PG 位:PE=1 进入保护模式;PG=1 启用分页;二者组合出实模式/保护无分页/保护有分页/虚拟 8086 四种工作方式。
- 【高频】控制寄存器 CR1–CR4 作用:CR1 保留;CR2 保存缺页线性地址;CR3 页目录基址;CR4 扩展控制(PSE/PAE 等)。
- 【高频】特权级 0–3:0 最高(内核)、3 最低(用户);高可访问低,低通过门调用高。
- 【高频】虚拟地址到物理地址转换:
- 实模式:物理 = 段 × 16 + 偏移(1 MB 空间)。
- 保护模式:物理 = 段描述符基址 + 32 位偏移(先分段,再分页)。
- 启用分页后:线性地址 → 经页目录、页表 → 物理地址。
常考要点
- 基本构成 4 部分:总线接口、存储器管理(Cache/BTB/分页)、控制器(ROM/译码/预取)、运算器(整数 U/V + 浮点)。
- 结构特性 6 条:超标量 2、分立 Cache 8K+8K、浮点 8 级流水、动态分支预测、内 32 外 64、4 种工作方式。
- U/V 流水线差异:U 可执行全部整数指令;V 只能执行简单指令;整数寄存器组共享。
- Cache 结构:指令 8 KB + 数据 8 KB,双端口,每时钟取 32 位(数据 64 位),各带 TLB。
- 预取缓冲器:2 个 32 B 预取缓冲器,每次可预取 256 位(32 B)。
- 寄存器组组成:基本结构 16 + 系统级 9 + 调试 8 + 模型专用 20 + 浮点 18 = 共 71 个。
- EFLAGS 新增位:VM(位 17)、RF(16)、NT(14)、IOPL(12–13)、AC(18)、VIF(19)、VIP(20)、ID(21);其余低位与 8086 相同。
- IOPL 含义:CPL ≤ IOPL 时才允许执行 I/O 指令与设置 IF;只有特权级 0 才能修改 IOPL。
- 系统地址寄存器:GDTR(基址+界限)、IDTR、LDTR、TR;GDT/IDT 整个系统唯一,LDT 每个任务一个。
- 段描述符与段选择符:段选择符 16 位(含索引、表选择、特权级),程序员可见;段描述符 8 字节,透明。
- 4 种工作方式:实地址、保护虚地址、虚拟 8086、系统管理(SMM);由 CR0 与 EFLAGS.VM 共同决定。
- 实模式保留区:中断向量区
0000:0000–0000:03FF、系统初始化区0FFFF:0000–0FFFF:000F。 - 外部时钟:60/66.6 MHz,内部倍频到 100/120/133/166/200 MHz。
- 引脚分类:10 大类——地址线、数据线、总线周期控制、Cache 控制、系统控制、总线控制、检测与处理、系统管理、测试、跟踪检查。
- 新增指令:CPUID、RDTSC、CMPXCHG8B、RDMSR/WRMSR、MMX、SSE 系列(Pentium III 起)。
简答/计算题常见考法
- 画出 Pentium 内部结构框图并标出 U/V 流水线、Cache、BTB、控制 ROM 等关键部件。
- 说明实模式/保护模式下逻辑地址到物理地址的转换过程。
- 说明 CR0 中 PE、PG 各位组合所对应的工作状态。
- 解释特权级 0–3 的含义及访问规则。
- 比较 Pentium 与 8086 的寄存器结构(位数、名称、用途)。
- 说明 U/V 流水线的分工及超标量含义。
- 说明 BTB 与动态分支预测的作用。
- 解释段描述符、段选择符、GDT/LDT 的关系。