Вы находитесь на странице: 1из 36

Tema 1

La CPU: la unidad de control

Cmo construir la CPU? sistema digital


Bloques elementales Combinacionales:
puertas multiplexores comparadores descodificadores sumadores unidades aritmtico-lgicas memorias
2

Secuenciales sncronos (clk):


biestables registros contadores

Organizacin de la CPU
estructura genrica de un sistema digital

UNIDAD DE CONTROL (UC)

SEALES DE CONTROL

UNIDAD DE PROCESO

informacin

(UP)

informacin externa
3

Estructura genrica de un sistema digital


La Unidad de Control (UC): tema 1 estructura estndar funcionamiento especfico dado por el algoritmo de control La Unidad de Proceso (UP): 1) sistema de aplicacin especfica estructura dependiente de la aplicacin concreta 2) sistema de propsito general: procesador estructura: ruta de datos (data path) registros + Unidad Aritmtico-Lgica: tema 2 Circuitos aritmticos (algoritmos)
4

Un procesador simple: BIRD


42 instrucciones de 32 bits o cdigo de operacin: 6 bits o 4 modos de direccionamiento: inmediato tamao de los datos: 16 bits absoluto tamao de la memoria: 64K x 16 bit directo de registro conjunto de registros de 32 registros: 5 bits para direccionar los registros indexado direccin base de memoria: 16 bits; ndice: contenido de un registro direcciones: 16 bits

16
5

Formato genrico de las instrucciones:

C.O.

Rd/Rf2

Rf1 32

dirVAR/inmed/desp Rf2

Algunas instrucciones de BIRD (1)


Instrucciones aritmticas y lgicas:
Formato
add 001001 6 Rd 5 Rf1 5 Rf2 5

Lenguaje ensamblador

Operacin

add rd,rf1,rf2

rd:= rf1 + rf2

(instrucciones similares: sub, mul, div, or, and, xor)

addi 001010 6 Rd 5 Rf 5 inmediato 16

addi rd,rf,#inmed

rd:= rf + inmed

(instrucciones similares: subi, muli, divi, ori, andi, xori)

mov 000111 6 Rd 5 Rf

mov rd,rf
5 16

rd:= rf

movi 001000 6 Rd 5 inmediato 16

movi rd,#inmed

rd:= inmed

Algunas instrucciones de BIRD (2)


Instrucciones que operan con la memoria:
Formato
ld 000000 6 st 000011 6 ldx 000010 6 stx 000101 6 Rf2 5 Rf1 5 direccin 16 Rd 5 Rf 5 direccin 16 Rf2 5 direccin 16 Rd 5 direccin 16

Lenguaje ensamblador

Operacin

ld rd,VARIABLE

rd:= MEM[direccin]

st rf2,VARIABLE

MEM[direccin]:= rf2

ldx rd,VAR[rf]

rd:= MEM[direccin+rf]

stx rf2,VAR[rf1]

MEM[direccin+rf1]:= rf2

Algunas instrucciones de BIRD (3)


Instrucciones para controlar el flujo de los programas (saltos):
Formato Lenguaje ensamblador Operacin

beq 011010 6 Rf 5 desplazamiento 16

beq rf,etiqueta

if (rf=0) then PC:= PCbeq + desplazamiento

(desplazamiento: distancia entre la instruccin beq y la instruccin indicada por la etiqueta)

Un programa ejemplo
Sumar dos vectores A y B y dejar el resultado en otro vector, C. Todos ellos de 16 elementos. inicialmente
Mem . 2
16

1 ...

...

... 4

...

A+1 ...

B+1 ...

C+1 ...

al finalizar
Mem. 2 1 ... 5 3 ... 0 6 ... 4 8 2 5 ... 1 11

programa para BIRD:


... movi r1, #0 movi r2, #16 sigue: ldx ldx add stx r3, A[r1] r4, B[r1] r5, r4, r3 r5, C[r1]

