




已阅读5页,还剩124页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章高档微处理器 3 1概述3 280286CPU简介3 380386微处理器3 480486微处理器简介3 5Pentium系列微处理器3 6安腾处理器 Itanium 习题与思考题 Intel发布其8086微处理器之后近30年 微处理器技术发生了巨大的变化 集成度越来越高 单片硅片上的晶体管数目从几万个发展到几亿个 体系架构从16位发展到64位 主频从4MHz发展到3 8GHz 高速缓存技术 流水线技术 超标量技术 MMX技术 超线程技术等新技术不断加入 从单核到多核 使得微处理器的速度越来越快 表3 1说明了自8086发布之后微处理器的发展状况 3 1概述 表3 1高档微处理器的发展状况表 80286CPU内部和外部数据总线皆为16位 地址总线24位 80286在多个方面比8086有显著的改进 80286向下兼容8086微处理器 80286的通用寄存器 段寄存器与8086完全一样 但标志寄存器FR FlagsRegister 增加了3个标志位 增加了一个16位的机器状态字MSW MachineStatusWord 用户可使用其中的4位 这些标志位用于存储管理及存储保护等功能 3 280286CPU简介 80286还增加了一个16位任务寄存器TR TaskRegister 3个描述符表寄存器LDTR LocialDescriptorTableRegister GDTR GlobalDescriptorTableRegister 和IDTR InterruptDescriptorTableRegister 和程序不可见的段描述高速缓冲寄存器 1 80286的主要特性 1 增加地址线到24根 可寻址16MB内存空间 2 具有两种工作方式 实地址方式 RealAddressMode 和虚地址保护方式 VirtualAddressProtectedMode 3 使用虚拟内存 4 寻址方式更加丰富 24种 5 可以同时运行多个任务 6 三种类型中断 硬件中断 软件中断和异常中断 7 增加了高级类指令 执行环境操作类指令和保护类指令 2 80286内部结构80286内部结构如图3 1所示 与8086相比 80286将总线接口部件BIU BusInterfaceUnit 分成了总线部件BU BusUnit 地址部件AU AddressUnit 及指令部件IU InstructionUnit 提高了并行处理速度 3 80286的运行方式80286可以运行在实地址方式和虚地址保护方式 1 实地址方式 80286加电后即进入实地址方式 在实地址方式下 80286与8086在目标码一级是向下兼容的 它兼容了8086的全部功能 8086的汇编语言源程序可以不做任何修改在80286上运行 2 虚地址保护方式 在虚地址保护方式下 把实地址方式 存储器管理 对虚拟存储器的支持以及对地址空间的保护集为一体 从而使80286能支持多用户系统 80286对8086的指令集进行了扩展 不仅提供向下兼容的高级集 还提供存储器管理和保护机构以及有关指令 Intel公司推出的80386是微处理器发展史上一个新的里程碑 它标志微处理器进入了32位时代 80386分为80386SX和80386DX 80386DX是标准的32位CPU 内 外数据总线都是32位 地址线为32根 可寻址4GB空间 80386SX是 准32位 CPU 内部结构和80386DX一样 地址线减少为24根 外部数据总线减少为16根 3 380386微处理器 与8086相比 80386有以下特点 1 80386芯片在硬件结构上由6个逻辑单元组成 它们按流水线方式工作 运行速度大大提高 可达到4MIPS 1MIPS 100万条指令 秒 和CPU之间的数据传输速度为32MB S 2 多任务处理更容易 硬件支持多任务 一条指令可以完成任务转换 转换时间在17 S以内 3 硬件支持段式管理和页式管理 易于实现虚拟存储系统 4 硬件支持DEBUG功能 并可设置数据断点和ROM断点 5 4级特权级别 0级的优先级最高 其次为1 2 3级 0 1和2级用于操作系统程序 3级用于用户程序 3 3 180386的特点 6 具有自动总线 automaticdatabussizing 功能 CPU读 写数据的宽度可以在32位和16位之间自由进行转换 7 地址信号线扩充到32根 可以寻址4GB的物理存储器空间 如果利用虚拟存储器 存储空间高达64TB 8 采用高性能的具有32位数据总线的协处理器80387 具备了很强的浮点运算能力和很高的运算速度 80386也可以使用80287作为协处理器 但速度低得多 9 在每条指令执行期间 CPU需要进行类型 内存越界等保护特性检查 3 3 280386的逻辑部件80386内部分为三大部分 总线接口部件 中央处理部件和存储器管理部件 而中央处理部件又分成指令预取部件 指令译码部件和指令执行部件三部分 其结构如图3 2所示 1 总线接口部件80386的总线接口部件BIU BusInterfaceUnit 的作用和8086的BIU基本相同 实现与外部的联系 控制进出CPU的所有数据 地址及控制信号 BIU中含有16字节指令预取队列 总线周期仅为2个时钟周期 2 中央处理部件中央处理部件指令预取部件 指令预译码部件和指令执行部件三部分 1 指令预取部件80386CPU的指令代码预取不再由BIU负责 而是由一个独立的指令预取部件完成 当BIU不执行属于指令执行部件的总线周期时 若预取队列有空单元或发生一次控制转移时 预取部件便通过分页部件向BIU发出指令预取请求 分页部件将预取指令指针送出的线性地址变为物理地址 再由BIU及系统总线从内存单元中预取指令代码 放入预取队列中 指令预取部件包括16字节的预取队列寄存器 可存放5条左右的指令 2 指令译码部件80386采用微程序控制技术 指令的执行过程实际是通过执行由微指令组成的微程序来实现的 所有指令对应的微程序存放在其内部的控制存储器中 指令译码部件从BIU的指令预取队列中取指令 将操作码译成与该指令操作码相对应的控制ROM的入口地址 存入译码指令队列中 该队列可容纳3条已译码指令 3 执行部件该部件从译码指令队列中取出已译码指令并执行之 完成所规定的操作 因为是采用微程序技术 所以指令执行实际是逐条执行该指令所对应的微程序中的微指令 出于缩短微指令宽度 即简化控制存储器电路的需要 微指令中广泛使用字段编译法 即在执行微指令的过程中还需要译码 即控制单元要对微指令的字段进行译码 产生一条指令操作的时序控制信号 3 存储器管理部件 MMU 存储器管理部件MMU MemoryManagementUnit 分为分段部件和分页部件 其中分段部件用来实现逻辑地址到线性地址的转换 分页部件用来实现线性地址到物理地址的转换 若分页部件处于允许状态 则分页部件在操作系统的控制下 便产生线性地址到物理地址的转换 若分页部件处于禁止状态 线性地址即为物理地址 4 80386指令流水线总线接口部件 指令预取部件 指令译码部件和存储器管理部件构成了80386CPU指令流水线 各个功能部件既能独立工作 又能与其它部件配合工作 因此80386可采用比8086并行度更高的流水线操作方式 由于总线接口部件 指令译码部件 执行部件及存储器管理部件四个部件并行工作 故80386的指令流水线为4级流水 80386寄存器组是8086寄存器组的超集 除了将原有寄存器扩展为32位外 还增加了许多新的寄存器 同时对段寄存器作了较大变动 1 通用寄存器组和8086相比 通用寄存器由原16位扩充到32位 分别命名为EAX EBX ECX EDX ESI EDI EBP及ESP 为了保持寄存器级的向下兼容 它们的低16位AX BX CX DX SI DI BP SP可单独使用 而AX BX CX DX的高 低8位也可以单独使用 如图3 4所示 3 3 380386内部寄存器 2 段寄存器除CS SS DS ES外 增加了FS和GS两个新的段寄存器 这些寄存器全部是16位的 与8086有所不同的是在非实模式下段寄存器内容不再是段的基地址 而是指向全局与局部描述符表的段选择子 如上图3 4所示 在80386微机系统中编程 必须在存储器中建立四种系统表 1 GDT GlobalDescriptorTable 全局描述符表 共1个 2 LDT LocalDescriptorTable 局部描述符表 若干个 3 IDT InterruptDescriptorTable 中断描述符表 共1个 4 TSS TaskStateSegment 任务状态段 若干个 在全局描述符表GDT和局部描述符表LDT中 存有若干种描述符 其中段描述符由8个字节组成 用来描述段的基地址 大小和属性 GDT和LDT最大容量可达64KB 因此最多可存放8192个描述符 段选择器字段是程序可访问的 第二位为表指示器位TI TableIndicator 用来指示选择GDT还是LDT TI 0表示选择GDT TI 1表示选择LDT 段选择器的高13位称为索引号 用来指示段描述符在描述符表中的位置 索引号之所以是13位 是因为描述符表最多可存放8192 即213 个描述符 每个描述符由8字节组成 因此索引号乘以8 可得到该索引号所对应的描述符在描述符表中的存放首地址 表内偏移地址 其格式如图3 5所示 当用指令将一个16位的值赋给段选择器时 CPU将其索引号部分所对应的段描述符自动加载到描述符寄存器中 每个段描述符由三部分组成 基地址字段用来描述所对应段在物理存储器中的起始地址 边界字段用来描述所对应段的大小 属性字段用来描述所对应段的属性 如图3 6所示 有几点需要说明 1 段选择器的第1 0位表示请求特权级 记作RPL RequestPrivilegeLevel 用于保护功能 2 描述符寄存器是指令不可访问的 即对程序员来说是不可见的 3 描述符的属性字段有一位称为G Granularity 粒度 位 表示段的大小是以字节为单位还是以4KB 页 为单位 即边界字段的单位数字1是代表1个字节还是代表4KB G 0表示段边界以字节为单位 这时最大段为1MB 边界字段共20位 而G 1则表示段边界以4KB为单位 此时最大段为4GB 4 描述符表的建立以及其中描述符的设置应在访问之前进行 80386设置了4个系统地址寄存器 GDTR LDTR IDTR和TSSR 或称TR 分别用来管理四种系统表 即GDT LDT IDT和TSS GDTR和LDTR为48位宽 而IDTR和TSSR为80位宽 1 GDTR和GDT的关系GDT可看成一个特殊的段 由于GDT是所有任务共用 系统中只需建立一个 因此没有必要设置描述符 而直接由GDTR决定它的基地址和大小 2 IDTR和IDT的关系IDT中存放的是用于中断的中断门描述符 陷阱门描述符 是一个特殊段 系统中只需建立一个 3 系统地址寄存器 3 LDTR和LDT的关系一个任务需要建立一个LDT 多个任务就需要建立多个LDT LDT也可看成特殊段 由于要建多个LDT 所以存在LDT段描述问题 段描述需要有描述符 而描述符由选择器字段来选择 因此LDTR中需要有段选择器字段 LDTR指出当前进程的LDT描述符在全局描述符表GDT中的位置 在进程切换时 系统从当前进程的TSS中取出LDT选择符的值 装入LDTR寄存器内 LDT的表限为16位 由它确定的最大地址空间为64KB 每个描述符的长度为8字节 一个LDT最多可以拥有8K个描述符 每个描述符对应一个局部段 所以系统中一个进程最多可以有8K个局部段 LDTR寄存器与LDTR高速缓存如图3 7所示 用LLDT指令 例如LLDTAX 可将寄存器或存储器中的16位值加载到LDTR的段选择器字段 于是从GDT中选择相应的LDT描述符 这个描述符由CPU自动加载到LDTR的描述符寄存器 因此可确定相应LDT的基地址和边界范围 4 TSSR和TSS的关系和LDT一样 一个任务需要建立一个TSS 多个任务需要建立多个TSS 因此 TSSR和TSS与IDTR和IDT的关系相类似 4 指令指针 标志寄存器 1 指令指针80386的地址线32条 故指令指针EIP是32位的寄存器 EIP存放下一条指令的偏移量 该偏移量是相对于现行代码段 CS 基址的偏移 EIP的低16位称为IP 用于16位寻址 2 标志寄存器80386中的标志寄存器为32位宽 包含处理器的控制和状态信息 标志寄存器低16位称为FLAGS 与8086 80286CPU的标志寄存器兼容 它的低12位的格式和含义与8086相同 新增加了四种标志 标志寄存器的定义如图3 8所示 1 I O特权级IOPL Input OutputPrivilegeLevel 在保护模式下 限制对I O端口的访问 为此设置了IOPL IOPL分4级 0 3 0级级别最高 3级级别最低 工作在任务特权级0的操作系统可以设置IOPL的值 当任务的特权级CPL CurrentPrivilegeLevel 低于IOPL特权时 如果试图执行一条I 0指令 会引起异常中断 一般保护违规 也就是说 只有任务特权级不低于IOPL的任务才可以访问I O端口 2 嵌套任务标志NT NestedTask 该标志位用来表示当前任务是否嵌套在另一个任务内 为1说明当前任务嵌套在另一个任务内 3 恢复标志RF ResumeFlag 该标志位和调试寄存器一起用于调试 为1时 即使遇到断点或调试故障 也不会产生异常中断1 即继续执行下面的指令 在成功执行每条指令时 RF将自动被复位 4 虚拟8086模式标志VM virtual8086Mode 该位为1表示80386工作于虚拟86模式 在保护模式下 可以通过指令使VM置1 进入虚拟86模式 5 控制寄存器80386内部有4个32位控制寄存器 ControlRegister CR CR0 CR3 用来保存各种全局性状态 这些状态将影响所有任务的运行 CRO的格式如图3 9所示 其低16位称为机器状态字MSW PE Protectionenable 保护模式允许位 PE 1 CPU处在保护模式 在保护模式下 可通过指令使PE位复位返回到实模式 硬件复位也可回到实模式 MP MonitorCoprocessor 协处理器监控位 MP 1 表示有协处理器 MP 0 表示无协处理器 EM EmulateCoprocessor 仿真协处理器控制位 EM 1 表示用软件仿真协处理器 CPU如果遇到协处理器指令 ESC指令 产生中断7 协处理器无效异常中断 用中断处理程序进行仿真操作 TS TaskSwitched 任务转换控制位 每当进行任务转换时 由CPU硬件自动地将该位置1 MP EM和TS这3个控制位要组合起来进行考虑 例如 MP和EM是不能一起处于置位状态的 ET ProcessorExtensionType 处理器扩展类型控制位 该标志位标识使用的协处理器是80387还是80287 80386在复位后 由ERROR输入信号的电平来确定该位的值 ET 1 协处理器是80387 否则 是80287 如果需要 也可通过程序向CR0送数 使ET位置1或置0 PG PagingEnable 分页使能控制位 PG 1 启动80386分页部件工作 PG 0 禁止分页部件工作 PG和PE组合起来 决定80386的工作模式及存储管理方案 如表3 2所示 表3 2PE与PG位的组合功能表 CRl保留未用 CR2和CR3实际上是两个用于存储管理的地址寄存器 CR2用来存放故障地址 称为页面故障线性地址寄存器 CR3用来存放表的起始地址 称为页目录表基址寄存器 后面介绍线性地址到物理地址转换时用到这两个寄存器 6 调试寄存器和测试寄存器80386有8个32位的调试寄存器DR7 DR0 DebugRegister 为调试程序提供了方便 DR3 DR0用来容纳4个32位的断点地址 DR5和DR4是Intel保留的 未作定义 DR6是断点状态寄存器 包含了所有引起类型l异常中断的事件标志 用来协助断点调试 DR7为断点控制寄存器 高16位分成4个字段 分别用来规定4个断点的长度是一个字节还是4个字节以及引起断点的访问类型 低16位用来允许 禁止4个断点以及选择断点的条件 80386还有2个32位用于转换旁路缓冲器TLB TranslationlookasideBuffer 测试的测试寄存器 TestRegister TR6和TR7 TR6为测试命令寄存器 存放测试时使用的标记信息和控制信息 TR7为测试数据寄存器 容纳用于TLB测试的数据 3 3 480386存储器管理 80386具有三种存储器管理模式 实地址模式 虚拟8086模式和保护模式 在实地址模式下 CPU只能寻址1MB的内存空间 在保护模式下 x86提供了实现虚拟存储的硬件机制 它是操作系统实现多进程 多进程 存储管理以及提供存储保护的硬件基础 物理空间的分配和虚拟地址到物理地址的转换 通常是由操作系统进行的 但是80386本身具有支持这种存储器管理功能的机制 80386系统结构中专门设置了用于实现虚拟存储技术的硬件机制 即分页和分段机制 各个进程的存储区域彼此隔离 每个进程都可以独立使用自己的虚拟地址空间 从而保证了进程信息的安全 1 虚拟存储器和物理存储器虚拟存储器是计算机体系结构中的一个重要概念 它的引入是为了让程序员可以在比实际存在的物理存储器大得多的空间编写程序 这个程序可以使用的空间称为虚拟空间 对程序员来说 可以认为机器中有一个比物理存储器容量大得多的存储器 这个存储器称为虚拟存储器 编程所用的地址称为虚拟地址 又称逻辑地址 虚拟存储器的实现由硬盘等外部存储器提供支持 因为用户编写的程序放在磁盘上的 而执行程序时可采用某种算法 仅将当前以及最近一段时间内用到的程序和数据加载到物理存储器上 暂时不用或刚刚用过 且在一段时间内不再使用的程序或数据放到磁盘上 所以程序所用的空间可以比物理空间大得多 80386虚拟存储器的大小是由其内部结构决定的 80386把虚拟地址空间分成不同性质的两部分 全局地址空间和局部地址空间 全局地址空间为所有任务共享 这样可避免相同的系统服务程序产生不必要的重复 使得对共用数据及中断等的处理更加容易 局部地址空间是每一个任务占有的独立地址空间 存放每个任务代码和数据 这种方法可以实现任务之间地址空间上的相互隔离 分段机制对虚拟地址空间实行分段管理 把虚拟地址空间分成大小不同的存储段 80386的段选择子字段是从全局描述符表GDT或局部描述符表LDT中选择一个段描述符 即选择一个段 由于段选择子的高14位 13位索引号和1位TI位 是用来进行段描述符选择的 因此虚拟存储器中可包含有214个段 而一个段最大可为232B 所以虚拟空间为64TB TI位把这个64TB的地址空间分成全局和局部两个空间 分别为32TB 即每个地址空间最多拥有8192 213 个段 访问这两个地址空间的哪一个 由段选择器的TI位来区别 2 虚拟地址到物理地址的转换虚拟地址 逻辑地址 通常由两部分组成 段选择子和偏移地址 段选择子用来选择一个段 偏移地址用来指出操作数在所选择的段中的偏移量 虚拟地址先通过段管理部件转换成32位的线性地址 尔后 页管理部件将线性地址转换成32位的物理地址 如果不启用分页功能 则线性地址就直接作为物理地址 如图3 10所示 下面分别介绍三种模式下的地址转换 1 实模式的地址转换80386在实模式的地址转换和8086系统中物理地址的形成是一致的 如图3 11 a 所示 2 虚拟8086模式的地址转换和实模式下地址转换的区别在于增加了可选的分页功能 在该模式下 段选择器决定的基地址与偏移地址相加得到线性地址 如果启用了分页功能 则需通过页管理部件将其转换成物理地址 否则 直接将其作为物理地址 3 保护模式的地址转换段选择器也是用来指定一个段 不过它的值是用来访问描述符表 从中选择一个段描述符 因而间接决定一个段 段选择子的TI位用来选择GDT或LDT 其索引号乘以8后与TI所选择的描述符表的基地址 由相应的描述符表地址寄存器确定 相加 结果指向所对应的段描述符 CPU自动将该描述符加载到描述符寄存器 于是确定了这个虚拟地址所对应的段在物理存储器中的实际位置 大小及属性 如图3 11 b 所示 在保护模式下 描述符寄存器中的基地址与偏移地址相加的结果也为线性地址 线性地址到物理地址还需要转换 在这一点上和虚拟8086模式相同 4 分页功能由于虚拟空间远远大于物理空间 而可用的物理空间又常常小于可配置的物理空间 因此 虚拟存储器中的段不可能一次全部加载到物理存储器 为此 80386中引入了分页功能 把4KB的空间称为一页 即把线性空间和物理空间都以4KB为单位分页 分别称为线性页和物理页 实页 在引入分页功能时 段的长度取页的整数倍 而在分配存储空间和进行段的调度时 以一页为最小单位 根据需要 可一次只将段中一部分页调到内存 大大方便了段的调度 由于每次进行的是小块信息交换 所以对系统性能不会造成很大影响 5 线性地址到物理地址的转换线性页和物理页大小相等 在进行线性地址到物理地址变换时 其低12位是相同的 称为页内偏移量 线性地址到物理地址的转换主要是解决如何由线性页确定对应的物理页 转换方法一般采用在物理存储器中设置转换表 80386采用二级转换表 即一个页目录表和最多1024个页表 页目录表和页表的长度是4KB 都包含1024个表项 每个表项为4字节 每个页目录表表项存有指向一个页表的指针 页表基地址 及其它有关信息 每个页表的表项存有指向物理页的指针 物理页基地址 及其它有关信息 即页表中每一表项确定了一个线性页和物理页的对应关系 每个页表实际上对应了1024 4KB 4MB物理地址空间 而页目录表的每一表项对应了一个页表 因此 整个页目录表对应了l024 4MB 4GB即整个物理地址空间 页目录表的指针 基地址 保存在控制寄存器CR3中 线性地址高10位可用来确定页目录表中对应的表项 称之为页目录索引 线性地址中间10位可用来确定页表中对应的表项 称之为页表索引 线性地址的低12位与物理地址的低12位是一致的 同为页内偏移 线性地址的高10位 页目录索引地址 乘以4 每个页目录项为4字节 便得到要寻找项在页目录表中的的偏移地址 12位 页目录表的起始地址 基地址 由控制寄存器CR3的高20位再加上12个0提供 如图3 12所示 由于页目录表起始地址的低12全为 0 则项的地址实际上是由基地址的高20位和12位的偏移地址 目录索引地址乘4 组合而成的 由目录索引域从页目录表中寻址到的项中包含了对应页表基地址的高20位 页表基地址的低12位总是 0 标索引域为线性地址的12 21位 共10位 用来在由页目录索引域选中的页表中寻找某一项 表索引地址 10位 乘4便得到要寻址的项在页表中的12位偏移地址 该项的32位地址由页表基地址高20位与12位偏移地址组合而成 分两步查询页目录表和页表的结果 选中了某页表中的一项 该项的32位信息中 高20位提供了存储器中对应页帧 4KB 并对齐于4KB的边界处 32位基地址中的高20位 低12位为 0 被选中的页中 某存储单元的32位地址 物理地址 由页帧基地址的高20位与线性地址的低12位偏移量组合而成 需要解释的是 页目录表 页表及页的基地址都是4KB的整数倍 其低12位都是0 所以在给出它们的地址指针时 给出高20位即可 同样 在CR3中也是用高20位存放页目录表指针 6 转换旁路缓冲器TLB进行一次地址转换需要访问两次内存 一次访问页目录表 一次访问页表 为了加速地址转换过程 80386在芯片内部设置了转换旁路缓冲器TLB TranslationLooksideBuffer 部件 TLB可以存放当前常用的32个线性页面值 线性地址的高20位 即所在线性页基地址的高20位 可看成线性页的页编号 和所对应的物理页面值 物理地址的高20位 即所在物理页基地址的高20位 可看成物理页的页编号 此外还包含页的访问权限等属性 当线性地址需要转换时 将其高20位和TLB中线性页面值进行比较 如果与其中一个页面值相等 则立即可得到所对应的物理页面值 仅需要半个时钟周期 如果和32个线性页面值都不等 则通过常驻于存储器中的页目录表和页表进行转换 与此同时把新的转换信息 即该线性地址高20位以及所对应的物理地址高20位 取代TLB原有的一个条目 一般是将最近较少使用的条目替换掉 因此 TLB中总是保留着最近进行的页面转换信息 我们把前一种情况称为命中 把命中的次数与地址转换总次数之比称为命中率 TLB有32项 能表示出当前常用的32个线性页与物理页的对应关系 每页为4KB 因此TLB实际上表示128K个线性地址和物理地址的对应关系 因此 利用TLB进行地址转换有极高的命中率 一般可达98 左右 地址变换流程如图3 13所示 80486是将80386和浮点数处理器80387以及一个8KB的高速缓存集成在一个芯片内组成的 在80 x86系列中首次采用了RISC 精简指令集 技术 可以在一个时钟周期内执行一条指令 80486还采用了突发总线方式 大大提高了与内存的数据交换速度 由于这些改进 80486的性能比带有80387浮点数处理器的80386DX性能提高了4倍 3 480486微处理器简介 1 80486的主要特性 1 一片集成块中包含了80386 80387 8KB 16KB高速缓冲存储器 2 大约一半的指令在一个时钟周期内完成 3 采用倍频技术 66MHZ 33MHZ 100MHZ 33MHZ 120MHZ 40MHZ CPU处理速度加快 4 完全32位体系结构 支持多处理器 2 80486的基本结构80486的基本结构可以细分为9个部件 如下图3 14所示 9个部件相互间可以并行操作 这种更大范围的并行流水操作使80486对大多数指令以一个时钟周期一条指令的速度持续执行 9个处理部件的功能和特点分述如下 1 总线接口部件80486的总线接口部件BIU负责与处理器外部总线的联系 但与其它处理器不同的是 在处理器内部 BIU只与高速缓存部件和指令预取部件交换数据 其它处理部件的存储器访问请求 首先要经过高速缓冲存储器部件 对总线访问的所有请求 包括预取指令 读存储器和填充高速缓冲存储器都由BIU判优和执行 向高速缓冲存储器填充数据时 BIU一次便可以从外部总线读16个字节数据到高速缓冲部件 如果高速缓冲存储器的内容被处理器内部操作修改 修改的内容也由BIU写回到外部存储器中去 如果一个读请求所要访问的存储器操作数不在高速缓存中 则这个读操作便由BIU控制直接对外部存储器进行 预取指令代码时 BIU把从外部存储器取来的指令代码同时传送给代码预取部件和高速缓冲存储器 以便在紧密编码循环中 下一次预取相同的指令 可以直接访问高速缓存 BIU采用写缓冲寄存器先将写操作数据暂存起来 等待外部存储器或I O端口来取 当写操作的数据被缓冲寄存时 处理器便可以执行其它的操作 称为写缓冲 486的BIU可缓冲4个到存储器的32位写传输 地址 数据和控制信息都能被缓冲 这无疑将提高处理器的运行速度 2 高速缓冲存储部件高速缓冲存储部件用来管理8KB高速缓冲RAM 处理器中其它部件产生的所有总线访问请求在送达BIU之前 先经过高速缓存部件 如果总线访问请求能在高速缓存中得以解决 则该总线访问请求立即得以满足 且BIU不必再产生总线周期 这种情况称为高速缓存命中 如果总线访问请求不能在高速缓存中得以解决 便称为高速缓存未命中 BIU以一次16字节的传输方式将请求的存储单元内容送至高速缓存 这称为高速缓存的行填充 写操作时 首先检查高速缓存 若发现写操作的目标 则立即修改高速缓存的内容 并开始一个写总线周期 把修改的数据写回存储器 称为高速缓冲存储器写通 高速缓存部件及代码预取部件紧密耦合 一旦代码预取部件预取指令代码时未命中 BIU将对高速缓存进行行填充 从存储器取出的指令代码将同时送到高速缓存部件和代码预取部件 3 指令预取部件在总线空闲周期 指令预取部件向BIU发出预取指令的请求 预取的存储器地址由预取部件自身产生 预取周期将一次读16个字节的指令代码 并存入32个字节的预取队列中 如果高速缓冲存储器在指令预取时能命中 则不需要产生总线周期 遇到跳转 中断 子程序调用等操作时 预取队列被清空 4 指令译码部件指令译码部件的功能是从指令预取队列取机器码 并将其转换成对其它处理部件的控制信号 译码过程分两步 首先 要决定指令执行时是否需要访问存储器 若需要便立即产生总线访问周期 使存储器操作数在译码结束后准备好 然后 产生对其它处理部件的控制信号 为指令执行做好准备 由于采用两步译码 且大多数指令都在一个时钟周期内执行完毕 80486的指令译码部件中没有已译码指令队列 5 控制部件80486中控制部件单独设置而没有放在执行部件中 控制部件对整数部件 浮点部件和段部件等进行控制 完成已译码指令的执行 6 整数部件整数部件包括处理器的4个32位通用寄存器 2个32位变址寄存器 2个32位指针寄存器与64位桶形移位器 算术和逻辑运算部件 标志寄存器等 它能在一个时钟周期内完成整数的传输 加 减运算 逻辑运算等 7 分段部件和分页部件与80386一样 分段部件与分页部件一起构成存储器管理部件 用来实现存储器保护和虚拟存储器管理 分段部件用来将逻辑地址转换成线性地址 且采用高速缓存器来提高转换速度 分页部件用来完成虚拟存储器管理 把线性地址进行分页转换为物理地址 为了提高线性地址到物理地址的转换速度 80486的分页部件中也有转换旁路高速缓冲存储器 TLB 8 浮点部件80486DX的浮点部件与外部浮点数处理器功能完全一样 但当所需要的操作数存放在处理器内部的通用寄存器或高速缓冲存储器中时 运行速度便会得到极大提高 如果操作数的存取需要访问外部存储器 80486采取成组传输数据的方法来提高效率 486SX称为没有浮点数处理器的80486 这是因为机械地禁止了486DX中的浮点部件 因为浮点部件有故障 而处理器的其它功能未变 Pentium处理器集成了310万个晶体管 最初的工作频率是60MHz 66MHz 后来又提升到200MHz以上 第一代的Pentium代号为P54C 其后又发布了代号为P55C的Pentium 它是内建MMX 多媒体指令扩展 的Pentium处理器 PentiumMMX处理器增加了57条MMX指令 这些指令专门用来处理音 视频等数据 目的是提高CPU处理多媒体数据的能力 3 5Pentium系列微处理器 Pentium内部的主要寄存器是32位宽 故应认为它是一个32位微处理器 但它通向存储器的外部数据总线宽度为64位 每次总线可同时传输8字节数据 Pentium支持多种类型的总线周期 其中包括猝发模式 在此模式下可在一个总线周期内读出或写入256位 32字节 的数据 比80486增加了一倍 因此Pentium的Cache行及内存块均为32字节 3 5 1Pentium处理器的特点 Pentium外部地址总线宽度是36位 但一般使用32位宽 故物理地址空间为4GB 虚拟地址空间为64TB 分页模式除与486相同支持4KB页面之外 还支持2MB和4MB页面 其中 2MB页面的分页模式必须使用36位地址总线 因此一般不用 Pentium采用U V两条指令线的超标量结构 内部有分立的8KB指令Cache和8KB数据Cache 外部还可接256KB 512KB的L2Cache 这些都使它指令执行的速度比之80486有了很大的提高 Pentium大多数简单指令用硬件实现 一个时钟周期执行完 即使以微代码实现的指令 其微代码的算法也作了重大改进 所需时钟周期大为减少 尤其是它的片内浮点运算器与80486不同 是完全重新设计的 对于常用的浮点加法 乘法和浮点数装入操作 速度比80486快10倍 采用U V两条流水线 能在1个时钟周期内发射两条简单的整数指令 也可发射一条浮点指令 有少数例外 主频为60MHZ或66MHZ的Pentium 其速度分别可达100或111 6VAXMIPS 通称为1亿次 秒 Pentium虽然也有少数的RISC特征 如1个时钟周期执行1条简单指令 但它有几种长度的指令格式和多种寻址方式 CISC特征是主要的 因此 Pentium属于CISC结构处理器 以CISC结构之身却能实现超标量流水线 并且有分支目标缓冲器BTB方式的转移预测能力 确实难能可贵 堪称CISC和RISC结构相结合的典范 3 5 2Pentium的工作原理1 PentiumCPU内部的主要部件 1 总线接口部件 2 U流水线和V流水线 3 指令高速缓冲存储器Cache 4 数据高速缓冲存储器Cache 5 指令预取部件 6 指令译码器 7 浮点处理部件FPU 8 分支目标缓冲器BTB 9 微程序控制器中的控制ROM 10 寄存器组Pentium微处理器的原理结构图如下图3 15所示 2 原理结构在PentiumCPU中 总线接口部件实现CPU与系统总线之间的连接 其中包括64位双向数据线 32位地址线和所有控制信号线 具有锁存与缓冲等功能 总线接口部件实现CPU与外设之间信息交换 并产生相应的各类总线周期 1 互相独立的指令Cache和数据CachePentium在片内设置了2个独立的8KBCache 分别用于存放指令代码与数据 2 超标量流水线超标量流水线就是一条流水线在一个时钟周期内可执行一条以上的指令 超标量流水线是Pentium系统结构的核心 Pentium有U V两条指令流水线 每条流水线都有自己的ALU 地址生成电路和与数据Cache的接口 U流水线执行所有的整数和浮点数指令 而V流水线执行简单的整数指令和像浮点数交换这样的少数浮点数指令 U流水线能执行指令集的任何指令 包括指令前缀 而V流水线却不能 它只能执行 指令配对法则 中规定的简单指令 若连续的两条指令不能配对 则只能由U流水线先后执行这两条指令 超标量流水线技术的应用 使得PentiumCPU的速度较80486有很大的提高 3 浮点运算部件浮点运算部件内有专门用于浮点运算的加法器 乘法器和除法器 还有80位宽的8个寄存器构成了寄存器堆 内部的数据通路为80位 浮点运算部件支持IEEE754标准的单 双精度格式的浮点数 还可以使用一种临时实数的80位浮点数 如下图3 16所示 4 以BTB实现动态转换预测Pentium采用了分支目标缓冲器 BranchTargetBuffer 实现动态转移预测 可以减少指令流水作业中因分支转移指令而引起的流水线断流 不仅能预测转移是否发生 而且能确定转移到何处去执行程序 3 5 3Pentium寄存器组Pentium寄存器组中的通用寄存器组 段寄存器和指令指针与80386完全相同 下面就Pentium与80386不同的部分说明如下 1 标志寄存器标志寄存器EFLAGS是一个32位寄存器 低16位名为FLAGS 也是在16位寻址方式时使用 EFLAGS的第1 3 5 15和22 31位 Intel公司未定义 其余的19位大多反映操作结果的状态 但也有少数位起着控制作用 其余为系统标志 如图3 17所示各标志位的意义如下 CF PF A ZF SF TF IF DF和OF这9个标志是8086CPU的标志位 被Pentium继承 IOPL NT RF和VM这4个标志是80386CPU的标志位 被Pentium继承 AC 对准检查标志 所谓对准是访问字数据 16位 时地址应为偶数 访问双字数据 32位 时地址应为4的倍数 访问4字数据 64位 时地址应为8的倍数 若该位置 1 进行未对准地址访问时将产生异常中断17 只有在特权级3时此位有效 VIF 虚拟中断标志 VIP 虚拟中断挂起标志 虚拟中断 VirtualInterrupt 用于多任务环境中 虚拟中断标志是所用中断标志的虚拟映象 虚拟中断挂起标志指示虚拟中断是否被挂起 ID 识别标志 若这位被置位或复位 则指明处理器是否支持CPUID指令 该指令能提供处理器的厂商 系列和模式等信息 VIF VIP和ID三个标志位是Pentium相对于80486新增加的标志位 2 系统级寄存器组系统级寄存器组包括4个表 或段 基地址寄存器GDTR IDTR LDTR TR和5个控制寄存器CR0 CR1 CR2 CR3 CR4 所谓系统级寄存器组是指 这些寄存器只能由特权级0的系统程序访问 其格式如图3 18所示 1 表基地址寄存器PentiumCPU维护和管理位于主存的4类系统表 或段 它们是全局描述符表GDT 中断描述符表IDT 局部描述符表LDT和任务状态段TSS TSS保存有任务的环境 缺省时只有104字节 IDT存放中断门描述符 陷阱门描述符和任务门描述符 LDT和TSS是每个任务各一个 系统中可以存在多个LDT和TSS 任何时候系统只有一个GDT和一个IDT GDT的存储位置由全局描述表寄存器GDTR指向 IDT的存储位置由中断描述表寄存器IDTR指向 两个表基地址寄存器还有16位的表限字段 即表最大长度为64KB 而多个的LDT和TSS 每个的表 或段 的基地址 表 或段 限 属性等又以描述符的形式登记在GDT中 当前使用的LDT和TSS 分别由局部描述符表寄存器LDTR和任务寄存器TR 各为16位长 以选择符形式指出 即以指定的选择符查找GDT 读取相应的描述符并装入各自相应的描述符高速缓存器 才得到当前LDT和TSS的基地址及界限和属性等信息 2 控制寄存器除具有80386的CR0 CR3这4个控制器外 增加了1个控制寄存器CR4 并对CR0的CD NW位进行重新定义 CR1仍然为Intel公司保留 未定义 CR0寄存器含有系统控制位 它们用于控制操作模式或指示处理器正常工作的状态 与80386不同的位有 NW 非写直达控制位 该位置位时 数据Cache写直达操作被禁止 CD Cache禁止控制位 该位为1 0表示禁止 允许内部Cache的填充操作 CR4控制寄存器增添6个控制位 它们是 VME V86模式扩充允许位 该位为1时允许虚拟86模式扩充 否则禁止扩充 PVI 保护模式虚拟中断允许位 该位为1时允许 否则禁止虚拟中断 TSD 时间标记禁止位 该位为1而且当前特权级不为0时 禁止RDTSC 读时间标记计数器 指令 该位为0时 允许在所有特权级上执行RDTSC指令 DE 调试扩充允许位 该位为1时允许I O断点 这使处理器能在I O读写时中断 该位为0时禁止调试扩充能力 PSE 页面大小扩充允许位 该位为1时允许使用4MB分页方式 PAE 物理地址扩充允许位 该位为1时由线性地址转换成物理地址要经页目录指针表 页目录表 页表的三级查找 MCE 机器检查中断允许位 当一个总线周期不能成功完成或一个读总线周期出现数据奇偶错时 若该位为1则产生机器检查中断 系统级寄存器的设置充分体现了CPU对软件 操作系统和虚拟存储器段 页式映象的支持 3 5 5Pentium中断管理处理器的中断处理能力是对操作系统的有力支持 它允许一个应用程序被挂起 识别中断原因并及时予以服务 然后恢复应用程序的运行 1 中断类型有两类事件可引起Pentium挂起当前的指令流 即中断和异常 对这两类事件 Pentium首先保存进程的现场信息 然后以预先设计好的例程予以服务 中断 Interrupt 是由硬件信号引发的 在程序执行的任何时刻都可能出现 异常 exception 也称为异常中断 在操作系统中常称为例外 是由软件产生的 即由指令执行引发的 中断和异常中断各有两类中断源 中断和异常 1 中断可屏蔽中断 CPU的INTR引脚收到有效信号 如果Pentium标志寄存器IF位为1则引发中断 否则信号在CPU内被屏蔽 其执行特点如图3 19所示 非屏蔽中断 CPU的NMI引脚收到有效信号而引发的中断 这类中断不能被阻止 2 异常 执行异常 CPU试图执行一条指令的过程中出现错误 故障等不正常条件而引发的异常中断执行软件中断指令 Pentium指令系统中包括一些如INTO INT3 INTn和BOUND这类的软件中断指令 执行时产生异常中断 Pentium可以识别256种中断和异常 每种中断给予一个编号0 255 称为中断向量号 InterruptVectorNumber 如果不只一个异常或中断挂起的话 处理器以一个预先确定的顺序为它们先后服务 中断向量号值的大小不反映它们的优先级别 中断优先权分成如下五级 级1 前面指令的陷阱 即单步中断 向量号1 级2 外部中断 即NMI和INTR信号引发的中断 向量号 32 255 级3 取下一条指令的故障 即断点中断和缺页中断 向量号3 14 级4 译码一条指令的故障 即操作码无意义和设备无效 向量号6 7 级5 执行一条指令的故障 向量号0 4 5 8 10 14 16 17 2 中断处理由于实模式中断处理同8086中断系统 这里只对保护模式的中断处理进行分析 保护模式一般为32位寻址 中断描述符表IDT每一表项对应一个中断向量号 但表项称为中断门描述符 陷阱门描述符以及任务门描述符 这些门描述符为8字节长 对应256个中断向量号 因此 IDT表长为2KB IDT的内存位置由中断描述符表寄存器IDTR指向 以中断向量号乘以8作为访问IDT的偏移 读取相应的中断门 陷阱门描述符表项 门描述符给出中断服务子程序入口地址 段 偏移 其中32位偏移量装入EIP 16位的段值被装入CS寄存器 但此段值是选择子 还必须访问GDT或LDT得到段的基地址 保护模式下进入中断服务子程序的过程如图3 20所示 中断门和陷阱门描述符的格式如图3 21所示 它们的差异只在b40位上 中断门为0 陷阱门为1 功能上的差异是 中断处理通过中断门时EFLAGS的IF位被清为0 而陷阱门不改变IF位的状态 因此 陷阱门用于级2中断优先权级别较低的可屏蔽中断以及级别更低的中断和异常 中断门用于级2中断优先权级别较高的可屏蔽中断以及级别更高的中断 使用中断门 陷阱门时 处理器自动把原EFLAGS CS EIP三个寄存器的内容压入堆栈 若特权级发生变动 原特权级的SS和ESP二个寄存器也自动压入堆栈 完成中断现场的保护 保护模式使用中断有以下要点 IDT中的每一项 也就是每一个描述符 都定义了256个中断中的一个 在保护模式下 中断描述表IDT代替了实模式的中断向量表 虽然中断描述表可以容纳8192个中断描述符 可是CPU能利用的只有处于前面的256个 所以中断描述表的长度限制应该是7FFh 中断门 形像地表示了中断调用的过程 中断调用就像经过一扇门一样 这个门就是中断门描述符 因为中断门描述符中有DPL等权限盘查的标志 所以要想通过这扇门调用相应的中断服务程序是需要一定资格的 与通过调用门调用一个常规过程的特权级保护类似 处理器不允许切换到比当前特权级CPL更低的代码段中的异常和中断句柄过程 陷阱门 和 中断门 非常相似 一般来说 陷阱门 是用来捕获系统异常 而中断门用来响应中断 在具体的实现上 只有一点不同 中断门会将I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中华传统木雕工艺师认证考试模拟题库
- 2025年中国农业科技发展高峰论坛专家讲座要点预测题
- 拉晶清装工安全知识培训课件
- 拉力试验培训课件
- 护士肝病科普知识培训课件
- 抢车安全知识培训内容课件
- 2025年环氧丙烷项目发展计划
- 2025年计算机数字信号处理板卡项目发展计划
- 2024-2025学年湖南省常德市石门县九年级(上)期末数学试卷(含答案)
- 2025年煤制合成氨项目建议书
- 行政执法常识考试题库及答案
- 钢结构隔断施工方案(3篇)
- 2025年IT技术支持工程师招聘面试技巧与模拟题答案
- 2025年部编版新教材语文小学一年级上册教学计划(含进度表)
- T/CECS 10214-2022钢面镁质复合风管
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 公路工程标准施工招标文件(2018年版)
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 粤教版小学科学五年级上册同步教学课件(全册)
- 水土保持工程概(估)算编制规定(水利部水总[2003]67号)
评论
0/150
提交评论