论文部分内容阅读
随着GPU和CPU的广泛应用,人们已经认识到这两个处理单元都具有其独特的功能和优势,GPU处理器不但具备3D图形渲染能力,它也可以实现基于大数据集上的密集计算。CPU处理器也兼具操作系统的运转和传统串行任务的执行两大特性。CPU结合GPU协同工作是实现高性能计算的必然趋势,计算机的发展也从传统的同构多核时代进入到异构多核时代。异构多核处理器将图形处理器(GPU)和通用CPU处理器整合到同一芯片上,通过片上网络进行通信和数据传输。这种异构结构对于CPU和GPU之间的资源共享,尤其是共享末级高速缓存(Last Level Cache,LLC)提出了新的挑战。GPU具备特殊的并行执行能力,拥有良好的访存延迟容忍性,LLC的很大一部分空间会被GPU应用程序所抢占,剩余非常有限的空间留给CPU应用程序,使得CPU应用程序的访存缺失率大大提高,降低CPU性能的同时也严重影响了异构系统的性能。因此,如何在保证GPU性能的前提下,尽可能减少GPU对共享缓存资源的不公平占用问题,已经成为目前亟需解决的问题。通过分析目前共享缓存管理技术的研究现状,关于缓存优化的两大关键技术,缓存划分和缓存替换算法主要应用于同构多核CPU系统中,基于CPU与GPU的访存差异性,面向CPU-GPU异构多核系统的缓存划分和缓存替换算法并没有得到深入的研究和发展。针对以上情况,为了提高异构环境下共享缓存的利用效率和系统性能,本文首先通过实验具体分析了CPU与GPU的访存行为差异,在此基础上提出了基于Cache划分的自适应替换算法。该算法首先采用划分策略,隔离CPU与GPU对于共享LLC的争用问题,之后根据消息请求访问类型的不同,采用不同的缓存替换算法进行替换。基于Cache划分的自适应替换算法结合了划分与替换算法两种管理技术,可以有效地提升系统的性能。针对静态划分中存在的局限性,进一步提出了基于GPU缺失感知的动态Cache划分算法。动态划分算法在运行时感知GPU缓存缺失率的变化情况,设置合理的阈值范围,在单位时间间隔内动态改变CPU与GPU对于共享LLC的缓存比例,在保证GPU性能的同时,提升CPU的缓存利用效率,从而使整体系统的性能得到进一步的提升。为了精准地评估实验方案对系统性能和功耗的影响,本文选取异构架构的Gem5-GPU模拟器作为基础实验平台,并通过集成McPAT和GPUWattch功耗模型进行功耗计算和统计,分别采用SPEC CPU2006和Rodinia作为CPU和GPU应用程序的测试集进行实验验证。实验结果表明,本文提出的基于Cache划分的自适应替换算法与传统的管理方案相比,CPU的性能得到了显著提升,最高提升33%,平均提升15%。基于GPU缺失感知的动态Cache划分算法在保证GPU性能不受影响的前提下,提升了CPU的性能,实现CPU在功耗仅仅增加2.3%的基础上,性能最高提升了17.3%,平均提升7.4%。GPU在性能不下降的前提下,功耗值降低了22.2%,最高降低50%。