You are on page 1of 63

MULTIPROCESOARE PE UN CHIP

‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ Comparatie SMT ± CMP SMT Arhitectura Hirata Modelele Tullsen Hyperthreading Technology (Intel) CMP Hydra Piranha Arhitecturi tera-scalare Proiectul Teraflop (Intel) Proiectul Cell

SMT vs. CMP
Dezvoltarea tehnologiei de fabricatie a circuitelor integrate => cresterea densitatii de integrare => cresterea optiunilor de proiectare. Paralelism: executia simultana de instructiuni in cadrul unui program secvential. Ex: arhitecturile superscalare -> executie out-of-order si executie speculativa a instructiunilor (cu tehnici de predictie dinamica). => cost mare pentru extragerea de paralelism dintr-un singur thread (marirea suprafetei necesare pe chip, timpi crescuti de proiectare si verificare). Alternative microarhitecturale cu thread-uri multiple de control: SMT (Äsimultaneous multithreading´) si CMP (Ächip multiprocessors´). SMT = thread-uri multiple independente trimit instructiuni la unitati functionale superscalare intr-un singur ciclu => utilizare mai buna a resurselor procesorului si toleranta superioara la intarzieri. CMP = utilizeaza core-uri relativ simple de procesor single-thread, executand thread-uri multiple in paralel. Daca o aplicatie nu poate fi descompusa in thread-uri, CMP este subutilizat.

Paralelism: -paralelism la nivel de instructiuni (ILP ³instruction-level of parallelism´): procesoarele au hardware special pentru identificarea dinamica a instructiunilor independente care pot fi lansate in acelasi ciclu (se utilizeaza un rezervor de instructiuni si un mecanism de redenumire a registrelor pentru eliminarea dependentelor false); -paralelism la nivel de thread-uri (TLP ³thread-level parallelism´): executia in paralel a mai multor thread-uri.

SMT SMT: mai multe thread-uri intra in competitie si partajeaza resursele disponibile ale procesorului in fiecare ciclu. Executia unui program paralel: TLP si ILP (in mod interschimbabil). . -creste durata ciclului datorita logicii complexe. Probleme de design hardware -> complexitatea arhitecturilor SMT : -aria ocupata creste x4 cu complexitatea core-ului (complexitatea crescand si timpul de proiectare). -core-urile CPU sunt complexe. compuse din mai multe componente strans interconectate => cresterea costului proiectarii si verificarii.

Cauze pentru resurse inactive: pierderea orizontala si pierderea verticala: .

Pierderile orizontale: lipsa paralelismului la nivel de instructiuni pentru instructiuni apartinand unui singur proces. . Pierderea verticala: asteptarea pentru citirea dintr-o memorie indepartata cu latenta mare => nu se mai lanseaza noi instructiuni (fenomen asemanator cu blocarea procesorului). Principiul de baza al SMT: intr-un ciclu de memorie instructiunile lansate nu apartin neaparat aceluiasi thread. executia simultana de thread-uri diferite => cresterea TLP. dar pentru ca se lanseaza si instructiuni ale altor thread-uri => pierderea orizotala este diminuata. In acelasi timp. Astfel exista putin ILP pentru un thread.

Arhitectura Hirata .

Instructiunile lansate sunt planificate dinamic de unitatile de planificare instructiuni. Daca unitatile functionale sunt libere -> aceste instructiuni sunt trimise la unitatile functionale pentru executie. fara referinta la memorie => overhead scazut. Fisierul de registre comun tuturor thread-urilor. dar impartit in bancuri => un banc: set privat de registre pentru fiecare thread. . Schimbarea de context se face rapid prin schimbarea legaturii logice intre un thread si cadrul context. Starea fiecarui thread. Daca totusi instructiunile nu pot fi trimise imediat la unitatile functionale. Logica de arbitrare implementeaza un mecanism de rotatie a prioritatilor. inclusiv registrele reprezinta un cadru de context. atunci acestea sunt memorate in statiile de asteptare (de adancime 1). Registrele de coada sunt utilizate pentru comunicatia intre thread-uri la nivelul transferurilor intre registre.

