【发布时间】:2013-01-20 09:30:03
【问题描述】:
从本论坛之前的question 中,我了解到在大多数内存系统中,L1 缓存是 L2 缓存的子集,这意味着从 L2 中删除的任何条目也会从 L1 中删除。
所以现在我的问题是如何为 L2 缓存中的条目确定 L1 缓存中的相应条目。 L2 条目中存储的唯一信息是标签信息。基于此标记信息,如果我重新创建 addr,如果 L1 和 L2 缓存的行大小不同,它可能会跨越 L1 缓存中的多行。
架构是否真的会为刷新两条线而烦恼,或者它只是维护具有相同线大小的 L1 和 L2 缓存。
我知道这是一个政策决定,但我想知道常用的技术。
【问题讨论】:
-
L1 和 L2 是否有不同线宽的处理器?
-
原来的 Pentium 4 显然有 64 字节的 L1 缓存线和 128 字节的 L2 缓存线。
-
有人可以评论 nehalem 架构吗?我浏览了一篇关于“英特尔 Nehalem 计算机架构的缓存组织和内存管理”的论文。这里他们只提到一次缓存行大小(64 字节)??
-
@PaulR:Pentium 4 有独立的 L1 和 L2 缓存。我会想象需要 L1 缓存是 L2 缓存子集的设计将保持行大小相同。
-
如果您在 x86 上运行,CPUID 指令会返回明确的高速缓存行大小信息。谷歌的 CPUID 和缓存行大小有一些很好的例子。
标签: caching memory-management cpu-architecture cpu-cache