domingo, 27 de junio de 2010

Ciclo de instrucción



Un ciclo de instrucción (también llamado ciclo de fetch-and-execute o ciclo de fetch-decode-execute en inglés) es el período que tarda la unidad central de proceso (CPU) en ejecutar una instrucción de lenguaje máquina.

Comprende una secuencia de acciones determinada que debe llevar a cabo la CPU para ejecutar cada instrucción en un programa. Cada instrucción del juego de instrucciones de una CPU puede requerir diferente número de ciclos de instrucción para su ejecución. Un ciclo de instrucción está formado por uno o más ciclos máquina.

Para que cualquier sistema de proceso de datos basado en microprocesador (por ejemplo un ordenador) o microcontrolador (por ejemplo un reproductor de MP3) realice una tarea (programa) primero debe buscar cada instrucción en la memoria principal y luego ejecutarla.

Secuencia de acciones del ciclo de instrucción


Habitualmente son cuatro los eventos o pasos que se llevan a cabo en cada ciclo de instrucción (ciclo de fetch):

Buscar la instruccion en la memoria principal

Se vuelca el valor del contador de programa sobre el bus de direcciones. Entonces la CPU pasa la instrucción de la memoria principal a través del bus de datos al Registro de Datos de Memoria (MDR). A continuación el valor del MDR es colocado en el Registro de Instrucción Actual (CIR), un circuito que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada.

Decodificar la instrucción

El decodificador de instrucción interpreta e implementa la instrucción. El registro de instrucción (IR) mantiene la instrucción en curso mientras el contador de programa (PC, program counter) guarda la dirección de memoria de la siguiente instrucción a ser ejecutada.

  • Recogida de datos desde la memoria principal
También se lee la dirección efectiva de la memoria principal si la instrucción tiene una dirección indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos.

Ejecutar la instrucción

A partir del registro de instrucción, los datos que forman la instrucción son decodificados por la unidad de control. Ésta interpreta la información como una secuencia de señales de control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la operación requerida por la instrucción.

Almacenar o guardar resultados

El resultado generado por la operación es almacenado en la memoria principal o enviado a un dispositivo de salida dependiendo de la instrucción. Basándose en los resultados de la operación, el contador de programa se incrementa para apuntar a la siguiente instrucción o se actualiza con una dirección diferente donde la próxima instrucción será recogida.


jueves, 29 de abril de 2010

Unidad Lógica Aritmetica (ALU)



En computación, la Unidad Lógica Aritmética (ULA), o Arithmetic Logic Unit (ALU), es un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (como igual a, menor que, mayor que, etc.), 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 como el Intel Core Duo. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy complejo y poderoso. 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 ALU: GPU como los que están en las tarjetas gráficas NVIDIA y ATI, FPU como el viejo coprocesador numérico 80387, y procesadores digitales de señales como los que se encuentran en tarjetas de sonido Sound Blaster, lectoras de CD y las TV de alta definición. Todos éstos tienen adentro varias ALU poderosas y complejas.

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 de 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 ALUs para cada uno de estos sistemas numéricos tenían diferentes diseños, y esto influenció la preferencia actual por el complemento a dos, debido a que ésta es la representación que hace más fácil, para el circuito electrónico de la ALU, calcular adiciones y sustracciones, etc.