Arquitectura x86, una historia imprescindible de la informática

#4   La inexplicable historia del triunfo del CISC.
votos: 8    karma: 84
#23   #7 MMX sólo funcionaba con números enteros, 3DNow! permitió usar "float", que era lo que pedía entonces el mercado, aunque incluso AMD desaconseja ahora su uso (por obsoletas y poco eficientes). Entonces apareció SSE (MMX2), SSE2 y SSE3 de Intel, SSE4 de AMD... y ahora acaba de salir AVX y pronto lo hará AVX2.
Así que para nada están dejando de apostar por ellos, lo que pasa es que no se les da tanta publicidad.
votos: 2    karma: 25
#10   #4 el procesador de IBM, Cell, que lleva por ejemplo la Ps3 es RISC. Y ARM triunfa aunque lejos del escritorio.
votos: 3    karma: 40
#18   #4 Es que realmente hoy día, y desde al menos el Pentium Pro, se trata de un procesador internamente RISC, con una capa externa de traducción de CISC a RISC. De hecho, el Pentium Pro ha sido uno de los mejores procesadores de Intel. Toda la arquitectura Core está basada es él. Todas las instrucciones x86 se traducen a microinstrucciones internas, más pequeñas y sencillas. Es como un híbrido CISC/RISC. Está claro que toda esa capa de traducción podría estar dedicada a otra cosa si fuera directamente RISC, pero es así como han podido aumentar tanto el rendimiento.
Además, de todo el juego de instrucciones x86, hay muchas que están desaconsejadas en los manuales de programación (normalmente, las más complejas). Se busca (en la medida de lo posible) un código ensamblador con una gran mayoría de instrucciones simples. Aunque la compatibilidad obliga a aceptar todo el juego de instrucciones.
votos: 10    karma: 89
#21   Veo algunas imprecisiones en el artículo.

Para empezar y como dice #18, los procesadores x86 actuales (en realidad x86_64) no son CISC puramente, sino que traducen internamente dichas instrucciones CISC en intrucciones RISC.

Y, en cuanto a las licencias, la empresa que diseñó el actual juego de instrucciones x86_64 no fue Intel, sino AMD (el primer procesador con ella fue el Athlon64).

Por lo demás, está interesante recordar la historia.
votos: 6    karma: 65
#22   #13 No estoy para nada de acuerdo. ¿Que x86 es una chapuza? Sí, y más desde el Pentium 4, que era el plan B en caso de que su flamante arquitectura EPIC (procesadores Itanium) no cuajara. El problema es que, por mucho que lo han intentado, nadie ha conseguido crear una arquitectura que en la práctica dé más potencia de cálculo que los actuales x86. El Itanium fue un desastre y el Itanium 2 casi nadie sabe que existe. Incluso creo que va a ser el último de su familia, por el escaso éxito en ventas.
En los inicios sí es verdad que tenía un rendimiento regular en comparación con la competencia y fue IBM y su PC el que hizo que fuese el más usado, pero tantos años de optimización han dado sus frutos.
Por algo Apple se pasó a x86, era la única forma de poder tener computadoras potentes a un precio aceptable y con un consumo "decente". Ni los Alpha de digital (cuya tecnología fue copiada por AMD para su bus frontal) ni los Sparc han conseguido un mayor rendimiento. Hoy día los procesadores intel/AMD son un monstruo de Frankenstein, una mezcla de RISC en el backend y CISC en el frontend, y sorprendentemente funcionan muy bien.

#21 Hay muchas imprecisiones, por ejemplo cuando habla de P4 comenta de que hay instrucciones más complejas y tal... lo que no comenta es que el P4 tenía 21 etapas de segmentación (21 ciclos de reloj) en su línea de trabajo estándar para completar una instrucción, por lo que en realidad el rendimiento por ciclo era mucho peor que en el Pentium III. Tanto era así que el P4 a 1.3Ghz (la versión más baja) tenía menos rendimiento que un P3 a 1 Ghz. Por eso el P4 se llegó a vender a 3.0 Ghz (la versión Extreme llegó a los 3.7 Ghz, pero con 31! etapas), y cualquier procesador posterior rinde una barbaridad más a una frecuencia mucho menor.

