Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LECTURAS OBLIGATORIAS:
D. A. Patterson, J.L. Hennessy, “Estructura y Diseño de Computadores”:
Apartados 5.1 a 5.3.
BIBLIOGRAFÍA DE CONSULTA DEL TEMA:
D. A. Patterson, J.L. Hennessy, “Estructura y Diseño de Computadores”: Capítulo 5.
Tema 5: El procesador. Ruta de datos y control
Índice:
• 4. El procesador
•4.1. Introducción y ejemplos sencillos
•4.2. Construcción del camino de datos
•4.3. Realización de un esquema simple
•4.3.1 Camino de datos
•4.3.1 Control
• Juego de instrucciones
CICLO RELOJ
Sincronización por flanco: permite la lectura, envío del valor (a través de lógica
combinacional) y escritura sobre un mismo registro (siempre que el ciclo sea lo
Suficientemente largo como para que las entradas sean estables en el flanco elegido.
No existe la realimentación dentro de un mismo ciclo (pues las entradas del bloque
Combinatorio solo pueden modificarse en el flanco elegido).
Unidad Aritmético-Lógica:
A0
Entradas y salidas: A A1
A2
A y B: operandos de entrada de 4 bits A3
B
B1 ALU F1
F
S2: distingue entre operaciones aritméticas y B2 F2
lógicas B3 F3
Operaciones Lógicas
S2 S1 S0 CIN Operación Función
1 0 0 0 F = A and B AND
1 0 1 0 F = A or B OR
1 1 0 0 F = A xor B XOR
1 1 1 0 F = not A NOT
Operaciones Aritméticas
S2 S1 S0 CIN Operación Función
0 0 0 0 F=A Transferencia
0 0 0 1 F = A +1 Incremento
0 0 1 0 F=A+B Suma
0 0 1 1 F=A+B+1 Suma con acarreo
0 1 0 0 F = A + not ( B) Resta C-1
0 1 0 1 F = A + not (B) + 1 Resta C-2
0 1 1 0 F=A–1 Decremento
0 1 1 1 F=A Transferencia
Requisitos iniciales:
Add, AddU, Sub, SubU, AddI, AddIU à Sumador/Restador en C-2 con detección de overflow.
And, Or, AndI, OrI à Circuito que realice las operaciones AND y OR lógicas.
Slt, SltI, SltIU à (set-less-than) pone a 1 un determinado registro si el primer operando es menor que el
segundo à Circuito sumador en C-2 con inversor, comprobar signo resultado.
Formato de las instrucciones aritméticas y lógicas: (las veremos en detalle más adelante)
Dejaremos para otro módulo la lógica de extensión de signo y de 0, por lo que los sufijos I e
IU no se tratarán. Esto reduce nuestro subconjunto de operaciones a implementar a:
Add, addu, sub, subu, and, or, xor, nor, slt y sltu à 10 operaciones (4 bits)
32 32
Entradas: operandos A y B à 2 x 32 bits; modo de 4 bits
A B
Salidas: resultado S à 32 bits; 1 bit detección de 0; 1 bit 4
c m
overflow
ovf ALU
Operaciones: add, addu, sub, subu, and, or, xor, nor, slt, sltu 32
S
Alternativas de diseño:
32 ALU’s de 1 bit en serie: el resultado de la ALUi depende del acarreo de salida de la ALUi-1.
Sumador de propagación de arrastre.
• 32 ALU’s en paralelo con acarreo anticipado (CLA = carry look ahead). Se evalúa el acarreo
antes de realizar la suma de todas las ALU’s a la vez (Trabajo ECTS)
• ….
A 32 B 32
ovflw
S 32
Entradas Salidas a
XOR Suma
a b Suma Carry out b
0 0 0 0
0 1 1 0 AND Carry out
1 0 1 0
1 1 0 1 Semisumador de 1 bit
ci Si
Semisumador
ai s de 1 bit c
Semisumador Ci +1
OR
bi de 1 bit c
A AND
RESULT
M
OR U
X
Sumador
1 bit
B
Cout
Unidad procesadora.
Para introducir también la operación de resta A – B bastará con poder realizar la op. A + Ca(2)(B) = A +
Ca(1)(B) + 1 y para realizar el Ca(1) de B basta con introducir una puerta XOR y una señal una señal
Binvert. (que se encarga del not(B), mientras que el + 1 viene por CIN)
Sselect Sselect
Binvert Cin Cin
Binvert
A AND
A AND
RESULT RESULT
M M
OR U OR U
B 0 X X
Sumador Sumador
1
1 bit 1 bit
XOR
B
Cout Cout
Unidad procesadora.
• Produce un 1 si rs < rt y un 0 en caso contrario à Poner todo a 0’s menos el bit menos
significativo
A
AND
M
OR RESULT
B 0 U
Sumador
1
1 bit
X
less C out
Por esto, se necesita una ALU especial para ese último bit con
una salida extra: la salida del sumador, que llamamos set. Ya
a31 CIN
Result31 que es una ALU nueva, aprovechamos para añadirle la
b31
ALU 31 set detección del desbordamiento.
0
less overflow
COUT
Ejemplo con números de 4 bits: el desbordamiento ocurre cuando CARRY OUTMSB distinto de CARRYINMSB
0 1 1 1 1 0
0 1 1 1 7 1 1 0 0 -4
+ 0 0 1 1 3 + 1 0 1 1 -3
1 0 1 0 -6 0 1 1 1 7
Luego para una ALU de N bits: OVERFLOW = CARRY_IN [N-1] XOR CARRY_OUT [N-1]
CIN0
a0 1-bit
b0 ALU resultado0
X Y X xor Y CIN1
COUT0 resultado1
resultado2
0 0 0 a1 1-bit OR
…
b1 ALU
0 1 1 resultado31
CIN2 COUT1
1 0 1
a2 1-bit
1 1 0 b2 ALU La detección de cero es aún más sencilla
CIN3 COUT2
a3 1-bit XOR overflow
b3 ALU
COUT3
La Unidad Procesadora en función del conjunto de instrucciones. Unidad de Control en función de las
señales de control necesarias para controlar el funcionamiento de los elementos de la Unidad
Procesadora.
Z: biestable de estado 0. 1 bit que requiere una señal de carga (se activa con op. aritmético-lógicas).
RDM: registro de dirección de memoria. 13 bits que tienen como entrada DESTINO.
Camino de datos de la Máquina Simple: solo faltará establecer el Sistema de Bus: 3 tipos de
líneas.
Bus de datos: de 16 bits. Interconecta RIM, las entradas ALU y el registro RI.
Bus de direcciones: 13 bits. Interconectará el registro RDM con el contador de programa (PC) con el
operando destino y con la MP.
Bus de control: del mismo tamaño que la palabra de control. Interconecta la UC y la UP. Los bits que
lo componen controlarán los dispositivos del camino de datos. INC
ESC
RDM
PC PC +1
RDM puede recibir info. de 2 fuentes à MUX M0
que seleccione el PC o el DESTINO. M R MEM.
U PPAL.
13 D
13 13 2 13 x 16
M0 ENTRADA 13 D X M
0 PC
3 COP RIM
1 DESTINO (RI) 16
A A B B
RI LEC RIM
z ALU0
Z ALU
ALU1
La palabra de control para la máquina MS es la siguiente: campos decodificados menos ALU y MUX
1 1 1 1 1 1 1 2 1 1 1
LEC ESC M0 RI A B Z ALU0 ALU1 RDM RIM PC
No toda combinación de valores es válida; solo aquellos que representan una microoperación válida.
Ejemplos de microoperaciones:
Microoperación LEC ESC M0 RI A B Z ALU RDM RIM PC
RDM ß PC, LEC 1 0 0 0 0 0 0 xx 1 0 0
RI ß RIM 0 0 x 1 0 0 0 xx 0 0 0
RDM ß D, LEC 1 0 1 0 0 0 0 xx 1 0 0
RIM ß A + B 0 0 x 0 0 0 1 00 0 1 0
PC ß PC + 1 0 0 0 0 0 0 0 xx 0 0 1
PC ß D 0 0 1 0 0 0 0 xx 0 0 1
A ß RIM 0 0 x 0 1 0 0 xx 0 0 0
El diagrama de flujo para MS que establece la secuencia de operaciones a realizar en la UP para llevar
a cabo la ejecución de las instrucciones es el siguiente:
RDM ß D
000 010 011 100 001 (MOV)
(ADD) (AND)
000 (SUB) 011 (COMP)
010 011
En capítulos anteriores identificamos la parte común para casi todas las instrucciones
MIPS. En concreto, 2 pasos comunes:
Después, acciones diferentes según tipo de instrucción: uso ALU y read/write registro/s
Poco práctica à más lenta que una realización que permita a diferentes tipos de
instrucciones tardar un número diferente de ciclos de reloj (tan cortos como la instrucción)
Metodología de diseño:
2. Ir uniendo los diferentes bloques en secciones del data path para cada
instrucción.
rt, desp rs
31·········26 25·······21 20······16 15····································0 lw $t0, desplaz($t1)
TIPO I cod. oper rs rt Desp/inmediato. sw $t0, desplaz($t1)
Lw, sw y beq
REPERTORIO DE INSTRUCCIONES
Incluímos sólo un subconjunto de instrucciones enteras
(las más significativas)
• Instrucciones aritmético-lógicas
– And, sub, add, or, slt
Después, similitudes:
1. Mem[PC];
2. PCßPC+4;
1. Carga de la instrucción
desde memoria.
Aún habrá que retocarlo para las instrucciones de salto y bifurcación (MÁS ADELANTE).
16 32
Ext.
signo
32
A
32 32 Sumador binario, para calcular la
Desp. D 32
D dirección final de salto relativo al PC+4
Izqda. E
<<2 32 R
Memoria de datos, elemento de estado que tiene Unidad de extensión de signo, con una entrada de
como entradas la dirección del dato a escribir y el 16 bits que se extiende a una salida de 32 bits.
propio dato. Como salida solo tiene el valor leído.
Tiene control de lectura y escritura separados (solo
uno activo en cada momento)
• Una vez vistas las subpartes del camino de datos para cada tipo de
instrucción, construiremos el camino de datos total y su control para la
más simple de las implementaciones para instrucciones MIPS. En concreto,
ejecutara: lw, sw, beq, add, sub,and, or y slt. Posteriormente se ampliará
para las instrucciones de salto incondicional (j).
MemRead
MemRead
MemRead
MemRead
MemRead
TIPO I 35 ó 43 rs rt address
Lw, sw
MemRead
Op[5-0]
MemRead
0
1
00
1 1
Instrucción LOAD: 1
MemRead
1
1
10 0
0
Instrucción TIPO R: 0
MemRead
X 0
0
01
x
Instrucción BEQ: 0
MemRead
Instrucción RegDst FuenteALU MemaReg EscReg LeerMem EscMem SaltoCond ALUOp1 ALUOp0
TIPO R 1 0 0 1 0 0 0 1 0
LW 0 1 1 1 1 0 0 0 0
SW X 1 X 0 0 1 0 0 0
BEQ X 0 X 0 0 0 1 0 1
Ahora podemos generar la lógica de control mediante una tabla de verdad que
combine todas las salidas.
¿Saltos incondicionales?
CICLO RELOJ
Supóngase que los tiempos de ejecución de las unidades funcionales principales de esta
realización son los siguientes:
Rendimiento CPU reloj variable Tpo. ejecución CPU uniciclo Tpo. ciclo CPU uniciclo 8
1,27
Rendimiento CPU uniciclo Tpo. Ejecución CPU reloj variable Tpo. ciclo CPU reloj variable 6,3
Las diferentes unidades funcionales solo pueden usarse una vez por ciclo. (esto
conlleva duplicar algunas U.F à encarecimiento del diseño).
Para evitar esto à técnicas de realización que tengan un ciclo inferior, que
requieran más de un ciclo por instrucción. Esto es lo que veremos en los
próximos temas à Realización Multiciclo y Segmentación