XSAVE
Az XSAVE a bővíthető x86 mechanizmus a processzorállapotok, például a vektorregiszterek mentésére. A hardveres támogatás, az operációs rendszer általi engedélyezés és az engedélyezett állapotösszetevők külön kérdést képeznek.
Amit tudni érdemes
Az XSAVE a bővíthető x86 mechanizmus a processzorállapotok, például a vektorregiszterek mentésére. A hardveres támogatás, az operációs rendszer általi engedélyezés és az engedélyezett állapotösszetevők külön kérdést képeznek.
Hogyan működik
Az XSAVE architektúra számbavett állapotelrendezést és maszkokat használ annak leírására, hogy mely összetevők vannak engedélyezve és mentve. A CPUID 0DH levél ismerteti a támogatott összetevőket és méreteket. Az XCR0 szabályozza a jogosult felhasználói állapotösszetevőket, míg az OSXSAVE jelzi a szoftvernek, hogy az operációs rendszer engedélyezte az XSAVE környezetet.
Ahol hasznos
Egy futtatókörnyezetnek, amely el kívánja dönteni, hogy használhatja-e az AVX-et, szüksége van a processzor AVX bitjére és az operációs rendszer által engedélyezett XMM/YMM állapotra is. Egy környezet- (context) vagy jelkezelési implementációnak az engedélyezett állapotnak megfelelően kell helyet foglalnia, ahelyett hogy feltételezné, egy régebbi, rögzített méretű puffer elegendő.
A támogatás és az engedélyezés ellenőrzése
Ellenőrizze a CPUID.01H:ECX 26. bitjét az XSAVE és a 27. bitjét az OSXSAVE tekintetében. Csak ezután használja az XGETBV utasítást az engedélyezett módon, és vizsgálja meg a szükséges XCR0 biteket. A memóriaterület elrendezéséhez kérdezze le a 0DH levelet ahelyett, hogy egy másik gépből származó fix méretet használna kódjában.
Az állapotkezelési eszközök elsősorban az operációs rendszer és a futtatókörnyezet felelősségi körébe tartoznak. A puffereknek, maszkoknak, komponensméreteknek, igazításoknak és visszaállítási szabályoknak összhangban kell lenniük az architektúrával és a végrehajtási móddal. Csak egy részhalmaz mentése károsíthatja a további engedélyezett állapotokat használó kódokat.
Amit a funkció nem biztosít
Az XSAVE támogatása önmagában nem jelenti azt, hogy az AVX, AVX-512 vagy AMX használható. Az XGETBV nem használható a szükséges támogatás és az operációs rendszer engedélyezésének megállapítása előtt. A különböző XSAVE-családba tartozó utasítások eltérő felderítési és elrendezési szabályokkal rendelkeznek.
Kompatibilitás és teljesítmény a gyakorlatban
Az alkalmazásszintű funkcióészlelésnek lehetőség szerint egy karbantartott futtatókörnyezeti felületet kell használnia. Különböztesse meg a hardveres támogatást az operációs rendszer engedélyezésétől, dinamikus funkciók esetén pedig a folyamat jogosultságától. Egy CPU-címke önmagában nem bizonyíthatja, hogy egy tetszőleges mentési/visszaállítási sorozat helyes.
Gyakorlati ellenőrzőlista
- Rögzítse az érintett processzor vagy platform pontos modelljét, valamint az alkalmazás, az operációs rendszer és a futtatókörnyezet verzióját. Őrizze meg a tényleges hiba vagy követelmény pontos szövegezését.
- Ellenőrizze az adott modellhez tartozó gyártói referenciát, majd vizsgálja meg a tényleges képességet és az engedélyezett állapotot abban a környezetben, ahol a program fut.
- Vesse össze a kiválasztott bináris vagy háttérrendszer minden követelményét. Egy hasonló elnevezésű funkció, álnév vagy tág technológiai címke nem elegendő.
- Győződjön meg arról, hogy az alkalmazás a kívánt implementációt választotta ki. Használja annak dokumentált diagnosztikai eszközeit és egy támogatott tartalék megoldást, ha a követelmények nem teljesülnek.
- Egyszerre csak egy támogatott módosítást hajtson végre, és ismételje meg ugyanazt a munkaterhelést. Tartsa elérhetően az eredeti konfigurációt és a helyreállítási útvonalat.
Ha a funkció szerepel a listán, de a szoftver nem tudja használni
Kezdje a hibát jelző pontos komponenssel. A hardveradatbázis a rögzített képességet írja le; az operációs rendszer vagy a hipervizor ettől eltérő tényleges környezetet tehet elérhetővé. Az érvénytelen utasítás miatti hiba (illegal-instruction) esetén a ténylegesen hibát okozó utasítást és a bináris összeállítást is vizsgálni kell, mivel az adatsérülés vagy egy nem kapcsolódó, nem támogatott utasítás is hasonló tünetet produkálhat.
Telepítse az adott platformhoz támogatott alkalmazás-, illesztőprogram- vagy futtatókörnyezet-verziót, és szükség esetén használja a gyártó által dokumentált alapértelmezett vagy tartalék változatot. Egy szoftverfrissítés nem hozhat létre olyan utasítást, amellyel a processzor nem rendelkezik. A firmware- és biztonságipolitika-módosítások során a rendszer gyártójának eljárását és egy helyreállítási tervet kell követni egy általános optimalizálási recept helyett.
A magyarázat forrásai és hatóköre
Intel 64 and IA-32 Architectures Software Developer's Manual · Linux kernel: XSTATE funkciók használata a felhasználói térben
Ezek a hivatkozások az architekturális viselkedést és a szoftverkövetelményeket határozzák meg. Nem ellenőrzik függetlenül a hivatkozott hardvermodell oldalán található összes funkcióértéket. A modell támogatásához használja az adott oldal gyártói bizonyítékait, és ellenőrizze a tényleges rendszerkonfigurációt. Ez a cikk nem tartalmaz teljesítménytesztet, tanúsítást vagy független felülvizsgálati dátumot.
Források és ellenőrzés
Szerkesztői jogtulajdonos: Feex. Független felülvizsgálati dátum nincs rögzítve. Hogyan kutatunk.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Az 1. és 2. kötet a megnevezett utasításcsaládokat és a CPUID-t ismerteti; a 3. kötet az állapot-, lapozás-, VMX- és védelmi vezérlőket tárgyalja. Az architektúra-dokumentáció nem igazolja egy adott modell támogatását.
- Linux kernel: XSTATE funkciók használata a felhasználói térben · Operációs rendszer által engedélyezett vektorállapot, dinamikusan engedélyezett csempeállapot, jelverem-követelmények és AMX engedélyezési folyamat. A Linux-specifikus viselkedés nem jelent garanciát más operációs rendszerekre.
Hasznos volt ez a cikk?
Egy igen vagy nem is elég. Válasszon egy indokot, ha szeretne, vagy írjon egy rövid megjegyzést.
Köszönjük. Ez segít az oldal fejlesztésében.