Sunteți pe pagina 1din 14

Evolutia procesoarelor

Perioada 1993-1998 a fost foarte zbuciumata, marcata de o lupta foarte dura pe piata microprocesoarelor, in care Intel a inceput sa simta din ce in ce mai mult prezenta competitiei formate din AMD, Cyrix sau NexGen. Tot in aceasta perioada s-a lansat si standardul MMX care mai este folosit si in prezent.

Era Pentium (1993-1998)


Intel Pentium (22 martie 1993) Intel Pentium a fost primul procesor superscalar de la Intel (putea executa pana la doua instructiuni simultan). Multi s-au intrebat de ce Intel nu a denumit acest procesor 80586. Motivul a fost ca numele format numai din cifre nu putea fi protejat de copyright, asa ca Intel s-a vazut nevoit sa foloseasca si litere pentru a-si diferentia produsele de cele ale concurentei. Procesorul lucra cu o magistrala de date de 64 de biti (cu toate ca a fost un procesor pe 32 de biti) si a fost lansat initial la viteze de 60 si 66 de MHz. Au urmat insa foarte rapid versiuni de 75, 90, 100, 120, 133, 150, 166, 200, 233 MHZ. De fapt au existat trei versiuni de Pentium: prima versiune care nu cuprindea decat doua modele: Pentium la 60 si la 66MHz, a doua versiune care a adaugat instructiunile MMX si o ultima versiune care a micsorat distanta dintre tranzistoare permitand astfel viteze mai mari care au ajuns pana la 233MHz. Intel Pentium a fost primul microprocesor pentru PC-uri care putea sa calculeze mai mult de 100MIPS (milioane de instructiuni pe secunda). Tot pentru prima oara era posibila construirea unor sisteme care sa lucreze cu 2 procesoare in paralel (sisteme multiprocesor). Microprocesorul de la Intel venea cu 16Kb de cache incorporati in pastila de siliciu. AMD K5 / Nexgen Nx586 (1995) AMD a reactionat destul de tarziu in a lansa un procesor comparabil ca viteza cu Intel Pentium. In 1995 a produs totusi primul sau procesor care era conceput integral de catre ei, nemaifiind o simpla clona a procesoarelor Intel. Acest procesor s-a numit K5 si avea viteze de la 75 la 166MHz. Cu toate acestea nu era un procesor mai rapid decat cele de la Intel, in plus avand o unitate de calcul in virgula mobila destul de slaba (ca si Cyrix de altfel). Una din inovatiile aduse de K5 era faptul ca instructiunile x86 erau transformate intern in ROP (Risc OPerations). Aceste operatii RISC se puteau executa in nucleul RISC al procesorului care era mult mai rapud. In acelasi timp o companie de care putina lume auzise pana atunci, Nexgen, lansa primul sau procesor: Nx586. Complexitatea procesorului K5 a dus la frecvente destul de mici, ceea ce i-a facut pe cei de la AMD sa cumpere compania Nexgen care tocmai terminase design-ul noului lor procesor, NX686. Acest design a fost ulterior folosit de AMD in urmatoarea sa familie de procesoare pe care avea sa o lanseze in 1997. Cyrix 6x86 (Octombrie 1995) 6x86 a fost replica lui Cyrix la procesorul Pentium al lui Intel. Acest chip era produs initial de catre IBM dat fiind ca Cyrix nu avea unitati de asamblare de procesoare, insa ulterior, odata cu achizitionarea Cyrix de catre National Semiconductor a fost produs chiar de catre acestia. Procesorul a avut un succes destul de mare dat fiind ca era mai rapid decat un Intel Pentium la aceeasi frecventa. De altfel pentru a-l putea compara cu procesoarele de la Intel, cei de la Cyrix au inventat ceea ce s-a numit ulterior P-Rating. De exemplu procesorul Cyrix 6x86 care functiona la 150 de MHz a fost denumit 6x86PR200, ceea ce insemna ca era comparabil ca viteza cu un Pentium la 200. Unul din marile dezavantaje ale acestui procesor a fost insa viteza foarte mica a calculelor in virgula mobila. Cu toate acestea in aplicatiile de tip office s-a dovedit cel putin la fel de rapid ca si un Pentium. Intel Pentium Pro (1 noiembrie 1995) Acest procesor a fost una dintre cele mai mari inovatii tehnice produse de Intel pana acum. Procesorul ingloba pentru prima oara in istorie pe langa cache-ul Level1 de 8k pentru date si 8k pentru instructiuni, si un cache Level2 de 256Kb sau 512Kb. Folosea un sistem complex de predictie a ramurii de executie (branch prediction) si executie speculativa (speculative execution) - in momentul in care executia programului ajungea la o bifurcatie ramura corecta nu era stiuta pana in momentul in care se executa instructiunea conditionala; pentru ca procesorul sa nu astepte pana in acea clipa, se alegea una din cele doua ramuri si se incepea executia instructiunilor respective; daca se dovedea ca ramura aleasa a fost cea corecta aceasta insemna un castig important de viteza. Acest microprocesor transforma instructiunile x86 in microoperatii care erau mult mai mici si mai rapide. Acest lucru, cu toate ca avea ca rezultat o viteza mult mai mare a instructiunilor de 32 de biti, a dus la performante mult mai slabe in sistemele de operare care mai contineau cod pe 16 biti. Acesta a fost unul din motivele performantei mai mici comparabil cu Intel Pentium in Windows 95 de exemplu.

