stringtranslate.com

Grupo reducido de instrucciones para computadoras

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

En informática , una computadora con conjunto de instrucciones reducido ( RISC ) es una arquitectura de computadora diseñada para simplificar las instrucciones individuales dadas 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 implementando una canalización de instrucciones , que puede ser más sencilla 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 generalmente tiene muchos (16 o 32) registros de propósito general de alta velocidad con una arquitectura de carga y almacenamiento en la que el código para las instrucciones registro-registro (para realizar aritmética y pruebas) están separados de las instrucciones que otorgan acceso. a la memoria principal del ordenador. 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 la década de 1970, pero no se pusieron en uso de inmediato. Los diseñadores de California adoptaron los conceptos 801 en dos proyectos fundamentales, Stanford MIPS y Berkeley RISC . Estos se comercializaron en la década de 1980 como 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 maduraron, muchos diseños similares, producidos a finales de los 80 y principios de los 90, 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.

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

Las variedades de diseño de procesador RISC incluyen el procesador ARC , DEC Alpha , AMD Am29000 , la arquitectura ARM , 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 la Fugaku . [8]

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 y almacenamiento . [9] El término RISC fue acuñado por David Patterson del proyecto RISC de Berkeley , aunque antes habían aparecido conceptos algo similares. [10]

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

IBM 801

Un microprocesador IBM PowerPC 601 RISC

Michael J. Flynn ve el primer sistema RISC como 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 usarlo como Base para un conmutador telefónico digital . Para alcanzar su objetivo de atender 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 funcionó 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 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 ortogonales. 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 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 adaptado para utilizar registros siempre que fuera posible ejecutaría código aproximadamente tres veces más rápido que los diseños tradicionales. Sorprendentemente, el mismo código se ejecutaría aproximadamente un 50% más rápido incluso en máquinas existentes debido al uso mejorado de los registros. En la práctica, su compilador experimental PL/8, una versión ligeramente reducida de PL/I , producía constantemente código que se ejecutaba mucho más rápido en sus mainframes existentes. [13]

Finalmente se produjo una versión de 32 bits del 801 en forma de un solo chip como IBM ROMP en 1981, que significaba "Microprocesador OPD de investigación [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 canales en computadoras IBM posteriores. También se utilizó como CPU en la PC IBM RT 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 algunos en IBM que eventualmente conducirían a la arquitectura IBM POWER . [17] [18]

RISC y MIPS

A finales de la década de 1970, el 801 se había hecho muy conocido en la industria. Esto coincidió con 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 utilizaron 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, leía instrucciones y las volvía a implementar como una secuencia de instrucciones internas más simples. En el 68k, se utilizó 13 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. A Patterson le sorprendió la complejidad del proceso de codificación y concluyó que era insostenible. [20] 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 financiación del programa DARPA VLSI , Patterson inició el esfuerzo RISC de Berkeley . El Programa, prácticamente desconocido en la actualidad, propició una gran cantidad de avances en el diseño, la fabricación de chips e incluso en los gráficos por 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 "más es mejor"; incluso aquellas instrucciones que eran críticas para el rendimiento general se retrasaban debido a su recorrido 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 ninguna razón por la que el compilador no pudiera hacer esto. Estos estudios sugirieron que, incluso sin otros cambios, se podría fabricar un chip con 1⁄3 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 al tiempo que reduce el tamaño del chip. [22]

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; sólo se optimizaron las que se usaban con mayor frecuencia, y una secuencia de esas instrucciones podría ser más rápida que una instrucción menos sintonizada que realizara una operación equivalente a esa secuencia. Un ejemplo infame fue la instrucción del VAXINDEX . [23]

