stringtranslate.com

Computadora con conjunto de instrucciones reducido

El procesador UltraSPARC de Sun Microsystems es un tipo de microprocesador RISC.

En electrónica y ciencias de la computación , una computadora con conjunto de instrucciones reducido ( RISC ) es una arquitectura de computadora diseñada para simplificar las instrucciones individuales que se le dan a la computadora para realizar tareas. En comparación con las instrucciones que se le dan a una computadora con conjunto de instrucciones complejo (CISC), una computadora RISC podría 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 implementando una secuencia de instrucciones , que puede ser más simple de lograr dadas instrucciones más simples. [1]

El concepto operativo clave de la computadora RISC es que cada instrucción realiza sólo una función (por ejemplo, copiar un valor de la memoria a un registro). La computadora RISC normalmente tiene muchos registros (16 o 32) de alta velocidad y propósito general 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 [2] y tiempos de instrucción predecibles que simplifican el diseño del sistema en su conjunto.

Los desarrollos conceptuales de la arquitectura informática RISC comenzaron con el proyecto IBM 801 a finales de los años 1970, pero no se pusieron en práctica inmediatamente. Los diseñadores de California retomaron los conceptos del 801 en dos proyectos fundamentales, Stanford MIPS y Berkeley RISC . Estos se comercializaron en los años 1980 como los sistemas MIPS y SPARC . IBM acabó produciendo 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 mediados y finales de los años 1980 y principios de los años 1990, como ARM , PA-RISC y Alpha , crearon 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.

En el mercado de minicomputadoras , compañías que incluían Celerity Computing , Pyramid Technology y Ridge Computers comenzaron a ofrecer sistemas diseñados según principios RISC o similares a RISC a principios de la década de 1980. [3] [4] [5] [6] [7] Pocos de estos diseños comenzaron utilizando microprocesadores RISC.

Las variedades de diseño de procesadores 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, PA-RISC, Power ISA, RISC-V , SuperH y SPARC. Los procesadores RISC se utilizan en supercomputadoras , como Fugaku . [8]

Historia y desarrollo

A varios sistemas, que se remontan a la década de 1960, se les ha atribuido el mérito de ser la primera arquitectura RISC, en parte debido a su uso del enfoque de carga y almacenamiento . [9] El término RISC fue acuñado por David Patterson del proyecto RISC de Berkeley , aunque ya habían aparecido conceptos algo similares antes. [10]

El CDC 6600 diseñado por Seymour Cray en 1964 utilizaba una arquitectura de carga y almacenamiento con sólo 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. [11] En parte debido a la arquitectura de carga y almacenamiento optimizada del CDC 6600, Jack Dongarra dice que puede considerarse un precursor de los sistemas RISC modernos, aunque se debieron superar una serie de otras barreras técnicas para el desarrollo de un sistema RISC moderno. [12]

IBM 801

Michael J. Flynn considera que el primer sistema RISC fue el diseño IBM 801 , [2] 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 utilizar 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), [13] en comparación con su máquina mainframe más rápida de la época, la 370/168 , que funcionaba a 3,5 MIPS. [14]

El diseño se basó en un estudio de la extensa colección de estadísticas de IBM recopiladas de sus clientes. Esto demostró que el código en entornos de alto rendimiento hacía un uso extensivo de los registros del procesador y que a menudo se quedaban sin ellos. Esto sugirió que los 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, seleccionaban la versión más rápida de cualquier instrucción dada y luego construían 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 funcionaron 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. [13]

El programa de conmutación telefónica se canceló en 1975, pero para entonces el equipo había demostrado que el mismo diseño ofrecería importantes mejoras de rendimiento ejecutando prácticamente cualquier código. En simulaciones, demostraron que un compilador ajustado para utilizar registros siempre que fuera posible ejecutaría el código aproximadamente tres veces más rápido que los diseños tradicionales. Algo sorprendente fue que el mismo código se ejecutaría aproximadamente un 50% más rápido incluso en las máquinas existentes debido al uso mejorado de los registros. En la práctica, su compilador PL/8 experimental, una versión ligeramente reducida de PL/I , produjo de manera consistente código que se ejecutaba mucho más rápido en sus mainframes existentes. [13]

En 1981 se produjo una versión de 32 bits del 801 en un solo chip, el IBM ROMP , que significaba "Microprocesador de Investigación OPD [División de Productos de Oficina]". [15] Esta CPU fue diseñada para tareas "mini" y se utilizó en interfaces periféricas y controladores de canal en computadoras IBM posteriores. También se utilizó como CPU en el IBM RT PC en 1986, que resultó ser un fracaso comercial. [16] 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 . [17] [18]

RISC de Berkeley y MIPS de Stanford

