Diseño del control monociclo
para la arquitectura MIPS
Diseño del control monociclo
1
Resumen de la Ruta de Datos
Camino de datos con todos los multiplexores y líneas de
control necesarias (según figura del libro de texto).
PCSrc
Add
4
Add
RegWrite
Instruction [25– 21]
PC
Read
address
Instruction
[31– 0]
Instruction
memory
Instruction [20– 16]
0
M
u
Instruction [15– 11] x
1
RegDst
Instruction [15– 0]
Read
register 1
Read
register 2
Read
data 1
Read
Write
data 2
register
Write
Registers
data
16
Sign 32
extend
ALU
result
0
M
u
x
1
Shift
left 2
MemWrite
ALUSrc
0
M
u
x
1
ALU
control
Zero
ALU ALU
result
MemtoReg
Address
Read
data
Data
Write
data memory
1
M
u
x
0
MemRead
Instruction [5– 0]
ALUOp
Diseño del control monociclo
2
Recordatorio (I)
La organización del procesador condiciona el Tcpu
5 pasos en el diseño 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 implementación de cada instrucción para
determinar la ubicación de los puntos de control que
permitan ejecutar las transferencias entre registros.
• 5. Diseño de la unidad de control (a continuación ...)
Diseño del control monociclo
3
Recordatorio (II)
MIPS hace fácil la implementación de estos pasos
• Instrucciones del mismo tamaño
• Registro fuente (rs) siempre en la misma posición del formato
de instrucción
• Valores inmediatos siempre del mismo tamaño (16 bits) y en
la misma posición (bits 0-15)
• Operaciones siempre sobre registros/inmediatos
Camino de datos monociclo  CPI=1  TCLK grande
A continuación: Paso 5 (diseño de la unidad de control)
Diseño del control monociclo
4
Diseño de la unidad de control: visión
completa de la implementación
Camino de datos con la unidad principal de control y la
unidad local de control de la ALU
0
M
u
x
ALU
Add result
Add
4
Instruction [31 26]
Read
address
Instruction
memory
Instruction [15 11]
PCSrc
Read
register 1
Instruction [20 16]
Instruction
[31–0]
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25 21]
PC
1
0
M
u
x
1
Read
data1
Read
register 2
Registers Read
Write
data2
register
0
M
u
x
1
Write
data
Zero
ALU ALU
result
Address
Write
data
Instruction [15 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction[5 0]
Diseño del control monociclo
5
La Unidad Aritmética y Lógica (ALU)
Operaciones básicas (solo usaremos 5 de las 8
posibles)
Binvert
A L U o p e r a tio n
Operation
CarryIn
a
0
a
1
Z ero
ALU
R e s u lt
O v e r f lo w
Result
b
b
0
2
1
Less
C a rry O u t
3
a.
CarryOut
Diseño del control monociclo
E n tra d a s d e c o n tro l
(A L U c tr)
F U N C IÓ N
000
001
010
110
111
AND
OR
ADD
SUB
SLT
6
Control de la ALU
Operaciones a realizar según la instrucción:
• Load (lw) y store (sw): Suma
• Salto (beq): Resta
• Aritméticas (tipo R: add,sub, or,and y slt): Definida por el campo “Funct”
Dependencias de las señales de control
E n tra d a s d e c o n tro l
Cod. O p.
ALUop
In s tru c c ió n
FUNCT
O p. deseada
d e la A L U (A L U c tr)
LW
00
C a rg a
XXXXXX
sum a
010
SW
00
A lm a c e n a
XXXXXX
sum a
010
B ra n c h E q u a l
01
s a lto
XXXXXX
re s ta
110
R -T yp e
10
sum a
100000
sum a
010
R -T yp e
10
re s ta
100010
re s ta
110
R -T yp e
10
AND
100100
and
000
R -T yp e
10
OR
100101
or
001
R -T yp e
10
s e t o n le s s th a n
101010
s e t o n le s s th a n
111
Diseño del control monociclo
7
Control local de la ALU: Tabla de verdad
ALUop
ALUop1 ALUop0
0
0
x
1
1
x
1
x
1
x
1
x
1
x
31
Instrucción Tipo R:
F5
x
x
x
x
x
x
x
F4
x
x
x
x
x
x
x
26
op
6 bits
fu n c t
F3
F2
x
x
x
x
0
0
0
0
0
1
0
1
1
0
21
rs
5 bits
6
Main
Control
6
ALUop
Diseño del control monociclo
16
11
rt
5 bits
ALU
Control
(Local)
ALUctr
3
ALU
N
F0
x
x
0
0
0
1
0
b it0
0
0
0
0
0
1
1
6
0
rd
shamt
funct
5 bits
5 bits
6 bits
funct<3:0> Instruction Op.
func
op
F1
x
x
0
1
0
0
1
A L U c tr
b it2
b it1
0
1
1
1
0
1
1
1
0
0
0
0
1
1
0000
add
0010
subtract
0100
and
0101
or
1010
set-on-less-than
8
Implementación del control local de la ALU
ALUop
ALUop1 ALUop0
0
0
x
1
1
x
1
x
1
x
1
x
1
x
F5
x
x
x
x
x
x
x
F4
x
x
x
x
x
x
x
fu n c t
F3
F2
x
x
x
x
0
0
0
0
0
1
0
1
1
0
F1
x
x
0
1
0
0
1
F0
x
x
0
0
0
1
0
O p e ra c ió n (A L U c tr)
b it2
b it1
b it0
0
1
0
1
1
0
0
1
0
1
1
0
0
0
0
0
0
1
1
1
1
ALUOp
ALU control block
ALUOp0
ALUOp1
F3
F2
Operation2
Operation1
Operation
F (5– 0)
F1
Operation0
F0
Diseño del control monociclo
9
Diseño de la unidad principal de control
T ip o R :
B its :
op
3 1 -2 6
rs
2 5 -2 1
rt
2 0 -1 6
T ip o I:
B its :
op
3 1 -2 6
rs
2 5 -2 1
rt
2 0 -1 6
T ip o J :
B its :
op
3 1 -2 6
rd
1 5 -1 1
sham t
1 0 -6
fu n c t
5 -0
In m e d ia to 1 6
1 5 -0
D ire c c ió n
2 6 -0
PCSrc
Add
ALU
Add result
4
RegWrite
Instruction [25–21]
PC
Read
address
Instruction
[31–0]
Instruction
memory
Instruction [20–16]
0
M
u
Instruction [15–11] x
1
RegDst
Instruction [15–0]
Read
register 1 Read
data 1
Read
register 2
Read
Write
data 2
register
Write
data Registers
16
Sign 32
extend
0
M
u
x
1
Shift
left 2
MemWrite
ALUSrc
0
M
u
x
1
ALU
control
Zero
ALU ALU
result
MemtoReg
Address
Read
data
Write Data
data memory
1
M
u
x
0
MemRead
Instruction [5–0]
ALUOp
Diseño del control monociclo
10
Significado de las señales de control
Señal
RegDst
R e g W rite
A lu S rc
P C S rc
M e m W rite
M em Read
M em ToReg
A c c ió n c u a n d o e s d e s a c tiv a d a (0 )
A c c ió n c u a n d o s e a c tiv a (1 )
E l re g istro de stino pa ra la s e scritu ra s vie ne d el E l re g istro de stino pa ra la s e scritu ra s vie ne d el ca m po
ca m p o rt (b its 2 0 -1 6 )
rd (b its 15 -1 1 )
N in g u n o
E scrib e e l da to e n "W rite D a ta " e n e l re g istro d ad o p o r
"W rite R e g iste r".
E l se g un do op e ra nd o de la A L U vie n e d e l b a n co de E l se g un do op e ra nd o de la A L U so n lo s 1 6 b its m en o s
re g istro (sa lid a 2 )
sig n ifica tivo s d e la in stru cción e xte nd id o s e n sign o
S e le ccio na P C + 4 co m o nu e vo va lo r d e l P C
S e le ccio na la d ire cció n d e sa lto co m p u ta d a co m o n u e vo
va lo r d e l P C
N in g u n a
E scrib e en la d ire cción de m e m o ria " A dd re ss" e l da to
"W rite D a ta "
N in g u n a
L e e u n d a to de la d ire cció n d e m e m o ria " A d d re ss" y lo
d e ja e n la sa lid a "R e a dD a ta "
E l va lo r a rea lim e n ta r a l ca m po "W rite D a ta " vie n e E l va lo r a rea lim e n ta r a l ca m po "W rite D a ta " vie n e d e la
d e la sa lid a d e la A L U
m e m o ria
PCSrc
Add
4
RegWrite
Instruction[25–21]
PC
Read
address
Instruction
[31–0]
Instruction
memory
Instruction[20–16]
0
M
Instruction[15–11] u
x
1
RegDst
Instruction[15–0]
Read
register1 Read
data1
Read
register2
Read
Write
data2
register
Write Registers
data
16 Sign 32
extend
Shift
left 2
ALU
Add result
0
M
u
x
1
MemWrite
ALUSrc
0
M
u
x
1
ALU
control
Zero
ALU ALU
result
MemtoReg
ead
Address R
data
ata
Write mD
data emory
1
M
u
x
0
MemRead
Instruction[5–0]
Diseño del control monociclo
ALUOp
11
Funcionamiento del camino de datos
Instrucción: Tipo R (add, sub, and, or, slt)
add $t1,$t2,$t3
0
M
u
x
Add
4
Instruction [31– 26]
Read
address
Instruction
memory
Instruction [15– 11]
Zero
ALU ALU
result
Address
Read
register 1
Instruction [20– 16]
Instruction
[31– 0]
1
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25– 21]
PC
ALU
Add result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5–0]
Diseño del control monociclo
12
Funcionamiento del camino de datos
Instrucción: lw
lw $t1, desplazamiento ($t2)
0
M
u
x
Add
4
Instruction [31– 26]
Read
address
Instruction
memory
Instruction [15– 11]
Zero
ALU ALU
result
Address
Read
register 1
Instruction [20– 16]
Instruction
[31–0]
1
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25– 21]
PC
ALU
Add result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5– 0]
Diseño del control monociclo
13
Funcionamiento del camino de datos
Instrucción: sw
sw $t1, desplazamiento($t2)
0
M
u
x
Add
4
Instruction [31– 26]
Read
address
Instruction
memory
Instruction [15– 11]
Zero
ALU ALU
result
Address
Read
register 1
Instruction [20– 16]
Instruction
[31–0]
1
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25– 21]
PC
ALU
Add result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5– 0]
Diseño del control monociclo
14
Funcionamiento del camino de datos
Instrucción: branch
beq $t1, $t2, desplazamiento
0
M
u
x
Add
4
Instruction [31–26]
Read
address
Instruction
memory
Instruction [15–11]
Zero
ALU ALU
result
Address
Read
register 1
Instruction [20–16]
Instruction
[31–0]
1
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25–21]
PC
ALU
Add result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15–0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5–0]
Diseño del control monociclo
15
Implementación de la unidad de control
principal
Tabla de verdad e implementación de las señales
de control de la unidad control principal
Implementación con PLA
Inputs
Op5
O p 5 -0 ->
(b its 3 1 -2 6 )
RegDst
A L U S rc
M em ToReg
R e g W rite
M em Read
M e m W rite
B ra n c h
ALUO p1
ALUO p0
00 0000
0D
R -F o rm a t
1
0
0
1
0
0
0
1
0
10 0011
35D
lw
0
1
1
1
1
0
0
0
0
10 1011
43D
sw
x
1
x
0
0
1
0
0
0
00 0100
4D
beq
x
0
x
0
0
0
1
0
1
Op4
Op3
Op2
Op1
Op0
Outputs
R-format
Iw
sw
beq
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
Diseño del control monociclo
ALUOpO
16
Rendimiento de la implementación
monociclo - Ejemplo
Suponiendo que los tiempos de operación (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
• ¿Cuál de las siguientes implementaciones será más rápida?
1.- Una implementación en la que cada instrucción se ejecuta en un ciclo
de reloj de duración fija.
2.- Una implementación donde cada instrucción se ejecuta en un ciclo de
reloj pero de duración variable (solución no práctica, pero ilustrativa).
Suponer un programa compuesto por: 24% carga (lw), 12% almacenamiento
(sw), 44% R-format, 18% saltos (beq/bne) y 2% bifurcacines (j).
Diseño del control monociclo
17
Solución
In stru cció n
R -form at
Load
S tore
B ranch
jum p
búsqueda
búsqueda
búsqueda
búsqueda
búsqueda
acceso
acceso
acceso
acceso
a
a
a
a
U n id ad es fu n cio n ales u tilizad as
registro
A LU
acceso a registro
registro
A LU
acceso a m em oria
registro
A LU
acceso a m em oria
registro
A LU
A cceso a registro
T ie m p o d e c ic lo n e c e s a rio p a ra c a d a in s tru c c ió n
In s tru c c ió n
M e m o ria R e g is tro
ALU
M e m o ria
R e g is tro
T o ta l p o r
in s tr. (n s )
R -fo rm a t
2
1
2
0
1
6
Load
2
1
2
2
1
8
S to re
2
1
2
2
7
B ra n c h
2
1
2
5
ju m p
2
2
T ie m p o d e c ic lo m e d io (4 4 % x6 + 2 4 % x8 + 1 2 % x7 + 1 8 % x5 + 2 % x2 ) =
Re n dim iento
Re lojVariabl e
Re n dim iento
Re lojFijo

T CicloFijo
T CicloVaria

ble
N * CPI * T CicloFijo
N * CPI * T CicloVaria
P o rc e n ta je
de uso
44%
24%
12%
18%
2%
6 .3 n s

ble
8
 1 . 27
6 .3
(*) El tiempo de ciclo de reloj fijo será de 8 ns, tiempo necesario
para ejecutar
Diseño del control monociclo
la instrucció n más compleja
18
Inconvenientes de la implementación
monociclo
Aunque funciona, la implementación 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 instrucción más compleja (lw).
• Cada unidad funcional sólo puede ser utilizada una vez por ciclo.
Necesidad de duplicar recursos (memoria, ALU, ..) Aumenta el costo
del hardware
¿Cómo mejorar el diseño?
• Implementación multiciclo
 Número de ciclos por instrucción (CPI) variable. Las instrucciones
sencillas se ejecutan en menos ciclos de reloj.
• Implementación segmentada
 Solape de la ejecución de varias instrucciones. Existen varias
instrucciones ejecutándose simultáneamente pero en distintas fases de
ejecución.
Diseño del control monociclo
19
Descargar

Desarrollo de Sistemas Basados en el Conocimiento