Vous êtes sur la page 1sur 54

1

Captulo 13.

Diseo de un procesador multiciclo.


13.1 Reutilizacin de los recursos y tiempos de ejecucin de acuerdo a la instruccin.
En el modelo del procesador monociclo el perodo del reloj se ajusta con la ruta crtica combinacional, que es la establecida por la instruccin ms lenta en completar sus transferencias. En el ejemplo que se desarrolla, la instruccin load word fija el perodo del reloj. Sin embargo debe tenerse en cuenta que el funcionamiento de la memoria se ha simplificado, ya que es posible que sta no pueda efectuar sus funciones en un ciclo tan corto, como se ver ms adelante; si lo que se desea leer no est en la memoria cach, debe buscarse en la cach secundaria, lo cual puede tomar dos a tres veces el tiempo que se emplea al operar con la cach primaria. Y si se produce un fallo de la secundaria, debe accesarse a la memoria principal, lo que tiene un costo de 20 a 50 ciclos. Tambin si existen instrucciones que demoren demasiado tiempo (las de punto flotante, por ejemplo), la frecuencia del reloj debe ajustarse al tiempo de ejecucin de la que ms tarda en realizarse. Por otra parte los recursos pueden emplearse slo una vez por cada ciclo de reloj, lo que lleva a duplicar algunas unidades funcionales (por ejemplo: sumadores, memoria). Estas razones conducen a pensar en permitir que las instrucciones puedan ser realizadas con varios ciclos de reloj; dependiendo de la complejidad de stas, algunas podrn ser realizadas en pocos ciclos, otras necesitarn ms ciclos. Es decir, aqullas que terminan sus transferencias en menos tiempo, ocuparn menos ciclos de reloj (y se realizan en menos tiempo). Lo anterior permite que las instrucciones tengan tiempos de ejecucin diferentes, ya que emplean diferente nmero de ciclos de reloj; y tambin permite realizar diseos de menor costo, al posibilitar el compartir los recursos y reutilizarlos durante la ejecucin de una instruccin. Un recurso puede ser empleado ms de una vez en la realizacin de una instruccin, siempre que se use en diferentes ciclos del reloj. En el modelo multiciclo que se describe, cada paso o etapa de ejecucin debe emplear un ciclo de reloj.

Profesor Leopoldo Silva Bijit

19-11-2008

Estructuras de Computadores Digitales

13.2. Uso de registros para separar etapas.


Los datos que sern empleados por las siguientes instrucciones deben ser almacenados en registros o en la memoria. Los datos que se emplearn en los siguientes ciclos del reloj, al ejecutar una determinada instruccin deben ser almacenados en registros adicionales. La ubicacin de estos registros adicionales, depender de si el retardo de propagacin de la unidad permite ajustarse al perodo del reloj, y por otra parte de que el dato sea ocupado en los prximos ciclos de ejecucin de la misma instruccin. Tambin la necesidad de registros adicionales depender de si se desea compartir el recurso. Por ejemplo si se desea tener slo una memoria, tanto para datos como para instrucciones, se requieren dos registros adicionales que capturen los datos ledos desde la memoria; uno para guardar la instruccin, otro para registrar la lectura de la memoria en la instruccin load word. Un esquema conceptual de la mquina monociclo, muestra una unidad combinacional con gran retardo de propagacin, ubicada entre dos unidades de almacenamiento (memoria o registros):

T1 = tr + tp + ts + tskew > = Tclk1 Reg A Reg B Figura 13.1. Esquema mquina monociclo. Si se pudiera dividir la unidad combinacional, en dos partes que supondremos con iguales tiempos de propagacin, se tendr el esquema siguiente:

Tclk1

T2 = T1/2

Reg AdicionalB

T2 = T1/2 Etapa B

Reg A

Etapa A

Tclk2=Tclk1/2
Figura 13.2. Divisin unidad combinacional. Se realiza el mismo trabajo, que en el esquema anterior, pero en dos ciclos ms rpidos en lugar de uno ms lento. Profesor Leopoldo Silva Bijit 19-11-2008

Reg B

Diseo procesador multiciclo

Se agrega el tiempo de setup (ts) y de clock hasta la salida (tf), con respecto al caso anterior. Pero en un mismo ciclo de reloj, pueden ocuparse simultneamente ambas etapas, esto es lo que permite compartir un recurso; ya que se lo puede usar en diferentes ciclos de ejecucin de una misma instruccin. La ubicacin de los registros que definen etapas o ciclos deben ser relativamente equilibrados, ya que esto tiende a minimizar la duracin del ciclo del reloj. Ya vimos que en la especificacin de las transferencias fsicas del modelo monociclo, podan agruparse las transferencias segn la unidad en que se realizaban. Si lo que se desea es que cada unidad opere en un ciclo de reloj, el anlisis de las transferencias realizadas en cada unidad permite identificar los registros adicionales necesarios. Debe notarse que en el caso monociclo todas las transferencias, que estn separadas en lneas, se estn ejecutando con la informacin fluyendo a travs de las etapas (y no hay registros intermedios) mediante la red de cables o buses(pero los cables no almacenan la informacin, salvo mientras dure la propagacin a travs de stos). Se emplean los registros adicionales IR(registro de Instruccin), A y B (salidas de la Unidad de Registros), S (salida de Unidad de Operaciones) y M (Registro con el dato ledo de la memoria. Memory Data Register). Estos registros se escriben en cada ciclo de reloj y no requieren control adicional, excepto IR que requiere mantener la informacin para la unidad de registros, la de ejecucin y control. Sin embargo se han dibujado en el diagrama las seales de habilitacin de escritura de registros adicionales, y tambin se incorporan las seales que los controlan en las secuencias correspondientes.

13.3. Etapas en la ejecucin de instrucciones.


Entonces se tienen cinco etapas para la ejecucin de instrucciones(no todas las intrucciones emplean todas las etapas): 1. Bsqueda de la Instruccin. Lectura de Memoria de Instrucciones y clculo de direccin de prxima instruccin. 2. Decodificacin de la Instruccin y lectura de registros. 3. Ejecucin de operaciones con formato R y clculo de la direccin efectiva de Memoria. 4. Lectura de Memoria de Datos o Escritura en Memoria de Datos. 5. Escritura en Registros. Pueden rescribirse las transferencias empleadas en el diseo del procesador monociclo, pero ahora cada lnea representa un ciclo diferente de reloj. Por esta razn los grupos de micro operaciones que se realizan juntas en un ciclo de reloj, se separan por comas y el grupo est terminado en un punto y coma. El trmino de instruccin se marca con un punto. El perodo del reloj debe ajustarse a la duracin de la etapa ms lenta, de este modo en un ciclo de reloj pueden realizarse todas las acciones y transferencias de cada etapa. La activacin de las seales que controlan las transferencias deben efectuarse asociadas a diferentes ciclos del reloj. Para lograr esto es preciso modelar la unidad de control como una mquina secuencial de estados finitos.

Profesor Leopoldo Silva Bijit

19-11-2008

Estructuras de Computadores Digitales

En cada canto activo del reloj se pasa a un estado diferente (se captura el estado en los registros), y en cada estado pueden activarse las seales de control que se requieran (salidas de redes combinacionales alimentadas por los estados de los flip-flops de la unidad de control). Es decir las salidas de esta mquina secuencial deben estar asociadas al estado (modelo de Moore). La ejecucin de cada instruccin puede visualizarse como un recorrido en el diagrama de estados; algunas instrucciones se ejecutarn pasando por pocos estados, otras tendrn recorridos ms largos. El nmero de estados por los que pasa una instruccin son los ciclos de reloj que demora en realizarse, y esto se mide en CPI (ciclos por instruccin). Podra ajustarse el perodo del reloj de acuerdo al tiempo de la etapa ms rpida. Esto implica que el tiempo de las etapas ser ahora un mltiplo de la etapa ms rpida, lo cual aumenta el nmero de estados de la unidad de control, y complica su diseo. El siguiente diagrama muestra los registros que deben agregarse para ejecutar instrucciones con un nmero diferente de ciclos de reloj. Se muestran las seales de control en cada etapa. Se ha agregado el habilitamiento de escritura del registro de instruccin IR y de los registros adicionales A, B, S y M.

Unidad de Control
nPC_sel WEPC WEIR WEB RegDst RegWr WEA

MemRd AluSrc WES WEM MemtoReg ExtOp AluCtr MemWr

Equal COp+ Funct

rs rt Unidad de Instruccin rd busW Addr Inm16 Din Memoria Datos M Unidad Registros

A B

IR

Unidad de Operaciones

Reloj
Figura 13.3. Registros procesador multiciclo. Profesor Leopoldo Silva Bijit 19-11-2008

Diseo procesador multiciclo

Notar que la ltima etapa, la que escribe en los registros, hace fluir los datos hacia atrs. Por esta razn se denomina a esta etapa post escritura (write-back).

13.4. Transferencias fsicas.


A continuacin se muestran las transferencias fsicas para ejecutar las transferencias lgicas que definen cada una de las instrucciones del repertorio. Los grupos de micro operaciones que se realizan juntas en un ciclo de reloj, se separan por comas y el grupo est terminado en un punto y coma. El trmino de instruccin se marca con un punto. ADD: R[rd] R[rs] + R[rt]; PC PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4

IR = MemInst[PC], PC = PC+4; A=R[rs], B=R[rt]; S = add(A, B); R[rd] = S. SUB: R[rd] R[rs] R[rt]; PC

IR = MemInst[PC], PC = PC+4; A=R[rs], B=R[rt]; S = sub(A, B); R[rd] = S. SLT:

if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC

IR = MemInst[PC], PC = PC+4; A=R[rs], B=R[rt]; S = slt(A, B); R[rd] = S. ORI: R[rt] R[rs] + zero_ext(Inm16); PC

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.

IR = MemInst[PC], PC=PC+4; A = R[rs]; S = or(A , zero_ext(Inm16) ); R[rt] = S.

Las tres instrucciones anteriores no emplean la etapa de memoria. El ORI no requiere escribir en el registro B.

Profesor Leopoldo Silva Bijit

19-11-2008

6 LOAD: R[rt]

Estructuras de Computadores Digitales MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4

IR = MemInst[PC], PC=PC+4; A = R[rs]; S = add( A , sign_ext(Inm16)); M = MemDat[S]; R[rt] = M. STORE:

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. R[rt]; PC PC + 4

MEM[ R[rs] + sign_ext(Inm16)]

IR=MemInst[PC], PC=PC+4; A=R[rs], B=R[rt]; S = add( A, sign_ext(Inm16)); MemDat[S] = B.

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos.

La instruccin STORE no utiliza el arreglo de registros para escritura. Estn permanentemente cableadas las conexiones del registro B en la entrada de datos Din de la memoria; y de la salida S de la ALU, en el bus Add de direcciones de la memoria de datos. BEQ: if ( R[rs] == R[rt] ) PC IR = MemInst[PC], PC=PC+4; A = R[rs], B = R[rt]; if (Equal) PC = PC + sign_ext(Inm16)*4. (PC +4) + sign_ext(Inm16)*4 else PC Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Instruccin. PC + 4

BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer ciclo se escribe en PC, la direccin de la prxima instruccin. En el tercer ciclo, puede emplearse dicho valor para calcular la direccin de bifurcacin relativa a PC, lo cual permite compartir el sumador de la unidad de instruccin. Esto implica un cambio de la unidad de instruccin, que se muestra ms adelante. J UMP: PC (PC +4)&0xF0000000+ add_26 *4 Unidad Instruccin. Unidad Instruccin.

IR = MemInst[PC], PC=PC+4; PC = (PC)&0xF0000000 + add_26 *4.

