Wed. Sep 28th, 2022

Actualización (29/12/2022) : es fin de año, por lo que presentamos algunos viejos favoritos de principios de 2022. El "M2" al que se hace referencia a continuación se refiere a los SoC de Apple que finalmente se enviaron como M1 Pro y M1 Máx.

Historia original a continuación:

Con la próxima WWDC de Apple, esperamos saber más sobre las computadoras portátiles MacBook Pro basadas en ARM actualizadas de la compañía. Los rumores apuntan a que Apple lanzará una serie de sistemas actualizados, esta vez basados en su CPU "M2", una versión ampliada del núcleo M1 que debutó el año pasado. Según se informa, el M2 podría desplegar ocho núcleos de alto rendimiento y dos núcleos de alta eficiencia, frente a una configuración 4 + 4 en el M1 existente.

Con el lanzamiento del M1 basado en ARM vino una serie de comparaciones x86 versus ARM y discusiones en línea que comparan y contrastan las nuevas arquitecturas. En estos hilos, a menudo verá a los autores mencionar dos siglas adicionales: CISC y RISC. El vínculo entre “ARM versus x86” y “CISC versus RISC” es tan fuerte que cada historia en la primera página de los resultados de Google define la primera con referencia a la segunda.

Esta asociación sugiere erróneamente que “x86 versus ARM” se puede clasificar claramente en “CISC versus RISC”, siendo x86 CISC y ARM RISC. Hace treinta años, esto era cierto. Hoy no es cierto. La batalla sobre cómo comparar las CPU x86 con los procesadores construidos por otras empresas no es nueva. Solo se siente nuevo hoy porque x86 no ha tenido un rival arquitectónico significativo durante casi dos décadas. ARM puede identificarse de manera prominente como una empresa de CPU RISC, pero hoy en día estos términos ocultan tanto como aclaran con respecto al estado moderno de las CPU x86 y ARM.

Imagen de David Bauer , CC BY-SA 2.0

Una historia simplificada de las partes en las que la gente está de acuerdo

RISC es un término acuñado por David Patterson y David Ditzel en su artículo seminal de 1981 " The Case for a Reduced Instruction Set Computer ". Los dos hombres propusieron un nuevo enfoque para el diseño de semiconductores basado en las tendencias observadas a fines de la década de 1970 y los problemas de escala encontrados por las CPU actuales. Ofrecieron el término "CISC" – Computadora con conjunto de instrucciones complejas – para describir muchas de las diversas arquitecturas de CPU que ya existen y que no siguen los principios de RISC.

Esta necesidad percibida de un nuevo enfoque para el diseño de la CPU surgió a medida que cambiaban los cuellos de botella que limitaban el rendimiento de la CPU. Los denominados diseños CISC, incluido el 8086 original, se diseñaron para hacer frente al alto coste de la memoria trasladando la complejidad al hardware. Enfatizaron la densidad del código y algunas instrucciones realizaron múltiples operaciones en secuencia en una variable. Como filosofía de diseño, CISC intentó mejorar el rendimiento minimizando la cantidad de instrucciones que una CPU tenía que ejecutar para realizar una tarea determinada. Las arquitecturas de conjuntos de instrucciones CISC generalmente ofrecían una amplia gama de instrucciones especializadas.

A fines de la década de 1970, las CPU CISC tenían una serie de inconvenientes. A menudo tenían que implementarse en varios chips, porque las técnicas VLSI (Integración a gran escala) del período de tiempo no podían empaquetar todos los componentes necesarios en un solo paquete. La implementación de arquitecturas de conjuntos de instrucciones complicadas, con soporte para una gran cantidad de instrucciones poco utilizadas, consumió espacio en el dado y redujo las velocidades de reloj máximas alcanzables. Mientras tanto, el costo de la memoria disminuía constantemente, lo que hacía que el énfasis en el tamaño del código fuera menos importante.

