Preskočiť na obsah

CMPXCHG16B

Architektonická referenciaFeex

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

  1. 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.
  2. 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ží.
  3. Porovnajte každú požiadavku vybraného binárneho súboru alebo backendu. Podobne pomenovaná funkcia, alias alebo široké technologické označenie nepostačujú.
  4. 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.
  5. 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.

Bol tento článok užitočný?

Stačí áno alebo nie. Ak chcete, vyberte dôvod, alebo pridajte krátku poznámku.

Bol tento článok užitočný?