El ciclo de instrucción (también conocido como ciclo de captación-decisión-ejecución o fetch-decode-execute cycle) es la secuencia fundamental de pasos que realiza la Unidad Central de Procesamiento (CPU) para procesar cada una de las instrucciones que componen un programa informático.
La ejecución de un programa se basa en un proceso repetitivo en el que el procesador lee y ejecuta una serie de instrucciones.
De forma simplificada, el ciclo de instrucción puede dividirse en dos grandes etapas: lectura y ejecución. La lectura comprende la búsqueda de la instrucción y su decodificación. La ejecución comprende la realización de la operación, el acceso a memoria cuando sea necesario y el almacenamiento del resultado.
El modelo clásico define cinco etapas en el ciclo de instrucción, que forman parte del proceso de ejecución de un programa. Para ejecutarlo, la CPU procesa cada instrucción repitiendo este ciclo millones de veces por segundo, avanzando paso a paso por todas sus fases:
- Fetch (búsqueda): La CPU obtiene la siguiente instrucción desde la memoriautilizando el Contador de Programa (PC).
- Decode (decodificación): La Unidad de Control interpreta la instrucción y determina qué operación debe realizarse y qué recursos se necesitan.
- Execute (ejecución): La ALU realiza la operación indicada (cálculos aritméticos, comparaciones, direcciones efectivas, etc.).
- Memory (Memoria): La CPU accede a la memoria principal (RAM o caché) sólo si la instrucción lo requiere. Por ejemplo, una instrucción LOAD debe leer datos desde memoria, mientras que una instrucción STORE debe escribirlos. En esta etapa, la CPU abandona sus registros internos y accede a la memoria externa, que es mucho más lenta.
- Store o Write Back (almacenamiento): La CPU guarda el resultado en un registro interno para poder usarlo en instrucciones posteriores o enviarlo a un dispositivo de salida. Esta etapa ocurre casi siempre, ya que la mayoría de instrucciones generan un valor que debe almacenarse. Por ejemplos, el resultado de una suma se guarda en un registro, el resultado de una comparación se guarda en el registro de estado, una dirección calculada se guarda en un registro temporal.
Fases del Ciclo de Instrucción
Para ejecutar un programa, la CPU repite continuamente el ciclo de instrucción. En cada ciclo, obtiene una instrucción de la memoria, la interpreta, la ejecuta y, si es necesario, accede a memori y almacena el resultado:
| Fase del Ciclo | Descripción y Funcionamiento | Componente Principal Involucrado |
|---|---|---|
| 1. Fetch (Búsqueda) | La CPU obtiene de la memoria la siguiente instrucción utilizando la dirección almacenada en el registro Contador de Programa (PC). | Registro PC, Bus de Direcciones y Memoria RAM. |
| 2. Decode (Decodificación) | La Unidad de Control (UC) interpreta la instrucción para determinar qué operación debe realizar y qué datos o recursos necesita. | Unidad de Control (UC). |
| 3. Execute (Ejecución) | Se realiza la operación indicada por la instrucción. La ALU realiza los cálculos oportunos o se accede a los datos necesarios. | Unidad Aritmético-Lógica (ALU) y registros internos. |
| 4. Memory (acceso a memoria) | Si la instrucción necesita acceder a memoria, se realiza la lectura o escritura de los datos correspondientes. | Bus de Datos y Memoria / Registros. |
| 5. Store o Write back (Almacenamiento) | El resultado de la operación se almacena en el registro correspondiente o, cuando la instrucción lo indica, en la memoria. | Bus de Datos y Memoria / Registros. |
La Sincronización y el Reloj del Sistema
Todo este proceso está perfectamente sincronizado por el reloj del sistema (system clock), un oscilador de cuarzo que emite pulsos eléctricos a una frecuencia constante (por ejemplo, en un proceador moderno ronda en torno a los 4 GHz). Cada ciclo de reloj marca el ritmo al que la CPU puede avanzar de una microoperación a la siguiente.
Actividad práctica
Objetivo:
Comprender el flujo temporal de las instrucciones en la CPU y el papel de los registros internos durante el ciclo de instrucción.
Tareas:
- Define brevemente qué función cumple el registro Contador de Programa (PC) al inicio de cada fase de búsqueda (Fetch).
- Explica qué diferencia existe entre la fase de decodificación y la fase de ejecución dentro de la CPU.
- Investiga qué es un ciclo por instrucción (CPI) y por qué los procesadores modernos intentan reducir este valor mediante técnicas como el cauce o segmentación (pipelining).
- Razona qué ocurriría si el reloj del sistema experimentara un fallo temporal de sincronización durante el ciclo de instrucción.
Haz clic aquí para ver una propuesta de solución y explicaciones
1. Define brevemente qué función cumple el registro Contador de Programa (PC) al inicio de cada fase de búsqueda (Fetch).
El registro PC contiene en todo momento la dirección de memoria exacta donde se encuentra la siguiente instrucción que debe ser ejecutada. Tras cada búsqueda, su valor se incrementa automáticamente para apuntar a la instrucción posterior.
2. Explica qué diferencia existe entre la fase de decodificación y la fase de ejecución dentro de la CPU.
En la decodificación, la Unidad de Control simplemente interpreta y traduce la instrucción leída para comprender qué orden se va a dar. En la ejecución, la orden ya comprendida se materializa de forma física mediante operaciones matemáticas, lógicas o transferencias de datos.
3. Investiga qué es un ciclo por instrucción (CPI) y por qué los procesadores modernos intentan reducir este valor mediante técnicas como el cauce o segmentación (pipelining).
Un Ciclo por Instrucción (CPI) es una métrica de rendimiento que indica el número promedio de ciclos de reloj que necesita un procesador para ejecutar una sola instrucción de software.Se calcula dividiendo los ciclos totales de reloj de un programa entre el número de instrucciones ejecutadas. Un CPI menor significa que el procesador es más eficiente, ya que necesita menos tiempo (ciclos) para terminar el mismo trabajo. En procesadores antiguos, una instrucción debía terminar antes de empezar la siguiente, por lo que el CPI siempre era igual o mayor que 1.
Los procesadores modernos buscan reducir el CPI por debajo de 1 (técnicamente logrando un rendimiento "superescalar") para aumentar la velocidad del ordenador sin tener que subir la frecuencia del reloj. Subir los gigahercios (GHz) genera demasiado calor y consumo de energía; reducir el CPI evita este problema.
La segmentación o pipelining reduce el CPI aplicando el concepto de una cadena de montaje industrial:
- Solapamiento de tareas: En lugar de procesar una instrucción entera de principio a fin, la instrucción se divide en etapas independientes (ej. Buscar, Decodificar, Ejecutar, Escribir).
- Trabajo en paralelo: Mientras la primera instrucción está en la etapa de ejecución, la segunda instrucción ya está en la etapa de decodificación y la tercera está siendo buscada.
- Resultado: Aunque una sola instrucción individual sigue tardando varios ciclos en completarse, el procesador termina una instrucción diferente en cada ciclo de reloj. Esto desploma el CPI promedio del procesador, acercándolo a su mínimo ideal.
4. Razona qué ocurriría si el reloj del sistema experimentara un fallo temporal de sincronización durante el ciclo de instrucción.
Si la señal de reloj falla o se desincroniza, las fases del ciclo pierden su orden temporal. Esto provoca que las señales eléctricas lleguen a destiempo a los registros y bloques funcionales, corrompiendo los datos y provocando de inmediato un bloqueo del sistema o un reinicio forzoso.
Preguntas de reflexión:
- ¿Por qué es necesario que las instrucciones se ejecuten de manera secuencial estricta salvo que una instrucción de salto modifique el flujo?
- ¿De qué manera influye la velocidad de la memoria RAM en el tiempo total que tarda la CPU en completar el ciclo de búsqueda (Fetch)?
- ¿Cómo consigue la técnica de segmentación (pipelining) ejecutar más de una instrucción simultáneamente en diferentes fases del ciclo?
- ¿Cuál es la diferencia entre Memory y Write Back? Explica dicha diferencia con una analogía.
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué es necesario que las instrucciones se ejecuten de manera secuencial estricta salvo que una instrucción de salto modifique el flujo?
Porque los programas están diseñados bajo una lógica lineal donde el resultado de una instrucción previa suele ser el punto de partida o la condición lógica de la siguiente. Mantener el orden garantiza la coherencia del algoritmo, permitiendo saltos únicamente cuando la lógica del programa (como bucles o condiciones) lo requiera explícitamente.
2. ¿De qué manera influye la velocidad de la memoria RAM en el tiempo total que tarda la CPU en completar el ciclo de búsqueda (Fetch)?
Si la memoria RAM es lenta en responder a la solicitud de lectura de la CPU, se generan estados de espera (wait states) en la fase de búsqueda. Esto alarga artificialmente el ciclo de instrucción, haciendo que la CPU pase tiempo ociosa esperando a recibir la instrucción que debe procesar.
3. ¿Cómo consigue la técnica de segmentación (pipelining) ejecutar más de una instrucción simultáneamente en diferentes fases del ciclo?
El pipelining divide el hardware interno de la CPU en etapas independientes para cada fase del ciclo. Mientras una instrucción se está ejecutando, la siguiente se está decodificando y otra más se está buscando en memoria de forma simultánea, optimizando el rendimiento general y aprovechando al máximo cada ciclo de reloj.
4. ¿Cuál es la diferencia entre Memory y Write Back? Explica dicha diferencia con una analogía.
En la etapa Memory, la CPU sale de los registros y va a la memoria. Es decir, lee o escribe en memoria externa a la CPU.
En la etapa Write Back se guarda el resultado dentro de la CPU.Se puede comprender fácilmente esta diferencia con una analogía: imagina que la CPU es un trabajador con una libreta (registros) y un almacén (memoria). Memory es ir al almacén a buscar o dejar cajas, mientras que Write Back es apuntar el resultado en la libreta para seguir trabajando. Son acciones distintas, en lugares distintos, con tiempos distintos.

