Está en la página 1de 48

Sistemas de Multiprocesamiento

Procesadores RISC
ndice

INTRODUCCIN
1.- Objetivos: .................................................................................................................... 4
2. La aparicin de los procesadores RISC:....................................................................... 4
2.1. Que significa RISC................................................................................................ 4
2.2. La base de un sistema RISC: Un set de instrucciones simple ............................... 4
2.3. Caractersticas RISC.............................................................................................. 5
3. Dentro de una mquina RISC:...................................................................................... 6
3.1. Pipelining............................................................................................................... 6
3.2. A tener en cuenta en sistemas con pipeline implementado ................................... 7
3.2.1. Velocidad de la memoria................................................................................ 7
3.2.2. Latencia de las instrucciones .......................................................................... 7
3.2.3. Dependencias.......................................................................................................... 8
3.3. Mejora de la velocidad en mquinas con pipeline................................................. 9
3.3.1. Procesadores Superpipeline............................................................................ 9
3.3.2. Procesadores Superescalares .......................................................................... 9

SET DE INSTRUCCIONES
1.- Aspectos Que Deben Concretarse En El Set De Instrucciones................................. 10
2.- Formato De Las Instrucciones .................................................................................. 11
2.1- Instrucciones Tipo R ........................................................................................... 11
2.2.- Intrucciones Tipo I ............................................................................................. 12
2.3.- Intrucciones Tipo J ............................................................................................. 13
3.- Tipos De Instrucciones.............................................................................................. 13
3.1 Intrucciones Aritmticas....................................................................................... 13
3.2.- Instrucciones Lgicas......................................................................................... 15
3.3.- Intrucciones De Comparacin Y Salto............................................................... 17
3.3.1 Pseudoinstrucciones. ..................................................................................... 17
3.3.2.- Instrucciones De Toma De Decisiones ....................................................... 17
3.3.3.- Instrucciones De Bifurcar Registro. ............................................................ 18
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
ndice

3.3.4.- Instruccin Bifurca Y Enlaza. ..................................................................... 18


3.4.- Instrucciones De Transferencia De Datos.......................................................... 18
3.5.-Instruccin De Manipulacin De Constantes...................................................... 19
3.6.- Otras Operaciones. ............................................................................................. 20
4.-Modos De Direccionamiento ..................................................................................... 21

RUTA DE DATOS
1.- Visin General. ......................................................................................................... 22
2.- Operaciones que soporta la Arquitectura. ................................................................. 22
3.- Ruta de datos ............................................................................................................. 23
3.1.- Fases en la ejecucin de una instruccin............................................................ 23
3.2.- Elementos de la ruta de datos............................................................................. 24
3.3.- Descomposicin de la ejecucin de la instruccin en ciclos de reloj................. 24
3.3.1.- Bsqueda de la instruccin.......................................................................... 24
3.3.2.- Decodificacin de la instruccin y bsqueda de registros. ......................... 25
3.3.3.- Ejecucin, clculo de la direccin de memoria o terminacin del salto ..... 26
3.3.4.- Acceso a memoria o terminacin de la instruccin de tipo R..................... 27
3.3.5.- Fase de postescritura ................................................................................... 28
4.- Algunos diagramas explicativos ............................................................................... 29
4.1.- Esquema general ................................................................................................ 29
4.2.- Carga de la instruccin....................................................................................... 30
4.2.1.- Primera parte ............................................................................................... 30
4.2.2.- Segunda parte .............................................................................................. 31
4.3.- Decodificacin de instruccin y carga de los registros:..................................... 32
4.3.1 Primera parte.................................................................................................. 32
4.3.2 Segunda parte ................................................................................................ 33
4.4.- Completado del salto.......................................................................................... 34
4.5.- Ejecucin de instruccin aritmtico-lgica ........................................................ 35
4.5.1.- Primera parte ............................................................................................... 35
4.5.2.- Segunda parte .............................................................................................. 36

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
ndice

UNIDAD DE CONTROL
1.- Introduccin .............................................................................................................. 37
2.- Microprogramacin: Simplificar El Diseo Del Control.......................................... 37
3.- Definicin Del Formato De Microinstruccin .......................................................... 40
4.- Creacin Del Microprograma.................................................................................... 42

BIBLIOGRAFA
Bibliografa..................................................................................................................... 48

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

1.- Objetivos:
En este captulo se va a proceder a describir las principales caractersticas de la
arquitectura de los procesadores RISC, que en algunas aplicaciones vienen a sustituir a
los antiguos procesadores CISC, como por ejemplo en la nueva generacin de sistemas
Macintosh que Apple est desarrollando.
Al final de este captulo deberemos de ser capaces de:
Describir las diferencias ms significativas entre el set de instrucciones
de un procesador CISC y un procesador RISC
Comprender el pipelining y su implementacin en un diseo RISC
Definir stalling y la planificacin de instrucciones
Comparar las principales ventajas y desventajas de ambas arquitecturas.

2. La aparicin de los procesadores RISC:

2.1. Que significa RISC


A mediados de la dcada de los 70, el avance en el desarrollo de la tecnologa de
los semiconductores se tradujo en una disminucin de la diferencia en velocidad entre
la memoria principal y los propios procesadores. A medida que la velocidad de la
memoria se incrementa, y los lenguajes de alto nivel toman cada vez un mayor
protagonismo frente a los ensambladores, las razones para utilizar procesadores CISC se
ven claramente disminuidas, por lo que los diseadores de sistemas computacionales se
orientan hacia la optimizacin del rendimiento del sistema mediante la construccin de
un hardware ms rpido.

2.2. La base de un sistema RISC: Un set de instrucciones simple


Una de las claves bsica para la consecucin de la arquitectura RISC es que una
secuencia de instrucciones simples producen los mismos resultados que una

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

instrucciones de instrucciones complejas, pero esta secuencia puede ser implementada


con un diseo hardware ms sencillo y rpido.

2.3. Caractersticas RISC


Set de instrucciones simple
En un procesador RISC, el juego de instrucciones consta de instrucciones
bsicas y simples, de las cuales se pueden ejecutar operaciones complejas.
Igualdad de longitud de instrucciones
Cada instruccin tiene la misma longitud, por lo que su carga se realizar en una
nica transferencia.
Instrucciones de un ciclo mquina
La mayora de las instrucciones se completan en un ciclo mquina, lo que
permite al procesador manejar varias instrucciones al mismo tiempo. Este
pipelining es una de las claves para obtener una mayor velocidad de ejecucin en
estas mquinas.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

3. Dentro de una mquina RISC:

3.1. Pipelining
Uno de los principales objetivos de los diseadores de mquinas RISC es crear
el chip ms rpido posible, para lo cual utilizan un conjunto de tcnicas entre las que se
encuentra el pipelining
El pipelining es una tcnica de diseo, mediante la cual el hardware del
computador procesa ms de una instruccin al mismo tiempo, logrando as, que el
computador no tenga que esperar a que finalice la ejecucin de una instruccin para
comenzar la ejecucin de la siguiente.

En una mquina CISC las etapas bsicas en el ciclo de trabajo eran:


-

Carga

Decodificacin

Ejecucin

Almacenamiento de resultados

