1 / 189

第二章 微处理器

第二章 微处理器. 2.1 内部结构 2.2 寄存器组 2.4 工作模式 2.5 中断与异常 2.6 存储管理 2.7 多任务与多处理 2.8 高速缓存 2.9 引脚和功能 2.10 总线周期. 本章学习目标. 80486各部件的功能和相互关系, Pentium 在体系结构上的新特点。 32 位 CPU 的寄存器以及和16位 CPU 的区别。 在保护模式下中断和异常。 在实模式、保护模式和虚拟8086模式下存储管理。 任务设置,任务转换过程及检查的内容 。

kasie
Download Presentation

第二章 微处理器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 微处理器 2.1 内部结构 2.2 寄存器组 2.4 工作模式 2.5 中断与异常 2.6 存储管理 2.7 多任务与多处理 2.8 高速缓存 2.9 引脚和功能 2.10 总线周期

  2. 本章学习目标 • 80486各部件的功能和相互关系,Pentium在体系结构上的新特点。 • 32位CPU的寄存器以及和16位CPU的区别。 • 在保护模式下中断和异常。 • 在实模式、保护模式和虚拟8086模式下存储管理。 • 任务设置,任务转换过程及检查的内容。 • 80486和Pentium高速缓存的结构和功能。 • 80486和Pentium引脚的功能及差别。 • 80486和Pentium主要总线周期时序、总线状态变化及区别。

  3. 2.1 内部结构 2.1.1 80486的内部结构 2.1.1 Pentium的内部结构

  4. 2.1.1 80486的内部结构

  5. 2.1.1 80486的内部结构 • BIU:与芯片总线、指令预取部件、Cache部 件相连,执行总线访问请求。 读:预取指令、读内存、Cache行填充 写:写M和I/O、Cache通写写内存;写缓冲 (4×32b)。 • 指令预取:总线空闲时产生存储器地址向 Cache或通过BIU向内存取16B代码 命中Cache放入32B的指令队列中产 生预取周期 跳转、中断、调子程时 清空预取队列。

  6. 2.1.1 80486的内部结构 • 指令译码:从指令预取队列取机器码转换成控制信号。 两步译码:①指令执行时要访存,产生 总线 周期取存储器操作数。 ② 指令译码由机器码产生对其 它处理部件的控制信号。 • 控制部件:对整数、浮点运算和分段部件控制 • 整数部件:9个32位REG、1个64位桶形移位 器、ALU 。 1T内完成整数传送、加减运算和逻辑操作

  7. 2.1.1 80486的内部结构 • 分段和分页部件:进行存储器保护和虚存管理 分段 分页 逻辑地址 线性地址 物理地址 TLB 段Cache • FPU:增强80387 64位 64位 32位 32位 CPU FPU Cache BIU MEM 成组传送 • Cache:L1Cache:8KB 数据和指令Cache。 • L2Cache:128KB~256KB 不命中 命中 L1Cache 预取部件 内存 128b 未命中行填充

  8. 2.1.2 Pentium的内部结构

  9. 2.1.2 Pentium的内部结构 • 8KB的指令Cache和8KB数据Cache • 各自的TLB • Cache和BIU的DB是64位 • 支持突发式总线周期和流水线总线周期 1. 哈佛结构的Cache

  10. 2.1.2 Pentium的内部结构 2. BTB和预取B 预取顺序请求 预取B1 线性预取 无分支 BTB预测 有分支 动态分支预测算法 预取B2 预取分支后指令 从Cache或 内存预取指令 一 个 工 作 记录分支地址

  11. 2.1.2 Pentium的内部结构 2. BTB和预取B 线性预取 预取顺序请求 预取B1 分支指令 无分支 纪录分支地址 BTB预测 有分支 预取分支后指令 动态分支预测算法 预取B2

  12. 2.1.2 Pentium的内部结构 3. 指令译码、控制ROM和CU 指令控制信号 预取B 指令译码器 CU IU、FPU 微码 控制ROM IU(U、V流水线) 操作序列

  13. 2.1.2 Pentium的内部结构 4. 超标量体系结构IU 超标量处理机:1T内同时发射多条指令,资源重复,空间并行, 提高指令执行的平均速度。 超流水线处理器:1T内分时发射多条指令,时间重迭,时间并 行,提高指令执行的平均执行速度桶形移位器。 U流水线:地址生成、REG、ALU、数据Cache接口;整数或浮 点指令/1T共享。 V流水线:地址生成、REG、ALU、数据Cache接口;简单整 数,FXCH/1T 5. 流水线式FPU 组成:控制器、 REGS 、加法器、乘法器、除法器、80位宽通道 速度:8级流水线,每T完成1~2个浮点运算,快80486十倍以上

  14. 2.2 寄存器组 • 通用寄存器从16位 32位。 • 段寄存器仍为16位,增加2个:FS、GS; 每个段寄存器都有一个描述符寄存器。 • 32位EIP和EFLAGS。 • 增加了CR、DR、TR、系统地址寄存器和 Pentium的专用模型寄存器。

  15. 2.2.1 通用寄存器

  16. 2.2.2 段寄存器和描述符寄存器

  17. 2.2.3 指令指针 • IP:16位操作方式:实地址模式、虚拟8086模式。 • EIP:32位操作方式:保护模式。 • (E)IP保存下一条将要执行的指令相对于段基址的偏移量。

  18. ID 标 识 VIP 虚 拟 中 断 挂 起 AC 对 齐 OF 溢 出 DF 方 向 IF 中 断 允 许 TF 自 陷 SF 符 号 ZF 零 AF 辅 助 进 位 PF 奇 偶 CF 进 位 VIF 虚 拟 中 断 允 许 VM 虚 拟 8086 RF 标 志 恢 复 NT 任 务 嵌 入 IOPL I/O 特 权 级 2.2.4 标志寄存器EFLAGS • 32位中位1为1,位31~位22,位15,位5,位3为0。 • 其它16位分为状态标志,控制标志(DF)和系统标志。 21 20 19 18 17 16 14 1312 11 10 9 8 7 6 4 2 0

  19. 2.2.5 控制寄存器

  20. 2.2.5 控制寄存器 MOV CRX,r32; MOV r32,CRX 1. CR0 控制或指示用于整个系统条件的标志,低16位为MSW。 • 0 PE:保护模式允许 PE=1 系统在保护模式下工作 PE=0 系统在实地址模式工作

  21. 2.2.5 控制寄存器 • 1 MP:监视协处理器 MP=1并且TS=1,WAIT指令发生异常7:协处理器不可用Fault。 • 2 EM:仿真协处理器(80386用80486以上FPU在片内)。 系统有FPU:EM=0,MP=1 系统无FPU:EM=1,MP=0 遇到ESC前缀的FDU指令,发生异常7。异常7程序:模拟ESC指令在无FPU时执行协处理器。 • 3 TS:任务转换。任务切换完成,CPU自动把TS置1。 若MP=1,在遇到FPU opcode或Wait指令可正常工作。 任务转换时未切换FPU的运行状态,只是在新任务需要FPU时才进行切换。

  22. 2.2.5 控制寄存器 • 4 ET:协处理器类型(仅对80386) ET=1,FPU为与80387兼容的32位FPU。 ET=0,FPU为与80386兼容的32位FPU。 上电时检测80387的 引脚,设置ET。 软件设置ET。 • 31 PG:页管理使能 PG=1 分页存储管理 线性地址 页变换 物理地址。 PG=0 无分页管理 线性地址 物理地址。

  23. 2.2.5 控制寄存器 以下各位对80486/Pentium有效 • 5 NE:数据错误异常控制位 NE=1 数字错误引起异常16,实现与80386兼容的数字异。 NE=0 =0,忽略数字异常。 =1,CPU停止工作,等待由 。产生的中断模拟8087/80387的 。 • 16 WP:写保护 WP=1 核心代码不能对用户级页面进行改写。 WP=0 核心代码能够对用户级只读页进行改写。

  24. 2.2.5 控制寄存器 • 18 AM:对齐标志控制位 AM=1 允许对齐检查 CPU对齐检查,非对齐 EFLAGS的AC=1 时,要产生异常17, CPL=3的MEM操作 对齐检查异常。 • 29 不通写位 NW(Not Writethrough) NW=0:允许通写,既写Cache,又写内存。 NW=1,不许通写(此时CD=1,Cache不使 能)。

  25. 2.2.5 控制寄存器 • 30 CD:Cache不使能。 CD=0,Cache使能。 CD=1,Cache作废 访问Cache未命中,则不填充Cache。 访问Cache命中,Cache仍可工作。 完全使Cache停止工作,要刷新Cache。 CD=0,NW=0,Cache才能正常工作,产生Cache的有效周期。 2. CR2:页故障的线性地址。 CR0中PG=1时CR2才有效 某页不在内存中,页转换时发生分页错误,这是CPU将缺页的线性地址保存在CR2中。

  26. 2.2.5 控制寄存器 3.CR3:页目录表基址及页级外Cache使能和写属性。CR0中PG=1时CR3才有效。 • 位4:页外Cache不使能PCD位,控制使外部页Cache是否工作的引脚PCD。 PCD=1,对页目录不进行外部高速缓存。 PCD=0,对页目录进行外部高速缓存。 PCD位驱动CPU-PCD引脚控制外部Cache工作。 • 位3:页通写位PWT。 PWT=1,外部Cache对页目录通写,PWT=0,回写。 PWT位驱动CPU-PWT引脚控制外部Cache工作 • 位31-位12:当前任务的页目录表基址。

  27. 2.2.5 控制寄存器 4. CR4:Pentium扩充,位31-位7保留。 0 VME:虚拟8086模式扩充。 VME=1,允许虚拟8086模式扩充,即允许虚拟8086中断,在VM8086下,VME=1,支持VIF。 1 PVI:保护模式虚拟中断。 PVI=1,允许保护模式虚拟中断。在保护模式下,VME=1,支持VIF。 2 TSD:禁止RDTSC指令,时间日期标记禁止。 TSD=0,读时间标志计数器指令RDTSC可在任何特权级上执行。 TSD =1,RDTSC仅在CPL=0的程序执行,否则发生异常13,即RDTSC为特权指令。

  28. 2.2.5 控制寄存器 3 DE:允许调试扩充(Debug Extensions)。 DE=1,允许支持I/O断点,I/O断点有效。 4 PSE:允许页面大小扩充。 PSE=1,允许采用4MB、2MB页。 5 PAE:允许物理地址扩充。 PAE=1,允许采用32位以上物理地址,否则 只用232物理地址。 6 MCE:允许机器检查异常。 MCE=1,允许机器检查异常功能有效。

  29. 2.2.6 系统地址寄存器

  30. 2.2.7 调试寄存器DR CPL=0的代码段MOV DRx,r32 MOV r32,DRx 1. 断点寄存器:DR0-DR3 • 每个寄存器存放一个断点的线性地址。 • 断点的发生条件由DR7分别设定。 2. 调试控制:DR7 (1)4个断点发生的条件和访问类型。 (2)I/O断点。 (3)精确断点。 (4)GD位使能由DR6.BD标志的调试寄存器保护状态。 GD位进入调试异常处理程序时由CPU清0,这允许 处理程序任意访问调试寄存器。

  31. 2.2.7 调试寄存器DR 3. 调试状态:DR6 (1)B3~B0:在DR、LEN、R/W中的条件为真,Bi置1,即使断 点未被G或者L允许,说明断点已经发生,不一定能够进入 调试异常程序。 (2)BD:下条指令将读/写调试寄存器,而它们又被Intel在线仿 真器使用时置1,并发生异常1(一般检测故障)。 (3)BS:为1表示异常1是由EFLAGS中TF=1时单步陷阱引起的。 单步方式是最高优先级的调试异常。当BS=1时,任何其他 调试状态位也能被置。 (4)BT:为1表示因转换到一个TSS中T=1的任务而发生的异 常1。DR7中没有允许/不允许这种异常的位。仅受TSS中T位 使能。

  32. 2.2.7 调试寄存器DR 4. DR4和DR5 当CR4.DE=0时,Pentium用DR4和DR作为 DR6和DR7的别名寄存器。 当CR4.DE=1时,引用DR4和DR5将产生未定义的操作的异常。

  33. 2.2.8 测试寄存器 • TR0:未定义。 • TR1:奇偶校验逆寄存器。 • TR2:指令Cache结束位。 • TR3、TR4、TR5:Cache数据、状态、控制测试寄存器。 • TR6、TR7:TLB命令,数据测试寄存器。

  34. 2.2.9 Pentium模型专用寄存器 • 控制:可测试性、执行跟踪、性能检测、机器检查错误。 • R/W:用MOV指令直接访问其中TR会发生异常6,使用指令 RDMSR和WRMSR。

  35. 2.4 工作模式 • Intel的32位微处理器有三种工作模式: • 实地址模式 • 保护模式 • 虚拟8086模式。

  36. 2.4.1 实地址模式 1. 实模式的复位进入 RESET>=15T 当 复位:350T~400T,控制ROM和大部分随机逻辑 当 RESET>=78T 自测试:220T,然后复位 且 Pentium INIT 或 80486 AHOLD 或 80386

  37. 2.4.1 实地址模式 • 寄存器的状态 EDX 80486: 00000400+分级ID Pentium:00000500+分级ID CR0 0 1 1 0 0 0 1 0 0 0 0

  38. 2.4.1 实地址模式 2. Pentium复位和自测试启动 (1)Pentium的复位方式

  39. 2.4.1 实地址模式 (2)REGS的状态 见表2.4 (3)引脚的状态 高电平: 低电平:HLPA、BREQ、BP3、BP2、PRDY、IBT、 IU、IV、BT3~BT0 高阻抗:D3~D0、DP7~DP0 未定义:A31~A3、AP、 ~ 、PM0/BP0、 PM1/BP1、W/ 、M/ 、PCD、 PWT、 、TDO、SCYC PCHK

  40. 2.4.1 实地址模式 (4)内部自测试 时间:220 组成:硬件自测试和微代码自测试 方法:对Cache、TLB和BTB进行两项阵列测试:原码和补码。 常数ROM测试:使用微代码增加不同常数,检查结果值与存储值是否相等。 复位结束时,程序从FFFFFFF0H开始执行, 段间调用/转移指令时,转到000FFFFFH以内的地址。

  41. 2.4.2 保护模式 描述符的分类: 堆栈段描述符 一般数据段描述符 数据段描述符 代码段描述符 段描述符 系统控制描述符 描述符 任务状态段描述符 特殊系统段描述符 系统描述符 门描述符 选择符 任务门描述符 调用门描述符 中断门描述符 陷阱门描述符

  42. 2.4.2 保护模式 1. 选择符 2. 段描述符:数组、把逻辑地址变换成物理地址,定义MEM用法,控制转移,切换任务

  43. 2.4.2 保护模式 (1)段基址:段起始的32位线性地址 (2)段限长:20位限长与G位共同计算 (3)G:G=0 限长单位为1B 限长1MB 最大地址000FFFFFH。 G=1 限长单位为1P(=4KB)限长4GB 最大地址 FFFFFFFFH 表中20位段限长值左移12位(即乘以212或1000H)加FFFH。 (4)D/B D 代码段:1 32位操作和寻址;0 16位操作和寻址。 B 数据段:1 32位数据 ;0 16位数据。 堆栈段:1 32位堆栈操作,ESP ;0 16位堆栈操作,SP。 (5)访问权限:

  44. 2.4.2 保护模式 • P 存在位:P=1,段在内存中;P=0,段不在内存中,访问该段引起异常。 • DPL:描述符特权级,该段被访问的特权级,从0到3特权级降低。 • S 描述符类型: S=1,代码段,数据段,堆栈段。 S=0,系统控制,TSS、LDT、 门描述符。 • E 段可行性: E=1,代码段,可执行;E=0,数据段,不可执行。

  45. 2.4.2 保护模式 • ED/C和W/R 数据段:ED W ED:扩展方向 ED=0 向上 偏移量<=段限长; ED=1 向下 偏移量>段限长。 W:可写性 W=0 不可写;W=1可写 代码段:C R C(Confirming):C=1 要证实代码段,访问和被访问特 权级不总是相同; C=0 非证实代码段,访问和被访问特 权级总是相同 • A(Accessed):访问过 A=1 段被访问过; A=0 段未被访问过

  46. 2.4.2 保护模式 3. 系统描述符(与门描述符一起包含在系统控制和描述符中) 段基址、段限长、G位和段描述符相同 访问权限字节不都相同

  47. 2.4.2 保护模式

  48. 2.4.2 保护模式 4. 中断描述符(又称门描述符)

  49. 2.4.2 保护模式 • P 门描述符符的有效性:P=1,有效;P=0,无效 • DPL:描述符特权级 • TYPE:4,6,7 286调用门、中断门、异常门 C,E,F 32位调用门、中断门、异常门 5 任务门 • 字计数:调子时,须从调用程序级堆栈拷贝到子程级堆栈去的参数个数(16/32栈分别指字/双字个数)

  50. 2.4.2 保护模式 选择符和偏移量 • 对中断、异常、调用门表示服务程序或子程的首址。 • 对于任务门,偏移量无效,选择符指向任务的TSS描述符。 TSSD时系统描述符:段线性基址、限长和属性 段线性基址和限长确定TSS的位置和大小 中断,异常,调用门中的选择符选中某一个代码段描述符代码段D中的32位线性基 址+门D中的32位偏移量形成例程或子程的首地址。

More Related