Întrerupe și tipurile de întreruperi ale situațiilor speciale

Există mai multe tipuri de situații extraordinare. în care comportamentul procesorului este reglementat de reguli speciale. Astfel de situații apar atunci când este necesară o reacție urgentă la influențele externe, atunci când apare o eroare în timpul executării programului sau există posibilitatea obținerii unui rezultat inexact al calculelor.







  • Întreruperile și excepții (Întreruperile și excepții) - sunt detectate și procesate de către un procesor într-o varietate de ori și pot apărea atât din surse externe și interne, toate celelalte tipuri de situații excepționale ocupă nivelul inferior al ierarhiei și pot fi prelucrate numai în cazul în care prima va declara Existența sa printr-o întrerupere sau o situație specială.
  • Situații excepționale FPU (Excepții cu puncte plutitoare) - pot apărea numai când comenzile coprocesor sunt executate. Comenzi MMX sau comenzi 3DNow !. Apariția excepției FPU. la rândul său, poate duce la generarea unui semnal de întrerupere prin feed pentru terminale speciale externe procesor (așa numitele reacții în DOS-stil MS) sau situații speciale (mecanism procesor intern asigură generarea coprocessor eroare #MF), care se înțelege handler suplimentar celei care o excepție a apărut și ce acțiuni ar trebui luate în legătură cu aceasta (mai mult.).
  • Excepții SIMD (SSE) (Excepții SIMD floating-point) - se poate produce numai atunci când SIMD-comenzile și complet determinat de starea de procesor SIMD-registre. Excepțiile SIMD raportează apariția lor prin generarea unei situații speciale speciale # XM. După ce a primit controlul, managerul de situații speciale trebuie să determine cauza excepției prin software-ul însuși (mai mult.).

Întrerupe și situații speciale

Întreruperile și excepțiile sunt instrumente speciale care permit procesorului să răspundă repede la influențele externe și alte situații neașteptate. Atunci când se produce o întrerupere sau se generează o situație specială, execuția programului este întreruptă, iar controlul este transferat într-o procedură specială - un handler de întrerupere sau o situație specială. În cele mai multe cazuri, atunci când se termină procesarea unei situații de întrerupere sau a unei situații speciale, controlul poate fi returnat programului întrerupt, care va continua executarea acestuia din punctul în care a fost oprită. Procesorul salvează / restabilește automat contextul și starea pentru a oferi această capacitate.

Toate întreruperile și situațiile speciale au numere de identificare unice. Aceste numere sunt numite vectori de întrerupere și se află în intervalul de la 0 la 255. Vectorii 0 până la 31 sunt rezervați pentru situații speciale și o întrerupere care nu poate fi mascată. dintre care unele sunt rezervate și nu ar trebui utilizate de programe. VECTORELE 32 - 255 sunt gratuite pentru orice utilizare de către programele utilizatorilor și dispozitivele externe.







Există două surse de sosire întreruptă și trei tipuri de situații speciale. În plus, distingeți între sursele interne (software) și cele externe (hardware) de generare a întreruperilor și situații speciale.

  • Maskable întrerupere externă (Maskable Hardware Întreruperile) - declanșată de semnale externe de la procesorul de ieșire sau controler încorporat întrerupere (Advanced Programmable Interrupt Controler - APIC). Pentru procesoare care încep cu Pentium, controlerul APIC încorporat este cel mai des întâlnit mod de a gestiona întreruperile. În acest caz, concluziile LINT [1: 0] # sunt programabile prin intermediul unui controler APIC tabel vector local (LVT) care atribuie terminalul corespunzător pentru a primi orice fel de întreruperi. Dacă nu există un controler APIC încorporat în procesor sau este dezactivat, întreruperile mascate externe sunt primite la INTR #. În acest caz, numărul întreruperii primite trebuie transmis procesorului prin intermediul magistralei de sistem de către un controler special de întrerupere externă (de exemplu, cum ar fi 8259A). De obicei, construit APIC-controlerul de asemenea interacționează cu controlerul de sistem de întrerupere (I / O APIC), care poate primi o pluralitate de întreruperi din diverse surse, și transmite la procesor (e) informații despre primite întrerupe magistrala de sistem sau un APIC special autobuz dedicat (serial APIC autobuz). Dacă flagul de activare a întreruperii nu este setat (EFLAGS.IF = 0), întreruperile externe mascate nu sunt procesate. A fost menționat mai sus că vectorii de la 32 la 255 sunt utilizați pentru utilizarea întreruperilor mascate. Din punct de vedere tehnic, totuși, este posibil să se determine orice întrerupere mascată. care este primit la pinul INTR valoarea vectorului # procesor în intervalul de la 0 la 255, iar în cazul în care întreruperea recepției se prin intermediul built APIC-controller - în intervalul 16-255 (când încearcă să utilizeze vectori la 0 la 15 APIC-controller semnalizează vectorul de întrerupere incorectă ).
  • NMI extern (Nonmaskable Întreruperile extern) - luate la PIN-ul NMI # CPU sau autobuz intern APIC-controler de interdicție mecanism NMI nu este (nu sunt afectate de valoarea curentă de pavilion EFLAGS.IF). După ce a primit o solicitare pentru o întrerupere care nu poate fi mascată. procesorul transferă controlul asupra vectorului 2 și blochează recepționarea de noi cereri de întreruperi care nu pot fi mascate până când comanda IRET / IRETD este executată. Din punct de vedere tehnic, vectorul de întrerupere 2 poate fi, de asemenea, utilizat pentru a procesa întreruperile mascabile. dar numai metoda descrisă mai sus pentru primirea cererilor de întreruperi care nu pot fi mascate oferă un comportament special al procesorului atunci când le procesează.

Software-ul întrerupe și Excepții:

Tabelul 3.1. Tipuri de întreruperi și situații speciale

Tipuri de situații speciale și caracteristici ale procesării acestora

Situații speciale. Procesoarele generate de procesor sunt împărțite în trei tipuri - erori. capcane și eșecuri. În funcție de tipul de situație specială, reacția procesorului la apariția acestuia este diferită.

  • Defecțiunea este o situație specială. care poate fi rezolvată de către managerul de situații speciale. Când apare o eroare, starea procesorului este salvată așa cum a fost înainte de începerea comenzii care a inițiat generarea de eroare și valoarea CS: EIP. Comenzile care indică această comandă sunt stocate în teancul handler. Programul întrerupt după corectarea erorii poate fi continuat direct din comanda care a provocat această eroare.
  • Capcana (Trap) - o situație specială. care este generată după executarea comenzii corespunzătoare. În acest caz, valorile CS stocate în stivă sunt: ​​EIP. indica o comandă care urmează a fi executată în urma comenzii care a provocat capcana; de exemplu, dacă capcana a avut loc în timpul unei comenzi JMP. atunci valorile stocate CS: EIP indică comanda care a fost ținta comenzii JMP.
  • Abortul este o situație specială. care nu permite localizarea precisă a comenzii care a provocat-o și nu permite repornirea. Erorile sunt folosite pentru a raporta câteva erori, cum ar fi: disfuncționalități tehnice și prezența unor valori incorecte în tabelele de sistem.

Regulile de funcționare ale dispozitivului de tratare a întreruperilor și situațiile speciale depind în mod semnificativ de modul de operare al procesorului și de setările curente ale unor pavilioane din registrul CR4. Mecanismul însuși include următoarele elemente:

Tabelul 6.55. Metode pentru procesarea întreruperilor procesorului și a situațiilor speciale în diferite moduri de funcționare







Trimiteți-le prietenilor: