Unitatea centrală de procesare-Wikipedia unitatea centrală de procesare

de la Wikipedia, enciclopedia liberă.

Enteros Rangeedit

modul în care un procesor reprezintă numerele este o opțiune de proiectare care afectează cele mai elementare moduri în care funcționează dispozitivul. Unele dintre primele calculatoare digitale au folosit, pentru a reprezenta numerele intern, un model electric al sistemului de numere zecimale comune (baza zece). Unele alte computere au folosit sisteme de numerotare mai exotice, cum ar fi ternarul (baza trei). Aproape toate procesoarele moderna reprezintă numere în formă binară, unde fiecare cifră este reprezentată de o anumită cantitate fizică de două valori, cum ar fi o tensiune „înaltă” sau „joasă”.

MOS 6502 microprocesor într – un pachet dual în linie, un design extrem de popular pe 8 biți.

reprezentarea numerică este legată de dimensiunea și precizia numerelor pe care un procesor le poate reprezenta. În cazul unui procesor binar, un pic se referă la o poziție semnificativă în numerele cu care funcționează un procesor. Numărul de biți (sau poziții numerice sau cifre) pe care un procesor îl folosește pentru a reprezenta numere este adesea numit „dimensiunea cuvântului”, „lățimea bitului”, „lățimea căii de date” sau „precizia întregului” atunci când se ocupă strict de numere întregi (spre deosebire de numere în virgulă mobilă). Acest număr diferă între arhitecturi și adesea în diferite unități ale aceluiași procesor. De exemplu, un procesor pe 8 biți gestionează o serie de numere care pot fi reprezentate de opt cifre binare, fiecare cifră având două valori posibile și, în combinație, cei 8 biți având 28 sau 256 de numere discrete. De fapt, dimensiunea întregului stabilește o limită hardware pentru gama de numere întregi pe care software-ul le rulează și pe care CPU le poate utiliza direct.

intervalul întreg poate afecta, de asemenea, numărul de poziții de memorie pe care CPU le poate adresa (localiza). De exemplu, dacă un procesor binar folosește 32 de biți pentru a reprezenta o adresă de memorie și fiecare adresă de memorie reprezintă un octet (8 biți), cantitatea maximă de memorie pe care CPU o poate adresa este de 232 octeți sau 4 GB. Aceasta este o vizualizare foarte simplă a spațiului de adrese al procesorului și multe modele moderna folosesc metode de adresă mult mai complexe, cum ar fi paginarea, pentru a localiza mai multă memorie decât ar permite întreaga sa gamă cu un spațiu de adrese plat.

nivelurile superioare ale întregii game de numere necesită mai multe structuri pentru a gestiona cifrele suplimentare și, prin urmare, mai multă complexitate, Dimensiune, consum de energie și, în general, costuri. Prin urmare, nu este neobișnuit să vezi microcontrolere pe 4 și 8 biți utilizate în aplicațiile moderna, chiar dacă sunt disponibile procesoare cu o gamă mult mai mare (16, 32, 64 și chiar 128 de biți). Microcontrolerele mai simple sunt în general mai ieftine, utilizează mai puțină energie și, astfel, disipează mai puțină căldură. Toate acestea pot fi considerente importante de proiectare pentru dispozitivele electronice. Cu toate acestea, în aplicațiile high end, beneficiile produse de gama suplimentară (mai des spațiul suplimentar de adrese), sunt mai semnificative și afectează adesea opțiunile de proiectare. Pentru a obține unele dintre avantajele oferite atât de lungimile de biți mai mici, cât și de cele mai mari, multe procesoare sunt proiectate cu lățimi de biți diferite pentru diferite unități de dispozitiv. De exemplu, IBM System / 370 a folosit un procesor care era în mare parte pe 32 de biți, dar a folosit precizie pe 128 de biți în unitățile sale în virgulă mobilă pentru a facilita o precizie și o gamă mai mare de numere în virgulă mobilă. Multe modele de procesoare ulterioare utilizează un amestec similar de lățime de biți, mai ales atunci când procesorul este proiectat pentru utilizări de uz general în care este necesar un echilibru rezonabil între capacitatea întreagă și cea în virgulă mobilă.

frecvența Ceasuluiedit

Articol principal: Frecvența ceasului

majoritatea procesoarelor și, într-adevăr, majoritatea dispozitivelor logice secvențiale sunt de natură sincronă. Adică sunt proiectate și funcționează pe baza unui semnal de sincronizare. Acest semnal, cunoscut sub numele de semnal de ceas, ia de obicei forma unui val pătrat periodic. Prin calcularea timpului maxim la care semnalele electrice se pot deplasa la diferitele furci ale multor circuite ale procesorului, proiectanții pot selecta o perioadă adecvată pentru semnalul ceasului.