Patterson y Ditzel argumentaron que las CPU CISC todavía estaban intentando resolver problemas de código que nunca se habían materializado. Propusieron un enfoque fundamentalmente diferente para el diseño del procesador. Al darse cuenta de que la gran mayoría de las instrucciones CISC no se usaban (piense en esto como una aplicación del principio de Pareto , o la regla 80/20), los autores propusieron un conjunto mucho más pequeño de instrucciones de longitud fija, todas las cuales se completarían en una sola ciclo del reloj. Si bien esto daría como resultado que una CPU RISC realizara menos trabajo por instrucción que su contraparte CISC, los diseñadores de chips compensarían esto simplificando sus procesadores.

Esta simplificación permitiría gastar los presupuestos de los transistores en otras características como registros adicionales. Las características futuras contempladas en 1981 incluían "cachés en chip, transistores más grandes y más rápidos, o incluso canalización". El objetivo de las CPU RISC era ejecutar lo más cerca posible de una IPC (instrucción por ciclo de reloj, una medida de la eficiencia de la CPU), lo más rápido posible. Reasigne los recursos de esta manera, argumentaron los autores, y el resultado final superaría a cualquier diseño CISC comparativo.

Estos principios de diseño no tardaron en demostrar su valor. El R2000, introducido por MIPS en 1985, era capaz de mantener un IPC cercano a 1 en determinadas circunstancias. Las primeras familias de CPU RISC como SPARC y la familia PA-RISC de HP también establecieron récords de rendimiento. Durante finales de la década de 1980 y principios de la de 1990, era común escuchar a la gente decir que las arquitecturas basadas en CISC como x86 eran el pasado, y quizás lo suficientemente buenas para la informática doméstica, pero si deseaba trabajar con una CPU real , compraba un chip RISC. . Los centros de datos, las estaciones de trabajo y HPC es donde las CPU RISC tuvieron más éxito, como se ilustra a continuación:

Esta imagen de Intel es útil pero necesita un poco de contexto. La “Arquitectura Intel” parece referirse solo a las CPU x86, no a chips como el 8080, que era popular en el mercado de las primeras computadoras. De manera similar, Intel tenía varias supercomputadoras en la categoría "RISC" en 2000; fueron las máquinas x86 las que ganaron participación de mercado, específicamente.

Considere lo que dice esta imagen sobre el estado del mercado de CPU en 1990. Para 1990, x86 había limitado las CPU que no eran x86 a solo el 20 por ciento del mercado de computadoras personales, pero prácticamente no tenía participación x86 en centros de datos y ninguna en HPC. Cuando Apple quiso apostar por un diseño de CPU de próxima generación, eligió apostar por PowerPC en 1991 porque creía que las CPU de alto rendimiento construidas según los principios RISC eran el futuro de la informática.

El acuerdo sobre la historia mutua de CISC versus RISC se detiene a principios de la década de 1990. El hecho de que la arquitectura x86 de Intel pasó a dominar la industria de la computación en PC, centros de datos y computación de alto rendimiento (HPC) es indiscutible. Lo que se discute es si Intel y AMD lograron esto adoptando ciertos principios de diseño RISC o si sus afirmaciones de haberlo hecho eran mentiras.

Puntos de vista divergentes

Una de las razones por las que términos como RISC y CISC se entienden mal es debido a un desacuerdo de larga data con respecto al significado y la naturaleza de ciertos desarrollos de CPU. Un par de citas ilustrarán el problema:

Primero, aquí está Paul DeMone de RealWorldTech, en " RISC vs. CISC Still Matters :"

La campaña para ofuscar la clara distinción entre RISC y CISC se aceleró con el advenimiento de las implementaciones modernas del procesador x86 que emplean palabras de control de longitud fija para operar rutas de datos de ejecución fuera de orden … El punto de vista "RISC y CISC están convergiendo" es un concepto fundamentalmente defectuoso que se remonta al lanzamiento del i486 en 1992 y tiene sus raíces en la ignorancia generalizada de la diferencia entre las arquitecturas de conjuntos de instrucciones y los detalles de la implementación del procesador físico.

En contraste, aquí está Jon "Hannibal" Stokes en " RISC vs. CISC: la era post-RISC ":

A estas alturas, debería ser evidente que los acrónimos "RISC" y "CISC" desmienten el hecho de que ambas filosofías de diseño se ocupan de mucho más que la simpleza o complejidad de un conjunto de instrucciones … A la luz de lo que sabemos ahora sobre el desarrollo de RISC y CISC, y los problemas que cada enfoque trató de resolver, ahora debería ser evidente que ambos términos son igualmente absurdos … Cualquiera que sea el debate “RISC vs. es una discusión más matizada y mucho más interesante que toma cada plataforma (hardware y software, ISA e implementación) por sus propios méritos.

