·上一文章:基于高可靠微波感应的人体传感器设计
·下一文章:51单片机在微机自动交换系统中稳定运行的设计方法
嵌入式计算作为新一代计算系统的高效运行方式,应用于多个高性能领域,如阵列信号处理、核武器模拟、计算流体动力学和海洋环境模拟等。在这些科学计算中,需要大量的矩阵运算,而矩阵运算中乘法运算是其他运算的基础,如能提高嵌入式系统中浮点矩阵乘法运算的速度,则可加快其他类型的矩阵运算速度。
目前实现浮点矩阵运算的方法,有直接使用VHDL语言编写的浮点矩阵相乘处理单元[1],关键技术是乘累加单元的设计,通常依据设计者的编程水平决定硬件性能。同样,FPGA厂商也推出了一定规模的浮点矩阵运算IP核[2],其应用针对本厂家器件,且经过专业调试和硬件实测,性能稳定且优于手写代码,但还有一些可改进的地方。
本文基于ALTEra的算法IP核,采用数选方式对矩阵运算中的单精度浮点矩阵相乘进行改进,可推广到阶数更高的矩阵运算和双精度浮点、复数单精度浮点运算中。
1 浮点矩阵相乘的IP核原理
Altera公司推出的浮点矩阵相乘IP核ALTFP_MATRIX_MULT,适用于Quartus10.1版本以上的软件环境,能够进行一定规模的浮点矩阵计算,原理图如图1所示。
图1的矩阵相乘结合流水线方式控制数据流动,关键部分为核心PE(Processing Element)单元实现两浮点数的相乘。输入数据在控制器的引导下分为AA矩阵和BB矩阵,分别存于M144K或M9K存储器中,在计算指令的控制下做浮点相乘运算,接着并行地浮点相加完成输出。分析整个计算结构,要达到较好的性能就需要耗费多个存储器和多个浮点相乘单元。列出矩阵相乘的基本时序图如图2所示。