You are on page 1of 19

INTRODUCCION

A lo largo de la historia de la industria de los ordenadores, la


tendencia mayormente adoptada para conseguir un aumento de
prestaciones, ha sido el incremento de la complejidad de las
instrucciones. Es lo que se ha denominado "computacin con
conjuntos de instrucciones complejas" o CISC (Complex Instruction
Set Computing).
Sin embargo, la tendencia actual, se esfuerza en conseguir
procesadores con conjuntos de instrucciones de complejidad
reducida o RISC (Reduced Instruction Set Computing). La idea es
que un conjunto de instrucciones poco complejas son simples, y
por tanto de ms rpida ejecucin, lo que permite crear un cdigo
ms "aerodinmico".
Tanto la tecnologa CISC como la RISC son acreditadas a IBM,
aunque sus antecesores bien pueden ser John vonNeumman
(inventor del primer programa de ordenador almacenado, y que
promova la velocidad inherente a conjuntos de instrucciones
reducidas), Maurice Wilkes (padre de la microprogramacin y de
muchos conceptos de los diseos RISC), y Seymour Cray (primeros
supercomputadores, empleando principios RISC).
En 1975, IBM inici el desarrollo de un controlador para un sistema
de conmutacin telefnica, que aunque fue abandonado, sirvi
como punto de partida para el desarrollo de una CPU con
tecnologa ECL, corazn del sistema 801, precursor del IBM PC RT.
Los inicios de la tecnologa RISC tambin surgen en el ambiente
acadmico, ya que en 1980, la Universidad de Berkeley
(California), el Dr. David A. Patterson inici un proyecto
denominado RISC I, que obtuvo resultados en tan solo 19 meses,
seguido por RISC II, SOAR (Smalltalk on a RISC) y SPUR (Symbolic
Processing on a RISC). El resultado directo, adems de la
educacin en la ingeniera y los fundamentos del diseo de
microprocesadores, fue la creacin de una mquina que fuese
capaz de mayores velocidades de ejecucin a menores velocidades
de reloj y que requiriese menores esfuerzos de diseo.
Casi simultneamente, en la Universidad de Stanford, el Dr. John
Hennesy inici tambin un proyecto de implementacin RISC,
denominado MIPS, seguido por el sistema MIPS-XMP, enfocados
hacia el proceso simblico, demostrando las capacidades de
velocidad de la arquitectura RISC.
Ambos profesores se vieron envueltos rpidamente, en proyectos
de productos comerciales, y en concreto, Hennesy fue uno de los
fundadores de MIPS Computer Systems, mientras Patterson
actuaba de asesor durante el desarrollo del primer SPARC.
Por otro lado, durante las pasadas dcadas, el multiproceso, como
medida de incrementar drsticamente las prestaciones de los
sistemas a un coste razonable, se ha visto reducido al mbito de
los computadores de "alto nivel", en parte debido a los bajos
niveles de integracin del silicio, y a la falta de software que
facilitase la ejecucin paralela de las aplicaciones.
Las ventajas de los procesadores RISC, especialmente las ligadas a
los sistemas abiertos (lase UNIX), los hacen plataformas ideales
para explorar los puntos fuertes de los sistemas
multiprocesadores.

Historia

Mientras la filosofa de diseo RISC se estaba formando, nuevas ideas


comenzaban a surgir con un nico fin: incrementar drsticamente el
rendimiento de la CPU.
Al principio de la dcada de los ochenta se pensaba que los diseos existentes
estaban alcanzando sus lmites tericos. Las mejoras de la velocidad en el
futuro seran hechas con base en procesos mejorados, esto es, pequeas
caractersticas en el chip. La complejidad del chip podra continuar como hasta
entonces, pero un tamao ms pequeo podra resultar en un mejor
rendimiento del mismo al operar a ms altas velocidades de reloj. Se puso una
gran cantidad de esfuerzo en disear chips para computacin paralela, con
vnculos de comunicacin interconstruidos. En vez de hacer los chips ms
rpidos, una gran cantidad de chips seran utilizados, dividiendo la
problemtica entre stos. Sin embargo, la historia mostr que estos miedos no
se convirtieron en realidad, y hubo un nmero de ideas que mejoraron
drsticamente el rendimiento al final de la dcada de los ochenta.
Una idea era la de incluir un canal por el cual se pudieran dividir las
instrucciones en pasos y trabajar en cada paso muchas instrucciones diferentes
al mismo tiempo. Un procesador normal podra leer una instruccin,
decodificarla, enviar a la memoria la instruccin de origen, realizar la operacin
y luego enviar los resultados. La clave de la canalizacin es que el procesador
pueda comenzar a leer la siguiente instruccin tan pronto como termine la
ltima instruccin, significando esto que ahora dos instrucciones se estn
trabajando (una est siendo leda, la otra est comenzando a ser decodificada),
y en el siguiente ciclo habr tres instrucciones. Mientras que una sola
instruccin no se completara ms rpido, la siguiente instruccin sera
completada enseguida. La ilusin era la de un sistema mucho ms rpido. Esta
tcnica se conoce hoy en da como Segmentacin de cauce.
Otra solucin ms era utilizar varios elementos de procesamiento dentro del
procesador y ejecutarlos en paralelo. En vez de trabajar en una instruccin
para sumar dos nmeros, esos procesadores superescalares podran ver la
siguiente instruccin en el canal y tratar de ejecutarla al mismo tiempo en una
unidad idntica. Esto no era muy fcil de hacer, sin embargo, ya que algunas
instrucciones dependan del resultado de otras instrucciones.
Ambas tcnicas se basaban en incrementar la velocidad al aadir complejidad
al diseo bsico del CPU, todo lo opuesto a las instrucciones que se ejecutaban
en el mismo. Siendo el espacio en el chip una cantidad finita, para poder incluir
todas esas caractersticas algo ms tendra que ser eliminado para hacer
hueco. RISC se encarg de tomar ventaja de esas tcnicas, esto debido a que
su lgica para el CPU era considerablemente ms simple que la de los diseos
CISC. Aun con esto, los primeros diseos de RISC ofrecan una mejora de
rendimiento muy pequea, pero fueron capaces de aadir nuevas
caractersticas y para finales de los ochenta haban dejado totalmente atrs a
sus contrapartes CISC. Con el tiempo esto pudo ser dirigido como una mejora
de proceso al punto en el que todo esto pudo ser aadido a los diseos CISC y
aun as caber en un solo chip, pero esto tom prcticamente una dcada entre
finales de los ochenta y principios de los noventa.