Se muestra la unidad de Instruccin modificada, se agrega un mux y se comparte el sumador, emplendolo dos veces en la realizacin de las instrucciones beq y jump(pero en ciclos diferentes de reloj): La necesidad del registro IR, se debe a que durante el primer ciclo se calcula la direccin de la prxima instruccin y se lo escribe en el registro PC. Al cambiar ste, cambia el bus de direcciones de la memoria de instrucciones, esto requiere almacenar la instruccin para tener los campos disponibles en el resto de la ejecucin.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo


WEPC WEIR

nPC_sel[0..1]

"1"

4
SigExt*4

0 1

0
PC

Rd Addr
Memoria Instrucciones

COp Funct Rs
IR

Inm16
PC[31..28] add_26 0..1

Rt Rd

Inm16

Figura 13.4. Unidad de Instruccin. Procesador multiciclo. En caso de no escribir en PC hasta el trmino de la ejecucin de la instruccin, se debe mantener la estructura de la unidad de instrucciones (que requiere dos sumadores) del procesador monociclo, y mantener las seales de control de la memoria de instrucciones en los siguientes ciclos que requieran leer campos de la instruccin. De esta forma podra no emplearse el registro IR. Si se comparte la memoria para datos e instrucciones, el registro IR es indispensable, ya que las instrucciones load word y store word, cambian el bus de direcciones de la memoria. Si no se cambian los contenidos de rd, rs, y rt, no se requieren los registros A y B. Adems esto implica sostener los controles RegDst y RegWr en los ciclos en que se requiera mantener estables los contenidos del busA y busB. Sin embargo si A y B estn presentes, se simplifica el diseo de la unidad de control; slo es necesario activar los habilitamientos de escritura de A y B en el segundo ciclo. No es necesario activarlos en los ciclos que siguen, pues ya estn registrados los contenidos de los buses A y B en dichos registros. Similar razonamiento puede emplearse para detectar la necesidad del registro S. Si la unidad de operaciones no se utiliza con diferentes operandos en diferentes ciclos de la ejecucin de una misma instruccin (es decir si no se la comparte) no se requiere el registro S; pero esto implica sostener las seales de control a esta unidad en ciclos subsecuentes que requieran una salida estable de AluOut. Profesor Leopoldo Silva Bijit 19-11-2008

Estructuras de Computadores Digitales

13.5. Seales de control.


Se describen a continuacin, las seales de control que activan las transferencias fsicas. El primer ciclo es comn a todas las instrucciones. En l se lee la instruccin que se ejecutar y se la almacena en IR, en PC se guarda la direccin de la prxima instruccin. A este ciclo se lo denomina de bsqueda de instruccin (fetch). Despus de este ciclo, los campos de la instruccin quedan disponibles en las salidas de IR. ADD: R[rd] R[rs] + R[rt]; PC PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.

nPC_sel = +4, WEPC , WEIR ; WEA , WEB ; AluSrc = "busB", AluCtr = add; WES ; RegDst = "rd" , Memtoreg="alu", RegWr.

En el segundo ciclo de ADD y SUB, se guardan en A y B los operandos de la instruccin, una vez que han sido ledos del arreglo de registros. Durante el ciclo se activan las habilitaciones de escritura, y slo en el canto sincronizante del reloj se registran los valores. En el tercer ciclo de ADD y SUB, se almacena en S, el resultado de la operacin. En el cuarto ciclo de ADD y SUB se escribe en el registro destino el resultado de la operacin que fue salvado en el registro S, en el ciclo anterior. Ambas operaciones requieren cuatro ciclos de reloj para completarse. SUB: R[rd] R[rs] R[rt]; PC PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4

nPC_sel = +4, WEPC , WEIR ; WEA , WEB ; AluSrc = "busB", AluCtr = sub, WES ; RegDst = "rd", Memtoreg="alu", RegWr. SLT:

if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC

nPC_sel = +4, WEPC , WEIR ; WEA , WEB ; AluSrc = "busB", AluCtr = slt, WES ; RegDst = "rd", Memtoreg="alu", RegWr.

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo ORI: R[rt] R[rs] + zero_ext(Inm16); PC PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.

nPC_sel = +4, WEPC , WEIR ; WEA ; AluSrc = "Op32", ExtOp = zero, AluCtr = ori,WES ; RegDst = "rt", Memtoreg="alu", RegWr.

En el segundo ciclo de ORI se escribe en A el contenido del operando especificado en el registro Rs. En el tercer ciclo de ORI se escribe en S, el resultado del or del operando en registro con el operando inmediato, extendido sin signo. En el cuarto ciclo de ORI se escribe en el registro destino (rt) el valor guardado en S, en el ciclo anterior. La operacin ORI requiere cuatro ciclos para completar sus transferencias fsicas. LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4

nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin. WEA ; Unidad Registros. Lectura. AluSrc = "Op32", ExtOp = sign, AluCtr = add,WES; Unidad Operaciones. MemRd, WEM ; Unidad Memoria Datos. RegDst = "rt", Memtoreg = "mem", RegWr. Unidad Registros. Escritura. En el segundo ciclo de LOAD se escribe en A el contenido del operando especificado en el registro base Rs. En el tercer ciclo de LOAD se escribe en S la direccin efectiva de la celda de la memoria que se leer, que es el resultado de la suma del operando en registro base con el desplazamiento inmediato, extendido con signo. En el cuarto ciclo de LOAD se lee la memoria de datos y se registra la lectura en M. En el quinto ciclo de LOAD se escribe en el registro destino(rt) el valor guardado en M, en el ciclo anterior. La operacin LOAD requiere cinco ciclos para completar sus transferencias fsicas. STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4

nPC_sel = +4, WEPC , WEIR ; WEA , WEB ; AluSrc = "Op32", ExtOp = sign, AluCtr = add,WES ; MemWr.

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos.

Profesor Leopoldo Silva Bijit

19-11-2008

10

Estructuras de Computadores Digitales

En el segundo ciclo de STORE se escribe en A el contenido del operando especificado en el registro base Rs. Y en B se almacena el contenido del registro rt, que ser escrito en la memoria. En el tercer ciclo de STORE se escribe en S la direccin efectiva de la celda de la memoria que se escribir, que es el resultado de la suma del operando en registro base con el desplazamiento inmediato, extendido con signo. En el cuarto ciclo de STORE se escribe en la memoria de datos en la direccin establecida por S(en el ciclo anterior) el valor que ya se tiene en B, desde dos ciclos antes. La operacin STORE requiere cuatro ciclos para completar sus transferencias fsicas. BEQ: if ( R[rs] == R[rt] ) PC (PC +4)+ sign_ext(Inm16)*4 else PC PC + 4

nPC_sel = +4, WEPC , WEIR ; WEA , WEB ; if (Equal) { nPC_sel = Br , WEPC }.

Unidad Instruccin. Unidad Registros. Lectura. Unidad Instruccin.

En el segundo ciclo de BEQ se leen los registros y se determina el valor de la seal Equal. En el tercer ciclo de BEQ, si debe realizarse la bifurcacin, se sobreescribe PC; en caso contrario, no se cambia el valor de PC ya escrito en el primer ciclo. La instruccin BEQ tiene un CPI igual a tres. Utiliza la unidad de instruccin dos veces en la ejecucin. J: PC (PC +4)&0xF0000000+ add_26 *4 Unidad Instruccin. Unidad Instruccin.

nPC_sel = +4, WEPC , WEIR ; nPC_sel = Jmp, WEPC .

En el segundo ciclo del salto incondicional, se sobreescribe PC con la direccin de salto. Se ocupa dos veces, en ciclos diferentes de reloj, la unidad de instruccin. Y tiene CPI = 2.

13.6. Comportamiento del procesador multiciclo.


Si definimos, en general: TE = Tiempo de ejecucin de un programa de prueba. C = Comportamiento Procesador = 1/ TE (a mayor tiempo, peor comportamiento) NI = Nmero de instrucciones del programa de prueba. CPI = Ciclos de reloj por instruccin. (ser diferente de uno en caso multiciclo) PC = Perodo del reloj. Se tiene que: TE = NI * CPI * PC Para el procesador monociclo con un perodo fijo de reloj, se tiene: TE(monociclo) = NI*1*PCmono

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

11

Se asume que el programa de prueba est constituido por la siguiente mezcla: 25% de cargas, 11% de almacenamientos, 30% de sumas, 9% de restas, 4% de or inmediatos, 15% de bifurcaciones y 6% de saltos. Se tendr ahora: TE(multiciclo) = NI (0,25*5+0,11*4+0,30*4+0,09*4+0,04*4+0,15*3+0,06*2)*PCmulticiclo =NI*3,98*PCmulticiclo Puede considerarse que el valor promedio de CPI para la mezcla es de 3,98. Si la subdivisin en etapas, se realiza de tal modo que stas requieran igual tiempo, podra modelarse cualitativamente que el perodo del reloj, en el caso monociclo, es cinco veces mayor que el requerido por el procesador multiciclo. La eleccin de tiempos iguales para las etapas tiende a minimizar el perodo del reloj requerido. La comparacin: C(multiciclo)/ C(monociclo) = TE(monociclo) /TE(multiciclo) = PCmono/ (3,98*PCmulticiclo) = 5/3,98 = 1,26. indica que el procesador multiciclo es 1,26 veces ms rpido que el monociclo. No aprecindose ventajas significativas en el aumento de velocidad, mayormente debido a que el repertorio elegido no contiene instrucciones complejas. La comparacin anterior no refleja bien las bondades del diseo multiciclo; en el caso del diseo del repertorio completo existen alrededor de 100 instrucciones y algunas de ellas demandan hasta 20 ciclos de reloj. En este caso el numerador aumentara a 20 (monociclo) y el CPI promedio (multiciclo) no subira apreciablemente si las instrucciones largas son poco frecuentes.

13.7. Alcances de compartir recursos.


13.7.1. Compartir memoria. En la eleccin realizada para el camino de datos no se comparten demasiados recursos, que es otra poderosa ventaja del esquema de diseo multiciclo. Puede tenerse slo una unidad aritmtica y compartirla para las operaciones de las unidades de instruccin y operacin, tambin puede compartirse la memoria de instrucciones y de datos; tambin puede obtenerse la condicin de igualdad utilizando la misma unidad aritmtica. Este desarrollo es el que efecta el texto gua, en l puede verse que se ahorran recursos sin disminuir la velocidad de ejecucin. A continuacin se muestra una arquitectura que comparte la memoria de datos con la de instrucciones. Para esto es necesario modificar la unidad de instruccin, sacando de sta la memoria de instrucciones.

Profesor Leopoldo Silva Bijit

19-11-2008

12

Estructuras de Computadores Digitales

WEPC nPC_sel[0..1]

+4
SigExt*4 Inm16 PC[31..28] add_26 0..1

0 1

0 1
PC

Figura 13.5. Unidad de Instruccin. Sin memoria de Instrucciones. Se ha agregado un mux controlado por MemCtr, que permite leer la direccin apuntada por PC, que contiene la instruccin actual, y grabarla en IR; o bien leer la direccin efectiva de la memoria apuntada por S, y grabar el dato en M. El compartir el recurso, no cambia la velocidad de ejecucin de las instrucciones. Se ha sacado de la Unidad de Instruccin la memoria de programa, y se muestra que a esta unidad ingresa el bus IR.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo


MemWr WEPC nPC_sel MemCtr

13

Unidad de Control
MemRd WEM WEIR MemtoReg RegDst RegWr AluSrc ExtOp AluCtr Equal Cop Funct

rs

0 IR
Unidad de Instruccin

rt Addr IR rd

1
Memoria

