Microprocesoare

Embed Size (px)

DESCRIPTION

Descrierea microprocesoarelor

Citation preview

Microprocesorulnoiembrie 13, 2011Microprocesorul, uneori numit i procesor, este unitatea central de prelucre a informaiei (U.C.P. sau n englez: CPU) a unui calculator sau a unui sistem electronic structurat funcional (care coordoneaz sistemul) i care, fizic, se prezint sub forma unui circuit electronic integrat IC cunoscut i sub numele de cip electronic. Reprezint forma structural cea mai compex pe care o pot avea circuitele integrate. El controleaz activitile ntregului sistem n care este integrat i poate prelucra datele furnizate de utilizator. Este elementul principal al unui sistem de calcul; cipul semiconductor, care este plasat pe placa de baz numit motherboard (en), este de obicei foarte complex, putnd ajunge s conin de milioane de foarte mici transistoare (microtranzistoare).Microprocesorul asigur procesarea instruciunilor i datelor, att a celora din sistemul de operare al sistemului, ct i a celora din aplicaia utilizatorului, i anume le interpreteaz, prelucreaz i controleaz, execut sau supervizeaz transferurile de informaii i controleaz activitatea general a celorlaltor componente care alctuiesc un sistem de calcul.Tipuri de microprocesoare / Exemple Intel 80286Pe capsula ce este prevzut cu 68 de pini de contact (piciorue, contacte) se afl integrate 134.000 de tranzistoare. Nu exist probleme cu disiparea cldurii, deoarece emisia caloric este mic. Dispune de magistrale cu 24 de linii de adres i 16 linii de date, fiind un procesor pe 16 bii, att intern ct i extern, regitrii de memorare fiind dimensionai la 16 bii. Intel 80386Este un procesor pe 32 de bii construit cu 275.000 de tranzistoare, i este realizat n tehnologie CMOS de 1,2 microni. Capsula are 132 de pini, implantarea se face, prin lipire, direct n placa de baz fr intermediul unui soclu, i nu necesit cooler (ventilator de rcire). Intel 80486 Intel Pentium AMD ATHLON Intel Pentium Pro Intel P7 Intel Core Solo i Intel Core Duo, cel din urm cu 2 nuclee Intel Core 2 Solo i Intel Core 2 Duo, cel din urm cu 2 nuclee n tehnologie de 48 nm Intel Core i3 Intel Core i5 i Intel Core i7, cu 4 nuclee n tehnologie de 45 nm Intel Atom, n special pentru netbooks

Memorie flash

Memoria (de tip) flash este o memorie electronic, de calculator (sau alt aparat), nevolatil (n care datele persist i fr alimentare cu energie electric), i care la nevoie poate fi tears i reprogramat (rencrcat cu date). Flash mai desemneaz i tehnologia folosit la fabricarea memoriilor de acest tip. Memoriile flash sunt memorii cu acces aleator.

CaracteristiciMemoria flash (uneori numit i Flash RAM) este un tip de memorie nevolatil cu alimentare constant ale crei blocuri de memorie pot fi terse i programate. Este o variant a memoriei EEPROM (electrically erasable programmable read-only memory), care, spre deosebire de memoria flash, este tears i programat la nivel de bit, ceea ce o face mai lent.

Numele de memorie flash vine de la faptul ca cipul este organizat in aa fel nct o operaie de tergere se face printr o singur aciune sau flash. tergerea este cauzat de fenomenul tunelare Fowler-Nordheim prin care electronii strpung un material dielectric fin cu scopul de a nltura sarcina din poarta flotant asociat fiecrei celule de memorie.

Memoria Flash este folosit des pentru a stoca cod de control asemanator BIOS- ului calculatoarelor personale. Cnd informaia din BIOS trebuie modificat memoria poate fi scris la nivel de bloc ceea ce o face mai uor de modificat. In schimb , flash ul nu este folositor ca RAM (random acces memory) deoarece RAM ul este adresat la nivel de byte . Intel ofer o tehnologie flash care retine 2 biti intr o celul de memorie ceea ce dubleaz capacitatea fara a avea vreo influient asupra pretului.

ClasificareExist dou tipuri de memorie flash: NOR (Not Or) i NAND (Not And). Denumirile se refer la tipul de poart logic folosit pentru celulele de stocare. NOR nseamn adevrat numai dac ambele intrri sunt false iar NAND nseamn fals numai dac ambele intrri sunt adevrate.NOR flash a fost introdusa de Intel in anul 1988 in timp ce NAND de Toshiba in 1989.Cele doua cipuri lucreaz in mod diferit. NAND are capacitate de stocare mult mai mari decat NAND. Tehnologia NAND i-a gasit utilitatea in dispozitive care au nevoie de putere mare de stocare a datelor i in plus stergerea si programarea sa se faca frecvent. MP3 player le , camere digitale si stick uri USB folosesc NAND. NOR , in schimb , este mai rapid dar i mai scump Un scop important al producatorilor de NAND este reducerea costului pe bit si marirea capacitaii unui cip astfel incat sa poata concura cu dispozitive de stocare magnetice ca hard discuri. Noile tehnologii NAND au dus la un cip mai mic , au micorat voltajul i au marit ciclul de scriere citire.

