UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA...
Transcript of UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA...
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 286
13.10 Diseño de la Unidad de Control de un Procesador Multiciclo.
13.10.1. Diseño clásico. A partir del diagrama de estados se plantean las ecuaciones lógicas para determinar el próximo estado; y las ecuaciones de salida en función del estado(se emplea el modelo de Moore, para máquinas secuenciales de estados finitos). En cada estado se especifican los valores de las señales de control que gobiernan las Transferencias entre Registros. El cambio de estado ocurre en el canto activo del reloj y la duración del reloj debe permitir la transferencia confiable de la etapa más lenta. La secuencia de transferencias se controla mediante el recorrido a través de los estados. La información que puede derivarse del diagrama de estados permite construir la siguiente tabla de verdad, que corresponde a la matriz de transiciones.
Entradas Salidas Estado Código
Operación Funct Condiciones Próximo
estado Señales de control
El diseño consiste en encontrar las funciones combinacionales mínimas para: Próximo estado = f1(Estado, Cod. Op., Funct) Señales de Control = f2(Estado, Cod. Op., Funct, Condiciones) Se asume que el próximo estado no depende de las condiciones generadas en el camino de datos. La secuencia de estados depende sólo de la instrucción en ejecución; mientras que la activación de algunas señales de control están condicionadas por los valores generados durante la ejecución. Esto reduce el número de estados.
Lógica próximo estado
Registro
Salidas
Lógica de Salida
Entradas
Estado
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 287
13.10.2. Microprogramación. Método sistemático para diseñar la unidad de control de un procesador. Se programan las transferencias entre registros y la secuencia en que éstas deben efectuarse. Cada microinstrucción especifica el valor que deben tomar las señales de control, las funciones de la alu, y cuál es la próxima microinstrucción. Una forma de implementar las funciones de próximo estado y las salidas es almacenar el estado en un registro(µPC), e implementar las funciones de próximo 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 microinstrucción 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 podríamos denominar control de secuencia de las microinstrucciones. Denominamos micro operaciones a las señales de control que actúan sobre los recursos del camino de datos: las funciones de la ALU y de la Unidad de Extensión, la programación de las vías de datos a través de los muxes, las habilitaciones de escritura sincrónica de los diversos registros, los controles de lectura y escritura de las memorias y el arreglo de registros(control de transferencias físicas), y las señales que controlan la secuenciación de las instrucciones en la unidad de instrucción(que dependen de las condiciones: equal, cero, etc.). Una representación de la información que se almacena en la micro memoria, que se denomina microprograma es la siguiente:
Dirección Microinstrucción Estado = µPC µControl Microoperaciones
Además existe la siguiente función: señales que controlan PC = f(micro operaciones de Control PC, Condiciones) Se denomina microcontrol a la información que permite determinar la próxima microinstrucción a ejecutar, que en general depende solamente de la instrucción que esté en ejecución. Ésta se ilustra en la siguiente tabla de verdad:
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 288
Entradas Salidas
µControl COp Funct Próxima µInstrucción
La tabla anterior describe el secuenciador de las microintrucciones. Un esquema de diseño de una unidad de control microprogramada se ilustra a continuación:
La ejecución de una instrucción puede visualizarse como la ejecución de una serie de microinstrucciones. En cada microinstrucción está la información necesaria para activar las diferentes microoperaciones de una etapa(en un ciclo de reloj) y determinar cuál es la próxima microinstrucción a ejecutar. Nótese que sólo es necesario el registro µPC, el que mantiene estable el bus de direcciones de la micromemoria, lo cual genera las señales de control estables entre ciclos de reloj. Es decir, una instrucción determinada es una secuencia específica 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 verificación de la correcta interpretación de las microinstrucciones.
µPC
Addr
MemoriaµInstruc-
ciones
Rd
"1"
Secuenciador
WEµPC
Funct
µControl
Cop
Señales de
Control bus µ
IR
Condiciones
µop funciones muxes memoria registros
Control PC write enable
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 289
Una alternativa de diseño es emplear un contador, con las funciones sincrónicas 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 diseño 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 próxima microinstrucción a partir de los bits de microcontrol y de los códigos de operación(Cop, funct), suelen denominarse tablas de despacho. Cuando µPCsel toma valor 0, se tiene retorno al estado inicial(búsqueda de instrucción o fetch); cuando toma valor 1 se pasa a la microinstrucción siguiente; y cuando vale 2 se determina la próxima microinstrucción en función de la instrucción que se está interpretando electrónicamente, mediante la activación de una tabla de despacho.
Además 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 múltiples bifurcaciones. Debe notarse que las condiciones provenientes del camino de datos junto con las microoperaciones que controlan PC forman las señales de control que actúan sobre la Unidad de Instrucción.
µPC
µPCsel
Add
MemoriaµInstruc-
ciones
Rd
"1"
Secuenciador
WEµPC
Funct
µControl
Cop Señales de
Control
0
1
bus µ
IR 0
1
2
Condiciones
µop funciones muxes
memoria registros
Control PC write enable
0
1
2
T0
T1
T2
µTDsel
µdir
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 290
Ventajas de la microprogramación: Facilita el diseño del control. Es flexible: puede adaptarse a los cambios, mediante reprogramación. Permite implementar repertorios complejos. Generalización: Puede implementar diversos repertorios en la misma máquina, sintonizando el repertorio con la aplicación. Compatibilidad: Diferentes organizaciones y recursos pueden disponer del mismo repertorio.
Desventajas de la microprogramación: Es costosa su implementación. Es lenta comparada con un control alambrado(hardwired); es decir, mediante compuertas. Se tienen dos modalidades de microprogramación:
Microprogramación 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 microcódigo.
Microprogramación vertical: Se compacta el microcódigo codificando en campos en que se agrupan clases de microoperaciones. Luego se decodifica localmente para generar todas las señales de control. Permite una mejor abstracción de la microprogramación, pero la decodificación puede hacer la máquina más lenta; debido a los niveles que deben recorrerse para la decodificación. Pueden especificarse diferentes formatos, por ejemplo uno para especificar transferencias y otro para especificar saltos. Por ejemplo asumiendo una longitud de palabra de micromemoria de 21 bits: Para las microinstrucciones de operaciones puede emplearse el siguiente formato: código operando1 operando2 destino operaciones
1 5 5 5 5 Para las microinstrucciones de control, que cambian la secuencia de ejecución, puede emplearse el siguiente formato: código condición próxima microdirección
1 3 17 Se consideran sólo dos formatos, por esto el campo código de microinstrucción ocupa un bit. Compromiso: Espacio versus tiempo. Dependiendo de la estructura del camino de datos, algunas señales de control no se pueden activar simultáneamente; por ejemplo en la post-escritura se activa memoria a registro o alu
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 291
a registro, pero no ambas simultáneamente. Esto implica que puede codificarse ambas señales en un solo bit de la microinstrucción, lo cual ahorra memoria de microprograma. En el caso del registro que debe leerse y cargarse en el busA, puede disponerse de 32 señales, que activan individualmente a cada uno de los registros del arreglo; pero como no pueden activarse simultáneamente 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 líneas de entrada y 32 salidas) pero se incurrirá en un tiempo adicional debido al circuito combinacional. La codificación debe permitir que las acciones que se puedan realizar en paralelo puedan ser especificadas en una sola microinstrucción.
13.10.3. Diseño del microprograma: Existen dos modalidades, una orientada a las transferencias; la otra, a las señales de control. a) Microprograma orientado a las transferencias. El microprograma se escribe en forma similar a un programa en un lenguaje de alto nivel. Cada línea, que puede tener un rótulo que simboliza la microdirección, corresponde a una microinstrucción, que se realiza en un ciclo de reloj. Una microinstrucción es un secuencia de microoperaciones, separadas por comas. Las microoperaciones son descritas por las transferencias físicas que realizan, o por las funciones que activan en los recursos, o por sentencias de control. Las sentencias de control deben especificar cual será la próxima microinstrucción a realizar: Pueden emplearse saltos a microdirecciones; o activar funciones combinacionales, mediante las tablas de despacho) que determinan la próxima microdirección. El emplear lenguajes permite realizar simulaciones para verificar la correcta interpretación de las instrucciones, y a la vez ensamblar los diferentes bits de cada microinstrucción. El siguiente es el texto del microprograma que implementa el procesador multiciclo desarrollado anteriormente, pero con un segundo estado común para todas las instrucciones. Esto último implica que la instrucción jump se realizará en dos ciclos. Nótese que el estado siguiente al add y al sub se ha tratado como un solo estado equivalente(el ubicado en la microdirección writereg), lo cual requiere emplear otra tabla de despacho, ya que sólo puede existir un estado siguiente al estado 0011. Se describe una unidad de control microprogramada mediante la descripción de las microoperaciones (empleando transferencias físicas), y el microcontrol empleando: transferencias al µPC(micro contador de programa) e invocaciones a las tablas de despacho.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 292
El microprograma implementa el siguiente diagrama de estados(donde la identificación del estado es la microdirección): 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: 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. 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. beq: if (Equal) PC = PC + sign_ext(Inm16)] *4, µPC = 0. Si mediante las 12 líneas formadas por los buses Cop y Funct, formamos un decodificador de la instrucción, generando el bus OP, de tres bits, ya que en el ejemplo se microprograman siete instrucciones, se tiene:
1011
0100
0110
0000
0010
0001
0101 1100 0011 1010
inc
sw
incinc
T1
Cero
1001
1000
0111
inc
inc
CeroCero Cero Cero
j
loadadd
beqorisubT0
inc
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 293
Instrucción COP Funct OP ADD 000000 100000 000 SUB 000000 100010 001 ORI 001101 φφφφφφ 010 LW 100011 φφφφφφ 011 SW 101011 φφφφφφ 100 BEQ 000100 φφφφφφ 101 J 000010 φφφφφφ 110
La tabla de despacho 0, puede describirse por el siguiente mapa de memoria, asumiendo la dirección 0000 para la primera microinstrucción que realiza la búsqueda de la instrucción. Se agregan columnas con los mnemónicos de las instrucciones y con los nombres simbólicos de la micro direcciones:
Instrucción OP µdirección Rótulo
ADD 000 0010 add SUB 001 0011 sub ORI 010 0101 ori LW 011 0111 loadword SW 100 1010 storeword BEQ 101 1100 beq JUMP 110 0000 fetch
También puede diseñarse mediante compuertas la tabla anterior. La tabla de despacho 1(equivale a una constante), puede describirse según:
Instrucción OP µdirección Rótulo
ADD 000 0100 writereg Es importante destacar que cada línea del microprograma debe permitir determinar el valor de cada uno de los bits de la microinstrucción. Se definen tres microoperaciones para controlar la escritura en el registro PC. La señal PCWR, que debe activarse para escritura incondicional en PC; PCBEQ que se activa si la instrucción en ejecución es una bifurcación; y PCJ que se activa si la instrucción en curso es un salto incondicional. Las señales nPC_sel[1..0] seleccionan el contenido a escribir en el registro PC. La siguiente ecuación 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 relación 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.
6
63
COp OP
Funct
3 4
µdirección OP
T0
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 294
µcontrol µoperaciones que cambian PC Rótulo µdirección µTDsel µPCsel nPC_sel PCWR PCJ PCBEQ fetch 0000 φφ 01 00 1 0 0 0001 00 10 φ1 0 1 0 add 0010 01 10 φφ 0 0 0 sub 0011 φφ 01 φφ 0 0 0 writereg 0100 φφ 00 φφ 0 0 0 ori 0101 φφ 01 φφ 0 0 0 0110 φφ 00 φφ 0 0 0 loadword 0111 φφ 01 φφ 0 0 0 1000 φφ 01 φφ 0 0 0 1001 φφ 00 φφ 0 0 0 storeword 1010 φφ 01 φφ 0 0 0 1011 φφ 00 φφ 0 0 0 beq 1100 φφ 00 10 0 0 1 Se vuelve a dibujar un esquema parcial de la unidad de instrucción y un esquema, en base a compuertas, para la lógica que forma la señal de control que habilita la escritura en el registro PC.
WEPC PCBEQ Equal
PCWR
OP ==j PCJ
PC
SigExt*4
4
nPC_sel0
Inm16
WEPC
PC[31..28]
0..1
add_26
0
1
0
1
nPC_sel1
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 295
13.10.4. Microprogramación orientada a las señales de control. Se desarrollará el método para el camino multiciclo propuesto en el texto de referencia, que se ilustra a continuación: El camino de datos comparte la memoria para las instrucciones y los datos; los cálculos de direcciones de la unidad de instrucción se realizan en la ALU; para calcular la condición de igualdad en las bifurcaciones se emplea la ALU(ésta genera la señal cero). En el texto de referencia se agrega el registro MDR(Memory Data Register), para almacenar datos leídos de la memoria. En el primer ciclo del reloj se lee la memoria para obtener la instrucción a ejecutar, y al mismo tiempo se emplea la unidad de operaciones para calcular la dirección de la próxima instrucción(PC = PC +4).
Unidad de Control
Unidad Registros
Rs Rt
RegWr
AluCtr
AluSelB RegDst
Rd
ExtOp
Inm16
Din
MemRd
MemWr
1
0
MemtoReg
Unidad de
Operaciones
nPC_sel Cop Funct Cero
Reloj
WEPC
IR Add
Memoria
WEIR
1
0
MemCtr
PC
WEBR
1
2
0
BR
AluSelA
JAddr
AluOut
DOut
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 296
En el segundo ciclo del reloj, se decodifica la instrucción a ejecutar(en la unidad de control), al mismo tiempo se leen los registros asociados a los campos Rs y Rt de la instrucción(aunque algunas instrucciones no los empleen); también se calcula empleando la unidad de operaciones la dirección de salto de la bifurcación(que se almacena en BR); y se genera la dirección de salto incondicional. Es necesario un registro adicional para almacenar la dirección de bifurcación, se emplea BR con este propósito. Debe destacarse que se calcula en todos los casos dicha dirección, aunque la instrucción no sea una bifurcación. En caso de instrucción de salto, en el segundo ciclo se tiene decodificada la instrucción y se pueden activar las señales de control de PC, para grabar la dirección de salto que se denomina Jaddr, en el diagrama. Además, en este caso, se requiere que la próxima microinstrucción sea de búsqueda de próxima instrucción(fetch). De este modo el segundo estado será común para todas las instrucciones, en él se leen los registros y además se decodifica la instrucción, generándose las señales de control, y mediante la activación de la tabla de despacho se puede seguir procesando las diferentes instrucciones. En el tercer ciclo del reloj se ejecutan las operaciones inmediatas y aritméticas, o bien se calcula de dirección efectiva en el caso de instrucciones de transferencias. En caso de bifurcación se calcula la resta de los operandos leídos en el segundo ciclo, y se genera la señal de resultado igual a cero. A continuación se ilustran la forma de generar la dirección de salto Jaddr, y un detalle de la unidad de operaciones modificada para compartir la unidad aritmético lógica.
PC[31..28]
0..1
add_26 JAddr
WEPC PCWRCond
Cero
PCWR COp ==j
Extensor
<<2
4
ALUSelB
0
1
2
0
1
3
ALUSelA AluCtr ExtOp
AluOut busA
busB
PC
Inm16
Cero
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 297
El diagrama lógico muestra la señal habilitadora de escritura del registro PC: en forma incondicional (para formar PC+4), o para formar la dirección 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 instrucción es lógica. El camino de datos no almacena en registro la salida de la alu, por esta razón 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.
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.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 298
beq: AluOut= sub(A, B), if (Cero) PC = BR, µPC = 0. La siguiente tabla muestra el contenido del microprograma, cada columna corresponde a una microinstrucción; en los renglones figuran los valores de las señales de control.
WEBR 0 1 0 0 0 0 0 0 0 0 0 0 0 0nPC_sel[0] 0 0 φ φ φ φ φ φ φ φ φ φ φ 1nPC_sel[1] 0 1 φ φ φ φ φ φ φ φ φ φ φ 0PCWR 1 0 0 0 0 0 0 0 0 0 0 0 0 0PCWRCond 0 0 0 0 0 0 0 0 0 0 0 0 0 1MemCtr 0 φ φ φ φ φ φ φ 1 1 1 1 1 φMemWr 0 0 0 0 0 0 0 0 0 0 0 0 1 0MemRd 1 φ φ φ φ φ φ φ φ 1 1 φ 0 φWEIR 1 0 0 0 0 0 0 0 0 0 0 0 0 0MemtoReg φ φ φ 0 φ 0 φ 0 φ φ 0 φ φ φRegDst φ φ φ 0 φ 0 φ 0 φ φ 1 φ φ φRegWr 0 0 0 1 0 1 0 1 0 0 1 0 0 0ExtOp φ 1 φ φ φ φ 0 0 1 1 1 1 1 φAluCtr[0] 0 0 0 0 0 0 1 1 0 0 0 0 0 0AluCtr[1] 1 1 1 1 1 1 0 0 1 1 1 1 1 1AluCtr[2] 0 0 0 0 1 1 0 0 0 0 0 0 0 1AluSelA 0 0 1 1 1 1 1 1 1 1 1 1 1 1AluSelB[0] 0 0 0 0 0 0 1 1 0 0 0 0 0 1AluSelB[1] 0 1 1 1 1 1 1 1 1 1 1 1 1 0µPCsel[0] 1 0 1 0 1 0 1 0 1 1 0 1 0 0µPCsel[1] 0 1 0 0 0 0 0 0 0 0 0 0 0 0µTDsel[0] φ 0 φ φ φ φ φ φ φ φ φ φ φ φµTDsel[1] φ 1 φ φ φ φ φ φ φ φ φ φ φ φµDirección 0 1 2 3 4 5 6 7 8 9 a b c d
Para ejecutar el salto en dos ciclos se requiere agregar una señal de control que se active cuando el código de operación es un salto incondicional. La tabla de verdad para la Tabla de Despacho 1, se ilustra a continuación. Las microdirecciones están en hexadecimal.
Cop+Funct µDirecciónADD 2 SUB 4 ORI 6 LW 8 SW b BEQ d J 0
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 299
Note que la señal de control WEPC se forma con las microoperaciones: PCWR, PCWRCond y la condición Cero, y con la señal (COp == j). Se tiene la siguiente ecuación:
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 lógica programable, pueden simplificarse las ecuaciones a través del uso de las condiciones superfluas. La tabla de despacho también puede implementarse en ROM, o bien con lógica programable; en este caso pueden emplearse condiciones superfluas, ya que sólo es de interés el campo funct en las operaciones de tipo R; es decir aquéllas 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 método para describir el microcódigo: • Efectuar listado de las señales de control, junto a los valores que pueden tomar. • Agrupar funcionalmente las señales de control, en campos. • Colocar los campos en un orden lógico. Primero las que controlan las fuentes de datos,
luego las operaciones sobre ellos, después el destino del resultado, y finalmente la microsecuenciación.
• Establecer nombres simbólicos para los campos, y los valores(también simbólicos) que pueden tomar.
• Codificar operaciones que nunca puedan realizarse en concurrencia. Señales no codificadas. Señal No Activa Activa ALUSelA AluInA = PC AluInA= R[rs] RegWr - R[Rw] ⇐ busW MemtoReg busW =AluOut busW=Dout RegDst Rw = Rd Rw = Rt WEBR - BR ⇐ AluOut MemRd - Dout=Mem[Add] MemWr - Mem[Add]=Din MemCtr Add = PC Add = AluOut WEIR - IR ⇐ Dout PCWR - PC ⇐ PCSource PCWRCond - If (Cero) PC ⇐ PCSource ExtOp ExtOut=ZeroExt(Inm16) ExtOut=SignExt(Inm16) PCSource es el bus de entrada al registro PC.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 300
Señales Codificadas. Señal Control Valores Transferencias físicas. AluCtr 010 ALUOut= AluInA + AluInB AluCtr 110 ALUOut= AluInA - AluInB AluCtr 001 ALUOut= AluInA or AluInB ALUSelB 00 AluInB = 4 ALUSelB 01 AluInB = R[rt] ALUSelB 10 AluInB = SignExt(Inm16)*4 ALUSelB 11 AluInB = ExtOut nPC_sel 00 PCSource = AluOut nPC_sel 01 PCSource = BR nPC_sel 10 if(COp ==j) PCSource = JAddr µPCsel 00 µPC = 0 µPCsel 10 µPC = TablaDespacho(COp ,funct) µPCsel 01 µPC = µPC + 1 µTDsel 00 TablaDespacho=T1 µTDsel 01 TablaDespacho=T2 µTDsel 10 TablaDespacho=T3
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 301
Nombres y Valores Simbólicos de los Campos. Nombre Campo Valores Campo Función del campo con valor específico 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 instrucción usando PC Read ALU lee dato usando dirección efectiva en AluOut Write ALU escribe dato con dirección 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 ; Dirección de salto
µControl Sig Va a siguiente µinstrucción Fetch Va a la primera microinstrucción TD n Despacho usando tabla n
Microprograma:
rótulo ALU FuenteA FuenteB Ext Destino Memoria IR Write
BR Write
PC Write
µControl
Fetch: Add PC 4 Read PC IR ALU Sig Add PC Inm*4 Sign BR ifJump TD 1 Add: Add rs rt Sig rd ALU Fetch Sub: Sub rs rt Sig rd ALU Fetch Ori: Or rs Extend Zero Sig rt ALU Fetch Lw: Add rs Extend Sign Sig Read ALU Sig rt MEM Fetch Sw: Add rs Extend Sign Sig Write ALU Fetch Beq: Sub rs rt Branch Fetch
El microprograma es una tabla simbólica del contenido de la micromemoria. Los rótulos corresponden a direcciones simbólicas de la micromemoria.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 302
Los valores de cada columna, dentro de un renglón, deben permitir determinar el valor de cada uno de los bits de la microinstrucción. Notar que el branch se resuelve después de la alu, con la señal cero.
13.10.5. Lógica alambrada. Usar un dispositivo programable con salidas de registro, para programar las funciones siguientes: Próximo estado = F1(Estado, Cod. Op., Funct) Señales de Control = F2(Estado, Cod. Op., Funct, Condiciones) Con esta arquitectura, las realimentaciones del estado son internas al dispositivo. Este esquema se emplea para diseñar unidades de control en firmware, o de lógica alambrada. Diseño que resulta más rápido que la lectura de memorias del caso anterior.
Microsecuenciación Una variante del esquema a) mediante diagramas de estado, es emplear para registrar el estado un contador sincrónico con funciones(sincrónicas): de carga paralela, clear e incrementar. Y programar la función de próximo estado en función de estas señales. Este esquema se denomina de microsecuenciación y se emplea en diseños de la unidad de control de procesadores. Las funciones de las señales de control del contador son: • Cero: llevar al estado inicial. • Inc: pasar al estado siguiente. • Load: presetear un estado determinado
PLD Salidas
Entradas
0000
Cero i
i+1
Inci
Load
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 303
Ejemplo. Diseñar con un secuenciador el siguiente diagrama de estados. El contador registra el estado, y sus salidas están conectadas al bus de direcciones de la memoria. El contenido de la memoria son: los bit C, I, L que están conectadas a las señales Cero, Incrementar y Cargar del registro; además 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 implementación combinacional; pero también puede emplearse un dispositivo lógico programable. A continuación se presenta la tabla de transiciones, o programa del secuenciador, notando que la información del próximo estado no se almacena en la memoria, se incorpora en la tabla sólo con fines aclaratorios:
0101 0111 1010
1001 1100
0000
0100
0001
1011 1000 0010 0110 0011
inc
load
inc
inc inc
inc
inc
Cero Cero Cero Cero Cero
Cero
load load load
load
load x= 0 x=1 x= 2 x= 3
x= 4 x= 5
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 304
Estado Próximo C I L Salidas 0000 0001 0 1 0 0001 0 0 1 0010 0000 1 0 0 0011 0000 1 0 0 0100 0101 0 1 0 0110 0111 0 1 0 1000 1001 0 1 0 1011 1100 0 1 0 1001 1010 0 1 0 1100 0000 1 0 0 0101 0000 1 0 0 0111 0000 1 0 0 1010 0000 1 0 0
Nótese que los nombres binarios de los estados se eligen para ocupar lo más eficientemente que sea posible la señal de cuenta o incremento del contador. Al estado 0000, se llega después 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 señal Cero. Estando en el estado 0001, de acuerdo a la entrada se discierne cuál es el próximo estado. En el ejemplo existe sólo un estado para el cual existen múltiples bifurcaciones. Se requiere almacenar la información de los próximos estados de acuerdo a los valores de las entradas, y cuando se active la señal Load. Esta información se denomina Tabla de Despacho.
Entrada x Próximo estado. 000 0100 001 0110 010 1000 011 1011 100 0011 101 0010
Esta información puede codificarse en una ROM pequeña, o implementarse mediante un PLD. Debe notarse que en la ROM del secuenciador no se almacena el próximo estado. Esto puede significar un ahorro importante de memoria, si existe un pequeño número de estados con múltiples bifurcaciones. En caso de existir varios nodos con bifurcaciones, es preciso definir otras señales de carga, una por cada nodo con bifurcaciones, y también igual número de tablas de Despacho. La
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 305
señal Load del contador es activada por el or de las señales de carga de las tablas de despacho. Un esquema general de la arquitectura para diseñar máquinas secuenciales, en base a un secuenciador, se ilustra a continuación:
13.11 Resumen del Diseño del Control Multiciclo. La especificación inicial del control puede efectuarse a partir de un diagrama de estados o de un microprograma. A partir de lo anterior, debe seleccionarse cómo especificar el control de la secuenciación. Lo cual a su vez puede realizarse de dos formas básicas: Especificando la función de próximo estado; o bien, las funciones del contador de saltos. Debe notarse que el control de la secuenciación puede determinarse independientemente de la elección inicial. Luego la representación lógica del control puede efectuarse mediante ecuaciones o tablas de verdad. Finalmente la técnica de implementación de las ecuaciones lógicas puede realizarse mediante dispositivos lógicos programables o mediante ROM. Debe notarse que la representación lógica y la técnica de implementación también pueden ser determinadas independientemente de las decisiones anteriores.
Tabla de Despacho
Contador Carga Paralela L C Inc
ROM( o PLD) Direcciones Contenidos I C L Salidas
Entradas
Próximo Estado
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 306
El siguiente esquema muestra las diversas relaciones que existen: La figura anterior muestra las alternativas de diseño del control. El control es más 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, sólo una memoria y un sumador). Se puede simplificar aún más el control si se desea ejecutar varias instrucciones al mismo tiempo, más que aumentar la velocidad promedio de ejecución de las instrucciones individuales.
13.12. Preparación para segmentación (pipeline). Se desea ejecutar varias instrucciones, al mismo tiempo. Se dividen las etapas mediante registros, cada instrucción puede estar ejecutándose en una etapa. Si existen cinco etapas, pueden ejecutarse simultáneamente cinco instrucciones. Para esto es preciso, que cada instrucción pase por las cinco etapas, y que cada etapa tenga su propio control. Se verá más adelante las razones por las cuales las instrucciones deben durar aproximadamente lo mismo. Para lograr esto, basta en el diagrama de estados, agregar estados en los que no se activen controles. La determinación de cuáles estados deben agregarse requiere de un análisis más refinado que se efectuará más adelante. A continuación se muestra un esquema, con los estados agregados.
Microprograma Contador. Tablas de Despacho. Tablas de Verdad. ROM control microprogramado
Diagrama de Estados. Función Próximo Estado. Ecuaciones lógicas. Dispositivo lógico programable. control alambrado.
Representación inicial. Control secuenciación. Representación lógica. Técnica de implementación.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 307
Un esquema del control asociado a la etapa se muestra a continuación: Las señales de control, van viajando con los datos a través de la cañería(pipeline).
nPC_sel = “+4”, WEPC , WEIR ;
WEA
WEB WEA
WEB WEA
WEA
WEA WEB
WEA WEB
nPC_sel = Jmp WEPC.
RegDst =rd, Memto reg=alu RegWr.
RegDst =rd, Memto reg=alu RegWr.
RegDst =rt, Memto reg=alu ,RegWr
MemRd WEM
if (Equal) { nPC_sel = Br , WEPC
}.
AluSrc =busB, AluCtr = add, WES
AluSrc =busB, AluCtr = sub, WES
AluSrc =Op32, ExtOp =zero, AluCtr = ori, WES
AluSrc = Op32, ExtOp =sign, AluCtr = add, WES
AluSrc = Op32, ExtOp =sign, AluCtr = add, WES
RegDst =rt, Memto reg=mem, RegWr.
MemWr.
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Prof. Leopoldo Silva Bijit. 03-09-2004 308
SUnidad
Registros
Rs Rt
busW
Rd
Inm16
Add
Memoria Datos
M
Din
MemRd MemWr
0
1
MemtoReg
Unidad de
Operaciones
nPCsel0
Unidad de
Instrucción
COp+ Funct
Equal
Reloj
WEPC
IR
A
B
WEIR
WEM
RegWr
RegDst
WEA WEB
AluCtr WES
AluSrcExtOp
nPCsel0
nPCsel1