在L2驱逐中从L1缓存中缓存驱逐

pra*_*kar 6 caching computer-architecture memory-size

我对内存系统遵循的策略有一个基本的问题.

考虑具有私有L1和L2缓存的核心.在L2缓存之后,我们有一条总线,在该总线上运行一致性流量.现在,如果从L2高速缓存中清除地址(X)的高速缓存行,是否有必要从L1高速缓存中逐出该地址?

驱逐的原因可能是它有助于维持一致性协议的不变性[如果l2中的一行显示无效,则此核心不包含此地址].

Dav*_*rtz 13

三种不同的设计,都使用了.

  1. 独占:L1缓存中的数据永远不会位于L2缓存中.L2缓存中的数据永远不会出现在L1缓存中.

  2. 包含:L1缓存中的数据也必须位于L2缓存中.

  3. 两者都不是:L1缓存中的数据可能在L2缓存中,也可能不在L2缓存中.

这些中的每一个都有优点和缺点.包含方案允许高速缓存一致性协议忽略L1高速缓存 - 如果数据不在L2高速缓存中,则它不在L1高速缓存中.但独家方案可以最有效地利用珍贵的缓存.

包容性设计正变得越来越流行,因为更快的核间同步变得比具有稍大的有效高速缓存大小更重要.