2

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

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

谢谢。

4

2 回答 2

2

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

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

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

然后取决于缓存的大小:假设您有一个 32K 的直接映射缓存,每块 32 字节。

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

这说明了一个有 1024 行或集合的缓存,同样每行有 32 个字节。为了索引 1024 个集合,您需要 10 位。因此,您地址中的 10 位用作缓存的索引。偏移位用于查看数据在该行内的位置,标记位用于匹配您正在查找的地址,因为两个或多个地址将映射到缓存的同一行。说得通?

于 2011-07-27T12:28:45.353 回答
0

我不知道你的答案,但我可以推荐一本好书,它可能会引导你阅读 - The Essentials Of Computer Organization and Architecture

于 2011-03-14T16:48:24.290 回答