ESTRUCTURA Y TECNOLOG
ESTRUCTURA Y TECNOLOG
Í
Í
A DE
A DE
COMPUTADORES
COMPUTADORES
Construcción de una Unidad Aritmética y Lógica
Luis Rincón Córcoles Licesio J. Rodríguez-Aragón
Construcción de una Unidad Aritmética y Lógica
2
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.
3
 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.
Bibliografía
Construcción de una Unidad Aritmética y Lógica
4
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).
La multiplicación y la división de enteros se realizan en circuitos específicos.
 Antes las máquinas menos potentes no disponían de instrucciones de
multiplicación ni división, y realizaban estas operaciones por programa a base de sumas, restas y desplazamientos.
 Ciertas máquinas realizaban la multiplicación y la división en el sumador
de la UAL bajo el control de la unidad de control.
Las operaciones de desplazamiento múltiple se suelen hacer fuera de la UAL en desplazadores de barril (barrel shifters) a base de transistores.
 También pueden hacerse a base de desplazamientos unitarios, ya sea por
programa o en la UAL controlados por la unidad de control.
1. Introducción
5
Las implementación de circuitos para operaciones lógicas es muy sencilla: basta simplemente con una batería de puertas lógicas y un multiplexor accionado por las correspondientes señales de selección.
Ejemplo: circuito para realizar AND y OR de dos datos de un bit.
 Operation: señal de selección de un único bit.
2. Circuitos para operaciones lógicas
b 0 1 Result Operation a 1 A C B S M u x C A B S 0
Construcción de una Unidad Aritmética y Lógica
6
3. Sumadores binarios elementales
Son sumadores que suman datos de un solo bit.Semisumador (half adder):
 Dos entradas: dígitos ai y bi.
 Dos salidas: acarreo ciy bit resultado zi.
Tabla de verdad, funciones lógicas, circuito y símbolo del semisumador:
1 0 0 0 cs 0 1 1 1 0 1 1 1 0 0 0 0 s b a
a
c
ss
b
cs= a·b s = a ⊕ b Sum + CarryOut a b7
Sumadores binarios elementales
Sumador completo (full adder):
 Tres entradas: dígitos ai y bi y acarreo ci-1.
 Dos salidas: acarreo ciy bit resultado zi.
1 1 1 1 0 0 0 0 a 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 0 cs 1 1 1 0 0 1 0 1 0 1 0 0 s ce b a cs s b ce + c e cs s b a + ce cs s b a
cs= a·b + a·ce+b·ce = a·b + (a⊕b)·ce s = a ⊕ b ⊕ ce
Ejercicio: calcular el retardo del sumador. Tabla de verdad, funciones lógicas, circuito y
símbolo del sumador completo:
Construcción de una Unidad Aritmética y Lógica
8
4. Circuitos para sumar números de N bits
Vamos a estudiar distintos tipos de circuitos para calcular sumas de números binarios:
•Sumador de 2 números de N bits con propagación de acarreo en serie
(CPA: carry propagation adder)
•Sumador de acarreo almacenado (CSA: carry save adder)
Hay otras alternativas para circuitos sumadores de 2 números:
•Sumador con anticipación de acarreo (lo veremos al final del tema). •Sumador con salto de acarreo.
•Sumador con predicción de acarreo. •Etc.
Estudiaremos también cómo sumar varios números (matrices de sumadores): •Con CPA
9
Sumador con propagación de acarreo
SUMADOR DE N BITS CON PROPAGACIÓN DE ACARREO EN SERIE
(CPA: carry propagation adder): permite sumar dos datos de nbits
encadenando sumadores binarios elementales completos.
•Sirve para números en binario puro o en complemento a 2.
+ c e cs s b a + c e cs s b a + c e cs s b a a0 b0 a1 b1 bn-1 an-1 s0 s1 sn-1
...
cn-1 c-1 CPA de n bits + n n A B S cs ce n CPAn n n A B S cs ce nConstrucción de una Unidad Aritmética y Lógica
10
Sumador de acarreo almacenado
SUMADOR DE N BITS CON ACARREO ALMACENADO (CSA: carry save
adder): no propaga los acarreos, y proporciona dos resultados:
•N bits de suma parcial.
•N bits de acarreos (que no se propagan en esta etapa).
CSA de n bits + c e cs s b a + c e cs s b a + c e cs s b a x0 y0 x1 y1 yn-1 xn-1 s0 s1 sn-1
...
z0 z1 c0 zn-1 c1 cn-1 CSAn n n X Z S n C n n Y11
Si queremos sumar más de dos datos de nbits podemos usar una matriz de
sumadores elementales con acarreo propagado.
 Pega: el retardo de la suma total es bastante grande.
