Arhitectura microprocesorului: tipuri principale, dezvoltare, avantaje și dezavantaje. Arhitecturile de procesoare Intel din toate timpurile. Arhitectura procesoarelor moderne

principii generale de funcționare (X86 CPU FAQ 1.0)
Disclaimer

Probabil, motivul cel mai precis pentru apariția acestui material poate fi formulat după cum urmează: „nu este atât de necesar să existe, ci mai degrabă este ciudat că nu a existat încă”. Și într-adevăr: în comentariile la rezultatele testelor, operăm în mod constant cu concepte precum „capacitatea cache”, „viteza magistralei procesorului”, „suport pentru seturi de instrucțiuni extinse”, dar nu există un singur articol pe site care să conțină explicații. a tuturor acestor termeni. Această omisiune, desigur, ar fi trebuit corectată. Acest articol, intitulat „Întrebări frecvente privind procesorul x86”, este o încercare de a face exact asta. Desigur, unele dintre secțiunile sale pot fi atribuite nu numai procesoarelor x86, și nu numai versiunilor lor desktop (destinate instalării într-un PC), dar cu siguranță nu ne propunem un asemenea globalism. Prin urmare, vă rugăm să rețineți că, în sensul acestui material, cu excepția cazului în care se specifică altfel în mod explicit, cuvântul „procesor” înseamnă „un procesor x86 proiectat pentru instalare pe desktop-uri”. Poate că, în procesul de îmbunătățire și extindere ulterioară, în articol vor apărea secțiuni dedicate procesoarelor de server sau chiar procesoarelor altor arhitecturi, dar aceasta este o chestiune pentru viitor... Cuprins

Introducere

Cod și date: principiul de bază al procesorului

Așadar, dacă nu încercăm să prezentăm aici un „scur” curs de informatică pentru liceu, atunci singurul lucru pe care aș vrea să vă reamintesc este că procesorul (cu rare excepții) nu execută programe scrise în unele programari. limbaj (dintre care unul, tu, poate chiar știi), dar un fel de „cod mașină”. Adică, comenzile pentru acesta sunt secvențe de octeți localizați în memoria computerului. Uneori, o comandă poate fi egală cu un octet, uneori este nevoie de mai mulți octeți. Acolo, în memoria principală (RAM, RAM) se află și datele. Ele pot fi într-o zonă separată sau pot fi „amestecate” cu codul. Diferența dintre cod și date este că datele sunt ceea ce deasupra a ce Procesorul efectuează unele operații. Și codul sunt comenzile care îi spun, ce fel de operatie? el trebuie să producă. Pentru a simplifica, ne putem imagina programul și datele sale ca o secvență de octeți de o anumită lungime finită, localizați continuu (să nu complicăm lucrurile) într-o matrice de memorie comună. De exemplu, avem o matrice de memorie lungă de 1.000.000 de octeți, iar programul nostru (împreună cu datele) are octeți numerotați de la 1000 la 20.000. Alți octeți sunt alte programe sau datele lor, sau pur și simplu memoria liberă care nu este ocupată de nimic util.

Astfel, „codul mașină” este instrucțiunile procesorului aflate în memorie. Acolo se află și datele. Pentru a executa o instrucțiune, procesorul trebuie să o citească din memorie. Pentru a efectua o operație asupra datelor, procesorul trebuie să le citească din memorie și, eventual, după ce a efectuat o anumită acțiune asupra lor, să le scrie înapoi în memorie într-o formă actualizată (modificată). Comenzile și datele sunt identificate prin adresa lor, care este în esență numărul de serie al unei locații de memorie. Principii generale de interacțiune
procesor și RAM

Poate surprinde pe cineva că o secțiune destul de mare din FAQ dedicată procesorului x86 este dedicată explicării caracteristicilor funcționării memoriei în sistemele moderne bazate pe acest tip de procesor. Cu toate acestea, faptele sunt un lucru încăpățânat: procesoarele x86 în sine conțin acum atât de multe blocuri responsabile special pentru optimizarea muncii lor cu RAM, încât ar fi complet ridicol să ignorăm această conexiune strânsă. Se poate spune chiar acest lucru: deoarece soluțiile legate de optimizarea lucrului cu memorie au devenit parte integrantă a procesoarelor în sine, atunci memoria în sine poate fi considerată un fel de „anexă”, a cărui funcționare are un impact direct asupra vitezei. a procesorului. Fără a înțelege particularitățile interacțiunii dintre procesor și memorie, este imposibil de înțeles de ce un anumit procesor (acest sau acel sistem) execută programe mai lent sau mai rapid.

Controler de memorie

Deci, mai devreme, am vorbit deja despre faptul că atât comenzile, cât și datele intră în procesor din RAM. De fapt, totul este puțin mai complicat. În majoritatea sistemelor x86 moderne (adică computere bazate pe procesoare x86), procesorul ca dispozitiv nu poate accesa deloc memoria, deoarece nu are nodurile corespunzătoare. Prin urmare, se apelează la un dispozitiv specializat „intermediar” numit controler de memorie, care, la rândul său, se transformă în cipuri RAM situate pe modulele de memorie. Probabil ați văzut module - acestea sunt „scânduri” lungi și înguste de textolit (de fapt, plăci mici) cu un număr de microcircuite pe ele, introduse în conectori speciali de pe placa de bază. Rolul controlerului RAM este astfel simplu: servește ca un fel de „punte”* între memorie și dispozitivele care îl folosesc (apropo, acesta include nu numai procesorul, ci mai multe despre asta puțin mai târziu). De regulă, controlerul de memorie face parte din chipset - un set de cipuri care stă la baza plăcii de bază. Viteza schimbului de date între procesor și memorie depinde în mare măsură de viteza controlerului, aceasta este una dintre cele mai importante componente care afectează performanța generală a computerului.

* - apropo, controlerul de memorie este localizat fizic în chipset-ul, numit în mod tradițional „punte de nord”.

Autobuzul procesorului

Orice procesor este în mod necesar echipat cu o magistrală de procesor, care în mediul CPU x86 se numește de obicei FSB (Front Side Bus). Această magistrală servește ca canal de comunicare între procesor și toate celelalte dispozitive din computer: memorie, placă video, hard disk și așa mai departe. Cu toate acestea, așa cum știm deja din secțiunea anterioară, între memoria însăși și procesor există un controler de memorie. În consecință: procesorul comunică prin FSB cu controlerul de memorie, care, la rândul său, comunică printr-o magistrală specială (să-l numim, fără alte prelungiri, „magistrala de memorie”) cu modulele RAM de pe placă. Cu toate acestea, repetăm: deoarece procesorul x86 clasic are o singură magistrală „externă”, este folosit nu numai pentru lucrul cu memoria, ci și pentru comunicarea între procesor și toate celelalte dispozitive.

Diferențele dintre tradiționale
Arhitectură CPU x86 și K8/AMD64

Abordarea revoluționară a AMD constă în faptul că procesoarele sale cu arhitectura AMD64 (și microarhitectura, care se numește în mod convențional „K8”) sunt echipate cu multe magistrale „externe”. În acest caz, una sau mai multe magistrale HyperTransport sunt utilizate pentru comunicarea cu toate dispozitivele, cu excepția memoriei, și un grup separat de unul sau două (în cazul unui controler cu două canale) este utilizat exclusiv pentru funcționarea procesorului cu memorie. Avantajul integrării unui controler de memorie direct în procesor este evident: „calea de la miez la memorie” devine considerabil „mai scurtă”, ceea ce vă permite să lucrați cu RAM mai rapid. Adevărat, această abordare are și dezavantaje. Deci, de exemplu, dacă anterior dispozitivele le place hard disk sau plăcile video ar putea funcționa cu memorie printr-un controler dedicat, independent - apoi în cazul arhitecturii AMD64 sunt nevoiți să lucreze cu RAM printr-un controler situat pe procesor. Deoarece CPU din această arhitectură este singurul dispozitiv cu acces direct la memorie. De facto, în confruntarea „controller extern vs. integrat”, s-a dezvoltat paritatea: pe de o parte, pe acest moment AMD este singurul producător de procesoare desktop x86 cu un controler de memorie integrat, pe de altă parte, compania pare să fie destul de mulțumită de această soluție și nu are de gând să o abandoneze. În al treilea rând, Intel nu va renunța nici la controlerul extern și este destul de mulțumit de „schema clasică”, dovedită de-a lungul anilor.

RAM

Lățimea magistralei de memorie, controlere de memorie cu canale N

Începând de astăzi, toată memoria utilizată în sistemele desktop x86 moderne are o magistrală lată de 64 de biți. Aceasta înseamnă că într-un ciclu de ceas o cantitate de informații care este un multiplu de 8 octeți poate fi transmisă simultan pe această magistrală (8 octeți pentru magistralele SDR, 16 octeți pentru magistralele DDR). Singurul lucru care iese în evidență este memoria de tip RDRAM, care a fost folosită în sistemele bazate pe procesoare Intel Pentium 4 în zorii arhitecturii NetBurst, dar acum această direcție este recunoscută ca un punct mort pentru PC-urile x86 (apropo, aceeași companie Intel a avut o mână de lucru în acest sens, care la un moment dat a promovat activ acest tip de memorie). O anumită confuzie este cauzată doar de controlerele cu două canale, care asigură funcționarea simultană cu două magistrale separate pe 64 de biți, datorită cărora unii producători susțin o anumită capacitate de „128 de biți”. Aceasta, desigur, este pură profanare. Aritmetica la nivelul clasei I, din păcate, nu funcționează în acest caz: 2x64 nu este deloc egal cu 128. Da, fie doar pentru că chiar și cele mai moderne procesoare x86 (vezi secțiunea Întrebări frecvente „Extensiile pe 64 de biți ale arhitecturii clasice x86 (IA32)” de mai jos) nu pot funcționa cu o magistrală de 128 de biți și o adresare pe 128 de biți. Aproximativ: două drumuri paralele independente, fiecare de 2 metri lățime, pot asigura trecerea simultană a două mașini, de 2 metri lățime - dar în niciun caz una, de 4 metri lățime. În același mod, un controler de memorie cu canale N poate crește viteza de lucru cu datele de N ori (și apoi mai mult teoretic decât practic) - dar nu este în niciun fel capabil să crească capacitatea de biți a acestor date. Lățimea magistralei de memorie în toate controlerele moderne utilizate în sistemele x86 este de 64 de biți - indiferent dacă acest controler se află în chipset sau în procesorul însuși. Unele controlere sunt echipate cu două canale independente pe 64 de biți, dar acest lucru nu afectează în niciun fel lățimea magistralei de memorie - doar viteza de citire și scriere a informațiilor.

Viteza de citire și scriere

Viteza de citire și scriere a informațiilor în memorie este teoretic limitată doar de lățimea de bandă a memoriei în sine. De exemplu, un controler de memorie DDR400 cu două canale este teoretic capabil să ofere viteze de citire și scriere a informațiilor egale cu 8 octeți (lățimea magistralei) * 2 (număr de canale) * 2 (protocol DDR, care asigură transferul a 2 pachete de date per fiecare). ciclu de ceas) * 200"000"000 (frecvența reală de funcționare a magistralei de memorie este de 200 MHz, adică 200"000"000 de cicluri de ceas pe secundă). Valorile obținute în urma testelor practice, de regulă, sunt ușor mai mici decât cele teoretice: acest lucru se datorează designului „imperfect” al controlerului de memorie, plus cheltuielile generale (întârzieri) cauzate de funcționarea caching-ului. subsistemul procesorului însuși (vezi secțiunea despre memoria cache a procesorului de mai jos). Cu toate acestea, „captura” principală nu este nici măcar în suprapunerile asociate cu funcționarea controlerului și a subsistemului de stocare în cache, ci în faptul că viteza de citire sau scriere „liniară” nu este singura caracteristică care afectează viteza reală a procesorul cu RAM. Pentru a înțelege ce componente alcătuiesc viteza reală a procesorului și a memoriei, trebuie, pe lângă viteza liniară de citire sau scriere, să luăm în considerare și o asemenea caracteristică precum latenta.

Latența

Latența nu este mai mică caracteristică importantă din punctul de vedere al vitezei subsistemului de memorie, decât al vitezei de „pompare a datelor”, dar complet diferit, în esență. O viteză mare de schimb de date este bună atunci când dimensiunea sa este relativ mare, dar dacă avem nevoie de „încet câte puțin de la adrese diferite”, atunci latența vine în prim-plan. Ce este? În general, este timpul necesar pentru a începe să citiți informații de la o anumită adresă. Și într-adevăr: din momentul în care procesorul trimite o comandă de citire (scriere) către controlerul de memorie și până în momentul în care se efectuează această operație, trece o anumită perioadă de timp. Mai mult, nu este deloc egal cu timpul necesar transferului de date. După ce a primit o comandă de citire sau scriere de la procesor, controlerul de memorie îi „indică” adresa cu care dorește să lucreze. Accesul la orice adresă selectată aleatoriu nu poate fi realizat instantaneu, aceasta necesită un anumit timp. Apare o întârziere: adresa este specificată, dar memoria nu este încă pregătită să ofere acces la aceasta. În general, această întârziere se numește latență. Este diferit pentru diferite tipuri de memorie. De exemplu, memoria DDR2 are, în medie, latențe mult mai mari decât DDR (la aceeași frecvență de transfer de date). Ca urmare, dacă datele din program sunt localizate „haotic” și în „bucăți mici”, viteza de citire a acestora devine mult mai puțin importantă decât viteza de acces la „începutul bucății”, deoarece întârzierile la trecerea la următoarea adresă afectează performanța sistemului mult mai mult decât viteza de citire sau scriere.

„Competiția” între viteza de citire (scriere) și latență este una dintre principalele bătăi de cap pentru dezvoltatorii de sisteme moderne: din păcate, o creștere a vitezei de citire (scriere) duce aproape întotdeauna la o creștere a latenței. De exemplu, memoria de tip SDR (PC66, PC100, PC133) are în medie o latență mai bună (mai mică) decât DDR. La rândul său, DDR2 are o latență și mai mare (adică mai proastă) decât DDR.

Trebuie înțeles că latența „generală” a subsistemului de memorie depinde nu numai de sine, ci și de controlerul de memorie și locația acestuia - toți acești factori afectează și latența. De aceea, AMD, în procesul de dezvoltare a arhitecturii AMD64, a decis să rezolve problema latenței mari „dintr-o lovitură” prin integrarea controlerului direct în procesor - pentru a „scurta distanța” dintre nucleul procesorului și module RAM cât mai mult posibil. Ideea a fost un succes, dar la un cost ridicat: acum un sistem bazat pe un CPU cu arhitectură specifică AMD64 poate funcționa doar cu memoria pentru care este proiectat controlerul său. Acesta este, probabil, motivul pentru care Intel nu a decis încă să facă un pas atât de drastic, preferând să acționeze folosind metode tradiționale: îmbunătățirea controlerului de memorie din chipset și a mecanismului Prefetch din procesor (vezi mai jos pentru detalii).

În concluzie, observăm că conceptele de „viteză de citire/scriere” și „latență”, în general, se aplică oricărui tip de memorie - inclusiv nu numai DRAM clasică (SDR, Rambus, DDR, DDR2), ci și cache (vezi de mai jos). Procesor: Informații generale

Concept de arhitectură

Arhitectura ca compatibilitate de cod

Cu siguranță ați întâlnit adesea termenul „x86” sau „procesor compatibil Intel” (sau „compatibil IBM PC” - dar acesta este în legătură cu un computer). Uneori este folosit și termenul „compatibil cu Pentium” (de ce Pentium - veți înțelege puțin mai târziu). Ce se ascunde cu adevărat în spatele tuturor acestor nume? În acest moment, următoarea formulare simplă pare cea mai corectă din punctul de vedere al autorului: un procesor x86 modern este un procesor capabil să execute corect codul de mașină al arhitecturii IA32 (arhitectura procesoarelor Intel pe 32 de biți). Într-o primă aproximare, acesta este codul executat de procesorul i80386 (cunoscut în mod popular sub numele de „386”), dar setul principal de instrucțiuni IA32 a fost format în cele din urmă odată cu lansarea procesorului Intel Pentium Pro. Ce înseamnă „set de bază” și ce altele există? Mai întâi, să răspundem la prima parte a întrebării. „De bază” în acest caz înseamnă că folosind numai acest set de instrucțiuni, orice program care poate fi scris în general pentru un procesor x86 (sau IA32, dacă preferați) poate fi scris.

În plus, arhitectura IA32 are extensii „oficiale” (seturi de instrucțiuni suplimentare) de la dezvoltatorul arhitecturii în sine, Intel: MMX, SSE, SSE2 și SSE3. Există, de asemenea, seturi de comenzi extinse „neoficiale” (non-Intel): EMMX, 3DNow! și Extended 3DNow! - au fost dezvoltate de AMD. Cu toate acestea, „oficial” și „neoficial” în acest caz sunt un concept relativ - de facto, totul se reduce la faptul că unele extensii ale setului de instrucțiuni sunt recunoscute de Intel, ca dezvoltator al setului original, iar unele sunt nu, în timp ce dezvoltatorii de software folosesc ceea ce este mai bine pentru ei, totul se potrivește. Există o regulă simplă de bună etichetă atunci când vine vorba de seturi de instrucțiuni extinse: înainte de a le utiliza, programul ar trebui să verifice dacă procesorul le acceptă. Uneori apar abateri de la această regulă (și pot duce la funcționarea incorectă a programelor), dar în mod obiectiv aceasta este o problemă a unui software scris incorect, nu a unui procesor.

Pentru ce sunt seturile de comenzi suplimentare? În primul rând, pentru a crește performanța la efectuarea anumitor operațiuni. O comandă din setul suplimentar efectuează de obicei o acțiune care ar necesita program mic, constând din comenzi din setul principal. Din nou, de regulă, o instrucțiune este executată de procesor mai repede decât secvența pe care o înlocuiește. in orice caz 99% din timp, nu există nimic cu care să nu se poată face comenzile principale, nu se poate face folosind comenzi din setul suplimentar.

Astfel, verificarea menționată mai sus de către program pentru suportul seturilor de instrucțiuni suplimentare de către procesor ar trebui să îndeplinească o funcție foarte simplă: dacă, de exemplu, procesorul acceptă SSE, atunci vom număra rapid și folosind instrucțiuni din setul SSE. Dacă nu, vom număra mai încet, folosind comenzi din setul principal. Un program scris corect trebuie să acţioneze astfel. Cu toate acestea, acum aproape nimeni nu verifică procesorul pentru suport MMX, deoarece toate procesoarele lansate în ultimii 5 ani sunt garantate să accepte acest set. Pentru referință, iată un tabel care rezumă informații despre suportul diferitelor seturi de comenzi extinse de către diferite procesoare desktop (concepute pentru PC-uri desktop).

CPU
Intel Pentium II
Intel Celeron până la 533 MHz
Intel Pentium III
Intel Celeron 533-1400 MHz
Intel Pentium 4
Intel Celeron de la 1700 MHz
Intel Celeron D
Intel Pentium 4 eXtreme Edition
Intel Pentium eXtreme Edition
Intel Pentium D
AMD K6
AMD K6-2
AMD K6-III
AMD Athlon
AMD Duron până la 900 MHz
AMD Athlon XP
AMD Duron de la 1000 MHz
AMD Athlon 64 / Athlon FX
AMD Sempron
AMD Athlon 64 X2
VIA C3

*in functie de modificare

În prezent, toate programele desktop populare (sisteme de operare Windows și Linux, suite de birou, jocuri pe calculator etc.) sunt dezvoltate special pentru procesoare x86. Se rulează (cu excepția programelor „prost comportate”) pe orice procesor x86, indiferent de cine l-a făcut. Prin urmare, în locul termenilor „compatibil cu Intel” sau „compatibil cu Pentium” care vizează dezvoltatorul arhitecturii originale, au început să folosească un nume neutru: „procesor compatibil x86”, „procesor cu arhitectură x86”. În acest caz, „arhitectura” înseamnă compatibilitate cu un anumit set de instrucțiuni, adică se poate spune „arhitectura procesorului din punctul de vedere al unui programator”. Există o altă interpretare a aceluiași termen.

Arhitectura ca caracteristică a unei familii de procesoare

„Zhelezyachniki” - oamenii care lucrează în principal nu cu software, ci cu hardware, înțeleg „arhitectura” într-un mod ușor diferit (deși este mai corect că ceea ce ei numesc „arhitectură” se numește „microarhitectură”, dar de facto prefixul „ micro” este adesea omis). Pentru ei, „arhitectura CPU” este un anumit set de proprietăți inerente unei întregi familii de procesoare, de obicei produse pe parcursul multor ani (cu alte cuvinte, „designul intern”, „organizarea” acestor procesoare). Deci, de exemplu, orice specialist CPU x86 vă va spune că un procesor cu ALU care funcționează la frecvență dublă, o magistrală QDR, cache Trace și, eventual, suport pentru tehnologia Hyper-Threading este un „procesor cu arhitectură NetBurst” (nu fi alarmat de termeni nefamiliari - toti vor fi explicati putin mai tarziu). Iar procesoarele Intel Pentium Pro, Pentium II și Pentium III sunt „arhitectură P6”. Astfel, conceptul de „arhitectură” în raport cu procesoarele este oarecum ambiguu: poate fi înțeles atât ca compatibilitate cu un anumit set unic de instrucțiuni, cât și ca un set de soluții hardware inerente unui anumit grup destul de larg de procesoare. Desigur, un astfel de dualism al unuia dintre conceptele fundamentale nu este foarte convenabil, dar așa este și este puțin probabil ca ceva să se schimbe în viitorul apropiat...

Extensii pe 64 de biți ale arhitecturii clasice x86 (IA32).

Nu cu mult timp în urmă, ambii producători lideri de procesoare x86 au anunțat două tehnologii aproape identice* (cu toate acestea, AMD preferă să o numească arhitectură), datorită cărora procesoarele clasice x86 (IA32) au primit statutul de 64 de biți. În cazul AMD, această tehnologie a fost numită „AMD64” (arhitectură AMD pe 64 de biți), în cazul Intel - „EM64T” (tehnologie de memorie extinsă pe 64 de biți). De asemenea, bătrâni respectabili care sunt familiarizați cu istoria problemei folosesc uneori numele „x86-64” - ca denumire generală pentru toate extensiile pe 64 de biți ale arhitecturii x86, care nu sunt legate de mărcile înregistrate ale niciunui producător. De facto, folosirea unuia dintre cele trei denumiri date mai sus depinde mai mult de preferințele personale ale utilizatorului decât de diferențele reale - deoarece diferențele dintre AMD64 și EM64T se potrivesc pe vârful unui ac foarte subțire. În plus, AMD însuși a introdus numele de „brand” „AMD64” cu puțin timp înainte de anunțarea propriilor procesoare bazate pe această arhitectură și înainte de asta a folosit destul de calm „x86-64” mai neutru în propriile documente. Cu toate acestea, într-un fel sau altul, totul se rezumă la un singur lucru: unele registre interne de procesor au devenit pe 64 de biți în loc de 32 de biți, instrucțiunile de cod x86 pe 32 de biți și-au primit analogii pe 64 de biți, în plus, cantitatea de memoria adresabilă (inclusiv nu numai fizică, ci și virtuală) a crescut de multe ori (datorită faptului că adresa a dobândit un format de 64 de biți în loc de 32 de biți). Numărul de speculații de marketing pe tema „64 de biți” a depășit toate limitele rezonabile, așa că ar trebui să luăm în considerare meritele acestei inovații în special îndeaproape. Deci: ce s-a schimbat de fapt și ce nu?

* - Argumentele conform cărora Intel „a copiat cu nerăbdare EM64T de pe AMD64” nu rezistă criticilor. Și deloc pentru că nu este așa - ci pentru că nu este deloc „dezvăluit”. Există un astfel de concept: „acord de licență încrucișată”. Dacă are loc un astfel de acord, aceasta înseamnă că toate dezvoltările unei companii dintr-o anumită zonă devin automat disponibile pentru alta, la fel cum dezvoltările alteia devin automat disponibile primei. Intel a profitat de licențierea încrucișată pentru a dezvolta EM64T, folosind AMD64 ca bază (ceea ce nimeni nu l-a negat vreodată). AMD a profitat de același acord pentru a introduce suport pentru seturile de instrucțiuni suplimentare SSE2 și SSE3 dezvoltate de Intel în procesoarele sale. Și nu este nimic rușinos în asta: deoarece am fost de acord să „împărtășim” evoluțiile, înseamnă că trebuie să împărtășim.

Ce nu s-a schimbat? În primul rând, viteza procesoarelor. Ar fi o prostie flagrantă să presupunem că același procesor, la trecerea de la modul obișnuit de 32 de biți la modul de 64 de biți (și toate procesoarele x86 actuale acceptă neapărat modul de 32 de biți), va funcționa de 2 ori mai rapid. Desigur, în unele cazuri poate exista o oarecare accelerare de la utilizarea aritmeticii întregi pe 64 de biți - dar numărul acestor cazuri este foarte limitat și nu afectează majoritatea software-ului de utilizator modern. Apropo: de ce am folosit termenul „aritmetică întregi pe 64 de biți”? Dar pentru că blocurile de operațiuni în virgulă mobilă (vezi mai jos) în toate procesoarele x86 nu mai sunt de mult timp pe 32 de biți. Și nici măcar pe 64 de biți. Clasicul FPU x87 (vezi mai jos), care a devenit în sfârșit parte a procesorului în vremurile vechiului Intel Pentium pe 32 de biți - era deja pe 80 de biți. Operanzii instrucțiunilor SSE și SSE2/3 sunt pe 128 de biți! În acest sens, arhitectura x86 este destul de paradoxală: în ciuda faptului că formal procesoarele acestei arhitecturi sunt destul de pentru o lungă perioadă de timp a rămas pe 32 de biți - adâncimea de biți a acelor blocuri în care „b O„capacitate mai mare de biți” a fost cu adevărat necesară - a fost mărită complet independent de restul. De exemplu, procesoarele AMD Athlon XP și Intel Pentium 4 „Northwood” combinau unități care funcționau cu operanzi pe 32 de biți, 80 de biți și 128 de biți. Doar setul de instrucțiuni principal (moștenit de la primul procesor al arhitecturii IA32 - Intel 386) și adresarea memoriei (maximum 4 gigaocteți, fără a număra „perversiuni” precum Intel PAE) au rămas pe 32 de biți.

