Cómo ejecuta instrucciones la CPU
Ya conocemos la CPU, la memoria y los buses. Ahora podemos unirlos en el proceso central de cualquier ordenador: ejecutar instrucciones una tras otra.
6.1. Conjunto de instrucciones
Section titled “6.1. Conjunto de instrucciones”La CPU no ejecuta órdenes escritas en lenguaje natural. Trabaja con instrucciones codificadas en binario. El conjunto de instrucciones de una CPU define qué operaciones puede realizar.
Las instrucciones suelen agruparse en tres tipos básicos:
- Aritmético-lógicas: realizan cálculos y comparaciones, como sumar, restar, AND, OR o NOT.
- Transferencia de datos: mueven datos entre registros, memoria y dispositivos de entrada/salida.
- Control de flujo: cambian el orden normal de ejecución, por ejemplo mediante saltos, llamadas o bucles.
Cada familia de procesadores tiene su propio conjunto de instrucciones, aunque muchas operaciones básicas se repiten en casi todas.
6.1.1. RISC y CISC
Section titled “6.1.1. RISC y CISC”Las CPU también se pueden clasificar por la forma en que diseñan su conjunto de instrucciones. Las arquitecturas RISC suelen priorizar instrucciones simples y regulares, que se combinan para realizar tareas complejas. Las arquitecturas CISC disponen de instrucciones más variadas y algunas pueden expresar operaciones complejas con menos instrucciones.
ARM se asocia habitualmente con RISC y x86, usada por muchos procesadores Intel y AMD, con CISC. Esta distinción no es absoluta: los procesadores actuales combinan técnicas y, por ejemplo, una CPU x86 puede traducir internamente instrucciones complejas en operaciones más simples.
6.2. Opcode y operandos
Section titled “6.2. Opcode y operandos”Una instrucción suele incluir dos partes principales:
- Código de operación u opcode: indica qué operación debe realizar la CPU.
- Operandos: indican sobre qué datos debe actuar la instrucción o dónde se encuentran esos datos.
Por ejemplo, una instrucción imaginaria podría representarse así:
SUMAR R1, R2En este caso:
SUMARsería el código de operación;R1yR2serían operandos;- el resultado podría guardarse en un registro definido por la propia instrucción o por la arquitectura.
En una CPU real, esta instrucción no se guarda como texto, sino codificada en bits.
6.3. Ciclo de instrucción
Section titled “6.3. Ciclo de instrucción”El ciclo de instrucción es el proceso que sigue la CPU para ejecutar una instrucción. Se repite continuamente mientras el sistema está funcionando.
Sus fases básicas son:
| Fase | Qué ocurre |
|---|---|
| Búsqueda | La CPU usa el contador de programa (PC) para localizar la siguiente instrucción en memoria y cargarla en el registro de instrucción (IR). |
| Decodificación | La unidad de control interpreta el opcode y determina qué componentes deben intervenir. |
| Ejecución | Se realiza la operación indicada: cálculo en la ALU, lectura de memoria, escritura, comparación, salto, etc. |
| Almacenamiento | El resultado se guarda en un registro, en memoria o se envía a un dispositivo de salida. |
Después de ejecutar una instrucción, la CPU continúa con la siguiente. Si la instrucción era un salto, el valor del PC puede cambiar para continuar en otra dirección de memoria.
“I’m sorry, Dave. I’m afraid I can’t do that.” — HAL 9000, 2001: A Space Odyssey.
En la ficción, HAL parece decidir; una CPU real ejecuta instrucciones y condiciones codificadas. El contraste ayuda a no confundir el funcionamiento del procesador con una comprensión humana de las órdenes.
6.4. Ejemplo guiado de ejecución
Section titled “6.4. Ejemplo guiado de ejecución”Imagina una instrucción sencilla:
SUMAR el contenido de la posición 10 y la posición 11El ciclo podría entenderse así:
- Búsqueda: la CPU trae desde memoria la instrucción que debe ejecutar.
- Decodificación: la unidad de control identifica que se trata de una suma y que necesita leer dos datos.
- Ejecución: la CPU solicita los datos de las posiciones 10 y 11 y la ALU realiza la suma.
- Almacenamiento: el resultado se guarda en un registro o en una posición de memoria.
Este ejemplo simplifica mucho lo que ocurre realmente, pero ayuda a entender la idea principal: ejecutar un programa consiste en repetir este ciclo con muchas instrucciones.
Cuando un programa usa una variable, el valor con el que trabaja debe estar disponible en memoria o en un registro. La CPU lo lee, opera con él y conserva el resultado temporalmente antes de escribirlo donde corresponda. Este puente entre una instrucción y los datos de un programa ayuda a relacionar la arquitectura con el código que se desarrollará en DAM.
6.5. Ejercicios de aplicación
Section titled “6.5. Ejercicios de aplicación”Para trabajar este bloque, resuelve los ejercicios 1 a 3 con guía del docente y contraste colectivo; utiliza los ejercicios 4 a 7 como aplicación con apoyo de los apuntes; reserva los ejercicios 8 a 10 para trabajo autónomo o de ampliación.
-
Clasifica instrucciones. Clasifica
SUMAR,COPIAR,LEER,SALTARyCOMPARARcomo aritmético-lógicas, de transferencia de datos o de control de flujo. -
Opcode y operandos. En la instrucción
SUMAR R1, R2, identifica el opcode y los operandos. -
Respuesta breve. Explica por qué una CPU no puede ejecutar directamente una orden escrita en lenguaje natural.
-
Ordena el ciclo. Coloca en orden búsqueda, decodificación, ejecución y almacenamiento. Escribe una frase que describa cada fase.
-
Tipo test. ¿Qué elemento guarda habitualmente la instrucción que se está procesando? a) PC, b) IR, c) ALU, d) caché. Justifica la respuesta.
-
RISC y CISC. Explica con la analogía del robot y los cajones por qué RISC suele combinar varias acciones simples y CISC puede expresar una tarea con menos instrucciones.
-
Completa una traza. Para
SUMAR [10], [11] -> R1, indica qué ocurre en búsqueda, decodificación, ejecución y almacenamiento. Nombra al menos PC, IR, memoria, unidad de control y ALU. -
Ampliación: analiza una afirmación. “Una instrucción CISC siempre se ejecuta más rápido porque hace más cosas”. Indica por qué esa frase es una simplificación y qué otros factores pueden influir.
-
Ampliación: depura el ciclo. En una traza, el resultado de una suma es correcto, pero se guarda en una dirección equivocada. Indica en qué fase o elementos buscarías el problema y por qué.
-
Ampliación: diseña una instrucción. Inventa una instrucción educativa para comparar dos registros. Define su opcode, sus operandos, el resultado que produce y cómo recorrería las cuatro fases del ciclo de instrucción.