BluePink BluePink
XHost
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. Pentru detalii accesati site-ul BluePink.
The future is now
Arhitectura lui Pentium 4 Prescott
   De ce prescott ?

Ultima realizare de la Intel, ce poarta aceeasi denumire comerciala ca si predecesorii sai, Pentium 4, este cunoscuta sub numele de cod Prescott. Daca AMD prefera denumiri legate de cai pentru a-si promova CPU-urile (Morgan, Palomino, Thoroughbred sunt rase de cai) iar VIA foloseste termeni cu rezonanta religioasa (Nehemiah, Joshua, Ezra), Intel prefera nume de localitati sau regiuni geografice din America (Willamette si Coppermine sunt râuri, Northwood este denumirea atribuita mai multor localitati), Prescott fiind atât o padure, un orasel în Arizona cu o populatie de câteva zeci de mii de locuitori, cât si un nume, marele fizician englez Joule având numele complet de James Prescott Joule. Cam atât cu povestile, sa trecem la lucruri serioase.

Ce stie...
Modificarile aduse de Intel arhitecturii vechiului Pentium 4 (cod Willamette sau Northwood) nu sunt atât de marcante ca în cazul trecerii de la Pentium III la Pentium 4 însa putem spune ca, din anumite puncte de vedere, ele se aseamana cu precedentul salt de tehnologie. Arhitectura NetBurst a fost pastrata, deci vom avea în continuare un procesor ce ruleaza cu un PSB efectiv începând cu de patru ori mai mare decât frecventa de baza, si anume 4x200=800 MHz, frecventa cunoscuta de la ultimele modele de Northwood, ajungându-se la modelele ulterioare la 4x266=1066 MHz. Simplificând,
schimbarile aduse de catre Prescott se bazeaza pe încercarea producatorului de a creste performanta în primul rând prin cresterea frecventei; pentru aceasta, au fost necesare unele schimbari interne care au dus inevitabil la scaderea vitezei comparativ cu alte procesoare la aceeasi frecventa. Cu alte cuvinte, Northwood este mai rapid decât Prescott la aceeasi frecventa în anumite aplicatii, la fel cum Pentium III Coppermine era mai rapid decât Pentium 4 Willamette daca se comparau doua CPU-uri rulând la tacturi similare.
Nu trebuie sa va îngrijorati: Intel a facut tot posibilul pentru a minimaliza efectele încercarii oarecum fortate de crestere a frecventei. Astfel, dimensiunea cache-ului L2 a fost dublata, o serie de unitati ale procesorului, precum cache-ul si unitatea pentru numere întregi au fost optimizate, iar câteva instructiuni suplimentare au extins setul SSE2, el devenind acum SSE3. În acelasi timp, numarul de stagii ale conductelor de prelucrare (asa numitele pipeline-uri) a fost crescut în continuare, el ajungând la peste 30 (10 la Pentium III, 20 la Pentium 4 Willamette si Northwood). Aceasta modificare, împreuna cu cresterea latentei cache-ului, ofera noi orizonturi privind potentialul de a atinge frecvente uriase, de ordinul a 5 GHz. Nu este nevoie de prea multa imaginatie pentru a afla motivul acestor schimbari, el fiind unul comercial: mai multi megahertzi înseamna pentru cei mai multi mai multa performanta, fapt ce se dovedeste a fi din ce în ce mai fals. Vom explica în continuare majoritatea schimbarilor aduse de Prescott lui Pentium 4 Northwood, explicând (cel putin sumar) toate notiunile care ar putea produce dificultati în urmarirea textului pentru un cititor începator.

...si cum a fost creat pentru a sti

Câteva cuvinte despre tehnologia de fabricatie. Numarul de microni întâlnit în specificatiile oricarui procesor se refera la distantele dintre tranzistorii procesorului. Cu cât acestea sunt mai mici, cu atât se mareste potentialul cresterii frecventei de tact. Aceasta este teoria clasica, ce tinde sa nu mai fie valabila din cauza atingerii unor distante critice: 0.13 microni pentru Pentium 4 Northwood si 0.09 microni (90 nanometri) pentru Prescott. Pe de o parte, tranzistorii pot lucra mai rapid, pe de alta parte apar fenomene nedorite, în special datorita dimensiunii foarte mici a pastilei, devenind necesare unele schimbari de ordin intern. Astfel, tehnologia Strained Silicon rezolva partial neajunsurile datorate arhitecturii pe 0.09 microni a lui Prescott.


Cum gestioneaza memoria principala...