A finales de los años 70, el 801 ya era muy conocido en la industria. Esto coincidió con las nuevas técnicas de fabricación que permitían la llegada al mercado de 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 utilizaban su nueva complejidad para ampliar el conjunto de instrucciones y hacerlo más ortogonal. La mayoría, como el 68k, utilizaban microcódigo para ello, leyendo instrucciones y volviéndolas a implementar como una secuencia de instrucciones internas más sencillas. En el 68k, se utilizaba un tercio completo de los transistores para esta microcodificación. [19]

En 1979, David Patterson fue enviado a 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. [20] Primero escribió un artículo sobre las formas de mejorar la microcodificación, pero luego cambió de opinión y decidió que el microcódigo en sí era el problema. Con la financiación del Programa VLSI de DARPA , Patterson inició el proyecto RISC de Berkeley . El programa, prácticamente desconocido hoy en día, condujo a una gran cantidad de avances en el diseño de chips, la fabricación e incluso los gráficos de computadora. Al considerar 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. [21]

Los primeros trabajos de Patterson señalaron un problema importante con el enfoque tradicional de "cuanto más, mejor": incluso las instrucciones que eran fundamentales para el rendimiento general se retrasaban en su paso por el microcódigo. Si se eliminaba el microcódigo, los programas se ejecutaban más rápido. Y como el microcódigo, en última instancia, tomaba una instrucción compleja y la dividía en pasos, no había ninguna razón por la que el compilador no pudiera hacer lo mismo. Estos estudios sugirieron que, incluso sin otros cambios, se podía hacer un chip con 13 menos transistores que funcionara más rápido. [21] En el artículo original de RISC-I, señalaron: [22]

Saltarse este nivel adicional de interpretación parece mejorar el rendimiento y reducir el tamaño del chip. [22]

También se descubrió que, en las implementaciones microcodificadas de ciertas arquitecturas, las operaciones complejas tendían a ser más lentas que una secuencia de operaciones más simples que hicieran lo mismo. Esto se debía en parte al hecho de que muchos diseños se hacían a toda prisa, con poco tiempo para optimizar o ajustar cada instrucción; sólo se optimizaban las que se usaban con más frecuencia, y una secuencia de esas instrucciones podía ser más rápida que una instrucción menos ajustada que realizara una operación equivalente a esa secuencia. Un ejemplo infame fue la instrucción VAXINDEX . [23]

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 retornos de subrutinas , y parecía que existía el potencial de mejorar el rendimiento general al acelerar estas llamadas. Esto llevó al diseño de Berkeley a seleccionar un método conocido como ventanas de registro que puede mejorar significativamente el rendimiento de las subrutinas, aunque a costa de cierta complejidad. [22] También observaron que la mayoría de las instrucciones matemáticas eran asignaciones simples; solo 13 de ellas realmente realizaban una operación como suma o resta. Pero cuando esas operaciones ocurrían, tendían a ser lentas. Esto llevó a poner mucho más énfasis en la unidad de datos aritméticos subyacente, a diferencia de los diseños anteriores en los que la mayor parte del chip estaba dedicada al control y al microcódigo. [21]

El Berkeley RISC resultante se basó en ganar rendimiento mediante el uso de canalización y un uso agresivo de ventanas de registro. [23] [22] 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 "hacia abajo" ocho, al conjunto de ocho registros utilizados por ese procedimiento, y el retorno mueve la ventana hacia atrás. [24] El proyecto RISC de Berkeley presentó el procesador RISC-I en 1982. Con tan solo 44.420 transistores (en comparación con los promedios de unos 100.000 en los diseños CISC más nuevos de la época), el RISC-I tenía solo 32 instrucciones y, sin embargo, superaba por completo a cualquier otro diseño de un solo chip, con un rendimiento estimado superior al del VAX. [22] A esto le siguió el RISC-II de 40.760 transistores y 39 instrucciones en 1983, que funcionaba tres veces más rápido que el RISC-I. [22]

A medida que el proyecto RISC comenzó a hacerse 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. [25] El enfoque MIPS enfatizó un ciclo de reloj agresivo y el uso de la tubería, asegurándose de que pudiera ejecutarse lo más "completo" posible. [25] 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. [25] [26] La empresa resultó en una nueva arquitectura que también se llamó MIPS y el microprocesador R2000 en 1985. [26]

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 del MIPS-X a expresarlo de esta manera en 1987:

El objetivo de cualquier formato de instrucción debe ser: 1. decodificación simple, 2. decodificación simple y 3. decodificación simple. Cualquier intento de mejorar la densidad del código a expensas del rendimiento de la CPU debe ser ridiculizado en cada oportunidad. [27]

La competencia entre los enfoques RISC y CISC convencionales también fue tema 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 .

Prototipo de chip RISC-V (2013)

Desde 2010, una nueva arquitectura de conjunto de instrucciones (ISA) estándar abierta , Berkeley RISC-V , se ha estado desarrollando en la Universidad de California, Berkeley, con fines de investigación y como una alternativa libre a las ISA propietarias. A partir de 2014, la versión 2 de la ISA de espacio de usuario está fija. [28] La ISA está diseñada para ser extensible desde un núcleo básico suficiente para un pequeño procesador integrado hasta el uso en supercomputadoras y computación en la nube con extensiones y coprocesadores definidos por el diseñador de chips y estándares. Se ha probado en diseño de silicio con el ROCKET SoC , que también está disponible como un generador de procesador de código abierto en el lenguaje CHISEL.

Descubrimiento comercial

A principios de los años 1980, el concepto RISC estaba rodeado de importantes incertidumbres. Una de ellas tenía que ver con el uso de la memoria: una única instrucción de un procesador tradicional como el Motorola 68k podía escribirse como media docena de instrucciones RISC más sencillas. En teoría, esto podía ralentizar el sistema, ya que dedicaba más tiempo a buscar instrucciones en la memoria. Pero a mediados de los años 1980, los conceptos habían madurado lo suficiente como para ser considerados comercialmente viables. [16] [25]

Sistema de evaluación ARM de Acorn (1985)

Los diseños comerciales de RISC comenzaron a surgir a mediados de los años 1980. El Acorn ARM1 apareció en abril de 1985, [29] el MIPS R2000 apareció en enero de 1986, seguido poco después por el PA-RISC de Hewlett-Packard en algunos de sus ordenadores. [16] Mientras tanto, el esfuerzo de Berkeley se había hecho tan conocido que finalmente se convirtió en el nombre de todo el concepto. En 1987 Sun Microsystems comenzó a comercializar sistemas con el procesador SPARC , basado directamente en el sistema Berkeley RISC-II. [16] [30] El Comité de Innovaciones en Computación y Comunicaciones del gobierno de los EE. UU. atribuye la aceptación de la viabilidad del concepto RISC al éxito del sistema SPARC. [16] El éxito de SPARC renovó el interés dentro de IBM, que lanzó nuevos sistemas RISC en 1990 y en 1995 los procesadores RISC eran la base de una industria de servidores de 15 mil millones de dólares. [16]

A finales de los años 1980, los nuevos diseños RISC superaban con creces a todos los diseños tradicionales por un amplio margen. En ese momento, todos los demás proveedores comenzaron a desarrollar sus propios sistemas RISC. Entre ellos se encontraban el DEC Alpha , el AMD Am29000 , el Intel i860 e i960 , el Motorola 88000 , el IBM POWER y, un poco más tarde, el IBM/Apple/Motorola PowerPC . Muchos de ellos han desaparecido desde entonces debido a que a menudo no ofrecen ninguna ventaja competitiva sobre otros de la misma época. Los que quedan se utilizan a menudo solo en mercados especializados o como partes de otros sistemas; de los diseños de estos proveedores tradicionales, solo SPARC y POWER tienen un mercado restante significativo. [ cita requerida ]

La arquitectura ARM ha sido la ISA RISC más ampliamente adoptada, inicialmente destinada a ofrecer computación de escritorio de mayor rendimiento, a bajo costo y en un paquete térmico restringido, como en Acorn Archimedes , aunque figuraba en las tablas de Super Computer League , su implementación inicial, relativamente de menor potencia y refrigeración, pronto se adaptó a aplicaciones integradas, como el procesamiento de imágenes rasterizadas de impresoras láser. [31] Acorn, en asociación con Apple Inc y VLSI, creó ARM Ltd, en 1990, para compartir los costos de I+D y encontrar nuevos mercados para la ISA, que en asociación con TI, GEC, Sharp, Nokia, Oracle y Digital desarrollarían diseños RISC integrados y de bajo consumo, y apuntarían a esos segmentos de mercado, que en ese momento eran de nicho. Con el auge de la computación móvil, automotriz, de transmisión y de dispositivos inteligentes, ARM se convirtió en la ISA más utilizada; la compañía estima que casi la mitad de todas las CPU enviadas en la historia han sido ARM. [32]

Características y filosofía de diseño

La confusión en torno a la definición de RISC derivada de la formulación del término, junto con la tendencia a categorizar de manera oportunista las arquitecturas de procesador con relativamente pocas instrucciones (o grupos de instrucciones) como arquitecturas RISC, condujo a intentos de definir RISC como una filosofía de diseño. Un intento de hacerlo se expresó de la siguiente manera:

Un procesador RISC tiene un conjunto de instrucciones diseñado para una ejecución eficiente por parte de un procesador canalizado y para la generación de código por parte de un compilador optimizador.