El trabajo de Berkeley también arrojó 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 puede mejorar significativamente el rendimiento de las subrutinas, aunque a costa de cierta complejidad. [22] También notaron que la mayoría de las instrucciones matemáticas eran tareas simples; sólo 13 de ellos realmente realizó una operación como suma o resta. Pero cuando esas operaciones ocurrieron, tendieron a ser lentas. Esto llevó a poner mucho más énfasis en la unidad de datos aritméticos subyacente, a diferencia de diseños anteriores donde 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 el 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 registros, hay una gran cantidad de registros, por ejemplo, 128, pero los programas sólo pueden utilizar un pequeño número de ellos, por ejemplo, ocho, a la vez. Un programa que se limita a ocho registros por procedimiento puede realizar llamadas a procedimientos muy rápidas : la llamada simplemente mueve la ventana "hacia abajo" ocho, hasta el conjunto de ocho registros utilizados por ese procedimiento, y el retorno mueve la ventana hacia atrás. [24] El proyecto RISC de Berkeley entregó el procesador RISC-I en 1982. Con sólo 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ó completamente a cualquier otro. otro diseño de un solo chip, con un rendimiento estimado superior al del VAX. [22] Siguieron esto con el RISC-II de 40,760 transistores y 39 instrucciones en 1983, que funcionó tres veces más rápido que RISC-I. [22]

Cuando el proyecto RISC comenzó a ser conocido en Silicon Valley , en 1981 comenzó un proyecto similar en la Universidad de Stanford . Este proyecto MIPS surgió de un curso de posgrado impartido por John L. Hennessy , produjo un sistema funcional en 1983 y podía ejecutar programas simples mediante 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 "lleno" posible. [25] Al sistema MIPS le siguió 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]

ruptura comercial

Chip prototipo RISC-V (2013)

A principios de la década de 1980, importantes incertidumbres rodeaban el concepto RISC. Una preocupación involucraba el uso de la memoria; una sola instrucción de un procesador tradicional como el Motorola 68k puede escribirse como quizás media docena de instrucciones RISC más simples. En teoría, esto podría ralentizar el sistema, ya que dedica más tiempo a buscar 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. [16] [25]

Los diseños comerciales de RISC comenzaron a surgir a mediados de los años 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. [16] Mientras tanto, el esfuerzo de Berkeley se había vuelto tan conocido que eventualmente 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] [28] El Comité de Innovaciones en Computación y Comunicaciones del gobierno de 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. [dieciséis]

A finales 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 ellos se encontraban DEC Alpha , AMD Am29000 , Intel i860 e i960 , Motorola 88000 , IBM POWER y, un poco más tarde, IBM/Apple/Motorola PowerPC . Desde entonces, muchos de ellos han desaparecido debido a que a menudo no ofrecen ninguna ventaja competitiva sobre otros de la misma época. Los que quedan a menudo se utilizan sólo en nichos de mercado o como parte de otros sistemas; De los diseños de estos proveedores tradicionales, sólo SPARC y POWER tienen un mercado restante significativo. [ cita necesaria ]

La arquitectura ARM es ilustrativa de las adaptaciones realizadas por los proveedores de RISC para responder a las cambiantes circunstancias competitivas, ya que se introdujo por primera vez para ofrecer un mayor rendimiento en computadoras de escritorio como Acorn Archimedes , pero también se introdujo en aplicaciones integradas como el procesamiento de imágenes rasterizadas de impresoras láser. [29] ARM, en asociación 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. [ se necesita aclaración ]

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, se ha estado desarrollando una nueva arquitectura de conjunto de instrucciones (ISA) de código abierto , RISC-V , 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 corrigió la versión 2 del espacio de usuario ISA. [30] El ISA está diseñado para ser extensible desde un núcleo básico 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 SoC ROCKET , 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.

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, llevó 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 del microprocesador [31]

Filosofía del conjunto de instrucciones

Un malentendido común de la frase "computadora 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. [32] De hecho, a lo largo 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. [33] [34] 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 implican múltiples accesos a la memoria) tiene solo 8 instrucciones básicas y algunas instrucciones extendidas. [35] El término "reducido" en esa frase pretendía describir el hecho de que la cantidad de trabajo que realiza cualquier instrucción individual se reduce (como máximo un único 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. [36]

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

