Vad är superskalär?

May 18

En superskalär processor självständigt kan exekvera flera instruktioner på en gång under en enda klockcykel. Den innehåller redundanta resurser utförande, till exempel flera flyttalsheter, aritmetiska logiska enheter och heltal reglage. Denna typ av processor är avsedd för parallella beräkningar och spekulativa utförande utan behov av speciell programvara. Det kan förbättra exekveringshastighet hos många processorintensiva applikationer genom att manipulera och ordna kod. Den används ofta i flera klasser av datorer, inklusive servrar, stationära datorer och även bärbara datorer.

Även om vissa aspekter av arkitekturen har använts i processorer sedan 1960-talet, var sant superskalära processorer inte släppas förrän långt senare. Vissa RISC (RISC) processorer som säljs i slutet av 1980 och början av 1990 var superskalär. Deras enkla kärnor och instruktioner fast längd gjorde avsändande och schemaläggning av parallella instruktioner relativt lätt. Många icke-RISC-processorer som tillverkas sedan slutet av 1990-talet har superskalära arkitekturer också. Embedded, låg effekt och andra special processorer är ofta undantag, optimera andra aspekter av sina konstruktioner i stället för parallell exekvering.

Vissa processorer kan dela på en pipeline med instruktioner från flera exekveringstrådar, så kallade supergäng. När en funktionell enhet är ledig eftersom det väntar på tillfället verkställande tråd, kan det utföra en instruktion från en annan tråd under tiden. Denna teknik bidrar till att fullt ut utnyttja processorn men är inte lika effektiv som samtidig multitråd (SMT). En enda superskalär processor kan utföra flera instruktioner från flera trådar samtidigt med hjälp av SMT. Samtidigt utför gängor kan konkurrera om system- och processorresurser, dock, vilket kan bromsa ner systemet.

Processorer med flerstegs rörledningar kan utföra flera instruktioner samtidigt så länge de befinner sig i olika stadier av genomförande. Däremot kan flera instruktioner köra i samma skede samtidigt i en superskalär processor. Även om det finns många likheter mellan denna typ av processor och en multi-core processor, är de inte samma sak. En multi-core processor innehåller flera kompletta processorer, så kallade kärnor, i en enhet. Varje kärna av ett multi-core processor är oftast superskalär och kan omfatta flera parallella rörledningar.

En viktig egenskap hos en superskalär processor är dess förmåga att exekvera programkod i ordning för effektivitetsskäl. För att göra detta måste det vara medveten om någon instruktion beroenden vid ett annat. Om en instruktion påverkar resultatet i eller använder resurserna i en annan, är det mycket troligt att de två inte måste utföras parallellt. Tekniker finns för att eliminera vissa typer av beroenden, men andra måste fördröja behandlingen tills resurser finns tillgängliga.

Out-of-order utförande måste också kunna garantera rätt innehåll register, flaggor och andra källor om en systemavbrott inträffar. I detta fall måste systemets tillstånd ser likadana ut, som om koden hade avrättats sekventiellt som avsett. En annan faktor är hur många instruktioner processorn bör undersöka för att hitta möjligheter till parallell exekvering. Ju fler, desto mer effektiv verkställighet vara. Detta omfattar även spekulativa exekvering av instruktioner på den andra sidan av varje gren i den undersökta koden.

  • En superskalär processor kan användas i stationära datorer.