Estas mismas etapas se utilizan en una mquina RISC, pero estas son ejecutadas
en paralelo. Tan pronto como se completa una etapa, pasa su resultado a la siguiente
fase, y comienza a trabajar en la siguiente instruccin.
Por lo tanto, el rendimiento de un sistema pipeline depende del tiempo que tarde
la ejecucin de cada fase del pipeline, y no del tiempo de todas las fases.
En un pipeline de una mquina RISC, cada instruccin utiliza 1 ciclo de reloj
para cada fase, por lo que el procesador puede cargar una nueva instruccin por cada
ciclo de reloj. El pipeline no mejora la latencia de las instrucciones ( cada instruccin
sigue necesitando el mismo tiempo para completarse), pero si que mejora el tiempo total
de ejecucin.
Como ocurre tambin en las mquinas CISC, la ejecucin ideal no siempre se
consigue. Puede ocurrir que las instrucciones dentro del pipeline necesiten ms de un
ciclo para completar una fase. Cuando esto sucede, el procesador tiene que realizar una
espera y no aceptar una nueva instruccin hasta que la instruccin que ha provocado
este retraso haya pasado a la fase siguiente.
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

3.2. A tener en cuenta en sistemas con pipeline implementado


Un procesador que utiliza un pipeline de instrucciones puede verse
obstaculizado por diversos motivos, como puede ser los retrasos en la lectura de datos
desde la memoria, un diseo del set de instrucciones poco eficiente, o dependencias
entre instrucciones. Para solucionar estos y otros obstculos los diseadores proponen
las siguientes soluciones:
3.2.1. Velocidad de la memoria
Los problemas que plantean las memorias se solucionan generalmente
con la utilizacin de memorias cach. La cach es una porcin de la memoria de
mayor velocidad, que se sita entre el procesador y la memoria, que
generalmente es ms lenta. Cuando el procesador quiere operar sobre una
posicin de memoria principal, la posicin se copia sobre la cach. Por lo tanto,
referencias posteriores a esa posicin, se realizarn sobre la posicin en la cach,
que devolver un resultado ms rpidamente que la memoria principal.
Las memorias cach presentan un problema a los diseadores y a los
programadores: la coherencia. Cuando el procesador escribe un valor hacia la
memoria, el valor va hacia la cach y no hacia la memoria principal. Por lo
tanto, se necesita un hardware especial, generalmente implementado como parte
del propio procesador, para escribir esta informacin desde la cach a la
memoria principal antes de que algn otro proceso intente leer esa posicin, o
utilice esa parte de la cach para otra aplicacin.

3.2.2. Latencia de las instrucciones


Un set de instrucciones diseado de manera poco eficiente puede
provocar que el procesador se vea retrasado frecuentemente. La mayora de estos
retrasos provienen de:
-

instrucciones altamente codificadas: al igual que ocurre en las


mquinas CISC, requiriendo verificaciones y clculos para realizar la
decodificacin de la instruccin.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

instrucciones de longitud variable: necesitan varias referencias a


memoria para realizar la carga de la instruccin.

Instrucciones que acceden a la memoria principal: en lugar de utilizar


registros que son de carcter mucho ms rpido.

Instrucciones que realizan la lectura y posterior escritura sobre el


mismo registro.

Dependencias de recursos de acceso exclusivo: como el registro de


cdigos de condicin. Si una instruccin modifica el valor de alguno
de los bits de este registro, y la siguiente instruccin utiliza el valor
modificado, esta segunda instruccin se ver retrasada hasta que se
realice la escritura por parte de la primera instruccin.

3.2.3. Dependencias
Uno de los principales problemas que tiene que afrontar un programador
de sistemas RISC es que el procesador puede verse retrasado por una eleccin
incorrecta de instrucciones. Por el echo de que cada instruccin utiliza un cierto
tiempo en almacenar su resultado, y como se estn ejecutando instrucciones al
mismo tiempo, instrucciones posteriores tendrn que esperar por los resultados
de instrucciones precedentes. Para solventar este inconveniente se utiliza la
planificacin de instrucciones.
Otra tcnica utilizada para minimizar estas dependencias consiste en
evitar los bucles recursivos, en la cual, en vez de ejecutar una secuencia de
instrucciones dentro del bucle, el compilador planifica las instrucciones las veces
necesarias. Esta tcnica elimina el clculo y verificacin de la variable de control
del bucle.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Introduccin

3.3. Mejora de la velocidad en mquinas con pipeline


Se han desarrollado dos tcnicas para incrementar la velocidad dentro de los
pipelines:
3.3.1. Procesadores Superpipeline
Un sistema superpipeline divide cada fase del pipeline en dos sub-fases,
para posteriormente internamente la velocidad del reloj. Cada fase sigue
ejecutando un instruccin en cada ciclo de reloj, pero al ser el reloj interno dos
veces ms rpido, el pipeline carga dos instrucciones por cada pulso del reloj
(externo).

3.3.2. Procesadores Superescalares


Los procesadores superescalares contienen varias unidades de proceso
que son capaces de trabajar en paralelo. Esto permite al procesador trabajar con
varias instrucciones similares de manera concurrente, enviando cada instruccin
a la primera unidad de proceso que se encuentre disponible.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

1.- Aspectos Que Deben Concretarse En El Set De Instrucciones

Debemos tener presente los siguientes aspectos:

Formato de las instrucciones y codificacin.


Localizacin de los operandos: memoria, registros, ...

R0
R1

Register file

Memoria

R30
R31

D1
Ld r1, [ D2 ];
Ld r1, [ D1 ];
Add r2, r1, r0;
St [ R ], r2;
D2
El procesador MIPS presenta
una arquitectura de load/store,
en la que es necesario que los

operandos estn en los registros

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

10

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

En cuanto a los registros MIPS dispone de 32 registros de 32 bits cada uno, siendo
estos de propsito general.

Cuantos operandos explcitos pueden aparecer en una instruccin.

Que operandos estn en memoria.

Hemos de tener en cuenta el modo de direccionamiento de la memoria. En el caso


del MIPS es extremista superior, es decir, el byte de mayor peso ser el correspondiente
con la direccin de memoria ms baja.

Operaciones disponibles en el set de instrucciones.

Conocer cual es la siguiente instruccin a ejecutar.

2.- Formato De Las Instrucciones


En el microprocesador MIPS que estamos analizando los datos deben encontrarse
almacenado en los registros para poder operar con ellos. Esto hace que el MIPS posea
una estructura Load-Store (carga-almacenamiento).

Debemos tener en cuenta en las instrucciones:

1. Todas las instrucciones del microprocesador MIPS vienen representadas por una
cadena de 32 bits.

2. Se establecen distintos campos para cada tipo de instruccin.

2.1- Instrucciones Tipo R


Todas las instrucciones de este tipo leen dos registros, realizan una operacin en la
ALU sobre los contenidos de los registros y escriben el resultado. Llamamos a estas
instrucciones o instrucciones tipo R o bien instrucciones aritmtico-lgicas (ya que
realizan operaciones aritmticas o lgicas).
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

11

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

El formato para este tipo de instrucciones se corresponde con:


op

rs

rt

rd

shamt

6 bits

5bits

5bits

5bits

5bits

funct
6bits

op: operacin de la instruccin. Indica el tipo de operacin que se trata..


rs: primer registro del operando fuente.
rt: segundo registro del operando fuente.
rd: registro del operando destino; obtiene el resultado de la operacin.
shamt: cantidad de desplazamiento
funct : funcin; este campo selecciona la variante de la operacin del campo op.