această perioadă ar trebui să fie mai lungă decât timpul necesar pentru ca un semnal să se miște sau să se propage în cel mai rău caz. Prin setarea perioadei de ceas la o valoare mult mai mare față de cea mai gravă întârziere de propagare, este posibil să proiectați întregul procesor și modul în care acesta mișcă datele în jurul „marginilor” creșterii și căderii semnalului de ceas. Acest lucru are avantajul simplificării semnificative a procesorului, atât în perspectiva designului, cât și în perspectiva cantității de componente. Cu toate acestea, acest lucru are și dezavantajul că întregul procesor trebuie să aștepte elementele sale mai lente, chiar dacă unele unități ale acestuia sunt mult mai rapide. Această limitare a fost compensată în mare măsură de mai multe metode de creștere a paralelismului procesorului (vezi mai jos).

cu toate acestea, îmbunătățirile arhitecturale singure nu rezolvă toate dezavantajele procesoarelor sincrone la nivel global. De exemplu, un semnal de ceas este supus întârzierilor oricărui alt semnal electric. Vitezele de ceas mai mari pe procesoarele din ce în ce mai complexe îngreunează menținerea semnalului ceasului în fază (sincronizat) pe întreaga unitate. Acest lucru a dus la multe procesoare moderna care necesită mai multe semnale de ceas identice pentru a fi furnizate, pentru a evita încetinirea unui singur semnal suficient pentru a provoca funcționarea defectuoasă a procesorului. O altă problemă majoră atunci când viteza de ceas crește dramatic, este cantitatea de căldură care este disipată de CPU. Semnalul ceasului se schimbă constant, determinând comutarea multor componente (schimbarea stării), indiferent dacă sunt utilizate în acel moment. În general, o componentă care schimbă starea folosește mai multă energie decât un element în stare statică. Prin urmare, pe măsură ce viteza ceasului crește, la fel și disiparea căldurii, determinând procesorul să necesite soluții de răcire mai eficiente.

o metodă de tratare a comutării componentelor inutile se numește închiderea ceasului, care implică oprirea semnalului ceasului către componente inutile, dezactivându-le efectiv. Cu toate acestea, acest lucru este adesea considerat dificil de implementat și, prin urmare, nu vede o utilizare obișnuită în afara proiectelor cu putere foarte mică. Un design notabil al procesorului târziu care folosește o poartă largă de ceas pentru a reduce cerințele de alimentare ale consolei de jocuri video este cel al Xbox 360 bazat pe PowerPC-ul IBM. O altă metodă de abordare a unora dintre problemele unui semnal de ceas global este eliminarea completă a acestuia. În timp ce eliminarea semnalului general de la ceas în multe feluri face ca procesul de proiectare să fie considerabil mai complex, în comparație cu modelele sincrone similare, modelele asincrone (sau non-ceas) au avantaje marcate în consumul de energie și disiparea căldurii. Deși rare, procesoarele complete au fost construite fără a utiliza un semnal de ceas global. Două exemple notabile în acest sens sunt amuleta, care implementează arhitectura ARM, și MiniMIPS, care acceptă MIPS R3000. În loc să elimine complet semnalul ceasului, unele modele de CPU permit anumitor unități de dispozitiv să fie asincrone, cum ar fi utilizarea ALU împreună cu conducta superscalară pentru a obține unele câștiguri în performanța aritmetică. Deși nu este complet clar dacă proiectele complet asincrone pot funcționa la un nivel comparabil sau mai bun decât omologii lor sincroni, este evident că cel puțin excelează în cele mai simple operații matematice. Acest lucru, combinat cu consumul lor excelent de energie și caracteristicile de disipare a căldurii, le face potrivite pentru sistemele încorporate.

Paralelismedit

Articol principal: calcul paralel
modelul unui procesor subscalar. Rețineți că este nevoie de cincisprezece cicluri pentru a termina trei instrucțiuni.

descrierea funcționării de bază a unui procesor oferită în secțiunea anterioară descrie cea mai simplă formă pe care o poate lua un procesor. Acest tip de procesor, denumit de obicei subscală, funcționează și execută o singură instrucțiune cu una sau două bucăți de date simultan.

