Capítulo 05
La CPU: donde todo encaja
Tenemos puertas que deciden, una ALU que calcula y registros que recuerdan. Lo único que falta es un director de orquesta que les diga qué hacer y cuándo. Ese director es la unidad de control, y el conjunto completo es la CPU: la idea de máquina programable hecha silicio.
La gran idea: el programa también es datos
Hasta los años 40, "programar" una máquina era recablearla. La idea que funda la informática moderna —la arquitectura de von Neumann— es que las instrucciones se pueden codificar como números y guardarse en la misma memoria que los datos. Cambiar de programa ya no es tocar un cable: es escribir otros números en la memoria.
Cada CPU define su ISA (arquitectura del conjunto de instrucciones): el catálogo de operaciones que entiende y cómo se codifican en bits. Es el contrato entre el hardware y el software: por eso un mismo programa compilado para x86 corre en CPUs de Intel y de AMD.
Las piezas del procesador
- PC (contador de programa): un registro que guarda la dirección de la siguiente instrucción.
- IR (registro de instrucción): guarda la instrucción que se está ejecutando ahora mismo.
- Registros de datos / acumulador: la memoria de trabajo inmediata (capítulo 4).
- ALU: la calculadora (capítulo 3).
- Unidad de control: un circuito de puertas lógicas (capítulo 2) que decodifica la instrucción y activa las señales adecuadas: "ALU, suma", "registro, captura", "memoria, lee".
- El reloj marca el compás de todo (capítulo 4).
El latido: fetch → decode → execute
Todo lo que ha hecho cualquier ordenador de la historia se reduce a este ciclo, repetido miles de millones de veces por segundo:
- Fetch: trae de memoria la instrucción que señala el PC.
- Decode: la unidad de control interpreta sus bits: ¿qué operación es? ¿con qué operando?
- Execute: se activan las señales, la ALU o la memoria hacen su trabajo, y el PC avanza a la siguiente instrucción.
🖥️ Pruébalo: una CPU de juguete
Este programa calcula 7 + 35 y guarda el resultado en la celda 7. Pulsa Paso para avanzar fase a fase y ver el ciclo fetch–decode–execute en acción.
Registros
Memoria (programa y datos juntos)
Subiendo por la escalera de abstracciones
Escribir números de máquina a mano es agotador, así que construimos escalones encima: el ensamblador pone nombres a las instrucciones (ADD 6 en vez de 26); los compiladores traducen lenguajes de alto nivel a esas instrucciones; los sistemas operativos reparten la CPU entre programas. Cada capa se apoya en la anterior, y ninguna necesita magia: al fondo de todo siguen estando los transistores del capítulo 1, conmutando.
Las CPUs reales añaden trucos espectaculares —pipeline (varias instrucciones en vuelo a la vez), predicción de saltos, múltiples núcleos, cachés de tres niveles— pero todos son optimizaciones del mismo ciclo que acabas de ejecutar a mano.