A utasításkészlet (utasításkészlet)
SSE, SSE2, SSE3 és a korszerű AMD processzorokkal.
Az utasításkészlet a modern processzorok x86 utasításkészlet magában foglalja az összes korábbi generációk. Utasítás osztható által használt alkalmazások „hasznos” alkalmazások és rendszerek által használt operációs rendszert hozzon létre olyan környezetet, amelyben alkalmazások futnak. Ábra. 7.2 ábra a csoport utasítások x86 processzorok a sorrendben jelennek meg a különböző generációk és modellek processzorok. A jelenléte a részhalmaza utasítások zárt ovális, lehet azonosítani a zászlók építészeti kiterjesztéseket kell, a CPUID utasítást.
Ábra. 7.2. Az utasításkészlet a modern processzorok x86
Alkalmazás utasításokat lehet osztani több csoportra (a képen csoportban
kombinált pontozott vonalak).
általános célú utasításokat - az alap egész x86 utasítások által használt szinte minden programból. Ezek az utasítások töltik, tárolni és feldolgozni az adatokat található általános célú regiszterek és a memória. Része az utasítást használjuk sorrendjét megváltoztatni végrehajtás - nyilatkozat a feltételes és feltétlen ágak eljárás hívások. Az alapvető általános célú utasításokat hajtanak végre az összes x86-alapú (kivéve néhány rendeletek, amely meghatározható
7.2. A programozási modell modern x86 processzorok
Mosolygó keresztül CPUID utasítás). Utasítás 64 bites módban (hosszú mód útmutató)
meg csak a processzorok 64 bites kiterjesztéseket, és azokat kizárólag az adott módot.
Utasítások x87 lebegőpontos munka FPU, ezeket használják a régebbi alkalmazásokhoz, amelyek pontos számításokat. Megjegyzendő, hogy ezek az utasítások különböző adatformátumait lebegőpontos (FP-szám): 80 bit - kiterjesztett pontosságú 64 bites - dupla pontosságú 32 bites - egyszeres pontosságú. Ugyancsak támogatja a BCD, és átalakítja formátumokat. 80 bites FP-formátum biztosítja a maximális pontosságot és maximális számtartománnyal fedett. X87 utasításkészletet fokozatosan bővült, megjelent P6 utasítások feltételes transzferek, amelyek csökkentik a fiókok száma a program.
64bit bővítmények média utasítások működnek található adatok 64 bites MMX regiszterek. Ezek végrehajtunk integer műveletek és egy lebegőpontos számítás a skalár és vektor megvalósítási módok, média alkalmazások és a szánt dolgozik adatblokkok. Vector integer utasítást jelent meg az eredeti szett MMX. összetételük bővült utasításokat AMD Extension MMX és SSE utasításkészletet rész (bevezetett Intel). Vector lebegőpontos utasítások megjelent 3DNow. a kitűzött bővült AMD Extensions 3DNow! Utasításokat.
128-bites média utasításokat működik adatok található 128-denevérek - KORMÁNYZATI XMM regisztrálja. Ezek végrehajtunk integer műveletek és egy lebegőpontos számítás skalár (egy készlet operandusok) és a vektor (több készletek, SIMD elv) kiviteli alakok. Ezek az utasítások a high-end média és a tudományos alkalmazások adatokkal dolgoznak blokkokat. A streaming expanziós SSE meghatározott utasításokat egyszeres pontosságú lebegőpontos (32 bites) SSE2 bevezetett használati kétszeres pontosságú (64 bites) SSE3 bevezetett 13 további utasításokat (144 meglévő a SSE és SSE2), beleértve SIMDinstruktsii FP-számok kettős precíziós számok, valamint a memória kezelése és a cache utasításokat.
Számos utasítások közötti hidak a fenti csoportok. Ők biztosítják az adatátvitelt blokkok MMX és XMM regiszterek gyakori. Egy sor utasítást (mint például egész vagy lebegőpontos) végezhet mind blokkok MMX (és FPU), és XMM blokkokban.
Rendezvény- megszakítások és kivételek
Megszakítás (interrupt) és kivételek (kivétel), a továbbiakban együttesen események (event), zavarja a normális a program végrehajtását a feldolgozás külső események vagy jelző előfordulása különleges feltételek vagy hiba. Szerint egy eseményt feldolgozó tárolja a stack regiszter (E) Zászlók mutató és a CS: (E) IP az utasítást, hogy el kell végezni, miután az esemény kezelésére. Ez az utasítás lesz a következő, amelynek során a végrehajtását az esemény bekövetkezett, vagy ugyanaz. a védő
7. fejezet processzorok
schennom módban, amikor számos kivételt a verem még mindig fennmaradt, és a kódot
hiba. Tárolása után ezeket az értékeket a processzor továbblép végrehajtását az eseménykezelő kód, amely meghatározza egy belépési pont bele egy számot (0-255) a megszakítás táblázatban. cikkszám a megszakításvektorok táblázat nevezzük megszakítást. ez határozza meg a forrást az esemény. Az eseménykezelő kell végződnie egy speciális visszatérési utasítás IRET, amely szerint a stack pointer visszaállításra CS: (E) IP és az előző érték zászlókat. Kivételekről, tárolják, és egy hibakódot, a felvezető előtt IRET utasítást, hogy távolítsa el a verem hibakódot.
Négyféle események:
♦ Kivételek (belső interrupt) processzor és egy koprocesszor, a vektor típusa határozza meg egy múltbeli esemény.
♦ külső nonmaskable megszakítási NMI bemeneti vektort rögzített (01).
♦ alá söpört külső megszakítás INT (vagy APIC busz) belépési vektort megszakítás vezérlő továbbítjuk. Processzor reakció gátolható (vagy inkább, késleltetett) visszaállító flag IF (processzor reagál egy megszakítás függőben lévő, amikor a HA jelző be van állítva).
♦ Software okozott megszakításvektorok határozza meg a csapat.
Kivételek (belső interrupt) a feldolgozó által generált esetén különleges feltételek végrehajtásának az aktuális utasítás. Legtöbbjük nem annyira az aszinkron annyira váratlan, hogy a programkódot. vektor száma határozza meg a processzor eredetétől függően a kivétel. Kivételek három csoportba sorolhatók.
♦ hiba (hiba) - kivétel előtt bekövetkezett utasítás végrehajtása, ha a processzor észleli a hibát, a végrehajtás; állapotban a gép nem változott. A sikertelen közé tartozik például, hogy megkísérelje elérni a memória a hiányzó oldal (használt virtuális memória).
♦ csapda (trap) - kivételt származó utasítások végrehajtását (például nullával osztás), és a gép állapotát az intézkedés alapján utasításokat megváltozik.
♦ hiba (megszakítás) - kivéve, amelyekre lehetetlen pontosan meghatározni, adott okot, hogy az ő utasításai (és lehetetlen kijavítani a cselekvés, hogy továbbra is). Ezek a kivételek közé tartozik egy dupla hiba (kivéve
7.2. A programozási modell modern x86 processzorok
A feldolgozás kivételével) és a kizárási a gép vezérlő eszközök
Maskable külső megszakítási feldolgozásával a jelet a INT bemenet csak akkor, ha a megszakítás engedélyező flag IF.
NMI feldolgozó által feldolgozott függetlenül az állam IF megszakítás engedélyt zászló. Viselik azokat megszakítás jön sorban NMI (Non-maszkolható megszakítást), valamint a feldolgozók, amelyek támogatják a rendszer kezelési mód, és még a SMI # vonal (System Management Interrupt).
Minden szám (0-255) megfelel a megszakítás vagy kivételt elem a megszakítás leíró táblázat (Interrupt Leírótábla, IDT), amely úgy értelmezendő függően a processzor módban.
Védett módban táblázat tartalmazza IDT 8 bájtos megszakítás leírásait.
Meg lehet tárolni 32-256 jellemzők és bárhol fizikai memória. Descriptors lehet átjárók. vagy kapukat (), szakítsa meg, csapdát, vagy feladat. Átjárók megszakítások és csapdákat használnak hívás feldolgozási eljárások elhelyezni a leírt szegmenseket a leírók. Ezek az átjárók védelmet nyújtanak az irányítás átadása: a processzor átadja a vezérlést a felvezető csak bizonyos arányok kiváltságokat megszakadt kódot, a felvezető és a leíró kiváltság kódot. megszakítás kezelő kódot nem lehet kevesebb, mint kiváltságos kódot megszakított feladat (egyébként munkavédelmi kivétel). Ha kezelés megszakítása végezzük magasabb jogosultsági szint, a processzor automatikusan a stack (ez több időt töltött a memória hozzáférés). Megszakítás (beleértve a hardver) is lehetséges, és kapcsolási feladatokat a megszakítás leíró kell lennie egy átjáró probléma.
A 64 bites módban (hosszú üzemmód) kezeli egy új, 16-os szerkezet, és itt más szabályok a verem kapcsolót. Ezen túlmenően, ez az alkalmazás nem végez hardver kapcsolására.
Kizárása mellett (belső interrupt) Intel processzorok fenntartva vektorok 0- 31 IDT asztalon, de az RS részük átfedi csapdák - a BIOS és a DOS, valamint a hardver megszakításokat. Ezek a padlók különösen fontos a védett mód; ők bonyolítják a megszakítás kiszolgáló rutin.
Az elején minden kezelés (beleértve a szoftvert) megszakítja a processzor automatikusan visszaállítja a megszakítást engedélyező zászló IF. A feldolgozási eljárás befejezése használati IRET, amelyen a verem automatikusan mentésre regiszterek helyreállított (rekonstruált nyilvántartásból az interrupt flag megengedett), és a processzor elkezdi végrehajtani az utasítást követve, amelyik azután kerül végrehajtásra megszakítást. Természetesen a program idején szolgáltatás megszakítása lehet szándékos vagy véletlenszerű mérhető