dar nu si cea orizontala). -lansare singulara. 4 sau 2. rezultand numarul de thread-uri 8.Modelele Tullsen Modele Tullsen (University of California. -conexiune limitata: fiecare context (thread) este direct conectat la o singura instanta a fiecarui tip de unitate functionala (exemplu: daca exista 4 unitati intregi. atunci o unitate de intregi poate primi instructiuni de la exact doua thread-uri) => flexibilitate redusa. . -lansare complet simultana: toate cele 8 thread-uri active pot intra in competitie pentru fiecare slot de lansare. lansare duala. San Diego) pentru SMT (complexitati hardware diferite) cu 10 unitati functionale. lansare ordin patru: fiecare thread poate lansa 1. Se poate intampla ca toate cele 8 instructiuni care se executa intr-un ciclu sa apartina aceluias thread. 2 sau 4 instructiuni per ciclu. permitand lansarea a 8 instructiuni pe ciclu: -multithreading de granulatie fina: in fiecare ciclu un singur thread lanseaza instructiuni (impiedica pierderea verticala.

dar la un cost mai scazut.Performante: Complexitatea hardware pentru modelul cu lansare complet simultana este foarte mare (deci si costul). Performantele modelelor cu lansare de ordin 4 si chiar 2 sunt apropiate. .

Asigurarea fluxului de instructiuni Problema importanta: asigurarea ca in fiecare ciclu sa fie suficiente instructiuni citite din memorie. . etc. -optimizari ale compilatoarelor. Algoritmi: -BRCOUNT: prioritate maxima thread-ul cu probabilitate minima de a se afla pe o secventa gresita (se numara instructiunile de salt Äbranch´ => prioritate maxima thread-ul cu numarul minim de instructiuni ³branch´). desfacerea buclelor etc). -tehnici de paralelizare a buclelor (restructurarea buclelor. -ICOUNT: prioritate maxima thread-ul cu numarul minim de instructiuni in banda de asamblare in segmente anterioare unitatilor functionale. Solutii: -unitatea de fetch este divizata pentru citirea de instructiuni de la thread-uri diferite. -pre-executie: accelerarea thread-urilor prin generarea de noi thread-uri care realizeaza diferite pre-executii (precitirea datelor si instructiunilor.). -planificarea de joburi. -MISSCOUNT: prioritate maxima thread-ul cu numarul minim de evenimente lipsa in cache. prezicerea ramificatiilor. fuziunea buclelor. -IQPQSN: prioritate minima thread-ului care are instructiuni in coada in ultimele pozitii (introduse recent) => cele mai bune rezultate cu ICOUNT. -fetch selectiv: se aplica algoritmi pentru selectarea thread-urilor pentru care se vor citi instructiuni.

La fel si fiserele de registre INT si FP. PC multiple si algoritm fetch icount Bloc predictie ramificatii. . Rezultatele (functie de numarul de thread-uri t): Bloc functional Tabele de remapare (reg. -> aria creste quadratic cu cresterea latimii repartizare instructiuni -> t*log2t (nu numai se adauga noi registre pentru thread-uri noi. arhitecturale->reg. reg. deoarece numarul de biti de adresa este fix. redenumire si a numarului de registre pentru redenumire (capacitatea de repartizare instructiuni) => crestere quadratica a suprafetei ocupate pe chip. Itag Routare Aria O (t*log (t)) O (t) O (t) O (t) O (log (t)) O (log (t)) O (log (t)) Factor cheie: tabelele de remapare (RAM multiport). dar se memoreaza si bitii de adresa . aria creste liniar cu numarul de thread-uri. aria creste quadratic. stiva separata per bloc Coada instructiuni (³out-of-order´) Dtag. decodificare. Totusi. fizice) Registre INT and FP Bloc fetch.Analiza ariei ocupate in functie de numarul de thread-uri Burns si Gaudiot -> cresterea liniara a capacitatilor de fetch.termenul log).

O implementare comerciala de SMT: Intel¶s Hyperthreading Technology Hyperthreading Technology: un procesor fizic apare ca doua procesoare logice (resursele fizice de executie sunt partajate. fiecare cu cate doua copii ale starii arhitecturale => sistemul apare ca si cand ar avea 4 procesoare ): . iar starea arhitecturala este dublata pentru cele doua procesoare logice). S. celalalt face progrese. ca si cum ar fi procesoare fizice multiple. si programele utilizator planifica procese si thread-uri catre procesoarele logice.O. Organizarea (doua procesoare fizice. Scop al tehnologiei: minimizarea ariei chipului si costului implementarii. Alt scop: cand un procesor este blocat.

.

unul pentru fiecare procesor logic. Cele mai multe instructiuni se executa din TC (³Execution Trace Cache´).Implementarea tehnologiei : + 5% dim. chipului si cerinte maxime de putere  performante mult mai mari. Daca un procesor este blocat atunci celalalt procesor are acces complet. Procesoarele logice concureaza pentru acces la TC in fiecare ciclu => accesul este permis alternativ. Structurile de predictie a ramificatiilor sunt duplicate. incluzand registrele de scop general. Logica de redenumire a registrelor utilizeaza un RAT (ÄRegister Alias Table´): urmareste ultima versiune a fiecarui registru arhitectural => doua RAT-uri. Starea arhitecturala: registrele. Se utilizeaza doua seturi de pointeri de instructiune urmatoare. Executia de instructiuni complexe (necesita secventa complexa de microcod) se utilizeaza doi pointeri de microcod catre Microcod ROM. controland secvente independente de microcod (accesul la Microcod ROM se face de asemenea alternativ). . operand in paralel. registrele de control. registrele APIC si anumite registre de stari ale masinii.

S. -arhitectura CMP este mai putin sensibila la o slaba organizare de date si gestiune a comunicatiilor. identice => costul de proiectare si verificare este scazut. aloca fiecarui CPU un singur thread de control (nu necesita alocare dinamica de instructiuni). Avantaje: -durata ciclului redusa datorita caracteristicelor naturale de cluster (fiecare CPU este un mic cluster rapid de componente). deoarece intarzierile in comunicatii sunt mici si rata de transfer este mare.O. ceea ce limiteaza exploatarea dinamica a ILP.CMP CMP => TLP prin rularea unor secvente complet separate de instructiuni pe procesoare separate . . -utilizarea unui grup de procesoare mici. dar permite ca fiecare CPU sa fie mic si rapid.

dar executa thread-uri multiple in paralel pe core-uri multiple.  scaderea timpului consumat cu validarea proiectului.Utilizeaza core-uri relativ simple pentru thread singular.  simplitatea proiectului.  frecventa mai mare a ceasului. Arhitectura de baza: .

Core-urile: -complet independente.8 procesoare mici superscalare cu unitate de lansare de dim. Pentru implementarea multithreading speculativ exista doua abordari generale: -utilizarea de suport hardware: permite comunicarea intre procesoare la nivelul memoriei si la nivelul registrelor. -utilizarea de suport hardware minim: suport minim pentru executie speculativa. 2. iar comunicatia se face numai la nivelul memoriei. CMP = platforma ideala pentru rularea de aplicatii multithread. In multithreading speculativ: thread-urile speculative din aplicatie trebuie sa fie identificate la momentul compilarii sau complet la momentul rularii (cu suport hardware). -strans integrate cu memoriile cache (accesul la cache intr-un singur ciclu). .

cache-urile L1 si cache-ul L2 pe un chip.Implementare a arhitecturii CMP: Hydra Hydra (Stanford University) integreaza 4 procesoare bazate MIPS. .

pentru transferul datelor intre procesoare. Magistrala de scriere executa scrierile core-urilor in cache-ul L2. plus cateva magistrale de adrese si control (logic functioneaza ca magistrale. Procesoarele+cache-uri -> conectate la cache-ul L2 prin magistrala de scriere si magistrala de citire. magistralele virtuale sunt fizic conexiuni (wires) impartite in mai multe segmente utilizand repetoare si buffere in banda de asamblare. -> consistenta memoriei (toate scrierile trebuie plasate pe magistrala pentru a fi vizibile procesoarelor. pentru a impiedica scaderea frecventei ceasului). Magistrala de citire functioneaza ca o magistrala sistem de scop general. Arhitectura bazata pe magistrala suficienta pentru accesul la memoria cache L2 a 4 . interconectari crossbar sau conexiuni ierarhice.8 procesoare.Procesoarele suporta instructiunile normale load/store. -> protocol de coerenta cu invalidare pentru cache-urile L1 (scrierile sunt transmise pe magistrala pentru invalidarea copiilor blocului in cache-urile L1). in ordinea in care ele actualizeaza memoria partajata). plus instructiunile speciale Äload locked´ (LL) si Ästore conditional´ (SC) pentru implementarea primitivelor de sincronizare. Pentru implementari cu mai multe procesoare sunt necesare solutii cu mai multe magistrale. . cache-ul secundar si memoria externa chipului ( transfera o linie de cache intr-o singura perioada de ceas).

hardware-ul trebuie sa asigure ca thread-ul prost speculat va fi reexecutat (sau cel putin portiunea cu citirea incorecta.Specularea la nivel de thread-uri. de data aceasta cu datele corecte). Secventa de instructiuni este impartita arbitrar intr-un grup de thread-uri care pot fi rulate in paralel pe un multiprocesor. Suportul hardware pentru specularea la nivel de thread-uri -> elimina necesitatea ca programatorii sa imparta explicit programul original (secvential) in thread-uri independente. Hardware-ul trebuie sa urmareasca toate dependentele interthread: cand un thread ulterior genereaza o incalcare a dependentei prin citirea prea devreme de date. Pentru a suporta specularea la nivel de thread-uri este necesar un hardware de coerenta special care sa monitorizeze datele partajate de thread-uri. . Hydra utilizeaza specularea la nivel de thread-uri => paralelizarea unui program in thread-uri.

. pentru a detecta cand o citire apare prea deveme (hazarduri RAW): daca o data este citita de un thread ulterior si inscrisa de thread anterior. hardware-ul trebuie sa consemneze ca citirea a gasit data incorecta (incalcare de dependenta) => thread-ul care a incalcat dependenta trebuie reexecutat cu valorile corecte de date (figura b).Cerintele de baza pentru un hardware de coerenta care sa implementeze specularea la nivel de thread-uri: 1) transmiterea datelor intre thread-uri paralele: un sistem speculativ trebuie sa fie capabil sa transmita datele partajate rapid si eficient. de la un thread anterior (mai devreme) ruland pe un procesor la un thread ulterior ruland pe alt procesor (figura b). 2) mecanism de urmarire a citirilor si scrierilor in memoria de date partajate.

