陈志强 周宏伟 冯权友 邓让钰
(国防科技大学计算机学院 长沙 410073)
(czq19982016@163.com)
共享主存多核处理器在并行处理中具有很大优势,它维护1块完整的地址空间,处理器核通过load和store指令访问共享主存空间,每个处理器核有单独的私有缓存,都可以缓存数据,1个数据可以拥有多个副本,它们之间可能相同,也可能不同.层次化存储在提高性能的同时必须保证正确性,通用的方案是通过缓存一致性协议来解决数据不一致[1].
根据实现不同,一致性协议可以分为2类,监听协议(snoop-based protocol)和基于目录的协议(directory-based protocol).监听协议将一致性事务直接广播给最后一级缓存(last level cache,LLC)和主存,通常是通过总线结构.这类协议受限于总线有限的带宽以及总线所能挂载的最大负载数量,限制了它的可扩展性,这种特性使它不适用于核数较多的处理器.另一种基于目录的一致性协议[2],每个内存块对应1个目录项,目录项中记录状态信息和共享信息.操作数据时,向拥有数据副本的缓存直接发送请求.当下,包含32及以上核心数目的多核处理器成为主流,相较于基于总线的监听协议,基于目录的一致性协议具有更好的可扩展性.随着处理器核心数量的进一步增加,基于目录的一致性协议优势更加明显[3].
为了避免广播操作,需要知道当前数据副本的位置信息,这些信息记录在目录项中.对数据进行操作时,可以直接根据目录项中的记录,发出点对点的请求通信,避免了低效的广播操作.代价是……