Monociclo

Anuncio
ELO311
Estructuras 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.
Read
ISA (Instruction Service Architecture)
Exec
El camino de datos (datapath) ejecuta las
instrucciones bajo dirección de control
Processor
Devices
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
contents Reg #4 ADD contents Reg #2
results put in Reg #2
Output
La memoria almacena instrucciones y datos
Decode
Especificación del ISA
Se implementará el procesador considerando las
instrucciones:
Suma, resta y set less than (R)
add
rd, rs, rt
sub
slt
rd, rs, rt
rd, rs, rt
Or inmediato (I)
ori
rt, rs, inm16
Carga y Almacenamiento (I).
lw
sw
rt, inm16(rs)
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[2..0]
Resultado
AluCtr
Función
Binvert
Operación
0
00
OpA & OpB
and
0
01
OpA | OpB
or
0
10
OpA + OpB
add
1
10
OpA - OpB
sub
1
11
OpA < OpB ? 1: 0
slt
ALU
OpA
Resultado
OpB
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
ExtOp
ExtOp
Op. de 32
Extensor
0
zero_ext(Inm16)
1
sign_ext(Inm16)
Inm16
Op32
Operando de 32 bits
Componentes Físicos del Procesador (cont)
Recursos Combinacionales
Diseño Extensor lógico y aritmético
E x tO p
tie rra
0
b it 1 5 d e In m 1 6
< 1 5 ..0 >
In m 1 6
1
< 3 1 ..1 6 > d e O p 3 2
< 3 1 ..0 > d e O p 3 2
Componentes Físicos del Procesador (cont)
Recursos Combinacionales
Multiplexores
CtrMux
Out
00
S0
01
S1
S0
10
S2
S1
CtrMux
S2
0
Out
1
2
Componentes Físicos del Procesador (cont)
Recursos Combinacionales
Multiplexores. Implementación.
Di
C1
0
0
1
1
C0 Out_i
0
Ai
1
Bi
0
Ci
1
Di
Ci
Out_i
Bi
Ai
C1
C0
Componentes Físicos del Procesador (cont)
Recursos Combinacionales
Detector Igualdad
O pA
O pB
D e te c to r
de
Ig u a ld a d
E qual
B2
A2
B1
A1
B0
A0
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
MemWr
MemRd
Inactivo
MemRd
Dirección
Inactivo
WrEn Rd
AddrI
Memoria
Instrucciones
Dout
Dirección
Din
WrEn Rd
AddrD
Memoria
Datos
Dout
Componentes Físicos del Procesador (cont)
Recursos Almacenamiento.
Registros. Arreglo Registros
RegWr
R[Rw] = busW
Rs 5
Rt 5
Rw 5
busW
32
Ra
WE
Rb
Rw 32 Registros
32-bit
busA = R[ Ra ]
busA
32
busB = R[ Rb ]
busB
32
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
RIn
PC
ROut
Componentes Físicos del Procesador (cont)
Camino Datos. Determinación del próximo valor del
PC.
PC = PC + 4
WEPC
Suma
PC
PC+4
4
PC
Componentes Físicos del Procesador (cont)
Camino Datos. Determinación del próximo valor del PC.
Bifurcaciones y salto.
nPC_sel[1..0]
nPCsel
PC = PC +4
01
PC = PC +4 + [Sign_ext(Inm16)]*4
10
PC = (PC +4)&0xF0000000+(addr_26*4)
0
1
4
Inm16
SigExt
2
<< 2
(PC+4)[31..28]
Addr26
0..1
PC
00
Componentes Físicos del Procesador (cont)
Camino de datos entre PC y Memoria de Datos.
<31..26> COp
WE
PC
<5..0>
Funct
<15..0> Inm16
"1"
<15..11> Rd
PC
AddrI
Rd
busIR
<20..16> Rt
Memoria
Instrucciones
<25..21> Rs
<25..0> add_26
Componentes Físicos del Procesador (cont)
Unidad que determina la próxima instrucción a ejecutar, con la
memoria de instrucciones.
nPC_se l WE PC
COp
Funct
<31..26>
busIR
"1"
0
SigExt
1
<<2
2
Inm16
(PC+4)[31..28]
add_26
0..1
rs
PC
4
<5..0 >
<25..21>
Rd
AddrI
Memoria
Instrucciones
<20..16>
rt
<15..11>
rd
<15..0>
<25..0>
add_26
Inm16
Rs
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
<31..26> COp
<15..0> Inm16
busIR
<15..11> rd
<20..16> rt
<25..21> rs
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)
AluCtr
RegWr
rs
5
rt
5
RW = rd
5
busW
32
Ra
WE
busA
Rb
32
RW 32 Registros
busB
32-bits
W
32
AluOut
Componentes Físicos del Procesador (cont)
Modificaciones al camino de datos para poder procesar
instrucciones inmediatas.
RegDst
RegWr
5
rd
0
rs
rt 5
5
RW
rt
1
WE
Ra
Rb
Rw 32 Registros
32-bit
ExtOp
32
AluOut
busB
32
Extensor
Inm16
AluCtr
busA
32
busW
AluSrc
Op32
0
1
Componentes Físicos del Procesador (cont)
Camino de datos para acceder la memoria de datos.
RegDst
rd
rt
rs
0 rt
1
RegWr
5
5
5
RW
MemWr
MemtoReg
MemRd
AluSrc AluCtr
ExtOp
WE
Ra
Rb 32 Registros
RW 32 -bits
busA
32
AluOut
32
0
busB 0
Addr
32
WrEn Rd Dout
busW
Inm16
Op3 2
Extensor
1
Din
Memoria
Datos
1
Componentes Físicos del Procesador (cont)
Detector de igualdad de busA y busB
Equal
RegDst
rd
rt
rs
0 rt
1
RegWr
5
5
5
WE
Ra
Rb 32 Registros
32-bits
RW RW
ExtOp
32
AluOut
Igual
32
busB
busW
Unidad de registros
MemWr
MemtoReg
MemRd
busA
32
Inm16
AluSrc AluCtr
Extensor
0
AddrD
WrEn Rd Dout
1
Memoria
Din
Datos
Op32
Unidad de operaciones
0
1
Unidad de memoria
Componentes Físicos del Procesador (cont)
Unidad Instrucción
nPC_se l WE PC
COp
Funct
<31..26>
busIR
"1"
0
SigExt
1
<<2
2
Inm16
(PC+4)[31..28]
add_26
0..1
rs
PC
4
<5..0 >
<25..21>
Rd
AddrI
Memoria
Instrucciones
<20..16>
rt
<15..11>
rd
<15..0>
<25..0>
add_26
Inm16
Rs
Componentes Físicos del Procesador (cont)
Unidad Registros
RegWr
RegDst
rs
5
5
rt 1
rd
0
5
RW
Ra WE
Rb
32
busA
Rw
32 Registros 32
32-bit
busB
32
busW
Componentes Físicos del Procesador (cont)
Unidad Operaciones
Equal
ExtOp
AluSrc
AluCtr
busA
Igual
0
busB
Extensor
Op32
1
Inm16
AluOut
busB
Componentes Físicos del Procesador (cont)
Unidad Memoria
MemWr
MemRd
MemtoR
eg
0
AddrD
Memoria
Datos
Din
busW
Dout
1
Procesador Monociclo
Esquema General
WEPC
nPC_sel
COp
Funct
RegDst
RegWr
ExtOp
AluSrc
Equal
AluCtr
MemWr MemRd
MemtoReg
<31..26>
<5..0 >
"1"
0
4
1
2
Inm16
Rd
AddrI
Memoria
InstrucInstrucciones
<25..21>
rt
<15..11>
1
5
32
busA
RW
32 Registros
0
3232-bit
rd
busW
Alu
Out
32
0
Memoria
Datos
1
Extensor
add_26
add_26
Dout
Op32
Din
1
busB
Inm16
AddrD
32
busW
0..1
0
busB
<15..0>
<25..0>
add_26
add_26
R WE
a
Rb
5
<20..16>
4
(PC+4)[31..28]
5
rs
Igual
SigExt*4
Ext*4
P
C
busIR
Inm16
Procesador Monociclo
Esquema General por unidad
Unidad de Control
AluSrc
RegDst RegWr
ExtOp AluCtr
nPC_sel WEPC
COp+
Funct
2
Unidad
de
Instrucción
rs
rt
rd
MemWr
MemRd MemtoReg
Equal
32 busA
5
5
Unidad
Registros
5
busW
32
Unidad
AluOut
de
busB Operaciones
32
0
AddrD
1
Din Memoria
Datos Dout
Inm16
Reloj
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 + 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.
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.
Valores que toman las señales de control (cont)
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.
Valores que toman las señales de control (cont)
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,
Memtoreg=∅, RegWr=0.
Unidad Memoria Datos.
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)
CLK
Retardo Registro
Valor anterior
PC
Valor anterior
IR
Valor anterior
PC+4
Nuevo valor
PC
Tiempo Acceso Memoria Instrucciones
Nuevo valor IR
Rs, Rt, Rd, Op, Inm16, add26
Tiempo Propagación Sumador Unidad de Instrucción
Nuevo valor PC+4
Retardo de Propagación en Unidad de Control
Valores anteriores
Señales de control
Nuevos valores RegWr, RW, WEpc, AluCtr,....
Tiempo Acceso Arreglo Registros
aritméticas
y lógicas
Valores anteriores
busA, busB
Nuevos valores
busA, busB
Propagación ALU
Nuevos valores de AluOut y
busW en ADD, SUB, ORI
Valores anteriores
AluOut, busW
Tiempo Acceso Memoria de Datos
store
Valor anterior
Dout
load
Nuevos valores de Dout en
Lw y M[Aluout] en Sw
Propagación Mux
Valor anterior
busW
Propagación Mux
branch
Valor anterior
Dirección de salto.
Valor anterior
Dirección de bifurcación
jump
Setup Registro y Skew del
reloj.
Nuevo valor
Dirección de salto.
Propagación Sumador y Mux Unidad de
Instrucción
Nuevo valor
Dirección de bifurcación
Propagación Detector igualdad
Nuevo valor
bus W en Lw
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 specs
de 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(reloj
variable) = 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
nPC_sel
U. Instrucción
Cop + Funct
WEPC
RegDst RegWr
U. Registros
Equal ExtOp
AluSrc AluCtr MemWr MemRd
U. Operaciones
U. Memoria
Camino de Datos
Reloj
U.Registros
MemtoReg
Diseño de la Unidad de Control (cont)
Tabla de Verdad de la Unidad de Control Monociclo
Op
Bnegate
Operación
Decimal
Binario
and
φ
0
00
or
φ
1
01
add
0
2
10
slt
1
3
11
sub
1
2
10
Diseño de la Unidad de Control (cont)
Tabla de Verdad de la Unidad de Control Monociclo
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
Diseño de la Unidad de Control (cont)
Tabla de Verdad de la Unidad de Control Monociclo
Op+funct Eq WEPC
nPC_se
l
Ext
Op
Alu
Src
Alu
Ctr
Reg
Dst
Mem
Wr
Mem
Rd
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
COp Funct RegDst RegWr
WEPC
nPC_sel
ExtOp
<31..26>
"1"
0
4
1
4
Inm1
6
(PC+4)[31..2
8]
4
Memoria
InstrucInstrucciones
<20..16
>
rt
1
<15..11
>
0
rd
<15..0
>
<25..0
>
0..1
5
add_26
add_26
5
R
a
R
b
W
E
R
32 Registros
W
3232-bit
3
bus2
nPC_sel
Ext
Op
Add
φ
1
00
Sub
φ
1
Slt
φ
Ori
Al
uO
ut
0
Op32
bus
W
Addr
D
Memoria
Datos
1
Din
1
Dou
t
bus
B
Inm16
WEPC
MemRd MemtoReg
0
32
W
Eq
MemWr
bus
A
bus
B
Inm16
Op+funct
32
Extensor
add_26
add_26
2
R
AddrI
d
5
rs
AluCtr
Igual
SigExt*
Ext*
P
C
busI
R
<5..0
><25..21>
AluSr
Equal c
Alu
Src
Alu
Ctr
Reg
Dst
Mem
Wr
Mem
Rd
Mem
toReg
Reg
Wr
φ
0
010
0
0
φ
0
1
00
φ
0
110
0
0
φ
0
1
1
00
φ
0
111
0
0
φ
0
1
φ
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
Diseño de la Unidad de Control (cont)
Tabla Resumen Unidad de Control Monociclo
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
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.
Descargar