Ce este o barieră de memorie?

Din punct de vedere istoric, procesoarele au fost mașini perfect secvențiale. Acest lucru este foarte logic și ușor de înțeles, dar poate fi o problemă de performanță. De-a lungul anilor, au existat multe ajustări ingenioase ale designului procesorului pentru a extrage cât mai multă performanță din plăcile de siliciu. Una dintre cele mai interesante, totuși, este execuția în afara ordinului. În CPU-urile cu execuție în afara ordinului, instrucțiunile nu trebuie neapărat executate în ordinea în care sunt emise.

Starea în ordine

Principala problemă de performanță în care se confruntă un procesor în ordine se numește o blocare a conductei. Acest lucru se întâmplă atunci când o instrucțiune depinde de o anumită memorie, dar acea memorie nu este direct disponibilă într-un registru. În acest caz, CPU trebuie să găsească acea valoare în memorie. Cache-ul CPU este verificat mai întâi, deoarece acestea sunt cel mai rapid nivel de memorie. Dacă valoarea nu este acolo, RAM-ul sistemului este verificat. În acest timp, CPU trebuie să stea inactiv, deoarece instrucțiunea dependentă de memorie trebuie finalizată în ordine înainte de următoarele instrucțiuni.

Impactul asupra performanței unui blocaj de conducte poate să nu fie atât de rău, dar poate fi și relativ sever. De exemplu, memoria cache L1 poate returna de obicei un rezultat de ordinul mărimii a 5 cicluri CPU. Cache-ul L2 poate dura 20 de cicluri, L3 aproximativ 200 de cicluri, iar RAM de sistem aproximativ 400 de cicluri. Având în vedere că un procesor poate funcționa la aproximativ 5 GHz, adică 5 miliarde de cicluri de ceas pe secundă, chiar și 400 de cicluri nu sunt atât de rele (0,000008%). Dar dacă aveți multe instrucțiuni care trebuie să facă referire la date mai jos în nivelurile cache, efectul cumulat poate provoca o încetinire vizibilă.

Execuție în afara ordinii și redenumirea registrului

Execuția în afara ordinii este o tehnică care permite planificatorului să reordoneze instrucțiunile din coada sa. Prin această reordonare, poate alege să prioritizeze anumite fire față de altele. De asemenea, poate deplasa instrucțiunile înapoi în coadă atunci când au o dependență de date care nu a fost încă îndeplinită. Acest lucru previne pe cât posibil blocarea conductelor, minimizând ciclurile de inactivitate.

Execuția necorespunzătoare necesită o caracteristică numită redenumirea registrului. CPU poate accesa datele păstrate în registre într-un singur ciclu. Registrele sunt folosite pentru a stoca datele citite și scrise. Este esențial, totuși, să vă asigurați că computerul în general vede totul în ordinea logică, nu în ordinea dezactivată, optimizată pentru ciclul procesorului. Pentru a permite acest lucru, procesoarele au mult mai multe registre logice decât cere arhitectura procesorului.

Datele care trebuie scrise, dar au o instrucțiune „anterioră” care nu a fost încă finalizată, sunt plasate într-un registru de stocare. Aceste date nu sunt transferate într-un alt registru atunci când comanda sa rezolvat. În schimb, numele registrului de deținere este schimbat cu cel al registrului în care ar trebui să fie. Acest lucru este oarecum asemănător cu pregătirea unui desert înainte de felul principal, dar apoi păstrarea lui la frigider până când este timpul să-l serviți.

Aceste registre logice sunt complet neadresate. CPU-ul se poate adresa cu adevărat doar registrelor logice care au în prezent numele registrelor arhitecturale. Acestea fiind spuse, CPU-ul este, de asemenea, conștient de ele suficient de mult încât, dacă alte instrucțiuni reordonate se bazează pe datele din registrul de stocare logic, ele pot folosi mai degrabă decât datele „învechite” din registrul arhitectural la acel moment empiric particular.

Bariere ale memoriei

O barieră de memorie – denumită și instrucțiune membar, gard de memorie sau instrucțiune de gard – este o instrucțiune în codul computerului. Acesta permite unui programator să impună o constrângere de ordine asupra operațiunilor de memorie emise înainte și după bariera de memorie. Bariera de memorie instruiește planificatorul CPU să se asigure că toate instrucțiunile sunt procesate înainte de orice instrucțiune după barieră. Acest lucru se face pentru a se asigura că operațiunile importante sunt finalizate în ordinea corectă.

