Está en la página 1de 24

RISC / CISC

Esteban Osses Anguita


eossesa@inf.udec.cl
20 de septiembre de 2001
Resumen
El desarrollo de las tecnologas de los procesadores a nes de los
a nos 70, se caracterizo por un fuerte enfasis en la mejora de las pres-
taciones del hardware hacia el software. Especial interes representaba
en aquel momento el desarrollo de compiladores capaces de generar
programas ecientes.
En un mundo computacional de arquitecturas propietarias, donde
cada maquina era un universo completamente diferente, surge un in-
tento de clasicar lo que se estaba haciendo, tpicamente CISC, con
algunas variantes, y una contrapropuesta, conocida como RISC.
Este trabajo pretende hacer una revision de algunos aspectos de
cada una de estas dos losofas, as como presentar parte de la discusion
a la que estas propuestas han llevado a lo largo de los a nos.

Indice General
1 Introduccion 1
1.1 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Compiladores y Ensambladores . . . . . . . . . . . . . . . . . 1
1.3 VLSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Necesidad de Mejoras . . . . . . . . . . . . . . . . . . . . . . 2
2 Arquitectura CISC 3
2.1 . . . y la Crisis del Software . . . . . . . . . . . . . . . . . . . . 3
2.2 Arquitectura de Computador basada en un Lenguaje de Alto
Nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Instrucciones Complejas . . . . . . . . . . . . . . . . . . . . . 4
2.4 Direccionamiento de Datos . . . . . . . . . . . . . . . . . . . 5
2.5 Implementacion del Set de Instrucciones . . . . . . . . . . . . 7
2.6 entonces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7 . . . nuevamente la crisis . . . . . . . . . . . . . . . . . . . . . . 9
3 Arquitectura RISC 9
3.1 El Origen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 La Contrapropuesta: Lo que Todo RISC debe tener . . . . . 10
3.3 La Ventana de Registros . . . . . . . . . . . . . . . . . . . . . 11
3.4 Vuelta Atras?. Nuevo rol del Compilador . . . . . . . . . . . 12
3.5 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 RISC vs. CISC: Conclusiones 13
4.1 Propaganda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Un caso de estudio: VAX 8700 vs MIPS M/2000 . . . . . . . 16
4.2.1 Similitudes . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2 Diferencias . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Comparaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 El Mercado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Indice de Figuras
1 Modelo de Procesador Basico . . . . . . . . . . . . . . . . . . 3
2 Maquina - Registros - Memoria . . . . . . . . . . . . . . . . . 6
3 Implementacion de Microcodigo . . . . . . . . . . . . . . . . . 8
4 Patterson-Sequin: Porcentaje dinamico de los operandos en
C y Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Patterson-Sequin: Frecuencia Relativa de las operaciones en
C y Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Modelo de Ventana de Registros en un Procesador RISC . . . 12
7 El Mundo de RISC . . . . . . . . . . . . . . . . . . . . . . . . 16
8 Pipeline de la VAX 8700 y el MIPS M/2000 . . . . . . . . . . 17
9 VAX 8700 vs VAX 9000 . . . . . . . . . . . . . . . . . . . . . 19

