论文部分内容阅读
BWDSP104X是一款高性能的32位浮点DSP,该体系结构提供了包含浮点以及定点的算术与逻辑等基本的运算指令、数据传输指令、双字指令以及非运算类的指令。为了能够使用C语言来开发该处理器,特别的将Open64编译器移植到该BWDSP104X上,Open64编译器的前端采用的是GCC,后端有强大的优化功能模块。BWDSP104X是一款32位按字寻址的处理器,即该处理器所支持的数据类型都是32位宽的,这将对于一些非32位字宽的数据类型的处理造成一些问题,例如对于64位的数据,在该处理器上会出现较大的精度损失。并导致该字寻址模式与常见的字节寻址模式的不兼容。随着日益增多的高精度的运算,32位的数据运算不能够满足现有的需求,需要对32位的数据类型进行扩展。本论文的主要工作如下:1) BWDSP104X字节寻址模式的模拟与扩展通过在该Open64编译器的前端,将非32位的数据类型进行修改,产生出基于字节地址模式的中间代码;由于缺少相应的硬件指令的支持,在编译器后端的代码生成阶段,本文会使用一组指令来模拟原来的指令操作,可能会产生一定的代码膨胀。为达到优化目的,本文可以通过一些检测方法来限制该字节模式的使用,在一定程度上减少代码的膨胀。2) BWDSP104X 64位数据类型的模拟支持为了扩大该处理器的使用范围,需要将32位的数据类型扩展到64位,由于缺少硬件指令的直接支持,本文针对该Open64编译器的前端和后端进行了修改,在该编译器的前端,对相应的数据类型的信息进行了修改,以生成相对应的中间代码;在编译器的后端,利用32位的寄存器对来模拟64位数据的读写操作,针对64位的浮点数据包括加减乘除、乘幂、指数等等在内的运算,则产生相应的汇编库函数调用代码,来保证64位的数据运算。最后,对库函数进行了覆盖率测试,以及对64位浮点数据类型进行了功能性的验证,保证了在该系统中对64位数据运算模拟的正确性。通过对该编译器进行Compiler Trainer测试集测试,保证了该编译器中数据类型的模拟的正确性。也即,该编译器完成了对字节寻址模式的扩展以及64位数据类型的模拟支持。