前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >局部性原理

局部性原理

作者头像
opencode
发布2022-12-26 15:37:34
3720
发布2022-12-26 15:37:34
举报
文章被收录于专栏:知识同步

腾讯ieg一面

面试官问出这个问题时,我不知道怎么回答,所以现在整理一下

这其实涉及到概率问题,计算机中在短时间内存在重复访问某些数据或者某些内存位置的情况,而访问其他数据或者内存的次数较少,那对于常访问的数据访问概率就高,其他数据概率就低。对于概率高的数据可以集中在一片区域,并且访问的速度很快,而其他的数据就集中在速度较慢的区域。很常见的应用就是存储金字塔,越往上速度越快,存储的数据越少

image
image

局部性分类

局部性有两种基本的分类, 时间局部性 和 空间局部性 ,按Wikipedia的资料,可以分为以下五类,其实有些就是时间局部性和空间局部性的特殊情况。

时间局部性(Temporal locality):

  如果某个信息这次被访问,那它有可能在不久的未来被多次访问。时间局部性是空间局部性访问地址一样时的一种特殊情况。这种情况下,可以把常用的数据加cache来优化访存。

空间局部性(Spatial locality):

  如果某个位置的信息被访问,那和它相邻的信息也很有可能被访问到。 这个也很好理解,我们大部分情况下代码都是顺序执行,数据也是顺序访问的。

内存局部性(Memory locality):

访问内存时,大概率会访问连续的块,而不是单一的内存地址,其实就是空间局部性在内存上的体现。目前计算机设计中,都是以块/页为单位管理调度存储,其实就是在利用空间局部性来优化性能。

分支局部性(Branch locality)

  这个又被称为顺序局部性,计算机中大部分指令是顺序执行,顺序执行和非顺序执行的比例大致是5:1,即便有if这种选择分支,其实大多数情况下某个分支都是被大概率选中的,于是就有了CPU的分支预测优化。

等距局部性(Equidistant locality)

  等距局部性是指如果某个位置被访问,那和它相邻等距离的连续地址极有可能会被访问到,它位于空间局部性和分支局部性之间。 举个例子,比如多个相同格式的数据数组,你只取其中每个数据的一部分字段,那么他们可能在内存中地址距离是等距的,这个可以通过简单的线性预测就预测是未来访问的位置。

实际应用

计算机缓存

缓存数据库redis等

CDN

CopyOnWrite写时复制

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 局部性分类
    • 时间局部性(Temporal locality):
      • 空间局部性(Spatial locality):
        • 内存局部性(Memory locality):
          • 分支局部性(Branch locality)
            • 等距局部性(Equidistant locality)
            • 实际应用
              • 计算机缓存
                • 缓存数据库redis等
                  • CDN
                    • CopyOnWrite写时复制
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档