高速缓冲存储器Cache.doc_第1页
高速缓冲存储器Cache.doc_第2页
高速缓冲存储器Cache.doc_第3页
高速缓冲存储器Cache.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高速缓冲存储器cache10计科一班 1010311110 韩家君 高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。它是位于CPU与内存之间的临时存储器,比主存储器体积小但速度快,用于保有从主存储器得到指令的副本很可能在下一步为处理器所需的专用缓冲器。在Cache中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。由此可见,在CPU中加入Cache是一种高效的解决方案,这样整个内存储器(Cache+内存)就变成了既有Cache的高速度,又有内存的大容量的存储系统了。 Cache对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与Cache间的带宽引起的。高速缓存的基本概念 在计算机存储系统的层次结构中,介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。 某些机器甚至有二级三级缓存,每级缓存比前一级缓存速度慢且容量大。而这时,一开始的高速小容量存储器就被人称为一级缓存。高速缓存的组成结构 高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。主要由大部分组成:Cache存储体:存放由主存调入的指令与数据块。地址转换部件:建立目录表以实现主存地址到缓存地址的转换。替换部件:在缓存满时按一定策略进行数据块替换,并修改地址转换部件。高速缓存的作用介绍 在计算机技术发展过程中,主存储器存取速度一直比中央处理器操作速度慢得多,使中央处理器的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响。有很多方法可用来缓和中央处理器和主存储器之间速度不匹配的矛盾,如采用多个通用寄存器、多存储体交叉存取等,在存储层次上采用高速缓冲存储器也是常用的方法之一。很多大、中型计算机以及新近的一些小型机、微型机也都采用高速缓冲存储器。高速缓冲存储器的容量一般只有主存储器的几百分之一,但它的存取速度能与中央处理器相匹配。根据程序局部性原理,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性很大。因而,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的那一组单元内容调入高速缓冲存储器,中央处理器即将存取的主存储器单元很可能就在刚刚调入到高速缓冲存储器的那一组单元内。于是,中央处理器就可以直接对高速缓冲存储器进行存取。在整个处理过程中,如果中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,计算机系统处理速度就能显著提高。高速缓存的工作原理1、读取顺序 CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在Cache中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先Cache后内存。2、缓存分类 前面是把Cache作为一个整体来考虑的,现在要分类分析了。Intel从Pentium开始将Cache分开,通常分为一级高速缓存L1和二级高速缓存L2。在以往的观念中,L1 Cache是集成在CPU中的,被称为片内Cache。在L1中还分数据Cache(I-Cache)和指令Cache(D-Cache)。它们分别用来存放数据和执行这些数据的指令,而且两个Cache可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。在P4处理器中使用了一种先进的一级指令Cache动态跟踪缓存。它直接和执行单元及动态跟踪引擎相连,通过动态跟踪引擎可以很快地找到所执行的指令,并且将指令的顺序存储在追踪缓存里,这样就减少了主执行循环的解码周期,提高了处理器的运算效率。以前的L2 Cache没集成在CPU中,而在主板上或与CPU集成在同一块电路板上,因此也被称为片外Cache。但从P开始,由于工艺的提高L2 Cache被集成在CPU内核中,以相同于主频的速度工作,结束了L2 Cache与CPU大差距分频的历史,使L2 Cache与L1 Cache在性能上平等,得到更高的传输速度。L2Cache只存储数据,因此不分数据Cache和指令Cache。在CPU核心不变化的情况下,增加L2 Cache的容量能使性能提升,同一核心的CPU高低端之分往往也是在L2 Cache上做手脚,可见L2 Cache的重要性。现在CPU的L1 Cache与L2 Cache惟一区别在于读取顺序。3、读取命中率 CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%,剩下的20%从L2 Cache读取。由于不能准确预测将要执行的数据,读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。在一些高端领域的CPU(像Intel的Itanium)中,我们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的种Cache,在拥有L3 Cache的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。为了保证CPU访问时有较高的命中率,Cache中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出Cache,提高Cache的利用率。缓存技术的发展 Cache并不是生来就有的,其实在286时代,计算机还没有Cache,这是因为当时的CPU速度不快,内存的速度完全可以满足系统的需求。直至386时代,当CPU的速度不断进步,内存的速度却没有得到有效的提升,因此,内存便成为了系统传输的瓶颈,这样就算CPU频率再上升,效能也不会增加。于是Cache便由此诞生了,早期的解决方案是在主板上加入32至64KB的Cache,Cache的速度比主存储器快,作为CPU和内存的缓冲区域。这样使得系统性能迅速提高。其实Intel在386时也曾考虑过将Cache改进CPU内,但由于技术原因,CPU的成品率十分低,故此80386最后也没加上Cache。 由于CPU的速度不断进步,而外置Cache受系统总线的影响已经不能完全满足CPU发展的要求,到486时代,Intel终于把Cache放进CPU核心内。80486内置了8KB Cache,由于处于CPU内,令传输速度更有效率,但由于On Die Cache的容量太少,故此当时还是有On Board Cache,称为L2 Cache。而CPU内的Cache称为L1 Cache。当时的L2 Cache就像今天内存一样,是可以插在主板上使用的,不过价格昂贵。进入了Pentium时代,CPU芯片商不断去增加Cache的容量去加强效能,当Pentium有16KB时,对手就加入更多,到达32KB甚至64KB,当时AMD的K6-2更有高达84KB的L1 Cache,由于L1 Cache的容量再高,效能也不会太显注,战场开始漫延至L2 Cache。赛扬刚诞生的时候由于没有集成L2 Cache导致性能极低,因此Intel不得不在随后的赛扬处理器中重新加入L2 Cache。可见L2 Cache的对于CPU(L2 Cache集成到CPU后)整体性能至关重要。到了Intel Pentium Pro,Intel终于把L2 Cache放在CPU内,L2速度也加快了,不过却不是造在核心内,那时Pentium Pro内采用双芯片,L1 + Die及L2,但由于要把两颗芯片封装,时常会压坏芯片,因此成品率不高。那么如何解决这个问题?Intel是很有办法的。Intel后来采用了On-Card Cache。Pentium II改用了Slot 1,把L2 Cache放在卡内而不用封装。虽然效能不俗却十分仰贵,所以Intel推出了没有L2 Cache的Celeron版本。同时期的AMD也采用了和Intel同样的办法使用Slot A 。由于制程的进步,L2 Cache也可以放在核心内,初时的Pentium III拥有512KB L2 Cache,早期的也产生过slot I结构的Pentium III,在卡内出现512k Cache,但和早期的socket 370结构的Pentium III一样Cache只有核心速度的一半,到后来进步至256KB 但行全速。此时期的代表做就是大家了解的铜矿核心Pentium III。由于L2 Cache 具有重要的作用,在Pentium III时代,Intel Pentium III采用了8路联合相关的L2 Cache而赛扬却只有4路。这个差异存在的原因是因为Intel本质上是通过放弃PentiumIII上1/2的Cache来得到新处理器,这样的放弃不但放弃了损坏的缓存存储单元,也放弃了相应四路相关控制电路,直接后果就是导致命中率下降。而相对的AMD的做法却用备份单元来填补,对L2 Cache控制电路没有任何影响。可以肯定的是16路相关一定比8路相关缓存命中率高出很多,更不要说4路了。虽然在缓存本身的控制电路以及制作方式上,AMD都通过自身过去在K6上获得的经验超越了Intel,但还是有稍许的美中不足。Duron的L2 Cache并不象新的Pentium III和赛扬那样采用256位的缓存数据总线,而依然是64位。加上Intel特地优化的缓存总线设计,这就意味着在数据传送能力上新Pentium III和赛扬会比Duron强出不少。但AMD新设计的L2 Cache有些区别,L1 Cache的数据并不会写入L2 Cache。L2 Cache仅仅包含回写缓存块,也就是需要被写回到主存系统的数据。而Pentium III和Celeron的L2 Cache都属于经典意义上的包含类型缓存,也就是说L1 Cache(32KB)的内容一定也在L2 Cache(256KB和128KB)内。此外L2 Cache 在容量上也有发展,在Pentium IV 早期的版本Willamette核心的处理器仍然使用的是256k Cache,但在图拉丁 Pentium III和Northwood的Pentium IV Intel 率新把 L2 chache 增加到512k 随后AMD 也在其Barton核心的athlon 中增加为512k。而新的64位处理器L2 Cache 容量陡增至 1M。Prescott是Intel下一代的Pentium 4处理器可能也会使用1MB L2 Cache,而Itanium 2代号为McKinley,Deerfield是Intel即将推出的64位工作站CPU,Deerfield是一个低成本版本的Madison,Madison增加了芯片内高速缓存的数量,Madison和Deerfield会在明年的第二季度推出,分别具有6MB和4MB的Cache。最新的发展L3 Cache诞生随着64位处理器的诞生,Intel已经把 高速的L3 加入到其Itanium 2当中,或许这有将带来一场Cache革命,但结局如何?这正是我们期待的。操作BIOS设置优化CPU性能在高级BIOS设置中,主要有“CPU Internal Cache”、“External Cache”、“CPU L2 Cache ECC Checking”等几个与CPU性能有关的选项。(1)CPU Internal Cache(CPU内部缓存):建议设置为“Enabled”。它设置了CPU内部高速缓存开关,该选项在某些主板的BIOS设置中,也叫做“L1 Cache”、“Level 1 Cache”或“Primary Cache”。设置为打开可以提高CPU性能。(2)External Cache(外部缓存):建议设置为“En

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论