—  Michael Slater, Informe sobre microprocesadores [33]

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 de instrucciones más pequeño. [34] De hecho, con el paso de los años, los conjuntos de instrucciones RISC han crecido en tamaño, y hoy en día muchos de ellos tienen un conjunto de instrucciones más grande que muchas CPU CISC. [35] [36] Algunos procesadores RISC como el PowerPC tienen conjuntos de instrucciones tan grandes como el IBM System/370 CISC , por ejemplo; por el contrario, el DEC PDP-8 (claramente un CPU CISC porque muchas de sus instrucciones involucran múltiples accesos a memoria) tiene solo 8 instrucciones básicas y unas pocas instrucciones extendidas. [37] El término "reducido" en esa frase tenía la intención de describir el hecho de que la cantidad de trabajo que cualquier instrucción individual logra se reduce (como máximo un solo ciclo de memoria de datos) en comparación con las "instrucciones complejas" de las CPU CISC que pueden requerir docenas de ciclos de memoria de datos para ejecutar una sola instrucción. [38]

A veces se prefiere el término arquitectura de carga-almacenamiento .

Otra forma de analizar el debate RISC/CISC es considerar lo que se expone al compilador. En un procesador CISC, el hardware puede utilizar internamente registros y bits de bandera para implementar una única instrucción compleja como STRING MOVE, pero ocultar esos detalles al compilador. Las operaciones internas de un procesador RISC están "expuestas al compilador", lo que da lugar al acrónimo 'Relegate Interesting Stuff to the Compiler' (Relegar cosas interesantes al compilador). [39] [40]

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. [22]

Parte de esto es posible sólo gracias a la transición contemporánea a 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. [41] Cuando las computadoras se basaban en palabras de 8 o 16 bits, era difícil tener un valor inmediato combinado con el código de operación en una sola palabra de memoria, aunque ciertas instrucciones como el incremento y el decremento lo hacían implícitamente al usar un código de operación diferente. En contraste, una máquina de 32 bits tiene amplio espacio para codificar un valor inmediato, y al hacerlo se evita la necesidad de hacer una segunda lectura de memoria para captar 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. [22]

Suponiendo un área constante de 13 bits, como es el caso en 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áticas y lógicas, 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 registros. 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. Las instrucciones comunes que se encuentran en los sistemas de múltiples palabras, como INCy DEC, que reducen la cantidad de palabras que deben leerse antes de realizar la instrucción, son innecesarias en RISC, ya que se pueden realizar con un solo registro y el valor inmediato 1. [22]

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 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 utiliza solo cinco de ellos para indicar un registro para el segundo operando. [22] Un ejemplo más complejo es la codificación MIPS, que utilizaba solo 6 bits para el código de operación, seguido de dos registros de 5 bits. Los 16 bits restantes se podían utilizar de dos maneras, una como un valor inmediato de 16 bits o como un valor de desplazamiento de 5 bits (utilizado solo en operaciones de desplazamiento, de lo contrario cero) y los 6 bits restantes como una extensión del 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 usaban un valor inmediato usaban el campo de código de operación normal al frente. [42]

Un inconveniente de las instrucciones de 32 bits es la densidad reducida del código, que es una característica más adversa en la informática integrada que en los mercados de estaciones de trabajo y servidores para los que se diseñaron originalmente las arquitecturas RISC. Para abordar este problema, varias arquitecturas, como SuperH (1992), ARM thumb (1994), [43] MIPS16e (2004), Power Variable Length Encoding ISA (2006), RISC-V y Adapteva Epiphany , tienen un conjunto de instrucciones comprimidas opcionales, cortas y con características reducidas . Generalmente, estas instrucciones exponen un número menor de registros y menos bits para valores inmediatos, y a menudo utilizan un formato de dos operandos 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 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 ha evolucionado en la dirección opuesta, habiendo añadido instrucciones más largas de 32 bits a una codificación original de 16 bits.

Utilización del hardware

Para cualquier nivel dado de rendimiento general, un chip RISC normalmente tendrá muchos menos transistores dedicados a la lógica central, lo que originalmente permitió a los diseñadores aumentar el tamaño del conjunto de registros y aumentar el paralelismo interno. [ cita requerida ]

Otras características de las arquitecturas RISC incluyen:

También es más probable que los diseños RISC incluyan un modelo de memoria Harvard , donde el flujo de instrucciones y el flujo de datos están conceptualmente separados; esto significa que modificar la memoria donde se almacena el código podría no tener ningún efecto en las instrucciones ejecutadas por el procesador (porque la CPU tiene un caché de instrucciones y datos separados ), al menos hasta que se emita una instrucción de sincronización especial; los procesadores CISC que tienen cachés de instrucciones y datos separados generalmente los mantienen sincronizados automáticamente, para compatibilidad con procesadores más antiguos.

