最近我正在读一些关于cpu缓存的资料。我想知道cpu如何查找L1和L2缓存以及cpu缓存中的数据以什么格式存储?如何查找L1和L2缓存?
我认为对缓存的线性扫描效率不高,有没有更好的解决方案?
谢谢。
最近我正在读一些关于cpu缓存的资料。我想知道cpu如何查找L1和L2缓存以及cpu缓存中的数据以什么格式存储?如何查找L1和L2缓存?
我认为对缓存的线性扫描效率不高,有没有更好的解决方案?
谢谢。
我不知道你的答案,但我可以推荐一本好书,可能导致你一个 - The Essentials Of Computer Organization and Architecture
它使用它查询地址提取指数位和标签。
假设你正在访问某些32位地址ADDR
ADDR会有位:31 -------------------------- 0 ,[------标记|索引|偏移]
然后根据缓存的大小: 比方说,您有一个32K,每块32字节的直接映射缓存。
偏移位用于查找每一行内的数据,因为8个字节被带入高速缓存的最小数据大小(以及你总是得到完整的32字节,但在32字节内你会有你的数据。)
这占用了1024行或集合的高速缓存,每条行都有32字节。为了索引1024组,你需要10位。因此,您地址的10位用作缓存的索引。偏移位用于查看数据所在行内的位置,标记位用于匹配您查找的地址,因为两个或更多地址将映射到高速缓存的同一行。 有道理吗?