Secuencia de ejecución de una instrucción

De castillowiki
Ir a la navegación Ir a la búsqueda

Este ejemplo está muy simplificado. Suponemos una CPU de 8 bits, una memoria de hasta 16 bytes y dos registros para ALU. No se pretende explicar exhaustivamente el funcionamiento de un procesador o arquitectura en concreto.

Lo que va a hacer el procesador es un programa muy sencillo que consiste en sumar dos números a un acumulador y luego guardar el resultado en la RAM. Con un procesador como este, poniendo a 0 el acumulador, es la manera de sumar dos números que están en la memoria.

Cpu1.png

Partimos de una situación inicial con un programa cargado en memoria y la CPU con todos los registros a 0

Cpu2.png

En este momento, el contador de programa, que está a 0000 le transmite el registro de direcciones de la memoria MDR para que seleccione de memoria la siguiente instrucción a ejecutar, la 0000

Cpu3.png

La memoria RAM, selecciona la dirección 0000 y lee su contenido.

Cpu4.png

A través del bus de datos, se coloca la instrucción en el registro de instrucciones.

Cpu5.png

El registro de instrucciones recibe los 4 primeros bits que es el código de operación 0101 y el controlador identifica la operación como SUMAR. Mientras tanto, el contador de programa incrementa su valor en 1

Cpu6.png

Puesto que es una instrucción de suma, el resto de bits ha de ser la dirección de la memoria RAM donde está el dato. Por eso lo pone en el registro de direcciones para que la RAM lo identifique.

Cpu7.png

El dato se pasa por el bus de datos al registro temporal de la ALU.

Cpu8.png

La ALU suma el contenido del registro temporal al del acumulador puesto que se trata de una instrucción de un solo operador.

Cpu9.png

El registro acumulador a guardado el resultado de la suma. El contador de programa le proporciona al registro de direcciones la dirección de la próxima instrucción.

Cpu10.png

El contenido de la dirección 0001 de la RAM se pasa al registro de datos.

Cpu11.png

El controlador identifica la operación de los 4 bits de nuevo como sumar.

Cpu12.png

Los 4 bits menos significativos se pasan al registro de direcciones para buscar en la RAM el dato a sumar al registro acumulador

Cpu13.png

Los datos de la dirección 1101 se pasan por el bus de datos al registro temporal de la ALU

Cpu14.png

Se guarda en el registro acumulador el resultado de sumarlo con el registro temporal.

Cpu15.png

Una nueva instrucción: El contador de programa le indica al registro de direcciones que busque la instrucción 0010.

Cpu16.png

La instrucción se pasa por el bus de datos al registro de datos.

Cpu17.png

El registro de instrucciones recibe el código de operación 1001 que el controlador interpreta como GUARDAR.

Cpu18.png

Se selecciona la dirección 1100 según los 4 último bits de la instrucción.

Cpu19.png

Se guarda el contenido del acumulador en la dirección 1100