Superskalär

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 12 december 2020; verifiering kräver 1 redigering .

Superscalar processor ( eng.  superscalar processor ) - en processor som stöder den så kallade parallellismen på instruktionsnivån (det vill säga en processor som kan utföra flera instruktioner samtidigt) på grund av inkluderingen av flera identiska funktionella noder (såsom ALU , FPU , multiplikator () i dess beräkningskärna heltalsmultiplikator ), shifter ( heltalsskiftare ) och andra enheter). Schemaläggningen av exekveringen av instruktionsströmmen görs dynamiskt av beräkningskärnan (inte statiskt av kompilatorn ).

Sätt att förbättra prestanda som kan användas tillsammans:

När du använder en pipeline förblir antalet noder detsamma; prestandaökning uppnås på grund av den samtidiga driften av noder som ansvarar för olika stadier av bearbetningsinstruktioner för en tråd . När du använder superskalär uppnås ökningen av prestanda på grund av den samtidiga driften av ett större antal identiska noder som oberoende behandlar instruktioner från en tråd (inklusive fler pipelines). När du använder flera kärnor, utför varje kärna instruktionerna för en separat tråd, och var och en av dem kan vara superskalär och/eller pipelined. När du använder flera processorer kan varje processor vara flerkärnig.

I en superskalär processor hämtas en instruktion från instruktionsströmmen (i minnet), närvaron eller frånvaron av en instruktions databeroende av andra instruktioner bestäms, och sedan exekveras instruktionen. Samtidigt kan flera oberoende instruktioner utföras under en cykel.

Enligt Flynns klassificering klassificeras enkärniga superskalära processorer som SISD - processorer ( engelsk  s ingle instruction stream, s ingle data stream  - one instruction stream, one data stream). Liknande processorer som stöder instruktioner för att arbeta med korta vektorer kan hänvisas till SIMD -gruppen ( Engelska  s ingle instruktionsström , flera dataströmmar -  en ström av instruktioner, flera dataströmmar) . Flerkärniga superskalära processorer tillhör MIMD - gruppen ( eng.  flera instruktionsströmmar, flera dataströmmar - flera instruktionsströmmar ,  flera dataströmmar) .

Historik

Världens första superskalära dator var CDC 6600 (1964) utvecklad av Seymour Cray [1] . I Sovjetunionen ansågs Elbrus -datorn , som utvecklades 1973-1979 vid ITMiVT , som den första superskalärdatorn . Den huvudsakliga strukturella skillnaden mellan Elbrus och CDC 6600 (förutom ett helt annat instruktionssystem som är synligt för programmeraren - stacktypen ) var att alla noder i den var pipelinerade, som i moderna superskalära mikroprocessorer . Baserat på detta faktum förklarade B. A. Babayan sovjetdatorernas prioritet i frågan om att bygga superskalära datorer, men kontrolldatamaskinen , CDC 7600 ( engelska ), som redan följde CDC 6600, skapades 1969, 4 år före starten av utveckling " Elbrus ", hade en transportörisering av ställdon. Dessutom, lite tidigare (1967), släppte IBM IBM 360/91 -maskinen , som använder out-of-order exekvering , registerbyte och pipelining av manöverdon [2] .

De  första kommersiella superskalära enchipsmikroprocessorerna var Motorolas 1988 MC88100 mikroprocessor, 1989 Intel i960CA mikroprocessor och 1990 AMD 29000 serie 29050 mikroprocessor . Den första kommersiellt tillgängliga superskalära mikroprocessorn var i960 , som släpptes 1988. På 1990-talet blev Intel huvudtillverkaren av superskalära mikroprocessorer.

Alla processorer för allmänna ändamål som utvecklats sedan omkring 1998, förutom de som används i lågeffektenheter , inbyggda system och batteridrivna enheter , är superskalära.

P5 - mikroarkitekturen Pentium-processorer var de första x86 superskalära processorerna . Mikroprocessorerna Nx586 , P6 Pentium Pro och AMD K5 var de första superskalära processorerna som konverterade x86 -instruktioner till intern kod som de sedan exekverade.

Beskrivning

Om flera instruktioner som behandlas av pipelinen under driften av processorn är oberoende , kan kärnan exekvera dem samtidigt. I superskalära system fattas beslutet att lansera en instruktion för exekvering av processorkärnan själv, vilket kräver mycket resurser. I senare system, som Elbrus -3 och Itanium , används statistisk planering, det vill säga kompilatorn bestämmer vilka instruktioner som ska utföras samtidigt ; kompilatorn hittar oberoende instruktioner och kombinerar dem till en lång instruktion ( VLIW-arkitektur ).

