2. La unidad aritmética lógica o unidad
aritmético-lógica, también conocida como ALU,
es un circuito digital que realiza operaciones
aritméticas (suma, resta) y operaciones lógicas
(SI, Y, O, NO) entre los valores de los argumentos
(uno o dos) binarios.
Por mucho, los circuitos electrónicos más
complejos son los que están construidos dentro de
los chips de microprocesadores modernos. Por lo
tanto, estos procesadores tienen dentro de ellos
un ALU muy complejo y potente. De hecho, un
microprocesador moderno puede tener
múltiples núcleos, cada núcleo con
múltiples unidades de ejecución, cada una de ellas
con múltiples ALU.
Dispositivos actuales con CPU que
contienen una ALU compleja:
Televisores Inteligentes
GPUs
3. Propuesta de Von Neumann
El matemático John von Neumann propuso el concepto de
la ALU en 1945, cuando escribió un informe sobre las
fundaciones para un nuevo computador
llamado EDVAC (Electronic Discrete Variable Automatic
Computer) (Computador Automático Variable Discreto
Electrónico). Más adelante, en 1946, trabajó con sus
colegas diseñando un computador para el Princeton
Institute of Advanced Studies (IAS) (Instituto de Princeton
de Estudios Avanzados). El IAS computer se convirtió en el
prototipo para muchos computadores posteriores. En esta
propuesta, von Neumann esbozó lo que él creyó sería
necesario en su máquina, incluyendo una ALU.
Von Neumann explicó que una ALU es un requisito
fundamental para una computadora porque necesita
efectuar operaciones matemáticas básicas: adición,
sustracción, multiplicación, y división.
Por lo tanto, creyó que era "razonable que una
computadora debería contener los órganos especializados
para estas operaciones”
4. Operaciones de La ALU
Operaciones simples
• Operaciones aritméticas de
números enteros (adición,
sustracción, y a veces
multiplicación y división, aunque
esto es más complejo).
• Operación lógica de bits (AND,
NOT, OR, XOR, XNOR).
• Operación de desplazamiento de
bits (Desplazan o rotan una palabra
en un número específico de bits
hacia la izquierda o la derecha, con
o sin extensión de signo). Los
desplazamientos pueden ser
interpretados como
multiplicaciones o divisiones por 2.
Operaciones complejas
Un ingeniero digital examinará las opciones siguientes para diseñar una
ALU que:
• Calcule la raíz cuadrada de cualquier número en un solo paso. Esto es
llamado cálculo en un solo ciclo de reloj.
• Calcule la raíz cuadrada con varios pasos (como el algoritmo que
algunos hemos aprendido en la escuela). Esto es llamado cálculo
iterativo, y generalmente confía en el control de una unidad de control
compleja con microcódigo incorporado.
• Diseñar una ALU simple en el procesador, y vender un procesador
separado, especializado y costoso, que el cliente pueda instalar
adicional al procesador, y que implementa una de las opciones de
arriba. Esto es llamado coprocesador o unidad de coma flotante.
• Emular la existencia del coprocesador, es decir, siempre que un
programa intente realizar el cálculo de la raíz cuadrada, hacer que el
procesador compruebe si hay presente un coprocesador y usarlo si lo
hay; si no hay uno, interrumpir el proceso del programa e invocar al
sistema operativo para realizar el cálculo de la raíz cuadrada por medio
de un cierto algoritmo de software. Esto es llamado emulación por
software.
• Decir a los programadores que no existe el coprocesador y no hay
emulación, así que tendrán que escribir sus propios algoritmos para
calcular raíces cuadradas por software. Esto es realizado por
bibliotecas de software.
5. Entradas y salidas
Las entradas a la ALU son los datos en los que se harán las operaciones (llamados operandos) y un
código desde la unidad de control indicando qué operación realizar. Su salida es el resultado del
cómputo de la operación.
En muchos diseños la ALU también toma o genera como entradas o salidas un conjunto de códigos
de condición desde o hacia un registro de estado. Estos códigos son usados para indicar casos
como acarreo entrante o saliente, overflow, división por cero, etc.
En una operación que podría ser una suma que le
pedimos al computador, nuestros datos de entrada
serian 3 y 2, para que nos arroje un el resultado de la
misma.
3 + 2 = 5
Operando Operando Resultado