Поделиться через


Включение поддержки Windows 7 для Intel AVX

Затронутые платформы

клиентов — Windows 7 с пакетом обновления 1 (SP1)
серверы — Windows Server 2008 R2 с пакетом обновления 1 (SP1)

Влияние функции

серьезности — низкая
частота — низкая

Описание

Intel? расширенные расширения векторов (AVX)? — это 256-разрядное расширение вектора с плавающей запятой в архитектуре Intel. Он включает расширения как для инструкций, так и для регистрирующих наборов.

Корпорация Майкрософт разработала некоторые усовершенствования API, такие как функции XState, которые позволяют приложениям получать доступ к информации и состоянию расширенного процессора, включая AVX.

Сценарии использования

Существует три общих уровня потенциального влияния.

уровне 1. приложения, которые напрямую не используют Intel AVX, не будут видеть никакого влияния на их функциональные возможности, даже если они вызывают библиотеки или используют компиляторы, которые косвенно используют или создают расширения Intel AVX. Это представляет собой большинство приложений.

уровне 2. Расширенные приложения, которые явно используют набор инструкций Intel AVX, смогут получать доступ к содержимому и изменять содержимое регистрации AVX при возникновении исключения оборудования. Очень небольшое количество приложений попадает в эту категорию, так как оно подразумевает интимное знание потока инструкций, выполняемого во время исключения, например приложений с разделами, написанными на языке сборки или теми, которые создают код компьютера во время выполнения (например, среды выполнения управляемого кода с JIT-компиляцией).

уровне 3. приложения отладчика смогут получать доступ к состоянию AVX и управлять им в отлаживаемом приложении.

Использование возможностей функций

уровне 1. Для приложений, использующих Intel AVX, не требуется никаких действий.

уровне 2. Приложения в этой категории имеют возможность доступа к состоянию AVX и управления им во время исключения из своих фильтров исключений. После получения контекста базового процессора с помощью GetExceptionInformation фильтры должны:

1. Проверьте значение флага CONTEXT_XSTATE. Этот флаг указывает на наличие по крайней мере одной функции XState в контексте.
2. Если это так, вызовите GetXStateFeaturesMask и проверьте значение флага XSTATE_AVX в возвращенной маске. Это означает наличие состояния AVX в контексте.
3. вызов LocationXStateFeature, чтобы получить фактическое расположение, в котором хранится состояние AVX.

уровне 3. не требуется обновлять существующие приложения отладчика, если они не хотят получать доступ к регистрам Intel AVX:

1. Чтобы определить, включен ли AVX, отладчик должен использовать следующее:

  • GetEnabledXStateFeatures, чтобы получить маску включенных функций XState на процессорах x86 или x64, чтобы определить, какие функции присутствуют и включены в системе, прежде чем использовать функцию процессора XState или пытаться управлять контекстами XState

2. Если AVX присутствует, и вы хотите получить и управлять состоянием AVX из отлаживаемого приложения (например, GetThreadContext и SetThreadContext), отладчик должен использовать:

  • Функция InitializeContext для инициализации структуры контекста внутри буфера с необходимым размером и выравниванием
  • Функция CopyContext для копирования исходной структуры контекста (включая все XState) в инициализированную структуру контекста назначения

3. Чтобы протестировать, задать и найти состояние AVX в контексте процессора, отладчик должен использовать:

  • НайтиXStateFeature для получения указателя на состояние процессора для отдельной функции XState в структуре контекста
  • GetXStateFeaturesMask для возврата маски компонентов XState в структуре контекста
  • SetXStateFeaturesMask, чтобы задать маску компонентов XState в структуре контекста