论文部分内容阅读
龙芯系列处理器是中国科学院计算技术研究所自主研发的,兼容MIPS指令集的高性能通用处理器。目前已经广泛应用于各个领域,包括高性能计算、桌面和网络安全等。为了充分发挥龙芯处理器的优势,推动龙芯在高性能计算领域的应用,需要开发一套符合国际标准,并且适合龙芯处理器的高性能通用数学库。基本线性代数函数库BLAS是最基本最重要的数学库之一。本文在龙芯平台上,对运算量占到GotoBLAS库90%以上的核心函数矩阵乘法进行了移植,根据龙芯处理器的结构级和微结构级特性,对GotoBLAS矩阵乘法进行了分析和优化。并针对GotoBLAS算法无法有效控制数据Cache冲突替换这一问题,设计了一种地址交错乘法和有效的预取算法,取得了较好的效果。主要研究内容及结果如下:
⑴对GotoBLAS矩阵乘法进行移植,并通过微结构的分析和实验数据得出,一级数据Cache缺失是影响性能提高的关键因素,也是GotoBLAS分块策略在龙芯处理器上不能获得很高性能的原因。从而明确了优化GotoBLAS算法的方向。
⑵在不支持高效预取指令的龙芯2F上,对GotoBLAS矩阵乘法重点进行了分块优化,以降低数据Cache的缺失代价。优化之前,GotoBLAS矩阵乘法的性能为理论浮点峰值的33%,优化之后,性能达到了理论浮点峰值的56%。
⑶在支持高效预取指令的龙芯3号上,使用高效的预取指令,进一步对GotoBLAS乘法进行了预取优化。分析发现,由于GotoBLAS乘法无法有效控制LlCache冲突替换,使得性能难以进一步提升。为此设计了一种地址交错矩阵乘法和相应的预取算法,大大减少了数据Cache的冲突缺失和强制缺失。由于龙芯3号还没有完成流片,本文作者在龙芯3号单核仿真平台上进行了实验,实验结果显示:进一步预取优化后的GotoBLAS乘法性能达到理论峰值的59.2%,而通过地址交错和相应的预取算法,性能可以达到理论峰值的75%。