Sie sind auf Seite 1von 53

Diseo de la ruta de datos y la

unidad de control

contenidos
1. Introduccin
2. Diseo de la ruta de datos (monociclo)
3. Diseo del controlador (monociclo)
4. Diseo de la ruta de datos (multiciclo)
5. Diseo del controlador (multiciclo)
6. Estudio comparativo: monociclo vs. multiciclo
7. Microprogramacin
8. Tratamiento de excepciones
9. Introduccin a la segmentacin
10. Diseo de la ruta de datos segmentada
11. Diseo del controlador segmentado
Bibliografa:
Computer organization & design: The hardware/software interface D. Patterson, J. Hennessy,
Morgan Kaufmann
Principios de diseo digital D.D. Gajski, Prentice Hall, 1997

1. introduccin
Importancia del diseo del procesador
El rendimiento de un computador est determinado por el tiempo que la CPU tarda
en ejecutar programas:

tiempo de CPU = (instrucciones por programa) CPI (tiempo de ciclo)


El diseo del procesador determina:
La duracin del ciclo de reloj
Nmero de ciclos de reloj por instruccin, en promedio

Comnmente estos dos factores tienen una relacin inversa:


Procesador monociclo
1 ciclo por instruccin
Tiempo de ciclo largo
Procesador multiciclo
Varios ciclos por instruccin
Tiempo de ciclo corto

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 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 se
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
Todas las instrucciones del repertorio del MIPS tienen 32 bits de anchura, repartidas
en 3 formatos de instruccin diferentes:
26

21

16

op
6 bits
Tipo I:
31
26
Con memoria
op
Aritmticas (inmediato)
Salto condicional
6 bits
31
26
Tipo J:
op
Salto incondicional
6 bits

rs
5 bits
21
rs
5 bits

rt
5 bits
16
rt
5 bits

Tipo R:

Aritmtico-lgicas

31

11
rd
5 bits

6
desp
5 bits

0
funct
6 bits
0

inmediato
16 bits
0
direccin
26 bits

El significado de los campos es:


op: identificador de instruccin
rs, rt, rd: identificadores de los registros fuentes y destino
desp: cantidad a desplazar (en operaciones de desplazamiento)
funct: selecciona la operacin aritmtica a realizar
inmediato: operando inmediato o desplazamiento en direccionamiento a registro-base
direccin: direccin destino del salto

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)

rt Memoria( rs + SignExt( inmed ) ) , PC PC + 4


Memoria( rs + SignExt( inmed ) ) rt , PC PC + 4

Instrucciones aritmtico-lgicas con operandos en registros (formato tipo R)


add rd, rs, rt
sub rd, rs, rt
and rd, rs, rt
or rd, rs, rt
slt rd, rs, rt

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

Instrucciones de salto condicional (formato tipo I)


beq rs, rt, inmed

si ( rs = rt ) entonces ( PC PC + 4 + 4SignExp( inmed ) )


en otro caso PC PC + 4

1. El ciclo de instruccin comienza buscando la instruccin en memoria (fetch)


instruccin Memoria( PC )

2. En funcin del tipo de instruccin se realiza una de las anteriores operaciones


3. Se vuelve a comenzar

2. diseo de la ruta de datos (monociclo)


Temporizacin monociclo
Ejecucin tpica (de una instruccin)
Todos los registros se cargan simultneamente (de modo selectivo)
Todos los valores se propagan a travs de las redes combinacionales hasta estabilizarse
en las entradas de los registros
Se repite indefinidamente el proceso
Todos los elementos de almacenamiento estn sincronizados al mismo flanco de reloj:
Tiempo de ciclo = CLK-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

.
.
.

.
.
.

.
.
.

.
.
.

2. diseo de la ruta de datos (monociclo)


Componentes de la ruta de datos
Para implementar el subconjunto del repertorio del MIPS en una implementacin
monociclo se requieren:

32

32

32
16

Zero

32
ALU

32
PC

32

32

ALUctr

32

Extensin
de signo

PCWrite

32

<< 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 izquierda: 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

2. diseo de la ruta de datos (monociclo)


Componentes de la ruta de datos (cont.)
Los 32 registros se almacenan en un banco de registros. Dado que en las
instrucciones de tipo R, se requiere un acceso simultneo a 3 registros:
2 salidas de datos de 32 bits
1 entradas de datos de 32 bits
3 entradas de 5 bits para la identificacin de los registros
1 entrada de control para habilitar la escritura sobre uno de los registros
1 puerto de reloj (slo determinante durante las operaciones de escritura, las de lectura son
combinacionales)

busA

RA
RB

RB

RW

busA
Banco de
registros

Registro 32
Registro 31

MUX

Registro 0
Registro 1
....

RW

Decodificador
5 a 32

RegWr

RA

0
1

C
Registro 0
D
C
Registro 1

31

32

busB

MUX

busB

busW

Registro 30

RegWr

D
C