Matriz de sumadores con acarreo propagado
s5 s0 b0 a0 e0 f0 s1 b1 a1 e1 f1 s2 b2 a2 e2 f2 s3 b3 a3 e3 f3 s4 E F S B A Traditional adder Traditional adder Traditional adder
Construcción de una Unidad Aritmética y Lógica
12
Podemos acelerar el proceso si usamos CSAs.
•Al final se debe incluir una etapa de propagación del acarreo (este paso puede acelerarse con un sumador rápido).
Matriz de sumadores con acarreo almacenado
s4 s3 s2 s1 s0 f0 e0 b0 f1 e1 b1 f2 e2 b2 f3 e3 b3 a0 a1 a2 a3 s5 c'3 s'3 s'4 c'2 s'2 c'1 s'1 c'0 s'0
Carry save adder
E F
B A
Carry save adder
Traditional adder
S C' S'
13
5. Operación de extensión de signo
 La operación de extensión de signo es distinta dependiendo del sistema de
representación utilizado.
•En binario puro, simplemente se añaden ceros a la izquierda. •En complemento a 1 ó a 2, se replica el bit de signo.
•En magnitud y signo, se intercalan ceros entre el bit de signo y los bits de módulo.
•En exceso a M, la operación suele implicar un cambio en el exceso, aunque si el exceso se mantiene, bastaría con añadir ceros igual que en binario puro.
 Los circuitos para realizar extensión de signo son sumamente sencillos.
Construcción de una Unidad Aritmética y Lógica
14
6. Operación de cambio de signo
La operación de cambio de signo es distinta dependiendo del sistema de representación utilizado.
 En binario puro, esta operación no es posible.
 En complemento a 1 ó a 2, basta con complementar el resultado.
 En magnitud y signo, basta con invertir el bit de signo.
15
7. Circuitos para restar números binarios
Semirrestador binario Restador binario elemental completo
Restador de N bits con propagación de acarreo en serie
-cs s b a-
c e cs s b a - c e cs s b a - c e cs s b a - c e cs s b a a0 b0 a1 b1 bn-1 an-1 s0 s1 sn-1...
cn-1 c-1Construcción de una Unidad Aritmética y Lógica
16
Circuitos para restar números binarios
Otra opción: hacer una suma del minuendo con el complementario del sustraendo.
 Para complementar el sustraendo, invertimos todos sus bits e introducimos
un 1 en el acarreo de entrada del sumador menos significativo.
 Por este procedimiento también había que invertir el acarreo de salida.
 Esto funciona tanto para binario puro como para complemento a 2 (en
complemento a 2 el acarreo se desprecia, y el desbordamiento se detecta de otro modo). + c e cs s b a + c e cs s b a + c e cs s b a a0 b0 a1 b1 bn-1 an-1 s0 s1 sn-1 cn-1 '1'
17
8. Circuitos para sumar y restar números binarios
Como se puede sumar y restar con un único sumador, puede diseñarse un únicocircuito que realice ambas operaciones en función de una señal de control Op.
•Op = 0: suma. •Op = 1: resta.
Es preciso contar con un circuito que complemente condicionalmente el sustraendo en función de dicha señal Op.
equivale a 1
0 Op
b b
Op
Construcción de una Unidad Aritmética y Lógica
18
Circuito sumador / restador de N bits
Op = 0 ⇒ OPERACIÓN DE SUMA
Op = 1 ⇒ OPERACIÓN DE RESTA
Ejercicio: calcular el retardo de los sumadores / restadores de 4, 16 y 32 bits.
+ c e cs s b a + c e cs s b a + c e cs s b a a0b0 a1b1 bn-1 an-1 s0 s1 sn-1
...
C + c e cs s b a sn-1 bn-2 an-2 Op19
9. Indicadores de resultado
Otros indicadores usuales son:Â Z: indicador de resultado nulo (Z=1 si el resultado es 0, Z=0 si no). Basta con una NOR de todos los bits del resultado.
 N: indicador de signo (N=1 si el resultado es negativo, N=0 si es positivo ó 0). Es el bit más significativo del resultado.
 V: indicador de desbordamiento (V=1 si hay desbordamiento, V=0 si no).
