Přejít k obsahu

BMI2

Referenční příručka k architektuřeFeex

BMI2 přidává skalární operace pro bity a celá čísla na architektuře x86, jako jsou paralelní ukládání a extrakce bitů (deposit/extract), variabilní posuvy a násobení neovlivňující příznaky. Je oddělené od BMI1.

Co potřebujete vědět

BMI2 přidává skalární operace pro bity a celá čísla na architektuře x86, jako jsou paralelní ukládání a extrakce bitů (deposit/extract), variabilní posuvy a násobení neovlivňující příznaky. Je oddělené od BMI1.

Jak to funguje

Instrukce PEXT shromažďuje (gathers) vybrané vstupní bity do zhuštěného výsledku v dolních řádech; PDEP rozptyluje (scatters) vstupní bity z dolních řádů na pozice určené maskou. Mezi další instrukce BMI2 patří BZHI, MULX, RORX, SHLX, SHRX a SARX. Tyto instrukce pracují se skalárními celočíselnými registry, přestože používají kódování VEX.

Kde je funkce užitečná

Kompaktní reprezentace herní desky nebo kodek bitových polí může použít PEXT/PDEP pro mapování mezi hustým a řídkým uspořádáním bitů. Režie jejich provádění se mezi implementacemi výrazně liší, proto by měl algoritmus využívat benchmarky na reprezentativních vstupech namísto předpokladu, že krátká sekvence instrukcí je vždy rychlá.

Jak ověřit podporu a aktivaci

CPUID.07H.00H:EBX bit 8 enumeruje BMI2. Ověřte specifický výkon skutečně použitých instrukcí na cílové platformě a ponechte dispečink vně kódu zkompilovaného s požadavkem na nepodporované funkce.

Zkontrolujte přesnou instrukci a tvar operandu, místo abyste podporu odvozovali ze sousedního rozšíření. Skalární celočíselné funkce obecně využívají univerzální registry; kódování spojené s vektory automaticky neznamená požadavek na stav vektorového procesoru.

Co tato funkce nezajišťuje

BMI2 není vektorové rozšíření AVX a nevyžaduje stav YMM pouze proto, že používá kódování VEX. Nezakládá podporu pro ADX ani BMI1. MULX a konvenční násobení se liší v chování registrů a příznaků.

Kompatibilita a výkon v praxi

Správnost závisí nejen na rychlosti, ale také na hraničních případech. Nulový vstup, přetečení, příznaky přenosu, šířka operandu, zarovnání a uspořádání přístupů do paměti mohou změnit sémantiku. Upřednostňujte rozhraní kompilátoru nebo knihoven, která tyto podrobnosti dokumentují a nabízejí podporované náhradní řešení.

Praktický kontrolní seznam pro ověření

  1. Zaznamenejte přesný model procesoru nebo platformy a použité verze aplikace, operačního systému a běhového prostředí. Uchovejte přesné znění chybové zprávy nebo požadavku.
  2. Zkontrolujte dokumentaci výrobce pro daný konkrétní model a poté prověřte skutečně dostupnou kapacitu a stav aktivace v prostředí, kde program běží.
  3. Porovnejte veškeré požadavky vybraného binárního souboru nebo backendu. Podobně pojmenovaná funkce, alias nebo obecné technologické označení nestačí.
  4. Ověřte, že aplikace vybrala zamýšlenou implementaci. Pokud nejsou požadavky splněny, použijte její zdokumentovanou diagnostiku a podporované náhradní řešení.
  5. Provádějte vždy jen jednu podporovanou změnu a zopakujte identickou zátěž. Původní konfiguraci a postup obnovy mějte neustále k dispozici.

Pokud je funkce uvedena, ale software ji nemůže použít

Začněte u přesné komponenty, u níž dochází k selhání. Databáze hardwaru popisuje zaznamenané schopnosti; operační systém nebo hypervizor však může vystavit odlišné efektivní prostředí. Chyba neplatné instrukce vyžaduje také prozkoumání skutečné chybující instrukce a sestavení binárního souboru, protože poškození dat nebo nesouvisející nepodporovaná instrukce mohou vyvolat podobný projev.

Nainstalujte verzi aplikace, ovladače nebo běhového prostředí podporovanou pro danou platformu a v případě potřeby použijte výrobcem zdokumentované základní nebo náhradní sestavení. Aktualizace softwaru nemůže vytvořit instrukci, kterou procesor fyzicky postrádá. Změny firmwaru a zásad zabezpečení by se měly řídit postupem výrobce systému a plánem obnovy, nikoli obecným návodem na optimalizaci.

Zdroje a rozsah tohoto vysvětlení

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: úrovně architektury a mikroarchitektury procesoru

Tyto referenční dokumenty stanovují architektonické chování a softwarové požadavky. Neověřují nezávisle každou hodnotu funkce na odkazované stránce hardwarového modelu. Informace o podpoře konkrétního modelu čerpejte z podkladů výrobce na příslušné stránce a zkontrolujte platnou konfiguraci systému. Tento článek neposkytuje benchmark, certifikaci ani datum nezávislého přezkumu.

Zdroje a ověření

Redakční vlastnictví: Feex. Není zaznamenáno žádné datum nezávislého přezkoumání. Jak provádíme výzkum.

Byl tento článek užitečný?

Stačí ano nebo ne. Pokud chcete, vyberte důvod nebo přidejte krátkou poznámku.

Byl tento článek užitečný?