Sa comentam putin memoria cu care lucreaza ultimele procesoare Intel. Dupa cum se stie, northbridge-ul, pentru majoritatea chipset-urilor destinate lui Pentium 4, detine integrate în primul rând controller-ul de memorie si cel pentru bus-ul AGP sau PCI-Express X16. Controller-ul de memorie influenteaza puternic performanta, el având posibilitati de a lucra cu memoria SDRAM, DDR SDRAM, DDR2 SDRAM sau RDRAM (Rambus). Toate chipset-urile uzuale folosesc memoria în mod dual-channel (care în principiu dubleaza performanta acesteia daca sunt folosite doua sau mai mult module de memorie într-o anumita combinatie), o valoare normala ca latime de banda fiind cea de 6.4 GB/s (DDR400 în mod dual-channel). Pentru ca aceasta viteza teoretica sa afecteze puternic performanta este nevoie ca datele furnizate de procesor sa ajunga în memorie la timp, ceea ce înseamna ca, prin intermediul FSB-ului (care este în esenta viteza de comunicare dintre CPU si northbridge), sa fie furnizati memoriei câte 6.4 GB într-o secunda. Exact aceasta este latimea de banda a FSB-ului de 800 MHz. Si nu este vorba de 800 MHz reali, ci de 200 MHz multiplicati de un numar de patru ori, folosindu-se o tehnica asemanatoare cu dublarea ratei de transfer la PSB-urile procesoarelor Athlon si la memoriile DDR. Astfel, circulatia fluxului de date procesor-northbridge-memorie se desfasoara cu viteza de 6.4 GB/s, de doua ori mai mult decât pentru un Athlon XP cu FSB de 400 MHz (2x200). În varianta de FSB 533, acest flux circula cu doar 4.3 GB/s, o frecventa a memoriei mai mare de cea corespunzatoare lui PC2100 (DDR266) dual-channel neaducând cresteri majore de performanta, motivul fiind explicat mai sus. Prescott ruleaza la un FSB de 533, 800 si 1066 MHz; în schimb, Northwood beneficiaza doar de 400, 533 si 800 MHz. Totusi, majoritatea modelelor de Prescott nu depasesc decât prin overclocking cei 800 MHz, ele fiind similare din acest punct de vedere celor mai recente procesoare Northwood.


...si cea intermediara


Cache-ul este o zona de memorie intemediara care stocheaza informatiile mai des folosite, crescând foarte mult (de mii de ori) performanta unui procesor, aceasta datorita faptului ca, în cele mai multe cazuri, datele si instructiunile nu sunt folosite o singura data ci de un numar foarte mare de ori într-un interval scurt. Exista cel putin doua nivele de cache: level 1 (L1) si level 2 (L2), primul nivel fiind mai aproape de nucleul procesorului si având astfel o eficienta mai mare. La majoritatea procesoarelor de azi, el este împartit într-o sectiune pentru date si una pentru instructiuni.

Pentru procesoarele AMD, cele doua zone sunt de capacitate identica si totalizeaza 128 KB, însa Pentium 4 a adus o noua organizare a cache-ului, existând o sectiune de date de doar 8 KB si una de instructiuni, numita Execution Trace Cache, care stocheaza aceste instructiuni într-o forma deja decodata, capacitatea fiind de 12.000 de micro-operatii (micro-ops); acest tip de cache depaseste ca eficienta unul obisnuit de 8 KB. În cazul lui Prescott, cache-ul pentru instructiuni a ramas acelasi iar cel de date a fost crescut la 16 KB, acest lucru având un impact direct asupra performantei; el este înca extrem de mic comparat cu procesoarele AMD, care detin un cache total (date + instructiuni) de 128 KB. Totusi, acest trace cache este vital pentru un procesor cu un pipeline lung, cum este Pentium 4, un cache conventional chiar si mult mai mare ar fi putut dezavantaja procesoarele Intel. În plus, L1 cache-ul lui Prescott a fost puternic optimizat, având un hit rate (probabilitatea ca informatiile cerute sa se afle în cache) mai mare decât la predecesori.
Cache-ul L2 este de asemenea o zona de memorie care stocheaza date temporare, însa rolul sau este diferit, în functie de relatia sa cu L1. În momentul umplerii cache-ului L1 este solicitat nivelul al doilea, în care sunt depuse informatiile mai rar folosite, sa le numim reziduale (desemnate conform unui algoritm numit LRU - Least Recently Used), urmând ca datele considerate mai importante sa fie aduse în spatiul liber creat în L1. Daca informatia copiata anterior din L1 în L2 redevine utila, ea este readusa în L1, consumându-se din nou timp pretios (se creeaza alta informatie reziduala ce este copiata în L2, creându-se loc în L1 pentru noua informatie pretioasa, fosta reziduala). De ce nu este prelucrata direct în L2? Pentru ca sunt sanse foarte mari ca informatia sa fie necesara de un numar mare de ori, fiind mai eficienta copierea ei într-o zona de memorie mai rapida decât mentinerea sa într-una lenta. Aceasta relatie dintre cele doua nivele de cache o numim exclusiva.
O alta metoda elimina necesitatea transferului între L1 si L2 datorat celei dintâi situatii expuse mai sus. Aceasta datorita faptului ca L2 contine, pe lânga informatiile reziduale, si imaginea completa a nivelului 1 de cache, nemaifiind necesara copierea informatiei din L1 a datelor considerate inutile pentru moment. În acest caz, avem de-a face cu o relatie inclusiva între cele doua nivele. O consecinta directa este faptul ca o relatie inclusiva implica o dimensiune a L2 cache-ului mai mare decât cea a nivelului 1. În plus, dimensiunea totala a cache-ului este mai mica decât suma celor doua componente ale sale. Mai exact, cache-ul total este egal cu L1 + (L2 – L1) = L2. Avantajul vitezei a decis compania Intel sa implementeze acest tip de cache în toate procesoarele sale începând cu Pentium Pro si terminând (deocamdata) cu Prescott. Dimensiunea cache-ului L2 este de 256 KB la primul Pentium 4 (Willamette), 512 KB la Northwood si 1 MB la Prescott. Dupa cum v-ati dat seama, în privinta lui L1 se merge pe ideea de viteza mare si dimensiune mica, el fiind folosit mult mai intens decât L2. Pentru acesta din urma se prefera o viteza mai redusa dar o dimensiune mai mare, L2 fiind de zeci de ori mai încapator decât L1.
Relatia exclusiva este caracteristica procesoarelor din familia K7 (Athlon) pe Socket A si AMD64, care au o dimensiune a cache-ului L1 comparabila cu cea a lui L2 dar eficienta acestuia din urma este destul de redusa. Chiar daca avem de-a face cu o dimensiune dubla fata de predecesor, atât (partial) pentru L1 cât si pentru L2, noul model de Pentium 4 are o latenta mai mare a cache-ului. Motivul este faptul ca ambele nivele de cache ruleaza la frecventa interna a procesorului. Cu alte cuvinte, frecventele uriase pentru care este proiectat Prescott trebuie sa fie suportate si de cache, iar pentru aceasta sunt necesari timpi „morti” suplimentari sau costuri de fabricatie mai mari. Intel a preferat prima varianta.