Astfel, faptul că procesoarele AMD și Intel au devenit „formal pe 64 de biți”, în practică ne-a adus doar trei îmbunătățiri: apariția comenzilor pentru lucrul cu numere întregi pe 64 de biți, o creștere a numărului și/sau adâncimii de biți a registrelor, și o creștere a volumului maxim de memorie adresabil. Notă: nimeni nu neagă beneficiile reale ale acestor inovații (mai ales a treia!). Așa cum nimeni nu neagă meritele AMD în promovarea ideii de „modernizare” (datorită introducerii procesoarelor x86 pe 64 de biți). Vrem doar să avertizăm împotriva așteptărilor excesive: nu ar trebui să sperați că un computer cumpărat „în clasa de preț VAZ” va deveni un „Mercedes extraordinar” fără a instala software pe 64 de biți. Nu exista miracole in lume...

Miezul procesorului

Diferențele dintre nucleele aceleiași microarhitecturi

Un „nucleu de procesor” (denumit de obicei pur și simplu „nucleu” pentru concizie) este o concretizare specifică a unei [micro]arhitecturi (adică, „arhitectură în sensul hardware al cuvântului”) care este standardul pentru o serie întreagă a procesoarelor. De exemplu, NetBurst este o microarhitectură care stă la baza multor procesoare Intel de astăzi: Celeron, Pentium 4, Xeon. Microarhitectura stabilește principii generale: o conductă lungă, utilizarea unui anumit tip de cache de cod de prim nivel (cache de urmărire) și alte caracteristici „globale”. Miezul este o realizare mai specifică. De exemplu, procesoare ale microarhitecturii NetBurst cu o magistrală de 400 MHz, un cache de 256 kilobyte de nivel al doilea și fără suport Hyper-Threading - aceasta este o descriere mai mult sau mai puțin completă a nucleului Willamette. Dar nucleul Northwood are un cache de al doilea nivel de 512 kilobytes, deși se bazează și pe NetBurst. Nucleul AMD Thunderbird se bazează pe microarhitectura K7, dar nu acceptă setul de instrucțiuni SSE, dar nucleul Palomino acceptă.

Astfel, putem spune că „nucleul” este o concretizare specifică a unei anumite microarhitecturi „în siliciu”, care are (spre deosebire de microarhitectura în sine) un anumit set caracteristici strict determinate. Microarhitectura este amorfă; descrie principiile generale ale designului procesorului. Nucleul, în mod specific, este o microarhitectură, „depășită” cu tot felul de parametri și caracteristici. Este extrem de rar ca procesoarele să schimbe microarhitectura păstrând în același timp același nume. Și, invers, aproape orice nume de procesor și-a „schimbat” nucleul de cel puțin mai multe ori pe parcursul existenței sale. De exemplu, denumirea comună serie procesoare AMD- „Athlon XP” este o microarhitectură (K7), dar până la patru nuclee (Palomino, Thoroughbred, Barton, Thorton). Diferite nuclee construite pe aceeași microarhitectură pot avea, printre altele, niveluri de performanță diferite.

Audituri

O revizuire este una dintre modificările nucleului, diferită foarte puțin de cea precedentă, motiv pentru care nu merită titlul de „nucleu nou”. De regulă, producătorii de procesoare nu fac mare lucru din lansarea următoarei revizuiri, aceasta se întâmplă „în stare de funcționare”. Deci, chiar dacă cumpărați același procesor, cu un nume și caracteristici complet asemănătoare, dar cu un interval de aproximativ șase luni, este foarte posibil ca de fapt să fie puțin diferit. Lansarea unei noi revizuiri este de obicei asociată cu unele îmbunătățiri minore. De exemplu, am reușit să reducem puțin consumul de energie, sau să reducem tensiunea de alimentare, sau să optimizăm altceva, sau au fost eliminate câteva erori minore. Din punct de vedere al performanței, nu ne amintim un singur exemplu în care o revizuire a nucleului să fie diferită de alta atât de semnificativ încât să fie logic să vorbim despre asta. Deși această opțiune este pur teoretic posibilă - de exemplu, unul dintre blocurile de procesor responsabile cu executarea mai multor comenzi a fost optimizat. Pentru a rezuma, putem spune că cel mai adesea nu merită să vă deranjați cu revizuirile procesorului: în cazuri foarte rare, schimbarea unei revizuiri aduce unele modificări fundamentale procesorului. Este suficient doar să știi că așa ceva există - doar pentru dezvoltarea generală.

Frecvența miezului

De regulă, acest parametru este denumit în mod colocvial „frecvența procesorului”. Deși, în cazul general, definiția „frecvenței de funcționare a miezului” este încă mai corectă, deoarece nu este deloc necesar ca toate componentele CPU să funcționeze la aceeași frecvență cu miezul (cel mai comun exemplu de opus a fost vechiul Procesoare x86 „slot” - Intel Pentium II și Pentium III pentru Slot 1, AMD Athlon pentru Slot A - memoria cache L2 a funcționat la 1/2 și uneori chiar la 1/3 din frecvența de bază). O altă concepție greșită comună este credința că frecvența de bază determină în mod unic performanța. De fapt, acest lucru este de două ori greșit: în primul rând, fiecare nucleu de procesor specific (în funcție de modul în care este proiectat, câte unități de execuție conține tipuri variate, etc. etc.) poate executa un număr diferit de comenzi într-un ciclu de ceas, dar frecvența este doar numărul de astfel de cicluri de ceas pe secundă. Astfel (comparația de mai jos, desigur, este foarte simplificată și deci foarte arbitrară), un procesor al cărui nucleu execută 3 instrucțiuni pe ciclu de ceas poate avea o treime frecvență mai mică decât un procesor care execută 2 instrucțiuni pe ciclu de ceas - și, în același timp, are performanță complet similară.

În al doilea rând, chiar și în cadrul aceluiași nucleu, o creștere a frecvenței nu duce întotdeauna la o creștere proporțională a performanței. Aici îți vor fi foarte utile cunoștințele pe care le poți aduna din secțiunea „Principii generale de interacțiune între procesor și RAM”. Faptul este că viteza de execuție a comenzilor de către nucleul procesorului nu este singurul indicator care afectează viteza de execuție a programului. La fel de importantă este viteza cu care comenzile și datele ajung la CPU. Să ne imaginăm, pur teoretic, un astfel de sistem: viteza procesorului este de 10.000 de comenzi pe secundă, viteza memoriei este de 1000 de octeți pe secundă Întrebare: chiar dacă presupunem că o comandă nu ocupă mai mult de un octet, și nu avem date la toate, cu ce Cât de repede va fi executat un program într-un astfel de sistem Corect: nu mai mult de 1000 de comenzi pe secundă, și Performanța procesorului asta nu are absolut nimic de-a face cu asta: vom fi limitați nu de ea, ci de viteza cu care intră comenzile în procesor. Astfel, trebuie înțeles: este imposibil să creșteți în mod continuu frecvența de bază singură fără a accelera simultan subsistemul de memorie, deoarece în acest caz, începând de la o anumită etapă, creșterea frecvenței CPU nu va mai afecta creșterea performanței sistemului. ca un intreg, per total.

Caracteristici ale formării numelor de procesoare

Anterior, când cerul era mai albastru, berea avea un gust mai bun, iar fetele erau mai frumoase, procesoarele se numeau simplu: numele producătorului + numele gamei modelului + frecvența. De exemplu: „AMD K6-2 450 MHz”. În prezent, ambii mari producători s-au îndepărtat de această tradiție, iar în loc de frecvență folosesc niște numere de neînțeles care indică cine știe ce. Următoarele două secțiuni sunt dedicate unei scurte explicații a ceea ce înseamnă de fapt aceste numere.

Evaluări de la AMD

Motivul pentru care AMD a „eliminat” frecvența din numele procesoarelor sale și a înlocuit-o cu un număr abstract este binecunoscut: după apariția procesorului Intel Pentium 4, care funcționează la frecvențe foarte înalte, procesoarele AMD de lângă acesta au început să „arata prost în vitrina magazinului” - cumpărătorul nu credea că un procesor cu o frecvență de, de exemplu, 1500 MHz ar putea depăși un procesor cu o frecvență de 2000 MHz. Prin urmare, frecvența din nume a fost înlocuită cu un rating. Interpretarea formală („de jure”, ca să spunem așa) a acestui rating de la AMD a sunat puțin diferit în momente diferite, dar nu a sunat niciodată în forma în care utilizatorii l-au perceput: un procesor AMD cu o anumită evaluare ar trebui să fie ca cel puțin nu mai lent decât un procesor Intel Pentium 4 cu o frecvență corespunzătoare acestui rating. Între timp, pentru nimeni nu era un secret special că tocmai această interpretare era scopul final al introducerii ratingului. În general, toată lumea a înțeles totul perfect, dar AMD s-a prefăcut cu sârguință că nu are nicio legătură cu asta :). Ea nu ar trebui să fie învinovățită pentru asta: în competiție, se aplică reguli complet diferite decât în ​​luptele cavalerești. Mai mult, rezultatele testelor independente au arătat: în general, AMD atribuie evaluări destul de corecte procesoarelor sale. De fapt, atâta timp cât este așa, nu are sens să protestezi împotriva utilizării ratingului. Adevărat, o întrebare rămâne deschisă: de ce (pe noi ne interesează, desigur, starea de facto, și nu explicațiile departamentului de marketing) se va lega ratingul procesoarelor AMD puțin mai târziu, când Intel începe să producă unele alt procesor în loc de Pentium 4?

Numărul procesorului de la Intel

Ce trebuie să rețineți imediat: Numărul procesorului (denumit în continuare PN) pentru procesoarele Intel nu este o evaluare. Nu o evaluare a performanței sau o evaluare a oricărui altceva. De fapt, este pur și simplu un „articol”, un articol rând dintr-o listă de inventar al cărui singur scop este să se asigure că linia care reprezintă un procesor este diferită de linia care reprezintă altul. În cadrul seriei (prima cifră PN), celelalte două cifre, în principiu, pot spune ceva, dar având în vedere prezența tabelelor care arată corespondența completă între PN și parametrii reali, nu vedem prea mult rost să memorăm care - aceștia sunt corespondențe intermediare. Motivația Intel pentru introducerea PN (în loc să specifice frecvența CPU) este mai complexă decât cea a AMD. Necesitatea introducerii PN (așa cum îl explică Intel însuși) se datorează în primul rând faptului că cei doi concurenți principali au abordări diferite cu privire la problema unicității numelui procesorului. De exemplu, pentru AMD, numele „Athlon 64 3200+” poate însemna patru procesoare cu caracteristici tehnice ușor diferite (dar aceeași „evaluare”). Intel este de părere că numele procesorului trebuie să fie unic și, prin urmare, compania a trebuit anterior să „evite” prin adăugarea de litere diferite la valoarea frecvenței din nume, iar acest lucru a dus la confuzie. Teoretic, PN ar fi trebuit să elimine această confuzie. Este greu de spus dacă obiectivul a fost atins: totuși, gama de procesoare Intel a rămas destul de complexă. Pe de altă parte, acest lucru este inevitabil, deoarece gama de produse este prea mare. Cu toate acestea, indiferent de orice altceva, un efect de facto a fost cu siguranță atins: acum doar specialiștii care înțeleg problema pot spune rapid și precis „din memorie” după numele procesorului ce este și care va fi performanța acestuia în comparație cu alte CPU-uri. Cât de bun este? Greu de spus. Am prefera să ne abținem de la a comenta.

Măsurarea vitezei „în megaherți” - cum este posibil acest lucru?

Acest lucru nu este în niciun caz posibil, deoarece viteza nu se măsoară în megaherți, la fel cum distanța nu se măsoară în kilograme. Totuși, domnilor marketeri au înțeles de mult că într-un duel verbal între un fizician și un psiholog, acesta din urmă câștigă întotdeauna - și indiferent cine are de fapt dreptate. De aceea, citim despre „FSB ultrarapid de 1066 MHz”, încercând dureros să înțelegem cum poate fi măsurată viteza folosind frecvența. De fapt, din moment ce o astfel de tendință pervertită a prins rădăcini, trebuie doar să fii clar ce înseamnă. Ceea ce vrem să spunem este următorul lucru: dacă „fixăm” lățimea magistralei la N biți, atunci debitul acesteia va depinde într-adevăr de frecvența la care funcționează magistrala și de câte date este capabilă să transmită pe ciclu de ceas. Pe o magistrală de procesor obișnuită cu o viteză „unică” (o astfel de magistrală a fost, de exemplu, procesorul Intel Pentium III), 64 de biți, adică 8 octeți, sunt transferați pe ciclu de ceas. În consecință, dacă frecvența de operare a magistralei este de 100 MHz (100"000"000 de cicluri de ceas pe secundă), atunci rata de transfer de date va fi egală cu 8 octeți * 100"000"000 hertzi ~= 763 megaocteți pe secundă (și dacă se numără în „megaocteți zecimal”, în care se obișnuiește să se ia în considerare fluxuri de date, apoi și mai frumos - 800 megaocteți pe secundă). În consecință, dacă o magistrală DDR rulează la aceeași 100 de megaherți, capabilă să transmită de două ori mai multă cantitate de date într-un singur ciclu de ceas, viteza va crește exact de două ori. Prin urmare, conform logicii paradoxale a domnilor marketeri, acest autobuz ar trebui să se numească „200 MHz”. Și dacă este și o magistrală QDR (Quad Data Rate), atunci se dovedește de fapt a fi „400 MHz”, deoarece transmite patru pachete de date într-un ciclu de ceas. Deși frecvența reală de funcționare a tuturor celor trei autobuze descrise mai sus este aceeași - 100 megaherți. Așa a devenit „megahertz” sinonim cu viteza.

Astfel, un autobuz QDR (cu viteză „cvadruplă”), care funcționează la o frecvență reală de 266 megaherți, se dovedește magic a fi „1066 megaherți”. Numărul „1066” în acest caz reprezintă faptul că debitul său este exact de 4 ori mai mare decât cel al unui autobuz „cu o singură viteză” care funcționează la aceeași frecvență. Ești încă confuz?.. Obișnuiește-te! Aceasta nu este un fel de teorie a relativității, totul aici este mult mai complicat și neglijat... Totuși, cel mai important lucru aici este să memorăm un principiu simplu: dacă facem o astfel de perversiune cum ar fi compararea vitezei a două autobuze cu unul pe altul „în megaherți”, atunci trebuie să aibă aceeași lățime. În caz contrar, se dovedește ca într-un singur forum, unde o persoană a susținut serios că lățimea de bandă a AGP2X ("133 MHz", dar pe 32 de biți bus) - mai mare decât lățimea de bandă FSB a Pentium III 800 (frecvența reală 100 MHz, lățime 64 de biți).

Câteva cuvinte despre unele dintre caracteristicile picante ale protocoalelor DDR și QDR

După cum sa menționat mai sus, în modul DDR, de două ori cantitatea de informații este transmisă prin magistrală într-un singur ciclu de ceas, iar în modul QDR, aceasta este de patru ori. Adevărat, în documentele concentrate mai mult pe glorificarea realizărilor producătorilor decât pe acoperirea obiectivă a realităților, din anumite motive ei uită întotdeauna să indice un mic „dar”: Modurile de viteză dublă și cvadruplă sunt activate numai în timpul transferului de pachete de date. Adică dacă am solicitat câțiva megaocteți din memorie de la adresa X la adresa Y, atunci da, acești doi megaocteți vor fi transferați cu viteză dublă/cvadruplă. Dar cererea de date în sine este trimisă prin autobuz cu o viteză „unică” - Mereu ! În consecință, dacă avem o mulțime de solicitări, iar dimensiunea datelor trimise nu este foarte mare, atunci cantitatea de date care „călătorește” de-a lungul autobuzului cu o singură viteză (și o solicitare este, de asemenea, date) va fi aproape egal cu cantitatea care se transmite cu viteza dubla sau cvadrupla . Se pare că nimeni nu ne-a mințit deschis, se pare că DDR și QDR chiar funcționează, dar... așa cum se spune într-o glumă veche: „ori i-a furat o haină de blană de la cineva, ori i-a furat cineva o haină de blană, dar ceva este ceva în neregulă cu haina de blană..." ;) Procesor cu blocuri mari

Cache

Descrierea generală și principiul de funcționare

Toate procesoarele moderne au un cache (în engleză - cache). Cache-ul este un tip special de memorie (principala caracteristică care distinge fundamental memoria cache de RAM este viteza de funcționare), care este un fel de „tampon” între controlerul de memorie și procesor. Acest buffer este folosit pentru a crește viteza de lucru cu RAM. Cum? Acum să încercăm să explicăm. În același timp, am decis să renunțăm la comparațiile care miroase a grădiniță, care se găsesc adesea în literatura populară pe tema procesoarelor (piscine legate prin țevi de diferite diametre etc., etc.). La urma urmei, o persoană care a citit articolul până în acest punct și nu a adormit este probabil capabilă să reziste și să „digere” o explicație pur tehnică, fără piscine, pisici și păpădie.

Deci, imaginați-vă că avem multă memorie relativ lentă (să fie RAM de 10.000.000 de octeți în dimensiune) și relativ puțină memorie foarte rapidă (să fie un cache de doar 1024 de octeți în dimensiune). Cum putem folosi acest kilobyte nefericit pentru a crește viteza de lucru cu toată memoria în general? Dar aici trebuie amintit că datele în timpul funcționării programului, de regulă, nu sunt aruncate fără gând din loc în loc - aceasta Schimbare. Ei au citit valoarea unei variabile din memorie, i-au adăugat un număr și au scris-o înapoi în același loc. Am numărat matricea, am sortat-o ​​în ordine crescătoare și am scris-o din nou în memorie. Adică, la un moment dat programul nu funcționează cu întreaga memorie, ci, de regulă, cu un fragment relativ mic al acesteia. Ce soluție se sugerează? Așa este: încărcați acest fragment în memoria „rapidă”, procesați-l acolo și apoi scrieți-l înapoi în memoria „lentă” (sau pur și simplu ștergeți-l din cache dacă datele nu s-au schimbat). În general, exact așa funcționează memoria cache a procesorului: orice informație citită din memorie ajunge nu numai în procesor, ci și în cache. Și dacă este nevoie din nou de aceeași informație (aceeași adresă în memorie), procesorul verifică mai întâi: este în cache? Dacă există, informația este preluată de acolo, iar accesul la memorie nu are loc deloc. La fel și cu scrierea: informațiile, dacă volumul acesteia se încadrează în cache, sunt scrise acolo și numai atunci, când procesorul a finalizat operația de scriere și a început să execute alte comenzi, datele scrise în cache sunt în paralel cu activitatea nucleului procesorului„descărcat încet” în RAM.

Desigur, cantitatea de date citite și scrise în timpul întregii operațiuni a programului este mult mai mare decât dimensiunea cache-ului. Prin urmare, unele dintre ele trebuie șterse din când în când pentru ca altele noi, mai relevante, să se potrivească în cache. Cel mai simplu mecanism cunoscut pentru asigurarea acestui proces este urmărirea timpului ultimului acces la datele aflate în cache. Deci, dacă trebuie să plasăm date noi în cache și acestea sunt deja „plin la capacitate”, controlerul care gestionează memoria cache se uită la ce fragment de cache nu a fost accesat cel mai mult timp? Acest fragment este primul candidat pentru „plecare”, iar în locul lui sunt înregistrate date noi cu care trebuie lucrate acum. Acesta este, în termeni generali, cum funcționează mecanismul de stocare în cache din procesoare. Desigur, explicația de mai sus este foarte primitivă, de fapt, totul este și mai complicat, dar sperăm că ați reușit să vă faceți o idee generală despre motivul pentru care procesorul are nevoie de un cache și cum funcționează.

Pentru a clarifica cât de importantă este memoria cache, să dăm un exemplu simplu: viteza de schimb de date între procesorul Pentium 4 și cache-urile sale este de peste 10 ori (!) mai mare decât viteza de lucru cu memoria. De fapt, procesoarele moderne sunt capabile să lucreze la capacitate maximă doar cu memoria cache: de îndată ce se confruntă cu nevoia de a citi date din memorie, toți megaherții lor lăudați începe pur și simplu să „încălzească aerul”. Din nou, un exemplu simplu: procesorul execută cea mai simplă instrucțiune într-un singur ciclu de ceas, adică într-o secundă poate executa atâtea instrucțiuni simple câte frecvența lui (de fapt, chiar mai multe, dar vom lăsa asta pentru mai târziu.. .). Dar timpul de așteptare pentru datele din memorie poate fi, în cel mai rău caz, mai mult de 200 de cicluri! Ce face procesorul în timp ce așteaptă datele necesare? Dar el nu face nimic. Doar stând în picioare și așteptând...

Memorarea în cache pe mai multe niveluri

Specificul designului modern nuclee de procesor a condus la faptul că sistemul de cache în marea majoritate a CPU-urilor trebuie să fie realizat pe mai multe niveluri. Cache-ul de prim nivel (cel mai apropiat de nucleu) este împărțit în mod tradițional în două jumătăți (de obicei egale): memoria cache de instrucțiuni (L1I) și memoria cache de date (L1D). Această diviziune este asigurată de așa-numita „arhitectură Harvard” a procesorului, care de astăzi este cea mai populară dezvoltare teoretică pentru construirea de procesoare moderne. În L1I, în consecință, se acumulează doar comenzi (decodorul funcționează cu acesta, vezi mai jos), iar în L1D se acumulează doar date (elele, ulterior, de regulă, ajung în registrele interne ale procesorului). „Deasupra L1” există un cache de al doilea nivel - L2. De regulă, are un volum mai mare și este deja „amestecat” - atât comenzile, cât și datele sunt localizate acolo. L3 (al treilea nivel cache), de regulă, reproduce complet structura L2 și se găsește rar în procesoarele x86 moderne. Cel mai adesea, L3 este rodul unui compromis: prin utilizarea unui bus mai lent și mai îngust, poate fi făcut foarte mare, dar în același timp viteza L3 rămâne totuși mai mare decât viteza memoriei (deși nu la fel de mare ca cache-ul L2 ). Cu toate acestea, algoritmul pentru lucrul cu un cache cu mai multe niveluri, în general, nu diferă de algoritmul pentru lucrul cu un cache cu un singur nivel, ci doar adaugă iterații suplimentare: mai întâi, informațiile sunt căutate în L1, dacă nu există - în L2, apoi - în L3, și numai atunci, dacă nu nu se găsește la un nivel de cache - memoria principală (RAM) este accesată.

Decodor

