robot de la enciclopedia para niños

Ejecución especulativa para niños

Enciclopedia para niños

En las ciencias de la computación, la ejecución especulativa es una técnica de optimización que usan los ordenadores. Imagina que tu computadora intenta adivinar qué tarea necesitará hacer a continuación. Si acierta, ya tiene parte del trabajo hecho y es más rápida. Si se equivoca, simplemente ignora lo que hizo y sigue con la tarea correcta.

El objetivo de esta técnica es que el ordenador pueda hacer varias cosas al mismo tiempo si tiene suficientes recursos. Se usa en muchas partes de la informática, como en los CPU (el "cerebro" del ordenador) para predecir qué camino seguirá un programa, o para leer información de la memoria o de los archivos antes de que se pida.

¿Por qué los ordenadores usan la ejecución especulativa?

Los microprocesadores modernos, que son los chips principales de tu ordenador, usan la ejecución especulativa para trabajar más rápido. Lo hacen prediciendo qué parte de un programa se ejecutará a continuación, basándose en lo que ha pasado antes. Así, el ordenador puede empezar a procesar instrucciones antes de saber si realmente serán necesarias, lo que ayuda a que todo funcione de forma más fluida y eficiente.

Tipos de ejecución especulativa

Existen diferentes maneras en que los ordenadores pueden "adivinar" y ejecutar tareas de forma especulativa.

¿Qué es la ejecución ansiosa?

La ejecución ansiosa es una forma de ejecución especulativa donde el ordenador ejecuta todas las posibles opciones de un camino al mismo tiempo. Por ejemplo, si un programa tiene que elegir entre dos caminos (A o B), el ordenador podría empezar a trabajar en ambos. Si luego se confirma que el camino correcto era A, los resultados del camino B simplemente se ignoran. Si el ordenador tuviera recursos ilimitados, esta técnica sería muy rápida, pero como los recursos son limitados, debe usarse con cuidado.

¿Cómo funciona la ejecución predictiva?

La ejecución predictiva es otra forma de ejecución especulativa. Aquí, el ordenador predice un resultado y sigue ese camino. Si la predicción es correcta, el trabajo hecho se usa. Pero si la predicción es incorrecta, el ordenador tiene que deshacer lo que hizo y empezar de nuevo por el camino correcto. Un ejemplo común de esto son los predictor de saltos, que intentan adivinar qué parte del código se ejecutará después de una decisión.

¿Qué es la ejecución vaga?

La ejecución vaga es un concepto diferente que no usa la especulación. Sin embargo, algunos investigadores han explorado cómo añadir la ejecución especulativa a ciertos lenguajes de programación, como Haskell. Esto se ha llamado "ejecución optimista", donde el ordenador intenta hacer algo y, si se equivoca, puede "dar marcha atrás".

¿La ejecución especulativa tiene riesgos de seguridad?

En 2017 y 2018, se descubrieron dos importantes problemas de seguridad relacionados con la ejecución especulativa, llamados Meltdown y Spectre. Estos problemas podrían permitir que programas maliciosos accedieran a información privada en la memoria de un ordenador, como contraseñas o claves de seguridad.

Para que la ejecución especulativa sea muy eficiente, a veces el hardware y el sistema operativo permiten que el ordenador acceda a datos privados antes de que sean realmente necesarios. Las vulnerabilidades como Meltdown y Spectre aprovechan esto, permitiendo que un programa malicioso intente "adivinar" o deducir esa información que normalmente no debería poder ver.

¿Qué es Meltdown?

Meltdown es una vulnerabilidad que permite a un programa de usuario leer información que está protegida en la memoria del sistema operativo. Los procesadores modernos de Intel, por ejemplo, pueden ejecutar código y guardar resultados de forma especulativa en una parte rápida de la memoria llamada caché. Un programa malicioso podría usar esto para saber qué información se guardó allí, incluso si no tenía permiso para verla directamente. Algunos procesadores, como los de AMD, no se ven afectados por Meltdown de la misma manera, porque comprueban los permisos antes de hacer la lectura especulativa.

¿Qué es Spectre?

Spectre es una vulnerabilidad más compleja que Meltdown. Permite que un programa acceda a información de otro programa que se está ejecutando en el mismo chip. Spectre se basa en engañar al sistema de predicción de saltos del procesador para que haga una lectura especulativa de datos que están fuera de los límites permitidos. Luego, un atacante puede medir el tiempo que tarda el ordenador en acceder a ciertos datos en la caché para deducir la información.

Se cree que los navegadores web que usan una técnica llamada "compilación JIT" para JavaScript son vulnerables a una forma de Spectre. Esto incluye a navegadores populares como Chrome, Firefox, Safari y Edge. Sin embargo, Spectre puede usarse de otras maneras, incluso sin lenguajes de programación web.

Las empresas de tecnología han estado trabajando para encontrar soluciones a estas vulnerabilidades, aunque algunas de ellas pueden hacer que el ordenador funcione un poco más lento.

Galería de imágenes

Véase también

Kids robot.svg En inglés: Speculative execution Facts for Kids

kids search engine
Ejecución especulativa para Niños. Enciclopedia Kiddle.