Documentos de Académico
Documentos de Profesional
Documentos de Cultura
22 ConstruccionUAL PDF
22 ConstruccionUAL PDF
ESTRUCTURA Y TECNOLOGÍA DE
COMPUTADORES
Programa
Bibliografía.
1. Introducción.
2. Circuitos para implementar operaciones lógicas.
3. Sumadores binarios elementales.
4. Circuitos para sumar números binarios de N bits.
5. Operación de extensión de signo.
6. Operación de cambio de signo.
7. Circuitos para restar números binarios.
8. Circuitos para sumar y restar números binarios.
9. Indicadores de resultado.
10. Comparaciones.
11. Diseño modular de una unidad aritmética y lógica.
12. Anticipación de acarreo.
2
Construcción de una Unidad Aritmética y Lógica
Bibliografía
 D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores.
Reverté, 2000.
 DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnología
de Computadores. 2ª edición. Sanz y Torres, 2000.
 J.M. ANGULO, J.GARCÍA. Sistemas Digitales y Tecnología de Computadores.
Paraninfo, 2002.
 P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo,
1999.
 W. STALLINGS. Organización y Arquitectura de Computadores. 5ª edición,
Prentice Hall, 2000.
1. Introducción
Una unidad aritmética y lógica (UAL) es un circuito combinacional que realiza las
operaciones aritméticas y lógicas básicas en el computador.
 Operaciones aritméticas básicas: suma y resta de enteros y
desplazamientos unitarios.
 Operaciones lógicas básicas: NOT, AND, OR, EXOR, NAND, NOR.
 En inglés: ALU (arithmetic and logic unit).
