Anda di halaman 1dari 5

Diseo del control monociclo

Diseo del control monociclo


para la arquitectura MIPS
Diseo del control monociclo 2
Resumen de la Ruta de Datos
Camino de datos con todos los multiplexores y lneas de
control necesarias (segn figura del libro de texto).
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [50]
RegWrite
4
16 32
Instruction [15 0]
0
Registers
Write
register
Write
data
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Sign
extend
ALU
result
Zero
Data
memory
Address
Read
data
M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction [15 11]
ALU
control
Shift
left 2
PCSrc
ALU
Add
ALU
result
Diseo del control monociclo 3
Recordatorio (I)
La organizacin del procesador condiciona el Tcpu
5 pasos en el diseo del procesador
1. Analizar repertorio de instrucciones Funcionalidad
del camino de datos
2. Seleccionar componentes del camino de datos
3. Ensamblar camino de datos para proporcionar la
funcionalidad requerida.
4. Analizar la implementacin de cada instruccin para
determinar la ubicacin de los puntos de control que
permitan ejecutar las transferencias entre registros.
5. Diseo de la unidad de control (a continuacin ...)
Diseo del control monociclo 4
Recordatorio (II)
MIPS hace fcil la implementacin de estos pasos
Instrucciones del mismo tamao
Registro fuente (rs) siempre en la misma posicin del formato
de instruccin
Valores inmediatos siempre del mismo tamao (16 bits) y en
la misma posicin (bits 0-15)
Operaciones siempre sobre registros/inmediatos
Camino de datos monociclo CPI=1 T
CLK
grande
A continuacin: Paso 5 (diseo de la unidad de control)
Diseo del control monociclo 5
Diseo de la unidad de control: visin
completa de la implementacin
Camino de datos con la unidad principal de control y la
unidad local de control de la ALU
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[20 16]
Instruction[25 21]
Add
Instruction[5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
RegDst
ALUSrc
Instruction[31 26]
4
16 32
Instruction[15 0]
0
0
M
u
x
0
1
Control
Add
ALU
result
M
u
x
0
1
Registers
Write
register
Write
data
Read
data1
Read
data2
Read
register 1
Read
register 2
Sign
extend
M
u
x
1
ALU
result
Zero
PCSrc
Data
memory
Write
data
Read
data
M
u
x
1
Instruction[15 11]
ALU
control
Shift
left 2
ALU
Address
Diseo del control monociclo 6
0
3
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b 2
Less
a.
A L U R e s u lt
Z er o
O v e r f lo w
a
b
A L U o p e r a t i o n
C a r r y O u t
Entradas de control
(ALUctr)
FUNCIN
000 AND
001 OR
010 ADD
110 SUB
111 SLT
La Unidad Aritmtica y Lgica (ALU)
Operaciones bsicas (solo usaremos 5 de las 8
posibles)
Diseo del control monociclo 7
Control de la ALU
Operaciones a realizar segn la instruccin:
Load (lw) y store (sw): Suma
Salto (beq): Resta
Aritmticas (tipo R: add,sub, or,and y slt): Definida por el campo Funct
Dependencias de las seales de control
Cod. Op. ALUop Instruccin FUNCT Op. deseada
Entradas de control
de la ALU (ALUctr)
LW 00 Carga XXXXXX suma 010
SW 00 Almacena XXXXXX suma 010
Branch Equal 01 salto XXXXXX resta 110
R-Type 10 suma 100000 suma 010
R-Type 10 resta 100010 resta 110
R-Type 10 AND 100100 and 000
R-Type 10 OR 100101 or 001
R-Type 10 set on less than 101010 set on less than 111
Diseo del control monociclo 8
Control local de la ALU: Tabla de verdad
ALUop funct ALUctr
ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0
0 0 x x x x x x 0 1 0
x 1 x x x x x x 1 1 0
1 x x x 0 0 0 0 0 1 0
1 x x x 0 0 1 0 1 1 0
1 x x x 0 1 0 0 0 0 0
1 x x x 0 1 0 1 0 0 1
1 x x x 1 0 1 0 1 1 1
Main
Control
op
6
ALU
Control
(Local)
func
N
6
ALUop
ALUctr
3
A
L
U
op rs rt rd shamt funct
0 6 11 16 21 26 31
6 bits 6 bits 5 bits 5 bits 5 bits 5 bits
Instruccin Tipo R:
funct<3:0> Instruction Op.
0000
0010
0100
0101
1010
add
subtract
and
or
set-on-less-than
Diseo del control monociclo 9
Implementacin del control local de la ALU
ALUop funct Operacin (ALUctr)
ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0
0 0 x x x x x x 0 1 0
x 1 x x x x x x 1 1 0
1 x x x 0 0 0 0 0 1 0
1 x x x 0 0 1 0 1 1 0
1 x x x 0 1 0 0 0 0 0
1 x x x 0 1 0 1 0 0 1
1 x x x 1 0 1 0 1 1 1
Operation2
Operation1
Operation0
Operation
ALUOp1
F3
F2
F1
F0
F (50)
ALUOp0
ALUOp
ALU control block
Diseo del control monociclo 10
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[2016]
Instruction[2521]
Add
Instruction[50]
RegWrite
4
16 32
Instruction [150]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register 1
Read
register 2
Sign
extend
ALU
result
Zero
Data
memory
Address
Read
data
M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction[1511]
ALU
control
Shift
left 2
PCSrc
ALU
Add
ALU
result
Diseo de la unidad principal de control
Tipo R: op rs rt rd shamt funct
Bits: 31-26 25-21 20-16 15-11 10-6 5-0

Tipo I: op rs rt Inmediato16
Bits: 31-26 25-21 20-16 15-0

Tipo J: op Direccin
Bits: 31-26 26-0
Diseo del control monociclo 1
Significado de las seales de control
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[2016]
Instruction[2521]
Add
Instruction[50]
RegWrite
4
16 32
Instruction[150]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address
Read
data
M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction[1511]
ALU
control
Shift
left 2
PCSrc
ALU
Add
ALU
result
Seal Accin cuando es desactivada (0) Accin cuando se activa (1)
RegDst
El registro destino para las escrituras viene del
campo rt (bits 20-16)
El registro destino para las escrituras viene del campo
rd (bits 15-11)
RegWrite
Ninguno Escribe el dato en "WriteData" en el registro dado por
"WriteRegister".
AluSrc
El segundo operando de la ALU viene del banco de
registro (salida 2)
El segundo operando de la ALU son los 16 bits menos
significativos de la instruccin extendidos en signo
PCSrc
Selecciona PC+4 como nuevo valor del PC Selecciona la direccin de salto computada como nuevo
valor del PC
MemWrite
Ninguna Escribe en la direccin de memoria "Address" el dato
"WriteData"
MemRead
Ninguna Lee un dato de la direccin de memoria "Address" y lo
deja en la salida "ReadData"
MemToReg
El valor a realimentar al campo "WriteData" viene
de la salida de la ALU
El valor a realimentar al campo "WriteData" viene de la
memoria
Diseo del control monociclo 12
Funcionamiento del camino de datos
Instruccin: Tipo R (add, sub, and, or, slt)
add $t1,$t2,$t3
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction [2016]
Instruction [2521]
Add
Instruction [50]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
RegDst
ALUSrc
Instruction [3126]
4
16 32
Instruction [150]
0
0
M
u
x
0
1
Control
Add
ALU
result
M
u
x
0
1
Registers
Write
register
Write
data
Read
data1
Read
data2
Read
register 1
Read
register 2
Sign
extend
Shift
left 2
M
u
x
1
ALU
result
Zero
Data
memory
Write
data
Read
data
M
u
x
1
Instruction [1511]
ALU
control
ALU
Address
Diseo del control monociclo 13
Funcionamiento del camino de datos
Instruccin: lw
lw $t1, desplazamiento ($t2)
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[1511]
Instruction[2016]
Instruction[2521]
Add
Instruction [50]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
RegDst
ALUSrc
Instruction[3126]
4
16 32
Instruction[150]
0
0
M
u
x
0
1
ALU
control
Control
Shift
left 2
Add
ALU
result
M
u
x
0
1
Registers
Write
register
Write
data
Read
data1
Read
data2
Read
register 1
Read
register 2
Sign
extend
M
u
x
1
ALU
result
Zero
Data
memory
Write
data
Read
data
M
u
x
1
ALU
Address
Diseo del control monociclo 14
Funcionamiento del camino de datos
Instruccin: sw
sw $t1, desplazamiento($t2)
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[1511]
Instruction[2016]
Instruction[2521]
Add
Instruction [50]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
RegDst
ALUSrc
Instruction[3126]
4
16 32
Instruction[150]
0
0
M
u
x
0
1
ALU
control
Control
Shift
left 2
Add
ALU
result
M
u
x
0
1
Registers
Write
register
Write
data
Read
data1
Read
data2
Read
register 1
Read
register 2
Sign
extend
M
u
x
1
ALU
result
Zero
Data
memory
Write
data
Read
data
M
u
x
1
ALU
Address
Diseo del control monociclo 15
Funcionamiento del camino de datos
Instruccin: branch
beq $t1, $t2, desplazamiento
PC
Instruction
memory
Read
address
Instruction
[310]
Instruction[1511]
Instruction[2016]
Instruction[2521]
Add
Instruction [50]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
RegDst
ALUSrc
Instruction[3126]
4
16 32
Instruction[150]
Shift
left 2
0
M
u
x
0
1
ALU
control
Control
Registers
Write
register
Write
data
Read
data 1
Read
register 1
Read
register 2
Sign
extend
1
ALU
result
Zero
Data
memory
Write
data
Read
data M
u
x
Read
data 2
Add
ALU
result
M
u
x
0
1
M
u
x
1
0
ALU
Address
Diseo del control monociclo 16
Implementacin de la unidad de control
principal
Tabla de verdad e implementacin de las seales
de control de la unidad control principal
Op5-0 ->
(bits 31-26)
00 0000
0D
10 0011
35D
10 1011
43D
00 0100
4D
R-Format lw sw beq
RegDst 1 0 x x
ALUSrc 0 1 1 0
MemToReg 0 1 x x
RegWrite 1 1 0 0
MemRead 0 1 0 0
MemWrite 0 0 1 0
Branch 0 0 0 1
ALUOp1 1 0 0 0
ALUOp0 0 0 0 1
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
ALUOpO
Implementacin con PLA
Diseo del control monociclo 17
Rendimiento de la implementacin
monociclo - Ejemplo
Suponiendo que los tiempos de operacin (latencia) de las unidades
funcionales son:
Unidad de memoria: 2 ns
ALU y sumadores: 2 ns
Registros (lectura o escritura): 1 ns
Resto de los componentes (multiplexores, acceso al PC, etc. ): 0 ns
Cul de las siguientes implementaciones ser ms rpida?
1.- Una implementacin en la que cada instruccin se ejecuta en un ciclo
de reloj de duracin fija.
2.- Una implementacin donde cada instruccin se ejecuta en un ciclo de
reloj pero de duracin variable (solucin no prctica, pero ilustrativa).
Suponer un programa compuesto por: 24% carga (lw), 12% almacenamiento
(sw), 44% R-format, 18% saltos (beq/bne) y 2% bifurcacines (j).
Diseo del control monociclo 18
Solucin
Instruccin Unidades funcionales utilizadas
R-format bsqueda acceso a registro ALU acceso a registro
Load bsqueda acceso a registro ALU acceso a memoria Acceso a registro
Store bsqueda acceso a registro ALU acceso a memoria
Branch bsqueda acceso a registro ALU
jump bsqueda
Tiempo de ciclo necesario para cada instruccin
Instruccin Memoria Registro ALU Memoria Registro Total por
instr. (ns)
Porcentaje
de uso
R-format 2 1 2 0 1 6 44%
Load 2 1 2 2 1 8 24%
Store 2 1 2 2 7 12%
Branch 2 1 2 5 18%
jump 2 2 2%
Tiempo de ciclo medio (44%x6 + 24%x8 + 12% x7 + 18%x5 + 2%x2 ) = 6.3 ns
compleja ms n instrucci la ejecutar para
necesario tiempo ns, 8 de ser fijo reloj de ciclo de tiempo El (*)
T CPI N
T CPI N
T
T
iento n
iento n
ble CicloVaria
CicloFijo
ble CicloVaria
CicloFijo
lojFijo
e lojVariabl
27 . 1
3 . 6
8
* *
* *
dim Re
dim Re
Re
Re

Diseo del control monociclo 19
Inconvenientes de la implementacin
monociclo
Aunque funciona, la implementacin monociclo es ineficiente tanto en
rendimiento como en hardware
Todas las instrucciones tardan un ciclo de reloj (CPI=1)
independientemente de su complejidad (ejemplo: and vs lw). El ciclo de
reloj viene determinado por la instruccin ms compleja (lw).
Cada unidad funcional slo puede ser utilizada una vez por ciclo.
Necesidad de duplicar recursos (memoria, ALU, ..) Aumenta el costo
del hardware
Cmo mejorar el diseo?
Implementacin multiciclo
Nmero de ciclos por instruccin (CPI) variable. Las instrucciones
sencillas se ejecutan en menos ciclos de reloj.
Implementacin segmentada
Solape de la ejecucin de varias instrucciones. Existen varias
instrucciones ejecutndose simultneamente pero en distintas fases de
ejecucin.

Anda mungkin juga menyukai