BusW
Mecanismo de lectura

Mecanismo de escritura

Registro 31

10

2. diseo de la ruta de datos (monociclo)


Componentes de la ruta de datos (cont.)
La memoria tendr un comportamiento idealizado.
Integrada dentro de la CPU.
Direccionable por bytes, pero capaz de aceptar/ofrecer 4 bytes por acceso
1 entrada de direccin
1 salida de datos de 32 bits
1 entrada de datos de 32 bits (slo en la de datos)
Se supondr que se comporta temporalmente como el banco de registros (sncronamente)
y que tiene un tiempo de acceso menor que el tiempo de ciclo
Se supondr dividida en dos para poder hacer dos accesos a memoria en el mismo ciclo:
Memoria de instrucciones
Memoria de datos

MemWrite
ADDR
DR
DW

Memoria
de datos

ADDR

Memoria
de instrucciones

1 entrada de control, MemWrite para seleccionar la operacin de lectura/escritura


sobre la memoria de datos

DR

11

2. diseo de la ruta de datos (monociclo)


Ensamblaje de la ruta de datos
La bsqueda de instrucciones implica:
Leer la instruccin ubicada en la direccin de la memoria de instrucciones indicada por
el contador de programa.

La ejecucin secuencial de programas implica:

Actualizar el contador de programa para que apunte a la siguiente instruccin (sumando


4 por ser una memoria direccionable por bytes y una arquitectura con tamao de palabra
de 32 bits)

ADDR

Memoria de
instrucciones

PC

DR

instruccin

12

2. diseo de la ruta de datos (monociclo)


Ensamblaje de la ruta de datos (cont.)
Las instrucciones aritmtico lgicas (tipo-R) implican:
BR(rd) BR(rs) funct BR(rt)
Leer dos registros cuyos identificadores se ubican en los campos rs y rt de la instruccin:
Operar sobre ellos segn el contenido del campo de cdigo de operacin aritmtica (funct)
de la instruccin
Almacenar el resultado en otro registro cuyo identificador se localiza en el campo rd de la
instruccin

RegWrite

3
RA

rt

RB

rd

RW
busW

busA

ALU

rs

Banco de
registros

instruccin

ALUCtr

busB

13

2. diseo de la ruta de datos (monociclo)


Clk
PC

Valor antiguo

Clk-to-Q
Valor nuevo

Rs, Rt, Rd,


Op, Func

Valor antiguo

ALUCtr

Valor antiguo

RegWrite

Valor antiguo

busA, busB
busW

Tiempo de acceso a memoria de instrucciones


Valor Nuevo
Retardo de la lgica de control
Valor nuevo
Valor nuevo
Tiempo de acceso al banco de registros
Valor nuevo

Valor antiguo

Retardo de la ALU
Valor nuevo

Valor antiguo
RegWrite

RA

rt

RB

rd

RW
busW

3
busA
ALU

rs

Banco de
registros

cronograma de una
operacin arimtico-lgica

instruccin

ALUCtr

busB

aqu se escribe
el registro

14

2. diseo de la ruta de datos (monociclo)


Ensamblaje de la ruta de datos (cont.)
La instruccin de carga (lw) implica:
BR(rt) Memoria( BR(rs) + SignExt( inmed ) )
Calcular la direccin efectiva de memoria:
Leyendo el registro base cuyo identificador se ubica en el campo rs de la instruccin
Obteniendo un desplazamiento de 32 bits a partir de la extensin del campo de
operando inmediato (inmed) de la instruccin
Sumando base y desplazamiento.
Leer dato ubicado en la memoria de datos cuya direccin es la anteriormente calculada
Almacenar el dato ledo de memoria en el registro cuyo identificador se especifica en el
campo rt de la instruccin
RegWrite

RegDst

ALUCtr
RA

ADDR

DW
32

MemRead

DR

MUX

busW

16

inmed

Memoria de
datos

busB

Extensin
de signo

MUX
rd

RW

MUX

RB
0

Banco de
registros

rt

MemtoReg
busA

ALU

rs

MemWrite

ALUSrc

15

2. diseo de la ruta de datos (monociclo)


Ensamblaje de la ruta de datos (cont.)
La instruccin de almacenaje (sw) implica:
Memoria( BR(rs) + SignExt( inmed ) ) BR(rt)
Leer el dato almacenado en el registro cuyo identificador se especifica en el campo rt de la
instruccin
Calcular la direccin efectiva de memoria:
Leyendo el registro base cuyo identificador se ubica en el campo rs de la instruccin
Obteniendo un desplazamiento de 32 bits a partir de la extensin del campo de
operando inmediato (inmed) de la instruccin
Sumando base y desplazamiento.
Almacenar el dato ledo en la memoria de datos en la direccin anteriormente calculada
RegWrite

RegDst

ALUCtr
RA

busW

16

inmed

ADDR

DW
32

MemRead

DR

MUX

Memoria de
datos

