Ciclo de instrucción y camino de datos
Buscar, decodificar, ejecutar, guardar. Ese lazo es todo lo que hace un procesador, y entenderlo explica qué es realmente un programa en ejecución.
Para este tema conviene tener claro:Flip-flops y circuitos secuenciales
Un procesador no hace nada más que repetir un lazo: traer la próxima instrucción, entender qué pide, hacerlo, guardar el resultado. Miles de millones de veces por segundo, sin excepción. Todo lo demás —sistemas operativos, navegadores, modelos de lenguaje— sale de ahí.
Las piezas mínimas de un procesador
Las piezas mínimas son pocas. El banco de registros: unas decenas de celdas rapidísimas donde se opera. La ALU, que hace las cuentas y las comparaciones. La unidad de control, que decide qué camino se abre en cada paso. Y dos registros especiales: el contador de programa, que apunta a la próxima instrucción, y el registro de instrucción, que guarda la actual.
El camino de datos es el cableado entre esas piezas, con multiplexores eligiendo de dónde viene cada operando.
Antes de seguir, predecí
Las cinco etapas del ciclo
El ciclo clásico tiene cinco etapas. Búsqueda: leer de memoria lo que apunta el contador de programa e incrementarlo. Decodificación: interpretar los bits y leer los registros fuente. Ejecución: la ALU opera, o calcula una dirección. Memoria: si la instrucción lee o escribe, se accede ahí. Escritura: el resultado vuelve al registro destino.
El contador de programa se incrementa durante la búsqueda, antes de saber qué instrucción era. Por eso un salto tiene que corregirlo después: el procesador ya había asumido que seguía la siguiente.
Estado inicial. En la dirección 100 está «sumar r1, r2, r3» y el contador apunta ahí.
El repertorio como contrato entre hardware y software
El repertorio de instrucciones es el contrato entre el hardware y el software: qué instrucciones existen, qué registros hay, cómo se codifican. Es la interfaz que permite que el mismo binario corra en procesadores distintos de la misma familia.
Hay dos filosofías. CISC —x86— tiene instrucciones numerosas y complejas, algunas de las cuales hacen varias cosas. RISC —ARM, RISC-V— tiene pocas instrucciones simples, de ancho fijo, donde sólo las de carga y almacenamiento tocan la memoria. RISC es más fácil de segmentar en etapas, y esa ventaja definió el diseño moderno; de hecho los x86 actuales traducen internamente a microoperaciones de estilo RISC.
La unidad de control: cableada o microprogramada
La unidad de control se implementa de dos maneras. Cableada: lógica combinacional que produce las señales directo del código de operación, rápida y rígida. Microprogramada: cada instrucción se expande en una secuencia de microinstrucciones guardadas en una memoria interna, más lenta pero modificable.
Lo segundo tiene una consecuencia práctica que se ve todos los días: el microcódigo se puede actualizar. Varias mitigaciones de vulnerabilidades de procesadores llegaron como actualizaciones de microcódigo, sin cambiar el chip.
Los saltos, que son lo interesante
Las instrucciones de salto son las que hacen interesante al ciclo. Un salto incondicional sólo reescribe el contador de programa. Un salto condicional depende de banderas que dejó una comparación anterior.
Y una llamada a función agrega guardar la dirección de retorno, típicamente en la pila. Ese mecanismo es lo que hace posible la recursión, y también es el que se ataca al sobrescribir la dirección de retorno con un desborde de buffer.
Un programa en ejecución es un estado
Puesto todo junto, un programa en ejecución es un estado: el contenido de los registros, el contador de programa y la memoria asociada. Nada más.
Eso es exactamente lo que el sistema operativo guarda y restaura al cambiar de proceso, y es lo que permite que decenas de programas parezcan correr a la vez sobre un puñado de núcleos. Entender el ciclo es entender por qué un cambio de contexto es una operación bien definida.
Lo que agregaron los procesadores reales
| Técnica | Qué hace | Qué se paga |
|---|---|---|
| Segmentación | una instrucción por ciclo | riesgos: hay que resolverlos |
| Superescalar | varias instrucciones por ciclo | lógica de despacho compleja |
| Ejecución fuera de orden | no esperar a la que está trabada | muchísimo silicio |
| Predicción de saltos | adivinar el camino y seguir | si se equivoca, descartar todo |
| Ejecución especulativa | trabajar antes de saber si hacía falta | Spectre y Meltdown |
Cierre
Buscar, decodificar, ejecutar, acceder a memoria, escribir. El contador de programa avanza solo y los saltos lo corrigen. El repertorio de instrucciones es el contrato con el software, y el estado de un programa —registros más contador más memoria— es justo lo que el sistema operativo guarda para cambiar de proceso.
Autoevaluación
¿Lo entendiste?
Práctica