; inicializa el registro ndice ; 16 componentes cada vector ; lee un elemento del vector A ; lee un elemento del vector B ; suma ambos elementos (deja el resultado en r5) ; guarda el resultado en el elemento correspondiente del vector C ; incrementa r1, para obtener el ndice del siguiente elemento de los vectores ; falta un elemento menos por sumar ; si es r2 = 0, se ha terminado la suma de los dos vectores (salta a fin) ; en caso contrario, sigue con la suma (r0 = 0 salta a sigue) 9

addi r1, r1, #1 subi r2, r2, #1 beq fin: beq ... r2, fin r0, sigue

Componentes de la UP de BIRD
CONJUNTO DE REGISTROS
16 16

CR[@d]:= DATin (ld_CR & clk ) Q1:= CR[@f1] Q2:= CR[@f2]


ld_CR
LD LD 0 1 2

DATin

R0 = 0000000000000000 R1 R2 R3

Q Q Q Q

Q0 Q1 Q2 Q3

16

ld_CR Rd Rf2 Rf1


5 5 5

CONJUNTO DE REGISTROS @d @f2 @f1 Q1 clk


16

16

16

CR
Q2
16

ZOOM
Rd
5

LD

16

@d

. Desc . . .
30 31

. . . .

. . . .
Q30 Q31

LD

R30 R31

Q Q

16

UNIDAD ARITMTICO-LGICA
clk

LD

16

16

16

Rf2
A B Oper
4

@f2

UAL_Cod
Q31 Q30
16 16

UAL
Y
16

Q2 Q1 Q0

Q31 Q30
16 16

Q2 Q1 Q0

ZN P

. . .

16

16

. . .

16

16

31 30

. . . .

2 1 0

31 30
sel

. . . .

2 1 0

Rf1

@f1

sel

UAL de 16 operaciones:
UAL_Cod Y UAL_Cod Y 0000 A+B 0111 A1 0001 0010 0011 A B A B A/B 0100 0101 0110 A B A+1 1011 A 1100 A ... ...
16

16

1000 1001 1010 A or B A and B A xor B

Q1

Q2

10

Componentes de la UP de BIRD
CONJUNTO DE REGISTROS: registros con salida tri-estado
16

ld_CR
0 1 2 LD_R1 LD_R2

Rd

@d

Desc

. . . .
30 31

. . . .
LD_R30 LD_R31

Q2 OE2 OE1 LD OE2 OE1 LD OE2 OE1

Q2R0 Q1R0 Q2R1 Q1R1 Q2R2 Q1R2

16 16

R0 = 0000000000000000

Q1 Q2

16 16

R1

Q1 Q2

16 16

R2

Q1

Rf2

@f2

Desc

. . . .

0 1 2

. . . .

OE2_R0 OE2_R1 OE2_R2

. . . .

. . . .

. . . .

OE2_R30 30 31 OE2_R31 LD OE2 OE1 LD OE2 OE1


clk

Q2

Q2R30 Q1R30 Q2R31 Q1R31

16 16

R30

Rf1

@f1

Desc

. . . .

0 1 2

. . . .

OE1_R0 OE1_R1 OE1_R2

Q1 Q2 Q1

16 16

R31

30 31

OE1_R30 OE1_R31

16

16

Q1

Q2

11

UP de BIRD

MuxSum hD
16

1
0 1

despl

16

+
Y

B 16

hD
1 0

LD_PC

PC
16 clk 16

MuxM
0 1 16

dat_in @

MuxPC

LD_PCi

PCi
16 clk

MEM
2

16

16

MCS hM@ VAR MOE MWR

dat_out
16 16

MuxCR
16

LD_IR1
clk 6

IR1
5 5

IR2
16

LD_IR2
clk

hMD Muxf2 hdf2


5 0 1 5 16

VAR / # i despl rf2 rf1 rd / rf2

DAT LD_CR
@f2 @f1 @d

CR

CO

clk

Q1
16

Q2
16

LD_e1

LD_e2
clk

DESC
21

ROM UAL
4

