¿Cuándo debería usar _mm_sfence, _mm_lfence, y _mm_mfence?
programación multi-retención introduce complejidades relacionadas con la concurrencia, lo que requiere mecanismos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos para mantener datos de datos. integridad y sincronización. La biblioteca Intrinsics de Intel proporciona varias funciones, incluidas _mm_sfence, _mm_lfence y _mm_mfence, para controlar el orden de la memoria en las arquitecturas x86.
ordenación de memoria en x86
x86 cepus tiene una fortaleza Modelo de memoria ordenado, pero C y C tienen más débiles. Por lo tanto, se requieren precauciones adicionales para garantizar un orden de memoria adecuado y evitar condiciones de corrupción o carrera de datos.
_ mm_sfence
_ mm_sfence se usa principalmente después de las tiendas no temporales (nt) (_mm_stream_*) para evitar el reordenamiento especulativo. Las tiendas NT están débilmente ordenadas, lo que significa que pueden aparecer fuera de orden en relación con otras operaciones de memoria. _mm_sfence crea una barrera que garantiza que las operaciones de memoria posteriores se vuelvan globalmente visibles después de que las tiendas NT se comprometan a la memoria.
_ mm_lfence
_ mm_lfence se usa raramente como una valla de carga. Solo tiene relevancia al cargar de las regiones de memoria de combinación de escritura (WC), como Video RAM. _mm_lfence can prevent execution of subsequent instructions until it retires, which can be useful for microbenchmarking._mm_mfence
_mm_mfence provides sequential consistency, ensuring subsequent loads cannot read values until after Las tiendas anteriores se vuelven globalmente visibles. Puede ser útil si implementa su versión personalizada de STD :: Atomic o necesita controlar explícitamente el pedido de memoria para operaciones que de otro modo serían especulativas.
summary
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3