«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Когда вы должны использовать _mm_sfence, _mm_lfence и _mm_mfence?

Когда вы должны использовать _mm_sfence, _mm_lfence и _mm_mfence?

Опубликовано в 2025-02-06
Просматривать:413

When Should You Use _mm_sfence, _mm_lfence, and _mm_mfence?

, когда вы должны использовать _MM_SFENCE, _MM_LFENCE, и _MM_MFENCE? целостность и синхронизация. Библиотека Intel Intrinsics предоставляет несколько функций, включая _mm_sfence, _mm_lfence и _mm_mfence, для управления упорядочением памяти в x86 Architectures.

упорядочение памяти в x86

x86. Заказанная модель памяти, но C и C имеют более слабые. Следовательно, необходимы дополнительные меры предосторожности для обеспечения правильного упорядочения памяти и предотвращения повреждения данных или условий гонки.

]

_ mm_sfence

]

_ mm_sfence используется в первую очередь после не-временного (nt) (_MM_STREAM_*), чтобы предотвратить спекулятивное переупорядочение. Магазины NT слабо упорядочены, что означает, что они могут происходить вне порядка по сравнению с другими операциями памяти. _MM_SFENCE создает барьер, который обеспечивает последующие операции памяти, становятся глобально видимыми после того, как хранилища NT привержены памяти.

_ MM_LFENCE

_ MM_LFENCE используется в качестве нагруженного заграда. Это имеет актуальность только при загрузке из сцепления с записи (WC) областей памяти, таких как видео оперативная память. _MM_LFENCE может предотвратить выполнение последующих инструкций, пока не уйдет в отставку, что может быть полезно для микрофенч -каркинга. Предыдущие магазины становятся всемирно заметными. Это может быть полезно, если вы реализуете свою пользовательскую версию std :: atomic или необходимо явно управлять упорядочением памяти для операций, которые в противном случае были бы умозрительными.

summary

использовать _mm_sfence после NT -хранилища, чтобы предотвратить развращение данных и условия гонки.

избегает _mm_lfence для упорядочения нагрузки, если не работать с регионами памяти WC. Заблокированные атомные операции с чтением-модификацией-вопилами.

рассмотрите возможность использования c 11 std :: atomic или c11 stdatomic для синхронизации памяти, поскольку они обеспечивают более удобный и оптимизированный подход. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3