R_e1
clk

R_e2
VAR / #i
0 1

(a la unidad de control) UAL_Cod (a la unidad de control)

hi MuxUAL

UAL
16

LD_ual VAR + rf1


clk

R_ual

12

LA UNIDAD DE CONTROL
Estructura genrica: secuenciamiento de estados
Clculo del estado siguiente (combinacional)
n

ES
EP

Estado presente (secuencial)

informacin informacin (de la UP o externa)

SC Seales de control

Especificacin del funcionamiento: algoritmo de control


13

Algoritmo de control de BIRD

BUSQ1 MCS, MOE LD_IR1 LD_PC, LD_PCi BUSQ2 MCS, MOE LD_IR2 LD_PC DESC

op/mov

beq

CO
opi/movi L_OP LD_e1 LD_e2 L_OPI LD_e1 ld L_ST hdf2 LD_e2 st ldx L_LDX LD_e1 stx L_STX LD_e1 LD_e2 hdf2 A_STX hi LD_ual hi LD_ual A_BEQ L_BEQ LD_e1

A_OP LD_ual

A_OPI hi LD_ual

A_LDX

E_OP LD_CR

E_OPI LD_CR

M/E_LD hM@ = 2 MCS, MOE hMD, LD_CR

M_ST hM@ = 2 MCS, MWR

M/E_LDX hM@ = 1 MCS, MOE hMD, LD_CR

M_STX hM@ = 1 MCS, MWR E_PC

Z
1 hD LD_PC

14

Mtodo para construir el algoritmo: mtodo de los multiplexores Biestables D para guardar el estado presente Multiplexores (y puertas) para obtener el estado siguiente Descodificador (y puertas) para generar las seales de control

Mtodo cableado (no es nico)

15

Ejemplo
E0 Reset.L*

X E1 E3

SC1 X Z
1 0 1

E2

Multiplexores 4:1 Biestables D X X 1 Z 0 1 2 3 Y sel


clk

Descodificador 2:4 B 0 B 1 E0 E1

D1 Q1 D0 Q0
cl

B,A 1 0 1 Z 0 1 2 3

2 E2 3 E3

SC1 Y sel Reset.L Z

16

Ventajas y desventajas del diseo cableado


a r

Ejecucin rpida lgica de secuenciamiento y ejecucin compleja difcil de disear y de comprobar su funcionamiento diseo no flexible, no adaptable dificultad de aadir nuevas instrucciones

r r

Tcnica empleada bsicamente en procesadores RISC

17

UNIDAD DE CONTROL microprogramada


Estado un contador En el flanco: contar Ei Ei+1 o cargar (salto) Ei Ej Informacin relacionada con los estados: en una MEMORIA ROM tabla de transicin de estados + seales de control Funcionamiento: secuenciamiento de estados y ejecucin de ciertas operaciones en cada estado
18

Por analoga: microprograma (firmware) secuencia de microinstrucciones

Una microinstruccin = 1 estado del algoritmo de control no se admiten salidas condicionales y slo un cualificador por estado

Formato de las microinstrucciones Una opcin posible (1): * Un bit para cada SC (valores 0/1) * El cdigo del cualificador o variable de control que se analiza en el EP * Valor del cualificador que propicia el salto: condicin de salto * Estado al que se salta (nico)
19

formato de las microinstrucciones (1)


Cd_cualif cond_salto est_salto Memoria de control
@ DAT ROM m
Cd_cualif. cond_salto est_salto
clk2

Seales de control

estructura de la UC microprogramada (1)


IR
Seales de control

q
MUX

PC
LD

X Y Z

n
clk1

contador
Q E DAT 1

cualificadores

a la UP
20

Otra opcin posible (2): Eliminar la condicin de salto de la microinstruccin y recodificar los estados del algoritmo de manera que siempre se salte cuando el valor del cualificador sea 1.

formato de las microinstrucciones (2)


Cd_cualificador estado de salto Seales de control

21

estructura de la UC microprogramada (2)


Memoria de control
@ DAT ROM
clk2

m q
MUX

IR
X Y Z

Cd_cualificador estado de salto Seales de control

PC
LD

n
clk1

contador
Q E DAT

cualificadores

a la UP

n
22

Qu ocurre cuando entre dos estados no hay ningn cualificador? Es decir, cuando el paso de un estado a otro es fijo? Dos posibilidades: que el estado siguiente sea el consecutivo, con lo que no se debe producir el salto; o que no lo sea, con lo que se deber producir el salto. Posible solucin: aadir a la entrada del multiplexor de la UC dos cualificadores nuevos de valores constantes, 0 (no salto) y 1 (salto).
23

estructura de la UC microprogramada (3)


Memoria de control
@ DAT ROM
clk2

m q
MUX

IR

Cd_cualificador estado de salto Seales de control 0 X Y 1

PC
LD

n
clk1

contador
Q E DAT

cualificadores

a la UP

n
24

La UC de BIRD microprogramada 1 cualificador, Z (cdigo cualificador: 2 bits / Z, 0, 1) 21 estados (5 bits)


Memoria de control
@ DAT ROM
clk2

24

IR
2
0

Cd_cualificador estado de salto Seales de control 0 Z 1


17

PC
LD
5

MUX
2 3

contador
Q E DAT
5

a la UP
25

clk1

Algoritmo de control de BIRD

BUSQ1 MCS, MOE LD_IR1 LD_PC, LD_PCi BUSQ2 MCS, MOE LD_IR2 LD_PC DESC

op/mov

beq

CO
opi/movi L_OP LD_e1 LD_e2 L_OPI LD_e1 ld L_ST hdf2 LD_e2 st ldx L_LDX LD_e1 stx L_STX LD_e1 LD_e2 hdf2 A_STX hi LD_ual hi LD_ual A_BEQ L_BEQ LD_e1

A_OP LD_ual

A_OPI hi LD_ual

A_LDX

E_OP LD_CR

E_OPI LD_CR

M/E_LD hM@ = 2 MCS, MOE hMD, LD_CR

M_ST hM@ = 2 MCS, MWR

M/E_LDX hM@ = 1 MCS, MOE hMD, LD_CR

M_STX hM@ = 1 MCS, MWR E_PC

Z
1 hD LD_PC

26

Microprograma
Lo que hay que decir en cada microinstruccin: Los valores de las seales de control y el estado siguiente: salto al estado consecutivo o a otro estado. En binario: latoso Lenguaje microensamblador El estado de descodificacin es especial. No hay un solo estado de salto. Para conseguir eso, ms hardware en la unidad de control: una tabla de traduccin: CO en qu estado empieza su ejecucin.
27

Memoria de control
@ DAT ROM
clk2

25

IR
Desc est_salto Seales de control
17 5 2
0

Cd_cualific. 0 Z 1

PC
LD

MUX
2 3

a la UP
0

contador
5

E DAT
5

MUX
1

clk1

Tabla de traduccin

CO

28

MICROPROGRAMA DE BIRD
0: ir1:=mem(pc); pc:=pc+1; pci:=pc; 1: ir2:=mem(pc); pc:=pc+1; 2: goto cdigo_operacin; 3: R_e1:=CR(Rf1); R_e2:=CR(Rf2); 4: R_ual:=ual_cod(R_e1,R_e2); 5: CR(Rd):=R_ual; goto 0; 6: R_e1:=CR(Rf1); /*opi, movi */ /*busq1*/ /*busq2*/ /*desc*/ /*op, mov*/ /*ual-cod: ROM_UAL*/

7: R_ual:=ual_cod(R_e1,ir2); /*en ir2 est el inmediato #i*/ 8: CR(Rd):=R_ual; goto 0; 9: CR(Rd):=mem(ir2); goto 0; 10: R_e2:=CR(Rdf2); 11: mem(ir2):=R_e2; goto 0; /*ld, 000000*/ /*st, 000011*/