De fapt, unitățile de execuție ale tuturor procesoarelor desktop x86 moderne... nu funcționează deloc cu cod în standardul x86. Fiecare procesor are propriul său sistem de comandă „intern”, care nu are nimic în comun cu acele comenzi (adică „cod”) care vin din exterior. În general, comenzile executate de kernel sunt mult mai simple, mai primitive, decât comenzile standardului x86. Este tocmai pentru ca procesorul să „arate” în exterior ca un procesor x86 și există un astfel de bloc ca un decodor: este responsabil pentru conversia codului x86 „extern” în comenzi „interne” executate de kernel (în acest caz, destul de des o comandă a codului x86 este convertită în „cele interne” puțin mai simple. Decodorul este o parte foarte importantă a unui procesor modern: viteza acestuia determină cât de constant va fi fluxul de comenzi care ajung la unitățile de execuție. La urma urmei, nu pot lucra cu codul x86, așa că dacă vor face ceva sau vor fi inactivi depinde în mare măsură de viteza decodorului. Intel a implementat o modalitate destul de neobișnuită de a accelera procesul de decodare a comenzilor în procesoarele cu arhitectură NetBurst - vezi mai jos despre cache-ul Trace.

Executarea dispozitivelor (funcționale).

După ce au trecut prin toate nivelurile de cache și decodor, comenzile ajung în sfârșit la acele blocuri pentru care a fost organizat tot acest haos: performant dispozitive. De fapt, dispozitivele de execuție sunt numai element necesar procesor. Puteți face fără cache - viteza va scădea, dar programele vor funcționa. Puteți face fără un decodor - dispozitivele de execuție vor deveni mai complexe, dar procesorul va funcționa în continuare. La urma urmei, procesoarele x86 timpurii (i8086, i80186, 286, 386, 486, Am5x86) s-au descurcat cumva fără un decodor. Este imposibil să faci fără dispozitive de execuție, deoarece acestea sunt cele care execută codul programului. La o primă aproximare, acestea sunt în mod tradițional împărțite în două grupuri mari: Unități aritmetice logice (ALU) și unități în virgulă mobilă (FPU).

Dispozitive logice aritmetice

ALU sunt în mod tradițional responsabile pentru două tipuri de operații: operații aritmetice (adunare, scădere, înmulțire, împărțire) cu numere întregi, operatii logice cu din nou numere întregi (logic „și”, logic „sau”, „exclusiv sau” și altele asemenea). Ceea ce, de fapt, decurge din numele lor. De regulă, există mai multe unități ALU în procesoarele moderne. Pentru ce - veți înțelege mai târziu, după ce ați citit secțiunea „Superscalaritate și execuția necorespunzătoare a comenzilor”. Este clar că ALU poate executa doar acele instrucțiuni care îi sunt destinate. Un bloc special este responsabil pentru distribuirea comenzilor care vin de la decodor către diferite dispozitive de execuție, dar aceasta este, după cum se spune, „chestii prea complexe” și nu are sens să le explicăm în material care este dedicat doar unei cunoștințe superficiale cu principiile de bază de funcționare ale procesorului x86 modern.

Unitate în virgulă flotantă*

FPU este responsabil pentru executarea comenzilor care funcționează cu numere în virgulă mobilă, în plus, în mod tradițional, „atârnă toți câinii” pe el sub forma a tot felul de seturi suplimentare de comenzi (MMX, 3DNow!, SSE, SSE2, SSE3.. .) - indiferent dacă funcționează cu numere în virgulă mobilă sau cu numere întregi. Ca și în cazul ALU, în FPU pot exista mai multe blocuri individuale și pot funcționa în paralel.

* - conform tradițiilor școlii de matematică ruse, numim FPU „unitate de calcul plutitoare” virgulă", deși literalmente numele său (Floating Punct Unit) se traduce prin „... virgulă mobilă” - conform standardului american pentru scrierea unor astfel de numere.

Registrele procesorului

Registrele sunt în esență aceleași celule de memorie, dar „geografic” sunt localizate direct în miezul procesorului. Desigur, viteza de lucru cu registre este de multe ori mai mare decât viteza de lucru cu celule de memorie situate în RAM-ul principal (aici în general după ordine de mărime...) și cu cache-uri de orice nivel. Prin urmare, majoritatea instrucțiunilor din arhitectura x86 implică efectuarea de acțiuni în mod specific asupra conținutului registrelor, și nu asupra conținutului memoriei. Cu toate acestea, volumul total al registrelor procesorului este, de regulă, foarte mic - nici măcar nu este comparabil cu volumul cache-urilor de prim nivel. Prin urmare, codul de program de facto (nu într-un limbaj de nivel înalt, ci binar, „mașină”) conține adesea următoarea secvență de operații: încărcarea informațiilor din RAM într-unul dintre registrele procesorului, încărcarea altor informații într-un alt registru (tot din RAM), efectuează unele acțiuni asupra conținutului acestor registre, plasând rezultatul în al treilea - și apoi descarcând din nou rezultatul din registru în memoria principală. Procesor în detaliu

Caracteristicile cache-urilor

Frecvența cache și magistrala

În toate procesoarele x86 moderne, toate nivelurile de cache funcționează la aceeași frecvență ca nucleul procesorului, dar nu a fost întotdeauna cazul (această problemă a fost deja ridicată mai sus). Cu toate acestea, viteza de lucru cu memoria cache depinde nu numai de frecvență, ci și de lățimea magistralei cu care este conectată la miezul procesorului. După cum vă amintiți (sperăm) de la citirea anterioară, rata de transfer de date este în esență produsul frecvenței magistralei (numărul de cicluri de ceas pe secundă) cu numărul de octeți care sunt transferați de-a lungul magistralei într-un ciclu de ceas. Numărul de octeți transmiși pe ciclu de ceas poate fi mărit prin introducerea protocoalelor DDR și QDR (Double Data Rate și Quad Data Rate) - sau pur și simplu prin creșterea lățimii magistralei. În cazul cache-ului, a doua opțiune este mai populară, nu în ultimul rând datorită „funcțiilor savuroase” ale DDR/QDR descrise mai sus. Desigur, lățimea minimă rezonabilă a magistralei cache este lățimea magistralei externe a procesorului însuși, adică de astăzi - 64 de biți. Este exact ceea ce face AMD, în spiritul minimalismului sănătos: în procesoarele sale, lățimea magistralei L1 L2 este de 64 de biți, dar în același timp este bidirecțională, adică este capabilă să transmită și să primească simultan informații. . Intel a acționat din nou în spiritul „gigantismului sănătos”: în procesoarele sale, începând cu Pentium III „Coppermine”, magistrala L1 L2 are o lățime de... 256 de biți! Conform principiului „nu poți strica terci cu unt”, așa cum se spune. Adevărat, această magistrală este unidirecțională, adică la un moment dat funcționează fie doar pentru transmisie, fie doar pentru recepție. Dezbaterea despre care abordare este mai bună (o magistrală bidirecțională, dar mai îngustă, sau o magistrală unidirecțională) continuă și astăzi... totuși, precum și multe alte dispute privind soluțiile tehnice folosite de cei doi principali concurenți pe piața CPU x86 .

Cache exclusiv și neexclusiv

Conceptele de cache exclusiv și non-exclusiv sunt foarte simple: în cazul unui cache neexclusiv, informațiile de la toate nivelurile de cache pot fi duplicate. Astfel, L2 poate conține datele care sunt deja în L1I și L1D, iar L3 (dacă există una) poate conține o copie completă a întregului conținut al L2 (și, în consecință, L1I și L1D). Un cache exclusiv, spre deosebire de unul neexclusiv, oferă o distincție clară: dacă informațiile sunt conținute la un anumit nivel de cache, atunci nu este prezentă la toate celelalte. Avantajul unui cache exclusiv este evident: dimensiunea totală a informațiilor din cache în acest caz este egală cu volumul total al cache-urilor de toate nivelurile - spre deosebire de un cache neexclusiv, unde dimensiunea informațiilor din cache (în cel mai rău caz ) este egal cu volumul celui mai mare nivel de cache. Dezavantajul unui cache exclusiv este mai puțin evident, dar există: este nevoie de un mecanism special care să monitorizeze „exclusivitatea” reală (de exemplu, la ștergerea informațiilor din memoria cache L1, procesul de copiere a acestora în L2 este inițiat automat înainte de aceasta. ).

Un cache neexclusiv este folosit în mod tradițional de Intel, unul exclusiv (de la apariția procesoarelor Athlon bazate pe nucleul Thunderbird) este folosit de AMD. În general, vedem aici o confruntare clasică între volum și viteză: datorită exclusivității, cu aceleași volume L1/L2, AMD obține o dimensiune totală mai mare a informațiilor stocate în cache - dar datorită acesteia funcționează și mai lent (întârzieri cauzate de prezența a unui mecanism de exclusivitate). Probabil trebuie remarcat faptul că Intel a compensat recent deficiențele unui cache neexclusiv într-un mod simplu, stupid, dar semnificativ: prin creșterea volumului acestuia. Pentru procesoarele de top ale acestei companii, un cache L2 de 2 MB a devenit aproape norma - iar AMD, cu cei 128 KB L1C+L1D și maximum 1 MB L2, nu a „depășit” încă acești 2 MB nici din cauza exclusivității. .

În plus, creșterea volumului total de informații stocate în cache prin introducerea unei arhitecturi cache exclusive are sens numai dacă câștigul în volum este destul de mare Și m. Pentru AMD acest lucru este relevant pentru că... procesoarele sale actuale au un volum total L1D+L1I de 128 KB. Pentru procesoarele Intel, al căror volum L1D este de maximum 32 KB, iar L1I are uneori o structură complet diferită (vezi despre Trace cache), introducerea unei arhitecturi exclusive ar oferi mult mai puține beneficii.

Există, de asemenea, o concepție greșită că arhitectura cache a procesoarelor Intel este „incluzivă”. Nu chiar. NU este exclusiv. Arhitectura incluzivă prevede asta la nivelul cache „inferior”. nu poti nu există nimic care să nu fie pe cel „superior”. Arhitectură nu exclusivă admite duplicarea datelor la diferite niveluri.

Cache de urmărire

Conceptul de cache Trace este de a stoca în cache de instrucțiuni de prim nivel (L1I) nu acele instrucțiuni care sunt citite din memorie, ci secvențe deja decodificate (vezi decodor). Astfel, dacă o anumită instrucțiune x86 este executată în mod repetat și este încă în L1I, decodorul procesorului nu trebuie să o convertească din nou într-o secvență de instrucțiuni " cod intern", deoarece L1I conține această secvență în formă deja decodificată. Conceptul de cache Trace se încadrează foarte bine în conceptul general al arhitecturii Intel NetBurst, care vizează crearea de procesoare cu frecvențe de bază foarte înalte. Cu toate acestea, utilitatea cache-ului Trace pentru CPU-uri cu frecvență [relativ] mai mică este încă în discuție, deoarece complexitatea organizării cache-ului Trace devine comparabilă cu sarcina de a proiecta un decodor rapid convențional. Prin urmare, deși aducem un omagiu originalității ideii, am spune totuși că Trace cache nu poate fi considerată o soluție universală „pentru toate ocaziile”.

Superscalaritatea și executarea în neregulă a instrucțiunilor

Caracteristica principală a tuturor procesoarelor moderne este că sunt capabile să lanseze execuția nu numai a comenzii care (conform codului programului) ar trebui să fie executată la un moment dat, ci și a altora care o urmează. Să dăm un exemplu simplu (canonic). Să executăm următoarea secvență de comenzi:

1) A = B + C
2) Z = X + Y
3) K = A + Z

Este ușor de observat că comenzile (1) și (2) sunt complet independente unele de altele - nu se intersectează nici în datele sursă (variabilele B și C în primul caz, X și Y în al doilea), nici în locația rezultatului (variabila A în primul caz și Z în al doilea). Prin urmare, dacă în acest moment avem mai multe blocuri de execuție libere, aceste comenzi pot fi distribuite între ele și executate simultan, mai degrabă decât secvențial*. Astfel, dacă luăm timpul de execuție al fiecărei comenzi egal cu N cicluri de procesor, atunci în cazul clasic execuția întregii secvențe ar dura N*3 cicluri de ceas, iar în cazul execuției în paralel - doar N*2 cicluri de ceas. (deoarece comanda (3) nu poate fi executată, fără a aștepta rezultatul celor două anterioare).

* - desigur, gradul de paralelism nu este infinit: comenzile pot fi executate în paralel numai dacă la un moment dat există un număr adecvat de blocuri libere (FU), și tocmai cei care „înțeleg” comenzile în cauză. Cel mai simplu exemplu: un bloc aparținând ALU este fizic incapabil să execute o instrucțiune destinată FPU-ului. Este adevărat și invers.

De fapt, este și mai complicat. Deci, dacă avem următoarea secvență:

1) A = B + C
2) K = A + M
3) Z = X + Y

Apoi coada de execuție a comenzilor procesorului va fi schimbată! Deoarece comenzile (1) și (3) sunt independente unele de altele (nici în datele sursă și nici în locația rezultatului), ele pot fi executate în paralel - și vor fi executate în paralel. Dar comanda (2) va fi executată după ele (a treia) - deoarece pentru ca rezultatul calculului să fie corect, este necesar ca comanda (1) să fie executată înaintea acesteia. De aceea s-a discutat în aceasta sectiune mecanism și se numește „execuția în afara ordinei comenzilor” (Out-of-Order Execution, sau „OoO” pe scurt): în cazurile în care ordinea de execuție nu poate afecta în niciun fel rezultatul, comenzile sunt trimise spre execuție nu în ordinea în care sunt amplasate în codul programului, ci în cea care vă permite să obțineți performanțe maxime.

Acum ar trebui să vă devină în sfârșit clar de ce CPU-urile moderne au nevoie de atât de multe unități de execuție de același tip: oferă posibilitatea de a executa mai multe comenzi în paralel, care în cazul abordării „clasice” a proiectării procesorului ar trebui să fie executate. în succesiunea în care sunt cuprinse în codul sursă.

Procesoarele echipate cu un mecanism pentru executarea în paralel a mai multor instrucțiuni consecutive sunt de obicei numite „superscalare”. Cu toate acestea, nu toate procesoarele superscalare acceptă execuția necorespunzătoare. Deci, în primul exemplu, „superscalaritatea simplă” (executarea simultană a două comenzi consecutive) este suficientă pentru noi - dar în al doilea exemplu, nu ne mai putem face fără rearanjarea comenzilor dacă vrem să obținem performanță maximă. Toate procesoarele x86 moderne au ambele calități: sunt superscalare și suportă execuția necorespunzătoare a instrucțiunilor. În același timp, în istoria x86 au existat și „superscalari simple” care nu au suportat OoO. De exemplu, desktopul clasic x86 superscalar fără OoO a fost Intel Pentium.

Pentru a fi corect, merită remarcat faptul că nici Intel, nici AMD, nici niciun alt producător de procesoare x86 (inclusiv acum decedat) nu are vreun merit în dezvoltarea conceptelor de superscalaritate și OoO. Primul computer superscalar care acceptă OoO a fost dezvoltat de Seymour Cray în anii 60 ai secolului XX. Pentru comparație: Intel a lansat primul său procesor superscalar (Pentium) în 1993, primul superscalar cu OoO (Pentium Pro) - în 1995; Primul superscalar OoO al AMD (K5) a fost lansat în 1996. Comentariile, după cum se spune, sunt inutile...

Decodare preliminară (în avans).
și stocarea în cache

Predicția ramurilor

Orice program mai mult sau mai puțin complex conține comenzi de salt condiționat: „Dacă o anumită condiție este adevărată, mergi la execuția unei secțiuni de cod, dacă nu, mergi la alta.” Din punctul de vedere al vitezei de execuție a codului programului de către un procesor modern care acceptă execuția necorespunzătoare, orice comandă de salt condiționat este cu adevărat un flagel al lui Dumnezeu. La urma urmei, până când nu se știe care secțiune a codului după saltul condiționat va fi „relevantă”, este imposibil să începeți decodarea și executarea acesteia (vezi execuția în afara ordinei). Pentru a reconcilia oarecum conceptul de execuție în neregulă cu comenzile de sărituri condiționate, se urmărește un bloc special: blocul de predicție a ramurilor. După cum sugerează și numele, se ocupă în esență de „profeții”: încearcă să prezică spre ce secțiune de cod va indica comanda de salt condiționat, chiar înainte de a fi executată. În conformitate cu instrucțiunile „profetului obișnuit intra-core”, procesorul efectuează acțiuni foarte reale: secțiunea de cod „profețită” este încărcată în cache (dacă nu este acolo) și chiar începe decodificarea și executarea comenzilor sale . Mai mult, printre comenzile executate pot exista și instrucțiuni de sărituri condiționate, iar rezultatele acestora sunt, de asemenea, prezise, ​​ceea ce generează un întreg lanț de neverificat încă previziuni! Desigur, dacă unitatea de predicție a ramurilor este greșită, toată munca efectuată în conformitate cu predicțiile sale este pur și simplu anulată.

De fapt, algoritmii utilizați de unitatea de predicție a ramurilor nu sunt deloc capodopere ale inteligenței artificiale. De cele mai multe ori sunt simpli... și proști. Pentru că cel mai adesea comanda de salt condiționat se găsește în bucle: un anumit numărător ia valoarea X, iar după fiecare trecere a buclei, valoarea contorului este micșorată cu unu. În consecință, atâta timp cât valoarea contorului este mai mare decât zero, se face o tranziție la începutul ciclului și după ce acesta devine egal cu zero- executia continua in continuare. Blocul de predicție a ramurilor analizează pur și simplu rezultatul executării unei comenzi de salt condiționat și consideră că dacă de N ori la rând rezultatul este un salt la o anumită adresă, atunci în N+1 cazuri se va face un salt la aceeași adresă. Cu toate acestea, în ciuda întregului primitivism, această schemă funcționează foarte bine: de exemplu, dacă contorul ia valoarea 100, iar „pragul de operare” al predictorului de ramură (N) este egal cu două tranziții la rând la aceeași adresă - este ușor de observat că 97 de tranziții din 98 vor fi prezise corect!

Desigur, în ciuda eficienței destul de ridicate a algoritmilor simpli, mecanismele de predicție a ramurilor din procesoarele moderne sunt încă îmbunătățite constant și devin mai complexe - dar aici vorbim despre lupta pentru unitățile de procente: de exemplu, pentru a crește eficiența unitate de predicție a ramurilor de la 95% la 97 sau chiar de la 97% la 99...

Preîncărcarea datelor

Blocul de preluare a datelor (Prefetch) este foarte asemănător în principiul său de funcționare cu blocul de predicție a ramurilor - singura diferență este că în acest caz nu vorbim despre cod, ci despre date. Principiul general de funcționare este același: dacă circuitul de analiză a accesului la date încorporat în RAM decide că o anumită secțiune de memorie care nu a fost încă încărcată în cache va fi accesată în curând, dă o comandă pentru a încărca această secțiune de memorie în cache-ul chiar înainte de a fi nevoie de programul executabil. O unitate de preluare care funcționează „inteligent” (eficient) poate reduce semnificativ timpul de acces la datele necesare și, în consecință, poate crește viteza de execuție a programului. Apropo: un Prefetch competent compensează foarte bine latența mare a subsistemului de memorie, încărcând datele necesare în cache și, astfel, nivelează întârzierile la accesarea acestuia, dacă nu ar fi în cache, ci în memoria RAM principală .

Cu toate acestea, desigur, în cazul unei erori în unitatea de preluare preliminară a datelor, consecințele negative sunt inevitabile: prin încărcarea de facto a datelor „inutile” în cache, Prefetch le înlocuiește pe altele (poate doar pe cele necesare). În plus, prin „anticiparea” operației de citire, se creează o încărcare suplimentară pe controlerul de memorie (de facto, în cazul unei erori, complet inutilă).

Algoritmii de preluare preliminară, precum algoritmii blocului de predicție a ramurilor, nu strălucesc, de asemenea, cu inteligență: de regulă, acest bloc încearcă să urmărească dacă informațiile sunt citite din memorie cu un anumit „pas” (după adresă) și pe baza acestei analize , încearcă să prezică de la ce adresă vor fi citite datele în timpul funcționării ulterioare a programului. Cu toate acestea, ca și în cazul blocului de predicție a ramurilor, simplitatea algoritmului nu înseamnă deloc eficiență scăzută: în medie, blocul de preluare a datelor „locește” mai des decât face greșeli (și asta, ca și în cazul precedent). , se datorează în primul rând faptului că citirea „masivă” a datelor din memorie, de regulă, are loc în timpul execuției diferitelor cicluri). Concluzie

Sunt acel iepure care nu poate începe să mestece iarbă până când...
nu va înțelege în toate detaliile cum are loc procesul de fotosinteză!
(declarația de poziție personală a unuia dintre prietenii apropiați ai autorului)

Este foarte posibil ca sentimentele pe care le-ați avut după ce ați citit acest articol să fie descrise aproximativ astfel: „În loc să explice cu degetele care procesor este mai bun, mi-au luat și mi-au încărcat creierul cu o grămadă de informații specifice care încă trebuie înțelese. și înțeles, și nu există sfârșit în vedere!” O reacție absolut normală: crede-mă, te înțelegem bine. Să spunem și mai multe (și să-ți cadă coroana de pe cap!): dacă crezi că noi înșine putem răspunde la această întrebare simplă („ce procesor este mai bun?”) - atunci te înșeli foarte mult. Nu poti. Pentru unele sarcini una este mai bună, pentru altele - alta, iar apoi prețul este diferit, disponibilitatea, gustul unui anumit utilizator pentru anumite mărci... Problema nu are o soluție clară. Dacă ar fi fost, cu siguranță cineva l-ar fi găsit și ar fi devenit cel mai faimos observator din istoria laboratoarelor independente de testare.

Aș dori să subliniez încă o dată: Chiar dacă ai asimilat și ai înțeles pe deplin toate informațiile prezentate în acest material, tot nu vei putea prezice care dintre cele două procesoare va fi mai rapid în sarcinile tale, uitându-te doar la caracteristicile lor. În primul rând, pentru că nu toate caracteristicile procesoarelor sunt luate în considerare aici. În al doilea rând, pentru că există și parametri CPU care pot fi prezentați doar sub formă numerică cu o întindere foarte mare. Deci pentru cine (și pentru ce) sunt scrise toate acestea? În principal - pentru aceiași „iepuri” care cu siguranță vor să știe ce se întâmplă în interiorul dispozitivelor pe care le folosesc în fiecare zi. Pentru ce? Poate că se simt mai bine când știu ce se întâmplă în jurul lor? :)

În viitorul apropiat, există planuri de extindere a întrebărilor frecvente:

  1. Secțiune dedicată sistemelor multiprocesor: explicația conceptului de SMP, tehnologie Hyper-Threading, N-processing, N-core.
  2. Secțiune dedicată fizicului Caracteristicile CPU: tipuri de carcase, prize, consum de energie etc.

Unul dintre factorii importanți care crește performanța procesorului este prezența memoriei cache, sau mai degrabă volumul acesteia, viteza de acces și distribuția între niveluri.

Memoria cache este o memorie ultra-rapidă utilizată de procesor pentru a stoca temporar datele care sunt accesate cel mai frecvent. Așa putem descrie pe scurt acest tip de memorie.

Memoria cache este construită pe flip-flop, care, la rândul lor, sunt formate din tranzistori. Un grup de tranzistoare ocupă mult mai mult spațiu decât aceiași condensatori care alcătuiesc memoria RAM. Acest lucru implică multe dificultăți în producție, precum și limitări de volum. De aceea, memoria cache este o memorie foarte scumpă, având în același timp volume neglijabile. Dar dintr-o astfel de structură urmează principalul avantaj al unei astfel de memorie - viteza. Deoarece bistabilele nu au nevoie de regenerare, iar timpul de întârziere al porții pe care sunt asamblate este mic, timpul de comutare a flip-flop-ului de la o stare la alta are loc foarte repede. Acest lucru permite memoriei cache să funcționeze la aceleași frecvențe ca procesoarele moderne.

De asemenea, un factor important este plasarea memoriei cache. Este situat pe cipul procesorului propriu-zis, ceea ce reduce semnificativ timpul de acces. Anterior, memoria cache a unor niveluri era amplasată în afara cipului procesorului, pe un cip SRAM special undeva pe placa de bază. Acum, aproape toate procesoarele au memorie cache situată pe cipul procesorului.

După cum am menționat mai sus, scopul principal al memoriei cache este stocarea datelor care sunt utilizate frecvent de procesor. Cache-ul este un buffer în care sunt încărcate datele și, în ciuda dimensiunii sale mici (aproximativ 4-16 MB) la procesoarele moderne, oferă o creștere semnificativă a performanței în orice aplicație.

Pentru a înțelege mai bine nevoia memoriei cache, să ne imaginăm organizarea memoriei unui computer ca un birou. Memoria RAM va fi un cabinet cu foldere pe care contabilul le accesează periodic pentru a prelua blocuri mari de date (adică foldere). Și tabelul va fi o memorie cache.

Există elemente care sunt așezate pe biroul contabilului, la care se referă de mai multe ori pe parcursul unei ore. De exemplu, acestea ar putea fi numere de telefon, câteva exemple de documente. Aceste tipuri de informații sunt situate chiar pe masă, ceea ce, la rândul său, crește viteza de acces la ele.

În același mod, datele pot fi adăugate din acele blocuri mari de date (dosare) la tabel pentru o utilizare rapidă, de exemplu, un document. Când acest document nu mai este necesar, acesta este plasat înapoi în dulap (în RAM), ștergând astfel tabelul (memoria cache) și eliberând acest tabel pentru documente noi care vor fi utilizate în următoarea perioadă de timp.

De asemenea, cu memoria cache, dacă există date care este cel mai probabil să fie accesate din nou, atunci aceste date din RAM sunt încărcate în memoria cache. Foarte des, acest lucru se întâmplă prin co-încărcarea datelor care este cel mai probabil să fie utilizate după datele curente. Adică, există presupuneri despre ceea ce va fi folosit „după”. Acestea sunt principiile complexe de funcționare.

Procesoarele moderne sunt echipate cu un cache, care constă adesea din 2 sau 3 nivele. Desigur, există și excepții, dar acesta este adesea cazul.

În general, pot exista următoarele niveluri: L1 (primul nivel), L2 (al doilea nivel), L3 (al treilea nivel). Acum puțin mai multe detalii despre fiecare dintre ele:

1. First level cache (L1) - cel mai rapid nivel de memorie cache care funcționează direct cu nucleul procesorului, datorită acestei interacțiuni strânse, acest nivel are cel mai scurt timp de acces și funcționează la frecvențe apropiate procesorului. Este un buffer între procesor și cache-ul de al doilea nivel.

Vom lua în considerare volumele pe un procesor de înaltă performanță Intel Core i7-3770K. Acest procesor este echipat cu 4x32 KB cache L1 4 x 32 KB = 128 KB. (32 KB per nucleu)

2. Cache al doilea nivel (L2) - al doilea nivel este mai mare decât primul, dar, ca urmare, are „caracteristici de viteză” mai mici. În consecință, servește ca un tampon între nivelurile L1 și L3. Dacă ne uităm din nou la exemplul nostru Core i7-3770 K, atunci dimensiunea memoriei cache L2 este 4x256 KB = 1 MB.

3. Cache al treilea nivel (L3) - al treilea nivel, din nou, este mai lent decât precedentele două. Dar este încă mult mai rapid decât RAM. Dimensiunea cache-ului L3 în i7-3770K este de 8 MB. Dacă cele două niveluri anterioare sunt partajate de fiecare nucleu, atunci acest nivel este comun întregului procesor. Cifra este destul de solidă, dar nu exorbitantă. Deoarece, de exemplu, pentru procesoarele din seria Extreme, cum ar fi i7-3960X, este de 15 MB, iar pentru unele procesoare Xeon noi, mai mult de 20.