Se presenta el problema cuando una instruccin necesita campos mayores que los
mostrados anteriormente (por ejemplo en una instruccin de carga deben especificarse
dos registros y una direccin, por lo que la direccin se vera reducida a 32 posiciones
de memoria). Esto es muy pequeo para que sea una direccin til para datos.
Por consiguiente, tenemos un conflicto entre el deseo que todas las instrucciones tengan
la misma longitud y el deseo que las instrucciones tengan un formato sencillo.

Ser necesario establecer un segundo tipo de formato de instrucciones.


2.2.- Intrucciones Tipo I
Este tipo de instrucciones son fundamentales puesto que se trata de las
instrucciones para la carga-almacenamiento de los datos, y la ALU nicamente puede
operar con los datos una vez que han sido cargados en los registros. Esto nos lleva a
cargar en los registros aquellas posiciones de memoria con las que deseemos operar.

El formato para las instrucciones de transferencia de datos se corresponde con el


mostrado a continuacin.
op

rs

rt

direccin

6 bits

5bits

5bits

16bits

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

12

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

op: tipo de operacin.


rs: refistro emplearo para formar la direccin de memoria.
rt: registro donde se recibe el resultado de la operacin.

2.3.- Intrucciones Tipo J


El direccionamiento ms simple se encuentra en la instrucciones de bifurcacin de
MIPS. Utilizan el formato final de instruccin MIPS, denominado tipo J, que consta de
6 bits para el campo de operacin y los restantes bits son para el campo de direccin.
El formato de las instrucciones tipo J se corresponde con:
op

Direccin de salto

6 bits

26bits

De forma distinta a la instruccin de bifurcacin, la instruccin de salto


condicional debe especificar dos operandos, adems de la direccin de salto.

El formato para este tipo de instruccin de salto condicional viene dado por la
siguiente estructura:
op

rs

rt

direccin

6 bits

5bits

5bits

16bits

3.- Tipos De Instrucciones


3.1 Intrucciones Aritmticas.

add rd, rs, rt

addu rd, rs, rt

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

rs

rt

rd

rs

rt

rd

0
5

0
5

020

Suma con desbordamiento

021

Suma sin desbordamiento

13

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

Pone la suma de los registros rs y rt en el registro rd.

addi rt, rs, inm

addu rt, rs, inm

rs

rt

inm

16

rs

rt

inm

16

Suma inmediata con desbordamiento

Suma inmediata sin desbordamiento

Pone la suma del registro rs y el inmediato de signo extendido en el registro rd.


Encontraramos los mismos casos para la resta (sub).

div rs, rt

divu rs,rt

rs

rt

01a

10

rs

rt

01b

10

Divisin con desbordamiento

Divisin sin desbordamiento

Divide el registro rs por el registro rt. Deja el cociente en el registro lo y el resto


en el registro hi.

mult rs, rt

multu rs, rt

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

rs

rt

018

10

rs

rt

019

10

Multiplicacin

Multiplicacin sin signo

14

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

multiplica los registros rs y rt. Deja la palabra de orden inferior del producto en el
registro lo y la de orden superior en el registro hi.

3.2.- Instrucciones Lgicas.

and rd, rs, rt

rs

rt

rd

024

Pone la AND lgica de los registros rs y rt en el registro rd.

0c

rs

rt

inm

16

andi rt, rs, inm

Pone la AND lgica del registro rs y del cero-extendido inmediato en el registro rd.

Podramos realizar de igual forma el OR lgico o la operacin XOR lgica de dos


registros o bien entre un registro y un inmediato.

neg rdest, rsrc

Valor negado (con desbordamiento)

negu rdest, rsrc

Valor negado (sin desbordamiento)

Pone el negativo del registro rsrc en el registro rdest.

nor rd, rs, rt

rs

rt

rd

024
6

Pone la NOR lgica de los registros rs y rt en el registro rd.


not rdest, rsrc
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

15

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

Pone la negacin lgica bit a bit del registro rsrc en el registro rdest.
rol rdest, rsrc1, rscr2

Desplazamiento cclico a la izquierda.

ror rdest, rsrc1, rscr2

Desplazamiento cclico a la derecha.

Desplaza circularmente el registro rsrc1 a la izquierda (derecha) la cantidad indicada por


el rsrc2 y pone el resultado en el registro rdest.

sll rd, rt, sa

sra rd, rt, sa

rs

rt

rd

sa

rs

rt

rd

sa

rs

rt

rd

sa

srl rd, rt, sa

Desplazamiento lgico a la
izquierda
Desplazamiento aritmtico
a la derecha

Desplazamiento lgico a la
derecha

Desplaza a la izquierda el registro rt (derecha) la cantidad indicada por el inmediato sa y


pone el resultado en el registro rd.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

16

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

3.3.- Intrucciones De Comparacin Y Salto.


3.3.1 Pseudoinstrucciones.

Son instrucciones que como tales no existen, pero el ensamblador se encarga de


traducirlas a instrucciones capaces de ser entendidas por el microprocesador.
Ejemplo: move $2, $1

Transfiere el contenido del registro $1 al $2.

3.3.2.- Instrucciones De Toma De Decisiones

Sirven para romper el flujo secuencial de las instrucciones. La toma de


decisiones se representa normalmente en los lenguajes de programacin utilizando la
instruccin if, a veces combinada con instrucciones goto y rtulos. MIPS incluye dos
instrucciones de toma de decisiones anlogas a una instruccin if con goto:

beq rs, rt, rtulo

rs

rt

Saltar sobre igual

desplazamiento
6

16

Esta instruccin significa ir a la sentencia rotulada si el valor de rs es igual al valor de rt.

bne rs, rt, rtulo

rs

rt

Saltar sobre no igual

desplazamiento
6

16

Significa ir a la sentencia rotulada si el valor de rs no es igual al valor de rt.


El test para la igualdad o desigualdad es probablemente el m popular, pero a
veces es til ver si una variable es menor que otra. Estas comparaciones se realizan en
MIPS con una instruccin que compara dos registros y pone un tercer registro a 1 si el
primero es menor que el segundo; en otro caso, lo pone a 0. la instruccin se denomina
inicializar sobre menor que:

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

17

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

slt rdest, rsrc1, rsrc2


Pone el registro rdest a 1 si el valor del registro rsrc1 es menor que el valor del registro
rsrc2;en otro caso, el registro rdest se pone a 0.

3.3.3.- Instrucciones De Bifurcar Registro.

Se trata de una bifurcacin incondicional a la direccin especificada en el registro.


0

jr rs

rs

Bifurca registro

8
6

16

3.3.4.- Instruccin Bifurca Y Enlaza.

jal ProcedureAddress

destino

26

Bifurca y enlaza

Bifurca incondicionalmente a la instruccin de destino. Guarda la direccin de la


siguiente instruccin en el registro rd.
La parte de enlaza del nombre significa que se forma un enlace al sitio que llama
para permitir que el procedimiento vuelva a la direccin adecuada.

3.4.- Instrucciones De Transferencia De Datos.


La instruccin de transferencia de datos que desplaza un dato desde memoria hasta
un registro se denomina carga. El formato de la instruccin es el nombre de la operacin
seguido por el registro que se va a cargar, despus la direccin de comienzo del array, y
finalmente un registro que contiene el ndice del elemento del array que se va a cargar.
As la direccin de memoria del elemento del array estar formada por la suma de la
parte constante de la instruccin y un registro.
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

