es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Algunas preguntas sobre _mm_clflush y _mm_clflushout.

  1. ¿Cuáles son las principales diferencias entre mmclflush y mmclflushout ?
  2. ¿Es seguro para hilos realizar el vaciado de páginas inválidas en la caché del CPU, dado que cada hilo vacía diferentes regiones de memoria (que pueden ser originadas desde diferentes núcleos de CPU)?
  3. Solo para estar seguro, ¿estos comandos son sincrónicos? Es decir, ¿retornan solo después de que la página de caché se haya vaciado en la memoria (si es una página invalidada)?
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    _mm_clflush y _mm_clflushout

    1. La diferencia principal entre _mm_clflush y _mm_clflushout es que _mm_clflush limpia una sola línea de caché (es decir, 64 bytes en procesadores x86-64), mientras que _mm_clflushout limpia todas las líneas de caché asociadas a una página (es decir, 4096 bytes en procesadores x86-64) que incluye la dirección de memoria objetivo. Por lo tanto, _mm_clflushout es más agresivo y puede causar un tráfico de memoria adicional en comparación con _mm_clflush.

    2. Generalmente, limpiar páginas invalidadas en la caché de la CPU es seguro para hilos, siempre y cuando cada hilo limpie diferentes regiones de memoria que no se superpongan. Sin embargo, si varios hilos limpian la misma región de memoria al mismo tiempo, puede causar problemas de coherencia de caché y afectar negativamente el rendimiento.

    3. Sí, tanto _mm_clflush como _mm_clflushout son comandos síncronos, y solo regresan después de que la página de caché haya sido limpiada en la memoria. Sin embargo, dependiendo de la configuración y carga de trabajo del sistema, el tiempo real de limpieza puede variar y afectar el rendimiento general del programa.

Comments are closed.