Otra imprecisión es la "facilidad de programación". En los inicios, cuando se programaba en ensamblador, cualquiera que hubiese programado un Motorola 68000 echaba pestes de las instrucciones x86.
votos: 14    karma: 128
#27   Lo curioso de la situación es que las cronologías de los procesadores (me) llevan a comparar momentos distintos:

1) 8080 -> 8088 (PC) -> 8086 -> 80x86 -> x86-64
2) 8080 -> Z80 (Amstrad, Sinclair, ...)
3) 6800 -> 68000 (Atari, Commodore, Apple, ...) -> 68010 -> 68020 -> 68030 -> PowerPC
4) 6800 -> 6502 (Commodore, Apple, ...) -> ARM

Seguimos con las mismas arquitecturas, básicamente, que hace 35 años.

#22 Los avances de Intel no siempre han sido de Intel. Robó cosas de DEC (hubo juicio), robó cosas de Transmeta (hubo juicio) y ha copiado a todas las demás empresas de procesadores que ha podido. De hecho, el éxito original de Intel tuvo que ver más con un enchufe que con su capacidad: el diseñador del IBM PC original era ex-trabajador de Intel y por eso eligió el 8088 en lugar del 68000, por ejemplo, cosa que hubiera preferído (mejor diseño que el remiendo que era el 8088).

Por remiendo me refiero a que el 8086 era una versión 16 bits del 8080 y el 8088 era una versión recortada (lo mismo que el 68008, que casi ni se uso, excepto en el Sinclair QL). El 68000 por el contrario no era una versión del 6800; sólo compartían el bus externo en el 68008 y por abaratar las placas. El resto era totalmente nuevo. Por eso no tuvieron problemas a la hora de pasar a 32bits internos y externos, porque el procesador era de 32 bits directamente, con una memoria a la que se accedía directamente, sin usar la chapuza del solapamiento de bits.

Si Apple se pasó a Intel no fue por la razón que dijo de cara a la galería. De hecho, poco tiempo después de pasarse Apple a Intel, los PowerPC superaron (otra vez) a los Intel en velocidad. En su momento se habló bastante de un acuerdo económico entre Apple e Intel, lo cual estaría muy en la línea de este (si no puedo ganar por diseño o potencia, gano por dinero).

En cuanto a los Alpha y los SPARC, y si quieres añadimos los SuperH y los ARM durante años ¿comparamos presupuestos de desarrollo? Intel está donde está por el braguetazo que dio con el PC.

PS: ¿Alguien recuerda el método para pasar de modo protegido a modo real del 80286? ;)
votos: 4    karma: 26
#29   #27 Bueno, no sé si Intel hizo precio especial a Apple o no, pero los PowerPC consumían y se calentaban más que los Core Duo de Intel y no veían cómo meterlos en un portátil sin que la batería durase un suspiro.

Por lo demás estoy de acuerdo contigo, y es lo que intentaba decir: Intel le ha dedicado tanta I+D (y espionaje, industrial, como comentas) a su arquitectura que ni ellos mismos son capaces de hacer una nueva "limpia" y que rinda mejor. Y el resto de competidores están a años luz. ARM es una gran arquitectura en la relación prestaciones/consumo eléctrico, pero un ARM en un sobremesa, por mucho que quiera usar más energía, no supera a un x86. Es ahora que la potencia "sobra" que los fabricantes están empezando a poner ARM en servidores para poder ahorrar energía (un servidor que sólo se encargue de tareas I/O no necesita un Xeon y si está 24/7 el ahorro en consumo se nota mucho).
votos: 3    karma: 34
#31   #29 No sé si lo sabes, pero los ARM salieron para sobremesa ;) Además, nada impide a ARM sacar un diseño más potente... y con más consumo. Lo que pasa es que está bastante cómoda sin tener que pelearse por un mercado que, según previsiones, será cada vez menos relevante cuando tiene a otro cada vez más relevante en el bolsillo (en los smartphone reinas de manera indiscutible). Como mucho, igual podrían intentar meter la nariz en las consolas de sobremesa, pero tampoco lo veo claro (desde el punto de vista empresarial).

