Conocer la arquitectura x86 es conocer la base de los procesadores de la todavía breve historia de la informática. Se cuentan por millones los procesadores vendidos a lo largo de la historia que la implementan, y además ha sido una arquitectura que dio pié al éxito de compañías como Microsoft e Intel así como al concepto de ordenador personal. x86 es un hito tecnológico que merece la pena ser analizado y estudiado con gran profundidad.
A continuación la conoceremos a fondo, desmigaremos su historia, la situaremos en el mercado y explicaremos las características técnicas de la más notable arquitectura CISC del mercado. x86 es una de las creaciones más importantes en el mundo del hardware, y conocerla es imprescindible para comprender la historia de la informática y su estado actual. Así que pasen y lean, están todos invitados
Un poco de historia

Intel 4004
En 1971 Intel presentó el primer procesador comercial del mercado, el 4004. Se trataba de un modelo con bus de 4 bits y pensado para su uso en calculadoras, muy vetusto pero considerado como la primera piedra de todo lo que se presentaría en esa década. A él lo siguieron los Intel 8008 y 8080 en 1972 y 1974, respectivamente, con set de instrucciones diseñado por Datapoint Corporation y también pensados para ser utilizados en las calculadoras más avanzadas de la época.
Tras estos modelos Intel empezó un enorme proyecto con el que buscaba reinventar el mundo de los procesadores. En 1975 inició los diseños de la arquitectura iAPX 432 (Intel Advanced Processor Architecture) de 32 bits, con mejoras en la multitarea y la administración de memoria respecto de la familia de los 8000, siendo una arquitectura pensada en la programación orientada a objetos y con la capacidad de administrar múltiples procesos simultáneamente. Sin embargo, viendo que la competencia preparaba sus respectivos nuevos productos (Motorola 6800, MOS 6502 o Zilog Z80) y teniendo en cuenta lo ambicioso del proyecto 432 que les obligaría a estar varios años sin presentar un nuevo producto, decidieron iniciar un nuevo trabajo que, si bien en un inicio podía ser considerado temporal, fue lo que le ha mantenido ocupados durante todas estas décadas.

Intel 8086, 1979
En el mes de mayo de 1976 comenzaron a desarrollar un nuevo procesador que empezó a venderse un par de años más tarde, a mediados de 1978. El Intel 8086 incluyó retrocompatibilidad con el software de los anteriores 8008 y 8080, utilizando transistores de 3 micras (unas 135 veces más grandes que los actuales de 22 nanómetros) y una frecuencia de hasta 4.77 MHz. Lo más importante de todo fue la introducción de un nuevo juego de instrucciones diseñado por Intel y denominado x86-16. Fue un pequeño éxito para Intel, y si bien era realmente potente para la época su precio se consideró excesivo. Uno de los puntos más curiosos del 8086 es que si bien fue un invento de Intel, otras compañías como OKI, Siemens, Fujitsu o AMD distribuyeron en el mercado clones de este modelo plenamente compatibles y que incluso en algunos aspectos mejoraban las características del original.
Unos meses más tarde, el 1 de julio de 1979 se presentó el Intel 8088, una versión más barata del 8086 con prácticamente todas sus características, y que tuvo en IBM a su principal aliado. El IBM PC 5150, considerado el primer ordenador personal ('PC') de venta masiva de la historia, utilizó el 8088 en detrimento de otros procesadores de la competencia debido a su alta disponibilidad, facilidad de programación y reducido precio. El IBM PC, que rondaba los 3.000 dólares, fue un éxito de ventas desde su lanzamiento, el 12 de agosto de 1981.
Fue entonces cuando Intel posicionó como su principal producto una nueva familia de chips: los procesadores 'x86', definidos así por usar el mismo juego de instrucciones que, si bien ha ido evolucionando con los años, sigue utilizando muchas de las características originales.

