
第15章先进的微处理器.pdf
5页第 15 章先进的微处理器本章介绍了80x86 系列、 Pentium 系列等先进的微处理器阐述了这些微处理器的基本特性、基本结构和使用特点重点分析了80386 的寄存器结构、工作方式、保护模式、分页机制和扩展指令同时也介绍了Pentium 微处理器的特性、存储管理模式、寻址方式及指令格式最后介绍了高档Pentium 的发展历程及主要性能15.1 从 8086到 80x86 15.1.1 80286微处理器简介80286 是 8086 向上兼容的微处理器 80286 的通用寄存器和段寄存器与8086 完全一样,但程序状态字PSW 增加了 3 个标志位, 同时还增加了一个16 位的机器状态字MSW, 用户可使用其中的4 位这些标志位用于存储管理及存储保护等功能80286 有两种运行方式:实地址方式和虚地址保护方式① 实地址方式: 80286 加电后即进入实地址方式在实地址方式下,80286 与 8086 在目标码一级是向上兼容的,它兼容了8086 的全部功能, 8086 的汇编语言源程序可以不做任何修改在80286 上运行② 虚地址保护方式:在虚地址保护方式下,把实地址方式、存储器管理、对虚拟存储器的支持以及对地址空间的保护集为一体,从而使 80286 能支持多用户系统。
80286 对 8086的指令集进行了扩展,不仅提供向上兼容的高级集,还提供存储器管理和保护机构以及有关指令1.80286 的主要特性① 增加地址线到24 根,可寻址16MB内存空间② 具有两种地址方式:实地址方式和虚地址保护方式③ 使用虚拟内存④ 寻址方式更加丰富(24 种)⑤ 可以同时运行多个任务⑥ 三种类型中断:硬件中断、软件中断和异常中断⑦ 增加了高级类指令、执行环境操作类指令和保护类指令2.80286 内部结构80286 内部结构如图15.1 所示与8086 相比, 80286 将总线接口部件BIU 分成了总线部件 BU 、地址部件AU及指令部件IU,以提高并行处理速度15.1.2 80386微处理器及保护方式下的存储器寻址1.80386 的主要特性① 灵活的 32 位微处理器,提供32 位的指令 , 可采用 8 位、 16 位或 32 位的数据宽度② 提供 32 位外部总线接口,最大数据传输速率为32Mbps③ 具有片内集成的存储器管理部件MMU ,可支持虚拟存储和特权保护④ 具有实地址模式、保护模式和虚拟8086 模式等三种工作方式⑤ 具有 4GB(232) 的物理寻址空间和64TB(246) 的虚拟存储空间。
⑥ 通过配用80287 或 80387 数值协处理器可支持高速数值处理⑦ 在目标码一级与8086、80286 芯片完全兼容2. 80386 的内部结构偏移量加法器段基址段大小段界限检查器物理地址加法器地址锁存和驱动器预取器处理器扩充接口总线控制数据收发器6 字节预取队列ALU寄存器控制3 译码指令队列指令译码器总线部件 BU指令部件 IU执行部件 EU地址部件 AUBHE ,M/IOPEACK PEREQREADY ,HOLDLOCK ,HLDARESET CLKCAPNMI INTR ERRORBUSYA23-A0S0-S1,COD/INTAD15-D0VSS VCC图 15.1 80286内部结构图80386 内部结构如图15.2 所示由图可见 ,80386 由三大部件组成, 即中央处理部件CPU 、总线接口部件BIU 和存储器管理部件MMU ⑴ 中央处理部件CPU 中央处理部件又包括指令预取单元、指令预译码单元和指令执行部件三部分指令预取单元包括16 字节的预取队列寄存器,可存放5 条左右的指令指令预译码单元对指令操作码进行预译码,并将其存放在已译码的指令队列中,供执行部件取用。
执行部件包括8 个32 位通用寄存器、1 个 64 位桶形移位寄存器和一个乘除法器通用寄存器组既可用于数据操作,又可用于地址计算桶形移位寄存器用来有效地实现指令的移位、循环移位和位操作,同时也可用于乘法和除法等操作,以加快运算速度⑵ 总线接口部件BIU 总线接口部件提供中央处理部件和外部系统之间的高速接口其功能为产生访问存储器和 I/O 端口所必需的地址、数据和命令信号80386 的总线周期仅为2 个时钟⑶ 存储器管理部件MMU 存储器管理部件又分为分段单元和分页单元二部分分段单元完成从逻辑地址到线性地址之间的转换, 把线性地址送到分页单元,同时完成总线周期分段的违法检查分页单元完成线性地址到物理地址之间的转换若不采用分页单元功能,则线性地址即是物理地址3.80386 的寄存器结构80386 中共有 7类 32 个寄存器,它们是:通用寄存器组、指令指针和标志寄存器、段寄存器、控制寄存器、调试寄存器和测试寄存器等⑴ 通用寄存器组80386有 8 个 32 位寄存器,如图15.3 所示这 8 个 32 位寄存器 , 名称分别为EAX 、EBX 、 ECX 、EDX 、ESI、EDI、EBP和 ESP 。
它们也可作 16 位寄存器使用,但名称分别以AX 、BX 、CX、DX 、SI、DI 、BP和 SP表示,访问32位寄存器的低16 位像 8086 一样, AX 、BX 、CX和 DX又可分成两个8 位寄存器使用控制部件测试部件分段描述符超高速缓存器分段部件分页描述符超高速缓存器分页部件总线接口部件预取队列预取单元32 位寄存器组桶形移位器ALU指令译码指令队列32 位地址总线32 位数据总线控制总线NPX接口中断复位图 15.2 80386内部结构CPUMMUBIU31 16 15 8 7 0 32 位AH AL EAX AX BH BL EBX BX CH CL ECX CX DH DL EDX DX SI ESI DI EDI BP EBP SP ESP 图 15.3 80386的通用寄存器要访问 80386 的 32 位寄存器,程序中必须用伪指令“.386 ”来说明 例 15-1 说明了如何使用 80386 指令编程例 15-1 使用 80386 指令编程,实现两个32 位数的乘法MODEL SMALL ;选择 SMALL模式.386 ;选择 80386 指令集STACK SEGMENT PARA STACK DB 256 DUP(?) STACK ENDS .DATA ;数据段开始NUM1 DD 01234567H ;定义双字NUM2 DD 89ABCDEFH ANS DQ ? ;定义四字.CODE ;代码段开始START PROC FAR BEGIN: PUSH DS SUB AX, AX PUSH AX MOV AX, @DATA ;装载数据段,注意DATA前面有符号“ @ ”MOV DS, AX MOV EAX, NUM1 MUL DWORD PTR NUM2 MOV DWORD PTR ANS[0], EAX MOV DWORD PTR ANS[4], EDX RET START ENDP END BEGIN 程序中使用了SMALL (小模式),表示有一个可达64KB的数据段和一个可达64KB的代码段。
⑵ 指令指针和标志寄存器80386 的指令指针寄存器扩展到32 位,用 EIP 表示标志寄存器EFALG 也为 32 位寄存器,其中定义了15 位新增的标志位有:IOPL(2 位)--I/O特权级别; NT-- 嵌套任务标志;RF —恢复标志; VM —虚拟方式标志80386 的机器状态字MSW 为控制寄存器CR0的低 16 位⑶ 段寄存器80386 有 6 个 16 位的段寄存器,分别为CS 、SS 、DS 、ES 、FS和 GS 在保护模式下,段寄存器的内容如图15.4 所示15 3 2 1 0 选择子TI RPL 图 15.4 段寄存器的内容RPL (D1-D0):请求者特权级00 为最高级, 11 为最低级TI(D2): 描述符表选择位0 为选择全局描述符表,1 为选择局部描述符表选择子( D15-D3): 13位的选择子,用于选择描述符表中的某一个描述符一个描述符表中,最多有213=8192 个描述符⑷ 描述符 (Descriptors) 描述符有两种,即段描述符和系统描述符① 段描述符。
