Kennisbank

Simultane multithreading: hoe één chip twee taken tegelijk lijkt uit te voeren

Bijgewerkt: 6 augustus 2026 · 6 min leestijd

Stel je een kok voor in een keuken met één fornuis, maar met vier pitten. Een onervaren kok gebruikt misschien maar één pit tegelijk: eerst de saus, dan pas de groenten, dan het vlees. Een slimme kok zet alles tegelijk op, en gebruikt de wachttijd van de sudderende saus om alvast groenten te snijden. Er is nog steeds maar één keuken en één kok, maar er gebeurt veel meer werk in dezelfde tijd. Simultane multithreading, vaak afgekort tot SMT, is de computerversie van die slimme kok.

In een processorchip zit een core: het onderdeel dat daadwerkelijk berekeningen uitvoert. Elke core bevat allerlei gespecialiseerde rekeneenheden, bijvoorbeeld voor optellen, vermenigvuldigen of het ophalen van gegevens uit het geheugen. Bij gewone software gebruikt één lopend programma, een thread genoemd, die eenheden vaak niet allemaal tegelijk. Er ontstaan lege gaten, bijvoorbeeld terwijl de chip wacht op data uit het geheugen. SMT laat de core op zulke momenten stiekem aan een tweede (of derde, of vierde) taak werken, zodat er minder capaciteit verloren gaat. Het besturingssysteem ziet daardoor twee of meer "processoren" waar er in werkelijkheid maar één fysieke core is.

Wat is het precies?

Om te begrijpen wat SMT toevoegt, helpt het om eerst te kijken naar wat een core normaal doet. Een moderne core voert instructies niet keurig één voor één uit, maar probeert er zoveel mogelijk tegelijk in bewerking te hebben, in een proces dat pijplijning heet: terwijl instructie A wordt uitgerekend, wordt instructie B al voorbereid en instructie C al opgehaald. Toch lukt het een enkele thread zelden om alle beschikbare rekeneenheden voortdurend bezig te houden. Instructies hangen vaak van elkaar af, een voorspelling over welke kant een programma opgaat (een branch) kan fout blijken, of de chip moet wachten op het geheugen. Al die momenten zijn verspilde capaciteit.

SMT lost dit op door de core een tweede complete set "administratie" te geven: een eigen programmateller (die bijhoudt waar een thread gebleven is) en een eigen set registers (de kleine, razendsnelle opslagplekjes waar een thread mee rekent). Deze administratieve onderdelen zijn relatief goedkoop om te verdubbelen. De dure, fysieke rekeneenheden, de caches (snel geheugen dicht bij de core) en de verbindingen naar de rest van de chip blijven echter gedeeld. Op elk klokcyclus kan de core instructies van beide threads naast elkaar inplannen, en zo de gaten van de ene thread opvullen met werk van de andere.

Dit is fundamenteel anders dan een chip met meerdere fysieke cores. Bij multi-core krijgt elke thread zijn eigen volledige set rekeneenheden; bij SMT delen twee threads dezelfde rekeneenheden binnen één core. Daarom levert SMT meestal geen verdubbeling van de snelheid op, eerder een verbetering van 10 tot 30 procent bij geschikte workloads, afhankelijk van het ontwerp. Sommige chips gaan verder dan twee threads per core: IBM's serverprocessors ondersteunen bijvoorbeeld tot acht threads per core, wat vaak wordt aangeduid als SMT8.

Wat wil men ermee bereiken?

Het achterliggende doel is efficiëntie: meer nuttig werk uit dezelfde hoeveelheid siliciumoppervlak, stroomverbruik en productiekosten halen. Rekeneenheden op een chip innemen ruimte in, en die ruimte kost geld, ongeacht of de eenheid daadwerkelijk iets doet. Een core die door SMT beter benut wordt, levert dus meer rekenwerk per geïnvesteerde chipoppervlakte en per watt, zonder dat er een volledig nieuwe core bijgebouwd hoeft te worden.

Dit is vooral aantrekkelijk voor servers die veel onafhankelijke taken tegelijk afhandelen, zoals webverzoeken, databasequery's of virtuele machines. Zulke workloads bestaan uit talloze kleine, van elkaar losstaande threads, precies het scenario waar SMT in uitblinkt. Op een gewone laptop met een handvol actieve programma's is de winst doorgaans kleiner, omdat er simpelweg minder gelijktijdig werk voorhanden is om de gaten mee te vullen.

Belangrijk is wel dat SMT een enkele thread niet sneller maakt; het verhoogt de doorvoer (het totale werk per tijdseenheid), niet noodzakelijk de snelheid van één taak. Sterker nog, omdat twee threads dezelfde caches en rekeneenheden delen, kunnen ze elkaar ook in de weg zitten, waardoor een individuele thread soms zelfs iets trager draait dan wanneer hij de core alleen zou hebben. Fabrikanten proberen die interferentie zo veel mogelijk te beperken, maar volledig voorkomen lukt niet.