acest proces are ca rezultat ineficiența inerentă a procesoarelor subscale. Deoarece o singură instrucțiune este executată la un moment dat, întregul procesor trebuie să aștepte finalizarea acelei instrucțiuni înainte de a trece la următoarea instrucțiune. Drept urmare, procesorul subscalar este „paralizat” în instrucțiuni care necesită mai mult de un ciclu de ceas pentru a finaliza execuția. Chiar și adăugarea unei a doua unități de execuție (vezi mai jos) nu îmbunătățește foarte mult performanța. În loc ca un drum să fie înghețat, acum două drumuri sunt paralizate și numărul tranzistorilor neutilizați crește. Acest design, în care resursele de execuție ale procesorului pot funcționa cu o singură instrucțiune la un moment dat, poate atinge doar performanțe scalare (o instrucțiune pe ciclu de ceas). Cu toate acestea, performanța este aproape întotdeauna subscală (mai puțin de o instrucțiune pe ciclu).

încercările de a obține performanțe scalare și mai bune au dus la o varietate de metodologii de proiectare care fac ca procesorul să se comporte mai puțin liniar și mai mult în paralel. Când vine vorba de paralelism în procesoare, doi termeni sunt folosiți în general pentru a clasifica aceste tehnici de proiectare.

  • paralelismul nivelului de instruire (ILP) urmărește creșterea ratei la care instrucțiunile sunt executate într-un procesor, adică creșterea utilizării resurselor de execuție pe tabletă.
  • paralelismul nivelului firului (TLP), care are ca scop creșterea numărului de fire (programe efectiv individuale) pe care un procesor le poate rula simultan.

fiecare metodologie diferă atât în modul în care sunt implementate, cât și în eficiența relativă pe care o produc în creșterea performanței procesorului pentru o aplicație.

ILP: segmentare și arhitectură Superscalarăedit

articole principale: segmentare (electronică) și Superscalar.
conductă de bază în cinci etape. În cel mai bun caz, această conductă poate susține o rată de finalizare de o instrucțiune pe ciclu.

una dintre cele mai simple metode de creștere a paralelismului este de a începe primii pași de citire și decodare a instrucțiunii înainte ca instrucțiunea anterioară să se termine. Aceasta este cea mai simplă formă a unei tehnici cunoscute sub numele de instrucțiuni pipelining, și este utilizat în aproape toate procesoarele de uz general moderna. Prin împărțirea căii de execuție în etape discrete, conducta permite executarea mai multor instrucțiuni în același timp. Această separare poate fi comparată cu o linie de asamblare, în care o instrucțiune este făcută mai completă în fiecare etapă până când iese din conducta de execuție și este scoasă din ea.

cu toate acestea, conducta introduce posibilitatea unei situații în care este necesar să se încheie rezultatul operațiunii anterioare pentru a finaliza următoarea operațiune; o condiție numită adesea un conflict de dependență de date. Pentru a face față acestui lucru, trebuie să aveți grijă suplimentară pentru a verifica aceste tipuri de condiții și, dacă se întâmplă acest lucru, o porțiune a conductei de instrucțiuni trebuie întârziată. Firește, realizarea acestui lucru necesită circuite suplimentare, procesoarele cu conducte sunt mai complexe decât subscalele, dar nu prea mult. Un procesor cu conducte poate deveni aproape complet scalar, inhibat doar de opriri abrupte ale conductelor (o instrucțiune care durează mai mult de un ciclu de ceas într-o etapă).

segmentare superscalară simplă. Prin citirea și expedierea a două instrucțiuni simultan, se pot completa maximum două instrucțiuni pe ciclu.

o îmbunătățire suplimentară față de ideea de conducte de instrucțiuni a dus la dezvoltarea unei metode care scade și mai mult timpul de inactivitate al componentelor procesorului. Proiectele despre care se spune că sunt superscalare includ o conductă lungă de instrucțiuni și mai multe unități de execuție identice. Într-o conductă superscalară, mai multe instrucțiuni sunt citite și transmise unui dispecer, care decide dacă instrucțiunile pot fi executate sau nu în paralel (simultan). Dacă da, acestea sunt expediate către unitățile de execuție disponibile, rezultând posibilitatea ca mai multe instrucțiuni să fie executate simultan. În general, cu cât un procesor superscalar poate trimite simultan mai multe instrucțiuni către unitățile de execuție standby, cu atât mai multe instrucțiuni vor fi completate într-un ciclu dat.

