lunes, 16 de mayo de 2011

Operaciones de la Unidad Aritmética Lógica (ALU)

OPERACIONES DE LA UNIDAD ARITMETICA LOGICA:
En computación, la unidad aritmético lógica, también conocida como ALU (siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos números.
Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se mantiene comprobando si debe activar el pitido del temporizador, etc.
Por mucho, los más complejos circuitos electrónicos 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 (y los mainframes) pueden tener múltiples núcleos, cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU.
Muchos otros circuitos pueden contener en el interior una unidad aritmético lógica: unidades de procesamiento gráfico como las que están en las GPU NVIDIA y AMD, FPU como el viejo coprocesador matemático 80387, y procesadores digitales de señales como los que se encuentran en tarjetas de sonido Sound Blaster, lectoras de CD y los televisores de alta definición. Todos éstos tienen en su interior varias ALU potentes y complejas.
ARQUITECTURA DEL ALU:

Unidad de aritmética lógica, es un circuito electrónico que realiza operaciones aritméticas y lógicas, es también una de las partes importantes del CPU.
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 la 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 está garantizado que tendrá que efectuar operaciones matemáticas básicas, incluyendo adición, sustracción, multiplicación, y división.[1] Por lo tanto, creyó que era "razonable que una computadora debería contener los órganos especializados para estas operaciones".

REGISTRO (HARDWARE):

En arquitectura de ordenadores, un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones matemáticas.
Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits". Los registros generalmente se implementan en un banco de registros, pero antiguamente se usaban biestables individuales, memoria SRAM o formas aún más primitivas.
El término es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instrucción, como está definido en el conjunto de instrucciones. Sin embargo, los microprocesadores tienen además muchos otros registros que son usados con un propósito específico, como el contador de programa. Por ejemplo, en la arquitectura IA32, el conjunto de instrucciones define 8 registros de 32 bits.

TIPOS DE REGISTROS:

  • Los registros de datos son usados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador.
  • Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.
  • Los registros de propósito general (en inglés GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.
  • Los registros de coma flotante son usados para guardar datos en formato de coma flotante.
  • Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro cero siempre vale 0.
  • Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.
REPRESENTACIÓN INTERNA DE DATOS:
Toda la información que maneja el ordenador se representa mediante dos símbolos básicos, el ordenador es capaz de construir, almacenar y representar distintos tipos de información, mediante la codificación de la información, entre los que se distinguen 5 tipos de representaciones claramente:

       Representación de textos: Usualmente la información se da al ordenador en la forma usual escrita que utilizan los seres humanos; es decir, con ayuda de un alfabeto o conjunto de símbolos, que denominaremos caracteres.

       Representación de valores numéricos: Los datos numéricos se suelen introducir como cualquier otro conjunto de caracteres.

       Representación de instrucciones: Las instrucciones de un programa en lenguaje de alto nivel o en lenguaje ensamblador se dan en forma de texto y el traductor correspondiente, ya sea un compilador o intérprete, se encarga de transformarlas en instrucciones máquina. Son las que entiende el ordenador.

       Representación de sonidos: Los ordenadores actuales, además de procesar textos y datos numéricos, también operan con otro tipo de elementos, como sonidos, digitalizados y representados en binario en el interior del ordenador, mediante distintas codificaciones del sonido.

       Representación de imágenes: Al igual que los sonidos, las imágenes tanto estáticas como dinámicas poseen su representación y codificación binaria digital en el interior de los ordenadores. Siendo la codificación de las imágenes una de las técnicas que más están evolucionando en los últimos tiempos debido al auge de los sistemas multimedia.

La codificación va a facilitar y optimizar las tareas de almacenamiento, representación, procesamiento y comunicación de la información. Algunos de los condicionantes que encontraremos a la hora de codificar la información son los siguientes:

·         La memoria del ordenador es finita, por lo que las representaciones han de ser forzosamente acotadas.
·         Las unidades funcionales del computador suelen estar diseñadas para trabajar con una cadena de bits de cierto tamaño.
·         Los elementos de comunicación entre unidades funcionales (buses) tienen cierto ancho de, esto es, permiten transmitir simultáneamente un cierto número de bits.

SISTEMAS DE NUMERACIÓN:

Un sistema de numeración es el conjunto de reglas, convenios y símbolos que permiten expresar números. Existen sistemas de numeración posicional y no posicional. En los primeros se contempla el valor relativo de la cifra dentro del número, en los segundos no.

En los sistemas de numeración posicional el valor de un dígito depende tanto de su propio valor como de la posición que ocupa. Un ejemplo es el sistema de numeración decimal. En los sistemas de numeración no posicional el valor de un dígito sólo depende de su valor. Por ejemplo el sistema romano, que utiliza los siguientes siete símbolos para la representación {I, V, X, L, C, D, M} y que independientemente de donde estén colocadas las cifras tienen el mismo valor.
Los sistemas más comunes son:

       Decimal: b=10. D {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Sistema de representación numérico del ser humano.
       Binario: b=2. D {0, 1}. Sistema de representación interna del ordenador.
       Octal: b=8. D {O,..7}. Las conversiones octal-binario y binario-octal pueden hacerse fácilmente. Agrupando dígitos de 3 en 3.
       Hexadecimal: b=16. D {O,.., 9, A, B, C, D, E, F}. Las conversiones hexadecimal-binario y binario-hexadecimal se realizan agrupando dígitos de 4 en 4.

Los datos numéricos se introducen en un ordenador usando el lenguaje escrito, como secuencias de caracteres, y por tanto se codifican, como cualquier tipo de texto, de acuerdo con un código de entrada y salida, tal como el ASCII. Si se va a realizar algún cálculo matemático, la representación de los datos numéricos como textos es inapropiada. En efecto, como este tipo de codificación no se basa en los sistemas de numeración matemáticos, no podemos aplicar las tablas y reglas de la aritmética para operar con dichos números. Cuando queramos realizar algún cálculo matemático, obviamente lo mejor es representar los datos numéricos en alguna forma basada en el sistema de numeración matemático.

REPRESENTACIÓN DE IMÁGENES:

Las imágenes analógicas presentan una variación continua de sombra y tonos. Para poder representarlas es necesario realizar una conversión analógico / digital. Se hace a través de un muestreo y una cuantificación.

- El Muestreo divide la imagen analógica en subdivisiones cuadradas cuyo valor depende de la escala (color) y de la intensidad de la luz.
Si el valor es un vector de tres componentes (R, G, B) se obtiene una escala de color.
- La Cuantificación es la discretización de cada una de las muestras. A cada valor obtenido se le llama píxel.

REPRESENTACIÓN DE SONIDOS:

El sonido es una onda analógica que presenta variaciones de amplitud a intervalos regulares de tiempo. La amplitud determina su volumen, mientras que la frecuencia determina la escala.

Al igual que con las imágenes es necesario realizar una digitalización (conversión A/D). El número de bits de la cuantificación influye en la calidad del sonido. El muestreo debe ser realizado a 22 KHz.

SISTEMAS NUMÉRICOS:
Una ALU debe procesar números usando el mismo formato que el resto del circuito digital. Para los procesadores modernos, este formato casi siempre es la representación del número binario de complemento a dos. Las primeras computadoras usaron una amplia variedad de sistemas de numeración, incluyendo complemento a uno, formato signo-magnitud, e incluso verdaderos sistemas decimales, con diez tubos por dígito.
Las ALU para cada uno de estos sistemas numéricos mostraban diferentes diseños, y esto influenció la preferencia actual por el complemento a dos, debido a que ésta es la representación más simple, para el circuito electrónico de la ALU, para calcular adiciones y sustracciones, etc.
La ALU 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.
La mayoría de las acciones de la computadora son realizadas por la ALU. La ALU toma datos de los registros del procesador. Estos datos son procesados y los resultados de esta operación se almacenan en los registros de salida de la ALU. Otros mecanismos mueven datos entre estos registros y la memoria.
Una unidad de control controla a la ALU, al ajustar los circuitos que le señala a la ALU qué operaciones realizar.
DETALLE:
En la imagen se detalla una ALU de 2 bits con dos entradas (operandos) llamadas A y B: A [0] y B [0] corresponden al bit menos significativo y A [1] y B [1] corresponden al bit más significativo.
Cada bit de la ALU se procesa de manera idéntica, con la excepción del direccionamiento del bit del acarreo. El manejo de este bit es explicado más adelante.
Las entradas A y B van hacia las cuatro puertas de la izquierda, de arriba a abajo, XOR, AND, OR, y XOR. Las tres primeras puertas realizan las operaciones XOR, AND, y OR sobre los datos A y B. La última puerta XOR es la puerta inicial de un sumador completo.
El paso final de las operaciones sobre cada bit es la multiplexación de los datos. La entrada OP de 3 bits, OP [0], OP [1] y OP [2] (desde la unidad de control) determina cual de las funciones se van a realizar:
  • OP = 000 → XOR
  • OP = 001 → AND
  • OP = 010 → OR
  • OP = 011 → Adición
Claramente se ve que las otras cuatro entradas del multiplexor están libres para otras operaciones (sustracción, multiplicación, división, NOT A, NOT B, etc.). Aunque OP [2] actualmente no es usada en este montaje (a pesar de estar incluida y conectada), ésta sería usada en el momento de realizar otras operaciones además de las 4 operaciones listadas arriba.
Los datos de acarreo de entrada y acarreo de salida, llamados flags (banderas), son típicamente conectados a algún tipo de registro de estado.
OPERACIONES SIMPLES:
La mayoría de las ALU pueden realizar las siguientes operaciones:
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 interactivo, y generalmente confía en el control de una unidad de control compleja con micro có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.
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.
SUMA Y RESTA:

Suma:
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 acarreo 1 = 10
1 + 1+ 1 = 1 acarreo 1 = 11

Resta:
0 – 0 = 0
0 – 1 = 1 se pide 1 al de la izquierda
1 – 0 = 1
1 – 1 = 0

MULTIPLICACIÓN Y DIVISIÓN:

Multiplicación: La multiplicación se puede calcular fácilmente mediante un algoritmo de sumas y desplazamientos. Si el multiplicando es de n bits y el multiplicador de m, entonces el producto es de n + m bits. La multiplicación en binario es muy sencilla ya que se trata de multiplicar por “1” ó por “0”.
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1

División: Dividendo = Cociente x Divisor + Resto. El resto es más pequeño que el divisor y hay que reservar el doble de espacio de éste para el dividendo.

OPERACIONES LÓGICAS:

PROPOSICIÓN:
Una proposición es una expresión donde se afirma o se niega algo. Tal proposición puede ser calificada sin ambigüedades como V o F, también recibe el nombre de Valor de Verdad.

A una proposición se le representa por letras minúsculas como p, q, r, s, t.
Ejemplo: p: Talara es una provincia de Piura V
q: 18 + 5 = 28 F

Además proposiciones como: ¡Hola que tal!
Muy buenas noches
No son proposiciones lógicas porque no podemos decir de ellas que son Verdaderas o Falsas.

PROPOSICIÓN SIMPLE:

Es aquella que no se relaciona con otra. Ejemplo:
p: 17 es un número impar.
q: El Sol no es una estrella.
r: La maca es una planta oriunda del Perú.
s: La suma de dos números pares es otro número impar.

CONECTIVOS LÓGICOS:
Los conectivos lógicos sirven para enlazar dos o más proposiciones. Estos conectivos son "y", "o", "no es cierto que", "entonces", "si y solo sí", cuyos símbolos se ven en el siguiente cuadro:
CONECTIVO LÓGICO
SÍMBOLO
Y
O
No es cierto que
Entonces
Si y solo sí
Ù
Ú
~
Þ
Û


PROPOSICIÓN COMPUESTA:
Es aquella donde aparecen dos o más proposiciones simples enlazadas por conectivos lógicos. Ejemplo:
* César Vallejo nació en Trujillo y es peruano.
p Ù q
* (Tengo sueño de día entonces estoy cansado) o me faltan vitaminas
p Þ q Ú r
Al enlazar n proposiciones simples resultan 2n valores de verdad para cada proposición al escribir todas las posibles combinaciones de V o F.
·         Para 1 proposición hay 21 = 2 valores de verdad.
p
----
V
F
·         Para 2 proposiciones hay 22 = 4 valores de verdad.
p q
-----------
V V
V F
F V
F F
·         Para 3 proposiciones hay 23 = 8 valores de verdad.
p q r
-----------------
V V V
V V F
V F V
F V V
F V F
F F V
F F F

CONECTIVAS LÓGICAS:

En la lógica proposicional, las conectivas lógicas son tratados como funciones de verdad. Es decir, como funciones que toman conjuntos de valores de verdad y devuelven valores de verdad. Por ejemplo, la conectiva lógica no es una función que si toma el valor de verdad V, devuelve F, y si toma el valor de verdad F, devuelve V. Por lo tanto, si se aplica la función no a una letra que represente una proposición falsa, el resultado será algo verdadero. Si es falso que «está lloviendo», entonces será verdadero que «no está lloviendo».

El significado de las conectivas lógicas no es nada más que su comportamiento como funciones de verdad. Cada conectiva lógica se distingue de las otras por los valores de verdad que devuelve frente a las distintas combinaciones de valores de verdad que puede recibir. Esto quiere decir que el significado de cada conectiva lógica puede ilustrarse mediante una tabla que despliegue los valores de verdad que la función devuelve frente a todas las combinaciones posibles de valores de verdad que puede recibir.

ALU vs. FPU:

Una unidad de coma flotante, Floating Point Unit (FPU), también realiza operaciones aritméticas entre dos valores, pero lo hace para números en representación de coma flotante, que es mucho más complicada que la representación de complemento a dos usada comúnmente en una ALU. Para hacer estos cálculos, una FPU tiene incorporados varios circuitos complejos, no incluyendo algunas ALU internas.
Generalmente los ingenieros llaman ALU al circuito que realiza operaciones aritméticas en formatos de número entero (como complemento a dos y BCD), mientras que los circuitos que calculan en formatos más complejos como coma flotante, números complejos, etc., reciben generalmente un nombre más ilustre.

1 comentario:

  1. HOLA OMAR MUY BUENAS TARDES SE TE AGRADECE LA CRITICA CONSTRUCTIVA Y LO TOMARE MUY EN CUENTA GRACIAS

    ResponderEliminar