Intel Pentium MMX (Ianuarie 1997) MMX s-a crezut initial ca inseamna MultiMedia eXtension, dar Intel a declarat ca inseamna Matrix Math eXtension. Acesta reprezinta un standard introdus de Intel care aduce cateva noi instructiuni care usurau in principal calculele matematice cu vectori. AMD K6 (Aprilie 1997) Ca urmare a cumpararii firmei Nexgen, AMD a reusit sa lanseze un nou procesor, K6 care avea viteze de la 166 la 266MHz. Bineinteles ca politica AMD a fost ca procesoarele sale sa se vanda la aproape jumatate din pretul la care se vindeau procesoarele Intel. K6 incorpora instructiuni MMX (a caror licenta a cumparat-o de la Intel) devenind astfel un rival de temut pentru procesoarele Intel Pentium MMX. Cyrix 6x86MX (30 Mai 1997) 6x86MX a adus nou extensiile MMX precum si viteze de ceas mai mari decat precedentele chip-uri de la Cyrix. Astfel cel mai performant model era 6x86MX PR266 care rula la 233MHz. De asemenea, marimea memoriei cache Level2 s-a marit de patru ori fata de 6x86, ajungand la 64Kb. Cyrix MII (14 Aprilie 1998) Aceasta versiune a chip-ului 6x86 a imbunatatit putin performanta FPU si a atins viteze mai mari ajungand la 300MHz (PR433). De asemenea viteza bus-ului a ajuns la 100MHz. Cyrix MediaGX (1998) MediaGX a reprezentat incercarea lui Cyrix de a produce un chip care sa integreze atat functiile de sunet si video, cat si controller-ul de memorie si CPU-ul in sine. Scopul acestui chip a fost acela de a putea produce computere foarte ieftine si la vremea aceea deja se vorbea de calculatoare sub 500$ (ceea ce era foarte putin la acea data) construite in jurul lui MediaGX. Cu toate acestea, nici unul din marii producatori de computere nu a adoptat aceasta solutie, astfel incat procesorul acesta, desi revolutionar, nu a avut deloc succesul scontat.

Procesoarele Cyrix
Arhitectura x86
Corpora ia Cyrix este unul dintre furnizorii de baz ai solu iilor bazate pe microprocesoare, care a introdus noi standarde pe pia a calculatoarelor personale. n ultimii zece ani Cyrix a dezvoltat aproape o duzin de procesoare originale folosite n milioane de calculatoare din ntreaga lume. n luna noiembrie a anului 1997, Cyrix a fost cump rat de National Semiconductor. Aceast fuziune a adus dou componente importante pentru Cyrix: capacitatea de produc ie la nivel mondial a National Semiconductor i infrastructura necesar acestei produc ii. Primul produs Cyrix a fost un coprocesor matematic destinat cre terii vitezei de realizare a calculelor matematice. Succesul acestui coprocesor matematic a permis celor de la Cyrix s distribuie ncepnd cu 1992, primul procesor din familia x86. Compania a dezvoltat rapid o linie de produc ie pentru procesoarele 486, i apoi pentru procesoarele din genera ia a cincea 5x86, un CPU pentru sistemele PC (mobile i desktop). n 1995, Cyrix a introdus procesorul din genera ia a asea, 6x86, un procesor superscalar, bazat pe o superband de asamblare; n iunie 1997, a introdus procesorul MMX 6x86MX, iar n 1998 a ap rut procesorul MII. Procesorul Cyrix 5x86 Familia de procesoare 5x86 reprezint o nou genera ie pe 64 de bi i compatibil x86. Unitatea central se bazeaz pe o band de asamblare cu ase nivele, putnd executa o instruc iune ntr-un impuls de tact. Unitatea central 5x86 este divizat n urm toarele blocuri func ionale (Fig. 1): -unitatea pentru numere ntregi (Integer Unit - IU), -unitatea n virgul flotant (Floating Point Unit - FPU) , -unitatea cache (Write-Back Cache) , unitatea pentru gestiunea memoriei (Memory Management Unit - MMU) , -unitatea de interfa cu magistrala (Bus Interface Unit - BIU). Unitatea pentru numere ntregi con ine: -tamponul pentru instruc iuni (Instruction Buffer - IB) , -unitatea de aducere a instruc iunii (Instruction Fetch Unit - IF) , -unitatea de decodificare a instruc iunii (Instruction Decoder Unit - ID). Instruc iunile sunt executate n unitatea pentru numere ntregi sau n unitatea de calcul n virgul flotant . Cache-ul con ine cele mai recent utilizate date i instruc iuni i asigur accesul rapid la aceste date din partea IU i FPU. Cnd apare o cerere de acces la o loca ie din memoria extern , MMU calculeaz adresa fizic pe care o trimite unita ii de interfa cu magistrala, care asigur interfa area unita ii centrale cu memoria extern i celelalte circuite de pe placa de baz . Unitatea pentru numere ntregi Aceast unitate cite te, decodific i execut intruc iunile ntr-o band de asamblare cu ase nivele (Fig. 2): -nivelul de aducere al codului instruc iunii (Instruc ion Fetch - IF) - cite te din cache codul instruc iunii urm toare i l trimite spre decodificare nivelului urm tor din banda de asamblare. Se pot citi pn la 128 de octe i ntr-un impuls de tact, -nivelul de decodificare a instruc iunii (Instruction Decode - ID) - evalueaz irul de octe i primit de la nivelul IF, determinnd num rul de octe i pentru fiecare instruc iune i tipul acesteia, pe care apoi le decodific la viteza de o instruc iune ntr-un impuls de tact, -primul nivel de caclul al adresei (Address Calculation 1 - AC1) dac instruc iunea are un operand n memorie, acest nivel calculeaz adresa de memorie liniar pentru instruc iune, al doilea nivel de caclul al adresei (Address Calculation 2 - AC2) - realizeaz toate func iile de gestionare a memoriei, accesarea cache-ului i a registrelor. Dac detecteaz o instruc iune n virgul flotant , aceasta este trimis pentru execu ie unit ii n virgul flotant , -nivelul de execu ie (Execution - EX) - execut instruc iunea folosind operanzii furniza i de nivelele pentru calculul adresei, -nivelul write-back (WB) - ultimul nivel din IU, actualizeaz setul de registre sau trimite rezultatul unit ii de interfa cu memoria (Load/Store Unit) din MMU. Unitatea cache Procesorul Cyrix 5x86 con ine un cache unificat pentru date i instruc iuni de 16Ko, set-asociativ pe patru c i, organizat pe 1024 de linii. Scrierile n cache se fac prin metoda write-back. Memoria cache este organizat n patru bancuri a cte 256 linii fiecare, cu 16 octe i pe linie. Fiecare linie cache are asociat cte un tag pe 21 de bi i i un bit de valid (arat dac linia con ine informa ii valide sau nu). Pe lng ace ti bi i, fiecare linie mai con ine nc patru bi i care indic dac con inutul liniei a fost modificat (dirty bits), cte unul pentru fiecare dublu-cuvnt din linie. Ace ti ultimi patru bi i permit marcarea independent a fiec rui dublu-cuvnt ca fiind modificat, n loc de a marca ntreaga linie ca fiind modificat . Unitatea de gestionare a memoriei MMU translateaz adresele liniare furnizate de IU n adrese fizice, pentru a putea fi folosite de unitatea cache i unitatea de interfa cu magistrala. Mecanismul de paginare este cel standard x86. Unitatea pentru gestionarea memoriei mai con ine un bloc (Load/Store Unit) care planific accesele la memoria cache i memoria extern i implementeaz urm toarele concepte: -reordonarea citirilor i scrierilor - confer o

