universidad tecnica federico santa maria departamento de...

23
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Prof. Leopoldo Silva Bijit. 01-09-2004 235 12.5.3 Unidad de instrucción. A continuación se muestra el camino de datos que interconecta la unidad que determina la próxima instrucción a ejecutar, con la memoria de instrucciones. La conexión de los cuatro primeros bits de (PC+4)[31..28], permiten formar la dirección de salto incondicional. La señal Write Enable del registro PC, puede estar permanentemente alta, de esta forma se modifica el valor del Contador del Programa solamente en los cantos de bajada del reloj. Puede abstraerse el diagrama anterior en un bloque que determina y decodifica la instrucción a ejecutar, y que además calcula la dirección de la próxima instrucción a realizar. Si la denominamos Unidad de Instrucción, puede representársela según: <25..21> <20..16> <15..11> <15..0> <25..0> <31..26> PC SigExt <<2 4 (PC+4)[31..28] nPC_sel 0 1 2 0..1 AddrI Memoria Instrucciones busIR Rd "1" Inm16 add 26 WE PC <5..0 > Funct COp rs rt rd Inm16 R add_26 nPC sel Unidad de Instrucción <15..0> Inm16 <15..11> rd <20..16> rt <25..21> rs <31..26> COp busIR

Upload: hoangnga

Post on 05-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 235

12.5.3 Unidad de instrucción. A continuación se muestra el camino de datos que interconecta la unidad que determina la próxima instrucción a ejecutar, con la memoria de instrucciones. La conexión de los cuatro primeros bits de (PC+4)[31..28], permiten formar la dirección de salto incondicional. La señal Write Enable del registro PC, puede estar permanentemente alta, de esta forma se modifica el valor del Contador del Programa solamente en los cantos de bajada del reloj. Puede abstraerse el diagrama anterior en un bloque que determina y decodifica la instrucción a ejecutar, y que además calcula la dirección de la próxima instrucción a realizar. Si la denominamos Unidad de Instrucción, puede representársela según:

<25..21>

<20..16>

<15..11>

<15..0>

<25..0>

<31..26> PC

SigExt <<2

4

(PC+4)[31..28]

nPC_sel

0

1

2

0..1

AddrIMemoria

Instrucciones

busIR

Rd

"1"

Inm16

add 26

WEPC

<5..0 >

Funct COp

rs

rt

rd

Inm16R

add_26

nPC sel

Unidad de Instrucción

<15..0> Inm16

<15..11> rd

<20..16> rt

<25..21> rs

<31..26> COp

busIR

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 236

12.5.4. Camino de Datos para operaciones de tipo R. Se ilustran las conexiones necesarias entre el arreglo de registros y la unidad aritmético lógica, para poder realizar las transferencias físicas que implementan las operaciones de suma y resta. Debe notarse que se requiere cablear desde el bus decodificado de instrucciones, el campo Rd a la entrada RW(que establece el valor del registro en que se escribirá). Debido a la realimentación, desde la salida de la ALU hacia la entrada del arreglo de registros, es preciso sincronizar la escritura(con RegWr).

12.5.5. Requerimientos de tiempo para la escritura en el arreglo de registros: Desde el canto de bajada del reloj, transcurre un tiempo hasta que la salida del registro PC está estable. Luego debe esperarse el tiempo de acceso de la memoria de instrucciones para tener datos válidos en el bus de datos de la memoria. Nótese que entre cantos de reloj no cambia el valor de PC. La señal WEPC es activada en otra parte del circuito (que no se muestra en el diagrama, y que se denomina unidad de control). Debe ser activada antes del canto del reloj. Los bits, ya estables del campo de operación deben ser decodificados en la unidad de control y activar la función de la ALU, que puede ser sumar o restar; esto demora un tiempo; en el diagrama se denomina Retardo de Propagación a través de la Unidad de Control. Se asume igual tiempo para que esté estable el valor de Rd en la entrada RW del arreglo de registros. (Como se verá más adelante el campo Rd debe pasar por un mux antes de ingresar al arreglo). No se indica en el diagrama, pero la unidad de control debe poner en uno el write enable del arreglo de registros, para preparar la escritura (cuando llegue el reloj). En el diagrama se aprecia un tiempo, un poco mayor que el anterior, hasta que se tienen estables las señales en los buses de salida del arreglo, es el tiempo de acceso al arreglo de registros. Ahora debe esperarse que esas señales se propaguen a través de la ALU para tener un resultado estable. Adicionalmente debe contemplarse el tiempo de setup del arreglo de registros y una provisión para absorber las variaciones del reloj(skew).

busA

RW = rd

32

busBRW

Ra Rb

32 Registros32-bits

rs rt

32

32

busW

WE

RegWr

5 5

5

AluCtr

AluOut

W

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 237

Las consideraciones anteriores permiten determinar la máxima frecuencia del reloj para operación sincrónica, de las operaciones ADD y SUB. El diagrama muestra un tiempo de acceso a la memoria de instrucciones muy pequeño, y como se verá más adelante dicho tiempo puede ser aleatorio, ya que se puede estar leyendo de la memoria caché; o bien haberse producido un fallo en ésta, y debe esperarse la renovación de la caché a través de una lectura de memoria principal(lo cual es órdenes de magnitud mayores que el tiempo indicado en el diagrama). Más aún, si el sistema tiene memoria virtual, y si el segmento del programa no se encuentra en memoria principal, por una falla de página, deberá esperarse el tiempo(mucho mayor aún) para leer desde el disco y escribir en la memoria principal.

Propagación ALU

Valores anteriores Señales de control

Nuevos valores RegWr, RW, WEPC, AluCtr,....

Valor anterior PC+4

Nuevo valor PC+4

Valor anterior PC

Nuevo valor PC

Clk

Valor anterior IR

Nuevo valor IR Rs, Rt, Rd, Op, Inm16, add26

Retardo Registro

Tiempo Acceso Memoria Instrucciones

Tiempo Propagación Sumador Unidad de Instrucción

Retardo de Propagación en Unidad de Control

Valores anteriores busA, busB

Nuevos valores busA, busB

Tiempo Acceso Arreglo Registros

Valores anteriores AluOut

Nuevos valores de AluOut en ADD, SUB.

Valor anterior de busW en ADD, SUB

Nuevo valor de busW

Propagación Mux

Setup Registro y Skew del reloj.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 238

La frecuencia del reloj se ha determinado para cumplir los requerimientos de tiempo de las instrucciones ADD y SUB. Debe efectuarse similar análisis para cada una de las instrucciones y la que tenga mayor tiempo de ejecución es la que determina la frecuencia del reloj. Incluso las instrucciones que tengan un tiempo de ejecución menor se ejecutarán al ritmo de la más costosa en tiempo, en la estructura que se está desarrollando (monociclo, ya que existe un solo reloj). Nótese que en este esquema, la unidad de control no puede ser una máquina secuencial sincrónica con el mismo reloj (CLK), pues debe efectuar varias decisiones en un mismo ciclo del reloj.

12.5.6. Modificaciones al camino de datos para procesar instrucciones inmediatas. Debido a que la instrucción inmediata escribe en Rt, es preciso agregar un mux controlado por la señal RegDst. Entonces cuando la instrucción es ADD o SUB, RegDst tendrá valor cero; y cuando la instrucción sea ORI, RegDst valdrá uno. De esta forma es posible compartir el arreglo de registros entre los dos tipos de instrucciones. Como el segundo operando del or inmediato es la extensión lógica del campo inmediato 16 (se rellena con ceros, los quince bits más significativos) y si se desea utilizar(compartir) la misma ALU de las instrucciones aritméticas anteriores, debe agregarse otro mux controlado por la señal AluSrc. Así entonces, si la instrucción es ADD o SUB, AluSrc valdrá cero, llevando a la entrada inferior de la ALU el valor de R[Rb]; y si la instrucción es ORI, AluSrc tomará valor uno, conduciendo ahora el valor de Op32 hacia la ALU. Además se indica en el diagrama la unidad extensora.

32

busA

RW

32

busB Rw

Ra Rb

32 Registros32-bit

rs rt

32

busW

WE

RegWr

5 5 5

AluCtr

AluOut

AluSrc

0

1Op32

RegDst

0

1

rd

rt

ExtOp

Exte

nsor

Inm16

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 239

No se requieren conexiones adicionales, en el camino de datos anterior, para poder realizar las transferencias físicas que implementan el direccionamiento de las instrucciones de carga y almacenamiento. La dirección efectiva se calcula en la misma ALU; canalizando en el busA el contenido de R[rs]; y en la otra entrada de la ALU, colocando la extensión con signo del operando inmediato16 (llevado a través del mux con AluSrc = 1).

12.5.7. Camino de datos para accesar la memoria de datos. Es preciso conectar al bus de direcciones de la memoria de datos la salida de la ALU, de esta forma puede realizarse el direccionamiento relativo a registro base más desplazamiento para las instrucciones de carga y almacenamiento. Debido a que la instrucción Load moviliza la salida de la memoria hacia el arreglo de registros; y las instrucciones aritmético-lógicas escriben en el arreglo de registros la salida de la ALU, es preciso agregar un multiplexor comandado por la señal MemtoReg. La instrucción Store guarda en la dirección efectiva de la memoria el contenido del busB; se agrega entonces esa conexión al camino de datos. Finalmente queda el siguiente camino de datos:

AluOut32

busA

RW 32 busBRW

Ra Rb 32 Registros

32-bits

rs rt

32 busW

WE

RegWr

5 5 5

AluCtr

AluSrc

0

1Op32

RegDst

0

1

rd

rt

ExtOp

Extensor

Inm16

WrEnAddr

Memoria Datos

Dout

Din

Rd

MemRd MemWr

0

1

MemtoReg

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 240

12.5.8. Se agrega detector de igualdad. Se agrega una red combinacional para detectar la igualdad de busA y busB.

12.6. Unidades funcionales. Puede simplificarse los esquemas anteriores definiendo bloques: la Unidad de Registros(o de Memoria Local), la Unidad de Operaciones, y la Unidad de Memoria (de datos). Cuyos diagramas con el detalle interno, se ilustran a continuación:

busA

busB

Op32

ExtOp

32

RW 32RW

RaRb 32 Registros

32-bits

rsrt

32busW

WE

RegWr

555

RegDst

0

1

rd

rt

Extensor

Inm16

AluOut

AluCtr

AluSrc

0

1

WrEnAddrD

Memoria Datos

Dout

Din

Rd

MemRd MemWr

0

1

MemtoReg

Igual

Equal

rt

rd RW

32

Rw

Ra

Rb

32 Registros 32-bit

rs

32

busW

WE

RegWr

5

5

5

RegDst

1

0

busB

32

busA

Inm16

AluOut

Op32 Extensor

AluCtr

AluSrc

0

1

Igual

Equal

busB

busA

busB

ExtOp

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 241

Se ha agregado la unidad para detectar la igualdad del busA con el busB, dentro de la Unidad de Operaciones. Pero podría haberse empleado la ALU para determinar la igualdad de los operandos, este resultado se obtiene después en el tiempo, respecto al caso que se trata. Juntando ahora las unidades anteriores con la unidad de instrucciones, se obtiene el diagrama general.

Unidad de Memoria

Memoria Datos

Dout

MemRdMemWr

0

1

MemtoR

AddrD

Din

busW

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 242

Un esquema general, con detalle de las unidades:

Se resume a continuación el camino de datos completo para el procesador. Se ha agregado la unidad de control que gobierna las señales que interactúan con los recursos, para modificar el camino de datos de tal modo que sea posible efectuar las diferentes transferencias físicas que demandan las instrucciones del repertorio.

MemoriaDatos

Dout

MemRdMemWr

0

1

MemtoReg

AddrD

Din

busW

32

RW

Ra

Rb

32 Registros32-bit

32

busW

WE

RegWr

5

5

5

RegDst

1

0

32

Inm16

Alu

Out

AluSrc

Op32 Extensor

AluCtr

0

1

Igual

Equal

busB

busA

busB

ExtOp

<25..21>

<20..16>

<15..11>

<15..0>

<25..0>

<31..26>

PC

SigExt*

+4

(PC+4)[31..28]

nPC_sel

0

1

2

0..1

AddrI

MemoriaInstruc-ciones

busIR

Rd

"1"

Inm16

add_26

WEPC

<5..0 >

FunctCOp

rs

rt

rd

Inm16

add_26

4

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 243

Unidad de Control

AluOut

32 busA

32 busB

Unidad Registros

rs rt

32 busW

RegWr AluCtrAluSrc

RegDst

rd

ExtOp

Inm16 AddrD Memoria

Datos DoutDin

MemRd MemWr

0

1

MemtoReg

Unidad de

Operaciones

nPC_sel

Unidad de

Instrucción

COp+ Funct

Equal

Reloj

5

5

5

WEPC

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 244

12.7 Transferencias físicas de Datos. Cada transferencia lógica se implementa como un conjunto de transferencias físicas. Una transferencia física es la descripción de un movimiento de datos entre los recursos del camino de datos. Esta visión muestra lo que sucede en el camino de datos. Alguno de estos movimientos son debidos a conexiones permanentes entre recursos; otros movimientos de datos que pueden programarse mediante las señales de control. También las operaciones(o funciones del camino de datos; en nuestro caso las operaciones de la alu y la unidad extensora) pueden programarse mediante las señales de control. El resto de las señales de control sincronizan los cambios de estados de los registros o de la memoria. Para cada instrucción, a la cual se hace referencia a través de un mnemónico, se anota la transferencia lógica, y luego el conjunto de transferencias físicas que la desarrollan. Las transferencias físicas se agrupan de acuerdo a la unidad en que se realizan. Se muestran por líneas, pero toda la electrónica que las representa está funcionando en paralelo, y la información fluye en serie a través de los recursos (en este diseño monociclo). ADD: R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura. AluOut=add(busA, busB), Unidad Operaciones. busW=AluOut, R[RW]=busW. Unidad Registros. Escritura. SUB: R[rd] ⇐ R[rs] – R[rt]; PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura. AluOut= sub(busA, busB), Unidad Operaciones. busW=AluOut, R[RW]=busW. Unidad Registros. Escritura. SLT: R[rd] ⇐ R[rs] < R[rt] ? 1: 0 ; PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura. AluOut=slt(busA, busB), Unidad Operaciones. busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 245