busB

Extensin
de signo

MUX
rd

RW

MUX

RB
0

Banco de
registros

rt

MemtoReg
busA

ALU

rs

MemWrite

ALUSrc

16

2. diseo de la ruta de datos (monociclo)


Ensamblaje de la ruta de datos (cont.)
La instruccin de salto condicional (beq) implica

si ( BR(rs) = BR(rt) ) entonces ( PC PC + 4SignExt( inmed ) )


Leer dos registros cuyos identificadores se ubican en los campos rs y rt de la instruccin:
Comparar la igualdad de sus contenidos y en funcin del resultado:
No hacer nada o
Sumar al contador del programa un desplazamiento de 32 bits obtenido a partir de la
extensin del campo de operando inmediato (inmed) de la instruccin

<<2

MUX

PCSrc
RegDst

RegWrite
ALUCtr

rd

inmed

RW

busB

busW

16

32

ALU

Zero

busA

MUX

DR

RB

Extensin
de signo

rt

Banco de
registros

ADDR

ALUSrc

RA

MUX

Memoria de
instrucciones

PC

rs

17

2. diseo de la ruta de datos (monociclo)

<<2

MUX

PCSrc
RegWrite

RegDst

ALUCtr

Ruta de datos monociclo

ADDR

16

DW
32

MemRead

La ejecucin monociclo ha obligado a:


No usar ms de una vez por instruccin cada recurso. Duplicarlo si es necesario
Memoria de instrucciones y datos separadas
Aadir multiplexores cuando un valor pueda provenir de varias fuentes

DR

MUX

ALU

busW

Instruccin [15-0]

MemtoReg

Memoria de
datos

busB

Extensin
de signo

Instruccin [15-11]

RW

Zero

busA

MUX

Banco de
registros

RB

DR

MemWrite

ALUSrc

RA

Instruccin [20-16]

MUX

ADDR

Memoria de
instrucciones

PC

Instruccin [25-21]

18

3. diseo del controlador (monociclo)


Determinacin de los valores de los puntos de control
La tarea del controlador es:
Seleccionar las operaciones a realizar por los mdulos multifuncin (ALU, read/write, ...)
Controlar el flujo de datos, activando la entrada de seleccin de los multiplexores y la seal de
carga de los registros
Instruccin de carga (lw)
rt Memoria( rs + SignExt( inmed ) ), PC PC + 4
RegDest 0, RegWrite 1, ALUsrc 1, ALUctr 010, PCSrc 0, MemWrite 0, MemRead 1, MemtoReg 1

Instruccin de almacenaje (sw)


Memoria( rs + SignExt( inmed ) ) rs, PC PC + 4
RegDest X, RegWrite 0, ALUsrc 1, ALUctr 010, PCSrc 0, MemWrite 1, MemRead 0, MemtoReg X

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

Instruccin de salto condicional (beq)


si ( rs = rt ) entonces ( PC PC + 4 + 4SignExp( inmed ) ) en otro caso PC PC + 4
RegDest X, RegWrite 0, ALUsrc 0, ALUctr 110, PCSrc Zero, MemWrite 0, MemRead 0, MemtoReg X

19

3. diseo del controlador (monociclo)


Control global vs. Control local
Todas las operaciones aritmticas comparten el mismo cdigo de operacin y durante su ejecucin todas
las seales generales de la ruta de datos son iguales. Por ello, utilizaremos:
Un control principal para decodificar el campo de cdigo de operacin (op) y configurar
globalmente la ruta de datos
Un control local a la ALU que decodifique el campo de operacin aritmtica (funct) y seleccione la
operacin que debe realizar la ALU
Adicionalmente en operaciones no aritmticas (lw, sw y beq) el control principal puede ordenar
alguna operacin a la ALU para calcular las DE o realizar comparaciones.
Utilizaremos la seal intermedia ALUop cuyo valor ser:
00 en operaciones con acceso a memoria
01 en operaciones de salto
11 en operaciones aritmticas
Del mismo modo para controlar qu direccin debe cargar el PC se utilizar una seal intermedia Branch
(activada durante la instruccin beq) a la que se har la y-lgica con la seal Zero que genera la ALU.

ALUop
2
Branch

Control
principal

PCSrc

Control de
ALU (local)

ALUctr

funct

op

Zero

20

3. diseo del controlador (monociclo)

Instruccin [15-11]

Instruccin [15-0]

RW

busW

ADDR

16

Instruccin [5-0]

Ruta de datos monociclo + controlador

busB

ALU

Extensin
de signo

DR

busA

MUX

RB

DW
32

Control
de ALU

Instruccin [20-16]

Banco de
registros

RA

MUX

ADDR

Memoria de
instrucciones

PC

Instruccin [25-21]

DR

MUX

Instruccin [31-26]

Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Zero

Control
principal

<<2

RegDst

Memoria de
datos

MUX

21

3. diseo del controlador (monociclo)