Ninguno de estos artículos es nuevo. El artículo de Stokes se escribió en 1999, el de DeMone en 2000. He citado a ambos para demostrar que la cuestión de si la distinción entre RISC y CISC es relevante para la informática moderna tiene literalmente más de 20 años. Jon Stokes es un ex compañero de trabajo mío y lo suficientemente experto como para no caer en la trampa de la "ignorancia" de las referencias de DeMone.

Implementación vs. ISA

Las dos citas anteriores capturan dos puntos de vista diferentes de lo que significa hablar de "CISC versus RISC". La visión de DeMone es muy similar a la de ARM o Apple en la actualidad. Llame a esto la posición centrada en ISA.

El punto de vista de Stokes es lo que generalmente ha dominado el pensamiento en la prensa de PC durante las últimas décadas. A esto lo llamaremos la posición centrada en la implementación. Estoy usando la palabra "implementación" porque puede referirse contextualmente tanto a la microarquitectura de una CPU como al nodo de proceso utilizado para fabricar el chip físico. Ambos elementos son relevantes para nuestra discusión. Las dos posiciones se describen como "céntricas" porque hay una superposición entre ellas. Ambos autores reconocen y coinciden en muchas tendencias, incluso si llegan a conclusiones diferentes.

De acuerdo con la posición centrada en ISA, hay ciertas características innatas de los conjuntos de instrucciones RISC que hacen que estas arquitecturas sean más eficientes que sus primos x86, incluido el uso de instrucciones de longitud fija y un diseño de carga / almacenamiento. Si bien algunas de las diferencias originales entre CISC y RISC ya no son significativas, la visión centrada en ISA cree que las diferencias restantes siguen siendo determinantes, en lo que respecta al rendimiento y la eficiencia energética entre x86 y ARM, siempre que se haga una comparación de manzanas con manzanas. .

Esta perspectiva centrada en ISA sostiene que Intel, AMD y x86 vencieron a MIPS, SPARC y POWER / PowerPC por tres razones: la fabricación de procesos superior de Intel, la reducción gradual en el llamado "impuesto CISC" con el tiempo que la superioridad de Intel la fabricación habilitada, y esa compatibilidad binaria hizo que x86 fuera más valioso a medida que su base de instalación crecía, fuera o no la mejor ISA.

El punto de vista centrado en la implementación analiza las formas en que las CPU modernas han evolucionado desde que se inventaron términos como RISC y CISC y argumenta que estamos trabajando con un par de categorías completamente obsoletas.

He aquí un ejemplo. En la actualidad, tanto las CPU ARM x86 como las de gama alta utilizan una ejecución desordenada para mejorar el rendimiento de la CPU. El uso de silicio para reordenar instrucciones sobre la marcha para una mejor eficiencia de ejecución está totalmente en desacuerdo con la filosofía de diseño original de RISC. Patterson y Ditzel abogaron por una CPU menos complicada capaz de funcionar a velocidades de reloj más altas. Otras características comunes de las CPU ARM modernas, como las unidades de ejecución SIMD y la predicción de rama, tampoco existían en 1981. El objetivo original de RISC era que todas las instrucciones se ejecutaran en un solo ciclo, y la mayoría de las instrucciones ARM se ajustan a esta regla, pero las ISA ARMv8 y ARMv9 contienen instrucciones que requieren más de un ciclo de reloj para ejecutarse. También lo hacen las CPU x86 modernas.

La visión centrada en la implementación sostiene que una combinación de mejoras en los nodos de proceso y mejoras en la microarquitectura permitió a x86 cerrar la brecha con las CPU RISC hace mucho tiempo y que las diferencias de nivel ISA son irrelevantes por encima de envolventes de muy baja potencia. Este es el punto de vista respaldado por un estudio de 2014 sobre la eficiencia de ISA sobre el que he escrito en el pasado. Es un punto de vista generalmente respaldado por Intel y AMD, y es uno de los que he defendido .