Voorbeelden uit de praktijk

Intel introduceerde de eerste veelgebruikte consumentenversie in 2002, onder de merknaam Hyper-Threading, in de Pentium 4- en bijbehorende Xeon-serverchips. Het was destijds tweeweg-SMT: elke fysieke core toonde zich aan het besturingssysteem als twee logische processoren.

IBM bouwde SMT juist verder uit in zijn serverlijn POWER. De POWER5-chip uit 2004 introduceerde tweeweg-SMT, POWER7 (2010) ging naar vier threads per core, en vanaf POWER8 (2014) ondersteunt IBM acht threads per core, een niveau dat in POWER9 en POWER10 is voortgezet.

Sun Microsystems (later overgenomen door Oracle) koos met de UltraSPARC T1-chip, bijgenaamd "Niagara" en uitgebracht in 2005, voor een radicaal andere aanpak: relatief eenvoudige cores met elk vier threads, specifiek ontworpen voor sterk parallelle serverworkloads zoals webservers. De opvolger T2 (2007) breidde dit uit naar acht threads per core.

AMD voegde pas later, vanaf de Zen-architectuur in de Ryzen-processors van 2017, tweeweg-SMT toe aan zijn productlijn, en gebruikt dit sindsdien ook in de EPYC-serverchips.

Een tegenvoorbeeld is minstens zo leerzaam: Apple koos voor de eigen M-serie chips, die sinds 2020 in Mac-computers zitten, bewust tegen SMT. Apple zet liever in op brede, snelle individuele cores en op veel fysieke cores naast elkaar, wat laat zien dat SMT geen vanzelfsprekende keuze is voor elk ontwerp.

Hoe ver is de techniek?

Tweeweg-SMT is inmiddels een volwassen, breed toegepaste techniek: vrijwel alle recente Intel- en AMD-processors voor pc's en servers ondersteunen het. IBM blijft de grens verleggen met acht threads per core in zijn POWER-lijn, gericht op zware, sterk parallelle bedrijfssoftware zoals databases.

Toch is de techniek niet zonder controverse. Rond 2018 en 2019 ontdekten onderzoekers een reeks kwetsbaarheden die specifiek voortkwamen uit het delen van rekeneenheden en caches tussen threads, waaronder een familie aanvallen die bekendstaat als Microarchitectural Data Sampling (MDS), gepubliceerd in 2019, naast varianten van de eerder onthulde Spectre-kwetsbaarheden. Bij deze aanvallen kan een kwaadwillende thread in bepaalde omstandigheden gevoelige data aflezen die eigenlijk bij de andere, gedeelde thread hoort. Dit leidde ertoe dat sommige cloudaanbieders en besturingssystemen aanraadden om Hyper-Threading uit te schakelen op machines waar meerdere, wantrouwende gebruikers dezelfde hardware delen.

Fabrikanten hebben sindsdien via firmware- en microcode-updates mitigaties doorgevoerd, en onderzoek naar veiligere vormen van resourcedeling tussen threads loopt door. Een resterende, eerlijke onzekerheid is dat er een blijvende spanning bestaat tussen de efficiëntiewinst van SMT en de beveiligingsrisico's van gedeelde hardware; verschillende partijen maken hierin nog altijd andere afwegingen, zoals Apple's keuze om SMT helemaal te vermijden laat zien.

Wie werken eraan?

De academische basis werd gelegd door onderzoekers Dean Tullsen, Susan Eggers en Henry Levy van de University of Washington, die in 1995 op de vooraanstaande computerarchitectuurconferentie ISCA het invloedrijke paper "Simultaneous Multithreading: Maximizing On-Chip Parallelism" presenteerden.

Op de markt zijn Intel, AMD en IBM de belangrijkste partijen die SMT daadwerkelijk in commerciële chips bouwen, elk met hun eigen implementatie en aantal ondersteunde threads per core. In de ARM-wereld ligt dit genuanceerder: ARM's eigen Neoverse-serverontwerpen zetten doorgaans niet op SMT maar op veel fysieke cores, terwijl chipontwerper Marvell met de ThunderX2-serverchip uit 2018 wel vierweg-SMT toevoegde.

Op het gebied van beveiliging doen onder meer onderzoeksgroepen aan de Vrije Universiteit Amsterdam en de KU Leuven regelmatig onderzoek naar side-channel-kwetsbaarheden die met gedeelde processorbronnen zoals SMT te maken hebben, werk dat direct bijdraagt aan de mitigaties die chipfabrikanten uiteindelijk doorvoeren.

Verder lezen