Controlul funcționării procesorului. Procesorul central și dispozitivul său

Citiți aceste rânduri de pe un smartphone, tabletă sau computer. Oricare dintre aceste dispozitive este bazat pe microprocesor. Microprocesorul este „inima” oricărui dispozitiv de calculator. Există multe tipuri de microprocesoare, dar toate rezolvă aceleași probleme. Astăzi vom vorbi despre cum funcționează procesorul și ce sarcini îndeplinește. La prima vedere, toate acestea par evidente. Însă mulți utilizatori ar fi interesați să-și aprofundeze cunoștințele despre cea mai importantă componentă care face ca computerul să funcționeze. Vom afla cum tehnologia bazată pe o logică digitală simplă permite computerului dvs. nu numai să rezolve probleme de matematică, ci și să fie un centru de divertisment. Cum se transformă doar două numere - unu și zero - în jocuri și filme colorate? Mulți oameni și-au pus această întrebare de multe ori și vor fi bucuroși să primească un răspuns. La urma urmei, chiar și în inima recentului nostru procesor AMD Jaguar, pe care se bazează cele mai recente console de jocuri, se află aceeași logică străveche.

În literatura de limba engleză, un microprocesor este adesea numit CPU (unitate centrală de procesare, modul [unic] al procesorului central). Motivul acestui nume constă în faptul că un procesor modern este un singur cip. Primul microprocesor din istoria omenirii a fost creat de Intel Corporation în 1971.

Rolul Intel în istoria industriei microprocesoarelor


Vorbim despre modelul Intel 4004. Nu era puternic și putea efectua doar operații de adunare și scădere. Putea procesa doar patru biți de informații la un moment dat (adică era de 4 biți). Dar pentru vremea sa apariția sa a fost un eveniment semnificativ. La urma urmei, întregul procesor se potrivește într-un singur cip. Înainte de Intel 4004, computerele erau bazate pe un întreg set de cipuri sau componente discrete (tranzistoare). Microprocesorul 4004 a stat la baza unuia dintre primele calculatoare portabile.

Primul microprocesor pentru computerele de acasă a fost Intel 8080, introdus în 1974. Toată puterea de procesare a unui computer pe 8 biți era conținută într-un singur cip. Dar anunțul procesorului Intel 8088 a avut o importanță cu adevărat mare.A apărut în 1979 și din 1981 a început să fie folosit în primele calculatoare personale produse în masă, IBM PC.

Apoi procesoarele au început să se dezvolte și să devină mai puternice. Oricine este cel puțin puțin familiarizat cu istoria industriei microprocesoarelor își amintește că 8088 a fost înlocuit cu 80286. Apoi a venit 80386, urmat de 80486. Apoi au existat mai multe generații de Pentium: Pentium, Pentium II, III și Pentium 4. Toate aceste procesoare Intel bazate pe designul de bază 8088. Erau compatibile cu invers. Aceasta înseamnă că Pentium 4 ar putea procesa orice bucată de cod pentru 8088, dar a făcut-o cu o viteză de aproximativ cinci mii de ori mai mare. Nu au trecut mulți ani de atunci, dar s-au schimbat câteva generații de microprocesoare.


Din 2004, Intel a început să ofere procesoare multi-core. Numărul de tranzistori folosiți în ele a crescut cu milioane. Dar și acum procesorul respectă regulile generale care au fost create pentru cipurile timpurii. Tabelul reflectă istoria microprocesoarelor Intel până în 2004 (inclusiv). Vom face câteva explicații despre ce înseamnă indicatorii reflectați în el:
  • Nume. Model de procesor
  • Data. Anul în care procesorul a fost introdus pentru prima dată. Multe procesoare au fost introduse de mai multe ori, de fiecare dată când viteza de ceas a fost crescută. Astfel, următoarea modificare a cipului ar putea fi reanunțată chiar și la câțiva ani după ce prima sa versiune a apărut pe piață
  • Tranzistori (Număr de tranzistori). Numărul de tranzistori din cip. Puteți vedea că această cifră a crescut constant
  • Microni (Lățimea în microni). Un micron este egal cu o milioneme dintr-un metru. Valoarea acestui indicator este determinată de grosimea celui mai subțire fir din cip. Pentru comparație, grosimea unui păr uman este de 100 de microni
  • Viteza ceasului. Viteza maximă a procesorului
  • Lățimea datelor. „Capacitatea de biți” a unității aritmetice-logice (ALU) a procesorului. Un ALU de 8 biți poate adăuga, scădea, înmulți și efectua alte operații pe două numere de 8 biți. Un ALU pe 32 de biți poate gestiona numere de 32 de biți. Pentru a adăuga două numere de 32 de biți, un ALU de opt biți trebuie să execute patru instrucțiuni. O ALU pe 32 de biți poate gestiona această sarcină într-o singură instrucțiune. În multe (dar nu toate) cazurile, lățimea magistralei de date externe coincide cu „numărul de biți” al ALU. Procesorul 8088 avea un ALU de 16 biți, dar o magistrală de 8 biți. Pentru Pentium-urile ulterioare, o situație tipică a fost atunci când autobuzul era deja pe 64 de biți, dar ALU era încă pe 32 de biți
  • MIPS (milioane de instrucțiuni pe secundă). Vă permite să estimați aproximativ performanța procesorului. Cele moderne îndeplinesc atât de multe sarcini diferite încât acest indicator și-a pierdut sensul inițial și poate fi folosit în principal pentru a compara puterea de calcul a mai multor procesoare (ca în acest tabel)

Există o relație directă între viteza ceasului, precum și numărul de tranzistori și numărul de operații efectuate de procesor pe secundă. De exemplu, viteza de ceas a procesorului 8088 a ajuns la 5 MHz, iar performanța: doar 0,33 milioane de operații pe secundă. Adică a fost nevoie de aproximativ 15 cicluri de procesor pentru a executa o instrucțiune. În 2004, procesoarele puteau deja să execute două instrucțiuni pe ciclu de ceas. Această îmbunătățire a fost obținută prin creșterea numărului de procesoare de pe cip.

Cipul mai este numit și circuit integrat (sau doar circuit integrat). Cel mai adesea, aceasta este o placă mică și subțire de siliciu în care sunt „imprimate” tranzistorii. Cipul, a cărui latură ajunge la doi centimetri și jumătate, poate conține zeci de milioane de tranzistori. Cele mai simple procesoare pot fi pătrate cu latura de doar câțiva milimetri. Și această dimensiune este suficientă pentru câteva mii de tranzistori.

Logica microprocesorului


Pentru a înțelege cum funcționează un microprocesor, ar trebui să studiați logica pe care se bazează, precum și să vă familiarizați cu limbajul de asamblare. Aceasta este limba maternă a microprocesorului.

Microprocesorul este capabil să execute un set specific de instrucțiuni ale mașinii (comenzi). Funcționând cu aceste comenzi, procesorul îndeplinește trei sarcini principale:

  • Folosind unitatea sa aritmetico-logică, procesorul efectuează operații matematice: adunare, scădere, înmulțire și împărțire. Microprocesoarele moderne acceptă pe deplin operațiuni în virgulă mobilă (folosind un procesor aritmetic dedicat în virgulă mobilă)
  • Microprocesorul este capabil să mute date de la un tip de memorie la altul
  • Microprocesorul are capacitatea de a lua o decizie și, pe baza deciziei pe care o ia, „sări”, adică trece la executarea unui nou set de instrucțiuni

Microprocesorul contine:

  • Autobuz de adrese. Lățimea acestei magistrale poate fi de 8, 16 sau 32 de biți. Ea este angajată în trimiterea adresei în memorie
  • Bus de date: 8, 16, 32 sau 64 de biți. Această magistrală poate trimite date în memorie sau poate primi date din memorie. Când se vorbește despre „capacitatea de biți” a unui procesor, vorbim despre lățimea magistralei de date
  • Canalele RD (citire) și WR (scriere) care asigură interacțiunea cu memoria
  • Linie de ceas (magistrală de impulsuri de ceas), care oferă cicluri de ceas al procesorului
  • Linia de resetare (ștergere magistrală, resetare magistrală), care resetează contorul programului și repornește execuția instrucțiunii

Deoarece informațiile sunt destul de complexe, vom presupune că lățimea ambelor magistrale - magistrala de adrese și de date - este de numai 8 biți. Să aruncăm o privire rapidă asupra componentelor acestui microprocesor relativ simplu:

  • Registrele A, B și C sunt cipuri logice utilizate pentru stocarea intermediară a datelor
  • Blocarea adresei este similară cu registrele A, B și C
  • Contorul de programe este un cip logic (latch) capabil să crească o valoare cu unul la un pas (dacă primește comanda corespunzătoare) și să pună la zero valoarea (sub rezerva primirii comenzii corespunzătoare)
  • O ALU (unitate logică aritmetică) poate efectua operații de adunare, scădere, înmulțire și împărțire între numere de 8 biți sau poate acționa ca un sumator obișnuit
  • Registrul de testare este un zăvor special care stochează rezultatele operațiunilor de comparare efectuate de ALU. De obicei, ALU compară două numere și determină dacă sunt egale sau unul este mai mare decât celălalt. Registrul de testare este, de asemenea, capabil să stocheze bitul de transport al ultimei acțiuni a sumatorului. Stochează aceste valori într-un circuit flip-flop. Aceste valori pot fi utilizate ulterior de decodorul de comenzi pentru a lua decizii
  • Șase blocuri din diagramă sunt etichetate „3-State”. Acestea sunt tampon de sortare. Mai multe surse de ieșire pot fi conectate la un fir, dar tamponul de sortare permite doar uneia dintre ele (o dată) să transmită o valoare: „0” sau „1”. Astfel, tamponul de sortare poate sări peste valori sau să blocheze sursa de ieșire să transmită date
  • Registrul de instrucțiuni și decodorul de instrucțiuni țin toate componentele de mai sus sub control

Această diagramă nu arată liniile de control ale decodorului de comandă, care pot fi exprimate sub forma următoarelor „comenzi”:

  • „Registrul A acceptă valoarea care vine în prezent din magistrala de date”
  • „Registrul B acceptă valoarea care vine în prezent din magistrala de date”
  • „Registrul C acceptă valoarea care provine în prezent de la unitatea logică aritmetică”
  • „Registrul contorului programului ia valoarea care vine în prezent din magistrala de date”
  • „Registrul de adrese pentru a accepta valoarea care vine în prezent din magistrala de date”
  • „Registrul de comenzi acceptă valoarea care vine în prezent din magistrala de date”
  • „Măriți valoarea contorului programului [cu unu]”
  • „Contorul de comenzi va fi resetat la zero”
  • „Activați unul din șase tampon de sortare” (șase linii de control separate)
  • „Spuneți unității logice aritmetice ce operație ar trebui să efectueze.”
  • „Registrul de testare acceptă biți de testare de la ALU”
  • „Activați RD (canal de citire)”
  • „Activați WR (canal de înregistrare)”

Decodorul de comandă primește biți de date din registrul de testare, canalul de sincronizare și, de asemenea, din registrul de comandă. Dacă simplificăm cât mai mult posibil descrierea sarcinilor decodorului de instrucțiuni, atunci putem spune că acest modul este cel care „spune” procesorului ce trebuie făcut în acest moment.

Memorie cu microprocesor


Familiarizarea cu informațiile legate de memoria computerului și ierarhia acesteia vă va ajuta să înțelegeți mai bine conținutul acestei secțiuni.

Mai sus am scris despre autobuze (adresă și date), precum și despre canalele de citire (RD) și scriere (WR). Aceste magistrale și canale sunt conectate la memorie: memorie cu acces aleatoriu (RAM) și memorie doar pentru citire (ROM). În exemplul nostru, luăm în considerare un microprocesor a cărui lățime a fiecărei magistrale este de 8 biți. Aceasta înseamnă că este capabil să adreseze 256 de octeți (de la doi până la a opta putere). Poate citi sau scrie 8 biți de date din memorie simultan. Să presupunem că acest microprocesor simplu are 128 de octeți de ROM (începând de la adresa 0) sau 128 de octeți de RAM (începând de la adresa 128).

