¿Por qué x86 representa 32 bits cuando x64 representa 64 bits? [cerrado]

97

Mi pregunta es ¿por qué la taquigrafía para x86 de 32 bits cuando la taquigrafía para 64 bits es x64?

Supongo que tiene algo que ver con los días de 386 y 486, cuando todos los procesadores de 32 bits terminaron en 86, pero ¿seguramente hubo procesadores que no terminaron en 86 y todavía eran de 32 bits?

¿Alguien sabe la historia de esto o me puede dirigir a una buena fuente de información?

Gracias

Simon Foster
fuente
77
¡Siempre quise saber esto +1 por curiosidad inconsciente!
Gabriel Guimarães
¡Me acabo de preguntar esta mañana!
Sean Howat, el
99
Creo que el término completo no es x64 sino x86_64
Kedare
3
En mi humilde opinión, "x86" no significa (y nunca ha significado) cualquier arquitectura genérica de 32 bits. La respuesta de Daniel a continuación da la historia. Hay muchos otros procesadores de 32 bits que son contemporáneos (o más antiguos que) del 80386, y muchos todavía están vivos y bien en el mercado hoy en día. La familia 68000 (utilizada en el Macintosh original) es mucho más antigua que la 8086, por ejemplo. El reclamo de PowerPC de fama cuando era nuevo era un fuerte soporte de emulación tanto para x86 como para 68K. El ARM es de 32 bits, más moderno y bastante común también.
RBerteig
No lo veo como x64, al menos no lo escribo de esa manera. Lo escribo como 32b y 64b, respectivamente.
vol7ron

Respuestas:

34

Probablemente porque la línea x86 se convirtió en sinónimo de procesadores de 32 bits durante bastante tiempo, mientras que x64 fue específicamente una designación para 64 bits a medida que las aplicaciones y los sistemas operativos se cambiaron, y ahora hay aplicaciones de software que requieren la designación de 64 bits para ejecutarse (como un software de VM).

En otras palabras, es más marketing que tecnología por la razón.

Bart Silverstrim
fuente
20
x86 proviene del 8086, 286, 386, 486, 586, etc. Podría haber sido fácilmente "* 86"
gWaldo
66
Y debido a que x86 se originó con el 8086, nunca he podido averiguar por qué siempre está asociado con 32 bits. Como recuerdo, el 8086 era un procesador de 16 bits, que utilizaba registros dobles para habilitar el direccionamiento de memoria de 32 bits. Intel estaba lejos de ser un líder en el campo en esos días. Por cierto @gWaldo, dejaste el 80186.
John Gardeniers
Coincidencia. De Wikipedia, "tanto la arquitectura como el chip físico fueron desarrollados rápidamente por un pequeño grupo de personas, y utilizando los mismos elementos básicos de microarquitectura y técnicas de implementación física que se emplearon para el 8085 un poco más antiguo (y para el cual el 8086 también funcionaría como continuación) ". También hubo un 8087 y 8089.
Bart Silverstrim
Sí, dejé el 80186 porque honestamente no podía recordar si había sido un producto lanzado (y me sentía demasiado vago para buscarlo ...)
gWaldo
1
Esta respuesta no tiene nada de malo, pero honestamente creo que la de Daniel debería ser la aceptada, ya que es mucho más detallada.
Massimo
190

Bueno, una vez hubo un chip llamado 8086, con una versión más barata llamada 8088 que se usó en una computadora personal llamada IBM PC. Se hizo una versión mejorada de ese chip y se llamó 80186, aunque esa no era una versión muy popular. Sin embargo, se realizó una versión mejorada y mejorada, y se llamó 80286. Ahora, ese era un chip muy popular, en particular porque se usaba en una computadora llamada IBM PC AT.

Más tarde, Intel, que creó y vendió los chips 8086, 8088, 80186 y 80286, todos con una arquitectura de 16 bits, vio la necesidad de crear un chip de 32 bits para competir con ofertas similares de otros. Para aprovechar su posición actual, hizo que el nuevo chip fuera capaz de ejecutar software hecho para los chips mencionados anteriormente. Naturalmente, Intel llamó a este nuevo chip el 80386.

Para entonces, había muchas computadoras que usaban varias versiones de los chips de Intel, y también había chips que no eran de Intel que eran compatibles con los de Intel. Entonces la gente comenzó a referirse a ellos como 80x86.