Control de la ALU
op
100011 (lw)
101011 (sw)
000100 (beq)

funct

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)

RegDst

ALUSrc

MemtoReg

RegWrite

MemRead

MemWrite

Brach

ALUop

100011 (lw)
101011 (sw)
000100 (beq)
000000 (tipo-R)

ALUop1
ALUctr2

f3
funct

f2

ALUctr

ALUctr1

f1

ALUctr0

f0
op5
op4
op3
op2
op1
op0

Control principal
op

ALUop0

ALUop

0
X
X
1

1
1
0
0

1
X
X
0

1
0
0
1

1
0
0
0

0
1
0
0

0
0
1
0

00
00
01
11

tipo-R

Iw

sw

beq

RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUop1
ALUop0

22

4. diseo de la ruta de datos (monociclo)


cronograma completo de la ejecucin de la instruccin lw

Clk
PC

Valor antiguo

Clk-to-Q
Valor Nuevo
Tiempo de acceso a la Memoria de Instrucciones
Valor Nuevo

Rs, Rt, Rd,


Op, Func

Valor Antiguo

ALUOp

Valor Antiguo

MemRead

Valor Antiguo

Valor Nuevo

ALUSrc

Valor Antiguo

Valor Nuevo

MemtoReg

Valor Antiguo

Valor Nuevo

RegWrite

Valor Antiguo

Valor Nuevo
Tiempo de acceso al Banco de Registros
Valor Nuevo

busA
Ent_B_ALU
Addr
busW

Valor Antiguo
Retardo del MUX
Valor Antiguo

Retardo de la lgica de control


Valor Nuevo

Valor Antiguo
Tiempo de acceso a la Memoria de Datos + MUX
Valor Antiguo

aqu se escribe
el registro

Valor Nuevo
Retardo de la ALU
Valor Nuevo
Valor Nuevo

23

4. diseo de la ruta de datos (multiciclo)


lw

PC

sw

PC mem. instruccin

mem. instruccin banco reg. mux


ALU
Camino crtico

mem. dato

banco reg.

mux

ALU

mux

ALU

mux setup

mux

ALU

mux setup

beq

PC

mem. instruccin banco reg.

tipo-R

PC

mem. instruccin banco reg.

mem. dato

mux setup

desperdicio

desperdicio
desperdicio

Problema: en un controlador monociclo:


El reloj debe tener igual periodo que la instruccin ms lenta
Dado que dicho periodo es fijo, en las instrucciones rpidas se desperdicia tiempo.
En repertorios reales, existen instrucciones muy largas: aritmtica en punto flotante, modos
de direccionamiento complejos, etc.
No se puede reusar hardware
Si en una instruccin se necesitara hacer 4 sumas (resolver los 3 modos de direccionamiento
de los operandos y sumarlos) se necesitaran 4 sumadores.
Solucin: dividir la ejecucin de la instruccin en varios ciclos ms pequeos:
Cada instruccin usar el nmero de ciclos que necesite.
Un mismo elemento hardware puede ser utilizado varias veces en la ejecucin de una instruccin
si se hace en ciclos diferentes.
Se requieren elementos adicionales para almacenar valores desde el ciclo en que se calculan
hasta el ciclo en que se usan.

24

4. diseo de la ruta de datos (multiciclo)


Clk
Tiempo de acceso a la Memoria de Instrucciones
Retardo de la ALU

Nuevo Clk

o Memoria

Lg.
comb.

o Memoria

Lg.
comb.

BR( x)

Lg.
comb.

BR( x)

Ejecucin
(almacenaje)

Busqueda de
operando

MDR

Lg.
comb.

ALUout

Lg.
comb.

AoB

Controlador
multiciclo

Bsqueda de
componentes
de DE

Lgica combinacional acclica

IR

Controlador
monociclo

PC

Busqueda de
instrucciones

Clculo de
DE

Tiempo de acceso a la Memoria de Datos

PC

Temporizacin monociclo

Tiempo de acceso al Banco de Registros

25

4. diseo de la ruta de datos (multiciclo)


MemWrite

IorD

IRWrite

RegDst

AWrite

ALUSrcA

Control
de ALU

RegWrite

busB

busW

1
2

Ruta de datos multiciclo

MemtoReg

BWrite

<<2

Extensin
de signo

Instruc. [15-0]
MDRWrite

MUX

MDR

MemRead

Zero

ALU

Instruccin [15-11]

DW

RW

busA

Banco de
registros

DR

RB

MUX

Instruccin [20-16]

IR

Memoria

ADDR

RA

MUX

Instruccin [25-21]

MUX

MUX

PC

OutWrite

ALUop

ALUSrcB

ALUout

PCWrite

26

4. diseo de la ruta de datos (multiciclo)


MemWrite

MDRWrite

BusA

RegDst

RegWrite

AWrite

PCWrite

Decod.
busA

RA
RB

DW

A
4

Decod.
busB

