Documente Academic
Documente Profesional
Documente Cultură
n cazul n care o instruciune folosete date care au rezultat n urma execuiei instruciunii precedente atunci aceste date ar trebui citite din nou din memorie. Pentru a evita acest acces suplimentar la memorie, microprocesorul este prevzut cu regitri, n care pot fi pstrate temporar date sau adrese de memorie. Microprocesorul mai are nevoie de un registru special n care s poat fi generat i pstrat nealterat adresa de memorie a urmtoarei instruciuni care trebuie executat. Acest registru se numete instruciune program (Instruction Program - IP) sau contor de program (Program Counter - PC). Mai exist nc un registru special n care sunt pstrate informaii referitoare la natura rezultatului unei operaii aritmetice. Biii care compun acest registru se numesc indicatori de stare, iar registrul poart denumirea de registrul indicatorilor de stare i control. Vor exista bii corespunztori diferitelor stri ale rezultatului cum ar fi: numr par sau impar, negativ sau pozitiv, nul sau nenul etc. Pe lng magistralele externe care sunt folosite pentru "comunicarea" dintre procesor i celelalte componente ale sistemului, microprocesorul este prevzut i cu o magistral intern de date, necesar pentru efectuarea unor transferuri interne de date. La magistralele de date i de comenzi pot fi cuplate circuite de intrare/ieire (Input/Output - I/O) care realizeaz legtura cu exteriorul. Limea unei magistrale reprezint numrul de trasee de cupru care o compun. Numrul de locaii de memorie care pot fi adresate direct de procesor depinde de limea magistralei de adrese, de exemplu o magistral de adrese care conine 20 de trasee permite adresarea a 220 celule de memorie. Pentru a se executa o instruciune, au loc urmtoarele evenimente: microprocesorul depune pe magistrala de date valoarea din registrul IP i depune pe magistrala de comenzi comanda citete din memorie; memoria intern preia de pe magistrala de date valoarea N care a fost stocat n registrul IP, caut adresa N, preia valoarea I coninut n aceast locaie, depune pe magistrala de date valoarea I i pe magistrala de comenzi comanda am terminat citirea; dup ce recepioneaz aceast comand, microprocesorul citete de pe magistrala de date valoarea I i execut instruciunea codificat prin aceast valoare; valoarea din registrul IP este incrementat cu o unitate (devine N+1). Valoarea registrului IP poate fi modificat de una din instruciunile unui program, disprnd astfel monotonia cauzat de incrementarea cu o unitate. O astfel de instruciune ar putea fi scade valoarea k din valoarea registrului IP. Efectul acestei instruciuni este ntoarcerea cu k instruciuni nainte i repetarea lor n alt context (valorile datelor vor fi altele). Toate activitile calculatorului sunt coordonate de ctre pulsurile unui oscilator numit ceas intern. Dup cum am vzut, execuia unei instruciuni const din execuia mai multor etape pariale. Fiecare astfel de etap parial este efectuat n intervalul dintre dou pulsuri de ceas, astfel c intervalul de timp necesar execuiei unei instruciuni poate fi msurat cu ajutorul numrului de pulsuri de ceas.
Sistemul de ntreruperi
Microprocesorul mai dispune de dou linii pentru semnalele de ntrerupere emise de dispozitivele externe: linia INTR (Interrupt Request) i linia NMI (Non-Maskable Interrupt). Pe linia INTR sosesc ntreruperi n urma crora unitatea central, n funcie de valoarea indicatorului de validare a ntreruperilor (IF), execut diferite operaii. Dac IF este ters (are valoarea 0) nseamn c ntreruperile semnalate pe linia INTR sunt mascate sau dezactivate, ca urmare unitatea central le ignor i trece la instruciunea urmtoare. Dac IF este poziionat (are valoarea 1) nseamn c ntreruperile de pe linia INTR sunt activate i unitatea central oprete execuia normal a instruciunilor i pred controlul rutinei de tratare a ntreruperilor. NMI este o linie prin care sosesc ntreruperi care anun evenimente critice. Aceste ntreruperi nu pot fi dezactivate i unitatea central le va lua n considerare de fiecare dat cnd acestea sosesc. Sistemul de ntreruperi este simplu i uor de manevrat. Pot fi utilizate cel mult 256 de tipuri de ntrerupere, fiecrui tip fiindu-i atribuit un cod specific. ntreruperile pot fi clasificate n ntreruperi externe i ntreruperi interne. Cele externe sunt numite i ntreruperi hardware, iar cele interne mai poart denumirea de ntreruperi software. Diferena esenial dintre cele dou tipuri de ntreruperi este c cele externe sunt cauzate de dispozitivele externe, iar cele interne sunt generate prin program, folosindu-se anumite instruciuni.
Coada de instruciuni
Unitatea de execuie nu are nici o legtur cu magistrala sistemului, cea care efectueaz toate operaiile necesare cu magistrala fiind unitatea de interfa cu magistrala. n timpul n care unitatea de execuie se ocup cu execuia instruciunilor, unitatea de interfa cu magistrala ncarc instruciunile ntr-o memorie special de tip RAM (Random Acces Memory) numit coada fluxului de instruciuni. Aceast memorie are o dimensiune de 4 bytes n cazul microprocesoarelor 8088 i 6 bytes n cazul 8086. Unitatea de execuie preia cte o instruciune din coada fluxului de instruciuni; apoi o execut. n majoritatea cazurilor coada fluxului de instruciuni conine cel puin un byte al fluxului de instruciuni i unitatea de execuie nu mai trebuie s atepte ncrcarea instruciunii care urmeaz a fi executat. La un moment dat n coada fluxului de instruciuni sunt memorate instruciunile care se afl n locaiile de memorie imediat urmtoare locaiei de memorie n care se afl instruciunea care se execut la acel moment. Dac este executat o instruciune care transfer controlul unei locaii de memorie, coada fluxului de instruciuni este tears, se ncarc instruciunea de la noua adres i unitatea de interfa cu magistrala ncepe rencrcarea cozii fluxului de instruciuni cu instruciunile urmtoare.
Dispozitivul de adresare
Microprocesorul trebuie s poat adresa att instruciunile ct i datele de care instruciunile au nevoie atunci cnd sunt executate. Adresa locaiei de memorie din care se va ncrca o instruciune este suma dintre o adres de segment i un deplasament. Pentru adresarea datelor, microprocesorul ofer cteva modaliti de adresare.
Segmentarea memoriei
Microprocesoarele 8086 i 8088 pot adresa 1 MB de memorie care sunt grupai n mai multe segmente. Un segment de memorie este o unitate logic de memorie care poate avea cel mult 64 KB. Fiecare segment de memorie este alctuit din mai multe locaii de memorie consecutive i poate fi considerat ca o unitate care poate fi adresat independent. Fiecare segment este caracterizat printr-o adres de baz care reprezint adresa locaiei de nceput a segmentului i este exprimat n numr de blocuri de 16 bytes, numite paragrafe. Ca urmare, toate segmentele ncep de la o adres care este un multiplu de 16. Dou segmente se numesc adiacente dac adresa de nceput a unuia dintre ele este cu 1 mai mare dect adresa de sfrit a celuilalt. Dou segmente sunt parial suprapuse dac adresa de nceput a unuia se afl ntre adresa de nceput i cea de sfrit a celuilalt. Dou segmente sunt suprapuse complet dac adresele lor de nceput coincid. n toate celelalte cazuri segmentele se numesc disjuncte. n funcie de necesiti o anumit aplicaie (program) utilizeaz segmentele n mod diferit. Segmentele care pot fi adresate n mod curent ofer 64 KB pentru cod, 64 KB pentru stiv i 64 KB pentru date. Pentru a utiliza un spaiu de lucru mai mare, trebuie gestionate segmentele de memorie n funcie de necesiti.
Mecanisme de adresare
Calculele de adres sunt efectuate de unitatea de interfa cu magistrala, cu ajutorul unei uniti de calcul, specifice, numit ADR i a unor regitri speciali fiecare avnd o capacitate de 16 bii. Primele generaii de calculatoare aveau o memorie de 1 MB. Primele 10 blocuri de memorie (640 KB) formeaz memoria RAM, urmtoarele 5 fiind folosite pentru memoria ecran i reinerea coninutului memoriei ROM n timpul funcionrii sistemului. Pentru a putea codifica n mod unic fiecare din cele 220 de locaii de memorie diferite, o adres trebuie s fie reprezentat pe 20 de bii. Magistrala de adrese are capacitatea necesar pentru a transmite cei 20 de bii deodat, ns nu se poate spune acelai lucru despre magistrala de date care are o capacitate de 16 bii. Prin convenie adresa de nceput a fiecrui segment este un multiplu de 16, iar un segment poate avea cel mult 64 KB. Datorit acestui fapt cei mai nesemnificativi 4 bytes ai adresei de nceput a segmentului vor fi 0 (n baza 2 un multiplu de 16 are ultimele 4 cifre ntotdeauna 0). Din acest motiv aceti 4 bii nu mai trebuie memorai i ca urmare regitrii de segment vor conine numai restul celor 16 bii. Pentru a specifica deplasamentul (offset) sunt folosii tot 16 bii. O adres virtual este compus din dou numere reprezentate fiecare pe 16 bii, unul reprezentnd coninutul registrului de segment, iar al doilea deplasamentul n cadrul segmentului. Adresa fizic este calculat de ctre BIU nmulind cu 16 primul numr adunnd la rezultat cel de-al doilea numr. Mecanismul descris este tipic pentru procesorul 8086 i poart denumirea de mod real (Real Adress Mode). La microprocesoarele 80286 apare nc un mod de adresare, denumit mod protejat (Protected Virtual Address Mode), iar o dat cu apariia procesorului 80386 sunt introduse modul paginat i modul virtual 8086. Aceste noi modaliti de adresare au fost introduse pentru a permite adresarea de ctre un calculator IBM-PC a mai mult de 1 MB de memorie.
Implementarea stivei
Stiva este o zon de memorie folosit pentru a stoca datele temporare. Deosebirea esenial dintre stive i alte segmente de memorie este faptul c datele de pe stiv sunt stocate ncepnd de la adresele mai mari de memorie i continund spre adrese mai mici. La nceput stiva este un segment de memorie neiniializat care are o dimensiune fix. n timp ce sunt adugate informaii n stiv dimensiunea stivei "crete" de la adresele mari spre adresele mai mici, iar cnd sunt eliminate informaii, stiva se "micoreaz" n sens invers.
Numrul de stive este limitat numai de spaiul de memorie disponibil n sistem, iar dimensiunea unei stive nu poate depi 64 KB. Dac se extinde stiva peste aceast dimensiune, informaiile adugate vor nlocui informaiile de la nceputul stivei. La un moment dat nu poate fi adresat direct dect o stiv, ea purtnd denumirea de stiv curent.
Regitri
Regitrii microprocesoarelor 8086 i 8088 sunt n numr de 14, au fiecare cte 16 bii i pot fi mprii n urmtoarele categorii: regitrii generali, regitrii de segment, registrul pointerului de instruciuni i registrul indicatorului de stare i control. Regitrii generali sunt n numr de 8 i pot fi clasificai n regitri de date (AX, BX, CX i DX), regitri de pointer (SP i BP) i regitri de index (SI i DI). O caracteristic important a regitrilor de date este aceea c "jumtile" lor pot fi accesate separat, deci ei pot fi folosii fie ca regitri de 16 bii, fie ca doi regitri de cte 8 bii fiecare. Cele dou jumti ale registrului AX pot fi referite ca regitri AL, respectiv AH. n acelai mod putem folosi regitrii BL, BH, CL, CH, DL i DH. Regitrii de pointer i de index pot fi folosii numai ca regitri de 16 bii. Regitrii de segment, 4 la numr, sunt denumii CS, SS, DS i ES. Registrul CS indic segmentul de cod curent (adresa de baz a segmentului de memorie care conine codul programului). Registrul SS indic segmentul de stiv curent, operaiile cu stiva fiind efectuate n locaiile de memorie corespunztoare acestui segment. Registrul DS indic segmentul de date curent, segment ce conine, de obicei, datele i variabilele programului. n sfrit, registrul ES, indic extrasegmentul curent, folosit de obicei tot pentru date. Aceti regitri pot fi modifica i direct prin program. Registrul pointerului de instruciuni (IP) este un registru actualizat de BIU i conine deplasamentul locaiei de memorie n care se afl instruciunea urmtoare fa de nceputul segmentului de cod curent. Acest registru nu poate fi modificat direct prin program. Registrul indicatorilor de stare i control este un registru ai crui bii au fiecare cte o semnificaie aparte. Ei indic starea rezultatului operaiei pe care o execut programul la un moment dat sau controleaz unele operaii ale microprocesorului. Registrul conine 6 bii de stare i 3 bii de control, restul biilor fiind rezervai, ei neavnd o semnificaie precizat. Microprocesorul 80386 utilizeaz aceiai regitri ca i predecesorii si din familia 8086, dar toi regitrii (cu excepia celor de segment) pot fi extinse pn la 32 de bii. Denumirea regitrilor extini ncepe cu litera E i ei se numesc EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI i EIP). Au fost adugate i doi regitri de segment suplimentari FS i GS.
Indicatori
Cei 16 bii ai registrului indicatorilor de stare i control poart denumirea de indicatori (denumire sugerat i de numele registrului) sau flaguri. Cuvntul englezesc flag este
tradus n limba romn prin steag. Denumirea sugereaz faptul c un anumit stegule va fi ridicat n cazul n care o condiie este ndeplinit. Mai multe instruciuni permit modificarea execuiei unui program n funcie de cei ase indicatori de stare. Indicatorul de transport (Carry - CF) indic faptul c cel mai semnificativ bit al rezultatului operaiei care s-a efectuat a fost "transportat" n exterior. De obicei este utilizat atunci cnd se efectueaz operaii matematice cu numere a cror reprezentare este pe mai mult de un octet. Indicatorul mai poate fi modificat i n cazul operaiilor de deplasare i rotire. Indicatorul de paritate (Parity - PF) este poziionat dac rezultatul conine n reprezentare un numr par de bii cu valoarea 1. De obicei este folosit pentru verificarea transmisiilor de date. Indicatorul de transport auxiliar (Auxiliary Carry - AF) este poziionat dac a avut loc un transport de la un nivel inferior la un nivel superior al semioctetului rezultatului. Este folosit n operaiile cu numere reale. Indicatorul de zero (Zero - ZF) este poziionat dac rezultatul operaiei este 0. Indicatorul de semn (Sign - SF) este poziionat dac cel mai semnificativ bit al rezultatului este 1. Indicatorul de depire (Overflow - OF) este poziionat dac are loc o depire aritmetic, adic dimensiunea rezultatului depete capacitatea locaiei de destinaie. Aceti bii indicatori de stare sunt poziionai de ctre unitatea de execuie. Indicatorii de control permit controlarea unor operaii ale microprocesorului i ei pot fi modificai prin program. Indicatorul de depanare (Trap/Trace - TF) dac este poziionat, indic faptul c programul va fi executat pas cu pas. Unitatea central va genera o ntrerupere dup fiecare instruciune, existnd posibilitatea urmririi execuiei fiecrei instruciuni. Indicatorul de ntrerupere (Interrupt - IF) indic unitii centrale, n cazul n care este poziionat, c trebuie s "reacioneze" la ntreruperile externe mascabile. Dac acest indicator nu este poziionat aceste ntreruperi vor fi ignorate. Nu are efect asupra ntreruperilor externe nemascabile sau asupra ntreruperilor interne. Indicatorul de direcie (Direction - DF) n cazul n care este poziionat, indic faptul c irurile vor fi prelucrate de la adresele mari spre adresele mici (de la dreapta la stnga). n caz contrar irurile vor fi prelucrate de la stnga la dreapta. ncepnd cu microprocesorul 80286 au fost adugate nc dou indicatoare pentru a acorda mai multe faciliti programatorului. Indicatorul protecie intrare/ieire (Input/Output Privilege level flag - IOP) indic nivelul de protecie pentru intrare i ieire. Trebuie remarcat c pentru acest flag sunt folosii 2 bii. Indicatorul imbricare (Nested flag - N) controleaz nlnuirea proceselor ntrerupte n modul protejat. ncepnd cu microprocesorul 80386 registrul indicatorilor de stare i control este i el extins la 32 de bii, fiind adugai nc doi indicatori. Indicatorul reluare (Restart flag - R) determin, dac este poziionat, dezactivarea temporar a excepiilor de depanare.
Indicatorul mod virtual (Virtual 8086 mode flag - V) indic, n cazul poziionrii sale, modul de execuie virtual 8086. n caz contrar modul de execuie va fi modul protejat. O dat cu apariia microprocesorului 80486 au aprut nc 7 indicatori de stare i control: indicatorul AC permite generarea unui semnal de eroare n cazul n care apar date incorect aliniate; indicatorul PG arat dac paginarea este activ sau nu; indicatorul CE este folosit pentru conectarea memoriei cache; indicatorul WT este folosit pentru validarea i invalidarea scrierii n memoria cache; indicatorul WE controleaz dac la coprocesor apare o excepie datorat vectorului de ntrerupere 2h sau 16h (numerele terminate n h indic faptul c ele sunt scrise n sistem hexazecimal - baza 16; numrul 16h poate fi scris ca 22 dac se folosete sistemul zecimal); indicatorul TS este setat n cazul n care este lansat un task; indicatorul EM arat dac instruciunile ESC sunt preluate sau transmise mai departe la coprocesor.
Exemple de microprocesoare
INTEL 4004 - primul microprocesor; aparut in 1971, realizat in tehnologie PMOS, inglobeaza 2.250 de tranzistoare pe pastila de siliciu. Prelucrare pe 4 biti, ceas de 740 KHz, viteza 60.000 de operatij/secun-da, memorie adresabila 4 Koct, set de 45 instructiuni orientate pe operatiuni aritmetice.Utilizatorul poate programa microprocesorul sa realizeze un numar mare de sarcini diferite, fiind un circuit versatil, spre deosebire de circuitele dezvoltate anterior care erau dedicate. INTEL 8008 - aparut in 1972, microprocesor pe 8 biti, tehnologie PMOS, grad de integrare 3.300 tranzistoare pe pastila de siliciu, ceas 800 KHz, viteza 30.000 operatii/secunda, memorie adresabila 16 Koct, set de 48 de instructiuni. Proiectat initial
pentru comanda unui display pe tub catodic pentru firma DATAPOINT Corporation, microprocesorul nu a fost acceptat, fiind considerat prea lent, fata de logica cablata clasica. Totusi, piata a absorbit curind circuitul, aplicatiile sale de manipulare date si caractere dovedind utilitatea sa. A devenit evident pentru INTEL ca un viitor deosebit era in fata acestor circuite. INTEL 8080-tehnologie NMOS, grad de integrare 4.500 de tran zistoare pe capsula, capacitate de adresare 64 Koct, frecventa ceasului 2,083 MHz, 200.000 de operatii/secunda, set de 72 de instructiuni.Succesul deosebit al lui 8008, a determinat INTEL sa proiecteze si sa lanseze pe piata, in aprilie 1974, microprocesorul 8080. Prin versatilitate, acest microprocesor a determinat aparitia a nenumarate aplicatii care au inglobat circuitul. 8080 si-a gasit locul in industria electronica, a bunurilor de consum chiar si in cea a automobilelor. Dar poate cea mai importanta aplicatie, cu cele mai penetrante implicatii in viitor a fost realizarea pe baza lui 8080 a primului calculator personal ALTAIR 8800, produs in 1975 de catre firma Micro Instru-mentation Telemetry Systems.Tot de 8080 este legata si aparitia primului calculator personal "comercial", APPLE II. Istoria nasterii si evolutiei firmei APPLE ilustreaza extraordinara putere a ideii novatoare in conditiile economiei de piata si intr-un fel mitul succesului american. Proiectat si realizat literalmente "pe genunchi", intr-un garaj, de doi studenti, Steve Wozniak si Steven Jobs, vindut, in 1976 direct din acelasi garaj; actiunea, la inceput cu putine sanse de reusita, a pus bazele unei firme APPLE CO, care avea sa parcurga triumfal calea succesului, devenind numai in 8 ani o corporatie internationala avind la activ multe miliarde de dolari.Si cum inovatia trebuia sustinuta si in domeniul software-ului, un la fel de tanar student, Bill Gates, a implementat un BASIC pe calculatorul ALTAIR. A fost prima actiune a unei mici companii, care va determina in mod decisiv software-ul de microcalculatoare. Microsoft are astazi mai mult de 1500 de angajati si un venit anual de peste 350 milioane $.
MICROPROCESORUL Z80
Z80 este un microprocesor pe 8 bii produs de firma Zilog ncepnd cu anul 1976. Dispune de o magistral de adrese pe 16 bii, capabil s adreseze 64k de memorie. Este compatibil cu procesorul Intel 8080, avnd n plus 80 de noi instruciuni, 2 regitri index dubli i instruciuni de ntrerupere.
DESCRIERE
Z80 dispune de 40 de pini. Frecvena de tact este de 2,5MHz, aceasta crescnd la variantele ulterioare Z80A (4MHz), Z80B (6MHz), Z80H (8MHz) i altele, pn la 2025MHz. Dispune de urmtorii regitri de 8/16 bii:
A - Acumulator A' - Acumulator alternativ BC, DE, HL - regitri generali B'C', D'E', H'L' - regitri generali alternativi F - registrul indicatorilor de condiie (flaguri) F' - registrul indicatorilor de condiie alternativ IX, IY - regitri index I - vectorul de ntreruperi R - registrul de refresh al memoriei SP - registrul de stiv PC - contorul program Setul de instruciuni cuprinde 158 instruciuni de ncrcare pe 8 i 16 bii, interschimb, transfer de blocuri de date, cutare, operaiuni aritmetice i logice, rotire i shiftare, instruciuni pe bit, salturi, apeluri de subrutine, intrare/ieire. Pe lng setul oficial exist i instruciuni ascunse.
VERSIUNI
Z80 a fost produs i de multe alte firme, printre care i MicroElectronica Bucureti, sub numele de MMN80CPU. A fost unul din cele mai populare microprocesoare din anii 70'80', fiind folosit n calculatoarele Sinclair ZX80, ZX81 i ZX Spectrum, Amstrad CPC i Amstrad PCW, HC, AMIC, CoBra i altele.
- Frecvente de ceas mai mari de 2 GHz - Procesoare de mica putere (aplicatii mobile) - Micro-arhitecturi superscalare (mai multe instructiuni lansate in
paralel)
- Functii de prelucrare DSP : MMX , 3D , grafica , sunet - Nuclee procesor multiple pe un chip Memorie cache pe 2-3 niveluri
CUPRINS
ARGUMENT
BIBLIOGRAFIE