Eso sí, me encantaría que entraran aunque fuera de puntillas en los de escritorio... pero va a ser que me quedaré con las ganas.
votos: 0    karma: 9
#30   #28 Hombre, según tengo entendido (corregidme si me equivoco), la forma de tratar la memoria de x86, por segmentos hasta alcanzar un megabyte, es horrenda. Pero a partir del 386 existe el modo protegido, o modo flat, que permite acceder linealmente a los 4 GB de memoria. Este modo era el que proporcionaba el famoso "cargador" DOS/4GW que llevaban muchos juegos de la época de MSDOS. (Sí, tengo mis añitos). Y por supuesto, también en x86_64.
Edit:
#27 Yo no me acuerdo, jeje. En cuanto al 68000, suscribo lo que dices. Era una arquitectura mucho mejor pensada que la x86.
votos: 2    karma: 26
 *   buloso
#32   #30 Sí, pero después de hacer cagadas en el diseño como olvidarse de poner una instrucción (o un procedimiento rápido) para pasar de modo protegido a modo real en el 286. Tenías que poner un valor concreto en un registro concreto y hacer un reset cada vez que querías ir en esa dirección. De modo real a protegido era mucho más fácil. Supongo que pensaban que nadie querría usar el modo real una vez probaran el protegido... sin tener en cuenta que existía el MS-DOS y era lo más usado. Imagino que esperaban que saliera algún nuevo MS-DOS que trabajara todo el rato en protegido o algo así, porque sino no lo entiendo.
votos: 1    karma: 19
#37   Interesante, desconocía toda esta trama del RISC/CISC, la arquitectura x86 y ARM. Veo que hay expertos por aquí (#13, #22, #27, #30,..).

Según entiendo, ARM es mucho más eficiente enérgeticamente que x86, de hecho en la actualidad muchas maquinas podrían utilizar esto y consumir menos energía (mas duración de la batería, uno de los grandes problemas). Quizás vale la pena perder un poco de potencia de cálculo ganar algo en batería? ¿Tanta es la diferencia?

¿Se prevé un futuro donde ARM tome protagonismo frente el x86?

Sobre el tema de las retro-compatibilidades del x86 y los monstruos de Frankeintein que son ahora realizando traducciones de CISC a RISC dentro suyo y desperdiciando potencia de calculo, porque directamente no se establece un punto donde no haya compatibilidad con lo anterior y se hacen las cosas bien hechas? ¿Es viable migrar aun modelo con solo instrucciones RISC?

Me habéis despertado la curiosidad malditos!
votos: 1    karma: 19
#44   #38 Teniendo en cuenta que puedes hacer funcionar en un x86/x86-64 juegos que están creados para procesadores 6502, Z80, 68K, 65C816, ARM7, MIPS, PowerPC (Broadway), ... no veo el problema en que los juegos de x86/x86-64 se pudieran utilizar en otra arquitectura.
votos: 0    karma: 9
#47   #37 Bastaría con que dejara de tener tanta importancia Windows. Cualquier otro sistema no tendría demasiado problema en pasar a otra arquitectura. De hecho, quitando Windows y MacOS, casi todos los SSOO son multiplataforma.
votos: 0    karma: 9
#50   #46 Sí pero tiene la ventaja de que te permite usar una aplicación o un juego antiguo sin tener que bajar al trastero a desempolvar un dinosaurio mientras rezas por que siga funcionando. Tener un cacharro distinto para cada cosa además es mucho más desperdicio de potencia por que sólo usas uno a la vez.

De hecho una de las cosas que hace que Linux no triunfe más es el desprecio que hay en general por la compatibilidad. En equipos antiguos siempre pasa algo, actualizar y que por un problema de compatibilidad la pantalla deje de funcionar y tengas que modificar el arranque es de lo más cómodo... y el último Ubuntu ya es la polla, va más lento en ellos que Windows 7 y si la pantalla tiene poca resolución no hay forma de utilizar sus pantagruélicas e irredimensionables ventanas de configuración.

#47 Pero no se adaptan tan bien al hardware... No te imaginas cuál fue mi sorpresa cuando en una especie de netbook de 7" que tengo tras probar Windows XP y Ubuntu, instalé Windows 7 con toda su horrorosa herencia y compatibilidad, y a pesar de ello, les saca a los otros 2 una hora de batería (y pasar de 2 tristes horas a 3 se nota).
votos: 0    karma: 7
 *   --151124--
#59   Por cierto no podría terminar de opinar en esta noticia sin decir que los procesadores Alpha eran mis preferidos en cuanto a diseño, tan elegantes. No por cualquier cosa eran el ejemplo a seguir en modelos de otras marcas. También se ven al detalle en algunas universidades en las asignaturas de arquitectura de computadores para estudiar predictores de salto y demás historias. -> en.wikipedia.org/wiki/Alpha_21264