MemRead

IRWrite

BusB

Zero

ALU

<<2

Instruc. [15-0]

busB

RW

Extensin
de signo

DR

MUX

Instruccin [15-11]

IR

ADDR

Memoria

PC

ALUout

Instruccin [20-16]

busA

Instruccin [25-21]

Banco de
registros

busW

MDR

Control
de ALU

BWrite

ALUop

OutWrite

Ruta de datos multiciclo con buses

Cada bus slo puede ser usado para escribir desde una fuente (aunque puede ser ledo desde varios destinos)

27

5. diseo del controlador (multiciclo)


Instruccin de carga (lw)

Instruccin de almacenaje (sw)

Transferencias entre registros lgicas


BR( rt ) Memoria( BR( rs ) + SignExt( inmed ) ),
PC PC + 4
Transferencias entre registros fsicas
1. IR Memoria( PC ), PC PC + 4
2. A BR( rs )
3. ALUout A + SignExt( inmed )
4. MDR Memoria( ALUout )
5. BR( rt ) MDR

Transferencias entre registros lgicas


Memoria( BR( rs ) + SignExt( inmed ) ) BR( rt ),
PC PC + 4
Transferencias entre registros fsicas
1. IR Memoria( PC ), PC PC + 4
2. A BR( rs ), B BR( rt )
3. ALUout A + SignExt( inmed )
4. Memoria( ALUout ) B

Instruccin aritmtica (tipo-R)

Instruccin de salto condicional (beq)

Transferencias entre registros lgicas


BR( rd ) BR( rs ) funct BR( rt ), PC PC + 4
Transferencias entre registros fsicas
1. IR Memoria( PC ), PC PC + 4
2. A BR( rs ), B BR( rt )
3. ALUout A funct B
4. BR( rd ) ALUout

Transferencias entre registros lgicas


si ( BR( rs ) = BR( rt ) )
entonces PC PC + 4 + 4SignExt( inmed )
sino PC PC + 4
Transferencias entre registros fsicas
1. IR Memoria( PC ), PC PC + 4
2. A BR( rs ), B BR( rt ),
3. A - B
4. si Zero entonces PC PC + 4SignExt( inmed )

Observaciones: en todas las instrucciones las acciones 1. y 2. son iguales (excepto en lw, pero no
habra problema en modificarla)

28

Bsqueda
de instruccin

IR Memoria( PC )
PC PC + 4

Decod.

5. diseo del controlador (multiciclo)

A BR( rs )
B BR( rt )

Ejecucin

op

-R
i po
t

Diagrama de estados del controlador multiciclo

1
op = b
op =

op = lw

7
ALUout A funct B

eq

sw

2
ALUout A + SignExt( inmed )

ALUout A + SignExt( inmed )

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

5. diseo del controlador (multiciclo)


El controlador como FSM (finite state machine)
1. Se traducen las transferencias entre registros como conjuntos de activaciones de los puntos de control de la ruta de datos
2. Se codifican los estados
3. Mediante tablas de verdad se describen:
las transiciones de estado en funcin del cdigo de operacin y del estado de la ruta de datos
el valor de las seales de control en funcin del estado (controlador tipo Moore) y adicionalmente en funcin del
estado de la ruta de datos (controlador tipo Mealy).
4. La estructura del controlador estar formada por:
Registro de estado
Conjunto de lgica combinacional de control que implementa las anteriores tablas

11

Lgica combinacional
de control

op

Zero
6

IR

a
el s
d
o ato
d
d
a
t
Es ta de
ru

el
o d or
d
a
Est trolad
con

AWrite
OutWrite
MDRWrite
IRWrite
PCWrite
BWrite
ALUSrcA
ALUSrcB
ALUOp
MemWrite
MemRead
IorD
MemtoReg
RegDest
RegWrite

Registro
estado

30

0010

0001

101011 (sw)

0101

0001

000000 (tipo-R)

0111

0001

000100 (beq)

1001

00 (add)

MemtoReg

RegWrite

RegDest

MDRWrite

0011

0011

XXXXXX

0100

0100

XXXXXX

0000

0101

XXXXXX

0110

0110

XXXXXX

0000

0111

XXXXXX

1000

1000

XXXXXX

0000

1001

XXXXXX

0000

1001

XXXXXX

1010

00

01 (sub)

1010

XXXXXX

0000

11

00 (add)

10

00

00 (add)

11 (funct)

XXXXXX

00 (add)

0010

10

IorD

100011 (lw)

01

MemRead

0001

OutWrite

PCWrite
1

ALUOp

IRWrite
1

ALUScrB

Estado
siguiente
0001

ALUSrcA

Zero
X

BWrite

op
XXXXXX

AWrite

Estado
actual
0000

MemWrite

Tabla de verdad del controlador

5. diseo del controlador (multiciclo)

0
1

1
0

0
0
0

31

5. diseo del controlador (multiciclo)