Den superskalära processornoden, kallad instruktionsavsändaren  ( ID ), är ansvarig för:

Nod-ID ska distribuera instruktioner mellan noder så att noderna körs utan driftstopp. De första superskalära processorerna hade två ALU och en FPU vardera . Moderna processorer innehåller fler noder. Till exempel innehåller PowerPC 970-processorn fyra ALU:er, två FPU:er och två SIMD- noder . Om nod-ID:t misslyckas med att göra sitt jobb (inte laddar alla noder), kommer den superskalära processorns prestanda inte att vara bättre än den skalära processorns prestanda .

En superskalär processor är vanligtvis kapabel att utföra mer än en instruktion per klockcykel . Samtidigt gör förmågan att bearbeta flera instruktioner samtidigt inte arkitekturen superskalär, eftersom samtidighet kan uppnås med andra metoder: med hjälp av en pipeline , med hjälp av flera kärnor och/eller med flera processorer .

Implementeringar

Processorer som stöder superskalär:

Arkitektur Första implementeringen År Utvecklaren Andra utvecklare av superskalära datorer på denna arkitektur Notera
CDC6600 CDC6600 1964 Control Data Corporation Kommandoexekveringspipeline, flera exekveringsenheter (men inte pipelined).
CDC7600 CDC7600 1969 Control Data Corporation Full pipelining - både utförande av kommandon och själva ställdonen.
IBM System/360 modell 91 IBM 360/91 1967 IBM Fullständig pipelining med dynamiskt registerbyte, utförande av instruktioner i oordning och grenförutsägelse
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 R8000 1994 MIPS-teknik Toshiba
ÄRM Cortex A8 ÄRM

Acceleration av beräkningar

Superskalära datorer använder ett antal metoder för att påskynda beräkningar som främst är karakteristiska för dem, men sådana tekniker kan användas i andra typer av arkitekturer:

Dessutom används allmänna tekniker för att öka produktiviteten, som också används i andra typer av datorer:

Skalära och superskalära processorer

När en instruktion utförs, bearbetar den skalära processorn ett eller två tal ( skalärer ). När en instruktion utförs, bearbetar vektorprocessorn flera tal ( vektor ). När flera instruktioner exekveras samtidigt, bearbetar superskalärprocessorn samtidigt flera tal (flera skalärer).

Begränsningar

Ökningen av prestanda hos superskalära processorer begränsas av följande faktorer:

  1. grad av intern parallellism av instruktioner;
  2. komplexiteten i att hitta beroenden mellan instruktioner och tiden som spenderas på denna sökning; komplexiteten i systemet för byte av register och den tid som ägnas åt att byta namn;
  3. bearbeta greninstruktioner.

Möjligheten till samtidig utförande av instruktioner beror på graden av inre parallellism av instruktioner - på hur mycket vissa instruktioner beror på andra. En instruktion beror på en annan instruktion om den använder resurser som också används av en annan instruktion, eller om den använder resultatet av en annan instruktion. Samtidig exekvering är möjlig i fall där programinstruktioner är oberoende av varandra. Till exempel kan instruktionen " a = b + c" och instruktionen " d = e + f" exekveras samtidigt, eftersom resultatet av beräkningen av en av dem inte beror på resultatet av beräkningen av den andra. " a = b + c"-instruktionen och " b = e + f"-instruktionen är beroende av varandra och kan inte utföras samtidigt, eftersom resultatet av deras exekvering beror på vilken som exekveras först.

Med en ökning av antalet samtidigt exekverade instruktioner ökar den tid som läggs på att kontrollera deras ömsesidiga beroenden snabbt, och dessa kostnader bör inte överstiga en klockcykel. Tid går åt till att köra de logiska grindarna som implementerar testkretsen och överföra data mellan grindarna. Det är inte möjligt att minska förseningarna ens genom att förändra den tekniska processen . Effektförlust , kretskomplexitet och signalfördröjningar vid grindarna tillåter inte ökning av antalet samtidigt överförda instruktioner över åtta.

Se även

Anteckningar

  1. Handlarens klassificering . Parallel.ru - Informations- och analyscentrum för parallellberäkning:. Hämtad 16 augusti 2009. Arkiverad från originalet 26 februari 2012.
  2. Se http://domino.research.ibm.com/tchjr/journalindex.nsf/ResVolumes!OpenView&Start=1&Count=1000&Expand=42.1#42.1 .

Litteratur