SE520343C2 - Förfarande, system och dator för grenprediktion - Google Patents

Förfarande, system och dator för grenprediktion

Info

Publication number
SE520343C2
SE520343C2 SE9700475A SE9700475A SE520343C2 SE 520343 C2 SE520343 C2 SE 520343C2 SE 9700475 A SE9700475 A SE 9700475A SE 9700475 A SE9700475 A SE 9700475A SE 520343 C2 SE520343 C2 SE 520343C2
Authority
SE
Sweden
Prior art keywords
branch
instruction
taken
registration
program
Prior art date
Application number
SE9700475A
Other languages
English (en)
Other versions
SE9700475D0 (sv
SE9700475L (sv
Inventor
Per Holmberg
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 SE9700475A priority Critical patent/SE520343C2/sv
Publication of SE9700475D0 publication Critical patent/SE9700475D0/sv
Priority to DE69840930T priority patent/DE69840930D1/de
Priority to AU62328/98A priority patent/AU6232898A/en
Priority to PCT/SE1998/000190 priority patent/WO1998036350A1/en
Priority to EP98904464A priority patent/EP1008035B1/en
Priority to JP53564498A priority patent/JP2001512596A/ja
Priority to CA002280764A priority patent/CA2280764A1/en
Publication of SE9700475L publication Critical patent/SE9700475L/sv
Priority to US09/370,169 priority patent/US6233679B1/en
Publication of SE520343C2 publication Critical patent/SE520343C2/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

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)
  • Debugging And Monitoring (AREA)

Description

520 343 sättningar.
- Dynamisk grenprediktion medför extra kostnader för ytterligare datastrukturer inuti CPU:n. På grund av fysiska begränsningar samt ökade kostnader kan dessa strukturer inte innefatta data för alla villkorliga greninstruktioner i programmet och flera datagrenar måste dela registeringångar i en BHT. Prestandan hos dynamisk grenprediktion beror då på programmets statistiska uppträdande. Exempelvis kan prestanda bero på huruvida programmet har matats in på adresser som utför mer än en ofta exekverad gren om de lägre bitarna i adressen i den villkorliga greninstruktionen används för att välja registeringång i BHT:n.
I telekommunikationstillämpningar matas program in i systemet och kommer att användas kontinuerligt under en lång tid, dvs vanligen minst i flera veckor tills systemet återigen matas med en ny version av programmet. Exekveringen kan i de flesta fall förväntas ha samma statistik under denna tid.
Vidare beskriver US 5 367 703 en grenprediktionsmekanism i ett superskalärt processorsystem. Mekanismen använder grenhistorik- tabeller, som innefattar en separat grenhistorik för varje hämt- position i en flerinstruktionsaccess. Ett prediktionsfält be- stående av två bitar används för att bestämma om en viss gren skall tas eller inte. Värdet för de två bitarna ökas eller minskas i beroende av om en gren tas eller inte.
US 5 423 011 beskriver en anordning bestående av ett associerat minne i vilket grenprediktionsbitar lagras. Cache-rader och jämförelseorgan för att matcha lagra prediktionsbitar med motsvarande cache-rader används.
I patentansökan GB 2 283 595 beskrivs en grenprediktionskrets som kan arbeta i en av två av användaren valbara noder.
REDocöRELsE FÖR UPPFINNINGEN Det är ett syfte med föreliggande uppfinning att åstadkomma ett förfarande och ett system som övervinner de ovan beskrivna problemen och som kan åstadkomma en grenprediktionsmekanism som kan dra fördel av det faktum att ett program går under en lång _. i. . f -- -- ^' ' ' ii » , - I~* .. I: :w n u « - o ß ~ w , 1.» »= «. » ,'_ , = .f » ~ tid.
Detta syfte åstadkoms med en halv-statisk grenprediktionsmekanism innefattande tre delar: 1) en grenprediktionsbit i instruktionen eller en extra bit i instruktionsminnet, 2) en hårdvaruräknare som kan samla in grenstatistik för en specifik Villkorlig greninstruktion i programminnet, och 3) ett bakgrundsprogram.
Grenprediktionsmekanismen arbetar sedan som följer: Bakgrundsprogrammet, t ex ett program med låg prioritet, ett periodiskt återkommande program, etc, läser instruktionsminnet för att hitta villkorliga greninstruktioner.
När en Villkorlig greninstruktion hittas startar bakgrunds- programmet hårdvaruräknaren för att registrera grenstatistik för denna gren och går sedan i vila under ett tag.
När den väcks använder bakgrundsprogrammet den insamlade statistiken för att sätta prediktionen i den villkorliga greninstruktionen i programminnet.
Ett system som arbetar på ett sådant sätt har flera fördelar, såsom: - Det är transparent för mjukvara, och även om instruktionen i programminnet används för att lagra grenprediktionsínformation påverkas inga mjukvaruutvecklingsverktyg och sättet att lagra information kan ändras mellan olika CPU-realiseringar.
- Hårdvaruutformningen är enkel - Hårdvarukostnaden är låg eftersom inga separata datastrukturer behövs för grenprediktionen.
- Förfarandet gör det möjligt att prediktera multipla villkorliga greninstruktioner parallellt vilket t ex kan behövas i superskalära processorer för att erhålla en god noggrannhet hos grenprediktionen.
- Programprestandan beror enbart på exekveringsstatistik för den predikterade grenen och inte på samverkan med andra villkorliga x 520 343 ;EfÄ 4 greninstruktioner i andra program.
Det finns emellertid villkor som måste uppfyllas för att den halvstatiska grenprediktionsmekanismen skall fungera bra, dvs ge en bra grenprediktion. i) Samma program måste exekveras under en relativt lång tid och ha ungefär samma beteende under denna tid eftersom det tar ett tid för bakgrundsprogrammet att gå igenom programmet efter alla villkorliga greninstruktioner och insamla tillförlitlig statistik. ii) Det måste vara möjligt att inkludera grenprediktionsbiten. iii) Det måste vara möjligt att inkludera en hårdvaruräknare eller räknare för att insamla exekveringsstatistik.
APZ-processorerna, som används i de AXE-telefonväxlar och vilka tillverkas av Ericsson uppfyller alla dessa krav. Hårdvaran och mjukvaran är skräddarsydd och de flesta villkorliga greninstruktioner har flera oanvända bitar som kan användas för att lagra grenprediktion.
Vidare kan bakgrundsprogrammet och räknarna användas för att uppdatera en grenhistoriktabell (BHT). I stället för att uppdatera prediktionsbiten i en villkorlig greninstruktion efter varje gång som ny statistik samlats in används bakgrundsprogrammet för att uppdatera prediktionsfältet som svarar mot instruktionen i BHT:en.
En sådan utformning kan t ex vara fördelaktig när det inte är möjligt att inkludera prediktionsbiten.
KORTFATTAD BESKRIVNING AV RITNINGARNA Föreliggande uppfinning kommer nu att beskrivas mer i detalj med hjälp av icke begränsade exempel och med hänvisning till de bilagda ritningarna, i vilka: - Figur 1 är en allmän vy över en enhet innefattande delar i en 520 343 5 dator som ingår i en grenprediktionsmekanism kompletterad med hårdvara och mjukvara för att utföra halvstatisk grenprediktion.
- Figur 2 är en detaljerad vy över hårdvaruräknaren som används av enheten i figur 1.
- Figurerna 3a och 3b är flödesscheman, som används i ett bakgrundsprogram, vilket används för att sätta en grenprediktionsbit, respektive för att uppdatera en BHT i en grenprediktionsmekanism.
BESKRIVNING AV FÖREDRAGNA UTFÖRINGSFORMER Figur 1 visar en enhet 101 uppbyggd av ett antal block som vanligen ingår i en grenprediktionsmekanism. Således har enheten 101 ett programminne 103 i vilket programmet som skall exekveras av processorn finns lagrat. Programminnet 103 är vanligen anslutet till ett cache-minne 105. Användning av cache-minnet 105 är emellertid valfri.
Programminnet 103 eller cache~minnet 105, om ett sådant används, är anslutet till ett minnesgränssnitt 107. Syftet med gränssnittet 107 är att åstadkomma ett gränssnitt mellan minnet och ett instruktionsavkodningsblock 109. Således används blocket 107 för att hämta instruktioner från minnet vilka sedan matas till instruktionsavkodningsblocket 109.
I instruktionsavkodningsblocket 109 avkodas instruktionen. När instruktionen har avkodats vet processorn vilken typ av instruktion som för närvarande behandlas. Denna information används för att utvärdera om instruktionen är en villkorlig hoppinstruktion eller inte. Informationen om instruktionen är en hoppinstruktion eller inte matas till en instruktionshämtnings- enhet i ett block 111 tillsammans med information om adressen till vilken det möjliga hoppet från blocket 109 går. Blocket 111 innefattar också ett organ 119 för att sätta en grenprediktor.
Informationen om den adress till vilken det möjliga hoppet går kan utmatas på olika sätt såsom genom att ge den absoluta adressen direkt eller som en adress relativt den aktuella adressen, dvs en relativ adress. Ett annat sätt att indikera adressen till vilken ett möjligt hopp går är att ge en 520 343 6 parameter. Parametern används sedan som ingångspost i en tabell som sedan utmatar adressen. Den senare metoden används i APZ- processorn som utvecklas och tillverkas av Ericsson.
Instruktionshämtningsenheten i blocket 111 hämtar sedan nästa instruktion på basis av den information som ges av grenprediktorn 119. Således väljs och hämtas därefter instruktionen vid den adress som indikeras av prediktions- informationen från grenprediktorsättningsorganet 119 om prediktionsinformationen som ges från grenprediktorsättnings- organet 119 indikerar att den aktuella instruktionen är en Villkorlig hoppinstruktion och att hoppet har bestämts vara sannolikt att tas i blocket 111.
Om, å andra sidan, informationen från grenprediktorn 119 indikerar att den aktuella instruktionen inte är en Villkorlig hoppinstruktion, eller om blocket 111 bestämmer att hoppet inte är sannolikt att tas, väljs instruktionen i nästa sekventiella instruktionsadress att hämtas.
Blocket 111 är också anslutet till programminnet och möjligen också till cache-minnet 105 i syfte att en enhet som samlar statistik 121 och som är placerad däri, kan uppdatera prediktionsbitar i minnena 103 och 105.
Instruktionen som avkodas i blocket 109 behandlas sedan vidare i en exekveringsenhet. Vanligen har en processor, liksom i detta fall, flera exekveringsenheter, var och en utformad för att exekvera olika typer av instruktioner. Sålunda är enheten 101 utrustad med tre exekveringsenheter 113, 115 och 117. Den första enheten 113 används för att exekvera instruktioner som innehåller heltalsoperationer, den andra enheten 115 används för att exekvera instruktioner som innehåller flyttalsoperationer och den tredje enheten 117, grenenheten, används för att exekvera hoppinstruktioner.
Således matas, beroende på typ av instruktion som skall exekveras, den avkodade instruktionen från blocket 109 till en av de tre exekveringsenheterna i blocken 113, 115 eller 117. 520 343 7 I grenexekveringsenheten i block 117 registreras information angående utfallet för varje villkorlig hoppinstruktion. Detta utförs genom att samla information från de andra två exekveringsenheterna i blocken 113 och 115. När grenenheten i blocket 117 har samlat all information som krävs för att utvärdera både om ett villkorligt hopp utfördes och om så är fallet, till vilken adress hoppet gick, varvid denna information matas till blocket 111. Blocket 111 använder återkopplingsinformationen från blocket 117 när den bestämmer adressen från vilken nästa instruktion skall hämtas. Således måste korrekt instruktion från korrekt adress hämtas om ett tidigare villkorligt hopp har felpredikterats och instruktioner hämtats från felprediktionen och vidare måste ignoreras.
I figur 2 visas hårdvaran som används i enheten 121 för att samla in statistik avseende om en gren tas eller inte. Således placeras för att samla in statistik avseende en viss Villkorlig greninstruktion i programminnet adressen för denna instruktion i ett register 201, här benämnt uppmätt adressregister (MAR).
Denna adress jämförs i ett block 203 med instruktionsadressen som för närvarande utpekas av programräknaren och som är tillgänglig i ett block 205.
De två adresserna jämförs i blocket 203 och om de två adresserna är identiska inkrementeras en första räknare i ett block 211 med 1. Utsignalen från blocket 203 matas också till ett OCH-block 207. Till OCH-blocket 207 matas också en signal som indikerar om grenen togs eller ej. Således inkrementerar utsignalen 207 en andra räknare 209 varje gång som grenen i instruktionen i minnesadressregistret tas.
Allmänt sett måste två av följande statistiska data samlas in för att sätta grenprediktionsbitarna: - antalet gånger den villkorliga grenen tas - antalet gånger den villkorliga grenen inte tas - det totala antalet gånger som den villkorliga greninstruktionen exekveras. 520 343 Qffiwfiflf 8 Figurerna 3a och 3b är flödesscheman som visar ett bakgrundsprogram som används för att samla in statistik avseende olika villkorliga hoppinstruktioner och för att sätta prediktionsbitarna i enlighet med detta. Räknarna som används av programmet är de som beskrivs i samband med figur 2.
Således börjar bakgrundsprogrammet med att scanna eller söka igenom programminnet för den första villkorliga hoppinstruktionen i ett block 303. När det finner den första villkorliga hoppinstruktionen mätes motsvarande programminnesadress in i det uppmätta adressregistret (MAR) i ett block 305. Därefter nollställer programmet alla räknare som används för att samla in statistik i ett block 307.
Därefter startas alla räknare i ett block 309.
Bakgrundsprogrammet väntar nu på att statistik kan samlas in.
Räknarna inkrementeras varje gång programmet från vilket statistik insamlas exekverar den villkorliga greninstruktion som är associerad med adressen lagras i MAR respektive när motsvarande gren tas, om realiseringen som beskrivits i samband med figur 2 används. Statistiken för en specifik villkorlig greninstruktion insamlas under en förutbestämd tid som indikeras i ett block 311, vilken kan vara lika lång för varje villkorlig greninstruktion.
Därefter avläses räknarna i ett block 313. Om den villkorliga greninstruktionen exekverades mycket få gånger under mätningsperioden återvänder bakgrundsprogammet till block 303.
Detta bestäms i ett block 315 t ex genom att jämföra antalet gånger som den villkorliga greninstruktionen exekverades med ett förutbestämt tröskelvärde. Om, å andra sidan, antalet gånger som den villkorliga greninstruktionen exekverades är tillräckligt stort för att säkerställa relevant statistik, fortsätter bakgrundsprogammet till ett block 317.
I blocket 317 beräknas den nya prediktionen. Bakgrundsprogrammet fortsätter sedan till ett block 319. I blocket 319 bestäms det om grenprediktionsbiten skall uppdateras eller inte. 520 343 9 Om antalet gånger som den villkorliga grenen togs respektive inte togs är lika eller nästan lika är således beslutet nej och bakgrundsprogrammet återvänder till blocket 303. Om, å andra sidan, beslutet är ja fortsätter bakgrundsprogammet till ett block 321.
I blocket 321 uppdateras prediktionsbiten i den villkorliga greninstruktionen i programminnet och möjligen också i cache- minnet om ett sådant används. Bakgrundsprogrammet återvänder sedan till blocket 303, i vilket sökningen efter nästa villkorliga greninstruktion börjar, eller om instruktionen var den sista villkorliga greninstruktionen i minnet börjar bakgrundsprogrammet att scanna från början av programmet i programminnet.
Förfarandet kan således antingen användas för att uppdatera en extra bit i instruktionsminnet eller en grenprediktionsbit i instruktionen.
I en annan föredragen utföringsform används statistiken som uppsamlats av bakgrundsprogrammet för att uppdatera en grenhistoriktabell (BHT). Således används, i en sådan utföringsform, bakgrundsprogrammet för att ändra BHT:en i stället för att ändra en prediktionsbit i en villkorlig greninstruktion.
Flödesschemat för en sådan realisering kan vara identisk med flödesschemat i figur 3a förutom att blocket 321 byts ut mot ett block 323 i vilken en uppdatering av BHT:en utförs i stället. I figur 3b visas ett flödesschema för en sådan realisering.
Användningen av ett system som ändrar en BHT i stället för en grenprediktionsbit i instruktionen kan vara fördelaktig i fall då en prediktionsbit inte finns tillgänglig i de villkorliga greninstruktionerna eller om prediktionssystemet som beskrives häri används i en dator som redan använder en BHT. I det senare fallet behöver mycket lite extra hårdvara och mjukvara läggas till.

Claims (18)

520 345 10 PATENTKRAV
1. System för grenprediktion, kännetecknat av - organ för att under ett tidsintervall registrera antalet gånger, som en Villkorlig greninstruktion i ett exekverande program tas respektive inte tas och - organ anslutna till de registrerande organen för att sätta en grenprediktionsbit i instruktionen eller en extra bit i instruktionsminnet till ett värde som beror på antalet gånger grenen i instruktionen eller inte togs under registreringstiden.
2. System enligt krav 1, kännetecknat av organ för att scanna det exekverade programmet efter ytterligare villkorliga greninstruktioner och påbörja registrering under ett nytt tidsintervall när det föregående tidsintervallet har förflutit.
3. System enligt krav 2, kännetecknat av att alla tidsintervall är lika långa och förbestämda.
4. System enligt något av kraven 1-3, kännetecknat av att organen för att sätta grenprediktionsbiten är anordnade att sätta grenprediktionsbiten i greninstruktionen om grenen har tagits fler gånger än den inte har tagits under registreringsintervallet och att annars nollställa grenprediktionsbiten.
5. System enligt något av kraven 2-4, kännetecknat av organ för att öka registreringstidsintervallet för en specifik greninstruktion om under den senaste registreringen för denna specifika greninstruktion antalet totala registrerade exekverade instruktioner var lägre än ett förutbestämt tröskelvärde.
6. System enligt något av kraven 2-4, kännetecknat av organ för att inte ändra grenprediktionsbiten om vid slutet av en registrering antalet totala registrerade exekverade instruktioner är lägre än ett förutbestämt tröskelvärde oavsett utfallet av den insamlade statistiken.
7. Dator innefattande: 520 343 ll - ett programminne för att lagra ett datorprogram, - en avkodningsenhet för att avkoda instruktioner i ett datorprogram lagrat i minnet, - en gränssnittsenhet ansluten till minnet och till avkodningsenheten för att hämta instruktioner från minnet till avkodningsenheten och - en exekveringsenhet för att exekvera instruktioner som avkodas av avkodningsenheten, kännetecknad av - organ anslutna till avkodningsenheten och till exekveringsenheten för att under ett tidsintervall registrera antalet gånger, som en specifik gren i en instruktion i ett exekverande program tas respektive inte tas och - organ anslutna till minnet och till registreringsorganen för att sätta en grenprediktionsbit i instruktionen eller en extra bit i instruktionsminnet till ett värde som svarar mot antalet gånger som grenen i instruktionen togs eller inte togs under registreringstiden.
8. Dator enligt krav 7, kännetecknad av organ för att sätta grenprediktionsbiten till att indikera att grenen skall tas om antalet gånger som grenen tas under registreringsintervallet överskrider antalet gånger som grenen inte tas och vice versa.
9. Förfarande för grenprediktion, kännetecknat av stegen att - registrera under ett tidsintervall antalet gånger som en specifik gren i en Villkorlig greninstruktion i ett exekverande program tas respektive inte tas, och - sätta en grenprediktionsbit i instruktionen eller en extra bit i instruktionsminnet i det exekverande programmet till ett värde som beror på antalet gånger som grenen i instruktionen togs eller inte togs under registreringstiden.
10. Förfarande enligt krav 9, kännetecknat av att, när ett föregående tidsintervall har passerats, programmet scannas efter ytterligare villkorliga greninstruktioner och att en registrering under ett nytt tidsintervall påbörjas.
11. Förfarande enligt krav 10, kännetecknat av att alla 520 343 12 tidsintervall sätts lika långa.
12. Förfarande enligt något av kraven 9-11, kännetecknat av att grenprediktionsbiten i den villkorliga greninstruktionen sätts om den registrerade villkorliga greninstruktionen tas fler gånger än den inte tas.
13. Förfarande enligt något av kraven 9-12, kännetecknat av att registreringstidsintervallet för en specifik greninstruktion ökas om under den senaste registreringen för denna specifika villkorliga greninstruktion antalet totala registrerade exekverade instruktioner är lägre än ett förutbestämt tröskelvärde.
14. Förfarande enligt något av kraven 10-13, kännetecknat av att grenprediktionsbiten, oavsett utfallet av den insamlade statistiken inte ändras om i slutet av en registrering antalet totala registrerade exekverade instruktioner är lägre än ett förutbestämt tröskelvärde.
15. System för grenprediktion, kännetecknat av - organ för att under ett tidsintervall registrera antalet gånger en specifik gren i en villkorlig greninstruktion i ett exekverande program tas respektive inte tas, - organ anslutna till reqistreringsorganen för att sätta en registeringång i en grenhistoriktabell (BHT) svarande mot adressen för den registrerade instruktionen till ett värde beroende på antalet gånger som grenen i instruktionen togs eller inte togs under registreringstiden.
16. Dator innefattande: - ett programminne för att lagra ett datorprogram, - en avkodningsenhet för att avkoda instruktioner i ett datorprogram lagrat i minnet, - en gränssnittsenhet ansluten till minnet och till en avkodningsenhet för att hämta instruktioner från minnet till avkodningsenheten och - en exekveringsenhet för att exekvera instruktionerna som avkodas av avkodningsenheten, 520 343 13 - en grenhistoriktabell (BHT) kännetecknad av - organ anslutna till avkodningsenheten och till exekveringsenheten för att under ett tidsintervall registrera antalet gånger som en specifik gren i en instruktion i ett exekverande program tas respektive inte tas och - organ anslutna till grenhistoriktabellen för att sätta en registeringång i grenhistoriktabellen till ett värde svarande mot antalet gånger som grenen i instruktionen togs eller inte togs under registreringstíden.
17. Dator enligt krav 16, kännetecknad av att grenprediktionsbiten sätts att indikera att grenen skall tas om antalet gånger som grenen tas under registreringsintervallet överskrider antalet gånger som grenen inte tas och vice versa.
18. Förfarande för grenprediktion, kännetecknat av stegen att - registrera under ett tidsintervall antalet gånger som en specifik gren i en Villkorlig greninstruktion i ett exekverande program tas respektive inte tas, och - organ för att sätta en registeringång i en grenhistoriktabell svarande mot instruktionen till ett värde svarande mot antalet gånger som grenen i instruktionen togs eller inte togs under registreringstíden.
SE9700475A 1997-02-12 1997-02-12 Förfarande, system och dator för grenprediktion SE520343C2 (sv)

