我对于缓存的一些思考(一)

112 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

这个系列将分享一下我对于“缓存”机制的一些理解与思考。

说到缓存,它在计算机里面实在是太普遍了,也可以认为它就是一种思想、一种设计理念。“缓存”这个词,可以简单地和英文中的“cache”画个等号。当然这样说可能会稍微有点不太对,因为其实中国的这些计算机专业术语、名词,都是从西方国家的通用语言——英语里面翻译过来的。先说作用,缓存的作用,顾名思义,其实就是把一些东西暂时存起来的意思。那么为什么要暂时存起来呢?我个人理解就是为了保护缓存后面的东西。那么缓存后面的东西又为什么需要保护呢?主要可能是因为访问的代价比较高。这个代价,在不同场景下分别代表着不同的东西。从OS级别来说,CPU三级cache、内存、磁盘,这些存储介质的容量是逐渐增大的、访问速度是逐渐降低的,但是单位容量的价格是逐渐降低的,这也就是为什么磁盘可以经常在JD里面见到几个T几个T的,而这样大容量的内存一般平民是用不起的(当然一般也用不到)。TLB联想寄存器,也是做缓存用的,是在页式管理系统下防止频繁缺页(page fault)现象发生而设置的结构。这里的代价其实就很容易理解,就是访问速度。我可以做逐级的访问,看到某一级没有想要的数据就访问下一级,直到找到后,每一级就将访问到的符合条件的数据给存起来,下次再用到的时候,就取出来直接用,就不需要访问到下一级结构了。为什么这种思想/机制是有效的呢?因为计算机领域里有一个非常著名的理论叫做“局部性原理”。也正是因为这个理论,缓存实际达成的效果是非常显著的。