快取( 四 )


快取

文章插图
二级快取结构剖析大量使用二级快取带来的结果是处理器运行效率的提升和成本价格的大幅度不等比提升 。举个例子,伺服器上用的至强处理器和普通的p4处理器其核心基本上是一样的,就是二级快取不同 。至强的二级快取是2mb~16mb,p4的二级快取是512kb,于是最便宜的至强也比最贵的p4贵,原因就在二级快取不同 。即l2cache 。由于l1级高速快取容量的限制,为了再次提高cpu的运算速率,在cpu外部放置一高速存储器,即二级快取 。工作主频比较灵活,可与cpu同频,也可不同 。cpu在读取数据时,先在l1中寻找,再从l2寻找,然后是记忆体,在后是外存储器 。所以l2对系统的影响也不容忽视 。最早先的cpu快取是个整体的,而且容量很低,英特尔公司从pentium时代开始把快取进行了分类 。当时集成在cpu核心中的快取已不足以满足cpu的需求,而製造工艺上的限制又不能大幅度提高快取的容量 。因此出现了集成在与cpu同一块电路板上或主机板上的快取,此时就把cpu核心集成的快取称为一级快取,而外部的称为二级快取 。随着cpu製造工艺的发展,二级快取也能轻易的集成在cpu核心中,容量也在逐年提升 。再用集成在cpu内部与否来定义一、二级快取,已不确切 。而且随着二级快取被集成入cpu核心中,以往二级快取与cpu大差距分频的情况也被改变,此时其以相同于主频的速率工作,可以为cpu提供更高的传输速率 。三级快取L3 Cache(三级快取),分为两种,早期的是外置,现在的都是内置的 。而它的实际作用即是,L3快取的套用可以进一步降低记忆体延迟,同时提升大数据量计算时处理器的性能 。降低记忆体延迟和提升大数据量计算能力对游戏都很有帮助 。而在伺服器领域增加L3快取在性能方面仍然有显着的提升 。比方具有较大L3快取的配置利用物理记忆体会更有效,故它比较慢的磁碟I/O子系统可以处理更多的数据请求 。具有较大L3快取的处理器提供更有效的档案系统快取行为及较短讯息和处理器伫列长度 。其实最早的L3快取被套用在AMD发布的K6-III处理器上,当时的L3快取受限于製造工艺,并没有被集成进晶片内部,而是集成在主机板上 。在只能够和系统汇流排频率同步的L3快取同主记忆体其实差不了多少 。后来使用L3快取的是英特尔为伺服器市场所推出的Itanium处理器 。接着就是P4EE和至强MP 。Intel还打算推出一款9MB L3快取的Itanium2处理器,和以后24MB L3快取的双核心Itanium2处理器 。但基本上L3快取对处理器的性能提高显得不是很重要,比方配备1MB L3快取的Xeon MP处理器却仍然不是Opteron的对手,由此可见前端汇流排的增加,要比快取增加带来更有效的性能提升 。超级快取SuperCache,也就是超级快取,计算机的速度瓶颈主要在于机械硬碟的读写速度,SuperCache就是给硬碟的读写用高速记忆体来做快取,是大记忆体机器的提速首选,伺服器的必备利器 。工作原理:对于SuperCache而言,硬碟上没有档案的概念,只是用户指定大小的一个一个小格子,例如32k,硬碟上某个小格子里面的内容被读取了,则被快取在记忆体里面,下次还读这个小格子的时候,直接从记忆体读取,硬碟没有任何动作,从而达到了加速的目的 。有两种快取模式,1、MFU模式,每个小格子被读取的时候,做一个简单的计数,当快取满的时候,计数值小的先被清出快取;2、MRU模式,简单的伫列,先进先出 。WEB快取WWW是网际网路上最受欢迎的套用之一,其快速增长造成网路拥塞和伺服器超载,导致客户访问延迟增大,WWW服务质量日益显现出来 。快取技术被认为是减轻伺服器负载、降低网路拥塞、增强WWW可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral Locality)原理,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连线到驻留网站,而是由Cache中保留的副本提供 。Web内容可以快取在客户端、代理伺服器以及伺服器端 。研究表明,快取技术可以显着地提高WWW性能,它可以带来以下好处:(1)减少网路流量,从而减轻拥塞 。(2)降低客户访问延迟,其主要原因有:①快取在代理伺服器中的内容,客户可以直接从代理获取而不是从远程伺服器获取,从而减小了传输延迟②没有被快取的内容由于网路拥塞及伺服器负载的减轻而可以较快地被客户获取 。(3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程伺服器负载 。(4)如果由于远程伺服器故障或者网路故障造成远程伺服器无法回响客户的请求,客户可以从代理中获取快取的内容副本,使得WWW服务的鲁棒性得到了加强 。Web快取系统也会带来以下问题:(1)客户通过代理获取的可能是过时的内容 。(2)如果发生快取失效,客户的访问延迟由于额外的代理处理开销而增加 。因此在设计Web快取系统时,应力求做到Cache命中率最大化和失效代价最小化 。(3)代理可能成为瓶颈 。因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少同客户直接和远程伺服器相连的效率一样 。系统快取将CPU比作一个城里的家具厂,而将存储系统比作郊区的木料厂,那幺实际情况就是木料厂离家具厂越来越远,即使使用更大的卡车来运送木料,家具厂也得停工来等待木料送来 。在这样的情况下,一种解决方法是在市区建立一个小型仓库,在里面放置一些家具厂最常用到的木料 。这个仓库实际上就是家具厂的“Cache”,家具厂就可以从仓库不停的及时运送需要的木料 。当然,仓库越大,存放的木料越多,效果就越好,因为这样即使是些不常用的东西也可以在仓库里找到 。需要的木料仓库里没有,就要从城外的木料厂里继续找,而家具厂就得等着了 。仓库就相对于L1快取,可以由CPU及时快速的读写,所以存储的是CPU最常用代码和数据(后面会介绍一下如何挑选“最常用”) 。L1快取的速率比系统记忆体快的多是因为使用的是SRAM,这种记忆体单晶元使用四到六个电晶体 。这也使得SRAM的造价相当的高,所以不能拿来用在整个存储系统上 。在大多数CPU上,L1快取和核心一起在一块晶片上 。在家具厂的例子中,就好比工厂和仓库在同一条街上 。这样的设计使CPU可以从最近最快的地方得到数据,但是也使得“城外的木料厂”到“仓库”和到“家具厂”的距离差不多远 。这样CPU需要的数据不在L1快取中,也就是“Cache Miss”,从存储设备取数据就要很长时间了 。处理器速率越快,两者之间的差距就越大 。使用Pentium4那样的高频率处理器,从记忆体中取得数据就相当于“木料厂”位于另一个国家 。