O data ce thread-urile speculative s-au incheiat cu succes starea lor trebuie adaugata la starea permanenta a masinii in ordinea corecta din program.figura c). Memoria speculativa: un mecanism care sa permita descarcarea schimbarilor speculative in starea masinii dupa o incalcare (in acest timp nu se poate pierde nicio stare permanenta a masinii . 4) retragerea scrierilor speculative in ordinea corecta (hazarduri WAW). considerand secventierea originala a thread-urilor => hardware-ul trebuie sa intarzie scrieri ale unor thread-uri ulterioare care au loc de fapt inaintea scrierilor unor thread-uri anterioare (figura d). .3) mecanism pentru descarcarea sigura a starii speculative dupa incalcare.

. Hardware-ul speculativ trebuie sa asigure ca thread-ul anterior nu poate vedea nicio modificare facuta de un thread ulterior (aceste modificari nu s-au produs inca in secventa originala) => complicat: fiecare procesor va rula eventual thread-uri generate mai noi (exemplu thread i+2). Figura e) indica un thread anterior care citeste de la o adresa la care un thread ulterior a scris deja date.5) furnizarea redenumirii de memorie (hazarduri WAR). care trebuie sa vada modificarile.

iar coerenta la nivel de registre este asigurata de software. coerenta speculativa a memoriei este asigurata de hardware.In Hydra. Resursele hardware care asigura coerenta speculativa a memoriei: .

