2011-03-14 71 views
2

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

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

谢谢。

回答

2

它使用它查询地址提取指数位和标签。

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

ADDR会有位:31 -------------------------- 0 ,[------标记|索引|偏移]

然后根据缓存的大小: 比方说,您有一个32K,每块32字节的直接映射缓存。

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

这占用了1024行或集合的高速缓存,每条行都有32字节。为了索引1024组,你需要10位。因此,您地址的10位用作缓存的索引。偏移位用于查看数据所在行内的位置,标记位用于匹配您查找的地址,因为两个或更多地址将映射到高速缓存的同一行。 有道理吗?

相关问题