Memoria flash tip NOR are o speran de via de 10.000 la 100.000 de cicluri de scriere-tergere. Dei are viteze mici de scriere i de tergere, permite un acces aleatoriu pentru citire i scriere, fcnd-o adecvat pentru stocarea datelor care nu necesit o actualizare frecvent. O meniune important care trebuie fcut relativ la circuitele NOR este c la acestea, la livrare, se garanteaz c toate locaiile de memorie sunt bune i au acelai numr garantat de cicluri de tergere-programare. Mai mult, n faza de fabricaie se realizeaz un numr destul de mare de locaii de rezerv, care vor fi utilizate pentru repararea eventualelor locaii cu defecte si producerea astfel a unui circuit perfect.

Memoria flash tip NAND are viteze de scriere i de tergere mai mari, o mai mare densitate de memorie, un cost mai mic pe bit i o speran de via mult mai lung, suportnd de aproximativ 10 ori mai multe cicluri de scriere-tergere dect memoria flash tip NOR. Dezavantajul const n interfaa de intrare-ieire care permite numai un acces secvenial la date. La un circuit NAND Flash, productorul NU garanteaz c toate locaiile de memorie sunt bune i au acelai numr garantat de cicluri de tergere-programare. Deasemenea se realizeaz un numr foarte mic de locaii de rezerv, care pot fi utilizate pentru repararea eventualelor locaii cu defecte, rezultnd o economie n plus. La un astfel de circuit trebuie s existe un mecanism de detecie a erorilor si de gestionare al locaiilor defecte, circuitul putnd fi livrat, din considerente economice, cu locaii defecte! Mai mult este perfect posibil ca unele celule s-i epuizeze resursa de tergere-programare mai devreme dect altele, pe parcursul utilizrii circuitului. Funcionarea unui NAND Flash este similar altor dispozitive de intrareieire, cum ar fi i hard-disk-ul pe care acesta dorete s-l nlocuiasc. Datorit acestei interfee indirecte un sistem de calcul nu poate executa codul memorat ntr-un NAND Flash dect prin intermediul unui controler de memorie sau al unei maini secveniale dedicate.

Din punct de vedere practic, al proiectantului de sistem i utilizatorului, cea mai mare diferen ntre cele dou categorii de circuite este interfaa utilizator. Un circuit NOR Flash este foarte asemntor din punct de vedere al interfeei cu un circuit EPROM (sau SRAM), avnd linii (magistrale) de adrese i date dedicate. El poate fi mapat cu uurin, natural, n spaiul de memorie al unui sistem de calcul. Astfel, sistemul de calcul poate citi n mod natural cod memorat ntr-un NOR Flash i l poate executa.

Memoria NOR suport acces random pe un byte ceea ce permite sistemului sa ia datele si sa le execute direct de pe cip in acelai fel cum un PC al luat date dim memoria principal. NOR flash are o interfat SRAM ce contine suficieni pini de adresa pentru a mapa intregul cip dnd astfel acces ctre fiecare byte.

Suport softwareSpre deosebire de alte circuite de memorie, pentru utilizatorul tehnologiei FLASH exist i o component software, a crei prezen este obligatorie, mai ales n cazul circuitelor NAND FLASH. Exist dou nivele diferite pentru suportul software: un nivel de baz pentru operaiile de citire tergere scriere i un nivel superior, pentru emularea unui hard-disk i gestionarea algoritmilor specifici tehnologiei FLASH (mrirea duratei de via, uniformizare uzur, optimizare performane, etc). Pentru a citi informaie i eventual a executa cod dintr-o memorie NOR Flash nu este practic nevoie de nici un suport software. Pentru a executa ns cod dintr-o memorie NAND este neprat nevoie de un driver (pe lng hardware-ul suplimentar)! Aceast categorie de drivere poart denumirea de drivere asociate tehnologiei de memorie MTD (Memory Technology Driver/Device). Att circuitele NOR ct i cele NAND au nevoie de un driver MTD pentru operaiile de tergere i scriere. Dac un driver MTD este tot ce e nevoie pentru a terge/scrie un circuit NOR, la un circuit NAND trebuie s mai existe un suport suplimentar pentru detecia erorilor de bit i gestionarea blocurilor defecte (bad block mangement). Un exemplu de software de nivel superior, axat pe tehnologia NAND Flash, este cel al firmei MSystems, numit TrueFFS (True Flash File System) care realizeaz att emularea hard-disk-urilor, gestionarea blocurilor defecte ct i uniformizarea uzurii (wear leveling), uurnd n mod esenial integrarea n sistem a acestor circuite. O versiune TrueFFS exist i pentru tehnologia NOR Flash. TrueFFS este disponibil, ca surse i/sau executabile, pentru toate sistemele de operare majore cum ar fi: VxWorks, Windows CE, Linux, QNX/Neutrino, Windows XP/XPE, Windows NT/ NTE, DOS i multe altele.