Indice de Tablas
1 Lenguaje de Alto Nivel (HLL) y Assembly no CISC . . . . . . 5
2 Lenguaje de Alto Nivel (HLL) y Assembly CISC . . . . . . . . 5
3 Operacion de Multiplicacion cargando a registros los datos
existentes en la memoria . . . . . . . . . . . . . . . . . . . . . 6
4 Operacion de Multiplicacion operando directamente sobre los
datos existentes en la memoria . . . . . . . . . . . . . . . . . 7
5 Comparacion de las estrategias RISC y CISC . . . . . . . . . 14
6 Algunos Parametros de Implementacion de la VAX 8700 y
MIPS M/2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1 Introduccion
Si fuera necesario describir en una palabra como eran los sistemas computa-
cionales hace 25 a nos atras, esta palabra sera lento. Una lentitud que puede
resultar poco comprensible para alguien que solo conoce computadores re-
lativamente modernos, digamos maquinas de proposito general posteriores
a los 90, con costos de mantencion ridculamente peque nos comparados a
los que existan en los 70. Es por eso que la discusion RISC vs CISC debe
centrarse en el contexto existente en los a nos 70, pues la problematica era
radicalmente diferente.
1.1 Memoria
El almacenamiento en memoria RAM poda ser descrito facilmente con una
palabra: Caro. De hecho, un chip de memoria de 1MB tena un costo
cercano a los US$5.000, hacia 1977. Por supuesto, un costo de esta magnitud
desincentivaba la compra de estos componentes, por lo que los programas en
ejecucion se almacenaban parcialmente en la memoria principal y el resto,
mediante sistemas de paginacion, en dispositivos de memoria secundaria,
tpicamente dispositivos magneticos demasiado lentos. Esto lleva facilmente
a la siguiente conclusion:
Un buen programa debe tener un codigo muy compacto, de ma-
nera tal que se evite el intercambio de paginas.
El uso de programas compactos traa un efecto secundario bastante fa-
vorable, pues se reducan parcialmente los requerimientos de memoria para
el sistema computacional, lo que representaba un alto porcentaje del costo
de todo el sistema.
1.2 Compiladores y Ensambladores
El proceso de compilacion tiene un objetivo muy claro: traducir los algorit-
mos escritos en un lenguaje de alto nivel, al lenguaje de maquina del sistema
en que va a ser ejecutado. Esto se lograba en dos etapas:
1. Una traduccion desde el lenguaje de alto nivel al lenguaje Assembly
de la maquina.
2. Ensamblar el codigo assembly, es decir, transformarlo a codigo en len-
guaje de maquina.
1
La segunda etapa no representaba problemas, pues las instrucciones en
assembly son (tpicamente) equivalentes uno a uno con las instrucciones
en lenguaje de maquina. El problema estaba en la primera etapa, pues
la traduccion desde el lenguaje de alto nivel era una traduccion generica,
es decir, se traduce una instruccion o un conjunto peque no de instruccio-
nes en el lenguaje de alto nivel a un conjunto de instrucciones en assembly,
validas para cualquier programa, y por lo mismo, no aprovechaban las carac-
tersticas propias del problema que se estaba modelando en cada programa.
Por lo mismo, el codigo assembly generado estaba lleno de instrucciones que
podran haberse evitado con una compilacion mas inteligente.
Esta ultima solucion, optimizar el codigo generado, y que parece la mas
obvia en estos tiempos, era una alternativa rapidamente descartada, consi-
derando el tiempo que tomaba la compilacion de un programa. Luego,
La mejor forma de obtener un codigo compacto no es progra-
mando en un lenguaje de alto nivel, sino que programando di-
rectamente en assembly.
1.3 VLSI
Las CPU de la epoca tenan sus componentes distribudos en varios procesa-
dores. Esto traa consigo la una baja del rendimiento derivado de la lentitud
de las transferencias de datos entre los distintos componentes de una CPU.
El surgimiento de las arquitecturas VLSI (Very Large Scale Integration)
representan la posibilidad de mejorar esta situacion, al permitir la integra-
cion de un n umero muy alto de transistores en un procesador. Este hecho
representara un incremento inmediato de las velocidades de procesamiento,
al disminuir el tiempo de las transferencias de datos entre subcomponentes
de una CPU.
1.4 Necesidad de Mejoras
Para un sistema con un procesador como el que se muestra en la gura 1
es posible introducir una serie de mejoras que contribuyan a incrementar
su rendimiento. Una primera mejora bien podra ser considerada la intro-
duccion de mecanismos de Memoria Cache entre la memoria principal y el
procesador. Otra posibilidad de mejora del rendimiento de este un sistema se
encuentra en mejorar el acceso a los perifericos, lo que se ha hecho mediante
tecnicas como Memory Mapped I/O y Procesadores de entrada/salida.
Sin embargo, lo que mas mejorara el rendimiento de un sistema sera in-
crementar la velocidad del procesador. Las distintas decisiones que habran
2
Figura 1: Modelo de Procesador Basico
de tomarse para introducir mejoras y los distintos compromisos que cada
una de estas decisiones trae consigo determino la bifurcacion del desarrollo
de arquitecturas de procesadores en dos grandes lneas, RISC y CISC.
2 Arquitectura CISC
Vale la pena considerar que CISC no representa una propuesta de arqui-
tectura de procesador en el sentido usual. CISC reeja la forma en que se
desarrollaban y las mejoras que se haban introducido a las arquitecturas
de procesadores hasta, mas o menos, 1975. CISC, el Computador con un
Conjunto Complejo de Instrucciones (Complex Instruction Set Computer),
representa el nombre la corriente principal desarrollada en arquitectura de
computadores y, quizas, podramos entender que es el nombre que se dio a
la tendencia a la cual el movimiento RISC se opona.
2.1 . . . y la Crisis del Software
Durante los a nos 70 se produce el fenomeno conocido como la Crisis del
Software, los costos del software suban considerablemente, frente a costos de
hardware que se hacan cada vez mas accesibles
1
. Frente a esta problematica,
la respuesta de la comunidad podra plantearse de la siguiente forma:
Si una funcion es de uso recurrente, por que no implementarla
en Hardware?
1
Relativamente accesibles.
3
Una propuesta para nada irracional, considerando que el hardware era
un recurso cada vez mas barato frente al costo de la horaprogramador.
2.2 Arquitectura de Computador basada en un Lenguaje de
Alto Nivel
Resulta interesante el hecho de que la implementacion en hardware de fun-
cionalidades de alto nivel disminuye la distancia entre la maquina y el cons-
tructor de compiladores, que se da cuenta de que su labor cambia. Desde un
tener que implementar los comandos mas basicos del lenguaje de alto nivel
utilizando assembly, a encontrarse con que complejas funciones de alto nivel
ya pueden ser realizadas por el hardware; que el mapeamiento que estaba
acostumbrado a hacer de una instruccion a muchas se ha transformado en
uno-a-uno.
Esto es lo que se llamo HLLCA, Arquitectura de Computador basada en
un Lenguaje de Alto Nivel (High Level Language Computing Architechtu-
re), donde parecera no existir diferencia entre un programa en el assembly
de una maquina y un programa en un lenguaje como C. Esta arquitectura
representa el concepto de CISC llevado al extremo.
2.3 Instrucciones Complejas
Supongamos, como en [5], la existencia de un lenguaje de alto nivel en un
computador cuyo lenguaje assembly posee al menos las siguientes instruc-
ciones:
MOVER [registro de destino, integer o registro de origen] : toma
un valor, entero o el contenido de otro registro, y lo ubica en el registro
de destino. As, MOVER [D, 5] pondra un n umero 5 en el registro D.
MOVER [D, E] tomara el valor almacenado en el registro E y lo copiara
en D.
MUL [registro de destino, entero o registro multiplicando] : toma
el contenido del registro de destino, lo multiplica por el n umero entero
o el contenido del registro entregado como segundo parametro y pone
el resultado en el registro de destino. As, MUL [D, 70] multiplicara
el contenido de D por 70 y pondra el resultado en D. MUL [D, E] mul-
tiplicara el contenido de D por el contenido de E y pondra el resultado
en D.
Podemos imaginar entonces un lenguaje de alto nivel, al que llamaremos
HLL, inmerso en un sistema en el cual la operacion elevar un n umero a la
4
cuarta potencia es una operacion recurrente. La tabla 1 muestra como sera
la traduccion HLL assembly que se hara en esta maquina.
HLL assembly
A = 20; MOVER [A, 20]
B = CUARTA (A); MUL [A, A]
MUL [A, A]
MOVER [B, A]
Tabla 1: Lenguaje de Alto Nivel (HLL) y Assembly no CISC
El enfoque CISC sugerira la inclusion de una nueva instruccion en este
sistema:
CUARTA [registro de destino, entero o registro base] : toma el el
contenido del entero o registro base y lo eleva a su cuarta potencia,
para luego poner el resultado en el registro de destino. CUARTA [D, E]
toma el valor que hay en E, lo eleva a la cuarta potencia y pone el
resultado en D, y CUARTA [D, 10] obtiene 10
4
y lo almacena en D.
La tabla 2 muestra como debera ser el programa escrito en assembly.
HLL assembly
A = 20; MOVER [A, 20]
B = CUARTA (A); CUARTA [B, A]
Tabla 2: Lenguaje de Alto Nivel (HLL) y Assembly CISC
Por supuesto en una maquina CISC la misma instruccion debera poder
realizarse de las dos formas, siendo ambas igualmente correctas, pero una de
ellas resultara de mas alto nivel, lo que facilitara las tareas de mantencion
y debugging.
2.4 Direccionamiento de Datos
El acceso a los datos en una maquina CISC toma la losofa asociada ini-
cialmente a las instrucciones, es decir, se entiende que se facilita la tarea de
programacion minimizando el uso de instrucciones de bajo nivel, y propor-
cionando instrucciones que sean capaces de hacer el maximo posible.
Podramos entender que en un computador que se corresponde con el
diagrama de la gura 2 se pretende realizar la siguiente operacion en nuestro
HLL:
5
Figura 2: Maquina - Registros - Memoria
X = X * Y
donde la variable X se reere al espacio de memoria en la posicion 2:3,
mientras que la variable Y corresponde a la posicion de memoria 5:2.
X = X * Y
MOVE [A, 2:3]
MOVE [B, 5:2]
MUL [A, B]
MOVE [2:3, A]
Tabla 3: Operacion de Multiplicacion cargando a registros los datos exis-
tentes en la memoria
Lo que se podra haber hecho con una secuencia de instrucciones como
la que aparece en la tabla 3, es decir, cargar en registros los valores que
estaban almacenados en la memoria, luego operar, y nalmente entregar
resultados, para este tipo de operatoria la corriente principal CISC sugera
establecer una operatoria distinta y mucho mas compacta. El enfoque CISC
6
sugerira claramente la incorporacion de una nueva instruccion que sea capaz
de realizar todo esto, es decir, una instruccion de multiplicacion que pueda
operar directamente con los datos en la memoria, como la que aparece en la
tabla 4.
X = X * Y
MUL [2:3, 2:3, 5:2]
Tabla 4: Operacion de Multiplicacion operando directamente sobre los datos
existentes en la memoria
2.5 Implementacion del Set de Instrucciones
No es necesario explicar que mediante este esquema de decision acerca de
cuales deben ser las instrucciones a implementar en una arquitectura, se
produce una explosion en el n umero de estas. Para cada operatoria a reali-
zar, para cada tipo de dato pertinente a la operacion y para cada uno de las
formas de direccionamiento existente en dicha arquitectura probablemente
sera necesario implementar una instruccion.
Es as que esta explosion en el n umero de instrucciones a implementar
en un procesador CISC da origen a una nueva decision:
Ejecucion Directa: Cada una de las instrucciones necesarias se implemen-
ta directamente, mediante transistores, dentro del procesador. Es de-
cir, cada instruccion que pueda ejecutar dicho procesador tendra un
conjunto de componentes que se dedican exclusivamente a dicha ins-
truccion.
Microprogramacion: Se incorpora en el procesador un nivel de procesa-
miento adicional. Se entiende que cada una de las instrucciones de un
procesador es un peque no programa codicado en un lenguaje interno
a la maquina.
El elevado n umero de componentes que requera la implementacion de
un mecanismo de ejecucion directa de cada una de las instrucciones de la
arquitectura de un procesador, haca difcilmente posible la implementacon
de este modelo. Por otro lado, la microprogramacion de instrucciones pare-
ce lo mas adecuado, entre otras razones, por la economa que representa en
terminos de espacio fsico: ya no es necesario incorporar en hardware todos
los componentes que requerira una instruccion codicada; resulta mucho
7
Figura 3: Implementacion de Microcodigo
mas simple almacenar microprogramas asociados a cada instruccion de la
maquina, ademas de un peque no motor capaz de ejecutar estos micropro-
gramas dentro del procesador (gura 3).
Por supuesto, este enfoque condujo a otros problemas. El precio que
haba que pagar para acercar el nivel hardware hacia el software fue trasladar
la llamada Crisis del Software a la maquina, pues los microrprogramas se
hacan cada vez mucho mas complejos y por lo mismo, propensos a errores.
2.6 entonces. . .
CISC resulto una arquitectura que se caracterizaba por una gran variedad
de formas de direccionamiento y una gran cantidad de instrucciones
2
. Estos
hechos hicieron innecesaria la existencia de un gran n umero de registros en
el procesador, y los pocos que existan eran utilizados por las instrucciones
CISC para llevar a cabo su operatoria.
As, la apuesta de CISC de mover la complejidad del software hacia el
hardware se reeja en programas con un menor n umero de instrucciones
3
,
2
El gran n umero de instrucciones no era un principio en la arquitectura CISC, sino que
era una situacion derivada de la combinacion de las diferentes instrucciones necesarias en
el sistema con las diferentes formas de direccionamiento requeridas.
3
Capaces de ejecutar tareas muy complejas
8
lo que puesto en la ecuacion 1, debera disminuir el tiempo de ejecucion de
un programa.
tiempo
programa
=

