Superskalar

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 12. december 2020; verifikation kræver 1 redigering .

Superscalar processor ( eng.  superscalar processor ) - en processor , der understøtter den såkaldte parallelisme på instruktionsniveauet (det vil sige en processor, der er i stand til at udføre flere instruktioner samtidigt) på grund af inklusion af flere identiske funktionelle noder (såsom ALU , FPU , multiplikator () i dens computerkerne heltalsmultiplikator ), shifter ( heltalsskifter ) og andre enheder). Planlægningen af ​​udførelsen af ​​instruktionsstrømmen udføres dynamisk af beregningskernen (ikke statisk af compileren ).

Måder at forbedre ydeevnen, der kan bruges sammen:

Når du bruger en pipeline, forbliver antallet af noder det samme; ydelsesforøgelse opnås på grund af den samtidige drift af noder, der er ansvarlige for forskellige stadier af behandlingsinstruktioner af en tråd . Når du bruger superscalar, opnås stigningen i ydeevnen på grund af den samtidige drift af et større antal identiske noder, der uafhængigt behandler instruktioner fra en tråd (herunder flere pipelines). Når du bruger flere kerner, udfører hver kerne instruktionerne fra en separat tråd, og hver af dem kan være superskalær og/eller pipelinet. Når du bruger flere processorer, kan hver processor være multi-core.

I en superskalar processor hentes en instruktion fra instruktionsstrømmen (i hukommelsen), tilstedeværelsen eller fraværet af en instruktions dataafhængighed af andre instruktioner bestemmes, og derefter udføres instruktionen. Samtidig kan der i løbet af en cyklus udføres flere uafhængige instruktioner.

Ifølge Flynns klassifikation klassificeres single-core superscalar-processorer som SISD- processorer ( engelsk  s ingle instruction stream, s ingle data stream  - one instruction stream, one data stream). Lignende processorer, der understøtter instruktioner til at arbejde med korte vektorer, kan henvises til SIMD -gruppen ( engelsk  s ingle instruktionsstrøm, flere datastrømme - én  strøm af instruktioner, flere datastrømme) . Multi- core superscalar processorer tilhører MIMD - gruppen ( eng.  flere instruktionsstrømme , flere datastrømme -  flere instruktionsstrømme, flere datastrømme) .

Historie

Verdens første superskalarcomputer var CDC 6600 (1964) udviklet af Seymour Cray [1] . I USSR blev Elbrus -computeren , som blev udviklet i 1973-1979 ved ITMiVT , betragtet som den første superskalar-computer . Den væsentligste strukturelle forskel mellem Elbrus og CDC 6600 (bortset fra et helt andet instruktionssystem, der er synligt for programmøren - staktypen ) var, at alle noder i den var pipelinet, som i moderne superskalære mikroprocessorer . Baseret på dette faktum erklærede B. A. Babayan sovjetiske computeres prioritet i spørgsmålet om at bygge superskalære computere, men Control Data- maskinen , CDC 7600 ( engelsk ), som allerede fulgte CDC 6600, blev oprettet i 1969, 4 år før starten af udvikling " Elbrus ", havde en conveyorization af aktuatorer. Derudover udgav IBM lidt tidligere (i 1967) IBM 360/91-maskinen , som bruger udelukket kørsel , registeromdøbning og pipelining af aktuatorer [2] .

De  første kommercielle superscalar single-chip mikroprocessorer var Motorolas 1988 MC88100 mikroprocessor, 1989 Intel i960CA mikroprocessoren og 1990 AMD 29000 serie 29050 mikroprocessoren . Den første kommercielt tilgængelige superscalar mikroprocessor var i960 , udgivet i 1988. I 1990'erne blev Intel den vigtigste producent af superskalære mikroprocessorer.

Alle processorer til generelle formål, der er udviklet siden omkring 1998, undtagen dem, der er brugt i lavenergienheder , indlejrede systemer og batteridrevne enheder , er superskalære.

P5 - mikroarkitekturen Pentium-processorer var de første x86 superskalære processorer . Nx586- , P6 Pentium Pro- og AMD K5 - mikroprocessorerne var de første superskalære processorer, der konverterede x86 -instruktioner til intern kode, som de derefter udførte.

Beskrivelse

Hvis flere instruktioner behandlet af pipelinen under driften af ​​processoren er uafhængige , kan kernen udføre dem samtidigt. I superskalære systemer træffes beslutningen om at starte en instruktion til udførelse af processorkernen selv, hvilket kræver mange ressourcer. I senere systemer, såsom Elbrus -3 og Itanium , bruges statistisk planlægning, det vil sige, at compileren beslutter, hvilke instruktioner der skal udføres på samme tid ; compileren finder uafhængige instruktioner og kombinerer dem til én lang instruktion ( VLIW-arkitektur ).

Den superskalære processorknude, kaldet instruktionsdispatcheren (  ID ) , er ansvarlig for:

Node ID skal fordele instruktioner mellem noder, så noderne kører uden nedetid. De første superskalarprocessorer havde to ALU'er og en FPU hver . Moderne processorer indeholder flere noder. For eksempel indeholder PowerPC 970-processoren fire ALU'er, to FPU'er og to SIMD- noder . Hvis node-id'et ikke klarer sit arbejde (ikke indlæser alle noderne), vil ydeevnen af ​​den superskalære processor ikke være bedre end ydeevnen af ​​den skalære processor .

En superskalar processor er normalt i stand til at udføre mere end én instruktion pr. clock-cyklus . Samtidig gør evnen til at behandle flere instruktioner på samme tid ikke arkitekturen superskalær, da samtidighed kan opnås ved andre metoder: ved hjælp af en pipeline , ved hjælp af flere kerner og/eller brug af flere processorer .

Implementeringer

Processorer , der understøtter superskalar:

Arkitektur Første implementering År Udvikler Andre udviklere af superskalære computere på denne arkitektur Bemærk
CDC6600 CDC6600 1964 Control Data Corporation Kommandoudførelsespipeline, flere eksekveringsenheder (men ikke pipelinet).
CDC7600 CDC7600 1969 Control Data Corporation Fuld pipelining - både udførelse af kommandoer og selve aktuatorerne.
IBM System/360 Model 91 IBM 360/91 1967 IBM Fuld pipelining med dynamisk registeromdøbning, udelukket udførelse af instruktioner og grenforudsigelse
Elbrus Elbrus -1 1979 ITMiVT
i960 i960 1988 Intel
Am29.000 Am29050 1990 AMD
SPARC SuperSPARC 1992 Sun Microsystems Fujitsu , MCST
m88k , m68k MC88110 , MC68060 1992 Motorola
x86 Pentium 1993 Intel AMD , VIA
MIPS 8000 kr 1994 MIPS teknologier Toshiba
ARM Cortex A8 ARM

Acceleration af beregninger

Superscalar computere bruger en række metoder til at fremskynde beregninger, der primært er karakteristiske for dem, men sådanne teknikker kan bruges i andre typer arkitekturer:

Der bruges også generelle teknikker til at øge produktiviteten, som også bruges i andre typer computere:

Skalære og superskalære processorer

Når en instruktion udføres, behandler den skalære processor et eller to tal ( skalarer ). Når en instruktion udføres, behandler vektorprocessoren flere tal ( vektor ). Når flere instruktioner udføres på samme tid, behandler superskalarprocessoren flere tal (flere skalarer) samtidigt.

Begrænsninger

Stigningen i ydeevnen af ​​superskalære processorer er begrænset af følgende faktorer:

  1. grad af intern parallelitet af instruktioner;
  2. kompleksiteten i at finde afhængigheder mellem instruktioner og den tid brugt på denne søgning; kompleksiteten af ​​registeromdøbningsordningen og den tid, der bruges på omdøbning ;
  3. behandling af afdelingsinstruktioner.

Muligheden for samtidig udførelse af instruktioner afhænger af graden af ​​intern parallelitet af instruktioner - af hvor meget nogle instruktioner afhænger af andre. En instruktion afhænger af en anden instruktion, hvis den bruger ressourcer, der også bruges af en anden instruktion, eller hvis den bruger resultatet af en anden instruktion. Samtidig udførelse er mulig i tilfælde, hvor programinstruktioner er uafhængige af hinanden. For eksempel kan instruktionen " a = b + c" og instruktionen " d = e + f" udføres på samme tid, da resultatet af beregningen af ​​den ene af dem ikke afhænger af resultatet af beregningen af ​​den anden. " a = b + c"-instruktionen og " b = e + f"-instruktionen er indbyrdes afhængige og kan ikke udføres på samme tid, da resultatet af deres udførelse afhænger af, hvilken der udføres først.

Med en stigning i antallet af samtidigt udførte instruktioner øges den tid, der bruges på at kontrollere deres indbyrdes afhængighed, hurtigt, og disse omkostninger bør ikke overstige en clock-cyklus. Der bruges tid på at køre de logiske porte , der implementerer testkredsløbet, og overføre data mellem portene. Det er ikke muligt at reducere forsinkelser, selv ved at ændre den teknologiske proces . Effekttab , kredsløbskompleksitet og signalforsinkelser ved gates tillader ikke at øge antallet af samtidigt transmitterede instruktioner over otte.

Se også

Noter

  1. Handlers klassifikation . Parallel.ru - Informations- og analysecenter for Parallel Computing:. Hentet 16. august 2009. Arkiveret fra originalen 26. februar 2012.
  2. Se http://domino.research.ibm.com/tchjr/journalindex.nsf/ResVolumes!OpenView&Start=1&Count=1000&Expand=42.1#42.1 .

Litteratur