Unidad Registros

A B

Unidad de S Operaciones

1 0
Inm16 Din

Reloj
Figura 13.6. Procesador multiciclo. Se comparte la memoria. Se ilustra la descripcin de las transferencias fsicas con la instruccin load word:

LOAD:

R[rt]

MEM[ R[rs] + sign_ext(Inm16)]; PC

PC + 4

IR = M[PC], PC=PC+4; A = R[rs]; S = add( A , signext(Inm16)); M = M[S]; R[rt] = M.

Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura.

Las secuencias de control para la instruccin store word:

Profesor Leopoldo Silva Bijit

19-11-2008

14 STORE: MEM[ R[rs] + sign_ext(Inm16)]

Estructuras de Computadores Digitales R[rt]; PC PC + 4 Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos.

nPC_sel = +4, WEPC , WEIR , MenCtr=Instrucciones; WEA ; WEB ; AluSrc = "Op32", ExtOp = sign, AluCtr = add,WES ; MemWr, MenCtr=Datos 13.7.2. Compartiendo la ALU.

A continuacin se muestra una arquitectura que adems de compartir la memoria comparte la unidad aritmtica. Para esto es necesario modificar la unidad de instruccin, sacando de sta el sumador.

nPC_sel WEPC

AluOut
PC

jump
PC[31..28]

0 1 2

add_26

Figura 13.7. Unidad de Instruccin, para compartir la Unidad Artitmtica. Ntese que se han simplificado los recursos que emplea la unidad de instruccin. Slo queda el circuito que forma la direccin de salto: jump = PC &0xF0000000 + add_26 *4 La formacin de la direccin de salto requiere que el valor que debe estar estar almacenado en PC, sea la direccin siguiente a la instruccin que est en ejecucin(la que est almacenada en IR). El multiplexor controlado por nPC_sel puede ser alimentado por la salida de la ALU (para formar PC+4, como se ver luego) y desde el registro S(para formar la direccin de salto en caso de bifurcacin). Para compartir la ALU, se requiere modificar la Unidad de Operaciones. Permitiendo ingresar la salida del registro PC o el busA en el primer operando. Tambin deben agregarse las entradas +4 y la direccin de bifurcacin, como posibles segundos operandos.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

15

Tambin se comparte la unidad extensora. Tomando el operando de 32 bits(Op32) y generando, por reordenamiento de las seales del bus, la nueva seal: branch = sign_ext(Inm16)*4
Equal ExtOp AluSrcA AluSrcB AluCtr

PC

1
busA Igual

busB

+4 branch
Extensor

0 1 2 3

AluOut

Inm16

Op32

Figura 13.8. Unidad de Operaciones, para compartir la ALU. Con estas modificaciones, las transferencias fsicas, pueden expresarse, segn: ADD: R[rd] R[rs] + R[rt]; PC PC + 4

IR = M[PC], PC = add(PC,+4); A=R[rs], B=R[rt]; S = add(A, B); R[rd] = S. SUB: R[rd]

Unidad Instruccin, Operaciones. Unidad Registros, Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4

R[rs] R[rt]; PC

IR = M[PC], PC = add(PC,+4); A=R[rs], B=R[rt]; S = sub(A, B); R[rd] = S.

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.

Profesor Leopoldo Silva Bijit

19-11-2008

16 SLT:

Estructuras de Computadores Digitales if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

IR = M[PC], PC = add(PC, +4); A=R[rs], B=R[rt]; S = slt(A, B); R[rd] = S. ORI: R[rt]

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4

R[rs] + zero_ext(Inm16); PC

IR = M[PC], PC = add(PC, +4); A = R[rs]; S = or(A , zero_ext(Inm16) ); R[rt] = S. LOAD: R[rt]

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4

MEM[ R[rs] + sign_ext(Inm16)]; PC

IR = M[PC], PC = add(PC, +4); A = R[rs]; S = add( A , sign_ext(Inm16)); M = M[S]; R[rt] = M. STORE:

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. R[rt]; PC PC + 4

MEM[ R[rs] + sign_ext(Inm16)]

IR=M[PC], PC = add(PC, +4); A=R[rs], B=R[rt]; S = add( A, sign_ext(Inm16)); M[S] = B. BEQ: if ( R[rs] == R[rt] ) PC IR = M[PC], PC = add(PC, +4); A = R[rs], B = R[rt]; S = add( PC, sign_ext(Inm16)*4); if (Equal) PC = S. J UMP: PC

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. (PC +4) + sign_ext(Inm16)*4 else PC PC + 4

Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Operaciones. Unidad Instruccin.

(PC +4)&0xF0000000+ add_26 *4

IR = M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones. PC = (PC)&0xF0000000 + add_26 *4. Unidad Instruccin.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo Las seales de control, pueden describirse por: ADD: R[rd] R[rs] + R[rt]; PC PC + 4

17

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA , WEB ; AluSrcA = "busA", AluSrcB = "busB", AluCtr = add; WE S ; RegDst = "rd" , Memtoreg="alu", RegWr. R[rs] R[rt]; PC

SUB: R[rd]

PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA , WEB ; AluSrcA = "busA", AluSrcB = "busB", AluCtr = sub; WE S ; RegDst = "rd" , Memtoreg="alu", RegWr. SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA , WEB ; AluSrcA = "busA", AluSrcB = "busB", AluCtr = slt; WE S ; RegDst = "rd" , Memtoreg="alu", RegWr.

ORI:

R[rt]

R[rs] + zero_ext(Inm16); PC

PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA ; AluSrcA = "busA", AluSrcB = "Op32", ExtOp = zero, AluCtr = ori, WES ; RegDst = "rt", Memtoreg="alu", RegWr. LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA ; AluSrcA = "busA", AluSrcB = "Op32", ExtOp = sign, AluCtr = add, WES ; MemRd, WEM ; RegDst = "rt", Memtoreg = "mem", RegWr. STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA , WEB; AluSrcA = "busA", AluSrcB = "Op32", ExtOp = sign, AluCtr = add, WES ; MemWr. Profesor Leopoldo Silva Bijit 19-11-2008

18 BEQ: if ( R[rs] == R[rt] ) PC

Estructuras de Computadores Digitales (PC +4)+ sign_ext(Inm16)*4 else PC PC + 4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; WEA , WEB ; AluSrcA = "PC", AluSrcB = "branch", AluCtr = add, WE S ; if (Equal) { nPC_sel = S , WEPC }. J: PC (PC +4)&0xF0000000+ add_26 *4

nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WE PC , WEIR; nPC_sel = Jmp, WEPC .

13.8. Diseo de la unidad de control del procesador multiciclo.


Puede confeccionarse un diagrama de estados a partir de las seales de control de cada etapa. Debido a que la primera serie de microoperaciones, para la etapa de bsqueda de instruccin, es igual para todas las instrucciones, se considera como el estado inicial. Luego a partir de ste se colocan las secuencias de estados para generar las seales de control para cada etapa. En el interior de cada estado se colocan las salidas asociadas a ese estado. Despus de la ltima microoperacin de cada secuencia (cuando se encuentra un punto en la secuencia), debe volverse al estado inicial, para seguir ejecutando instrucciones. Despus de realizadas las transferencias del estado fetch (o de bsqueda de la instruccin), se disponen de las entradas para la unidad de control: el cdigo de operacin y el campo funct. De acuerdo al valor de las entradas se cambia al estado siguiente, cuando ocurre el canto del reloj. Cuando no estn rotuladas las transiciones se asume que el prximo canto activo del reloj cambia al prximo estado de la secuencia. Pueden aplicarse las tcnicas tradicionales del diseo de mquinas secuenciales. Puede emplearse mtodos para la reduccin de estados. Por ejemplo: el tercer estado de lw y sw son idnticos, y podran fundirse en uno; en este caso las dos salidas de este estado deben estar rotuladas con el cdigo de operacin de lw y sw (esto debido a que el cuarto estado de stas no es el mismo). Tambin pueden fundirse los cuartos estados de add y sub. Si se decide escribir en el registro B, en el caso de ori y lw (no importa lo que se escriba, si luego no se lo usa), se tendr que el segundo estado de todas las instrucciones excepto el jump pueden fundirse; en caso de efectuar esta reduccin, las salidas de este segundo estado comn debe estar rotuladas con los cdigos de operacin de las instrucciones. Luego se procede a asignar estados y continuar con las metodologas de diseo.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo 13.8.1. Diagrama de estados

19

El modelo del diagrama de estados debe entenderse como un modelo conceptual del problema del control. En el caso de disear un repertorio completo, no es prctico ocuparlo para describir cientos de estados con posibles centenares de secuencias diferentes (ms an si el tipo de repertorio es complejo y posee diversos modos de direccionamiento). El siguiente diagrama de estado muestra las diferentes secuencias de las seales de control para cada una de las instrucciones del repertorio:

nPC_sel = +4, WEPC , WEIR ;


Add

Sub

Ori

Lw

Sw

Beq

J nPC_sel = Jmp WEPC.

WEA WEB

WEA WEB

WEA

WEA

WEA WEB

WEA WEB

AluSrc =busB, AluCtr = add WES

AluSrc =busB, AluCtr = sub WES

AluSrc =Op32 ExtOp =zero AluCtr = ori WES RegDst =rt Memto reg=alu RegWr.

AluSrc = Op32 ExtOp =sign AluCtr = add WES MemRd WEM

AluSrc = Op32 ExtOp =sign AluCtr = add WES MemWr.

nPC_sel = if (Equal) { Br , WEPC }.

RegDst =rd Memto reg=alu RegWr.

RegDst =rd Memto reg=alu RegWr.

RegDst =rt Memto reg=mem RegWr.

Figura 13.9. Diagrama de estados. Se ver ms adelante la tcnica de microprogramacin, que bsicamente consiste en disear la unidad de control como si fuera un computador en miniatura. Profesor Leopoldo Silva Bijit 19-11-2008

20 13.8.2. Control de Memorias Asincrnicas.

Estructuras de Computadores Digitales

En el diagrama de estados puede fcilmente incorporarse controles asincrnicos mediante ciclos de espera (wait). Algunas memorias despus de transcurrido el tiempo de acceso activan una seal indicando este evento. El controlador puede adaptarse a memorias con diferente tiempo de acceso empleando la seal (asincrnica) de wait proveniente de la memoria. Consideremos, por ejemplo, la memoria de instrucciones con los controles MemRd para leer y Wait. Mientras esta ltima est alta debe esperarse, ya que an no termina el tiempo de acceso; cuando Wait se desactiva, el dato en el bus es vlido. El siguiente esquema ilustra una parte de la Unidad de Instrucciones:

WEPC

Wait

WEIR

MemRd
PC Addr Rd Memoria Instrucciones

IR

Figura 13.10. Control asincrnico de memoria de instruccin. El siguiente diagrama de estados incorpora ciclos de espera, empleando la seal wait: Se espera un mltiplo del perodo del reloj (se dice que es asincrnico, pero el tiempo que permanece esperando es sincrnico con el reloj; es la seal la que se produce en forma asincrnica al reloj).
MemRD WEIR&Wait' WEPC&Wait'

Wait

Wait
WEA .. ..

Figura 13.11. Diagrama de estados. Ciclos de espera.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

21

Ntese que las seales que habilitan la escritura de los registros PC e IR se activan cuando la memoria de instrucciones tiene datos vlidos (cuando Wait pasa a cero). Lo anterior impide cambiar el valor de PC(es decir el bus de direcciones de la memoria) cuando an se est leyendo; y de reactualizar con datos invlidos el registro de instruccin. La lgica combinacional que genera las seales de control de sincronizacin queda mejor descrita por: if (Wait) {WEIR = 0; WEPC = 0;} else {WEIR = 1; WEPC = 1;} Similar procedimiento se emplea, en la memoria de datos, en el ciclo de lectura de lw; y en el de escritura de sw.

