1
Diseo ProcesadorMulticiclo
2
Procesador Multiciclo
En el modelo del procesador monociclo el reloj se ajusta a la ruta combinacional ms crtica, por ejemplo la que se genera con la instruccin lw.
Los recursos son utilizados solo una vez por cada ciclo de reloj.
Esto puede llevar a pensar en que las instrucciones pueden ser realizadas con varios ciclos de reloj; dependiendo de la complejidad de stas, algunas podrn ser realizadas en pocos ciclos, otras necesitarn ms ciclos.
3
Procesador Multiciclo
Permite que las instrucciones tengan tiempos de ejecucin diferentes.
La posibilidad de 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.
4
Procesador Multiciclo
En el modelo multiciclo, cada paso o etapa de ejecucin debe emplear un ciclo de reloj.
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.
5
Procesador Multiciclo
Se emplean los siguientes registros adicionales: IR Registro de InstruccinA y B Salidas de la Unidad de Registros.S Salida de Unidad de Operaciones.M Registro con el dato ledo de la
memoria.
6
Procesador Multiciclo
Se tienen cinco etapas para la ejecucin de instrucciones (no todas las instrucciones emplean todas las etapas): Bsqueda de la Instruccin. Lectura de Memoria de
Instrucciones y clculo de direccin de prxima instruccin.
Decodificacin de la Instruccin y lectura de registros. Ejecucin de operaciones con formato R y clculo de
la direccin efectiva de Memoria. Lectura de Memoria de Datos o Escritura en Memoria
de Datos. Escritura en Registros.
7
Procesador MulticicloUnidad de Control
SUnidad
Registros
rs
rt
busW
RegWr AluCtr
AluSrcRegDst
rd
ExtOp
Inm16
Addr
MemoriaDatos
M
Din
MemRd
MemWr
0
1
MemtoReg
Unidadde
Operaciones
nPC_sel
Unidadde
Instruccin
COp+ FunctEqual
Reloj
WEPC
IR
A
B
WEIR WEA
WEB WES WEM
2
8
Procesador Multiciclo
Transferencias fsicas de datos. ADD: R[rd] R[rs] + R[rt]; PC PC + 4
IR = MemInst[PC], PC = PC+4; Unidad Instruccin.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = add(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura.
SUB: R[rd] R[rs] R[rt]; PC PC + 4IR = MemInst[PC], PC = PC+4; Unidad Instruccin.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = sub(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura
9
Procesador Multiciclo
Transferencias fsicas de datos. SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0;
PC PC + 4IR = MemInst[PC], PC = PC+4; Unidad Instruccin.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = slt(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura.
ORI: R[rt] R[rs] + zero_ext(Inm16); PC PC + 4
IR = MemInst[PC], PC=PC+4; Unidad Instruccin.A = R[rs]; Unidad Registros. Lectura.S = or(A , zero_ext(Inm16) ); Unidad Operaciones. R[rt] = S. Unidad Registros. Escritura.
10
Procesador Multiciclo
Transferencias fsicas de datos. LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4
IR = MemInst[PC], PC=PC+4; Unidad Instruccin.A = R[rs]; Unidad Registros. Lectura.S = add( A , sign_ext(Inm16)); Unidad Operaciones.M = MemDat[S]; Unidad Memoria Datos.R[rt] = M. Unidad Registros. Escritura.
STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4IR=MemInst[PC], PC=PC+4; Unidad Instruccin.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = add( A, sign_ext(Inm16)); Unidad Operaciones.MemDat[S] = B. Unidad Memoria Datos.
11
Procesador Multiciclo
Transferencias fsicas de datos. BEQ: if ( R[rs] == R[rt] ) PC (PC +4) +
sign_ext(Inm16)*4 else PC PC + 4IR = MemInst[PC], PC=PC+4; Unidad Instruccin.A = R[rs], B = R[rt]; Unidad Registros. Lectura.if (Equal) Unidad Operaciones.PC = PC + sign_ext(Inm16)*4. Unidad Instruccin.
J UMP: PC (PC +4)&0xF0000000+ add_26 *4
IR = MemInst[PC], PC=PC+4; Unidad Instruccin.PC = (PC)&0xF0000000 + add_26 *4. Unidad Instruccin.
12
Procesador Multiciclo
Es necesario una modificacin en la unidad de instruccin.
PC
SigExt*4
4
nPC_sel[0..1]
AddrMemoriaInstruc-ciones
Rd
"1"
Inm16
WEPC
FunctCOp
RsRtRd
Inm16
PC[31..28]
0..1
add_26
0
1 IR
WEIR
0
1
13
Procesador Multiciclo
Valores de las seales de control para activar las transferencias lgicas. ADD: R[rd] R[rs] + R[rt]; PC PC + 4
nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA , WEB ; Unidad Registros. Lectura.AluSrc = "busB", AluCtr = add; WES ; Unidad Operaciones.RegDst = "rd" , Memtoreg="alu", RegWr. Unidad Registros. Escritura.
SUB: R[rd] R[rs] R[rt]; PC PC + 4nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA , WEB ; Unidad Registros. Lectura.AluSrc = "busB", AluCtr = sub, WES ; Unidad Operaciones.RegDst = "rd", Memtoreg="alu", RegWr. Unidad Registros. Escritura
14
Procesador Multiciclo
Valores de las seales de control para activar las transferencias lgicas. SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4
nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA , WEB ; Unidad Registros. Lectura.AluSrc = "busB", AluCtr = slt, WES ; Unidad Operaciones.RegDst = "rd", Memtoreg="alu", RegWr. Unidad Registros. Escritura.
ORI: R[rt] R[rs] + zero_ext(Inm16); PC PC + 4nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA ; Unidad Registros. Lectura.AluSrc = "Op32", ExtOp = zero, AluCtr = ori, WES ; Unidad Operaciones.RegDst = "rt", Memtoreg="alu", RegWr. Unidad Registros. Escritura.
15
Procesador Multiciclo
Valores de las seales de control para activar las transferencias lgicas. 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.
STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA , WEB ; Unidad Registros. Lectura.AluSrc = "Op32", ExtOp = sign, AluCtr = add, WES ; Unidad Operaciones.MemWr. Unidad Memoria Datos.
16
Procesador Multiciclo
Valores de las seales de control para activar las transferencias lgicas. BEQ: if ( R[rs] == R[rt] ) PC (PC +4)+
sign_ext(Inm16)*4 else PC PC + 4nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.WEA , WEB ; Unidad Registros. Lectura.if (Equal) { nPC_sel = Br , WEPC }. Unidad Instruccin.
J: PC (PC +4)&0xF0000000+ add_26 *4 nPC_sel = +4, WEPC , WEIR ; Unidad Instruccin.nPC_sel = Jmp, WEPC . Unidad Instruccin.
17
Comportamiento del Procesador Multiciclo
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.
18
Comportamiento del Procesador Multiciclo
Se tiene que:TE = NI * CPI * PC
19
Comportamiento del Procesador Multiciclo
Para el procesador monociclo con un perodo fijo de reloj, se tiene: TE(monociclo) = NI*1*PCmono
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.
20
Comportamiento del Procesador Multiciclo
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.
21
Comportamiento del Procesador Multiciclo
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.
22
Procesador Multiciclo
Compartir recursos En la eleccin realizada para el camino de datos no
se comparten demasiados recursos. 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.
23
Procesador Multiciclo
Compartir recursos. Arquitectura
que comparte la memoria de datos con la de instrucciones.
Unidad de Control
S
Unidad Registros
rs
rt
RegWr AluCtr
AluSrcRegDst
rd
ExtOp
Inm16
Din
MemRdMemWr
1
0
MemtoReg
Unidadde
Operaciones
nPC_sel
Unidadde
Instruccin
CopFunct
Equal
Reloj
WEPC
IR
A
B
Addr
Memoria
M
WEIR
1
0
MemCtr
IR
WEM
24
Procesador Multiciclo
Compartir recursosSe 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.
25
Procesador Multiciclo
Compartir recursosTransferencias fsicas con la instruccin load
word:LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4
IR = M[PC], PC=PC+4; Unidad Instruccin.A = R[rs]; Unidad Registros. Lectura.S = add( A , signext(Inm16)); Unidad Operaciones.M = M[S]; Unidad Memoria Datos.R[rt] = M. Unidad Registros. Escritura.
26
Procesador Multiciclo
Compartir recursosLas secuencias de control para la instruccin
store word:STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4
nPC_sel =+4,WEPC,WEIR ,MemCtr=Instrucciones; Unidad Instruccin.WEA ; WEB ; Unidad Registros. Lectura.AluSrc = "Op32", ExtOp = sign, AluCtr = add, WES ; Unidad Operaciones.MemWr, MemCtr=Datos Unidad Memoria Datos.
27
Procesador Multiciclo
Compartiendo la ALU.Arquitectura que adems de compartir la
memoria comparte la unidad aritmtica. Sacar sumador de la unidad de instruccin.
nPC_sel WEPC
P C
PC[31..28]
add_26
0
2
AluOut
1S
jump
28
Procesador Multiciclo
Compartiendo la ALU.
Inm16
AluOut
Op32
Extensor
AluCtrAluSrcB
Igual
Equal
busA
busB
ExtOp
0
3
1
2branch
+ 4
1
0
PC
AluSrcA
29
Procesador Multiciclo
Compartiendo la ALU. Transferencias fsicasADD: R[rd] R[rs] + R[rt]; PC PC + 4 IR = M[PC], PC = add(PC,+4); Unidad Instruccin, Operaciones.A=R[rs], B=R[rt]; Unidad Registros, Lectura.S = add(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura.
SUB: R[rd] R[rs] R[rt]; PC PC + 4 IR = M[PC], PC = add(PC,+4); Unidad Instruccin y Operaciones.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = sub(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura.
30
Procesador Multiciclo
Compartiendo la ALU. Transferencias fsicasSLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4IR = M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = slt(A, B); Unidad Operaciones.R[rd] = S. Unidad Registros. Escritura.
ORI: R[rt] R[rs] + zero_ext(Inm16); PC PC + 4 IR = M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones.A = R[rs]; Unidad Registros. Lectura.S = or(A , zero_ext(Inm16) ); Unidad Operaciones.R[rt] = S. Unidad Registros. Escritura.
31
Procesador Multiciclo
Compartiendo la ALU. Transferencias fsicasLOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4 IR = M[PC], S = add(PC, +4); Unidad Instruccin y Operaciones.A = R[rs]; Unidad Registros. Lectura.S = add( A , sign_ext(Inm16)); Unidad Operaciones.M = M[S]; Unidad Memoria Datos.R[rt] = M. Unidad Registros. Escritura.
STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4 IR=M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones.A=R[rs], B=R[rt]; Unidad Registros. Lectura.S = add( A, sign_ext(Inm16)); Unidad Operaciones.M[S] = B. Unidad Memoria Datos.
32
Procesador Multiciclo
Compartiendo la ALU. Transferencias fsicasBEQ: if ( R[rs] == R[rt] ) PC (PC +4) + sign_ext(Inm16)*4 else PC PC + 4
IR = M[PC], PC = add(PC, +4); Unidad Instruccin y Operaciones.A = R[rs], B = R[rt]; Unidad Registros. Lectura.S = add( PC, sign_ext(Inm16)*4); Unidad Operaciones.if (Equal) PC = S. Unidad Operaciones. Unidad Instruccin.
J UMP: PC (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.
33
Procesador Multiciclo
Compartiendo la ALU. Seales de controlADD: R[rd] R[rs] + R[rt]; PC PC + 4 nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , WEIR;WEA , WEB ;AluSrcA = "busA", AluSrcB = "busB", AluCtr = add; WES ;RegDst = "rd" , Memtoreg="alu", RegWr.
SUB: R[rd] R[rs] R[rt]; PC PC + 4 nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , WEIR;WEA , WEB ;AluSrcA = "busA", AluSrcB = "busB", AluCtr = sub; WES ;RegDst = "rd" , Memtoreg="alu", RegWr.
34
Procesador Multiciclo
Compartiendo la ALU. Seales de controlSLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , WEIR;WEA , WEB ;AluSrcA = "busA", AluSrcB = "busB", AluCtr = slt; WES ;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, WEPC , WEIR;WEA ;AluSrcA = "busA", AluSrcB = "Op32", ExtOp = zero, AluCtr = ori, WES ;RegDst = "rt", Memtoreg="alu", RegWr.
35
Procesador Multiciclo
Compartiendo la ALU. Seales de controlLOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4 nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , 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, WEPC , WEIR;WEA , WEB;AluSrcA = "busA", AluSrcB = "Op32", ExtOp = sign, AluCtr = add, WES ;MemWr.
36
Procesador Multiciclo
Compartiendo la ALU. Seales de controlBEQ: if ( R[rs] == R[rt] ) PC (PC +4)+ sign_ext(Inm16)*4 else PC PC + 4
nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , WEIR;WEA , WEB ;AluSrcA = "PC", AluSrcB = "branch", AluCtr = add, WES ;if (Equal) { nPC_sel = S , WEPC }.
J: PC (PC +4)&0xF0000000+ add_26 *4nPC_sel = alu, AluSrcA = "PC", AluSrcB = "+4", AluCtr = add, WEPC , WEIR;nPC_sel = Jmp, WEPC .
37
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Diagrama de estados a partir de las seales
de control de cada etapa.
38
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.
nPC_sel = +4, WEPC , WEIR ;
WEA WEB
WEA WEB
WEA
WEA
WEA WEB
WEA WEB
nPC_sel = Jmp WEPC.
RegDst =rd Memtoreg=alu RegWr.
RegDst =rd Memtoreg=alu RegWr.
RegDst =rt Memtoreg=alu RegWr.
MemRd WEM
MemWr.
nPC_sel = if (Equal) { Br , WEPC }.
AluSrc =busB, AluCtr = add WES
AluSrc =busB, AluCtr = sub WES
AluSrc =Op32 ExtOp =zero AluCtr = oriWES
AluSrc = Op32 ExtOp =sign AluCtr = addWES
AluSrc = Op32 ExtOp =sign AluCtr = addWES
RegDst =rt Memtoreg=mem RegWr.
AddSub Ori Lw Sw Beq J
39
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Diseo clsico.
Diagrama de estados. Se plantean las ecuaciones lgicas para
determinar el prximo estado Las ecuaciones de salida en funcin del estado
40
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Diseo clsico.
Lgica Lgica Prximo Prximo EstadoEstado
RegistroRegistro
SalidasSalidas
LgicaLgicadedeSalidaSalida
EntradasEntradas
EstadoEstado
41
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Diseo clsico.
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.
42
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo. Diseo clsico. Tabla de verdad, que corresponde a
la matriz de transiciones.
Seales de controlPrximo estado
CondicionesFunctCdigo Operacin
Estado
SalidasEntradas
43
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.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.
Microinstruccin especifica el valor de: Las seales de control Las funciones de la alu Y cul es la prxima microinstruccin.
44
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Microprogramacin
Implementacin Funciones de prximo estado y las salidas almacenar
el estado en un registro(PC). Implementar las funciones de prximo estado y las
salidas en una ROM o en un dispositivo programable.
45
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Microprogramacin.
MicrooperacionesControl Estado = PC
Microinstruccin Direccin
46
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Microprogramacin.
Microcontrol: la informacin que permite determinar la prxima microinstruccin a ejecutar, que en general depende solamente de la instruccin que est en ejecucin.
Prxima InstruccinFunctCOp Control
SalidasEntradas
47
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Microprogramacin.
P C
PCsel
Addr
MemoriaInstruc-ciones
Rd
"1"Secuenciador
WEPC
Funct
Control
Cop Sealesde
Control
0
1
bu s
I R
0
1
2
Condiciones
op funciones
muxesmemoriaregistros
Control PCwrite enable
0
1
2
T0
T1
T2
TDsel
dir
48
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.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.
49
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Desventajas de la microprogramacin
Es costosa su implementacin. Es lenta comparada con un control alambrado; es
decir, mediante compuertas.
50
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Dos modalidades de microprogramacin:
Microprogramacin horizontal: 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.
51
Procesador Multiciclo
Diseo de la unidad de control del procesador multiciclo.Dos modalidades de microprogramacin:
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.
52
Procesador Multiciclo
Diseo del Microprograma 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.
53
Procesador Multiciclo
Diseo del Microprograma
Microprogramaimplementa el siguiente diagrama
de estados.
1011
0100
0110
0000
0010
0001
0101 11000011 1010
inc
sw
incinc
T1
Cero
1001
1000
0111
inc
inc
CeroCero Cero Cero
j
loadadd
beqorisub
T0
inc
54
Procesador Multiciclo Diseo del Microprogramafetch: 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: S = add(A, B), PC = T1[OP];sub:S = sub(A, B), PC = PC +1;writereg: R[rd] = S, PC = 0.ori: S = or(A, zero_ext(Inm16)), PC = PC +1; R[rt] = S,
PC = 0.lw: S = add(A, sign_ext(Inm16)), PC = PC +1; M =
MemDat[S], PC = PC +1; R[rt] = M, PC = 0.
sw: S = add(A, sign_ext(Inm16)), PC = PC +1; MemDat[S] = B, PC = 0.
beq: if (Equal) PC = PC + sign_ext(Inm16)] *4, PC = 0.
55
Procesador Multiciclo
Diseo del Microprograma
6
63
COp
OPFunct
110000010J
101000100BEQ
100101011SW
011100011LW
010001101ORI
001100010000000SUB
000100000000000ADD
OPFunctCOPInstruccin
56
Procesador Multiciclo
Diseo del Microprograma
4
direccinOP
T0
fetch0000110JUMP
beq1100101BEQ
storeword1010100SW
loadword0111011LW
ori0101010ORI
sub0011001SUB
add0010000ADD
RtulodireccinOPInstruccin
3
57
Procesador Multiciclo
Diseo del Microprograma.Tabla con los contenidos del microprograma
que tienen relacin con el control y las operaciones que cambian PC
58
Procesador Multiciclo Diseo del Microprograma.
10010001100beq
000001011
000011010storeword
000001001
000011000
000010111loadword
000000110
000010101ori
000000100writereg
000010011sub
00010010010add
010110000001
00100010000fetch
PCBEQPCJPCWR nPC_selPCselTDseldireccinRtulo
operaciones que cambian PCcontrol
59
Procesador Multiciclo
Diseo del Microprograma.Contenidos del microprograma que tienen
relacin con el control y las operaciones que cambian PC WEPC = PCWR | (PCBEQ & Equal) | (PCJ &
(OP== j))
60
Procesador Multiciclo Diseo del Microprograma.
PC
SigExt*4
4
nPC_sel0
Inm16
WEPC
PC[31..28]
0..1
add_26
0
1
0
1
nPC_sel1
WEPCPCBEQ
Equal
PCWR
OP ==j
PCJ
61
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales
de control. Mtodo para el camino multiciclo propuesto en el
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)
62
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales
decontrol.
Unidad de Control
Unidad Registros
RsRt
RegWr
AluCtr
AluSelBRegDst
Rd
ExtOp
Inm16
Din
MemRd
MemWr
1
0
MemtoReg
Unidadde
Operaciones
nPC_selCopFunct Cero
Reloj
WEPC
IRAddr
Memoria
WEIR
1
0
MemCtr
PC
WEBR
1
2
0
BR
AluSelA
JAddr
AluOut
DOut
63
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales
de control.PC[31..28]
0..1
add_26JAddr
WEPC
PCWRCond
Cero
PCWRCOp ==j
Extensor
64
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales
de control. 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.
65
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales
de control.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. sub: AluOut = sub(A, B), PC = PC +1;
R[Rd] = AluOut, AluOut = sub(A, B), PC = 0.ori: AluOut = or(A, zero_ext(Inm16)), PC = PC +1;
R[Rt] = AluOut, AluOut = or(A, zero_ext(Inm16)), 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: 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.
66
Procesador Multiciclo
Diseo del Microprograma
Microprogramacin orientada a las seales de control. Contenido del microprograma
dcba9876543210Direccin
1TDsel[1]
0TDsel[0]
00000000000010PCsel[1]
00101101010101PCsel[0]
01111111111110AluSelB[1]
10000011000000AluSelB[0]
11111111111100AluSelA
10000000110000AluCtr[2]
11111100111111AluCtr[1]
00000011000000AluCtr[0]
11111001ExtOp
00010010101000RegWr
1000RegDst
0000MemtoReg
00000000000001WEIR
0111MemRd
01000000000000MemWr
111110MemCtr
10000000000000PCWRCond
00000000000001PCWR
010nPC_sel[1]
1
00nPC_sel[0]
00000000000010WEBR
67
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales de
control. Tabla de Despacho 1
0J
dBEQ
bSW
8LW
6ORI
4SUB
2ADD
DireccinCop+Funct
68
Procesador Multiciclo Diseo del Microprograma
Microprogramacin orientada a las seales de control.
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.
69
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales de
control. Seales no codificadas.
ExtOut=SignExt(Inm16)ExtOut=ZeroExt(Inm16)ExtOp
If (Cero) PC PCSource-PCWRCond
PC PCSource-PCWR
IR Dout-WEIR
Add = AluOutAdd = PCMemCtr
Mem[Add]=Din-MemWr
Dout=Mem[Add]-MemRd
BR AluOut-WEBR
Rw = RtRw = RdRegDst
busW=DoutbusW =AluOutMemtoReg
R[Rw] busW-RegWr
AluInA= R[rs]AluInA = PCALUSelA
ActivaNo ActivaSeal
70
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales de
control. Seales Codificadas.
TablaDespacho=T310TDsel
TablaDespacho=T201TDsel
TablaDespacho=T100TDsel
PC = PC + 101PCsel
PC = TablaDespacho(COp ,funct)10PCsel
PC = 000PCsel
if(COp ==j) PCSource = JAddr10nPC_sel
PCSource = BR01nPC_sel
PCSource = AluOut00nPC_sel
AluInB = ExtOut11ALUSelB
AluInB = SignExt(Inm16)*410ALUSelB
AluInB = R[rt]01ALUSelB
AluInB = 400ALUSelB
ALUOut= AluInA or AluInB001AluCtr
ALUOut= AluInA - AluInB110AluCtr
ALUOut= AluInA + AluInB010AluCtr
Transferencias fsicas.ValoresSeal Control
71
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales de
control. Nombres y Valores Simblicos de los Campos.
Nombre Campo Valores Campo Funcin del campo con valor especfico ALU Add ALU realiza sumaSub ALU realiza restar 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 = AluOutPC 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 microinstruccinTD n Despacho usando tabla n
72
Procesador Multiciclo
Diseo del Microprograma Microprogramacin orientada a las seales de
control.Microprogama
73
Procesador Multiciclo
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)
74
Procesador Multiciclo
Lgica alambrada. Microsecuenciacin Una variante del esquema Microprograma orientado a
las transferencias Mediante diagramas de estado, es emplear para registrar el
estado un contador sincrnico con funciones(sincrnicas): de carga paralela, clear e incrementar.
Este esquema se denomina de microsecuenciacin y se emplea en diseos de la unidad de control de procesadores.
75
Procesador Multiciclo
Lgica alambrada. MicrosecuenciacinLas funciones de las seales de control del
contador son: Cero: llevar al estado inicial. Inc: pasar al estado siguiente. Load: presetear un estado determinado
0000
Ceroi
i+1
Inci
Load
76
Procesador Multiciclo
Lgica alambrada. MicrosecuenciacinSecuenciador
0101 0111 1010
1001 1100
0000
0100
0001
10111000 00100110 0011
inc
load
inc
inc inc
inc
inc
Cero Cero CeroCero Cero
Cero
loadloadload
load
loadx= 0
x=1 x= 2 x= 3x= 4 x= 5
77
Procesador Multiciclo
Lgica alambrada. Microsecuenciacin
78
Procesador Multiciclo
Lgica alambrada. MicrosecuenciacinEsta informacin puede codificarse en una
ROM pequea, o implementarse mediante un PLD.
79
Procesador Multiciclo
Lgica alambrada. Microsecuenciacin Un esquema general de la arquitectura para disear
mquinas secuenciales, en base a un secuenciador
Tabla deDespacho
Contador
Carga Paralela
L C Inc
ROM( o PLD)
Direcciones Contenidos
I C L SalidasEntradas
Prximo Estado
80
Procesador Multiciclo
Diseo del Control Multiciclo. Resumen
Microprograma
Contador. Tablas de Despacho.
Tablas de Verdad.
ROM
control microprogramado
Diagrama de Estados.
Funcin Prximo Estado.
Ecuaciones lgicas.
Dispositivo lgico programable.
control alambrado.
Representacin inicial.
Control secuenciacin.
Representacin lgica.
Tcnica de implementacin.
Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24Pgina 25Pgina 26Pgina 27Pgina 28Pgina 29Pgina 30Pgina 31Pgina 32Pgina 33Pgina 34Pgina 35Pgina 36Pgina 37Pgina 38Pgina 39Pgina 40Pgina 41Pgina 42Pgina 43Pgina 44Pgina 45Pgina 46Pgina 47Pgina 48Pgina 49Pgina 50Pgina 51Pgina 52Pgina 53Pgina 54Pgina 55Pgina 56Pgina 57Pgina 58Pgina 59Pgina 60Pgina 61Pgina 62Pgina 63Pgina 64Pgina 65Pgina 66Pgina 67Pgina 68Pgina 69Pgina 70Pgina 71Pgina 72Pgina 73Pgina 74Pgina 75Pgina 76Pgina 77Pgina 78Pgina 79Pgina 80
Top Related