Organización del Computador I Verano
Aritmética (2 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy
Verano 2004 Profesora Borensztejn
ALU de 1 bit• ALU de un bit con operaciones de:
– Suma y Resta– And– Or– Setear si Menor (SLT)
• Elementos básicos:
b
c
c
ba
a
a
c
Sumador de 1 bit
Sum
CarryIn
CarryOut
a
b
cout = a b + a cin + b cin
sum = a xor b xor cin
a b Cin Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Multiplexores
• Necesitamos seleccionar la operación:– suma
– and
– or
En función de S, seleccionamos A o B.
S
C
AB
S
CA
B
CD
2
ALU de 1 bit
b
0
2
Result
Operation
a
1
CarryIn
CarryOut
ALU de 32 bit
b
0
2
Result
Operation
a
1
CarryIn
CarryOut
Result31a31
b31
Result0
CarryIn
a0
b0
Result1a1
b1
Result2a2
b2
Operation
ALU0
CarryIn
CarryOut
ALU1
CarryIn
CarryOut
ALU2
CarryIn
CarryOut
ALU31
CarryIn
ALU con resta
0
2
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b
ALU con SLT0
3
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b 2
Less
0
3
Result
Operation
a
1
CarryIn
0
1
Binvert
b 2
Less
Set
Overflowdetection
Overflow
a.
b.
Si A<B entonces 1sino 0 .
Como funciona?
ALU completa
Seta31
0
ALU0 Result0
CarryIn
a0
Result1a1
0
Result2a2
0
Operation
b31
b0
b1
b2
Result31
Overflow
Binvert
CarryIn
Less
CarryIn
CarryOut
ALU1Less
CarryIn
CarryOut
ALU2Less
CarryIn
CarryOut
ALU31Less
CarryIn
ALU de 32 bits
3 Líneas de Control Bnegate y Operación(2)
000 = and001 = or010 = add110 = subtract111 = slt
Overflow?
Seta31
0
Result0a0
Result1a1
0
Result2a2
0
Operation
b31
b0
b1
b2
Result31
Overflow
Bnegate
Zero
ALU0Less
CarryIn
CarryOut
ALU1Less
CarryIn
CarryOut
ALU2Less
CarryIn
CarryOut
ALU31Less
CarryIn
ALU de 32 bits
Líneas de Control
000 = and001 = or010 = add110 = subtract111 = slt
l
32
32
32
A
B
Op
Resultado
AL
U
Cero
Conclusión
• Hemos construido una ALU que soporta el juego de instrucciones MIPS– usamos un multiplexor para seleccionar la salida
– replicamos la ALU de 1 bit para conseguir la de 32 bits
• Cosas importantes del hardware– todas las puertas estan siempre trabajando
– la velocidad de una puerta está afectada por el número de entradas de la puerta
– la velocidad del circuito está afectada por el número de puertas en serie
Sumador con Anticipación de Acarreo
• En el sumador de 32 bits que acabamos de diseñar, cada sumador de un bit puede determinar en paralelo el valor de Si, pero el Cout depende del sumador anterior.
• Es decir, hay una cadena de dependencias desde el sumador del bit mas bajo hasta el sumador del bit mas alto muy costoso en tiempo.
Acarreo Rápido
a31
b31
a0
b0
a1
b1
a2
b2
ALU0
Carry In
CarryOut
ALU1
Carry In
CarryOut
ALU2
Carry In
CarryOut
ALU31
Carry In
c0
c1=a0b0+a0c0+b0c0
c2=a1b1+a1c1+b1c1
c32=a31b31+a31c31+b31c31
c3=a2b2+a2c2+b2c2
c31=a30b30+a30c30+b30c30
Acarreo Rápido
a31
b31
a0
b0
a1
b1
a2
b2
ALU0
Carry In
CarryOut
ALU1
Carry In
CarryOut
ALU2
Carry In
CarryOut
ALU31
Carry In
c0
c1=a0b0+a0c0+b0c0
c2=a1b1+a1c1+b1c1
c32=a31b31+a31c31+b31c31
c3=a2b2+a2c2+b2c2
c31=a30b30+a30c30+b30c30
Reemplazamos !!
Reemplazamos !!
Reemplazamos !!
Acarreo Rápido
a31
b31
a0
b0
a1
b1
a2
b2
ALU0
Carry In
CarryOut
ALU1
Carry In
CarryOut
ALU2
Carry In
CarryOut
ALU31
Carry In
c0
c1=a0b0+a0c0+b0c0
c2=a1b1+a1a0b0+a1a0c0+a1b0c0 + b1a0b0+b1a0c0+b1b0c0
La ecuación de Cn crece exponencialmente con n se vuelve muy cara de implementar en hardware
Método de Anticipación de Acarreo
Ci+1=aibi+aici+bici
El término gi, genera acarreo, independientemente de ci
Ci+1=aibi+ci (ai+bi)
gi = aibi pi = ai + bi
Ci+1=gi+ci pi
El término pi, propaga el acarreo proveniente de ci
Para un sumador de 4 bits
Fijense que las ecuaciones se complican si crece n!!
Solución: realizar un sumador de n bits utilizando módulos de 4-bit con anticipación de acarreo.
gi = aibi
pi = ai + bic1=g0+p0 c0
c2=g1+(p1g0)+(p1p0 c0)
c3=g2+(p2g1)+(p2p1 g0 )+(p2p1p0 c0) c0
c4=g3+(p3g2)+(p3p2 g1 )+(p3p2p1 g0)+ (p3p2p1 p0)c0
Ci+1=gi+ci pi
Sumador de 16 bits con módulos de 4 bits
c4=g3+(p3g2)+(p3p2 g1 )+(p3p2p1 g0)+ (p3p2p1 p0)c0
C1= G0 +(P0c0)
P0G0
P0
G0
c0
a0a1a2a3b0b1b2b3
ALU0Módulo de 4 bits
Sumador de 16 bits
ci+4
P0
G0
c0
a0a1a2
a3
b0b1b2b3
ALU0
P1
G1
a4a5a6
a7b4b5b6b7
ALU1
P2
G2
a8a9a10
a11
b8b9b10b11
ALU2
P3
G3
a12a13a14
a15b12b13b14b15
ALU3
pi
pi+1
pi+2
pi+3
gi
gi+1
gi+2
gi+3
ci+1
ci+2
ci+3
C2
C1
C3
C4
S0..3
S4..7
S8..11
S12..15
Toda la lógica empieza a evaluar al mismo tiempo, una vez que llega a un estado estable, se mantiene.
C1= G0 +(P0c0)
C2= G1 +(P1G0) +(P1P0c0)
C3= G2 +(P2G1) +(P2P1G0) +(P2P1P0c0)
C4= G3 +(P3G2) +(P3P2G1) +(P3P2P1G0) +(P3P2P1P0c0)
Estimación de tiempos
• Vamos a calcular el rendimiento relativo entre el sumador con propagación de acarreo y el que anticipa el acarreo.
• Suponemos que los retardos son los mismos para todas las puertas el retardo es igual al número de puertas que la señal deba atravesar.
• Para cada diseño, sumaremos los retardos del camino crítico (el más largo).
Estimación de tiempos• Para el sumador con propagación:
– La salida carry atraviesa dos puertas 2 por bit16 bits *2=32
• Para el sumador con anticipación:– La salida C4 es una suma de productos (puertas AND,
luego puertas OR) de términos P y G. Dos niveles de puertas.
– P es un AND (un nivel)– G es suma de productos (dos niveles de puertas)– El peor caso sería: 2+1+2=5
• Conclusión: – El sumador con anticipación es 6 veces más rápido que
el sumador con propagación de acarreo.
FIN Construcción de una
ALU
Top Related