Cât de rapid e intermediarul?

Latenta reprezinta timpul (masurabil în cicluri de tact) scurs de la solicitarea unei operatii pâna la executarea efectiva a acesteia. Pentru cache-ul L1, acest numar este de doua cicluri la Pentium 4 Northwood si de patru cicluri la Prescott. Nivelul doi de cache detine o latenta de 19 cicluri pentru Northwood si 28 pentru Prescott. Cu toate acestea, avantajul (partial pentru L1, total pentru L2) dublarii cache-ului este probabil superior dezavantajului scaderii eficientei sale. Aceasta se datoreaza frecventei mari a procesorului, deoarece importanta unui cache mare creste odata cu cresterea diferentei dintre viteza CPU-ului si cea a memoriei. Sa vedem si de ce.
Daca un procesor poate face multe, un singur lucru nu poate: sa stocheze date (excluzând cache-ul). Pentru aceasta, este nevoie de memoria sistemului. Spre exemplu, daca procesorul are de adunat 1000 de numere, el le va solicita pe rând, primind informatiile si oferind imediat rezultatul cerut. Dar ce se întâmpla când în algoritm apare, dupa terminarea adunarii, solicitarea de a refolosi cel de-al 537-lea numar din sirul de 1000? Procesorul ar trebui sa ceara memoriei elementul cu numarul de ordine 537. Însa câte cicluri de tact trec de la efectuarea cererii pâna la obtinerea informatiei? Daca procesorul ruleaza la peste 3 GHz iar memoria la câteva sute de MHz, este usor de înteles ca solutia aceasta pune procesorul în situatia de a astepta rezultatul în loc sa execute alte operatii, ceea ce duce, evident, la scaderea performantelor. Situatia reala este alta: al 537-lea numar se afla în cache, alaturi de celelalte elemente ale sirului si de multe alte informatii recent utilizate, durata obtinerii valorii acelui element fiind astfel mult mai mica. Probabilitatea ca o instructiune sau o variabila recent folosita sa fie din nou necesara într-un interval scurt este foarte mare.
Cu cât frecventa procesorului este mai mare, cu atât diferenta dintre viteza acestuia si cea a memoriei creste si, pe de alta parte, cu atât procesorul va solicita mai rapid informatii. Daca cache-ul nu este suficient de mare, acesta se va umple rapid si procesorul va trebui sa ceara memoriei ceea ce îsi doreste. Pentru a se evita aceasta situatie, a carei frecventa de aparitie creste odata cu cresterea frecventei procesorului, trebuie crescuta dimensiunea cache-ului. Din pacate, aplicatiile de azi sunt mai sensibile la cresterea latentei cache-ului decât la cresterea dimensiunii sale, astfel ca, cel putin din punct de vedere al cache-ului level 2, Northwood este mai rapid decât Prescott.


Ce limbi vorbeste?