Să luăm în considerare arhitectura CISK și RISK.

CISC este un concept de design de procesor care se caracterizează prin următorul set de proprietăți:

Valoare nefixată pentru lungimea comenzii;

Operațiile aritmetice sunt codificate într-o singură instrucțiune;

Un număr mic de registre, fiecare îndeplinește o funcție strict definită.

Reprezentanții tipici sunt procesoarele bazate pe instrucțiuni x86 (excluzând procesoarele moderne Intel Pentium 4, Pentium D, Core, AMD Athlon, Phenom, care sunt hibride) și procesoarele Motorola MC680x0.

Cea mai comună arhitectură a procesoarelor moderne desktop, server și mobile se bazează pe arhitectura Intel x86 (sau x86-64 în cazul procesoarelor pe 64 de biți). Formal, toate procesoarele x86 erau procesoare CISC, dar procesoarele noi, începând cu Intel Pentium Pro, sunt procesoare CISC cu un nucleu RISC. Ele convertesc instrucțiunile CISC ale procesoarelor x86 într-un set mai simplu imediat înainte de execuție instrucțiuni interne RISC.

Un translator hardware este încorporat în microprocesor, transformând comenzile x86 în comenzi ale procesorului RISC intern. Mai mult, o comandă x86 poate genera mai multe comenzi RISC (în cazul procesoarelor P6, până la patru comenzi RISC în majoritatea cazurilor). Comenzile sunt executate pe un transportor superscalar de mai multe ori.

Acest lucru a fost necesar pentru a crește viteza de procesare a comenzilor CISC, deoarece se știe că orice procesor CISC este inferior procesoarelor RISC în numărul de operațiuni efectuate pe secundă. Drept urmare, această abordare ne-a permis să creștem performanța procesorului.

Dezavantajele arhitecturii CISK:

Cost ridicat al hardware-ului;

Dificultăți în paralelizarea calculelor.

Tehnica de construcție a sistemului de instrucțiuni CISC este opusul unei alte tehnici - RISC. Diferența dintre aceste concepte constă în metodele de programare, nu în arhitectura actuală a procesorului. Aproape toate procesoarele moderne emulează atât seturile de instrucțiuni de tip RISC, cât și CISC.

Stațiile de lucru, serverele medii și computerele personale folosesc procesoare CISC. Cea mai comună arhitectură de instrucțiuni a procesoarelor dispozitivelor mobile - SOC și mainframe - RISC. În microcontrolerele diferitelor dispozitive, RISC este utilizat în marea majoritate a cazurilor.

RISC este o arhitectură de procesor care mărește performanța prin simplificarea instrucțiunilor, astfel încât acestea să fie mai ușor de decodat și timpul de execuție să fie mai scurt. Primele procesoare RISC nu aveau nici măcar instrucțiuni de înmulțire și împărțire. De asemenea, ușurează ridicarea frecvența ceasuluiși face superscalaritatea (paralelizarea instrucțiunilor în mai multe unități de execuție) mai eficientă.

Seturi de instrucțiuni în arhitecturile anterioare, pentru a facilita scrierea de mână a programelor în limbaje de asamblare sau direct în codul mașinii, precum și pentru a simplifica implementarea compilatoarelor, realizate cât mai mult posibil mai multă muncă. Adesea, kiturile includeau instrucțiuni pentru a sprijini direct constructe de limbaj de nivel înalt. O altă caracteristică a acestor seturi este că majoritatea instrucțiunilor, de regulă, au permis toate metodele de adresare posibile - de exemplu, atât operanzii, cât și rezultatul operațiilor aritmetice sunt disponibile nu numai în registre, ci și prin adresare directă și direct în memorie. Astfel de arhitecturi au fost numite ulterior CISC. Cu toate acestea, multe compilatoare nu au exploatat pe deplin capacitățile unor astfel de seturi de instrucțiuni, iar metodele complexe de adresare durează mult timp din cauza acceselor suplimentare la memoria lentă. S-a demonstrat că astfel de funcții sunt mai bine executate într-o succesiune de instrucțiuni mai simple, dacă acest lucru simplifică procesorul și lasă loc pentru mai multe registre, datorită cărora numărul de accesări la memorie poate fi redus. În primele arhitecturi clasificate ca RISC, majoritatea instrucțiunilor au aceeași lungime și structură similară pentru a simplifica decodarea, operațiile aritmetice funcționează numai cu registre, iar munca de memorie se face prin instrucțiuni separate de încărcare și stocare. Aceste proprietăți au făcut posibilă o mai bună echilibrare a etapelor conductei, făcând conductele RISC mult mai eficiente și permițând viteze de ceas mai mari.

Caracteristici caracteristice procesoarelor RISK:

Lungime fixă ​​a instrucțiunii de mașină (de exemplu, 32 de biți) și format simplu de instrucțiuni.

Comenzi specializate pentru operatii de memorie - citire sau scriere. Nu există operații de citire-modificare-scriere. Orice operațiuni de „schimbare” se efectuează numai asupra conținutului registrelor (așa-numita arhitectură load-and-store).

Număr mare de registre scop general(32 sau mai mult).

Lipsa suportului pentru operațiunile de „schimbare” pe tipuri de date scurtate - octet, cuvânt de 16 biți. De exemplu, setul de instrucțiuni DEC Alpha conținea numai operații pe cuvinte de 64 de biți și a necesitat dezvoltarea și apelarea ulterioară a procedurilor pentru a efectua operații pe octeți, cuvinte pe 16 biți și 32 de biți.

Lipsa firmware-ului în interiorul procesorului în sine. Ceea ce este executat de microprograme într-un procesor CISC este executat într-un procesor RISC ca cod de mașină obișnuit (deși plasat într-o stocare specială), care nu este fundamental diferit de codul nucleului OS și al aplicațiilor. De exemplu, gestionarea erorilor de pagină a lui DEC Alpha și interpretarea tabelului de pagini au fost conținute în așa-numita PALCode (Libreria de arhitectură privilegiată), aflată în ROM. Prin înlocuirea PALCode, a fost posibilă conversia procesorului Alpha de la 64 de biți la 32 de biți, precum și modificarea ordinii octeților de cuvinte și a formatului intrărilor din tabelul paginii de memorie virtuală.

Să ne uităm la transportoare.

O pipeline este o metodă de organizare a calculelor folosită la procesoarele și controlerele moderne cu scopul de a crește performanța acestora (creșterea numărului de instrucțiuni executate pe unitatea de timp), tehnologie folosită în dezvoltarea calculatoarelor.

Ideea este de a împărți procesarea unei instrucțiuni de calculator într-o succesiune de etape independente, stocând rezultatele la sfârșitul fiecărei etape. Acest lucru permite circuitelor de control ale procesorului să primească instrucțiuni la viteza celei mai lente etape de procesare, dar mult mai rapid decât efectuarea unei procesări complete exclusive a fiecărei instrucțiuni de la început până la sfârșit.

Termenul „conveior” în sine provine din industrie, unde se utilizează un principiu de funcționare similar - materialul este tras automat de-a lungul benzii transportoare către un muncitor care efectuează acțiunile necesare cu acesta, următorul lucrător își îndeplinește funcțiile pe piesa de prelucrat rezultată, următorul face altceva, Astfel, până la sfârșitul transportorului, lanțul de muncitori finalizează complet toate sarcinile atribuite, fără însă a perturba ritmul producției. De exemplu, dacă operațiunea cea mai lentă durează un minut, atunci fiecare piesă va ieși de pe linia de asamblare într-un minut.

Se crede că pipeline computing a fost folosit pentru prima dată fie în proiectul ILLIAC II, fie în proiectul IBM Stretch. Proiectul IBM Stretch a inventat termenii „Fetch”, „Decode” și „Execute”, care au devenit apoi folosiți în mod obișnuit.

Multe procesoare moderne sunt controlate de un generator de ceas. Procesorul din interior este format din elemente logice și celule de memorie - flip-flops. Când sosește un semnal de la generatorul de ceas, flip-flops-urile își dobândesc noua valoare și logica durează ceva timp pentru a decoda noile valori. Apoi sosește următorul semnal de la generatorul de ceas, flip-flops iau noi valori și așa mai departe.

Prin ruperea secvențelor de porți logice în altele mai scurte și plasând flip-flops între aceste secvențe scurte, timpul necesar logicii pentru procesarea semnalelor este redus. În acest caz, durata unui ciclu de procesor poate fi redusă corespunzător.

Când scrieți cod de asamblare (sau dezvoltați un compilator care generează o secvență de instrucțiuni), se presupune că rezultatul execuției instrucțiunilor va fi exact același ca și cum fiecare instrucțiune s-ar fi terminat de executat înainte de a începe executarea următoarei. Utilizarea unei conducte păstrează această ipoteză, dar nu păstrează neapărat ordinea de execuție a instrucțiunilor. O situație în care executarea simultană a mai multor instrucțiuni poate duce la logic operare incorectă conductă, este cunoscută drept „pericol de conductă”. Există diverse metode de rezolvare a conflictelor (redirecționare și altele).

O arhitectură non-pipeline este semnificativ mai puțin eficientă datorită sarcinii mai mici asupra modulelor funcționale ale procesorului, în timp ce unul sau un număr mic de module își îndeplinesc rolul în timpul procesării instrucțiunilor. Conducta nu elimină complet timpul de inactivitate al modulelor din procesoare ca atare și nu reduce timpul de execuție al fiecărei instrucțiuni specifice, ci forțează modulele procesorului să lucreze în paralel pe diferite instrucțiuni, crescând astfel numărul de instrucțiuni executate per unitate de timp și, prin urmare, performanța generală a programelor.

Procesoarele pipeline sunt proiectate astfel încât procesarea instrucțiunilor să fie împărțită într-o secvență de etape, permițând procesarea simultană a mai multor instrucțiuni în diferite etape. Rezultatele fiecărei etape sunt transferate prin celulele de memorie către etapa următoare și așa mai departe până când instrucțiunea este executată. O astfel de organizare a procesorului, deși crește ușor timpul mediu de execuție al fiecărei instrucțiuni, oferă totuși o creștere semnificativă a performanței datorită frecvenței mari de finalizare a instrucțiunii.

Nu toate instrucțiunile sunt independente. În cea mai simplă conductă, în care procesarea instrucțiunilor este reprezentată de cinci etape, pentru a asigura încărcarea completă, în timp ce procesarea primei instrucțiuni este finalizată, trebuie procesate în paralel încă patru instrucțiuni independente consecutive. Dacă o secvență conține instrucțiuni care depind de cele care se execută în prezent, logica de control a unei conducte simple întrerupe mai multe etape inițiale ale conductei, plasând astfel o instrucțiune goală („bulă”) în conductă, uneori în mod repetat, până când dependența este rezolvată. . Există o serie de tehnici, cum ar fi redirecționarea, care reduc semnificativ nevoia de a suspenda o parte a conductei în astfel de cazuri. Totuși, dependența dintre instrucțiunile procesate simultan de procesor nu permite o creștere a performanței care este un multiplu al numărului de etape pipeline comparativ cu un procesor non-pipeline.

Avantaje și dezavantaje.

Transportorul nu ajută în toate cazurile. Există mai multe dezavantaje posibile. O conductă de instrucțiuni poate fi numită „complet pipelined” dacă poate accepta o nouă instrucțiune la fiecare ciclu de mașină (ciclul en:clock). În caz contrar, întârzierile trebuie forțate în conductă, ceea ce va aplatiza conducta în timp ce îi va degrada performanța.

Avantaje:

Timpul ciclului procesorului este redus, crescând astfel viteza de procesare a instrucțiunilor în majoritatea cazurilor.

Unele porți logice combinaționale, cum ar fi sumatorii sau multiplicatorii, pot fi accelerate prin creșterea numărului de porți logice. Utilizarea unei conducte poate preveni acumularea inutilă de elemente.

Defecte:

Un procesor non-pipeline execută o singură instrucțiune la un moment dat. Acest lucru previne întârzierile ramurilor de instrucțiuni (de fapt, fiecare ramificare este întârziată) și problemele asociate cu instrucțiunile secvențiale care sunt executate în paralel. În consecință, circuitul unui astfel de procesor este mai simplu și este mai ieftin de fabricat.

Latența instrucțiunilor într-un procesor non-pipeline este puțin mai mică decât într-un echivalent pipeline. Acest lucru se întâmplă deoarece flip-flop-uri suplimentare trebuie adăugate la procesorul pipeline.

Un procesor non-pipeline are o viteză stabilă de procesare a instrucțiunilor. Performanța unui procesor pipeline este mult mai dificil de prezis și poate varia semnificativ între programe.

producător de procesor grafic central

În timpul funcționării, procesorul prelucrează datele care se află în registrele sale, în RAM și în dispozitivele tampon externe ale procesorului. Total există 3 fluxuri de informații, procesate de procesor:

  1. Date de prelucrat

Setul de diverse instrucțiuni pe care un procesor le poate executa asupra datelor formează sistemul de instrucțiuni al procesorului. Cu cât setul de comenzi al procesorului este mai mare, cu atât arhitectura sa este mai complexă, cu atât comenzile sunt scrise mai lungi în octeți și cu atât timpul mediu de execuție al comenzilor procesorului este mai lung. Procesoarele Intel au mai mult de 1000 de instrucțiuni și sunt clasificate ca procesoare cu set de instrucțiuni extinse (CISC).

Aspectul arhitectural al unui computer compatibil IBMPC este determinat de o serie de proprietăți care asigură capacitatea de a opera software care controlează echipamentul conectat. Programele pot interacționa cu dispozitivele în diferite moduri:

    Utilizarea apelurilor de funcții ale sistemului de operare (întreruperi DOS, API Windows etc.);

    Utilizarea apelurilor de funcții ale sistemului de intrare/ieșire de bază (BIOS);

    Interacționează direct cu hardware-ul cunoscut de ei - porturi și memoria dispozitivelor sau controlere de interfață.

O astfel de diversitate există datorită deschiderii inițiale a arhitecturii primelor IBMPC-uri și păstrării soluțiilor existente (chiar dacă uneori nu sunt cele mai bune) în modelele ulterioare, acoperite cu noduri noi.

Aspectul unui computer compatibil cu PC este determinat în mare măsură de dezvoltatorii de la Microsoft și Intel. A devenit o tradiție pentru aceste companii să emită un document voluminos care dictează cerințele pentru dezvoltatorii de hardware pentru a obține sigla dorită „Designed for Microsoft Windows”.

Specificațiile definesc cerințele pentru funcționalitatea și performanța tuturor subsistemelor informatice, inclusiv a dispozitivelor periferice.

În prezent, se disting următoarele tipuri de arhitecturi de procesoare:

    RISC– capacitatea de a executa mai puține comenzi, dar la viteză mare Comenzile constând în comenzi mai simple sunt executate mai eficient și cu viteză mare. Dezavantaje: algoritmii complecși nu pot fi întotdeauna împărțiți într-o succesiune de comenzi simple.

    CISC– procesoarele sunt universale și pot fi utilizate în orice sistem informatic.

    MISC– tip intermediar de arhitectură. Are un nucleu de microprocesor intern realizat conform arhitecturii RISC si unul extern realizat conform structurii CISC.

Sloturile de expansiune sunt concepute pentru a instala carduri în diverse scopuri care extind funcționalitatea computerului. Sloturile transportă magistrale de expansiune I/O standard, precum și interfețe intermediare precum AMR și CNR. Autobuzele de expansiune I/O standardizate oferă baza pentru extinderea funcțională a unui computer personal compatibil cu PC, care de la naștere nu s-a limitat la îndeplinirea sarcinilor pur computaționale.

Autobuzele de expansiune sunt conectivitate la nivel de sistem: permit adaptoarelor și controlerelor să utilizeze direct resursele de sistem ale PC-ului - memorie și spațiu I/O, întreruperi și canale de acces direct la memorie. Ca rezultat, producătorii de module de expansiune trebuie să urmeze cu strictețe protocoalele de magistrală, inclusiv parametrii stricti de frecvență și sarcină, precum și diagramele de timp. Abaterile duc la incompatibilitate cu unele plăci de bază. Dacă, atunci când este conectat la interfețe externe, acest lucru duce la inoperabilitatea doar a dispozitivului în sine, atunci o conexiune incorectă la magistrala de sistem poate bloca funcționarea întregului computer. Trebuie luate în considerare și limitările resurselor PC. Cele mai deficitare dintre ele sunt liniile de cerere de întrerupere, problema întreruperii, cunoscută din magistrala ISA, nu a fost niciodată rezolvată radical odată cu trecerea la PCI. O altă deficiență - canalele de acces direct ale magistralei ISA, care sunt folosite și pentru controlul direct al magistralei - a dispărut pe magistrala PCI. Spațiul de adrese disponibil pentru memorie și porturile I/O, care a fost puțin înghesuit pentru abonații magistralei ISA, a fost extins semnificativ în PCI. Problemele de distribuție a resurselor pe autobuze sunt rezolvate în moduri diferite, dar cel mai des este folosită tehnologia PnP.

În computerele desktop moderne, magistrala principală de expansiune este PCI, portul AGP este prezent aproape peste tot, iar magistrala ISA, în ciuda recomandărilor de a se îndepărta de ea, rămâne ca mijloc de conectare a plăcilor de expansiune mai vechi.

Există 3 tipuri de anvelope:

    Autobuz de date

    Autobuz de adrese

    Autobuz de comandă

Autobuz de date– datele sunt copiate din RAM în registrul procesorului și invers. 64 de biți.

Autobuz de adrese– datele care sunt transmise sunt interpretate ca adrese ale celulelor RAM. Folosind această magistrală, procesorul citește adresele comenzilor care trebuie executate, precum și datele pe care operează comenzile. pe 32 de biți.

Autobuz de comandă(control) – furnizează comenzi care sunt executate de procesor. Comenzile simple se potrivesc într-un octet, cele mai complexe în 2,3 octeți. pe 32 de biți.

Principiul coloană-modular al construcției calculatoarelor

Autobuzele de pe placa de bază sunt folosite nu numai pentru comunicarea cu procesorul;

    ISA– vă permite să conectați toate dispozitivele din unitatea de sistem între ele, precum și să asigurați conectarea noilor dispozitive prin sloturi standard. Lățimea de bandă este de 5,5 MB pe secundă. Acum sunt folosite doar pentru conectarea dispozitivelor externe care nu necesită multă lățime de bandă (sunet, modemuri).

    EISA- magistrală de performanță medie pe 32 de biți, utilizată în principal pentru conectarea controlerelor de disc și adaptoarelor de rețea locale în servere. În prezent înlocuit de magistrala PCI. Utilizat anterior în platformele de server unde este necesar să instalați multe plăci de expansiune suplimentare. Slotul EISA poate găzdui carduri ISA (dar nu invers). Lățime de bandă de până la 32 MB pe secundă.

    VLB– magistrala locala, care este o conexiune intre procesor si RAM, ocolind magistrala principala. Această magistrală funcționează la o frecvență mai mare și permite rate de transfer de date mai mari. Această magistrală are o interfață pentru conectarea adaptorului video necesar pentru conectarea monitorului la complexul de calcul. Lățime de bandă de până la 130 MB pe secundă. Frecvența ceasului de funcționare – 50 MHz. Depinde de tipul de dispozitive conectate la această magistrală.

    PCI– un standard pentru conectarea dispozitivelor externe care a fost introdus pentru Pentium. În esență, aceasta este o interfață - autobuze locale cu conectori pentru conectarea componentelor externe ale sistemelor de calcul. Frecvența ceasului este de până la 166 MHz și asigură transferul de informații cu o viteză de 264 MB pe secundă, indiferent de numărul de dispozitive conectate. Odată cu introducerea acestui standard, a devenit posibilă conectarea tehnologiei „Plug&Play”: după conectarea fizică a dispozitivului, se asigură configurarea automată ca parte a sistemului de calcul.

    FSB– o magistrală care este utilizată pentru a conecta procesorul cu memoria RAM a computerului, această magistrală funcționează la o frecvență de 133 MHz și mai mare; Lățime de bandă de până la 800 Mb/sec. Frecvența magistralei FSB este parametrul principal indicat în specificația plăcii de bază.

    AGP– o interfață de magistrală specială, care este concepută pentru a conecta un adaptor video. Această interfață este necesară în dispozitivele de calcul moderne, deoarece parametrii magistralei PCI nu îndeplinesc cerințele de viteză ale adaptorului video. Lățime de bandă 1066 Mb/sec. Spre deosebire de magistrala PCI, pentru portul AGP apar probleme in compatibilitatea placilor de acceleratie cu tipul de placa de baza (chipset) si procesor, chiar daca parametrii acestora se potrivesc formal.

    USB– un standard de magistrală serial universal care definește modul în care un computer interacționează cu echipamentele periferice moderne. Acest port permite conectarea a 256 de dispozitive seriale diferite, iar dispozitivele pot fi conectate în lanț. Avantajul acestui standard este că dispozitivul periferic poate fi conectat. În timpul sesiunii de lucru curente fără repornire. Acest port vă permite să conectați computere la o rețea fără a utiliza hardware și software special.

Configurarea magistralelor de expansiune implică în principal setarea parametrilor de sincronizare a acestora:

    Pentru magistrala PCI, frecvența de ceas este setată, în plus, cu CMOSSetup pentru această magistrală o parte din moduri posibile– contestații competitive, palete de urmărire.

    Pentru portul AGP, sunt setate frecvența, modurile acceptate și deschiderile AGP.

    Pentru magistralele ISA și PCI, uneori setările CMOSSetup trebuie să aloce resurse de sistem (în principal linii de cerere de întrerupere).

    Pentru magistrala ISA, pe lângă frecvență (care ar trebui să fie de aproximativ 8 MHz), timpul de recuperare este setat pentru memorie de 8 și 16 biți și accesări I/O. Muncă instabilă adaptoarele pot necesita încetinirea magistralei ISA, dar în acest moment performanța redusă nu are un impact semnificativ asupra performanței computerului în ansamblu.

De la inventarea primelor calculatoare electronice în prima jumătate a secolului XX, a existat o singură adevărată revoluție. Acest lucru s-a întâmplat în anii 50-60, când tehnologiile semiconductoare au înlocuit tuburile de vid voluminoase. Apoi au fost alese cristale de siliciu ca material principal pentru producerea lor. asupra lor, cu ajutorul diverse tehnologii, tranzistoarele miniaturale și circuitele care le conectează sunt gravate. De atunci, pe parcursul a jumătate de secol, doar dimensiunea tranzistoarelor (procesul tehnic) s-a schimbat în jos, iar numărul lor pe cip a crescut.

Având în vedere utilizarea unei singure tehnologii (și absența unor alternative practic aplicabile, deoarece introducerea în masă a procesoarelor cuantice este încă departe), singura modalitate de a adapta cipurile de calcul pentru anumite sarcini a fost inventarea diferitelor arhitecturi CPU.

Ce este arhitectura procesorului

Arhitectura unui procesor este un set de principii principale ale designului său, un aspect general al pieselor pe un cip de siliciu și o diagramă a interacțiunii software-ului cu cip. Pentru a spune și mai simplu, arhitectura este schema prin care este aranjat procesorul.

De-a lungul anilor, au fost create multe arhitecturi diferite. Cele mai populare sunt CISC, MISC, VLIW și RISC. Diferențele dintre ele se referă în principal la sistemul de interacțiune al procesorului cu datele prelucrate. În prezent, benzile transportoare sunt utilizate în mod activ Arhitecturi CISCși RISC.

Cum funcționează arhitectura procesorului

Într-o arhitectură pipeline, datele sunt procesate secvenţial, trecând de la o etapă la alta. De exemplu, în prima etapă, procesorul primește o instrucțiune, în a doua, datele sunt citite din memorie, în a treia, se efectuează o operație de calcul, iar în a patra, rezultatul este scos. Când prima etapă a conductei este eliberată, poate începe executarea următoarei instrucțiuni. Acest proces poate fi comparat cu munca unei fabrici de mașini: atunci când un muncitor înșurubează ultimul butuc al roții, transportorul merge mai departe. Al doilea lucrător înșurubează roțile pe butuci, iar primul înșurubează butucii din nou pe următoarea mașină.

Numărul de etape de conductă poate varia. Dacă programul primește datele corect și nu conține erori, atunci această abordare îmbunătățește performanța. Cu cât conducta este mai lungă, cu atât se efectuează mai multe operații pe ciclu de ceas (1 herți de frecvență a procesorului). Într-o analogie cu o fabrică de mașini, numărul de trepte transportoare este numărul de muncitori din spatele centurii de-a lungul căruia se deplasează corpurile mașinilor asamblate. Cu cât megaherțul este mai mare, cu atât banda se mișcă mai repede, cu atât mai repede funcționează colectorii. Totuși, dacă primul angajat face ceva greșit, rezultatul va fi un defect și mașina va trebui reasamblată.

În procesor totul este similar: dacă este pornit stadiu timpuriu apare o eroare pe transportor - transportorul trebuie repornit. Acest lucru încetinește productivitatea și irosește energie. Deoarece eficiența energetică este foarte importantă pentru dispozitivele compacte și mobile, arhitectura RISC a fost creată special pentru acestea. Diferă de CISC printr-un set simplificat de comenzi pe care procesorul le acceptă și o conductă scurtată. Această caracteristică duce la o scădere a performanței pe fundalul CISC (și pe ea sunt construite procesoare de computer x86 de la Intel și AMD), dar permite reducerea la minimum a energiei risipite.

Arhitectura procesorului ARM

