论文部分内容阅读
当前,高性能的共享存储系统利用多级cache来加速处理器对内存的访问,同时采用一致性协议解决系统中出现的cache一致性问题。随着多核处理器核数的增加,cache一致性协议的硬件开销以及可扩展性问题已经成为共享存储系统的研究热点。人们迫切需要一种高效低开销可扩展的cache一致性协议。为此,本文针对cache一致性协议展开研究,优化cache一致性的硬件开销并寻求一种高效低开销的一致性协议设计。本文的工作主要有以下三个方面:第一,利用动态的数据划分方法优化目录协议的存储开销。对于只被一个核访问的私有数据,它们没有一致性问题,不需要一致性的维护。基于这点,本文采用操作系统辅助的方法进行页面粒度的私有共享划分。通过这种方法,本文有效地分离出私有数据并消除了私有数据的目录存储开销。第二,根据cache一致性协议的开销分析,本文提出了一种降低cache一致性协议开销的自更新机制。在写失效的cache一致性协议中,当核进行写操作时,协议需要确保本地cache的数据项获得独占状态,cache一致性协议一般会发送失效消息到其他的cache以作废过期的备份。目录协议发送间接失效消息造成了较长的事务延迟,监听协议广播失效消息造成了大量的网络开销。为此,我们创新性地提出了一种自更新的机制。Cache一致性协议在同步点进行共享数据的自我更新。自更新操作能够自动地更新本地过期的备份从而消除目录协议间接的失效消息,以及消除监听协议中大量的广播消息。第三,通过分析当前MESI目录式cache一致性协议,本文提出了一种基于自更新的简单高效cache一致性协议(Valid/Invalid,Self-Updating,VISU)。VISU协议利用当前程序的数据无竞争特性,识别程序中的同步点。协议在同步点执行自更新操作以更新过期的备份。MESI cache一致性协议拥有4种稳定状态,在L1cache中存在55种状态转换。这些众多的一致性状态以及状态转换使得MESI协议复杂低效,并且引发了巨大的验证开销。VISU协议在L1 cache中只有两种稳定状态、两种瞬时状态。首先基于并行编程的数据无竞争(DRF)模型,我们采用在同步点进行自更新共享数据来保证正确性。其次利用动态识别私有和共享数据的技术,我们提出了对私有数据进行写回,对共享数据进行写直达的方案。对于私有数据,简单的写回策略能够简化不必要的片上通信。在L1 cache中,对于共享数据的写直达方式能确保LLC中数据最新从而消除了几乎所有的一致性状态。我们实现的VISU协议开销低、不需要目录、没有间接传输和众多的一致性状态,且更加容易验证,同时获得了与MESI目录协议几乎相当甚至更优的性能。为了评估上述方案,我们使用gem5模拟器和CACTI进行了性能仿真和开销评估。与当前主流的MESI目录式一致性协议相比,我们设计的VISU一致性协议性能提高了2.9%,面积减少了31%。此外我们的自更新机制相比于同类型的自失效机制降低了L1 cache 5.2%的cache失效率。综上所述,本文针对于现存的cache一致性协议进行了优化,首先实现了一种动态的私有共享数据划分方式;其次提出了一种高效的自更新机制;最后结合写直达与自更新机制提出了一种简单高效的两状态VISU一致性协议。实验结果表明,VISU协议在性能上胜过复杂的MESI目录协议,同时显著减少了硬件开销,降低了协议的复杂性。