prioritate mai mare citirilor din memorie fa de scrierile n memorie, -evitarea citirilor din memorie - elimin citirile inutile din memorie prin folosirea datelor existente deja n unitatea central (n cazul dependen elor de tipul citire dup scriere). Controlul ramifica iilor, prezicerea ramifica iilor, dependen ele ntre date, unitatea n virgul flotant , unitatea de interfa cu magistrala vor fi prezentate la procesorul 6x86. Procesorul Cyrix 6x86 Procesorul Cyrix 6x86 este cel mai performant dintre procesoarele de genera ia a asea compatibile x86. mbun t irea performan elor este realizat prin utilizarea unei arhitecturi superscalare, bazate pe o superband de asamblare. Cyrix 6x86 este un procesor superscalar, deoarece con ine dou benzi de asamblare separate ce permit procesarea mai multor instruc iuni n acela i timp. Folosirea unei tehnologii de procesare avansate i cre terea num rului de nivele n benzile de asamblare (superpipelining) permit procesorului 6x86 s ating frecven e de lucru mai mari de 100MHz. Prin folosirea caracteristicilor arhitecturale unice, procesorul 6x86 elimin multe dintre dependen ele ntre date i conflictele la accesarea resurselor, rezultnd o performan optim att pentru programele pe 16 bi i ct i pentru cele pe 32 de bi i. Procesorul Cyrix 6x86 con ine dou cache-uri: -un cache unificat (pentru date i pentru instruc iuni) de 16Ko dual port, i -un cache de instruc iuni de 256 octe i. Deoarece cache-ul unificat poate con ine instruc iuni i date n orice raport, acesta ofer o rat a hit-urilor (num rul de accese n cache, raportat la num rul total de accese) mai mare comparativ cu dou cache-uri separate pentru date i pentru instruc iuni, avnd dimensiuni egale. O cre tere a l imii de band a transferurilor cache-unitatea ntreag este realizat prin suplimentarea cache-ului unificat cu un mic cache de instruc iuni foarte rapid, complet asociativ. Prin includerea acestui cache de instruc iuni, se evit conflictele excesive ntre accesele pentru date i pentru cod n cache-ul unificat. Unitatea n virgul flotant din procesor permite executarea instruc iunilor n virgul flotant n paralel cu instruc iunile ntregi. Aceasta con ine o coad de instruc iuni pe patru nivele i o coad pentru datele scrise tot pe patru nivele, pentru a facilita execu ia paralel . Procesorul 6x86 este alimentat la 3.3V ducnd la un consum redus pentru toate frecven ele de lucru. n plus, 6x86 mai posed un mod de suspendare pe nivel sc zut, posibilitatea de a ntrerupe tactul i modul de management al sistemului (SMM) pentru aplica iile sensibile la alimentare. Principalele blocuri fun ionale Procesorul Cyrix 6x86 con ine cinci mari blocuri func ionale (Fig. 3): -Unitatea ntreag (Integer Unit - IU) , Unitatea cache (Cache Unit) , -Unitatea de gestionare a memoriei (Memory Management Unit - MMU) , -Unitatea n virgul flotant (Floating Point Unit - FPU) , -Unitatea de interfa cu magistrala (Bus Interface Unit - BIU). Instruc iunile sunt executate n cele dou benzi de asamblare ntregi (X i Y) i n unitatea n virgul flotant . Cacheul con ine cele mai recent utilizate date i instruc iuni pentru a permite accese rapide la informa ii din partea IU i FPU. Adresele fizice sunt calculate de MMU i sunt trimise unita ii cache i unit ii de interfa cu magistrala. BIU ofer o interfa ntre placa sistem extern i unita ile interne ale procesorului. Unitatea ntreag Unitatea de calcul cu numere ntregi ofer o execu ie paralel a instruc iunilor n dou benzi de asamblare pentru numere ntregi cu apte nivele (Fig. 4). Fiecare din cele dou benzi de asamblare (X i Y) poate procesa simultan cteva instruc iuni. Benzile de asamblare ntregi con in urm toarele nivele de prelucrare: -aducerea codului instruc iunii (Instruction Fetch IF) , -primul decodificator pentru instruc iuni (Instruction Decode 1 ID1) , -al doilea decodificator pentru instruc iuni (Instruction Decode 2 ID2) , -primul bloc de calculare a adresei (Address Calculation 1 AC1) , -al doilea bloc de calculare a adresei (Address Calculation 2 AC2) , -execu ie (Execute EX) , -writeback (WB) (Fig. 4). Nivelul de aducere al codului instruc iunii (IF) este mp r it de cele dou benzi de asamblare, aduce cte 16 octe i de cod din unitatea cache ntr-un singur ciclu de tact. n acest nivel se caut orice instruc iune de salt ce poate apare n fluxul de cod i poate afecta secven ierea normal a programului. Dac este detectat o instruc iune de salt necondi ionat sau una de salt condi ionat, logica de prezicere a salturilor din acest nivel genereaz o posibil adres destina ie pentru instruc iunea de salt. Apoi IF aduce codul instruc iunilor ncepnd cu aceast adres . Func ia de decodificare a codului instruc iunii este realizat de nivelele ID1 i ID2. Nivelul ID1, folosit de ambele benzi de asamblare, evalueaz irul de octe i de cod transmis de nivelul IF i determin num rul de octe i pentru fiecare instruc iune. Acest nivel poate trimite cel mult dou instruc iuni ntr-un impuls de tact nivelului ID2, cte una pentru fiecare band de asamblare.

