CMPXCHG16B
CMPXCHG16B porovnáva a podmienene vymieňa 16-bajtovú hodnotu v pamäti pomocou definovaného rozhrania páru registrov. Správne zarovnanie a požiadavky na atomicitu sú nevyhnutné pre súbežné použitie.
Čo potrebujete vedieť
CMPXCHG16B porovnáva a podmienene vymieňa 16-bajtovú hodnotu v pamäti pomocou definovaného rozhrania páru registrov. Správne zarovnanie a požiadavky na atomicitu sú nevyhnutné pre súbežné použitie.
Ako to funguje
Inštrukcia porovnáva 128-bitový pamäťový operand s očakávanou hodnotou v RDX:RAX, potom podmienene uloží RCX:RBX alebo načíta zistenú hodnotu z pamäte do registrov očakávanej hodnoty. Pamäťový operand musí spĺňať svoju požiadavku na 16-bajtové zarovnanie. Atomické použitie v zdieľanej pamäti vyžaduje príslušnú sémantiku LOCK.
Kde je to užitočné
Run-time môže túto inštrukciu použiť na atomickú aktualizáciu tagovaného ukazovateľa alebo páru strojových slov. Rozhranie kompilátora pre atomické operácie (atomic API) zohľadňuje aj usporiadanie pamäte, zarovnanie typov a záložné správanie; ručne písaný assembler musí spĺňať všetky tieto kontrakty.
Ako overiť podporu a povolenie
CPUID.01H:ECX bit 13 indikuje CMPXCHG16B. Skontrolujte záruky atomicity v ABI a run-time, ako aj hardvérový bit. Pri rozhodovaní, či je operácia bezzámková (lock-free), použite podporovaný dopyt na atomicitu v danom jazyku.
Skontrolujte presnú inštrukciu a tvar operandu namiesto vyvodzovania podpory zo susedného rozšírenia. Skalárne celočíselné funkcie spravidla využívajú univerzálne registre; kódovanie spojené s vektormi automaticky neznamená požiadavku na vektorový stav.
Čo táto funkcia nezakladá
Inštrukcia nie je univerzálnou 128-bitovou aritmetickou jednotkou a jej prítomnosť neznamená, že 128-bitový atomický typ v každom jazyku je v každom zostavení bezzámkový. Nesprávne zarovnanie môže vyvolať chybu (fault) aj na podporovanom procesore.
Kompatibilita a výkon v praxi
Správnosť závisí od okrajových prípadov rovnako ako od rýchlosti. Nulový vstup, pretečenie, príznaky prenosu, šírka operandu, zarovnanie a usporiadanie pamäte môžu zmeniť sémantiku. Uprednostňujte rozhrania kompilátora alebo knižníc, ktoré tieto podrobnosti dokumentujú a poskytujú podporované náhradné riešenie.
Praktický kontrolný zoznam na overenie
- Zaznamenajte presný model procesora alebo platformy a príslušné verzie aplikácie, operačného systému a runtime prostredia. Zachovajte presné znenie skutočnej chyby alebo požiadavky.
- Skontrolujte referenčnú dokumentáciu výrobcu pre daný presný model a potom preverte efektívnu schopnosť a povolený stav v prostredí, kde program beží.
- Porovnajte každú požiadavku vybraného binárneho súboru alebo backendu. Podobne pomenovaná funkcia, alias alebo široké technologické označenie nepostačujú.
- Uistite sa, že aplikácia vybrala zamýšľanú implementáciu. Ak požiadavky nie sú splnené, použite jej dokumentovanú diagnostiku a podporované náhradné riešenie.
- Vykonávajte vždy len jednu podporovanú zmenu a zopakujte rovnaké pracovné zaťaženie. Ponechajte si k dispozícii pôvodnú konfiguráciu a postup obnovy.
Ak je funkcia uvedená, ale softvér ju nemôže použiť
Začnite presne pri zlyhávajúcom komponente. Hardvérová databáza popisuje zaznamenanú schopnosť; operačný systém alebo hypervízor však môže sprístupniť iné efektívne prostredie. Chyba neplatnej inštrukcie si vyžaduje aj preskúmanie skutočnej chybujúcej inštrukcie a zostavenia binárneho súboru, pretože poškodenie alebo nesúvisiaca nepodporovaná inštrukcia môže vyvolať podobný príznak.
Nainštalujte verziu aplikácie, ovládača alebo runtime prostredia podporovanú pre presnú platformu a v prípade potreby použite dodávateľom dokumentované základné alebo záložné zostavenie. Aktualizácia softvéru nedokáže vytvoriť inštrukciu, ktorú procesor nemá. Zmeny firmvéru a bezpečnostných politík by sa mali riadiť postupom výrobcu systému a plánom obnovy, nie generickým návodom na optimalizáciu.
Zdroje a rozsah tohto vysvetlenia
Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: úrovne architektúry a mikroarchitektúry procesora
Tieto referencie definujú architektonické správanie a softvérové požiadavky. Neoverujú nezávisle každú hodnotu funkcie na prepojenej stránke hardvérového modelu. Podporu modelu nájdete v podkladoch od výrobcu na danej stránke a skontrolujte efektívnu konfiguráciu systému. Tento článok neposkytuje dátum benchmarku, certifikácie ani nezávislej recenzie.
Zdroje a overenie
Redakčné vlastníctvo: Feex. Nie je zaznamenaný žiadny dátum nezávislej kontroly. Ako robíme výskum.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Zväzky 1 a 2 popisujú uvedené rodiny inštrukcií a CPUID; Zväzok 3 popisuje stav, stránkovanie, VMX a ovládacie prvky ochrany. Dokumentácia k architektúre nezaručuje podporu pre konkrétny model.
- x86-64 psABI: úrovne architektúry a mikroarchitektúry procesora · Strojové rozhranie, architektúra procesora: tabuľka základných a kumulatívnych funkcií v2/v3/v4, kontroly stavu OS a odporúčania pre nasadenie.
Bol tento článok užitočný?
Stačí áno alebo nie. Ak chcete, vyberte dôvod, alebo pridajte krátku poznámku.
Ďakujeme. Pomáha nám to zlepšovať túto stránku.