缓存未命中时间是否会否决直接从 ram 访问数据所花费的时间

Doesn't a cache miss time overrule the time taken to directly access the data from ram

假设有一台计算机有三个缓存的L1,L2(处理器内部)和L3(cpu外部)和一个RAM。
现在假设 CPU 需要访问数据 "ABC" 进行某些操作,这在 RAM 中绝对可用,但由于体系结构 -

CPU 将首先检查 L1 缓存中的 "ABC",例如找不到它的地方(因此缓存未命中 --> 一些时间浪费在检查上),
然后检查 L2 缓存并再次检查数据未找到(再次缓存未命中 --> 浪费了一些时间),类似地检查了 L3 并且未找到数据(缓存未命中 --> 再次浪费了一些时间),
现在终于在找到数据的位置检查 RAM

现在光是检查各种内存就不会浪费太多时间了,直接访问ram进行这样的操作,而不检查任何缓存内存,效率会不会高很多。
请记住,随着 CPU 从 L1 向 L2、从 L2 向 L3 和从 L3 向 RAM 前进,这些内存单元的物理距离从 cpu 增加以及访问时间。

反过来想,如果在L1中找到数据,那么它会比在RAM中节省更多的时间,L2和L3也是如此。正如哈罗德指出的那样,如今 L3 并不在 CPU 之外。

就大小而言 L1 < L2 < L3 <<< RAM

这表明在 RAM 中搜索比在 L* 缓存中搜索要花费更多的时间。为此引入了缓存,即节省搜索时间。

正如您所说,有时是的,如果 L1、L2、L3 中不存在数据,那么您需要访问 RAM,但缓存会受到一些损失,但该数据将保存在缓存中以供将来访问。因此,缓存命中的优势超过了这种损失。

一般缓存命中率应该是/是90%,如果不是那么你需要调整缓存策略。

希望对您有所帮助。