gpt4 book ai didi

cpu - 缓存行大小背后的理论和测量是什么?

转载 作者:行者123 更新时间:2023-12-01 02:01:05 27 4
gpt4 key购买 nike

缓存行通常是 64 字节 ,其他尺寸也存在。

我非常简单的问题是:有没有理论 这个数字的背后,还是只是海量的结果测试和测量 那背后的工程师无疑是做什么的?

无论哪种方式,我都想知道那些(理论,如果有的话,以及决定背后的各种测试)是什么。

最佳答案

一般来说,微架构参数倾向于通过性能建模而不是某种理论模型来调整。也就是说,没有像“大 O”这样用来表征算法性能的东西。相反,基准测试是使用性能模拟器运行的,这用于指导最佳参数的选择。

话虽如此,缓存行大小在已建立的架构中会相当稳定有几个原因:

  • 大小是 2 的幂:为了简化寻址,行大小应该是 2 的幂,因此这限制了缓存行大小的可能选择数量。
  • 软件根据缓存参数优化 :许多微架构参数对程序员完全隐藏。但是高速缓存行大小是可见的,并且会对某些应用程序的性能产生重大影响。一旦程序员针对 64 字节缓存线大小优化了他们的代码,那么处理器架构师就有动力在 future 的处理器中保持相同的缓存线大小,即使底层技术发生了变化,使得不同大小的缓存线更容易在硬件中实现。
  • 缓存一致性与缓存行交互 :缓存一致性协议(protocol)的验证非常困难,缓存一致性是处理器中许多错误的来源。一致性在高速缓存行级别进行跟踪,因此更改高速缓存行将需要重做一致性协议(protocol)的所有验证步骤。所以需要有强烈的动机来改变这个参数。
  • 更改高速缓存行大小可能会引入错误共享 : 这是软件根据缓存参数优化的一个特例,但我觉得值得一提。并行程序很难以实际提供性能优势的方式编写。由于数据以高速缓存行粒度进行跟踪,因此避免false sharing 很重要。 .如果高速缓存行大小从一代处理器更改为另一代,这可能会导致新处理器中的错误共享,而旧处理器中不存在。

  • 尽管 64 字节是用于 x86 和大多数 ARM 处理器的行大小,但还有其他行大小正在使用中。例如,MIPS 有许多具有 32 字节行大小的处理器,还有一些具有 16 字节行大小的处理器。

    线路大小在一定程度上进行了调整,以便为架构预期运行的工作负载提供最佳性能。然而,一旦选择了线长,并且已经为架构编写了大量软件,那么由于我上面列出的原因,线长在 future 不太可能改变。

    关于cpu - 缓存行大小背后的理论和测量是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36312908/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com