Introducere la Calculatoarele Numerice - PDF
Document Details
Uploaded by FunChrysoprase4791
Universitatea Politehnica din București
Tags
Summary
Acest document prezintă o introducere în arhitectura sistemelor de calcul, discutând despre limbaje de programare, maşini virtuale şi evoluţia calculatoarelor de-a lungul generaţiilor. Prezentarea include consideraţii despre calculatoarele mecanice, tranzistoare, circuite integrate şi VLSI. Este util pentru elevii elevilor de liceu care doresc să înveţe mai multe despre informatică şi programare.
Full Transcript
1. INTRODUCERE calculator numeric = o maşină care poate executa o sarcină prin efectuarea instrucţiunilor care i-au fost atribuite program = o secvenţă de instrucţiuni care descrie modul de efectuare a unei anumite sarcini ARHITECTURA SISTEMELOR DE CALCUL = complexitatea poate fi mai uşor ge...
1. INTRODUCERE calculator numeric = o maşină care poate executa o sarcină prin efectuarea instrucţiunilor care i-au fost atribuite program = o secvenţă de instrucţiuni care descrie modul de efectuare a unei anumite sarcini ARHITECTURA SISTEMELOR DE CALCUL = complexitatea poate fi mai uşor gestionată, iar sistemele informatice pot să fie proiectate într-un mod sistematic şi organizat prelucrările de date prelucrările de informaţii prelucrările de cunoştinţe prelucrările inteligente (inteligenţa artificială Spaţiul datelor = caractere, numere, simboluri Spaţiul informaţiilor = o colecţie de date legate între ele printr-o anumită relaţie sau structură sintactică Spaţiul cunoştinţelor = un subspaţiu în spaţiul informaţiilor. Informaţiile sunt legate între ele printr-o structură semantică. Semantica reprezintă un set de reguli. Spaţiul prelucrărilor de tip inteligenţă artificială (IA) = lucrează cu baze de cunoştinţe, raţionament sau cu alte mijloace specifice domeniului de inteligenţă artificială. Calculatoarele de astăzi = suficient de rapide şi performante = sisteme- expert. Gradul de complexitate este invers proportional cu volumul. 1.1. Limbaje şi maşini virtuale Se poate spune deci că o maşină defineşte un limbaj, și invers. Fiecare mașină va avea ca si caracteristici atașate 2 noțiuni: - hardware-ul pe care lucram, M - limbajul de programare software-ul asociat, notat cu L 1.2. Calculatoarele actuale – calculatoare multinivel Cea mai mare parte a calculatoarelor actuale au mai mult de două niveluri. Predomină foarte mult calculatoarele care au curent 6 niveluri. Pornim de la simplu (fizic) și mergem spre complex (virtual). Nivelul 0 = nivel fizic; la acest nivel sunt porţile (componente logice interconectate, 1/mai multe intrări logicie => o ieșire specifică ȘI/SAU/NU/etc., alcătuite din tranzistoare). Acest nivel execută instrucțiunile limbajului microprogramat. Nivelul 1 = nivelul microprogramat (nivelul limbajului intern al maşinii, poate să existe sau nu) este ultima interfață până la procesor. Nivelul 2 = nivelul maşinii tradiţionale (nivelul de microprocessor facut la AMP) Se face interpretarea microprogramului și se primesc comenzile sistemului de operare semi-interpretate. S Nivelul 3 = nivel hibrid = nivelul sistemului de operare cel care face legatura intre nivelul limbajului de asamblare si al masinii traditionale Nivelul 4 = nivelul limbajului de asamblare; nu poate să lipsească. Aici compilatorul generează cod direct Nivelul 5 = nivelul limbajului de aplicaţie -> limbaje de nivel înalt Nivelul 6 (cel mai specializat) = nivelul sistemelor expert. Aceste programe conţin numeroase date pentru aplicaţii care pot aparţine de domenii diferite de lucru. 1.3. Etapele evoluţiei arhitecturii calculatoarelor 1.3.1. Generaţia 0: calculatoarele mecanice (1642-1944) prima maşină de calcul -> Blaise Pascal (1642) prima maşină analitică -> Charles Babbage (1834) cuprindea patru părţi: memoria, unitatea de calcul, intrarea și ieşirea prima maşină electronică -> Howard Aiken (1944) 1.3.2. Prima generaţie: tuburile cu vid (1945-1955) Primul calculator construit şi folosit a fost Enigma von Neumann: din 5 părţi: memoria, unitatea aritmetică şi logică, unitatea de control, dispozitivele de intrare şi cele de ieşire Caracteristicile calculatoarelor din prima generaţie: Tuburi cu vid pentru circuite Consum foarte mare de putere Timp de viaţă mic din cauza emisiei de electroni Rezolvarea serială a problemelor din metale în tub cu vid Intrări pe bază de cartele perforate Baterii magnetice utilizate pentru memorie Ieşiri tipărite la imprimantă Uriaşe, lente, scumpe şi adesea lipsite de Utilizarea de benzi magnetice siguranţă în funcţionare Utilizarea de limbaj maşină Emisii mari de căldură, care le-au făcut să Memorie principală de capacitate limitată funcţioneze defectuos Programatorii au lucrat numai în limbaj Costuri de exploatare ridicate maşină 1.3.3. A doua generaţie: tranzistoarele (1956-1965) Caracteristicile computerelor din a doua generaţie: Folosirea transistoarelor Mai rapide şi mai fiabile decât sistemele din prima generaţie Dimensiuni mai mici, mai ieftine şi mai rapide faţă de prima generaţie Emisii importante de căldură, deşi ceva mai reduse Bazate pe tot pe cartele perforate şi imprimante pentru intrări/ieşiri Folosirea limbajelor de asamblare şi a limbajelor de nivel înalt Date stocate pe medii magnetice Costurile au rămas în continuare ridicate Necesitau aer condiţionat pentru răcire Introducerea limbajului de asamblare şi a sistemului de operare software 1.3.4. A treia generaţie: circuitele integrate (1965-1980) Generatia in care s-a trecut de la zecimal la binar. Caracteristicile computerelor din a treia generaţie: Folosirea circuitelor integrate Introducerea procesării paralele Ceva mai mici, mai ieftine şi mai rapide faţă de a doua generaţie Folosirea plăcilor de bază Date introduse de la tastatură Rezultate vizualizate pe monitoare Sisteme de operare cu multitasking Limbaje de programare simplificate (BASIC) 1.3.5. A patra generaţie: circuitele VLSI (după 1980) Încep să apară primele calculatoare personale. Caracteristicile computerelor din a patra generaţie: Folosirea de unităţi centrale de prelucrare (CPU) cu mii de tranzistoare Introducerea de microprocesoare produse prin tehnologia VLSI Mult mai mici decât a treia generaţie, modele: desktop, laptop, palmtop Folosirea unui mouse Utilizarea în reţele de calculatoare Mai ieftine decât generaţia a treia Introducerea interfeţelor grafice pentru utilizatori (GUI) Foarte rapide, în comparaţie cu generaţiile precedente Peste 19 miliarde de tranzistoare în microprocesoarele de top (Super VLSI), faţă de 2.300 la Intel 4004 1.3.6. A cincea generaţie: prezent şi viitor (după 1990/2010) Caracteristicile computerelor IA din a cincea generaţie: Obiectivele majore în domeniul IA sunt de a permite dispozitivelor: Alte domenii care sunt orientate spre realizarea de aplicaţii în IA sunt: să înțeleagă limbajul natural; calculul cuantic; să recunoască discursul uman; procesarea masiv paralelă; să vadă lumea în perspectivă tridimensională; Proiecte IA în curs de desfăşurare: să joace jocuri interactive; asistenţi personali virtuali, de exemplu: Siri, Google Now, să pună în aplicare sisteme-expert în domeniul Braina; medical şi în alte domenii complexe; automobile inteligente, de exemplu: maşinile autopilot să aplice analize bazate pe algoritmi euristici de clasificare; Tesla, Google; să implementeze reţelele neuronale; instrumente automate generatoare de ştiri, de exemplu: Wordsmith (folosit de Yahoo şi Fox); diagnostic. asistată de calculator pentru depist. cancerului 1.4. Categorii de calculatoare (după destinaţie) LEGEA LUI MOORE PENTRU CIPURI DE MEMORIE se poate formula astfel: dublarea numărului de tranzistoare are loc la fiecare 18 luni (66%/an). NUMARUL DE TRANZISTOARE ESTE LA SCARA LOGARITMICA. Consecinţa legii lui Moore este aşa-numitul „cerc virtuos”: Cercul vicios este o succesiune de implicatii de tip cauza-efect. Daca creste numarul de tranzistoare, asta inseamna progres tehnologic, deci CIP-uri mai bune, mai ieftine. Daca scade pretul inseamna ca pe piata vor aparea noi aplicatii care creeaza o piata de desfacere companiilor emergente si acest lucru inseamna concurenta. Concurenta inseamna cerere economica tot mai ridicata si tehnologiile continua sa creasca, in consecinta. Si de aici se reia acest ciclu, care asigura cresterea. 1.4.1. Exemple de familii de calculatoare: A. Arhitectura Intel x86 | B. Arhitectura ARM | C. Arhitectura AVR A. Arhitectura Intel x86 B. Arhitectura ARM Microcontrolerele din familia ARM (Advanced RISC Machines) -> categoria high-end Un exemplu reprezentativ este arhitectura Nvidia Tegra 2 system-on-a-chip (2011) C. Arhitectura AVR Microcontrolerele din familia AVR (Atmel/Microchip Technology) -> din categoria low-end, acestea putând fi clasificate în trei clase: Tiny - pt intrari/iesiri digitale, intrari analogice. Mega - se poate configura chipul I/O pt mai multe canale intrare/iesire si are si o iesire analogica. XMega - introduce USB 1.4.2. Spectrul sistemelor de calcul Richard Hamming a remarcat că schimbările mari în cantitate pot duce la schimbări fundamentale în calitate. Exemplele date sunt o mașină de curse care atinge 1000 km/oră față de una obișnuită cu 100 km/oră și diferența între o clădire cu 100 de etaje în SUA și una de 10 etaje în România. În domeniul calculatoarelor, progresul tehnologic a permis creșteri de performanță la un cost constant sau reducerea costurilor pentru performanțe similare. Aceasta a dus la o diversitate mare de sisteme de calcul disponibile astăzi. 2. TIPURI DE ARHITECTURI 2.1. Clasificarea arhitecturii sistemelor de calcul FLYNN | WANG | TANENBAUM 2.1.1. Clasificarea FLYNN se face după gradul de multiplicitate Flynn a folosit urmatorul citeriu: orice computer analizeaza date si le prelucreaza pe instructiuni. Conform acestei clasificări există patru tipuri de arhitecturi: Pentru aceste arhitecturi există trei tipuri de componente SISD Single Instruction Stream – Single Data Stream de sistem: SIMD Single Instruction Stream – Multiple Data Stream 1. UC (unitatea centrală) MISD Multiple Instruction Stream – Single Data Stream 2. UP (unitatea de prelucrare) MIMD Multiple Instruction Stream – Multiple Data Stream 3. MM (modulul de memorie) Toate schemele următoare respectă succesiunea evenimentelor din arhitectura Von Neumann: instrucţiunile şi datele sunt extrase din memorie instrucţiunile sunt decodate de UC UC trimite secvenţa de instrucţiuni către UP pentru execuţie datele circulă între memorie şi procesor pe o cale bidirecţională Schemele (structura) celor 4 arhitecturi: SISD SIMD MISD MIMD Notații: SD – şirul de date SI – șir instrucţiuni UC – unitatea centrală/de comandă (ia instructiunile din modulul de memorie, le trimite unitatii de prelucrare) UP – unitatea de prelucrare (face calcule folosind instructiunile) MM – modul de memorie (stochează datele) 2.1.1.1. Arhitectura SISD Avem un singur sir de instructiuni care lucreaza cu un singur sir de date Memoria este comună Instrucţiunile sunt executate serial Un calculator cu structură SISD poate avea mai multe funcţii definite, toate găsindu-se în același UC Fenomenul de gatuire se manifesta in orice punct al acestei scheme Exemple: IBM 7090 , VAX 11/780 , CDC 6600 , IBM 360/91 , CRAY. Limitările arhitecturii SISD ☹ viteza calculatorului este determinată de perioada ceasului dacă perioada ceasului scade (frecvența crește), calculatorul devine în consecință mai rapid Cum obțin un ceas mai rapid? - calea de semnal să fie mai scurtă (costă mult) - tranzistoarele folosite să fie mai rapide (creștere nr. tranz. => creștere a căldurii => sisteme de răcire => money) Din nefericire, se pare că ambele au atins o anumită limitare din punct de vedere tehnologic + determină costuri ridicate. 2.1.1.2. Arhitectura SIMD Avem un singur sir de instructiuni care prelucrează un șir de date multiple Memoria este partajată, este acum un vector coloană (memoria este împărțită în mai multe memorii) UP identice, supervizate de o singură UC SD1,..., SDn – seturi de date diferinte Maşinile SIMD pot efectua două tipuri de prelucrări: pe cuvânt (word- slice) şi pe bit (bit-slice) Lucrează foarte bine pe seturi de date formate de matrice de dimensiuni foarte mari Este cel mai bun exemplu pentru o aplicatie care lucreaza cu date satelitare. Facem o singura prelucrare pe mai multe seturi de imagini. Exemplu de arhitectură SIMD: nucleul de la GPU Fermi (Nvidia) Instructiunile vin din Memoria Cache dedicata instructiunilor. Blocurile de Instruction Dispatch sunt responsabile cu dimensionarea acestei instructiuni in functie de gradul de paralelism. Fiecare coloana are cate 8 nuclee, fiecare lucreaza in paralel (avem 4 siruri de date paralizate) => aceleași calcule pe mai multe SD Două regsitre de intrare în care se pun operanzi. ALU face operațiile simple. FP Unit face operațiile complexe. Rezultatele sunt depuse în registru. Limitările arhitecturii SISD ☹ Aceste maşini sunt în general făcute la comandă şi costă foarte mult. 2.1.1.3. Arhitectura MISD Avem mai multe instructiuni care prelucrează un singur șir de date Fiecare UC lucrează cu şirul de instrucţiuni propriu SI1,..., SIn Fiecare UP lucrează cu același șir de date SD Partajare pe orizontală = un singur SD, mai multe SD Ieşirea de la UP1 devine intrare pentru UP2 ş.a.m.d. Nu a fost niciodată fabricată în scop comercial Nu se adresează nici uneia dintre aplicaţiile de bază Structura se numeşte macro-pipeline (are doar o valoare teoretică) 2.1.1.4. Arhitectura MIMD Avem multiple șiruri de instructiuni care prelucrează un șir de date multiple Sunt cunoscute sub denumirea de multiprocesoare paralelismul este realizat prin lansarea în execuţie a mai multor instrucţiuni în acelaşi timp pe diferite seturi de date Memoria: matrice de linii și coloane Exista 2 tipuri de interactiuni: - Interactiunile intre date – cum partajam memoria cat mai eficient - Interactiunile intre instructiuni – cum comunica instructiunile Exemple: Cedar , BBN Butterfly , Alliant FX , Ultracompute. Avantajele arhitecturii MIMD sunt: viteză mare de prelucrare grad ridicat de toleranţă la defectări Dacă UP sunt interactive => MIMD intrinsec MIMD intrinsec + interacțiunea între microprocesoare este puternică => sistemul cu cuplaj strâns (A: comoditate) ex) CRAY 2 MIMD intrinsec + interacțiunea între microprocesoare nu este puternică => sistemul cu cuplaj slab (A: scalabilitate) ex) IBM 370/168 2.1.1.5. Sisteme cu memorie partajată (shared memory) memoria este accesată de toate procesoarele Arhitectura von Neumann a fost extinsă cu memorie cache Memoria cache = o memorie locală ataşată fiecărui procesor în parte, care îi permite procesorului să aibă acces rapid la propriile seturi de instrucţiuni şi date, dar să poată accesa în continuare memoria principală prin magistrala de memori „Multiprocesare simetrică” Limitările arhitecturilor MIMD cu memorie partajată ☹ La aceste arhitecturi, „gâtul sticlei” (bottleneck) îl reprezintă magistrala de memorie. Performanță = viteză de lucru | putere de calcul | timp de execuție IDEAL: ideal ar trebui sa fie liniar, adica cu cat creste numarul de procesoare, cu atat ar trebui să crească performanța REAL: undeva pana la 6 procesoare respecta cresterea proportional liniara, dupa care panta incepe sa devina tot mai mica, peste 20: incepe sa fie chiar plata, nu mai creste Există două tipuri de sisteme MIMD cu memorie partajată: A. cu resurse globale (Global Shared Memory) “Va exista un punct in care toata lumea va trebui sa acceseze niste resurse” A1. arhitectura UMA (Uniform Memory Access) A2. arhitectura UMA cu memorii cache locale B. cu resurse distribuite (Distributed Shared Memory) B1. arhitectura NUMA (Non-Uniform Memory Access) B2. arhitectura COMA (Cache-Only Memory Access) B3. arhitectura CC-NUMA (Cache Coherent Non-Uniform Memory Access) Arhitectura GSM UMA UMA cu memorii cache locale Arhitectura DSM NUMA COMA CC-NUMA A. Arhitectura GSM - sisteme cu cuplaj strâns, datorită gradului ridicat de partajare a resurselor - funcționarea este coordonată de către un singur sistem de operare A1. Arhitectura UMA Principala caracteristică a calculatoarelor UMA este că toate procesoarele au timp de acces egal la memoria partajată. Memoria fizică a calculatoarelor de tip UMA este compusă din mai multe blocuri care formează un spațiu unic de adresare. Memoria are aceeasi sansa sa fie accesata in partea din stanga, in partea din mijloc sau in partea din dreapta. A2. Arhitectura UMA cu memorii cache locale = UMA îmbunătățit: utilizarea memoriilor cache la nivelul elementelor de procesare Fiecare procesor va avea asociată o astfel de memorie. Atunci când un procesor solicită date, mai întâi se verifică dacă aceste date se găsesc deja în memoria cache locală. În caz afirmativ, acestea se transferă foarte rapid procesorului, fără a accesa memoria partajată (aici rămân doar datele și instrucțiunile pe care le folosesc toate procesoarele) B. Arhitectura DSM - Memoriile nu mai conțin o componentă comună pe care să o poată accesa toată lumea - Reprezintă sisteme cu memorie partajată, DAR care este distribuită din punct de vedere fizic B1. Arhitectura NUMA Fiecare procesor are o memorie locala separata Procesoarele comunică prin retea, dar lucreaza numai cu date si instructiuni ținute separat timpul de acces la memorie = neuniform Factorul NUMA = arată diferenţele de latenţă pentru accesarea datelor din memoria locală comparativ cu accesarea dintr-o zonă care nu este locală (se referă de obicei la cele mai îndepărtate două procesoare ale unei reţele) B2. Arhitectura COMA Pleaca de la arhitectura anterioara. Memoria locala devine memorie cache integrata in procesor (Procesorul si cache-ul asociat sunt in acelasi cip) Este o memorie mai rapidă și o schemă mai ieftină. B3. Arhitectura CC-NUMA Se combină NUMA cu COMA (avem atât memorie locală cât și cache) Se asigură coerență: prin blocuri suplimentare, în cache se pun acele date care se vor schimba foarte dinamic, actualizate mai repede => cache asigură coerența Arhitectura CC-NUMA este utilizată de o serie de supercalculatoare foarte cunoscute: Bull NovaScale, HP Superdome şi SGI Altix. Dezavantajele arhitecturilor DSM Principalul dezavantaj al arhitecturilor MIMD cu memorie distribuită (NUMA, COMA, CC-NUMA) îl reprezintă întârzierile care pot să apară atunci când un procesor dorește să acceseze date aflate în memoria locală a unui alt element de procesare. Avantajele arhitecturilor DSM Principalul avantaj al acestor sisteme îl reprezintă scalabilitatea (posibilitatea extinderii prin conectarea unor noi procesoare). ~ Exemple de arhitecturi MIMD cu memorie partajată ~ Arhitectura sistemelor multiprocesor Arhitectura reţelei crossbar (multistage) Avem: 2 procesoare 2 canale de intrare iesire (in care se leaga dispozitivele I/O) Situatie practica de implemenatre 4 memorii Organizam aceleasi 4 memorii si acelasi 4 unitati Aceste conexiuni sunt rezolvate de rețeaua de master intr-o structura de tip Grid, o structura interconectare. matriciala cu linii si coloane care produc intersectii. Noi nu trebuie sa activam toata reteaua (doar intersectia intre procesorul sau i/o si memoria dorita. Asiguram o comunicare foarte rapida, fara sa incarcam reteaua. 2.1.1.6. Sisteme fără memorie partajată (shared nothing) fiecare procesor are propria memorie (calculatoare independente legate într-o reţea) Procesoarele comunica intre ele pe retea, dar nu isi partajeaza deloc instructiunile si datele. Pentru ca aceste calculatoare să lucreze bine trebuie să existe un protocol de transmitere bun (rapid și fără erori) a mesajelor între ele. Aceste noduri sunt conectate şi printr-o reţea convenţională Ethernet din motive de management al sistemului. 2.1.2. Clasificarea WANG se face după gradul de paralelism în procesarea cuvintelor/biţilor m = numărul de cuvinte procesate la un moment dat n = lungimea unui cuvânt Conform acestei clasificări, există patru tipuri de arhitecturi: m = numărul de cuvinte n = lungimea unui cuvânt Word Serial – Bit Serial WSBS m=1 n=1 Word Serial – Bit Parallel WSBP m=1 n>1 Word Parallel – Bit Serial WPBS m>1 n=1 Word Parallel – Bit Parallel WPBP m>1 n>1 În cazul tipului WPBP, structura paralelă este completă, corespunzătoare prelucrării pe matrice m x n. În cazul tipului WSBP, prelucrarea este pe orizontală, iar în cazul tipului WPBS, prelucrarea este pe verticală. 2.1.3. Clasificarea TANENBAUM se face după gradul de multiplicitate și gradul de paralelism = este o clasificare integratoare deoarece ține cont de ambele clasificări de mai sus: FLYNN și WANG 2.2. Structura fizică a unui calculator secvenţial Un calculator secvential sau serial inseamna o arhitectura von Neumman Caracterul secvenţial al calculatorului rezultă din modul de execuţie al programului. Etape majore: încărcarea instrucţiunii IF (instruction fetch) decodificarea instrucţiunii ID (instruction decoding) încărcarea (din memorie) a operanzilor OF (operand fetch) execuţia operaţiilor impuse de instrucţiune EX (execution) După terminarea unei instrucţiuni, se trece la următoarea. Astfel, programul este executat secvenţial, instrucţiune cu instrucţiune. Sistemul de calcul este compus din două subsisteme principale: subsistemul hardware (echipamente fizice componente) subsistemul software (programele şi structurile de date) Structura de bază a calculatorului secvenţial, cu program memorat, stabilită de von Neumann în 1945 cuprinde cinci unităţi funcţionale: o unitatea de intrare (UI) o unitatea de memorare (M) o unitatea de ieşire (UE) o unitatea aritmetico-logică (ALU) o unitatea de comandă (UC) Linia continuă = fluxul de date şi instrucţiuni Linia întreruptă = fluxul de comenzi şi stări. Unitatea de comandă (UC) controlează activitatea tuturor componentelor din sistem pe baza unei secvenţe de instrucţiuni, reprezentând programul memorat. - este elementul central pentru coordonarea întregii scheme Unitatea aritmetico-logică (ALU) realizează prelucrarea informaţiei preluate din memorie, iar rezultatele se depun din nou în memorie (sau sunt furnizate în exterior) - ALU trebuie să comunice și cu exteriorul: UI și UE - ALU realizează două categorii de operații: aritmetice: +, -, *, /; logice: ŞI, SAU, SAU-EXCLUSIV, NEGAŢIE. Unitatea de comandă, cea aritmetico-logică şi memoria formează UNITATEA CENTRALĂ (UC sau CPU) a calculatorului. Datele şi programele sunt introduse în calculator prin intermediul unitatatii de intrare, fiind apoi depuse în memorie. 2.2.1. Structuri de calculatoare paralele Calculatoarele paralele se clasifică în trei configuraţii arhitecturale: calculatoare pipeline (CPL) → paralelismul temporal calculatoare (procesoare) matriceale (CM) → paralelismul spaţial și paralelism sincron calculatoare (sisteme) multiprocesor (CMP) → paralelism asincron Cele patru tipuri de paralelism enunţate nu se exclud reciproc: cele mai multe dintre procesoarele actuale au structura internă bazată pe tehnologia pipeline şi multe dintre acestea pot fi organizate în sisteme matriceale sau multiprocesor. Diferenţa de bază dintre un procesor matriceal şi un sistem multiprocesor este aceea că unităţile funcţionale din procesorul matriceal operează sincron, în timp ce procesoarele sistemului multiprocesor funcţionează asincron. paralelismul spaţial – multiplicam niste blocuri, sa fie mai multe unitati de acelasi tip intr-o schema paralelismul temporal – il vedem in momentul in care socotim cate procese exista simultan in executie si care e evolutia pe etape paralelism sincron – e de obicei intre scheme care sunt coordonate de acelasi semnal de ceas si actioneaza pe acelasi front al ceasului paralelism asincron – coordonarea nu se mai face prin acelasi semnal de ceas si atunci procesele pot sa inceapa sau sa se termine in momente diferite pipeline matriceal multiprocesor 2.2.1.1. Calculatoare pipeline Pentru procesoare complexe, faza de execuţie a instrucţiunii poate fi partajată în suboperaţii organizate după principiul pipeline. Problemele care apar în calculatoarele pipeline sunt datorate conflictelor de acces la memorie, salturilor şi întreruperilor. Datorită suprapunerii operaţiilor, calculatoarele pipeline (CPL) sunt optimizate pentru a efectua operaţii de acelaşi tip. Proiectarea CPL include: secvențializarea sarcinilor (task-urilor) prevenirea conflictelor de acces (coliziunilor) controlul congestiei controlul salturilor în program In memoria principala, care este conectata extern cu unitatile I/O, se aduce sirul de instructiuni. O instrucțiune in curs de execuție trece prin etapele: IF, ID, OF. Toate acestea au in corespondenta blocuri separate. Urmează etapa de executie pe care trebuie sa o faca 2 procesoare: - Procesor scalar - Procesor vectorial Așadar, există două structuri pipeline: una pt datele scalare, și alta pentru cele vectoriale. Tehnica pipeline Gradul de paralelism al unui pipeline este intotdeauna egal cu numarul de etape in care putem imparti un proces. Execuţia unei instrucţiuni este privită ca fiind alcătuită din mai multe faze (sau stagii), care se succed una după alta şi care pot fi tratate de unităţi specializate, într-un mod asemănător funcţionării unei linii de asamblare (de ex.: de automobile). Exemplu. Fie un şir de procese care are loc la execuţia unei instrucţiuni. Se presupune că de fiecare din aceste procese se ocupă o unitate specializată. Când se atinge al cincilea impuls de ceas, la toate cele cinci procese se lucrează în paralel; astfel se măreşte de cinci ori viteza de execuţie. În faza încadrată, instrucţiunea 5 este în faza de încărcare, instrucţiunea 4 în faza de decodare etc. 2.2.1.2. Calculatoare matriceale Se numeste matriceal pentru ca practic avem o matrice de n elemente de prelucrare. EP = element de prelucrare pasiv (format din procesor și memorie atașată) Avem DSM (fiecare EP are memoria cache proprie) EP comunică între ele prin rețeaua de interconectare (rutarea datelor) Toate EP – controlate de UC (conține doar un procesor și o memorie) -> aici se fac prelucrările scalare Conexiunea dintre elemente: arhitectura de tip NUMA 2.2.1.3. Calculatoare multiprocesor → Sistemul este alcătuit din mai multe procesoare (pe plăci de bază diferite) care împart resurse comune dar posedă și resurse proprii (memorii cache locale). → Retea de interconexiune intre procesoare, in care ele intre ele isi schimba instructiuni. Cu cat comunicarea este mai puternica, gradul de cuplaj este mai strans. → Retea de interconectare procesoare-memorie, un processor nu e obligat sa foloseasca datele din memoria lui locala, le poate folosi si pe cele din memoriile locale alocate altor procesoare. → Pentru comunicarea cu ext. se config. canalele de I/O. → O memorie comuna pentru toata rețeaua. => GSM 2.2.2. Mecanisme de prelucrare paralelă 2.2.2.1. Soluţii hardware de prelucrare paralelă - corelate cu arhitecturile clasificării FLYNN La nivelul diferitelor blocuri, o sa insemne o replicare a mai multe instante ale unor blocuri. Va fi intotdeauna un paralelism spatial. Multiplicarea şi specializarea unităţilor aritmetico-logice (ALU) Paralelism şi structură pipeline în CPU Arhitectura superscalară Arhitectura superpipeline Suprapunerea operaţiilor CPU cu operaţiile I/O Unitate ALU vectorială Utilizarea unui sistem ierarhizat de memorie Multiplicarea şi specializarea unităţilor aritmetico-logice (ALU) Prin multiplicarea ALU, majoritatea funcţiilor pot fi distribuite între unităţile specializate pe o anumită funcţie aritmetică sau logică şi pot funcţiona în paralel. ALU are intotdeauna 2 registre de intrare (Rin ALU), pentru ca in general orice operatie are 2 operanzi UNITATEA CENTRALĂ conţine 5 unităţi ALU specializate pe diferite operaţii, care pot lucra în paralel În schemă avem gradul de paralelsim 5. Sistemul este eficient dacă timpul de execuţie de către ALU a unei operaţii este mult mai mare decât timpul de încărcare şi decodificare a unei instrucţiuni: tEX(ALU) >> tIF + tID Paralelism şi structură pipeline în CPU Primele microprocesoare foloseau unități de calcul (ALU) care lucrau serial cu biții. Trecerea la ALU-uri care operează în paralel cu 8, 16, 32 sau 64 biți simultan a crescut viteza de prelucrare. Arhitectura superscalară Șiruri de instrucţiuni diferite (de obicei două, eventual mai multe), utilizează resurse diferite în aceleaşi stadii de execuţie a instrucţiunilor de pe fiecare şir. Structura superscalară cu tehnică de burst (citire în rafale) este folosită începând cu microprocesorul 80486 Arhitectura superpipeline Se bazează pe divizarea stagiului pipeline în substagii şi, deci, pe creşterea numărul de instrucţiuni care sunt procesate de pipeline la un moment dat. Divizând fiecare stagiu în două substagii, perioada ciclului de ceas τ va fi redusă la jumătate: τ/2. PIPELINE SUPERPIPLINE SUPERSCALARĂ Suprapunerea operaţiilor CPU cu operaţiile I/O Utilizarea unor controlere I/O specializate permite efectuarea în paralel a operaţiilor interne ale CPU cu operaţiile de transfer de date pe canalele I/O. Exemple de controlere I/O: controlere DMA (Direct Memory Access), care permit transferul direct de date: memorie – memorie sau memorie – canale I/O, bazat pe principiul cererii de magistrală (aceasta reprezintă una dintre tehnicile evoluate de transfer de date, vezi paragraful 3.4.4.2); procesoare specializate I/O, care lucrează pe canale I/O cu sarcini specifice. Unitate ALU vectorială Este o soluţie de paralelism pentru sistemele SIMD Se apeleaza din nou la multiplicarea ALU, insa nu pe orizonatala ci in adancime, adica trecem de la scalar la operatii cu vectori. Paralelismul in cazul nostru este 4, pentru ca se fac simultan 4 calcule la 4 componente diferite ale unui vector. Utilizarea unui sistem ierarhizat de memorie Memoria unui sistem de calcul trebuie să satisfacă mai multe cerinţe, adesea contradictorii: capacitate mare timp de acces mic cost rezonabil dimensiuni reduse Registrele CPU sunt direct adresabile de către ALU Memoria cache = tampon între memoria principală și CPU - e rapidă, aici se păstrează instr. și datele cu prob. Cea mai mare de utiliz. Memoria principală = tampon între memoria virtuală și CPU - păstrează programele şi datele în curs de execuţie - capacitate medie-mare; timp de acces mediu Memoria virtuală = concept arhitectural - utilă în cazul sistemelor de operare multitasking şi multiuser capacitatea şi timpul de acces cresc de sus în jos 2.2.2.2. Soluţii software de prelucrare paralelă - specifice sistemelor de operare (posibil. prelucrarii || ) Se bazeaza pe paralelismul temporal, adica pe aplicarea tehnicii pipeline. Prelucrarea pe loturi Multiprogramarea Diviziunea în timp (time sharing) Prelucrarea pe loturi Multiprogramarea Diviziunea în timp (time sharing) 2.3. Categorii de calculatoare mari 2.3.1. Mainframe-uri Mainframe-urile sunt COMPUTERE MARI folosite de guverne și companii pentru procese importante ca statistica, recensăminte și tranzacţii financiare. Inițial, aveau dimensiuni mari, dar au devenit mai mici și mai rapide de-a lungul timpului. Compatibile cu IBM System/360 și modelele următoare, acestea pot rula mai multe sisteme de operare simultan și înlocui sute de servere mici, reducând costurile și oferind securitate ridicată. Deși nu sunt neapărat mai rapide decât serverele puternice, mainframe-urile au capacitate mare de intrare/ieşire și spațiu de stocare vast. Rămân relevante datorită investițiilor în software și infrastructură, și au jucat un rol în problema Y2K. Astăzi, mainframe-urile sunt valoroase în Internet, gestionând tranzacții e- commerce și baze de date mari. 2.3.2. Supercalculatoare Un supercalculator este un calculator complex cu destinaţie specială, compus din mai multe procesoare care accesează aceeaşi memorie centrală şi care funcţionează concomitent şi coordonat, în cooperare strânsă, astfel încât poate atinge o performanţă totală de calcul foarte ridicată. Modul de operare al supercalculatoarelor este calculul paralel. Numărul de procesoare interconectate ale unui supercalculator depăşeşte la anumite modele chiar şi 300.000. Până recent, supercalculatoarele erau mai puternice decât mainframe-urile, având CPU-uri extrem de rapide, mulţi gigaocteţi de memorie principală, discuri şi reţele foarte rapide. Au fost folosite pentru calculele ştiinţifice şi inginereşti foarte masive, cum ar fi simularea ciocnirii galaxiilor, sintetizarea de noi medicamente sau modelarea fluxului de aer în jurul unei aripi de avion. Cu toate acestea, în ultimii ani, centrele de date (data centers) construite din componente comerciale de bază, au oferit tot mai multă putere de calcul la preţuri mult mai mici, iar adevăratele supercomputere de odinioară sunt acum o specie pe cale de dispariţie. 2.3.3. Servere Calculatoarele personale sau staţiile de lucru (workstations) sunt adesea folosite ca servere de reţea, atât pentru reţelele locale (LAN, de obicei în cadrul unei singure companii), cât şi pentru reţelele Internet (WAN sau metropolitane). Acestea vin în configuraţii cu un singur procesor şi cu mai multe procesoare, având gigaocteţi de memorie, teraocteţi de spaţiu pe hard disk şi reţele de mare viteză (mii de tranzacţii pe secundă). Cu toate acestea, din punct de vedere arhitectural, un server cu un singur procesor nu este foarte diferit de la un computer personal (PC) monoprocesor. Este doar mai rapid, mai mare, are mai mult spaţiu pe disc şi, eventual, o conexiune la reţea mai rapidă. Serverele au aceleaşi sisteme de operare ca la computerele personale, de obicei variante de Unix sau Windows. 2.3.4. Cluster-e Datorită îmbunătăţirilor aproape permanente ale raportului preţ/performanţă al serverelor, în ultimii ani, proiectanţii de sisteme au început să conecteze laolaltă un număr mare de servere, pentru a forma cluster-e. Acestea constau în sisteme din clasa standard a serverelor, conectate prin reţele de ordinul gigabiţilor/secundă şi rulând un software special, care permite tuturor maşinilor să colaboreze la rezolvarea aceleiaşi probleme, aceasta fiind adesea din afaceri, ştiinţă sau inginerie. În mod normal, aceste cluster-e sunt numite computere COTS (Commodity Off The Shelf), pe care oricine le poate procura de la un furnizor de PC-uri. Principalul plus este reţeaua de mare viteză, dar uneori aceasta foloseşte, de asemenea, o placă de reţea standard de pe piaţă. 2.3.6. Centre de date Cluster-ele mari sunt adăpostite în mod obişnuit în camere sau clădiri cu destinaţie specială, numite centre de date (data centers). Centrele de date au o scală destul de largă, de la câteva maşini la 100.000 sau mai multe. De obicei, suma disponibilă (costul) este factor de limitare. Datorită preţului scăzut al componentelor, companiile individuale pot acum să deţină astfel de maşini pentru uz intern. Mulţi oameni folosesc în mod interschimbabil termenii de cluster şi data centers, deşi, tehnic vorbind, primul înseamnă o colecţie de servere, iar cel de-al doilea, încăperea sau clădirea care le găzduieşte. O utilizare obişnuită pentru un cluster este cea de server Web de Internet. 2.4. Exemple de arhitecturi 2.4.1. Arhitecturi uniprocesor Se bazează pe cele trei componente majore: CPU, memoria, subsistemul I/O. VAX 11/780 (superminicalculator) IBM 370/168 IBM RS/6000 model 250 Arhitectura uniprocesor se referă la sistemele de calcul care au un singur procesor central (CPU). În această configurație, toate operațiunile de calcul, procesarea datelor și execuția instrucțiunilor sunt gestionate de un singur procesor. Această arhitectură este simplă și directă, fiind utilizată în calculatoarele personale, laptopuri și multe dispozitive embedded. Deși este limitată în termeni de scalabilitate și putere de procesare comparativ cu sistemele multiprocesor, arhitectura uniprocesor este eficientă pentru sarcini care nu necesită o cantitate mare de procesare paralelă sau pentru aplicații cu cerințe moderate de calcul. 2.4.2. Arhitecturi multiprocesor Arhitectura multiprocesor se referă la sistemele de calcul echipate cu mai multe unități de procesare (CPU-uri) care funcționează în paralel. Această configurație permite sistemului să execute simultan multiple fluxuri de instrucțiuni (threads), îmbunătățind semnificativ performanța și eficiența în sarcinile de calcul intensiv. Procesoarele dintr-un sistem multiprocesor pot împărți aceeași memorie (arhitectură UMA - Uniform Memory Access) sau pot avea memorii separate (arhitectură NUMA - Non-Uniform Memory Access), fiecare cu avantajele și dezavantajele sale în funcție de aplicație. Arhitectura multiprocesor este ideală pentru aplicații de server, calcul științific, baze de date mari și alte aplicații care beneficiază de procesare paralelă, oferind o scalabilitate și capacitate de procesare superioară comparativ cu sistemele uniprocesor. 2.4.2.1. Arhitecturi cu procesoare multiple IBM RS/6000 model F50 Arhitectura Intel multiprocesor 2.4.2.2. Arhitecturi biprocesor Arhitectura biprocesor este un tip specific de sistem multiprocesor care include exact două unități de procesare centrală (CPU-uri). Aceste două procesoare lucrează în paralel pentru a îmbunătăți performanța generală a sistemului, permițând execuția simultană a mai multor sarcini sau a unor părți diferite ale aceleiași sarcini. Având două CPU-uri, arhitectura biprocesor poate gestiona mai eficient aplicațiile multithreading și procesele care necesită o capacitate de calcul mare, oferind un echilibru între cost și performanță pentru utilizatorii care au nevoie de mai multă putere de procesare decât cea oferită de sistemele uniprocesor, dar fără complexitatea și costul asociate cu sistemele cu mai mult de două procesoare. Această configurație este comună în servere, stații de lucru profesionale și unele sisteme embedded avansate. Pentium II biprocesor AMD Athlon biprocesor AMD K7 biprocesor Sun SPARC IV biprocesor Intel Xeon biprocesor AMD Opteron biprocesor Intel și AMD oferă soluții biprocesor competitive, fiecare cu avantajele sale. - Intel este recunoscut pentru performanța înaltă, eficiența energetică bună și compatibilitatea largă, dar vine adesea cu un cost mai mare. - AMD impresionează prin raportul excelent preț/performance, oferind un număr mare de nuclee și o eficiență energetică îmbunătățită la un preț mai accesibil. Alegerea între Intel și AMD pentru o configurație biprocesor depinde de cerințele specifice ale aplicației, buget și preferințele pentru anumite caracteristici, cum ar fi performanța pe fir de execuție, numărul de nuclee, eficiența energetică și costul total de proprietate. 2.4.2.3. Arhitecturi multinucleu Arhitectura multinucleu se referă la procesoarele care integrează mai multe nuclee de calcul într-un singur cip. Aceasta permite procesorului să execute mai multe instrucțiuni simultan, îmbunătățind semnificativ performanța generală și eficiența energetică comparativ cu procesoarele cu un singur nucleu. Nucleele pot rula în paralel aplicații diferite sau pot lucra împreună la aceeași aplicație, distribuind sarcinile de lucru pentru a accelera procesarea. Arhitectura multinucleu este acum standard în industrie, fiind folosită într-o gamă largă de dispozitive, de la computere personale și servere, până la smartphone-uri și console de jocuri, oferind avantaje semnificative în multitasking și aplicații care necesită o putere de calcul mare. Intel Core 2 AMD Opteron Dual-core AMD Phenom Triple-core Intel Quad-core Intel Core i7 AMD FX Intel și AMD oferă procesoare multinucleu competitive. - Intel excelează în performanța pe fir și eficiența energetică, dar vine adesea cu un preț mai mare. - AMD se remarcă prin oferirea unui număr mare de nuclee la prețuri competitive, având un raport excelent preț/performance, ceea ce le face atractive pentru multitasking și aplicații care necesită multe thread-uri. Alegerea între Intel și AMD pentru un procesor multinucleu depinde de cerințele specifice ale utilizatorului, buget și preferințe în materie de performanță pe fir, număr de nuclee, eficiență energetică și caracteristici tehnologice. 2.4.2.4. Multiprocesare omogenă şi eterogenă pe cip Multiprocesarea omogenă înseamnă că pe un singur cip se pot pune două sau mai multe procesoare identice, care împart aceeași memorie și resurse, pentru a îmbunătăți performanța fără a crește mult costul. Un exemplu este procesorul Core i7 de la Intel, care are mai multe nuclee pe același cip și folosește o rețea inel pentru a comunica între cache-uri, oferind o lățime de bandă mare cu latență ușor crescută. Multiprocesarea eterogenă folosește un singur cip cu mai multe nuclee specializate pentru sarcini diferite, ideală pentru sisteme încorporate ca telefoane mobile sau DVD playere, care au nevoie de procesare specifică și eficientă pentru funcții diferite. Aceasta permite dispozitivelor să gestioneze mai multe sarcini în mod eficient, respectând constrângerile de timp real, consum de energie și cost. 2.4.2.5. Arhitecturi de multiprocesoare şi multicalculatoare Sistemele de calcul paralele pot fi împărțite în două categorii principale: multiprocesoare și multicalculatoare. Diferența majoră între ele este modul în care memoriile sunt organizate și accesate: Multiprocesoare: Toate CPU-urile partajează o memorie comună, permițând tuturor proceselor să acceseze orice parte a memoriei direct, ceea ce facilitează comunicarea și sincronizarea între procese. Acest model simplifică programarea dar poate fi mai greu de construit la o scară mare din cauza complexității gestionării memoriei partajate. Multicalculatoare: Fiecare CPU are propria memorie privată și comunică cu celelalte CPU-uri prin trimiterea de mesaje. Deși acest model permite o scalabilitate mai mare și este mai ușor de construit pentru sisteme mari, programarea este mai complexă din cauza necesității gestionării explicite a comunicării între procese. În esență, multiprocesoarele oferă o programare mai simplă dar sunt mai dificil de extins, în timp ce multicalculatoarele sunt scalabile dar aduc complexitate suplimentară în programare. Cercetările actuale explorează modele hibride care încearcă să combine avantajele ambelor abordări, căutând soluții scalabile și eficiente din punct de vedere al programării. 2.4.2.6. Arhitecturi de procesoare masiv paralele (MPP) Procesoarele masiv paralele (MPP) sunt sisteme de calcul de înaltă performanță, folosite pentru sarcini complexe precum simulări științifice, gestionarea bazelor de date mari și procesarea unui volum mare de tranzacții. Aceste sisteme folosesc CPU-uri standard și se disting prin rețele de interconectare avansate, care permit comunicarea rapidă între procesoare. MPP-urile au și capacitate mare de I/O pentru a gestiona volume mari de date și sunt proiectate cu mecanisme de toleranță la erori pentru a asigura fiabilitatea în fața eșecurilor hardware inevitabile. Două exemple de sisteme MPP sunt BlueGene/P de la IBM și Red Storm. BlueGene/P a fost proiectat pentru eficiență maximă, folosind un design sistem-pe-cip pentru a atinge densități mari de calcul. Red Storm, dezvoltat de Sandia National Laboratories cu procesoare AMD Opteron, se concentrează pe lățimea de bandă a memoriei și interconectare personalizată, oferind o putere de calcul mare cu un design eficient energetic. În general, MPP-urile sunt colecții de noduri de calcul conectate printr-o rețea de interconectare rapidă, fiecare nod având propriul set de resurse. Aceste sisteme sunt capabile să proceseze cantități enorme de date și sunt esențiale pentru cercetarea avansată și aplicațiile industriale care necesită capacitate de calcul masivă. 2.4.2.7. Arhitecturi Cluster Computing Cluster computing-ul implică conectarea a sute sau mii de PC-uri sau stații de lucru prin rețele standard pentru a forma un sistem de calcul puternic, similar cu cum un grup de persoane lucrează împreună pentru a finaliza o sarcină mare mai rapid decât ar putea face-o individual. Aceste sisteme pot fi centralizate, unde calculatoarele sunt grupate fizic într-un loc, sau descentralizate, răspândite într-o clădire sau campus și conectate printr-o rețea locală. Diferența dintre un cluster și un MPP (Massive Parallel Processor) este similară cu diferența dintre un PC și un mainframe: ambele categorii au funcții similare, dar sunt construite și operate diferit. Clusterele sunt adesea mai accesibile și se bazează pe hardware standard de pe piață, optimizând raportul performanță/preț. Un exemplu notabil este Google, care a construit unul dintre cele mai mari clustere din lume folosind PC-uri standard pentru a gestiona baza sa de date uriașă și fluxul imens de interogări, aplicând principii precum toleranța la erori, replicarea pentru viteză și disponibilitate, și maximizarea eficienței costurilor. Cluster computing-ul este eficient pentru sarcini care necesită o capacitate de calcul imensă, cum ar fi procesarea de date la scară largă, optimizând în același timp costurile și fiabilitatea. 2.4.2.8. Arhitecturi Grid Computing Grid computing-ul conectează computere din locații diferite pentru a forma o rețea care lucrează la sarcini comune, similar cu un sistem de utilități publice pentru calcul. Acest model permite adăugarea de noi procesoare pentru a crește puterea de calcul, evitând blocajele de sistem prin distribuirea sarcinilor între noduri. Scalabilitatea este esențială, dar adăugarea de procesoare poate crește latența, o provocare pentru aplicațiile sensibile la întârzieri. Arhitectura grid se bazează pe colaborarea între organizații pentru a partaja resurse și a forma organizații virtuale, menținând controlul asupra resurselor proprii. Include mai multe straturi: fabric (resursele fizice și software), resurse (gestionează accesul la resursele individuale), colectiv (gestionează grupuri de resurse și facilitează descoperirea și alocarea lor) și aplicație (unde rulează aplicațiile utilizatorilor). Securitatea este crucială în grid computing, asigurând că deținătorii de resurse controlează accesul la acestea și că utilizatorii pot accesa resursele necesare fără complexitate excesivă. Grid computing-ul facilitează sarcini computaționale complexe prin împărțirea lor între multiple resurse, îmbunătățind eficiența și capacitatea de calcul. 2.4.2.9. Legea lui Amdahl pentru arhitecturi paralele Legea lui Amdahl arată că beneficiile adăugării de mai multe procesoare pentru a rula o sarcină în paralel sunt limitate de porțiunea de sarcină care trebuie executată secvențial. Dacă o parte dintr-o operație poate fi paralelizată și restul trebuie să ruleze secvențial, atunci viteza maximă pe care o putem obține este determinată de formula S = n / [1 + (n – 1)(1 – f)], unde n este numărul de procesoare, iar f este fracția de operație care poate fi paralelizată. De exemplu, cu 4 procesoare și 80% din operație paralelizabilă, accelerarea maximă este de 2,5 ori mai rapidă decât pe un singur procesor. Aceasta înseamnă că, chiar dacă adăugăm mai multe procesoare, există o limită a cât de mult poate fi accelerată execuția datorită părții care rămâne secvențială. 3. STRUCTURA UNUI CALCULATOR 3.1. Unitatea centrală (procesorul) Unitatea centrală (UC) este calculatorului ROL: de execuţie a programelor stocate în memoria principală, execuţie realizată în trei etape: extragerea instrucţiunilor decodificarea instrucţiunilor execuţia lor propriu-zisă Unitatea de comandă şi control urmăreşte ordinea de execuţie a instrucţiunilor unui program şi controlează întreaga activitate a unităţii centrale, astfel: interpretează instrucţiunile programului din memoria internă şi comandă circuitele să execute instrucţiunile; comandă şi controlează transferul de date dintre memoria internă şi dispozitivele periferice. Unitatea aritmetică şi logică (ALU) implementează funcţiile logice, şi execută operaţiile aritmetice elementare: adunare, scădere, înmulţire, împărţire. Registrele interne pot fi: de uz general (stochează valorile intermediare ale calculelor) cu destinaţie specifică (indică adresa noii instrucţiuni care urmează a fi executată precum şi adresa instrucţiunii curente care se execută) 3.1.1. Execuţia unei instrucţiuni TIMP EXECUȚIE instrucțiune = CICLU instrucțiune ETAPE: 1. încărcarea instrucţiunii din memorie în registrul de instrucţiuni (fetch); 2. actualizarea PC pentru a indica următoarea instrucţiune care va fi executată; 3. decodificarea instrucţiunii din registrul de instrucţiuni; 4. localizarea în memorie a eventualelor date utilizate de instrucţiune; 5. încărcarea datelor (dacă este necesar) în registrele interne ale UC; 6. execuţia efectivă a instrucţiunii; 7. stocarea rezultatelor la destinaţia corespunzătoare; 8. întoarcerea la etapa nr. 1 pentru a executa următoarea instrucţiune. 3.1.2. Tipuri de unităţi centrale Criteriul după care se clasifică UC este cel al setului de instrucţiuni: procesoare CISC (Complex Instruction Set Computer); procesoare RISC (Reduced Instruction Set Computer). În ultimul timp, s-a produs migrarea de la CISC la RISC, ceea ce a făcut ca în prezent, pentru procesoarele moderne, să dispară vechea concurenţă RISC-CISC. 3.1.2.1. Performanţa unităţii centrale Performanţa UC se referă întotdeauna la o aplicaţie dată, existând mai multe moduri de evaluare a performanţei: mips (mega instructions per second): milioane de instrucţiuni pe secundă flops (floating point operations per second): operaţii în virgulă mobilă executate pe secundă timpul în care un anumit procesor poate să rezolve o anumită secvenţă de program Performanţa este produsul a trei factori: P(t) = Ni Np Tc (sec) numărul de instrucţiuni executate în cazul unei aplicaţii date (Ni) numărul mediu de perioade de ceas necesare pentru execuţia unei instrucţiuni (Np) durata unei perioade de ceas (Tc) 3.1.2.2. Indici de performanţă indicii de performanţă: SPECint, SPECfp (SPEC este acronimul de la Organizatia Internationala care a introdus acesti indici de performanta) SPECint - masoara performanta la lucru cu nr intregi SPECfp - masoara performanta in virgula mobila Se ruleaza 6 sau 12 rutine scrise intr-un limbaj de nivel inalt(C# sau C++) -> rezultatul obtinut in urma rularii va fi o nota care se obtine pe baza unor criterii de performanta cele 6 sau 12 note se mediaza geometric, de aceea cei 2 indici nu au unitate de masura, dar sunt un numar care arata calitatea procesorului in executia mai multor rutine. 3.1.3. Organizarea unităţii centrale Datele care trebuie prelucrate sunt aduse din registrele interne în registrele de intrare ale ALU. Există trei tipuri de instrucţiuni (vezi figura): instrucţiuni registre-memorie: se încarcă date din memorie în registre şi viceversa. Datele pot fi folosite mai departe de alte instrucţiuni sau chiar de instrucţiunile respective. În acest ultim caz, rezultatul este depus în registre; instrucţiuni registre-registre: mută operanzii din registrul de la intrarea ALU, execută asupra lor o anumită operaţie şi depun din nou operanzii în registru; instrucţiuni memorie-memorie: preiau operanzii din memorie, îi plasează în registrul de intrare ALU, se execută o anumită operaţie şi se stochează rezultatul în memorie. 3.2. Memoria Memoria = stochează programele şi datele. De aici procesorul preia datele de care are nevoie şi tot aici scrie rezultatul. Unitatea de memorie este o cifră binară care poate lua numai două valori: 0 sau 1. Sistemul de memorie al unui calculator reprezintă ansamblul unităţilor de memorie + algoritmii SW/HW. 3.2.1. Caracteristicile unităţilor de memorie Capacitatea de memorare = numărul locaţiilor/celulelor care stochează combinații binare (0 sau 1) Timpul de acces tA = cat dureaza de la momentul in care am dat comanda pana cand am primit inapoi raspunsul Rata de acces rA = inversa timpului de acces, ne spune câte cuvinte se pot transfera pe secundă Timpul de ciclu tC = timpul minim între două accese succesive şi reprezintă timpul din momentul în care o unitate master lansează o comandă spre unitatea de memorie şi până când poate lansa o nouă comandă la aceeaşi unitate de memorie Timp de revenire tC = timpul minim necesar pentru inactivarea primei comenzi, până la activarea celei de-a doua Timpul total de ciclu = timp de access + timp de revenire Rata de transfer rT) = inversa timpului de ciclu şi reprezintă cantitatea maximă de informaţie care poate fi transferată la/de la memorie într-o secundă Modul de acces la locaţiile unităţii de memorie arată ordinea în care informaţia memorată poate fi accesată. Acesta poate fi serial sau paralel. 3.2.2. Ierarhizarea memoriei Cu cat sunt mai departe de procesor: capacitatile lor sunt din ce in ce mai mari creste timpul de access Cu cat ne apropriem de procesor: viteza e tot mai mare costul e tot mai scump 3.2.2.1. Registrele de memorie Registrele de memorie sunt cele mai rapide și mai scumpe dispozitive de stocare pe care le folosește procesorul. Există două tipuri: registre cu destinație specifică: păstrează tipuri precise de informații și sunt accesate direct pentru operații specifice, registre de uz general: pot fi folosite pentru diverse sarcini prin instrucțiuni de program Numărul de registre este limitat, de obicei între 16 și 20, iar capacitatea lor este adaptată la procesor și nu depășește dimensiunea standard a unei unități de informație procesată de acesta. 3.2.2.2. Memoria internă Conţine programele şi datele pentru toate procesele în curs de execuție în sistemul de calcul. Este o memorie read-write cu acces direct (RAM). Ea trebuie să aibă un timp de acces redus, pentru a nu întârzia activitatea procesorului. 2 categorii: Memoriile DRAM (Dynamic Random Access Memory) sunt memorii RAM dinamice, în care, pentru a se păstra informaţia, trebuie restabilită periodic sarcina electrică cu care a fost încărcat condensatorul circuitului de memorie, sarcină realizată de un circuit de reîmprospătare a memoriei (refresh). Memoriile SRAM (Static Random Access Memory) sunt memorii RAM statice, realizate cu circuite basculante bistabile de memorie, care păstrează informația atât timp cât sistemul este sub tensiune. Memoria principală a unui computer, sau memoria primară, este locul unde se păstrează datele active necesare procesorului, fiind realizată din circuite DRAM cu capacitate mare, de sute de MB. Această memorie este mai lentă decât registrele procesorului, având timpi de acces de la zeci la sute de nanosecunde. Memoria NVRAM este un tip de memorie care nu își pierde datele când sistemul este oprit, folosită pentru a păstra informații despre configurația sistemului, cum ar fi data și ora. Memoria cache este o memorie rapidă și scumpă, plasată între procesor și memoria principală pentru a reduce timpul de acces la date. Funcționează pe principiul că programele folosesc adesea date din locații apropiate sau accesează repetat aceleași blocuri de memorie, astfel încât procesorul să petreacă 70-90% din timp lucrând cu date din cache, care este de 2-10 ori mai rapidă decât memoria principală. Memoria intermediară/cache pentru discuri este similară cu memoria cache și este plasată între memoria principală și cea secundară pentru a accelera accesul la datele frecvent utilizate, stocând copii ale acestor date. 3.2.2.3. Memoria externă Memoria externă este folosită pentru a extinde capacitatea de stocare a unui sistem de calcul și se caracterizează printr- o viteză de acces mai mică, cost mai mic, și capacitate mai mare decât memoria internă. Pentru a folosi datele din memoria externă, acestea trebuie transferate în memoria principală. Există mai multe tipuri de memorie externă: Memoria secundară, de obicei pe disc magnetic, extinde memoria principală Memoria expandată și extinsă sunt forme de memorie suplimentară pentru calculatoarele PC, gestionate prin mecanisme specifice. Memoria de arhivare/terţiară, folosită pentru arhivarea pe termen lung a datelor în volume mari, poate fi pe suport optic, magnetic sau semiconductor și are timpi de acces foarte mari. 3.2.3. Memoria RAM Circuitele integrate de memorie sunt componente electronice care stochează informații și sunt fabricate folosind tehnologii semiconductoare, precum bipolar sau MOS. Există două categorii principale: memoriile cu acces aleator (RAM), unde datele pot fi accesate în orice ordine și timpul de acces este constant, și memoriile doar pentru citire (ROM), specializate pentru stocarea permanentă a datelor. RAM se împarte în RAM statice (SRAM), care păstrează datele atâta timp cât sunt alimentate cu energie, fără a necesita reîmprospătare, și RAM dinamice (DRAM), care necesită reîmprospătări periodice ale datelor pentru a menține informațiile. SRAM DRAM 3.2.3.1. Memoria SRAM informaţia se memorează într-un mod stabil, pe ambele niveluri logice, atât timp cât memoria este alimentată este realizată în tehnologii rapide (bipolare sau MOS) memorie care poate fi și citită și scrisă => are magistrală BIDIRECȚIONALĂ poate fi de două tipuri: asincronă și sincronă (constructiv seamănă, diferă prin algoritmul de transfer și perform.) Memoria SRAM asincronă - nu necesită semnal de ceas pentru sincronizarea cu unitatea master. Memoriile asincrone sunt mai lente decât cele sincrone, dar sunt mai ieftine şi au un consum de energie mic. Memoria SRAM sincronă - necesită un semnal de ceas pentru validarea semnalelor de control. Ceasul primit din exterior permite operarea memoriei, sincron cu unitatea master. Memoriile sincrone sunt foarte rapide, cu timp de acces sub 10 ns, pot funcţiona la tensiuni de alimentare mici, dar sunt scumpe. Ele pot fi de mai multe tipuri: PBS (Pipelined Burst Synchronous), FTS (Flow Through Synchronous) sau ZBT (Zero Bus Turnaround) SRAM 3.2.3.2. Memoria DRAM memorie volatilă cu acces aleator este realizată în tehnologie CMOS consum de energie foarte mic mult mai lentă decât SRAM celulă mul mai mică decât SRAM => destinații mari de integrare capacitate mare de memorare, număr mare de linii de adresă ROR (RAS Only Refresh), CBR (CAS Before RAS) și auto-împrospătarea sunt trei metode de reîmprospătare a memoriei DRAM, necesare pentru menținerea datelor stocate: ROR (RAS Only Refresh) este o metodă care folosește semnalul de validare a adresei de linie (RAS) fără a folosi semnalul de validare a adresei de coloană (CAS) pentru a împrospăta memoria. Un ceas de timp real, controlat de sistemul de operare, anunță unitatea master externă să efectueze reîmprospătarea periodic. CBR (CAS Before RAS), la fel, este o metodă de reîmprospătare externă, dar activează semnalele CAS și RAS în această ordine specifică. Memoria utilizează un numărător de adrese intern pentru a determina care linie trebuie reîmprospătată, eliminând necesitatea de a transmite adresa din exterior. Un ceas de timp real extern determină când trebuie efectuat refresh-ul. Auto-împrospătarea folosește circuite interne ale DRAM, inclusiv un numărător de adrese de rând și un ceas de timp real, pentru a genera automat semnalele necesare reîmprospătării memoriei, urmând principiul metodei CBR. Toate aceste metode sunt concepute pentru a menține integritatea datelor în memoria DRAM, care altfel ar fi pierdute din cauza naturii volatile a acestei memorii. poate fi de două tipuri: asincronă și sincronă Memoria DRAM asincronă funcționează fără necesitatea unui semnal de ceas pentru sincronizare, ceea ce o face mai lentă, mai ieftină și cu un consum mai mic de energie decât variantele sincrone. Exemple de DRAM asincron includ FPM, EDO și BEDO, care au timpi de acces și ciclu mai lungi. Memoria DRAM sincronă, pe de altă parte, folosește un semnal de ceas pentru sincronizarea semnalelor de control și funcționează în sincronie cu unitatea master. Acest lucru elimină întârzierile și simplifică semnalele de control, adresele și datele, permițând un acces mai rapid în mod pagină comparativ cu accesul aleator. Tipuri de memorie sincronă includ SDRAM, DDR SDRAM, RDRAM și DRDRAM, cu timpi de acces aleator ușor mai rapizi și acces în mod pagină mult mai rapid datorită frecvenței semnalului de ceas. 3.2.4. Organizarea locaţiilor de memorie Sunt două moduri de organizare a octeţilor în memorie: Big endian şi Little endian. 3.2.5. Metodologia de proiectare a memoriilor statice Proiectarea unui modul de memorie implică considerarea mai multor parametri esențiali, cum ar fi capacitatea de stocare, modul în care este organizată memoria (de exemplu, octet, cuvânt), tipul de magistrală pentru conectare, locația în spațiul de adresare al procesorului, tipul circuitului de memorie folosit și necesitatea unor funcții speciale (acces dual, reîmprospătare centralizată, corecție de erori). Acești factori asigură că modulul de memorie va funcționa corect și eficient în cadrul sistemului proiectat. 3.2.6. Metodologia de proiectare a memoriilor dinamice Proiectarea memoriilor dinamice include aspecte similare cu cele ale memoriilor statice, cu câteva modificări specifice: Introducerea unui mecanism de reîmprospătare periodică pentru a menține informația stocată Multiplexarea adreselor pentru a reduce numărul de pini necesari, alternând între adresele de linie și coloană pe aceleași semnale Generarea semnalelor de validare pentru adresele de linie (RAS) și coloană (CAS), folosite pentru selecția circuitelor Reîmprospătarea, un proces esențial datorită pierderii treptate a informației din condensatoarele care stochează datele, trebuie gestionată astfel încât să nu interfereze cu ciclurile normale de citire sau scriere și se aplică la nivelul unei linii întregi din matricea de memorie 3.2.7. Module de memorie 3.2.8. Formate fizice de memorie 3.2.9. Formate logice de memorie 3.2.10. Verificarea prin controlul parităţii 3.2.11. Metode de acces la memorie 3.2.12. Memoria cache 3.2.12.1.Maparea memoriei cache 3.2.12.2.Eficienţa şi localizarea datelor în memoria cache 3.2.12.3.Reînnoirea conţinutului memoriilor cache 3.2.12.4.Conectarea memoriei cache la microprocesor 3.2.12.5.Depunerea în memorie a rezultatelor 3.2.12.6.Cache hit şi cache miss 3.2.12.7.Tipuri de celule cache 3.2.12.8.Memorii cache specializate 3.2.12.9.Concluzii la memoria cache 3.2.4. Memoria ROM 3.2.5. Memorii nevolatile şi comparaţie cu memoria RAM MEMORIA stochează programe și date utilă (uP nu poate stoca mult) alcătuită din locații de memorie + sistem de accesare CARACTERISTICI: capacitate = nr locații de memorie timp de acces = timp până se localizează o celulă de memorie = tA 1 rata de acces = rA = 𝑡𝐴 timp de ciclu = timp între 2 accesări succesive = tc timp de revenire = tR = tc - tA 1 rata de transfer = rt = 𝑡𝑐 costul total = Ct = Cu x CM (cost unitar*capacitatea de memorie) modul de acces (serial/paralel) Memoria internă = memorie read-write cu acces direct (RAM = Random Access Memory) - VOLATILĂ 1. SRAM tehnologii rapide timpi de acces foarte mici read/write (WE = poți scrie/citi pe ea) consumă curent de la o sursă tipuri: sincronă (mai rapide, mai scumpe, cunsumă mai puțină energie) asincronă (nu are nevoie de semnal de ceas, mai lentă, mai ieftină) 2. DRAM consumă puțină energie mult mai lentă decât SRAM celula de memorie mult mai mică decât SRAM: capacitate mai mare fiecare bit este memorat prin încărcare/descărcare condensator nu consumă curent de la o sursă are nevoie de cicluri de reîmprospătare *tipuri de refresh: 1. ROR: se transmite adresa de rând și semnalul de validare RAS fără CAS 2. CBR: se transmit CAS, apoi RAS (e nevoie de un numărător) 3. auto-împrospătare (cu ajutorul circuitului intern folosind metoda CBR) DRAM Asincron: ➔ nu are semnal de ceas ➔ mai lente, ieftine, econome ➔ pot avea interfețe sincrone ➔ are nevoie doar de semnal de ceas pentru sincronizare ➔ poate fi bazat pe protocoale (nu mai există linii separate pt adrese, date și control, ci se transmit prin protocol) DRAM Sincron ➔ necesită semnal de ceas pentru sincronizare ➔ accesul în mod pag. e mai rapid ca la Asincron, dar accesul aleator este comparabil și depinde de frecvența de ceas ! La DRAM: dimensiunea mare → mulți biți de adresă → se face adresare pe linii și coloane Formate logice de memorie DRAM SDRAM: operează sincron cu uP, superscalar EDRAM: rată mare de umplere a memoriei cache, multitasking CDRAM: cache pe fiecare chip MDRAM: date stocate într-un număr de bancuri de memorie separate RDRAM: magistrale de mare viteză, cache de RAM static, citire rapidă DDR SDRAM: transferă date pe ambele fronturi de ceas DDR2 SDRAM: lucru cu magistrala de 2 ori mai rapid, se lucrează cu jumătate din frecvența de ceas DDR3 SDRAM: lucru cu magistrala de 4 ori mai mare, consum redus de energie, crește lărgimea de bandă, senzor temperatură, pin de reset, tehnologie FlyBy în loc de stea DDR4 SDRAM: reduce consumul energiei XDR RAM: succesor pentru RDRAM PDRAM: integrată în același chip cu uP Forate logice la memorie SRAM: IT-SRAM: capacitate mare, arie mică, consum redus IT-SRAM_M, IT-SRAM-R, IT-SRAM-Q ODR2 SRAM: citire/scriere simultană Formate fizice de memorie: DIP: clasic, se rup pinii SOJ: mai modern, terminale în formă de J TSOP: SMD mic, pentru laptop BGA: mai mare, biluțe de cositor - conduc bine SIMM: un rând de pini, single/double sided SODIMM: de 2 ori mai mic ca SIMM ca dimensiune, laptop SIPP: un SIMM cu pini ascuțiți, nu se prea folosește, echivalent cu SIMM DIMM: capacități mari, 2 rânduri de pini RIMM: ca DIMM, are radiatoare pe ambele părți, folosit pentru memoria Rambus Metode acces la memorie: paginare - asigură o citire mai rapidă: acesta transmite cipului de memorie nu adresa datei cerute, ci adresa unei pagini care conţine informaţia dorită şi, în cadrul paginii, adresa datei solicitate întreţesere - procesorul desfăşoară o activitate paralelă de accesare pentru două bancuri de memorie *dezavantaj: nu mai este timp de refresh între două citiri consecutive şi se vor introduce una sau două stări de aşteptare ale procesorului (wait states) Memoria Cache: internă/primară (plasată în capsula uP, foarte rapidă datorită plasării lângă uP, e SRAM) externă/secundară (e SRAM, mai mare decât cea internă) ➔ de dimensiune mai mică decât cea a memoriei RAM ➔ de tip static (SRAM), pentru a evita operaţia de refresh ➔ rapidă, cu timp de acces mic: tA = 100/fP (fP este frecvenţa procesorului); ➔ apropiată de procesor, plasată între CPU şi memoria principală (RAM) ➔ organizată pe principiul localizării: spaţiale sau pe vecinătăţi (cache nears) temporale ➔ mapată pe blocuri de dimensiune fixă, adresate pe linii (cache lines) ➔ divizată în: cache primar/intern (L1, L3) cache secundar/extern (L2, L3) ➔ cu performanţa exprimată prin: rata de succes (hit rate) rata de eşec (miss rate).