¿Pero está mal?

¿Convergieron el desarrollo de RISC y CISC?

La visión centrada en la implementación es que las CPU CISC y RISC han evolucionado entre sí durante décadas, comenzando con la adopción de nuevos métodos de decodificación "similares a RISC" para CPU x86 a mediados de la década de 1990.

La explicación común es la siguiente: a principios de la década de 1990, Intel y otros fabricantes de CPU x86 se dieron cuenta de que mejorar el rendimiento de la CPU en el futuro requeriría más que cachés más grandes o relojes más rápidos. Varias empresas decidieron invertir en microarquitecturas de CPU x86 que reordenarían sus propios flujos de instrucciones sobre la marcha para mejorar el rendimiento. Como parte de ese proceso, las instrucciones x86 nativas se introdujeron en un decodificador x86 y se tradujeron a microoperaciones "similares a RISC" antes de ejecutarse.

Esta ha sido la sabiduría convencional durante más de dos décadas, pero ha sido cuestionada nuevamente recientemente. En una historia publicada en Medium en 2020 , Erik Engheim escribió: “No hay componentes internos RISC en chips x86. Eso es solo una estratagema de marketing ". Señala tanto la historia de DeMone como una cita de Bob Colwell, el arquitecto jefe detrás de la microarquitectura P6.

La microarquitectura P6 fue la primera microarquitectura de Intel en implementar la ejecución fuera de orden y un motor de decodificación nativo de x86 a micro-op. P6 se envió como Pentium Pro y evolucionó a Pentium II, Pentium 3 y más. Es el abuelo de las CPU x86 modernas. Si alguien debería saber la respuesta a esta pregunta, sería Colwell, así que esto es lo que tenía que decir :

Los x86 de Intel NO tienen un motor RISC "bajo el capó". Implementan la arquitectura del conjunto de instrucciones x86 a través de un esquema de decodificación / ejecución que se basa en mapear las instrucciones x86 en operaciones de máquina, o secuencias de operaciones de máquina para instrucciones complejas, y esas operaciones luego encuentran su camino a través de la microarquitectura, obedeciendo varias reglas sobre dependencias de datos y en última instancia, secuenciación temporal.

Las "micro-operaciones" que realizan esta hazaña tienen más de 100 bits de ancho, llevan todo tipo de información extraña, no pueden ser generadas directamente por un compilador, no son necesariamente de ciclo único. Pero sobre todo, son un artificio de microarquitectura – RISC / CISC se trata de la arquitectura del conjunto de instrucciones… La idea de micro-op no estaba “inspirada en RISC”, “similar a RISC” o relacionada con RISC en absoluto. Nuestro equipo de diseño encontró una manera de romper la complejidad de una instrucción muy elaborada que se aleja de las oportunidades y limitaciones de la microarquitectura presentes en un microprocesador competitivo.

¡Caso cerrado! ¿Correcto?

No exactamente. (Haga clic arriba para obtener una aproximación de cómo me siento cuando incluso parezco contradecir a Bob Colwell)

Intel no fue el primer fabricante de CPU x86 en combinar un decodificador de front-end x86 con lo que se decía que era un back-end de “estilo RISC”. NexGen, luego adquirido por AMD, fue. La CPU NexGen 5 × 86 debutó en marzo de 1994, mientras que el Pentium Pro no se lanzaría hasta noviembre de 1995. Así es como NexGen describió su CPU: "El procesador Nx586 es la primera implementación de la microarquitectura RISC86 innovadora y patentada de NexGen". (Énfasis añadido). Más tarde, la empresa ofrece algunos detalles adicionales: “El enfoque innovador RISC86 traduce dinámicamente las instrucciones x86 en instrucciones RISC86. Como se muestra en la figura siguiente, el Nx586 aprovecha los principios de rendimiento de RISC. Debido al entorno RISC86, cada unidad de ejecución es más pequeña y compacta ”.

