La precarga es una técnica utilizada en informática para mejorar el rendimiento mediante la recuperación de datos o instrucciones antes de que sean necesarios. Al predecir lo que un programa solicitará en el futuro, el sistema puede cargar información con anticipación para reducir los tiempos de espera. [ 1 ]
La precarga se utiliza en diversas áreas de la informática, incluidas las arquitecturas de CPU y los sistemas operativos . Puede implementarse tanto en hardware como en software , y se basa en la detección de patrones de acceso que sugieren qué datos probablemente se necesitarán pronto.
Descripción general
La precarga funciona prediciendo a qué direcciones de memoria o recursos se accederá y cargándolos en un almacenamiento de acceso más rápido, como las cachés . [ 1 ]
Se puede utilizar la precarga:
- A nivel de hardware , como los controladores de memoria de la CPU.
- A nivel de software , estrategias en compiladores , sistemas operativos, lógica en navegadores web o sistemas de archivos.
Hardware
Los procesadores (CPU) suelen incluir la precarga, que intenta reducir los fallos de caché cargando los datos en la caché antes de que el programa en ejecución los solicite. Esto se aplica a programas que acceden a la memoria siguiendo patrones predecibles, como los bucles que iteran sobre matrices . [ 1 ]
La precarga por hardware se puede realizar sin intervención de software y se encuentra en la mayoría de las CPU modernas. Por ejemplo, las CPU de Intel cuentan con diversas opciones de precarga que funcionan en múltiples niveles de caché. [ 1 ]
- La precarga de paso detecta patrones de acceso a memoria de paso constante (distancia fija entre accesos consecutivos a la memoria) [ 2 ].
- La precarga de flujo identifica largas secuencias de accesos contiguos a la memoria (acceso secuencial a un bloque de memoria) [ 2 ].
- La precarga por correlación aprende patrones entre fallos de caché y activa precargas basadas en esos patrones [ 2 ].
Software
Las instrucciones de precarga pueden ser escritas en el código por el programador o por el compilador. Estas instrucciones especifican las direcciones de memoria que se van a precargar y la distancia de precarga deseada. [ 2 ]
En el software, existen instrucciones que se pueden escribir con:
prefetchen arquitectura x86__builtin_prefetchen el compilador GCC_mm_prefetchEn la Guía de Intel Intrinsics
Sistemas operativos
Los sistemas operativos utilizan la precarga para reducir la latencia de acceso a archivos y memoria.
- Paginación anticipada , intenta precargar páginas de memoria basándose en páginas en RAM y no en RAM.
Navegadores web
Los navegadores web aplican técnicas de precarga para mejorar el rendimiento percibido. Algunos ejemplos comunes son:
- Precarga DNS : resuelve los nombres de dominio de los enlaces que probablemente se clicarán [ 3 ]
- Precarga de enlaces : carga las páginas web o los recursos enlazados antes de que el usuario haga clic en ellos [ 4 ].
- Precarga de recursos : obtiene recursos críticos (como fuentes o scripts ) en paralelo con la carga de la página actual [ 5 ].
Limitaciones
La precarga puede mejorar significativamente el rendimiento, pero no siempre resulta beneficiosa si se implementa incorrectamente. Si las predicciones son inexactas, la precarga puede desperdiciar ancho de banda , tiempo de procesamiento o causar contaminación de la caché . En sistemas con recursos limitados o cargas de trabajo muy impredecibles, la precarga puede degradar el rendimiento en lugar de mejorarlo. [ 1 ]
La implementación de la precarga tanto por software como por hardware también puede provocar una degradación del rendimiento debido a las interacciones que pueden producirse entre sí según cómo se haya implementado. [ 6 ]
Véase también
Referencias
- 1 2 3 4 5 "Manual de referencia de optimización de arquitecturas Intel® 64 e IA-32, volumen 1" . Intel . 5 de septiembre de 2023. Consultado el 24 de abril de 2025 .
- 1 2 3 4 Hur, Ibrahim; Lin, Calvin (febrero de 2009). "Mecanismos de retroalimentación para mejorar la precarga probabilística de memoria" . 2009 IEEE 15th International Symposium on High Performance Computer Architecture . IEEE. págs. 443–454 . doi : 10.1109/hpca.2009.4798282 . ISBN 978-1-4244-2932-5.
- ↑ "Uso de dns-prefetch - Rendimiento web | MDN" . developer.mozilla.org . 10 de abril de 2025. Consultado el 24 de abril de 2025 .
- ↑ "rel=prefetch - HTML: HyperText Markup Language | MDN" . developer.mozilla.org . 2025-04-10 . Consultado el 2025-04-24 .
- ↑ "rel=preload - HTML: HyperText Markup Language | MDN" . developer.mozilla.org . 2025-04-10 . Consultado el 2025-04-24 .
- ↑ Lee, Jaekyu; Kim, Hyesoon; Vuduc, Richard (1 de marzo de 2012). "Cuándo funciona la precarga, cuándo no y por qué" . ACM Trans. Archit. Code Optim . 9 (1): 2:1–2:29. doi : 10.1145/2133382.2133384 . ISSN 1544-3566 .
- Ciencias de la Computación