cea mai mare parte a dificultății în proiectarea unei arhitecturi CPU superscalare constă în crearea unui dispecer eficient. Dispecerul trebuie să poată determina rapid și corect dacă instrucțiunile pot fi executate în paralel, precum și să le expedieze într-un mod care să țină ocupate cât mai multe unități de execuție. Acest lucru necesită ca conducta de instrucțiuni să fie umplută cât mai des posibil și crește nevoia, în arhitecturi superscalare, pentru cantități semnificative de cache CPU. Acest lucru creează, de asemenea, tehnici pentru a evita pericolele, cum ar fi predicția furcii, execuția speculativă și execuția în afara ordinii, cruciale pentru menținerea unor niveluri ridicate de performanță. Încercând să prezică ce ramură (sau cale) va lua o instrucțiune condiționată, CPU poate minimiza de câte ori întregul canal trebuie să aștepte până când o instrucțiune condiționată este finalizată. Adesea, execuția speculativă oferă creșteri modeste ale performanței executând porțiuni de cod care ar putea să nu fie necesare după finalizarea unei operații condiționate. În afara ordinului de execuție se schimbă cumva ordinea în care instrucțiunile sunt executate pentru a reduce întârzierile datorate dependențelor de date. De asemenea, în cazul instrucțiunilor individuale mai multe date — procesoarele moderne, în cazul în care ați procesat o cantitate mare de date de același tip, puteți dezactiva părți ale conductei, astfel încât atunci când executați o singură propoziție de mai multe ori, CPU omite fazele de captare și decodare și, astfel, crește foarte mult performanța în anumite ocazii, în special în motoarele programelor extrem de monotone ca software-ul pentru crearea procesării video și foto.

în cazul în care o porțiune a procesorului este superscalar și o porțiune nu este, porțiunea care nu este superscalar suferă în performanță din cauza opririlor de timp. Intel Pentium original (P5) avea două Alu-uri superscalare care puteau accepta, fiecare, o instrucțiune pe ciclu de ceas, dar FPU-ul său nu putea accepta o instrucțiune pe ciclu de ceas. Astfel, P5 a fost superscalar în partea de numere întregi, dar nu a fost superscalar de numere în virgulă mobilă. Succesorul arhitecturii Pentium Intel, P6, a adăugat capacități superscalare funcțiilor sale în virgulă mobilă și a produs astfel o creștere semnificativă a performanței acestor instrucțiuni.

atât designul superscalar, cât și carcasa unică măresc ILP-ul unui procesor, permițând unui singur procesor să finalizeze execuția instrucțiunilor la rapoarte care depășesc o instrucțiune pe ciclu (IPC). Cele mai multe modele de procesoare moderna sunt cel puțin oarecum superscalar, iar în ultimul deceniu, aproape toate modelele de CPU de uz general sunt superscalar. În ultimii ani, o parte din accentul pus pe proiectarea ridicată a computerului ILP s-a mutat de la hardware-ul procesorului la interfața software sau ISA. Strategia cuvântului de instrucțiuni foarte lungă, sau VLIW, face ca unele ILP să fie implicate direct de software, reducând cantitatea de muncă pe care CPU trebuie să o efectueze pentru a da un impuls semnificativ ILP și astfel reduce complexitatea proiectării.

fir-nivel Paralelismedit

o altă strategie pentru a obține performanță este de a rula mai multe programe sau fire în paralel. Acest domeniu de cercetare este cunoscut sub numele de calcul paralel. În taxonomia lui Flynn, această strategie este cunoscută sub numele de instrucțiuni multiple multi-date sau MIMD.

o tehnologie utilizată în acest scop a fost MULTIPROCESAREA (MP). Lansarea acestei tehnologii este cunoscută sub numele de multiprocesare simetrică (SMP), unde un număr mic de procesoare împărtășesc o viziune coerentă asupra sistemului lor de memorie. În această schemă, fiecare procesor are hardware suplimentar pentru a menține o vizualizare actualizată constant a memoriei. Pentru a evita vizitele de memorie învechite, procesoarele pot coopera în același program, iar programele pot migra de la un procesor la altul. Pentru a crește numărul de procesoare cooperante dincolo de câteva, scheme precum acces neuniform la memorie (NUMA) și protocoale de coerență bazate pe directoare au fost introduse în 1990. Sistemele SMP sunt limitate la un număr mic de procesoare, în timp ce sistemele NUMA au fost construite cu mii de procesoare. Inițial, multiprocesarea a fost construită folosind mai multe procesoare și plăci discrete pentru a implementa interconectarea între procesoare. Când procesoarele și interconectarea lor au fost implementate pe un singur cip de siliciu, tehnologia este cunoscută sub numele de procesor multicore.

