3.1 ESTRUCTURA Y FUNCIONAMIENTO DE UNA ALU
Todas las operaciones aritméticas se llevan a cabo en la unidad aritmética lógica ALU, En inglés ALU significa Arithmetic Arithmetic Logic Unit Unit (Unidad Aritmética Lógica). El propósito general de la ALU es aceptar los datos binarios que se almacenan en la memoria y ejecutar operaciones aritméticas y lógicas con estos datos según las instrucciones de la unidad de control.
La unidad aritmética lógica contiene cuando menos dos registros de flip-flop: el registro B y el registro acumulador. También contiene lógica combinatoria, la cual realiza las operaciones aritméticas y lógicas con los números binarios que están almacenados en el registro B y en el acumulador.
Una secuencia típica de operaciones puede ocurrir así:
1. La unidad de control recibe una instrucción (de la unidad de memoria) especificando que un número almacenado en una localidad de memoria particular (dirección) se sumara al número que esta almacenando en ese momento el registro acumulador.
2. El número que se sumara se transfiere de la memoria al registro B.
3. El número en el registro B y el número en el registro de acumulador se suman en los circuitos lógicos (mediante un comando desde la unidad de control). Luego la suma resultante se enuncia al acumulador para su almacenamiento.
4. El nuevo número en el acumulador puede permanecer allí, de manera que se le pueda sumar otro número, o, si el proceso aritmético particular ha terminado, se puede transferir a la memoria para ser almacenado.
Estos paso deben de hacer evidente como deriva su nombre el registro acumulador. Este registro acumula las sumas que ocurren cuando se realizan adiciones sucesivas entre nuevos números adquiridos de la memoria y la suma previamente acumulada De hecho, para cualquier problema aritmético que conste de varios pasos el acumulador normalmente contiene los resultados de los pasos intermedios a medida que se can completando así como el resultado final cuando concluyo el problema.
Circuitos aritméticos integrados
Los circuitos aritméticos básicos, debido a su gran uso en múltiples aplicaciones, los encontramos en forma de IC (en una pastilla)
El circuito sumador total típico lo encontramos en forma de 4 sumadores completos independientes o como un sumador de 4 bits capaz de sumar dos palabras binarias de 4 bits.
Si combinamos los circuitos sumadores totales con otros circuitos lógicos, obtendremos:
Sumadores-restadores
Multiplicadores
Selección de Función
Salida N
Función
Descripción
S 1
S 0
C in
N
F
0
0
0
0
A
Transferir A
0
0
1
0
A+1
Incrementar A
0
1
0
B
A+B
Suma ó agregar B a A
0
1
1
B
A+B+1
Suma con acarreo ó agregar B a A más 1
1
0
0
B’
A+B’
Agregar el complemento de 1 de B a A
1
0
1
B’
A+B’+1
Agregar el complemento de 2 de B a A
1
1
0
Todos unos
A-1
Decrementar A
1
1
1
Todos unos
A
Trasferir A
ALU unidades lógicas-aritméticas de múltiples utilidades
Una función esencial de casi todas las computadoras y calculadoras es la realización de operaciones aritméticas, las cuales se efectúan en la unidad aritmetica-logica de una computadora, donde se combinan compuertas lógicas con flip-flops, de manera que puedan, sumar, restar, multiplicar y dividir números binarios. Estos circuitos realizan operaciones aritméticas a velocidades que son humanamente imposibles. Por lo general, una operación de suma tomaría menos de 100ns
Algunos circuitos aritméticos básicos que se usan para realizar las operaciones aritméticas antes mencionadas.
La unidad aritmética lógica opera los datos que recibe siguiendo las indicaciones por la unidad de control. Esta unidad puede realizar operaciones aritméticas lógicas, por ejemplo: el de realizar la suma, la forma en que realiza la operación.
1.- Se debe tener el código de operación que indique la operación a efectuar en este caso el código de suma.
2.- Dirección de la célula en la que se encuentra almacenado el primer sumando.
3.- Dirección del segundo sumando.
4.- Dirección de la célula en la que se almacena el resultado.
Hay diferentes tipos de UAL: especializadas en operaciones con números enteros, con números en coma flotante, etc. Hace algunos años, existía el denominado coprocesador matemático, una UAL especializada en cálculos con números reales que estaba en un microchip diferente al de la CPU.
Esta unidad, de forma concreta se compone básicamente de: Circuito Operacional, Registros de Entradas, Registro Acumulador y un Registro de Estados, conjunto de registros que hacen posible la realización de cada una de las operaciones.
Diseño de una Unidad Aritmética Lógica En el diseño de una ALU se deben seguir los siguientes pasos: 1. Diseñar la sección aritmética independientemente de la sección lógica. 2. Determinar las operaciones lógicas del circuito aritmético, asumiendo que los acarreos de salida de todas las etapas son 0. 3. Modificar el circuito aritmético para obtener las operaciones lógica requerida. El diseño simple de una ALU se hace utilizando el sumador completo para generar las operaciones lógicas de la unidad. Por lo tanto es necesario introducir una variable de control adicional (S 2 ), con el fin de seleccionar entre las operaciones lógicas y aritméticas. En este diseño, un valor recordando la salida de un sumador completo: F = (Ai
B ) i
C in
A partir de esta ecuación, es posible obtener la función lógica requerida, utilizando la debida manipulación lógica. La función requerida se expone en la tabla 3.12.4.
S2 S1 S0 Ai Bi Cin
Operación Sumador Completo
1
0
0
Ai 0
0
Ai
OR
1
0
1
A i Bi
0
Ai
XOR
1
1
0
Ai Bi' 0
Ai·Bi
AND
Aplicar una función OR Ai + Bi'
Ai·Bi
1
1
1
Ai 1
A'i
NOT
Ninguna
A'i
0
Función requerida Fi
Manipulación Aplicar una función OR Ai + Bi Ninguna
Tabla 3.12.4. Tabla de obtención de las funciones lógicas co n un sumador completo
Salida
Ai+Bi Ai
Partiendo de la tabla 3.12.4., las entradas M i, N i y C ini en un sumador completo, son equivalentes a las siguientes expresiones: M i = Ai + S 2·S 1'·S 0'·Bi + S 2·S 1·S 0'·Bi ' N i = S 0·Bi + S 1·Bi ' C ini = S 2'·C i
La figura 3.12.5. muestra el diagrama de la unidad aritmética lógica de dos etapas.
Figura 3.12.5. Diagrama lógico de una ALU
Las doce operaciones generadas en el ALU se resumen en la tabla 3.12.5., la función en particular se selecciona a través de S 2, S1, S0 y Cin. Las operaciones aritméticas son las mismas del circuito aritmético.
Selección
SalidaF
hDescripción
hS 2
hS 1
hS 0
C in
F
0
0
0
0
A
Trasferir A
0
0
0
1
A+1
Incrementar A
0
0
1
0
A+B
Suma
0
0
1
1
A+B+1
Suma con acarreo
0
1
0
0
A-B-1
Resta con préstamo
0
1
0
1
A-B
Sustracción
0
1
1
0
A-1
Decrementar A
0
1
1
1
A
Transferir A
1
0
0
X
A+B
OR
1
0
1
X
A
OR-Exclusiva
1
1
0
X
A·B
AND
1
1
1
X
A’
Complementar A
Tabla 3.12.5. Tabla de verdad de una ALU