Microoperații într-un procesor, ce sunt și cum funcționează

Unul dintre conceptele cheie pentru a înțelege arhitectura și performanța curentului Intel și AMD CPU-urile este conceptul de microoperații, precum și unități precum memoria cache a acestora. În acest articol vă vom spune într-un mod accesibil care sunt acestea și de ce procesoarele de astăzi își bazează toată funcționarea pe ele pentru a obține performanța maximă posibilă.

A Procesor astăzi poate executa un număr mare de instrucțiuni diferite și o face la frecvențe care sunt de până la 5,000 de ori mai mari decât cele ale computerelor personale timpurii. Avem tendința de a crede și complet greșit că cantitatea mai mare de MHz sau GHz se datorează celor noi de fabricație. Realitatea este foarte diferită și aici intervin microoperațiunile, care sunt cheia pentru obținerea puterii enorme de calcul a microprocesoarelor de astăzi.

Microoperații într-un procesor

Ce sunt microoperațiile?

Una dintre comparațiile cu realitatea care sunt de obicei folosite pentru a explica ce este un program este comparația cu o rețetă de gătit. În care putem vedea atribuite într-un verb o serie de acțiuni pe care trebuie să le îndeplinim. De exemplu, pot pune într-o rețetă că prăjiți o bucată de carne în tigaie, dar pentru voi va trebui să căutați tigaia, să faceți același lucru cu uleiul, să îl puneți pe acesta din urmă în tigaie, să așteptați sa fie fierbinte si pune bucata de carne in ea. După cum puteți vedea, am convertit ceva care, în principiu, este definit de un singur verb într-o serie de acțiuni.

Flujo Microoperaciones

Ei bine, instrucțiunile unui procesor pot fi împărțite în altele mai mici pe care le numim microoperații. Și de ce nu microinstrucțiuni? Ei bine, din cauza faptului că o instrucțiune, doar prin segmentarea ei în mai multe cicluri pentru execuția ei, durează mai multe cicluri de ceas pentru a se rezolva. O microoperație, pe de altă parte, necesită un singur ciclu de ceas.

Instrucțiuni Tiempo Pipeline

O modalitate de a obține cel mai mult MHz sau GHz este pipelining-ul, în care fiecare instrucțiune este executată în mai multe etape care durează fiecare un ciclu de ceas. Deoarece frecvența este inversul timpului, pentru a obține mai multă frecvență trebuie să scurtăm timpul. Problema este că se ajunge la punctul în care o instrucțiune nu mai poate fi descompusă, numărul de etape din conductă devine scurt și astfel viteza de ceas care poate fi atinsă este scăzută.

De fapt, acestea s-au născut odată cu apariția execuției necorespunzătoare a arhitecturii Intel P6 și a procesoarelor sale derivate, cum ar fi Pentium II și III. Motivul pentru aceasta este că segmentarea lui P5 sau Pentium le-a permis doar să atingă puțin peste 200 MHz. Odată cu microoperațiile, prelungind și mai mult numărul de etape ale fiecărei instrucțiuni, acestea au depășit bariera GHz cu Pentium 3 și au reușit să aibă viteze de ceas de 16 ori mai mari cu Pentium 4. De atunci au fost folosite în toate procesoarele cu execuție în afara comenzii, indiferent de marcă și registru și set de instrucțiuni.

Procesoarele dumneavoastră nu sunt nici x86, nici RISC-V, nici ARM

În CPU-urile curente, când instrucțiunile ajung la unitatea de control CPU pentru a fi decodificate și atribuite unității de control, acestea sunt mai întâi împărțite în mai multe micro-operații diferite. Aceasta înseamnă că fiecare instrucțiune pe care o execută procesorul este alcătuită dintr-o serie de micro operații de bază și setul acestora într-un flux ordonat se numește microcod.

CPU micro operațiuni

