Salta al contingut

POPCNT

Referència d'arquitecturaFeex

POPCNT compta el nombre de bits establerts en un operand enter. El seu bit de característica x86 escalar és independent d'SSE4.2 i de les extensions de recompte de població vectorials.

El que cal saber

POPCNT compta el nombre de bits establerts en un operand enter. El seu bit de característica x86 escalar és independent d'SSE4.2 i de les extensions de recompte de població vectorials.

Com funciona

Per a un patró de bits d'entrada, POPCNT retorna el seu pes de Hamming. Una entrada de zero produeix zero, mentre que un valor amb tots els bits establerts produeix l'amplada de l'operand. Això és diferent de localitzar el primer bit establert o comptar zeros inicials o finals.

On és útil

La intersecció de conjunts de bits, els filtres compactes de bases de dades i alguns càlculs de distància utilitzen recomptes de població. L'algorisme complet també depèn de càrregues, combinacions bit a bit i acumulació. Una implementació vectorial de recompte de població té prerequisits diferents dels de la instrucció escalar.

Com comprovar el suport i l'habilitació

El bit 23 de CPUID.01H:ECX enumera el POPCNT escalar. Comproveu qualsevol extensió vectorial de recompte de població per separat i assegureu-vos que la base del programa inclogui la funció escalar quan l'emeti incondicionalment.

Comproveu la forma exacta de la instrucció i dels operands en lloc d'inferir el suport a partir d'una extensió veïna. Les característiques d'enters escalars generalment utilitzen registres de propòsit general; una codificació associada amb vectors no significa automàticament un requisit d'estat vectorial.

El que la característica no estableix

SSE4.2 no implica arquitectònicament POPCNT. El POPCNT escalar no estableix VPOPCNTDQ d'AVX-512 ni altres operacions de recompte empaquetades. Un indicador de CPU no indica quants recomptes de població es poden executar per cicle.

Compatibilitat i rendiment a la pràctica

La correcció depèn tant dels casos límit com de la velocitat. L'entrada zero, el desbordament, els indicadors d'arrossegament, l'amplada de l'operand, l'alineació i l'ordenació de la memòria poden canviar la semàntica. Preferiu interfícies de compilador o de biblioteca que documentin aquests detalls i proporcionin una alternativa compatible.

Una llista de verificació pràctica

  1. Enregistreu el model exacte de processador o de plataforma i les versions d'aplicació, SO i entorn d'execució implicades. Conserveu la redacció de l'error o del requisit real.
  2. Comproveu la referència del fabricant per a aquest model exacte, i després inspeccioneu la capacitat efectiva i l'estat habilitat en l'entorn on s'executa el programa.
  3. Compareu cada requisit del binari o dorsal seleccionat. Una característica amb un nom similar, un àlies o una etiqueta de tecnologia àmplia no és suficient.
  4. Confirmeu que l'aplicació ha seleccionat la implementació prevista. Utilitzeu els seus diagnòstics documentats i una alternativa compatible quan no es compleixin els requisits.
  5. Feu un únic canvi admès a la vegada i repetiu la mateixa càrrega de treball. Manteniu disponibles la configuració original i la via de recuperació.

Si la característica apareix a la llista però el programari no la pot utilitzar

Comenceu pel component exacte que falla. Una base de dades de maquinari descriu la capacitat registrada; el sistema operatiu o l'hipervisor poden exposar un entorn efectiu diferent. Un error d'instrucció il·legal també requereix investigar la instrucció defectuosa real i la compilació del binari, perquè una corrupció o una instrucció no admesa no relacionada poden produir un símptoma similar.

Instal·leu la versió d'aplicació, controlador o entorn d'execució admesa per a la plataforma exacta, i utilitzeu la compilació base o alternativa documentada pel fabricant si cal. Una actualització de programari no pot crear una instrucció que li manqui al processador. Els canvis de microprogramari i de polítiques de seguretat han de seguir el procediment del fabricant del sistema i un pla de recuperació en lloc d'una recepta genèrica d'optimització.

Fonts i abast d'aquesta explicació

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: nivells d'arquitectura i microarquitectura del processador

Aquestes referències estableixen el comportament arquitectònic i els requisits de programari. No verifiquen de manera independent cada valor de característica en una pàgina de model de maquinari enllaçada. Per al suport de models, utilitzeu l'evidència del fabricant d'aquesta pàgina i comproveu la configuració efectiva del sistema. Aquest article no proporciona cap data de prova de referència, certificació o revisió independent.

Fonts i verificació

Propietat editorial: Feex. No s'ha registrat cap data de revisió independent. Com investiguem.

Ha estat útil aquest article?

Un sí o un no és suficient. Trieu un motiu si voleu, o afegiu una breu nota.

Ha estat útil aquest article?