În general, pe computerele moderne, acest lucru nu ar trebui să fie necesar. Execuția necorespunzătoare și redenumirea registrului sunt domenii bine stabilite și mature. Cu toate acestea, o barieră de memorie poate fi utilă pentru procesoarele mai vechi, mai puțin sofisticate, necomandate sau utilizate în operațiuni critice de memorie.

Barierele de memorie pot veni cu un anumit detriment de performanță. Acest lucru se datorează faptului că împiedică în mod activ planificatorul CPU să optimizeze anumite părți ale fluxului de instrucțiuni. Acest lucru crește șansa de blocare a conductei.

Concluzie

O barieră de memorie este o instrucțiune care asigură o constrângere de ordonare a operațiilor de memorie. Acest lucru este important deoarece procesoarele de execuție în afara ordinii pot reordona anumite instrucțiuni. Deși redenumirea registry este bine stabilită ca metodă de a asigura integritatea memoriei în acest mediu, poate fi util să o asigurați manual.

Bariera de memorie forțează planificatorul CPU să se asigure că instrucțiunile sunt finalizate înainte de orice instrucțiune după barieră. Acest lucru împiedică reordonarea operațiunilor de memorie. De asemenea, împiedică CPU-ul să optimizeze fluxul de instrucțiuni, ceea ce poate afecta performanța.



Leave a Comment

Ce să faci dacă Powerbeats Pro nu se încarcă în carcasă

Ce să faci dacă Powerbeats Pro nu se încarcă în carcasă

Dacă Powerbeats Pro nu se încarcă, folosește o altă sursă de alimentare și curăță-ți căștile. Lasă carcasa deschisă în timp ce încarci căștile.

Canon Pixma MG5220: Scanare Fără Cerneală

Canon Pixma MG5220: Scanare Fără Cerneală

Cum să activezi scanarea pe Canon Pixma MG5220 când ai rămas fără cerneală.

5 Motive pentru care laptopul tău se supraîncălzește

5 Motive pentru care laptopul tău se supraîncălzește

Află care sunt unele dintre posibilele motive pentru care laptopul tău se supraîncălzește, împreună cu sfaturi și trucuri pentru a evita această problemă și a menține dispozitivul răcoros.

Cum să rezolvi codul de eroare GeForce Now 0xC272008F

Cum să rezolvi codul de eroare GeForce Now 0xC272008F

Te pregătești pentru o seară de gaming și va fi una mare – tocmai ai achiziționat „Star Wars Outlaws” pe serviciul de streaming GeForce Now. Descoperă singura soluție cunoscută care îți arată cum să repari codul de eroare GeForce Now 0xC272008F pentru a putea începe din nou să joci jocurile Ubisoft.

Elementele de bază ale imprimării 3D: Sfaturi de întreținere pentru imprimanta ta 3D

Elementele de bază ale imprimării 3D: Sfaturi de întreținere pentru imprimanta ta 3D

Întreținerea imprimantelor 3D este foarte importantă pentru a obține cele mai bune rezultate. Iată câteva sfaturi importante de reținut.

Cum să găsești adresa IP a unei imprimante

Cum să găsești adresa IP a unei imprimante

Ai probleme în a descoperi ce adresă IP folosește imprimanta ta? Te vom învăța cum să o găsești.

Principiile Imprimării 3D: O listă de verificare esențială pentru întreținere

Principiile Imprimării 3D: O listă de verificare esențială pentru întreținere

Menținerea echipamentului tău într-o stare bună este esențială. Iată câteva sfaturi utile pentru a-ți menține imprimanta 3D în condiții de vârf.

Cum să folosești AirPods cu telefoanele Samsung

Cum să folosești AirPods cu telefoanele Samsung

Dacă ești nesigur dacă să cumperi AirPods pentru telefonul tău Samsung, acest ghid te poate ajuta cu siguranță. Întrebarea cea mai evidentă este dacă cele două sunt

Cum se clonează un hard disk

Cum se clonează un hard disk

În era digitală modernă, în care datele sunt un bun valoros, clonarea unui hard disk pe Windows poate fi un proces crucial pentru mulți. Acest ghid cuprinzător

Cum să remediați driverul WUDFRd care nu s-a încărcat pe Windows 10?

Cum să remediați driverul WUDFRd care nu s-a încărcat pe Windows 10?

În timpul pornirii computerului, vă confruntați cu mesajul de eroare care spune că driverul WUDFRd nu s-a încărcat pe computer?