Professional Documents
Culture Documents
Este bloque esta destinado a realizar las operaciones aritmticas y lgicas del microprocesador, es
decir, es la unidad que hace todo el procesamiento. Esta unidad adems de realizar las operaciones
aritmticas y lgicas, tambin realiza el clculo de las direcciones para el manejo de bloques de
datos o arreglos en la memoria de datos.
La ALU es de 16 bits y esta implementada con un esquema de acarreo anticipado por generacin y
propagacin para tener un tiempo de respuesta de 2 retardos de propagacin de forma constante
para la obtencin de los acarreos. En la ilustracin 1 se muestra el bloque de la ALU.
Bandera C (carry). Esta bandera muestra el valor que tiene el ltimo acarreo de la ALU, en el
caso de una ALU de 16 bits, el acarreo C16 es la bandera C.
Bandera N (negative). Esta bandera muestra el valor que tiene el bit ms significativo (bit de
signo) del bus del resultado, en el caso de una ALU de 16 bits, el bit 15 de resultado es la
bandera N. Cuando N tiene 1 significa que el resultado es negativo, de lo contrario es positivo.
Bandera OV (overflow). Esta bandera es usada para operaciones aritmticas con signo.
Cuando OV = 1 marca un desbordamiento en el resultado, lo que significa que el resultado no
se puede representar con los bits que tenemos para el resultado. Esto se logra con una
compuerta XOR entre los dos acarreos ms significativos, en el caso de una ALU de 16 bits,
la entrada de la compuerta XOR es C16 y C15.
Las operaciones aritmticas y lgicas que se pueden realizar dependen de la arquitectura
diseada de la ALU. En la ilustracin 2, podemos observar la arquitectura para un bit del ALU del
ESCOMIPS.
Las operaciones bsicas que se pueden realizar con la arquitectura elegida son:
Ainvert
Binvert
Op(1)
Op(0)
Operacin
ALUOP(3) ALUOP(2) ALUOP(1) ALUOP(0)
0
= a b + a b
Operacin lgica XOR
Re sultado = a b
= a b + a b = a b + a b
Operacin aritmtica
Re sultado = a + b
Operacin aritmtica
Re sultado = a b
Operacin lgica XNOR
Banderas que
afecta la
operacin
NZ
NZ
NZ
NZ
N Z C OV
N Z C OV
NZ
Re sultado = a b = a b + a b
1
= ab + ab = a b
Operacin lgica XNOR
NZ
Re sultado = a b = a b + a b
1
= ab + ab = a b
Operacin lgica NAND
Re sultado = a + b = a b
Teorema de DeMorgan
Operacin lgica NOR
Re sultado = a b = a + b
Teorema de DeMorgan
Operacin lgica NOT
usando la compuerta
universal NAND. si a = b
Re sultado = a + a = a a = a
Operacin lgica NOT
usando la compuerta
universal NOR. si a = b
Re sultado = a a = a + a = a
NZ
NZ
NZ
NZ
Para verificar el correcto funcionamiento de la ALU vamos a usar los valores de prueba mostrados
en la tabla 1.
Estado de Banderas
OV
0
0
0
0
0
0
0
0
N
0
0
0
1
1
0
1
0
Z
0
0
0
0
0
1
0
0
C
1
0
0
0
0
0
0
0
OV
OV
0
0
0
1
1
0
1
0
Operacin
0
0
0
1
1
0
1
1
1
1
0
0
1
1
1
1
0
0
1
1
0
0
1
0
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
0
1
0
0
1
Cn
A=5
B = -2
A+B
A-B
AND
NAND
OR
NOR
XOR
XNOR
1
0
0
1
1
1
1
1
1
0
1
0
0
1
1
0
Cn
A=5
B=7
A+B
1
0
0
0
1
1
1
1
0
0
1
0
0
0
1
0
1
1
0
0
Cn
A
B
A-B
NAND
(NOT)
Casos a analizar.
Condicin A = B
Condicin A > B
C3
1
0
1
0
C2
0
1
1
0
C1
0
0
0
0
C0
Bandera Valor
0
Z
1
0
C
1
0
N
0
0
OV
0
Si A = B = 10
Tenemos: 10 = 10 10 10 = 0 10 + (10) = 0
C4
1
C3
C2
C1
C0
1
1
0
0
10
1
0
1
0
-10
0
1
1
0
0
0
0
0
En ambos ejemplos las banderas Z = C = 1 .
Bandera Valor
Z
1
C
1
N
0
OV
0
Condicin A > B .
Para analizar esta condicin observemos los siguientes ejemplos:
Si A = 7, B = 3
Tenemos: 7 > 3 7 3 > 0 7 + (3) > 0
C4
1
C3
1
0
1
0
C2
1
1
1
1
C1
1
1
0
0
C4
1
C3
1
1
0
0
C2
1
0
1
0
C1
0
1
1
0
7
-3
10
-9
C0
Bandera Valor
0
Z
0
1
C
1
1
N
0
0
OV
0
Si A = 10, B = 9
Tenemos: 10 > 9 10 9 > 0 10 + (9) > 0
C0
0
0
1
1
Bandera Valor
Z
0
C
1
N
0
OV
0
En resumen las condiciones para nmeros sin signo son las siguientes:
Condicin
A=B
A B
A>B
A B
A< B
A B
Banderas
Z = 1, C = 1
EQ = Z C
En la prctica: EQ = Z
NE = Z C
En la prctica: NE = Z
Z = 0, C = 1
G = Z C
GE = Z C + Z C
GE = C ( Z + Z )
GE = C
L=C
LE = C + Z C
LE = C 1 + Z C
LE = C ( Z + 1) + Z C
LE = C Z + C + Z C
LE = Z (C + C ) + C
LE = Z + C
C3
1
0
1
0
C2
1
1
1
1
C1
1
1
0
0
C0
0
1
1
0
Bandera Valor
Z
0
C
1
N
0
OV
0
C3
1
1
0
0
C2
0
1
1
0
C1
0
1
0
1
C0
0
0
1
1
Bandera Valor
Z
0
C
1
N
0
OV
0
Vamos a analizar el caso de A > B cuando las cantidades tienen signos diferentes. Observemos el
siguiente ejemplo:
Si A = 7, B = 5
Tenemos: 7 > 5 7 + 5 > 0
C4
1
7
5
C3
1
0
0
1
C2
0
1
1
1
C1
0
1
0
0
C0
0
1
1
0
Bandera Valor
Z
0
C
0
N
1
OV
1
Podemos observar que las banderas de signo (N) y la de overflow (OV) son iguales. Adems la
bandera Z = 0 .
En resumen las condiciones para nmeros con signo son las siguientes:
Condicin
A=B
A B
A>B
A B
Banderas
Z = 1, C = 1
E = Z C
En la prctica: E = Z
NE = Z C
En la prctica: NE = Z
Z = 0, N = 0, OV = 0
Z = 0, N = 1, OV = 1
G = Z N OV
GE = Z N OV + Z
GE = Z N OV + Z 1
GE = Z N OV + Z ( N OV + 1)
GE = Z N OV + Z N OV + Z
GE = N OV ( Z + Z ) + Z
A< B
GE = N OV + Z
L = N OV + Z
L = ( N OV ) Z
A B
L = ( N OV ) Z + Z
L = ( N OV ) Z + Z 1
L = ( N OV ) Z + Z (1 + ( N OV ))
L = ( N OV ) Z + Z + Z ( N OV )
L = ( N OV ) ( Z + Z ) + Z
L = ( N OV ) + Z