"La ley de escala de Dennard y la ley de Moore están muertas, ¿y ahora qué?" - una obra en cuatro actos de David Patterson"Quemamos los puentes que corremos aquí, sin tener otra evidencia de nuestro movimiento, excepto por los recuerdos del olor a humo y la suposición de que causó lágrimas" - "Rosencrantz y Guildenstern están muertos", una obra absurda de Tom StoppardEl 15 de marzo, el Dr. David Patterson se dirigió a una audiencia de aproximadamente 200 ingenieros que comen pizza. El médico les contó brevemente la historia de medio siglo de la construcción de computadoras desde los stands en la gran sala de conferencias del Edificio E en el campus de Texas Instruments en Santa Clara durante una conferencia de IEEE titulada "50 años de arquitectura de computadoras: desde unidades de procesamiento central hasta DNN TPU y Open RISC-V". Esta es una historia de altibajos aleatorios, caídas y agujeros negros que se tragaron arquitecturas enteras.
Patterson comenzó en la década de 1960 con el innovador proyecto IBM System / 360, basado en el trabajo de microprogramación de principios de 1951 de Maurice Wilks. Según los estándares de TI, fue hace mucho tiempo ... Cerca del final del discurso, Patterson mostró un diagrama sorprendente. Demuestra claramente cómo exactamente la muerte de la ley de escalamiento de Dennard, seguida de la muerte de la ley de Moore, cambió por completo los métodos de diseño de los sistemas informáticos. Al final, explicó las consecuencias tecnológicas póstumas de estos choques.
Siempre es agradable ver cómo un verdadero maestro se dedica a su oficio favorito, y Patterson es realmente un experto en arquitectura de computadoras y las fuerzas que lo gobiernan. Enseñó este tema desde 1976 y fue coautor de un verdadero éxito de ventas
, Computer Architecture. Enfoque cuantitativo ” con el Dr. John Hennessy. El libro sobrevivió recientemente a la sexta edición. Así que Patterson fue un orden de magnitud mayor que el hito de las 10.000 horas formulado por
Malcolm Gladwell para lograr el dominio en cualquier tema. Y es visible.
Patterson capturó la atención del público durante 75 minutos, dividiendo la actuación en cuatro actos. Al igual que la obra absurda de Tom Stoppard, "Rosencrantz y el Guildenstern están muertos", parece que nada en esta historia, nada en absoluto, va según lo planeado.
El Dr. David Patterson en la Sección IEEE del Valle de Santa Clara el 15 de marzo de 2018, antes de otorgarle el Premio ACM Turing 2017. Fuente: Steve LeibsonActo uno: IBM System / 360, DEC VAX y Preludio CISC
En las décadas de 1950 y 1960, se realizaron grandiosos experimentos con arquitecturas de conjuntos de comandos (ISA) para mainframes (en ese momento, casi no se diseñaron computadoras, excepto mainframes). Casi todos los mainframe tenían un ISA "nuevo y mejorado". A principios de la década de 1960, solo IBM había lanzado cuatro líneas de computadoras: 650, 701, 702 y 1401, diseñadas para aplicaciones comerciales, científicas y en tiempo real. Todos ellos tienen arquitecturas de conjuntos de comandos mutuamente incompatibles. Cuatro ISA incompatibles significaron que IBM estaba desarrollando y manteniendo cuatro conjuntos de periféricos completamente independientes (unidades de cinta, discos / unidades de tambor e impresoras), así como cuatro conjuntos de herramientas de desarrollo de software (ensambladores, compiladores, sistemas operativos, etc.) .
La situación claramente no parecía estable. Por lo tanto, IBM jugó a lo grande. Ella decidió desarrollar un conjunto de instrucciones binarias compatibles para todas sus máquinas. Un conjunto de instrucciones independiente del dispositivo para todo. El arquitecto jefe Gene Amdahl y su equipo han desarrollado la arquitectura System / 360, diseñada para implementarse en el rango de series de bajo costo a costosas con buses de datos de 8, 16, 32 y 64 bits.
Para simplificar el desarrollo del procesador para IBM System / 360, el equipo de desarrollo decidió utilizar microcódigo para la lógica de control difícil de diseñar. Maurice Wilkes inventó el microcódigo en 1951, y se utilizó por primera vez para la computadora EDSAC 2 en 1958. En cierto modo, el microcódigo ya era una tecnología probada cuando se lanzó el proyecto System / 360. Y nuevamente demostró su valía.
El microcódigo del procesador se reflejó de inmediato en el diseño del mainframe, especialmente cuando los chips de memoria de semiconductores pusieron de manifiesto la ley de Moore. Quizás el mejor ejemplo del uso masivo del microcódigo es el DEC VAX, introducido en 1977. VAX 11/780, una minicomputadora innovadora basada en TTL y chips de memoria, se convirtió en el punto de referencia para el rendimiento hasta finales de siglo.
Los ingenieros de DEC crearon ISA para VAX en un momento en que prevalecía la programación del ensamblador, en parte debido a la inercia de la ingeniería ("siempre lo hicimos") y en parte porque los compiladores rudimentarios de alto nivel en ese momento generaban código de máquina que se perdía en la concisa escrita a mano. código de ensamblaje Las instrucciones VAX ISA admitían una gran cantidad de modos de direccionamiento amigables para el programador e incluían instrucciones de máquina separadas que realizaban operaciones complejas, como insertar / eliminar una cola y calcular un polinomio. Los ingenieros de VAX estaban encantados con el desarrollo de hardware que facilitó la vida de los programadores. El microcódigo facilitó la adición de nuevas instrucciones a la ISA, y el control de firmware VAX de 99 bits se infló a 4096 palabras.
Este enfoque en ampliar constantemente el número de instrucciones para facilitar la vida de los programadores de ensambladores ha demostrado ser una verdadera ventaja competitiva para VAX de DEC. A los programadores les gustaban las computadoras que facilitaban su trabajo. Para muchos historiadores de la informática, el VAX 11/780 marca el nacimiento de la arquitectura del procesador CISC (con un conjunto completo de instrucciones).
Segundo acto: éxito aleatorio y grandes fracasos
La minicomputadora DEC VAX 11/780 alcanzó su punto máximo cuando comenzó el boom del microprocesador. Casi todos los primeros microprocesadores fueron máquinas CISC, porque aligerar la carga en el programador siguió siendo una ventaja competitiva incluso cuando la computadora se comprimió en un solo chip. Gordon Moore, de Intel, quien acuñó la ley de Moore en Fairchild, tuvo la tarea de desarrollar el próximo ISA para reemplazar el ISA accidentalmente popular para el Intel 8080/8085 de 8 bits (y Z80). Tomando una parte del extremadamente exitoso proyecto IBM System / 360 (un ISA para administrar todo) y el otro de la línea DEC de minicomputadoras CISC de DEC, Gordon Moore también trató de desarrollar una arquitectura de conjunto de instrucciones universal: un único Intel ISA, que vivirá hasta el final siglos
En ese momento, los microprocesadores de 8 bits se ejecutaban en un espacio de direcciones de 16 bits, y la nueva arquitectura del conjunto de instrucciones Intel ISA tenía un espacio de direcciones de 32 bits y protección de memoria incorporada. Ella apoyó instrucciones de cualquier longitud que comienzan con un bit. Y fue programado en el lenguaje de alto nivel más nuevo y mejor: Ada.
Se suponía que este ISA era parte del procesador Intel iAPX 432, y era un proyecto muy grande y muy ambicioso para Intel.
Si estudia la historia del "revolucionario" iAPX 432, encontrará que terminó en un terrible fracaso. El hardware requerido para la arquitectura IAPX 432 es extremadamente complejo. Como resultado, el chip fue lanzado con un gran retraso. (Se requirió un ciclo de desarrollo de 6 años y apareció solo en 1981.) Y cuando finalmente apareció el microprocesador, resultó ser excepcionalmente lento.
Moore al comienzo del proyecto se dio cuenta de que desarrollar un iAPX 432 llevaría mucho tiempo, por lo que en 1976 lanzó un proyecto paralelo para desarrollar un microprocesador de 16 bits mucho menos ambicioso, basado en la extensión del exitoso ISA de 8 bits desde 8080, con compatibilidad a nivel de origen código Los desarrolladores solo tenían un año para lanzar el chip, por lo que solo se les dio tres semanas para desarrollar ISA. El resultado fue un procesador 8086 y un ISA universal, al menos durante las próximas décadas.
Solo había un problema: según la descripción de los expertos de Intel, el microprocesador 8086 salió muy débil.
El rendimiento del Intel 8086 fue inferior al de sus competidores más cercanos: el elegante Motorola 68000 (procesador de 32 bits con vestimenta de 16 bits) y el Zilog Z8000 de 16 bits. A pesar del bajo rendimiento, IBM eligió Intel 8086 para su proyecto de PC IBM, porque los ingenieros de Intel en Israel desarrollaron la variante 8088: es 8086 con un bus de 8 bits. El microprocesador 8088 funcionó un poco más lento que el 8086, pero su bus de 8 bits parecía más compatible con los chips periféricos existentes y redujo el costo de fabricación de una placa base de PC.
Según las previsiones de IBM, se planeaba vender alrededor de 250,000 computadoras PC de IBM. En cambio, las ventas superaron los 100 millones, y el Intel 8088 fue un éxito aleatorio pero absoluto.
El tercer acto: el nacimiento de RISC, VLIW y el hundimiento de "Itanika"
En 1974, inmediatamente después de la aparición de los primeros microprocesadores comerciales, IBM John Kok intentó desarrollar un procesador de control para una centralita telefónica electrónica. Estima que el procesador de control necesita ejecutar aproximadamente 10 millones de instrucciones por segundo (MIPS) para cumplir con los requisitos de la aplicación. Los microprocesadores de esa época eran un orden de magnitud más lento, e incluso el mainframe IBM System / 370 no era adecuado para esta tarea: generaba aproximadamente 2 MIPS.
Entonces, el equipo de Kok, en el marco del proyecto 801, desarrolló una arquitectura de procesador radicalmente modernizada con un bus transportador y un circuito de control rápido sin microcódigo; esto fue posible al reducir el número de instrucciones al mínimo para simplificar la administración. (La máquina se llamó IBM 801 porque se desarrolló en el edificio 801 del Centro de Investigación IBM Thomas J. Watson). Por primera vez, IBM 801 implementó la arquitectura RISC (conjunto de instrucciones reducido).
El prototipo de computadora 801 fue construido en pequeños chips Motorola MECL 10K, que en conjunto dieron un rendimiento sin precedentes de 15 MIPS y se adaptaron fácilmente a los requisitos técnicos. Dado que el conjunto de instrucciones acortado es menos conveniente para el programador que el conjunto de instrucciones CISC, el equipo de Coca tuvo que desarrollar compiladores de optimización. Asumieron la carga adicional de crear código de máquina eficiente a partir de algoritmos complejos escritos en lenguajes de alto nivel.
Después de eso, Kok se hizo conocido como el "padre de RISC". IBM nunca lanzó un conmutador telefónico, pero el procesador 801 evolucionó y eventualmente se convirtió en la base de la gran línea de procesadores RISC de IBM, ampliamente utilizados en sus mainframes y servidores.
Más tarde, varios ingenieros de DEC descubrieron que aproximadamente el 20% de las instrucciones CISC de VAX ocupan aproximadamente el 80% del microcódigo, pero solo el 0.2% del tiempo total de ejecución del programa. ¡Qué gasto! Dados los resultados del proyecto IBM 801 y los hallazgos de los ingenieros de DEC, se podría suponer que la arquitectura CISC no es tan buena.
La suposición fue confirmada.
En 1984, el profesor de Stanford, John Hennessey, publicó un artículo histórico en la revista
IEEE Transactions on Computers titulado
"Arquitectura de procesador VLSI" , donde demostró la superioridad de las arquitecturas e ISA en RISC para implementaciones de procesadores VLSI. Patterson resumió la prueba de Hennessey en su discurso: RISC es por definición más rápido porque las máquinas CISC requieren 6 veces más ciclos de instrucción que las máquinas RISC. Aunque la máquina CISC necesita completar la mitad de las instrucciones para la misma tarea, la computadora RISC es esencialmente tres veces más rápida que la CISC.
Por lo tanto, los procesadores x86 en las computadoras modernas parecen ejecutar instrucciones CISC compatibles con el software, pero tan pronto como estas instrucciones de la RAM externa ingresan al procesador, se cortan inmediatamente en pedazos de "microcomandos" más simples (como Intel llama a las instrucciones RISC), que luego se puso en cola y se ejecutó en varias tuberías RISC. Los procesadores x86 actuales se han vuelto más rápidos, convirtiéndose en máquinas RISC.
Varios desarrolladores de arquitectura de procesador han decidido desarrollar ISA, que será mucho mejor que RISC o CISC. Con la ayuda de instrucciones de máquina muy largas (VLIW), ha sido posible agrupar muchas operaciones paralelas en una gran instrucción de máquina. Los arquitectos denominaron esta versión de ISA como VLIW (Very Long Instruction Word). Las máquinas VLIW toman prestado uno de los principios de la operación RISC, confiando al compilador la tarea de planificar y empaquetar en el código máquina las instrucciones VLIW generadas a partir del código fuente de alto nivel.
Intel decidió que la arquitectura VLIW se ve muy atractiva, y comenzó el desarrollo del procesador VLIW, que se convertirá en su aplicación para ingresar al inevitable mundo de los procesadores de 64 bits. Intel llamó a su VLIW ISA IA-64. Como de costumbre, Intel ha desarrollado su propia nomenclatura y sus nombres para términos familiares. En Intel Jargon, VLIW se ha convertido en EPIC (Computación de instrucción explícitamente paralela). La arquitectura EPIC no debe basarse en el conjunto de instrucciones x86, en parte para evitar que AMD copie.
Más tarde, los ingenieros de HP PA-RISC también decidieron que el potencial de desarrollo de RISC estaba casi agotado, y también se infectaron con VLIW. En 1994, HP unió fuerzas con Intel para desarrollar una arquitectura conjunta VLIW / EPIC de 64 bits. El resultado se llamará Itanium. Se anunció el objetivo de lanzar el primer procesador Itanium en 1998.
Sin embargo, pronto quedó claro que sería difícil desarrollar procesadores y compiladores VLIW. Intel no anunció el nombre Itanium hasta 1999 (el ingenio en Usenet inmediatamente denominó al procesador "Itanik"), y el primer procesador en funcionamiento se lanzó solo en 2001. El Itanic terminó ahogándose de manera segura en 2017 cuando Intel anunció la finalización del trabajo en el IA-64. (Ver
"Intel hundió Itanium: quizás el proyecto de procesador fallido más caro del mundo" )
La arquitectura EPIC también se ha convertido en un fracaso épico: una versión en microprocesador de JJ Jinx de Star Wars. Aunque en un momento pareció una buena idea.
Los procesadores Itanium, EPIC y VLIW han muerto por varias razones, dice Patterson:
- Ramas impredecibles que complican la planificación y el empaquetado de operaciones paralelas en palabras de comando VLIW.
- Las fallas impredecibles de caché ralentizaron la ejecución y provocaron retrasos variables en la ejecución.
- Los conjuntos de instrucciones VLIW inflan la cantidad de código.
- Resultó ser demasiado difícil crear buenos compiladores de optimización para máquinas VLIW.
Quizás el especialista más conocido del mundo en algoritmos informáticos, Donald Knuth, comentó: "El enfoque de Itanium ... parecía tan bueno, hasta que resultó que los compiladores deseados eran esencialmente imposibles de escribir".
Los compiladores parecen funcionar mejor con arquitecturas simples como RISC.
Las arquitecturas VLIW no hicieron microprocesadores universales. Pero más tarde aún encontraron su vocación, lo que nos lleva al cuarto acto de la obra.
Acto cuatro: la ley de escala de Dennard y la ley de Moore están muertas, pero DSA, TPU y Open RISC-V están vivos
En la obra de Tom Stoppard, Rosencrantz y Guildenstern están muertos, dos personajes insignificantes arrebatados de Hamlet de Shakespeare finalmente comprenden al final del último acto que estaban muertos durante toda la obra. En el acto final de la historia del procesador, Patterson murió de la ley de escala de Dennard y la ley de Moore. Aquí hay un dibujo de la última edición del libro de Hennessey y Patterson, que muestra gráficamente toda la historia:
Fuente: John Hennessey y David Patterson, “Computer Architecture. El enfoque cuantitativo ”, 6ª ed. 2018El gráfico muestra que los microprocesadores RISC proporcionaron casi veinte años de rápido crecimiento de la productividad de 1986 a 2004, ya que evolucionaron de acuerdo con la ley de Moore (el doble de transistores en cada nueva ronda de la tecnología de proceso) y la ley de escala de Dennard (duplicando la velocidad con una reducción doble en el consumo de energía por transistor por cada nueva rama de la tecnología de proceso). Luego, la ley de escala de Dennard murió y los procesadores individuales dejaron de acelerar. El consumo de energía del transistor también dejó de reducirse a la mitad en cada etapa.
La industria compensó esto confiando únicamente en la ley de Moore para duplicar el número de transistores y aumentando rápidamente el número de procesadores en un chip, entrando en una era de múltiples núcleos. El intervalo de duplicación de la productividad aumentó de 1.5 a 3.5 años durante esta era, que duró menos de diez años, antes de que la ley de Amdahl entrara en vigor (reformulada como "hay una explotación limitada del paralelismo en cada aplicación"). Pocas aplicaciones pueden cargar por completo docenas de procesadores.
Entonces la ley de Moore también falleció.
Según Patterson, el resultado es tal que desde 2015 el crecimiento en el rendimiento del procesador se ha reducido a un insignificante 3% por año. La duplicación de la ley de Moore ahora ocurre en 1.5 y ni siquiera en 3.5 años. Ahora tiene
veinte años .
¿El final del juego? "No", dice Patterson. En la arquitectura del procesador, puede probar algunas cosas más interesantes.
Un ejemplo: las arquitecturas específicas de dominio (DSA) son procesadores especialmente diseñados que intentan acelerar la ejecución de una pequeña cantidad de tareas para aplicaciones específicas. Las arquitecturas VLIW no son adecuadas para procesadores universales, pero tienen sentido para aplicaciones DSP con muchas menos ramas. Otro ejemplo: Google TPU (Unidad de procesamiento de tensor), que acelera la ejecución de DNN (Red neuronal profunda, utilizando un bloque de 65 536 unidades de multiplicación-adición (MAC) en un solo chip.
Resulta que la computación matricial con precisión reducida es la clave para obtener DNN realmente rápidos. 65.536 bloques MAC de ocho bits en TPU de Google funcionan a 700 MHz y ofrecen un rendimiento de 92 TOPS (teraoperaciones por segundo). Esto es aproximadamente 30 veces más rápido que la CPU del servidor y 15 veces más rápido que la GPU.
Multiplique por la mitad el consumo de energía en una TPU de 28 nanómetros en comparación con una CPU o GPU de servidor, y obtenga una ventaja en energía / potencia de 60 y 30 veces, respectivamente.Por una extraña coincidencia, el profesor David Patterson renunció recientemente a la Universidad de California en Berkeley después de enseñar y trabajar allí durante 40 años. Ahora ocupa el puesto de "Ingeniero de Honor" en Google para el proyecto de desarrollo de TPU.Otra cosa interesante es la creación de arquitecturas ISA de código abierto, dice Patterson. Estos intentos anteriores, incluidos OpenRISC y OpenSPARC , no despegaron, pero Patterson habló sobre un ISA de código abierto completamente nuevo: esto es RISC-Vque ayudó a desarrollar en Berkeley. Mire el SoC, dice Patterson, y verá muchos procesadores con diferentes ISA. "¿Por qué?" Él hace una pregunta.¿Por qué necesitamos un ISA universal, otro ISA para procesamiento de imágenes, así como ISA para procesamiento de video, procesamiento de audio y ISA DSP en un solo chip? ¿Por qué no hacer solo una o más ISA simples (y un conjunto de herramientas de desarrollo de software) que pueden reutilizarse para aplicaciones específicas? ¿Por qué no hacer ISA de código abierto para que todos puedan usar esta arquitectura de forma gratuita y mejorarla? La única respuesta de Patterson a estas preguntas es la RISC-V ISA. Fundación RISC-Vrecientemente formadasimilar en concepto a la exitosa Fundación Linux. Ya ha incluido más de 100 empresas, y él asumió el trabajo de estandarizar el RISC-V ISA. La misión del Fondo es contribuir a la implementación de RISC-V ISA y su desarrollo futuro. Casualmente, el Dr. David Patterson, "retirado", es el vicepresidente de la Fundación RISC-V.Al igual que Rosencrantz y Guildenstern, la ley de escala de Dennard y la ley de Moore terminan muertas al final de la obra histórica de Patterson, pero los eventos interesantes en la arquitectura de la computadora recién comienzan."No hay nada más poco convincente que una muerte poco convincente", dijo la obra.Epílogo: el 21 de marzo, solo una semana después de hablar en IEEE, la Asociación de Tecnología Informática (ACM) reconoció la contribución de Patterson y Hennessy a la arquitectura de computadoras al otorgarles el Premio ACM Turing 2017 "por un enfoque innovador, sistemático y computacional para diseñar y evaluar arquitecturas de computadora que proporcionaron impacto duradero en la industria de los microprocesadores ".