A megszakítások és a különleges helyzetek megszakítják a típusokat

Számos rendkívüli helyzet létezik. amelyben a processzor viselkedését speciális szabályok szabályozzák. Ilyen helyzetek akkor merülnek fel, ha sürgősen reagálnak a külső hatásokra, ha hiba történik a program végrehajtása során, vagy lehetőség van arra, hogy a számítások pontatlan eredményt kapjanak.

  • Megszakítások és kivételek (megszakítások és kivételek) - érzékeli és dolgozza fel a processzor a különböző idők és előfordulhat mind a külső és belső források, minden más típusú rendkívüli helyzetek elfoglalni az alsó szinten a hierarchia és lehet feldolgozni, ha az első akkor nyilvánítja Megléte megszakítás vagy különleges helyzet miatt.
  • Kivételek FPU (lebegőpontos kivételek) - csak akkor fordul elő, amikor egy koprocesszor utasítás. MMX parancsokat vagy 3DNow! Parancsokat. Az FPU kivétel megjelenése. viszont okozhat a generációs egy megszakítás jelet a takarmány speciális külső processzor terminálok (úgynevezett reakciót az MS-DOS-style) vagy speciális helyzetekre (belső processzor mechanizmus biztosítja generációs társprocesszor hiba #MF), amely maga is megérti kezelőt továbbá annak, amelyet kivétel történt, és milyen lépéseket kell tenni ehhez (többet).
  • Kivételek A SIMD (SSE) (SIMD lebegőpontos kivételek) csak akkor fordulhat elő, ha a SIMD parancsok végrehajtásra kerülnek, és teljesen meghatározzák a processzor SIMD regisztereinek állapotát. A SIMD kivételek a különleges XM speciális helyzet létrehozásával jelentik az eseményeket. Miután megkapta a kontrollt, a különleges helyzetkezelőnek meg kell határoznia a kivétel okát maga a szoftverrel (több).

Megszakítások és különleges helyzetek

A megszakítások és kivételek olyan speciális eszközök, amelyek lehetővé teszik a processzor számára, hogy gyorsan reagáljon a külső hatásokra és más váratlan helyzetekre. Amikor egy megszakítás történik, vagy egy speciális helyzet keletkezik, a program végrehajtása megszakad, és a vezérlés átkerül egy speciális eljárásra - egy megszakításkezelőre vagy egy speciális helyzetre. A legtöbb esetben, amikor egy megszakítás vagy különleges helyzet feldolgozása befejeződik, a vezérlő visszakerülhet a megszakított programba, amely a megszakítás időpontjától folytatódik. A processzor automatikusan menteni / visszaállítja a kontextust és az állapotot, hogy ezt a képességet biztosítsa.

Minden megszakítás és különleges helyzet egyedi azonosító számmal rendelkezik. Ezeket a számokat megszakító vektoroknak nevezzük, és 0 és 255 közötti tartományba esnek. A 0 és 31 vektorok különleges helyzetekre és nem maszkolható megszakításokra vannak fenntartva. amelyek közül néhányat fenntartanak, és nem használhatók a programok. A 32-től 255-ig terjedő vevők szabadon felhasználhatók felhasználói programok és külső eszközök számára.

A megszakítás érkezésének két forrása és a speciális helyzetek három típusa van. Ezenkívül különbséget kell tenni a belső (szoftveres) és a külső (hardver) megszakítási generációs források és a különleges helyzetek között.

  • Külső maszkolható megszakítást (Maskable hardver megszakítások) - által kiváltott külső jelek kimeneti processzor vagy a beépített vezérlő megszakítás (Advanced Programmable Interrupt Controller - APIC). A processzorok, mivel a Pentium APIC ágyazott vezérlő a leggyakoribb módszer a megszakítások kezeléséhez. Ebben az esetben a következtetések LINT [1: 0] # programozható keresztül helyi vektort táblázatot (LVT) APIC vezérlő, amely hozzárendeli a megfelelő terminál fogadására bármilyen megszakítások. Ha a beépített vezérlő a processzor APIC sem, vagy ki van kapcsolva, akkor a külső maszkolható megszakításokat elfogadott pin INTR #. Amikor ez a szám a bejövő megszakítást kell továbbítani, hogy a processzor a rendszeren keresztül buszon speciális külső megszakítás vezérlő (például, mint például 8259A). Jellemzően a beépített APIC-vezérlő is együttműködik a rendszer megszakítás-vezérlő (I / O APIC), amely képes fogadni több megszakítások különböző forrásokból származó, és továbbítja a processzor (ok) tájékoztatás a kapott megszakítja a rendszer busz, vagy egy különleges dedikált busz APIC (APIC soros busz). Ha a megszakítás engedélyező flag nincs beállítva (EFLAGS.IF = 0), a külső maszkolható megszakításokat nem kerülnek feldolgozásra. Már említettük, hogy használatra szánt maszkolható megszakítási vektorok 32-ről 255-Technikailag azonban azonosítani lehet bármilyen maszkolható megszakítást. amely érkezett pin INTR # processzor vektor értéke tartományban 0-tól 255, és ha a vétel megszakítás történik a beépített APIC-vezérlő - a tartomány 16-255 (amikor megpróbálják használni vektorokat 0-15 APIC-vezérlő jelzi a hibás megszakítási vektort ).
  • Külső NMI (Nonmaskable külső megszakítások) - hozott pin NMI # CPU vagy a belső busz APIC-szabályozó mechanizmus tilalom NMI nem (nem érinti az aktuális értéket EFLAGS.IF zászló). Miután megkapta a nem maszkolható megszakítás iránti kérelmet. A processzor átadja a vezérlést a vektor 2 és blokkolja a recepción új kérelmek NMI amíg végrehajtás IRET / IRETD csapat. Technikailag megszakítási vektort 2 lehet használni obrabtki maszkolható megszakító. de az eljárást az nonmaskable megszakításkérelmeket fent leírt nyújt különösen viselkedését a processzor a feldolgozás során.

Szoftverek megszakítása és kivételek:

3.1. Táblázat. A megszakítások és a különleges helyzetek típusa

A különleges helyzetek és azok feldolgozásának jellemzői

Különleges helyzetek. A processzor által generált processzorok háromféleképpen oszlanak meg: hibák. csapdák és kudarcok. A speciális helyzet típusától függően a processzor reakciója az előfordulására eltérő.

  • A hiba különleges helyzet. amelyet a különleges helyzetkezelő rögzíthet. Hiba esetén a processzor állapota mentésre kerül, ahogyan a hiba generálásának indításakor kezdődött, és a CS: EIP értéket. Az ezt a parancsra mutató parancsokat a kezelői verem tárolja. A megszakított program a hiba kijavítását követően közvetlenül a parancsot okozhatja, amely ezt a hibát okozta.
  • Trap (Trap) - egy különleges helyzet. amely a megfelelő parancs végrehajtása után keletkezik. Ebben az esetben a stackben tárolt CS értékek: EIP. jelezzen egy parancsot, amelyet a csapdát okozó parancs után kell végrehajtani; például, ha a csapda JMP parancs alatt történt. akkor a tárolt CS: EIP értékek jelzik azt a parancsot, amelyik a JMP parancs célja.
  • A megszakítás különleges helyzet. amely nem teszi lehetővé a parancs pontos elhelyezését, és nem teszi lehetővé az újraindítást. A hibák a hibák bejelentésére szolgálnak, például: technikai hibák és helytelen értékek jelenléte a rendszertáblákban.

A megszakításkezelő működésének szabályai és a különleges helyzetek jelentősen függenek a processzor működési módjától és a CR4 regiszterben lévő egyes jelzők aktuális beállításaitól. Maga a mechanizmus magában foglalja a következő elemeket:

6.55. Táblázat. A processzor megszakításainak feldolgozása és a különleges helyzetek különböző üzemmódokban történő feldolgozása