13.9 Excepciones. (Interrupciones y Traps)


El flujo de control normal, es la ejecucin secuencial de instrucciones, de saltos, bifurcaciones, llamados a subrutinas y retornos. Una excepcin es una transferencia de control de ejecucin no programada. Es una seal que avisa que ha ocurrido un evento que requiere ser atendido. Programa de Usuario.
Se produce excepcin...

Manipulador de Excepciones. (trap handler)


Servicio de excepcin. Retorno de excepcin.

Figura 13.12. Servicio excepciones. El sistema debe estar programado para tomar una accin para manipular la excepcin: a) registrandro la direccin de la instruccin que caus la excepcin, b) salvando el estado del procesador, c) tomando una accin correctiva, d) recuperando el estado del procesador y e) devolviendo el control al programa que caus la excepcin. La manipulacin de excepciones ocasiona un control complejo, lo cual disminuye la velocidad de procesamiento, ya que tiende a aumentar el CPI promedio. MIPS define que no debe ejecutarse la instruccin que causa la excepcin.

Profesor Leopoldo Silva Bijit

19-11-2008

22 13.9.1. Tipos de Excepciones: Interrupciones: a) Causadas por eventos externos. Solicitacin de dispositivo de entrada/salida b) Asincrnicas con la ejecucin del programa. Deben ser manipuladas entre instrucciones. Suspenden y reanudan la ejecucin del programa.

Estructuras de Computadores Digitales

Traps: a) Causadas por eventos internos. Condiciones de excepcin (ej. overflow) Errores (ej. paridad) Fallas (ej. De pgina) Llamados al Sistema Intento de ejecutar instruccin ilegal. b) Sincrnicas con la ejecucin del programa c) Las condiciones deben ser remediadas por el manipulador. d) La instruccin puede ser reintentada o simulada y el programa contina o ste debe ser abortado. 13.9.2. Formas de accesar al manipulador de excepciones: Los diferentes procesadores emplean mecanismos especiales para manipular la excepcin. En el caso del procesador MIPS, cuando se produce una excepcin se pasa a modo kernel, cambiando el valor de PC a una direccin fija. Entrada fija. PC = 0x80000080 (MIPS)

Otros procesadores emplean vectores o tablas de direcciones: Tabla de direcciones. PC = M[base+causa] (8051) Vectores de Interrupcin. PC = base+causa 13.9.3. Formas de salvar el Estado. a) En el stack. b) En registros especiales. EPC, BadVaddr, Status, Cause (MIPS) c) Cambios de banco o registros sombreados. En el caso del procesador MIPS se agregaron los siguientes recursos al camino de datos para manipular excepciones:

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

23

Registro EPC. Registro 14 del coprocesador 0, es un registro de 32 bits que almacena la direccin de la instruccin que ocasiona la excepcin. Debe ser capaz de deshacer la suma PC = PC+4, ya que EPC debe apuntar a la instruccin que causa la excepcin y no a la siguiente. Es decir: EPC = PC-4. Registro Cause. Registro 13 del procesador 0, de 32 bits. Almacena la causa de la excepcin. Registro BadVAddr. Registro 8 del coprocesador 0, contiene la direccin de la instruccin que efectu un direccionamiento ilegal. Registro Status. Registro 12 del coprocesador 0, contiene las mscaras de interrupcin y los bits de habilitacin. Es preciso modificar el camino de datos, adems de agregar registros: Se agrega una entrada al mux controlado por nPC_Sel, con la direccin fija del manipulador de excepciones: 0x8000 0080 Seales de control para escribir en los registros: EPC, Cause, BadVAddr, y Status. 13.9.4 Modos: User y Kernel. Proporcionar dos modos de ejecucin facilita el desarrollo del sistema operativo, que es un programa especial que corre en modo privilegiado (modo kernel o system) que le permite tener acceso a todos los recursos del computador. Normalmente todos los procesos de entrada/salida son administrados por el sistema operativo. De este modo cada programa de usuario puede compartir recursos (archivos, discos, memoria, pantalla, red, etc.) en forma organizada. El manipulador de excepciones es parte del sistema operativo, en ste se programan las acciones en respuesta a eventos que ocurran mientras se ejecuta el programa del usuario. Se describen a continuacin algunos registros del coprocesador 0. Estos estn implementados en el simulador Spim, y descritos en el manual. 13.9.5. Registro de Estado. (STATUS) Se tienen ocho niveles de interrupcin, cinco son de hardware y tres de software. Existe un bit por nivel que habilita (cuando es uno) o deshabilita el nivel de interrupcin. Mscaras 15 k e 7 6 old k e previo k e actual

31

16

Los 6 bits menos significativos forman un stack de tres niveles. Los seis bits menos significativos indican si la interrupcin se produjo en modo kernel o en modo usuario, para esto se emplea el bit denominado k, en el esquema anterior. Un uno indica que se produjo en modo kernel; cero en modo usuario.

Profesor Leopoldo Silva Bijit

19-11-2008

24

Estructuras de Computadores Digitales

En los bits denominados e se registra si estn habilitadas las interrupciones, con un uno se marca que estaban habilitadas y con un cero deshabilitadas. Cuando se produce una interrupcin, los seis bits menos significativos se desplazan en dos posiciones hacia la izquierda, dejando en cero las ltimas dos posiciones. Esto implica que se corre en modo kernel con las interrupciones deshabilitadas. 13.9.6. Registro CAUSE. Pendientes 15 10 Causa 5 2

31

16

Los bits 10 al 15, se emplean para registrar si existen interrupciones pendientes de uno de los cinco niveles de interrupciones de hardware. Se setea a uno si ocurre la interrupcin, y si sta an no ha sido servida. Se emplea para manejar la situacin en que se hayan generado. Del bit 2 al 5 se registra la razn de la interrupcin: 0 (Int) indica una interrupcin externa. 4 (ADDRL) excepcin por error de direccin no alineada en el fetch o en instruccin load 5 (ADDRS) excepcin por error de direccin no alineada en instruccin store. 6 (IBUS) error de direccin en fetch de instruccin. 7 (DBUS) error de bus en bsqueda de datos. 8 (Syscall) excepcin por llamado errado al sistema. 9 (BKPT) excepcin por breakpoint. 10 (RI) excepcin por instruccin reservada. 12 (OVF) Excepcin por rebalse aritmtico. 13 Resultado punto flotante inexacto. 14 Resultado punto flotante invlido. 15 Divisin por cero. 16 Rebalse punto flotante. 17 Vaciamiento punto flotante. 13.9.7. Instrucciones para el Coprocesador 0. Existen instrucciones y macros que permiten mover datos del coprocesador 0 hacia el principal y viceversa. Data transfer: lwc0, swc0 Move: mfc0, mtc0 Ver trap.handler de spim (se lo incluye ms adelante). 13.9.8. Tratamiento de excepciones en la mquina de estados. Se ilustran las modificaciones al diagrama de estados para tratar excepciones de dos tipos: rebalse e instruccin ilegal.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

25

Una instruccin indefinida o ilegal se detecta cuando no est definido el prximo estado para el cdigo ilegal. Se define un prximo estado, al que se pasa cuando el cdigo de operacin es otro (diferente de lw, sw, j, beq, ori, tipo-R), en el cual se activan las microoperaciones para generar la excepcin. La direccin ExcAdd es la del manipulador de excepciones. Rebalse aritmtico. Se emplea la condicin generada por la ALU, para saltar a un estado que genera excepcin. Manipular las diferentes interacciones entre instrucciones y otros eventos que causan excepciones puede dar origen a un control complejo. El objetivo es mantener simple y rpida la lgica de control. Es tratamiento de las excepciones es el aspecto ms complejo del control.

E0 (fetch)

Add Sub

Ori

Lw

Sw

Beq

otro EPC=PC-4 PC=ExcAdd Cause=10(RI)

E1 E8
oper.

E2 E9
oper.

E3 E10

E4 E11

E5 E12

E6 E13

E7

E14

E15

E16

E17

E18
overflow

E19

EPC=PC-4 PC=ExcAdd Cause=12(Ovf)

Figura 13.13. Diagrama de estados, con excepciones. 13.9.9. Cdigo del manipulador de Excepciones de SPIM. # SPIM S20 MIPS simulator. # The default trap handler for spim. # Copyright (C) 1990-1995 James Larus, larus@cs.wisc.edu. # Define the exception handling code. This must go first! .kdata __m1_: .asciiz " Exception " __m2_: .asciiz " occurred and ignored\n" __e0_: .asciiz " [Interrupt] " Profesor Leopoldo Silva Bijit 19-11-2008

26

Estructuras de Computadores Digitales

__e1_: .asciiz "" __e2_: .asciiz "" __e3_: .asciiz "" __e4_: .asciiz " [Unaligned address in inst/data fetch] " __e5_: .asciiz " [Unaligned address in store] " __e6_: .asciiz " [Bad address in text read] " __e7_: .asciiz " [Bad address in data/stack read] " __e8_: .asciiz " [Error in syscall] " __e9_: .asciiz " [Breakpoint] " __e10_:.asciiz " [Reserved instruction] " __e11_:.asciiz "" __e12_:.asciiz " [Arithmetic overflow] " __e13_:.asciiz " [Inexact floating point result] " __e14_:.asciiz " [Invalid floating point result] " __e15_:.asciiz " [Divide by 0] " __e16_:.asciiz " [Floating point overflow] " __e17_:.asciiz " [Floating point underflow] " __excp: .word __e0_,__e1_,__e2_,__e3_,__e4_,__e5_,__e6_ .word __e7_,__e8_,__e9_,__e10_,__e11_,__e12_ .word __e13_,__e14_,__e15_,__e16_,__e17_ s1: .word 0 #para salvar registros de usuario. s2: .word 0 .ktext 0x80000080 #ExcAdd # Al entrar se pueden usar los registros k0 y k1, sin salvarlos, ya que el usuario # no puede usar estos registros. .set noat move $k1, $at # Salva at ya que el manipulador usa macros. .set at #Habilita uso de macros en modo kernel. #El manipulador usa v0 y a0, los salva en memoria de datos del kernel. #No usa el stack ya que la excepcin puede ser una mala referencia al stack. #Asume que no es confiable el valor de sp. sw $v0, s1 sw $a0, s2 #Salva a0 y v0 en variables locales del kernel. mfc0 $k0, $13 # Cause es el registro $13 del coprocesador 0 sgt $v0 , $k0, 0x44 # Ignora la excepcin, mayor que causa 17. bgtz $v0, ret addu $0, $0, 0 # Equivale a un nop. Se ejecuta(delayed branch). li $v0, 4 # syscall 4 (print_str con mensaje m1) la $a0, __m1_ syscall li $v0, 1 # syscall 1 (print_int) srl $a0, $k0, 2 # Genera en a0 el nmero de la excepcin, syscall # y lo imprime. li lw $v0, 4 $a0, __excp($k0) # syscall 4 (print_str) #Accesa direccin mensaje de error. 19-11-2008

Profesor Leopoldo Silva Bijit

Diseo procesador multiciclo syscall bne mfc0 and beq li syscall ok_pc: li $v0, 4 la $a0, __m2_ syscall mtc0 $zero, $13 lw $v0, s1 lw $a0, s2 mfc0 $k0, $14 .set noat move $at, $k1 .set at rfe addiu $k0, $k0, 4 jr $k0 # syscall 4 (print_str) $k0, 0x18, ok_pc # Causa = 6. Bad PC requires special checks $a0, $14 # a0 = EPC $a0, $a0, 0x3 # Is EPC word-aligned? $a0, $zero, ok_pc $v0, 10 # Exit on really bad PC (out of text).

