如何查找L1和L2缓存?

时间:2011-03-14 13:27:27

标签: caching cpu cpu-cache

最近我正在阅读有关cpu缓存的一些资料。我想知道cpu如何查找L1和L2缓存以及cpu缓存中的数据以什么格式存储?

我认为缓存的线性扫描效率低下,有没有更好的解决方案?

感谢。

2 个答案:

答案 0 :(得分:2)

它使用从正在查找的地址中提取的索引位和标记。

假设您正在访问某些32位地址ADDR

ADDR将有位:31 -------------------------- 0,[------ tag | index | offset]

然后根据缓存的大小: 假设你有一个32K的直接映射缓存,每块32字节。

偏移位用于查找每行中的数据,因为8字节是要进入缓存的最小数据大小(您总是得到完整的32字节,但在32字节内您将获得数据。)

这解释了具有1024行或每行的缓存,每行还有32字节。为了索引1024套,你需要10比特。因此,地址中的10位用作缓存的索引。偏移位用于查看数据所在行内的位置,标记位用于匹配您正在查找的地址,因为两个或多个地址将映射到缓存的同一行。 有意义吗?

答案 1 :(得分:0)

我不知道你的答案,但我可以推荐一本好书,可能会让你找到一个 - The Essentials Of Computer Organization and Architecture