domingo, 29 de abril de 2012

OPERADORES DE LA UNIDAD ARITMETICA LOGICA

Su misión es realizar las operaciones con los datos que recibe, siguiendo las indicaciones dadas por la unidad de control.
El nombre de unidad aritmética y lógica se debe a que puede realizar operaciones tanto aritméticas como lógicas con los datos transferidos por la unidad de control.
La unidad de control maneja las instrucciones y la aritmética y lógica procesa los datos.
Para que la unidad de control sepa si la información que recibe es una instrucción o dato, es obligatorio que la primera palabra que reciba sea una instrucción, indicando la naturaleza del resto de la información a tratar.
Para que la unidad aritmética y lógica sea capaz de realizar una operación aritmética, se le deben proporcionar, de alguna manera, los siguientes datos:
1. El código que indique la operación a efectuar.
2. La dirección de la celda donde está almacenado el primer sumando.
3. La dirección del segundo sumando implicado en la operación.
4. La dirección de la celda de memoria donde se almacenará el resultado.

ARQUITECTURA

Una unidad aritmética lógica (ALU) es un circuito digital capaz de realizar operaciones lógicas y aritméticas. ALU es el fundamento principal de la unidad central de procesamiento (CPU). Incluso  los microprocesadores más simples contienen al menos una unidad de este tipo. Dentro de los procesadores y CPUs modernos e incluso unidades de procesamiento gráfico (GPU) tienen complejas, potentes ALUs, un componente sencillo puede contener uno o más ALUs.

En 1946, Von Neumann y sus colegas diseñaron un equipo para el Instituto de Princeton de Estudios Avanzados (IAS), que más tarde se convirtió en el prototipo de muchos computadores.
Von Neumann afirmó que una ALU es obligatoria para una computadora, ya que garantiza que el equipo será capaz de computar operaciones matemáticas básicas, incluyendo la adición, sustracción, multiplicación y división.
Sistemas numéricos
Las primeras computadoras utilisaron una amplia variedad de sistemas numéricos, incluido el complemento uno, el formato signo-magnitud, sistemas decimales, etc.
Un ALU procesa números en el mismo formato que el resto del circuito digital.
El método de los procesadores modernos es siempre el complemento de dos de la representación de número binario. ALUs para cada uno de los primeros sistemas numéricos tenían diferentes diseños, que también influyó en la actual preferencia por el complemento de dos.
Esta representación hace más fácil para los ALUs calcular sumas y restas.
Además, también permite restas simplemente añadiendo el negativo de un numero en lugar de usar circuitos especializados en la realizacion de sustracción.
Operaciones simples. ALUs son capaces de realizar las siguientes operaciones típicas:
(a) Operaciones Enteras (suma, resta, y, en ocasiones, multiplicación y división)
(b) Bitwise operaciones lógicas (AND, NOT, OR y XOR)
c ) Bit-shifting (cambio de una palabra a un determinado número de bits, ya sea a la izquierda oa la derecha, con o sin signo ). Los cambios (shifts) se pueden interpretar como multiplicado por 2 o dividido por 2.
Operaciones complejas. Una ALU pueden diseñarse para calcular cualquier operación, sin embargo los costos de la ALU es directamente proporcional a su complejidad que por consiguientemente, se relaciona con la ocupación de espacio en el microprocesador y la potencia. 



REGISTRO

Los Registros son un medio de ayuda a las operaciones realizadas por la unidad de control y la unidad aritmética y lógica. Permiten almacenar información, temporalmente, para facilitar la manipulación de los datos por parte de la CPU.
Realizando una similitud con el resto del sistema informático, los registros son a la CPU como la memoria principal es a la computadora.
Los registros se dividen en tres grupos principales:
• Registros de Propósito General.
• Registros de Segmento de Memoria.
• Registros de Instrucciones.
Seguidamente se presenta una relación completa de los tres grupos de registros que contiene un microprocesador típico como puede ser el Intel 80386:

Registros de Propósito General:
(AX) Registro de Datos
(DX) Registro de Datos
(CX) Registro de Datos
(BX) Registro de Datos
(BP) Registro Puntero Base
(SI) Registro Índice Fuente
(DI) Registro Índice Destino
(SP) Registro Puntero de la Pila
Registros de Segmento de Memoria:
(CS) Registro Segmento de Código
(SS) Registro Segmento de la Pila
(DS) Registro Segmento de Datos
(ES) Registro Segmento de Datos Extra
(DS) Registro Segmento de Datos Extra
(ES) Registro Segmento de Datos Extra
Registros de Instrucciones
(FL) Registro de «Flags» o también denominado registro de estado
(IP) Registro Puntero de Instrucción o también denominado registro Contador de Programa (PC)
De esta relación de registros los cuatro más importantes son:

El Registro Puntero de Instrucciones.
El registro puntero de instrucciones o contador de programa indica el flujo de las instrucciones del proceso en realización, apuntando a la dirección de memoria en que se encuentra la instrucción a ejecutar.
Dado que las instrucciones de un programa se ejecutan de forma secuencial, el procesador incrementará en una unidad este registro cada vez que ejecute una instrucción, para que apunte a la siguiente.
La información que almacena este registro se puede modificar cuando una interrupción externa, o la propia ejecución del proceso en curso, provoque una alteración en la secuencia de operaciones. Esta alteración transferirá el control del sistema informático a otro proceso diferente al que está en ejecución.

El Registro Acumulador.
Es el Registro donde se almacenan los resultados obtenidos en las operaciones realizadas por la unidad aritmética y lógica.
Su importancia radica en las características de la información que almacena, ya que con su contenido se realizan todas las operaciones de cálculo que ha de ejecutar la unidad aritmética y lógica.

El registro de Estado.
El Registro de Estado o registro de «flags» no es un solo registro propiamente dicho, ya que se compone de varios registros de menor tamaño; este tamaño puede ser incluso de un solo bit.
El registro de estado se utiliza para indicar cambios de estados y condiciones en los otros registros existentes en el sistema informático. Estos cambios en la situación de los demás registros se producen debido a las modificaciones del entorno a lo largo de la ejecución de los procesos realizados por el sistema informático.

• El Registro Puntero de la Pila.
Este Registro almacena la dirección de la zona de la memoria donde está situada la parte superior de la pila.
La Pila es una zona de los registros de segmento de memoria que la unidad aritmética y lógica utiliza para almacenar temporalmente los datos que está manipulando. Cuando la cantidad de datos a manejar es demasiado grande u otras necesidades del proceso impiden que estos datos puedan almacenarse en los registros creados para ello se envían a la pila, donde se almacenan hasta que la unidad de control recupera la información para que la procese la unidad aritmética y lógica.
La ventaja de manejar una pila como almacén de información es que la información que se guarda en ella tiene que entrar y salir, obligatoriamente, por una sola dirección de memoria. Esto permite que la unidad de control no necesite conocer más que esa dirección para poder manejar los datos almacenados en la pila.