Intel 80286, 1982
El 8086 es considerado el primer x86 de la historia, si bien el modelo que catapultó la fama de Intel fue el 8088. A él le sucedieron los 80186, 80286, 80386 y 80486, más conocidos como 186, 286, 386 y 486 que fueron presentados a lo largo de la década de los 80 y principios de los 90 dentro de equipos englobados bajo el concepto que fué creado en el IBM PC, el cual supuso un completo éxito. Después de los 80X86 Intel se movió a los conocidísimos Pentium, con el primer Pentium en 1993 seguido de Pentium Pro, Pentium II, Pentium III y Pentium 4. Incluso los actuales Ivy Bridge mantienen la marca 'Pentium' en alguno de sus modelos de más baja gama.

Intel Pentium, 1992
Por su parte, aquella arquitectura iAPX 432 que tantas expectativas generó en su gestación fue finalmente presentada en 1981, pero defraudó enormemente a los usuarios quienes consideraron que ofrecía un rendimiento muy por debajo de lo esperado. Intel la abandonó pocos meses después de presentarla al público.
Desde el primer x86 allá por los años setenta, Intel ha sido la encargada de mover la batuta de la que es considerada la principal arquitectura CISC de la historia, si bien no es la única: Motorola, DEC y sobre todo IBM han presentado procesadores CISC a lo largo de la historia. Sus principales características las describiremos más adelante, pero antes nos pararemos a hablar sobre un tema importante: las licencias x86.
x86 y las licencias
Comentábamos en el anterior artículo de esta serie que ARM diseña sus arquitecturas y vende esta propiedad intelectual a otras compañías, encargadas de tomar esos diseños, modificarlos si fuese necesario y luego ordenar la fabricación del procesador final. Intel toma un doble papel de diseñador y fabricante de sus procesadores, ya que también vende las licencias a otros fabricantes.
El ejemplo más claro de compañía a la que Intel le licencia a arquitectura x86 lo encontramos en AMD, quien desde hace varias décadas acuerda con Intel un contrato tal que le permite fabricar chips con el mismo juego de instrucciones, de forma que son plenamente compatibles en software aunque utilizan hardware diferente. En la actualidad sólo AMD y VIA tienen licencias x86 proporcionadas por Intel, además de lógicamente ella misma. Las cuotas de mercado hablan por si mismas:

Diagrama de porcentajes de licencias x86 (vía Hardware.info)
Intel X86 y sus principales características
La larga experiencia de la compañía ha repercutido en múltiples y notables cambios en muchos aspectos, que van desde la mejora en el tamaño de los buses de datos (16, 32 y ahora 64 bits) a múltiples nuevas instrucciones añadidas que han ido adaptándose a los nuevos usos de la tecnología
Por ejemplo el 8086 no disponía de operaciones en coma flotante, pera lo cual Intel creó un coprocesador matemático que realizase estas operaciones: fue una pequeña extensión sobre x86 denominada x87 y lanzada al mercado bajo los nombres 8087, 80187, 80287, 80387, 80487 y la última 80587, ya a mediados de los 90. Se trataba de procesadores independientes que proporcionaban un extra de rendimiento en cierto software, pero que a la vez suponían un coste adicional respecto del equipo original que tampoco era considerado muy barato. Desde hace un par de décadas todos los procesadores x86 comerciales incluyen instrucciones para operar en coma flotante, con lo que no es necesario un coprocesador adicional salvo en ciertos usos muy concretos en los que se requiere de una gran potencia de cálculo, por ejemplo con sistemas como NVidia Tesla.

