2013-02-05 108 views
5

我有一个关于内存系统遵循的策略的基本问题。从L1缓存驱逐L2驱逐

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

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

回答

10

three different designs和所有使用。

  1. 独占:L1高速缓存中的数据永远不会在L2高速缓存中。 L2高速缓存中的数据永远不会在L1高速缓存中。包含:L1缓存中的数据也必须位于L2缓存中。

  2. 以下哪一种:L1高速缓存中的数据可能也可能不在L2高速缓存中。

这些都有优点和缺点。包容性方案允许缓存一致性协议忽略L1缓存 - 如果数据不在L2缓存中,则不在L1缓存中。但独家方案使宝贵的高速缓存最有效的使用。

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

+0

我对线条大小有疑问。请你澄清一下http://stackoverflow.com/questions/14707803/line-size-of-l1-and-l2-caches –

+0

你能提供一些关于这方面的进一步阅读:“包容设计越来越流行,因为更快核心间同步变得比具有稍大的有效缓存大小更重要“? – rkioji