从Cache引发的关于延迟的思考

南宫理的日志录 2024-09-10 18:22:12
0、结论

1、Cache最早是作为硬件被引入的,主要是为了突破“冯诺依曼瓶颈”,缓解CPU与主存储器之间的速度差异,继而逐步演变并应用于各种层次的存储体系中;

2、Cache的引入可以在一定程度上代表技术自身对于更高更快更远的执着的追求;

3、Cache技术在解决性能问题的同时,带来了一致性与复杂性的问题,怎么更好地权衡取舍;

4、在更本质的层面上,延迟是否必须不断被缩小,是否因为我们始终把延迟当做了负面的存在,才变得越发急功近利,“给文明以岁月,给岁月以文明”……

1、再看分级存储体系

在冯诺依曼体系中,CPU能够直接读取操作的数据,要么在寄存器中,要么是存储在主存也就是内存中。但是寄存器的数量是有限的,所以CPU大部分场景下还是需要从主存来读写数据。但是主存的速写速度依然无法跟上CPU的处理速度。所以,早期冯诺依曼体系的瓶颈在于CPU与主存的速度的差异,CPU处理速度即使能够持续提升,但是主存的读写速度无法提升的话,整体的处理速度依然无法得到有效的提升。

主存有瓶颈,理所当然的就会想到引入更快的存储介质,比如SRAM,所以,最早的Cache是以硬件的形式被引入到分级存储体系中,用于尽量弥合CPU与主存之间速度的差异。

如果Cache技术能够弥合CPU与主存之间的速度差异,我们自然而然会想到,能否应用于内存与外存,甚至于外存于分布式存储之间的速度差异,从而更进一步提升性能?

2、关于Cache技术的演进

任何决策和解决方案,推而广之,一定是在追求在一定约束条件下的最优解。所谓约束条件,更多的是资源、成本的约束,反而不是技术实现的约束。而关于最优解的探求,我们的目标一定是全局最优解,但是很多情况下,并不现实,同样是各种可见、不可见的约束的共同作用下,最终我们得到的只能是可接受的局部最优解。

决策的前提,一定是有得选,而决策的智慧,则更多的体现在综合各种权衡取舍下所做出的选择。

回到前面提到的问题,Cache技术自然可以推而广之,应用到各个层级间速度差异的弥合,只是考虑到“不可能三角”的存在,这种早期的Cache硬件被不断软化、理念化。

内存与外存之间,内存足够大,本身可以开辟空间作为对于外存的Cache装置;

外存与分布式存储之间,本地的外存足够大,网络中其他节点存储的本地化,降低了网络传输的延迟,从而体现了Cache的理念。

3、关于Cache多一点思考反向思考下的虚拟内存

再回到分级存储结构中,我们这次抛开提升速度的执念。

上层的存储结构速度快,但是成本高,所以存储空间小;下层的存储结构速度虽然慢,但是成本低,所以存储空间可以再大更大……

Cache技术的引进,在于更大地发挥上层存储结构的速度优势,那么我们反向思考一下,有没有可能更大地发挥下层存储结构的空间优势,虚拟存储技术应运而生。

Cache技术是把热数据尽可能提前驻留在上层存储中,虚拟内存技术则是利用分时复用的思考,把冷数据置换到下层存储中。

内存可以作为外存的Cache,外存可以作为内存的虚拟扩展。基于此,我们可以对问题导向的思考与工具导向的思考,多了一些新的认识。只要能够解决问题,外存可以不只是外存,扩展开来看,如果问题是枚钉子,我们何必纠结于找到一把锤子,板砖,或者其他手头可以用来敲击的,都可以是锤子……

一分为二看问题

回看一下Cache技术理念的发展:

1960年代,最早的Cache概念出现在当时的计算机设计中,目的只是缓解主存储器与CPU处理速度的差异;

1970年代,随着集成电路技术的发展,Cache被广泛应用于商业计算机中;

1980年代至今,Cache技术不断发展,软件化、理念化,包括多级缓存(L1、L2、L3)、写策略、替换算法等

Cache技术如今已经被广泛应用于CPU缓存、网页缓存、数据库缓存、文件系统缓存、以及分布式系统的缓存中,明显提升数据访问的速度,减少了延迟,降低了硬件资源不断垂直扩展的压力。

很多时候,所谓的“双全法”、“万全之策”,都只停留于想象之中。旧问题解决方案的土壤中,必然绽放出新问题的花朵。

Cache技术的应用带来的新问题,一方面是数据一致性的问题,缓存数据与数据源的不一致,必然带来数据同步的问题,在一些场景下,我们甚至放弃了强一致性,弱一致性、最终一致性似乎也变得可以接受;另一方面,上层Cache空间必然远远低于下层存储结构,缓存空间的管理、缓存数据的更新替换策略、失效机制,Write Through和Write Back策略的选择,必然引入更多的复杂性。

最终,还是要回归到决策的智慧上,成本与性能的权衡取舍、性能与可靠性的权衡取舍,需要决策者结合实际应用场景的分析,再来细细思量。

4、技术之外的人文思考

在面对可行性分析中,我们似乎更关注了可能性,而忽视了必要性。

科技自诞生之日起,就一刻不停地向着更高、更快、更远奔跑,追求着一波又一波的技术爆炸。在新技术的驱使下,越来越多的不可能,变成了可能,然后变成了必然。

但是,人类社会的发展从来就不只是技术,也不应该单单是技术。从进化论的观点来思考,亿万年的进化历程中,唯一的成功鸡汤从来都是“适者生存”,而不是“强者生存”。

所以,在考虑引入或应用一项新技术时,我们首先需要思考的是,我知道这项技术很牛,但是有必要吗?现有的技术是否已经够用了?须知“过犹不及”!

回到最开始的地方,我们再来看看被Cache一直针对、唯恐灭之不及的“延迟”,是否一定是负面的,应该被消灭或者能够被消灭?

延迟的背后是时间,时间是世间唯一绝对公平的尺度、资源,不以任何人的意志为转移。

我们敌视延迟的背后,似乎是自己变得越发浮躁、越发急功近利,追求特效药、最佳实践,希望立竿见影……

但是,任何美好的事物,都需要时间来酝酿、沉淀、发酵。越是浮躁的当下,我们越需要回归到内心的平静,努力之后,静待好事发生的平静。

以《三体》中的那句充满辩证意味的话来结尾:

“给岁月以文明,给文明以岁月”

5、参考文献

1、《数据库系统实现(第2版)》

2、《第五项修炼》

3、《三体2 黑暗森林》

0 阅读:28