假设有一台计算机有三个缓存的L1,L2(处理器内部)和L3(在cpu外部)和一个RAM。
现在假设CPU需要访问数据“ABC”以进行某些操作,这些操作在RAM中确实可用,但由于架构的原因 -
CPU将首先检查L1缓存中的“ABC” ,例如它没有找到(因此缓存未命中 - >一段时间浪费检查),然后检查L2缓存并再次找不到数据(再次缓存未命中 - >浪费一些时间) ,类似地检查L3并且没有找到数据(缓存未命中 - >再次浪费一些时间),现在最后检查RAM,其中找到并使用数据。
现在这里不是在检查各种存储器时浪费了很多时间,如果不检查任何高速缓冲存储器,直接访问ram进行这样的操作就不会更有效率。
请记住,当CPU从L1进入L2,从L2进入L3,从L3进入RAM时,这些存储单元的物理距离会从cpu增加,从而增加访问时间。 < / p>
答案 0 :(得分:3)
以相反的方式思考,如果在L1中找到数据那么它将比在RAM中节省相对更多的时间与L2和L3的情况相同。正如Harold所指出的,L3现在不是CPU的外部。
在尺寸L1&lt; L2&lt; L3&lt;&lt;&lt; RAM
这表明在RAM中搜索比在L *缓存中搜索需要更多的时间。为此目的引入了高速缓存,即节省了搜索时间。
正如你所说,有时候如果L1,L2,L3中没有数据,那么你需要访问具有一些缓存惩罚的RAM,但这些数据将保存在缓存中以供将来访问。因此,具有缓存命中的优势超过了这种惩罚。
一般来说,缓存命中率应该是90%,如果不是,则需要调整缓存策略。
我希望这很有帮助。