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 主 控 与GPGP
17、U 并行加速两部分。当程序运行时,CPU 首先通过互联总线将需要并行加速处理的数据搬运到 GPGPU 显存中,并将 GPGPU 核(kernel)函数启动。接下来,GPGPU 线程分发单元依据 kernel函数的定义生成海量多线程,并将所有线程以线程块(Thread block,TB)为 粒 度 下 发 到 GPGPU 的 各SM 中。接下来,SM 进一步将每个线程块划分为多个线程束 warp 来进行相互独立的调度、管理与执行。需要注意的是,warp 调度单元在每一周期对SM 中的所有 warp 进行优先级排序,排序完成的各个 warp 由 warp 发射单元进一步进行执行状态的判定,一旦有符
18、合发射条件的 warp,则对剩余 warp 执行状态的判定终止,warp发射单元将该 warp发射到其指令对应的执行流水中。GPGPU 通过多级多类型存储系统来尽可能确保海量多线程的访存效率。寄存器文件是 GPGPU中第一级存储资源,SM 中的每一个 warp 均由其独立的寄存器空间来暂存临时数据。第二级存储资源为 L1Dcache,其由所有 warp 共享并动态保存各warp 执行访存指令所请求的数据。当 warp 执行访存指令并产生多个访存请求时,各访存请求会依次在 L1Dcache中进行数据查找,如果请求的数据已存在,则该数据将直接返回,否则,L1Dcache会在其内部找出一块能够被替换
19、的数据空间,并进一步向下级存储发送该访存请求。而当下级存储将请求的数据返回给 L1Dcache 时,L1Dcache 会将返回数据写入到先前预留的数据空间中。第三级存储为L2Dcache,其由 GPGPU 中所有的 SM 所共享。最后一级存储为片外全局存储,一般仅用于保存与CPU 交互的数据。1.2 栅栏同步概念与研究现状栅 栏 同 步(Barrier synchronization)是 GPGPU设计的一项重要机制,该机制在任务指令流中插入了同步点,一个线程块内的各个 warp需要在该点处执行同步操作,进而统一执行进度以进一步执行后续的指令任务。栅栏同步机制的引入是因为 GPGPU 中逻辑上
20、处于完全并行的多个 warp在实际执行指令任务时有先后之分。受 warp 调度策略等因素的影响,各 warp发送访存请求的顺序不一定按程序中预定义的顺序进行,由此 GPGPU 中由各 warp 共享的存储资源可能被无序的访问,进而产生读后写、写后读等数据冒险问题并导致程序执行错误。通过栅栏同步机制,各 warp能够以正确的顺序访问GPGPU 共享存储资源,保证多线程并行执行的正确性。然而,栅栏同步机制本身也会引入一定的代价。这是因为在一个线程块中先命中同步点的warp会始终处于无法执行的状态,直到块内最后一个 warp命中同步点并统一进行释放,在这个过程中SM 内可执行的 warp数量会逐渐减
21、少。正如前文所述,GPGPU 通过多 warp 交替调度执行来确保计算资源得到充分的利用,因此可执行 warp数量的降低会导致部分周期内 GPGPU 计算资源处于闲置状态,进而损伤程序的执行性能。为了解决此问题,Liu 等人21针对 warp 调度模块进行了优化,提出了一种基于同步的 warp 调度(Synchronization aware warp scheduling,SAWS)设图 1 GPGPU 架构示意图Fig.1 GPGPU baseline architecture721期贾世伟等:一种针对栅栏同步的 GPGPU 微架构优化设计计。SAWS 依据各线程块中第一个 warp 命中
22、栅栏同步点的时刻为依据来决定 SM 内各 warp 的排序优先级,越早命中同步点的线程块,其内部剩余warp的排序优先级越高,因此其越能够优先完成栅栏同步操作进而增加 SM 中可执行 warp 数量。Liu等人22进一步提出了一种注意栅栏的 warp 调度(Barrier aware warp scheduling,BAWS)优化设计,不同于 SAWS,BAWS 以各线程块中命中栅栏同步点的 warp数量作为判定排序优先级的依据,线程块对应的数量越高则其内部的剩余 warp 的优先级也就越高。以上的两种策略均在一定程度上降低了栅栏同步操作的代价并提升了程序执行性能,然而,上述的策略仅仅针对 w
23、arp 调度模块进行了优化,并未考虑到访存效率对栅栏同步代价的影响。事实上当各 warp的访存请求数据由于 cache缺失或cache 阻塞等因素而无法及时返回,则该 warp 同样无法继续执行指令任务,进而导致栅栏同步代价的上升。因此如果能够在不损失 cache性能的前提下尽可能降低访存请求在 cache 处的阻塞延时,则能够有效缓解访存延时对栅栏同步造成的不良影响。基于上述的分析,本文提出了一种针对栅栏同步的微架构优化设计,该设计分别对 warp调度模块与 L1Dcache模块进行了优化。其中 warp调度单元动态收集各线程块内命中栅栏同步点的 warp数量,并基于此信息进行 warp排序
24、。而 L1Dcache单元结合程序执行时 L1Dcache 缺失率与各线程块栅栏同步状态来动态决定访存请求是否需要执行 cache旁路操作,由此能够降低 L1Dcache阻塞延时进而降低栅栏同步开销。下一节将详细描述本文提出微架构设计与工作原理。2 针对栅栏同步的 GPGPU 微架构优化设计 2.1 注意栅栏同步的 warp调度策略注意栅栏同步的 warp 调度策略动态收集各线程块在程序运行时命中栅栏同步点的 warp数量,该数值的大小作为反映各线程块的栅栏同步开销来决定其调度的优先级。图 2 展示了注意栅栏同步的 warp 调度策略,其中 warp排序与 warp发射是 warp调度单元固有
25、的功能。本策略在 warp 调度单元中进一步增加了一个查找表,查找表的入口包含两个功能域,第一个功能域用于对 SM 内各线程块进行索引,而第二个功能域记录了线程块内命中栅栏同步点的 warp数量。当 warp执行命中栅栏同步点时,warp调度单元会根据该 warp的线程块索引找到查找表中的对应入口,并将其第二个功能域的数值增加 1,表示该线程块内增加了一个命中栅栏同步点的 warp。若线程块内的所有 warp都命中了栅栏同步点,此时栅栏同步操作执行完成,则 warp调度单元会将该入口第二个功能域的数值重置为 0,下一周期该线程块内的所有 warp均恢复到可调度执行状态。当各个 warp需要进行
26、调度优先级排序时,warp调度单元会读取查找表中各线程块对应的数值,数值越大则说明该线程块中阻塞于栅栏同步点的warp数量越多,因此该线程块内剩余 warp的排序优先级就越高。如果不同线程块具有相同的数值,则索引值更小的线程块具有更高的排序优先级。通过此方法,SM 中各线程块的排序优先级得到了确定。最后,warp调度单元按各线程块的排序优先级依次将其内部各 warp 排入 warp 序列中。由此来自高同步开销线程块的 warp 将处于 warp 调度序列的顶部,这些 warp 具有最高的执行优先级,因此能够尽早命中栅栏同步点以降低栅栏同步开销。2.2 基于栅栏同步的 L1Dcache旁路判定策
27、略基于栅栏同步的 L1Dcache 旁路判定策略通过收集程序执行时的 L1Dcache缺失率,并结合各线程块的栅栏同步状态来动态判定访存请求是否执行L1Dcache 旁路,为此,需要首先确定访存请求的旁路判定准则。这里需要注意的是旁路判定准则的制定需要充分考虑 L1Dcache 对程序中数据局域性的开发情况。这是因为在 GPGPU 中同一个访存请求在 L1Dcache命中或缺失时,其访存性能存在数十倍的差异。如果仅根据栅栏同步状态来决定访存图 2 注意栅栏同步的 warp调度策略Fig.2 Warp scheduling for barrier synchronization73固 体 电 子
28、 学 研 究 与 进 展 http:GTDZ43卷请求旁路判定准则,则程序中高局域性访存请求也不得不频繁执行 L1Dcache旁路操作,由此导致的性能损失可能远大于降低栅栏同步开销所带来的性能上升。基于上述分析,本策略使用运行时 L1Dcache缺失率来反映程序的数据局域性状态,并结合各线程块的栅栏同步状态来共同决定访存请求是否执行L1Dcache旁路操作。图 3 展示了本策略定义的 L1Dcache 旁路准则的三种判定结果,包括全旁路、部分旁路与保留。可以看到本设计静态定义 L1Dcache 缺失率的阈值上限为 0.9,若 L1Dcache 的缺失率超过 0.9,则说明cache在当前程序执
29、行时性能糟糕,由此本设计判定程序中所有在 cache 中缺失的访存请求为全旁路。程序执行时的 L1Dcache 缺失率过高可能是由于两点原因:其一,大量的访存请求反复竞争有限的cache空间,保存的数据未经再次请求就被反复替换出 cache,导致数据局域性的损失;其二,访存请求访问的数据本身不具有局域性。无论由于何种原因,此时访存请求均不应该在 L1Dcache 中阻塞。因此在全旁路判定下如果访存请求未命中 L1Dcache,且当前 cache 中无可以替换的数据空间,则 L1Dcache立即执行此访存请求对 L1Dcache的旁路操作。此 外,当 L1Dcache 缺 失 率 处 于 0.6
30、0.9 之 间时,说明 L1Dcache 部分开发了程序中的数据局域性,因此访存请求执行部分旁路的工作模式。该模式下 L1Dcache 会提取发出该访存请求的线程块对应的索引,并在 warp 调度单元的查找表中进行判定。如果当前周期下该线程块中存在阻塞于栅栏同步点的 warp,则 L1Dcache 就对该访存请求执行旁路操作,由此确保该访存请求能够尽快执行以降低栅栏同步开销;如果该线程块中不存在命中栅栏同步的 warp,则 L1Dcache 判定该访存请求访问的数据需要保存在 cache 中,此时,直到 cache 中存在可 以 被 替 换 的 数 据 空 间 时,该 访 存 请 求 均 会
31、在L1Dcache 处 阻 塞。通 过 部 分 旁 路 工 作 模 式,L1Dcache既降低了栅栏同步开销,又开发了程序中的数据局域性。最后,当 L1Dcache 的缺失率低于 0.6 时,说明L1Dcache 已经能够较为良好地开发程序中的数据局域性,此时对访存请求执行旁路操作将得不偿失。因此无论是否来自于正在执行栅栏同步的线程块,缺失的访存请求都将在 L1Dcache中等待数据空间的分配。通过上述的 L1Dcache旁路判定策略,本设计在确保良好的数据局域性开发状态下进一步降低了L1Dcache阻塞延时对栅栏同步产生的影响,进而带来程序性能的提升。3 实验方法与结果 3.1 实验环境与参
32、数说明选用 GPGPUSim 架构模拟器(3.2.2版本)来实现本文提出的微架构优化设计,并复现先前针对栅栏同步的优化策略 SAWS 与 BAWS 以进行对比23。GPGPUSim是当前学术界公认的周期精确GPGPU架构模拟器。以模拟器提供的GTX480架构为基础,该架构内部包含15个SM,每个SM最大包含1 536个线程,每32个线程被定义为一个warp,基础架构下的warp调度算法为贪婪调度算法(Greedythenoldest,GTO),L1Dcache容量为16 kB。选用来自 GPGPU 标准测试集 parboil、rodinia的一组栅栏同步密集类程序来对优化设计进行测试,包括向量
33、点乘(Scalar product,SP)、LU 矩阵分解(LU decomposition,LUD)、快 速 沃 尔 什 变 换(Fast Walsh transform,FWT)、散斑抑制的各向异性 扩 散(Speckle reducing anisotropic diffusion,SRAD)、特定浮点计算(Particular float,PF)、直方图(Histogram,HIS)、模板计算(Stencil,ST)、绝对差值和(Sum of absolute differences,SAD)2425。通过 指 标 因 子 栅 栏 同 步 周 期、L1Dcache 缺 失 率 与L1D
34、cache 阻塞周期来反映优化设计对程序执行状态产生的影响。最后通过指标因子每周期执行指令数 IPC来直接反映优化设计所带来的性能提升。3.2 实验结果3.2.1 栅栏同步周期图 4 展示了所有测试程序在基准架构 GTO、SAWS 与 BAWS,以及本文提出优化设计中执行时的栅栏同步周期,周期数值面向基准架构进行了归一化处理以充分反应不同架构设计所引入变化。图 3 注意栅栏同步的数据 cache旁路判定Fig.3 Data cache bypassing decision for barrier synchronization741期贾世伟等:一种针对栅栏同步的 GPGPU 微架构优化设计很显
35、然栅栏同步周期越小,则表示同步引入的代价开销就越低。可以看到,在执行测试程序 SRAD、FWT、LUD、SAD、HIS 时,提出的优化设计与现有的优化策略 SAWS、BAWS 均一定程度上降低了程序中的栅栏同步周期,而在执行 SP、ST 时,本设计相比传统策略进一步降低了栅栏同步周期。经过分析发现这两个程序中阻塞于 L1Dcache 的部分访存请求来自于正在执行栅栏同步的线程块,而本设计能够在 SM 中出现栅栏同步时动态旁路阻塞于L1Dcache 的请求,进而降低 L1Dcache 阻塞对栅栏同步造成的影响。总的来说,本设计相比基准架构GTO、SAWS 与 BAWS,平 均 降 低 了 17.
36、09%、3.97%与 5.82%的栅栏同步周期。3.2.2 L1Dcache缺失率与阻塞周期图 5展示了测试程序在不同架构设计中执行时的 L1Dcache 缺 失 率,可 以 看 到 相 比 基 准 架 构,SAWS、BAWS 以及本设计执行时的 L1Dcache 缺失率无明显变化,说明本设计引入的 L1Dcache旁路策略并未影响程序中数据局域性的开发,各策略下程 序 执 行 时 的 L1Dcache 缺 失 率 平 均 变 化 不足 1%。图 6为各程序在执行时的 L1Dcache阻塞周期,其中程序 SAD 执行时未出现 L1Dcache 阻塞现象,因此图中并未有其对应的部分。可以看到本设
37、计在程序 ST 中带来了明显的优势,其 L1Dcache 阻塞周期仅为基准架构的 45.79%。经过进一步分析发现 ST 程序的 L1Dcache缺失率高达 99%,说明该程序的访存请求基本上不具有数据局域性。此时提出的 L1Dcache 动态旁路策略能够有效降低程序执行时的 L1Dcache 阻塞周期,进而缓解栅栏同步开销。此外,本设计在 SP、LUD 以及 PF 中也小幅降低了 L1Dcache阻塞周期,其中程序 SP 的 L1Dcache缺失率为 100%,说明所有访存请求的数据均无局域性,由此本设计同样取得了良好的效果。而程序FWT 以及 HIS 在本设计中执行时,其内部少许高局域性访
38、存请求被判定为 L1Dcache旁路,由此导致L1Dcache阻塞周期的小幅度上升。总体上讲,本设计相比基准架构 GTO、SAWS 与 BAWS,平均降低13.86%、14.01%与 10.44%的 L1Dcache阻塞周期。3.2.3 IPC图 7 展 示 了 测 试 程 序 在 基 准 架 构 GTO、SAWS、BAWS 以及本系统设计中执行时的 IPC。可以看到本设计在程序 ST 与 SP 中取得了良好的性能提升,这是因为 SP 与 ST 中本身包含一定数量的访存请求,且这些访存请求返回数据基本不具有局域性。此时,访存请求在 L1Dcache中的阻塞将带来额外的开销,而本设计能够降低程序
39、执行时的L1Dcache阻塞周期以降低栅栏同步开销,进而带来性能的提升。而在 SRAD、LUD、HIS 执行时本设计相比先前的优化策略有小幅度的性能提升,其中SRAD 的平均 cache 缺失率超过 80%,因此本设计通过 L1Dcache旁路机制能够比 BAWS 进一步提升图 4 栅栏同步周期(归一化)Fig.4 Barrier synchronization cycles(normalized)图 5 L1 data cache缺失率(归一化)Fig.5 L1 data cache miss rate(normalized)图 6 L1 data cache阻塞周期(归一化)Fig.6 L
40、1 data cache stall cycles(normalized)图 7 每周期执行指令数(归一化)Fig.7 Instructions per cycle(normalized)75固 体 电 子 学 研 究 与 进 展 http:GTDZ43卷其执行性能。而 LUD 程序中栅栏同步周期占总执行周期的比例很低,大约为 5%左右,因此各优化策略带来的性能提升较为有限。此外,在程序 SAD 与 PF 中传统栅栏同步优化策略的效果要略低于基准架构 GTO,经过分析发现传统优化策略虽然能小幅降低栅栏同步周期,但是warp 调度策略的调整影响了这两个程序中访存请求的效率,进而小幅度降低了程序的
41、执行性能。而在 PF 程序中本文提出的优化设计能够小幅度降低L1Dcache阻塞周期,因此程序执行时的实际性能与基准架构十分接近。总体上讲,本设计相比基准架构 GTO、SAWS以及 BAWS 分别提高 4.15%、4.13%以及 2.62%的程序执行性能,体现了设计的先进性与有效性。4 结 论 提出了一种针对栅栏同步的微架构优化设计,该设计分别对基准 GPGPU 中的 warp 调度单元与L1Dcache 进行了优化。针对 warp 调度单元,本文以线程块中命中栅栏同步的 warp 数量作为同步开销判定指标,并以同步开销为依据来决定各 warp的调度优先级,开销更大的 warp具有更高的调度优
42、先级。针对 L1Dcache模块,提出了一种针对栅栏同步的 L1Dcache 旁路策略,该策略根据程序执行时的cache 缺失率与栅栏同步状态来共同决定访存请求是否执行 L1Dcache 旁路。使用一组栅栏同步密集类程序作为测试激励,并复现了当前针对栅栏同步的优化策略 SAWS 与 BAWS 以进行对比。实验结果表明本设计相比基准 GTO、SAWS 以及 BAWS分别带来了 4.15%、4.13%与 2.62%的性能提升。参考文献1Owens J D,Houston M,Luebke D,et al.GPU computingJ.Proceedings of the IEEE,2008,96(
43、5):879-899.2 Krizhevsky A,Sutskever I,Hinton G.ImageNet classification with deep convolutional neural networksJ.Advances in Neural Information Processing Systems,2012,25(2):1106-1114.3黄轲.基于增强现实的肝脏模型切割变形关键技术研究 D.哈尔滨:哈尔滨工程大学,2020.4NVIDIA.石油天然气 OL.(2017-03-22)2022-9-17.http:/ Corporation.NVIDIA TESLA V
44、100 GPU ARCHITECTUREOL.(2017-08)2022-09-17.https:/ Corporation.NVIDIA TURING GPGPU ARCHITECTURE OL.(2018-08)2022-09-17 https:/ Corporation.NVIDIA A100 Tensor Core GPU ARCHITECTUREOL.(2020-10)2022-09-17.https:/ per.pdf.8Chen J,Xi T,Zhen Y,et al.Guided region-based GPU scheduling:Utilizing multi-threa
45、d parallelism to hide memory latency C.IEEE 27th International Symposium on Parallel&Distributed Processing,2013:441-451.9Lee Shin-Ying,Wu Carole-Jean.Criticality-aware warp scheduling for GPGPU workloadsC.ACM International Conference on Parallel Architectures and Compilation(PACT),2014:175186.10 Se
46、thia A,Jamshidi D A,Mahlke S.Speeding up gpu warps by reducing memory pitstops C.IEEE 21st International Symposium on High Performance Computer Architecture,2015:174185.11 Yoon M K,Oh Y,Kim S H,et al.Dynamic resizing on active warps scheduler to hide operation stalls on GPUs J.IEEE Transactions on P
47、arallel&Distributed Systems,2017,28(11):3142-3156.12 Jia W,Shaw K A,Martonosi M A.Memory request prioritization for massively parallel processors C.IEEE International Symposium on High Performance Computer Architecture,2014:272283.13 Li D,Rhu M,Johnson D R,et al.Priority-based cache allocation in th
48、roughput processorsC.IEEE International Symposium on High Performance Computer Architecture,2015:89100.14 Koo G,Oh Y,Ro W W,et al.Access pattern-aware cache management for improving data utilization in GPUC.In Proceedings of the 44th Annual International Symposium on Computer Architecture,2017:307-3
49、19.15 Xie Xiaolong,Yun Liang,Yu Wang,et al.Coordinated static and dynamic cache bypassing for GPUsC.IEEE International Symposium on High Performance Computer Architecture(HPCA),2015:7688.16 Li C,Song S L,Dai H,et al.Locality-driven dynamic GPU cache bypassing C.ACM on International Conference on Sup
50、ercomputing,2015:67-77.761期贾世伟等:一种针对栅栏同步的 GPGPU 微架构优化设计17 Yang Weiguang,Wang Yuxin,Yu Yulong,et al.Improving the decoupled L1D efficiency for GPU architectureC.In International Conference on Networking,Architecture,and Storage(NAS),2017:1-10.18 Yang Zhang,Xing Zuocheng,Tang Chuan.Locality-protected