En mi aplicación, en un momento dado necesito realizar cálculos en un gran bloque contiguo de datos de memoria (100 s de MB). Lo que estaba pensando era seguir captando la parte del bloque que mi programa tocará en el futuro, de modo que cuando realice cálculos en esa parte, los datos ya estén en la memoria caché.Recuperación de datos en la memoria caché para x86-64
¿Alguien me puede dar un ejemplo simple de cómo lograr esto con gcc? Leí _mm_prefetch
en algún lugar, pero no sé cómo usarlo correctamente. También tenga en cuenta que tengo un sistema multinúcleo, pero cada núcleo trabajará en una región diferente de memoria en paralelo.
Si el acceso a la memoria es secuencial, el precaptador de hardware ya lo hará por usted. Por lo tanto, probablemente no obtenga mucha mejoría con la captación previa manual. – Mysticial
Consulte esta pregunta para ver un ejemplo de dónde la recuperación previa realmente ayuda: http://stackoverflow.com/questions/7327994/prefetching-examples – Mysticial
Quiere decir que el precaptador de hardware de alguna manera reconoce que estoy utilizando áreas contiguas en la memoria y traigo esas partes en caché ? – pythonic