Todavía se podría argumentar que esto es un discurso de marketing y nada más, así que avancemos a 1996 y al AMD K5. El K5 se describe típicamente como un front-end x86 casado con un backend de ejecución que AMD tomó prestado de su microcontrolador RISC de 32 bits, el Am29000. Antes de ver su diagrama de bloques, quiero compararlo con el Intel Pentium original. El Pentium es posiblemente el pináculo de la evolución CISC x86, dado que implementa tanto la canalización como el superescalado en una CPU x86, pero no traduce las instrucciones x86 en microoperaciones y carece de un motor de ejecución fuera de servicio.


Ahora, compare el Pentium con el AMD K5.

Si ha pasado algún tiempo mirando los diagramas de bloques del microprocesador, el K5 debería parecer familiar de una manera que el Pentium no lo hace. AMD compró NexGen después del lanzamiento del Nx586. El K5 era un diseño de AMD de cosecha propia, pero el K6 era originalmente un producto NexGen. A partir de este punto, las CPU comienzan a parecerse más a los chips con los que estamos familiarizados hoy. Y según los ingenieros que diseñaron estos chips, las similitudes van más allá de la piel.

David Christie de AMD publicó un artículo en IEEE Micro sobre el K5 en 1996 que habla de cómo hibridó RISC y CISC:

Desarrollamos un micro-ISA basado libremente en el conjunto de instrucciones del 29000. Varios campos de control adicionales expandieron el tamaño de la microinstrucción a 59 bits. Algunos de estos simplifican y aceleran la lógica de control superescalar. Otros proporcionan una funcionalidad específica de x86 que es demasiado crítica para el rendimiento como para sintetizarla con secuencias de microinstrucciones. Pero estas microinstrucciones aún se adhieren a los principios básicos de RISC: operaciones simples de registro a registro con codificación de posición fija de especificadores de registro y otros campos, y no más de una referencia de memoria por operación. Por esta razón, las llamamos operaciones RISC, o ROP para abreviar (pronunciado R-ops). Su naturaleza simple y de propósito general nos brinda una gran flexibilidad para implementar las operaciones x86 más complejas, lo que ayuda a mantener la lógica de ejecución relativamente simple.

Sin embargo, el aspecto más importante de la microarquitectura RISC es que la complejidad del conjunto de instrucciones x86 se detiene en el decodificador y es en gran parte transparente para el núcleo de ejecución fuera de orden. Este enfoque requiere muy poca complejidad de control adicional más allá de la necesaria para la ejecución especulativa de RISC fuera de orden para lograr la ejecución especulativa de x86 fuera de orden. La secuencia de ROP para un cambio de tarea no parece más complicada que la de una serie de instrucciones simples. La complejidad del núcleo de ejecución está efectivamente aislada de la complejidad de la arquitectura, en lugar de agravarla.

Christie no confunde la diferencia entre un ISA y los detalles de la implementación física de una CPU. Sostiene que la implementación física es en sí misma "similar a RISC" de maneras significativas e importantes.

El K5 reutilizó partes del back-end de ejecución que AMD desarrolló para su familia Am29000 de CPU RISC, e implementa un conjunto de instrucciones internas que es más similar a RISC que el ISA x86 nativo. Las técnicas de estilo RISC a las que se refieren NexGen y AMD durante este período hacen referencia a conceptos como cachés de datos, canalización y arquitecturas superescalares. Dos de estos, cachés y canalización, se nombran en el artículo de Patterson. Ninguna de estas ideas es estrictamente RISC, pero todas debutaron primero en las CPU RISC, y eran ventajas asociadas con las CPU RISC cuando K5 era nuevo. Comercializar estas capacidades como "similares a RISC" tenía sentido por la misma razón que tenía sentido para los fabricantes de equipos originales de la época describir sus PC como "compatibles con IBM".

El grado en que estas características son RISC y la respuesta a si las CPU x86 decodifican instrucciones de estilo RISC depende de los criterios que elija para enmarcar la pregunta. El argumento es más grande que el Pentium Pro, incluso si P6 es la microarquitectura más asociada con la evolución de técnicas como un motor de ejecución fuera de servicio. Los diferentes ingenieros de diferentes empresas tenían sus propios puntos de vista.

Cuán sobrecargadas están las CPU x86 en la era moderna

El pasado nunca está muerto. Ni siquiera es pasado. – William Faulker

