2,208 matches
-
prin simplitate. Este recomandat de folosit atunci când sistemul are suficient timp pentru a îndeplini sarcinile cerute de aplicația în cauză. Există două modalități de transfer a datelor prin program: transferul direct și transferul prin interogare. Transferul direct presupune doar ca procesorul să scrie sau să citească din portul respectiv, fără a fi necesar a verifica dacă perifericul a încheiat operațiunea precedentă. Accesul poate fi realizat doar la început în timpul inițializării unui periferic, sau poate fi realizat în mod repetat în timpul rulării
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
realizat doar la început în timpul inițializării unui periferic, sau poate fi realizat în mod repetat în timpul rulării programului (în faza de proiectare și testare a unor aplicații). După cum îi spune și numele transferul prin interogare presupune interogarea perifericului (polling) de către procesor pentru a afla dacă acesta poate primi sau dacă are disponibile date. Interogarea se face după o schemă prevăzută prin program și presupune testarea stării perifericului (citirea informației de stare din registru de stare). Registrul de stare conține mai multe
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
după o schemă prevăzută prin program și presupune testarea stării perifericului (citirea informației de stare din registru de stare). Registrul de stare conține mai multe circuite basculante bistabile (fanioane) care sunt modificate de către periferic în conformitate cu starea sa. Funcție de valoarea citită, procesorul poate urma un segment de program care să reia interogarea (dacă dispozitivul nu este pregătit) sau poate continua cu transferul datelor dacă acesta este pregătit. La adresa 279h este situat registrul de date. Programul va comanda perifericul să transmită cîteva cuvinte
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
câte un cuvânt în registrul de date, pornită transmisia și apoi testat perifericul pentru a vedea dacă a realizat transmisia până se obține un răspuns afirmativ, după care se reia bucla. Transferul datelor prin întreruperi Sistemul de întreruperi al unui procesor permite întreruperea activității curente a procesorului pentru efetuarea unor operații asincrone generate de evenimente externe sau interne. Abandonarea programului în execuție se face la terminarea instrucțiunii în curs (execuția unei instrucțiuni nu este interuptibilă). Acceptarea și tratarea întreruperilor pot fi
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
date, pornită transmisia și apoi testat perifericul pentru a vedea dacă a realizat transmisia până se obține un răspuns afirmativ, după care se reia bucla. Transferul datelor prin întreruperi Sistemul de întreruperi al unui procesor permite întreruperea activității curente a procesorului pentru efetuarea unor operații asincrone generate de evenimente externe sau interne. Abandonarea programului în execuție se face la terminarea instrucțiunii în curs (execuția unei instrucțiuni nu este interuptibilă). Acceptarea și tratarea întreruperilor pot fi validate sau invalidate prin program. Dacă
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
a întreruperii). De regulă aceasta trebuie să fie cât mai scurtă, iar întreruperile trebuie invalidate pe durata execuției acesteia. După încheierea rutinei, programul se reia de unde a fost întrerupt. Datorită faptului că rutina de întrerupere poate afecta oricare din regiștrii procesorului, datele trebuie salvate înainte de salt (de regulă în stivă) și refăcute după revenire pentru ca programul să continue de unde rămăsese. Datele care trebuie salvate sunt: -adresa de revenire (contorul de program înainte de a efectua saltul la rutina de întrerupere; -indicatorii de
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
salt (de regulă în stivă) și refăcute după revenire pentru ca programul să continue de unde rămăsese. Datele care trebuie salvate sunt: -adresa de revenire (contorul de program înainte de a efectua saltul la rutina de întrerupere; -indicatorii de condiții și stare ai procesorului; -regiștrii interni; Avantajul acestei metode este acela că nu se pierde timp cu interogarea perifericului. Buclarea programului de mai sus se poate face și de sute sau mii de ori pînă perifericul execută task-ul. De exemplu o interfață serială care
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
serială care lucrează cu rata de 9600 baud (cca 0.1 ms) necesită 1.2 ms pentru a transmite un cuvânt - 1 bit de start, 8 biți de date, un bit de paritate și 2 biți de stop, iar un procesor RISC cu frecvența de tact de 1MHz execută o instrucțiune pe tact. Asta înseamnă execuția a 1200 de instrucțiuni pe durata transmisiei. Cine poate genera întreruperea? În principiu orice periferic conectat la sistem poate genera o întrerupere, dacă este prevăzut
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
de instrucțiuni pe durata transmisiei. Cine poate genera întreruperea? În principiu orice periferic conectat la sistem poate genera o întrerupere, dacă este prevăzut cu această facilitate, componente hardware cu rol de supraveghere a funcționării sistemului (a tensiunii de intrare, temperatra procesorului) sau evenimente interne (instrucțiuni inexistente). Există 2 tipuri de întreruperi: -întreruperi nevectorizate - adresa rutinei de întrerupere este fixă -întreruperi vectorizate - adresa este furnizată chiar de către sursa de întrerupere sub forma unui vector de întrerupere. În unele cazuri vectorul indică adresa
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
o adresă de memorie unde este memorată adresa rutinei de întrerupere. Unitatea centrală poate iniția un transfer de date, trimițând o comandă către circuitul de interfață, după care continuă execuția programului. Circuitul de interfață acționează asupra perifericului și va întrerupe procesorul după ce data a fost transmisă către acesta sau când o data este disponibilă în registrul de date. În figura următoare este prezentată o schemă logică a transferului prin întreruperi. După cum se observă, programul principal este întrerupt imediat după terminarea execuției instrucțiunii
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
date. În figura următoare este prezentată o schemă logică a transferului prin întreruperi. După cum se observă, programul principal este întrerupt imediat după terminarea execuției instrucțiunii în cursul căreia a apărut întreruperea. Execuția continuă cu rutina de întrerupere: -se salvează regiștrii procesorului -se testează perifericul, dacă acesta nu este gata se generează o eroare și se iese din rutină, -se citește data de la periferic, -se verifică dacă mai sunt de preluat date și se revine la programul principal dacă nu mai sunt
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
Sunt situații în care sistemul conține mai multe dispozitive I/O, fiecare având întreruperea sa proprie. Evident că în aceste condiții pot apărea simultan mai multe întreruperi, fiind nevoie de arbitrare. Soluția este de a aloca nivele de prioritate întreruperilor, procesorul tratând evident întreruperea cu prioritatea cea mai mare și ulterior pe celelalte în ordinea priorităților acestora. Arbitrarea poate fi controlată de către procesor (prin software sau prin hardware), de către un circuit controler de întreruperi sau prin hardware, dispozitivele fiind conectate într-
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
apărea simultan mai multe întreruperi, fiind nevoie de arbitrare. Soluția este de a aloca nivele de prioritate întreruperilor, procesorul tratând evident întreruperea cu prioritatea cea mai mare și ulterior pe celelalte în ordinea priorităților acestora. Arbitrarea poate fi controlată de către procesor (prin software sau prin hardware), de către un circuit controler de întreruperi sau prin hardware, dispozitivele fiind conectate într-un lanț de priorități. Arbitrarea prin software necesită un hardware minimal (de exemplu un registru în care fiecărui periferic întreruperi îi corespunde
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
hardware, dispozitivele fiind conectate într-un lanț de priorități. Arbitrarea prin software necesită un hardware minimal (de exemplu un registru în care fiecărui periferic întreruperi îi corespunde un bit care va fi setat atunci când acesta generează o cerere de întrerupere. Procesorul citește registrul și în funcție de starea bților decide care rutină de întrerupere va fi executată. Dacă sunt activați mai mulți biți simultan, atunci tot prin program hotărăște ordinea în care va trata întreruperile. Arbitrarea poate fi controlată de către un controler de
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
va fi executată. Dacă sunt activați mai mulți biți simultan, atunci tot prin program hotărăște ordinea în care va trata întreruperile. Arbitrarea poate fi controlată de către un controler de întreruperi. Această alternativă este cea mai utilizată. El preia toate sarcinile procesorului privind arbitrarea. Acesta acceptă întreruperi de la mai multe surse de întrerupere, determină care are prioritatea cea mai mare și generează către procesor o cerere de întrerupere. După ce acesta acceptă cererea, controlerul plasează pe magistrala de date vectorul de întrerupere asociat
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
poate fi controlată de către un controler de întreruperi. Această alternativă este cea mai utilizată. El preia toate sarcinile procesorului privind arbitrarea. Acesta acceptă întreruperi de la mai multe surse de întrerupere, determină care are prioritatea cea mai mare și generează către procesor o cerere de întrerupere. După ce acesta acceptă cererea, controlerul plasează pe magistrala de date vectorul de întrerupere asociat întreruperii cu prioritatea cea mai mare. Procesorul întrerupe execuția programului în curs și pe baza vectorului de întrerupere calculează adresa rutinei de
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
mai multe surse de întrerupere, determină care are prioritatea cea mai mare și generează către procesor o cerere de întrerupere. După ce acesta acceptă cererea, controlerul plasează pe magistrala de date vectorul de întrerupere asociat întreruperii cu prioritatea cea mai mare. Procesorul întrerupe execuția programului în curs și pe baza vectorului de întrerupere calculează adresa rutinei de întrerupere corespunzătoare și o încarcă în numărătorul de program. Evident, următoarea instrucțiune executată va fi prima din subrutina de întrerupere. Tipic, controlerul de întreruperi conține
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
și flexibilitatea în alocarea priorităților. O altă metodă de arbitrare este cea cu lanț de priorități, care se bazează pe existența unor circuite de invalidare în cadrul fiecărui circuit de interfață (daisy chain). Cu cât dispozitivul este situat mai departe de procesor în lanț, cu atât prioritatea sa este mai mică. Ea este stabilită prin hardware și este fixă. În figura următoare este prezentată o astfel de structură. Dispozitivele I/O (DIO) prezintă semnale specifice conectării în structură tip daisy chain (IEI
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
DIO) prezintă semnale specifice conectării în structură tip daisy chain (IEI - Interrupt Enable Input și IEO - Interrupt Enable Output). De asemenea dispozitivele prezintă o ieșire INT cu colector (drenă) în gol care permite legarea acestora împreună la intrarea INT a procesorului. Această linie se leagă la tensiunea de alimentare printr-o rezistență realizând funcția SAU cablat. Prioritatea cea mai mare o are perifericul ce mai apropiat de procesor pe linia INT ACK (Interrupt Acknowledge), cel mai îndepărtat având prioritatea cea mai
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
colector (drenă) în gol care permite legarea acestora împreună la intrarea INT a procesorului. Această linie se leagă la tensiunea de alimentare printr-o rezistență realizând funcția SAU cablat. Prioritatea cea mai mare o are perifericul ce mai apropiat de procesor pe linia INT ACK (Interrupt Acknowledge), cel mai îndepărtat având prioritatea cea mai mică. Acestea sunt fixe, neputând fi modificate datorită cablării hardware. Circuituk (CTR INT) furnizează procesorului vectorul de întrerupere. La activarea unei cereri de întrerupere de către unul din
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
cablat. Prioritatea cea mai mare o are perifericul ce mai apropiat de procesor pe linia INT ACK (Interrupt Acknowledge), cel mai îndepărtat având prioritatea cea mai mică. Acestea sunt fixe, neputând fi modificate datorită cablării hardware. Circuituk (CTR INT) furnizează procesorului vectorul de întrerupere. La activarea unei cereri de întrerupere de către unul din dispozitivele DIOk, procesorul activează semnalul INT ACK imediat ce situația o permite. Dacă primul dispozitiv de pe lanț a generat întreruperea, atunci ieșirea sa IEO va fi în zero logic
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
INT ACK (Interrupt Acknowledge), cel mai îndepărtat având prioritatea cea mai mică. Acestea sunt fixe, neputând fi modificate datorită cablării hardware. Circuituk (CTR INT) furnizează procesorului vectorul de întrerupere. La activarea unei cereri de întrerupere de către unul din dispozitivele DIOk, procesorul activează semnalul INT ACK imediat ce situația o permite. Dacă primul dispozitiv de pe lanț a generat întreruperea, atunci ieșirea sa IEO va fi în zero logic, celelalte circuite fiind invalidate. El va atenționa modulul CTR INT despre faptul ca i s-
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
circuite fiind invalidate. El va atenționa modulul CTR INT despre faptul ca i s-a acceptat întreruperea (prin linia INT0), care, la rândul său, va plasa pe magistrala de date vectorul de întrerupere corespunzător dispozitivului respectiv. Pe baza acestui vector, procesorul va calcula adresa rutinei de întrerupere și va efectua un salt necondiționat la această adresă. Dacă întreruperea nu a fost activată de primul dispozitiv ci de un altul, atunci semnalul INT ACK se va propaga până la acesta, ieșirea sa fiind
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
zero logic. Cu alte cuvinte fiecare dispozitiv care nu a generat întrerupere, copiază IEI la IEO, iar cel care a generat întreruperea are IEI diferit de IEO. Această stare de lucru este menținută atâta timp până dispozitivul este servit de către procesor. În momentul în care un dispozitiv dorește să genereze o întrerupere: -intrarea sa IEI poate fi în 0 logic, semnalizându-i faptul că un alt dispozitiv cu prioritate mai mare este servit; Dispozitivul va aștepta până când IEI va trece în
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]
-
lipsi, în aceste condiții dispozitivul însuși plasează vectorul de întrerupere pe magistrală. 7.4.3. Transferul datelor prin acces direct la memorie Deși transferul datelor utilizând întreruperi permite o viteză mare de transfer, totuși acest gen de transfer implică masiv procesorul. Datele trec de la perfieric către memorie prin regiștrii procesorului. De fiecare dată când procesorul tratează o întrerupere el abandonează temporar operația pe care o executa și face saltul la rutina de întrerupere. Acesta este precedat de salvarea datelor din regiștrilor
Arhitectura Calculatoarelor by Cristian Zet () [Corola-publishinghouse/Science/329_a_567]