¿Por qué una CPU necesita tener una unidad separada para calcular puntos flotantes?

Los puntos flotantes se representan de manera diferente a los enteros en las computadoras. Mientras que los enteros se representan típicamente como un complemento de dos (voltear todos los bits y sumar 1), los puntos flotantes son más complicados. Lo representas en notación científica pero con base dos.

Para un punto flotante de 32 bits, tendrá un bit de signo (positivo o negativo), 8 bits de exponente (a qué potencia estamos elevando el número, esto puede ser positivo o negativo) y una mantisa de 23 bits, esto es el número antes de elevarlo al exponente. Debido a que los puntos flotantes se representan de esta manera, no podemos simplemente agregarlos con enteros. Los enteros primero se promueven a flotantes antes de un flotante y se puede agregar un int.

Además, debido a que tenemos 8 bits de exponente, podemos representar números mucho más grandes con puntos flotantes. Para un número entero de 32 bits, nuestro número más grande que podemos representar es 2 ^ 31 – 1. Para un flotante de 32 bits, podemos representar un número tan grande como 2 ^ 128 (porque tenemos 8 bits de exponente). Esencialmente, 8 bits pueden representar números del 0 al 255, pero en realidad hacemos el valor almacenado en el exponente menos 127 para que podamos almacenar valores entre 0 y 1 al tener un exponente negativo. Con dobles (puntos flotantes de 64 bits), el número máximo que podemos almacenar es aproximadamente 2 ^ 1024, que es aproximadamente 10 ^ 308). Esto se debe a que los dobles tienen 11 bits de exponente y 52 bits de mantisa

Después de esto, es posible que se pregunte por qué no almacenamos todo en puntos flotantes, ya que podemos almacenar un mayor rango de números en el mismo número de bits. La aritmética de coma flotante es muy computacionalmente intensa y muchas CPU tienen aceleradores de coma flotante para acelerar el proceso tedioso.

Para responder a su pregunta, CPUS tiene esta unidad aceleradora porque la aritmética de coma flotante es mucho más intensa que la aritmética de enteros.

No * necesita *, pero ciertamente ayuda. Algunas CPU, como los primeros núcleos ARM, carecen de una FPU y, en cambio, se pueden programar para realizar aritmética de coma flotante en la ruta de datos principal, que puede ser relativamente lenta ya que los formatos de coma flotante son más complejos que los enteros.

Históricamente, solo se proporcionaron operaciones enteras en la CPU principal. Cuando se necesitaba un punto flotante, en lugar de cambiar los chips de mercado que solo admitían operaciones de enteros, el fabricante introdujo agregar chips de punto flotante.