SE521071C2 - Resultatfältskö - Google Patents

Resultatfältskö

Info

Publication number
SE521071C2
SE521071C2 SE9901844A SE9901844A SE521071C2 SE 521071 C2 SE521071 C2 SE 521071C2 SE 9901844 A SE9901844 A SE 9901844A SE 9901844 A SE9901844 A SE 9901844A SE 521071 C2 SE521071 C2 SE 521071C2
Authority
SE
Sweden
Prior art keywords
buffer
instruction
result field
instructions
reordering
Prior art date
Application number
SE9901844A
Other languages
English (en)
Other versions
SE9901844D0 (sv
SE9901844L (sv
Inventor
Christian Pettersson
Paer 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
Priority claimed from SE9900042A external-priority patent/SE513431C2/sv
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to SE9901844A priority Critical patent/SE521071C2/sv
Publication of SE9901844D0 publication Critical patent/SE9901844D0/sv
Priority to AU21344/00A priority patent/AU2134400A/en
Priority to EP99965652A priority patent/EP1190313B1/en
Priority to PCT/SE1999/002362 priority patent/WO2000042501A1/en
Priority to CA002360284A priority patent/CA2360284A1/en
Publication of SE9901844L publication Critical patent/SE9901844L/sv
Publication of SE521071C2 publication Critical patent/SE521071C2/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
    • 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
    • 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
    • G06F9/384Register renaming
    • 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)

Description

15 20 25 30 521 071 2 deras inbördes beroende och ordnar dem i en riktig programföljd. När en instruktion expedieras, dvs. avkodningen av instruktionen är klar och sänd till en funktionell enhet, tilldelas även instruktionen en position i den återordnande bufferten. Den återordnande bufferten inbegriper även ett antal lagringspositioner, vilka dynamiskt allokeras till instruktionsresultat.
Instruktionens destinationsregisternummer förknippas med denna position, vilket alltså döper om instruktionens destinationsregisternummer till positionen i den återordnande bufferten. En etikett genereras för att identifiera resultatet, vilken etikett pekar på den tilldelade positionen i den återordnande bufferten. När en senare instruktion hänvisar till det omdöpta destinationsregistret, erhåller instruktionen i stället värdet som år lagrat i den återordnande bufferten. Når exekveringen av en instruktion är fullbordad och instruktionen överlämnas, dvs. när resultaten skrivs tillbaka till registerfilen, avlägsnas de tilldelade positionerna i den återordnande bufferten. Den återordnande bufferten innehåller alltså det spekulativa eller tillfälliga tillståndet för mikroprocessorn, medan en registerfil innehåller mikroprocessorns verkliga tillstånd.
När en instruktion avkodas, används registernumret för instruktionens källoperander för att komma åt både den återordnande bufferten och registerñlen. Om den återordnande bufferten inte har något destinationsregisternummer som stämmer överens med källoperanden, väljs värdet i registerfilen. Om den återordnande bufferten passar till källoperandens registernummer, väljs värdet eller en etikett för värdet från den återordnande bufferten. I en typisk instruktionssekvens, kan ett givet register skrivas många gånger. Av denna orsak, är det möjligt att olika instruktioner fär samma register att skrivas till olika positioner i den återordnande bufferten. För att erhålla det korrekta registervärde, prioriterar den återordnande bufferten flertaliga passande positioner genom programsekvensordningen, dvs. ankomsten till den återordnande bufferten, och returnerar värdet för den nyaste instruktionen, som skriver till det registret. Genom denna teknik ersätter nya införanden i den återordnande bufferten äldre införanden. Detta kräver emellertid även nya funktioner som lO 15 20 25 30 i . 1 ~ » - 521 071 s håller reda på den senaste instruktionen i den återordnande bufferten som skriver till ett visst register.
I en superskalär processor, kan resultatet av många instruktioner även förknippas med flaggor, som styr vissa operationer eller indikerar status för processorn. Dessa flaggor används oftast som informationsflaggor, vilka inte lagras permanent någon annan stans och kan indikera vissa vanligen förekommande händelser, t.ex. överföring, en nolla, "overflow", "underflow", paritet, tecken etc. Sådana flaggor är delar av ett resultatfält. En efterföljande instruktion kan använda dessa flaggor som bildats av en tidigare instruktion såsom en källoperand, t.ex. för att ta ett hoppbeslut.
Resultatfältet används alltså för information med en enkel innebörd, vilken bör vara lätt tillgänglig för efterföljande beroende instruktioner. I en superskalär processor, måste en instruktion som använder flaggor ur resultatfältet vänta på resultatet från en tidigare instruktion som uppdaterar resultatfältet, att beräknas i ALU'n. Den senare instruktionen har ett beroende på den tidigare, vilket består av flaggor i resultatfältet. Det är därför nödvändigt för beroendekontroller att även hålla reda på den senaste tidigare instruktion som uppdaterar resultatfältet eller del därav.
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 och sekvensnummer. Här kan även information om ifall resultatfältet uppdateras föras in. Den huvudsakliga återordnande bufferten anordnas normalt som en först-in-först-ut-kö för att bibehålla den ursprungliga sekvensordningen. Resultaten från den första instruktionen skrivs in i lämpliga registerpositioner när resultaten finns tillgängliga, och instruktionen avlägsnas från kön i den återordnande bufferten. Proceduren att behandla den första instruktionen för att ta hand om dess resultat och att avlägsna den från kön är känd som överlämning av instruktionen. 10 15 20 25 30 , f i - . = 521 071 4 När en ny instruktion, vilken använder innehållet i resultatfältet, tas emot, söker logiken i den återordnande bufferten efter den sista instruktionen i bufferten, som uppdaterar resultatfältet och den återordnande bufferten sätter en etikett på den inkommande instruktionen så att den inte tillåts exekveras förrän resultatfältet är uppdaterat av denna sista instruktion.
Eftersom informationen som innefattas i resultatfältet antas vara enkel och ofta använd för snabba beslut, är det ett problem med återordnande buffertar enligt teknikens ståndpunkt att sökproceduren är långsam.
Logiken måste titta igenom alla buffertpositioner för att ñnna den sista instruktionen som skriver något resultat in till resultatfältet. Denna procedur tar mycket tid, särskilt när återordnande buffertar blir större och processorerna blir snabbare med en högre klockhastighet. Eftersom flaggor i resultatfältet ofta är av avgörande vikt för exekveringen av program, t.ex. för villkorliga hopp, är det viktigt att snabba upp behandlingen av sådan information.
I analogi med det amerikanska patentet 5,768,555 kan detta lösas genom att introducera en flagga i den huvudsakliga återordnande bufferten, en flagga för sista resultatskrivning. En sådan flagga indikerar om instruktionen är den sista instruktionen i bufferten att uppdatera resultatfältet. När en ny instruktion anländer till den återordnande bufferten, som skriver till resultatfältet, sätts flaggan på den nya instruktionen och flaggan på den gamla instruktionen återställs. För att kontrollera resultatfältsberoende för en ny inkommande instruktion, är det då endast nödvändigt att finna den första ställda flaggan för sista resultatskrivning, eftersom det finns högst en sådan flagga ställd i hela bufferten. Åtminstone en del av bufferten måste emellertid sökas igenom efter flaggan för sista resultatskrivning, vilket kräver lärnplig logik och en viss tid, i synnerhet om bufferten är stor. Dessutom, när ett felförutsagt villkorligt hopp har inträffat, och de efterföljande instruktionerna i den återordnande bufferten är rensade eller bortkastade, är återhämtningen av flaggan för sista resultatskrivning bekymmersam. 10 15 20 25 30 521 071 s I det amerikanska patentet 5,805,853, visas en superskalär mikroprocessor som inbegriper omdöpning av en flaggoperand. Ett par av de viktigaste flaggoma ges separata delar i den återordnande bufferten. Detta kan separera det inbördes beroendet för flaggorna, men eftersom dessa delar läggs in i den huvudsakliga buffertarean, måste den belastas med tillkommande fält och anslutningar till funktionella enheter. Vidare, för att använda fördelarna med beskrivningen i det amerikanska patentet 5,768,555, måste en indikering av "sist-i-bufferten" inbegripas för var och en av dem.
SUMMERING AV UPPFINNINGEN Det är därför allmänt syfte för den föreliggande uppfinningen att reducera den tid som används för att finna den sista instruktionen i en återordnande buffert som skriver i resultatfältet. 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 bifogade patentkraven.
Med allmänna ord, har den föreliggande uppfinningen löst problemet att åstadkomma en snabb hantering av instruktioner som skriver i resultatfältet eller delar därav, genom att introducera en separat buffert för sådana instruktioner i den äterordnande bufferten. Denna tillkommande buffert, "resultatfältskön" är separerad från huvudbufferten och innehåller endast information associerad med instruktioner som uppdaterar resultatfältet eller en utvald del därav. Denna information innefattar ett sekvensnummer för den associerade instruktionen och företrädesvis även en indikation om ifall instruktionens resultat är tillgängligt eller inte, samt resultatet själv. När en instruktion, som uppdaterar resultatfältet eller del därav når den återordnande bufferten, lagras den på det vanliga sättet i huvudbufferten.
Sekvensnumret och företrädesvis även en klarindikering för samma 10 15 20 25 30 521 G71 fpfff; 6 i..: ' i. - instruktion och resultatfältet införs emellertid på samma gång även i den separata "resultatfältskön". Resultatfältskön verkar parallellt med huvudbufferten och utformas företrädesvis som en först-in-först-ut-kö, För att utvärdera om en instruktion är den sista i den återordnande bufferten att uppdatera resultatfältet, kontrolleras den följande positionen i resultatfältskön. Om denna position är tom, är instruktionen den sista. När man söker efter den sista instruktionen som uppdaterar resultatfältet, returneras helt enkelt informationen i den sista upptagna positionen i resultatfältskön och sökningen är därför trivial och alltså mindre tidskrävande.
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 instruktionsinformation enligt den föreliggande uppfinningen; Fig. 2 är ett blockdiagram som visar en instruktíonsprocessorenhet, 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; lO 15 20 25 30 521 071 7 Fig. 7 är ett flödesdiagram som illustrerar processen att kontrollera beroenden i en återordnande buffert enligt den föreliggande uppfinningen; Fig. 8 är ett flödesdiagram som illustrerar processen att lagra resultat enligt den föreliggande uppfinningen; sarnt Fig. 9 är ett flödesdiagram som illustrerar processen att överlämna instruktioner från en återordnande buffert enligt den föreliggande uppfinningen.
DETALJERAD BESKRIVNING AV DE FÖREDRAGNA UTFÖRINGSFORMERNA I fig. 1, illustreras flödet för instruktionsinformationen 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 62 enligt den föreliggande uppfinningen innefattar även en tillkommande buffert 20, i det följande hänvisad till såsom en "resultatfältskö", i vilken sekvensnumrena för instruktioner som uppdaterar resultatfältet 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-15, i vilka information som hör till instruktionen kan lagras. Resultatfältskön 20 innefattar på ett liknande sätt ett antal resultatfältsköpositioner 19. Varje resultatfältsköposition 19 har ett antal fält, av vilka en del kan utgöra ett underuppsättning av fälten i huvudbuffertens positioner 18. 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. Andra buffertlösningar, vilka verkar på ett icke-FIFO-sätt kan användas, t.ex. där ordningen för instruktioner som överlämnas påverkas av beroendestatus. Sådana lösningar är som sådana lO 15 20 25 30 521 071 s tillgängliga vid teknikens ståndpunkt, men i allmänhet inte särskilt fördelaktiga i den föreliggande ansökan.
Information 30 som avser en ny instruktion sänds till den återordnande bufferten 62. Informationen innefattar normalt den verkliga instruktionen 1 1 eller en etikett till eller annan representation av instruktionen, samt sekvensnumret 12, vilket indikerar ordningen, i vilken instruktionerna ll ska överlämnas. Tillhörande information kan även innefatta fält som indikerar datakällsoperander 13, dvs. vilka variabler eller minnesinnehåll som' ska användas som operander för instruktionen. Fält som indikerar resultatdestinationen 14 kan också innefattas, vilka fält indikerar var resultaten från instruktionen ska lagras.
Informationen 30 om den nya instruktionen läggs in i den första tillgängliga positionen i huvudbufferten lO vid slutet av FIFO-kön. Om den nya instruktionen uppdaterar resultatfältet eller en viss del därav, förses även resultatfältskön 20 med information. Företrädesvis lagras sekvensnumret 1 1 vid den första tillgängliga positionen i resultatfältskön 20.
En annan ofta använd information som hör ihop med instruktionerna är om instruktionen är exekverad eller inte, dvs. om resultatet är tillgängligt. Ett fält för ALU klar 16 indikerar om instruktionens resultat är tillgängligt eller inte. Ett sådant fält finns företrädesvis tillgängligt både i huvudbufferten 10 och resultatfältskön 20. Resultatfältet 16 är företrädesvis även tillgängligt i resultatfältskön 20, men är i ett typiskt fall inte nödvändig i huvudbufferten 10.
När en ny instruktion anländer, vilken har en källoperand i resultatfältet, måste den sista instruktionen som uppdaterar resultatfältet hittas.
Resultatfältskön kommer enligt den föreliggande uppñnningen sända den sista upptagna positionen såsom beroendet för den nya instruktionen.
Huvudbufferten behöver alltså inte göra nägra speciella sökningar.
Huvudbufferten sänder endast beroenden för vanliga destinationsoperander. lO 15 20 25 30 , . __ f > - 521 071 9 Om ett fält för ALU klar finns i resultatfältskön, kan även status på beroendet kontrolleras. Om fältet för ALU klar indikerar att instruktionen redan är exekverad, är resultatet i resultatfältet tillgängligt, och det finns inget beroende som stoppar en vidare behandling.
När den återordnande bufferten överlämnar instruktioner som uppdaterar resultatfältet, skiftar även resultatfältskön ut instruktioner och uppdaterar resultatfältet.
Tiden för att söka efter instruktioner som uppdaterar resultatfältet reduceras väsentligt genom den föreliggande uppfinningen. Detta orsakas av användningen av en sådan separat buffert för resultatfältsuppdaterande instruktioner. Den sista instruktionen i kön är uppenbart den sista som uppdaterar resultatfältet, och ingen sökning i den stora huvudbufferten behöver genomföras.
Detta föreslagna förfarande enligt den föreliggande uppfinningen inbegriper skapandet av en extra kopia av en del information, eftersom den kan uppträda både i huvudbufferten 10 och i resultatfältskön 20, även om mängden kopierad informationen är begränsad. Sekvensnumren och flaggan för ALU klar för vissa instruktioner är alltså dubblerade. Inga "sist-i-buffert"- indikatorer för resultatfältsuppdateringen behövs i huvudbufferten. Om antalet positioner och fält i resultatfältskön 20 hålls lågt, tar detta extra minne endast en liten mängd extra utrymme. Detta utrymme är ofta försumbart i jämförelse med den logik som behövs för att söka genom huvudbufferten lO.
Den föreliggande uppfinningen tillhandahåller sålunda ett förfarande vilket hanterar instruktioner som uppdaterar resultatfältet på ett snabbt sätt, vilket medför att exekveringen av instruktioner som är beroende av resultatfältet snabbas upp. Förfarandet är allmänt tillämpbart på alla processorer som använder omkastad exekvering. lO 15 20 25 30 521 071 10 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 telekommunikations-system, 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) i processorsystemet finns det i grunden två stora komponenter, en signalprocessorenhet (SPU) och en instruktionsprocessor- 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 uppñnningen och vilken konventionell teknik som helst 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 prograrn 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 datamínneshanterare DSH 56 hanterar 10 15 20 25 30 521 071 1l åtkomsten till DS'n 57. En registerminnesenhet RMU 54 innehåller registerminnen 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 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, t.ex. ett resultatfält. Den har normalt fiera 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 statusregister 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- 10 15 20 25 30 521 071 12 ordnande buffert enligt teknikens ståndpunkt. I fig. 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 beroendekontrollenhet 40 för jämförelse av destinationsoperanderna med 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 att rensa den återordnande bufferten om ett felpredikterat villkorligt hopp detekteras. Enheten för blandande funktioner 41 understödjer även beroendekontrollenheten 40 med lämplig information.
I fig. 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 avsedd att uppdatera resultatfältet, sänds även åtminstone sekvensnumret till en resultatfältskö 20. Resultatfältskön ä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 som påverkar resultatfältet sätts in, upptas alltid den sista positionen i resultatfältskön 20 av den sista instruktionen som uppdaterar resultatfältet. Instruktionerna överlämnas 10 15 20 25 30 521 071 13 från den första positionen, på samma gång som de överlämnas från huvudbufferten 10. Resultatfältskön 20 är alltid ansluten till beroendekontrollenheten 40, för en snabb leverans av en indikation för den sista instruktionen som uppdaterar resultatfältet. Beroendekontrollenheten 40 utvinner inte någon resultatfältsinformation från huvudbufferten 10.
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 samverkan med huvudbufferten håller den reda på olika underhålls~ ochlstyrfunktioner. Enheten för blandade funktioner 41 understödjer även beroendekontrollenheten 40 med lämplig information. Resultatfältskön 20 förses även med lämpliga resultat. Om resultaten av en instruktion som lagras i resultatfältskön 20 är tillgängliga, är beroendet upplöst, och vilka efterföljande beroende instruktioner som helst kan förberedas för exekvering.
Det skulle vara möjligt att lagra instruktionerna som uppdaterar resultatfältet endast i resultatfältskön 20, men överlämningen av instruktioner i en korrekt ordning skulle bli mer komplicerat om instruktioner kan överlämnas från vilken som helst av två buffertar. Mer föredraget är alltså att lagra så lite information som möjligt i resultatfältskön 20. Detta leder till en dubbel lagring av viss information, om informationen är en kopia av informationen som finns tillgänglig i huvudbufferten, men är försumbar i jämförelse med nyttan av arrangemanget.
Resultatfältet spelar en speciell roll i exekveringen av instruktioner.
Resultatfältet innefattar flaggor och indikatorer, vilka inte lagras på något permanent sätt någon annanstans, och vilka resultat är avsedda för att styra exekveringen av instruktioner i en nära framtid. Resultatfältet uppdateras därför ofta, och många instruktioner är beroende just på resultatfältet. Det totalt sett mest vanliga beroendet oberoende av vad, är i en normal återordnande buffert beroendet på resultatfältet. En snabb behandling av sådana beroenden snabbar alltså upp den totala processorhastigheten. 10 15 20 25 30 521 071 14 e - » . . \ Proceduren för att hantera instruktioner i en återordnande buffert kan delas in i olika delprocesser. I flg. 6, illustreras en delprocess enligt den föreliggande uppfinningen avseende insättning av nya 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 steg 104 i huvudbufferten. I steg 106 utförs en beroendekontroll. Denna procedur kommer att beskrivas mer i detalj nedan.
I steg 108, avgörs det om instruktionen uppdaterar resultatfältet eller inte.
Om instruktionen uppdaterar resultatfältet, lagras information som associeras med instruktionen i resultatfältskön i steg 110. Inforrnationen innefattar normalt instruktionens sekvensnummer, och företrädesvis även ett fält för indikering om resultatet från instruktionen är tillgängligt.
Delprocessen slutar i steg 112.
I ñg. 7, illustreras processen för beroendekontroll. Processen börjar i steg 120. I steg 122, avgörs det om instruktionen använder några resultat från resultatfältet som indata för dess beräkningar eller andra åtgärder, eller inte.
Om inte, fortsätter delprocessen till steg 130. Om instruktionen använder information från resultatfältet, hittas den sista upptagna positionen i resultatfältskön. Instruktionen i denna position är den sista instruktion som uppdaterar resultatfältet, den sista instruktion som behöver vara klar innan den nya instruktionen kan använda resultatfältsinformationen. I steg 126 görs en kontroll, om resultatet från den sista instruktionen som uppdaterar resultatfältet är tillgängligt. I ett sådant fall, hindras inte den nya instruktionen genom att behöva vänta på att resultatfältet ska uppdateras.
Annars fortsätter processen till steg 128, där beroendet av instruktionen i den sista upptagna positionen i resultatfältskön noteras. Processen fortsätter till steg 130, där andra beroenden undersöks. Sådana procedurer är inte direkt delar av den föreliggande uppfinningen och kommer inte att beskrivas mer i detalj. Delprocessen slutar i steg 132.
Nästa process som inbegriper resultatfältskön är lagringen av resultat av exekverade instruktioner, vilka väntar på att överlämnas. En sådan 10 15 20 25 30 521 071 15 . i, - . , ,:~-=., resultatlagringsprocess illustreras i fig. 8. Processen börjar i steg 140. I steg 142, tas nya resultat emot från ALU'n. Dessa resultat associeras med en viss instruktion som är lagrad i den återordnande bufferten, och resultat, etiketter därav eller någon annan representation av de nya resultaten lagras tillsammans med den associerade instruktionen i huvudbufferten i den återordnande bufferten i steg 144. I steg 146, avgörs det om resultaten ska lagras i resultatfältet, och om så är fallet, i steg 148, ställs indikeringen ALU klar i resultatfältskön i den position som motsvarar instruktionen ifråga.
Delprocessen slutar i steg 150.
Fig. 9 illustrerar processen av att överlämna instruktioner från den återordnande bufferten. Processen börjar i steg 160. I steg 162, görs den första positionen i huvudbufferten klar för överlämning. I steg 164 skrivs resultatet för den första instruktionen in i dataminnen som ges av resultatdestinationsinformationen. I steg 166, stryks den första positionen i huvudbufferten och de efterföljande instruktionerna poppas. I steg 168, kontrolleras det om samma sekvensnummer också finns tillgängligt i resultatfältskön. Om så är fallet, i steg 170, stryks även den första positionen i resultatfältskön och kön poppas. Processen slutar i steg 170.
Från den ovanstående beskrivningen inses fördelarna med den föreliggande uppfinningen lätt. Genom att extrahera information som är relaterad till instruktioner som skriver i resultatfältet från huvudbufferten redan i insättningsfasen, underlättas den efterföljande sökningen efter den sista instruktionen i den återordnande bufferten som uppdaterar resultatfältet.
Det extra utrymme som behövs för resultatfältskön kompenseras minskningen av de nödvändiga sökningsorganen i huvudbufferten. Den faktiska proceduren att söka efter den sista instruktionen som uppdaterar resultatfältet är möjlig att utföra snabbare, eftersom den är mer eller minde trivial för att finna den sista upptagna positionen i resultatfältskön. Detta leder i sin tur till en snabbare total utvärderingstid.
.V-HH; :gi u' _ 16 I * , ' & i* Fackrnannen inser att olika modifieringar och ändringar kan göras i de beskrivna utföringsformerna av den föreliggande uppfinningen utan att avlägsna sig från dess omfattning, vilken definieras av de medföljande patentkraven.

