Unitatea centrală de procesare
Diagrama bloc a unui computer de bază uniprocesor-CPU. Liniile negre indică fluxul de date, în timp ce liniile roșii indică fluxul de control; săgețile indică direcțiile de curgere.
Hardwired într-un CPU”s circuitele este un set de operații de bază se poate efectua, numit un set de instrucțiuni. Astfel de operațiuni pot implica, de exemplu, adăugarea sau scăderea a două numere, compararea a două numere sau sărirea într-o altă parte a unui program., Fiecare operație de bază este reprezentată de o anumită combinație de biți, cunoscută sub numele de opcode limbaj mașină; în timp ce execută instrucțiuni într-un program de limbaj mașină, CPU decide ce operație să efectueze prin „decodarea” opcode. O instrucțiune completă a limbajului mașinii constă dintr-un opcode și, în multe cazuri, biți suplimentari care specifică argumente pentru operație (de exemplu, numerele care trebuie însumate în cazul unei operații de adăugare). Mergând până la scara de complexitate, un program de limbă mașină este o colecție de instrucțiuni de limbă mașină care CPU execută.,
operația matematică reală pentru fiecare instrucțiune este efectuată de un circuit logic combinațional în procesorul procesorului cunoscut sub numele de unitatea logică aritmetică sau ALU. În general, un procesor execută o instrucțiune preluând-o din memorie, folosind ALU-ul său pentru a efectua o operație și apoi stocând rezultatul în memorie., Pe lângă instrucțiunile pentru operații matematice și logice întregi, există și alte instrucțiuni ale mașinii, cum ar fi cele pentru încărcarea datelor din memorie și stocarea acestora, operații de ramificare și operații matematice pe numere în virgulă mobilă efectuate de unitatea în virgulă mobilă a procesorului (FPU).
unitate de Controledit
unitatea de control (CU) este o componentă a procesorului care direcționează funcționarea procesorului., Acesta spune memoria computerului, unitatea aritmetică și logică și dispozitivele de intrare și ieșire cum să răspundă la instrucțiunile care au fost trimise procesorului.acesta direcționează funcționarea celorlalte unități prin furnizarea de semnale de sincronizare și de control. Majoritatea resurselor informatice sunt gestionate de CU. Acesta direcționează fluxul de date între CPU și celelalte dispozitive. John von Neumann a inclus unitatea de control ca parte a arhitecturii von Neumann., În modelele moderne de calculatoare, unitatea de control este de obicei o parte internă a procesorului, cu rolul și funcționarea sa generală neschimbate de la introducerea sa.
Aritmetica logica unitEdit
reprezentare Simbolică a unui ALU și de intrare și semnalele de ieșire
unitate logică aritmetică (ALU) este un circuit digital în procesor care efectuează întreg aritmetice și operații logice la nivel de bit., Intrările la ALU sunt cuvintele de date care trebuie operate (numite operanzi), informații de stare din operațiile anterioare și un cod de la unitatea de control care indică operația de efectuat. În funcție de instrucțiunea executată, operanzii pot proveni din registrele interne ale procesorului sau din memoria externă sau pot fi constante generate de ALU în sine.
când toate semnalele de intrare s-au stabilit și s-au propagat prin circuitele ALU, rezultatul operației efectuate apare la ieșirile ALU., Rezultatul constă atât dintr-un cuvânt de date, care poate fi stocat într-un registru sau memorie, cât și informații de stare care sunt de obicei stocate într-un registru CPU intern special rezervat în acest scop.
Address generation unitEdit
Address generation unit (AGU), uneori numită și address computation unit (ACU), este o unitate de execuție din interiorul procesorului care calculează adresele utilizate de procesor pentru a accesa memoria principală., Prin efectuarea calculelor de adrese prin circuite separate care funcționează în paralel cu restul procesorului, numărul de cicluri CPU necesare pentru executarea diferitelor instrucțiuni ale mașinii poate fi redus, aducând îmbunătățiri ale performanței.
în timpul efectuării diferitelor operații, procesoarele trebuie să calculeze adresele de memorie necesare pentru preluarea datelor din memorie; de exemplu, pozițiile din memorie ale elementelor de matrice trebuie calculate înainte ca procesorul să poată prelua datele din locațiile reale de memorie., Aceste calcule de generare a adreselor implică diferite operații aritmetice întregi, cum ar fi adunarea, scăderea, operațiile modulo sau schimbările de biți. Adesea, calcularea unei adrese de memorie implică mai mult de o instrucțiune generală a mașinii, care nu decodează și execută rapid. Prin încorporarea unui AGU într-un design CPU, împreună cu introducerea de instrucțiuni specializate care utilizează AGU, diverse calcule de generare de adrese pot fi descărcate de restul procesorului și pot fi adesea executate rapid într-un singur ciclu CPU.,capabilitatile unui AGU depind de un anumit procesor si de arhitectura acestuia. Astfel, unele Agu implementează și expun mai multe operații de calcul al adreselor, în timp ce altele includ și instrucțiuni specializate mai avansate care pot funcționa pe mai mulți operanzi simultan. În plus, unele arhitecturi CPU include mai multe AGUs deci mai mult de o adresă-operație de calcul pot fi executate simultan, aduce în continuare îmbunătățiri de performanță prin valorificarea superscalar natura avansate CPU modele., De exemplu, Intel încorporează mai multe Agu în Microarhitecturile Sandy Bridge și Haswell, care măresc lățimea de bandă a subsistemului de memorie CPU, permițând executarea mai multor instrucțiuni de acces la memorie în paralel.
Memory management unit (MMU)Edit
majoritatea microprocesoarelor high-end (în computere desktop, laptop, server) au o unitate de gestionare a memoriei, traducând adrese logice în adrese RAM fizice, oferind protecție de memorie și abilități de paginare, utile pentru memoria virtuală., Procesoarele mai simple, în special microcontrolerele, de obicei nu includ un MMU.un cache CPU este un cache hardware utilizat de unitatea centrală de procesare (CPU) a unui computer pentru a reduce costul mediu (timp sau energie) pentru a accesa datele din memoria principală. Un cache este o memorie mai mică, mai rapidă, mai aproape de un nucleu de procesor, care stochează copii ale datelor din locațiile principale de memorie utilizate frecvent. Majoritatea procesoarelor au cache-uri independente diferite, inclusiv cache-uri de instrucțiuni și date, unde cache-ul de date este de obicei organizat ca o ierarhie a mai multor niveluri de cache (L1, L2, L3, L4 etc.,).toate procesoarele moderne (rapide) (cu câteva excepții specializate) au mai multe niveluri de cache-uri CPU. Primele Procesoare care a folosit un cache avut doar un singur nivel de cache; mai târziu, spre deosebire de nivelul 1 de cache, nu a fost divizat în L1d (pentru date) și L1i (pentru instrucțiuni). Aproape toate procesoarele actuale cu cache-uri au o memorie cache L1 divizată. De asemenea, au cache-uri L2 și, pentru procesoare mai mari, cache-uri L3. Cache-ul L2 nu este de obicei divizat și acționează ca un depozit comun pentru cache-ul L1 deja divizat. Fiecare nucleu al unui procesor multi-core are o memorie cache L2 dedicată și, de obicei, nu este partajată între nuclee., Cache-ul L3 și cache-urile de nivel superior sunt împărțite între nuclee și nu sunt împărțite. Un cache L4 este în prezent mai puțin frecvente, și este, în general, pe memorie dinamică cu acces aleator (DRAM), mai degrabă decât pe memorie statică cu acces aleator (SRAM), pe o matriță sau cip separat. Acesta a fost și cazul istoric cu L1, în timp ce cipurile mai mari au permis integrarea acestuia și, în general, toate nivelurile de cache, cu posibila excepție a ultimului nivel. Fiecare nivel suplimentar de cache tinde să fie mai mare și să fie optimizat diferit.,
există alte tipuri de cache-uri (care nu sunt luate în considerare pentru „dimensiunea cache-ului” celor mai importante cache-uri menționate mai sus), cum ar fi tamponul de traducere lookaside (TLB) care face parte din unitatea de gestionare a memoriei (MMU) pe care o au majoritatea procesoarelor.cache-urile sunt în general dimensionate în puteri de două: 4, 8, 16 etc. KiB sau MiB (pentru dimensiuni mai mari non-L1), deși IBM z13 are o memorie cache de instrucțiuni 96 KiB L1.
Clock rateEdit
majoritatea procesoarelor sunt circuite sincrone, ceea ce înseamnă că folosesc un semnal de ceas pentru a-și ritma operațiile secvențiale., Semnalul ceasului este produs de un circuit oscilator extern care generează un număr consistent de impulsuri în fiecare secundă sub forma unui val pătrat periodic. Frecvența impulsurilor de ceas determină rata la care un procesor execută instrucțiuni și, în consecință, cu cât ceasul este mai rapid, cu atât mai multe instrucțiuni pe care CPU le va executa în fiecare secundă.
pentru a asigura funcționarea corectă a procesorului, perioada de ceas este mai lungă decât timpul maxim necesar pentru ca toate semnalele să se propage (să se deplaseze) prin CPU., În setarea perioadei de ceas la o valoare cu mult peste întârzierea propagării în cel mai rău caz, este posibil să se proiecteze întregul procesor și modul în care se mișcă datele în jurul „marginilor” semnalului ceasului în creștere și în scădere. Acest lucru are avantajul simplificării semnificative a procesorului, atât din perspectiva designului, cât și din perspectiva numărului de componente. Cu toate acestea, are și dezavantajul că întregul procesor trebuie să aștepte pe elementele sale cele mai lente, chiar dacă unele porțiuni ale acestuia sunt mult mai rapide. Această limitare a fost în mare măsură compensată prin diferite 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. Ratele de ceas mai mari în procesoarele din ce în ce mai complexe fac mai dificilă menținerea semnalului de ceas în fază (sincronizat) pe întreaga unitate. Acest lucru a determinat multe procesoare moderne să solicite mai multe semnale de ceas identice pentru a evita întârzierea unui singur semnal suficient de semnificativ pentru a provoca funcționarea defectuoasă a procesorului., O altă problemă majoră, pe măsură ce ratele de ceas cresc dramatic, este cantitatea de căldură disipată de procesor. Ceasul în continuă schimbare determină comutarea multor componente indiferent dacă sunt utilizate în acel moment. În general, o componentă care este de comutare utilizează mai multă energie decât un element într-o stare statică. Prin urmare, pe măsură ce rata ceasului crește, la fel și consumul de energie, determinând CPU-ul să necesite mai multă disipare a căldurii sub formă de soluții de răcire a procesorului.,o metodă de tratare a comutării componentelor care nu sunt necesare se numește închiderea ceasului, ceea ce implică oprirea semnalului de ceas la componentele care nu sunt necesare (dezactivarea efectivă a acestora). Cu toate acestea, acest lucru este adesea considerat ca fiind dificil de implementat și, prin urmare, nu vede o utilizare comună în afara proiectelor cu putere foarte mică. Un design notabil recent al procesorului care utilizează închiderea extinsă a ceasului este Xenonul bazat pe IBM PowerPC utilizat în Xbox 360; în acest fel, cerințele de alimentare ale Xbox 360 sunt mult reduse., O altă metodă de a aborda unele dintre problemele cu un semnal de ceas la nivel mondial este eliminarea semnalului de ceas cu totul. În timp ce eliminarea globală semnal de ceas face procesul de proiectare mult mai complexe în mai multe moduri, asincron (sau clockless) modele transporta marcat avantaje în consumul de energie și disipare a căldurii în comparație cu similare sincron modele. În timp ce oarecum mai puțin frecvente, procesoare asincrone întregi au fost construite fără a utiliza un semnal de ceas global. Două exemple notabile în acest sens sunt amuletul compatibil ARM și minimips compatibil MIPS R3000.,
mai Degrabă decât eliminând complet semnalul de ceas, un CPU modele permit anumite porțiuni ale dispozitivului să fie asincron, cum ar fi utilizarea asincron ALUs în colaborare cu superscalar conducte pentru a obține unele aritmetică câștiguri de performanță. Deși nu este clar dacă desenele complet asincrone pot funcționa la un nivel comparabil sau mai bun decât omologii lor sincroni, este evident că acestea excelează cel puțin în operații matematice mai simple., Acest lucru, combinat cu consumul lor excelent de energie și proprietățile de disipare a căldurii, le face foarte potrivite pentru computerele încorporate.
regulator de Tensiune moduleEdit
Multe Procesoare moderne au un mor-putere integrat de management module care reglementează la cerere tensiune de alimentare la CPU circuitele permițându-i să păstreze echilibrul între performanță și consum de energie.
interval Întregedit
fiecare procesor reprezintă valori numerice într-un mod specific., De exemplu, unele computere digitale timpurii au reprezentat numerele ca valori de sistem numerice zecimale (baza 10) familiare, iar altele au folosit reprezentări mai neobișnuite, cum ar fi ternarul (baza trei). Aproape toate procesoarele moderne reprezintă numere în formă binară, fiecare cifră fiind reprezentată de o cantitate fizică cu două valori, cum ar fi o tensiune „înaltă” sau „joasă”.
un cuvânt de șase biți care conține reprezentarea binar codificat de valoare zecimală 40. Majoritatea procesoarelor moderne folosesc dimensiuni de cuvinte care au o putere de două, de exemplu 8, 16, 32 sau 64 de biți.,
Legate de reprezentarea numerică este mărimea și precizia de numere întregi care un PROCESOR o poate reprezenta. În cazul binar CPU, aceasta este măsurată prin numărul de biți (cifre semnificative de un binar codificat număr întreg) care PROCESORUL poate procesa într-o singură operație, care este de obicei numit cuvânt dimensiune, lățime pic, cale de date lățime, număr întreg de precizie, sau dimensiune număr întreg. O dimensiune întreagă a procesorului determină intervalul de valori întregi pe care poate funcționa direct., De exemplu, un procesor pe 8 biți poate manipula direct numere întregi reprezentate de opt biți, care au o gamă de 256 (28) valori întregi discrete.
intervalul întreg poate afecta, de asemenea, numărul de locații de memorie pe care CPU le poate adresa direct (o adresă este o valoare întreagă reprezentând o anumită locație de memorie). De exemplu, dacă un procesor binar folosește biți 32 pentru a reprezenta o adresă de memorie, atunci se poate adresa direct locațiilor de memorie 232. Pentru a eluda această limitare și din diverse alte motive, unele procesoare folosesc mecanisme (cum ar fi comutarea bancară) care permit abordarea memoriei suplimentare.,procesoarele cu dimensiuni mai mari de cuvinte necesită mai multe circuite și, prin urmare, sunt mai mari din punct de vedere fizic, costă mai mult și consumă mai multă energie (și, prin urmare, generează mai multă căldură). Drept urmare, microcontrolerele mai mici de 4 sau 8 biți sunt utilizate în mod obișnuit în aplicațiile moderne, chiar dacă sunt disponibile procesoare cu dimensiuni de cuvinte mult mai mari (cum ar fi 16, 32, 64, chiar și 128 de biți). Cu toate acestea, atunci când este necesară o performanță mai mare, beneficiile unei dimensiuni mai mari a cuvintelor (intervale de date mai mari și spații de adrese) pot depăși dezavantajele. Un procesor poate avea căi de date interne mai scurte decât dimensiunea cuvântului pentru a reduce dimensiunea și costul., De exemplu, chiar dacă IBM System/360 set de instrucțiuni a fost de 32 de biți set de instrucțiuni, Sistemul/360 Model 30 și Modelul 40 a 8 biți de date căi în unitate logică aritmetică, astfel încât un 32-bit adauga necesare patru cicluri, unul pentru fiecare 8 biți de operanzi, și, chiar dacă Motorola 68000 serie de instrucțiuni set a fost de 32 de biți set de instrucțiuni, Motorola 68000 și Motorola 68010 a avut 16-bit de date căi în unitate logică aritmetică, deci, ca un 32-bit adauga necesare două cicluri.,pentru a obține unele dintre avantajele oferite de lungimile de biți mai mici și mai mari, multe seturi de instrucțiuni au lățimi de biți diferite pentru date întregi și în virgulă mobilă, permițând procesoarelor care implementează setul de instrucțiuni să aibă lățimi de biți diferite pentru diferite porțiuni ale dispozitivului. De exemplu, setul de instrucțiuni IBM System/360 a fost în primul rând pe 32 de biți, dar a acceptat valori în virgulă mobilă pe 64 de biți pentru a facilita o mai mare precizie și o gamă de numere în virgulă mobilă., Modelul System / 360 65 avea un adder pe 8 biți pentru aritmetica binară zecimală și fixă și un adder pe 60 de biți pentru aritmetica în virgulă mobilă. Multe modele de CPU mai târziu folosesc o lățime de biți mixtă similară, mai ales atunci când procesorul este destinat utilizării de uz general, unde este necesar un echilibru rezonabil al capabilității întregi și a punctului în virgulă mobilă.,
ParallelismEdit
Model de subscalar CPU, în care este nevoie de cincisprezece cicluri de ceas pentru a finaliza trei instrucțiuni
descrierea funcționarea de bază a unui PROCESOR oferite în secțiunea anterioară descrie cea mai simplă formă care un PROCESOR o poate lua. Acest tip de procesor, denumit de obicei subscalar, funcționează și execută o instrucțiune pe una sau două bucăți de date simultan, adică mai puțin de o instrucțiune pe ciclu de ceas (IPC < 1).,acest proces dă naștere unei ineficiențe inerente în procesoarele subscalare. Deoarece o singură instrucțiune este executată la un moment dat, întregul procesor trebuie să aștepte finalizarea instrucțiunii înainte de a trece la următoarea instrucțiune. Drept urmare, procesorul subscalar se „închide” pe 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 prea mult performanța; mai degrabă decât o cale închisă, acum două căi sunt închise și numărul de tranzistori neutilizați este crescut., Acest design, în care resursele de execuție ale procesorului pot funcționa pe o singură instrucțiune la un moment dat, poate atinge doar performanța scalară (o instrucțiune pe ciclu de ceas, IPC = 1). Cu toate acestea, performanța este aproape întotdeauna subscalar (mai puțin de o instrucțiune pe ciclu de ceas, IPC < 1).încercările de a obține performanțe scalare și mai bune au dus la o varietate de metodologii de proiectare care determină procesorul să se comporte mai puțin liniar și mai mult în paralel., Atunci când se referă la paralelismul în Procesoare, doi termeni sunt, în general, folosit pentru a clasifica aceste tehnici de proiectare:
- instruire-nivelul de paralelism (ILP), care urmărește să crească rata la care instrucțiunile sunt executate într-un CPU (care este, pentru a crește utilizarea de mor executarea resurse);
- sarcina-nivel de paralelism (TLP), care în scopul de a crește numărul de fire sau procese care un PROCESOR poate executa simultan.,fiecare metodologie diferă atât în modul în care sunt implementate, cât și în eficiența relativă pe care o permit în creșterea performanței procesorului pentru o aplicație.
Instruire-nivelul parallelismEdit
articol Principal: Instruire-nivelul de paralelismBază cinci etape de conducte. În cel mai bun caz, această conductă poate susține o rată de finalizare a unei instrucțiuni pe ciclu de ceas.,una dintre cele mai simple metode utilizate pentru a realiza paralelismul crescut este de a începe primii pași de preluare și decodare a instrucțiunilor înainte ca instrucțiunea anterioară să termine executarea. Aceasta este cea mai simplă formă a unei tehnici cunoscute sub numele de pipelining de instrucțiuni și este utilizată în aproape toate procesoarele moderne de uz general. Pipelining permite mai mult de o instrucțiune pentru a fi executate la un moment dat de rupere în jos calea de execuție în etape discrete., 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 retrasă.
Pipelining introduce, totuși, posibilitatea unei situații în care rezultatul operației anterioare este necesar pentru a finaliza următoarea operație; o condiție adesea numită conflict de dependență de date. Pentru a face față acestei situații, trebuie să aveți grijă suplimentară pentru a verifica aceste tipuri de condiții și pentru a întârzia o porțiune din conducta de instrucțiuni dacă se întâmplă acest lucru., Desigur, realizarea acestui lucru necesită circuite suplimentare, astfel încât procesoarele cu conducte sunt mai complexe decât cele subscalare (deși nu foarte semnificativ). Un procesor pipeline poate deveni foarte aproape scalar, inhibat doar de tarabe de conducte (o instrucțiune care petrece mai mult de un ciclu de ceas într-o etapă).
o conductă superscalară simplă. Prin preluarea și expedierea a două instrucțiuni simultan, se pot completa maximum două instrucțiuni pe ciclu de ceas.,
îmbunătățirea ulterioară a ideii de conducte de instrucțiuni a dus la dezvoltarea unei metode care scade și mai mult timpul inactiv al componentelor procesorului. Modele care sunt spus să fie superscalar includ o lungă perioadă de instruire de conducte și mai multe identice, unități de execuție, cum ar fi de încărcare-magazin unități aritmetice-logice unități, plutitoare-punct de unități și adresa unităților de producție. Î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 mai multe instrucțiuni un procesor superscalar este capabil să trimită simultan unităților de execuție în așteptare, cu atât mai multe instrucțiuni vor fi completate într-un anumit ciclu.cea mai mare parte a dificultății în proiectarea unei arhitecturi CPU superscalar 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 astfel încât să țină cât mai multe unități de execuție ocupate. Acest lucru necesită ca conducta de instrucțiuni să fie umplută cât mai des posibil și dă naștere nevoii de arhitecturi superscalare pentru cantități semnificative de cache CPU. Ea face, de asemenea, pericol-evitarea tehnici ca ramură de predicție, speculative execution, inscrieti-redenumirea, out-of-order execution și tranzacționale memorie crucial pentru menținerea unor niveluri ridicate de performanță., Prin încercarea de a prezice ce ramură (sau cale) o instrucțiune condiționată va lua, CPU poate minimiza numărul de ori pe care întreaga conductă trebuie să aștepte până când o instrucțiune condiționată este finalizată. Executarea speculativă oferă adesea creșteri modeste de performanță prin executarea unor porțiuni de cod care nu pot fi necesare după finalizarea unei operații condiționate. Execuția în afara ordinului rearanjează oarecum ordinea în care sunt executate instrucțiunile pentru a reduce întârzierile datorate dependențelor de date., De asemenea, în caz de single instruction stream, multiple data stream—un caz, atunci când o mulțime de date de același tip trebuie să fie prelucrat, procesoarele moderne pot dezactiva părți ale conductei, astfel că, atunci când o singură instrucțiune este executată de mai multe ori, CPU sare aduce și decoda faze și, astfel, crește foarte mult performanța în anumite ocazii, în special în foarte monoton program de motoare, cum ar fi video, programe de creație și prelucrare foto.,în cazul în care o porțiune a procesorului este superscalar și o parte nu este, partea care nu este suferă o penalizare de performanță din cauza tarabe de programare. Intel P5 Pentium avut două superscalar ALUs care ar putea accepta o instrucțiune pe ciclu de ceas fiecare, dar sa FPU nu a putut accepta o instrucțiune pe ciclu de ceas. Astfel, P5 a fost superscalar întreg, dar nu superscalar în virgulă mobilă. Succesorul Intel la arhitectura P5, P6, a adăugat abilități superscalare caracteristicilor sale în virgulă mobilă și a oferit astfel o creștere semnificativă a performanței instrucțiunilor în virgulă mobilă.,
atât pipelining simplu și design superscalar crește un CPU ” s ILP permițând un singur procesor pentru a finaliza executarea instrucțiunilor la rate depășind o instrucțiune pe ciclu de ceas. Cele mai multe modele moderne de procesoare sunt cel puțin oarecum superscalare și aproape toate procesoarele de uz general proiectate în ultimul deceniu sunt superscalare. În anii următori, o parte din accentul pus în proiectarea computerelor high-ILP a fost mutat din hardware-ul procesorului și în interfața software sau arhitectura setului de instrucțiuni (ISA)., Strategia cuvântului de instruire foarte lung (VLIW) determină ca unele ILP să devină implicate direct de software, reducând cantitatea de muncă pe care CPU trebuie să o efectueze pentru a stimula ILP și reducând astfel complexitatea designului.
Sarcina-nivel parallelismEdit
Principalele articole: Multithreading și procesor Multi-coreo Altă strategie de realizare a performanței este de a executa mai multe fire sau procese în paralel. Acest domeniu de cercetare este cunoscut sub numele de calcul paralel. În taxonomia lui Flynn, această strategie este cunoscută sub numele de flux de instrucțiuni multiple, flux de date multiple (MIMD).,o tehnologie folosită în acest scop a fost multiprocesarea (MP). Aroma inițială a acestei tehnologii este cunoscută sub numele de multiprocesare simetrică (SMP), unde un număr mic de procesoare împărtășesc o vedere coerentă a sistemului lor de memorie. În această schemă, fiecare procesor are hardware suplimentar pentru a menține o vizualizare actualizată a memoriei. Prin evitarea vederilor învechite ale memoriei, procesoarele pot coopera pe același program, iar programele pot migra de la un procesor la altul., Pentru a crește numărul de cooperant Procesoare dincolo de o mână, scheme, cum ar fi non-acces uniform la memorie (NUMA) și director pe bază de protocoale de coerență au fost introduse în anii 1990. Sisteme SMP sunt limitate la un număr mic de Procesoare în timp ce NUMA sisteme 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 dintre procesoare., Când procesoarele și interconectarea lor sunt implementate pe un singur cip, tehnologia este cunoscută sub numele de multiprocesare la nivel de cip (CMP), iar cipul unic ca procesor multi-core.mai târziu a fost recunoscut faptul că paralelismul cu granulație mai fină a existat cu un singur program. Un singur program poate avea mai multe fire (sau funcții) care ar putea fi executate separat sau în paralel. Unele dintre primele exemple ale acestei tehnologii au implementat procesarea de intrare/ieșire, cum ar fi accesul direct la memorie ca un fir separat de firul de calcul., O abordare mai generală a acestei tehnologii a fost introdusă în anii 1970, când sistemele au fost proiectate pentru a rula mai multe fire de calcul în paralel. Această tehnologie este cunoscută sub numele de multi-threading (MT). Această abordare este considerată mai rentabilă decât multiprocesarea, deoarece doar un număr mic de componente dintr-un procesor este replicat pentru a sprijini 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, astfel, software-ul supervizor, cum ar fi sistemele de operare, trebuie să sufere modificări mai mari pentru a sprijini MT. Un tip de MT care a fost implementat este cunoscut sub numele de multithreading temporal, unde un fir este executat până când este blocat în așteptarea revenirii datelor din memoria externă. În această schemă, CPU-ul ar trece rapid la un alt fir care este gata să ruleze, comutatorul de multe ori făcut într-un ciclu de ceas CPU, cum ar fi UltraSPARC T1., Un alt tip de MT este multithreading simultan, unde instrucțiunile din mai multe fire sunt executate în paralel într-un ciclu de ceas CPU.timp de câteva decenii, din anii 1970 până la începutul anilor 2000, accentul în proiectarea procesoarelor de uz general de înaltă performanță a fost în mare măsură pe realizarea ILP ridicat prin tehnologii precum conducte, cache-uri, execuție superscalară, execuție în afara ordinului etc. Această tendință a culminat cu procesoare mari, înfometate de putere, cum ar fi Intel Pentium 4., De la începutul anilor 2000, CPU designeri au fost zădărnicite de a atinge o performanță mai mare de ILP tehnici din cauza tot mai mare disparitate între CPU frecvențe de operare și memoria principală frecvențe de operare precum și escaladarea CPU puterea disipată datorită mai ezoterice ILP tehnici.
designerii CPU au împrumutat apoi idei de pe piețele comerciale de calcul, cum ar fi procesarea tranzacțiilor, unde performanța agregată a mai multor programe, cunoscută și sub denumirea de calcul de transfer, a fost mai importantă decât performanța unui singur fir sau proces.,
Această inversare de accent este demonstrat de proliferarea dual și mai multe core modele și, în special, Intel”s modele mai noi seamănă mai puțin superscalar P6 arhitectura. Târziu modele în mai multe familii de procesoare prezintă CMP, inclusiv x86-64 Opteron și Athlon 64 X2, SPARC UltraSPARC T1, IBM POWER4 și POWER5, precum și mai multe consolă de jocuri video Procesoare cum ar fi Xbox 360″s triple-core PowerPC design, și PlayStation 3″s 7-core Mobil microprocesor.,
paralelismul Datelormit
articole principale: procesor vectorial și SIMDo paradigmă mai puțin obișnuită, dar din ce în ce mai importantă a procesoarelor (și, într-adevăr, Calculul în general) se ocupă de paralelismul datelor. Procesoarele discutate mai devreme sunt toate denumite un 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. Acest lucru contrastează cu procesoare scalare, care se ocupă cu o bucată de date pentru fiecare instrucțiune., Folosind taxonomia lui Flynn, aceste două scheme de tratare a datelor sunt denumite în general flux de instrucțiuni unic, flux de date multiple (SIMD) și flux de instrucțiuni unic, flux de date unic (sisd), respectiv. Utilitatea excelentă în crearea procesoarelor 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 punct) care trebuie efectuate pe un set mare de date. Unele exemple clasice ale acestor tipuri de sarcini includ aplicații multimedia (imagini, video și sunet), precum și multe tipuri de sarcini științifice și de inginerie., În timp ce un procesor scalar trebuie să finalizeze întregul proces de preluare, decodare și executare a fiecărei instrucțiuni și valori într-un set de date, un procesor vectorial poate efectua o singură operație pe un set relativ mare de date cu o singură instrucțiune. Acest lucru este posibil numai atunci când aplicația tinde să necesite mai 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 cercetarea științifică și aplicațiile de criptografie., Cu toate acestea, deoarece multimedia s-a mutat în mare parte la mediile digitale, nevoia unei anumite forme de SIMD în procesoarele de uz general a devenit semnificativă. La scurt timp după includerea unităților în virgulă mobilă a început să devină un lucru obișnuit în procesoarele de uz general, specificațiile și implementările unităților de execuție SIMD au început să apară și pentru procesoarele de uz general. Unele dintre aceste specificații SIMD timpurii – cum ar fi extensiile HP Multimedia Acceleration (MAX) și Intel MMX – au fost doar întregi., Acest lucru s-a dovedit a fi un impediment semnificativ pentru unii dezvoltatori de software, deoarece multe dintre aplicațiile care beneficiază de SIMD se ocupă în principal de numere în virgulă mobilă. În mod progresiv, dezvoltatorii au rafinat și refăcut aceste modele timpurii în unele dintre specificațiile SIMD moderne comune, care sunt de obicei asociate cu o arhitectură set de instrucțiuni (ISA). Unele exemple moderne notabile includ Intel ” s Streaming SIMD Extensions (SSE) și AltiVec legate de PowerPC (de asemenea, cunoscut sub numele de VMX).