Secuencia de ejecución de una instrucción
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.
Partimos de una situación inicial con un programa cargado en memoria y la CPU con todos los registros a 0
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
La memoria RAM, selecciona la dirección 0000 y lee su contenido.
A través del bus de datos, se coloca la instrucción en el registro de instrucciones.
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
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.
El dato se pasa por el bus de datos al registro temporal de la ALU.
La ALU suma el contenido del registro temporal al del acumulador puesto que se trata de una instrucción de un solo operador.
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.
El contenido de la dirección 0001 de la RAM se pasa al registro de datos.
El controlador identifica la operación de los 4 bits de nuevo como sumar.
Los 4 bits menos significativos se pasan al registro de direcciones para buscar en la RAM el dato a sumar al registro acumulador
Los datos de la dirección 1101 se pasan por el bus de datos al registro temporal de la ALU
Se guarda en el registro acumulador el resultado de sumarlo con el registro temporal.
Una nueva instrucción: El contador de programa le indica al registro de direcciones que busque la instrucción 0010.
La instrucción se pasa por el bus de datos al registro de datos.
El registro de instrucciones recibe el código de operación 1001 que el controlador interpreta como GUARDAR.