Cele dou nivele ID2 decodific instruc iunile i le trimite uneia din cele dou benzi de asamblare X sau Y spre execu ie. Banda de asamblare este aleas bazat pe tipul instruc iunilor aflate deja n fiecare band i ct de repede se presupune c se vor termina. Func ia de calculare a adreselor este realizat tot n dou nivele: AC1 i AC2. Dac instruc iunea are o referin la un operand n memorie, AC1 calculeaz o adres de memorie liniar pentru instruc iune. Nivelul AC2 realizeaz toate func iile de gestiunea memoriei cerute, accesele la cache i accesele la setul de registre. Dac AC2 detecteaz o instruc iune n virgul flotant , aceasta este trimis spre prelucrare unit ii FPU. n nivelul de execu ie (EX), se execut instruc iunile folosind operanzii primi i din nivelul AC2. Nivelul writeback (WB) este ultimul din unitatea de lucru cu numere ntregi. n acest nivel sunt stocate rezultatele execu iei sau n registre sau n tamponul de scriere din unitatea cache. Procesarea n inordine Dac o instruc iune este executat mai repede dect instruc iunea precedent din cealalt band de asamblare, instruc iunile sunt completate n inordine. Toate instruc iunile sunt prelucrate n ordine pn la nivelul EX. n timp ce n nivelele EX i WB instruc iunile pot fi executate n inordine. Dac exist dependen e de date ntre cele dou instruc iuni, este necesar interven ia unui bloc care s asigure execu ia corect a programului. Astfel, chiar dac instruc iunile sunt executate n inordine, excep iile i scrierile din cadrul instruc iunilor sunt ntotdeauna efectuate n ordinea cerut de program. Selectarea benzii de execu ie n majoritatea cazurilor, instruc iunile sunt prelucrate n oricare din cele dou benzi de asamblare i nu exist constrngeri cu privire la tipul instruc iunilor executabile n paralel n cele dou benzi de asamblare. ns , unele instruc iuni pot fi prelucrate doar de banda de asamblare X: -instruc iunile de salt, -instruc iunile n virgul flotant , -instruc iunile exclusive. Instruc iunile de salt i cele n virgul flotant pot fi executate n paralel cu o alt instruc iune ce poate fi executat n banda Y. Instruc iunile exclusive nu pot fi executate n paralel cu nici o alt instruc iune. Aceste instruc iuni necesit accese multiple la memorie. Chiar dac aceste instruc iuni sunt executate exclusiv, este folosit hardware-ul din cele dou benzi de asamblare pentru a se accelera completarea instruc iunii. n continuare sunt n irate tipurile de instruc iuni exclusive ale procesorului 6x86: -nc rcarea segmentelor n modul protejat, -accesele la registrele speciale (registrele de control, debug i test) , -instruc iunile pe iruri, -nmul irea i mp r irea, -accesele la porturile I/O, -PUSHA i POPA, -salturile intersegment, apelurile de proceduri i ie irea din proceduri intersegment. Solu ionarea dependen elor de date Cnd dou instruc iuni care sunt executate n paralel acceseaz aceea i dat sau acela i registru, poate apare una din urm toarele tipuri de dependen e de date: -citire dup scriere (Read-After-Write - RAW) , -scriere dup citire (Write-After-Read - WAR) , -scriere dup scriere (Write-After-Write - WAW). Dependen ele ntre date n mod normal necesit serializarea execu iei instruc iunilor implicate. ns , 6x86 implementeaz urm toarele trei mecanisme ce permit execu ia paralel a instruc iunilor ce con in dependen e ntre date: -redenumirea registrelor (Register Renaming) , -naintarea datelor (Data Forwarding) , -evitarea datelor (Data Bypassing). n continuare, se vor descrie pe scurt aceste meacnisme. Redenumirea registrelor Procesorul Cyrix 6x86 con ine 32 registre fizice de uz general. Fiecare din cele 32 de registre din fi ierul de registre poate fi desemnat a fi unul din registrele de uz general din arhitectura x86 (EAX, EBX, ECX, EDX, ESI, EDI, EBP i ESP). Pentru fiecare opera ie de scriere ntr-un registru este selectat un nou registru fizic, pentru a se re ine temporar i data precedent . Redenumirea registrelor elimin efectiv toate dependin ele WAW i WAR. Pentru programator este transparent acest mod de redenumire a registrelor; este transparent att pentru sistemul de operare, ct i pentru programele aplica ie. Exemplul 1. Redenumirea registrelor elimin dependen ele de tipul scriere dup citire (WAR). O dependen de tip WAR apare atunci cnd prima dintr-o pereche de instruc iuni cite te un registru logic i a doua instruc iune scrie n acela i registru. Acest tip de dependen este ilustrat de perechea de instruc iuni de mai jos: banda X banda Y (1) MOV BX, AX (2) ADD AX, CX (BX <- AX) (AX <- AX + CX) (Ordinea ini ial din program a instruc iunilor este ar tat de numerele din paranteze.) n absen a redenumirii registrelor, instruc iunea ADD din banda de asamblare Y ar trebui s a tepte pn cnd instruc iunea MOV din banda de asamblare X ar citi registrul AX. ns , procesorul 6x86 evit blocarea benzii de asamblare ntr-o astfel de situa ie. Pe m sur ce este executat fiecare instruc iune, rezultatele sunt plasate ntr-un nou registru fizic, pentru a evita posibilitatea suprascrierii unei valori a unui registru logic i pentru a permite execu ia n paralel a dou instruc iuni f r blocare (f r a fi necesar nici o secven iere la accesarea aceleia i resurse) (Tab.1).

