NO843894L - Anordning for mikrokodeforgrening i en databehandlingsenhet - Google Patents

Anordning for mikrokodeforgrening i en databehandlingsenhet

Info

Publication number
NO843894L
NO843894L NO843894A NO843894A NO843894L NO 843894 L NO843894 L NO 843894L NO 843894 A NO843894 A NO 843894A NO 843894 A NO843894 A NO 843894A NO 843894 L NO843894 L NO 843894L
Authority
NO
Norway
Prior art keywords
microcode
branching
address
rank
slow
Prior art date
Application number
NO843894A
Other languages
English (en)
Inventor
Richard Lee Harris
Robert Whiting Horst
Original Assignee
Tandem Computers Inc
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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of NO843894L publication Critical patent/NO843894L/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)
  • Small-Scale Networks (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)
  • Control By Computers (AREA)
  • Bus Control (AREA)
  • Electron Tubes For Measurement (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Complex Calculations (AREA)

Description

Foreliggende oppfinnelse angår sentrale behandlingsenheter i databehandlingssystemer. Nærmere bestemt gjelder oppfinnelsen mikroforgrening innenfor sett av mikroinstruksjoner for anvendelse inne i en sentral behandlingsenhet for et databehandlingssystem, samt maskinvare for utførelse av mikroforgrening.
Med begrepet mikroforgrening menes forgreninger innenfor mikrokodenivået av mikroinstruksjoner i en sentral behandlingsenhet for databehandlingssystemer, og dette er velkjent innenfor foreliggende fagområde. Det er kjent å utføre mikroforgrening på valgte resultater av valgte prøvebetingelser i den sentrale behandlingsenhet for databehandlingssystemer. Innenfor databehandlingssystemer som benytter rørledningsarkitektur, er det kjent å utføre mikroforgrening som resultat av prøver som finner sted under utførelse av prosesser av forskjellig rang i mikrokodefeltet for en enkelt mikroinstruksjon. Visse tidligere kjente systemer har bare muligheter for å utføre "raske" forgreninger, hvilket vil si forgrening på det resultat av prøvebetingelser som avføles under ut-førelse av mikrokode-bitfeltet av rang 1 i hvilken som helst gitt mikroinstruksjon. Andre systemer har bare hatt evne til forgrening av "langsom" art, hvilket vil si på resultatene av prøvebetingelser som opptrer under utførelse av mikrokoden av annen rang for enhver gitt mikroinstruksjon. Noen av de tidligere kjente systemer som er istand til å utføre mikroforgrening har innebygget mulighet for å sperre mikrokodeledere som trer inn i rør-ledningsarkitekturen etter den leder som frembringer forgrening. Nødvendigheten av å avsperre utførelse av sådanne senere mikrokodeinnløp er avhengig av den funksjon som mikrokoden utfører, samt av den grad den er i samsvar med den forgrening som tas av CPU under diriger-ing fra mikrokoden som en følge av prøvebetingelsene.
Skjønt disse tidligere kjente oppbygninger av mikrofor- greningsskjemaer har vist seg å ha tilpasningsmuligheter for systemkonstruktører og har gjort det mulig å frembringe systemer som er i stand til å ta flere beslutning-er og således fungere på høyere abstraksjonsnivåer, er det fremdeles plass for forbedringer med hensyn til kon-struksjon og utførelse av sådanne maskinvaresystemer.
Systemer som ikke er i stand til både å utføre hurtig og langsom forgrening er ikke så smidige som systemer kon-struert for å være i stand til dette. Sådanne systemer har vanligvis ikke evne til å foreta mer enn en utprøv-ning ved hvilket som helst gitt tidspunkt eller ikke en gang evne til å foreta mer enn en utprøvning under ut-førelse av en hvilken som helst mikroinstruksjon. Visse sådanne systemer har bare mulighet for å foreta hurtige mikroforgreninger, mens andre sådanne systemer bare er i stand til å utføre langsomme mikroforgreninger. Systemer som bare er i stand til å foreta raske mikroforgreninger kan ikke foreta forgreninger på betingelser som frem-bringes ved utførelse av rang 2 av den løpende mikroinstruksjon. Den åpenbare grunn for denne manglende evne er at den betingelse som frembringer avgjørelsen om forgrening finner sted under en senere tidsperiode enn den som kan avføles av forgreningsmaskinvaren.
Systemer som bare foretar langsomme avgreninger må på den annen side alltid vente en ekstra klokkesyklus på de betingelser som bringer forgrening til å opptre under an-visning fra mikrokode av rang 2, og taper således en klokkesyklus før utførelsen av mikrokoden ved forgren-ingsmålet kan innledes.
En annen ulempe ved de tidligere kjente systemer som er i stand til å utføre langsom mikrokodeforgrening, er at de manglersmidighett.il selektivt å sperre enten den ene eller begge ekstraledninger som løper inn i rørledningen før forgreningsbeslutningen fattes. På lignende måte mangler tidligere kjente systemer som er i stand til å utføre rask mikroforgrening vanligvis funksjonssmidighet til å selektivt sperre enten den ene eller begge de løp-ende eller neste innløpsledere som løper inn i rørled-ningen før forgreningsbeslutningen kan treffes.
De tidligere kjente systemer som tillater utøvelse av ekstra innløpslinjer etter avgjørelsen om mikroforgrening som en følge av en prøvebetingelse, er vanligvis ikke i stand til innkalling av en underrutine og derpå vende tilbake til en hvilken som helst annen mikrokodeleder enn den mikrokodeleder som følger etter den leder hvis mikrokode utløste forgreningen.
En annen ulempe ved den vanligvis benyttede maskinvare for mikroforgrening er at den maskinvare som utnyttes av tidligere kjent teknikk for utførelse av både hurtig og langsom mikroforgrening, ikke kan utprøves mot hverandre uten at dette medfører bruk av ytterligere utprøvnings-maskinvare.
Endelig anvendes vanligvis en returadressestakk av systemer som utfører enhver art av mikroforgrening. Denne returadressestakk anvendes som en vektor av systemet for å utpeke en adresse som prosessoren bør vende tilbake til for å gjenoppta utførelse av den mikrokode som den var i ferd med å utøve forut for den forgrening som foretas. Tidligere anvendte returadresse-arkitektur-er som er kjent for oppfinnerne av foreliggende oppfinnelse, deler det felles oppbygningstrekk at innlastingen av returadressen ikke er avkoblet fra stakklagerets rotasjon. Dette vil ha en tendens til å nedsette funksjons-smidigheten eller å øke maskinvareomkostningene for tidligere kjente CPU.
Det er derfor et formål for foreliggende oppfinnelse å frembringe en systemarkitektur for anvendelse ved sen trale behandlingsenheter for utførelse av mikroforgrening, og som er i stand til å foreta både hurtig å langsom mikroforgrening.
Det er et ytterligere formål for foreliggende oppfinnelse å frembringe en mikroforgrenings-arkitektur som er i stand til å foreta mer enn en utprøvning under utøvelsen av hvilken som helst enkelt mikroinstruksjon.
Det er ennå et ytterligere formål for foreliggende oppfinnelse å frembringe en mikroforgrenings-arkitektur som er i stand til å avsperre enten den ene eller begge de ekstra innløpsledere som løper inn i rørledningen under en langsom mikrokodeforgrening.
Det er ennå et ytterligere formål for foreliggende oppfinnelse å frembringe en mikroforgrenings-arkitektur som er i stand til å avsperre enten den ene eller begge av den pågående og følgende linje som løper inn i rørled-ningen under en hurtig mikroavgrening.
Et annet formål for foreliggende oppfinnelse er å frembringe en mikroforgrenings-arkitektur som tillater ut-førelse av ekstra linjer i rørledningen, samt har evne til å kalle inn en underrutine og derpå utføre enhver linje i styrelageret etter retur fra underrutinen eller prosedyren.
Et ytterligere formål for foreliggende oppfinnelse er å frembringe en mikroforgrenings-arkitektur som er i stand til å utføre både hurtige og langsomme mikrokodesprang samt har den ytterligere egenskap å tillate at arbeids-funksjonene for både den hurtige og langsomme mikrokode-maskinvare for sådanne sprang kan kontrolleres mot hverandre .
Det er også et formål for foreliggende oppfinnelse å opprette et retur-adressestakklager for anvendelse ved utførelse av mikroforgrening hvor innlasting av returadressen er avkoblet fra stakklagerets rotasjon.
Disse og andre formål for foreliggende oppfinnelse vil bli bedre forstått av vanlige fagfolk på område ut i fra en gjennomgåelse av følgende beskrivelse, de vedføyde tegninger og etterfølgende patentkrav.
Foreliggende oppfinnelse åpenbarer en arkitektur for anvendelse i CPU for å utføre mikroforgrening. Denne arkitektur kan selektivt velge å utføre enten den neste mikrokodelinje i styrelageret eller en mikrokodelinje som er utpekt av en vektor som tilføres som reaksjon på det positive resultat av en prøve som finner sted under ut-førelse av første rangsdelen av mikrokoden for den pågående mikroinstruksjon eller en vektor som tilføres som resultat av utførelsen av mikrokodedelen av rang 2 i den pågående mikroinstruksjon. Hvis begge betingelser er oppfylt, hvilket vil si at både prøven utført under mikrokodeutøvelse av rang 1 og 2 viser seg å være sann, velges den forgreningsadresse som utpekes av resultatet av utførelsen av mikrokodedelen av rang 2 fremfor den annen adresse.
Hvis en mikroforgrening velges, vil enten ingen, en av eller alle de instruksjoner som har løpt inn i rørlinjen, da den instruksjon som har frembragt mikroforgreningen eventuelt kan avsperres.
I tillegg gjør en ekstra blokk av maskinvarelogikk det mulig for systemet å fortsette som om avgjørelsen om ikke å ta mikroforgrening er korrekt truffet, idet rørlinjen belastes på grunnlag av denne antagelse, men også å over-vinne feiltagelsen hvis denne antagelse viser seg å være uriktig samt å erstatte mikroforgreningsadressen med en vektor ved et senere tidspunkt. Under den tid hvor adressen hentes frem og lastes, vil pausekretser stanse de øvrige systemklokker.
Når en avgjørelse om å gjøre et mikrokodeanrop er gjort, anbringes en returadresse i et returadresse-stakklager. Denne returadresse er ikke begrenset til den adresse som var påløpende når mikroforgreningen ble tatt, men kan være en hvilken som helst adresse i styrelageret. Innlastingen av en returadresse i stakklageret avkobles fra stakklagerets rotasjon.
Oppfinnelsen vil nå bli nærmere beskrevet under henvisning til de vedføyde tegninger, hvorpå: Fig. 1 er et blokkskjemat av maskinvare for mikroforgrening med to mulige hastigheter i en foretrukket ut-førelse av foreliggende oppfinnelsegjenstand. Fig. 2 er et blokkskjema og logisk nivådiagram av maskinvare for valgfrie sperreprosesser i rørlinjen etter at en mikroforgrening er tatt. Fig. 3 er et logisk nivådiagram av maskinvare for å gjen-opprette vektor til en korrekt adresse etter at en feilaktig antagelse av mikroforgrening er gjort, innbefattet maskinvare for å stanse systemklokkene mens vektoren gjenopprettes. Fig. 4 er et blokkskjema av en foretrukket utførelse av et returadresse-stakklager i henhold til foreliggende oppfinnelse. Fig. 5 er et blokkskjema av maskinvare for å iverksette avgjørelse om mikroforgrening som kan velge fra et antall tilgjengelige prøvebetingelser.
Mikroforgrening er en egenskap som gjør det mulig for en maskin som utfører mikrokode og hindre sekvensutførelsen av den neste linje av mikrokoden til fordel for utfør-else av en rekke instruksjoner som er utpekt av en vektor som reaksjon på det sanne resultat av en prøvebetingelse. Foreliggende oppfinnelse er særlig anvendbar i forbindelse med maskinvare for sentral behandlingsenhet av den art som er beskrevet i samtidig løpende US patentansøk-ninger nr. 537.886, 537.429, 537.038, som herved spesielt inntas i foreliggende beskrivelse som referanse.
Mikroinstruksjoner er vanligvis tilgjengelig fra en styrelager ved å anbringe adressen for den ønskede mikro-instruks jon på en adressebuss for styrelageret. Det skal først henvises til fig. 1, hvor det er vist at adresser for mikrokodelinjer i henhold til oppfinnelsen tilføres styrelagerbuss 10, som kan være så bred som nødvendig for å kunne romme antallet adressebit i vedkommende system. Styrelagerbuss 10 drives av 4:1 multiplekser 12 for styrelagerets adressebuss. Multiplekserne 12 velges blant tre datakilder, nemlig styrelagerets adresseregister 14 over leder 16, registeret 18 for hurtig mikroforgrening over leder 20 samt registeret 22 for langsom mikroforgrening over leder 24.
Under sekvensiell mikroinstruksjonsdrift, hvilket vil si når mikroforgrening ikke finner sted, er styrelagerets databuss 10 tilbakekoblet over leder 26, inkrementert i inkrementkretsen 28 samt ført tilbake til styrelagerets adresseregister 14 etter den neste klokkesyklus fra systemklokken. Under normal drift inneholder således styrelagerets adressebuss en adresse høyere enn den tidligere adresse på adressebuss 10. Denne adresse fast-holdes i styrelagerets adresseregister 14, samt forbindes med multiplekseren 12 over leder 16.
Når imidlertid mikroforgreningønskes, velger multiplekser 12 en vektoradresse fra enten det hurtige mikrofor greningsregister 18 eller det langsomme mikroforgreningsregister 22. Dette valg finner sted i samsvar med til-standene for multivibrator 30 for langsom prøve (SMET) samt multivibrator 32 for hurtig prøve (FMET), som driver velgerinngangene A og B for multiplekser 12 over henholdsvis leder 34 og 36. Som det vil fremgå av fig. 1, drives styrelagerets adresseregister, det hurtige mikroforgreningsregister 18, det langsomme mikroforgreningsregister 22, SMET-multivibrator 30 og FMET-multivibrator 32 alle fra systemklokken over leder 38.
SMET-multivibrator 30 og FMET-multivibrator 32 drives i samsvar med et resultat av en av tallrike prøvebetingel-ser 40 som tilføres over flere ledere 42 til langsom prøvevelger 44, som driver SMET-multivibrator 30 over leder 46 samt hurtig prøvevelger 48 som driver FMET-mult i vibrator 32 over leder 50. Dette vil bli nærmere forklart under henvisning til fig. 5. Både langsom prøvevelger 44 og hurtig prøvevelger 48 velger blant de forskjellige prøvebetingelser 40 som foreligger på deres forskjellige ledere 42 i samsvar med innholdene i kodede mikrokodefelter. Langsom prøvevelger 44 benytter et mikrokodefelt fra mikrokodedelen av rang 2 for å velge hvilken av prøvebetingelsene 40 som den vil utprøve. Hurtig prøvevelger 48 benytter et mikrokodefelt i mikrokoden av rang 1 for å velge hvilken av prøvebetingelsene 40 som den vil virke på.
Ved bruk av maskinvare i henhold til foreliggende oppfinnelse kan en antagelse gjøres med hensyn til resultatet av enten den langsomme eller hurtige prøve, hvilket vil si prøver utført på betingelser av mikrokodefeltet av rang 1 eller sådanne prøver som utføres under betingelser i henhold til mikrokodefeltet av rang 2, således at en midlertidig mikroforgreningsbeslutning kan treffes før de faktiske resultater av vedkommende prøve er tilgjengelig. Skjønt dette maskinvaretrekk åpenbart fremskynder system ets arbeidsfunksjon, kan likevel antagelser være feil-aktige, og hvis en ukorrekt antagelse gjøres kan systemklokkene bringes til stans mens den korrekte vektor til-føres til styrelagerets adressebuss 10. Dette trekk iverksettes av pauselogikken 56. Denne pauselogikk 56 er i stand til å underkjenne den beslutning som er truffet ved nevnte antagelse med hensyn til den langsomme prøve-velgerenhet 44 over leder 58 samt med hensyn til den hurtige prøvevelgerenhet 48 over leder 60. Et ytterligere signal tilført på leder 62 hindrer klokkingen av de utvalgte registre inntil innskiftningen av den korrekte vektor er gjort. Arbeidsfunksjonen av pauselogikken 56 vil bli nærmere forklart under henvisning til fig. 3.
Valgt av vektorer gjøres av multipleksere både for det hurtige mikroforgreningsregister 18 og for det langsomme mikroforgreningsregister 22. Nærmere bestemt tilfører multiplekseren 64 en vektor til det hurtige mikroforgreningsregister over leder 66, mens multiplekseren 68 tilfører en vektor til det langsomme mikroforgreningsregister 22 over leder 70. Multiplekser 64 og multiplekser 68 har flere kilder. Disse multipleksere 64 og 68 kan motta en vektor fra returadresse-stakklageret 72 over leder 74. Multiplekseren 64 kan i tillegg oppnå en vektor fra en del av mikrokodefeltet av rang 1 som foreligger på utgangssiden av det horisontale styrelager 76, over leder 78.
Det vil således innses at den vektor som tilføres til det hurtige mikroforgreningsregister 18 kan være spesifisert av en del av mikrokoden av rang 1 mens en annen del av samme mikrokode spesifiserer hvilken prøvebetingelse som kan frembringe valg av denne vektor.
Multiplekser 68 kan forsynes med en vektor fra en del av mikrokoden av rang 2 på utgangssiden av registeret 80 av rang 2, over lederen 82. En del av mikrokodefeltet av rang 2 kan således spesifisere den vektor som systemet vil forgrenes til som en følge av en bestemt prøve, som også er spesifisert ved en annen del av mikrokoden av denne rang.
Ved anvendelse av maskinvaren i henhold til foreliggende oppfinnelse kan det treffes en beslutning om å avsperre den ene, begge eller ingen av de to påfølgende mikrokodelinjer som vil tre inn i rørlinjen mellom det tidspunkt en langsom forgreningsinstruksjon utføres og det tidspunkt forgreningens mållinje utføres. Likeledes kan en avgjørelse treffes om avsperring av arbeidsfunksjonen for en løpende kodelinje, den påfølgende kodelinje eller ingen av disse når en rask mikrokodeforgrening finner sted. Den maskinvare som er ansvarlig for iverksetting av denne funksjon er NOP-generator 84 som frembringer signalene NOPI og N0P2 over lederne henholdsvis 86 og 88. NOP-generatoren 84 treffer sin beslutning på grunnlag av betingelsene på utgangene fra multivibratoren 30 for langsom utprøvning, multivibratoren 32 for hurtig utprøv-ning, et bitfelt av mikrokoden av rang 2 fra tilsvarende register 80 over leder 90, samt et bitfelt av mikrokode av rang 3 fra registeret 92 for denne rang over leder 94.
Bestemmelsen om hvilke vektorer som skal velges av multiplekserne 64 og 68 styres av felter i mikrokodene av henholdsvis rang 1 og rang 2.
Som det vil fremgå av fig. 1 overfører en klokkepuls på leder 38 innholdet av enten det raske mikroforgreningsregister 18, det langsomme mikroforgreningsregister 22 eller styrelagerets adresseregister 14 gjennom multiplekseren 12 frem til styrelagerbuss 10. Det vil være åpenbart at datainnholdet på styrelagerets adressebuss 10 vil bli klokket inn i adresseregisteret 96 av rang 1 (R1ADR) etter den neste klokkepuls. Det er denne samme klokkepuls som anvendes for å registrere innholdet av styrelageret, som det gis tilgang til ved dette signal. Ved ethvert gitt tidspunkt vil således innholdet av RlADR 96 være den vektor som utpeker mikrokoden i registeret av rang 1 for utførelse. Innholdet i RlADR 96 er derfor en vektor til den nominelle returadresse etter at en mikro-kodef orgrening er blitt utført.
Innholdet i RlADR 96 er gjort tilgjengelig for returadresse-stakklageret (RAS) 72 over multiplekseren 98. Da inngangen til returadresse 72 er over multiplekser 98 kan en annen vektor enn den opprinnelige vektor som opptrer i Ri adresseregisteret 96 anbringes i returadresse-stakklageret. Multiplekseren 98 er vist å ha en annen inngang fra den SK-databuss 100 som er vist fig. 1 i den samtidig løpende US patentansøkning nr. 537.877.
En måte hvorpå de forbedrede mikroforgreningsmuligheter i henhold til foreliggende oppfinnelse kan erkjennes er ved å tillate et organ for vektorisering til mikrokode på grunnlag av en makroinstruksjon som skal utføres. For dette formål kan multiplekseren 68 som gir tilgang til det langsomme mikrokode-forgreningsregister 22 også ut-gjøre kilde for den innløpspunkttabell som innholder en vektor til den makroinstruksjon som er i ferd med å bli utført. Forgreningsmulighetene i henhold til foreliggende oppfinnelse omfatter således vektorisering av mikrokode basert på denne instruksjon.
Masinvaren for en foretrukket utførelse av foreliggende oppfinnelse har muligheter for valgfritt å sperre kodelinjer som løper inn i rørlinjen mellom det tidspunkt forgreningsinstruksjonen går inn i rørlinjen og det tidspunkt beslutningen om forgrening treffes. Disse muligheter kan kodes i mikrokode, da det ikke alltid er ønske-lig å avsperre noen av disse instruksjoner.
Det skal nå henvises til fig. 2, hvor det er vist et blokkskjema av den maskinvare som anvendes for etter ønske å sperre kodelinjer, som grunnlag for beskrivelse av sperremekanismen. De to bit-felter i mikrokoden som utfører forgrening, nemlig det tidlige ikke-operasjon bitfelt 102 (ENOP) og det sene ikke-operasjon bitfelt 104 (LNOP), kan selektivt innstilles til å sperre mikrokodelinjer. Hvis en hurtig forgrening finner sted, vil ENOP-feltet 102 sperre operasjonen av rang 2 for den pågående linje, men hvis den er en langsom forgrening, vil ENOP 102 sperre operasjonen av rang 2 for den neste linje i koden. Hvis en rask mikroforgrening besluttes vil LNOP-feltet sperre den neste mikrokodelinje i rørlinjen, og hvis en langsom forgrening besluttes, avsperres operasjonen av rang 2 for mikrokodelinjen med et nivå videre i rørledningen.
Mikrokodebit 102 og 104 føres sammen med de øvrige mikro-kodef elter ved påfølgende klokkesykler gjennom registeret 80 av rang 2 og registeret 92 av rang 3. Når disse to bit befinner seg i posisjon av rang 2 i rørlinjen, arbeider de i forbindelse med FMET-multivibrator 32 for å fastlegge hvilke eventuelle mikrokodelinjer som skal avsperres. Når disse bit befinner seg i trinnet av rang 3 i rørlinjen, arbeider de i samsvar med SMET-multivibrator 30 for å fastlegge hvilke eventuelle kodelinjer som skal avsperres.
Da den besluttende maskinvare er basert på OG-porter i den foretrukkede utførelse vist i fig. 2, vil det være åpenbart at hvis hverken den hurtige prøvemultivibrator 32 eller den langsomme prøvemultivibrator 30 er innstilt (inneholder en logisk enerverdi) vil ingen kodelinjer bli hindret, da ingen forgrening er blitt utvalgt. Hvis imidlertid enten den ene eller begge av disse multivibra-torer er innstilt, vil beslutningen om å avsperre mikro-kodelinjene ligge fullstendig hos ENOP 102 og LNOP 104, som utgjør deler av mikrokoden. Hvis ingen av disse bit er en logisk enerverdi, vil heller ingen mikrokodelinjer bli avsperret. Hvis imidlertid den ene av eller begge disse linjer er en logisk enervrdi, vil sperre-maskinvaren arbeide på følgende måte.
Når det gjelder en hurtig avgrening antas det at en hurtig prøve-multivibrator 32 er innstilt. En enerverdi vil således opptre på en av inngangene for begge 0G-portene 106 og 108. Hvis LNOP-bit 104 er blitt innstilt, vil OG-port 106 oppvise en enerverdi på sin utgangsside. Dette er signalet til å sperre den pågående mikrokodelinje. Uavhengig av den foreliggende tilstand av SMET-multivibrator 30, vil nærvær av en logisk enerverdi på utgangssiden av OG-porten 106 bringe en logisk ener til å opptre på utgangssiden av ELLER-porten 110, og NOP1-signalet 112 vil da være en logisk enerverdi. NOP1-signalet 112 anvendes for å sperre operasjoner som tas som et resultat av mulige valg som treffes av mikrokode av rang 1. Utgangen fra ELLER-porten 110 avgis også til D-inngangen for multivibrator 114. Denne multivibrator 114 sørger for en forsinkelse på en klokkesyklus før den overfører den logiske enerverdi på utsiden av porten 110 til inngangen for ELLER-porten 116, samt således også til NOP2-utgangen 118. Denne utgan 118 anvendes for å sperre alle operasjoner av rang 2 for mikrokoden.
Når den langsomme prøve-multivibrator 30 har fastlagt en logisk enerverdi på sin utgangssiden, overføres denne enerverdi til OG-portene 120 og 122. Nærvær av en enerverdi i posisjonen for ENOP-bit 102 i registeret av rang 3 vil aktivere OG-port 122. Utgangen fra OG-port 122 er det neste mikroinstruksjon-sperresignal som avgis til ELLER-port 116, som bekrefter NOP2 118.
Hvis posisjonen for LNOP-bit 104 i registeret av rang 3 er innstilt, vil den virke gjennom OG-port 120 til å anbringe en enerverdi på utgangssiden av ELLER-port 110, som sikrer NOPI på utgang 112. Denne enerbit vil passere gjennom multivibrator 114 en klokkepuls senere enn den befant seg på utgangen NOP2 over ELLER-porten 116.
I en foretrukket utførelse av foreliggende oppfinnelse, kan antagelser gjøres med hensyn til prøveresultater som ennå ikke er tilgjengelige, og mikroforgreningsbeslut-ninger kan treffes på grunnlag av sådanne antagelser. Antagelser er imidlertid aldri helt sikre, og det vil forekomme tilfeller hvor en antagelse viser seg å være feilaktig. Maskinvaren i henhold til foreliggende oppfinnelse tillater da over pauselogikk-blokken 56 i fig. 1, at korrekte verdier anbringes i SMET-multivibratoren og FMET-multivibratoren, henholdsvis 30 og 32, hvilket da tillater korrekt valg av adresse for plassering på styrelagerets adressebuss over 4:1 multiplekseren 12, samt korrekte verdier for NOPI og NOP2 og anbringes på lederne 86 og 88.
Under henvisning til fig. 3 vil nå maskinvare for vektorisering til korrekt adresse under en pause bli beskrevet.
Som et eksempel på en feilaktig antagelse som kan gjøres, skal det henvises til et hurtiglager som anvendes for å fastholde instruksjoner eller data. Hvis påkrevet data eller kode ikke foreligger, vil det i ethvert hurtiglager bli frembragt et signal som anviser en "feil" i lageret.
Maskinvare for hurtiglager og "feil" i sådant lager er velkjent innenfor foreliggende fagområde, men ligger utenfor rammen av foreliggende oppfinnelse. For foreliggende fremstilling antas at hurtiglagerets feilsignal er en logisk enervrdi som opptrer på leder 200. Denne logiske enerverdi føres gjennom OG-porten 202 bare hvis et mikrokodefelt har angitt at antagelsen skulle gjøres. Det mikrokodefelt som angir om antagelsen ble gjort for langsom eller hurtig modus, dekodes for å frembringe signaler som opptrer på lederne henholdsvis 204 og 206. En logisk enerverdi på en av disse ledere angir at en antagelse er gjort. En hvilken som helst av disse logiske enerverdier vil aktivere den annen inngang til OG-porten 202 over ELLER-porten 208. Utgangen fra OG-porten 202 driver D-inngangen for multivibratoren 210 samt OG-portene 212 og 214. Det forhold at en antagelse ble gjort, hvilket gir seg til kjenne ved en enerverdi på enten leder 204 eller 206, frembringer etter OG-kombina-sjon med utgangssignalet fra port 202 et signal som angir at en hurtig eller langsom prøveoperasjon som befinner seg under utvikling, skal underkjennes med det formål å korrigere den løpende verdi i FMET-multivibrator 30 eller SMET-multivibrator 32. OG-portene 212 og 214 utnytter dette signal til å fastlegge om det er SMET 30 eller FMET 32 som skal korrigeres.
Under henvisning til fig. 1, kan det angis at disse overordnede signaler er anbragt på ledere henholdsvis 58 og 60. Formålet for multivibrator 210 i fig. 3 er å tillater den klokkesyklus som er under løpende utførelse å bli fullført før noen påfølgende klokkepause opptrer, for derved å unngå låsning av CPU. I tilfelle en feilaktig antagelse vil naturligvis en feilaktig vektor opptre på styrelagerets adresseledere 10 under en klokkesyklus mens det korrekte valg lastes gjennom multiplekseren 12 på styrelagerets adressebuss 10. Klokkesignal-ene til alle registre bortsett fra SMET 30, FMET 32 og multivibratoren 210 avsperres i en syklus. Dette finner sted, som vist i fig. 3, ved å overføre signalet fra inverteren 216 til OG-porten 218, for derved å frembringe sperresignalet.
Det skal nå henvises til fig. 4, hvor det er vist en foretrukket utførelse av returadresse-stakklageret. Dette stakklager for returadresse kan være sammensatt av multipleksere og registeret. Disse multipleksere har som oppgave å koble registerne i forskjellige arrangementer for gjennomløp, gjentatt sirkulasjon eller tilbakekob-ling. Skjønt fagfolk på område vil vite at et hvilket som helst antall trinn kan anvendes, er den viste utfør-else i fig. 4 vist å ha N trinn.
Under henvisning først til MUXO 220 kan det innsees at MUXO 220 enten kan belaste RASO 222 fra MUX 98 over leder 224, motta innholdet av returadresse-stakkregisteret RASN 226 over leder 228, resirkulere innholdet fra sitt eget RASO 222 over leder 230, eller motta innholdet av RASI 232 over leder 234. På lignende måte kan MUX 1 236 laste RASI 232 fra MUX 98 over leder 238, motta innholdet av RASO 222 over leder 240, resirkulere innholdet i RASI 232 over leder 242, eller motta innholdet av RAS2 244 over leder 24 6.
MUXO 220 og MUXl 236 er de eneste multipleksere som kan lastes fra MUX 98. Alle de øvrige multipleksere i systemet kan bare motta innholdet av de umiddelbart forutgående registre, resirkulere innholdet av sitt til-ordnede register eller motta innholdet i det neste register på linje. På denne måte kan data passere nedover stakklageret, oppover dette eller stå stille.
Multiplekserstyring finner sted over en valgt logikkenhet 2 70 som anbringer et signal på lederne 2 72. Dette signal styrer alle multiplekserne i returadresse-stakklageret og fastlegger flytmønsteret i registerne. Velger-logikkenheten 2 70 drives av signalene NOPI og NOP2 (frembragt som angitt under henvisning til fig. 2) samt av utgangene fra SMET og FMET multivibratorene 32 og 30 (fra fig. 1). I tillegg opprettes et felt fra mikrokodedelen av rang 2 for valg av logikkenhet 2 70 over leder 2 74. Arbeidsfunksjonen for stakklageret er som følger. Normalt bringer velger-logikkenheten 2 70 staklcregisterne til å sirkulere. Når et prosedyreanrop finner sted, anbringes en returadresse på stabelen enten ved RASO eller RASI, anhengig av om et hurtig eller langsomt anrop er sent ut. Velger-logikkenheten 2 70 innstiller stakk-multiplekserne til å skyve innholdet i alle stakkregistre fremover. Mikrokoden fastlegger om det er innholdet i RIADR-registeret 96 eller i SK-databuss 100 som er anbragt på stabelen.
Hvis et langsom prosedyreanrop er foretatt, bringer et mikrokodefelt 2 70 MUXO til å laste RASO når instruksjonen som frembragte anropet befinner seg i rang 2 med hensyn til utførelse. Ved det neste klokkepuls forskyves stakklageret bare hvis SMET-multivibratoren er blitt innstilt.
Hvis et hurtig anrop er blitt gjort, bringes på lignende måte MUX1 til å laste RASI når den instruksjon som har utført anropet er av rang 2 med hensyn til utførelse.
Til forskjell fra det langsomme anrop finner imidlertid hverken lasting eller forskyvning sted med mindre FMET-mult i vibrator 37 er blitt innstilt.
Ut i fra fig. 4 kan det innses at laste- og forskyvnings-operasjonene er avkoblet fra hverandre. Maskinvare som normalt ville frembringe kopier av returadressen inntil forgreningsbeslutningen er avgjort, er ikke nødvendig ved anvendelse av foreliggende stakklager.
Igangsetningen av stakklageret eller dets retur fra prosedyreanrop, arbeider på følgende måte.
Med en langsom retur innstiller mikrokodefeltet 277 i samvirke med SMET-multivibrator 30 og gjennom velger-logikkenheten 2 70 stakklagerets multipleksere til å føre registerinnholdet oppover i stakklageret (kjent som avfyring). Dette finner sted når den instruksjon som spesifiserer retur er av rang 3 med hensyn til sin ut-førelse og SMET er innstilt. Utgangen fra RASI 232 avgis til multiplekser 64 ved klokkepulsen forut for avfyring av stakklageret.
På lignende måte avfyrer en hurtig retur stakklageret når instruksjonen som spesifiserer returprosessen er av rang 2 med hensyn til utførelse og FMET er innstilt. Det bør bemerkes at på grunn av systemets rørlinjeoppbygning vil det være tilfeller hvor en konflikt mellom forskyvning og avfyring kan inntreffe. I disse tilfeller vil ingen av delene finne sted. Innlastning utføres imidlertid.
Hvis signalet N0P2 opptrer på inngangssiden av velger-logikkenheten 2 70 under utførelse av rang 2 av enten et hurtig eller langsomt anrop eller returforløp, vil ingen innlastning, forskyvning eller avfyring inntreffe.
En alternativ utførelse av stakklageret er å utnytte en dobbeltportet registerrad med avkoblede utpekere for datalagring i stakklageret samt lesning av data ut av lageret.
Det skal nå henvises til fig. 5, som viser et blokknivå-skjema av prøvevelgerlogikken for hurtig og langsomt prøvevalg. Driften av disse moduler vil nå bli beskrevet. Som angitt i fig. 3, er tallrike prøvebetingelser som er vist skjematisk ved 40 forbundet med inngangene for multiplekseren 302. Valget av inngang for passasje gjennom multiplekseren 32 gjøres av et mikrokodefelt av rangnivå li den mikrokode som angitt ved 304. Utgangen fra multiplekseren 302 på leder 306 anbringes på en inngangene for 2:1 ovérordnet multiplekser 308. Den annen inngang av 2:1 multiplekseren 308 er fra et felt i den del av mikrokoden som fastlegger om den utprøvede MET-betingelse enten er positiv sann eller negativ sann. Multiplekseren drives av de overordnede innganger 58 eller 60, alt avhengig av om denne enhet representerer den langsomme eller den hurtige velger. Utgangen fra multiplekser 308 er MET-prøveleder 46 eller 50, alt etter hvilken modul det gjelder. Det vil således innses av fagfolk på området at en hvilken som helst av det foreliggende antall prøvebetingelser kan anvendes for inn-stilling av enten SMET eller FMET-multivibratoren, henholdsvis 30 eller 32. Valg av betingelse er fullstendig under styring av mikrokoden. Nærvær av en overordnet betingelse er resultatet av det foretatte valg av en prøvebetingelse av en tidligere mikrokodelinje.

Claims (1)

  1. Maskinvareanordning for utførelse av mikroforgrening i en sentral behandlingsenhet for et databehandlingssystem, karakterisert ved at maskinvaren omfatter :
    utstyr for å fastholde en første adresse for den neste mikroinstruksjon som skal utføres, utstyr for å fastholde en annen adresse for en hurtig mikroforgrening, utstyr for å fastholde en tredje adresse for en langsom mikroforgrening, velgerorganer for å velge en av nevnte første annen og tredje adresse å anbringe denne på en adressebuss for styrelager, samt utstyr for å styre nevnte velgerorganer i samsvar med prøvebetingelser valgt ved mikrokode.
NO843894A 1983-09-29 1984-09-28 Anordning for mikrokodeforgrening i en databehandlingsenhet NO843894L (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/537,886 US4571673A (en) 1983-09-29 1983-09-29 Enhanced CPU microbranching architecture

Publications (1)

Publication Number Publication Date
NO843894L true NO843894L (no) 1985-04-01

Family

ID=24144511

Family Applications (1)

Application Number Title Priority Date Filing Date
NO843894A NO843894L (no) 1983-09-29 1984-09-28 Anordning for mikrokodeforgrening i en databehandlingsenhet

Country Status (17)

Country Link
US (2) US4571673A (no)
EP (1) EP0138470B1 (no)
JP (1) JPS60167036A (no)
KR (1) KR850002907A (no)
AT (1) ATE68613T1 (no)
AU (2) AU577316B2 (no)
BR (1) BR8404921A (no)
CA (2) CA1224881A (no)
DE (1) DE3485172D1 (no)
DK (1) DK462684A (no)
FI (1) FI843782L (no)
IL (2) IL73116A (no)
IN (1) IN162544B (no)
MX (1) MX156831A (no)
NO (1) NO843894L (no)
NZ (2) NZ209665A (no)
ZA (1) ZA847523B (no)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571673A (en) * 1983-09-29 1986-02-18 Tandem Computers Incorporated Enhanced CPU microbranching architecture
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
CA1223969A (en) * 1984-10-31 1987-07-07 William M. Johnson Microcode control of a parallel architecture microprocessor
EP0199009A3 (en) * 1985-02-28 1989-05-31 Kabushiki Kaisha Toshiba Path coverage measuring system in a programme
GB8507610D0 (en) * 1985-03-23 1985-05-01 Int Computers Ltd Data processing apparatus
JPS61229134A (ja) * 1985-04-03 1986-10-13 Nec Corp マイクロコンピユ−タ
EP0500193A1 (en) * 1986-01-29 1992-08-26 Digital Equipment Corporation Apparatus and method for execution of branch instructions
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4812989A (en) * 1986-10-15 1989-03-14 Amdahl Corporation Method for executing machine language instructions
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
CA2030404A1 (en) * 1989-11-27 1991-05-28 Robert W. Horst Microinstruction sequencer
US5377335A (en) * 1991-08-30 1994-12-27 Unisys Corporation Multiple alternate path pipelined microsequencer and method for controlling a computer
US5953510A (en) * 1991-09-05 1999-09-14 International Business Machines Corporation Bidirectional data bus reservation priority controls having token logic
US6662296B1 (en) * 2000-10-02 2003-12-09 International Business Machines Corporation Method and system for testing millicode branch points
US7231511B2 (en) * 2001-12-20 2007-06-12 Intel Corporation Microinstruction pointer stack including speculative pointers for out-of-order execution
JP2006040173A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3725868A (en) * 1970-10-19 1973-04-03 Burroughs Corp Small reconfigurable processor for a variety of data processing applications
US3840861A (en) * 1972-10-30 1974-10-08 Amdahl Corp Data processing system having an instruction pipeline for concurrently processing a plurality of instructions
US3909800A (en) * 1973-12-18 1975-09-30 Honeywell Inf Systems Improved microprogrammed peripheral processing system
US3967104A (en) * 1974-11-26 1976-06-29 Texas Instruments Incorporated Direct and indirect addressing in an electronic digital calculator
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
SE435429B (sv) * 1977-04-26 1984-09-24 Ericsson Telefon Ab L M Anordning for att mot utgaende informationsflodesgrenar forgrena ett inkommande "pipeline"-informationsflode
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
US4307445A (en) * 1978-11-17 1981-12-22 Motorola, Inc. Microprogrammed control apparatus having a two-level control store for data processor
US4334126A (en) * 1980-02-11 1982-06-08 Stromberg-Carlson Corporation Control circuit for concurrently monitoring and controlling functions and frequency modulating status information in a digital data network
US4373180A (en) * 1980-07-09 1983-02-08 Sperry Corporation Microprogrammed control system capable of pipelining even when executing a conditional branch instruction
US4425628A (en) * 1981-05-26 1984-01-10 General Electric Company Control module for engergy management system
DE3153045C2 (de) * 1981-11-16 1985-06-27 Gosudarstvennyj sojuznyj institut po proektirovaniju metallurgičeskich zavodov, Moskva Vorrichtung zur Kühlung der Schachtofenwandung, insbesondere eines Hochofens
US4551798A (en) * 1982-11-03 1985-11-05 Burroughs Corporation Multiple control stores in a pipelined microcontroller for handling nester subroutines
US4571673A (en) * 1983-09-29 1986-02-18 Tandem Computers Incorporated Enhanced CPU microbranching architecture

Also Published As

Publication number Publication date
CA1233568A (en) 1988-03-01
FI843782A0 (fi) 1984-09-26
FI843782A7 (fi) 1985-03-30
DE3485172D1 (de) 1991-11-21
IL85477A0 (en) 1988-07-31
JPH0139132B2 (no) 1989-08-18
IL73116A0 (en) 1984-12-31
FI843782L (fi) 1985-03-30
EP0138470A2 (en) 1985-04-24
EP0138470B1 (en) 1991-10-16
AU3359384A (en) 1985-04-04
DK462684D0 (da) 1984-09-27
AU577316B2 (en) 1988-09-22
IL73116A (en) 1988-11-30
IN162544B (no) 1988-06-11
ZA847523B (en) 1985-07-31
AU599245B2 (en) 1990-07-12
JPS60167036A (ja) 1985-08-30
US4636943A (en) 1987-01-13
AU1830088A (en) 1988-10-27
BR8404921A (pt) 1985-08-20
CA1224881A (en) 1987-07-28
US4571673A (en) 1986-02-18
NZ226263A (en) 1989-01-06
DK462684A (da) 1985-03-30
KR850002907A (ko) 1985-05-20
MX156831A (es) 1988-10-05
NZ209665A (en) 1989-01-06
ATE68613T1 (de) 1991-11-15
EP0138470A3 (en) 1986-04-16

Similar Documents

Publication Publication Date Title
EP0399760B1 (en) Paired instruction processor branch recovery mechanism
NO843894L (no) Anordning for mikrokodeforgrening i en databehandlingsenhet
US6266765B1 (en) Computer architecture capable of execution of general purpose multiple instructions
AU631875B2 (en) Paired instruction processor precise exception handling mechanism
US4390946A (en) Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4933941A (en) Apparatus and method for testing the operation of a central processing unit of a data processing system
US5706297A (en) System for adapting maintenance operations to JTAG and non-JTAG modules
US4841434A (en) Control sequencer with dual microprogram counters for microdiagnostics
NO843893L (no) Hjelpelager for databehandlingsenhet
NZ201809A (en) Microprocessor
US5606568A (en) Method and apparatus for performing serial and parallel scan testing on an integrated circuit
US5657486A (en) Automatic test equipment with pipelined sequencer
JPS6250856B2 (no)
US5867698A (en) Apparatus and method for accessing a branch target buffer
US4872109A (en) Enhanced CPU return address stack
US7774582B2 (en) Result bypassing to override a data hazard within a superscalar processor
CA1311308C (en) Processor-processor synchronization
US5946705A (en) Avoidance of cache synonyms
JPS5833965B2 (ja) コンピュ−タ診断方法およびその装置
GB2158977A (en) Control sequencer with dual microprogram counters for microdiagnostics
EP0142562B1 (en) Pipeline system for microprogram control unit
US4462029A (en) Command bus
US6775735B2 (en) Instruction pair detection and pseudo ports for cache array
GB2081944A (en) Microinstruction sequence control
JPH0713759A (ja) 情報処理装置