cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。
Cache由标记存储器和数据存储器两个基本部分组成。标记存储器是用来储存Cache的控制位与块地址标签,控制位用于管理Cache的读写操作,而块地址标签则记录着Cache中各块的地址。这个地址包含了与主内存映射的块地址,并且都与Cache中的一块“数据”相对应。而这块“数据”正是贮存于Cache的数据存储器中。
当CPU读取数据时,先通过地址总线把物理地址送到Cache中,与Cache中的块地址标签进行对比。若相符合,则表示此数据已经存在于Cache中(此情况被戏称为“命中”),这时只需把Cache中的对应数据经由数据总线直接传送给CPU即可。但如果CPU送来的物理地址无法与Cache中的块地址标签相符,则表明这一数据不在Cache中(称为“失误”),这时,需要由主内存把CPU所需的数据地址拷贝到Cache中,再由Cache把数据传送给CPU。
从这个过程我们可以看到,若CPU读取“命中”,存取速度确实可以提高许多,但如果“失误”,则Cache的存在反而减慢了CPU的读取速度。因此,采用何种技术和方法提高读写命中率、减少失误率,就成了Cache设计的关键。加大Cache的容量当然可以提高命中率,但因成本问题,Cache不可能无限增大,但可以通过采用适当的映射方式和块替代方式来提高命中率。
知识拓展
Cache中的映射方式数据如何与主内存中的数据相对应的问题。映射方式通常有以下三种:
1.直接映射
如果主内存上的块只能映射到Cache中的特定块,我们称这种映射方式为直接映射。直接映射的存取速度最快,但失误率也最高。
2.完全映射
在这种映射方式下,主内存上的块可以映射到Cache的任意块之中,当CPU欲读取某一个块时,Cache会把CPU送来的地址与Cache中的所有地址标签进行对比。由于是完全对比,因此存取时间最长,但失误率也最低。
3.结合映射
这种映射方式是把Cache分成若干个页面,每个页面会有相同数目的块。主内存中数据块可以映射到Cache中指定页面的任一块中。这种映射方式可以看成是直接映射与完全映射的折衷,是效率最高的映射方式。
cache的作用有三个:预读取、写入、临时存储。缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。
1.预读取。当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高),当需要读取下一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于缓存的速率远远高于磁头读写的速率,所以能够达到明显改善性能的目的。
2.写入。当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上。
虽然对于写入数据的性能有一定提升,但也不可避免地带来了安全隐患——数据还在缓存里的时候突然掉电,那么这些数据就会丢失。对于这个问题,硬盘厂商们自然也有解决办法:掉电时,磁头会借助惯性将缓存中的数据写入零磁道以外的暂存区域,等到下次启动时再将这些数据写入目的地。
3.临时存储。有时候,某些数据是会经常需要访问的,像硬盘内部的缓存(暂存器的一种)会将读取比较频繁的一些数据存储在缓存中,再次读取时就可以直接从缓存中直接传输。缓存就像是一台计算机的内存一样,在硬盘读写数据时,负责数据的存储、寄放等功能。
这样一来,不仅可以大大减少数据读写的时间以提高硬盘的使用效率。同时利用缓存还可以让硬盘减少频繁的读写,让硬盘更加安静,更加省电。更大的硬盘缓存,你将读取游戏时更快,拷贝文件时候更快,在系统启动中更为领先。
工作原理:
缓存的工作原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。
正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在CPU缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。
以上内容参考:百度百科-缓存