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]
El contador de programa (PC) es un registro especial que contiene la dirección de memoria de la siguiente instrucción que se va a ejecutar. Durante la etapa de búsqueda, la dirección almacenada en el PC se copia en el registro de direcciones de memoria (MAR) y luego el PC se incrementa para "señalar" la dirección de memoria de la siguiente instrucción que se va a ejecutar. Luego, la CPU toma la instrucción en la dirección de memoria descrita por el MAR y la copia en el registro de datos de memoria (MDR) . El MDR también actúa como un registro bidireccional que contiene datos obtenidos de la memoria o datos que esperan ser almacenados en la memoria (también se lo conoce como registro de búfer de memoria (MBR) debido a esto). Finalmente, la instrucción en el MDR se copia en el registro de instrucciones actual (CIR) que actúa como una base de retención temporal para la instrucción que se acaba de obtener de la memoria.
Durante la etapa de decodificación, la unidad de control (CU) decodificará la instrucción en el CIR. Luego, la CU envía señales a otros componentes dentro de la CPU, como la unidad lógica aritmética (ALU) y la unidad de punto flotante (FPU) . La ALU realiza operaciones aritméticas como la suma y la resta, y también la multiplicación mediante la suma repetida y la división mediante la resta repetida. [ dudoso – discutir ] También realiza operaciones lógicas como AND , OR , NOT y desplazamientos binarios . La FPU está reservada para realizar operaciones de punto flotante .
La CPU de cada computadora puede tener diferentes ciclos basados en diferentes conjuntos de instrucciones, pero será similar al siguiente 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. En algunos casos, una instrucción puede interrumpirse a mitad de camino; la instrucción no tendrá ningún efecto, pero se volverá a ejecutar después de regresar de la interrupción.
El primer ciclo de instrucciones 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 0xfffffff0
). Por lo general, 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 . [2]
El paso de búsqueda es el mismo para cada instrucción:
La unidad de control obtiene la dirección de la instrucción de la unidad de memoria .
El proceso de decodificación permite al procesador determinar qué instrucción se debe ejecutar para que la CPU pueda indicar 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 unidad de control de la CPU .
En este paso se evalúa qué tipo de operación se va a realizar y, si se trata de una operación de memoria, la computadora determina la dirección de memoria efectiva que se utilizará en la siguiente etapa de ejecución. Existen varias formas posibles que una arquitectura de computadora puede especificar para determinar la dirección, generalmente denominadas modos de direccionamiento .
Algunas formas comunes de encontrar la dirección efectiva son:
La CPU envía la instrucción decodificada como un conjunto de señales de control a los componentes informáticos correspondientes. Si la instrucción implica aritmética o lógica, se utiliza la ALU. Esta es la única etapa del ciclo de instrucción que resulta útil desde la perspectiva del usuario final. Todo lo demás es un trabajo adicional necesario para que se lleve a cabo el paso de ejecución.