Superskalär

En superskalär CPU-design gör en form av parallell beräkning som kallas parallellism på instruktionsnivå i en enda CPU, vilket gör att mer arbete kan utföras vid samma klockfrekvens. Detta innebär att CPU:n utför mer än en instruktion under en klockcykel genom att köra flera instruktioner samtidigt (så kallad instruktionsfördelning) på dubbla funktionella enheter. Varje funktionell enhet är bara en exekveringsresurs i CPU-kärnan, som en aritmetisk logisk enhet (ALU), en enhet för flytande punkter (FPU), en bitskiftare eller en multiplikator.

De flesta superskalära CPU:er är också pipelinerade, men det är möjligt att ha en superskalär CPU som inte är pipelinerad eller en icke-superskalär CPU som är pipelinerad.

Den superskalära tekniken stöds av flera funktioner i CPU-kärnan:

  1. Instruktioner kommer från en ordnad instruktionslista.
  2. CPU-hårdvaran kan räkna ut vilka instruktioner som har vilka databeroenden.
  3. Kan läsa flera instruktioner per klockcykel

Varje instruktion som körs av en skalär processor ändrar en eller två dataelement i taget, medan varje instruktion som körs av en vektorprocessor hanterar många dataelement samtidigt. En superskalär processor är en blandning av de två:

  1. Varje instruktion behandlar ett dataelement.
  2. Det finns flera duplicerade funktionella enheter i varje CPU-kärna, så att flera instruktioner hanterar oberoende dataelement samtidigt.

I en superskalär CPU läser en instruktionsfördelare instruktioner från minnet och bestämmer vilka instruktioner som kan köras parallellt och skickar dem till de många duplicerade funktionella enheterna i CPU:n.

Superskalär CPU-design handlar om att förbättra precisionen hos instruktionsfördelaren och låta den hålla de många funktionella enheterna sysselsatta hela tiden. Från och med 2008 är alla allmännyttiga CPU:er superskalära, en typisk superskalär CPU kan innehålla upp till 4 ALU:er, 2 FPU:er och två SIMD-enheter. Om fördelaren inte kan hålla alla enheter sysselsatta kommer CPU:ns prestanda att bli lägre.

Enkel superskalär pipeline. Genom att hämta och skicka två instruktioner i taget kan högst två instruktioner per cykel utföras.Zoom
Enkel superskalär pipeline. Genom att hämta och skicka två instruktioner i taget kan högst två instruktioner per cykel utföras.

Processorkortet i en parallelldator CRAY T3e med fyra superskalära Alpha-processorer.Zoom
Processorkortet i en parallelldator CRAY T3e med fyra superskalära Alpha-processorer.

Begränsningar

Prestandaförbättringar i Superscalar CPU-design begränsas av två saker:

  1. Nivån på inbyggd parallellism i instruktionslistan.
  2. Komplexiteten och tidsåtgången för dispatcher och kontroll av databeroendet.

Även om oändligt snabb kontroll av beroenden i en normal superskalär CPU, om instruktionslistan i sig har många beroenden, skulle detta också begränsa den möjliga prestandaförbättringen, så mängden inbyggd parallellism i koden är en annan begränsning.

Oavsett hur snabb dispatcherna är finns det en praktisk gräns för hur många instruktioner som kan skickas samtidigt. Även om utvecklingen av maskinvaran kommer att möjliggöra fler funktionella enheter (t.ex. ALU:er) per CPU-kärna, ökar problemet med att kontrollera instruktionsberoenden till en gräns som gör att gränsen för superskalär dispatching blir något liten. -- Troligen i storleksordningen fem till sex samtidigt skickade instruktioner.

Alternativ

  • Simultaneous multithreading, ofta förkortat SMT, är en teknik för att förbättra den totala hastigheten hos superskalära CPU:er. SMT gör det möjligt att utföra flera oberoende trådar för att bättre utnyttja de tillgängliga resurserna i en modern superskalär processor.
  • Flerkärniga processorer: superskalära processorer skiljer sig från flerkärniga processorer genom att de flera redundanta funktionella enheterna inte är hela processorer. En enda superskalär processor består av avancerade funktionella enheter som ALU, heltalsmultiplikator, heltalsskiftare, floating point unit (FPU) osv. Det kan finnas flera versioner av varje funktionell enhet för att möjliggöra utförande av många instruktioner parallellt. Detta skiljer sig från en flerkärnig processor som samtidigt bearbetar instruktioner från flera trådar, en tråd per kärna.
  • Pipelineprocessorer: superskalära processorer skiljer sig också från en pipelineprocessor, där flera instruktioner samtidigt kan vara i olika stadier av utförande.

De olika alternativa teknikerna utesluter inte varandra - de kan kombineras (och kombineras ofta) i en enda processor, så det är möjligt att konstruera en flerkärnig CPU där varje kärna är en oberoende processor med flera parallella superskalära pipelines. Vissa flerkärniga processorer har också vektorkapacitet.

Relaterade sidor

Frågor och svar

F: Vad är superskalär teknik?


S: Superskalär teknik är en form av grundläggande parallell beräkning som gör det möjligt att behandla mer än en instruktion i varje klockcykel genom att använda flera exekveringsenheter samtidigt.

F: Hur fungerar superskalär teknik?


S: Superskalär teknik innebär att instruktionerna kommer in till processorn i tur och ordning, att den letar efter databeroenden medan den körs och laddar mer än en instruktion i varje klockcykel.

F: Vad är skillnaden mellan skalära och vektorprocessorer?


S: I en skalär processor arbetar instruktionerna vanligtvis med en eller två dataelement samtidigt, medan instruktionerna i en vektorprocessor vanligtvis arbetar med många dataelement samtidigt. En superskalär processor är en blandning av båda, eftersom varje instruktion behandlar ett dataelement, men mer än en instruktion körs samtidigt så att många dataelement hanteras samtidigt av processorn.

F: Vilken roll spelar en noggrann instruktionsfördelare i en superskalär processor?


S: En noggrann instruktionsfördelare är mycket viktig för en superskalär processor eftersom den ser till att exekveringsenheterna alltid är upptagna med arbete som sannolikt kommer att behövas. Om instruktionsfördelaren inte är exakt kan en del av arbetet behöva kastas bort, vilket skulle göra den inte snabbare än en skalär processor.

F: Vilket år blev alla normala CPU:er superskalära?


Svar: Alla normala CPU:er blev superskalare 2008.

Fråga: Hur många ALU:er, FPU:er och SIMD-enheter kan det finnas i en normal CPU?


S: På en normal CPU kan det finnas upp till 4 ALU:er, 2 FPU:er och 2 SIMD-enheter.

AlegsaOnline.com - 2020 / 2023 - License CC3