EP0215028A4 - Microprogram controller. - Google Patents

Microprogram controller.

Info

Publication number
EP0215028A4
EP0215028A4 EP19860901305 EP86901305A EP0215028A4 EP 0215028 A4 EP0215028 A4 EP 0215028A4 EP 19860901305 EP19860901305 EP 19860901305 EP 86901305 A EP86901305 A EP 86901305A EP 0215028 A4 EP0215028 A4 EP 0215028A4
Authority
EP
European Patent Office
Prior art keywords
register
instruction
memory
multiplexer
logic unit
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
EP19860901305
Other languages
German (de)
French (fr)
Other versions
EP0215028A1 (en
Inventor
David R Brooks
Daniel S O'sullivan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magellan Corp Australia Pty Ltd
Original Assignee
Magellan Corp Australia Pty Ltd
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 Magellan Corp Australia Pty Ltd filed Critical Magellan Corp Australia Pty Ltd
Publication of EP0215028A1 publication Critical patent/EP0215028A1/en
Publication of EP0215028A4 publication Critical patent/EP0215028A4/en
Withdrawn legal-status Critical Current

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/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
    • G06F9/267Microinstruction selection based on results of processing by instruction selection on output of storage

Definitions

  • the present invention relates to microprogram con ⁇ trollers including a memory to store instructions at speci- fied addresses, a register to hold a current instruction and an arithmetic logic unit (ALU) : the ALU executing the current instruction and thereby manipulating external data as well as altering the choice of the following instruction and accessing the corresponding address in the memory.
  • ALU arithmetic logic unit
  • This device comprises a memory containing coded instructions, and a register, connected in loop arrangement. The simplest arrangement is shown in Fig. 1.
  • the register R holds the current micro ⁇ instruction, which is presented to an Arithmetic/Logic Unit (ALU), that executes the instruction, manipulating external data as required.
  • An additional field in the micro- instruction represents the memory address of the next instruction to be executed.
  • this "next address” can be modified by the ALU outputs, providing a "conditional jump” feature.
  • Further prior art systems known to applicant are disclosed in Australian patent specification nos. 535105 and 538215 in the name of Control Data Corporation. The disclosures therein require the use of separate address registers and support circuitry, buses and the like for each memory bank.
  • a microprogram controller including a memory to store instructions at specified addresses, a register to hold a current instruc- tion including the address in the memory of the following instruction an arithmetic logic unit to execute the current instruction and thereby manipulating external data as well as altering the choice of following instruction; the improvement comprising dividing the memory into two banks and presenting the output of each memory, each said output being a possible following instruction,, to a first multiplexer which is connected to the register, and providing a second multiplexer to simultaneously with the execution of the current instruction receive as input any number of various conditions (including "1" and "0") one at a time, developed by the arithmetic logic unit and to develop a binary output to determine which of the following instructions at the
  • Figure 3 shows a block diagram of a micropro- grammer made in accordance with the invention.
  • FIG. 4 is a block diagram of a modified micro ⁇ program controller made in accordance with the invention.
  • the circular dashed arrow in Fig. 1 indicates the time sequence of the various operations. The total delay around this path limits the maximum speed of the machine. Since the delays in memory and the ALU represent by far the largest component of this delay, and in practical systems are often approximately equal, the scheme of Fig. 2 may be used to double the speed of the machine, by allowing these functions to proceed in parallel (see the two arrows in Fig. 2).
  • the current instruction and the address of its successor are held in the two registers Rl and R2. Simultaneously, the memory presents the following instruction at the input of Rl, while the address of its successor (i.e.
  • Fig. 3 The scheme according to the invention is shown in greater detail in Fig. 3.
  • the memory is here split into two banks (A and B), each of half of the original size (the total size will be dictated by program requirements), and register R2 of Fig. 2 is replaced by the multiplexer Ml, which can present the output of either memory bank to the register R.
  • the two paralleled paths are as before, denoted by circular dashed arrows.
  • the current instruction is output from R, and the
  • ALU commences to calculate the desired results.
  • Various con ⁇ ditions of possible interest (zero, negative, etc.) are offered as inputs to the secondary multiplexer M2, together with the constant values 0 and 1.
  • M2 selects one of these inputs, as specified by the instruction, and develops the binary output "SWITCH".
  • the address field of the current instruction has accessed both memory banks simultaneously, yielding two possible successor instructions. Note that the slow processes, i.e ALU function and memory access, proceed simultaneously.
  • the signal "SWITCH”, acting on multiplexer Ml determines which of the two possible successor instructions is actually loaded into R, and next executed.
  • the current instruction has modified its immediate successor, and simple programming methods may be used (as in Fig. 1).
  • a one-instruction "loop" is developed by coding the instruction's successor address to point to itself. As long as the looping condition obtains, the instruction (in one bank of memory) is repeatedly executed, when the condition fails, the alternative instruction is executed instead and the program proceeds.
  • Normal instructions i.e. those with no condi ⁇ tional effects, merely direct M2 to select one of the literal inputs 0 and 1, so explicitly directing the flow of control into Bank A or B as required.
  • Multi-way Branches Modification A limited ability to perform multi-way branches, based on values computed by the ALU, is frequently desirable. Such a feature can readily be added to the architecture of Fig. 3, yielding that of Fig. 4, by parti ⁇ tioning the multiplexer Ml, into two sections, handling the current instruction and next address fields respectively.
  • the current instruction field .operates as described above, ' as does most of the next address field.
  • a portion of -the address field is provided with an additional input channel ("BRANCH" in Fig. 4) supplied from a register previously loaded by the ALU.
  • BRANCH additional input channel
  • Literal Outputs Modification Another infrequently used, but nonetheless valuable feature is the ability for the microprogram to supply literal values to the ALU at certain times. This feature may be obtained by addition of the LITERAL register (Fig. 4). On every machine cycle, the current value in one memory bank (in this example memory Bank B) may be loaded into this register, which can be read by the ALU when required. This implies that instructions to load meaningful data into the literal register must themselves reside in Bank A, since the corresponding Bank B location contains literal data, not an instruction. Since no penalty attaches to branching from one bank to another, this is not a problem. Once loaded, the value in the literal register is simply another ALU input, to be accessed when required.

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

Abstract

A microprogram controller having a memory to store instructions at specified addresses, a register (R) to hold a current instruction including the address in the memory of the following instruction, an arithmetic logic unit (ALU) to execute the current instruction and thereby manipulating external data as well as altering the choice of following instruction wherein the memory is divided into two banks (A, B) and the output (each said output being a possible following instruction) of each memory bank is presented to a first multiplexer (M1) which is connected to the register (R), and providing a second multiplexer (M2) to simultaneously with the execution of the current instruction receive as input any number of various conditions (including ''1'' and ''0'') one at a time, developed by the arithmetic logic unit (ALU) and to develop a binary output to determine which of the following instructions at the first multiplexer (M1) is loaded into the register (R) to be next executed. The majority of conditional jump functions are, in fact, two-way decisions, i.e. IF (something) THEN DO (this) OTHERWISE DO (that). The new architecture is designed to optimise this type of decision. A LITERAL register is added to enable the microprogram to supply literal values to the arithmetic logic unit (ALU) at certain times.

Description

MICROPROGRAM CONTROLLER
The present invention relates to microprogram con¬ trollers including a memory to store instructions at speci- fied addresses, a register to hold a current instruction and an arithmetic logic unit (ALU) : the ALU executing the current instruction and thereby manipulating external data as well as altering the choice of the following instruction and accessing the corresponding address in the memory. In prior art controllers known to applicants electronic digital computing devices (in the general case, finite state automata) are generally controlled by a "microprogram -sequencer". This device comprises a memory containing coded instructions, and a register, connected in loop arrangement. The simplest arrangement is shown in Fig. 1. Here the register R holds the current micro¬ instruction, which is presented to an Arithmetic/Logic Unit (ALU), that executes the instruction, manipulating external data as required. An additional field in the micro- instruction represents the memory address of the next instruction to be executed.
In practical systems, this "next address" can be modified by the ALU outputs, providing a "conditional jump" feature. Further prior art systems known to applicant are disclosed in Australian patent specification nos. 535105 and 538215 in the name of Control Data Corporation. The disclosures therein require the use of separate address registers and support circuitry, buses and the like for each memory bank.
It is a principal objective of the present invention to provide a microprogram controller having enhanced features allowing computed jumps and/or sub¬ routines thus providing ease of programming of a single path machine combined with the speed of pipeline architec¬ tures. With this objective in view there is provided according to the present invention, a microprogram controller including a memory to store instructions at specified addresses, a register to hold a current instruc- tion including the address in the memory of the following instruction an arithmetic logic unit to execute the current instruction and thereby manipulating external data as well as altering the choice of following instruction; the improvement comprising dividing the memory into two banks and presenting the output of each memory, each said output being a possible following instruction,, to a first multiplexer which is connected to the register, and providing a second multiplexer to simultaneously with the execution of the current instruction receive as input any number of various conditions (including "1" and "0") one at a time, developed by the arithmetic logic unit and to develop a binary output to determine which of the following instructions at the first multiplexer is loaded into the register to be next executed. To this end, it is recognised that the vast majority of conditional jump functions are, in fact, two- -way decisions, i.e. IF (something) THEN DO (this) OTHERWISE DO (that). The new architecture is designed to optimise this type of decision. Further reference to the prior art systems and the invention will be made having reference to the accompanying diagrams, in which Figures 1 and 2 shown block diagrams of known microprogram sequencer.
Figure 3 shows a block diagram of a micropro- grammer made in accordance with the invention.
Figure 4 is a block diagram of a modified micro¬ program controller made in accordance with the invention. With reference to Figures 1 and 2, the circular dashed arrow in Fig. 1 indicates the time sequence of the various operations. The total delay around this path limits the maximum speed of the machine. Since the delays in memory and the ALU represent by far the largest component of this delay, and in practical systems are often approximately equal, the scheme of Fig. 2 may be used to double the speed of the machine, by allowing these functions to proceed in parallel (see the two arrows in Fig. 2). In Fig. 2, the current instruction and the address of its successor are held in the two registers Rl and R2. Simultaneously, the memory presents the following instruction at the input of Rl, while the address of its successor (i.e. the next-but-one) is presented at R2 by the ALU. Both registers update simultaneously on the system clock. This scheme, known as "pipelining", is widely used. The disadvantage of pipelined systems is inherent in the current/next use of the two registers. An instruc¬ tion that wishes to affect the flow of control (i.e. a jump) cannot affect its successor, whose address is already latched as the conditional jump is executed. It can only affect its successor-but-one. This leads to considerable inconvenience in programming. It also imposes a constraint that the shortest possible program "loop", comprises at least two instructions, even if one were sufficient (in the given ALU structure) to perform all required functions.
The scheme according to the invention is shown in greater detail in Fig. 3. The memory is here split into two banks (A and B), each of half of the original size (the total size will be dictated by program requirements), and register R2 of Fig. 2 is replaced by the multiplexer Ml, which can present the output of either memory bank to the register R. The two paralleled paths are as before, denoted by circular dashed arrows. The current instruction is output from R, and the
ALU commences to calculate the desired results. Various con¬ ditions of possible interest (zero, negative, etc.) are offered as inputs to the secondary multiplexer M2, together with the constant values 0 and 1. M2 selects one of these inputs, as specified by the instruction, and develops the binary output "SWITCH". Meanwhile, the address field of the current instruction has accessed both memory banks simultaneously, yielding two possible successor instructions. Note that the slow processes, i.e ALU function and memory access, proceed simultaneously. Finally, the signal "SWITCH", acting on multiplexer Ml, determines which of the two possible successor instructions is actually loaded into R, and next executed. Hence the current instruction has modified its immediate successor, and simple programming methods may be used (as in Fig. 1). A one-instruction "loop" is developed by coding the instruction's successor address to point to itself. As long as the looping condition obtains, the instruction (in one bank of memory) is repeatedly executed, when the condition fails, the alternative instruction is executed instead and the program proceeds.
Normal instructions, i.e. those with no condi¬ tional effects, merely direct M2 to select one of the literal inputs 0 and 1, so explicitly directing the flow of control into Bank A or B as required.
Multi-way Branches Modification A limited ability to perform multi-way branches, based on values computed by the ALU, is frequently desirable. Such a feature can readily be added to the architecture of Fig. 3, yielding that of Fig. 4, by parti¬ tioning the multiplexer Ml, into two sections, handling the current instruction and next address fields respectively. The current instruction field .operates as described above, ' as does most of the next address field. A portion of -the address field is provided with an additional input channel ("BRANCH" in Fig. 4) supplied from a register previously loaded by the ALU. A control bit in the current instruction would enable this additional selection when required, so replacing the chosen address field with the value previously computed. Literal Outputs Modification Another infrequently used, but nonetheless valuable feature is the ability for the microprogram to supply literal values to the ALU at certain times. This feature may be obtained by addition of the LITERAL register (Fig. 4). On every machine cycle, the current value in one memory bank (in this example memory Bank B) may be loaded into this register, which can be read by the ALU when required. This implies that instructions to load meaningful data into the literal register must themselves reside in Bank A, since the corresponding Bank B location contains literal data, not an instruction. Since no penalty attaches to branching from one bank to another, this is not a problem. Once loaded, the value in the literal register is simply another ALU input, to be accessed when required.
Subroutines Modification If the LITERAL register is capable of passing data to the BRANCH register (or, indeed, if they are the same register), a ready means exists to provide a single level of subroutine linkage. Multiple register sets could provide multiple subroutine nesting levels. This simple scheme onlypermits subroutines to be called from Bank A but as seen above, it is not a serious problem.

Claims

THE CLAIMS DEFINING THEINVENTION-ARE-AS-FOLLOWS:
1. In a microprogram controller including a memory to store instructions at specified addresses, a register to hold a current instruction including the address in the memory of the following instruction an arithmetic logic unit to execute the current instruction and thereby manipulating external data as well as altering the choice of following instruction; the improvement comprising dividing the memory into two or more banks and presenting the output of each memory, each said output being a possible following instruction, to a first multiplexer which is connected to the instruction register, and providing a second multiplexer to simultaneously with the execution of the current instruction receive as input any number of various conditions (including "1" and "0") one at a time, developed by the arithmetic logic unit and to develop a binary output to determine which of the following instructions at the first multiplexer is loaded into the register to be next executed.
2. The invention as claimed in claim 1 wherein the first multiplexer is partitioned into two sections for handling the current instruction and next address fields respectively and providing the address field with an additional input channel supplied from a register previously loaded by the arithmetic logic unit.
3. The invention as claimed in claim 1 or claim 2 wherein a LITERAL register is added to enable the micropro¬ gram to supply literal values to the arithmetic logic unit at certain times. 4. The invention as claimed in any preceding claims including means to provide a single or multiple levels of subroutine nesting levels.
EP19860901305 1985-02-20 1986-02-19 Microprogram controller. Withdrawn EP0215028A4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AUPG938385 1985-02-20
AU9383/85 1985-02-20

Publications (2)

Publication Number Publication Date
EP0215028A1 EP0215028A1 (en) 1987-03-25
EP0215028A4 true EP0215028A4 (en) 1987-07-23

Family

ID=3770948

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19860901305 Withdrawn EP0215028A4 (en) 1985-02-20 1986-02-19 Microprogram controller.

Country Status (4)

Country Link
EP (1) EP0215028A4 (en)
JP (1) JPS62501940A (en)
AU (1) AU582424B2 (en)
WO (1) WO1986005015A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119484A (en) * 1987-02-24 1992-06-02 Digital Equipment Corporation Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction
EP0302926B1 (en) * 1987-02-24 1993-07-14 Digital Equipment Corporation Control signal generation circuit for arithmetic and logic unit for digital processor
JPH04328634A (en) * 1991-04-26 1992-11-17 Nec Corp Microprogram controller
EP0522513A2 (en) * 1991-07-09 1993-01-13 Hughes Aircraft Company High speed parallel microcode program controller
US6629262B1 (en) * 1999-09-30 2003-09-30 Toshiba Tec Kabushiki Kaisha Multiplexed storage controlling device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
US3909797A (en) * 1973-12-13 1975-09-30 Honeywell Inf Systems Data processing system utilizing control store unit and push down stack for nested subroutines
EP0107952A2 (en) * 1982-10-18 1984-05-09 Nec Corporation Information processing apparatus and its instruction control system
EP0142562A1 (en) * 1983-01-14 1985-05-29 Hitachi, Ltd. Pipeline system for microprogram control unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5410219B2 (en) * 1973-12-07 1979-05-02
US4459666A (en) * 1979-09-24 1984-07-10 Control Data Corporation Plural microcode control memory
US4336602A (en) * 1979-09-24 1982-06-22 Control Data Corporation Network for generating modified microcode addresses
DE3009121C2 (en) * 1980-03-10 1982-02-18 Siemens AG, 1000 Berlin und 8000 München Microprogram controller

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
US3909797A (en) * 1973-12-13 1975-09-30 Honeywell Inf Systems Data processing system utilizing control store unit and push down stack for nested subroutines
EP0107952A2 (en) * 1982-10-18 1984-05-09 Nec Corporation Information processing apparatus and its instruction control system
EP0142562A1 (en) * 1983-01-14 1985-05-29 Hitachi, Ltd. Pipeline system for microprogram control unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MICROPROCESSING AND MICROPROGRAMMING, vol. 14, no. 3/4, October-November 1984, pages 211-214, Amsterdam, NL; E. MANDADO et al.: "New developments in fast microprogrammable control units" *
See also references of WO8605015A1 *

Also Published As

Publication number Publication date
JPS62501940A (en) 1987-07-30
WO1986005015A1 (en) 1986-08-28
AU5459986A (en) 1986-09-10
EP0215028A1 (en) 1987-03-25
AU582424B2 (en) 1989-03-23

Similar Documents

Publication Publication Date Title
US4984151A (en) Flexible, next-address generation microprogram sequencer
US3949370A (en) Programmable logic array control section for data processing system
US4398244A (en) Interruptible microprogram sequencing unit and microprogrammed apparatus utilizing same
EP0378830B1 (en) Method and apparatus for handling multiple condition codes as for a parallel pipeline computer
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US4860197A (en) Branch cache system with instruction boundary determination independent of parcel boundary
EP0198216B1 (en) Three phased pipelined signal processor
US4740893A (en) Method for reducing the time for switching between programs
US4558411A (en) Polymorphic programmable units employing plural levels of sub-instruction sets
EP0428326A1 (en) Processor array system
US4539635A (en) Pipelined digital processor arranged for conditional operation
CA1227578A (en) Entry control store for enhanced cpu pipeline performance
CN100437547C (en) Digital signal processor with cascaded SIMD organization
US5008807A (en) Data processing apparatus with abbreviated jump field
EP0034180A1 (en) Special address generation arrangement.
AU599245B2 (en) A return address stack
US4789957A (en) Status output for a bit slice ALU
US4370729A (en) Microprogram sequencer
US5459847A (en) Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register
Jones The ultimate RISC
US6026486A (en) General purpose processor having a variable bitwidth
AU582424B2 (en) Microprogram controller
CA1126406A (en) Sequence control circuit for a computer
US5590359A (en) Method and apparatus for generating a status word in a pipelined processor
KR100374401B1 (en) Hardware device for executing programmable instructions based upon micro-instructions

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19861018

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH DE FR GB IT LI LU NL SE

A4 Supplementary search report drawn up and despatched

Effective date: 19870723

17Q First examination report despatched

Effective date: 19880706

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 19910813

RIN1 Information on inventor provided before grant (corrected)

Inventor name: O'SULLIVAN, DANIEL, S.

Inventor name: BROOKS, DAVID, R.