8086 vs RISC. Más no es siempre mejor
En el año 1978 ocurrieron varios sucesos que devendrían importantes: Israelíes y egipcios firman la paz, se elabora la constitución española, es secuestrado y asesinado en Italia Aldo Moro por las brigadas rojas, es elegido y fallece poco después el papa Juan Pablo I, y en un lugar de La Mancha el redactor de esta entrada está finalizando sus estudios de educación secundaria en un instituto público.
Pero, además de todos estos importantes eventos, el año 1978 marcó un hito en la historia de la informática. Fue el año en que la empresa Intel introdujo un nuevo procesador cuyos descendientes dominan la informática hasta nuestros días. El nombre que se le impuso no pasará a la historia como uno de los más llamativos y elegantes, 8086, si bien no por ello no ha dejado de ser muy conocido, fundamentalmente debido a su omnipresente papel.
En aquellos tiempos, junto a nuestro nuevo vástago, se encontraban en el mercado, y siendo sus principales competidores el 6800 de Motorola, el 6502 de MOS Technology, y el Z80 de Zylog, entre otros. De entre ellos, el 6502 dominaba el mercado de microordenadores, al estar incorporado en el Apple II, el Commodore 64 y otros muy populares de esa época. También el Z80 tenía una importante cuota, al haber sido el seleccionado para la gama de Sinclair, entre ellos el ultrapopular ZX-Spectrum, además de Amstrad y la serie MSX. Nada aventuraba que el recién llegado habría de ocupar un lugar especial en un mercado disputado.
Sin embargo, todos ellos estaban basados en una tecnología de 8 bits, mientras que el recién nacido 8086 lo hacía sobre una base de 16 bits, siendo el primero de estas características diseñado por Intel. De hecho, al ser esta tecnología todavía incipiente, la compañía decidió introducir al mismo tiempo un híbrido, que denominó 8088, en donde el funcionamiento interno lo hacía sobre la misma base de 16 bits, pero en su comunicación externa lo hacía mediante un bus de 8 bits, lo que le permitía ser compatible con circuitos preexistentes para comunicaciones.
La arquitectura fue definida por el ingeniero de Intel Stephen P. Morse, y como en el resto de diseños de procesadores, dicha arquitectura está estrechamente entrelazada con el conjunto de instrucciones para los comandos que soporta, y que le indican al procesador la tarea que debe desarrollar. En ese sentido el juego de instrucciones era exactamente el mismo en los dos elementos de la serie, el 8088 y el 8086.
La popularidad de este procesador aumentó extraordinariamente cuando fue el seleccionado para ser incorporado dentro de los primeros PCs de IBM. Y a partir de ese momento ya no hubo vuelta atrás. Se diseñarían nuevos procesadores mucho más potentes, se construirían nuevos ordenadores con mayores prestaciones, pero todos llevarían incorporado el conjunto de instrucciones 8086 en su interior. Por supuesto, se añadieron nuevos comandos al repertorio, más complejos, pero manteniendo siempre el juego inicial, con lo que dicho repertorio crecía y crecía.
El futuro era prometedor para Intel y sus seguidores, la competencia no hacía acto de presencia en el mercado de computadores. No obstante, a principios de los años 80 la investigación académica en las universidades puso en cuestión la idea de que más es mejor. Y en lugar de producir un juego de instrucciones cada vez más complicado, un grupo de investigadores defendió la opción contraria: Si un conjunto de instrucciones era más sencillo, podría hacer funcionar de manera más eficiente a un computador, que podría, incluso, llegar a ser más rápido. El nombre dado por sus autores a este enfoque fue el acrónimo RISC, las siglas en inglés de Reduced Instruction Set Computing.
Y aquí se produce un giro en la historia. Entre las empresas que experimentan con la nueva arquitectura RISC se encuentra Acorn Computers, una pequeña empresa con sede en Cambridge, Inglaterra. Allí se diseña un nuevo conjunto de instrucciones RISC, y para mediados de los años 80 se cuenta ya con un microprocesador operativo, y listo para ser usado en computadores comerciales.
Desgraciadamente, las cosas no son nada sencillas, y no parecía probable que las grandes empresas de computadores se arriesgaran al uso de este nuevo tipo de procesador en un mercado dominado por el paradigma contrario. Pero, por casualidad, se dirigió a la empresa Acorn nada menos que Apple Computers, que quería un procesador para su nuevo aparato, el Apple Newton, un dispositivo de tipo PDA, que era una idea revolucionaria entonces, quizá algo adelantada a su época, y que era, de hecho, un precursor del actual iPad. El Newton no tuvo demasiado éxito (eso es otra historia, que deberá ser contada en otra ocasión), sin embargo, con el nuevo conjunto de instrucciones no ocurrió lo mismo, y eso fue porque pudo comprobarse en dispositivos reales otra característica que devendría en sumamente importante, y era que los procesadores RISC consumen mucha menos energía que las otras alternativas. Lo cual los hace ideales para dispositivos móviles, teléfonos, tabletas, reproductores de audio, lo que sea.
Así pues, ya por los años 90, la empresa Apple lideró un consorcio que incluía a Acorn, de la que se segregó una nueva compañía, Advanced RISC Machines, conocida hoy en día por su acrónimo ARM. La tecnología demostró que su enfoque era el correcto, y el mundo de los dispositivos móviles está ahora dominado por los procesadores que utilizan el repertorio de instrucciones ARM.
Sin embargo hay en estos momentos una línea divisoria. Los PCs, laptops, y la mayoría del mundo catalogado como «no móvil» sigue dominado por las extensiones del antiguo conjunto de instrucciones de Intel. Es básicamente por seguir la idea clásica de que lo que funciona, mejor no tocarlo. Y es claro que en el ecosistema de la computación existen unas profundísimas raíces en torno al juego 8086, si bien nadie duda del enorme derroche de energía que esto supone. Tal vez la tecnología ARM consiga destronar definitivamente al linaje que ha devenido en nobleza del 8086, tal vez las dos tecnologías converjan. Pero lo que está bastante claro es que con la enorme cantidad de dinero que hay en juego, es muy seguro que estamos avocados a contemplar un enorme choque entre poderosos intereses. Y no podemos predecir cuál será el resultado.
Fernando Cuartero
Jesús
Publicado el 11:02h, 29 julioMe parece que se están mezclando peras con manzanas en este artículo. No se puede asociar x86 a alto consumo y RISC a bajo consumo, por muchísimos motivos: porque hay procesadores RISC con consumos altísimos, como por ejemplo los SPARC, con un TDP de 240W; porque hay procesadores x86 que consumen como un pajarito, sin ir más lejos los últimos i3 de Intel tienen TDPs de menos de 15W (y son de escritorio, los de portátil gastan menos). Y porque, en el fondo, los x86 hace ya unas cuantas generaciones que son internamente RISC, pero con una capa adicional externa para mantener compatibilidad con el juego de instrucciones, y que lo que hace realmente es traducir instrucciones x86 a microinstrucciones RISC.
Vamos, que si los x86 han gastado históricamente más energía que otras líneas como los ARM, no ha sido por deficiencias de la arquitectura, sino básicamente porque Intel se ha dormido en los laureles y ha descuidado el mercado móvil. Y que la arquitectura RISC es más eficiente que la CISC es ya historia antigua, y no hace falta esperar hasta los móviles para comprobarlo. Desde más o menos el Pentium II-III no se fabrica ninguna CPU CISC.
fcuartero
Publicado el 10:14h, 30 julioBueno que se están mezclando cosas no mezclables es una opinión. Que, al menos estadísticamente, x86 tiene mayor consumo es un hecho, aunque que últimamente Intel se está poniendo las pilas también lo es, y que se ha dormido, y mucho, en los laureles, también. Y finalmente, que si el uso de una capa intermedia, con su correspondiente tiempo de proceso invertido, es la solución adecuada, ya se verá, porque el futuro no está escrito.
Pero lo que la historia nos muestra es que cuando hay dos tecnologías compitiendo por un mismo segmento del mercado, una termina siendo eliminada. Y en este caso la pugna será digna de ver.
Jesús
Publicado el 11:07h, 30 julioA lo que me refiero es a que el debate RISC vs CISC tenía sentido hace 15-20 años, pero hace ya mucho, mucho tiempo que nadie fabrica una CPU que no sea RISC. Porque ha quedado claro que es la opción más eficiente, y porque un montón de las características de las CPUs modernas (ejecución fuera de orden, superescalaridad, etc.) serían muy complejas cuando no imposibles en una CPU CISC. Lo que mantiene Intel es una capa de compatibilidad para poder seguir usando el mismo juego de instrucciones, pero desde hace más de 10 años todas las CPUs Intel son RISC.
Y sobre el consumo, es cierto que las CPUs CISC estadísticamente gastan más, pero por motivos puramente comerciales, no técnicos. Simplemente Intel se ha enfocado en el escritorio, donde el consumo no es tan importante, y como Intel es el mayor fabricante mundial de CPUs, pues se nota. Pero no sólo ahora, sino toda la vida ha habido CPUs x86 de bajo consumo. El caso extremo fue el Transmeta Crusoe, que gastaba poco más de 1W, pero siempre ha habido CPUs x86 de bajo consumo: los Via C3, los antiguos Cyrix, y un montón de AMD que gastan menos de 10W. Y de la misma manera siempre ha habido RISC de altísimo consumo.
Por eso, decir que hay una guerra entre los x86 que gastan mucho y los RISC que gastan poco no es correcto. Primero, porque los x86 resulta que también son RISC, y porque, hoy día, ya no hay apenas diferencias de consumo entre ellos. En todo caso, lo que hay ahora mismo es una lucha entre el juego de instrucciones x86 y el juego de instrucciones ARM. Pero es una lucha puramente comercial, y no tanto de paradigmas técnicos.
Juanito
Publicado el 13:55h, 30 julioEs que la nomenclatura es engañosa. RISC viene originalmente de «juego reducido de instrucciones», pero cualquier Cortex ejecuta la multiplicación y la división. Siguiendo el nombre, el procesador más RISC de la historia debió ser el 4004, seguido del 6502 (56 instrucciones, +9 no documentadas). Cualquier Cortex actual (incluso la serie M) tiene un juego de instrucciones más avanzado que el 8086,
La verdadera aportación de los RISC es la segmentación, es decir, la capacidad de ejecutar las instrucciones por fases solapadas, que permiten reducir la ruta critica en el bus del procesador (ya todos son triple bus), y aumentar la frecuencia de operación. Además, tiene el efecto de que simula la operación de casi una instrucción por ciclo. Incluso, ARM con THUMB16 llega a ejecutar 1.4 instrucciones por ciclo de reloj de media. Y desde ese punto de vista, Intel, desde el 80386 ya es RISC, puesto que incorpora segmentación.
¿El problema del consumo?. La tecnología. Hasta 90nm, el consumo no escaló bien por culpa de las fugas de puerta, pero desde que se usan aislantes super-k, se ha resuelto. Pero claro, si quiero poner cuatro CORES, múltiples FPU, acelerador de vídeo, … , no puedo pretender consumir poco. Comparar el consumo de ARM con Intel es engañoso, porque, hasta ahora no iban para lo mismo. Es como comparar el consumo por Km de un camión y de un barco. Los dos transportan mercancías, pero en campos de aplicación diferente. Los ARM, inicialmente iban al sector de aplicaciones de bajo consumo, y de Intel se esperan chorrocientos MIPS, no se cuantos GIGAFLOPS, y no se cuanto procesado de vídeo en tiempo real. Y claro, eso cuesta energía.
Jesús
Publicado el 15:17h, 30 julioEso tampoco es exacto, y en realidad RISC y segmentación no tienen mucho que ver. Como dices, el nombre de RISC es engañoso, ya que el tamaño del juego de instrucciones es lo de menos. La gracia de la filosofía RISC es tener muchos registros, y operar siempre sobre ellos, minimizando las operaciones en memoria. De hecho, las arquitecturas RISC se conocen también como arquitecturas Load-Store, que es un nombre mucho más descriptivo, y que se refiere a que el juego de instrucciones se divide entre las instrucciones que cargan/descargan datos a los registros, y las que operan con ellos. ¿Cuál es la ventaja de este comportamiento? Pues que se reduce muchísimo la complejidad de la CPU, con lo que se puede funcionar a más frecuencia, y además el trabajo con registros es también extremadamente rápido.
También una ventaja importantísima es que la simplicidad del juego de instrucciones lo hace ideal para implementar cosas como la segmentación, aunque no quita para que procesadores CISC como el 486 (no el 386, ese no era segmentado) también lo pudieran implementar, aunque sospecho que de forma mucho menos eficiente.
Rufus
Publicado el 10:53h, 30 julio¿Como que tal vez ARM consiga destronar a los sucesores del 8086?. Hace tiempo que lo hizo. Por cada x86 se venden más de 20 ARM. Cualquier móvil de hoy lleva varios ARM, cualquier impresora, monitor, reproductor de DVD, receptor de TDT, Opel Astra (por decir algo)… El ARM es la CPU dominante hoy en día. Es más, me juego a que contamos más ARMs en un PC que x86, ¿quien controla las cabezas disco duro? ¿la tarjeta de Red o la Wifi,? ¿quien ejecuta el protocolo en esas unidades?.
Otra cosa, si nos atenemos a la definición que das, entonces, RISC era el 6502 (56 intrucciones) o el fantástico 8085, cualquier ARM tiene un juego de instrucciones mucho más complejo que esos. Un Cortex M4, por ejemplo trae unidad de punto flotante, y en enteros multiplica y divide, e incluso puede hacer operaciones vectoriales.
De RISC lo relevante era la la segmentación de la arquitectura, que permitía ejecutar las instrucciones en varias fases solpadas, como una cadena de montaje (aunque genere problemas en los cambios de contexto, y en los saltos condicionales). Esta característica las tienen los ARM, y … los intel desde el 386.
Realmente el 8086 era una cosa cutre y mal pensada. Solo hay que comparar un 8086 con su coetáneo 68000. Lo único que tuvo fue la fortuna de que IBM lo seleccionara para su PC, y que la arquitectura del PC fuera pública, y fuera el boom que fue. De hecho, eso es un mérito de Bill Gates, porque cuando IBM acudió a Bill Gates, lo que quería era una versión de CPM para Z80, y estos los convencieron de utilizar un micro de 16 bits, y gracias a la versión 8088, la electrónica de la periferia podía seguir siendo de 8 bits.
.
Roberto
Publicado el 11:36h, 30 julioARM NUNCA morirá. La empresa ARM nunca fabricó un procesador. ARM diseña la arquitectura y licencia la fabricación. ¿Eres una gran empresa y necesitas una CPU potente?, págate la licencia ARM. ¿Estás diseñando un chip Bluetooth, GPS, Wifi, …?. Necesistará que alguien ejecute el protocolo. Pues, compras una licencia y tienes una CPU probada, con infinidad de herramientas de desarrollo. ARM iba destinado al sucesor del BBC micro, pero descubrieron otros negocio: grandes empresas del sector electrónico (Apple, Fujitsu, Toshiba, IBM) vieron la posibilidad de tener un procesador propio que integrar en sus sistemas si caer en la «dictadura» de Intel o Motorola (la otra alternativa de la época).
Según indica ARM, actualmente las nuevas series Cortex las liencian casi 300 empresas. (Mirad aquí http://www.arm.com/products/processors/licensees.php)
Cuando el PC pase de moda, (veremos si las tabletas dan el paso), Intel pasará a la historia. Lo ha intentado con Atom, pero no están dispuestos a licenciar su arquitectura a nadie.
Ya el Windows-8 corre en ARM, se llama Windows-RT y por cierto, trae de base el office.