•En sumas (Op=0), V=1 si An-1 = Bn-1 ≠ Sn-1. •En restas (Op=1), V=1 si An-1 ≠ Bn-1= Sn-1.
•Ambas condiciones se resumen en la expresión V=Cn-1⊕Cn-2
En los circuitos anteriores se ha contemplado el bit de acarreo.
(
) (
Sn-1)
1 -n B 1 -n A 1 -n S 1 -n B 1 -n A Op 1 -n S 1 -n B 1 -n A 1 -n S 1 -n B 1 -n A Op V= ⋅ ⋅ ⋅ + ⋅ ⋅ + ⋅ ⋅ ⋅ + ⋅ ⋅Construcción de una Unidad Aritmética y Lógica
20
Sumador / restador con indicadores de resultado
+ c e cs s b a + c e cs s b a + c e cs s b a a0b0 a1b1 bn-1 an-1 s0 s1 sn-1
...
C + c e cs s b a sn-2 bn-2 an-2 V...
Z Op N21
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:
1.Scond rdest,rf1,rf2: si rf1 cond rf2 es cierto pone rdesta 1, si no lo pone a 0.
2.Bcondrf1,rf2,etiq: si rf1 cond rf2 es cierto salta a etiq, si no continúa.
3.Bcondrf,etiq: si rf1 cond 0 es cierto salta a etiq, si no continúa.
Otras: BCzT y BCzF testean un flag del coprocesador z (z ∈[0,3]) y ramifican si
corresponde.
Construcción de una Unidad Aritmética y Lógica
22
Condiciones en MIPS
BEQZ EQZ (equal to 0) Igual a 0 BNEZNEZ (not equal to 0) Distinto de 0 BCzT Flag(coprocesador z) T Cierto BGTZ ¬N·¬Z GEZ (less or equal than 0)
Mayor que 0 BCzF ¬Flag(coprocesador z) F Falso BLEZ N+Z
LEZ (less or equal than 0) Menor o igual que 0
SGT, BGT
GT (greater than) Mayor que con signo
SGTU, BGTU
HI (higher) Mayor que sin signo
SGEU, BGEU
GEU (greater or equal than unsigned) Mayor o igual que sin signo
SGE, BGE
GE (greater or equal than) Mayor o igual que con signo
SEQ, BEQ Z EQ (equal) Igual que SNE, BNE ¬Z NE (not equal) Distinto a SLEU, BLEU
LEU (less or equal than unsigned) Menor o igual que sin signo
SLE, BLE
LE (less or equal than) Menor o igual que con signo
BLTZ, BLTZAL N LTZ (less than 0) Menor que 0 ¬N C r31·¬V + ¬r31·V Expresión booleana BGEZ, BGEZAL GTZ (less than 0)
Mayor o igual que 0
SLTU, SLTIU, BLTU
LTU (less than unsigned) Menor que sin signo
SLT, SLTI, BLT
LT (less than) Menor que con signo
Instrucciones Nemotécnico
Condición
23
11. Diseño modular de una UAL
Vamos a acometer el diseño de una UAL reducida para el MIPS con las siguientes operaciones:
 AND lógico
 OR lógico
 Suma aritmética
 Resta aritmética
 Comparación de menor que
La UAL detectará las condiciones de desbordamiento y resultado nulo. La UAL se diseñará en forma modular:
partiendo de una célula elemental de UAL para operandos de 1 bit, construiremos la UAL completa para trabajar con
operandos de 32 bits. ALU Result Zero Overflow a b ALU operation CarryOut
Construcción de una Unidad Aritmética y Lógica
24
UAL de 1 bit (I): operaciones lógicas
 Tiene dos entradas de datos: a y b. Es necesaria una entrada de selección de 1 bit por Operation.
 Ofrece un bit de resultado: Result.
b 0 1 Result Operation a
Ejercicio propuesto: calcular el retardo del circuito. a OR b 1 a AND b 0 Result Operation
25
UAL de 1 bit (II): añadiendo la suma
 A la versión anterior se le añade la operación de suma con un
sumador binario elemental completo.
 Se añade una entrada de datos: el acarreo de entrada (CarryIn).
 Se añade una nueva señal de salida: el acarreo de salida (CarryOut).
 Operation ya tiene 2 bits.
b 0 2 Result Operation a 1 CarryIn CarryOut Ejercicio propuesto: calcular el
retardo del circuito para la operación de suma. a OR b 1 (01) a + b + CarryIn 2 (10) a AND b 0 (00) Result Operation
Construcción de una Unidad Aritmética y Lógica
26
UAL de 32 bits: primera versión
 Se construye uniendo 32 UAL de 1 bit.
