Ⅰ 在电脑中,CPU的作用是什么
一:CPU主频: 这是一个最受新手关注的指标,指的就是CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某款CPU是多少兆赫兹的,而这个多少兆赫兹就是“CPU的主频”。在学校经常听见一些人问,XXX网吧的CPU2.66G!XXX网吧的才2G,有人用2.66G的赛扬与2.0G-2.66G的P4比,这是无知的表现,和他们争是无意义的:)。主频虽与CPU速度有关系,但确对不是绝对的正比关系,因为CPU的运算速度还要看CPU流水线(流水线下面介绍)的各方面性能指标(缓存、指令集,CPU位数等)。因此主频不代表CPU的整体性能,但提高主频对于提高CPU运算速度却是至关重要的。主频的计算公式为:主频=外频*倍频。 二:外频: 外频是CPU乃至整个计算机系统的基准频率,单位是MHz(兆赫兹)。在早期的电脑中,内存与主板之间的同步运行的速度等于外频,在这种方式下,可以理解为CPU外频直接与内存相连通,实现两者间的同步运行状态。对于目前的计算机系统来说,两者完全可以不相同,但是外频的意义仍然存在,计算机系统中大多数的频率都是在外频的基础上,乘以一定的倍数来实现,这个倍数可以是大于1的,也可以是小于1的。 三:倍频咯:倍频 CPU的倍频,全称是倍频系数。CPU的核心工作频率与外频之间存在着一个比值关系,这个比值就是倍频系数,简称倍频。理论上倍频是从1.5一直到无限的,但需要注意的是,倍频是以以0.5为一个间隔单位。外频与倍频相乘就是主频,所以其中任何一项提高都可以使CPU的主频上升。 原先并没有倍频概念,CPU的主频和系统总线的速度是一样的,但CPU的速度越来越快,倍频技术也就应允而生。它可使系统总线工作在相对较低的频率上,而CPU速度可以通过倍频来无限提升。那么CPU主频的计算方式变为:主频 === 外频 x 倍频。也就是倍频是指CPU和系统总线之间相差的倍数,当外频不变时,提高倍频,CPU主频也就越高。 主频因素说完了,现在让我们来看看别的影响CPU速度的“东西”请允许我称他为东西,说功能现行 四: 流水线: 这东西学地理的应该懂,高一下册地理书有说,他相当于一个公程的一部分一部分,我自己打个比喻!比如:就拿跑步和走路来说,就分为2级流水线,即左脚,再右脚,再一直循环下去,一级的话就可以说成是双脚一起跳,这样效率当然低,对吧。。。。。。这就是生活的流水线,当你左脚走出去之后,如果发现前面有一堆大便,只好重来了(设一次一定走2步)这就是流水线级别上去之后跟随的错误一出来CPU就要重新计算。。。。。也许我说得不太明白,下面引用别人的话来说,在制造CPU的过程中,除了硬件设计之外,还有逻辑设计,流水线设计就属于逻辑设计范畴,举个例子来讲,比如说一家汽车工厂,在生产汽车的过程中采用了四个大组分别来完成四个生产步骤:1组生产汽车底盘,二组给底盘上装引擎,三组给汽车装外壳及轮胎,四组做喷漆,装玻璃及其他,这就叫做一条四级的流水线.(现在的大型汽车生产厂也的确是按照类似流水线来提高生产效率的). 假设每个步骤需要1小时,那么如果我们让1大组在做完1辆车的底盘后马上开始生产下一辆的底盘,二大组在做完一辆车的引擎后立刻投入下一辆车引擎的组装,以次类推三,四组的工作也如此,这样一来,每一小时就会有一辆奔驰或宝马被生产出来,这就相当于是CPU的指令排序执行. 但如果我们还想提升工厂的生产效率,又该怎么办呢?那么我们就可以将上述的每个大组在分成2个小组,形成一条8级的生产流水线,这样就形成每个小组(注意是"小组")只需要半小时就可以完成自己的工作,那么相应的每半小时就会有一辆汽车走下生产线,这样就提高了效率(这里不太好理解,请大家仔细想想就会明白). 根据这个道理,CPU的流水线也就不难理解了,只不过是把生产汽车变成了执行程序指令而已,原理上是相通的。 那么这里可以想到,如果再把流水线加长,是不是效率还可以提高呢? 当人们把这个想法运用到CPU设计中时才发现,由于采用流水线来安排指令,所以非常不灵活,一旦某一级的指令执行出错的话,整条流水线就会停止下来,再一极一级地去找出错误,然后把整条流水线清空,重新载入指令,这样一来,会浪费很多时间,执行效率反而十分低下,为了解决这个问题,科学家们又采用了各种预测技术来提高指令执行的正确率,希望在保持长流水线的同时尽量避免发生清空流水线的悲剧,这就是经常看到的Intel的广告"该处理器采用了先进的分支预测技术....",当你明白了上面我所讲的后,你就知道了吹得那么玄乎,其实也就不过如此. 还有不得不说的就是:长流水线会让CPU轻易达到很高的运行频率,但在这2G,3G的频率中又有多少是真正有效的工作频率呢? 而且级数越多,所累计出来的延迟越长,因为工作小组在交接工作时是会产生信号延迟的,虽然每个延迟很短,但20甚至30级的流水线所累计出来的延迟是不可忽视的,这样就形成了一个很好笑的局面,流水线技术为处理器提升了频率,但又因为自身的缺陷产生了很大的效率空白,将优势抵消掉,高频率的CPU还会带来高功耗和高发热量,所以说流水线并非越长越好 近年来Intel的奔四处理器经过了三个阶段的发展,最早的奔四采用的是(威廉)核心,该核心只有13级的流水线,普遍频率未上2G,速度一般,第二代的奔四采用的(northwoog北木)核心,这个核心有20级流水线,由于流水线级数比较合适,所以大副提升了奔四的速度,但又未影响执行效率,当时的奔四2.4A是一款经典产品,将AMD的速龙XP系列一直压制住,Intel因此尝到了甜头,很快就推出了Prescott(波塞冬)核心,这个长达31级流水线的新核心将奔四带入了近3G的速度,这个数字是AMD可望而不可及的,但人们很快发现新奔四的实际运行效率还不如老核心奔四,然尔频率却那么高,发热和功耗那么大,Intel凭借这块新核心"光荣"地获得了"高频低能"的美名,这个时候AMD适时推出了"速龙64"系列,全新的架构,20级的流水线,不高的发热与功耗,最重要的是低频高效,一举击败了新奔四,获得了很高的评价,Intel也吞下了自己造的苦果:被迫停止了4G奔四的开发,失去了不少的市场份额,连总裁贝瑞特也在IDF05上给大众下跪以求原谅. CPU缓存: CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。 缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。 正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。 最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。英特尔公司在推出Pentium 4处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为12KμOps,表示能存储12K条微指令。 随着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。现在再用集成在CPU内部与否来定义一、二级缓存,已不确切。而且随着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传输速度。 二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二级缓存上有差异,由此可见二级缓存对于CPU的重要性。 CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。目前的较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。 为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。 CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、256KB、512KB、1MB、2MB等。一级缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键。二级缓存容量的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部晶体管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高 前端总线: 前端总线是处理器与主板北桥芯片或内存控制集线器之间的数据通道,其频率高低直接影响CPU访问内存的速度;BIOS可看作是一个记忆电脑相关设定的软件,可以通过它调整相关设定。BIOS存储于板卡上一块芯片中,这块芯片的名字叫COMS RAM。但就像ATA与IDE一样,大多人都将它们混为一谈。 因为主板直接影响到整个系统的性能、稳定、功能与扩展性,其重要性不言而喻。主板的选购看似简单,其实要注意的东西很多。选购时当留意产品的芯片组、做工用料、功能接口甚至使用简便性,这就要求对主板具备透彻的认识,才能选择到满意的产品。 总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说,就是多个部件间的公共连线,用于在各个部件之间传输信息。人们常常以MHz表示的速度来描述总线频率。总线的种类很多,前端总线的英文名字是Front Side Bus,通常用FSB表示,是将CPU连接到北桥芯片的总线。计算机的前端总线频率是由CPU和北桥芯片共同决定的。 CPU就是通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片和内存、显卡交换数据。前端总线是CPU和外界交换数据的最主要通道,因此前端总线的数据传输能力对计算机整体性能作用很大,如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据位宽)÷8。目前PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz几种,前端总线频率越大,代表着CPU与北桥芯片之间的数据传输能力越大,更能充分发挥出CPU的功能。现在的CPU技术发展很快,运算速度提高很快,而足够大的前端总线可以保障有足够的数据供给给CPU,较低的前端总线将无法供给足够的数据给CPU,这样就限制了CPU性能得发挥,成为系统瓶颈。 CPU和北桥芯片间总线的速度,更实质性的表示了CPU和外界数据传输的速度。而外频的概念是建立在数字脉冲信号震荡速度基础之上的,也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一万万次,它更多的影响了PIC及其他总线的频率。之所以前端总线与外频这两个概念容易混淆,主要的原因是在以前的很长一段时间里(主要是在Pentium 4出现之前和刚出现Pentium 4时),前端总线频率与外频是相同的,因此往往直接称前端总线为外频,最终造成这样的误会。随着计算机技术的发展,人们发现前端总线频率需要高于外频,因此采用了QDR(Quad Date Rate)技术,或者其他类似的技术实现这个目前。这些技术的原理类似于AGP的2X或者4X,它们使得前端总线的频率成为外频的2倍、4倍甚至更高,从此之后前端总线和外频的区别才开始被人们重视起来。 CPU工艺: 指在硅材料上生产CPU时内部各元器材的连接线宽度,一般用微米表示。微米值越小制作工艺越先进,CPU可以达到的频率越高,集成的晶体管就可以更多。目前Intel的P4和AMD的XP都已经达到了0.13微米的制造工艺,明年将达到0.09微米的制作工艺。 从上面我们了解了CPU的逻辑结构以及一些基本技术参数,本文将继续全面的了解影响CPU性能的有关技术参数。 深入浅出CPU种类介绍<一> 对于一台电脑系统,CPU的作用就象心脏对我们一样重要。我们选购电脑时总要首先问,是486还是586,是100还是300,是MMX还是3D-NOW!,这些指的就全是CPU的指标,CPU在整个微机系统的核心作用,足以作为划分CPU档次的标准,这使它几乎成为各种档次微机的代名词。我们可以说,CPU的性能能大致反映出我们的微机系统的性能,这对我们的选择的重要性是显而易见的。 1、什么是CPU? CPU是英语"Central Processing Unit"的缩写,其中文的直译为"中央处理单元",CPU的主要功能是进行运算和逻辑运算,其物理结果包括逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时保存。在这里,并不需要弄清楚CPU的复杂原理,我们只是从性能参数的挑选方面对其进行一些必要的认识,这对认识和采购、配置计算机是大有帮助的。 2、CPU主要的性能指标: 主频:即CPU内部核心工作的时钟频率,单位一般是兆赫兹(MHz)。这是我们最关心的一个参数,我们通常所说的233、 300、450等就是指它。对于同种类的CPU,主频越高,CPU的速度就越快,整机的性能就越高。由于内部的结构不同,不同种的CPU之间不能直接通过主频来比较,而且高主频的CPU的实际表现性能,还与外频、缓存等大小有关,带有特殊指令的CPU,则相对程度地依赖软件的优化程度。 外频和倍频数:外频即CPU的外部时钟频率。CPU的主频与外频的关系是:CPU主频 = 外频×倍频数,外频是由电脑主板提供的,486的外频一般是33MHz,40MHz,Pentium主板的外频一般是66MHz,也有主板支持75各83MHz。而目前Intel公司最新的芯片组440BX可以使用100MHz甚至更高的时钟频率。另外VIA公司的MVP3、MVP4,APPLO PRO 等一些非 Intel的芯片组也开始支持100MHz的外频,一些主板由于技术精良,工艺先进,可以超频1/3以上稳定使用,成为超频爱好者的首选。Intel公司的下一代主板芯片将支持133MHz的外频,AMD的K7甚至将使用200MHz的外频。 深入浅出CPU种类介绍<二> 内部缓存(L1 Cache):采用速度极快的SRAM制作,与 CPU共同封装于芯片内部的高速缓存,用于暂时存储CPU运算时的最近的部分指令和数据,存取速度与CPU主频相同 (一般称为全速) , L1缓存的容量一般以KB为单位。L1缓存全速工作,其容量越大,使用频率最高的数据和结果就越容易尽快进入CPU进行运算,CPU工作时与存取速度较慢的L2缓存和内存间交换数据的次数越少,相对电脑的运算速度可以提高。486就因为集成了内部Cache,速度比386快了许多。最早的486内部一般有1K~8K的L1 Cache,现在的Pentium II的L1 Cache一般有32K,而Cyrix和AMD的芯片内部有64K甚至更多。 二级缓存(L2 Cache):集成于CPU外部的高速缓存,L2 Cache 的一般容量是128K~2M。容量越大,系统的综合性能越高。一般的 L2 Cache 运行于系统外频或 CPU 主频的一半,后来 Pentium Pro处理器采用的L2和CPU运行在相同频率下,由于芯片成品率太低,成本昂贵,所以后来Pentium II的L2 Cache运行在相当于CPU频率一半下的,但容量增加为512K。现在的至强处理器又采用了全速的L2 Cache,容量增大至512K到2M之间,以求性能获得提高。没有Cache的赛扬处理器,性能下降不少。
Ⅱ 有谁知道cache的发展过程
纵观PC系统和CPU二十年的发展,随着半导体加工工艺水平的不断提高,CPU和存储器的性能都有了很大的提高。
CPU频率的提高,必然要求系统中存储器的存取速度要提高,还要求其容量要增大。主存储器DRAM容量的提高还是比较快的,但是DRAM读取时间的提高却很慢。从而在速度上与CPU主频的提高产生了极不相配的情况,这样会影响整个系统的性能。二十年来,CPU设计的问题之一就是解决高速CPU和低速DRAM之间的平衡或匹配问题,以求系统性能的整体提高。
在它们之间加入高速缓冲存储器Cache,就是这个问题的解决方案之一。
Cache随CPU的发展而不断改变,可以概括为:从无到有,由小到大,先外后内,纵深配备,软硬兼施。初期的CPU没有Cache,在80386时期出现外部Cache;80486时期开始有内部仅8kB的Cache。Cache的分级也由L1和L2级,发展到L0和L3级的纵深配备;Cache的大小由当初的8kB,直到Merced的1~2MB。为了更好地利用Cache,还专门配有缓存控制指令。
本文回顾了在过去的二十年中,Cache技术的发展历程,并对PC其它设备使用Cache技术作了简单陈述。 PC初期无需Cache在八十年代初,由于CPU主频很低,DRAM的存取时间甚至快于CPU存取时间,因此无需Cache。例如,当时PC机采用8088CPU,系统主频为4.77MHz,一个基本总线周期为4拍,即840ns。此时64kB的DRAM存取周期200ns,造成DRAM等待CPU的执行的局面,无需Cache。
在PC/AT机采用80286CPU后,系统主频增加到10MHz,1个基本总线周期为2拍,即200ns。此时必须用读取时间为100ns的DRAM。在采用25MHz的80386DX时,一个基本总线周期为2拍,即80ns,当时已没有速度相匹配的DRAM可用。解决方案有2种:一种是在基本总线周期中插入等待,降低CPU的处理能力;另一种是采用内部和外部Cache,使用SRAM芯片以提高存储器的读取速度。80386没有L1 Cache80386初期主频为20MHz。Intel公司十分重视80386的设计制造,把它定位于“新一代个人电脑架构”,想把一些新技术设计在芯片中。但由于当时工艺所限,内置高速缓存的芯片体积过大,造成成本上升,同时工期有限,几经权衡,最后决定在80386芯片不设置高速缓冲存储器,可以生产另外的Cache,以配合80386运作。
尽管人们意识到CPU主频的增加与内存DRAM存取时间过慢的矛盾已愈加突出,但因条件所限,80386内部没有L1 Cache,只有外部的Cache。80486出现Cache80486是由80386CPU加80387数字协处理器以及8kB Cache构成。
当CPU的时钟频率继续增加时,外部Cache的SRAM芯片速度也要相应提高,这样会增加系统成本,为此在设计80486时采用了内部Cache。
80486芯片内由8kB的Cache来存放指令和数据。同时,80486也可以使用处理器外部的第二级Cache,用以改善系统性能并降低80486要求的总线带宽。Cache可以工作在80486所有的操作模式:实地址模式、保护模式和X86模式。对Cache的操作是由系统自动进行的,对程序员透明。而在多处理器系统中,可能要求系统软件的干预。对于一般的计算机,在系统CMOS设置中均有Cache使用模式的设置。
80486内部Cache是一个4路组相联Cache,在主存储器中给定单元的数据能够存储在Cache内4个单元中的任何一个。这种4路相联方式是高命中率的全相联Cache和快速的直接映像Cache的一种折衷,因而能进行快速查找并获得高的命中率。Peutium的分离L1 Cache和L2 CachePentium处理器采用了超标量结构双路执行的流水线,有分支预测技术。
由于Pentium设计有2条并行整数流水线,可同时执行2条命令。整数单元的潜在处理能力实际可增加一倍,处理器也需要对命令和数据进进双倍的访问。为使这些访问不互相干涉,Intel把在486上共用的内部Cache,分成2个彼此独立的8kB代码Cache和8kB数据Cache,这两个Cache可以同时被访问。这种双路高速缓存结构减少了争用Cache所造成的冲突,提高了处理器效能。Pentium的Cache还采用了回写写入方式,这同486的贯穿写入方式相比,可以增加Cache的命中率。此外,还采用了一种称为MESI高速缓存一致性协议,为确保多处理器环境下的数据一致性提供了保证。Pentium Pro内嵌式L2 Cache为使Pentium Pro的性能超过Pentium,必需使用创新的设计方法。Pentium Pro使用了新的超标量和级流水线技术,包括无序执行、动态分支预测和推测执行的动态执行新技术。它可以使CPU在一个时钟周期执行3条微操作。CPU并行处理速度的加快,意味着它同时处理指令和数据的数量增加,为不使CPU处于等待状态,需要重新设计Cache。
Pentium Pro在片内第一级Cache的设计方案中,使指令Cache与数据Cache分别设置。指令Cache的容量为8kB,采用2路组相联映像方式。数据Cache的容量也为8kB,但采用4路组相联映像方式。Pentium Pro采用MESI(修改、排他、共享、作废)协议来维持Cache和主存储器之间的一致性。通常,人们总以为,像Pentium Pro这样的3路超标量结构的微处理器会采用更大容量的片内第一级Cache和更大的第二级Cache。然而,Intel公司的设计者却选择了另一条设计思路——设计一种Cache存储阶层结构,使得能够从一个Cache流动到另一个Cache,而不用阻塞执行。
Pentium Pro采用了内嵌式或称捆绑式L2Cache,大小为256kB或512kB。此时的L2已经用线路直接连到CPU上,益处之一就是减少了对急剧增多L1 Cache的需求。L2 Cache还能与CPU同步运行。即当L1 Cache不命中时,立刻访问L2 Cache,不产生附加延迟。为进一步减少因要访问的信息不在高速缓冲中时所带来的性能损失,Pentium Pro的L1和L2都设计成非锁定型。即当哪个Cache中没有CPU所需的信息时,它不妨碍后面访问Cache的处理过程。Cache可以直接处理最多4次的Cache缺页情况,借助CPU的内存有序缓冲区可以顺序保存最多12次的内存访问。非锁定型Cache适用于Pentium Pro的乱序执行核心,因为在可能引发流水线延迟的长等待内存操作期间,这些Cache可以让CPU继续运行。
Pentium Pro的如此捆绑封装,带来器件成本提高。一方面专用的L2 cache芯片成本高,另一方面两个不同功能的芯片只有放在一起联结后才能最后测试其性能的完整性。而当其中有一个有缺陷时,两个芯片都被报废。在以后的Pentium Pro产品中,又将L2 Cache从芯片中去掉。Pentium MMX容量增大的L1和L2CachePentium MMX是能运行多媒体指令MMX的高能奔腾处理器。Pentium MMX具有改进的分支预测和增强型流水线技术,并将L1 Cache容量增加到32kB,L2 Cache为512kB。
Pentium MMX的片内L1数据和指令的Cache,每个增到16kB,4路相联。较大的独立内部Cache、减少平均内存存取时间,同时提供对近期所用指令和数据的快速存取,性能因此得到提高。数据Cache支持采用回写方式更新内存。
由于CacheL1容量的增大,使当时的应用程序运行速度提高了10%左右。PentiumⅡ设有双独立总线连接L2 CachePentiumⅡ是Pentium Pro的改进型,具有MMX指令,使用动态执行技术,采用双独立总线结构。PentiumⅡ同样有2级Cache,L1为32kB(指令和数据Cache各16kB)是Pentium Pro的一倍。L2为512kB。
Pentium Ⅱ与Pentium Pro在L2 Cache 的不同是由于制作成本原因。L2 Cache已不在内嵌芯片上,而是与CPU通过专用64位高速缓存总线相联,与其它元器件共同被组装在同一基板上,即“单边接触盒”上。双独立总线结构就是:L2高速缓存总线和处理器至主内存(Processor-to-main-memory)的系统总线。 PentiumⅡ处理器可以同时使用这两条总线,与单一总线结构的处理器相比,该处理器可以进出两倍多的数据,可允许 PentiumⅡ处理器的L2高速缓存比Pentium处理器的L2高速缓存要快1倍。随着 PentiumⅡ处理器主频的提高,L2高速缓存的速度也将加快。最后,流水线型系统总线可允许同时并行传输,而不是单个顺序型传输。改进型的双重独立总线结构,可以产生超过与单总线结构三倍带宽的性能。另外,在PentiumⅡ中,采用了ECC技术,此技术应用到二级高速缓存中,大大提高了数据的完整性和可靠性。
为开发低端市场,曾在 PentiumⅡ的基板上除去L2,牺牲一些性能,制造廉价CPU。这就是最初的Celeron处理器。以后的Celeron仍加有较小的片上L2 Cache,其大小为128kB。PentiumⅢ的L2 Cache增大PentiumⅢ也是基于Pentium Pro结构为核心,在原有MMX多媒体指令的基础上,又增了70多条多媒体指令。它使用动态执行技术,采用双独立总线结构。
PentiumⅢ具有32kB非锁定L1 Cache和512kB非锁定L2 Cache。L2可扩充到1~2MB,具有更合理的内存管理,可以有效地对大于L2缓存的数据块进行处理,使CPU、Cache和主存存取更趋合理,提高了系统整体性能。在执行视频回放和访问大型数据库时,高效率的高速缓存管理使PⅢ避免了对L2 Cache的不必要的存取。由于消除了缓冲失败,多媒体和其它对时间敏感的操作性能更高了。对于可缓存的内容,PⅢ通过预先读取期望的数据到高速缓存里来提高速度,这一特色提高了高速缓存的命中率,减少了存取时间。Merced设有L0即将推出的第7代处理器Merced主频可达1GHz。很明显,对Cache的要求更高了。为此,lntel本着“大力提高执行单元和缓存间数据交换速度”的思想,在芯片内开发新的Cache,并增加L1 Cache的容量,来平衡CPU和DRAM间的速度。
为此,在Merced的片上最接近执行单元旁再设另一处Cache,称为L0缓存,是指令/数据分离型。由于L0Cache在物理位置上比L1离执行单元更近,布线距离的缩短,使它与执行单元间的数据交换速度比L1还快,可以进一步提高工作主频。
同时,还要在芯片内部配置超过1MB的大容量L1 Cache。芯片内部Cache比外部Cache更易于提升与执行单元间的数据传送速度。内部Cache的加大,执行单元不易发生“等待”。现行的内部Cache容量仅为32kB~128kB。内部Cache容量的增加会引起芯片面积增大,提高制造成本。但大部分公司认为,由于内部Cache容量增大而导致成本的上扬,可以用制造技术来弥补。与Cache相配合的缓存控制指令为进一步发挥Cache的作用,改进内存性能并使之与CPU发展同步来维护系统平衡,一些制造CPU的厂家增加了控制缓存的指令。如Intel公司在PentiumⅢ处理器中新增加了70条3D及多媒体的SSE指令集。其中有很重要的一组指令是缓存控制指令。AMD公司在K6-2和K6-3中的3DNow!多媒体指令中,也有从L1数据Cache中预取最新数据的数据预取指令(Prefetch)。
PentiumⅢ处理器的缓存控制指令,用于优化内存连续数据流。针对数据流的应用需要对以前的Cache运作方式进行了改进,减少了一些不必要的中间环节,节省了时间,增加了CPU数据总线的实际可用带宽,也提高了Cache的效率。
有两类缓存控制指令。一类是数据据预存取(Prefetch)指令,能够增加从主存到缓存的数据流;另一类是内存流优化处理(Memory Streaming)指令,能够增加从处理器到主存的数据流。这两类指令都赋予了应用开发人员对缓存内容更大控制能力,使他们能够控制缓存操作以满足其应用的需求。
数据预存取指令允许应用识别出所需的信息,并预先将其从主存中取出存入缓存。这样一来,处理器可以更快地获取信息,从而改进应用性能。为了进一步削减内存延迟,内存访问还可以与计算机周期保持流水操作。例如,如果一个应用需要计算一些数值以供3D图形使用,当它在计算一个值的同时就可以预取下一个需要计算的数值。
内存流优化处理指令允许应用越过缓存直接访问主存。通常情况下,处理器写出的数据都将暂时存储在缓存中以备处理器稍后使用。如果处理器不再使用它,数据最终将被移至主存。然而,对于多媒体应用来就,通常不再需要使用这些数据。因此,这时将数据尽快地移到主存中则显得至关重要。采用了PentiumⅢ处理器的内存流优化处理指令后,应用程序就能让数据搭乘“直达快车”,直接到达主存。当数据流直接到达主存时,处理器负责维护缓存的一致性。因为这种方式避免了为数据流留出空间清空缓存的当前内容,从而也提高了缓存的利用率。
总而言之,缓存控制指令改进了进出处理器的数据据流,使处理器保持其高速率运作。通过这些指令(同时还需要一些专为其设计以使其发挥优势的软件),商业用户可以在操作系统和图形设备驱动程序中感受其性能优势。Cache在PC中其它设备的应用Cache作为一种速度匹配技术,不仅用在提高CPU对内存的读写速度上,而且也用在CPU结构的其它部分和PC系统中。
PC的显示系统中,由于3D应用的迅猛发展,大量的显示内存使用着高速缓存技术,如前台缓存、后台缓存、深度缓存和纹理缓存等。
PC的磁盘系统中,为提高内存对磁盘(主要是硬盘)的读写速度,就要建立磁盘高速缓存。因为DRAM内存的存取速度对CPU来说较慢,但对磁盘的存取速度却是很快的。这是因为磁盘存储系统包含有磁头的机械运动,而机械运动无法跟传送电信号的电子速度相比。此外,磁头中电与磁的信号转换也对速度有影响。这样,为了提高磁盘存取速度而采用Cache也就顺理成章了。硬盘Cache无需使用高速的SRAM,它只需在内存(DRAM)中划出一个区域,作为专用的磁盘缓冲区,采用一定的数据结构,即可实现磁盘存取的Cache技术。它的过程也是把即将访问的数据整块地拷贝到高速缓存区中,然后内存再到高速缓存中去逐个读取数据。由于数据在RAM空间内部传送要比在RAM与磁盘间传送快得多,系统由此提高了存取速度。
硬盘的Cache可以放在常规内存中。不过,为了不占用宝贵的用户程序空间,通常是把它设在扩展内存或扩充内存里。硬盘Cache是由人们共知的SMARTDRIVE.EXE文件自动建立的,用户只需在AUTOEXEC.BAT与CONFIG.SYS中加入相应的命令行就成了。
在较慢速的其它外围设备和内存的数据交换中,在网络通讯中,都需要使用Cache技术。推而广之,凡是在传输速度有较大差异的设备之间,都可以利用Cache的速度匹配技术。结束语PC中的Cache主要是为了解决高速CPU和低速DRAM内存间速度匹配的问题,是提高系统性能,降低系统成本而采用的一项技术。随着CPU和PC的发展,20年来,现在的Cache已成为CPU和PC不可缺少的组成部分,是广大用户衡量系统性能优劣的一项重要指标。据预测,在21世纪初期,CPU主频加快发展的趋势,加上内存DRAM的存取时间也会提高,从系统的性价比考虑,Cache的配备仍然是重要的技术之一。
Ⅲ 当代计算机为什么要采用流水线技术和cache存储技术
总的来说,目的都是一个,充分利用计算资源,即充分利用cpu,防止其闲置
效果都是使计算机更快,计算能力更强
那么,我们首先要定位到有哪些计算资源是被浪费掉的。
1.对于cpu内部,假设一条指令要经过 取指令,解码指令,执行指令,存储访问,写回数据 五个步骤完成,且每个步骤都有对应的部件。没有流水线技术的情况下,当cpu执行一条指令时,你会发现只有一个部件在运行,其余四个都闲着——这些资源都被闲置了。
于是流水线技术横空出世了,让这些闲置的部件都运作了起来。具体技术细节课本上有,我就不赘述了。
2.如果所有程序都只是加减乘除逻辑运算,那么计算机会很快解决,但是,一旦涉及存储器访问就会出现麻烦(比如指令中的操作数在存储器中),因为从内存读数据很慢(相对于cpu正常工作速度),得不到数据cpu只能闲置着。
而cache存储技术就是为了解决这个问题(cpu速度与存储器存取速度不匹配)而出现的。小而快速的cache能对cpu的数据要求做出快速应答,使cpu不再受等待数据(数据饥饿)的困扰。
技术延拓
技术的出发点比较纯粹,而后来许多更复杂的流水线技术已经不再满足于解决资源利用问题,他们只有一个目的: 让cpu更快!
于是各种流水线的“奇技淫巧”(指令级的并行,超标量,超流水等)就出现了~
cache方面出现了预取,非阻塞,流水cache等技术
在基础原理熟练掌握的前提下,再去看看这些进一步的优化吧,否则一头雾水。
(以上回答仅为个人看法,如有错误希望您能批评指正)
Ⅳ 计算机组成原理(三)存储系统
辅存中的数据要调入主存后才能被CPU访问
按存储介质,存储器可分为磁表面存储器(磁盘、磁带)、磁心存储器半导体存储器(MOS型存储器、双极型存储器)和光存储器(光盘)。
随机存取存储器(RAM):读写任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关,如内存条等
顺序存取存储器(SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置,如磁盘等
直接存取存储器(DAM):既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取。如硬盘等
相联存储器,即可以按内容访问的存储器(CAM)可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器
读写存储器—即可读、也可写(如:磁盘、内存、Cache)
只读存储器—只能读,不能写(如:实体音乐专辑通常采用CD-ROM,实体电影采用蓝光光盘,BIOS通常写在ROM中)
断电后,存储信息消失的存储器——易失性存储器(主存、Cache)
断电后,存储信息依然保持的存储器——非易失性存储器(磁盘、光盘)
信息读出后,原存储信息被破坏——破坏性读出(如DRAM芯片,读出数据后要进行重写)
信息读出后,原存储信息不被破坏——非破坏性读出(如SRAM芯片、磁盘、光盘)
存储器芯片的基本电路如下
封装后如下图所示
图中的每条线都会对应一个金属引脚,另外还有供电引脚、接地引脚,故可以由此求引脚数目
n位地址对应2 n 个存储单元
假如有8k×8位的存储芯片,即
现代计算机通常按字节编址,即每个字节对应一个地址
但也支持按字节寻址、按字寻址、按半字寻址、按双字寻址
(Dynamic Random Access Memory,DRAM)即动态RAM,使用栅极电容存储信息
(Static Random Access Memory,SRAM)即静态RAM,使用双稳态触发器存储信息
DRAM用于主存、SRAM用于Cache,两者都属于易失性存储器
简单模型下需要有 根选通线,而行列地址下仅需 根选通线
ROM芯片具有非易失性,断电后数据不会丢失
主板上的BIOS芯片(ROM),存储了“自举装入程序”,负责引导装入操作系统(开机)。逻辑上,主存由 辅存RAM+ROM组成,且二者常统一编址
位扩展的连接方式是将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。
字扩展是指增加存储器中字的数量,而位数不变。字扩展将芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。
实际上,存储器往往需要同时扩充字和位。字位同时扩展是指既增加存储字的数量,又增加存储字长。
两个端口对同一主存操作有以下4种情况:
当出现(3)(4)时,置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交义工作。多体并行存储器分为高位交叉编址(顺序方式)和低位交叉编址(交叉方式)两种.
①高位交叉编址
②低位交叉编址
采用“流水线”的方式并行存取(宏观上并行,微观上串行),连续取n个存储字耗时可缩短为
宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。存取周期为T,存取时间/总线传输周期为r,为了使流水线不间断,应保证模块数
单体多字系统的特点是存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。一次并行读出m个字,地址必须顺序排列并处于同一存储单元。
缺点:每次只能同时取m个字,不能单独取其中某个字;指令和数据在主存内必须是连续存放的
为便于Cache 和主存之间交换信息,Cache 和主存都被划分为相等的块,Cache 块又称Cache 行,每块由若干字节组成。块的长度称为块长(Cache 行长)。由于Cache 的容量远小于主存的容盘,所以Cache中的块数要远少于主存中的块数,它仅保存主存中最活跃的若干块的副本。因此 Cache 按照某种策略,预测CPU在未来一段时间内欲访存的数据,将其装入Cache.
将某些主存块复制到Cache中,缓和CPU与主存之间的速度矛盾
CPU欲访问的信息已在Cache中的比率称为命中率H。先访问Cache,若Cache未命中再访问主存,系统的平均访问时间t 为
同时访问Cache和主存,若Cache命中则立即停止访问主存系统的平均访问时间t 为
空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息
基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到Cache中
直接映射方式不需要考虑替换算法,仅全相联映射和组相联映射需要考虑
①随机算法(RAND):若Cache已满,则随机选择一块替换。实现简单,但完全没考虑局部性原理,命中率低,实际效果很不稳定
②先进先出算法(FIFO):若Cache已满,则替换最先被调入Cache的块。实现简单,依然没考虑局部性原理
③近期最少使用算法(LRU):为每一个Cache块设置一个“计数器”,用于记录每个Cache块已经有多久没被访问了。当Cache满后替换“计数器”最大的.基于“局部性原理”,LRU算法的实际运行效果优秀,Cache命中率高。
④最不经常使用算法(LFU):为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过几次。当Cache满后替换“计数器”最小的.并没有很好地遵循局部性原理,因此实际运行效果不如LRU
现代计算机常采用多级Cache,各级Cache之间常采用“全写法+非写分配法”;Cache-主存之间常采用“写回法+写分配法”
写回法(write-back):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在数据不一致的隐患。
全写法(写直通法,write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)。使用写缓冲,CPU写的速度很快,若写操作不频繁,则效果很好。若写操作很频繁,可能会因为写缓冲饱和而发生阻塞访存次数增加,速度变慢,但更能保证数据一致性
写分配法(write-allocate):当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用。
非写分配法(not-write-allocate):当CPU对Cache写不命中时只写入主存,不调入Cache。搭配全写法使用。
页式存储系统:一个程序(进程)在逻辑上被分为若干个大小相等的“页面”, “页面”大小与“块”的大小相同 。每个页面可以离散地放入不同的主存块中。CPU执行的机器指令中,使用的是“逻辑地址”,因此需要通“页表”将逻辑地址转为物理地址。页表的作用:记录了每个逻辑页面存放在哪个主存块中
逻辑地址(虚地址):程序员视角看到的地址
物理地址(实地址):实际在主存中的地址
快表是一种“相联存储器”,可以按内容寻访,表中存储的是页表项的副本;Cache中存储的是主存块的副本
地址映射表中每一行都有对应的标记项
主存-辅存:实现虚拟存储系统,解决了主存容量不够的问题
Cache-主存:解决了主存与CPU速度不匹配的问题