ORI: R[rt] ⇐ R[rs] | zero_ext(Inm16); PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, RW=rt, busA=R[Ra], Unidad Registros. Lectura. Op32 = zero_ext(Inm16), AluOut=or(busA, Op32), Unidad Operaciones. busW=AluOut, R[RW]=busW. Unidad Registros. Escritura. Las tres instrucciones anteriores no emplean la etapa de memoria(MemWr=0). El ORI no utiliza el busB. LOAD: R[rt] ⇐ MEM[ R[rs] + sign_ext(Inm16)]; PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, RW=rt, busA=R[Ra], Unidad Registros. Lectura. Op32 = signext(Inm16), AluOut=add(busA , Op32), Unidad Operaciones. AddrD=AluOut, Dout = MemDat[AddrD], Unidad Memoria Datos. busW=Dout, R[RW]=busW. Unidad Registros. Escritura. STORE: MEM[ R[rs] + sign_ext(Inm16)] ⇐ R[rt]; PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción. Ra=rs, Rb=rt, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura. Op32 = signext(Inm16), AluOut= add(busA , Op32), Unidad Operaciones. AddrD=AluOut, Din = busB, MemDat[AddrD]=Din. Unidad Memoria Datos. La instrucción STORE no utiliza el arreglo de registros para escritura(RegWr=0). BEQ: if ( R[rs] == R[rt] ) PC ⇐ (PC +4)+ sign_ext(Inm16)] *4 else PC ⇐ PC + 4 AddrI=PC, busIR=MemInst[AddrI], Unidad Instrucción. Ra=rs, Rb=rt, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura. if (Equal) Unidad Operaciones. PC = (PC +4)+ sign_ext(Inm16)] *4 else PC=PC+4. Unidad Instrucción. BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros.(MemWr=0, RegWr=0) J UMP: PC ⇐ (PC +4)&0xF0000000+ add_26 *4 AddrI=PC, busIR=MemInst[AddrI], Unidad Instrucción. PC = (PC +4)&0xF0000000+ add_26 *4. Unidad Instrucción.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 246

Jump no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros.(MemWr=0, RegWr=0)

12.8. Transferencias físicas mediante señales de control. Valores Conceptuales que toman las Señales de Control En lugar de emplear códigos binarios para las señales de control pueden usarse valores que recuerden la función de la señal de control(movimientos, funciones, sincronización). Se tienen: ° nPC_sel: "+4","Branch","Jump" Unidad Instrucción. ° WEPC: "1" Escribe en registro PC. Unidad Instrucción. ° RegDst: “rt”, “rd” Unidad Registros. Lectura. ° ExtOp: “zero”, “sign” Unidad Operaciones. ° AluSrc: "busB","Op32" Unidad Operaciones. ° AluCtr: “add”, “sub”, “or”, “slt” Unidad Operaciones. ° MemWr: "1" Escribe en la memoria. Unidad Memoria Datos. ° MemRd: "1" Lee desde la memoria de datos. Unidad Memoria Datos. ° MemtoReg: "alu","mem" Unidad Registros. Escritura. ° RegWr: "1" escribe busW en el registro Unidad Registros. Escritura.

especificado en RW. Valores de las señales de control para activar las transferencias lógicas. Pueden describirse los valores que toman las señales de control para desarrollar las diferentes transferencias lógicas necesarias para cada instrucción. De esta forma se hace énfasis en el control y no en el movimiento de los datos a través del camino. Así entonces no es necesario describir las rutas permanentes del camino de datos. Como se verá esta descripción permitirá especificar la unidad de control. Se muestran agrupadas por Unidad. Dependiendo de la instrucción en ejecución, se muestran los valores que deben tomar las señales de control. Luego podrá obtenerse ecuaciones que muestren la dependencia de las señales de control del código de operación y de las condiciones(en este caso sólo la señal equal). ADD: R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4 nPC_sel = “+4”, WEPC =1, Unidad Instrucción. RegDst = "rd", Unidad Registros. Lectura. AluSrc = "busB", AluCtr = “add”, ExtOp=∅, Unidad Operaciones. MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 247