Result31 a31 b31 Result0 CarryIn a0 b0 Result1 a1 b1 Result2 a2 b2 Operation ALU0 CarryIn CarryOut ALU1 CarryIn CarryOut ALU2 CarryIn CarryOut ALU31 CarryIn
Ejercicio propuesto: calcular el retardo del circuito para la operación de suma.
27
UAL de 1 bit (III): añadiendo la resta
 Para añadir la operación de resta es preciso permitir negar el segundo
operando del sumador.
 La señal Binvert es una nueva entrada de control para indicar la operación
realizada (suma o resta).
0 2 Result Operation a 1 CarryIn CarryOut 0 1 Binvert b
Ejercicio propuesto: calcular el retardo del circuito para la
operación de suma o la de resta.
1 0 X X Binvert a + b + CarryIn 2 (10) 2 (10) 1 (01) 0 (00) Operación a OR b a + ¬b + CarryIn a AND b Result
Construcción de una Unidad Aritmética y Lógica
28
UAL de 1 bit (IV): añadiendo slt
 Al añadir la operación de activación si menor se añade la entrada Less, que
contiene el bit resultante de la comprobación de la condición LT: •Lessi = 0 ∀i ∈[1,31].
•Less0 = 0 si la condición es falsa, Less0 = 1 si es cierta.
1 1 0 X X Binvert a + ¬b + CarryIn 2 (10) Less 3 (11) a + b + CarryIn 2 (10) 1 (01) 0 (00) Operation a OR b a AND b Result 0 3 Result Operation a 1 CarryIn CarryOut 0 1 Binvert b 2 Less
Para las celdas 1 a 31 de la UAL, Less = 0.
Para la celda 0, por Less entra
29
Cálculo de la condición LT (less than)
Dos números positivos(en complemento a 2): 0110 - 0100 0010 A = 6, B = 4: A-B ≥ 0 ⇒ A < B FALSE A = 4, B = 6: A-B < 0 ⇒ A < B TRUE 0100 - 0110 1110
Dos números negativos (en complemento a 2): 1100 - 1010 0010 A = -4, B = -6: A-B ≥ 0 ⇒ A < B FALSE A = -6, B = -4: A-B < 0 ⇒ A < B TRUE 1010 - 1100 1110 Un número positivo y el otro negativo: 0100 - 1110 0110 A = 4, B = -2: A-B ≥ 0 ⇒ A < B FALSE A = -4, B = 2: A-B < 0 ⇒ A < B TRUE 1100 - 0010 1010
Construcción de una Unidad Aritmética y Lógica
30
 Del análisis anterior se deduce que la condición LT se puede evaluar mediante
una resta, de la cual sólo nos interesará el signo del resultado: •Si el resultado es positivo o 0, la condición es FALSA. •Si el resultado es negativo, la condición es CIERTA.
 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).
 De la celda ALU31 también se puede obtener la condición de desbordamiento:
Cálculo de la condición LT (less than)
(
)
(
sn-1)
1 -n b 1 -n a 1 -n s 1 -n b 1 -n a Binvert 1 -n s 1 -n b 1 -n a 1 -n s 1 -n b 1 -n a Binvert Overflow ⋅ ⋅ + ⋅ ⋅ ⋅ + + ⋅ ⋅ + ⋅ ⋅ ⋅ =31
UAL de 1 bit (IV): celda más significativa
El bit más significativo exige entonces una celda UAL especial:Â Se añade un circuito para detectar la
posible existencia de desbordamiento.
 La salida Set indica el resultado de la
condición LT.
•Set irá a la entrada Less de la UAL
del bit 0.
¡CUIDADO!
Si hay desbordamiento en la resta, ¿la condición LT está bien evaluada?
0 3 Result Operation a 1 CarryIn 0 1 Binvert b 2 Less Set Overflow detection Overflow
Construcción de una Unidad Aritmética y Lógica
32
 Analizando casos de resta con desbordamiento, se observa lo siguiente:
Cálculo de la condición LT (less than)
0110 - 1100 1010 V = 1 A = 6, B = -4: A-B ≥ 0 ⇒ A < B FALSE ¡y la resta da resultado negativo! A = -6, B = 4: A-B < 0 ⇒ A < B TRUE ¡y la resta da resultado positivo! 1010 - 0100 0110 V = 1
 La condición LT para números en complemento a 2 debe considerar el signo