Descompunerea instrucțiunilor în microoperații și transformarea programelor stocate în RAM în microcod se găsește astăzi în toate procesoarele. Deci, când telefonul tău este ISA ARM CPU sau procesorul x86 al computerului dumneavoastră execută programe, unitățile sale de execuție nu rezolvă instrucțiuni cu acele seturi de registre și instrucțiuni.

Acest proces nu numai că are avantajele pe care le-am explicat în secțiunea anterioară, dar putem găsi și instrucțiuni care, chiar și în cadrul aceleiași arhitecturi și sub același set de registre și instrucțiuni, sunt defalcate diferit, iar programele sunt pe deplin compatibile. Ideea este adesea de a reduce numărul de cicluri de ceas necesare, dar de cele mai multe ori este de a evita conflictul care apare atunci când există mai multe solicitări către aceeași resursă în cadrul procesorului.

Ce este memoria cache micro-op?

Celălalt element important pentru a obține performanța maximă posibilă este memoria cache a micro-operațiilor, care este mai târziu decât micro-operațiile și, prin urmare, mai apropiată în timp. Originea sa poate fi găsită în trace cache-ul pe care Intel l-a implementat în Pentium 4. Este o extensie a cache-ului de prim nivel pentru instrucțiuni care stochează corelația dintre diferitele instrucțiuni și microoperațiile în care acestea au fost dezasamblate anterior de unitatea de control. .

Cache Microscopio

Cu toate acestea, x86 ISA a avut întotdeauna o problemă în ceea ce privește tipul RISC, în timp ce acestea din urmă au o lungime fixă ​​a instrucțiunii în cod, în cazul x86 fiecare dintre ele putând măsura între 1 și 15 octeți. Trebuie să avem în vedere că fiecare instrucțiune este preluată și decodificată în mai multe micro-operații. Pentru a face acest lucru, chiar și astăzi, este nevoie de o unitate de control extrem de complexă, care poate consuma până la o treime din puterea sa energetică fără optimizările necesare.

Cache-ul de microoperații este astfel o evoluție a cache-ului de urmărire, dar nu face parte din memoria cache de instrucțiuni, este o entitate independentă de hardware. Într-un cache de microoperație, dimensiunea fiecăruia dintre ele este fixă ​​în ceea ce privește numărul de octeți, permițând de exemplu unui CPU cu ISA x86 să funcționeze cât mai aproape de un tip RISC și să reducă complexitatea unității de control și odată cu acesta consum. Diferența față de memoria cache a graficului Pentium 4 este că memoria cache micro-op actuală stochează toate micro-operațiunile aparținând unei instrucțiuni într-o singură linie.

Cum functioneaza?

Ceea ce face cache-ul de microoperații este să evite munca de decodare a instrucțiunilor, așa că atunci când decodorul tocmai a efectuat respectiva sarcină, ceea ce face este să stocheze rezultatul muncii sale în respectivul cache. În acest fel, atunci când este necesară decodarea următoarei instrucțiuni, ceea ce se face este să se caute dacă microoperațiile care o formează sunt în memoria cache menționată. Motivația pentru a face acest lucru nu este alta decât faptul că este nevoie de mai puțin timp pentru a consulta memoria cache decât pentru a nu descompune o instrucțiune complexă.

caché microoperaciones cómo funciona

Cu toate acestea, funcționează ca un cache și conținutul său este mutat în timp pe măsură ce sosesc instrucțiuni noi. Când există o instrucțiune nouă în memoria cache de instrucțiuni de nivel întâi, memoria cache a microoperațiilor este căutată dacă este deja decodificat. Dacă nu, atunci procedați ca de obicei.

Cele mai comune instrucțiuni odată descompuse fac de obicei parte din memoria cache a micro-operațiilor. Ceea ce face ca mai puține să fie aruncate, însă, este că cei a căror utilizare este sporadică vor fi mai des, pentru a lăsa loc pentru noi instrucțiuni. În mod ideal, dimensiunea cache-ului de microoperații ar trebui să fie suficient de mare pentru a le stoca pe toate, dar ar trebui să fie suficient de mică pentru ca căutarea în acesta să nu ajungă să afecteze performanța procesorului.