微机原理与接口技术(基于32位机)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 Pentium 32位微处理器

Intel公司在1993年推出了全新一代的高性能微处理器Pentium。Pentium是由拉丁文“五”(pente)和元素周期表的公用后缀——ium组合而成的,其寓意是指Pentium为该公司的第五代产品。人们为它起了一个相当好听的中文名字“奔腾”。Pentium芯片内部集成了310万个晶体管,集成度和运算速度大为提高。Pentium微处理器与80486微处理器相比有很多特色和增强点,它的超标量结构使得在每个时钟周期内可以同时执行两条整型指令,它将芯片内的8KB数据Cache与8KB指令Cache分开,以及分支预测、流水线和浮点单元等设计都大大提升了系统性能,从而使全球的微处理器技术步入了一个崭新的时代。Pentium还支持双处理器系统,芯片中具有本地多处理器、中断控制器以及电源管理特性等。继Pentium之后推出的高能Pentium、多能Pentium、PentiumⅡ、PentiumⅢ、Pentium 4等都是以Pentium为基础逐代开发出来的微处理器。

2.3.1 Pentium微处理器内部结构

Pentium微处理器由总线接口部件(64位)、指令Cache、数据Cache、分支转移目标缓冲器、控制ROM部件、控制部件、预取缓冲部件、指令译码部件、整数运算部件、整数及浮点数寄存器组、浮点运算部件等11个功能部件组成,如图2.21所示。

图2.21 Pentium微处理器内部结构

Pentium与80486一样,都是32位微处理器,但与80486相比,Pentium的性能指数提高了两倍以上。下面介绍Pentium微处理器最突出的特点。

1.超标量流水线

80486微处理器只有一条流水线(pipelines),而Pentium微处理器具有U、V两条流水线,每个时钟周期能同时执行两条整型指令,是首款超标量(superscalar)为2的Intel微处理器。超标量流水线(super-pipelines)设计是Pentium微处理器新技术的核心。

Pentium微处理器把生成地址的硬件和算术逻辑运算部件配置成两个各自独立的整数流水线,即U流水线和V流水线。主流水线U可以执行Intel体系结构的全部整型与浮点指令,包括微代码构成的复杂指令。而V流水线只能执行简单的整型指令和浮点部件的FXCHG指令。

Pentium的流水线结构如图2.22所示,U和V两条整型流水线都由5级组成,分别是指令预取PF(pre-fetch)、译码D1(decode stage 1)、译码D2(decode stage 2)、执行EX(execute)、寄存器或存储器回写WB/X1(write back/ execute 1)。主流水线U执行浮点指令时增加了执行级X2(execute 2)、浮点寄存器写入级WF(write floating point register)和出错级ER(error),所以U流水线共有8级。

图2.22 Pentium的流水线结构

在U流水线的第一级,即PF级,预取指令队列,将其送入第二级译码D1,检查是否有分支转移。第三级译码D2则产生存储器操作数地址。在第四级执行级EX中,读取数据Cache或寄存器操作数,或者像NOP空操作整型指令一样处于等待状态,并不执行其他操作。U流水线的第五级,即WB级,是写寄存器,包括写状态寄存器,以及更新它们的内容。对于浮点流水线,该级也有类似的功能,它作为浮点执行级X1,为实际执行级X2做好准备。X1级可以实现对FP7~FP0这8个80位浮点寄存器的写操作,将从数据Cache或存储器中读取的数据转换成暂存的实型格式,写入其中的某一个寄存器中。由X1级出来后再进入浮点执行级X2,这是浮点指令的实际执行级。然后进入浮点寄存器写入级WF,将结果写回到80位的浮点寄存器中。最后一级是出错级ER,指示浮点处理中可能出现的错误。浮点部件中加法器、乘法器和除法器都是用硬件来实现的。

2.独立的指令Cache和数据Cache

80486微处理器片内只有8KB Cache,Pentium微处理器则有16KB,且将指令Cache与数据Cache完全分开,各为8KB,这样就完全避免了预取指令与数据两者之间的冲突。而且指令Cache与数据Cache都有各自的转换后援缓冲器TLB,因而存储器管理部件(MMU,memory management unit)中的分页部件能迅速地将代码或数据的线性地址转换成物理地址。

