Files
Operating-System/8086/Exam/第3章 32位Pentium微处理器.md
2026-06-29 21:12:21 +08:00

284 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第三章 32位 Pentium 微处理器
> 本章系统介绍 Pentium奔腾32 位微处理器的内部结构、寄存器组、编程模型、引脚信号以及操作模式,是从 8086 向 32 位保护模式过渡的核心章节。
---
## 一、详细内容分析
### 1. Pentium 处理器内部结构3.1
#### 1.1 基本构成(四大部分)
Pentium 内部按功能可划分为以下四部分:
| 功能部件 | 组成 | 作用 |
|---------|------|------|
| **总线接口部件** | 内外总线接口 | 与外部存储器、I/O 交换数据 |
| **存储器扩展及管理** | 代码 Cache、数据 Cache、转移目标缓冲器BTB、分段分页部件 | 高速缓存与管理虚拟地址 |
| **控制器** | 控制 ROM、控制部件、预取缓冲存储器、指令译码部件 | 指令流的驱动与解释 |
| **运算器** | 整数运算部件U/V 双 ALU、整数寄存器组、浮点运算部件、浮点寄存器组 | 数据加工 |
#### 1.2 结构六大特性(重点)
1. **超标量流水线,超标量为 2**——拥有 U、V 两条独立整数流水线,每周期最多可并行执行 2 条整数指令。
2. **分立 Cache指令数据各 8 KB**——代码 Cache 与数据 Cache 分离,避免取指/取数冲突;并各有 TLB快表配合。
3. **8 级流水线的浮点运算部件**——浮点单元流水线深度 8 级,明显深于整数流水线。
4. **动态转移预测**——通过 BTBBranch Target Buffer记录分支历史预测分支目标地址减少流水线断流。
5. **数据线内部 32 位、外部 64 位**——属于 32 位机;外部数据总线加宽到 64 位以提升传输带宽。
6. **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 + 控制 5CR0-CR4 |
| 调试寄存器 | 8 | DR0DR7 |
| 模型专用寄存器 | 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 特权级 | 030 最高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 个CR0CR4**——用于控制 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 类功能:
1. **地址线及控制**A31A332 位地址A20M地址位 20 屏蔽用于实模式回绕、ADS/ADSC、AP地址偶校验、APCHK、BE7BE08 字节选通)。
2. **数据线及控制**D63D064 位数据总线、DP7DP0数据偶校验、PCHK、PEN。
3. **总线周期控制**D/C、M/IO、W/R 信号组合定义总线周期类型BRDY、NA地址请求下一流水、LOCK、SCYC 等。
4. **Cache 控制**CACHE、PCD页级 Cache 禁止、PWT写直达、KENCache 行使能、WB/WT、EADS、FLUSH、INV 等。
5. **系统控制**CLK60/66.6 MHz 外部、内部 100/120/133/166/200 MHz 倍频、INIT、RESET、INTR、NMI。
6. **总线控制**HOLD/HLDADMA 申请、BREQ总线请求、BOFF强制释放
7. **检测与处理**BUSCHK、IERR、FERR、IGNNE、FRCMC。
8. **系统管理模式**SMI、SMIACT。
9. **测试**TCK、TDI、TDO、TMS、TRSTJTAG
10. **跟踪和检查**PM0PM2、BP0BP3性能监控/断点、BT0BT3分支跟踪、IU/IV/IBTU/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 保护虚地址模式
**保护概念**包含三方面:
1. **任务间存储器空间保护**:每个任务有独立地址空间。
2. **段属性及界限保护**:通过段描述符中的限长、属性检查越界。
3. **特权级保护**:见下文。
**存储空间**
- 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 化超标量设计**,主要三大技术:
1. **超标量Superscalar**:双流水线 U/V单周期可发射 2 条指令。
2. **超流水线Superpipelined**:整数流水线 5 级取指、译码1、译码2、执行、写回浮点 8 级,深度流水线提高主频。
3. **动态分支预测Branch Prediction**:通过 BTB 缓存分支历史,目标地址预测准确率可达 7590%。
#### 5.2 后继型号演进(简要)
- **Pentium Pro (P6)**引入乱序执行OOO、集成 L2 Cache、RISC 微操作μop将 CISC 指令分解为 RISC 类操作。
- **Pentium II**P6 核心 + MMX 多媒体指令集Slot 1 封装。
- **Pentium III**:增加 **SSE**Streaming SIMD Extensions70 条新指令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 四种工作方式。
- 【高频】**控制寄存器 CR1CR4 作用**CR1 保留CR2 保存缺页线性地址CR3 页目录基址CR4 扩展控制PSE/PAE 等)。
- 【高频】**特权级 03**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、RF16、NT14、IOPL1213、AC18、VIF19、VIP20、ID21其余低位与 8086 相同。
- **IOPL 含义**CPL ≤ IOPL 时才允许执行 I/O 指令与设置 IF只有特权级 0 才能修改 IOPL。
- **系统地址寄存器**GDTR基址+界限、IDTR、LDTR、TRGDT/IDT 整个系统唯一LDT 每个任务一个。
- **段描述符与段选择符**:段选择符 16 位(含索引、表选择、特权级),程序员可见;段描述符 8 字节,透明。
- **4 种工作方式**:实地址、保护虚地址、虚拟 8086、系统管理SMM由 CR0 与 EFLAGS.VM 共同决定。
- **实模式保留区**:中断向量区 `0000:00000000:03FF`、系统初始化区 `0FFFF:00000FFFF:000F`
- **外部时钟**60/66.6 MHz内部倍频到 100/120/133/166/200 MHz。
- **引脚分类**10 大类——地址线、数据线、总线周期控制、Cache 控制、系统控制、总线控制、检测与处理、系统管理、测试、跟踪检查。
- **新增指令**CPUID、RDTSC、CMPXCHG8B、RDMSR/WRMSR、MMX、SSE 系列Pentium III 起)。
### 简答/计算题常见考法
1. **画出 Pentium 内部结构框图**并标出 U/V 流水线、Cache、BTB、控制 ROM 等关键部件。
2. **说明实模式/保护模式下逻辑地址到物理地址的转换过程**
3. **说明 CR0 中 PE、PG 各位组合所对应的工作状态**
4. **解释特权级 03 的含义及访问规则**
5. **比较 Pentium 与 8086 的寄存器结构**(位数、名称、用途)。
6. **说明 U/V 流水线的分工**及超标量含义。
7. **说明 BTB 与动态分支预测的作用**
8. **解释段描述符、段选择符、GDT/LDT 的关系**