Claims (14)

10 20 25 30 5 2 1 0 7 1 I? NYA PATENTKRAV
1. En återordnande buffert (62) innefattande en huvudbuffert (10) anordnad för lagring av ett flertal instruktioner (11) och tillhörande information (12-15), varvid åtminstone en av instruktionerna (11) uppdaterar ett resultatfält (16) eller del därav, kännetecknad av att den återordnande bufferten (62) vidare innefattar en tillkommande buffert (20) som är en kö med ett flertal positioner (19), vilka var och en är anordnade för lagring av information (12, 15, 16) tillhörande instruktioner som uppdaterar resultatfältet (16) eller del därav.
2. Den återordnande bufferten (62) enligt patentkrav l, 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 återordnade bufferten (62) enligt patentkrav 1, 2 eller 3, kännetecknad av att den tillkommande bufferten (20) lagrar resultatfältet (16).
5. Den återordnade bufferten (62) enligt något av de föregående patentkraven, kännetecknad av att den tillkommande bufferten (20) har ett antal positioner (19) vilket är i samma storleksordning som antalet positioner (18) i huvudbufferten, och 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 (18) 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 10 15 20 30 521 071 /8 bufferten (20) åtminstone innefattar ett sekvensnummer (12) som är associerat med en instruktion som uppdaterar resultatfältet (16) eller del därav.
7. Den återordnande bufferten (62) enligt patentkrav 6, kännetecknad av att varje position (19) i den tillkommande bufferten (20) även innefattar ett fält som indikerar om resultaten för den associerade instruktionen är tillgängliga.
8. Den återordnande bufferten (62) enligt något av de föregående patentkraven, kännetecknad av att den återordnande bufferten innefattar en beroendekontrollenhet (4) ansluten till den tillkommande bufferten (20) och till huvudbufferten (10).
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 beroenden i en återordnande buffert (62), innefattande stegen: lagring av en instruktion och tillhörande information i en huvudbuffert (10) i den återordnande bufferten (62); om instruktionen låser resultatfältet eller del därav, hittande av den sista instruktionen i den återordnande bufferten (62) som uppdaterar resultatfältet eller nämnda del därav och ställande av ett beroende till nämnda sista instruktion; lagring av resultat av exekverade instruktioner i huvudbufferten (10); överlämnande av instruktioner från huvudbufferten (10), och kännetecknat av att förfarandet innefattar de vidare stegen: lagring av information associerad med en instruktion som uppdaterar resultatfältet eller nämnda del därav i en ledig position i en kö med ett flertal positioner (19) i en tillkommande buffert (20) i den återordnande bufferten {ñ7); \...__. 10 15 20 25 521 O 71 F? varvid steget att hitta den sista instruktionen som uppdaterar resultatfältet eller nämnda del därav utförs på den tillkommande bufferten (20).
11. Förfarande för hantering av beroenden enligt patentkrav 10, kännetecknat av att steget att lagra information i den tillkommande bufferten (20) innefattar lagring av information i ett först-in-först-ut-sätt, varvid steget att hitta den sista instruktionen som uppdaterar resultatfältet eller nämnda del därav innefattar utväljandet av den sista upptagna positionen i den tillkommande bufferten (20).
12. Förfarande för hantering av beroenden enligt patentkrav 11, kännetecknat av att steget att lagra information i den tillkommande bufferten (20) innefattar lagring av ett sekvensnummer associerat med instruktionen.
13. Förfarande för hantering av beroenden enligt patentkrav 12, kännetecknat av ställande av en indikation i den tillkommande bufferten (20) när resultat associerade med en instruktion som uppdaterar resultatfältet eller nämnda del därav blir tillgängligt.
14. Förfarande för hantering av beroenden enligt något av patentkraven 10 till 13, kännetecknat av överlämnande av instruktionen i den första positionen i den tillkommande bufferten (20) om den motsvarande instruktionen i huvudbufferten (10) överlämnas.
SE9901844A 1999-01-11 1999-05-20 Resultatfältskö SE521071C2 (sv)

