robot de la enciclopedia para niños

Ejecución fuera de orden para niños

Enciclopedia para niños

La ejecución fuera de orden (también conocida como OoOE, por sus siglas en inglés) es una técnica que usan los microprocesadores modernos para trabajar de forma más eficiente. Imagina que tu procesador es un chef que tiene varias recetas que preparar. En lugar de hacer una receta completa de principio a fin antes de empezar la siguiente, un chef que usa la ejecución fuera de orden puede empezar a cortar verduras para una receta, mientras el arroz de otra receta se está cocinando. Así, aprovecha el tiempo y no se queda esperando sin hacer nada.

Esta técnica ayuda a que los procesadores no desperdicien tiempo esperando datos o que una tarea termine, lo que hace que tu computadora sea más rápida.

Historia de la Ejecución Fuera de Orden

La idea de que los procesadores trabajen "fuera de orden" es una forma avanzada de cómo las computadoras manejan la información. Se empezó a investigar mucho en los años 70 y principios de los 80.

Uno de los primeros computadores en usar una idea similar fue el CDC 6600 en 1964. Este computador usaba un sistema llamado "marcadores" para evitar problemas cuando varias tareas querían usar los mismos recursos. Luego, en 1966, el IBM 360/91 introdujo el Algoritmo de Tomasulo, otra forma de manejar las tareas de manera más flexible.

El primer microprocesador que usó la ejecución fuera de orden fue el POWER1 de IBM en 1990. Pero fue el Intel Pentium Pro en 1995 el que realmente popularizó esta tecnología. Después de eso, muchos otros fabricantes de procesadores, como IBM/Motorola (con el PowerPC 601), Fujitsu, HP, MIPS y AMD, comenzaron a usar esta técnica en sus propios diseños.

Al principio, esta tecnología era muy compleja y cara de implementar. Por eso, no todos los procesadores la usaban, especialmente los de bajo costo. Sin embargo, con el tiempo, se volvió más común en los procesadores de alto rendimiento.

Cómo Funciona la Ejecución Fuera de Orden

Para entender la ejecución fuera de orden, primero veamos cómo funcionaban los procesadores más antiguos.

Procesadores en Orden

Los procesadores más antiguos seguían los pasos de una instrucción uno por uno, en un orden muy estricto:

  1. El procesador toma una instrucción (como "sumar dos números").
  2. Si tiene todos los números listos para la suma, la envía a la parte del procesador que hace sumas. Si no tiene un número (por ejemplo, porque lo está buscando en la memoria), el procesador se detiene y espera.
  3. La instrucción se ejecuta.
  4. El resultado se guarda.

Si el procesador tenía que esperar por un dato, se quedaba "parado" sin hacer nada, lo que hacía que fuera más lento.

Procesadores Fuera de Orden

Los procesadores con ejecución fuera de orden son más inteligentes. Siguen estos pasos:

  1. El procesador toma una instrucción.
  2. La instrucción se envía a una "sala de espera" (llamada cola o estación de reserva).
  3. La instrucción espera en esa sala hasta que tenga todos los datos que necesita. Lo interesante es que una instrucción más nueva puede salir de la sala de espera y ejecutarse antes que una más antigua, ¡si ya tiene sus datos listos!
  4. Cuando la instrucción está lista, se envía a la parte del procesador que la ejecuta.
  5. El resultado de la instrucción se guarda temporalmente en otra "sala de resultados".
  6. El resultado final solo se guarda en la memoria principal cuando todas las instrucciones que llegaron antes que ella ya han guardado sus resultados. Esto asegura que, aunque las instrucciones se ejecuten fuera de orden, el resultado final sea el correcto, como si se hubieran ejecutado en orden.

La clave de la ejecución fuera de orden es que el procesador no se detiene a esperar. Si una instrucción no está lista, busca otra que sí lo esté y la ejecuta. Es como si el chef, mientras espera que el agua hierva para la pasta, empieza a preparar la salsa.

Los procesadores OoOE llenan esos "tiempos muertos" con otras tareas que sí pueden hacer. Esto es muy útil porque los procesadores son mucho más rápidos que la memoria principal (donde se guardan los datos). Mientras un procesador antiguo esperaría, uno OoOE ya habría avanzado mucho en otras tareas.

Cómo se Evitan Confusiones

Para que el procesador no se confunda al ejecutar las instrucciones fuera de orden, usa una técnica llamada renombre de registros. Imagina que el procesador tiene más "cajones" de los que realmente necesita. Así, si dos instrucciones necesitan usar el mismo "cajón" (registro), el procesador les asigna un "cajón" físico diferente para que no se estorben entre sí.

Reinicio de Programas y Predicciones

La "sala de resultados" temporal es muy importante. Permite que, si algo sale mal (por ejemplo, el procesador hizo una "predicción" equivocada sobre qué instrucción seguir), se puedan descartar los resultados incorrectos y el programa pueda reiniciarse correctamente.

La capacidad de empezar a ejecutar instrucciones antes de saber si una "predicción" es correcta se llama ejecución especulativa.

Ejemplos en Procesadores Reales

  • Los procesadores PowerPC de IBM usan varias "salas de espera" distribuidas para diferentes tipos de tareas. IBM las llama "estaciones de reserva".
  • Los primeros procesadores Intel con ejecución fuera de orden usaban una "sala de resultados" central llamada "buffer de reordenación". Los procesadores más nuevos usan un sistema de "mapas de registros" para organizar los resultados.

Véase también

Kids robot.svg En inglés: Out-of-order execution Facts for Kids

  • Algoritmo de marcador
  • Algoritmo de Tomasulo
kids search engine
Ejecución fuera de orden para Niños. Enciclopedia Kiddle.