O alta caracteristica a lui Prescott (dar si a altor procesoare din familia P4) este HyperThreading-ul. Acesta reprezinta, în esenta, un set de instructiuni capabil sa simuleze functionarea procesorului în mod dual, software-ul comportându-se ca si cum în sistem ar fi prezent, fizic, un al doilea CPU. S-a dovedit faptul ca doua sarcini diferite, cum ar fi doua aplicatii sau doua thread-uri (ramuri) ale aceleiasi aplicatii lucreaza mai rapid în acest mod, cu un minim de suport atât hardware cât si software, motivul fiind faptul ca multe zone ale procesorului nu sunt folosite la adevaratul potential când executa o singura sarcina. De aceea, Intel a implementat tehnologia HyperThreading în ultimele procesoare Northwood, precum si în majoritatea modelelor de Prescott. Însa sporul maxim de viteza se obtine doar atunci când aplicatiile sunt optimizate pentru acest mod de lucru, în caz contrar putând fi sesizate chiar si scaderi de performanta. Desi aceasta tehnologie nu este specifica doar lui Prescott, am descris-o pentru a putea fi înteles paragraful urmator. De remarcat însa ca exista versiuni de Prescott fara aceste instructiuni.
În 1997, Intel a introdus instructiunile MMX (MultiMedia eXtensions), cu scopul de a accelera aplicatiile multimedia optimizate pentru acestea. MMX a fost extins cu SSE (Streaming SIMD Extensions), apoi cu SSE2 odata cu Pentium 4 iar Prescott a introdus SSE3, ce cuprinde un numar mic de instructiuni în comparatie cu precedentele versiuni, nefiind decât o completare a acestora. Nu este deloc o exagerare sa afirmam ca SSE3 contine ceea ce Intel a uitat sa implementeze în SSE si SSE2. SSE3 ofera avantaje minore diverselor sarcini ale aplicatiilor multimedia, cum ar fi compresia video. Pe lânga cele 11 instructiuni diverse, destinate operatiilor cu numere complexe, conversiei integer-FPU si altele, ultimele doua optimizeaza modul de operare HyperThreading dar necesita suport din partea sistemului de operare. Asteptam cu interes dezvoltarea software-ului care sa profite de SSE3, Intel punând la dispozitie versiunea a opta a compilatorului propriu de C++, care „stie” de SSE3. Sporul de performanta adus ar putea atinge 10 procente, SSE3 nefiind altceva decât unul din numeroasele avantaje minore ale lui Prescott, însa sub care daca tragem linie obtinem ceva remarcabil. Asta daca ar fi vorba doar de avantaje...

Conductele

Poate cel mai important aspect legat de noul Prescott este dat de pipeline (în traducere - conducta). Acesta reprezinta suma unor etape pe care instructiunile trebuie sa le parcurga pâna la obtinerea rezultatului final. Pipeline-ul este împartit în stagii, fiecare având o sarcina bine definita. Iata un exemplu de pipeline simplu, fiecare stagiu ocupând exact timpul unui ciclu de tact.

stagiul 1: fetcher – pregateste urmatoarea instructiune
stagiul 2: decoder – decodifica urmatoarea instructiune
stagiul 3: ALU – executa instructiunea
stagiul 4: retire unit – aduce rezultatul înapoi în memorie