Es hora de llevar esta discusión a la era moderna y considerar cuáles son las implicaciones de esta comparación "RISC versus CISC" para las CPU ARM y x86 que se envían actualmente. La pregunta que realmente nos hacemos cuando comparamos las CPU AMD e Intel con la M1 de Apple y la futura M2 es si existen cuellos de botella históricos de x86 que evitarán que x86 compita de manera efectiva con Apple y los futuros chips ARM de compañías como Qualcomm .

Según AMD e Intel: No. Según ARM: Sí. Dado que todas las empresas en cuestión tienen evidentes conflictos de intereses, le pregunté a Agner Fog.

Agner Fog es un antropólogo evolucionista e informático danés, conocido por los amplios recursos que mantiene sobre la arquitectura x86. Sus manuales de microarquitectura son prácticamente de lectura obligatoria si desea comprender el comportamiento de bajo nivel de varias CPU de Intel y AMD:

ISA no es irrelevante. La ISA x86 es muy complicada debido a una larga historia de pequeños cambios incrementales y parches para agregar más funciones a una ISA que realmente no tenía espacio para estas nuevas funciones …

El complicado ISA x86 hace que la decodificación sea un cuello de botella. Una instrucción x86 puede tener cualquier longitud de 1 a 15 bytes y es bastante complicado calcular la longitud. Y necesita saber la longitud de una instrucción antes de poder comenzar a decodificar la siguiente. ¡Esto es ciertamente un problema si desea decodificar 4 o 6 instrucciones por ciclo de reloj! Tanto Intel como AMD siguen agregando cachés de microoperaciones más grandes para superar este cuello de botella. ARM tiene instrucciones de tamaño fijo, por lo que este cuello de botella no existe y no hay necesidad de un caché de microoperaciones.

Otro problema con x86 es que necesita una tubería larga para lidiar con la complejidad. La penalización por predicción errónea de rama es igual a la longitud de la tubería. Por lo tanto, están agregando mecanismos de predicción de ramificaciones cada vez más complicados con grandes tablas de historial de ramificaciones y búferes de destino de ramificaciones. Todo esto, por supuesto, requiere más espacio de silicio y más consumo de energía.

El x86 ISA tiene bastante éxito a pesar de estas cargas. Esto se debe a que puede hacer más trabajo por instrucción. Por ejemplo, un RISC ISA con instrucciones de 32 bits no puede cargar un operando de memoria en una instrucción si necesita 32 bits solo para la dirección de memoria.

En su manual de microarquitectura, Agner también escribe que las tendencias más recientes en los diseños de CPU de AMD e Intel han escuchado los principios CISC para hacer un mejor uso de los cachés de código limitados, aumentar el ancho de banda de la canalización y reducir el consumo de energía manteniendo menos microoperaciones en la canalización. . Estas mejoras representan compensaciones de microarquitectura que han mejorado el rendimiento general de x86 y la eficiencia energética.

Y aquí, por fin, llegamos al corazón de la pregunta: ¿qué tan pesada es la penalización que pagan las CPU modernas de AMD e Intel por la compatibilidad x86?

El cuello de botella de decodificación, la predicción de rama y las complejidades de la canalización a las que Agner se refiere anteriormente son parte del “impuesto CISC” en el que ARM argumenta que incurre en x86. En el pasado, Intel y AMD nos han dicho que la potencia de decodificación es un porcentaje de un solo dígito del consumo total de energía del chip. Pero eso no significa mucho si una CPU consume energía para un caché de microoperaciones o un predictor de rama complejo para compensar la falta de ancho de banda de decodificación. El consumo de energía de la caché de microoperaciones y el consumo de energía de predicción de rama están determinados por la microarquitectura de la CPU y su nodo de proceso de fabricación. “RISC versus CISC” no captura adecuadamente la complejidad de la relación entre estas tres variables.

Pasarán algunos años antes de que sepamos si el M1 de Apple y las futuras CPU de Qualcomm representan un cambio radical en el mercado o el próximo desafío al que AMD e Intel se enfrentarán. Si mantener la compatibilidad x86 es una carga para las CPU modernas es una cuestión nueva y muy antigua. Nuevo, porque hasta que se lanzó el M1, no se podía hacer una comparación significativa. Antiguo, porque este tema solía tener bastante discusión cuando todavía se usaban CPU que no eran x86 en computadoras personales.

