我读过一些文章,这些文章指出非线性函数(例如指数函数)在计算上是昂贵的。
我想知道是什么使它们在计算上变得昂贵。
当提到“计算上昂贵”时,是指所花费的时间还是所使用的硬件资源?
我曾尝试在Google上进行搜索,但找不到任何简单的解释。
答案 0 :(得分:0)
不假装提供答案,而是从fpga中的功能开始。
通常,您只能使用加法器,乘法器和一些内存。你该怎么办?
线性函数-简单,只需一个乘法器和一个加法器。
非线性函数-那些是什么?多项式要么要求您花费大量乘数(多项式的阶数越高),要么甚至超越,要求您找到一些令人满意的近似值,并需要很多步骤。 即使简单的整数除法也无法在一个时钟中完成,在简单的实现中,需要的步数与被除数中的位数一样多。
另一种可能的解决方案是使用查找表。这对于一小部分争论非常有用。但是,如果要在广泛的参数范围内或更精确地找到函数值,最终将得到很大的查找表,以至于无法容纳必须使用的设备。
因此,这是主要成本-您将花费大量专用硬件资源(乘法器,用于查找表的内存),或者花费大量时间进行多步逼近算法或将结果精简为“一位”的算法迭代(整数除法,CORDIC等)。