instrucciones
programa

ciclos
instruccion

tiempo
ciclo

(1)
Pese a que la microprogramacion incorporaba un nivel adicional de eje-
cucion de instrucciones, el costo en tiempo de este nivel adicional no era
signicativamente alto, pues las microinstrucciones y los microprogramas
eran almacenados en una memoria cercana al control y mucho mas rapida
que la memoria principal.
2.7 . . . nuevamente la crisis
Por supuesto, este enfoque condujo a otros problemas. El precio que haba
que pagar para acercar el nivel hardware hacia el software mediante la mi-
croprogramacion fue trasladar la Crisis del Software a la maquina, pues
los microprogramas se hacan cada vez mas complejos y, por lo mismo, tan
propensos a errores como cualquier software.
Por otro lado, la cada vez mayor complejidad de los microprogramas
obligo a los fabricantes de procesadores a nuevamente desmembrar la unidad
de procesamiento en varias subunidades.
La variedad de formas de direccionamiento de las instrucciones deter-
mino tambien una variedad de tama no de las mismas, lo que condujo a un
complejo mecanismo de decodicacion, aumentando el tiempo que tomaba
el procesador en cada instruccion. Parte de la ventaja inicial de la micro-
programacion se haba perdido.
3 Arquitectura RISC
Y si por un lado CISC represento lo que estaba haciendo la corriente princi-
pal en el desarrollo de arquitecturas de computadores, RISC represento a la
tendencia precisamente contraria, que entenda que CISC era un concepto
al cual haba que oponerse, lo que se hizo replanteando la arquitectura de
los procesadores desde la perspectiva de su uso real.
3.1 El Origen
Analisis empricos realizados entre otros por David Patterson y Carlo Se-
quin, determinaron que de las muchas instrucciones de una maquina CISC,
9
solo algunas operaciones, con alg un tipos especcos de operandos, se ejecu-
taban con una frecuencia tal que valiera la pena tenerlas implementadas en
el hardware (guras 4 y 5). La razon era simple. Estas instrucciones eran
muchas veces demasiado exoticas para ser realmente utilizadas por los pro-
gramadores e incluso eran evitadas por los constructores de compiladores,
el p ublico al que estaban dirigidas estas mejoras.
Figura 4: Patterson-Sequin: Porcentaje dinamico de los operandos en C y
Pascal
3.2 La Contrapropuesta: Lo que Todo RISC debe tener
En ese sentido no era irracional la idea de construir un computador con
muy pocas instrucciones, solo las mas requeridas y otras que permitieran
construir las instrucciones ausentes. Es aqu donde comienza a nacer el con-
cepto del Computador con un Conjunto de Instrucciones Reducido (Reduced
Instruction Set Computer).
La apuesta RISC propona basicamente los siguientes elementos:
Solo una instruccion debera ejecutarse en cada ciclo.
Todas las instrucciones tendran el mismo tama no.
Solo las instrucciones de tipo LOAD/STORE tendran acceso a la memo-
ria.
10
Figura 5: Patterson-Sequin: Frecuencia Relativa de las operaciones en C y
Pascal
Se proveera soporte para los lenguajes de alto nivel.
La apuesta de RISC apuntaba a disminuir el tiempo de ejecucion de un
programa disminuyendo el tiempo de ejecucion de cada instruccion. Una ma-
nera de lograr este objetivo era volviendo al esquema de ejecucion directa
de la instruccion, es decir, cada instruccion se implementa en hardware. De
esta forma es posible optimizar aquellas instrucciones que realmente seran
utilizadas.
tiempo
programa
=

