Una unidad aritmética lógica puede realizar un conjunto de
operaciones aritméticas básicas y un conjunto de operaciones lógicas, a través
de líneas de selección. En inglés ALUsignifica Arithmetic Logic Unit (Unidad Aritmética Lógica).
ESTRUCTURA BÁSICA
Las cuatro entradas de A se combinan con las de B generando una operación de salida de cuatro bits en F. La entrada de selección de modo S2 distingue entre las operaciones aritméticas y lógicas. Las entradas de selección S0 y S1 determinan la operación aritmética o lógica. Con las entradas S0 y S1 se pueden elegir cuatro operaciones aritméticas. Los acarreos de entrada y salida tienen sentido únicamente en las operaciones aritméticas. El diseño de una ALU implica el diseño de la sección aritmética, la sección lógica y la modificación de la sección aritmética para realizar las operaciones aritméticas y lógicas.
BANDERAS DE RESULTADO
Unidad de coma flotante
Una unidad de coma flotante o, también conocido como coprocesador matemático, es un componente de la unidad central de procesamiento especializado en el cálculo de
operaciones en coma flotante.
Las operaciones básicas que toda FPU puede realizar son la suma y
multiplicación usuales, si bien algunos sistemas más complejos son capaces
también de realizar cálculos trigonométricos o exponenciales.
No todas las unidades centrales de
procesamiento tienen una FPU dedicada. En ausencia de FPU, la CPU puede
utilizar programas en microcódigo para emular una función en coma
flotante a través de la unidad aritmético lógica (ALU), la cual reduce el coste del hardware a cambio de una sensible pérdida de
velocidad.
En algunas arquitecturas, las
operaciones en coma flotante se tratan de forma completamente distinta a las
operaciones enteras, con registros dedicados
y tiempo de ciclo diferentes. Incluso para operaciones
complejas, como la división, podrían tener un circuito dedicado a dicha operación.
Hasta mediados de la década de 1990,
era común que las CPU no incorporasen una FPU en los ordenadores domésticos,
sino que eran un elemento opcional conocido como coprocesador. Ejemplos podrían
ser las FPUs 387 y 487 que se utilizaban en las unidades centrales de
procesamiento Intel 80386 e Intel 80486SX en máquinas Intel Pentium,
o la FPU 68881 utilizada en las unidades centrales de
procesamiento 680x0 en ordenadoresMacintosh.
Cabe destacar que en los países
anglosajones, numéricamente se hace uso del punto como separador de unidades en
vez de la reconocida internacionalmente en elSistema Internacional de Unidades,
la coma, por esa razón la traducción más correcta sería "unidad de coma
flotante" porque sus operaciones desplazan la coma de los decimales.
Operaciones simples
La mayoría de las ALU pueden
realizar las siguientes operaciones:
·
Operaciones lógicas de bits (AND, NOT, OR, XOR, XNOR)
·
Operaciones 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 puede diseñar una
ALU para calcular cualquier operación, sin importar lo compleja que sea; el
problema es que cuanto más compleja sea la operación, tanto más costosa será la
ALU, más espacio usará en el procesador, y más energía disipará, etc.
Por lo tanto, los ingenieros
siempre calculan un compromiso, para proporcionar al procesador (u otros circuitos) una ALU suficientemente
potente para calcular rápido, pero no de una complejidad de tal calibre que
haga una ALU económicamente prohibitiva. Imagina que necesitas calcular, digamos, la raíz cuadrada de un número;
el ingeniero digital examinará las opciones siguientes para implementar esta
operación:
1. Diseñar una ALU muy compleja 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.
2. Diseñar una ALU compleja que
calcule la raíz cuadrada con varios pasos (como el algoritmo que aprendimos 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.
3. 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.
4. 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.
5. 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.
Las opciones superiores van de la
más rápida y más costosa a la más lenta y económica. Por lo tanto, mientras que
incluso la computadora más simple puede calcular la fórmula más complicada, las
computadoras más simples generalmente tomarán un tiempo largo porque varios de
los pasos para calcular la fórmula implicarán las opciones #3, #4 y #5 de
arriba.
Los procesadores complejos como
el Pentium IV y el AMD Athlon 64 implementan la opción #1
para las operaciones más complejas y la más lenta #2 para las operaciones
extremadamente complejas. Eso es posible por la capacidad de construir ALU muy
complejas en estos procesadores.
Sección Lógica
Los datos de entrada en una operación lógica son manipulados en
forma separada y los bits son tratados como variables binarias. En la tabla 3.12.1.
se listan cuatro operaciones lógicas OR, OR - Exclusiva, AND y NOT. En el circuito, las dos
líneas de selección (S1, S0) permiten seleccionar
una de las compuertas de entrada, correspondientes a la función Fi.
S1
|
S0
|
Salida
|
Función Fi
|
0
|
0
|
F=Ai+Bi
|
OR
|
0
|
1
|
F=AiBi
|
XOR
|
1
|
0
|
F=Ai·Bi
|
AND
|
1
|
1
|
F=A'i
|
NOT
|
Tabla 3.12.1. Tabla de
Función Lógica.
El circuito lógico de la figura 3.12.2 es una etapa de un
circuito lógico de n bits.
Figura 3.12.2. Diagrama
lógico de un circuito lógico de una ALU
El componente básico de la sección aritmética es un sumador en
paralelo. Las operaciones
aritméticas configuradas en el circuito aritmético se presentan en la tabla
3.12.2. En una ALU, la
suma aritmética se puede implementar con un número binario en A, otro número en la entrada B y
el acarreo de entrada Cin en un valor lógico 0. El resto de las funciones se
enuncian en la columna descripción.
Selección de Función
|
Salida N
|
Función
|
Descripción
|
||
S1
|
S0
|
Cin
|
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
|
Tabla 3.12.2. Tabla de
la Función F en un Circuito Aritmético
La implementación de las funciones anteriores por medio de un
circuito lógico sencillo se describe a continuación. El circuito se diseña bajo
el precepto de intervenir cada entrada Bipara
obtener las siguientes funciones:
S1
|
S0
|
Ni
|
0
|
0
|
0
|
0
|
1
|
Bi
|
1
|
0
|
Bi'
|
1
|
1
|
1
|
Tabla 3.12.3. Tabla del circuito
para la entrada Bi
La figura 3.12.3. muestra el circuito.
Figura 3.12.3. Circuito
para la tabla 3.12.2.
Por medio de estas funciones se pueden lograr las funciones de
la tabla 3.12.2 al agregar el número Ni (tabla 3.12.3) a la entrada A a través
de un sumador en paralelo para cada etapa, teniendo en cuenta el valor de la
entrada Cin. El circuito combinacional aritmético se muestra en la
figura 3.12.4. En la figura, la entrada A se denomina Mi en el sumador completo.
Figura 3.12.4. Circuito
aritmético
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 requeridas.
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 (S2), con el fin de
seleccionar entre las operaciones lógicas y aritméticas.
F = (Ai Bi)Cin
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
|
Función requerida Fi
|
Manipulación
|
Salida
|
1
|
0
|
0
|
Ai
|
0
|
0
|
Ai
|
OR
|
Aplicar una función OR Ai + Bi
|
Ai+Bi
|
1
|
0
|
1
|
Ai
|
Bi
|
0
|
Ai
|
XOR
|
Ninguna
|
Ai
|
1
|
1
|
0
|
Ai
|
Bi'
|
0
|
Ai·Bi
|
AND
|
Aplicar una función OR Ai + Bi'
|
Ai·Bi
|
1
|
1
|
1
|
Ai
|
1
|
0
|
A'i
|
NOT
|
Ninguna
|
A'i
|
Tabla 3.12.4. Tabla de obtención
de las funciones lógicas con un sumador completo
Partiendo de la tabla 3.12.4., las entradas Mi, Ni y Cini en un sumador completo, son
equivalentes a las siguientes expresiones:
Mi = Ai + S2·S1'·S0'·Bi + S2·S1·S0'·Bi'
Ni = S0·Bi + S1·Bi'
Cini = S2'·Ci
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 S2, S1, S0 y Cin.
Las operaciones aritméticas son las mismas del circuito aritmético.
Selección
|
Salida F
|
hDescripción
|
|||
hS2
|
hS1
|
hS0
|
Cin
|
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 accarreo
|
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
|
El coprocesador matemático es un procesador especial que sirve como complemento del microprocesador principal. El coprocesador matemático puede encargarse de operaciones como la aritmética de punto flotante, gráficos, procesamiento de señales, procesamiento de cadenas, encriptación, del filtro de Savitzky–Golay (método para cálculo de derivadas), etc. Por lo tanto, el coprocesador no es un procesador de propósito general. Algunos coprocesadores no pueden buscar instrucciones desde la memoria, ejecutar instrucciones de control de flujo, hacer operaciones de entrada/salida, administrar la memoria, entre otras cosas, que sí pueden hacer los procesadores de propósito general. El coprocesador depende de un procesador anfitrión o "host" para entregarle instrucciones al coprocesador. De todas maneras, en algunas arquitecturas, el coprocesador tiene un funcionamiento más de propósito general, pero con un limitado rango de funciones y siempre bajo la supervisión del procesador principal. El uso de coprocesadores disminuyó debido a la dificultad de integrar este con los nuevos microprocesadores de altas velocidades. De todas maneras hay un resurgimiento de estos, especialmente para aquellos dedicados a los gráficos, que cada vez son más complejos en los juegos.
Podrían subir los circuitos de diseño compleja . Por favor
ResponderBorrar