第二章80x86微处理器二一2.232位微处理器内部结构1.有关技术名词简介2.Pentium内部结构3.Pentium微处理器结构特点4.32位微处理器的编程结构关于Pentium(奔腾)的命名按照80X86的逻辑,80486之后的下一个CPU名字应是80586,但是Intel公司决定不再采用数字命名,原因是为了保护商标版权,所以Intel为了获得新一代CPU的商标专利,将其取名为Pentium,它来源于希腊字“Pente”,其意思为5,现在人们习惯上也将Pentium叫做586,或称作奔腾586,或称P5(Pentium未正式命名前的称呼)。三一32位机为了支持多任务操作及提高处理速度,普遍采用了一些现代先进计算机硬、软件技术,如流水线技术、虚拟存储器技术、高速缓冲存储器技术、内存管理技术及分支预测技术等。1.有关技术名词简介•CISC和RISCCISC是复杂指令集计算机(ComplexInstructionSetComputer)的英文缩略语。计算机结构一直是朝着逐渐复杂的方向发展、如更大的指令集、更多的寻址方式、更多的专用寄存器和更强大的指令计算功能,等等。后来,将具备这种趋势的机器称为复杂指令集计算机CISC。然而,当CISC发展到一定程度后,一些过于复杂和深奥的指令很难也很少使用。把这样的指令加入到指令集反而使控制器的设计变得复杂,并占用了CPU芯片面积的相当大的部分。因此,从处理器的执行效率和开发成本两个方面考虑,需对复杂指令集结构的处理器予以重新评价。RISC--精简指令集计算机(ReducedInstructionSetComputer)1980年Patterson和Ditzel首先提出了精简指令集计算机RISC这个设想,并由Patterson和Sequin领导的一个小组于1981年在加州大学研制出第一台这样的机器----RISC机。RISC出现在80年代,它的含义是简化指令系统的计算机,它舍弃不常用的复杂指令,并充分改进频繁使用的基本指令的实际执行效率,把微程序控制器改为硬连线控制器,加强寄存器-寄存器操作指令,从而简化了计算机结构,提高了性能。后来,RISC技术强调优化流水线技术,使在一个机器周期内完成一个基本指令的执行。当前,Intel公司的CISC产品80X86仍占有极大的优势,其原因是在80X86/MS-DOS平台上开发的应用软件有上亿个,远比RISC机器的软件丰富。市场的占有率高。认为CISC会自行消亡那就大错特错了。竞争的结果是:最近的RISC设计,已不再是纯RISC结构;而最近的CISC设计,也融进不少RISC特征•计算机流水线(ComputerPipeline)在冯·诺依曼计算机体系结构中,一条指令的执行全过程总是分成几步完成。首先,处理器从cache或主存取来指令,接着译码此指令确定它的操作类型;若操作需要存储器操作数的话,要确定操作数地址并负责由cache或主存取来操作数;然后完成所需的操作;最后,将结果写回寄存器或主存的指定位置中。一条指令流水线可由如下5段组成:S1,取指令(IF):由cache或主存取指令;S2,指令译码(ID):证实指令将要完成的操作;S3,取操作数(OF):确定存储器操作地址,取得所需存储器操作数和寄存器操作数;S4,执行(EX):对操作数完成指定操作,目标为寄存器的指令在S4完成操作。S5,写回(WB):修改目标操作数,主要指目标为存储器的操作数。进入流水线的指令流,由于后一指令的第I功能步于前一指令的第I+1功能步同时进行,从而一串指令总的完成时间大为缩短。这一情况示图中所示4条指令只用了8个时钟就完成了,若是非流水线的顺序处理则需要20个时间周期。加速比2.5。所谓超流水线结构是把一个时钟周期再细分为多个子周期,每个子周期发出一条指令;而超标量结构是在每个时钟周期内发射多条指令,这就要求在微处理器片内集成两条或两条以上的流水线,如Pentium和PentiumPro就采用这种超标量结构设计技术。若把超标量与超流水线结合起来,就称为超标量超流水线结构。•虚拟存储器(VirtualMemory)虚拟存储器允许用户运行一个比主存储器容量大得多的可随机访问的存储空间。通常在存储系统中有一个速度较快、容量比较小的内部主存储器,还有一个速度较慢、容量很大的外存储器,通过操作系统和硬件的配合,使二者构成一个有机的整体。对用户来说,好像有一个容量比实际主存大得多的主存可供使用,但它并不是真正的物理上的主存,因此称为虚拟存储器。虚拟存储器的地址称为虚地址或逻辑地址,与之对应的称为实地址或物理地址。虚地址是程序员所看到的地址,是在程序中可使用的地址;实地址是CPU可访问的地址。在使用虚拟存储器的系统中,CPU实际访问的仍然是主存储器,通常程序放在磁盘等外存中,借助于存储管理部件将其映射到主存而被CPU访问。在80386/80486等微处理器中,虚拟存储器容量可高达246=64TB,主存容量为232=4GB。段寄存器的15~2位偏移量4532310逻辑地址•高速缓冲存储器(Cache)位于CPU与主存储器之间,对程序员透明的一种高速小容量存储器。所谓透明是指不必程序员自己去加以操作和控制。高速缓冲存储器简称高速缓存,它是用最快速的SRAM构成。在配备有高速缓存的微型机中,每次访问存储器时,都先访问高速缓存,若访问的内容在高速缓存中,访问到此为止;否则,再访问主存储器,并把有关内容及相关数据块取入高速缓存。这样,如果大部分针对高速缓存的访问都能成功,则在主存储器容量保持不变的情况下,访存速度可接近高速缓存的存取速度,这无疑可提高微机的运行速度。高速缓存的工作机制,是基于一种所谓局部性原则,即指程序在访问代码和数据时,如果某位置已被访问,该位置在短时间内可能还要再被访问;如果某位置已被访问,该位置的邻近位置可能还要再被访问。这是因程序中相关的数据块大都按顺序存放,且一般都存在相邻的存储单元中。访问存储器时,若能在高速缓存中找到所需内容,称为“命中”,否则就是“不命中”。不命中的原因与高速缓存容量不足等有关。为了弥补片上高速缓存的不足,以及高速缓存与主存间的速度差距,通常采用多级高速缓存的方案。即在片上高速缓存与主存之间增加1级或多级速度稍慢但容量较大的高速缓存。2.Pentium内部结构奔腾(Pentium)处理器是1993年由美国的Intel公司推出。Pentium处理器是复杂指令集计算机(CISC)几十年来设计、努力的结晶,它采用了过去只有大型机和超级计算机才会采用的设计原则,是CISC体系结构的优秀典范。预取缓冲存储器指令译码256控制ROM控制单元地址生成(U流水线)地址生成(U流水线)整数寄存器组ALU(U流水线)ALU(U流水线)筒型移位器8KB数据Cache浮点部件控制寄存器组加法器除法器乘法器80808KB代码Cache分支目标缓冲器预取地址指令指针转移校验和目标地址分页部件323232323232总线部件6464位读总线64位数据总线32位地址总线控制TLBTLB32位地址总线BIUCUFPUEUBTBCBCBDPBTBTLB指令Cache8KBAPIC预取缓冲器指令译码器控制部件地址生成地址产生(U流水线)(V流水线)整数寄存器ALUALU(U流水线)(V流水线)数据Cache8KBTLB浮点单元控制寄存器组+×÷总线单元64位数据线32位地址线323212864位DB32位ABCBDBCBBV_流水连接线U流水连接线图Pentium处理器的内部结构示意图①总线接口单元BIU总线接口单元BIU(BusInterfaceUnit)是实现微处理器与其他部件之间的数据信息、地址信息以及控制命令信号的传送。由图可见,Pentium处理器的外部数据总线宽度为64位,它与存储器之间的数据传输率可达528MB/s。由于Pentium处理器内部的算术逻辑单元ALU和寄存器的宽度仍是32位的,所以它仍属于32位微处理器。Pentium处理器的地址总线位数为32位,即它的直接寻址物理地址空间为232=4GB。另外,BIU还有地址总线驱动、数据总线驱动、总线周期控制及总线仲裁等多项功能。②指令Cache与数据CacheCache(高速缓存)技术是现代微处理器及微型计算机设计中普遍采用的一项重要技术。它使CPU在较低速的存储器件条件下获得较高速的存储器访问时间,并提高系统的性能价格比。在Pentium之前的80386设计中,曾在处理器外部设置一个容量较小但速度较快的“片外Cache”。80486则是在处理器内部设置了一个8KB的“片内Cache”,统一作为指令和数据共用的高速缓存。Pentium处理器中的Cache设计与80386和80486有很大的不同,它采用哈佛结构。把Cache分为“指令Cache”和“数据Cache”分别设置,一个为8KB的数据Cache(只存储指令所需的数据),一个为8KB的指令Cache(只存储指令)。都是物理地址(实地址)cache。每个cache都有一个转换后援缓冲器TLB,负责将TLB命中的线性地址转换成32位物理地址.③超标量流水线结构两条指令流水线分别称之为U流水线和V流水线,U,V两个字母没有别的含义,只是它们最初是未被执行部件所使用的两个连续字母。两个预取缓冲器,每个都为32字节,负责由指令cache或主存取指令并缓存。指令译码器除完成译码指令外,还要完成指令配对检查。如果遇到转移指令,要在译码之后将转移指令地址送至转移目标缓冲器BTB(BranchTargetBuffer)进行查找。控制ROM包含一组用于控制指令执行时操作顺序的微指令。以上三个部件被两条流水线共用。两个地址生成器用于产生(或计算)存储器操作数地址,各种工作模式下的逻辑地址最终要转换成物理地址来访问数据Cache,并有转换后援缓冲器TLB来加速这种地址转换过程。寄存器组有8个32位整数寄存器,用于地址计算。保存ALU的源操作数和目的操作数。两个32位的ALU都具有一个时钟周期的等待时间,但有少数例外。即只有称之为简单指令而且没有寄存器到存储器或存储器到寄存器操作的逻运算指令才能在一个时钟周期执行完。Pentium通过U和V流水线能每时钟周期执行两条整数指令。U和V流水线都由5段组成,前两段是U和V共享的.“指令预取”:由指令cache取指令,指令长度是可变动的,存入一个预取缓冲器。“指令译码”:确认它的操作码和寻址方式等有关信息。此段要完成指令配对检查和转移指令预测。“地址生成”:计算并产生存储器操作数的地址,如果TLB命中的话只需一个时钟周期,否则不只一个时钟周期。当然,不是所有指令都有存储器操作数,但也必须流经这个段。“指令执行”:此段主要是在ALU。桶形移位器或其它功能部件中完成指定的计算。“回写”:以计算的结果修改目标寄存器和标志寄存器。U,V两条流水线不是等价的,也不能交换使用。U流水线能执行所有的整数和浮点数指令,而V流水线只能执行简单的整数指令和像浮点数交换这样的少数浮点数指令。另外,还可以将流水线的若干流水级进一步细分为更多的阶段(流水小级),并通过一定的流水线调度和控制,使每个细分后的“流水小级”可以与其他指令的不同的“流水小级”并行执行,从而进一步提高微处理器的性能。这被称为“超级流水线”技术超标量结构是通过重复设置多个“取指”部件,设置多个“译码”、“地址生成”、“执行”和“写结果”部件,并让这些功能部件同时工作来加快程序的执行,实际上是以增加硬件资源为代价来换取处理器性能的;而超级流水线处理器则不同,它只需增加少量硬件,是通过各部分硬件的充分重叠工作来提高处理器性能的。为了进一步提高处理器执行指令的并行度,可以把超标量技术与超流水线技术结合在一起,这就是“超标量超流水线”处理器。Intel的P6结构(PentiumⅡ/Ⅲ处理器)就是采用这种技术[超标度为3(3条流水线);流水线的级数为12级。]④分支目标缓冲器BTB由于计算机指令中有转移指令,如跳转(JMP)指令、调用(CALL)指令和返回(RET