Después de un tiempo, Intel lanzó un nuevo chip, pero decidió dejar caer el 80, por lo que se convirtió en el 486 en lugar de 80486. Del mismo modo, la gente dejaba caer el "80" desde el frente de "80x86", y llamaba a esto solo x86 .

Ahora, estoy bastante seguro de que algunos vendrán y dirán que Intel calificó sus chips x86 en tal y tal momento, lo cual hicieron, pero no me importa.

El hecho es que el dígito medio cada vez mayor dio lugar a 80x86, y x86 vino de eso, incluso si 80186 y 80286 no eran 32 bits.

Entonces, una vez que Intel finalmente pasó a 64 bits, ¿cómo llamó a su nueva arquitectura? ¡Derecho! IA64! :-) También renombró retroactivamente el x86 a IA32, por así decirlo. Solo IA64 no era compatible con x86, quiero decir, IA32, por lo que todos lo ignoraron.

Y luego llegó AMD, que decidió que el mercado quería una CPU de 64 bits que fuera compatible, en la medida de lo posible, con la familia x86. Como atractivo de marketing, lo llamaron la familia "x86-64", y tuvieron mucho éxito. Tanto es así que Intel terminó a regañadientes siguiendo con su propia CPU de 64 bits basada en x86.

Más tarde, debido a que las personas son flojas, el x86-64 se conoció simplemente como el x64.

Entonces, en respuesta a su pregunta, porque x64 es más corto que x86-64.

Daniel C. Sobral
fuente
10
No para elegir, pero para ser completamente exactos, AMD nunca comercializó un chip de 64 bits. x64 o x86_64 con el que salió AMD fueron extensiones de 64 bits agregadas al conjunto de instrucciones x86 creado por Intel, por lo tanto, x86_64 en comparación con el Itanium de Intel (IA_64) que era un verdadero chip de 64 bits no compatible con el conjunto de instrucciones x86.
Jeremy Hajek
66
Además, creo que Intel se enfrentó a problemas de marca registrada porque solo estaban usando números y no se puede marcar una secuencia de números, es por eso que lo que habría sido el 80586 se convirtió en Pentium, un nombre inventado que podrían seguir marcando.
cdkMoose
3
Para aclarar: AMD llamó a sus extensiones AMD64, e Intel llama a las suyas (que licenciaron de AMD) Intel64. Hay algunas diferencias sutiles (no son 100% compatibles), por lo que la mayoría de los proveedores de sistemas operativos suelen utilizar el subconjunto común. En un DVD de Windows 2008, la carpeta de instalación en realidad se llama AMD64 (a diferencia de I386 en 32 bits). No sé de dónde viene x86_64: de AMD ya que es una extensión de x86 o de Unix-Vendors que quería un término neutral.
Michael Stum
20
@Jeremy Hajek: AMD64 / x86_64 es un verdadero diseño de chip de 64 bits, su modo de 64 bits no es una emulación y no tiene impacto en el rendimiento (y, de hecho, su modo de 32 bits tampoco es una emulación). El chip tiene un conjunto de instrucciones de 64 bits y registros de 64 bits, lo que lo convierte en un chip de 64 bits. No sé de dónde sacas la impresión de que AMD nunca comercializó un chip de 64 bits. Sin embargo, es cierto que AMD nunca comercializó un 64-bit que rompe la compatibilidad con el chip de 32-bit, como lo hizo Intel con su IA64.
Lie Ryan
1
x64 solo se usa en la terminología de Windows / Microsoft. GNU / Linux llama a la arquitectura x86-64 o amd64. (Y llama a 32 bits x86 i386). Es solo (o al menos principalmente) en el mundo de Windows que x86 significa específicamente x86 de 32 bits. La mayoría de las personas de hardware que hablan de CPU entienden que x86 significa cualquier CPU que sea compatible con versiones anteriores de 8086, independientemente del modo en que esté funcionando (normalmente modo largo de 64 bits o, a veces, modo de compatibilidad de 32 bits en un núcleo de 64 bits). Digo que "x86 tiene un lanzamiento eficiente / adquiere atómicos libres de bloqueo", no excluyo 64 bits.
Peter Cordes
16

De Wikipedia : El término x86 se refiere a una familia de arquitecturas de conjuntos de instrucciones basadas en la CPU Intel 8086.

bindbn
fuente
3

Técnicamente, x86 simplemente se refiere a una familia de procesadores y al conjunto de instrucciones que todos utilizan. En realidad no dice nada específico sobre el tamaño de los datos.