del resultado de la resta y el valor del flag de desbordamiento (ver transparencia
22 con tabla de condiciones):
33
UAL de 32 bits: segunda versión
 Se construye uniendo 32 UAL de 1 bit,
recordando que la del bit más
significativo es distinta de las demás.
Set a31 0 ALU0 Result0 CarryIn a0 Result1 a1 0 Result2 a2 0 Operation b31 b0 b1 b2 Result31 Overflow Binvert CarryIn Less CarryIn CarryOut ALU1 Less CarryIn CarryOut ALU2 Less CarryIn CarryOut ALU31 Less CarryIn
Ejercicio propuesto: calcular el retardo del circuito para las siguientes operaciones:
•add o sub. •or o and. •slt.
Construcción de una Unidad Aritmética y Lógica
34
UAL de 32 bits: tercera versión
 Bnegate = CarryIn (suma/restaen complemento a 2)
 Añadido código de condición Z.
 Operationy Bnegate: señales de
control de la UAL (3 bits).
Set a31 0 Result0 a0 Result1 a1 0 Result2 a2 0 Operation b31 b0 b1 b2 Result31 Overflow Bnegate Zero ALU0 Less CarryIn CarryOut ALU1 Less CarryIn CarryOut ALU2 Less CarryIn CarryOut ALU31 Less CarryIn 1 1 0 X X Bnegate a + ¬b + 1 ⇒ a - b 2 (10) Less 3 (11) a + b 2 (10) 1 (01) 0 (00) Operation a OR b a AND b Result
35
12. Anticipación de acarreo
El sumador con propagación de acarreo en serie es muy lento ⇒ es muy
importante acelerar su funcionamiento.
 Nos basaremos en el enfoque de la anticipación de acarreo.
Ecuaciones del sumador binario elemental completo:
+ ce cs s b a Para el bit 0: Para el bit 1:
En realidad no haría falta propagar los acarreos, pero las ecuaciones se complican enormemente al incrementar el número de bits.
cs= a·b + (a⊕b)·ce s = a ⊕b ⊕ ce c0 = a0·b0 + (a0⊕b0)·c-1 s0 = a0 ⊕b0 ⊕ c-1 c1 = a1·b1 + (a1⊕b1)·c0 = a1·b1 + (a1⊕b1)·[a0·b0 + (a0⊕b0)·c-1] s1 = a1 ⊕b1 ⊕ c0 = a1 ⊕b1 ⊕[a0·b0 + (a0⊕b0)·c-1]
Construcción de una Unidad Aritmética y Lógica
36
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.
a
ig
ip
ib
ic
i-1s
i+
ce g b a s p+
c e s b a g p37
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
Sobre la expresión de c3 podemos definir sendas funciones G y P de generación y
propagación de acarreo en un bloque de cuatro bits: •G = g3 + p3·g2 + p3·p2·g1 + p3·p2·p1·g0
•P = p3·p2·p1·p0
Y entonces la expresión de c3 queda así:
c3 = g3 + p3·g2 + p3·p2·g1 + p3·p2·p1·g0 + p3·p2·p1·p0·c-1 = G + P · c-1
Construcción de una Unidad Aritmética y Lógica
38
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 2 2 1 1
3 0 0
-1 1
39
Circuito anticipador de acarreo de 4 bits
Ejercicio: añadir la salida c3 al circuito.
c-1 G P g3 p2 g2 p1 g1 p3 p0 g0 c1 c2 c0
Construcción de una Unidad Aritmética y Lógica
40
Anticipación de acarreo
La anticipación de acarreo se puede realizar en forma jerárquica, gracias a las salidas G*y P* del anticipador.
Figura: UAL de 16 bits con dos niveles de anticipación de acarreo.
•Cada UAL de 4 bits contiene una unidad de anticipación de acarreo, y genera 4 bits de resultado, Pi y Gi.
•El segundo nivel de anticipación calcula los acarreos de entrada de las UAL 1, 2 y 3.
CarryIn Result0--3 ALU0 CarryIn Result4--7 ALU1 CarryIn Result8--11 ALU2 CarryIn CarryOut Result12--15 ALU3 CarryIn C1 C2 C3 C4 P0 G0 P1 G1 P2 G2 P3 G3 pi gi pi + 1 gi + 1 ci + 1 ci + 2 ci + 3 ci + 4 pi + 2 gi + 2 pi + 3 gi + 3 a0 b0 a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 a7 b7 a8 b8 a9 b9 a10 b10 a11 b11 a12 b12 a13 b13 a14 b14 a15 b15 Carry-lookahead unit