Desigur, toate aceste operatii puteau fi executate neorganizat, însa pentru un pipeline cu patru stagii avem patru operatii care sunt realizate simultan în locul uneia singure. Si nu trebuie înteles faptul ca fiecare pipeline este legat de aceeasi instructiune, ci dimpotriva. Spre exemplu, fetcher-ul pregateste instructiunea de desenare a unei ferestre, decoder-ul este ocupat cu decodificarea unei instructiuni de desenare a unui caracter în acea fereastra, ALU-ul calculeaza pozitia icon-ului în interiorul ferestrei iar retire unit-ul returneaza memoriei rezultatul copierii unor fisiere în background. Desigur, fiecare instructiune trebuie sa treaca prin toate etapele pipeline-ului dar nu e necesar ca la un moment dat pipeline-ul sa fie plin cu aceeasi instructiune. În caz ca nu exista simultan mai multe instructiuni de prelucrat (situatie practic imposibila pentru ca procesorul are permanent ceva de lucru), doar un singur stagiu al pipeline-ul va fi ocupat, ceea ce ne ofera o viteza identica cu cea observata în executia secventiala.
Pipeline-ul a fost gândit tocmai pentru a oferi posibilitatea executiei simultane a mai multor instructiuni si, în cazul ideal, performanta este multiplicata de un numar de ori dat de lungimea pipeline-ului. Astfel, daca procesorul are de executat 100 de operatii, fiecare necesitând câte patru stagii, vor fi necesare doar 100 de cicluri de tact în locul a 400, pe fiecare ciclu fiind executate câte patru operatii. Din pacate, situatia ideala nu este întâlnita niciodata pentru ca instructiunile depind unele de altele mai mult decât pare la prima vedere. Sa presupunem ca plecati de acasa cu masina personala si la jumatatea drumului va dati seama ca nu mai aveti benzina. Cum nu este nici o benzinarie prin zona si cum nimeni nu se ofera sa va tracteze, trebuie sa asteptati pe cineva sa va aduca benzina. Drept urmare, veti astepta câteva ore în trafic, incomodându-i pe ceilalti soferi, eventual va veti retrage la marginea drumului pentru a evita neplacerile pricinuite. Si cu cât drumul pe care îl aveti de parcurs este mai lung, cu atât cresc sansele sa ramâneti fara combustibil. Acelasi lucru se întâmpla si cu o instructiune daca ea nu poate fi executata decât dupa ce primeste de la alta un rezultat: ea va ramâne blocata în pipeline pâna când primeste unda verde sau va fi eliminata din pipeline, executia ei fiind amânata si lasând loc altor instructiuni care pot fi executate la acel moment. Este evident ca sansele ca acest eveniment sa aiba loc cresc odata cu cresterea numarului de stagii, tot mai multe instructiuni fiind „blocate în trafic”. Situatia descrisa duce la aparitia timpilor morti, în care procesorul nu se încalzeste si de care se poate profita, crescându-i-se frecventa.
Un procesor care îsi propune sa atinga performanta maxima la o frecventa data va realiza un compromis între avantaje si dezavantaje, fiind dotat cu un numar relativ redus de stagii. Daca scopul este atingerea de frecvente mari, netinându-se seama de performanta, atunci se va realiza un procesor cu un numar imens de stagii al pipeline-ului, procesor care sa „zaca” nefolosit o buna parte din timp, ceea ce va duce la scaderea drastica a vitezei raportata la frecventa. Exact acest lucru a realizat Intel, care a crescut numarul de stagii odata cu aparitia primului Pentium 4 (Willamette): 20 fata de 10 la Pentium III. Rezultatul a fost evident: cu toate îmbunatatirile aduse de noua arhitectura (PSB 400 fata de 133, SSE2 si altele), un Pentium 4 la 1.5 GHz era depasit deseori de un Pentium III la 1 GHz, semn ca dezavantajul datorat pipeline-ului lung nu este compensat de frecventa ridicata. O situatie similara o întâlnim si la Prescott, al carui numar de pipeline-uri a ajuns la 31 de stagii. Totodata, avem si avantaje: un cache dublu, instructiuni SSE3, etc, elemente concepute sa afecteze pozitiv viteza, dar pe alte cai. Totul pentru a se putea atinge frecvente mari, de ordinul a 4-5 GHz, frecvente irezistibile pentru orice cumparator neavizat.
Un procesor clasic executa fiecare instructiune în ordinea fireasca, asteptând terminarea fiecareia pâna sa treaca la executia celei urmatoare. Un procesor „inteligent” se bazeaza pe faptul ca timpii morti pot fi folositi pentru executia urmatoarei instructiuni. Ce se întâmpla atunci când instructiunea curenta depinde de cea precedenta, fiind necesara obtinerea rezultatului de pe urma executiei acesteia? Un caz clasic este acela al unui bloc if-then-else din cadrul oricarui limbaj de programare. Pentru executia unei anumite ramuri trebuie executata instructiunea if, dupa care se ia o decizie: se merge pe ramura A sau B. Exemplu:
     if x=y then {ramura A}
     else {ramura B}
Cu ajutorul unitatii de predictie (branch predictor), procesorul va executa, bazându-se pe „experientele” precedente, ramura care are sansele cele mai mari sa fie adevarata, fara a evalua conditia x=y. Cu cât algoritmul predictiei este mai bun, cu atât acuratetea ei este mai mare iar cazurile în care este aleasa ramura gresita sunt mai rare. (Nu trebuie înteles faptul ca, la alegerea ramurii gresite, rezultatul furnizat va fi incorect; situatia doar va genera timpi suplimentari.) Pentru Prescott, Intel a îmbunatatit predictia, motivul fiind faptul ca un pipeline mai lung avea nevoie stringenta de acest lucru. Modificarile sunt minore dar importante si de natura calitativa, nu cantitativa. Si anume, nu a fost marit Branch Target Buffer-ul (spatiul de memorie din procesor destinat depozitarii actiunilor precedente, pe baza carora algoritmul sa prevada actiunile viitoare) ci algoritmul a fost optimizat.
O alta unitate a procesorului este scheduler-ul. Acesta, ca si branch predictor-ul, este conceput pentru a creste eficienta CPU-ului, pentru a-l determina sa lucreze la potentialul maxim de care dispune. De data aceasta nu este vorba de ramuri cu instructiuni ce vor fi probabil executate ci de unele care vor intra sigur în executie. Procesoarele moderne detin mai multe unitati independente care îndeplinesc aceeasi sarcina (spre exemplu, toate modelele de Pentium 4 detin trei unitati de calcul cu numere întregi – ALU), însa fara acest scheduler (to schedule = a programa, cu sensul de a stabili ceva la un anumit moment), nu ar fi activa decât o singura unitate la un moment dat. Sa presupunem ca avem de efectuat trei adunari, toate urmând a fi executate de câte o unitate ALU. Dar ce ne facem când instructiunile depind una de alta, precum se poate vedea în exemplul urmator:
     1. a = 1 + 2
     2. b = a + 4
     3. c = b – a
Este clar ca numai dupa executia primei instructiuni va putea fi executata cea de-a doua si numai dupa executia primelor doua va putea fi executata cea de-a treia. Ceea ce înseamna ca o singura unitate ALU din cele trei va fi folosita, procesorul rulând la o treime din potential. Aici intervine scheduler-ul, care programeaza executia altor instructiuni, nelegate de cele de mai sus, dând astfel câte o sarcina fiecarei unitati ALU. Prescott a necesitat modificari si în aceasta privinta, pentru a compensa cresterea numarului de stagii al pipeline-ului. Cum arhitectura curenta nu permite o modificare puternica a acestei unitati, schimbarile au fost minore.