SUB: R[rd] ⇐ R[rs] – R[rt]; PC ⇐ PC + 4 nPC_sel = “+4”, WEPC=1 , Unidad Instrucción. RegDst = "rd", Unidad Registros. Lectura. AluSrc = "busB", AluCtr = “sub”, ExtOp=∅, Unidad Operaciones. MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg="alu", RegWr=1. Unidad Registros. Escritura. SLT: R[rd] ⇐ R[rs] < R[rt] ? 1: 0 ; PC ⇐ PC + 4 nPC_sel = “+4”, WEPC=1 , Unidad Instrucción. RegDst = "rd", Unidad Registros. Lectura. AluSrc = "busB", AluCtr = “slt”, ExtOp=∅, Unidad Operaciones. MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg="alu", RegWr=1. Unidad Registros. Escritura. ORI: R[rt] ⇐ R[rs] + zero_ext(Inm16); PC ⇐ PC + 4 nPC_sel = “+4”, WEPC =1, Unidad Instrucción. RegDst = "rt", Unidad Registros. Lectura. AluSrc = "Op32", ExtOp = “zero”, AluCtr = “or”, Unidad Operaciones. MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg="alu", RegWr=1. Unidad Registros. Escritura. LOAD: R[rt] ⇐ MEM[ R[rs] + sign_ext(Inm16)]; PC ⇐ PC + 4 nPC_sel = “+4”, WEPC=1 , Unidad Instrucción. RegDst = "rt", Unidad Registros. Lectura. AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”, Unidad Operaciones. MemRd=1, MemWr=0, Unidad Memoria Datos. Memtoreg="mem", RegWr=1. Unidad Registros. Escritura. STORE: MEM[ R[rs] + sign_ext(Inm16)] ⇐ R[rt]; PC ⇐ PC + 4 nPC_sel = “+4”, WEPC =1, Unidad Instrucción. RegDst = ∅, Unidad Registros. Lectura. AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”, Unidad Operaciones. MemWr=1, MemRd=0, Unidad Memoria Datos. Memtoreg=∅, RegWr=0. Unidad Registros. Escritura BEQ: if ( R[rs] == R[rt] ) PC ⇐ (PC +4) + sign_ext(Inm16)] *4 M; else PC ⇐ PC + 4 if (Equal) nPC_sel=”Br”; else nPC_sel=”+4”; WEPC =1. Unidad Instrucción. RegDst = ∅, Unidad Registros. Lectura. AluSrc = ∅, ExtOp = ∅ , AluCtr = ∅ , Unidad Operaciones.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 248

MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg=∅, RegWr=0. Unidad Registros. Escritura

Se ha empleado la expresión alternativa en C. Si Equal es uno, a nPC_sel se le asigna “Br”; en caso contrario, se asigna "+4". Nótese que la señal Equal se forma después de haber leído los registros. J: PC ⇐ (PC +4)&0xF0000000+ add_26 *4 nPC_sel = “Jmp”, WEPC=1 . Unidad Instrucción. RegDst = ∅, Unidad Registros. Lectura. AluSrc = ∅, ExtOp = ∅ , AluCtr = ∅ , Unidad Operaciones. MemWr=0, MemRd=∅. Unidad Memoria Datos. Memtoreg=∅, RegWr=0. Unidad Registros. Escritura Las señales de control: WEPC, MemWr, RegWr pueden tomar valores 1 ó 0. No pueden tomar valores superfluos, pues cambian el estado del procesador. En algunas de las instrucciones no importa el valor lógico que tomen algunas de las señales de control, ya que no afectan el desarrollo de las transferencias. Se las muestra tomando valores superfluos. El resto de las señales de control, que están formadas por más de una línea, en caso de no ser empleadas en la interpretación electrónica de las instrucciones deben tomar un valor que no altere el flujo de los datos o las funciones del camino de datos. Esta descripción muestra que el control puede describirse por un microprograma, mediante asignaciones(microoperaciones), funciones(las de la ALU y el extensor), saltos y bifurcaciones(microcontrol).

12.9 Diagrama de tiempos para todas las instrucciones del procesador. Se muestran todas las señales que se producen cuando se ejecutan las instrucciones del repertorio. Obviamente en una instrucción determinada no están presentes todas las formas de ondas. Se las ubica con sus requerimientos aproximados de tiempo, y en forma relativa con respecto a las otras. En el instante marcado con 1, se tiene el tiempo requerido para la ejecución de la instrucción de salto jump. En el instante marcado con 2 se completa la ejecución de la bifurcación, se asume que el circuito combinacional que detecta la igualdad de operandos de 32 bits, termina después que la generación de la dirección de salto en la bifurcación si los operandos son iguales.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 249

En 3 termina la ejecución de las aritméticas y lógica inmediata. En 4 termina la escritura en memoria de la instrucción Store Word. En 5 termina la instrucción Lw, que es la que más demora en ejecutarse, y que es la que determina la frecuencia de operación del reloj. Nótese que se ha previsto los requerimientos de set-up y posibles variaciones del reloj (skew). Si se miden los tiempos que requieren las instrucciones para completar sus transferencias, puede confeccionarse, observando el diagrama temporal, la siguiente tabla:

Instrucción Tiempo de ejecución[ns]

Add 8 Sub 8 Slt 8 Ori 8 Load 12 Store 10 Beq 7 Jmp 4

