Parte II: Diseño y control de un camino de datos
multiciclo
• Introducción
• Descripción del camino de datos multiciclo
– Análisis del repertorio de instrucciones a implementar. Requisitos del
camino de datos.
– Selección de componentes
– Construcción del camino de datos
– Análisis de la implementación de cada instrucción. Puntos de control.
• Diseño de la unidad de control del camino de datos multiciclo
– Control cableado
– Control microprogramado
• Excepciones e interrupciones
Diseño y control de un camino de datos multiciclo
1
Introducción
• Implementación MULTICICLO
– División de la ejecución de las instrucciones en varias etapas o pasos
• Se ejecuta un paso de la instrucción en cada ciclo de reloj.
• Ventajas
– Reutilización de las unidades funcionales
• Una unidad puede utilizarse más de una vez por instrucción siempre que se haga
en ciclos de reloj distintos.
– CPI variable
• Instrucciones sencillas - > necesitan pocos ciclos de reloj para ejecutarse
• Instrucciones complejas -> necesitan más ciclos de reloj que las anteriores
Diseño y control de un camino de datos multiciclo
2
Visión abstracta de la implementación multiciclo:
componentes básicos
Instruction
register
PC
Address
Data
A
Memory
Data
Instruction
or data
Memory
data
register
Register #
Registers
Register #
ALU
ALUOut
B
Register #
• Una sola memoria para datos e instrucciones
• Una sola ALU en vez de 1 ALU y 2 sumadores
• Uso de registros temporales a la salida de las unidades
funcionales principales. Dos tipos de registros:
– Tipo A: Actualizan su contenido en cada instrucción (IR)
– Tipo B: Actualizan su contenido en cada ciclo de reloj (MDR, A,B,ALUOut)
Diseño y control de un camino de datos multiciclo
3
Construcción del camino de datos multiciclo
IorD
PC
0
M
u
x
1
MemRead
MemWrite
IRWrite
RegDst
RegWrite
Instruction
[25– 21]
Address
Memory
MemData
Write
data
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
u
x
1
Read
register 1
Read
Read
data 1
register 2
Registers
Write
Read
register
data 2
Instruction
[20– 16]
Instruction
[15– 0]
ALUSrcA
0
M
Instruction u
x
[15– 11]
1
A
B
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
ALUOut
0
4
Write
data
Zero
ALU ALU
result
1 M
u
2 x
3
ALU
control
Instruction [5– 0]
MemtoReg
•
•
ALUSrcB ALUOp
Compartición de unidades funcionales (reducción del hardware) - > uso de
multiplexores
Ejecución en múltiples ciclos -> cada ciclo requiere un conjunto determinado de
señales de control
• Señales de control
Diseño y control de un camino de datos multiciclo
4
Camino de datos multiciclo completo con las
señales de control
PCWriteCond
PCSource
PCWrite
IorD
Outputs
ALUSrcB
MemRead
MemWrite
Control
ALUSrcA
RegWrite
MemtoReg
IRWrite
ALUOp
Op
[5– 0]
RegDst
0
M
26
Instruction [25– 0]
PC
0
M
u
x
1
Shift
left 2
Instruction
[31-26]
Address
Memory
MemData
Write
data
Instruction
[25– 21]
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Instruction
[15– 0]
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
B
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
x
2
Zero
ALU ALU
result
ALUOut
0
4
Write
data
1 u
PC [31-28]
0
M
u
x
1
A
28
Jump
address [31-0]
1 M
u
2 x
3
ALU
control
Instruction [5– 0]
Diseño y control de un camino de datos multiciclo
5
Etapas en la ejecución de las instrucciones
• ¿Qué operaciones realizamos en cada ciclo de reloj?
– Objetivo: equilibrar la carga computacional de cada etapa -> Minimización
del tiempo de ciclo
– En cada etapa se va a permitir alguna de las siguientes operaciones:
• Un acceso a registro
– Actualización en cada ciclo
» Registros temporales: MDR, A, B, ALUOut
– Actualización según una señal de escritura
» PC, IR
• Un acceso a memoria
• Una operación de ALU
• ¿Cómo se determina el tiempo de ciclo mínimo?
– Todas las operaciones de un ciclo se ejecutan en paralelo
– Etapas o pasos de la instrucción se ejecutan en serie
Diseño y control de un camino de datos multiciclo
6
Etapas en la ejecución de las instrucciones (I)
• Etapa 1: Búsqueda del código de operación (fetch)
IR = Memory[PC]
PC = PC + 4
• Etapa 2: Decodificación y acceso a operandos
A = Reg[rs]
B = Reg[rt]
ALUout = PC + extensión-signo(IR[15-0]) << 2
• Etapa 3: Ejecución, cálculo de dirección o terminación del salto
– Instrucción tipo R (and, or, add, sub,slt)
ALUOut = A op B
– Referencia a memoria (lw/sw)
ALUOut = A + extensión-signo(IR[15-0])
– Salto (beq)
if (A == B) PC = ALUOut
– Bifurcación (j)
PC = PC[31-28] || IR[25-0] << 2
Diseño y control de un camino de datos multiciclo
7
Etapas en la ejecución de las instrucciones (II)
• Etapa 4: Acceso a memoria/fin de ejecución instrucción tipo R
– Referencia a memoria
MDR = Memory[ALUOut]
o
Memory[ALUOut] = B
– Fin ejecución instrucción tipo R
Reg[rd] = ALUOut
• Etapa 5: Fin de lectura en memoria
Reg[rt] = MDR
Diseño y control de un camino de datos multiciclo
8
Instruction decode/
Register fetch
Instruction fetch
0
Instrucción de CARGA (LW): Etapa 1
1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'JMP')
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
T1
Memory reference FSM
(Figure 5.38)
R-type FSM
(Figure 5.39)
Branch FSM
(Figure 5.40)
Jump FSM
(Figure 5.41)
PCWriteCond
PCSource
PCWrite
ALUOp
IorD Outputs
ALUSrcB
MemRead
ALUSrcA
MemWrite Control
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5– 0]
0
M
26
Instruction [25–0]
PC
0
M
u
x
1
Shift
left 2
Instruction
[31-26]
Address
Memory
MemData
Write
data
Instruction
[25– 21]
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
[15–0]
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
B
4
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
1 u
x
2
PC [31-28]
0
M
u
x
1
A
28
Jump
address [31-0]
Zero
ALU ALU
result
ALUOut
0
1M
u
2 x
3
ALU
control
Instruction [5– 0]
Diseño y control de un camino de datos multiciclo
9
Instruction decode/
Register fetch
Instruction fetch
0
Instrucción de CARGA (LW): Etapa 2
1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'JMP')
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
T2
Memory reference FSM
(Figure 5.38)
R-type FSM
(Figure 5.39)
Branch FSM
(Figure 5.40)
Jump FSM
(Figure 5.41)
PCWriteCond
PCSource
PCWrite
ALUOp
IorD Outputs
ALUSrcB
MemRead
ALUSrcA
MemWrite Control
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5– 0]
0
M
26
Instruction [25–0]
PC
0
M
u
x
1
Shift
left 2
Instruction
[31-26]
Address
Memory
MemData
Write
data
Instruction
[25– 21]
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
[15–0]
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
B
4
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
1 u
x
2
PC [31-28]
0
M
u
x
1
A
28
Jump
address [31-0]
Zero
ALU ALU
result
ALUOut
0
1M
u
2 x
3
ALU
control
Instruction [5– 0]
Diseño y control de un camino de datos multiciclo
10
Instrucción de CARGA (LW): Etapa 3
T3
PCWriteCond
PCSource
PCWrite
ALUOp
IorD Outputs
ALUSrcB
MemRead
ALUSrcA
MemWrite Control
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5– 0]
0
M
26
Instruction [25–0]
0
M
u
x
1
Instruction
[31-26]
Address
Memory
MemData
Write
data
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
[15– 0]
Memory
data
register
x
2
From state 1
Instruction
[25– 21]
Instruction
[15–0]
Instruction
register
1 u
0
M
Instruction u
x
[15– 11]
1
0
M
u
x
1
A
B
4
0
M
u
x
1
PC [31-28]
(Op = 'LW') or (Op = 'SW')
Memory address computation
2
Zero
ALU ALU
result
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
ALUOut
0
1M
u
2 x
3
(Op = 'LW')
PC
Shift
left 2
28
Jump
address [31-0]
Memory
access
3
16
Sign
extend
32
Memory
access
5
MemRead
IorD = 1
Shift
left 2
ALU
control
MemWrite
IorD = 1
Write-back step
Instruction [5– 0]
4
To state 0
(Figure 5.37)
RegWrite
MemtoReg = 1
RegDst = 0
Diseño y control de un camino de datos multiciclo
11
Instrucción de CARGA (LW): Etapa 4
T4
PCWriteCond
PCSource
PCWrite
ALUOp
IorD Outputs
ALUSrcB
MemRead
ALUSrcA
MemWrite Control
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5– 0]
0
M
26
Instruction [25–0]
0
M
u
x
1
Instruction
[31-26]
Address
Memory
MemData
Write
data
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
[15– 0]
Memory
data
register
x
2
From state 1
Instruction
[25– 21]
Instruction
[15–0]
Instruction
register
1 u
0
M
Instruction u
x
[15– 11]
1
0
M
u
x
1
A
B
4
0
M
u
x
1
PC [31-28]
(Op = 'LW') or (Op = 'SW')
Memory address computation
2
Zero
ALU ALU
result
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
ALUOut
0
1M
u
2 x
3
(Op = 'LW')
PC
Shift
left 2
28
Jump
address [31-0]
Memory
access
3
16
Sign
extend
32
Memory
access
5
MemRead
IorD = 1
Shift
left 2
ALU
control
MemWrite
IorD = 1
Write-back step
Instruction [5– 0]
4
To state 0
(Figure 5.37)
RegWrite
MemtoReg = 1
RegDst = 0
Diseño y control de un camino de datos multiciclo
12
Instrucción de CARGA (LW): Etapa 5
T5
PCWriteCond
PCSource
PCWrite
ALUOp
IorD Outputs
ALUSrcB
MemRead
ALUSrcA
MemWrite Control
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5– 0]
0
M
26
Instruction [25–0]
0
M
u
x
1
Instruction
[31-26]
Address
Memory
MemData
Write
data
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
[15– 0]
Memory
data
register
x
2
From state 1
Instruction
[25– 21]
Instruction
[15–0]
Instruction
register
1 u
0
M
Instruction u
x
[15– 11]
1
0
M
u
x
1
A
B
4
0
M
u
x
1
PC [31-28]
(Op = 'LW') or (Op = 'SW')
Memory address computation
2
Zero
ALU ALU
result
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
ALUOut
0
1M
u
2 x
3
(Op = 'LW')
PC
Shift
left 2
28
Jump
address [31-0]
Memory
access
3
16
Sign
extend
32
Memory
access
5
MemRead
IorD = 1
Shift
left 2
ALU
control
MemWrite
IorD = 1
Write-back step
Instruction [5– 0]
4
To state 0
(Figure 5.37)
RegWrite
MemtoReg = 1
RegDst = 0
Diseño y control de un camino de datos multiciclo
13
Diseño de la unidad de control del camino de
datos multiciclo
• Unidad de control más compleja que la del monociclo
• Técnicas para la implementación del control
– Máquina de estados finitos (control cableado)
• Representación en forma gráfica (diagrama de estados)
• La máquina consta de:
– Un conjunto de estados
– Función de estado siguiente: Hace corresponder el estado actual y las
entradas a un nuevo estado. Indica cómo cambian los estados.
– En cada estado se genera un conjunto de señales de control
– Un ciclo de reloj por estado
– Microprogramación (control microprogramado)
• Utiliza una representación programada para el control
• Se utiliza para unidades de control complejas (cientos de estados)
• Las señales de control que se aplican en cada estado se obtienen de los diversos
campos de una microinstrucción así como la información de la siguiente
microinstrucción a ejecutar
– Conjunto de microinstrucciones -> microprograma -> ROM
Diseño y control de un camino de datos multiciclo
14
Máquina de estados finitos:
Etapas comunes
• Representación abstracta
Start
– Etapas 1 y 2 comunes a
todas las instrucciones
Instruction fetch/decode and register fetch
(Figure 5.37)
Memory access
instructions
(Figure 5.38)
Jump instruction
(Figure 5.41)
Instruction decode/
Register fetch
0
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'JMP')
Etapas 1 y 2
Branch instruction
(Figure 5.40)
Instruction fetch
• Diagrama de estados
–
R-type instructions
(Figure 5.39)
Memory reference FSM
(Figure 5.38)
R-type FSM
(Figure 5.39)
Diseño y control de un camino de datos multiciclo
Branch FSM
(Figure 5.40)
Jump FSM
(Figure 5.41)
15
Máquina de estados finitos:
Diagrama completo
Instruction decode/
register fetch
Instruction fetch
Start
Memory address
computation
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
6
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
(Op = 'LW')
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
Branch
completion
Execution
2
8
ALUSrcA =1
ALUSrcB = 00
ALUOp = 10
Memory
access
3
1
Memory
access
5
MemRead
IorD = 1
(Op = 'J')
0
Jump
completion
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
PCWrite
PCSource = 10
R-type completion
7
MemWrite
IorD = 1
RegDst = 1
RegWrite
MemtoReg = 0
Write-back step
4
RegDst = 0
RegWrite
MemtoReg = 1
Diseño y control de un camino de datos multiciclo
16
Implementación hardware del control de una
máquina de estados finitos
• Unidad de control = Lógica de control + Registro de Estado
– Reg. Estado: Se escribe en cada flanco de reloj y es estable durante el ciclo
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
Control logic
MemtoReg
PCSource
ALUOp
Outputs
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
S0
S1
S2
S3
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Instruction register
opcode field
Estado
Siguiente
State register
Diseño y control de un camino de datos multiciclo
Estado
Actual
17
Implementación hardware del control:
Tabla de estados
E n tra d a s
S a lid a s
op3
op2
op1
op0
s3
s2
s1
s0
ns3
ns2
ns1
ns0
p C W rite
P C W rite C o n d
Io rD
M em R ead
M e m W rite
IR W R ite
M em ToR eg
P C S o u rc e 1
P C S o u rc e 0
ALU O p1
ALU op0
A L U S rc B 1
A L U S rc B 0
A L U S rc A
R e g w rite
R egD st
S e ñ a le s d e C o n tro l p a ra e l C a m in o d e D a to s
x
x
x
x
x
x
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
0
0
0
0
1
0
0
0
op5
0
E s ta d o
S ig u ie n te
E s ta d o A c tu a l
op4
C ó d ig o O p e ra c ió n
1
lw
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
sw
1
0
1
0
1
1
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
R
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
beq
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
j
0
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
2
lw
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
2
sw
1
0
1
0
1
1
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
3
x
x
x
x
x
x
0
0
1
1
0
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
4
x
x
x
x
x
x
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
5
x
x
x
x
x
x
0
1
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
6
x
x
x
x
x
x
0
1
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
7
x
x
x
x
x
x
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
8
x
x
x
x
x
x
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
1
0
0
9
x
x
x
x
x
x
1
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
Diseño y control de un camino de datos multiciclo
18
Ecuaciones lógicas
S e ñ a l C o n tro l
->
NS3
NS2
NS1
NS0
P C W rite
P C W rite C o n d
Io rD
M em Read
M e m W rite
IR W rite
M em ToReg
P C S o u rc e 1
P C S o u rc e 0
ALUO p1
ALUO p0
A L U S rc B 1
A L U S rc B 0
A L U S rc A
R e g W rite
RegDst
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
E c u a c ió n ló g ic a
(S 3 'S 2 'S 1 'S 0 ) (O P 5 'O P 4 'O P 3 'O P 2 O P 1 'O P 0 ') + (S 3 'S 2 'S 1 'S 0 ) (O P 5 'O P 4 'O P 3 'O P 2 'O P 1 O P 0 ') =
E s ta d o 1 (o p [5 :0 ] = 'b e q ') + E s ta d o 1 (o p [5 :0 ] = 'jm p ')
E s ta d o 1 (o p [5 :0 ] = 'R -fo rm a t') + E s ta d o 2 (o p [5 :0 ] = 's w ') + E s ta d o 3 + E sta d o 6
E s ta d o 1 (o p [5 :0 ] = 'lw ') + E s ta d o 1 (o p [5 :0 ] = 's w ') + E s ta d o 1 (o p [5 :0 ] = 'R -fo rm a t') +
E s ta d o 2 (o p [5 :0 ] = 'lw ') + E s ta d o 2 (o p [5 :0 ] = 's w ') + E s ta d o 6
E s ta d o 0 + E s ta d o 1 (o p [5 :0 ] = 'jm p ') + E s ta d o 2 (o p [5 :0 ] = 'lw ') + E s ta d o 2 (o p [5 :0 ] = 's w ') + E s ta d o 6
E s ta d o 0 + E s ta d o 9
E s ta d o 8
E s ta d o 3 + E s ta d o 5
E s ta d o 0 + E s ta d o 3
E s ta d o 5
E s ta d o 0
E s ta d o 4
E s ta d o 9
E s ta d o 8
E s ta d o 6
E s ta d o 8
E s ta d o 1 + E s ta d o 2
E s ta d o 0 + E s ta d o 1
E s ta d o 2 + E s ta d o 6 + E s ta d o 8
E s ta d o 4 + E s ta d o 7
E s ta d o 7
Diseño y control de un camino de datos multiciclo
19
Alternativas para la implementación hardware
• Implementación en ROM
• Implementación en PLA
Opciones de tamaño de ROM:
Tamaño de la PLA:
T = #inputs x # minterms + #ouputs x #minterms
(10 x 17) + (20 x 17) = 510 bits = 0.498 Kbits
Opción 1: Una sola ROM (210 x 20 = 20 Kbits)
Opción 2: Dos ROMs (4.25 Kbits)
•Señales NSx: 210 x 4
•Señales de Control: 24 x 16
O p5
O p4
O p3
O p2
Tamaño:
20 Kbits vs 4.25 Kbits
PCWrite
O p1
PCWriteCond
IorD
MemRead
O p0
S3
MemWrite
IRWrite
Control logic
S2
MemtoReg
S1
PCSource
ALUOp
Outputs
S0
ALUSrcB
ALUSrcA
P C W rite
RegWrite
P C W rite C o n d
RegDst
Io rD
M em Read
NS3
NS2
NS1
NS0
Instruction register
opcode field
IR W rite
M e m toR e g
P C S o u rce 1
P C S o u rce 0
ALU O p1
ALU O p0
S0
S1
S2
S3
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
M e m W rite
A L U S rcB 1
A L U S rcB 0
State register
A L U S rcA
R e g W rite
R e g D st
NS3
NS2
NS1
NS0
Diseño y control de un camino de datos multiciclo
20
Microprogramación:
Control microprogramado
• Dos técnicas para el diseño de la unidad de control
– Máquina de Estados Finitos (control cableado)
• La Unidad de Control podemos considerarla como un ciruito lógico secuencial
• Utilizado para generar una secuencia fija de señales de control
• Varios modos de implementación hardware: ROM, PLA, componentes,...
• Ventajas
– Alta velocidad de funcionamiento
– Implementaciones más pequeñas (reducido número de componentes)
• Difícil realizar modificaciones en el diseño
• Técnica de diseño favorita en las arquitecturas RISC
– Microprogramación (control microprogramado)
• ... siguiente técnica de diseño a estudiar
Diseño y control de un camino de datos multiciclo
21
Microprogramación
• El concepto de microprogramación fue introducido por Maurice
Wilkes a principio de los años 50
– Después de construir el primer computador de programada almacenado
(EDSAC), Wilkes trató de buscar una mejor forma de diseñar la Unidad de
Control.
– Solución: Convierte la Unidad de Control en un computador en miniatura,
que tiene una tabla para especificar el control del camino de datos, y una
segunda tabla para determinar el flujo de control a nivel de microinstrucción
Diseño y control de un camino de datos multiciclo
22
Control microprogramado
•
•
Las señales de control se almacenan en
forma de microinstrucciones en una
memoria de control
Microinstrucción
Control unit
Las instrucciones del nivel ISA son
interpretadas por un microprograma que
consta
de
una
secuencia
de
microinstrucciones
Comparando con la implementación de la
máquina de estados finitos, se observa
que la lógica de control del siguiente
estado (o siguiente microinstrucción a
ejecutar) es externa.
Microcode memory
Outputs
Input
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
BWrite
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
AddrCtl
Datapath
1
Microprogram counter
Adder
– Se implementa con un contador y lógica
adicional dando lugar a un secuenciador
externo.
Diseño y control de un camino de datos multiciclo
Address select logic
Op[5– 0]
•
Instruction register
opcode field
Secuenciador
externo
23
Conceptos básicos:
Microinstrucciones
• Microinstrucción
– Especifica todas las señales de control del camino de datos más la
posibilidad de decidir condicionalmente qué microinstrucción se debe
ejecutar a continuación
– Cada palabra de la memoria de control es una microinstrucción.
– Formato de las microinstrucciones
• Señales de control: Señales para el camino de datos
• Condiciones: Bits que se pueden usar para seleccionar la condición
que se desea utilizar para en función de si es cierta o no ejecutar la
siguiente microinstrucción o saltar a otra.
• Siguiente instrucción: Campo que indica la siguiente instrucción a
ejecutar
S e ñ a le s d e co n tro l
C o n d icio n e s S ig u ie n te in stru cció n
Diseño y control de un camino de datos multiciclo
24
Conceptos básicos:
Formato de las microinstrucciones
• Microinstruciones HORIZONTALES y VERTICALES
– Clasificación en base al grado de codificación de los campos de la
microinstrucciones
• Microinstrucción horizontal: Campos no codificados. Las señales de control se
obtienen directamente de los bits de la microinstrucción.
– Pocas microinstrucciones y anchas. Permite realizar acciones en paralelo
• Microinstrucción vertical: Campos codificados. Para obtener las señales de
control necesitamos un decodificador.
– Muchas microinstrucciones y cortas. No permite acciones en paralelo.
• Diseños intermedios: Algunos campos muy codificados y otros no codificados
para proporcionar las señales de control directamente.
M ic ro in s tr u c c ió n h o riz o n ta l
B its d e
D ire cció n sig u ie n te
S e ñ a le s d e c o n tro l
co n d ició n
m icro in stru c ció n
C ó d ig o
M ic r o in s tr u c c ió n v e r tic a l
D ire c c ió n
B its d e
s ig u ie n te
c o n d ic ió n
m ic ro in s tru c c ió n
..a l c a m in o d e
d a to s..
Señales de control
Diseño y control de un camino de datos multiciclo
Decodificador
25
Conceptos básicos:
Microprograma
•
Microprograma
– Secuencia coherente de microinstrucciones cuya ejecución permite interpretar una
instrucción del nivel ISA (macroinstrucción)
– Ejecutar una microinstrucción  Leer una microinstrucción de la memoria
– Una vez diseñado el camino de datos y la memoria de microinstrucciones, el control
se convierte básicamente en una tarea de programación.
– Cambiando los microprogramas podemos ejecutar otros repertorios de instrucciones
(implementación de distintas arquitecturas) -> EMULACIÓN!
M e m o ria d e c o n tr o l

 S a lto a e je c u c ió n
<- búsqueda
S a lto a ru tin a s e g ú n in s tru c c ió n
< - e je c u c ió n

 s a lto a b ú s q u e d a
< - A D D ro u tin e

 s a lto a b ú s q u e d a
< - O R ro u tin e


 S a lto a b ú s q u e d a
< - o tra s
Diseño y control de un camino de datos multiciclo
26
Conceptos básicos:
Memoria de control
• Memoria de control
– En esta memoria se guardan los microprogramas o conjuntos de
microinstrucciones a partir de los que se obtienen las señales de control
necesarias para la ejecución del repertorio de instrucciones del nivel ISA
– Normalmente se utiliza una ROM para esta memoria de control. Sin
embargo, se han desarrollado máquinas en las que el microprograma se
carga en memoria RAM -> permiten al usuario alterar su contenido
• Nanoprogramación
– Tiene como objetivo principal reducir el tamaño de la memoria de control
añadiendo un segundo nivel de memoria -> nanomemoria
– Diseño de menor coste pero, más lento: se tiene que acceder a dos
memorias para obtener las señales de control.
– Apropiada cuando se repiten varias veces un conjunto de
microinstrucciones
– Llega a soluciones de compromiso entre la organización horizontal y vertical
Diseño y control de un camino de datos multiciclo
27
Nanoprogramación
– Microprograma de K microinstrucciones de n bits cada una. Supongamos que un estudio detallado
del microprograma muestra que sólo se utilizan V microinstrucciones de las 2n posibles, siendo V
<< K.
– ¿Cuál es el ahorro en memoria al utilizar una memoria de control de dos niveles?
T2 = K x (Log2 V + log2 K) + n x V
T1 = K x (n + Log2 K)
B its d e c o n tro l
n b its
->
D ire c c ió n
n a n o in s tr.
 lo g 2 V ->
S ig u ie n te
d ire c c ió n
< lo g 2 K >
->
N a n o p ro g ra m a
(n iv e l 2 )



Diseño y control de un camino de datos multiciclo
S e ñ a le s d e c o n tro l
n

(n iv e l 1 )

V
M ic ro p r o g ra m a
(u n s o lo n iv e l)
M ic ro p r o g ra m a
K
K
->


S ig u ie n te
d ire c c ió n
< lo g 2 K >
28
Ejemplo:
Memoria de control del uP MC68000
D ire c c ió n
n a n o in s tr.
 lo g 2 V ->
< - 9 ->
S ig u ie n te
d ire c c ió n
< lo g 2 K >
< - 1 0 ->
M ic ro p ro g ra m a
V = 260 
(n iv e l 1 )

S e ñ a le s d e c o n tro l
n = 70
->
N a n o p ro g ra m a
(n iv e l 2 )

K = 650
- >
Memoria de control de dos niveles: microprograma (nivel 1) + nanoprograma (nivel 2)
n= 70
K= 650
V = 260
T1 = 650 x (70 + 10 ) = 52000 bits
T2 = K x (Log2 V + log2 K) + n x V = 650 x (9 + 10) + 260 x 70 = 30550 bits
Ahorro en memoria de control = 52000-30550 = 21450 bits

•
•
•
•
•
•
•
Diseño y control de un camino de datos multiciclo
29
Ejemplo: Funcionamiento de la unidad de control
del uP MC68000
Diseño y control de un camino de datos multiciclo
30
Funcionamiento de la unidad de control
microprogramada
•
Funcionamiento generalizado
– Para ejecutar una instrucción el módulo
“Sequencing Logic” (SL) lanza un comando de
lectura sobre la memoria de control
– Se lee la palabra y se almacena en el “Control
Buffer Register” (CBR)
– El contenido de CBR (microinstrucción) genera
las señales de control para el camino de datos y
la información de dirección de la siguiente
microinstrucción para SL
– SL carga una nueva dirección de microinstrucción
en el Control Address Register (CAR) basado en
la información de la propia microinstrución y del
campo de condición. La dirección puede ser:
• Siguiente microinstrucción
• Salto a una nueva rutina en función del campo
“siguiente dirección” de la microinstrucción
• Salto a una rutina de instrucción basado en el
código de operación de la instrucción ISA.
Diseño y control de un camino de datos multiciclo
31
Ventajas y desventajas del control
microprogramado
• Como las señales de control son almacenadas en una memoria las
unidades de control microprogramadas:
–
–
–
–
Son sistemáticas con un formato bien definido
Pueden ser fácilmente modificables durante el proceso de diseño
Requieren más componentes para su implementación
Tienden a ser más lentas que las unidades de control cableadas debido a
que tienen que realizar operaciones de lectura de una memoria para
obtener las señales de control
• Emulación
– Podemos modificar el microprograma para que la unidad de control
interprete otro lenguaje máquina distinto (el de la máquina a emular) sin
necesidad de realizar modificaciones en el hardware de la unidad de control
-> sólo cambiamos el microprograma!
Diseño y control de un camino de datos multiciclo
32
La técnica de microprogramación aplicada a la
implementación de un subconjunto de MIPS
• Aplicaremos la técnica de microprogramación para diseñar la
unidad de control como alternativa al anterior diseño basado en
maquinas de estados finitos
Implementación de la función “siguiente estado”
en la Máquina de Estados Finitos
Implementación de la función “siguiente estado”
en el control microprogramado
Control unit
PCWrite
PCWriteCond
IorD
MemRead
PLA or ROM
MemWrite
IRWrite
Control logic
Outputs
MemtoReg
Interno!
PCSource
ALUOp
Outputs
ALUSrcB
ALUSrcA
RegW rite
Externo!
Input
RegDst
State
Adder
Op[5– 0]
S0
S1
S2
Address select logic
S3
Op0
Op1
Op2
Op3
Op5
Op4
Instruction register
opcode field
AddrCtl
1
NS3
NS2
NS1
NS0
Inputs
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
BWrite
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
State register
Instruction register
opcode field
Diseño y control de un camino de datos multiciclo
33
Formato de las microinstrucciones
•
7 Campos -> Señales de Control (6) + Siguiente Microinstrucción (1)
C ontrol
A LU
SRC1
SRC2
C ontrol
R egistro
M em oria
C ontrol
P C W rite
N o m b re d e l c a m p o
C o n tro l A L U
F u n c ió n d e l c a m p o
E s p e c ific a la o p e ra c ió n q u e v a a re a liz a r la A L U
d u ra n te e l c ic lo .
SRC1
E s p e c ific a la fu e n te p a ra e l p rim e r o p e ra n d o d e
la A L U
E s p e c ific a la fu e n te p a ra e l s e g u n d o o p e ra n d o
d e la A L U
SRC2
C o n tro l R e g is tro
E s p e c ific a e l n ú m e ro d e re g is tro y
d a to q u e s e e s c rib e e n e l m is m o
fu e n te d e l
M e m o ria
E s p e c ific a le c tu ra o e s c ritu ra y la fu e n te d e la
d ire c c ió n
C o n tro l P C W rite
E s p e c ific a la e s c ritu ra d e l P C
S e c u e n c ia m ie n to
E s p e c ific a la s ig u ie n te m ic ro in s tru c c ió n q u e s e
v a a e je c u ta r
Diseño y control de un camino de datos multiciclo
S ecuenciam iento
V a lo re s d e l c a m p o
add
subt
Func code
PC
A
B
4
E x te n d
E x tS h ft
Read
W rite A L U (rd < - A L U o u t)
W rite M D R (rt < - M D R )
R e a d P C (IR < - M [P C ])
R e a d A L U (M D R < - M [A L U o u t]
W rite A L U (M [A L U o u t] < - B )
ALU
A L U O u t-C o n d
J u m p A d d re s s
Seq
F e tc h
D is p a tc h i
34
Señales asociadas a los campos y sus valores
SRC1
C o n tro l A L U
O p e ra c ió n
SRC2
O p e ra c ió n
O p e ra c ió n
A d d rS rc A
ALUop1
ALUO p0
0
0
Sum a
0
PC
0
1
R e s ta
1
A
1
0
Func. code
R e g is te r C o n tr o l
R egD st
M em ToReg
1
1
0
1
0
1
A L U S rc B 0
0
0
B
0
1
4
1
0
E x te n d
1
1
E x tS h ft
M e m o ria
O p e r.
R e g W rite
A L U S rB 1
O p e r.
IR W rite
M em Read
M e m W rite
Io rD
W rite A L U
1
1
0
0
Read PC
W rite M D R
0
1
0
1
Read ALU
0
0
1
1
W rite A L U
Sec
C o n tro l P C W rite
O p e r.
P C S rc1
P cS rc0
P C w rite
P C W rtC o n d
0
0
1
0
ALU
0
1
0
1
A L U O u t-C o n d
1
0
1
0
Ju m p a d d re ss
Diseño y control de un camino de datos multiciclo
O p e ra c ió n
A d d rC tl1
A d d rC tl0
1
1
Seq.
0
0
F e tc h
0
1
D is p a tc h 1
1
0
D is p a tc h 2
35
Microprograma de la unidad de control para el
subconjunto MIPS
E s ta d o
0
1
2
3
4
5
6
E tiq u e ta
F e tc h
M em 1
LW 2
C o n tro l
ALU
Add
Add
Add
PC
PC
A
SRC2
4
E x ts h ft
E x te n d
C o n tro l
R e g is tro s
M e m o ria
Read PC
C o n tro l
P C W rite
ALU
Read
Read ALU
W rite M D R
SW 2
R fo rm a t1
W rite A L U
Func
Cod
A
B
W rite A L U
7
8
BEQ1
9
JUM P1
Subt
A
B
Diseño y control de un camino de datos multiciclo
A L U O u tcond
Jum p
A d d re s s
A d d rC tl0
Sec.
A d d rC tl1
P C W rite C o n d
P C W rite
P C S o u rc e 0
P C S o u rc e 1
C o n tro l P C W rite
M e m W rite
Io rD
M em R ead
IR W rite
M e m o ria
M em ToR eg
R e gD st
R e g W rite
A L U S rc B 0
A lu S rcA
SRC1
C o n tro l
R e g is tro
SRC2
A L U S rc B 1
SRC1
A lu o p 0
18 señales de control ->
A lu o p 1
C o n tro l A L U
Secuenc.
Seq.
D is p a tc h 1
D is p a tc h 2
Seq
F e tc h
F e tc h
Seq
F e tc h
F e tc h
F e tc h
36
Lógica de selección siguiente microinstrucción
(secuenciador de microprograma)
•
La lógica de selección de direcciones genera la dirección de la siguiente
microinstrucción a ejecutar. La siguiente dirección puede ser:
–
–
–
–
Siguiente microinstrucción (AddrCtl = 3)
Obtenida de la ROM 2 (AddrCtl=2)
Obtenida de la ROM 1 (AddrCtl = 1)
PLA or ROM
Dirección 0 (AddrCtl = 0)
Sec
O p e ra c ió n
A d d rC tl1
A d d rC tl0
1
1
Seq.
0
0
F e tc h
0
1
D is p a tc h 1
1
0
D is p a tc h 2
1
State
Adder
3
Mux
2 1
AddrCtl
0
0
Dispatch ROM 2
Dispatch ROM 1
D is p a tc h R O M 2
O p [5 :0 ]
N o m b re
V a lo r
100011
lw
L W 2 (3 )
101011
sw
S W 2 (5 )
Op
Address select logic
Instruction register
opcode field
Diseño y control de un camino de datos multiciclo
D is p a tc h R O M 1
O p [5 :0 ]
N o m b re
V a lo r
000000
R -F o rm a t R -F o rm a t1 (6 )
000010
jm p
JU M P 1 (9 )
000100
beq
B E Q 1 (8 )
100011
lw
M E M 1 (2 )
101011
sw
M E M 1 (2 )
37
Excepciones e interrupciones
• Definiciones
– Eventos inesperados que cambian el flujo normal de ejecución de las
instrucciones
– Excepción
• Evento que tiene su origen en el interior del procesador (desbordamiento
aritmético, instrucción ilegal, etc.)
– Interrupción
• Evento que tiene su origen en el exterior del procesador (dispositivos de
entrada/salida, fallo de página, etc.)
T ip o d e e v e n to
P e tic ió n d ip o s itiv o E /S
In v o c a r S is te m a O p e ra tiv o d e s d e
e l p ro g ra m a d e u s u a rio
D e s b o rd a m ie n to a ritm é tic o
In s tru c c ió n ile g a l o n o d e fin id a
F a llo h a rd w a re
¿Desde dónde?
E x te rio r
In te rio r
T e rm in o lo g ía M IP S
In te rru p c ió n
E x c e p c ió n
In te rio r
In te rio r
C u a lq u ie ra
E x c e p c ió n
E x c e p c ió n
E x c e p c ió n /in te rru p c ió n
Diseño y control de un camino de datos multiciclo
38
Tratamiento de excepciones en MIPS
•
Las acciones básicas a realizar son:
– Guardar la dirección de la instrucción causante en el registro “Contador de Programa de
Excepciones (EPC)
– Transferir el control al Sistema Operativo en alguna dirección especificada donde se tratará la
excepción (ejecución de una rutina de servicio)
•
Información sobre la causa de la excepción (identificación de la excepción)
– Registro CAUSE (en MIPS)
– En caso de interrupciones vectorizadas (en otros procesadores)
•
La dirección a la que se transfiere el control está determinada por la causa de la excepción
Programa
Interrupción
Rutina de servicio
de la interrupción
Salto a rutina de servicio
Retorno de la rutina de servicio
Diseño y control de un camino de datos multiciclo
39
Implementación de excepciones en MIPS
•
Excepciones a implementar
– Desbordamiento aritmético
– Instrucción ilegal o no definida
•
Registros adicionales requeridos
– EPC: Registro de 32 bits para guardar la dirección de la instrucción causante de la
excepción
– CAUSE: Registro de 32 bits para registrar la causa de la excepción. Utilizaremos sólo
el bit menos significativo
• bit 0 = 0 -> Instrucción ilegal
• bit 0 = 1 -> Desbordamiento aritmético
•
Señales de control adicionales
–
–
–
–
Intcause (0: instr. ilegal ; 1: desbordamiento)
CauseWrite (1: escritura en el registro CAUSE ; 0: no escribe)
EPCWrite (1: escritura en el registro EPC ; 0: no escribe)
Constante: C000 0000 0000 0000 (dirección a donde se transfiere el control cada
vez que se interrumpe)
Diseño y control de un camino de datos multiciclo
40
Diagrama de estados del camino de datos
multiciclo con excepciones
Instruction decode/
Register fetch
1
Instruction fetch
0
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Memory address
computation
2
6
(Op = 'LW')
8
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
Memory
access
Memory
access
5
MemRead
IorD = 1
Branch
completion
Execution
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 00
3
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
R-type completion
11
RegDst = 1
RegWrite
MemtoReg = 0
Overflow
Jump
completion
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
7
MemWrite
IorD = 1
(Op = 'J')
Start
PCWrite
PCSource = 10
IntCause = 1
CauseWrite
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
10
IntCause = 0
CauseWrite
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
Write-back step
4
Overflow
RegWrite
MemtoReg = 1
RegDst = 0
Diseño y control de un camino de datos multiciclo
41
Camino de datos multiciclo con soporte de
excepciones
CauseWrite
IntCause
EPCWrite
PCSource
ALUOp
PCWriteCond
PCWrite
IorD
Outputs
MemRead
MemWrite
ALUSrcB
ALUSrcA
Control
MemtoReg
IRWrite
RegWrite
Op
[5– 0]
RegDst
0
26
Instruction [25– 0]
PC
0
M
u
x
1
Shift
left 2
Instruction
[31-26]
Address
Memory
MemData
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Write
data
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
B
4
Write
data
0
M
u
x
1
Zero
ALU ALU
result
Sign
extend
32
Shift
left 2
3
0
1M
u
2x
3
ALUOut
EPC
0
M
u
x
1
0
1
16
u
x
PC [31-28]
0
M
u
x
1
A
1M
2
CO 00 00 00
Instruction
[25– 21]
Instruction
[15– 0]
28
Jump
address [31-0]
Cause
ALU
control
11
Instruction [5– 0]
10
In tC a us e = 0
C au se W rite
A LU S rcA = 0
A LU S rcB = 0 1
A LU O p = 01
E P C W r ite
P C W rite
P C + + S ou rc e = 1 1
Diseño y control de un camino de datos multiciclo
IntC a u se = 1
C au s eW rite
A LU S rc A = 0
A LU S rc B = 01
A LU O p = 01
E P C W rite
P C W rite
P C S o urc e = 1 1
P C S o urc e = 1 1
T o s tate 0 to b eg in ne x t ins tru ction
42
Descargar

Esto es una prueba