Cum sta cu matematica?

Numarul de unitati a ramas acelasi ca la precedentele modele de P4. Segmentul ALU (Arithmetic and Logic Unit), cel care se ocupa cu calcule legate de numere întregi, a ramas divizat în trei segmente care pot prelucra datele si instructiunile independent, conform celor descrise în paragraful anterior. Doua dintre ele lucreaza la o viteza dubla fata de restul unitatilor (sunt double pumped), de aceea operatiile se executa foarte rapid. Odata cu Prescott, Intel a încercat sa elibereze al treilea ALU (cel lent) de sarcinile pe care oricum le îndeplinea cu greutate, oferind unitatilor ALU double pumped mai multe sarcini. Astfel, operatiile de tip shift si rotate erau executate de ALU-ul lent, acum ele au fost preluate de celelalte doua mai rapide.
Un exemplu practic de îmbunatatire este acela în care sunt aplicate unui numar binar operatii de multiplicare cu 2 (10 binar), caz tipic de shift în care este suficienta deplasarea cu câte un pas a fiecarui bit. De asemenea, înmultirile sunt acum realizate de unitatea FPU (Floating Point Unit), care chiar daca teoretic este mai lenta decât ALU-ul, este specializata în astfel de operatii si poate furniza rezultatele mai rapid.

Dar cu tensiunile?

Se stie ca prin cresterea „finetii” tehnologiei se pot obtine, pe de o parte temperaturi de rulare mai scazute si, pe de alta parte, frecvente mai mari de functionare. Sa ne amintim de P4 Willamette (0.18 microni) care se oprea fara drept de apel la 2 GHz pe când Northwood (0.13 microni) a atins 3.4 GHz. Mai mult, necesarul de tensiune de functionare scade, de la 1.75V pentru Willamette s-a ajuns la 1.5V pentru Northwood, iar Prescott coboara pâna la 1.287V. Pe de alta parte, arhitectura interna influenteaza puternic factorii putere disipata si temperatura de functionare, deci ar fi gresit sa afirmam ca, indiferent de alte considerente, un CPU construit pe baza unei tehnologii mai „fine” si rulând la un voltaj mai mic va fi mai rece. Ca sa nu o mai lungim, Prescott este un procesor mai fierbinte decât se dorea a fi, care consuma mult. La 3.4 GHz, un Northwood disipa 89W fata de 103W în cazul lui Prescott. Chiar daca acesta din urma este special conceput pentru frecvente mari, este nevoie de masuri speciale de precautie: în primul rând, datorita consumului excesiv, placile de baza trebuie sa suporte acest consum, în al doilea rând sistemul de racire trebuie sa fie foarte bine pus la punct.
În fine, Prescott este compatibil cu standardul VRM 10.0 (VRM = Voltage Regulator Module), ceea ce îi confera câteva avantaje, printre care posibilitatea selectarii tensiunii în pasi mai mici (0.0125V fata de 0.025V la predecesori) si Dynamic VID, adica posibilitatea ca procesorul sa-si schimbe tensiunea „on the fly”, nu doar din BIOS, cu utilitate evidenta în cazul sistemelor mobile. Dezavantajul: toate placile de baza trebuie sa suporte acest standard, deci placile vechi nu au nici o sansa sa lucreze cu Prescott.
Cum e ambalat?
Desi nu are legatura cu arhitectura lui Prescott, mentionam ca Intel a introdus un nou mod de a „împacheta” procesorul, denumit LGA775, socket-ul purtând denumirea de Socket T. În trecut, modul µPGA a dominat modelele acestei companii, reprezentat de Socket 478. Principiul, folosit la toate procesoarele de la 80386 pâna în prezent, era clar: spatele chip-ului cuprindea un numar mare de pini care erau inserati într-un socket, realizându-se astfel
contactul. Noul mod de împachetare LGA (Land Grid Array) elimina acesti pini (cel putin partea vizibila a acestora), contactul realizându-se prin alaturarea directa a procesorului de socket. Astfel, îndoirea sau ruperea pinilor nu mai poate avea loc, în schimb socket-ul poate fi deteriorat destul de usor prin montarea repetata a procesoarelor. Odata cu aparitia acestui mod de împachetare, Intel a schimbat si modul de a marca produsele sale. Daca concurentul sau, AMD, foloseste de multa vreme alta unitate de masura (rating-ul) pentru a caracteriza procesoarele, Intel a utilizat pâna acum modul consacrat, si anume specificarea frecventei de functionare.
Recent, aceasta politica a fost schimbata, locul frecventei fiind luat de un numar; de exemplu, Pentium 4 550 desemneaza un P4 ce ruleaza la 3.40 GHz. Modelele cu sufixul J (de exemplu 550J) beneficiaza de tehnologia antivirus XD (eXecute Disable), cunoscuta si ca EDB (Execute Disable Bit) sau NX (No eXecute), care asigura o minima protectie împotriva celor mai uzuali virusi. Practic, sistemul de operare (Windows XP SP2, de exemplu) se foloseste de aceasta functie a procesorului pentru a marca diferite segmente de memorie ca fiind neexecutabile. Astfel, doar codurile marcate în mod explicit ca executabile pot fi rulate, virusii bazându-se, în general, tocmai pe aceasta slabiciune a sistemului, de a putea rula orice cod din orice zona de memorie. Tehnologia a fost pâna acum implementata de Intel doar în modelele pe 64 de biti (Itanium), iar AMD a fost mai „sprinten”, fiind prima companie care a introdus într-un procesor de larg consum aceasta tehnica.

