Documente Academic
Documente Profesional
Documente Cultură
La unidad aritmética y lógica, más conocida por el acrónimo ALU del in-
glés Arithmetic Logic Unit, es un sistema combinacional y/o secuencial
que lleva a cabo operaciones aritméticas, como la suma y la resta, y
lógicas, como AND y OR. Normalmente, la ALU recibe dos datos de en-
trada y produce un resultado a la salida.
La operación AND entre dos valores de n bits se efectúa bit a bit entre
bits del mismo peso y puede ser descrita esquemáticamente así:
Figura 2. 3 - Función OR
S6 S5 Salida selecta
0 0 AND
0 1 OR
1 0 XOR
1 1 UBC
Tabla 2. 1 - Selección del mux
Parecería ser que se cuenta ahora con un sistema dotado de siete seña-
les de control (S6:0) que genera 27 = 128 funciones. Sin embargo, las
combinaciones de S4:0 sólo tienen significado si S6:5=112. El sistema
tiene, en realidad, 27 funciones: 24 de la UBC y las 3 lógicas reciente-
mente añadidas.
S4 S3 S2 S1 S0 C R FUNCIÓN
0 0 0 0 0 0 0 constante, borrar salida
0 0 0 0 1 0 1 constante, uno positivo
0 0 0 1 0 0 -1 constante, uno negativo
0 0 0 1 1 1 0 constante, borrar salida
0 0 1 0 0 0 -1 constante, uno negativo
0 0 1 0 1 1 0 constante, borrar salida
0 0 1 1 0 1 -2 constante, dos negativo
0 0 1 1 1 1 -1 constante, uno negativo
0 1 0 0 0 0 y leer y
0 1 0 0 1 y+1 incrementar y
0 1 0 1 0 0 -y-1 complemento a 1 de y, invertir y
0 1 0 1 1 -y complemento a 2 de y, negar y
0 1 1 0 0 y-1 decrementar y
0 1 1 0 1 1 y leer y
0 1 1 1 0 -y-2 función compleja
0 1 1 1 1 1 -y-1 complemento a 1 de y, invertir y
1 0 0 0 0 0 x leer x
1 0 0 0 1 x+1 incrementar x
1 0 0 1 0 x-1 decrementar x
1 0 0 1 1 1 x leer x
1 0 1 0 0 0 -x-1 complemento a 1 de x, invertir x
1 0 1 0 1 -x complemento a 2 de x, negar x
1 0 1 1 0 -x-2 función compleja
1 0 1 1 1 1 -x-1 complemento a 1 de x, invertir x
1 1 0 0 0 x+y sumar
1 1 0 0 1 x+y+1 función compleja
1 1 0 1 0 x-y-1 función compleja
1 1 0 1 1 x-y restar y de x
1 1 1 0 0 -x+y-1 función compleja
1 1 1 0 1 y-x restar x de y
1 1 1 1 0 -x-y-2 función compleja
1 1 1 1 1 -x-y-1 función compleja
Tabla 2. 2 - Selección de funciones básicas
S6 S5 S4 S3 S2 S1 S0 C R FUNCIÓN
1 1 0 0 0 0 0 0 0 constante, borrar salida
1 1 1 0 0 0 0 0 x leer x
1 1 0 1 0 0 0 0 y leer y
1 1 1 0 1 0 1 1 -x negar x
1 1 1 0 1 0 0 -x-1 invertir x
0 0 0 0 0 0 0 0 xy x and y
0 1 0 0 0 0 0 0 xy x or y
1 0 0 0 0 0 0 0 xy x xor y
1 1 1 1 0 0 0 x+y sumar
1 1 1 1 0 1 1 x-y restar y de x
1 1 1 0 0 0 1 x+1 incrementar x
1 1 1 0 0 1 0 x-1 decrementar x
Tabla 2. 3 - Funciones aritméticas y lógicas selectas
C3 C2 C1 C0 C FUNCIÓN
0 0 0 0 0 borrar
0 0 0 1 0 leer x
0 0 1 0 0 leer y
0 0 1 1 1 negar x
0 1 0 0 not x
0 1 0 1 0 and
0 1 1 0 0 or
0 1 1 1 0 xor
1 0 0 0 sumar
1 0 0 1 restar
1 0 1 0 incrementar x
1 0 1 1 0 decrementar x
Tabla 2. 4 - Funciones de la ALU codificada
1
En algunos microprocesadores, las funciones de incremento y decremento no afectan al aca-
rreo. En estos casos conviene inhibir el paso del bit C.
2
Una función lógica es visible a la salida por selección del multicanalizador de la ALU, sin em-
bargo el bit de acarreo proviene de la UBC y la selección del mux no lo afecta. Debido a la si-
multaneidad de ejecución de operaciones en la etapa de cálculo de la ALU y a que los subsiste-
mas son combinacionales, los operandos también afectan a la UBC. Es posible adoptar una con-
vención al respecto: si el valor lógico de una señal de control puede estar indefinido sin afectar
la ejecución de la operación a cuya palabra de control pertenece, puede definirse con valor lógi-
co 0. En este caso, la combinación de señales de control S4:0 que actúan sobre la UBC estará en
00000, que corresponde a la operación borrar y, por tanto, el acarreo de salida es 0.
2.3.2. Funcionamiento.
Operación Variable
Código de
(abreviatura de estado Descripción de la función
operación
mnemónica) C
0 clr 0 Cero aL Resultado
1 leer a 0 LEER dato A a la salida
2 leer b 0 LEER dato B a la salida
3 neg 0* NEGativo de a
4 not 0* NOT a
5 and 0 AND entre a y b
6 or 0 OR entre a y b
7 xor 0 XOR entre a y b
8 add ADicionar Datos a y b
9 sub SUBstraer b de a
A inc INCrementar a
B dec 0 DECrementar a
Tabla 2. 5 - Funciones de la ALU codificada
En los casos de neg y not (*), se desea que C=0, debido a que ningu-
na de ambas operaciones debería generar acarreo.
f ( x , y , z) 2 x y z 3
; calcular f(x,y,z)
; colocar x en A y en B
add ; R=2x
; colocar resultado en A y en B
sub ; R=2x-y
; colocar z en A y resultado en B
not ; R= z
; colocar resultado en A
add ; R=2x-y+ z
; colocar resultado en A
dec ; R=2x-y+ z -1
; colocar resultado en A
dec ; R=2x-y+ z -2
; colocar resultado en A
dec ; R=2x-y+ z -3
; listo
; calcular f(x,y,z)
; colocar x en A y en B
8 add ; R=2x
; colocar resultado en A y en B
9 sub ; R=2x-y
; colocar z en A y resultado en B
4 not ; R= z
; colocar resultado en A
8 add ; R=2x-y+ z
; colocar resultado en A
B dec ; R=2x-y+ z -1
; colocar resultado en A
B dec ; R=2x-y+ z -2
; colocar resultado en A
B dec ; R=2x-y+ z -3
; listo
.fin
Multiplicando 1 0 1 0 * 1 1 0 1 Multiplicador
1 0 1 0
0 0 0 0
1 0 1 0
1 0 1 0
1 0 0 0 0 0 0 1 0 Producto
Entonces:
La suma de dígitos BCD permite calcular sumas en base decimal sin ne-
cesidad de conversión numérica posterior, por eso es interesante incluir
esta funcionalidad en la ALU.
bc H 3 2 3 1 Ec. 2. 1
El bit más significativo del resultado determina el signo del valor, esto
es: N=r7.
N 0 R es positivo
si
N 1 R es negativo
483
+ 736
483
- 264
a7 a6 a5 a4 a3 a2 a1 A0
+/- b7 b6 b5 b4 b3 b2 b1 B0
-------------------------------------------
r7 r6 r5 r4 r3 r2 r1 r0
# Operación a7 b7 r7 Desborde
1 Suma 0 0 0 No
2 Suma 0 0 1 Sí
3 Suma 0 1 X No
4 Suma 1 0 X No
5 Suma 1 1 0 Sí
6 Suma 1 1 1 No
7 Resta 0 0 X No
8 Resta 0 1 0 No
9 Resta 0 1 1 Sí
10 Resta 1 0 0 Sí
11 Resta 1 0 1 No
12 Resta 1 1 X No
Tabla 2. 6 - Lógica del exceso (X=0 o 1)
0 ; en caso de suma
SR
1; en caso de resta
S4 S3 S2 S1 S0 FUNCIÓN
1 1 0 0 0 Sumar
1 1 0 1 1 Restar y de x
Tabla 2. 7 – Diferencia entre suma y resta
0 ; en caso de suma
SR S4 S3 S0 Ec. 2. 2
1; en caso de resta
2.5.4. Comparación.
x y Condición re-
# Naturaleza C Z N V
sultante
1 No signados = 1 1 X X C Z 1
2 No signados > 1 0 X X C Z 1
3 No signados < 0 0 X X C Z 1
4 Signados = X 1 0 0 Z 1
5 Signados +>+ X 0 0 0
6 Signados +>- X 0 0 0
Z NV 1
7 Signados +>- X 0 1 1
8 Signados ->- X 0 0 0
9 Signados +<+ X 0 1 0
10 Signados -<+ X 0 1 0
Z NZ 1
11 Signados -<+ X 0 0 1
12 Signados -<- X 0 1 0
Tabla 2. 8 - Estados de banderas y condiciones relacionadas
En tal caso las banderas de acarreo (C) y acarreo auxiliar (H) se verían
afectadas debido a que los valores de proceso alimentan simultánea-
mente a los bloques de funciones lógicas y a la UBC. Por ello conviene,
más bien, ajustar las variables H y C a un valor fijo que podría ser cero.
Donde:
2.7. EJERCICIOS.
1. Un diagrama de temporización para la ALU codificada es co-
mo se ve en la figura:
x y Condición re-
# Naturaleza C Z N V
sultante
1 No signados
2 No signados
3 Signados
4 Signados
Tabla 2. 10 - Condiciones con operadores relacionales compuestos
a) f (x) 4 x x 2
b) f (w) 3 x 1 3 1 x
c) f (z) z 3 0F16
d) f (x, y ) 3 x 2 y y 2 x
e) f (x, y ) x x y y 101010102
g) f (x, y, z) x 2 y 3 z 4
h) f (x, y, z) x 2 y y 3 z z 4 x