Priority Applications (5)

Application Number Priority Date Filing Date Title
SE9901844A SE521071C2 (sv) 1999-01-11 1999-05-20 Resultatfältskö
AU21344/00A AU2134400A (en) 1999-01-11 1999-12-15 Result field queue
EP99965652A EP1190313B1 (en) 1999-01-11 1999-12-15 Result field queue
PCT/SE1999/002362 WO2000042501A1 (en) 1999-01-11 1999-12-15 Result field queue
CA002360284A CA2360284A1 (en) 1999-01-11 1999-12-15 Result field queue

Applications Claiming Priority (2)

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ö

Publications (3)

Publication Number Publication Date
SE9901844D0 SE9901844D0 (sv) 1999-05-20
SE9901844L SE9901844L (sv) 2000-07-12
SE521071C2 true SE521071C2 (sv) 2003-09-30

Family

ID=26663476

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9901844A SE521071C2 (sv) 1999-01-11 1999-05-20 Resultatfältskö

Country Status (5)

Country Link
EP (1) EP1190313B1 (sv)
AU (1) AU2134400A (sv)
CA (1) CA2360284A1 (sv)
SE (1) SE521071C2 (sv)
WO (1) WO2000042501A1 (sv)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2608430B (en) * 2021-07-01 2023-07-05 Advanced Risc Mach Ltd A data processing apparatus and method for handling stalled data

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
WO1998033116A2 (en) * 1997-01-29 1998-07-30 Advanced Micro Devices, Inc. A line-oriented reorder buffer for a superscalar microprocessor
EP1012707B1 (en) * 1997-08-06 2006-07-26 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware

Also Published As

Publication number Publication date
SE9901844D0 (sv) 1999-05-20
EP1190313B1 (en) 2012-11-14
CA2360284A1 (en) 2000-07-20
EP1190313A1 (en) 2002-03-27
AU2134400A (en) 2000-08-01
SE9901844L (sv) 2000-07-12
WO2000042501A1 (en) 2000-07-20

Similar Documents

Publication Publication Date Title
US6131157A (en) System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
EP0957428B1 (en) Method and apparatus for fetching non-contiguous instructions in a data processing system
US5826055A (en) System and method for retiring instructions in a superscalar microprocessor
EP0432774B1 (en) Processor architecture with decoupled instruction fetching
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US6360317B1 (en) Predecoding multiple instructions as one combined instruction and detecting branch to one of the instructions
US20170185410A1 (en) Handling Move Instructions Using Register Renaming
EP0677188B1 (en) System and method for assigning tags to instructions to control instruction execution
US5708837A (en) Method and apparatus for register renaming in a computer system using a separate arithmetic available queue
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP3177194B2 (ja) 命令データを位置合せするための方法および装置
JPH10301778A (ja) レジスタの名前変更を管理する方法および装置
US6108771A (en) Register renaming with a pool of physical registers
EP1099158B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
KR0122527B1 (ko) 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
KR100403676B1 (ko) 카운터플로우파이프라인프로세서와카운터플로우파이프라인프로세서에서유용한명령의레지스터값을라벨링하는방법
EP0762271A2 (en) Early completion of floating-point operations during load/store multiple operations
SE521071C2 (sv) Resultatfältskö
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment
US6535972B1 (en) Shared dependency checking for status flags
SE513431C2 (sv) Buffert för icke-rapporterade hopp
Omondi et al. Data Flow: Detecting and Resolving Data Hazards

Legal Events

Date Code Title Description
NUG Patent has lapsed