AMD continúa mejorando Zen de 1,15 a 1,2 veces al año. Sabemos que Alder Lake de Intel también utilizará núcleos de CPU x86 de bajo consumo para mejorar el consumo de energía inactivo. Ambos fabricantes de x86 continúan evolucionando sus enfoques de rendimiento. Tomará tiempo ver cómo estos núcleos, y sus sucesores, se relacionan con los futuros productos de Apple, pero x86 no está fuera de esta pelea.

Por qué RISC y CISC es la forma incorrecta de comparar CPU x86, ARM

Cuando Patterson y Ditzel acuñaron RISC y CISC, tenían la intención de aclarar dos estrategias diferentes para el diseño de CPU. Cuarenta años después, los términos oscurecen tanto como aclaran. RISC y CISC no carecen de significado, pero el significado y la aplicabilidad de ambos términos se han vuelto sumamente contextuales.

Reducir toda la historia del desarrollo de CPU a CISC versus RISC es como afirmar que estos dos libros contienen la suma de todo el conocimiento humano. Solo los niños de VLIW recibirán esta publicación.

El problema con el uso de RISC versus CISC como lente para comparar CPU x86 modernas versus CPU ARM es que se necesitan tres atributos específicos que son importantes para la comparación x86 versus ARM: nodo de proceso, microarquitectura e ISA; los reduce a uno y luego declara ARM superior sobre la base de ISA solo. "Centrado en ISA" versus "centrado en la implementación" es una mejor manera de entender el tema, siempre que se recuerde que hay un diagrama de Venn de factores importantes acordados entre los dos. Específicamente:

El argumento centrado en ISA reconoce que la geometría de fabricación y la microarquitectura son importantes y fueron históricamente responsables del dominio de x86 en el mercado de PC, servidores y HPC. Este punto de vista sostiene que cuando las ventajas de la destreza de fabricación y la base de instalación se controlan o anulan, RISC y, por extensión, las CPU ARM, generalmente resultarán superiores a las CPU x86.

El argumento centrado en la implementación reconoce que ISA puede importar y de hecho importa, pero que históricamente, la microarquitectura y la geometría del proceso han importado más. Intel todavía se está recuperando de algunos de los peores retrasos en la historia de la empresa. AMD todavía está trabajando para mejorar Ryzen, especialmente en dispositivos móviles. Históricamente, ambos fabricantes de x86 han demostrado su capacidad para competir eficazmente contra los fabricantes de CPU RISC.

Dada la realidad de los ciclos de diseño de CPU, pasarán algunos años antes de que realmente tengamos una respuesta sobre qué argumento es superior. Una diferencia entre el mercado de semiconductores de hoy y el mercado de hace 20 años es que TSMC es un competidor de fundición mucho más fuerte que la mayoría de los fabricantes de RISC que enfrentó Intel a fines de la década de 1990 y principios de la de 2000. El equipo de 7 nm de Intel tiene que estar bajo una tremenda presión para cumplir con ese nodo.

No se debe leer nada en esta historia que implique que una CPU ARM no puede ser más rápida y eficiente que una CPU x86. El M1 y las CPU que seguirán Apple y Qualcomm representan la amenaza competitiva más potente que ha enfrentado x86 en los últimos 20 años. El punto de vista centrado en ISA podría resultar cierto. Pero RISC versus CISC es un punto de partida para comprender la diferencia histórica entre dos tipos diferentes de familias de CPU, no la última palabra sobre cómo se comparan hoy.

Este argumento claramente no va a ninguna parte. Las peleas que comenzaron cuando Cheers era lo más candente en la televisión tienden a tener mucho poder de permanencia. Pero es de esperar que comprender su historia ayude a explicar por qué es una lente defectuosa para comparar CPU en la era moderna.

Nota: No estoy de acuerdo con Engheim sobre la idea de que las diversas afirmaciones similares a RISC hechas por los fabricantes de x86 constituyen una estrategia de marketing, pero él ha escrito algunas historias excelentes sobre varios aspectos de la programación y el diseño de CPU. Recomiendo su trabajo para más detalles sobre estos temas.

Imagen destacada de Intel.

Ahora lea :