LimitriDei ele la prima vedere par a nmagazina informaia permanent, cu timpul informaiile se pot pierde dac utilizatorul memoriei nu le folosete mult timp. Pentru memoriile flash, durata de timp dup care informaia se poate pierde este de ordinul zecilor de ani. O limitare mai important o constituie faptul c memoria flash are un numr limitat de cicluri citire-scriere, din cauza acumulrii de electroni la poarta tranzistoarelor MOS, ceea ce, dup citiri i scrieri repetate, reduce tensiunea de prag logic ntr att nct devine imposibil de detectat dac respectivul bit este un 1 sau un 0. Fenomenul poate aprea dup un numr de ordinul zecilor de mii pn la ordinul milioanelor de operaii de citire/scriere.

Domenii de utilizareMemoriile flash se utilizeaz n primul rnd pentru memoriilepropriu-zise ale diverselor echipamente electronice cum ar fi: USB flash drive, thumb drive, handy drive, memory stick, flash stick, jump drive, Cap N Go care nc nu dispun de un termen romnesc consacrat.

Ca exemple de aplicaii ale flashurilor:

Un memory stick se folosete la schimbul de date ntre computere i alte produse digitale.PDA-uri (personal digital assistants)Computere personale de tip laptop, notebook, netbook etc.O mare rspndire au cunoscut-o flashurile i la consolele de jocuri electronice, unde, pentru reinerea datelor jocului, ele au nlocuit deja EEPROM-urile i SRAM-urile (care trebuie alimentate cu baterii).Alte exemple unde se folosesc flashurile sunt player audio, camer digital de fotografiat i telefoanele mobile, n special cele de tip smartphone.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

MICROPROCESOARE

Mihai Scoraru

Microprocesorul poate s rmn o "cutie neagr" pentru muli utilizatori ai calculatorului... tiind c printre cititorii fideli ai GInfo sunt muli curioi, propunem o aventur pe parcursul a dou numere n universul palpitant al microprocesoarelorStructura intern a microprocesoarelor

Microprocesorul este o unitate central de prelucrare (Central Processing Unit - CPU) ncorporat ntr-o capsul de circuit integrat, el fiind coordonatorul tuturor operaiilor efectuate de ctre calculator. Are rolul de a citi instruciunile dintr-o zon de memorie, de a decodifica i executa comenzile corespunztoare.

Pentru ca microprocesorul s poat citi codul instruciunii care urmeaz a fi decodificat i executat, el trebuie s genereze o adres care va fi pstrat n memorie pn cnd din celula selectat pe baza acestei adrese va putea fi citit data cerut. Pentru a putea fi memorat starea liniilor de adres n timpul operaiei de citire, microprocesorul are nevoie de o memorie intermediar numit registru tampon de adrese (Address Buffer - AB). Informaia codificat care a fost citit, trebuie i ea depus ntr-un registru intermediar, numit registru tampon de date (Data Buffer - DB).

Traseele de cupru cu ajutorul crora se va genera informaia binar care reprezint o adres se numesc magistral de adrese (Address BUS - ABUS), iar cele care vor genera informaii corespunztoare datelor citite sau scrise n memorie poart denumirea de magistral de date (Data BUS - DBUS).

Pentru a putea efectua diferite calcule aritmetice i logice, microprocesorul are nevoie de o unitate aritmetic i logic (Arithmetic and Logic Unit - ALU).

Pentru a putea fi executat o anumit instruciune procesorul conine i o unitate de comand (Command Unit - CU). Aceast component programeaz execuia secvenial n timp a tuturor manevrelor necesare pentru a putea executa instruciunea; ea genereaz semnalele de comand pentru ntregul sistem, dirijeaz fluxul de date, coreleaz viteza de lucru a unitii centrale cu timpul de acces al memoriei etc. Activitatea sa este "pilotat" de un semnal de ceas a crui frecven (deocamdat) este de ordinul Mhz-ilor.

Semnalele prin care microprocesorul d comenzi de execuie spre memorie sau spre alte componente ale sistemului poart denumirea de semnale de comand. Semnalele prin care microprocesorul primete informaii despre diferite componente ale sistemului se numesc semnale de stare. Traseele de cupru pe care circul aceste semnale formeaz magistrala de comenzi (Command BUS - CBUS).

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.