3.全新的浮点部件

Pentium微处理器的浮点部件相对80486微处理器有了彻底的改进,它的浮点流水线U有8级,前5级与V流水线共享,后三级则有自己独立的浮点流水线,每个时钟周期可以执行一条浮点指令。

4.分支转移的动态预测

所谓分支预测,是指当CPU遇到无条件或有条件转移指令、CALL调用指令、RET返回指令、INT n中断调用以及中断返回指令IRET等跳转指令时,指令预取单元能够较准确地判断是发生转移取指,还是依据EIP指针顺序往下取指。

80486微处理器的指令流水线没有分支预取功能,它不能将转移指令与其他指令区别开来,预取单元只能依据IP/EIP指针顺序地取出下一条指令代码送入预取队列,因此取出跳转指令后也总是继续读取下一条指令。当轮到执行阶段时,如果真的不发生跳转,则流水线上不会发生任何问题,继续操作下去即可。如果发生跳转,那么预取队列中已经装入的指令,以及前几个流水线阶段的工作都要“作废”,必须清除并重新装入转移地址处的指令,这样就使流水线操作出现了一次“返工”,影响了整机操作的效率。

Pentium微处理器借助跳转目标缓冲器(BTB,branch target buffer)等逻辑部件实现了分支转移的动态预测。BTB是一个具有256行的四路组合相关映射高速Cache,以跳转的32位目标地址、两位历史状态及1位有效状态作为一个Cache存储的内容。被预取的指令送入U和V两条流水线,同时将指令所在的EIP地址送入BTB进行查找比较。如果在BTB中没有这个地址,就不进行预测。如果在BTB中找到了该地址,即为命中,那么微处理器将根据BTB中对应记录的历史状态来预测当前是否发生跳转,这样分支预测逻辑就能比较可靠地预测分支走向,指令预测队列就可以预取较多的指令。当执行调转指令时,其跳转的目标地址将用于更新BTB中相应的地址记录。Pentium微处理器的分支转移动态预测功能,使得主流水线不会空闲,从而大大加速了程序得执行。

5.64位外部数据总线

80486微处理器的外部数据总线只有32位,而Pentium微处理器的外部数据总线经总线接口部件扩展到了64位。该接口电路与内部高速缓冲存储器Cache连接,因而外部数据与指令的传输速率比80486微处理器要高很多,能有效地克服外部总线上的瓶颈问题。

2.3.2 Pentium微处理器寄存器结构

Pentium微处理器与80486微处理器的寄存器一样,都包括整数部件中的基本寄存器、系统寄存器、调试和测试寄存器以及浮点寄存器,而且功能基本相同。只是系统寄存器中增加了CR4控制寄存器和TR1、TR2测试寄存器。另外,在Pentium微处理器的标志寄存器中又增加了三个新的功能位。下面只对新增加的寄存器及其功能位加以简单介绍。

1.控制寄存器CR4

CR4是Pentium微处理器在80486微处理器基础上新增加的控制寄存器,包括七个控制位,格式如图2.23所示。

图2.23 Pentium控制寄存器CR4的格式

VME(virtual 8086 mode Extension):虚拟8086模式扩展位。VME=1,允许虚拟8086扩展,即允许8086模式和虚拟8086中断。VME=0,禁止虚拟8086模式扩展。

PVI(protected mode virtual interrupts):保护模式虚拟中断位。PVI=1,允许保护模式虚拟中断。PVI=0,禁止保护模式虚拟中断。

TSD(time stamp disable):禁止RDTSC指令位。TSD=0,允许RDTSC(读时间标志计算器)指令在任何特权级上执行。TSD=1,仅允许RDTSC指令在0级特权级上执行,否则将发生一般保护模式异常。

DE(debugging extensions):调试扩展位。DE=1,允许输入/输出断点。DE=0,不支持输入/输出断点。

PSE(page size extensions):允许页容量大小扩展位。PSE=1,允许每页容量为4MB。PSE=0,只允许每页容量为4KB。