Un modul de memorie numai pentru citire conține un set persistent prestabilit de octeți. Autobuzul de adrese solicită un anumit octet din ROM să fie transferat pe magistrala de date. Când canalul de citire (RD) își schimbă starea, modulul ROM furnizează octetul solicitat magistralei de date. Adică, în acest caz, este posibilă doar citirea datelor.

Procesorul nu poate doar să citească informații din RAM, ci și să scrie date pe acesta. În funcție de faptul că se efectuează citirea sau scrierea, semnalul intră fie în canalul de citire (RD), fie în canalul de scriere (WR). Din păcate, memoria RAM este volatilă. Când alimentarea este oprită, pierde toate datele stocate în ea. Din acest motiv, un computer are nevoie de un dispozitiv de stocare non-volatil, doar pentru citire.

Mai mult, teoretic, un computer se poate lipsi deloc de RAM. Multe microcontrolere permit ca octeții de date necesari să fie plasați direct pe cipul procesorului. Dar este imposibil să faci fără ROM. În computerele personale, ROM-ul este numit sistemul de bază de intrare și ieșire (BIOS, Basic Input/Output System). La pornire, microprocesorul își începe lucrul executând comenzile găsite în BIOS.

Comenzile BIOS efectuează teste pe hardware-ul computerului, apoi accesează hard disk-ul și selectează sectorul de pornire. Acest sector de boot este un mic program separat pe care BIOS-ul îl citește mai întâi de pe disc și apoi îl plasează în RAM. După aceasta, microprocesorul începe să execute comenzi din sectorul de boot situat în RAM. Programul sectorului de pornire îi spune microprocesorului ce date (destinate pentru execuția ulterioară de către procesor) ar trebui mutate suplimentar de pe hard disk în RAM. Acesta este modul în care procesorul încarcă sistemul de operare.

Instrucțiuni pentru microprocesor


Chiar și cel mai simplu microprocesor este capabil să proceseze un set destul de mare de instrucțiuni. Un set de instrucțiuni este un fel de șablon. Fiecare dintre aceste instrucțiuni încărcate în registrul de comenzi are propriul său sens. Nu este ușor pentru oameni să-și amintească succesiunea de biți, așa că fiecare instrucțiune este descrisă ca un cuvânt scurt, fiecare dintre acestea reprezentând o comandă specifică. Aceste cuvinte alcătuiesc limbajul de asamblare al procesorului. Asamblatorul traduce aceste cuvinte într-un limbaj de cod binar pe care procesorul îl poate înțelege.

Iată o listă de cuvinte de comandă în limbajul de asamblare pentru un procesor simplu convențional, pe care le considerăm ca exemplu pentru povestea noastră:

  • LOADA mem — Încărcați registrul A dintr-o adresă de memorie
  • LOADB mem — Încărcați registrul B de la o adresă de memorie
  • CONB con — Încărcați o valoare constantă în registrul B
  • SAVEB mem — Salvați valoarea registrului B în memorie la o anumită adresă
  • SAVEC mem — Salvați valoarea registrului C în memorie la o anumită adresă
  • ADD — Adăugați (adăugați) valorile registrelor A și B. Stocați rezultatul acțiunii în registrul C
  • SUB — Scădeți valoarea registrului B din valoarea registrului A. Stocați rezultatul acțiunii în registrul C
  • MUL — Înmulțiți valorile registrelor A și B. Stocați rezultatul acțiunii în registrul C
  • DIV — Împărțiți valoarea registrului A la valoarea registrului B. Stocați rezultatul acțiunii în registrul C
  • COM - Comparați valorile registrelor A și B. Transferați rezultatul în registrul de testare
  • JUMP adresa - Salt la adresa specificată
  • JEQ addr - Dacă este îndeplinită condiția de egalitate a valorilor a două registre, săriți la adresa specificată
  • JNEQ addr - Dacă nu este îndeplinită condiția pentru valori egale a două registre, săriți la adresa specificată
  • JG addr - Dacă valoarea este mai mare, săriți la adresa specificată
  • JGE addr - Dacă valoarea este mai mare sau egală cu, săriți la adresa specificată
  • JL addr - Dacă valoarea este mai mică, săriți la adresa specificată
  • JLE addr — Dacă valoarea este mai mică sau egală cu, săriți la adresa specificată
  • STOP - Opriți execuția

Cuvintele în limba engleză care denotă acțiunile efectuate sunt date între paranteze pentru un motiv. Deci putem vedea că limbajul de asamblare (ca multe alte limbaje de programare) se bazează pe engleză, adică pe mijloacele obișnuite de comunicare ale acelor oameni care au creat tehnologii digitale.

Funcționarea microprocesorului folosind exemplul de calcul factorial


Să luăm în considerare funcționarea unui microprocesor folosind un exemplu specific de execuție a unui program simplu care calculează factorialul numărului „5”. Mai întâi, să rezolvăm această problemă „într-un notebook”:

factorial de 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120

În limbajul de programare C, această bucată de cod care efectuează acest calcul ar arăta astfel:

A=1;f=1;în timp ce (a

Când acest program se termină, variabila f va conține valoarea factorialului de cinci.

Compilatorul C traduce (adică traduce) acest cod într-un set de instrucțiuni în limbaj de asamblare. În procesorul pe care îl luăm în considerare, RAM începe la adresa 128, iar memoria permanentă (care conține limbaj de asamblare) începe la adresa 0. Prin urmare, în limbajul acestui procesor, acest program va arăta astfel:

// Să presupunem că a este la adresa 128 // Să presupunem că F este la adresa 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // dacă a > 5 saltul la 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP back to 4 //17

Acum apare următoarea întrebare: cum arată toate aceste comenzi în memoria permanentă? Fiecare dintre aceste instrucțiuni trebuie să fie reprezentată ca un număr binar. Pentru a simplifica înțelegerea materialului, vom presupune că fiecare dintre comenzile limbajului de asamblare ale procesorului pe care îl luăm în considerare are un număr unic:

  • ÎNCĂRCARE - 1
  • LOADB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ADAUGĂ - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP adresa - 11
  • Adresă JEQ - 12
  • Adresa JNEQ - 13
  • Adresa JG - 14
  • Adresa JGE - 15
  • Adresa JL - 16
  • Adresa JLE - 17
  • STOP - 18

// Să presupunem că a este la adresa 128 // Să presupunem că F este la adresa 129Addr machine instruction/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1297 1298 4 // 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 12818 12819 8 // MUL201 12819 8 // MUL201 12921 5129 23 12 824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

După cum veți observa, șapte linii de cod C au fost convertite în 18 linii de limbaj de asamblare. Au ocupat 32 de octeți în ROM.

Decodare


Conversația despre decodare va trebui să înceapă cu o luare în considerare a problemelor filologice. Din păcate, nu toți termenii informatici au corespondență unu-la-unu în rusă. Traducerea terminologiei a avut loc adesea spontan și, prin urmare, același termen englez poate fi tradus în rusă în mai multe moduri. Acesta este ceea ce s-a întâmplat cu cea mai importantă componentă a logicii microprocesorului „decodor de instrucțiuni”. Experții în computer îl numesc atât decodor de comandă, cât și decodor de instrucțiuni. Niciuna dintre aceste opțiuni de nume nu poate fi numită mai mult sau mai puțin „corectă” decât cealaltă.

Este necesar un decodor de instrucțiuni pentru a traduce fiecare cod de mașină într-un set de semnale care conduc diferitele componente ale microprocesorului. Dacă simplificăm esența acțiunilor sale, atunci putem spune că el este cel care coordonează „software” și „hardware”.

Să ne uităm la funcționarea decodorului de comenzi folosind exemplul instrucțiunii ADD, care efectuează o acțiune de adăugare:

  • În timpul primului ciclu de ceas al procesorului, instrucțiunea este încărcată. În acest moment, decodorul de comandă trebuie să: activeze tamponul de sortare pentru contorul de programe; activarea canalului de citire (RD); activați dispozitivul de blocare a tamponului de sortare pentru a trece datele de intrare în registrul de instrucțiuni
  • În timpul celui de-al doilea ciclu de ceas al procesorului, instrucțiunea ADD este decodificată. În această etapă, unitatea logică aritmetică efectuează adunarea și transferă valoarea în registrul C
  • În timpul celui de-al treilea ciclu al frecvenței ceasului procesorului, contorul programului își mărește valoarea cu unu (teoretic, această acțiune se suprapune cu ceea ce s-a întâmplat în timpul celui de-al doilea ciclu)

Fiecare instrucțiune poate fi reprezentată ca un set de operații executate secvenţial care manipulează componentele microprocesorului într-o anumită ordine. Adică, instrucțiunile software duc la modificări complet fizice: de exemplu, schimbarea poziției unui zăvor. Unele instrucțiuni pot necesita două sau trei cicluri de ceas al procesorului pentru a fi executate. Alții pot necesita chiar și cinci sau șase cicluri.

Microprocesoare: performanță și tendințe


Numărul de tranzistori dintr-un procesor este un factor important care afectează performanța acestuia. După cum sa arătat mai devreme, procesorul 8088 a necesitat 15 cicluri de ceas pentru a executa o instrucțiune. Și pentru a efectua o operație pe 16 biți, a fost nevoie de aproximativ 80 de cicluri. Așa a fost conceput multiplicatorul ALU al acestui procesor. Cu cât mai mulți tranzistori și cu cât multiplicatorul ALU este mai puternic, cu atât procesorul poate face mai mult într-un singur ciclu de ceas.

Multe tranzistoare acceptă tehnologia pipelining. În cadrul unei arhitecturi pipeline, instrucțiunile executabile se suprapun parțial unele pe altele. O instrucțiune poate necesita aceleași cinci cicluri pentru a fi executată, dar dacă procesorul procesează simultan cinci instrucțiuni (la diferite etape de finalizare), atunci, în medie, va fi necesar un ciclu de ceas al procesorului pentru a executa o instrucțiune.

Multe procesoare moderne au mai mult de un decodor de comandă. Și fiecare dintre ele acceptă conducte. Acest lucru permite executarea mai multor instrucțiuni într-un ciclu de procesor. Implementarea acestei tehnologii necesită un număr incredibil de tranzistori.

procesoare pe 64 de biți


Deși procesoarele pe 64 de biți s-au răspândit cu doar câțiva ani în urmă, ele există de relativ mult timp: din 1992. Atât Intel, cât și AMD oferă în prezent astfel de procesoare. Un procesor pe 64 de biți poate fi considerat a fi unul care are o unitate logică aritmetică pe 64 de biți (ALU), registre pe 64 de biți și magistrale pe 64 de biți.

Principalul motiv pentru care procesoarele au nevoie de 64 de biți este că arhitectura extinde spațiul de adrese. Procesoarele pe 32 de biți pot accesa doar doi sau patru gigaocteți de memorie RAM. Cândva aceste cifre păreau gigantice, dar anii au trecut și astăzi o astfel de amintire nu va mai surprinde pe nimeni. Acum câțiva ani, memoria unui computer tipic era de 256 sau 512 megaocteți. În acele zile, limita de patru gigabyte deranja doar serverele și mașinile care rulau baze de date mari.

Dar s-a dovedit rapid că chiar și utilizatorilor obișnuiți le lipsesc uneori doi sau chiar patru gigaocteți de memorie RAM. Această limitare enervantă nu se aplică procesoarelor pe 64 de biți. Spațiul de adrese disponibil pentru ei în prezent pare infinit: de la doi până la șaizeci și patru de octeți, sau ceva de genul un miliard de gigaocteți. O astfel de memorie RAM gigantică nu este așteptată în viitorul apropiat.

Autobuzul de adrese pe 64 de biți, precum și magistralele de date largi și de mare viteză ale plăcilor de bază corespunzătoare, permit computerelor pe 64 de biți să mărească viteza de intrare și ieșire a datelor atunci când interacționează cu dispozitive precum hard diskul și placa video. Aceste noi caracteristici măresc semnificativ performanța mașinilor de calcul moderne.

Dar nu toți utilizatorii vor experimenta beneficiile arhitecturii pe 64 de biți. Este necesar, în primul rând, pentru cei care editează videoclipuri și fotografii și, de asemenea, lucrează cu diverse imagini mari. Calculatoarele pe 64 de biți sunt apreciate de cunoscătorii de jocuri pe calculator. Dar acei utilizatori care pur și simplu folosesc un computer pentru a comunica pe rețelele sociale și a naviga pe web și edita fișiere text, cel mai probabil, pur și simplu nu vor simți niciun avantaj al acestor procesoare.

Pe baza materialelor de pe computer.howstuffworks.com

Designul și principiul de funcționare al procesorului

Procesorul este principalul dispozitiv de calculator care efectuează operații logice și aritmetice și controlează toate componentele computerului. Procesorul este o placă de siliciu dreptunghiulară subțire în miniatură pe care sunt plasate un număr mare de tranzistoare care implementează toate funcțiile îndeplinite de procesor. Placa de siliciu este foarte fragilă și, deoarece orice deteriorare a acesteia va duce la defectarea procesorului, este plasată într-o carcasă din plastic sau ceramică.

1. Introducere.

Un procesor modern este un dispozitiv complex și de înaltă tehnologie care include toate cele mai recente realizări în domeniul calculului și în domeniile conexe ale științei.

Cele mai multe procesoare moderne constau din:

  • unul sau mai multe nuclee care execută toate instrucțiunile;
  • mai multe niveluri de memorie cache (de obicei 2 sau trei niveluri), accelerând interacțiunea procesorului cu RAM;
  • controler RAM;
  • controler magistrală de sistem (DMI, QPI, HT etc.);

Și se caracterizează prin următorii parametri:

  • tip de microarhitectură;
  • frecvența ceasului;
  • set de comenzi de executat;
  • numărul de niveluri de memorie cache și volumul acestora;
  • tipul și viteza magistralei de sistem;
  • dimensiunea cuvintelor procesate;
  • prezența sau absența unui controler de memorie încorporat;
  • tipul de RAM suportat;
  • volumul memoriei adresabil;
  • prezența sau absența unui nucleu grafic încorporat;
  • Consumul de energie.

O diagramă bloc simplificată a unui procesor multi-core modern este prezentată în Figura 1.

Să începem revizuirea designului procesorului cu partea sa principală - nucleul.

2. Miezul procesorului.

Nucleul procesorului este partea sa principală, care conține toate blocurile funcționale și efectuează toate operațiile logice și aritmetice.

Figura 1 prezintă o diagramă bloc a miezului procesorului. După cum se poate vedea în figură, fiecare nucleu de procesor este format din mai multe blocuri funcționale:

  • bloc de preluare a instrucțiunilor;
  • blocuri de decodare a instrucțiunilor;
  • blocuri de eșantionare a datelor;
  • Unitatea de comandă;
  • blocuri de execuție a instrucțiunilor;
  • blocuri pentru salvarea rezultatelor;
  • bloc de lucru cu întreruperi;
  • ROM care conține microcod;
  • set de registre;
  • contor de programe.

Bloc de preluare a instrucțiunilor citește instrucțiuni la adresa specificată în contorul de programe. De obicei, citește mai multe instrucțiuni pe ciclu de ceas. Numărul de instrucțiuni citite este determinat de numărul de blocuri de decodare, deoarece este necesar să încărcați blocurile de decodare cât mai mult posibil la fiecare ciclu de operare. Pentru ca unitatea de preluare a instrucțiunilor să funcționeze optim, nucleul procesorului are un predictor de ramificație.

Predictor de tranzițieîncearcă să determine ce secvență de comenzi va fi executată după ce a fost efectuată o tranziție. Acest lucru este necesar pentru a încărca conducta de bază a procesorului cât mai mult posibil după un salt condiționat.

Blocuri de decodare, după cum sugerează și numele, sunt blocuri care se ocupă de instrucțiuni de decodare, adică determinați ce trebuie să facă procesorul și ce date suplimentare sunt necesare pentru a executa instrucțiunea. Această sarcină este foarte dificilă pentru majoritatea procesoarelor comerciale moderne construite pe conceptul CISC. Faptul este că lungimea instrucțiunilor și numărul de operanzi nu sunt fixe, iar acest lucru complică foarte mult viața dezvoltatorilor de procesoare și face ca procesul de decodare să fie o sarcină netrivială.

Adesea, instrucțiunile complexe individuale trebuie înlocuite cu microcod - o serie de instrucțiuni simple care efectuează în mod colectiv aceeași acțiune ca o instrucțiune complexă. Setul de microcoduri este flash în ROM-ul încorporat în procesor. În plus, microcodul simplifică dezvoltarea procesorului, deoarece nu este nevoie să se creeze blocuri complexe de nucleu pentru a executa comenzi individuale, iar repararea microcodului este mult mai ușoară decât repararea unei erori în funcționarea blocului.

Procesoarele moderne au de obicei 2-4 blocuri de decodare de instrucțiuni; de exemplu, la procesoarele Intel Core 2, fiecare nucleu conține două astfel de blocuri.

Blocuri de eșantionare a datelor Preluați datele din memoria cache sau RAM necesare pentru a executa instrucțiunile curente. De obicei, fiecare nucleu de procesor conține mai multe blocuri de eșantionare a datelor. De exemplu, procesoarele Intel Core folosesc două mostre de date pentru fiecare nucleu.

Bloc de control Pe baza instrucțiunilor decodificate, controlează funcționarea blocurilor de execuție a instrucțiunilor, distribuie sarcina între ele și asigură executarea în timp util și corectă a instrucțiunilor. Acesta este unul dintre cele mai importante blocuri ale nucleului procesorului.

Blocuri de execuție a instrucțiunilor include mai multe tipuri diferite de blocuri:

ALU – unitate aritmetică logică;

FPU – dispozitiv pentru efectuarea de operații în virgulă mobilă;

Blocuri pentru procesarea extinderii setului de instrucțiuni. Sunt folosite instrucțiuni suplimentare pentru a accelera procesarea fluxurilor de date, criptarea și decriptarea, codificarea video și așa mai departe. Pentru a face acest lucru, în miezul procesorului sunt introduse registre și seturi de logică suplimentare. În prezent, cele mai populare extensii la seturile de instrucțiuni sunt:

MMX (Multimedia Extensions) este un set de instrucțiuni dezvoltat de Intel pentru a accelera codificarea și decodificarea datelor audio și video în flux;

SSE (Streaming SIMD Extensions) este un set de instrucțiuni dezvoltat de Intel pentru a efectua aceeași secvență de operații pe un set de date în timp ce paralelizează procesul de calcul. Seturile de comenzi sunt in permanenta imbunatatite, iar in acest moment sunt revizuiri: SSE, SSE2, SSE3, SSSE3, SSE4;

ATA (Application Targeted Accelerator) este un set de instrucțiuni dezvoltat de Intel pentru a accelera funcționarea software-ului specializat și a reduce consumul de energie atunci când lucrați cu astfel de programe. Aceste instrucțiuni pot fi utilizate, de exemplu, la calcularea sumelor de control sau la căutarea datelor;

3DNow este un set de instrucțiuni dezvoltat de AMD pentru a extinde capacitățile setului de instrucțiuni MMX;

AES (Advanced Encryption Standard) este un set de instrucțiuni dezvoltat de Intel pentru a accelera funcționarea aplicațiilor care utilizează criptarea datelor folosind același algoritm.

Bloc de salvare a rezultatelor se asigură că rezultatul executării instrucțiunii este înregistrat în RAM la adresa specificată în instrucțiunea în curs de procesare.

Blocarea întreruperii. Lucrul cu întreruperi este una dintre cele mai importante sarcini ale procesorului, permițându-i să răspundă la evenimente în timp util, să întrerupă progresul programului și să efectueze acțiunile necesare. Datorită prezenței întreruperilor, procesorul este capabil să funcționeze pseudo-paralel, adică la așa-numitul multitasking.

Întreruperile sunt tratate după cum urmează. Procesorul verifică dacă există o cerere de întrerupere înainte de a începe fiecare ciclu. Dacă există o întrerupere de gestionat, procesorul stochează în stivă adresa instrucțiunii pe care trebuia să o execute și datele primite de la executarea ultimei instrucțiuni și trece la executarea funcției de serviciu de întrerupere.

După ce funcția de procesare a întreruperii se termină de execuție, datele stocate pe ea sunt citite din stivă, iar procesorul reia executarea sarcinii restaurate.

Registrele– RAM ultra-rapidă (accesul la registre este de câteva ori mai rapid decât accesul la memoria cache) de volum mic (câteva sute de octeți), inclusă în procesor, pentru stocarea temporară a rezultatelor intermediare ale execuției instrucțiunilor. Registrele procesoarelor sunt împărțite în două tipuri: registre de uz general și registre speciale.

Registrele de uz general sunt utilizate atunci când se efectuează operații aritmetice și logice, sau operații specifice ale seturilor de instrucțiuni suplimentare (MMX, SSE etc.).

Registrele cu scop special conțin date de sistem necesare pentru ca procesorul să funcționeze. Astfel de registre includ, de exemplu, registre de control, registre de adrese de sistem, registre de depanare etc. Accesul la aceste registre este strict reglementat.

Contor de programe– un registru care conține adresa instrucțiunii pe care procesorul o va începe să o execute la următorul ciclu de ceas.

2.1 Principiul de funcționare a nucleului procesorului.

Principiul de funcționare al nucleului procesorului se bazează pe un ciclu descris de John von Neumann în 1946. Într-o formă simplificată, etapele ciclului miezului procesorului pot fi reprezentate după cum urmează:

1. Unitatea de preluare a instrucțiunilor verifică întreruperi. Dacă există o întrerupere, atunci datele registrelor și ale contorului de programe sunt scrise în stivă, iar adresa comenzii de gestionare a întreruperilor este scrisă în contorul de programe. La sfârșitul funcției de gestionare a întreruperilor, datele din stivă vor fi restaurate;

2. Unitatea de preluare a instrucțiunii citește adresa instrucțiunii care urmează să fie executată din contorul de programe. Comanda este citită din memoria cache sau din RAM la această adresă. Datele primite sunt transmise la unitatea de decodare;

3. Unitatea de decodare a comenzii decriptează comanda, dacă este necesar folosind microcodul înregistrat în ROM pentru a interpreta comanda. Dacă aceasta este o comandă de salt, atunci adresa de salt este scrisă în contorul de program și controlul este transferat în blocul de preluare a instrucțiunilor (punctul 1), în caz contrar, contorul de program este mărit cu dimensiunea instrucțiunii (pentru un procesor cu o lungime a instrucțiunii de 32 biți - cu 4) și transferă controlul către blocul de preluare a datelor;

4. Unitatea de eșantionare a datelor citește datele necesare executării comenzii din memoria cache sau RAM și transferă controlul către planificator;

5. Blocul de control determină ce bloc de execuție a instrucțiunii va procesa sarcina curentă și transferă controlul acestui bloc;

6. Blocurile de execuție a instrucțiunilor efectuează acțiunile cerute de comandă și transferă controlul către blocul de salvare a rezultatelor;

7. Dacă este necesară salvarea rezultatelor în RAM, blocul de stocare a rezultatelor efectuează acțiunile necesare și transferă controlul către blocul de preluare a instrucțiunilor (punctul 1).

Bucla descrisă mai sus se numește proces (de aceea un procesor se numește procesor). Secvența de comenzi executate se numește program.

Viteza de trecere de la o etapă a ciclului la alta este determinată de frecvența de ceas a procesorului, iar timpul de funcționare al fiecărei etape a ciclului și timpul petrecut pentru execuția completă a unei instrucțiuni sunt determinate de proiectarea miezul procesorului.

2.2. Modalități de îmbunătățire a performanței nucleului procesorului.

Creșterea performanței nucleului procesorului prin creșterea frecvenței de ceas are o limitare strictă. Creșterea frecvenței de ceas implică o creștere a temperaturii procesorului, a consumului de energie și o scădere a stabilității funcționării și a duratei de viață a acestuia.

Prin urmare, dezvoltatorii de procesoare folosesc diverse soluții arhitecturale pentru a crește performanța procesorului fără a crește viteza de ceas.

Să ne uităm la principalele modalități de a crește performanța procesorului.

2.2.1. Conducte.

Fiecare instrucțiune executată de procesor trece secvenţial prin toate blocurile de nucleu, fiecare dintre ele efectuând propria sa parte din acțiunile necesare executării instrucțiunii. Dacă începeți să procesați o nouă instrucțiune numai după finalizarea lucrării la prima instrucțiune, atunci majoritatea blocurilor de bază ale procesorului vor fi inactive la un moment dat și, în consecință, capacitățile procesorului nu vor fi utilizate pe deplin.

Să luăm în considerare un exemplu în care procesorul va executa un program format din cinci instrucțiuni (K1–K5), fără a utiliza principiul pipeline-ului. Pentru a simplifica exemplul, presupunem că fiecare bloc de bază al procesorului execută o instrucțiune într-un ciclu de ceas.

Deci tu Exemple de instrucțiuni Instrucțiuni de decodare Eșantionarea datelor Executarea instructiunilor Salvarea rezultatului
1 K1 - - - -
2 - K1 - - -
3 - - K1 - -
4 - - - K1 -
5 - - - - K1
6 K2 - - - -
7 - K2 - - -
8 - - K2 - -
9 - - - K2 -
10 - - - - K2
11 K3 - - - -
12 - K3 - - -
13 - - K3 - -
14 - - - K3 -
15 - - - - K3
16 K4 - - - -
17 - K4 - - -
18 - - K4 - -
19 - - - K4 -
20 - - - - K4
21 K5 - - - -
22 - K5 - - -
23 - - K5 - -
24 - - - K5 -
25 - - - - K5

După cum se poate observa din tabel, procesorul a avut nevoie de 25 de cicluri de ceas pentru a executa cinci instrucțiuni. În același timp, în fiecare ciclu, patru din cele cinci blocuri ale nucleului procesorului erau inactive, adică. Procesorul a folosit doar 20% din potentialul sau. Desigur, la procesoarele reale totul este mai complicat. Blocuri de procesoare diferite rezolvă probleme de complexitate diferită. De asemenea, instrucțiunile în sine variază în complexitate. Dar, în general, situația rămâne aceeași.

Pentru a rezolva această problemă, în toate procesoarele moderne, execuția instrucțiunilor este construită pe principiul unei conducte, adică pe măsură ce blocurile de nucleu sunt eliberate, acestea sunt încărcate prin procesarea următoarei instrucțiuni, fără a aștepta până când instrucțiunea anterioară este complet executată. .

Să ne uităm la un exemplu de executare a aceluiași program, constând din cinci instrucțiuni, dar folosind principiul pipeline-ului.

Deci tu Exemple de instrucțiuni Instrucțiuni de decodare Eșantionarea datelor Executarea instructiunilor Salvarea rezultatului
1 K1 - - - -
2 K2 K1 - - -
3 K3 K2 K1 - -
4 K4 K3 K2 K1 -
5 K5 K4 K3 K2 K1
6 - K5 K4 K3 K2
7 - - K5 K4 K3
8 - - - K5 K4
9 - - - - K5

Același program a fost executat în 9 cicluri de ceas, ceea ce este de aproape 2,8 ori mai rapid decât atunci când lucrați fără o conductă. După cum se poate observa din tabel, sarcina maximă a procesorului a fost obținută la ciclul 5. În acest moment, toate blocurile nucleului procesorului au fost folosite. Și de la primul până la al patrulea ciclu, inclusiv, transportorul a fost umplut.

Deoarece procesorul execută instrucțiuni în mod continuu, atunci, în mod ideal, ar putea fi 100% ocupat, iar cu cât conducta este mai lungă, cu atât s-ar obține un câștig de performanță mai mare. Dar în practică nu este cazul.

În primul rând, fluxul de comandă real procesat de procesor este inconsecvent. Conține adesea tranziții. În același timp, până când comanda de salt condiționat este procesată complet, conducta nu va putea începe să execute o nouă comandă, deoarece nu știe la ce adresă se află.

După o tranziție condiționată, transportorul trebuie reumplut. Și cu cât conducta este mai lungă, cu atât durează mai mult. Ca rezultat, câștigul de productivitate din introducerea unui transportor este redus.

Pentru a reduce influența ramurilor condiționate asupra funcționării conductei, blocurile de predicție a ramurilor condiționate sunt introduse în miezul procesorului. Sarcina principală a acestor blocuri este de a determina când va fi făcută ramura condiționată și ce comenzi vor fi executate după ce va fi făcută ramura condiționată.

Dacă saltul condiționat poate fi prezis, atunci execuția instrucțiunilor la noua adresă începe înainte de finalizarea procesării instrucțiunii de salt condiționat. Ca urmare, umplerea transportorului nu va fi afectată.

Conform statisticilor, acuratețea blocurilor de predicție a ramurilor condiționate în procesoarele moderne depășește 90%, ceea ce face posibilă crearea unor conducte destul de lungi, dar în același timp bine umplute.

În al doilea rând, instrucțiunile procesate frecvent sunt interconectate, adică una dintre instrucțiuni necesită rezultatul executării unei alte instrucțiuni ca date de intrare.

În acest caz, poate fi executat numai după ce prima instrucțiune a fost complet procesată. Cu toate acestea, procesoarele moderne pot analiza codul mai multe instrucțiuni înainte și, de exemplu, în paralel cu prima instrucțiune, pot procesa o a treia instrucțiune, care nu depinde în niciun fel de primele două.

La majoritatea procesoarelor moderne, sarcina de a analiza relația instrucțiunilor și de a întocmi ordinea procesării lor cade pe umerii procesorului, ceea ce duce inevitabil la o scădere a performanței sale și la o creștere a costului.

Cu toate acestea, programarea statică devine din ce în ce mai populară, atunci când ordinea în care programul este executat de către procesor este determinată în etapa de compilare a programului. În acest caz, instrucțiunile care pot fi executate în paralel sunt combinate de compilator într-o singură instrucțiune lungă în care se știe că toate instrucțiunile sunt paralele. Procesoarele care lucrează cu astfel de instrucțiuni sunt construite pe arhitectura VLIW (Very long instruction word).

2.2.2. Superscalaritate.

Superscalaritatea este arhitectura nucleului de calcul, în care cele mai încărcate blocuri pot fi incluse în mai multe copii. De exemplu, într-un nucleu de procesor, o unitate de preluare a instrucțiunilor poate încărca mai multe unități de decodare simultan.

În acest caz, blocurile care efectuează acțiuni mai complexe și funcționează mai mult, datorită procesării paralele a mai multor instrucțiuni simultan, nu vor întârzia întreaga conductă.

Cu toate acestea, execuția paralelă a instrucțiunilor este posibilă numai dacă aceste instrucțiuni sunt independente.

O diagramă bloc a unui nucleu conductă al unui procesor ipotetic construit folosind principiul superscalar este prezentată în Figura 1. În această figură, fiecare nucleu de procesor are mai multe unități de decodare, mai multe unități de preluare a datelor și mai multe unități de execuție a instrucțiunilor.

2.2.3. Prelucrare paralelă a datelor.

Este imposibil să creșteți la nesfârșit performanța procesoarelor prin creșterea frecvenței de ceas. O creștere a frecvenței de ceas implică o creștere a generării de căldură, o scădere a duratei de viață și a fiabilității procesoarelor, iar întârzierile de la accesul la memorie reduc foarte mult efectul de creștere a frecvenței de ceas. Într-adevăr, în zilele noastre aproape niciodată nu găsești procesoare cu o viteză de ceas mai mare de 3,8 GHz.

Problemele asociate cu creșterea vitezei de ceas obligă dezvoltatorii să caute alte modalități de a crește performanța procesorului. Una dintre cele mai populare metode este calculul paralel.

Marea majoritate a procesoarelor moderne au două sau mai multe nuclee. Modelele de top pot conține 8 sau chiar 12 nuclee și cu suport pentru tehnologia hyper-threading. Avantajele introducerii de nuclee suplimentare sunt destul de clare; practic obținem mai multe procesoare, fiecare capabil să-și rezolve în mod independent propriile sarcini și, desigur, crește performanța. Cu toate acestea, câștigurile de productivitate nu se ridică întotdeauna la nivelul așteptărilor.

În primul rând, nu toate programele acceptă distribuirea calculelor pe mai multe nuclee. Desigur, programele pot fi împărțite între nuclee, astfel încât fiecare nucleu rulează propriul set de programe independente. De exemplu, un nucleu rulează un sistem de operare cu un set de programe utilitare, un alt nucleu rulează programe de utilizator și așa mai departe.

Dar acest lucru oferă un câștig de performanță până când apare un program care necesită mai multe resurse decât poate oferi un nucleu. Este bine dacă acceptă distribuția sarcinii între mai multe nuclee. Dar în acest moment, programele disponibile public capabile să distribuie încărcarea între 12 nuclee și chiar și în modul Hyper-Threading, pot fi „numărate pe degetele unei mâini”. Desigur, exagerez; există programe optimizate pentru calculul multi-threaded, dar majoritatea utilizatorilor obișnuiți nu au nevoie de ele. Dar cele mai populare programe, și cu atât mai mult jocurile, încă se adaptează „prost” la procesoarele multi-core, mai ales dacă numărul de nuclee este mai mare de patru.

În al doilea rând, lucrul cu memoria devine mai complicat, deoarece există multe nuclee și toate necesită acces la RAM. Este necesar un mecanism complex care să determine ordinea de acces a nucleelor ​​procesorului la memorie și la alte resurse ale computerului.

În al treilea rând, consumul de energie crește și, în consecință, disiparea căldurii crește și este necesar un sistem de răcire puternic.

Ei bine, în al patrulea rând, costul de producție al procesoarelor multi-core este destul de mare și, în consecință, prețul unor astfel de procesoare este abrupt.

În ciuda tuturor neajunsurilor, utilizarea procesoarelor cu 2-4 nuclee oferă, fără îndoială, o creștere semnificativă a performanței. Cu toate acestea, în acest moment, utilizarea procesoarelor cu mai mult de patru nuclee nu se ridică întotdeauna la nivelul așteptărilor. Cu toate acestea, în viitorul apropiat, situația ar trebui să se schimbe dramatic. Cu siguranță vor exista multe programe care acceptă multithreading, performanța nucleelor ​​individuale va crește, iar prețul acestora va scădea.

2.2.4. Tehnologia Hyper-Threading.

Tehnologia Intel Hyper-threading permite fiecărui nucleu de procesor să efectueze două sarcini simultan, transformând în esență un nucleu real în două virtuale. Acest lucru este posibil datorită faptului că în astfel de nuclee starea a două fire de execuție este salvată simultan, deoarece nucleul are propriul său set de registre, propriul său numărător de programe și propria sa unitate de întrerupere pentru fiecare fir de execuție. Ca rezultat, sistemul de operare vede un astfel de nucleu ca două nuclee separate și va funcționa cu ele în același mod în care ar funcționa cu un procesor dual-core.

Cu toate acestea, elementele nucleului rămase pentru ambele fire sunt comune și sunt partajate între ele. În plus, când dintr-un motiv oarecare unul dintre fire eliberează elemente ale conductei, celălalt fir folosește blocurile libere.

Elementele pipeline nu pot fi utilizate dacă, de exemplu, a existat o pierdere la accesarea memoriei cache și este necesară citirea datelor din RAM, sau o ramură a fost prezisă incorect sau se așteaptă rezultatele procesării instrucțiunii curente sau unele blocurile nu sunt folosite deloc în timpul procesării acestui manual etc.

Majoritatea programelor nu pot încărca complet procesorul, deoarece unele folosesc în principal calcule simple cu numere întregi, folosind cu greu unitatea FPU. Alte programe, cum ar fi 3D studio, necesită o mulțime de calcule folosind numere în virgulă mobilă, dar în același timp eliberând și alte unități de execuție și așa mai departe.

În plus, aproape toate programele conțin o mulțime de salturi condiționate și variabile dependente. Ca rezultat, utilizarea tehnologiei Hyper-threading poate oferi o creștere semnificativă a performanței, ajutând la maximizarea sarcinii pe conducta nucleului.

Dar nu este atât de simplu. În mod firesc, câștigul de performanță va fi mai mic decât în ​​cazul utilizării mai multor nuclee fizice, deoarece firele încă folosesc blocuri comune ale unei conducte și sunt adesea forțate să aștepte ca blocul necesar să fie eliberat. În plus, majoritatea procesoarelor au deja mai multe nuclee fizice, iar atunci când se utilizează tehnologia Hyper-threading, pot exista prea multe nuclee virtuale, mai ales dacă procesorul conține patru sau mai multe nuclee fizice.

Deoarece în prezent există foarte puține programe capabile să distribuie calculele pe un număr mare de nuclee, în acest caz rezultatul poate dezamăgi utilizatorii.

Există o altă problemă serioasă cu tehnologia Hyper-Threading - conflicte care apar atunci când instrucțiunile din fire diferite au nevoie de același tip de blocuri. Poate apărea o situație când două fire similare funcționează în paralel, folosind adesea aceleași blocuri. În acest caz, câștigul de performanță va fi minim.

Drept urmare, tehnologia Hyper-Threading este foarte dependentă de tipul de încărcare a procesorului și poate da un bun spor de performanță sau poate fi practic inutilă.

2.2.5. Tehnologia Turbo Boost.

Performanța majorității procesoarelor moderne de acasă poate fi ușor crescută, simplu spus, overclockat - forțat să funcționeze la frecvențe mai mari decât cele nominale, adică. declarat de producator.

Frecvența procesorului este calculată ca frecvența magistralei sistemului înmulțită cu un anumit coeficient numit multiplicator. De exemplu, un procesor Core i7-970 funcționează cu o magistrală de sistem DMI la o frecvență de bază de 133 MHz și are un multiplicator de 24. Astfel, frecvența de ceas de bază a procesorului va fi: 133 MHz * 24 = 3192 MHz.

Dacă creșteți multiplicatorul în setările BIOS sau creșteți frecvența tacului magistralei de sistem, frecvența ceasului procesorului va crește și, în consecință, performanța acestuia va crește. Cu toate acestea, acest proces este departe de a fi sigur. Overclockarea poate face ca procesorul să devină instabil sau chiar să eșueze. Prin urmare, overclocking-ul trebuie abordat în mod responsabil și monitorizați cu atenție parametrii de funcționare a procesorului.

Odată cu apariția tehnologiei Turbo Boost, totul a devenit mult mai ușor. Procesoarele cu această tehnologie pot ei înșiși să mărească dinamic, pentru o perioadă scurtă de timp, frecvența ceasului, crescându-și astfel performanța. În același timp, procesorul controlează toți parametrii funcționării acestuia: tensiune, curent, temperatură etc., prevenind defecțiunile și, mai ales, defecțiunile. De exemplu, procesorul poate dezactiva nucleele neutilizate, scăzând astfel temperatura generală și, în schimb, crește viteza de ceas a nucleelor ​​rămase.

Întrucât în ​​momentul de față nu există foarte multe programe care să folosească toate nucleele de procesor pentru prelucrarea datelor, mai ales dacă sunt mai mult de patru dintre ele, utilizarea tehnologiei Turbo Boost poate crește semnificativ performanța procesorului, mai ales atunci când se lucrează cu aplicații single-threaded.

2.2.6. Eficiența executării comenzii.

În funcție de tipurile de instrucțiuni procesate și de metoda de executare a acestora, procesoarele sunt împărțite în mai multe grupuri:

  • pentru procesoare clasice CISC;
  • pe procesoare RISC cu un set de instrucțiuni redus;
  • pentru procesoare MISC cu un set minim de instrucțiuni;
  • pe procesoarele VLIW cu un set de instrucțiuni ultra-lungi.

CISC (calculator cu set de instrucțiuni complexe)- Acestea sunt procesoare cu un set complex de instrucțiuni. Arhitectura CISC se caracterizează prin:

  • instrucțiuni complexe și cu mai multe fațete;
  • un set mare de instrucțiuni diferite;
  • lungime nefixă a instrucțiunilor;
  • varietate de moduri de adresare.

Din punct de vedere istoric, procesoarele cu arhitectură CISC au apărut primele, iar apariția lor s-a datorat tendinței generale de dezvoltare a primelor calculatoare. Au încercat să facă computerele mai funcționale și, în același timp, mai ușor de programat. Desigur, inițial a fost mai convenabil pentru programatori să aibă un set larg de comenzi decât să implementeze fiecare funcție cu o subrutină separată. Ca urmare, volumul programelor a fost mult redus și, odată cu acesta, complexitatea programării.

Cu toate acestea, această situație nu a durat mult. În primul rând, odată cu apariția limbajelor de nivel înalt, nevoia de programare directă în codul mașinii și limbajul de asamblare a dispărut și, în al doilea rând, în timp, numărul de comenzi diferite a crescut foarte mult, iar instrucțiunile în sine au devenit mai complexe. Ca rezultat, majoritatea programatorilor au folosit în primul rând un set specific de instrucțiuni, ignorând practic instrucțiunile mai complexe.

Ca urmare, programatorii nu au mai beneficiat de un set larg de instrucțiuni, deoarece compilarea programelor a devenit automată, iar procesoarele înșiși procesau lent instrucțiuni complexe și variate, în principal din cauza problemelor legate de decodarea acestora.

În plus, dezvoltatorii de procesoare au depanat mai puțin noile instrucțiuni complexe, deoarece era un proces complex și laborios. Ca urmare, unele dintre ele pot conține erori.

Și, desigur, cu cât instrucțiunile sunt mai complexe, cu cât efectuează mai multe acțiuni, cu atât este mai dificilă paralelizarea execuției lor și, în consecință, cu atât încarcă mai puțin eficient conducta procesorului.

Cu toate acestea, până în acest moment, un număr mare de programe fuseseră deja dezvoltate pentru procesoarele cu arhitectură CISC, așa că era neprofitabilă din punct de vedere economic să trecem la o arhitectură fundamental nouă, chiar dacă a oferit un câștig în performanța procesorului.

Prin urmare, a fost acceptat un compromis, iar procesoarele CISC, începând cu Intel486DX, au început să fie produse folosind un nucleu RISC. Adică, imediat înainte de execuție, instrucțiuni CISC complexe sunt convertite într-un set mai simplu de instrucțiuni RISC interne. Pentru a face acest lucru, ei folosesc seturi de microinstrucțiuni scrise în ROM situate în interiorul nucleului procesorului - o serie de instrucțiuni simple care împreună realizează aceleași acțiuni ca o instrucțiune complexă.

RISC (Computer cu set de instrucțiuni redus)– procesoare cu un set de instrucțiuni redus.

Conceptul de procesor RISC favorizează instrucțiuni scurte, simple și standardizate. Ca urmare, astfel de instrucțiuni sunt mai ușor de decodat și executat și, în consecință, designul procesorului devine și mai simplu, deoarece blocurile complexe nu sunt necesare pentru a executa instrucțiuni non-standard și multifuncționale. Ca urmare, procesorul devine mai ieftin și devine posibilă creșterea în continuare a frecvenței de ceas prin simplificarea structurii interne și reducerea numărului de tranzistori sau reducerea consumului de energie.

De asemenea, instrucțiunile RISC simple sunt mult mai ușor de paralelizat decât instrucțiunile CISC și, prin urmare, devine posibilă încărcarea conductei mai mult, introducerea unor unități suplimentare de procesare a instrucțiunilor etc.

Procesoarele construite pe arhitectura RISC au următoarele caracteristici principale:

  • lungime fixă ​​a instrucțiunii;
  • un set mic de instrucțiuni standardizate;
  • un număr mare de registre de uz general;
  • lipsa microcodului;
  • consum redus de energie în comparație cu procesoarele CISC cu performanțe similare;
  • structură internă mai simplă;
  • mai puțini tranzistori în comparație cu procesoarele CISC cu performanțe similare;
  • absența blocurilor complexe specializate în nucleul procesorului.

Ca rezultat, deși procesoarele RISC necesită mai multe instrucțiuni pentru a finaliza aceeași sarcină în comparație cu procesoarele CISC, acestea oferă în general performanțe mai mari. În primul rând, executarea unei singure instrucțiuni RISC durează mult mai puțin decât executarea unei instrucțiuni CISC. În al doilea rând, procesoarele RISC folosesc mai mult capabilitățile de procesare paralelă. În al treilea rând, procesoarele RISC pot avea viteze de ceas mai mari decât procesoarele CISC.

Cu toate acestea, în ciuda avantajului evident al RISC, procesoarele nu au devenit la fel de răspândite ca CISC. Adevărat, acest lucru nu se datorează în principal faptului că, în unele privințe, acestea ar putea fi mai rele decât procesoarele CISC. Nu sunt mai rău. Faptul este că procesoarele CISC au apărut primele, iar software-ul pentru procesoarele CISC este incompatibil cu procesoarele RISC.

Drept urmare, este extrem de neprofitabilă să rescrieți toate programele care au fost deja dezvoltate, depanate și utilizate de un număr mare de utilizatori. Așa s-a dovedit că acum suntem nevoiți să folosim procesoare CISC. Adevărat, așa cum am spus deja, dezvoltatorii au găsit o soluție de compromis la această problemă și de foarte mult timp procesoarele CISC au folosit un nucleu RISC și au înlocuit instrucțiuni complexe cu microprograme. Acest lucru a permis ca situația să fie oarecum netezită. Dar totuși, procesoarele RISC depășesc în cele mai multe privințe chiar și procesoarele CISC cu un nucleu RISC.

MISC (Computer cu set minim de instrucțiuni)– dezvoltarea în continuare a arhitecturii RISС, bazată pe o și mai mare simplificare a instrucțiunilor și pe o reducere a numărului acestora. Deci, în medie, procesoarele MISC folosesc 20-30 de instrucțiuni simple. Această abordare a făcut posibilă simplificarea în continuare a designului procesorului, reducerea consumului de energie și utilizarea maximă a capabilităților de procesare paralelă a datelor.

VLIW (cuvânt de instrucție foarte lung)– o arhitectură de procesor care utilizează instrucțiuni lungi care conțin mai multe operații simultan, combinate de compilator pentru procesare paralelă. În unele implementări de procesor, instrucțiunile pot avea o lungime de 128 sau chiar 256 de biți.

Arhitectura VLIW este o îmbunătățire suplimentară a arhitecturilor RISC și MISC cu paralelism profund.

Dacă în procesoarele RISC procesorul însuși era implicat în organizarea prelucrării paralele a datelor, în timp ce cheltuia o parte din resurse pentru analizarea instrucțiunilor, identificarea dependențelor și predicția ramurilor condiționate (și, adesea, procesorul putea face greșeli, de exemplu, în prezicerea ramurilor condiționate, introducând astfel întârzieri serioase în procesarea instrucțiunilor sau vizualizarea codului programului în profunzime insuficientă pentru a identifica operațiuni independente care ar putea fi executate în paralel), apoi în procesoarele VLIW a fost atribuită compilatorului sarcina de a optimiza funcționarea paralelă, care nu a fost limitată în timp. sau resurse și ar putea analiza tot un program pentru alcătuirea codului optim pentru procesor.

Drept urmare, procesorul VLIW a beneficiat nu numai de eliminarea costurilor generale pentru organizarea procesării paralele a datelor, dar a primit și o creștere a performanței datorită unei organizări mai optime a executării în paralel a instrucțiunilor.

În plus, designul procesorului a fost simplificat, deoarece unele blocuri responsabile cu analiza dependențelor și organizarea paralelizării procesării instrucțiunilor au fost simplificate sau eliminate complet, iar acest lucru, la rândul său, a condus la o reducere a consumului de energie și a costului procesoarelor.

Cu toate acestea, chiar și compilatorului îi este greu să analizeze codul și să organizeze paralelizarea acestuia. Adesea, codul programului era foarte interdependent și, ca urmare, compilatorul trebuia să insereze comenzi goale în instrucțiuni. Din această cauză, programele pentru procesoarele VLIW ar putea fi mult mai lungi decât programele similare pentru arhitecturile tradiționale.

Primele procesoare VLIW au apărut la sfârșitul anilor 1980 și au fost dezvoltate de Cydrome. Procesoarele cu această arhitectură includ, de asemenea, procesoare TriMedia de la Philips, familia DSP C6000 de la Texas Instruments, Elbru?s 2000 - un procesor de fabricație rusă dezvoltat de MCST cu participarea studenților MIPT etc. Suport pentru instrucțiuni lungi cu paralelism explicit. disponibil în procesoarele din familia Itanium.

2.3. Modalități de reducere a consumului de energie al procesorului.

Nu mai puțin important decât performanța, un parametru precum consumul de energie este, de asemenea, important pentru un procesor. Problema consumului de energie a devenit deosebit de acută acum, când există un adevărat boom în popularitatea dispozitivelor portabile.

Viața noastră nu mai poate fi imaginată confortabilă fără utilizarea laptopurilor, tabletelor și smartphone-urilor. Cu toate acestea, singurul lucru care umbrește această tendință este durata de viață a bateriei unor astfel de dispozitive. Deci, laptopurile, în medie, pot funcționa autonom 3-5 ore, tabletele - puțin mai mult, smartphone-urile pot rezista deja aproape o zi la încărcare maximă, și nu toate. Dar toate acestea sunt extrem de mici pentru a lucra confortabil cu ei.

Durata de viață a bateriei acestor dispozitive depinde direct de consumul lor de energie, iar o parte semnificativă din consumul de energie provine de la procesor. Sunt utilizate diverse metode și tehnologii pentru a reduce consumul de energie al procesorului. Să ne uităm la cele mai populare dintre ele.

Cea mai ușoară modalitate de a reduce consumul de energie și disiparea căldurii unui procesor este de a reduce frecvența și tensiunea acestuia, deoarece consumul de energie al unui procesor este proporțional cu pătratul tensiunii sale de funcționare și proporțional cu frecvența de ceas. Reducerea tensiunii are cel mai benefic efect asupra consumului de energie. Cu toate acestea, pe măsură ce tensiunea scade, mai devreme sau mai târziu și frecvența ceasului scade, ceea ce va duce în mod natural la o scădere a performanței.

Cu toate acestea, consumul de energie este adesea un parametru de funcționare mai critic și o anumită degradare a performanței este acceptabilă. Astfel, majoritatea procesoarelor mobile și încorporate au viteze de ceas și tensiuni de funcționare mult mai mici decât omologii lor desktop.

Dar producătorii nu stabilesc întotdeauna combinația optimă de tensiune și frecvență de ceas. Multe procesoare mobile cu o viteză de ceas setată ar putea funcționa la tensiuni mai mici, ceea ce ar prelungi semnificativ durata de viață a bateriei unui laptop.

Pentru a obține raportul optim între performanță și consumul de energie, este necesar să selectați o tensiune la care procesorul va funcționa stabil la o anumită frecvență de ceas.

Frecvența ceasului este determinată în funcție de nevoile utilizatorului, apoi este selectată tensiunea minimă de funcționare pentru aceasta prin reducerea treptată a tensiunii și testarea procesorului sub sarcină.

Există, de asemenea, modalități mai puțin drastice de a rezolva această problemă.

De exemplu, tehnologia EIST (Tehnologie Intel SpeedStep îmbunătățită) vă permite să modificați în mod dinamic consumul de energie al procesorului prin schimbarea frecvenței și a tensiunii de ceas a procesorului. Frecvența ceasului se modifică din cauza scăderii sau creșterii factorului de multiplicare.

Am menționat deja factorul de multiplicare mai sus, dar îl voi repeta. Viteza ceasului procesorului este calculată ca viteză a ceasului magistralei sistemului înmulțită cu un anumit factor numit factor de multiplicare. Scăderea sau creșterea acestui coeficient duce la scăderea sau creșterea frecvenței de ceas a procesorului și la scăderea sau creșterea tensiunii de funcționare.

În cazurile în care procesorul nu este utilizat pe deplin, viteza de ceas poate fi redusă prin reducerea multiplicatorului. De îndată ce utilizatorul necesită mai multe resurse de calcul, factorul de multiplicare va fi mărit, până la valoarea sa nominală. Astfel, este posibil să se reducă puțin consumul de energie.

O tehnologie similară pentru reducerea consumului de energie, bazată pe modificări dinamice ale tensiunii și frecvenței de ceas, în funcție de sarcina procesorului, este, de asemenea, utilizată de AMD, se numește - Cool'n'Quiet.

În marea majoritate a cazurilor, computerele fie sunt complet inactive, fie sunt folosite doar pentru o fracțiune din capacitățile lor. De exemplu, vizionarea unui film sau introducerea textului nu necesită capacitățile de calcul enorme pe care le au procesoarele moderne. Mai mult, aceste puteri nu sunt necesare atunci când computerul este inactiv, când utilizatorul a plecat sau pur și simplu a decis să ia o scurtă pauză. Prin reducerea frecvenței de ceas a procesorului și a tensiunii acestuia în astfel de momente, puteți obține o creștere foarte serioasă a economiilor de energie.

EIST poate fi configurat folosind BIOS-ul și software-ul sistemului de operare pentru a seta profiluri personalizate de gestionare a energiei pentru a echilibra performanța procesorului și consumul de energie.

Desigur, dezvoltatorii încearcă să optimizeze structura procesorului în sine pentru a reduce consumul de energie și pentru a permite procesorului să funcționeze la tensiuni ultra joase. Cu toate acestea, această sarcină este extrem de complexă și necesită timp. Procesoarele prototip au ajuns deja foarte aproape de pragul tensiunii minime de funcționare și întâmpină deja dificultăți în a distinge tensiunea unuia logic de zero logic. Cu toate acestea, în ciuda acestui fapt, dezvoltatorii de procesoare, inclusiv inginerii Intel Corporation, promit să reducă consumul de energie al procesoarelor moderne de până la 100 de ori în următorii zece ani. Ei bine, hai să așteptăm și să vedem cu ce vin.

3. Memoria cache.

În ciuda tuturor tehnologiilor și trucurilor dezvoltatorilor, performanța procesorului depinde în continuare direct de viteza de preluare a comenzilor și a datelor din memorie. Și chiar dacă procesorul are o conductă echilibrată și bine gândită, utilizează tehnologia Hyper-Threading și așa mai departe, dar nu oferă viteza adecvată pentru preluarea datelor și comenzilor din memorie, atunci, ca rezultat, performanța generală a computerului nu va satisface așteptările dumneavoastră.

Prin urmare, unul dintre cei mai importanți parametri ai dispozitivului procesor este memoria cache, care este concepută pentru a reduce timpul de preluare a instrucțiunilor și a datelor din memoria RAM principală și acționează ca un buffer intermediar cu acces rapid între procesor și memoria RAM principală.

Memoria cache este construită pe baza unei memorie SRAM (memorie statică cu acces aleatoriu), care oferă acces la celulele de memorie mult mai rapid decât la celulele de memorie DRAM (memorie dinamică cu acces aleator), pe baza căreia este construită RAM. În plus, memoria SRAM nu necesită regenerare constantă, ceea ce îi mărește și performanța. Cu toate acestea, ne vom uita la designul SRAM, DRAM și a altor tipuri de memorie mai detaliat în articolul următor, iar acum ne vom uita mai detaliat la principiul de funcționare și designul memoriei cache.

Memoria cache este împărțită în mai multe niveluri. Procesoarele moderne au de obicei trei niveluri, iar unele modele de procesoare de top au uneori patru niveluri de memorie cache.

Cache-urile de nivel superior sunt întotdeauna mai mari și mai lente decât cache-urile de nivel inferior.

Cea mai rapidă și mai mică memorie cache este cache-ul de nivel 1. Funcționează de obicei la frecvența procesorului, are o capacitate de câteva sute de kiloocteți și este situat în imediata apropiere a unităților de eșantionare a datelor și a instrucțiunilor. Mai mult, poate fi unic (arhitectura Princeton) sau împărțit în două părți (arhitectura Harvard): memorie de comandă și memorie de date. Cele mai multe procesoare moderne folosesc un cache L1 partajat, deoarece aceasta permite preluarea datelor simultan cu preluarea instrucțiunilor, ceea ce este extrem de important pentru operarea pipeline.

Memoria cache de nivel al doilea este mai lentă (timp de acces, în medie, 8-20 de cicluri procesor), dar are o capacitate de câțiva megaocteți.

Memoria cache de nivel 3 este și mai lentă, dar are o capacitate relativ mare. Există procesoare cu memorie cache de nivel al treilea mai mare de 24 MB.

În procesoarele cu mai multe nuclee, ultimul nivel de memorie cache este de obicei comun tuturor nucleelor. Mai mult, în funcție de încărcarea nucleelor, cantitatea de memorie cache de ultimul nivel alocată nucleului se poate schimba dinamic. Dacă un nucleu are o încărcare mare, atunci îi este alocată mai multă memorie cache, prin reducerea cantității de memorie cache pentru nucleele mai puțin încărcate. Nu toate procesoarele au această capacitate, doar cele care acceptă tehnologia Smart Cache (de exemplu, Intel Smart Cache sau AMD Balanced Smart Cache).

Memoria cache de nivel inferior este de obicei individuală pentru fiecare nucleu de procesor.

Ne-am uitat la modul în care funcționează memoria cache, acum să ne dăm seama cum funcționează.

Procesorul citește datele din memoria RAM principală și le stochează în memoria cache la toate nivelurile, înlocuind datele care au fost accesate de mult timp și cel mai rar.

Data viitoare când procesorul are nevoie de aceleași date, acestea vor fi citite nu din memoria RAM principală, ci din memoria cache de primul nivel, care este mult mai rapidă. Dacă procesorul nu accesează aceste date pentru o lungă perioadă de timp, atunci va fi eliminat treptat din toate nivelurile de memorie cache, mai întâi de la primul, deoarece este cel mai mic ca volum, apoi de la al doilea și așa mai departe. Dar, chiar dacă aceste date rămân doar în al treilea nivel al memoriei cache, accesarea acestora va fi totuși mai rapidă decât accesarea memoriei principale.

Cu toate acestea, cu cât sunt mai multe niveluri de memorie cache, cu atât mai complex este algoritmul de înlocuire a datelor învechite și cu atât se petrece mai mult timp reconciliând datele din toate nivelurile memoriei cache. Ca rezultat, câștigul din viteza memoriei cache dispare rapid. În plus, memoria SRAM este foarte scumpă, și cu volume mari și, după cum vă amintiți, fiecare nou nivel de memorie cache trebuie să fie mai mare decât cel precedent, raportul preț-calitate scade rapid, ceea ce are un impact extrem de negativ asupra competitivitatea procesorului. Prin urmare, în practică, acestea nu realizează mai mult de patru niveluri de memorie cache.

Situația memoriei cache devine și mai complicată la procesoarele multi-core, unde fiecare nucleu conține propria sa memorie cache. Este necesar să se introducă o sincronizare suplimentară a datelor stocate în memoria cache a diferitelor nuclee. De exemplu, același bloc de date din memoria RAM principală a fost introdus în memoria cache a primului și celui de-al doilea nucleu de procesor. Primul procesor a modificat apoi acest bloc de memorie. Se pare că memoria cache a celui de-al doilea procesor conține deja date învechite și trebuie actualizată, iar aceasta este o încărcare suplimentară a memoriei cache, ceea ce duce la o scădere a performanței generale a procesorului. Această situație este mai complicată cu cât sunt mai multe nuclee în procesor, cu atât mai multe niveluri de memorie cache și volumul lor este mai mare.

Dar, în ciuda unor astfel de dificultăți în lucrul cu memoria cache, utilizarea acesteia oferă o creștere clară a vitezei de operare fără o creștere semnificativă a costului computerului. Și până când se inventează RAM care poate concura ca viteză cu memoria SRAM și ca preț cu memoria DRAM, se va folosi o organizare ierarhică a RAM folosind mai multe niveluri de memorie cache.

Poate că aici vom termina revizuirea dispozitivului procesorului, deoarece o revizuire a magistralelor de sistem și a principiului funcționării acestora a fost prezentată în articolul „Designul și scopul plăcii de bază” și o descriere a controlerului RAM principal, adesea incluse în procesor, tipurile de RAM și principiile de funcționare a acestuia vor fi în articolul următor.


Bună ziua, dragi cititori! Literal, fiecare utilizator încrezător de computer sau proprietar de laptop s-a întrebat de mai multe ori cum funcționează procesorul în interior? Probabil, mulți vor fi surprinși să afle că structura oricărei „roci” a unui computer personal sau laptop se bazează pe pietre și roci reale.

Astăzi vom încerca să ne dăm seama cum arată structura unui procesor modern și ce face ca elementul principal al oricărui computer să funcționeze.

În ce constă un microprocesor modern?

Structura procesorului de astăzi este reprezentată de următoarele elemente principale:

  • De fapt, . Cea mai importantă parte, inima dispozitivului, care se mai numește și cristalul sau piatra unui microprocesor modern. Caracteristicile și noutatea nucleului determină în mod direct overclockarea și eficiența microprocesorului.
  • Memoria cache este un cache mic, dar foarte informativ, situat chiar în interiorul procesorului. Folosit de microprocesor pentru a reduce semnificativ timpul de acces la memoria principală a computerului.
  • Un coprocesor special, datorită căruia se efectuează operațiuni complexe. Un astfel de coprocesor extinde semnificativ funcționalitatea oricărui microprocesor modern și este componenta sa integrală. Există situații în care coprocesorul este un cip separat, cu toate acestea, în cele mai multe cazuri, este încorporat direct în microprocesorul computerului.

Prin dezasamblarea literală a unui procesor de calculator, putem vedea următoarele elemente structurale prezentate în diagramă:

  1. Capacul metalic superior este folosit nu numai pentru a proteja „piatra” de deteriorarea mecanică, ci și pentru a îndepărta căldura.
  2. Direct, un cristal sau o piatră și o parte scumpă a oricărui microprocesor de computer. Cu cât o astfel de piatră este mai complexă și mai perfectă, cu atât mai rapidă funcționează „creierul” oricărui computer.
  3. Un substrat special cu contacte pe verso completează designul microprocesorului, așa cum se arată în imagine. Datorită acestui design al părții din spate, are loc interacțiunea externă cu „piatra” centrală; este imposibil să influențezi direct cristalul în sine. Întreaga structură este ținută împreună cu un adeziv-etanșant special.

Cum funcționează totul?

Logica oricărui procesor se bazează pe faptul că toate datele computerului sunt stocate în biți, celule de informații speciale reprezentate de 0 sau 1. Să încercăm să ne dăm seama ce se întâmplă, cât de colorate apar filme și jocuri de calculator interesante pe ecran din acestea. zerouri și unu?

În primul rând, este necesar să înțelegem că atunci când avem de-a face cu electronice, primim orice informație sub formă de tensiune. Peste o anumită valoare obținem unul, sub o anumită valoare obținem zero. De exemplu, o lumină aprinsă într-o cameră este unu, iar o lumină stinsă este zero. O altă ierarhie, datorită căreia se obțin elemente mai complexe, este octetul, format din opt biți. Datorită acestor aceiași octeți, putem vorbi nu numai despre aprinderea sau stingerea luminii din cameră, ci și despre luminozitatea, nuanța de culoare și așa mai departe.

Tensiunea trece prin memorie și transmite date către procesor, care folosește, în primul rând, propria memorie cache ca cea mai eficientă, totuși, celulă mică. Printr-o unitate de control specială, datele sunt procesate și distribuite mai departe de-a lungul traseului.

Procesorul folosește octeți și secvențe întregi ale acestora, care la rândul lor se numesc program. Programele procesate de procesor sunt cele care obligă computerul să efectueze una sau alta acțiune: redarea unui videoclip, lansarea unui joc, pornirea muzicii și așa mai departe.

Lupta dintre giganții microprocesoarelor computerizate

Vorbim, desigur, despre Intel și AMD. Principala diferență în principiile de funcționare ale acestor companii este abordarea producției de noi microprocesoare de computer.
În timp ce Intel lansează noi tehnologii împreună cu mici modificări, AMD face mișcări majore de producție la intervale regulate. Fotografia de mai sus prezintă modele ale companiilor menționate cu un aspect distinctiv.

Poziția de lider, în majoritatea covârșitoare a cazurilor, este încă deținută de Intel. „Stones” de la AMD, deși sunt inferioare procesoarelor de la Intel în ceea ce privește performanța, le depășesc adesea în ceea ce privește accesibilitatea. Puteți citi despre ce companie este mai bine să alegeți.

Ce să aleagă, fiecare decide singur. Astăzi am încercat să înțelegem structura internă a oricărui microprocesor modern și principiile de bază ale funcționării acestuia. Nu uita să actualizezi blogul și să distribui articole interesante prietenilor tăi pe rețelele sociale! Toate cele bune, prieteni!

O zi buna!

Cred că aproape fiecare utilizator, cu măcar puțină experiență, a întâmpinat o problemă similară: lucrezi și lucrezi la computer, apoi începi să observi că reacționează cumva încet la apăsarea butoanelor mouse-ului sau tastaturii, încetinește. ..

Foarte des motivul pentru funcționarea lentă și frânele este încărcarea procesorului, uneori ajunge la 100%!

Rezolvarea acestei probleme nu este întotdeauna ușoară, mai ales că procesorul poate fi încărcat fără niciun motiv aparent (adică, poate nu ați rulat programe care necesită mult resurse: jocuri, editori video etc.).

În acest articol, voi analiza secvența de acțiuni care pot fi întreprinse pentru a elimina încărcarea procesorului și a readuce computerul la performanța normală.

Primul lucru de încercat este să identificați procesul sau programul care utilizează procesorul. Așa cum se întâmplă în majoritatea cazurilor: un program (sau joc) a fost lansat, apoi utilizatorul a părăsit el, dar a rămas procesul cu jocul, care încarcă procesorul...

Ce proces sau program este încărcat procesorul

Cea mai rapidă modalitate de a determina ce program acapara CPU-ul este să apelezi Gestionar de sarcini(butoane: Ctrl+Shift+Esc ).

În managerul de activități, deschideți fila „Procese”și sortați aplicațiile în funcție de sarcina procesorului. În captura de ecran de mai jos, puteți vedea că partea leului din CPU (~84%) este consumată de browserul Firefox (deși nici măcar nu îl am în funcțiune...).

Dacă aveți un astfel de program „ascuns”, îl puteți închide imediat din managerul de activități (doar faceți clic dreapta pe el...).

Notă

Windows are propria sa monitorizare a resurselor, care poate fi folosită și pentru a vizualiza procesorul, memoria, discul și încărcarea rețelei. Pentru a o apela, apăsați butoanele Win+R, apoi intrați în linie "Deschis" echipă resmonși apăsați introduce .

Important!

În unele cazuri, managerul de activități nu vă permite să calculați motivul încărcării procesorului. Apropo, procesorul poate să nu fie încărcat la 100%, ci, să zicem, la 20-50%...

Dacă managerul de activități nu vă oferă de gândit, vă recomand să utilizați un singur utilitar - Process Explorer(apropo, aflat pe site-ul Microsoft...).

Process Explorer (căutați cauza „invizibilă” a frânelor)

Un program excelent care m-a ajutat de mai multe ori! Domeniul ei principal de lucru este să vă arate TOATE procesele și programele care rulează pe computer (probabil că nimeni nu va scăpa de ea...). În acest fel, puteți determina cu siguranță ce proces consumă procesorul.

Captura de ecran de mai jos este foarte orientativă:

  • Proces inactiv de sistem- acesta este un indicator în % din inactivitatea sistemului. Acestea. în prima jumătate a ecranului de mai jos - procesorul este aproape 95% inactiv (exact așa ar trebui să fie dacă pe el sunt deschise câteva programe: un browser, un player);
  • iar pe a doua parte a ecranului Proces inactiv de sistem este de 65%, dar întreruperi hardware și DPC-uri până la 20% (și uneori ajungând la 70-80%! Acest lucru nu ar trebui să se întâmple. În general, întreruperile (acestea sunt întreruperi ale sistemului) în timpul funcționării normale rareori depășesc câteva procente! Acesta este motivul pentru care computerul tău încetinește și se încarcă!
  • Apropo, foarte des sistemul este încărcat de procesul svchosts.exe. În general, acesta este un proces de sistem, dar există o serie de viruși care se mascară ca acesta și se prefac a fi acesta. Mai jos vom lua în considerare întrebarea cum să le prindem...

Process Explorer: în prima parte a capturii de ecran - totul este bine, în a doua - procesorul este încărcat ~20% cu întreruperi de sistem (întreruperi hardware și DPC-uri).

Dacă CPU se încarcă întreruperi

Dacă problema este legată întreruperi hardware și DPC-uri- atunci cel mai probabil problemele sunt legate de drivere. Mai precis, cu conflictul lor unul cu celălalt, și chiar mai probabil, cu incompatibilitatea cu sistemul de operare Windows. Mai mult, chiar dacă versiunea dvs. de Windows este listată în descrierea driverului, aceasta nu este o garanție 100% a compatibilității.

Acordați o atenție deosebită șoferilor: plăci video, chipset mat. placi, placa de retea, Wi-Fi, placa de sunet. Recomand să descărcați mai multe versiuni ale acestora deodată și să le încercați una câte una.

Mai rar, problema este asociată cu viruși și chiar mai rar cu echipamente periferice: imprimantă, scaner, plăci de rețea etc.

Verificarea și actualizarea driverelor

Uneori alegerea driverelor potrivite pentru un computer/laptop nu este atât de ușoară pe cât pare la prima vedere... În general, de obicei, noua versiune a driverului funcționează mai bine decât cea veche (dar uneori este exact invers). Dacă utilizarea procesorului este legată de întreruperi hardware și DPC-uri- Vă recomand:

  1. încercați să instalați drivere de pe site-ul oficial al producătorului de echipament. De obicei, acest lucru necesită identificarea producătorului - pentru aceasta puteți folosi unul special. utilitati pentru determinarea caracteristicilor PC -;
  2. Dacă nu ați găsit site-ul sau nu ați putut identifica producătorul, puteți încerca să utilizați unul special. utilitar de actualizare a driverului:
  3. Dacă în timpul instalării aveți probleme la eliminarea vechiului driver din sistem, vă recomand această instrucțiune:

Pentru a afla dacă aveți dispozitive pe sistem pentru care nu există drivere, deschideți manager de dispozitiv . Pentru a face acest lucru, apelați meniul "Alerga"- butoane Win+R, introduce devmgmt.msc(exemplu în captura de ecran de mai jos).

Scanare antivirus

Virușii pot fi cauza a orice... De obicei, când procesorul este încărcat din cauza virușilor, puteți găsi un proces care încarcă sistemul. Cel mai adesea, acest proces este sistemic: de exemplu, virușii se deghizează în proces svchost.exe- chiar și un utilizator experimentat nu poate găsi și identifica imediat un virus printre procesele reale (dar acest fișier va fi discutat mai jos) ...

  1. În Windows XP, 7: puteți apăsa tasta de mai multe ori când încărcați sistemul de operare (imediat după pornirea computerului). F8- ar trebui să apară o fereastră „neagră” cu opțiuni de pornire alese;
  2. în Windows 8, 10: faceți clic Win+R, introduceți comanda msconfig. Mai departe in sectiune selectați sistemul de operare Windows și bifați caseta de lângă element „Modul sigur” . Salvați setările și reporniți computerul (captura de ecran de mai jos).

Și este recomandabil să rulați o scanare antivirus din modul sigur. Pentru a face acest lucru, nu este necesar să aveți un antivirus instalat pe computer - există utilități speciale care nu trebuie instalate.

Echipamente periferice

Dacă problema nu a fost încă găsită, vă recomand să încercați să deconectați tot ce nu este necesar de la laptop (calculator): imprimantă, scaner, mouse etc.

De asemenea, voi atrage din nou atenția asupra manager de dispozitiv (mai precis pe drivere). Este posibil ca driverele pentru unele echipamente periferice să nu fie instalate în sistem și semnul exclamării să fie aprins...

Acordați o atenție deosebită dispozitivelor vechi care pot funcționa în noul sistem de operare Windows, dar ați instalat driverele pentru ele „forțat” (de exemplu, Windows ar putea avertiza că nu există semnătură și ați continuat instalarea) ...

În general, este destul de dificil să găsești adevăratul vinovat în acest caz. Dacă procesorul nu este încărcat în modul sigur, vă recomand să încercați să eliminați unul câte unul driverele pentru echipamentele periferice și să vedeți cum se comportă încărcarea.

A ajuta! Cum să îndepărtați „lemne de foc” vechi sau inutil -

Svchost.exe încarcă procesorul - ce este?

Fișierul încarcă procesorul foarte des svchost.exe- cel putin asa spune el Gestionar de sarcini. Faptul este că acesta este principalul proces de încărcare a serviciilor - adică, aproximativ vorbind, un proces de sistem necesar care nu poate fi evitat...

Există două cazuri posibile aici:

  • Virușii sunt adesea deghizați în acest proces și este dificil de distins adevărat svchost de la masquerading - chiar și utilizatorii experimentați nu sunt întotdeauna capabili să facă acest lucru;
  • real svchost poate încărca sistemul (în anumite situații).

Cum se stabilește ce fișier svchost.exe este sistem și care nu este?

Când îl lansați, trebuie să mergeți la meniu Manager de servicii/proces (vezi captura de ecran de mai jos). În continuare, veți vedea TOATE procesele din sistem - acestea trebuie sortate după nume (acest lucru este mai convenabil, mi se pare...).

Ideea este: toate procesele de sistem despre care AVZ știe sunt marcate verde culoare. Acestea. daca ai pe lista svchost negru culori - uita-te la ele foarte atent, cel mai probabil sunt virale.

Apropo, cu ajutorul acestui AVZ puteți analiza toate celelalte procese suspecte.

Dezactivați actualizările automate Windows

De multe ori svchostîncarcă procesorul datorită actualizărilor automate Windows activate. Vă sugerez să îl dezactivați (nu este nimic în neregulă cu asta - veți verifica manual actualizările de câteva ori pe lună - faceți clic pe mouse de 1-2 ori...).

Mai întâi trebuie să deschideți fila Servicii. Cel mai rapid mod de a face acest lucru este să apăsați un buton WIN+R, introduce servicii.mscși apăsați introduce(ca în captura de ecran de mai jos).

  1. tip de pornire setați „Dezactivat”;
  2. și faceți clic pe butonul „Oprire”.

Salvați setările și reporniți computerul.

Există supraîncălzire? Verificarea temperaturii CPU

Un posibil motiv pentru încărcarea procesorului poate fi supraîncălzirea. Mai mult, dacă înainte totul era bine cu tine, asta nu înseamnă deloc că acum nu poate începe să se supraîncălzească.

Cel mai adesea, cauza supraîncălzirii este:

  • praf(mai ales dacă unitatea de sistem nu a fost curățată de ea de mult timp). Praful uită de orificiile de ventilație, aerul începe să circule prost în carcasa dispozitivului - iar aerul cald de la procesor rămâne pe loc, iar temperatura începe să crească.
  • Cel mai simplu mod scapă de praf- deschideți capacul unității de sistem și eliminați praful folosind un aspirator (activând modul invers). totul este mai complicat - daca nu l-ai demontat pana acum, recomand sa-l dai specialistilor...
  • temperatura camerei ridicate . Acest lucru se întâmplă de obicei pe vreme caldă vara, când temperatura din afara ferestrei poate crește semnificativ. În acest caz, puteți deschide capacul lateral al unității de sistem și puteți direcționa un ventilator obișnuit către acesta. Sunt de vânzare plăcuțe speciale de răcire pentru laptopuri.
  • răcitor spart (sau s-ar putea, de asemenea, să se înfunde cu praf). Sfatul de aici este simplu: înlocuiți sau curățați.

A ajuta!

Semne care pot indica supraîncălzire:

  1. computerul (laptop-ul) începe să înghețe, poate apărea un ecran albastru, o repornire sau oprire bruscă;
  2. zgomot puternic mai rece - acest lucru este vizibil mai ales la laptopuri. Mâna ta, dacă te apropii de partea stângă (unde laptopurile au de obicei orificii de ventilație), poate simți și ieșirea aerului cald, uneori nici măcar nu-l tolerează ☝.
  3. Diverse aplicații se blochează cu erori.

Pentru a afla temperatura procesorului- Vă recomand să utilizați un utilitar pentru a determina caracteristicile computerului dvs. De exemplu, îmi plac Speccy și Aida 64. Puteți vedea mai jos o captură de ecran a temperaturii procesorului de la Speccy (t=49 °C, grade Celsius).

Care ar trebui să fie temperatura procesorului?

O întrebare foarte populară la care nu se poate răspunde definitiv. Faptul este că diferiți producători au temperaturi critice diferite.

Actualizare din 1/10/19.

Temperatura procesorului Intel: cum să o găsiți; care dintre ele este considerată normală și care se supraîncălzi -

Pentru computer personal

În general, opțiunea ideală este să te uiți la modelul procesorului tău și să deschizi site-ul web al producătorului: temperaturile critice sunt întotdeauna indicate pe acesta.

În general, dacă temperatura procesorului tău este de până la 40°C (grade Celsius), atunci totul este în regulă, sistemul de răcire se poate descurca. Temperaturile peste 50°C pot indica probleme cu sistemul de răcire (sau o cantitate mare de praf). Orice lucru peste 60 de grade trebuie examinat cu atenție și trebuie luate măsuri: curățați-l de praf, instalați răcitoare suplimentare (sau înlocuiți-le pe cele vechi).

Pentru laptop

În ceea ce privește laptopurile, bara este oarecum diferită. Deoarece spațiul într-un laptop este limitat, procesoarele de aici se încălzesc mai mult. De exemplu, nu este neobișnuit ca temperatura de funcționare sub sarcină pentru multe procesoare să fie de aproximativ 70-80°C (în special pentru modelele de gaming).

Când este inactiv, acest nivel este de obicei de aproximativ 40-50°C. În general, ar trebui să începeți să vă faceți griji (pentru majoritatea laptopurilor moderne) dacă temperatura procesorului crește peste 75-80°C (cel puțin verificați dacă acest lucru este normal pentru dispozitivul dvs.).

Cel mai adesea, o temperatură atât de ridicată este atinsă atunci când rulați jocuri, editori și alte aplicații grele.

Apropo, mulți utilizatori experimentați (și unii specialiști) fac ecou temperatura critică de 105°C pentru laptopurile moderne. O sa spun asta, laptopul poate si va functiona la 90-95°C, ba chiar eventual la 100°C – dar intrebarea principala este: cat? În general, acest subiect este controversat pentru mulți...

PS

Ultimul sfat. Uneori, găsirea și eliminarea cauzelor încărcării mari a procesorului și a frânelor computerului este destul de obositoare și nu este ușoară.

Inima unui computer personal este CPU. Este un dispozitiv electronic digital care poate funcționa conform unui program dat.

Să luăm în considerare dispozitivul unui computer. Mai întâi, să descifrăm separat adjectivele „electronic” și „digital”.

Adjectivul „electronic” înseamnă că procesorul computerului funcționează cu energie electrică și toate semnalele care sunt procesate de acest dispozitiv sunt electrice.Cu toate acestea, în electronica radio, dispozitivele electronice sunt împărțite în 2 clase mari: analog și digital. Adjectivul „digital” înseamnă că procesorul computerului aparține mai degrabă clasei de dispozitive digitale decât analogice.

Dispozitivele analogice amintite predominau printre echipamentele electronice acum 20-30 de ani. Și au apărut atunci când inginerii radio au învățat să înregistreze și să transmită sunet și imagini sub formă de semnale analogice. Acestea erau radiouri, televizoare, casetofone etc.

Dispozitivele analogice au făcut loc palmei abia la sfârșitul secolului trecut, când dezvoltarea dispozitivelor digitale a dus la capacitatea de a înregistra și transmite orice informație, inclusiv sunetele și imaginile deja menționate, folosind coduri digitale.

Semnalele digitale, spre deosebire de cele analogice, sunt ușor susceptibile la interferențe și sunt transmise la distanțe fără distorsiuni; sunt mai bine înregistrate, stocate și nu se „deteriorează” în timp.

Procesorul computerului este unul dintre cele mai complexe dispozitive dintre dispozitivele electronice digitale. Acesta este un fel de apoteoză a dezvoltării tehnologiei digitale.

În exterior, este o placă de siliciu montată într-o carcasă care are multe terminale electrice pentru conectarea la sursa de alimentare și la alte dispozitive computerizate.

Deoarece procesorul este realizat pe wafer-uri de siliciu, în jargonul informatic se numește uneori „rock”, deoarece siliciul este un material foarte durabil.

Pe această placă, prin depunerea foarte precisă a unei substanțe (precizia se măsoară în angstromi) în vid și menținând în același timp curățenia ideală a producției, este reprodus un circuit electric foarte complex și extrem de miniatural, format din zeci și sute de mii de elemente minuscule. (în principal tranzistoare) conectate între ele într-un mod special.

Producția de astfel de dispozitive este atât de high-tech încât numai țările cu cele mai dezvoltate economii au reușit să o stăpânească. Este interesant că în producția de procesoare nu măsoară defectele, așa cum este obișnuit în aproape toate industriile și producția, ci măsoară așa-numitul procent de produse utilizabile, deoarece foarte puține semifabricate de procesor devin în cele din urmă dispozitive funcționale.

Plachetele de siliciu de înaltă calitate sunt plasate într-un pachet cu cabluri și echipate cu dispozitive de răcire (radiator și ventilator), deoarece sute de mii de tranzistoare miniaturale emit o cantitate suficientă de căldură în timpul funcționării lor.

Dacă te uiți la structura logică internă a unui procesor de computer, este o colecție de dispozitive interconectate:

– o unitate aritmetic-logică (ALU), în care, de fapt, informația este convertită,

– dispozitiv de control (CU), care este conceput pentru a controla un dispozitiv aritmetic-logic;

– și registre de memorie (celule) în care sunt stocate datele de intrare, datele intermediare și datele rezultate.

Comenzile menite să controleze funcționarea procesorului sunt transferate din RAM pe dispozitivul de control. Acest dispozitiv controlează funcționarea unității logice aritmetice în funcție de comenzile primite.

La rândul său, ALU, în conformitate cu comenzile primite de la unitatea de control, efectuează

  • introducerea de informații din registre,
  • prelucrarea informaţiei şi
  • înregistrarea informațiilor prelucrate în registre.

Registrele procesorului pot face schimb de informații cu celulele RAM (de asemenea, pe baza instrucțiunilor ALU). Prin urmare, în cele din urmă procesorul computerului

  • procesează datele primite din RAM,
  • iar datele prelucrate sunt de asemenea plasate în RAM.

Următoarea descriere scurtă a funcționării unui procesor de computer ilustrează faptul că prelucrarea datelor de către un procesor este o secvență de pași foarte „mici”:

  • citirea datelor din RAM în registrele procesorului,
  • prelucrarea acestor date și
  • scrierea înapoi a datelor din registrele procesorului în celulele RAM.

Dar compensarea pentru aceasta este cea mai mare viteză a calculelor, sute de mii și milioane de astfel de operațiuni „mici” în fiecare secundă. Și, în consecință, este asigurată procesarea informațiilor de mare viteză, ceea ce face din computer un asistent indispensabil pentru muncă, studiu, recreere și divertisment.

Acțiune