针对AT91SAM9 ARM处理器Linux用户空间程序优化FFT和数学运算

Optimized FFT and mathematics for AT91SAM9 ARM processor Linux userspace program

本文关键字:FFT 优化 运算 程序 空间 ARM AT91SAM9 处理器 Linux 用户 针对      更新时间:2023-10-16

我正在使用Atmel的AT91SAM9G20处理器为嵌入式Linux系统开发C/C++软件。我需要使用Linux用户空间程序使用定点(或者浮点)数学快速计算FFT。我知道汇编程序可能是实现的方法,并且在使用gcc编译器进行编译时可能需要额外的-mpcu开关。进行这一实施的最佳方式是什么?是否有任何好的参考书或优化的自由和开放源码软件库可用?

我必须实现一些算法,这些算法也需要多次应用小的FFT长度(即1024点),我想知道一些库(如kissft)是否也能正常工作。我也对长FFT长度感兴趣,所以下面的答案中建议的FFTW也会很好地工作。

除了这个问题,我还想知道在ARM9Linux用户空间程序中如何处理整数除法。如果我除以两个整数(例如25/4),除法是用软浮点数完成的吗?我还需要实现一些繁重的数字运算算法,我想知道定点运算是否比浮点运算更好,以及gcc编译器是如何真正处理问题的。

FFTw包含特定于CPU的优化(也可以进行编译时/运行时CPU评测)。

3.3.1版引入了对ARM Neon扩展的支持

  • http://www.fftw.org/#features

以及常见问题解答:问题4.2。为什么FFTW这么快

这是一个复杂的问题,没有简单的答案。事实上,作者也不完全知道答案。除了FFTW中的许多小性能漏洞外,FFTW的速度还有三个一般原因。

  • FFTW使用各种FFT算法和实现样式,这些算法和样式可以任意组合以使其自身适应机器。请参阅Q4.1"FFTW是如何工作的?"
  • FFTW使用代码生成器来生成用于计算小变换的高度优化的例程
  • FFTW使用显式分治来利用内存层次结构