18

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

lw rt, direccin

023

rs

rt

desplazamiento

16

Cargar plalabra

Carga la cantidad de 32 bits en direccin en el registro rt.

La instruccin complementaria a ala de cargar se denomina almacenar; esta


transfiere datos de un registro a memoria. El formato de una instruccin de
almacenamiento es similar al de una carga: el nombre de la operacin, seguido por el
registro que se va a almacenar, despus la direccin de comienzo del array, y finalmente
un registro que contiene el ndice del elemento del array que se va a almacenar.

sw rt, direccin

02b

rs

rt

desplazamiento

16

Almacena palabra

Almacena la palabra del registro rt en direccin.

3.5.-Instruccin De Manipulacin De Constantes

lui rt, inm

02b

rs

rt

desplazamiento

16

Carga superior inmediata

esta instruccin de cargar inmediato superior est desarrollada especficamente para


poner los 16 bits superiores de una constante en un registro, permitiendo que la
instruccin siguiente especifique los 16 bits inferores de la constante.
lui $16, 61
addi $16,$16,2304
Carga la media palabra inferior del inmediato en la media palabra superior del
registro rt. Los bits inferiores del registro se ponen a cero.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

19

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

3.6.- Otras Operaciones.

rfe

010 1
6

020

19

Vuelta de excepcin.

Restaura el registro de STATUS.

syscall

0c

20

Llamada al sistema

El registro $v0 contiene el nmero de la llamada al sistema suministrada por SPIM.

Ruptura
0

cdigo

0d

20

break

Provoca un cdigo de excepcin. La excepcin 1 est reservada al depurador.

No operacin

nop

No hace nada.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

20

Sistemas de Multiprocesamiento

Procesadores RISC
Set de Instrucciones

4.-Modos De Direccionamiento

Los modos de direccionamiento que podemos encontrar en el microprocesador MIPS


son:

1. Direccionamiento de registros, donde el operando es un registro.


2. Direccionamiento base o desplazamiento, donde el operando est en la posicin
de memoria cuya direccin es la suma de un registro y una direccin de la
instruccin.
3. Direccionamiento inmediato, donde el operando es una constante que est en la
misma instruccin.
4. Direccionamiento relativo al PC, donde la direccin es la suma del PC y una
constante de la instruccin.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

21

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

1.- Visin General.


La arquitectura MIPS consta de 32 registros de proposito general, para utilizar
como los operandos de las intrucciones artimticas, lgicas, etc, cada uno de tamao de
32 bits. En el microprocesador MIPS los operandos de las instrucciones deben partir
obligatoriamente de los registros, y su resultado debe almacenarse tambin en un
registro. Hay registros que tienen almacenados valores concretos que no se pueden
modificar, como el caso del registro $0, que siempre almacena el valor 0. Otro registro
especial es el $1, que se reserva para que el ensamblador maneje las
pseudoinstrucciones (instrucciones que aunque no estn implementadas en el hardware
de la mquina el compilador las entiende y desglosa en las correspondientes
instrucciones de lenguaje mquina) y grandes constantes.

2.- Operaciones que soporta la Arquitectura.


La unidad de proceso soporta las siguientes operaciones:
-

Aritmticas: tanto en coma fija como en coma flotante.

Lgicas: entre las que tenemos AND, OR, desplazamientos lgicos, etc.

Transferencias de datos: carga y almacenamiento en memoria

Saltos condicionales: saltos sobre igual, menor, etc.

Saltos incondicionales: llamadas a subrutinas,etc.

Las

operaciones

tanto

aritmticas

como

lgicas

se

deben

realizar

obligatoriamente en los registros del procesador, por lo que ser necesario realizar la
carga de los operandos en los registros mediante instrucciones de carga, y almacenar los
resultados en memoria mediante operaciones de almacenamiento. Por este echo se
denomina a este tipo de arquitecturas como de load-store.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

22

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

3.- Ruta de datos


3.1.- Fases en la ejecucin de una instruccin
Generalmente la ejecucin de una instruccin en un microprocesador conlleva
las siguientes fases
Recogida de la instruccin: El procesador busca en la memoria la instruccin a
ejecutar, en nuestro caso la palabra de 32 bits. Se carga en el registro de
instrucciones.
Decodificacin de la instruccin: Se interpreta cada uno de los campos que
forman la palabra de la instruccin. El primer campo que se interpreta es el
campo op que nos va a insdicar el tipo de instruccin a ejecutar.
Obtencin de los operandos: Se localizan y obtienen los operandos de la
instruccin correspondiente siendo almacenados en los registros.
Realizar la operacin indicada por la instruccin.
Recoger el resultado obtenido que ser almacenado en el caso de una operacin
lgica o aritmtica en un registro.
Ir a la proxima direccin de memoria y ejecutar de nuevo estas fases.

Estas fases vienen secuenciadas mediante ciclos de reloj. En el caso del empleo
de un nico ciclo para la ejecucin de la instruccin con todas las fases
anteriormente enumeradas, hemos de tener en cuienta que la duracin del ciclo
de reloj de ser lo suficientemente elevada para que de tiempo a ejecutar todas las
fases.
Con una ruta de datos de ciclo mltiple, como es el caso que nos ocupa, se
realiza una fase en cada ciclo de reloj, dando la posibilidad de utilizar la tcnica
del pipeline, aprovechando as los recursos de la arquitectura.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

23

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

3.2.- Elementos de la ruta de datos


Consta de:
q

Unidad Aritmtico-Lgica
Control

Control
n

Funcin

Cero

Resultado

Overflow

000

AND

001

OR

010

ADD

110

SUB

111

SET-ON-LESSTHAN

n
Acarreo

La obtencin de la respuesta correcta a la salida de la ALU tendr un cierto


retaso debido al retraso en la propagacin de las seales (acarreos intermedios),
y los retrasos propios de la lgica convencional.
q

Registros.
Son flip-flops de tipo D con un reloj comn para todos ellos. Son de tamao 32
bits.

Registro Programm Counter (PC)

Registro de Instrucciones (IR)

Multiplexores de diferente nmero de canales

3.3.- Descomposicin de la ejecucin de la instruccin en ciclos de reloj


3.3.1.- Bsqueda de la instruccin
Durante este primer ciclo de reloj se realizan las siguientes instrucciones.
-

Generacin de la direccin de memoria

Calculo de la siguiente direccin de memoria

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

24

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

Una vez que el sistema a ejecutado su secuencia de reset o inicializacin (puesta


en tensin) y ha alcanzado un rgimen estable, se lleva a cabo la ejecucin de
instrucciones.
Cuando la direccin de memoria est estable en el bs de direcciones,
transcurrido un cierto tiempo, la memoria devolver una instruccin o un dato en
el bus de datos.
En el caso de que esta sea una instruccin, deber ser una instruccin, esta pasa
al registro de instrucciones IR, almacenandola en el flanco descendente del reloj.
Al mismo tiempo se genera la direccin de la siguiente instruccin a ejecutar.
Como la instruccin tiene un formato de 32 bits, el clculo se realiza sumando 4
a la direccin actual del Programm Couter. Esta direccin calculada se almacena
de nuevo en el PC.
Debe respetarse un tiempo de hold, para que las lineas correspondientes estn
estables antes de comenzar una nueva fase:

