我知道对于浮点运算,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是否读写浮点数?如果是,怎么样?
答案 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)或应用程序级别完成。