BMI2
O BMI2 adiciona operações escalares de bits e inteiros x86, tais como depósito/extração paralela de bits, deslocamentos variáveis e multiplicação independente de sinalizadores. Ele é separado do BMI1.
O que você precisa saber
O BMI2 adiciona operações escalares de bits e inteiros x86, tais como depósito/extração paralela de bits, deslocamentos variáveis e multiplicação independente de sinalizadores. Ele é separado do BMI1.
Como funciona
O PEXT reúne bits de entrada selecionados em um resultado denso de ordem inferior; o PDEP distribui bits de entrada de ordem inferior para posições selecionadas por uma máscara. Outras instruções BMI2 incluem BZHI, MULX, RORX, SHLX, SHRX e SARX. Elas operam em registradores inteiros escalares, apesar de utilizarem a codificação VEX.
Onde é útil
Uma representação compacta de tabuleiro ou codec de campo de bits pode usar PEXT/PDEP para mapear entre layouts de bits densos e esparsos. O custo de execução varia substancialmente entre as implementações, de modo que um algoritmo deve avaliar entradas representativas em vez de presumir que uma sequência curta de instruções seja rápida.
Como verificar o suporte e a ativação
CPUID.07H.00H:EBX bit 8 enumera o BMI2. Verifique o desempenho específico do alvo para as instruções realmente utilizadas e mantenha o despacho fora do código compilado para exigir recursos sem suporte.
Verifique a instrução exata e a forma do operando em vez de inferir o suporte a partir de uma extensão vizinha. Recursos inteiros escalares geralmente usam registradores de uso geral; uma codificação associada a vetores não significa automaticamente um requisito de estado de vetor.
O que o recurso não estabelece
O BMI2 não é uma extensão vetorial AVX e não requer o estado YMM simplesmente porque a codificação é VEX. Ele não estabelece ADX ou BMI1. O MULX e a multiplicação convencional diferem no comportamento dos registradores e sinalizadores.
Compatibilidade e desempenho na prática
A correção depende de casos extremos, bem como da velocidade. Entrada zero, estouro, sinalizadores de transporte, largura do operando, alinhamento e ordenação de memória podem alterar a semântica. Dê preferência a interfaces de compilador ou biblioteca que documentem esses detalhes e forneçam um fallback suportado.
Uma lista de verificação prática de verificação
- Registre o modelo exato do processador ou da plataforma e as versões envolvidas do aplicativo, SO e runtime. Mantenha o texto exato do erro ou requisito.
- Consulte a referência do fabricante para esse modelo exato e, em seguida, inspecione a capacidade efetiva e o estado ativado no ambiente em que o programa é executado.
- Compare cada requisito do binário ou backend selecionado. Um recurso com nome semelhante, alias ou rótulo genérico de tecnologia não é suficiente.
- Confirme se o aplicativo selecionou a implementação pretendida. Use seus diagnósticos documentados e um fallback suportado quando os requisitos não forem atendidos.
- Faça uma alteração suportada por vez e repita a mesma carga de trabalho. Mantenha a configuração original e o caminho de recuperação disponíveis.
Se o recurso estiver listado, mas o software não puder usá-lo
Comece pelo componente exato com falha. Um banco de dados de hardware descreve a capacidade registrada; o sistema operacional ou o hipervisor pode expor um ambiente efetivo diferente. Um erro de instrução ilegal também precisa de investigação da instrução falha real e da compilação do binário, porque corrupção ou uma instrução não suportada não relacionada pode produzir um sintoma semelhante.
Instale a versão do aplicativo, driver ou runtime suportada para a plataforma exata e use a compilação de linha de base ou fallback documentada do fornecedor, se necessário. Uma atualização de software não pode criar uma instrução que o processador não possui. As alterações de firmware e de política de segurança devem seguir o procedimento do fabricante do sistema e um plano de recuperação em vez de uma receita genérica de otimização.
Fontes e escopo desta explicação
Intel 64 and IA-32 Architectures Software Developer's Manual · psABI x86-64: níveis de arquitetura e microarquitetura do processador
Essas referências estabelecem o comportamento arquitetural e os requisitos de software. Elas não verificam de forma independente cada valor de recurso em uma página de modelo de hardware vinculada. Para obter suporte a modelos, use a evidência do fabricante dessa página e verifique a configuração efetiva do sistema. Este artigo não fornece um benchmark, certificação ou data de análise independente.
Fontes e verificação
Propriedade editorial: Feex. Nenhuma data de revisão independente foi registrada. Como pesquisamos.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Os Volumes 1 e 2 descrevem as famílias de instruções nomeadas e CPUID; o Volume 3 descreve estado, paginação, VMX e controles de proteção. A documentação de arquitetura não estabelece o suporte para um modelo específico.
- psABI x86-64: níveis de arquitetura e microarquitetura do processador · Interface de Máquina, Arquitetura do Processador: tabela de recursos básica e cumulativa v2/v3/v4, verificações de estado do SO e recomendações de implantação.
Este artigo foi útil?
Um sim ou não é suficiente. Escolha um motivo se desejar, ou adicione uma breve observação.
Obrigado. Isso nos ajuda a melhorar esta página.