Priority Applications (8)

Application Number Priority Date Filing Date Title
SE9700475A SE520343C2 (sv) 1997-02-12 1997-02-12 Förfarande, system och dator för grenprediktion
DE69840930T DE69840930D1 (de) 1997-02-12 1998-02-03 Verfahren und system zum vorhersagen von verzweigungen
AU62328/98A AU6232898A (en) 1997-02-12 1998-02-03 Method and system for branch prediction
PCT/SE1998/000190 WO1998036350A1 (en) 1997-02-12 1998-02-03 Method and system for branch prediction
EP98904464A EP1008035B1 (en) 1997-02-12 1998-02-03 Method and system for branch prediction
JP53564498A JP2001512596A (ja) 1997-02-12 1998-02-03 ブランチ予測の方法およびシステム
CA002280764A CA2280764A1 (en) 1997-02-12 1998-02-03 Method and system for branch prediction
US09/370,169 US6233679B1 (en) 1997-02-12 1999-08-09 Method and system for branch prediction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9700475A SE520343C2 (sv) 1997-02-12 1997-02-12 Förfarande, system och dator för grenprediktion

Publications (3)

Publication Number Publication Date
SE9700475D0 SE9700475D0 (sv) 1997-02-12
SE9700475L SE9700475L (sv) 1998-08-13
SE520343C2 true SE520343C2 (sv) 2003-07-01