Câte Prescott-uri avem?

Exista pâna în prezent câteva revizii ale lui Prescott, denumite stepping-uri, diferentele dintre acestea fiind minore sub aspectul functionalitatii si inexistente când vine vorba de performante. Prima revizie (uzuala - deoarece au existat si reviziile A0 si B0 dar informatiile despre acestea sunt practic inexistente), C0, suferea de boli ale copilariei, procesoarele ce purtau acest însemn fiind extrem de fierbinti si producând diverse neplaceri. Astfel, cei care doreau sa atinga maximul de performanta prin overclocking erau dezamagiti, noul P4 neputând face fata temperaturilor mari. Mai mult, placile de baza cu regulatoare de tensiune mai slabe nu faceau fata curentilor mari, consumul de putere putând depasi 100W, stresând în acelasi timp si sursa sistemului. De asemenea, o mai mare atentie trebuia acordata fluxului de aer din carcasa, procesorul fiind acum o sursa enorma de caldura, putând afecta buna functionare a sa si a componentelor din jurul sau daca nu erau luate masuri de precautie. Tocmai de aceea, Intel a specificat în mod expres temperatura maxima ambianta la care procesoarele sale pot lucra: 38 de grade. Intel a remediat problema si a introdus a doua revizie, denumita D0, îmbunatatind eficienta functionarii tranzistorilor care, odata cu trecerea la o tehnologie de fabricatie tot mai mica, generau „pierderi de putere” (power leakage).
Cea mai noua revizie, numita (cum altfel?) E0, îmbunatateste si mai mult caracteristicile termice ale procesoarelor însa de data aceasta sporul este minor. Aspectele mai importante ale lui E0 constau în primul rând în adaugarea de facilitati suplimentare, cum ar fi Execute disable sau XD - tehnologia antivirus de care vorbeam mai devreme, Enhanced Halt State - facilitate care permite ajustarea tensiunii de alimentare a procesorului în mod dinamic, scazând-o în momentul în care nu este nevoie de putere de procesare, fapt ce conduce la un consum de putere si caldura degajata mai scazute si Thermal Monitor 2 - functie prin care se poate ajusta frecventa procesorului în cazul în care temperatura sa depaseste pragul maxim admis – aceasta spre deosebire de senzorul termic initial, care „punea procesorul pe tusa” în totalitate ori de câte ori temperatura depasea limita.


Pe lânga toate acestea, în aceeasi perioada cu introducerea noii revizii, Intel a adaugat în procesoarele sale suport pentru EM64T (Extended Memory 64-bit Technology), motiv pentru care majoritatea chip-urilor E0 detin EM64T. Aceasta din urma reprezinta raspunsul lui Intel la tehnologia AMD64 care deja începuse sa „prinda” pe piata server-elor, ce oferea în plus registri si mod de adresare pe 64 de biti.
Aceasta arhitectura este compatibila cu cea AMD64 si incompatibila cu cea pe care Intel a promovat-o mult timp prin seria de procesoare Itanium, IA64. Practic, EM64T este o extensie a setului IA32, toate procesoarele compatibile EM64T putând rula fara probleme aplicatii IA32, pe când procesoarele Itanium ruleaza extrem de lent codul pe 32 de biti deoarece IA64 reprezinta o arhitectura complet noua. Intel a tinut mult timp secret acest „supliment”, aproape sigur prezent dar dezactivat înca de la prima revizie a lui Prescott, motivul principal fiind promovarea de catre al sau concurent a aceleiasi tehnologii, iar setul de instructiuni „made in Santa Clara” se numea, de câtiva ani, IA64. Pe când EM64T nu este decât o copie a instructiunilor dezvoltate de texani, fiind pentru prima data când gigantul californian a realizat o clona a unei tehnologii AMD.
Ne putem pune întrebarea de ce Intel a implementat în procesoarele sale aceasta tehnologie care nu-i apartine, istoria spunând ca tendinta este inversa, AMD copiind sau urmând sa copieze fiecare set de instructiuni Intel, începând cu MMX si terminând cu SSE3. Raspunsul este legat de software-ul conceput pentru AMD64, ce a devenit din ce în ce mai raspândit, existând versiuni ale sistemelor de operare destinate acestei arhitecturi atât de Windows XP si 2003 Server cât si de Linux (în diverse distributii, precum Red Hat, SuSE, Fedora Core, Gentoo, Mandrake etc).