Vom lăsa în seama specialiștilor IT toate tipurile de MIPS, PowerPC, SPARC și alte arhitecturi de tip RISC. Când vine vorba de smartphone-uri, merită să acordați mai multă atenție ARM Acesta este un tip de arhitectură RISC cu o conductă scurtă, care este una dintre cele mai comune și de succes. Este ARM care este folosit de majoritatea producătorilor (Qualcomm, MediaTek, Apple, Samsung, Huawei-HiSilicon și alții). Doar Intel folosește nuclee CISC compatibile cu x86 în atomii săi SoC.

O caracteristică a procesoarelor ARM este utilizarea unei conducte scurte. Lungimea sa este de 3 sau mai multe etape, ceea ce nu este mult în comparație cu zecile de etape ale CISC. Datorită acestui fapt, defecțiunile în conductă au un impact minim asupra vitezei de procesare a programului, maximizând sarcina fiecărui ciclu cât mai eficient posibil. Prin urmare, ARM a devenit cea mai populară arhitectură de procesor pentru smartphone-uri și tablete.

Arhitectura procesorului și microarhitectura

Destul de des în mass-media și pe Internet există o confuzie între conceptele de arhitectură a procesorului și microarhitectură. Pentru a clarifica, ar trebui stabilită relația dintre acești termeni. Deci, arhitectura este principiul general al proiectării și funcționării unui procesor, iar microarhitectura este doar una dintre opțiunile de implementare a acestuia, care are propriile caracteristici, dar menține compatibilitatea cu arhitectura de bază.

Tipuri de microarhitecturi ARM pentru smartphone-uri

Majoritatea chipset-urilor pentru smartphone-uri conțin procesoare bazate pe ARM, și anume microarhitecturi din familia Cortex și altele. O listă cu versiunile actuale și diferențele dintre acestea este prezentată mai jos.

S-ar putea să te intereseze:

mobcompany.info

Arhitectura procesorului (probleme generale și structură)

În primul rând, ce ne spune Wikipedia despre Pentium 3? Intel Pentium III (în vorbirea colocvială rusă - Intel Pentium trei) este un microprocesor compatibil x86 al arhitecturii Intel P6, anunțat pe 26 februarie 1999. Miezul Pentium III este un nucleu Deschutes modificat (care a fost folosit la procesoarele Pentium II). În comparație cu predecesorul său, setul de comenzi a fost extins (a fost adăugat setul de instrucțiuni SSE) și gestionarea memoriei a fost optimizată. Acest lucru a făcut posibilă creșterea performanței atât în ​​aplicațiile noi care folosesc extensii SSE, cât și în cele existente (datorită vitezei crescute a memoriei). A fost introdus și un număr de serie pe 64 de biți, unic pentru fiecare procesor.

Întrebare: Arhitectura procesorului - ce este? Răspuns: Termenul „arhitectură procesor” în prezent nu are o interpretare clară. Din punctul de vedere al programatorilor, arhitectura unui procesor se referă la capacitatea sa de a executa un anumit set de coduri de mașină. Cele mai multe procesoare desktop moderne aparțin familiei x86 sau procesoarelor compatibile Intel din arhitectura IA32 (arhitectura procesorului Intel pe 32 de biți). Fundația sa a fost pusă de Intel în procesorul i80386, dar în generațiile ulterioare de procesoare a fost completată și extinsă atât de Intel însuși (au fost introduse noi seturi de instrucțiuni MMX, SSE, SSE2 și SSE3), cât și de către producători terți (seturi de instrucțiuni EMMX). , 3DNow! și Extended 3DNow!, dezvoltate de AMD). Cu toate acestea, dezvoltatorii de hardware de computer au dat un sens ușor diferit conceptului de „arhitectură a procesorului” (uneori, pentru a evita confuzia, este folosit termenul „microarhitectură”). Din punctul lor de vedere, arhitectura procesoarelor reflectă principiile de bază ale organizării interne a unor familii specifice de procesoare. De exemplu, arhitectura procesoarelor Intel Pentium a fost desemnată ca procesoare P5, Pentium II și Pentium III - P6, iar popularul Pentium 4 din trecutul recent a fost denumit arhitectura NetBurst. După ce Intel a închis arhitectura P5 producătorilor terți, principalul său concurent, AMD, a fost forțat să-și dezvolte propria arhitectură - K7 pentru procesoarele Athlon și Athlon XP și K8 pentru Athlon 64.

Întrebare: Ce procesoare sunt mai bune, pe 64 de biți sau pe 32 de biți? Și de ce? Răspuns: O extensie destul de reușită pe 64 de biți a arhitecturii clasice IA32 pe 32 de biți a fost propusă în 2002 de AMD (numită inițial x86-64, acum AMD64) în familia de procesoare K8. După ceva timp, Intel și-a propus propria denumire - EM64T (Tehnologie Extended Memory 64-bit). Dar, indiferent de nume, esența noii arhitecturi este aceeași: lățimea principalelor registre interne ale procesoarelor pe 64 de biți s-a dublat (de la 32 la 64 de biți), iar instrucțiunile de cod x86 pe 32 de biți au primit 64- analogi de biți. În plus, prin extinderea lățimii magistralei de adrese, cantitatea de memorie adresabilă de procesor a crescut semnificativ.

Si asta e. Deci, cei care se așteaptă la o creștere semnificativă a performanței de la procesoarele pe 64 de biți vor fi dezamăgiți - performanța lor în marea majoritate a aplicațiilor moderne (care sunt în mare parte proiectate pentru IA32 și este puțin probabil să fie recompilate pentru AMD64/EM64T în viitorul apropiat) este practic. la fel ca și vechile procesoare pe 32 de biți. Întregul potențial al arhitecturii pe 64 de biți poate fi dezvăluit doar într-un viitor îndepărtat, atunci când aplicațiile optimizate pentru noua arhitectură apar (sau pot să nu apară) în cantități masive. În orice caz, trecerea la 64 de biți va fi cea mai eficientă pentru programele care funcționează cu baze de date, programe de clasă CAD/CAE, precum și pentru programele de lucru cu conținut digital.

Întrebare: Ce este un nucleu de procesor? Răspuns: În cadrul aceleiași arhitecturi, procesoare diferite pot fi destul de diferite unele de altele. Și aceste diferențe sunt întruchipate într-o varietate de nuclee de procesor care au un anumit set de caracteristici strict definite. Cel mai adesea, aceste diferențe sunt concretizate în frecvențe diferite ale magistralei de sistem (FSB), dimensiuni de cache de nivel al doilea, suport pentru anumite sisteme de instrucțiuni noi sau procese tehnologice prin care sunt fabricate procesoarele. Adesea, schimbarea nucleului din aceeași familie de procesoare presupune schimbarea soclului procesorului, ceea ce ridică întrebări cu privire la compatibilitatea ulterioară a plăcilor de bază. Cu toate acestea, în procesul de îmbunătățire a nucleului, producătorii trebuie să-i facă modificări minore, care nu pot revendica un „nume propriu”. Astfel de modificări sunt numite revizuiri ale nucleului și sunt cel mai adesea indicate prin combinații alfanumerice. Cu toate acestea, noile revizuiri ale aceluiași nucleu pot conține inovații destul de notabile. Astfel, Intel a introdus suport pentru arhitectura EM64T pe 64 de biți în anumite procesoare din familia Pentium 4 tocmai în timpul procesului de modificare a revizuirii.

Întrebare: Care este avantajul procesoarelor dual-core față de cele single-core? Răspuns: Cel mai important eveniment din 2005 a fost apariția procesoarelor dual-core. Până în acest moment, procesoarele clasice single-core epuiseră aproape complet rezervele pentru creșterea productivității prin creșterea frecvenței de operare. Piesa de poticnire nu a fost doar generarea prea mare de căldură a procesoarelor care funcționează la frecvențe înalte, ci și problemele cu stabilitatea acestora. Așa că a fost ordonată calea extinsă de dezvoltare a procesoarelor pentru următorii ani, iar producătorii lor, vrând-nevrând, au trebuit să stăpânească o cale nouă, intensivă, pentru a crește performanța produsului. Ca întotdeauna, Intel s-a dovedit a fi cel mai eficient de pe piața CPU pentru desktop, fiind primul care a anunțat procesoare dual-core Intel Pentium D și Intel Extreme Edition. Cu toate acestea, AMD cu Athlon64 X2 a rămas în urma concurentului său cu literalmente câteva zile. Avantajul indubitabil al procesoarelor dual-core din prima generație, care includ procesoarele menționate mai sus, este compatibilitatea lor deplină cu plăcile de bază existente (firesc, destul de moderne, pe care trebuie doar să actualizați BIOS-ul). A doua generație de procesoare dual-core, în special Intel Core 2 Duo, „necesită” chipset-uri special concepute pentru ei și nu funcționează cu plăci de bază mai vechi.

Nu trebuie să uităm că astăzi doar software-ul profesional (inclusiv lucrul cu grafică, date audio și video) este mai mult sau mai puțin optimizat pentru lucrul cu procesoare dual-core, în timp ce pentru birou sau utilizator de acasă Cel de-al doilea nucleu de procesor este uneori util, dar mult mai des este o greutate moartă. Beneficiul procesoarelor dual-core în acest caz este vizibil cu ochiul liber numai atunci când pe computer rulează sarcini de fundal (scanare de viruși, firewall software etc.). În ceea ce privește câștigul de performanță în jocurile existente, acesta este minim, deși au apărut deja primele jocuri de genuri populare care profită din plin de beneficiile utilizării celui de-al doilea nucleu.

Cu toate acestea, dacă astăzi întrebarea este alegerea unui procesor pentru un PC de gaming în intervalul de preț mediu sau superior, atunci, în orice caz, este mai bine să preferați un procesor dual-core sau chiar un procesor cu 4 nuclee la o frecvență puțin mai mare. analog cu un singur nucleu, deoarece piața se îndreaptă în mod constant către sisteme multi-core și calcule paralele optimizate. Această tendință va domina în următorii ani, astfel încât ponderea software-ului optimizat pentru mai multe nuclee va crește constant și foarte curând poate veni un moment în care multi-core-urile va deveni o necesitate urgentă.

Întrebare: Ce este memoria cache? Răspuns: Toate procesoarele moderne au un cache (în engleză - cache) - o serie de RAM ultra-rapidă, care este un buffer între controlerul relativ lent memorie de sistem si procesor. Acest buffer stochează blocuri de date cu care CPU lucrează în prezent, reducând astfel semnificativ numărul de apeluri ale procesorului către memoria sistemului extrem de lentă (comparativ cu viteza procesorului). Acest lucru crește semnificativ performanța generală a procesorului.

Mai mult, la procesoarele moderne, cache-ul nu mai este o singură matrice de memorie, ca înainte, ci este împărțit în mai multe niveluri. Cel mai rapid, dar relativ mic ca dimensiune, cache de prim nivel (notat ca L1), cu care funcționează nucleul procesorului, este cel mai adesea împărțit în două jumătăți - memoria cache de instrucțiuni și memoria cache de date. Cache-ul de al doilea nivel interacționează cu cache-ul L1 - L2, care, de regulă, este mult mai mare ca volum și este amestecat, fără a fi împărțit într-un cache de instrucțiuni și un cache de date. Unele procesoare desktop, urmând exemplul procesoarelor server, dobândesc uneori și un cache L3 de nivel al treilea. Cache-ul L3 este de obicei chiar mai mare, deși oarecum mai lent decât L2 (datorită faptului că autobuzul dintre L2 și L3 este mai îngust decât autobuzul dintre L1 și L2), dar viteza sa, în orice caz, este disproporționat mai mare decât memoria sistemului de viteză.

Există două tipuri de cache: cache exclusiv și neexclusiv. În primul caz, informațiile din cache-urile de toate nivelurile sunt clar delimitate - fiecare dintre ele conține exclusiv informații originale, în timp ce în cazul unui cache neexclusiv, informațiile pot fi duplicate la toate nivelurile de cache. Astăzi este dificil de spus care dintre aceste două scheme este mai corectă - ambele au atât minusuri, cât și plusuri. Schema de cache exclusivă este folosită la procesoarele AMD, în timp ce cea neexclusivă este folosită la procesoarele Intel.

Întrebare: Ce este o magistrală de procesor? Răspuns: Magistrala procesorului (cunoscută și sub denumirea de sistem), denumită cel mai adesea FSB (Front Side Bus), este un set de linii de semnal, unite în funcție de scopul lor (date, adrese, control), care au anumite caracteristici electrice și transfer de informații. protocoale. Astfel, FSB-ul acționează ca o coloană vertebrală între procesor (sau procesoare) și toate celelalte dispozitive din computer: memorie, placa video, hard disk și așa mai departe. Doar CPU-ul este conectat direct la magistrala de sistem; alte dispozitive sunt conectate la acesta prin controlere speciale, concentrate în principal în podul de nord al setului logic de sistem (chipset) al plăcii de bază. Deși pot exista și excepții - de exemplu, la procesoarele AMD din familia K8, controlerul de memorie este integrat direct în procesor, oferind astfel o interfață memorie-CPU mult mai eficientă decât soluțiile de la Intel, care rămân fidele canoanelor clasice ale organizarea interfeței procesorului extern. Principalii parametri FSB ai unor procesoare sunt prezentați în tabel

CPU Frecvența FSB, MHz Tip FSB Debit teoretic FSB, Mb/s
Intel Pentium III 100/133 AGTL+ 800/1066
Intel Pentium 4 100/133/200 QPB 3200/4266/6400
Intel Pentium D 133/200 QPB 4266/6400
Intel Pentium 4EE 200/266 QPB 6400/8533
Intel core 133/166 QPB 4266/5333
Intel Core 2 200/266 QPB 6400/8533
AMD Athlon 100/133 EV6 1600/2133
AMD Athlon XP 133/166/200 EV6 2133/2666/3200
AMD Sempron 800 HyperTransport
AMD Athlon 64 800/1000 HyperTransport 6400/8000

Procesoarele Intel folosesc magistrala de sistem QPB (Quad Pumped Bus), care transferă date de patru ori pe ciclu de ceas, în timp ce magistrala de sistem EV6 a procesoarelor AMD Athlon și Athlon XP transferă date de două ori pe ciclu de ceas (Duble Data Rate). Arhitectura AMD64, folosită de AMD în linia de procesoare Athlon 64/FX/Opteron, folosește o nouă abordare pentru organizarea interfeței CPU - aici, în locul magistralei procesorului FSB și pentru comunicarea cu alte procesoare, se utilizează următoarele: a magistrală HyperTransport serială de mare viteză (pachet), construită conform schemei Peer -to-Peer (punct-la-punct), oferind viteză mare de schimb de date cu latență relativ scăzută.

Și în sfârșit, detalii!

Procesele de prima generație din această familie (Intel Pentium III 450 și Intel Pentium III 500) au fost anunțate de Intel la sfârșitul lunii februarie 1999 și aveau următoarele caracteristici:

  • tehnologie de producție: 0,25 microni;
  • nucleu procesor: Katmai, bazat pe Deschutes ( versiune ulterioară nuclee de procesor Intel Pentium II) cu o conductă SSE adăugată pentru procesarea a 70 de instrucțiuni SSE noi;
  • Cache L1: volum - 32 KB (16 KB pentru date plus 16 KB pentru instrucțiuni);
  • Cache L2: volum - 512 KB, frecvență de ceas - jumătate din frecvența ceasului de bază, extern (nu este integrat pe același cip cu procesorul, dar realizat pe cipuri separate situate pe aceeași placă de circuit imprimat ca și cipul procesorului), suportă ECC- un mecanism pentru detectarea și corectarea erorilor la schimbul de date cu miezul procesorului; în terminologia Intel, un astfel de cache L2 este numit Discrete Cache;
  • Frecvența FSB: 100 MHz, suportat ECC;
  • Tensiunea de alimentare a miezului procesorului: 2,0 V;
  • multiprocesare: acceptă până la două procesoare pe o magistrală de sistem;
  • identificare: fiecare procesor are un număr de serie unic de 96 de biți, „cusut” în el în timpul producției, care poate fi citit de software;
  • dacă utilizatorul nu dorește să „dezvăluie” numărul de serie al procesorului său, abilitatea de a citi numărul său de serie poate fi blocată la nivelul BIOS folosind programul de configurare BIOS al plăcii de bază sau utilitarul Procesor Număr de serie Conector fizic Control Utility: Slot 1;
  • versiune: S.E.C.C.- sau S.E.C.C.2-cartuș.

online-studies.ru

Arhitectura procesoarelor moderne

Introducere

4. Virtualizare

6. Tehnologii viitoare

Bibliografie

Introducere

Un procesor (sau unitatea centrală de procesare, CPU) este un cip tranzistor care este principalul element de calcul și control al unui computer.

Denumirea în engleză a procesorului este CPU (Central Processing Unit).

Procesorul este un cip semiconductor special dezvoltat pe care sunt amplasate tranzistoarele, conectate prin conductori de aluminiu pulverizați. Cristalul este plasat într-o carcasă ceramică cu contacte.

Primul procesor Intel - i4004, lansat în 1971, avea 2300 de tranzistori pe un cip, iar procesorul Intel Pentium 4, lansat pe 14 aprilie 2003, are deja 55 de milioane de procesoare moderne sunt fabricate folosind tehnologia de 0,13 microni, adică . Grosimea cipului procesorului este de 0,13 microni. Pentru comparație, grosimea cipului primului procesor Intel a fost de 10 microni.

Figura 1 – schema circuitului procesorului

Bloc de control - controlează funcționarea tuturor blocurilor de procesor.

Bloc aritmetic-logic - efectuează calcule aritmetice și logice.

Registre - un bloc pentru stocarea datelor și a rezultatelor intermediare ale calculelor - memoria RAM internă a procesorului.

Bloc de decodare - convertește datele în sistem binar.

Unitate de preluare prealabilă - Primește o comandă de la un dispozitiv (tastatură etc.) și solicită instrucțiuni în memoria sistemului.

Cache de nivel 1 (sau pur și simplu cache) stochează instrucțiuni și date utilizate frecvent.

Cache de nivel 2 - stochează datele utilizate frecvent.

Bloc magistrală - folosit pentru introducerea și ieșirea informațiilor.

Această schemă corespunde procesoarelor cu arhitectură P6. Procesoarele de la Pentium Pro la Pentium III au fost create folosind această arhitectură. Procesoarele Pentium 4 sunt fabricate folosind noua arhitectură Intel® NetBurst.

În procesoarele Pentium 4, memoria cache de nivel 1 este împărțită în două părți - memoria cache de date și memoria cache de instrucțiuni.

Există două tipuri de viteză de ceas - internă și externă.

Viteza de ceas intern este viteza de ceas la care are loc lucrul în interiorul procesorului.

Frecvența ceasului extern sau frecvența magistralei de sistem este frecvența de ceas la care se fac schimb de date între procesor și memoria RAM a computerului.

Până în 1992, procesoarele aveau aceleași frecvențe interne și externe, iar în 1992 Intel a introdus procesorul 80486DX2, în care frecvențele interne și externe erau diferite - frecvența internă era de 2 ori mai mare decât cea externă. Două tipuri de astfel de procesoare au fost lansate cu frecvențe de 25/50 MHz și 33/66 MHz, apoi Intel a lansat procesorul 80486DX4 cu frecvență internă triplă (33/100 MHz).

De atunci, și alte companii producătoare au început să producă procesoare cu frecvență internă dublă, iar IBM a început să producă procesoare cu frecvență internă triplă (25/75 MHz, 33/100 MHz și 40/120 MHz).

La procesoarele moderne, de exemplu, cu o viteză de ceas a procesorului de 3 GHz, frecvența magistralei de sistem este de 800 MHz.

Pentru ce sunt seturile de comenzi suplimentare? În primul rând, pentru a crește performanța la efectuarea anumitor operațiuni. O comandă din setul secundar efectuează de obicei o acțiune care ar necesita un program mic constând din comenzi din setul principal. Din nou, de regulă, o instrucțiune este executată de procesor mai repede decât secvența pe care o înlocuiește. Cu toate acestea, în 99% din cazuri, nimic din ceea ce nu a putut fi făcut folosind comenzile de bază nu poate fi făcut folosind comenzile din setul suplimentar. Astfel, verificarea menționată mai sus de către program pentru suportul seturilor de instrucțiuni suplimentare de către procesor ar trebui să îndeplinească o funcție foarte simplă: dacă, de exemplu, procesorul acceptă SSE, atunci vom număra rapid și folosind instrucțiuni din setul SSE. Dacă nu, vom număra mai încet, folosind comenzi din setul principal. Un program scris corect trebuie să acţioneze astfel. Cu toate acestea, acum aproape nimeni nu verifică procesorul pentru suport MMX, deoarece toate procesoarele lansate în ultimii 5 ani sunt garantate să accepte acest set. Pentru referință, iată un tabel care rezumă informații despre suportul diferitelor seturi de instrucțiuni extinse de către diferite procesoare desktop.

tabelul 1

Compararea seturi de instrucțiuni majore

*in functie de modificare

În 1970 Dr. Marchian Edward Hoff și o echipă de ingineri de la Intel au proiectat primul microprocesor. În orice caz, acesta este ceea ce se crede în mod obișnuit - deși, de fapt, în 1968, inginerii Ray Holt și Steve Geller au creat un cip SLF universal similar pentru computerul de bord al avionului de luptă F-14. Primul procesor a funcționat la 750 kHz. Procesoarele Intel de astăzi sunt de peste zece mii de ori mai rapide decât precursorii lor.

Frecvența ceasului este numărul de operații elementare (cicluri) pe care procesorul le poate efectua într-o secundă. Până de curând, acest indicator nu era doar cel mai important pentru utilizatori, ci și singurul semnificativ! Mulți utilizatori au încercat să-și „overclockeze” procesorul folosind programe speciale. Cu toate acestea, frecvența procesoarelor, chiar și fără overclockare, a crescut exponențial - în deplină conformitate cu așa-numita „lege a lui Moore” (la un moment dat, Gordon Moore a prezis că în fiecare an și jumătate frecvența microprocesoarelor se va dubla împreună cu numărul de tranzistori de pe cip). Acest principiu a funcționat cu succes până în 2004 - până când legile fizicii au stat în calea inginerilor Intel. La urma urmei, dimensiunile tranzistorilor nu pot fi „micșurate” la infinit. Deja astăzi, procesoarele sunt fabricate folosind tehnologia de 65 de nanometri (tehnologia de 65 de nanometri), iar grosimea „substratului” tranzistorului nu depășește 1 nm (doar 5 atomi). În următorii ani, dimensiunile tranzistorului se pot micșora la 22 nm, ceea ce este aproape de limita fizică. Concomitent cu reducerea dimensiunii tranzistoarelor, cantitatea de căldură generată de un procesor în funcțiune crește brusc - de exemplu, la ultimele modele Pentium, generarea de căldură este de aproximativ 120 de wați (ceea ce corespunde la două becuri de uz casnic)!

1. 8086: primul procesor PC

8086 a fost primul procesor x86 - Intel lansase deja modelele 4004, 8008, 8080 și 8085. Acest procesor pe 16 biți ar putea funcționa cu 1 MB de memorie pe o magistrală de adrese externă de 20 de biți. Viteza de ceas aleasă de IBM (4,77 MHz) a fost destul de mică, iar până la sfârșitul carierei procesorul rula la 10 MHz. Primele PC-uri au folosit un derivat al procesorului 8088, care avea doar o magistrală de date externă de 8 biți. Interesant este că sistemele de control din navetele americane folosesc procesoare 8086, iar NASA a fost nevoită să cumpere procesoare prin eBay în 2002 pentru că Intel nu le mai fabrica.

masa 2

Specificații 8086

80286: 16 MB de memorie, dar încă 16 biți

Lansat în 1982, procesorul 80286 a fost de 3,6 ori mai rapid decât 8086 la aceeași viteză de ceas. Ar putea gestiona până la 16 MB de memorie, dar 286 era încă un procesor pe 16 biți. A devenit primul procesor x86 echipat cu o unitate de gestionare a memoriei (MMU), care a permis lucrul cu memoria virtuală. Ca și 8086, procesorul nu conținea o unitate în virgulă mobilă (FPU), dar putea folosi un cip coprocesor x87 (80287). Intel a lansat 80286 la o viteză maximă de ceas de 12,5 MHz, deși concurenții au reușit să atingă 25 MHz.

Tabelul 3

Specificatii 8026

386: 32 de biți și cu cache

Intel 80836 a fost primul procesor x86 cu o arhitectură pe 32 de biți. Au fost lansate mai multe versiuni ale acestui procesor. Cele mai faimoase două sunt 386 SX (Single-word eXternal), care a folosit o magistrală de date pe 16 biți, și 386 DX (Double-word eXternal), care a folosit o magistrală de date pe 32 de biți. Mai pot fi remarcate două versiuni: SL, primul procesor x86 cu suport cache (extern) și 386EX, care a fost folosit în programul spațial (de exemplu, telescopul Hubble folosește acest procesor).

Tabelul 4

Caracteristici 386

486: FPU și multiplicatori

Procesorul 486 a devenit iconic pentru mulți, deoarece a marcat începutul experienței unei întregi generații cu computerele. De fapt, celebrul 486 DX2/66 a fost mult timp considerat configurația minimă pentru jucători. Acest procesor, lansat în 1989, avea o serie de noi caracteristici interesante, cum ar fi un coprocesor FPU pe cip, un cache de date și a introdus pentru prima dată un multiplicator. Coprocesorul x87 a fost integrat în linia 486 DX (nu SX). În procesor a fost integrat un cache de prim nivel de 8 KB (mai întâi cu write-through, apoi cu write-back cu performanță ceva mai mare). A fost posibil să adăugați un cache L2 la placa de bază (funcționând la frecvența magistralei).

