Włączanie obsługi systemu Windows 7 dla funkcji Intel AVX
Platformy, których dotyczy problem
Klienci — Windows 7 z dodatkiem SP1
Servers — Windows Server 2008 R2 z dodatkiem SP1
Wpływ funkcji
ważność — niska
częstotliwość — niska
Opis
Intel? Advanced Vector Extensions (AVX)? to 256-bitowe rozszerzenie wektora zmiennoprzecinkowego SIMD architektury Intel. Zawiera rozszerzenia zarówno instrukcji, jak i zestawów rejestru.
Firma Microsoft opracowała pewne ulepszenia interfejsu API, takie jak funkcje XState, które umożliwiają aplikacjom uzyskiwanie dostępu do rozszerzonych informacji i stanu funkcji procesora oraz manipulowanie nimi, w tym avX.
Scenariusze użycia
Istnieją trzy ogólne poziomy potencjalnego wpływu.
poziom 1: Aplikacje, które nie korzystają bezpośrednio z technologii Intel AVX, nie będą widzieć żadnego wpływu na ich funkcjonalność, nawet jeśli wywołają biblioteki lub używają kompilatorów, które pośrednio używają lub generują rozszerzenia Intel AVX. Reprezentuje to zdecydowanie większość aplikacji.
poziom 2: Zaawansowane aplikacje, które jawnie korzystają z zestawu instrukcji Intel AVX, będą mogły uzyskiwać dostęp do zawartości rejestru AVX i zmieniać je po wystąpieniu wyjątku sprzętowego. Bardzo mała liczba aplikacji należy do tej kategorii, ponieważ oznacza to intymną wiedzę na temat strumienia instrukcji wykonywanych w momencie wystąpienia wyjątku, takich jak aplikacje z sekcjami napisanymi w języku zestawu lub te, które generują kod maszynowy w czasie wykonywania (na przykład środowiska uruchomieniowe kodu zarządzanego z kompilacją just in time).
poziom 3: aplikacje debugera będą mogły uzyskiwać dostęp do stanu AVX i manipulować nim w debugowanej aplikacji.
Jak korzystać z funkcji
poziom 1: Nie jest wymagana żadna akcja, aby aplikacje korzystały z technologii Intel AVX.
Poziom 2: Aplikacje w tej kategorii mają możliwość uzyskiwania dostępu do stanu AVX i manipulowania nim w momencie wyjątku z poziomu filtrów wyjątków. Po uzyskaniu kontekstu procesora podstawowego za pomocą polecenia GetExceptionInformation filtry powinny:
1. Sprawdź wartość flagi CONTEXT_XSTATE. Ta flaga wskazuje obecność co najmniej jednej funkcji XState w kontekście.
2. Jeśli tak jest, wywołaj GetXStateFeaturesMask i przetestuj wartość flagi XSTATE_AVX w zwróconej masce. Wskazuje to obecność stanu AVX w kontekście.
3. wywołaj LocateXStateFeature w celu pobrania rzeczywistej lokalizacji, w której jest przechowywany stan AVX.
poziom 3: Nie trzeba aktualizować istniejących aplikacji debugera, chyba że chcą uzyskać dostęp do rejestrów Intel AVX:
1. Aby określić, czy avX jest włączona, debuger powinien użyć:
- GetEnabledXStateFeatures, aby uzyskać maskę z włączonymi funkcjami XState na procesorach x86 lub x64 w celu określenia, jakie funkcje są obecne i włączone w systemie przed użyciem funkcji procesora XState lub próby manipulowania kontekstami XState
2. Jeśli plik AVX jest obecny i chcesz pobrać stan AVX i manipulować nim z debugowanej aplikacji (na przykład GetThreadContext i SetThreadContext), debuger powinien używać następujących elementów:
- InitializeContext, aby zainicjować strukturę kontekstu wewnątrz buforu z wymaganym rozmiarem i wyrównaniem
- CopyContext, funkcja do kopiowania struktury kontekstu źródłowego (w tym dowolnego XState) na zainicjowaną strukturę kontekstu docelowego
3. Aby przetestować, ustawić i zlokalizować stan AVX w kontekście procesora, debuger powinien użyć:
- LocateXStateFeature w celu pobrania wskaźnika do stanu procesora dla pojedynczej funkcji XState w strukturze kontekstu
- GetXStateFeaturesMask, aby zwrócić maskę funkcji XState ustawionych w strukturze kontekstu
- SetXStateFeaturesMask, aby ustawić maskę funkcji XState ustawionych w strukturze kontekstu
Linki do innych zasobów
- Aby uzyskać informacje o funkcjach XState w zestawie Windows SDK, zobacz Debugowanie funkcji.
- Aby zapoznać się z instrukcjami i możliwościami firmy Intel AVX, zobacz Intel AVX: New Frontiers in Performance Improvements and Energy Efficiency.