Övergångsprediktor

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 6 november 2018; kontroller kräver 8 redigeringar .

En grenprediktionsenhet ( branch prediction unit ) är en  enhet som ingår i mikroprocessorer med en pipeline-arkitektur som förutsäger om ett villkorligt hopp kommer att utföras i ett körbart program. Förutsägelse av gren minskar rörledningens vilotid genom att förladda och exekvera instruktioner som måste exekveras efter att en villkorlig greninstruktion exekveras. Förutsägelse av grenar spelar en avgörande roll, eftersom det i de flesta fall (noggrannheten för förutsägelse av grenar i moderna processorer överstiger 90%) gör det möjligt att optimalt använda processorns beräkningsresurser [1] .

Utan grenförutsägelse måste pipelinen vänta tills den villkorliga greninstruktionen exekveras för att göra nästa hämtning. Branch predictor undviker att slösa tid på att försöka lista ut en gren. Grenen väljs baserat på tidigare resultat av tillståndskontrollen. Den avsedda grenen laddas sedan och exekveras delvis. Om det sedan visar sig att förutsägelsen var felaktig, kasseras resultaten av den felaktiga grenen och den korrekta grenen laddas in i pipelinen, vilket orsakar en fördröjning. Mängden fördröjning beror på transportörens längd. För Intel Core i7-processorn är pipelinedjupet 14 steg.

"Jump prediction" bör särskiljas från "jump address prediction" . Syftet med förgreningsadressförutsägelse är att välja adressen för en villkorad eller ovillkorlig förgrening innan avkodning och exekvering av förgreningsinstruktionen.

Det finns två huvudmetoder för grenförutsägelse:

Statisk förutsägelse

Statiska grenprediktionsmetoder är de enklaste. Kärnan i dessa metoder är att olika typer av övergångar:

I moderna processorer används statiska metoder endast när dynamiska metoder inte kan användas.

Ett exempel på trivial statisk förutsägelse implementerad i tidiga processorer av SPARC- och MIPS-arkitekturerna .

I detta fall görs antagandet att den villkorliga grenen aldrig kommer att utföras.

Ett exempel på statisk förutsägelse implementerad i moderna processorer.

I det här fallet görs antagandet att någon bakåtövergång kommer att utföras och någon framåtgående övergång inte. Metoden används som ett "skyddsnät".

Dynamisk förutsägelse

2a ISIP tat

Mättad räknare eller bimodal räknare

Navigationshistoriktabellen analyseras. Tabellen innehåller:

Tabellen uppdateras efter varje övergång. Algoritmen ändrar valet av förgrening om resultatet av villkoret avvek två gånger från de tidigare resultaten. Genom att använda de minst signifikanta bitarna av instruktionsadressen kan flera instruktioner förutsägas innan de avkodas.

Adaptiv Bilevel Predictor

För den första nivån utförs historiken för de sista k grenarna, för den andra nivån pekar k på malltabellen.

Lokal övergångsförutsägelse

Varje villkorlig gren i ett omfattning har sin egen grenhistorik. Övergångsmönster kan vara delade eller specifika.

Global Transition Prediction

Global grenförutsägelse lagrar inte separat historik för varje övergång, utan använder den allmänna historiken. Alla mönster i övergångar påverkar denna historia, men irrelevanta register kan förorena historien.

Hybridprediktor

En hybridprediktor kan välja resultaten av de mest framgångsrika prediktorerna baserat på historia, eller använda majoritetsfunktionen av ett udda antal prediktorer.

Slingprediktor

Loopprediktorn kan använda loopräknaren för att räkna antalet hopp till början av loopen. Denna prediktor kan användas i en hybridprediktor.

Förutsägelse av indirekta hopp

En indirekt gren kan ha fler än två grenar. De senaste processorerna har möjlighet att välja mer än två villkor med hjälp av en adaptiv prediktor på två nivåer. Processorer utan stöd för indirekt grenförutsägelse kan använda statisk förutsägelse eller ta det tidigare värdet.

Anteckningar

  1. PC Magazine / Russian Edition. Artikel "RISC Legacy: Transition Prediction". Oktober 1995 nummer. Onlineversion: [1] Arkiverad 10 mars 2012 på Wayback Machine

Litteratur

Se även