setup

hold

3.3.2.- Decodificacin de la instruccin y bsqueda de registros.


En la fase anterior y todavia en esta, nos sabemos de que instruccin se trata. Se
leen los registros que sern utilizados en la ejecucin de la instruccin, y que vienen
indicados en los campos rs y rt de la instruccin. El contenido de los mismos pueden
ser necesarios en operaciones posteriores, por lo cual se hace uso del fichero de
registros.
Con la ALU tambin se calcula la direccin del salto, en el caso de que la
instruccin fuese de salto. Si la instruccin no fuera de salto, el resultado se ignorara.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

25

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

Como no sabemos si la instruccin va a ser o no de salto, y porque necesitamos


la ALU en pasos posteriores, guardamos la direccin de destino del hipottico salto en
el registro Target.
La realizacin anticipadamente de estas acciones previsoriamente, produce un
beneficio en la disminucin de los ciclos necesarios para ejecutar una instruccin.
Despues de este ciclo de reloj, las acciones a tomar dependern del contenido de
la palabra de instruccin.

3.3.3.- Ejecucin, clculo de la direccin de memoria o terminacin del salto


Este es el primer ciclo durante el cual la operacin a realizar en el camino de
datos est determinado por el tipo de instruccin que corresponda (R, J, etc.).
En todos los casos la ALU opera sobre los operandos preparados en la fase
anterior, realizando la funcin correspondiente indicada por sus lineas de control,
dependiendo del tipo de instruccin a realizar.
Denominamos a la salida de la ALU ALUoutput para utilizarlo en etapas
posteriores. Como las entradas de esta estn estables (respetando el tiempo de setup), no
es necesario guardar estas en ningn registro a la entrada de la ALU (como podria
espararse en arquitecturas de bus nico o bus doble). Las seales de control que afecten
al resultado de la ALU deben mantenerse estables hasta el final del ciclo, hasta que los
resultados se almacenen en el registro correspondiente o no vuelvan a utilizarse (debido
a los retrasos combinacionales, etc. de la ALU).
Cada uno de los registros fuente vendr codificado en 5 bits (25=32). Es en esta
fase cuando se extraen los contenidos de los registros.
Segn sea la instruccin, se realizarn las siguientes operaciones:
Instrucciones de referencia a memoria
La ALU suma los operandos para formar la direccin de memoria. La
primera entrada de la ALU ser la primera salida del archivo de registros, por
otro lado la salida de la extensin de signo se utiliza como la segunda entrada de
la ALU (la ALU se fuerza a sumar estos operandos).
Instrucciones Arimtico-Lgicas

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

26

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

La ALU realiza la operacin especificada poe el cdigo de operacin con


los dos registros ledos en la fase anterior. Esto se corresponder con situar las
salidas del archivo de registros a la entrada de la ALU.
Instrucciones de salto: Salto condicional
La ALU se utiliza para realizar la comparacin entre los dos registros
ledos en el ciclo anterior. La seal Zero de salida de la ALU se
utilizar para determinar si hay o no salto. La ALU realizar el test de
igualdad restando ambos registros. Es necesario disparar una seal de
escritura para actualizar el registro Programm Counter si se activa la
seal de Zero.

3.3.4.- Acceso a memoria o terminacin de la instruccin de tipo R.


Durante este paso, los accesos a memoria de las operaciones de carga y
almacenamiento y operaciones de carcter aritmtico-lgicas pasan a almacenar el
resultado generado.
A la salida de la memoria la denominaremos Memory-Data, y debido a que su
salida ser estable, durante el siguiente ciclo de reloj ser cuando se escriba el resultado
en un registro (Una vez ejecutada la operacin salvamos el resultado en el fichero de
registros).
Segn la operacin:
Instrucciones de referencia a memoria
Si la operacin es de carga, devuelve el dato de memoria. Si la
instruccin es un almacenamiento, entonces el dato se escribe en memoria. En
cualquier caso la direccin utilizada ser la calculada en el ciclo anterior.
Instrucciones aritmtico-lgicas
Se debe colocar el resultado obtenido en la operacin de la ALU en el
registro de resultado Result.
Como las escrituras se realizan cuando llega el flanco descendente, la
escritura del registro rd no debe afectar al dato que actualmente se est
leyendo, aunque el registro de destino sea el registro fuente de la instruccin.
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

27

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

3.3.5.- Fase de postescritura


Escribe el dato cargado en memoria en el archivo de registros.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

28

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.- Algunos diagramas explicativos


4.1.- Esquema general
PCWrCond
PCWr

Zero

PCSrc

IorD

MemWr

IRWr

RegDst

RegWr

BrWr

ALUselA

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr
32

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

Imm

32

16

Extend

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

MemtoReg

ALUSelB

ALUOp

29

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.2.- Carga de la instruccin


4.2.1.- Primera parte
PCWrCond
PCWr=?

PCSrc

Zero
IorD

MemWr=?

IRWr=?

RegDst

RegWr

BrWr

ALUselA

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control=?
<<2

Imm

32

16

Extend

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

"Se accede a
la direccin de
memoria a la
que apunta el
PC
" Se actualiza
el valor del PC

MemtoReg

ALUSelB

ALUOp

30

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.2.2.- Segunda parte


PCWrCond
PCWr=1

Zero

PCSrc

IorD

MemWr=0

IRWr=1

RegDst

RegWr

BrWr

ALUselA

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU
control=ADD

<<2

Imm

32

16

Extend

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

" Se carga la
instruccin en
el IR
" Se actualiza
el valor del PC

MemtoReg

ALUSelB

ALUOp

31

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.3.- Decodificacin de instruccin y carga de los registros:


4.3.1 Primera parte
PCWrCond=0
PCWr=0

Zero

PCSrc=x

IorD=x

MemWr=0

IRWr=0

RegDst=x

RegWr=0

BrWr

ALUselA=x

Target

1
M
U
X
0

PC

Ra

32

RAdr

M
U
X
32

32

Bus A

rt

Zero

32

M
U
X

rs

32

Rb

MEMORIA

IR

rt

32
32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

Op
6

Func

32

16

Extend

Imm

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

MemtoReg

ALUSelB=xx

En el bus A
se pone el
contenido del
registro rs
En el bus B
se pone el
contenido del
registro rt

ALUOp=xx

32

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.3.2 Segunda parte


PCWrCond=0
PCWr=0

Zero

PCSrc=x

IorD=x

MemWr=0

IRWr=0

RegDst=x

RegWr=0

BrWr=1

ALUselA=0

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

En caso de que
sea un salto se
calcula el
desplazamiento
relativo, se
suma al PC y se
guarda en el
registro Target

Op

Al control para
generar Beq,
Rtype, Ori,
Memory

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Func

16

Imm

ExtOp=1

32

Extend

MemtoReg

ALUSelB=10

ALUOp=suma

33

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.4.- Completado del salto


PCWrCond=1
PCWr=0

Zero

PCSrc=1

IorD=x

MemWr=0

IRWr=0

RegDst=x

RegWr=0

BrWr=0

ALUselA=1

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

32

WrAdr
32
32

Din

rt

FICHERO DE
REGISTROS

M
U
X

rd

A
L
U

RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

32

16

Extend

Imm

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Se carga la
direccin de
salto en el PC
segn el
resultado de la
comparacin

MemtoReg

ALUSelB=01

ALUOp=Sub

34

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.5.- Ejecucin de instruccin aritmtico-lgica


4.5.1.- Primera parte
PCWrCond=0
PCWr=0

Zero

PCSrc

IorD

MemWr=0

IRWr=0

RegDst=1

RegWr=0

BrWr=0

ALUselA=1

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr
32

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

Imm

32

16

Extend

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

MemtoReg

ALUSelB=01

ALUOp=Rtype

35

Sistemas de Multiprocesamiento

Procesadores RISC
Ruta de datos

4.5.2.- Segunda parte


PCWrCond=0
PCWr=0

Zero

PCSrc

IorD

MemWr=0

IRWr=0

RegDst=1

RegWr=0

BrWr=0

ALUselA=1

Target

1
M
U
X
0

PC

32

rs

rt

Ra

32

RAdr

M
U
X
32

32

Zero

32

M
U
X
1

Bus A
Rb

MEMORIA

IR

rt

32
32
32

Din

A
L
U

4
0

M
U
X

rd

WrAdr

FICHERO DE
REGISTROS
RW

32

32

Bus B

1
MUX

Dout
busW

32

2
3

MUX

ALU control
<<2

Imm

32

16

Extend

ExtOp

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

MemtoReg

ALUSelB=01

ALUOp=Rtype

36

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

IMPLEMENTACIN DEL CONTROL

1.- Introduccin
Hay diversas tcnicas para implementar la unidad de control. La utilidad de estas
tcnicas depende de la complejidad del control, caractersticas tales como nmero
medio de estados siguientes para un estado dado, y la tecnologa de implementacin.
La forma ms sencilla de implementar la funcin de control es con un bloque de
lgica que tome como entradas el estado actual y el campo de cdigo de operacin del
registro de una instruccin y produzca como salidas las seales de control del camino de
datos y el valor del estado siguiente. La representacin inicial puede ser un diagrama de
estados finito o un microprograma. En el ltimo caso, cada microinstruccin representa
un estado. En una implementacin que utilice un controlador de estados finitos, la
funcin del estado siguiente se calcular con lgica.
Un mtodo alternativo de implementacin calcula la funcin del estado siguiente
utilizando un contador que incrementa el estado actual para determinar el estado
siguiente. Cuando el estado siguiente no es el siguiente secuencialmente, se utiliza otra
lgica para determinar el estado

2.- Microprogramacin: Simplificar El Diseo Del Control


Para el control de un sencillo subconjunto MIPS, una representacin grfica de la
mquina de estados finitos es adecuada, ya que podemos dibujar el diagrama en una
pgina y traducirlo a ecuaciones sin generar muchos errores. No as podemos considerar
una implementacin del repertorio completo de instrucciones MIPS, que contiene unas
cien instrucciones, evidentemente la funcin de control ser mucho ms compleja.
En estos casos, especificar la unidad de control con una representacin grfica ser
molesto y determinar las ecuaciones con funciones complejas de control, sin cometer
ningn error, es algo prcticamente imposible.
Podemos utilizar algunas ideas de programacin para crear un mtodo de
especificacin del control que haga ms fcil comprenderlo y disearlo. Suponer que
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

37

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

consideramos el conjunto de seales de control que deben ser asertadas en un estado


como una instruccin que va a ser ejecutada por el camino de datos. Para evitar
confundir las instrucciones MIPS con las instrucciones de control de bajo nivel, a estas
ltimas las denominamos microinstrucciones. Cada microinstruccin define el conjunto
de seales de control del camino de datos que deben ser asertadas en un estado dado.
Ejecutar una microinstruccin

tiene el efecto de asertar las seales de control

especificadas por la microinstruccin.


Adems de definir qu seales de control deben ser asertadas, debemos especificar
tambin el secuenciamiento, es decir, indicar la microinstruccin que debe ejecutarse a
continuacin. En la mquina de estados finitos el estado siguiente se determina de una
de dos formas diferentes. A veces un estado sencillo sigue al estado actual
incondicionalmente, en otros casos, la eleccin del estado siguiente depende de la
entrada. Cuando escribimos los programas, tambin tenemos una situacin anloga. A
veces, un grupo de instrucciones debe ejecutarse de forma secuencial, y en ocasiones
necesitamos saltar. En programacin lo implcito es la ejecucin secuencial, mientras
que saltar debe indicarse explcitamente.

Lgica de control
Combinacional

Salidas de
control del
camino de datos
Salidas

Entradas

Estado siguiente

Entradas del campo de

Registro

cdigo de operacin del

estado

de

registro de instruccin

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

38

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

Para describir el control como un programa, tambin asumiremos que las


microinstrucciones escritas secuencialmente se ejecutarn en secuencia, mientras que
saltar debe indicarse explcitamente. El mecanismo de secuenciamiento implcito puede
implementarse utilizando una estructura como la de la figura, sin embargo, con
frecuencia es ms eficiente implementar el estado secuencial implcito utilizando un
contador.

Registro de
estado

Sumado

MUX

Dispatch ROM1
OP
Name
000000
Rtype
000010
jmp
000100
beq
001011
ori
100011
lw
101011
sw

State
0110
1001
1000
1010
0010
0010

Dispatch ROM2
OP
Name
100011
lw
101011
sw

State
0011
0101

0
ROM1

ROM2

Cdigo de

Disear el control como un programa que implementa las instrucciones mquina


en funcin de microinstrucciones ms sencillas se denomina microprogramacin. La
idea clave es representar simblicamente los valores asertados en las lneas de control,
para que el programa sea un representacin de microinstrucciones, de la misma forma
que el lenguaje ensamblador es una representacin de las instrucciones mquinas. Al
escoger una sintaxis para un lenguaje ensamblador, habitualmente representamos las
instrucciones mquina como una serie de campos (cdigo de operacin, registros y
campo de desplazamiento o inmediato), de igual forma, representamos una
microinstruccin sintcticamente como una secuencia de campos cuyas funciones estn
relacionadas.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

39

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

3.- Definicin Del Formato De Microinstruccin


El microprograma es una representacin simblica del control que ser traducido
por un programa a la lgica de control. De esta forma, podemos escoger el nmero de
campos que tenga una microinstruccin y las seales de control que afectarn a cada
campo. El formato de la microinstruccin debe escogerse para que simplifique la
representacin, haciendo ms fcil la redaccin y comprensin del microprograma. Por
ejemplo, es til tener un campo que controle la ALU y un conjunto de tres campos que
determinen las dos fuentes para la operacin de la ALU as como el destino del
resultado de la ALU. Adems para la legibilidad tambin nos gustara que el formato de
microprograma hiciese difcil o imposible escribir microinstrucciones inconsistentes.
Una microinstruccin es inconsistente si requiere que una seal de control dad sea
inicializada por dos valores diferentes.
Para evitar un formato que permita microinstrucciones inconsistentes podemos
hacer que cada campo de la microinstruccin sea responsable de especificar un conjunto
de seales de control sin solapamiento en el tiempo. Las seales que nunca son
asertadas simultneamente pueden compartir el mismo campo.
A continuacin se muestra cmo puede descomponerse una microinstruccin en
ocho campos y define la funcin general de cada campo. Los siete primeros campos de
la microinstruccin controlan el camino de datos, mientras que el campo de
secuenciamiento especifica cmo seleccionar la siguiente microinstruccin.
Nombre campo
Control ALU

