Compartilhar via


Habilitar o suporte do Windows 7 para Intel AVX

Plataformas afetadas

Clientes – Windows 7 SP1
Servidores – Windows Server 2008 R2 SP1

Impacto do recurso

Gravidade – Baixa
Frequência – Baixa

Descrição

A Intel? Extensões de vetor avançadas (AVX)? é uma extensão de vetor de ponto flutuante SIMD de 256 bits da arquitetura Intel. Ele inclui extensões para conjuntos de instrução e de registro.

A Microsoft desenvolveu alguns aprimoramentos de API, como funções XState, que permitem que os aplicativos acessem e manipulem informações e estado de recursos estendidos do processador, incluindo o AVX.

Cenários de uso

Há três níveis gerais de impacto potencial.

Nível 1: Os aplicativos que não usam diretamente o Intel AVX não verão nenhum impacto em sua funcionalidade, mesmo que chamem bibliotecas ou usem compiladores que usam ou geram indiretamente extensões Intel AVX. Isso representa de longe a maioria dos aplicativos.

Nível 2: Aplicativos avançados que usam explicitamente o conjunto de instruções Intel AVX poderão acessar e alterar o conteúdo do registro AVX quando uma exceção de hardware for gerada. Um número muito pequeno de aplicativos se enquadraria nessa categoria, pois implica um conhecimento íntimo do fluxo de instruções em execução no momento da exceção, como aplicativos com seções escritas em linguagem de assembly ou aquelas que geram código do computador em runtime (por exemplo, runtimes de código gerenciado com compilação just-in-time).

Nível 3: Os aplicativos do depurador poderão acessar e manipular o estado AVX no aplicativo que está sendo depurado.

Como aproveitar as funcionalidades do recurso

Nível 1: Nenhuma ação é necessária para que os aplicativos usem o Intel AVX.

Nível 2: Os aplicativos nessa categoria têm a opção de acessar e manipular o estado AVX no momento da exceção de dentro de seus filtros de exceção. Depois de obter o contexto do processador base por meio de GetExceptionInformation, os filtros devem:

1. Verifique o valor do sinalizador CONTEXT_XSTATE . Esse sinalizador indica a presença de pelo menos um recurso XState no contexto.
2. Se esse for o caso, chame GetXStateFeaturesMask e teste o valor do sinalizador XSTATE_AVX na máscara retornada. Isso indica a presença do estado AVX no contexto.
3. Chame LocateXStateFeature para recuperar o local real em que o estado AVX está armazenado.

Nível 3: Não é necessário atualizar os aplicativos existentes do depurador, a menos que eles desejem acessar os registros do Intel AVX:

1. Para determinar se o AVX está habilitado, o depurador deve usar:

  • GetEnabledXStateFeatures para obter uma máscara de recursos XState habilitados em processadores x86 ou x64 para determinar quais recursos estão presentes e habilitados no sistema antes de usar um recurso de processador XState ou tentar manipular contextos XState

2. Se o AVX estiver presente e você quiser recuperar e manipular o estado AVX do aplicativo que está sendo depurado (por exemplo, GetThreadContext e SetThreadContext), o depurador deverá usar:

  • Função InitializeContext para inicializar uma estrutura de contexto dentro de um buffer com o tamanho e o alinhamento necessários
  • Função CopyContext para copiar uma estrutura de contexto de origem (incluindo qualquer XState) em uma estrutura de contexto de destino inicializada

3. Para testar, definir e localizar o estado AVX em um contexto de processador, o depurador deve usar:

  • LocateXStateFeature para recuperar um ponteiro para o estado do processador para um recurso XState individual dentro de uma estrutura de contexto
  • GetXStateFeaturesMask para retornar a máscara de recursos XState definida dentro de uma estrutura de contexto
  • SetXStateFeaturesMask para definir a máscara de recursos XState definida dentro de uma estrutura de contexto