B
S S
a
0
Result
1
b
5
a b cs s
cs = a·b a cs
0 0 0 0
0 1 0 1 s=a⊕b
1 0 0 1
a
1 1 1 0
+ Sum
b s
b
CarryOut
6
Construcción de una Unidad Aritmética y Lógica
1 1 1 1 1
Ejercicio: calcular el retardo del sumador.
7
8
Construcción de una Unidad Aritmética y Lógica
a b a b a b
cn-1 cs
+ ce
... cs
+ ce cs
+ ce
c-1
s s s
sn-1 s1 s0
A B A B
n n n n
CPA de
+ cs CPAn ce
n bits
cs ce
n n
S S 9
a b a b a b
cs
+ ce
... cs
+ ce cs
+ ce
s s s
cn-1 sn-1 c1 s1 c0 s0
X Y Z
n n n
CSA de CSAn
n bits
n n
C S 10
Construcción de una Unidad Aritmética y Lógica
Traditional adder
e3 e2 e1 e0
Traditional adder
f3 f2 f1 f0
Traditional adder
S
s5 s4 s3 s2 s1 s0
11
b3 e3 f3 b2 e2 f2 b1 e1 f1 b0 e0 f0 A B E F
a3 a2 a1 a0
C' S'
s'4 c'3 s'3 c'2 s'2 c'1 s'1 c'0 s'0
Traditional adder
s5 s4 s3 s2 s1 s0
12
Construcción de una Unidad Aritmética y Lógica
•En magnitud y signo, se intercalan ceros entre el bit de signo y los bits de
módulo.
13
14
Construcción de una Unidad Aritmética y Lógica
- cs
- ce
cs
s s
a b a b a b
cn-1 cs
- ce
... cs
- ce cs
- ce
c-1
s s s
sn-1 s1 s0
15
a b a b a b
+ + + '1'
cn-1 cs ce cs ce cs ce
s s s
sn-1 s1 s0
16
Construcción de una Unidad Aritmética y Lógica
b b
Op
equivale a
0 1 Op
17
a b a b a b a b
cs
+ ce cs
+ ce
... cs
+ ce cs
+ ce
s s s s
sn-1 sn-1 s1 s0
Op = 0 ⇒ OPERACIÓN DE SUMA
C Op = 1 ⇒ OPERACIÓN DE RESTA
9. Indicadores de resultado
En los circuitos anteriores se ha contemplado el bit de acarreo.
Otros indicadores usuales son:
( n -1⋅Bn -1⋅Sn -1 + An -1⋅Bn -1⋅Sn -1)+ Op⋅(An -1⋅Bn -1⋅Sn -1 + An -1⋅Bn -1⋅Sn -1)
V = Op ⋅ A
a b a b a b a b
cs
+ ce cs
+ ce
... cs
+ ce cs
+ ce
s s s s
sn-1 sn-2 s1 s0
...
C V N
Z
20
Construcción de una Unidad Aritmética y Lógica
10. Comparaciones
La comparación de dos números se realiza mediante una resta.
• El valor del resultado en sí no es relevante.
• Lo que importa son las características del resultado.
• Las características del resultado se pueden analizar mediante los códigos de
condición obtenidos tras la resta.
MIPS tiene instrucciones condicionales que realizan una resta entre dos operandos,
calculan los códigos de condición y toman una decisión:
Condiciones en MIPS
Condición Nemotécnico Expresión booleana Instrucciones
Menor que con signo LT (less than) r31·¬V + ¬r31·V SLT, SLTI, BLT
Menor que sin signo LTU (less than unsigned) C SLTU, SLTIU, BLTU
Menor o igual que con signo LE (less or equal than) SLE, BLE
Menor o igual que sin signo LEU (less or equal than unsigned) SLEU, BLEU
Igual que EQ (equal) Z SEQ, BEQ
Distinto a NE (not equal) ¬Z SNE, BNE
Mayor o igual que con signo GE (greater or equal than) SGE, BGE
Mayor o igual que sin signo GEU (greater or equal than unsigned) SGEU, BGEU
Mayor que con signo GT (greater than) SGT, BGT
Mayor que sin signo HI (higher) SGTU, BGTU
Menor que 0 LTZ (less than 0) N BLTZ, BLTZAL
Menor o igual que 0 LEZ (less or equal than 0) N+Z BLEZ
Igual a 0 EQZ (equal to 0) BEQZ
Distinto de 0 NEZ (not equal to 0) BNEZ
Mayor o igual que 0 GTZ (less than 0) ¬N BGEZ, BGEZAL
Mayor que 0 GEZ (less or equal than 0) ¬N·¬Z BGTZ
Cierto T Flag(coprocesador z) BCzT
Falso F ¬ Flag(coprocesador z) BCzF
Pseudoinstrucciones en negrita
22
Construcción de una Unidad Aritmética y Lógica
CarryOut 23
Operation
Operation Result
a
0 a AND b 0
1 a OR b Result
1
b
24
Construcción de una Unidad Aritmética y Lógica
Operation Result
a
0 (00) a AND b 0
1 (01) a OR b
2 (10) a + b + CarryIn 1
Result
CarryOut
25
a1 CarryIn
Result1
ALU1
b1
Ejercicio propuesto: calcular el retardo CarryOut
a31 CarryIn
Result31
ALU31
b31
26
Construcción de una Unidad Aritmética y Lógica
b 0 2
1
Ejercicio propuesto: calcular el
retardo del circuito para la
operación de suma o la de resta. CarryOut
27
X 0 (00) a AND b
X 1 (01) a OR b a
0
0 2 (10) a + b + CarryIn
1 2 (10) a + ¬b + CarryIn 1
1 3 (11) Less
Result
b 0 2
Para las celdas 1 a 31 de la
1
UAL, Less = 0.
Less 3
Para la celda 0, por Less entra
el resultado de la comparación.
CarryOut
28
Construcción de una Unidad Aritmética y Lógica
 Dicho signo se puede obtener de la celda UAL que opera con la pareja de bits