Sin embargo todas las instrucciones se ejecutan en el mismo tiempo(un ciclo de reloj) que la más lenta en ejecutarse(es decir en 12 unidades, en la escala con la que se confeccionó el gráfico). Si los tiempos de las memorias, registros, alu, se obtienen de las especificaciones temporales de los circuitos que efectivamente se empleen en el diseño, el diagrama temporal reflejaría mejor la realidad. Existe una alternativa, de tipo cualitativa, para evaluar los tiempos y consiste en estimar los tiempos mayores. Por ejemplo si las memorias responden en 2 ns, los sumadores y la ALU operan en 2 ns; y la unidad de registros, tanto en lectura como en escritura, responden en 1 ns. Y si se desprecian los retardos: de los multiplexores, de los circuitos de la unidad de control, detector de igualdad, extensores de signo, y retardo de propagación en cables, puede confeccionarse la siguiente tabla:

Instrucción

Memoria Intrucció

n

LecturaRegistr

os

Operación

ALU

Memoria de

Datos

Escritura

Registros

Total ns

Add 2 1 2 1 6 Sub 2 1 2 1 6 Slt 2 1 2 1 6 Ori 2 1 2 1 6 Load 2 1 2 2 1 8 Store 2 1 2 2 7 Beq 2 1 3 Jmp 2 2

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 250

Rendimiento del procesador monociclo. Si definimos, en general: C = Comportamiento Procesador = 1/ TE (a mayor tiempo, peor comportamiento) TE = Tiempo de ejecución de un programa de prueba. NI = número de instrucciones del programa de prueba. CPI = ciclos de reloj por instrucción. ( vale 1 para diseño monociclo) PC = Período del reloj. Se tiene que: TE = NI * CPI * PC Con la tabla simplificada, para el procesador monociclo con un período fijo de reloj, se tiene: TE(reloj fijo) = NI*1*8 Ya que la instrucción más lenta demora 8 ns. Se desea evaluar el comportamiento de un procesador monociclo, con un período de reloj variable. Es decir, la unidad de control determina la duración del reloj de acuerdo a la instrucción que esté ejecutando. 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(reloj variable) = NI (0,25*8 +0,11*7+0,30*6+0,09*6+0,04*6+0,15*3+0,06*2)=NI*5,92 Puede considerarse que el valor promedio del período del reloj es 5,92 ns. La comparación: C(reloj variable)/ C(reloj fijo) = TE(reloj fijo) /TE(reloj variable) = 8,0/ 5,92 = 1,35. indica que el procesador monociclo con reloj variable es 1,35 veces más rápido. La alternativa de reloj variable es de implementación compleja, suele escogerse un reloj más rápido pero aceptando que las instrucciones se completen en diferentes ciclos de reloj(es decir CPI variable). Esto dará origen a la metodología de diseño denominada multiciclo, que se verá más adelante. El comportamiento monociclo empeora si en la mezcla de instrucciones participan algunas que tengan tiempos de ejecución mucho mayores que el promedio. Por ejemplo instrucciones de punto flotante, o bien de transferencias complejas (movimiento de string); o modos de direccionamiento complejos.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 251

Valores anteriores Señales de control

Nuevos valores RegWr, RW, WEpc, AluCtr,....

Valor anterior PC+4

Nuevo valor PC+4

Valor anterior PC

Nuevo valor PC

Clk

Valor anterior IR

Nuevo valor IR Rs, Rt, Rd, Op, Inm16, add26

Retardo Registro

Tiempo Acceso Memoria Instrucciones

Tiempo Propagación Sumador Unidad de Instrucción

Retardo de Propagación en Unidad de Control

Valores anteriores busA, busB

Nuevos valores busA, busB

Tiempo Acceso Arreglo Registros

Valores anteriores AluOut, busW

Nuevos valores de AluOut y busW en ADD, SUB, ORI

Propagación ALU

Valor anterior Dout

Nuevos valores de Dout en Lw y M[Aluout] en Sw

Tiempo Acceso Memoria de Datos

Valor anterior busW

Nuevo valor bus W en Lw

Propagación Mux

Setup Registro y Skew del reloj.

1

2

3

Valor anterior Dirección de salto.

Nuevo valor Dirección de salto.

Valor anterior Dirección de bifurcación

Nuevo valor Dirección de bifurcación

Propagación Sumador y Mux Unidad de Instrucción

Propagación Mux

5

4

Propagación Detector igualdad

2’

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 252

12.10. Diseño de la Unidad de Control. En el modelo monociclo la unidad de control es una red combinacional que tiene como entradas el código de operación y la condición Equal; y como salidas las señales de Control, según se muestra en el esquema siguiente. La estructura multiciclo se caracteriza por representar a la Unidad de Control mediante una máquina secuencial de estados finitos. Se asume que los 6 bits más significativos tienen el código de operación. En caso de operaciones aritméticas debe agregarse el campo funct para especificar completamente la instrucción(ya que en este caso de ADD y SUB el código de operación está formado por 6 ceros). El planteo de las ecuaciones puede efectuarse de manera informal a través de un lenguaje de programación(microprograma), o bien mediante una tabla de verdad de las funciones asociadas a las señales de control(en el caso de un procesador monociclo).

