论文部分内容阅读
现代处理器普遍采用多级层次化高速缓存结构以来弥补处理器和存储器之间不断扩大的性能差距。与指令和数据分离的一级高速缓存设计不同,共享的末级高速缓存受内层高速缓存的过滤作用,导致访问末级高速缓存的数据局部性相对较差。因此,通常面向传统的小容量私有一级高速缓存的管理策略难以有效利用末级高速缓存空间,严重影响处理器访存性能的提升。对末级高速缓存进行有效管理,减少末级高速缓存失效对于提高系统整体性能具有重要的意义。操作系统负责分配物理内存,建立虚实地址映射关系。通过修改物理页框分配策略可以影响末级高速缓存中的数据布局,优化数据的局部性,减少末级高速缓存失效。同基于硬件设计和编译技术的传统末级高速缓存优化策略相比,上述方法具有硬件改动小、应用透明等优点。然而,现有操作系统设计并没有充分考虑末级高速缓存优化,缺乏控制和管理末级高速缓存的有效手段。本文分别从操作系统内存管理策略设计和软硬件协同末级高速缓存设计两个方面,展开面向末级高速缓存的性能优化关键技术研究,主要研究工作和成果包括如下:1.提出了一种降低末级高速缓存污染的分区域软件划分方法。局部性差数据进入到末级高速缓存后可能会将经常被访问到的数据替换出去,产生末级高速缓存污染问题。该方法采用基于访存踪迹的局部性剖视反馈机制,检测并发现访存密集型程序内局部性差的污染数据区域;并通过修改操作系统物理页框分配策略,将污染数据集合分配到较小的末级高速缓存空间中。采用该方法可以在末级高速缓存中保护局部性良好的数据,提高末级高速缓存命中率。实验结果表明同现有Linux操作系统相比,采用本方法后末级高速缓存每千行指令失效数MPKI平均减少15.23%,程序性能平均提高了7.01%。2.提出了一种将进程间划分和污染区域隔离相结合的多核处理器共享末级高速缓存优化方法。并发进程数据以及进程内不同数据区域会相互抢占多核处理器共享末级高速缓存空间,产生严重的共享末级高速缓存数据访问冲突。该方法检测并发现应用程序在不同共享末级高速缓存配置下的污染数据区域分布,并在末级高速缓存中设置全局污染缓冲区集中映射各个并发进程内部污染数据区域。该方法可以在进程间划分的基础上进一步提高多核处理器多进程并发执行环境下共享末级高速缓存利用率。实验结果表明,同现有Linux操作系统和进程间划分方法RapidMRC相比,采用该方法后多核系统的整体性能分别提高了26.31%和5.86%。3.提出了一种轻量级硬件支持的页粒度软件控制末级高速缓存插入策略。由于记录的访存信息有限,单纯基于硬件实现的末级高速缓存管理策略难以识别程序内不同数据区域的访存行为,无法有效检测并定位局部性差的污染数据。该方法利用现有处理器页表项保留位设计末级高速缓存插入策略软件控制接口;同时,在剖视信息的指导下以页为单位控制污染区域数据进入末级高速缓存的插入位置。该方法具有较小的硬件开销,可以在采用锦标赛机制的硬件插入策略的基础上进一步降低末级高速缓存污染,提高处理器访存性能。实验结果表明,同现有的LRU、DIP和DRRIP方法相比,采用该方法后末级高速缓存MPKI平均降低了14.33%、9.68%和6.24%;处理器平均性能分别提高了8.3%、6.23%和4.24%。4.提出了一种面向虚拟地址区域的软硬件协同末级高速缓存管理策略。在程序运行过程中,连续的虚拟地址区域中的数据往往被映射到分散的物理页框中。现有末级高速缓存性能监视器难以统计这种数据分布的情况,无法为运行时刻优化方案提供指导。该方法首先设计了一种面向虚拟地址空间的末级高速缓存分区域性能监视器,用于在线记录程序内不同数据区域的末级高速缓存访问信息;其次,设计了一种分区域性能监视器支持的在线剖视分析方法,在运行时刻了解程序内不同数据区域的访存行为和局部性特征;最后,设计了末级高速缓存软件控制接口。操作系统在剖视信息的指导下,根据每个数据区域的访存行为,为不同数据区域配置合理的旁路和插入策略。采用该方法可以在不显著增加硬件开销的前提下,有效提高末级高速缓存利用率。实验结果表明,与现有的LRU、DIP和DRRIP方法相比,采用本方法后处理器平均性能分别提高了8.05%、5.94%和4.01%。