【问题标题】:Does data pass through cache(L3,L2,L1) from RAM before processing it?数据在处理之前是否从 RAM 中通过缓存(L3、L2、L1)?
【发布时间】:2016-07-15 09:24:04
【问题描述】:

我一直在阅读有关缓存的内容,并在此处从 Quora 找到了一个有趣的答案

Cache memory (L1,L2,L3)

但是在这里我有点困惑,如果 CPU 想要处理来自 RAM 的数据,那么它是否像这样通过:

CPU

或者指令直接通过内存总线传给寄存器?

【问题讨论】:

  • 我建议你看看这个问题:programmers.stackexchange.com/questions/44731/…
  • 感谢@PatrickTrentin,但现在我更加困惑,因为缓存也有数据和指令缓存等类型,而且仍然不清楚数据是否通过缓存移动......?
  • 一般来说,数据和指令都会在可能的情况下通过缓存移动,在某些情况下它们的缓存是分开的,而在另一些情况下则是统一的。如果你用谷歌搜索的话,网上有很多参考资料。 :)
  • @PatrickTrentin .. 是的,我用谷歌搜索并阅读了一本操作系统的书,现在我认为可能是 CPU 第一次从 RAM 读取数据,然后将其存储到缓存内存中,这是经常需要的访问速度更快。并且存储该数据/指令取决于可能是 Caches(L1,..) 的大小,但优先级肯定是 L1,但我所写的只是猜测我不确定。你怎么看?

标签: caching memory-management operating-system


【解决方案1】:

缓存的定义是它是一种内存结构,它比它下面的内存具有更低的延迟(更快)。除此之外,您可以以任何方式设计缓存系统。例如,当从主存加载数据块时,它可以加载到缓存层次结构的所有级别,然后将该块的请求部分加载到寄存器中。确切的细节取决于微架构。另外,指令缓存和数据缓存可以有不同的策略。

【讨论】:

  • 是的,你是对的,如果 CPU 首先需要来自地址的指令,它会检查缓存内存(通过所有级别),如果没有找到它会转到主内存那个指令,然后那个指令字也会被传递到 CPU 和高速缓存,对吧?我的意思是这是一个概念,再次取决于你所说的架构:)
  • 我认为这个答案描述了“包容性缓存”;也可能存在“独占高速缓存”,其中高速缓存行只能出现在单个高速缓存级别中。或者我想我在 Ulrich Drepper 2007 年的论文 (P.16) 中读到了类似的内容。
  • @wil 我没有明确提到包容性缓存。尽管包容性缓存很常见。我只是举个例子。答案中最重要的部分是“这是一个特定于设计的方面”。
  • @wil 还有一些既不包含也不排斥的缓存。有很多很多的选择。
  • 感谢您的精确,我还不完全理解这些定义。我也不知道所有可能的架构。
猜你喜欢
  • 2020-05-19
  • 2014-07-04
  • 1970-01-01
  • 2017-03-10
  • 2011-12-18
  • 2018-01-08
  • 2013-10-03
  • 2014-02-16
  • 1970-01-01
相关资源
最近更新 更多