首页> 中文学位 >CPU-GPGPU异构多核平台下适应warp调度特征的LLC预取机制
【6h】

CPU-GPGPU异构多核平台下适应warp调度特征的LLC预取机制

代理获取

目录

摘要

图目录

表目录

第1章 绪论

1.1 课题背景

1.1.1 GPGPU简介

1.1.2 GPGPU编程模型

1.1.3 多线程可忍受访存延时的概念

1.1.4 异构CPU-GPU共享LLC混合体系架构

1.2 研究动机

1.3 本文主要贡献

1.4 本文组织结构

1.5 本章小结

第2章 缓存预取机制的研究概述

2.1 常见缓存预取算法

2.2 缓存预取的机制

2.2.1 软件预取的现状

2.2.2 硬件预取的应用

2.2.3 软硬件协同预取的研究现状

2.3 对预取块的cache块管理

2.4 目前研究存在的问题

2.5 本章小结

第3章 适应warp的CUDA程序预取机制

3.1 混合架构下LLC的hit率对CUDA程序性能的影响

3.2 预取有利有害情况分析

3.3 系统总体架构

3.4 SM端监测和发起预取请求的流程

3.5 预取器端的架构设计

3.6 本章小结

第4章 程序执行监测及预取模块的实现

4.1 线程profiler的架构

4.2 SM内监测及预取控制模块的实现

4.2.1 warp监测器的实现

4.2.2 预取控制器的实现

4.3 预取参数的确定方法

4.3.1 预取阈值的确定原则

4.3.2 预取阈值的确定方法

4.3.3 预取目标warp和目标地址块的确定

4.4 本章小结

第5章 全局预取器端调度和优化

5.1 全局预取器架构

5.2 预取仲裁和请求调度

5.3 预取请求的合并优化

5.4 本章小结

第6章 实验设计和数据分析

6.1 实验平台与方法设计

6.1.1 实验环境搭建

6.1.2 基准测试程序

6.1.3 性能指标

6.2 运行时预取参数的监测对比

6.2.1 运行时CAWR和访存指令数量关系

6.2.2 运行时预取阈值变化情况

6.3 预取条件下程序的综合性能对比

6.3.1 预取准确度的对比

6.3.2 预取策略下LLC hit率的性能分析

6.3.3 预取策略下系统IPC的性能分析

6.4 额外开销分析

6.5 本章小结

第7章 总结和展望

7.1 总结

7.2 展望

参考文献

攻读硕士学位期间主要的研究成果

致谢

展开▼

摘要

CUDA编程模型的引入大大地推动了GPGPU在通用计算领域的发展,异构CPU和GPU协同工作,在程序运行过程中,两者存在着大量的数据交互。为了提高双方的数据交换的效率,早期的研究者们提出在CPU和GPU之间设立共享最后一级cache,LLC。实验中我们发现,很多GPGPU程序的访存模式呈流式模式,对于此类程序,LLC的性能会很差。我们测试了Rodinia和CUDA sdk中的部分程序,发现除了数据集较小的个别程序,其他的LLC miss率均达到30%以上,个别甚至超过99%。另外我们利用功能模拟调节程序中的LLC miss率后发现,随着LLC的hit率的提升,整个系统的IPC具有较大程度的提高。
  预取手段和其他缓存优化手段相比可以较大程度地提升LLC的hit率,其效果主要由预取的准确度决定。GPGPU中同一kernel下的所有线程均共享同一套指令,线程中的访存地址仅由kernel中的访存基址和线程号决定,因此GPU上的对访存地址的预测仅需预测将要被调度到的线程的线程号,这比在CMP上的预取要精确得多。现有对GPGPU的预取主要集中于线程内部的预取以及跨越线程的预取,但GPGPU在运行过程中所有的线程是以warp为单位进行组织和调度的,单以线程为单位进行预取的准确度和效率均不高。
  本文提出一种能够适应warp调度特征的预取策略,WAP(Warp AwarePrefetching),以warp为单位进行预取可以在运行时使得预取的地址和程序中warp的地址簇相适应,符合GPGPU程序的访存规律,有效的降低当前的访存处理延迟。本文将预取功能模块分为两大块,其一是在流多处理器,SM端的监测以及预取发起模块;其二是全局的预取仲裁合并模块。
  在SM端,首先我们设计了一种线程预处理器,获得kernel程序中的访存点的位置以及访存点间的时间间隔。其次为了能够更好地量化和监测程序运行时warp的状态,我们提出使用当前活动warp比率,CAWR(Current Active Warp Ratio)作为评判访存是否拥挤的标志,并设立阈值确定决定当前的能否发起预取,当访存空闲时发出预取请求,并根据当前的访存处理延时以及预取处理延迟确定预取的目标访存点。最后为了能更好地适应程序的执行环境,我们提出了一种自适应的方式有效地确定当前的预取阈值。
  已有对GPGPU预取的工作中发现GPGPU中由于线程数量较为庞大,预取请求极易容易造成访存端口的堵塞。为了避免这种情况,保证预取请求不影响程序的原本访存性能,本文提出在全局设立预取器。全局预取器根据当前访存的繁忙程度控制向访存控制器发出请求的带宽,并使用一种较为公平的预取调度算法,按照尽可能公平的方式调度已有的预取请求。另外对于来自不同SM但相同地址块引用的数据,预取器还具备预取请求归并机制,减少发起预取请求的数量。
  为了验证本文的预取策略,本文实现了WAP预取策略,并与当前已有基于多线程的预取方法MAP进行对比。数据表明本文提出的WAP的LLC命中率与MAP相比具有11.8%的性能提升,WAP的IPC与MAP相比具有11.39%的性能提升。而额外引入的硬件模块实现功能具有较为简单的逻辑性,其造成的额外代价均在可接受范围之内。实验证明本文提出的WAP预取策略能够更好地适应GPGPU的程序执行特征,可带来较好的LLC性能提升和系统IPC性能提升。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号