SE510295C2 - Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden - Google Patents

Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden

Info

Publication number
SE510295C2
SE510295C2 SE9702762A SE9702762A SE510295C2 SE 510295 C2 SE510295 C2 SE 510295C2 SE 9702762 A SE9702762 A SE 9702762A SE 9702762 A SE9702762 A SE 9702762A SE 510295 C2 SE510295 C2 SE 510295C2
Authority
SE
Sweden
Prior art keywords
processor
instructions
instruction
conditional jump
reading
Prior art date
Application number
SE9702762A
Other languages
English (en)
Other versions
SE9702762L (sv
SE9702762D0 (sv
Inventor
Carl Tobias Roos
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 SE9702762A priority Critical patent/SE510295C2/sv
Publication of SE9702762D0 publication Critical patent/SE9702762D0/sv
Priority to KR1020007000634A priority patent/KR20010022065A/ko
Priority to AU83652/98A priority patent/AU8365298A/en
Priority to CN98809339A priority patent/CN1271434A/zh
Priority to PCT/SE1998/001334 priority patent/WO1999004335A2/en
Priority to EP98934048A priority patent/EP0998701A2/en
Priority to JP2000503482A priority patent/JP2001510916A/ja
Priority to BR9810768-2A priority patent/BR9810768A/pt
Publication of SE9702762L publication Critical patent/SE9702762L/sv
Publication of SE510295C2 publication Critical patent/SE510295C2/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

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

35 510 295--- _ 2 _ Processorn är anpassad att, vid inläsandet av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varefter instruktioner är läsbara till, och bearbetbara av, processorn enligt förutsägelsen direkt efter inläsandet av den villkorade hoppinstruktionen. En felaktig förutsägelse resulterar i att efterföljande inlästa och delvis bearbetade instruktioner tas bort ur processorn för att bereda plats för en inläsning av korrekta instruktioner enligt villkorets uppfyllande.
TEKNIKENS TIDIGARE STÅNDPUNKT För att ytterligare förenkla förståelsen av teknikens tidigare ståndpunkt och föreliggande uppfinning skall några begrepp som kommer att användas i den kommande beskrivningen definieras här.
Vid inläsning av en instruktion, bearbetning av densamma och utläsning av det bearbetade resultatet sker i olika steg. Vid inläsningen av instruktionen till en processor förbereds en möjlig bearbetning av instruktionen. En instruktion innefattar vanligtvis tvá operander och en operation som skall tillämpas pà dessa operander.
Förberedelsen av instruktionen innefattar bland annat ett så kallat "Fetch-steg". Detta steg innefattar ett inhämtande av operand-värden eftersom själva instruktionen ofta, dock inte alltid, endast innehåller en adress till en position i ett minne där värdet för operanden finns.
Ett Fetch-steg kan ta olika lång tid för olika instruktioner beroende på varifrån olika operand-värden skall hämtas. Detta betyder att en första instruktion som lästs in före en andra instruktion bearbetas efter den senare inlästa andra instruk- tionen pà grund av att operand-värdena till den andra instruk- tionen är tillgängliga snabbare än operand-värdena till den första instruktionen. Således kan resultatet från den andra instruktionen finnas färdigt i instruktionsbufferten före 10 15 20 25 30 35 510 29is-i _ 3 _ resultatet från den första instruktionen.
En bearbetning av en instruktion sker i en del av processorn som benämns Aritmetisk Logisk Enhet eller ALU (Arithmetical Logical Unit).
Eftersom ALU'n inte behöver bearbeta instruktionerna i sek- vensordning kan väntetiderna för ALU'n, i det fall då Fetch- steget för en instruktion tar lång tid, minskas.
Vid en felaktig förutsägelse av uppfyllandet av en villkorad hoppinstruktion tas felaktigt inlästa instruktioner bort ur processorn. Detta kallas här "spolning" av processorn.
Den allmänna metoden att förutsäga ett villkors uppfyllande, såsom det beskrivits ovan, visas exempelvis i patentpublika- tion EP-A2-0 706 121.
Många olika sätt att minska den menliga effekten av en felak- tig förutsägelse av uppfyllandet av en villkorad hoppinstruk- tion är kända.
Publikation US-A-5 381 532 beskriver en processor som nyttjar en alternativ ingángsbuffert, en grenbuffert (B). Vid inläsan- det av en villkorad hoppinstruktion läses instruktionerna en- ligt förutsägelsen för villkorets uppfyllande in sekvensiellt efter den villkorade hoppinstruktionen och de instruktioner som skall inhämtas om förutsägelsen är felaktig läses och lagras i grenbufferten.
Vid en eventuell spolning av processorn är de korrekta in- struktionerna redan inlästa i grenbufferten och är således omedelbart tillgängliga för processorn. Detta minskar den tidsförlust som en felaktig förutsägelse och efterföljande spolning medför.
Publikationerna US-A-5 127 091, US-A-5 539 911, US-A-5 237 664 10 15 20 25 30 35 510 295 _ 4 _ och US-A-4 742 451 visar och beskriver andra lösningar som bygger på nyttjandet av en parallell buffert för inläsandet av gren-instruktioner.
Det är även tidigare känt att förfina den algoritm som beräk- nar sannolikheten för att ett villkor för en villkorad hopp- instruktion skall vara uppfyllt och att därigenom minska an- talet felaktiga förutsägelser. Publikationen "A Tour of the Pentium (R) Pro Processor Microarchitecture" : Intel Corpo- ration, beskriver en processor där man endast nyttjar en in- port i processorn och förutsätter att det förutsagda uppfyl- landet av ett villkor stämmer.
Detta ger en mycket snabb och effektiv hantering vid korrekta förutsägelser men medför en total spolning av innehållet i processorn vid en felaktig förutsägelse utan att de korrekta instruktionerna ligger redo i en alternativ buffert.
Det skall även nämnas att en mer noggrann förutsägelse kräver en högre kapacitet vid den statistiska utvärderingen av vill- korens uppfyllande än vad en mindre noggrann förutsägelse kräver.
Det är även känt att låta en villkorad hoppinstruktion föregås av en villkors-testande instruktion. Denna instruktion ligger företrädesvis så långt före själva hoppinstruktionen så att den hinner exekveras och lämna sitt resultat innan själva hoppinstruktionen kommer in i processorns inport.
När då den villkorade hoppinstruktionen läses in i processorn är redan resultatet för villkorets uppfyllande känt genom den tidigare exekveringen av den villkors-testande instruktion och rätt instruktioner kan läsas in direkt efter den villkorade hoppinstruktionen.
Inga instruktioner vars resultat kan påverka villkoret för den villkorade hoppinstruktionen får ligga mellan den villkors- 10 15 20 25 30 35 510 295 _ _ 5 _ testande instruktionen och den villkorade hoppinstruktionen och huruvida den villkors-testande instruktionen kan läggas tillräckligt långt framför den villkorade hoppinstruktionen beror således på om instruktioner som kan påverka villkorets uppfyllande ligger nära, eller alldeles före, själva hoppin- struktionen.
Denna begränsning medför försvàringar vid mjukvaru-utveckling och i vissa fall tidsfördröjningar vid införandet av tomma in- struktioner mellan en villkors-testande instruktion och till- hörande villkorade hoppinstruktion.
Publikationerna GB-A-2 293 671 och EP-A2-0 509 245 beskriver båda en dator eller dator-arkitektur som huvudsakligen bygger på att datorn omfattar en separat processor avsedd att bear- beta villkorade hoppinstruktioner separat fràn, och parallellt med, övriga instruktioner.
Det skall även nämnas att de instruktioner som hanteras inom en processor förenklat kan delas upp i två typer av instruk- tioner, processor-externa instruktioner och processor-interna instruktioner.
Exempelvis kan instruktioner i assembler-kod benämnas proces- sor-externa instruktioner medan de instruktioner som erhålls efter att assemblerkoden omvandlats till micro-kod kan be- nämnas processor-interna instruktioner.
Det är i dessa sammanhang även känt att en processor-extern instruktion normalt bildar en serie av processor-interna in- struktioner vid omvandlingen.
Det är även känt att även om en processor-extern instruktion inte omfattar en villkorad hoppinstruktion så kan en sådan in- struktion resultera i en processor-intern villkorad hoppin- struktion vid omvandlingen frán processor-extern kod till processor-intern kod. 10 15 20 25 30 35 510 295 nEnocönELsz-z rön FÖRELIGGANDE UPPFINNING TEKNISK-r PROBLEM Under beaktande av teknikens tidigare ståndpunkt, såsom den beskrivits ovan, torde det få anses vara ett tekniskt problem att, med utgångspunkt från en processor som nyttjar förutsäg- elser av uppfyllandet av villkoret för en villkorad hoppin- struktion för inläsning av efterföljande instruktioner till processorn, där respektive inläst instruktion tilldelas ut- rymme i en här benämnd instruktionsbuffert, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekvensi- ella ordningen, och vilken instruktionsbuffert omfattar åt- minstone en sista position inom instruktionsbufferten som ut- gör en utläsningsposition, varifrån resultaten från bearbet- ningen av respektive instruktion är utläsbara i den sekvensi- ella ordningen, där en felaktig förutsägelse resulterar i att efterföljande inlästa och delvis bearbetade instruktioner tas bort ur processorn för att bereda plats för en inläsning av korrekta instruktioner enligt villkorets uppfyllande, kunna inse hur tidsförlusterna vid en eventuell spolning av proces- sorn skall kunna minskas i förhållande till känd teknik.
Det är vidare ett tekniskt problem att kunna inse hur ett snabbare Fetch-steg och en högre nyttjandegrad av processorn skall kunna erbjudas i förhållande till känd teknik, vid en eventuell spolning av processorn.
Det är ett tekniskt problem att kunna inse hur detta skall kunna erbjudas utan att nyttja villkors-testande instruktioner som föregår den villkorade hoppinstruktionen eller en separat processor för bearbetandet av villkorade hoppinstruktioner.
Det är ett tekniskt problem att kunna inse hur förutsägelsens riktighet skall kunna utvärderas innan resultatet från bear- betningen av den villkorade hoppinstruktionen nått utläsnings- 10 15 20 25 30 35 510 295i positionen.
Det är ett tekniskt problem att kunna inse hur en spolning av processorn skall kunna ske på ett korrekt sätt vid en felaktig förutsägelse då resultatet från bearbetandet av den villkorade hoppinstruktionen ännu ej nått utläsningspositionen.
Det måste få anses vara ett tekniskt problem att kunna inse hur ett inhämtande av korrekta instruktioner skall ske vid en felaktig förutsägelse, samt hur detta skall anpassas till olika processorarkitekturer.
Det är ytterligare ett tekniskt problem att kunna inse hur en processor skall anpassas hárdvarumässigt för att kunna erbjuda en möjlighet att utvärdera riktigheten av en förutsägelse av ett villkors uppfyllande innan resultatet från bearbetningen av den villkorade hoppinstruktionen nått utläsningspositionen, för att därefter, vid en eventuellt felaktig förutsägelse, kunna genomföra en korrekt spolning av processorn.
Det är även ett tekniskt problem att kunna inse hur en metod eller processor enligt föreliggande uppfinning kan anpassas till att även effektivisera en processor vid hanteringen av processor-interna villkorade hoppinstruktioner.
Lösnnrczn För att kunna lösa ett eller flera av de ovan angivna tekniska problemen utgår föreliggande uppfinning fràn en metod för att hantera specifika instruktioner, så kallade villkorade hoppin- struktioner, i en dataprocessor, där respektive inläst in- struktion tilldelas utrymme i en här benämnd instruktionsbuf- fert, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekventiella ordning enligt vilken respektive instruktion är inläst in i processorn. Åtminstone en sista position inom instruktionsbufferten utgör 10 15 20 25 30 35 is1p 295 _ 3 _ en utläsningsposition från instruktionsbufferten. Efter att instruktionerna blivit bearbetbade av processorn är resultatet från bearbetningen lagringsbart i respektive utrymme hörande till instruktionen i instruktionsbufferten, för att slutligen vara utläsbart från utläsningspositionen i den sekventiella ordningen.
Processorn är anpassad att, vid inläsandet av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varefter instruktioner är läsbara till, och bearbetbara av, processorn enligt denna förutsägelse direkt efter inläsandet av den vill- korade hoppinstruktionen.
En felaktig förutsägelse resulterar i att efterföljande in- lästa och delvis bearbetade instruktioner tas bort ur proces- sorn för att bereda plats för en inläsning av korrekta in- struktioner enligt villkorets uppfyllande.
Med utgångspunkt från en sådan metod anvisar föreliggande upp- finning specifikt att utfallet från bearbetandet av den vill- korade hoppinstruktionen, och därmed vetskapen om uppfyllandet av tillhörande villkor, görs tillgängligt för utvärdering innan utrymmet inom instruktionsbufferten, hörande till den villkorade hoppinstruktionen, nått utläsningspositionen.
Vidare anvisar föreliggande uppfinning att borttagande av in- struktioner ur processorn endast berör instruktioner som är sekventiellt inlästa efter den villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbetningen av instruk- tioner, vid en felaktig förutsägelse av uppfyllandet av vill- koret.
Med syftet att erbjuda en möjlighet att ytterligare tillvara- taga den tidsvinst som erhålls genom att tidigarelägga vet- skapen om huruvida en förutsägelse av huruvida en villkorad hoppinstruktion är korrekt eller ej, anvisar en metod enligt föreliggande uppfinning vidare att en inhämtning av de kor- 10 15 20 25 30 35 510 235 _ 9 _ rekta instruktionerna påbörjas direkt vid vetskapen om vill- korets uppfyllande om förutsägelsen var felaktig.
Föreliggande uppfinning anvisar vidare en metod som bygger på att en processor-intern instruktion behandlas såsom beskrivits ovan avseende villkorade hoppinstruktioner, det vill säga att resultatet från en kontroll av uppfyllandet av en förutsägelse rörande en processor-intern villkorad hoppinstruktion göres tillgängligt och beaktas så snart det är klart, även om så skulle vara att utrymmet i instruktionsbufferten, hörande till den processor-interna villkorade hoppinstruktionen, ännu ej nått en utläsningsposition i instruktionsbufferten.
Föreliggande uppfinning utgår även från en processor, vilken omfattar: - en inläsande enhet, avsedd att läsa in instruktioner till processorn från ett minne med sekvensiellt på varandra föl- jande instruktioner, av vilka vissa är så kallade villkorade hoppinstruktioner, där villkorets uppfyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter den villkorade hoppinstruktionen skall läsas in till processorn eller om ett hopp i sekvensen av instruktioner skall göras, vilket hopp medför att efterföljande instruktioner skall läsas in från någon annan plats i sekvensen enligt den vill- korade hoppinstruktionen, - en instruktionsbuffert, vari utrymme är allokerbart för res- pektive inläst instruktion, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av den sekventiella ordningen och där åtminstone en sista position inom instruktionsbuf- ferten utgör en utläsningsposition från instruktionsbuffer- ten, - en bearbetande enhet, vilken är anpassad att bearbeta in- lästa instruktioner, varefter resultatet från bearbetningen är lagringsbart i utrymmet hörande till respektive instruk- lO 15 20 25 30 35 510 295 _10- tion i instruktionsbufferten, - en kontrollerande enhet, vilken är anpassad att kontrollera huruvida utläsningspositionen innefattar ett resultat fràn en bearbetning, - en utläsande enhet, vilken är anpassad att läsa resultatet från utläsningspositionen, - en förutsägande enhet, vilken är anpassad att, vid inläsan- det av en villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varvid den inläsande enheten är anpassad att inläsa instruktioner till processorn enligt förutsägelsen direkt efter inläsandet av den villkorade hoppinstruktionen, - en utvärderande enhet, vilken är anpassad att utvärdera huruvida villkoret för den villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som den förutsägande en- heten lämnat, samt - en borttagande enhet vilken är anpassad att borttaga ur pro- cessorn inlästa och delvis bearbetade instruktioner som lästs in till processorn efter den villkorade hoppinstruk- tionen om förutsägelsen visat sig vara felaktig.
Med utgàngs punkt av en sådan processor anvisar föreliggande uppfinning speciellt att processorn omfattar en resultatindi- kerande enhet, vilken är anpassad att indikera när resultatet från bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktion inom instrukti- onsbufferten.
Vidare anvisas att den utvärderande enheten är anpassad att inhämta resultatet från bearbetningen av den villkorade hopp- instruktion då detta är tillgängligt enligt den resultatindi- kerande enheten, varvid utvärderingen är möjlig av huruvida villkoret för den villkorade hoppinstruktion är uppfyllt eller 10 15 20 25 30 35 5,111 _29 5 _ 11 _ ej enligt den förutsägelse som den förutsägande enheten lämnat.
Föreliggande uppfinning anvisar även att den borttagande en- heten är anpassad att endast borttaga instruktioner ur proces- sorn som är sekventiellt inlästa efter den villkorade hoppin- struktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten som visar att förutsägelsen av uppfyllandet av villkoret var fel- aktig.
En processor enligt föreliggande uppfinning är även anpassad att påbörja en inläsning av korrekta instruktioner direkt efter att den utvärderande enheten lämnat resultat om huruvida en förutsägelse varit korrekt, i det fall som förutsägelsen visat sig vara felaktig.
Vidare anvisar föreliggande uppfinning, med utgångspunkt från en processor som omfattar en omvandlande enhet, vilken är an- passad att omvandla processor-externa instruktioner till pro- cessor-interna instruktioner, att ovanstående enheter även är anpassade att bearbeta, och utvärdera resultatet från en sådan bearbetning, av en såväl en processor-intern villkorad hoppin- struktion som en processor-extern villkorad hoppinstruktion enligt ovan.
FÖRDELAR De fördelar som främst kan få anses vara kännetecknande för en metod och en processor anpassad att verka enligt metoden en- ligt föreliggande uppfinning är att den tidsförlust som spol- ning enligt känd teknik orsakar kan minskas. Det är även så att Fetch-steget kan göras snabbare och ALU'ns (eller ALU'er- nas, kan vara flera) kapacitet kan frigöras för bearbetning av eventuellt väntande instruktioner som ej skall spolas. Vidare är, vid felaktiga förutsägelser, korrekta instruktioner in- läsbara till processorn i ett tidigare skede än vad som till- 10 15 20 25 30 35 510 295 _12- láts med känd teknik. Dessa faktorer erbjuder tillsammans att processorns kapacitet kan utnyttjas i högre grad än tidigare.
Principen är enkel och ej bunden till specifika processorarki- tekturer vilket gör att den enkelt kan implementeras i olika processorarkitekturer.
Det som främst kan få anses vara kännetecknande för en metod, i enlighet med föreliggande uppfinning, anges i det efterföl- jande patentkravets 1 kännetecknande del, och det som främst kan få anses vara kännetecknande för en processor, i enlighet med föreliggande uppfinning, anges i det efterföljande patent- kravets 5 kännetecknande del.
KORT FIGURBESKRIVNING En metod och en processor anpassad att verka enligt metoden, uppvisande de med föreliggande uppfinning förknippade egenhet- erna, skall i exemplifierande syfte nu närmare beskrivas med hänvisning till bifogad ritning, där; figur 1 visar schematiskt och mycket förenklat en processor.
BESKRIVNING ÖVER NU FÖRESLBGEN UTFÖRINGSFORM Instruktioner i en programkod kan delas upp i huvudsakligen tvâ typer, flödesändrande instruktioner och icke flödesän- drande instruktioner.
En icke flödesändrande instruktion, vilka är de vanligast förekommande, är av typen läs, skriv och aritmetiska opera- tioner. Dessa omfattar vanligtvis tvà operander, en instruk- 10 15 20 25 30 35 510-”295 _ 13 _. tion om vilken operation som skall tillämpas på operanderna, samt en destinationsadress för resultatet från operationen.
Flödesändrande instruktioner ändrar flödet av instruktioner och medför ett hopp i programkoden. Den vanligaste typen av flödesändrande instruktioner är så kallade villkorliga hopp eller villkorade hoppinstruktioner. Även dessa omfattar två operander och en instruktion om vilken operation som skall tillämpas på operanderna. Denna operation är vanligtvis en jämförelse mellan operanderna där villkoret för hoppet består i operandernas likhet eller olikhet.
Någon destinationsadress är inte nödvändig vid villkorade hoppinstruktioner då resultatet från operationen används lokalt i processorn för att avgöra huruvida ett hopp i flödet skall göras eller ej, det finns dock inget som hindrar att en destinationsadress nyttjas.
Instruktionerna läses in i en processor sekvensiellt och flera instruktioner kan befinna sig i olika steg av bearbetningen i processorn samtidigt. I exemplifierande syfte visas i figur 1 en processor l där åtta instruktioner kan bearbetas 'samti- digt'. Instruktionerna läses från ett program-minne 2 och tilldelas ett utrymme i en här benämnd instruktionsbuffert 3, vilken verkar som en First In First Out- (FIFO) buffert med här visade åtta positioner 3l, 32, ..., 38.
Resultaten från respektive operation läses ut från instrukti- onsbufferten 3 och skrivs ut till avsedd destinationsadress då instruktionen i fråga befinner sig i en så kallad utläsnings- position 4 inom instruktionsbufferten, vilket i detta exempel utgöres av den sista positionen i instruktionsbufferten 3. Det är dock mycket möjligt att bearbetningen eller exekveringen av operationen utförts när instruktionen låg i en tidigare posi- tion i instruktionsbufferten. 10 15 20 25 30 35 510 295 ._ _- vid - 14 - En processors arbetssätt skall beskrivas i närmare detalj för att förenkla förståelsen av föreliggande uppfinning.
En processor 1 har enligt detta exempel en dubbel inport med två olika inportar, en första 111 och en andra 112 inport, och tillhörande första 113 respektive andra 114 buffert, genom vilka instruktionerna inhämtas. En processor-intern väljare 12 avgör från vilken inport instruktionerna skall hämtas.
Då en villkorad hoppinstruktion 21 inträder i processorn, exempelvis via den första inporten 111, och om detta villkor med hög sannolikhet är uppfyllt, om det kan förutsägas, läses omgående instruktionerna 22 enligt hoppet in via den andra inporten 112 där tillhörande buffert 114 fylls med efterföl- jande instruktioner. Instruktionerna 23 efter det villkorade hoppet 21 fortsätter att läsas in via den första inporten 111 och lagras i den första bufferten 113.
Den processor-interna väljaren 12 hämtar instruktioner från den andra bufferten 114 enligt förutsägelsen. Vid en felaktig förutsägelse väntar de korrekta instruktionerna i den första bufferten 113 och dessa kan läsas in till processorn efter en spolning av de felaktigt inlästa instruktionerna.
Det kan även tänkas att en processor endast nyttjar en enkel inport. Vid en förutsägelse av utfallet från en villkorad hoppinstruktion läses då instruktionerna enligt förutsägelsen in i den enda inporten, vilket medför att vid en felaktig för- utsägelse så tar det längre tid att läsa in de korrekta in- struktionerna än om två inportar används, eftersom dessa ej finns inlästa och väntande i en alternativ inport.
Förutsägelsen av villkorets uppfyllande kan grunda sig pà olika algoritmer, såsom exempelvis statisk eller dynamisk förutsägelse.
Att välja att alltid antaga att villkoret är uppfyllt, eller 10 15 20 25 30 35 510 29.5 _15- ej är uppfyllt, är en så kallad statisk förutsägelse.
En förutsägelse kan även grundas på en dynamisk bearbetning av hur detta villkor blivit uppfyllt tidigare. Det statistiska utfallet av olika villkors uppfyllande sparas då i en lista vilken uppdateras varje gång en villkorad hoppinstruktion exe- kverats och vilken ligger till grund för förutsägelserna av huruvida dessa villkor är uppfyllda eller ej. Detta är en dynamisk förutsägelse.
Denna tidigare kända metod medför att om villkoret, enligt förutsägelsen, är uppfyllt så följer rätt instruktioner enligt hoppet direkt efter hoppinstruktionen i instruktionsbufferten och dessa kan exekveras och vara redo att lämna sina resultat till sina destinationsadresser direkt efter det att den vill- korade hoppinstruktionen nått utläsningspositionen 4 i in- struktionsbufferten 3 och där lämnat resultatet från den operation som fastställt om villkoret för hoppet är uppfyllt eller ej.
Föreliggande uppfinning är oberoende av om en eller flera in- portar används, eller vilken typ av algoritm för att förutsäga villkorets uppfyllande som används.
Oavsett processor- eller algoritm-typ så skall de instrukti- oner som är under bearbetning i instruktionsbufferten ej ut- föras vid en felaktig förutsägelse varför en borttagning, eller spolning (flush), av dessa måste göras så att rätt in- struktioner kan läsas ner till instruktionsbufferten för att bearbetas.
Bearbetningen av en instruktion i en processor omfattar flera olika steg.
Ett första steg är att omvandla koden som representerar in- struktionen till en processor-intern kod. Denna omvandling sker i en omvandlande enhet, i detta utföringsexempel en så 10 15 20 25 30 35 510 295 _16_ kallad Assembler to micro code Translator Unit (ATU) 5, vilken omvandlar instruktioner i assembler till instruktioner i maskinspràk, varefter den omvandlade koden placeras i instruk- tionsbufferten 3.
ATU'n 5 omfattar även den processor-interna väljaren 12 och styrningen av densamma.
Utrymmet i instruktionsbufferten omfattar diverse fält, av vilka en del visas i position 31 i instruktionsbufferten 3, omfattande ett fält för operand A (OPA) 31A, fält för operand B (OPB) 3lB, ett fält för operationen (ALSO) 3lC och ett fält med destinationsadressen för resultatet (DEST) 3lD.
Ett andra steg är en så kallad Fetch (inhämtning) där nöd- vändiga operander hämtas från olika minnen M1, M2 om dessa ej är tillgängliga i själva instruktionen. Beroende på vilket minne som en operand skall läsas från kan detta ta olika lång tid. Vissa minnen kan vara processor-interna minnen M1 och andra kan vara minnen som är positionerade utanför processorn M2.
När operanderna är hämtade kan nästa steg tas vilket är en exekvering av instruktionen där operanderna 31A, 3lB och instruktionen 3lC skickas till en ALU 6 där instruktionen exekveras och ett resultat lämnas till ett resultatfält 3lE.
När positionen för instruktionen i instruktionsbufferten nått utläsningspositionen 4 görs nästa steg under förutsättning att resultatet från ALU'n 6 är klart och lämnat till resultat-fäl- tet 3lE. Detta steg är en så kallad Commit eller Write Back där resultatet i skrivs till adressen enligt innehållet av fältet för destinationsadressen 3lD.
Exekvering behöver nödvändigtvis inte utföras sekvensiellt utan kan utföras så fort Fetch-steget för en instruktion är utfört. Detta medför att vissa instruktioner kan vara redo för 10 15 20 25 30 35 5111295 _17..
Commit trots att instruktioner som sekvensiellt ligger före i instruktionsbufferten ännu inte är klara med Fetch.
Spolningen vid en felaktig förutsägelse tar tid och kapacitet fràn processorn. I det fall en processor nyttjas som använder tvà inportar ger detta en viss gardering som möjliggör en för- beredelse av de instruktioner som skall läsas in efter en spolning i samband med en felaktig förutsägelse.
Denna gardering betyder att de rätta instruktionerna finns redo i den första bufferten 113 men det är ändå en stor, och i dessa sammanhang dyrbar, operation att behöva spola allt innehåll i processorn, det vill säga i instruktionsmatrisen 3, där många av instruktionerna redan kan vara exekverade och redo för Commit.
I det fall en processor med en enkel inport nyttjas är tids- förlusterna på grund av en spolning vid en felaktig förut- sägelse ännu större.
Uppfinningen bygger på en tidig hopprapportering som medför att resultatet 3lE från exekveringen av en villkorad hoppin- struktion kan nyttjas innan den villkorade hoppinstruktionen nått utläsningspositionen 4 i instruktionsbufferten 3. Ju tidigare detta resultat är känt desto mindre menlig effekt ger en spolning, och desto tidigare kan korrekta instruktioner hämtas, vid en felaktig förutsägelse av villkorets uppfyl- lande.
När exekveringssteget för en villkorad hoppinstruktion är ut- fört så finns resultatet av exekveringen tillgängligt i pro- cessorn. Enligt tidigare känd teknik används inte detta resul- tat förrän den villkorade hoppinstruktionen nått positionen för Commit, det vill säga utläsningspositionen 4.
Uppfinningen bygger således pà att resultatet från en exekve- ring av en villkorad hoppinstruktion används så snart det är 10 15 20 25 30 35 510 295 _ 13 _ tillgängligt.
Detta görs genom att ATU'n 5 anpassas till att bevaka bearbe- tandet av en villkorad hoppinstruktion i processorn och så snart denna instruktion är exekverad så används resultatet till att fastställa riktigheten i förutsägelsen av villkorets uppfyllande.
Vid en korrekt förutsägelse låter man förloppet fortlöpa. Vid en felaktig förutsägelse spolas alla instruktioner som ligger efter den villkorade hoppinstruktionen i inläsningssekvensen.
Detta medför att inte alla instruktioner i processorn skall spolas eftersom det fortfarande kan finnas, och troligtvis finns, instruktioner i processorn som sekvensiellt sett ligger före den villkorade hoppinstruktionen och därmed ej berörs av hoppet men som fortfarande inte är klara med exempelvis Fetch.
Detta medför att spolningen inte avser allt som finns i pro- cessorn utan endast vissa instruktioner. Dessa instruktioner kan ha kommit olika làngt i sin bearbetning i processorn. Oav- sett var de befinner sig i denna bearbetning spolas efterföl- jande instruktioner och kapacitet frigörs för exekvering av instruktioner som ännu ej nått steget för exekvering men som inte skall spolas.
En processor som är anpassad att verka enligt den ovan be- skrivna metoden skall nu beskrivas närmare.
En processor av känt slag omfattar förenklat: - en inläsande enhet, här benämnd inport lll med tillhörande buffert 113, avsedd att läsa in instruktioner till proces- sorn fràn ett minne 2 med sekvensiellt pà varandra följande instruktioner, - en instruktionsbuffert 3, vari ett utrymme 31, 32, ..., 38 är tilldelbart till respektive inläst instruktion, där åt- 10 15 20 25 30 35 ~s1o 295, _19.. minstone en sista position inom instruktionsbufferten 3 ut- gör en utläsningsposition 4 från instruktionsbufferten, - en bearbetande enhet, här benämnd ALU 6, vilken är anpassad att bearbeta inlästa instruktioner, varefter resultatet från bearbetningen är lagringsbart i utrymmet 313 hörande till respektive instruktion i instruktionsbufferten 3, - en kontrollerande enhet 13, vilken är anpassad att kontrol- lera huruvida utläsningspositionen innefattar ett resultat fràn en bearbetning, - en utläsande enhet 14, vilken är anpassad att läsa resulta- tet fràn utläsningspositionen 4, - en förutsägande enhet 15, vilken är anpassad att, vid inlä- sandet av en villkorad hoppinstruktion, förutsäga villkor- ets uppfyllande, - en utvärderande 16 enhet, vilken är anpassad att utvärdera huruvida villkoret för den villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som den förutsägande en- heten lämnat, samt - en borttagande enhet 17 vilken är anpassad att borttaga ur processorn inlästa och delvis bearbetade instruktioner som lästs in till processorn efter den villkorade hoppinstruk- tionen om förutsägelsen visat sig vara felaktig.
Med utgàngs punkt av en sådan processor l anvisar föreliggande uppfinning speciellt att processorn även omfattar en resultat- indikerande enhet 18, vilken är anpassad att indikera när res- ultatet från bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktionen inom instruktionsbufferten.
Vidare anvisas att den utvärderande enheten 16 är anpassad att 10 15 20 25 30 35 _s1o 295- _ 29 _ inhämta resultatet 3lE från bearbetningen av den villkorade hoppinstruktion då detta är tillgängligt enligt den resultat- indikerande enheten 18, varvid utvärderingen är möjlig av huruvida villkoret för den villkorade hoppinstruktion är upp- fyllt eller ej enligt den förutsägelse som den förutsägande enheten 15 lämnat. Denna inhämtning av resultatet är således möjlig oavsett om positionen för den villkorade hoppinstruk- tionen är i utläsningspositionen 4 inom instruktionsbufferten 3 eller ej.
Föreliggande uppfinning anvisar även att den borttagande en- heten 17 är anpassad att endast borttaga instruktioner ur pro- cessorn som är sekvensiellt inlästa efter den villkorade hopp- instruktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten 16 som visar att förutsägelsen av uppfyllandet av villkoret var felaktig.
I den ovanstående beskrivningen hänvisas det till villkorade hoppinstruktioner som läses in från ett program-minne 2. Då en sådan instruktion omvandlas i den omvandlande enheten 5 till micro-kod utgör en sådan processor-extern instruktion troligt- vis ett flertal processor-interna instruktioner i micro-kod.
Det finns även exempel på processor-externa instruktioner som inte omfattar ett villkorat hopp men där dess motsvarighet i processor-intern kod omfattar en villkorad hoppinstruktion.
Exempelvis kan en processor-extern instruktion utan villkorade hoppinstruktioner översatt till micro-kod resultera i en processor-intern loop med en villkorad hoppinstruktion, där villkoret består i att loopen skall brytas vid uppfyllandet av ett visst villkor.
Således omfattar föreliggande uppfinning även en metod för att hantera processor-interna villkorade hoppinstruktioner i en dataprocessor där de villkorade hoppinstruktionerna inte nöd- vändigtvis härrör från en processor-extern villkorad hoppin- 10 15 20 25 30 35 510 295 _ 21 _ struktion.
Villkorets uppfyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter nämnda villkorade hoppin- struktion skall bearbetas av processorn eller om ett hopp i sekvensen av processor-interna instruktioner skall göras.
Ett sådant hopp medför att efterföljande processor-interna instruktioner skall läsas in från någon annan plats i sek- vensen, eller från efterföljande omvandlade processor-externa instruktion, enligt den villkorade hoppinstruktionen.
En felaktig förutsägelse av villkorets uppfyllande resulterar i att efterföljande inlästa och delvis bearbetade processor- interna instruktioner spolas för att bereda plats för en in- läsning av, enligt villkorets uppfyllande, korrekta processor- interna instruktioner.
I detta fall tas inte alla instruktioner i processorn bort eftersom det fortfarande finns inlästa processor-externa in- struktioner som ännu ej omvandlats till processor-interna in- struktioner och som inte berörs av den processor-interna vill- korade hoppinstruktionen.
När en processor-intern villkorad hoppinstruktion är funnen läsas inte den efterföljande processor-externa instruktionen in till ATU'n 5 för omvandling, vilket betyder att vid ett bort-tagande av instruktioner på grund av en felaktig förut- sägelse av ett villkors uppfyllande tas endast processor-in- terna instruktioner bort och nästa processor-externa instruk- tion kan läsas in till ATU'n 5 för omvandling.
Föreliggande uppfinning anvisar då speciellt att utfallet från bearbetandet av en villkorad hoppinstruktion, och därmed vet- skapen om uppfyllandet av villkoret, göres tillgängligt för utvärdering så snart bearbetandet är genomfört, även om detta sker innan utrymmet inom instruktionsbufferten, hörande till 10 15 20 25 30 35 s1o_ 295 _ _ 22 _ den villkorade hoppinstruktionen, nått utläsningspositionen 4.
Vidare anvisar föreliggande uppfinning att, vid en felaktig förutsägelse av uppfyllandet av villkoret, borttagandet av instruktioner ur processorn endast berör processor-interna instruktioner som är sekvensiellt inlästa efter den villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbet- ningen av instruktioner.
En processor som är anpassad till att även taga hänsyn till processor-interna villkorade hoppinstruktioner skall, liksom den tidigare beskrivna processorn, omfatta en resultat-indi- kerande enhet 18, vilken är anpassad att indikera när res- ultatet fràn bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för den villkorade hoppinstruktionen inom instruktionsbufferten.
Den omfattar även en utvärderande enhet 16 som är anpassad att inhämta resultatet från bearbetningen av den processor-interna villkorade hoppinstruktionen då detta är tillgängligt enligt den resultat-indikerande enheten 18.
Därvid är det möjligt för den utvärderande enheten 16 att genomföra en utvärderingén av huruvida villkoret för den pro- cessor-interna villkorade hoppinstruktionen är uppfyllt eller ej enligt den förutsägelse som en förutsägande enhet 15 lämnat.
Vidare anvisar föreliggande uppfinning att en borttagande en- het 17 är anpassad att borttaga processor-interna instruk- tioner ur processorn som är sekvensiellt inlästa efter den processor-interna villkorade hoppinstruktionen, oavsett var dessa befinner sig i bearbetningen av instruktioner, vid en signal från den utvärderande enheten 16 som visar att förut- sägelsen av uppfyllandet av villkoret var felaktig.
Uppfinningen är givetvis inte begränsad till den ovan såsom 510 29-5 _ 23 _ exempel angivna utföringsformen utan kan genomgå modifikatio- ner inom ramen för uppfinningstanken illustrerad i efter- följande patentkrav.

Claims (12)

10 15 20 25 30 35 '510 295 _ _ 24 _ PATENTKRAV
1. Metod för att hantera specifika instruktioner, så kallade villkorade hoppinstruktioner, i en dataprocessor, där nämnda villkorade hoppinstruktion utgör en av flera sekvensiellt in- lästa instruktioner till nämnda processor, där villkorets upp- fyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter nämnda villkorade hoppinstruktion skall läsas in till nämnda processor eller om ett hopp i nämnd sek- vens av instruktioner skall göras, vilket medför att efter- följande instruktioner skall läsas in från någon annan plats i nämnda sekvens enligt nämnda villkorade hoppinstruktion, där utrymme är tilldelat respektive inläst instruktion i en här benämnd instruktionsbuffert, där nämnda utrymmen i nämnda in- struktionsbuffert är tilldelade en inbördes ordning som mot- svaras av nämnda sekvensiella ordning och där åtminstone en sista position inom nämnda instruktionsbuffert utgör en utläs- ningsposition fràn nämnda instruktionsbuffert, varefter nämnda instruktioner är bearbetbara av nämnda processor och varefter resultatet frán nämnda bearbetning är lagringsbara i respek- tive utrymme hörande till nämnda instruktion i nämnda instruk- tionsbuffert, för att slutligen vara utläsbart fràn nämnda ut- läsningsposition i nämnda sekvensiella ordning, och där nämnda processor, vid inläsandet av en villkorad hoppinstruktion, förutsäger villkorets uppfyllande, varefter instruktioner är läsbara till, och bearbetbara av, nämnda processor enligt nämnda förutsägelse direkt efter inläsandet av nämnda vill- korade hoppinstruktion, där en felaktig förutsägelse resul- terar i att efterföljande inlästa och delvis bearbetade in- struktioner tas bort ur nämnda processor för att bereda plats för en inläsning av, enligt nämnda villkors uppfyllande, kor- rekta instruktioner, k ä n n e t e c k n a d därav, att ut- fallet fràn bearbetandet av nämnda villkorade hoppinstruktion, och därmed vetskapen om uppfyllandet av nämnda villkor, göres tillgängligt för utvärdering så snart nämnda bearbetande är genomfört, även i det fall som detta sker innan utrymmet inom nämnda instruktionsbuffert, hörande till nämnda villkorade 10 15 20 25 30 35 510 2953* _25- hoppinstruktion, nàtt nämnda utläsningsposition.
2. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att, vid en felaktig förutsägelse av uppfyllandet av nämnda villkor, nämnda borttagande av instruktioner ur nämnda processor endast berör instruktioner som är sekvensiellt in- lästa efter nämnda villkorade hoppinstruktion, oavsett var dessa befinner sig i nämnda bearbetning av instruktioner.
3. Metod enligt patentkraven l och 2, där inläsningen av in- struktioner till nämnda processor sker via en enkel inport, k ä n n e t e c k n a d därav, att inläsandet av nämnda kor- rekta instruktioner börjar direkt vid en tillgänglig vetskap om att en felaktig förutsägelse av uppfyllandet av ett villkor hörande till en villkorad hoppinstruktion, och att denna in- läsning sker via nämnda enkla inport.
4. Metod enligt patentkraven 1 och 2, där inläsningen av in- struktioner till nämnda processor sker via en av tvà inportar, med tillhörande buffertar, hörande till en dubbel inport, och där, vid en inläsning av en villkorad hoppinstruktion, inläs- ningen av instruktioner enligt en förutsägelse av uppfyllandet av nämnda villkorade hoppinstruktion läses in till nämnda pro- cessor via en första inport hörande till nämnda dubbla inport och inläsningen av instruktioner enligt ett andra möjligt ut- fall av uppfyllandet av nämnda villkorade hoppinstruktion läses in till nämnda processor via en andra inport hörande till nämnda dubbla inport, där inlästa instruktioner lagras i respektive buffert, k ä n n e t e c k n a d därav, att in- läsandet av nämnda korrekta instruktioner börjar direkt vid en tillgänglig vetskap om att en felaktig förutsägelse av uppfyl- landet av ett villkor hörande till en villkorad hoppinstruk- tion, och att denna inläsning sker frán bufferten hörande till nämnda andra inport.
5. Processor, omfattande en inläsande enhet, avsedd att läsa in instruktioner till processorn från ett minne med sekvensi- 10 15 20 25 30 35 510 295 _26- ellt pà varandra följande instruktioner, av vilka vissa är så kallade villkorade hoppinstruktioner, där villkorets uppfyl- lande avgör huruvida de instruktioner som sekvensiellt följer direkt efter nämnda villkorade hoppinstruktion skall läsas in till nämnda processor eller om ett hopp i nämnd sekvens av in- struktioner skall göras, vilket medför att efterföljande in- struktioner skall läsas in från någon annan plats i nämnda sekvens enligt nämnda villkorade hoppinstruktion, en instruk- tionsbuffert, vari utrymme är tilldelbart respektive inläst instruktion, vilka utrymmen är tilldelade en inbördes ordning som motsvaras av nämnda sekvensiella ordning och där åtmin- stone en sista position inom nämnda instruktionsbuffert utgör en utläsningsposition från nämnda instruktionsbuffert, en be- arbetande enhet, vilken är anpassad att bearbeta nämnda in- struktioner, varefter resultatet från nämnda bearbetning är lagringsbart i respektive utrymme hörande till nämnda instruk- tion i nämnda instruktionsbuffert, en kontrollerande enhet, vilken är anpassad att kontrollera huruvida nämnda utläsnings- position innefattar ett resultat från en bearbetning, en ut- läsande enhet, vilken är anpassad att läsa nämnda resultat från nämnda utläsningsposition, en förutsägande enhet, vilken är anpassad att, vid inläsandet av en villkorad hoppinstruk- tion, förutsäga villkorets uppfyllande, varvid nämnda inläs- ande enhet är anpassad att inläsa instruktioner till nämnda processor enligt nämnda förutsägelse direkt efter inläsandet av nämnda villkorade hoppinstruktion, en utvärderande enhet, vilken är anpassad att utvärdera huruvida villkoret för nämnda villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som nämnda förutsägande enhet lämnat, samt en borttagande en- het vilken är anpassad att borttaga inlästa och delvis bear- betade instruktioner som lästs in till nämnda processor efter nämnda villkorade hoppinstruktion ur nämnda processor om nämnda förutsägelse visat sig vara felaktig, k ä n n e - t e c k n a d därav, att nämnda processor omfattar en resultat-indikerande enhet, vilken är anpassad att indikera när resultatet fràn bearbetningen av en villkorad hoppinstruk- tion är lagrat i positionen för nämnda villkorade hoppinstruk- 10 15 20 25 30 35 510 295 _ 27 _ tion inom nämnda instruktionsbuffert, och att nämnda utvärde- rande enhet är anpassad att inhämta resultatet från nämnda bearbetning av nämnda villkorade hoppinstruktion då detta är tillgängligt enligt nämnda resultat-indikerande enhet, varvid nämnda utvärdering av huruvida villkoret för nämnda villkorade hoppinstruktion är uppfyllt eller ej enligt den förutsägelse som nämnda förutsägande enhet lämnat är möjlig.
6. Processor enligt patentkravet 5, k ä n n e t e c k n a d därav, att nämnda borttagande enhet är anpassad att borttaga instruktioner ur nämnda processor som är sekvensiellt inlästa efter nämnda villkorade hoppinstruktion, oavsett var dessa befinner sig i nämnda bearbetning av instruktioner, vid en signal från nämnda utvärderande enhet som visar att nämnda förutsägelse av uppfyllandet av nämnda villkor var felaktig.
7. Processor enligt patentkraven 5 och 6, vilken är tilldelad en enkel inport varigenom inläsningen av instruktioner till nämnda processor sker, k ä n n e t e c k n a d därav, att nämnda processor är anpassad påbörja ett inläsande av nämnda korrekta instruktioner direkt vid en signal från nämnda utvär- derande enhet som visar att nämnda förutsägelse av uppfyllan- det av nämnda villkor var felaktig, och att denna inläsning sker via nämnda enkla inport.
8. Processor enligt patentkraven 5 och 6, vilken är tilldelad en dubbel inport, med en första och en andra inport och till- hörande buffertar, vilken processor är anpassad att läsa in instruktioner till via en av nämnda två inportar, och där, nämnda processor är anpassad att, vid en inläsning av en vill- korad hoppinstruktion, läsa in instruktioner enligt en förut- sägelse av uppfyllandet av nämnda villkorade hoppinstruktion via nämnda första inport hörande till nämnda dubbla inport och instruktioner enligt ett andra möjligt utfall av uppfyllandet av nämnda villkorade hoppinstruktion via nämnda andra inport hörande till nämnda dubbla inport, där respektive buffert är anpassad att lagra inlästa instruktioner, k ä n n e t e c k - 10 15 20 25 30 35 510 295 _ 23 _ n a d därav, att nämnda processor är anpassad att pàbörja ett inläsande av nämnda korrekta instruktioner direkt vid en sig- nal från nämnda utvärderande enhet som visar att nämnda förut- sägelse av uppfyllandet av nämnda villkor var felaktig, och att denna inläsning sker från bufferten hörande till nämnda andra inport.
9. Metod för att hantera specifika instruktioner, så kallade villkorade hoppinstruktioner, i en dataprocessor, där nämnda processor omfattar en omvandlande enhet, vilken omvandlar in- struktioner som är inlästa till nämnda processor på en proces- sor-extern kod till en processor-intern kod, där en till nämnda processor inläst processor-extern instruktion kan re- sultera i en sekvens av olika processor-interna instruktioner, varav vissa kan utgöras av nämnda villkorade hoppinstrukti- oner, där villkorets uppfyllande avgör huruvida de instrukti- oner som sekvensiellt följer direkt efter nämnda villkorade hoppinstruktion skall bearbetas av nänmda processor eller om ett hopp i nämnd sekvens av processor-interna instruktioner skall göras, vilket medför att efterföljande processor-interna instruktioner skall läsas in från någon annan plats i nämnda sekvens, eller fràn efterföljande omvandlade processor-externa instruktion, enligt nämnda villkorade hoppinstruktion, där ut- rymme är tilldelat respektive processor-interna instruktion i en här benämnd instruktionsbuffert, där nämnda utrymmen i nämnda instruktionsbuffert är tilldelade en inbördes ordning som motsvaras av nämnda sekvensiella ordning och där åtmin- stone en sista position inom nämnda instruktionsbuffert utgör en utläsningsposition från nämnda instruktionsbuffert, var- efter nämnda instruktioner är bearbetbara av nämnda processor och varefter resultatet från nämnda bearbetning är lagrings- bara i respektive utrymme hörande till nämnda instruktion i nämnda instruktionsbuffert, för att slutligen vara utläsbart från nämnda utläsningsposition i nämnda sekvensiella ordning, och där nämnda processor, vid inläsandet av en villkorad hopp- instruktion, förutsäger villkorets uppfyllande, varefter in- struktioner är bearbetbara av nämnda processor i en ordning 10 15 20 25 30 35 s1o*29s _ 29 - enligt nämnda förutsägelse direkt efter inläsandet av nämnda villkorade hoppinstruktion, där en felaktig förutsägelse res- ulterar i att efterföljande inlästa och delvis bearbetade pro- cessor-interna instruktioner tas bort ur nämnda processor för att bereda plats för en inläsning av, enligt nämnda villkors uppfyllande, korrekta processor-interna instruktioner, k ä n n e t e c k n a d därav, att utfallet från bearbetandet av nämnda villkorade hoppinstruktion, och därmed vetskapen om uppfyllandet av nämnda villkor, göres tillgängligt för utvär- dering sá snart nämnda bearbetande är genomfört, även i det fall som detta sker innan utrymmet inom nämnda instruktions- buffert, hörande till nämnda villkorade hoppinstruktion, nàtt nämnda utläsningsposition.
10. Metod enligt patentkravet 9, k ä n n e t e c k n a d därav, att, vid en felaktig förutsägelse av uppfyllandet av nämnda villkor, nämnda borttagande av instruktioner ur nämnda processor endast berör processor-interna instruktioner som är sekvensiellt inlästa efter nämnda villkorade hoppinstruktion, oavsett var dessa befinner sig i nämnda bearbetning av in- struktioner.
11. ll. Processor, omfattande en omvandlande enhet, vilken är an- passad att omvandla instruktioner som är inlästa till nämnda processor på en processor-extern kod till en processor-intern kod, där en till nämnda processor inläst processor-extern in- struktion kan resultera i en sekvens av olika processor-inter na instruktioner, varav vissa kan utgöras av villkorade hopp- instruktioner, där villkorets uppfyllande avgör huruvida de instruktioner som sekvensiellt följer direkt efter nämnda villkorade hoppinstruktion skall bearbetas av nänmda processor eller om ett hopp i nämnd sekvens av processor-interna in- struktioner skall göras, vilket medför att efterföljande pro- cessor-interna instruktioner skall läsas in från någon annan plats i nämnda sekvens, eller från efterföljande omvandlade processor-externa instruktion, enligt nämnda villkorade hopp- instruktion, en instruktionsbuffert, vari utrymme är tilldel- 10 15 20 25 30 35 510 295 _ _ 30 _ bart respektive inläst instruktion, vilka utrymmen är tillde- lade en inbördes ordning som motsvaras av nämnda sekvensiella ordning och där åtminstone en sista position inom nämnda in- struktionsbuffert utgör en utläsningsposition från nämnda instruktionsbuffert, en bearbetande enhet, vilken är anpassad att bearbeta nämnda instruktioner, varefter resultatet från nämnda bearbetning är lagringsbart i respektive utrymme höran- de till nämnda instruktion i nämnda instruktionsbuffert, en kontrollerande enhet, vilken är anpassad att kontrollera huru- vida nämnda utläsningsposition innefattar ett resultat från en bearbetning, en utläsande enhet, vilken är anpassad att läsa nämnda resultat från nämnda utläsningsposition, en förutsä- gande enhet, vilken är anpassad att, vid en processor-intern villkorad hoppinstruktion, förutsäga villkorets uppfyllande, varvid nämnda bearbetande enhet är anpassad att bearbeta in- struktioner enligt nämnda förutsägelse direkt efter inläsandet av nämnda villkorade hoppinstruktion, en utvärderande enhet, vilken är anpassad att utvärdera huruvida villkoret för nämnda villkorade hoppinstruktion är uppfyllt enligt den förutsägelse som nämnda förutsägande enhet lämnat, samt en borttagande en- het vilken är anpassad att borttaga inlästa och delvis bear- betade processor-interna instruktioner som lästs in till nämnda instruktionsbuffert efter nämnda villkorade hoppin- struktion ur nämnda processor om nämnda förutsägelse visat sig vara felaktig, k ä n n e t e c k n a d därav, att nämnda processor omfattar en resultat-indikerande enhet, vilken är anpassad att indikera när resultatet fràn bearbetningen av en villkorad hoppinstruktion är lagrat i positionen för nämnda villkorade hoppinstruktion inom nämnda instruktionsbuffert, och att nämnda utvärderande enhet är anpassad att inhämta resultatet från nämnda bearbetning av nämnda villkorade hopp- instruktion dà detta är tillgängligt enligt nämnda resultat- indikerande enhet, varvid nämnda utvärdering av huruvida vill- koret för nämnda processor-interna villkorade hoppinstruktion är uppfyllt eller ej enligt den förutsägelse som nämnda förut- sägande enhet lämnat är möjlig. 510 295' _ 31 _
12. Processor enligt patentkravet ll, k ä n n e t e c k n a d därav, att nämnda borttagande enhet är anpassad att borttaga processor-interna instruktioner ur nämnda processor som är sekvensiellt inlästa efter nämnda villkorade hoppinstruktion, oavsett var dessa befinner sig i nämnda bearbetning av in- struktioner, vid en signal från nämnda utvärderande enhet som visar att nämnda förutsägelse av uppfyllandet av nämnda villkor var felaktig.
SE9702762A 1997-07-21 1997-07-21 Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden SE510295C2 (sv)

Priority Applications (8)

Application Number Priority Date Filing Date Title
SE9702762A SE510295C2 (sv) 1997-07-21 1997-07-21 Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden
KR1020007000634A KR20010022065A (ko) 1997-07-21 1998-07-07 조건부 점프의 취급에 적용된 처리기 및 방법
AU83652/98A AU8365298A (en) 1997-07-21 1998-07-07 A method for handling conditional jump instructions in a data processor
CN98809339A CN1271434A (zh) 1997-07-21 1998-07-07 数据处理器中处理条件跳转指令的方法
PCT/SE1998/001334 WO1999004335A2 (en) 1997-07-21 1998-07-07 A method and a processor adapted for the handling of conditional jumps
EP98934048A EP0998701A2 (en) 1997-07-21 1998-07-07 A method for handling conditional jump instructions in a data processor
JP2000503482A JP2001510916A (ja) 1997-07-21 1998-07-07 データプロセッサにおける条件付きジャンプ命令の処理方法
BR9810768-2A BR9810768A (pt) 1997-07-21 1998-07-07 Processo de manuseio de instruções especìficas, e, processador

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9702762A SE510295C2 (sv) 1997-07-21 1997-07-21 Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden

Publications (3)

Publication Number Publication Date
SE9702762D0 SE9702762D0 (sv) 1997-07-21
SE9702762L SE9702762L (sv) 1999-01-22
SE510295C2 true SE510295C2 (sv) 1999-05-10

Family

ID=20407793

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9702762A SE510295C2 (sv) 1997-07-21 1997-07-21 Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden

Country Status (8)

Country Link
EP (1) EP0998701A2 (sv)
JP (1) JP2001510916A (sv)
KR (1) KR20010022065A (sv)
CN (1) CN1271434A (sv)
AU (1) AU8365298A (sv)
BR (1) BR9810768A (sv)
SE (1) SE510295C2 (sv)
WO (1) WO1999004335A2 (sv)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US9952869B2 (en) 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
EP2367102B1 (en) 2010-02-11 2013-04-10 Nxp B.V. Computer processor and method with increased security properties

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
CA1285657C (en) * 1986-01-29 1991-07-02 Douglas W. Clark Apparatus and method for execution of branch instructions
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur

Also Published As

Publication number Publication date
BR9810768A (pt) 2000-08-15
EP0998701A2 (en) 2000-05-10
KR20010022065A (ko) 2001-03-15
SE9702762L (sv) 1999-01-22
WO1999004335A3 (en) 1999-04-08
SE9702762D0 (sv) 1997-07-21
WO1999004335A2 (en) 1999-01-28
AU8365298A (en) 1999-02-10
JP2001510916A (ja) 2001-08-07
CN1271434A (zh) 2000-10-25

Similar Documents

Publication Publication Date Title
US5954815A (en) Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address
US5276882A (en) Subroutine return through branch history table
KR100431168B1 (ko) 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템
US5471626A (en) Variable stage entry/exit instruction pipeline
US4734852A (en) Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
JP2846406B2 (ja) 分岐処理方法及び分岐処理装置
US5297281A (en) Multiple sequence processor system
US5179673A (en) Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline
US6304954B1 (en) Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline
US4587632A (en) Lookahead stack oriented computer
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
JPH02234229A (ja) ソース・リスト、ポインタ・キューおよび結果キュー
US7093105B2 (en) Method and apparatus for determining availability of a queue to which a program step is issued out of program order
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
KR100638935B1 (ko) 데이터 프로세서
EP0093430A2 (en) Pipeline data processing system
US6851033B2 (en) Memory access prediction in a data processing apparatus
JPH06236267A (ja) スーパースカラ・プロセッサ・システムにおける命令ディスパッチ効率を向上させる方法およびシステム
JPH06236275A (ja) スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
EP0079370B1 (en) Digital computer for executing instructions in three time-multiplexed portions
SE510295C2 (sv) Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden
US7237096B1 (en) Storing results of producer instructions to facilitate consumer instruction dependency tracking
US6108761A (en) Method of and apparatus for saving time performing certain transfer instructions
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process

Legal Events

Date Code Title Description
NUG Patent has lapsed