Het aantal processen dat een CPU *echt* tegelijkertijd kan uitvoeren, wordt beperkt door het aantal fysieke cores het heeft.
Hier is een overzicht:
* Fysieke kernen: Een fysieke kern is een complete verwerkingseenheid binnen de CPU. Als je een CPU hebt met 4 fysieke kernen, kan deze echt 4 verschillende instructies (of delen van 4 verschillende processen) *op precies hetzelfde moment* uitvoeren.
* Draden (logische kernen): Moderne CPU's maken vaak gebruik van een technologie die simultane multithreading (SMT) wordt genoemd , waarbij Intel's implementatie Hyper-Threading heet . Hierdoor kan een enkele fysieke kern als twee logische kernen (threads) voor het besturingssysteem verschijnen. Hoewel het de prestaties niet *verdubbelt*, zorgt het er wel voor dat de kern inactieve delen van zichzelf efficiënter kan gebruiken. Zie het als een enkele chef-kok (fysieke kern) die tegelijkertijd aan meerdere gerechten (garens) kan werken door tussen de gerechten te schakelen wanneer er één taak wacht (bijvoorbeeld wachten tot het water kookt). Een 4-core CPU met Hyper-Threading verschijnt als 8 logische kernen.
* Besturingssysteem en processen: Het besturingssysteem beheert alle processen en threads die op de computer worden uitgevoerd. Het schakelt snel tussen de twee, waardoor elk een klein stukje CPU-tijd krijgt (dit wordt time-sharing of multitasking genoemd). Dit creëert de *illusie* van het tegelijkertijd uitvoeren van veel processen, ook al werkt de CPU op elk moment slechts actief aan een beperkt aantal processen.
Samengevat:
* Een CPU kan werkelijk een aantal processen tegelijkertijd uitvoeren, gelijk aan het aantal *fysieke cores*.
* Hyper-Threading (of SMT) *verbetert* het vermogen van elke fysieke kern om meer werk te verwerken door meerdere *threads* gelijktijdig uit te voeren.
* Het besturingssysteem beheert een veel groter aantal processen en threads dan de CPU-kernen heeft, waardoor de schijn van echte gelijktijdigheid wordt gecreëerd door snelle contextwisseling.
Voorbeeld:
Een CPU met 8 fysieke cores en Hyper-Threading (16 logische cores) kan:
* *Echt* voer 8 verschillende instructies tegelijkertijd uit (één op elke fysieke kern).
* * Effectief* kan tot 16 threads tegelijk verwerken, waardoor de bronnen van elke kern beter worden benut.
* *Lijkt* honderden of duizenden processen gelijktijdig uit te voeren omdat het besturingssysteem snel tussen deze processen schakelt.
Belangrijke overwegingen:
* Knelpunten: Andere factoren, zoals RAM, schijf-I/O en netwerksnelheid, kunnen ook de algehele prestaties van een systeem beperken, zelfs als de CPU krachtig is.
* Werklast: Sommige processen zijn CPU-intensiever dan andere. Een systeem kan mogelijk veel lichtgewicht processen tegelijkertijd 'afhandelen', maar worstelt met een paar zeer veeleisende processen.
Daarom is het antwoord technisch gezien het aantal *fysieke cores*, maar het is belangrijk om de rol van threads en het besturingssysteem te begrijpen bij het creëren van de perceptie dat er veel processen tegelijkertijd worden uitgevoerd. |