SE520343C2 - Förfarande, system och dator för grenprediktion - Google Patents
Förfarande, system och dator för grenprediktionInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 12
- 230000015654 memory Effects 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims 4
- 230000006399 behavior Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative 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)
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.
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)
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)
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 |
-
1997
- 1997-02-12 SE SE9700475A patent/SE520343C2/sv not_active IP Right Cessation
-
1998
- 1998-02-03 DE DE69840930T patent/DE69840930D1/de not_active Expired - Fee Related
- 1998-02-03 CA CA002280764A patent/CA2280764A1/en not_active Abandoned
- 1998-02-03 WO PCT/SE1998/000190 patent/WO1998036350A1/en active Application Filing
- 1998-02-03 AU AU62328/98A patent/AU6232898A/en not_active Abandoned
- 1998-02-03 EP EP98904464A patent/EP1008035B1/en not_active Expired - Lifetime
- 1998-02-03 JP JP53564498A patent/JP2001512596A/ja active Pending
-
1999
- 1999-08-09 US US09/370,169 patent/US6233679B1/en not_active Expired - Lifetime
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 |