Funcionamiento básico de un microprocesador
El microprocesador trabaja siguiendo un ciclo repetitivo en el que lee instrucciones, las interpreta y las ejecuta. A lo largo de la historia, este ciclo se ha optimizado con técnicas como pipeline y paralelismo para aumentar el rendimiento.
1. Ciclo de instrucción #
Toda instrucción que ejecuta un microprocesador pasa por varias fases:
-
Búsqueda (Fetch):
- La Unidad de Control obtiene la instrucción de la memoria principal.
- El Program Counter (PC) indica la dirección de la siguiente instrucción.
- Una vez leída, el PC se incrementa.
-
Decodificación (Decode):
- La instrucción se guarda en el Instruction Register (IR).
- La Unidad de Control interpreta qué operación se debe realizar.
- Se generan las señales necesarias para activar la ALU, registros, etc.
-
Ejecución (Execute):
- La instrucción se ejecuta: puede ser una suma, un salto de programa, mover datos, etc.
- Los resultados se guardan en un registro o en memoria.
👉 Este ciclo ocurre millones o miles de millones de veces por segundo, dependiendo de la frecuencia del reloj del procesador (ejemplo: 3 GHz = 3.000 millones de ciclos por segundo).
2. Pipeline (tuberías de ejecución) #
En un procesador sin optimización, las fases fetch-decode-execute se hacen de una en una. Esto es ineficiente.
El pipeline divide la ejecución en etapas, de forma similar a una línea de producción en una fábrica:
- Mientras una instrucción está siendo ejecutada, otra puede estar decodificándose y otra buscándose.
👉 Esto permite procesar varias instrucciones a la vez, aumentando enormemente el rendimiento.
Ejemplo de 5 etapas típicas:
- IF (Instruction Fetch)
- ID (Instruction Decode)
- EX (Execute)
- MEM (Memory Access)
- WB (Write Back)
Fuente: upload.wikimedia.orgLicencia: Licencia no indicada
Ampliar3. Paralelismo y superescalaridad #
Además del pipeline, los procesadores modernos incorporan ejecución paralela:
- Procesadores superescalares: pueden despachar y ejecutar varias instrucciones por ciclo de reloj.
- Unidades de ejecución múltiple: varias ALUs, unidades de coma flotante (FPU), SIMD (operaciones vectoriales), etc.
- Hyper-Threading / SMT (Simultaneous Multithreading): simulan que un núcleo físico es capaz de ejecutar dos hilos de ejecución al mismo tiempo.
4. Predicción de saltos #
Un gran problema de rendimiento aparece con las instrucciones de salto (if, bucles, etc.).
- Si el procesador espera a saber si el salto se cumple, pierde tiempo.
- Por eso, los procesadores modernos predicen cuál será el camino del salto.
- Si aciertan, se gana velocidad; si fallan, deben descartar instrucciones (penalización).
5. Ejemplo simplificado #
Supongamos un procesador ejecutando este código:
1A = B + C; 2D = A * 2;
- Ciclo 1: busca
A = B + C. - Ciclo 2: decodifica la instrucción.
- Ciclo 3: la ALU suma B + C y guarda en A.
- Ciclo 4: busca la siguiente instrucción (
D = A * 2). - Ciclo 5: decodifica.
- Ciclo 6: ejecuta multiplicación y guarda en D.
En un pipeline, mientras se ejecuta la suma, el procesador ya puede estar decodificando y buscando la siguiente instrucción → mucho más eficiente.
Resumen del tema
Conceptos clave #
- Ciclo de Instrucción: etapas secuenciales de búsqueda (Fetch), decodificación (Decode), ejecución (Execute) y volcado de resultados (Write Back).
- Segmentación (Pipelining): división de la ejecución en etapas solapadas para procesar múltiples instrucciones simultáneamente por ciclo.
- Superescalaridad y Multihilo (SMT / Hyper-Threading): emisión de múltiples instrucciones por ciclo de reloj y duplicación lógica de registros para ejecutar 2 hilos por núcleo físico.
- Predicción de Saltos (Branch Prediction) y Ejecución Especulativa: anticipación probabilística de caminos condicionales para evitar vaciar el pipeline.
Qué debes recordar #
El pipeline, la superescalaridad y la predicción de saltos permiten a la CPU ejecutar varias instrucciones por cada ciclo de reloj.