A doua generație de 486 de procesoare a achiziționat un multiplicator CPU, deoarece procesorul era mai rapid decât FSB, au apărut versiunile DX2 (multiplicator 2x) și DX4 (multiplicator 3x). O altă anecdotă: „487SX”, vândut ca FPU pentru 486SX, a fost în esență un procesor 486DX complet care a deconectat și a înlocuit procesorul original.

Tabelul 5

Caracteristici 486

DX4 avea 16 KB de cache și mai mulți tranzistori - 1,6 milioane Acest procesor, fabricat folosind o tehnologie de proces de 600 nm cu o zonă a matriței de 76 mm², consuma mai puțină energie decât 486 original (la 3,3 V).

Să ne uităm la ele folosind procesorul IntelPentium1 ca exemplu.

În iunie 1989, Vinod Dahm a realizat primele schițe ale unui procesor cu numele de cod P5. La sfârșitul anului 1991, dezvoltarea prototipului procesorului a fost finalizată, iar inginerii au putut rula software-ul pe acesta. A început etapa de optimizare a topologiei și de creștere a eficienței operaționale. În februarie 1992, proiectarea a fost în mare parte finalizată și a început testarea cuprinzătoare a unui lot pilot de procesoare. În aprilie 1992, a fost luată decizia de a începe producția industrială Oregon Factory Nr. 5 ca bază industrială principală și a început dezvoltarea finală a caracteristicilor tehnice.

Principalele diferențe față de procesorul 486:

a) Arhitectura suprascalară. Datorită utilizării arhitecturii superscalare, procesorul poate executa 2 instrucțiuni într-un singur ciclu de ceas. Această posibilitate există datorită prezenței a două transportoare - u- și v-. u-pipeline - cel principal, efectuează toate operațiunile pe numere întregi și numere reale; V-pipeline este auxiliară, efectuează doar operații simple pe numere întregi și parțial pe cele reale. Pentru ca programele mai vechi (pentru 486) să profite din plin de capacitățile acestei arhitecturi, a fost necesar să le recompilăm. Pentium este primul procesor CISC care utilizează o arhitectură multi-pipeline.

b) magistrală de date pe 64 de biți. Permite procesorului Pentium să schimbe de două ori mai multe date cu RAM într-un ciclu de magistrală decât 486 (la aceeași frecvență de ceas).

c) Mecanism de predicție a adreselor de ramuri. Folosit pentru a reduce timpul de nefuncționare al conductei cauzat de întârzierile de preluare a instrucțiunilor atunci când contorul de adrese se modifică în timpul execuției instrucțiunilor de ramificație. Pentru a face acest lucru, procesorul folosește un buffer de adresă de ramură BTB (Branch Target Buffer), care utilizează algoritmi de predicție a adresei de ramură.

d) Memorarea separată a codului programului și a datelor. Procesoarele Pentium folosesc un cache de nivel 1 de 16 KB (cache L1), împărțit în 2 segmente: 8 KB pentru date și 8 KB pentru instrucțiuni. Acest lucru îmbunătățește performanța și permite ca stocarea dublă să fie disponibilă mai des decât era posibil anterior. În plus, mecanismul de stocare în cache a fost modificat.

e) Unitate de virgulă mobilă îmbunătățită (FPU).

f) Multiprocesare simetrică (SMP).

3. Trecerea la procesoare dual-core

Figura 2 – micrografie a unuia dintre primele procesoare dual-core

procesor computer single core dual core

Intel a fost primul care a introdus cipuri dual-core pentru PC-uri desktop - pe 11 aprilie, a anunțat oficial începutul livrărilor procesorului AMD Pentium 4 Extreme Edition 840 nu a durat mult să aștepte și deja pe 21 aprilie a prezentat publicului trei procesoare de server Opteron dual-core și a introdus, de asemenea, o nouă marcă comercială - Athlon 64 X2, sub care procesoarele dual-core pentru PC-uri desktop au fost prezentate oficial pe 9 mai.

Trecerea la o arhitectură dual-core se datorează faptului că metodele tradiționale de creștere a productivității s-au epuizat practic. Din cauza unei serii de probleme tehnologice, ritmul de creștere a frecvențelor de ceas a încetinit recent în mod semnificativ. De exemplu, în ultimul an înainte de apariția procesoarelor dual-core, Intel a reușit să crească frecvențele procesoarelor sale cu doar 400 MHz, iar concurenții de la AMD au accelerat cu doar 200 MHz. După cum puteți vedea, creșterea vitezei ceasului nu este ușoară. Dar alte metode, cum ar fi creșterea vitezei magistralei și a dimensiunii memoriei cache, nu asigură o creștere vizibilă a performanței.

Prin urmare, este clar de ce introducerea procesoarelor dual-core s-a dovedit a fi cel mai logic pas către noi culmi de performanță și a marcat începutul unei noi ere în dezvoltarea pieței procesoarelor.

Ce este un procesor dual-core? La prima vedere, acestea sunt doar două procesoare combinate într-o carcasă comună. Dar nu este atât de simplu. În primul rând, trebuie să faceți distincția între termenii „procesor” și „procesor core”. În al doilea rând, există problema resurselor partajate, accesul la care trebuie distribuit între cele două nuclee. Dacă îl priviți din punct de vedere software, sistemul tratează un procesor dual-core ca pe două independente. Este clar că un procesor dual-core este capabil să execute simultan două fluxuri de instrucțiuni, în timp ce un procesor convențional efectuează calcule strict pe rând. Înainte de aceasta, s-a încercat deja să se separe instrucțiunile executabile - vorbim despre tehnologia Intel Hyper-Threading. Dar în el, două procesoare „virtuale” împart aproape toate resursele unui procesor „fizic” (cache-uri, conducte, unități de execuție). Aproape toate resursele sunt partajate - și dacă sunt deja ocupate de unul dintre firele de execuție, atunci al doilea va fi forțat să aștepte eliberarea lor.

De fapt, principiul de funcționare al unui procesor cu Hyper-Threading este similar cu principiul de funcționare al unui sistem de operare multitasking, doar că acest lucru se întâmplă nu la nivel software, ci la nivel hardware. Împărțirea firului în două părți, de regulă, face posibilă încărcarea mai eficientă a unităților de execuție ale procesorului. Și, în același timp, va fi puțin mai ușor pentru sistemul de operare să simuleze multe computere independente pe un procesor existent.

Un procesor dual-core cu drepturi depline este o chestiune complet diferită. În acest caz, sistemul detectează de fapt două nuclee de procesor „cinstite”. Iar creșterea performanței nu mai este de 10-20% (media pentru un procesor cu tehnologie Hyper-Threading), ci de 80-90% și chiar mai mult (firesc, la folosirea ambelor nuclee). În principiu, un procesor dual-core este un sistem SMP (SMP - Symmetric MultiProcessing, termen care înseamnă un sistem cu mai multe procesoare egale). În esență, nu este diferit de un sistem obișnuit cu dublu procesor, în care sunt instalate două procesoare independente. Rezultatul este că obținem toate beneficiile sistemelor cu dublu procesor fără a fi nevoie de plăci de bază complexe și costisitoare cu dublu procesor.

O modalitate de a crea un procesor eficient din punct de vedere energetic este trecerea de la o arhitectură de procesor cu un singur nucleu la una cu mai multe nuclee. Faptul este că procesoarele cu mai multe nuclee fac posibilă creșterea performanței tocmai prin creșterea IPC, adică a numărului de instrucțiuni de cod de program procesate pe ciclu de ceas al procesorului. În mod ideal, atunci când treceți de la o arhitectură de procesor cu un singur nucleu la un procesor cu două nuclee, puteți menține același nivel de performanță prin reducerea vitezei de ceas a fiecărui nucleu cu aproape jumătate. În realitate, desigur, totul este ceva mai complicat - rezultatul va depinde de aplicația folosită și de optimizarea acesteia pentru un procesor dual-core. Adică, pentru ca o aplicație să folosească simultan mai multe nuclee de procesor, trebuie să fie bine paralelizată. Dacă codul programului este scris în așa fel încât să implice doar executarea secvențială a instrucțiunilor, multi-core nu va fi de niciun folos. Pentru a demonstra exact cum se scalează performanța unui procesor multi-core în funcție de optimizarea codului programului pentru o arhitectură multi-core, luați în considerare următorul exemplu. Există un procesor multi-core cu numărul de nuclee egal cu n. Să presupunem că acest procesor rulează un program care include N instrucțiuni de cod de program, iar S instrucțiuni ale acestui cod pot fi executate numai secvențial una după alta, iar instrucțiunile P (egale cu N – S) sunt programe independente unele de altele și pot să fie executat simultan pe toate nucleele de procesor. Să notăm cu s (egal cu S/N) ponderea instrucțiunilor executate secvențial și cu p (egal cu 1 – s) ponderea instrucțiunilor executate în paralel.

Figura 3 - Executarea codului de program pe un procesor single-core

În cazul utilizării unui procesor cu un singur nucleu (Figura 4), timpul petrecut pentru executarea întregului cod de program va fi:

t1 = N / IPS(3.1)

Dacă utilizați un procesor n-core (Figura 1), timpul petrecut pentru executarea întregului cod de program va fi mai mic datorită execuției paralele a comenzilor P pe n nuclee de procesor și va fi:

Deoarece câștigul de performanță în acest caz poate fi considerat o reducere a timpului de execuție al unui program atunci când se utilizează un procesor multi-core în comparație cu timpul de execuție al aceluiași program atunci când se utilizează un procesor cu un singur nucleu, adică t1 / tn, obținem că creșterea performanței este:

Dependența grafică a câștigului de performanță de numărul de nuclee de procesor este prezentată în Figura 5.

Figura 4 - Executarea codului de program pe un procesor multi-core

După cum se poate observa din formula de mai sus, câștigul de performanță în cazul unei arhitecturi de procesor multi-core depinde în mare măsură de optimizarea aplicației pentru arhitectura multi-core, adică de capacitatea acesteia de a fi paralelizată. De exemplu, chiar și în cazul în care 90% din codul programului este paralelizat pe mai multe nuclee de execuție, utilizarea unui procesor quad-core vă permite să obțineți doar o creștere de trei ori a performanței în comparație cu o arhitectură de procesor cu un singur nucleu.

Figura 5 - Dependența câștigurilor de performanță de numărul de nuclee de procesor

Exemplul de mai sus reprezintă o situație ideală, dar în realitate totul este ceva mai complicat, totuși, ideea de bază rămâne aceeași: utilizarea procesoarelor multi-core necesită modificări fundamentale ale software-ului. Până acum, în discuția despre câștigurile de performanță care pot fi obținute prin trecerea de la o arhitectură cu un singur nucleu la o arhitectură cu mai multe nuclee, am luat în considerare doar o singură aplicație. Cu toate acestea, procesoarele multi-core vă permit să experimentați câștiguri semnificative de performanță atunci când rulați mai multe aplicații simultan. În mod ideal, fiecare aplicație poate rula pe un nucleu de procesor separat, independent de alte aplicații. De exemplu, puteți converti simultan fișiere video, puteți juca jocuri etc. Arhitectura procesorului cu mai multe nuclee vă permite să rezolvați simultan două probleme globale: creșteți performanța procesorului și, în același timp, creați procesoare eficiente din punct de vedere energetic. Desigur, arhitectura multi-core este doar o rețetă pentru a crea procesoare de înaltă performanță, eficiente din punct de vedere energetic. Pentru a crea un procesor multi-core cu adevărat eficient din punct de vedere energetic, fiecare nucleu trebuie să fie optimizat pentru o arhitectură cu mai multe nuclee și, de asemenea, să fie eficient din punct de vedere energetic. De exemplu, procesoarele Intel dual-core bazate pe arhitectura NetBurst (familia Intel Pentium D) pot rezolva doar parțial problema creșterii eficienței energetice. Cert este că microarhitectura fiecărui nucleu de procesor din familia Intel Pentium D este optimizată pentru scalarea frecvenței de ceas și nu este eficientă din punct de vedere energetic. O altă abordare pentru creșterea performanței într-un anumit consum de energie este trecerea la o microarhitectură de bază fundamental diferită. Rețineți că această abordare nu contrazice ideea de multi-nuclee, ci o completează mai degrabă.

4. Virtualizare

Virtualizarea în calcul este procesul de reprezentare a unui set de resurse de calcul, sau combinația lor logică, care oferă unele avantaje față de configurația originală. Aceasta este o nouă vizualizare virtuală a resurselor care nu sunt limitate de implementare, locație geografică sau configurație fizică a părților componente. De obicei, resursele virtualizate includ puterea de calcul și stocarea datelor. Un exemplu de virtualizare sunt arhitecturile simetrice de computere multiprocesor, care folosesc mai mult de un procesor. Sistemele de operare sunt de obicei configurate pentru a expune mai multe procesoare ca o singură unitate de procesor. De aceea aplicații software poate fi scris pentru o singură unitate de calcul logică (virtuală), ceea ce este mult mai simplu decât lucrul cu un număr mare de configurații diferite de procesor.

Virtualizare software:

Traducere dinamică - Cu traducerea dinamică (traducere binară), comenzile problematice ale sistemului de operare invitat sunt interceptate de către hypervisor. După ce aceste comenzi sunt înlocuite cu altele sigure, controlul sistemului de operare invitat revine. Paravirtualizarea este o tehnică de virtualizare în care sistemele de operare invitate sunt pregătite pentru execuție într-un mediu virtualizat, pentru care nucleul lor este ușor modificat. Sistemul de operare interacționează cu programul Hypervisor, care îi oferă un API invitat, mai degrabă decât să utilizeze direct resurse precum tabelul paginii de memorie. Metoda de paravirtualizare realizează performanțe mai mari decât metoda de traducere dinamică. Metoda de paravirtualizare este aplicabilă numai dacă sistemele de operare guest au coduri open source care pot fi modificate sub licență.

Virtualizare hardware:

a) Simplificarea dezvoltării platformelor software de virtualizare prin furnizarea de interfețe hardware pentru gestionarea și susținerea sistemelor invitate virtuale. Acest lucru reduce intensitatea muncii și timpul necesar pentru dezvoltarea sistemelor de virtualizare.

b) Posibilitatea creșterii performanței platformelor de virtualizare. Sistemele invitate virtuale sunt gestionate direct de un mic strat de middleware, hypervisorul, care crește performanța.

c) Securitatea se îmbunătățește, devine posibilă comutarea între mai multe platforme de virtualizare independente care rulează la nivel hardware. Fiecare dintre mașinile virtuale poate funcționa independent, în propriul spațiu de resurse hardware, complet izolate unele de altele. Acest lucru vă permite să eliminați pierderile de performanță asociate cu menținerea platformei gazdă și să creșteți securitatea.

d) Sistemul guest nu are legătură cu arhitectura platformei gazdă și cu implementarea platformei de virtualizare. Tehnologia de virtualizare hardware face posibilă lansare Oaspeți pe 64 de biți pe sisteme gazdă pe 32 de biți (cu medii de virtualizare pe 32 de biți pe gazde).

Implementări:

IBMSystem370, VM/370 - 60s. Ideile și tehnologiile care au determinat în mare măsură arhitectura soluțiilor moderne de virtualizare au fost dezvoltate pe sistemele virtuale IBM VM; VMware; Xen; KVM.

Tehnologii:

modul V86 - vechi; Intel VT (VT-x) - Tehnologia de virtualizare Intel pentru x86; AMD Pacific.

5. Pe scurt despre alte tehnologii

a) Intel Turbo Boost - dacă este necesar, permite nucleelor ​​de rulare să crească frecvența de ceas (în trepte de 133 MHz) la maximum posibil pentru protecție termică. Miezurile neutilizate pot fi comutate programatic în modul de putere zero.

b) Tehnologia Intel Smart Cache oferă performanță ridicată și eficiență cache, optimizată pentru cele mai recente jocuri multi-threaded.

c) Tehnologia Intel QuickPath Interconnect este concepută pentru a crește debitul și a reduce latența în procesul de schimb. Cu procesoarele Extreme Edition, vă permite să obțineți rate totale de transfer de date de până la 25,6 GB/s.

d) Tehnologia Intel HD Boost îmbunătățește semnificativ performanța în sarcinile multimedia. Instrucțiunile suplimentare ale setului de instrucțiuni se execută într-un singur ciclu de ceas, permițându-vă să atingeți noi niveluri de eficiență cu aplicații optimizate pentru setul de instrucțiuni SSE4.

6. Tehnologii viitoare

Calculatoare optice - Procesoare în care, în loc de semnale electrice, sunt procesate fluxuri de lumină (fotoni, nu electroni).

Calculatoarele cuantice sunt procesoare a căror funcționare se bazează în întregime pe efecte cuantice. În prezent, se lucrează pentru a crea versiuni de lucru ale procesoarelor cuantice.

Calculatoarele moleculare sunt sisteme de calcul care folosesc capabilitățile de calcul ale moleculelor (în principal biologice). Calculatoarele moleculare folosesc ideea de a calcula aranjarea atomilor în spațiu.

Bibliografie

Leontiev, P.V. Cel mai nou manual de autoinstruire pentru lucrul la computer / P.V. Leontiev M.: OLMA Media Group, 2008. 528 p.

http://www.ixbt.com/cpu/x86-cpu-faq-2006.shtml

http://www.thg.ru/cpu/intel_cpu_history/index.html

http://ru.wikipedia.org/wiki/Pentium

http://rpnyamal.ru/?page_id=3

http://www.compress.ru/article.aspx?id=16962&iid=786

mirznanii.com

Arhitectura microprocesorului. Principalele tipuri de arhitecturi

Arhitectura microprocesorului.

Acest capitol se concentrează pe caracteristicile arhitecturale ale microprocesoarelor. Contine Informații generale despre microprocesoare, principiile organizării structurale și funcționale) sunt luate în considerare tipurile de date, memoria de registre, metodele de adresare și sistemul de instrucțiuni al microprocesoarelor. Materialul prezentat este ilustrat pe cele mai simple procesoare de 8 și 16 biți.

Noțiuni de bază. Un microprocesor este un dispozitiv controlat de software sub forma unui circuit integrat (LSI sau VLSI) conceput pentru procesarea informațiilor digitale. Deoarece toate microprocesoarele moderne sunt integrate, termenul de procesor a devenit sinonim cu microprocesor.

Un microcontroler este un procesor specializat conceput pentru a implementa funcții de control (control).

Digital procesor de semnal(Digital Signal Processor - DSP) este un procesor specializat conceput pentru a procesa semnale digitale.

Un sistem cu microprocesor este un produs complet funcțional format din mai multe dispozitive digitale, inclusiv un procesor. Acest concept reunește o gamă largă de produse finite, începând cu microcontrolere realizate pe circuite integrate și terminând cu sisteme informatice, care sunt un set de dispozitive structurale individuale (unitate de sistem, tastatură, monitor etc.). În cele ce urmează, considerăm cele mai simple sisteme cu microprocesoare (cu un singur cip) care conțin, pe lângă procesor, memorie principală și dispozitive de intrare/ieșire. Astfel de sisteme cu microprocesoare pot fi clasificate ca microprocesoare.

Organizarea unui procesor este înțeleasă ca totalitatea nodurilor sale (dispozitive, blocuri, module), conexiuni între noduri și caracteristicile funcționale ale acestora. Organizația determină organizarea hardware a procesorului, adică compoziția și interacțiunea hardware-ului acestuia. Există două niveluri de organizare:

● organizarea fizică sub forma unei scheme de circuit;

● organizare logica sub forma unei diagrame structurale si functionale.

În cele ce urmează, se ia în considerare organizarea microprocesoarelor la nivel logic, sau organizarea structurală și funcțională a procesoarelor.

Prin arhitectura procesorului înțelegem totalitatea software-ului și hardware-ului acestuia care asigură prelucrarea informațiilor digitale (execuția programului), adică totalitatea tuturor instrumentelor disponibile programului (sau utilizatorului). Acest concept mai general în comparație cu conceptul de organizare include un set de registre și dispozitive de operare accesibile prin software, un sistem de comenzi de bază și metode de adresare, volumul și organizarea memoriei adresabile, tipuri și metode de prelucrare a datelor (schimb, întreruperi, acces la memorie etc.). De exemplu, procesoarele moderne x86 pe 32 de biți cu arhitectură IA-32 (Arhitectura Intel - 32 de biți) au un set standard de registre, un sistem comun de instrucțiuni de bază, aceleași metode de organizare și adresare a memoriei, protecție a memoriei și întreruperi. Rețineți că conceptul de arhitectură caracterizează proprietățile sistemului într-o măsură mai mare decât proprietățile dispozitivului.

Principalele tipuri de arhitecturi.

După formatele comenzilor (instrucțiunilor) utilizate, putem distinge:

● Arhitectura CISC, care se referă la procesoare (calculatoare) cu un set complet de instrucțiuni (Complete Instruction Set Computer - CISC). Este implementat în multe tipuri de microprocesoare (de exemplu, Pentium), care execută un set mare de instrucțiuni multi-format folosind numeroase metode de adresare.

Setul de instrucțiuni de procesoare cu arhitectură CISC poate conține câteva sute de instrucțiuni diferite formate(de la 1 la 15 octeți) sau grade de complexitate și utilizează mai mult de 10 metode de adresare diferite, ceea ce permite programatorului să implementeze cei mai eficienți algoritmi pentru rezolvarea diferitelor probleme.

Dezvoltarea arhitecturilor tradiționale de microprocesoare CISC pe calea extinderii funcționalității și a reducerii costurilor de programare a condus la creșterea numărului de instrucțiuni dintr-un set și a numărului de microinstrucțiuni dintr-o echipă. Consecința acestui lucru a fost complicarea circuitelor integrate și scăderea vitezei de execuție a programului. Una dintre modalitățile posibile de a elimina aceste neajunsuri este utilizarea unui set redus de comenzi, a căror organizare este supusă creșterii vitezei de execuție a acestora;

● Arhitectura RISC, care se referă la procesoare (calculatoare) cu un set de instrucțiuni redus (Reduced Instruction Set Computer - RISC). Apariția arhitecturii RISC a fost dictată de faptul că multe comenzi și metode de adresare CISC sunt folosite destul de rar. Caracteristica principală a arhitecturii RISC este că sistemul de instrucțiuni constă dintr-un număr mic de instrucțiuni frecvent utilizate de același format care pot fi executate într-un ciclu de instrucțiuni (ciclu) al procesorului central. Comenzile mai complexe, utilizate rar, sunt implementate la nivel de software. Totuși, datorită creșterii semnificative a vitezei de execuție a instrucțiunilor, performanța medie a procesoarelor RISC poate fi mai mare decât cea a procesoarelor cu arhitectură CISC.

Majoritatea instrucțiunilor procesorului RISC implică operațiuni de la înregistrare la înregistrare. Pentru accesarea memoriei, cele mai simple operatii din punct de vedere al consumului de timp sunt operatiile de incarcare in registre si scriere in memorie.

Procesoarele RISC moderne implementează aproximativ 100 de instrucțiuni care au un format fix de 4 octeți lungime și folosesc un număr mic dintre cele mai simple metode de adresare (registru, index și altele).

Pentru a reduce numărul de accesări la RAM extern, procesoarele RISC conțin zeci până la sute de registre de uz general (GPR), în timp ce procesoarele CISC au doar 8-16 registre. Apel la memorie externa la procesoarele RISC se foloseste doar in operatiuni de incarcare a datelor in RON sau de transfer a rezultatelor din RON in memorie. Prin reducerea hardware-ului necesar pentru decodarea și executarea instrucțiunilor complexe, circuitele integrate ale procesorului RISC sunt simplificate semnificativ și costurile reduse. În plus, productivitatea este îmbunătățită semnificativ. Datorită acestor avantaje, multe procesoare CISC moderne (cele mai recente Modele Pentiumși K7) se folosește un nucleu RISC. În acest caz, comenzile CISC complexe sunt pre-convertite într-o secvență de operații RISC simple și executate rapid de nucleul RISC;

● Arhitectura VLIW, care se referă la microprocesoare care utilizează instrucțiuni foarte lungi (Very Large Instruction Word - VLIW). Câmpurile de comandă individuale conțin coduri care efectuează diverse operații. O comandă VLIW poate efectua mai multe operații simultan în diferite noduri de microprocesor. Formarea comenzilor VLIW „lungi” este efectuată de compilatorul corespunzător atunci când traduceți programe scrise într-un limbaj de nivel înalt. Arhitectura VLIW este implementată în unele tipuri de microprocesoare moderne și este foarte promițătoare pentru crearea unei noi generații de procesoare de ultra-înaltă performanță.

Pe baza metodei de organizare a selecției comenzilor și datelor, se disting două tipuri de arhitecturi:

● Arhitectura Princeton, sau arhitectura von Neumann, o caracteristică a cărei caracteristică este (Fig. 2.1.1) utilizarea:

Memoria principală comună (acces aleatoriu) pentru stocarea programelor și datelor, care vă permite să redistribuiți rapid și eficient volumul acestuia în funcție de sarcinile rezolvate în fiecare caz specific de utilizare a unui microprocesor;

O magistrală comună prin care comenzile și datele sunt trimise către procesor, iar rezultatele sunt scrise în RAM, ceea ce simplifică foarte mult depanarea, testarea și monitorizarea continuă a funcționării sistemului și crește fiabilitatea acestuia. Pentru a separa instrucțiunea de date, codul operației efectuate este întotdeauna primit din memorie mai întâi, urmat de date. În mod implicit, codul de operare este încărcat în registrul de comandă, iar datele în blocul de registru (Fig. 2.1.1). Datorită numărului limitat de pini externi, magistrala comună funcționează de obicei în modul de multiplexare în timp, adică direcțiile opuse de schimb de date între microprocesor, memorie sau alte dispozitive externe sunt separate în timp.

