SE513431C2 - Buffert för icke-rapporterade hopp - Google Patents
Buffert för icke-rapporterade hoppInfo
- Publication number
- SE513431C2 SE513431C2 SE9900042A SE9900042A SE513431C2 SE 513431 C2 SE513431 C2 SE 513431C2 SE 9900042 A SE9900042 A SE 9900042A SE 9900042 A SE9900042 A SE 9900042A SE 513431 C2 SE513431 C2 SE 513431C2
- Authority
- SE
- Sweden
- Prior art keywords
- buffer
- predicted
- instruction
- jump
- instructions
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 180
- 238000000034 method Methods 0.000 claims description 31
- 238000010926 purge Methods 0.000 claims description 5
- 238000011156 evaluation Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 206010012335 Dependence Diseases 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
lO
15
20
25
30
5132431
resultat från en annan instruktion, och det definitiva hoppet kommer inte att
vara möjligt att genomföra om resultatet inte är tillgängligt. Om
hoppinstruktionen emellertid måste vänta på att det tidigare resultatet ska
bli klart under en lång tid, reduceras processorns totala hastighet. För att
skynda på processen gör processorn en prediktion om hoppet kommer att
göras eller inte, och de efterföljande instruktionerna kan exekveras grundat
på detta. Om det predikterade hoppet befanns vara riktigt vid ett senare
tillfälle, när det riktiga resultatet på vilket hoppbeslutet ska göras är
tillgängligt, kan processen fortsättas från den punkt den hade nått under
mellantiden. Om det predikterade hoppet var felpredikterat måste
processorn börja om från hoppinstruktionen och ta den andra vägen efter
det felpredikterade hoppet. Detta betyder att alla instruktioner som lagrats i
den återordnande bufferten och andra moduler efter den felpredikterade
hoppinstruktionen måste rensas. Sannolikheten för en korrekt prediktion är
mycket större än en felprediktion, så att vinsten i tid och minskad
komplexitet genom att låta exekveringen fortsätta förbi ett predikterat hopp
är större än den förlust som orsakas av en rensning och andra relaterade
åtgärder.
I återordnande buffertar enligt teknikens ståndpunkt lagrar processorn alla
instruktioner i en huvudbuffert tillsammans med tillhörande information,
t.ex. avseende läs- och skrivadresser, sekvensnummer osv. Den
huvudsakliga återordnande bufferten anordnas normalt som en först-in-
först-ut-kö för att behålla den ursprungliga sekvensordningen.
instruktionerna exekveras, och resultaten lagras tillfälligt i den återordnande
bufferten. När instruktionerna har nått den första positionen i bufferten,
dvs. när alla tidigare instruktioner har avlägsnats, genomförs en kontroll att
instruktionen är utförd och att alla resultat är normala och kan skrivas in i
avsedda minnen, resultaten skrivs därefter in i lämpliga positioner och
instruktionen avlägsnas från den återordnande kön. Denna procedur är
känd som att överlämnaeinstruktionen.
10
15
20
25
30
5133431
Eftersom en felpredikterad hoppinstruktion kan orsaka en avsevärd förlust
av utförda instruktioner, är det en önskan att utföra utvärderingen av de
förutsagda hoppen så snabbt som möjligt. Informationen som är lagrad
tillsammans med det första icke rapporterade predikterade hoppet behöver
plockas fram från huvudbufferten. Denna information utvärderas sedan med
hoppresultatet som tas emot från den aritmetiska logiska enheten (ALU) och
rapporteras. Om prediktionen var korrekt, sätts en flagga i huvudbufferten
att det predikterade hoppet är rapporterat att vara korrekt och processorn
söker efter nästa "icke-rapporterade hopp". Däremot, om prediktionen var
felaktig, sänds en rensningssignal till processorn. Processorn gynnar
utvärderingen av hoppet men har nackdelen av att introducera en
sökningsprocedur i huvudbufferten. Vid design av processorer, är problemet
med denna lösning att informationsextraherandet tar för lång tid, särskilt
med en stor återordnande buffert och när processorn arbetar med en hög
klockhastighet. Detta betyder att de predikterade hoppen följs av för många
utförda instruktioner innan de utvärderas. Eftersom utvecklingen av
processorer tenderar till att öka såväl processorns klockhastighet som den
återordnande buffertens storlek, finns det ett generellt problem i att minska
tiden och mödan för utvärdering av predikterade hopp.
SUMMERING AV UPPFINNINGEN
Ett allmänt syfte för den föreliggande uppfinningen är att reducera den tid
som används för utvärdering av predikterade hopp i en återordnande buffert.
Ett syfte med den föreliggande är också att åstadkomma sådana
tidsreduktioner med en så begränsad tillkommande hårdvara som möjligt,
företrädesvis mindre.
De ovanstående syftena har åstadkommits genom en anordning och ett
förfarande enligt de medföljande patentkraven.
Med allmänna ord, har: den föreliggande uppfinningen löst problemet att
åstadkomma en snabb hantering av de felpredikterade hoppen genom att
10
15
20
25
30
513 gm
införa en separat buffert för icke rapporterade instruktioner om predikterade
hopp i den återordnande bufferten. Denna buffert är skild från
huvudbufferten och innehåller endast instruktioner som är relaterade till
predikterade hopp. En instruktion om predikterade hopp lagras företrädesvis
både i huvudbufferten och den tillkommande bufferten. Denna "icke-
rapporterade hoppkö" verkar parallellt med huvudbufferten och är utformad
som en linjär först-in-först-ut-kö. Det första icke-rapporterade hoppet är då
alltid enkelt tillgängligt vid toppen av kön och kan utvärderas och
rapporteras mycket snabbt.
KORT BESKRIVNING AV RITNINGARNA
Uppfinningen beskrivs mer i detalj nedan i samband med de bifogade
ritningarna, i vilka:
Fig. 1 är en schematisk illustration av fördelningen av
instruktionsinforrnation enligt den föreliggande uppfinningen;
Fig. 2 är ett blockdiagram som visar en instruktionsprocessorenhet, i
vilken en återordnande buffert enligt den föreliggande
uppfinningen kan användas;
Fig. 3 är ett blockdiagram som visar en styrenhet för en instruktionskö, i
vilken en återordnande buffert enligt uppfinningen kan användas;
Fig. 4 är ett blockdiagram för en återordnande buffert enligt tidigare känd
teknik;
Fig. 5 är ett blockdiagram för en första utföringsform av en återordnande
buffert enligt den föreliggande uppfinningen;
Fig. 6 är ett flödesdiagram som illustrerar processen att lagra
instruktioner i en återordnande buffert enligt den föreliggande
uppfinningen;
Fig. 7 är ett flödesdiagram som illustrerar processen att lagra resultat
och utvärdera "villkor för predikterade hopp enligt den föreliggande
uppfinningen;
10
15
20
25
30
51351
Fig. 8 är ett flödesdiagram som illustrerar processen att överlämna
instruktioner från en återordnande buffert.
DETALJERAD BESKRIVNING AV DE FÖREDRAGNA
UTFÖRINGSFORMERNA
I fig. 1, illustreras flödet för Winstruktionsinforinationen i en återordnande
buffert enligt den föreliggande uppfinningen. En återordnande buffert enligt
den föreliggande uppfinningen innefattar en huvudbuffert 10, i vilken
instruktioner och tillhörande information lagras. Instruktionerna identifieras
och ordnas av en etikett, i det följande hänvisad till såsom sekvensnumret.
Den återordnande bufferten enligt den föreliggande uppfinningen innefattar
även en tillkommande buffert 20, i det följande hänvisad till såsom en
"buffert för icke-rapporterade hopp", i vilken sekvensnumrena för instruk-
tionerna om predikterade hopp lagras, företrädesvis tillsammans med utvald
tillhörande information. Huvudbufferten 10 innehåller ett antal positioner
18, i vilka information om instruktionen ska placeras. En buffertposition 18
är avsedd för en instruktion. Varje buffertposition 18 har ett antal fält 1 1-16,
i vilka information som hör till instruktionen kan lagras. Bufferten för icke-
rapporterade hopp 20 innefattar på ett liknande sätt ett antal
hoppbuffertpositioner 19, vilket företrädesvis är mindre än antalet positioner
18 i huvudbufferten. Varje hoppbuffertposition har ett antal fält, av vilka en
del kan utgöra ett underuppsättning av fälten i huvudbuffertens positioner.
Båda buffertarna utformas normalt som först-in-först-ut-köer (FIFO), vilket
betyder att inträdet av information bestämmer ordningen i vilken
informationen lämnar buffertarna.
Information 30 som avser en ny instruktion sänds till den återordnande
bufferten. Informationen inneïfattarllnormalt den verkliga instruktionen 11
eller en etikett till eller annan representation av instruktionen, samt
sekvensnumret 12, vilkçlet indikerar ordningen, i vilken instruktionerna 11
ska överlämnas. Tillhöiande information kan även innefatta fält som
indikerar datakällor 13, dvs. vilka variabler eller minnesinnehåll som ska
10
15
20
25
30
51§4s1
användas som operander för instruktionen, resultatdestination 14, dvs. var
resultatet från instruktionen ska lagras, samt annan viktig information. För
en instruktion om ett predikterat hopp kan det predikterade villkoret för
hoppet inkluderas, antingen som en del av instruktionen eller som separat
information. Om hoppet är av formen "grena av om ej noll", är villkoret för
hoppet uppenbart från instruktionen själv och ingen ytterligare information
behöver lagras. Informationen 30 on den nya instruktionen läggs in i den
första tillgängliga positionen i huvudbufferten 10 vid slutet av FIFO-kön. Om
den nya instruktionen är ett predikterat hopp, förses även bufferten för icke-
rapporterade hopp 20 med information. Företrädesvis lagras sekvensnumret
11 och information om de predikterade villkoren för hoppet 17 vid den första
tillgängliga positionen i bufferten för icke-rapporterade hopp 20. Eftersom all
utvärdering av predikterade hopp ska genomföras från bufferten för icke-
rapporterade hopp, kan informationen om de predikterade hoppen mini-
meras i huvudbufferten, och därigenom reducera det nödvändiga tillgängliga
utrymmet.
För att utvärdera den första icke-rapporterade predikterade hoppinstruk-
tionen, vilken är gömd någonstans i huvudbufferten 10, väljs den första
positionen i bufferten för icke-rapporterade hopp 20. Denna första hopp-
instruktion utvärderas och rapporteras. I den föreliggande uppfinningen
behövs ingen rapportflagga ställas i huvudbufferten 10, instruktionen
behöver endast avlägsnas frän bufferten för icke-rapporterade hopp 20. Den
korrekt predikterade hoppinstruktionen avlägsnas alltså frän bufferten för
icke-rapporterade hopp 20 och bufferten för icke-rapporterade hopp 20
poppas, dvs. alla positioner flyttas fram ett steg. När bufferten för icke-
rapporterade hopp 20 poppas, är nästa instruktion i bufferten för icke-
rapporterade hopp 20 färdig att utvärderas. Om en felprediktion hittas,
måste en rensningssignal sändas så snart som möjligt, vilken avlägsnar alla
instruktioner, med ett högre sekvensnummer än det felförutsagda hoppet,
från såväl huvudbufferten 10 som bufferten för icke-rapporterade hopp 20.
10
15
20
25
30
513 4,51
Tiden för utvärderingen och extraheringen av avgörande information
minskas betydligt när en sådan separat kö för predikterade hoppinstruk-
tioner används, eftersom den första instruktionen i kön alltid är den nästa
som ska behandlas, och ingen sökning i en stor buffert behöver genomföras.
Detta föreslagna förfarande enligt den föreliggande uppfinningen kan
inbegripa skapandet av en extra kopia av en del information, eftersom den
kan uppträda både i huvudbufferten 10 och i bufferten för icke-rapporterade
hopp 20, även om mängden av den kopierade informationen är begränsad.
Om emellertid antalet positioner och fält i bufferten för icke-rapporterade
hopp 20 hålls lågt, tar denna extra lagring endast en liten mängd extra
minnesutrymme. Detta extra utrymme som används är ofta försumbart i
jämförelse med den logik som behövs för att söka genom huvudbufferten 10
efter information och utrymmet som utelämnas i huvudbufferten 10. I vissa
processorer kan utrymmesminskningen i huvudbufferten 10, uppkommen
genom möjligheten att utelämna viss information om predikterade hopp,
själv vara större än det utrymme som behövs av den tillkommande bufferten
för icke-rapporterade hopp.
Den föreliggande uppfinningen tillhandahåller sålunda ett förfarande vilket
utför utvärdering och rapporter av predikterade hopp mycket snabbt, vilket
medför att eventuell exekvering av instruktioner efter ett felpredikterat hopp
reduceras, och den totala processtiden förkortas. Förfarandet är allmänt
tillämpbart på alla processorer som använder hopprediktíoner.
I det följande kommer en för tillfället föredragen utföringsform av den
föreliggande uppfinningen att beskrivas mer i detalj. Denna särskilt
beskrivna processor utgör en del av ett telekommunikationssystem, men den
återordnande bufferten enligt den föreliggande uppfinningen är användbar i
många typer av processorer som använder predikterade hopp.
I en centralenhet (CPU)'fi processorsystemet finns det i grunden två stora
komponenter, en signalprocessorenhet (SPU) och en instruktionsprocessor-
10
15
20
25
30
5138431
enhet (IPU). SPU'n hanterar exekvering på jobbnivå, i vilken beordrade jobb
ska utföras, och IPU'n exekverar programmen för varje jobb. Den
återordnande bufferten är belägen i IPU'n, varför endast IPU'n kommer att
beskrivas vidare. Först ges en översikt över en processordesign, för att
definiera den återordnande buffertens roll.
Fig. 2 illustrerar ett schematiskt blockdiagram för en IPU i en processor 45.
Processorn 45 innefattar även SPU (ej visad) och andra tillkommande
enheter (ej visade) enligt fackmannens kunskaper. Dessa delar är emellertid
inte centrala för förståelse av den föreliggande uppfinningen och vilken
konventionell teknik som helst kan användas. En styrenhet för en
instruktionskö IQC 53 kommunicerar med en SPU via ett signalprocessor-
gränssnitt SPI 55. IPU'n tar emot jobb från SPU'n. Jobbet bestämmer vilka
program som ska exekveras i IPU'n. En lagringsenhet för programreferenser
PRSU 50 håller reda på programmen i assemblerkod ASA. När ett program
ska exekveras hämtas det frän ett minne för programreferenser PRS 51
tillsammans med prediktionsinformation för villkorliga hopp. ASA-
instruktionerna och prediktionerna sänds till en adressöversättningsenhet
ATU 52 för avkodning. ATU'n 52 översätter assemblerinstruktionerna till
mikroinstruktioner MIP. instruktionerna avkodas och om en instruktion är
ett villkorligt hopp, predikteras hoppet med hjälp från PRSU'n 50. De
avkodade mikroinstruktionerna sänds sedan till IQC'n 53.
Ett dataminne DS 57 är minnet för data i IPU'n och innehåller all den
nödvändiga informationen. En dataminneshanterare DSH 56 hanterar
åtkomsten till DS'n 57. En registerminnesenhet RMU 54 innehåller
registerrninnen och länkstackar. Man skriver i och läser ur register genom
instruktioner. Även andra enheter kan inbegripas i IPU'n, men eftersom de
inte påverkas driften av den återordnande bufferten, kommer beskrivningen
av sådana detaljdelar att utelämnas.
Fig. 3 illustrerar en enkel utformning av en IQC. Instruktioner från PRSU'n
och ATU'n sänds tillsammans med ett unikt sekvensnummer till
10
15
20
25
30
5139431
reservationsstationer RSV 60 och till en återordnande buffert ROB 62. RSV'n
60 håller kvar instruktionen tills alla beroenden av andra resultat har lösts
upp och operanderna har hämtats från minnen och register. Den har
normalt flera olika köer för att lagra de olika typerna av instruktioner. När
en instruktion har alla operanderna, sänd den genom en aritmetiklogikenhet
ALU 61. Operander kan tas emot från flera olika källor, t.ex. DSH, RMU eller
hårdvaruregister och statusregišter HR inuti IQC'n.
ALU'n 61 exekverar alla typer av instruktioner och lagrar resultatet i den
återordnande bufferten ROB 62, normalt inom en klockcykel. Om en
instruktion i RSV'n 60 behöver resultatet från en annan instruktion kan den
ta emot resultatet från ALU'n 61 eller direkt från den återordnande bufferten
om resultatet redan är beräknat.
Den återordnande bufferten ROB 62 lagrar alla instruktioner som tas emot
från ATU'n 61. När en instruktion är beräknad, lagras resultatet i den
återordnande bufferten tillsammans med den tillhörande instruktionen. När
instruktionerna är klara överlämnas de sedan, i samma ordning som de togs
emot av den återordnande bufferten. Den återordnande bufferten häller
också reda på de predikterade hoppen, och rensar IPU'n om felpredikterade
hopp inträffar. Överlämningen inbegriper inskrivning av resultaten på olika
sätt, t.ex. till RMU'n eller DSH'n. Resultat kan även sändas till SPI'n.
För att bättre förstå de viktiga fördelarna med återordnande buffertar enligt
den föreliggande uppfinningen, inkluderas en beskrivning av en åter-
ordnande buffert enligt teknikens ståndpunkt. I ñg. 4, framställs en typisk
design för en återordnande buffert enligt teknikens ståndpunkt.
Instruktioner från ATU'n eller PRSU'n tas emot av och lagras i en huvud-
buffert 10, normalt utformad som en först-in-först-ut-buffert. Nya instruk-
tioner sätts in sist i bufferten i de första tomma positionerna, och instruk-
tioner överlämnas från den första positionen. Instruktionerna sänds även till
en beroendekontrollenhët 40 för jämförelse av destinationsoperanderna med
10
15
20
25
30
51514631
operander för nya inkommande instruktioner. Om det finns ett beroende,
sänds nödvändig information till RSV'n.
Resultat från ALU'n sätts in i de korrekta positionerna i huvudbufferten 10.
En enhet för blandade funktioner 41 tar också emot resultaten från ALU'n
och i samarbete med huvudbufferten 10 håller den reda på olika underhålls-
och styrfunktioner. Enheten för blandade funktioner 41 är t.ex. ansvarig för
genomsökning av huvudbufferten efter den första icke-rapporterade
hoppinstruktionen och utvärderingen av det predikterade villkoret, vilket i
fall av felprediktion kommer att leda till en rensning av den återordnande
bufferten, genom en rensningsgeneratorenhet 42. Enheten för blandande
funktioner 41 understödjer även beroendekontrollenheten 40 med lämplig
information.
I ñg. 5 illustreras en återordnande buffert enligt en föredragen utföringsform
av den föreliggande uppfinningen. Instruktioner från ATU'n eller PRSU'n tas
emot och lagras i en huvudbuffert 10, företrädesvis utformad som en först-
in-först-ut-buffert. Nya instruktioner sätts in sist i bufferten i de första
tomma positionerna, och instruktionerna överlämnas från den första
positionen. instruktionerna sänds även till en beroendekontrollenhet 40 för
att jämföra destinationsoperanderna med operander för nya inkommande
instruktioner. Om det finns ett beroende, sänds nödvändig information till
RSV. Om instruktionen från ATU'n eller PRSU'n är en instruktion om ett
predikterat hopp, sänds även åtminstone sekvensnumret och företrädesvis
även information om villkoret för hoppinstruktionen till en buffert för icke-
rapporterade hopp 20. Bufferten för icke-rapporterade hopp är företrädesvis
utformad som en först-in-först-ut-buffert, och den nya instruktionen sätts in
i den första tomma positionen i bufferten 20. Eftersom endast instruktioner
om predikterade hopp sätts in, upptas alltid den första positionen i bufferten
för icke-rapporterade hopp 20 av det första icke-rapporterade hoppet.
Resultat från ALU'n sätts in i de korrekta positionerna i huvudbufferten 10.
En enhet för blandade funktioner 41 tar också emot resultaten från ALU'n
10
15
20
25
30
5131531
och i samverkan med huvudbufferten håller den reda på olika underhålls-
och styrfunktioner. Enheten för blandade funktioner 41 understödjer även
beroendekontrollenheten 40 med lämplig information. Bufferten för icke-
rapporterade hopp 20 förses även med lämpliga resultat och är ansvarig för
att hitta den första icke-rapporterade hoppinstruktionen. Eftersom detta
alltid motsvarar instruktionen som är associerad med den första positionen,
är sökningen trivial och därför extremt snabb. Villkoret för det predikterade
hoppet utvärderas om resultatet för det predikterade hoppet i den första
positionen i bufferten för icke-rapporterade hopp finns tillgängligt. I fallet
med en korrekt prediktion, avlägsnas den första positionen i bufferten för
icke-rapporterade hopp 20 och bufferten poppas. I fall av felprediktion,
används en rensningsgenerator 42 för att rensa den återordnande bufferten
från instruktioner som har ett sekvensnummer som är större än den
hoppinstruktion som ger upphov till rensningen.
Det skulle vara möjligt att lagra instruktionerna för predikterade hopp
endast i bufferten för icke-rapporterade hopp 20, men rapporteringen av
korrekta prediktioner kommer då att leda till behovet att inbegripa hopp-
instruktionema i mitten av huvudbufferten 10. Mer föredraget är alltså att
lagra endast nödvändig information i bufferten för icke-rapporterade hopp
20. Detta kan leda till en dubbel lagring av viss information, om informa-
tionen är en kopia av den information som är tillgänglig i huvudbufferten,
men detta är försumbart i jämförelse med fördelen med arrangemanget. Som
ett exempel, antag att huvudbufferten 10 innehåller 64 positioner och 5
register för varje position som bestämmer villkoren för hoppet, vilka är
onödiga om en separat buffert används. Införandet av ett separat register
kommer alltså att spara 320 register. Om bufferten för icke-rapporterade
hopp 20 har 10 positioner som upptar 50 register var, måste 500 register
användas, dvs. 180 register mer. När man emellertid beaktar att 50 ELLER-
grindar och 50 OCH-grindar per huvudbuffertposition sparas genom att
exkludera extraheringen av information från huvudbufferten 10, sparas
totalt 3200 ELLER-grindar och 3200 OCH-grindar genom den föreliggande
uppfinningen. Vidare kan, för andra processorer, omfattningen av register-
10
15
20
25
30
51g2451
avlägsnandet från huvudbufferten till och med övergå storleken för den
totala bufferten för icke-rapporterade hopp.
Proceduren för att hantera instruktioner om predikterade hopp i en
äterordnande buffert kan ses som tre separata delprocesser, vilka rör lagring
av instruktioner och resultat, kontroll av prediktioner och överlämning av
instruktioner. I fig. 6 illustreras delprocessen för att sätta in instruktioner i
den återordnande bufferten. Delprocessen börjar i steg 100. I steg 102 tas en
ny instruktion emot från ATU'n eller PRSU'n i den äterordnande bufferten.
Instruktionen lagras i huvudbufferten i steg 104. I steg 106 avgörs det om
instruktionen är en instruktion om ett predikterat hopp eller inte. Om
instruktionen är en instruktion om ett predikterat hopp, lagras
informationen som hör till instruktionen i bufferten för icke-rapporterade
hopp i steg 108. Informationen kan åtminstone till en del vara en kopia av
information i huvudbufferten. Delprocessen slutar i 110.
I fig. 7 illustreras delprocessen för hantering av resultat och i synnerhet
utvärderingen av instruktioner om predikterade hopp. Denna delprocess
börjar för varje klockcykel i steg 112. I steg 113 tas ett nytt resultat emot
från ALU'n. Resultatet lagras tillsammans med tillhörande instruktioner i
huvudbufferten i steg 114. I steg 115, avgörs det om resultatet var associerat
med en instruktion om ett predikterat hopp eller inte. Om resultatet var ett
resultat för ett predikterat hopp, lagras även resultatet i bufferten för icke-
rapporterade hopp i steg 116. Om resultatet inte var ett resultat för ett
predikterat hopp, fortsätter delprocessen direkt till steg 117. I steg 117 väljs
den första positionen i bufferten för icke-rapporterade hopp, vilket motsvarar
den första icke-rapporterade hoppinstruktionen. I steg 118 kontrolleras det
om resultaten som bestämmer det verkliga villkoret för hoppet är tillgängliga.
Om de inte är tillgängliga, avslutas delprocessen vid 122. Giltigheten för
hoppets prediktion kan då ännu inte bestämmas. Om lämpliga resultat finns
tillgängliga, utförs enf utvärdering av prediktionen i steg 119. Om
prediktionen var korrekt, dvs. ett korrekt hopp har gjorts, avlägsnas den
första positionen i bufferten för icke-rapporterade hopp i steg 120 och alla
10
15
20
25
30
511313451
följande positioner flyttas upp ett steg, dvs. "poppas". Delprocessen avslutas
sedan vid 122. Om en felprediktion hade gjorts, dvs. det antagna hoppet var
felaktigt, utförs en rensning av den återordnande bufferten för instruktioner
med högre sekvensnummer i steg 121 tillsammans med rapporteringen av
det föreliggande predikterade hoppet. Eftersom inga ytterligare predikterade
hoppinstruktioner då finns tillgängliga, slutar delprocessen i steg 122.
Överlämningsdelprocessen påverkas inte direkt av den föreliggande
uppfinningen, men för beskrivningens fullständighet illustreras den i fig. 8.
Delprocessen börjar i steg 126. I steg 128 väntar processen på att
instruktionen i den första positionen i huvudbufferten ska vara klar för att
överlämnas. I steg 130, skrivs resultaten för instruktionen in i lämpliga
minnen, och i steg 132 avlägsnas instruktionen från huvudbufferten och de
efterföljande instruktionerna förskjuts ett steg framåt. Delprocessen slutar i
steg 134.
Från den ovanstående beskrivningen inses fördelarna med den föreliggande
uppñnningen lätt. Genom att extrahera information som är relaterad till
predikterade hopp från huvudbufferten redan i insättningsfasen, underlättas
den efterföljande utvärderingen av de predikterade hoppen. Det extra
utrymme som behövs för bufferten för icke-rapporterade hopp kompenseras,
åtminstone till en del, genom ett minskat behov av information i
huvudbufferten. Vidare kan organ för tillkommande utvärdering i
huvudbufferten minskas signifikant. Den verkliga utvärderingsproceduren är
möjlig att utföra snabbare, eftersom steget att ñnna det första icke-
rapporterade hoppet blir trivialt.___Detta leder i sin tur till en snabbare total
utvârderingstid.
Fackmannen inser att olika modifieringar och ändringar kan göras i de
beskrivna utföringsforinerna av den föreliggande uppfinningen utan att
avlägsna sig från dessf omfattning, vilken definieras av de medföljande
patentkraven.
Claims (15)
1. En återordnande buffert (62) innefattande en huvudbuffert (10) anordnad för lagring av ett flertal instruktioner (11) och tillhörande information ( 12-16), kännetecknad av att den återordnande bufferten (62) vidare innefattar en tillkommande buffert (20) anordnad för lagring av information tillhörande instruktioner för predikterade hopp (12, 17).
2. Den återordnande bufferten (62) enligt patentkrav 1, kännetecknad av att åtminstone en del av innehållet i den tillkommande bufferten (20) även är lagrat i huvudbufferten (10).
3. Den återordnande bufferten (62) enligt patentkrav 1 eller 2, kännetecknad av att den tillkommande bufferten (20) är anordnad som en först-in-först-ut-kö.
4. Den återordnande bufferten (62) enligt något av föregående patentkrav, kännetecknad av att den tillkommande bufferten (20) har ett antal positioner (19) som är avsevärt mindre än antalet positioner (18) för huvudbufferten (10).
5. Den återordnande bufferten (62) enligt patentkrav 4, kännetecknad av att var och en av positionerna (19) i den tillkommande bufferten (20) har ett antal fält som är mindre än antalet fält i var och en av positionerna i huvudbufferten ( 10).
6. Den återordnande bufferten (62) enligt något av de föregående patentkraven, kännetecknad av att varje position (19) i den tillkommande bufferten (20) åtrninstöne innefattar ett sekvensnummer (12) som är associerat till en instruktion om ett predikterat hopp. 10 15 20 25 30 51§5431
7. Den återordnande bufferten (62) enligt patentkrav 6, kännetecknad av att varje position (19) i den tillkommande bufferten (20) också innefattar information för prediktionen (17) som används av instruktionen om ett predikterat hopp.
8. Den återordnande bufferten (62) enligt något av föregående patentkrav, kännetecknad av att en utgång på den tillkommande bufferten (20) är ansluten till en rensningsgeneratorenhet (42).
9. En superskalär processor som har en återordnande buffert (62) enligt något av de föregående patentkraven.
10. Ett förfarande för hantering av predikterade hopp i en återordnande buffert (62), innefattande stegen: lagring av instruktioner och tillhörande information i en huvudbuffert (10) i den återordnande bufferten (62), vilka instruktioner inbegriper instruktioner om predikterade hopp; lagring av resultat från exekverade instruktioner i huvudbufferten (10); uppletning den äldsta icke-rapporterade instruktionen om ett predikterat hopp; om resultaten överensstämmer med prediktionerna för den äldsta icke-rapporterade hoppinstruktionen, rapportering av den äldsta icke- rapporterade hoppinstruktionen såsom korrekt; samt om resultaten inte överensstämmer med prediktionerna för den äldsta icke-rapporterade hoppinstruktionen, rensning av alla instruktioner i den återordnande bufferten (62) som inkom efter den äldsta icke-rapporterade hoppinstruktionen, och kännetecknad av att förfarandet innefattar de ytterligare stegen: lagring av information tillhörande instruktioner om predikterade hopp i en tillkommande buffert (20) i den återordnande bufferten (62) ; samt lagring av resultat tillhörande instruktioner om predikterade hopp i den tillkommande bufferten (20); 10 15 20 25 30 51516431 varvid steget att leta upp den äldsta icke-rapporterade instruktionen om ett predikterat hopp utförs på den tillkommande bufferten (20).
11. Förfarandet för hantering av predikterade hopp enligt patentkrav 10, kännetecknat av steget att lagra en kopia av åtminstone en del av informationen tillhörande en instruktion om ett predikterat hopp som lagrats i huvudbufferten (10) i den återordnande bufferten (62), i den tillkommande bufferten (20).
12. Förfarandet för hantering av predikterade hopp enligt patentkrav 10 eller ll, kännetecknat av steget att lagra ett sekvensnummer (12) associerat med en instruktion om ett predikterat hopp i den tillkommande bufferten (20).
13. Förfarandet för hantering av predikterade hopp enligt patentkrav 10, 11 eller 12, kännetecknat av steget att lagra information om förutsägelsen (17) som används av instruktionen om ett predikterat hopp i den tillkommande bufferten (20).
14. Förfarandet för hantering av förutsagda hopp enligt något av patentkraven 10 till 13, kännetecknat av att lagra information i den tillkommande bufferten (20) på ett först-in-först-ut-sätt, varvid steget att leta upp den äldsta icke-rapporterade instruktionen om ett predikterat hopp innefattar väljandet av den första positionen i den tillkommande bufferten (20).
15. Förfarandet för hantering av förutsagda hopp enligt något av patentkraven 10 eller 14, kännetecknat av att steget att rapportera den äldsta icke-rapporterade hoppinstruktionen såsom korrekt innefattar borttagandet av den första positionen i den tillkommande bufferten (20).
Priority Applications (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9900042A SE513431C2 (sv) | 1999-01-11 | 1999-01-11 | Buffert för icke-rapporterade hopp |
SE9901844A SE521071C2 (sv) | 1999-01-11 | 1999-05-20 | Resultatfältskö |
CA002360283A CA2360283A1 (en) | 1999-01-11 | 1999-12-15 | Not reported jump buffer |
AU21344/00A AU2134400A (en) | 1999-01-11 | 1999-12-15 | Result field queue |
CA002360284A CA2360284A1 (en) | 1999-01-11 | 1999-12-15 | Result field queue |
EP99965652A EP1190313B1 (en) | 1999-01-11 | 1999-12-15 | Result field queue |
AU21343/00A AU2134300A (en) | 1999-01-11 | 1999-12-15 | Not reported jump buffer |
DE69939880T DE69939880D1 (de) | 1999-01-11 | 1999-12-15 | Nicht gemeldeter sprung-zwischenspeicher und verfahren zur behandlung von sprüngen |
PCT/SE1999/002361 WO2000042500A1 (en) | 1999-01-11 | 1999-12-15 | Not reported jump buffer |
EP99965651A EP1190312B1 (en) | 1999-01-11 | 1999-12-15 | Not reported jump buffer and method for handling jumps |
PCT/SE1999/002362 WO2000042501A1 (en) | 1999-01-11 | 1999-12-15 | Result field queue |
US09/479,954 US6550003B1 (en) | 1999-01-11 | 2000-01-10 | Not reported jump buffer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9900042A SE513431C2 (sv) | 1999-01-11 | 1999-01-11 | Buffert för icke-rapporterade hopp |
Publications (3)
Publication Number | Publication Date |
---|---|
SE9900042D0 SE9900042D0 (sv) | 1999-01-11 |
SE9900042L SE9900042L (sv) | 2000-07-12 |
SE513431C2 true SE513431C2 (sv) | 2000-09-11 |
Family
ID=20414049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE9900042A SE513431C2 (sv) | 1999-01-11 | 1999-01-11 | Buffert för icke-rapporterade hopp |
Country Status (7)
Country | Link |
---|---|
US (1) | US6550003B1 (sv) |
EP (1) | EP1190312B1 (sv) |
AU (1) | AU2134300A (sv) |
CA (1) | CA2360283A1 (sv) |
DE (1) | DE69939880D1 (sv) |
SE (1) | SE513431C2 (sv) |
WO (1) | WO2000042500A1 (sv) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3518510B2 (ja) * | 2001-01-10 | 2004-04-12 | 日本電気株式会社 | リオーダバッファの管理方法及びプロセッサ |
US7577825B2 (en) * | 2006-02-28 | 2009-08-18 | Intel Corporation | Method for data validity tracking to determine fast or slow mode processing at a reservation station |
US9411590B2 (en) * | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
US5918046A (en) * | 1994-01-03 | 1999-06-29 | Intel Corporation | Method and apparatus for a branch instruction pointer table |
US5778245A (en) * | 1994-03-01 | 1998-07-07 | Intel Corporation | Method and apparatus for dynamic allocation of multiple buffers in a processor |
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US5696955A (en) * | 1994-06-01 | 1997-12-09 | Advanced Micro Devices, Inc. | Floating point stack and exchange instruction |
GB9504743D0 (en) * | 1995-03-09 | 1995-04-26 | Int Computers Ltd | Jump prediction |
US6112019A (en) * | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5765016A (en) * | 1996-09-12 | 1998-06-09 | Advanced Micro Devices, Inc. | Reorder buffer configured to store both speculative and committed register states |
-
1999
- 1999-01-11 SE SE9900042A patent/SE513431C2/sv not_active IP Right Cessation
- 1999-12-15 AU AU21343/00A patent/AU2134300A/en not_active Abandoned
- 1999-12-15 CA CA002360283A patent/CA2360283A1/en not_active Abandoned
- 1999-12-15 WO PCT/SE1999/002361 patent/WO2000042500A1/en active Application Filing
- 1999-12-15 EP EP99965651A patent/EP1190312B1/en not_active Expired - Lifetime
- 1999-12-15 DE DE69939880T patent/DE69939880D1/de not_active Expired - Fee Related
-
2000
- 2000-01-10 US US09/479,954 patent/US6550003B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1190312B1 (en) | 2008-11-05 |
WO2000042500A1 (en) | 2000-07-20 |
US6550003B1 (en) | 2003-04-15 |
SE9900042D0 (sv) | 1999-01-11 |
SE9900042L (sv) | 2000-07-12 |
DE69939880D1 (de) | 2008-12-18 |
AU2134300A (en) | 2000-08-01 |
CA2360283A1 (en) | 2000-07-20 |
EP1190312A1 (en) | 2002-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5692170A (en) | Apparatus for detecting and executing traps in a superscalar processor | |
US6249862B1 (en) | Dependency table for reducing dependency checking hardware | |
EP0689131A1 (en) | A computer system for executing branch instructions | |
EP0677188B1 (en) | System and method for assigning tags to instructions to control instruction execution | |
US20010010073A1 (en) | Non-stalling circular counterflow pipeline processor with reorder buffer | |
EP0533337A1 (en) | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device | |
US20030061467A1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
JPH04270421A (ja) | プロセサアーキテクチャ | |
US6393550B1 (en) | Method and apparatus for pipeline streamlining where resources are immediate or certainly retired | |
US5764971A (en) | Method and apparatus for implementing precise interrupts in a pipelined data processing system | |
US5708837A (en) | Method and apparatus for register renaming in a computer system using a separate arithmetic available queue | |
US7093111B2 (en) | Recovery of global history vector in the event of a non-branch flush | |
US6351802B1 (en) | Method and apparatus for constructing a pre-scheduled instruction cache | |
US6026477A (en) | Branch recovery mechanism to reduce processor front end stall time by providing path information for both correct and incorrect instructions mixed in the instruction pool | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US6898696B1 (en) | Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction | |
KR100335747B1 (ko) | 무순서 인스트럭션 발행이 가능한 프로세서의 인스트럭션 버퍼에 인스트럭션을 로드하는 방법 및 장치 | |
US20050033941A1 (en) | Early resolving instructions | |
US5887185A (en) | Interface for coupling a floating point unit to a reorder buffer | |
SE513431C2 (sv) | Buffert för icke-rapporterade hopp | |
US6385719B1 (en) | Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor | |
EP1012707B1 (en) | A dependency table for reducing dependency checking hardware | |
US7900027B2 (en) | Scalable link stack control method with full support for speculative operations | |
US5838944A (en) | System for storing processor register data after a mispredicted branch | |
EP1050805B1 (en) | Transfer of guard values in a computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |