Mengaktifkan Dukungan Windows 7 untuk Intel AVX

Platform yang Terpengaruh

Klien - Windows 7 SP1
Server - Windows Server 2008 R2 SP1

Dampak Fitur

Tingkat keparahan - Rendah
Frekuensi - Rendah

Deskripsi

Intel? Advanced Vector Extensions (AVX)? adalah ekstensi vektor floating-point SIMD 256-bit dari arsitektur Intel. Ini termasuk ekstensi untuk instruksi dan mendaftarkan set.

Microsoft telah mengembangkan beberapa penyempurnaan API, seperti fungsi XState, yang memungkinkan aplikasi mengakses dan memanipulasi informasi dan status fitur prosesor yang diperluas, termasuk AVX.

Skenario penggunaan

Ada tiga tingkat umum dampak potensial.

Tingkat 1: Aplikasi yang tidak secara langsung menggunakan Intel AVX tidak akan melihat dampak apa pun terhadap fungsionalitasnya meskipun mereka memanggil pustaka atau menggunakan pengkompilasi yang secara tidak langsung menggunakan atau menghasilkan ekstensi Intel AVX. Ini sejauh ini mewakili sebagian besar aplikasi.

Tingkat 2: Aplikasi tingkat lanjut yang secara eksplisit menggunakan set instruksi Intel AVX akan dapat mengakses dan mengubah konten pendaftaran AVX saat pengecualian perangkat keras dinaikkan. Sejumlah kecil aplikasi akan termasuk dalam kategori ini, karena menyiratkan pengetahuan intim tentang aliran instruksi yang dijalankan pada saat pengecualian, seperti aplikasi dengan bagian yang ditulis dalam bahasa perakitan atau yang menghasilkan kode mesin pada runtime bahasa umum (misalnya, runtime kode terkelola dengan kompilasi just-in-time).

Tingkat 3: Aplikasi Debugger akan dapat mengakses dan memanipulasi status AVX dalam aplikasi yang sedang di-debug.

Cara Memanfaatkan Kemampuan Fitur

Tingkat 1: Tidak ada tindakan yang diperlukan bagi aplikasi untuk menggunakan Intel AVX.

Tingkat 2: Aplikasi dalam kategori ini memiliki opsi untuk mengakses dan memanipulasi status AVX pada saat pengecualian dari dalam filter pengecualiannya. Setelah mendapatkan konteks prosesor dasar melalui GetExceptionInformation, filter harus:

1. Periksa nilai bendera CONTEXT_XSTATE . Bendera ini menunjukkan keberadaan setidaknya satu fitur XState dalam konteks.
2. Jika demikian, panggil GetXStateFeaturesMask dan uji nilai bendera XSTATE_AVX di masker yang dikembalikan. Ini menunjukkan keberadaan status AVX dalam konteks.
3. Panggil LocateXStateFeature untuk mengambil lokasi aktual tempat status AVX disimpan.

Tingkat 3: Tidak perlu memperbarui aplikasi debugger yang ada kecuali mereka ingin mengakses register Intel AVX:

1. Untuk menentukan apakah AVX diaktifkan, debugger harus menggunakan:

  • GetEnabledXStateFeatures untuk mendapatkan mask fitur XState yang diaktifkan pada prosesor x86 atau x64 untuk menentukan fitur apa yang ada dan diaktifkan pada sistem sebelum menggunakan fitur prosesor XState atau mencoba memanipulasi konteks XState

2. Jika AVX ada dan Anda ingin mengambil dan memanipulasi status AVX dari aplikasi yang di-debug (misalnya, GetThreadContext dan SetThreadContext), debugger harus menggunakan:

  • InitializeContext Function untuk Menginisialisasi struktur konteks di dalam buffer dengan ukuran dan perataan yang diperlukan
  • Fungsi CopyContext untuk menyalin struktur konteks sumber (termasuk XState) ke struktur konteks tujuan yang diinisialisasi

3. Untuk menguji, mengatur dan menemukan status AVX dalam konteks prosesor, debugger harus menggunakan:

  • LocateXStateFeature untuk mengambil penunjuk ke status prosesor untuk fitur XState individual dalam struktur konteks
  • GetXStateFeaturesMask untuk mengembalikan mask fitur XState yang diatur dalam struktur konteks
  • SetXStateFeaturesMask untuk mengatur mask fitur XState yang diatur dalam struktur konteks