Condividi tramite


Abilitare il supporto di Windows 7 per Intel AVX

Piattaforme interessate

Client - Windows 7 SP1
Server - Windows Server 2008 R2 SP1

Impatto sulle funzionalità

Gravità - Basso
Frequenza - Bassa

Descrizione

Intel? Advanced Vector Extensions (AVX)? è un'estensione vettore a virgola mobile SIMD a 256 bit dell'architettura Intel. Include estensioni per set di istruzioni e di registrazione.

Microsoft ha sviluppato alcuni miglioramenti dell'API, ad esempio funzioni XState, che consentono alle applicazioni di accedere e modificare le informazioni e lo stato delle funzionalità del processore estesi, tra cui AVX.

Scenari di utilizzo

Esistono tre livelli generali di potenziale impatto.

Livello 1: Le applicazioni che non usano direttamente Intel AVX non avranno alcun impatto sulla loro funzionalità anche se chiamano nelle librerie o usano compilatori che usano o generano indirettamente estensioni Intel AVX. Ciò rappresenta per gran parte delle applicazioni.

Livello 2: Le applicazioni avanzate che usano in modo esplicito il set di istruzioni Intel AVX potranno accedere e modificare il contenuto del registro AVX quando viene generata un'eccezione hardware. Un numero molto ridotto di applicazioni rientra in questa categoria, poiché implica una conoscenza intima del flusso di istruzioni in esecuzione al momento dell'eccezione, ad esempio le applicazioni con sezioni scritte in linguaggio di assembly o quelle che generano codice computer in fase di esecuzione (ad esempio, runtime di codice gestito con compilazione just-in-time).

Livello 3: Le applicazioni debugger potranno accedere e modificare lo stato AVX nell'applicazione in fase di debug.

Come sfruttare le funzionalità delle funzionalità

Livello 1: Non è necessaria alcuna azione per le applicazioni per l'uso di Intel AVX.

Livello 2: Le applicazioni in questa categoria hanno la possibilità di accedere e modificare lo stato AVX al momento dell'eccezione dall'interno dei filtri di eccezione. Dopo aver ottenuto il contesto del processore di base tramite GetExceptionInformation, i filtri devono:

1. Controllare il valore del flag di CONTEXT_XSTATE . Questo flag indica la presenza di almeno una funzionalità XState nel contesto.
2. Se si tratta del caso, chiamare GetXStateFeaturesMask e testare il valore del flag di XSTATE_AVX nella maschera restituita. Ciò indica la presenza dello stato AVX nel contesto.
3. Chiamare LocateXStateFeature per recuperare la posizione effettiva in cui viene archiviato lo stato AVX.

Livello 3: Non è necessario aggiornare le applicazioni debugger esistenti a meno che non desiderino accedere ai registri Intel AVX:

1. Per determinare se AVX è abilitato, il debugger deve usare:

  • GetEnabledXStateFeatures per ottenere una maschera delle funzionalità XState abilitate nei processori x86 o x64 per determinare quali funzionalità sono presenti e abilitate nel sistema prima di usare una funzionalità del processore XState o tentare di modificare i contesti XState

2. Se AVX è presente e si vuole recuperare e modificare lo stato AVX dall'applicazione in fase di debug (ad esempio, GetThreadContext e SetThreadContext), il debugger deve usare:

  • Inizializzare la funzioneContext per inizializzare una struttura di contesto all'interno di un buffer con le dimensioni e l'allineamento necessari
  • Funzione CopyContext per copiare una struttura di contesto di origine (inclusa qualsiasi XState) in una struttura di contesto di destinazione inizializzata

3. Per testare, impostare e individuare lo stato AVX all'interno di un contesto del processore, il debugger deve usare:

  • LocateXStateFeature per recuperare un puntatore allo stato del processore per una singola funzionalità XState all'interno di una struttura di contesto
  • GetXStateFeaturesMask per restituire la maschera delle funzionalità XState impostate all'interno di una struttura di contesto
  • SetXStateFeaturesMask per impostare la maschera delle funzionalità XState impostate all'interno di una struttura di contesto