El ciclo de instrucción (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 que se apaga el ordenador para procesar instrucciones. Está compuesto 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 de manera secuencial, y cada instrucción se procesa antes de que comience la siguiente. En la mayoría de las CPU modernas, los ciclos de instrucciones se ejecutan en forma concurrente , y a menudo en paralelo , a través de una secuencia de instrucciones : la siguiente instrucción comienza a procesarse antes de que finalice la instrucción anterior, lo que es posible porque el ciclo se divide en pasos separados. [1]
Papel de los componentes
Contador de programas
El contador de programa (PC) es un registro que contiene la dirección de memoria de la siguiente instrucción que se ejecutará. Después de 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 especificado o bifurcarse condicionalmente a un puntero especificado. [2] Además, durante una parada de 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 dirección de memoria
El MAR es responsable de almacenar la dirección que describe la ubicación de la instrucción. Después de que se inicia 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). Este componente funciona en general como un búfer de direcciones para señalar ubicaciones en la memoria.
Registro de datos de memoria
El MDR es responsable de almacenar temporalmente las instrucciones leídas desde la dirección en MAR. Actúa como un registro bidireccional en el ciclo de instrucción porque puede tomar la salida de la memoria a la CPU o la salida de la CPU a la memoria.
Registro de instrucción actual
El registro de instrucciones actual (CIR, aunque a veces se lo denomina registro de instrucciones, IR) es donde se retiene temporalmente la instrucción para que la CPU la decodifique y produzca señales de control correctas para la etapa de ejecución.
Unidad de control
La unidad de control (CU) decodifica la instrucción en el registro de instrucciones actual (CIR). Luego, la CU envía señales a otros componentes dentro de la CPU, como la unidad lógica aritmética (ALU), o de regreso a la memoria para buscar operandos, o a la unidad de punto flotante (FPU). La ALU realiza operaciones aritméticas basadas en códigos de operación específicos en 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 etapas[3]
La CPU de cada computadora puede tener diferentes ciclos basados en diferentes conjuntos de instrucciones, pero será similar al siguiente ciclo:
- 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 PC para conocer la dirección de la instrucción en la memoria (utilizando el MAR). Luego, la instrucción se almacena desde el MBR al CIR. Al final de esta etapa, el PC señala 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 UC. Determina qué operaciones y operandos adicionales son necesarios para la ejecución y envía las señales correspondientes a los componentes correspondientes dentro de la CPU, como la ALU o la FPU, para preparar la ejecución de la instrucción.
- Etapa de ejecución : esta es la etapa en la que las unidades funcionales relevantes de la CPU llevan a cabo la operación real especificada por la instrucción. La ALU puede ejecutar operaciones lógicas o aritméticas, leer o escribir datos en la memoria y los resultados se almacenan en registros o en la memoria según lo requiera la instrucción. Según la salida de la ALU, la PC puede ramificarse.
- Repetir ciclo
Además, en la mayoría de los procesadores, pueden producirse interrupciones . Esto hará 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 en el medio, pero no tendrá ningún efecto y la instrucción se volverá a ejecutar después de regresar de la interrupción.
Iniciación
El primer ciclo de instrucción comienza tan pronto como se aplica energía al sistema, con un valor de PC inicial que está predefinido por la arquitectura del sistema (por ejemplo, en las CPU Intel IA-32 , el valor de PC predefinido es 0xfffffff0mientras que para las CPU de 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 búsqueda
La etapa de búsqueda es la misma para cada instrucción:
- La PC contiene la dirección de la instrucción que se va a buscar.
- 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, la PC los 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[6]
El proceso de decodificación permite al procesador determinar qué instrucción se debe ejecutar para que la CPU pueda saber cuántos operandos necesita recuperar para ejecutar la instrucción. El código de operación obtenido de la memoria se decodifica para los siguientes pasos y se traslada a los registros correspondientes. La decodificación se realiza normalmente mediante decodificadores binarios en la UC de la CPU.
Determinación de direcciones efectivas[7]
Hay varias formas en que una arquitectura puede especificar la determinación de la dirección de los operandos, normalmente llamados modos de direccionamiento .
Algunas formas comunes de encontrar la dirección efectiva son:
- Direccionamiento directo: la dirección de la instrucción contiene la dirección efectiva
- Direccionamiento indirecto: la dirección de la instrucción especifica la dirección de la ubicación de memoria que contiene la dirección efectiva.
- Direccionamiento relativo a la PC: la dirección efectiva se calcula a partir de una dirección relativa a la PC
- Direccionamiento de pila: el operando está en la parte superior de la pila
Ejecutar etapa
La CPU envía la instrucción decodificada (decodificada desde la UC) como un conjunto de señales de control a los componentes correspondientes. Según el tipo de instrucción, puede ocurrir cualquiera de estas cosas:
- La ALU puede ejecutar operaciones aritméticas/lógicas (por ejemplo, ADD, SUB, AND, OR) [8]
- Se pueden ejecutar operaciones de lectura/escritura desde la memoria (por ejemplo, cargar/almacenar bytes)
- Se pueden ejecutar modificaciones del flujo de control (por ejemplo, saltos o bifurcaciones): en esta etapa, si se produjera un salto, en lugar de que la PC incremente al puntero adyacente, saltaría al puntero especificado en la instrucción.
Esta es la única etapa del ciclo de instrucciones que es útil desde la perspectiva del usuario final. Todo lo demás es trabajo adicional necesario para que se lleve a cabo el paso de ejecución.
Véase también
- Fracción de tiempo , unidad de programación del sistema operativo
- Canalización RISC clásica
- Conjunto complejo de instrucciones para ordenador
- Ciclos por instrucción
- Predictor de ramificaciones
- Arquitectura del conjunto de instrucciones
Referencias
- ^ Crystal Chen, Greg Novick y Kirk Shimano (2000). "Pipelining" . Consultado el 26 de junio de 2019 .
- ^ Dodge, NB (2017). "The Program Counter" (PDF) . personal.utdallas.edu (Diapositivas) . Consultado el 3 de enero de 2025 .
{{cite web}}: CS1 maint: url-status (link) - ^ Tiempo y ciclo de instrucción (PDF) .
- ^ Bosky Agarwal (2004). "Ciclo de ejecución de búsqueda de instrucciones" (PDF) . Archivado desde el original (PDF) el 11 de junio de 2009. Consultado el 14 de octubre de 2012 .
- ^ Aryal, Er. Hari. Unidad Central de Procesamiento (PDF) .
- ^ Operación de la unidad de control (PDF) .
- ^ Conjuntos de instrucciones: modos de direccionamiento y formatos (PDF) .
- ^ ALU (Unidad Aritmética Lógica) (PDF) .