You are on page 1of 239

Cuprins

Prefa .................................................................................................................. 1. Calculatorul i sistemul de operare. Noiuni introductive ....................


1.1. Introducere ............................................................................................................................ 1.2. Noiuni preliminarii ............................................................................................................... 1.3. Principalele componente ale unui sistem de operare .................................................... 1.4. Resursele fizice ale unui sistem de calcul ....................................................................... 1.4.1. Memoria .................................................................................................................... 1.4.2. Microprocesorul ...................................................................................................... 1.4.3. Dispozitive de stocare (memoria secundar) ................................................... 1.4.4. Dispozitive de intrare ieire ............................................................................. 1.5. Modalitatea general de funcionare a unui calculator ............................................... 1.6. Software ................................................................................................................................. 1.7. Limbaje de nivel nalt i de nivel jos. Instruciuni ........................................................ 1.8. Compilatoare i asambloare ................................................................................................ 1.9. Editarea de legturi ............................................................................................................. 1.10. Interpretoare ...................................................................................................................... 1.11. Monoprocesare i multiprocesare. Definiii .................................................................. 1.12. Rezumat .................................................................................................................................

7 9 9 10 13 15 15 18 19 19 21 22 23 24 25 26 27 29 30 30 33 47 49 51 53 54

2. Microprocesorul .............................................................................................
2.1. Microprocesorul, componenta principal a calculatorului ............................................ 2.2. Ciclul fetch decode execute ........................................................................................ 2.3. Familia de procesoare X86 ................................................................................................ 2.3.1. Microprocesorul 80286 (286) ............................................................................. 2.3.2. Microprocesorul 80386 (386) ............................................................................ 2.3.3. Microprocesorul 80486 (486) ............................................................................ 2.3.4. Microprocesorul Pentium ......................................................................................

2.3.5. Microprocesorul Pentium MMX .......................................................................... 2.3.6. Microprocesorul Pentium II (Klamath) .......................................................... 2.3.7. Microprocesorul Pentium III .............................................................................. 2.3.8. Microprocesorul Pentium 4 .................................................................................. 2.4. Coprocesoare ......................................................................................................................... 2.4.1. Coprocesoare matematice .................................................................................... 2.4.2. Tipuri de date admise de ctre un coprocesor matematic .......................... 2.4.3. Procesoare DSP (Digital Signal Processor) ...................................................... 2.5. Extensii MMX ........................................................................................................................ 2.6. Elemente de arhitectur intern a procesorului .......................................................... 2.6.1. Registrele ................................................................................................................. 2.6.2. Unitatea de interfa cu magistrala ................................................................. 2.6.3. Unitatea de control ............................................................................................... 2.6.4. Unitatea de execuie a ntregilor ...................................................................... 2.6.5. Unitatea de prelucrare n virgul mobil .......................................................... 2.6.6. Memoria cache de nivel 1 i controller-ul de memorie cache ...................... 2.7. Elemente de arhitectur extern a microprocesorului ............................................... 2.7.1. Procesorul i magistralele de memorie .............................................................. 2.7.2. Magistrala sistem funcii i caracteristici ................................................... 2.7.3. Magistralele procesorului i magistralele de memorie ................................. 2.7.4. Magistrala de date dintre procesor i memorie ............................................. 2.7.5. Magistrala de adrese dintre procesor i memorie ......................................... 2.7.6. Mrimea magistralei de adrese pentru diverse procesoare ....................... 2.8. Ceasuri de sistem ................................................................................................................. 2.9. Noiuni de multiprocesare .................................................................................................. 2.10. Funcionarea i operarea ntreruperilor ....................................................................... 2.10.1. Generaliti referitoare la ntreruperi ........................................................... 2.10.2. Controllere de ntreruperi ................................................................................. 2.10.3. Linii IRQ i magistrala de sistem ..................................................................... 2.10.4. ntreruperi nemascabile .....................................................................................

58 59 60 60 61 61 63 65 66 67 67 68 68 69 69 70 71 71 72 73 73 74 75 75 77 78 78 81 82 83

2.11. Procesoarele RISC .............................................................................................................. 2.11.1. Introducere ............................................................................................................ 2.11.2. Tipuri de procesoare RISC ................................................................................. 2.11.2.1. Procesoarele din seria MIPS (Silicon Graphics) .............................. 2.11.2.2. Procesoarele din seria SPARC (Sun Microsystem) ......................... 2.11.2.3. Procesorul PA-RISC (Hewlett Packard) ............................................ 2.11.2.4. Procesoarele PowerPC (IBM i Motorola) ......................................... 2.11.2.5. Procesoarele Alpha-DEC (Digital) ....................................................... 2.11.3. Concluzii i viitorul procesoarelor RISC .........................................................

84 84 88 88 89 91 91 92 92 93 93 93 94 105 107 108 111 111 111 115 122 125 125 128 132 136 141 150 150 152

3. Introducere n limbajul de asamblare INTEL ........................................


3.1. Elemente arhitecturale de baz ale ale microprocesorului INTEL .......................... 3.1.1. Regitrii microprocesorului INTEL ..................................................................... 3.1.1.1. Regitri de uz general .............................................................................. 3.1.1.2. Registrul pointer de instruciuni (IP) .................................................. 3.1.1.3. Registrul indicatorilor de stare (FLAGS) ........................................... 3.1.1.4. Regitrii de segment ................................................................................ 3.2. Elemente ale limbajului de asamblare ............................................................................. 3.2.1. Formatul general al unei instruciuni n limbaj de asamblare ...................... 3.2.2. Nume de variabile i etichete ............................................................................. 3.2.3. Directive de segment simplificate ..................................................................... 3.2.4. Adrese de memorie i valori ................................................................................ 3.2.5. Instruciuni ale microprocesorului INTEL ...................................................... 3.2.5.1. Instruciuni logice .................................................................................... 3.2.5.2. Instruciuni de deplasare i de rotaie .............................................. 3.2.5.3. Instruciuni aritmetice .......................................................................... 3.2.5.4. Instruciuni de salt ................................................................................. 3.3. Exemple de programe .......................................................................................................... 4. Memoria i magistralele de sistem ...................................................................................... 4.1. Introducere ............................................................................................................................ 4.2. Memoria cache ......................................................................................................................

4.3. Regiuni i partiii de memorie ........................................................................................... 4.3.1. Segmentarea ............................................................................................................ 4.3.2. Paginarea .................................................................................................................. 4.3.3. Segmentare i paginare ........................................................................................ 4.4. Modaliti de stocare a datelor n memorie .................................................................. 4.5. Memoria virtual ................................................................................................................... 4.5.1. Introducere ............................................................................................................. 4.5.2. Cererea de pagini ................................................................................................... 4.5.3. Tratarea fenomenului de page-fault ................................................................. 4.5.4. Algoritmi de nlocuire a paginilor ....................................................................... 4.5.4.1. Algoritmul FIFO ....................................................................................... 4.5.4.2. Algoritmul de nlocuire optim ............................................................. 4.5.4.3. Algoritmul LRU (Least Recently Used) ............................................... 4.5.5. Suprapuneri ............................................................................................................. 4.5.6. Setarea memoriei virtuale ................................................................................... 4.6. Magistrale de sistem ........................................................................................................... 4.6.1. Arhitectura monomagistral ................................................................................ 4.6.2. Arhitectura multimagistral ............................................................................... 4.7. Memoria extern .................................................................................................................. 4.7.1. Hard-diskul ............................................................................................................... 4.7.2. Discuri optice .......................................................................................................... 4.7.2.1. CD-ROM (Compact Disk-Read Only Memory) .................................... 4.7.2.2. DVD (Digital Versatile Disk Digital Video Disk) ............................ 4.7.3. Discuri floppy ..........................................................................................................

156 158 159 160 161 164 164 169 170 173 173 174 174 175 177 178 179 182 183 183 186 186 191 193 195 195 195 196 198 198

5. Reele de calculatoare ..................................................................................


5.1. Introducere ............................................................................................................................ 5.2. Topologii ................................................................................................................................. 5.2.1. Topologii fizice ........................................................................................................ 5.2.2. Topologii logice ....................................................................................................... 5.2.2.1. Topologia broadcast ................................................................................

5.2.2.2. Topologia token passing .......................................................................... 5.3. Echipamente de reea ......................................................................................................... 5.4. Modele utilizate n dezvoltarea i studiul reelelor de calculatoare ...................... 5.4.1. Introducere ............................................................................................................. 5.4.2. Necesitatea unui model ierarhic ........................................................................ 5.4.3. Modelul ISO OSI ................................................................................................ 5.4.3.1. Nivelul aplicaie ........................................................................................ 5.4.3.2. Nivelul prezentare ................................................................................... 5.4.3.3. Nivelul sesiune .......................................................................................... 5.4.3.4. Nivelul transport....................................................................................... 5.4.3.5. Nivelul reea ............................................................................................. 5.4.3.6. Nivelul legturii de date ........................................................................ 5.4.3.7. Nivelul fizic ............................................................................................... 5.4.4. Modelul TCP IP .................................................................................................... 5.4.4.1. Introducere ............................................................................................... 5.4.4.2. Nivelul aplicaie ........................................................................................ 5.4.4.3. Nivelul transport ..................................................................................... 5.4.4.4. Nivelul Internet ....................................................................................... 5.4.4.5. Nivelul gazd la reea ....................................................................... 5.5. Internetul i reelele de calculatoare ............................................................................ 5.5.1. Introducere i concepte de baz ....................................................................... 5.5.2. Internet scurt istoric ........................................................................................ 5.5.3. Definiia unui protocol de reea ......................................................................... 5.5.4. Naterea stivei de protocoale TCP-IP .............................................................. 5.5.5. Arhitectura Internetului ..................................................................................... 5.5.6. Componente Internet ............................................................................................ 5.5.6.1. Calculatoare gazd, clieni i servere ................................................. 5.5.6.2. Servicii orientate pe conexiune ........................................................... 5.5.6.3. Servicii neorientate pe conexiune .......................................................

199 200 205 205 206 207 208 209 210 211 216 218 219 220 220 222 222 222 223 223 223 226 227 229 230 232 232 234 235 236

Bibliografie ..........................................................................................................

Prefa
Aceast carte prezint o serie dintre elementele organizatorice i arhitecturale ale calculatoarelor, presupunndu-se c cei care o folosesc au deja noiuni preliminarii legate de bazele aritmeticii, bazele logicii booleene i circuite digitale. n acest sens, cartea este conceput pentru a fi utilizat n cadrul cursurilor de organizarea i arhitectura calculatoarelor. n capitolul 1 sunt prezentate noiuni introductive legate de calculator i sistemul de operare, memorie, microprocesor, dispozitive de stocare, dispozitive de intrare/ieire, modalitatea general de funcionare, limbaje de nivel nalt i nivel jos, asambloare i interpretoare. Capitolul al doilea abordeaz microprocesorul, componenta principal a calculatorului. La nceputul capitolului sunt prezentate ciclul de baz al funcionrii microprocesorului i familia de procesoare x86, continundu-se cu prezentarea coprocesoarelor i a elementelor de arhitectur intern i extern a procesorului. n finalul capitolului sunt oferite noiuni de multiprocesare, funcionarea i operarea ntreruperilor i arhitectura procesoarelor RISC. n capitolul 3 este fcut o introducere n limbajul de asamblare Intel, prezentndu-se aici elementele arhitecturale de baz ale microprocesorului Intel, formatul unei instruciuni n limbaj de asamblare, directive de segmentare simplificate, precum i o serie dintre cele mai utilizate instruciuni ale microprocesorului Intel mpreun cu nite exemple de programe. Capitolul al 4-lea continu cu prezentarea memoriei unui sistem de calcul, a memoriei cache i a modalitilor de utilizare eficient a memoriei prin intermediul paginrii i segmentrii. Sunt prezentate, de asemenea, modaliti de stocare a datelor n memorie, 7

noiuni legate de administrarea memoriei virtuale, magistralele de sistem i memoria extern. Datorit faptului c n zilele noastre practic nu mai exist calculatoare de sine stttoare ci calculatoare conectate la reea (fie la Internet, fie la reeaua local LAN), n ultimul capitol sunt prezentate noiuni de baz referitoare la reelele de calculatoare. La nceputul capitolului sunt nfiate topologiile de reea, apoi se continu cu prezentarea echipamentelor de reea i a modelelor utilizate n dezvoltarea i studierea reelelor de calculatoare. n finalul capitolului sunt prezentate arhitectura Internetului i componentele acestuia. Recomand aceast carte n primul rnd studenilor din anul I de la Facultatea de Cibernetic, Statistic i Informatic Economic din cadrul ASE Bucureti ce urmeaz cursul de Sisteme de Calcul i Operare, precum i tuturor acelor studeni ce studiaz cursuri de arhitectur a calculatoarelor i a sistemelor de operare. Autorul

1
CALCULATORUL I SISTEMUL DE OPERARE. NOIUNI INTRODUCTIVE
1.1 Introducere n ultimii ani calculatoarele au devenit, indiscutabil, componente vitale ale societii, fiind prezente n activiti din cele mai diverse n industrie, economie, educaie, sntate, cercetare; practic n orice domeniu economic sau social al societii. De asemenea, calculatoarele au produs o nou revoluie pentru civilizaie, revoluia informaional adus de acestea ncadrndu-se dup revoluiile din agricultur i din industrie. Contribuind la creterea puterii intelectuale a omenirii, calculatoarele au afectat i afecteaz n continuare toate domeniile investigaiei tiinifice, cercetarea computaional conlucrnd cu cea teoretic i cea experimental n explorarea de noi frontiere ale cunoaterii n cele mai diverse domenii: biologie, chimie, astronomie, medicin, etc. Revoluia din domeniul calculatoarelor evolueaz continuu; aplicaii care pn ieri erau de domeniul tiinifico-fantasticului sunt astzi aplicaii banale, de la automatele bancare la microprocesoarele integrate n automobile, de la calculatoarele mobile ultra-compacte i miniaturizate la Internet i World Wide Web. Cartea de fa i propune s nfieze aspectele mai ascunse, de detaliu ale acestei mainrii extraordinare care este calculatorul personal. Sunt prezentate aici elementele arhitecturale vizibile programatorului (mulimea de instruciuni a procesorului, numrul de bii utilizai pentru reprezentarea datelor, mecanisme de intrare/ieire, tehnici de adresare, etc.) precum i cteva elemente organizatorice (funcionaliti legate de semnale de control, interfee, tehnologii de memorie). Primul capitol trateaz aspectele fundamentale, ideile i definiiile de baz legate de componentele hardware i software ale calculatoarelor. 9

Elemente de arhitectur a sistemelor de calcul i operare

1.2 Noiuni preliminarii Calculatorul este un dispozitiv extrem de complex; pentru a putea nelege mai bine arhitectura sa i modalitatea de funcionare, de regul se apeleaz la o mprire ierarhic pe componente. Aceste componente ierarhice pleac de la nivelul cel mai de jos (nivelul cel mai apropiat de structura hardware-fizic a calculatorului) i continu apropierea de utilizator prin considerarea elementelor nivelului mai nalt (nivelul apropiat de componenta software-programe a calculatorului). Componentele unui astfel de model ierarhic sunt prezentate n figura 1.1.

Fig. 1.1 Niveluri ierarhice n studiul calculatoarelor

Aa cum se observ n acest desen, nivelurile inferioare sunt constituite de componentele hardware (tranzistori, circuite integrate, pori logice) ce stau la baza construciei calculatorului. Urmeaz apoi unitile funcionale ale microprocesorului (unitatea de control ce administreaz ntreaga funcionare, unitatea aritmetico-logic ce execut operaiile aritmetice i logice, memoria, magistralele de conexiune etc.) i ne apropiem de nivelul superior al programelor de aplicaii (cel mai apropiat de utilizator) prin nivelul microprogramat, nivelul limbajului de asamblare i nivelul limbajelor de programare de nivel nalt. 10

Calculatorul i sistemul de operare. Noiuni introductive

Din punct de vedere fizic, un calculator este constituit din patru componente de baz: microprocesorul, denumit i UCP (Unitatea Central de Procesare), este componenta care controleaz modalitatea de funcionare a calculatorului i execut i operaiile de procesare a datelor; memoria principal necesar pentru stocarea datelor; interfeele de intrare/ieire necesare pentru asigurarea interaciunii calculatorului cu mediul extern (introducere de date/oferirea rezultatelor); componenta de conexiune ntre componente magistrala de sistem este mecanismul ce ofer modalitatea de comunicare ntre componentele sistemului. Aceste componente sunt ilustrate n figura 1.2.

Fig. 1.2 Componentele arhitecturale de baz ale unui calculator

Pentru a putea funciona, un computer are nevoie, pe lng componentele fizice din care este alctuit, de nite programe special scrise pentru a putea rezolva n mod automatizat anumite sarcini. Fr existena unor programe speciale un calculator nu poate fi utilizat, nu se pot introduce date de la tastatur, nu se pot afia rezultate pe ecranul monitorului i nu se poate porni un program de aplicaie sau, dac vrei, un joc pe calculator. Totalitatea resurselor fizice de care dispune calculatorul formeaz 11

Elemente de arhitectur a sistemelor de calcul i operare

componenta hardware, pe cnd celelalte resurse logice, formate din diverse programe i rutine formeaz componenta software. Componenta software cuprinde dou categorii distincte de programe: programele de aplicaii i programele de sistem, sau, pe scurt, sistemul de operare. Sistemul de operare este constituit dintr-o serie de rutine software ce asigur interfaa ntre componenta hardware i programele de aplicaii (figura 1.3). Toate celelalte componente software sunt guvernate de ctre sistemul de operare i ruleaz sub ndrumarea acestuia. Accesul la componentele hardware ale sistemului (calculatorului) se face numai prin intermediul sistemului de operare. Sistemul de operare are, deci, rolul de a asigura interfaa ntre hardware i software; din aceast cauz, programarea aplicaiilor se face innd cont de acest rol primordial al sistemului de operare. Programatorii de software de aplicaii pot astfel utiliza diverse rutine ale sistemului de operare pentru a avea un acces mai simplu la operaiile de intrare/ieire cu partea hardware a sistemului.
PROGRAME DE APLICAII Utilizator SISTEMUL DE OPERARE HARDWARE

Fig. 1.3 Sistemul de operare asigur interfaa ntre hardware i programele de aplicaii

Componentele unui sistem de operare ofer funcionaliti diverse, cum ar fi asigurarea comunicrii cu dispozitivele periferice (operaiile de intrare/ieire) sau preluarea de comenzi de la utilizator i execuia diverselor comenzi (crearea unui fiier sau director, lansarea n execuie a unui program, accesarea memoriei, adugarea unei noi componente hardware calculatorului, etc.). Majoritatea acestor sarcini reprezint cerine sine qua non pentru toate programele de aplicaie. Deoarece programele de aplicaie acceseaz partea hardware prin intermediul sistemului de operare, rolul acestuia din urm este, prin urmare, acela al unui depozit sau biblioteci ce conine astfel de rutine ce asigur accesul la dispozitivele hardware ale calculatorului. Existena unei astfel de biblioteci de rutine software pentru acces la componenta hardware asigur simplificarea programrii la nivelul software-ului de aplicaie, avnd n vedere c sarcinile legate de operaiile de intrare/ieire nu sunt totdeauna dintre cele mai simplu de programat. Din punct de vedere hardware, computerele provenite de la diveri productori nu sunt compatibile ntre ele 100%. De aceea, un program 12

Calculatorul i sistemul de operare. Noiuni introductive

software scris pentru un anumit calculator nu va rula pe un calculator provenit de la un productor ce utilizeaz un alt tip de microprocesor (denumit i UCP Unitatea Central de Procesare), spre exemplu. Este cazul i sistemelor de operare: un sistem de operare scris pentru un calculator de tipul IBM-PC nu va rula pe un calculator SUN-Sparc i viceversa. Deoarece componentele hardware sunt diferite iar sistemul de operare reprezint interfaa ntre software i hardware, i interfaa trebuie s fie diferit, drept urmare sistemul de operare trebuie s conin rutine diferite. Aceste rutine ale sistemului de operare ce comunic direct cu partea hardware pot fi diferite ns ele constituie o platform de interfa consistent pentru asigurarea comunicrii cu programele de aplicaii. Datorit acestei interfee, programatorii de aplicaii pot ignora diferenele hardware i se pot concentra asupra aplicaiei n sine. 1.3 Principalele componente ale unui sistem de operare Evoluia din punct de vedere hardware a computerelor a determinat i o evoluie la nivel software. Din acest punct de vedere, sistemele de operare moderne au o serie de componente principale (figura 1.4), asigurnd urmtoarele funcii de baz: Interfaa cu utilizatorul; Managementul memoriei; Managementul fiierelor; Managementul microprocesorului; Managementul dispozitivelor periferice. Acest capitol fiind unul introductiv, vom prezenta n continuare n linii mari caracteristicile generale ale acestor cinci funciuni de baz oferite de ctre un sistem de operare modern. Interfaa cu utilizatorul. Componenta sistemului de operare ce asigur interfaa cu utilizatorul (denumit n marea majoritate a cazurilor componenta shell), ofer modalitile prin care utilizatorul i programele de aplicaii pot comunica cu sistemul de operare i pot efectua cereri de servicii ctre acesta. Interfeele simple la linia de comand din MS-DOS i UNIX sunt exemplele clasice, n timp ce n ultimii ani s-au impus interfeele grafice de tip GUI (Graphical User Interface) ale sistemelor de operare Windows, Macinstosh sau interfeele (de asemenea grafice) de tip X-Window (KDE, Gnome, etc.) ale diverselor variante de Linux sau UNIX. Prin intermediul interfeelor grafice se pot selecta simboluri grafice (icon-uri) cu ajutorul mouse-ului, se pot selecta opiuni din meniurile ferestrelor grafice, se pot lansa n execuie programe etc. 13

Elemente de arhitectur a sistemelor de calcul i operare

Managementul fiierelor reprezint capacitatea unui sistem de operare (ntlnit de regul sub numele de sistem de fiiere) de a permite utilizatorilor i programelor de aplicaie de a manipula (crea, modifica, redenumi, modifica, terge, etc.) fiiere i directoare.

Interfaa cu utilizatorul (SHELL)

Managementul fiierelor

Managementul procesorului

Managementul dispozitivelor periferice

Managementul memoriei

Fig. 1.4 Principalele funciuni ale unui sistem de operare

Managementul microprocesorului asigur o bun administrare a modalitii de utilizare a microprocesorului i a timpului alocat de acesta diverselor programe n execuie. Noiunea de baz cnd este vorba de timpul alocat de procesor diverselor instane ale programelor aflate n execuie (cunoscute sub denumirea de procese) este cea de ciclu de ceas. Managementul dispozitivelor periferice se refer la responsabilitatea sistemului de operare de a administra comunicaiile cu dispozitivele periferice ale calculatorului, de exemplu cu: tastatura, mouse-ul, ecranul, imprimanta, scanner-ul, modem-ul, unitatea de CD-ROM, etc. n fine, ultima funcie de baz, managementul memoriei este legat de administrarea resurselor de memorie principal a sistemului. Se cunoate faptul c pentru a putea fi lansat n execuie, un program are nevoie de memorie. Prin funcia de management al memoriei, sistemul de operare asigur n timpul funcionrii calculatorului alocarea spaiului necesar aplicaiilor s ruleze, asigurnd ca spaiile de memorie alocate aplicaiilor s nu interfereaz ntre ele sau s nu se suprapun peste spaiul de memorie alocat nsui sistemului de operare. Orice sistem de operare modern, fie c este vorba despre UNIX, Linux sau Windows, ofer toate aceste funcionaliti. Chiar dac acestea au fost prezentate separat, nu nseamn c ele nu interacioneaz ntre ele; din 14

Calculatorul i sistemul de operare. Noiuni introductive

contr, toate aceste componente ale unui sistem de operare conlucreaz mpreun pentru buna funcionare a sistemului de calcul. Spre exemplu, s considerm cazul n care dorim s deschidem un fiier pentru a-l tipri la imprimant. Ce operaii rezolv sistemul de operare pentru acest lucru? n primul rnd, sistemul de fiiere preia numele fiierului i determin locaia precis a acestuia n cadrul sistemului de fiiere de pe hard-disk. n continuare, rutinele de management al dispozitivelor periferice folosesc aceast locaie pentru a accesa hard-disk-ul i a citi fiierul. n acest timp, managementul memoriei se ocup cu asigurarea spaiului de memorie necesar pentru a stoca temporar fiierul, managementul procesorului ofer suport pentru a ghida n continuare procesorul pentru a iniia rutina de management a dispozitivelor periferice pentru a accesa imprimanta i a face n final tiprirea. Toat aceast succesiune complicat de operaii se petrece de fiecare dat cnd deschidem un fiier pentru editare sau pentru tiprire, ne pregtim s trimitem un e-mail sau un fax, totul ntmplndu-se transparent fa de utilizator. 1.4 Resursele fizice ale unui sistem de calcul 1.4.1 Memoria Memoria unui sistem de calcul se poate mpri n dou clase mari de memorie: memoria principal sau intern (pe scurt, memorie) i memoria secundar sau extern (reprezentat de diferite medii de stocare externe, cum ar fi dischetele, hard-disk-ul, CD-ROM-ul, etc.). Pentru a putea fi executat, un program trebuie mai nti ncrcat n memoria principal. Un sistem de calcul nu poate executa un program direct de pe un suport de memorie extern (din memoria extern) i nici nu poate manipula date stocate n memoria extern dect dac acestea au fost ncrcate n prealabil n memoria intern. Memoria principal conine ntotdeauna programul curent ce se execut i datele curente ce sunt procesate. n timp ce memoria intern este o memorie volatil, al crui coninut se pierde o dat cu nchiderea calculatorului, memoria extern reprezint modalitatea de stocare a datelor pe termen lung, fiind o memorie nevolatil. Memoria intern este de regul identificat cu aa-numita memorie RAM (Random Access Memory), o memorie care poate fi att citit ct i scris. Operaia prin care o valoare este adus (citit) de la o anumit adres din memorie poart numele de citire din memorie, pe cnd operaia de stocare a unei valori la o adres de memorie poart numele de scriere n 15

Elemente de arhitectur a sistemelor de calcul i operare

memorie. Operaia de citire este o operaie nedistructiv, n sensul n care valoarea citit rmne stocat n memorie, pe cnd operaia de scriere este o operaie distructiv, n sensul c valoarea anterioar din memorie se pierde, fiind nlocuit cu noua valoare scris n memorie. Coninutul memoriei RAM poate fi att citit ct i scris, deci modificat cu uurin. Programele utilizeaz memoria RAM pentru a fi executate i a procesa date. Un alt tip de memorie este memoria ROM (Read Only Memory) care poate fi citit, nu i scris. Acest tip de memorie este folosit pentru a stoca date legate de configuraia hardware a calculatorului, aa-numitul BIOS (Basic Input Output System), cipul responsabil de stocarea programului bootstrap, ce reprezint programul iniial de configurare a calculatorului. O alt categorie de memorie intern este memoria cache (pronunat ca n englezescul cash). Pe scurt, memoria cache este o memorie intermediar utilizat pentru stocarea valorilor din memoria RAM nainte de a fi prelucrate de microprocesor. Memoria cache este o memorie foarte rapid i este utilizat pentru a mri viteza de procesare a datelor n drumul lor din memoria RAM spre microprocesor. n principal, mecanismul de funcionare a memoriei cache este urmtorul: un program n execuia este stocat n memoria RAM, iar instruciunile i datele programului ce vor fi executate ntr-un timp foarte apropiat sunt aduse nti n memoria ultrarapid de tip cache. De aici, datele i instruciunile sunt transferate ctre microprocesor; n acest mod, microprocesorul va utiliza direct memoria cache care este mult mai rapid dect memoria RAM i, drept urmare, viteza de procesare crete. Singurul tip de memorie mai rapid dect memoria cache este memoria intern a procesorului, format din regitrii microprocesorului. Mai multe detalii despre arhitectura intern a microprocesorului vom analiza n capitolul consacrat microprocesorului. Prezentm n figura 1.5 o ierarhie sub form piramidal a memoriei, n care baza piramidei este alctuit din memoria secundar de tip band magnetic iar vrful este format de regitrii microprocesorului, cu cea mai sczut capacitate de stocare dar cel mai rapid tip de memorie i, totodat, cel mai mare pre. n partea din dreapta a figurii sunt prezentate dimensiunile standard ale celor ase tipuri de memorie din ierarhie. n general exist dou reguli valabile legate de ierarhia de memorie a unui sistem de calcul: Memoria rapid este scump; Memoria ieftin este mai puin rapid; n consecin, se ncearc minimizarea raportului pre/ performan avnd n vedere anumite costuri.

16

Calculatorul i sistemul de operare. Noiuni introductive

Regitrii UCP 2,5 ns Memoria cache de nivel 1 5 ns Memoria cache de nivel 2 15 ns Memoria principal (RAM) 60 ns Hard-disk 20 ms Band magnetic 10 min.

256 B

16 KB

256 KB

128 MB

20 GB

10 TB

Fig. 1.5 O ierarhie a memoriei

Fiecare tip de memorie din ierarhie este administrat de ctre o unitate de control: regitrii microprocesorului sunt administrai de ctre aanumita unitate de control a UCP, memoria cache de nivel 1 (cache L1) este administrat de controller-ul primar de memorie cache iar memoria cache de nivel 2 (cache L2) este guvernat de ctre controller-ul secundar de memorie cache. Memoria principal RAM este administrat de ctre unitatea de management a memoriei (MMU Memory Management Unit) iar hard-disk-ul i banda magnetic de ctre utilizator. De asemenea, la fiecare din cele ase nivele din ierarhie datele sunt grupate n uniti de date diferite din punct de vedere al mrimii (ca numr de octei - bytes), astfel: La nivelul regitrilor UCP unitatea de date se numete cuvnt (word) i poate fi reprezentat pe 2,4 sau 8 octei; La nivelul memoriei cache L1 i L2 datele sunt structurate n linii de memorie 32 de octei; La nivelul memoriei RAM avem de-a face cu pagini de memorie de 4 KB; La nivelul hard-disk-ului i al unitii de band fiierele se msoar de regul n MB.

17

Elemente de arhitectur a sistemelor de calcul i operare

Adresarea memoriei Capacitatea de stocare a memoriei este reprezentat n mod uzual prin MB (Megabytes sau Megaoctei), unde 1 MB=1.024 KB=1.048.576 B. Observaie: De regul, capacitatea de stocare a memoriei se msoar n multipli de bytes (notai cu litera mare B), pe cnd n comunicaii, viteza de transfer a datelor (ntr-o reea de calculatoare, spre exemplu), denumit i lime de band, se msoar n multipli de bii (notai cu litera mic b). Astfel, notaia 1 KB reprezint un kilobyte, pe cnd notaia 1 Kb reprezint un kilobit. Octeii de memorie (sau grupurile de octei) au atribuite o serie de adrese de memorie pentru a putea fi accesai. De regul, octeii sau cuvintele (grupri de octei) sunt numerotai secvenial: 0,1,2, n acest mod, procesorul poate avea acces la o anumit zon de memorie specificnd adresa de memorie a acelei zone. Dac, spre exemplu, microprocesorul trebuie s utilizeze datele stocate n memorie la adresa 1000, nu are de fcut dect s acceseze memoria la adresa 1000. n funcie de tipul de memorie, octetul sau gruparea de octei (reunii sub denumirea de cuvnt - word) reprezint unitatea fundamental adresabil de memorie. Astfel, datele prelucrate de ctre microprocesor la un moment dat pot fi sub form de octei (bytes) sau sub form de cuvinte (words). 1.4.2 Microprocesorul Microprocesorul reprezint componenta principal a unui calculator, fiind considerat, pe bun dreptate, creierul calculatorului. ntlnit i sub denumirea de UCP (Unitatea Central de Procesare), microprocesorul are nevoie totui de un program pentru a putea controla i procesa datele, de aceea coeficientul de inteligen al su depinde ntr-o mare msur i de software. Datele stocate n memorie sunt prelucrate de ctre microprocesor prin intermediul unui program stocat n memorie. n esen, un program reprezint o secven de instruciuni (de genul: adunare, scdere, nmulire, comparare, etc.) care guverneaz modalitatea de prelucrare a datelor de ctre microprocesor. Fiecare instruciune are un cod de operaiei i poate avea unul sau mai muli operanzi, sau nici unul. Codul operaiei specific operaia ce va fi executat, n timp ce operanzii identific datele din memorie asupra cror se va aplica acea operaie (fie c este vorba despre o adunare, scdere, nmulire, comparare, etc.). Mai multe detalii despre componentele i funcionarea microprocesorului vom prezenta n capitolul rezervat acestuia. 18

Calculatorul i sistemul de operare. Noiuni introductive

1.4.3 Dispozitive de stocare (memoria secundar) Datorit faptului c memoria RAM este foarte scump i este, dup cum am mai spus, o memorie volatil, pentru stocarea pentru mai mult timp (nu numai pe parcursul funcionrii calculatorului) a datelor s-a cutat utilizarea unui alt tip de memorie. Acest tip de memorie este memoria extern (sau memoria secundar), care este o memorie relativ rapid, fiabil, ieftin, de mare capacitate i, pe deasupra, ne-volatil. Am vzut mai nainte c un calculator nu poate executa un program dect dac acesta este ncrcat n memoria principal, din acest punct de vedere, memoria principal reprezint memoria utilizat pentru stocarea programului ce se execut i a datelor ce sunt prelucrate iar memoria secundar reprezint memoria folosit pentru stocarea pe termen lung a datelor. 1.4.4 Dispozitive de intrare/ieire Dispozitivele de intrare/ieire (sau dispozitivele periferice) asigur modalitatea prin care utilizatorul are acces la calculator. Dispozitivul de intrare cel mai comun ntlnit este, desigur, tastatura. Pe msur ce caracterele sunt tastate cu ajutorul tastelor de pe tastatur, acestea sunt stocate n memorie i apoi copiate din memorie ctre dispozitivul de baz de ieire, care este monitorul. n linii mari, ecranul monitorului reprezint fereastra prin care utilizatorul poate vizualiza respectivul coninut al memoriei. Imaginea care apare pe ecranul monitorului este, evident, o imagine temporar; n momentul ntreruperii alimentrii cu curent a monitorului aceast imagine dispare; putem ns direciona aceast imagine ctre o imprimant pentru a obine o imagine permanent. Imprimantele cu jet de cerneal sau imprimantele laser reprezint principalele tipuri de imprimante folosite n practic n prezent. Alte tipuri de dispozitive periferice de intrare/ieire sunt reprezentate de dispozitivele magnetice sau de dispozitivele optice. Un exemplu de dispozitiv magnetic l reprezint cardurile cu band magnetic emise de bnci. Banda magnetic a cardului stocheaz informaii ca: numrul de cont al titularului, limita de debit/credit i data de expirare a cardului, acest tip de card fiind citit ntr-o manier asemntoare cu aceea a citirii unei benzi magnetice audio. Printre dispozitivele periferice optice ntlnite n mod frecvent sunt scannerele de uz general, prin intermediul crora imagini de pe hrtie sunt preluate i convertite n format digital ce poate fi prelucrat cu ajutorul calculatorului. Un tip special de scannere l reprezint scannerele 19

Elemente de arhitectur a sistemelor de calcul i operare

(cititoarele) pentru coduri de bare ataate la casele de marcat din majoritatea supermarket-urilor. Dispozitive de interfa Datele sunt stocate n calculator sub forma unor iruri de bii; n acest sens sunt utilizate diverse codificri. La nivelul computerului, aceste reprezentri sunt unice; spre exemplu, dac n reprezentarea intern a calculatorului caracterul Z are forma: 01011010, atunci acest ir de bii este folosit n mod unic pentru a reprezenta caracterul Z. Aceast regul nu este ns valabil pentru dispozitivele periferice sau pentru memoria secundar. n cazul unei tastaturi, fiecare tast genereaz un caracter. n cazul unei imprimante, caracterele sunt reprezentate sub form unor matrice de puncte. Un dispozitiv optic citete informaia prin intermediul intensitii luminoase, n timp ce un dispozitiv magnetic nregistreaz i citete poriuni magnetizate. Fiecare echipament periferic folosete o modalitate proprie de reprezentare a datelor iar aceast reprezentare poate s coincid sau nu cu reprezentarea intern a datelor n calculator. Dac aceste reprezentri sunt diferite este necesar un dispozitiv de translatare dintr-o reprezentare n alta. Aici intervine rolul dispozitivului de interfa, numit i placa de interfa. Considernd cazul tastaturii, atunci cnd o tast este apsat, se transmite un semnal electronic ctre interfaa tastaturii. Ca rspuns la semnalul electronic primit, interfaa tastaturii genereaz codul ce reprezint caracterul stocat n interiorul calculatorului, transfernd acest cod n memoria calculatorului. n cazul unei imprimante, irurile de bii transmise dinspre calculator spre imprimant sunt preluate de interfaa imprimantei, care translateaz aceste iruri de bii n reprezentarea recunoscut de ctre imprimant pentru a se putea face tiprirea. Cele dou dispozitive periferice considerate aici, tastatura i imprimanta, reprezint dou dispozitive diferite din punct de vedere al reprezentrii datelor; datorit existenei dispozitivelor de interfa, ele pot fi conectate la acelai calculator. La intrare, interfaa translateaz semnalele externe ntr-un format ce este recunoscut de ctre calculator. n cazul semnalelor de ieire, acestea sunt convertite din formatul intern al calculatorului n formatul propriu al dispozitivului de ieire respectiv. i n cazul dispozitivelor de memorie secundar legtura dintre calculator i acestea se face prin intermediul interfeelor. Interfaa controleaz din punct de vedere fizic dispozitivul de disc, acceptnd comenzi de citire, scriere, cutare din partea microprocesorului. Atribuirea unei interfee fiecrui echipament conectat la un calculator este un lucru practic n cazul calculatoarelor personale. 20

Calculatorul i sistemul de operare. Noiuni introductive

Pentru calculatoare ce pot avea sute sau mii de echipamente periferice (cazul computerelor mainframe) conectate, modalitatea de comunicare dintre calculator i dispozitivele periferice se schimb: sunt utilizate canale i uniti de control I/O specifice. n acest caz, fiecare dispozitiv fizic are propria unitate de control iar canalul asigur comunicaia cu calculatorul, n timp ce unitatea de control comunic cu echipamentul extern n limbajul acestuia din urm. Canalul i unitile de control acioneaz mpreun pentru a realiza operaia de translatare n ambele sensuri. 1.5 Modalitatea general de funcionare a unui calculator Pentru a putea analiza att structura ct i modalitatea de funcionare ale unui computer digital, trebuie s vedem care sunt etapele necesare unui program pentru a ajunge s fie executat n memoria calculatorului. Vom discuta n continuare despre asambloare, compilatoare, editoare de legturi i interpretoare. Reamintim cteva date importante din istoria computerelor: Blaise Pascal 1642 inventeaz primul calculator mecanic; Charles Babbage 1830 a construit dou maini (funcionau cu aburi!) de calcul: "Difference Engine" i "Analytical Engine"; Fundamentele structurale ale generaiei actuale de computere digitale se bazeaz pe arhitectura elaborat de John von Neumann n anii 1940 (Figura 1.6).
Date de intrare (INPUT) PROCESARE Date de ieire (OUTPUT)

Fig. 1.6 Modelul procesrii datelor al lui John von Neumann

Ideea original a lui von Neumann a fost aceea a unui program executabil care s controleze activitatea unei maini de uz-general. n acest caz programul este o list de instruciuni folosite ntr-un anumit scop iar computerele folosesc memoria intern pentru a stoca att programe ct i date. Vom vedea c pentru a face distincie ntre programe i date (n final acestea se rezum la iruri de bii) trebuie ca acestea s fie stocate n memorie n regiuni specifice diferite. 21

Elemente de arhitectur a sistemelor de calcul i operare

Activitatea complex a unui computer este posibil prin strns interaciune ntre hardware i software. Software-ul este stocat n memorie iar unitatea central de procesare (UCP - procesorul) reprezint partea hardware ce execut practic instruciunile unui program. Este interesant de remarcat faptul c ideea de baz a lui von Neumann a rmas neschimbat de peste 50 de ani: un computer conine un program modificabil aflat n memoria unificat i guverneaz activitile sale operaionale. O mic modificare a fost totui adus acestui concept de baz: aa numita "ARHITECTUR HARVARD", care separ datele de programe i necesit memorii distincte pentru acestea, ct i magistrale de acces diferite. Scopul acestei separri este acela de a crete ratele de transfer i de a mbunti (crete) cantitatea de date procesate n unitatea de timp. 1.6 Software Un program reprezint o serie de instruciuni ce coordoneaz activitatea unui calculator ntr-un ir de etape. Fiecare instruciune spune calculatorului s execute una dintre operaiile de baz: adunare, scdere, nmulire, mprire, comparaie, citire, scriere sau copiere. Pentru a realiza acest lucru, procesorul aduce o instruciune din memorie pe care o execut n timpul unui ciclu main. De regul, o instruciune conine un cod al operaiei ce specific funcia pe care trebuie s o ndeplineasc i o serie de operanzi care identific locaiile de memorie sau regitrii de memorie ce conin datele ce vor fi manipulate. Fiind dat instruciunea: ADD 5,6, aceasta poate spune unui calculator s adune coninutul regitrilor 5 i 6. n acest caz, codul operaiei este ADD. De regul, mulimea de instruciuni pe care le nelege un procesor este limitat. Pentru a aduna dou numere, de fapt sunt utilizate n mod normal nu mai puin de patru instruciuni, deoarece valorile numerelor trebuie aduse din memorie i ncrcate n regitri, apoi valorile din regitri sunt adunate i rspunsul este stocat. n acest caz, cele patru instruciuni sunt: LOAD, LOAD, ADD i STORE. Un calculator ruleaz sub controlul unui program stocat n memorie sub form de bii. Din aceast cauz, pentru a fi executat, programul trebuie s existe sub form de bii (form binar). La nceputurile programrii primelor calculatoare, programatorii scriau programele chiar sub forma unor iruri de bii; lucru deosebit de dificil. Apariia limbajelor de programare, a asambloarelor, compilatoarelor i interpretoarelor a schimbat, din fericire, acest mod de lucru al programatorilor. 22

Calculatorul i sistemul de operare. Noiuni introductive

Noiuni de adresare a memoriei Memoria unui calculator poate fi accesat dac se cunoate o adres de memorie. n acest sens, octeii sunt numerotai secvenial: 0,1,2,3, etc. Componentele hardware lucreaz cu aceste adrese de memorie, cunoscute sub numele de adrese absolute. Programele software folosesc ns alt tip de adresare, adresarea relativ. O adres relativ reprezint o adres de memorie exprimat relativ la o locaie de baz. De exemplu, o rutin a unui program poate fi scris astfel nct primul octet al su se afl la adresa 0 (numit i punct de intrare) iar celelalte adrese sunt exprimate ca adrese de deplasament (offset) relativ la aceast adres. Atunci cnd rutina de program este ncrcat n memorie, adresa absolut de nceput este stocat ntr-un registru, stabilindu-se o adres de baz pentru rutina program. Adresarea relativ are dou scopuri: n primul rnd, permite unei rutine s fie relocalizat n memorie (s poat fi ncrcat ntr-o locaie diferit de memorie de fiecare dat cnd ruleaz). Deoarece fiecare locaie a rutinei este exprimat relativ la punctul de intrare, iar acesta este stocat ntr-un registru de baz, totdeauna este posibil s se calculeze adresa absolut prin adunarea adresei de baz cu adresa de deplasament. n al doilea rnd, deoarece doar adresa de deplasament trebuie stocat n instruciune, sunt necesari mai puini bii pentru a stoca fiecare adres, acest lucru conducnd la existena unor instruciuni de mrime mai mic. 1.7 Limbaje de nivel nalt i de nivel jos. Instruciuni Microprocesoarele au o mulime fix, restrns, de instruciuni denumit mulimea de instruciuni main (sau cod-main). Cu ajutorul acestor instruciuni microprocesoarele pot fi programate s execute sarcinile pe care le dorim. Fiecare productor de cipuri (procesoare), fie c este vorba de Intel, IBM, Sun sau DEC proiecteaz i produce microprocesoare i computere ce posed un limbaj propriu nativ propria mulime de instruciuni main. Acest limbaj conine, de regul, 100-200 de instruciuni diferite. Nu exist n acest caz un standard universal recunoscut cum ar fi codurile ASCII sau UNICODE, spre exemplu. n afara acestor limbaje main ce posed pn la cteva sute de instruciuni, s-au dezvoltat aa numitele limbaje de nivel nalt (HLL High Level Language). De aceea, limbajele main sunt cunoscute i sub titulatura de limbaje de nivel jos (LLL Low Level Language). Limbajele de nivel nalt sunt preferate de regul de ctre programatori, deoarece acestea ofer un set de instruciuni i concepte apropiate de limbajul natural. Exemple: BASIC, Pascal, C, C++, Java. Instruciunile unui astfel de limbaj de nivel nalt trebuie ns translatate n codul main de nivel jos pentru ca 23

Elemente de arhitectur a sistemelor de calcul i operare

microprocesorul s le neleag i s le ruleze. Aceast translatare expandeaz o instruciune HLL n 3-10 instruciuni LLL. Exemplu: HLL (C) ASM i=j+k; MOV eax,[12011234] ADD eax,[12011238] MOV [1201123C], eax 0010 0000 0011 1001 0001 0010 0000 0001 0001 0010 0011 0100 1101 0000 1011 1001 0001 0010 0000 0001 0001 0010 0011 1000 0010 0011 1100 0000 0001 0010 0000 0001 0001 0010 0011 1100 n primele stadii de dezvoltare ale computerelor problema de baz era cum s fie scris un program i apoi cum s fie introdus n memoria computerului. Iniial, programele erau scrise de mn n binar i introduse (tot manual!) n memorie. Instruciunile main pot fi grupate n patru mari categorii. Ele pot fi instruciuni pentru: Transferul i manipularea datelor; Operaii de intrare/ieire; Transferul controlului programului; Controlul mainii (termin procesarea, reseteaz maina etc.). 1.8 Compilatoare i asambloare Compilatoarele translateaz instruciunile HLL n binar cod - main pentru a fi direct executate de ctre computer. Ele au devenit componente de baz ntr-un sistem de calcul, reflectnd, de regul, eficiena cu care resursele harware sunt exploatate de ctre programatori. nainte de apariia limbajelor de nivel nalt i a compilatoarelor, programatorii foloseau limbajul de asamblare (ASM) i asambloarele. Acest lucru avea, de asemenea, avantajul de a nu scrie programe direct n binar. Limbajul de asamblare posed instruciuni cod-main ce poart denumirea de 24

Cod binar main

Calculatorul i sistemul de operare. Noiuni introductive

mnemonice (provin de la cuvintele n englez ce specific aciunea lor) precum ADD, MOV, SUB sau JMP. Programul apare sub forma unei liste de astfel de mnemonice ce pot fi convertite uor n limbajul de cod binar. Programele ce fac aceast translatare se numesc asambloare. Exemple de limbaje de asamblare sunt: MASM (Microsoft Assembler) i TASM (Turbo Assembler dezvoltat de firma Borland). Translatarea unui program HLL se poate face fie prin intermediul unui compilator, fie prin intermediul unui interpretor. Limbajele BASIC i Java au pornit la nceput folosind interpretoare, dar acum exist i compilatoare pentru ele. Pentru a fi executat de ctre microprocesor, un program trebuie s parcurg urmtoarele etape (figura 1.7): Editare (EDIT) Compilare (COMPILE) Editare de legturi (LINK) ncrcare n memorie (LOAD)

Editare (EDIT)

Fiier surs

Compilare (COMPILE)

Fiier obiect (binar)

Editare de legturi (LINK)

Fiier executabil

ncrcare n memorie (LOAD)

Ruleaz

Fig. 1.7 Schema general EDIT-COMPILE-LINK-LOAD

1.9 Editarea de legturi Dimensiunile mari ale programelor de astzi a condus la mprirea acestora n mai multe pri, denumite module. Pentru obinerea unui program executabil, fiecare modul trebuie proiectat, scris i compilat iar apoi toate componentele rezultate trebuie combinate mpreun de un editor de legturi (linker sau link editor). Acest proces nu implic doar punerea mpreun a componentelor, ci presupune rezolvarea referinelor externe. Atunci cnd un program este partiionat n module sunt frecvente cazurile n care codul dintr-un modul trebuie s fac referire la date sau subrutine dintr-un alt modul pereche. Compilatoarele translateaz un singur modul la un moment dat. Atunci cnd un compilator ncearc s determine echivalentul numeric al acestor referine simbolice, va descoperi c nu exist valori valide n cadrul modului curent. Aceste simboluri nerezolvate sunt denumite referine externe i rmn simbolice (fr o valoare numeric) pn n momentul n care editorul de legturi rezolv aceste referine. 25

Elemente de arhitectur a sistemelor de calcul i operare

1.10 Interpretoare Interpretoarele ofer o alternativ pentru a rula programe scrise ntr-un limbaj nalt de programare. n loc de a translata instruciunile de nivel nalt n cod main i de a crea un program executabil, interpretorul citete instruciunile de nivel nalt una cte una i le execut folosind o bibliotec proprie de rutine. n acest mod, codul executabil nu este generat din codul surs ci este coninut n cadrul interpretorului.
Rutine de comenzi

Editare

Fiier surs

Analiz Decodific, selecteaz i execut Erori

Fig. 1.8 Modul de lucru al unui interpretor

Interpretorul "vede" codul surs HLL ca date de intrare care trebuie analizate i apoi trebuie procesate conform semnificaiei lor. Avantajele folosirii unui interpretor sunt: pornirea rapid i aparenta lips a complexitii legate de compilare i editare de legturi. Dezavantajul este c opereaz foarte lent; programele compilate au fost ntotdeauna superioare programelor interpretate. Este ceva obinuit ca interpretoarele s converteasc instruciunile de intrare ntr-o form intermediar alctuit din anumite simboluri, nainte de a se lua o decizie asupra aciunilor ce vor fi executate (figura 1.8). Simbolurile generate sunt apoi trecute unui decodificator care va selecta rutina corespunztoare ce va fi executat. Uneori interpretorul este vzut ca o "main virtual" deoarece se comport ntr-un fel ca o component hardware: citete instruciuni pe rnd i se supune lor. Interpretoarele apropie nivelul execuiei instruciunilor de nivelul programului conceput n limbajul de nivel nalt. Limbajul de programare Java posed o modalitate interesant de compilare i interpretare ilustrat n figura 1.9.

26

Calculatorul i sistemul de operare. Noiuni introductive

1.11 Monoprocesare i multiprocesare. Definiii n continuare prezentm cteva definiii legate de mono-procesare, multi-procesare, execuie paralel, procese i fire de execuie, noiuni necesare pentru nelegerea cunotinelor prezentate n continuare. Calculator monoprocesor Prin definiie, un calculator dotat cu o singur unitate central de procesare (microprocesor) se numete calculator mono-procesor. Calculator multiprocesor Un calculator multiprocesor este un calculator ce conine dou sau mai multe UCP. Task Un task reprezint o mulime de instruciuni executate de ctre un procesor. Din acest punct de vedere, definiia este echivalent cu aceea de aplicaie sau program.

Editare

Fiier surs Java

Compilator Java

Java Byte codes

Interpretor Java

Applet Java

Fiier HTML

Browser Web

Fig. 1.9 Compilarea i interpretarea Java

Sistem de operare monotasking Un sistem de operare este un sistem monotasking dac poate executa o singur aplicaie (sau task) ntr-un anumit moment. Sistemul de operare MS-DOS este un exemplu de sistem de operare monotasking. Sub sistemul de operare MS-DOS un program poate fi executat prin introducerea numelui su la linia de comand. Pn cnd programul curent nu se termin, nu se poate lansa n execuie alt program. 27

Elemente de arhitectur a sistemelor de calcul i operare

Sistem de operare multitasking Un sistem de operare multitasking poate executa mai multe aplicaii (task-uri) n acelai timp. Acest lucru este posibil prin execuia alternativ a unor segmente din cele dou (sau mai multe) task-uri. mprirea task-urilor n segmente i execuia alternativ a acestor segmente poart denumirea de time-slicing. Exist dou tipuri de sisteme de operare multitasking: cooperative i preemptive. Un sistem de operare cooperativ se bazeaz pe capacitatea aplicaiilor ce se execut pentru implementarea multitasking-ului. Aplicaia respectiv trebuie s fac un apel (de sistem) ctre sistemul de operare, ntrerupndu-i execuia i permind altei aplicaii s ruleze. Dac aplicaia nu face acest apel, va prelua controlul complet asupra procesorului, fcnd imposibil execuia altui program. Un exemplu de sistem de operare multitasking cooperativ este Windows 3.1. Un sistem de operare preemptiv nu are nevoie ca aplicaiile s emit apeluri de sistem pentru a permite execuia i a altor programe. Modalitatea de control a sistemului de operare este alta: fiecrei aplicaii i se aloc un timp pentru a rula; n momentul n care acest timp a expirat, aplicaia este automat ntrerupt i se permite altei aplicaii s utilizeze capacitatea de calcul a microprocesorului. Majoritatea sistemelor de operare de astzi sunt sisteme multitasking preemptive (UNIX, Linux, toate variantele de Windows dup Windows NT inclusiv). Execuie n paralel Execuia n paralel (sau paralel) reprezint execuia simultan a dou sau mai multe task-uri pe un calculator multiprocesor. Proces Un proces poate fi definit ca o instan a unui program aflat n execuie. Fiecare proces posed o mulime de instruciuni denumit segment de text ce definete modalitatea de funcionare a procesului i segmentul de memorie ce este folosit pentru execuia acestuia. Segmentul de text conine o instruciune specific prin care se specific unde va ncepe s se execute procesul. Memoria utilizat de ctre un proces este accesibil doar acelui proces. Oricare alt proces are interzis accesul n acest spaiu de memorie. Thread Un thread (fir de execuie) reprezint un flux de execuie n cadrul unui proces; astfel, un singur proces poate conine mai multe fire de execuie. Sistemul de operare asigur controlul acestor fire de execuie i aloc timpi de execuie (de ctre microprocesor) pentru ca acestea s se execute. Multithreading Operaiunea de multithreading este echivalent cu multitasking-ul la nivelul unui singur proces. Acest termen descrie posibilitatea ca o aplicaie 28

Calculatorul i sistemul de operare. Noiuni introductive

ce se execut pe un calculator s aib mai multe fire de execuie. Un proces ce este mprit n mai multe fire de execuie are capacitatea de a executa mai multe seturi de instruciuni n mod concurent. Diferena major ntre execuia mai multor fire de execuie n cazul unui proces i mai multe procese ce se execut pe un sistem este aceea c firele de execuie partajeaz acelai spaiu de memorie n cadrul aceluiai proces, pe cnd procesele separate au spaii de memorie distincte. Multiprocesarea Multiprocesarea poate avea mai multe definiii n funcie de contextul de referin. Avnd n vedere definiia unui proces, o definiie logic a multi-procesrii este aceea a capacitii unui calculator de a executa mai multe procese simultan. Din aceast perspectiv, definiia coincide deci cu definiia multitasking-ului. Din punct de vedere al capacitii fizice a unui calculator de a executa mai multe instruciuni n aceeai perioad de timp, nu ne putem referi dect la calculatoare multiprocesor. n acest caz, definiia multiprocesrii coincide cu definiia execuiei n paralel. Exist i o a treia semnificaie a multiprocesrii, i anume cnd se privete din perspectiva unei anumite aplicaii software. Dac o aplicaie suport multiprocesarea, atunci pot fi executate mai multe instane ale acelei aplicaii n mod concurent. 1.12 Rezumat Un calculator reprezint un dispozitiv complex, a crui cunoatere i nelegere a principiilor de funcionare implic modularizarea studiului pe mai multe nivele structurale. Calculatorul reprezint o conclucrare ntre componentele fizice (hardware) i programe (componenta software). Sistemul de operare asigur interfaa ntre componenta hardware a sistemului de calcul i programele de aplicaii. De asemenea, sistemul de operare cuprinde o colecie (partajat de celelalte programe de aplicaii) ce cuprinde rutine de acces hardware i definete o platform pentru elaborarea de software de aplicaie. Un sistem de operare modern cuprinde o serie de rutine ce asigur urmtoarele funcionaliti de baz: interfaa cu utilizatorul (shell-ul), managementul fiierelor (sistemul de fiiere), managementul procesorului, managementul dispozitivelor periferice i managementul memoriei. Componentele de baz ale unui calculator sunt: unitatea central de procesare (UCP - microprocesorul), memoria principal, dispozitivele de intrare/ieire i magistrala de interconexiune a componentelor. n continuare vom prezenta detalii referitoare la aceste principale elemente arhitecturale ale unui calculator. 29

2
MICROPROCESORUL
2.1 Microprocesorul, componenta principal a calculatorului Microprocesorul reprezint unitatea central de procesare (UCP) a unui calculator, component ultracompact i de o importan major; alegerea acesteia determin limitele performanei i preul sistemului de calcul. Pentru a nelege performanele i capacitile unui calculator, trebuie cunoscute opiunile existente n materie de microprocesoare. n zilele noastre, majoritatea microprocesoarelor care ruleaz software pentru calculatoare personale (PC - Personal Computer) sunt variante mbuntite ale vechiului procesor 8086 (procesor care n 2003 a mplinit 25 de ani de la apariie!) i au la baz arhitectura x86. Datorit popularitii acestui tip arhitectural, chiar i unele procesoare cu o arhitectur diferit (RISC - Reduced Instruction Set Computer) pot rula software pentru PC, emulnd funciunile procesoarelor Intel x86, sau ncorpornd uniti de execuie a instruciunilor compatibile cu cele de la Intel. De remarcat este faptul c, datorit superioritii evidente a procesoarelor RISC, chiar Intel a preluat pentru ultimile modele de procesoare concepte RISC, pstrnd ns compatibilitatea cu vechea arhitectur x86 (Procesoarele Pentium Pro, Pentium II, Pentium III i Pentium 4, chiar i vechiul Pentium). Dac la nceputul anilor 80 unii ingineri de produse RISC ridiculizau familia x86 i i prevedeau un sfrit apropiat, iat c Intel a contrazis aceste previziuni i, mai mult, confruntarea RISC-CISC s-ar putea foarte probabil s aib un deznodmnt contrar celui anticipat acum 20 de ani. Acesta este un exemplu ilustrativ n sensul c afacerile, pe de o parte, i tehnologia, pe de alta, sunt dou lucruri diferite. Cu toate c tehnologia RISC este superioar tehnic celei CISC, vastele 30

Elemente de arhitectur a sistemelor de calcul i operare

resurse ale firmei Intel i succesul prelungit al sistemelor de operare DOS i Windows au meninut vechea arhitectur x86 n competiie. Mai mult, acum situaia s-a inversat: noua arhitectur IA-64 elaborat n parteneriat de ctre Hewlett-Packard i Intel, ar putea duce la declinul tehnologiei RISC. Arhitectura IA-64 reprezint o combinaie de caracteristici inovatoare precum: execuie speculativ, paralelism mbuntit, stiv de registre, arhitectur superioar de ramificare i nu numai. Modalitatea de adresare a memoriei a fost mbuntit pentru a satisface cerinele tot mai mari de memorie ale noilor aplicaii de e-business, depozite de date (data warehousing) sau a altor aplicaii performante pentru servere. Arhitectura IA-64 posed i o arhitectur n virgul mobil superioar i alte modificri n scopul de a oferi suport aplicaiilor staiilor de lucru de nalt performan legate de crearea de coninut digital, proiectare inginereasc sau analiz tiinific. Arhitectura IA-64 se dorete a fi extrem de scalabil pentru a satisface cerinele de cretere a performanelor att pe segmentul de pia destinat staiilor de lucru ct i pe cel al serverelor. Arhitectura IA-64 reprezint un concept revoluionar pe 64 de bii (ISA Instruction Set Architecture) ce aplic o arhitectur tehnologic nou, denumit EPIC (Explicit Parallel Instruction Computing). De asemenea, un element de baz pentru IA-64 este acela al compatibilitii cu mulimea de instruciuni IA-32. Procesoarele sunt dispozitive complicate, incredibil de puternice, dar performanele i proprietile acestora din zilele de azi sunt rezultatul unor ani de evoluie i mbuntiri plecnd de la nite nceputuri umile. Primele dispozitive de calcul erau electromecanice, folosind schimbtoare de stare fizice. Acestea erau foarte ncete, nesigure i zgomotoase datorit componentelor mecanice, ceea ce nsemna c ceva se mica atunci cnd un bit i schimba valoarea. Urmtoarea generaie de dispozitive folosea tuburi cu vacuum. Acestea reprezentau o mbuntire major, n sensul c nu mai aveau pri mictoare. Tuburile electronice au permis crearea primelor calculatoare electronice, care aveau ns multiple probleme n funcionare. O dat cu inventarea tranzistorului n 1948 la Bell Laboratories (SUA), tehnologia s-a mbuntit, tranzistorii fiind mult mai mici, mai rapizi i mai ieftini. n continuare, faptul care a permis crearea procesoarelor moderne a fost inventarea circuitului integrat, care este un grup de tranzistori fabricai dintr-o singur bucat de material i conectai intern, 31

Microprocesorul

fr cablaje externe. Circuitele integrate se mai numesc prescurtat CI sau cipuri. Dintre toate materialele ce conduc curentul electric, doar unele pot s fac acest lucru n anumite condiii. Astfel au aprut semiconductorii. Cel mai folosit semiconductor este siliciul. A aprut astfel tehnologia implantului pe o pastil de siliciu a mai multor tranzistori ce sunt rapizi, siguri i folosesc relativ puin putere. Primul circuit integrat a fost inventat n 1959 de Texas Instruments. El coninea doar ase tranzistori pe o suprafa semiconductoare. Dup inventarea circuitului integrat, a durat puin timp pentru a contientiza imensele beneficii ale miniaturizrii i integrrii unui numr tot mai mare de tranzistori n acelai cip. Tehnica LSI - Large Scale Integration - a nsemnat creearea circuitelor integrate ce au fost construite la nceput din mai multe componente discrete. Aceste dispozitive conineau de regul sute de tranzistori. Primele computere au fost realizate ncorpornd mai multe circuite integrate mici conectate pe circuitul de pe plac. O imagine a unui circuit integrat pe baz de siliciu este prezentat n figura 2.1.

Fig. 2.1 Circuit integrat - microprocesor

O dat cu trecerea timpului, tehnologia LSI s-a mbuntit i cipurile au devenit mai mici, mai rapide i mai ieftine. Bazndu-se pe succesul anterior, inginerii au nvat s ncorporeze mai multe funcii logice ntr-un singur circuit. A aprut astfel VLSI - Very Large Scale Integration tehnologie ce nglobeaz milioane de tranzistori. La nceput, funciile executate de procesor erau implementate folosind cipuri logice diferite. Intel a fost prima companie ce a ncorporat toate aceste componente logice ntr-un singur cip. Acesta a fost primul microprocesor, 4004, produs n 1971. Toate microprocesoarele de astzi sunt descendeni (unii foarte avansai) ai acestui prim cip pe 4 bii.

32

Elemente de arhitectur a sistemelor de calcul i operare

n viitorul apropiat tehnologia VLSI va deveni tehnologie GSI (GigaScale Integration) i chiar TSI (TeraScale Integration). n acest context, gigascale i terascale semnific existena a mai mult de un miliard de cipuri, respectiv un milion de miliarde de componente integrate ntr-un singur cip. Din perspectiva proiectrii de sistem aceast cretere fantastic a nivelului de integrare este calitativ diferit fa de mbuntirile aprute n trecut. n particular, numrul defectelor de manufacturare vor crete, echipamentele vor deveni mai puin fiabile, vor aprea noi nano-tehnologii iar problemele de administrare a puterii i a semnalelor se vor complica. Este foarte probabil ca noile nano-tehnologii s complementeze sau chiar s nlocuiasc tehnologia CMOS. n zilele noastre, tehnologia CMOS (Complementary Metal-Oxide Semiconductor) reprezint tehnologia dominant pe piaa semiconductorilor pentru microprocesoare, memorii i circuite integrate specializate pe aplicaii (ASIC Application Specific Integrated Circuits).

2.2 Ciclul fetch-decode-execute Funcionarea calculatorului implic n fiecare moment anumite activiti prin care acesta execut diverse comenzi primite de la sistemul de operare sau de la programele utilitare, comenzi ce implic de fiecare dat execuia unor instruciuni. Operaia de baz a unui procesor este reprezentat de aa-numitul ciclu Fetch-Decode-Execute sau, pe scurt, Fetch-Execute. Pe scurt, aceast operaie implic faptul c pentru a executa o instruciune, de fiecare dat, procesorul citete o instruciune de program din memorie, o decodific i apoi o execut. Acest lucru poate prea anevoios dar viteza fantastic la care acioneaz microprocesorul face ca procedeul de aducere din memorie, decodificare i apoi execuie s se desfoare extrem de rapid. Cei trei actori implicai n acest proces, microprocesorul, memoria i magistrala de memorie acioneaz la diferite viteze, de aceea, cu ct una dintre componente are o vitez de acionare mai mare, cu att va contribui mai mult la scurtarea timpului de execuie a unui program. Exist aplicaii ce solicit intens lucrul cu memoria n acest caz memoriile ieftine i rapide prezint un avantaj, n timp ce alte aplicaii pot solicita intens activitatea procesorului desigur c n acest caz un procesor mai rapid va crete performanele de calcul. 33

Microprocesorul

Din punct de vedere al tipului de memorie principal folosit de ctre calculatoare, exist n principiu dou tipuri de baz: cipuri DRAM (Dynamic Random Access Memory), care nu sunt att de rapide precum procesorul. Un alt tip de memorie este memoria SRAM (Static Random Access Memory), care funcioneaz la viteze mai mari dar are i costuri de producie mult mai ridicate; astfel de cipuri de memorii sunt utilizate la memoriile cache. Memoriile cache sunt utilizate pentru a reduce decalajul dintre viteza microprocesorului i aceea a memoriei principale prin copierea i stocarea instruciunilor i datelor ce vor fi folosite imediat de ctre procesor. Procesoarele RISC i chiar procesoarele CISC (Intel) au introdus o serie de tehnici noi pentru a mri eficiena ciclului Fetch-Execute prin procesarea simultan a mai multor instruciuni; cea mai cunoscut astfel de tehnic fiind tehnica prelucrrii n conduct (pipeline) a instruciunilor. Computerul trebuie s citeasc i s se supun fiecrui program (inclusiv sistemului de operare), instruciune cu instruciune. La prima vedere este un handicap din punct de vedere al performanelor dac este comparat cu organismele vii capabile s desfoare mii de activiti simultan. Operaia de baz pe care o ndeplinete procesorul este operaia fetch-execute, secven n care fiecare instruciune din cadrul unui program este citit din memorie asociat programului n CPU, este decodificat i apoi executat. Doar viteza extraordinar a echipamentelor electronice face ca acest ciclu obositor care se repet ncontinuu s fie de real valoare. n orice faz a dezvoltrii computerelor, una dintre cele trei uniti implicate n acest ciclu memoria, magistrala i CPU a fost factorul limitativ. Acest lucru poate afecta att parametrii cu care trebuie s lucreze inginerii i, de asemenea, selectarea algoritmilor pentru rezolvarea problemelor. De exemplu, exist uneori disponibile metode care solicit mai mult memoria (memory-intensive) sau alteori metode care solicit mai mult capacitatea de procesare (compute-intensive). Dac memoria este rapid i ieftin, atunci primele metode sunt de preferat; n cellalt caz este preferat a doua soluie. n prezent, cipurile DRAM de memorie nu sunt la fel de rapide precum CPU. Exist disponibile i cipuri mai rapide SRAM, dar care sunt mult mai scumpe i de aceea sunt utilizate n mici buffere foarte rapide denumite i memorii cache. Acest tip de memorii poate ajuta ntr-o oarecare msur la reducerea diferenei dintre ntrzierile cauzate de accesul la memorie prin stocarea unor cpii ale instruciunilor i datelor curente. 34

Elemente de arhitectur a sistemelor de calcul i operare

Pentru a reduce i mai mult gtuirea obinut datorat efectului negativ a structurii secveniale von Neumann, noile procesoare RISC mresc viteza de execuie a ciclului fetch-execute prin execuia simultan a (~5) instruciuni prin intermediul unei metode pipeline. Orict de familiari am fi cu modalitatea de lucru a computerelor, este practic imposibil s nelegem viteza incredibil la care acestea opereaz. Tabelul urmtor (tabelul 2.2) ne prezint diferenele ntre viteze ale operaiunilor uzuale din lumea real. Tabelul 2.2 Exemple de activiti i viteza asociat acestora ns= 1 / 1000 000 000 s Ciclul fetch/execute 10 ns Funcionarea unei pori logice 5 ns Acces la memoria SRAM 15 ns s = 1 / 1 000 000 s Viteza luminii 300 m/s Linie de scan TV 60 s ntrerupere 2-10 s Scnteie la motor 10 s ms = 1 / 1 000 s Viteza de reacie uman 300 ms Cadru TV 20 ms Acces la hard-disk 10 ms Rotaie complet a motorului la main (la 3000 rpm) 20 ms

Din tabel ne putem da seama de diferena existent ntre viteza de operare a calculatorului i diferite viteze din lumea nconjurtoare. Lucrurile ce par extrem de rapide, cum ar fi liniile de scan TV, sunt de sute de ori mai ncete dect un ciclu fetch-execute realizat de ctre microprocesor. Dup cum tim, la cel mai de jos nivel programele n calculator sunt formate din iruri de bii ce reprezint codificarea binar a unor instruciuni, precum: 1000 1011 1110 1100 Acest ir de bii este echivalent cu urmtoarea instruciune a procesorului Pentium: MOV BP , SP Rezultatul instruciunii anterioare este acela de a copia coninutul registrului SP n registrul BP.

35

Microprocesorul

De asemenea, irul de bii: 1000 1011 0011 0100 0001 0010 este echivalent cu instruciunea urmtoare n limbaj de asamblare (pentru Pentium): MOV AX, 1234H Sau, n limbajul C: x = 4660; Se observ astfel avantajul unui limbaj de programare de nivel nalt (n cazul nostru limbajul C) fa de exprimarea n limbaj cod-main (iruri de bii) sau n limbaj de asamblare. Instruciunea de mai sus va copia valoarea zecimal 4660 (1234 n hexazecimal) n registrul AX (denumit i registrul acumulator).

Fig. 2.3. IP (Pointerul de instruciune) indic ntotdeauna adresa urmtoarei instruciuni ce va fi executat

Ciclul fetch-execute reprezint procesul prin care microprocesorul preia din memoria n care este stocat programul urmtoarea instruciune ce va fi executat, o decodific i execut operaia pe care aceast instruciune o reprezint. n continuare prezentm funcionarea general a acestui proces. n figura 2.3 putem vedea microprocesorul cu registrul pointer de instruciune IP (Instruction Pointer) i registrul acumulator AX (Accumulator Register). Memoria principal stocheaz programul aflat n execuie, n care toate instruciunile de genul: MOV BP,SP sau MOV AX, 1234H se afl reprezentate sub form binar. Un registru de acces la memorie este utilizat 36

Elemente de arhitectur a sistemelor de calcul i operare

pentru a putea accesa poriunea de memorie de unde sunt preluate datele. Registrul pointer de instruciune indic tot timpul adresa din memorie a urmtoarei instruciuni ce va fi executat. Figurile 2.4 i 2.5 ne nfieaz procesul de preluare a datelor din memorie (etapa fetch). Aceast etap este aproximativ identic pentru toate tipurile de instruciuni. Paii urmai de microprocesor n aceast etap sunt: a) adresa din registrul pointer de instruciune (IP) este copiat pe magistrala de adrese de memorie de unde este transmis n registrul RAM (Registrul de Acces la Memorie); b) pointerul de instruciune este incrementat (IP++), indicnd adresa de memorie a urmtoarei instruciuni ce va fi executat; c) se selecteaz locaia de memorie i se copiaz coninutul acesteia n magistrala de date; d) procesorul copiaz codul instruciunii din magistrala de date n registrul de instruciune; e) ncepe procesul de decodificare a instruciunii.

Fig. 2.4 Ilustrarea pasului a) din ciclul fetch

37

Microprocesorul

Fig. 2.5 Ilustrarea pailor b), c) i d) din ciclul fetch

Figurile 2.6 i 2.7 ne nfieaz procesul de execuie a instruciunii (etapa execute) n cazul instruciunii Intel MOV AX, 1234H (etapa execute difer de la instruciune la instruciune). Paii urmai de microprocesor n aceast etap sunt: a) coninutul registrului pointer de instruciune (IP) este copiat pe magistrala de adrese de memorie de unde este transmis n registrul RAM (Registrul de Acces la Memorie); b) pointerul de instruciune este incrementat (IP++); c) valoarea selectat din memorie (1234H) este copiat pe magistrala de date; d) procesorul copiaz valoarea de pe magistrala de date n registrul AX.

38

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 2.6 Ilustrarea pasului a) din ciclul execute

Acest proces reprezint, de fapt, o simplificare a procesului fetch-execute ce se desfoar n cadrul unui microprocesor modern din zilele noastre. Unele instruciuni au nevoie de un ciclu de execuie n plus pentru a citi valoarea unei adrese din memorie, care este mai apoi folosit pentru a accesa valoarea variabilei respective, valoare stocat tot n memorie. Ca o concluzie, ciclul fetch-execute reprezint secvena prin care fiecare instruciune a unui program este citit din memorie, decodificat i apoi executat. Acest proces poate presupune ulterior mai multe subprocese, cum ar fi citirea de date suplimentare din memorie i stocarea rezultatelor operaiei/operaiilor napoi n memorie.

39

Microprocesorul

Fig. 2.7 Ilustrarea pailor b), c) i d) din ciclul execute

Att sistemul de operare Windows NT/2000 ct i sistemul de operare UNIX ofer instrumente prin care pot fi vizualizate activitile ce se afl n lucru. Pe staiile Sun cu sistemul de operare UNIX (varianta Solaris) exist utilitarul denumit perfmeter, pentru Linux exist xsysinfo i gsysinfo iar pentru Windows NT exist Performance Monitor, care a fost nlocuit n Windows 2000 de System Monitor. Prezentm n continuare caracteristicile acestor aplicaii utilizate pentru monitorizarea utilizrii resurselor calculatorului. UNIX perfmeter Pentru o staie Sun, comanda care ne arat detaliat activitatea microprocesorului este: $ perfmeter t cpu & Linux xsysinfo Conform paginii de manual, utilitarul xsysinfo afieaz parametrii kernelului sub form grafic. Sintaxa complet este urmtoarea: xsysinfo [-help] [-update n] [-[no]title] [-[no]loadavg] [-[no]load] [-[no]mem] [-[no]swap] [-[no]labels]

Pe scurt, xsysinfo este o aplicaie XWindow folosit pentru afiarea unor parametri ai kernelului Linux n format grafic, o combinaie a 40

Elemente de arhitectur a sistemelor de calcul i operare

comenzilor top, free i xload, cu diferena c valorile afiate (media gradului de utilizare a procesorului, gradul de utilizare a procesorului, dimensiunea de swap) sunt prezentate ntr-o fereastr orizontal. Utilitarul xsysinfo afieaz urmtoarele valori: - gradul mediu de utilizare al UCP valoarea afiat este ntre 0.000 i 8.000. Bara orizontal a afiajului este mprit n segmente, unde fiecare segment reprezint o valoare de 1. - gradul de utilizare al UCP n cazul unui sistem multiprocesor opiunea smp afieaz cte o bar orizontal pentru fiecare procesor n parte. - memoria bara grafic ce corespunde memoriei este mprit n dou segmente ce reprezint dimensiunea fizic a memoriei calculatorului ce este utilizat de procese (n partea stng) i memoria utilizat pentru paginare i memoria cache buffer n partea dreapt. ntreaga lungime a segmentului orizontal ne arat memoria fizic utilizat de ctre sistem la momentul respectiv. - poriunea de swap indic dimensiunea de spaiu swap utilizat de ctre sistem din totalul spaiului swap alocat. Gsysinfo Gsysinfo este un utilitar conceput pentru interfaa grafic Gnome i urmrete utilitatea programului xsysinfo. Gsysinfo este conceput sub licen GNU GPL (General Public Licence). Referitor la numele de GNU, acesta provine de la sintagma GNU Not UNIX i s-a dorit a fi un sistem de operare precum UNIX ce este distribuit cu codul surs i poate fi copiat, modificat i redistribuit. Proiectul GNU a fost iniiat n 1983 de Richard Stallman i alii ce au pus bazele Fundaiei pentru Software Liber (FSF Free Software Foundation). Concepia lui Stallman este aceea c utilizatorii pot face ce doresc cu software-ul achiziionat, putnd face cpii ale acestuia pentru prieteni i modifica codul surs redistribuind-ul la un anumit cost. FSF stipuleaz termenul copyleft care nseamn c oricine redistribuie software free trebuie s lase n continuare libertatea de copiere i redistribuie a programului, asigurndu-se n acest fel c nimeni nu va reclama drepturi de proprietate asupra unor versiuni viitoare i nu va impune restricii la utilizarea acestuia. 41

Microprocesorul

n acest context, termenul free nseamn libertate i nu neaprat gratis. Fundaia FSF percepe nite costuri iniiale la distribuia GNU. Redistribuitorii pot, de asemenea, s perceap taxe pentru copiile programelor n scopul profitului sau pentru acoperirea costurilor. Ideea de baz a software-ului liber (free software) este aceea c se las libertatea utilizatorilor s modifice i s reasambleze produsul fr nici o restricie n afar de aceea c nici ei, la rndul lor, nu pot impune restricii mai departe. Stallman crede c unul dintre rezultatele filozofiei free software este acela c mai multe programe free vor coexista mpreun provenind din alte programe free. GNU este un exemplu n acest sens; acesta a devenit un sistem de operare cnd n august 1996 i-a fost adugat un kernel (GNU Hurd i Mach). Fundaia FSF continu s dezvolte software free sub form de programe de aplicaii; un program de tip spreadsheet este acum disponibil. Sistemul de operare Linux este conceput cu componente GNU iar kernelul este dezvoltat de Linus Torvalds. Capturi de ecran gsysinfo Prezentm n continuare cteva capturi de ecran gsysinfo. - putem vedea n imaginea de mai jos (figura 2.8) utilitarul gsysinfo situat ntre bara de volum i ceas (ncrcarea sistemului este de aproximativ 1.8):

Fig. 2.8 Ilustrare grafic a utilitarului gsysinfo

GNU s-a vrut iniial s fie o alternativ la versiunile comerciale de UNIX. Acest lucru nu s-a ntmplat nc, dar Richard Stallman i ali programatori muncesc n continuare pentru acest ideal. Paradoxal este c primele succese nregistrate de GNU au fost aplicaii adiionale sistemelor proprietare UNIX. Componente GNU precum GNU Emacs, GCC (GNU C Compiler) i bash (un nlocuitor free pentru Bourne Shell) sunt instalate astzi implicit pe majoritatea variantelor de UNIX existente.

42

Elemente de arhitectur a sistemelor de calcul i operare

- n continuare (figura 2.9) apare indicatorul sysinfo pentru activitatea n reea. Traficul de date transmise de la calculator spre reea apare n culoarea verde iar traficul de intrare este ilustrat n rou.

Fig. 2.9 Activitatea de reea la gsysinfo

- n figurile 2.10, 2.11 i 2.12 apar ferestrele legate de setarea caracteristicilor programului gsysinfo.

Fig. 2.10 Fereastra de proprieti generale gsysinfo

43

Microprocesorul

Fig. 2.11 Fereastra de setri pentru gsysinfo indicatori

Windows 2000 - System Monitor

n Windows 2000, cu ajutorul lui System Monitor se pot msura performanele calculatorului local sau ale altor calculatoare din reea. Utilitarul System Monitor asigur urmtoarele funcionaliti: Colecioneaz i vizualizeaz n timp real date legate de performana calculatorului local sau pentru alte calculatoare de la distan; Vizualizeaz datele colectate n timp real sau stocate anterior; Reprezint datele sub form de: grafic, histogram sau raport de vizualizare;

44

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 2.12 Fereastra de setri pentru gsysinfo Layout

ncorporeaz funcionaliti ale aplicaiei System Monitor n Microsoft Word sau alte aplicaii ale suitei Microsoft Office cu ajutorul caracteristicei denumite Automation; Creeaz pagini HTML pentru vizualizarea performanelor; Creeaz configuraii de monitorizare reutilizabile ce pot fi instalate pe alte calculatoare ce folosesc MMC (Microsoft Management Console). Cu ajutorul lui System Monitor se pot colecta i vizualiza date legate de gradul de utilizare a componentelor hardware precum i date legate de activitile serviciilor de sistem existente pe calculatoarele administrate. n cadrul aplicaiei se poate stabili modalitatea de prezentare a datelor n urmtoarele moduri: Tipul de date pentru a selecta datele ce vor fi colectate, se pot specifica unul sau mai multe instane de contorizare pentru obiecte ale monitorului de performane. Unele obiecte
45

Microprocesorul

(memoria, spre exemplu) ofer contorizare la nivelul resurselor sistemului; altele ofer posibilitate de contorizare la nivelul execuiei aplicaiilor. Sursa de date Aplicaia System Monitor poate strnge date de pe calculatorul local sau de pe alte calculatoare din reea unde exist aceast permisiune (implicit este nevoie de drepturi de administrator). n plus, se pot include att date culese n timp real ct i date stocate anterior n fiiere speciale de tip log. Parametri de test se ofer posibilitatea de stabilire manual, la cerere sau automat ntr-un interval specificat a unor teste de date. Atunci cnd se vizualizeaz aceste date se poate alege momentul de nceput sau de sfrit astfel nct datele pot fi vizualizate ntre intervale specificate de timp.
Magistrala de sistem

Pentru a coordona i controla ntrega activitate a calculatorului, microprocesorul trimite nite mesaje, denumite semnale, ctre componentele acestuia. Din punct de vedere al tipului acestor semnale, ele se pot clasifica n semnale pentru magistrala de date (de regul cu o dimensiune de 32 sau 64 de bii), magistrala de adrese (de asemenea, pe 32 bii sau mai mult) i magistrala de control (format din aproximativ 15 linii de control ce au rolul de a iniia sau stopa diverse activiti din interiorul computerului). Una dintre liniile de control este reprezentat de ceasul de sistem, care este un oscilator de cristal de nalt frecven (pe placa de baz l identificm ca fiind un mic cilindru argintiu, situat n apropierea microprocesorului). Prin intermediul liniilor de magistral (pentru a controla diversele activiti ale calculatorului), microprocesorul trimite semnale ctre componentele calculatorului, componentele trimind, la rndul lor, un rspuns ctre microprocesor. n unele cazuri o astfel de aciune este controlat de un alt dispozitiv dect microprocesorul, care poate lua controlul asupra liniilor de magistral (n acest mod se elibereaz i procesorul de sarcina respectiv). Secvena semnalelor trimise prin intermediul magistralei trebuie s fie coordonate extrem de precis n timp printr-o aciune de sincronizare. Dac aceast operaie de sincronizare este asigurat n ntregime de ctre ceasul de sistem, atunci magistrala se numete sincron.

46

Elemente de arhitectur a sistemelor de calcul i operare

2.3 Familia de procesoare x86

Primul microprocesor, 4004, pe 4 bii, a fost realizat de firma Intel n anul 1971. Acesta a fost repede mbuntit, rezultnd microprocesorul 8008. n 1974 Intel realizeaz a doua generaie de microprocesoare al crei reprezentant de baz este 8080. Acesta a fost primul microprocesor de uz general avnd o importan deosebit pentru industria microcalculatoarelor. n iunie 1978 este lansat pe pia microprocesorul Intel 8086 (care reprezint a treia generaie de microprocesoare), cu aproape 3 ani nainte de apariia primului calculator IBM PC, bazat pe designul 8080/8085, cu o mulime similar de registre, dar extins la 16 bii. Acesta este momentul n care ncepe evoluia familiei x86. Unitatea de interfa cu magistrala (Bus Interface Unit) aducea fluxul de instruciuni ctre unitatea de execuie (Execution Unit) printr-o coad de prencrcare, astfel nct aducerea i execuia erau concurente - o form primitiv de pipelining (instruciunile 8086 variau de la 1 la 4 octei). Primul PC lansat pe pia n 1981 avea ns un procesor Intel care lucra la viteza de 4,77 Mhz. Acesta nu era ns primul produs IBM care folosea un procesor x86 - un sistem de prelucrare de texte - IBM Displaywriter, proiectat la Austin, Texas, folosise deja un microprocesor x86 la viteza de 5 Mhz. De altfel, IBM nici nu era nici prima firm, nici singura care utiliza un microprocesor x86 ntr-un PC. O firm mic, Seattle Computer Products, lansase deja un sistem realizat cu un procesor x86. Aceast companie a dezvoltat prima versiune a sistemului de operare PC DOS, achiziionat de Microsoft i denumit ulterior MS-DOS. Pentru primul PC a fost ales microprocesorul 8088, cu performane sczute, datorit necesitii de a menine preul mic al calculatorului. Microprocesorul 8088 admitea o magistral intern pe 16 bii, ns magistrala extern nu avea dect 8 bii. Aceasta l fcea mai uor de conectat la cipurile pe 8 bii ale dispozitivelor periferice i a permis utilizarea unei memorii de dimensiuni mai mici n construcia calculatorului. Printre caracteristici erau 4 registre generale pe 16 bii, ce puteau fi accesate de asemenea ca registre pe 8 bii i 4 registre index pe 16 bii (incluznd pointerul de stiv). Registrele de date erau deseori folosite implicit de instruciuni, alocri complicate ale registrelor pentru valori temporare.
47

Microprocesorul

Existau de asemenea patru registre segment ce puteau fi setate din registrele index. Registrele de segment permiteau UCP s acceseze 1 megaoctet de memorie folosind tehnica numit segmentare. Instruciunile programului nu puteau adresa n mod direct locaiile de memorie din spaiul de adresare, ci se folosea un proces mprit n dou etape: prima dat se ncrca un registru de segment cu adresa unui bloc de 64 Kb de date sau de instruciuni, care putea fi plasat oriunde n memoria de 1 Mb. n continuare, orice instruciune a microprocesorului avea acces direct la orice dat sau instruciune aflat n blocul de 64 Kb. Pentru a se obine accesul n exteriorul blocului de 64 Kb, registrele de segment erau ncrcate cu o nou adres, folosindu-se cele patru registre de segment: unul pentru accesul la date, al doilea pentru accesul la instruciuni, al treilea pentru accesul la stiv i un registru special extra-segment. Schema bloc a microprocesorului 8088 este prezentat n figura 2.2. Dac pentru construcia lui 8088 au fost necesare 29.000 de tranzistoare ntr-o capsul cu 40 de pini i cu o tehnologie de 3 microni, microprocesoarele Pentium 4 actuale sunt construite cu 55 milioane de tranzistoare cu o tehnologie de 0,13 microni! Cu privire la evoluia numrului de tranzistori integrai pe un cip exist faimoasa lege a lui Gordon Moore (cofondator la Intel) care a prezis acum 30 de ani c numrul de tranzistoare de pe un cip se va dubla la fiecare 18 luni, lege ilustrat n figura 2.3.

48

Elemente de arhitectur a sistemelor de calcul i operare


Interfata cu memoria

Magistrala 3

Sumator
Magistrala 2 ES

CS
DS
SS

Coada de siruri de octeti de instructiuni

3 2

IP

Unitatea de interfata cu magistrala

Unitatea de executie Controlul sistemului

Magistrala 1

AH
BH
CH

AL
BL
CL

Unitatea aritmetica logica

DH
SP
BP
SI

DL

Unitatea de interfata cu magistrala


Indicatori de conditie

DI

Fig. 2.2 Schema bloc a microprocesorului 8088

2.3.1 Microprocesorul 80286 (286)

Familia x86 se mrete n 1982 cu microprocesorul 80186, structural identic cu 8086 dar coninnd cteva dispozitive sistem integrate n acelai circuit. n acelai an este introdus i 80286 care are o arhitectur extins fa
49

Microprocesorul

de 8086. El poate lucra exact ca un 8086 avnd ns unele faciliti n plus. ncepnd cu acest microprocesor au fost introduse mecanismele de memorie virtual, de multitasking i de protecie.

Fig. 2.3 Evoluia numrului de tranzistoare integrate pe un cip

Calculatorul PC-AT (Advanced Tehnology - Tehnologie Avansat) 286 era construit cu 134.000 de tranzistori nglobai ntr-o capsul cu 68 de pini. Cea mai important caracteristic a sa o reprezenta cretere spaiului de adresare la 16 MB, permind lucrul n modul protejat i cu memorie virtual. Despre aceste concepte vom discuta mai pe larg n continuare. Modul protejat de lucru a permis posibilitatea folosirii sistemelor de operare multitasking, cum ar fi UNIX sau diverse variante ale acestuia.
Memoria virtual

Memoria virtual reprezint un tip imaginar de memorie folosit de unele sisteme de operare, precum Windows (dar nu i DOS), prin care deficitul de memorie RAM este suplinit folosindu-se hard disk-ul calculatorului. Memoria virtual poate fi considerat ca o mulime de adrese
50

Elemente de arhitectur a sistemelor de calcul i operare

de memorie; programele folosesc aceste adrese virtuale n locul celor reale pentru a stoca instruciuni i date. n momentul execuiei programului, adresele virtuale sunt convertite n adrese reale de memorie, fcndu-se transferul datelor din memoria virtual (de pe disc) n memoria real. Scopul folosirii memoriei virtuale este acela de a mri spaiul de adresare, adic mulimea de adrese de memorie pe care un program o poate utiliza. De exemplu, memoria virtual poate conine de dou ori mai multe adrese dect memoria principal. Din aceast cauz, un program ce folosete toat memoria virtual nu poate fi ncrcat n ntregime n memorie n acelai timp; totui, calculatorul poate ncrca n memoria principal doar poriunile din program necesare la un moment dat pe parcursul execuiei. Pentru facilitarea copierii coninutului memoriei virtuale n memoria real, sistemul de operare mparte memoria virtual n pagini ce conin fiecare un numr fix de adrese. Fiecare pagin este stocat pe disc pn n momentul n care este nevoie de ea. n acel moment, sistemul de operare o copiaz de pe disc n memoria real, prin procesul de translatare a adreselor virtuale n adrese reale. Acest proces de translatare se mai numete i mapare, iar mecanismul de copiere a paginilor virtuale de pe disc n memoria principal se numete swapping (uneori i paginare).

2.3.2 Microprocesorul 80386 (386)

Lansat pe pia n octombrie 1985, procesorul 80386 a aprut iniial cu o magistral de sistem pe 32 de bii, apoi o versiune a acestuia cu o magistral pe 16 bii - denumit 386SX, n timp ce modelul pe 32 de bii a fost redenumit 386DX. Procesorul 386SX era foarte popular, deoarece putea folosi arhitecturile 286 deja existente, cu cteva schimbri minore. Concurena acerb a firmei AMD (Advanced Micro Devices), principalul productor de microprocesoare clon a fcut ca preul sistemelor PC complete s scad foarte mult, nregistrndu-se pentru prima dat preuri cu mult sub 1000$. Microprocesoarele 80386DX i 80386SX erau construite folosindu-se iniial o tehnologie CMOS de 1,5 microni, apoi de 1 micron, coninnd 275.000 de tranzistori, n timp ce versiunea 80386SL includea 855.000 de tranzistori.

51

Microprocesorul

Caracteristici ale procesorului 80386

Microprocesoarele 386 au beneficiat de cteva mbuntiri semnificative fa de microprocesoarele anterioare din familia x86. Posibilitatea prelucrrii informaiei pe 32 de bii i accesul la memorie printr-o magistral de 32 de bii au permis pentru prima dat adresarea a 4 Giga octei de memorie n mod direct i a 64 Tera octei n mod virtual. De asemenea, vitezele procesorului erau limitate de performanele memoriei sistemului, folosindu-se n scopul "alimentrii" microprocesorului cu mai multe instruciuni i date metode ce erau folosite pn atunci doar la calculatoare mainframe sau minicalculatoare. Metodele constau n folosirea bancurilor de memorie intercalat (memoria sistemului era mprit n blocuri ce puteau fi accesate simultan pentru a crete viteza de lucru) i a memoriilor cache rapide. Se permitea, de asemenea, folosirea unui model de adresare complet liniar, fr a se utiliza registrele de segment, precum i folosirea paginrii. Microprocesorul 386 putea fi folosit pentru a simula comportamentul mai multor procesoare 8086 ce lucreaz n mod real, oferind posibilitai de multitasking. Ca i n cazul microprocesorului 286, software-ul nu folosea pe deplin capacitile acestuia, astfel nct abia dup zece ani, o dat cu apariia sistemului de operare pe 32 de bii Windows 95 s-au putut valorifica cu adevrat capacitile procesorului 386. Arhitecturile de sistem bazate pe microprocesoare 386 s-au schimbat radical fa de arhitecturile anterioare. Astfel, subsistemele memoriei s-au conectat la magistrala local a microprocesorului iar folosirea memoriilor cache rapide i a metodelor de intercalare a memoriei au devenit lucruri obinuite. Magistrala AT a devenit doar o magistral de extensie pentru conectarea adaptoarelor echipamentelor periferice, nemailucrnd la frecvena ceasului microprocesorului. Primele cipuri rulau la 12,5 MHz i apoi transformate rapid pentru a rula la frecvene de 16, 20, 25 ,33, 40 i 50 de MHz.
Microprocesorul 80386SL

Versiunea 386SL lansat de Intel era un procesor 386 special ce ngloba 855.000 de tranzistori (de 3,1 ori mai mult dect la un 386 obinuit), fiind proiectat pentru piaa calculatoarelor notebook, aflat n cretere. Acest microprocesor dispunea de un sistem de gestionare a consumului (Power Management), de o memorie cache de 8K, de un controeller DRAM i era capabil s funcioneze la 3,3 voli. Produsul avea un concurent puternic
52

Elemente de arhitectur a sistemelor de calcul i operare

reprezentat de versiunea 386SX a firmei AMD, nregistrnd un succes limitat, n cele din urm fiind retras de pe pia de firma Intel.

2.3.3 Microprocesorul 80486 (486)

Firma Intel a prezentat n aprilie 1989 procesorul 486, ce dispunea de puine mbuntiri fa de 386. Setul de registre, caracteristicile de gestiune a memoriei i tipurile de date erau aproape neschimbate fa de cele de la 386, n schimb performanele erau crescute semnificativ prin integrarea pe cip a coprocesorului matematic i a unei memorii cache de nivelul 1 de 8K. Tehnologia de fabricaie era de tipul CMOS, nglobnd 1,2 milioane de tranzistori pe cip. Prima versiune, 486DX folosea o tehnologie de fabricaie de 1 micron pentru frecvenele de ceas de 25 i 33 Mhz, scznd apoi la 0,8 microni la 486DX-50. Micorarea dimensiunilor tranzistorilor a prezentat dou avantaje deosebite de care au beneficiat din plin microprocesoarele 486: n primul rnd, fiind mai mici, folosesc mai puin energie, iar n al doilea rnd, pot lucra mai rapid. Alte dimensiuni tehnologice de fabricaie erau: pentru 486DX2 - 0,8 microni (Intel), 0,5 microni (AMD), 0.65 microni (Cyrix), iar pentru 486DX4 - 0,6 microni (Intel - cu 1,6 milioane de tranzistori), 0,5 microni (AMD), 0.65 microni (Cyrix).
Magistrala local a microprocesorului 486

Aceast magistral s-a modificat sensibil fa de cea a microprocesorului 386, permind o cretere a ratelor de transfer pe magistral. n timp ce magistrala veche 386 trimitea o adres pentru fiecare acces la memorie, magistrala 486 transmitea o adres pentru un bloc de pn la 16 octei. S-a permis astfel creterea cu 50% a ratei de transfer fa de rata de transfer de la 386, la aceeai frecven i dimensiune a magistralei. Fcndu-se transferuri de blocuri de date, se trimite doar adresa blocului iniial ctre memorie, aceast tehnic fiind ideal pentru sisteme cu memorie cache, cum este i cel 486. Transferul pe blocuri de date se face la citire ct i la scriere i sunt necesare dou impulsuri de ceas pentru primul transfer pe 32 de bii i cte un impuls de ceas pentru transferurile urmtoare pe 32 de bii. Numrul de transferuri ulteroare pe 32 de bii este de trei, astfel c pentru un procesor la 50 MHz, transferul unui bloc de maxim 16 octei se
53

Microprocesorul

face pe perioada a cinci perioade de ceas, adic 160 M/secund (fa de o rat maxim de transfer pe magistral de 1M/secund la primul PC !). Deoarece diferena de pre dintre procesorul 486 i clonele 386 rapide erau foarte mari, firma Intel a hotrt s scoat pe pia o versiune mai ieftin a procesorului 486, mai puin performant, denumit 486SX. Diferena esenial fa de microprocesorul 486 obinuit era lipsa funciilor oferite de coprocesorul matematic, iar preul era de pn la o treime fa de acesta, denumit ulterior 486DX. Trebuie fcut o precizare cu privire la titulatura impus de Intel: n timp ce pentru familia procesoarelor 386, SX reprezenta un procesor pe 16 bii, pentru familia procesoarelor 486, SX reprezenta lipsa coprocesorului matematic! Ca i n cazul microprocesorului 386SL, Intel a lansat pe pia i o versiune 486 pentru calculatoarele notebook, denumit 486SL, oferind caracteristici avansate de gestiune a consumului i posibilitatea de a lucra la 3,3 voli; succesul a fost limitat i modelul a fost retras de pe pia n scurt timp.

2.3.4 Microprocesorul Pentium

n anul 1993 i-a fcut apariia procesorul Pentium al firmei Intel, avnd o arhitectur superscalar (se puteau executa n anumite condiii dou instruciuni simultan n acelai ciclu de ceas) i memorii cache de nivelul unu separate pentru instruciuni i pentru date, de cte 8K. O alt mbuntire o reprezenta creterea dimensiunii magistralei locale Pentium la 64 de bii, iar a vitezei de lucru la 60 sau 66 de MHz. Tehnologia de fabricaie era CMOS bipolar, de 0,8 microni (pentru primele Pentium-uri la 60 i 66 MHz), de 0,6 microni (la modelele ce lucrau la frecvene de 75, 90, 100 MHz) i de 0,35 microni (la modelele cu frecvene de 120, 133, 150, 166, 200 MHz) i nglobau de la 3,1 milioane de tranzistoare (La primul Pentium) pn la 3,3 milioane la modelele ulterioare. Referitor la denumire, se impune specificarea c acesta a fost primul microprocesor cu aceeai arhitectur x86, care a renunat la numele de x86 (ar fi trebuit s se denumeasc 586), deoarece firma Intel nu a putut s opreasc alte firme productoare de microprocesoare clon s foloseasc acest nume.
54

Elemente de arhitectur a sistemelor de calcul i operare

Microprocesorul Pentium Pro ("P6")

Microprocesorul Pentium Pro a fost introdus n 1995 ca succesor al procesorului Pentium, aducnd cteva caracteristici nemaintlnite pn atunci ntr-un microprocesor de PC. Microprocesorul Pentium Pro a fost primul microprocesor ce a schimbat radical modul de execuie al instruciunilor, translatndu-le n microinstruciuni gen RISC i executndu-le apoi mai uor n unitile interne. Disponibil n multiple variante cu frecvene ntre 150 MHz (noiembrie 1995) i 200 de MHz (ianuarie 1997), microprocesoarele Pentium Pro sunt construite folosindu-se o tehnologie de 0,6 pn la 0,35 microni pentru microprocesor i memoria cache integrat de nivel 2. Numrul de tranzistori folosii este de aproximativ 5,5 milioane, iar dimensiunea memoriei cache de nivel 2 variaz de la 256 KB la 1MB pentru microprocesoarele ce ruleaz la fecvene de 200 de MHz. Cu toate c este vechi de mai bine de trei ani, procesorul Pentium Pro este nc folosit n sisteme high-end (servere, n special), cu toate c Pentium II (i mai nou, Pentium III) ncepe s-i ia locul n unele cazuri. Pentru astfel de servere ce dispun de mai multe procesoare Pentium Pro, raportul pre/performan este destul de bun, concurnd n acest sens chiar cu unele procesoare (non Intel) pentru servere ale firmei DEC (Digital Equipment Corporation) Alpha. Principalele caracteristici ale procesorului Pentium Pro sunt urmtoarele:
superpipelining - arhitectur n conduct superioar celei de la Pentium, mrindu-se numrul de stadii n execuie de la 5 la 12; memorie cache de nivelul 2 integrat pe cip - n loc s foloseasc o memorie cache integrat pe placa de baz ce funcioneaz la viteza magistralei de memorie, se folosete o memorie cache integrat n cip, avnd propria magistral i rulnd la ntreaga vitez a microprocesorului, n general de trei ori mai rapid dect la procesoarele Pentium. De asemenea, arhitectura memoriei cache este diferit, de tip non-blocking, ceea ce nseamn c atunci cnd avem de-a face cu un "cache miss" (greeal de memorie cache), procesorul i continu execuia, neateptnd (re)citirea datelor din memoria principal; optimizare pentru 32 de bii: Pentium Pro este optimizat pentru a rula coduri pe 32 de bii (folosite de majoritatea sistemelor de operare i a aplicaiilor), ducnd la mai bune performane fa de Pentium atunci cnd se folosete software de ultimul tip; 55

Microprocesorul

mai mare adresabilitate a magistralei: datorit faptului c magistrala de adrese este pe 36 de bii, rezult o dimensiune maxim a adreselor de memorie fizic de 64 GB; multiprocesare superioar: exist configuraii de multiprocesare cu pn la patru procesoare Pentium Pro (sisteme quad), fa de maximum dou la Pentium (sisteme duale); ncheierea instruciunilor "out of order" (neordonate), ceea ce nseamn c instruciunile din stadiile n conduct se pot executa n alt ordine dect cea stabilit iniial; previziune superioar a ramificrilor: dimensiunea BTB (Branch Target Buffer - Memorie Buffer pentru Ramificri) este dubl fa de Pentium i acurateea este crescut (BTB este o mic memorie asociativ (de regul cu 128 pn la 512 de intrri) ce urmrete indexul memoriei Icache i ncerc s prezic ce index Icache va fi accesat n continuare, bazndu-se pe istoria ramificrilor. Optimizarea actualului algoritm folosit n acest scop reprezint un domeniu continuu de cercetare, procesorul Pentium Pro folosind o variant a algoritmului lui Yeh - 1991); redenumirea registrelor: aceast performanelor paralele ale conductelor;

faciliate

ofer

creterea

execuie speculativ: un mecanism generalizat ce permite instruciunilor s fie prelucrate "mai devreme", nainte de ordinea de execuie normal. Rezultatele acestor speculaii (previziuni) sunt stocate temporar (n ROB - Re-Order Buffer - Buffer de Reordonare - care este o unitate funcional a procesorului Pentium Pro unde micro instruciunile iniiale ateapt, rezultatele speculative sunt colectate i apoi retrase) deoarece exist posibiliatea s nu fie utilizate datorit unor schimbri n execuia programului. tehnologie de execuie dinamic care poate fi conceput pe scurt ca o ajustare optimal a execuiei instruciunilor prin prevederea desfurrii programului, analiznd graficul desfurtor al programului pentru a alege cea mai bun ordine de execuie a instruciunilor i apoi avnd abilitatea de execuie speculativ a instruciunilor n ordinea preferat. Pentru a nelege mai bine implementarea execuiei dinamice, figura 2.4. ne prezint cele trei poriuni interne de interfa cu subsistemul de memorie.

56

Elemente de arhitectur a sistemelor de calcul i operare

Apar n aceast figur patru componente ale structurii pipeline ale procesorului Pentium Pro:
Unitatea FETCH/DECODE, care este o component ce preia ca input fluxul de instruciuni al programului utilizatorului din cache-ul de instruciuni i apoi le decodific ntr-o serie de microoperaii (numite uops) ce reprezint ordinea fluxului de instruciuni. Unitatea DISPATCH/EXECUTE este o unitate "out-of-order" ce accept ordinea fluxului, programeaz execuia microoperaiilor n conformitate cu dependena de date, existena resurselor, stocnd temporar rezultatele acestor execuii speculative. Unitatea RETIRE este componenta "in-order" ce tie cum i cnd s aplice ("retire") rezultatele speculative temporare n stri arhitecturale permanente. Unitatea BUS INTERFACE este o component parial ordonat responsabil cu conectarea celor trei uniti interne cu lumea real. Aceast unitatea de interfa cu magistrala comunic direct cu cache-ul L2 i suport pn la patru accesri cache concurente.
System Bus L2 Cache

BUS IN TERFACE UNIT

L1 ICache

L1 DCache

Fetch/Decode Un it

Dispatch/Execute Un it

Retire Un it

Instruction pool

Fig. 2.4 Cele 3 uniti interne de interfa cu subsistemul de memorie ce folosete memorii cache unificate de cte 8K

57

Microprocesorul

2.3.5 Microprocesorul Pentium MMX

Microprocesorul Pentium MMX (varianta P55C) a fost introdus pentru prima dat n ianuarie 1997 i este primul microprocesor Pentium ce a inclus instruciuni MMX, urmat de AMD K6, Cyrix 686MX i Pentium II. Creterea performanelor fa de procesorul Pentium const n abilitatea deosebit de a opera cu aplicaii multimedia mult mai eficient, fiind disponibil n variante ale frecvenei de ceas de 166, 200 i 233 MHz pentru sistemele desktop i 133, 150, 166, 200 i 233 MHz pentru sistemele mobile. mbuntiri aduse microprocesorului Pentium clasic: Noi instruciuni. Inginerii firmei Intel au adugat 57 de noi instruciuni proiectate special s manipuleze i s proceseze date video, grafice i audio mai eficient. Aceste instruciuni sunt orientate ctre secvene paralele, repetitive, ce se gsesc deseori n operaii multimedia. SIMD (Single Instruction, Multiple Data). Aplicaiile multimedia i de comunicaie de astzi folosesc uzual cicluri repetitive ce ocup sub 10% din codul total al aplicaiei i folosesc 90% din timpul de execuie al aplicaiei. Procedeul SIMD permite ca o instruciune s se execute pentru mai multe seturi de date simultan. Se reduc astfel ciclurile intens calculatorii referitoare la video, audio, grafic i animaie. De asemenea, mulimea instruciunilor MMX are permite folosirea a dou instrucinui MMX ntr-un singur ciclu de ceas, deci dou instruciuni SIMD pot fi procesate cu date pe 16 bii ntr-un singur ciclu de ceas. Mai mult memorie cache. Firma Intel a dublat memoria cache intern la 32KB (16 KB pentru date, 16 KB pentru instruciuni ), astfel c se pot stoca mai multe date i instruciuni pe cip, reducndu-se numrul de accesri la memoria ami lent din afara microprocesorului. mbuntiri bazate pe caracteristicile altor microprocesoare. Pentium MMX folosete o unitate de predicie a ramificrilor, concept preluat de la Pentium Pro, avnd, de asemenea, o implementare a stivei de rentoarcere ("return stack") concept al microprocesorului IBM/Cyrix 6x86. Alte mbuntiri. Microprocesorul Pentium MMX are patru memorii buffer de scriere fa de dou la Pentium-ul clasic, iar conductele U i V au fost crescute cu un stadiu. A fost mbuntit, de asemenea, capacitatea de procesare paralel a celor dou conducte. Figura 2.5 prezint implementarea tehnologiei Intel MMX. Se pot observa aici cele
58

Elemente de arhitectur a sistemelor de calcul i operare

dou conducte (MMX U pipe i MMX V pipe) adugate n paralel la structura intern deja existent la Pentium.
Fetch/Decode

ICache

MMX U- pipe

MMX V- pipe

U pipe

V pipe

Floating Point

Bus Interface

DCache

Fig. 2.5. Diagrama implementrii tehnologiei Intel MMX

2.3.6 Microprocesorul Pentium II ("Klamath")

Aprut n luna mai a anului 1997, Pentium II, cu numele de cod "Klamath" (dup numele fluviului din Oregon, SUA), reprezentnd un pas important n evoluia de la Pentium Pro. Se pare c obiectivele firmei Intel pentru crearea procesorului Pentium II au fost, n principal, s reduc costurile deosebit de mari ale memoriei cache integrate de nivel 2, care constituia principala dificultate n construcia Pentium-ului Pro. Din punct de vedere arhitectural, Pentium II nu este foarte diferit de Pentium Pro, cu o parte intern de emulare x86 i nglobnd majoritatea caracteristicilor acestuia. Diferenele sunt, n mare, urmtoarele: Memorie cache de nivel 1 dubl: mrimea memoriei cache interne a crescut de la 16 KB la 32 KB n total (16 KB instruciuni, 16 KB date); Cache pentru registele de segment: acestea sunt memorii cache speciale folosite pentru a ajuta Pentium II s proceseze codurile pe 16 bii mai eficient, tiindu-se c Pentium Pro a fost optimizat pentru coduri pe 32 de bii, ceea ce nseamn c nu se comport la fel de bine pentru coduri pe 16 bii. Probabil ca rspuns la dominaia sistemului de operare
59

Microprocesorul

Windows 95 a existat o dorin de mbuntire a performanelor n acest sens. Buffere de scriere de mrime mai mare: mrimea bufferelor de scriere a crescut, ducnd la o mic mbuntire a performanelor. Acestea sunt mbuntirile din punct de vedere arhitectural; mbuntiri reale au aprut prin creterea frecvenelor de ceas i prin adugarea extensiilor mulimii de instruciuni MMX. Vitezele de ceas au variat de la 233 MHz la 266 MHz, apoi 300 MHz i 333 MHz. Totui, cea mai mare noutate nu a reprezentat-o cipul n sine, ci modalitatea de prezentare a acestuia. Memoria cache integrat de la Pentium Pro ce rula la viteza de ceas a microprocesorului, constituia o mbuntire major adus arhitecturii x86. Intel a nlocuit la Pentium II aceast memorie cu un circuit special ce conine procesorul i 512 KB de memorie cache secundar ce ruleaz la jumtate din viteza microprocesorului. Acest ansamblu, denumit SEC (Single-Edge Cartridge - cartu cu o singur muchie), a fost conceput s se potriveasc ntr-un soclu cu 242 de pini pe placa de baz Pentium II. Aceast schimbare de proiectare a strnit diverse controverse, accentuate de faptul c noua interfa Slot 1, patentat de Intel, nu va putea fi folosit de companiile rivale AMD i Cyrix pentru noile lor procesoare.

2.3.7 Microprocesorul Pentium III

Iniial, microprocesorul original Pentium III (nume de cod Katmai) nu era foarte diferit de Pentium II. De-abia cu noua variant mbuntit de Pentium III (nume de cod Coppermine) Intel a reuit s produc ceea ce vroia cu adevrat, dar lucru realizat cu ntrziere. Acest microprocesor are o memorie cache L2 de 256 Kb integrai pe plcua de siliciu (aa numita memorie on-die). n combinaie cu noile chipset-uri 810/820/840 ofer suport pentru 4 porturi AGP, 133FSB i memorie RDRAM (Rambus). Procesoarele Pentium III (nume de cod Willamette) au, de regul, viteze cuprinse ntre 800 i 1200 MHz.
2.3.8 Microprocesorul Pentium 4

Cea mai nou arhitectur existent n acest moment, Pentium 4 are cteva avantaje comparativ cu celelalte procesoare x86: o laten mai mic a

60

Elemente de arhitectur a sistemelor de calcul i operare

memoriilor cache L1 i L2, execuia instruciunii de adunare n jumtate de tact i execuia unui numr de 126 de instruciuni de tip RISC. Pentium 4 poate procesa mai multe instruciuni n paralel datorit unitii aritmetico-logice duble i a memoriilor tampon asociate mai mari. Planificatoarele integrate pot gsi mai multe instruciuni independente, avnd n vedere numrul de 126 de instruciuni ce pot fi derulate. Unitile aritmetico-logice pot executa patru instruciuni ntr-un ciclu de tact. Procesorul Intel Pentium 4 cu tehnologie HT (Hyper Threading) ofer cea mai mare putere de procesare pentru aplicaiile avansate din zilele noastre. Tehnologia Hyper-Threading de la Intel permite procesorului s execute dou fire de execuie n paralel, astfel nct software-ul poate rula mai eficient prin implementarea mai bun a multitasking-ului. Pentium 4 dispune de o magistral de sistem ce acioneaz la 800 MHz iar viteza de ceas este cuprins ntre 2,4 i 3,2 GHz. Micro-arhitectura de la Intel se numete NetBurst, bazat pe tehnologie de 0,13 microni. Procesorul Pentium 4 ofer performane superioare pentru procesare de imagini digitale, video, muzic digital, jocuri 3D sau procesare DVD i format video MPEG4.
2.4 Coprocesoare 2.4.1 Coprocesoare matematice

n general, un coprocesor este o unitate de procesare ce asist CPU n calculul diferitelor tipuri de operaii. De exemplu, un coprocesor matematic poate realiza calcule matematice, n particular operaii n virgul mobil. Coprocesoarele matematice se mai numesc coprocesoare numerice sau coprocesoare n virgul mobil. Istoria microprocesoarelor din familia x86 este strns legat de cea a coprocesoarelor matematice. Coprocesorul matematic a fost denumit n mai multe moduri: pur i simplu coprocesor, coprocesor matematic, procesor de virgul mobil, NPX (Numerical Processor eXtension), aceast denumire din urm fiind cea acceptat (i preferat) de firma Intel. Acesta este un cip special ce poate efectua operaii n virgul mobil, calcula funcii matematice - trigonometrice, logaritmice, .a.m.d - ce a primit codul x87 (8087). De remarcat este faptul c, pentru a benficia de avantajele unui
61

Microprocesorul

coprocesor trebuie ca programul respectiv s conin instruciuni ale coprocesorului, altfel coprocesorul nu va fi niciodat utilizat. Arhitecturile iniiale ale primelor calculatoare personale aveau un soclu liber unde se putea monta un coprocesor matematic sistemului. Fiecrui microprocesor din aceast familie i-a fost asociat un coprocesor pentru a mbunti performanele sistemului de calcul. Pentru microprocesoarele 8086, 80286 80386 i 80486SX erau folosite coprocesoarele 8087, 80287 80387 i respectiv, 80487. ncepnd cu microprocesorul 486, mai precis versiunea 486DX, acest coprocesor matematic este ncorporat direct n cipul microprocesorului. Dar s explicm mai detaliat rolul coprocesorului matematic n mbuntirea performanelor sistemului de calcul. n esen, procesorul principal din familia x86 lucreaz doar cu numere ntregi, cu sau fr semn. n unele calcule ns, pentru a se executa rapid operaii matematice, de exemplu, trebuie s se foloseasc numere cu un alt format dect cel ntreg. Cu toate c exist software specializat ce emuleaz lucrul cu numere n alt format dect cel ntreg, aceast soluie este lent i consum o mare parte din puterea microprocesorului sistemului. Apare astfel necesitatea folosirii coprocesorului matematic, pentru a spori viteza cu care se execut aceste calcule cu numere n format diferit de cel ntreg. Designerii procesoarelor x86 au elaborat o metod de ataare a coprocesorului matematic la microprocesorul principal, printr-o interfa cu un nivel nalt de generalizare ce admite toate tipurile de coprocesoare specializate, folosit n special pentru coprocesorul NPE x87. Astfel introduse, coprocesoarele matematice sunt capabile s efectueze operaiile numerice de 20-100 de ori mai rapid dect software-ul specializat n emularea acestor operaii. Aplicaiile ce includ calculul tabelar, aplicaiile tiinifice sau tehnice, aplicaiile multimedia sau cele de proiectare asistat de calculator (CAD - Computer Aided Design) i unele jocuri (Quake, spre exemplu) necesit operaii numerice la viteze foarte mari i, de aceea, beneficiaz din plin de facilitile de accelerare a funciilor matematice acordate de introducerea coprocesoarelor matematice. Dup cum am mai spus, ncepnd cu microprocesoarele 486DX, coprocesorul este integrat pe acelai cip cu acesta, n timp ce pn atunci calculatoarele personale erau livrate fr coprocesorul matematic instalat, existnd posibilitatea atarii sale nr-un soclu liber de pe placa de baz. Trebuie menionat, de asemenea, c performanele matematice n virgul mobil ale PC-urilor bazate pe microprocesoare Intel din familia x86 (avnd coprocesor matematic ataat sau integrat n procesorul principal) erau mult
62

Elemente de arhitectur a sistemelor de calcul i operare

inferioare celor obinute de calculatoarele personale bazate pe procesoare RISC. De aceea, firma Intel a cutat s le mbunteasc, astfel c a reproiectat n ntregime coprocesorul matematic al microprocesorului Pentium, obinnd performane de calcul n virgul mobil de pn la 10 ori mai mari dect la microprocesorul 486, apropiindu-se n acelai timp de performanele coprocesoarelor RISC. Alturi de coprocesoarele matematice, exist, de asemenea, i coprocesoare grafice (microprocesoare proiectate special pentru a realiza calcule grafice) pentru manipularea imaginilor grafice. Acestea sunt adesea numite acceleratoare grafice (accelerator boards).

2.4.2 Tipuri de date admise de ctre un coprocesor matematic

Un coprocesor matematic poate lucra cu numere n virgul mobil, precum i cu date reprezentate n mod ntreg sau cod BCD (Binary Coded Decimal cod n care dou cifre zecimale se reprezint pe un octet). n tabelul 2.6. sunt evideniate tipurile de date numerice, cifrele semnificative i domeniile de definiie admise de coprocesoarele Intel. De asemenea, n tabelul 2.7. sunt ilustrate principalele instruciuni ale coprocesorului matematic, funciile algebrice i transcendente, constantele aritmetice incluse n coprocesor i folosite deseori n calcule din matematica superioar. Calculul datelor numerice n interiorul coprocesorului sunt fcute prin translatarea acestora ntr-o reprezentare intern standard numit reprezentare temporar real (pe 80 de bii). Coprocesorul are n componen un set suplimentar de registre, ce const din opt registre de date reprezentate n mod real pe 80 de bii, care se pot comporta ca o stiv de date sau care pot fi accesate n mod independent. Cu ajutorul instruciunilor coprocesorului se pot realiza calculele i modificrile din aceste opt registre de date.

63

Microprocesorul

Tabelul 2.6
Tipurile de date cu care lucreaz un coprocesor matematic, numrul de cifre semnificative i domeniul aproximativ de definiie
Tipul de date ntreg tip cuvnt ntreg scurt ntreg lung Zecimal compact Real simplu Real dublu Real extins Numrul de bii 16 32 64 80 32 64 80 Cifre semnificative 4 9 18 18 7 15-16 19 Domeniul aproximativ de definiie -32768 32767 -2109 2109 -91018 91018 -99...99 99...99 (18 cifre) 1.1810-38< x< 3.41038 2.2310-308< x< 1.7910308 3.3710-4932< x< 1.18104932

Tabelul 2.7
Instruciunile coprocesorului matematic
Clasa de instruciuni Transferul datelor Aritmetice Comparri Constante Controlul asupra procesorului Funcii Tipul de instruciuni ncrcare, stocare, schimb Adunare, scdere, nmulire, mprire, scdere/mprire invers, ridicare la putere, radical, calculul restului, calculul prii ntregi, schimbare semn, etc. Comparaie, examinare, testare 0,1,,log102,ln2,log210,log2e ncrcare/stocare cuvnt de control, stare cuvnt de control, ncrcare/stocare mediu, salvare, rencrcare, iniializare, anulare excepie Tangent, arctangent, sinus, cosinus, 2x-1, y*log2x, y*log2(x+1)

64

Elemente de arhitectur a sistemelor de calcul i operare

Cooperarea dintre microprocesorul principal i coprocesor se face n modul urmtor: pentru activarea coprocesorului matematic, microprocesorul i transmite acestuia un cod special, numit escape. n acest moment se iniiaz cooperarea dintre cele dou procesoare. Dup ce datele trimise coprocesorului au ajuns la acesta, ele ncep s fie prelucrate prin funciile specifice coprocesorului, iar n acelai timp microprocesorul principal pregtete configurarea datelor pentru urmtoarea sesiune de lucru a coprocesorului. Aceste dou operaii se execut simultan, dar sunt distincte n acelai timp.

2.4.3 Procesoare DSP (Digital Signal Processor)

Procesoarele de semnale digitale reprezint unul dintre cele mai importante tipuri de coprocesoare existente ntr-un calculator personal. Acest tip de coprocesor este capabil s prelucreze semnale analogice din mediul real (imagini, sunete, etc.) ce au fost convertite n semnale digitale, coninnd n acest sens instruciuni folosite n manipularea semnalelor analogice i prelucrarea acestora. Astfel, coprocesoarele de tip DSP sunt utilizate n aplicaii de tipul: sinteza i recunoaterea vorbirii; prelucrarea imaginilor video i fotografice; sinteza sunetelor i a muzicii; comprimarea i decomprimarea audio-video; accelerarea grafic 2D i 3D; funcii de modem. Au aprut astfel i apar n continuare noi tipuri de interfee ce permit introducerea n sistem a unor coprocesoare DSP. Un exemplu de astfel de interfa este interfaa RMI (Resource Manager Interface - interfa de administrare a resurselor) ce permite transferul unor aplicaii de la microprocesorul principal la un coprocesor DSP care le poate executa n timpul n care microprocesorul este ocupat cu alte operaii. Exist cteva companii furnizoare de plci de extensie dotate cu coprocesoare DSP, n special pentru aplicaii multimedia, ns preul acestora este nc destul de mare.
65

Microprocesorul

2.5 Extensii MMX (MultiMedia eXtension sau Matrix Math eXtension)

Necesitatea creterii tot mai mari a performanelor microprocesoarelor calculatoarelor personale a dus la ambiia firmei Intel de nglobare n funciunile procesoarelor Pentium a unor funcii de prelucrare a semnalelor ce erau ndeplinite pn acum de coprocesoarele DSP. Au aprut astfel instruciunile MMX ce au reprezentat prima schimbare major n setul de instruciuni x86 n ultimul deceniu. MMX definete 57 de noi instruciuni i un prim gol de compatibilitate de la introducerea microprocesorului 386. Toate noile procesoare ale firmelor Intel, AMD sau Cyrix nglobeaz suport pentru aceste noi instruciuni. Scopul extensiei instruciunilor MMX este ecela de a asigura o performan hardware pentru anumite tipuri de programare multimedia. n particular, instruciunile MMX sunt proiectate s asigure procesarea unei mari cantiti de date ntr-un timp scurt, folosind o singur instruciune. Acest procedeu este deseori referit ca SIMD (Single Instruction Multiple Data), adic execuia unei singure instruciuni pe mai multe seturi diferite de date n acelai timp. Aceasta este de fapt, originea numelui Matrix Math eXtension (Extensie Matricial Matematic), din moment ce aceste instruciuni opereaz asupra unei matrice de date (date multiple). Aceste tipuri de instruciuni sunt n mod special folositoare pentru calcule necesare n procesri grafice, video i audio, ceea ce a condus la cea de-a doua provenien a numelui: MultiMedia eXtensions (Extensii MultiMedia). Din moment ce MMX este o extensie a unui set de instruciuni, aceasta nseamn c procesoarele ce vor suporta aceast extensie vor rula toate aplicaiile software ce ruleaz pe procesoarele anterioare, dar nu i vice-versa: procesoarele MMX sunt compatibile cu cele mai vechi, dar nu i invers. De asemenea, pentru a utiliza avantajul instruciunilor MMX, trebuie ca i software-ul respectiv s fie scris avnd n vedere aceste extensii. n acest sens, software-ul trebuie s detecteze dac procesorul suport MMX, deoarece procesoarele non-MMX nu pot procesa deloc instruciuni MMX, apoi este posibil ca software-ul s fie scris astfel nct s lucreze att cu instruciuni MMX ct i cu instruciuni non-MMX, doar folosind coduri diferite n zonele n care sunt folosite instruciunile MMX. n mod evident, deoarece se refer n mod special la aplicaiile multimedia, celelalte aplicaii vor beneficia foarte puin de avantajele extensiei MMX. Procesrile video, editarea fiierelor audio, prelucrrile grafice, jocurile i software-ul similar cu acestea beneficiaz n mod sigur de performanele crescute sub extensia MMX, n timp ce aplicaiile standard
66

Elemente de arhitectur a sistemelor de calcul i operare

nu au dect foarte puin de ctigat sau deloc de pe urma avantajelor tehnologiei MMX.
2.6 Elemente de arhitectur intern a procesorului 2.6.1 Registrele

Registrele microprocesorului reprezint suprafee locale de memorare (locaii de memorie) n interiorul microprocesorului, folosite pentru stocarea datelor cu care se lucreaz. Fiecare procesor are un anumit numr de registre, unele dintre acestea dedicate unor funciuni speciale iar altele disponibile pentru uzul general al programatorilor. Registrele reprezint memoria cea mai rapid existent ntr-un PC, chiar mai rapid dect memoria cache de nivelul 1, deoarece ele sunt integrate direct n logica microprocesorului. Cele mai multe operaii se fac asupra registrelor; procesorul nu poate executa o operaie aritmetic, spre exemplu, direct n memorie. Dac dorim s adunm valoarea 1 unei locaii de memorie, procesorul va face acest lucru n mod normal ncrcnd valoarea iniial din memorie ntr-un registru, va aduga 1 n registru i apoi va salva noua valoare obinut napoi n memorie. Aceast complicat "schem" se petrece, evident, foarte repede i transparent fa de programator. Limea n bii a registrelor microprocesorului determin cantitatea de date cu care se pot efectua calcule la un moment dat. Aceast mrime este folosit uneori pentru a eticheta "mrimea" procesorului. De exemplu, putem auzi pe cineva vorbind despre un "procesor pe 16 bii", "procesor pe 32 de bii" sau de un "procesor pe 64 de bii". Acest termen se refer n mod normal la mrimea registrelor din interiorul CPU, ns este deseori greit folosit, atribuirea "mrimii" microprocesorului fcndu-se prin referire la limea magistralei de date. n acest sens este interesant faptul c toate microprocesoarele ncepnd cu 386 i pn la Pentium III sau K7 sunt microprocesoare pe 32 de bii, bazndu-ne pe aceast definiie. Doar ultimile microprocesoare RISC, cu ar fi Alpha-DEC, precum i viitorul Itanium (bazat pe noua arhitectur IA-64 i EPIC*) de la Intel sunt microprocesoare pe 64 de bii. De asemenea, ultima generaie de procesoare
* EPIC (Explicitly Parallel Instruction Computing) reprezint conceptul ce are ca prim obiectiv reducerea complexitii UCP prin optimizarea compilatoarelor.

67

Microprocesorul

AMD, Athlon 64 3400+ este un procesor pe 64 de bii aflat n competiie cu Pentium 4. Cu ct numrul de registre este mai mare ntr-un microprocesor, programatorii au o mai mare flexibilitate n scrierea unui mai bun cod-main. Totui, aceasta implic creterea complexitii procesorului, pe de o parte, dar i necesitatea compatibilitii cu modelele anterioare de microprocesoare, pe de alt parte.
2.6.2 Unitatea de interfa cu magistrala

Unitatea de interfa cu magistrala (Bus Interface Unit) este partea microprocesorului ce asigur interfaa cu restul calculatorului. Numele su vine de la faptul c se ocup cu manipularea informaiei prin magistrala de date a microprocesorului, condiie primordial pentru transferul datelor de la i ctre CPU. Unitatea de interfa cu magistrala este rspunztoare pentru toate semnalele ce se transmit ctre procesor, precum i pentru generarea tuturor semnalelor ce pleac de la procesor ctre alte componente ale sistemului de calcul.
2.6.3 Unitatea de control

Unitatea de control (Control Unit) reprezint circuitele ce controleaz fluxul de informaii prin procesor i coordoneaz activitile celorlalte componente ale sale. Aceast component poate fi denumit, ntro oarecare msur, "creierul din interiorul creierului", din moment ce controleaz ce se ntmpl n interiorul procesorului, iar acesta din urm controleaz restul calculatorului. Funciunile executate de ctre unitatea de control variaz n mare msur n funcie de arhitectura intern a CPU, din moment ce unitatea de control implementeaz efectiv aceast arhitectur. Pentru un procesor obinuit ce execut (nativ) instruciuni x86, unitatea de control ndeplinete funciunile de aducerea a instruciunilor din memorie, de decodificare a acestora, de control al execuiei i de stocare n memorie. Pentru un microprocesor RISC, unitatea de control are o serie ntreag de funciuni n plus. n acest sens, gestioneaz translatarea instruciunilor x86 n microinstruciuni RISC, coordoneaz planificarea microinstruciunilor ntre diferite uniti de execuie i asigur ca rezultatele obinute de la aceste uniti de execuie diferite s ajung acolo unde trebuie. Pentru unele astfel de microprocesoare unitatea de control se poate
68

Elemente de arhitectur a sistemelor de calcul i operare

mpri n alte subuniti de control (precum unitatea de planificare ce asigur planificarea i o unitate de ateptare (retirement unit) ce asigur controlul rezultatelor ce vin din pipeline) datorit complexitii deosebite a activitilor ce trebuiesc efectuate i gestionate.
2.6.4 Unitatea de execuie a ntregilor

Unitatea de execuie a ntregilor (Integer Execution Unit) se ocup cu operaii cu numere ntregi. Majoritatea calculelor fcute n interiorul PC-ului sunt fcute cu date n format ntreg. Denumirea de "ntreg" include numere ntregi, caractere (text) sau altfel de date similare. Numerele care nu sunt ntregi se numesc numere "n virgul mobil" (floating point numbers). Acestea sunt tratate diferit, folosindu-se o unitate special dedicat, numit unitate de virgul mobil (FPU - Floating Point Unit). Exist unitai de ntregi care pot manipula operaii cu numere n virgul mobil, dar foarte ncet n comparaie cu unitile n virgul mobil dedicate. Unitatea de execuie a ntregilor este locul n care instruciunile sunt executate i se fac calculele. Procesoarele mai vechi aveau o singur astfel de unitate, iar instruciunile erau procesate secvenial. Modelele mai noi folosesc mai multe uniti de execuie, permind n acest fel ca instruciunile s fie executate simultan, crescnd performanele. Procesoarele construite pe baza acestei concepii se spune c au o arhitectur superscalar. Procesoarele i mai avansate pot dispune de uniti de execuie proiectate special pentru execuia unor tipuri de instruciuni, acest lucru fiind n special valabil la procesoarele ce folosesc emularea x86 cu un nucleu procesor de tip RISC.
2.6.5 Unitatea de prelucrare n virgul mobil

Unitatea de prelucrare n virgul mobil (FPU - Floating Point Unit) este o unitate de execuie dedicat efecturii de calcule n virgul mobil precum i calculelor de funcii matematice. FPU este integrat n toate microprocesoarele ncepnd de la 386DX ncoace (mai puin procesorul 486SX). Primele calculatoare trebuiau s foloseasc unitatea de execuie a ntregilor pentru a desfura operaii n virgul mobil (dar foarte lent), aceasta n cazul n care nu aveau ataate un coprocesor matematic (vezi subcapitolul referitor la coprocesoare). Coprocesorul matematic lucra n colaborare cu procesorul principal pentru a mbunti performanele n cazul rulrii aplicaiilor intensiv orientate pe calcule matematice: calcul tabelar, aplicaii tiinifice, multimedia, jocuri etc.).
69

Microprocesorul

2.6.6 Memoria cache de nivel 1 i controller-ul de memorie cache

Toate microprocesoarele moderne ncorporeaz o mic memorie de vitez foarte mare aflat direct pe cip, numit memorie cache de nivel 1. Aceast memorie este folosit pentru stocarea datelor i instruciunilor recent folosite sau ce urmeaz a fi utilizate imediat. Un principiu al tiinei calculatoarelor spune c dac un procesor a referit recent o locaie de memorie, este foarte probabil ca s fac referire din nou la acea locaie n viitorul apropiat. Folosind o memorie ultrarapid cache pentru a stoca datele recent folosite absolv procesorul de cutarea n memorie a acelor date i de a le ncrca din nou. Acest lucru are o importan deosebit i mbuntete sensibil performanele, deoarece memoria principal este cu multe ordine de mrime mai lent dect memoria de tip cache a microprocesorului. n mod evident ns, o cretere a performanei impune i un pre de pltit: memoriile cache sunt memorii foarte scumpe. Memoria cache integrat n microprocesor se numete memorie cache de nivel 1 (sau memorie cache primar) deoarece este cea mai apropiat de acesta. De fiecare dat cnd procesorul cere informaii ce se gsesc n memorie, controller-ul de memorie cache (sau, pe scurt, controllerul cache) de pe cip folosete un circuit special prin care n prim faz verific dac datele respective sunt deja n memoria cache. Dac da, atunci sistemul a economisit timpul respectiv de acces la memoria principal. Cele mai multe PC-uri folosesc i o memorie cache de nivel 2 (sau memorie cache secundar, plasat pe placa de baz a PC-ului) pentru stocarea datelor recent folosite ce nu au mai ncput n memoria cache de nivel 1 (mult mai mic). Memoriile cache primare tipice ale microprocesoarelor variaz de la 8KB (la 486) la 32KB (Pentium II) sau la 64KB (AMD K6), putnd avea ns dimensiuni chiar mai mari la microprocesoarele recente de tip RISC, n timp ce microprocesoarele dinainte de 486 nu aveau memorie cache primar. Aceste memorii cache sunt foarte rapide deoarece ruleaz la ntrega vitez a procesorului i sunt integrate direct n acesta. Exist dou modaliti de organizare a memoriei cache primare de ctre un procesor; unele procesoare posed o singur memorie cache pentru a folosi att date ct i instruciuni; o astfel de memorie cache se numete, de obicei, memorie cache unificat. Alte procesoare folosesc dou memorii cache separate: una pentru date i alta pentru instruciuni, iar modalitile de
70

Elemente de arhitectur a sistemelor de calcul i operare

scriere pot fi diferite n cele dou memorii. De exemplu, la microprocesorul Pentium memoria cache pentru date adopt o politic de tipul "write-back", n timp ce pentru memoria cache de instruciuni este folosit doar metoda "write-through". Politica de scriere a memoriei cache determin modalitatea de scriere n locaiile de memorie ce sunt stocate n memoria cache; din acest punct de vedere exist dou tipuri de memorii cache: - Memorii cache "write-back" (sau cache "copy back"). Acest tip de memorie cache funcioneaz astfel: cnd sistemul scrie ntr-o locaie de memorie ce este n prezent stocat n cache, noua informaie este scris doar n cache, nefiind scris efectiv n memoria sistemului. n continuare, dac alt locaie de memorie trebuie s foloseasc zona de cache unde informaia este stocat, este salvat napoi (write-back) n memoria principal i apoi zona eliberat de cache poate fi folosit de noua adres. Acest tip de cache ofer performane mai bune dect memoria "write-through", deoarece economisete timpul de scriere n memoria principal. - Memorii cache "write-through". n acest caz, de fiecare dat cnd procesorul scrie ntr-o locaie de memorie cache, att memoria cache ct i memoria sistemului sunt reactualizate, avnd loc deci o pierdere de timp pentru scrierea n memoria de sistem. Acest tip de cache are performane mai slabe dect "write-back", dar este mai simplu de implementat.
2.7 Elemente de arhitectur extern a microprocesorului 2.7.1 Procesorul i magistralele de memorie

Modul n care microprocesorul comunic cu celelealte pri ale sistemului este de multe ori un factor de determinare a puterii sistemului precum i a modului de lucru intern. Microprocesorul controleaz ntregul PC i folosete ci dedicate de control al informaiilor denumite magistrale pentru a realiza trimiterea datelor ctre sub-sisteme, cum ar fi sistemul de memorie cache, memoria principal sau alte dispozitive ale calculatorului. Acestea reprezint interfeele externe ale microprocesorului i pot avea structuri diferite chiar i pentru uniti de procesare altfel similare. Exist mai multe tipuri de magistrale ale unui calculator personal modern. Urmtoarea seciune, referitoare la funciile magistralei de sistem ne ofer detalii specifice fiecrui tip de magistral i explicaii generale legate de dimensiunile i limea diverselor tipuri magistrale. Putem gsi
71

Microprocesorul

aici informaii interesante referitoare la magistrale sistem I/O de tipul PCI sau ISA. La nivelul microprocesorului, magistralele importante sunt magistrala procesorului i cea de memorie, discutate mai n detaliu n seciunea "Magistralele procesorului i magistralele de memorie".
2.7.2 Magistrala sistem - funcii i caracteristici Ierarhia de magistral. Un calculator personal are o ierarhie de magistrale; orice calculator modern are cel puin patru magistrale, considerate ierarhic, deoarece fiecare magistral este, generaliznd, parte a procesorului i fiecare dintre acestea se conecteaz cu nivelul de deasupra, integrnd unitar componentele PC-ului. De asemenea, magistralele respective nu lucreaz la aceeai vitez, ci unele au viteze mai sczute iar altele, n replic, mai mari - astfel, microprocesorul este cel mai rapid dispozitiv din interiorul unui calculator. - Magistrala procesorului: reprezint nivelul cel mai nalt de magistral pe care cipul procesorului l folosete pentru transferul informaiilor de la i nspre processor. - Magistrala cache: arhitectur de nivel nalt, ca cele folosite n construcia Pentium Pro i Pentium II, ce implic o magistral dedicat pentru accesarea memoriei cache. Aceasta este uneori denumit magistrala "din spate" (backside bus). Procesoarele convenionale ce folosesc plci de baz de generaia a 5-a au memoria cache conectat la magistrala standard de memorie. - Magistrala de memorie: este o magistral de nivelul doi ce asigur conexiunea ntre sub-sistemul de memorie i procesor; n unele sisteme magistralele procesor i cea de memorie sunt practic acelai lucru. - Magistrala local I/O: este o magistral de mare vitez de intrare/ieire folosit pentru conectarea perifericelor la memorie i procesor (spre exemplu: plci video, dispozitive de stocare pe disc, interfee rapide de reea, etc.). Cele mai uzuale astfel de magistrale sunt magistralele VESA Local Bus (VL-BUS) i Peripheral Component Interconnect Bus (PCI). - Magistrala standard I/O: conectat cu cele trei tipuri de magistral descrise mai sus, folosindu-se vechiul standard de I/O, pentru periferice de vitez mai redus, cum ar fi: mouse-uri, modemuri, plci de sunet normale, plci de reea de vitez sczut etc. Se folosete, de asemenea, pentru a se asigura compatibilitatea cu dispozitivele mai vechi. Aceast arhitectur este folosit la majoritatea PC-urilor actuale i se numete arhitectur de 72

Elemente de arhitectur a sistemelor de calcul i operare

magistral ISA (Industry Standard Architecture) sau EISA (Enhanced ISA ISA mbuntit). Unele PC-uri mai noi folosesc un fel de magistral adiional special proiectat pentru comunicaii grafice; n fapt aceasta nu este chiar o magistral, ci un port: portul de accelerare grafic (AGP - Accelerated Graphics Port). n general, diferena dintre un port i o magistral este aceea c magistrala este conceput pentru mai multe dispozitive ce i mpart resursele mediului, n timp ce un port este utilizat doar pentru dou dispozitive.

2.7.3 Magistralele procesorului i magistralele de memorie

Magistrala procesorului este dat de o mulime de circuite menite s transporte informaie de la i nspre procesor, iar activitatea sa este controlat n mod normal de cipul sistemului. Magistrala de memorie asigur conexiunea dintre memoria principal i memoria cache; n practic, aceste dou magistrale pot fi considerate ca un tot unitar. De multe ori referirea se face la magistrala de memorie, care este, de fapt, principala caracteristic legat de date la nivelul de sistem al PC-ului. Toate transferurile de date spre (i de la) procesor au loc folosindu-se aceast magistral.

2.7.4 Magistrala de date dintre procesor i memorie

Fiecare magistral este compus din dou pri distincte: magistrala de date i magistrala de adrese. Magistrala de date reprezint de fapt, ceea ce nelegem de obicei cnd vorbim despre magistrale; aceste "canale" de transmisie ajut practic la transferul datelor n interiorul PC-ului. Cu ct magistrala de date este mai larg, cu att mai multe date se pot transmite simultan, deci magistrale cu lrgimi de band mai mari implic n mod obinuit performane superioare. Viteza magistralei este dat de viteza ceasului de sistem i reprezint o alt component deosebit n stabilirea performanelor unui sistem de calcul. Lrgimea de band a magistralei de date este dat deci de cantitatea de informaii ce se scurge prin aceasta i este n funcie de limea magistralei (n bii) i de viteza ei (n MHz). Ne putem gndi la o magistral ca la o autostrad: limea ei este dat de numrul de benzi, iar viteza este dat de cea a mainilor care circul pe aceasta. Lrgimea de band a
73

Microprocesorul

magistralei de memorie este extrem de important n PC-urile actuale, deoarece reprezint de multe ori o strangulare a performanelor calculatorului. Deoarece procesoarele de astzi ruleaz la viteze din ce n ce mai mari (de fapt mult mai mari dect alte pri ale sistemului), mrirea vitezei cu care se transfer datele ctre procesor pentru a se prelucra are o importan deosebit asupra performanelor generale ale calculatorului. De aceea, viteza microprocesorului nu mai afecteaz foarte mult performanele globale ale calculatoarelor; spre exemplu, un Pentium 150 nu este cu mult mai rapid dect un Pentium 133 (P150 ruleaz pe o magistral de 60 MHz de memorie iar P133 pe o magistral de 66 MHz), astfel c o mbuntire cu 10% a vitezei magistralei are un efect mult mai mare dect o mbuntire cu 10% a vitezei microprocesorului.

2.7.5 Magistrala de adrese dintre procesor i memorie

Magistrala de adrese reprezint canalele pe care se transport informaia despre locul n memorie unde datele sunt transferate, sau de unde se transfer. Aceast magistral nu conine deci informaie efectiv util, ci practic doar adrese de memorie ce determin locaiile unde datele sunt scrise sau de unde sunt citite. Viteza magistralei de adrese este aceeai cu aceea a magistralei de date, iar limea acesteia determin "adresabilitatea" procesorului, adic cantitatea maxim de memorie ce poate fi accesat de ctre microprocesor. Nu ntotdeauna limea magistralei de adrese coincide cu a celei de date i nici nu se impune vreo restricie n acest sens; totui, calculatoarele actuale dispun de magistrale de date i de adrese de limi suficient de mari pentru a asigura performane sporite de lucru. n general, mrimea magistralei de date nu reprezint un concept foarte uzual atunci cnd vorbim despre caracteristicile unui calculator; poate datorit faptului c nu are un impact direct asupra performanelor i pentru c, de regul, procesoarele pot adresa mult mai mult memorie (RAM) fizic dect folosesc marea majoritate a utilizatorilor de PC-uri. n plus fa de aceasta, plcile de baz ale calculatoarelor limiteaz dimensiunea maxim a memoriei RAM cu mult sub posibilitile de adresare ale procesorului. De exemplu, un procesor Pentium normal poate adresa (teoretic) memorie pn la limita de 4 GB, dar cele mai multe plci de baz limiteaz aceast memorie la maximum un sfert din dimensiunea maxim (maxim 1 GB).
74

Elemente de arhitectur a sistemelor de calcul i operare

2.7.6 Mrimea magistralei de adrese pentru diverse procesoare

La microprocesoarele din familia x86 limea de 32 de bii este cea mai uzual (i n mod implicit adresarea de maximum 4GB de memorie). Deoarece aceast limit de 4GB de memorie RAM este mai mult dect suficient, dup cum am exemplificat i mai nainte, nu s-au fcut deci eforturi deosebite pentru a se mri. Doar la ultimile tipuri de microprocesoare, Pentium Pro, Pentium II, Pentium III i Pentium IV limea magistralei de adrese a fost mrit la 36 de bii, de unde a rezultat deci o adresabilitate de 64 GB (236 octei).

2.8 Ceasuri de sistem

Toate calculatoarele compatibile IBM-PC dispun de aa numitele ceasuri de sistem sau, pe scurt, ceasuri. Un astfel de ceas este un dispozitiv ce emite impulsuri electrice la intervale regulate de timp, ca un metronom. Aceste impulsurile sunt emise cu o anumit frecven, n mod normal msurat n MHz (mega-hertzi, sau milioane de cicluri pe secund). Pn la apariia procesorului 486, procesoarele calculatoarelor personale erau proiectate s foloseasc un ceas ce funciona la dublul vitezei microprocesorului. Astfel, un procesor 386 la 25 Mhz folosea un ceas ce lucra la 50 MHz (aceast "regul" era valabil la toat familia de procesoare x86, de la Intel 8086 la 386). ncepnd cu 486, procesoarele au nceput s utilizeze aceeai frecven cu cea a ceasului, fr s-o mai mpart la doi. Un "tact" de ceas ("clock tick") reprezint cea mai mic unitate de msur n activitatea de procesare desfurat de microprocesor - acesta se mai numete i "ciclu de ceas"; unele activiti necesit un singur ciclu de ceas pentru a se termina, altele mai multe cicluri, n funcie de complexitatea acestora. Frecvena de tact a ceasului determin, deci, viteza cu care se desfoar activitile n interiorul PC-ului. n acest sens, o vitez mai mare determin o performan mai mare a calculatorului. ncepnd cu anul 1992, Intel a oferit soluii de cretere a vitezei de procesare a unui calculator fr a face modificri asupra plcii de baz: procesoarele cu dublare (de exemplu, 486DX2/66) sau triplare (486DX4/100) a frecvenei ceasului. Codul DX2 nsemna dublarea frecvenei interne a ceasului, adic executarea instruciunilor din setul de baz al microprocesorului la o vitez
75

Microprocesorul

de dou ori mai mare - n acest caz la 66 MHz fa de 33 MHz, n timp ce DX4 nseamn de fapt triplarea vitezei interne de execuie a instruciunilor (de la 33 MHZ la 100 MHz) i nu cvadruplarea lor, cum am fi tentai s credem la prima vedere. De remarcat n ambele situaii este faptul c funcionarea extern a procesorului - comunicarea cu magistralele, memoria, porturile, discurile etc. nu se modific, ea este fcut la aceeai vitez: 33 MHz. Vechile PC-uri dispuneau de un ceas de sistem unificat; un singur ceas ce rula la frecvene foarte mici, de genul a 8 KHz, conduceau microprocesorul, memoria i magistrala I/O. Cu timpul, calculatoarele s-au modernizat i unele dispozitive au ctigat n vitez fa de altele; a aprut astfel necesitatea apariiei de ceasuri diferite. Un calculator actual are de regul patru sau cinci ceasuri ce ruleaz la viteze diferite (dar corelate). Atunci cnd se face referirea la "ceasul sistem", ne referim la viteza magistralei de memorie de pe placa de baz (i nu la viteza intern a microprocesorului). Calculatoarele folosesc un singur circuit generator de tacturi (aflat pe placa de baz) pentru generarea tacturilor "ceasului sistem" i apoi sunt folosite ceasuri multiplicatoare sau divizatoare pentru a crea alte semnale. Tabelul 2.8 de mai jos reflect setarea ceasurilor ntr-un sistem PC Pentium II 266 MHz i modul n care acestea sunt corelate. Se observ din acest tabel c ntregul sistem este bazat pe viteza ceasului sistem, de aceea creterea vitezei ceasului sistem este mult mai important dect creterea vitezei interne a microprocesorului; de fapt procesorul "pierde timp" n ateptarea informaiilor venite de la dispozitive mult mai ncete, cum ar fi magistralele de sistem. Tabelul 2.8
Setarea ceasului la un sistem Pentium II 266 MHz
Ceas Dispozitiv/Magistral Microprocesor Cache de nivel 2 Magistrala de sistem Magistrale PCI Magistrala ISA Viteza (MHz) 266 133 66 33 8.3 Corelaie Ceas sistem * 4 Ceas sistem * 2 (sau Procesor / 2) Ceas sistem / 2 Magistral PCI / 4

76

Elemente de arhitectur a sistemelor de calcul i operare

2.9 Noiuni de multiprocesare

Pe scurt, multiprocesarea nseamn folosirea unui sistem de calcul ce conine dou sau mai multe microprocesoare, n sperana c, folosind dou (sau mai multe) procesoare n loc de unul, poi mri performanele. Dar, cum este de ateptat, nu totdeauna cnd se folosesc mai multe procesoare performanele sunt mai bune, ci doar sub anumite condiii. Pentru a beneficia de avantajele multiprocesrii un sistem de calcul trebuie s aib: Plac de baz capabil s suporte mai multe procesoare; Suport din partea procesoarelor - aceasta nseamn c procesoarele trebuie s fie capabile s fie folosite ntr-un sistem multiprocesor. Nu toate procesoarele sunt capabile de acest lucru, unele variante de microprocesoare au suport pentru multiprocesare, altele nu; Suport din partea sistemului de operare - un sistem de operare ce suport multiprocesarea, precum Windows NT/2000 sau UNIX. n plus, multiprocesarea este efectiv eficient atunci cnd aplicaiile software sunt proiectate n mod special pentru aceasta. Multiprocesarea este condus de ctre sistemul de operare, ce aloc diferite sarcini (task-uri) pentru a fi soluionate de diferitele procesoare ale sistemului. Aplicaiile proiectate pentru multiprocesare sunt de regul concepute astfel nct s poat fi divizate n mici subrutine care s poat fi rulate n mod independent. Aceasta permite sistemului de operare s asigure operarea acestor pri ale programului de ctre diferite procesoare n acelai timp, ceea ce reprezint de fapt atuul multiprocesrii. Dac ns aplicaia respectiv nu este conceput special pentru multiprocesare, nu putem beneficia de avantajele existenei a mai multor procesoare, dei sistemul de operare poate face uz de procesoare adiionale atunci cnd rulm mai multe aplicaii n acelai timp (multitasking). Multiprocesarea poate fi simetric sau asimetric, n funcie de modul n care sistemul de operare mparte sarcinile ntre procesoare. Multiprocesarea asimetric este cazul n care unele procesoare execut doar sarcini de sistem iar altele ruleaz doar aplicaii. Acest tip de multiprocesare este evident ineficient n cazuri n care calculatorul trebuie s execute doar task-uri de sistem i nici o aplicaie utilizator, sau invers. Multiprocesarea simetric (SMP - Symmetric MultiProcessing) permite execuia de task-uri de sistem sau utilizator de ctre orice procesor, ceea ce conduce la performane superioare. Acest tip de multiprocesare este folosit pe unele calculatoare personale.
77

Microprocesorul

Pentru ca un procesor s permit suport pentru multiprocesare, trebuie ca s accepte un protocol de multiprocesare ce va dirija modul n care procesoarele vor comunica unele cu altele n cadrul SMP. Procesoarele Intel Pentium Pro i Pentium II folosesc un protocol SMP numit APIC, iar soclurile Intel ce suport microprocesarea (precum 430HX, 440FX, 450GX/KX) sunt proiectate pentru a lucra cu aceste cipuri. APIC este un standard patentat de Intel, pentru a preveni firmele concurente Cyrix i AMD pentru a implementa APIC, ceea ce nseamn c, dei AMD i Cyrix produc procesoare compatibile Intel, nu pot s le fac s lucreze n configuraii SMP pe plci de baz cu socluri standard Intel; deci din punctul de vedere al multiprocesrii simetrice, Intel i-a rezervat ntreaga pia de calculatoare. Firmele AMD i Cyrix au implementat propriul standard de multiprocesare simetric, numit OpenPIC. AMD ofer suport pentru standardul OpenPIC cu soclul AMD-640 i permite multiprocesare simetric ncepnd cu procesorul K6. Procesorul Intel Pentium Pro a reprezentat cea mai bun soluie la un moment dat pentru multiprocesare simetric deoarece fiecare cip are memorie cache de nivel 2 integrat. ntr-un sistem cu mai mult de un procesor i memorie cache de nivel 2 pe placa de baz, procesoarele trebuie s mpart aceast memorie. Fiecare nou procesor introdus va determina o scdere a memoriei cache pentru celelalte procesoare, ceea ce va scdea performanele. Deoarece fiecare Pentium Pro are memorie cache de nivelul 2 proprie, problema partajrii memoriei cache ntre procesoare dispare i performanele sunt mult mbuntite.

2.10 Funcionarea i operarea ntreruperilor 2.10.1 Generaliti referitoare la ntreruperi

Microprocesorul este un dispozitiv bine reglat pentru a ndeplini (n mod normal) un anumit lucru la un moment dat. Totui, atunci cnd folosim un computer, este necesar ca microprocesorul s fac mai multe lucruri n acelai timp (sau cel puin s lase s par acest lucru). De exemplu, pentru orice utilizator de Windows 9x, NT, 2000, XP (sistem de operare multitasking) este normal ca n timp ce editeaz un document s asculte muzic de la un CD-ROM sau s ncarce un fiier prin modem de pe Internet.
78

Elemente de arhitectur a sistemelor de calcul i operare

Procesorul este capabil s execute toate aceste sarcini aparent simultan prin mecanismul de "time-sharing", adic mprindu-se ntre diversele dispozitive ce i solicit activitatea. Numai viteza extraordinar a microprocesorului de comutare ntre diferitele sarcini pe care le are de ndeplinit ne d de fapt iluzia c acestea sunt executate n acelai timp. Majoritatea componentelor unui calculator trebuie s schimbe informaii cu microprocesorul i este de ateptat s capteze atenia acestuia atunci cnd este nevoie. Procesorul are astfel rolul de a balansa transferul de informaii de la componentele calculatorului i de a le organiza ntr-o manier eficient. Exist dou ci de baz n ndeplinirea acestor sarcini, i anume: - prin sondare (polling). Procesorul poate trimite mesaje dispozitivelor calculatorului pentru a le "ntreba" dac au nevoie de ceva. Aceast metod nu este ns folosit ntr-un PC, pe baza unor motive ntemeiate. Primul motiv ar fi acela c se face o risip de timp pentru a verifica fiecare dispozitiv n parte dac are nevoie de aciunea procesorului; alt motivaie ar fi aceea c diversele componente ale calculatorului au nevoie de colaborarea procesorului n procente diferite, de exemplu, mouse-ul are nevoie de mult mai puin atenie dect, s spunem, un harddisk ce este n activitate. - prin ntrerupere (interrupting). Cealalt modalitate de balansare a transferului de informaii de la componente este aceea de a le lsa pe acestea s cear "atenia" atunci cnd au nevoie. Astfel au aprut ntreruperile. Atunci cnd un dispozitiv trebuie s transfere date ctre microprocesor, genereaz o ntrerupere ctre acesta, ceea ce este, de fapt, un mesaj de genul: "Am nevoie de atenia dvs., v rog". n acest moment microprocesorul se ntrerupe din activitate i ndeplinete cererea dispozitivului care i-a cerut atenia. Aceste cereri sunt rezolvate pe baza unei liste de prioriti, pentru a se decide care este mai important i deci, care va fi executat prima. Poate prea la prima vedere puin ineficient ca procesorul s fie ntrerupt tot timpul funcionrii calculatorului. Este destul de neplcut s stai de pild la servici i s fii sunat din cinci n cinci minute de ctre cineva i s nu apuci s termini ce ai de lucru. S ne gndim totui, la varianta n care la fiecare 30 de secunde am fi nevoii s sunm pe cineva pe care s-l ntrebm dac are nevoie de noi... Din fericire, microprocesorul nu este o fiin uman i poate fi "deranjat" n acest mod, prin ntreruperi. n afar de ntreruperile hardware despre care discutm aici, exist i ntreruperi software, care sunt folosite de numeroase produse program ca
79

Microprocesorul

rspuns la diverse evenimente ce apar n timpul rulrii sistemului de operare sau al aplicaiilor. n esen, acestea genereaz ntreruperea microprocesorului de ctre el nsui! Acest lucru face parte din modul n care un procesor este n stare s fac mai multe lucruri o dat. Alt lucru pe care l fac ntreruperile software este acela c permit unui program s acceseze alt program fr s tie unde se afl n memorie. Dup cum am mai spus, procesorul dispune de capacitatea de a fi ntrerupt, dar i de posibilitatea de a conserva activitatea ntrerupt ct timp se prelucreaz cerearea solicitat. n acest sens este folosit stiva microprocesorului, care joac rorlul de depozit pentru toate informaiile curente despre activitile calculatorului. Atunci cnd se execut o subrutin sau se ntrerupe temporar o activitate pentru a se focaliza asupra alteia, informaiile despre locul unde se afla i ce fcea calculatorul sunt depozitate n stiv astfel nct s se poat ntoarce la activitatea ntrerupt. Cnd se trece la o nou activitate, informaiile despre aceasta vor fi plasate n vrful stivei, ndicnd activitatea curent. Cnd activitatea calculatorului se termin, informaiile despre activitatea respectiv sunt eliminate din stiv, iar sarcina anterioar i reia locul n vrful stivei, devenind astfel noua sarcin curent, iar calculatorul revenind n acest mod la operaia anterioar. Viteza procesorului este de asemenea, fascinant, mai ales la calculatoarele ultimelor generaii. Exist astfel termenul de MIPS (Millions of Instructions Per Second - Milioane de Instruciuni pe Secund), care iniial era folosit doar pentru calculatoarele de tip mainframe (de performane net superioare calculatoarelor personale), dar, datorit creterii remarcabile a performanelor PC-urilor, se utilizeaz n prezent i pentru acestea. Dac primele cipuri Intel atingeau o treime de MIPS, procesoarele Pentium actuale depesc 150 MIPS. Alt unitate uzual pentru msurarea vitezei procesorului este MHz, despre care am mai discutat n cursul acestui capitol. Reamintim c primul 8086 rula la o fecven de 4,77 MHz, n timp ce procesoarele actuale Pentium ruleaz pn la o frecven ce depete 3000 MHz. Viteza de procesare a cipului este ntr-adevr fascinant: spre exemplu, un procesor la numai 200 MHz execut 20.000.000 de instruciuni ntre fiecare apsare a tastelor pe care o facem n decursul unei redactri (rapide) de text, iar n cazul transferului de date cu un modem de 28.800 KB/sec procesorul execut n jur de 60.000 de instruciuni ntre doi octei care se transfer.

80

Elemente de arhitectur a sistemelor de calcul i operare

2.10.2 Controllere de ntreruperi

ntreruperile generate de dispozitivele din interiorul calculatorului sunt aduse la microprocesor folosind o component aparte hardware denumit controller de ntreruperi. Standardul n acest domeniu este controller-ul de ntreruperi Intel 8259 i dateaz de la primele PC-uri. Ca n majoritatea cazurilor legate de controllere dedicate, plcile de baz moderne controllerul 8259 este ncorporat ntr-un cip mai mare ca parte a unui circuit. Controlerul de ntreruperi are opt linii de intrare ce primesc cererile de la unul din cele opt dispozitive diferite, apoi trimite cererea microprocesorului, spunndu-i ce dispozitiv a lansat acea cerere (ce numr de ntrerupere are cererea, de la 0 la 7). Primul PC avea un singur astfel de controller i deci suporta doar ntreruperi de la 0 la 7. ncepnd cu calculatorul IBM-AT a fost adugat al doilea controller de ntreruperi pentru extinderea sistemului, reprezentnd extinderea magistralei sistem ISA (Industry Standard Architecture) de la 8 la 16 bii. Pentru a se pstra ns compatibilitatea cu sistemele mai vechi, proiectanii sistemelor AT nu au nlurat vechea linie de ntreruperi ctre procesor, ci au folosit (n cascad) ambele controllere mpreun. Primul controller de ntreruperi are nc opt intrri i o singur ieire ctre microprocesor, n timp ce al doilea are aceeai schem, dar i se adaug opt noi intrri (dublnd n acelai timp numrul de ntreruperi) iar ieirea sa alimenteaz intrarea numrul 2 a primului controler. Astfel, dac o intrare a celui de-al doilea controller devine activ, ieirea sa declaneaz ntreruperea 2 a primului controller, care trimite un semnal ctre microprocesor. De aceea, aceast modalitatea de funcionare a celor dou controllere se numete funcionare n cascad. Ce se ntmpl atunci cu ntreruperea 2? Aceast linie de ntrerupere (IRQ - Interrupt ReQuest Line) este folosit acum pentru a asigura funcionarea n cascad a celui de-al doilea controller, astfel nct proiectanii sistemului AT au redirecionat circuitul plcii de baz al IRQ2 ctre IRQ9, deci dac vreun dispozitiv al sistemului ncearc s foloseasc IRQ2, el folosete, n realitate, ntreruperea 9 (IRQ9). Dispozitivele proiectate s foloseasc IRQ2 ca setare iniial sunt relativ rare n ziua de astzi, din moment ce ntreruperea 2 a fost scoas din uz de peste zece ani. n cele mai multe cazuri IRQ2 se socotete inutilizabil, n moment ce IRQ9 este o linie de ntreruperi perfect valabil. Exist totui unele modemuri care utilizeaz ntreruperea 2 pentru a ocoli faptul c porturile COM3 i COM4 partajeaz ntreruperi cu COM1 i
81

Microprocesorul

COM2 n absena altor setri. n cazul existenei ntr-un PC a mai multor dispozitive ce folosesc ntreruperi IRQ1-IRQ8, este necesar s folosim uneori un astfel de modem setat pentru IRQ2, care folosete de fapt IRQ9; n acest caz trebuie s fim ateni pentru a nu a avea alt dispozitiv setat pentru a folosi IRQ9 (ar intra astfel n conflict cu modemul).

2.10.3 Linii IRQ i magistrala sistem

Dispozitivele ce folosesc ntreruperi le semnaleaz prin liniile de ntrerupere ale magistralei ISA. Majoritatea ntreruperilor cu care este nzestrat magistrala de sistem este pentru uzul diverselor dispozitive; totui unele dintre acestea sunt folosite intern de ctre sistem. Din aceast cauz nu exist circuite fizice pe magistral - acestea sunt ntreruperile 0, 1, 2, 3, 8 i 13 i nu sunt disponibile pentru alte dispozitive externe (plci de extensie, modemuri etc.). Toate aceste consideraii sunt valabile pentru plcile ISA i VESA, plcile PCI tratnd ntreruperile n mod diferit, prin propriul sistem de ntreruperi interne. Prioritatea ntreruperilor. Tratarea ntreruperilor n interiorul PC-ului se face corespunztor nivelelor de prioriti asociate acestora. Aceste prioriti sunt n funcie de linia de ntreruperi pe care o folosesc pentru a intra n controller-ul de ntreruperi. Din acest motiv, nivelele de prioriti sunt direct legate de numrul ntreruperii: n cazul vechilor PC-XT, prioritile ntreruperilor sunt 0, 1, 2, 3, 4, 5, 6, 7. n cazul unui PC modern, este un pic mai complicat, avnd n vedere c cel de-al doilea set de ntreruperi este direcionat prin canalul IRQ2 al primului controller. Asta nseamn c primul controller "vede" aceste ntreruperi cu prioritatea ntreruperii doi, ceea ce ne conduce la urmtorul ir de prioriti: 0, 1, (8, 9, 10, 11, 12, 13, 14, 15), 3, 4, 5, 6, 7. n decursul oricrui eveniment, nivelul de prioritate al ntreruperilor nu influeneaz n mare msur performanele (viteza) calculatorului, ele practic exist pentru ca procesorul s tie n ce ordine s le examineze, pentru a nu se genera conflicte.

82

Elemente de arhitectur a sistemelor de calcul i operare

2.10.4 ntreruperi nemascabile

ntreruperile uzuale pe care le folosim n mod normal i le referim printr-un numr se numesc ntreruperi mascabile. Microprocesorul este capabil s "mascheze" - aceasta nseamn, de fapt, s ignore temporar - o ntrerupere de acest gen, pentru a termina alt proces nceput anterior. Pe lng aceste ntreruperi mascabile, exist i ntreruperile nemascabile (NMI - Non Maskable Interrupts) care nu pot fi "mascate" (ignorate) i se folosesc atunci cnd condiii excepionale necesit atenia imediat a procesorului. ntreruperile nemascabile nu pot fi ignorate de ctre procesor dect dac acest lucru este specificat n mod direct. Atunci cnd este recepionat un semnal NMI, procesorul se oprete din activitate indiferent care ar fi aceasta i acord atenia acestui semnal. Deoarece aceast modalitate de lucru este destul de "dur", n sensul c procesorul trebuie s renune necondiionat la activitatea curent i s se ocupe de ntreruperea NMI, aceste ntreruperi nemascabile sunt folosite doar pentru probleme absolut critice, cum ar fi erorile hardware. Cea mai des uzitat ntrerupere NMI este aceea pentru controlul paritii memoriei; dac se semnaleaz o astfel de eroare trebuie s fie imediat remediat pentru a se preveni eventualele pierderi de date - n acest caz se sisteaz funcionarea calculatorului (halt), pentru a se corecta defeciunea hard aprut. n tabelul 2.9 sunt prezentate o serie dintre cele mai uzuale ntreruperi i rolul acestora. Tabelul 2.9 Un sumar al ntreruperilor i utilizarea lor obinuit
IRQ
0 1 2 3

Linie BUS
8/16 bii

Prioritate
1 2 11

Utilizare obinuit
Timerul sistem Controller-ul de tastatur Nici una; nlocuit de IRQ 9 COM2

Alte utilizri
Modemuri, plci video EGA, COM3, COM4 COM4, modemuri, plci de sunet, plci de reea, plci acceleratoare de band COM3, modemuri, plci de sunet, plci de reea, plci acceleratoare de band LPT2, LPT3, COM3, COM4, modemuri, plci de reea, plci acceleratoare de band, controllere de HD la vechile PC-XT Plci acceleratoare de band

8/16 bii

12

COM1

8/16 bii

13

Placa de sunet

8/16 bii

14

Controller floppy disk

83

Microprocesorul
IRQ
7

Linie BUS
8/16 bii

Prioritate
15

Utilizare obinuit
LPT1

Alte utilizri
LPT2, COM3, COM4, modemuri, plci de sunet, plci de reea, plci acceleratoare de band Plci de reea, plci de sunet, adaptoare gazd SCSI, dispozitive PCI, dispozitive IRQ2 redirectate Plci de reea, plci de sunet, adaptoare gazd SCSI, canalul IDE secundar, canalul IDE cuaternar, dispozitive PCI Plci de reea, plci de sunet, adaptoare gazd SCSI, plci video VGA, dispozitive PCI, canalul IDE teriar i cuaternar Plci de sunet, de reea, adaptoare gazd SCSI, plci video VGA, canalul IDE teriar, dispozitive PCI Adaptoare gazd SCSI Plci de reea, adaptoare gazd SCSI

8 9

16 bii

3 4

Ceasul n timp real -

10

16 bii

11

16 bii

12

16 bii

PS/2 mouse

13 14 15

16 bii 16 bii

8 9 10

FPU/NPU/Coprocesor matematic Canalul IDE primar Canalul IDE secundar

2.11 Procesoarele RISC 2.11.1 Introducere

Termenul de procesor RISC (Reduced Instruction Set Computer Calculator cu Set Redus de Instruciuni) a mai fost folosit pe parcursul acestui capitol, n comparaie cu procesoarele CISC (Complex Instruction Set Computer - Calculator cu Set Complex de Instruciuni); a sosit momentul s dm mai multe detalii referitoare la acest subiect i s explicm diferenele dintre procesoarele RISC i CISC. Procesoarele RISC, aprute pentru prima oar n anii 80, preau la nceput predestinate s domine industria computerelor n anii 90 i s fac uitate vechile arhitecturi de calculatoare. Practic toi productorii importani din industria calculatoarelor ofer acum sisteme gen RISC; giganii IBM i Hewlett Packard i-au dezvoltat propriile procesoare RISC, n timp ce ali productori, ca DEC sau Siemens, au preferat s cumpere licene ale unor arhitecturi deja existente pentru a ine pasul cu concurena acerb din domeniu.
84

Elemente de arhitectur a sistemelor de calcul i operare

Conceptul de arhitectur "RISC" este deseori greit utilizat sau definit, de aceea, pentru a fi definit i neles mai bine, trebuie s facem o ntoarcere n timp i s vedem, de asemenea, diferenele eseniale ntre cele dou noiuni: CISC i RISC. Era recunoscut de prin anii 50 faptul c se putea sacrifica din eficiena memoriei la codificarea unui set de instruciuni pentru a ctiga n performan. Instruciunile simple, de lungime fix, erau uor de implementat i se executau mai rapid. Aceast tehnic era folosit pentru implementarea setului de instruciuni al calculatorului IBM 360 de tip mainframe din anii 50-60. Acest set de instruciuni se baza pe o arhitectur clasic CISC, dar mecanismul de microcod ce execut de fapt instruciunile era un procesor RISC mai simplu. Microcodul este de fapt, software-ul de nivel jos care conduce execuia setului de instruciuni, iar procesoarele RISC se numeau controllere orizontale de microcod. Cu toate c erau cunoscute avantajele arhitecturilor RISC, costurile ridicate ale memoriei determinau folosirea n continuare a arhitecturilor CISC, mai eficiente din punct de vedere al capacitii de stocare i care preau c reprezint cea mai bun soluie n acel moment (se utilizau instruciuni capabile s fac mai multe lucruri). Primele inovaii fa de vechile arhitecturi de microprocesor au aprut n cadrul firmei IBM, n cadrul unui proiect nceput n 1975 i care acum se consider a fi pionieratul n domeniul arhitecturii RISC. John Cocke, un inginer de la IBM, a observat c doar o mic parte (aproximativ 10%) a mulimii de instruciuni a calculatorului IBM 360 era folosit n majoritatea timpului, iar aceast submulime concentra cel mai mare procent din timpul de execuie (90%). Membrii echipei IBM i-au propus astfel s simplifice mulimea de instruciuni pentru a obine o medie de o execuie pe ciclu de ceas. Acest obiectiv era realizabil doar dac mulimea de instruciuni era structurat n conduct, salvndu-se n acest mod timpul pierdut pentru aducerea i decodarea instruciunilor din memorie. Dou noi proiecte ce au pornit civa ani mai trziu au adus conceptele RISC n centrul ateniei arhitecturilor de computere. Primul dintre acestea a fost condus de David Patterson de la Universitatea din Berkeley i a culminat cu definiia procesoarelor RISC I i RISC II la nceputul anilor 80. Patterson a conturat, de asemenea, conceptul RISC. Potrivit acestuia, procesoarele RISC au inaugurat o nou mulime de principii arhitecturale. Din aceast cauz, noiunea de RISC a fost considerat mai degrab o filozofie dect o reet arhitectural diferit. Punctele relevante ale filozofiei proiect menionate de Patterson sunt: mulimea de instruciuni trebuie s fie simpl;
85

Microprocesorul

instruciunile trebuie s ruleze la cea mai mare rat posibil; noiunea de "pipelining" este mai important dect mrimea programului; tehnologia compilatorului este un element critic ntr-un proiect RISC: optimizarea compilatoarelor trebuie s translateze ct mai mult posibil din complexitatea hardware-ului ctre faza de compilare. Rezultatele acestor cercetri au dat natere unei arhitecturi mai simple, caracterizat de instruciuni mai puine, multe registre, acces simplificat pentru ncrcarea i depozitarea datelor n memoria principal i posibilitatea execuiei instruciunilor ntr-o singur perioad de ceas. Procesorul respectiv era mai mic, cu performane mai mari, dar se folosea cu 20-25% mai mult memorie i erau necesare memorii cache scumpe pentru a ine "ocupat" microprocesorul RISC. Din aceast cauz, costurile ridicate ale arhitecturilor RISC au mpiedicat rspndirea acestora pe piaa consumatorilor medii i a aplicaiilor comerciale. Procesoarele RISC erau ns folosite uzual n staiile de lucru foarte puternice pentru aplicaii tiinifice, tehnice i militare, unde se justificau preurile mari pentru performane nalte. O dat cu evoluia microprocesoarelor RISC, s-a descoperit c avantajul acestora nu cost n micorarea setului de instruciuni, ci n simplitatea acestora. n zilele de astzi majoritatea microprocesoarelor RISC au cam acelai numr de instruciuni ca i cele CISC. Datorit modurilor mai simple de adresare ale instruciunilor RISC, avnd nevoie de un singur acces la memoria principal i putnd fi executate ntr-un singur ciclu de ceas, execuia lor a putut fi foarte uor implementat n structuri de tip pipeline i structuri superscalare ce permit execuia simultan a mai multor instruciuni. Tot evideniind avantajele tehnologiei RISC, se pune n mod evident ntrebarea: De ce s mai folosim procesoare CISC, cnd cele RISC sunt n mod clar mai performante? Pentru a rspunde la aceast ntrebare, s evideniem cteva aspecte ale problemei. n primul rnd, diferenele dintre microprocesoarele CISC i cele RISC nu mai sunt aa de mari odat cu implementrile RISC fcute n ultimii ani de ctre microprocesoarele compatibile Intel. Avantajul major care apare prin folosirea procesoarelor CISC este acela al compatibilitii soft; astfel, cantitatea de software ce ruleaz n prezent pe microprocesoare CISC este imens i deocamdat nu se poate renuna la ea. Sucesul deosebit al sistemului de operare Windows 95 (ce ruleaz pe procesoare CISC) i
86

Elemente de arhitectur a sistemelor de calcul i operare

faptul c noua sa versiune Windows 98, va rula tot pe platforme cu procesoare CISC, face s se menin nc utilizarea ndeosebi a acestor tipuri de microprocesoare. Dac cineva dorete s achiziioneze un calculator bazat pe un microprocesor RISC, nu va putea beneficia de programele scrise pentru calculatoarele PC, deoarece majoritatea acestui soft este special proiectat pentru calculatoare PC. Dac softul pentru PC va dori s ruleze pe un procesor RISC, vor aprea numeroase probleme, printre care: aplicaiile au fost compilate pentru a lucra doar cu setul de instruciuni x86; softul se ateapt s sesizeze un mediu de operare Microsoft sub care s lucreze; multe aplicaii i jocuri DOS mai vechi trebuie s gseasc mediul hard al calculatorului PC, lucrnd de multe ori direct cu resursele hard ale calculatorului. Pentru prima problem ar putea exista soluia recompilrii aplicaiei astfel nct s poat opera cu setul de instruciuni al microprocesorului RISC. La ora actual, multe aplicaii sunt disponibile n mai multe versiuni, fiind compilate pentru platforme RISC, dar numrul acestora este totui destul de redus i exist reineri n privina firmelor de a elabora mai multe versiuni (din acest punct de vedere) ale aceleiai aplicaii. Reinerile acestor firme sunt ntemeiate, deoarece piaa este prea mic pentru ca ele s-i permite o asemenea dezvoltare i, n al doilea rnd, este greu de meninut un nivel apropiat pentru dou sau mai multe versiuni de program. n concluzie, apare o problem cu dublu sens: nu exist multe calculatoare RISC pentru c nu exist soft pentru ele i nu exist soft pentru c nu exist calculatoare RISC! Pentru a doua problem, s-ar prea c firma Microsoft a rezolvat problema odat cu apariia sistemului de operare NT care ofer portabilitate pentru procesoarele MIPS i ALPHA de tip RISC. Inexistena unui sistem de operare Microsoft este o piedic esenial n calea ptrunderii procesoarelor RISC pe piaa calculatoarelor personale. Dac pentru primele dou probleme prezentate mai sus exist soluii de rezolvare, pentru cea de-a treia nu exist o soluie tehnic general, din moment ce aplicaiile scrise pentru un mediu hardware specific unui PC nu vor putea rula pe procesoare RISC. n acest sens, singura soluie viabil este practic rescrierea aplicaiei pentru noua platform, soluie care nu se impune
87

Microprocesorul

din aceleai considerente prezentate mai nainte: numrul de staii de lucru ce folosesc microprocesoare RISC este nc redus.

2.11.2 Tipuri de procesoare RISC

Cele mai importante arhitecturi ce conin procesoare RISC sunt: MIPS, folosite n staii de lucru Silicon Graphics; SPARC, folosite n staii de lucru Sun; PA-RISC, folosite n staii de lucru Hewlett-Packard; PowerPC, folosite n calculatoare IBM PC i Apple Macintosh; Alpha, folosite n staii de lucru DEC (Digital Equipment Corporation). Competiia pe piaa microprocesoarelor RISC este foarte mare, tot timpul aprnd noi versiuni de procesoare. Toate aceste arhitecturi evolueaz ns n aceeai direcie: implementare pe 64 de bii; uniti performante de execuie; noi instruciuni pentru aplicaii multimedia i DSP; frecvene de ceas intern foarte mari, superioare procesoarelor CISC; implementri superscalare, putnd s execute mai multe instruciuni simultan; uniti de operare n virgul mobil foarte puternice; memoria cache integrat de dimensiuni mari.

2.11.2.1 Procesoarele din seria MIPS (Silicon Graphics)

La originea acestor microprocesoare se afl nite proiecte experimentale iniiate la Universitatea din Stanford la nceputul anilor 80. Traducerea termenului "MIPS" ne ofer o imagine relevant asupra filozofiei proiectului respectiv: MIPS provine de la Microprocessor without Interlocking Pipeline Stages (Microprocesor fr stadii n conduct blocate). Obiectivul proiectanilor MIPS a fost acela de a produce un procesor RISC cu funcionare n conduct i interblocare pipeline controlate software. Dac o instruciune necesit dou cicluri de ceas pentru a fi executat, este de datoria compilatorului s programeze o instruciune de
88

Elemente de arhitectur a sistemelor de calcul i operare

tipul NOP (No OPeration) urmtoare. n acest mod singura modalitate prin care se ntrerupe funcionarea normal n timpul execuiei sunt aceste instruciuni NOP controlate software (de compilator), n timp ce partea hardware nu va bloca de fiecare dat execuia pipeline. Aceast caracteristic reduce cantitatea de componente hardware necesare pentru manufacturarea procesorului. Un produs MIPS din anul 1995 a fost MIPS T5 (redenumit apoi R1000), cu o arhitectur superscalar pe 64 de bii nou, compatibil cu cipurile mai vechi Rxxx. Arhitectura scalar dispunea de cinci canale, 64 de registre interne i o memorie cache intern de 32 KB, utilizndu-se o tehnologie de fabricaie de 0,35 de microni. Unele concepte deosebit de interesante cu privire la acest aspect au fost studiate la Universitatea Stanford cu MIPS-X, un produs derivat al arhitecturii MIPS ce avea o serie de caracteristici n plus. Multe dintre acestea au fost mai trziu introduse n procesorul comercial MIPS. Microprocesorul MIPS R2000 este un procesor pe 32 de bii cu o memorie cache de nivel 2, difereniat pentru instruciuni i date. O memorie tampon de scriere ajut la manipularea tututor datelor stocate n memorie. Produsul R2000 folosete o magistral comun pentru memoria cache extern o arhitectur non Harvard (reamintim c arhitectura Harvard presupune utilizarea de magistrale diferite pentru instruciuni i pentru date). Construcia acestui procesor nglobeaz o arhitectur radical de coprocesor. Unitatea de control a ntregilor din UCP este separat de aa numitul Coprocesor de control al sistemului (System Control Coprocessor), care este, de fapt, un controlor de memorie cache integrat direct pe cip. UCP i unitatea de calcul n virgul mobil comunic prin intermediul memoriei. Microprocesorul nglobeaz 32 de regitri generali i 16 regitri (pe 64 de bii) separai pentru calcule n virgul mobil. Coprocesorul pentru calculul n virgul mobil coine o unitate pentru adunare, una pentru mprire i una pentru nmulire. Nu exist bii de testare a condiiilor (indicatori de stare, sau flags, cum sunt denumii la Intel). Programarea regitrilor este controlat software.

2.11.2.2 Procesoarele din seria SPARC (Sun Microsystems)

Procesorul SPARC (Scalable Processor ARChitecture) se poate "luda" ca fiind descendentul unei familii ilustre de microprocesoare, aceea a procesoarelor RISC-I i RISC-II dezvoltate la Universitatea din Berkeley
89

Microprocesorul

n anii 80. Aceast arhitectur a fost definit de firma Sun Microsystems i actualizat n permanen. Firma Texas Instruments a fost unul dintre principalii furnizori de cipuri ca urmare a unui contract cu firma Sun, unul dintre produsele anului 1995 fiind UltraSPARC, cu o arhitectur pe 64 de bii i o implementare superscalar cu patru canale. O caracteristic important a arhitecturii este adugarea de noi instruciuni pentru accelerarea graficii i a prelucrrilor video; astfel pot fi prelucrai pn la opt pixeli ntr-o singur instruciune sau ciclu de ceas. Dac, n general, arhitectura acestui procesor este o arhitectur de tip RISC, exist dou curioziti ale acesteia, care l disting n familia procesoarelor RISC. n primul rnd, SPARC utilizeaz conceptul de ferestre de registre (register windows) n scopul eliminrii operaiilor de ncrcare i stocare n stiv ce apar la apelurile de proceduri. Acest lucru putea fi ns obinut i prin programarea regitrilor n momentul compilrii. Echipa de la Berkeley a utilizat ns aceste ferestre de registre deoarece nu avea la momentul respectiv expertiza (pentru creearea compilatorului) necesar pentru a implementa alocarea interprocedural a regitrilor cu ajutorul software-ului (compilatorului). n al doilea rnd, o alt curiozitate a arhitecturii SPARC o reprezint existena instruciunilor etichetate (tagged instructions). Se tie c limbaje de programare declarative de genul Lisp sau Prolog folosesc tipuri de date etichetate. Arhitectura SPARC utilizeaz instruciuni ce pot manipula cu uurin o etichet (n englez tag) pe 2 bii n fiecare cuvnt de memorie. Aceast caracteristic putea mri viteza de execuie a unui program Lisp cu cteva procente. Procesoarele UltraSPARC IV sunt procesoare ce suport dou fire de execuie (chip multithreading) pe procesor, bazate pe dou stadii pipeline UltraSPARC III. Alte caracteristici: 66 milioane de tranzistori pe cip; pipeline cu 14 stadii; frecvena de ceas ntre 1.05-1.2 GHz; L1 cache de 64KB pentru date i 32 KB pentru instruciuni, 2KB Write, 2KB Pre-fetch; L2 cache de 16 MB; scalabilitate multiprocesor cu suport arhitectural pn la 1000 de procesoare pe un singur sistem; controller-ul de memorie este capabil s adreseze pn la 16 GB de memorie principal la o vitez de 2,4 GB/s.
90

Elemente de arhitectur a sistemelor de calcul i operare

Sun Microsystems Inc. este cel mai titrat productor de procesoare ce utilizeaz mulimea de instruciuni SPARC, dar nu este singurul productor. Alt productor important este Fujitsu, ale crui noi procesoare Sparc64 VI cu nume de cod Olympus vor veni pe pia n 2005, la viteze de peste 2,4 GHz, manufacturai n tehnologie de 90 de nm (nanometri). Performana estimat a acestui procesor este de patru ori mai mare dect a generaiei actuale de la Fujitsu, SPARC64 V, ce ruleaz la 1,35 GHz.

2.11.2.3 Procesorul PA-RISC (Hewlett Packard)

Arhitectura PA-RISC (Precision Architecture) a firmei HewlettPackard este destinat staiilor de lucru performante, adoptnd o linie nou i modern. Performanele de operare n virgul mobil ale acesteia sunt excelente fa de majoritatea competitorilor. S-au inclus noi instruciuni pentru funcii de accelerare a graficii i a procesrilor video, similare celor de la SPARC. Numrul de formate de instruciuni este mai mare dect la orice alt procesor RISC: sunt prezente nu mai puin de 12 combinaii diferite de opcode (coduri de operaie) i regitri sau cmpuri pentru constante ntr-un singur cuvnt (spre comparaie, procesoarele SPARC i MIPS pot utiliza doar patru combinaii diferite). Exist n mod normal dou moduri diferite de adresare, precum i nc dou moduri adiionale ce ofer suport pentru operaiile ce au loc nainte sau dup modificarea unui registru index. Acest lucru ofer posibilitatea utilizrii n total a patru modaliti de adresare. Arhitectura PA (Precision Architecture) posed coduri de operaii (opcode) pe 6 bii. Acest lucru reduce numrul de instruciuni posibile la mai puin de 64 (26), dei anumite instruciuni au mai multe variante, folosind bii speciali n cadrul formatului instruciunii. Numrul de regitri generali este de 32, completai cu nc 32 de regitri cu caracter special, utilizai pentru administrarea ntreruperilor, a nivelurilor de protecie etc. Caracteristica atipic a acestui procesor este aceea c implementarea execuiei n pipeline se face pe doar trei nivele, iar funcionarea optim a conductei necesit programare software.
2.11.2.4 Procesoarele PowerPC (IBM i Motorola)

Susinut de firme puternice, ca IBM, Apple i Motorola, PowerPC este concurentul principal al microprocesoarelor bazate pe arhitectura x86.
91

Microprocesorul

Principalul avantaj const n posibilitatea rulrii software-ului Apple, PC i Unix. Folosind tehnicile de recompilare binar, integrnd i un emulator rapid pentru x86, procesorul PowerPC este capabil s utilizeze majoritatea sistemelor de operare i a software-ului ntr-un singur sistem.
2.11.2.5 Procesoarele Alpha DEC (Digital)

Aceste procesoare se deosebesc de celelalte procesoare RISC prin fecvenele foarte mari ale ceasului intern, arhitectura modern pe 64 de bii a acestora fiind una dintre cele mai performante de pe pia.
2.11.3 Concluzii i viitorul procesoarelor RISC

Fr ndoial, de la apariie i pn n prezent, microprocesoarele RISC au avut performane superioare celor bazate pe arhitectura CISC. n ultimii ani ns, prin apariia microprocesoarelor Intel (i a produselor clon) ce au preluat multe dintre conceptele tehnologiei clasice RISC, diferena dintre performanele celor dou tipuri arhitecturale s-a micorat vizibil, ajungndu-se ca cele mai noi procesoare Pentium III i Pentium 4 s concureze cu succes procesoarele RISC. Se presupune c nu se va renuna foarte uor n viitor la vechea arhitectur CISC (care are ns are i va prelua n continuare dintre beneficiile RISC), ajungndu-se poate la situaia n care vom putea cu greu s spunem diferenele dintre cele dou tipuri arhitecturale ce erau att de diferite n trecut. Urmtoarele microprocesoare x86, precum cele bazate pe nucleele Mustang i Sledgehammer de la AMD sau Pentium 4, Foster i Itanium (ultimul pe 64 de bii) de la Intel vor reduce din ce n ce mai mult "gaura" ce desparte cele dou variante tehnologice.

92

3
INTRODUCERE N LIMBAJUL DE ASAMBLARE INTEL
3.1 Elementele arhitecturale de baz ale microprocesorului Intel Ne vom referi n cele ce urmeaz la familia de microprocesoare intitulat Intel iAPx86 ce stau la baza calculatoarelor IBM PC, ncepnd de la procesoarele 8088 i 8086, continund cu 80286, 80386, 80486, Pentium, .a.m.d. Procesorul 8086 reprezint, de fapt, baza familiei ce este cunoscut pe scurt sub denumirea de familia microprocesoarelor x86. De aceea se vor face referiri n continuare la aceast arhitectur (8086).

3.1.1 Regitrii microprocesorului Intel Regitrii (sau registrele) microprocesorului reprezint locaii de memorie speciale aflate direct pe cip; din aceast cauz reprezint cel mai rapid tip de memorie. Alt lucru deosebit legat de regitri este faptul c fiecare dintre acetia au un scop bine precizat, oferind anumite funcionaliti speciale, unice. Exist patru mari categorii de regitri: regitrii de uz general, registrul indicatorilor de stare (flags), regitrii de segment i registrul pointer de instruciune.

93

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.1 Regitrii de uz general acumulator, index de baz, contor i de date

3.1.1.1 Regitrii de uz general Regitrii de uz general (figura 3.1 i figura 3.2) sunt implicai n operarea majoritii instruciunilor, drept operanzi surs sau destinaie pentru calcule, copieri de date, pointeri la locaii de memorie sau cu rol de contorizare. Fiecare dintre cei 8 regitrii de uz general AX, BX, CX, DX, SP, BP, DI,SI sunt regitrii pe 16 bii pentru microprocesorul 8086, iar de la procesorul 80386 ncoace au devenit regitrii pe 32 de bii, denumii, respectiv: EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI (litera E provine de la Extended extins n englez). Mai mult, cei mai puin semnificativi 8 bii ai regitrilor AX, BX, CX, DX formeaz respectiv regitrii AL, BL, CL, DL (litera L provine de la Low jos n englez), iar cei mai semnificativi 8 bii 94

Introducere n limbajul de programare Intel

ai acelorai regitrii formeaz regitrii AH, BH, CH, DH (litera H provine de la High nalt n englez) (figura 3.1).

Fig. 3.2 Regitrii de uz general index i pointer

Ne vom concentra n continuare atenia asupra regitrilor generali pe 16 bii; fiecare dintre acetia poate stoca o valoare pe 16 bii, poate fi folosit pentru stocarea unei valori din memorie sau poate fi utilizat pentru operaii aritmetice i logice. Spre exemplu, urmtoarele instruciuni: MOV BX, 2 MOV DX, 3 ADD BX, DX ncarc valoarea 2 n registrul BX, valoarea 3 n registrul DX, adun cele dou valori iar rezultatul (5) este memorat n registrul BX. n exemplul anterior putem utiliza oricare dintre regitrii de uz general n locul regitrilor BX i DX. n afara proprietii de a stoca valori i de a folosi drept operanzi surs sau destinaie pentru instruciunile de manipulare a datelor, fiecare 95

Elemente de arhitectur a sistemelor de calcul i operare

dintre cei opt regitri de uz general au propria personalitate. Vom vedea n continuare care sunt caracteristicile specifice fiecruia dintre regitrii de uz general. Registrul AX (EAX) Registrul AX (EAX) este denumit i registrul acumulator, fiind principalul registru de uz general utilizat pentru operaii aritmetice, logice i de deplasare de date. Totdeauna operaiile de nmulire i mprire presupun implicarea registrului AX. Unele dintre instruciuni sunt optimizate pentru a se executa mai rapid atunci cnd este folosit AX. n plus, registrul AX este folosit i pentru toate transferurile de date de la/ctre porturile de Intrare/Ieire. Poate fi accesat pe poriuni de 8, 16 sau 32 de bii, fiind referit drept AL (cei mai puin semnificativi 8 bii din AX), AH (cei mai semnificativi 8 bii din AX), AX (16 bii) sau EAX (32 de bii). Prezentm n continuare alte cteva exemple de instruciuni ce utilizeaz registrul AX. De remarcat este faptul c transferurile de date se fac pentru instruciunile (denumite i mnemonice) Intel de la dreapta spre stnga, exact invers dect la Motorola (vom vedea i alt exemplu asemntor la scrierea datelor n memorie sub format diferit la Motorola fa de Intel), unde transferul se face de la stnga la dreapta. Instruciunea: MOV AX, 1234H ncarc valoarea 1234H (4660 n zecimal) n registrul acumulator AX. Dup cum spuneam, cei mai puini semnificativi 8 bii ai registrului AX sunt identificai de AL (A-Low) iar cei mai semnificativi 8 bii ai aceluiai registru sunt identificai ca fiind AH (A-High). Acest lucru este utilizat pentru a lucra cu date pe un octet, permind ca registrul AX s fie folosit pe postul a doi regitri separai (AH i AL). Aceeai regul este valabil i pentru regitrii de uz general BX, CX, DX. Urmtoarele trei instruciuni seteaz registrul AH cu valoarea 1, incrementeaz cu 1 aceast valoare i apoi o copiaz n registrul AL: MOV AH, 1 INC AH MOV AL, AH Valoarea final a registrului AX va fi 22 (AH = AL = 2). 96

Introducere n limbajul de programare Intel

Registrul BX (EBX) Registrul BX (Base), sau registrul de baz poate stoca adrese pentru a face referire la diverse structuri de date, cum ar fi vectorii stocai n memorie. O valoare reprezentat pe 16 bii stocat n registrul BX poate fi utilizat ca fiind o poriune din adresa unei locaii de memorie ce va fi accesat. Spre exemplu, urmtoarele instruciuni ncarc registrul AH cu valoarea din memorie de la adresa 21. MOV AX, 0 MOV DS, AX MOV BX, 21 MOV AH, [ BX ] Se observ c am ncrcat valoarea 0 n registrul DS nainte de a accesa locaia de memorie referit de registrul BX. Acest lucru este datorat segmentrii memoriei (segmentare discutat mai n detaliu n seciunea consacrat regitrilor de segment); implicit, atunci cnd este folosit ca pointer de memorie, BX face referire relativ la registrul de segment DS (adresa la care face referire este o adres relativ la adresa de segment coninut n registrul DS). Registrul CX (ECX) Specializarea registrului CX (Counter) este numrarea; de aceea, el se numete i registrul contor. De asemenea, registrul CX joac un rol special atunci cnd se folosete instruciunea LOOP. Rolul de contor al registrului CX se observ imediat din exemplul urmtor: MOV CX, 5 start: <instruciuni ce se vor executa de 5 ori> SUB CX, 1 97

Elemente de arhitectur a sistemelor de calcul i operare

JNZ start Deoarece valoarea iniial a lui CX este 5, instruciunile cuprinse ntre eticheta start i instruciunea JNZ se vor executa de 5 ori (pn cnd registrul CX devine 0). Instruciunea SUB CX, 1 decrementeaz registrul CX cu valoarea 1 iar instruciunea JNZ start determin saltul napoi la eticheta start dac CX nu are valoarea 0. n limbajul microprocesorului exist i o instruciune special legat de ciclare. Aceasta este instruciunea LOOP, care este folosit n combinaie cu registrul CX. Liniile de cod urmtoare sunt echivalente cu cele anterioare, dar aici se utilizeaz instruciunea LOOP: MOV CX, 5 start: <instruciuni ce se vor executa de 5 ori> LOOP start Se observ c instruciunea LOOP este folosit n locul celor dou instruciuni SUB i JNZ anterioare; LOOP decrementeaz automat registrul CX cu 1 i execut saltul la eticheta specificat (start) dac CX este diferit de zero, totul ntr-o singur instruciune. Registrul DX (EDX) Registrul de uz general DX (Data register), denumit i registrul de date, poate fi folosit n cazul transferurilor de date Intrare/Ieire sau atunci cnd are loc o operaie de nmulire sau de mprire. Instruciunea IN AL, DX copiaz o valoare de tip Byte dintr-un port de intrare, a crui adres se afl n registrul DX. Urmtoarele instruciuni determin scrierea valorii 101 n portul I/O 1002: ... MOV AL, 101 98

Introducere n limbajul de programare Intel

MOV DX, 1002 OUT DX, AL Referitor la operaiile de nmulire i mprire, atunci cnd mprim un numr pe 32 de bii la un numr pe 16 bii, cei mai semnificativi 16 bii ai dempritului trebuie s fie n DX. Dup mprire, restul mpririi se va afla n DX. Cei mai puin semnificativi 16 bii ai dempritului trebuie s fie n AX iar ctul mpririi va fi n AX. La nmulire, atunci cnd se nmulesc dou numere pe 16 bii, cei mai semnificativi 16 bii ai produsului vor fi stocai n DX iar cei mai puin semnificativi 16 bii n registrul AX. Registrul SI Registrul SI (Source Index) poate fi folosit, ca i BX, pentru a referi adrese de memorie. De exemplu, secvena de instruciuni urmtoare: MOV AX, 0 MOV DS, AX MOV SI, 33 MOV AL, [ SI ] ncarc valoarea (pe 8 bii) din memorie de la adresa 33 n registrul AL. Registrul SI este, de asemenea, foarte folositor atunci cnd este utilizat n legtur cu instruciunile dedicate tipului STRING (ir de caractere). Secvena urmtoare : ... CLD MOV AX, 0 MOV DS, AX MOV SI, 33 LODSB ... 99

Elemente de arhitectur a sistemelor de calcul i operare

nu numai c ncarc registrul AX cu valoarea de la adresa de memorie referit de registrul SI, dar adun, de asemenea, valoarea 1 la SI. Acest lucru este deosebit de eficient atunci cnd se acceseaz secvenial o serie de locaii de memorie, cum ar fi irurile de caractere. Instruciunile de tip STRING se pot repeta de mai multe ori, astfel nct o singur instruciune poate avea ca efect sute sau mii de operaii. Registrul DI Registrul DI (Destination Index) este utilizat n mod asemntor registrului SI. n secvena de instruciuni urmtoare: ... MOV AX, 0 MOV DS, AX MOV DI, 1000 ADD BL, [ DI ] se adun la registrul BL valoarea pe 8 bii stocat la adresa 1000. Registrul DI este puin diferit fa de registrul SI n cazul instruciunilor de tip string; dac SI este ntotdeauna pe post de pointer surs de memorie, registrul DI servete drept pointer destinaie de memorie. Mai mult, n cazul instruciunilor de tip string, registrul SI adreseaz memoria relativ la registrul de segment DS, n timp ce DI conine referiri la memorie relativ la registrul de segment ES. n cazul n care SI i DI sunt utilizai cu alte instruciuni, ei fac referire la registrul de segment DS. Registrul BP Pentru a nelege mai bine rolul regitrilor BP i SP, a sosit momentul s spunem cteva lucruri despre poriunea de memorie denumit stiv (n englez stack). Stiva (figura 3.3) reprezint o poriune special de locaii adiacente din memorie. Aceasta este coninut n cadrul unui segment de memorie i identificat de un selector de segment memorat n registrul SS (cu excepia cazului n care se folosete modelul nesegmentat de memorie n care stiva poate fi localizat oriunde n spaiul de adrese liniare al programului). Stiva este o poriune a memoriei unde valorile pot fi stocate 100

Introducere n limbajul de programare Intel

i accesate pe principul LIFO (Last In First Out), drept urmare ultima valoare stocat n stiv este prima ce va fi citit din stiv. De regul, stiva este utilizat la apelul unei proceduri sau la ntoarcerea dintr-un apel de procedur (principalele instruciuni folosite sunt CALL i RET).

Fig. 3.3 Structura stivei

Registrul pointer de baz, BP (Base Pointer) poate fi utilizat ca pointer de memorie precum regitrii BX, SI i DI. Diferena este aceea c, dac BX, SI i DI sunt utilizai n mod normal ca pointeri de memorie relativ la segmentul DS, registrul BP face referire relativ la segmentul de stiv SS. Principiul este urmtorul: o modalitate de a trece parametrii unei subrutine este aceea de a utiliza stiva (acest lucru se ntmpl n mod obinuit n limbajele de nivel nalt, C sau Pascal, spre exemplu). Dac stiva se afl n poriunea de memorie referit de registrul de segment SS (Stack Segment), datele se afl n mod normal n segmentul de memorie referit de ctre DS, registrul segment de date. Deoarece BX, SI i DI se refer la segmentul de date, nu exist o modalitate eficient de a folosi regitrii BX, SI, DI pentru a face referire la parametrii salvai n stiv din cauz c stiva este localizat ntr-un alt segment de memorie. Registrul BP ofer 101

Elemente de arhitectur a sistemelor de calcul i operare

rezolvarea acestei probleme asigurnd adresarea n segmentul de stiv. Spre exemplu, instruciunile: ... PUSH BP MOV BP, SP MOV AX, [ BP+4 ] fac s se acceseze segmentul de stiv pentru a ncrca registrul AX cu primul parametru trimis de un apel C unei rutine scrise n limbaj de asamblare. n concluzie, registrul BP este conceput astfel nct s ofere suport pentru accesul la parametri, variabile locale i alte necesiti legate de accesul la poriunea de stiv din memorie. Registrul SP Registrul SP (Stack Pointer), sau pointerul de stiv, reine de regul adresa de deplasament a urmtorului element disponibil n cadrul segmentului de stiv. Acest registru este, probabil, cel mai puin general dintre regitrii de uz general, deoarece este dedicat mai tot timpul administrrii stivei. Registrul BP face n fiecare clip referire la vrful stivei acest vrf al stivei reprezint adresa locaiei de memorie n care va fi introdus urmtorul element n stiv. Aciunea de a introduce un nou element n stiv se numete mpingere (n englez push); de aceea, instruciunea respectiv poart numele de PUSH. n mod asemntor, operaia de scoatere a unui element din vrful stivei poart, n englez, numele de pop, iar instruciunea echivalent operaiei se numete POP. n figurile 3.4 i 3.5 sunt ilustrate modificrile survenite n coninutul stivei i al regitrilor SP, BX i CX ca urmare a execuiei instruciunilor urmtoare (se presupune c registrul SP are iniial valoarea 1000): ... MOV BX, 9 PUSH BX MOV CX, 10 PUSH CX 102

Introducere n limbajul de programare Intel

POP BX POP CX ... Este permis stocarea valorilor n registrul SP precum i modificarea valorii sale prin adunare sau scdere la fel ca i n cazul celorlali regitri de uz general; totui, acest lucru nu este recomandat dac nu suntem foarte siguri de ceea ce facem. Prin modificarea registrului SP, vom modifica adresa de memorie a vrfului stivei, ceea ce poate avea efecte neprevzute, aceasta pentru c instruciunile PUSH i POP nu reprezint unicele modaliti de utilizare a stivei. Indiferent dac apelm o subrutin sau ne ntoarcem dintr-un astfel de apel de subrutin, fie procedur sau funcie, n acest caz este folosit stiva. Unele resurse de sistem, precum tastatura sau ceasul de sistem, pot folosi stiva n momentul trimiterii unei ntreruperi la microprocesor. Acest lucru presupune c stiva este folosit continuu, deci dac se modific registrul SP (adic adresa stivei), datele din noile locaii de memorie nu vor mai fi cele corecte. n concluzie, registrul SP nu trebuie modificat n mod direct; el este modificat automat n urma instruciunilor POP, PUSH, CALL, RET. Oricare dintre ceilali regitri de uz general pot fi modificai n mod direct n orice moment.

103

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.4 Modalitatea de funcionare a stivei dup execuia primelor patru instruciuni

104

Introducere n limbajul de programare Intel

Fig. 3.5 Funcionarea stivei dup ultimile dou instruciuni POP

3.1.1.2 Registrul pointer de instruciuni (IP) Registrul pointer de instruciuni (IP Instruction Pointer, vezi figura 3.6) este folosit, ntotdeauna, pentru a stoca adresa urmtoarei instruciuni ce va fi executat de ctre microprocesor. Pe msur ce o instruciune este executat, pointerul de instruciune este incrementat i se va referi la urmtoarea adres de memorie (unde este stocat urmtoarea instruciune ce va fi executat). De regul, instruciunea ce urmeaz a fi executat se afl la adresa imediat urmtoare instruciunii ce a fost executat, dar exist i cazuri speciale (rezultate fie din apelul unei subrutine prin instruciunea CALL, fie prin ntoarcerea dintr-o subrutin, prin instruciunea RET). Pointerul de instruciuni nu poate fi modificat sau citit n mod direct; doar instruciuni speciale pot ncrca acest registru cu o nou valoare. Registrul pointer de instruciune nu specific pe de-a ntregul adresa din memorie a urmtoarei instruciuni ce va fi executat, din aceeai cauz a segmentrii memoriei. Pentru a aduce o instruciune din memorie, registrul CS ofer o adres de baz iar registrul pointer de instruciune indic adresa de deplasament plecnd de la aceast adres de baz. 105

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.6. Regitrii de segment, pointerul de instruciuni i registrul indicatorilor de stare

106

Introducere n limbajul de programare Intel

3.1.1.3 Registrul indicatorilor de stare (FLAGS)

Fig. 3.7 Registrul indicatorilor de stare - detaliu

Registrul indicatorilor de stare (FLAGS) pe 16 bii conine informaii legate de starea microprocesorului precum i de rezultatele ultimilor instruciuni executate. Un indicator de stare (flag) este n sine o locaie de memorie de 1 bit ce indic starea curent a microprocesorului i modalitatea sa de operare. Un indicator se spune c este setat dac are valoarea 1 i nu este setat n caz contrar. Indicatorii de stare se modific dup execuia unor instruciuni aritmetice sau logice. Exemple de indicatori de stare (vezi figura 3.7): - C (Carry) indic apariia unei cifre binare de transport n cazul unei adunri sau mprumut n cazul unei scderi; - O (Overflow) apare n urma unei operaii aritmetice. Dac este setat, nseamn c rezultatul nu ncape n operandul destinaie; - Z (Zero) indic faptul c rezultatul unei operaii aritmetice sau logice este zero; - S (Sign) indic semnul rezultatului unei operaii aritmetice; 107

Elemente de arhitectur a sistemelor de calcul i operare

- D (Direction) cnd este zero, procesarea elementelor irului se face de la adresa mai mic la cea mai mare, n caz contrar este invers; - I (Interrupt) controleaz posibilitatea microprocesorului de a rspunde la evenimente externe (apeluri de ntrerupere); - T (Trap) este folosit de programele de depanare (de tip debugger), activnd sau nu posibilitatea execuiei programului pas cu pas. Dac este setat, UCP ntrerupe fiecare instruciune, lsnd programul depanator s execute programul respectiv pas cu pas; - A (Auxiliary carry) suport operaii n codul BCD. Majoritatea programelor nu ofer suport pentru reprezentarea numerelor n acest format, de aceea se utilizeaz foarte rar; - P (Parity) este setat n conformitate cu paritatea biilor cei mai puin semnificativi ai unei operaii cu date. Astfel, dac rezultatul unei operaii conine un numr par de bii 1, acest indicator este setat. Dac numrul de bii 1 din rezultat este impar, atunci indicatorul PF este zero. Este folosit de regul de programe de comunicaii, dar Intel a introdus acest indicator nu pentru a ndeplini o anumit funcionalitate, ci pentru a asigura compatibilitatea cu vechile microprocesoare ale familiei x86. 3.1.1.4 Regitrii de segment Proprietile regitrilor de segment (figura 3.6) sunt n strns legtur cu noiunea de segmentare a memoriei. Premisa de la care se pleac este urmtoarea: 8086 este capabil s adreseze 1MB de memorie, astfel c sunt necesare adrese pe 20 de bii pentru a cuprinde toate locaiile din spaiul de 1 MB de memorie. Totui, registrele utilizate sunt registre pe 16 bii, deci a trebuit s se gseasc o soluie pentru aceast problem. Soluia gsit se numete segmentarea memoriei; n acest caz memoria de 1MB este mprit n 16 segmente de cte 64 KB (16*64 KB = 1024 KB = 1 MB). Noiunea de segmentare a memoriei presupune utilizarea unor adrese de memorie formate din dou pri. Prima parte reprezint adresa segmentului iar cea de-a doua poriune reprezint adresa de deplasament, sau offset-ul (figura 3.8). 108

Introducere n limbajul de programare Intel

Fig. 3.8 Cele dou poriuni ale unei adrese segmentate

Fiecare pointer de memorie pe 16 bii este combinat cu coninutul unui registru de segment pe 16 bii pentru a forma o adres complet pe 20 de bii. Adresa de segment mpreun cu adresa de deplasament sunt combinate n felul urmtor: valoarea de segment este deplasat la stnga cu 4 bii (nmulit cu 16 = 24) i apoi adunat cu valoarea adresei de deplasament. Adresa astfel construit se numete adres efectiv; fiind o adres pe 20 de bii poate accesa 220 octei de memorie, adic 1 MB de memorie. Construirea adresei efective este prezentat n figura 3.9.

109

Elemente de arhitectur a sistemelor de calcul i operare

- adresa de segment se deplaseaz la stnga cu 4 bii o cifr hexa - se adun adresa de deplasament - se obine adresa efectiv pe 20 de bii (5 cifre hexa)
Fig. 3.9 Exemplu de calcul al adresei efective

Registrul CS acest registru face referire la nceputul blocului de 64 KB de memorie n care se afl codul programului (segmentul de cod). Microprocesorul 8086 nu poate aduce alt instruciune pentru execuie dect cea definit de CS. Registrul CS poate fi modificat de un numr de instruciuni, precum instruciuni de salt, apel sau de ntoarcere. El nu poate fi ncrcat n mod direct cu o valoare, ci doar prin intermediul unui alt registru general. Registrul DS face referire ctre nceputul segmentului de date, unde se afl mulimea de date cu care lucreaz programul aflat n execuie. Registrul ES face referire la nceputul blocului de 64 KB cunoscut sun denumirea de extrasegment. Acesta nu este dedicat nici unui scop anume, fiind disponibil pentru diverse aciuni. Uneori acesta poate fi folosit pentru creearea unui bloc de memorie de 64 KB adiional pentru date. Acest extrasegment lucreaz foarte bine n cazul instruciunilor de tip STRING. Toate instruciunile de tip STRING ce scriu n memorie folosesc adresarea ES : DI ca adres de memorie. Registrul SS face referire la nceputul segmentului de stiv, care este blocul de 64 KB unde se afl stiva. Toate instruciunile ce folosesc implicit registrul SP (instruciunile POP, PUSH, CALL, RET) lucreaz n segmentul de stiv deoarece registrul SP este capabil s adreseze memoria doar n segmentul de stiv.

110

Introducere n limbajul de programare Intel

3.2 Elemente ale limbajului de asamblare 3.2.1 Formatul general al unei instruciuni n limbaj de asamblare O linie de cod scris n limbaj de asamblare are urmtorul format general: <nume> <instruciune/directiv> <operanzi> <;comentariu> unde: <nume> - reprezint un nume simbolic opional; <instruciune/directiv> - reprezint mnemonica (numele) unei instruciuni sau a unei directive; <operanzi> - reprezint o combinaie de unul, doi sau mai muli operanzi (sau chiar nici unul), care pot fi constante, referine de memorie, referine de regitri, iruri de caractere, n funcie de structura particular a instruciunii; <;comentariu> - reprezint un comentariu opional ce poate fi plasat dup caracterul ; pn la sfritul liniei respective de cod. 3.2.2 Nume de variabile i etichete Numele folosite ntr-un program scris n limbaj de asamblare pot identifica variabile numerice, variabile ir de caractere, locaii de memorie sau etichete. Spre exemplu, urmtoarea secven de cod, care calculeaz valoarea lui trei factorial (3! = 1 x 2 x 3 = 6) cuprinde cteva nume de variabile i etichete: .MODEL small .STACK 200h .DATA Valoare_Factorial DW ? Factorial DW ? 111

Elemente de arhitectur a sistemelor de calcul i operare

.CODE Trei_Factorial PROC MOV ax, @data MOV ds, ax MOV [Valoare_Factorial], 1 MOV [Factorial], 2 MOV cx, 2 Ciclare: MOV ax, [Valoare_Factorial] MUL [Factorial] MOV [Valoare_Factorial], ax INC [Factorial] LOOP Ciclare RET Trei_Factorial ENDP END Numele Valoare_Factorial i Factorial sunt utilizate pentru definirea a dou variabile de tip word (pe 16 bii), Trei_Factorial identific numele procedurii (subrutinei) ce conine codul pentru calculul factorialului, permind apelul su din alt parte a programului. Ciclare reprezint un nume de etichet, identificnd adresa instruciunii MOV ax, [Valoare_Factorial], astfel nct instruciunea LOOP folosit mai jos s poat face un salt napoi la aceast instruciune. Numele de variabile pot conine urmtoarele caractere: literele a-z i A-Z, cifrele de la 0-9 precum i caracterele speciale _ (underscore liniu de subliniere), @ (at n englez citit i a rond sau coad de maimu), $ i ?. Se poate folosi si caracterul punct (.) drept prim caracter al numelui unei etichete. Cifrele 0-9 nu pot fi utilizate pe prima poziie a numelui; de asemenea, nu pot fi folosite nume care s conin un singur caracter $ sau ?. Fiecare nume poate fi definit o singur dat (numele sunt unice) i pot fi utilizate ca operanzi de oricte ori se dorete ntr-un program. Un nume poate s apar ntr-un 112

Introducere n limbajul de programare Intel

program singur pe o linie (linia respectiv nu mai conine alt instruciune sau directiv). n acest caz, valoarea numelui este dat de adresa instruciunii sau directivei de pe linia urmtoare din program. De exemplu, n secvena urmtoare: ... JMP scdere ... scdere: SUB AX, CX ... urmtoarea instruciune care va fi executat dup instruciunea JMP scadere va fi instruciunea SUB AX, CX. Exemplul anterior este echivalent cu secvena: ... JMP scdere ... scdere: SUB AX, CX ... Exist unele avantaje atunci cnd scriem instruciunile pe linii separate. n primul rnd, atunci cnd scriem un nume de etichet pe o singur linie, este mai uor s folosim nume lungi de etichete fr a strica forma programului scris n limbaj de asamblare. n al doilea rnd, este mai uor s adugm ulterior o nou instruciune n dreptul etichetei dac aceasta nu este scris pe aceeai linie cu instruciunea. Numele variabilelor sau etichetelor folosite ntr-un program nu trebuie s se confunde cu numele rezervate de asamblor, cum ar fi numele de directive i instruciuni, numele regitrilor, etc. De exemplu, o declaraie de genul: ... ax DW 0 BYTE: ... 113

Elemente de arhitectur a sistemelor de calcul i operare

nu poate fi acceptat, deoarece AX este numele registrului acumulator, AX, iar BYTE reprezint un cuvnt cheie rezervat. Orice nume de etichet ce apare pe o linie fr instruciuni sau apare pe o linie cu instruciuni trebuie s aib semnul : dup numele ei. Tototdat, se ncearc s se dea un nume sugestiv etichetelor din program. Fie urmtorul exemplu: ... CMP AL, a JB Nu_este_liter_mic CMP AL, z JA Nu_este_liter_mic SUB AL, 20H Nu_este_liter_mic: comparativ cu: ... CMP AL, a JB x5 CMP AL, z JA x5 SUB AL, 20H x5: Dac n primul caz am folosit un nume sugestiv de etichet (Nu_este_liter_mic), n cazul al doilea, identic din punct de vedere al funcionalitii cu primul, eticheta a fost denumit x5, absolut nesugestiv! Observaie: Limbajul de asamblare nu este case sensitive. Aceasta semnific faptul c, ntr-un program scris n limbaj de asamblare, numele de variabile, etichete, instruciuni, directive, mnemonice etc., pot fi scrise att cu litere mari ct i cu litere mici, nefcndu-se diferena ntre ele (Nu _ este _ liter _ mic este acelai lucru cu nu_este_liter_mic sau Nu_Este_Liter_Mic etc.). 114 ; se transform n liter mare ; se transforma in litera mare

Introducere n limbajul de programare Intel

3.2.3 Directive de segment simplificate Datorit faptului c regitrii microprocesorului 8086 sunt regitrii pe 16 bii, s-a impus folosirea unor segmente de memorie de cte 64 Ko (maxim ct se poate adresa avnd la dispoziie 16 bii 64 Ko = 2 ^ 16 = 65536). ntr-un program scris n limbaj de asamblare (vom folosi n continuare prescurtarea ASM) exist trei segmente: segmentul de cod, segmentul de date i segmentul de stiv. Directivele de segment (fie sub form standard, fie sub form simplificat) sunt necesare n orice program scris n limbaj de asamblare pentru a defini i controla utilizarea segmentelor iar directiva END este folosit ntotdeauna pentru a ncheia codul programului. Exemple de directive de segment simplificate sunt: .STACK .CODE .DATA .MODEL DOSSEG END .STACK,.CODE,.DATA definesc, respectiv, segmentele de stiv, de cod i de date. De exemplu, .STACK 200H definete o stiv de 512 octei (n ASM valorile ce sunt ncheiate cu litera H semnific faptul c este vorba despre hexazecimal). O astfel de valoare pentru stiv este suficient n mod normal; unele programe, ns (ndeosebi cele recursive) pot necesita dimensiuni mai mari ale stivei. Directiva .CODE marcheaz nceputul segmentului de cod. Directiva .DATA marcheaz nceputul segmentului de date, adic locul n care vom plasa variabilele de memorie. Reprezentativ aici este faptul c trebuie ncrcat n mod explicit registrul de segment DS cu valoarea "@data" naintea accesrii locaiilor de memorie n segmentul definit de .DATA. Avnd n vedere c un registru de segment poate fi ncrcat fie dintr-un registru general fie dintr-o locaie de memorie dar nu 115

Elemente de arhitectur a sistemelor de calcul i operare

poate fi ncrcat direct cu o constant, registrul de segment DS este ncrcat n general printr-o secven de dou instruciuni: ... mov ax, @data mov ds, ax ... (se poate folosi i alt registru general n locul lui AX). Secvena anterioar semnific faptul c DS se va referi ctre segmentul de date ce ncepe cu directiva .DATA. Considerm n continuare un exemplu de program ce afieaz textul memorat n DataString pe ecran: ;Program p01.asm .MODEL small .STACK 200H .DATA DataString DB 'Hello!$' ;se specific modelul de memorie ;SMALL ;se definete o stiv de 512 octei ;se specific nceputul segmentului de ;date ;se definete variabila ;DataString, iniializat cu valoarea ;"Hello!" .CODE ProgramStart: mov bx,@data ;nceputul segmentului de cod al ;programului ;orice program are o etichet de ;nceput ;secvena ce seteaz registrul DS s ;fac referire la segmentul de date ce ;ncepe cu .DATA

mov ds,bx mov dx, OFFSET DataString ;se ncarc n DX adresa ;variabilei DataString mov ah,09 ;codul funciei DOS de afiare a unui ;string 116

Introducere n limbajul de programare Intel

int 21H mov ah, 4cH

;apelul DOS de afiare a string-ului ;codul funciei DOS de terminare a ;programului ;apelul DOS de terminare ;a programului

int 21H

END ProgramStart

;directiva de terminare a codului ;programului

Explicaii: 1. Se pot introduce comentarii ntr-un program ASM prin folosirea ";". Tot ce urmeaz dup ";" i pn la sfritul liniei este considerat comentariu. 2. Nu are importan dac programul este scris folosind litere mari sau mici (nu este "case sensitive"). 3. Fr cele dou instruciuni care seteaz registrul DS ctre segmentul definit de .DATA, funcia de afiare a string-ului nu ar fi funcionat cum trebuie. Variabila DataString se afl n segmentul .DATA i nu poate fi accesat dac DS nu este poziionat ctre acest segment. Acest lucru se explic n modul urmtor: atunci cnd facem apelul DOS de afiare a unui string, trebuie s parcurgem ntreaga adres de tipul segment:offset a string-ului n DS:DX. De aceea, de abia dup ce am ncrcat DS cu segmentul .DATA i DX cu adresa (offset-ul) lui DataString avem o referin complet segment:offset ctre DataString.

Observaii: Nu trebuie s ncrcm n mod explicit registrul de segment CS deoarece DOS face acest lucru automat n momentul cnd rulm un program. Astfel, dac CS nu ar fi deja setat la momentul execuiei primei instruciuni din program, procesorul nu ar ti unde s gseasc instruciunea i programul nu ar rula niciodat. n mod asemntor, registrul de segment SS este setat de DOS nainte de execuia programului i de regul rmne nemodificat pe perioada execuiei programului. 117

Elemente de arhitectur a sistemelor de calcul i operare

Cu registrul de segment DS lucrurile stau altfel. n timp ce registrul CS se refer la intruciuni (cod), SS se refer ("pointeaz") la stiv, DS "pointeaz" la date. Programele nu manipuleaz direct instruciuni sau stive dar au de-a face n mod direct cu date. De asemenea, programele vor acces la date situate n segmente diferite n orice moment. Se poate dori ncrcarea n DS a unui segment, accesarea datelor din acel segment i apoi ncrcarea lui DS cu un alt segment pentru a accesa un bloc diferit de date. n programe mici sau medii nu vom avea nevoie de mai mult de un segment de date dar programe mai complexe folosesc deseori segmente de date multiple. Urmtorul program va afia un caracter pe ecran, folosind ncrcarea registrului ES n locul lui DS. ;Program p02.asm .MODEL small .STACK 200H .DATA OutputChar DB 'B' .CODE ProgramStart: mov dx, @data mov es, dx ;spre deosebire de programul anterior, ;se folosete ES pentru specificarea ;segmentului de date ;se ncarc BX cu adresa ;variabilei OutputChar mov dl, es:[bx] ;se ncarc AL cu valoarea de la ;adresa explicit es:[bx] ;(adresare indexat) mov ah,02 int 21H ;codul funciei DOS de afiare a unui caracter ;apelul DOS de execuie a afirii 118 ;definirea variabilei OutputChar ;iniializat cu valoarea "B"

mov bx, offset OutputChar

Introducere n limbajul de programare Intel

mov ah, 4cH int 21H END ProgramStart

;codul funciei DOS de terminare a ;programului ;apelul DOS de terminare ;a programului ;directiva de terminare a codului ;programului

DOSSEG este directiva ce face ca segmentele dintr-un program s fie grupate conform conveniilor Microsoft de adresare a segmentelor. Directiva .MODEL Este directiva ce specific modelul de memorie pentru un program ASM ce folosete directive de segment simplificate. Definiii: "near" nseamn adresa (offset-ul) pe 16 bii din cadrul aceluiai segment, n timp ce "far" nseamn o adres complet de tip segment:offset, din cadrul altui segment dect cel curent. Modelele de memorie ce se pot specifica prin intermediul directivei .MODEL sunt: - tiny - att codul ct i datele programului ncap n acelai segment de 64 Ko. Att codul ct i datele sunt de tip near. - small - codul programului trebuie s fie ntr-un singur segment de 64 Ko i datele ntr-un bloc separat de 64Ko; codul i datele sunt near - medium - codul programului poate fi mai mare dect 64 Ko dar datele trebuie s fie ntr-un singur segment de 64 Ko. Codul este far, datele sunt near. - compact - codul programului poate fi ntr-un singur segment, datele pot fi mai mari de 64 Ko. Codul este near, datele sunt far. - large - att codul ct i datele pot depi 64Ko, dar nici un masiv de date nu poate depi 64 Ko. Att codul ct i datele sunt far. - huge - att codul ct i datele pot depi 64 Ko i masivele de date pot depi 64 Ko. Att codul ct i datele sunt far. Pointerii la elementele dintr-un masiv sunt far.

119

Elemente de arhitectur a sistemelor de calcul i operare

n continuare sunt prezentate cteva exemple legate de modalitile de declarare a variabilelor i de adresare a memoriei: var1 DW 01234h var2 DW 01234 var3 RESW 1 var4 DW ABCDh ;se definete o variabil word cu ;valoarea 1234h ;se definete o variabil word cu ;valoarea zecimal 1234 (4D2 in hexa) ;se rezerv spaiu pentru o variabil ;word (de valoare 0) ;atribuire ilegal!

mesajsco2 DB 'SCO 2 este cursul preferat!' ...start: mov ax,cs mov ds,ax ; setarea segmentului de date ; DS=CS

; orice referin de memorie se presupune c este relativ la segmentul DS mov ax,[var2] ; AX <- var2 ; == mov ax,[2] mov si,var2 ;se folosete SI ca pointer ctre var2 ;(cod C echivalent SI=&var2) ;se citete din memorie valoarea lui ;var2 (*(&myvar2)) ;(referin indirect) mov bx,mesajsco2 ; BX este pointer la un string ; (cod C echivalent: BX=&mesajsco2) 120

mov ax,[si]

Introducere n limbajul de programare Intel

dec BYTE [bx+1] mov si, 1 inc byte [mesajsco2+SI]

; transform 'C' in 'B' ! ; Folosete SI cu rol de index ; == inc byte [SI + 8] ; == inc byte [9]

; Memoria poate fi adresata folosindu-se patru regitri: ; SI -> Implic DS ; DI -> Implic DS ; BX -> Implic DS ; BP -> Implic SS ! (nu este foarte des utilizat) ; Exemple: mov ax,[bx] mov al,[bx] mov ax,[si] mov ah,[si] mov cx,[di] mov ax,[bp] ; ax <- word n memorie referit de BX ; al <- byte n memorie referit de BX ; ax <- word referit de SI ; ah <- byte referit de SI ; di <- word referit de DI ; AX <- [SS:BP] Operaie cu stiva!

; n plus, sunt permise BX+SI i BX+DI: mov ax,[bx+si] mov ch,[bx+di]

121

Elemente de arhitectur a sistemelor de calcul i operare

; Deplasamente pe 8 sau 16 biti: mov ax,[23h] mov ah,[bx+5] mov ax,[bx+di+47] ; ax <- word n memorie DS:0023 ; ah <- byte n memorie [DS:BX+5] ; ax <- word la adresa [DS:BX+DI+47]

mov ax,[bx+si+107] ; ax <- word la adresa [DS:BX+SI+107]

; ATENIE: copierea din memorie n memorie este ilegal! ;Totdeauna trebuie s se treac valoarea copiat printr-un registru mov [bx],[si] ;Ilegal mov [di],[si] ;Ilegal ; Caz special: operaiile cu stiva! pop word [var] ; var <- [SS:SP]

3.2.4 Adrese de memorie i valori Un program scris n limbaj de asamblare se poate referi fie la o adres de memorie (OFFSET = DEPLASAMENT), fie la o valoare stocat de variabil n memorie. Din pcate, limbajul de asamblare nu este nici strict, nici intuitiv cu privire la modurile n care aceste dou tipuri de referire sunt fcute i, drept urmare, referirile la OFFSET sau la valoare sunt deseori confundate. n figura 3.10 sunt ilustrate conceptele de adres de deplasament (offset) i valoare stocat n memorie.

122

Introducere n limbajul de programare Intel

Fig. 3.10 Ilustrarea noiunilor de adres de deplasament i valoare stocat n memorie

Deplasamentul unei variabile de memorie var de dimensiune word este valoarea constant 5004H, obinut cu operatorul OFFSET. Spre exemplu, instruciunea: MOV BX, OFFSET var ncarc valoarea 5004H n registrul BX. Valoarea 5004H nu se modific; ea este construit n cadrul instruciunii. Valoarea lui var este 1234H, citit din memorie la adresa dat de offset-ul 5004H din segmentul de date. O modalitatea de citire a acestei valori este de a ncrca registrele BX, SI, DI sau BP cu offset-ul lui var i apoi folosirea registrului respectiv pentru adresarea memoriei. Instruciunile: MOV BX, OFFSET var MOV AX, [ BX ] au ca efect ncrcarea valorii lui var (1234H) n registrul AX.

123

Elemente de arhitectur a sistemelor de calcul i operare

De asemenea, se poate ncrca valoarea lui var direct n AX folosind: MOV AX, var Sau MOV AX, [ var ] n timp ce valoarea deplasamentului rmne constant, valoarea 1234H nu este permanent asociat cu var. De exemplu, instruciunile: MOV [ var ], 5555H MOV AX, [ var ] au ca efect ncrcarea valorii 5555H n registrul AX. Cu alte cuvinte, n timp ce deplasamentul lui var este o valoare constant ce descrie o adres fix dintr-un segment de date, valoarea variabilei var este un numr ce poate fi modificat i care se afl memorat la adresa (de memorie) respectiv. Instruciunile: MOV [ var ], 1 ADD [ var ], 2 modific valoarea lui var la 3, dar instruciunea: ADD OFFSET var, 2 este echivalent cu ADD 5002H, 2, ceea ce este un lucru fr sens, deoarece este imposibil s se nsumeze o constant cu alta. O problem ce poate aprea adesea n timpul programrii este aceea a omiterii lui OFFSET; de exemplu, dac scriem MOV SI, var atunci cnd, de fapt, dorim ncrcarea n SI a deplasamentului lui var. Nu va fi semnalat nici o eroare n acest caz, avnd n vedere c var este o variabil de tip word. Totui, n momentul execuiei programului, registrul SI va fi ncrcat cu valoarea lui var (1234H), n loc de OFFSET, ceea ce poate conduce la rezultate imprevizibile. n acest caz, referirile la constantele de adres vor fi precedate de OFFSET iar referirile la valori din memorie s fie cuprinse ntre paranteze drepte ([ i ]), eliminnd astfel ambiguitatea.

124

Introducere n limbajul de programare Intel

3.2.5 Instruciuni ale microprocesorului Intel Microprocesoarele din familia Intel x86 dispun de o serie impresionant de instruciuni, asemeni tuturor procesoarelor din clasa procesoarelor CISC (Complex Instruction Set Computer). Instruciunile se pot mpri n: instruciuni logice, aritmetice, de transfer i de control. Prezentm n continuare cteva exemple din fiecare clas de instruciuni. 3.2.5.1 Instruciuni logice Instruciunile logice implementeaz funciile logice de baz, pe un octet sau pe cuvnt. Ele acioneaz bit cu bit, deci se aplic funcia logic respectiv tuturor biilor sau perechilor de bii corespunztori operanzilor. Instruciunile logice sunt urmtoarele: NOT: A =~A AND: A &= B OR: A |= B XOR: A ^= B TEST: A & B De regul, instruciunile logice au efect asupra indicatorilor de stare, cu excepia instruciunii NOT, care nu are efect asupra nici unui flag (indicator de stare). Aceste efecte sunt urmtoarele: Se terge indicatorul carry (C) Se terge indicatorul overflow (O) Se seteaz zero flag (Z) dac rezultatul este zero, sau l terge n caz contrar Se copiaz bitul mai nalt al rezultatului n indicatorul sign (S) Se seteaz bitul de paritate (P) conform cu paritatea rezultatului

125

Elemente de arhitectur a sistemelor de calcul i operare

Instruciunea NOT Este o instruciune cu un singur operand (instruciune unar), cu forma general: NOT destinatie Unde destinaie este fie un registru, fie o locaie de memorie pe 8 sau 16 bii. Instruciunea are ca efect inversarea (negarea) tuturor biilor operandului, adic aducerea n forma codului invers - complement fa de 1. Instruciunea AND Este o instruciune cu doi operanzi (instruciune binar), cu forma general: AND destinaie, sursa Unde destinatie este fie un registru, fie o locaie de memorie pe 8 sau 16 bii, iar sursa poate fi registru, locaie de memorie sau o constant pe 8 sau 16 bii. Instruciunea are ca efect operaia: <destinaie> == <destinaie> AND <surs>. Indicatorii de stare modificai sunt: SF, ZF, PF, CF, OF = 0, AF nedefinit. Instruciunea TEST (AND non-distructiv) Este o instruciune cu doi operanzi (instruciune binar), cu forma general: TEST destinaie, sursa Unde destinatie este fie un registru, fie o locaie de memorie pe 8 sau 16 bii, iar sursa poate fi registru, locaie de memorie sau o constant pe 8 sau 16 bii. Instruciunea are acelai efect ca i instruciunea AND, cu deosebirea c nu se modific operandul destinaie, iar indicatorii de stare sunt modificai n acelai mod ca i n cazul instruciunii AND. Instruciunea OR Este o instruciune cu doi operanzi, cu forma general: OR destinaie, sursa Unde destinaie este fie un registru, fie o locaie de memorie pe 8 sau 16 bii, iar sursa poate fi registru, locaie de memorie sau o constant pe 8 sau 16 bii. Instruciunea are efectul: <destinaie> == <destinaie> OR <surs>. Indicatorii de stare modificai sunt: SF, ZF, PF, CF, OF = 0, AF nedefinit. 126

Introducere n limbajul de programare Intel

Instruciunea XOR (SAU-Exclusiv) Este o instruciune cu doi operanzi, cu forma general: XOR destinaie, sursa Unde destinaie este fie un registru, fie o locaie de memorie pe 8 sau 16 bii, iar sursa poate fi registru, locaie de memorie sau o constant pe 8 sau 16 bii. Instruciunea are efectul: <destinaie> == <destinaie> XOR <surs>. Indicatorii de stare modificai sunt: SF, ZF, PF, CF, OF = 0, AF nedefinit. Funcia XOR, denumit SAU-Exclusiv (sau anticoinciden) are valoarea logic 1 atunci cnd operanzii si sunt diferii (unul are valoarea 0 iar cellalt valoarea 1) i valoarea logic 0 cnd ambii operanzi au aceeai valoare (fie ambii au valoarea 0, fie ambii au valoarea 1). Observaie: De cele mai multe ori, instruciunile AND i OR sunt folosite pe post de mascare a datelor; n acest sens, o valoarea de tip masc (mask) este utilizat pentru a fora anumii bii s ia valoarea zero sau valoarea 1 n cadrul altei valori. O astfel de masc logic are efect asupra anumitor bii, n timp ce pe alii i las neschimbai. Exemple: Instruciunea AND CL, 0Fh face ca cei mai semnificativi 4 bii s ia valoarea 0, n timp ce biii mai puin semnificativi sunt lsai neschimbai; astfel, dac registrul CL are valoarea iniial 1001 1101, dup execuia instruciunii AND CL, 0Fh va avea valoarea 0000 1101. Instruciunea OR CL, 0Fh face ca cei mai puin semnificativi 4 bii s ia valoarea 1, n timp ce biii mai semnificativi s rmn nemodificai. Dac registrul CL are valoarea iniial 1001 1101, dup execuia instruciunii OR CL, 0Fh va avea valoarea 1001 1111.

127

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.11 Instruciuni de deplasare i de rotaie

3.2.5.2 Instruciuni de deplasare i de rotaie Acest tip de instruciuni (vezi figura 3.11) permit realizarea operaiilor de deplasare i de rotaie la nivel de bit. Ele au doi operanzi, primul operand fiind cel asupra cruia se aplic operaia de deplasare pe bii, iar cele de-al doilea (operandul numrtor sau contor) semnific numrul de bii cu care se face aceast deplasare. Operaiile se pot face de la dreapta spre stnga sau invers. Deplasarea nseamn translatarea tuturor biilor din operand la stnga/dreapta, cu completarea unei valori fixe n poziia rmas liber i cu pierderea biilor din dreapta/stnga. Rotaia presupune translatarea biilor din operand la stnga/dreapta, cu completarea n dreapta/stnga cu biii care se pierd n partea opus. Sintaxa general a instruciunilor de deplasare i rotaie este urmtoarea: INSTR <operand> , <contor> 128

Introducere n limbajul de programare Intel

Unde INSTR reprezint numele instruciunii, <operand> reprezint un registru sau o locaie de memorie pe 8 sau 16 bii, iar <contor> semnific numrul de bii cu care se face deplasarea, adic fie o constant, fie registrul CL (care i confirm astfel rolul de numrtor). Observaie Totdeauna exist dou modaliti de deplasare: Prin folosirea unui contor efectiv de exemplu: SHL AX, 1 Prin folosirea registrului CL pe post de contor de exemplu: SHL AX, CL Instruciunea SHL/SAL (Shift Left/Shift Arithmetic Left) Aceast instruciune translateaz biii operandului o poziie la stnga de cte ori specific operandul numrtor. Poziiile rmase libere prin deplasarea la stnga sunt umplute cu zerouri la bitul cel mai puin semnificativ, n timp ce bitul cel mai semnificativ se deplaseaz n indicatorul CF (Carry Flag). Reprezint o modalitate rapid de nmulire cu o putere a lui 2 (n funcie de numrul de bii pentru care se face deplasarea la stnga). Exemple: 1. nmulirea lui AX cu 10 (1010 n binar) (nmulim cu 2 i cu 8, apoi adunm rezultatele) SHL SHL ax, 1 ax, 2 ; AX ori 2 ; salvm 2*AX n BX ; 2*AX(original) * 4 = 8*AX(original) ; 2*AX + 8*AX = 10*AX MOV bx, ax ADD ax, bx

2. nmulirea lui AX cu 18 (10010 n binar) (nmulim cu 2 i cu 16, apoi adunm rezultatele) SHL SHL ax, 1 ax, 3 ; AX ori 2 ; salvm 2*AX ; 2*AX(original) ori 8 = 16*AX(original) ; 2*AX + 16*AX = 18*AX 129 MOV bx, ax ADD ax, bx

Elemente de arhitectur a sistemelor de calcul i operare

Instruciunea SHR (Shift Right) Aceast instruciune translateaz biii operandului o poziie la dreapta de cte ori specific operandul numrtor. Bitul cel mai puin semnificativ se deplaseaz n indicatorul CF (Carry Flag). Reprezint o modalitate rapid de mprire fr semn la o putere a lui 2 (dac deplasarea se face cu o poziie la dreapta, operaia este echivalent cu o mprire la 2, dac deplasarea se face cu dou poziii, operaia este echivalent cu o mprire la 22, etc.). Operaia de mprire se execut fr semn, completndu-se cu un bit 0 dinspre stnga (bitul cel mai semnificativ). Instruciunea SAR (Shift Arithmetic Right) Aceast instruciune translateaz biii operandului o poziie la dreapta de cte ori specific operandul numrtor. Bitul cel mai semnificativ rmne neschimbat, n timp ce bitul cel mai puin semnificativ este copiat n indicatorul CF (Carry Flag). Reprezint o modalitate rapid de mprire cu semn la o puterea a lui 2 (n funcie de numrul de bii cu care se face deplasarea la dreapta). Instruciunea RCL (Rotate through Carry Left) Aceast instruciune determin o rotaie a biilor operandului ctre stnga prin intermediul lui CF (Carry Flag). Astfel, cel mai semnificativ bit trece din operand n CF, apoi se deplaseaz toi biii din operand cu o poziie la stnga iar CF original trece n bitul cel mai puin semnificativ din operand. Instruciunea ROL (Rotate Left) Aceast instruciune determin o rotaie a biilor operandului ctre stnga. Astfel, cel mai semnificativ bit trece din operand n bitul cel mai puin semnificativ.

130

Introducere n limbajul de programare Intel

Exemplu. Dup execuia instruciunilor: ROL AX, 6 AND AX, 1Fh Biii 10-14 din AX se mut n biii 0-4. Instruciunea RCR (Rotate through Carry Right) Aceast instruciune determin o rotaie a biilor operandului ctre dreapta prin intermediul lui CF (Carry Flag). Astfel, bitul din CF este scris napoi n bitul cel mai semnificativ al operandului. Instruciunea ROR (Rotate Right) Aceast instruciune determin o rotaie a biilor operandului ctre dreapta. Bitul cel mai puin semnificativ trece n bitul cel mai semnificativ. Exemple: MOV ax,3 ; Valori iniiale AX = 0000 0000 0000 0011 MOV bx,5 ; BX = 0000 0000 0000 0101 OR ax,9 ; ax <- ax | 0000 1001 AX = 0000 0000 0000 1011 AND ax,10101010b ; ax <-ax&1010 1010 AX = 0000 0000 0000 1010 XOR ax,0FFh ; ax <- ax ^ 1111 1111 AX = 0000 0000 1111 0101 NEG ax ; ax <- (-ax) AX = 1111 1111 0000 1011 NOT ax ; ax <- (~ax) AX = 0000 0000 1111 0100 OR ax,1 ; ax <- ax | 0000 0001 AX = 0000 0000 1111 0101 SHL ax,1 ; depl logic la stg cu 1 bit AX = 0000 0001 1110 1010 SHR ax,1 ; depl logic la dr cu 1 bit AX = 0000 0000 1111 0101 ROR ax,1 ; rotaie stg (LSB=MSB) AX = 1000 0000 0111 1010 ROL ax,1 ; rotaie dr (MSB=LSB) AX = 0000 0000 1111 0101 MOV cl,3 ; folosim CL pt depl cu 3 bii CL = 0000 0011 SHR ax,cl ; mprim AX la 8 AX = 0000 0000 0001 1110 MOV cl,3 ; folosim CL pt depl cu 3 bii CL = 0000 0011 SHL bx,cl ; nmulim BX cu 8 BX = 0000 0000 0010 1000

131

Elemente de arhitectur a sistemelor de calcul i operare

3.2.5.3 Instruciuni aritmetice Instruciunea ADD (ADDition) Instruciunea ADD are formatul general: ADD <destinaie> <surs> Unde <destinaie> poate fi un registru general sau o locaie de memorie, iar <surs> poate fi registru general, locaie de memorie sau o valoare imediat. Cei doi operanzi nu pot fi ns n acelai timp locaii de memorie. Rezultatul operaiei este urmtorul: <destinaie> == <destinaie> + <surs>. Indicatorii de stare modificai n urma acestei operaii sunt: AF, CF, PF, SF, ZF, OF. Operanzii pot fi pe 8 sau pe 16 bii i trebuie s aib aceeai dimensiune. Dac apare ambiguitate la modul de exprimare al operanzilor (8 sau 16 bii) se va folosi operatorul PTR. Exemple: ADD AX, BX ADD DL, 33h MOV DI, NUMB MOV AL, 0 ADD AL, [DI] ADD AL, [DI + 1] ADD byte ptr VAR, 5 ; adunare ntre regitri AX ; adunare efectiv - DL ; adresa lui NUMB ; se terge suma ; adun [NUMB] ; adun [NUMB + 1] ; destinaie n memorie, surs imediat ; forarea instruciunii pe un octet, ;VAR fiind declarat DW AX + BX DL + 33h

ADD word ptr [DI], -2

Instruciunea INC (Increment addition) Instruciunea INC are formatul general: INC <destinaie> Unde <destinaie> este un registru sau un operand n memorie, pe 8 sau pe 16 bii iar semnificaia operaiei este incrementarea valorii destinaie cu 1. Toi indicatorii de stare sunt afectai, cu excepia lui CF (Carry Flag). 132

Introducere n limbajul de programare Intel

Exemplu: MOV DI, NUMB MOV AL, 0 ADD AL, [DI] INC DI ADD AL, [DI] ; adresa lui NUMB ; terge suma ; adun [NUMB] ; DI = DI + 1 ; adun [NUMB + 1]

Instruciunea ADC (ADdition with Carry) Instruciunea ADD are formatul general: ADD <destinaie> <surs> Unde <destinaie> poate fi un registru general sau o locaie de memorie, iar <surs> poate fi registru general, locaie de memorie sau o valoare imediat. Instruciunea acioneaz ntocmai ca ADD, cu deosebirea c la rezultat este adugat i bitul CF. Este utilizat, de regul, pentru a aduna numere mai mari de 16 bii (8086-80286) sau mai mari de 32 de bii la 80386, 80486, Pentium. Exemplu: Adunarea a dou numere pe 32 de bii se poate face astfel (BXAX) + (DXCX): ADD AX, CX ADC BX, DX Instruciunea SUB (SUBstract) Instruciunea SUB are formatul general: SUB <destinaie> <surs> Unde <destinaie> poate fi un registru general sau o locaie de memorie, iar <surs> poate fi registru general, locaie de memorie sau o valoare imediat. Rezultatul operaiei este urmtorul: <destinaie> == <destinaie> - <surs>. Indicatorii de stare modificai n urma acestei operaii sunt: AF, CF, PF, SF, ZF, OF. Operanzii pot fi pe 8 sau pe 16 bii i trebuie s aib aceeai dimensiune. Scderea poate fi vzut ca o adunare cu reprezentarea n complementul fa de 2 al operandului surs i cu 133

Elemente de arhitectur a sistemelor de calcul i operare

inversarea bitului CF, n sensul c, dac la operaie (adunarea echivalent) apare transport, CF=0 i dac la adunarea echivalent nu apare transport, CF=1. Pentru instruciunile: MOV CH, 22h SUB CH, 34h Rezultatul este -12 (1110 1110), iar indicatorii de stare se modific astfel: ZF = 0 (rezultat diferit de zero) CF = 1 (mprumut) SF = 1 (rezultat negativ) PF = 0 (paritate par) OF = 0 (fr depire) Instruciunea DEC (DECrement substraction) Instruciunea DEC are formatul general: DEC <destinaie> Unde <destinaie> este un registru sau un operand n memorie, pe 8 sau pe 16 bii iar semnificaia operaiei este decrementarea valorii destinaie cu 1. Toi indicatorii de stare sunt afectai, cu excepia lui CF (Carry Flag). Instruciunea SBB (SuBstract with Borrow) Instruciunea SBB are formatul general: SBB <destinaie>, <surs> Unde <destinaie> i <surs> pot fi registru sau operand n memorie, pe 8 sau pe 16 bii. Rezultatul operaiei este urmtorul: <destinaie> == <destinaie> - <surs> - CF, deci la fel ca i n cazul instruciunii SUB, dar din rezultat se scade i bitul CF. Indicatorii de stare modificai n urma acestei operaii sunt: AF, CF, PF, SF, ZF, OF. Aceast instruciune este utilizat, de regul, pentru a scdea numere mai mari de 16 bii (la 8086 - 80286) sau de 32 de bii (la 80386, 80486, Pentium). 134

Introducere n limbajul de programare Intel

Exemplu Scderea a dou numere pe 32 de bii se poate face astfel (BXAX) (SIDI): SUB SBB AX, DI BX, SI

Setarea indicatorilor de stare n cazul situaiilor de depire sau/i transport Indicatorul CF (Carry Flag) indic apariia unui transport n urma unei adunri sau un mprumut n cazul unei scderi. n cazul unei operaii fr semn, CF este setat (ia valoarea 1) atunci cnd apare transport i nu este setat (are valoarea 0) dac nu apare transport. De exemplu, dac adunm valorile 36864 (9000h) + 36864 (9000h) = 73728 (12000h) > 65535 (FFFFh), rezultatul depete valoarea maxim 65535, deci CF va avea valoarea 1. n concluzie, bitul carry este setat atunci cnd numrul fr semn iese din domeniu (nseamn c operaia aritmetic a generat depire). De asemenea, poate s apar situaia de depire (indicatorul OF Overflow Flag este setat) atunci cnd se adun sau se scad numere fr semn. De exemplu, pentru adunarea 20480 (5000h) + 20480 (5000h) = 40960 (A000h) > 32767 (7FFFh) indicatorul OF este setat, iar CF nu este setat (avem depire, fr transport). Indicatorul OF este setat atunci cnd numrul cu semn depete domeniul de definiie. De exemplu, n cazul FFFFh + FFFFh = FFFEh = (-1) + (-1) = -2, rezultatul operaiei este fr depire, cu transport. n figura 3.12 putem vedea cum se realizeaz setarea indicatorilor de stare.

135

Elemente de arhitectur a sistemelor de calcul i operare

Alte exemple:
MOV ADD ax, 0fffeh ; 65534 interpretat ca fr semn ax, 3 ; C = 1, O = 0 --- Condiie de overflow ; fr semn ax, 0FFFEh ax, 3 bx, 07FFFh bx, 1 ; -2 interpretat ca numr cu semn ; C = 1, O = 0 --- Ok - nr cu semn ; 32767 interpretat ca nr cu semn ; C = 0, O = 1 --- Condiie de Overflow ; cu semn ; 32767 interpretat ca fr semn ; C = 0, O = 1 --- Ok - fr semn

MOV ADD MOV ADD

MOV ADD MOV ADD

bx, 07FFFh bx, 1

ax, 07h ; 7 interpretat fie cu semn fie fr semn ax, 03h ; C = 0, O = 0 --- Ok indiferent de semn

3.2.5.4 Instruciuni de salt Instruciunea de salt necondiionat JMP Aceast instruciune are sintaxa general: JMP etichetaUnde eticheta indic adresa (locul) unde se face saltul, de regul prin specificarea unei etichete ce indic un nume de procedur, o etichet definit cu : sau o etichet definit cu directiva LABEL. Exemple de etichete: eticheta1: contor: eticheta2 LABEL FAR stop LABEL NEAR

136

Introducere n limbajul de programare Intel

Din punct de vedere al saltului exist trei tipuri de instruciuni JMP: Short jump - instruciune pe 2 octei ce permite saltul la locaia de memorie n intervalul +127 i -128 octei de la locaia de memorie ce urmeaz saltului are forma: JMP SHORT eticheta Near jump - instruciune pe 3 octei ce permite saltul la locaia de memorie n intervalul +/-32KB de la locaia de instruciunii din segmentul de cod curent are forma: JMP eticheta Far jump - instruciune pe 5 octei ce permite saltul la o locaie de memorie n ntreg spaiul de memorie are forma: JMP etichetaPentru microprocesoarele 80386 i 80486 saltul de tip near este n spaiul de memorie +/-2G dac computerul opereaz n mod protejat i n domeniul +/-32K bytes pentru modul real. Instruciuni de salt condiional Dup cum am vzut mai nainte, instruciunile aritmetice i logice determin modificarea indicatorilor de stare; cu alte cuvinte, aceti indicatori ne ofer permanent informaii cu privire la rezultatele instruciunilor anterioare. Prin utilizarea valorilor indicatorilor de stare se pot realiza aa numitele salturi condiionale, n care se realizeaz transferul execuiei ctre o alt instruciune din cadrul programului. Dac o condiie de testare a fost adevrat atunci se face un salt nainte sau napoi ctre locaia specificat (pointerul de instruciune IP ne indic n fiecare moment adresa urmtoarei instruciuni ce va fi executate). Dac acea condiie de testare a fost fals, se continu execuia programului cu urmtoarea instruciune (IP este incrementat ca de obicei). Salturile condiionale sunt ntotdeauna de tip short pentru 8086-80286; domeniul saltului este ntre 127 octei i -128 octei de la locaia urmtoare saltului condiional. De la 80386, salturile condiionale sunt fie short, fie near. Instruciunile de salt condiional testeaz urmtorii indicatori de stare: SF (Sign Flag), ZF(Zero Flag), CF(Carry Flag), PF (Parity Flag) i OF (Overflow Flag).

137

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.12 Setarea indicatorilor de stare

Observaie: Atenie la compararea valorii FFh cu valoarea 00h! n mulimea numerelor fr semn prima valoare este mai mare, pe cnd n mulimea numerelor cu semn prima valoare este mai mic (are valoarea -1). nainte de a prezenta instruciunile de salt condiional vom prezenta ns o instruciune care este folosit deseori n compania unei instruciuni de salt condiional: instruciunea CMP. Instruciunea CMP (CoMParison) Aceast instruciune compar dou valori X i Y, fiind echivalent cu o scdere care modific doar indicatorii de stare. Sintaxa general este: CMP destinaie surs Semnificaia este execuia unei scderi temporare destinaie surs, cu modificarea indicatorilor de stare. n cazul acestei instruciuni toi indicatorii de stare sunt afectai, fiind folosit pentru verificarea coninutului unui registru sau a unei locaii de memorie cu o alt valoare. De regul, aceast instruciune se folosete mpreun cu o instruciune de salt condiional. n figura 3.13 sunt prezentate modificrile indicatorilor de stare rezultate n urma instruciunii CMP. Exemplu: CMP al, 10h ; compar coninutul registrului AL cu 10h 138

Introducere n limbajul de programare Intel

JAE SUPER ; dac AL are valoarea 10h sau mai mult se face salt la ; locatia de memorie SUPER

Fig. 3.13 Setarea indicatorilor de stare n urma execuiei instruciunii CMP

Compararea ntregilor cu semn cu ajutorul instruciunii CMP se face astfel (considerm instruciunea CMP AX, BX): Indicatorul SF va fi setat n funcie de rezultatul AX-BX (dac are valoarea 1 n bitul cel mai semnificativ al rezultatului). Indicatorul OF va fi setat dac rezultatul AX-BX a produs un numr n afara domeniului de definiie (de exemplu -32768 +32767 pentru o reprezentare pe16 bii) reprezentat ca ntreg. Pentru instruciunile de salt condiional exist mai multe mnemonice pentru aceeai instruciune i dac condiia nu este ndeplinit, saltul nu are loc i se continu cu execuia instruciunii urmtoare din program. n figurile 3.14 i 3.15 sunt prezentate instruciunile de salt condiionat.

139

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 3.14 Instruciuni de salt condiionat

O alt instruciune de salt este instruciunea LOOP, cu formatul general: LOOP eticheta unde eticheta este o locaie de memorie n program. Instruciunea LOOP reprezint o combinaie de decrementare a registrului general CX cu un salt condiional; mai precis, n prima faz LOOP decrementeaz CX (sau ECX pentru modul de lucru pe 32 de bii), iar dac CX este diferit de 0 se face salt la adresa indicat de eticheta. n cazul n care registrul CX este 0, se va executa urmtoarea instruciune din program (se continu execuia n mod normal, secvenial).

140

Introducere n limbajul de programare Intel

Fig. 3.15 Instruciuni de salt condiionat

3.3 Exemple de programe 1. Program care citete un numr de la tastatur i afieaz dac numrul este par sau nu. ; Programul citete un numr i afieaz un mesaj referitor la paritate dosseg .model small .stack .data mesaj db 13,10,'Introducei numrul:(<=9)$' mesg_par db 13,10,'Numrul introdus este par!$' mesg_impar db 13,10,'Numrul introdus este impar!$' .code pstart: mov ax,@data mov ds,ax mov ah,09 mov dx,offset mesaj int 21h 141

Elemente de arhitectur a sistemelor de calcul i operare

mov ah,01h ; se citete un caracter de la tastatur ; codul ASCII al caracterului introdus va fi n AL int 21h mov bx,2 div bx ; se mparte AX la BX, ctul va fi n AX, restul n DX cmp dx,0 jnz impar mov ah,09 mov dx,offset mesg_par int 21h jmp sfrit impar: mov ah,09 mov dx,offset mesg_impar int 21h sfarsit: mov ah,4ch int 21h ; sfritul programului END pstart 2. Program care calculeaz ptratul unui numr introdus de la tastatur. ; Programul calculeaz ptratul unui numr (<=256) introdus de la tastatur ; Valoarea ptratului se calculeaz n registrul AX (valoare maxim 2^16 = 65536) dosseg .model small .stack .data nr DB 10,10 dup(0) r DB 10, 10 dup(0) mesaj db 13,10,'Introducei numrul:(<=256)$' ptrat db 13,10,'Ptratul numrului este:$' .code pstart: mov ax,@data 142

Introducere n limbajul de programare Intel

mov ds,ax mov ah,09 mov dx,offset mesaj int 21h mov ah,0ah mov dx,offset nr int 21h mov cl,nr[1] introdus inc cl mov si,1 xor ax,ax mov bl,10 n BL nmultire: mul bl inc si mov dl,nr[si] sub dl,30h add ax,dx cmp si,cx jne nmulire mul ax xor si,si mov bx,10 cifra: ; aici ncepe afiarea rezultatului din AX div bx add dl,30h mov r[si],dl inc si xor dx,dx cmp ax,0 jne cifra mov ah,9 mov dx, offset ptrat 143 ; n ir se va merge pn la poziia cl+1 ; folosesc registrul SI pe post de contor ; iniializez AX cu valoarea 0 ; se va nmuli cu valoarea 10 care este stocat ; ncarc n CL numrul de cifre al numrului

Elemente de arhitectur a sistemelor de calcul i operare

int 21h caracter: dec si mov ah,02 caracter mov dl,r[si] int 21h cmp si,0 jne caracter jmp sfrit

;apelarea funciei 02 pentru afiarea unui ;al carui cod ASCII este n DL

mov ah,9 mov dx,offset ptrat int 21h sfrit: mov ah,4ch int 21h ; stop program END pstart 3. Program care calculeaz valoarea unui numr ridicat la o putere. Att numrul ct i exponentul (puterea) sunt introduse de la tastatur. ; Programul calculeaz un numr ridicat la o putere ; Observaie. Deoarece rezultatul se calculeaz n registrul AX care ;este un registru pe 16 bii, valoarea maxim calculat corect este 2^16= ;65536 .model small .stack .data mesaj1 db 13,10,'Introducei numrul:(<=9)$' mesaj2 db 13,10,'Introducei puterea:(<=9)$' mesaj_final db 13,10,'Rezultatul este: $' mesaj_putere_0 db 13,10, 'Orice numr ridicat la puterea 0 este 1! $' r db 30 dup(0) ; n variabila r se va stoca rezultatul .code pstart: mov ax,@data mov ds,ax 144

Introducere n limbajul de programare Intel

mov ah,09 mov dx,offset mesaj1 int 21h mov ah,01h ; se citete un caracter de la tastatur ; codul ASCII al caracterului introdus va fi n AL int 21h and ax,00FFh sub ax, 30h ; se obine valoarea numeric ; sczndu-se codul lui 0 n ASCII (30H) push ax ; se salveaz valoarea lui ax n stiv mov ah,09 mov dx,offset mesaj2 int 21h mov ah,01h ; se citete un caracter de la tastatur ; codul ASCII al caracterului introdus va fi n AL int 21h and ax,00FFh sub ax, 30h ; se obine valoarea numeric ; sczndu-se codul lui 0 n ASCII (30H) mov cx,ax ;registrul CX contorizeaz numrul de nmuliri cmp cx,0 jne putere_0 mov ah,09 mov dx, offset mesaj_putere_0 int 21h jmp sfrit putere_0: pop bx ;se salveaz n BX valoarea cu care nmulete mov ax,0001 nmulire: mul bx loop nmulire xor si,si mov bx,10 cifra: div bx add dl,30h mov r[si],dl inc si xor dx,dx cmp ax,0 145

Elemente de arhitectur a sistemelor de calcul i operare

jne cifra mov ah,9 mov dx, offset mesaj_final int 21h caracter: dec si mov ah,02 ;apelarea funciei 02 pentru afiarea unui caracter mov dl,r[si] ;al crui cod ASCII este n DL int 21h cmp si,0 jne caracter sfrit: mov ah,4ch ; sfritul programului int 21h END pstart 4. Program care verific dac un numr este palindrom (un numr se numete palindrom dac scris de la dreapta la stnga sau invers are aceeai valoare). ; Programul verific dac un numr sau ir de caractere este ;palindrom dosseg .model small .stack .data nr DB 10,10 dup(0) mesaj db 13,10,'Introducei numrul:$' mesaj_nu db 13,10,'Numrul nu este palindrom!$' mesaj_da db 13,10,'Numrul este palindrom!$' .code pstart: mov ax,@data mov ds,ax mov ah,09 mov dx,offset mesaj int 21h mov ah,0ah mov dx,offset nr 146

Introducere n limbajul de programare Intel

int 21h mov si,1 mov cl,nr[si] ; ncarc n CL numrul de cifre al numrului introdus and cx,00FFh mov ax,cx mov bl,2 div bl ; n AL este catul mpririi lui AX la 2 and ax,00FFh inc ax inc cx mov di,cx urmtorul_caracter: inc si ; SI crete de la nceputul irului spre mijloc mov bl,nr[di] cmp nr[si],bl jne nu_este dec di ; DI scade de la sfritul irului spre mijloc cmp si,ax ; n ir se va merge pn la poziia cl+1 jne urmtorul_caracter mov ah,9 mov dx,offset mesaj_da int 21h jmp sfrit nu_este: mov ah,9 mov dx,offset mesaj_nu int 21h sfarsit: mov ah,4ch int 21h ; stop program END pstart 5. Program care calculeaz suma cifrelor unui numr introdus de la tastatur. ; Programul calculeaz suma cifrelor unui numr introdus de la ;tastatur dosseg .model small .stack .data 147

Elemente de arhitectur a sistemelor de calcul i operare

nr DB 10,10 dup(?) rezultat DB 10,10 dup(?) mesaj db 13,10,'Introducei numrul:$' mesaj_suma db 13,10,'Suma cifrelor numrului este: $' .code pstart: mov ax,@data mov ds,ax mov ah,09 ; aici se afieaz mesajul iniial de introducere ; a numrului mov dx,offset mesaj int 21h mov ah,0ah ; funcia 10(0ah) citete un ir de caractere de la ;tastatura intr-o variabil de memorie mov dx,offset nr int 21h mov si,1 mov cl,nr[si] ; ncarc n CL numrul de cifre al numrului ;introdus and cx,00FFh inc cx ; CX stocheaz acum ultima poziie din irul ;de cifre ; stocm rezultatul n AX, pe care l xor ax,ax ;iniializm cu zero urmtorul_caracter: ; SI crete de la nceputul irului spre sfrit inc si add al,nr[si] sub al,30h ; scdem codul ASCII al lui zero ; n ir se va merge pn la poziia cl+1 cmp si,cx jne urmtorul_caracter xor si,si ; SI este indicele din irul care va conine ;rezultatul cifra: ; aici ncepe afiarea rezultatului din AX mov bx,0ah div bx add dl,30h mov rezultat[si],dl inc si xor dx,dx cmp ax,0 jne cifra mov ah,9 148

Introducere n limbajul de programare Intel

mov dx,offset mesaj_suma int 21h caracter: dec si mov ah,02 ;apelarea funciei 02 pentru afiarea ;unui caracter mov dl,rezultat[si] ;al crui cod ASCII este n DL int 21h cmp si,0 jne caracter mov ah,4ch int 21h ; terminarea programului END pstart

149

4
MEMORIA I MAGISTRALELE DE SISTEM
4.1 Introducere Dup cum am vzut n capitolul 1, memoria i componenta de conexiune (magistrala de sistem) reprezint, pe lng microprocesor i interfeele de intrare/ieire, elemente arhitecturale de baz ale unui calculator. Memoria calculatorului este absolut indispensabil pentru execuia programelor, avnd n vedere faptul c, pentru a fi executat, un program trebuie ncrcat n prealabil n memorie. Una dintre funciile importante ale unui sistem de operare pentru calculator l reprezint managementul memoriei, adic administrarea ntregului spaiu de memorie, alocarea de spaiu n memorie pentru diferite aplicaii i asigurarea faptului c acestea nu interfereaz ntre ele. De regul, sistemul de operare este alctuit dintr-o serie de rutine software, dintre care unele asigur controlul operaiilor de intrare/ieire, oferind suport programelor de aplicaii aflate n execuie; aceste rutine rezidente trebuie s rmn permanent ncrcate n memorie. Spre deosebire de rutinele rezidente, o serie de rutine trebuie ncrcate n memorie doar atunci cnd este nevoie de ele; aceste rutine se numesc rutine tranziente. n general, rutinele rezidente ale sistemului de operare sunt ncrcate la nceputul spaiului de memorie (memoria joas low memory) existent, de la adresa 0. Restul spaiului de memorie rmas se numete spaiul tranzient de memorie, unde sunt ncrcate rutinele tranziente sau celelalte programe de aplicaii.

150

Elemente de arhitectur a sistemelor de calcul i operare

Necesitatea de a rula mai multe programe n mod concurent (n aceeai perioad de timp) pentru a mri eficiena de calcul a sistemului, a condus la creterea continu a necesarului de memorie i, implicit, la dezvoltarea continu a capacitilor de memorie. Dar s vedem n continuare care sunt principalele tipuri de memorie utilizat ntr-un calculator. Avnd n vedere c un microprocesor Pentium poate adresa 232 locaii de memorie (4 GB de memorie), memoria maxim ce poate fi instalat pe un calculator echipat cu un astfel de procesor este de 4 GB de memorie. Acest tip de memorie este denumit i memoria principal sau memoria RAM (Random Access Memory). Am vzut c regitrii microprocesorului reprezint locaii de memorie ultra-rapide, cu un timp de acces de aproximativ 2 ns (nano secunde!). Memoria RAM ofer ns un timp de acces mult mai mare, de aproximativ 60 ns. Din aceast cauz a aprut un tip intermediar de memorie, memoria cache. Memoria cache integrat direct pe cipul microprocesorului se numete memorie cache de nivel 1, iar memoria cache situat pe placa de baz lng microprocesor se numete memorie cache de nivel 2 (aceast memorie cache este ceva mai lent dect memoria cache de nivel 1 dar i mai ieftin). O ierarhie a memoriei este prezentat n figura 4.1.

Fig. 4.1 O ierarhie a memoriei

Este cunoscut faptul c microprocesorul aduce din memorie i execut o singur instruciune ntr-un ciclu de tact. Dac procesorul poate executa o singur instruciune la un moment dat, desigur c nu poate executa mai multe programe la un moment dat (simultan). Nici un sistem monoprocesor nu poate executa dou sau mai multe programe simultan. Programele sunt ns rulate n mod concurent, aceasta nsemnnd c sunt rulate n aceeai perioad de timp.

151

Memoria i magistralele de sistem

Observm din desenul de mai sus c regitrii procesorului i memoria cache reprezint cel mai rapid tip de memorie (timp de acces mic), dar i cel mai scump tip de memorie. Analiznd tabelul 4.2 putem avea o imagine i mai precis legat de tipul de memorie, dimensiunea, viteza, limea de band (bandwidth), modul de administrare i backup.

4.2 Memoria cache S considerm cazul unui procesor Intel ce ruleaz la frecvena de ceas de 500 Mhz; acest lucru presupune c acesta are nevoie pentru acces la memorie (n medie) de 2 ns pentru a aduce o instruciune (etapa fetch) i de ceva mai mult timp pentru a aduce datele din memorie. Memoria de tip EDO RAM are un timp de rspuns de aproximativ 60 ns, de unde rezult o mare disproporie ntre viteza de micare a procesorului i cea a memoriei RAM. Din acest punct de vedere, dac microprocesorul ar dispune doar de memorie RAM, ar lucra de 30 de ori mai ncet! Din fericire, pentru ca procesorul s nu lucreze mai ncet din cauza pierderii de timp cu accesul la memoria lent RAM, a fost gsit soluia: memoria cache. Tabelul 4.2 Principalele tipuri de memorie - caracteristici

Memoria de tip cache este mai rapid dect memoria RAM obinuit datorit faptului c este construit din cipuri de memorie de tip SRAM (Static RAM) ce opereaz la viteze superioare dect memoria de tip DRAM (Dynamic RAM). n cazul ideal, viteza de acces a memoriei cache ar trebui s fie comparabil cu cea a vitezei de ceas a microprocesorului, permind astfel acestuia s acceseze instruciunile i datele fr nici o ntrziere. Majoritatea unitilor UCP sunt mai rapide dect viteza de acces a memoriei i, de aceea, trebuie s fac pauze pentru a atepta echipamentele mai ncete (memoria sau dispozitivele periferice, de exemplu) s reacioneze. 152

Elemente de arhitectur a sistemelor de calcul i operare

n acest caz, exist un controlor al magistralei de sistem care genereaz stri de ateptare (wait states) unitii centrale de procesare n execuia unui ciclu fetch-decode-execute obinuit. Memoria cache mpreun cu unitatea de control a memoriei cache (denumit, de regul, CCU Cache Controller Unit) este interpus ntre UCP i memoria principal (vezi figura 4.3), de unde poate prelua toate cererile de acces la memorie ce vin de la UCP. Scopul principal este acela de a menine n memoria rapid cache poriunile de memorie active cu date i instruciuni. Toate operaiile de citire/scriere iniiate de UCP sunt direcionate ctre memoria cache n sperana unui rspuns mai rapid. Cum acioneaz n linii mari memoria cache? Unitatea de control a memoriei cache (UCC Unitate de Control Cache) verific adresa de memorie cerut de UCP pentru a vedea dac aceasta se afl n memoria cache. Dac este adevrat acest lucru, UCP poate accesa valoare de memorie imediat, n caz contrar controlorul UCC trebuie s aduc respectiva valoare din memoria principal, de unde rezult o ntrziere n procesare. Acest procedeu are ca rezultat mrirea vitezei de procesare, mai ales n cazul n care procesorul are de executat un program alctuit din instruciuni de ciclare aflate n ntregime n micul spaiu de memorie cache. i n cazul instruciunilor secveniale se constat o mrire a vitezei de execuie, mai ales dac controller-ul de memorie cache are abilitatea s ghiceasc nainte instruciunile ce vor fi executate i s le ncarce n memoria cache. Atunci cnd o valoare cerut de microprocesor este gsit n memoria cache, operaia respectiv se numete cache hit, n timp ce n caz contrar avem de-a face cu un cache miss. n acest din urm caz un bloc de dimensiune fix de date ce conine valorile necesare sunt extrase din memoria principal i introduse n memoria cache. De regul, n funcionarea memoriei cache fenomenul de cache miss apare destul de rar, datorit unei reguli de localizare temporal a datelor n calculator, regul care spune c ultimile date utilizate au o probabilitate foarte mare s fie accesate din nou n curnd, deci aceste date sunt plasate n memoria cache, de unde pot fi accesate foarte rapid. Timpul de rspuns pentru un astfel de cache miss depinde att de latena memoriei ct i de limea de band a magistralei ce determin timpul n care va fi citit ntregul bloc de date. Un cache miss administrat hardware va determina de regul o pauz n funcionarea UCP, pn n momentul n care sunt disponibile datele. Unele compilatoare administreaz acest proces prin inserarea unor instruciuni speciale care stimuleaz controlorul de memorie cache s 153

Memoria i magistralele de sistem

anticipeze urmtoarele instruciuni ce vor fi executate. O dat cu introducerea unor noi valori n memoria cache, trebuie fcut o decizie legat de scoaterea altor valori din aceeai memorie, pentru a elibera spaiul. Poate aprea astfel o nou ntrziere rezultat din scrierea valorii napoi n memoria principal a tuturor valorilor care au fost modificate n timpul stocrii lor n memoria cache. Diferena ntre memoria cache de nivel 1 (level 1 cache) i memoria cache de nivel 2 (level 2 cache) este aceea a localizrii: dac memoria cache de nivel 1 (sau memorie cache primar) este situat direct pe cipul microprocesorului, memoria cache de nivel 2 (denumit i memorie cache secundar) este situat de regul pe placa de baz, ct mai aproape de microprocesor.

Fig. 4.3 Memoria i controlorul de memorie cache

Datorit plasrii direct pe cipul microprocesorului, memoria cache de nivel 1 are dimensiuni mai mici dect cea de nivel 2. De exemplu, la Pentium, memoria cache de nivel 1 are 16 KB, mprit n dou jumti, 8 KB pentru instruciuni i 8 KB pentru date. Aceast difereniere ntre instruciuni i date (este vorba despre aa numit Arhitectur Harvard) 154

Elemente de arhitectur a sistemelor de calcul i operare

permite aducerea simultan din memorie a instruciunilor i accesul la variabile dac magistrala de sistem este mprit, de asemenea, n magistral de date i magistral de instruciuni. Cu ajutorul unui decodor pipeline, magistralele duale pot preveni blocrile aprute n momentul n care trebuie transferate mai multe valori n acelai timp. Acest lucru este posibil pentru memoria cache primar, nu i pentru memoria cache secundar. Memoria cache secundar are dimensiuni mai mari (de regul aceasta are valori de 256 KB, 512 KB, 1MB sau chiar 2 MB), fiind localizat pe placa de baz n apropierea procesorului, dar are i viteze mai sczute de operare, datorit ntrzierilor aprute ca urmare a semnalelor trimise de-a lungul magistralei de sistem. Pentru a mbunti aceast situaie, la Pentium II Intel a nglobat memoria cache de nivel 2 n cadrul cartuului denumit Slot1/Slot2, la un loc cu microprocesorul. Acest cartu include o magistral local dedicat procesorului i memoriei cache de nivel 2, ce opereaz la 200 MHz, adic dublu fa de magistrala de sistem a plcii de baz ce ruleaz la 100 MHz.

Fig. 4.4 Execuia concurenial a mai multor programe ncrcate n memorie

155

Memoria i magistralele de sistem

4.3 Regiuni i partiii de memorie Sistemele de operare multitasking presupun execuia concurenial (n acelai interval de timp) a mai multor programe. Majoritatea sistemelor de operare de astzi sunt sisteme de operare multitasking (doar vechiul sistem de operare DOS a rmas un exemplu de sistem monotasking) n care mai multe programe sunt ncrcate n memorie i rulate n aceeai perioad de timp (figura 4.4). Un program poate fi ntr-una din cele dou stri: execuie sau ateptare. Observm din desen c n timp ce programul 1 este n stare de ateptare (poate atepta venirea datelor din memorie), procesorul ncepe s ruleze programul 2, iar n timp ce programul 2 este n stare de ateptare, procesorul i concentreaz atenia asupra prorgamului 3. De regul acest procedeu de execuie concurenial este utilizat de toate sistemele de operare multitasking, lucru care ns implic un management al memoriei adecvat. Cea mai simpl abordare a administrrii memoriei pentru mai multe programe ce ruleaz concurenial este administrarea memoriei folosind partiii fixe de memorie, caz n care spaiul de memorie disponibil se mparte n partiii de dimensiune fix, fiecare dintre aceste partiii stocnd cte un program. Dimensiunea partiiilor este stabilit o dat cu iniializarea sistemului de operare , astfel nct decizia de alocare a memoriei pentru un program se face nainte ca acel program s aib efectiv nevoie de acel spaiu de memorie. Din cauz c dimensiunea alocat trebuie s fie suficient de mare pentru ca cel mai mare dintre programe s poat ncpea n memorie, administrarea memoriei folosind partiii fixe face risip de spaiu de memorie, dar are avantajul c este o metod foarte simpl.

Fig. 4.5 Fragmentarea memoriei

156

Elemente de arhitectur a sistemelor de calcul i operare

O alt metod de administrare a memoriei o reprezint administrarea dinamic a memoriei, caz n care spaiul tranzient de memorie este tratat ca un ntreg. Atunci cnd sistemul de operare decide s ncarce un anumit program n memorie, se aloc o regiune de memorie liber din acest ntreg, suficient pentru ca acel program s ruleze. Din cauz c programul respectiv primete doar spaiul de care are nevoie, risipa de memorie este mult mai mic. Administrarea dinamic a memoriei nu rezolv n ntregime problema spaiului de memorie neutilizat; s presupunem c un program de 1024 KB tocmai i-a ncheiat execuia i sistemul de operare nu gsete nici un alt program de 1024 KB pentru ncrcare n memorie, n schimb ncarc dou programe, unul de 324 KB i unul de 600 KB (figura 4.5). n acest caz rmn, totui, 100 KB de memorie nefolosit, dac nu exist programe mai mici pentru a fi ncrcate n aceast zon. Apar astfel mici zone de memorie neutilizate, crend o problem de fragmentare.

Fig. 4.6 Segmentarea memoriei

157

Memoria i magistralele de sistem

4.3.1 Segmentarea Motivul pentru care apare problema fragmentrii memoriei este acela c att administrarea memoriei folosind partiii fixe, ct i administrarea dinamic a memoriei presupun c programul trebuie s fie ncrcat n zone continue (locaii adiacente) de memorie. Prin segmentare, un program poate fi mprit n segmente independente i stocat n memorie n zone necontinue (figura 4.6). Segmentarea memoriei implic un pas n plus n mecanismul de translatare a adreselor de memorie. Atunci cnd un program este ncrcat n memorie, sistemul de operare construiete o tabel de segmente n care sunt memorate adresele absolute pentru fiecare segment de program (pentru fiecare program activ exist un tabel de segmente de memorie). n continuare, cnd sistemul de operare lanseaz n execuie un program, va ncrca adresa din tabelul de segmente ntr-un registru special.

Fig. 4.7 Procedeul de translatare dinamic a adreselor

158

Elemente de arhitectur a sistemelor de calcul i operare

n timpul execuiei programului, adresele trebuie translatate din adrese relative n adrese absolute deoarce programatorii pot scrie acelai cod de program iar compilatoarele vor genera adresa complet, de tipul adresa de baz + deplasament. Dup ce instruciunea este adus din memorie (etapa fetch), unitatea de control a instruciunilor dezvolt fiecare adres a operanzilor prin adugarea la registrul de baz (ce conine adresa de baz) a adresei de deplasament. n mod normal, acest lucru ne conduce la adresa absolut. n cazul segmentrii, adresa expandat va conine o adres compus din dou pri: un numr de segment i un deplasament (figura 4.7). Conversia hardware a adresei segment/deplasament n adres absolut se face n felul urmtor: Se verific registrul special pentru a gsi tabela de segmente a programului; Din adresa expandat se extrage numrul de segment; Numrul de segment se folosete pentru a cuta tabela de segmente a programului; Se gsete adresa absolut a segmentului; Se adaug adresa de deplasament la adresa absolut a segmentului pentru a obine adresa absolut. Acest proces de translatare se numete translatarea dinamic a adreselor. 4.3.2 Paginarea Segmentele de program ncrcate n memorie pot avea dimensiuni variabile, de aceea s-a recurs la soluia paginrii, adic a mpririi unui program n pagini de lungime fix. Dimensiunile paginilor sunt de dimensiune mic (2KB sau 4 KB, spre exemplu) pentru a eficientiza ncrcarea acestora n memorie. Ca i n cazul segmentelor, paginile de program pot fi ncrcate n zone ne-continue de memorie. n acest caz, adresele sunt formate din dou pri: un numr de pagin n partea cea mai semnificativ i un deplasament pe poziiile biilor cel mai puin semnificativi. De asemenea, adresele sunt translatate n mod dinamic n timpul execuiei programului. Atunci cnd o instruciune este adus din memorie, adresele de tipul baz+deplasament sunt expandate la adrese 159

Memoria i magistralele de sistem

absolute n hardware, apoi se caut adresa de nceput a paginii respective din tabela de pagini (asemntoare cu tabela de segmente) i apoi se adaug deplasamentul, exact ca n cazul segmentrii (figura 4.8).

Fig. 4.8 Translatarea adresei n cazul paginrii

4.3.3 Segmentare i paginare Combinnd segmentarea cu paginarea, rezult un procedeu n care adresele de memorie sunt compuse dintr-un numr de segment, un numr de pagin n cadrul acelui segment i un deplasament n cadrul paginii. Dup ce unitatea de control expandeaz adresa relativ, ncepe translatarea dinamic a adresei. n primul rnd se extrage adresa segmentului programului, apoi din tabela de segmente se extrage adresa tabelei de pagini pentru segmentul respectiv. n final, din tabela de pagini a segmentului se obine adresa real care adunat cu deplasamentul formeaz adresa absolut (figura 4.9). De regul, administrarea memoriei este un proces complicat de care trebuie s aib grij sistemul de operare. Coninutul memoriei RAM se 160

Elemente de arhitectur a sistemelor de calcul i operare

schimb permanent; deoarece exist multe programe care partajeaz aceast memorie, este posibil uneori ca unul dintre programe s altereze coninutul de memorie alocat altui program, astfel nct programele active din memorie trebuie s fie protejate unele de altele. Aceasta este sarcina sistemului de operare, astfel nct dac un program ncearc s modifice sau pur i simplu s acceseze spaiul de memorie alocat altui program, mecanismul de protecie a memoriei sistemului de operare va interveni i poate ntrerupe acel program.

Fig. 4.9 Translatarea adreselor n cazul paginrii i segmentrii

4.4 Modaliti de stocare a datelor n memorie Stocarea Little Endian vs. Big Endian Modalitatea de aranjare a datelor (reprezentate pe mai muli octei) n memoria calculatorului nu este aceeai pentru toate tipurile de microprocesoare. De fapt, cei doi titani ai produciei de cipuri microprocesoare, Intel i Motorola, au stabilit convenii diferite de reprezentare a datelor. Iniial, Intel a stabilit o convenie de reprezentare a datelor de dimensiune de 16 bii (2 octei) prin mprirea n doi octei i stocarea n memorie nti a octetului cel mai puin semnificativ (denumit i 161

Memoria i magistralele de sistem

CMPSO cel mai puin semnificativ octet) i apoi a octetului CMSO cel mai semnificativ octet. Aceast convenie a luat numele de Little-Endian. Mai trziu, Motorola a dorit s schimbe aceast modalitate de stocare a datelor pe 16 bii, raionnd n mod invers: se stocheaz mai nti octetul cel mai semnificativ i dup aceea octetul mai puin semnificativ. Aceast nou convenie a fost denumit Big-Endian. Aceast convenie are avantajul c reprezentarea datelor n memorie este identic, de fapt, cu aceea a scrierii obinuite a numerelor, numit i ordinea de tiprire (print order).

Fig. 4.10 Reprezentarea Little-Endian la Intel Pentium

Cele dou convenii diferite de stocare a datelor sunt prezentate n figurile 4.10 i 4.11. Figura 4.10 prezint coninutul memoriei (aa cum apare nfiat de un program depanator) n cazul unui procesor Intel Pentium. Poriunea de memorie vizualizat conine trei vectori de ntregi cu date de tip byte (reprezentate pe un singur octet), word (reprezentate pe doi octei) i int (reprezentate pe patru octei). Declaraiile n C corespunztoare celor trei vectori sunt urmtoarele:
unsigned char r1[]={1,2,3,4,5,6,7,8,9,10,100,101, 102,103,255} unsigned short r2[]={1,2,3,4,5,100,65533,65534,65535} unsigned int r3[]={1,2,3,100,255,4096,12500000}

162

Elemente de arhitectur a sistemelor de calcul i operare

n figura 4.11 este prezentat coninutul memoriei pentru aceeai trei vectori de ntregi de data aceasta n cazul unui microprocesor Motorola 68030. n cele dou figuri, fiecare octet apare n reprezentare hexazecimal (ca o pereche de dou cifre hexa, avnd n vedere c o cifr hexa se reprezint pe 4 bii). Drept urmare, valoarea 02 este n binar 0000 0010 iar AF este, n binar, 1010 1111.

Fig. 4.11 Reprezentarea Big-Endian la Motorola 68030

Din analiza celor dou tabele observm c ntregii reprezentai pe un octet (tipul char) au aceeai reprezentare n ambele cazuri (Intel i Motorola). ntregii pe 16 bii (2 octei tipul short) au cei doi octei inversai, la fel ca i n cazul ntregilor pe 32 de bii (4 octei tipul int). n concluzie, observm c dac toi vectorii ar fi de tipul unsigned char (pe un singur octet), nu ar fi aprut nici o diferen sau problem de ordonare. Citirea unui fiier stocat prin folosirea conveniei Little-Endian pe un calculator ce utilizeaz Big-Endian va fi ns imposibil. De asemenea, atunci cnd se transfer fiiere ce conin date numerice de pe un PC pe un calculator UNIX poate aprea problema interschimbrii octeilor; n acest sens, pe UNIX exist un program intitulat dd care poate face conversia ntre formatele Little-Endian i Big-Endian. De exemplu, pentru a transfera fiiere de pe un calculator PC pe un calculator Sun, ele trebuiesc convertite. Sun utilizeaz convenia de la Motorola (BigEndian) n timp ce Microsoft folosete convenia Intel (Little-Endian). 163

Memoria i magistralele de sistem

O alt diferen apare, de regul, la transferul unui fiier text de pe un calculator UNIX pe un PC sau invers. Acest lucru se ntmpl datorit caracterului utilizat pentru marcarea sfritului de linie. Aplicaiile de pe calculatoarele PC folosesc caracterul ^M (CR Carriage Return Retur de car) n timp ce aplicaiile de pe UNIX utilizeaz caracterul ^J (LF Line Feed Linie nou). n figura 4.12 este prezentat un alt exemplu pe 64 de bii (8 octei). Dac la Motorola reprezentarea n memorie este reprezentarea print order (cazul a), la Intel cei 8 octei sunt scrii n memorie n ordine invers dect la Motorola (cazul b).

Fig. 4.12 Reprezentri Big-Endian i Little Endian pe 64 de bii

4.5 Memoria virtual 4.5.1 Introducere Memoria virtual semnific (figura 4.13) separarea conceptual a memoriei logice disponibile pentru aplicaii fa de memoria fizic (real). Prin intermediul acestui concept putem avea o memorie virtual (disponibil pentru aplicaii) de dimensiuni mari chiar cu o memorie fizic de dimensiuni reduse. Conceptul de memorie virtual i are originile de pe vremea n care memoria calculatorului era foarte scump i nu prea rapid. Mecanismul memoriei virtuale oferea o extindere convenabil a memoriei prin utilizarea hard-diskului pe post de memorie. Spaiul de pe hard-disk rezervat n acest scop este cunoscut sub denumirea de spaiu swap i este administrat de ctre 164

Elemente de arhitectur a sistemelor de calcul i operare

sistemul de operare, n timp ce programatorii nu trebuie s se preocupe de acest lucru, el fiind administrat de ctre serviciile de sistem pentru administrarea memoriei virtuale. Fie c este vorba despre una dintre variantele de Windows 95/98, NT, 2000, XP sau despre UNIX i Linux, toate aceste sisteme de operare implementeaz mecanismul memoriei virtuale. n continuare vom prezenta mai n detaliu cum se realizeaz acest proces.

Fig. 4.13 Ilustrarea conceptului de memorie virtual

nainte ca aceast tehnic s devin foarte cunoscut i larg implementat, singura opiune pentru programatori (atunci cnd programele deveneau prea mari ca s ncap n memoria principal) era aceea de a mpri programele n mai multe segmente legate ntre ele. Primul dintre aceste segmente era ncrcat n memorie de pe disc i i ncepea execuia, iar la terminare comanda ncrcarea celui de-al doilea segment n memorie, moment n care cel de-al doilea segment prelua controlul. Procedeul se continua pn cnd toate segmentele programului erau executate. n zilele noastre ns, discurile magnetice (hard-diskurile) sunt componente periferice de baz ale calculatoarelor care influeneaz modalitatea de procesare a datelor de ctre aplicaii. Majoritatea sistemelor personale i a sistemelor de calcul profesionale utilizeaz hard-diskuri pentru stocarea datelor, acest lucru fcndu-se la un avantajos raport pre/performan, sau, mai bine spus, pre/capacitate de stocare. Cu toate dezvoltrile rapide din domeniul memoriilor bazate pe semiconductori,

165

Memoria i magistralele de sistem

productorii de hard-diskuri au reuit ntotdeauna s in pasul i s fie aib preuri fr concuren cnd este vorba despre preul pe octet stocat. Dup cum i spune i numele, memoria virtual nu este real; pentru programator sau pentru utilizator, aceast memorie virtual acioneaz precum memoria obinuit, dar nu este memorie real. Memoria virtual este format, de fapt, att din memorie real, obinuit, ct i dintr-o poriune de spaiu de pe hard-disk (din spaiul de swap). Dup cum spuneam, sistemele de operare moderne ce nglobeaz sisteme de administrare a memoriei virtuale permit programatorilor s scrie programe ca i cum aceste programe sunt singurele ce ruleaz n sistem i nu interacioneaz cu nici un alt program. Acest lucru de o importan deosebit a fost obinut pentru prima dat de sistemele de operare multiuser (ce permit folosirea simultan a sistemului de ctre mai muli utilizatori) care interschimbau programe ntregi n/din memorie dup cum era necesar. O astfel de abordare greoaie ns ducea la o utilizare total ineficient a resurselor i, n plus, era mare consumatoare de timp. Urmtoarea abordare a condus la mprirea programelor n segmente, ceva ntr-un mod similar cu segmentele de cod, date i stiv pe care le ntlnim ntr-un program scris n limbaj de asamblare pentru procesoarele din familia Intel x86. Posibilitatea interschimbrii doar a segmentelor i nu a ntregului program n/din memorie a redus consumul de timp i de resurse, meninnd iluzia de singur utilizator al sistemului. Segmentele de program pot fi amplasate oriunde n memoria calculatorului, avnd n vedere c acestea sunt localizate prin intermediul regitrilor de segment. Aceti regitri de segment speciali sunt astfel setai nct s fac referire la adresa primei locaii a unui segment atunci cnd segmentul respectiv este ncrcat n memorie. Din punct de vedere al securitii aplicaiilor acest model este eficient, deoarece implementeaz n hardware o schem de securitate a adresrii pe baz de segmente de memorie. Datorit ns a dimensiunii variabile a segmentelor de memorie, administratorul de memorie are dificulti n reutilizarea eficient a memoriei (apar problemele de fragmentare despre care am mai discutat). n acest sens, pentru a elimina problema aprut n cazul segmentrii, schemele eficiente de administrare a memoriei virtuale utilizeaz mecanismul paginrii, cu pagini de memorie de lungime fix (2 KB sau 4 KB). O dat cu dezvoltarea crescnd a microprocesoarelor i scderea cu mult a preului memoriei RAM, calculatoarele personale puteau renuna la conceptul de memorie virtual, dar, oarecum surprinztor, memoria virtual este prezent pe toate calculatoarele existente astzi, de la simple 166

Elemente de arhitectur a sistemelor de calcul i operare

calculatoare personale pn la supercomputere. Aceast situaie este parial din cauza caracteristicilor de protecie i securitate pe care sistemele de operare ce utilizeaz memoria virtual le ofer. Pe lng administrarea interschimbului de pagini ntre memoria real i spaiul de swap de pe harddisk, schema de segmentare a memoriei ofer i izolarea proceselor i datelor asociate, deci protecie. Datorit faptului c memoria virtual permite programatorilor s dezvolte programe fr grija ca acestea s ncap n memoria principal, au fost dezvoltate sisteme mai mari, n special n domenii precum aplicaiile grafice i comunicaii. De asemenea, masive de date de dimensiuni enorme pot fi declarate, fr s se in seama de dimensiunile memoriei RAM, fapt ce a condus la dezvoltarea sistemelor de gestiune a bazelor de date. Un sistem de administrare a memoriei virtuale modern, cum ar fi cel al sistemelor de operare UNIX sau Windows NT acioneaz prin mprirea memoriei principale n cadre (frames) de lungime fix, tipic de 4 KB.

Fig. 4.14 Unitatea de management a memoriei este situat ntre UCP i memoria principal

167

Memoria i magistralele de sistem

Programul executabil este divizat n acelai mod n buci formate din astfel de cadre, denumite pagini. Procesorul folosete adrese virtuale ce sunt translatate n adrese fizice ce acceseaz memoria principal. Acest procedeu se numete maparea adreselor sau translatarea adreselor (translatare asemntoare cu cea de la procedurile de segmentare i paginare a memoriei). Atunci cnd un program trebuie s ruleze, nu sunt ncrcate toate paginile n memorie, ci doar cele necesare pentru nceputul execuiei programului. Celelalte pagini sunt copiate n spaiul de swap de pe hard-disk dedicat memoriei virtuale. Procedeul de copiere a unei pagini din spaiul de swap de pe hard-disk i de eliberare a unui cadru din memorie poart numele de swapping (interschimbare). n cadrul unui program se poate face o referire la o variabil sub forma unei adrese logice pe 32 de bii. ntr-un sistem ce utilizeaz pagini de memorie de 4 KB, cei mai puin semnificativi 12 bii reprezint adresa relativ la pagin, n timp cei 20 de bii mai semnificativi reprezint numrul paginii. Tabela de pagini asigur prin mecanismul paginrii deducerea adresei fizice conform mecanismului paginrii descris anterior.

k
Fig. 4.15 Memoria virtual cererea de pagini

Cu toate c nu toate programele pot fi ncrcate n acelai spaiu de adrese, mecanismul memoriei virtuale d iluzia programatorilor c este posibil acest lucru, avnd n vedere c programele surs compilate s ruleze 168

Elemente de arhitectur a sistemelor de calcul i operare

multitasking presupun c adresa de nceput a codului este totdeauna 0000. Este ns evident c aceast adres nu este adresa fizic real a memoriei, ci doar fenomenul de stabilire a corespondenei ntre adresa logic i cea fizic rezolv aceast problem prin repoziionarea paginilor de ctre sistemul de operare. Din cauza faptului c att poziia ct i secvena paginilor de program nu pot fi precizate nainte ca ele s fie ncrcate n cadrele de memorie (la momentul compilrii i editrii de legturi), sistemul de operare folosete un translator de adrese. Acest translator se numete Unitatea de management a memoriei i este poziionat ntre UCP i memorie, incluznd memoria cache (figura 4.14). 4.5.2 Cererea de pagini Pe parcursul execuiei programului, va aprea un moment n care ciclul fetch-decode-execute va necesita o instruciune dintr-o pagin de memorie. Acest proces de cerere se numete chiar cerere de pagin (demand paging figura 4.15). Sunt posibile dou cazuri: a) Pagina solicitat este rezident n memorie. n acest caz nu este nici o problem, instruciunea respectiv este executat. b) Pagina solicitat nu se afl n memorie (acest fenomen poart numele de page-fault). n momentul apariiei unei page-fault, se iniiaz o ntrerupere ctre sistemul de operare care intervine pentru a ncrca pagina respectiv din spaiul de swap. De asemenea, dac nu exist nici un cadru liber n memoria principal, mecanismul de administrare a memoriei virtuale trebuie s ia o decizie pentru a elibera un cadru din memorie pentru a copia paginia de pe disc n memorie.

169

Memoria i magistralele de sistem

Fig. 4.16 Bitul valid/invalid din tabela de pagini

4.5.3 Tratarea fenomenului de page-fault S analizm n continuare mai detaliu mecanismul de funcionare a memoriei virtuale n cazul apariiei unui page-fault. n primul rnd regula spune c cererile de pagini din memoria extern (page-fault) nu se produc dect rareori. Tabela de pagini necesit prezena unui bit rezident care ne arat dac pagina respectiv este sau nu n memorie. Uneori se utilizeaz termenul valid pentru a indica prezena paginii n memorie (figura 4.16). O pagin invalid este astfel o pagin nerezident sau care are o adres ilegal. Cu toate acestea, mai logic este s avem doi bii n tabela de pagini: unul care s indice faptul c pagina este valid iar al doilea s arate dac pagina este rezident sau nu n memorie (figura 4.17).

170

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 4.17 Bitul rezident i bitul valid din tabela de pagini

Totdeauna cnd apare un fenomen page-fault, se pune problema administrrii (rezolvrii) acestuia. n general, paii care se urmeaz sunt (figura 4.18): Procesul necesit o pagin ce nu este rezident n memorie; Se verific n tabela de pagini dac referina de memorie este valid sau nu; Dac referina este valid dar pagina nu este rezident, se ncearc obinerea acesteia din memoria secundar; Se caut i se aloc un cadru liber (o pagin de memorie fizic neutilizat pn n prezent; uneori este necesar eliberarea unei pagini de memorie); Se planific o operaie de acces la disc pentru a se citi acea pagin din memoria secundar n cadrul nou alocat; Dup scrierea paginii n memorie se modific tabela de pagini; pagina este acum rezident n memorie; Se repornete instruciunea ce a generat page-fault.

171

Memoria i magistralele de sistem

Fig. 4.18 Paii administrrii unui page-fault

Observm n procesul de administrare a unui page-fault prezentat mai sus c n cazul n care nu exist nici un cadru liber (memorie supraalocat) trebuie s renunm la ceva deja existent n memorie. Supraalocarea apare atunci cnd programele au nevoie de mai multe pagini de memorie dect cele existente fizic. Maniera de abordare i rezolvare a problemei cerceteaz dac nici o pagin fizic nu este liber, apoi se caut una care nu este utilizat la momentul respectiv i se elibereaz, urmrind urmtorii pai (figura 4.19): 1. Se caut pagina pe disc; 2. Se caut un cadru liber a) Dac exist, se folosete; b) Altfel, se selecteaz o pagin victim; c) Se scrie pagina victim pe disc; 3. Se citete noua pagin n cadrul eliberat. Se modific tabela de pagini; 172

Elemente de arhitectur a sistemelor de calcul i operare

4. Se repornete procesul.

Fig. 4.19 Funcionarea mecanismului de nlocuire a paginilor

4.5.4 Algoritmi de nlocuire a paginilor Pentru ca mecanismul de nlocuire a paginilor s funcioneze ct mai eficient, s-a ncercat s utilizeze diveri algoritmi pentru acest proces, astfel nct s se minimizeze numrul de page-faults. Prezentm n continuare trei algoritmi cunoscui de nlocuire a paginilor: algoritmul FIFO, algoritmul de nlocuire optim i algoritmul cea mai puin recent folosit pagin. 4.5.4.1 Algoritmul FIFO Acest algoritm este foarte uor de implementat din punct de vedere conceptual; el se bazeaz pe mecanismul cozii, (FIFO - First In / First Out) adic primul intrat este primul ieit. Astfel, prima pagin intrat n memorie va fi i prima eliberat din memorie. Considernd secvena urmtoare de cerere de pagini: 1,2,3,4,1,2,5,1,2,3,4,5 conform algoritmului FIFO (figura 4.20) vor aprea 10 page-faults. Mecanismul funcionrii memoriei virtuale presupune, desigur, i o schem de protecie ce restricioneaz accesul proceselor (programelor) la blocuri de memorie ce aparin altor procese (programe). Majoritatea formelor de memorie virtual reduc, de asemenea, timpul de pornire a unui program, deoarece nu tot codul sau toate datele trebuie s fie deja n memoria fizic nainte ca programul s nceap. 173

Memoria i magistralele de sistem

Fig. 4.20 Algoritmul FIFO de nlocuire a paginilor

4.5.4.2 Algoritmul de nlocuire optim Acest algoritm reprezint o politic de nlocuire a paginilor care au cea mai mic rat de page-fault i const n nlocuirea paginii care nu va fi utilizat cea mai lung perioad de timp. Cu toate c algoritmul ar face o nlocuire optim, este imposibil de realizat n practic. Pe baza aceluiai exemplu de ir de pagini, n acest caz se obin doar 6 page-faults (figura 4.21).

4.5.4.3 Algoritmul LRU (Least Recently Used) Algoritmul LRU, dup cum i spune i numele, nlocuiete pagina cel mai puin recent folosit. Cu alte cuvinte, se nlocuiete pagina care nu a fost utilizat pentru cea mai mare perioad de timp. n general s-a observat c rezultatele sunt bune, dificultatea apare ns la implementare. Exist dou variante mai cunoscute de implementare: una care aplic un aa numit time-stamp pentru pagini, care nregistreaz ultima utilizare i alta care utilizeaz o stiv de pagini, n care se scot paginile utilizate i se introduc n vrful stivei. Ambele metode necesit faciliti hardware (trebuie fcut reactualizare dup fiecare instruciune), de aceea este rar utilizat n practic. Considernd cazul aceluiai exemplu, conform algoritmului LRU se obin 8 page-faults (figura 4.22). 174

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 4.21 Algoritmul de nlocuire optim a paginilor

Fig. 4.22 Algoritmul LRU de nlocuire a paginilor

4.5.5 Suprapuneri

Nu ns partajarea ntre procese sau ntre programe este adevratul motiv pentru care a fost inventat mecanismul memoriei virtuale. Dac un program devine prea mare pentru memoria fizic, este sarcina programatorului s l fac s ncap n ea (caz n care apar aa-numitele suprapuneri - overlays). Ideea acestor suprapuneri a aprut demult, n timpul celei de-a doua generaii de calculatoare, atunci cnd disponibilul de memorie era foarte limitat. Problema era atunci cum s faci s ncap un 175

Memoria i magistralele de sistem

program de 32 KB ntr-un spaiu de memorie de 16 KB. Cu toate c astfel de probleme nu mai apar, suprapunerile sunt nc utilizate. Ideea de baz este aceea de a mpri programul n mai multe module logice independente. S considerm exemplul unui program cu 6 module de cte 64 KB. Modulul 1 conine logica de control principal i datele comune ntregului program. Modulul 2 valideaz datele de intrare. Modulul 3 este apelat n cazurile de eroare de modulul 2. Modulul 4 genereaz unele calcule intermediare. Modulul 5 genereaza calculele pe anumite cazuri speciale, iar modulul 6 afiseaza rezultatele, deci este nevoie de el doar n final. n mod evident, pentru ca programul s funcioneze, modulul 1 trebuie s rmn rezident permanent n memorie.

Fig. 4.23 Fereastra System Properties Performance pentru Windows Me/2000

176

Elemente de arhitectur a sistemelor de calcul i operare

Dac nu apar erori la intrare, nu este nevoie de modulul 3. Dac apar erori, vom avea nevoie de modulul 3, dar nu mai avem nevoie de modulele 4, 5 i 6. n acest mod, atunci cnd programul i ncepe execuia, n memorie se vor afla doar modulele 1i 2. Dac apare vreo eroare de intrare, modulul 3 se suprapune peste modulul 2, rmnnd n memorie pn cnd este citit un nou set de date, cnd este suprapus peste el n memorie modulul 2. Dac sunt introduse date corecte i nu apar erori, modulul 4 este suprapus peste modulul 2. n continuare, dac apare un caz special, este tratat de modulul 5 care va fi suprapus peste modulul 4. n final, pentru afiarea rezultatelor se va ncrca n memorie modulul 6, suprapus peste modulul 4 sau 5 (n funcie de cazul n care ne aflm).

Fig. 4.24 Fereastra de setare a memoriei virtuale n Windows Me/2000

4.5.6 Setarea memoriei virtuale Memoria virtual poate fi setat de ctre utilizator n mod diferit, n funcie de sistemul de operare utilizat. De exemplu, n Windows stabilirea parametrilor memoriei virtuale se face din System Properties Virtual Memory (figura 4.23). Exist posibilitatea alegerii Performance 177

Memoria i magistralele de sistem

administrrii automate a dimensiunii memoriei virtuale de ctre sistem (opiunea <Let Windows manage my virtual memory settings (Recommended)>) (figura 4.24) sau specificarea explicit a dimensiunii spaiului de memorie virtual (opiunea <Let me specify my own virtual memory settings>). n acest din urm caz se poate specifica spaiul de pe hard-disk pe care dorim s l rezervm pentru memoria virtual (spre exemplu, dac dorim s avem un spaiu de 256 MB de memorie, vom introduce aceast valoare n subopiunea Hard-disk:. Observaie: dac se alege aceast setare, pentru performane mai bune este indicat ca dimensiunile Minim: i Maxim: s fie setate tot la aceeai valoare n cazul nostru 256 MB).

Fig. 4.25 Placa de baz a unui calculator

4.6 Magistrale de sistem Arhitecturile pe baza crora sunt construite calculatoarele nu sunt identice pentru toate sistemele de calcul. Proiectanii de calculatoare utilizeaz termenul de arhitectur pentru a descrie modalitatea de interaciune ntre componentele calculatorului. Una din componentele de 178

Elemente de arhitectur a sistemelor de calcul i operare

baz ale unei arhitecturi o reprezint mecanismul prin care se stabilesc legturile dintre componentele interne ale calculatorului. De regul, mecanismul prin care se realizeaz transferurile de date (fie ele instruciuni sau programe), semnalele de control, ntreruperi, etc. este cunoscut generic sub numele de magistral (bus). Din punct de vedere arhitectural exist dou tipuri de magistrale: arhitectura monomagistral (single-bus architecture) i arhitectura multimagistral (multiple-bus architecture).

Fig. 4.26 O reprezentare schematic a magistralei i a sloturilor unde pot fi adugate diferite componente

4.6.1 Arhitectura monomagistral Majoritatea calculatoarelor sunt construite pe suportul unei plci de baz (figura 4.25), un cadru metalic ce conine o serie de locae (sloturi) aflate n legtur, prin intermediul magistralei, cu procesorul (figura 4.26). Cipurile de memorie pot fi adugate plcii de baz prin introducerea acestora n locaii speciale. De asemenea, pe placa de baz mai pot fi inserate diverse plci adiionale pentru conectarea dispozitivelor periferice de intrare/ieire (spre exemplu, plci de sunet, plci de captur video, plci de modem etc.) sau echipamente de stocare extern (hard-diskuri, floppy diskuri etc.). Deoarece toate aceste componente partajeaz o singur 179

Memoria i magistralele de sistem

magistral comun, acest model se numete arhitectur monomagistral. Toate tipurile de comunicaii ce apar ntre componente au loc pe aceast magistral (figura 4.27). Interfee de conexiune. Semnalele electrice de control pentru dispozitivele periferice sunt diferite ntre ele (difer ntre imprimant i scanner, sau modem, etc.), de aceea fiecare dispozitiv periferic are propria interfa de conexiune. O component a interfeei interacioneaz cu calculatorul folosind diferite coduri interne. Cealalt component comunic cu echipamentul respectiv, pe baza unui limbaj propriu. Funcia de baz a interfeei este aceea de asigura translatarea mesajelor ntre calculator i dispozitivul periferic.

Fig. 4.27 Magistrala de sistem i diferite interfee

180

Elemente de arhitectur a sistemelor de calcul i operare

Canale i uniti de control. Calculatoarele personale (microcomputerele, cum se mai numesc) sunt destinate n general lucrului unui singur utilizator, de aceea arhitectura mono-magistral este suficient pentru ca operaiunile pe calculator s decurg n condiii bune. Un calculator foarte puternic, de tipul mainframe, ar fi mult prea puternic i mult prea costisitor pentru a fi dedicat exploatrii de ctre un singur utilizator. Calculatoarele de tip mainframe ofer, de regul, suport pentru mai muli utilizatori n mod concurent. Un ciclu de main pentru un calculator mainframe este identic cu acela al unui micro-calculator n sensul n care procesorul desfoar aceeai activitate de baz: aduce instruciunile din memorie i le execut pe rnd. Un element cheie n administrarea mai multor utilizatori este acela de a elibera procesorul de responsabilitatea controlului dispozitivelor de intrare/ieire. Controlul permanent al dispozitivelor de intrare/ieire implic o serie de funcii logice de selectare a drumului pe care s curg datele, de numrare a caracterelor sau de calcul a adreselor de memorie. Deoarece procesorul este singura surs de control a acestor operaii pe un sistem microcomputer, procesorul trebuie s se implice n mod direct asupra fiecrei operaii de intrare/ieire. n timp ce controleaz intrarea/ieirea, procesorul nu este disponibil pentru alte operaii, cum ar fi execuia instruciunilor.

n cazul computerelor mainframe, acestea predau responsabilitatea controlului operaiilor de intrare/ieire aa numitelor canale. Un canal reprezint un micro (mini)-computer cu procesor propriu ce poate asigura funciile logice de control n paralel cu procesorul principal al calculatorului. Aceast abordare face ca procesorul principal s se elibereze de operaiile de control ale dispozitivelor periferice, deci i poate concentra ntreaga atenie asupra celorlalte activiti. Unele dintre funciile de intrare/ieire sunt dependente de dispozitive; de exemplu, controlul unui bra de acces la disc este o problem de hard-disk, n timp ce o imprimant ink-jet trebuie s converteasc reprezentarea unui caracter conform unei machete de puncte de cerneal. Alte funcii (selecia unei ci pentru date, calcularea adreselor de memorie etc.) sunt ns comune tuturor dispozitivelor periferice (independente de acestea). Soluia este ca funciilor dependente de dispozitive s le fie asociate cte o unitate de control I/E. Fiecare dispozitiv fizic va avea astfel o astfel de unitate de control I/E.

181

Memoria i magistralele de sistem

4.6.2 Arhitectura multimagistral

Arhitectura monomagistral are o serie de probleme atunci cnd este vorba despre un sistem multiutilizator. Comunicarea pe canale implic spre exemplu deplasarea datelor ntre memorie i un dispozitiv periferic. Procesorul calculatorului administreaz datele n memorie. Accesul simultan la memorie pentru procesor i pentru un canal nu este posibil pe un sistem mono-magistral deoarece n acest caz se ofer o singur cale fizic de comunicaie. Accesul simultan implic existena unor ci de comunicaie distincte, astfel nct majoritatea computerelor mainframe folosesc arhitectura multimagistral. S lum cazul unui canal; n mod normal acesta este unit de procesor i de memorie prin intermediul a dou magistrale. Odat cu nceperea unei operaii de intrare/ieire, procesorul principal trimite o comand start I/E de-a lungul magistralei de comenzi ctre procesorul canalului.

Fig. 4.28 Magistrala de sistem este format din magistrala de date, magistrala de adrese i magistrala de control

Drept rspuns, canalul i asum responsabilitatea pentru continuarea operaiei de intrare/ieire, stabilind o legtur cu echipamentul periferic i controlnd transferurile de date n memorie de-a lungul magistralei de date. n acest timp, procesorul principal poate prelua alte activiti. Un canal reprezint un dispozitiv asincron independent, cu procesor propriu, ce controleaz operaiile de intrare/ieire. Deoarece canalul i calculatorul sunt dispozitive independente, procesorul principal nu are cum s tie dac operaia de intrare/ieire s-a terminat n cazul n care canalul nu l ntiineaz de acest lucru. n astfel de cazuri, n timp ce ultimul caracter din irul de date a plecat pe drumul su pe magistrala de date, procesorul canalului trimite procesorului principal un semnal, denumit ntrerupere. n
182

Elemente de arhitectur a sistemelor de calcul i operare

momentul recepionrii unei ntreruperi, procesorul tie c operaia de intrare/ieire respectiv s-a terminat i va aciona n consecin. Magistrala de sistem se mparte n mai multe submagistrale, fiecare dintre acestea fiind utilizat pentru transportul anumitor iruri de bii. n figura 4.28 putem observa trei tipuri diferite de magistrale, magistrala de date, magistrala de adrese i magistrala de control, toate acestea alctuind magistrala de sistem.

4.7 Memoria extern

Informaiile procesate cu ajutorul calculatorului trebuie s fie stocate cu ajutorul anumitor dispozitive de memorare. Acest tip de memorie se numete memorie extern i vom prezenta n continuare cteva caracteristici ale hard-discurilor, discurilor optice i unitilor de dischet.
4.7.1 Hard-diskul

Discul dur, sau hard-diskul a fost introdus pentru prima dat de ctre firma IBM sub denumirea de disc Winchester (3340), n scopul de a mbunti unitile DASD (Direct Access Storage Device) de stocare existente pn atunci. Toate datele procesate de (i n) calculator pot fi nmagazinate pe hard-diskuri pentru a fi folosite mai trziu. Atunci cnd calculatorul beneficiaz de o oprire corect, informaia este stocat pe hard disk, fiind disponibil din nou cnd repornim calculatorul. Din punct de vedere fizic, un hard disk este format din unul sau mai multe platane. Aceste platane sunt mprite n cilindri, piste i sectoare (figura 4.29). Definiiile acestor denumiri sunt prezentate n tabelul urmtor:
Platane

Sunt, de regul, discuri dintr-un oxid sau film subire nvelite cu o folie de aluminiu, mediu pe care sunt stocate efectiv datele. Cercuri concentrice existente pe fiecare platan unde sunt stocate magnetic datele.
183

Piste

Memoria i magistralele de sistem

Capete de citire/scriere

Exist, de regul, o pereche de capete de citire/scriere pe fiecare platan (unul deasupra i unul dedesubt) iar capetele de citire/scriere se deplaseaz mpreun. Fiecare pist este mprit n uniti de dimensiune mai mic denumite sectoare.Un sector are, de regul, 512 octei. La un hard-disk exist un numr care definete numrul de sectoare de pe o pist (32, 64 etc). Este axul ce trece prin mijlocul fiecrui platan. Platanele sunt rotite n jurul axului n mod asemntor nvrtirii unei roi n jurul axului. Mulimea tuturor pistelor de pe toate platanele care sunt la aceeai distan de axul de rotaie.

Sector

Ax de rotaie

Cilindru

Capetele de citire/scriere i braele de susinere sunt sigilate mpreun cu platanul pentru a fi protejate la praf sau diverse alte particule ce pot influena ulterior mecanismul extrem de fin de citire/scriere. Dimensiunea stratului de oxid de pe suprafaa platanului este de aproximativ 2,5 m iar capul de citire/scriere se deplaseaz deasupra sau dedesubtul platanului la o distan infim, de numai 0,5 m (drept comparaie, un fir de pr uman are o grosime de aproximativ 50 m). Dimensiunile actualelor hard-diskuri ajung la capaciti de ordinul zecilor de GB, dar dac ne uitm n trecut, primul PC era echipat doar cu discuri floppy iar popularitatea de mai trziu a calculatorului PC-AT s-a datorat parial i existenei hard-diskului ST506 cu care calculatorul era echipat standard. n continuare, unitile de disc IDE (Intelligent Drive Electronics) de la firma Compaq au ajuns la capaciti mult mai mari i cu performane net superioare. ntre timp i interfaa SCSI (Small Computer System Interface, pronunat ca n englezescul scuzzy) a devenit un standard unanim acceptat de ctre productorii i utilizatorii de calculatoare. Aceast interfa a fost adoptat i pentru alte dispozitive dect harddiskurile magnetice, dar preul acesteia este mult mai ridicat dect al interfeei IDE, de aceea nu vom ntlni interfee SCSI de regul, dect la
184

Elemente de arhitectur a sistemelor de calcul i operare

calculatoare de tipul serverelor, unde este nevoie de performane superioare i unde costurile nu sunt aa importante. Unele hard-diskuri au 17 sectoare pentru fiecare pist i 980 de piste pe o suprafa. n aceste condiii,capacitatea maxim de stocare (C) a unui hard-disc se poate calcula astfel:
C = Npl * Np * Ns * Ds, unde:

Npl = numrul de platane ale hard-diskului; Np = numrul de piste de pe un platan; Ns = numrul de sectoare de pe o pist; Ds = dimensiunea unui sector.

Fig. 4.29 Imagine detaliat a unui hard-disk

185

Memoria i magistralele de sistem

Accesul la informaia de pe un hard-disc se realizeaz prin specificarea controller-ului de hard-disk a numrului de cilindru, sectorul i capul de citire/scriere ce trebuie accesat.
4.7.2 Discuri optice

Modalitatea de stocare folosind dicurile optice i are nceputurile o dat cu nlocuirea discurilor de vinilin cu compact discurile din industria muzical. n momentul de fa exist mai multe tipuri i formate de compact discuri, pe care le prezentm n continuare.
4.7.2.1 CD-ROM (Compact Disk, Read Only Memory)

Reprezint un tip foarte popular de mediu de stocare movibil ce a fost conceput iniial pentru nmagazinare de date audio dar care s-a extins rapid n lumea calculatoarelor personale ca suport pentru stocarea datelor. Succesul CD-ROM-ului poate fi atribuit capacitii de stocare, duritii i, nu n ultimul rnd, preului redus. Datorit rspndirii acestui format de stocare, unitile de CD-ROM reprezint echipamente standard prezente pe majoritatea calculatorelor personale. CD-urile au un diametru de 120 mm, 1,2 mm grosime i pot stoca pn la 800 MB de informaie. Ele sunt construite dintr-un strat de plastic, un strat de metal reflectiv i un nveli de lac. CD-urile reprezint un mediu optic de stocare diferit de mediile magnetice de genul floppy disk, hard disk sau discuri Zip. O unitate CD-ROM este alctuit dintr-un motor, ansamblu laser, mecanism de rotaie i circuite electronice. Motorul unitii nvrte motorul CD-ROM-ului la viteza necesar astfel nct ansamblul laser s poat citi informaia. Ansamblul laser const dintr-un laser i lentile optice; acest ansamblu citete CD-ROM-ul n timp ce acesta se rotete. Mecanismul de rotaie este un motor ce deplaseaz lentilele n poziia corect pentru a accesa o zon anume a CD-ROM-ului. Circuitele electronice asigur transferul informaiei citite de pe CD-ROM ctre calculator prin intermediul unei magistrale. Unitile CD-ROM sunt clasificate n funcie de tipul carcasei, tipul magistralei i viteza de citire. Unitile CD-ROM pot fi montate n interiorul unui computer sau extern. Unitile interne preiau puterea de alimentare de
186

Elemente de arhitectur a sistemelor de calcul i operare

la sursa de putere a calculatorului i sunt conectate la magistrala de date a calculatorului cu ajutorul unui cablu. Unitile externe au carcasa lor proprie de protecie i propria surs de putere. Se conecteaz la calculator direct la un port extern al computerului (USB, FireWire, sau paralel) sau la un controller instalat ntr-unul dintre slot-urile de extensie ale calculatorului (de regul SCSI). O magistral este o conduct de comunicaie ntre un calculator i perifericele instalate. Conexiunile clasice interne sunt IDE i SCSI. Majoritatea plcilor de baz au controllere IDE instalate i vor recunoate automat o unitate CD-ROM instalat. Cablurile IDE de comunicaie au 40 de pini ce conecteaz unitatea de placa de baz. Unele plci ofer soluii nglobate SCSI, pe cnd majoritatea necesit un adaptor SCSI cumprat i instalat separat.
Viteze de citire

Viteza de citire a unei uniti CD-ROM determin rata de transfer a informaiei de la CD-ROM la calculator. n principiu, cu ct viteza de citire este mai mare, cu att transferul datelor este mai rapid. Viteza de citire a unei uniti CD-ROM este multiplu de 150 kb i este succedat de un x. O unitate CD-ROM cotat cu viteza de citire 1x nseamn c citete datele cu o vitez de 150 kb pe secund. Astfel, un CD-ROM 10x citete 1500kb pe secund. Fluxurile de date de pe un CD (video) pot necesita viteze de minim 12x. De asemenea, rata de citire a unui CD-ROM nu este totdeauna uniform. O unitate CD-ROM 100x poate ajunge la aceast vitez n apropiere de centrul CD-ROM i doar la viteza 40x pe pistele exterioare.
Inscripionarea CD-urilor

n momentul de fa exist dou tipuri de CD recordere:


CD-R (Compact Disk Recordable) reprezint prima tehnologie aprut. CD-urile comerciale produse n cantiti mari sunt realizate prin presare. Aceast tehnic produce adncituri pe CD ce sunt citite de razele laser. Tehnologia CD-R folosete alt strategie pentru scrierea informaiei pe CD. Mediul CD-R adaug un strat de colorant ntre stratul de aluminiu i cel de plastic. Acest strat de colorant este translucent i permite luminii s ajung la stratul de aluminiu de unde se relect napoi. Atunci cnd o unitate CD-ROM scrie informaii pe un mediu CD-R se folosete un laser pentru a arde zone n stratul colorant pentru a crea pete opace, care nu reflect 187

Memoria i magistralele de sistem

lumina. Atunci cnd CD-ul este citit, ansamblul laser recepioneaz refleciile doar din zonele translucente. Aceast suprafa transform reflecia/nonreflecia n bii de date. Sunt folosite dou lasere: unul de citire i unul de scriere. O unitate CD-R cu caracteristicile 24x/40x are o vitez de scriere de 24x i una de citire de 40x.
CD-RW (Compact Disk ReWritable). Ca i unitile CD-R, unitile CD-RW necesit utilizarea unui tip special de disc. Mediul CD-RW este diferit n sensul c include un strat modificator de stare ntre starturile de plastic i cel de aluminiu. Acesta este compus din anumite elemente chimice care i modific starea fizic la anumite temperaturi. Cnd raza laser de scriere este folosit pentru a scrie informaii pe disc, zone ale amestecului sunt topite prin supranclzire i meninute n aceast stare printr-o rcire rapid. Aceste zone topite sunt opace i nonreflective. La unitile CD-RW apare cea de-a treia raz laser: aceea de tergere. Raza de tergere este utilizat pentru a aduce napoi n stare cristalin amestecul. O unitate CD-RW cu caracteristicile 24x/12x/40x are o vitez de scriere de 24x, de rescriere de 12x i de citire de 40x.

Disponibilitatea i costul sczut al inscriptoarelor de CD i al mediilor de scriere a fcut ca muli utilizatori s poat s-i fac propriile compilaii muzicale, astfel nct, prima dat de la apariia CD-urilor audio utilizatorii au putut s-i creeze propriile CD-uri cu muzic la o calitate de nregistrare digital. Extragerea audio digital (EAD) face acest lucru posibil. EAD reprezint procedeul prin care se copiaz un CD audio pe alt mediu de stocare (variant de CD-R, CD-RW, etc.), meninnd calitatea audio n forma digital original. Aceast tehnic mai este cunoscut i sub numele de ripping, existnd o serie de aplicaii ce realizeaz acest lucru (o performant aplicaie de tip open-source fiind Cdex (figura 4.30), http://cdexos.sourceforge.net ), copiind melodii de pe un CD pe hard-diskul calculatorului i apoi pe un CD inscriptibil, putnd astfel pstra melodiile n format digital. n momentul n care un CD player citete un CD n format audio (RebBook CD), unitatea de citire trebuie s realizeze o conversie digital-analog n timp real astfel nct sunetul s poat fi auzit prin difuzoare. nainte de extragerea audio digital, sunetul trebuie s fie renregistrat i redigitizat n momentul n care utilizatorul dorete s nregistreze melodia pe un CD inscriptibil. Aceast conversie digital-analog-digital este consumatoare de resurse i pot aprea, eventual, i unele zgomote de fond. n funcie de calitatea unitii de CD-ROM, a calculatorului i a software-ului utilizat, procedeul de extragere audio
188

Elemente de arhitectur a sistemelor de calcul i operare

digital poate realiza copii digitale ale melodiilor n timp scurt. Copierea unui cntec de pe un CD audio este un proces diferit de copierea unui fiier de pe un CD-ROM. O melodie este stocat ntr-o locaie special denumit track (pist) iar unitatea de CD-ROM citete un astfel de track cu ajutorul mecanismului laser de care dispune. Informaia audio este trimis sub forma unui flux ctre unitate i din aceast cauz trebuie s existe o aplicaie special pentru procedeul EAD. Software-ul respectiv citete informaia brut a unui track sub forma unui flux i colecteaz informaiile ntr-un fiier de tip WAV. Acest fiier WAV poate fi apoi citit pe calculator i copiat napoi pe un CD inscriptibil mpreun cu late melodii pentru a crea un CD audio personalizat. Fiierele n format WAV au dimensiuni foarte mari fiind fiiere necompresate; de regul aceste fiiere sunt compresate n alte formate (fiierele au dimensiuni mult mai mici n acest caz) precum MP3 sau Ogg Vorbis cu pstrarea unei caliti decente a melodiilor.

Fig. 4.30 Fereastra aplicaiei Cdex, utilitar pentru extragere audio digital i conversie n format MP3

189

Memoria i magistralele de sistem

Formate utilizate pentru scrierea CD-urilor Firmele Sony i Phillips au conceput formatul standard pentru compact discurile audio la nceputul anilor 1980. n acest sens exist dou tipuri de standarde principale pentru CD:
Standarde Logice

Un standard logic definete modalitatea de stocare a informaiei pe disc. CD-urile i alte discuri utilizeaz o serie de piste i sectoare pentru a stoca date pe disc. Din punct de vedere logic, standardul reprezint structura sistemului de fiiere. n prezent standardul ISO 9660 (High Sierra) este standardul unanim acceptat. CD-urile create cu acest format pot fi accesate pe majoritatea platformelor i sistemelor de operare existente astzi n lume. Alte formate sunt: Rock Ridge (UNIX), HFS (Macintosh) i formatul hibrid HFS/ISO. Dou standarde care mbuntesc standardul ISO 9660 sunt JOLIET i UDF. JOLIET este varianta Microsoft pentru ISO 9660 ce extinde mrimea maxim a numrului de caractere ale unui nume de fiier de la 8 la 64. Universal Disc Format (UDF) reprezint un standard mai nou special conceput pentru nmagazinarea datelor.
Standarde fizice

Standardele fizice definesc modul de scriere a informaiei pe CD (locul unde se scrie aceast informaie). Majoritatea formatelor cad n categoria aa numitelor Cri colorate. Aceast caracteristic provine de la faptul c, atunci cnd Phillips i Sony au adus formatul pentru CD-ul audio, primele caracteristici ale acestuia au fost publicate ntr-o carte cu o copert roie, initulat Red Book. Standardele colorate sunt:
- Red Book Compact Disk - Digital Audio (CD-DA) este formatul pentru CD-uri audio. Specific modul de aranjare a cntecelor n piste pe disc. - Yellow Book A fost dezvoltat iniial ca format pentru date. Permite scrierea datelor ca fiiere pe disc. - Green Book Firma Phillips a creat n 1986 acest format pentru noile compact discuri denumite CD-I (Compact Disk Interactive). Acest format a fost special conceput pentru sincronizarea datelor audio i video pentru aplicaii multimedia. - Orange Book Acest standard (1990) definete formatul fizic pentru discurile inscriptibile. Are trei pri:

(1) pentru discuri Magneto-optice (MO),


190

Elemente de arhitectur a sistemelor de calcul i operare

(2) pentru discuri de tip Write Once (WO) i (3) pentru discuri reinscriptibile.
- White Book Reprezint metoda de nregistrare MPEG1 audiovideo pe un video CD (VCD). Aceste discuri necesit un player specializat sau o aplicaie software pentru accesare datorit compresiei nalte a informaiei. - Blue Book Standardul Blue Book este pentru formatul discurilor E-CD (Enhanced-CD).

Fig. 4.31 O comparaie ntre caracteristicile discurilor CD i DVD

4.7.2.2 DVD (Digital Versatile Disk Digital Video Disk) DVD (Digital Versatile Disk) reprezint cea mai nou tehnologie bazat pe tehnologia de tip CD-ROM. Discurile video digitale, aa cum se mai numesc (datorit inteniei iniiale cu care au fost create, aceea de stocare a filmelor), ncep treptat s preia locul i rolul unitilor CD-ROM i CDRW n stocarea informaiilor. Un disc DVD are aceeai dimensiune fizic precum CD-ROM-ul dar poate stoca o cantitate mult mai mare de informaie. Capacitatea de a stoca mai mult informaie provine de la faptul 191

Memoria i magistralele de sistem

c ofer mai mult spaiu de stocare printr-o tehnic de nregistrare de mai mare densitate i accesul la mai multe straturi fizice pe acelai mediu. n figura 4.31 este prezentat un tabel cu diferenele dintre caracteristicile discurilor CD i DVD. Ca i n cazul CD-ROM-ului, iniial a aprut varianta DVD ce poate fi doar citit ca modalitate de stocare pentru filme i jocuri pentru calculator cu faciliti grafice deosebite. Ulterior, discurile DVD-RW (reinscriptibile) au aprut disponibile pentru aplicaii audio. Unitile DVD (n figura 4.32 sunt prezentate diverse caracteristici posibile ale discurilor DVD) sunt asemntoare cu cele CD-ROM. n plus conin decodoare. Toate player-ele DVD i unele uniti pentru computer au un decodor MPEG-2 pentru decompresia datelor video ntr-un format ce poate fi afiat pe ecranul televizorului sau pe monitor. Unele playere DVD au decodoare audio pentru Dolby Digital 5.1 sau DTS. Laserul utilizat ntrun DVD player este diferit de cel folosit ntr-o unitate CD-ROM.

Fig. 4.32 Diverse caracteristici ale discurilor DVD

Pentru inscripionare sunt disponibile mai multe formate DVD. Acestea sunt:
DVD-R DVD-R (recordable) este similar cu tehnologia CD-R n sensul c discul poate fi scris o singur dat. Nu este practic pentru consumatori datorit preurilor ridicate ale unitilor i discurilor DVD; DVD-RAM Utilizeaz tehnologia Random Access Memory (RAM) ce permite scrierea i rescrierea unui disc de aproximativ 100.000 de ori. DVD-RAM utilizeaz o tehnologie similar cu cea CD-RW i stocheaz 4.7GB de date pe fiecare fa a discului; apar ns probleme legate de compatibilitate. DVD-RW Tehnologia DVD-RW (re-writable) este conceput pentru a rezolva problema compatibilitii. Permite 192

Elemente de arhitectur a sistemelor de calcul i operare

rescrierea de aproximativ 1000 de ori. Discurile sunt compatibile cu majoritatea unitilor DVD-ROM de pe pia.
DVD+RW Tehnologie de ultim or (HP+). Asemntoare cu DVD-RW. Preuri accesibile (sub $600) posibil viitor standard pentru nregistrarea DVD.

Fig. 4.33. Discheta de 3,5 inci i capacitate 1,44 MB

4.7.3 Discuri floppy

Popularele dischete, sau discurile floppy, au rmas ntr-un fel mult n urm fa de dezvoltrile tehnice legate de hard-diskuri, discuri CD sau DVD. n timp ce alte medii de stocare au capaciti foarte mari, de sute de MB sau zeci de GB, populara dischet de 3,5 inci a rmas la capacitatea de 1,44 MB (figura 4.33) de ani buni. Nu a fost ns ntotdeauna aa; primele uniti de disc flexibil introduse de IBM erau de 8 inci dimensiune, avnd o capacitate de stocare de 128 KB, fiind utilizate ca dispozitiv de memorie secundar pentru a ncrca microcodul n cazul micro-calculatoarelor. Imediat dup introducerea primului IBM-PC, firmele americane IMSAI i Altair au nceput s produc computere destinate uzului casnic ce incorporau procesoare Intel 8080, magistrale de comunicaie S100 i eniti de disc flexibil. Un alt pas important n dezvoltarea unitilor de discuri floppy a avut loc n momentul nlocuirii dischetelor de 5,25 inci i 8 inci care erau mai mari, cu capaciti mai reduse i mai puin fiabile. Dischetele de 3,5 inci au 80 de piste cu cte 9 sectoare de cte 1 KB, rezultnd o capacitate de stocare
193

Memoria i magistralele de sistem

de 1,44 MB. Spre deosebire de hard-diskuri, capul de citire este n contact direct cu suprafaa magnetic a discului tot timpul, ce creeaz uneori probleme, chiar dac viteza de rotaie a discului este mult mai mic dect n cazul hard-diskului, de 300 r.p.m. (rotaii pe minut). Doar mecanismul original de la firma Apple permitea viteze variabile de rotaie, de 300 r.p.m sau 600 r.p.m. Tehnica vitezelor variabile de rotaie a fost implementat apoi la unitile de CD-ROM. Dischetele floppy de 1,44 MB sunt nc utilizate pentru transferul fiierelor de dimensiune mic de pe un calculator pe altul (cnd nu dispunem de o reea de calculatoare) sau pentru stocare extern.

194

5
REELE DE CALCULATOARE
5.1 Introducere Dezvoltarea extraordinar n ultimii ani a industriei calculatoarelor i a comunicaiilor a fcut ca n zilele noastre majoritatea calculatoarelor s fie conectate la o reea. Practic nu mai putem s analizm funcionarea unui calculator de sine-stttor ci se impune s avem o abordare din prisma reelei de calculatoare la care acesta este conectat. Din aceast cauz vom prezenta n acest capitol cteva concepte, definiii i elemente de baz utilizate n studiul reelelor de calculatoare. Definiia unanim acceptat de toate lumea (chiar dac exist mai multe definiii pentru termenul reea de calculatoare) este aceea c o reea de calculatoare (i vom spune pe scurt, reea) este o colecie de dou sau mai multe calculatoare intreconectate ntre ele. Avantajul imediat al conectrii la o reea este evident: utilizatorii pot partaja fiiere i dispozitive periferice (imprimante, modemuri, uniti de backup, uniti CD-ROM, etc.). n cazul n care reele din mai multe locaii sunt interconectate prin serviciile oferite de furnizorii de servicii Internet (linii telefonice, cablu, antene), utilizatorii pot folosi aplicaii extrem de rspndite astzi, precum cele de e-mail, chat, video-chat, video-conferina cu ali utilizatori conectai la reea i situai oriunde pe glob. 5.2 Topologii Una dintre primele noiuni prezentate atunci cnd se vorbete despre o reea de calculatoare este noiunea de topologie, care nseamn, de fapt, structura reelei. Topologia poate fi att fizic, ct i logic. O topologie 195

Elemente de arhitectur a sistemelor de calcul i operare

fizic reprezint modalitatea de aezare n spaiu a componentelor reelei, pe cnd topologia logic se refer la modalitatea de acces la mediu a dispozitivelor conectate la reea.

5.2.1 Topologii fizice Cele mai rspndite topologii fizice sunt urmtoarele: Topologia de magistral (bus) Aceast topologie folosete un singur cablu de conexiune principal iar dispozitivele din reea sunt conectate toate la aceast conexiune (magistral) (figura 5.1).

Fig. 5.1 Topologiile de magistral i inel

Topologia de inel (ring) n aceast topologie fiecare dispozitiv este conectat de urmtorul, de la primul pn la ultimul, ca ntr-un lan de interconectare (precum zalele unei brri) (figura 5.1).

196

Reele de calculatoare

Fig. 5.2 Topologiile de stea i stea extins

Topologia de stea (star) n aceast topologie toate cablurile de conexiune ale dispozitivelor sunt legate la un dispozitiv central (denumit concentrator). De regul, acest concentrator este un hub sau un switch. (figura 5.2). Topologia de stea extins (extended star) Topologia de stea extins unete topologiile stea intermediare la un concentrator central (hub sau switch) (figura 5.2).

197

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 5.3 Topologia ierarhic i cea complet interconectat

Topologia ierarhic (hierarchical) Aceast topologie este asemntoare cu cea de stea extins, n care reelele locale sub form de stea sunt conectate la un computer ce controleaz traficul n reea (figura 5.3). Topologia complet interconectat (mesh) n aceast variant topologic fiecare dispozitiv din reea este interconectat cu toate celelalte (figura 5.3). n cazul n care numrul de gazde din reea este n, numrul conexiunilor necesare este n*(n-1)! 5.2.2 Topologii logice n general exist dou tipuri de topologii logice (modaliti de comunicaie n reea): topologia de tip broadcast i cea de tip token passing. 5.2.2.1 Topologia broadcast Cea mai cunoscut tehnologie broadcast este tehnologia Ethernet (aprut nc de la sfritul anilor 1970), larg utilizat n toate reelele locale LAN (Local Area Network) din lume. Modalitatea de funcionare a reelelor Ethernet se bazeaz pe CSMA/CD (Carrier Sense Multiple Access with 198

Reele de calculatoare

Collision Detection), un protocol de comunicaie n reea. Ideea de baz este simpl: o staie din reeaua Ethernet poate trimite pachete de date n reea atunci cnd nu exist alte pachete de date care circul n reea (reeaua este liber). n caz contrar, staia care dorete s transmit pachete de date n reea ateapt pn cnd reeaua devine liber, exact ca o persoan care dorete s intre ntr-o conversaie i ateapt politicoas ca alt persoan s termine de vorbit. Dac mai multe staii din reea ncep s ransmit date n acelai timp, apare fenomenul de coliziune. Dup apariia unei coloziuni, fiecare staie ateapt un timp (de durat aleatoare) dup care ncearc din nou s trimit pachetele de date. Dac se ntmpl s se contorizeze 16 astfel de ncercri nereuite de trimitere a pachetelor de date n reea, aplicaia care a generat operaia de trimitere de date trebuie s reia cererea de transmitere de pachete de date n reea. ntr-o reea Ethernet, cu ct numrul utilizatorilor (staiilor de lucru) crete, cu att va crete i numrul coliziunilor, al erorilor i al cererilor de retransmisie, cu efect de multiplicare asemntor cu acela al bulgrului de zpad. Fenomenul de apariie al coliziunilor este normal s se ntmple ntr-o reea Ethernet, dar prea multe coliziuni vor duce la ncetinirea funcionrii reelei. n cazul n care este utilizat mai mult de 50% din limea de band a reelei, coliziunile ncep s gtuiasc, s ncetineasc reeaua, producnd fenomenul de congestie. ntr-un astfel de moment, toate activitile din reea sunt ncetinite: aplicaiile se deschid mai greu, transferul fiierelor dureaz mai mult, tiprirea la imprimanta de reea se face mai greu i utilizatorii sunt obligai s atepte. Dac traficul de reea depete 60% din limea de band, deja reeaua este supra-ncrcat i exist posibilitatea chiar ca reeaua s cad. Standardul clasic Ethernet are asigur o lime de band de 10 Mbps, n timp ce mai noile standarde Fast Ethernet (denumit i 100BaseT) i Gigabit Ethernet (sau 1000BaseT) funcioneaz n acelai mod cu Ethernet-ul clasic, dar la viteze de 100 Mbps, respectiv 1000 MBps. 5.2.2.2 Topologia token passing Cea mai cunoscut tehnologie token passing este tehnologia Token Ring, construit ca alternativ la metoda Ethernet de detecie a coliziunilor. Ideea reelei Token Ring este urmtoarea: n reea circul de la o staie la alta un token (jeton de acces) care ntreab staia respectiv dac dorete sau nu s transmit pachete de date n reea. Reeaua Token 199

Elemente de arhitectur a sistemelor de calcul i operare

Ring are o topologie fizic de tip inel (dup cum ne spune, de altfel, i numele).

Fig. 5.4 Adaptor (plac) de reea

n momentul n care o staie din reea dorete s transmit date, preia token-ul i l convertete ntr-un cadru de date pe care l transmite n reea. Acest cadru de date circul n reea, fiecare staie retransmite aceste date n jurul inelului iar staia destinaie copiaz acest cadru de date n memorie. n momentul n care cadrul trimis se ntoarce napoi la staia care l-a trimis, staia respectiv elibereaz un nou token de acces n reea. Reelele Token Ring opereaz la viteze de 4 sau 16 Mbps, dar costurile sczute i uurina n exploatare a reelelor Ethernet au fcut ca standardul Token Ring s fie din ce n ce mai puin utilizat n noile implementri de reea din zilele noastre.

5.3 Echipamente de reea Dispozitivele care sunt interconectate ntr-o reea se numesc gazde de reea sau, pe scurt, gazde (hosts). Exist o serie ntreag de dispozitive ce pot exista ntr-o reea, dar elementele de baz ntr-o reea simpl sunt 200

Reele de calculatoare

urmtoarele: cel puin dou calculatoare, o interfa de reea (plac de reea) instalat pe fiecare calculator n parte, un mediu de conexiune (tipic un cablu, dar exist i conexiuni fr fir - wireless) i un sistem de operare de reea (Unix, Linux, Windows 95, 98, 2000, XP, NT sau Novell Netware). De asemenea, majoritatea reelelor posed i un hub sau un switch pentru interconectarea gazdelor din reea. Prezentm n continuare pe scurt echipamentele de baz dintr-o reea.

Fig. 5.5 Plac de reea PCMCIA pentru laptop

Placa de reea

Placa de reea (figura 5.4), denumit i interfa de reea sau adaptor de reea sau NIC (Network Interface Card), reprezint un element de baz ntr-o reea de calculatoare, avnd n vedere c orice calculator conectat la reea trebuie s posede un astfel de adaptor. Placa de reea este o plac cu circuite electronice sau o plac PCMCIA (pentru laptop figura 5.5) i are rolul de a asigura conexiunea la reea a unui echipament (calculator, imprimant etc.). Fiecare plac de reea are o adres unic, numit i adres fizic sau adres MAC (Media Access Control).
201

Elemente de arhitectur a sistemelor de calcul i operare

Atunci cnd se alege o plac de reea pentru un calculator sau pentru alt dispozitiv pe care vrem s l conectm la o reea trebuie s lum n considerare urmtoarele: Tipul reelei (Ethernet, Token Ring, etc.); Tipul mediului de conexiune (cablu coaxial, fibr optic, cablu UTP sau legtur wireless); Tipul magistralei de sistem (PCI, ISA, etc.).

Fig. 5.6 Echipamente gazd ntr-o reea

Echipamente gazd ntr-o reea

Toate calculatoarele, indiferent de tipul lor, imprimantele sau serverele conectate la o reea se numesc gazde (figura 5.6).
202

Reele de calculatoare

Repetorul (repeater)

Un echipament foarte simplu ntlnit n reele este repetorul (repeater-ul), dispozitiv care nu face altceva dect s amplifice i s regenereze semnale la nivel de bii de-a lungul reelei. Aceste echipamente se ntlnesc atunci cnd se dorete extinderea dimensiunii maxime pentru tipul de cablu respectiv i prezint din punct de vedere constructiv un port de intrare i un port de ieire.
Hub-ul

Hub-ul acioneaz tot la nivel de bit i de regenerare a semnalelor, fiind denumit, de fapt, repetor multiport, deoarece prezint un port de intrare, dar mai multe porturi de ieire. Introducerea unui hub n reea creaz un punct de conexiune central (la care sunt legate toate gazdele) i mrete fiabilitatea. Hub-urile pot fi de mai multe tipuri, unele fiind hub-uri active, ce folosesc energie electric pentru a regenera semnalele, n timp alte huburi sunt hub-uri pasive care doar mpart semnalele la mai muli utilizatori. Hub-urile pasive nu regenereaz biii, nu extind lungimea cablrii i nu permit ca dou sau mai multe gazde s fie conectate pe acelai segment de cablu. Exist, de asemenea, i hub-uri inteligente, care pot fi programate pentru a se administra traficul n reea.
Bridge-ul

Bridge-ul acioneaz la un nivel superior (nivelul 2 din modelul OSI, model pe care l vom prezenta n seciunea 5.4.3.6), conectnd dou segmente de reea. De asemenea, un bridge filtreaz traficul n reea pe baza adreselor MAC, regula general fiind urmtoarea: traficul local (ce provine din acelai segment de reea) este meninut local iar traficul din afara segmentului de reea este direcionat n afara segmentului de reea. Un bridge creeaz i administreaz nite tabele de adrese MAC pe baza crora poate face filtrarea traficului dup regula de mai sus.
Switch-ul

Switch-ul este tot un echipament de reea ce acioneaz la nivelul 2 din modelul OSI, fiind denumit i bridge multiport. Deciziile de direcionare a traficului din reea se fac tot pe baza adreselor MAC, comutarea semnalelor transmise fcndu-se ctre portul unde este conectat calculatorul destinaie (cel cruia i se adreseaz pachetul de date). Switch-urile arat oarecum asemntor cu un hub dar administreaz transmisiunile de pachete de date mult mai eficient, combinnd capacitatea de conectivitate a hub-ului cu reglarea traficului din reea (pe care o face un bridge) la nivelul fiecrui port de conexiune.
203

Elemente de arhitectur a sistemelor de calcul i operare

Router-ul

Router-ul este un echipament de reea mai complex (i mai scump, de asemenea) ce acioneaz la nivelul 3 din modelul OSI. Acest dispozitiv poate lua decizii de direcionare a pachetelor de date din reea pe baz de clase de adrese logice (adrese IP), putnd conecta diferite tehnologii de nivel 2 OSI, cum ar fi Ethernet, FDDI, Token Ring etc. Routerele reprezint elementele centrale ale Internetului, ele examineaz pachetele de date de intrare i le direcioneaz ctre interfeele respective de ieire. Un router este asemntor cu un calculator, avnd procesor, memorie, interfee de intrare/ieire, avnd deci putere de procesare i de luare a unei decizii de direcionare a unui pachet de date ctre o anumit interfa pe baza unor aa numite protocoale de rutare.

Fig. 5.7 Simbolurile grafice utilizate pentru repetor, hub, bridge, switch, ruter

204

Reele de calculatoare

Simbolurile grafice utilizate pentru realizarea diagramelor de reea sunt prezentate n figura 5.7.
5.4 Modele utilizate n dezvoltarea i studiul reelelor de calculatoare 5.4.1 Introducere

Primele reele de calculatoare din lume erau formate, de regul, din calculatoare ce proveneau de la acelai productor, neexistnd posibilitatea de a face s coopereze computere i echipamente de reea produse de firme diferite. Pe msur ce numrul de calculatoare a crescut i complexitatea reelelor s-a mrit, a aprut necesitatea de a putea fi integrate mpreun soluii provenite de la mai muli fabricani de computere i tehnologii de reea. La sfritul anilor 1970, Organizaia Internaional pentru Standardizare (ISO International Organization for Standardization) a nceput dezvoltarea primului model arhitectural denumit OSI (Open Systems Interconnection) pe baza cruia s se rezolve aceast necesitate. Acest model s-a impus ca un standard bine cunoscut n lumea reelelor de calculatoare, iar pentru c organizaia ISO a conceput acest model, numele complet al su este modelul ISO-OSI. Acest model dorete s fie un ajutor pentru ca productorii de calculatoare i de echipamente de reea s aib produse interoperabile cu cele similare ale altor productori. Modelul ISO-OSI este modelul arhitectural de baz al reelelor de calculatoare, descriind modul n care aplicaiile de pe un computer comunic prin intermediul mediilor de reea cu aplicaiilor de pe un alt computer aflat n reea. Alte dou modele arhitecturale de reea pe care le vom prezenta n continuare sunt modelul TCP/IP i modelul ierarhic Cisco. Toate aceste modele au o caracteristic principal comun, n sensul c abordarea problematicii reelistice se face pe nivele.

205

Elemente de arhitectur a sistemelor de calcul i operare

5.4.2 Necesitatea unui model ierarhic

Pentru a nelege mai bine de ce a aprut necesitatea existenei unui model dup care s fie proiectate, dezvoltate, analizate i depanate reelele de calculatoare trebuie s definim noiunea de flux informaional. Considernd exemplul a dou calculatoare aflate ntr-o reea (figura 5.8), comunicarea dintre acestea se face pe baza unui schimb de date; aceast deplasare a datelor de la calculatorul surs la cel destinaie poart numele de flux de date sau, pe scurt, flux.

Fig. 5.8 Fluxul de date ntre surs i destinaie

Putem face analogii ale scurgerii fluxului de date cu numeroase exemple din viaa de zi cu zi: traficul mainilor pe strad, scurgerea apei ntr-o conduct sau drumul parcurs de o scrisoare de la expeditor la destinatar. n toate aceste exemple este vorba de o micare a unor obiecte (fie c este vorba de maini, ap sau scrisori) dintr-un loc n altul, iar aceast micare reprezint un flux. n legtur cu fluxul de date dintr-o reea de calculatoare, apar o serie de ntrebri care trebuie lmurite: Care este fluxul? Care sunt diferitele forme de flux? Ce reguli guverneaz acest flux? Unde apare acest flux? Pentru a clarifica rspunsurile la aceste ntrebri ce apar cnd este forma de fluxul de date dintr-o reea de calculatoare s-a recurs la divizarea problemei de comunicaie pe mai multe nivele, lucru pe care l fac i modelele arhitecturale de reea. Divizarea chestiunii comunicaiei pe mai multe nivele are urmtoarele avantaje: Se mparte problema comunicaiei din reea n piese mai mici i mai simple, deci mai uor de analizat;
206

Reele de calculatoare

Se dorete standardizarea componentele de reea pentru a putea permite dezvoltare i suport multiproductor; Permite diferitor tipuri de hardware i software din reea s comunice ntre ele; Este o modalitate de prevenire a faptului c o modificare ce apare la un nivel s afecteze celelalte nivele, astfel nct s se dezvolte mai rapid.
5.4.3 Modelul ISO-OSI

Lansat oficial n 1984, modelul ISO-OSI reprezint modelul arhitectural principal pe baza cruia reelele de calculatoare sunt proiectate, analizate, dezvoltate, implementate sau depanate. Acest model este conceput s trateze reelele de calculatoare pe mai multe nivele, fcnd astfel ca problemele comunicaiei (fluxurile din reea) s fie divizate n probleme mai simple i mai uor de analizat, corespunztoare unui nivel din reea. Cu ajutorul modelului OSI se mbuntete transferul datelor dintre nodurile unei reele, avnd n vedere c una dintre caracteristicile sale principale este aceea de a asista modalitatea de transfer a datelor ntre dou sisteme terminale din reea.
APLICAIE Interfaa cu utilizatorul

PREZENTARE SESIUNE TRANSPORT REEA

Modalitatea de prezentare a datelor Separ datele diferitelor aplicaii Asigur livrarea datelor la destinaie Asigur corecia datelor naintea transmiterii Se ocup cu adresarea logic pe care ruterele o utilizeaz pentru determinarea rutei pn la destinaie Pachetele de date sunt transformate n octei i octeii n cadre Ofer acces la mediu prin utilizarea adreselor MAC Asigur detecia erorilor Mut iruri de bii ntre echipamente Specific tipul de cablare, viteza de transmisie, voltaje, tipuri de conectori, etc.

LEGTUR DE DATE

FIZIC

Fig. 5.9 Nivelele modelului OSI

207

Elemente de arhitectur a sistemelor de calcul i operare

Modelul OSI este practic un set de principii de baz pe care dezvoltatorii de aplicaii de reea l pot folosi pentru a crea i implementa aceste aplicaii. De asemenea, modelul ofer cadrul specific pentru crearea i implementarea standardelor de reea, a echipamentelor i a schemelor de interconectare n reea. Modelul OSI descrie modalitatea n care datele i informaiile din reea sunt transmise de la o aplicaie de pe un computer ctre o alt aplicaie de pe alt computer; acest lucru se face folosind o abordare pe 7 nivele. Cele 7 nivele ale modelului OSI sunt mprite n dou grupuri. Primul grup, format din cele trei nivele superioare definete modul de comunicare ntre aplicaiile de pe staiile terminale din reea i modul de comunicare cu utilizatorii. Cel de-al doilea grup, format din cele 4 nivele inferioare definete modul de transmitere a datelor de la o surs la o destinaie. n figura 5.9 sunt prezentate cele 7 nivele ale modelului OSI mpreun cu cteva caracteristici principale ale fiecrui nivel. Modalitatea de funcionare a nivelelor din modelul OSI este urmtoarea: fiecare nivel ofer servicii nivelului imediat superior (nivelul fizic ofer servicii nivelului legtur de date, nivelul legtur de date ofer servicii nivelului reea .a.m.d.), excepie fcnd nivelul aplicaie care nu are un alt nivel superior. Comunicarea ntre dou sisteme terminale din reea se face, de asemenea, pe baza unor protocoale corespunztoare nivelelor din modelul OSI la care acestea activeaz. Astfel, nivelul aplicaie al uni sistem terminal comunic cu nivelul aplicaie al celuilalt sistem, nivelul reea cu nivelul reea etc. Vom face n continuare o analiz mai detaliat pentru fiecare nivel din modelul OSI n parte, pe baza modelului top-down, plecnd de la nivelul aplicaie (de vrf) i ajungnd la nivelul fizic (de baz).
5.4.3.1 Nivelul aplicaie

Nivelul aplicaie din modelul OSI este folosit de ctre utilizatori pentru asigurarea interfeei cu calculatorul. Acest nivel se ocup cu identificarea i stabilirea partenerului de comunicaie i determin dac exist suficiente resurse pentru stabilirea comunicaiei dorite. n timp ce unele aplicaii necesit numai resurse locale, alte aplicaii pot necesita componente ce provin de la mai multe aplicaii de reea exemple pot fi: transferuri de fiiere, localizarea de informaii, pota electronic (e-mail), acces la distan, management de reea etc.
208

Reele de calculatoare

Dac n trecut comunicaia dintre aplicaii se facea de regul la nivelul unei organizaii sau firme, exist o tendin general n ultimii ani de a mri spectrul acestor comunicaii la nivel interorganizaional, dezvoltndu-se aplicaii interreea precum: WWW (World Wide Web) sau prescurtat Web, asigur conexiunea dintre servere din ntreaga lume folosind diverse formate. Majoritatea formatelor sunt multimedia i includ text, grafic, sunet sau video. Programele de navigare Web (denumite browsere) precum Netscape Navigator, Internet Explorer, Opera i altele ne ajut s accesm i s vizualizm site-urile Web. EDI (Electronic Data Interchange) reprezint o colecie de standarde i procese ce faciliteaz fluxul de operaii ce includ contabilizarea, transportul/recepia, inventarierea datelor interschimbate ntre diferite companii. Utilitare pentru navigare Internet acestea includ aplicaii precum Gopher, WAIS sau motoare de cutare ca Yahoo!, Lycos, Alta Vista, Google, Excite care ajut utilizatorii s localizeze informaiile dorite. Servicii pentru tranzacii financiare acestea colecteaz i ofer informaii referitoare la investiii, piee financiare, active financiare, rate de schimb valutar, etc. pentru clienii permanei sau ocazionali. Sisteme BBS (Bulletin Board System) acestea sunt baze de date de produse software unde putem gsi o mulime extrem de mare de programe din diverse domenii. Software-ul existent aici este, de regul, gratis sau promoional, adic programele nu funcioneaz cu toate facilitile pn cnd nu sunt cumprate (de tip shareware).
5.4.3.2 Nivelul prezentare

Dup cum spune i numele su, acest nivel ofer o modalitate de prezentare a datelor nivelului superior, nivelului aplicaie. Nivelul prezentare acioneaz ca un translator oferind funcii de codificare i conversie. Modalitatea de a asigura o transmisie cu succes a datelor este aceea de a codifica datele ntr-un format cunoscut naintea nceperii transmisiunii. Acest lucru se face deoarece computerele sunt astfel construite pentru a recepiona date formatate generic i a le converti ntr-un
209

Elemente de arhitectur a sistemelor de calcul i operare

format nativ pentru citire (de exemplu folosind codul ASCII, EBCDIC sau Unicode). Prin oferirea de servicii de translatare, nivelul prezentare asigur faptul c datele transmise de nivelul aplicaie al unui sistem terminal sunt nelese de nivelul aplicaie al altui sistem terminal. Modelul OSI ofer o serie de protocoale standard pentru acest nivel, protocoale ce definesc modaliti de formatare a datelor. Operaii precum criptarea, decriptarea, compresia sau decompresia datelor sunt n strns legtur cu acest nivel. Majoritatea standardelor acestui nivel se refer la operaii multimedia. Exemple de astfel de standarde sunt:
GIF (Graphic Interchange Format) este un format pentru fiiere de tip grafic; PICT (PICTure) acest format grafic este folosit de programe Macintosh sau PowerPC pentru transferul de grafice QuickDraw; TIFF (Tagged Image File Format) este un format standard grafic pentru imagini de nalt rezoluie; JPEG (Joint Photographic Expert Group) este un alt format grafic; MIDI (Musical Instrument Digital Interface) este folosit pentru crearea de fiiere ce conin muzic n format digital; AVI (Audio Video Interleave) este un format pentru fiiere de sunet i video dezvoltat de Microsoft. El reprezint formatul standard pentru PC-uri, fcnd parte integrant din distribuia "Video for Windows (VfW)" a sistemului de operare Windows; MPEG (Moving Picture Experts Group) este un standard pentru compresia i codificarea fiierelor ce conin imagini n micare ofer rate de transfer de pn la 1,5 Mbps; QuickTime este un alt format popular pentru fiiere ce conin date audio/video dezvoltat iniial pe platforme Macintosh i PowerPC. 5.4.3.3 Nivelul sesiune

Acest nivel este responsabil cu iniierea, administrarea i ncheierea sesiunilor de comunicaie ntre entitile nivelului prezentare. De asemenea, nivelul sesiune ofer un control al dialogului ntre nodurile terminale i
210

Reele de calculatoare

coordoneaz comunicaia ntre sisteme. Exist trei moduri de comunicaie ntre sistemele terminale: simplex, half-duplex i full-duplex. Exemple de protocoale ale nivelului sesiune: NFS (Network File System) este un sistem de fiiere de reea dezvoltat de Sun Microsystems i folosit mpreun cu Unix i TCP/IP pentru a permite accesul transparent la resurse din reea; X Window este o interfa grafic extrem de folosit de ctre terminalele inteligente pentru comunicarea cu computere Unix din reea, permind operarea ca i cum ar fi monitoare locale ataate; SQL (Structured Query Language) dezvoltat de compania IBM pentru a oferi utilizatorilor o modalitate simpl i standardizat de a i specifica necesitile pentru informaii aflate pe staia de lucru local sau n alt parte n reea; RPC (Remote Procedure Call) reprezint un instrument client/server folosit n medii de reea. Procedurile sunt create pe clieni i opereaz pe servere; AppleTalk Session Protocol (ASP) este un alt mecanism client/server care stabilete i administreaz sesiuni de comunicaie ntre un client AppleTalk i un server.
5.4.3.4 Nivelul transport

Nivelul transport ofer servicii care segmenteaz i reasambleaz datele provenite de la aplicaii de nivel superior, unificndu-le ntr-un flux de date. De asemenea, acest nivel din modelul OSI asigur servicii de transport ntre surs i destinaie, putnd stabili o conexiune logic ntre sistemul transmitor i sistemul destinaie dintr-o reea. Exemple de protocoale folosite la acest nivel sunt TCP (Transmission Control Protocol) i UDP (User Datagram Protocol).

Modul simplex implic faptul c transmisia de date se face ntr-un singur sens ntre staia surs i cea destinaie. Modul half-duplex ofer posibilitatea transmisiei n ambele sensuri ntre dou sisteme terminale, dar ntr-un singur sens la un moment dat, n timp ce modul full-duplex semnific faptul c transmisia se poate efectua n ambele sensuri la acelai moment dat.

211

Elemente de arhitectur a sistemelor de calcul i operare

Nivelul transport este responsabil cu asigurarea mecanismelor pentru multiplexarea datelor provenite de la nivelele superioare, stabilirea sesiunilor de comunicaie i stoparea circuitelor virtuale. Noiunile fundamentale ce trebuie luate n considerare la acest nivel sunt: controlul fluxului, comunicaii orientate pe conexiune, windowing sau transmisia de confirmri.
Controlul fluxului

Una dintre sarcinile de baz ale nivelului transport o constituie asigurarea integritii datelor. Acest lucru este realizat prin controlul fluxului de date i prin asigurarea unui mecanism fiabil de transport de date ntre un sistem surs i un sistem destinaie. Controlul fluxului mpiedic faptul ca un sistem transmitor s transmit mai multe date dect sistemul receptor poate primi, deoarece un astfel de eveniment poate duce la pierderi de date. Transportul fiabil al datelor ntre surs i destinaie implic o sesiune de comunicaie orientat pe conexiune iar protocoalele implicate n acest fenomen vor asigura urmtoarele: Transmitorul va primi o confirmare din partea receptorului pentru segmentele de date transmise i recepionate; Toate segmentele care nu primesc aceast confirmare vor fi retransmise; Segmentele ajunse la destinatar vor fi aranjate n ordinea corespunztoare transmisiei, indiferent de ordinea la care au ajuns la destinaie; Se va asigura un control al fluxului de date pentru a evita congestiile, suprancrcarea sau pierderea de date.
Comunicaii orientate pe conexiune

Modalitatea de lucru a unei comunicaii orientate pe conexiune este urmtoarea: pentru a se asigura un transport fiabil de date de la surs la destinaie, sistemul care trimite date stabilete ntr-o prim etap o sesiune orientat pe conexiune cu sistemul su pereche cu care comunic. n acest caz, programele aplicaie de pe cele dou sisteme terminale ncep prin a trimite un semnal sistemelor de operare care anun faptul c se va iniia o conexiune. Cele dou sisteme de operare comunic ntre ele prin trimiterea de mesaje de-a lungul reelei confirmnd c se aprob transferul de date i c acesta poate ncepe. Din momentul realizrii sincronizrii ntre sisteme, se poate spune c a fost creat o conexiune i transferul de date se poate
212

Reele de calculatoare

iniia. Un astfel de procedeu se mai numete three-way-handshake, adic stabilirea conexiunii n trei etape (figura 5.10).

Transmitor

Receptor

Se trimite SYN Secvena n

Se recepioneaz SYN Secvena n

Se trimite SYN Secvena m ACK=n+1 Se recepioneaz SYN Secvena m ACK=m+1

Se trimite ACK ACK=m+1

Se recepioneaz ACK ACK=m+1

Fig. 5.10 Comunicaia de tip three-way-handshake

Detaliat, conexiunea de tip three-way-handshake presupune urmtoarele etape: la nceput, staia transmitoare iniiaz (trimite un apel SYN) conexiunea prin trimiterea unui pachet de date ce are un numr de secven n i care conine un bit n header care indic faptul c secvena reprezint o cerere de conexiune. n faza a doua, staia receptoare primete pachetul, nregistreaz secvena n i rspunde cu o confirmare (ACKnowledgement) n+1 i include secvena iniial proprie ce are numrul m. Confirmarea cu numrul n+1 semnific faptul c staia receptoare a primit toi octeii de date pn la n i ateapt secvena urmtoare n+1.
213

Elemente de arhitectur a sistemelor de calcul i operare

Din momentul iniierii comunicaiei, cele dou sisteme terminale comunic prin intermediul unui protocol anume pentru a asigura transferul corect al datelor pe toat durata transmisiunii. O alt tehnic obinuit de transmitere fiabil a datelor este PAR (Positive Acknowledgement and Retransmission) n care staia surs trimite un pachet de date, pornete un contor de timp i ateapt o confirmare nainte de a trimite urmtorul pachet. Dac timpul scurs pn la primirea confirmrii depete valoarea specificat, staia surs retransmite acel pachet de date i pornete din nou contorul de timp. n timpul unui transfer de date poate aprea la un moment dat o congestie. Acest lucru se ntmpl atunci cnd un computer transmite date cu o mare vitez genernd un trafic prea rapid pentru reea sau atunci cnd mai multe computere transmit simultan date prin intermediul unei singure pori (gateway) ctre destinaie. n acest din urm caz, fie poarta de transmitere fie destinaia pot deveni aglomerate iar cauza problemei nu provine de la un singur sistem terminal. Congestia n reea este similar cu traficul de maini de pe o autostrad: un numr prea mare de maini ce utilizeaz autostrada conduce la un trafic aglomerat i la apariia de gtuiri ale traficului (aa numitele ambuteiaje). n momentul n care o staie din reea recepioneaz datagrame (structuri de date) prea rapid pentru a le putea procesa, acestea sunt stocate ntr-o zon de memorie tampon numit buffer. Aceast modalitate de a copia datagramele n memoria tampon rezolv problema doar dac acest trafic supraaglomerat este de scurt durat. Dac suprancrcarea persist, memoria tampon va deveni insuficient pentru stocarea tuturor datagramelor primite i datagramele ulterioare primite se vor pierde. Tocmai pentru a se evita astfel de pierderi de date a fost creat funcia de transport ce controleaz fluiditatea traficului de date din reea. Un alt procedeu utilizat pentru transmiterea datelor de la o surs la o destinaie se numete windowing. Deoarece viteza efectiv de transfer a datelor ar fi prea nceat dac staia care transmite ar atepta o confirmare pentru fiecare segment de date trimis, dup iniierea comunicaiei se pot transmite mai multe pachete de date nainte de a primi o confirmare din partea destinatarului. Numrul de segmente transmise pn la primirea unei confirmri poart numele de window (i vom spune fereastr de date). Exist mai multe tipuri de folosire a acestei tehnici: n timp ce unele protocoale cuantific informaia trimis ntr-o fereastr de date ca multiplu de pachete, alte protocoale (ntre care i TCP/IP) folosesc multiplii de octei pentru ferestrele de date. Figura 5.11 ilustreaz acest procedeu folosind
214

Reele de calculatoare

dou dimensiuni window: 1 i 3. n cazul unui window de mrime 1, transmitorul ateapt o confirmare pentru fiecare segment de date transmis nainte de a trimite alt segment de date. n cazul unui window de dimensiune 3, se vor transmite 3 pachete de date fr a se atepta confirmarea.

Transmitor Se trimit 3 pachete

Receptor

Se recepioneaz 3 pachete i se trimite confirmarea

Se recepioneaz confirmarea i se trimit alte 3 pachete

Se recepioneaz 3 pachete i se trimite o nou confirmare ACK 1

Se recepioneaz confirmarea i se continu procedeul

Fig. 5.11 Ilustrarea procedeului windowing cu o "fereastr" de dimensiune 3

Protocolul TCP utilizeaz o astfel de tehnic de windowing denumit sliding-window (fereastr glisant). Denumirea semnific faptul c dimensiunea ferestrei de date "gliseaz", adic este negociat dinamic n timpul transmisiunii.

215

Elemente de arhitectur a sistemelor de calcul i operare

5.4.3.5 Nivelul reea

Nivelul reea din modelui OSI este responsabil cu direcionarea (rutarea) datelor ntre reele i cu adresarea interreea. Acest lucru nseamn c nivelul reea are grij de datele transmise ntre echipamente care nu sunt n aceeai reea local. Dispozitive speciale numite rutere funcioneaz la acest nivel OSI oferind servicii de rutare ntr-o interreea. n funcie de nivelul OSI la care activeaz, spunem c echipamentul respectiv este un echipament de nivel corespunztor; astfel, ruterele se mai numesc i echipamente de nivel 3. Vom prezenta n continuare cum funcioneaz mecanismul de rutare, adic modalitatea prin care ruterele direcioneaz pachetele de date spre destinaie. Porturile de comunicaie n reea ale unui ruter se numesc interfee. Primul lucru care se face atunci cnd un pachet de date ajunge la o interfa a unui ruter este s se verifice adresa destinaie (adresa IP -Internet Protocol). Dac acest pachet nu are ca adres de destinaie chiar ruterul, atunci ruterul consult un tabel de adrese de reea ce se numete tabel de rutare (routing table). n continuare pachetul se trimite la o interfa de ieire a ruterului pentru a fi descompus n cadre i trimis n reeaua local. n situaia n care adresa destinaie nu se regsete n tabela de rutare atunci pachetul este "aruncat". La nivelul reea OSI se utilizeaz dou tipuri de pachete: pachete ce conin date efective i pachete ce conin informaii de remprosptare a rutelor de reea.
Pachetele de date sunt folosite pentru a transporta datele utilizatorilor n cadrul inter-reelei iar protocoalele folosite pentru acest tip de trafic se numesc protocoale rutate (routed protocols), categorie din care fac parte i protocoalele IP i IPX. Pachetele ce conin informaii de remprosptare a rutelor sunt utilizate pentru a aduce la zi rutele vecine provenite de la ruterele conectate n inter-reea. Protocoalele utilizate n acest sens se numesc protocoale de rutare (routing protocols) i ca exemple pot fi date RIP (Routing Information Protocol cel mai utilizat protocol de rutare din Internet), EIGRP (Enhanced Interior Gateway Routing Protocol) sau OSPF (Open Shortest Paths First).

Tabelele de rutare memorate i folosite de ctre rutere conin urmtoarele informaii: adrese de reea, denumiri de interfee i metric.
216

Reele de calculatoare

Adresele de reea sunt specifice protocoalelor folosite; un ruter trebuie s administreze o tabel de rutare pentru fiecare protocol n parte deoarece acestea gestioneaz reelele folosind scheme de adresare diferite. Putem compara aceast situaie cu aceea a incripionrii denumirii unei strzi n mai multe limbi care sunt vorbite de ctre locuitorii de pe acea strad. Denumirile de interfa specific interfaa de ieire pe care pachetul o va urma atunci cnd este adresat unei anumite reele.
Metrica reprezint distana ctre reeaua destinaie, distan care se calculeaz n funcie protocolul de rutare utilizat. n cazul protocoalelor bazate pe vectorul-distan metrica (hop-count) este de numrul de rutere intermediare existente pn la acea reea. Alte tipuri de metrice includ calculul limii de band, ntrzierile sau un contor de timp (tick-count, cu o valoare de 1/18 dintr-o secund).

Cel mai utilizat protocol pentru transferul informaiilor de rutare ntre rutere direct conectate este RIP. Acest protocol interior de rutare (IGP Interior Gateway Protocol) calculeaz distanele pn la destinaie, permind ruterelor s-i remprospteze tabelele de rutare la intervale programabile, de regul la fiecare 30 de secunde. Dezavantajul acestui procedeu este acela c se genereaz trafic suplimentar n reea. Protocolul RIP ofer posibilitatea ruterului de a alege drumul (ruta) din reea pe care se vor transmite datele pe baza vectorului distan (distance-vector). Ori de cte ori sunt transmise date n reea ce trec printr-un nou ruter se consider c "s-a trecut un hop". Spre exemplu, dac pn la destinaie un pachet trece prin 3 rutere intermediare (hopuri) atunci avem de-a face cu o metric n valoare de 3. n cazul n care avem mai multe rute pn la destinaie, protocolul RIP selecteaz ruta cu numrul minim de hopuri, care ns nu este neaprat cea mai rapid rut. Cu toate acestea, RIP rmne foarte popular i rspndit printre protocoalele de rutare folosite. O alt problem a protocolului RIP este aceea c acesta nu poate alege rute ce au numrul de hopuri pn la destinaie mai mare de 15. Din aceast cauz pot aprea cazuri n care destinaia se afl prea departe i atunci se va considera c nu poate fi atins. Ruterele sunt dispozitive ce nu iau n considerare domeniile de tip broadcast. O transmisie de tip broadcast n reea semnific faptul c are ca destinaie toate dispozitivele din acea reea; din aceast cauz, dac transmisiunile de tip broadcast sunt prea frecvente va rezulta o suprancrcare a traficului reelei. Ruterele delimiteaz att domenii de broadcast ct i domenii de coliziuni, lucru pe care l fac ns i dispozitivele nivelui 2 din modelul OSI, nivelul legtur de date. Fiecare interfa a ruterului
217

Elemente de arhitectur a sistemelor de calcul i operare

reprezint o reea separat i trebuie s i se atribuie un numr de identificare unic. n acest caz fiecare sistem terminal conectat la ruter trebuie s utilizeze acelai numr de reea. Caracteristicile cele mai importante ale ruterelor sunt urmtoarele: Ruterele folosesc adrese logice n header-ul nivelului reea pentru a determina ruta pe care s direcioneze pachetul de date spre destinaie; Ruterele nu direcioneaz pachete de tip broadcast sau multicast (pachete ce au mai multe destinaii); Ruterele pot folosi liste de acces setate de administratorul reelei pentru a asigura securitatea reelei i a controla pachetele de date care intr sau ies din ruter; Ruterele pot asigura simultan att servicii de nivel 2 de tip bridging ct i servicii de rutare de nivel 3; Echipamentele de nivel 3 (n acest caz ruterele, dar pot exista i switch-uri cu funcii de nivel 3) pot oferi conexiuni ntre reele virtuale LAN (Virtual LAN).
5.4.3.6 Nivelul legturii de date

Nivelul legturii de date (data link) din modelul OSI are dou funciuni principale: asigur faptul c mesajele sunt transmise dispozitivului corespunztor i translateaz aceste mesaje provenite de la nivelul superior (nivelul reea) n bii pe care i transmite mai departe nivelului fizic. Mesajele sunt formatate n cadre de date (data frames) i li se adaug un header ce conine adresele hardware pentru destinaie i pentru surs. Aceste informaii adiionale formeaz un fel de nveli (capsul) ce nconjoar mesajul original, de aceea acest procedeu se mai numete i procedeul de ncapsulare a datelor. Dispozitivele ce activeaz la nivelul 2 OSI se numesc switch-uri (comutatoare) i bridge-uri (puni). Dac ruterele ce activeaz la nivelul reea iau decizii privind direcionarea pachetelor de date inter-reele, switch-urile i bridge-urile se ocup cu identificarea destinaiei pachetelor n cadrul reelei locale. Atunci cnd un sistem terminal surs dorete s transmit date ctre un sistem terminal destinaie, nivelul legtur de date folosete adresarea hardware (spre deosebire de nivelul reea care folosete
218

Reele de calculatoare

adresarea software). Atunci cnd un pachet de date este schimbat ntre dou rutere, este transformat ntr-un cadru prin adugarea informaiei de control la nivelul legtur de date, dar aceast informaie este nlturat de ctre ruterul destinaie i este considerat doar pachetul original de date. Acest procedeu de ncapsulare n cadre a pachetului continu pn ce pachetul ajunge la destinaie. Este important s nelegem c pachetul de date rmne intact pe toat durata transportului, ncapsularea cu diverse tipuri de informaie de control (n funcie de mediul de transmisie) neafectnd coninutul su. Nivelul legtur de date are dou subnivele:
Subnivelul MAC (Media Access Control) 802.3 care definete modalitatea n care pachetele sunt trimise spre mediul de transmisie. Accesul la mediul de transmisie (pe scurt, mediu) se face pe baza regulii primul venit, primul servit, atunci cnd este partajat ntreaga lime de band. Tot aici se definete i adresarea fizic precum i topologia local. De asemenea, la acest subnivel pot aprea funcii legate de notificarea erorilor, transmiterea n ordine a cadrelor sau controlul fluxului. Nivelul LLC (Logical Link Control) 802.2 se ocup cu identificarea protocoalelor de nivel superior pe care le ncapsuleaz. Un header LLC specific nivelului legtur de date cum s acioneze cu un pachet de date atunci cnd se primete un cadru. De exemplu, un sistem terminal ce recepioneaz un cadru examineaz header-ul LLC pentru a vedea dac pachetul este detinat protocolului IP de la nivelul reea. Subnivelul LLC poate oferi, de asemenea, controlul fluxului i controlul secvenelor de bii. 5.4.3.7 Nivelul fizic

Nivelul fizic din modelul OSI se ocup cu recepia i transmiterea irurilor de bii, comunicnd direct cu diversele tipuri de medii de transmisiune. Fiecare mediu de transmisie reprezint valorile biilor (0 sau 1) n mod diferit. Astfel, unele dintre acestea folosesc pentru reprezentare tonuri audio, altele tranziii de stare (schimbri de voltaj) etc. Pentru fiecare mediu de transmisiune n parte este necesar s se specifice un protocol pentru specificarea modelelor de bii folosite, modalitatea de codificare a biilor n semnale media precum i diverse caracteristici fizice ale interfeelor i conectorilor corespunztoare mediilor de transmisiune.

219

Elemente de arhitectur a sistemelor de calcul i operare

Specificaiile nivelului fizic includ caracteristicile electrice, mecanice, procedurale i funcionale necesare pentru activarea, administrarea i dezactivarea legturilor fizice ntre sistemele terminale din reea. La nivelul fizic sunt identificate, spre exemplu, interfeele ntre echipamentele terminale DTE (Data Terminal Equipment) i echipamentele DCE (Data Circuit-Terminating Equipment). Echipamentele DCE sunt de regul localizate la furnizorul de servicii de reea n timp ce echipamentele DTE sunt echipamentele ataate. Serviciile disponibile unui DTE sunt cel mai des accesate prin intermediul unui modem sau a unui echipament CSU/DSU (Channel Service Unit / Data Service Unit). Conectorii existeni la nivelul fizic precum i diferitele topologii fizice sunt definite de ctre OSI ca i standarde, permind comunicaia dintre sisteme terminale diferite. Dispozitivele de reea ce acioneaz la nivelul fizic sunt repetoarele i hub-urile. Un repetor (repeater) recepioneaz un semnal digital pe care l amplific i l trimite mai departe sau l regenereaz, direcionndu-l ctre toate porturile active de ieire fr a examina coninutul datelor. Hub-ul acioneaz n acelai mod, fiind de fapt un repetor multiport. Fiecare semnal digital recepionat la un port de intrare al hub-ului este regenerat sau amplificat i trimis apoi ctre toate porturile hub-ului. n acest caz, toate dispozitivele ataate hub-ului spunem c se afl n acelai domeniu de coliziuni i n acelai domeniu broadcast. Un domeniu broadcast este un domeniu n care echipamentele din segmentul de reea respectiv "ascult" toate semnalele de tip broadcast de pe acel segment. La fel ca i repetoarele, hub-urile nu analizeaz traficul de date pe timpul retransmiterii lor. Hub-urile genereaz o reea fizic de tip stea (star) n care hub-ul este nodul central la care sunt conectate dispozitivele n form de stea. Standardul Ethernet pentru reele LAN folosete o topologie logic de tip magistral (bus), n care semnalele sunt transmise de la un capt la altul al reelei i fiecare echipament conectat la hub "ascult" dac un alt echipament transmite date.
5.4.4 Modelul TCP/IP 5.4.4.1 Introducere

Modelul de referin TCP/IP este modelul utilizat de strmoul tuturor reelelor de calculatoare, care este ARPANET-ul i de ctre succesorul acestuia, Internetul. Conceput iniial ca o reea extrem de fiabil
220

Reele de calculatoare

i care s ofere posibilitatea interconectrii diferitor tipuri de echipamente, reeaua ARPANET a Departamentului de Aprare a SUA a condus n cele din urm la realizarea arhitecturii TCP/IP sau, altfel spus, modelul de referin TCP/IP. Arhitectura TCP/IP a fost definit pentru prima dat n 1974 de ctre autorii Cerf i Kahn. Ulterior ea este dezvoltat de ctre Leiner n 1985 iar filozofia din spatele modelului este analizat de ctre Clark (1988). Modelul TCP/IP conine 4 nivele: Nivelul gazd-la-reea (host-to-network) Nivelul Internet Nivelul transport Nivelul aplicaie Figura 6.12 ne prezint comparativ modelul TCP/IP i modelul OSI.
OSI TCP/IP

Aplicaie
Nivele legate de aplicaii

Prezentare

Aplicaie

Protocoale

Sesiune

Transport

Transport

Nivele legate de fluxul de date

Reea

Internet

Legtur de date Fizic

Gazd-la-reea

Reea

Fig. 5.12 Comparaie ntre modelul TCP/IP i modelul OSI

221

Elemente de arhitectur a sistemelor de calcul i operare

5.4.4.2 Nivelul aplicaie

Spre deosebire de modelul OSI, modelul TCP/IP nu conine nivelurile sesiune i prezentare, ele nefiind incluse deoarece nu s-a simit nevoia lor. Experiena oferit de modelul OSI a dovedit c aceast viziune a fost corect deoarece n majoritatea aplicaiilor cele dou nivele nu aduc un real folos. Practic, funciunile nivelelor sesiune i prezentare din modelul OSI au fost n cazul modelului TCP/IP ncorporate n nivelul aplicaie. Nivelul aplicaie se situeaz deasupra nivelului transport i are n componen toate protocoalele de nivel nalt. Printre aceste protocoale se afl TELNET (pentru conexiuni pe calculatoare la distan), FTP (File Transfer Protocol - transfer de fiiere), SMTP (Simple Mail Transmission Protocol pentru pota electronic), DNS (Domain Name Service pentru stabilirea corespondenei ntre numele gazdelor i adresa de reea) i HTTP (HyperText Transfer Protocol pentru aducerea paginilor web).
5.4.4.3 Nivelul transport

Este urmtorul nivel de sus n jos dup nivelul aplicaie i este astfel conceput nct s permit conversaii ntre entitile pereche din sistemul terminal surs i cel destinaie, ntr-un mod asemntor cu nivelul transport din modelul OSI. La acest nivel se afl implementate dou protocoale: TCP (Transmission Control Protocol) i UDP (User Datagram Protocol). TCP este protocolul sigur i fiabil orientat pe conexiune care permite ca un flux de octei trimii de la o surs s ajung la destinaie fr erori, n timp ce UDP este un protocol nesigur, fr conexiune, destinat aplicaiilor care doresc s utilizeze propria lor secveniere i control al fluxului i nu cele oferite de TCP.
5.4.4.4 Nivelul Internet

Nivelul Internet reprezint coloana vertebral a ntregii arhitecturi TCP/IP. Rolul acestui nivel este acela de a permite sistemelor gazd s trimit pachete n orice reea i de a face ca pachetele s circule independent pn la destinaie. Pachetele de date pot sosi ntr-o ordine diferit de aceea n care au fost transmise, caz n care rearanjarea lor n ordinea corect trece
222

Reele de calculatoare

n sarcina nivelelor superioare. La nivelul Internet se definete un format standard de pachet de date (pachet IP) i un protocol denumit IP (Internet Protocol), sarcina nivelului fiind aceea de a livra pachetele IP ctre destinaie. Probleme apar la dirijarea pachetelor n reea i la evitarea congestiei; de aceea putem spune c nivelul Internet din modelul TCP/IP acioneaz ca i nivelul reea din modelul OSI. Se poate face o analogie a funcionalitii acestui nivel cu aceea a sistemului potal internaional. Atunci cnd trimitem o scrisoare la destinaie sistemul potal tie s direcioneze scrisoarea ctre destinatar, dar noi nu cunoatem mecanismele prin care se face acest lucru; singurul lucru care ne intereseaz este ca scrisoarea s ajung n bune condiiuni i n timp util la destinaie.
5.4.4.5 Nivelul gazd-la-reea

Nivelul gazd-la-reea (denumit i nivelul de acces la reea) este cel mai puin specificat dintre toate nivelele modelului TCP/IP. Numele su este oarecum prea general i confuz; acest nivel se ocup cu toate chestiunile legate de conexiunile fizice pe care trebuie s le strbat pachetele IP pentru a ajunge n bune condiiuni la destinaie. El include specificaii tehnologice legate de reele LAN i WAN, precum i toate detaliile corespunztoare nivelelor fizic i legtur de date prezente n modelul OSI.
5.5 Internetul i reelele de calculatoare 5.5.1 Introducere i concepte de baz

Internetul este un termen nou, intrat de curnd n vocabularul nostru de zi cu zi. Unii chiar abordeaz subiecte legate de "sindromul Internet" sau dependena de Internet. Vom ncerca n cele ce urmeaz s clarificm definiia acestuia, avnd n vedere c pn i muli utilizatori mptimii ai Internetului nu tiu s fac deosebirea ntre Internet i Web sau ntre serviciul de pot electronic i cel de transfer de fiiere. Trebuie s lmurim de la nceput c nu se poate da o definiie complex a termenului de Internet n cteva rnduri. Avnd ns cteva
223

Elemente de arhitectur a sistemelor de calcul i operare

noiuni de baz i o serie de caracteristici lmurite, ne putem face o privire de ansamblu asupra concepiei de Internet. n primul rnd, Internetul este o reea de calculatoare (este, de fapt, o reea de reele) la nivel mondial prin intermediul crora sunt interconectate milioane de echipamente de calcul (aici sunt incluse i calculatoarele personale) din ntreaga lume. O reea de calculatoare reprezint o colecie de calculatoare interconectate ntre ele, adic sunt capabile s schimbe informaie ntre ele. Pe de alt parte, Internetul este denumirea celei mai vaste grupri de surse de informaie din lume. Reeaua de care vorbeam mai nainte are o dimensiune extins la mrimea planetei noastre i cuprinde o cantitate inimaginabil de resurse fizice, logice, informaionale. Printre echipamentele interconectate se gsesc: calculatoare personale, staii de lucru Unix, servere de Web sau de e-mail, laptop-uri, pagere, telefoane mobile, etc. De curnd au fost conectate la Internet i dispozitive electrocasnice, cum ar fi frigiderul sau cuptorul cu microunde. Se prevede c n viitor multe dintre echipamentele electrocasnice vor dispune de conexiune Internet. Toate aceste echipamente sunt denumite sisteme gazd (hosts sau end systems). Aplicaiile Internet care ne sunt tuturor foarte familiare (pota electronic sau web-ul) sunt de fapt, aplicaii de reea ce ruleaz pe aceste sisteme gazd. Pentru a comunica ntre ele, sistemele gazd folosesc aa numitele protocoale pentru controlul transmiterii, recepiei i coreciei informaiilor care circul prin Internet. Mai multe despre protocoale n continuarea capitolului. Dintre aceste protocoale, TCP (Transmission Control Protocol) i IP (Internet Protocol) sunt cele mai importante protocoale folosite n Internet. De asemenea, pentru asigurarea conexiunii ntre ele, sistemele gazd folosesc legturi de comunicaie ce constau din diverse tipuri de cabluri, printre care cablu coaxial, torsadat, fibr optic sau pot fi conexiuni fr fir, prin unde radio, de exemplu. Una dintre caracteristicile importante ale acestor legturi este viteza teoretic de transfer a datelor care este denumit lime de band (bandwidth) i care se exprim n bii sau multipli ai acestora pe secund (1 Mb/s = 1000 bii/s). Sistemele gazd nu sunt interconectate direct ntre ele, ci prin intermediul unor dispozitive intermediare denumite rutere. Pe scurt, un ruter este un dispozitiv care preia informaia ce ajunge la el prin intermediul uneia dintre legturile (de intrare) de comunicaie i o trimite mai departe pe o alt legtur (de ieire) de comunicaie. Formatul informaiilor care sunt recepionate i transmise mai departe ntre rutere i sistemele gazd sunt precizate de protocolul IP. Acest protocol reprezint "limbajul universal" al
224

Reele de calculatoare

Internetului i de aceea se mai numete i "Internet dial tone". Drumul pe care l parcurg informaiile de la transmitor la receptor poart numele de rut (route sau path) n reea. Modalitatea de stabilire a unei conexiuni n Internet (pentru a putea transmite informaii de la un transmitor la un receptor) se bazeaz pe o tehnic denumit comutare de pachete, care permite mai multor sisteme s comunice pe o rut (sau o poriune dintr-o rut) Internet, n acelai timp. Topologia Internetului (structura sistemelor conectate la Internet) este ierarhizat n modul urmtor: la baz sunt sistemele gazd conectate la un ISP (Internet Service Provider - Furnizor de Servicii Internet) local prin intermediul unor reele de acces, furnizorii locali sunt conectai la nite furnizori naionali sau internaionali, iar acetia din urm sunt conectai mpreun la cel mai nalt nivel din aceast ierarhie. Este interesant de remarcat faptul c pot fi adugate noi componente sau nivele (noi reele sau noi reele de reele) n aceast topologie ierarhic ntr-o manier foarte simpl, aa cum ai aduga noi piese ntr-un joc de Lego. Internetul a crescut n ultimii ani i continu s creasc ntr-un ritm exponenial: dac n prima jumtate a lui 1996 au fost adugate aproximativ 3.000.000 de host-uri (sisteme gazd) [Network 1996], n prima jumtate a lui 2001 au aprut 16.000.000 de noi host-uri conectate la Internet [Network 2001]. Aceast reea uria care este Internetul nu ar fi s-ar fi putut crea dac nu ar fi fost create, testate i implementate o serie de standarde. Dac n faza incipient a reelelor de calculatoare (anii 1970) era imposibil s interconectezi computere provenite de la diveri productori (un computer IBM cu un server Gateway, spre exemplu) datorit incompatibilitii protocoalelor folosite, treptat s-a ajuns la concluzia c trebuie folosite standarde generalizate de comunicaie pentru a putea interconecta diverse echipamente provenite de la diveri productori. Astfel au luat fiin aa numitele standarde deschise (open-standards) i necesitatea conectivitii indiferent de platform (cross-platform). Aceste standarde sunt dezvoltate de organisme internaionale specializate, precum IETF (Internet Engineering Task Force) ale cror documente poart denumirea de documente RFC (Request For Comments). Dup cum reiese i din denumirea original (cereri pentru observaii, comentarii), RFC-urile s-au nscut pentru a rezolva problemele arhitecturale ale predecesorilor Internetului. Documentele RFC au evoluat astfel nct acum sunt adevrate standarde, documente tehnice i detaliate, care cuprind definiii de
225

Elemente de arhitectur a sistemelor de calcul i operare

protocoale cum ar fi TCP (Transmission Control Protocol), IP (Internet Protocol), SMTP (Simple Mail Transfer Protocol) sau HTTP (Hyper Text Transfer Protocol). La ora actual exist peste 2000 de documente RFC. Copii ale documentelor RFC sunt gzduite de numeroase site-uri Web. Una dintre aceste locaii este la Institutul de tiine ale Informaiei (ISI Information Sciences Institute - http://www.rfc-editor.org). Alte locaii sunt: http://www.faqs.org/rfcs, http://www.pasteur.fr/other/ computer/RFC i http://www.csl.sony.co.jp/rfc/. Internetul este un domeniu public, care cuprinde, dup cum am mai spus, o varietate de reele publice ale unor companii private, instituii educaionale sau guvernamentale. Exist ns i reele asemntoare private, ale cror calculatoare gazd nu sunt accesibile din afara reelei respective. O astfel de reea se numete intranet i de regul folosete aceleai tehnologii ca cele folosite n Internet.
5.5.2 Internet scurt istoric

Funcionarea Internetului se bazeaz pe protocolul TCP/IP, care este de fapt o colecie de protocoale dintre care cele mai importante sunt TCP i IP, de unde provine i denumirea de TCP/IP. De multe ori ntlnim denumirea de stiv de protocoale TCP/IP (TCP/IP Protocol Stack). Pentru a nelege funcionarea unei reele TCP/IP (bazat pe TCP/IP) trebuie s cunoatem o serie de considerente care au stat la baza naterii reelei Internet i a stivei de protocoale TCP/IP. Dac la nceputurile dezvoltrii sistemelor de calcul comerciale (sfritul anilor 1960, nceputul anilor 1970) companiile foloseau arhitecturi i protocoale proprietare (ce aparineau unui anumit productor), treptat s-a ajuns la nevoia de a achiziiona echipamente provenite de la mai muli productori. Aceste echipamente trebuiau interconectate i fcute s lucreze mpreun pe baza acelorai standarde i protocoale. Utilizarea computerelor n programul ageniei americane de stat ARPA (Advanced Research Projects Agency) din cadrul Departamentului de Aprare (DOD Department Of Defense) a condus la elaborarea coordonrii dezvoltrii unei reele independente de productor pentru a conecta marile centre de cercetare. Necesitatea unei astfel de reele a fost prima prioritate a acestui program, avnd n vedere c, iniial, fiecare centru de cercetare folosea tehnologii proprietare. Anul 1968 a marcat nceputul
226

Reele de calculatoare

elaborrii unei reele bazate pe comutare de pachete, care mai trziu a devenit reeaua ARPAnet. Reeaua ARPAnet a fost prima reea de calculatoare de arie larg (WAN Wide Area Network) din lume, conceput s permit unor pachete de date s fie rutate n reea ca entiti de sine stttoare. Acest lucru a reprezentat o revoluie n domeniu, deoarece reelele anterioare se bazau pe comutarea de circuite, ce nsemna stabilirea de conexiuni dedicate ntre dou locaii pentru ca acestea s poat schimba date. Mai mult, ARPAnet oferea pentru prima dat posibilitatea interconectrii mai multor locaii ntro topologie neregulat, permind datelor s circule ntre oricarea dintre aceste locaii pe diverse rute. Conceptul de baz era urmtorul: dac una din locaii era distrus (eventual bombardat ntr-un rzboi s nu uitm c era vorba despre un proiect militar), acest lucru nu afecta comunicaiile dintre celelalte locaii care fceau parte din reea. n aceeai perioad de timp i ali furnizori de servicii de reea au nceput s dezvolte conexiuni cu locaii din reeaua ARPAnet, ceea ce a dus treptat la apariia termenului de Internet. n anii urmtori tot mai multe organizaii au fost adugate n ARPAnet, n paralel cu dezvoltarea altor reele i tehnologii de reea, precum Ethernet. Toate aceste dezvoltri ulterioare au condus la concluzia c este nevoie de o serie de protocoale de reea care s opereze la un nivel superior celui fizic, astfel nct s se permit schimbul de informaii ntre diverse reele fizice. Aceste protocoale trebuiau implementate n software deasupra oricrei topologii de reea, indiferent c era vorba despre o reea de arie larg WAN cu comutare de pachete (ARPAnet) sau o reea local LAN (Local Area Network) Ethernet sau Token Ring.
5.5.3 Definiia unui protocol de reea

Unul din termenii cei mai folosii atunci cnd este vorba de o reea de calculatoare sau de Internet este termenul de "protocol". Vom prezenta n continuare o definiie i cteva exemple pentru a putea identifica un protocol. Probabil c cea mai bun modalitate de a nelege noiunea de protocol este aceea de a considera pentru nceput o serie de analogii cu intercomunicarea din lumea uman. S considerm exemplul n care ntrebm pe cineva unde se afl o anume strad (figura 5.13).

227

Elemente de arhitectur a sistemelor de calcul i operare

Bunele maniere (protocolul uman) ne fac s spunem nti "Bun ziua!" pentru a ncepe comunicarea cu o alt persoan. Rspunsul ar trebui s fie, desigur, tot "Bun ziua!", ca o confirmare a faptului c este acceptat comunicarea. Interpretarea rspunsului ca un accept al comunicrii ne permite acum s formulm ntrebarea care ne intereseaz. Dac raspunsul iniial al persoanei creia i adresm "Bun ziua!" ar fi fost "Las-m n pace, sunt ocupat!" sau ceva asemntor, atunci ar fi nsemnat c nu exist posibilitatea comunicrii. n acest caz, nu mai are rost s formulm ntrebarea al crei rspuns dorim s-l aflm. Uneori este posibil s nu primim nici un rspuns la o ntrebare, caz n care de regul renunm a mai repeta ntrebarea. Regulile intercomunicrii umane (protocolul uman) sunt astfel reprezentate de mesajele pe care le trimitem i de aciunile specifice pe care le ntreprindem corespunztoare rspunsului primit de la interlocutor sau producerii altor evenimente. Mesajele transmise i cele recepionate joac un rol fundamental n cazul protocoalelor umane; dac o persoan are obiceiuri diferite sau folosete un limbaj strin altei persoane, atunci protocoalele diferite nu vor permite intercomunicarea ntre respectivele persoane. Acelai lucru este valabil i n cazul comunicrii ntre entitile dintr-o reea de calculatoare. Pentru a putea comunica, respectivele entiti trebuie s foloseasc (s ruleze) acelai protocol de reea. Un protocol de reea este asemntor unui protocol uman, excepie fcnd obiectele comunicrii: n loc s avem de-a face cu oameni, avem dea face cu componente hardware sau software ale reelei. Toate activitile dintr-o reea de calculatoare (deci i din Internet) sunt bazate pe funcionarea unui anumit set de protocoale. De exemplu, comunicarea dintre dou calculatoare n reea se face prin protocoale implementate n hardware la nivelul plcii de reea pentru controlul fluxurilor de bii transmii prin intermediul suportului fizic; protocoalele de control al congestiilor au grij s controleze viteza de transmitere a datelor ntre un transmitor i un receptor iar protocoalele de pot electronic guverneaz modalitatea de transmitere i de recepie a mesajelor de tip e-mail.

228

Reele de calculatoare

Fig. 5.13 Analogie ntre un protocol uman i un protocol de reea

n figura 5.13 este prezentat cazul n care un calculator face o cerere unui server Web (asta se ntmpl n momentul n care scriem adresa web n fereastra browserului), se primete un rspuns afirmativ de conexiune din partea serverului i apoi calculatorul folosete un mesaj de tip "GET" pentru a recepiona pagina respectiv. n cele din urm, serverul returneaz coninutul fiierului calculatorului care a fcut cererea. Ca urmare a analogiei cu comportamentul uman, putem da urmtoarea definiie a protocolului: un protocol definete formatul i ordinea mesajelor schimbate ntre dou sau mai multe entiti ce comunic ntre ele, precum i aciunile ce sunt ntreprinse odat cu transmiterea sau recepia unui mesaj sau a unui alt eveniment.
5.5.4 Naterea stivei de protocoale TCP/IP

Naterea Internetului a dus n 1973 la nceputul dezvoltrii stivei de protocoale TCP/IP, care se dorea a fi o colecie de protocoale de reea bazate pe software care s permit oricrui sistem s se conecteze cu orice alt sistem, folosind orice topologie de reea. Cinci ani mai trziu, n 1978, era gata versiunea 4 IP, adic aceeai versiune pe care o folosim i astzi.
229

Elemente de arhitectur a sistemelor de calcul i operare

Imediat dup aceea au nceput s apar o serie de semnale pozitive n legtur cu recunoaterea TCP/IP: Universitatea Berkeley din California a ncorporat stiva de protocoale TCP/IP n versiunea proprie de UNIX-FreeBSD (distribuit gratis) ce avea s devin cel mai folosit sistem de operare n comunitile academice i de cercetare. Introducerea la scar larg a suitei de protocoale TCP/IP a produs o serie de schimbri majore n lumea reelelor de calculatoare. n primul rnd, topologia de baz a unei reele era concentrat pe un nod central, n care fiecare sistem ataat trimitea datele unui nod central (pe post de dispecer) pentru a fi procesate. Cu alte cuvinte, utilizatorii din reea nu aveau independen n lucru, orice procesare, tiprire la imprimant etc. trebuind s treac pe la nodul central. O dat cu introducerea TCP/IP, lucrurile s-au schimbat: s-a introdus "descentralizarea", astfel nct fiecare echipament din reea era tratat independent i complet funcional, fr a mai depinde de un nod central. Comunicarea cu alt echipament din reea se putea face acum direct, fr s se comunice mai nti cu nodul central. Reelele bazate pe protocolul IP sunt oarecum anarhice, fiecare echipament acionnd pe cont propriu ca o unitate autonom, responsabil pentru serviciile de reea proprii [Hall 2000]. Aceast concepie arhitectural a permis partajarea aplicaiilor i a resurselor la scar larg, avnd n vedere c un model centralizat top-down nu era viabil n cazul existenei a milioane de echipamente larg rspndite. n plus, acest model oferea siguran n exploatare n cazul "cderii" unei componente din reea, n contrast cu modelul centralizat n care toat funcionarea se oprea n cazul "cderii" nodului central.

5.5.5 Arhitectura Internetului

De-a lungul timpului, ARPAnet a evoluat ntr-o "reea de reele", folosind TCP/IP i conectnd ntre ele diverse organizaii comerciale, educaionale, politice etc. A rezultat astfel o structur general destul de neregulat a Internetului (figura 5.14).

230

Reele de calculatoare

Fig. 5.14 Arhitectura general a Internetului

n reeaua Internet exist: Furnizorii de servicii Internet care asigur clienilor acces la Internet - ISP (Internet Service Provider); Furnizorii de servicii de reea, care asigur conexiunile ntre furnizorii de acces la Internet din ntreaga lume - NSP (Network Service Provider sau Backbone Provider); n figur se mai pot observa aa numitele NAP (Network Access Points) care reprezint punctele de acces la reea. n zilele noastre se tinde spre o arhitectur mai structurat, organizat ierarhic ca un arbore (figura 5.15). La primul nivel din arbore se afl civa furnizori de servicii care ofer majoritatea serviciilor de interconectare la nivel unei ri sau la nivel mondial, care se numesc furnizori naionali. Majoritatea acestor firme sunt mari companii de telecomunicaii specializate n reele de scar larg.

231

Elemente de arhitectur a sistemelor de calcul i operare

Fig. 5.15 Structura ierarhic a Internetului

Pe urmtorul nivel n arbore gsim furnizorii de acces Internet sau de servicii Internet (ntlnii uneori i sub denumirea de IAPs Internet Access Providers) pe care i denumim furnizori regionali. Acetia ofer acces la nivel unei localiti sau regiuni geografice restrnse, avnd servicii de conexiune la viteze mai reduse dect furnizorii naionali. Urmtorul nivel l constituie clienii reelei (fie ei clieni PC sau servere) ce sunt conectai prin intermediul unui furnizor de servicii Internet la un punct de acces la reea, de unde se face legtura spre ntreaga reea Internet. Punctele de acces la reea sunt, de regul, bazate pe tehnologie ATM i FDDI.
5.5.6 Componente Internet 5.5.6.1 Calculatoare gazd, clieni i servere

Computerele folosite n jargonul reelelor de calculatoare sunt denumite, de regul, calculatoare gazd (hosts) sau sisteme terminale (endsystems). Denumirea de calculator gazd provine de la faptul c acesta gzduiete programe de nivel aplicaie (program de e-mail, navigator web sau program de chat). Denumirea de sisteme terminale provine de la faptul c ele se afl la "marginea" Internetului (vezi figura 5.16).
232

Reele de calculatoare

Fig. 5.16 Componente ale Internetului

Calculatoarele gazd se mpart n dou categorii: clieni i servere. Clienii sunt reprezentai de calculatoare PC sau staii de lucru, n timp ce serverele sunt calculatoare mai puternice care au de obicei funcionaliti specifice: pot fi servere de baze de date, servere de mail sau servere de Web, etc. Sintagma client/server este ns cu mult mai important n cadrul reelelor de calculatoare, avnd n vedere faptul c majoritatea acestora folosesc modelul client/server. Conform acestui model, un program client ce ruleaz pe un sistem terminal cere i primete informaii de la un program server ce ruleaz pe alt sistem terminal. Cele mai multe aplicaii Internet (Web, e-mail, ftp, telnet) folosesc acest model; datorit faptului c un program client ruleaz pe un calculator i programul server ruleaz alt calculator, aceste aplicaii se mai numesc i aplicaii distribuite. Dac cele mai multe sisteme terminale sunt formate din calculatoare personale, staii de lucru i servere, n ultimul timp au aprut din ce n ce mai multe echipamente conectate la Internet ca sisteme terminale (camere digitale, sisteme WebTV etc.) [Dertouzous 1999].

233

Elemente de arhitectur a sistemelor de calcul i operare

5.5.6.2 Servicii orientate pe conexiune

Sisteme terminale aflate n reea comunic ntre ele i fac schimb de informaii conform unui protocol de comunicaie. Serverele, ruterele, legturile fizice i alte componente ale Internetului ofer mijloacele transportrii acestor mesaje ntre aplicaiile sistemelor terminale. Serviciile de conexiune oferite se mpart n dou tipuri: servicii neorientate pe conexiune (connectionless) i servicii orientate pe conexiune (connectionoriented). n cazul serviciilor bazate (orientate) pe conexiune, programele client i server trimit pachete de control unul altuia nainte de a trimite pachetele cu date. Acest procedeu se numete handshaking ("strngere de mn") i are rolul de a ateniona att clientul ct i serverul c urmeaz s aib loc schimbul de date. O dat ncheiat procedura de handshaking, se spune c se stabilete o conexiune ntre cele dou sisteme terminale. Sistemele terminale sunt informate despre aceast conexiune dar modalitatea prin care pachetele care sunt trimise de la surs la destinaie prin Internet nu permite stocarea unor informaii legate de starea conexiunii. Serviciul orientat pe conexiune din Internet ofer i alte servicii ce in de transferul sigur al datelor, de controlul fluxului sau de controlul congestiilor. Transferul sigur al datelor (reliable data transfer) nseamn faptul c o aplicaie se poate baza pe conexiune pentru a transmite datele fr erori i n ordinea corect. Sigurana transmisiei datelor n Internet se face prin utilizarea confirmrilor i a retransmisiilor. Pentru a ne face o idee general asupra modului n care funcioneaz acest lucru, s presupunem c a fost stabilit o conexiune ntre dou sisteme terminale X i Y. Atunci cnd X primete un pachet de la Y, i trimite o confirmare; atunci cnd Y primete confirmarea, atunci el tie c respectivul pachet a ajuns la destinaie. Dac sistemul Y nu primete confirmarea, atunci presupune cpachetul respectiv nu a fost primit de ctre X i n acest caz retransmite pachetul. Controlul fluxului este folosit pentru a ne asigura de faptul c nici una dintre prile implicate n conexiune nu-i aglomereaz "interlocutorul" trimind mai multe date dect acesta este capabil s recepioneze n unitatea de timp. ntr-adevr, o aplicaie de la unul dintre capetele conexiunii poate s nu fie n stare s proceseze informaia la fel de repede aa cum ea sosete, existnd riscul suprancrcrii. Serviciul de control al fluxului foreaz sistemul ce transmite datele s reduc viteza de transmitere ori de cte ori apare riscul suprancrcrii. Serviciul de control al congestiilor previne intrarea ntr-o situaie de blocaj. Cnd un ruter devine congestionat, dimensiunea memoriilor sale
234

Reele de calculatoare

tampon poate fi depit i s se produc pierderi de pachete. n astfel de situaii, dac fiecare dintre sistemele pereche ce comunic continu s trimit pachete n reea, are loc un blocaj i astfel puine dintre aceste pachete vor mai ajunge la destinaie. Internetul evit aceast problem fornd sistemele terminale s-i reduc ratele de transfer la cer trimit pachete n reea n astfel de perioade de congestie. Sistemele terminale sunt atenionate de existena congestiilor atunci cnd nu mai primesc confirmri pentru pachetele pe care le-au trimis la destinaie. Transferul sigur de date, controlul fluxului i controlul congestiilor nu reprezint caracteristicile generale ale unui serviciu orientat pe conexiune; orice serviciu sau protocol orientat pe conexiune are la baz doar procedura de handshaking pentru iniierea transferului de date ntre cele dou sisteme terminale. Serviciul orientat pe conexiune al Internetul este TCP (Transmission Control Protocol), definit iniial n documentul RFC 793. Caracteristicile TCP includ transferul sigur de date, controlul fluxului i controlul congestiilor.
5.5.6.3 Servicii neorientate pe conexiune

Dup cum ne putem atepta, ntr-un astfel de serviciu de conexiune nu exist procedura de handshaking. n momentul n care una dintre aplicaiile ce comunic trimite pachete celeilalte aplicaii, transmitoarea trimite pur i simplu pachetele de date. Avnd n vedere c nu mai exist procedura iniial de stabilire a conexiunii, nseamn c datele pot fi transmise mai rapid. Cum nu exist nici confirmri de primire a pachetelor, nseamn c cel care trimite datele nu este niciodat sigur c acestea au ajuns la destinaie. Acest tip de serviciu nu se ocup nici cu controlul fluxului, nici cu controlul congestiilor. Serviciul neorientat pe conexiune din Internet poart numele de UDP (User Datagram Protocol), definit n documentul RFC 768. Printre aplicaiile Internet ce folosesc serviciul TCP se numr: TELNET conectare la distan, SMTP pot electronic, FTP transfer de fiiere, HTTP World Wide Web. Exemple de aplicaii Internet care folosesc UDP sunt: Internet phone, audio-la-cerere (audio-on-demand) i video conferina.

235

BIBLIOGRAFIE
1 2 [Aranghelovici 1999] [Bach 1986] Aranghelovici Renato - Windows 2000, articol PC Magazine, august 1999 Bach, M.J. - The Design of the UNIX Operating System, Prentice Hall, Englewood Cliffs, N.J., 1986 Brescu C.L., Duda Liviu - Internet pentru nceptori, TIMS, Bucureti, 1995 Busschbach Peter - The Internet Protocol and other things of interest, presentation at Broadband Networking Symposium, Barcelona, 1999 Davis W., Rajkumar T.M. - Operating Systems, A Systematic View - Fifth Edition, Editura Addison Wesley, 2001 M. Dertouzous, The future of computing, Scientific American, august 1999, pag. 52-55 Dodescu Gh., Vasilescu A., Sisteme de operare MS-DOS i UNIX, Editura Viaa Romneasc, Bucureti, 1994 Dodescu Gh., Nstase F., Sisteme de calcul i operare, Bucureti, Editura Economic, 2002 Dodescu Gh., Nstase F., Sisteme de calcul i operare, Editura Aldo, Bucureti, 1995 Goldman E. James - Local Area Networks A client/server approach John Wiley&Sons, Inc., 1996 Hahn Harley, Stout Rick - The Internet Complete Reference, 1993 236

3 4

[Brescu 1995] [Busschbach 1999]

[Davis 2001]

6 7

[Dertouzous 1999] [Dodescu 1994]

8 9 10

[Dodescu 2002] [Dodescu 1995] [Goldman 1996]

11

[Hahn 1993]

12

[Hall 2000]

Eric A. Hall, Internet Core Protocols: the definitive guide, O'Reilly & Assosiates, Inc., 2000 Howe Walt - A brief history of the Internet, walthowe@delphi.com, 2000 James Kurose i Keith Ross, Computer Networking, A Top-Down Approach Featuring the Internet - Addison Wesley, 2001 Todd Lammle, CCNA Study Guide, Second Edition, Sybex, 2000 Leiner M. Barry, Cerf G. Vinton, Clark D. David and others, A brief History of the Internet, Internet Society, bleiner@computer.org, 1997 Lupu Viorel - Windows 2000 perspectiva dezvoltatorului, articol PC Report, februarie 2000 Nstase Floarea - Arhitectura reelelor de calculatoare Editura Economic, Bucureti 1999 Network Wizards, Internet Domain Survey, July 1996, http://www.nw.com/zone/WWW9607/report.html Network Wizards, Internet Domain Survey, July 2001, http://www.isc.org Norton Peter - Secrete PC Editura Teora, Bucureti 1998 Norton Peter - Ghid complet pentru Windows 95 Editura Teora, Bucureti 1998 Norton Peter - Ghid complet pentru Windows 98 Editura Teora, Bucureti 1999

13 14

[Howe 2000] [Kurose 2001]

15 16

[Lammle 2000] [Leiner 1997]

17

[Lupu 2000]

18

[Nstase 1999]

19

[Network 1996]

20 21 22

[Network 2001] [Norton 1998-1] [Norton 1998-2]

23

[Norton 1999]

237

24

[Piti 1999]

Piti Andrei - GNU/Linux: o alegere moral?, articol PC Report, noiembrie 1999 Pol Daniel - Administrarea n Windows 2000, articol PC Report, februarie 2000 Roca I.G.,pu N.,Cristea V., Atanasiu Irina, Costinescu B., Nstase Floarea, Stanciu Carmen, Paiu Octavian, Godza Gavril, Intranet, Editura ASE Bucureti, 1999 Sabu Mircea - Windows 2000, articol PC Magazine, martie 2000 Stoian Adrian - Proiectarea reelelor Windows 2000, articol PC Report, martie 2000 Stoian Adrian - Noi tehnologii n Windows 2000, articol PC Report, februarie 2000 Szelag C. Russell - Mission possible: Delivering QoS-Capable VPNs, Lucent Technologies, 1999 Andrew Tanenbaum, Computer Networks, 3rd Ed. Prentice-Hall, 1996 Reele de calculatoare Andrew Tanenbaum, Agora, Tg. Mure 1998 Theis T.N. - The future of interconnection technology, IBM Journal of Research and Development, 1999 Vasilescu Adrian - Reele de calculatoare Editura Inforec, Editura ASE Bucureti 1999 Williams R. Computer Systems Architecture, A Networking Approach, Editura Addison Wesley, 2001 Zota Rzvan Daniel - Soluii de securitate pentru Internet, articol Revista Informatic Economic, Editura Inforec, Bucureti, 1999

25 26

[Pol 2000] [Roca 1999]

27 28 29 30 31 32 33

[Sabu 2000-1] [Stoian 2000-1] [Stoian 2000-2] [Szelag 1999] [Tanenbaum 1996] [Tanenbaum 1998] [Theis 1999]

34 35

[Vasilescu 1999] [Williams 2001]

36

[Zota 1999]

238

37

[Zota 2002]

Zota Rzvan Daniel - Reele de calculatoare n era Internet, Editura Economic, Bucureti, 2002 Zota Rzvan Daniel Sisteme de operare pentru reele de calculatoare, Editura Economic, Bucureti, 2002 Zota Rzvan Daniel Sistemul de operare UNIX. Utilizare i programare shell, Editura ASE, Bucureti, 2003

38

[Zota 2002]

39

[Zota 2003]

239

You might also like