Академический Документы
Профессиональный Документы
Культура Документы
Organizacin de la CPU
estructura genrica de un sistema digital
SEALES DE CONTROL
UNIDAD DE PROCESO
informacin
(UP)
informacin externa
3
16
5
C.O.
Rd/Rf2
Rf1 32
dirVAR/inmed/desp Rf2
Lenguaje ensamblador
Operacin
add rd,rf1,rf2
addi rd,rf,#inmed
rd:= rf + inmed
mov 000111 6 Rd 5 Rf
mov rd,rf
5 16
rd:= rf
movi rd,#inmed
rd:= inmed
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
beq rf,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
; 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
DATin
R0 = 0000000000000000 R1 R2 R3
Q Q Q Q
Q0 Q1 Q2 Q3
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
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
16 16
R0 = 0000000000000000
Q1 Q2
16 16
R1
Q1 Q2
16 16
R2
Q1
Rf2
@f2
Desc
. . . .
0 1 2
. . . .
. . . .
. . . .
. . . .
Q2
16 16
R30
Rf1
@f1
Desc
. . . .
0 1 2
. . . .
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
dat_out
16 16
MuxCR
16
LD_IR1
clk 6
IR1
5 5
IR2
16
LD_IR2
clk
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
hi MuxUAL
UAL
16
R_ual
12
LA UNIDAD DE CONTROL
Estructura genrica: secuenciamiento de estados
Clculo del estado siguiente (combinacional)
n
ES
EP
SC Seales de control
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
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
15
Ejemplo
E0 Reset.L*
X E1 E3
SC1 X Z
1 0 1
E2
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
16
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
17
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
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.
21
m q
MUX
IR
X Y Z
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
m q
MUX
IR
PC
LD
n
clk1
contador
Q E DAT
cualificadores
a la UP
n
24
24
IR
2
0
PC
LD
5
MUX
2 3
contador
Q E DAT
5
a la UP
25
clk1
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
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
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*/
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
ld_IR1 ld_IR2
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
..... ........................... ........................ ... .........................................
rEjecucin ms lenta
Empleado bsicamente en procesadores CISC
33
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
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