¿Cómo se van ejecutando las operaciones en un Microprocesador?
El funcionamiento fundamental de la mayoría de las CPU, independientemente de la forma física que adopten, es ejecutar una secuencia de instrucciones almacenadas que se denomina programa.
Las instrucciones a ejecutar se guardan en algún tipo de memoria del ordenador. Casi todas las CPUs siguen los pasos de obtención, decodificación y ejecución en su funcionamiento, que se conocen colectivamente como el ciclo de instrucción.

¿Qué sucede tras esa ejecución de programas?
Después de la ejecución de una instrucción, todo el proceso se repite, y el siguiente ciclo de instrucción normalmente busca la siguiente instrucción en la secuencia debido al valor incrementado en el contador de programa.
Si se ejecutó una instrucción de salto, el contador de programa se modificará para contener la dirección de la instrucción a la que se saltó y la ejecución del programa continúa normalmente.
En CPUs más complejas, se pueden obtener, decodificar y ejecutar simultáneamente múltiples instrucciones. Esta sección describe lo que generalmente se denomina “pipeline RISC clásico“, que es bastante común entre las CPUs simples utilizadas en muchos dispositivos electrónicos (a menudo llamados microcontroladores). Ignora en gran medida el importante papel de la caché de la CPU y, por tanto, la etapa de acceso del pipeline.
Algunas instrucciones manipulan el contador del programa en lugar de producir datos de resultado directamente; dichas instrucciones se denominan generalmente “saltos” y facilitan el comportamiento del programa como los bucles, la ejecución condicional del programa (mediante el uso de un salto condicional) y la existencia de funciones. En algunos procesadores, algunas otras instrucciones cambian el estado de los bits en un registro de “banderas”.
Estas banderas pueden utilizarse para influir en el comportamiento de un programa, ya que a menudo indican el resultado de varias operaciones.
Por ejemplo, en estos procesadores una instrucción de “comparación” evalúa dos valores y establece o borra bits en el registro de banderas para indicar cuál es mayor o si son iguales; una de estas banderas podría ser utilizada por una instrucción de salto posterior para determinar el flujo del programa.
Tareas básicas de un Procesador
Búsqueda
El primer paso, la búsqueda, consiste en recuperar una instrucción (representada por un número o una secuencia de números) de la memoria del programa. La ubicación (dirección) de la instrucción en la memoria de programa está determinada por un contador de programa (PC), que
almacena un número que identifica la dirección de la siguiente instrucción que se va a obtener. Después de obtener una instrucción, el PC se incrementa en la longitud de la instrucción para que contenga el
dirección de la siguiente instrucción de la secuencia. A menudo, la instrucción que debe obtenerse debe recuperarse de una memoria relativamente lenta, lo que hace que la CPU se detenga mientras espera que se devuelva la instrucción. Este problema se resuelve en gran medida en los procesadores modernos gracias a las memorias caché y las arquitecturas de canalización (véase más adelante).
Descodificar
La instrucción que la CPU obtiene de la memoria determina lo que hará la CPU. En el paso de decodificación, realizado por el circuito conocido como decodificador de instrucciones, la instrucción se convierte en señales que controlan otras partes de la CPU.
La forma en que se interpreta la instrucción viene definida por la arquitectura del conjunto de instrucciones (ISA) de la CPU. A menudo, un grupo de bits (es decir, un “campo”) dentro de la instrucción, llamado opcode, indica qué operación debe realizarse, mientras que los campos restantes suelen proporcionar información complementaria necesaria para la operación, como los operandos. Estos operandos pueden especificarse como un valor constante (llamado valor inmediato), o como la ubicación de un valor que puede ser un registro del procesador o una dirección de memoria, según lo determine algún modo de direccionamiento.
En algunos diseños de CPU, el decodificador de instrucciones se implementa como un circuito inalterable. En otros, se utiliza un microprograma para traducir las instrucciones en conjuntos de señales de configuración de la CPU que se aplican secuencialmente a lo largo de múltiples pulsos de reloj. En algunos casos, la memoria que almacena el microprograma es reescribible, lo que permite cambiar la forma en que la CPU decodifica las instrucciones.
Ejecutar
Después de los pasos de obtención y decodificación, se realiza el paso de ejecución. Dependiendo de la arquitectura de la CPU, esto puede consistir en una sola acción o en una secuencia de acciones. Durante cada acción, varias partes de la CPU se conectan eléctricamente para que puedan realizar toda o parte de la operación deseada y luego la acción se completa, normalmente en respuesta a un pulso de reloj. Muy a menudo, los resultados se escriben en un registro interno de la CPU para un acceso rápido por parte de las instrucciones posteriores. En otros casos, los resultados pueden escribirse en una memoria principal más lenta, pero menos costosa y de mayor capacidad.
Por ejemplo, si se va a ejecutar una instrucción de suma, las entradas de la unidad aritmética lógica (ALU) se conectan a un par de fuentes de operandos
(números a sumar), la ALU está configurada para realizar una operación de adición de manera que la suma de sus entradas de operandos aparecerá en su salida, y la salida de la ALU está conectada al almacenamiento (por ejemplo, un registro o memoria) que recibirá la suma. Cuando se produce el pulso de reloj, la suma se transferirá al almacenamiento y, si la suma resultante es demasiado grande (es decir, es mayor que el tamaño de la palabra de salida de la ALU), se activará una bandera de desbordamiento aritmético.
Actualmente éste tipo de procesadore están psasndo a un segundo plano gracias a la utilización de CUDA, como procesadores múltiples y con varias ejecuciones como usan por ejemplo fakeapp.