1) bitii de tag suplimentari adaugati la fiecare linie de cache primar pentru a indica daca vreo data din linie a fost citita sau scrisa speculativ. 2) set de buffere de scriere care pastreaza scrierile speculative pana cand pot fi executate sigur in cache-ul L2 (garantat sa pastreze numai date nespeculative). .

Numai dupa incheierea executiei thread-urilor bufferele sunt inscrise in L2 si scrierile raman permanente.Fiecare thread speculativ are un astfel de buffer. se seteaza bitul de preinvalidare al liniei: . Daca un thread speculativ (ÄMe´) citeste din cache-ul L1. se executa cautarea si in bufferele de scriere ale thread-urilor. in caz de coincidenta se furnizeaza linia din buffer si se seteaza bitul Modified al liniei (mai optim numai pentru thread-urile i-1 si i). Daca exista coincidenta in bufferul thread-ului speculativ i+1.

O arhitectura scalabila bazata pe un CMP: Piranha Schema bloc (Compaq ): .

-write-back. -fiecare core CPU conectat direct la cache de instructiuni (iL1) si cache de date (dL1) de 64 KB. -interfata unidirectionala (initiatorul furnizeaza datele)-> daca destinatia este ³ready´ se trimte un ³grant´ si are loc transferul cu rata de un cuvant de 64 biti per ciclu. si de inmultire). -UAL1 ± 5 (suporta instructiuni in v. 8 segmente: -fetch instructiune. protocol MESI. cu lansare o singura instructiune. -fiecare port are doua cai independente de date de 64 biti.m. -rata globala interna 32 GB/s. executie in-order. organizare set asociativa de dim. -citire registru. -ICS (Intra-Chip Switch): conecteaza cache-urile la alte module (crossbar). -core: cale de date in banda de asamblare de 500 MHz cu v.-8 core-uri CPU Alpha.m. 2. ..

-doua motoare de protocol HE (Home Engine) si RE (Remote Engine) conectate la ICS (suporta memorie partajata pentru mai multe chipuri Piranha): -HE exporta blocurile avand home local. -controller de memorie (MC) la fiecare modul L2. organizare set asociativa.-cache L2 de 1 MB. cu algoritm ³round-robin´ (³least-recently-loaded´) de inlocuire a blocurilor. . => implementare: controllere microprogramate. interfatat direct la un banc cu maxim 32 chipuri Rambus DRAM. cu 8 module separate. intretesut. -8 GB (chipuri de 256 Mb). tag-uri si memorie separate. =>rata de transfer de 1. -RE importa blocurile avand home la distanta. de dim 8. -o linie = 64 octeti. fiecare cu controller. -32 GB (chipuri de 1Gb).6 GB/s per canal (in total 12.8 GB/s). Capacitati: -2 GB (chipuri de 64 Mb) = 8x32x64/8.

Un motor: .

-PS (Packet Switch). -IQ (Input Queue). distribuirea intreruperilor.Interconectarea chipurilor Piranha: -RT (Router). initializare. Modulul SC (System Control): gestioneaza functiile diverse de intretinere (configurare sistem. => largimea de banda: 32 GB/s (pentru fiecare chip). monitorizarea performantelor). . manipularea exceptiilor. -OQ (Output Queue).

=> chip special Piranha de I/E: .Piranha = un multiprocesor pe un chip fara capabilitati de I/E.

Exemplu de sistem Piranha cu chipuri de prelucrare si chipuri de I/E: -max 1024 noduri (raport variabil noduri prelucare / noduri I/E). -routerul suporta topologii arbitrare de retea si reconfigurare dinamica. .

uniprocesor OOO (out-of-order) 1 GHz si multiprocesor P8 (8 core-uri) 500 MHz. uniprocesor INO (inorder) 1 GHz. S. modificari minime (Tru64 Unix). Comparatie de performante: uniprocesor P1 500MHz.O.Software compatibil binar cu software-ul Alpha (de sistem si de aplicatii) => aplicatiile utilizator fara modificari. pentru doua aplicatii de baze de date OLTP (on-line-transaction-processing) si DSS: .

interconectate printr-o retea scalabila. O posibila abordare: Ätiled architecture´ -> imparte pastila de siliciu intr-un numar mare de blocuri (Ätiles´) (aproape) identice. I/E si interfete de sistem (Intel: Äuncore´ = toate elementele care nu sunt motoare de calcul). eficienta energetic => simplifica layout-ul si permite o integrare rapida a diferitelor blocuri. Conectarea: infrastructura formata din retea de interconectare pe chip.   tendinta este de a integra zeci-sute de core-uri pe un chip. impreuna cu controloare de memorie. . -tehnicile SMP permit integrarea unor PE-uri (ÄProcessing Engine´) mici pe chip. ierarhie de memorie cache. memorie. punti de I/E si motoare grafice.Arhitecturi tera-scalare Necesitatea arhitecturilor tera-scalare: -impunerea procesoarelor duale in ultimii ani. -tendinta de crestere a numarului de core-uri.

elemente de platforma (memorie si controloare de I/E) si interfata de sistem pentru conectarea unor procesoare multiple si a altor periferice: . unitati cu functii fixe).Arhitectura tera-scale integreaza un numar mare de core-uri de calcul de scop general impreuna cu motoare de calcul de scop special (unitati de textura. unitati de umbrire Äshader units´.

-ierarhie de cache-uri care sa permita elementelor de calcul multiple sa utilizeze si sa partajeze resursele de memorie de pe chip. latenta scazuta si eficienta de putere pentru conectarea elementelor de calcul si de platforma. .Uncore-ul arhitecturii tera-scale consta din urmatoarele elemente: -retea de interconectare scalabila de banda larga. care sa alimenteze cu date numarul mare de elemente de calcul. -arhitectura de memorie scalabila si de banda larga.

-validare si testare: furnizeaza suport pentru testare si validare -> se prefera routarea Ädeadlock-free´ fata de Ädeadlock-recovery´. -regularitate: se obtine simetrie fizica. -flexibilitate si proiectare prietenoasa: cu un efort minim de reproiectare sa se satisfaca un segment larg de pe piata.Reteaua de interconectare Cerinte: -scalabilitate: multe zeci pana la cateva sute de noduri (agenti) -> crestere subliniara a distantei medii in raport cu numarul de noduri. -partitionabilitate: topologia arhitecturii partitionata dinamic pentru a permite performanta si izolarea defectelelor. . -toleranta la defecte: degradare Äeleganta´ la defecte.

impreuna cu variante ale acestora. Impachetare 2D a unui mesh 3D pentru 64 de noduri: . -inel.Posibile solutii pentru implementarea retelei: -mesh 3D implementat 2D. -tor / mesh 2D.

pastrandu-se insa topologia initiala. . procesoarele de rezerva sunt activate dupa reconfigurarea retelei de interconectare.Solutii de toleranta la defecte 1) Noduri de rezerva: procesoare de rezerva dotate cu interfete de retea si switche-uri -> la detectarea unor defecte in unele procesoare.