Exemplul 2. Redenumirea registrelor elimin dependen ele de tipul scriere dup scriere (WAW) O dependen WAW apare cnd dou instruc iuni consecutive realizeaz scrierea n acela i registru logic. Acest tip de dependen este ilustrat de: banda X banda Y (1) ADD AX, BX (2) MOV AX, [mem] (AX <- AX + BX) (AX <- [mem]) F r denumirea registrelor instruc iunea MOV din banda de asamblare Y ar trebui s fie ntrerupt pentru a garanta c instruc iunea ADD din banda X i-a depus rezultatul n AX (Tab.2). naintarea datelor (Data Forwarding) Doar redenumirea registrelor, nu poate elimina dependen ele de tipul citire dup scriere (RAW). 6x86 folose te dou tipuri de data forwarding mpreun cu redenumirea registrelor pentru a elimina acest tip de dependen e: -naintarea operandului (operand forwarding), - apare cnd prima dintr-o pereche de instruc iuni efectueaz o citire din registru sau memorie iar aceast dat este necesar celei de-a doua instruc iuni. CPU execut opera ia de citire i furnizeaz data citit ambelor instruc iuni; -naintarea rezultatului (result forwarding) - apare atunci cnd prima dintr-o pereche de instruc iuni execut o opera ie (cum ar fi ADD) iar rezultatul ei este citit de o a doua instruc iune. CPU-ul execut opera ia primei instruc iuni i depune rezultatul opera iei n destina iile ambelor instruc iuni simultan. Exemplul 3. naintarea operandului elimin dependen a de tipul RAW O dependen de tipul RAW apare cnd prima dintr-o pereche de instruc iuni realizeaz o scriere iar a doua instruc iune cite te acela i registru. banda X banda Y (1) MOV AX, [mem] (2) ADD BX, AX (AX <- [mem]) (BX <- AX + BX) naintarea operandului poate apare doar dac prima instruc iune nu modific valoarea ini ial a datei (Tab. 3). Exemplul 4. naintarea rezultatului elimin dependen a de tipul RAW O dependen de tipul RAW apare cnd prima dintr-o pereche de instruc iuni realizeaz o scriere iar a doua instruc iune cite te acela i registru. banda X banda Y (1) ADD AX, BX (2) MOV [mem], AX (AX <- AX + BX) ([mem] <- AX) A doua instruc iune trebuie s fie o instruc iune de transfer iar destina ia ei poate fi sau un registru sau o loca ie de memorie (Tab. 4). Evitarea datelor (Data Bypassing) Pe lng redenumirea registrelor i naintarea datelor, 6x86 con ine o a treia tehnic de eliminare a dependen elor de date, denumit evitarea datelor. Aceasta reduce sc derilor n performan ale acelor dependen e de tipul RAW din memorie ce nu pot fi eliminate cu ajutorul naint rii datelor. Evitarea datelor apare cnd prima dintr-o pereche de instruc iuni scrie n memorie i urm toarea cite te aceea i dat din memorie. 6x86 re ine data din prima instruc iune i o paseaz celeilalte instruc iuni, astfel eliminndu-se un ciclu de citire din memorie. Exemplul 5. Evitarea datei n dependen a de tipul RAW n acest exemplu, dependen a de tipul RAW apare cnd prima instruc iune efectueaz o scriere n memorie iar instruc iunea urm toare cite te aceea i loca ie de memorie (Tab. 5). banda X banda Y (1) ADD [mem], AX (2) SUB BX, [mem] ([mem] <- [mem] + AX) (BX <- BX - [mem]) Controlul ramifica iilor n programe instruc iunile de salt apar n propor ie de 20-25%. Cnd fluxul de secven iere normal al programului se schimb datorit unei instruc iuni de salt, nivelele benzilor de asamblare trebuie blocate pn cnd CPU-ul calculeaz adresa, aduce i decodific noul flux de instruc iuni. Procesorul Cyrix 6x86 minimizeaz degradarea n performan i laten a introduse de instruc iunile de salt prin folosirea conceptelor de prezicere a salturilor i execu ie speculativ . Prezicerea salturilor Procesorul 6x86 folose te un tabel al adreselor destina ie (Branch Target Buffer - BTB) cu 256 de intr ri, set asociativ pe 4 c i, pentru men inerea adreselor destina ie ale instruc iunile de salt i a altor informa ii necesare prezicerii acestor salturi. n timpul aducerii codului instruc iunii sunt c utate instruc iunile de salt n fluxul de instruc iuni. Dac este descoperit o instruc iune de salt necondi ionat, CPU-ul acceseaz BTB pentru a afla adresa

destina ie a instruc iunii de salt. Dac aceast adres exist n BTB, CPU-ul ncepe s aduc instruc iunile de la noua adres . n cazul salturilor condi ionate, BTB mai men ine o serie de informa ii cu privire la istoricul efectu rii saltului respectiv (pentru a se putea lua decizia de efectuare sau nu a saltului). Dac instruc iunea de salt condi ionat este g sit n BTB, 6x86 ncepe aducerea instruc iunilor de la adresa prezis . Dac instruc iunea nu este g sit n BTB, 6x86 prezice neexecutarea saltului i aducerea instruc iunilor va continua cu adresa urm toare. Decizia de efectuare sau nu a saltului este luat pe baza unui algoritm de prezicere a salturilor. Odat ce a fost adus codul unei instruc iuni de salt condi ionat, aceasta este decodificat i distribuit spre execu ie benzii de asamblare X. Instruc iunea trece prin nivelele benzii de asamblare X i este terminat sau n nivelul EX sau n WB, n func ie de instruc iunea care a setat indicatorii de condi ii: -dac instruc iunea care a setat indicatorii de condi ii este executat n paralel cu instruc iunea de salt condi ionat, atunci aceasta este terminat n nivelul WB, -dac instruc iunea care a setat indicatorii de condi ii a fost executat naintea instruc iunii de salt, atunci aceasta se va termina n EX. Instruc iunile de salt condi ionat corect prezise se vor executa ntr-un singur impuls de tact. Dac dup terminarea execu iei instruc iunii de salt condi ionat s-a detectat o prezicere eronat a saltului, CPU-ul gole te benzile de asamblare i ncepe execu ia de la adresa corect . Procesorul 6x86 n cazul unei instruc iuni de salt condi ionat aduce n avans att instruc iunea prezis ct i cealalt , dar o trimite benzii de asamblare spre execu ie doar pe cea prezis . Astfel c , n cazul unei preziceri eronate, instruc iunea de la adresa neprezis nu va mai fi citit din cache, deoarece a fost adus deja. Dac instruc iunea de salt condi ionat a fost rezolvat n nivelul EX, atunci ntrzierea n cazul unei preziceri eronate este de patru impulsuri de tact, iar dac instruc iunea de salt a fost rezolvat doar n WB, atunci ntrzierea este de cinci impulsuri de tact. Deoarece instruc iunea de revenire dintr-o subrutin (RET) este dinamic , procesorul 6x86 men ine adresele pentru aceste instruc iuni ntr-o stiv cu opt intr ri. Adresa de revenire este introdus n stiva adreselor de revenire de c tre instruc iunea CALL, i este scoas de c tre instruc iunea RET corespunz toare. Execu ia speculativ Procesorul 6x86 are posibilitatea de a executa speculativ instruc iunile urm toare unei instruc iuni n virgul flotant sau a unei instruc iuni de salt. Execu ia speculativ permite benzilor de asamblare s execute continu instruc iuni dup un salt, f r a fi necesar blocarea benzii de asamblare pn la ob inerea rezultatului execu iei instruc iunii de salt condi ionat. Acela i mecanism este folosit pentru a se executa instruc iuni n virgul flotant n paralel cu instruc iunile de numere ntregi. Procesorul are posibilitatea de execu ie n patru nivele de specula ie. Dup generarea unei noi adrese prin mecanismul de predic ie, CPU-ul salveaz starea curent (registrele, indicatorii de condi ii, etc.), incrementeaz num r torul nivelului de specula ie i ncepe execu ia fluxului de instruc iuni prezis. Odat ce instruc iunea de salt a fost rezolvat , CPU-ul decrementeaz nivelul de specula ie. Pentru un salt corect prezis este tears starea resurselor salvate la intrarea n nivelul de specula ie curent. Pentru un salt prezis eronat, procesorul 6x86 genereaz adresa corect pentru urm toarea instruc iune i folose te valorile de stare salvate pentru a restaura starea curent , ntr-un singur impuls de tact. Pentru a se men ine compatibilitatea, nu sunt permise scrierile n memorie sau cache, pn cnd nu este rezolvat instruc iunea de salt. Execu ia speculativ continu pn cnd apare una din urm toarele condi ii: -este decodificat o nou instruc iune de salt sau de calcul n virgul flotant i nivelul de specula ie este patru (maximul) , -apare o excep ie sau o eroare, -tamponul de scriere este plin, -se ncearc modificarea unei resurse a c rei stare nu a fost salvat (registrele segment, indicatorii sistem). Cache-ul unificat de date i instruc iuni Procesorul Cyrix 6x86 con ine un cache unificat i un cache de instruc iuni (Fig. 5). Cache-ul unificat cu dimensiunea de 16Ko func ioneaz ca un cache primar (L1) de date i ca un cache secundar (L2) de instruc iuni. Configurat ca un cache set-asociativ pe patru c i, con ine pn la 16Ko de cod i date n 512 linii. Cache-ul este dual-port i permite executarea a dou din opera iile urm toare n paralel: -citirea unui cod de instruc iune, -citirea unei date (de c tre banda X, banda Y sau FPU) , -scrierea unei date (de c tre banda X, banda Y sau FPU). Acest cache folose te un algoritm de replasare pseudo-LRU (Last Recently Used) i poate fi configurat s aloce o nou linie de cache doar la un miss de citire, sau i la citire i la scriere. Cache-ul de instruc iuni de 256 octe i complet asociativ serve te drept cache de instruc iuni primar (L1). Cache-ul de instruc iuni este nc rcat din cache-ul unificat prin magistrala de date intern . Citirile codurilor de instruc iuni din unitatea pentru numere ntregi care se g sesc n cache-ul de instruc iuni nu mai acceseaz cache-ul unificat. Dac instruc iunea nu este g sit n cache-ul de instruc iuni, linia din cache-ul unificat care con ine instruc iunea respectiv , este transferat att cache-ului de instruc iuni ct i unit ii pentru numere ntregi. Acest cache folose te tot algorimtul de replasare pseudo-LRU. Pentru a se asigura operarea corect n cazul codului automodificabil, orice scriere n cache-ul unificat este verificat cu con inutul cache-ului de instruc iuni. Dac a fost modificat o loca ie care este prezent i n cache-ul de instruc iuni, atunci linia ce con ine respectiva loca ie este dezactivat .