Otra forma de ver el debate RISC/CISC es considerar lo que está expuesto 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 lleva al backronym 'Relegate Interesting Stuff to the Compiler'. [37] [38]

Formato de instrucción

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]

Algo de esto sólo es posible gracias al paso contemporáneo 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% cabrá en un byte y el 99% en un valor de 16 bits. [39] Cuando las computadoras se basaban en palabras de 8 o 16 bits, sería difícil tener un inmediato combinado con el código de operación en una sola palabra de memoria, aunque ciertas instrucciones como incremento y decremento lo hacían implícitamente usando un código de operación diferente. Por el contrario, una máquina de 32 bits tiene amplio espacio para codificar un valor inmediato y, al hacerlo, se 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. [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 uno 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 sistemas de varias 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 lograr 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 un indicador 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 13 siguientes contienen un valor inmediato o usa 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 sólo 6 bits para el código de operación, seguidos 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 desplazamiento de 5 bits (usado 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 usaron un valor inmediato usaron el campo de código de operación normal al frente. [40]

Una desventaja 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 fueron diseñadas originalmente las arquitecturas RISC. Para abordar este problema, varias arquitecturas, como ARM , Power ISA , MIPS , RISC-V y Adapteva Epiphany , tienen un conjunto de instrucciones comprimidas cortas y con funciones reducidas opcionales . Generalmente, estas instrucciones exponen una cantidad menor de registros y menos bits para valores inmediatos y, a menudo, utilizan 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 ha evolucionado en la dirección opuesta, añadiendo instrucciones más largas de 32 bits a una codificación original de 16 bits.

Utilización de hardware

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

Otras características de las arquitecturas RISC incluyen:

También es más probable que los diseños 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 modificar 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 caché de instrucciones y datos separada ), 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 de RISC también compartían la característica de tener una ranura de retardo de rama , un espacio de instrucciones inmediatamente después de un salto o rama. La instrucción en este espacio se ejecuta, se realice 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 retardo de rama se considera un efecto secundario desafortunado de una estrategia particular para implementar algunos diseños RISC, y los diseños RISC modernos generalmente la eliminan (como PowerPC y versiones más recientes de SPARC y MIPS). [ cita necesaria ]

Algunos aspectos atribuidos a los primeros diseños etiquetados con RISC alrededor de 1975 incluyen las observaciones de que los compiladores de la época, con memoria restringida, a menudo no podían aprovechar las características destinadas a facilitar la codificación manual en ensamblaje, y que los modos de direccionamiento complejos requieren muchos ciclos para ejecutarse debido. a los accesos a memoria adicionales requeridos. Fue argumentado [ ¿por quién? ] que tales funciones se realizarían mejor mediante secuencias de instrucciones más simples si esto pudiera generar 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 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 permiten frecuencias de reloj más altas .

Otro impulso más de RISC y otros diseños provino de mediciones prácticas en programas del mundo real. Andrew Tanenbaum resumió muchos de ellos y demostró que los procesadores a menudo tenían elementos inmediatos de gran tamaño. Por ejemplo, demostró que el 98% de todas las constantes de un programa cabrían en 13 bits , aunque muchos diseños de CPU dedicaban 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 estén listas inmediatamente cuando la CPU las necesite (muy parecido al direccionamiento inmediato en un diseño convencional). . Esto requirió 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 esas operaciones lo más rápido posible. La velocidad 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. [42] El enfoque en "instrucciones reducidas" llevó a que la máquina resultante se llamara "computadora con conjunto de instrucciones reducido" (RISC). El objetivo era hacer que las instrucciones fueran tan simples que pudieran canalizarse fácilmente para lograr un rendimiento de reloj único en altas frecuencias .

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 de carga o almacenamiento . Todas las demás instrucciones se limitaron a los registros internos. Esto simplificó muchos aspectos del diseño del procesador: permitir que las instrucciones tuvieran una longitud fija, simplificar las canalizaciones y aislar la lógica para lidiar con el retraso 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 denominaran arquitecturas de almacenamiento de carga . [43]

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 han dado otros nombres, como computadora con conjunto mínimo de instrucciones (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. [44] Fabricantes como Cavium , AMD y Qualcomm han lanzado procesadores de servidor basados ​​en la arquitectura ARM. [45] [46] ARM se asoció además con Cray en 2017 para producir una supercomputadora basada en ARM. [47] 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 . [48] ​​[49] Apple anunció que realizará 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. [50] Las Mac con silicio de Apple pueden ejecutar archivos binarios x86-64 con Rosetta 2 , un traductor de x86-64 a ARM64. [51]

Sin embargo, fuera del ámbito de las computadoras de escritorio, la arquitectura ARM RISC se usa 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 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. [52] [53] [54]

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 en noviembre de 2020 , y Summit , Sierra y Sunway TaihuLight , las tres siguientes. en esa lista. [55]

Sistemas móviles y de gama baja

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

Computadoras de escritorio y portátiles

Estaciones de trabajo, servidores y supercomputadoras

Fuente abierta

Las arquitecturas RISC se han vuelto populares en procesadores de código abierto y microprocesadores de software porque son relativamente simples de implementar, lo que las hace adecuadas para implementaciones y prototipos de FPGA , por ejemplo. 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 computadoras con conjuntos de instrucciones reducidos. (RISC) chips. [62] [63]

Ver también

Referencias

  1. ^ Chen, cristal; Novick, Greg; Shimano, Kirk. "Tubería". Arquitectura RISC .
  2. ^ ab Flynn, Michael J. (1995). Arquitectura informática: diseño de procesadores canalizados y paralelos . Aprendizaje de Jones y Bartlett. págs. 54–56. ISBN 0867202041.
  3. ^ Colwell, Robert P.; Hitchcock III, Carlos Y.; Jensen, E.Douglas; Sprun, HM Brinkley; Kollar, Charles P. (septiembre de 1985). "Conjuntos de instrucciones y más: computadoras, complejidad y controversia" (PDF) . Computadora . IEEE. págs. 8-19.
  4. ^ Aletan, Samuel O. (1 de abril de 1992). "Una descripción general de la arquitectura RISC". Actas del Simposio ACM/SIGAPP de 1992 sobre informática aplicada: desafíos tecnológicos de la década de 1990 . SACO '92. Kansas City, Missouri: Asociación de Maquinaria de Computación . 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: la búsqueda frenética de más velocidad" (PDF) . Electrónica . McGraw-Hill. págs. 59–62.
  8. ^ "La japonesa Fugaku gana el título de supercomputadora más rápida del mundo". RIKEN . Consultado el 24 de junio de 2020 .
  9. ^ Pescador, José A.; Faraboschi, Paolo; Joven, acantilado (2005). Computación integrada: un enfoque VLIW para arquitectura, compiladores y herramientas . Elsevier. pag. 55.ISBN _ 1558607668.
  10. ^ Reilly, Edwin D. (2003). Hitos en informática y tecnologías de la información . Publicación de Greenwood. págs.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 . Prensa algorítmica. pag. 12. OCLC  425963232.
  12. ^ Dongarra, Jack J.; et al. (1987). Álgebra lineal numérica en computadoras de alto rendimiento . págs.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) . Revista IBM de investigación y desarrollo . 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 Financiamiento de una revolución: apoyo gubernamental a la investigación en informática por parte del Comité de Innovaciones en Computación y Comunicaciones 1999 ISBN 0-309-06278-0 página 239 
  17. ^ Nurmi, Jari (2007). Diseño de procesador: computación de sistema en chip para ASIC y FPGA . Saltador. págs. 40–43. ISBN 978-1-4020-5529-4.
  18. ^ Colina, Mark Donald; Jouppi, Norman Paul ; Sohi, Gurindar (1999). Lecturas en arquitectura de ordenadores . Profesional del Golfo. págs. 252–4. ISBN 1-55860-539-8.
  19. ^ Starnes, Thomas (mayo de 1983). "Filosofía de diseño detrás del MC68000 de Motorola". Byte . pag. Foto 1.
  20. ^ Patterson, David (30 de mayo de 2018). "Historia RISCy". SOY 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: una computadora VLSI con conjunto de instrucciones reducido. 8º simposio anual sobre Arquitectura de Computadores. Minneapolis, Minnesota, Estados Unidos. págs. 443–457. doi :10.1145/285930.285981.Como PDF
  23. ^ ab Patterson, DA ; Ditzel, DR (1980). "El caso de la computadora con conjunto de instrucciones reducido". Noticias de arquitectura informática de ACM SIGARCH . 8 (6): 25–33. CiteSeerX 10.1.1.68.9623 . doi :10.1145/641914.641917. S2CID  12034303. 
  24. ^ Lentejuelas, Carlo; Patterson, David (julio de 1982). Diseño e Implementación de RISC I (PDF) . Curso Avanzado de Arquitectura VLSI. Universidad de Bristol. CSD-82-106.
  25. ^ abcd Chow, Paul (1989). El microprocesador MIPS-X RISC . Saltador. págs. xix-xx. ISBN 0-7923-9045-8.
  26. ^ ab Nurmi 2007, págs. 52-53
  27. ^ Tejedor, Vicente; McKee, Sally. Preocupaciones por la densidad del código para nuevas arquitecturas (PDF) . ICCD 2009.
  28. ^ Tucker, Allen B. (2004). Manual de informática . Taylor y Francisco. págs. 100–6. ISBN 1-58488-360-X.
  29. ^ "Olivetti compra tarjeta RISC". Usuario de bellota . Agosto de 1988. p. 7 . Consultado el 24 de mayo de 2021 .
  30. ^ Waterman, Andrés; Lee, Yunsup; Patterson, David A.; Asanovi, Krste. "Manual del conjunto de instrucciones RISC-V, Volumen I: ISA base de nivel de usuario versión 2.0". Universidad de California, Berkeley. Informe Técnico EECS-2014-54 . Consultado el 1 de marzo de 2022 .
  31. ^ Slater, Michael (junio de 1990). "¿Qué es RISC?". Micro IEEE . págs. 96–95 . Consultado el 20 de marzo de 2023 .
  32. ^ 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.
  33. ^ Stokes, Jon "Aníbal". "RISC vs CISC: la era post-RISC". Ars Técnica .
  34. ^ Borrett, Lloyd (junio de 1991). "RISC versus CISC". Computadora personal australiana .
  35. ^ Jones, Douglas W. "Preguntas frecuentes sobre DEC PDP-8 de Doug Jones". Colección PDP-8, Departamento de Ciencias de la Computación de la Universidad de Iowa .
  36. ^ Dandamudi, Sivarama P. (2005). "Capítulo 3: Principios RISC". Guía de procesadores RISC para programadores e ingenieros . Saltador. 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.
  37. ^ Walls, Colin (18 de abril de 2016). "CISC y RISC".
  38. ^ Pescador, José A.; Faraboschi, Paolo; Joven, acantilado (2005). Computación integrada: un enfoque VLIW para arquitectura, compiladores y herramientas. Elsevier. pag. 57.ISBN _ 9781558607668.
  39. ^ Alejandro, W. Gregg; Wortman, David (noviembre de 1975). "Características estáticas y dinámicas de los programas XPL". Computadora IEEE . 8 (11): 41–48. doi :10.1109/CM.1975.218804. S2CID  39685209.
  40. ^ Soares, João; Rocha, Ricardo. "Codificación de instrucciones MIPS" (PDF) .
  41. ^ Colwell, Robert P.; Hitchcock III, Carlos Y.; Jensen, E.Douglas; Sprun, HM Brinkley; Kollar, Charles P. (septiembre de 1985). "Conjuntos de instrucciones y más: computadoras, complejidad y controversia". Computadora . El Instituto de Ingenieros Eléctricos y Electrónicos, Inc. 18 (9): 8–19. doi :10.1109/MC.1985.1663000. S2CID  7306378 . Consultado el 25 de marzo de 2023 .
  42. ^ "Microprocesadores desde la perspectiva del programador" por Andrew Schulman 1990
  43. ^ Dowd, Kevin; Loukides, Michael K. (1993). Computación de alto rendimiento. O'Reilly. ISBN 1565920325.
  44. ^ Vincent, James (9 de marzo de 2017). "Microsoft presenta nuevos diseños de servidores ARM, que amenazan el dominio de Intel". El borde . Consultado el 12 de mayo de 2017 .
  45. ^ Russell, John (31 de mayo de 2016). "Cavium presenta planes ThunderX2 e informa que la tracción ARM está creciendo". Cable HPC . Consultado el 8 de marzo de 2017 .
  46. ^ 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
  47. ^ Feldman, Michael (18 de enero de 2017). "Cray entregará una supercomputadora con tecnología ARM al consorcio del Reino Unido". Top500.org . Consultado el 12 de mayo de 2017 .
  48. ^ "Microsoft está llevando aplicaciones de escritorio de Windows a procesadores ARM móviles". El borde . 8 de diciembre de 2016 . Consultado el 8 de diciembre de 2016 .
  49. ^ "Cómo funciona la emulación x86 en ARM". Documentos de Microsoft . 23 de octubre de 2023 . Consultado el 27 de octubre de 2023 .
  50. ^ ab "Presentación de la próxima generación de Mac" (Presione soltar). Apple Inc. 10 de noviembre de 2020.
  51. ^ "macOS Big Sur ya está aquí" (Presione soltar). Apple Inc. 12 de noviembre de 2020.
  52. ^ Carter, Nicolás P. (2002). Esquema de arquitectura informática de Schaum. Profesional de McGraw Hill. pag. 96.ISBN _ 0-07-136207-X.
  53. ^ Jones, Douglas L. (2000). "Microprocesadores CISC, RISC y DSP" (PDF) .
  54. ^ 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 borrosa a lo largo de los años.
  55. ^ "Top 500 de la lista: noviembre de 2020". TOP 500 . Consultado el 2 de enero de 2021 .
  56. ^ Dandamudi 2005, págs. 121-123
  57. ^ Bennet, Amy (2005). "Apple pasa de PowerPC a Intel". Mundo de la informática . Archivado desde el original el 13 de noviembre de 2020 . Consultado el 24 de agosto de 2020 .
  58. ^ Vaughan-Nichols, Steven J. "Revisión: el Chromebook Samsung con tecnología ARM". ZDNet . Consultado el 28 de abril de 2021 .
  59. ^ DeAngelis, Marc (22 de junio de 2020). "Apple comienza esta semana su transición de dos años a ARM". Engadget . Consultado el 24 de agosto de 2020 . Apple ha anunciado oficialmente que cambiará de procesadores Intel a sus propios chips de la serie A basados ​​en ARM en sus computadoras Mac.
  60. ^ Smith, Chris (16 de septiembre de 2020). "Microsoft lanzará una nueva Surface basada en ARM este otoño". Informe del chico genio . Consultado el 20 de marzo de 2023 .
  61. ^ "Procesador ARM - Procesador AWS Graviton - AWS". Servicios web de Amazon, Inc. Consultado el 9 de enero de 2024 .
  62. ^ "Ganadores del premio Charles Stark Draper de ingeniería". nae.edu .
  63. ^ "Premio Charles Stark Draper de Ingeniería". nae.edu .

enlaces externos