Cuando un microprocesador o microcontrolador necesita ejecutar muchos cálculos de punto flotante, hay tres formas de llevarlo a cabo:
1) In software i.e. floating-point library
2) An FPU which is integrated intro the microprocessor/microcontroller
3) An FPU in a separate chip
La opción 1, que lo hace todo en software, puede ser la única opción si las FPU de hardware no están disponibles. Una solución de software será 5-10 veces más lenta, o incluso peor, dependiendo del tamaño de registro del procesador. Actualmente estoy haciendo un proyecto que requiere un cálculo matemático de punto flotante de 32 bits en un HCS08 de 8 bits. Hacer eso con un acumulador de 8 bits es bastante feo.
Las opciones 2 y 3 son prácticamente lo mismo, en cuanto a velocidad. Uno de los primeros FPUs separados fue el 8087, un chip complementario del 8086 de 16 bits, el tatarabuelo (o algo parecido) del procesador Intel o AMD 80x86 en tu PC. Fue desarrollado por dos razones: Intel no tenía la capacidad en ese momento para incluir la FPU en el mismo chip que el procesador; y esto permitió que se vendiera como una opción: el 8087 inicialmente costaba $ 150 solo. Los fabricantes de computadoras colocan un zócalo junto al procesador 8086 (o 8088 con un bus de datos de 8 bits y un bus de direcciones de 16 bits, que se encontraba en el primer modelo de PC IBM 7550) para que un consumidor pueda agregar un 8087 más adelante. p>
El 8087 tenía algo así como 60 instrucciones diferentes. Si no había 8087, el 8086/8088 en realidad atrapó los códigos de instrucciones de punto flotante y los emuló en el software. Podía manejar números flotantes de 32/64 bits y usaba un registro interno de 80 bits para los cálculos. Su formato de punto flotante fue la base para el estándar de punto flotante IEEE 754, que ahora es usado por todas las demás bibliotecas de software de punto flotante y FPU.
Además de las operaciones típicas de punto flotante como suma, resta, multiplicación y raíz cuadrada, podría realizar cálculos exponenciales, logarítmicos y trigonométricos.
El FPU para el 80x86 era un chip separado hasta el 80386/80387; Desde el 80486 en adelante se integró en el procesador. La ventaja de tener el chip como parte del procesador, es que no necesita tener ningún cable adicional (es decir, pines) entre el procesador y la FPU para controlar su funcionamiento. Las FPU externas también compartieron datos, direcciones y otras líneas de control con el procesador, pero ya estaban allí para manejar la memoria externa.
También había chips FPU separados para el 68000 y el procesador MIPS y ARM que no tenía punto flotante integrado. Ahora los procesadores MIPS y ARM (además de la línea Intel 80x86 y otros) tienen FPU integrados en el chip. La ventaja, por supuesto, es el costo y el espacio en la PCB.
No tengo conocimiento de ningún microprocesador o microcontrolador de 8 bits que incluya una FPU (externa o integrada), excepto el Intel 8232, diseñado para el 8080 de 8 bits.
Tampoco tengo conocimiento de ningún microcontrolador que tenga disponible una FPU, ya que los microcontroladores generalmente no tienen su dirección y los buses de datos que se llevan a los pines externos, como los microprocesadores. Sin embargo, no hay razón para no incluir una FPU integrada en un microcontrolador, como hacen algunos ARM.
Si tiene una FPU de hardware o necesita usar una biblioteca de punto flotante, en casi todos los casos esto será completamente transparente para usted, ya que simplemente declara que una variable es de punto flotante (palabras flotantes o dobles en C, por ejemplo) , y el compilador generará las instrucciones apropiadas para llamar a la biblioteca o usar la FPU. Es posible que no configure las opciones del compilador, aunque para iniciar una FPU.