memory-barriers

Jak zrozumieć bariery pamięci odczytu i lotne

Niektóre języki zapewniają modyfikator volatile, który jest opisany jako wykonywanie "bariery odczytu pamięci" przed odczytan ... co najmniej tak aktualne jak odczyty przed barierą? Albo inną interpretację? Jakie są praktyczne konsekwencje tej odpowiedzi?

Czy jest sens używać instrukcji LFENCE na procesorach x86/x86 64?

Często w Internecie stwierdzam, że LFENCE nie ma sensu w procesorach x86, czyli nic nie robi, więc zamiast {[3] } możemy abso ... ENCE ma sens, aby zapobiec zmianie kolejności STORE-1 I LOAD-2. W tym celu po komendzie STORE-1 SFENCE spłukuje Store-Buffer.

Generatory barier pamięci

Czytanie Joseph Albahari threading tutorial , następujące są wymienione jako generatory barier pamięci: C#'S lock oświadcz ... zyć kompletną listę) EDIT propozycje dodatków: Volatile (czytanie implikuje nabycie ogrodzenie, napisanie ogrodzenia)

Zamawianie modeli pamięci i widoczność?

Próbowałem szukać szczegółów na ten temat, czytałem nawet standard o muteksach i atomice... ale nadal nie mogłem zrozumieć gw ... nonatomic; } Drugi wątek czyta { while (p==nullptr) { } assert(p[1234]==42);//1234-random idx in array }

Czy wywołanie funkcji jest skuteczną barierą pamięci dla nowoczesnych platform?

W bazie kodowej, którą przejrzałem, znalazłem następujący idiom. void notify(struct actor_t act) { write(act.pipe, "M", ... ma długą brodę i naprawdę inteligentny wygląd! Dodatkowe punkty, jeśli pokażesz mi kawałek kodu udowadniający, że się myli!

Dlaczego potrzebujemy nici.MemoryBarrier()?

W "C# 4 w pigułce" autor pokazuje, że ta klasa może czasami pisać 0 Bez MemoryBarrier, choć nie mogę odtworzyć w moim Core2Du ... esor zmieni kolejność operacji, musi zagwarantować, że zachowanie się nie zmieni. Czy zadajesz sobie trud używania barierek?

różnica w mfence i asm volatile ( ""::: "pamięć")

O ile dobrze zrozumiałem, mfence jest bariera pamięci sprzętowej, podczas gdy {[1] } jest bariera kompilatora. Ale, można asm volatile ("" : : : "memory") być używane w miejsce mfence. Powodem, dla którego się pogubiłem jest ten link

Jaka jest lepsza bariera zapisu na x86: lock+addl czy xchgl?

Jądro Linuksa używa lock; addl $0,0(%%esp) jako bariery zapisu, podczas gdy biblioteka RE2 używa xchgl (%0),%0 jako bariery z ... odczas gdy Linux definiuje ją jako lfence lub no-op w zależności od tego, czy SSE2 jest dostępny. Kiedy jest wymagane lfence?

Kiedy bariera pamięci tylko dla kompilatora (taka jak std::Atomic signal fence) jest przydatna?

Pojęcie ogrodzenia kompilatora często pojawia się, gdy czytam o modelach pamięci, barierach, porządkowaniu, atomice itp., al ... o, spodziewałbym się, że tylko dla kompilatorów ogrodzenia takie jak atomic_signal_fence będą narzędziem wyboru.) Dziękuję.

Czy zmiana kolejności pamięci jest widoczna dla innych wątków na uniprocesorze?

To powszechne, że nowoczesne architektury CPU wykorzystują optymalizacje wydajności, które mogą skutkować wykonaniem poza zam ... r reordering here (just hardware reorderinging), and loop in thread 2 is not optimized away..Znowu diabeł tkwi w szczegółach.

Kiedy należy stosować mm sfence mm lfence i mm mfence

Przeczytałem "Intel Optimization guide Guide For Intel Architecture". Jednak nadal nie mam pojęcia, kiedy powinienem użyć ... m_sfence() _mm_lfence() _mm_mfence() Czy ktoś może wyjaśnić, kiedy powinny być używane podczas pisania kodu wielowątkowego?

Bariery pamięci i TLB

Bariery pamięci gwarantują, że pamięć podręczna danych będzie spójna. Czy jednak gwarantuje, że TLB będzie spójne? Widzę pro ... ł bufory. Dlaczego w ogóle muszę wymieniać bufory? Ponieważ piszę wiele GB danych i ByteBuffer nie może mieć rozmiaru 2+ GB.

Atomicity na x86

8.1.2 Blokada Magistrali Procesory Intel 64 i IA-32 zapewniają sygnał LOCK#, który jest automatycznie podczas pewn ... Więc przedstawiłem swoje wątpliwości, ale główne pytanie brzmi: Jak procesor implementuje operacje atomowe wewnętrznie?

Bariery pamięci C++ Dla Atomiki

Jestem nowicjuszem, jeśli chodzi o to. Czy ktoś mógłby przedstawić uproszczone wyjaśnienie różnic między następującymi barier ... ecne myślenie, które jest w zasadzie wzdłuż linii istnieje więcej niż jeden sposób, aby wdrożyć bariery pamięci pod osłonami.

Bariera pamięci za pomocą polecenia lock

[7]}czytałem ostatnio o barierach pamięci i problemie zmiany kolejności i teraz mam pewne zamieszanie co do tego. Rozważ nas ... FooMethod() { object locker = new object(); lock (locker) { x = 1; y = a; i++; } }

Dlaczego potrzebuję bariery pamięci?

C# 4 w skrócie (wysoce zalecane btw) używa poniższego kodu, aby zademonstrować koncepcję MemoryBarrier (zakładając, że A i B ... mplete = true ale nie następnie Wątek 1 wznowiony i przetestowany if(_complete) -- czy to if nie może spowodować false ?

Synchronizacja Wątków 101

Poprzednio pisałem bardzo prosty, wielowątkowy kod i zawsze byłem świadomy, że w każdej chwili może być przełącznik konteksto ... wym wielowątkowym. Więc, pytanie 5: czy to źle, a jeśli nie, to dlaczego tak jest? Z góry dzięki za wszelkie odpowiedzi:)

Out of Order Execution and Memory Fences

Wiem, że nowoczesne procesory mogą wykonywać nie w porządku, jednak zawsze usuwają wyniki w porządku, jak to opisuje wikipedi ... Teraz z uporządkowanym wycofywaniem wyników i mechanizmem koherencji pamięci podręcznej, po co Ci ogrodzenia pamięci w x86?