27

ret:

# Clear Cause register # Recupera a0 y v0. # k0 = EPC # Restaura $at del usuario. # Habilita macros de usuario. # Return from exception handler # Return to next instruction

# Standard startup code. #Invoke the routine main with no arguments. .text .globl __start __start: lw addiu addiu sll addu jal li syscall $a0, 0($sp) $a1, $sp, 4 $a2, $a1, 4 $v0, $a0, 2 $a2, $a2, $v0 main $v0, 10 # argc # argv # envp

# syscall 10 (exit)

Observaciones: a) La instruccin: sgt $v0, $k0, 0x44 # ignore interrupt exceptions es una macro, que expandida resulta: ori $at, $zero, 0x44 slt $v0, $at, $k0 #coloca 1 en v0 si 0x44 < k0 0x44 equivale al binario 1000100, con nmero de excepcin binario 10001(ya que los dos ltimos son ceros). Es decir si la causa de excepcin es mayor que 17 ignora la excepcin. Profesor Leopoldo Silva Bijit 19-11-2008

28 b) La macro: lw $a0, __excp($k0)

Estructuras de Computadores Digitales #Accesa direccin mensaje de error.

Accesa al arreglo de punteros, que contienen los mensajes asociados a la causa de la excepcin. En k0 est la causa de la excepcin, considerando que los dos bits menos significativos son ceros se tiene, por ejemplo, que cuando k0 tiene valor binario 11000, se tendr la causa 6(110). Y se suma a la direccin dada por __excp el valor decimal 24(equivale a 11000); el cual equivale a 6*4. Es decir la sexta entrada con valor simblico: __e6_. c) Los rtulos del kernel usan el smbolo underscore( _ ), de esta forma el ensamblador difcilmente puede tener conflicto con los smbolos de usuario. d) La instruccin rfe, restaura el registro de estado como estaba antes de la excepcin y reanuda la ejecucin en la instruccin siguiente a la que caus la excepcin.

13.10 Diseo de la Unidad de Control de un Procesador Multiciclo.


13.10.1. Diseo clsico. A partir del diagrama de estados se plantean las ecuaciones lgicas para determinar el prximo estado; y las ecuaciones de salida en funcin del estado (se emplea el modelo de Moore, para mquinas secuenciales de estados finitos). Entradas Registro Lgica prximo estado Lgica de Salida Salidas Estado

Figura 13.14. Modelo de Moore. Mquina de estados. En cada estado se especifican los valores de las seales de control que gobiernan las Transferencias entre Registros. El cambio de estado ocurre en el canto activo del reloj y la duracin del reloj debe permitir la transferencia confiable de la etapa ms lenta. La secuencia de transferencias se controla mediante el recorrido a travs de los estados. La informacin que puede derivarse del diagrama de estados permite construir la siguiente tabla de verdad, que corresponde a la matriz de transiciones.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo Entradas Estado Cdigo Operacin Funct Condiciones Salidas Prximo estado Seales de control

29

Figura 13.15. Modelo de Moore. Matriz de transiciones. El diseo consiste en encontrar las funciones combinacionales mnimas para: Prximo estado = f1(Estado, Cod. Op., Funct) Seales de Control = f2(Estado, Cod. Op., Funct, Condiciones) Se asume que el prximo estado no depende de las condiciones generadas en el camino de datos. La secuencia de estados depende slo de la instruccin en ejecucin; mientras que la activacin de algunas seales de control estn condicionadas por los valores generados durante la ejecucin. Esto reduce el nmero de estados. 13.10.2. Microprogramacin. Mtodo sistemtico para disear la unidad de control de un procesador. Se programan las transferencias entre registros y la secuencia en que stas deben efectuarse. Cada microinstruccin especifica el valor que deben tomar las seales de control, las funciones de la alu, y cul es la prxima microinstruccin. Una forma de implementar las funciones de prximo estado y las salidas es almacenar el estado en un registro ( PC), e implementar las funciones de prximo estado y las salidas en una ROM o en un dispositivo programable. El esquema anterior puede visualizarse como el de un procesador que ejecuta microinstrucciones almacenadas en una memoria. Cada microinstruccin puede considerarse dividida en dos campos: uno, el conjunto de micro-operaciones; el otro, asociado a las bifurcaciones y saltos incondicionales dentro del microprograma, que podramos denominar control de secuencia de las microinstrucciones. Denominamos micro operaciones a las seales de control que actan sobre los recursos del camino de datos: las funciones de la ALU y de la Unidad de Extensin, la programacin de las vas de datos a travs de los muxes, las habilitaciones de escritura sincrnica de los diversos registros, los controles de lectura y escritura de las memorias y el arreglo de registros (control de transferencias fsicas), y las seales que controlan la secuenciacin de las instrucciones en la unidad de instruccin (que dependen de las condiciones: equal, cero, etc.). Una representacin de la informacin que se almacena en la micro memoria, que se denomina microprograma es la siguiente: Profesor Leopoldo Silva Bijit 19-11-2008

30

Estructuras de Computadores Digitales

Direccin Estado = PC

Control

Microinstruccin Microoperaciones

Figura 13.16. Microprograma. Adems existe la siguiente funcin: seales que controlan PC = f(micro operaciones de Control PC, Condiciones) Se denomina microcontrol a la informacin que permite determinar la prxima microinstruccin a ejecutar, que en general depende solamente de la instruccin que est en ejecucin. sta se ilustra en la siguiente tabla de verdad: Entradas Control Salidas Funct Prxima Instruccin

COp

Figura 13.17. Microcontrol. La tabla anterior describe el secuenciador de las microintrucciones. Un esquema de diseo de una unidad de control microprogramada se ilustra a continuacin: WE
PC

"1" Rd Control
Memoria Instrucciones PC

Addr Cop

Funct

bus IR

Secuenciador

op

funciones Seales de muxes Control memoria registros write enable Control PC

Condiciones Figura 13.18. Unidad de control microprogramada.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

31

La ejecucin de una instruccin puede visualizarse como la ejecucin de una serie de microinstrucciones. En cada microinstruccin est la informacin necesaria para activar las diferentes microoperaciones de una etapa (en un ciclo de reloj) y determinar cul es la prxima microinstruccin a ejecutar. Ntese que slo es necesario el registro PC, el que mantiene estable el bus de direcciones de la micromemoria, lo cual genera las seales de control estables entre ciclos de reloj. Es decir, una instruccin determinada es una secuencia especfica de lecturas de la micromemoria. La Unidad de Control microprogramada, es realmente otro procesador, y como cualquier procesador puede ser representado mediante el lenguaje que implementa. Se tienen todas las ventajas que poseen los diferentes lenguajes; es decir, se dispone de simuladores y microensambladores que facilitan la verificacin de la correcta interpretacin de las microinstrucciones. Una alternativa de diseo es emplear un contador, con las funciones sincrnicas de poner en cero, incrementar en uno y precargar un valor, para el registro PC. Lo anterior observando que en el diagrama de estados ocurren frecuentes transiciones al estado inicial (clear, si se denomina con binario cero al estado inicial) y al estado siguiente (corresponde a incrementar en uno el contador, esto funciona siempre y cuando pueda darse adecuados nombres a los estados; es decir, que el estado siguiente tenga valor binario incrementado en uno, respecto del actual). De esta forma puede reducirse el ancho de la palabra de microcontrol. En la figura siguiente se ilustra el diseo del secuenciador mediante: muxes, un sumador en uno y algunas redes combinacionales, que implementan el contador con las funciones especiales. Las redes combinacionales que determinan la prxima microinstruccin a partir de los bits de microcontrol y de los cdigos de operacin (Cop, funct), suelen denominarse tablas de despacho. Cuando PCsel toma valor 0, se tiene retorno al estado inicial (bsqueda de instruccin o fetch); cuando toma valor 1 se pasa a la microinstruccin siguiente; y cuando vale 2 se determina la prxima microinstruccin en funcin de la instruccin que se est interpretando electrnicamente, mediante la activacin de una tabla de despacho.

Profesor Leopoldo Silva Bijit

19-11-2008

32

Estructuras de Computadores Digitales

TDsel

PCsel

WE

PC

"1"
Secuenciador

Rd
Control

0 Cop T0 T1 0 1 1 dir T2 Funct 2 2 1


PC

bus IR

Memoria Instrucciones

op

funciones muxes memoria registros write enable Control PC

Add r

Seales de Control

Condiciones Figura 13.19. Unidad de control, mediante secuenciador.

Adems de los dos bits que forman PCsel, se requieren algunos adicionales que permitan representar todas las bifurcaciones que se produzcan en el diagrama de estado. En el diagrama anterior se tienen tres tablas de despacho, lo cual requiere dos bits adicionales que se han denominado TDsel; este ejemplo supone tres estados con mltiples bifurcaciones. Debe notarse que las condiciones provenientes del camino de datos junto con las microoperaciones que controlan PC forman las seales de control que actan sobre la Unidad de Instruccin. Ventajas de la microprogramacin: Facilita el diseo del control. Es flexible: puede adaptarse a los cambios, mediante reprogramacin.

Permite implementar repertorios complejos. Generalizacin: Puede implementar diversos repertorios en la misma mquina, sintonizando el repertorio con la aplicacin.
Compatibilidad: Diferentes organizaciones y recursos pueden disponer del mismo repertorio. Desventajas de la microprogramacin: Es costosa su implementacin. Es lenta comparada con un control alambrado (hardwired); es decir, mediante compuertas. Se tienen dos modalidades de microprogramacin:

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo Microprogramacin horizontal:

33

Se especifica un bit para cada punto del control del camino de datos. Se tiene control total del paralelismo del camino de datos, pero emplea gran cantidad de bits de microcdigo. Microprogramacin vertical: Se compacta el microcdigo codificando en campos en que se agrupan clases de microoperaciones. Luego se decodifica localmente para generar todas las seales de control. Permite una mejor abstraccin de la microprogramacin, pero la decodificacin puede hacer la mquina ms lenta; debido a los niveles que deben recorrerse para la decodificacin. Pueden especificarse diferentes formatos, por ejemplo uno para especificar transferencias y otro para especificar saltos. Por ejemplo asumiendo una longitud de palabra de micromemoria de 21 bits:

Para las microinstrucciones de operaciones puede emplearse el siguiente formato:


cdigo 1 operando1 5 operando2 5 destino 5 5 Para las microinstrucciones de control, que cambian la secuencia de ejecucin, puede emplearse el siguiente formato: cdigo 1 condicin 3 prxima microdireccin 17 operaciones

Se consideran slo dos formatos, por esto el campo cdigo de microinstruccin ocupa un bit. Compromiso: Espacio versus tiempo. Dependiendo de la estructura del camino de datos, algunas seales de control no se pueden activar simultneamente; por ejemplo en la post-escritura se activa memoria a registro o alu a registro, pero no ambas simultneamente. Esto implica que puede codificarse ambas seales en un solo bit de la microinstruccin, lo cual ahorra memoria de microprograma. En el caso del registro que debe leerse y cargarse en el busA, puede disponerse de 32 seales, que activan individualmente a cada uno de los registros del arreglo; pero como no pueden activarse simultneamente dos registros para que coloquen sus datos en el busA, si se codifica en un campo de cinco bits, deber colocarse un decodificador externo (con cinco lneas de entrada y 32 salidas) pero se incurrir en un tiempo adicional debido al circuito combinacional. La codificacin debe permitir que las acciones que se puedan realizar en paralelo puedan ser especificadas en una sola microinstruccin. 13.10.3. Diseo del microprograma: Existen dos modalidades, una orientada a las transferencias; la otra, a las seales de control.

