首页 > 编程知识 正文

高速缓存指的是什么,一致性原理

时间:2023-05-06 05:11:21 阅读:152847 作者:1836

我一直坚持以浅显的方式发表文章,所以时间线是一个很好的阅读顺序。 但文章与日俱增,部分读者可能喜欢阅读自己感兴趣方向的文章。 因此,为了方便大家,有必要引入索引。

首先介绍了缓存的基本原理,以及硬件如何缓存和检索数据。 这是基本的入门。 smcdef:Cache的基本原理zhuanlan.zhihu.com

以下文章将解答缓存基本原理中引入的问题。 从代码的角度考虑缓存是如何影响我们代码的执行的。 smcdef:Cache对代码的影响砖局域网. zhi Hu.com

对缓存已经有一定的了解,也了解缓存的基本原理。 但是,缓存搜索命中时,使用虚拟地址还是物理地址? 另外,缓存可能存在别名和歧义问题,操作系统如何解决这些问题? smcdef:Cache组织方式zhuanlan.zhihu.com

经过上一篇文章的洗礼,我知道了缓存的各种设计方法。 然后,知道了虚拟地址和物理地址对缓存设计的影响。 还引入了新的问题,即MMU在将虚拟地址转换为物理地址时使用特殊的缓存TLB。 认识TLB的原理,以及TLB的模糊性和别名问题。 smcdef:TLB原理zhuanlan.zhihu.com

从那一刻起,我真正了解了CPU和缓存之间交互的基本原理,以及可能出现的问题。 但是,在大多数情况下,系统中除了CPU以外还存在DMA等控制器。 接下来,我们将讨论缓存和DMA的一致性。 smcdef:Cache和DMA一致性zhuanlan.zhihu.com

以上DMA的一致性问题就是其中之一,我们必须面对其他的一致性问题。 我们的缓存不仅有数据缓存(dCache ),还有指令缓存(dCache )。 因此,也有必要考虑dCache和iCache之间的一致性问题。 smcdef:iCache和dCache一致性Zhan.zhi Hu.com

前面的一系列文章基本上都在考虑单核场景。 从现在开始,欢迎来到多核世界。 多个CPU之间也同样存在一致性问题。 对于这样的问题,我们是怎么解决的呢? smcdef :多核Cache一致性zhuanlan.zhihu.com

了解多核cacheconsistencyprotocolmesi后,可能会对原子操作的硬件实现产生新的想法。 用硬件实现原子操作时,能用MESI协议轻松实现吗? smcdef:atomic的实现原理zhuan.zhi Hu.com

到此为止,Cache一致性问题似乎已告一段落。 您还了解了缓存数据如何在多核之间传播,以及MESI协议如何确保Cache的一致性。 然而,随着多核的引入,我们面临着一个新的问题——伪共享。 smcdef :伪共享砖LAN.zhi Hu.com

在掌握了足够的缓存知识之后,作为软件工程师的我们如何对Cache进行特定的代码优化呢? 以spinlock的实现为例,一步一步地优化到最后。 smcdef:spinlock前世Zhan.zhi Hu.com

就像spinlock的进化史一样,软件工程师会充分优化自己的代码以提高性能。 同样,我们在硬件工程方面也不甘示弱,设计硬件以获得最高性能。 部署缓存是为了降低内存访问延迟,但硬件工程师仍然不能满足缓存延迟的要求。 为了进一步提高内存访问速度,硬件引入了新的缓存- store buffer。 随着store buffer的引入,软件工程师对代码执行流的认识得到了完全更新。 到目前为止考虑的一致性问题是缓存一致性的问题,今后面临的问题是内存一致性的问题。 smcdef :内存完整性模型- tso zhawn.zhi Hu.com

我们第一次碰的内存模型时TSO,这是最简单的模型。 随着store buffer没有按照FIFO顺序更新Cache,我们提出了新的内存模型PSO。 smcdef :内存完整性模型-PSO zhuanlan.zhihu.com

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。