Dezavantajul arhitecturii Princeton este că utilizarea unei magistrale comune pentru transmiterea comenzilor și a datelor limitează performanța sistemului digital;

● Arhitectura Harvard (creatorul Howard Aiken), a cărei caracteristică este separarea fizică a memoriei de instrucțiuni (programe) și a memoriei de date (Fig. 2.1.2). Această circumstanță este cauzată de cerințele în continuă creștere asupra performanței sistemelor cu microprocesor. Memoria de comandă și memoria de date sunt conectate la procesor prin magistrale separate. Prin separarea fluxurilor de comandă și de date, precum și prin combinarea operațiunilor de recuperare a acestora (și înregistrarea rezultatelor procesării), se asigură performanțe mai mari decât utilizarea arhitecturii Princeton.

Dezavantaje ale arhitecturii Harvard: complexitate crescută a designului datorită utilizării magistralelor separate pentru comenzi și date; cantitate fixă ​​de memorie pentru comenzi și date; o creștere a cantității totale de memorie din cauza imposibilității redistribuirii optime a acesteia între comenzi și date. Arhitectura Harvard este utilizată pe scară largă în microcontrolere - microprocesoare specializate pentru controlul diferitelor obiecte, precum și în structura internă a microprocesoarelor moderne de înaltă performanță în memoria cache cu stocare separată de instrucțiuni și date. În același timp, principiile arhitecturii Princeton sunt implementate în structura externă a majorității sistemelor cu microprocesoare.

Rețineți că arhitectura microprocesorului este strâns legată de structura acestuia. Implementarea anumitor caracteristici arhitecturale necesită introducerea în structura microprocesorului dispozitive relevanteși asigurarea mecanismelor pentru funcționarea lor comună.

pue8.ru

Arhitectura procesorului

Universitatea Tehnică din Moldova

REZUMAT PRIVIND PROGRAMARE

TEMA: Memoria și arhitectura procesorului

Facultatea CIM

Grupa C - 092

Pregătit de Plis Vladimir.

Chișinău 1999

Introducere.

1) Retrospectivă istorică.

2) Dezvoltare arhitecturală.

3) Procesul de producție.

4) Compatibilitate software.

5) Revizuirea procesoarelor.

Evoluții viitoare de la Intel.

Procesorul, sau mai complet microprocesor, și adesea numit CPU (unitate centrală de procesare) este componenta centrală a unui computer. Aceasta este mintea care controlează, direct sau indirect, tot ce se întâmplă în interiorul computerului.

Când von Neumann a propus pentru prima dată stocarea secvențelor de instrucțiuni, numite programe, în aceeași memorie cu datele, a fost o idee cu adevărat inovatoare. A fost publicat în „Primul proiect al raportului privind EDVAC” în 1945. Acest raport descrie un computer ca fiind format din patru părți principale: o unitate aritmetică centrală, o unitate centrală de control, memorie și facilități de intrare/ieșire.

Astăzi, mai bine de jumătate de secol mai târziu, aproape toate procesoarele au arhitectură von Neumann.

Retrospectivă istorică

După cum se știe, toate procesoarele calculatoare personale bazat pe designul original Intel. Primul procesor folosit în PC-uri a fost chipul Intel 8088. În acest moment, Intel avea un procesor 8086 mai puternic, lansat anterior, 8088 a fost ales din motive de economie: magistrala de date pe 8 biți permitea plăci de bază mai ieftine. unul dintre 8086. De asemenea, în timpul proiectării primelor PC-uri, majoritatea cipurilor de interfață disponibile au folosit un design pe 8 biți. Acele procesoare timpurii nu erau nici măcar aproape de a fi suficient de puternice pentru a rula aplicații moderne.

Tabelul de mai jos prezintă principalele grupuri de procesoare Intel de la prima generație 8088/86 până la a șasea generație Pentium Pro și Pentium II:

A treia generație de procesoare, bazată pe Intel 80386SX și 80386DX, au fost primele procesoare pe 32 de biți utilizate în computere. Principala diferență dintre cele două a fost că 386SX avea doar 32 de biți în interior, deoarece comunica cu lumea exterioară printr-o magistrală de 16 biți. Aceasta înseamnă că datele s-au mutat între procesor și restul computerului la jumătate din viteza modelului 486DX.

A patra generație de procesoare a fost, de asemenea, pe 32 de biți. Cu toate acestea, toate au oferit o serie de îmbunătățiri. În primul rând, întregul design al generației 486 a fost complet revizuit, ceea ce în sine a dublat viteza. În al doilea rând, toți aveau 8 kb de cache intern, chiar lângă logica procesorului. Această stocare în cache a transferurilor de date din memoria principală a însemnat că așteptarea medie a procesului de cerere de memorie pe placa de bază a fost redusă cu până la 4%, deoarece informațiile necesare se aflau de obicei deja în cache.

486DX diferă de 486SX doar prin coprocesorul matematic inclus în interior. Acest procesor separat este proiectat pentru a efectua operații în virgulă mobilă. Are puțină utilizare în aplicațiile de zi cu zi, dar schimbă dramatic performanța tabelelor numerice, a analizei statistice, a sistemelor de proiectare și așa mai departe.

O inovație importantă a fost dublarea frecvenței introdusă în 486DX2. Aceasta înseamnă că procesorul intern funcționează cu o viteză de două ori mai mare decât electronica externă. Datele sunt transferate între procesor, memoria cache internă și coprocesor cu o viteză de două ori mai mare, rezultând câștiguri de performanță comparabile. 486DX4 a dus această tehnologie mai departe, triplând frecvența la 75 sau 100MHz intern și dublând memoria cache primară la 16kb.

Pentium, care definește generația a cincea de procesoare, a depășit semnificativ precedentele 486 de cipuri datorită mai multor modificări arhitecturale, inclusiv dublarea lățimii magistralei la 64 de biți. P55C MMX aduce noi îmbunătățiri semnificative, dublând dimensiunea cache-ului primar și extinzând setul de instrucțiuni cu operațiuni optimizate pentru aplicații multimedia.

Pentium Pro, introdus în 1995 ca succesor al lui Pentium, a fost primul din a șasea generație de procesoare și a introdus câteva caracteristici arhitecturale nemaivăzute anterior în lumea PC-urilor. Pentium Pro a fost primul procesor mainstream care a schimbat radical modul în care au fost executate instrucțiunile prin traducerea lor în microinstrucțiuni asemănătoare RISC și executându-le într-un nucleu intern foarte avansat. De asemenea, este remarcabil pentru cache-ul secundar de performanță semnificativ mai mare în comparație cu toate procesoarele anterioare. În loc să folosească un cache bazat pe placa de bază care rulează la viteza magistralei de memorie, folosește un cache L2 integrat pe propria magistrală care rulează la viteza maximă a procesorului, de obicei de trei ori mai rapid decât memoria cache pe sistemele Pentium.

Intel a introdus următorul cip nou după Pentium Pro aproape un an și jumătate mai târziu - a apărut Pentium II, care a fost un pas foarte mare de evoluție față de Pentium Pro. Acest lucru a alimentat speculațiile că unul dintre obiectivele principale ale Intel în producerea Pentium II a fost evitarea dificultăților de a face cache-ul L2 integrat al Pentium Pro. Din punct de vedere arhitectural, Pentium II nu este foarte diferit de Pentium Pro, cu un nucleu similar care emulează x86 și majoritatea caracteristicilor identice.

Pentium II a îmbunătățit arhitectura Pentium Pro prin dublarea dimensiunii cache-ului primar la 32 kb, folosind o memorie cache dedicată pentru a crește eficiența procesării pe 16 biți (Pentium Pro este optimizat pentru aplicații pe 32 de biți și nu gestionează codul pe 16 biți) , și creșterea înregistrărilor cu dimensiunile bufferului. Cu toate acestea, principalul subiect de conversație în jurul noului Pentium II a fost aspectul acestuia. Cache-ul secundar integrat în Pentium Pro, care funcționează la frecvența completă a procesorului, a fost înlocuit în Pentium II de un circuit mic care conținea procesorul și 512kb de cache secundar, funcționând la jumătate din frecvența procesorului. Adunate împreună, acestea sunt incluse într-un cartuş special cu o singură margine (SEC), conceput pentru a fi introdus în conectorul cu 242 de pini (Socket 8) pe noul stil. plăci de bază ah Pentium II.

Structură de bază

Principalele componente funcționale ale procesorului

  • Core: Inima unui procesor modern este unitatea de execuție. Pentium are două fire întregi paralele, permițând citirea, interpretarea, executarea și trimiterea simultană a două instrucțiuni.
  • Branch Predictor: predictorul de ramură încearcă să ghicească ce secvență va fi executată de fiecare dată când programul conține o ramură condiționată, astfel încât prefetcherii și decodificatorii să primească instrucțiuni gata în avans.
  • Bloc cu virgulă mobilă. Al treilea modul de execuție în interiorul Pentium care efectuează calcule fără numere întregi
  • Cache principal: Pentium are două cache pe cip de 8 kb, câte unul pentru date și instrucțiuni, care sunt mult mai rapide decât memoria cache secundară externă mai mare.
  • Interfață de magistrală: Primește un amestec de cod și date în CPU, le separă până când sunt gata de utilizare și le reconecta pentru a le trimite.

Toate elementele procesorului sunt sincronizate folosind frecvența ceasului, care determină viteza operațiunilor. Primele procesoare au funcționat la o frecvență de 100kHz, astăzi frecvența medie a procesorului este de 200MHz, cu alte cuvinte, ceasul bate de 200 de milioane de ori pe secundă, iar fiecare tick presupune executarea multor acțiuni. Contorul de comenzi (PC) este un pointer intern care conține adresa următoarei instrucțiuni care urmează să fie executată. Când vine momentul executării, modulul de control plasează instrucțiunea din memorie în registrul de instrucțiuni (IR). În același timp, contorul de programe este incrementat pentru a indica instrucțiunea ulterioară, iar procesorul execută instrucțiunea în IR. Unele instrucțiuni controlează unitatea de control în sine, așa că dacă instrucțiunea spune „mergi la adresa 2749”, valoarea 2749 este scrisă în Contorul de programe, astfel încât procesorul să execute următoarea instrucțiune.

Multe instrucțiuni folosesc o unitate logică aritmetică (ALU) care funcționează împreună cu registrele cu scop general - spațiu de stocare temporar care poate încărca și descărca date din memorie. O instrucțiune tipică ALU ar fi adăugarea conținutului unei locații de memorie la un registru de uz general. ALU setează, de asemenea, biți de registru de stare (SR) atunci când execută instrucțiuni pentru a stoca informații despre rezultatul său. De exemplu, SR are biți care indică null, overflow, carry și așa mai departe. Modulul de control folosește informațiile din SR pentru a efectua operații condiționate, cum ar fi „mergi la adresa 7410 dacă execuția instrucțiunii anterioare a cauzat o depășire”.

Cam atât pentru cea mai generală poveste despre procesoare - aproape orice operație poate fi efectuată printr-o succesiune de instrucțiuni simple precum cele descrise.

Dezvoltare arhitecturală

Conform Legii lui Moore (formulată în 1965 de Gordon Moore, unul dintre fondatorii Intel), procesorul își dublează puterea și capacitățile la fiecare 18-24 de luni. În ultimii ani, Intel a urmat agresiv această lege, rămânând lider de piață și producând cipuri de procesoare pentru PC mai puternice decât orice altă companie. În 1978, 8086 funcționa la 4,77 MHz și conținea mai puțin de un milion de tranzistori până la sfârșitul anului 1995, Pentium Pro conținea deja 21 de milioane de tranzistori și funcționa la 200 MHz.

Legile fizicii limitează dezvoltatorii să mărească direct frecvența și, deși frecvențele cresc în fiecare an, acest lucru singur nu poate oferi o creștere a performanței pe care o folosim astăzi. De aceea, inginerii caută în mod constant modalități de a face procesorul să lucreze mai mult pe bifă. O evoluție este extinderea magistralei de date și a registrelor. Chiar și procesoarele pe 4 biți sunt capabile să adauge numere pe 32 de biți, deși după ce au executat o mulțime de instrucțiuni - procesoarele pe 32 de biți rezolvă această problemă într-o singură instrucțiune. Majoritatea procesoarelor de astăzi au o arhitectură pe 32 de biți, iar cele pe 64 de biți sunt deja pe ordinea de zi.

În vremuri străvechi, procesorul putea gestiona doar numere întregi. Singura opțiune a fost să scrieți programe folosind instrucțiuni simple pentru a gestiona numerele fracționale, dar acest lucru a fost lent. Practic, toate procesoarele de astăzi au instrucțiuni pentru manipularea directă a numerelor fracționale.

Spunând că „se întâmplă ceva la fiecare bifă”, subestimăm cât timp durează de fapt executarea unei instrucțiuni. În mod tradițional, aceasta avea nevoie de cinci bifături - una pentru a încărca instrucțiunea, una pentru a o decoda, una pentru a primi datele, una pentru a executa și una pentru a scrie rezultatul. În acest caz, se pare că procesorul de 100 MHz ar putea executa doar 20 de milioane de instrucțiuni pe secundă.

Majoritatea procesoarelor de astăzi folosesc pipelining, care este mai mult ca o linie de asamblare din fabrică. O etapă de fir este dedicată fiecărui pas necesar pentru a finaliza o instrucțiune, iar fiecare etapă trece instrucțiunea la următoarea când și-a terminat partea sa. Aceasta înseamnă că la un moment dat, o instrucțiune este încărcată, alta este decodificată, datele sunt livrate pentru o treime, a patra este executată și rezultatul pentru o cincime este scris. Cu tehnologia actuală, se poate realiza câte o instrucțiune pe bifă.

Mai mult, multe procesoare au acum o arhitectură superscalară. Aceasta înseamnă că circuitul fiecărei etape a firului este duplicat, astfel încât multe instrucțiuni pot fi transmise în paralel. Pentium Pro, de exemplu, poate executa până la cinci instrucțiuni pe ciclu de bifă.

Proces de producție

Ceea ce deosebește un microprocesor de predecesorii săi, construit din lămpi, tranzistori individuali, circuite integrate mici, așa cum au fost la început de la procesor complet pe un singur cip de siliciu.

Siliciul sau siliconul este principalul material din care sunt fabricate cipurile. Acesta este un semiconductor, care, atunci când este implantat cu aditivi într-o mască specială, devine un tranzistor, principalul bloc de construcție al circuitelor digitale. Procesul implică gravarea tranzistorilor, rezistențelor, pistelor care se intersectează și așa mai departe pe suprafața siliciului.

Mai întâi, se cultivă un semifabricat de silex. Trebuie să aibă o structură cristalină fără defecte, aspect care pune o limită asupra dimensiunii sale. În zilele anterioare, semifabricatele erau limitate la 2 inci în diametru, dar acum 8 inci sunt comune. În etapa următoare, semifabricatul este tăiat în straturi numite napolitane. Sunt lustruite până la un finisaj impecabil în oglindă. Cipul este creat pe această napolitană. De obicei, multe procesoare sunt realizate dintr-o singură napolitană.

Circuitul electric este format din materiale diferite. De exemplu, dioxidul de siliciu este un izolator, căile conductoare sunt realizate din polisiliciu. Când apare o napolitană expusă, aceasta este bombardată cu ioni pentru a crea tranzistori - acest lucru se numește dopaj.

Pentru a crea toate părțile necesare, straturi sunt adăugate pe întreaga suprafață a plăcii și părțile în exces sunt gravate din nou. Pentru a face acest lucru, un nou strat este acoperit cu un fotorezistor, pe care este proiectată o imagine a pieselor necesare. După expunere, dezvoltarea îndepărtează acele părți ale fotorezistorului care sunt expuse la lumină, lăsând o mască prin care a avut loc gravarea. Fotorezistorul rămas este îndepărtat cu un solvent.

Acest proces se repetă, câte un strat, până când întregul circuit este complet. Inutil să spun că părțile de dimensiunea unei milioane de metru pot fi distruse de cea mai mică bucată de praf. O astfel de bucată de praf poate fi peste tot, variind ca dimensiune de la un micron la o sută - și aceasta este de 3-300 de ori mai mare decât piesa. Microprocesoarele sunt fabricate într-un mediu ultra-curat în care operatorii poartă costume speciale de protecție.

Pe vremuri, producția de semiconductori era greșită, cu un raport de succes de mai puțin de 50% cipuri funcționale. Astăzi randamentul este mult mai mare, dar nimeni nu se așteaptă la 100%. Odată ce un nou strat este adăugat la plachetă, fiecare cip este testat și se notează orice discrepanțe. Chip-urile individuale sunt separate și din acest punct sunt numite matrici. Cele rele sunt respinse, iar cele bune sunt ambalate într-un pachet PGA (Pin Grid Arrays) - un dreptunghi ceramic cu rânduri de pini pe partea de jos, acesta este genul de pachet pe care majoritatea îl confundă cu un procesor.

4004 a folosit un proces de 10 microni: cele mai mici părți erau o 10 milioane de metru. După standardele de astăzi, acest lucru este monstruos. Dacă presupunem că Pentium Pro a fost realizat folosind această tehnologie, ar avea o dimensiune de 14x20 de centimetri și ar fi lentă - tranzistoarele rapide sunt mici. Majoritatea procesoarelor de astăzi folosesc tehnologia de 0,25 microni, iar procesul de 0,1 microni este viziunea pe termen mediu pentru mulți producători.

Compatibilitate software

În zorii erei computerelor, mulți oameni și-au scris propriile programe, iar setul exact de instrucțiuni ale procesorului executabil nu era semnificativ. Astăzi, însă, oamenii se așteaptă să poată folosi programe gata făcute, așa că setul de instrucțiuni este primordial. Deși nu există nimic magic din punct de vedere tehnic la arhitectura Intel 80x86, aceasta a fost mult timp un standard industrial.

Atunci când producătorii terți fac un procesor cu instrucțiuni diferite, acesta nu va rula software-ul standard acceptat și, prin urmare, nu este vândut. În zilele 386 și 486, companii precum AMD au clonat procesoare Intel, dar a fost întotdeauna o generație în culise. Cyrix 6x86 și AMD K5 erau concurenți pentru Intel Pentium, dar nu erau copii pure. K5 a avut propriul set de instrucțiuni și a tradus instrucțiuni de 80x86 în interior pe portbagaj, astfel încât K5 nu a necesitat ca un Pentium să fie construit în prealabil la proiectare. De fapt, multe au fost create în paralel, reținute doar de schema de difuzare. Când K5 a sosit în sfârșit, a depășit Pentium-ul în ceea ce privește performanța la aceleași viteze de ceas.

Un alt mod prin care procesoarele cu arhitecturi diferite comunică relativ uniform cu lumea exterioară este printr-o magistrală standard. În acest sens, magistrala PCI, introdusă în 1994, este unul dintre cele mai importante standarde. PCI definește un set de semnale care permit procesorului să comunice cu alte părți ale PC-ului. Include magistralele de adrese și de date, plus un set de semnale de control. Procesorul are propriile magistrale, astfel încât chipsetul este folosit pentru a converti din această magistrală „privată” la PCI „publică”.

Introducerea Pentium-ului în 1993 a revoluționat piața computerelor, introducând mai multă putere în carcasa medie a PC-ului decât a avut NASA în sălile computerelor cu aer condiționat de la începutul anilor '60. Arhitectura Pentium reprezintă un pas înainte față de 486.

Era un cip bazat pe CISC cu peste 3,3 milioane de tranzistori, fabricat folosind tehnologia de 0,35 microni. Procesorul a folosit o magistrală de 32 de biți în interior, dar magistrala de date externă a fost de 64 de biți. Autobuzul extern necesita alte plăci de bază, iar pentru a le susține, Intel a lansat un chipset special pentru a conecta Pentium cu 64 de biți cache externși magistrala PCI.

Majoritatea Pentium-urilor (75 MHz și mai sus) funcționează la 3,3 V cu 5 V I/O. Pentium are un design superscalar cu două filete, permițându-i să execute mai multe instrucțiuni pentru fiecare bifă. Cele cinci etape (încărcarea, decodarea, generarea adresei, executarea și descărcarea) de execuție a instrucțiunilor întregi rămân aceleași ca în 486, dar Pentium are două fire de execuție întregi paralele, permițându-i să citească, să interpreteze, să execute și să scrie două operații simultan. Numai operațiunile întregi sunt efectuate în acest fel - numerele fracționale sunt gestionate de un modul separat cu virgulă mobilă.

Pentium folosește, de asemenea, două buffer-uri asociative de 8K octeți, mai bine cunoscute ca cache-ul primar sau L1 - unul pentru instrucțiuni și unul pentru date. Dimensiunea cache-ului este dublă față de predecesorul său, 486. Acest cache adaugă performanță, deoarece acționează ca un depozit temporar de informații pentru datele furnizate din memoria principală lentă.

Branch Buffer (BTB) oferă predicție dinamică a ramurilor. Îmbunătățește execuția instrucțiunii prin amintirea modului de ramificare și prin utilizarea aceleiași ramuri data viitoare când instrucțiunea este executată. Când BTB face o predicție corectă, performanța crește. Unitatea cu virgulă mobilă cu 80 de puncte oferă o facilitate aritmetică pentru manipularea numerelor „reale”.

Prezentare generală a procesorului

Pentium Pro de la Intel, lansat la sfârșitul anului 1995 cu un nucleu CPU format din 5,5 milioane de tranzistori, plus 15,5 milioane de tranzistori în memoria cache secundară, a fost inițial destinat pieței de servere și stații de lucru high-end. Acest procesor superscalar include caracteristici ale procesoarelor high-end și este optimizat pentru operațiuni pe 32 de biți.

Pentium Pro diferă de Pentium prin prezența unui cache secundar încorporat, cu dimensiuni cuprinse între 256kb și 1mb, care funcționează la o frecvență internă Plasarea cache-ului secundar pe cip, și nu pe placa de bază, permite transferul datelor pe a Canal pe 64 de biți, mai degrabă decât peste un bus de sistem de 32 de biți pe Pentium. Această proximitate fizică se adaugă și la creșterea performanței. Această combinație este atât de puternică încât 256 kb de cache încorporat echivalează cu 2 MB pe placa de bază.

Un factor și mai mare în performanța Pentium Pro este o combinație de tehnologii cunoscute sub numele de „execuție dinamică”. Include predicția de ramuri, analiza fluxului de date și execuția speculativă. Combinarea acestora permite procesorului să utilizeze cicluri de bifă altfel irosite făcând predicții anticipate ale fluxului programului de execuție a instrucțiunilor.

Pentium Pro a fost, de asemenea, primul procesor din familia x86 care a folosit superpipelining, care are 14 etape împărțite în trei secțiuni. Următoarea secțiune pregătitoare, care procesează decodificarea și ieșirea instrucțiunilor, constă din opt etape. Nucleul în afara ordinii care execută instrucțiunea are trei etape, iar următoarea finalizare constă din trei etape finale.

O altă diferență, mai importantă, cu Pentium Pro este gestionarea instrucțiunilor. Primește instrucțiuni CISC (Complex Instruction Set Computer) x86 și le convertește în microcod intern RISC (Reduced Instruction Set Computer). Conversia este concepută pentru a evita unele dintre limitările moștenite de la setul de instrucțiuni x86, cum ar fi decodarea neregulată a instrucțiunilor și aritmetica registru-la-memorie. Microcodul este apoi trimis executorului de instrucțiuni în afara ordinii, care determină dacă instrucțiunea este gata pentru a fi executată și, dacă nu, mută codul pentru a preveni blocarea firului.

Migrația către RISC are dezavantajele sale. În primul rând, conversia instrucțiunilor necesită timp, chiar dacă este măsurată în nano- sau microsecunde. Ca rezultat, Pentium Pro irosește inevitabil puterea de procesare în procesarea instrucțiunilor. Cel de-al doilea dezavantaj este că designul nerespectat poate afecta parțial codul pe 16 biți, ducând la blocare. Acest lucru poate face ca actualizările parțiale ale registrului să apară înainte de citirea completă a registrului și să impună o suprafață de producție strictă de până la șapte cicluri de bifare.

Pentium Pro a fost primul microprocesor care nu a folosit venerabilul Socket 7, necesitând interfața mai mare cu 242 de pini Socket 8 și noi design-uri de placă de bază.

Extensii MultiMedia

Procesorul Intel P55C MMX cu extindere multimedia este disponibil de la începutul anului 1997. A reprezentat cea mai semnificativă schimbare a arhitecturii de bază a procesorului PC-ului din peste un deceniu și a oferit trei îmbunătățiri majore:

  • memoria cache L1 încorporată a Pentium standard sa dublat la 32 kb
  • au adăugat 57 de instrucțiuni noi concepute special pentru a manipula mai eficient datele video, audio și grafice
  • a fost dezvoltat un nou proces, numit SIMD (Single Instruction Multiple Data) și care permite ca aceeași instrucțiune să fie executată pe mai multe instanțe de date simultan.

Un cache primar mai mare înseamnă că procesorul are mai multe date la îndemână, reducând nevoia de a prelua date din memoria cache L2, ceea ce aduce beneficii tuturor programelor. Noile instrucțiuni, utilizate împreună cu SIMD și opt registre extinse (64 de biți), folosesc în mod semnificativ paralelismul, unde opt octeți de date pot fi procesați într-un ciclu, mai degrabă decât unul pe ciclu. Acesta este un beneficiu special pentru aplicațiile multimedia și grafice, cum ar fi decodarea audio și video, scalarea și interpolarea imaginilor. În loc să muți opt pixeli de date grafice de către procesor pe rând, acești opt pixeli pot fi mutați ca o rafală de 64 de biți și procesați într-un singur ciclu.