Memoria Principal
La Memoria Principal es la zona de la unidad central de sistema que almacena la información, en forma de programas y datos, que se va a procesar seguidamente o va a servir de apoyo a las diferentes operaciones que se van a efectuar por la computadora.
La posibilidad del proceso inmediato de la información que almacena la memoria principal es su característica fundamental, ya que, mientras que los datos existentes en la memoria principal pueden ser procesados de inmediato por la unidad central de proceso, la información contenida en la memoria auxiliar (discos, cintas, etc.) no puede ser procesada directamente por la unidad central de proceso.
La memoria principal está conectada directamente a los buses, que son su medio de comunicación con la unidad central de proceso del sistema informático. La cantidad de memoria existente en una computadora se verá limitada por la capacidad de direccionamiento del bus; esto forma el Mapa de Memoria.
La memoria principal está compuesta lógicamente por una serie de celdas de bits que permiten almacenar en cada una de ellas un bit de información en código binario (0, 1) que será parte de un dato o una instrucción.
Para poder identificar cada una de las celdas de la memoria, éstas se numeran; a este número se le llama dirección y es el medio a través del cual la unidad de control puede manejar la información.
Las direcciones de la memoria se localizan a través del mapa de memoria. La dirección de cada celda de la memoria se establece por una matriz en la que los parámetros son el número total de direcciones y la longitud de palabra que maneja el sistema informático. Esto supone una limitación, ya que la computadora sólo puede manejar un número limitado de bits de dirección en sus operaciones de direccionamiento.
La Palabra representa la cantidad de bits de información manejada en paralelo por la computadora. Tamaños típicos de palabras son 8 bits, 16 bits, 32 bits, etc.
Una vez localizada la dirección de la celda de memoria se podrán realizar dos operaciones: leer la información existente en ella o bien escribir nueva información para poder ser almacenada y posteriormente procesada.
Para poder determinar si el sistema informático va a leer o escribir se utiliza el registro de datos. El registro de datos es un bit que, según el valor de la información que contenga (0,1) indica a la unidad de control si se va a leer o escribir en el acceso a la memoria que se esté realizando en ese momento. En ambos casos, esta operación se realiza a través del bus de datos.
Cuando la unidad de control lee de la celda de memoria, necesita que se le proporcione una dirección a la cual ir a leer. La información existente en la celda no se destruye.
Cuando la unidad de control escribe en la celda de memoria, debe recibir dos informaciones: la dirección de la memoria donde escribir y la información que se debe escribir propiamente dicha. La información existente en la celda de memoria previamente se destruye, ya que lo que había escrito se sustituye por una nueva información.
La memoria principal se divide fundamentalmente en dos partes: Volátil y No Volátil.
La Memoria Volátil pierde la información almacenada en su interior si el sistema informático que la soporta es apagado. Esta parte de la memoria principal se conoce como RAM (Memoria de Acceso Aleatorio o Random Access Memory).
La parte de la Memoria principal que No es Volátil es la ROM (Memoria de Sólo Lectura o Read Only Memory). Esta memoria es de sólo lectura y la computadora no puede escribir sobre ella. Su función principal es el arranque del sistema informático.
Las Memorias Volátiles pueden ser estáticas, también llamadas RAM (Memorias de Acceso Aleatorio o Random Access Memory), o dinámicas, denominadas en este caso DRAM (Memorias Dinámicas de Acceso Aleatorio o Dinamic Random Access Memory). Más adelante se verán más detenidamente.
Las Memorias No Volátiles se dividen en memorias de Sólo Lectura (ROM) y en otras que permiten la Manipulación de la Información que contienen por diversos medios especiales que se verán más adelante.
Existen dos modos distintos de Acceso a la Memoria:
• Acceso por Palabras.
• Acceso por Bloques.

1. Acceso por Palabras.
También se le denomina acceso aleatorio. La operación de acceso se realiza sobre una sola palabra de información. Recuérdese que palabra es la cantidad de bits que maneja el sistema informático al mismo tiempo.
Este tipo de acceso únicamente se utiliza con memorias estáticas (RAM) ya que el tiempo de acceso empleado es siempre el mismo.

