80286内部结构除了执行部件(EU)外,将8086/8088的BIU细分为3部分:地址部件(Adress Unit,AU)、总线部件(Bus Unit,BU)和指令部件(Instruction Unit,IU)。这4个部件并行工作,形成取指令、指令译码、执行指令重叠进行的流水线操作,提高了数据处理速度。
80286的地址总线、数据总线和控制总线是完全分开的,采用QFP(Quad Flat Package)68引脚封装。地址总线24条,A23~A0,可寻址16MB存储空间;独立的数据总线16条,D15~D0,一次可传输16或8位数据;控制总线16条,其中8位是输出的状态线,8位是输入的控制线。CPU的时钟频率提高到6MHz~25MHz。
80286内部寄存器结构与8086/8088基本相同,只是增加了一个16位的MSW(机器状态字),实际只定义了其中的低4位;另外标志寄存器(FLAGS)增加了两个标志位(共3位)。新增部分只用于保护模式。在80286中首次增添了存储器管理的保护工作模式,将段寄存器的内容(16位)当作指向段描述符表的指针,由所指向的段描述符(共6个字节)提供24位(3个字节)的段首地址(即段基址)。
80386是32位结构,内部有6个逻辑单元:总线接口部件(Bus Interface Unit,BIU)、指令预取部件(Instruction Prefetch Unit,IPU)、指令译码部件(Instruction Decord Unit,IDU)、执行部件(Execution Unit,EU)、分段部件(Segment Unit,SU)和分页部件(Paging Unit,PU)。这些单元按流水线结构并行实现取指令、指令译码、生成操作数地址、执行指令操作,实现4级并行流水线。
总线接口部件(BIU)提供微处理器与外部环境的接口,包括32位地址总线和32位数据总线,可寻址4GB(232B)的物理存储空间,最快能在2个时钟周期内从存储器读/写32位数据。80386总线结构具有动态改变数据和地址宽度的能力,既支持32位操作也支持16/8位操作。IPU预取指令,IDU对预取的指令进行译码,将译码的结果存放在已译码指令队列中,供执行部件直接调用执行。
执行部件包括8个既可用于数据操作也能用于地址计算的32位通用寄存器,每个32位寄存器的低半部分与8086/8088、80286微处理器的16位寄存器具有相同的特性,完全兼容。乘除硬件大大加快了乘除法运算速度,64位桶形移位器(barrel shifter)加速移位、循环和乘除法操作,可使典型的32位乘法在1ms内完成。
80386内部共有32个寄存器,分为7类。其中6个段寄存器CS、DS、ES、FS、GS和SS,以及局部描述符表寄存器(LDTR)和任务状态段(TR)为16位,其余为32位,而全局描述符表寄存器(GDTR)和中断描述符表寄存器(IDTR)扩展为48位。段寄存器的内容作为指向段描述符表的指针,描述符表中的每个描述符包括8个字节,其中4个字节提供32位的段基址。分段部件根据逻辑地址对内存分段寻址,可实现任务之间的隔离,也可实现指令和数据区的重新定位。分页部件对段进行分页,每页大小固定(一般为4KB),每段可包括若干页。分段分页为虚拟存储管理提供了有效方法。为了兼容8086/8088,80386还提供了虚拟8086模式,该模式是在保护模式下划分出一部分资源仿真8086/8088微处理器;可开辟多个这样的环境,按多任务方式运行。
80486的基础结构与80386差不多,在内部结构上进行了如下改进。
取指令、指令译码和执行部件扩展成5级流水线,最多可有5条指令同时被执行,增强了并行处理能力。80486微处理器具有如下几个特点。
· 增加了8KB的高速缓存(cache)。
· 浮点处理部件(FPU)被集成到微处理器芯片内部。
· 总线接口部件功能更强,增加了一些新的引脚。
· 80486标志寄存器扩充了一位,后期产品引入新的特性,如支持节能和其他系统管理功能。
Intel公司于1993年推出新一代名为Pentium的微处理器。Pentium微处理器的主要特点如下。
(1)超标量设计。超标量(superscalar)流水线设计是Pentium微处理器技术的核心。它由两条指令流水线构成,每条流水线都有自己的ALU、地址生成电路和数据cache接口,这种流水线结构允许Pentium在单个时钟周期内执行两条整数指令。
(2)独立的指令cache和数据cache。这将使指令预取和数据操作可同时进行,使Pentium的性能大大超过80486微处理器。
(3)重新设计浮点单元。Pentium的浮点单元在80486的基础上进行了彻底的改造和重新设计,使每个时钟周期能完成一个浮点操作。
(4)动态分支预测。在程序循环中,对循环条件的判断占用了大量的CPU时间。为此Pentium提供了一个称为分支目标缓冲器(Branch Target Buffer,BTB)的小cache来动态预测程序的分支。当一条指令导致程序分支时,BTB记忆这条指令和分支目标的地址,并用这些信息预测这条指令产生分支时的路径,预先从此处预取指令,保证流水线的指令预取操作不会空置。
Pentium微处理器除了具有实模式、保护模式和虚拟8086方式外,还增加了一种系统管理方式。系统管理方式主要是为电源管理、操作系统和正在运行的程序实行管理而设置的。
Pentium微处理器内部的通用寄存器仍是32位,但内部的数据通道为128位和256位,从而大大加快了内部数据传输。Pentium的标志寄存器(FLAGS)扩充为32位,有效定义了18位,保持对80x86的兼容。
标志寄存器低12位(实际定义了9位)与8086/8088一样。
80286新增两个标志位:IOPL和NT。IOPL(Input/Output Privilege,输入/输出特权级)为b12、b13,表示指令的I/O操作权限和级别:0(00)、1(01)、2(10)和3(11)共4级,其中0是最高特权级,一般为操作系统核心程序使用,3是最低级,通常为用户程序使用。NT(Nest,嵌套)为b14,NT=1表示当前执行的任务嵌套于某个任务中,当前任务执行完毕要返回到原来的任务中,NT=0表明没有任务嵌套,80386扩充两个标志位:RF和VM。RF(Resume Flage,恢复标志)为b16,用于断点调试和单步执行。断点处理前,在两条指令之间设置该位,当RF=1时,不管调试中发生什么故障,立即越过故障执行下条指令;成功地执行完一条指令(无故障)后RF=0。VM(Virtual Mode,虚拟模式)为b17,在保护方式下,若当前特权级=0,则IRET指令使VM=1,在任何特权级下由任务转换设置使VM=1。VM不受POPF指令影响,PUSH指令总使该位清零。
80486扩充一位AC,AC(Alignment Check,对齐检查)为b18,在用户方式下(特权级为3),若AC=1,则对存储器访问进行定位对齐检查,未从偶地址寻址存储器就产生定位故障,AC=0不进行定位检查。
Pentium扩充了3个标志位:VIF、VIP和ID。b19为VIF(Virtual Interrupt,虚拟中断)位。当允许虚拟86方式扩充(CR4.VME=1)或保护方式虚拟中断(CR4.PVI=1)时该位为1,否则为0。VIF标志是所用中断标志的虚拟映像。b20为VIP(Virtual Interrupt Pendin9,虚拟中断挂起)位指示虚拟中断是否挂起。当禁止虚拟86方式扩充(CR4.VME=0)或禁止保护方式虚拟中断(CR4.PVI=0)时,该位强制为0。b21为ID(Identification,标识)位。该位为1表示程序可以设置和清除ID位,即微处理器ID指令(CPUID)存在。
复位后,标志寄存器(FLAGS)的内容为00000002H。
Pentium芯片内有4个32位控制寄存器CR0、CR2、CR3和CR4。在CR0中定义了11个控制位和状态位(80386定义了6位,80286则是16位的机器状态字,只定义了其中的4位)。CR2是页故障线性地址寄存器,它保存页故障异常中断之前所访问的最后一个页面的32位线性地址。CR3是页目录表基址寄存器。CR4是Pentium新设的控制寄存器,定义了其中的6位,允许对80486结构进行某些扩充。
此外还有32位的调试寄存器DR和测试寄存器TR。
Pentium外部地址总线32位,可寻址4GB存储空间;外部数据总线64位,支持突发数据传输。
Pentium微处理器片内除集成了高性能的浮点处理器外,突出的是配置了两条相对独立的指令并行执行流水线,以及分设的指令cache和数据cache。两条流水线分别称为u.流水线和v.流水线。在u.流水线中可以执行所有的整数指令和浮点指令,在v.流水线中可以执行整数指令和一条异常的Fxch指令。每条流水线都有自己的独立地址生成逻辑、算术逻辑运算部件和数据高速缓存接口。整数流水线有5个流水级(与80486相同):IP(Instruction Prefetch,指令预取)、ID(Instruction Decode,指令译码)、AG(Address Generate,地址生成)、IE(Instruction Execute,指令执行)和WB(Write Back,回写);浮点流水线是超级流水线,由8个独立的流水级组成(前4个流水级与整数流水线一样,详见后述)。微处理器通过这两条流水线在每个时钟周期内执行两条整数指令,或一条整数指令(在v中)和一条浮点指令(在u中),或两条浮点指令(其中必有一条Fxch指令,在v.流水线中执行)。
与80486相比,Pentium片内一级高速缓冲存储器L1 cache分成独立的8KB指令cache和8KB数据cache,可使取指和读/写数据并行操作。片内还引入分支预测表,以提高循环结构的执行性能。
在P55C系列的Pentium微处理器中还集成了多媒体处理部件MMX,增加了57条支持MMX的指令,使微处理器对多媒体与通信的应用具有独特的优势。后期的Pentium微处理器还增加了APIC(Advanced Programmable Interrupt Controller,高级可编程中断控制器)部件,支持计算机中多处理器的运用。
Pentium采用PGA封装,有237个引脚。对外部总线操作的控制信号主要有M/IO、W/R、D/C等。
AMD公司的AMD-K5也是有代表性的第五代微处理器。
Intel公司于1995年、1997年、1999年和2000年相继推出Pentium Pro、Pentium Ⅱ、Pentium III和Pentium 4微处理器。
Pentium Pro/II/III的内部结构主要由1个存储子系统和4个处理部件组成。
· 存储器子系统(Memory Subsystem):主要负责取指令和存取数据,由系统总线、第二级高速缓存L2 cache、总线接I=1部件、第一级指令高速缓存L1 cache、第一级数据高速缓存L1 cache、存储器重新排序缓冲器等组成。
· 取指/译码部件(The Fetch/Decode Unit):主要负责取指令和指令译码,由取指部件、分支目标缓冲器、指令译码器、微操作码指令序列器和换名寄存器等组成。
· 指令缓冲池(Instruction Poul/Reorder Buffer):负责对微操作码流按内容寻址来重新排序,以便分配/执行部件的顺序执行,由重新排序缓冲器构成。
· 分配/执行部件(Dispatch/Execute Unit):负责指令的超序执行,由驻留站、两个整数执行部件、两个浮点部件和地址形成部件组成。
· 退回部件(Retirement Unit):按原始程序顺序退回已完成的微操作码流,负责执行结果的回写操作,由退回部件和退回寄存器文件组组成。
Pentium Pro/II/III对取指令、执行指令操作进一步细化,超大规模的3路超级流水线式结构,顺序处理的前端部件、超序处理的内核和顺序处理的退回部件实现了超前预测、超序执行,进一步提高了操作的并行度和连续性,使处理器在每个CPU时钟可执行3条指令,流水操作达到14级。第六代微处理器除了64位外部数据线外,地址线扩展为36位,可寻址64GB的地址空间。Pentium Pro采用PGA封装,387个引脚;Pentium II采用独立接插式的Slotl封装,242个引脚:Pentium III先采用Slotl后采用PGA封装,370个引脚,对应的插槽为Socket 370。
AMD的K6系列微处理器也是性能优良的同类微处理器。
2000年Intel发布Pentium 4微处理器,内核代号Willamette。该处理器放弃了P6架构,而采用了全新的NetBurst微架构,因而没有沿用罗马数字序号Ⅳ而命名为Pentium 4。Pentium 4使用0.18mm铝连线工艺、6层CMOS,片内晶体管数4200万个,采用423pin FC-PGA(Flip Chip Pin Grid Array)封装(对应Socket 423插槽)。片内一级高速缓存L1 cache为8KB数据+12KB执行跟踪缓存,而二级高速缓存为256KB全速On-Die的L2 cache。取指、译码、执行进一步细化,并行度更高,可达20级超级流水线;算术逻辑单元采用REE(Rapid Execution Engine,快速执行引擎),以双倍速度来大幅提高P4的整型数运算能力。新增的144条SSE2指令(第二代单指令多数据流扩展SIMD)可进行2组64位整数/双精度64位SIMD操作,允许在浮点和整数之间进行SIMD指令转换,而且能把整数封包在MMX寄存器之内,从而解决浮点单元的瓶颈问题。
系统总线采用传统的100MHz的FSB(前端系统总线),通过类似QDR(4倍数据速率)技术,以物理100MHz系统总线速率来实现400MHz总线带宽(即3.2bps的数据传输速率)的效果。为保持系统带宽平衡,Pentium 4采用了两条独立的PC800 RDRAM通道,确保系统内存的数据传输速率同样达到3.2Gbps。
与Intel的Willamette同档次的微处理器有AMD的新Athlon XP。
2002年初问世的Northwood Pentium 4微处理器采用了0.13mm铜互连工艺,集成了512KB全速二级缓存,使微处理器的核心工作电压从1.75V降低到1.5V,在2MHz主频下的功耗从71W降低到不足50W,大大提高了处理器芯片的性能。
2002年11月14日,Intel向全球发布了第一款支持超线程技术的Northwood Pentium 4微处理器(主频3.06GHz),使CPU整体性能越上一个新台阶。
Pentium 4主要由总线接口部件、整数组件、浮点组件、指令组件、分支目标缓冲器组件、cache组件和队列组件等构成。
Pentium 4采用NetBurst微架构设计,在不改造现有工艺的前提下提升了处理器的速度。处理器内集成了4KB的BTB分支目标缓冲器(Pentium III的BTB只有0.5KB大小),用来存储分支预测运算单元前几次所做的分支预测的跳转操作结果,片内还另外加入了“高级分支预测运算单元”,所有这些使分支预测的准确性达到93%~94%,超过Pentium III分支预测能力33%。Pentium 4首次集成了12KB的trace cache(跟踪缓存),用来存储片内解码单元送出来的微操作指令(可多达1200条),解决了预测错误后的微操作指令重新获取的问题。
3.06GHz以上的Pentium 4首次引入超线程(Hyper Threading,HT)技术,使一个物理处理器可以同时执行两个独立的代码流。
2002年Intel推出第一款64位处理器Itanium(安腾),这是Intel与HP共同开发的全新的IA-64架构,不兼容原x86-32体系。
IA-64架构计算机采用大量寄存器和多个执行单元的组织结构,如0.18μm工艺生产的Itanium 2(安腾2)片内集成了6个整数单元、4个指令存取单元、两个浮点/SIMD单元和3个分支处理单元,以及328个寄存器(其中包括64位整数寄存器128个、82位浮点寄存器128个)。
Itanium采用LIW(长指令字)将几条指令捆绑成一条128位长的指令束来加快处理速度,Itanium浮点运算能力最高达64亿次/秒,处理器引入了EPIC(显式并行)设计理念,使每个指令周期可执行约20条指令,是RISC/CISC指令集的4~5倍。
IA-64架构在内存寻址能力上提高了几个数量级,64位地址线可寻址近180亿GB物理内存,能充分满足大型数据库、互联网ERP(Enterprise Resouce Planning)、新型LOB(Line Of Business)应用程序的需要并提高它们的性能。
Itanium处理器设置了三级高速缓存(cache),一、二级装载于内核中,三级缓存类似Pentium 4的二级缓存,可在片外或整合于片内,如Itanium 2片内集成了L1、L2、L3三级,容量分别为32KB、256KB、3MB;直接映射和组/全相联映射的有机结合大大提高了缓存的效率。
为保证与x86兼容,64位Itanium处理器内整合了IA-32处理模块,用来执行IA-32二进制代码,并进行动态程序优化,实现无缝链接。
Intel在2003年推出0.13um制造的Madison(工作频率1.2GHz~1.6GHz),2004年推出0.091um制造的Montecito,2005年前后推出0.065um制造的、片内集成两个处理单元的Chivano。