PAE(physical address extension):允许物理地址扩展位。PAE=1,允许采用32位以上的物理地址(包括32位和64位地址)。PAE=0,只允许采用32位物理地址。

MCE(page global enable):允许机器检查异常位。MCE=1,允许机器检查异常。MCE=0,不允许机器检查异常。

2.测试寄存器TR

Pentium微处理器在80486微处理器5个测试寄存器TR7~TR3的基础上,新增加了两个测试寄存器TR1和TR2。TR1用于Pentium微处理器的奇偶校验测试,TR2作为指令Cache结束位测试。Pentium微处理器中TR7~TR3的功能与80486微处理器的完全相同。

3.标志寄存器EFLAGS

Pentium微处理器中的标志寄存器EFLAGS在80486微处理器中的EFLAGS的基础上,新增加了三个标志位,其他标志位与80486微处理器的完全一样,这里不再赘述。Pentium微处理器的标志寄存器的格式如图2.24所示。

图2.24 Pentium微处理器的标志寄存器

新增加的三个标志位说明如下。

VIF(virtual interrupt flag):虚拟中断标志位。在虚拟8086模式下,VIF是中断标志位IF的副本,与VIP一同使用。在实地址模式下不使用VIF标志。

VIP(virtual interrupt pending):虚拟中断挂起标志位。VIP用于多任务环境下,为操作系统提供虚拟中断标志和中断挂起信息。VIP=1,表明有中断被挂起;VIP=0,表明没有中断被挂起。VIP与VIF一同使用,使得在虚拟8086模式下具有中断标志位IF的虚拟方式。这样处理后,中断过程会明显加速。在实地址模式下不使用VIP标志。

ID(identification):识别标志位。ID指示Pentium微处理器是否支持CPUID指令。ID=1,支持CPUID指令,从而可以获得处理器的版本与特性信息。

2.3.3 Pentium微处理器引脚信号及功能

Pentium微处理器采用PGA封装形式,共有237个引脚信号,其中包括29个地址引脚信号,64个数据引脚信号,75个控制引脚信号,69个VCC、VSS和NC空脚。Pentium微处理器的引脚信号如图2.25所示。按功能可分为地址总线、数据总线和控制总线三大类。其中控制总线又分为总线周期定义、总线控制、总线仲裁、高速缓存、中断、错误检测和系统管理模式等。

1.时钟信号

CLK(clock):时钟信号,为CPU提供基本的定时信号。

2.地址总线(address bus)

A31~A3(address):32位地址总线,三态,输出,用于定义存储器和I/O端口地址。

(byte enable):字节允许信号,低电平有效。

A31~A3构成32位地址总线,可寻址4GB的内存空间和64KB的I/O空间。4GB的内存空间分为8个1GB的存储体,每个存储体分别由字节允许信号选通。当i=0~7)有效时,选择相应的存储体,然后由A31~A3选择相应的字节进行读/写操作。寻址I/O空间时,只有A15~A3i=0~7)有效,寻址64KB的I/O空间。

(address bit 20 mask):第20位地址屏蔽信号,输入,低电平有效。当有效时,将屏蔽A20及以上地址,使Pentium微处理器仿真8086微处理器的1MB存储器地址。只有微处理器工作在实地址模式下才有意义。

AP(address parity):地址奇偶校验位,双向,高电平有效,指示地址总线A31~A3上的偶检验信息。

图2.25 Pentium微处理器引脚信号

(address parity check):地址奇偶位检测,输出,低电平有效,指示微处理器检测到询问周期地址总线奇偶错。Pentium微处理器对地址总线增加了奇偶校验功能,它输出的地址信号A31~A3会产生一个奇偶校验位,在AP信号线上输出,存储器子系统可据此对地址进行校验。在询问周期中,要对请求的地址进行校验操作,分别由和AP输入外部地址有效和奇偶校验信息。如果发现奇偶校验错误,则在信号线上输出低电平。

3.数据总线(data bus)

D63~D0(data lines):64位双向数据总线,可以传输8位、16位、32位和64位数据。

