NO122458B - - Google Patents

Download PDF

Info

Publication number
NO122458B
NO122458B NO3074/68A NO307468A NO122458B NO 122458 B NO122458 B NO 122458B NO 3074/68 A NO3074/68 A NO 3074/68A NO 307468 A NO307468 A NO 307468A NO 122458 B NO122458 B NO 122458B
Authority
NO
Norway
Prior art keywords
instruction
address
register
jump
sequences
Prior art date
Application number
NO3074/68A
Other languages
English (en)
Inventor
F Belina
G Hemdal
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
Publication of NO122458B publication Critical patent/NO122458B/no

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

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)

Description

Fremgangsmåte for utførelse av sprang i en datamaskins instruksjonshukommelse.
Den foreliggende oppfinnelse vedrbrer en fremgangsmåte for utfbrelse av sprang til en blant flere instruksjonssekvenser valgbar instruksjonssekvens i en datamaskins instruksjonshukommelse, hvilke sprang styres av en spranginstruksjon bestående av en operasjonsdel og en variabel del omfattende et antall variable storrelser.
De operasjoner som utfores i en datamaskin, og i hvilken orden dette skjer, bestemmes av instruksjoner som er lagret i en instruksjonshukommelse i form av et program. For å kunne utfore sprang i programmet, f.eks. for å utfore en ofte tilbake-vendende instruksjon eller instruksjonssekvens som finnes lagret på et vilkårlig sted i instruksjonshukommelsen, inneholder programmet en såkalt spranginstruksjon som på kjent måte består av en operasjonsdel og en variabeldel. Variabeldelen består av modi-fikatordel og variabler, hvorved modifikatordelen bestemmer et sprang til en i variabeldelen angitt adresse i instruksjonshukommelsen i hvilken den onskede instruksjonssekvensens forste instruksjon finnes lagret. Sekvénsens siste instruksjon medforer deretter et tilbakesprang til den instruksjon som i programmet forekommer etter spranginstruksjonen. Ulempen med denne fremgangsmåte er dels at en viss spranginstruksjon alltid adresserer samme instruksjonssekvens, dels at hvis en sekvens skal gjennom-løpes et stort antall ganger, må tilsvarende antall sprangin-struksjoner finnes lagret i programmet.
Hensikten med den foreliggende oppfinnelse er å tilveiebringe en fremgangsmåte ved hvilken disse ulemper elimineres. Fremgangsmåten kjennetegnes ved at et bestemt tall i variabeldelen subtraheres fra den adresse som angir spranginstruksjonens stilling i hukommelsen, hvorved det oppnåes en tidligere adresse som lagres i et forste register, samt at innholdet i et andre register som utpekes av en adresse i nevnte variabeldel, adderes til adressen for spranginstruksjonen, hvor, .ordet på den således oppnådde summeadresse utgjor adressen til den forste instruksjonen i en av de valgbare instruksjonssekvensene i hvilke respektive sekvenser den siste instruks jonemutpeker det forste .registeret slik at deniinstruksjon som befinner seg på nevnte tidligere adresse, velges,og slik at ved modifikasjon av innholdet i nevnte andre register i avhengighet av gjennomlopning av den mellom instruksjonen på nevnte tidligere adresse og spranginstruksjonen forekommende instruksjonssekvens, onskede instruksjonssekvénser kan gjennomlbpes.
Oppfinnelsen skal nærmere forklares under henvisning til tegningene på hvilke
i
fig. 1 er et diagram som forklarer oppfinnelsens prinsipp og i
Fig. 2 viser et eksempel på en anordning for utfSrelse av fremgangsnåten ifblge oppfinnelsen.
I fig. 1 betegnes med I en instruksjonssekvens som danner hovedprogrammet i en datamaskin. Fra dette program onsker man å utfore sprang til et av et antall subprogram av hvilke to som er betegnet med 1-^ og I^» er angitt på figuren. I fig. 1 betegner de rektangulære felt i programmene instruksjoner, hvorved instruksjonsinnholdet er markert i feltene og instruksjonens adresse er angitt til venstre for respektive felt.
På adressen n forefinnes den instruksjon som bestemmer spranget til subprogrammene. Denne instruksjon består dels av en med TAL markert operasjonsdel, dels av en variabeldel inneholdende to variable stbrrelser Rx og D. Når man ved gjennomlopning av hovedprogrammet adresserer denne instruksjon, styrer opera-sjonsdelen fblgende operasjoner med de variable stbrrelser. Forst subtraheres den med D betegnede variable fra det tall
(n) som angir instruksjonsadressen, og det således oppnådde resultat (n-D) som utgjor en tidligere i hovedprogrammet opp-tredende adresse, lagres. Deretter adresseres ved hjelp av den variable Rx et register i sentralenheten hvis innhold f.eks. kan være.l, hvilket skal forklares nærmere nedenfor. Innholdet i dette register (1) adderes deretter til instruksjonsadressen (n), hvorved adressen n+1 oppnåes, og denne adresse utpekes i programmet. På denne adresse finnes lagret adressen til den forste instruksjon (p) i subprogrammet I2? hvorved et sprang til dette tilveiebringes og sentralenheten begynner å operere ifblge instruksjonene i dette subprogram.
På den siste adresse i subprogrammet finnes lagret en instrusjon som utpeker det register i hvilket subtraksjonsresultatet n-D finnes lagret og adresserer instruksjonen på denne adresse. Herved vil man vende tilbake til hovedprogrammet ved posisjonen n-D og vende tilbake til spranginstruksjbnen ved adressen n etter å ha gjennomlbpt den med E betegnede del av programmet. Denne programdel kan utnyttes for uavhengig eller avhengig
av resultatet i det siste gjennomløpte subprogram, å modifisere innholdet i det register som adresseres av den variable stbrrelse Rx i spranginstrusjonen. Sekvensen E kan f .eks.
inneholde en instruksjon som hver gang sekvensen gjennomløpes,
oker innholdet i registeret med 1, hvilket er antydet i fig. 1, hvorved i tur og orden adressene n+1, n+2, n+3 o.s.v. vil
utpekes av spranginstruksjoneen på adressen n. Man kan således
med kun en eneste spranginstruksjon hoppe et onsket antall ganger til et av et antall subprogram, og antallet subprogram kan prinsipielt gjbres så stort man måtte bnske.
I fig. 2 som skjematisk viser de i en sentralenhet for sprang-instruks jonens utforelse nodvendige koblingselementer, betegnes med IM en instruksjonshukommelse i hvilken de instruksjoner som styrer datamaskinens operasjoner, finnes lagret. Til denne hukommelse horer et adresseregister IA og et resultatregister IR, og hukommelsen fungerer på en slik måte at når en adresse skrives inn i adresseregisteret, fåes den på adressen forekommende instruksjon i resultatregisteret. Man antar at den på adressen n i fig. 1 lagrede spranginstruksjon på denne måte
er oppnådd i registeret IR og via en OG-port Gl, et program-register PIR og en OG-port. G2 overfort til et operasjonsregister $PR som er forbundet med en til en styreenhet SE horende dekoder AVK. Denne består av tre deler AVKI, AVK.2 og AVK3 av hvilke
delen AVKI inneholder instruksjonens operasjonsdel (TAL),
delen AVK2 registeradressen R og delen AVK3 den variable D. Dekoderen aktiverer et antall innganger i styreenheten, hvor-
ved denne som på konvensjonell måte består av et logikknett
og et skyveregister som trinnbeveges av en pulsgener-ator, av-
gir etter hverandre fblgende utgangspulser på et antall utganger som er betegnet med 1, 2 ... 3. Disse utganger er forbundet med innganger på OG-porter Gl-G lo og G12-G15 forsynt medl tilsvarende sifferbetegnelsef i sentralenheten.Pulsen pa utgangjen 1. } styreenheten SE vil således åpne portene G5 og G12,hvorved
i innholdet i adresseregisteret IA, hvilket utgjores av adressen i til spranginstruksjonen (n i fig. 1), overfores til et operand-'
register DB i en aritmetisk enhet AR. Pulsen 2 åpner deretter j portene G13 og G15, hvorved innholdet i et register PRA som
inneholder det tall som skal adderes til instruksjonsadressen, overfores til et andre operandregister DA i den aritmetiske
enheten. Registerets PRA adressering bestemmes derved av den varible Rx, og addisjonen utfores i lbpet av puls 3 som aktiverer en addisjonsinngang ADD hos den aritmetiske enhet, og den således oppnådde sum overfores i lbpet av pulsene 4
og 5 via portene G7 og G6 forst til et programutregister PØR og deretter via porten (3*+ til adresseregisteret IA, hvorved den • på den oppnådde sumadresse forekommende instruksjon utleses til resultatregisteret IR. Denne instruksjon som utgjbres av adressen til den forste instruksjon i et subprogram (f.eks. p i fig. 1), overfores deretter i lbpet av pulsene 6 og 7 via porten Gl, et programinnregister PIR, og porten G3 til'programutregisteret PØR. I lbpet av pulsen 8 overfores det tall (D) i spranginstruksjonens variabeldel som skal subtraheres fra instruksjonsadressen (n) fra dekoderen til operandregisteret DA, via portene G9 og G13. I det andre operandregisteret gjenstår instruksjonsadressen (n), og sub-traksjonen utfores i lbpet av pulsen 9 som aktiverer en sub-traksjonsinngang SUB hos den.aritmetiske enhet. Det i registeret AD (ppnådde resultatet (n-D.) overfores deretter i lbpet av pulsen 10 til et register LRA via portene G7 og G8. De tre siste pulsene 11, 12 og 13 overforer deretter innholdet i registeret PØR til instruksjonsadresseregisteret IA og mater den på adressen forekommende instruksjonen (p) fra resultatregisteret IR via programregisteret PIR til ordreregisteret #PR, hvorved operasjonene i det valgte subprogram påbegynnes. Som antydet i fig. 1, avsluttes hvert subprogram med en instruksjon som overforer innholdet i registeret LRA til programutregisteret PØR, hvorfra det mates videre til adresseregisteret IA. Herved oppnåes at man etter gjennomlbpning av et subprogram alltid vender tilbake til en foran spranginstruksjonen forekommende adresse (n-D) og derved gjennomlbper sekvensen E i lbpet av hvilken innholdet i registeret PRA kan modifiseres slik at nestfblgende sprang skjer til bnsket instruksjonssekvens. Det er selvfølgelig også mulig å utfore denne modifikasjon i subprogrammet.
Fremgangsmåten ifblge oppfinnelsen innebærer således at man på en enkel måte, uten å benytte ..datahukommelsen, kan la en
spranginstruksjon styre sprang til et av et vilkårlig antall subprogram,og hvilket av subprogrammene som velges, kan gjbres avhengig av de som tidligere er gjennomlopt.

Claims (1)

  1. Fremgangsmåte for utforelse av sprang til en blant flere instruksjonssekvenser valgbar instruksjonssekvens i en for valg av instruksjoner med programtellere forsynt datamaskins instrultøjonshukommelse, hvilke sprang styres av en eneste for sprang til hvilken som helst av disse sekvenser anvendt spranginstruksjon bestående av en operasjonsdel og en variabeldel omfattende et antall variable stbrrelser, karakterisert ved at et bestemt tall i variabeldelen subtraheres fra den adresse som angir spranginstruksjonens stilling i hukommelsen, hvorved oppnåes en tidligere adresse som lagres i et forste register (LRA), samt at innholdet i et andre register (PRA) som utpekes av en adresse i nevnte variabeldel, adderes til adressen for spranginstruksjonen, hvoi ordet på den oppnådde summeadresse utgjor adressen til den forste instruksjonen i en av de valgbare instruksjonssekvenser i hvilke respektive sekvenser den siste instruksjonen utpeker det forste registeret slik at den instruksjon som befinner seg på nevnte tidligere adresse, velges og slik at ved modifikasjon av innholdet i nevnte andre register i avhengighet av gjennomlbpning av den mellom instruksjonen på nevnte tidligere adresse og spranginstruksjonen forekommende instruksjonssekvens, onskede instruksjonssekvenser kan gjennomlbpes.
NO3074/68A 1967-08-31 1968-08-05 NO122458B (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE12071/67A SE303056B (no) 1967-08-31 1967-08-31

Publications (1)

Publication Number Publication Date
NO122458B true NO122458B (no) 1971-06-28

Family

ID=20295088

Family Applications (1)

Application Number Title Priority Date Filing Date
NO3074/68A NO122458B (no) 1967-08-31 1968-08-05

Country Status (9)

Country Link
US (1) US3571804A (no)
BE (1) BE719886A (no)
DE (1) DE1774601A1 (no)
FI (1) FI50815C (no)
FR (1) FR1585651A (no)
GB (1) GB1184317A (no)
NL (1) NL6812372A (no)
NO (1) NO122458B (no)
SE (1) SE303056B (no)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1774038A1 (de) * 1967-04-01 1971-07-29 Olivetti & Co Spa Elektronische Rechenanlage
US3728689A (en) * 1971-06-21 1973-04-17 Sanders Associates Inc Program branching and register addressing procedures and apparatus
US3889242A (en) * 1971-10-04 1975-06-10 Burroughs Corp Modifiable computer function decoder
JPS54613B2 (no) * 1971-10-04 1979-01-12
US3839630A (en) * 1971-12-27 1974-10-01 Hewlett Packard Co Programmable calculator employing algebraic language
JPS5529456B2 (no) * 1974-02-12 1980-08-04
JPS5161749A (en) * 1974-11-26 1976-05-28 Fujitsu Ltd Deetashorisochino shoriringuseigyohoshiki
US4124893A (en) * 1976-10-18 1978-11-07 Honeywell Information Systems Inc. Microword address branching bit arrangement
US4309753A (en) * 1979-01-03 1982-01-05 Honeywell Information System Inc. Apparatus and method for next address generation in a data processing system
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US6857063B2 (en) * 2001-02-09 2005-02-15 Freescale Semiconductor, Inc. Data processor and method of operation
US6845501B2 (en) * 2001-07-27 2005-01-18 Hewlett-Packard Development Company, L.P. Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3292155A (en) * 1963-03-15 1966-12-13 Burroughs Corp Computer branch command
DE1190706B (de) * 1963-07-17 1965-04-08 Telefunken Patent In zwei abwechselnden Zyklen arbeitende programmgesteuerte elektronische digitale Rechenmaschine
US3290658A (en) * 1963-12-11 1966-12-06 Rca Corp Electronic computer with interrupt facility
US3348211A (en) * 1964-12-10 1967-10-17 Bell Telephone Labor Inc Return address system for a data processor
US3408630A (en) * 1966-03-25 1968-10-29 Burroughs Corp Digital computer having high speed branch operation
FR1536616A (fr) * 1966-09-21 Ibm Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme
US3480917A (en) * 1967-06-01 1969-11-25 Bell Telephone Labor Inc Arrangement for transferring between program sequences in a data processor

Also Published As

Publication number Publication date
US3571804A (en) 1971-03-23
NL6812372A (no) 1969-03-04
GB1184317A (en) 1970-03-11
FI50815B (no) 1976-03-31
DE1774601A1 (de) 1971-07-15
SE303056B (no) 1968-08-12
FR1585651A (no) 1970-01-30
BE719886A (no) 1969-02-03
FI50815C (fi) 1976-07-12

Similar Documents

Publication Publication Date Title
US3781823A (en) Computer control unit capable of dynamically reinterpreting instructions
US3949379A (en) Pipeline data processing apparatus with high speed slave store
NO122458B (no)
US3689895A (en) Micro-program control system
EP0185215A2 (en) Forth-like language microprocessor
GB1481392A (en) System and method for concurrent and pipeline processing employing a data driven network
US3161763A (en) Electronic digital computer with word field selection
GB1129660A (en) Data processors
US4037213A (en) Data processor using a four section instruction format for control of multi-operation functions by a single instruction
US3302183A (en) Micro-program digital computer
US3980991A (en) Apparatus for controlling microprogram jumps in a microprogrammable electronic computer
US3200379A (en) Digital computer
GB1007415A (en) Digital computer
EP0070863A1 (en) CONTROL UNIT WITH SAVED PROGRAM.
US3699526A (en) Program selection based upon intrinsic characteristics of an instruction stream
US3737864A (en) Method and apparatus for bypassing display register update during procedure entry
US3058658A (en) Control unit for digital computing systems
US3001708A (en) Central control circuit for computers
US3239820A (en) Digital computer with automatic repeating of program segments
US3394350A (en) Digital processor implementation of transfer and translate operation
US4240137A (en) Computer for directly executing a program including a plurality of structured blocks
US3226691A (en) Data processing apparatus
US4179748A (en) Programmer and method of storing information therein and accessing information therefrom
CN105988775A (zh) 处理器、程序代码转换装置以及软件
US6961846B1 (en) Data processing unit, microprocessor, and method for performing an instruction