2. Acceso por Bloques.
Es el modo de acceso utilizado en las memorias dinámicas. Consiste en empaquetar en un bloque un conjunto de datos al que se añade una cabecera para identificarlo. El acceso se realizará a la cabecera del bloque y una vez en ella se accederá a la información que contiene.
El acceso en las memorias dinámicas se realiza por bloques, debido a que tardan más tiempo que las estáticas en acceder a una zona de la memoria. La ventaja es que una vez que acceden a la zona donde se sitúa el bloque son muy rápidas en acceder a la información existente.
Generalmente, la memoria que posee una computadora recién adquirida no es la máxima que el bus puede direccionar, por lo que la memoria principal puede ampliarse incrementando el número de unidades de memoria conectadas. Conviene recordar que las placas de memoria son un factor fundamental en el costo total de adquisición del sistema informático.
Debe tenerse en cuenta que si la cantidad de memoria principal del sistema informático no es muy grande el procesador se verá restringido en su potencia por la limitada capacidad de manipulación y acceso a los datos.
Las Tecnologías para fabricar memorias se caracterizan por:
• Coste.
• Tiempo de acceso.
• Capacidad de almacenamiento.
La Optimización se consigue con una gran capacidad de almacenamiento, un tiempo de acceso muy corto y un costo pequeño.
Las memorias se dividen físicamente en:
1. Soporte de Almacenamiento de la Información.
Generalmente son de naturaleza magnética. Está compuesto por pequeños dipolos que pueden tomar dos estados en los que la información toma un valor en cada uno de ellos. Cada estado se obtiene por medio de la aplicación de una señal eléctrica exterior generada por el elemento de lectura y escritura.
2. Elemento de Escritura y Lectura.
Este dispositivo introducirá y obtendrá la información de la memoria.
Para Escribir el dispositivo produce una corriente eléctrica local que provoca un cambio estable en el campo magnético de la celda de memoria.
Para Leer el dispositivo determinará el campo magnético de la celda de memoria y sabrá cual es el valor existente.
3. Mecanismo de Direccionamiento.
Pueden ser de dos tipos dependiendo de que las memorias sean estáticas o dinámicas.
En las Memorias Estáticas el direccionamiento es un cableado directo a la celda de memoria.
En las Memorias Dinámicas se utiliza una información de control almacenada con los datos que configuran el circuito para direccionar la lectura o escritura al lugar donde se almacena la información.
La memoria se divide en varias capas o niveles con una estructura cuya forma puede recordarnos a una estructura piramidal.

REPRESENTACION INTERNA

En computación, la unidad de aritmética lógica (ALU) es un circuito digital que controla las operaciones aritméticas y lógicas. La ALU es un bloque fundamental de la unidad central de procesamiento de una computadora, y aun el más simple microprocesador contiene uno, los procesadores que se encuentra dentro de CPUs y GPUs tienen dentro muy poderosos y complejos ALUs; un solo procesador podría tener varios ALUs.

El matemático john von neumann propuso el concepto ALU en 1945, cuando escribió el reporte para una nueva computadora llamada EDVAC.

Un típico símbolo de ALU: A & B son los datos de entrada (registros); R es el dispositivo de salida; F son las instrucciones de la unidad de control; D es un status de salida.
Almacenamiento primario (memoria principal)

La sección de almacenamiento primario (también llamado almacenamiento interno, almacenamiento principal, memoria principal) sirve para cuatro propósitos.

 Mantiene la transferencia de datos de un dispositivo I/O hacia el área de almacenamiento, donde permanecen hasta que la computadora esta lista para procesarlos.

SUMA Y REGISTRO

Es la operacion de SUMA usando los registros llamado SUMADOR (ADDER) en la ALU.
Este SUMADOR es un circuito digital que realiza la adicion de numeros, este circuito sumador lo encontramos en la ALU, donde tambien se realizan otro tipos de operaciones, los umadores mas comunes se especializan en numeros binarios.
La suma y la resta son operaciones de dos palabras de 1 bit de las que se obtiene una suma y un carry. Existen distintas formas de implementar la suma y la resta.
Operaciones de aritmética y lógica
Half-Adder. Half-Adder es capaz de sumar dos bits a la vez. Tiene dos entradas (es decir, A y B), y dos salidas (es decir, la suma S y acarreo C), S es dos bits “XOR” de A y B, mientras que C es la ‘Y’ de A y B. Es obligatorio que la salida de un Half-Adder es la suma de dos números de un bit, con C siendo el bit significativo de estas dos salidas.
Sumador completo (FULL-ADDER). Un sumador completo que es capaz de añadir tres bits (es decir, dos bits y el acarreo de un poco de cálculo anterior).
Dispone de tres entradas llamadas generalmente como A, B y C para transportar, De esta manera, full-adders se pueden encadenar en cascada y pueden ser usados para sumar número muy grandes.
Entradas: (A, B, Carry In) → Salida: (Suma, Carry Out)
La etapa final la puerta “O” de salida puede ser sustituido por una puerta “XOR” sin alterar la lógica resultante. Esto se debe a que la única diferencia entre las puertas “O” y “XOR” es cuando ambas entradas sean 1, sin embargo, no es el caso de la sumador que se muestra arriba. Se recomienda el uso de sólo dos tipos de puertas, a fin de aplicar el complemento directamente a través de chips de CI comúnes.

