Direcții în evoluția arhitecturii microprocesoarelor

Mihai Budiu -- mihaib+@cs.cmu.edu
http://www.cs.cmu.edu/~mihaib/

februarie 2000

Subiect:
evoluția microprocesoarelor: trecut, prezent și viitor
Cunoștințe necesare:
cunoștințe elementare despre arhitectura calculatoarelor
Cuvinte cheie:
microprocesor, SPEC, ILP


Cuprins




Am întîlnit de mai multe ori un banc pe Internet, care spunea că, dacă mașinile ar fi evoluat în aceeași măsură cu calculatoarele, acum ar fi mers 120 de kilometri cu benzina dintr-o brichetă, și ar fi costat cît o pîine. (Un contra-banc, din partea industriei automobilistice, ofensate, zicea apoi că, dacă ar fi evoluat la fel, mașina ar fi refuzat să mai meargă de cîteva ori pe zi, și ar fi trebuit să o duci înapoi în garaj ca să repornească.)

Adevărul este că progresele făcute de tehnologia calculatoarelor sunt absolut uluitoare; ajunge să îți cumperi un calculator nou după doi ani ca să fii impresionat de cîștigul de performanță înregistrat. Cîștigul de performanță se datorează unor procesoare din ce în ce mai sofisticate și mai rapide, și unor memorii de capacități din ce în ce mai mari.

Răspunzătoare pentru creșterea exponențială a performanței sunt însă în cea mai mare măsură microprocesoarele. În acest articol vom arunca o privire asupra evoluției microprocesoarelor de la origini pînă în prezent. Vom încerca apoi să caracterizăm arhitecturile procesoarelor contemporane, și să extrapolăm din datele la dispoziție, speculînd despre unele din posibilele evoluții viitoare.

Trebuie să atrag de la început atenția că nu am însușiri paranormale, și ca atare nu sunt profet. Domeniul tehnologiilor de calcul este extraordinar de volatil, și se mișcă cu o viteză fantastică; orice previziune este cel puțin hazardată. De altfel în figura 1 ilustrează acest fapt contrapunînd previziunile din urmă cu cîțiva ani ale unei organizații extrem de prestigioase, Semiconductor Industry Association (SIA, http://www.semichips.org/), cu realitatea. Deci nu vă așteptați de la mine la mai mult.

Am mai publicat în PC Report o serie întreagă de articole despre arhitectura procesoarelor moderne, pe care le voie cita ocazional; toate acestea sunt disponibile din pagina mea de web. Articolul de față va fi însă mai superficial. Există o cantitate enormă de informație pe web. În acest articol am folosit în mod repetat informații de la http://bwrc.eecs.berkeley.edu/CIC/, CPU Info Center.

Evoluția microprocesoarelor

Industria semiconductoarelor: un fenomen economic

Un istoric interesant al diferitelor idei arhitecturale din microprocesoare puteți găsi pe web la http://bwrc.eecs.berkeley.edu/CIC/archive/cpu_history.html.

Primul microprocesor a fost creat de firma Intel în 1971. Numele său era Intel 4004, și era un procesor pe 4 biți. Apariția primului micorprocesor a fost un pas cu uriașe consecințe în evoluția ulterioară a sistemelor de calcul. Diferența între microprocesor și metodele îndeobște folosite era că procesorul strînge pe o singură pilulă de siliciu toate unitățile funcționale importante necesare executării programelor; fiind toate strîns integrate, comunicația între ele este rapidă și eficace, permițînd dintr-o dată un salt calitativ.

Nu mai puțin importantă este reducerea de cost care urmează unei astfel de integrări. Cu siguranță că principalul motiv al evoluției explozive a tehnologiei circuitelor integrate nu este de natură tehnologică, ci economică: spirala prețurilor din ce în ce mai scăzute face echipamentele de calcul din ce în ce mai accesibile, cererea crește, ducînd la venituri mai ridicate pentru fabricanți, care investesc mai mult în cercetare/dezvoltare și linii tehnologice, obținînd densități mai mari, permițînd integrarea mai multor circuite, și costuri și mai joase. Cu toată scăderea de preț, veniturile globale ale industriei semiconductoarelor au crescut în mod galopant: numai anul trecut vînzările globale au fost de 149 de miliarde de dolari!

Esențial pentru a menține această spirală este faptul că echipamentele de calcul măresc enorm productivitatea muncii, direct sau indirect: de aici cererea crescîndă. Iar experții afirmă că acesta este doar începutul, și că în viitor fiecare individ va depinde de zeci de dispozitive de calcul în fiecare clipă. Nu suntem prea departe de acest punct: chiar în ziua de azi, o mașină modernă are în medie 15 microprocesoare, care controlează, reglează și diagnostichează tot felul de parametri, de la injecție pînă la frîne.

Nu pot să mă abțin să remarc că Statele Unite ale Americii atribuie o treime din creșterea venitului național brut în anul trecut doar tehnologiilor informaționale, care însă ocupă doar 8% din forța de muncă. În foarte mare măsură, tehnologia informației este responsabilă pentru fenomenala dezvoltare economică pe care Statele Unite o traversează în acești ani.

Evoluții cantitative

Să lăsăm acum deoparte economia, și să aruncăm o privire asupra evoluției unor parametri ai procesoarelor de-a lungul timpului. Tabela 1 arată evoluția generațiilor succesive ale celei mai proeminente familii de procesoare, ale firmei Intel:


Tabela 1: Evoluția procesoarelor Intel. Spațiile albe indică lipsa informației. Merced va fi lansat oficial la cîteva zile de la scrierea acestui articol (pe 17 februarie 2000), deci datele sunt incerte.
An Procesor Ceas Tranzistori Tehnologie
(Mhz) (mii) ($\mu$m)
1971 4004 0,74 2 ,250
1972 8008 0,8 3 ,300
1974 8080 3,1 4 ,500
1978 8086 10 29 2
1979 8088 8 29 2
1980 80186 1,5
1982 80286 12 134 1,5
1985 80386 33 275 1
1989 80486 100 1 600 0,6
1993 Pentium 266 4 500 0,35
1996 PPro 200 5 500 0,35
1997 PII 450 7 500 0,25
1999 PIII 733 28 000 0,18
2000 Merced 800 0,18


Ultima coloană din tabela 1 și figura 1 arată care este impactul miniaturizării: această coloană indică dimensiunea de bază (feature size), care poate fi văzută ca fiind dimensiunea unui tranzistor. Orice reducere a acestei valori are un impact cuadratic, pentru că suprafața crește cu pătratul laturii. O reducere de la 2 microni la 1,5 (50%) m'are'ste deci suprafa'ta efectivă cu 77% (4/2,25 = 1,77).

Figura 1: Pronosticurile făcute în 1994 și 1997 de Semiconductor Industry Association privind miniaturizarea circuitelor integrate digitale. Estimările din 1994 au fost depășite de realitate, forțînd SIA să re-estimeze evoluția pentru viitor.
\begin{figure}\centerline{\epsfxsize=12cm\epsffile{sia.eps}}\end{figure}

Din fericire, reducerea dimensiunilor mai are încă o consecință foarte importantă: traseele pe care trebuie să le parcurgă curentul electric între dispozitive devin mai scurte, deci se pot parcurge mai rapid. Proiectanții pot face deci procesorul să funcționeze cu un ceas mai rapid1. Evoluția frecvenței ceasurilor se vede în coloana a treia. La ora apariției acestui articol procesoarele pentru PCuri la frecvențe de 1 gigahertz vor fi o realitate foarte apropiată2.

Faptul că avem siliciu la dispoziție pentru a implementa mai mulți tranzistori înseamnă că:

  1. Putem muta mai multe circuite auxiliare pe același cip.

    Evoluția procesoarelor cunoaște cîteva salturi calitative: cînd miniaturizarea făcea posibilă integrarea unui nou dispozitiv pe același circuit integrat, se realiza un salt de performanță. Astfel, au fost integrate succesiv: unități din ce în ce mai mari de procesare (8, 16, 32, acum 64 de biți), coprocesoare aritmetice, unități de management al memoriei, cacheuri de nivel 1 și chiar 2;

  2. Designerii folosesc tranzistorii suplimentari pentru a construi circuite mai sofisticate, care pot executa mai repede și mai eficient programele. Metoda fundamentală folosită este de a face mai multe lucruri în paralel.

Împreună aceste trei fenomene (viteza ceasului, integrarea pe o singură pastilă și exploatarea paralelismului) contribuie la creșterea performanței totale a procesoarelor. Așa cum am povestit și cu alte ocazii, măsurarea performanței unui calculator se face evaluînd sistemul pe mai multe programe (deci performanța depinde foarte mult și de compilatorul folosit), care de obicei fac parte din suite de teste standardizate (benchmark suites). Cele mai folosite pentru a evalua procesoare sunt cele din seria SPEC: Standard Performance Evaluation Corporation (http://www.specbench.org). Nu ne vor interesa acum prea tare ce reprezintă numerele acestea; cert e că cu cît sunt mai mari, cu atît e mai bine. Graficul din figura 2 arată evoluția performanței procesoarelor în ultimii 10 ani, în termeni SPEC.

Figura 2: Evoluția performanței procesoarelor pe suita de teste SPEC. SpecINT măsoară performanța programelor de uz general (care folosesc preponderent numere întregi), iar SpecFP pe cea a programelor de calcul științific (care folosesc mai ales numere în virgulă flotantă).
\begin{figure}\centerline{\epsfxsize=8cm\epsffile{spec.eps}}\end{figure}

Evoluția urmărește aproximativ o curbă exponențială: în fiecare an performanța crește cu 60%.

Tehnologii arhitecturale

Așa cum am ilustrat în seria mea de articole intitulate ``arhitectura avansată a procesoarelor'', o mulțime de inovații tehnologice au fost introduse una după alta în arhitecturi; de fapt intenționez să continui această serie și în viitor, pentru că mai sunt de prezentate și alte mecanisme importante.

Îmi permit să expun în continuare viziunea profesorului John Hennessy, de la universitatea Stanford, așa cum a expus-o în prelegerea pe care a dat-o ca invitat la Federated Computer Research Conferences în mai 1999.

Hennessy vede două tehnologii arhitecturale ca fiind esențiale: exploatarea paralelismului la nivel de instrucțiune (Instruction Level Parallelism, ILP) și ierarhii sofisticate de memorie (cache-uri). Să spunem cîteva cuvinte despre fiecare:

ILP

Paralelismul la nivel de instrucțiune constă în independența instrucțiunilor din programe una de alta, ceea ce ne permite să executăm mai multe instrucțiuni simultan. Am vorbit altădată pe larg despre paralelismul la nivel de instrucțiune; să observăm că toate procesoarele contemporane îl exploatează prin două forme:

Astfel, în 1985 au apărut primele procesoare cu banda de asamblare, în 1990 primele procesoare de tip VLIW, iar în 1995 procesoare foarte sofisticate superscalare, care pot executa instrucțiunile în ordini foarte diferite de cea din program (out-of-order execution).

Cache-uri

Am scris în repetate rînduri despre cache-uri în PC Report (vedeți de pildă articolul din PC Report din martie 1997 și cel din noiembrie 1998). Aici vom arunca doar o privire superficială asupra lor; scopul nostru este de a înțelege de ce cache-urile joacă un rol fundamental în creșterea performanței. Figura 3 ne oferă cheia: deși atît procesoarele cît și memoriile cresc constant în viteză, creșterea procesoarelor este cu 50% mai rapidă decît a memoriilor. Ca atare există o disparitate crescîndă între nevoile de date (și instrucțiuni) ale procesorului și ceea ce memoriile pot oferi. Durata unui acces la memorie ajunge la zeci de cicli de ceas pentru procesoarele contemporane. Întîrzierea accesului este și mai exacerbată în cazul sistemelor care au mai multe procesoare, în care caz timpii de acces la date pot ajunge la mii de cicli.

Figura 3: Creșterea disparițății de viteză între memorii și procesoare. Ambele valori pleacă de la valoarea normalizată 1, dar procesoarele cresc în performanță cu 35% pe an pînă în 1987, și cu 55% pe an după aceea, în timp ce memoriile cresc cu 10% pe an.
\begin{figure}\centerline{\epsfxsize=10cm\epsffile{gap.eps}}\end{figure}

Din această cauză se construiesc cache-uri, care sunt memorii mai mici și mai rapide, care se plasează între procesor și memoria principală, și în care sunt aduse datele pentru prelucrare. Proiectanții au reușit să sporească eficacitatea cache-urilor folosind două metode:

Arhitecturile contemporane

Astfel, urmărind evoluția arhitecturilor, am ajuns pînă în ziua de azi. Vom încerca să caracterizăm sumar starea arhitecturilor, după care vom arunca o privire asupra unora din direcțiile viitoare.

Hardware și software

Istoria modernă a procesoarelor contrapune două paradigme pentru creșterea performanței, bazate pe software și respectiv pe hardware. Aparent un articol despre arhitectura procesoarelor nu are nimic de-a face cu software-ul. Nimic mai greșit: la ora aceasta există o simbioză totală între hardware și software; procesoarele se proiectează odată cu compilatoarele care le folosesc, și relația dintre ele este foarte strînsă: compilatorul trebuie să genereze cod care să exploateze caracteristicile arhitecturale, altfel codul generat va fi foarte ineficace.

Metodele de creștere a performanței cu ajutorul compilatoarelor se numesc și statice, pentru că programul este analizat și optimizat o singură dată, înainte de a fi pornit în execuție. Metodele bazate pe hardware se numesc dinamice, pentru că sunt aplicate în timp ce programul se execută.

Istoria arhitecturilor contrapune mereu cele două paradigme: de exemplu dezbaterea inițială RISC/CISC3 era de aceeași natură, ca și dezbaterea între superscalar și VLIW, pe care am menționat-o deja în acest text.

De fapt, așa cum menționam și în alte articole (de exemplu în PC Report din iunie 1999), există lucruri care se pot face numai static, și există lucruri care se pot face numai dinamic. Așa că de fapt, chiar arhitecturile care pornesc la una din extreme, tind să conveargă către folosirea unui amestec de trăsături din ambele domenii:

Cu siguranță că un model mixt este preferabil, pentru că poate lua ce e mai bun din fiecare tehnologie.

Crusoe

Se cuvine să atragem atenția asupra unei recrudescențe a ``luptei'' sistemelor pure: anul acesta compania Transmeta a anunțat apariția unui nou procesor, numit Crusoe, care exploatează la maximum tehnologiile statice (compilarea). Compania Transmeta a făcut mare vîlvă, nu atît prin procesorul lor, care poate simula alte procesoare, inclusiv cele ale firmei Intel, ci prin faptul că angajează pe cel mai faimos programator al planetei, Linus Torvalds, creatorul sistemului de operare Linux.

Transmeta a lansat Crusoe cu mare pompă în luna ianuarie; compania predică întoarcerea la simplitate (care a fost sugerată atît de curentul RISC, cît și de modelele VLIW), în care hardware-ul este simplu și rapid, iar compilatorul face greul. Echipa care a lucrat la Transmeta este compusă din mare măsură din ingineri plecați de la IBM: IBM a lucrat la o versiune de procesor PowerPC care putea face exact același lucru: putea executa în mod nativ cod x86 (adică compatibil Intel), dar proiectul lor a fost întrerupt deși era într-o stare foarte avansată, aparent din motive de marketing.

Cît de serios este acest nou competitor?

Din păcate atuurile lui Crusoe nu sunt prea clare:

Probabil că pentru a rămîne viabil Crusoe va trebui să se metamorfozeze și să devină mai complicat, folosind și o serie de mecanisme dinamice de creștere a performanței.

În definitiv există o singură resursă aproape gratuită și care este în cantități suficiente: numărul de tranzistori. Datorită miniaturizării numărul de tranzistori disponibili pentru design crește enorm; de aceea simplitatea cu orice preț (așa cum o încarnează Crusoe) nu este neapărat o calitate.

Constrîngerile fizice

Proiectanții de microprocesoare se lovesc în ziua de azi de mai multe dificultăți. Nici una dintre ele nu e insurmontabilă, dar soluțiile sunt din ce în ce mai grele. Vom arunca o privire asupra unora dintre ele; încercarea de a extrapola impactul acestor bariere în viitor va sugera apoi soluții pentru depășirea lor.

Accesul la memorie.

După cum am văzut în figura 3, în ultimii 10 ani viteza memoriilor a crescut cu 10% pe an, în timp ce viteza procesoarelor a crescut cu o rata de 60%. Toate motivele ne îndeamnă să credem că această disparitate va continua să se accentueze, și că prețul relativ al unui acces la memorie (măsurat în cicli de ceas) va continua să crească.

Putere.

Un alt factor care limitează evoluția circuitelor integrate este consumul de putere; în urmă cu 15 ani un procesor consuma 2 wați; astăzi un procesor ca Alpha 80364 consumă 100W; de aici rezultă limitări pentru ceas (puterea consumată crește cu frecvența ceasului), și necesitatea unor dispozitive speciale de răcire.

Din fericire tehnologia lucrează în direcția favorabilă: miniaturizarea duce la scăderea puterii necesare. Un alt factor care duce la scăderea puterii consumate este scăderea tensiunilor de alimentare.

Interesant este faptul că, deși dimensiunea tranzistorilor a scăzut într-una, dimensiunile circuitelor fabricate au crescut: foamea neostoită a designerilor cere suprafețe din ce în ce mai mari ale plăcuțelor de siliciu; de aceea puterea consumată a crescut și ea.

Complexitate.

Un factor deloc neglijabil este complexitatea enormă a circuitelor. Procesoarele cele mai moderne au peste 25 de milioane de tranzistoare, iar în cîțiva ani designerii vor avea la dispoziție un miliard. Astfel de circuite sunt foarte greu de verificat și testat. La ora actuală o companie ca Intel cheltuiește 40% din budget pentru proiectare și dezvoltare, și 60% pentru verificare 'si testare!

O altă problemă importantă este legată de liniile tehnologice de fabricație: o astfel de instalație costă la ora actuală două miliarde de dolari. Puține companii își pot permite investiții de asemenea anvergură pentru o tehnologie care se schimbă în 3 ani!

Sîrmele.

E clar că miniaturizarea nu va putea continua în același ritm exponențial: peste ceva vreme am ajunge la necesitatea de a face un tranzistor mai mic decît un atom, ceea ce e evident imposibil. Dar chiar înainte de a atinge un astfel de prag, vom avea alte probleme de înfruntat.

O analiză extrem de interesantă a fost făcută de Mark Horowitz, profesor la universitatea Stanford, într-un articol intitulat ``Viitorul sîrmelor''. Articolul pornește de la caracteristicile electrice ale semiconductorilor, și analizează o serie de scenarii posibile pentru tehnologiile de fabricație. Textul ia în considerare tot felul de factori, cum ar fi geometria sîrmelor, capacități și rezistențe, disiparea puterii, etc. Vom ignora toate aceste detalii, însă vom privi una din concluziile la care autorul ajunge.

Autorul observă că în general sîrmele vor evolua în sensul dorit: vor deveni mai scurte, iar viteza de transmisiune a informației nu va încetini relativ la dimensiunea circuitului. Deci dacă am lua un microprocesor de astăzi și l-am reduce la scară, sîrmele nu ar constitui un impediment în funcționarea sa corectă.

Problema apare însă din faptul că de fapt suprafața circuitelor nu scade, din cauză ca designerii adaugă noi module. O mare problemă sunt sîrmele care traversează mai multe module. Lungimea acestora rămîne practic constantă, în milimetri. Ori, cum viteza ceasului crește mereu, asta înseamnă că semnalele electrice nu mai au timp să parcurgă sîrmele de la un capăt la altul. La 1Ghz lumina în vid străbate 3*108 * 10-9m = 30cm. Dar viteza luminii în solide este mai mică, iar viteza de propagare scade dramatic cu numărul numărul de ``consumatori'' ai sîrmei (adică o sîrmă conectată la 3 circuite e mult mai lentă decît una cuplată la doar două). De asemenea, liniile lungi de transmisiune vor avea nevoie de amplificatoare, care încetinesc substanțial semnalul.

Asta înseamnă că circuitele viitorului nu vor mai putea comunica prin semnale globale: pur și simplu va fi imposibil pentru o sîrmă să unească diferitele părți ale circuitului. Aceasta este o consecință de cea mai mare importanță pentru arhitecturile viitoare!

Zgomotul

În fine, pe măsură ce tranzistorii sunt mai mici, sîrmele sunt mai subțiri și consumul de putere este mai mare circuitele sunt mai sensibile la zgomot, fie el termic, din mediu (ex. radiații cosmice) sau, în curînd, chiar efecte cuantice! Fenomenele de transport din semiconductori pe care se bazează tranzistorul sunt fenomene statistice: ori cînd dimensiunile devin atît de mici încît numai cîțiva electroni produc semnalele, statistica nu mai operează, și excepțiile încep să apară.

Viitorul

În această ultimă secțiune vom încerca să discernem ce ne oferă viitorul. Marile companii lucrează simultan la mai multe generații ale unui procesor, cu echipe independente, ca atare ceva din ceea ce viitorul ne rezervă poate fi observat în produsele comerciale în curs de proiectare, în măsura în care companiile dezvăluie astfel de informații.

Generația următoare

Cercetarea în arhitectura procesoarelor este efervescentă, atît în industrie cît și în universități; este absolut imposibil de urmărit întregul peisaj. Iată însă unele dintre direcții:

Evoluție incrementală

Un efort substanțial este în continuare depus în a perfecționa tehnicile care în ultimii 15 ani au servit atît de bine arhitectura, pe care le-am descris mai sus: exploatarea paralelismului la nivel de instrucțiune și ierarhiile de memorie.

Iată unele dintre tendințe:

Multi-procesoare

Așa cum am văzut, proiectanții tind să înghesuie din ce în ce mai multe circuite pe aceeași pilulă de siliciu. O evoluție naturală este de a face saltul de la mai multe procesoare legate printr-o magistrală comună (ca în cazul sistemelor cu multiprocesoare simetrice, pe care le-am descris în PC Report din noiembrie 1998) în procesoare strîns cuplate, pe aceeași pilulă de siliciu.

De fapt astfel de scheme există deja: procesorul pentru mainframes de la IBM S/390 are două nuclee identice, care execută sincron același program: în cazul în care rezultatele nu sunt identice se execută o excepție și programul este reluat. Acesta este un exemplu în care mai multe resurse sunt folosite pentru o fiabilitate sporită, dar IBM a anunțat că viitorul lor procesor G5 va conține două nuclee independente pe aceeași pilulă, permițînd realizarea unor sisteme multi-procesor cu un singur cip.

Multithreading

O evoluție naturală ar fi la a exploata alte forme de paralelism decît cel la nivel de instrucțiune (ILP). Calculatoarele moderne exploatează excelent paralelismul la nivel de proces, dar există forme intermediare, și trebuie să ne așteptăm să vedem arhitecturi din ce în ce mai orientate spre acestea:

Există o sumă de inovații arhitecturale legate de aceste tehnologii, încă ne-integrate în produse comerciale. Să privim cîteva dintre ele:

Figura 4: Multithreading clasic și multithreading simultan. Fiecare culoare simbolizează o instrucțiune dintr-un thread diferit; alb înseamnă ``nici o instrucțiune''. Schemele clasice de multithreading comută între execuția a două thread-uri numai arar. În multithreading simultan comutarea este ajutată substanțial de hardware, și se poate face chiar la fiecare ciclu de ceas (centru), sau chiar instrucțiuni din thread-uri diferite se pot executa simultan (dreapta).
\begin{figure}\centerline{\epsfxsize=12cm\epsffile{smt.eps}}\end{figure}

Avantajul unor astfel de scheme este că, dacă un thread execută care au nevoie de mult timp (de exemplu accese la memorie), putem alte thread-uri care sunt gata de execuție, folosind mai eficient unitățile funcționale ale procesorului.

Dincolo de legea lui Moore

În fine, voi încheia acest articol cu o privire extrem de sumară asupra unor proiecte de cercetare ambițioase, care încearcă să privească nu numai în viitorul imediat, ci să anticipeze peisajul calculatoarelor peste zece ani și mai mult. La acea dată barierele impuse de fizică vor fi atinse, așa că trebuie să ne așteptăm la o încetinire a vertiginoasei creșteri de performanță. Dar chiar și așa, numărul uriaș de resurse puse la dispoziție trebuie să fie folosit cumva; iată unele posibilități:

IRAM, Smart Memory

Proiectul IRAM (Intelligent RAM) de la Berkeley este condus de David Patterson (http://iram.cs.berkeley.edu/), și își propune integrarea tehnologiilor de fabricație a memoriilor și procesoarelor (la ora actuală liniile de fabricație sunt complet diferite). IRAM încearcă să evite disparitatea de acces la memorii împingînd o multitudine de procesoare micuțe printre celulele de memorie, unde pot lucra independent.

Un proiect foarte asemănător este cel de la Stanford, al profesorului Mark Horowitz, numit Smart Memories (http://velox.stanford.edu/smart_memories/).

Aceste proiecte încearcă să depășească problema accesului lent la memorie prin distribuirea unităților de procesare printre memorii, astfel încît accesul să fie paralel și rapid. O astfel de schemă, în care calculul este distribuit în multe unități independente, face ca impactul ``sîrmelor lungi'' să fie redus.

RAW

Proiectul RAW de la MIT (http://www.cag.lcs.mit.edu/raw/) atacă problema dintr-un cu totul alt punct de vedere: mașina RAW constă din foarte multe procesoare relativ simple construite pe aceeași pilulă de siliciu. Aceste procesoare cooperează pentru a executa o singură aplicație, care este paralelizată automat de compilator.

Figura 5: Schema mașinii RAW de la MIT: foarte multe procesoare simple pe aceeași pastilă de siliciu, legate printr-o rețea de interconectare rapidă comutată, aflată sub controlul software-ului. Comunicația este planificată cît mai ades posibil de compilator.
\begin{figure}\centerline{\epsfxsize=12cm\epsffile{raw.eps}}\end{figure}

Imagine

Un proiect foarte interesant este Imagine (http://cva.stanford.edu/imagine/cva_imagine.html), la universitatea Stanford este orientat mai curînd pe procesarea de semnal; conducătorul este William Dally. Proiectul acesta propune un nou model de programare, orientat spre multimedia, în care paralelismul datelor este făcut explicit prin noțiunea de flux (stream). De exemplu, pentru a afișa scene complicate pe ecran, prelucrarea transformă datele dintr-un flux de obiecte într-un flux de poligoane, care devin un flux de triunghiuri, apoi un flux de pixeli, etc.

PipeRench și Brass

În fine, menționez două proiecte care încearcă să îmbine hardware-ul reconfigurabil cu procesoarele tradiționale: proiectul Brass de la Berkeley (http://http.cs.berkeley.edu/projects/brass/), condus de John Wawrzynek, și proiectul PipeRench de la Carnegie Mellon, condus de Seth Goldstein și Herman Schmit (http://www.ece.cmu.edu/research/piperench/).

Figura 6: Hardware-ul reconfigurabil constă din porți universale, care pot implementa orice funcție, care sunt legate între ele prin sîrme cuplate prin comutatoare. Figura din dreapta arată un detaliu de implementare despre figura din stînga.
\begin{figure}\centerline{\epsfxsize=13cm\epsffile{reconfigurabil.eps}}\end{figure}

Am vorbit altă dată pe larg despre hardware-ul reconfigurabil (figura 6) (PC Report din iulie 1998). Fiecare poartă universală poate fi programată să execute orice funcție logică, iar comutatoarele pot cupla și decupla sîrmele. Porțile universale se pot implementa din mici celule RAM. Astfel se pot sintetiza unități funcționale extrem de complexe, care pot opera uneori mult mai eficient decît un procesor de uz general.

Concluzii

Am văzut în acest articol că performanța microprocesoarelor s-a situat pe o curbă exponențială în toți cei treizeci de ani de la crearea lor. Am văzut că miniaturizarea și tehnici de design contribuie în mod egal la aceste spectaculoase creșteri. De asemenea, am văzut că creșterea aceasta se apropie de sfîrșit, datorită unor bariere fizice fundamentale. În fine, am încercat să profețim unele din tehnologiile care-și vor face apariția în generațiile următoare de procesoare.



Note

... rapid1
Majoritatea covîrșitoare a procesoarelor contemporane funcționează în mod sincron: întreaga lor funcționare este orchestrată de un tact de ceas, care garantează că feluritele părți sunt sincronizate. Din ce în ce mai mult însă se tinde spre scheme cu multiple semnale de ceas, sau chiar scheme asincrone. Nu ne vom ocupa însă de aceste evoluții în textul acestui articol.
... a2
Compaq a anunțat procesoare Alpha 20364 la 1Ghz din 1999, iar AMD a demonstrat deja un procesor K7 fără răcire specială la 1.1Ghz.
... RISC/CISC3
În anii '80 a apărut ideea de a face procesoarele mult mai simple pentru a le permite să meargă mai repede. Astfel de arhitecturi au fost numite RISC: Reduced Instruction Set Computer, prin contrast cu celelalte, Complex ISC.