elo311 estructuras de computadores digitales procesador...
TRANSCRIPT
ELO311Estructuras de Computadores
Digitales
Procesador Monociclo
Tomás Arredondo Vidal
Este material está basado en:
�material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization & Design", (segunda y tercera edición), Morgan Kaufmann, CA. 2005
�material del curso anterior ELO311 del Prof. Leopoldo Silva
�www.wikipedia.org
Arquitectura de Nuestro Proc. Monociclo
� Modelo Carga-Almacenamiento.
� ISA (Instruction Service Architecture)
Processor
Control
Datapath
Memory
Devices
Input
Outputcontents Reg #4 ADD contents Reg #2results put in Reg #2
El camino de datos (datapath) ejecuta las instrucciones bajo dirección de control
000000 00100 00010 0001000000100000
La memoria almacena instrucciones y datos
Read
DecodeExec
Especificación del ISA
� Se implementará el procesador considerando las instrucciones:� Suma, resta y set less than (R)
� add rd, rs, rt
� sub rd, rs, rt
� slt rd, rs, rt
� Or inmediato (I)� ori rt, rs, inm16
� Carga y Almacenamiento (I). � lw rt, inm16(rs)
� sw rt, inm16(rs)
� Bifurcación (I).� beq rs, rt, rótulo
� Salto incondicional. (J)� j rótulo
Especificación del ISA (cont)
� Manual de Programación MIPS reducido.
Especificación del ISA (cont)
� Detallar movimientos de datos y trasferencias Lógicas� add R[rd] = R[rs] + R[rt]; PC = PC + 4
� sub R[rd] = R[rs] – R[rt]; PC = PC + 4
� slt R[rd] = R[rs] < R[rt] ? 1: 0 ; PC = PC + 4
� ori R[rt] = R[rs] or zero_ext(Inm16); PC = PC + 4
� lw R[rt] = MEM[ R[rs] + sign_ext(Inm16)]; PC = PC + 4
� sw MEM[ R[rs] + sign_ext(Inm16) ] = R[rt]; PC = PC + 4
� beq if ( R[rs] = = R[rt] )
PC = (PC +4)+[sign_ext(Inm16)]*4;
else
PC = PC + 4
� j PC = (PC +4)&0xF0000000 + add_26*4
Componentes Físicos del Procesador
� Recursos Combinacionales� Unidad Aritmético Lógica
AluCtr
OpA
Resultado
OpB
sltOpA < OpB ? 1: 0 111
subOpA - OpB101
addOpA + OpB100
orOpA | OpB010
andOpA & OpB000
Operación Binvert
Función
ALU
Resultado AluCtr[2..0]
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Sumador que permita calcular PC+4
Suma
PC
PC+4
4
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Unidad Extensora
Extensor
ExtOp
Inm16 Op32 Operando de 32 bits sign_ext(Inm16)1
zero_ext(Inm16)0
Op. de 32ExtOp
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Diseño Extensor lógico y aritmético
E x t O p
0
1
t i e r r a
b i t 1 5 d e I n m 1 6
< 3 1 . . 1 6 > d e O p 3 2
< 1 5 . . 0 > I n m 1 6 < 3 1 . . 0 > d e O p 3 2
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Multiplexores
S210
S101
S000
OutCtrMux CtrMux
0
1
2
S0
S1
S2
Out
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Multiplexores. Implementación.
C0
C1
Ai
Bi
Ci
Di
Out_i C1 C0 Out_i 0 0 Ai 0 1 Bi 1 0 Ci 1 1 Di
Componentes Físicos del Procesador (cont)
� Recursos Combinacionales� Detector Igualdad
D e t e c t o r d e I g u a l d a d
O p A E q u a l
O p B
A 0 B 0
A 1 B 1
A 2 B 2
A = B
Componentes Físicos del Procesador (cont)
� Recursos Almacenamiento.� Memorias
� Una memoria para almacenar las instrucciones (ROM).
� Una memoria para leer y escribir datos (RAM).
� Diseño inicial se elige tener recursos separados aunque podría ocuparse una sola memoria para datos e instrucciones.
Componentes Físicos del Procesador (cont)
� Recursos Almacenamiento.� Memorias
WrEn AddrD
Memoria Datos
Dout
Din
Rd Dirección
MemRdMemWr
WrEn AddrI
Memoria Instrucciones
Dout
Inactivo
Rd Dirección
MemRdInactivo
Componentes Físicos del Procesador (cont)
�Recursos Almacenamiento.� Registros. Arreglo Registros
busA
Rw
32
busB Rw
Ra Rb
32 Registros 32-bit
Rs Rt
32
32
busW
WE
RegWr
5 5
5
R[Rw] = busW
busA = R[ Ra ]
busB = R[ Rb ]
Componentes Físicos del Procesador (cont)
� Diseño del arreglo de Registros.
5
31
31
32
Componentes Físicos del Procesador (cont)
�Recursos Almacenamiento.� Registros. Contador de Programa
WE
PC ROutRIn
Componentes Físicos del Procesador (cont)
� Camino Datos. Determinación del próximo valor del PC.� PC = PC + 4
PC
WEPCSuma
PC
PC+4
4
Componentes Físicos del Procesador (cont)
� Camino Datos. Determinación del próximo valor del PC.� Bifurcaciones y salto.
SigExt << 2
4 PC
(PC+4)[31..28]
nPC_sel[1..0]
0
1
2
0..1
Inm16
Addr26
PC = PC +400
PC = (PC +4)&0xF0000000+(addr_26*4)10
PC = PC +4 + [Sign_ext(Inm16)]*4 01
nPCsel
Componentes Físicos del Procesador (cont)
� Camino de datos entre PC y Memoria de Datos.
PC
WE PC
AddrI
Memoria
Instrucciones
busIRRd
"1"
<15..0> Inm16
<15..11> Rd
<20..16> Rt
<25..21> Rs
<25..0> add_26
<31..26> COp
<5..0> Funct
Componentes Físicos del Procesador (cont)
� Unidad que determina la próxima instrucción a ejecutar, con la memoria de instrucciones.
<25..21>
<20..16>
<15..11>
<15..0>
<25..0>
<31..26>
PC
SigExt <<2
4
(PC+4)[31..28]
nPC_se l
0
1
2
0..1
AddrI
MemoriaInstrucciones
busIR
Rd
"1"
Inm16
add_26
WEPC
<5..0 >
FunctCOp
rs
rt
rd
Inm16Rs
add_26
Componentes Físicos del Procesador (cont)
� Abstracción del 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.
nPC_sel
Unidad de Instrucción
<15..0> Inm16
<15..11> rd
<20..16> rt
<25..21> rs
<31..26> COp
busIR
Componentes Físicos del Procesador (cont)
� Camino de Datos para operaciones de tipo R.
� 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 (e.g. add rd, rs, rt)
busA
RW = rd
32
busBRW
RaRb
32 Registros32-bits
rsrt
32
32
busW
WE
RegWr
55
5
AluCtr
AluOut
W
Componentes Físicos del Procesador (cont)
� Modificaciones al camino de datos para poder procesar instrucciones inmediatas.
32
busA
RW
32
busBRw
RaRb
32 Registros32-bit
rsrt
32
busW
WE
RegWr
55
5
AluCtr
AluOut
AluSrc
0
1Op32
RegDst
0
1
rd
rt
ExtOp
Ext
enso
r
Inm16
Componentes Físicos del Procesador (cont)
� Camino de datos para acceder la memoria de datos.
AluOut32
busA
RW 32 busBRW
RaRb 32 Registros
32-bits
rsrt
32busW
WE
RegWr
55
5
AluCtrAluSrc
0
1Op3 2
RegDst
0
1
rd
rt
ExtOp
Extensor
Inm16
WrEnAddr
MemoriaDatos
Dout
Din
Rd
MemRdMemWr
0
1
MemtoReg
Componentes Físicos del Procesador (cont)
� Detector de igualdad de busA y busB
busA
busB
Op32
ExtOp
32
RW 32RW
RaRb 32 Registros
32-bits
rsrt
32
busW
WE
RegWr
555
RegDst
0
1
rd
rt
ExtensorInm16
AluOut
AluCtrAluSrc
0
1
WrEnAddrD
MemoriaDatos
Dout
Din
Rd
MemRdMemWr
0
1
MemtoReg
Igual
Equal
Unidad de registros Unidad de operaciones Unidad de memoria
Componentes Físicos del Procesador (cont)
� Unidad Instrucción
<25..21>
<20..16>
<15..11>
<15..0>
<25..0>
<31..26>
PC
SigExt <<2
4
(PC+4)[31..28]
nPC_se l
0
1
2
0..1
AddrI
MemoriaInstrucciones
busIR
Rd
"1"
Inm16
add_26
WE PC
<5..0 >
FunctCOp
rs
rt
rd
Inm16Rs
add_26
Componentes Físicos del Procesador (cont)
� Unidad Registros
rt
rdRW
32
Rw
Ra
Rb
32 Registros32-bit
rs
32
busW
WE
RegWr
5
5
5
RegDst
1
0
busB
32
busA
Componentes Físicos del Procesador (cont)
� Unidad Operaciones
Inm16
AluOut
Op32Extensor
AluCtrAluSrc
0
1
Igual
Equal
busB
busA
busB
ExtOp
Componentes Físicos del Procesador (cont)
� Unidad Memoria
Memoria
Datos
Dout
MemRdMemWr
0
1
MemtoR
eg
AddrD
Din
busW
Procesador Monociclo
�� Esquema GeneralEsquema General
MemoriaMemoriaDatosDatos
DoutDout
MemRdMemRdMemWrMemWr
00
11
MemtoRegMemtoReg
AddrDAddrD
DinDin
busWbusW
3232
RWRW
RRaa
RbRb
32 32 RegistrosRegistros
3232--bitbit
3232
busWbusW
WEWE
RegWrRegWr
55
55
55
RegDstRegDst
11
00
3232
Inm16Inm16
AluAluOutOut
AluSrcAluSrc
Op32Op32
Extensor
Extensor
AluCtrAluCtr
00
11
IgualIgual
EqualEqual
busBbusB
busAbusA
busBbusB
ExtOpExtOp
<25..21> <25..21>
<20..16> <20..16>
<15..11> <15..11>
<15..0> <15..0>
<25..0> <25..0>
<31..26> <31..26>
PPCC
SigSigExtExt*4*4
44
(PC+4)[31..28](PC+4)[31..28]
nPC_selnPC_sel
00
11
22
0..10..1
AddrIAddrIMemoriaMemoriaInstrucInstruc--cionesciones
busIRbusIR
RdRd
"1""1"
Inm16Inm16
addadd_26_26
WEWEPCPC
<5..0 > <5..0 >
FunctFunctCOpCOp
rsrs
rtrt
rdrd
Inm16Inm16
addadd_26_26
44
Procesador Monociclo
� Esquema General por unidad
Unidad de Control
AluOut
32 busA
32 busB
Unidad Registros
rs
rt
32busW
RegWr AluCtr
AluSrcRegDst
rd
ExtOp
Inm16AddrD
MemoriaDatos Dout
Din
MemRd
MemWr
0
1
MemtoReg
Unidadde
Operaciones
nPC_sel
Unidadde
Instrucción
COp+Funct
Equal
Reloj
5
5
5
WEPC
2
Transferencias Físicas de Datos
� Cada transferencia lógica se implementa como un conjunto de transferencias físicas.
� Transferencia física es la descripción de un movimiento de datos entre los recursos del camino de datos.
� Muestra lo que sucede en el camino de datos.
� Estos movimientos de datos pueden ser debidos a conexiones permanentes entre componentes o pueden programarse mediante las señales de control
� Las señales de control sincronizan los cambios de estados de los registros o de la memoria
Transferencias Físicas de Datos (cont)
� Para cada instrucción:� 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.
Transferencias Físicas de Datos (cont)
� 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.
Transferencias Físicas de Datos (cont)
� 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.
� 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.
Transferencias Físicas de Datos (cont)
� 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.
Transferencias Físicas de Datos (cont)� 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.
� JUMP: 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
Señales de Control para Transferencias Físicas
�En lugar de valores binarios pueden usarse valores conceptuales de las señales de control
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 que toman las señales de control � Valores que toman las señales de control para desarrollar las
diferentes transferencias lógicas necesarias para cada instrucción:
� ADD: R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4nPC_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.
� SUB: R[rd] ⇐ R[rs] – R[rt]; PC ⇐ PC + 4nPC_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.
Valores que toman las señales de control (cont)
� SLT: R[rd] ⇐ R[rs] < R[rt] ? 1: 0 ; PC ⇐ PC + 4nPC_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 + 4nPC_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.
Valores que toman las señales de control (cont)
� LOAD: R[rt] ⇐ MEM[ R[rs] + sign_ext(Inm16)]; PC ⇐ PC + 4nPC_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 + 4nPC_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
Valores que toman las señales de control (cont)
� BEQ: if ( R[rs] == R[rt] ) PC ⇐ (PC +4) + sign_ext(Inm16)] *4; 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.
MemWr=0, MemRd=∅, Unidad Memoria Datos.
Memtoreg=∅, RegWr=0. Unidad Registros. Escritura
� 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
Diagrama de Tiempos para las Instrucciones
� A continuación se muestran todas las señales que se producen cuando se ejecutan las instrucciones del repertorio.
� Se pueden ver los tiempos requeridos para la ejecución de las instrucciones de salto jmp, de bifurcación (branch), aritméticas y lógicas inmediatas (add, sub, slt, ori), store word (store) y load word (load).
� La mas lenta es load y por ende determina la frecuencia del reloj (al ser monociclo la frecuencia del reloj es determinada por la instrucción mas larga).
� Se las ubica con sus requerimientos aproximados de tiempo, y en forma relativa con respecto a las otras.
Diagrama de Tiempos para las Instrucciones (cont)
Valores anterioresSeñales de control
Nuevos valores RegWr, RW, WEpc, AluCtr,....
Valor anteriorPC+4
Nuevo valor PC+4
Valor anteriorPC
Nuevo valorPC
CLK
Valor anteriorIR
Nuevo valor IRRs, 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 anterioresbusA, busB
Nuevos valores busA, busB
Tiempo Acceso Arreglo Registros
Valores anterioresAluOut, busW
Nuevos valores de AluOut ybusW en ADD, SUB, ORI
Propagación ALU
Valor anteriorDout
Nuevos valores de Dout enLw y M[Aluout] en Sw
Tiempo Acceso Memoria de Datos
Valor anteriorbusW
Nuevo valorbus W en Lw
Propagación Mux
Setup Registro y Skew del reloj.
Valor anteriorDirección de salto.
Nuevo valor Dirección de salto.
Valor anteriorDirección de bifurcación
Nuevo valor Dirección de bifurcación
Propagación Sumador y Mux Unidad de Instrucción
Propagación Mux
Propagación Detector igualdadjump
branch
aritméticas y lógicas
store
load
Tiempos para las Instrucciones (cont)
� Si se miden los tiempos que requieren las instrucciones para completar sus transferencias, puede confeccionarse, observando el diagrama temporal, la siguiente tabla:
� 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).
Tiempos para las Instrucciones (cont)
� Otra alternativa es generar una tabla basada en las specsde los circuitos de los distintos componentes.
� Ejemplo: � 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
� Ignorando retardos de otros elementos se hacer la siguiente tabla
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.
Rendimiento del Procesador Monociclo (cont)
� Si deseamos evaluar el comportamiento promedio:
� 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.
Rendimiento del Procesador Monociclo (cont)
� La comparación:
C(reloj variable)/ C(reloj fijo) = TE(reloj fijo) / TE(relojvariable) = 8,0/5,92 = 1,35.
� Indica que el procesador monociclo con reloj variable es 1,35 veces más rápido que el de reloj fijo.
� 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 (e.g. punto flotante, transferencias complejas)
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-funct y la condición Equal; y como salidas las señales de Control.
Unidad de Control
Cop + FunctEqual
Reloj
RegWr AluCtrAluSrcRegDst ExtOp MemRdMemWr MemtoRegnPC_sel WEPC
U. Instrucción U. Registros U. Operaciones U. Memoria U.RegistrosCamino de Datos
Diseño de la Unidad de Control (cont)
� Tabla de Verdad de la Unidad de Control Monociclo
1021sub
1131slt
1020add
011φor
000φand
BinarioDecimal
OperaciónBnegateOp
Diseño de la Unidad de Control (cont)
� Tabla de Verdad de la Unidad de Control Monociclo
sltR101010000000
andR100100000000
jJφφφφφφ000010
beqIφφφφφφ000100
swIφφφφφφ101011
lwIφφφφφφ100011
oriIφφφφφφ001101
sltR101010000000
subR100010000000
addR100000000000
Nemo.FunctOP
Diseño de la Unidad de Control (cont)
� Tabla de Verdad de la Unidad de Control Monociclo
Salidas13
Entradas13
0φφ0φφφφφφ101φJmp
0φφ0φφφφφφ0010Beq
0φφ0φφφφφφ0111Beq
0φ01φ01011001φStore
1110101011001φLoad
10φ0100110001φOri
10φ001110φ001φSlt
10φ001100φ001φSub
10φ000100φ001φAdd
RegWr
MemtoReg
MemRd
MemWr
RegDst
AluCtr
AluSrc
ExtOp
nPC_sel
WEPCEqOp+funct
Salidas13
Entradas13
0φφ0φφφφφφ101φJmp
0φφ0φφφφφφ0010Beq
0φφ0φφφφφφ0111Beq
0φ01φ01011001φStore
1110101011001φLoad
10φ0100110001φOri
10φ001110φ001φSlt
10φ001100φ001φSub
10φ000100φ001φAdd
RegWr
MemtoReg
MemRd
MemWr
RegDst
AluCtr
AluSrc
ExtOp
nPC_selWEPCEqOp+funct
MemoriaMemoriaDatosDatos
DouDoutt
MemRdMemRdMemWrMemWr
00
11
MemtoRegMemtoReg
AddrAddrDD
DinDin
busbusWW3232
RRWW
RRaaRRbb
32 32 RegistrosRegistros
3232--bitbit
3322busbus
WW
WWEE
RegWrRegWr
55
55
55
RegDstRegDst
11
00
3232
Inm16Inm16
AlAluOuOutut
AluSrAluSrcc
Op32Op32
Extensor
Extensor
AluCtrAluCtr
00
11
IgualIgual
EqualEqual
busbusBB
busbusAA
busbusBB
ExtOpExtOp
<25..21> <25..21>
<20..16<20..16> >
<15..11<15..11> >
<15..0<15..0> > <25..0<25..0> >
<31..26> <31..26>
PPCC
SigSigExtExt**44
44
(PC+4)[31..2(PC+4)[31..28]8]
nPC_selnPC_sel
00
11
22
0..10..1
AddrIAddrIMemoriaMemoriaInstrucInstruc--cionesciones
busIbusIRR
RRdd
"1""1"
Inm1Inm166
addadd_26_26
WEWEPCPC
<5..0 <5..0 > >
FunctFunctCOpCOp
rsrs
rtrt
rdrd
Inm16Inm16
addadd_26_26
44
Diseño de la Unidad de Control (cont)
� Tabla Resumen Unidad de Control Monociclo
Jmp110φφφφφφ0φφ0000010φφφφφφφ
Beq100φφφφφφ0φφ0000100φφφφφφ0
Beq101φφφφφφ0φφ0000100φφφφφφ1
Store10011010φ10φ0101011φφφφφφφ
Load1001101010111100011φφφφφφφ
Ori1000100110φ01001101φφφφφφφ
Slt100φ111000φ01000000101010φ
Sub100φ011000φ01000000100010φ
Add100φ001000φ01000000100000φ
Obs.Control[12..0]OP+Funct+Eq
Diseño de la Unidad de Control (cont)
� La implementación de la unidad de control puede ser utilizando.� En base a compuertas lógicas (función mínima)
� Dispositivos lógicos programables (por ejemplo: GAL)
� O mediante EPROM
� Se debe extender esta arquitectura monociclo si se desean agregar nuevas instrucciones, esto puede requerir que se modifiquen algunas de las unidades (e.g. instrucción, registros, operaciones, memoria), el camino de datos y la unidad de control.