Перейти до вмісту

XSAVE

Архітектурний довідникFeex

XSAVE - це розширюваний механізм x86 для збереження стану процесора, наприклад векторних регістрів. Апаратна підтримка, увімкнення з боку ОС та активовані компоненти стану є окремими питаннями.

Що потрібно знати

XSAVE - це розширюваний механізм x86 для збереження стану процесора, наприклад векторних регістрів. Апаратна підтримка, увімкнення з боку ОС та активовані компоненти стану є окремими питаннями.

Як це працює

Архітектура XSAVE використовує перелічену структуру стану та маски, щоб описати, які саме компоненти ввімкнено та збережено. Лист CPUID 0DH описує підтримувані компоненти та розміри. XCR0 контролює доступні компоненти стану користувача, тоді як OSXSAVE повідомляє програмному забезпеченню, що операційна система активувала середовище XSAVE.

Де це корисно

Середовище часу виконання, визначаючи можливість використання AVX, потребує як біта AVX процесора, так і дозволеного ОС стану XMM/YMM. Реалізація контексту або сигналів повинна виділяти простір відповідно до ввімкненого стану, а не припускати, що застарілого буфера фіксованого розміру буде достатньо.

Як перевірити підтримку та активацію

Перевірте CPUID.01H:ECX біт 26 для XSAVE та біт 27 для OSXSAVE. Лише після цього використовуйте XGETBV у дозволеному порядку та перевіряйте необхідні біти XCR0. Перелічуйте лист 0DH для отримання структури стану замість жорсткого задання розміру з іншого комп'ютера.

Засоби керування станом є насамперед сферою відповідальності ОС та середовища виконання. Буфери, маски, розміри компонентів, вирівнювання та правила відновлення повинні відповідати архітектурі та режиму виконання. Збереження лише частини стану може пошкодити дані коду, який використовує додатковий увімкнений стан.

Чого ця функція не гарантує

Сама по собі підтримка XSAVE не означає, що AVX, AVX-512 або AMX можна використовувати. XGETBV не можна застосовувати до встановлення необхідної підтримки та її ввімкнення в ОС. Різні інструкції сімейства XSAVE мають окремі правила перелічення та компонування.

Сумісність і продуктивність на практиці

Визначення можливостей на рівні програм має за можливості використовувати підтримуваний інтерфейс середовища виконання. Розрізняйте апаратну підтримку, активацію в ОС та (для динамічних функцій) дозволи процесу. Лише маркування процесора не може підтвердити коректність довільної послідовності збереження/відновлення.

Практичний контрольний список для верифікації

  1. Зафіксуйте точну модель процесора або платформи, а також версії використовуваної програми, ОС і середовища виконання. Збережіть точне формулювання фактичної помилки або вимоги.
  2. Звіртеся з документацією виробника для цієї точної моделі, потім перевірте фактичні можливості та стан активації в середовищі, де виконується програма.
  3. Порівняйте кожну вимогу вибраного двійкового файлу або бекенда. Схожої назви функції, псевдоніма чи загального позначення технології недостатньо.
  4. Переконайтеся, що програма вибрала призначену реалізацію. Використовуйте її задокументовані засоби діагностики та підтримуваний резервний варіант, якщо вимоги не виконуються.
  5. Вносьте по одній підтримуваній зміні за раз і повторюйте те саме робоче навантаження. Зберігайте оригінальну конфігурацію та можливість відновлення.

Якщо функція вказана, але програмне забезпечення не може її використати

Почніть із компонента, у якому саме стався збій. База даних обладнання описує зафіксовані можливості; операційна система або гіпервізор можуть надавати інше фактичне середовище. Помилка неприпустимої інструкції також потребує дослідження фактичної інструкції, що викликала збій, і двійкової збірки, оскільки пошкодження даних або непов'язана непідтримувана інструкція можуть викликати схожий симптом.

Встановіть версію програми, драйвера або середовища виконання, яка підтримується для цієї конкретної платформи, і за потреби використовуйте задокументовану постачальником базову або резервну збірку. Оновлення програмного забезпечення не може створити інструкцію, якої немає в процесорі. Зміни у прошивці та політиках безпеки повинні відповідати процедурі виробника системи та плану відновлення, а не загальним рецептам оптимізації.

Джерела та межі застосування цього пояснення

Intel 64 and IA-32 Architectures Software Developer's Manual · Linux kernel: using XSTATE features in user space

Ці довідкові матеріали визначають архітектурну поведінку та вимоги до програмного забезпечення. Вони не перевіряють незалежно кожне значення функції на сторінці пов'язаної моделі обладнання. Щодо підтримки моделі використовуйте дані виробника на цій сторінці та перевіряйте фактичну конфігурацію системи. Ця стаття не містить бенчмарків, сертифікації чи дат незалежного огляду.

Джерела та верифікація

Власник авторських прав: Feex. Дата незалежної перевірки не зафіксована. Як ми проводимо дослідження.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Томи 1 і 2 описують зазначені сімейства інструкцій і CPUID; Том 3 описує стан, сторінкову організацію пам'яті, VMX і засоби захисту. Документація з архітектури не підтверджує підтримку для конкретної моделі.
  • Linux kernel: using XSTATE features in user space · Векторний стан, увімкнений ОС, динамічно ввімкнений стан тайлів, вимоги до стека сигналів і процес отримання дозволів AMX. Специфічна поведінка Linux не є гарантією для іншої ОС.

Чи була ця стаття корисною?

Достатньо відповісти "так" або "ні". За бажанням виберіть причину або додайте коротку примітку.

Чи була ця стаття корисною?