Primeros diseos RISC

El primer sistema que pudiera ser considerado en nuestros


das como RISC no lo era as en aquellos das; era
la supercomputadora CDC 6600, diseada en 1964
por Seymour Cray.

Cray la dise como un CPU para clculos a gran escala (con


74 cdigos, comparada con un 8086 400, adems de 12
computadores simples para manejar los procesos de E/S (la
mayor parte del sistema operativo se encontraba en uno de
stos).

El CDC 6600 tena una arquitectura de carga/almacenamiento


con tan solo dos modos de direccionamiento. Haba once
unidades de canalizacin funcional para la aritmtica y la
lgica, adems de cinco unidades de carga y dos unidades de
almacenamiento (la memoria tena mltiples bancos para que
todas las unidades de carga/almacenamiento pudiesen operar
al mismo tiempo). El nivel promedio de operacin por
ciclo/instruccin era 10 veces ms rpido que el tiempo de
acceso a memoria.

Los diseos RISC que ms se dieron a conocer sin embargo,


fueron aquellos donde los resultados de los programas de
investigacin de las universidades eran ejecutados con fondos
del programa DARPA VLSI. El programa VLSI prcticamente
desconocido hoy en da, llev a un gran nmero de avances
en el diseo de chips, la fabricacin y an en las grficas
asistidas por computadora.

Una de las primeras mquinas de carga/almacenamiento


fue la minicomputadora Data General Nova, diseado en
1968 por Edson de Castro. Haba un conjunto de
instrucciones RISC casi puro, muy similar a la de los
procesadores ARM de hoy, sin embargo no
ha sido citado como haber influido en los diseadores
del ARM, aunque estas mquinas estaban en uso en
la Universidad de Cambridge ComputerLaboratory en la
dcada de 1980.

El proyecto RISC de la Universidad de Berkeley comenz


en 1980 bajo la direccin de David A. Patterson, basndose en
la obtencin de rendimiento a travs del uso de la
canalizacin y un agresivo uso de los registros conocido
como ventanas de registros. En una CPU normal se tienen un
pequeo nmero de registros, un programa puede usar
cualquier registro en cualquier momento. En una CPU con
ventanas de registros, existen un gran nmero de registros
(138 en el RISC-I), pero los programas solo pueden utilizar un
pequeo nmero de estos (32 en el RISC-I) en cualquier
momento.

Un programa que se limita asimismo a 32 registros por


procedimiento puede hacer llamadas a procedimientos muy
rpidas: la llamada, y el regreso, simplemente mueven la
ventana de 32 registros actual para limpiar suficiente espacio
de trabajo para la subrutina, y el regreso restablece esos
valores.
El proyecto RISC entreg el procesador RISC-I en 1982.
Consistiendo de solo 44.420 transistores (comparado con
promedios de aproximadamente 100.000 en un diseo CISC
de esa poca) RISC-I solo tena 32 instrucciones, y aun as
sobrepasaba el desempeo de cualquier otro diseo de chip
simple. Se continu con esta tendencia y RISC-II en 1983 tena
40.760 transistores y 39 instrucciones, con los cuales
ejecutaba 3 veces ms rpido que el RISC-I.

Casi al mismo tiempo, John Hennessy comenz un proyecto


similar llamado MIPS en la Universidad de Stanford en 1981.
MIPS se centraba casi completamente en la segmentacin,
asegurndose de que ejecutara tan lleno como fuera posible.
Aunque la segmentacin ya haba sido utilizada en otros
diseos, varias caractersticas del chip MIPS hacan su
segmentacin mucho ms rpida. Lo ms importante, y quiz
molesto de estas caractersticas era el requisito de que todas
las instrucciones fueran capaces de completarse en un solo
ciclo. Este requisito permita al canal ser ejecutado a
velocidades ms altas (no haba necesidad de retardos
inducidos) y es la responsable de la mayora de la velocidad
del procesador. Sin embargo, tambin tena un efecto
colateral negativo al eliminar muchas de las instrucciones
potencialmente utilizables, como una multiplicacin o una
divisin.

El primer intento por hacer una CPU basada en el concepto


RISC fue hecho en IBM el cual comenz en 1975, precediendo
a los dos proyectos anteriores. Nombrado como proyecto RAN,
el trabajo llev a la creacin de la familia de procesadores IBM
801, la cual fue utilizada ampliamente en los equipos de IBM.
El 801 fue producido eventualmente en forma de un chip
como ROMP en 1981, que es la abreviatura
de Research Office Products Division Mini Processor. Como
implica el nombre, esta CPU fue diseada para tareas
pequeas, y cuando IBM lanz el diseo basado en el IBM RT-
PC en 1986, el rendimiento no era aceptable. A pesar de esto,
el 801 inspir varios proyectos de investigacin, incluyendo
algunos nuevos dentro de IBM que eventualmente llevaran a
su sistema IBM POWER.
En los primeros aos, todos los esfuerzos de RISC eran bien
conocidos, pero muy confinados a los laboratorios de las
universidades que los haban creado. El esfuerzo de Berkeley
se dio a conocer tanto que eventualmente se convirti en el
nombre para el proyecto completo. Muchos en la industria de
la computacin criticaban el que los beneficios del
rendimiento no se podan traducir en resultados en el mundo
real debido a la eficiencia de la memoria de mltiples
instrucciones, y sa fue la razn por la que nadie los estaba
utilizando. Pero a comienzos de 1986, todos los proyectos de
investigacin RISC comenzaron a entregar productos. De
hecho, casi todos los procesadores RISC modernos son copias
directas del diseo RISC-II.

Una consola
del CDC
6600
mainframe
system

RISC
En arquitectura computacional, RISC (del
ingls Reduced Instruction Set Computer, en
espaol Computador con Conjunto de Instrucciones
Reducidas) es un tipo de diseo de CPU generalmente
utilizado en microprocesadores o microcontroladores con las
siguientes caractersticas fundamentales:

1. Instrucciones de tamao fijo y presentado en un reducido


nmero de formatos.

2. Slo las instrucciones de carga y almacenamiento


acceden a la memoria de datos.
Adems estos procesadores suelen disponer de muchos
registros de propsito general.
El objetivo de disear mquinas con esta arquitectura es
posibilitar la segmentacin y el paralelismo en la ejecucin de
instrucciones y reducir los accesos a memoria. Las mquinas
RISC protagonizan la tendencia actual de construccin de
microprocesadores. PowerPC, DEC
Alpha, MIPS, ARM, SPARC son ejemplos de algunos de ellos.
RISC es una filosofa de diseo de CPU para computadora que
est a favor de conjuntos de instrucciones pequeas y simples
que toman menor tiempo para ejecutarse. El tipo de
procesador ms comnmente utilizado en equipos de
escritorio, el x86, est basado en CISC en lugar de RISC,
aunque las versiones ms nuevas traducen instrucciones
basadas en CISC x86 a instrucciones ms simples basadas en
RISC para uso interno antes de su ejecucin.
La idea fue inspirada por el hecho de que muchas de las
caractersticas que eran incluidas en los diseos tradicionales
de CPU para aumentar la velocidad estaban siendo ignoradas
por los programas que eran ejecutados en ellas. Adems, la
velocidad del procesador en relacin con la memoria de
la computadora que acceda era cada vez ms alta. Esto
conllev la aparicin de numerosas tcnicas para reducir el
procesamiento dentro del CPU, as como de reducir el nmero
total de accesos a memoria.
Terminologa ms moderna se refiere a esos diseos
como arquitecturas de carga-almacenamiento.
Principales Caractersticas
Las caractersticas comunes a todos los procesadores RISC, fuente de
sus capacidades de altas prestaciones, son:
Modelo de conjunto de instrucciones Load/Store
(Cargar/Almacenar). Slo las instrucciones Load/Store acceden a
memoria; las dems operaciones en un RISC, tienen lugar en su
gran conjunto de registros. Ello simplifica el direccionamiento y
acorta los tiempos de los ciclos de la CPU, y adems facilita la
gestin de los fallos de paginas (page faults) en entornos de
memoria virtual. Adems, permite un elevado nivel de
concurrencia a consecuencia de la independencia de las
operaciones de Load/Store de la ejecucin del resto de las
instrucciones.
Arquitectura no destructiva de tres direcciones. Los
procesadores CISC destruyen la informacin que existe en alguno
de los registros, como consecuencia de la ejecucin normal de
instrucciones; esto es debido a su arquitectura de dos direcciones,
por la cual el resultado de una operacin sobrescribe uno de los
registros que contena a los operandos. Por contra, las
instrucciones RISC, con tres direcciones, contienen los campos de
los dos operandos y de su resultado. Por lo tanto, tanto los
operandos origen como el destino, son mantenidos en los registros
tras haber sido completada la operacin. Esta arquitectura "no
destructiva" permite a los compiladores organizar las instrucciones
de modo que mantengan llenos los conductos (pipelines) del chip,
y por tanto reutilizar los operandos optimizando la concurrencia.
Instrucciones simples, de formato fijo, con pocos modos de
direccionamiento. Las instrucciones simples reducen de manera
muy significativa el esfuerzo para su descodificacin, y favorecen
su ejecucin en pipelines. Las instrucciones de longitud fija, con
formatos fijos, implican que los campos de cdigos de operacin
(opcodes) y de los operandos estn siempre codificados en las
mismas posiciones, permitiendo el acceso a los registros al mismo
tiempo que se est descodificando el cdigo de operacin. Todas
las instrucciones tienen una longitud equivalente a una palabra y
estn alineadas en la memoria en lmites de palabra (word
boundaries), ya que no pueden ser repartidas en pedazos que
puedan estar en diferentes pginas.
Ausencia de microcdigo. El microcdigo no se presta a la
ejecucin en ciclos nicos, ya que requiere que el hardware sea
dedicado a su interpretacin dinmica. La programacin en
microcdigo no hace que el software sea ms rpido que el
programado con un conjunto de instrucciones simples. Todas las
funciones y el control, en los procesadores RISC, estn "cableados"
(hardwired), para lograr una mxima velocidad y eficiencia.
Ejecucin en conductos (pipelined). Las instrucciones simples,
de formato fijo y ciclo nico permiten que las diferentes etapas de
los ciclos de ejecucin (bsqueda o fetch, descodificacin,
ejecucin, y escritura del resultado o result write-back) para
instrucciones mltiples, se puedan realizar simultneamente, de
un modo ms simple y eficaz.
Ejecucin en ciclos nicos (single-cycle). El resultado directo
de los conjuntos de instrucciones que ofrecen los procesadores
RISC, es que cada instruccin puede ser ejecutada en un nico
ciclo de la CPU. Esto invalida la creencia de que las
microinstrucciones en microcdigo, creadas para ser ejecutadas en
un solo ciclo de procesador, son ms rpidas que las instrucciones
del lenguaje ensamblador. Ya que el cach esta construido
partiendo de la misma tecnologa que el almacenamiento de
control del microprograma, una nica instruccin puede ser
ejecutada a la misma velocidad que una microinstruccin. La
ejecucin en ciclos nicos tambin simplifica la gestin de las
interrupciones y los conductos (pipelines).

Funcionamiento
Funciona de modo muy diferente a la CISC, su objetivo no es ahorrar esfuerzos
externos por parte del software con sus accesos a la RAM, sino facilitar que las
instrucciones sean ejecutadas lo ms rpidamente posible. La forma de
conseguirlo es simplificando el tipo de instrucciones que ejecuta el procesador.
As, las instrucciones ms breves y sencillas de un procesador RISC son
capaces de ejecutarse mucho ms aprisa que las instrucciones ms largas y
complejas de un chip CISC. Sin embargo, este diseo requiere de mucha ms
RAM y de una tecnologa de compilador ms avanzada.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a
ciclos de diseo ms cortos cuando se desarrollan nuevas versiones, lo que
posibilita siempre la aplicacin de las ms recientes tecnologas de
semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una
capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los
saltos de capacidad que se producen de generacin en generacin son mucho
mayores que en los CISC.
Los comandos que incorpora el chip RISC en su ROM constan de varias
instrucciones pequeas que realizan una sola tarea. Las aplicaciones son aqu
las encargadas de indicar al procesador qu combinacin de estas
instrucciones debe ejecutar para completar una operacin mayor.
Los comandos de RISC son todos del mismo tamao y se cargan y almacenan
del mismo modo. Al ser estas instrucciones pequeas y sencillas, no necesitan
ser descodificadas en instrucciones menores como en el caso de los chips CISC,
pues ya constituyen en s unidades descodificadas. Es por ello, que el
procesador RISC no gasta tiempo verificando el tamao del comando, en
descodificarlo ni en averiguar cmo cargarlo y guardarlo.
El procesador RISC puede adems ejecutar hasta 10 comandos a la vez pues el
compilador del software es el que determina qu comandos son
independientes y por ello es posible ejecutar varios a la vez.
Al ser los comandos del RISC ms sencillos, la circuitera por la que pasan
tambin es ms sencilla. Estos comandos pasan por menos transistores, de
forma que se ejecutan con ms rapidez. Para ejecutar una sola instruccin
normalmente les basta con un ciclo de reloj.

Ventajas
La estrategia RISC tambin tiene grandes ventajas. Debido a que cada
instruccin realiza una operacin muy simple, el cdigo se ejecutar en
aproximadamente el mismo tiempo que el comando MULT de la
arquitectura CISC. Estas instrucciones reducidas RISC requieren menos
hardware y es ms sencillo que las instrucciones complejas, dejando
ms espacio para registros de propsito general. Adems, las
optimizaciones sobre un hardware ms sencillo son mucho ms fciles
de realizar.
RISC ha alcanzado a todos los fabricantes de
semiconductores:AMD, Intel, MIPS, Motorota, ROSS, y todos ellos son
productos usados por fabricantes de ordenadores y estaciones de
trabajo: Apple, DEC, HP, IBM, SUN, entre otros y sus correspondientes
clnicos.
La CPU trabaja mas rpido al utilizar menos ciclos de reloj para ejecutar
instrucciones.
Utiliza un sistema de direcciones no destructivas en RAM. Eso significa
que a diferencia de CISC, RISC conserva despus de realizar sus
operaciones en memoria los dos operandos y su resultado, reduciendo la
ejecucin de nuevas operaciones. Cada instruccin puede ser ejecutada
en un solo ciclo del CPU.
La definicin de RISC es el futuro de la computacin. Dentro de los prximos
cinco aos, surgir un Standard de computacin completamente nuevo
basado en las arquitecturas RISC. Los computadores RISC redefinirn
completamente la curva de precio - rendimiento que actualmente existe en
la industria de la computacin basada en computadores CISC, y se volver
el Standard de la industria de la computacin que nos llevara al siglo XIX.

RISC moderno
La investigacin de Berkeley no fue comercializada directamente, pero el
diseo RISC-II fue utilizado por Sun Microsystems para desarrollar
el SPARC, por Pyramid Technology para desarrollar sus mquinas de
multiprocesador de rango medio, y por casi todas las compaas unos
aos ms tarde. Fue el uso de RISC por el chip de SUN en las nuevas
mquinas el que demostr que los beneficios de RISC eran reales, y sus
mquinas rpidamente desplazaron a la competencia y esencialmente
se apoderaron de todo el mercado de estaciones de trabajo.
John Hennessy dej Stanford para comercializar el diseo MIPS,
comenzando una compaa conocida como MIPS Computer Systems Inc.
Su primer diseo fue el chip de segunda generacin MIPS-II conocido
como el R2000. Los diseos MIPS se convirtieron en uno de los chips
ms utilizados cuando fueron incluidos en las consolas de
juego Nintendo 64 y PlayStation. Hoy son uno de los procesadores
integrados ms comnmente utilizados en aplicaciones de alto nivel
por Silicon Graphics.
IBM aprendi del fallo del RT-PC y tuvo que continuar con el diseo
del RS/6000 basado en su entonces nueva arquitectura IBM POWER.
Entonces movieron sus computadoras centrales S/370 a los chips
basados en IBM POWER, y se sorprendieron al ver que aun el conjunto
de instrucciones muy complejas (que era parte del S/360 desde 1964)
corra considerablemente ms rpido. El resultado fue la nueva
serie System/390 que an hoy en da es comercializada como zSeries. El
diseo IBM POWER tambin se ha encontrado movindose hacia abajo
en escala para producir el diseo PowerPC, el cual elimin muchas de las
instrucciones solo IBM y cre una implementacin de chip nico. El
PowerPC fue utilizado en todas las computadoras Apple Macintosh hasta
2006, y est comenzando a ser utilizado en aplicaciones automotrices
(algunos vehculos tienen ms de 10 dentro de ellos), las consolas
de videojuegos de ltima generacin (PlayStation 3, Wii y Xbox 360)
estn basadas en PowerPC.
Casi todos los dems proveedores se unieron rpidamente. De los
esfuerzos similares en el Reino Unido result el INMOS Trasputer,
el Acorn Archimedes y la lnea Advanced RISC Machine, la cual tiene un
gran xito hoy en da. Las compaas existentes con diseos CISC
tambin se unieron a la revolucin. Intel lanz el i860 y el i960 a finales
de los ochenta, aunque no fueron muy exitosos. Motorola construy un
nuevo diseo pero no le vio demasiado uso y eventualmente lo
abandon, unindose a IBM para producir el PowerPC. AMD lanz su
familia 29000 la cual se convirti en el diseo RISC ms popular a
principios de los noventa.
Hoy en da los microcontroladores y CPU RISC representan a la vasta
mayora de todos los CPU utilizados. La tcnica de diseo RISC ofrece
poder incluso en medidas pequeas, y esto ha venido a dominar
completamente el mercado de CPU integrados de bajo consumo de
energa. Los CPU integrados son por mucho los procesadores ms
comunes en el mercado: considera que una familia completa con una o
dos computadoras personales puede poseer varias docenas de
dispositivos con procesadores integrados. RISC se ha apoder
completamente del mercado de estacin de trabajo. Despus del
lanzamiento de la SUN SPARCstation los otros proveedores se apuraron a
competir con sus propias soluciones basadas en RISC. Aunque hacia
2006-2010 las estaciones de trabajo pasaron a la arquitectura x86-64 de
Intel y AMD. Incluso el mundo de las computadoras centrales est ahora
basado completamente en RISC.
Esto es sorprendente en vista del dominio del Intel x86 y x86 64 en el
mercado de las computadoras personales de escritorio (ahora tambin
en el de estaciones de trabajo), ordenadores porttiles y en servidores
de la gama baja. Aunque RISC fue capaz de avanzar en velocidad muy
rpida y econmicamente.
Los diseos RISC han llevado a un gran nmero de plataformas y
arquitecturas al xito, algunas de las ms grandes:
La lnea MIPS Technologies Inc., que se encontraba en la mayora
de las computadoras de Silicon Graphics hasta 2006, y estuvo en
las consolas ya descatalogadas Nintendo
64, PlayStation y PlayStation 2. Actualmente se utiliza en
la PlayStation Portable y algunos routers.

La serie IBM POWER, utilizado principalmente por IBM en


Servidores y superordenadores.
La versin PowerPC de Motorola e IBM (una versin de la serie IBM
POWER) utilizada en los ordenadores AmigaOne, Apple
Macintosh como el iMac, eMac, Power Mac y posteriores (hasta
2006). Actualmente se utiliza en muchos sistemas empotrados en
automviles, routers, etc, as como en muchas consolas de
videojuegos, como la Playstation 3, Xbox 360 y Wii.

El procesador SPARC y UltraSPARC de Sun Microsystems y Fujitsu,


que se encuentra en sus ltimos modelos de servidores (y hasta
2008 tambin en estaciones de trabajo).

El PA-RISC y el HP/PA de Hewlett-Packard, ya descatalogados.

El DEC Alpha en servidores HP AlphaServer y estaciones de trabajo


AlphaStation, ya descatalogados.
El ARM El paso de hardware de instrucciones x86 en operaciones
RISC llega a ser significativo en el rea y la energa para
dispositivos mviles e integrados. Por lo tanto, los procesadores
ARM dominan en PALM, Nintendo DS, Game Boy Advance y en
mltiples PDAs, Apple iPods, Apple iPhone, iPod
Touch (Samsung ARM1176JZF, ARM Cortex-A8, Apple A4),
Apple iPad (Apple A4 ARM -based SoC), videoconsolas
como Nintendo DS (ARM7TDMI, ARM946E-S), Nintendo Game Boy
Advance (ARM7TDMI).
El Atmel AVR usado en gran variedad de productos, desde mandos
de la Xbox a los coches de la empresa BMW.

Los procesadores XAP usados en muchos chips wireless de poco


consumo (Bluetooth, wifi) de CSR.

Conceptos de multiproceso:
La industria informtica, ha tenido siempre un objetivo primordial,
repetido a lo largo de toda su cadena (fabricantes de semiconductores,
fabricantes de sistemas y usuarios): la bsqueda de la velocidad. Para
alcanzar este objetivo se han invertido ingentes cantidades de recursos,
hasta alcanzar los lmites fsicos del silicio.
Obviamente, la velocidad va ligada a las prestaciones, y por lo general,
la primera ha sido la principal medida para decidirse por un sistema u
otro. Sin embargo, por muy evidente que parezca, y dados los lmites
fsicos de los semiconductores, las prestaciones pueden no estar
forzosamente ligadas a la velocidad. Hoy es posible construir sistemas,
que an teniendo procesadores ms "lentos" que otros, ofrezcan unas
prestaciones significativamente superiores. Son los sistemas
multiprocesador, que como su denominacin indica, incorporan varios
procesadores para llevar a cabo las mismas funciones.
No es un concepto nuevo, ya que los "minicomputadores" construidos
por compaas como NCR, Sequent y Stratus, ya empleaban varios
nodos de proceso como alternativas econmicas a otros productos de
otras compaas. Sin embargo, aquellos sistemas an duplicaban
recursos caros del sistema, como memoria y dispositivos de
entrada/salida, y por tanto, confinaban a los sistemas multiprocesador al
mundo de los sistemas de alto nivel.
Ahora, y en gran medida gracias a los procesadores de arquitectura
RISC, el soporte multiprocesador es una solucin integrada y fcilmente
disponible en estaciones de trabajo de sobremesa, que resuelve, a
travs de hardware VLSI, los complejos problemas de comparticin de
recursos (memoria compartida) de aquellas primeras mquinas.
Evidentemente, estas mejoras en el hardware, para ser funcionales,
requieren importantes desarrollos en el software, y de hecho, muchos
sistemas operativos admiten extensiones multiproceso (Match, SCO,
Solaris, System V, etc.), que proporcionan paralelismo "en bruto"
(asignando mltiples tareas a mltiples procesadores) a nivel del
sistema operativo.
Las aplicaciones escritas para facilitar el paralelismo en su ejecucin,
incrementan significativamente las prestaciones globales del sistema;
esto es lo que se denomina multi-enhebrado (multithreading), que
implica dividir una sola aplicacin entre varios procesadores. Sin
embargo, los desarrolladores de software y programadores de
aplicaciones slo han comenzado a explorar las vastas posibilidades de
incremento de prestaciones que ofrecen los sistemas con capacidades
reales de proceso en paralelo.
El multiproceso no es algo difcil de entender: ms procesadores significa
mas potencia computacional. Un conjunto de tareas puede ser
completado ms rpidamente si hay varias unidades de proceso
ejecutndolas en paralelo. Esa es la teora, pero otra historia es la
prctica, como hacer funcionar el multiproceso, lo que requiere unos
profundos conocimientos tanto del hardware como del software. Es
necesario conocer ampliamente como estn interconectados dichos
procesadores, y la forma en que el cdigo que se ejecuta en los mismos
ha sido escrito para escribir aplicaciones y software que aproveche al
mximo sus prestaciones.
Para lograrlo, es necesario modificar varias facetas del sistema
operativo, la organizacin del cdigo de las propias aplicaciones, as
como los lenguajes de programacin.
Es difcil dar una definicin exacta de un sistema multiprocesador,
aunque podemos establecer una clasificacin de los sistemas de
procesadores en:
SISD o secuencia nica de instrucciones y datos (Single
Instruction, Single Data): una sola secuencia de instrucciones
opera sobre una sola secuencia de datos (caso tpico de los
ordenadores personales).
SIMD o secuencia nica de instrucciones y mltiple de datos
(Single Instruction, Multiple Data): una sola secuencia de
instrucciones opera, simultneamente, sobre mltiples secuencias
de datos (array processors).
MISD o mltiples secuencias de instrucciones y nica de datos
(Multiple Instruction, Single Data): mltiples secuencias de
instrucciones operan, simultneamente, sobre una sola secuencia
de datos (sin implementaciones tiles actualmente).
MIMD o mltiples secuencias de instrucciones y datos (Multiple
Instruction, Multiple Data): mltiples secuencias de instrucciones
operan, simultneamente, sobre mltiples secuencias de datos.
Los sistemas multiprocesadores pueden ser clasificados con mayor
propiedad como sistemas MIMD. Ello implica que son mquinas con
mltiples y autnomos nodos de proceso, cada uno de los cuales opera
sobre su propio conjunto de datos. Todos los nodos son idnticos en
funciones, por lo que cada uno puede operar en cualquier tarea o
porcin de la misma.
El sistema en que la memoria est conectada a los nodos de proceso
establece el primer nivel de distincin entre diferentes sistemas
multiprocesador:

Multiprocesadores de memoria distribuida (distributed-


memory multiprocessors), tambin denominados
multiprocesadores vagamente acoplados (loosely coupled
multiprocessors). Se caracterizan porque cada procesador slo
puede acceder a su propia memoria. Se requiere la comunicacin
entre los nodos de proceso para coordinar las operaciones y mover
los datos. Los datos pueden ser intercambiados, pero no
compartidos. Dado que los procesadores no comparten un espacio
de direcciones comn, no hay problemas asociados con tener
mltiples copias de los datos, y por tanto los procesadores no
tienen que competir entre ellos para obtener sus datos. Ya que
cada nodo es un sistema completo, por si mismo (incluso sus
propios dispositivos de entrada/salida si son necesarios), el nico
lmite prctico para incrementar las prestaciones aadiendo
nuevos nodos, esta dictado por la topologa empleado para su
interconexin. De hecho, el esquema de interconexin (anillos,
matrices, cubos, ...), tiene un fuerte impacto en las prestaciones
de estos sistemas. Adems de la complejidad de las
interconexiones, una de las principales desventajas de estos
sistemas, como es evidente, es la duplicacin de recursos caros
como memoria, dispositivos de entrada/salida, que adems estn
desocupados en gran parte del tiempo.
Multiprocesadores de memoria compartida (shared-
memory multiprocessors), tambin llamados multiprocesadores
estrechamente acoplados (tightly coupled multiprocessors). Son
sistemas con mltiples procesadores que comparten un nico
espacio de direcciones de memoria. Cualquier procesador puede
acceder a los mismos datos, al igual que puede acceder a ellos
cualquier dispositivo de entrada/salida. El sistema de
interconexin ms empleado para estos casos, es el de bus
compartido (shared-bus). Tener muchos procesadores en un nico
bus tiene el inconveniente de limitar las prestaciones del sistema a
medida que se aaden nuevos procesadores. La razn es la
saturacin del bus, es decir, su sobre utilizacin; en un sistema de
bus compartido, se deriva por la contienda entre los diferentes
dispositivos y procesadores para obtener el control del bus, para
obtener su utilizacin.
Es evidente, que los sistemas actuales tienden al uso de arquitecturas
de memoria compartida, fundamentalmente por razones de costes, a
pesar del problema de la contienda por el bus. Los tres fuentes
fundamentalmente responsables de dicha disputa son la memoria (cada
CPU debe usar el
bus para acceder a
la memoria
principal), la
comunicacin (el
bus es usado por
los "bus masters"
para la
comunicacin y
coordinacin), y la
latencia de la
memoria (el
subsistema de
memoria mantiene
al bus durante las transferencias de datos, y en funcin de la velocidad a
la que la memoria puede responder a las peticiones, puede llegar a ser
un factor muy significativo).
Los sistemas de memoria cach y el multiproceso:
Los sistemas de memoria multinivel (cach) son un esfuerzo para evitar
el nmero de peticiones realizadas por cada CPU al bus. Los caches son
pequeas y rpidas (y por tanto caras) memorias, que hacen de tampn
(buffer) entre la CPU y la memoria externa, para mantener los datos y/o
instrucciones. Se basan en el principio de la "localidad", lo que significa
que, dada la fundamental naturaleza secuencial de los programas, los
siguientes datos o instrucciones requeridas, estarn localizadas
inmediatamente a continuacin de las actuales.
Los datos contenidos en la memoria cach se organizan en bloques
denominados lneas. Las lneas son cargadas en el cach como copias
exactas de los datos situados en la memoria externa. Para referenciar a
los datos de la memoria cach, se emplean marcas (tags) que identifican
a cada lnea. Las marcas o tags emplean una porcin de la direccin
fsica de los datos, para compararla con la direccin fsica solicitada por
la CPU. Cuando existe una coincidencia exacta de la direccin y de otros
cualificadores (estado, privilegio, contexto, etc.), se dice que ha tenido
lugar un acierto (hit) de cach; en caso contrario, tiene lugar un fallo
(miss) del cach, y en ese caso, los datos han de ser recuperados desde
la memoria.
El empleo de memoria cach se ha popularizado, como medida para
acelerar el tiempo de acceso a la memoria principal, incluso en los
sistemas monoprocesador, evitando as, segn se incrementa la
velocidad de los propios procesadores, aumentar la velocidad de dicha
memoria, y por tanto encarecer el sistema.
La forma en que la memoria es actualizada por los caches locales puede
tener un gran impacto en las prestaciones de un sistema
multiprocesador. Bsicamente hay dos mtodos:

Escritura continua (write-through). Requiere que todas las


escrituras realizadas en el cach actualicen asimismo los datos de
la memoria principal. De esta forma, la memoria principal siempre
tiene la ltima copia de los datos, y por tanto no hay nunca
ninguna incoherencia con el cach. El inconveniente es que se
producen frecuentes accesos a memoria, especialmente
superfluos cuando el software est modificando las mismas
secciones de datos repetidamente (por ejemplo ejecutando
bucles).
Copia posterior (copy-back). Es un sistema mucho ms
eficiente, aunque tambin ms complejo de implementar. En este
caso, la CPU puede modificar la lnea de cach sin necesidad de
actualizar inmediatamente la memoria principal. Los datos slo
son copiados a la memoria principal cuando la lnea de cach va a
ser reemplazada con una nueva. Ello no solo minimiza el trfico
del bus, de vital importancia para el resto de los procesadores,
sino que tambin libera al procesador de la tarea de escribir en la
memoria principal. Sin embargo, este sistema, en una arquitectura
de bus compartido, implica un nuevo nivel de dificultad,
denominado coherencia o consistencia (coherency o consistency);
dado que cada cach puede tener una copia de los datos
existentes en la memoria principal, el desafo es asegurar que los
datos permanecen iguales entre todos los caches. Hay dos
mtodos para mantener cada lnea de cach idntica a las dems:
Escritura radiada (write-broadcast), que
requiere que la CPU que modifica los datos
compartidos actualice los otros caches, para lo cual
escribe en el bus la direccin de los datos, y los
datos mismos, de modo que todos los dispositivos
interesados (otras CPUs) los capturen. Esto asegura
que cada lnea de cach en el sistema es una copia
exacta de las dems.
Escritura invalidada (write-invalidate), impide a
una CPU modificar los datos compartidos en su
cach hasta que otros caches han invalidado sus
copias. En cuanto otros caches invalidan sus lneas,
el cach modificado tiene la nica copia; de este
modo, se garantiza que un slo cach escribe una
lnea compartida en un momento dado. Tiene la
ventaja de conservar el ancho de banda del bus ya
que los datos modificados no tienen que ser
enviados a otros caches.

Ambos sistemas requieren que los caches sean capaces de identificar


peticiones en el bus que afecten a sus datos, lo que se realiza con una
tcnica conocida como "sondeo del bus" (bus snooping). Cada cach
compara las direcciones de las peticiones en el bus compartido con los
datos en su propio cache, usando las marcas (tags).
Este sistema requiere un
acceso concurrente a las
marcas (tags) del cach
por parte del bus del
sistema y del bus del
procesador. Sin dicho
acceso concurrente, el
procesador no podra
acceder al cach durante
las operaciones de sondeo
del bus (que tienen que
tener prioridad de acceso
a las marcas, para poder
mantener la coherencia
del cach). El resultado
son frecuentes atascos del
procesador y
consecuentemente, bajo
rendimiento.

A su vez, hay varios protocolos asociados con el sondeo del bus para el
movimiento de los datos y los mensajes entre los caches:

1. Intervencin indirecta de los datos (indirect data


intervention). Es el mtodo ms simple de intercambio de datos
entre procesadores, aunque tambin el menos eficiente. La 1 CPU
hace una peticin de datos, que es sondeada por la 2; tiene lugar
un acierto de sondeo (snoop hit) si dichos datos estn en el cach
de la 2 CPU, entonces esta obtiene el control del bus e indica a la
1 que lo reintente ms tarde. La 2 CPU escribe los datos de su
cach a la memoria, y la 1 CPU obtiene el control del bus de
nuevo, reiniciando la peticin. Los datos son ahora suministrados
por la memoria.
2. Intervencin directa de los datos (direct data intervention).
Los datos son suministrados directamente por la 2 CPU a la 1.
Este mecanismo es aplicable fundamentalmente a los sistemas
con sistemas de cache de copia posterior (copy-back). Aunque
pueden evitar muchos ciclos comparados con la intervencin
indirecta, la memoria principal permanece inconsistente con el
cach, y debe de ser actualizada cuando la lnea de cach es
vaciada.
3. Reflexin a memoria (memory reflection) con intervencin
directa. La memoria captura los datos que han sido depositados
en el bus, mientras son enviados a la CPU solicitante. Si la lnea de
cach no ha sido modificada antes de que tenga lugar la ltima
transaccin de intervencin de datos, no es necesario escribir a la
memoria, con lo que se conserva el ancho de banda. Esta
actualizacin del cache solicitante y la memoria puede tener lugar
en un mismo y nico ciclo de reloj.