|
Elementele care determina performantele unui microprocesor
Reamintim ca microprocesorul (prescurtat - mp) reprezinta unitatea centrala a PC-urilor. Nu este scopul acestei lucrari sa abordam aspectele constructive si functionale ale acestuia, insa este util sa evidentiem cateva elemente de performanta care - evident - sunt determinante pentru calitatea performantei intregului calculator. Sintetic, elementele care determina performantele unui microprocesor sunt:
n viteza de lucru
n capacitatea maxima de adresare directa a memoriei interne
n setul de instructiuni
n tipul constructiv
Sa analizam pe rand fiecare din aceste caracteristici:
1. Viteza de lucru reprezinta volumul de instructiuni - masina (sau - mai riguros - de cicluri-masina) pe care mp le executa intr-o secunda. Ea este determinata in principal de un parametru denumit frecventa ceasului intern. De aceea, la PC-uri, viteza nu este masurata uzual in mips (milioane de instructiuni pe secunda) ci in MHz (106 Hz), intre cele doua marimi fiind evident ca se poate stabili o relatie de echivalenta: o instructiune masina este executata in mai multe cicluri - masina, fiecare ciclu dureaza un numar determinat de perioade (sau tacturi) de ceas, iar frecventa reprezinta inversul perioadei.
Ceasul intern este de fapt un oscilator care sincronizeaza prin impulsuri periodice traficul de semnale electrice desfasurat intre circuitele elementare din microprocesor. Necesitatea acestei sincronizari apare datorita faptului ca semnalele electrice care vor fi prelucrate de catre unul din aceste circuite elementare trebuie sa fie aplicate la intrarea acestuia simultan, daca dorim ca la iesire sa se obtina rezultatul corect.
Daca tacturile de sincronizare ale ceasului ar lipsi, acest lucru nu se va intampla, deoarece fiecare din semnale trece - pana sa ajunga la intrarea circuitului mentionat - printr - un numar diferit de alte circuite, unde prelucrarea lor implica de fiecare data o anumita "intarziere". Cum numarul de circuite prin care trece fiecare semnal este de obicei diferit, rezulta ca si intarzierile lor vor fi diferite, facand imposibila sincronizarea la intrarea circuitului urmator.
De aceea, cesul intern se comporta ca o "poarta", care prin "deschideri" periodice permite trecerea semnalelor pentru prelucrare, eliminandu-se astfel posibilitatea aparitiei unor desinscronizari care ar altera corectitudinea logica a rezultatelor. Explicatia este evident intuitiva si un electronist ar putea sa o atace propunand o argumentatie mai savanta. Pentru utilizatori insa rolul cesului intern poate fi interpretat in sensul celor aratate mai sus.
Daca primele microprocesoare aveau frecventa ceasului de cativa MHz (de exemplu, 6 MHz la Intel 8080), aceasta a crescut ulterior in permanenta, la nivelul anului 2001 valorile de 500 - 800 MHz fiind obisnuite, iar cele de 1 - 2 GHz fiind din ce in ce mai putin avangardiste.
Un alt element care determina viteza de lucru a microprocesorului este dimensiunea registrelor interne de lucru si a magistralei de date. Am aratat ca informatiile circula intre diferitele componente ale calculatorului (UC, memorii, unitati de I/E, etc.) pe o anumita magistrala, iar microprocesorul (ca unitate centrala) poseda un numar de registre, destinate stocarii datelor asupra carora se efectueaza prelucrari la un moment dat. Aceste date pot fi coduri de instructiuni, adrese de memorie, operanzi (vezi capitolul I). Rezulta ca viteza de prelucrare depinde de "largimea " magistralei de transport (similar cu numarul de benzi de circulatie de pe o autostrada) si de "volumul" de stocare al registrelor. Pentru ca ne referim la fluxuri de informatii, aceste dimensiuni se masoara in biti.
Dimensiunea unui registru mai poarta numele de lungimea cuvantului procesorului (word size), fiind un parametru caracteristic important al acestuia. In argoul informatic, de multe ori se spune ca un microprocesor lucreaza pe x biti, subantelegandu-se de fapt ca acesta are lungimea cuvantului (si deci dimensiunea registrilor) de x biti. In arhitecturile uzuale, se opteaza ca magistrala de date si registrii de lucru sa aiba aceleasi dimensiuni, pentru ca este de dorit ca "umplerea" sau "golirea" registrilor sa se faca printr-un singur transfer pe magistrala. Prima generatie de microprocesoare avea registre si magistrale de 8 biti. Generatiile urmatoare, dupa cum vom vedea, extind succesiv largimea cuvantului la 16, 32 si chiar 64 de biti.
Exista si situatii in care dimensiunile registrelor interne si ale magistralei de date sunt diferite (de exemplu, magistrala de 32 biti si registre de 16 biti). Aceasta solutie constructiva a fost adoptata din considerente de asigurare a compatibilitatii soft intre doua generatii succesive de microprocesoare. Astfel, in momentul lansarii lui Intel 8086 (procesor pe 16 biti), acesta nu putea rula programele scrise pentru predecesorul sau (Intel 8080 - procesor pe 8 biti). Pana cand s-au gasit solutiile de compatibilitate, a fost construita o versiune hibrida (Intel 8088), care intern lucra pe 16 biti, dar efectua transferuri pe o magistrala cu capacitatea de 8 biti.
Un ultim element care influenteaza substantial viteza de lucru a microprocesorului este prezenta memoriei cache. Dupa cum deja stim, UC transfera in vederea prelucrarii date din MI, locatie cu locatie. Durata fiecarui transfer este o caracteristica a memoriei si se numeste timp de acces, fiind dependenta de tehnologia contructiva utilizata. Este evident ca un timp de acces mic creste viteza de lucru a calculatorului, dar micsorarea lui complica tehnologia si creste pretul de cost al memoriei. S-au cautat atunci si alte solutii pentru marirea debitului de transfer al datelor din memorie.
O solutie actuala de mare eficienta a acestei probleme este organizarea resurselor de stocare ale calculatorului intr-o structura numita ierarhie a memoriei (figura 3.2). Se observa ca la baza acestei ierarhii sunt plasati suportii de memorie de mare capacitate, dar lenti, pe cand la varf se gasesc resursele cu cea mai mare viteza de transfer.
Figura 3.2. Ierahia memoriei
Plasarea, transferul si regasirea datelor in aceasta ierarhie a resurselor de stocare se face conform principiului localitatii: daca o data a fost referita de catre un program, atunci - cu o mare probabilitate - si cele stocate in locatii vecine vor fi referite in viitor (localitatea spatiala) si daca o instructiune de program a fost executata, atunci - cu o mare probabilitate - si cele plasate in vecinatatea ei vor fi executate in viitor (localitate temporala).
Memoria cache este o componenta a ierarhiei memoriei care functioneaza pe baza principiului localitatii. Constructiv, ea este o memorie ultrarapida (in raport cu memoria interna de tip RAM), cu o capacitate de stocare mai mica decat zona RAM a MI (de exemplu 256, 512 sau 1024 KB). O parte din memoria cache este plasata chiar in chip - ul microprocesorului (cache de nivel 1 sau L1), alta parte fiind alcatuita din circuite externe acestuia (cache de nivel 2 sau L2). Intr-un modul cache datele si instructiunile pot fi stocate fie impreuna, fie separat (in cache de date, respectiv de instructiuni).
In memoria cache sunt transferate zone din memoria interna a calculatorului, care contin datele pe care unitatea centrala le va prelucra. Selectia acestor zone se face cu ajutorul unor algoritmi bazati pe principiul localitatii. Acestia asigura cu o mare probabilitate (peste 98%) prezenta in cache a datelor cerute de catre UC. Prin acest mecanism microprocesorul are la dispozitie permanent o "provizie" de date pe care le poate accesa mult mai repede (avand in vedere viteza de transfer superioara din cache), astfel incat si el va lucra mai rapid.
Memoria cache era o componenta optionala in configuratia primelor PC - uri, insa variantele constructive actuale au adoptat definitiv aceasta solutie arhitecturala. Merita mentionat chiar faptul ca un microprocesor cu o frecventa mare de ceas poate fi totusi mai lent decat unul cu o frecventa mai mica, daca acesta din urma dispune de mai multa memorie cache.
2. Capacitatea de adresare directa a memoriei interne este o alta caracteristica definitorie a unui microprocesor. Este de dorit ca MI sa aiba o capacitate cat mai mare, pentru a putea stoca cat mai multe date si programe. Aceste informatii trebuie sa poata fi oricand regasite, prin adresele care sunt asociate celulelor elementare pe care le-am denumit locatii. Adresele locatiilor se construiesc de catre UC in registrele sale interne si se transmit pe magistrala de adrese. Daca dimensiunea unui registru este - spre exemplu - de 16 biti, iar o locatie are 8 biti, numarul maxim ce poate fi format in registru este 65535 (adica 215+214+..+21+1), ceea ce inseamna ca pot fi accesat direct un volum de circa 64000 locatii sau 64 KB de memorie. Acest exempu ne-ar putea face sa tragem concluzia (falsa, dupa cum vom vedea) ca un microprocesor pe 16 biti nu poate avea decat o memorie interna de 64 KB, pentru ca atat poate adresa direct prin registrele sale.
Stim insa ca in realitate PC-urile aveau cel putin 1MB de RAM, astazi aceasta valoare putand ajunge la 32, 64, 128 MB sau chiar mai mult. Rezulta ca mecanismele de adresare sunt mai complicate, oferind solutii pentru a avea acces si in zonele de memorie "inalta" (de dincolo de limita adresarii directe). Pe exemplul de mai sus, un astfel de mecanism ar functiona astfel: memoria interna se imparte in segmente de cate 64 KB, fiecare segment avand asociata o adresa de inceput, iar identificarea unei locatii de catre UC se face in doua etape. Mai intai se transmite pe magistrala adresa segmentului, iar apoi adresa locatiei, plasata in acel segment. Prin aceasta solutie, campul maxim de adresare este substantial marit (64000 segmente a cate 64000 de locatii fiecare!). Dezavantajul solutiei consta insa in faptul ca se efectueaza doua calcule de adresa si doua transferuri pe magistrala, ceea ce inseamna - evident - consum suplimentar de timp si - implicit - scaderea vitezei de lucru a microprocesorului. Astazi insa aceasta problema a fost rezolvata in cea mai mare parte, PC -urile moderne avand magistrale de adrese cu latimi de 32 sau 64 de biti, ceea ce inseamna capacitati de adresare directa de ordinul TB (terra bytes).
3. Setul de instructiuni reprezinta ansamblul 'instrumentelor' cu ajutorul carora microprocesorul executa asupra datelor operatiile impuse de program (calcule aritmetice si logice, conversii, deplasari, rotatii, salturi etc.).
In arhitecturile clasice de calculatoare, se considera ca sistemul este cu atat mai performant, cu cat setul sau de instructiuni este mai bogat. Astfel de structuri se numesc cu set complex de instructiuni, sau cu arhitecturi CISC. Mai tarziu, s-a constatat insa ca numai o mica parte din setul de instructiuni este utilizata de catre programe cu o mare frecventa. S-au obtinut astfel calculatoare cu set redus de instructiuni, sau cu arhitecturi RISC. Reducerea numarului de instructiuni din set nu duce, asa cum am fi tentati sa credem, la diminuarea performantelor, ba chiar dimpotriva, sistemele RISC sunt deseori mai performante decat cele CISC. Nu este scopul acestei lucrari sa intram in detalii, asa ca nu vom mai spune decat ca intre cele doua arhitecturi are loc o competitie acerba, invingatorul fiind departe de a se contura. Totusi, asa cum s-a mai intamplat si in alte situatii, este posibil ca in viitor solutia sa fie un compromis intre CISC si RISC.
Lungimea cuvantului microprocesorului, mai precis dimensiunea si structura registrului de instructiuni (IR) determina caracteristicile setului. In general, acesta este impartit in mai multe campuri: codul operatiei, modul de adresare, adrese operanzi.
Lungimea campului cod operatie determina cate combinatii binare distincte pot fi asociate instructiunilor, cu alte cuvinte numarul acestora. Spre exemplu, un camp de 8 biti suporta maxim 256 de coduri distincte pentru instructiuni.
Codurile din campul mod adresare desemneaza modalitatea de calcul a adreselor operanzilor implicati in instructiune. Fara a intra in detalii, sa amintim cateva dintre modurile de adresare mai frecvente: directa, indirecta, bazata, cu registri, indexata s. a.
Lungimea campului adrese operanzi determina de cele mai multe ori dimensiunea spatiului de memorie adresabil de catre instructiune.
In proiectarea setului de instructiuni trebuie sa se tina seama de necesitatea asigurarii compatibilitatii software intre generatiile succesive de microprocesoare. Presupunem ca s-a construit un nou microprocesor - N, dotat cu un set de 500 instructiuni. Predecesorul sau V avea numai 100 de instructiuni. Toate programele scrise pana in acest moment au folosit setul de 100 de instructiuni al lui V. Daca insa din cele 500 de instructiuni ale noului set al lui N lipseste o singura instructiune din setul vechi, atunci toate programele care o contin nu vor putea fi rulate pe N (acesta nu va sti sa o decodifice). S-ar putea pierde astfel, la fiecare noua aparitie a unui microprocesor, un urias volum de munca intelectuala, pentru ca vechile programe nu ar putea fi utilizate decat dupa o prealabila rescriere. Se impune deci ca setul de instructiuni al unui nou microprocesor sa contina obligatoriu - ca un subset - instructiunile microprcesorului predecesor. In acest fel se asigura portabilitatea programelor, adica posibilitatea acestora de a fi rulate pe generatii succesive de microprocesoare. In acest mod iau nastere si familiile de microprocesoare, ai caror membri pot fi programati de aceeasi maniera (utilizand un set comun de instructiuni de baza). Astfel de familii au dezvoltat Intel (80x86), Motorola (68xxx), AMD s. a.
Nu intotdeauna insa instructiunile de calcul satisfac pe deplin cerintele de viteza ale unui microprocesor. Spre exemplu, inmultirea numerelor reale, reprezentate intern intr-un format binar numit virgula flotanta (sau virgula mobila), este o operatie mare consumatoare de timp, indiferent de ce algoritm de calcul se utilizeaza.
In aceste situatii se recurge la circuite specializate, care executa numai o anumita categorie de operatii si pot fi (optional sau nu) atasate microprocesorului. Din aceasta cauza, ele au fost numite coprocesoare matematice. Pentru versiunile mai vechi, fiecare tip de microprocesor avea un dual al sau - coprocesorul. Ulterior, odata cu cresterea densitatii de integrare a circuitelor integrate, coprocesorul va fi inclus chiar in chip - ul microprocesorului, pentru cresterea eficientei utilizarii sale. Astfel, Intel adopta aceasta solutie incepand cu generatia Intel 80486.
4. Tipul sau varianta constructiva constituie un ultim criteriu de apreciere al performantei unui microprocesor, asa cum un autoturism poate fi evaluat nu numai dupa caracteristicile tehnice propriu-zise, ci si dupa firma care l-a fabricat sau modelul prezentat.
Pe piata s-au impus doua mari familii arhitecturale de microprocesoare, ai caror "parinti" sunt firmele producatoare Intel si Motorola. Prin extensie, si calculatoarele personale sunt impartite in doua: cele compatibile IBM, dotate cu microprocesor Intel si cele compatibile Macintosh (sau Apple Macintosh), dotate cu microprocesor Motorola.
Pe piata europeana (si implicit pe cea romaneasca) suprematia este detinuta de catre versiunile compatibile IBM, preferate de peste 95% din clientii acestui important segment de piata. Explicatia nu consta in nivelul lor superior de performanta, in comparatie cu PC -urile din familia Macintosh, ci in faptul ca sunt ceva mai ieftine, iar exigenta legilor de protectie intelectuala (copyright) - care reglementeaza accesul la softului de aplicatii - este mai redusa. Cel putin la inceputul extinderii utilizarii pe scara larga a PC -urilor, aceste reglementari mai putin riguroase au permis utilizatorilor sa-si procure programele si pe alte cai (mai putin 'ortodoxe', dar mai ieftine) decat cele ale licentelor de distributie. Utilizarea PC - urilor din familia Macintosh este raspadita mai ales in SUA si Canada. De aceea - si in aceasta lucrare - atunci cand vom utiliza notiunea de PC sau vom analiza diferite caracteristici ale acestuia, ne vom referi implicit la un membru al familiei IBM.
Primul reprezentant al familiei Intel care a echipat un calculator personal a fost modelul pe 8 biti 8080. In 1978-1979 apar primele microprocesoare pe 16 biti - Intel 8086 si 8088 - urmate in 1984 de 80286. In 1986, modelul Intel 80386 este primul microprocesor pe 32 de biti. A urmat generatia 80486, care lucra tot pe 32 de biti, dar cu performante superioare, avand incorporat coprocesor matematic si memorie cache L1 si executand instructiunile in modul pipe-line (banda de asamblare). Microprocesorul poate lucra intern la frecvente de ceas mai mari decat frecventa de lucru a magistralelor sale (astfel, 486DX lucreaza intern la aceeasi frecventa cu a magistralei - de obicei 33MHz - DX2 lucreaza la o frecventa dubla, iar DX4 la una de patru ori mai mare). Un chip 80486 continea 1,2 milioane de tranzistori intr-un chip de 165 mm2.
Utilizand o arhitectura de baza similara cu 486, unele firme au lansat propriile lor modele de microprocesoare. Cele mai cunoscute sunt Cyrix (Cx486), AMD (Am486) sau IBM (IBM486).
Incepand cu generatia 586, microprocesoarele Intel au fost denumite Pentium si inregistrate ca marca. Pentium I a fost lansat pe piata in 1993 si a fost primul microprocesor cu magistralele de adrese si date pe 64 de biti, care lucra initial la 60 MHz. Utilizand o noua tehnologie VLSI (BICMOS, cu un indice de integrare de pana la 0.35 mm), chip -ul microprocesorului continea 3.1 - 3.3 milioane de tranzistori, avand o suprafata de numai 294 mm2. Vitezele sale de lucru se situeaza intre 100 - 140 mips, iar debitul de transfer al datelor la 60 MHz este de 528 MB/s.
Pentium are o structura interna superscalara, putand executa doua instructiuni intr-un ciclu de ceas (procesarea acestora facandu-se pe doua magistrale pipe - line) si dispune de doua unitati cache de nivel 1: una pentru date, iar cealalta pentru instructiuni. Alte modele compatibile cu Pentium sunt NexGen Nx586 si Cyrix M1, cat si modelul de tranzitie Pentium Pro.
Microprocesorul Pentium II (PII) - cu o arhitectura interna foarte asemanatoare cu arhitectura RISC, dar compatibila cu celelalte microprocesoare CISC din seria 80x86 - este realizat in tehnologie BICMOS, ingloband intr-o capsula considerata 'enorma' (306 mm2 suprafata, 287 de pini) circa 6 milioane de tranzistori. Frecventele sale de lucru variaza intre 233 si 450 MHz. La 150 MHz, viteza sa de lucru este de 132 mips. PII dispune de cache L1 si L2 si este dedicat in special aplicatiilor multimedia. De aceea, setul sau de instructiuni poate contine unele speciale, numite MMX (multimedia instructions). Acestea permit prelucrarea datelor in modul SIMD (single instruction stream, multiple data stream), adica o singura secventa de program prelucreaza simultan mai multe siruri de date. Procesoarele care lucreaza in acest mod se numesc Pentium II MMX.
Pentium II a fost dezvoltat spre trei linii de produse. Prima este Celeron, o varianta mai ieftina, care fie nu are de loc, fie are un cache L2 cu o capacitate mai mica. Urmasul sau, Mendocino, are cache-ul L2 intern. Pentium II Pro este orientat spre servere si statii de lucru.
In urma fuzionarii firmelor Nexgen si AMD, incepe fabricarea microprocesoarelor din familia AMD Kx (K5, K6, K6-2). Concurenta dintre marile firme producatoare este relansata si pentru prima data, in 1996 Intel va fi detronat din pozitia de lider al performantei de catre modelul Cyrix 6x86 P200?+. dupa preluarea lui Cyrix de catre IBM (1996), firma va realiza destul de repede replici la fiecare produs Pentium.
Replica AMD la Pentium a fost in prima instanta microprocesorul 586 DX5 la 133 MHz, inlocuit insa rapid, datorita performantelor inferioare, de modelul K5, un procesor RISC performant, incompatibil insa cu familia Intel. Modelul urmator - AMD K6 - este realizat in tehnologie de 0.25 mm (contine 8.8 - 9.3 milioane de tranzistori), beneficiind de o arhitectura superscalara de tip Super7, care ofera printre altele: memorie cache de nivel 3, debit pe magistrala de 800 MB s, port grafic AGP si sapte unitati de executie in paralel a instructiunilor (doua pentru operatii cu intregi, doua pentru transfer de date cu memoria, una pentru instructiuni MMX, una pentru calcule in virgula mobila si ultima pentru rezolvarea instructiunilor de salt in program). La sfarsitul anului 1997, AMD lanseaza - in colaborare cu firma DEC, un nume cunoscut in lumea RISC - procesorul K6-2 3D, iar in 1999 - procesorul K7. Primul dintre ele implementeaza arhitectura 3Dnow!, introdusa pentru cresterea puterii de calcul in aplicatii din domenii noi ale tehnicii de calcul, precum grafica, multimedia, recunoasterea vorbirii, utilizarea discului video digital, procesarea audio de inalta performanta, conceperea paginilor de WEB sau programele de proiectare asistata si educationale.
Procesorul Pentium III este, evident o dezvoltare a predecesorului PII, preluand de la acesta toate trasaturile specifice arhitecturii P6, dar putand lucra si in arhitecturi duale (cu doua unitati centrale pe acelasi circuit). Efortul proiectantilor s-a concentrat asupra cresterii performantelor pentru aplicatiile din domeniile mentionate mai sus. Pastila sa de siliciu contine circa 9.2 milioane tranzistori, realizati in tehnologia de 0.25 mm. Procesorul dispune de instructiuni MMX si facilitati de prelucrare SIMD, putand adresa pe cele doua magistrale 4 GB de memorie cache (practic, L1 are 512 KB, iar L2 - 1MB) sau 64 MB de RAM. In premiera, Intel introduce la acest microprocesor numarul unic de identificare (CPUID - Central Processing Unit Identification Number), ceea ce permite, printre altele, sporirea gradului sau de protectie, eliminarea de pe piata a produselor contrafacute si identificarea calculatorului prin software, utila in efectuarea tranzactiilor de comert electronic. Procesorul Pentium III Xeon este o dezvoltare a arhitecturii PIII, destinata serverelor de retea sau Internet.
Un concurent serios pentru PIII este AMD K6-III. Acest microprocesor introduce conceptul de cache pe trei nivele (Trilevel Cache), dintre care primele doua sunt interne.
Competitia pentru realizarea unor microprocesoare cat mai performante continua. Se fac cercetari pentru utilizarea unor noi materiale semiconductoare, in scopul reducerii timpilor de comutatie ai tranzistorilor, cresterea densitatilor de integrare si a frecventelor de lucru. La momentul actual, acestea sunt incurajate de trecerea la utilizarea industriala a tehnologiei de 0.18 microni.
Inainte de a incheia aceasta prezentare, as dori totusi sa remarc un aspect: ne-am obisnuit sa-i invidiem pe colegii care isi achizitioneaza PC-uri "ultima moda" si care le lauda - pe buna dreptate- cu performantele hardware ale acestora. Insa nu trebuie sa uitam nici un moment ca un calculator este adevarat "tare" numai daca este "incarcat" cu pachete de programe puternice si diversificate. Altfel, invidia initiala se poate transforma usor in zambet ironic, daca un Pentium II este utilizat numai pentru jocuri, redactarea corespondantei sau - mai trist - ca element de mobilier in biroul unui manager, al unui politician sau al unui inalt functionar administrativ (situatii care mai pot fi inca intalnite si in Romania zilelor noastre).