高速缓存(cache)存储器:
这里先说明一下(高速缓存)cache和(高速缓冲)buffer的区别:
buffer主要作用是在一定程度上减少对IO设备访问的次数,可以起到流量整形的作用,也提升了系统的性能,毕竟IO操作和内存和cpu的处理速度差距还是很大的,比如下载一个文件,是积攒到一定量才写回磁盘,而不是下载一个字节写回一个字节,这样过不了多久,磁盘就损坏了。
cache主要作用是缓解处理数据的两端速度不匹配这种情况带来的时间上的浪费,这样做就加快了访问速度。比如大家都知道的cpu和内存之间的速度差异就特别大,所以需要cache缓存数据,以便提高速度。
总之一句话,buffer主要解决了空间上的问题,而cache主要解决了时间上的问题。
众所周知,寄存器和内存之间读写速度的差距是很大的,而内存和磁盘之间的读写速度差距也很大。当内存需要传数据给寄存器,假如有这样一个读写速度处于寄存器和内存之间的东西,可以帮忙存储内存要传的数据,然后再把这些数据传给寄存器,这样不就提高了速度了吗。高速缓存存储器就是这样一个东西,在两端读写速度差距很大时,就插入一个高速缓存存储器,这样的思想就形成了存储器层次结构。引用《CSAPP》书中的图:
而图中每一层都是下一层的缓存,也就是说,层次结构的每一层都缓存来自较低一层的数据。
接下来介绍块的概念,缓存存储器是分块的,数据总是以块为基本单位在每一层之间传递,块的大小只在相互传递的两层之间是相同的,并且一般是越位与底层的块大小越大,这样就弥补了底层存储器每次访问的所花销的大量的时间。
数据是缓存好了,但是不一定缓存的数据就是需要的数据。