Alternativas de implementacin
de la lgica de control

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

Ventajas de la lgica discreta:


velocidad y coste
Ventajas de la lgica almacenada:
facilidad de diseo
adaptabilidad

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

6. Comparacin: monociclo vs. multiciclo


Asumir que el tiempo de ciclo en el
procesador multiciclo es 5 veces menor
que el tiempo de ciclo en el procesador
monociclo

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

106 instrucciones tardan en ejecutarse:


tmulti = 106 CPImulti tmulti = 106 4.03 tmulti
tmono = 106 CPImono tmono = 106 1 5 tmulti
tmulti / tmono = 4.03 / 5 = 0.8
los programas tardan un 20% menos en
ejecutarse en el computador multiciclo

add

beq

#asumir que no se salta

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

El diseo con lgica almacenada:


Es sistemtico: el mtodo de diseo es similar a los mtodos de programacin:
traducir cada instruccin en una secuencia de palabras de control que se almacenan
en la memoria de control.
Es flexible: para modificar o corregir una accin de control basta con modificar el
contenido de una palabra de la memoria (ROM o PROM) sin modificar la estructura del
controlador
Mayor complejidad de las instrucciones slo implica mayor tamao de la memoria

Adems en cualquiera de ambas alternativas:


Mucha de la lgica de control est dedicada a especificar el estado siguiente, siendo en
realidad gran parte de ese secuenciamiento consecutivo:
En sistemas reales el nmero de estados es grande
Muchas de las palabras de control estn repetidas, luego existe lgica desperdiciada
Por ejemplo, clculo de D.E., acceso a memorias, etc..

34

CPU

Subsistema
de memoria

7. control microprogramado
SUB
ADD
AND

ruta de datos
controlador

Programa de usuario:
formado por instrucciones
puede cambiar

.
.
.
Cada tipo de instruccin
tiene asociado un
-programa diferente

-programa de la instruccin AND:


-rutina de bsqueda de instruccin
-rutina de clculo de DE
-rutina de bsqueda de operandos
-rutina de clculo
-rutina de almacenaje de resultado(s)
-programa de control:
formado por -instrucciones
no puede cambiarse (pero no sera
dificil hacerlo)

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

-rutina: secuencia de -instrucciones encargadas de implementar una instruccin


mquina o una porcin de ella (por ejemplo, clculo de la DE de memoria)
memoria de -programa: memoria ROM (o PROM) donde se almacenan cada una
de las -rutinas que implementan el repertorio de instrucciones de un computador
-secuenciador: mdulo del controlador encargado de direccionar adecuadamente
la memoria de -programa para ejecutar las -instrucciones que forman una
instruccin mquina.

36

7. control microprogramado
-secuenciador

-PC

0
1
2
3

MUX

tabla de
-saltos

Memoria de
-programa
4
seq

op
Est
a
ruta do de
l
de
dat a
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
-direccin
de salto

MemtoReg

000100 (beq)

1001

00 (inc)

0110

01 (cero)

0111

00 (inc)

1000

01 (cero)

1001

11 (cond)

00

01 (sub)

1010

01 (cero)

11

00 (add)

00 (inc)

0011

00 (inc)

0100

01 (cero)

0101

Seq

0010

1
1

10

10

00

00 (add)

00 (add)

11 (funct)

RegWrite

RegDest

00 (add)

MDRWrite

IorD

0111

10 (saltar)

01

OutWrite

000000 (tipo-R)

0001

ALUOp

ALUScrB

ALUSrcA

00 (inc)

BWrite

0000

AWrite

MemRead

beq

MemWrite

tipo-R

sw

PCWrite

lw

Tabla de -saltos

IRWrite

fetch y
decod.

-direccin

(estado actual)

Contenido de la memoria de -programa

op

100011 (lw)

0010

101011 (sw)

0101

0
1

1
0

0
0
0

Problemas del formato horizontal:


-instrucciones muy largas: grandes memorias de -programa
la mayor parte de los bits de la -instruccin estn a 0, o no son relevantes

38

7. control microprogramado
MEM

Formato de -instruccin
seq

IR PC B

ALU

MEM

WB

0011

00

0100

01

0101

00

RegWrite

00

01

RegDest

0010

MemtoReg

IorD

MemRead

10

MemWrite

0001

ALUOp

ALUScrB

PCWrite

WB

ALUSrcA

IRWrite

00

BWrite

seq

Mtodo de agrupamiento: Se suelen agrupar


aquellas seales que tienen fines similares:
Control de la ALU
Control de la Memoria
Control del banco de registros

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

00

0110

01

0111

00

1000

01

1001

11

00

01

1010

01

11

00

10

10

00

5 -op

00

00

11

4 -op

0
1

1
0

0
0
0

3 -op

39

7. control microprogramado

01

00

PC + 4 ???

010

10

00

A + SignExt( IR ) ???

011

11

00

PC + 4SignExt( IR ) ???

100

00

01

