我正在尝试学习有关缓存的一些知识。假设我有一个4路32KB高速缓存和1GB内存。每个高速缓存行的大小为32字节。因此,我了解到RAM将被分成256个4096KB页面,每个页面映射到一个高速缓存集,其中包含4个高速缓存行。
我有多少个高速缓存路?我甚至不确定什么是高速缓存路。可以有人解释一下吗?我已经做了一些搜索,最好的例子是:
http://download.intel.com/design/intarch/papers/cache6.pdf
但我仍然感到困惑。
谢谢。
http://download.intel.com/design/intarch/papers/cache6.pdf
但我仍然感到困惑。
谢谢。
您的缓存大小为32KB,是4路缓存,缓存行大小为32B。因此,集合的数量为 (32KB / (4 * 32B)) = 256缓存大小 = 缓存中集合的数量 * 每个集合中的缓存行数 * 缓存行大小
那么我们就有 (30 - 5 - 8) = 17 位用于标签。由于不同的内存块可以映射到同一缓存行中,因此这个标签值有助于区分它们。
当处理器生成一个地址时,使用30位地址中间的8位来选择缓存集,这个集合中将有4个缓存行。因此,所有四个已驻留缓存行的标记都会与生成的地址的标记进行匹配。
示例
如果一个30位地址为00000000000000000-00000100-00010(以'-'分隔以便阅读),则: