ALU是否读写浮点数?

时间:2014-10-15 12:04:43

标签: c

我知道对于浮点运算,FPU(浮点单元)是必需的,ALU只能执行算术运算。所以我使用定点算法。

这些是我正在做的步骤:

read floating point number.
Convert it into fixed point
Do all operation using fixed point arithmetic
Convert result into floating point
write o/p

我的问题是,如果系统中没有FPU,它将如何读取浮点作为输入和输出。

ALU是否读写浮点数?如果是,怎么样?

2 个答案:

答案 0 :(得分:1)

不,ALU不能读取也不能将浮点数写为浮点数,只能写入FPU。从ALU的角度来看,FP编号是一系列随机位。

今天出于性能原因,FPU出现了;你的CPU上有一块专用的硅片来执行FP操作。

由于浮点数是带有尾数和指数的基数两个数,因此您始终可以使用ALU执行浮点运算。再次,这比使用硬件FPU慢,但无论如何都要完成工作。

例如,您有FLIP这是一个在C中实现的浮点库,只使用整数来执行浮点运算;就是这样,ALU。

  

FLIP是一个C库,为binary32提供软件支持   整数处理器上的浮点运算。这个图书馆是   特别针对VLIW或DSP处理器(即嵌入式)   系统),并已在VLIW整数处理器上验证过   STMicroelectronics的ST200系列产品

     

该库提供了五种基本的软件实现   算术运算(加法,减法,乘法,   具有次正规数支持的除法和平方根)   四个舍入方向属性(RoundTiesToEven,   需要RoundTowardPositive,RoundTowardNegative,RoundTowardZero)   IEEE 754-2008标准。

GCC编译器还包含software emulation layer for floating point operations

  

软件浮点库用于没有的软件浮点库   有浮点硬件支持。它也可以随时使用   -msoft-float用于禁用浮点指令的生成。 (并非所有目标都支持此切换。)

答案 1 :(得分:0)

使用ALU,您只能使用整数或使用fixed point arithmetics。否则,你必须模仿它。仿真可以在编译器级别(请参阅soft float)或应用程序级别完成。