论文部分内容阅读
随着摩尔定律一再被验证,已经进入了众核时代,不久的未来将会看到含有数以百计甚至千计的核数的芯片。一个普遍达到的共识是缓存一致性将继续在将来的大规模系统中使用并发挥重要作用。片上核数的迅速增加对一个缓存一协议的可扩展性提出了相当高的要求,而为几百个甚至上千核维护一致性将变得前所未有得困难。 尽管目录一致性协议为小规模系统提供了相对可行的方法,一个日益严峻的问题是简单地把目录一致性扩展到众核系统将引发严重的功耗和面积问题。而与此同时,最近提出的基于时间戳的一致性协议提供了一致性协议扩展的另一种思路,但当前时间戳一致性工作中的性能缺陷使其的优势难以体现。 在本文中,首先,提出了一种简洁的目录设计SelectDirectory,它利用了并行程序的数据特性:有很大一部分数据都是暂时私有因而对这部分数据只需要维护很少的一致性信息。受到这个发现的启发,提出把稀疏目录的标签阵列和一致性数据阵列进行分离,并只对活跃共享的数据块分配一个共享向量。实现结果表明我们的方法在不牺牲任何性能的情况下,可以大大节约目录的存储、面积和能耗。 第二,提出了一个基于时间戳的一致性协议TC-Release++,它解决了在大规模系统中维护一致性的扩展性问题。我们的方法受启发于一个最近提出的针对GPU架构的时间戳一致性协议TC-Weak。首先设计了TC-Release,它把TC-Weak简单移植到通用众核系统中,但由于体系结构和编程模型的巨大差异,移植系统的性能反而低于传统的目录协议。克服了TC-Release的性能瓶颈,使用简单的硬件支持去除了其频繁的内存等待,并提出了一个优化的生命周期预测机制从而提升了缓存性能。最终的一致性协议TC-Release++具有相当可观的扩展性,并展现了比传统目录协议更好的性能。 最后,为了验证提出的时间戳一致性协议TC-Release++的正确性,使用Murphi对其进行了形式化验证。验证结果表明TC-Release++没有出现正确性问题并只需要较小的验证开销。本文中缓存一致性的验证工作第一次对基于时间戳的缓存一致性协议进行了形式化验证。