论文部分内容阅读
随着计算机技术的高速发展,应用程序对计算机系统性能,包括内存系统的容量以及功耗都提出了更高的要求。然而,由于传统制造工艺的限制,内存系统容量的扩展变得非常困难,造成整个内存系统扩展的瓶颈。与此同时,非易失性相变存储PCM相比于传统存储DRAM能以更低的价格提供更大的存储。因此,由DRAM和PCM组合形成的异构混合内存系统变得越来越流行。并行程序在异构混合内存系统中运行时,一些运行较慢的线程可能会减缓其他线程的运行速度。原因在于:所有线程的访存请求被分发到不同的内存通道。由于PCM的写请求延迟过长,访问PCM的请求需要较长的完成时间,因此PCM写请求数量多的线程需要更多的时间来完成内存访问操作,该线程将因此成为运行最慢的线程。该运行最慢的线程显然将拖慢其他线程的运行进程,从而导致整个程序的性能下降。通过在异构内存环境下更好地调度线程的访存请求,可以缓解这种性能的损失。提出了一种针对异构内存环境下并行程序的访存调度算法。该算法在FRFCFS访存调度算法的基础上,针对线程的访存行为动态的调度在内存控制器端的访存请求队列。通过优先调度运行最慢的线程,使其运行时间减少,从而降低程序整体运行时间。该算法首先会在运行时监测程序中每个线程的访存请求行为,包括总访存请求数量和DRAM和PCM上的访存请求数量,然后根据访存请求数量及分布不同为每个线程计算调度优先级表,最后在FRFCFS调度算法优先响应行缓冲命中请求的前提下,执行该调度策略。通过使用GEM5全系统模拟器和NVMain异构内存模拟器搭建异构内存模拟环境,并在异构内存模拟环境中运行NPB测试程序集,对实验进行了功能和性能测试。实验结果证明该访存请求调度算法针对NPB中访存密集型应用,能够获得比优化前10%左右的加速率,从而验证了算法的可行性。