v. al routarii Ädeadlock-free´. De asemenea se marcheaza si alte regiuni daca sunt sigure sau nu din p.2) Routare toleranta la defecte: la initializarea sistemului se ruleaza un algoritm de identificare a defectelor si a topologiei => se determina locatia / identitatea componentelor defecte (sunt marcate).d. .

fiecare partitie fiind utilizata intr-o aplicatie precisa: . unitati de scop special si alte elemente de platforma. fiecare cu cate o fractie din numarul total de unitati de calcul.3) Partitionare pentru izolarea performantelor: se pot realiza mai multe partitii pe chip.

-stream-uri: programele sunt structurate sub forma unor nuclee (Äkernels´) unde date de intrare sunt prelucrate si date de iesire sunt transferate la alte nuclee. pot sau nu sa partajeze date. analiza numerica si data-mining. -incarcari puternic paralele. Exemple: media si aplicatii grafice. Exemple: prelucrarea tranzactiilor si aplicatiile web. care pot fi de tipuri diferite: -paralelism de thread-uri: thread-urile pot fi similare sau foarte diferite. -incarcari cu combinatii de sectiuni scalare si paralele: performantele sunt limitate de performantele sectiunii scalare (legea Amdahl). Exemple: media.Ierarhia de cache-uri si protocolul de coerenta Ierarhia de cache-uri trebuie sa suporte eficient o gama larga de modele de programare si de incarcare: -incarcari multiprogramate: nu exista comunicare si partajare de date intre procese ruland pe core-uri diferite. unde anumite date pot fi partajate intre taskuri. -paralelism de date: un task similar este executat pe seturi diferite de date. .