Family

ID=20405754

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9700475A SE520343C2 (sv) 1997-02-12 1997-02-12 Förfarande, system och dator för grenprediktion

Country Status (8)

Country Link
US (1) US6233679B1 (sv)
EP (1) EP1008035B1 (sv)
JP (1) JP2001512596A (sv)
AU (1) AU6232898A (sv)
CA (1) CA2280764A1 (sv)
DE (1) DE69840930D1 (sv)
SE (1) SE520343C2 (sv)
WO (1) WO1998036350A1 (sv)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US7100154B2 (en) * 2003-01-16 2006-08-29 International Business Machines Corporation Dynamic compiler apparatus and method that stores and uses persistent execution statistics
EP1646941B1 (en) * 2003-07-09 2010-12-15 Nxp B.V. Method and system for branch prediction
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7293164B2 (en) * 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US20050155022A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses to identify hot spots
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7296130B2 (en) * 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US8135915B2 (en) * 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7526616B2 (en) 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7299319B2 (en) * 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US8443171B2 (en) * 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
US7779241B1 (en) 2007-04-10 2010-08-17 Dunn David A History based pipelined branch prediction
US9342433B2 (en) * 2013-06-20 2016-05-17 Intel Corporation Elapsed cycle timer in last branch records
US10275248B2 (en) 2015-12-07 2019-04-30 International Business Machines Corporation Testing computer software using tracking bits

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions
US5051944A (en) * 1986-04-17 1991-09-24 Ncr Corporation Computer address analyzer having a counter and memory locations each storing count value indicating occurrence of corresponding memory address
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5423011A (en) 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5835745A (en) * 1992-11-12 1998-11-10 Sager; David J. Hardware instruction scheduler for short execution unit latencies
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
TW261676B (sv) * 1993-11-02 1995-11-01 Motorola Inc
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5857104A (en) * 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US5887159A (en) * 1996-12-11 1999-03-23 Digital Equipment Corporation Dynamically determining instruction hint fields
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor

Also Published As

Publication number Publication date
US6233679B1 (en) 2001-05-15
AU6232898A (en) 1998-09-08
WO1998036350A1 (en) 1998-08-20
SE9700475D0 (sv) 1997-02-12
CA2280764A1 (en) 1998-08-20
DE69840930D1 (de) 2009-08-06
JP2001512596A (ja) 2001-08-21
EP1008035B1 (en) 2009-06-24
SE9700475L (sv) 1998-08-13
EP1008035A1 (en) 2000-06-14

Similar Documents

Publication Publication Date Title
SE520343C2 (sv) Förfarande, system och dator för grenprediktion
US6170054B1 (en) Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache
US6189141B1 (en) Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
BRPI0610926A2 (pt) método e equipamento para predizer instruções de ramificação
US7516312B2 (en) Presbyopic branch target prefetch method and apparatus
KR970071251A (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및 그 실행 방법
JPH0334024A (ja) 分岐予測の方法とそのための装置
JPH096633A (ja) データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
JPH10254699A (ja) 浮動小数点演算システム
JPH07271579A (ja) 計算機システムにおける演算方法および計算機システム
US7996618B2 (en) Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
JP2012507805A (ja) シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能
US20140052972A1 (en) Meta predictor restoration upon detecting misprediction
JP2007109116A (ja) 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体
US20180275993A1 (en) Power management of branch predictors in a computer processor
JP4009248B2 (ja) 分岐予測装置および分岐予測方法
US10423419B2 (en) Stream based branch prediction index accelerator for multiple stream exits
US20100287358A1 (en) Branch Prediction Path Instruction
US6052530A (en) Dynamic translation system and method for optimally translating computer code
EP1643357B1 (en) Information processing apparatus comprising a branch history register
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
US20060149947A1 (en) Branch instruction prediction and skipping method using addresses of precedent instructions
US10467008B2 (en) Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor
US20170344378A1 (en) Managing an effective address table in a multi-slice processor

Legal Events

Date Code Title Description
NUG Patent has lapsed