Upozornenie: Prezeranie týchto stránok je určené len pre návštevníkov nad 18 rokov!
Zásady ochrany osobných údajov.
Používaním tohto webu súhlasíte s uchovávaním cookies, ktoré slúžia na poskytovanie služieb, nastavenie reklám a analýzu návštevnosti. OK, súhlasím









A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Memory barrier
 
Tento článek je o synchronizační strojové instrukci. O problému paměti coby výkonové brzdy pojednává článek Von Neumannova architektura#Omezení von Neumannovy architektury.

Paměťová bariéra (anglicky memory barrier, membar nebo memory fence) je označení strojové instrukce procesoru realizující synchronizační bariéru. Její použití zaručuje, že instrukce pracující s pamětí uvedené před ní budou provedeny všechny dříve, než začne provádění instrukcí pracujících s pamětí, které jsou uvedeny za ní. V širším významu může paměťová bariéra znamenat i zvláštní příkaz pro překladač, aby patřičným způsobem zrealizoval překlad.

Motivací pro vznik této instrukce jsou jednak překladače a procesory umožňující přerovnání instrukcí za účelem efektivnějšího využití superskalárních procesorů, jednak souběžné programování, kdy se například dělí o přístup ke stejným datům několik vláken.

Příklad

Následující příklad představuje provázaný kód běžící na dvou procesorech se společnou pamětí, kde na počátku obsahují proměnné f i x hodnotu 0.

Procesor #1:

 while (f == 0);
 // zde musí být paměťová bariéra
 print x;

Procesor #2:

 x = 23;
 // zde musí být paměťová bariéra
 f = 1;

Teoreticky by se zdálo, že výsledkem může být pouze vypsání hodnoty 23, neboť dokud není do x dosazeno 23, není ani změněna hodnota f a tedy vlákno na procesoru #1 čeká. V případě procesoru nebo překladače přerovnavajícího instrukce, který „nevidí“ vztahy mezi oběma vlákny, může být nejdřív provedeno dosazení do f a až poté do x, nebo může být pro potřeby výpisu zjišťována hodnota x ještě před koncem čekání na změnu f, tedy následně vypsána hodnota stará.

Strojové instrukce

Na architektuře x86 je paměťová bariéra realizována instrukcí nazývanou v jazyce symbolických adres MFENCE s opkódem 0F AE F0, která je součástí dodatečné sady instrukcí SSE2 poprvé realizované v procesorech Pentium 4 v roce 2000.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Memory barrier na anglické Wikipedii.


Externí odkazy

Zdroj:
>Text je dostupný pod licencí Creative Commons Uveďte autora – Zachovejte licenci, případně za dalších podmínek. Podrobnosti naleznete na stránce Podmínky užití.

čítajte viac o Memory_barrier


čítajte viac na tomto odkaze: Memory barrier



Hladanie1.




Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky použitia.