in functie de incarcari: . In CMP-urile cu putine core-uri ultimul nivel de cache este implementat sub forma unui singur bloc UMA.In procesoarele multicore cache-urile L1 sau L1 si L2 sunt private fiecarui core. dar pe masura ce creste numarul de core-uri se opteaza pentru o distribuire fizica a cache-ului. iar ultimul nivel este partajat. Organizarile cache-ului multicore.

-S (shared): anumite cache-uri pot avea copii ale blocului in starea Shared. .Coerenta: protocoale bazate pe directoare (adaptate CMP-urilor). Director: -evidenta starilor copiilor liniilor la nivelul memoriilor cache. -intrare = camp de stare + camp pentru memorarea identitatilor cache-urilor care au copii ale liniei (pointeri). -X (exclusive): unul din cache-uri poate avea o copie a liniei intr-una din starile Modified. Exclusive sau Shared. -intrari corespunzatoare liniilor. Stari: -I (invalid): niciun cache nu contine copie a liniei.

-harta partiala de biti (un bit pentru un grup de cache-uri).Informatia de identificare: -harta completa de biti (un bit pentru fiecare cache). . -set limitat de identitati de cache-uri cu un mecanism de gestionare a depasirilor.

Arhitectura de memorie Cresterea numarului de core-uri (puterii de calcul) => cresterea ratei de transfer a datelor (pentru majoritatea aplicatiilor).Solutii: -transfer de I/E off-chip cu eficienta de putere si viteza mare; -acces DRAM cu eficienta de putere si banda larga. Solutii CMP: -memorii mai eficiente; -imbunatatirea gestiunii memoriei de pe chip. Exemplu: DRAM incorporat permite cresterea densitatii de memorie on-chip in comparatie cu SRAM. In plus, gestiunea eficienta a memoriei de pe chip prin evitarea datelor duplicate in ierarhia de cache-uri => cresterea capacitatii de pe chip. Integrarea DRAM (ex. GDDR) pe chip permite un control mai bun al canalului I/E si astfel o rata mai mare, in comparatie cu conectarea la un conector DIMM de pe placa de baza. Solutii recente: Ä3D stacked SRAM´ cu rata mare (exemple: prototipul Intel tera-scale si cercetarile IBM in domeniul circuitelor integrate 3D).

