Unidad Aritmética Lógica:
ALU
Una ALU (Unidad Aritmética-Lógica) es un circuito
que permite, como su nombre lo indica, realizar
operaciones lógicas y aritméticas.
Además de los operadores lógicos y aritméticos, la
ALU cuenta con una serie de registros para
almacenar los datos, y bits de información sobre los
resultados, también llamados banderas.
Las banderas más comunes son: Carry, Auxiliary
Carry, Borrow, Overflow, Parity, Zero.
La
ALU
El símbolo de una ALU:
ALU Banderas
A B
La
ALU
El circuito ALU es simplemente un operador, es decir,
sólo realiza operaciones.
La ALU no toma decisiones.
Las entradas deben contener tanto la magnitud como
el signo que corresponda a la operación.
La ALU requiere de un mecanismo de control que le
permita saber el tipo de operación a realizar.
Diseño de una
ALU
Una forma de construir
A[0]
B[0]
una ALU simple es NA
ALU Bit Slice
mediante una célula de NB
Cin
tipo “bit-slice”.
C[1] FA
Señales
A and B de
Esta célula /B control
realizar
permite la suma ó /A
alguna operación lógica A xor B; [A+B]
A or B
entre 2 bits. S[0]
MUX
12
Diseño de una
ALU
En principio, la célula basada
en un Full Adder permite
A[0]
B[0]
realizar operaciones de ALU Bit Slice
NA
SUMA, RESTA, AND, OR, XOR y NB
NOT. Cin
Las funciones AND y XOR se
toman de las salidas de Carry- C[1] FA
Señales
Out y Suma Respectivamente. A and B de
/B control
/A
Esta arquitectura tiene A xor B; [A+B]
limitante
la que, para las A or B
funciones AND y XOR, S[0]
requiere de que tanto A como
se
B no estén negados, y que el MUX
Carry-In sea ‘0’.
13
Diseño de una
ALU
Si A, o B están negadas, o si el Carry-in es ‘1’. Entonces las salidas de Carry-Out y de
Suma no pueden ser utilizadas para generar las funciones AND y XOR
respectivamente:
A[0]
B[0]
NA
ALU Bit Slice
NB
Cin
Solución: Dividir el Full
Adder en dos Half Adder.
Full Adder
C[1] FA A
Señales A
A and B de S
/B control B
B
S
Co
/A
Co
A xor B; [A+B]
A or B A
S
S[0] Cin
B
Co
MUX
14
Diseño de una
ALU
La célula bit-slice quedaría de la
A[0]
B[0]
siguiente forma: ALU Bit Slice 2
NA
NB
Full Adder Ci
n
C[1]
La función AND proviene HA
del CarryOut del primer HA
Señales de
HA control
A and B
La función XOR proviene de /B
la Suma del primer HA
/A
A xor B
A or B
S[0] A+B
MUX
15
Diseño de una
ALU
Varias células bit-slice permiten construir una ALU más compleja:
A[0]
B[0] Célula ALU
Cin
C[1]
ALU Con trol
Bit Slice
S[0]
A[3]
B[3]
A[2]
B[2]
A[1]
B[1]
B[0]
A[0]
ALU en arquitectura paralela C[3] C[2] C[1]
C[1]
de tipo Carry Ripple Co ALU ALU ALU ALU
Con trol
ALU 4 bits
S[3]
S[2]
S[1]
S[0]
¿Qué debemos agregar para obtener los bits de Overflow, Negativo, Zero?
16
La
ALU
Otro tipo de célula que se puede emplear es a base
de multiplexores:
17
La
ALU
Partes de la ALU:
Sumador/restador rápido
Operadores lógicos (AND, OR, XOR, NOT)
Un acumulador y un registro auxiliar
Un registro de salida
Señales de control que indiquen la operación a
realizar
Registro de banderas de estatus
La
ALU
La ALU deberá contar con un circuito de control que le
permita:
Identificar la operación a realizar
Administrar los recursos internos de la ALU que requiera la
operación
Generar las banderas de estatus