Funcin de campo
Especifica la operacin que va a realizar la ALU durante este reloj

SRC1

Especifica la fuente para el primer operando de la ALU

SRC2

Especifica la fuente para el segundo operando de la ALU

Destino ALU

Especifica un registro para escribir el resultado de la ALU

Memoria

Especifica lectura o escritura y la fuente de la direccin

Registro memoria

Especifica el registro destino (para una lectura en memoria) o la fuente


de los valores (para una escritura en memoria).

Control PCWrite

Especifica la escritura del PC.

Secuenciamiento

Especifica cmo escoger la siguiente instruccin que se va a ejecutar

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

40

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

Las microinstrucciones se colocan habitualmente en una ROM o una PLA, as


podemos asignar direcciones a las microinstrucciones. Las direcciones habitualmente se
dan secuencialmente.
Existen tres mtodos diferentes para seleccionar la siguiente microinstruccin que
se va a ejecutar:

1.- Incrementar la direccin de la microinstruccin actual para obtener la direccin


de la microinstruccin siguiente. Esto se indica en el microprograma colocando seq en
el campo secuenciamiento. Como la ejecucin secuencial de las instrucciones se
encuentra con frecuencia, muchos sistemas de microprogramacin hacen esto
implcitamente y sencillamente dejan en blanco la entrada.

2.- Saltar a la microinstruccin donde comienza la ejecucin de la siguiente


instruccin en MIPS. Rotularemos esta microinstruccin inicial (correspondiente al
estado 0) como Fetch (Bsqueda) y colocaremos el indicador Fetch en el campo de
secuenciamiento para indicar esta accin.

3.- Seleccionar la siguiente microinstruccin segn la entada de la unidad de


control. Seleccionar la siguiente microinstruccin basndose en alguna entrada se
denomina distribucin (dispatch). Las operaciones de distribucin habitualmente se
implementan creando una tabla que contiene las direcciones de las microinstrucciones
destino. Esta tabla est indexada por la entrada de la unidad de control y puede ser
implementada en una ROM o en una PLA. Con frecuencia hay mltiples tablas de
distribucin; para esta implementacin necesitamos dos tablas de distribucin, una para
distribuir a partir del estado 1 y otra para distribuir a partir del estado 2. indicamos que
la microinstruccin siguiente debera escogerse por una operacin de distribucin
colocando dispatch i, donde i es el nmero de la tabla de distribucin en el campo
secuenciamiento.
En la siguiente figura se da una descripcin de los valores permitidos para cada
campo de la microinstruccin y el efecto de los valores de los diferentes campos.
Nombre de
campo

Valores de
campo

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

Funcin del campo con valores especficos

41

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

Control ALU

SCR1
SCR2

Destino ALU
Memoria

Registro
memoria

Control PCWrite

Secuenciamiento

Add

Hace que sume la ALU

Func code

Utiliza el cdigo de funcin de la instruccin para determinar


el control de la ALU

Subt

Hace que reste la ALU

PC

Utiliza el PC como primera entrada a la ALU

Rs

El registro rs es la primera entrada a la ALU

Utiliza 4 para la segunda entada a la ALU

Extend

Utiliza la salida de la unidad de extensin de signo como


segunda entrada a la ALU

Extshft

Utiliza la salida del desplazamiento en 2 unidades como


segunda entrada a la ALU

Rt

El registro rt es la segunda entrada a la ALU

Target

La salida de la ALU se escribe en el registro destino

Rd

La salida de la ALU se escribe en el registro rd

Read PC

Lee en memoria utilizando el PC como direccin

Read ALU

Lee en memoria utilizando la salida de la ALU como direccin

Write ALU

Escribe en memoria utilizando la salida de la ALU como


direccin

IR

El dato ledo en memoria se escribe en el registro de


instruccin.

Write rt

El dato ledo en memoria se escribe en el registro rc

Read rt

El dato ledo en memoria se escribe en el registro rt

ALU

Escribe la salida de la ALU en el PC

Target-cond

Si la salida Zero de la ALU est activa, escribe el PC con el


contenido del registro destino

Jump address

Escribe el PC con la direccin de bifurcacin de la instruccin

Seq

Elige secuencialmente la siguiente microinstruccin

Fetch

Va a la primera microinstruccin para comenzar una nueva


instruccin.

Dispatch i

Distribuye utilizando la ROM especificada por i

4.- Creacin Del Microprograma


Ahora crearemos es microprograma para la unidad de control. Rotularemos las
instrucciones del microprograma con rtulos simblicos, que se pueden utilizar para
especificar el contenido de las tablas de distribucin. Al escribir el microprograma, hay
dos situaciones en las cuales puede ser deseable dejar en blanco un campo de la
microinstruccin. Cuando un campo que controla una unidad funcional o que hace que
se escriba un estado est en blanco. Ninguna seal de control debe ser asertada. Cuando
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

42

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

un campo solamente especifica el control de un multiplexor que de termina la entrada a


una unidad funcional, dejarlo en blanco significa que no nos importa la entrada de la
unidad funcional (la salida del multiplexor).
La forma ms fcil de comprender el microprograma es descomponerlo en partes
que traten cada componente de la ejecucin de la instruccin. El primer componente de
cada ejecucin de instruccin es buscar las instrucciones, a continuacin decodificarlas
y calcular por lo tanto el PC secuencial como el PC de destino de salto. Estas dos
acciones corresponden directamente a los dos primeros pasos de ejecucin de cualquier
instruccin. Las dos microinstrucciones necesarias para estos dos primeros pasos se
muestran a continuacin:
Rtulo
Fetch

Control
ALU
Add

PC

Add

PC

Extshft

SRC1

SRC2

Destino
ALU

memoria
Read PC

Registro
memoria
IR

Control
PCWrite
ALU

Target

Secuencia
Seq
Dispatch1

Para comprender qu hace cada microinstruccin, es ms fcil observar el efecto


de un grupo de campos. En la primera microinstruccin, los campos asertados y sus
efectos son:
Campos
Control ALU,SCR1,SCR2

Efecto
Calcula PC+4

Memoria y registro memoria

Busca instruccin en IR

Control PCWrite

Hace que la salida de la ALU se escriba en el PC

Secuenciamiento

Va a la siguiente microinstruccin

Para la segunda microinstruccin, los registros se leern utilizando los campos del
Registro de instruccin. Las dems operaciones controladas por la microinstruccin son:
Campos
Control ALU,SCR1,SCR2

Efecto
Almacena PC+extensin de signo en Destino

Secuenciamiento

Utiliza la tabla de distribucin 1 para escoger la direccin de la siguiente


microinstruccin.

Podemos considerar la operacin de distribucin como una sentencia case que


utiliza el cdigo de operacin y la tabla de distribucin 1 para seleccionar una de cuatro
secuencias de microinstrucciones (referencia a memoria, instrucciones tipo R, saltos y
bifurcaciones). El microprograma para las instrucciones de referencia a memoria tiene
Vicente Fernndez del Rio
Luis Alberto Fernndez Garca
Elena Redondo Andrs

43

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

cuatro microinstrucciones, como mostramos ms abajo. La primera instruccin hace el