29

12: R_e1:=CR(Rf1); 13: R_ual:=R_e1+ir2;

/*ldx, 000010*/ /*ir2: direccin de la variable VAR*/

14: CR(Rd):=mem(R_ual); goto 0; 15: R_e1:=CR(Rf1); R_e2:=CR(Rdf2); 16: R_ual:=R_e1+ir2; /*stx, 000101*/

/*ir2: direccin de la variable VAR*/

17: mem(R_ual):=R_e2 ; goto 0; 18: R_e1:=CR(Rf1); 19:Z:=(R_e1=0); if Z goto 21; 20: goto 0; 21: pc:=pci+ir2; goto 0; /*ir2: desplazamiento*/ /*beq, 011010*/

30

TABLA DE TRADUCCIN Cdigo de operacin direccin de memoria de control donde comienza la fase de ejecucin de la instruccin C.O. @comienzo C.O. @comienzo

000000 01001 (ld) 000010 01100 (ldx) 000011 01010 (st) 000101 01111 (stx) 000111 00011 (mov) 001001 00011 (add) 001011 00011 (sub) 001101 00011 (mul)

001110 00110 (muli) 001111 00011 (div) 010000 00110 (divi) 010011 00011 (and) 010100 00110 (andi) 010110 00110 (ori) 011000 00110 (xori)

001000 00110 (movi) 010101 00011 (or) 001010 00110 (addi) 010111 00011 (xor) 001100 00110 (subi) 011010 10010 (beq)

31

formato de las microinstrucciones de BIRD


CC1 CC0 Desc S4S3S2S1S0 Seales de control

mcs moe mwr hM@

ld_IR1 ld_IR2

ld_CR hMD hdf2 ld_e1 ld_e2 hi ld_ual

ld_PC ld_PCi hD

microprograma de BIRD en binario direccin de memoria contenido (busq1) 00000 00 0 xxxxx 1 1 0 00 1 0 0 x x 0 0 x 0 (busq2) 00001 00 0 xxxxx 1 1 0 00 0 1 0 x x 0 0 x 0 (desc) 00010 11 1 xxxxx 0 0 0 xx 0 0 0 x x 0 0 x 0 (op/mov) 00011 00 0 xxxxx 0 0 0 xx 0 0 0 x 0 1 1 x 0 00100 00 0 xxxxx 0 0 0 xx 0 0 0 x x 0 0 0 1 00101 11 0 00000 0 0 0 xx 0 0 1 0 x 0 0 x 0 (opi/movi) 00110 00 0 xxxxx 0 0 0 xx 0 0 0 x x 1 0 x 0
..... ........................... ........................ ... .........................................

110 100 00x 00x 00x 00x 00x


32

Ventajas y desventajas del diseo microprogramado asimplifica el diseo de la UC


ms barato menos propenso a errores ms sistemtico fcilmente modificable
a

posibilidad de emular diferentes conjuntos de instrucciones

rEjecucin ms lenta
Empleado bsicamente en procesadores CISC
33

mtodos alternativos de microprogramacin


microprogramacin horizontal: cada microinstruccin especifica muchas microoperaciones diferentes que se deben realizar en paralelo
Seales de control
17

microprogramacin vertical: cada microinstruccin especifica una sola microoperacin o muy pocas
no todas las seales de control actan simultneamente: codificarlas se alarga el microprograma incapacidad de paralelismo
descodificador
17 Seales de control
34

Cdigo SC

solucin intermedia: cada microinstruccin especifica varias microoperaciones


las seales de control se codifican por grupos disjuntos

C. g.1 Cd. grupo 2

Cdigo grupo 3

Descod1

Descod2

Descod3

17 Seales de control

35

nanoprogramacin: cada microinstruccin se ejecuta mediante una secuencia de pasos: nanoinstrucciones nanoprograma ventaja: ahorro en el tamao total de la memoria de control desventajas: mayor complejidad operacin ms lenta

36

Вам также может понравиться