RISC y CISC: diseños opuestos
Como ya se ha mencionado con anterioridad, el MIPS es un microprocesador de tipo RISC: Reduced Instruction Set Computer.
Esta aproximación es totalmente diferente de las arquitecturas tipo CISC (del inglés Complex Instruction Set Computer), basadas en repertorios de instrucciones con repertorios de instrucciones mucho más complicados que se traducen en diseños de la ruta de datos mucho más complejos.
Un poco de historia
Los primeros proyectos RISC surgieron de IBM, Stanford, y UC-Berkeley a finales de los 70 y principios de los 80. El IBM 801, el MIPS de Stanford y los RISC 1 y 2 de Berkeley fueron todos diseñados siguiendo una filosofía similar, la cual ha llegado a ser conocida como RISC. Ciertas características generales de estos diseños se encuentan hoy en día en todos las arquitecturas de tipo RISC.
Figura 1: IBM desarrolla el 801 experimental, basado en la arquitectura RISC desarrollada por el investigador de IBM John Cocke.
Fuente: IBM
RISC vs. CISC
La manera más sencilla de ver las ventajas y desventajas de las arquitecturas RISC, es contrastarlas con su predecesoras: las arquitecturas CISC.
» Multiplicando dos números en memoria
A la derecha puede verse un diagrama que representa el esquema de almacenamiento de un computador genérico. La memoria principal está dividida en emplazamientos numerados desde Fila 1, Columna 1 (1:1) hasta Fila 6, Columna 4 (6:4). La unidad de ejecución es responsable de llevar a cabo todos los cálculos. Sin embargo, la unidad de ejecución sólo puede operar con datos que han sido cargados en alguno de los 6 registros de propósito general existentes (A, B, C, D, E, ó F). Digamos que queremos hallar el producto de 2 números: el primero está almacenado en la posición (2:3) y el otro está en la posición (5:2). Después guardaremos el producto hallado en la posición (2:3) de memoria.
» La filosofía CISC
El objetivo principal de la arquitectura CISC es completar una tarea en el menor número de líneas de código ensamblador posibles. Este
objetivo es conseguido mediante la construcción de un microprocesador capaz de comprender y ejecutar una serie de operaciones complejas.
Para esta
tarea en particular, un procesador CISC vendría preparado con una instrucción específica (la llamaremos "MULT"). Cuando se ejecuta, esta
instrucción lee los dos valores de memoria, multiplica los operandos en la unidad de ejecución, y después almacena el resultado en la posición
de memoria adecuada. De esta manera, la tarea completa de multiplicar dos números puede ser llevada a cabo con una única
instrucción:
MULT (2:3), (5:2)
MULT es lo que se conoce como una "instrucción compleja". Opera directamente sobre los bancos de memoria del computador y no requiere
al programador para llamar explicitamente a una carga de operandos o funciones de almacenamiento. Se parece mucho a un comando en un
lenguaje de programación de alto nivel. Por ejemplo, si permitimos que "a" represente el valor de (2:3) y "b" represente el valor de
(5:2), entonces este comando es idéntico a la expresión en C "a = a * b".
Una de las ventajas principales de esta filosofía es que el compilador tiene que hacer muy poco trabajo para traducir un lenguaje de alto nivel a ensamblador. Además, debido a que la longitud del código es relativamente corta, hace falta poca RAM para almacenar las instrucciones. Pero la difucultad está en construir instrucciones complejas directamente en hardware.
» La filosofía RISC
Los procesadores RISC sólo usan instrucciones sencillas que se puedan ejecutar rápidamente. Por este motivo suelen
ser arquitecturas basadas en registros de propósito general que operan siempre sobre operandos que se encuetran almacenados
en el procesador, cerca de la unidad de eejcución. De esta forma, el comando "MULT" descrito
más arriba podría ser dividido en tres comandos por separado: "LOAD", que mueve datos del banco de memoria a un registro; "PROD", que
halla el producto de dos operandos situados en los registros; y "STORE", que mueve datos de un registro al banco de memoria. Para realizar
la serie de pasos descritos en la filosofía CISC, un programador debería codificar la instrucción en 4 líneas de código ensamblador:
LOAD A, (2:3)
LOAD B, (5:2)
PROD A, B
STORE (2:3), A
A primera vista, puede parecer una manera mucho menos eficiente de completar la operación. Debido a que hay más líneas de código, hace
falta más RAM para almacenar las instrucciones en ensamblador. El compilador debe realizar también más trabajo para convertir un lenguaje
de alto nivel en código.
Sin embargo, la estrategia RISC también tiene grandes ventajas. Debido a que cada instrucción realiza una operación muy simple, el código se ejecutará en aproximadamente el mismo tiempo que el comando "MULT" de la arquitectura CISC. Estas "instrucciones reducidas" RISC requieren menos hardware y más sencillo que las instrucciones complejas, dejando más espacio para registros de propósito general. Además, las optimizaciones sobre un hardware más sencillo son mucho más fáciles de realizar.
RESUMIENDO
» Arquitecturas CISC
- Computador con repertorio de instrucciones complejo.
- Gran número de instrucciones complejas.
- Gran variedad de tipos de datos y de modos de direccionamiento.
- Permite implementar instrucciones de alto nivel directamente o con un número pequeño de instrucciones ensamblador.
- Además se pueden añadir nuevas instrucciones al repertorio manteniendo las antiguas.
» Arquitecturas RISC
- Computador con repertorio de instrucciones reducido.
- Pocas instrucciones y muy básicas.
- Repertorio simple y ortogonal.
- Formatos de instrucción uniformes.
- Pocos tipos de datos y de modos de direccionamiento, siempre los más sencillos.
» Para ampliar esta información, puedes visitar...
-
RISC vs. CISC: the Post-RISC Era (en inglés)
El mejor artículo que puede consultarse acerca de los procesadores RISC y CISC, así como la comparación entre ellos. Presentado por el sitio web Ars Technica - The PC enthusiast's Resource.
LECTURA MUY RECOMENDABLE - RISC, Reduced Instruction Set Computer
Architecture
Wikipedia, la enciclopedia libre, lleva a cabo un exhaustivo informe sobre los microprocesadores de tipo RISC. - The RISC Concept -
A Survey of Implementations (en inglés)
Interesante artículo acerca de la arquitectura RISC en el cual se hace una descripción jerárquica, haciendo incapié en las características esenciales de este paradigma arquitectónico.
