本站首页    管理页面    写新日志    退出


[基础知识]cache以及命中率
sunshine 发表于 2010/4/26 10:13:47

cache n. 高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。 Cache的出现是基于两种因素:首先,是由于CPU的速度和性能提高很快而主存速度较低且价格高,第二就是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。很显然,要尽可能发挥CPU的高速度就必须用硬件实现其全部功能。   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)算法等。这些替换算法各有优缺点,就以命中率而言,近期最少使用(LRU)算法的命中率最高。   浏览器缓存   缓存用于存储一些临时的文件。在浏览网页的过程中,网页会自动存储在用户的硬盘上。下次再浏览相同的网站的时候,系统会自动从硬盘中调出该网页,既节省了时间也减少了网络的交换。用户可以自行设定缓存方便其上网的需要。电脑中还存在高速缓冲存储器和硬盘缓存。缓存的种类:本地服务器缓存、网页缓存、硬盘缓存、一级高速缓存、二级高速缓存。 缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。   缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。   修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越大越倾向于使用swap。默认为60,可以改一下试试。--两者都是RAM中的数据。   简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。   buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。   cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能。   在计算机系统中设置Cache的一个主要目的是为了提高存储系统的速度,因此,人们最关心的一个问题就是Cache系统的加速比。  假设Cache的访问周期为TC,主存储器的访问周期Tm,则Cache系统的加速比SP(Speedup)可以定义为:    500)this.width=500'>  加速比越高,说明Cache系统的等效访问速度与Cache的速度越接近。  从这个关系式看到,Cache系统的加速比SP是命中率H和主存访问周期Tm与Cache访问周期TC比值的函数。在Cache系统中,主存储器的访问周期Tm和Cache的访问周期TC由于受所用器件的限制通常是一定。因此,要提高Cache系统的加速比SP最好的途径是提高命中率H。  从(5.5)的关系中可以看出,加速比SP与Cache命中率的关系是:当H=0.5时,加速比SP的期望值为2。当H=0.75时,加速比SP的期望值为4。当H=0.9时,加速比SP的期望值达到10。当H=1时,加速比SP达到最大值 。  加速比SP与Cache命中率H的关系如图5.33所示。由于命中率H的值一般都大于0.9,能达到0.99以上,因此,从上面的关系中可以看出,实际上Cache的加速比SP能够接近于它的最大值 。 图 5.33 Cache的加速比Sp与命中率H的关系 500)this.width=500'>   Cache的命中率H主要与如下几个因素有关:程序在执行过程中的地址流分布情况;当发生Cache块失效时,所采用的替换算法;Cache的容量;在组相联映象方式中,块的大小和分组的数目;所采用的Cache预取算法等。其中,地址流的分布情况是由程序本身决定的,系统设计人员一般无能为力。块替换算法,已经在上一节中已经介绍过。Cache预取算法将在下面的另外一节中专门介绍。以下,对影响Cache命中率的另外几个因素作简单的分析。  1、Cache命中率与容量的关系  Cache的命中率随它的容量的增加而提高,它们之间的关系曲线如图5.34所示。在Cache容量比较小的时候,命中率的提高得非常快,随着Cache容量的增加,命中率提高的速度逐渐降低。当Cache容量增加到无穷大时,命中率可望达到100%,但是,这在实际上是做不到的。 图 5.34 Cache命中率与容量的关系 500)this.width=500'>   在一般情况下,图5.34中的关系曲线可以近似地表示为H=1-S-0.5。因此,当Cache的容量达到一定值之后,再增加Cache容量,命中率的提高很少。  2、Cache命中率与块大小的关系  在采用组相联映象方式的Cache中,当Cache的容量一定时,块的大小对命中率的影响非常敏感。图5.35表示随着Cache块的由小到大的变化,命中率上升和下降的情况。 图 5.35 Cache命中率与块大小的关系 500)this.width=500'>   开始时,块大小很小,例如只有一个存储单元,这时的命中率H很低。随着块大小的增加,由于程序的空间局部性起作用,同一块中数据的利用率比较高,因此,Cache的命中率增加。这种增加趋势在某一个最佳块大小处达到最大值。在这一点以后,命中率随着块大小的增加反而减小。  实际上,当块大小非常大时,进入Cache中的许多数据可能根本用不上。而且,随着块大小的增加,程序时间局部性的作用就会逐渐减弱。最后,当块大小等于整个Cache的容量时,命中率将趋近于零。  3、Cache命中率与组数的关系  当Cache的容量一定时,在采用组相联映象和变换方式的Cache中,分组的数目对于Cache命中率的影响是很明显的。随着组数的增加,Cache的命中率要降低。当组数不太大时,例如,512组以下,命中率的降低相当少,当组数超过一定数量时,命中率的下降非常快。  由于在组相联映象方式中,组间是采用直接映象方式的,只有组内采用全相联映象方式。当分组的数目增加时,主存中的某一块可以映象到Cache中的块数就将减少,从而导致命中率下降。

阅读全文(3679) | 回复(0) | 编辑 | 精华

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

  公告

有一种鸟儿是永远关不住的
因为它的每片羽翼上都沾满了自由的光辉

方向:计算机视觉 人工智能 演化算法

 


  我的分类(专题)
  最近日志

  最新评论

  留言板

  链接

  Blog信息
blog名称:阳光海岸心
日志总数:166
评论数量:237
留言数量:-4
访问次数:1450773
建立时间:2006年6月2日



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144755825 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号