Unitatea de gestionare a memoriei Unitatea de gestionare a memoriei (Memory Management Unit - MMU) a procesorului Cyrix 6x86, prezentat n Fig. 6, translateaz adresele liniare furnizate de IU ntr-o adres fizic , pentru a putea fi utilizat n continuare de cache i interfa a cu magistrala. MMU include dou mecanisme de paginare, un mecanism tradi ional i un mecanism specific lui 6x86 cu pagini de dimensiuni variabile (Fig. 6). Mecanismul de paginare cu dimensiunea paginilor variabil Acest mecanism de paginare permite programelor s mapeze pagini cu dimensiunea ntre 4Ko i 4Go. Folosirea paginilor de dimensiuni mari poate duce la sporirea performan ei unor anumite aplica ii. Mecanismul tradi ional de paginare Mecanismul tradi ional de paginare a fost mbun t it la 6x86 prin ad ugarea unui cache pentru tabelul directorilor (Directory Table Entry -DTE) i un TLB victim . TLB-ul principal este cu mapare direct i con ine 128 de intr ri pentru tabelul paginilor. Cache-ul DTE cu patru intr ri complet asociative con ine accesele cele mai recente la DTE. TLB-ul victim con ine liniile din TLB principal care au fost nlocuite datorit unui miss n TLB. Dac se face referirea la o pagin ce are PTE-ul n TLB-ul victim , linia aceasta este schimbat cu o linie din TLB-ul primar. Unitatea n virgul flotant Interfa a dintre unitatea n virgul flotant (FPU) a procesorului 6x86 i unitatea pentru numere ntregi este realizat printr-o magistral intern pe 64 de bi i. Setul de instruc iuni FPU al procesorului 6x86 este compatibil x87 i ader standardului IEEE-754. Procesorul Cyrix 6x86 execut instruc iunile ntregi n paralel cu instruc iunile n virgul flotant . Instruc iunile ntregi pot fi executate n inordine cu respectarea instruc iunilor FPU. A a cum s-a mai spus, instruc iunile FPU sunt ntotdeauna executate n banda de asamblare X. Nivelul pentru calculul adresei din banda X verific apari ia excep iilor de gestionare a memoriei i acceseaz operanzii din memorie folosi i de FPU. Dac nu apare nici o excep ie, se salveaz starea curent a procesorului n AC2 i trimite instruc iunea n virgul flotant spre execu ie FPU-ului. Apoi unitatea central poate executa orice instruc iune ntreag urm toare, speculativ i n inordine. Unitatea central 6x86 poate trimite pn la patru instruc iuni FPU n coada de a teptare a FPU. CPU-ul continu cu execu ia speculativ i n inordine pn cnd apare una dintre condi iile ce cauzeaz oprirea execu iei speculative. Pe m sur ce FPU termin de executat o instruc iune n virgul flotant , este decrementat nivelul speculativ i sunt terse valorile de stare salvate la nceputul acestei instruc iuni. Unitatea n virgul flotant mai con ine i un set de patru tampoane de scriere pentru a preveni ntreruperile datorate scrierilor speculative. Procesoarele Cyrix 6x86MX i MII Aceste procesoare au la baz nucleul procesorului 6x86, mbun t it cu cele 57 instruc iuni multimedia noi, compatibile cu tehnologia MMX. n plus, 6x86MX i MII lucreaz la frecven e mai mari, con in un cache de dimensiune mai mare, un tampon destinat translat rii adreselor liniare n adrese fizice (TLB) pe dou nivele i un cache destinat adreselor de salt mbun t it (Fig. 7). Pentru a oferi suportul pentru opera iile multimedia, cache-ul poate fi transformat ntr-o memorie RAM scratchpad. Aceast memorie func ioneaz ca o memorie privat pentru CPU i nu particip n opera iile cache.

