ĪNTRERUPERI
Unul din marile avantaje ale unui calculator fata de orice alta masina creata de om este aceea ca un calculator este capabil sa raspunda la un numar mare de sarcini imprevizibile. Cheia acestor posibilitati o constitie ceea ce numim "intreruperi".
Cu ajutorul lor calculatorul poate intrerupe o sarcina pe care o executa si sa o comute pe o alta ca raspuns la intreruperea intervenita (cum ar fi de exemplu apasarea unei taste sau primirea unui fax prin modem !). Acest mecanism face ca sistemul de calcul sa fie foarte flexibil permit nd un raspuns imediat la un eveniment extern prin intreruperea sarcinii curente si reluarea acestei sarcini dupa ce s-au rezolvat cerintele impuse de acest eveniment extern.Notiunea de īntrerupere presupune īntreruperea programului in curs de executie si transferul controlului la o anumita rutina de tratare a intreruperii, rutina numita "rutina de gestiune a intreruperii".Mecanismul dupa care se face acest transfer este in esenta de tip apel de procedura, ceea ce inseamna ca se revine in programul intrerupt din locul unde acesta a ramas dupa ce s-a terminat rutina de intrerupere. Acest mecanism a fost explicat succint in cap.2. in cadrul paragrafului "controlerul de intrerupere". n continuare vom dezvolta acest subiect prezentīnd noi aspecte .
5.1. Īntreruperi hardware si software
Clasificarea intreruperilor se poate face dupa mai multe criterii. Una din aceste clasificari este prezentata īn fig.5.1.
Fig.5.1
Intreruperile software apar in urma executiei de catre mP a unor instructiuni cum ar fi INT, INT , DIV, IDIV, softul fiind deci cauza lor.
Intreruperile hardware externe sunt provocate de semnale electrice care in ultima instanta sunt aplicate pe intrarile INT si NMI ale mP.
Intreruperile hardware interne apar ca urmare a unor conditii speciale ale procesorului (cum ar fi executia pas cu pas in cazul depanarii programelor).
Intreruperile externe dezactivabile se aplica pe intrarea INT si sunt luate in cosiderare numai daca bistabilul IF (intrerupt Flag) din registrul indicatorilor de conditie = 1.
Intreruperile externe nedezactivabile au loc la aplicarea unui semnal corespunzator pe intrarea NMI (Non Mascable Interrupt) si sunt luate in considerare intotdeauna (ex: caderea tensiunii de alimentare).
Aceste intreruperi sunt controlate de unul (la PC original) sau mai multe circuite specializate (la AT si celelalte calculatoare) numite controler de intreruperi de tipul Intel 8259. Acest circuit are menirea de a culege cereri de intrerupere de la mai multe dispozitive, sa stabileasca eventual o prioritate daca exista mai multe cereri de intrerupere simultane si n final sa transmita un semnal de intrerupere pe pinul INT al mP si un semnal de identificare a dispozitivului periferic care a facut cererea.
Fig.5.2. ilustreaza a schemei de intreruperi a mP 8088 folosita n calcutoarele PC. La calculatoarele care au urmat PC (AT, 386, etc) se folosesc asemenea controlere de intrerupere legate in cascada dupa cum se observa din figura 5.2.
Daca la una din liniile IRQ0 - IRQ7 (IRQ = intrerupt Request) si liniile IRQ8 - IRQ15 pentru AT se primeste o intrerupere de la un dispozitiv periferic (s-a apasat o tasta, pe interfata seriala legata la modem a sosit un fax, trebuie sa se faca un ciclu de refresh la memorie, etc.) acest semnal este analizat de controlerul 8259 si in final acesta va genera o
Fig. 5.2
intrerupere pe linia INT catre mP. Daca in mP bistabilul IF = 1 (adica intreruperile hardware externe, sunt activate), mP va trimite inapoi controlerului un semnal INTA (interrupt Acknowlege-recunoastere intrerupere) prin care il anunta ca intreruperea este recunoscuta si acceptata. In continuare, controlerul de intrerupere va depune pe busul de date un octet care va identifica typul intrerupere (nivelul intreruperii). Controlerul de intrerupere 8259 av nd 8 intrari pentru intreruperi de la echipamente va putea sa trimita 8 valori diferite, fiecare indentific nd unic una din cele 8 intrari. Se mai spune ca controlerul poate furniza 8 vectori de intreruperi identificati prin octetul typ iar sistemul de intrerupere la mP 8088 este un sistem de intrerupere vectorizat.
Cum cu un octet (8 biti) se pot efectua 256 de combinatii diferite vor putea exista 256 de valori diferite ale octetului typ de intrerupere. Deci intr-un sistem cu mP 8088 pot exista maxim 256 de nivele de intrerupere diferite. Pentru fiecare nivel (valoare a octetului typ) se poate asocia o procedura (rutina sau subprogram) de deservire a intreruperii respective. Deci maxim 256 de proceduri.
Adresele acestor rutine sunt trecute intr-o asa zisa tabela de intreruperi care se afla memorata in memorie RAM in primii 1024 de octeti (1 octet). Datorita faptului ca fiecare rutina de intrerupere se poate afla in segmente diferite pentru a identifica adresa unei rutine trebuie sa-i furnizam adresa de segment (CS) (2 octeti) si adresa ofssetului (IP) ( nca 2 octeti) deci o adresa va ocupa 4 octeti. Cum sunt 256 de posibile intreruperi 256 x 4 = 1024 octeti = 1K.
Se observa deci ca apelul este de tip FAR adica salt intersegment. In fig. 5.3. se da o reprezentare a modului in care este ocupata memoria sistemului cu tabela aceasta de adrese. Deoarece fiecare grupa de 2 cuvinte (4 octeti) desemneaza o adresa de memorie unde se gaseaste rutina pentru o intrerupere tabela se mai numeste "tabela vectorilor de īntreruperi".
Amplasarea adresei subrutinei de īntrerupere īn tabela se realizeaza in functie de octetul typ care da nivelul de intrerupere.
Fig.5.3.
Am vazut ca acest octet poate lua 256 de valori.
Formula <Octetul typ *4 >
(adica se inmulteste de doua ori cu baza 2 ceea ce se traduce prin adaugarea a doi de zero octetului typ )va furniza adresa din memorie unde se gaseste vectorul de intrerupere (adresa rutinei de intrerupere) pentru nivelul furnizat de octetul typ.
La aparitia unei intreruperi in mP au loc urmatoarele actiuni:
se salveaza in stiva registrele FLAGS, CS si IP in aceasta ordine.
se sterg bistabilii IF si TF (adica se blocheaza executia unei alte intreruperi in timpul executiei programului pentru intreruperea in curs iar TF blocheaza executia pas cu pas a rutinei de intrerupere).
se furnizeaza mP un octet (8 biti in gama 0 - 255) numit si octet typ care identifica nivelul asociat ntreruperii.
se executa salt indirect intersegment la adresa de nceput a rutinei detratare a intreruperii folosind tabela de ntreruperi de unde se incepe executia programul corespunzator rutinei de tratare a intreruperii.
Fiecare componenta a calculatoruluii care poate sa aiba nevoie de mP la un moment dat are propriul sau nivel de ntrerupere. Tastatura, ceasul intern, unitatile de disc, imprimantele, placa de retea etc., toate acestea au fiecare un nivel de ntrerupere rezervat. La apasarea unei taste se genereaza intreruperea de tastaura, de 18 ori pe secunda CPU este oprit derularea programului si se deruleaza o rutina de ceas care actualizeaza ceasul intern, discul trimite o intrerupere c nd este terminat un transfer iar imprimanta c nd nu are h rtie, placa de retea c nd primeste un pachet de date, adresat ei, etc. Deci observam ca activitatea mP se desfasoara intr-o vesnica posibilitate de a fi, "intrerupta" de altcineva care are mai mare nevoie de mP dec t aplicatia ce ruleaz
Interesant este ca intreruperile nu au facut parte din conceptul primelor calculatoare. La inceput calculatoarele au fost folosite fara acest mecanism de intrerupere. Astazi este greu de imaginat un calculator fara sistem de intreruperi implementat in cadrul sau hard si soft.
Conceptul de intrerupere s-a dovedit at t de eficient si util inc t a fost adaptat la o mare varietate de alte necesitati ale calculatorului. Pe l nga intreruperile hardware despre care tocmai am vorbit exista si intreruperi care sunt generate in interiorul CPU ca urmare a faptului ca s-a intamplat ceva ce nu are sens- de exemplu s-a incercat o impartire prin zero. In acest caz se genereaza o intrerupere interna de exceptie.
Īntreruperi software
Aceasta categorie de intreruperi nu apare pe neasteptate ca cele hardware descrise anterior. Ideea care sta la baza intreruperilor s-a dovedit at t de eficienta si productiva inc t acestea, (intreruperile) au inceput sa fie utilizate in cadru programator pentru a solicita servicii executate de alte programe din calculator. Acest tip de intreruperi se numesc intreruperi soft. Dupa cum am vazut, atunci c nd se construieste un PC exista un set de programe interne integrate continuate intr-o memorie ROM (Read Only Memory) si care formeaza asa zisul BIOS. Daca programele de aplicatii au nevoie de functii oferite de BIOS modul de apelare a acestora il constituie intreruperile soft.
Serviciile BIOS sunt puse la dispozitia programului de aplicatie prin executia unei instructiuni de intrerupere soft de tipul INT n unde n reprezinta nivelul de intrerupere solicitat. Intreruperile soft functioneaza la fel ca si celelalte tipuri de intrerupere cu o singura diferenta. Ele nu sunt declansate de un eveniment neasteptat sau aleatoriu ci sunt produse intentionat de catre program cu un anumit scop.
Sistemul de operare DOS care a fost primul SO implementat pentru PC foloseste de asemenea intreruperi software pentru apelul unor functii necesare derularii programelor de aplicatie sub directul sau control.
Aceste functii BIOS sau DOS apelate prin intermediul intreruperiolor software sunt tratate de catre procesor ca subprograme care dupa ce se termina redau controlul programului apelant.
Programul care face apel la o functie DOS sau BIOS nu are nevoie sa cunoasca adresa de memorie a subrutinei corespunzatoare ci este suficient sa indice numarul intreruperii alocate acelei functii si eventual parametrii auxiliari, necesari functiei. Aceste intreruperi sunt standardizate. Astfel de exemplu, serviciile si functiile DOS sunt asigurate toate cu ajutorul intreruperii 21H.
Literatura si documentatia descriu aceste functii si modul lor de apel.
Vom mai face c teva observatii asupra modului de functionare a intreruperilor intr-un PC.
Ultima instructiune dintr-o subrutina de intreruperi este instructiunea IRET (interrupt Return) care are rolul de a restaura in ordine inversa ceea ce a fost salvat in stiva adica IP, CS si registrul Flags red nd controlul programului principal.
Daca rutina de intreruperi lucreaza cu registrii procesorului si distruge valorile continute in acestea, revine in grija programatorului ca acest continut registrilor distrusi sa fie eventual salvati explicit in stiva prin instructiuni de tip PUSH la inceputul subrutinei de intrerupere iar la sf rsit, inainte de terminare sa fie refacuti acesti registri prin instructiuni POP corespunzatoare. Astfel programul care a fost intrerupt i-si reia lucrul cu valorile care erau in acel moment in registrii procesorului.
Dupa cum am vazut imediat ce s-a declansat o intrerupere indicatorul IF este trecut pe 0 ceea ce inseamna ca intreruperile hard care pot surveni in acel moment sunt dezactivate. De aceea este bine ca sa se foloseasca c t mai repede o instructiune de tip STI (set intrerupt) care "armeaza" (activeaza) din nou sistemul de intreruperi - bineinteles daca programul rutinei de intrerupere nu executa o portiune in care nu are voie sa fie intrerupta.
Tabela vectorilor de intreruperi dupa cum am vazut este plasata in memoria RAM deci cea in care se poate sterge si inscrie alta valoare !). Aceasta face ca eventual adresele rezervate in ea pentru desemnarea subrutinelor de intreruperi sa fie schimbate chiar de unele programe si eventual utilizatorii sa-si scrie propriile programe pentru tratarea unei intreruperi sau mai multe. Este exact ceea ce fac asa zisele programe TSR,(Terminate and Stay Residente) care se instaleaza in memorie si ram n instalate p na la o comanda explicita pentru eliberarea memoriei. Acestea modifica adresa rutinei de tastatura din tabela, filtr nd toate caracterele care se introduc la tastatura. Atunci c nd combinatia de taste pentru activare este identificata in sirul de caractere introduse la tastatura programul din memorie, care "dormita" este activat si si executa sarcina pentru care a fost scris. La scrierea unor asemenea programe trebuie cunoscuta bine arhitectura si sistemul de operare exist nd pericolul ca eventual sistemul sa se blocheze.
Aceasta poarta de intrare in sistemul de operare prin intermediul intreruperilor este folosita si de unele programe "rauvoitoare" cum ar fi "virusii" , " cal trojan" ,etc. Aceste programe se zice ca "fura" o intrerupere adica isi introduc in tabela de intrerupere in locul adresei normale -pentru apelul intreruperii de disc dur sau pentru un alt echipament- propria lor adresa de apel!. La declansarea normala a intreruperii de disc se lanseaza acest program "pirat" care poate eventual poate cauza o formatare a discului dur -ceea ce poate avea un efect catastrofal asupra integritatii datelor in PC-sau o alta activitate cu caracter nociv pentru executia normala a progrsamului. Pe c t de puternic este sistemul de intreruperi in activitatea unui pocesor pe at t de mare poate fi pericolul folosirii necorespunzatoare a acestuia de catre persoane rau intentionate.
Sistemele de operare mai noi (Windows NT, Windows2000, WindowsXP,Linux, OS/2) limiteaza accesul la partea de hard tocmai din aceasta cauza. Programele de aplicatie lucreaza pe procesoarele noi intr-un mod "utilizator" in care nu pot accesa direct hardul .Accesul la hardware se face numai prin intremediul sist. de operare si eventual trebuie sa ai drepturi de administrator sau sau root -procesorul in acest caz este trecut din modul utilizator in modul system cu acces la toate functiile - pentru ca sa de poata accesa functiile speciale ale echipamentelor. Īn felul acesta orice incercare care ar putea sa produca daune in sistem si ar veni din partea unui utilizator obisnuit sau rau intentionat este blocata si sistemul devine mai sigur in exploatare .
Procesoarele Intel din seria x86 fac parte din asa zisele procesoare CISC (Complex Instruction Set Computer - calculator cu set complex de instructiuni).
Acestea sunt procesoare la care setul de instructiuni cuprinde un numar mare de operatii implementate. Totodata acestea se pot executa cu operanzi a caror adresa poate cere timp p na se calculeaza si dupa aceea se executa instructiunea propriu-zisa. S-a vazut inca incep nd chiar de la calculatoarele mari (mainframe) a anilor 1950 ca, executia operatiilor simple cu operanzi in registrii iau mai putin timp de calcul. In plus odata cu dezvoltarea softului de aplicatii si prin studii statistice efectuate de companii ca IBM s-a demonstrat ca instructiunile complexe din procesoarele CISC sunt rareori folosite prefer ndu-se folosirea a c torva instructiuni simple in locul uneia mai complexa. Astfel 10% din setul de instructiuni a unui procesor CISC sta la baza a peste 90% din totalul codului generat de un compilator ca PASCAL-ul. Cercetarile s-au indreptat spre proiectarea unor procesoare cu instructiuni mai putine, cu multi registri si memorie imediata in care sa fie retinute datele temporare precum si cu viteza mai mare. Astfel asa zisele procesoare RISC (Reduced Instruction Set Computer - Calculator cu Set Redus de instructiuni).
Acestea s-au dezvoltat imediat ce tehnologia a permis obtinerea de memorie ieftina
Simplitatea setului de instructini, modul de adresare mai simplu care necesita un singur acces la memorie principala intr-un sungur impuls de ceas si executia instructiunilor in structuri de tip pipeline au permis proiectarea unor unitati de executia superscalare care permit executia mai multor instructiuni simultan. Aceasta au dus la succesul structurilor de tip RISC, care s-au impus alaturi de cele mai vechi de tip CISC. In ultimii 15 ani nu s-au mai proiectat noi structuri CISC.
Simplitatea structurilor RISC, nevoia mai putina de siliciu si deci posibilitatea de integrare pe cip a unor memorii si unitati de executie multiple au facut ca acestea sa fie mai performante dec t cele de tip CISC.
Procesoarele noi din seria X86 folosesc n structura lor tehnici RISC ele nsa pastr nd vechea structura CISC. Acest set de instructiuni complex face ca softul mai vechi sa fie completibil si pe cele actuale. Daca doriti un calculator cu procesor RISC s-ar putea sa nu beneficiati de tot softul care s-a scris. pentru procesoarele CISC de pe PC.
Procesoare reprezentative de tip RISC sunt "SPARC" "MIP" si "ALPHA RISC". Sistemul de operare mai nou Windows NT poate lucra multiplatforma adica pe procesoare CISC si RISC pe c nd Windows '98 este disponibil numai pe platforma CISC adica x86.
Procesoarele DSP (Digital Sygnal Processor)
Dupa cum spune si numele - (Procesor de Semnal Digital) este proiectat special pentru a controla semnalele analogice int lnite n lumea reala si care au fost convertite n semnale numerice (digitale). Se folosesc pentru sinteza sunetelor , modemuri, comprimari de semnale video si audio, acceleratoare grafice 2D si 3D precum si prelucrari video. In ele sunt integrate tehnologii avansate de prelucrare ,specifice procesoarelor moderne -arhitecturi SIMD sau MISD - . Viitorul cu toate aplicatiile sale multimedia vor face ca acestea sa ocupe un loc important n viitoarele arhitecturi de calculatoare si sisteme de calcul ptr. calculatoarele " de acasa" !
Īntrebari la cap. 5
La ce se refera notiunea de īntrerupere la un sistem PC ?
Dati un mod de clasificare a īntreruperilor īntr-un sistem PC .
Cīnd vorbim de īntreruperi software la un sistem de calcul PC ?
De cine sunt provocate īntreruperile hardware externe la un calculator PC ?
Cine provoaca īntreruperile hardware interne la un PC ?
Care este rolul unui controler de īntreruperi de tipul i 8259 ?
Cine permite sa fie acceptate īntreruperile hardware externe 8sa fie active ) ?
Care este scopul octetului typ trimis de controlerul de īntreruperi la acceptarea unei īntreruperi externe ?
Cāte nivele de īntrerupere pot exista īntr+un sistem PC si de ce atātea ?
Unde se gaseste plasata tabela vectorilor de īntrerupere la un PC ?
Cum se determina adresa īn tabela a vectorului de īntrerupere ptr un nivel dat de īntrerupere ? ( de exemplu īntreruperea 21h) .
Cine provoaca īntreruperile software īntr-un PC ?
La ce sunt folosite īntreruperile software ?
Īn noile sisteme de operare (bazate pe tehnologia NT ) este permis utilizatorului accesul la gestiunea īntreruperilor ?
Ce sunt procesoarele de tip CISC ?
.Ce sunt procesoarele de tip RISC ?
Ce sunt procesoarele DSP ?
|