论文部分内容阅读
现代多核系统中,处理器性能与内存性能间的不均衡发展导致当前内存的存储速度严重滞后于处理器的计算速度,从而形成“内存墙”。“内存墙”问题严重阻碍了多核处理器的性能发挥,一直是制约计算机整体性能的重要因素。现代多核系统通常共享最后一级缓存(LLC)和DRAM主存,其中DRAM是很重要的共享资源。多核系统中,并发执行的程序对共享资源的争夺愈演愈烈,随之带来严重的线程间的内存干扰。线程间的内存干扰会降低DRAM内存系统的响应速度,进而拉大访存延迟,扩大处理器与内存之间在性能上的差距,使得“内存墙”问题越来越严重,从而导致系统性能和公平性下降。另外,线程间的内存干扰还会引发线程的优先级反转。如何减少内存干扰已经成为学术界和工业界所关心的热点问题。本文以减小内存干扰,提高系统性能、公平性为目标,结合操作系统和体系结构理论,从操作系统角度提出一种通过减少内存干扰提高系统性能的软件解决方案——PseudoShare框架。PseudoShare框架充分利用DRAM性能优化的原则,在保证DRAM Bank并行性的前提下划分DRAM Bank,将来自不同核上线程的访存请求映射到专属的内存Bank组上,从而减少不同核上的线程在DRAM Bank上的Row Buffer冲突,即减少线程间的内存干扰,提高系统整体性能。本文主要工作如下:(1)本文详细分析了程序性能与Bank并行性之间的关系,得出结论:程序对Bank数量的需求是有限的,所以可以给每个程序分配Bank时只分配给它所需要的Bank数,满足它的容量需求,保证Bank并行性。(2)本文提出了内存感知的页分配策略BAPA。这是一种新的内存分配算法,与当前操作系统默认的页分配策略不同的是BAPA能感知到DRAM Bank的存在,注重于在保证Bank并行性的前提下减少内存冲突。该策略的核心思想为DRAM Bank划分机制,避免了原有算法对资源分配的盲目性,从而减小线程间在DRAM Bank上的内存干扰。(3)本文提出了页分配与组调度融合的PseudoShare框架,划分线程和内存成线程组和内存组,每个线程组运行在一个CPU核心上,且占用一个内存组,形成一个独立子系统。然后进行内存带宽划分,消除因共享内存带宽带来的性能和公平性下降。实验结果表明,PseudoShare在4核/8核平台下都提高了系统整体性能和公平性,并平均降低了5.3%的功耗。(4)本文采用纯软件的方式解决内存干扰问题,在Linux内核中实现了PseudoShare框架,无需更改硬件,从而避免修改复杂硬件逻辑带来的时间开销。