论文部分内容阅读
异构多核处理器是一个或多个CPU和多个应用于特定领域的专用处理器核组成的系统架构,每个内核都有不同的结构和擅长的程序。对比同构多核架构,异构多核架构的优势在于能够并行执行各种要求的任务,将所有任务按照各自特点分配到合适的处理器上,全面提升运行效率。多个CPU与GPU核心集成在同一个芯片上会争夺系统资源,包括缓存、内存等,对资源分配技术带来了新的挑战。CPU-GPU异构架构中的核心争夺共享内存资源时,核心之间的访存请求会相互影响。首先来自GPU的内存访问请求会严重干扰到CPU的访存性能,同时多个CPU之间的访存请求在访问内存时会相互交织在一起,性能也会受到很大影响。另外,现代的内存请求调度策略平等地处理GPU多个核心的请求,不会考虑核心之间的访问延迟差异。经过验证,核心之间的访存延迟差异会增加访存的平均延迟时间。内存管理是异构架构必须考虑的问题。无论处理单元多快,如果内存请求处理的能力跟不上,整体性能也不会得到很大的提升。现有的共享内存管理技术大部分都是应用于同构多核CPU系统中,没有考虑到CPU和GPU之间的访存差异。少量异构多核内存管理技术也没有对GPU核心之间的延迟差异进行深入的研究。为了解决CPU-GPU异构多核共享内存存在的问题,本文提出了一个基于访存差异的内存调度策略,BMAD-MS(Memory scheduling based on memory access difference)。首先通过基础实验具体分析了CPU和GPU的内存访问行为,实验结果表明CPU和GPU的内存访问行为差异明显。进一步验证了核心之间的内存访问干扰以及GPU核心之间的访问延迟差异确实存在。基于分析结果,首先在内存控制器中仿照原有内存请求队列创建一个新的请求队列。内存控制器在接收内存请求时根据请求来源将CPU请求和GPU请求保存到不同的队列中,避免GPU请求对CPU请求的干扰。通过一个简单的随机数优化决策决定当前处理的是CPU请求队列还是GPU请求队列。针对CPU请求队列,实现一个动态存储体(Bank)划分策略。根据不同应用的内存特征,将应用请求动态地映射到不同的Bank集合中,在不影响Bank级并行度的同时消除多个CPU应用的内存请求干扰。针对GPU请求队列,进一步引入关键性衡量不同GPU核心之间的访问延迟差异,改进默认的FR-FCFS(First Ready-First Come First Service,先就绪、先到达先服务)策略,实现一个关键感知内存调度用来平衡GPU应用的访问局部性和关键性。为了准确地评估BMAD-MS对内存系统性能的影响,本文使用经典的gem5-gpu模拟器构建异构多核处理器架构来评估实验方案对系统性能的影响。gem5-gpu集成了Mc PAT和GPUWattch功耗模型实现能耗统计,分别选择SPEC CPU2006和Rodinia作为CPU和GPU应用程序的测试集进行实验验证。根据实验结果,同gem5-gpu应用的FR-FCFS相比,BMAD-MS平均提高了17%的系统性能,最高提升了21%,系统性能得到了显著提升。