Evolu ia procesoarelor
Pn unde se poate merge n direc ia miniaturiz rii i cre terii performan elor? O privire asupra dezvolt rii procesoarelor de la origini pn n prezent ne poate permite s caracteriz m arhitecturile microprocesoarelor contemporane i chiar s ncerc m s prevedem cum vor arat cele de mine. Am ntlnit 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 ct o pine. Pe de alt parte, 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 cteva 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. Sporul 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 pn n prezent. Vom ncerca apoi s caracteriz m arhitecturile procesoarelor contemporane i s extrapol m din datele la dispozi ie, speculnd 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 caseta "Performan e - estim ri" ilustreaz acest fapt, contrapunnd 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. Aspecte economice 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 microprocesor 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 strnge pe o singur pilul de siliciu toate unit ile func ionale importante necesare execut rii programelor; fiind toate strns 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, ducnd la venituri mai ridicate pentru fabrican i, care investesc mai mult n cercetare/dezvoltare i linii tehnologice, ob innd densit i mai mari, permi nd integrarea mai multor circuite precum i costuri i mai sc zute. Cu toat sc derea de pre , veniturile globale ale industriei semiconductoarelor au crescut n mod galopant: numai anul trecut vnz 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 crescnd . 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 pn la frne. 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. Aspecte 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 "Cronologia Intel" prezint evolu ia genera iilor succesive ale celei mai proeminente familii de procesoare, ale firmei Intel. Ultima coloan din tabel i figura "Performan e - estim ri" 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 cvadratic, pentru c suprafa a cre te cu p tratul laturii. O reducere de la 2 microni la 1,5 (50%) m re te deci suprafa a efectiv cu 77% (4/2,25 = 1,77).

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 rapid. Observa ie: Majoritatea covr 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. 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 cteva salturi calitative: cnd 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, cache-uri 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 evalund 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 va interesa acum prea tare ce reprezint numerele acestea; cert este c cu ct sunt mai mari, cu att e mai bine. Graficul din figura "Performan e - SPEC" arat evolu ia performan ei procesoarelor n ultimii 10 ani, n termeni SPEC. 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 prezentat i alte mecanisme importante. mi permit s prezint n continuare viziunea profesorului John Hennessy, de la universitatea Stanford, a a cum a expus-o n prelegerea pe care a inut-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 cteva 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: Execu ia pe band de asamblare (pipeline) a instruc iunilor succesive; Execu ia n paralel a instruc iunilor independente: procesoarele de tip VLIW (very long instruction word) aleg la compilare care instruc iuni merg n paralel, iar procesoarele superscalare fac aceast alegere n timpul execu iei. 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 rnduri despre cache-uri n PC Report (de pild martie 1997 i 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 "Performan e - memorii i procesoare" ne ofer cheia: de i att procesoarele ct i memoriile cresc constant n vitez , cre terea procesoarelor este cu 50% mai rapid dect a memoriilor. Ca atare exist o disparitate crescnd 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. ntrzierea 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. 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: (a) Prin folosirea unor cache-uri din ce n ce mai mari, plasate din ce n ce mai aproape de procesor. Aceast evolu ie este clar vizibil : Primele procesoare nu aveau nici un fel de cache, pentru c memoriile erau suficient de rapide pentru a le servi cu date. n 1980 au ap rut cache-uri (L1) sub forma unor circuite speciale, care n 1984 au fost integrate pe aceea i pilul de siliciu cu procesorul central, dup care (1986) a ap rut un al doilea nivel de cache (L2), mai mare i ceva mai lent, care n procesoarele moderne (1995) este la rndul lui adesea integrat cu circuitul microprocesorului, pentru a permite un acces rapid. Au ap rut nivele ter iare de cache (1999). (b) Pe de alt parte metodele de management ale cache-urilor sunt din ce n ce mai sofisticate:

Au ap rut cache-uri care servesc procesorul de ndat ce primul cuvnt a sosit, chiar dac restul sunt pe drum (early restart, 1992), cache-uri care nu blocheaz procesorul cnd datele lipsesc, ci i permit s continue execu ia (nonblocking, 1994) i tot felul de alte tehnologii sofisticate, pe care le-am expus n alte p r i (cache-uri victim , buffere de scriere, instruc iuni speciale (prefetching) de management al cache-ului etc.). Tot aici se cuvine s men ion m multiprocesoarele simetrice i protocoalele de coeren ale cache-urilor pentru astfel de sisteme; toate procesoarele moderne sunt construite pentru a fi folosite n sisteme multi-procesor, i includ astfel de dispozitive. Arhitecturile contemporane Astfel, urm rind evolu ia arhitecturilor, am ajuns pn 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 softul. Nimic mai gre it: la ora aceasta exist o simbioz total ntre hardware i software. Procesoarele se proiecteaz odat cu compilatoarele care le folosesc iar rela ia dintre ele este foarte strns : 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/CISC era de aceea i natur , ca i dezbaterea ntre superscalar i VLIW, pe care am men ionat-o deja n acest text. Not : 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. 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: La ora actual distinc ia RISC/CISC aproape c s-a estompat. De exemplu, Pentium, un procesor tipic CISC, de fapt traduce n mod automat instruc iunile n instruc iuni de tip RISC n hardware, dup care le execut . Pe de alt parte, toate procesoarele RISC au c p tat extensii la setul de instruc iuni (gen CISC) pentru a le m ri eficacitatea; de pild toate procesoarele au extensii speciale pentru multimedia. De asemenea, grani ele dintre super-scalar i VLIW tind s se estompeze, fiecare mprumutnd din tehnologiile celuilalt. 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 vlv , nu att 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 att de curentul RISC, ct i de modelele VLIW), n care hardul este simplu i rapid iar compilatorul duce greul. Echipa care a lucrat la Transmeta este compus n 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. Ct de serios este acest nou competitor? Din p cate atuurile lui Crusoe nu sunt prea clare: y cipul nu are un ceas mai rapid dect procesoarele Intel (versiunile de Crusoe disponibile acum merg doar la 400Mhz, comparativ cu Pentium, care ajunge la 800); y cipul ntr-adev r consum mult mai pu in energie i are nevoie de mult mai pu in r cire. Transmeta afirm c asta-l face ideal pentru laptop-uri. Din p cate, principalul consumator de energie ntr-un laptop nu este procesorul, ci ecranul i discul, a a nct avantajele noului cip vor fi marginale; y Crusoe se bucur de compatibilitate cu setul de instruc iuni x86; dar pentru platformele pe care x86 este dominant (desktop, laptop, chiar i server) am v zut c performan a lui este insuficient . Dac Crusoe vrea s concureze pentru celelalte pie e, de procesoare integrate (embedded computing), atunci are de-a face cu al i competitori formidabili, ca procesoarele de semnal de la Motorola, Texas Instruments i Intel (ARM), asupra c rora nu este clar cte avantaje are. Probabil c pentru a r mne 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.

