我读过一些文章,指出非线性函数(如指数)的计算成本很高。
我想知道是什么让它们的计算成本很高。
当提到“计算成本高”时,它是指所花费的时间或使用的硬件资源吗?
我试过在谷歌上搜索,但我找不到任何简单的解释。
不要假装提供答案,而是从你在 fpga 中拥有的东西开始。
通常,您仅限于加法器、乘法器和一些内存。你能用这些做什么?
线性函数 - 简单,只需一个乘法器和一个加法器。
非线性函数——那些是什么?要么是多项式,需要你花费大量的乘数(多项式的次数越多),或者甚至是超越的,需要你找到一些令人满意的近似值,在许多步骤中做到这一点。即使是简单的整数除法也不能在一个时钟内完成,在简单的实现中需要与被除数中的位数一样多的步骤。
另一种可能的解决方案是使用查找表。它适用于小范围的争论。但是,如果您想要在广泛的参数范围内找到函数值,或者更精确地找到函数值,您最终会得到一个太大的查找表,以至于无法放入您必须使用的设备中。
这就是主要成本——您将花费大量专用硬件资源(乘法器、查找表的内存),或者在多步逼近算法或每次迭代(整数除法、CORDIC 等)。