4.1 缓存

让我们从一个无处不在的概念开始:缓存。

互联网可以被看作巨大的数据存储设施。你可以访问它任意一部分的数据,但每次你发起数据获取请求的延迟却是不可忽视的。为了使你的浏览体验更为平滑,web 浏览器会对页面和其元素(图片,css 样式表等等)进行缓存。通过这种方式来避免一遍又一遍地对同一份数据进行下载。换句话说,浏览器将数据在硬盘或者内存中进行本地存储,以对数据访问进行加速。不过下载整个因特网的内容到本地是不可能的,毕竟本地计算机的存储资源是非常有限的。

硬盘相比内存来说,空间要大很多,但同时访问也慢很多。这也就是为什么一般在把数据加载到内存中时硬盘的任务一般也就完成了的原因。因为主存对于外部存储来说就是一种缓存。

但实际上磁盘内部也有自己的缓存...

在 CPU 的晶体上同样存在几个不同级别的数据缓存(一般是三级:L1,L2,L3)。这些缓存的大小要比主存小得多。另外,CPU 拥有至少一个指令缓存(一个存储指令的队列)和一个 TLB(Translation Lookaside Buffer 来提升虚拟内存的性能。

寄存器相比缓存访问速度则更加的快(和小),所以实际上寄存器也可以认为是独立的缓存。

为什么缓存的场景无处不在呢?信息系统并不需要对其性能级别提供严格保证,引入缓存往往会降低平均访问时间(从请求到响应的时间)。而使这样的系统正常运转我们需要我们的老朋友“局部性”:每时每刻我们都只需要访问一小部分的数据。

虚拟内存的策略可以允许我们使用物理内存作为程序代码块和数据块的缓存。

results matching ""

    No results matching ""