Vaje deritto ô cuntenuto

POPCNT

Riferimento 'e ll'architetturaFeex

POPCNT conta 'o nummero 'e bit a uno dinto a n'operando 'e nummere 'ntieri. 'O bit d' 'a carattarìstica scalare x86 suja stace a parte 'a SSE4.2 e d' 'e prolungamenti vettoriali d' 'o cunto d' 'e bit.

Chello ca t'hê 'a sapé

POPCNT conta 'o nummero 'e bit a uno dinto a n'operando 'e nummere 'ntieri. 'O bit d' 'a carattarìstica scalare x86 suja stace a parte 'a SSE4.2 e d' 'e prolungamenti vettoriali d' 'o cunto d' 'e bit.

Comme fonsiona

Pe nu 'nzieme 'e bit 'e trasuta, POPCNT torna 'o piso 'e Hamming sujo. Nu valore 'e trasuta a zero tira fora zero, tramente nu valore cu tutt' 'e bit a uno tira fora 'a larghezza 'e ll'operando. Chisto è diverso da truvà 'o primmo bit appicciato o cuntà 'e zero c'accumenzano o fernèsceno.

Addò serve

L'intersezzione 'e bitset, 'e filtre 'e database astritti e cierti càlcure 'e distanzia àusano 'e cunti d' 'e bit a uno. L'algoritmo cumpreto dipende pure 'a carrecamienti, cumbinazzioni bit a bit e accumulazzione. Na 'mplementazzione vettoriale d' 'o population-count tene requesite diverse d' 'a semprice istruzzione scalare.

Comme se cuntrolla 'o supporto e ll'abbilitazzione

CPUID.01H:ECX bit 23 enumera POPCNT scalare. Verificate ogne prolungamento vettoriale d' 'o population-count a parte e assicuratevi ca 'o livello minimo d' 'o prugramma tene chesta carattarìstica quanno 'a lancia senza cundizzioni.

Cuntrolla 'a struzzione esatta e 'a forma 'e ll'operando mméce 'e supponere 'o supporto da n'estenzione vicina. 'E funzionalita scalari intere 'e soleto ausano riggistre p'uso generale; na codifeche assuciata ch' 'e vetturi nun vo dicere pe fforza ca serve 'o stato vetturiale.

Chello ca 'a funzionalita nun stabbilisce

SSE4.2 nun dà 'e cunsiguenzia architetturale POPCNT. POPCNT scalare nun cunferma AVX-512 VPOPCNTDQ o ate operazzioni 'e cunto 'mpacchettate. Na flag d' 'a CPU nun dice quanti cunti 'e pupulazzione ponno girà pe ogne ciclo.

Cumpatibbilita e prestazziune dint' 'a prateca

'A currettezza dipènne d' 'e casi limite e pure d' 'a velocita. Input a zero, overflow, flag 'e carry, larghizza 'e ll'operando, allineamento e urdenamento d' 'a memoria ponno cagnà 'a semanteca. È meglio ausà 'e 'nterfacce d' 'o compilatore o d' 'e libbrerie ca documentano sti dettaglie e furnesceno n'alternativa supportata.

Na lista 'e verifeca prateca

  1. Riggistra 'o mudello esatto d' 'o prucessore o d' 'a piattaforma e 'e vversione 'e ll'applicazzione, d' 'o sistema operativo e d' 'o runtime cumbulute. Mantien' 'e pparole esatte 'e ll'errore o d' 'o requisito overo.
  2. Cuntrolla 'o riferimento d' 'o costruttore pe chillu mudello esatto, po verifeca 'a capacita effettiva e 'o stato abbilitato dint'a ll'ambiente addò gira 'o prugramma.
  3. Cunfrunta ogne requisito d' 'o binario o backend sciveto. Na funzionalita cu nu nomme sumigliante, n'alias o n'etichetta tecnologgeca generale nun abbasta.
  4. Cunferma ca ll'applicazzione ha sciveto ll'implementazzione vuluta. Ausa 'a diagnosteca documentata soja e n'alternativa supportata quanno 'e requisite nun songo rispettate.
  5. Fa nu sulo cagnamento supportato a ll'avota e ripete 'o stesso carico 'e fatica. Mantien' 'a cunfigurazzione origginale e 'a via 'e recuppero a portata 'e mana.

Si 'a funzionalita sta scritta ma 'o software nun 'a po ausà

Pparti d' 'o cumponente esatto ca falla. Nu database hardware descrive 'a capacita riggistrata; 'o sistema operativo o ll'hypervisor po mustrà n'ambiente effettivo diverzo. N'errore 'e struzzione illegale addimanna pure 'e verificà 'a struzzione ca sgarra overamente e 'a build d' 'o binario, pecché na corruzzione o n'ata struzzione nun supportata po dà nu sintomo simile.

Stalla 'a vversione 'e ll'applicazzione, d' 'o driver o d' 'o runtime supportata p' 'a piattaforma esatta, e ausa 'a baseline documentata d' 'o costruttore o na build 'e fallback si serve. N'aggiurnamento software nun po crià na struzzione ca 'o prucessore nun tene. 'E cagnamiente a 'o firmware e 'e puliteche 'e sicurezza hann' 'a siguità 'a prucedura d' 'o costruttore d' 'o sistema e nu pピアノ 'e recuppero mméce 'e na ricetta generale 'e uttimizzazzione.

Funte e ambito 'e sta spiegazzione

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: levielle d'architettura e microarchitettura d'o prucessore

Sti riferimente stabbilisceno 'o cumpurtamento 'e ll'architettura e 'e requisite d' 'o software. Nun verificano 'e manera 'ndipennente ogne valore 'e funzionalita ngopp'a na paggena 'e nu mudello hardware culegato. P' 'o supporto d' 'o mudello, ausa ll'evidenze d' 'o costruttore 'e chella paggena e verifeca 'a cunfigurazzione effettiva d' 'o sistema. St'articulo nun furnesce benchmark, certificazzione o data 'e revisone 'ndipennente.

Funte e verìfeca

Prupietà editoriale: Feex. Nisciuna data 'e revisizzione 'ndipennente è riggistrata. Comme facimmo 'e recerche.

È servuto chist'articulo?

Basta nu sì o nu no. Si vuó, sciglie na mutivazzione o miett' na nota corta.

È servuto chist'articulo?