Muchos de los primeros diseños RISC también compartían la característica de tener una ranura de retardo de bifurcación , un espacio de instrucciones que sigue inmediatamente a un salto o bifurcación. La instrucción en este espacio se ejecuta, ya sea que se realice o no la bifurcación (en otras palabras, el efecto de la bifurcación se retrasa). Esta instrucción mantiene la ALU de la CPU ocupada durante el tiempo adicional que normalmente se necesita para realizar una bifurcación. Hoy en día, la ranura de retardo de bifurcación se considera un desafortunado efecto secundario 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). [ cita requerida ]

Algunos aspectos atribuidos a los primeros diseños etiquetados como 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 características destinadas a facilitar la codificación de ensamblaje manual , y que los modos de direccionamiento complejos requieren muchos ciclos para realizarse debido a los accesos de memoria adicionales requeridos. Se argumentó [ ¿por quién? ] que tales funciones se realizarían mejor con secuencias de instrucciones más simples si esto pudiera producir implementaciones lo suficientemente pequeñas como para dejar espacio para muchos registros, reduciendo el número de accesos lentos a la memoria. En estos diseños simples, la mayoría de las instrucciones son de longitud uniforme y estructura similar, las operaciones aritméticas están restringidas a los registros de la CPU y solo las instrucciones de carga y almacenamiento separadas acceden a la memoria. Estas propiedades permiten un mejor equilibrio de las etapas de la canalización que antes, lo que hace que las canalizaciones RISC sean significativamente más eficientes y permitan frecuencias de reloj más altas .