Diagrama esquemático del Intel 8086 (vía Wikipedia)
x86 también ha ido incluyendo nuevos sets de instrucciones y mayores registros para afrontar todo tipo de tareas. MMX, que añadió los registros utilizados en la arquitectura x87, ha sido uno de los más conocidos y fue incluido en un conjunto de modelos basados en los Pentium y lanzados en 1996, si bien hay muchos más: SSE (Streaming SIMD Extensions en sus versiones SSE, SSE2, SSE3, SSSE3 y SSE4; introdujo múltiples instrucciones para operar con datos en coma flotante, enteros o posiciones de memoria), 3DNow! (una evolución sobre MMX, también para aplicación gráfica) o AES (más reciente, para cifrado de la información). En Wikipedia puede consultarse un breve resúmen de las instrucciones disponibles, si bien la documentación más completa la proporciona la propia Intel y se compone de unos cuantos miles de páginas.
Si echáis un vistazo a ese par de enlaces veréis que en x86 dispondremos de cientos de instrucciones, muchas de ellas complejas que podrían subdividirse en varias instrucciones más pequeñas. Sin embargo la filosofía de CISC es precisamente esa: proporcionar un amplio conjunto de instrucciones que pueden abarcar múltiples tareas más simples. El algoritmo del huevo frito de nuestra primera entrada introductoria era el siguiente:
-
Paso 1: Poner la sartén en la vitrocerámica
-
Paso 2: Echar aceite
-
Paso 3: Calentar el aceite
-
Paso 4: Esperar a que esté caliente
-
Paso 5: Cascar el huevo
-
Paso 6: Verterlo con cuidado sobre el aceite caliente
-
Paso 7: Con la ayuda de una paleta, echar el aceite por encima del huevo
-
Paso 8: Comprobar que el huevo ya está cocinado y, en ese caso, sacarlo a un plato
Supongamos que cada uno de esos 'pasos' puede ejecutarse en un procesador Intel 8088. Sin embargo, jugando a ser Intel procedemos a lanzar el Pentium MMX con nuevas instrucciones entre las que se encuentran dos nuevas: [Echar y calentar el aceite]
y [Cascar el huevo y verterlo con cuidado sobre el aceite caliente]
, ambas más complejas que las anteriores. Si las utilizásemos en nuestro algoritmo el resultado sería el siguiente:
-
Paso 1: Poner la sartén en la vitrocerámica
-
Paso 2: Echar y calentar el aceite
-
Paso 4: Esperar a que esté caliente
-
Paso 5: Cascar el huevo y verterlo con cuidado sobre el aceite caliente
-
Paso 7: Con la ayuda de una paleta, echar el aceite por encima del huevo
-
Paso 8: Comprobar que el huevo ya está cocinado y, en ese caso, sacarlo a un plato
Unos años más tarde estamos diseñando Pentium 4 y decidimos probar con una nueva instruccion, [Echar y calentar el aceite hasta que alcance su temperatura óptima]
, con lo que podríamos volver a modificar el algoritmo:
-
Paso 1: Poner la sartén en la vitrocerámica
-
Paso 2: Echar y calentar el aceite hasta que alcance su temperatura óptima
-
Paso 5: Cascar el huevo y verterlo con cuidado sobre el aceite caliente
-
Paso 7: Con la ayuda de una paleta, echar el aceite por encima del huevo
-
Paso 8: Comprobar que el huevo ya está cocinado y, en ese caso, sacarlo a un plato
Podríamos continuar añadiendo nuevas instrucciones cada vez más complejas para completar nuestra tarea, minimizando el número de pasos
pero siendo estos cada vez más complejos. Incluso llevando la filosofía al extremo, si vemos que nuestros usuarios/clientes hacen muchos huevos fritos en sus desarrollos podríamos implementar una única instrucción:
-
Paso 0: Hacer un huevo frito
Que sería la más compleja de todas.
Otro aspecto fundamental de los procesadores x86 es su rendimiento. A lo largo de la historia ha demostrado ser una arquitectura muy potente, pero esto tiene su contrapartida: son un conjunto de procesadores que consumen más energía que los modelos ARM.
Arquitectura x86, conclusiones
Terminamos este capítulo de nuestro especial de arquitecturas con algunas conclusiones finales sobre x86, una de las más importantes de la historia.
El rendimiento de x86 ha crecido sustancialmente con cada nueva generación de procesadores. Intel, como gran creadora de la arquitectura ha ido adaptándola a los nuevos usos por parte de los usuarios, añadiendo no sólo nuevas instrucciones sino también nuevos chips. Lo último ha sido introducir una unidad de procesamiento gráfico junto a la CPU, lo cual permite abaratar costes y ofrecer un conjunto que si bien no es excesivamente potente en el procesamiento de imágenes, sí es suficiente para muchos usuarios.