Alte procesoare din familia P4

Celeron este numele comercial al unui procesor în mare parte identic cu versiunea „de prim rang” dar care sufera de anumite limitari. Scopul este evident: costuri mai scazute, deci acoperirea unei categorii din piata dornica de un pret foarte mic, pentru care performantele conteaza mai putin.
Primul Celeron a aparut la începutul anului 1998, fiind o varianta de Pentium II cu performante ceva mai mici. Nu vom insista asupra acestei perioade ci vom mentiona ca Celeron a fost omniprezent pe piata de atunci si pâna în prezent. Desi arhitectura sa a suferit schimbari majore, fiecare model de Celeron a avut la baza nucleul fratelui mai mare. În privinta versiunii care „se trage” din Pentium 4, limitarea a fost legata de trei aspecte: în primul rând, cache-ul L2 a fost redus la 128 KB (fata de 256 KB pentru P4 Willamette si 512 KB pentru P4 Northwood), acest lucru afectând puternic performantele. Chiar daca diferenta nu pare colosala, trebuie tinut cont ca prima parte a acestui cache afecteaza cel mai mult viteza de lucru; astfel, cresterea de la 256 la 512 KB conteaza mult mai putin decât cresterea de la 128 la 256 KB. Al doilea factor este frecventa FSB. Primele versiuni de P4 (Willamette) rulau cu acest bus la 400 MHz iar a doua versiune, P4 Northwood, l-a crescut la 533 si apoi la 800 MHz. Însa Celeron a ramas la 400 MHz, ceea ce reprezinta a doua limitare, totusi nu atât de drastica în comparatie cu cea descrisa anterior. Al treilea factor, si putin important, este absenta functiei HyperThreading.
Celeron a existat atât în versiune cu nucleu Willamette cât si Northwood. Specificatiile sale fiind similare (afara de tehnologia folosita – 0.18 si respectiv 0.13 microni), performantele au fost identice la frecventa identica, adica relativ slabe în comparatie cu Pentium 4 sau chiar cu versiunea low-end de la AMD, si anume Duron. Astfel, Celeron a capatat o reputatie negativa, fiind recomandat
recomandat doar utilizatorilor care doresc neaparat un procesor Intel dar dispun de fonduri limitate.
Celeron D este numele noului Celeron, având la baza nucleul Prescott. Aceasta înseamna ca toate aspectele enuntate mai devreme care privesc Pentium 4 Prescott, îl privesc si pe Celeron D. Diferentele fata de acesta constau, în principal, în absenta a trei sferturi din cache-ul L2, dimensiunea sa fiind de 256 KB, dublu fata de Celeron-ul vechi. În plus, FSB-ul a fost limitat la 533 MHz (fata de majoritatea P4 Prescott-urilor care lucreaza la 800 MHz), dar cu 33% mai mult decât la Celeron. Drept urmare, performantele sporite fata de varianta veche transforma acest Celeron D într-un procesor cât se poate de decent pentru orice aplicatie.
Pentium 4 Extreme Edition si-a facut aparitia datorita nevoii lui Intel de a concura (a se întelege cel putin a egala, de preferinta a depasi) cel mai rapid procesor de la AMD, si anume Athlon 64 FX-51. Acesta dispunea de avantaje minore dar observabile în cifre în cadrul diverselor teste realizate de reviste si site-uri. Si aici un avantaj de 2-3%, desi nesemnificativ în realitate, poate decide succesul sau insuccesul unui produs. Asadar, Intel a introdus un model de Pentium 4 cu un al treilea nivel de cache, acesta având o dimensiune de 2 MB. Desigur, acest L3 a contat extrem de putin în materie de performanta dar a facut diferenta; pretul, în schimb, a fost stabilit la niste valori exorbitante, de unde si succesul foarte redus al acestui model. Arhitectura lui P4-EE a fost preluata de la Gallatin, un Northwood usor modificat. În plus, a fost introdusa si o versiune cu un FSB de 1066 MHz, ea reprezentând la data lansarii singurul model de Pentium 4 care rula la aceasta frecventa de bus.

Concluzii

tehnologie de 0.09 microni (90 nm) Strained Silicon;
pipeline crescut cu circa 50%, ceea ce determina o scadere masiva de performante dar si un potential crescut privind frecventa de functionare;
cache pe de o parte îmbunatatit, prin dublarea sectiunii de date a nivelului 1 si în totalitate a nivelului 2 si prin cresterea eficientei sale, pe de alta parte suferind de handicapul cresterii latentei;
branch predictor-ul si scheduler-ul îmbunatatite, rezultând o predictie si o executie a instructiunilor mai eficienta; totusi este vorba de optimizari strict necesare unui pipeline atât de lung;
optimizarea executiei anumitor operatii, precum înmultirile;
13 instructiuni noi, cuprinse în setul SSE3, care pot aduce avantaje minore în anumite aplicatii, cu sprijinul acestora;
tehnologiile antivirus XD si EM64T, implementate doar în ultimele modele.




XF Project - Stiri, teste, review-uri, tehnologii hardware