DP7~DP0(data parity):数据奇偶校验信号,双向。DP7~DP0分别对应64位数据中字节7至字节0的校验位,即DP7对应D63~D56,DP0对应D7~D0

(parity check):奇偶校验状态信号,输出,低电平有效。当低电平时,表示CPU在上一个读周期采样的数据奇偶校验出错。

(parity enable):奇偶校验允许信号,输入,低电平有效。用来规定在发生校验时,是否进行异常处理。若为低电平,且控制寄存器CR4的MCE位为1,则出现校验错误,微处理器将会自动执行异常处理。

4.总线周期定义(bus cycle definition)

Pentium微处事器中的读/写信号、存储器或I/O访问信号、数据/控制信号、总线锁定信号与80486微处理器中的这些信号功能相同。

SCYC(split cycle):分隔周期信号,输出,高电平有效,用于总线锁定周期,表示未对齐操作锁定周期期间有两个以上的周期被锁定。

(cache):可高速缓存信号,输出,低电平有效。在读总线周期,有效表明从存储器读出的数据可送入高速缓冲存储器。当为高电平时,即使Cache控制信号有效,对读回的数据也不进行缓存。在写总线周期,有效,表明写操作对片内高速缓冲存储器中被修改的数据执行突发式回写操作。由信号定义的总线周期见表2.10。

表2.10 Pentium微处理器总线周期

5.总线控制(bus control)

Pentium微处理器中的地址选通信号、突发就绪信号与80486微处理器中的这些信号功能相同。

(next address):下一个地址信号,输入,低电平有效,用于形成流水线式总线周期。当为低电平有效时,表明即使当前总线周期还没有完成,外部存储系统已经准备就绪,将下一个地址输出到总线上,以开始一个新的总线周期。

6.高速缓存控制(cache control)

Pentium微处理器中的地址保持请求信号AHOLD,页面通写控制信号PWT,页面高速缓存禁止信号PCD,高速缓存允许信号,高速缓存清除信号与80486微处理器中的这些信号功能相同。

(external address):外部地址有效信号,输入,低电平有效。当有效时,产生一个询问周期。

(write back/write through):回写/通写方式信号,输入。为高电平,对片内数据Cache行采用回写方式;为低电平,采用通写方式。

(hit):询问周期命中信号,输出,低电平有效。

(hit to a modified line):命中数据Cache的修改行信号,输出,低电平有效。

INV(invalidation):无效请求信号,输入,高电平有效,在询问周期被命中时,用来确定最后Cache行是无效状态还是共享状态。

和INV信号用于询问周期。询问周期的作用是通过引脚查询数据Cache和指令Cache,以检查现行地址是否命中Cache。若命中,则输出低电平。若该地址命中Cache中一个已经修改过的行,则输出低电平,然后将已经修改的行回写到总线上。当INV引脚输入高电平时,将使当前Cache行的下一个状态变为无效状态(即该行不可以使用)。

(external write buffer empty):外部写缓冲器空信号,输入,低电平有效。当有效时,表明在外部系统中有一个通写周期被挂起,因而将停止写入数据Cache行。

7.初始化(initialization)

RESET:复位信号,输入,高电平有效。当RESET有效时,内部Cache全部无效,同时,在数据Cache中的修改行不再回写。RESRT的基本功能与80486微处理器的RESET信号相同。

INIT(initialization):初始化信号,输入,高电平有效。INIT的作用与RESET的作用类似,不过,它在进行微处理器初始化时,将保持片内Cache、写缓冲器和浮点寄存器的内容不变,所以INTI不能取代RESET系统上电后的复位功能。当RESET信号由高电平变为低电平时,如果INTI为高电平,则Pentium微处理器在程序执行前进行内部自检测。

8.中断请求(interrupts)

Pentium微处理器中的可屏蔽中断请求INTR信号、非屏蔽中断请求NMI信号与80486微处理器中的这些信号功能相同。

9.总线仲裁(bus arbitration)

Pentium微处理器中的总线请求信号HOLD、总线请求响应信号HLDA、内部总线请求信号BREQ、强制CPU放弃系统总线信号与80486微处理器中的这些信号功能相同。