El futuro de la arquitectura x86 mezclará su negocio tradicional en equipos de sobremesa y portátiles junto a esa nueva categoría de dispositivos 'portátiles', móviles y tabletas principalmente. Intel ya ha introducido su tecnología en algunos dispositivos con unos remodelados Intel Atom de bajo consumo, y a lo largo de este año está confirmado su uso en muchos otros gadgets de diversas marcas.
Por otro lado, el gran rival de x86 es ARM, una arquitectura cuyo crecimiento en los últimos años está siendo importantísimo al conseguir introducirse en dispositivos pequeños, eficientes y con un precio generalmente más atractivo, que seducen a muchos usuarios. No cabe duda de que Intel continuará evolucionando su principal arquitectura hacia los nuevos usos de la tecnología y que seguiremos hablando de ella durante muchos años más.
Especial Arquitecturas Hardware: índice
-
IV.- Arquitectura x86, una historia imprescindible de la informática
En Xataka | Todo sobre las arquitecturas de PC
Ver 56 comentarios
56 comentarios
Alkar
Oh, qué tiempos. En mi casa lo primero que entró fue un Amstrad CPC8256. Muy a lo Apple, por cierto, puesto que CPU y lector de discos iban integrado en el monitor. Monopieza.
Pero la revolución llegó con un 8088 de segunda mano. "Será un 8086", me decían. Pues no, yo lo había abierto y ponía 8088. "Que es mejor, porque es un número más alto, digo yo". Además, venía con un disco duro de 40MB. ¡Una burrada! ¡Nadie usaba discos tan grandes! "Es que lo usaban en una ferretería, y como tienen tal variedad de productos distintos necesitan espacio para guardar una base de datos tan grande". En serio, 40MB era más del doble de lo que tenían los PCs punteros en esa época.
Eso sí, de gráfica ni hablamos. Tenía una tarjeta de texto. Sí, Hercules, una tarjeta para mostrar textos en pantalla. Antes de poder jugar tenía que ejecutar un emulador de tarjeta gráfica CGA, y no todos los juegos eran compatibles.
Y sobre el co-procesador matemático... buf, era una gran mejora, sobre todo cuando te apartabas del WordPerfect o de la Borland Quattro. Recuerdo que mi amigo Covman tardaba unos dos días en hacer un morphing entre dos imágenes con su 386, pero al ponerle un coprocesador matemático conseguía lo mismo en tres minutos.
Me siento viejo, oye.
Rodri
Este es uno de esos post que llevan mucho tiempo para ser escritos, no tanto como hacer un huevo frito :P Genial Whiskito
jcras
Mitico el ejemplo del huevo frito... Buen post.
Antonio Ortiz
todavía recuerdo con conseguí un ¿486? ¿386? con "coprocesador matemático" ¡estaba en el futuro!
ignaciomolina
Lo peor de leer este post es lo mayor que te hace sentir ;-).
Yo todavía conservo un ordenador con un procesador 8086, que venía con DR-DOS, 640 Kb de RAM, disqueteras de 3,5 y 5 1/4, y disco duro de 20 MB. Recuerdo que me decía el dependiente: "en la vida llenarás ese disco duro. Ahí caben todas las enciclopedias del mundo". Casi acierta...
tor125
Muy interesante! Me ha gustado mucho, además muy buena la explicación del "algoritmo del huevo frito" con los distintos procesadores de intel, gracias por el artículo!
maxwe11
Una coca-cola fría, algo para picar, y un artículo como este. ¿La felicidad?.
royendershade
Ya se que al no estar tan extendido no tiene tanto interes, pero si es posible agradeceria una entrada parecida sobre la arquitectura del Cell. Quiza me equivoque pero creo que solo tiene ventajas con respecto a la x86 y que su complejidad, aunque ha dificultado trabajar con el, una vez bien conocida permite unas mejoras de rendimiento altisimas.
omarda187
Gran entrada. Muy entretenida =)
system32
Muy interesante! Yo añadiría algo mas, como que es muy posible que dicha arquitectura este llegando a sus limites tecnológicos. En los últimos años por esas razones casi no ha tocado las frecuencia y se ha optado por la paralelismo. Si no me equivoco en los 80 ya existían CPUs con multithreading hardware, hasta hace unos años no fue muy "necesario" la investigación/desarrollo en ese ámbito. Con las frecuencia casi congeladas el futuro apunta mas y mas hacia el paralelismo. En cuanto a ARM, su mejora se nota no porque haya echo un salto muy grande sino por el echo del "estancamiento" (por llamarlo de una forma) de la arquitectura x86 y el gran trabajo/conocimiento que se ha aprovechado de dicha tecnología. PD: por cierto, alguien sabe exactamente la diferencia en x86 y ARM? (no encuentro nada útil)
astaroth16
Excelente entrada amigo, esto va para mis favoritos para seguir leyendo, me hizo recordar mi primera pc 80286 con 20mb de disco duro y 8Mb de ram :) tenia muchos videojuegos en discos 5 1/4"
alggonzalez
Bueno yo tenia era una Zinclair ZX81, NorthStar Advantage y luego una Macintosh 512. Y recuerdo que para jugar usaba era la ZX81. que se tardaba un mundo en guardar en cinta lo que programaras
Kenny Barrera
Que buen articulo Whiskito. Creo que me he leido toda esta serie de articulos. Sin duda, una buena forma de pasar unos minutos leyendo y recordando. Me hubiera gustado meterme en todo esto desde antes, pero y empece con los Pentium 3. Si, lo se, algo tarde ya. Pero aun asi disfruto mucho estos articulos, ya que soy estudiante de ciencias de la computacion, y me apasiona todo esto. En fin, buen articulo y gracias.
eolo_ppc
Me encanta leer este tipo de artículos, soy joven y todo esto lo desconocía. Mi primer pc me lo armé yo con piezas de 2ª mano. El procesador, la placa y la memoria me las dio un conocido y el resto lo puse yo. Era un Pentium 100Mhz con 32 Mb de RAM, 2Gb de disco duro, Gráfica S3 de 4Mb (S3 trio creo que se llamaba) y corría Windows 95. Para mi fue una maravilla de máquina,aunque tenia amigos que ya tenían Pentium 2 333Mhz, pero bueno por esa época tener ordenador todavía era casi un lujo, así que me sentía privilegiado con mi Frankestain.
hdmi
Por curiosida las instrucciones de estos procesadores son lo mismo que el assembly language de la CPU ?
lotiopep
Cuanto aprendo con tus entradas!
ricky.plazola.3
Creo que yo soy exageradamente joven, pues mi primera computadora es de cuanto yo tenia 5 o 6 años y ya era una pentium 4 a 3 Ghz, ram de 1gb DDR (2 memorias de 512 mb) un disco duro Sata 150 MB/s de 128 (que actualmente lo utilizo como espacio extra)y gráficos de 128 MB intel integrados a la tarjeta, claro que fue una obra maestra para su tiempo. P.D Creí que la gente que lee este blog era mas joven
Tachikoma
Todo esto me ha hecho recordar mi Amstrad CPC 464 el PCW 8256, También otro modelo creo que se llamaba Amstrad PC 1640, que creo que fue el primer pc que vi en color nada mas y nada menos que con 16 colores. También recuerdo el que se compró mi profesor de matemáticas, un IBM PS1 que le costó un dineral pero traía un juego de ajedrez, creo que se llamaba Chessmaster, donde las figuras salían en color y perspectiva 3D. También recuerdo el MSX (no recuerdo el modelo) que tenia mi primo y disponía de un lápiz conectado con el que pulsabas en la pantalla y seleccionabas cosas en algún juego. También recuerdo Spectrum 48k con la grabadora justo al lado y por ultimo recuerdo mi primer Olivetti 286 con MS-DOS 2.0 y sus super diskettes de 3,5", casi na. Que buenos recuerdos....
logistark
A ver, creo que este artículo sobre arquitectura haría rasgar las vestiduras a cualquiera que haya estudiado un poco de arquitectura de microprocesadores.
Pero tal vez el cambio mas grande, y subsiguientes mejoras que ha recibido esta arquitectura. Se produce en los modelos Pentium Pro/Pentium II, y es seguramente la razón por la que estos modelos destacaron tanto en su época en cuanto a rendimiento. Lo de MMX si, es muy bonito pero eso tiene una aplicación muy concreta en cuanto a mejora de rendimiento.
Bien explico, el gran cambio es que a partir del Pentium Pro la arquitectura x86 se convierte en una arquitectura "Superescalar". Bien y os preguntareis que es superescalar con ejecución fuera de orden. Aunque el Pentium original ya era superescalar, no se podría decir que ejecutar 2 instrucciones a la vez sea un gran avance. Ahora bien, el Pentium Pro podía ejecutar hasta 5 instrucciones a la vez y además no consecutivas. Con eso, y siendo el primer procesador de la arquitectura 8086 en llevar integrada la cache de L2 le dieron un empuje en rendimiento bastante considerable.
Ahora bien, para realizar esta pequeña maravilla de la ingeniera de la época, poder ejecutar 5 instrucciones a la vez. Se vio que utilizar las clásicas instrucciones x86 CISC no resultaría optimo. Curiosamente este avance no lo invento Intel, este avance viene de los procesadores RISC como ARM. Pues resulta que los Pentiums Pro fueron los primeros en tener el decodificador de instrucciones x86. Transformando las instrucciones CISC x86 en pseudoinstrucciones RISC llamadas μ-op. Y es que los procesadores Superescalares en mi opinión solamente tenían sentido con instrucciones RISC. Por la rapidez en que estas instrucciones pequeñas se iban a ejecutar, y eso lo sabían los ingenieros de Intel y así lo hicieron.
Y este modelo el Pentium Pro(i686), es el que dio lugar a los actuales Intel Core i3/i5/i7. Así que si, a nivel interno todos los x86 modernos trabajan como un RISC. Por lo que en realidad, ARM y x86 actualmente son primos lejanos. O mejor dicho, x86 ahora mismo se ha convertido en un hijo bastardo de RISC.
beirogtx
Nadie se dio cuenta el porque a la linea pentium se le denomino así, ademas de los derechos de autor que no le permitían a intel patentar mas modelos de microprocesadores con solos números. Todo recae sobre el numero "5" ,siguiendo la lógica de la secuencia de los modelos anteriores 286->386->486->586... En conclusión, Pentium viene de pentágono, por cinco "5"
xevi.lopez.79
ufff, leyendo este articulo y los comentarios de este, me doy cuenta que con "tan solo" 40 años, me he pasado la vida en digital al igual que vosotros. Es increíble que lea mas de una de las respuestas y no recuerde haberlas escrito yo, por que tengo las mismas experiencias que vosotros, veo que tengo muchas almas gemelas por ahí desperdigadas. Como vosotros, también empecé con un micro, MSX (podría ser el espectrum , pero por alguna razón escogí ese) En mis tiempos de FP, como el amigo txipiron_ estuve usando el Autocad y el Orcad, supongo que compartiremos la electrónica como estudios de finales de los 80. Recuerdo perfectamente todas las generaciones de procesadores mencionados..... Y ya a mediados de los 90 empiezo a dedicarme de alguna forma a la informática de forma profesional, cosa que aun hago. Pero la verdad es que echando la vista atrás parece que sea mucho mas viejo, supongo que es el problema de empezar temprano.
koke24
Sólo un par de apuntes: * La principal razón del 8088 fue el bus que era de 8 bits en lugar de los 16 que tenía el 8086: en aquel tiempo casi todo el hardware estaba pensado para las CPUs de 8 bits y el que no lo estaba, era inmensamente caro. Internamente creo que era exactamente igual que el 8086. * La razón de las 640Kb no tuvo nada que ver con "tito Bill", como alguien ha apuntado por ahí. El bus de direcciones del 8086 tenía 20 bits, 1024Kb, 1Mb: muchísima memoria para aquella época. Pero dentro de ese espacio de direcciones había que meter la ROM de la BIOS y direcciones específicas para el hardware adicional (controladoras de disco, tarjeta gráfica, etc). IBM decidió que reservaría 384Kb de direcciones para esos menesteres y dejó 640Kb para los usuarios. Hay que tener en cuenta que menos de diez años antes Thompson y Ritchie habían escrito Unix en un ordenador con 64Kb de memoria.