diseño procesador monociclo -...

Download Diseño Procesador Monociclo - Inicioprofesores.elo.utfsm.cl/.../C11_Diseno_Procesador_Multiciclo.pdf · instrucciones pueden ser realizadas con varios ciclos de reloj; dependiendo

If you can't read please download the document

Upload: vokhanh

Post on 05-Feb-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

  • 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