12.10.1. Descripción del control. La siguiente es una descripción, empleando el lenguaje C, de las señales de control. Las ecuaciones muestran la dependencia de las señales de control del código de operación y de las condiciones(en este caso sólo la señal equal). ° nPC_sel = if ((OP == BEQ) && EQUAL ) “branch”;

elseif (OP == J) "jmp"; else "+4"; ° RegDst = ((OP == Load) || (OP == ORI)) ? "rt" : "rd"; ° AluSrc = (OP == “000000”) ? “reg” : “extender”; ° AluCtr = if ((OP == Load) || (OP==Store) || (OP==Add) “add”;

elseif (OP == ORI) “or”; elseif (OP == Sub) “sub”; elseif (OP == SLT) “slt”;

Unidad de Control Cop + Funct Equal

Reloj

RegWr AluCtrAluSrc RegDst ExtOp MemRd MemWr MemtoReg nPC_sel WEPC

U. Instrucción U. Registros U. Operaciones U. Memoria U.Registros

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 253

° ExtOp = (OP == ORI) ? “zero” : “sign”; ° MemWr = (OP == Store) ? 1 : 0; ° MemtoReg = (OP == Load) ? 1 : 0; ° RegWr = ((OP == Store) || (OP == BEQ)) ? 0 : 1; A continuación se describirán tablas de verdad para las señales de control. Debe notarse la incorporación de condiciones superfluas para facilitar la minimización del diseño. Sin embargo las señales que sincronizan el estado de registros o la memoria de datos(WEPC, MemWr, RegWr) tienen valores bien definidos, para evitar cambios de estado. También debe notarse el tratamiento de la entrada Equal, en este caso se requiere especificar los valores de las señales de control para ambos valores de la entrada.

12.10.2 Tabla de verdad de la Unidad de Control Monociclo. Del diseño de la ALU, puede obtenerse AluCtr[2..0], formada por la concatenación de Bnegate y la señal Operación que controla el mux.

Op Bnegate

Operación Decimal Binario

and φ 0 00 or φ 1 01

add 0 2 10 slt 1 3 11 sub 1 2 10

De la especificación del repertorio, se obtienen los códigos de operación y el campo funct, que permiten determinar la instrucción:

OP Funct Nemo. 000000 100000 R add 000000 100010 R sub 000000 101010 R slt 001101 φφφφφφ I ori 100011 φφφφφφ I lw 101011 φφφφφφ I sw 000100 φφφφφφ I beq 000010 φφφφφφ J j 000000 100100 R and 000000 101010 R slt

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 254

Op+funct Eq WEPC nPC_sel Ext

Op AluSrcAluCtr

RegDst

MemWr

MemRd

Mem toReg

Reg Wr

Add φ 1 00 φ 0 010 0 0 φ 0 1 Sub φ 1 00 φ 0 110 0 0 φ 0 1 Slt φ 1 00 φ 0 111 0 0 φ 0 1 Ori φ 1 00 0 1 001 1 0 φ 0 1 Load φ 1 00 1 1 010 1 0 1 1 1 Store φ 1 00 1 1 010 φ 1 0 φ 0 Beq 1 1 01 φ φ φφφ φ 0 φ φ 0 Beq 0 1 00 φ φ φφφ φ 0 φ φ 0 Jmp φ 1 10 φ φ φφφ φ 0 φ φ 0

Entradas 13

Salidas 13

En la tabla de verdad se marcan como condiciones superfluas algunas casillas. Lo cual establece que para determinada condición de las entradas no es necesaria la acción de la señal de control. En caso de efectuar la programación mediante dispositivos lógicos programables o mediante EPROM, debe definirse el valor que tendrán las variables( puede escogerse valor cero). La siguiente tabla resume la especificación de la unidad de Control.

OP+Funct+Eq Control[12..0] Obs.

000000100000φ 100φ001000φ01 Add 000000100010φ 100φ011000φ01 Sub 000000101010φ 100φ111000φ01 Slt 001101φφφφφφφ 1000100110φ01 Ori 100011φφφφφφφ 1001101010111 Load 101011φφφφφφφ 10011010φ10φ0 Store 000100φφφφφφ1 101φφφφφφ0φφ0 Beq 000100φφφφφφ0 100φφφφφφ0φφ0 Beq 000010φφφφφφφ 110φφφφφφ0φφ0 Jmp

La cual permite efectuar el diseño en EEPROM, o en un dispositivo lógico programable, con la ayuda de herramientas adecuadas. Puede simplificarse el diseño, generando un control local de la alu, el cual puede verse en el texto guía. Todas las instrucciones se ejecutan en un ciclo de reloj. Por esta razón se denomina monociclo a la metodología de sincronización que se empleó en este caso.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 255

También se dice que el número de ciclos por instrucción (CPI) es uno.

12.11. Agregar instrucciones. Pueden agregarse algunas instrucciones del repertorio con el camino de datos y la unidad aritmética disponible. Para ello basta generar las señales de control que realizan las acciones asociadas a las instrucciones. Op+func Eq WEPC nPC_sel Ext

Op Alu

Src

AluCtr

RegDst

MemWr

MemRd

Mem toReg

Reg Wr

Add φ 1 00 φ 0 010 0 0 φ 0 1

Sub φ 1 00 φ 0 110 0 0 φ 0 1

And φ 1 00 φ 0 000 0 0 φ 0 1

Or φ 1 00 φ 0 001 0 0 φ 0 1

Slt φ 1 00 φ 0 111 0 0 φ 0 1

Ori φ 1 00 0 1 001 1 0 φ 0 1 Addi φ 1 00 1 1 010 1 0 φ 0 1 Andi φ 1 00 0 1 000 1 0 φ 0 1 Slti φ 1 00 1 1 111 1 0 φ 0 1 Load φ 1 00 1 1 010 1 0 1 1 1 Store φ 1 00 1 1 010 φ 1 0 φ 0 Beq 1 1 01 φ φ φφφ φ 0 φ φ 0 Beq 0 1 00 φ φ φφφ φ 0 φ φ 0

Bne 0 1 01 φ φ φφφ φ 0 φ φ 0

Bne 1 1 00 φ φ φφφ φ 0 φ φ 0 Jmp φ 1 10 φ φ φφφ φ 0 φ φ 0

Entradas 13

Salidas 13

En la tabla anterior, se ilustran en negrita algunas instrucciones que no requieren modificar los recursos dispuestos hasta el momento. A continuación se muestra una manera de ir agregando instrucciones al repertorio, indicando las diferentes unidades que deben modificarse.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 256

Agregar las instrucciones xor, xori requiere modificar la unidad lógica, para que pueda realizar la operación or exclusivo. También debe modificarse la unidad lógica si se desea efectuar la operación nor. El conjunto de bifurcaciones con respecto a cero, requiere agregar en la unidad de operaciones una red combinacional para efectuar comparaciones de Rs con cero, y que genere señales hacia la unidad de control. Los corrimientos requieren agregar una unidad combinacional en la unidad de operaciones, que permita realizarlos (no se efectúan corrimientos mediante un registro de desplazamiento, ya que la operación de éste requiere varios ciclos de reloj). El salto relativo a registro (jr), requiere modificar la unidad de instrucción; para permitir escribir en PC el contenido del registro rs. La instrucción jal, requiere modificar el camino de datos, para llevar el contenido de PC+4 hacia el registro ra; lo cual a su vez requiere un mux adicional para introducirse en el busW. Además el mux controlado por RegDst, debe tener una entrada adicional para introducir Rs en la entrada Rw. El mnemónico de esta instrucción debió ser laj( link and jump), ya que primero debe realizarse el enlace y luego saltar. La instrucción lui, requiere modificar la unidad de extensión, agregando un mux de 32 bits, que permita colocar en la parte más significativa el campo inmediato de 16 bits, y rellenar con ceros los 16 inferiores. Se ilustra a continuación un posible diseño. La señal de control ExtOpt es ahora de dos bits. ExtOp[0]

0

1

tierra

bit 15 de inm16

<31..16> de Op32

<15..0> Inm16 <31..0> de Op32

ExtOp[1]

0

1 <31..16> de Op32

<15..0> de Op32

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA

ELO311 Estructuras de Computadores

Prof. Leopoldo Silva Bijit. 01-09-2004 257

Si se suprime la unidad que genera la señal igual, puede desarrollarse la comparación de la igualdad de dos registros en la alu. Para esto se requiere que ésta genere la señal resultado igual a cero(es decir todos los bits del resultado deben ser ceros). Un esquema de la unidad de operaciones, es el siguiente: Ahora la secuencia de las señales de control, para esta arquitectura, puede escribirse según: BEQ: if ( R[rs] == R[rt] ) PC ⇐ (PC +4)+ sign_ext(Inm16)] *4 else PC ⇐ PC + 4 RegDst = 0, Unidad Registros. Lectura. AluSrc = 0, ExtOp = ∅ , AluCtr = "sub", Unidad Operaciones. nPC_sel = Cero ? “Br” : "+4", WEPC =1, Unidad Instrucción. MemWr=0, MemRd=∅, Unidad Memoria Datos. Memtoreg=∅, RegWr=0. Unidad Registros. Escritura La señal cero se estabiliza después de la operación resta que se realiza en la alu, y de haberse propagado por el detector de resultado igual a cero. Esto implica un cambio en la duración de esta instrucción.

Inm16

AluOu

Op32 Extensor

AluCtr

AluSrc

0

1

=cer

Cero

busB

busA

busB

ExtOp