clculo de la direccin de memoria. Es necesaria una secuencia de dos instrucciones
para completar una carga (lectura de memoria seguida por escritura en registro),
mientras que el almacenamiento requiere solamente una microinstruccin despus del
clculo de la direccin de memoria:

LWSW1

Control
ALU
Add

rs

Extend

LW2

Add

rs

Extend

ReadALU

SW2

Add
Add

rs
rs

Extend
Extend

ReadALU
ReadALU

Rtulo

SRC1

SRC2

Destino
ALU

Memoria

Registro
memoria

Control
PCWrite

Secuencia
Dispatch2
Seq

Write rt
Read rt

Fetch
Fetch

Examinamos los campos de la primera microinstruccin en esta secuencia:


Campos
Control ALU,SCR1,SCR2

Efecto
Calcula la direccin de memoria: registro(rs)+Signo extendido

Secuenciamiento

Utiliza la tabla de distribucin 2 para bifurcar o a LW2 o a SW2

La primera microinstruccin de la secuencia especifica que lw est rotulada en


LW2. esta microinstruccin tiene el siguiente efecto:
Campos
Control ALU,SCR1,SCR2

Efecto
La salida de la Alu es todava una direccin de memoria

Memoria

Lee en memoria utilizando la salida de la ALU como direccin

Secuenciamiento

Va a la siguiente microinstruccin

La siguiente microinstruccin completa la ejecucin con una microinstruccin que


tiene los efectos siguientes:
Campos
Control ALU,SCR1,SCR2

Efecto
La salida de la Alu es todava una direccin de memoria

Memoria
memoria

Lee en memoria utilizando la salida de la ALU como direccin y escribe


el resultado en el registro designado por rt

registro

Secuenciamiento

Va a la microinstruccin rotulada por Fetch

Observar que como los campos de las dos microinstrucciones que completan una
instruccin de cargar una palabra no son contradictorios, podemos combinar estas dos
microinstrucciones en una sola microinstruccin de la forma

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

44

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

Rtulo
LW2

Control
ALU
Add

SRC1
rs

SRC2

Destino
ALU

Extend

Memoria
ReadALU

Registro
memoria
Write rt

Control
PCWrite

Secuencia
Fetch

Este proceso es realizado con frecuencia por un optimizador de microcdigo para


reducir el nmero de microinstrucciones. Sin embargo, si realizamos este cambio,
probablemente se incrementara la duracin del ciclo de reloj, ya que tanto el acceso a
memoria como la escritura de registros se deberan realizar en una sola
microinstruccin, y cada microinstruccin corresponde a un solo ciclo de reloj. Por
tanto, cuando intentamos optimizar el microcdigo, a mano o con un programa,
debemos saber qu conjuntos de acciones de distribucin pueden realizarse en el ciclo
de reloj que estamos diseando.

La microinstruccin de almacenamiento, rotulada SW2, opera de forma anloga a


la microinstruccin de carga rotulada por LW2:
Campos
Control ALU,SCR1,SCR2

Efecto
La salida de la Alu es todava una direccin de memoria

Memoria
memoria

Escribe en memoria utilizando la salida de la ALU como direccin y el


registro designado por rt como valor a escribir

registro

Secuenciamiento

Va a la microinstruccin rotulada por Fetch

La secuencia del microprograma para las instrucciones tipo R est formadas por
dos microinstrucciones: la primera realiza la operacin de la ALU, mientras que la
segunda escribe el resultado en el archivo de registros:
Rtulo
Rformat1

Control
ALU
Funccode

SRC1

SRC2

rs

rt

Funccode

rs

rt

Destino
ALU

Memoria

Registro
memoria

Control
PCWrite

Secuencia
Seq

rd

Fetch

Igual que en el ejemplo de instruccin de carga anterior, podramos combinar estas


dos microinstrucciones en una sola microinstruccin. Sin embargo, esto significara que
la ALU y la postescritura en el registro se realizaran en el mismo ciclo de reloj,

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

45

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

desembocando posiblemente en un ciclo de reloj ms largo y en una mquina ms lenta.


La primera microinstruccin inicia la operacin de la ALU:
Campos
Control ALU,SCR1,SCR2

Efecto
La ALU opera sobre el contenido de los registros rs y rt, utilizando el
campo func para especificar la operacin de la ALU

Secuenciamiento

Va a la siguiente microinstruccin.

La segunda microinstruccin hace que la salida de la ALU se escriba en el archivo


de registros:
Campos
Control ALU,SCR1,SCR2

Efecto
La ALU contina la misma operacin. El campo destino ALU especifica
que rd se utiliza para escoger el registro destino

Secuenciamiento

Va a la microinstruccin rotulad Fetch

La secuencia de microprograma para saltos requiere una microinstruccin


Rtulo
BEQ1

Control
ALU
Subt

SRC1

SRC2

rs

rt

Destino
ALU

Memoria

Registro
memoria

Control
PCWrite
Targetcond

Secuencia
Fetch

Los campos asertados de esta microinstruccin son:


Campos
Control ALU,SCR1,SCR2

Efecto
La resta los operandos de los registros para generar la salida zero

Control PCWrite

Hace que se escriba en el PC utilizando el valor destino, si la salida zero


de la ALU es verdadera

Secuenciamiento

Va a la microinstruccin rotulad Fetch

La secuencia de microcdigo de bifurcacin tambin est formada por una


microinstruccin:
Rtulo

Control
ALU

SRC1

JUMP1

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

SRC2

Destino
ALU

Memoria

Registro
memoria

Control
PCWrite
Jump
address

Secuencia
Fetch

46

Sistemas de Multiprocesamiento

Procesadores RISC
Unidad de Control

Solamente son asertados dos campos de esta microinstruccin


Campos
Control PCWrite

Efecto
Hace que se escriba en el PC utilizando el campo de bifurcacin

Secuenciamiento

Va a la microinstruccin rotulad Fetch

El microprograma completo est formado por las diez microinstrucciones que


aparecan anteriormente. Este microprograma es traducido a microinstrucciones y tablas
de distribucin, que despus pueden ser implementadas en ROM o PLA. este proceso es
directamente anlogo al proceso de traducir un programa del lenguaje ensamblador a
instrucciones mquina.

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

47

Sistemas de Multiprocesamiento

Procesadores RISC
Bibliografia

Bibliografa:
Organizacin y diseo de computadores: La interfaz hardware/software
David A. PattersonJohn L. Henessy
McGraw Hill-1995
http://www.employees.org/~vivek/html/risc.html
http://webopedia.internet.com/TERM/R/RISC.html
http://kandor.isi.edu/aliases/PowerPC_Programming_Info/intro_to_risc/irt5_ri
sc2.html
http://www.mips.com/
http://www.usarc.army.mil/99thrsc/DSCIM/rschtml/hardhtml/risc.htm
http://www-flash.stanford.edu/~jlh/
http://www.cs.washington.edu/homes/lazowska/cra/risc.html
http://www.cs.berkeley.edu/~pattrsn/
http://arstechnica.com/cpu/4q99/risc-cisc/rvc-1.html
http://www.consulintel.es/Html/Tutoriales/Articulos/risc.html

Vicente Fernndez del Rio


Luis Alberto Fernndez Garca
Elena Redondo Andrs

48

También podría gustarte