Intel susține că aceste îmbunătățiri oferă o accelerare de 10-20% pentru aplicațiile non-MMX și de peste 60% pentru aplicațiile MMX.

Intel a corectat absența notabilă a unei versiuni MMX pentru laptopuri la sfârșitul anului 1997 odată cu anunțarea versiunilor mobile ale procesorului cu numele de cod Tillamook, numit după un oraș mic din Oregon. Noile procesoare cu frecvențe de 200 și 233 MHz și tehnologia MMX au adus de ceva vreme laptopurile la nivelul sistemelor desktop. O versiune de 226 MHz a fost lansată mai târziu în 1998.

Tillamook este primul procesor construit pe modulul avansat Intel Mobile pentru notebook-uri (MMO). Modulul deține procesorul, 512 kb de memorie cache secundară, un regulator de tensiune pentru a alimenta procesorul de la o tensiune externă mai mare, un ceas și un nou " podul de Nord„430TX PCI. Se conectează la placa de bază cu un rând de 280 de conectori, similar cartuşului Pentium II SEC.

Cea mai mare diferență în cip în sine a fost utilizarea tehnologiei de 0,25 microni în comparație cu tehnologia de 0,28 microni folosită anterior de Intel în cipurile mobile. Factorul de microni mai mic a avut un efect asupra frecvenței și tensiunii: tranzistoarele din procesor (cu zerouri și unuri electrice) erau mai apropiate, iar viteza crește automat. Pe măsură ce tranzistoarele s-au apropiat unul de celălalt, tensiunea a scăzut pentru a evita deteriorarea din cauza câmpurilor electrice puternice. Versiuni anterioare Procesoarele Intel mobile au fost alimentate de la 2,45 V la bază, în timp ce Tillamook a fost redus la 1,8 V. A fost necesar un regulator de tensiune pentru a proteja cipul de magistralele PCI și de memorie, care funcționau la 3,3v. Reducerea tensiunii de pe procesor a economisit semnificativ energie.

Lansat la mijlocul anului 1997, Pentium II a introdus o serie de schimbări majore în lumea procesoarelor PC.

În primul rând, cipul și memoria cache de nivel doi au fost conectate printr-o magistrală dedicată capabilă să funcționeze la frecvența magistralei procesor-sistem.

În al doilea rând, procesorul, memoria cache secundară și radiatorul au fost montate pe un card mic care se conecta la o priză de pe placa de bază, mai mult ca o placă de expansiune decât un design tradițional de procesor/soclu. Intel l-a numit cartuşul Single Edge Contact (SEC). Acest cartuş conţine şase componente separate - procesorul, patru RAM standard cache de tip burst-static-cache şi o RAM de etichetă. Designul cartuşului SEC a oferit avantaje importante. Dispunerea Pentium Pro PGA a necesitat 387 de pini, în timp ce cartuşul SEC a necesitat doar 242. Reducerea cu o treime a numărului de pini s-a datorat prezenţei elementelor discrete în cartuş, cum ar fi rezistenţele de scurtcircuit şi condensatorii. Aceste elemente asigură divizarea semnalului, ceea ce înseamnă că sunt necesari mult mai puțini conectori de alimentare. Conectorul cartușului SEC folosește așa-numitul Slot 1 și este perceput ca preluand ștafeta de la soclul de ieșire 7.

A treia modificare este o sinteză mai mare, deoarece Pentium II combină Dual Independent Bus (DIB) de la Pentium Pro cu tehnologia MMX de la Pentium MMX, formând noul fel- Pentium Pro/MMX hibrid. Astfel, deși în exterior foarte diferit de procesoarele Intel anterioare, Pentium II este în interior un amestec de noi tehnologii și îmbunătățiri ale cipurilor mai vechi.

În cele din urmă, spre deosebire de Pentium Pro, care funcționează la 3,3 V, Pentium II este alimentat la 2,8 V, permițând Intel să-l ruleze la frecvențe mai mari fără a crește necesarul de putere prea mult. În timp ce Pentium Pro de 200 MHz cu cache de 512 kb consumă 37,9 wați, Pentium II de 266 MHz cu cache de 512 kb consumă 37,0 wați.

La fel ca Pentium Pro, Pentium II utilizează tehnologia Intel Dynamic Execution. Când o instrucțiune software este citită în procesor și decodificată, aceasta intră în pool-ul de execuție. Tehnologia Dynamic Execution are trei abordări principale pentru optimizarea modului în care procesorul gestionează codul. Multiple Branch Predictions examinează fluxul programului de-a lungul mai multor ramuri și prezic unde va fi localizată următoarea instrucțiune în memorie.

Când procesorul citește, verifică și următoarele instrucțiuni din fir, accelerând astfel fluxul. Analiza fluxului de date optimizează secvența în care vor fi executate instrucțiunile prin examinarea instrucțiunilor decodificate și determinând dacă acestea sunt gata pentru procesare sau depind de alte instrucțiuni. Execuția speculativă crește viteza unor astfel de instrucțiuni prin privirea înainte de la instructiunea curentași procesarea instrucțiunilor suplimentare care ar putea fi necesare. Aceste rezultate sunt păstrate ca fiind speculative până când procesorul determină de care are nevoie și de care nu. În acest moment, instrucțiunea revine la coada normală și este adăugată în fir.

Tehnologia Dynamic Execution are două avantaje principale: Instrucțiunile sunt procesate mai rapid și mai eficient decât de obicei și, spre deosebire de procesoarele bazate pe RISC, programele nu trebuie să fie recompilate pentru a beneficia de procesor. Procesorul face totul din mers.

Semnificativ optiune noua este de a elimina memoria cache secundară din procesor în sine pe o placă separată de siliciu din cartuş. Procesorul citește și scrie date în cache folosind o magistrală specializată de mare viteză. Denumită magistrală din spate, este separată de magistrala sistemului de memorie procesor (numită acum magistrala frontală). Procesorul poate folosi ambele magistrale simultan, dar arhitectura de magistrala duala independenta are alte avantaje.

Deși magistrala dintre procesor și memoria cache L2 este mai lent decât la un Pentium Pro obișnuit (la jumătate din viteza procesorului), este extrem de scalabil. Cu cât procesorul este mai rapid, cu atât mai rapid este memoria cache, indiferent de magistrala frontală de 66 MHz. În plus, magistrala frontală poate fi mărită de la 66 la 100 MHz fără a afecta magistrala cache L2. De asemenea, este evident că prezența memoriei pe același cip cu procesorul afectează negativ procentul de randament al Pentium Pros de 512kb utilizabil, menținând prețurile ridicate. Pentium II se bazează pe logica magistralei gazdă GTL+ (gunning-transceiver-logic), permițând suport nativ pentru două procesoare. La momentul lansării, acesta a furnizat o soluție minimalistă cu dublu procesor, eficientă din punct de vedere al costurilor, activată de multiprocesare simetrică (SMP). Limitarea dual-procesorului nu a fost impusă de Pentium II în sine, ci de suportul chipset-ului. Limitarea inițială a chipset-ului la o configurație cu dublu procesor a permis Intel și vânzătorilor de stații de lucru să ofere sisteme cu dublu procesor ca soluție temporară și rentabilă, care altfel nu ar fi fost posibilă. Această limitare a fost eliminată la mijlocul anului 1998 odată cu lansarea chipset-ului 450NX, care acceptă unul până la patru procesoare. Chipsetul 440FX, care conținea cipuri PMC și DBX, nu permitea intercalarea memoriei, dar suporta EDO DRAM, permițând îmbunătățirea performanței memoriei prin reducerea latenței.

Când Intel a proiectat Pentium II, acesta a abordat și performanța slabă pe 16 biți a predecesorului său. Pentium Pro rulează luxos pe software complet pe 32 de biți, cum ar fi Windows NT, dar se încadrează sub standardul Pentium prin gestionarea codului pe 16 biți. Acest lucru are ca rezultat o performanță mai slabă decât Pentium în Windows 95, dintre care o mare parte este încă pe 16 biți a decis. Această problemă a fost rezolvată prin utilizarea cache-ului Pentium cu descriptori de segment în Pentium II.

La fel ca Pentium Pro, Pentium II este extrem de rapid în aritmetica în virgulă mobilă. Combinat cu Accelerated Graphics Port (AGP), acest lucru face din Pentium II o soluție puternică pentru grafică 3D de înaltă performanță.

O încarnare de 333 MHz a Pentium II, cu numele de cod Deschutes (după un râu din Oregon), a fost anunțată la începutul anului 1998, cu 400 MHz și mai mult planificată într-un an. Numele Deschutes se referă de fapt la două linii diferite de CPU.

Versiunea pentru Slot 1 nu este altceva decât un Pentium II ușor evoluat. Arhitectura și designul fizic sunt identice, cu excepția faptului că partea Deschutes Slot 1 este realizată folosind procesul de 0,25 microni introdus în toamna anului 1997 cu procesorul pentru laptop Tillamook, comparativ cu versiunile de 233-300MHz realizate folosind procesul de 0,35 microni. Folosirea de 0,25 microni înseamnă că tranzistorii de pe matriță sunt fizic mai apropiați unul de celălalt, iar procesorul consumă mai puțină energie și, prin urmare, disipează mai puțină căldură la o anumită frecvență, permițând miezului să bifeze la frecvențe mai mari.

Orice altceva despre Slot 1 Deschutes este identic cu Pentium II obișnuit. Montat pe o bază și închis într-un cartuș SEC, acesta acceptă setul de instrucțiuni MMX și comunică cu 512 kb de cache secundar la jumătate din frecvența de bază. Are același conector de capăt și rulează pe aceleași plăci de bază cu aceleași chipset-uri. Ca atare, funcționează cu 440FX sau 440LX la o frecvență externă de 66MHz.

Din primăvara anului 1998, un mare pas înainte în performanță a venit odată cu următoarea încarnare a lui Deschutes, când a fost lansat noul chipset 440BX, permițând transferul de 100MHz pe magistrala de sistem, reducând congestionarea datelor și suportând frecvențe de la 350 la 400MHz.

Un alt procesor, numit Deschutes, aparține Slot 2, lansat de la mijlocul anului 1998 ca Pentium II Xeon. Intel a împărțit Slot 1 și Slot 2 Deschutes în linii de produse complementare, cu Slot 1 destinat producției de masă și Slot 2 destinat serverelor de ultimă generație și unde prețul este secundar performanței.

Pentium II mobil

Progresia naturală a familiei Pentium II Deschutes cu putere redusă (în ceea ce privește consumul/dissiparea energiei) pe piața PC-urilor portabile a venit odată cu lansarea liniei mobile Pentium II în aprilie 1998. Procesor nouși chipset-ul său mobil însoțitor 440BX, au fost inițial disponibile în variante de 233 și 266 MHz, ambalate într-un modul mobil existent (MMO) sau un nou format de mini-cartuș. Intel se așteaptă ca până la sfârșitul anului 1998, mai mult de jumătate dintre PC-urile echipate cu procesoarele sale mobile să fie Pentium II, iar Pentium II Tillamook mobil să expire la jumătatea anului 1999.

În încercarea de a satisface mai bine sectorul PC-urilor low-cost, până acum domeniul producătorilor de clone AMD și Cyrix, care continuă să dezvolte arhitectura moștenită Socket 7, Intel și-a lansat gama. procesoare Celeronîn aprilie 1998.

Bazate pe aceeași arhitectură P6 ca și Pentium II și folosind același proces de 0,25 microni, sistemele Celeron oferă o suită completă de cele mai noi tehnologii, inclusiv suport pentru grafică AGP, ATA-33 hard disk-uri, SDRAM și ACPI. Celeron va rula pe orice chipset Intel Pentium II care acceptă o magistrală frontală de 66 MHz, inclusiv 440LX, 440BX și noul 440EX, special conceput pentru piața de computere „de bază”. Spre deosebire de Pentium II cu cartușul său SEC, Celeron nu are un strat protector de plastic în jurul plăcilor procesorului, pe care Intel îl numește Single Edge Processor Package (SEPP). Este pe deplin compatibil cu Slot1, permițând utilizarea plăcilor existente, dar mecanismul de montare pentru placa CPU nu este adaptat la factorul de formă SEPP.

Primele Celeron de 266 și 300 MHz fără cache L2 s-au întâmpinat cu puțin entuziasm pe piață, oferind puțin sau deloc avantaj față de sistemele de clonă Socket 7. În august 1998, Intel a extins seria Celeron cu o familie de procesoare numită Mendocino Echipat cu 128 kb cache pe matrice Funcționând la viteza maximă a procesorului și conectându-se printr-o magistrală externă de 66 MHz, noul Celeron este mult mai vioi decât predecesorul său lent, cele două versiuni disponibile se numesc Celeron 333 și 300a cu arhitectura Intel existentă, în timp ce al doilea brevetează socket-ul Pin 370, diferit de Socket 7 și Socket 1, destinat mașinilor low-end ieftine.

În iunie 1998, Intel și-a oferit procesorul Pentium II Xeon. Din punct de vedere tehnic, Xeon este o combinație de tehnologii Pentium Pro și Pentium II și este proiectat pentru a oferi performanțe remarcabile în stațiile de lucru critice și aplicațiile server. Folosind noua interfață Slot 2, Xeon este de aproximativ două ori mai mare decât Pentium II, în mare parte datorită cache-ului L2 crescut.

La fel ca procesoarele Pentium II de 350 și 400MHz, magistrala frontală rulează la 100MHz pentru a crește lățimea de bandă. Cea mai semnificativă diferență față de Pentium II standard este că memoria cache L2 rulează la frecvența de bază completă a procesorului, spre deosebire de designul Slot 1, care limitează memoria cache secundară la jumătate din frecvența de bază, permițând Intel să utilizeze ieftine off-the- shelf burst SRAM ca cache secundară, mai degrabă decât producerea propriei SRAM personalizate. Cache-ul personalizat de viteză completă mult mai scump este principalul motiv pentru diferența de preț dintre soluțiile Slot 1 și Slot 2.

Cipul vine cu trei dimensiuni de cache secundar. Stațiile de lucru sunt furnizate cu o versiune de 512 kb. Versiunea de 1MB lansată mai târziu este folosită pentru servere, în timp ce versiunea de 2MB este așteptată (mai târziu în acest an). Sistemul de cache L2 este similar cu cel utilizat în Pentium Pro și este una dintre principalele componente de cost ale Xeon. Un altul este că SRAM de corectare a erorilor (ECC) a devenit standard în toate Xeon-urile.

O altă limitare depășită de Xeon a fost dualul SMP (simetric multiprocessor). Incapacitatea de a rula sisteme Pentium II multiprocesoare cu mai mult de două procesoare a fost motivul principal pentru supraviețuirea Pentium Pro în sectorul de servere de ultimă generație, când patru, șase. sau sunt necesare opt procesoare. Slot 2 oferă multiprocesare în patru.

Deși Intel a decis să vizeze Xeon atât pe piața stațiilor de lucru, cât și a serverelor, a dezvoltat chipset-uri diferite pentru plăci de bază pentru fiecare. 440GX este construit în jurul arhitecturii de bază a chipset-ului 440BC și este destinat stațiilor de lucru. 450NX, pe de altă parte, este proiectat special pentru piața serverelor.

Evoluții viitoare de la Intel

Intel are în prezent o serie de procesoare în dezvoltare

  • Katmai, numit după un vulcan din Alaska, este marcat ca o nouă versiune a Pentium II. Katmai se va baza pe arhitectura P6 lansată de Pentium Pro. La fel ca Deschutes, acest cip este construit pe procesul Intel de 0,25 microni. Cea mai semnificativă diferență va fi revizuirea extensiei MMX prin ridicarea acesteia la MMX2. MMX2 conține mai multe instrucțiuni pe 32 de biți - MMX existent este în mare parte pe 16 biți - și îmbunătățește semnificativ performanța grafică 3D. Alte modificări includ o magistrală frontală de 100 MHz, cache de nivel 1 mai mare și o nouă logică de bază pentru chipset concepută pentru a împinge limita de viteză de 500 MHz a Pentium II. Katmai va fi lansat cel mai probabil la începutul lui 1999.
  • Dixon, următorul membru al familiei Mendocino, este de așteptat să sosească în a doua jumătate a anului 1999. Va include probabil mai mult cache L2 (192 sau 256 kb) și Katmai New Instructions (KNI) care va elimina în cele din urmă MMX în întregime.
  • Willamette, numit după un alt râu Oregon, este o schimbare de ritm pentru Intel. Cu un nucleu Pentium Pro avansat și o capacitate de magistrală frontală de 100 MHz, Willamette este de așteptat să fie cu peste 50% mai rapid decât Pentium II-urile existente. Se zvonește că Willamette îmbunătățește performanța în virgulă mobilă și suportul pentru geometria 3D. Acesta își va găsi drumul pe piață la sfârșitul anului 1999, dar nu se va răspândi pe sisteme desktop până în 2000.
  • Merced, numit după un râu din California, va marca sfârșitul procesoarelor care folosesc arhitectura x86. Rezultatul unui proiect de cercetare comun între Hewlett-Packard și Intel, Merced va fi primul procesor care va folosi setul complet de instrucțiuni IA-64 pe 64 de biți. Acest lucru ar trebui să aibă ca rezultat o performanță superioară procesoarelor RISC și CISC mai vechi. Merced va putea, totuși, să execute în continuare instrucțiuni x86, dar nu fără o penalizare de performanță. Merced, care se așteaptă să sosească la jumătatea anului 2000, este poziționată ca o nouă eră în puterea de calcul. Acesta va servi probabil în principal piața de servere și stații de lucru, în timp ce Willamette, în esență o versiune redusă a Mersed, va funcționa în computerele personale de vârf.

  • Cum se verifică podul de sud pe placa de baza

set de comenzi redus) s-a născut ca urmare a cercetărilor practice asupra frecvenței de utilizare a comenzilor de către programatori, desfășurate în anii 70 în SUA și Anglia. Rezultatul lor imediat este binecunoscuta „regulă 80/20”: 80% din codul dintr-un program de aplicație tipic utilizează doar 20% din cele mai simple instrucțiuni ale mașinii din întregul set disponibil.

Primul procesor „adevărat” RISC cu 31 de instrucțiuni a fost creat sub conducerea lui David Patterson la Universitatea Berkeley, urmat de un procesor cu 39 de instrucțiuni. Au inclus 20-50 de mii de tranzistori. Fructele muncii lui Patterson au fost profitate de Sun Microsystems, care a dezvoltat arhitectura SPARC cu 75 de echipe la sfârșitul anilor '70. În 1981, proiectul MIPS a fost lansat la Universitatea Stanford pentru a produce un procesor RISC cu 39 de echipe. Ca urmare, Mips Computer Corporation a fost fondată la mijlocul anilor 80 și a fost proiectat următorul procesor cu 74 de comenzi.

Potrivit companiei independente IDC, în 1992, arhitectura SPARC ocupa 56% din piață, urmată de MIPS - 15% și PA-RISC - 12,2%

Cam în aceeași perioadă, Intel a dezvoltat seria 80386, ultimele procesoare CISC „adevărate” din familia IA-32. Ultima dată, îmbunătățirile de performanță au fost obținute doar prin creșterea complexității arhitecturii procesorului: a trecut de la 16 biți la 32 de biți, componente hardware suplimentare suportau memoria virtuală și au fost adăugate o mulțime de comenzi noi.

Principalele caracteristici ale procesoarelor RISC:

  1. Set de comenzi scurtat(de la 80 la 150 de echipe).
  2. Majoritatea comenzilor sunt executate într-un ciclu de ceas.
  3. Un număr mare de registre de uz general.
  4. Disponibilitatea transportoarelor rigide în mai multe trepte.
  5. Toate comenzile au un format simplu și sunt utilizate puține metode de adresare.
  6. Disponibilitatea unei memorie cache separată spațioasă.
  7. Utilizarea compilatoarelor de optimizare care analizează codul sursă și modifică parțial ordinea comenzilor.

Procesoare RISC de a treia generație

Cei mai mari dezvoltatori de procesoare RISC sunt Sun Microsystems (SPARC - arhitectura Ultra SPARC), IBM (procesoare multi-cip Power, PowerPC cu un singur cip - PowerPC 620), Digital Equipment (Alpha - Alpha 21164), Mips Technologies (Rxx00 - R 10000). familie), precum și Hewlett-Packard (arhitectură PA-RISC - PA-8000).

Toate procesoarele RISC din a treia generație:

  • sunt pe 64 de biți și suprascalar(se lansează cel puțin 4 comenzi pe ciclu de ceas);
  • au unități aritmetice în virgulă mobilă încorporate în conducte;
  • au memorie cache pe mai multe niveluri. Majoritatea procesoarelor RISC memorează în cache instrucțiunile pre-decriptate;
  • fabricat folosind tehnologia CMOS cu 4 straturi de metalizare.

Pentru procesarea datelor, se utilizează un algoritm de predicție dinamică a ramurilor și o metodă de reatribuire a registrului, care permite executarea în afara ordinii comenzilor.

Creșterea performanței procesoarelor RISC se realizează prin creșterea frecvenței de ceas și complicarea designului chipului. Reprezentanții primei direcții sunt procesoarele Alpha de la DEC, cele mai complexe sunt procesoarele de la Hewlett-Packard. Să ne uităm mai detaliat la procesoarele acestor companii.

Structura procesorului Alpha: 21064, 21264

Structura procesorului Alpha 21064 este prezentată în Fig. 10.1.


Orez. 10.1.

Principalele blocuri funcționale ale procesorului Alpha 21064:

  • I-cache - cache de comenzi.
  • IRF este un fișier de registru aritmetic întreg.
  • F-box este un dispozitiv aritmetic în virgulă mobilă.
  • E-box - dispozitiv aritmetic întreg (7 trepte transportoare).
  • I-box - dispozitiv de comandă (controlează memoria cache a comenzilor, preluarea comenzii și decriptarea).
  • A-box - dispozitiv de control pentru încărcarea/salvarea datelor. Controlează procesul de schimb de date între IRF, FRF, cache de date și memoria externă.
  • Write Buffer - buffer de rescriere.
  • D-cache - cache de date.
  • BIU este o unitate de interfață cu care se conectează memoria cache externă, cu o dimensiune de 128 KB-8 MB.

Caracteristici comparative ale Alpha 21164 și 21264

Procesorul Alpha 21264 este o îmbunătățire semnificativă față de predecesorul său, 21164, cu cache L1 mai mare, blocuri funcționale suplimentare, predicție mai eficientă a ramurilor, instrucțiuni noi de procesare video și o magistrală mai largă.

Alpha 21264 citește până la patru instrucțiuni pe ciclu de ceas și poate executa până la șase instrucțiuni simultan. Cea mai mare diferență față de modelul 21164 este capacitatea de a executa comenzi (o premieră pentru Alpha) cu o modificare a ordinii lor (Out-of-Order).

Eficiența execuției Out-of-Order este determinată de numărul de instrucțiuni pe care CPU-ul le poate manipula pentru a determina ordinea optimă de execuție a instrucțiunilor. Cu cât procesorul poate folosi mai multe instrucțiuni pentru aceasta, cu atât mai bine, cu atât poate privi mai departe. Procesoarele din clasa Intel P6 (Pentium Pro, Pentium II, Xeon) pot gestiona simultan cel puțin 40 de comenzi. Pentru alte procesoare acest indicator mult mai mult: PA-8000 de la HP operează cu 56 de comenzi, iar procesorul Alpha gestionează 80 de comenzi.

La fel ca majoritatea procesoarelor RISC, Alpha conține un set de 32 de registre întregi și 32 de registre în virgulă mobilă, toate cu lățime de 64 de biți. Pentru a crește eficiența execuției în afara ordinii instrucțiunilor, procesorul 21264 este echipat cu 48 de registre întregi și 40 de registre în virgulă mobilă în plus față de setul obișnuit de registre.

Fiecare registru poate stoca temporar valorile instrucțiunilor curente. Dacă orice instrucțiune este procesată, nu este nevoie să aruncați rezultatul în registrul țintă - în schimb, CPU-ul redenumește pur și simplu registrul temporar (Redenumirea registrului).

Redenumire similară a registrelor există și în alte procesoare. Cu toate acestea, 21264 implementează un „truc” unic - are un set duplicat de registre întregi, fiecare dintre cele 80 de registre întregi este duplicat din nou. Astfel, există un total de 160 de registre întregi pe cip. Acesta este unul dintre motivele pentru care, în ciuda dificultății de a executa Out-of-Order, frecvența ridicată a procesorului 21264 este acceptabilă.

Blocurile de operații cu numere întregi din ambele grupuri nu sunt complet identice. Unul dintre ele conține un bloc de multiplicare, iar al doilea conține o logică specială pentru procesarea imaginilor în mișcare (MPEG). Pentru a realiza acest lucru, setul de comenzi Alpha a fost completat cu cinci comenzi noi. Cel mai interesant dintre ele - PERR - este folosit pentru a estima mișcarea, adică. efectuarea unei sarcini care are loc atât în ​​timpul compresiei MPEG, cât și în timpul decompresiei. Instrucțiunea PERR efectuează activitatea a nouă instrucțiuni normale. Astfel, procesorul 21264 poate decoda secvențe video MPEG-2 precum și date audio DVD AC-3 în timp real fără a fi nevoie de periferice suplimentare.