Wat is een geheugenbarrière?

Historisch gezien waren CPU's perfect sequentiële machines. Dit is zeer logisch en gemakkelijk te begrijpen, maar kan een prestatieprobleem zijn. Door de jaren heen zijn er veel ingenieuze aanpassingen aan CPU-ontwerpen gedaan om zoveel mogelijk prestaties uit siliciumwafels te halen. Een van de interessantere is echter de uitvoering buiten de orde. Bij out-of-order CPU's hoeven instructies niet noodzakelijkerwijs te worden uitgevoerd in de volgorde waarin ze zijn uitgegeven.

Op volgorde wachten

Het belangrijkste prestatieprobleem waar een in-order CPU tegenaan loopt, wordt een pijplijnstalling genoemd. Dit gebeurt wanneer een instructie afhankelijk is van een bepaald geheugen, maar dat geheugen niet direct beschikbaar is in een register. In dit geval moet de CPU die waarde in het geheugen vinden. De CPU-cache wordt eerst gecontroleerd, omdat dit de snelste geheugenlaag is. Als de waarde er niet is, wordt het systeem-RAM gecontroleerd. Gedurende deze tijd moet de CPU inactief zijn, aangezien de geheugenafhankelijke instructie vóór de volgende instructies moet worden voltooid.

De prestatie-impact van het vastlopen van een pijpleiding is misschien niet zo erg, maar het kan ook relatief ernstig zijn. De L1-cache kan bijvoorbeeld doorgaans een resultaat retourneren in de orde van grootte van 5 CPU-cycli. De L2-cache kan 20 cycli duren, L3 ongeveer 200 cycli en systeem-RAM ongeveer 400 cycli. Aangezien een CPU rond de 5 GHz kan werken, dat zijn 5 miljard klokcycli per seconde, zijn zelfs 400 cycli niet zo slecht (0,000008%). Maar als u veel instructies hebt die moeten verwijzen naar gegevens verderop in de cachelagen, kan het cumulatieve effect een merkbare vertraging veroorzaken.

Out-of-Order Execution en register hernoemen

Out-of-order uitvoering is een techniek waarmee de planner de instructies in zijn wachtrij opnieuw kan ordenen. Door deze herordening kan het ervoor kiezen om specifieke threads voorrang te geven boven andere. Het kan ook instructies terug in de wachtrij duwen wanneer ze een gegevensafhankelijkheid hebben waaraan nog niet is voldaan. Dit voorkomt zo veel mogelijk het vastlopen van pijpleidingen en minimaliseert inactieve cycli.

Out-of-order uitvoering vereist een functie genaamd register hernoemen. De CPU heeft binnen een enkele cyclus toegang tot gegevens in registers. Registers worden gebruikt om gegevens op te slaan die worden gelezen en geschreven. Het is echter essentieel om ervoor te zorgen dat de computer als geheel alles in de logische volgorde ziet gebeuren, niet in de afwijkende, voor de CPU-cyclus geoptimaliseerde volgorde. Om dit mogelijk te maken, hebben CPU's veel meer logische registers dan de CPU-architectuur vereist.

Gegevens die moeten worden uitgeschreven, maar een “eerdere” instructie hebben die nog niet is voltooid, worden in een houdregister geplaatst. Deze gegevens worden niet overgedragen naar een ander register wanneer de bestelling is afgehandeld. In plaats daarvan wordt de naam van het bewaarregister veranderd in die van het register waarin het zou moeten staan. Dit lijkt enigszins op het bereiden van een dessert voor het hoofdgerecht, maar het vervolgens in de koelkast bewaren tot het tijd is om het te serveren.

Deze logische registers zijn geheel ongeadresseerd. De CPU kan alleen echt de logische registers aanspreken die momenteel de naam van de architectonische registers delen. Dat gezegd hebbende, de CPU is er ook voldoende van op de hoogte dat als andere opnieuw geordende instructies afhankelijk zijn van de gegevens in het logische bewaarregister, ze deze kunnen gebruiken in plaats van de "verouderde" gegevens in het architecturale register op dat specifieke empirische tijdstip.

Geheugenbarrières

Een memory barrier – ook wel membar, memory fence of fence instruction genoemd – is een instructie in computercode. Hiermee kan een programmeur een ordeningsbeperking afdwingen voor geheugenbewerkingen die voor en na de geheugenbarrière worden uitgegeven. De geheugenbarrière instrueert de CPU-scheduler om ervoor te zorgen dat alle instructies worden verwerkt vóór elke instructie na de barrière. Dit wordt gedaan om ervoor te zorgen dat belangrijke bewerkingen in de juiste volgorde worden voltooid.

