学过计算机底层原理、了解过很多架构设计或者是做过优化的同学,应该很熟悉局部性原理。即便是非计算机行业的人,在做各种调优、提效时也不得不考虑到局部性,只不过他们不常用局部性一词。如果抽象程度再高一些,甚至可以说地球、生命、万事万物都是局部性的产物,因为这些都是宇宙中熵分布布局、局部的熵低导致的,如果宇宙中处处熵一致,有的只有一片混沌。
所以什么是局部性?这是一个常用的计算机术语,是指处理器在访问某些数据时短时间内存在重复访问,某些数据或者位置访问的概率极大,大多数时间只访问局部的数据。基于局部性原理,计算机处理器在设计时做了各种优化,比如现代 CPU 的多级 Cache、分支预测…… 有良好局部性的程序比局部性差的程序运行得更快。虽然局部性一词源于计算机设计,但在当今分布式系统、互联网技术里也不乏局部性,比如像用 redis 这种 memcache 来减轻后端的压力,CDN 做素材分发减少带宽占用率……
局部性的本质是什么?其实就是概率的不均等,这个宇宙中,很多东西都不是平均分布的,平均分布是概率论中几何分布的一种特殊形式,非常简单,但世界就是没这么简单。我们更常听到的发布叫做高斯分布,同时也被称为正态分布,因为它就是正常状态下的概率分布,但这个也不是今天要说的。
局部性分类
局部性有两种基本的分类,时间局部性和空间局部性 ,可以分为以下五类,其实有些就是时间局部性和空间局部性的特殊情况。
时间局部性 (Temporal locality)
如果某个信息这次被访问,那它有可能在不久的未来被多次访问。时间局部性是空间局部性访问地址一样时的一种特殊情况。这种情况下,可以把常用的数据加 cache 来优化访存。
空间局部性 (Spatial)
如果某个位置的信息被访问,那和它相邻的信息也很有可能被访问到。 这个也很好理解,我们大部分情况下代码都是顺序执行,数据也是顺序访问的。
内存局部性 (Memory)
访问内存时,大概率会访问连续的块,而不是单一的内存地址,其实就是空间局部性在内存上的体现。目前计算机设计中,都是以块 / 页为单位管理调度存储,其实就是在利用空间局部性来优化性能。
分支局部性 (Branch)
这个又被称为顺序局部性,计算机中大部分指令是顺序执行,顺序执行和非顺序执行的比例大致是 5:1,即便有 if 这种选择分支,其实大多数情况下某个分支都是被大概率选中的,于是就有了 CPU 的分支预测优化。
等距局部性 (Equidistant)
等距局部性是指如果某个位置被访问,那和它相邻等距离的连续地址极有可能会被访问到,它位于空间局部性和分支局部性之间。 举个例子,比如多个相同格式的数据数组,你只取其中每个数据的一部分字段,那么他们可能在内存中地址距离是等距的,这个可以通过简单的线性预测就预测是未来访问的位置。
然而,局部性并非只属于计算机,它在社会、个体乃至宇宙层面都有着深刻的映射。
局部性在生活与生产中的映射
1. 动机的局部性
人的行为往往延续已有的兴趣与习惯。你如果刚读过一本人工智能的书,短时间内更可能继续沉浸在相关的论文与讨论中,而不是突然转向古典音乐。公司内部的分工同样如此:一个人一旦承担某类任务,往往会在未来被继续安排到类似的角色。这正是“时间局部性”的人类映射。
2. 路径依赖的局部性
社会与组织的发展存在“路径锁定”。企业若押注某个战略,即使环境变化,也会在相当长时间维持惯性。个人职业选择同样如此,哪怕转行,过往积累的技能与人脉依然强烈约束着新的道路。这正如“空间局部性”:一旦进入某片区域,访问最容易延伸到它的邻近区域。
3. 社会行为的局部性
人类的社交圈集中在少数几人,日常活动范围也通常局限于“家—公司—商圈”。这种高度集中,正对应着“内存局部性”:我们的行为不可能均匀分布在整个城市,而是集中在有限的连续区域。
4. 决策与偏好的局部性
电商平台通过你的一次购买推测下一次可能的选择;影视平台通过你的一次观看预测你下一次的兴趣。这里的推荐算法,本质上就是利用“分支局部性”与“等距局部性”:我们的选择并非完全随机,而是遵循可预测的模式。
5. 局部性与熵
更深层地说,局部性是熵增世界中“低熵岛”的体现。宇宙若完全均匀,只有一片混沌;而局部的能量差、资源聚集,才孕育出星球、生命与文明。人类城市的集中、个体兴趣的聚焦,正是宇宙中“局部有序”的延续。换言之,局部性是熵增世界里的抵抗力量。
对抗局部性:混沌与创新的风险
局部性塑造了效率与秩序,但若一味遵循,也会导致僵化与锁定。因此,许多创新、突变、乃至革命,往往源自“对抗局部性”。
1. 在计算机系统中
当程序刻意打破局部性,后果是灾难性的:
随机访问导致 Cache Miss 激增,性能骤降;
分支完全随机,分支预测失效,流水线被迫频繁清空;
若没有就近访问的分布式局部性,网络延迟和带宽成本指数上升。
在计算机中,对抗局部性 = 效率崩塌。
2. 在社会与个体中
个体若强行跳脱兴趣或职业积累,短期效率极低,学习成本巨大。企业若频繁更换战略方向,看似灵活,实则资源浪费、团队失信。国家若彻底平均化资源分布,不考虑区域优势,反而降低整体效率。社交若完全随机,则信任成本陡升,协作困难。
社会层面上,对抗局部性 = 效率牺牲,换取公平或创新。
3. 在哲学与抽象层面
对抗局部性意味着离开已知的“高频区”,进入概率稀薄的“低频区”。它打破了秩序的惯性,带来更多的不确定性与熵的回归。
好的一面:避免路径锁定,孕育艺术创新与科学革命;
坏的一面:高昂代价、效率损失、混沌风险。
哲学上可以说:局部性是秩序的来源,而反局部性是混沌的来源。创新与毁灭,往往并生于此。
结语:张力中的平衡
局部性给予我们效率、秩序与安全感,而对抗局部性则打开混沌、风险与创造力的大门。人类的文明史,正是在这两种力量的拉扯中前进:既依赖局部性的稳定以维持社会运转,又不断通过反局部性的跃迁突破既有格局。
局部性是文明的惯性引擎,而反局部性是文明的突变按钮。 秩序与混沌之间的张力,正是推动世界演化的真正动力。