SE513431C2 - Buffert för icke-rapporterade hopp - Google Patents

Buffert för icke-rapporterade hopp

Info

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
Application number
SE9900042A
Other languages
English (en)
Other versions
SE9900042D0 (sv
SE9900042L (sv
Inventor
Hans Christian Pettersson
Paer David Berglin
Original Assignee
Ericsson Telefon Ab L M
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to SE9900042A priority Critical patent/SE513431C2/sv
Publication of SE9900042D0 publication Critical patent/SE9900042D0/sv
Priority to SE9901844A priority patent/SE521071C2/sv
Priority to DE69939880T priority patent/DE69939880D1/de
Priority to CA002360284A priority patent/CA2360284A1/en
Priority to EP99965652A priority patent/EP1190313B1/en
Priority to AU21343/00A priority patent/AU2134300A/en
Priority to AU21344/00A priority patent/AU2134400A/en
Priority to PCT/SE1999/002361 priority patent/WO2000042500A1/en
Priority to EP99965651A priority patent/EP1190312B1/en
Priority to PCT/SE1999/002362 priority patent/WO2000042501A1/en
Priority to CA002360283A priority patent/CA2360283A1/en
Priority to US09/479,954 priority patent/US6550003B1/en
Publication of SE9900042L publication Critical patent/SE9900042L/sv
Publication of SE513431C2 publication Critical patent/SE513431C2/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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)

10 15 20 25 30 51514431 PATENTKRAV
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).
SE9900042A 1999-01-11 1999-01-11 Buffert för icke-rapporterade hopp SE513431C2 (sv)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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