Profesor Leopoldo Silva Bijit

19-11-2008

34

Estructuras de Computadores Digitales

a) Microprograma orientado a las transferencias. El microprograma se escribe en forma similar a un programa en un lenguaje de alto nivel. Cada lnea, que puede tener un rtulo que simboliza la microdireccin, corresponde a una microinstruccin, que se realiza en un ciclo de reloj. Una microinstruccin es un secuencia de microoperaciones, separadas por comas. Las microoperaciones son descritas por las transferencias fsicas que realizan, o por las funciones que activan en los recursos, o por sentencias de control. Las sentencias de control deben especificar cul ser la prxima microinstruccin a realizar: Pueden emplearse saltos a microdirecciones; o activar funciones combinacionales, mediante las tablas de despacho) que determinan la prxima microdireccin. El emplear lenguajes permite realizar simulaciones para verificar la correcta interpretacin de las instrucciones, y a la vez ensamblar los diferentes bits de cada microinstruccin. El siguiente es el texto del microprograma que implementa el procesador multiciclo desarrollado anteriormente, pero con un segundo estado comn para todas las instrucciones. Esto ltimo implica que la instruccin jump se realizar en dos ciclos. Ntese que el estado siguiente al add y al sub se ha tratado como un solo estado equivalente (el ubicado en la microdireccin writereg), lo cual requiere emplear otra tabla de despacho, ya que slo puede existir un estado siguiente al estado 0011. Se describe una unidad de control microprogramada mediante la descripcin de las microoperaciones (empleando transferencias fsicas), y el microcontrol empleando: transferencias al PC (micro contador de programa) e invocaciones a las tablas de despacho.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

35

El microprograma implementa el siguiente diagrama de estados (donde la identificacin del estado es la microdireccin):

000 0 inc 000 T0 1 load


011 1

add 001 T1 0

sub 001 1 inc

ori

sw inc

beq 101 0 inc 101 1 Cero 110 0

010 1 inc
011 0

100 0

inc

010 0 Cero

Cero

100 1 Cero

Cero

Figura 13.20. Diagrama de estados. Microprograma. fetch: IR = MemInst[PC], PC = PC+4, PC = PC +1; A=R[rs], B=R[rt], if(COp == J) PC = (PC)&0xF0000000+add_26*4, PC = T0[OP]; add: sub: writereg: ori: S = add(A, B), PC = T1[OP]; S = sub(A, B), PC = PC +1; R[rd] = S, PC = 0. S = or(A, zero_ext(Inm16)), R[rt] = S, PC = 0. PC = PC +1;

loadword: S = add(A, sign_ext(Inm16)), PC = PC +1; M = MemDat[S], PC = PC +1; R[rt] = M, PC = 0. storeword: S = add(A, sign_ext(Inm16)), PC = PC +1; MemDat[S] = B, PC = 0.

Profesor Leopoldo Silva Bijit

19-11-2008

36 beq:

Estructuras de Computadores Digitales if (Equal) PC = PC + sign_ext(Inm16)] *4, PC = 0.

Si mediante las 12 lneas formadas por los buses Cop y Funct, formamos un decodificador de la instruccin, generando el bus OP, de tres bits, ya que en el ejemplo se microprograman siete instrucciones, se tiene: Instruccin COP

ADD SUB ORI LW SW BEQ J

Funct 000000 100000 000000 100010 001101 100011 101011 000100 000010

OP 000 001 010 011 100 101 110

COp Funct

6 6

OP

Figura 13.21. Generacin de bus OP. La tabla de despacho 0, puede describirse por el siguiente mapa de memoria, asumiendo la direccin 0000 para la primera microinstruccin que realiza la bsqueda de la instruccin. Se agregan columnas con los mnemnicos de las instrucciones y con los nombres simblicos de las micro direcciones: Instruccin ADD SUB ORI LW SW BEQ JUMP OP 000 001 010 011 100 101 110 direccin 0010 0011 0101 0111 1010 1100 0000 Rtulo add sub ori loadword storeword beq fetch

OP
3

T0
4

direccin

Figura 13.22. Tabla de despacho 0. Tambin puede disearse mediante compuertas la tabla anterior. La tabla de despacho 1 (equivale a una constante), puede describirse segn: Instruccin ADD OP 000 direccin 0100 Rtulo writereg

Figura 13.23. Tabla de despacho 1. Es importante destacar que cada lnea del microprograma debe permitir determinar el valor de cada uno de los bits de la microinstruccin.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

37

Se definen tres microoperaciones para controlar la escritura en el registro PC. La seal PCWR, que debe activarse para escritura incondicional en PC; PCBEQ que se activa si la instruccin en ejecucin es una bifurcacin; y PCJ que se activa si la instruccin en curso es un salto incondicional. Las seales nPC_sel[1..0] seleccionan el contenido a escribir en el registro PC. La siguiente ecuacin muestra cuando debe escribirse en el registro PC. WEPC = PCWR | (PCBEQ & Equal) | (PCJ & (OP== j)) La siguiente tabla muestra los contenidos del microprograma que tienen relacin con el control y las operaciones que cambian PC. Puede completarse agregando las columnas para el resto de las microperaciones. En caso de implementar con ROM, las condiciones superfluas se reemplazan por ceros. control TDsel 00 01 operaciones que cambian PC nPC_sel PCWR PCJ PCBEQ PCsel 01 00 1 0 0 10 0 1 0 1 10 0 0 0 01 0 0 0 00 0 0 0 01 0 0 0 00 0 0 0 01 0 0 0 01 0 0 0 00 0 0 0 01 0 0 0 00 0 0 0 00 10 0 0 1

Rtulo fetch add sub writereg ori loadword

storeword beq

direccin 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

Figura 13.24. Contenidos del microprograma. Se vuelve a dibujar un esquema parcial de la unidad de instruccin y un esquema, en base a compuertas, para la lgica que forma la seal de control que habilita la escritura en el registro PC.

Profesor Leopoldo Silva Bijit

19-11-2008

38 nPC_sel1 nPC_sel0 WEPC

Estructuras de Computadores Digitales

Equal PCBE Q PCWR PCJ OP ==j

WEP
C

4
SigExt*4

0 1

0
PC

1 Inm16 PC[31..28 ] add_26 0..1

Figura 13.25. Unidad de instruccin. Escritura en PC. 13.10.4. Microprogramacin orientada a las seales de control. Se desarrollar el mtodo para el camino multiciclo propuesto en el texto de referencia, que se ilustra a continuacin:

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

39

Unidad de Control
MemRd nPC_sel WEBR WEPC MemCtr MemWr MemtoRe RegDs Copg t RegW WEIR Funct r ExtOp AluCtr AluSel A AluSel B Cero

JAddr

2
BR

0 P C 1

1 0

Add r Memoria

IR

Rs Rt Rd 1 0

Unidad Registros

Unidad de Operaciones

AluOut

Inm16 Din DOut

Reloj Figura 13.26. Camino de datos multiciclo. Texto de referencia. El camino de datos comparte la memoria para las instrucciones y los datos; los clculos de direcciones de la unidad de instruccin se realizan en la ALU; para calcular la condicin de igualdad en las bifurcaciones se emplea la ALU (sta genera la seal cero). En el texto de referencia se agrega el registro MDR (Memory Data Register), para almacenar datos ledos de la memoria. En el primer ciclo del reloj se lee la memoria para obtener la instruccin a ejecutar, y al mismo tiempo se emplea la unidad de operaciones para calcular la direccin de la prxima instruccin (PC = PC +4). En el segundo ciclo del reloj, se decodifica la instruccin a ejecutar (en la unidad de control), al mismo tiempo se leen los registros asociados a los campos Rs y Rt de la instruccin (aunque algunas instrucciones no los empleen); tambin se calcula empleando la unidad de operaciones

Profesor Leopoldo Silva Bijit

19-11-2008

40

Estructuras de Computadores Digitales

la direccin de salto de la bifurcacin (que se almacena en BR); y se genera la direccin de salto incondicional. Es necesario un registro adicional para almacenar la direccin de bifurcacin, se emplea BR con este propsito. Debe destacarse que se calcula en todos los casos dicha direccin, aunque la instruccin no sea una bifurcacin. En caso de instruccin de salto, en el segundo ciclo se tiene decodificada la instruccin y se pueden activar las seales de control de PC, para grabar la direccin de salto que se denomina Jaddr, en el diagrama. Adems, en este caso, se requiere que la prxima microinstruccin sea de bsqueda de prxima instruccin (fetch). De este modo el segundo estado ser comn para todas las instrucciones, en l se leen los registros y adems se decodifica la instruccin, generndose las seales de control, y mediante la activacin de la tabla de despacho se puede seguir procesando las diferentes instrucciones. En el tercer ciclo del reloj se ejecutan las operaciones inmediatas y aritmticas, o bien se calcula de direccin efectiva en el caso de instrucciones de transferencias. En caso de bifurcacin se calcula la resta de los operandos ledos en el segundo ciclo, y se genera la seal de resultado igual a cero. A continuacin se ilustran la forma de generar la direccin de salto Jaddr, y un detalle de la unidad de operaciones modificada para compartir la unidad aritmtico lgica. ExtOp PC[31..28] add_26 0..1 busA 1 Cero PCWRCon d PCWR COp ==j WEP
C

ALUSel ALUSel AluCtr Cero A B

JAddr PC 0 AluOut

busB Inm16
Extensor

0 1 2 3

<<2

Figura 13.27. Unidad de operaciones. Direccin de salto. Escritura en PC.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

41

El diagrama lgico muestra la seal habilitadora de escritura del registro PC: en forma incondicional (para formar PC+4), o para formar la direccin de salto en caso de jump; y en forma condicionada por el test del flag cero para las bifurcaciones. Note que se requiere que la entrada B de la ALU tenga ahora un mux de cuatro entradas. La constante 4 permite formar PC + 4. Cuando el control del mux toma valor dos se deja pasar hacia la alu, el campo inmediato de 16 bits extendido con signo y multiplicado por cuatro para generar saltos relativos a PC, considerando que el valor inmediato es de instrucciones (no de bytes). Cuando el control del mux toma valor tres se deja pasar hacia la alu, el campo inmediato de 16 bits extendido con signo para las instrucciones de transferencias; y extendido con ceros, si la instruccin es lgica. El camino de datos no almacena en registro la salida de la alu, por esta razn deben sostenerse las entradas a la alu, para que sta no cambie su salida. fetch: IR = M[PC], AluOut=add(PC, 4), PC = AluOut, PC = PC +1; A=R[Rs], B=R[Rt],if(COp == J) PC = JAddr, AluOut=add(PC, sign_ext(Inm16)] *4), BR=AluOut, PC = T0[OP]; add: AluOut = add(A, B), PC = PC +1; R[Rd] = AluOut, AluOut = add(A, B), PC = 0. AluOut = sub(A, B), PC = PC +1; R[Rd] = AluOut, AluOut = sub(A, B), PC = 0.

sub:

ori:

AluOut = or(A, zero_ext(Inm16)),

PC = PC +1; PC = 0.

R[Rt] = AluOut, AluOut = or(A, zero_ext(Inm16)),

loadword:

AluOut = add(A, signext(Inm16)), PC = PC +1; Dout = M[AluOut], AluOut = add(A, signext(Inm16)), PC = PC +1; R[Rt] = Dout, AluOut = add(A, signext(Inm16)), PC = 0.

storeword:

AluOut = add(A, signext(Inm16)), PC = PC +1; M[AluOut] = B, AluOut = add(A, signext(Inm16) , PC = 0.

beq:

AluOut= sub(A, B), if (Cero) PC = BR, PC = 0.

Profesor Leopoldo Silva Bijit

19-11-2008

42

Estructuras de Computadores Digitales

La siguiente tabla muestra el contenido del microprograma, cada columna corresponde a una microinstruccin; en los renglones figuran los valores de las seales de control. WEBR nPC_sel[0] nPC_sel[1] PCWR PCWRCond MemCtr MemWr MemRd WEIR MemtoReg RegDst RegWr ExtOp AluCtr[0] AluCtr[1] AluCtr[2] AluSelA AluSelB[0] AluSelB[1] PCsel[0] PCsel[1] TDsel[0] TDsel[1] Direccin 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 7 8 9 a 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0

0 0 1 0 0 0 0 1 0

0 1 0 1 0 1 0 1 1 0

0 1 0 1 0 1 0 1 0 0

0 0 1 1 1 1 0 0 0

b c d

Figura 13.28. Microprograma. Para ejecutar el salto en dos ciclos se requiere agregar una seal de control que se active cuando el cdigo de operacin es un salto incondicional. La tabla de verdad para la Tabla de Despacho 1, se ilustra a continuacin. Las microdirecciones estn en hexadecimal. Cop+Funct ADD SUB ORI LW SW BEQ J Direccin 2 4 6 8 b d 0

Figura 13.29. Tabla de despacho 1. Profesor Leopoldo Silva Bijit 19-11-2008

Diseo procesador multiciclo

43

Note que la seal de control WEPC se forma con las microoperaciones: PCWR, PCWRCond y la condicin Cero, y con la seal (COp == j). Se tiene la siguiente ecuacin: WEPC = (PCWRCond & Cero) | PCWR | (COp == j); En caso de implementar con ROM, las condiciones superfluas en el microprograma anterior pueden reemplazarse por ceros. Si se emplea lgica programable, pueden simplificarse las ecuaciones a travs del uso de las condiciones superfluas. La tabla de despacho tambin puede implementarse en ROM, o bien con lgica programable; en este caso pueden emplearse condiciones superfluas, ya que slo es de inters el campo funct en las operaciones de tipo R; es decir aqullas en las cuales el COp es cero. Debido a la dificultad que tiene el manipular largos vectores de unos y ceros, puede aplicarse el siguiente mtodo para describir el microcdigo: Efectuar listado de las seales de control, junto a los valores que pueden tomar. Agrupar funcionalmente las seales de control, en campos. Colocar los campos en un orden lgico. Primero las que controlan las fuentes de datos, luego las operaciones sobre ellos, despus el destino del resultado, y finalmente la microsecuenciacin. Establecer nombres simblicos para los campos, y los valores (tambin simblicos) que pueden tomar. Codificar operaciones que nunca puedan realizarse en concurrencia . Seales no codificadas. Seal No Activa ALUSelA AluInA = PC RegWr MemtoReg busW =AluOut RegDst Rw = Rd WEBR MemRd MemWr MemCtr Add = PC WEIR PCWR PCWRCond ExtOp ExtOut=ZeroExt(Inm16)

Activa AluInA= R[rs] R[Rw] busW busW=Dout Rw = Rt BR AluOut Dout=Mem[Add] Mem[Add]=Din Add = AluOut IR Dout PC PCSource If (Cero) PC PCSource ExtOut=SignExt(Inm16)

Figura 13.30. Seales no codificadas. PCSource es el bus de entrada al registro PC.

Profesor Leopoldo Silva Bijit

19-11-2008

44 Seales Codificadas. Seal Control Valores AluCtr 010 AluCtr 110 AluCtr 001 ALUSelB 00 ALUSelB 01 ALUSelB 10 ALUSelB 11 nPC_sel 00 nPC_sel 01 nPC_sel 10 00 PCsel 10 PCsel 01 PCsel 00 TDsel 01 TDsel 10 TDsel

Estructuras de Computadores Digitales Transferencias fsicas. ALUOut= AluInA + AluInB ALUOut= AluInA - AluInB ALUOut= AluInA or AluInB AluInB = 4 AluInB = R[rt] AluInB = SignExt(Inm16)*4 AluInB = ExtOut PCSource = AluOut PCSource = BR if(COp ==j) PCSource = JAddr PC = 0 PC = TablaDespacho(COp ,funct) PC = PC + 1 TablaDespacho=T1 TablaDespacho=T2 TablaDespacho=T3 Figura 13.31. Seales codificadas.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

45

Nombres y Valores Simblicos de los Campos. Nombre Campo Valores Campo Funcin del campo con valor especfico ALU Add ALU realiza suma Sub ALU realiza resta Or ALU realiza or FuenteA PC AluInA = PC rs AluInA = R[rs] FuenteB 4 AluinB = 4 rt AluInB = R[rt] Inm*4 AluInB = SignExt( IR[15-0] *4) Extend AluInB = ExtOut Ext Sign ExtOut = SignExt( Inm16) Cero ExtOut = CeroExt(Inm16) Destino rd ALU R[rd] = AluOut rt ALU R[rt] = AluOut rt Mem R[rt] = Dout Memoria Read PC lee instruccin usando PC Read ALU lee dato usando direccin efectiva en AluOut Write ALU escribe dato con direccin efectiva en AluOut IR write IR IR = Mem[PC] BR write BR BR = AluOut PC write ALU PC = ALU Branch IF (Cero) then PC = BR ifJump if(COp==j) PC = JAddr ; Direccin de salto Control Sig Va a siguiente instruccin Fetch Va a la primera microinstruccin TD n Despacho usando tabla n

Microprograma:
rtulo Fetch: Add: Sub: Ori: Lw: ALU Add Add Add Sub Or Add
FuenteA FuenteB

Ext

Destino

Memoria Read PC

PC PC rs rs rs rs

4 Inm*4 rt rt

Sign rd ALU rd ALU

BR IR Write Write IR BR

PC Write ALU ifJump

Control

Extend Extend

Zero rt ALU Sign Read ALU rt MEM

Sw: Beq:

Add Sub

rs rs

Extend rt

Sign Write ALU Branch

Sig TD 1 Sig Fetch Sig Fetch Sig Fetch Sig Sig Fetch Sig Fetch Fetch

Figura 13.32. Microprograma con seales. Profesor Leopoldo Silva Bijit 19-11-2008

46

Estructuras de Computadores Digitales

El microprograma es una tabla simblica del contenido de la micromemoria. Los rtulos corresponden a direcciones simblicas de la micromemoria. Los valores de cada columna, dentro de un rengln, deben permitir determinar el valor de cada uno de los bits de la microinstruccin. Notar que el branch se resuelve despus de la alu, con la seal cero. 13.10.5. Lgica alambrada. Usar un dispositivo programable con salidas de registro, para programar las funciones siguientes: Prximo estado = F1(Estado, Cod. Op., Funct) Seales de Control = F2(Estado, Cod. Op., Funct, Condiciones) Con esta arquitectura, las realimentaciones del estado son internas al dispositivo. PLD Salidas Entradas Figura 13.33. Esquema lgica alambrada. Este esquema se emplea para disear unidades de control en firmware, o de lgica alambrada. Diseo que resulta ms rpido que la lectura de memorias del caso anterior. Microsecuenciacin Una variante del esquema a) mediante diagramas de estado, es emplear para registrar el estado un contador sincrnico con funciones (sincrnicas): de carga paralela, clear e incrementar. Y programar la funcin de prximo estado en funcin de estas seales. Este esquema se denomina de microsecuenciacin y se emplea en diseos de la unidad de control de procesadores. Las funciones de las seales de control del contador son: Cero: llevar al estado inicial. Inc: pasar al estado siguiente. Load: presetear un estado determinado Cer o i Inc i+1 Figura 13.34. Seales de control del contador. i Load

0000

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo Ejemplo. Disear con un secuenciador el siguiente diagrama de estados.

47

0000 inc load load load x= 2 load x= 3 x=1 x= 4 load 1000 inc inc inc 1001 inc 0101 Cero Cero 0111 Cero 1010 Cero Cero Cero 1100 1011 inc 0011 0001

load x= 0 0100 0110

x= 5 0010

Figura 13.35. Diagrama de estados de secuenciador. El contador registra el estado, y sus salidas estn conectadas al bus de direcciones de la memoria. El contenido de la memoria son: los bit C, I, L que estn conectadas a las seales Cero, Incrementar y Cargar del registro; adems pueden grabarse en la memoria, los diversos bits de salida que se requieran asociados a cada estado (esquema de Moore). Esto en caso de emplear una memoria para la implementacin combinacional; pero tambin puede emplearse un dispositivo lgico programable. A continuacin se presenta la tabla de transiciones, o programa del secuenciador, notando que la informacin del prximo estado no se almacena en la memoria, se incorpora en la tabla slo con fines aclaratorios:

Profesor Leopoldo Silva Bijit

19-11-2008

48 Estado 0000 0001 0010 0011 0100 0110 1000 1011 1001 1100 0101 0111 1010 Prximo 0001 0000 0000 0101 0111 1001 1100 1010 0000 0000 0000 0000 C 0 0 1 1 0 0 0 0 0 1 1 1 1 I 1 0 0 0 1 1 1 1 1 0 0 0 0 L 0 1 0 0 0 0 0 0 0 0 0 0 0

Estructuras de Computadores Digitales Salidas

Figura 13.36. Tabla de transiciones. Ntese que los nombres binarios de los estados se eligen para ocupar lo ms eficientemente que sea posible la seal de cuenta o incremento del contador. Al estado 0000, se llega despus del reset inicial. Y si la naturaleza del proceso secuencial es repetitivo, al terminar los diferentes recorridos de estados se retorna al estado inicial. Para esto se emplea la seal Cero. Estando en el estado 0001, de acuerdo a la entrada se discierne cul es el prximo estado. En el ejemplo existe slo un estado para el cual existen mltiples bifurcaciones. Se requiere almacenar la informacin de los prximos estados de acuerdo a los valores de las entradas, y cuando se active la seal Load. Esta informacin se denomina Tabla de Despacho. Entrada x 000 001 010 011 100 101 Prximo estado. 0100 0110 1000 1011 0011 0010

Figura 13.37. Tabla de despacho. Esta informacin puede codificarse en una ROM pequea, o implementarse mediante un PLD. Debe notarse que en la ROM del secuenciador no se almacena el prximo estado. Esto puede significar un ahorro importante de memoria, si existe un pequeo nmero de estados con mltiples bifurcaciones. En caso de existir varios nodos con bifurcaciones, es preciso definir otras seales de carga, una por cada nodo con bifurcaciones, y tambin igual nmero de tablas de Despacho. La seal Load del contador es activada por el or de las seales de carga de las tablas de despacho. Profesor Leopoldo Silva Bijit 19-11-2008

Diseo procesador multiciclo

49

Un esquema general de la arquitectura para disear mquinas secuenciales, en base a un secuenciador, se ilustra a continuacin: ROM( o PLD) Contador
Tabla de Despacho

Carga Paralela L C Inc

Direcciones Contenidos I Salidas C L

Entradas

Prximo Estado

Figura 13.38. Esquema secuenciador.

13.11 Resumen del Diseo del Control Multiciclo.