instrucciones
programa

ciclos
instruccion

tiempo
ciclo

(2)
3.3 La Ventana de Registros
Los estudios realizados por Patterson y Sequin mostraron ademas que una
de las instrucciones mayormente ejecutadas en una maquina RISC sera la
instruccion CALL, esto dado por que muchas subrutinas en un programa
RISC podran ser instrucciones ya implementadas en una maquina CISC.
11
Figura 6: Modelo de Ventana de Registros en un Procesador RISC
Por lo mismo se busco implementar en hardware un mecanismo que
permitiera la ejecucion mas eciente de llamadas a subrutinas. La propuesta
era tener un gran n umero de registros organizados en una lista circular (ver
gura 6), donde se entiende que los registros 0 a N-1 corresponden a la
ventana de N variables que son actualmente utilizadas por la subrutina en
ejecucion. Cada ventana de ejecucion se divide en tres partes:
1. Registros que almacenan parametros pasados a la subrutina.
2. Registros de datos locales a la subrutina.
3. Registros temporales y paso de parametros a la siguiente subrutina, si
existiera.
De esta forma, la llamada a una subrutina se implementa mediante el
movimiento del puntero que se nala el inicio de la ventana de registros, hacia
el primer registro del grupo que asociado a la lista de parametros de la si-
guiente llamada. Por otro lado, el retorno de una subrutina se implementara
mediante el almacenamiento de las variables a retornar, entre los registros
de parametro de la subrutina, desplazando posteriormente el puntero que
se nala el inicio de la ventana, a la ventana anterior.
3.4 Vuelta Atras?. Nuevo rol del Compilador
Ahora la maquina se transforma, buscando la sencillez del set de instruc-
ciones, en lo que se ha llamado una maquina load-store, es decir, un com-
12
putador que ejecuta todos sus computos a nivel de registros, contando con
instrucciones especiales para poder traer los datos desde y hacia la memoria.
Quizas se retoma el cauce anterior, pero solo para seguir otro desvo,
pues el surgimiento de tecnologas VLSI algunos a nos atras permite la im-
plementacion de este set de instrucciones mas peque no en solo una CPU, de
manera que la ejecucion directa realmente existe y es efectiva.
Pero las instrucciones simples dan origen a un nuevo tipo de compila-
dor, pues este debera ser capaz de optimizar un programa con un set de
instrucciones peque no, pero ademas debera ser lo bastante inteligente para
mejorar el codigo que ha generado, aprovechando algunas particularidades
de las estructuras del lenguaje de programacion de alto nivel. A diferen-
cia de lo que se esperaba nalmente de un compilador CISC, que debera
determinar cual es el metodo de direccionamiento adecuado para la instruc-
cion en ejecucion, un compilador RISC tratara de mantener en registros
el mayor n umero posible de variables, de manera tal que las operaciones
todas sobre registros tengan tiempos mnimos de espera producto de la
carga/descarga de operandos desde/hacia memoria.
En este sentido, la apuesta de la arquitectura RISC apunta a tener un
conjunto peque no de instrucciones, de rapida ejecucion pero con un compi-
lador que a programas complejos genera un codigo (en lo posible) optimo.
3.5 Pipelining
El pipelining surge como una tecnica derivada de la exibilidad de los pro-
cesadores RISC para el desarrollo de algunas optimizaciones en la ejecucion.
La existencia de instrucciones de un tama no jo y de facil decodica-
cion frente a las instrucciones CISC, permitio la segmentacion del ciclo de
instruccion, de manera tal que se podra ejecutar mas de una instruccion
simultaneamente, y cada una de ellas en una etapa de procesamiento.
El uso de estas tecnicas, propias de los supercomputadores, permitio
incrementar el rendimiento de los procesadores RISC, aunque con el paso
del tiempo esta tecnica dejo de ser una exclusividad y paso a ser utilizada
por procesadores CISC.
4 RISC vs. CISC: Conclusiones
La tabla 5 muestra algunos puntos de comparacion de las losofas de de-
sarrollo asociadas a los procesadores RISC y CISC. De todas maneras, y
tal cual se puede ver, RISC y CISC representan solo visiones diferentes y
13
CISC RISC
Estrategias en Precio/Rendimiento
Precio: Mover la complejidad desde
el Software hacia el Hardwre.
Rendimiento: El codigo de los pro-
gramas debera ser peque no,
frente a un elevado n umero de
ciclos de reloj por instruccion.
Precio: Mover la complejidad del
hardware hacia el software.
Rendimiento: El codigo de los pro-
gramas crece, pero bajan los ci-
clos de reloj para cada instruc-
cion.
Decisiones de Dise no
Grande y variado set de instruc-
ciones, que incorpora desde ins-
trucciones muy simples para ta-
reas elementales, hasta instruc-
ciones complejas, que son casi
propias de un lenguaje de pro-
gramacion de alto nivel.
Soporte en hardware para los
lenguajes de alto nivel.
Direccionamiento de Memoria a
Memoria.
Unidad de control en mi-
crocodigo.
Pocos registros.
Instrucciones simples, que utili-
zan pocos ciclos de reloj. Se co-
rresponden con las instrucciones
en microcodigo de una maquina
CISC.
El soporte de los lenguajes de al-
to nivel esta a cargo del software.
Mecanismos de direccionamien-
to muy simples, basados en ope-
raciones de registro a registro, y
operaciones de carga y recupe-
racion de datos hacia y desde la
memoria.
Muchos registros en un procesa-
dor.
Se utiliza pipeline para reducir
el n umero de ciclos de reloj por
cada instruccion.
Tabla 5: Comparacion de las estrategias RISC y CISC
14
opuestas de como debe ser la arquitectura de un procesador. Ambas apun-
tan a la optimizacion de diferentes elementos mas por razones historicas que
razones derivadas de estudios teoricos. Las consideraciones practicas sim-
plemente muestran una manera de sacar provecho al hardware existente en
el mercado, haciendo enfasis en distintas necesidades.
4.1 Propaganda
RISC es solo el nombre que ha sido escogido para una arquitec-
tura que ha cortado deliberadamente las amarras con el pasado.
y ha implementado el mejor set de instrucciones posible a la luz
de nuestro mas avanzado entendimiento en teora de compila-
dores, comportamiento de programas y el desplazamiento de los
lmites entre el motor computacional y su subsistema de memo-
ria. Por lo tanto, la denicion de RISC es el futuro de la compu-
tacion. Dentro de los proximos cinco a nos, surgira un standard
de computacion completamente nuevo basado en las arquitec-
turas RISC. Los computadores RISC redeniran completamente
la curva de precio/rendimiento que actualmente existe en la in-
dustria de la computacion basada en computadores CISC, y se
volvera el standard de la industria de la computacion que nos
llevara al siglo 21.
RISC: The Future Dened
Roger Ross
SPARC-Line, SPARC International Monthly Newsletter
Septiembre de 1990
Resulta interesante que darse cuenta de que al cambiar la palabra RISC
por Comunismo y contextualizar los elementos asociados a la industria de
la computaci on dentro del ambito poltico, este discurso a un tiene sentido.
Esta es la propaganda que el sector de la industria asociado a RISC
viene haciendo desde los ultimos a nos. Los entendidos dicen que RISC es
mejor que CISC, un discurso que es alimentado por el hecho de que CISC
representa el cauce natural de la epoca en que a un sin un nombre claro
comenzo a ser desarrollado, carece de todo lo bueno que tiene la revolucion
(tecnologica).
Quizas este discurso explique por que un usuario de Mac con un proce-
sador G3 dice que su procesador RISC es mejor que un PII, que es CISC,
a un cuando sabe que el G3 tiene mas instrucciones que el PII
15
Figura 7: El Mundo de RISC
4.2 Un caso de estudio: VAX 8700 vs MIPS M/2000
Un estudio llevado a cabo por Dileep Bhandarkar y Douglas W. Clark [3] en
el a no 1991 sobre dos sistemas computacionales similares, MIPS M/2000, por
parte de los procesadores RISC, y VAX 8700, por parte de los procesadores
CISC, propuso comparar la implementacion del M/2000 con el motor de
microinstrucciones de la VAX 8700.
4.2.1 Similitudes
En este estudio se determino un conjunto de similitudes entre ambos:
gran n umero de registros de proposito general.
instrucciones con tres operandos registro que utilizan un ciclo de con-
trol.
instrucciones de carga y descarga que toman un ciclo de control, y que
direccionan agregando un desplazamiento a un registro.
tecnicas de salto retardado.
desvo de la lectura del cache hacia la unidad aritmetico-logica.
uso de pipelining.
16
Si bien estos sistemas utilizaban tecnologas diferentes VAX 8700 uti-
lizaba un arreglo de compuertas ECL
4
y MIPS M/2000 utilizaba tecnologa
CMOS
5
, estas dos maquinas representaban el estado del arte en el desarrollo
de procesadores.
Figura 8: Pipeline de la VAX 8700 y el MIPS M/2000
4.2.2 Diferencias
Cabe mencionar que el procesador VAX 8700 se compona de 9 tarjetas,
mientras que el MIPS M/2000 se compone de una tarjeta con dos chips, por
otro lado la VAX utilizaba un cache combinado de 64KB para instrucciones
y datos, mientras que el M/2000 utilizaba utilizaba un cache separado de
64KB para instrucciones y 64KB para datos.
4.2.3 Resultados
La evaluacion de estos procesadores establecio que, en terminos muy gene-
rales, la relacion entre el rendimiento de la VAX 8700 y el MIPS M/2000 al
ser sometido a un conjunto de tests era cercana a MIPS = 2.66 VAX.
Se encontro una serie de factores en el MIPS M/2000 que determinaban
este resultado:
La obtencion de los operandos en las instrucciones de la VAX 8700
resulta mas lenta cuando los operandos estan en memoria, lo que de-
termina una ventaja para el MIPS, que privilegia la mantencion de los
operandos en los registros.
El MIPS posee un mayor n umero de registros, lo que tiende a reducir
las transferencias de registro a memoria y viceversa.
4
ECL: Emitter Coupled Logic
5
CMOS: Complementary Metal Oxide Semiconductor
17
MIPS M/2000 VAX 8700
Tecnologa CMOS ECL gate array
Componentes:
CPU 115.000 transistores 100 arreglos, 1200
puestas cada uno.
FPU 105.000 transistores (includos)
Suma FP: 2 ciclos 11 ciclos
Mult. FP: 5 ciclos 16 ciclos
Tiempo de ciclo: 40ns 45 ns
Cache: 64KB I + 64KB D 64KB I+D
Acceso a Memoria: 12 ciclos 16 ciclos
Registros: 3232bit de uso gene-
ral y 1664bits para
punto otante
1532bits de uso gene-
ral
Precio: US$80.000 US$492.000
Tabla 6: Algunos Parametros de Implementacion de la VAX 8700 y MIPS
M/2000
El hardware y los registros de punto otante se encuentran en la misma
unidad.
Los saltos condicionales e incondicionales tomaban demasiados ciclos
en la VAX el mas simple, 5 ciclos, mientras que en el MIPS tomaba
a lo mas 2 ciclos. De hecho, en el pipeline de la VAX, la direccion del
salto se obtena en una etapa tarda, por lo que no se poda continuar
con otras instrucciones. Por otro lado, en el MIPS la direccion era
obtenida en una etapa primaria, y este resultado se encontraba en un
registro.
Las instrucciones complejas de la VAX tendan a no usarse por que
su funcionalidad no era requerida o simplemente por que eran dema-
siado generales. Estas instruciones complejas muchas veces utilizaban
demasiados recursos (como referencias a memoria) para tareas relati-
vamente simples.
4.3 Comparaciones
El estudio de Bhandarkar y Clark concluye que si bien la lnea VAX estaba
en una constante mejora de su rendimiento (ver gura 9), la tendencia indica
18
Figura 9: VAX 8700 vs VAX 9000
que a tecnologas comparables, el rendimiento de una maquina RISC debera
ser mejor.
Surge ahora otra pregunta, es posible comparar las dos losofas hoy
en da?. Esta comparacion se ha hecho cada da mas difcil, pues las posi-
ciones extremas silenciosamente se han acercado a la estrategia de su rival.
Las arquitecturas Intel 80x86 tpicamente CISC incorporan pipelining,
por que acelera la ejecucion de sus complejas instrucciones. Las arquitectu-
ras tpicamente RISC como G3, MIPS y SPARC ya incorporan instrucciones
complejas, a un cuando no sean usadas recurrentemente, siempre que incre-
menten el n umero de ciclos de reloj por instruccion. Aparentemente los
modelos de arquitectura convergen, aunque evitan que as parezca.
4.4 El Mercado
El mercado es un juez demasiado objetivo, si se le quiere considerar como
tal. Durante los mas de 10 a nos que han existido las arquitecturas RISC,
no han logrado desplazar a las arquitecturas CISC.
El dise no de una arquitectura RISC involucra (en teora) menos menos
circuitera, mucho mas simple, y por lo mismo, mucho menos personal a
cargo del dise no. Puesto que tienen menos componentes, su costo debera
ser menor.
Una arquitectura CISC se ve enfrentada a la problematica de dise nar
un sistema con millones de componentes, y por lo mismo, a la coordinacion
19
de mucho personal involucrado en el dise no. La necesidad obliga a desarro-
llar una herramienta de dise no muy costosa que permita administrar
millones de componente. Un costo que puede ser signicativo en una prime-
ra generacion de procesadores, pero que entrega herramientas a la segunda
generacion a un costo muy bajo.
Una caracterstica que acompa no el desarrollo de las arquitecturas 80x86,
el representante de CISC, fue la llamada backward compatibility o compa-
tibilidad hacia atras. Una caracterstica que garantizaba el soporte de una
generacion a otra. De esta forma, mediante un tipo de compatibilidad que
generaba un mercado cautivo, era posible avanzar en el desarrollo de proce-
sadores que poco a poco incorporaran nuevas tecnologas, como MMX, que es
basicamente procesamiento vectorial.
Referencias
[1] William Stallings. Organizacion y Arquitectura de Computadores. 1998.
Prentice Hall.
[2] David A. Patterson. Carlo. H. Sequin. RISC I: A Reduced Instruction
Set VLSI Computer. 1982.
[3] Dileep Bhandarkar. Douglas W. Clark. Performance from Architectu-
re: Comparing RISC and a CISC with Similar Hardware Organization.
1991.
[4] Val Popescu and Bruce D. Lightner. Zen and the Struggle Between
Communism and CISC. 1991
http://www.lightner.net/lightner/zen.html
[5] Hannibal (hannibal@arstechnica.com). RISC vs. CISC: the Post-
RISC Era.
http://www.arstechnica.com/cpu/4q99/risc-cisc/rvc-1.html
[6] John Mashey. John Mashey on RISC/CISC. Discusion aparecida en
comp.arch en 1992.
http://www.cwi.nl/ robertl/mash/RISCvsCISC
[7] Webopedia.
http://webopedia.internet.com/
[8] Introduction to RISC Technology.
http://www.inf.fh-dortmund.de/person/prof/si/risc/intro to risc/irt0 index.html
20
[9] Cecilia Labra na. Maquinas CISC vs RISC. 2001.
http://atenea.ipvg.cl/cecilia/Organizacion 1.html
21

También podría gustarte