SUMA
Si sumamos números decimales es común la expresión “cinco mas siete es igual a doce, entonces son dos y llevo uno”. Este “llevo uno” se conoce como el acarreo. De la misma manera se realiza una suma binaria de varios bits. Unicamente necesitamos recordar las sencillas reglas de la suma binaria de un bit.
1+1 = 0 y llevo 1
1+0 = 1
0+1 = 1
0+0 = 0
1+1+1 = 1 y llevo 1
Con estas reglas tenemos por ejemplo.
Acarreo → 1 11
10010111 + 01010110 = 11101101

RESTA
La resta se lleva de manera similar en números decimales y binarios. Si en la suma existe el acarreo, en la resta existe el “préstamo”, igual que en decimales.
1. = 0
1. = 1
0. = 0
0–1 = 1 prestando un uno al bit siguiente.
Con estas reglas tenemos por ejemplo.
11001001-00110101 = 10010100.

MUTIPLICACION Y DIVISION

Multiplicador
En diseño digital, un multiplicador / multiplicación ALU es un circuito de hardware dedicado a la multiplicación de dos valores binarios.
Una serie de técnicas digitales de la aritmética puede ser empleada para la implementacion de un multiplicador digital. La mayoría de ellas implican la computación parcial de un conjunto de productos y, a continuación, sumando el conjunto.
Es similar al que se enseña a los escolares para realizar la multiplicación de largo en la base-10 enteros.
Sin embargo, el mismo ha sido modificado para su aplicación aquí a un sistema numerico base-2 (binario).

DIVICION
La división describe dos nociones relacionadas aunque diferentes, la de «separar» y la de repartir. De manera formal, la división es una operación binaria que a dos números asocia el producto del primero por el inverso del segundo. Para un número no nulo, la función (división por ese número) es el recíproco de (multiplicación por ese número). De este modo, el cociente a \ dividido  b \ se interpreta como el producto \ a por  \frac{1}{b} .
Si la división no es exacta, es decir, el divisor no está contenido un número exacto de veces en el dividendo, la operación tendrá un resto o residuo, donde:
dividendo = cociente × divisor + resto.
 
OPERASIONES LOGICAS
 
Las operaciones l´ogicas son las que permiten hacer comparaciones y tomar decisiones en funci´on del resultado de estas comparaciones.
Las operaciones l´ogicas se enmarcan dentro del Algebra de Boole, en donde los posibles valores pueden ser ´unicament
verdadero y falso. A estos valores se les denota comunmente como V y F, o como T y F 1, respectivamente.
El Algebra de Boole, por tratarse de un ´algebra, cumple con todas sus propiedades, incluyendo la clausura. Esto quiere decir que cualquier operaci´on entre operandos booleanos entrega un resultado que tambi´en es booleano.
Adem´as, es posible obtener resultados booleanos como producto de comparaciones entre datos con otros tipos, por ejemplo, n´umeros. As´ı, si efectuamos la comparaci´on 1 = 2, obtendremos un resultado booleano igual a F, es decir, falso.
Existen diversos operandos de comparaci´on que pueden utilizarse para analizar la igualdad o desigualdad entre operandos num´ericos. El Cuadro 3.1 muestra la lista de los operandores de comparaci´on con que normalmente se cuenta en un lenguaje de programaci´on de alto nivel, como Java.
Para actuar sobre operandos booleanos, existe una gran cantidad de operadores. Sin embargo, nuestras necesidades pueden ser cubiertas con s´olo tres de ellos:
AND, OR y NOT.
El operador booleano
AND representa la conjunci´on l´ogica, es decir, lo que en castellano conocemos como y. Su valor es verdadero cuando ambos operandos son verdaderos, y s´olo en ese caso. Es decir, V AND V entrega como resultado V, mientras que cualquier combinaci´on que incluya F entrega como resultado F.
 




No hay comentarios: