我有一个关于内存系统遵循的策略的基本问题。
考虑具有私有 L1 和 L2 缓存的核心。在二级缓存之后,我们有一个总线,一致性流量在该总线上运行。现在,如果地址(X)的缓存线从二级缓存中逐出,是否有必要从一级缓存中逐出该地址?
驱逐的原因可能是它有助于维持一致性协议的不变性[如果 l2 中的一行显示无效,则该核心不包含该地址]。
有三种不同的设计 http://en.wikipedia.org/wiki/CPU_cache#Exclusive_versus_inclusive并且全部被使用。
独占:L1 缓存中的数据永远不会在 L2 缓存中。 L2 缓存中的数据永远不会在 L1 缓存中。
包容:L1缓存中的数据也必须在L2缓存中。
两者都不是:L1 缓存中的数据不一定在 L2 缓存中。
其中每一个都有优点和缺点。包容性方案允许缓存一致性协议忽略 L1 缓存——如果数据不在 L2 缓存中,则它也不在 L1 缓存中。但独占方案最有效地利用了宝贵的高速缓冲存储器。
包容性设计变得越来越流行,因为更快的核心间同步变得比拥有稍大的有效缓存大小更重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)