ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

HN-F设计——Snoop Filter

HN-F设计——Snoop Filter HNF作为CMN网络中管理和维护一致性的HomeNode是最复杂的存在。接下来的一系列文章将逐步拆解HNF的设计要点。HNF如何维护cache一致性答案就是SF(snoop filter)。在“write invalidate的系统架构中如果一个RN需要更新某个地址的数据就需要先使其他cache副本全部无效掉而SF完整的记录了所有拥有cache副本的RN信息HNF就可以通过查询SF来对拥有该cache的RN发送invalidate snoop使其无效。作为对比如果HNF中没有SF那么要想做到“write invalidate”就需要广播snoop给所有的RN以保证cache一致性不出错。很明显这样做的缺点就是mesh网络上的snoop风暴进而造成系统延迟较大。所以HNF中的SF需要重点考虑。Snoop Filter有不同的架构设计每种架构在准确性、面积、复杂性和可扩展性方面都有不同的权衡Bloom filter‑based snoop filters基于布隆过滤器的SF使用概率数据结构来判断缓存行是否存在于缓存中。它们空间利用率极高并能减少广播窥探操作。然而它们可能会产生误报从而触发不必要的Snoop操作。Tagged snoop filters带标签的SF维护着一个标签目录其中包含存储在每个 PE 本地缓存中的所有缓存行。由于它们显式地跟踪缓存行的存在性和一致性状态因此能够提供很高的准确性。但它们较为简单的结构限制了其在超大型多核系统中的可扩展性。Selective snoop filters选择性窥探过滤器会根据启发式规则、访问历史或预测的数据位置动态地决定是广播还是定向窥探。虽然功能强大但由于其自适应特性实现起来可能既复杂又昂贵。Directory-based snoop filters基于目录的SF基于目录的窥探过滤器维护一个目录该目录记录哪些缓存保存了特定的数据行及其一致性状态。当处理单元 (PE) 访问内存位置时该目录会识别出必须更新或失效的确切缓存。这种方法在大型、一致性多处理器系统中能够高效扩展并有助于显著减少窥探流量。Hybrid snoop filters混合式监听过滤器结合了多种过滤策略以平衡准确性、流量减少和空间成本。它们通常用于工作负载特性明确的特定领域架构中。我们这里采用基于目录的SF架构设计方案。前面说到SF需要记录拥有cache副本的所有RN。所以可以推断出SF的一些基本元素地址与cache对应系统架构确定支持的地址位宽rn_vec每个RN/PE对应1bit置位则表示该RN拥有这个cache副本状态该cache的状态常用的是MESI / MOESI基本元素确定了我们就要考虑如何更好地查询SF信息。这里需要提前了解一下cache的基本知识。可以自行查阅资料这里贴一个Cache 的映射方式与写策略 。我们这里直接使用结论使用组相连映射的cache结构。简单来说将地址addr分为两部分一部分为index一部分为tag。一个index可以对应8个way即这8个way为1组。假设总线支持32位地址那么[5:0]为cache内部地址对应8byte。可以[15:6]为index那么就是1K个set然后这里选择支持8路组相连结构。那么SF追踪的cache大小就是8K条cacheline。那么怎么查询呢通过index就可以读到全部8路sf信息再通过tag比较就可以找到真正的SF记录。如何写入呢就需要确定上文提到的几项基本元素的值这个就复杂了涉及到协议处理不是几句话说得清楚这里就不做讨论。扩展思考1. 当系统中RN数量显著提升那么记录的rn_vec也将显著变大如何更加高效的记录2. SF RAM较大如果直接读写或许不能很好的满足时序要求如何设计才能更好的满足后端要求3. SF满了如何处理需要踢出、替换选用哪种替换算法​更多内容专利US 8.255,638 B2--Snoop filter for flitering snoop requests
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进