论文部分内容阅读
目前,通用图形处理器(GPGPU)被越来越广泛的应用于通用计算领域。GPGPU依靠超大规模的线程并行度展现出强大的计算能力。然而数以千计的线程也对GPGPU的部分片上存储资源造成巨大的压力。例如大量的线程同时竞争片上存储系统中容量较小的一级数据高速缓存(L1D cache),严重地加剧了L1D cache的冲突失效,进而损害了系统的性能。与此同时,GPGPU的部分片上存储资源正在面临着低使用率的问题。例如在应用程序运行过程中,大量的寄存器或者共享内存处于空闲状态,造成了严重的资源浪费。本文着重研究GPGPU片上存储系统优化技术来缓解片上存储系统出现的这些问题。首先,我们在GPGPU中引入受害者缓存(victim cache),借助victim cache在片上存储系统中保留更多的缓存块(cache line)来缓解L1D cache的冲突失效问题。我们在中央处理器(CPU)中通常使用一个全相联小容量的victim cache,然而为了更好地适应GPGPU大规模线程的环境,我们在GPGPU中引入一个与L1D cache相同的大容量组相联victim cache。其次,我们进一步使用一个简单的预测策略将最常使用的cache line尽可能保留在L1D cache中,通过尽量避免cache line在victim cache和L1D cache间的逐出和交换使得victim cache和L1D cache更好的协作。最后,我们使用片上存储系统中的静态空闲寄存器或者空闲共享内存作为victim cache数据块的存储单元,提高这些存储资源的利用率,同时节省将victim cache引入GPGPU后带来的硬件成本。实验结果表明,引入victim cache后,高速缓存的命中率平均提高26.8%,系统性能平均提升36.3%。使用预测策略后,L1D cache和victim cache之间cache line的逐出和交换平均减少21.8%,系统性能进一步提升4.9%。最后将静态空闲寄存器或者空闲共享内存作为victim cache的数据块存储单元,极大的提高了GPGPU片上存储资源的利用率,同时大幅减少了将victim cache引入GPGPU后带来的硬件成本。