x86 comenzó como un conjunto de instrucciones de 16 bits para procesadores de 16 bits (los procesadores 8086 y 8088), luego se amplió a un conjunto de instrucciones de 32 bits para procesadores de 32 bits (80386 y 80486), y ahora se ha ampliado a un conjunto de instrucciones de 64 bits para procesadores de 64 bits. Solía ​​escribirse como 80x86 para reflejar el valor cambiante en el medio de los números de modelo de chip, pero en algún punto de la línea se dejó caer el 80 en el frente, dejando solo x86.

Culpe al Pentium y a su descendencia por cambiar la forma en que los procesadores fueron nombrados y comercializados, aunque todos los procesadores más nuevos que usan el conjunto de instrucciones x86 de Intel todavía se conocen como compatibles con x86, i386 o i686 (lo que significa que todos usan extensiones del 8086 original conjunto de instrucciones).

x64 es realmente el hombre extraño aquí afuera. El primer nombre para la extensión de 64 bits para el conjunto x86 se llamó x86-64. Más tarde se denominó AMD64 (porque AMD fue el primero en crear la extensión de 64 bits). Intel autorizó el conjunto de instrucciones de 64 bits y nombró su versión EM64T. Tanto los conjuntos de instrucciones como los procesadores que los usan todavía se consideran x86.

Escorpión
fuente
x86-64 vuelve a ser un término neutral para el proveedor que incluye AMD64 y EM64T. Los 80 principales siempre estuvieron allí en el número de parte, pero después de 80186 se hizo más fácil solo decir 186 vs. 8086 vs. 386. Pentium nunca se llamó oficialmente 586 u 80586 en sus números de parte ( cpu-world.com/sspec/Pentium. html ); los términos i586 e i686 se basaron en el campo "familia" de CPUID de cómo se informaron las CPU.
Peter Cordes
3

x86 y x64 son los nombres de las arquitecturas de la CPU . Hay más en una arquitectura de CPU que solo el número de bits por registro.

x64 toma su nombre porque el salto a 64 bits es el mayor cambio en la arquitectura desde x86, pero ese salto está lejos de ser el único cambio.

x86 recibe su nombre del venerable procesador y familia 8086, que incluía 80286, 80368, 486, etc. En el momento en que x86 se estableció como un nombre para la arquitectura, 32 bits por registro no se consideraban una característica lo suficientemente importante como para justificar la construcción. en el nombre

Joel Coel
fuente
2

Bueno, en x64realidad nunca vino de un fabricante de conjuntos de instrucciones o chips. Originalmente vino de Windows XP. La primera edición de 64 bits de Windows recibió el título Windows XP x64. Y supongo que el término se x64quedó a partir de ahí.

El x86apodo proviene del conjunto de instrucciones de 32 bits. Por lo tanto, todos los x86procesadores (sin un líder 80) ejecutan el mismo conjunto de instrucciones de 32 bits (y, por lo tanto, son todos compatibles). Por lo tanto, se x86ha convertido en un nombre de facto para ese conjunto (y, por lo tanto, de 32 bits).

x86Se llamó a la extensión original de 64 bits de AMD en el conjunto AMD64. Posteriormente, Intel lo autorizó, pero aún así el nombre del x86conjunto de instrucciones de 64 bits es típicamente AMD64.

Pero sobre todo es distinción de marca. Esto es lo que algunas distribuciones principales diferentes del sistema operativo llaman cada sabor de 64 bits:

Básicamente, parece que Linux prefiere x86_64, BSD prefiere amd64y los demás x64...

Pero lo importante a tener en cuenta es que todos significan lo mismo para fines de marketing. En sutileza, significan cosas diferentes (bueno, amd64significa algo diferente de x86_64(la primera es una arquitectura específica del proveedor y la segunda el subconjunto de arquitecturas de dos proveedores), pero x86_64=== x64), pero para cualquiera, excepto los programadores que escriben en ensamblado o máquina codificar realmente no hace una diferencia ...

ircmaxell
fuente
1
Todo x64 actual es en realidad AMD-64 desde que murió IA64.
Overmind
@Overmind: x64 e IA-64 siempre fueron cosas separadas. IA-64 no tiene ninguna relación con x86 o x86-64. (Excepto que las primeras implementaciones de IA-64 incluían un núcleo x86 por razones de compatibilidad, porque Intel ...)
Peter Cordes
Si, eso es correcto. Pero "está muerto, Jim".
Overmind