Structura unui microprocesor Intel

n continuare ne vom ocupa n principal de microprocesoarele 8086 i 8088, acestea fiind denumite de crile de specialitate microprocesoare convenionale. Ori de cte ori vom face referire la un alt microprocesor i vom indica numele.

Microprocesoarele 8086 i 8088 au o structur pe 16 bii, deosebirea esenial dintre ele constnd n faptul c 8088 este proiectat cu o magistral de date extern de 8 bii, n timp ce 8086 dispune de una de 16 bii. Aceasta nseamn c pot fi transferai pe magistrala de date extern 8, respectiv 16 bii deodat. Din motive comerciale, Intel a pstrat compatibilitatea cu microprocesoarele aprute anterior, ceea ce nseamn c orice program care funcioneaz cu un anumit microprocesor va funciona i cu orice alt microprocesor aprut ulterior.

Microprocesorul Intel are dou componente majore: unitatea de interfa cu magistrala (Bus Interface Unit - BIU) i unitatea de execuie (Executive Unit - EU).

Unitatea de interfa cu magistrala transmite procesorului instruciuni i operanzi i rezultatele unor prelucrri spre memoria intern sau dispozitivele de intrare/ieire. Principalele componente ale sale sunt regitrii de segment, registrul pointer de instruciuni, dispozitivul de adresare i coada fluxului de instruciuni.

Unitatea de execuie are rolul de a executa instruciunile care i sunt transmise de ctre BIU. Principalele sale componente sunt regitrii generali, registrul de manevr pentru memorarea operanzilor, unitatea aritmetico-logic (ALU) i registrul indicatorilor de stare i control.

Magistralele cu ajutorul crora se realizeaz comunicarea dintre microprocesor i celelalte componente ale sistemului de calcul sunt: magistrala de date (pe 16 bii), magistrala de adres (pe 20 de bii) i magistrala de comenzi.

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.

Tabela vectorilor de ntrerupere

Tabela vectorilor de ntrerupere permite asocierea dintre tipul ntreruperii (reprezentat de un numr ntre 0 i 255) i rutina de tratare a ntreruperii. Fiecare intrare a tabelei ocup 4 bytes, ea coninnd adresa rutinei de tratare a ntreruperii. Tabela ocup prima zon a memoriei interne i poate avea pn la 256 de intrri.

La apariia unei ntreruperi este suspendat execuia instruciunilor programului curent i sunt salvate pe stiv registrul cu indicatorii de stare i control i adresa instruciunii urmtoare; apoi este activat rutina de tratare a ntreruperii.

Unitatea aritmetic i logic

Pentru efectuarea operaiilor aritmetice procesorul are nevoie de circuite specializate n acest sens. n aritmetica binar operaiile aritmetice pot fi descrise cu ajutorul unor funcii logice, de aceea este normal ca circuitele respective s fie utilizate i pentru operaiile logice propriu-zise. Aceste circuite utilizate de procesor pentru efectuarea operaiilor aritmetice i logice poart denumirea de unitate aritmetic i logic. ALU face parte din unitatea de execuie a microprocesorului, ea avnd i rolul de a gestiona indicatorii de stare i control ai microprocesorului i de a manevra regitrii generali i operanzii instruciunilor. Regitrii i cile de date interne sunt de 16 bii, deoarece se dorete mrirea transferurilor interne.

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.

Adrese fizice i adrese logice

Adresa fizic este o valoare reprezentat pe 20 de bii care identific n mod unic fiecare locaie de memorie aflat n spaiul de adresare. Ca urmare aceast adres poate fi un numr cuprins ntre 0 i 220-1.

Pentru a nu depinde de locul n care este pstrat codul n memorie, programele folosesc adresele logice n locul celor fizice. Adresa logic este dat de o valoare de baz de segment i o valoare de deplasament. Valoarea de baz a segmentului indic adresa primului byte al segmentului care conine locaia i este exprimat n paragrafe. Deplasamentul reprezint numrul de octei dintre locaia respectiv i nceputul segmentului. Att adresa de baz ct i deplasamentul sunt reprezentate pe 16 bii.

Este posibil ca mai multe adrese logice s localizeze o aceeai locaie de memorie atunci cnd aceasta face parte din segmente diferite. De exemplu adresele logice F000:FFF0 i FFFF:0000 indic aceeai locaie de memorie i anume cea care are adresa fizic FFFF0. Generarea adresei fizice cu ajutorul adresei logice se realizeaz nmulind cu 16 valoarea bazei segmentului (shiftare spre stnga cu 4 poziii) i adugnd deplasamentul.

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 i 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 modificai 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.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////