有关cache存储器

Cache存储器是多层存储概念的更深拓展。它的特点是容量小、价格高、速度快。Cache位于CPU和内存之间,是一种极快的存储缓冲区。

 

Cache包含一个地址的列表以及它们的内容。随着处理器不断引用新的内存地址,Cache的地址列表也一直处于变化中。所有对内存的读取和写入操作都要经过Cache.当处理器需要从一个特定地址提取数据时,这个请求首先递交给Cache。如果数据已经存在于Cache,它就可以立即被提取。否则,Cache将向内存传递这个请求,进而进行缓慢的内存访问操作。

 

Cache一般有两种类型:全写法(同步更新)和写回法(延迟更新,效率更高)。

 

Cache和虚拟内存一样,对应用程序员都是透明的。但Cache的思想无处不在,是构建(开发)高效率程序所必须考虑的。Cache对程序性能的提高主要得益于两个特性:时间局部性和空间局部性。时间局部性是指刚刚访问的数据在未来一段时间内很有可能被再次访问,空间局部性是指刚刚访问数据“附近”的数据很有可能很快被访问。因此,对于程序的编写者而言,即使Cache对我们是透明的,我们也应该有意识的编写cache-friendly(也就是时间局部性和空间局部性都优良的程序)。

 

当然,高级的编译器可能会对我们写的局部性不是那么良好的程序做一定程度的优化,有些库函数(例如memcpy)也会对特定的操作针对cache进行特定的优化,但编译器以及库函数都不是万能的,更多的时候会显得非常的dump,除此之外,在大型软件中,cache的思想也是无处不在。因此,我们写程序时需要有意识的让cache时刻缓存在我们的头脑之中。

你可能感兴趣的:(深入理解计算机系统)