-1

在仅支持乘法硬件的 16 位微控制器上进行双倍乘法的执行时间是多少?没有 FPU。

我知道它通过一系列代码来计算它。我只是不确定需要多长时间才能通过它。

例子

double conversion = 0.03039013;
double distance= 10.23456;

double total = conversion * distance;//cost of this line

有人计时吗?

64 位浮点数和 32 位浮点数乘法在时间方面有什么区别?在 64 位上使用 32 是否有很多好处。

4

1 回答 1

0

我经历了两个场景,32 位浮点计算和 64 位计算。该平台位于 16 位 Renesas M16C/28 MCU 上(该平台有一个乘法器,但没有浮点硬件。以 20 Mhz 运行,1 个周期 = 50 ns。

注意:这是用软件完成的,所以时间并不完美,但这个想法和概念已经得到了证明。

场景一:

void floatMultiple(void)
{
    float a = 123456.1234;
    float b = 123456.1234;
    float result = 0;
    result = a * b;
}

周期计时

最佳情况:305(15.25uSec) 最坏情况:2033(101.65uSec)

场景二:

void doubleMultiple(void)
{
    double a = 123456.1234;
    double b = 123456.1234;
    double result = 0;
    result = a * b;
}

使用相同的数字相同的系统,只是改变类型。最佳情况:2356(117.8uSec) 最坏情况:14567(728.35uSec)

我的计时系统有一点开销,我猜这个开销大约是 100 个周期。由于函数调用。

这仍然显示了与在 16 位 MCU 上使用浮点数和双精度数的显着差异。差异大约是 7 倍(对于这个平台)。

生成的汇编代码在不同系统上计算浮点值时可能存在差异。

于 2013-09-06T16:06:07.570 回答