La especificacin inicial del control puede efectuarse a partir de un diagrama de estados o de un microprograma. A partir de lo anterior, debe seleccionarse cmo especificar el control de la secuenciacin. Lo cual a su vez puede realizarse de dos formas bsicas: Especificando la funcin de prximo estado; o bien, las funciones del contador de saltos. Debe notarse que el control de la secuenciacin puede determinarse independientemente de la eleccin inicial. Luego la representacin lgica del control puede efectuarse mediante ecuaciones o tablas de verdad. Finalmente la tcnica de implementacin de las ecuaciones lgicas puede realizarse mediante dispositivos lgicos programables o mediante ROM. Debe notarse que la representacin lgica y la tcnica de implementacin tambin pueden ser determinadas independientemente de las decisiones anteriores.

Profesor Leopoldo Silva Bijit

19-11-2008

50

Estructuras de Computadores Digitales

El siguiente esquema muestra las diversas relaciones que existen:

Representacin inicial. Control secuenciacin. Representacin lgica. Tcnica de implementacin.

Diagrama de Estados.

Microprograma

Funcin Prximo Estado. Ecuaciones lgicas. Dispositivo programable. lgico

Contador. Tablas de Despacho. Tablas de Verdad. ROM control microprogramado

control alambrado.

Figura 13.39. Relaciones entre mtodos de diseo. La figura anterior muestra las alternativas de diseo del control. El control es ms complicado cuando se tienen: repertorios complejos de instrucciones, diferentes modos de direccionamiento, tratamiento de excepciones o cuando el camino de datos tiene restricciones para ahorrar componentes (ejemplo tratado en el texto, slo una memoria y un sumador). Se puede simplificar an ms el control si se desea ejecutar varias instrucciones al mismo tiempo, ms que aumentar la velocidad promedio de ejecucin de las instrucciones individuales.

13.12. Preparacin para segmentacin (pipeline).


Se desea ejecutar varias instrucciones, al mismo tiempo. Se dividen las etapas mediante registros, cada instruccin puede estar ejecutndose en una etapa. Si existen cinco etapas, pueden ejecutarse simultneamente cinco instrucciones. Para esto es preciso, que cada instruccin pase por las cinco etapas, y que cada etapa tenga su propio control. Se ver ms adelante las razones por las cuales las instrucciones deben durar aproximadamente lo mismo. Para lograr esto, basta en el diagrama de estados, agregar estados en los que no se activen controles. La determinacin de cules estados deben agregarse requiere de un anlisis ms refinado que se efectuar ms adelante. A continuacin se muestra un esquema, con los estados agregados.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

51

nPC_sel = +4, WEPC , WEIR ;


Add Sub Ori Lw Sw Beq J nPC_sel = Jmp WEPC.

WEA WEB
AluSrc =busB, AluCtr = add, WES

WEA WEB
AluSrc =busB, AluCtr = sub, WES

WEA

WEA

WEA WEB

WEA WEB
if (Equal)
{ nPC_sel = Br ,

AluSrc =Op32, ExtOp =zero, AluCtr = ori, WES

AluSrc = Op32, ExtOp =sign, AluCtr = add, WES

AluSrc = Op32, ExtOp =sign, AluCtr = add, WES

WEPC }.

RegDst =rd, Memto reg=alu RegWr.

RegDst =rd, Memto reg=alu RegWr.

RegDst =rt, Memto reg=alu ,RegWr

MemRd WEM

MemWr .

.
RegDst =rt, Memto reg=mem, RegWr.

Figura 13.40. Estados adicionales.

Un esquema del control asociado a la etapa se muestra a continuacin: Las seales de control, van viajando con los datos a travs de la caera (pipeline).

Profesor Leopoldo Silva Bijit

19-11-2008

52

Estructuras de Computadores Digitales

Reg Wr MemtoReg WEM nPCsel 0 S WE AluCtr AluSrc ExtO p


MemRd MemWr

WEIR WEPC nPCsel 0

nPCsel WE 1A WEB RegD st

COp+ Funct

Equal

Unidad I de R busW Instruccin

Rs Rt Rd

Unidad Registros

A B

Unidad de S Operacion es

0 Addr Memoria M Din Datos 1

Inm16

Reloj

Figura 13.41. Control pipeline.

Profesor Leopoldo Silva Bijit

19-11-2008

Diseo procesador multiciclo

53

ndice general.
CAPTULO 13. ...................................................................................................................................... 1 DISEO DE UN PROCESADOR MULTICICLO. ............................................................................. 1 13.1 REUTILIZACIN DE LOS RECURSOS Y TIEMPOS DE EJECUCIN DE ACUERDO A LA INSTRUCCIN. ...... 1 13.2. USO DE REGISTROS PARA SEPARAR ETAPAS................................................................................... 2 13.3. ETAPAS EN LA EJECUCIN DE INSTRUCCIONES. ............................................................................. 3 13.4. TRANSFERENCIAS FSICAS. ........................................................................................................... 5 13.5. SEALES DE CONTROL.................................................................................................................. 8 13.6. COMPORTAMIENTO DEL PROCESADOR MULTICICLO. ................................................................... 10 13.7. ALCANCES DE COMPARTIR RECURSOS. ........................................................................................ 11 13.7.1. Compartir memoria. .......................................................................................................... 11 13.7.2. Compartiendo la ALU. ....................................................................................................... 14 13.8. DISEO DE LA UNIDAD DE CONTROL DEL PROCESADOR MULTICICLO. .......................................... 18 13.8.1. Diagrama de estados ......................................................................................................... 19 13.8.2. Control de Memorias Asincrnicas. ................................................................................... 20 13.9 EXCEPCIONES. (INTERRUPCIONES Y TRAPS) ................................................................................ 21 13.9.1. Tipos de Excepciones: ........................................................................................................ 22 13.9.2. Formas de accesar al manipulador de excepciones: ........................................................... 22 13.9.3. Formas de salvar el Estado. ............................................................................................... 22 13.9.4 Modos: User y Kernel. ....................................................................................................... 23 13.9.5. Registro de Estado. (STATUS) ........................................................................................... 23 13.9.6. Registro CAUSE. ............................................................................................................... 24 13.9.7. Instrucciones para el Coprocesador 0. ............................................................................... 24 13.9.8. Tratamiento de excepciones en la mquina de estados. ...................................................... 24 13.9.9. Cdigo del manipulador de Excepciones de SPIM. ............................................................ 25 13.10 DISEO DE LA UNIDAD DE CONTROL DE UN PROCESADOR MULTICICLO. .................................... 28 13.10.1. Diseo clsico. ................................................................................................................. 28 13.10.2. Microprogramacin. ........................................................................................................ 29
Ventajas de la microprogramacin: .................................................................................................................... 32 Desventajas de la microprogramacin: .............................................................................................................. 32 Microprogramacin horizontal: .......................................................................................................................... 33 Microprogramacin vertical: .............................................................................................................................. 33

13.10.3. Diseo del microprograma: ............................................................................................. 33 13.10.4. Microprogramacin orientada a las seales de control. ................................................... 38 13.10.5. Lgica alambrada. ........................................................................................................... 46
Microsecuenciacin ............................................................................................................................................ 46 Ejemplo. .............................................................................................................................................................. 47

13.11 RESUMEN DEL DISEO DEL CONTROL MULTICICLO. .................................................................. 49 13.12. PREPARACIN PARA SEGMENTACIN (PIPELINE). ...................................................................... 50 NDICE GENERAL. ............................................................................................................................... 53 NDICE DE FIGURAS............................................................................................................................. 54

Profesor Leopoldo Silva Bijit

19-11-2008

54

Estructuras de Computadores Digitales

ndice de figuras.
FIGURA 13.1. ESQUEMA MQUINA MONOCICLO. ........................................................................................ 2 FIGURA 13.2. DIVISIN UNIDAD COMBINACIONAL. ..................................................................................... 2 FIGURA 13.3. REGISTROS PROCESADOR MULTICICLO.................................................................................. 4 FIGURA 13.4. UNIDAD DE INSTRUCCIN. PROCESADOR MULTICICLO. ......................................................... 7 FIGURA 13.5. UNIDAD DE INSTRUCCIN. SIN MEMORIA DE INSTRUCCIONES. ............................................ 12 FIGURA 13.6. PROCESADOR MULTICICLO. SE COMPARTE LA MEMORIA. .................................................... 13 FIGURA 13.7. UNIDAD DE INSTRUCCIN, PARA COMPARTIR LA UNIDAD ARTITMTICA. ............................ 14 FIGURA 13.8. UNIDAD DE OPERACIONES, PARA COMPARTIR LA ALU. ...................................................... 15 FIGURA 13.9. DIAGRAMA DE ESTADOS. .................................................................................................... 19 FIGURA 13.10. CONTROL ASINCRNICO DE MEMORIA DE INSTRUCCIN. ................................................... 20 FIGURA 13.11. DIAGRAMA DE ESTADOS. CICLOS DE ESPERA..................................................................... 20 FIGURA 13.12. SERVICIO EXCEPCIONES.................................................................................................... 21 FIGURA 13.13. DIAGRAMA DE ESTADOS, CON EXCEPCIONES. .................................................................... 25 FIGURA 13.14. MODELO DE MOORE. MQUINA DE ESTADOS. ................................................................... 28 FIGURA 13.15. MODELO DE MOORE. MATRIZ DE TRANSICIONES. ............................................................. 29 FIGURA 13.16. MICROPROGRAMA............................................................................................................ 30 FIGURA 13.17. MICROCONTROL. ............................................................................................................. 30 FIGURA 13.18. UNIDAD DE CONTROL MICROPROGRAMADA. ..................................................................... 30 FIGURA 13.19. UNIDAD DE CONTROL, MEDIANTE SECUENCIADOR............................................................. 32 FIGURA 13.20. DIAGRAMA DE ESTADOS. MICROPROGRAMA. .................................................................... 35 FIGURA 13.21. GENERACIN DE BUS OP. ................................................................................................. 36 FIGURA 13.22. TABLA DE DESPACHO 0. ................................................................................................... 36 FIGURA 13.23. TABLA DE DESPACHO 1. ................................................................................................... 36 FIGURA 13.24. CONTENIDOS DEL MICROPROGRAMA................................................................................. 37 FIGURA 13.25. UNIDAD DE INSTRUCCIN. ESCRITURA EN PC. .................................................................. 38 FIGURA 13.26. CAMINO DE DATOS MULTICICLO. TEXTO DE REFERENCIA. ................................................. 39 FIGURA 13.27. UNIDAD DE OPERACIONES. DIRECCIN DE SALTO. ESCRITURA EN PC. ............................... 40 FIGURA 13.28. MICROPROGRAMA............................................................................................................ 42 FIGURA 13.29. TABLA DE DESPACHO 1. ................................................................................................... 42 FIGURA 13.30. SEALES NO CODIFICADAS. .............................................................................................. 43 FIGURA 13.31. SEALES CODIFICADAS. ................................................................................................... 44 FIGURA 13.32. MICROPROGRAMA CON SEALES. ..................................................................................... 45 FIGURA 13.33. ESQUEMA LGICA ALAMBRADA. ...................................................................................... 46 FIGURA 13.34. SEALES DE CONTROL DEL CONTADOR. ............................................................................ 46 FIGURA 13.35. DIAGRAMA DE ESTADOS DE SECUENCIADOR. .................................................................... 47 FIGURA 13.36. TABLA DE TRANSICIONES. ................................................................................................ 48 FIGURA 13.37. TABLA DE DESPACHO. ...................................................................................................... 48 FIGURA 13.38. ESQUEMA SECUENCIADOR. ............................................................................................... 49 FIGURA 13.39. RELACIONES ENTRE MTODOS DE DISEO. ........................................................................ 50 FIGURA 13.40. ESTADOS ADICIONALES. ................................................................................................... 51 FIGURA 13.41. CONTROL PIPELINE. .......................................................................................................... 52

Profesor Leopoldo Silva Bijit

19-11-2008

Vous aimerez peut-être aussi