Freigeben über


Aktivieren der Windows 7-Unterstützung für Intel AVX

Betroffene Plattformen

Clients – Windows 7 SP1
Server – Windows Server 2008 R2 SP1

Auswirkungen auf Features

Schweregrad : Niedrig
Frequenz – Niedrig

BESCHREIBUNG

Intel? Advanced Vector Extensions (AVX)? ist eine 256-Bit-SIMD-Gleitkommavektorerweiterung der Intel-Architektur. Sie enthält Erweiterungen für Anweisungs- und Registrierungssätze.

Microsoft hat einige API-Erweiterungen entwickelt, z. B. XState-Funktionen, mit denen Anwendungen auf informationen und den Zustand erweiterter Prozessorfeatures zugreifen und diese bearbeiten können, einschließlich AVX.

Verwendungsszenarien

Es gibt drei allgemeine Ebenen potenzieller Auswirkungen.

Ebene 1: Anwendungen, die Intel AVX nicht direkt verwenden, sehen keine Auswirkungen auf ihre Funktionalität, selbst wenn sie Bibliotheken aufrufen oder Compiler verwenden, die indirekt Intel AVX-Erweiterungen verwenden oder generieren. Dies stellt bei weitem die Mehrheit der Anwendungen dar.

Ebene 2: Erweiterte Anwendungen, die explizit den Intel AVX-Befehlssatz verwenden, können auf AVX-Registerinhalte zugreifen und diese ändern, wenn eine Hardware-Ausnahme ausgelöst wird. Eine sehr kleine Anzahl von Anwendungen würde in diese Kategorie fallen, da dies eine enge Kenntnis des Anweisungsdatenstroms impliziert, der zum Zeitpunkt der Ausnahme ausgeführt wird, z. B. Anwendungen mit Abschnitten, die in assemblysprachlich geschrieben sind, oder solche, die Computercode zur Laufzeit generieren (z. B. verwaltete Coderuntimes mit Just-In-Time-Kompilierung).

Ebene 3: Debuggeranwendungen können auf den AVX-Zustand in der zu debuggenden Anwendung zugreifen und diesen bearbeiten.

Nutzen von Featurefunktionen

Ebene 1: Es ist keine Aktion erforderlich, damit Anwendungen Intel AVX verwenden können.

Ebene 2: Anwendungen in dieser Kategorie haben die Möglichkeit, über ihre Ausnahmefilter zum Zeitpunkt der Ausnahme auf den AVX-Zustand zuzugreifen und diesen zu bearbeiten. Nach dem Abrufen des Basisprozessorkontexts über GetExceptionInformation sollten Filter:

1. Überprüfen Sie den Wert des CONTEXT_XSTATE Flags. Dieses Flag gibt an, dass mindestens ein XState-Feature im Kontext vorhanden ist.
2. Wenn dies der Fall ist, rufen Sie GetXStateFeaturesMask auf, und testen Sie den Wert des flags XSTATE_AVX in der zurückgegebenen Maske. Dies gibt das Vorhandensein des AVX-Zustands im Kontext an.
3. Rufen Sie LocateXStateFeature auf, um den tatsächlichen Speicherort abzurufen, an dem der AVX-Zustand gespeichert ist.

Ebene 3: Es ist nicht erforderlich, vorhandene Debuggeranwendungen zu aktualisieren, es sei denn, sie möchten auf die Intel AVX-Register zugreifen:

1. Um festzustellen, ob AVX aktiviert ist, sollte der Debugger Folgendes verwenden:

  • GetEnabledXStateFeatures zum Abrufen einer Maske aktivierter XState-Features auf x86- oder x64-Prozessoren, um zu bestimmen, welche Features auf dem System vorhanden und aktiviert sind, bevor Sie ein XState-Prozessorfeature verwenden oder versuchen, XState-Kontexte zu bearbeiten

2. Wenn AVX vorhanden ist und Sie den AVX-Zustand aus der zu debuggenden Anwendung abrufen und bearbeiten möchten (z. B. GetThreadContext und SetThreadContext), sollte der Debugger Folgendes verwenden:

  • InitializeContext-Funktion zum Initialisieren einer Kontextstruktur innerhalb eines Puffers mit der erforderlichen Größe und Ausrichtung
  • CopyContext-Funktion zum Kopieren einer Quellkontextstruktur (einschließlich eines beliebigen XState) in eine initialisierte Zielkontextstruktur

3. Zum Testen, Festlegen und Suchen des AVX-Zustands innerhalb eines Prozessorkontexts sollte der Debugger Folgendes verwenden:

  • LocateXStateFeature, um einen Zeiger auf den Prozessorzustand für ein einzelnes XState-Feature innerhalb einer Kontextstruktur abzurufen
  • GetXStateFeaturesMask, um die Maske von XState-Features zurückzugeben, die innerhalb einer Kontextstruktur festgelegt sind
  • SetXStateFeaturesMask zum Festlegen der Maske von XState-Features, die innerhalb einer Kontextstruktur festgelegt sind