Proiectul Intel chip multicore - Teraflop
=> septembrie 2006: chip cu 80 core-uri, la 4 GHz, arie de 10x8 core-uri, retea mesh interna. Performante: 1.28 Tflops. Core: router cu 5 porturi, motor de prelucrare (PE ± Äprocessing engine´), fisier de registre cu 32 de intrari (6 porturi de citire si 4 porturi de scriere), 2 K memorie de date, 3 K memorie de instructiuni si doua unitati de v.m. Fiecare FPU este un multiplicator ± accumulator de v.m. simpla precizie (FMAC) cu o banda de asamblare avand 9 segmente si o rata de 2 Flops/ciclu. PE implementeaza VLIW ISA, non-x86, avand instructiuni de 96 biti cu maxim 8 operatii/ciclu. Latentele instructiunilor pentru diferite blocuri functionale din PE sunt: -unitatea de v.m. 9 cicluri; -load/store: 2 cicluri; -send/receive: 2 cicluri; -jump/branch: 1 ciclu.

Reteaua mesh care conecteaza PE-urile: comunicatia bazata pe pachete.

Chiar si routerul poate fi oprit sau pornit pentru adaptarea la trafic! => proiect de testare a solutiilor de organizare. distribuire a ceasului si fabricare a chipurilor masiv multicore. in functie de incarcarea de lucru.Pentru economie de energie. . fiecare core este impartit in 21 de regiuni separate. iar pe baza conditionarii ceasului. diferite blocuri functionale pot fi trecute in stare inactiva in mod dinamic.

Sony si Toshiba => arhitectura ÄCell Broadband Engine Architecture´ (tip multiprocesor pe cip heterogen).Proiectul Cell Proiectul Cell: lansat in anul 2000 de IBM. Cell furnizeaza paralelism la toate nivelurile de abstractizare sistem: -paralelism la nivel de fire de executie: proiect multi-core. Un element esential: SPU (Äsynergistic processor unit´) -> suporta paralelism la nivel de date (instructiuni cu paralelism de date). Prima implementare: Cell BE (ÄCell Broadband Engine´). -paralelism la nivel de instructiuni: planificare statica. instructiuni SIMD si furnizeaza un mediu de executie cu fire multiple de inalta performanta pentru toate aplicatiile. -paralelism de date: instructiuni pentru date paralele. Avand unitati multiple SPU pe un cip se obtine si paralelism la nivel de fire de executie. Suporta instructiuni scalare. .

.

dar avand si acces complet la memoria partajata coerenta (inclusiv spatiul de I/E mapat in memorie). PPE realizat pe arhitectura IBM Power 64 biti cu extensie vectoriala pentru prelucrari media pe 128 biti si memorie cache pe cip cu doua niveluri. . implementand si interfata pentru magistrala interna de interconectare. Controllerul SMF transfera datele si realizeaza sincronizarea in paralel cu SPU. SPE-urile sunt procesoare independente ruland fiecare cate un fir de executie independent. Fiecare SPE consta din SPU si controller SMF (Äsynergistic memory flow´). -SPE (Äsynergisitic processor element´) optimizat pentru prelucrarea de date. Functiile procesoarelor: -PPE (ÄPower processor element´) optimizat pe taskuri de control. Fiecare SPE dispune de o memorie locala (partajata) pentru acces eficient la instructiuni si date. fiind optimizate pentru aplicatii de calcul intensiv.Cell BE implementeaza un CMP (Äsingle cip multiprocessor´) cu noua procesoare operand pe o memorie partajata coerenta.

