论文部分内容阅读
随着科技的发展,高性能计算机在生产、生活、科技等方面越来越发挥着不可替代的作用。由于高性能硬件体系结构的迅速发展,高性能计算应用软件已无法充分发挥硬件体系结构的优势,因此有必要对高性能计算软件进行优化。基础数学函数库是高性能计算机中必不可少的软件之一,也是编译器至关重要的组成部分,众多领域的高性能计算应用软件都依赖于基础数学函数的计算结果,它的性能直接决定了众多领域的上层应用计算程序的执行效率。为了提升现版本国产申威基础数学函数库的性能,本文在研究申威1621处理器体系结构和程序优化技术的基础上,针对部分函数因浮点控制寄存器读写指令导致的流水线中断问题,提出了两种流水优化的指令段替换方法;应用浮点小数取整法通过提前移位和逻辑等操作将浮点数转换成为浮点整数,解决了浮点数转长字指令的浮点异常问题;提出了和判断法和商判断法,应用终点判断法实现了向0舍入模式下加法计算和除法计算。
在众多函数的计算过程中,常常需要将一个浮点数转换成一个整型数,并且有时需要设置舍入模式。若浮点数是一个浮点小数而不是浮点整数,在执行浮点数转长字指令后,会触发浮点异常控制器中的非精确异常控制位,从而产生非精确异常。因此本文提出浮点小数取整法,解决因浮点数转长字指令触发的非精确异常问题;
加法计算和除法计算在数值计算软件是不可缺少的,同时在部分函数中需要计算得出向0舍入模式下的加法和除法的计算结果。而申威1621处理器默认的舍入模式为就近舍入,要想得到向0舍入的计算结果,可以使用浮点控制寄存器读写指令提前设置舍入模式,但该方法会导致流水线中断,严重影响函数的性能。因此本文在分析就近舍入结果与向0舍入结果的关系后,提出终点判断法,实现了在就近舍入模式下得到向0舍入结果的目的。
实验结果表明,本文提出的方法成功的实现了指令段功能等效替换,对基础数学函数库性能提升明显。
在众多函数的计算过程中,常常需要将一个浮点数转换成一个整型数,并且有时需要设置舍入模式。若浮点数是一个浮点小数而不是浮点整数,在执行浮点数转长字指令后,会触发浮点异常控制器中的非精确异常控制位,从而产生非精确异常。因此本文提出浮点小数取整法,解决因浮点数转长字指令触发的非精确异常问题;
加法计算和除法计算在数值计算软件是不可缺少的,同时在部分函数中需要计算得出向0舍入模式下的加法和除法的计算结果。而申威1621处理器默认的舍入模式为就近舍入,要想得到向0舍入的计算结果,可以使用浮点控制寄存器读写指令提前设置舍入模式,但该方法会导致流水线中断,严重影响函数的性能。因此本文在分析就近舍入结果与向0舍入结果的关系后,提出终点判断法,实现了在就近舍入模式下得到向0舍入结果的目的。
实验结果表明,本文提出的方法成功的实现了指令段功能等效替换,对基础数学函数库性能提升明显。