A B ???

resto

--

--

nop

RegWrite

001

RegDest

A funct B ???

nop

01

ALUout BR

10

MDR BR

11

nop

IorD

11

MemtoReg

00

MemRead

ALUop

WB
ALUSrcB

000

00

MemWrite

ALUSrcA

-operacin

-operacin

MEM

ALU

Codificacin de los campos de -instruccin

00

nop

01

B Memoria( ALUout )

10

Memoria( PC ) ???

11

Memoria( ALUout ) ???

-operacin

40

7. control microprogramado

IRWrite

PCWrite

00

0001

10

0010

00

0011

00

0100

01

0101

ALU

MEM

WB

BWrite

seq

0000

-direccin

(estado actual)

Contenido de la memoria de -programa

001

10

00

00

00

00

00

11

00

00

10

00

00

00

0110

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 16 bits
-programado vertical por campos (~0.2 Kbits)
4 bits de direccin (24 palabras)
palabra de 12 bits

41

7. control microprogramado
1

-PC

0
1
2
3

MUX

tabla de
-saltos

Memoria de
-programa

4
seq IR PC B

ALU

MEM

WB

Dec2

Dec3
MemtoReg
RegDest
RegWrite

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

MemWrite
MemRead
IorD

1 1 1

op

Dec1

Zero

ALUSrcA
ALUSrcB
ALUOp

42

8. Tratamiento de excepciones
Nomenclatura del MIPS
Excepcin. Cualquier cambio inesperado en el flujo de control.
Interrupcin. Cambio inesperado en flujo de control debido a un evento externo.
Gestin de las excepciones: Instruccin indefinida y overflow aritmtico
Acciones bsicas:
Salvar el contador de programa de la instruccin interrumpida en el registro EPC (exception program counter)
Transferir el control al sistema operativo en alguna direccin especificada.
El S.O. Realizar la accin apropiada, como realizar alguna tarea asociada al overflow o detener la ejecucin del
programa.
Volver a la ejecucin normal del programa en la direccin guardada en EPC.
Hardware aadido:

Registro de estado: Cause register (32 bits) con un campo que indica la causa de la
excepcin:
Bit 0: Instruccin indefinida.
Bit 1: Overflow aritmtico.
Se aaden las seales de control:
EPCwrite. Escribe en EPC. (EPC <= PC 4)
CauseWrite. Escribe en Cause
IntCause. Escribe un 1 sobre el bit apropiado de Cause.
Para dar la direccin de la rutina de tratamiento de excepcin, se aade una entrada
al multiplexor que controla la carga del PC, con la direccin de esta rutina, por ej.
C0000000hex

43

8. Tratamiento de excepciones
0
IR Memoria( PC )
PC PC + 4

11

A BR( rs )
B BR( rt )
op

-R
i po
t

op = b
op =

op = lw

7
ALUout A funct B

EPC PC-4
PC C0000000
Cause 00000001

Op= otras
eq

sw

2
ALUout A + SignExt( inmed )

ALUout A + SignExt( inmed )

No overflow

overflow
EPC PC-4

Zero = 0

A -B
Zero = 1

8
BR( rd ) ALUout

3
MDR Memoria( ALUout )

Memoria( ALUout ) B

12

PC C0000000
Cause 00000010

4
BR( rt ) MDR

10
PC PC + 4SignExt( inmed )

44

9.- Introduccin a la segmentacin


Mejora el rendimiento incrementando el nmero de instrucciones que solapan su ejecucin
Orden de
ejecucin del
programa

Tiempo

Bsqueda
instruccin

Lw $1, 100($0)

Reg

Lw $2, 200($0)

ALU

Acceso
datos

10

12

14

ALU

Acceso
datos

16

18

Reg
Bsqueda
instruccin

8 ns

Reg

Lw $3, 300($0)

Reg
Bsqueda
instruccin

8 ns

8 ns

Orden de
ejecucin del
programa
Lw $1, 100($0)

Lw $2, 200($0)
Lw $3, 300($0)

Tiempo

Bsqueda
instruccin

2 ns

Reg

ALU

Bsqueda
instruccin

2 ns

Reg
Bsqueda
instruccin

2 ns

Acceso
datos
ALU
Reg

2 ns

10

12

14

Reg
Acceso
datos
ALU

2 ns

Reg
Acceso
datos

2 ns

Reg

2 ns

El speed-up ideal es igual al nmero de etapas del pipeline. Es posible?

45

9.- Introduccin a la segmentacin


Qu facilita la segmentacin?
Todas las instrucciones de igual longitud
Pocos formatos de instruccin
Bsqueda de operandos en memoria slo en operaciones de carga y almacenamiento
Qu dificulta la segmentacin?
Conflictos estructurales
Conflictos de datos
Conflictos de control
Gestin de interrupciones
Ejecucin fuera de orden

46

9.- Introduccin a la segmentacin


IF: Bsqueda de instruccin

