Alu
Short Description
Download Alu...
Description
Unidad Aritmética Lógica forma parte del circuito digital del procesador indefectiblemente, teniendo además presencia en otros Circuitos Electrónicos que necesiten realizar estas operaciones, teniendo por ejemplo la utilización de un Reloj Digital, donde estos cálculos lógicos se basan en dos funcionalidades básicas:
Sumar de a 1 al tiempo actual (para los Segundos, Minutos y las Horas) Comprobación de la activación o no activación del sonido de la alarma Cambio de Hora y Minutos de acuerdo al sistema hexadecimal Pero esta unidad es generalmente utilizada en circuitos de alta complejidad, cubriendo no solo operaciones matemáticas simples, sino una gran cantidad de cálculos por segundos, siendo en el caso de los últimos aquellos que son conocidos como Microprocesadores, y que como hemos dicho, son el cerebro de un ordenador y te toda la información que se procesa a través de él. Es en estos pequeños y complejos dispositivos que encontramos los siguientes componentes:
Dispositivos de Adición: Se encargan de realizar las anteriormente mencionadas operaciones aritméticas Registros: Son los que contienen los Operandos que permiten realizar las operaciones, siendo aportados estos por la Unidad de Control Resultados Parciales: Fragmentos de cálculos que fueron realizados Resultados Finales: Resultados propiamente dichos de los cálculos efectuados Control de Cálculo: Dispositivo que se encarga de controlar, redirigir y corregir los errores que se puedan haber cometido en las operaciones realizadas Hemos mencionado en este listado a la Unidad de Control, y debemos definirla como un dispositivo que se encarga de envíar a la Arichmetic Logic Unit todas las órdenes y operaciones que debe realizar, además de transportar los Resultados Finales que ha obtenido hacia otros componentes. De este modo, podemos definir el funcionamiento de la siguiente manera: Unidad de Control: Emite las acciones a efectuar Unidad Aritmético Lógica: Procesa los datos recibidos y envía los registros Unidad de Control: Analiza los resultados obtenidos y los envía a otros dispositivos
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.2 Una unidad de control controla a la ALU, al ajustar los circuitos que le señala a la ALU qué operaciones realizar. El CPU es el corazón de la µC, es el encargado de decodificar las instrucciones, hacer más eficientes las operaciones aritméticas, y controlar algunas otras partes de la maquina. Cuenta con cuatro partes básicas. (1) Registros, (2) Unidad Aritmética y lógica, (3) Circuito de temporización y control. (4) Circuito de Decodificación.
Todos los datos (las instrucciones y los datos) son leídos por la CPU a través de los registros. Las instrucciones (el código del programa) son leídas en un registro llamado "Instruction Register" y luego son decodificadas mediante un decodificador, que interpreta el tipo de instrucción. Dependiendo de la instrucción, se leen a continuación los datos a procesar, los cuales se almacenan en un registro llamado "Acumulador" o "Registro de Trabajo" que se encuentra directamente relacionado con la Unidad Aritmética y Lógica (ALU). La ALU es un modulo del procesador donde se realizan todos los procesos lógicos y aritméticos con los datos. Los resultados de la ALU son almacenados nuevamente en el Acumulador, donde pueden ser enviados a una posición de memoria o a un dispositivo de E/S. Los Registros: Son localizaciones que sirven para almacenar temporalmente datos, pueden ser de 8 o de 16 bits. Los tres registros más usados son, el acumulador para propósito general, el contador de programa y el registro de instrucciones que son de propósito específico. El acumulador almacena temporalmente el resultado de las operaciones aritméticas y lógicas. El registro de Instrucciones es usado para almacenar la instrucción que se está ejecutando en ese momento por el microprocesador. El contador de Programa contiene la dirección de la siguiente instrucción del programa. El circuito de decodificación: Involucra el proceso de trasladar un patrón binario en una operación o secuencia de operaciones. Por ejemplo si el siguiente patrón binario 10111001 representa “ADD”, el circuito de decodificación lo reconoce y manda señales a todas las otras partes del µP para que ocurra la decodificación. El Circuito de temporizador y control: Es una red secuencial que acepta un código que define la operación que se va a ejecutar y luego prosigue a través de una secuencia de estados, generando una correspondiente secuencia de señales de control. Estas señales de control incluyen el control de lectura escritura y señales de dirección de memoria válida en el bus de control del sistema. Otras señales generadas por el controlador se conectan a la unidad aritmética lógica y a los registros internos del procesador para regular el flujo de información en el procesador y a, y desde, los buses de dirección y de datos del sistema. La unidad aritméticológica (ALU, Arithmetic logic unit): es una red combinacional. Acepta dos palabras de datos y una palabra de control que especifica el tipo de operación que ha de ejecutarse con los datos. El bus de datos del sistema o cualquiera de los registros internos del procesador pueden proporcionar palabras de datos. La palabra de control se define por la unidad de control. La ALU realiza la operación especificada y genera una palabra de salida que representa el resultado de la operación aritmética o lógica y un conjunto de señales de estado que indican, por ejemplo, si se produjo un acarreo o desbordamiento aritmético. La palabra resultado se puede dirigir a cualquiera, de los registros internos o al bus de datos. El destino específico se define por la unidad de control, dependiendo de la naturaleza de la Operación que se esta realizando. Las señales de estado se dirigen a un registro interno específico del procesador para almacenamiento, denominado registro de códigos de condición. El Acumulador: almacena datos para procesar por la ALU. Suelen tener el mismo número de bits que el bus de datos. El acumulador se utilizan con el bus de datos y la ALU en el proceso de datos. Por ejemplo, dos palabras binarias se pueden sumar, cargando la primera en el acumulador A, sumando la segunda, cargando el resultado en el acumulador y después transfiriendo los resultados desde el Acumulador, a la memoria. Durante la transferencia de los primeros datos, el bus de datos sirve como una entrada al Acumulador. Durante la segunda, la ALU realiza una suma en la que el bus de datos proporciona una entrada y el acumulador A la otra; la salida de la ALU se conecta a la
entrada del acumulador A para almacenar el resultado. Durante la tercera operación, la salida del Acumulador se conecta al bus de datos, de modo que los resultados se transfieren a memoria. El contador de programa (PC): Es un registro de 16 bits que contiene la dirección de la palabra siguiente del programa. Su salida se conecta al bus de direcciones siempre que una pa-labra del programa se lea desde la memoria. Cada vez que el contador de programa proporciona una dirección, se modifica de modo que contiene siempre la dirección de la palabra siguiente del programa. El puntero de pila (SP, stack pointer): El puntero de pila es, un registro de autoincrementación y autodecrementación, que significa que cada vez que se proporciona un dato su contenido se incrementa o decrementa automáticamente. En los microprocesadores, el puntero de pila contiene la dirección de la siguiente posición de memoria vacía en la pila. A continuación, proporciona esta dirección al bus de direcciones durante un ciclo del bus de lectura. La pila se utiliza de muchos modos; por ejemplo, se utiliza para almacenar la dirección de retorno cuando las transferencias de control a subrutinas o rutinas de interrupción de servicios. El registro de códigos de condición: (PSW) ó (CCR) Almacena la información que describe los resultados de operaciones anteriores. Esta información se almacena asignando un bit en el registro. En algunos microprocesadores, el registro del código de condición. Contiene ocho bits, El bit menos significativo es el bit de acarreo, o bit C, que se pone a 1 cuando se produce un acarreo aritmético. El bit de desbordamiento, o bit V, se pone a 1 si se produce un desbordamiento. El bit cero, o bit Z, el tercer bit en el registro de códigos de condición se pone a 1 cuando se produce el resultado cero. El bit negativo, o bit N, se pone a 1 cuando el resultado es negativo. El bit de semi acarreo, o bit H, se pone a 1 cuando se produce un acarreo desde el bit 3. El bit H se utiliza con cálculos aritméticos con datos codificados en BCD. Los bits C, V, Z, N y H se ponen a 1, o a 0, automáticamente por el procesador, dependiendo de la naturaleza de la operación que se está ejecutando y el resultado de está operación, además, los bits C, V e I pueden ser puestos a 1, o a 0, por el programador utilizando instrucciones especiales para cada bit. El microcomputador para interactuar con los demás dispositivos como las memorias, puertos y otros utiliza el bus del sistema. A continuación de dará una explicación sobre la composición de este bus y su funcionamiento. Bus del Sistema: Los buses de direcciones, datos y control mostrados inicialmente en la figura 1.2.1 son el "bus del sistema". Este bus se encuentra separado en tres canales que manejan respectivamente direcciones, datos y señales de control, los cuales permiten el procesador comunicarse con los demás dispositivos del microcomputador, tales como las memorias y los dispositivos de E/S.
Bus de Datos: Este bus es bidireccional y es el canal por el cual se conducen los datos entre la CPU y los demás dispositivos (memorias, puertos y otros). Bus de Direcciones: El bus de direcciones es un canal unidireccional por el cual la CPU envía las direcciones de memoria para ubicar información en los dispositivos de memoria, puertos u otros dispositivos del microcomputador. Bus de Control : El bus de control, al igual que el bus de direcciones es unidireccional y se utiliza para efectuar la lectura y escritura en las memorias y puertos de E/S. Este bus en general lo emplea la CPU para controlar el flujo de los datos y las direcciones de forma organizada.
Funcionamiento del Bus del Sistema :El bus de datos depende del tamaño de los datos que maneja el procesador, este puede tener 8, 16 o 32 bits y el bus de direcciones generalmente tiene como mínimo 16 bits. El bus del sistema se utiliza para transferir información entre la CPU y la memoria o para extraer instrucciones almacenadas en memoria y datos presentes en los puertos de E/S. El intercambio de información por el bus del sistema se realiza con dos tipos de operaciones: Ciclo de Lectura: Cuando los datos en Memoria o puertos de E/S se transfieren a la CPU. Ciclo de Escritura: Cuando los datos de la CPU se transfieren a la Memoria o a los puertos de E/S. Las líneas de control son aquellas con las que se controla el flujo de la información por los buses, y las más importantes son: CHIPSELECT (CS’) LECTURA (RD’) ESCRITURA (WR’) Cada transferencia empieza con la carga de una dirección en el bus de direcciones. Las líneas correspondientes a la los bits menos significativos de la dirección se encuentran conectados directamente a las memorias. Las líneas de dirección de los bits más significativos se utilizan para seleccionar el dispositivo del cual se desea extraer la información, ya sea una EPROM, RAM o un Puerto de E/S. Entonces, el decodificador de direcciones se encarga de seleccionar el dispositivo que se debe activar según la dirección presente en el bus. Para ello, cada dispositivo en el microcomputador debe tener una única dirección que lo identifique. En la siguiente figura se muestra un diagrama de los tiempos de las señales presentes durante el flujo de los datos y direcciones en el bus del sistema. La señal CS’ selecciona el dispositivo que debe transmitir los datos por el bus de datos. Luego una de las señales RD o WR se activa desde la CPU, con lo cual se ordena al dispositivo seleccionado enviar los datos a la CPU (ciclo de lectura) o recibirlos de la CPU (ciclo de escritura). Todos los ciclos de lectura y escritura comienzan con una dirección válida de la CPU. Luego el decodificador de direcciones genera una señal CS’ para seleccionar uno de los dispositivos. Entonces la CPU envía una señal RD o WR para efectuar la lectura o escritura de los datos. Para una operación de lectura el dispositivo debe conducir a través del bus de datos, lo cual toma un tiempo corto (el tiempo de acceso de los datos), y los datos deben estar disponibles en el bus durante el flanco de subida de la señal RD. Durante este flanco de subida la CPU toma los datos y los almacena internamente en sus registros. Durante un ciclo de escritura la CPU por si misma maneja de los datos. En este caso, al igual que en el ciclo de lectura los datos deben estar disponibles en el bus antes de que ocurra el flanco de subida de la señal WR, para que el dispositivo seleccionado pueda recibir los datos correctamente.
SP (Stack Pointer, Dirección 81H) La pila puede colocarse en cualquier lugar de la RAM interna del µC escribiendo en este registro de 8 bits. El tamaño máximo de la pila es por lo tanto de 256 bytes. Durante una instrucción CALL o PUSH, el contenido del registro SP se incrementa antes de almacenar los datos en la dirección apuntada por SP. Durante una instrucción POP, RET, O RETI, el contenido del registro SP se
decrementa después de recuperar los datos desde la dirección apuntada por SP (Salvo en "POP SP", en el cual SP se decrementa antes de ser cargado con el valor sacado de la pila). Después de un Reset, el registro SP queda cargado con el valor 07H. Su misión es apuntar a la RAM interna donde serán guardadas las direcciones de retorno de las subrutinas llamadas con instrucciones CALL, y desde donde dichas direcciones serán leídas al encontrarse con instrucciones RET de retorno de subrutina. Asimismo, las instrucciones POP permiten recoger de la PILA los valores de las variables depositados anteriormente con instrucciones PUSH. Es importante recordar que el área de los bancos de registros es compartida con la posición de la pila. Un registro de pila es un registro de un CPU de computadora cuyo propósito es mantener la pista de la posición actual de la pila de llamadas. En una máquina de arquitectura basada en acumulador, éste puede ser un registro dedicado como el puntero de pila (SP del inglés stack pointer) de una máquina Intel x86. En una máquina de registro general, puede ser un registro reservado por convención, como el de las máquinas PDP-11 o RISC. Algunos diseños como el Data General Eclipse no tenían ningún registro dedicado para el puntero de pila, pero usaron una dirección de memoria de hardware reservada para esta función. Antes de finales de los años 1960, las máquinas como el PDP-8 y el HP 2100 no tuvieran compiladores que soportaran la recursión. Sus instrucciones de subrutinas, típicamente guardarían la localización actual de la dirección del salto, y después fijarían el contador de programa a la dirección siguiente.1 Mientras que esto era más simple que mantener una pila, ya que solamente hay una localización de retorno por sección de código de subrutina, de esta manera no podía haber recursión sin un esfuerzo considerable por parte del programador. Una a diferencia de una máquina de registro, una máquina de pila tiene dos o más pilas. Una máquina de dos pilas (similar a la usada en la implementación del lenguaje Forth), tiene un pila de llamadas, que mantiene información sobre las llamadas a subrutinas en ejecución (que no han retornado) entre otras cosas, y el otro es un pila de parámetros, que mantiene información sobre los parámetros o datos con los que trabajan las subrutinas. PC: El contador de programa (en inglés Program Counter o PC), también llamado Puntero de instrucciones (Instruction Pointer), parte del secuenciador de instrucciones en algunas computadoras, es un registro del procesador de un computador que indica la posición donde está el procesador en su secuencia de instrucciones. Dependiendo de los detalles de la máquina particular, contiene o la dirección de la instrucción que es ejecutada, o la dirección de la próxima instrucción a ser ejecutada. El contador de programa es incrementado automáticamente en cada ciclo de instrucción de tal manera que las instrucciones son leídas en secuencia desde la memoria. Ciertas instrucciones, tales como las bifurcaciones y las llamadas y retornos de subrutinas, interrumpen la secuencia al colocar un nuevo valor en el contador de programa. En la inmensa mayoría de los procesadores, el puntero de instrucciones es incrementado inmediatamente después de leer (fetch) una instrucción de programa; esto significa que la dirección a la que apunta una instrucción de bifurcación es obtenida agregando el operando de la instrucción de bifurcación a la dirección de la instrucción siguiente (byte o word, dependiendo del tipo de la computador) después de la instrucción de bifurcación. La dirección de la siguiente instrucción a ser ejecutada siempre se encuentra en el contador de instrucción.
View more...
Comments