高速缓冲存储器Cache的原理、设计及实现
- 格式:doc
- 大小:47.50 KB
- 文档页数:3
cache介绍前⾯已多次提到了Cache,这可是⼀个讨⼈喜欢的东西,您有必要详细了解它的作⽤与原理。
Cache是介于CPU与主内存之间、或者主内存与磁盘之间的⾼速缓冲器,其作⽤是解决系统中数据读写速度不匹配的问题。
其中介于CPU与主内存之间的缓冲器⼜称为RAM Cache,⽽介于主内存与磁盘驱动器之间的缓冲器则称之为Disk Cache,这⾥要讨论的是前者,也就通常简称的Cache。
那么,Cache是怎样⼯作的呢?您⼀定明⽩CPU的运算速度⽐主内存的读写速度要快得多,这就使得CPU在访问内存时要花很长的等待时间,从⽽造成系统整体性能的下降。
为了解决这种速度不匹配的问题,需要在CPU与主内存之间加⼊⽐主内存更快的SRAM(Static Ram,静态存储器)。
SRAM储存了主内存中的数据(专业术语称为“映象”),使CPU可以直接通过访问SRAM来读写数据。
由于SRAM的速度与CPU的速度相当,因⽽⼤⼤缩短了数据读写的等待时间,系统的整体速度也就得到了提⾼。
既然SRAM那么快,为什么不⽤来作为主内存呢?这是因为SRAM采⽤了与CPU相类似的半导体制造⼯艺,成本极⾼,只有在那些只关⼼性能不考虑价格的场合才会这样做。
这也就使得Cache粉墨登场了,它能将CPU⽤过的数据,以及结果保存起来,让CPU下次处理时先来访问Cache,如果没有可⽤的数据再去别处找,以此来提⾼运⾏速度。
Cache由标记存储器和数据存储器两个基本部分组成。
标记存储器是⽤来储存Cache的控制位与块地址标签,控制位⽤于管理Cache的读写操作,⽽块地址标签则记录着Cache中各块的地址。
这个地址包含了与主内存映射的块地址,并且都与Cache中的⼀块“数据”相对应。
⽽这块“数据”正是贮存于Cache的数据存储器中。
当CPU读取数据时,先通过地址总线把物理地址送到Cache中,与Cache中的块地址标签进⾏对⽐。
若相符合,则表⽰此数据已经存在于Cache中(此情况被戏称为“命中”),这时只需把Cache中的对应数据经由数据总线直接传送给CPU即可。
什么是CacheCache”是什么Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。
在老鸟们眼中,这个词或许已没有再谈的必要,因为他们对Cache从设计的必要性到工作原理、工作过程等等都已了如指掌了;而对菜鸟朋友们而言,这些未必就很清楚。
那么,它们到底是指的什么呢?不用急,下面就请随笔者一起来全面认识Cache。
为什么要设计Cache我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷鸟、毒龙系列的处理器,由于在设计采用了DDR技术,CPU 工作的外频为系统总线频率的两倍)。
但是,CPU的工作频率(主频)是外频与倍频因子的乘积。
这样一来,内存的工作频率就远低于CPU的工作频率了。
这样造成的直接结果是:CPU在执行完一条指令后,常常需要“等待”一些时间才能再次访问内存,极大降了CPU工作效率。
在这样一种情况下,Cache就应运而生了!Cache是什么Cache是一种特殊的存储器,它由Cache 存储部件和Cache控制部件组成。
Cache 存储部件一般采用与CPU同类型的半导体存储器件,存取速度比内存快几倍甚至十几倍。
而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址变换部件及替换控制部件等。
至于它们各自又是怎样工作的、有何作用等等,我想我们就没有必要做进一步的研究,知道一般Cache分为L1 Cache(其中又分为数据Cache、代码Cache)、L2 Cache就行了。
Cache是怎样工作的我们知道,CPU运行程序是一条指令一条指令地执行的,而且指令地址往往是连续的,意思就是说CPU在访问内存时,在较短的一段时间内往往集中于某个局部,这时候可能会碰到一些需要反复调用的子程序。
电脑在工作时,把这些活跃的子程序存入比内存快得多的Cache 中。
CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中”,此时CPU直接从Cache中调用该内容;否则,就称为“不命中”,CPU只好去内存中调用所需的子程序或指令了。
cache计算机组成原理小伙伴们!今天咱们来唠唠计算机组成原理里超级有趣的一个东西——Cache(高速缓冲存储器)。
你可以把计算机想象成一个超级大的办公室。
这里面有各种各样的员工(部件)在忙忙碌碌地干活。
而Cache呢,就像是办公室里最机灵的小秘书。
为啥这么说呢?你想啊,CPU(中央处理器)这个大老板,每天都要处理好多好多的数据,就像大老板每天要做各种决策一样。
这些数据呢,原本是放在内存这个大仓库里的。
可是呀,内存离CPU有点远,每次CPU要找个数据,就像大老板要从老远的大仓库里找个文件一样,特别费时间。
这时候,Cache就闪亮登场啦。
Cache这个小秘书特别聪明,它就在CPU的身边,离得超级近。
它就像有个超能力,会提前猜一猜CPU这个大老板接下来可能会用到哪些数据。
然后呢,它就偷偷地从内存这个大仓库里把那些可能会用到的数据拿过来,放在自己这里。
当CPU说:“我要找个数据啦。
”Cache就会特别快地说:“老板,你要的是不是这个呀?”然后一下子就把数据给CPU了。
这速度,就像闪电一样快。
Cache这个小秘书呀,它的存储空间可没有内存那么大。
它就像是一个小巧精致的文件柜,虽然装不了太多东西,但是放的都是最最常用的文件。
比如说,你每天都要用到的办公软件的一些小设置之类的。
它把这些常用的数据放在身边,就为了能让CPU快速拿到。
那Cache是怎么知道哪些数据是常用的呢?这就像是小秘书有自己的小秘诀。
它会根据数据被访问的频率呀,还有一些算法来判断。
就好像小秘书会观察,哪些文件大老板经常看,哪些偶尔才看一次。
经常看的就牢牢放在自己身边的小文件柜里,不常看的就先放一边。
有时候呀,也会出点小状况。
比如说,Cache以为CPU会用到某个数据,就把它从内存里拿过来了,结果CPU要的是另外一个数据。
这就像小秘书猜错了大老板的心思。
不过没关系呀,Cache会很快调整自己的策略,再去内存里找正确的数据。
而且呢,Cache还有不同的级别。
高速缓冲存储器Cache简介○王军评估计算机的主要性能指标之一是运行速度。
计算机的程序是在C PU中执行的,而平时程序和数据则存放在存储器中。
存储器分为外部存储器(如软盘、硬盘、磁带等)和内部存储器。
外部存储器容量大,速度慢,内部存储器容量小,速度快。
内存的使用在一定程度上解决了高速C PU和慢速存储设备之间速度上的矛盾。
但C PU和内存之间仍然存在速度上不匹配的矛盾。
为充分利用C PU的运行速度。
在C PU和内存之间又引入了高速缓冲存储器(C ac he)。
一、Cache的基本概念高速缓冲存储器Ca che是位于C PU和主存储器之间容量小而速度快的存储器,通常由SR AM(静态R A M)组成。
随着微电子技术和计算机技术的发展,CPU的工作频率越来越高,DR AM(动态R A M)可以用最低的价格和最小的体积提供更大的存储器空间,但是DR AM的速度难以满足C PU 的要求,因而访问系统存储器时都要插入等待周期,这对高速C PU来说是一种极大的浪费。
采用C ache技术是一种现实的解决问题的方法。
S R AM可以提供最高的总线性能。
由S R AM组成的C ac he即是把主存储器看作是高速存储器而设置的小容量局部存储器,这种高速存储器是面向C PU工作的存储器,存储C PU常用的数据和代码,Ca che的有效性是利用了程序对存储器的访问在时间和空间上具有局部区域性的特性,即对大多数程序来说,在某个时间片内会集中重复地访问某一个特定的区域。
C ac he通常由相联存储器实现。
相联存储器的每一个存储块都具有额外的存储信息,称为标签(T a g)。
当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签FRA M E E t h er n et—I IFRA M E E t h er n et—SNA PN e t W ar e DO S Requ es t erFI R ST N E TW O RK D RI V E=FN ET W A R E PR O TO CO L=N D S BI N D此时假设使用N E2000网卡,中断号为5,端口地址为300。
Cache存储器:电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(DynamicRandomAccessMemory)之间,规模较小,但速度很高的存储器,通常由SRAM(StaticRandomAccessMemory静态存储器)组成。
它是位于CPU与内存间的一种容量较小但速度很高的存储器。
CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。
Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache 主要是集成在CPU内部,而L2Cache集成在主板上或是CPU上。
我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷鸟、毒龙系列的处理器,由于在设计采用了DDR技术,CPU工作的外频为系统总线频率的两倍)。
但是,CPU的工作频率(主频)是外频与倍频因子的乘积。
这样一来,内存的工作频率就远低于CPU的工作频率了。
这样造成的直接结果是:CPU在执行完一条指令后,常常需要“等待”一些时间才能再次访问内存,极大降了CPU工作效率。
在这样一种情况下,Cache就应运而生了!在实际应用中,Cache,尤其是L2Cache对系统的性能,特别是对浮点运算能力有较大的影响。
而我们知道,大部分游戏的流畅运行需要频繁的浮点运算。
因此,CPU运行游戏的性能的好坏与L2Cache的容量与速度有很大关系。
也许你会认为很多指令是寄存器指令,内存读写在整个程序中所占的比例并不大,但是请不要忘记很恐怖的一点是,所有的指令都在内存中,也就是说每执行一条指令都要去读内存。
有了这个前提,我们可以想象,在程序执行的时候,cpu会随时随刻地从内存中读取代码,整条总线会被cpu占住,这样的话总线上的其他master(比如说DMA控制器,I2C-Slave等)就将全部受到影响,由此可见没有Cache的结果就将是灾难性的。
cache百科名片cache n. 高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。
存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。
当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。
如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。
因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
目录[隐藏]基本简介简单理解地址镜像与变换[1][2]Buffer和Cache的区别[编辑本段]基本简介Cache的出现是基于两种因素:首先,是由于CPU的速度和性能提高很快而主存速度较低且价格高,第二就是程序执行的局部性特点。
因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。
很显然,要尽可能发挥CPU的高速度就必须CACHE用硬件实现其全部功能。
Cache与主存之间可采取多种地址映射方式,直接映射方式是其中的一种。
在这种映射方式下,主存中的每一页只能复制到某一固定的Cache页中。
由于Cache块(页)的大小为16B,而Cache容量为16KB。
因此,此Cache可分为1024页。
可以看到,Cache的页内地址只需4位即可表示;而Cache的页号需用10位二进制数来表示;在映射时,是将主存地址直接复制,现主存地址为1234E8F8(十六进制),则最低4位为Cache的页内地址,即1000,中间10位为Cache的页号,即1010001111。
Cache的容量为16KB决定用这14位编码即可表示。
题中所需求的Cache的地址为10100011111000。
Cache中的内容随命中率的降低需要经常替换新的内容。
替换算法有多种,例如,先入后出(FILO)算法、随机替换(RAND)算法、先入先出(FIFO)算法、近期最少使用(LRU)算法等。
高速缓冲存储器Cache的原理、设计及实现 前 言 虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。若CPU工作速度较高,但内存存取速度较低,则造成CPU等待,降低处理速度,浪费CPU的能力。如500MHz的PⅢ,一次指令执行时间为2ns,与其相配的内存(SDRAM)存取时间为10ns,比前者慢5倍,CPU和PC的性能怎么发挥
出来?
如何减少CPU与内存之间的速度差异?有4种办法:一种是在基本总线周期中插入等待,这样会浪费CPU的能力。另一种方法是采用存取时间较快的SRAM作存储器,这样虽然解决了CPU与存储器间速度不匹配的问题,但却大幅提升了系统成本。第3种方法是在慢速的DRAM
和快速CPU之间插入一速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高,这就是Cache法。还有一种方法,采用新型存储器。目前,一般采用第3种方法。它是PC系统在不大增加成本的前提下,使性能提升的一个非常有效的技术。
本文简介了Cache的概念、原理、结构设计以及在PC及CPU中的实现。 Cache的工作原理 Cache的工作原理是基于程序访问的局部性。 对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。 根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。 系统正是依据此原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。CPU对存储器进行数据请求时,通常先访问Cache。由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率。即CPU在任一时刻从Cache中可靠获取数据的几率。命中率越高,正确获取数据的可靠性就越大。一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。一般规定Cache与内存的空间比为4:1000,即128kB Cache可映射32MB内存;256kB Cache可映射64MB内存。在这种情况下,命中率都在90%以上。至于没有命中的数据,CPU只好直接从内存获取。获取的同时,也把它拷进Cache,以备下次访问。
Cache的基本结构 Cache通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。Cache的3种基本结构如下: 全相联Cache 在全相联Cache中,存储的块与块之间,以及存储顺序或保存的存储器地址之间没有直接的关系。程序可以访问很多的子程序、堆栈和段,而它们是位于主存储器的不同部位上。因此,Cache保存着很多互不相关的数据块,Cache必须对每个块和块自身的地址加以存储。当请求数据时,Cache控制器要把请求地址同所有地址加以比较,进行确认。这种Cache结构的主要优点是,它能够在给定的时间内去存储主存器中的不同的块,命中率高;缺点是每一次请求数据同Cache中的地址进行比较需要相当的时间,速度较慢。
表1 pc中部分已实现的cache技术 系统 l0 l1cache l2cache l3cache cache 主存储器 8088 无 无 无 无 无 dram 80286 无 无 无 无 无 dram 80386dx 无 外部sram 无 无 sram dram 80486dx 无 内部8kb 外部sram 无 sram dram pentium 无 内部8kb+8kb 外部sram 无 sram dram ppro 无 内部8kb+8kb 内部封装256kb或512kb 无 sram dram mmx 无 内部16kb+16kb 外部sram 无 sram dram pⅡ/pⅢ 无 内部16kb+16kb 卡上封装512kb~1mb 无 sram dram
k6-Ⅲ 内部32kb+32kb 芯片背上封装256kb 外部1mb sram dram
直接映像Cache 直接映像Cache不同于全相联Cache,地址仅需比较一次。在直接映像Cache中,由于每个主存储器的块在Cache中仅存在一个位置,因而把地址的比较次数减少为一次。其做法是,为Cache中的每个块位置分配一个索引字段,用Tag字段区分存放在Cache位置上的不同的块。单路直接映像把主存储器分成若干页,主存储器的每一页与Cache存储器的大小相同,匹配的主存储器的偏移量可以直接映像为Cache偏移量。Cache的Tag存储器(偏移量)保存着主存储器的页地址(页号)。以上可以看出,直接映像Cache优于全相联Cache,能进行快速查找,其缺点是当主存储器的组之间做频繁调用时,Cache控制器必须做多次转换。
组相联Cache 组相联Cache是介于全相联Cache和直接映像Cache之间的一种结构。这种类型的Cache使用了几组直接映像的块,对于某一个给定的索引号,可以允许有几个块位置,因而可以增加命中率和系统效率。 Cache与DRAM存取的一致性 在CPU与主存之间增加了Cache之后,便存在数据在CPU和Cache及主存之间如何存取的问题。读写各有2种方式。 贯穿读出式(Look Through) 该方式将Cache隔在CPU与主存之间,CPU对主存的所有数据请求都首先送到Cache,由Cache自行在自身查找。如果命中,则切断CPU对主存的请求,并将数据送出;不命中,则将数据请求传给主存。该方法的优点是降低了CPU对主存的请求次数,缺点是延迟了CPU对主存的访问时间。 旁路读出式(Look Aside) 在这种方式中,CPU发出数据请求时,并不是单通道地穿过Cache,而是向Cache和主存同时发出请求。由于Cache速度更快,如果命中,则Cache在将数据回送给CPU的同时,还来得及中断CPU对主存的请求;不命中,则Cache不做任何动作,由CPU直接访问主存。它的优点是没有时间延迟,缺点是每次CPU对主存的访问都存在,这样,就占用了一部分总线时间。 写穿式(Write Through) 任一从CPU发出的写信号送到Cache的同时,也写入主存,以保证主存的数据能同步地更新。它的优点是操作简单,但由于主存的慢速,降低了系统的写速度并占用了总线的时间。 回写式(Copy Back) 为了克服贯穿式中每次数据写入时都要访问主存,从而导致系统写速度降低并占用总线时间的弊病,尽量减少对主存的访问次数,又有了回写式。它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。但此时可在Cache 中设一标志地址及数据陈旧的信息,只有当Cache中的数据被再次更改时,才将原更新的数据写入主存相应的单元中,然后再接受再次更新的数据。这样保证了Cache和主存中的数据不致产生冲突。 Cache的分级体系设计 微处理器性能由如下几种因素估算: 性能=k(fⅹ1/CPI-(1-H)ⅹN) 式中:k为比例常数,f为工作频率,CPI为执行每条指令需要的周期数,H为Cache的命中率,N为存储周期数。 虽然,为了提高处理器的性能,应提高工作频率,减少执行每条指令需要的周期数,提高Cache的命中率。同时分发多条指令和采用乱序控制,可以减少CPI值;采用转移预测和增加Cache容量,可以提高H值。为了减少存储周期数N,可采用高速的总线接口和不分块的Cache方案。以前提高处理器的性能,主要靠提高工作频率和提高指令级的并行度,今后则主要靠提高Cache的命中率。设计出无阻塞Cache分级结构。 Cache分级结构的主要优势在于,对于一个典型的一级缓存系统的80%的内存申请都发生在CPU内部,只有20%的内存申请是与外部内存打交道。而这20%的外部内存申请中的80%又与二级缓存打交道。因此,只有4%的内存申请定向到DRAM中。 Cache分级结构的不足在于高速缓存组数目受限,需要占用线路板空间和一些支持逻辑电路,会使成本增加。综合比较结果还是采用分级Cache。 L1 Cache的设计有在片一级分离和统一设计两种方案。 Intel、AMD、原DEC等公司将L1 Cache设计成指令Cache与数据Cache分离型。因为这种双路高速缓存结构减少了争用高速缓存所造成的冲突,改进了处理器效能,以便数据访问和指令调用在同一时钟周期内进行。 但是,仅依靠增加在片一级Cache的容量,并不能使微处理器性能随之成正比例地提高,还需设置二级Cache。 在L1 Cache结构方面,一般采用回写式静态随机存储器(SRAM)。目前,L1 Cache容量有加大的趋势。 L2 Cache的设计分芯片内置和外置两种设计。 如AMD K6-3内置的256kB L2 Cache与CPU同步工作。外置L2 Cache,一般都要使二级Cache与CPU实现紧密耦合,并且与在片一级Cache形成无阻塞阶层结构。同时还要采用分离的前台总线(外部I/O总线)和后台总线(二级Cache总线)模式。显然,将来随着半导体集成工艺的提高,如果CPU与二级Cache集成在单芯片上,则CPU与二级Cache的耦合效果可能更佳。 由于L2 Cache内置,因此,还可以在原主板上再外置大容量缓存1MB~2MB,它被称为L3 Cache。 PC中的Cache技术的实现 PC中Cache的发展是以80386为界的。主要内容请参见“跟着CPU的脚步”一文。 目前,PC中部分已实现的Cache技术如表1所示。 结 语 目前,PC系统的发展趋势之一是CPU主频越做越高,系统架构越做越先进,而主存DRAM的结构和存取时间改进较慢。因此,Cache技术愈显重要,在PC系统中Cache越做越大。广大用户已把Cache做为评价和选购PC系统的一个重要指标。本文小结了Cache的源脉。希望可以给广大用户一个较系统的参考。