Академический Документы
Профессиональный Документы
Культура Документы
Captulo 13.
19-11-2008
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
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.
19-11-2008
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
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
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).
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 = 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.
Las tres instrucciones anteriores no emplean la etapa de memoria. El ORI no requiere escribir en el registro B.
19-11-2008
6 LOAD: R[rt]
Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. R[rt]; PC PC + 4
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.
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.
19-11-2008
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
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:
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.
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.
19-11-2008
10
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
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.
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.
19-11-2008
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.
19-11-2008
12
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.
19-11-2008
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]
PC + 4
Unidad Instruccin. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura.
19-11-2008
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.
19-11-2008
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
Unidad Instruccin, Operaciones. Unidad Registros, Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4
R[rs] R[rt]; PC
Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura.
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
Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Registros. Escritura. PC + 4
Unidad Instruccin y Operaciones. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. R[rt]; PC PC + 4
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.
IR = M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones. PC = (PC)&0xF0000000 + add_26 *4. Unidad Instruccin.
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
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 .
19-11-2008
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:
Sub
Ori
Lw
Sw
Beq
WEA WEB
WEA WEB
WEA
WEA
WEA WEB
WEA WEB
AluSrc =Op32 ExtOp =zero AluCtr = ori WES RegDst =rt Memto reg=alu 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
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 .. ..
19-11-2008
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.
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.
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.
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:
19-11-2008
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.
19-11-2008
24
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.
19-11-2008
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
E1 E8
oper.
E2 E9
oper.
E3 E10
E4 E11
E5 E12
E6 E13
E7
E14
E15
E16
E17
E18
overflow
E19
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
__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
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
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.
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.
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
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
19-11-2008
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.
19-11-2008
32
TDsel
PCsel
WE
PC
"1"
Secuenciador
Rd
Control
bus IR
Memoria Instrucciones
op
Add r
Seales de Control
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:
19-11-2008
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:
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.
19-11-2008
34
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.
19-11-2008
35
El microprograma implementa el siguiente diagrama de estados (donde la identificacin del estado es la microdireccin):
add 001 T1 0
ori
sw inc
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.
19-11-2008
36 beq:
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
Funct 000000 100000 000000 100010 001101 100011 101011 000100 000010
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.
19-11-2008
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
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.
19-11-2008
WEP
C
4
SigExt*4
0 1
0
PC
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:
19-11-2008
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
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
19-11-2008
40
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
JAddr PC 0 AluOut
busB Inm16
Extensor
0 1 2 3
<<2
19-11-2008
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:
PC = PC +1; PC = 0.
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:
beq:
19-11-2008
42
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
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)
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.
19-11-2008
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
BR IR Write Write IR BR
Control
Extend Extend
Sw: Beq:
Add Sub
rs rs
Extend rt
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
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
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
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:
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
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
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
Entradas
Prximo Estado
19-11-2008
50
Diagrama de Estados.
Microprograma
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.
19-11-2008
51
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 ,
WEPC }.
MemRd WEM
MemWr .
.
RegDst =rt, Memto reg=mem, RegWr.
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).
19-11-2008
52
COp+ Funct
Equal
Rs Rt Rd
Unidad Registros
A B
Unidad de S Operacion es
Inm16
Reloj
19-11-2008
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
19-11-2008
54
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
19-11-2008