ProcesadoresSoftwareTutoriales

Prefetch: qué es y cómo funciona en Windows 10 y 11

Hay que diferenciar entre diferentes tipos de Prefetch. Por un lado está el que realiza la CPU y por otro una tecnología introducida en el kernel Windows NT para Windows XP y que ha seguido estando presente en las sucesivas versiones del sistema operativo de Microsoft. En este artículo aprenderás sobre ambos.

Hardware vs Software Prefetching

La técnica conocida como cache prefetching puede ser implementada tanto por software como por hardware:

  • Por software: este tipo de prefetching se implementa en el sistema operativo o en el compilador, que analizará el código e insertará instrucciones o datos de los programas durante la compilación (p.e.: el compilador GNU GCC usa la función  __builtin_prefetch) para acelerar la ejecución de los binarios.
  • Por hardware: el prefetching basado en hardware es implementado mediante hardware dedicado (p.e.: los procesadores x86 tienen una instrucción específica llamada PREFETCH). Generalmente mediante mecanismos del procesador para traer de forma anticipada algunas cadenas de instrucciones o de datos que se pueden requerir posteriormente. De esta forma ya estarán disponibles de forma más local, cercana y con menor latencia.

Prefetch en Windows

Desde Windows XP se implementó una tecnología denominada Prefetch, y ha estado presente también en Windows Vista, Windows 7, Windows 10 y Windows 11. Por eso, podemos notar que cuando accedemos a C:\Windows, hay varias carpetas que nunca antes habíamos observado, entre ellas Prefetch.

El servicio Prefetch es un proceso de precarga que mejora el rendimiento del ordenador asegurando que Windows se inicie más rápido. Cada vez que Windows se inicia, hace un seguimiento de las aplicaciones y servicios. Como resultado, cuando el ordenador se inicia, crea archivos reducidos para acelerar el proceso. Cada programa tiene su propio archivo prefetch.

El servicio Superfetch, por su parte, opera en segundo plano para mejorar el rendimiento de la memoria RAM. Tiene un impacto directo en el rendimiento de la memoria RAM como resultado de su orientación de servicio.

Prefetch vs Superfetch

Los datos de la carpeta Prefetch fueron introducidos por Microsoft, con la carpeta Prefetch, como parte del sistema operativo Windows XP. La función principal de la carpeta Prefetch es acelerar el proceso de trabajo mediante el almacenamiento de datos de caché para aplicaciones masivas directamente en la carpeta Prefetch. En Windows 10 se utiliza para cargar los datos de las aplicaciones directamente desde la carpeta Prefetch, lo que acelera los procesos.

Prefetch es un algoritmo de detección de errores de caché que se anticipa en los sistemas operativos Windows. Almacena en la memoria caché datos que de otra manera no existen, y Prefetch se encarga de recuperarlos.

Superfetch es otra carpeta que se encuentra en el directorio raíz de Windows y que carga todos los archivos y datos asociados a ellos en la memoria. Es una función que decide qué aplicación o programa se ejecuta para cargar todos los archivos y datos asociados en la memoria.

Cómo activar o desactivar esta función

Los pasos a seguir para poder gestionar Prefetch en tu Windows pasan por:

  1. Entra en el Registro de Windows.
  2. Dirígete a la siguiente ruta HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PrefetchParameters.
  3. Allí verás un valor denominado EnablePrefetch que podrás modificar con los siguientes valores:
    • 0 = Deshabilitado
    • 1 = Precarga de ejecución de inicio de aplicación habilitada
    • 2 = Precarga del arranque habilitada
    • 3 = Applaunch y Boot habilitados (óptimo y predeterminado) el cual es el valor por defecto.

En el caso de que quieras manejar Superfetch a partir de Windows 10, los pasos son estos otros:

  1. Pulsa la tecla Inicio + R.
  2. Ejecuta «Services.msc» sin comillas y pulsa INTRO.
  3. En la ventana emergente busca la entrada Superfetch.
  4. Dale doble clic y se abrirá otra ventana emergente.
  5. En la pestaña General, ve al apartado Tipo de Inicio.
  6. En el menú desplegable puedes elegir Habilitado y Deshabilitado.
  7. Pulsa Aplicar tras el cambio y Aceptar y listo.

Prefetch de la CPU

microarquitectura CPU: dieshot de un microprocesador

Las modernas microarquitecturas también disponen de una función denominada Prefetch cuya función es también mejorar el rendimiento, pero se hace desde el lado del hardware, concretamente desde la CPU.

En algunos BIOS/UEFI, en el menú Advanced se puede activar o desactivar esta función si lo quieres. No obstante, no en todos los firmware disponen de dicha opción.

No hay que confundir con el IDE Prefetch Mode que también está disponible en algunos BIOS. Esta otra función está destinada a optimizar el manejo de la información de antiguas unidades IDE, siempre que el dispositivo IDE lo soporte.

Cache Prefetching

La tecnología prefetch se emplea para mejorar el rendimiento del ordenador mediante la obtención de instrucciones o datos de una memoria local más lenta a una memoria caché más rápida antes de que se necesiten realmente (los datos prefetch se mantienen en las memorias caché hasta que se necesitan, de ahí el nombre de «prefetching»).

Normalmente, los datos prefetchados se originan en la memoria principal. Debido a que las memorias caché están estructuradas de tal manera que a menudo son mucho más rápidas que la memoria principal, la precarga de datos y el posterior acceso a los mismos desde las cachés es a menudo mucho más rápido que el acceso directo desde la memoria principal. Las instrucciones de control de la caché no bloqueantes pueden utilizarse para la obtención previa de datos.

El Prefetch puede ser, por tanto, de dos tipos:

  • Prefetching de datos: es el dedicado a traer de forma anticipada datos que se pueden necesitar después para que estén en una memoria caché más rápida que la principal o la secundaria y así ganar en rendimiento. Estos datos son necesarios usados como operandos para las instrucciones que la CPU ejecuta.
  • Prefetching de instrucciones: en el caso de este otro tipo se obtienen instrucciones en vez de datos, instrucciones que van a ser necesarias para ejecutar más tarde. De esta manera, cuando se necesitan están disponibles a una menor latencia.

Estas tecnologías fueron introducidas hace varias décadas. El Intel 8086 ya usaba una caché de 6 bytes para prefetching y los microprocesadores Motorola 68000 de 4 bytes. Actualmente, todos los microprocesadores modernos de alto rendimiento incluyen técnicas de prefetching mejoradas.

Te recomendamos la lectura de nuestra guía sobre Windows 10

Ahora ya sabes de qué se trata eso de Prefetch, tanto la técnica de Windows como la de la CPU. No olvides comentar…

Isaac Romero Torres

Más de una década trabajando en el ámbito de la investigación sobre arquitecturas y microarquitecturas de CPUs, de la electrónica, la lógica digital, de los sistemas operativos Unix (con los que trabajé como asesor para algunas empresas), programación de MCUs, PLCs, hacking, etc.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en info@profesionalreview.com
Botón volver arriba