mai târziu s-a recunoscut că a existat un paralelism foarte strâns cu un singur program. Un singur program ar putea avea mai multe fire (sau funcții) care ar putea fi rulate separat sau în paralel. Unele exemple timpurii ale acestei tehnologii au implementat procesarea intrărilor/ieșirilor, cum ar fi accesul direct la memorie ca fir separat de firul calculat. În anii 1970, a fost introdusă o abordare mai generală a acestei tehnologii, când sistemele au fost proiectate pentru a rula mai multe fire de calcul în paralel. Această tehnologie este cunoscută sub numele de multithreading (MT).

această abordare este considerată mai rentabilă decât multiprocesarea, deoarece doar un număr mic de componente dintr-un procesor sunt reproduse pentru a suporta MT, spre deosebire de întregul procesor în cazul MP. În MT, unitățile de execuție și sistemul de memorie, inclusiv cache-urile, sunt partajate între mai multe fire. Dezavantajul MT este că suportul hardware pentru multithreading este mai vizibil pentru software decât cel al MP și, prin urmare, software-ul de supraveghere și sistemele de operare trebuie să fie supuse modificărilor mai mari pentru a sprijini MT. Un tip de MT care a fost implementat este cunoscut sub numele de bloc multithreaded, unde un fir este rulat până când este paralizat așteptând ca datele să revină din memoria externă. În această schemă, procesorul ar trebui apoi să treacă rapid la un alt fir care este gata de rulare, comutatorul efectuează de multe ori un ciclu de ceas CPU, cum ar fi tehnologia UltraSPARC. Un alt tip de MT se numește multithreading simultan, unde instrucțiunile multithreading sunt executate în paralel într-un ciclu de ceas CPU.

paralelismul Dateloredit

articole principale: procesor vectorial și SIMD.

o paradigmă CPU mai puțin obișnuită, dar din ce în ce mai importantă (și, într-adevăr, Calculul în general) se ocupă de vectori. Procesoarele discutate mai sus sunt toate denumite un anumit tip de dispozitiv scalar. După cum sugerează și numele, procesoarele vectoriale se ocupă de mai multe bucăți de date în contextul unei instrucțiuni, spre deosebire de procesoarele scalare, care se ocupă de o bucată de date pentru fiecare instrucțiune. Aceste două scheme de gestionare a datelor sunt denumite în general SISD (instrucțiune unică, date unice) și SIMD (instrucțiune unică, date multiple). Marea utilitate în crearea de procesoare care se ocupă de vectorii de date constă în optimizarea sarcinilor care tind să necesite aceeași operație, de exemplu, o sumă sau un produs scalar, care trebuie efectuată pe un set mare de date. Câteva exemple clasice ale acestui tip de sarcină sunt aplicațiile multimedia (imagini, video și sunet), precum și multe tipuri de sarcini științifice și inginerești. În timp ce un procesor scalar trebuie să finalizeze întregul proces de citire, decodare și executare a fiecărei instrucțiuni și valori pe un set de date, un procesor vectorial poate efectua o operație simplă pe un set de date relativ mare cu o singură instrucțiune. Desigur, acest lucru este posibil numai atunci când aplicația tinde să necesite mulți pași care aplică o operație unui set mare de date.

majoritatea procesoarelor vectoriale timpurii, cum ar fi Cray-1, au fost asociate aproape exclusiv cu aplicații de cercetare științifică și criptografie. Cu toate acestea, pe măsură ce multimedia s-a mutat în mare parte la media digitală, nevoia unei anumite forme de SIMD în procesoarele de uz general a devenit semnificativă. La scurt timp după ce a devenit obișnuit să se includă unități în virgulă mobilă în procesoarele de uz general, au început să apară și specificații și implementări ale unităților de execuție SIMD pentru procesoarele de uz general. Unele dintre aceste specificații SIMD timpurii, cum ar fi Intel MMX, erau doar pentru numere întregi. Acest lucru s-a dovedit a fi un impediment semnificativ pentru unii dezvoltatori de software, deoarece multe dintre aplicațiile care au beneficiat de SIMD s-au ocupat în mare parte de numere în virgulă mobilă. Progresiv, aceste modele timpurii au fost rafinate și refăcute în unele dintre specificațiile comune, moderna SIMD, care sunt în general asociate cu un ISA. Exemple notabile moderna includ Intel SSE și PowerPC-legate de AltiVec (de asemenea, cunoscut sub numele de VMX).

Lasă un răspuns

Adresa ta de email nu va fi publicată.