El ciclo de instrucciones (también conocido como ciclo de búsqueda-decodificación-ejecución , o simplemente ciclo de búsqueda-ejecución ) es el ciclo que sigue la unidad central de procesamiento (CPU) desde el arranque hasta el apagado del ordenador para procesar instrucciones. Se compone de tres etapas principales: la etapa de búsqueda, la etapa de decodificación y la etapa de ejecución.

En las CPU más simples, el ciclo de instrucciones se ejecuta secuencialmente, procesándose cada instrucción antes de que comience la siguiente. En la mayoría de las CPU modernas, los ciclos de instrucciones se ejecutan concurrentemente , y a menudo en paralelo , mediante una tubería de instrucciones : la siguiente instrucción comienza a procesarse antes de que la anterior haya finalizado, lo cual es posible porque el ciclo se divide en pasos separados. [ 1 ]
Función de los componentes
Contador de programa
El contador de programa (PC) es un registro que almacena la dirección de memoria de la siguiente instrucción a ejecutar. Tras cada copia de instrucción al registro de dirección de memoria (MAR), el PC puede incrementar el puntero a la siguiente instrucción secuencial, saltar a un puntero específico o realizar una bifurcación condicional a un puntero específico. [ 2 ] Asimismo, durante una parada de la CPU , el PC retiene la instrucción que se está ejecutando hasta que se recibe una interrupción externa o una señal de reinicio.
Registro de direcciones de memoria
El MAR se encarga de almacenar la dirección que describe la ubicación de la instrucción. Tras recibir una señal de lectura, la instrucción en la dirección del MAR se lee y se coloca en el registro de datos de memoria (MDR), también conocido como registro de búfer de memoria (MBR). Este componente funciona como un búfer de direcciones para apuntar a ubicaciones en la memoria.
Registro de datos de memoria
El MDR se encarga de retener temporalmente las instrucciones leídas desde la dirección en MAR. Funciona como un registro bidireccional en el ciclo de instrucción, ya que puede recibir información de la memoria a la CPU o viceversa.
Registro de instrucciones actual
El registro de instrucciones actual (CIR, aunque a veces se le denomina registro de instrucciones, IR) es donde se almacena temporalmente la instrucción para que la CPU la decodifique y genere las señales de control correctas para la etapa de ejecución.
Unidad de control
La unidad de control (UC) decodifica la instrucción en el registro de instrucciones actual (CIR). A continuación, la UC envía señales a otros componentes de la CPU, como la unidad aritmético-lógica (ALU), o bien a la memoria para obtener los operandos, o a la unidad de punto flotante (FPU). La ALU realiza operaciones aritméticas basándose en los códigos de operación específicos de la instrucción. Por ejemplo, en la arquitectura RISC-V , existen los códigos de operación funct3 y funct7 para distinguir si una instrucción es una operación lógica o aritmética.
Resumen de las etapas
La CPU de cada computadora puede tener diferentes ciclos según diferentes conjuntos de instrucciones, pero serán similares al siguiente ciclo: [ 3 ]
- Etapa de búsqueda : La etapa de búsqueda inicia el ciclo de instrucción recuperando la siguiente instrucción de la memoria. Durante esta etapa, se consulta al contador de programa (PC) la dirección de la instrucción en memoria (mediante el registro MAR). A continuación, la instrucción se almacena desde el registro MDR al registro CIR. Al finalizar esta etapa, el PC apunta a la siguiente instrucción que se leerá en el siguiente ciclo.
- Etapa de decodificación : Durante esta etapa, la instrucción codificada en el CIR es interpretada por la CU. Determina qué operaciones y operandos adicionales se requieren para la ejecución y envía las señales correspondientes a los componentes respectivos dentro de la CPU, como la ALU o la FPU, para preparar la ejecución de la instrucción.
- Etapa de ejecución : En esta etapa, las unidades funcionales de la CPU ejecutan la operación especificada por la instrucción. La ALU puede realizar operaciones lógicas o aritméticas, leer o escribir datos en la memoria y almacenar los resultados en registros o memoria según lo requiera la instrucción. En función de la salida de la ALU, el contador de programa (PC) puede bifurcarse.
- Repetir el ciclo
Además, en la mayoría de los procesadores pueden producirse interrupciones . Esto provoca que la CPU salte a una rutina de servicio de interrupción, la ejecute y luego regrese a la instrucción que debía estar ejecutando. En algunos casos, la instrucción puede interrumpirse a mitad de su ejecución, pero esto no tendrá ningún efecto y la instrucción se volverá a ejecutar tras el retorno de la interrupción.
Iniciación
El primer ciclo de instrucciones comienza tan pronto como se aplica energía al sistema, con un valor PC inicial predefinido por la arquitectura del sistema (por ejemplo, en las CPU Intel IA-32 , el valor PC predefinido es 0xfffffff0mientras que para las CPU con arquitectura ARM , es 0x00000000). Normalmente, esta dirección apunta a un conjunto de instrucciones en la memoria de solo lectura (ROM), que inicia el proceso de carga (o arranque ) del sistema operativo . [ 4 ]
Etapa de obtención
La etapa de obtención es la misma para cada instrucción:
- El PC contiene la dirección de la instrucción que se va a obtener.
- Esta dirección se copia al MAR, donde se utiliza para sondear la ubicación de la instrucción en la memoria.
- La CU envía una señal al bus de control para leer la memoria en la dirección en MAR; los datos leídos se colocan en el bus de datos . [ 5 ]
- Los datos se transfieren a la CPU a través del bus de datos, donde se cargan en el MDR; en esta etapa, el PC se incrementa en uno.
- El contenido (instrucción a ejecutar) del MDR se copia en el CIR (donde se pueden decodificar el código de operación de la instrucción y el operando de datos).
Etapa de decodificación
El proceso de decodificación permite al procesador determinar qué instrucción se debe ejecutar, de modo que la CPU pueda saber cuántos operandos necesita obtener para ejecutarla. El código de operación obtenido de la memoria se decodifica para los siguientes pasos y se transfiere a los registros correspondientes. La decodificación la realizan normalmente los decodificadores binarios de la unidad de control (CU) de la CPU. [ 6 ]
Determinación de direcciones efectivas
Existen varias formas en que una arquitectura puede especificar la determinación de la dirección para los operandos, generalmente denominadas modos de direccionamiento . [ 7 ]
Algunas formas comunes de encontrar la dirección efectiva son:
- Direccionamiento directo: la instrucción contiene la dirección efectiva.
- Direccionamiento indirecto: la instrucción especifica la dirección de la ubicación de memoria o registro que contiene la dirección efectiva.
- Direccionamiento relativo al PC: la instrucción contiene un desplazamiento que se suma al PC para generar la dirección efectiva.
- Direccionamiento de pila: la dirección efectiva es la parte superior de la pila.
Etapa de ejecución
La CPU envía la instrucción decodificada (decodificada desde la CU) como un conjunto de señales de control a los componentes correspondientes. Dependiendo del tipo de instrucción, puede ocurrir cualquiera de las siguientes situaciones:
- Las operaciones aritméticas/lógicas pueden ser ejecutadas por la ALU (por ejemplo, ADD, SUB, AND, OR) [ 8 ].
- Se pueden ejecutar operaciones de lectura/escritura en la memoria (por ejemplo, cargar/almacenar bytes).
- Se pueden ejecutar alteraciones del flujo de control (por ejemplo, saltos o bifurcaciones); en esta etapa, si ocurriera un salto, en lugar de que el PC se incremente al puntero adyacente, saltaría al puntero especificado en la instrucción.
Esta es la única etapa del ciclo de instrucciones que resulta útil desde la perspectiva del usuario final. Todo lo demás es sobrecarga necesaria para que se lleve a cabo la ejecución.
Véase también
- Segmento de tiempo , unidad de planificación del sistema operativo
- Pipeline RISC clásico
- Computadora con conjunto de instrucciones complejo
- Ciclos por instrucción
- Predictor de ramificaciones
- Arquitectura del conjunto de instrucciones
Referencias
- ↑ Crystal Chen, Greg Novick y Kirk Shimano (2000). "Pipelining" . Recuperado el 26 de junio de 2019 .
- ↑ Dodge, NB (2017). "El contador de programas" (PDF) . personal.utdallas.edu (Diapositivas) . Recuperado el 3 de enero de 2025 .
- ↑ Tiempos y ciclo de las instrucciones (PDF) .
- ↑ Bosky Agarwal (2004). "Ciclo de obtención y ejecución de instrucciones" (PDF) . Archivado del original (PDF) el 11 de junio de 2009. Consultado el 14 de octubre de 2012 .
- ^ Aryal, Er. Hari. Unidad Central de Procesamiento (PDF) .
- ↑ Funcionamiento de la unidad de control (PDF) .
- ↑ Conjuntos de instrucciones: modos y formatos de direccionamiento (PDF) .
- ↑ ALU (Unidad Aritmético-Lógica) (PDF) .
- Procesamiento de instrucciones