Skoči na sadržaj

CMPXCHG16B

Arhitekturna referencaFeex

CMPXCHG16B uspoređuje i uvjetno razmjenjuje 16-bajtnu memorijsku vrijednost koristeći definirano sučelje para registara. Ispravno poravnanje i zahtjevi za atomičnošću ključni su za konkurentnu upotrebu.

Što trebate znati

CMPXCHG16B uspoređuje i uvjetno razmjenjuje 16-bajtnu memorijsku vrijednost koristeći definirano sučelje para registara. Ispravno poravnanje i zahtjevi za atomičnošću ključni su za konkurentnu upotrebu.

Kako funkcionira

Instrukcija uspoređuje 128-bitni memorijski operand s očekivanom vrijednošću u RDX:RAX, zatim uvjetno pohranjuje RCX:RBX ili učitava uočenu memorijsku vrijednost u registre očekivane vrijednosti. Memorijski operand mora zadovoljiti svoj zahtjev za 16-bajtnim poravnanjem. Atomična upotreba u dijeljenoj memoriji zahtijeva odgovarajuću LOCK semantiku.

Gdje je korisno

Runtime može koristiti ovu instrukciju za atomično ažuriranje označenog pokazivača ili para strojnih riječi. Prevoditeljski atomički API također uzima u obzir memorijski redoslijed, poravnanje tipa i zamjensko ponašanje; ručno pisani asembler mora zadovoljiti sve te ugovore.

Kako provjeriti podršku i omogućavanje

CPUID.01H:ECX bit 13 označava CMPXCHG16B. Provjerite atomska jamstva ABI-ja i runtimea kao i hardverski bit. Koristite podržani atomički upit programskog jezika pri odlučivanju je li operacija bez blokiranja (lock-free).

Provjerite točan oblik instrukcije i operanda umjesto da zaključujete o podršci iz susjednog proširenja. Skalarne cjelobrojne značajke uglavnom koriste registre opće namjene; kodiranje povezano s vektorima ne znači automatski zahtjev za vektorskim stanjem.

Što ova značajka ne utvrđuje

Instrukcija nije opća 128-bitna aritmetička jedinica, a njezina prisutnost ne znači da je 128-bitni atomički tip svakog jezika lock-free u svakoj međuverziji. Pogrešno poravnanje može izazvati prekid (fault) čak i na podržanom procesoru.

Kompatibilnost i performanse u praksi

Ispravnost ovisi o graničnim slučajevima, kao i o brzini. Nulti unos, preljev, zastavice prijenosa, širina operanda, poravnanje i redoslijed memorije mogu promijeniti semantiku. Dajte prednost sučeljima prevoditelja ili biblioteka koja dokumentiraju te pojedinosti i pružaju podržanu zamjensku opciju.

Praktičan kontrolni popis za provjeru

  1. Zabilježite točan model procesora ili platforme te verzije aplikacije, OS-a i izvršnog okruženja. Sačuvajte formulaciju stvarne pogreške ili zahtjeva.
  2. Provjerite proizvođačevu referencu za taj točan model, a zatim pregledajte stvarnu sposobnost i omogućeno stanje u okruženju u kojem se program izvodi.
  3. Usporedite svaki zahtjev odabrane binarne datoteke ili pozadinskog sustava. Slično nazvana značajka, pseudonim ili široka tehnološka oznaka nisu dovoljni.
  4. Potvrdite da je aplikacija odabrala predviđenu implementaciju. Koristite njezinu dokumentiranu dijagnostiku i podržanu zamjensku opciju kada zahtjevi nisu ispunjeni.
  5. Napravite jednu po jednu podržanu promjenu i ponovite isto radno opterećenje. Zadržite izvornu konfiguraciju i put oporavka dostupnima.

Ako je značajka navedena, ali je softver ne može koristiti

Počnite s točnom komponentom koja zakazuje. Hardverska baza podataka opisuje zabilježenu sposobnost; operacijski sustav ili hipervizor mogu izložiti drukčije stvarno okruženje. Pogreška nedopuštene instrukcije također zahtijeva istragu stvarne instrukcije koja uzrokuje pogrešku i binarne građe, jer oštećenje ili nepovezana nepodržana instrukcija mogu proizvesti sličan simptom.

Instalirajte verziju aplikacije, upravljačkog programa ili izvršnog okruženja podržanu za točnu platformu i upotrijebite proizvođačevu dokumentiranu osnovnu ili zamjensku građu ako je potrebno. Softversko ažuriranje ne može stvoriti instrukciju koja procesoru nedostaje. Promjene u firmwareu i sigurnosnim pravilima trebaju slijediti postupak proizvođača sustava i plan oporavka, a ne generički recept za optimizaciju.

Izvori i opseg ovog objašnjenja

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: razine arhitekture i mikroarhitekture procesora

Ove reference utvrđuju arhitekturno ponašanje i softverske zahtjeve. One ne verificiraju neovisno svaku vrijednost značajke na povezanoj stranici hardverskog modela. Za podršku modela upotrijebite proizvođačeve dokaze s te stranice i provjerite stvarnu konfiguraciju sustava. Ovaj članak ne pruža mjerilo performansi, certifikaciju ili datum neovisnog pregleda.

Izvori i provjera

Uredničko vlasništvo: Feex. Nije zabilježen datum neovisnog pregleda. Kako istražujemo.

Je li ovaj članak bio koristan?

Dovoljno je odgovoriti s da ili ne. Odaberite razlog ako želite ili dodajte kratku bilješku.

Je li ovaj članak bio koristan?