Grupo reducido de instrucciones para computadoras
En ingeniería informática, una computadora con conjunto de instrucciones reducido (RISC) es una computadora diseñada para simplificar las instrucciones individuales que se le dan a la computadora para realizar tareas. En comparación con las instrucciones dadas a una computadora con conjunto de instrucciones complejas (CISC), una computadora RISC puede requerir más instrucciones (más código) para realizar una tarea porque las instrucciones individuales están escritas en un código más simple. El objetivo es compensar la necesidad de procesar más instrucciones aumentando la velocidad de cada instrucción, en particular mediante la implementación de un canal de instrucciones, que puede ser más simple con instrucciones más simples.
El concepto operativo clave de la computadora RISC es que cada instrucción realiza solo una función (por ejemplo, copiar un valor de la memoria a un registro). La computadora RISC generalmente tiene muchos (16 o 32) registros de uso general de alta velocidad con una arquitectura de carga/almacenamiento en la que el código para las instrucciones registro-registro (para realizar operaciones aritméticas y pruebas) está separado de las instrucciones que otorgan acceso. a la memoria principal de la computadora. El diseño de la CPU permite a las computadoras RISC pocos modos de direccionamiento simples y tiempos de instrucción predecibles que simplifican el diseño del sistema como un todo.
Los desarrollos conceptuales de la arquitectura informática RISC comenzaron con el proyecto IBM 801 a fines de la década de 1970, pero no se pusieron en uso de inmediato. Los diseñadores en California recogieron los conceptos 801 en dos proyectos seminales, Stanford MIPS y Berkeley RISC. Estos se comercializaron en la década de 1980 como los sistemas MIPS y SPARC. IBM finalmente produjo diseños RISC basados en trabajos posteriores sobre el concepto 801, la arquitectura IBM POWER, PowerPC y Power ISA. A medida que los proyectos maduraban, muchos diseños similares, producidos a fines de la década de 1980 y principios de la de 1990, crearon las unidades centrales de procesamiento que aumentaron la utilidad comercial de la estación de trabajo Unix y de los procesadores integrados en la impresora láser, el enrutador y productos similares.
Las variedades de diseño de procesador RISC incluyen el procesador ARC, el DEC Alpha, el AMD Am29000, la arquitectura ARM, el Atmel AVR, Blackfin, Intel i860, Intel i960, LoongArch, Motorola 88000, la arquitectura MIPS, el PA- RISC, Power ISA, RISC-V, SuperH y SPARC. Los procesadores RISC se utilizan en superordenadores, como el Fugaku.
Historia y desarrollo
Varios sistemas, que se remontan a la década de 1960, han sido acreditados como la primera arquitectura RISC, en parte debido a su uso del enfoque de carga/almacenamiento. El término RISC fue acuñado por David Patterson del proyecto Berkeley RISC, aunque antes habían aparecido conceptos algo similares.
El CDC 6600 diseñado por Seymour Cray en 1964 utilizó una arquitectura de carga/almacenamiento con solo dos modos de direccionamiento (registro+registro y registro+constante inmediata) y 74 códigos de operación, siendo el ciclo de reloj básico 10 veces más rápido que el tiempo de acceso a la memoria. En parte debido a la arquitectura optimizada de carga/almacenamiento del CDC 6600, Jack Dongarra dice que puede considerarse un precursor de los sistemas RISC modernos, aunque era necesario superar una serie de otras barreras técnicas para el desarrollo de un sistema RISC moderno.
IBM 801
Michael J. Flynn ve el primer sistema RISC como el diseño IBM 801, iniciado en 1975 por John Cocke y completado en 1980. El 801 se desarrolló a partir de un esfuerzo por construir un procesador de alta velocidad de 24 bits para usar como base para un conmutador telefónico digital. Para alcanzar su objetivo de conmutar 1 millón de llamadas por hora (300 por segundo) calcularon que la CPU requería un rendimiento del orden de 12 millones de instrucciones por segundo (MIPS), en comparación con su máquina mainframe más rápida de la época, la 370/168, que funcionó a 3,5 MIPS.
El diseño se basó en un estudio de la extensa colección de estadísticas de IBM recopilada de sus clientes. Esto demostró que el código en configuraciones de alto rendimiento hacía un uso extensivo de los registros del procesador y que a menudo se quedaban sin ellos. Esto sugirió que registros adicionales mejorarían el rendimiento. Además, notaron que los compiladores generalmente ignoraban la gran mayoría de las instrucciones disponibles, especialmente los modos de direccionamiento ortogonal. En cambio, seleccionaron la versión más rápida de cualquier instrucción dada y luego construyeron pequeñas rutinas usándola. Esto sugirió que la mayoría de las instrucciones podrían eliminarse sin afectar el código resultante. Estas dos conclusiones trabajaron en conjunto; eliminar instrucciones permitiría que los códigos de operación de instrucción fueran más cortos, liberando bits en la palabra de instrucción que luego podrían usarse para seleccionar entre un conjunto más grande de registros.
El programa del conmutador telefónico se canceló en 1975, pero para entonces el equipo había demostrado que el mismo diseño ofrecería mejoras significativas en el rendimiento ejecutando casi cualquier código. En las simulaciones, demostraron que un compilador ajustado para usar registros siempre que sea posible ejecutaría el código unas tres veces más rápido que los diseños tradicionales. Sorprendentemente, el mismo código se ejecutaría un 50 % más rápido incluso en las máquinas existentes debido al uso mejorado del registro. En la práctica, su compilador PL/8 experimental, una versión ligeramente recortada de PL/1, producía constantemente código que se ejecutaba mucho más rápido en sus mainframes existentes.
Una versión de 32 bits del 801 finalmente se produjo en forma de un solo chip como IBM ROMP en 1981, que significa 'Research OPD [Office Products Division] Micro Processor'. Esta CPU fue diseñada para "mini" tareas, y encontró uso en interfaces periféricas y controladores de canal en computadoras IBM posteriores. También se utilizó como CPU en la IBM RT PC en 1986, que resultó ser un fracaso comercial. Aunque el 801 no tuvo un uso generalizado en su forma original, inspiró muchos proyectos de investigación, incluidos los de IBM que eventualmente conducirían a la arquitectura IBM POWER.
RISC y MIPS
A fines de la década de 1970, el 801 se hizo muy conocido en la industria. Esto coincidió con nuevas técnicas de fabricación que estaban permitiendo que llegaran al mercado chips más complejos. El Zilog Z80 de 1976 tenía 8.000 transistores, mientras que el Motorola 68000 (68k) de 1979 tenía 68.000. Estos diseños más nuevos generalmente usaron su nueva complejidad para expandir el conjunto de instrucciones y hacerlo más ortogonal. La mayoría, como el 68k, usaba microcódigo para hacer esto, leyendo instrucciones y volviéndolas a implementar como una secuencia de instrucciones internas más simples. En los 68k, un 1⁄3 de los transistores se utilizaron para esta microcodificación.
En 1979, David Patterson se tomó un año sabático de la Universidad de California, Berkeley, para ayudar al equipo de la costa oeste de DEC a mejorar el microcódigo VAX. Patterson quedó impresionado por la complejidad del proceso de codificación y concluyó que era insostenible. Primero escribió un artículo sobre formas de mejorar la microcodificación, pero luego cambió de opinión y decidió que el microcódigo en sí era el problema. Con fondos del programa DARPA VLSI, Patterson inició el esfuerzo Berkeley RISC. El Programa, prácticamente desconocido hoy en día, condujo a una gran cantidad de avances en el diseño, fabricación e incluso gráficos por computadora de chips. Considerando una variedad de programas de su variante BSD Unix, el equipo de Berkeley descubrió, al igual que IBM, que la mayoría de los programas no hacían uso de la gran variedad de instrucciones en el 68k.
Los primeros trabajos de Patterson señalaron un problema importante con el tradicional "más es mejor" Acercarse; incluso aquellas instrucciones que eran críticas para el rendimiento general se retrasaban por su viaje a través del microcódigo. Si se eliminara el microcódigo, los programas se ejecutarían más rápido. Y dado que el microcódigo finalmente tomó una instrucción compleja y la dividió en pasos, no había razón para que el compilador no pudiera hacer esto en su lugar. Estos estudios sugirieron que, incluso sin otros cambios, se podría hacer un chip con 1⁄3 menos transistores que funcionarían más rápido. En el documento original de RISC-I señalaron:
Saltear este nivel extra de interpretación parece mejorar el rendimiento al reducir el tamaño de las fichas.
También se descubrió que, en implementaciones microcodificadas de ciertas arquitecturas, las operaciones complejas tendían a ser más lentas que una secuencia de operaciones más simples que hacían lo mismo. Esto fue en parte un efecto del hecho de que muchos diseños se apresuraron, con poco tiempo para optimizar o ajustar cada instrucción; solo se optimizaron las que se usaban con más frecuencia, y una secuencia de esas instrucciones podría ser más rápida que una instrucción menos afinada que realizaba una operación equivalente a esa secuencia. Un ejemplo infame fue la instrucción INDEX
de VAX.
El trabajo de Berkeley también reveló una serie de puntos adicionales. Entre ellos estaba el hecho de que los programas dedicaban una cantidad significativa de tiempo a realizar llamadas y devoluciones de subrutinas, y parecía que había potencial para mejorar el rendimiento general acelerando estas llamadas. Esto llevó al diseño de Berkeley a seleccionar un método conocido como ventanas de registro que pueden mejorar significativamente el rendimiento de las subrutinas aunque a costa de cierta complejidad. También notaron que la mayoría de las instrucciones matemáticas eran asignaciones simples; solo 1⁄3 de ellos realmente realizaron una operaciones como la suma o la resta. Pero cuando esas operaciones ocurrieron, tendieron a ser lentas. Esto condujo a un mayor énfasis en la unidad de datos aritméticos subyacente, a diferencia de los diseños anteriores en los que la mayor parte del chip se dedicaba al control y al microcódigo.
El Berkeley RISC resultante se basó en obtener rendimiento mediante el uso de canalización y el uso agresivo de ventanas de registro. En una CPU tradicional, uno tiene una pequeña cantidad de registros y un programa puede usar cualquier registro en cualquier momento. En una CPU con ventanas de registro, hay una gran cantidad de registros, por ejemplo, 128, pero los programas solo pueden usar una pequeña cantidad de ellos, por ejemplo, ocho, en un momento dado. Un programa que se limita a ocho registros por procedimiento puede realizar llamadas de procedimiento muy rápidas: la llamada simplemente mueve la ventana 'abajo'; por ocho, al conjunto de ocho registros utilizados por ese procedimiento, y el retorno mueve la ventana hacia atrás. El proyecto RISC de Berkeley entregó el procesador RISC-I en 1982. Con solo 44 420 transistores (en comparación con los promedios de alrededor de 100 000 en los diseños CISC más nuevos de la época), RISC-I tenía solo 32 instrucciones y, sin embargo, superó por completo a cualquier otro transistor simple. diseño de chip, con un rendimiento estimado superior al del VAX. Siguieron esto con el RISC-II de 40,760 transistores y 39 instrucciones en 1983, que corrió tres veces más rápido que el RISC-I.
Cuando el proyecto RISC comenzó a ser conocido en Silicon Valley, un proyecto similar comenzó en la Universidad de Stanford en 1981. Este proyecto MIPS surgió de un curso de posgrado de John L. Hennessy, produjo un sistema funcional en 1983 y podía ejecutar programas simples en 1984. El enfoque MIPS enfatizó un ciclo de reloj agresivo y el uso de la canalización, asegurándose de que pudiera ejecutarse como 'lleno'. como sea posible. El sistema MIPS fue seguido por el MIPS-X y en 1984 Hennessy y sus colegas formaron MIPS Computer Systems para producir el diseño comercialmente. La empresa resultó en una nueva arquitectura que también se llamó MIPS y el microprocesador R2000 en 1985.
La filosofía general del concepto RISC fue ampliamente comprendida en la segunda mitad de la década de 1980 y llevó a los diseñadores de MIPS-X a expresarlo de esta manera en 1987:
El objetivo de cualquier formato de instrucción debe ser: 1. simple decodificación, 2. simple decodificación, y 3. simple decodificación. Cualquier intento de mejorar la densidad de código a expensas del rendimiento de la CPU debe ser ridiculizado en cada oportunidad.
Ruptura comercial
A principios de la década de 1980, el concepto RISC estaba rodeado de incertidumbres significativas. Una preocupación involucraba el uso de la memoria; una sola instrucción de un procesador tradicional como el Motorola 68k puede escribirse como media docena de instrucciones RISC más simples. En teoría, esto podría ralentizar el sistema, ya que pasaría más tiempo obteniendo instrucciones de la memoria. Pero a mediados de la década de 1980, los conceptos habían madurado lo suficiente como para ser considerados comercialmente viables.
Los diseños comerciales de RISC comenzaron a surgir a mediados de la década de 1980. El primer MIPS R2000 apareció en enero de 1986, seguido poco después por el PA-RISC de Hewlett Packard en algunas de sus computadoras. Mientras tanto, el esfuerzo de Berkeley se había vuelto tan conocido que finalmente se convirtió en el nombre de todo el concepto. En 1987, Sun Microsystems comenzó a vender sistemas con el procesador SPARC, basado directamente en el sistema Berkeley RISC-II. El Comité de Innovaciones en Informática y Comunicaciones del gobierno de EE. UU. acredita la aceptación de la viabilidad del concepto RISC al éxito del sistema SPARC. El éxito de SPARC renovó el interés dentro de IBM, que lanzó nuevos sistemas RISC en 1990 y en 1995, los procesadores RISC fueron la base de una industria de servidores de $ 15 mil millones.
A fines de la década de 1980, los nuevos diseños RISC superaban fácilmente a todos los diseños tradicionales por un amplio margen. En ese momento, todos los demás proveedores comenzaron sus propios esfuerzos RISC. Entre estos se encontraban DEC Alpha, AMD Am29000, Intel i860 e i960, Motorola 88000, IBM POWER y, un poco más tarde, IBM/Apple/Motorola PowerPC. Muchos de estos han desaparecido desde entonces debido a que a menudo no ofrecen una ventaja competitiva sobre otros de la misma época. Los que quedan a menudo se usan solo en nichos de mercado o como parte de otros sistemas; solo SPARC y POWER tienen un mercado restante significativo. El caso atípico es el ARM, que, en sociedad con Apple, desarrolló un diseño de bajo consumo y luego se especializó en ese mercado, que en ese momento era un nicho. Con el auge de la informática móvil, especialmente después de la introducción del iPhone, ARM se convirtió en el diseño de CPU de gama alta más utilizado en el mercado.
La competencia entre los enfoques RISC y CISC convencional también fue objeto de análisis teórico a principios de la década de 1980, lo que condujo, por ejemplo, a la ley de hierro del rendimiento del procesador.
Desde 2010, una nueva arquitectura de conjunto de instrucciones (ISA) de código abierto, RISC-V, ha estado en desarrollo en la Universidad de California, Berkeley, con fines de investigación y como una alternativa gratuita a las ISA propietarias. A partir de 2014, se corrige la versión 2 del espacio de usuario ISA. El ISA está diseñado para ser extensible desde un núcleo barebone suficiente para un pequeño procesador integrado hasta el uso de supercomputadoras y computación en la nube con extensiones y coprocesadores estándar y definidos por el diseñador de chips. Ha sido probado en diseño de silicio con el ROCKET SoC, que también está disponible como generador de procesador de código abierto en el lenguaje CHISEL.
Características y filosofía de diseño
Filosofía del conjunto de instrucciones
Un malentendido común de la frase "ordenador con conjunto de instrucciones reducido" es que las instrucciones simplemente se eliminan, lo que da como resultado un conjunto más pequeño de instrucciones. De hecho, a lo largo de los años, los conjuntos de instrucciones RISC han crecido en tamaño y, en la actualidad, muchos de ellos tienen un conjunto de instrucciones más grande que muchas CPU CISC. Algunos procesadores RISC, como el PowerPC, tienen conjuntos de instrucciones tan grandes como el CISC IBM System/370, por ejemplo; por el contrario, el DEC PDP-8, claramente una CPU CISC porque muchas de sus instrucciones involucran múltiples accesos a la memoria, tiene solo 8 instrucciones básicas y algunas instrucciones extendidas. El término "reducido" en esa frase tenía la intención de describir el hecho de que la cantidad de trabajo que realiza una sola instrucción se reduce (como máximo un solo ciclo de memoria de datos) en comparación con las "instrucciones complejas" de CPU CISC que pueden requerir docenas de ciclos de memoria de datos para ejecutar una sola instrucción.
A veces se prefiere el término arquitectura de carga/almacenamiento.
Otra forma de ver el debate RISC/CISC es considerar lo que está expuesto al compilador.
En un procesador CISC, el hardware puede usar internamente registros y bits de bandera para implementar una sola instrucción compleja como STRING MOVE
, pero oculta esos detalles del compilador.
Las operaciones internas de un procesador RISC están "expuestas al compilador", lo que lleva al acrónimo 'Relegar cosas interesantes al compilador'.
Formato de instrucciones
La mayoría de las arquitecturas RISC tienen instrucciones de longitud fija y una codificación simple, lo que simplifica considerablemente la lógica de búsqueda, decodificación y emisión. Este es uno de los principales objetivos del enfoque RISC.
Algo de esto solo es posible debido al paso actual a los formatos de 32 bits. Por ejemplo, en un programa típico, más del 30% de todas las constantes numéricas son 0 o 1, el 95% cabe en un byte y el 99% en un valor de 16 bits. Cuando las computadoras se basaban en palabras de 8 o 16 bits, sería difícil tener una combinación inmediata con el código de operación en una sola palabra de memoria, aunque ciertas instrucciones como incrementar y decrementar lo hacían implícitamente usando un código de operación diferente. Por el contrario, una máquina de 32 bits tiene mucho espacio para codificar un valor inmediato y, al hacerlo, evita la necesidad de realizar una segunda lectura de memoria para recoger el valor. Esta es la razón por la que muchos procesadores RISC permiten codificar una constante de 12 o 13 bits directamente en la palabra de instrucción.
Suponiendo un área constante de 13 bits, como es el caso de los diseños MIPS y RISC, hay otros 19 bits disponibles para la codificación de instrucciones. Esto deja un amplio espacio para indicar tanto el código de operación como uno o dos registros. Las operaciones de registro a registro, principalmente matemática y lógica, requieren suficientes bits para codificar los dos o tres registros que se utilizan. La mayoría de los procesadores utilizan el formato de tres operandos, de la forma A = B + C
, en cuyo caso se necesitan tres números de registro. Si el procesador tiene 32 registros, cada uno requiere un número de 5 bits, para 15 bits. Si uno de estos registros se reemplaza por un inmediato, todavía hay mucho espacio para codificar los dos registros restantes y el código de operación. Instrucciones comunes que se encuentran en sistemas de varias palabras, como INC
y DEC
, que reducen el número de palabras que tienen para ser leído antes de ejecutar la instrucción, son innecesarios en RISC ya que se pueden lograr con un solo registro y el valor inmediato 1.
El formato RISC-I original sigue siendo un ejemplo canónico del concepto. Utiliza 7 bits para el código de operación y una bandera de 1 bit para los códigos condicionales, los siguientes 5 bits para el registro de destino y los siguientes cinco para el primer operando. Esto deja 14 bits, el primero de los cuales indica si los siguientes 13 contienen un valor inmediato o usa solo cinco de ellos para indicar un registro para el segundo operando. Un ejemplo más complejo es la codificación MIPS, que usó solo 6 bits para el código de operación, seguido de dos registros de 5 bits. Los 16 bits restantes podrían usarse de dos maneras, una como un valor inmediato de 16 bits o como un valor de cambio de 5 bits (usado solo en operaciones de cambio, de lo contrario cero) y los 6 bits restantes como una extensión en el código de operación. En el caso de operaciones aritméticas de registro a registro, el código de operación era 0 y los últimos 6 bits contenían el código real; aquellos que usaron un valor inmediato usaron el campo de código de operación normal en el frente.
Un inconveniente de las instrucciones de 32 bits es la densidad de código reducida, que es una característica más adversa en la informática integrada que en los mercados de servidores y estaciones de trabajo para los que se diseñaron originalmente las arquitecturas RISC. Para abordar este problema, varias arquitecturas, como ARM, Power ISA, MIPS, RISC-V y Adapteva Epiphany, tienen un conjunto opcional de instrucciones comprimidas cortas y con funciones reducidas. Por lo general, estas instrucciones exponen una menor cantidad de registros y menos bits para valores inmediatos y, a menudo, usan un formato de dos instrucciones para eliminar un número de registro de las instrucciones. Un formato de dos operandos en un sistema con 16 registros requiere 8 bits para los números de registro, dejando otros 8 para un código de operación u otros usos. El SH5 también sigue este patrón, aunque evolucionó en la dirección opuesta, agregando instrucciones más largas de 32 bits a una codificación original de 16 bits.
Uso de hardware
Para cualquier nivel dado de rendimiento general, un chip RISC normalmente tendrá muchos menos transistores dedicados a la lógica del núcleo, lo que originalmente permitió a los diseñadores aumentar el tamaño del conjunto de registros y aumentar el paralelismo interno.
Otras características de las arquitecturas RISC incluyen:
- Procesador promedio de rendimiento cerca de 1 instrucción por ciclo
- Formato de instrucción uniforme, usando una sola palabra con el opcode en las mismas posiciones de bit para decodificación más simple
- Todos los registros para fines generales pueden utilizarse por igual como fuente/destinación en todas las instrucciones, simplificando el diseño del compilador (los registros de puntos flotantes suelen mantenerse separados)
- Modos de abordaje simple con abordaje complejo realizado por secuencias de instrucciones
- Pocos tipos de datos en hardware (sin cadena de byte o decimal codificado binario [BCD], por ejemplo)
También es más probable que los diseños de RISC presenten un modelo de memoria de Harvard, donde el flujo de instrucciones y el flujo de datos están conceptualmente separados; esto significa que la modificación de la memoria donde se guarda el código podría no tener ningún efecto en las instrucciones ejecutadas por el procesador (porque la CPU tiene una instrucción y un caché de datos separados), al menos hasta que se emita una instrucción de sincronización especial; Los procesadores CISC que tienen cachés de datos e instrucciones separados generalmente los mantienen sincronizados automáticamente, para compatibilidad con versiones anteriores de procesadores más antiguos.
Muchos de los primeros diseños de RISC también compartían la característica de tener una ranura de retardo de bifurcación, un espacio de instrucción inmediatamente después de un salto o bifurcación. La instrucción en este espacio se ejecuta, ya sea que se tome o no la bifurcación (en otras palabras, el efecto de la bifurcación se retrasa). Esta instrucción mantiene ocupada la ALU de la CPU durante el tiempo adicional que normalmente se necesita para realizar una bifurcación. Hoy en día, la ranura de retraso de bifurcación se considera un efecto secundario desafortunado de una estrategia particular para implementar algunos diseños RISC, y los diseños RISC modernos generalmente lo eliminan (como PowerPC y versiones más recientes de SPARC y MIPS).
Algunos aspectos atribuidos a los primeros diseños etiquetados de RISC alrededor de 1975 incluyen las observaciones de que los compiladores con restricciones de memoria de la época a menudo no podían aprovechar las funciones destinadas a facilitar manual< /i> codificación ensambladora, y que los modos de direccionamiento complejos tardan muchos ciclos en ejecutarse debido a los accesos de memoria adicionales requeridos. Se argumentó que tales funciones se realizarían mejor mediante secuencias de instrucciones más simples si esto pudiera producir implementaciones lo suficientemente pequeñas como para dejar espacio para muchos registros, reduciendo la cantidad de accesos lentos a la memoria. En estos diseños simples, la mayoría de las instrucciones tienen una longitud uniforme y una estructura similar, las operaciones aritméticas están restringidas a los registros de la CPU y solo las instrucciones separadas cargar y almacenar acceden a la memoria. Estas propiedades permiten un mejor equilibrio de las etapas de la tubería que antes, lo que hace que las tuberías RISC sean significativamente más eficientes y permiten frecuencias de reloj más altas.
Otro ímpetu tanto de RISC como de otros diseños provino de mediciones prácticas en programas del mundo real. Andrew Tanenbaum resumió muchos de estos, demostrando que los procesadores a menudo tenían inmediatos de gran tamaño. Por ejemplo, demostró que el 98% de todas las constantes de un programa caben en 13 bits, aunque muchos diseños de CPU dedican 16 o 32 bits para almacenarlas. Esto sugiere que, para reducir el número de accesos a la memoria, una máquina de longitud fija podría almacenar constantes en bits no utilizados de la propia palabra de instrucción, de modo que estarían listos de inmediato cuando la CPU los necesite (al igual que el direccionamiento inmediato en un diseño convencional). Esto requería códigos de operación pequeños para dejar espacio para una constante de tamaño razonable en una palabra de instrucción de 32 bits.
Dado que muchos programas del mundo real dedican la mayor parte de su tiempo a ejecutar operaciones simples, algunos investigadores decidieron concentrarse en hacer que esas operaciones fueran lo más rápidas posible. La frecuencia de reloj de una CPU está limitada por el tiempo que lleva ejecutar la suboperación más lenta de cualquier instrucción; disminuir ese tiempo de ciclo a menudo acelera la ejecución de otras instrucciones. El enfoque en "instrucciones reducidas" condujo a que la máquina resultante se denominara "ordenador con conjunto de instrucciones reducido" (RISC). El objetivo era hacer que las instrucciones fueran tan simples que pudieran fácilmente canalizarse, para lograr un rendimiento de reloj único a frecuencias altas.
Más tarde, se observó que una de las características más significativas de los procesadores RISC era que solo se podía acceder a la memoria externa mediante una instrucción cargar o almacenar. Todas las demás instrucciones se limitaban a los registros internos. Esto simplificó muchos aspectos del diseño del procesador: permitir que las instrucciones tengan una longitud fija, simplificar las canalizaciones y aislar la lógica para lidiar con la demora en completar un acceso a la memoria (pérdida de caché, etc.) a solo dos instrucciones. Esto llevó a que los diseños RISC se denominen arquitecturas de carga/almacenamiento.
Comparación con otras arquitecturas
Algunas CPU se han diseñado específicamente para tener un conjunto muy pequeño de instrucciones, pero estos diseños son muy diferentes de los diseños RISC clásicos, por lo que se les ha dado otros nombres, como computadora con conjunto mínimo de instrucciones (MISC) o arquitectura activada por transporte (ATT).
Tradicionalmente, las arquitecturas RISC han tenido pocos éxitos en los mercados de servidores básicos y PC de escritorio, donde las plataformas basadas en x86 siguen siendo la arquitectura de procesador dominante. Sin embargo, esto puede cambiar, ya que se están desarrollando procesadores basados en ARM para sistemas de mayor rendimiento. Fabricantes como Cavium, AMD y Qualcomm han lanzado procesadores de servidor basados en la arquitectura ARM. ARM se asoció además con Cray en 2017 para producir una supercomputadora basada en ARM. En el escritorio, Microsoft anunció que planeaba admitir la versión para PC de Windows 10 en dispositivos basados en Qualcomm Snapdragon en 2017 como parte de su asociación con Qualcomm. Estos dispositivos admitirán aplicaciones de Windows compiladas para x86 de 32 bits a través de un emulador de procesador x86 que traduce código x86 de 32 bits a código ARM64. Apple anunció que hará la transición de sus computadoras de escritorio y portátiles Mac de procesadores Intel a SoC basados en ARM64 desarrollados internamente llamados Apple silicon; las primeras computadoras de este tipo, que utilizan el procesador Apple M1, se lanzaron en noviembre de 2020. Las Mac con silicio Apple pueden ejecutar binarios x86-64 con Rosetta 2, un traductor x86-64 a ARM64.
Sin embargo, fuera del campo de las computadoras de escritorio, la arquitectura ARM RISC tiene un uso generalizado en teléfonos inteligentes, tabletas y muchas formas de dispositivos integrados. Si bien los primeros diseños RISC diferían significativamente de los diseños CISC contemporáneos, para el año 2000, las CPU de mayor rendimiento de la línea RISC eran casi indistinguibles de las CPU de mayor rendimiento de la línea CISC.
Uso de arquitecturas RISC
Las arquitecturas RISC ahora se usan en una variedad de plataformas, desde teléfonos inteligentes y tabletas hasta algunas de las supercomputadoras más rápidas del mundo, como Fugaku, la más rápida en la lista TOP500 a noviembre de 2020, y Summit, Sierra, y Sunway TaihuLight, los siguientes tres en esa lista.
Sistemas móviles y de gama baja
A principios del siglo XXI, la mayoría de los sistemas móviles y de gama baja se basaban en arquitecturas RISC. Ejemplos incluyen:
- La arquitectura ARM domina el mercado de sistemas incrustados de baja potencia y bajo costo (normalmente 200–1800 MHz en 2014). Se utiliza en varios sistemas como la mayoría de los sistemas basados en Android, el Apple iPhone y iPad, Microsoft Windows Phone (anterior Windows Mobile), dispositivos RIM, Nintendo Game Boy Advance, DS, 3DS y Switch, Raspberry Pi, etc.
- El PowerPC de IBM se utilizó en las consolas de juego GameCube, Wii, PlayStation 3, Xbox 360 y Wii U.
- La línea MIPS (en un punto utilizado en muchos ordenadores SGI) se utilizó en las consolas de PlayStation, PlayStation 2, Nintendo 64, PlayStation Portable y portales residenciales como la serie Linksys WRT54G.
- SuperH de Hitachi, originalmente en uso amplio en el Sega Super 32X, Saturno y Dreamcast, ahora desarrollado y vendido por Renesas como el SH4.
- Atmel AVR, utilizado en una variedad de productos que van desde los controladores portátiles Xbox y la plataforma de microcontrolador de código abierto Arduino a los coches BMW.
- RISC-V, el quinto Berkeley RISC ISA de código abierto, con espacios de dirección de 32 o 64 bits, un pequeño conjunto de instrucciones de núcleo y un ISA experimental "Comprimido" para densidad de código y diseñado para extensiones estándar y de uso especial.
Ordenadores de escritorio y portátiles
- IBM's Power La arquitectura de PC se utilizó en los ordenadores Macintosh de Apple de 1994, cuando comenzaron un cambio de los procesadores de la familia Motorola 68000, a 2005, cuando se transfirieron a procesadores Intel x86.
- Algunos libros de cromo utilizan plataformas basadas en ARM desde 2012.
- Apple utiliza procesadores de diseño interno basados en la arquitectura ARM para su alineación de computadoras de escritorio y portátiles desde su transición de procesadores Intel, y los primeros equipos de este tipo fueron liberados en noviembre 2020.
- Microsoft utiliza procesadores basados en Qualcomm ARM para su línea Surface. HP Inc y Lenovo han lanzado Windows PCs con un Qualcomm Snapdragon basado en ARM.
Estaciones de trabajo, servidores y superordenadores
- MIPS, por Silicon Graphics (ceased making MIPS-based systems in 2006).
- SPARC, por Oracle (previamente Sun Microsystems), y Fujitsu.
- La arquitectura de IBM POWER, PowerPC y Power ISA fueron y se utilizan en muchos de los supercomputadores de IBM, servidores de gama media y estaciones de trabajo.
- El PA-RISC de Hewlett-Packard, también conocido como HP-PA (continúa a finales de 2008).
- Alpha, utilizado en ordenadores de una sola tabla, estaciones de trabajo, servidores y supercomputadores de Digital Equipment Corporation, luego Compaq y finalmente Hewlett-Packard (HP)(descontinuado en 2007).
- RISC-V, la quinta fuente abierta Berkeley RISC ISA, con espacios de dirección de 64 o 128 bits, y el núcleo entero extendido con punto flotante, atomía y procesamiento de vectores, y diseñado para ser ampliado con instrucciones para el procesamiento de redes, I/O y datos. Un diseño superscalar de 64 bits, "Rocket", está disponible para su descarga. Se aplica en el procesador European Processor Initiative.
- La arquitectura ARM se utilizó en el chip Fujitsu A64FX para crear Fugaku, el supercomputador más rápido del mundo en 2020.
Código abierto
Las arquitecturas RISC se han vuelto populares en los procesadores de código abierto y los microprocesadores de software, ya que son relativamente simples de implementar, lo que las hace adecuadas para implementaciones y prototipos de FPGA, por ejemplo. Ejemplos incluyen:
- OpenRISC, un conjunto de instrucción abierta y microarquitectura introducido por primera vez en 2000.
- LEON, una fuente abierta, la aplicación tolerante a la radiación del conjunto de instrucciones SPARC V8 (arrigen aplicaciones espaciales).
- Libre-SOC, una fuente abierta SoC basada en el Power ISA con extensiones para vídeo y gráficos 3D.
- También hay varias implementaciones de código abierto RISC-V.
Premios
En 2022, Steve Furber, John L. Hennessy, David A. Patterson y Sophie M. Wilson recibieron el premio Charles Stark Draper de la Academia Nacional de Ingeniería de los Estados Unidos por sus contribuciones a la invención, el desarrollo y la implementación de chips de computadora con conjunto de instrucciones (RISC).
Contenido relacionado
Scripting del lado del servidor
Intel 4004
Linus Torvalds