Over het algemeen zou dit op moderne computers niet nodig moeten zijn. Out-of-order uitvoering en hernoemen van registers zijn gevestigde en volwassen velden. Desalniettemin kan een geheugenbarrière nuttig zijn voor oudere, minder geavanceerde processors die niet in orde zijn of die worden gebruikt bij kritieke geheugenbewerkingen.

Geheugenbarrières kunnen prestatieverlies met zich meebrengen. Dit komt omdat ze actief voorkomen dat de CPU-planner specifieke delen van de instructiestroom optimaliseert. Dit vergroot de kans op het vastlopen van een pijpleiding.

Conclusie

Een geheugenbarrière is een instructie die zorgt voor een ordeningsbeperking op geheugenbewerkingen. Dit is belangrijk omdat uitvoeringsprocessors die niet in de juiste volgorde werken specifieke instructies opnieuw kunnen ordenen. Hoewel het hernoemen van registers een gevestigde methode is om de geheugenintegriteit in deze omgeving te waarborgen, kan het nuttig zijn om dit handmatig te doen.

De geheugenbarrière dwingt de CPU-scheduler om ervoor te zorgen dat instructies worden voltooid vóór enige instructie na de barrière. Dit voorkomt dat geheugenbewerkingen opnieuw worden geordend. Het voorkomt ook dat de CPU de instructiestroom optimaliseert, wat de prestaties kan beïnvloeden.



Leave a Comment

Hoe een harde schijf te klonen

Hoe een harde schijf te klonen

In het moderne digitale tijdperk, waarin gegevens een waardevol bezit zijn, kan het klonen van een harde schijf op Windows voor velen een cruciaal proces zijn. Deze uitgebreide gids

Hoe repareer ik het stuurprogramma WUDFRd kan niet worden geladen op Windows 10?

Hoe repareer ik het stuurprogramma WUDFRd kan niet worden geladen op Windows 10?

Krijgt u tijdens het opstarten van uw computer de foutmelding dat het stuurprogramma WUDFRd niet op uw computer kan worden geladen?

Hoe u NVIDIA GeForce Experience-foutcode 0x0003 kunt oplossen

Hoe u NVIDIA GeForce Experience-foutcode 0x0003 kunt oplossen

Ervaar je NVIDIA GeForce-ervaring met foutcode 0x0003 op je desktop? Zo ja, lees dan de blog om te zien hoe u deze fout snel en eenvoudig kunt oplossen.

3D-printen: problemen oplossen met het buigen van de onderkant van de print (olifantenpoot)

3D-printen: problemen oplossen met het buigen van de onderkant van de print (olifantenpoot)

Het kan vervelend zijn om te maken te krijgen met buigingen aan de onderkant van een afdruk. Hier ziet u hoe u de olifantenpoot kunt repareren in 3D-printen.

Basisprincipes van 3D-printen: hechting van het printerbed

Basisprincipes van 3D-printen: hechting van het printerbed

Leren over 3D-printen? Dit is wat u moet weten over ahesie van het printerbed.

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

Fix Roku speelt geen audio of video af

Fix Roku speelt geen audio of video af

Als Roku geen audio of video afspeelt, biedt deze gids voor probleemoplossing u een reeks handige oplossingen om het probleem op te lossen.

Fix Roku-kanaal kon inhoud niet laden

Fix Roku-kanaal kon inhoud niet laden

Als Roku een foutmelding geeft dat de inhoud op de kanalen niet kan worden geladen, kunt u uw apparaat opnieuw opstarten of een nieuw account maken.

Oplossing: Chromebook laadt geen afdrukvoorbeeld

Oplossing: Chromebook laadt geen afdrukvoorbeeld

Als uw Chromebook het afdrukvoorbeeld niet kan laden, start u uw laptop, printer en router opnieuw op. Verwijder bovendien de printer en installeer deze opnieuw.

Een GPU verwijderen van een Windows-pc in 2023

Een GPU verwijderen van een Windows-pc in 2023

Moet u de GPU van uw pc verwijderen? Ga met me mee terwijl ik uitleg hoe je een GPU van je pc verwijdert in deze stapsgewijze handleiding.