Quand devez-vous utiliser _mm_sfence, _mm_lfence et _mm_mfence?
Programmation multi-thread Intégrité et synchronisation. La bibliothèque intrinsique d'Intel fournit plusieurs fonctions, notamment _mm_sfence, _mm_lfence et _mm_mfence, pour contrôler l'ordre de mémoire dans les architectures x86. Modèle de mémoire ordonnée, mais C et C ont des plus faibles. Par conséquent, des précautions supplémentaires sont nécessaires pour assurer une commande de mémoire appropriée et empêcher la corruption des données ou les conditions de course.
_ mm_sfence
_ mm_sfence est principalement utilisée après les stores non temporelles (NT) (_mm_stream_ *) Pour éviter une réorganisation spéculative. Les magasins NT sont faiblement ordonnés, ce qui signifie qu'ils peuvent sembler se produire de l'ordre par rapport à d'autres opérations de mémoire. _mm_sfence crée une barrière qui garantit que les opérations de mémoire ultérieures deviennent globalement visibles après que les magasins NT se soient engagés dans la mémoire.
_ mm_lfence
_ mm_lfence est rarement utilisé comme clôture de charge. Il n'a que la pertinence lors du chargement des régions de mémoire de combinaison d'écriture (WC), telles que la RAM vidéo. _mm_lfence peut empêcher l'exécution des instructions ultérieures jusqu'à sa retraite, ce qui peut être utile pour le microbanchmarking.
_ MM_MFENC Les magasins précédents deviennent mondialement visibles. Il peut être utile si vous implémentez votre version personnalisée de STD :: Atomic ou si vous avez besoin de contrôler explicitement la commande de mémoire pour des opérations qui seraient autrement spéculatives.
résumé
utiliser _mm_sfence après les magasins NT pour empêcher la corruption des données et les conditions de course.
éviter _mm_lfence pour la commande de chargement, sauf si travailler spécifiquement avec les régions de mémoire WC. Opérations de lecture atomique verrouillées-écriture.
Envisagez d'utiliser C 11 std :: atomic ou c11 stdatomic pour la synchronisation de la mémoire, car ils fournissent une approche plus pratique et optimisée.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3