¿Qué significa “64 bits”?

Desde una perspectiva de hardware, una máquina de 64 bits puede hacer operaciones aritméticas en enteros de 64 bits con alto rendimiento, y generalmente tiene direcciones virtuales que son más anchas que 32 bits.

Desde una perspectiva de software, lo importante es el modelo de programación. Eche un vistazo a los MODELOS DE PROGRAMACIÓN DE 64 BITS para obtener más detalles, pero la mayoría de los modelos de programación de “32 bits” se denominan ILP32, con los tipos de datos para entero, entero largo y puntero, todos de 32 bits. A veces, el entero largo es 64 bits.

Hay dos modelos principales de programación de 64 bits: LP64 e ILP64. En LP64, “entero” es de 32 bits, pero el entero largo y el puntero son de 64 bits. En ILP64, los tres son de 64 bits.

La historia aquí es que el lenguaje de programación C tiene una regla que establece que el tipo de datos para el puntero debe ser del mismo tamaño que el tipo de datos para un entero largo.

Cuando, por ejemplo, Microsoft dice que tienen un sistema operativo de “64 bits”, lo que quieren decir es que admiten un modelo de programación de 64 bits para programas de usuario.

Cuando estoy teniendo cuidado con los tamaños, que es casi siempre, uso los tipos en stdint.h, como uint64_t, para asegurarme de obtener lo que quiero.

En la arquitectura de computadoras, la computación de 64 bits es el uso de procesadores que tienen anchos de ruta de datos, tamaño entero y anchos de dirección de memoria de 64 bits (ocho octetos).

Para más click:
Computación de 64 bits – Wikipedia

No hay un solo significado claro. Por lo general, tomamos el ancho de los registros generales en la Arquitectura del conjunto de instrucciones, y llamamos a eso el bittedness de la CPU. Por lo tanto, las CPU x86 de 64 bits tienen sus registros generales (RAX, RBX, etc.) de 64 bits de ancho, en comparación con 32 bits x86, donde esos (EAX, EBX, etc.) tienen 32 bits de ancho.

Los ISA a menudo pueden realizar cálculos de dirección en las direcciones del mismo tamaño, pero no siempre. Por ejemplo, el IBM S / 360 ISA de 32 bits tenía GPR de 32 bits, pero solo admitía el direccionamiento de 24 bits. El modo real de 16 bits x86 admite el direccionamiento de 20 bits.

El ancho de la ALU que realiza los cálculos no es una distinción útil, ni el ancho de la interfaz de memoria, ambos son detalles de implementación (por ejemplo, implementaciones específicas de S / 360 tenían ALU de 8, 16 y 32 bits de ancho, así como interfaces de memoria de 8 a 64 bits de ancho, obviamente, y la ALU de 8 bits puede tomar varios ciclos para hacer un cálculo de 32 bits, por lo que sería más lento, pero probablemente mucho más barato, razón por la cual se usaron ALU estrechas en los 360 de gama baja. .

No consideramos registros de coma flotante, ya que tienden a tener sus propios tamaños (por ejemplo, los FPR en x86 eran * 80 * bits hasta que se introdujo el material SSE-2).

Tan comúnmente el tamaño de los GPR. Desafortunadamente, eso supone que los sistemas * tienen * GPR, o incluso registros. En el primer caso, podría argumentar que Cray-1 tenía GPR de 24 bits ya que ese era el tamaño de los registros de dirección, pero esos no se usaron para mucha aritmética, los registros de FP de 64 bits podrían usarse para algún entero aritmética, pero no se utilizaron para el direccionamiento). Algunas máquinas no tienen ningún registro, por ejemplo, varias máquinas apiladas orientadas a Forth no (aunque podría argumentar que el ancho de una palabra de pila sería la medida correcta en esos casos). Es posible que se encuentre con una máquina como la IBM 1401, donde se realizó la mayor parte de la aritmética en operandos de longitud variable en la memoria, que fueron delimitados por una marca especial. Puede considerar el ancho de las operaciones aritméticas de enteros que se pueden realizar, pero luego debe preguntar acerca de una CPU de 64 bits (como x86–64) que puede multiplicar dos números de 64 bits y producir un resultado de 128 bits.

Y luego tenemos el Motorola 68000, que claramente tenía un ISA de 32 bits (aunque el direccionamiento estaba limitado a 24 bits), pero que Motorola comercializó como una CPU de 16 bits (que era, de hecho, una medida de algunos de los detalles de implementación , pero de nuevo, esa no es realmente la pregunta correcta).

Entonces, en términos técnicos, no significa mucho.