다음을 통해 공유


Intel AVX에 Windows 7 지원 사용

영향을 받는 플랫폼

클라이언트 - Windows 7 SP1
서버 - Windows Server 2008 R2 SP1

기능 영향

심각도 - 낮음
빈도 - 낮음

설명

Intel? AVX(고급 벡터 확장) Intel 아키텍처의 256비트 SIMD 부동 소수점 벡터 확장입니다. 여기에는 명령 및 레지스터 집합 모두에 대한 확장이 포함됩니다.

Microsoft는 애플리케이션이 AVX를 포함한 확장 프로세서 기능 정보 및 상태에 액세스하고 조작할 수 있도록 하는 XState 함수와 같은 몇 가지 API 개선 사항을 개발했습니다.

사용 시나리오

잠재적 영향의 세 가지 일반적인 수준이 있습니다.

수준 1: Intel AVX를 직접 사용하지 않는 애플리케이션은 라이브러리를 호출하거나 Intel AVX 확장을 간접적으로 사용하거나 생성하는 컴파일러를 사용하는 경우에도 해당 기능에 영향을 주지 않습니다. 이는 대부분의 애플리케이션을 나타냅니다.

수준 2: Intel AVX 명령 집합을 명시적으로 사용하는 고급 애플리케이션은 하드웨어 예외가 발생할 때 AVX 레지스터 콘텐츠에 액세스하고 변경할 수 있습니다. 어셈블리 언어로 작성된 섹션이 있는 애플리케이션 또는 런타임에 머신 코드를 생성하는 애플리케이션(예: Just-In-Time 컴파일을 사용하는 관리 코드 런타임)과 같이 예외 발생 시 실행되는 명령 스트림에 대한 자세한 정보를 의미하므로 매우 적은 수의 애플리케이션이 이 범주에 속합니다.

수준 3: 디버거 애플리케이션은 디버그 중인 애플리케이션에서 AVX 상태에 액세스하고 조작할 수 있습니다.

기능 기능을 활용하는 방법

수준 1: 애플리케이션에서 Intel AVX를 사용하기 위한 작업은 필요하지 않습니다.

수준 2: 이 범주의 애플리케이션에는 예외 필터 내에서 예외 발생 시 AVX 상태에 액세스하고 조작할 수 있는 옵션이 있습니다. GetExceptionInformation을 통해 기본 프로세서 컨텍스트를 가져온 후 필터는 다음을 수행해야 합니다.

1.CONTEXT_XSTATE 플래그의 값을 확인합니다. 이 플래그는 컨텍스트에 하나 이상의 XState 기능이 있음을 나타냅니다.
2. 이 경우 GetXStateFeaturesMask 를 호출하고 반환된 마스크에서 XSTATE_AVX 플래그 값을 테스트합니다. 이는 컨텍스트에 AVX 상태가 있음을 나타냅니다.
3.LocateXStateFeature 를 호출하여 AVX 상태가 저장된 실제 위치를 검색합니다.

수준 3: Intel AVX 레지스터에 액세스하려는 경우가 아니면 기존 디버거 애플리케이션을 업데이트할 필요가 없습니다.

1. AVX가 사용하도록 설정되어 있는지 확인하려면 디버거에서 다음을 사용해야 합니다.

  • XState 프로세서 기능을 사용하거나 XState 컨텍스트를 조작하기 전에 x86 또는 x64 프로세서에서 활성화된 XState 기능 마스크를 가져와 시스템에 존재하고 사용하도록 설정된 기능을 확인하는 GetEnabledXStateFeatures

2. AVX가 있고 디버그 중인 애플리케이션(예: GetThreadContext 및 SetThreadContext)에서 AVX 상태를 검색하고 조작하려는 경우 디버거는 다음을 사용해야 합니다.

  • InitializeContext 함수 - 필요한 크기 및 맞춤을 사용하여 버퍼 내의 컨텍스트 구조를 초기화합니다.
  • CopyContext 원본 컨텍스트 구조(XState 포함)를 초기화된 대상 컨텍스트 구조에 복사하는 CopyContext 함수

3. 프로세서 컨텍스트 내에서 AVX 상태를 테스트, 설정 및 찾으려면 디버거에서 다음을 사용해야 합니다.

  • 컨텍스트 구조 내에서 개별 XState 기능에 대한 프로세서 상태에 대한 포인터를 검색하는 LocateXStateFeature
  • 컨텍스트 구조 내에 설정된 XState 기능의 마스크를 반환하는 GetXStateFeaturesMask
  • 컨텍스트 구조 내에서 설정된 XState 기능의 마스크를 설정하는 SetXStateFeaturesMask