#37 Yo diría que los procesadores ARM no tienen mucho que hacer en el campo de lo que es la informática tradicional, pero últimamente se veían ciertos movimientos para integrarlos en netbooks y cosas así. En principio un menor gasto energético no debería penalizar el rendimiento. La principal forma de lograrlo es tener instrucciones más simples, evitar ciertas mejoras en el cauce (ahí viene la penalización al rendimiento) y finalmente programar con algoritmos más eficientes (menos e/s, localidad espacial y temporal de las caches de CPU). Un ejemplo de lo segundo lo puedes ver aquí en.wikipedia.org/wiki/Hyperthreading#Drawback_history, precisamente es ARM criticando el Hyperthreading de Intel por su ineficiencia energética. De todas formas las mejoras en la autonomía de las baterías está haciendo que se replanteen incluir estas mejoras en sus chips.
votos: 2    karma: 21
#67   Veo mucho aficionado a la arquitectura de ordenadores :-) #13 #14 #18 #22 #25 #27 #35 #37 #59

Tal vez os interese ver fotos de alta resolución de las entrañas de algunos micros en visual6502.org. La he descubierto hoy mismo y ya le estoy dando vueltas a la idea de hacerme algún póster ;)

Os dejo enlaces a varios ejemplos. ¡¡OJO!! Algunos llevan a archivos muy grandes.

MOS Technology’s 6502 CPU (1975) Apple I, II, Commodore PET, C64, Atari 2600 (6507), Atari 400, 800, Nintendo NES
visual6502.org/images/6502/6502_pad_annot_07.png
visual6502.org/images/6502/6502_top_op10x_BF_4677.png (60 MB)
visual6502.org/JSSim/index.html (Esto es un simulador online de la arquitectura física del micro!!!!)

Motorola 68000
visual6502.org/images/68000/Motorola_68000_die_20x_1c_noMetal_6500w.jp (20 MB)
visual6502.org/images/68000/Motorola_68000_die_20x_1c_noMetal_10000w.p (238 MB)
visual6502.org/JSSim/expert-6800.html (Simulador)

Intel 8086
visual6502.org/images/8086/8086_5x_top_cwP025614_4301w.jpg (10 MB)

Intel 80286
visual6502.org/images/80286/Intel_80286_die_shot_20x_1a_1600w.jpg (50 MB)
votos: 3    karma: 29
#69   #67 Viendo los mapas se me ha pasado por la cabeza calcular el tamaño que tendría con la tecnología de ahora el 6502... creo que hay granos de arena más grandes xD
votos: 1    karma: 15
#71   #37 La diferencia: www.phoronix.com/scan.php?page=article&item=samsung_exynos5_dual&a

Los procesadores ARM más potentes no tienen nada que hacer con un i7, pero en cambio están a la par de un Atom.
Lo que pasa es que el Atom no obliga a recompilar nada, con lo que parte con ventaja (Un Atom es muy barato y además ya consume poco, menos de 20W a toda potencia). Aún así, puede que ahora que Windows8 ha sido compilado para ARM aparezcan portátiles de gama baja con procesadores con esta arquitectura.


En principio, como las instrucciones RISC son más sencillas, se requiere más cantidad de instrucciones para hacer lo mismo que con CISC, lo que significa un aumento del uso de la memoria RAM, cachés más grandes... pero no sé si eso significa algo a estas alturas: si el procesador tiene una arquitectura más sencilla, puedes usar más transistores en otras cosas: estamos hablando de unos mil millones de transistores en un procesador hoy día, la mayoría dedicados a la caché.
votos: 0    karma: 6
#34   #27 Supongo que acuerdo económico de Apple e Intel hubo, pero eso de que PowerPC sobre pasó a x86 en rendimiento no sé de dónde lo sacas. Apple dejó los PowerPC porque su rendimiento estaba estancado ya desde el G4 y el G5 era un calefactor que obligaba a meter cosas como refrigeración líquida en los sobremesa y que era impensable incorporar a un portátil. Por aquel entonces Apple estaba obligada a poner G4s en los portátiles, que si ya de por si iban cortos en rendimiento más aún por ser de una generación anterior.