Otro impulso tanto de RISC como de otros diseños provino de mediciones prácticas en programas del mundo real. Andrew Tanenbaum resumió muchas de ellas, demostrando que los procesadores a menudo tenían constantes inmediatas de gran tamaño. Por ejemplo, demostró que el 98% de todas las constantes de un programa cabían en 13 bits , aunque muchos diseños de CPU dedicaban 16 o 32 bits para almacenarlas. Esto sugiere que, para reducir la cantidad 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 estuvieran listas de inmediato cuando la CPU las necesitara (de forma muy similar al 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 pasan la mayor parte de su tiempo ejecutando operaciones simples, algunos investigadores decidieron centrarse en hacer que esas operaciones fueran lo más rápidas posible. La velocidad de reloj de una CPU está limitada por el tiempo que tarda en ejecutar la suboperación más lenta de cualquier instrucción; la disminución de ese tiempo de ciclo a menudo acelera la ejecución de otras instrucciones. [45] El enfoque en las "instrucciones reducidas" llevó a que la máquina resultante se llamara "computadora de conjunto de instrucciones reducidas" (RISC). El objetivo era hacer que las instrucciones fueran tan simples que pudieran canalizarse fácilmente , para lograr un rendimiento de reloj único a altas frecuencias . Esto contrastaba con los diseños CISC cuyas "operaciones aritméticas cruciales y transferencias de registros" se consideraban difíciles de canalizar. [46]

Más tarde, se observó que una de las características más significativas de los procesadores RISC era que la memoria externa solo era accesible mediante una instrucción de carga o almacenamiento . Todas las demás instrucciones se limitaban a los registros internos. Esto simplificó muchos aspectos del diseño de procesadores: permitió que las instrucciones tuvieran una longitud fija, simplificó las secuencias de comandos y aisló la lógica para lidiar con el retraso en completar un acceso a la memoria (error de caché, etc.) a solo dos instrucciones. Esto llevó a que los diseños RISC se conocieran como arquitecturas de carga y almacenamiento . [47]

Comparación con otras arquitecturas

Algunas CPU han sido diseñadas 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 han dado otros nombres, como computadora de conjunto de instrucciones mínimo (MISC) o arquitectura activada por transporte (TTA).

Las arquitecturas RISC tradicionalmente han tenido poco éxito en los mercados de PC de escritorio y servidores básicos, 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. [48] Fabricantes como Cavium , AMD y Qualcomm han lanzado procesadores de servidor basados ​​en la arquitectura ARM. [49] [50] ARM se asoció además con Cray en 2017 para producir una supercomputadora basada en ARM. [51] En el escritorio, Microsoft anunció que planeaba soportar 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 soportarán aplicaciones de Windows compiladas para x86 de 32 bits a través de un emulador de procesador x86 que traduce el código x86 de 32 bits al código ARM64 . [52] [53] 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. [54] Las Mac con silicio de Apple pueden ejecutar binarios x86-64 con Rosetta 2 , un traductor de x86-64 a ARM64. [55]

Sin embargo, fuera del ámbito de los ordenadores de sobremesa, la arquitectura ARM RISC se utiliza ampliamente 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, en 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. [56] [57] [58]

Uso de arquitecturas RISC

Las arquitecturas RISC ahora se utilizan 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 , las siguientes tres en esa lista. [59]

Sistemas de gama baja y móviles

A principios del siglo XXI, la mayoría de los sistemas móviles y de gama baja dependían de arquitecturas RISC. [60] Algunos ejemplos incluyen:

Computadoras de escritorio y portátiles

Estaciones de trabajo, servidores y supercomputadoras

Código abierto, estándar o uso

Las arquitecturas RISC se han vuelto populares en los procesadores de código abierto y los microprocesadores de software , ya que son relativamente fáciles de implementar, lo que las hace adecuadas para implementaciones y prototipos de FPGA , por ejemplo. Algunos ejemplos incluyen:

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 informáticos de conjunto de instrucciones reducido (RISC). [69] [70]

Véase también

Referencias

  1. ^ Chen, Crystal; Novick, Greg; Shimano, Kirk. "Pipelining". Arquitectura RISC .
  2. ^ ab Flynn, Michael J. (1995). Arquitectura informática: diseño de procesadores en paralelo y segmentados . Jones & Bartlett Learning. págs. 54-56. ISBN 0867202041.
  3. ^ Colwell, Robert P.; Hitchcock III, Charles Y.; Jensen, E. Douglas; Sprunt, HM Brinkley; Kollar, Charles P. (septiembre de 1985). "Conjuntos de instrucciones y más allá: computadoras, complejidad y controversia" (PDF) . Computadora . IEEE. págs. 8–19.
  4. ^ Aletan, Samuel O. (1 de abril de 1992). "Una visión general de la arquitectura RISC". Actas del Simposio ACM/SIGAPP de 1992 sobre informática aplicada: desafíos tecnológicos de los años 1990. SAC '92. Kansas City, Missouri: Association for Computing Machinery . págs. 11–20. doi :10.1145/143559.143570.
  5. ^ Markoff, John (noviembre de 1984). "Nuevos chips: chips RISC". Byte . Vol. 9, núm. 12. McGraw-Hill. págs. 191–206.
  6. ^ Boursin de l'Arc, Philippe. "Historia de la informática y de Internet". boursinp.free.fr .
  7. ^ Manuel, Tom (3 de septiembre de 1987). "Inside Technology — The Frentic Search for More Speed" (PDF) . Electrónica . McGraw-Hill. págs. 59–62.
  8. ^ "El Fugaku japonés obtiene el título de supercomputadora más rápida del mundo". RIKEN . Consultado el 24 de junio de 2020 .
  9. ^ Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). Computación integrada: un enfoque VLIW para la arquitectura, los compiladores y las herramientas . Elsevier. pág. 55. ISBN 1558607668.
  10. ^ Reilly, Edwin D. (2003). Hitos en la informática y la tecnología de la información . Greenwood Publishing. pp. 50. ISBN 1-57356-521-0.
  11. ^ Grishman, Ralph (1974). Programación en lenguaje ensamblador para la serie Control Data 6000 y la serie Cyber ​​70. Algorithmics Press. pág. 12. OCLC  425963232.
  12. ^ Dongarra, Jack J.; et al. (1987). Álgebra lineal numérica en computadoras de alto rendimiento . pp. 6. ISBN 0-89871-428-1.
  13. ^ abc Cocke, John; Markstein, Victoria (enero de 1990). "La evolución de la tecnología RISC en IBM" (PDF) . IBM Journal of Research and Development . 34 (1): 4–11. doi :10.1147/rd.341.0004.
  14. ^ Resumen del sistema IBM System/370 (informe técnico). IBM. Enero de 1987.
  15. ^ Šilc, Jurij; Robič, Borut; Ungerer, Theo (1999). Arquitectura de procesador: del flujo de datos al superescalar y más allá . Saltador. págs.33. ISBN 3-540-64798-8.
  16. ^ abcdef Financiando una revolución: Apoyo gubernamental a la investigación informática por el Comité de Innovaciones en Computación y Comunicaciones 1999 ISBN 0-309-06278-0 página 239 
  17. ^ Nurmi, Jari (2007). Diseño de procesadores: computación en chip para ASIC y FPGA . Springer. pp. 40–43. ISBN 978-1-4020-5529-4.
  18. ^ Hill, Mark Donald; Jouppi, Norman Paul ; Sohi, Gurindar (1999). Lecturas sobre arquitectura informática . Gulf Professional. págs. 252-254. ISBN 1-55860-539-8.
  19. ^ Starnes, Thomas (mayo de 1983). "Filosofía de diseño detrás del MC68000 de Motorola". Byte . p. Foto 1.
  20. ^ Patterson, David (30 de mayo de 2018). "Historia de RISCy". AM SIGARCH .
  21. ^ abc «Ejemplo: Berkeley RISC II». Archivado desde el original el 13 de junio de 2022.
  22. ^ abcdefghij Patterson, David A.; Lentejuela, Carlo H. (1981). RISC I: Un computador VLSI con conjunto de instrucciones reducido. 8.º simposio anual sobre arquitectura informática. Minneapolis, MN, EE. UU., págs. 443–457. doi :10.1145/285930.285981.En formato PDF
  23. ^ ab Patterson, DA ; Ditzel, DR (1980). "El caso de la computadora con conjunto de instrucciones reducido". ACM SIGARCH Computer Architecture News . 8 (6): 25–33. CiteSeerX 10.1.1.68.9623 . doi :10.1145/641914.641917. S2CID  12034303. 
  24. ^ Sequin, Carlo; Patterson, David (julio de 1982). Diseño e implementación de RISC I (PDF) . Curso avanzado sobre arquitectura VLSI. Universidad de Bristol. CSD-82-106.
  25. ^ abcd Chow, Paul (1989). El microprocesador MIPS-X RISC . Springer. págs. xix–xx. ISBN. 0-7923-9045-8.
  26. ^ desde Nurmi 2007, págs. 52-53
  27. ^ Weaver, Vincent; McKee, Sally. Preocupaciones sobre la densidad de código para las nuevas arquitecturas (PDF) . ICCD 2009.
  28. ^ Waterman, Andrew; Lee, Yunsup; Patterson, David A.; Asanovi, Krste. "El manual del conjunto de instrucciones RISC-V, volumen I: versión ISA de nivel de usuario base 2.0". Universidad de California, Berkeley. Informe técnico EECS-2014-54 . Consultado el 1 de marzo de 2022 .
  29. ^ Garnsey, Elizabeth; Lorenzoni, Gianni; Ferriani, Simone (marzo de 2008). "Speciation through entrepreneurial spin-off: The Acorn-ARM story" (PDF) . Política de investigación . 37 (2): 210–224. doi :10.1016/j.respol.2007.11.006. S2CID  73520408 . Consultado el 2 de junio de 2011 . [...] el primer silicio se ejecutó el 26 de abril de 1985.
  30. ^ Tucker, Allen B. (2004). Manual de informática . Taylor & Francis. Págs. 100-106. ISBN. 1-58488-360-X.
  31. ^ "Olivetti compra tarjeta RISC". Acorn User . Agosto de 1988. p. 7 . Consultado el 24 de mayo de 2021 .
  32. ^ "Arm busca crecer más allá de los teléfonos inteligentes". www.ft.com . Consultado el 23 de junio de 2024 .
  33. ^ Slater, Michael (junio de 1990). "¿Qué es RISC?". IEEE Micro . pp. 96–95 . Consultado el 20 de marzo de 2023 .
  34. ^ Esponda, Margarita; Rojas, Ra'úl (septiembre de 1991). "Sección 2: La confusión en torno al concepto RISC". El concepto RISC: un estudio de las implementaciones . Universidad Libre de Berlín. B-91-12.
  35. ^ Stokes, Jon "Hannibal". "RISC vs. CISC: la era post-RISC". Ars Technica .
  36. ^ Borrett, Lloyd (junio de 1991). "RISC versus CISC". Computadora personal australiana .
  37. ^ Jones, Douglas W. "Preguntas frecuentes sobre el DEC PDP-8 de Doug Jones". Colección PDP-8, Departamento de Ciencias de la Computación de la Universidad de Iowa .
  38. ^ Dandamudi, Sivarama P. (2005). "Cap. 3: Principios RISC". Guía de procesadores RISC para programadores e ingenieros . Springer. págs. 39–44. doi :10.1007/0-387-27446-4_3. ISBN. 978-0-387-21017-9.el objetivo principal no era reducir el número de instrucciones, sino la complejidad
  39. ^ Walls, Colin (18 de abril de 2016). "CISC y RISC".
  40. ^ Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). Computación integrada: un enfoque VLIW para la arquitectura, los compiladores y las herramientas. Elsevier. pág. 57. ISBN 9781558607668.
  41. ^ Alexander, W. Gregg; Wortman, David (noviembre de 1975). "Características estáticas y dinámicas de los programas XPL". IEEE Computer . 8 (11): 41–48. doi :10.1109/CM.1975.218804. S2CID  39685209.
  42. ^ Soares, João; Rocha, Ricardo. "Codificación de instrucciones MIPS" (PDF) .
  43. ^ Staff, Embedded (24 de septiembre de 2003). «Conjunto de instrucciones ARM Thumb». Embedded.com . Consultado el 23 de junio de 2024 .
  44. ^ Colwell, Robert P.; Hitchcock III, Charles Y.; Jensen, E. Douglas; Sprunt, HM Brinkley; Kollar, Charles P. (septiembre de 1985). "Conjuntos de instrucciones y más allá: computadoras, complejidad y controversia". Computadora . 18 (9). The Institute of Electrical and Electronics Engineers, Inc.: 8–19. doi :10.1109/MC.1985.1663000. S2CID  7306378 . Consultado el 25 de marzo de 2023 .
  45. ^ "Microprocesadores desde la perspectiva del programador" por Andrew Schulman 1990
  46. ^ Sweetman, Dominic (1987). "The RISC Workstation". Actas de la conferencia celebrada en Computer Graphics 87, Londres, octubre de 1987. Publicaciones en línea. págs. 83–91. ISBN 0-86353-092-3. Recuperado el 26 de marzo de 2024 .
  47. ^ Dowd, Kevin; Loukides, Michael K. (1993). Computación de alto rendimiento. O'Reilly. ISBN 1565920325.
  48. ^ Vincent, James (9 de marzo de 2017). «Microsoft presenta nuevos diseños de servidores ARM que amenazan el dominio de Intel». The Verge . Consultado el 12 de mayo de 2017 .
  49. ^ Russell, John (31 de mayo de 2016). "Cavium revela planes para ThunderX2 y reporta que la tracción de ARM está creciendo". HPC Wire . Consultado el 8 de marzo de 2017 .
  50. ^ El primer procesador basado en ARM de AMD, el Opteron A1100, finalmente está aquí, ExtremeTech, 14 de enero de 2016 , consultado el 14 de agosto de 2016
  51. ^ Feldman, Michael (18 de enero de 2017). "Cray entregará una supercomputadora impulsada por ARM a un consorcio del Reino Unido". Top500.org . Consultado el 12 de mayo de 2017 .
  52. ^ "Microsoft está llevando las aplicaciones de escritorio de Windows a los procesadores ARM móviles". The Verge . 8 de diciembre de 2016 . Consultado el 8 de diciembre de 2016 .
  53. ^ "Cómo funciona la emulación x86 en ARM". Microsoft Docs . 23 de octubre de 2023 . Consultado el 27 de octubre de 2023 .
  54. ^ ab "Presentamos la próxima generación de Mac" (Nota de prensa). Apple Inc. 10 de noviembre de 2020.
  55. ^ "macOS Big Sur ya está aquí" (Nota de prensa). Apple Inc. 12 de noviembre de 2020.
  56. ^ Carter, Nicholas P. (2002). Esquema de arquitectura informática de Schaum. McGraw Hill Professional. pág. 96. ISBN 0-07-136207-X.
  57. ^ Jones, Douglas L. (2000). "Microprocesadores CISC, RISC y DSP" (PDF) .
  58. ^ Singh, Amit. "Una historia de los sistemas operativos de Apple". Archivado desde el original el 3 de abril de 2020. La línea entre RISC y CISC se ha vuelto más difusa con el paso de los años.
  59. ^ "Top 500 The List: noviembre de 2020". TOP 500 . Consultado el 2 de enero de 2021 .
  60. ^ Dandamudi 2005, págs. 121-123
  61. ^ Bennett, Amy (2005). «Apple cambia de PowerPC a Intel». Computerworld . Archivado desde el original el 13 de noviembre de 2020. Consultado el 24 de agosto de 2020 .
  62. ^ Vaughan-Nichols, Steven J. "Reseña: La Chromebook Samsung con ARM". ZDNet . Consultado el 28 de abril de 2021 .
  63. ^ DeAngelis, Marc (22 de junio de 2020). "Apple inicia su transición de dos años a ARM esta semana". Engadget . Consultado el 24 de agosto de 2020 . Apple ha anunciado oficialmente que cambiará los procesadores Intel por sus propios chips de la serie A basados ​​en ARM en sus ordenadores Mac.
  64. ^ Smith, Chris (16 de septiembre de 2020). «Microsoft lanzará una nueva Surface basada en ARM este otoño». Boy Genius Report . Consultado el 20 de marzo de 2023 .
  65. ^ "Procesador ARM - Procesador AWS Graviton - AWS". Amazon Web Services, Inc. Consultado el 9 de enero de 2024 .
  66. ^ "La computación ondulatoria cierra el programa abierto MIPS con efecto inmediato". AB Open . 15 de noviembre de 2019 . Consultado el 23 de junio de 2024 .
  67. ^ "Directrices de marca – RISC-V International" . Consultado el 23 de junio de 2024 .
  68. ^ "Arm amplía las posibilidades de diseño con procesadores Cortex-M gratuitos para FPGAs Xilinx". Sala de prensa de Arm . Consultado el 23 de junio de 2024 .
  69. ^ "Destinatarios del Premio Charles Stark Draper de Ingeniería". nae.edu .
  70. ^ "Premio Charles Stark Draper de Ingeniería". nae.edu .

Enlaces externos