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) .
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.
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 .
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 |
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:
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).
Ökningen av prestanda hos superskalära processorer begränsas av följande faktorer:
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.
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |