Включение поддержки 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 в структуре контекста