论文部分内容阅读
缓存(cache)是处理器的重要组成部分,对提升计算机系统的性能至关重要。在过去的几十年里,随着半导体制造工艺的进步,cache的容量,速度和组织结构发生了巨大的变化。随着多核时代的到来,运行在多核处理器上的多个线程程序之间的干扰问题给充分利用cache容量带来新的挑战。Cache划分可以较好地解决多线程程序在LLC上的干扰问题。页着色(Page Coloring)是一种常见的实现cache划分的方法。 从Intel Sandy Bridge架构处理器开始,Last Level Cache(LLC)被分成不同的slice,所有的slice通过一个ring bus进行连接,物理地址通过一个哈希函数(物理地址与cache set之间的映射关系)分散到所有的slice上。物理地址到cache set的映射关系是使用页着色实现cache划分的必需信息。令人遗憾的是,Intel并没有公开这个哈希函数。 在本文中,作者基于映射到同一个cache set的物理地址之间的替换关系来破解Sadny Bridge处理器上的cache哈希函数。通过访问特定set内的地址来是访问的物理地址之间产生替换,在测试程序执行期间,使用内存访存trace收集工具HMTT访存trace。基于从访存trace中解析出的物理地址之间的替换关系,将所有的物理分成对应不同cache set的组,进而得到物理地址到cache set的映射表,并对映射表进行化简。基于哈希函数的破解结果,将用户层cache控制运行时库(User Level Cache Control,ULCC)移植到Sandy Bridge处理器上,并评测其其性能。 本文主要成果如下:1)Sandy Bridge4,6核处理器cache哈希函数破解;通过设计特殊的访存程序,在这个程序执行期间,使用HMTT抓取所有访存trace,从trace中解析出物理地址之间的剔除关系。基于这些剔除关系,将所有的物理分成不同的组,每一组内的物理地址都被映射到同一个cache set;2)提出一种通用的cache哈希测试方法。基于不同线程访问映射到同一个set的数据,当访问的地址个数超过LLC的相联度时发生严重的冲突,导致平均访问时间明显增加的现象,提出一种不需要HMTT支持的cache哈希函数破解方法;3)用户层cache控制运行时库的移植与性能分析。用户层cache控制运行时库(User Level Cache Control,ULCC)是一个通过cache划分使程序员能够为不同线程的数据集分配不同的cache空间来显示管理和优化LLC使用的软件运行时库。基于cache哈希函数的破解结果,将ULCC移植到Sandy Bridge处理器上,并对其性能进行评测。