# 第三章 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. **动态转移预测**——通过 BTB(Branch 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 + 控制 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 类功能: 1. **地址线及控制**:A31–A3(32 位地址),A20M(地址位 20 屏蔽,用于实模式回绕)、ADS/ADSC、AP(地址偶校验)、APCHK、BE7–BE0(8 字节选通)。 2. **数据线及控制**:D63–D0(64 位数据总线)、DP7–DP0(数据偶校验)、PCHK、PEN。 3. **总线周期控制**:D/C、M/IO、W/R 信号组合定义总线周期类型;BRDY、NA(地址请求下一流水)、LOCK、SCYC 等。 4. **Cache 控制**:CACHE、PCD(页级 Cache 禁止)、PWT(写直达)、KEN(Cache 行使能)、WB/WT、EADS、FLUSH、INV 等。 5. **系统控制**:CLK(60/66.6 MHz 外部、内部 100/120/133/166/200 MHz 倍频)、INIT、RESET、INTR、NMI。 6. **总线控制**:HOLD/HLDA(DMA 申请)、BREQ(总线请求)、BOFF(强制释放)。 7. **检测与处理**:BUSCHK、IERR、FERR、IGNNE、FRCMC。 8. **系统管理模式**:SMI、SMIACT。 9. **测试**:TCK、TDI、TDO、TMS、TRST(JTAG)。 10. **跟踪和检查**: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 保护虚地址模式 **保护概念**包含三方面: 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 缓存分支历史,目标地址预测准确率可达 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 起)。 ### 简答/计算题常见考法 1. **画出 Pentium 内部结构框图**并标出 U/V 流水线、Cache、BTB、控制 ROM 等关键部件。 2. **说明实模式/保护模式下逻辑地址到物理地址的转换过程**。 3. **说明 CR0 中 PE、PG 各位组合所对应的工作状态**。 4. **解释特权级 0–3 的含义及访问规则**。 5. **比较 Pentium 与 8086 的寄存器结构**(位数、名称、用途)。 6. **说明 U/V 流水线的分工**及超标量含义。 7. **说明 BTB 与动态分支预测的作用**。 8. **解释段描述符、段选择符、GDT/LDT 的关系**。