Structura SPU: SPU implementeaza paralelism la nivel de date prin integrarea unitatilor de executie scalare si SIMD. acestea realizanduse prin unitatile vectoriale. Nu exista suport separat pentru prelucrari scalare. Nu exista fisier separat de registre scalare: SPU memoreaza scalarii in fisierul de registre unificate scalare/vectoriale de 128 biti cu 128 intrari. Astfel. . se simplifica routarea datelor si partajarea datelor intre date scalare si vectoriale.

. Pentru exemplificare se considera executia operatiilor SIMD pe un vector de patru elemente de un cuvant fiecare. Operatiile SIMD paralele nu se pot utiliza pentru elemente scalare aliniate arbitrar si incarcate in registrele vectoriale (b). O instructiune SIMD se realizeaza prin executia in paralel a aceleiasi operatii in paralel pe toate elementele vectorului (a). Este necesar ca datele sa fie aliniate la aceeasi componenta.Executia operatiilor scalare se face utilizand caile largi de date SIMD (Äscalar layering´).

In figura (c) este prezentata compilarea codului scalar pentru a fi executat pe unitatile SIMD. dar un programator sau un compilator poate alinia operandul in orice pozitie. Pe baza alinierii specificate de adresa scalarului se utilizeaza instructiuni de rotatie pentru plasarea scalarului in pozitia corecta. . Realizarea operatiei se bazeaza pe alinierea operandului in componenta cea mai din stanga.

Inserarea unui scalar intr-un quad-word se face prin utilizarea unei instructiuni Äshuffle´ pentru routarea datelor din doua registre de intrare. Pentru implementarea secventei Äread-modify-write´ SPU suporta o instructiune Ägenerate controls for insertion´. care genereaza un cuvant de control care comanda instructiunea shuffle de inserare a unui octet/halfword/word intr-o pozitie specificata de adresa de memorie.Figura (d) prezinta utilizarea secventei Äread-modify-write´ pentru memorarea unui scalar prin intermediul interfetei de memorare pentru date de tip quad-word. Secventa de operatii este generata de compilator. .

Configuratie cu un singur nod avand doua interfete IOIF: .Interconectarea procesoarelor Cell se face prin intermediul IOIF (I/O interface) si BIF (broadband engine interface).

Configuratie cu doua noduri cate o interfata IOIF si un port configurat BIF pentru conectarea nodurilor: .

Configuratie multinod utilizand un switch atasat la porturile configurate BIF: .

-512 KB memorie cache L2 pentru fiecare procesor Cell/B.Procesoare Cell sunt utilizate in sisteme pentru jocuri.E. IBM BladeCenter QS21 proiectat pentru utilizarea in aplicatii HPC (Ähigh performance computing´): prelucrarea de imagini si semnale. . echipamente HDTV. -S. Supercalculator hibrid de la Los Alamos National Laboratory (ÄRoadrunner´) pentru o gama larga de aplicatii stiintifice si comerciale. Linux Red Hat. supraveghere digitala video. -memorie principala 2GB (1GB per procesor).E.2 GHz (fiecare cu un core PPE si opt core-uri SPE). la 3. cercetare stiintifica. Performantele sistemului depasesc 1.O.6 Pflops. Supercalculatorul necesita tehnologii avansate de racire si gestiune a puterii. Caracteristici ale sistemului: -doua procesoare Cell/B. Aria ocupata este de 12000 ft2 (aproximativ trei terenuri de basket).E. si 256 KB de memorie locala pentru fiecare SPE. servere si supercomputere. Se bazeaza pe un numar de peste 16000 core-uri AMD Opteron si peste 16000 procesoare Cell/B.

Supercalculatorul de la University of Massachusetts realizat din 16 module PS3 (Playstation 3 de la Sony) pentru studierea coliziunii dintre doua gauri negre. inclusiv in domeniul medical. prelucrarea datelor seismice. Modulele au fost conectate impreuna cu un switch comercial. aerospatial. s-a instalat PowerPC Linux si au fost dezvoltate aplicatii bazate pe OpenMPI (distributie MPI pentru PowerPC Linux). aparare. semiconductori. Exemplu: computer tomograf cu aplicatie de reconstructie de imagini ruland pe un Mercury Dual Cell-Based Blade. prelucrare video. . Alte sisteme Mercury in diferite domenii: EDA (Äelectronic design automation´).Sisteme de la Mercury Computer Systems pentru prelucrari de imagini si reconstructie de imagini.