高速缓存与一致性

摘:https://zhuanlan.zhihu.com/p/136300660
知乎上大神smcdef的专栏文章,讲解和配图都很详细贴切。

我一直坚持由浅入深的方式发布文章,因此时间线就是很好的阅读顺序。但是文章日益增多,或许部分读者喜欢阅读自己感兴趣方向的文章。因此,为了方便大家,有必要引入一个索引。

  • Cache的基本原理
    首先是介绍高速缓存的基本原理,硬件是如何缓存和查找数据,这是个基础入门。
    https://zhuanlan.zhihu.com/p/102293437
    在这里插入图片描述

  • Cache对代码的影响
    针对高速缓存基本原理中引入的问题,在下篇文章中解答。从代码的角度考虑高速缓存是如何影响我们代码的运行。
    https://zhuanlan.zhihu.com/p/102326184
    在这里插入图片描述

  • Cache组织方式
    我们对高速缓存已经有了一定的认知,也明白高速缓存的基本原理。但是在高速缓存查找命中时使用的是虚拟地址还是物理地址?另外,高速缓存可能存在别名和歧义问题,操作系统是如何解决这些问题?
    https://zhuanlan.zhihu.com/p/107096130
    在这里插入图片描述

  • TLB原理
    经过上篇文章的洗礼,我们明白了高速缓存的不同设计方式。并且知道了虚拟地址和物理地址对高速缓存设计的影响。同时引入一个新的问题,MMU转换虚拟地址到物理地址时也使用了一块特殊的高速缓存TLB。下面认识下TLB的原理,以及TLB的歧义和别名问题。
    https://zhuanlan.zhihu.com/p/108425561
    在这里插入图片描述

  • Cache和DMA一致性
    从这一刻起,你已经真正的了解了CPU和高速缓存之间交互的基本原理,以及可能遇到问题。但是系统中往往除了CPU以外还存在其他控制器,例如DMA。接下来将带你了解高速缓存和DMA之间的一致性问题。
    https://zhuanlan.zhihu.com/p/109919756
    在这里插入图片描述

  • iCache和dCache一致性
    以上DMA一致性问题只是其一,我们还要面对其他的一致性问题。我们的高速缓存不但有数据高速缓存(dCache)还有指令高速缓存(iCache)。因此dCache和iCache之间的一致性问题也需要思考。
    https://zhuanlan.zhihu.com/p/112704770
    在这里插入图片描述

  • 多核Cache一致性
    前面的一系列文章我们考虑的基本都是单核场景。从现在开始,欢迎来到多核世界。多个CPU之间也同样存在一致性问题。而针对这种问题,我们又是如何解决的呢?
    https://zhuanlan.zhihu.com/p/115114220

  • atomic实现原理
    了解了多核cache一致性协议MESI后,或许我们对原子操作的硬件实现有了新的想法。硬件实现原子操作时,是否可以借助MESI协议简单实现呢?
    https://zhuanlan.zhihu.com/p/115355303

  • 伪共享
    到这里,似乎Cache一致性问题告一段落。并且我们也明白了高速缓存的数据是如何在多核之间传递,MESI协议又是如何保证Cache一致性。但是,随着多核的引入,也让我们面对了新的问题 - 伪共享。
    https://zhuanlan.zhihu.com/p/124974025
    在这里插入图片描述

  • spinlock前世今生
    当我们掌握了足够的高速缓存相关知识后,作为软件工程师的我们又是如何针对Cache对代码做特定的优化呢?我们以spinlock的实现为例,一步步优化到底。
    https://zhuanlan.zhihu.com/p/133445693
    在这里插入图片描述

  • 内存一致性模型-TSO
    就像spinlock的进化史,软件工程师会对自己的代码做足够的优化以提高性能。同样,硬件工程也不甘示弱,尽最大的努力设计硬件以获取最大性能。我们引入高速缓存的目的就是为了降低内存访问的延迟,谁知硬件工程师依然不满足高速缓存带来的延迟。为了进一步加快内存访问速度,硬件引入了新的缓存 - store buffer。随着store buffer的引入,彻底刷新了软件工程师对代码执行流的认知。我们之前考虑的一致性问题属于高速缓存一致性考虑的范畴,接下来面临的问题属于内存一致性范畴。
    https://zhuanlan.zhihu.com/p/141655129
    在这里插入图片描述

  • 内存一致性模型-PSO
    我们第一次接触的内存模型时TSO,这是最简单的一种模型。随着store buffer不以FIFO次序更新Cache之后,我们提出了新的内存模型PSO。
    https://zhuanlan.zhihu.com/p/143297327

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ScilogyHunter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值