10.错误检测(error reporting)

FREE(floating-point error):浮点错误报告,输出。当系统产生非屏蔽浮点错误中断时,引脚输出低电平。

(ignore numeric error):忽略数字错误,输入,低电平有效。当引脚为低电平时,CPU将忽略已经被挂起的非屏蔽数字异常,而继续执行浮点指令。

(bus check):总线周期检测,输入,低电平检测,用于检测总线周期是否正常结束。当引脚输入为低电平时,将错误的总线周期类型和地址锁存到系统寄存器中,若此时控制寄存器CR4中的MCE位为1,系统将自动执行异常处理程序。

(function redundancy checking):功能冗余检测信号,输入,低电平有效。

(internal error):内部出错指示信号,输出,低电平有效。如果在读周期产生奇偶错误,系统将强制输出一个时钟周期的低电平。

11.系统管理模式(system management mode)

(system management interrupt):系统管理中断请求信号,输入,低电平有效。当有效时,进入系统管理模式。

(system management interrupt active):启动系统管理模式工作信号,输出,低电平有效,指示Pentium微处理器进入系统管理模式。

系统管理模式主要用于实现系统电源管理功能,进入该模式后,微处理器的状态被保存起来,并可以有单独的存储空间。执行RSM指令,则退出系统管理模式。

12.测试访问端口(tap port)

TCK(testability clock):测试时钟,输入,为系统的边界扫描提供时钟信号。TDI(test data input):测试数据输入引脚,输入。

TDO(test data output):测试数据输出引脚,输出。

TMS(test mode select):测试模式选择,输入。

(test rest):测试复位引脚,输入。

13.断点/性能检测(breakpoint/performance monitoring)

BP3~BP0(breakpoint):断点匹配检测,输出,高电平有效,BP3~BP0与调试寄存器DR3~DR0相对应,当调试寄存器编程设置为断点匹配测试时,若BP3~BP0输出为高电平,则表明断点匹配。

PM1、PM0(performance monitoring):性能监测,输出高电平有效,与BP1和BP0多路复用,由调试模式控制寄存器(debug mode control register)中的PB1和PB0位来确定它们是用于断点匹配BP1、BP0,还是性能监测PM1、PM0

14.执行跟踪

BT3~BT0(branch trace):分支跟踪信号,输出。在分支跟踪的特殊周期,BT3~BT0提供分支目标的线性地址的位2至位0,BT3代表特定的操作尺度。

IU(instruction U-pipeline):U流水线指令执行完成信号,输出。

IV(instruction V-pipeline):V流水线指令执行完成信号,输出。

IBT(instruction branch trace):指令分支跟踪信号,输出。

15.探针模式

(run/stop):异步边沿中断请求信号,输入,停止CPU正常的指令执行,进入空闲状态。引脚上由高电平到低电平的跳变,将引起中断,使CPU在下一条指令的边界停止执行程序。

PRDY(probe ready):中断响应信号信号,输出,高电平有效。PRDY输出高电平是对中断请求的响应,指示CPU停止正常的程序执行,或者进入允许用户检查并修改CPU的状态。

2.3.4 Pentium微处理器的存储器组织及输入/输出结构

1.存储器组织与I/O结构

Pentium微处理器由A31~A3构成32位地址总线,可寻址4GB(232)的存储器空间,地址范围为00000000H~FFFFFFFFH。32条地址总线中的低16位地址A15~A3,用作对64K I/O端口的寻址,地址范围为0000H~FFFFH。Pentium微处理器的存储器组织及I/O地址空间与80486微处理器的完全相同。

2.存储器寻址

Pentium微处理器的地址总线A31~A3与字节允许信号共同形成32位地址,寻址4GB的存储器空间。地址总线A31~A3与字节允许信号形成32位地址情况见表2.11。字节允许信号与64位数据总线对应情况见表2.12。

表2.11 A31~A3形成32位地址

表2.12 与数据总线对应情况表

由于Pentium微处理器数据总线为64位,因此,存储器和I/O地址空间都是以64位数据宽度来组织的,如图2.26所示。

图2.26 Pentium微处理器存储器组织