XSAVE
XSAVE е разширяемият x86 механизъм за запазване на състоянието на процесора, като например векторни регистри. Хардуерната поддръжка, активирането в ОС и активираните компоненти на състоянието са отделни въпроси.
Какво трябва да знаете
XSAVE е разширяемият x86 механизъм за запазване на състоянието на процесора, като например векторни регистри. Хардуерната поддръжка, активирането в ОС и активираните компоненти на състоянието са отделни въпроси.
Как работи
Архитектурата XSAVE използва изброено оформление на състоянието и маски, за да опише кои компоненти са активирани и запазени. CPUID leaf 0DH описва поддържаните компоненти и размери. XCR0 контролира допустимите компоненти на потребителското състояние, докато OSXSAVE съобщава на софтуера, че операционната система е активирала средата XSAVE.
Къде е полезно
Среда за изпълнение, която решава дали може да използва AVX, се нуждае както от AVX бита на процесора, така и от активираното от ОС състояние на XMM/YMM. Реализация за обработка на контекст или сигнали трябва да заделя пространство според активираното състояние, вместо да предполага, че класически буфер с фиксиран размер е достатъчен.
Как се проверява поддръжката и активирането
Проверете CPUID.01H:ECX бит 26 за XSAVE и бит 27 за OSXSAVE. Едва след това използвайте XGETBV според правилата и проверете необходимите битове в XCR0. Изброявайте leaf 0DH за оформлението на състоянието, вместо да вграждате твърдо размер от друга машина.
Средствата за управление на състоянието са предимно отговорност на ОС и средата за изпълнение. Буферите, маските, размерите на компонентите, подравняването и правилата за възстановяване трябва да съответстват на архитектурата и режима на изпълнение. Запазването само на подмножество може да повреди код, който използва допълнително активирано състояние.
Какво не гарантира тази функция
Поддръжката на XSAVE сама по себе си не означава, че AVX, AVX-512 или AMX могат да се използват. XGETBV не трябва да се използва, преди да се установи необходимата поддръжка и активирането от страна на ОС. Различните инструкции от семейството XSAVE имат отделни правила за изброяване и оформление.
Съвместимост и производителност на практика
Откриването на функции на ниво приложение трябва да използва поддържан интерфейс на средата за изпълнение, когато е възможно. Разграничавайте хардуерната поддръжка от активирането в ОС и, за динамични функции, правата на процеса. Само обозначение на процесора не може да гарантира, че дадена произволна последователност за запазване/възстановяване е правилна.
Практически контролен списък за проверка
- Запишете точния модел на процесора или платформата, както и използваните версии на приложението, операционната система и средата за изпълнение. Запазете точния текст на действителната грешка или изискване.
- Проверете документацията от производителя за този точен модел, след което инспектирайте действителните възможности и активираното състояние в средата, където работи програмата.
- Сравнете всяко изискване на избрания двоичен файл или бекенд. Подобно наименувана функция, псевдоним или общ технологичен етикет не са достатъчни.
- Потвърдете, че приложението е избрало планираната реализация. Използвайте неговата документирана диагностика и поддържан резервен вариант, когато изискванията не са изпълнени.
- Правете по една поддържана промяна наведнъж и повтаряйте същото работно натоварване. Запазете достъпни оригиналната конфигурация и плана за възстановяване.
Ако функцията е посочена, но софтуерът не може да я използва
Започнете с точния компонент, който дава грешка. Хардуерната база данни описва записаните възможности; операционната система или хипервайзорът могат да предоставят различна ефективна среда. Грешка за невалидна инструкция (illegal-instruction) също изисква разследване на действителната сриваща се инструкция и компилацията на двоичния файл, тъй като повреда или несвързана неподдържана инструкция може да предизвика подобен симптом.
Инсталирайте версията на приложението, драйвера или средата за изпълнение, която се поддържа за точната платформа, и използвайте документираната от производителя базова или резервна компилация, ако е необходимо. Софтуерна актуализация не може да създаде инструкция, която липсва в процесора. Промените във фърмуера и политиките за сигурност трябва да следват процедурата на производителя на системата и план за възстановяване, а не общи съвети за оптимизация.
Източници и обхват на това обяснение
Intel 64 and IA-32 Architectures Software Developer's Manual · Linux ядро: използване на XSTATE функции в потребителското пространство
Тези източници установяват архитектурното поведение и софтуерните изисквания. Те не проверяват независимо всяка стойност на параметър на свързана страница за хардуерен модел. За поддръжка на даден модел използвайте данните от производителя на съответната страница и проверете ефективната системна конфигурация. Тази статия не предоставя бенчмарк, сертификация или дата на независим преглед.
Източници и проверка
Редакционна собственост: Feex. Не е записана дата на независим преглед. Как проучваме.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Томове 1 и 2 описват посочените семейства инструкции и CPUID; Том 3 описва състоянието, страницирането, VMX и контролите за защита. Документацията за архитектурата не гарантира поддръжка за конкретен модел.
- Linux ядро: използване на XSTATE функции в потребителското пространство · Активирано от ОС векторно състояние, динамично активирано състояние на блокове, изисквания към сигналния стек и процес за разрешение на AMX. Специфичното за Linux поведение не представлява обещание за друга операционна система.
Беше ли полезна тази статия?
Достатъчно е "да" или "не". Изберете причина, ако желаете, или добавете кратка бележка.
Благодарим ви. Това ни помага да подобрим тази страница.