1.65k likes | 1.92k Views
第 3 章 奔腾系列微处理器. 第 3 章 奔腾系列微处理器. 3.1 Pentium 性能和结构特点 3.2 Pentium 的寄存器 3.3 Pentium 的虚拟存储器 3.4 Pentium 的超标量流水线 3.5 Pentium 的引脚信号 3.6 Pentium Pro ~Itanium 的技术概况. 教学目的和教学要求. 掌握 Pentium 微处理器的原理结构、基本寄存器组中各寄存器的组成和功能、 Pentium 工作的实模式、保护模式以及虚拟 8086 模式 掌握 Pentium 微处理器的超标量流水线技术
E N D
第3章 奔腾系列微处理器 • 3.1 Pentium性能和结构特点 • 3.2 Pentium的寄存器 • 3.3 Pentium的虚拟存储器 • 3.4 Pentium的超标量流水线 • 3.5 Pentium的引脚信号 • 3.6 Pentium Pro ~Itanium的技术概况
教学目的和教学要求 • 掌握Pentium微处理器的原理结构、基本寄存器组中各寄存器的组成和功能、Pentium工作的实模式、保护模式以及虚拟8086模式 • 掌握Pentium微处理器的超标量流水线技术 • 熟悉存储器的保护、浮点运算部件以及与之相配套一起实现浮点运算的浮点寄存器等 • 了解Pentium微处理器的外部引脚 • 了解Pentium ProItanium的技术概况
本章重点、难点 • 重点: • Pentium工作的实模式、保护模式以及虚拟8086模式的工作原理 • Pentium微处理器的超标量流水线技术 • Pentium微处理器的原理结构 • 难点: • Pentium微处理器的只分段、只分页管理 • Pentium微处理器的既分段又分页管理 • 存储保护中的特权级保护方式
3.1 Pentium性能和结构特点 3.1.1Pentium性能简介(1) 1993年3月Intel公司推出了第五代微处理器Pentium Pentium是微处理器本质上的一次创新。 Pentium采用了0.8μm双极性互补金属氧化半导体(BiCMOS)技术,它属于单芯片超标量流水线微处理器,片内集成了多达310万个晶体管,工作电压+5V,功耗15W。片内时钟频率(微处理器主频)与外片主总线的时钟频率相等,均为60MHz或66MHz两种。
3.1.1Pentium性能简介(2) 1994年3月之后推出的Pentium(P54C)采用了0.6μm的CMOS技术,工作电压降为3.3V,功耗降至4W。主总线时钟频率有50MHz、60MHz以及66MHz等,经倍频后作为Pentium(P54C)内部的时钟频率(主频),表3-1列出了几种Pentium(P54C)的主频与工作电压。
3.1.1Pentium性能简介(3) Pentium通往外部存储器的数据总线为64位,CPU内部主要寄存器的宽度仍然为32位,那么Pentium、Pentium(P54C)应该是32位微处理器。外部64位数据总线(D63-D0)每次可同时传输8字节的二进制信息,若选用主总线时钟频率66MHz计算,即存储器总线的时钟频率也为66MHz,则Pentium与主存储器交换数据的速率可为528MB/S。
3.1.2Pentium的原理结构(1) 一、Pentium CPU内部的主要部件 ①总线接口部件 ②U流水线和V流水线 ③指令高速缓冲存储器Cache ④数据高速缓冲存储器Cache ⑤指令预取部件 ⑥指令译码器 ⑦浮点处理部件FPU ⑧分支目标缓冲器BTB ⑨微程序控制器中的控制ROM ⑩寄存器组 Pentium微处理器的原理结构图如图3-1所示
3.1.2Pentium的原理结构(2) 二、原理结构 在Pentium CPU中,总线接口部件实现CPU与系统总线之间的连接,其中包括64位双向的数据线、32位地址线和所有的控制信号线,具有锁存与缓冲等功能,总线接口部件实现CPU与外设之间的信息交换,并产生相应的各类总线周期。
3.1.2Pentium的原理结构(3) 1.互相独立的指令Cache和数据Cache Pentium则在片内设置了2个独立的8KB Cache,分别用于存放指令代码与数据。指令Cache是内存中一部分程序的副本,通过猝发方式从内存中每次读入一块存入某一Cache行中,便于CPU执行程序时取出并执行,数据Cache是可以读写的,双端口结构,每个端口与U、V两条指令流水线交换整数数据,或者组合成64位数据端口,用来与浮点运算部件交换浮点数据,指令Cache与数据Cache均与CPU内部的64位数据线以及32位地址线相连接。
3.1.2Pentium的原理结构(4) • 互相独立的指令Cache和数据Cache有利于U、V两条流水线的并行操作,它不仅可以同时与U、V两条流水线分别交换数据,而且使指令预取和数据读写能无冲突地同时进行。 • 可以通过硬件或软件方法来禁止或允许使用Pentium CPU内部的Cache。
3.1.2Pentium的原理结构(5) 2.超标量流水线 Pentium有U、V两条指令流水线,故称之为超标量流水线,超标量流水线技术的应用,使得Pentium CPU的速度较80486有很大的提高。因此,超标量流水线是Pentium系统结构的核心。
3.1.2Pentium的原理结构(6) • U、V流水线中整数指令流水线均由5段组成。分别为预取指令(PF)、指令译码(D1)、地址生成(D2)、指令执行(EX)和结果写回(WB)。 • 由于采用了指令流水线作业,每条指令流水线可以在1个时钟周期内执行一条指令。因此,最佳情况下一个时钟周期内可以执行两条整数指令。
3.1.2Pentium的原理结构(7) 3.重新设计的浮点运算部件 Pentium CPU内部的浮点运算部件在80486的基础上进行了重新设计。如图3-1所示。浮点运算部件内有专门用于浮点运算的加法器、乘法器和除法器,还有80位宽的8个寄存器构成了寄存器堆,内部的数据通路为80位。浮点运算部件支持IEEE754标准的单、双精度格式的浮点数,还可以使用一种临时实数的80位浮点数。
3.1.2Pentium的原理结构(8) Pentium对浮点数的一些常用指令,例如加法指令ADD,乘法指令MUL等,都采用了新的算法,并将新的算法用硬件来实现,使得浮点数运算的速度大大提高,其速度相当于80486的10多倍。
3.1.2Pentium的原理结构(9) 4.以BTB实现动态转换预测 Pentium采用了分支目标缓冲器(branch target buffer)实现动态转移预测,可以减少指令流水作业中因分支转移指令而引起的流水线断流。 引入了转移预测技术,不仅能预测转移是否发生,而且能确定转移到何处去执行程序。
例【3-1】下面是连续传送100个字节的循环程序段例【3-1】下面是连续传送100个字节的循环程序段 MOV SI,0200H ;源数据区偏移地址给SI MOV DI,0500H ;目的数据区偏移地址给DI MOV CX,64H ;待传送字节数为100,赋给CX ABC:MOV AL,[SI] ;从源区取出一个字节 MOV [DI],AL ;存入目的数据区 INC SI ;源地址指针加1 INC DI ;目的地址指针加1 DEC CX ;CX=CX-1 JNZ ABC ;若CX≠0,转ABC ·······
从上述程序可以看出,许多分支转移指令转向每个分支的机会不是均等的,而且大多数分支转移指令排列在循环程序段中,除了一次跳出循环体之外,其余转移的目标地址均在循环体内。因此,分支转移指令的转移目标地址是可以预测的,预测的依据就是前一次转移目标地址的状况,即根据历史状态预测下一次转移的目标地址。预测的准确率不可能为100%,但是对于某些转移指令预测的准确率却非常高。从上述程序可以看出,许多分支转移指令转向每个分支的机会不是均等的,而且大多数分支转移指令排列在循环程序段中,除了一次跳出循环体之外,其余转移的目标地址均在循环体内。因此,分支转移指令的转移目标地址是可以预测的,预测的依据就是前一次转移目标地址的状况,即根据历史状态预测下一次转移的目标地址。预测的准确率不可能为100%,但是对于某些转移指令预测的准确率却非常高。
3.2 Pentium的寄存器 Pentium的寄存器可以分为三组: ①基本寄存器组:包括通用寄存器、指令寄存器、标示寄存器以及段寄存器。 ②系统寄存器组:包括系统地址寄存器、控制寄存器。 ③浮点部件寄存器组:包括数据寄存器堆、控制寄存器、状态寄存器、指令指针寄存器和数据指针寄存器以及标记字寄存器。
3.2 .1 基本寄存器组 Pentium的基本寄存器包括通用寄存器、段寄存器、指令指针和标志寄存器: 一、通用寄存器 Pentium通用寄存器如图3-2所示,它兼容8086 CPU原来的8个16位通用寄存器以及原来的8个8位的寄存器,而且将原来的8个16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP均扩展成32位的寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。既可以使用保留的8位和16位寄存器,还可以使用32位寄存器。
二、段寄存器及段描述符高速缓存器 段寄存器及段描述符高速缓存器如图3-3所示,Pentium有6个16位段寄存器,每个段寄存器对应有一个64位的描述符,用户不可见。6个段寄存器的长度均为16位。除CS和SS分别是代码段寄存器和堆栈段寄存器之外,其余的DS、ES、FS、GS都是数据段寄存器。
1. 6个段描述符 每个段对应一个段描述符(8个字节),6个段描述符存放在CPU内的段描述符高速缓存器中,它们均由内存的描述符表中拷贝而成,以便CPU访问某一段时,均按存放在CPU内该段的段描述符所描述的信息进行操作。每个段描述符的具体组成如图3-4所示:
2.6个16位段寄存器 每个段寄存器的组成如图3-5所示。在保护模式下,段寄存器被称作为一个16位的段选择字,其中b1、b0位为请求特权级RPL,可以请求特权层的级别0-3级。
三、指令指针和标志寄存器 Pentium CPU中有一个32位的指令指(EIP)和一个32位的标志寄存器(EFLAGS),如图3-6所示:
EIP保存下一条待执行指令所在代码段内的偏移值,也就是偏离代码段首地址的字节地址数值。EIP的低16位为IP,供实地址方式下采用。EIP保存下一条待执行指令所在代码段内的偏移值,也就是偏离代码段首地址的字节地址数值。EIP的低16位为IP,供实地址方式下采用。 • EFLAGS在8086 16位FLAGS基础上扩充了高16位,其中,FLAGS b11~b0中保留了8086 CPU中6个状态标志和3个控制标志,增加了NT与IOPL,高16位中新增了6个标志位。这些扩充标志位的含义参考教材。
3.2.2 系统寄存器组 Pentium的系统寄存器组包括4个表所对应的4个基地址寄存器GDTR、IDTR、LDTR、TR,也称为4个段基地址寄存器,还包括5个控制寄存器CR0、CR1、CR2、CR3、CR4。系统寄存器组中的所有寄存器都不可能被用户访问,只能由特权级为0的操作系统程序访问。
一、4个表基地址寄存器 4个表基地址寄存器如图3-7所示 (1)GDTR(Global Descriptor Table Register),全局描述符表寄存器。共有48位,其中,高32位保存全局描述符表的线性基地址,低16位是表限字段,即表的最大长度仅64KB。 (2)IDTR(Interrupt Descriptor Table Register),中断描述符表寄存器。共有48位,其中高32位用于保存中断描述符表IDT的32位线性基地址,低16位是表限字段,表的最大长度也是64KB。
(3)LDTR(Local Descriptor Table Register),局部描述符寄存器。包括16位段选择符,不可编程的64位描述符寄存器。在64位描述符寄存器中,有32位LDT的线性基地址,20位的表限及12位的描述符属性。 (4)TR,任务寄存器。包括16位段选择符,64位描述符寄存器,其中,32位任务状态段的线性基地址,20位的表限及12位的描述符属性。
二、5个控制寄存器 1.CR0 控制寄存器
2.CR2 页故障线性地址寄存器 用于保存最后出现页故障的32位线性地址。操作系统中的页异常处理程序可以通过检查CR2的内容,得知32位的线性地址。 3.CR3 页目录基址寄存器 其中高20位存放页目录表的物理基地址。在进行分页变换时,加上10位线性地址×4,找到某一存储容量为4B的页描述符。在页目录基址寄存器的低12中,有PCD和PWT两位控制位,其余10位保留。
4.CR4允许结构扩展的标志寄存器 32位CR4中仅使用了9个控制位,其余23位保留。
5.模式专用寄存器 Pentium取消了测试寄存器,而用一组专用寄存器来实现更多的功能。这组寄存器具有测试、跟踪、性能检测以及机器检查等功能。
3.2.3 浮点寄存器组 Pentium内部有一个浮点运算部件,与之配套一起实现浮点运算的浮点寄存器有: • 8个数据寄存器 • 1个标记字寄存器 • 1个状态寄存器 • 1个控制寄存器 • 1个数据指针寄存器
1. 8个数据寄存器 数据寄存器R7-R0均为80位宽,在每个80位寄存器中,均有1位数符位,15位阶码位,64位尾数位。 2. 标记字寄存器 16位宽的标记字寄存器分成8个2位,分别对应8个数据寄存器,如图3-11所示。标记字寄存器的b1、b0位对应R0数据寄存器,b3、b2位对应R1数据寄存器,显然b15、b14位对应数据寄存器R7,用两位二进制数作标记,以便CPU只须通过检查标记位,就可以知道数据寄存器是否空等。
三、状态寄存器 16位寄存器都被用来指示FPU当前所处的状态: (1)IE,若IE置1,表示产生了无效操作,指示这是非法操作产生的故障。 (2)DE,若DE为1,表示操作数不符合规范产生的故障。 (3)ZE,若ZE=1,则指示除数为0引起的故障。 (4)PE,若PE=1,则指示运算结果不符合精度规格。 (5)SP,堆栈故障标志位,当IE=1且SF=1时,若C1=1则表示堆栈上溢引起无效故障。若C1=0,则指示堆栈下溢引起无效故障。
(6)ES,错误标志位,以上任何一个故障都会使ES=1,且使CPU引脚信号变为低电平。(6)ES,错误标志位,以上任何一个故障都会使ES=1,且使CPU引脚信号变为低电平。 (7)C0-C3,条件码,这4位条件码可以用SAHF指令进行设置,也可用FSTSW指令读取,该4位二进制的状态使FPU实现某种选择。C0还和SF配合使用表示堆栈的状态。 (8)TOP,堆栈栈顶指针。 (9)B,用来指示FPU当前是否处于忙状态,当B=1时,表示忙,反之处于不忙状态。
四、FPU的控制寄存器 (1)PM~IM低6位控制位,分别用来控制6种异常能否允许产生中断,这6种控制位分别用来屏蔽状态寄存器中的低6种状态位,即IM位用来屏蔽IE位,DM位用于屏蔽DE位等。 (2)2位PC位,用作精度控制,当2位PC位为00时,作24位单精度运算,10时为53位双精度运算,11时为扩展的双精度运算,即64位运算,01未用。 (3)2位RC位,用作舍入控制。
3.3 Pentium的虚拟存储器 3.3.1 Pentium的工作模式简介 Pentium的虚拟存储器(Vivtual Storage)技术、高速缓存(Cache)技术以及超标量流水线技术是微型计算机系统的三大支柱,虚拟存储器的目标是如何高速允许多个软件进程共享并使用主存储器这一容量有限的存储资源。虚拟存储器的实现不仅仅体现在计算机硬件系统上的完美无缺,而且虚拟存储器技术是操作系统的核心技术,操作系统中存储器管理程序的主要任务就是要将有限的主存储器不断地动态分配给各活动进程。
Pentium的工作模式分为:实模式、保护模式、虚拟86模式、平展模式、线性空间以及系统管理模式共五种。Pentium的工作模式分为:实模式、保护模式、虚拟86模式、平展模式、线性空间以及系统管理模式共五种。 Pentium外部的地址总线宽度36位,由控制寄存器CR4中物理地址扩充允许位PAE控制所使用的物理空间,一般设PAE=0,禁止地址的扩充,只使用32位的物理地址,32位地址由A31-A3及8个字节选择信号BE7-BE0组成,因此,最大物理地址空间是4GB。Pentium CPU外部数据总线宽度为64位,但CPU内部寄存器仍为32位,Pentium微处理器是32位微处理器
3.3.2 Pentium工作的保护模式 保护模式是受保护的虚拟地址模式(Protected Virtual Address Mode)的简称。从80386 CPU开始,就具有了保护模式,Pentium CPU内部也设有存储器管理部件MMU,其中,仍然包括分段部件SU和分页部件PU,通过系统程序员编程,Pentium可以工作在只分段或只分页或既分段又分页三种方式。这三种方式的关键建立在分段地址转换与分页地址转换的基础之上。
一、分段地址转换 1.利用GDTR与LDTR分别访问GDT与LDT 48位的全局描述符表寄存器包括32位全局描述符表的基地址和16位的表界限,GDT的长度不超过64KB。在保护模式下,Pentium支持多任务的运行,如果某一任务要访问GDT时,则以GDTR中32位基地址作为全局描述符表的基地址,再由每个任务选择符的高13位左移3位后作为GDT的偏移地址,指向所要访问的8字节的描述符。