#31 Donde están empezando a meterse es en el mercado de servidores. La relación consumo/potencia de los ARM es muy golosa para un CPD.
votos: 3    karma: 37
 *   Xtampa2 Xtampa2
#36   #34 Me refiero a que la queja, de cara a la galería, fue que Motorola no era capaz de sacar un PowerPC a 3GHz (creo recordar esa cifra) y resulta que salió antes el PowerPC a 3Ghz que el Pentium a 3GHz. No digo que no fuera una parrilla ideal para freír salchichas. De hecho, no había caído en lo que dices de los portátiles. Claro, que si lo piensas, Motorola podría haber sacado una versión de bajo consumo (-> menos calor) pero no tenía en aquel momento recursos suficientes para hacer por un lado una versión más potente y por otro una con menos consumo (supongo). Después de todo, en aquel momento casi que tenía sólo a Apple como cliente de los PowerPC.
votos: 0    karma: 9
#39   #27 el problema es que los x86 siempre han sido 100% compatibles hacia atras y eso es un problema de cara a la evolución. Motorola no hacia eso por ejemplo entre el 68000 y el 68020 y demás desaparecián instruciones y aparecian otras nuevas. Por eso los motorola siempre han sido mucho mejores que los intel mientras se mantuvieron a las mismas velocidades de reloj aunque no 100% compatibles entre si.
No entiendo porque el autor del articulo marca la arquitectura x86 como hito tecnologico cuando ya estaba obsoleta en los 80, de hecho solo la usaban los pcs e intel hace años que quiere librarse de ella.Cualquier maquina recreativa, ordenador, consola tiraba por otro lado.
Y por cierto el powerpc no viene de los 680x0, de los 680x0 vinieron los coldfire los powerpc fueron un diseño en principio risc que supuestamente partían de cero aunque al final fueron evolucionando por otros derroteros.
votos: 1    karma: 15
#43   #39 Admitida la puntualización sobre los PowerPC y los ColdFire, gracias :-) La verdad es que no me he explicado del todo bien. Me refería a que partiendo de los 68K Motorola avanza hacia los PowerPC (ya sé que es un cruce con la tecnología POWER de IBM), lo mismo que ARM no es una evolución directa del 6502 sino que está muy inspirado en este.
votos: 1    karma: 15
#33   #22 Creo que el bus frontal de Alpha (¿EV6?) fue licenciado por AMD, no copiado. Creo que tenían su licencia y tal...
votos: 1    karma: 16
#28   #18 Exactamente, iba a comentar eso mismo, hablar de las ventajas de CISC es una quimera, porque por debajo todo es RISC. Las instrucciones complejas son muy tentadoras, pero no merecen la pena; claro ahora el coste de la traducción es bajo comparado con el cauce completo y no se nota, pero es rendimiento que se pierde. Y la forma de trabajar con la memoria en x86 tan absurda... En fin, es lo que hace el marketing.
votos: 4    karma: 43
#35   #4 El triunfo de la arquitectura CISC fue más que lógico. Los procesadores se inventaron en una época en que la memoria era muy cara, las desventajas de tener instrucciones de longitud diferente y tiempos de ejecución diferente no competían con la ventaja de tener el código comprimido y usar menos memoria.

Para cuando la memora fue suficientemente barata para que los diseños RISC fueran funcionales y disponibles en el mercado, el IBM-PC ya se había establecido como la norma, acostumbrando a los usuarios a dos cosas que hoy nos parecen obvias: compatibilidad entre diferentes fabricantes, y compatibilidad entre diferentes generaciones. Nuevamente, el costo de la ineficiencia del x86 era ampliamente compensado por el ahorro derivado de la compatibilidad.

Hoy en día no existen procesadores CISC, sino que son superescalares, con líneas de ejecución larga que primero traducen de x86 a otra arquitectura RISC, y luego sí ejecutan. Nuevamente, el precio de la traducción es bajo comparado con el costo de perder compatibilidad.

#28 Si lo miras con los ojos de ahora, con aplicaciones web o java ejecutándose en máquinas virtuales, con memoria barata, el usar procesadores tan complejos como los x86 puede parecer un absurdo, pero hay que tener en cuenta que los procesadores, más que diseñarse cada vez desde cero, han evolucionado, y hay herencias de las que no es fácil deshacerse.
votos: 8    karma: 78

menéame