Vad är en minnesbarriär?

Historiskt har processorer varit perfekt sekventiella maskiner. Detta är mycket logiskt och lätt att förstå men kan vara ett prestandaproblem. Under åren har det gjorts många geniala justeringar av CPU-designer för att få ut så mycket prestanda som möjligt från kiselskivor. En av de mer intressanta är dock utförande i oordning. I out-of-order exekveringsprocessorer behöver instruktioner inte nödvändigtvis utföras i den ordning som de utfärdas.

Stallande i ordning

Det huvudsakliga prestandaproblemet som en in-order CPU stöter på kallas ett pipeline stall. Detta händer när en instruktion är beroende av något minne, men det minnet inte är direkt tillgängligt i ett register. I det här fallet måste CPU:n hitta det värdet i minnet. CPU-cachen kontrolleras först eftersom dessa är den snabbaste minnesnivån. Om värdet inte finns där kontrolleras systemets RAM. Under denna tid måste CPU:n vara inaktiv, eftersom den minnesberoende instruktionen måste slutföras i ordning före följande instruktioner.

Prestandapåverkan av ett rörledningsstopp är kanske inte så illa, men det kan också vara relativt allvarligt. Till exempel kan L1-cachen typiskt returnera ett resultat i storleksordningen 5 CPU-cykler. L2-cachen kan ta 20 cykler, L3 cirka 200 cykler och system-RAM cirka 400 cykler. Med tanke på att en CPU kan arbeta på runt 5GHz, det vill säga 5 miljarder klockcykler per sekund, är inte ens 400 cykler så illa (0,000008%). Men om du har många instruktioner som behöver referera till data längre ner i cachenivåerna, kan den kumulativa effekten orsaka en märkbar avmattning.

Out-of-order exekvering och registerbyte

Out-of-order exekvering är en teknik som gör att schemaläggaren kan ordna om instruktionerna i sin kö. Genom denna omordning kan den välja att prioritera specifika trådar framför andra. Det kan också knuffa tillbaka instruktioner i kön när de har ett databeroende som ännu inte har uppfyllts. Detta förhindrar rörledningsstopp så mycket som möjligt, vilket minimerar tomgångscykler.

Out-of-order exekvering kräver en funktion som kallas registerbyte. CPU:n kan komma åt data som finns i register inom en enda cykel. Register används för att lagra data som läses och skrivs. Det är dock viktigt att se till att datorn i stort ser allt som händer i logisk ordning, inte i ur funktion, CPU-cykeloptimerad ordning. För att möjliggöra detta har CPU:er många fler logiska register än vad CPU-arkitekturen kräver.

Data som behöver skrivas ut, men som har en ”tidigare” instruktion som inte har slutförts än, läggs i ett innehavsregister. Dessa uppgifter överförs inte till ett annat register när beställningen har ordnat sig. Istället ändras namnet på lagringsregistret till det på registret det ska finnas i. Det liknar lite som att förbereda en efterrätt innan huvudrätten men sedan förvara den i kylen tills det är dags att servera den.

Dessa logiska register är helt oadresserade. CPU:n kan bara verkligen adressera de logiska registren som för närvarande delar namnet på arkitekturregistren. Som sagt, CPU är också tillräckligt medveten om dem att om andra omordnade instruktioner förlitar sig på data i det logiska lagringsregistret, kan de använda det snarare än "föråldrade" data i arkitekturregistret vid just den empiriska tidpunkten.

Minnesbarriärer

En minnesbarriär – även kallad membar, minnesstängsel eller staketsinstruktion – är en instruktion i datorkod. Det tillåter en programmerare att upprätthålla en beställningsrestriktion på minnesoperationer som utfärdas före och efter minnesbarriären. Minnesbarriären instruerar CPU-schemaläggaren att säkerställa att alla instruktioner bearbetas före någon instruktion efter barriären. Detta görs för att säkerställa att viktiga operationer genomförs i rätt ordning.

I allmänhet, på moderna datorer, borde detta inte vara nödvändigt. Utförande och byte av register är väletablerade och mogna fält. Ändå kan en minnesbarriär vara till hjälp för äldre, mindre sofistikerade, ur funktion processorer eller användas i kritiska minnesoperationer.

Minnesbarriärer kan komma med viss prestandaskada. Detta beror på att de aktivt förhindrar CPU-schemaläggaren från att optimera specifika delar av instruktionsflödet. Detta ökar risken för att rörledningen stannar.

Slutsats

En minnesbarriär är en instruktion som säkerställer en beställningsbegränsning för minnesoperationer. Detta är viktigt eftersom exekveringsprocessorer som inte är i drift kan ändra ordning på specifika instruktioner. Även om registerbyte är väletablerat som en metod för att säkerställa minnesintegritet i den här miljön, kan det vara bra att säkerställa det manuellt.

Minnesbarriären tvingar CPU-schemaläggaren att säkerställa att instruktionerna slutförs före någon instruktion efter barriären. Detta förhindrar att minnesoperationer ordnas om. Det hindrar också processorn från att optimera instruktionsflödet, vilket kan påverka prestandan.


Hur man klona en hårddisk

Hur man klona en hårddisk

I den moderna digitala tidsåldern, där data är en värdefull tillgång, kan kloning av en hårddisk på Windows vara en avgörande process för många. Denna omfattande guide

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Står du inför felmeddelandet när du startar din dator som säger att drivrutinen WUDFRd inte kunde laddas på din dator?

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Upplever du NVIDIA GeForce-felkod 0x0003 på ditt skrivbord? Om ja, läs bloggen för att hitta hur du åtgärdar det här felet snabbt och enkelt.

Vad är SMPS?

Vad är SMPS?

Lär dig vad som är SMPS och innebörden av olika effektivitetsklasser innan du väljer en SMPS för din dator.

Varför slås inte min Chromebook på

Varför slås inte min Chromebook på

Få svar på frågan Varför slås inte min Chromebook på? I den här användbara guiden för Chromebook-användare.

Hur man rapporterar nätfiskebedrägerier till Google

Hur man rapporterar nätfiskebedrägerier till Google

Lär dig hur du rapporterar en bedragare till Google för att hindra dem från att lura andra med den här guiden.

Roomba stannar, sticker och vänder sig om – fixa

Roomba stannar, sticker och vänder sig om – fixa

Åtgärda ett problem där din Roomba robotdammsugare stannar, fastnar och fortsätter att vända sig om.

Hur man ändrar grafikinställningar på Steam Deck

Hur man ändrar grafikinställningar på Steam Deck

Steam Deck erbjuder en robust och mångsidig spelupplevelse precis vid dina fingertoppar. Dock för att optimera ditt spelande och säkerställa bästa möjliga

Vad är isoleringsbaserad säkerhet?

Vad är isoleringsbaserad säkerhet?

Vi skulle fördjupa oss i ett ämne som blir allt viktigare i världen av cybersäkerhet: isoleringsbaserad säkerhet. Detta förhållningssätt till

Hur man använder Auto Clicker för Chromebook

Hur man använder Auto Clicker för Chromebook

Idag skulle jag fördjupa dig i ett verktyg som kan automatisera repetitiva klickuppgifter på din Chromebook: Auto Clicker. Detta verktyg kan spara tid och