Hoe je begrijpt wat een virtuele kern is

📅
🕑 4 minuten lezen

Ja, CPU’s zijn ingewikkelder dan ze op het eerste gezicht lijken. In principe doet de kern van de CPU al het zware werk als het gaat om het verwerken van instructies, maar veel van die kernen bevatten tegenwoordig een reeks kleine geheugenstructuren – cache, registers, buffers – die de snelheid verhogen. De meeste CPU’s hebben meerdere kernen, meestal een even aantal, wat betekent dat meerdere instructiestromen parallel kunnen lopen. Daarom presteren sommige applicaties zo goed met een multi-core chip – dingen zoals gamen of videobewerking profiteren enorm van deze configuratie.

Vroeger hadden CPU’s slechts één kern en verwerkten ze instructies één voor één – nogal primitief naar de huidige maatstaven. Het eenvoudige ontwerp betekende dat ze een instructie afrondden voordat ze naar de volgende gingen. Dit is eenvoudig, maar is vaak traag. Modern CPU-ontwerp maakt echter gebruik van iets dat pipelining heet, waarbij de uitvoering van instructies wordt opgedeeld in fasen die elkaar kunnen overlappen. Zie het als een assemblagelijn: terwijl de ene instructie nog wordt verwerkt, kan de CPU beginnen met de volgende. Dit kan de prestaties aanzienlijk verbeteren, maar het gaat niet altijd van een leien dakje. Soms moeten instructies pauzeren omdat de gegevens niet direct in de cache beschikbaar zijn, wat een zogenaamde pipeline stall of bubble veroorzaakt. Op sommige systemen kan dit prestatieproblemen veroorzaken, maar slimme ontwerpen bevatten secundaire pipelines om de boel draaiende te houden.

Het beste gebruik maken van de pijpleiding

Dit is waar SMT (Simultaneous MultiThreading) op AMD of Intel’s Hyperthreading om de hoek komt kijken. In principe smokkelen ze een tweede instructiestroom naar dezelfde fysieke core, en doen ze alsof het een tweede core is – wat ze een virtuele core noemen. Het is een beetje vreemd, maar het zorgt ervoor dat de CPU zijn resources bezig houdt in plaats van inactief te zijn. In de meeste configuraties kan het inschakelen van deze functie de prestaties met ongeveer 30% verbeteren, hoewel het echt afhangt van wat je draait. Sommige apps – zelfs games of zware apps – zien mogelijk bijna een verdubbeling van de snelheid, maar andere merken er misschien weinig van of presteren zelfs slechter als de software niet geoptimaliseerd is voor multithreading. Ik weet niet zeker waarom het werkt, maar op de ene machine maakte het inschakelen van hyperthreading alles sneller; op een andere veranderde er nauwelijks iets.

Prestaties en problemen

Omdat er niet veel extra circuits nodig zijn, is het toevoegen van virtuele cores geen enorme energievreter – tenminste, vergeleken met een fysieke verdubbeling van het aantal cores. Toch zal de CPU iets meer stroom verbruiken omdat hij meer werk verzet. Intels onderzoek geeft aan dat het inschakelen van hyperthreading de prestaties doorgaans met ongeveer 30% verhoogt, maar dat is een schatting. Afhankelijk van de werklast kunnen sommige apps hun snelheid zelfs verdubbelen, terwijl andere geen voordeel ervaren of, in zeldzame gevallen, een kleine prestatiedaling als de software niet is ontworpen om virtuele cores goed te verwerken.

Hier is het addertje onder het gras: virtuele cores kunnen een ware beveiligingslek veroorzaken. Omdat ze systeembronnen delen, zoals cache en buffers, kan kwaadaardige code timingverschillen waarnemen om gevoelige informatie zoals encryptiesleutels te verzamelen. Side-channel-aanvallen die gebruikmaken van resource monitoring komen niet vaak voor, maar ze zijn wel degelijk bekend. Voor de veiligheid raden sommige beveiligingsexperts aan om hyperthreading uit te schakelen, vooral in gevoelige omgevingen. In sommige configuraties kan het uitschakelen ervan in het BIOS of het gebruik van Intels optie ‘Hyperthreading uitschakelen’ helpen om deze potentiële kwetsbaarheid te verhelpen.

Afronding

Een virtuele core is dus geen standalone CPU-core – het is eerder een slimme truc waarmee één fysieke core twee instructiestromen kan uitvoeren, wat het gebruik en de prestaties verbetert zonder dat er extra hardware nodig is. Maar ja, deze gedeelde resource-opstelling is niet perfect en kan beveiligingsrisico’s met zich meebrengen. Het in- of uitschakelen ervan hangt af van wat je systeem doet – als beveiliging een probleem is, kan het verstandig zijn om het uit te schakelen. Voor de meeste gebruikers is het daarentegen een handige manier om wat meer snelheid uit de CPU te halen.

Samenvatting

  • CPU’s hebben één kern met cache, registers, enz.en vaak meerdere kernen voor multitasking.
  • Moderne CPU’s maken gebruik van pipelining om instructies sneller uit te voeren, maar hierbij kunnen vertragingen optreden.
  • SMT of hyperthreading voegt virtuele cores toe om de pijplijn vol te houden. Dit verbetert de prestaties, maar deelt bronnen.
  • Het inschakelen van hyperthreading kan de prestaties verbeteren, maar wees wel voorzichtig met de beveiliging.
  • Als beveiliging een prioriteit is, kunt u hyperthreading uitschakelen in het BIOS of via de systeeminstellingen.

Over het algemeen helpt inzicht in hoe CPU’s instructies verwerken bij het optimaliseren van prestaties en beveiliging. Het is nog steeds een beetje vreemd dat één core zich voordoet als twee cores, toch? Hopelijk geeft dit een duidelijker beeld van wat er achter de schermen gebeurt – en misschien zelfs wat ideeën om je configuratie te optimaliseren.