ID: Decodificacin de instruccin /


lectura del banco de registros

EX: Ejecutar /
Clculo D.E.

MEM:
Acceso a memoria

WB:
Escritura de
registros

MUX

<<2

busW

ADDR

DW
16

32

DR

MUX

ALU

busB

Zero

MUX

RW

Banco de
registros

Memoria de
instrucciones

DR

RB

busA

Memoria de
datos

RA

ADDR

Extensin
de signo

PC

47

10.- Diseo de la ruta de datos segmentada


Necesidad de registros entre etapas
ID: Decodificacin de instruccin /
lectura del banco de registros

IF: Bsqueda de instruccin

EX: Ejecutar /
Clculo D.E.

MEM:
Acceso a memoria

WB:
Escritura de
registros

MUX

EX/MEM

MEM/WB

ID/EX

<<2
0

busW

ADDR

16

Extensin
de signo

DW
32

Esta ruta de datos sirve para cualquier instruccin?

DR

MUX

busB

ALU

RW

Zero

MUX

DR

RB

busA

Memoria de
datos

RA

ADDR

Banco de
registros

Memoria de
instrucciones

PC

IF/ID

48

10.- Diseo de la ruta de datos segmentada


Correccin:

ID: Decodificacin de instruccin /


lectura del banco de registros

IF: Bsqueda de instruccin

EX: Ejecutar /
Clculo D.E.

MEM:
Acceso a memoria

WB:
Escritura de
registros

MUX

IF/ID

MEM/WB

busW

ADDR

DW
16

32

DR

MUX

ALU

busB

Zero

MUX

Banco de
registros

RW

Extensin
de signo

DR

RB

busA

Memoria de
datos

RA

ADDR

Memoria de
instrucciones

EX/MEM

<<2

PC

ID/EX

49

11.- Diseo del controlador segmentado


PCSrc

MUX

IF/ID

ID/EX

EX/MEM

Branch

<<2

MEM/WB

MemWrite

busW

ADDR

32

6
0

MUX

16

RegDst

Control de
ALU

DW

ALUOp

DR

MemRead

MUX

busB

MemtoReg

Zero

Memoria de
datos

ALUSrc

MUX

Banco de
registros

RW

Extensin
de signo

DR

RB

busA

ALU

RA

ADDR

Memoria de
instrucciones

PC

RegWrite

50

3.- Control de la ruta de datos segmentada


Acciones a realizar en cada una de las 5 etapas:
Etapa IF: Bsqueda de la instruccin e incremento del PC
Etapa ID: Decodificacin de la instruccin y bsqueda de operandos en los registros
Etapa EX: Ejecucin
Etapa Mem: Acceso a la memoria de datos
Etapa WB: Escritura en el banco de registros.

Instruccin
Formato-R
Lw
Sw
beq

Lneas de control del estado de


Ejecucin/Clculo de DE
Reg Dst
ALU
ALU
ALU
Op1
Op0
Src
1
1
0
0
0
0
0
1
X
0
0
1
X
0
1
0

Lneas de control del estado


de acceso a memoria
Branch
Mem
Mem
Read
Write
0
0
0
0
1
0
0
0
1
1
0
0

Lneas de control
del estado de WB
Reg
Mem to
Write
Reg
1
0
1
1
0
X
0
X

51

3.- Control de la ruta de datos segmentada


Las seales de control se generan en la U.C. y se van pasando de una etapa a otra como si
fuesen datos.

Instruccin

IF/ID

Control

WB
M

WB

EX

WB

EX/MEM

MEM/WB

ID/EX

52

3.- Control de la ruta de datos segmentada


PCSrc

ID/EX
0

WB

MEM/WB

EX

WB

<<2

ADDR

32

6
0

MUX

16

RegDst

Control de
ALU

DW

DR

MemRead

ALUOp
2

MUX

busW

MemtoReg

MemWrite

Zero

Memoria de
datos

ALU

busB

MUX

RW

Banco de
registros

RB

busA

Extensin
de signo

DR

Branch

ALUSrc

RegWrite

RA

ADDR

Memoria de
instrucciones

PC

Control

MUX

IF/ID

EX/MEM

WB

53

3.- Control de la ruta de datos segmentada


PCSrc

10
Control

MUX

IF/ID

ID/EX
WB 00

000
1100

EX/MEM

001
00
0

EX

WB

<<2

+
0

busW

ADDR

11 Instr[20-16]
1 Instr[15-11]

32

16
6
0

MUX

16

RegDst

Control de
ALU

DW

2090

MemtoReg

Zero

DR

MUX

$6

MemWrite

busB $11

Memoria de
datos

RW

$5

ALU

15

RB

Extensin
de signo

DR

busA $10

Branch

MUX

11

Banco de
registros

RA

ADDR

Memoria de
instrucciones

ALUSrc

RegWrite

10
PC

MEM/WB

00

WB

MemRead

ALUOp
2

31

15