Superscalaire processor
Een superscalaire CPU-ontwerp maakt een vorm van parallellisme op instructieniveau binnen een enkele CPU, waardoor er meer werk kan worden gedaan met dezelfde kloksnelheid. Dit betekent dat de CPU meer dan één instructie uitvoert tijdens een klokcyclus door meerdere instructies tegelijkertijd uit te voeren (instructieverzending genaamd) op dubbele functionele eenheden. Elke functionele eenheid is slechts een uitvoeringsbron binnen de CPU-kern, zoals een rekenkundige logische eenheid (ALU), floating point unit (FPU), een bit shifter, of een vermenigvuldigingsfactor.
De meeste superscalaire CPU's zijn ook pipelined, maar het is mogelijk om een niet-pipelined superscalaire CPU of een pipelined niet-superscalaire CPU te hebben.
De superscalaire techniek wordt ondersteund door verschillende kenmerken van de CPU-kern:
- De instructies komen van een geordende instructielijst.
- CPU-hardware kan bepalen welke instructies welke gegevensafhankelijkheden hebben.
- Kan meerdere instructies per klokcyclus lezen
Elke instructie die door een scalaire processor wordt uitgevoerd, verandert één of twee data-items tegelijk, maar elke instructie die door een vectorprocessor wordt uitgevoerd, behandelt veel data-items tegelijk. Een superscalaire processor is een mengeling van deze twee:
- Elke instructie verwerkt één data-item.
- Er zijn meerdere dubbele functionele eenheden binnen elke CPU-kern, zodat meerdere instructies tegelijkertijd onafhankelijke gegevensitems behandelen.
In een superscalaire CPU leest een instructieverkeersleider instructies uit het geheugen en beslist welke instructies parallel kunnen worden uitgevoerd, waarbij hij deze op de meerdere dubbele functionele eenheden die binnen de CPU beschikbaar zijn, verstuurt.
Het ontwerp van Superscalar CPU's is gericht op het verbeteren van de nauwkeurigheid van de instructieverspreider, zodat deze de meerdere functionele eenheden te allen tijde bezig kan houden. Vanaf 2008 zijn alle general-purpose CPU's superscalar, een typische superscalar CPU kan tot 4 ALU's, 2 FPU's en twee SIMD-eenheden bevatten. Als de treindienstleider niet alle units bezet kan houden, zal de prestatie van de CPU lager zijn.
Eenvoudige superscalaire pijpleiding. Door twee instructies tegelijk op te halen en te verzenden, kunnen maximaal twee instructies per cyclus worden uitgevoerd.
Processorbord van een CRAY T3e parallelle computer met vier superscalaire Alpha-processoren
Beperkingen
Prestatieverbetering in het ontwerp van Superscalar CPU's wordt beperkt door twee dingen:
- Het niveau van het ingebouwde parallellisme in de instructielijst
- De complexiteit en de tijdskosten van de verzender en de controle van de gegevensafhankelijkheid.
Zelfs gezien de oneindig snelle afhankelijkheidscontrole binnen een normale superscalaire CPU, als de instructielijst zelf veel afhankelijkheden heeft, zou dit ook de mogelijke prestatieverbetering beperken, dus de hoeveelheid ingebouwd parallellisme in de code is een andere beperking.
Hoe snel de treindienstleider ook rijdt, er is een praktische limiet aan het aantal instructies dat tegelijkertijd kan worden verzonden. Terwijl de vooruitgang van de hardware meer functionele eenheden (bijv. ALU's) per CPU-kern mogelijk maakt, neemt het probleem van het controleren van instructieafhankelijkheden toe tot een limiet dat de haalbare superscalaire verzendingslimiet enigszins klein is. -- Waarschijnlijk in de orde van grootte van vijf tot zes gelijktijdig verzonden instructies.
Alternatieven
- Simultaan multithreading: vaak afgekort tot SMT, is een techniek om de algemene snelheid van superscalaire CPU's te verbeteren. SMT maakt het mogelijk om meerdere onafhankelijke threads van de uitvoering te gebruiken om beter gebruik te maken van de beschikbare middelen in een moderne superscalaire processor.
- Multi-core processoren: superscalaire processoren onderscheiden zich van multi-core processoren doordat de meervoudige redundante functionele eenheden niet hele processoren zijn. Een enkele superscalaire processor bestaat uit geavanceerde functionele eenheden zoals de ALU, integer multiplier, integer shifter, floating point unit (FPU), enz. Er kunnen meerdere versies van elke functionele eenheid zijn, zodat vele instructies parallel kunnen worden uitgevoerd. Dit verschilt van een Multi-core processor die gelijktijdig instructies van meerdere threads verwerkt, één thread per core.
- Pipelined processors: superscalaire processors verschillen ook van een pipelined CPU, waar de meerdere instructies tegelijkertijd in verschillende stadia van uitvoering kunnen zijn.
De verschillende alternatieve technieken sluiten elkaar niet uit - ze kunnen worden (en worden vaak) gecombineerd in een enkele processor, dus het is mogelijk om een multicore CPU te ontwerpen waarbij elke kern een onafhankelijke processor is met meerdere parallelle superscalaire pijpleidingen. Sommige multicore processoren hebben ook vectormogelijkheden.
Gerelateerde pagina's
- Parallelle computergebruik
- Parallellisme op instructieniveau
- Gelijktijdige multithreading (SMT)
- Multi-core processoren
Vragen en antwoorden
V: Wat is superscalaire technologie?
A: Superscalar technologie is een vorm van elementair parallel computergebruik waarbij meer dan één instructie per klokcyclus kan worden verwerkt door meerdere uitvoeringseenheden tegelijk te gebruiken.
V: Hoe werkt superscalar technologie?
A: Superscalaire technologie houdt in dat instructies in volgorde de processor binnenkomen, dat er tijdens de uitvoering wordt gezocht naar gegevensafhankelijkheden en dat er in elke klokcyclus meer dan één instructie wordt geladen.
V: Wat is het verschil tussen scalaire en vectorprocessoren?
A: In een scalaire processor werken instructies gewoonlijk met één of twee gegevens tegelijk, terwijl in een vectorprocessor instructies gewoonlijk met veel gegevens tegelijk werken. Een superscalaire processor is een mix van beide, aangezien elke instructie één gegevensitem verwerkt, maar meer dan één instructie tegelijk wordt uitgevoerd, zodat de processor veel gegevensitems tegelijk verwerkt.
V: Welke rol speelt een nauwkeurige instructie dispatcher in een superscalaire processor?
A: Een nauwkeurige instructie dispatcher is zeer belangrijk voor een superscalaire processor omdat hij ervoor zorgt dat de uitvoeringseenheden altijd bezig zijn met werk dat waarschijnlijk nodig zal zijn. Als de instructie dispatcher niet nauwkeurig is, kan het zijn dat een deel van het werk moet worden weggegooid, waardoor de processor niet sneller is dan een scaler processor.
V: In welk jaar werden alle normale CPU's superscalair?
A: Alle normale CPU's werden superscaler in 2008.
V: Hoeveel ALU's, FPU's en SIMD-eenheden kunnen er op een normale CPU zitten?
A: Op een normale CPU kunnen maximaal 4 ALU's, 2 FPU's en 2 SIMD-eenheden zitten.