Constrngerile 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 "Performan e - memorii i procesoare", 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 i 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! Srmele 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 dect 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 srmelor". 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 srmelor, 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 srmele vor evolua n sensul dorit: vor deveni mai scurte, iar viteza de transmisiune a informa iei nu va sc dea, relativ la dimensiunea circuitului. Deci dac am lua un microprocesor de ast zi i l-am reduce la scar , srmele 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 c designerii adaug noi module. O mare problem sunt srmele care traverseaz mai multe module. Lungimea acestora r mne practic constant , n milimetri. Ori, cum viteza ceasului cre te mereu, asta nseamn c semnalele electrice nu mai au timp s parcurg srmele de la un cap t la altul. La 1Ghz, lumina str bate n vid 30 de centimetri. Dar viteza luminii n solide este mai mic iar viteza de propagare scade semnificativ odat cu num rul de "consumatori" ai srmei (adic o srm conectat la 3 circuite e mult mai lent dect 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 srm 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, srmele sunt mai sub iri i consumul de putere este mai mare, circuitele sunt mai sensibile la zgomot, fie el termic, din mediu (de exemplu radia ii cosmice) sau, n curnd, chiar efecte cuantice! Fenomenele de transport din semiconductori pe care se bazeaz tranzistorul sunt fenomene statistice: or, cnd dimensiunile devin att de mici nct numai c iva electroni produc semnalele, statistica nu mai opereaz iar excep iile ncep s apar . Genera ia urm toare 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. Cercetarea n arhitectura procesoarelor este efervescent , att n industrie ct 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 att 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: Trace cache: este un cache pentru instruc iuni care, n loc de a p stra instruc iunile n ordinea adreselor lor, le men ine n ordinea n care este probabil s fie executate. Execu ia speculativ i predic ia valorilor: ntr-un articol anterior din PC Report (din iulie 1999) am v zut c principala limitare n calea execu iei paralele a instruc iunilor sunt dependen ele ntre instruc iuni: una are nevoie de rezultatul alteia pentru a se executa. Or, dac prima instruc iune dureaz mult, atunci a doua nu se poate executa nici ea. Solu ia ades folosit este de a ghici valoarea rezultat i de a executa i instruc iunea dependent . Cnd rezultatul primei instruc iuni sose te, este comparat cu cel ghicit (prezis); dac predic ia a fost corect , toate sunt bune, altfel instruc iunea dependent este re-executat . Exist felurite forme de predic ie a valorilor, unele folosite deja de mult vreme (cum ar fi predic ia salturilor, pe care am descris-o n PC Report din august 1999), dar este plauzibil ca scheme din ce n ce mai sofisticate s - i fac apari ia. Execu ia predicat , care este deja folosit de procesoare de prelucrare de semnal ca Texas Instruments C6X, i care va fi una din tr s turile fundamentale ale noii arhitecturi de la Intel, Merced. Execu ia predicat evit execu ia instruc iunilor de salt (care au un efect negativ asupra performan ei, a a cum am ar tat n articolul mai sus-citat) i prefer s execute instruc iuni n mod inutil dup care s arunce rezultatele la gunoi (de exemplu, cnd avem o structur de genul if-then-else, o arhitectur predicat poate executa ambele ramuri ale condi iei, dar va permite numai uneia dintre ele s - i fac efectele vizibile). 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 strns cuplate, pe aceea i pilul de siliciu. De fapt, astfel de scheme exist deja: procesorul pentru mainframes 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 spre a exploata alte forme de paralelism dect 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: y Paralelism la nivel de bucl : n care itera ii succesive ale unei bucle sunt executate n paralel. y Paralelism la nivel de thread; despre multithreading am scris un articol amplu n PC Report din ianuarie 1997. Exist o sum de inova ii arhitecturale legate de aceste tehnologii, nc ne-integrate n produse comerciale. S privim cteva dintre ele: y Thread-level data speculation: este o metod de a implementa paralelismul la nivel de bucl , lansnd cte un thread pentru fiecare itera ie a buclei. De exemplu, proiectul STAMPede de la Universitatea Carnegie Mellon, condus de profesorul Todd Mowry exploreaz aceast alternativ (http://www.cs.cmu.edu/ ~tcm/STAMPede.html). y Simultaneous multi-threading, propus la universitatea din Seattle n 1995. Aceast tehnologie men ine starea fiec rui thread n hardware i permite comutarea rapid ntre thread-uri. Putem distinge dou variante, ca n caseta "Multithreading": ntr-una din variante, n fiecare ciclu de ceas putem executa instruc iuni dintr-un alt thread, i alta, n care n fiecare ciclu, instruc iuni din thread-uri diferite candideaz pentru unit i func ionale diferite. Avantajul unor astfel de scheme este c , dac un thread execut opera ii 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 mpingnd 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 nct accesul s fie paralel i rapid. De asemenea, astfel de scheme, n care calculul este distribuit n multe unit i independente, face ca impactul "srmelor 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. Imagine Un proiect foarte interesant este Imagine (http://cva.stanford.edu /imagine/cva_imagine.html), dezvoltat la universitatea Stanford sub conducerea lui William Dally. Proiectul, orientat mai degrab pe procesarea de semnal, 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 dintrun flux de obiecte ntr-un flux de poligoane, care devin un flux de triunghiuri, apoi un flux de pixeli i a a mai departe. 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/). Am vorbit alt dat pe larg despre hardware-ul reconfigurabil (PC Report din iulie 1998). Fiecare poart universal poate fi programat s execute orice func ie logic , iar comutatoarele pot cupla i decupla srmele (vezi figura "Hardware reconfigurabil"). 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 dect 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 tehnicile de design contribuie n mod egal la aceste spectaculoase cre teri. De asemenea, am v zut c cre terea aceasta se apropie de sfr 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.

S-ar putea să vă placă și