1、第 43卷 第 1期2023年 2月Vol.43,No.1Feb.,2023固体电子学研究与进展RESEARCH&PROGRESS OF SSE一种针对栅栏同步的 GPGPU微架构优化设计贾世伟1 张玉明1 田泽2 秦翔3(1 西安电子科技大学 微电子学院,西安,710068)(2 中国航空计算技术研究所 集成电路与微系统设计航空科技重点实验室,西安,710068)(3 西安翔腾微电子科技有限公司,西安,710068)20220920收稿,20221107收改稿摘要:为了降低通用图形处理器(GPGPU)中栅栏同步开销对程序性能产生的不良影响,提出了一种 GPGPU微架构优化设计。该设计在线程束
2、调度模块中,根据栅栏同步开销决定各线程束的调度顺序,确保高栅栏同步开销的线程束能够优先调度执行。在一级数据缓存模块中,结合数据缓存缺失率与栅栏同步状态来共同决定各访存请求是否需要执行旁路操作,由此在不损害数据局域性开发的前提下,降低数据缓存阻塞周期对栅栏同步产生的影响。两种子模块优化设计均能够降低栅栏同步开销。实验结果表明,相比基准 GPGPU 架构与当前现有的栅栏同步优化策略,本设计在栅栏同步密集类程序中分别带来了 4.15%、4.13%与 2.62%的每周期指令数提升,证明了优化设计的有效性与实用性。关键词:通用图形处理器;栅栏同步;线程束调度;一级数据缓存;缓存旁路;性能中图分类号:TN
3、4 文献标识码:A 文章编号:10003819(2023)01007008An Optimization Design of GPGPU Microarchitecture for Barrier SynchronizationJIA Shiwei1 ZHANG Yuming1 TIAN Ze2 QIN Xiang3(1 School of Microelectronics,Xidian University,Xian,710071,CHN)(2 China Institute of Aeronautical Computing Technology,Key Laboratory of Avi
4、ation and Technology on Integrated Circuit and MicroSystem Design,Xian,710068,CHN)(3 Xiangteng Microelectronics Corporation,Xian,710068,CHN)Abstract:In order to reduce the impact of general-purpose graphics processing unit(GPGPU)barrier synchronization overhead on the execution performance of applic
5、ations.we propose an optimization design of GPGPU microarchitecture.In warp scheduling module,the scheduling order of each warp is determined according to the barrier synchronization overhead,so as to ensure that warps with high barrier synchronization overhead have the higher priority.In L1 data ca
6、che module,the data cache miss rate and the barrier synchronization state are combined to determine whether each memory access needs to perform the bypassing operation or not.Therefore,the influence of cache stall latency on barrier synchronization is reduced without impairing the data locality.The
7、optimization of these two modules can reduce the overhead of barrier synchronization effectively.The experimental results show that our design brings 4.15%,4.13%and 2.62%instruction per cycle(IPC)improvements in barrier synchronization intensive applications respectively,when compared with baseline
8、GPGPU and the current barrier synchronization optimizations.Experiments prove the effectiveness and practicality of our 硅微电子学基金项目:装备联合基金资助项目(6141B05200305)联系作者:Email:DOI:10.19623/ki.rpsse.2023.01.0131期贾世伟等:一种针对栅栏同步的 GPGPU 微架构优化设计design.Key words:generalpurpose graphics processing unit;barrier synchr
9、onization;warp scheduling;L1 data cache;cache bypassing;performance引 言近年来大数据驱动科学技术应用领域的不断丰富,对应用算法的加速平台性能提出了更高的要求,传统基于中央处理器(Central processing unit,CPU)的处理平台早已无法满足算法性能需求1。通用图形处理器 GPGPU 因其海量多核多线程并行执行的架构设计所带来的强大数据并行计算能力,天然适合于大数据任务的加速处理,目前已被广泛地应用于人工智能、生物医疗、地震海啸预测、核试验模拟等高精尖技术研究中24。针对 GPGPU 技术的探索研究能够为当前热门
10、科技领域的探索发展提供有效支撑,具有重要的意义与价值!工业界对 GPGPU 技术的研究目标是尽可能提高 GPGPU 的峰值算力以及同时期热门场景算法的加速性能。前者一般是由微电子工艺技术的不断进步支持,而后者通常是通过在 GPGPU 中引入专用加速单元模块来解决。2017 年英伟达公司发布GPGPU Volta架构,该架构集成 211亿晶体管,片上提供了海量并行计算资源。此外,考虑到同一时期深度神经网络技术的火热发展,Volta架构首次引入张量(Tensor)处理核心,专门用于神经网络中通用矩阵乘加操作的加速处理5。2018年英伟达公司发布 Turing 架构,除了计算资源的进一步增加外,Tu
11、ring 架构还引入专用光线追踪处理单元,专门用于满足虚拟现实、增强现实等热门技术对复杂图形实时性渲染的性能要求6。2020年英伟达公司发布的 Ampere 架构首次采用三星 8 nm 工艺,片上集成高达 540 亿晶体管,这一代的 GPGPU 技术首次在架构中引入了对神经网络稀疏性开发的硬件支持,通过专用的 2 4稀疏矩阵结构与稀疏矩阵乘累加操作实现深度神经网络算法的最大化加速7。不同于工业界,学术界对 GPGPU 技术的研究集中于通过优化 GPGPU 中子功能模块的结构设计以提高程序执行时计算资源的利用效率,其中线程束(warp)调度模块与一级数据缓存(L1Dcache)模块是两个非常热门
12、的 GPGPU 架构优化子方向。warp 调度单元用来决定 GPGPU 中各 warp 的调度执行顺序,而各 warp 的调度顺序对 GPGPU 中访存性能、栅栏同步开销等均有重要的影响。Chen等人提出一种始终优先一个 warp 调度执行的策略,Lee等人提出根据各 warp 的执行任务量来确定 warp 调度顺序89。Sethia 等人提出一种动态 warp 调度策略,该方法仅在存储资源饱和的情况下优先一个warp执行,剩余时刻确保所有 warp有相同的调度优先级10。Yoon 等人提出两级 warp 调度策略,通过对所有的 warp 分组调度来缓解 GPGPU 中访存阻塞现象所带来的不良
13、影响11。针对数据 cache 模块,一种优化思路是在程序运行时动态判断各访存请求是否执行 cache 旁路,Jia 等人根据访存请求属于的线程块索引、warp索引等信息来决定是否执行cache旁路12。Li等人动态采样不同 cache旁路配置下程序的执行性能,采样结束后以最优的配置完成后续程序任务的执行13。Koo、Xie等人均根据访存指令请求数据的局域性特征来动态决定其对数据cache 是否执行旁路操作1415。另一种 cache 优化思路专注于返回数据在 cache中的写回策略。Li等人根据预定义的数据局域性判定阈值来决定返回数据是否需要写入 cache中16。Yang进一步提出在程序执
14、行时动态对判定阈值进行更新17。Zhang等人根据访存指令的 PC 值决定其请求 cache 行的数据局域性,进而决定该 cache 行保存的数据是否会被替换18。Son 等人将 cache 中保存数据的空间划分为高局域性与低局域性部分,访问全局存储返回的数据只会在低局域性部分寻找可替换空间,由此保证高局域性数据尽可能保留在 cache 中以提高 GPGPU 访存效率19。针对 GPGPU 栅栏同步操作会降低可并行调度执行的 warp 数量,进而降低 GPGPU 计算资源利用效率并损害程序执行性能的问题,本文提出了一种GPGPU 微架构优化设计分别对 warp 调度模块与L1Dcache 模块
15、进行了优化。warp 调度模块根据栅栏同步开销来动态调整各 warp 的任务调度与执行顺序,确保栅栏同步开销最大的 warp具有最高的调度执行优先级;L1Dcache模块结合栅栏同步状态与cache 缺失率来动态决定各指令访存请求是否执行cache旁路操作,进而降低受栅栏同步开销影响的多个 warp 的访存阻塞延时。本文提出的微架构优化设计采用 GPGPUSim(3.2.2 版本)架构模拟器实现,并通过一组栅栏同步密集类程序进行功性能验证。结果表明相比现有的栅栏同步优化策略,本文71固 体 电 子 学 研 究 与 进 展 http:GTDZ43卷提出的优化设计能够进一步降低 GPGPU 栅栏同
16、步开销,体现了架构设计的先进性与有效性。1 背景知识 1.1 GPGPU体系结构与存储系统图 1为 GPGPU 基础架构20。相比 CPU,GPGPU 大幅度简化了片上控制逻辑,将节省下来的晶体管资源用于构建海量并行计算核心。GPGPU 将所有计算核心均匀地划分成了多个执行组,每一个执行组称为一个流多处理器(Streaming multiprocessor,SM),每一个 SM 均包含完整的指令执行流水单元。为了确保多线程能够正确使用并行计算核心,SM 中还包括 warp 调度、计分板(Scoreboard)等控制逻辑。一 个 典 型 的 GPGPU 程 序 包 含 CPU 主 控 与GPGPU 并行加速两部分。当程序运行时,CPU 首先通过互联总线将需要并行加速处理的数据搬运到 GPGPU 显存中,并将 GPGPU 核(kernel)函数启动。接下来,GPGPU 线程分发单元依据 kernel函数的定义生成海量多线程,并将所有线程以线程块(Thread block,TB)为 粒 度 下 发 到 GPGPU 的 各SM 中。接下来,SM 进一步将每个线程块划分为多个线程束 warp 来