Superscalar

Et superscalar CPU-design gør en form for parallel beregning kaldet Instruction-level parallelism inden for en enkelt CPU, hvilket gør det muligt at udføre mere arbejde ved samme taktfrekvens. Det betyder, at CPU'en udfører mere end én instruktion i løbet af en taktcyklus ved at køre flere instruktioner på samme tid (såkaldt instruktionsdisponering) på dobbelte funktionelle enheder. Hver funktionel enhed er blot en eksekveringsressource i CPU-kernen, som f.eks. en aritmetisk logisk enhed (ALU), en flydende point-enhed (FPU), en bitskifter eller en multiplikator.

De fleste superskalare CPU'er er også pipelined, men det er muligt at have en superskalar CPU uden pipelined eller en ikke-superskalar CPU uden pipelined.

Den superskalære teknik understøttes af flere funktioner i CPU-kernen:

  1. Instruktioner kommer fra en ordnet instruktionsliste.
  2. CPU-hardware kan finde ud af, hvilke instruktioner der har hvilke dataafhængigheder.
  3. Kan læse flere instruktioner pr. clockcyklus

Hver instruktion, der udføres af en skalarprocessor, ændrer et eller to dataelementer ad gangen, mens hver instruktion, der udføres af en vektorprocessor, behandler mange dataelementer på én gang. En superskalær processor er en blanding af de to:

  1. Hver instruktion behandler ét dataelement.
  2. Der er flere dobbelte funktionelle enheder i hver CPU-kerne, så flere instruktioner håndterer uafhængige dataelementer på samme tid.

I en superskalær CPU læser en instruktionsfordeler instruktioner fra hukommelsen og beslutter, hvilke instruktioner der kan køres parallelt og fordeler dem på de mange dobbelte funktionelle enheder, der er til rådighed i CPU'en.

Superscalar CPU-design er fokuseret på at forbedre præcisionen af instruktionsafsenderen og gøre det muligt for den at holde de mange funktionelle enheder beskæftiget hele tiden. Fra 2008 er alle generelle CPU'er superskalære, og en typisk superskalær CPU kan indeholde op til 4 ALU'er, 2 FPU'er og to SIMD-enheder. Hvis dispatcheren ikke kan holde alle enhederne beskæftiget, vil CPU'ens ydeevne blive lavere.

Enkel superskalær pipeline. Ved at hente og sende to instruktioner ad gangen kan der maksimalt udføres to instruktioner pr. cyklus.Zoom
Enkel superskalær pipeline. Ved at hente og sende to instruktioner ad gangen kan der maksimalt udføres to instruktioner pr. cyklus.

Processorkortet i en CRAY T3e parallelcomputer med fire superskalære Alpha-processorerZoom
Processorkortet i en CRAY T3e parallelcomputer med fire superskalære Alpha-processorer

Begrænsninger

Forbedring af ydeevnen i Superscalar CPU-design er begrænset af to ting:

  1. Niveauet af indbygget parallelisme i instruktionslisten
  2. Kompleksiteten og tidsforbruget ved dispatcher- og dataafhængighedskontrol.

Selv med uendelig hurtig afhængighedskontrol i en normal superskalær CPU ville det også begrænse den mulige forbedring af ydeevnen, hvis selve instruktionslisten har mange afhængigheder, så mængden af indbygget parallelitet i koden er en anden begrænsning.

Uanset hvor hurtigt dispatcheren er, er der en praktisk grænse for, hvor mange instruktioner der kan sendes samtidigt. Selv om fremskridt inden for hardware vil gøre det muligt at få flere funktionelle enheder (f.eks. ALU'er) pr. CPU-kerne, øges problemet med at kontrollere instruktionsafhængigheder til en sådan grad, at den opnåelige grænse for superskalar dispatching er noget lille. -- Sandsynligvis i størrelsesordenen fem til seks instruktioner, der sendes samtidigt.

Alternativer

  • Simultaneous multithreading, ofte forkortet SMT, er en teknik til at forbedre den samlede hastighed for superskalare CPU'er. SMT gør det muligt at udføre flere uafhængige tråde for bedre at udnytte de ressourcer, der er til rådighed i en moderne superskalær processor.
  • Multi-core-processorer: Superskalare processorer adskiller sig fra multi-core-processorer ved, at de mange redundante funktionelle enheder ikke er hele processorer. En enkelt superskalær processor består af avancerede funktionelle enheder såsom ALU, heltalsmultiplikator, heltalsskifter, flydepunktsenhed (FPU) osv. Der kan være flere versioner af hver funktionel enhed for at muliggøre parallel udførelse af mange instruktioner. Dette adskiller sig fra en multikerneprocessor, som samtidig behandler instruktioner fra flere tråde, en tråd pr. kerne.
  • Pipelined-processorer: Superscalar-processorer adskiller sig også fra en pipelined CPU, hvor flere instruktioner samtidig kan være i forskellige stadier af udførelse.

De forskellige alternative teknikker udelukker ikke hinanden - de kan (og bliver ofte) kombineret i en enkelt processor, så det er muligt at designe en multicore-CPU, hvor hver kerne er en uafhængig processor med flere parallelle superskalare pipelines. Nogle multicore-processorer omfatter også vektorkapacitet.

Relaterede sider

Spørgsmål og svar

Spørgsmål: Hvad er superskalarteknologi?


A: Superscalar teknologi er en form for grundlæggende parallel databehandling, der gør det muligt at behandle mere end én instruktion i hver clockcyklus ved at bruge flere eksekveringsenheder på samme tid.

Spørgsmål: Hvordan fungerer superscalar teknologi?


Svar: Superscalar teknologi indebærer, at instruktionerne kommer ind i processoren i rækkefølge, at der kigges efter dataafhængigheder, mens den kører, og at der indlæses mere end én instruktion i hver clockcyklus.

Spørgsmål: Hvad er forskellen mellem skalarprocessorer og vektorprocessorer?


Svar: På en skalar-processor arbejder instruktionerne normalt med et eller to dataelementer på én gang, mens instruktionerne på en vektor-processor normalt arbejder med mange dataelementer på én gang. En superskalær processor er en blanding af begge dele, da hver instruktion behandler ét dataelement, men der kører mere end én instruktion på én gang, så processoren behandler mange dataelementer på én gang.

Spørgsmål: Hvilken rolle spiller en præcis instruktionsfordeler i en superskalær processor?


Svar: En nøjagtig instruktionsfordeler er meget vigtig for en superskalær processor, da den sikrer, at eksekveringsenhederne altid er optaget af det arbejde, der sandsynligvis vil være nødvendigt. Hvis instruktionsfordeleren ikke er nøjagtig, kan det være, at noget af arbejdet skal smides væk, hvilket ville gøre den ikke hurtigere end en scaler-processor.

Spørgsmål: I hvilket år blev alle normale CPU'er superskalære?


Svar: Alle normale CPU'er blev superscalere i 2008.

Spørgsmål: Hvor mange ALU'er, FPU'er og SIMD-enheder kan der være på en normal CPU?


Svar: På en normal CPU kan der være op til 4 ALU'er, 2 FPU'er og 2 SIMD-enheder.

AlegsaOnline.com - 2020 / 2023 - License CC3