面向GPGPU体系结构的软错误弹性分析与容错策略研究
【摘要】:近年来,通用图形处理器(General-Purpose graphics Processing Units,GPGPU)因其高并行性以及不断改进的可编程性,被广泛应用于高性能计算(High-Performance Computing,HPC)中心以提供大规模并行数据处理能力。不同于传统GPU主要用于图形计算,GPGPU被广泛应用于科学计算、机器学习、数据挖掘等通用HPC程序。因此,确保其在软错误影响下的可靠性变得尤为关键。为实现GPGPU可靠性和性能、能耗的协同优化,本文从优化容错技术能效角度出发展开系统性研究,研究内容涵盖软错误弹性分析方法、预测模型以及容错策略。软错误弹性分析旨在表征GPGPU程序对软错误的容忍程度,并支持有效划分和甄别GPGPU计算系统的错误弹性区域,进而为研制不同粒度的高能效容错策略提供依据;为加速传统软错误弹性分析过程,软错误预测模型旨在挖掘错误弹性启发式特征并驱动机器学习模型来拟合启发式特征与GPGPU程序错误弹性间的相关关系,进而支持快速、高效预测GPGPU程序的软错误敏感度;依据软错误弹性分析方法及预测模型的相关结论,软错误容错策略旨在通过冗余执行、错误校验码等机制来提升GPGPU计算系统的可靠性。具体研究内容如下:1.软错误弹性分析方法:考虑到一些GPGPU程序本身对于不精确的计算结果具有一定容忍度,受近似计算思想启发,本文提出了基于软错误感知的GPGPU程序近似分析框架(G-SEAP)来表征由软错误引发的错误结果的近似特性。与传统分析方法认为所有由软错误引起的静默数据损坏(Silent Data Corruptions,SDCs)都无法容忍不同,G-SEAP通过松弛程序SDCs错误误差约束来引导研究人员避免对GPGPU程序错误弹性区域的过度保护。利用G-SEAP分析框架,本文对17个代表性HPC基准程序进行了多维度的详尽分析,观察到平均72.7%的SDCs是可近似接受的。此外,通过不同维度的分析,本文发现应用程序数据流、kernel函数可靠性需求、指令类型和数据高低位都是影响GPGPU程序可靠性的重要因素。2.软错误预测模型:为解决传统故障注入(Fault Injection,FI)错误弹性分析方法开销过大的问题,本文构建了面向GPGPU程序的软错误预测模型(G-SEPM),能够替代FI快速、准确地预测GPGPU程序的位级(bit-wise)错误弹性。G-SEPM的核心见解是发掘故障点(fault site)的指令类型、高低位、位翻转方向和错误传播信息具有表征其软错误弹性的能力。利用这些启发式特征,G-SEPM驱动机器学习模型揭示了故障点错误弹性与启发式特征间的隐含关系。实验结果表明,G-SEPM对GPGPU程序单故障点软错误弹性预测的平均准确率为93.92%;能够以95.39%的精度覆盖程序中95.99%的关键故障点;平均比FI分析快6557X。基于G-SEAP及G-SEPM的相关分析/预测结论,针对数据存储和指令执行过程的软错误威胁,本文设计了两种高能效软错误容错策略:1.高能效错误校验码(Error Correction Codes,ECCs)机制:为解决GPGPU寄存器文件中ECC机制能耗过高的问题,本文利用指令软错误敏感性差异、warp中同名寄存器的重复特性以及浮点数据低位的错误鲁棒性,结合GPGPU特有架构,设计了一种软硬件协同的高能效ECC机制(Eff-ECC)。Eff-ECC由指令敏感度感知ECC(IA-ECC)、复制感知ECC(DA-ECC)以及数据位敏感度感知ECC(BA-ECC)组成。考虑到指令的软错误敏感性差异,IA-ECC仅对软错误敏感指令的写寄存器触发ECC机制;观察到warp中同名寄存器经常保存相同的数据,DA-ECC通过ECC复用避免了冗余的ECC生成和校验过程;利用程序固有的误差容忍特性,BA-ECC仅保护浮点寄存器的重要位以对抗关键错误。实验结果表明,Eff-ECC能够将传统SEC-DED ECC能耗降低86.46%。同时,Eff-ECC的高能效也将为低功耗嵌入式GPGPU架构提供了可行的ECC设计方案。2.近似指令复制技术:为减轻指令执行过程中发生软错误的影响,本文提出了一种高能效的近似指令复制技术,通过松弛程序中错误非敏感指令集合的保护来提升指令复制技术能效。实验结果表明,近似指令复制技术通过仅冗余执行约33.70%的错误敏感指令,能够将程序SDC率从70.51%降低到5.19%,指令复制比较传统方法减少了49.86%。针对GPGPU中的软错误威胁,本文首先提出了面向GPGPU程序的错误弹性分析方法和预测模型,能够有效度量软错误对GPGPU的影响程度。基于错误弹性分析方法和预测模型的相关结论,本文进一步提出了高能效ECC机制及近似指令复制策略来提升数据存储和指令执行过程的软错误可靠性。面向GPGPU体系结构,本文旨在研究构建更为“错误高效”(error-efficient)的软错误容错技术和方法,避免软错误对计算系统的过度扰动,使系统在性能、能耗和可靠性等维度更佳平衡。