64bit - significa - x86 es lo mismo que 32 bits
¿Qué son las arquitecturas de 16, 32 y 64 bits? (7)
¿Qué significan las arquitecturas de 16 bits, 32 bits y 64 bits en el caso de los microprocesadores y / o sistemas operativos?
En el caso de los microprocesadores, ¿significa el tamaño máximo de los General Purpose Register
o el tamaño del número Integer
o el número de Address-line
de Address-line
o el número de Data Bus line
de Data Bus line
o qué?
¿Qué queremos decir con " DOS is a 16-bit OS
", " Windows in a 32-bit OS
", etc ...?
Cuando hablamos de arquitecturas de 2 ^ n en ciencias de la computación, básicamente estamos hablando de registros de memoria, tamaño de buses de direcciones o tamaño de buses de datos. El concepto básico detrás del término de la arquitectura de 2 ^ n es significar que aquí se pueden usar 2 ^ n bits de datos para direccionar / transportar los datos de tamaño 2 ^ n por procesos.
Cuantos bits "es" una CPU, significa cuál es la longitud de la palabra de instrucción. En una CPU de 32 bits, la longitud de palabra de dicha instrucción es de 32 bits, lo que significa que este es el ancho que una CPU puede manejar como instrucciones o datos, lo que a menudo resulta en una línea de bus con ese ancho. Por una razón similar, los registros tienen el tamaño de la longitud de palabra de la CPU, pero a menudo tiene registros más grandes para diferentes propósitos.
Tome la computadora PDP-8 como un ejemplo. Esta era una computadora de 12 bits. Cada instrucción tenía 12 bits de largo. Para manejar datos del mismo ancho, el acumulador también era de 12 bits. Pero lo que hace que la computadora de 12 bits sea una máquina de 12 bits, fue su longitud de palabra de instrucción. Tenía doce interruptores en el panel frontal con los que se podía programar, instrucción por instrucción.
Este es un buen ejemplo para salir del enfoque de 8/16/32 bit.
El conteo de bits también suele ser del tamaño del bus de direcciones. Por lo tanto, generalmente le dice a la memoria direccionable máxima.
Hay una buena explicación de esto en Wikipedia :
En la arquitectura de la computadora, los enteros de 32 bits, las direcciones de memoria u otras unidades de datos son aquellas que tienen como máximo 32 bits (4 octetos) de ancho. Además, las arquitecturas de CPU y ALU de 32 bits son aquellas basadas en registros, buses de direcciones o buses de datos de ese tamaño. 32 bits es también un término dado a una generación de computadoras en las que los procesadores de 32 bits eran la norma.
Ahora hablemos de OS.
Con OS-es, esto está menos ligado a la "pequeñez" real de la CPU, generalmente refleja cómo se ensamblan los códigos de operación (para qué longitud de palabra de la CPU) y cómo se direccionan los registros (no se puede cargar una Valor de 32 bits en un registro de 16 bits) y cómo se atiende la memoria. Piénselo como el programa completo y compilado. Se almacena como instrucciones binarias y, por lo tanto, debe ajustarse a la longitud de palabra de la CPU. En lo que respecta a la tarea, tiene que ser capaz de abordar toda la memoria, de lo contrario no podría hacer una gestión de memoria adecuada.
Pero lo que se reduce a esto, es si un programa es de 32 o 64 bits (un sistema operativo es básicamente un programa aquí), cómo se almacenan sus instrucciones binarias y cómo se abordan los registros y la memoria. En general, esto se aplica a todo tipo de programas, no solo OS-es. Es por eso que tiene programas compilados para 32 bits o 64 bits.
Hasta donde yo sé, técnicamente, es el ancho de las rutas enteras. He oído hablar de chips de 16 bits que tienen direcciones de 32 bits. Sin embargo, en realidad, es el ancho de la dirección. sizeof (void *) es 16 bits en un chip de 16 bits, 32 bits en un 32 bits y 64 bits en un 64 bits.
Esto genera problemas porque C y C ++ permiten las conversiones entre void * y tipos integrales, y es seguro si el tipo integral es lo suficientemente grande (del mismo tamaño que el puntero). Esto conduce a todo tipo de cosas inseguras en términos de
void* p = something;
int i = (int)p;
Que se estrellará y se quemará horriblemente en el código de 64 bits (funciona en 32 bits) porque el vacío * ahora es dos veces más grande que int.
En la mayoría de los idiomas, debe esforzarse para preocuparse por el ancho del sistema en el que está trabajando.
Las definiciones son términos de marketing más que términos técnicos precisos.
En términos técnicos difusos, están más relacionados con los anchos arquitectónicamente visibles que cualquier registro de implementación real o ancho de bus. Por ejemplo, el 68008 se clasificó como una CPU de 32 bits, pero tenía registros de 16 bits en el silicio y solo un bus de datos de 8 bits y 20 bits de direcciones.
http://en.wikipedia.org/wiki/64-bit#64-bit_data_models los modelos de datos significan bitness para el idioma.
La frase "OS es x-bit" generalmente significa que el sistema operativo se escribió para modo cpu de x bits, es decir, Windows de 64 bits usa modo largo en x86-64, donde los registros son de 64 bits y el espacio de direcciones de 64 bits grande y existen otras diferencias distintas del modo de 32 bits, donde los registros típicos son de 32 bits de ancho y el espacio de direcciones es de 32 bits. En x86, una gran diferencia entre los modos de 32 y 64 bits es la presencia de segmentación en 32 bits para la compatibilidad histórica.
Usualmente el sistema operativo está escrito teniendo en cuenta la bitness de la CPU, x86-64 es un ejemplo notable de décadas de compatibilidad con versiones anteriores: puede tener de todo, desde programas en modo real de 16 bits hasta programas en modo protegido de 32 bits hasta 64 bits de largo programas de modo.
Además, existen diferentes formas de virtualizar, por lo que su programa puede ejecutarse como en el modo de 32 bits, pero en realidad es ejecutado por un núcleo que no sea x86.
Mi respuesta original está abajo, si quiere entender los comentarios.
Nueva respuesta
Como dices, hay una variedad de medidas. Afortunadamente para muchas CPU, muchas de las medidas son las mismas, por lo que no hay confusión. Veamos algunos datos (Perdón por la carga de la imagen, no pude ver una buena manera de hacer una tabla en el descuento).
Como puede ver, muchas columnas son buenos candidatos. Sin embargo, yo diría que el tamaño de los registros de propósito general (verde) es la respuesta más común.
Cuando un procesador es muy variado en tamaño para diferentes registros, a menudo se describirá con más detalle, por ejemplo, el Motorola 68k se describe como un chip de 16/32 bits.
Otros han argumentado que es el ancho del bus de instrucción (amarillo) que también coincide en la tabla. Sin embargo, en el mundo actual de la canalización, argumentaría que esta es una medida mucho menos relevante para la mayoría de las aplicaciones que el tamaño de los registros de propósito general.
Respuesta original
Diferentes personas pueden significar cosas diferentes, porque como dices hay varias medidas. Entonces, por ejemplo, alguien que hable sobre el direccionamiento de la memoria puede significar algo diferente para alguien que está hablando sobre la aritmética de enteros. Sin embargo, intentaré definir lo que creo que es el entendimiento común.
Mi opinión es que para una CPU significa "El tamaño del registro típico utilizado para operaciones estándar" o "el tamaño del bus de datos" (los dos son normalmente equivalentes).
Yo justifico esto con la siguiente lógica. El Z80 tiene un acumulador de 8 bits y un bus de datos de 8 bits, mientras que tiene registros de direccionamiento de memoria de 16 bits (IX, IY, SP, PC) y un bus de direcciones de memoria de 16 bits. Y el Z80 se llama un microprocesador de 8 bits. Esto significa que las personas normalmente deben referirse al tamaño aritmético entero o al tamaño del bus de datos, no al tamaño de la dirección de la memoria.
No es del tamaño de las instrucciones, ya que el Z80 (nuevamente) tenía instrucciones de 1,2 y 3 bytes, aunque, por supuesto, los múltiples bytes se leían en varias lecturas. En la otra dirección, el 8086 es un microprocesador de 16 bits y puede leer instrucciones de 8 o 16 bits. Entonces tendría que estar en desacuerdo con las respuestas que dicen que es el tamaño de la instrucción.
Para los sistemas operativos, lo definiría como "el código está compilado para ejecutarse en una CPU de ese tamaño", por lo que un sistema operativo de 32 bits compilado para ejecutarse en una CPU de 32 bits (según la definición anterior).
La diferencia se reduce al ancho del bit de un conjunto de instrucciones pasado a un registro de propósito general para el funcionamiento. 16 bits pueden operar en 2 bytes, 64 en 8 bytes de instrucción a la vez. A menudo puede aumentar el rendimiento de un procesador mediante la ejecución de instrucciones más densas por ciclo de reloj.