论文部分内容阅读
随着GPGPU在通用计算领域的快速发展,异构多核体系架构越来越普及,其计算能力越来越强大,GPGPU编程模型通常以主机和设备为基础,CPU执行主机端代码,GPGPU执行设备端代码只负责计算。GPGPU需要的初始数据和存储初始数据的空间,首先由CPU在内存进行初始化,然后拷贝到GPGPU的显存内。因此缩小内存数据传输时间,进行更高效的主机和设备之间的数据共享,成为制约异构多核体系架构性能的关键点。 最后一级缓存LLC在CPU与GPGPU之间形成一个共享的存储层次,可以加速它们之间的数据传输。LLC相对L2缓存有较大的空间,相对内存有更快的访问速度,其访问策略对异构系统的性能具有重大影响。GPGPU采取SIMT(singleinstruction multi thread)的执行方式,使得GPGPU程序的访存模式流式特性明显,这与传统CPU的访存模式有较大差异,传统缓存空间管理算法不能适用于LLC。常见的缓存管理方法主要有两种类型:替换算法和空间分割,对应不同程序有各自的性能。针对异构多核上的不同类型的GPGPU程序,如应用合适的缓存替换算法,可以达到提高系统性能的目的。 本文观察到不同类型的GPGPU程序具有不同的IPC-MPKI性能曲线,将GPGPU程序根据IPC和MPKI进行分类。本文对不同类型的GPGPU程序分别应用不同的缓存替换算法,找到各类GPGPU程序对应的最优替换算法。为了应对GPGPU高密度的流式访存,本文在DRRIP的基础上提出bypass+DRRIP的流式程序缓存替换算法。 其次本文提出了SM筛选器的概念,根据thread block动态运行时的特征对其进行动态分类,并将GPGPU内部SM进行分组为不同的SM group,将thread block分别发射到对应SM group中的SM上执行。对grid中第一个运行的thread block进行分类筛选,随后的thread block依照第一个thread block的分类结果归类到不同的SM group。不同的SM group运行的程序行为相似,因此可以运用不同的缓存替换策略。 SM group内的SM对LLC空间有相似的需求,而不同SM group对LLC空间的需求有差异,因此在LLC空间管理策略设计上,可以分类对SM group提供服务。为此本文提出基于SM group的LLC动态管理策略,在SM group粒度进行LLC空间管理,在不同的SM group之间进行LLC空间的动态伸缩。在该粗粒度的LLC空间管理策略上,使用了基于优先级的分配和剥夺空间分配策略,由单个SM group提出空间申请,再由LLC动态空间管理器统筹全局进行空间分配。 本文修改了两个时钟精确的模拟器gem5和GPGPU-sim,并将两者整合在一起组成共享LLC的异构多核平台。本文测试了部分Rodinia和CUDA SDK中的基准程序,并与基准测试数据进行比较。实验数据表明,本文的LLC管理策略平均可以提高系统21.6%的程序IPC,而只增加数量有限的硬件,对于有些流式程序,该管理策略最多可以提升27%的程序IPC。实验证明本文针对CPU-GPGPU共享最后一级缓存的异构多核系统提出的基于SM group分类的LLC管理策略具有良好的提升程序性能的效果。