Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
contenidos
1. Introduccin
Importancia del diseo del procesador. Metodologa de diseo de un procesador.
Arquitectura MIPS: formato de la instruccin mquina y repertorio de instrucciones.
1. introduccin
Importancia del diseo del procesador
El rendimiento de un computador est determinado por el tiempo que la CPU tarda
en ejecutar programas:
1. introduccin
Metodologa para el diseo de un procesador
Paso 1: Analizar el repertorio de instrucciones para obtener los requisitos de la ruta de datos
La ruta de datos debe incluir tantos elementos de almacenamiento como registros sean
visibles por el programador. Adems puede tener otros elementos de almacenamiento
transparentes.
La ruta de datos debe incluir tantos tipos de elementos operativos como tipos de
operaciones de clculo se indiquen en el repertorio de instrucciones
El significado de cada instruccin vendr dado por un conjunto de transferencias entre
registros. La ruta de datos debe ser capaz de soportar dichas transferencias.
Paso 2: Establecer la metodologa de temporizacin
Monociclo (CPI = 1): todas las transferencias de entre registros implicadas en una
instruccin se realizan en un nico ciclo de reloj.
Multiciclo (CPI > 1): las transferencias entre registros implicadas en una instruccin ser
reparten entre varios ciclos de reloj.
Paso 3: Seleccionar el conjunto de mdulos (de almacenamiento, operativos e interconexin)
que forman la ruta de datos
Paso 4: Ensamblar la ruta de datos de modo que se cumplan los requisitos impuestos por el
repertorio, localizando los puntos de control
Paso 5: Determinar los valores de los puntos de control analizando las transferencias entre
registros incluidas en cada instruccin.
Paso 6: Disear la lgica de control.
1. introduccin
Arquitectura MIPS: formato de la instruccin mquina de la
Todas las instrucciones del repertorio del MIPS tienen 32 bits de anchura, repartidas
en 3 formatos de instruccin diferentes:
31
Tipo R:
aritmtico-lgicas
Tipo I:
con memoria
salto condicional
Tipo J:
salto incondicional
26
op
6 bits
31
26
op
6 bits
31
26
op
6 bits
21
rs
5 bits
21
rs
5 bits
16
rt
5 bits
16
rt
5 bits
11
rd
5 bits
6
shamt
5 bits
0
funct
6 bits
0
inmediato
16 bits
0
direccin
26 bits
1. introduccin
Arquitectura MIPS: subconjunto del repertorio de instrucciones
Instrucciones con referencia a memoria (formato tipo I):
lw rt, inmed(rs)
sw rt, inmed(rs)
rd rs + rt, PC PC + 4
rd rs - rt , PC PC + 4
rd rs and rt , PC PC + 4
rd rs or rt , PC PC + 4
( si ( rs < rt ) entonces ( rd 1 )
en otro caso ( rd 0 ) ), PC PC+4
Tiempo de ciclo = CKL-to-Q + Camino con retardo mximo + Setup + Clock Skew
( CLK-to-Q + Camino con retardo mnimo - Clock skew ) > Hold
Clk
Setup
Hold
Setup
Hold
Dont Care
.
.
.
.
.
.
.
.
.
.
.
.
32
32
PC
32
+
32
ALUctr
32
3
32
16
Zero
32
ALU
32
32
Extensin
de signo
PCWrite
<< 2
Memoria de instrucciones
Memoria de datos
32 registros de datos: visibles por el programador.
Contador de programa
2 Sumadores: para sumar 4 al PC, y para sumar al PC el valor inmediato de salto.
ALU: capaz de realizar suma, resta, and, or, comparacin de mayora e indicacin de que el
resultado es cero (para realizar la comparacin de igualdad mediante resta)
Extensor de signo: para adaptar el operando inmediato de 16 bits al tamao de palabra.
Desplazador a la derecha: para implementar la multiplicacin por 4.
32
32
ALUctr
000
001
010
110
111
funcin
A and B
A or B
A+B
AB
1 si (A<B),
sino 0
RA
Decodificador
5 a 32
Registro 32
Registro 31
RA
busA
busA
RB
RB
RW
Banco de
registros
Registro 1
....
MUX
Registro 0
RW
0
1
C
Registro 0
D
C
Registro 1
31
32
busB
MUX
busW
busB
Registro 30
RegWr
D
C
Registro 31
D
BusW
Mecanismo de lectura
Mecanismo de escritura
10
MemWrite
ADDR
DR
DW
Memoria
de datos
ADDR
Memoria
de instrucciones
DR
11
ADDR
Memoria de
instrucciones
PC
DR
instruccin
12
RegWrite
ALUCtr
RA
RB
RW
busA
ALU
rt
rd
Banco de
registros
instruccin
3
rs
busB
busW
13
Valor antiguo
Clk-to-Q
Valor nuevo
Valor antiguo
ALUOp
Valor antiguo
RegWrite
Valor antiguo
busA, B
Valor antiguo
busW
Valor antiguo
aqu se escribe
el registro
rt
RB
RW
rd
busW
busA
ALU
cronograma de una
operacin arimtico-lgica
RA
Banco de
registros
instruccin
ALUCtr
rs
busB
14
RegWrite
ALUCtr
MemWrite
ALUSrc
busW
busB
ADDR
16
inmed
DW
32
MemRead
DR
MUX
RW
Extensin
de signo
rd
MUX
MemtoReg
busA
Memoria de
datos
RB
ALU
rt
MUX
RA
Banco de
registros
rs
15
RegWrite
ALUCtr
MemWrite
ALUSrc
RA
busB
ADDR
16
inmed
Memoria de
datos
busW
ALU
RW
Extensin
de signo
rd
MUX
MemtoReg
MUX
RB
Banco de
registros
rt
busA
DR
MUX
rs
DW
32
MemRead
16
<<2
MUX
PCSrc
RegDst
RegWrite
ALUCtr
ALUSrc
Zero
RW
busW
inmed
busB
16
32
ALU
rd
MUX
DR
busA
Extensin
de signo
RB
Banco de
registros
RA
rt
MUX
Memoria de
instrucciones
PC
rs
ADDR
17
<<2
MUX
PCSrc
RegDst
RegWrite
ALUCtr
MemWrite
ALUSrc
Zero
RA
Instruccin [15-0]
busB
ADDR
16
DW
DR
MUX
busW
Memoria de
datos
RW
ALU
Instruccin [15-11]
MUX
DR
MemtoReg
busA
Extensin
de signo
RB
Banco de
registros
Instruccin [20-16]
MUX
Memoria de
instrucciones
PC
Instruccin [25-21]
ADDR
32
MemRead
18
Instruccin and
rd rs and rt, PC PC + 4
RegDest 1, RegWrite 1, ALUsrc 0, ALUctr 000, PCSrc 0, MemWrite 0, MemRead 0, MemtoReg 0
19
6
ALUop
2
Branch
PCSrc
Control
principal
Control de
ALU (local)
ALUctr
op
Zero
20
RegDst
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Zero
busW
Instruccin [5-0]
ADDR
16
Instruccin [15-0]
busB
DW
32
DR
MUX
ALU
RW
MUX
Instruccin [15-11]
busA
Control
de ALU
Extensin
de signo
RB
DR
Banco de
registros
RA
Instruccin [20-16]
MUX
Memoria de
instrucciones
PC
Instruccin [25-21]
ADDR
Memoria de
datos
Instruccin [31-26]
Control
principal
<<2
MUX
21
ALUop ALUctr
00
010
00
010
01
110
11
010
11
110
11
000
11
001
11
111
XXXXXX
100000 (add)
100010 (sub)
000000 (tipo-R) 100100 (and)
100101 (or)
101010 (slt)
Brach
ALUop
1
0
0
1
MemRead
MemWrite
MemtoReg
RegWrite
RegDst
ALUSrc
100011 (lw)
0 1 1
101011 (sw)
X 1 X
000100 (beq)
X 0 X
000000 (tipo-R) 1 0 0
1
0
0
0
0
0
1
0
00
00
01
10
0
1
0
0
ALUop1
ALUctr2
f3
f2
ALUctr
ALUctr1
funct
f1
ALUctr0
f0
op5
op4
op3
op2
op1
op0
Control principal
op
ALUop0
ALUop
funct
tipo-R
Iw
sw
beq
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUop1
ALUop0
22
Clk
PC
Valor antiguo
Clk-to-Q
Valor Nuevo
Tiempo de acceso a la Memoria de Instrucciones
Valor Nuevo
Retardo de la lgica de control
Valor Nuevo
Valor Antiguo
ALUctr
Valor Antiguo
ExtOp
Valor Antiguo
Valor Nuevo
ALUSrc
Valor Antiguo
Valor Nuevo
MemtoReg
Valor Antiguo
Valor Nuevo
RegWr
Valor Antiguo
Valor Nuevo
busA
busB
Addr
busW
Valor Antiguo
aqu se escribe
el registro
Valor Nuevo
Retardo de la ALU
Valor Nuevo
Valor Nuevo
23
PC
mem. instrucin
mem. dato
sw
PC
mem. instrucin
banco reg.
mux
ALU
mem. dato
beq
PC
mem. instrucin
banco reg.
mux
ALU
mux setup
tipo-R
PC
mem. instrucin
banco reg.
mux
ALU
mux setup
mux setup
desperdicio
desperdicio
desperdicio
24
Nuevo Clk
BR( x)
o Memoria
Lg.
comb.
BR( x)
Lg.
comb.
MDR
Lg.
comb.
ALUout
Lg.
comb.
AoB
Lg.
comb.
o Memoria
Ejecucin
(almacenaje)
Busqueda de
operando
IR
Controlador
multiciclo
PC
Controlador
monociclo
Clculo de
DE
Bsqueda de
componentes
de DE
Busqueda de
instrucciones
PC
Temporizacin multiciclo
25
MemWrite
IorD
IRWrite
RegDst
AWrite
ALUSrcA
Control
de ALU
RegWrite
Instruccin [15-11]
DW
busB
busW
1
2
MUX
MDR
BWrite
MDRWrite
MemtoReg
ALUSrcB
<<2
Instruc. [15-0]
Extensin
de signo
MemRead
ALUout
RW
Zero
ALU
RB
0
busA
DR
MUX
IR
Memoria
Instruccin [20-16]
ADDR
Banco de
registros
RA
MUX
Instruccin [25-21]
MUX
0
0
MUX
PC
OutWrite
ALUop
26
MDRWrite
BusA
RegDst
RegWrite
AWrite
PCWrite
Decod.
busA
RA
RB
busB
<<2
Extensin
de signo
DW
Decod.
busB
MemRead
IRWrite
ALUop
Zero
RW
Instruc. [15-0]
PC
ALUout
MUX
Instruccin [15-11]
DR
IR
ADDR
Memoria
busA
ALU
Instruccin [20-16]
Instruccin [25-21]
Banco de
registros
busW
MDR
Control
de ALU
BWrite
ALUop
OutWrite
27
Observaciones: en todas las instrucciones las acciones 1. y 2. son iguales (excepto en lw que no habra
problema en modificarla)
28
Bsqueda
de instruccin
IR Memoria( PC )
PC PC + 4
Decod.
A BR( rs )
B BR( rt )
Ejecucin
op
-R
ipo
= t
op = b
eq
op =
sw
op = lw
7
ALUout A funct B
2
ALUout A + SignExt( inmed )
9
Zero = 0
A -B
Write-back
Acceso a
memoria
Zero = 1
6
3
MDR Memoria( ALUout )
8
BR( rd ) ALUout
4
BR( rt ) MDR
Memoria( ALUout ) B
10
PC PC + 4SignExt( inmed )
29
11
Zero
Lgica combinacional
de control
op
a
el s
o d ato
tad e d
s
E ta d
ru
IR
Registro
estado
4
AWrite
OutWrite
MDRWrite
IRWrite
PCWrite
BWrite
ALUSrcA
ALUSrcB
ALUOp
MemWrite
MemRead
IorD
MemtoReg
RegDest
RegWrite
del
ado or
Est trolad
n
co
30
RegWrite
RegDest
MemtoReg
000100 (beq)
MDRWrite
0001
IorD
0111
MemRead
0101
00 (add)
MemWrite
000000 (tipo-R)
01
OutWrite
101011 (sw)
0001
ALUOp
0001
ALUScrB
0010
ALUSrcA
PCWrite
0
BWrite
IRWrite
0
100011 (lw)
AWrite
Estado
siguiente
Zero
XXXXXX
0001
0000
0001
op
Estado
actual
1001
0010
XXXXXX
0011
0011
XXXXXX
0100
0100
XXXXXX
0000
0101
XXXXXX
0110
0110
XXXXXX
0000
0111
XXXXXX
1000
1000
XXXXXX
0000
1001
XXXXXX
0000
0
00
01 (sub)
1001
XXXXXX
1010
1010
XXXXXX
0000
11
00 (add)
10
10
00
00 (add)
00 (add)
11 (funct)
0
1
0
1
1
0
0
0
0
31
s3
Lgica discreta:
21 funciones de conmutacin
11 variables diferentes
1 PLA
11 entradas
21 salidas
15 trminos producto
1 ROM (~42 Kbits):
11 bits de direccin (211 palabras)
palabras de 21 bits
2 ROM (~10 Kbits)
ROM de control:
4 bits de direccin (24 palabras)
palabra de 17 bits
ROM de siguiente estado:
11 bits de direccin (211 palabras)
palabras de 4 bits
s1
s2
s0
op5
op4
op3
op2
op1
op0
zero
ns3
ns2
ns1
ns0
IRWrite
PCWrite
AWrite
BWrite
ALUSrcA
ALUSrcB1
ALUSrcB0
ALUOp1
ALUOp0
OutWrite
MemWrite
MemRead
IorD
MRDWrite
MemtoReg
RegDest
RegWrite
32
lw
lw
lw
lw
lw $t2, 0($t3)
lw $t3, 4($t3)
beq $t2, $t3, Label
add $t5, $t2, $t3
sw $t5, 8($t3)
beq
add
beq
sw
add
Operacin
tipo-R
lw
st
beq (salta)
beq (no salta)
diferencia
sw
Frecuencia
50%
20%
10%
2.5%
17.5%
Ciclos
4
5
4
4
3
CPI
2.0
1.0
.4
.1
0.53
4.03
33
7. control microprogramado
Comparacin de las alternativas de implementacin de la lgica de control
El diseo con lgica discreta o PLA:
No es sistemtico
Una vez diseado es inflexible: un error o modificacin requieren el rediseo completo de
la lgica de control
Una mayor complejidad del repertorio se traduce en un mayor complejidad del diseo
34
CPU
Subsistema
de memoria
7. control microprogramado
Programa de usuario:
formado por instrucciones
puede cambiar
SUB
ADD
AND
.
.
.
ruta de datos
controlador
35
7. control microprogramado
Nomenclatura
-rdenes: conjunto de seales de control que gobiernan las transferencias entre
registros que realiza la ruta de datos.
-instruccin: palabra de control almacenada. Incluye una coleccin de bits que
indican las -rdenes que se realizan en un ciclo de reloj
formato de -instruccin: distribucin, codificacin y tamao de cada una de las rdenes dentro de una -instruccin.
Formato horizontal: cada bit de la -instruccin est asociado a un punto de control de la
ruta de datos
Formato vertical: definir todas las -instrucciones diferentes y codificarlas con el menor
nmero de bits posibles. Requieren de un decodificador complejo que a veces se resuelve
mediante nano-programacin
Formato vertical por campos: compactar el formato de la microinstruccin para cada
clase de -operacin, y decodificarla localmente para generar los valores de las seales de
control
36
7. control microprogramado
-secuenciador
0
1
2
3
-PC
MUX
tabla de
-saltos
Memoria de
-programa
4
seq
op
Est
a
ruta do de
la
de
dat
os
IR
AWrite
OutWrite
MDRWrite
IRWrite
PCWrite
BWrite
ALUSrcA
ALUSrcB
ALUOp
MemWrite
MemRead
IorD
MemtoReg
RegDest
RegWrite
Zero
Controlador microprogramado
con formato de -instruccin horizontal
37
7. control microprogramado
tipo-R
sw
beq
0011
00 (inc)
0100
01 (cero)
0101
00 (inc)
0110
01 (cero)
0111
00 (inc)
1000
01 (cero)
1001
11 (cond)
00
1010
01 (cero)
11
10
100011 (lw)
0010
101011 (sw)
0101
000000 (tipo-R)
0111
000100 (beq)
1001
01 (sub)
00 (add)
00 (add)
10
00 (add)
00
op
00 (add)
1
1
-direccin
de salto
RegWrite
RegDest
00 (inc)
MemtoReg
0010
MDRWrite
IorD
MemRead
10 (saltar)
MemWrite
0001
OutWrite
ALUScrB
BWrite
AWrite
00 (inc)
Seq
0000
Tabla de -saltos
ALUOp
ALUSrcA
01
PCWrite
lw
IRWrite
fetch y
decod.
-direccin
(estado actual)
11 (funct)
0
1
1
0
0
0
0
38
7. control microprogramado
MEM
MEM
WB
0100
01
0101
00
0110
01
0111
00
1000
01
1001
11
00
1010
01
11
01
00
00
10
10
00
5 -op
00
00
11
4 -op
RegWrite
01
RegDest
MemtoReg
00
0
1
MemWrite
00
0011
1
0
ALUOp
0010
0
0
ALUScrB
ALUSrcA
BWrite
10
IorD
ALU
00
0001
WB
MemRead
IR PC B
PCWrite
seq
IRWrite
Formato de -instrucci
-instruccin
seq
0000
-direccin
Solucin:
Detectar seales constantes: Awrite,
OutWrite y MDRWrite pueden ser igual a 1
en todos los estados. Con eso reducimos
en 3 las lneas de control
Agrupar aquellas seales que no se
activan simultneamente y codificarlas
Slo una -operacin por grupo se
especifica en cada -instruccin
Se requieren decodificadores locales para
generar las seales de control
(estado actual)
ALU
0
0
0
0
1
1
0
0
0
0
3 -op
39
7. control microprogramado
RegWrite
00
nop
01
Memoria BR
10
MDR BR
11
nop
ALUSrcA
ALUSrcB
ALUop
-operacin
000
00
11
A funct B ???
00
010
10
00
A + SignExt( IR ) ???
011
11
00
PC + 4SignExt( IR ) ???
100
00
01
A B ???
resto
--
--
nop
MemRead
01
MemWrite
-operacin
MEM
PC + 4 ???
001
00
nop
01
B Memoria( ALUout )
10
Memoria( PC ) ???
11
IorD
ALU
WB
RegDest
MemtoReg
-operacin
40
7. control microprogramado
IRWrite
PCWrite
00
0001
10
0010
00
0011
00
0100
01
0101
0110
ALU
MEM
WB
BWrite
seq
0000
-direccin
(estado actual)
001
10
00
00
00
00
00
11
00
00
10
00
00
00
01
01
00
0111
00
00
00
1000
01
00
01
1001
11
100
00
00
1010
01
011
00
00
1
010
010
000
Alternativas de implementacin
de la lgica de control
FSM con 1 ROM (~42 Kbits):
11 bits de direccin (211 palabras)
palabras de 21 bits
-programado horizontal (~0.3 Kbits)
4 bits de direccin (24 palabras)
palabra de 19 bits
-programado vertical por campos (~0.2 Kbits)
4 bits de direccin (24 palabras)
palabra de 16 bits
41
7. control microprogramado
1
0
1
2
3
-PC
MUX
tabla de
-saltos
Memoria de
-programa
4
seq IR PC B
ALU
MEM
WB
Dec2
Dec3
MemWrite
MemRead
IorD
MemtoReg
RegDest
RegWrite
1 1 1
IR
Controlador microprogramado
con formato de -instruccin vertical por campos
AWrite
OutWrite
MDRWrite
IRWrite
PCWrite
BWrite
Est
a
ruta do de
la
de
dat
os
Dec1
Zero
op
ALUSrcA
ALUSrcB
ALUOp