más significativos (ALU31):
Set = s31
donde:
•Set: señal de evaluación de la condición LT (1 si cierta, 0 si falsa).
•s31: salida del sumador de ALU31 (1 si negativo, 0 si positivo o nulo).
Less 3
Set
¡CUIDADO!
Overflow
Si hay desbordamiento en la resta, detection
Overflow
¿la condición LT está bien evaluada?
31
A = 6, B = -4: A = -6, B = 4:
A-B ≥ 0 ⇒ A-B < 0 ⇒
A < B FALSE A < B TRUE
¡y la resta da ¡y la resta da
resultado resultado
negativo! positivo!
0110 1010
- 1100 - 0100
1010 0110
V=1 V=1
a1 CarryIn
b1 ALU1 Result1
0 Less
CarryOut
Ejercicio propuesto: calcular el retardo del
circuito para las siguientes operaciones: a2 CarryIn
•add o sub. b2 ALU2 Result2
0 Less
•or o and. CarryOut
•slt.
CarryIn
33
a2 CarryIn Result2
b2 ALU2
Bnegate Operation Result 0 Less
CarryOut
X 0 (00) a AND b
X 1 (01) a OR b
0 2 (10) a+b
a + ¬b + 1 ⇒ Result31
1 2 (10) a31 CarryIn
a-b b31 ALU31 Set
0 Less Overflow
1 3 (11) Less
34
Construcción de una Unidad Aritmética y Lógica
Anticipación de acarreo
Es posible definir dos funciones:
 gi: vale 1 si la pareja de bits ai y bi generan acarreo ⇒ gi = ai · bi
 pi: vale 1 si la pareja de bits ai y bi pueden propagar un acarreo procedente
de una pareja de bits anterior ⇒ pi = ai ⊕ bi
Entonces: ci = ai·bi + (ai⊕bi)·ci-1 = gi + (ai⊕bi) · ci-1
si = ai ⊕ bi ⊕ ci-1 = pi ⊕ ci-1
Si conseguimos construir un circuito aparte que se encargue de calcular los
acarreos, el sumador elemental es más sencillo, ya que proporciona como salida
sólo los bits si, gi y pi.
ai gi ce
a b
a s
bi + +
pi ce g
g p s b p
ci-1 si
36
Construcción de una Unidad Aritmética y Lógica
Anticipación de acarreo
El circuito que calcule los acarreos materializará las siguientes funciones lógicas:
c0 = g0 + p0· c-1
c1 = g1 + p1·c0 = g1 + p1·[g0 + p0·c-1] = g1 + p1· g0 + p1· p0 · c-1
c2 = g2 + p2·c1 = g2 + p2·[g1 + p1·g0 + p1·p0 ·c-1] = g2 + p2·g1 + p2·p1·g0 + p2·p1·p0 ·c-1
c3 = g3 + p3·c2 = g3 + p3·[g2 + p2·g1 + p2·p1·g0 + p2·p1·p0 ·c-1] =
= g3 + p3·g2 + p3·p2·g1 + p3·p2·p1·g0 + p3·p2·p1·p0 ·c-1
Anticipación de acarreo
De este modo podemos definir un bloque de anticipación de acarreo de 4 bits que
recibirá como entradas {gi}i=0...3 , {pi}i=0...3 y c-1 y tendrá como salidas c0, c1, c2, G y P.
•Las fórmulas de un módulo de anticipación de acarreo para más de 4 bits se
complican mucho y dejan de ser viables.
•El módulo de 4 bits será conectable en cascada para formar anticipadores de
acarreo en varios niveles jerárquicos.
3 3 2 2 2 1 1 1 0 0 0
-1
38
Construcción de una Unidad Aritmética y Lógica
P c-1
anticipación de acarreo. a4
b4
CarryIn
Result4--7
a5
b5 ALU1
a6 P1 pi + 1
•Cada UAL de 4 bits contiene una unidad de b6
a7
G1 gi + 1
b7
anticipación de acarreo, y genera 4 bits de C2
ci + 2
resultado, Pi y Gi. a8 CarryIn
b8 Result8--11
a9
b9
•El segundo nivel de anticipación calcula los a10
b10
ALU2
P2
G2
pi + 2
gi + 2
acarreos de entrada de las UAL 1, 2 y 3. a11
b11
C3
ci + 3
a12 CarryIn
b12 Result12--15
a13
b13 ALU3
a14 P3 pi + 3
b14 G3 gi + 3
a15 C4
b15 ci + 4
CarryOut 40