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

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?

Cum să remediați codul de eroare NVIDIA GeForce Experience 0x0003

Cum să remediați codul de eroare NVIDIA GeForce Experience 0x0003

Aveți experiența NVIDIA GeForce cu codul de eroare 0x0003 pe desktop? Dacă da, citiți blogul pentru a afla cum să remediați această eroare rapid și ușor.

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

Cum să eliminați un GPU de pe un computer Windows în 2023

Cum să eliminați un GPU de pe un computer Windows în 2023

Trebuie să eliminați GPU-ul de pe computer? Alăturați-vă pentru a explica cum să eliminați un GPU de pe computer în acest ghid pas cu pas.

Cum se instalează un SSD NVMe pe un desktop și laptop

Cum se instalează un SSD NVMe pe un desktop și laptop

Ați cumpărat un nou SSD NVMe M.2, dar nu știți cum să îl instalez? Citiți mai departe pentru a afla cum să instalați un SSD NVMe pe laptop sau desktop.

Ce este o bombă logică?

Ce este o bombă logică?

O bombă logică este un incident de securitate în care un atacator stabilește o acțiune întârziată. Continuați să citiți pentru a afla mai multe.

Ce este un SoC?

Ce este un SoC?

Dacă v-ați uitat vreodată în interiorul unui turn de PC, puteți vedea că există o mulțime de componente diferite. Laptopul tău obișnuit conține majoritatea componentelor

Ce este criptarea asimetrică?

Ce este criptarea asimetrică?

Algoritmii de criptare asimetrică utilizează două chei distincte. O cheie este folosită pentru criptare, iar cealaltă pentru decriptare.

Steam Deck: Cum se formatează cardul SD

Steam Deck: Cum se formatează cardul SD

Steam Deck vine în trei opțiuni de stocare: eMMC de 64 GB, SSD NVMe de 256 GB și SSD NVMe de 512 GB. În funcție de biblioteca dvs. de jocuri și de dimensiunea jocurilor