CA1145853A - Next address generation logic in a data processing system - Google Patents

Next address generation logic in a data processing system

Info

Publication number
CA1145853A
CA1145853A CA000401175A CA401175A CA1145853A CA 1145853 A CA1145853 A CA 1145853A CA 000401175 A CA000401175 A CA 000401175A CA 401175 A CA401175 A CA 401175A CA 1145853 A CA1145853 A CA 1145853A
Authority
CA
Canada
Prior art keywords
register
address
bits
multiplexer
control
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.)
Expired
Application number
CA000401175A
Other languages
French (fr)
Inventor
Virendra S. Negi
Arthur Peters
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.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Information Systems 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
Priority claimed from US06/000,734 external-priority patent/US4309753A/en
Priority claimed from US06/000,864 external-priority patent/US4224668A/en
Priority claimed from CA000342927A external-priority patent/CA1138118A/en
Application filed by Honeywell Information Systems Inc filed Critical Honeywell Information Systems Inc
Priority to CA000401175A priority Critical patent/CA1145853A/en
Application granted granted Critical
Publication of CA1145853A publication Critical patent/CA1145853A/en
Expired legal-status Critical Current

Links

Abstract

ABSTRACT OF THE DISCLOSURE
In a data processing system whose operation is under the control of firmware words stored in a control store, a technique is provided by which a routine which has been temporarily suspended may be returned to. The address of the last instruction executed in such routine prior to such suspension is stored and the routine is returned to by the use of such stored address with one bit thereof changed in state by use of an inverter.
The control store is addressed by means of next address generation logic which includes a first multiplexer utilized to address the control store, which multiplexer has several inputs. One of such inputs is received from a latching mechanism which allows more than one test condition to be simultaneously utilized for addressing the control store on a free flow basis.
These test conditions, as well as information from an addressed control word, are utilized in a multiplexed arrangement as one input of the first multiplexer.
By use of other inputs of such first multiplexer, the control store may be addressed by use of branch address information, as well as other test condition information. A page register provides the page address, to a plurality of pages included in this control store with the locations in each such page addressed by use of the above noted multiplexer combination.

Description

~5~5~

The present invention relates to data processing systems and more particularly to control store addressing architecture associated therewith.
~ ost data processing systems now include control stores which include so~called firmware in order to control the operation o~ such systems.
Included in such firmware are several main line routines and, in addition, subroutines which are shared by the main line routines. When switching from a main line routine to a subroutine or when suspending the operation of a routine for any reason, the address of the next location or instruction in such routine must be saved in order to insure return to the proper instruction of the routine which has been suspendedO One of the techniques used in the pr~or art includes the implementation of an address incrementer and a return address registerO Using this implementation, when a subroutine entry is performed, the incremented address is saved in the return address register as the address for the control store upon return from the subroutineO As can he seen, this prior art apparatus requires incrementer logic, as well as associated control logic, which, although adequate, does consume physical space and increases the cost in the manufacture of the particular system.
The control stores are addressed based upon the contents of control s~tore words as well as other inputs depending upon the operation being executed in the data processor, In such next address generation logic it is important that the status of more than one test condition be simultaneously utilized to address the control store. If this were not provided, it would require loading of each one of these status or test conditions into, for examp-le, a register on a clocked cycle basis. This would have to be done each time these test conditions changeO It is accordingly desirable to test more than one such function, up to four such functions for example, simultaneously without having to load them into a clocked register. By providing such capability, the addressing of such control store is faster, and, accordingly, the overall performance of the data processor is increased.
It is accordingly an object of th0 present invention to provide an improved control store addressing mechanism for use in a data processing systemO
According to the present invention, there is provided a data processor comprising:
Ao a control store having a plurality of locations, each said location for storing a control ~ord for use in controlling the operation of said processor;
Bo first means for receiving a plurality of signals indicative of status information of said data processor;
CO second means for receiving an instruction indicative of address information for use in addressing said control store;
D. third means for receiving a first portion of an addressed one of said control words;
E. first multiplexer means having an output for coupling to said output either said signals indicative of said status information or said selected portion of said addressed one of said control words;
F. means for decoding said information received by said second means for receiving;
G. means for selecting either said signals or said selected portion at said output of said first multiplexer means or for selecting said informa-tion received by said second means for receiving as decoded by said means for decoding;

~s~s~
H. second multiplexer means having an output and a plurality of inputs, a first one of said inputs coupled to said means for selecting and a second one of said inputs coupled to receive a second portion of an addressed one of said control words from said control store; and Io means, coupled to said output of said second multiplexer means, for addressing said control store by means of one of said inputs received by said second multiplexer meansO
In a preferred embodiment, a data processing system includes a control store having a plurality of locations, each of such locations for storing a control word for use in controlling the operation of the processor.
Apparatus is also included for receiving a plurality of signals indicative of status information of the data processor, for receiving an instruction indicative of address information for use in addressing the control store, and apparatus for receiving a firs~ selected portion of an addressed one of the control wordsO A first multiplexer apparatus is also provided, which has an output, which first multiplexer apparatus enables the coupling to the output thereof, such signals indicative of the status information or the first selected portion of the addressed one of the control words. Apparatus is also provided for decoding the information received by the apparatus for receiving the instruction indicative of such address informationO A third apparatus is provided for selecting either the signals or the first selected por~ion at the output of the first multiplexer apparatus or for selecting the information received from the apparatus for decoding. Second multiplexer apparatus is provided having an output and a plurality of inputs~ a first one of the inputs coupled to the apparatus for selecting and a second one of the inputs coupled to a second portion of an addressed one of the control words from the control ~5~353 store. Further apparatus is provided for addressing the control store by means of one of ~he inputs received by the second multiplexer apparatus.
The data processing system includes logic for performing logical operations on data, including the performing of a first routine and a second routine, a storage device having a plurality of instructions stored therein, ~herein the instructions are utilized for enabling the logic to perform such operations in a manner determined by such instructions, apparatus for address-ing such storage meansJ apparatus included in the logic for executing such routines, apparatus for suspending the execution of the first routine in order to execute the second routine, and apparatus for saving an address associated ~ith the last instruction of the first routine which was executed at the time of the suspension of the execution of such first routine. Such address inclu-des a plurality of bits, each bit having either a first state or a second state. Further apparatus is provided for changing the state of one of such bits of the address associated ~ith the last instruction prior to returning to the execution of the first routine, in order to address the next instruction of such first routine, which next instruction follows such last instruction of the first routine.
Arrangements according to the invention will now be described by way of example with reference to the accompanying drawings, in which:-Figure 1 illustrates the overall s~stem configuration which incor-porates the present invention;
Figure 2 is an operational sequence state diagram of the processor of the present invention;
Figure 3 is a block diagram of the processor of the present invention;

58S~

Figure 4 illustrates the contents of one of the registers of the processor of the present invention;
Figure 5 is a detailed block diagram of the arithmetic unit of the present invention;
Figure 6 depicts a portion of the contents of the control store word used in conjunction with the present invention;
~ igures 7A through 7F illustrate the details of the next address generation logic of the present invention;
Figures 8A and 8B illustrate the details of the subroutine logic of the present invention; and Figure 9 is a truth table illustrative of the operation of the logic of Figure 7A.
The purpose of the CIP 13 is to expand the CPU 11, shown in the system configuration of Figure 1, instruction set capabilities by using a powerful set of commercial type instructions. These instruction types allow the CPU, via the CIP, to process decimal and alphanumeric data; the instruction types are listed as follows: Decimal, Alphanumeric, Data Conversion and Editing. CIP communication with the CPU and main memory 17 is over a common s~stem bus 19. The CIP operates as an attachment to the CPU and receives instructions and operands as transfers from the CPU and/or memory. The CIP
executes the commercial instructions as they are sent over the bus 19 b~ the CPU 11. The CPU obtains these instructions from main memory, examining each fetched instruction specifically for a commercial instruction. Receipt of each commercial instruction by the CIP is usually concurrent with the CPU, as the CPU extracts and decodes each instruction from memory. However, CIP instruct-~on execution is asynchronous with CPU operations. Any attempt to execute a ~145~3S3 commercial instruction when a CIP is not installed in the system causes the CPU to enter a specific trap conditionO
The CIP receives information from the CPU and main memory via the bus 19, and processes this information in a logical sequenceO This sequence consists of four CIP operational states as follows: idle state, load state, busy state and trap stateO
As shown in Figure 2, the CIP enters block 200 and remains in the idle state (block 202) when not processing information, and must be in the idle state to accept a command (i.e., a CIP instruction or an I/O command) from the CPUO On receipt of a command (block 204), if legal (block 205), the CIP enters the load state (block 206) and remains in the load state until all associated command information is receivedO When this information is success-fully received (block 208), the CIP enters the busy state (block 210) to pro-cess the informationO Any further attempts by the CPU to communicate with the CIP while in its busy state are not acknowledged by the CIP until it returns to the idle state againO CIP processing includes the communication activity with main memory that occurs when fetching the necessary operand(s). The CIP
enters the trap state ~block 212) only when specific illegal events occur ~block 214), such as detection of an illegal operand length or an out of sequence command. Return is made to the idle state if the operation has been completed (block 216).
All pertinent instruction transfers to the CIP are performed jointly b~ the CPU and CIP. They are decoded and sent by the CPU to the CIP along with all of the pertinent information required for execution of the instruction.
When the ~ransfer of the information is completed, the CPU and CIP continue to process their respective instructionsO Each CIP instruction contains a 16-bit ~1458S~

wide instruction word that is immediately followed with up to six additional descriptive type words ~also 16-bits wide), called data descriptors and labels.
The instruction word contains the CIP op-code that is sent to the CIP for processing. The data descriptors describe the operand type, size, and location in memory; the label provides the address of a remote data descriptor. Both the data descriptor and the label are processed by the CPU; related information derived by this action, such as an operand type and memory address, is sent to the CIP for processingO The CPU accomplishes the preceding by analyzing the op-code that is contained in each instruction. When the CPU detects a CIP
instruction (iOeO, if the CIP is in the idle state), the CPU sends the instruction op-code and the related information in the following manner: (i) The CPU sends the op-code (i.e., the first word of the commercial instruction) to the CIPo The CIP enters the load state when it accepts the op-code; (ii) The CPU fetches the first data descriptor and interrogates the address syllable to generate the effective address; (iii) The CPU sends the following informa-tion: the 24-bit effective byte address of the first operand, the contents of the pertinent CPU data register, if applicable, and the data descriptor of the first operand, updated to reflect a byte (eight bits) or half-byte (four bits) digit position within a word; and as second and third operand are encountered, the CPU performs the applicable procedures in steps ii and iii.
At this point, the CIP is loaded with all of the necessary informa-tion required to execute the commercial instruction and enters the busy state to execute the instruction. When necessary, the CIP communicates directly with main memory to obtain the applicable operand(s). However, it should be noted tha~ the CIP never directly accesses any CPU registers. It only uses informa-tion sent to it by the CPUO Hence, no CPU registers are modified by the CIP

5~35~
and the CPU continues to process the next and each succeeding CPU instruction until one of the following conditions occurrs: ~i) The CIP, via a trap vector (T~, notifies the CPU that an illegal event occurred during the execution of the current commercial instruction; or ~ii) an internal or external interrupt signal is detected by the CPUO
When an interrupt signal is detected by the CPU, the CPU performs the following. The CPU determines whether or not the last commercial instruct-ion was completed by the CIP. The CPU waits for completion of the last commercial instructionO When the last commercial instruction is completed, -the CPU determines if it resulted in a trap requestO If it did, the CPU
honors the trap request before performing the interrupt. This results in a typical context save/restore operation to store all relevant CPU and CIP
status information, as required. With the completion of the CPU operations required to process a CIP trap request, or when there is no trap request and a CIP instruction is available for processing, the CPU performs the following.
The CPU updates its program counter to point to the commercial instruction it was attempting to initiateO The CPU defers the attempt to process the commer-cial instruction until the current interrupt is servicedO The CPU honors and services the interrupt caused by the external device.
As the CIP executes an instruction, all CPU registers, including those referenced by the current commercial instruction, can be altered by a program via CPU instructionsO However, the softNare must not modify the operand for a commercial instruction until the CIP is through processing that instruction; otherwise, unspecified results will occur. Branch instructions included in the CIP instruction repertoire are executed synchronously by the CPU and the CIP.

~1~5853 The three types of data that make up the data words processed by the CIP are Alphanumeric Data, Binary Data and Decimal DataO Each data type is classified into units of binary information. By definition this unit J when used to reference alphanumeric and binary data characters equals eight bits (one byte); when used to reference decimal data characters, it equals four bits (half byte) for packed decimal data and eight bits (one byte) for string decimal data. Also, single precision binary numbers consist of two units (two bytes) and double precision binary numbers consist of four units (four bytes).
Figure 3 is a major block diagram of the commercial instruction processor 13 of the present invention, showing all of the major data transfer paths between the processor's registersO
The control storage 10 is comprised of a plurality of locations, one for each control store or firmware word. These firmware words directly or indirectly control the processor sequences, data transfer paths, and bus opera-tionsO
The operand register files and arithmetic logic unit (RALU) 12primarily includes two register files~ an arithmetic logic unit (ALU) and the associated multiplexers and control registers. Included in the RALU 12 are the operand register files (RFl and RF2), each containing sixteen bit locations that are used to buffer operands for execution in the ALU. The ALU input multi-plexers and latches are comprised of the following: three 2-to-1 multiplexers ~zone selection), two 4-to-1 multiplexers (digit selection) J and two 8-bit latches (byte latches). These multiplexers and latches are used to deliver data from the operand register files to the ALU. Data can also be transferred from the current product counter to the left side of the ALU or from operand _ g _ ~4S8S~

register file 2 to the multiply registerO The 8-bit ALU (which is comprised of two 4-bit ALU chips, a carr~ look-ahead chip, and a carry in/carry out flip-flop) is capable of performing the following operations between the left ~1) and right ~2) inputs: Binary Add, Binary Subtract Input 1 from Input 2, Binary Subtract Input 2 from Input 1, Logical OR, Logical AND, Exclusive OR, Set ALU Output Equal to FF, and Clear ALU Output to 00. The R~LU is discussed in detail with respect to Figure 5.
The excess 6 (XS6) correction logic of the RALU is enabled whenever the A W is in decimal mode, and is used to change the binary output from the adder to the correct decimal digit while modifying the carry output for sub-sequent operations. XS6 correction is accomplished by using a 32-bit by 8-bit PROM chip, which encodes the corrected three high-order bits of the digit and generates the corrected carry. A digit less than two function is also avail-able on the output of the PROM chip for other controls. The ALU output multiplexer is used to feed either the upper four bits of the adder output or the correct decimal zone bits to the internal bus 14, depending on whether the ALU is operating in binary or decimal mode, respectivelyO The RALU control logic consists of three registers, which are as follows: RFlA - Register File 1 Address Register, RF2A - Register FiIe 2 Address Register and ALMR - ALU
Mode Control Register. These registers, in conjunction with several micro-instructions, control all operations within the RALU. Besides the registers and control described previously, there are two other registers that are classified as RALU registers. These registers are the current product counter ~CPRC) and the multiplier register (MIER), to be discussed hereinafter.
The control file 16, also referred to as register file C ~RFC), is a 16 location by 24 bit RAM that is primarily used to store all instruction , -- .

11~58S3 related information that originates from the CPU 11 (e.g., task words, data descriptors, effective addresses, etcO)O The control file also contains several work locations which are used by the processor ~CIP) firmware. The control file 16 receives bits 0-7 from either internal bus 14 or bus address register QMAR) 18 via OR logic multiplexer 21. The bus address register (MAR) 18 and address adder logic 20 shall now be discussed. The MAR register 18 is a 24 bit address register that is primarily used to address the system bus l9.
It is comprised of an 8-bit, two-input multiplexer register on the low end and a 16_bit incrementor/decrementor on the high end. The multiplexed input into the lower eight bits is from either the control file 16 or the output of the address adder 20. The address adder 20 is an 8-bit two's complemen~ adder unit that is primarily used for incrementing or decrementing the contents of the bus address register 180 The inputs to the address adder 20 are the low-order eight bits of the bus address register and the 8-bit shift register ~MSR) 22. The shift register (MSR) 22 is an 8-bit universal shift register that can be loaded from the internal bus 14 and is capable of shifting left or right by one bit ~i.e., open-end shift with zero_fill)O The shift register functions as an input to the address adder 20 for incrementing or decrementing the bus address register 18. In addition, bit O of the shift register 22 can be loaded into the ALU carry-in flip-flop, which is useful during execution of the conversion instructionsO
The bus output data register ~OUR) 24 is a 16-bit data register that is used to transfer data onto the bus 19 data lines. It is loaded from the internal bus 14 with either the lower or upper byte or the entire 16-bit word. The bus input data register ~INR) 26 is a 16-bit data register that is used to receive data from the bus 19 data lines. The contents of the input - 11 _ ~1~5853 data register can be unloaded onto the internal bus 14.
The input function code register (BFCR) 28 is a 6-bit register that is used to store the function code when the CIP accepts any bus 19 input or output commandO Subsequently, firmware examines the contents of the function code register 28 and executes the specified command~ The input address bank register ~INAD) 30 is an 8-bit register that is used to store the high-order eight memory address bits that are received over the bus 19 address lines. The high-order eight address bits contain the memory module address and are transmitted by the CPU 11 as the result of a so-called IOLD command or an output effective address function codeO The low-order 16-bits of the memory address are received over the bus 19 data lines and are strobed into the INR register 26, forming the required 24-bit main memory address.
The CIP indicator register 32 is an 8-bit storage register in which each bit can be individually set or reset. The indicator register bit configuration is shown in Figure 40 The TRP and TRP line indicators are used by the CIP 13 for internal processing only and are not software visible. The TRP line (CIP trap line) indicator is used to inform the CPU 11 of an existing CIP trap condition and is transmitted over the bus 19 via the external trap signalO When setJ the TRP ~CIP trap) indicator allows the CIP to accept only input commands from the CPUO
The analysis register ~AR) 34 is a 16-bit register that is primarily used to control microprogram branches (masked branches) and the over-punch byte encode/decode logic. This register is loaded with the entire 16-bit word from the internal bus 14. The microprogrammable switch register ~MPSR) 36 is an 8-bit register in which each bit can be individually set or reset under micro-program control. Each bit within the MPSR register 36 is used as a flag to ~45853 facilitate microprogramming (i.e., firmware can test each of the register bits and perform branch operations, depending on the test results). Some of these bits are also used to control certain CIP 13 hardware functions.
The ROS data register (RD) 38 is a 52-bit storage register that is used to store the control store output (firmware word) for the current firmware cycle. The microprogram return address register (RSRA~ 40 is an ll-bit register that is loaded from the output of the next address generation (NAG) logic 42 and is used to store the microprogram return address when executing a firmware subroutine. The register file C address multiplexer/selector (RFCA) 31 is a 4-bit, 2-to-1 selector that is capable of addressing one of the 16 locations contained within register file C (i.e., control file) 16. This selector 31 selects a combination of the function code register 28 and either counter (1) 46 or selected bits of the ROS data register 38 The CIP
counters 44 include three 8-bit up/down counters 46, 48 and 50 that are defined respectively as Counter 1 (CTRl), Counter 2 (CTR2), and Counter 3 ~CTR3). These counters are loaded/unloaded via the internal bus 14. The contents of each counter are available for test and branch operations.
The overpunch byte decode/encode logic 52 includes two 512-location by 4-bit PROM chips that are used to decode/encode the contents of 20 the analysis register (AR) 34O The byte being decoded is ob~ained from AR
bits 1 through 7 and the digit begin encoded is obtained from AR bits 4 through 7. The decode/encode operation is accomplished by using AR bits 1 through 7 to address a specific PROM locationO The contents of the specified PROM
location are coded to conform to either: (1) the decoded digit, its sign, and its validity, or (2) the encoded overpunched byte. The MPSR 36-bit 4 specifies whether a decode or encode operation is performed, while MPSR bit 1 indicates the sign of the digit being encodedO Also, the output of the ~1~5~S~

overpunched byte decode/encode logic is available on both halves of the internal bus 14.
The CIP test logic 54 selects one of 32 possible firmware test conditions for input to the next address generation logic 42. The true or false condition of the function being tested controls bit 50 of the control store next address field (iOeOJ sets or resets bit 50, depending on the condition of the tested function)O The next address generation (NAG) logic 42 included in the CIP 13 uses one of the following five methods to generate the next firmware address: direct address, test and branch, masked branch, major branch, or subroutine returnO Direct Address: this method is used when an unconditional branch is performed to the next sequential control store locationO This is accomplished by using bits 41 through 51 of the control store word to form the next addressO These bits comprise the next address (NA) field, which can directly address any of the available control store locations. Test and Branch: this method is used when a 2-way conditional branch (test condition satisfied) is performed within a firmware page (a firm-ware page being a 128-location segment within the control store). This is accomplished by using control store bits 41, 42, 43, 44 and 5G to select a test condition. Then, depending on the condition of the tested function, a branch is performed to one of two locations. The branch operation performed under this method is modulo 2 (i.e., the two possible branch addresses are two locations apart). The modulo 2 address is developed as follows: (1) if the test conditiQn is satisfied, bit 9 of the address is set to a one, or ~2) if the test condition is not satisfied, bit 9 of the address is set to a zero.
Masked Branch: this method is normally used when branching on the contents of the analysis register (AR) 34 or certain other conditions, and provides branch-~ 14 -ing to 2, 4, 8 or 16 locations within the same firmware page (a firmware page being a 128-location segment within the control store). Major Branch:
this method is used when branching within a firmware page ~128 words). A
CPU/CIP interface routine uses this method to perform the required 16-way branch on the contents of the function code register 280 ~INB Major Branch) and other control functions ~EOP Major Branch). Subroutine Return: this method is used to return the firmware to the next odd or even control store location after execution of a firmware subroutine. The return address is obtained from the return address ~RSRA) register 40, and must be stored in this register 40 prior to execution of the specified subroutine.
The internal bus 14 is 16-bits wide and is primarily used to transfer data bet~een CIP registers, including locations within the register files.
The internal bus receives data from several sources as shown in Figure 2.
Outputs from the internal bus 14 are fed to various registers within the CIP.
The parity checking logic 56 is coupled between the bus 19 and internal bus 14 and is used to check the parity of the incoming data. The parity generator logic 58, on the other hand, is used to generate the correct parity bit for transfer over the bus 19.
The bus request logic 60 and the bus response logic 62 are utilized for the purpose of enabling the CIP to gain access to the bus 19 and to respond to any requests to gain access to the CIP. Logic 60 and 62 are described in United States Patent No~ 3,993,981.
Figure 5 is a major block diagram of the RALU 12, showing all major data transfer paths and control lines. The control lines are shown as dashed lines for ease of understanding its operationc For convenience, the description of the RALU is divided into seven areas: Operand Register Files, ALU Input Multiplexers and Latches, Arithmetic Logic Unit, XS6 Correction Logic, ALU Output Multiplexer, RALU Control Logic, and Miscellaneous RALU
Registers. Operand register files RFl 70 and RF2 72 each consist of four RAM chips that are used as temporary storage for CIP operandsO Addresses for each of the register files are supplied by two 6-bit address registers (RFlA 74 and RF2A 76, respectively)O Bits O through 3 of each address register supply the address of the location within the associated register file, while the low order bits provide for byte and digit selection at the output of the register fileO Both of these address registers can be incremented or decremented by 1, 2 or 4 (iOeO, by digits, bytes, or words)O As shown in Figure 5, the output from each register file is fed to the inputs of two multiplexers (iOeO, a pair of multiplexers for each register file) that select between zone and digit informationO The selection is accomplished by bits 4 and 5 of the associated address registerO Bit 4 selects whether bits O through 3 or 8 through 11 (from the register file) are fed to the output of the 2-to-1 multiplexers 78 or 80 respectively, while bit 5 selects the register file bits that comprise the digit being fed to the output of the 4-to-1 multiplexers 82 or 84 respectively.
The various registers and multiplexers are coupled for control by various control lines, shown as dotted lines, and including, for example, control lines 71, 73, 75 and 770 A third 2-tc-1 multiplexer 86 is used to select whether the contents of the current product counter (CPRC) 88 or the digit from RFl is delivered to the A latches 900 This multiplexer is controlled by the ALMR register 920 The ALU input latches, A latches 90 and B latches lQ6, receive both zone and digit information from the ALU input multiplexers, and latch the data into the register files during write operationsO The outputs from the latch circuits feed the zone and digit information to the left ~L~45~35~3 and right sides of the A~U, respectivelyO
The current product counter ~CPRC) is a 4-bit decimal up/down counter that is primarily used during execution of decimal multiply and divide operationsO The multiplier register ~MIER) 9~ is a 4-bit binary up/down counter that is primarily used during decimal multiply and divide operationsO The ALU
mode control register (ALMR) 92 is a 6-bit control register that is used to control all ALU operationsO The register file 1 address register ~RFlA) 74 is a 6-bit address register that performs two functions: ~1) provides addresses for register file 1 (70), and (2) controls two of the three ALU input multi-plexers associated ~ith register file lo The register file 2 address register(RF2A) 76 is a 6-bit address register that performs two functions: ~1) pro-vides addresses for register file 2 (72), and (2) controls the ALU input multiplexers associated with register file 2. All arithmetic logic unit (ALU) 100 operations are performed in either the decimal or binary mode. Decimal mode is used when operating with decimal digit information, while binary mode is used for byte (Alpha) operations. Both modes of operation also control the excess 6 (XS6) correction logic 102 and the inputs to the carry flip-flop.
In decimal mode, the carry flip-flop is loaded with the carry from the low-order four bits of the Al.U, while in binary mode, it is loaded with the carry from the eight bits of the ALU for subsequent arithmetic operationsO The carry flip-flop is loaded under microprogram control when a carry must be propagated for subsequent operations. In addition, the carry flip-flop can be loaded from the MSR register, and set or reset under microprogram control.
The XS6 correction logic 102 has one 32-bit by 8-bit PROM chip and the associated control logic to correct the high-order three bits from the digit output of the ALU. XS6 correction is performed if: ~l) the ALU is in 1~45~353 decimal add mode and a decimal carry is encountered or the digit output of the ALU 100 is greater than 9, and ~2) in the decimal subtract mode, if a borrow is encountered ~io eD J absence of a carry from the digit portion of the adder).
The PROM chip has five address linesO Three of these lines consist of the three high-order bits from the digit output of the AW , while the other two address lines indicate the type of operation being performed (iOeO, add correction, subtract correction, or no correction). The coded contents of the PROM chip are the three high-order corrected bits of the digit, the corrected decimal carry, and the digit less than 2 conditionO
The ALU output multiplexer 104 selects between the upper four bits of the adder output and the corrected decimal zone bits for delivery to the internal busO The configuration of the zone bits ~for decimal mode) depends on whether ASCII or EBCDIC data is being used ~iOeO, if ASCII data is being used, the zone bits are forced to a value of 3; if EBCDIC data is being used, the zone bits are forced to a value of F)o The RA W controls consist of registers RFlA 74, RF2A 76, and ALMR 92 plu5 various RAW related microinstructionsO In addition, the ALU carry flip-flop is under microprogram controlO The carry flip-flop can be precleared or preset, ~as required), by the respective microinstructions) and can be loaded from: ~1) the 4-bit digit carry for decimal operations, ~2) the 8-bit binary carry for binary operations, or ~3) bit 0 of the MSR register 22 during execution of conversion instructionsO The ALMR register 92, which controls all AW operations, is loaded from control store bits 2 through 7O Bit 0 specifies ~hether the ALU operates in decimal or binary mode; iOeu, whether the carry out of the ALU is from bit 4 ~digit carry) or bit 0 ~binary carry)O Bit 0 also controls both the ALU correction ~XS6) for decimal operations and the ALU output ~145~353 multiplexer 104; the multiplexer determànes whether the high-order four bits of the ALU or the forced zone bits are gated to the internal bus 140 Bits 1, 2 and 3 are used to control operations within the ALUo Bit 4 specifies whether the zone bits are forced to a value of 3 or F ~i~eO, for ASCII data, the zone bits are forced to a value of 3; for EDCDIC data, the zone bits are forced to a value of F)o Bit 5 specifies whether the selected digit from register file 1 or the conten~s of the current product counter 88 are gated to the latches 90 associated ~ith the left side of the ALU. Register RFlA provides the address and controls for register file 1 and the associated ALU input multiplexers.
Register RF2A provides the addresses and controls for register file 2 and the associated ALU input multiplexers.
The control file 16 is divided into two sections: the upper section (bits 0 through 7) and the lower section ~bits 8 through 23)o Each section of the control file can be loaded as follows: RFC lower from the internal bus ~bits 0 through 15), RFC upper from the internal bus (bits 0 through 7), RFC
lower from the internal bus ~bits 0 through 15), and RFC upper from the bus address register 18 (bits 0 through 7). The functions used to implement the above operations have an address associated with them, which address corresponds to the RFC 16 location being loadedO This address originates from either the function code register 28 or the control store lOo Thus, the RFC address is directlr related to the type of data being delivered by the CPU 11, or as indicated by the function codeO
The CIP firmware word is divided into 14 distinct fields. Although several of the fields occur in identical bit positions within the firmware word format, their functions differ according to the particular operation being performed during the current firmware cycle. The 14 fields used for the CIP

~145853 firmware word are: ~1) RALU, ~2) BI, ~3) BE, ~4) MSCl, ~5) CTRS, ~6) CIIR, ~7) CONST, ~8) MAR/MSR, ~9) RFCAD, ~10) RFCWRT, ~ll) MISC2, ~12) MPSR, ~13) BR, and ~14) NAo Only fields BR and NA, shown in Figure 6, are pertinent to the next address generation logic of the present inventionO
The branch type ~BR) field includes bits 37 through 40 of the firm~are word. This field determines ~he type of branch performed as the result of a specific test condition~ The next address ~NA) field includes hits 41 through 51 of the firmware wordO This field is used to either~
provide a direct address for the next firmware location, or ~2) specify the test condition used during generation of the next firmware address, along with its relative address.
The next ROS address is generated as a function of the BR and NA
fields of the control store wordO A decode of these fields provides the following six microinstructions ~plus associated arguments) that perform the actual generation of the next address: BUN: Branch Unconditionally, BTS:
Branch on Test Condition, BMA: Major Branch, RAS: Return After Subroutine, BRM: Masked Branch, and BRMEX: Masked Branch Extended.
The next address generation ~NAG) logic 42 is shown in detail in Figures 7A through 7F and includes multiplexers, PROM chips, registers, and associated logic that, in conjunction with the following ROS Data ~RD) register fields, generate a control store ~ROS) addressO Such data Tegister fields include the ~1) branch field ~RD37BR through RD40BR), and ~2) the next address field ~RD41NA through RD51NA). These data register fields derive their specific functions from the firmware wordO The multiplexers along with the predetermined registers: ~1) select address data from one of the sources listed as follows, ~2) form this data into an ll-bit next address ~NEXAOO

l~LSb~S3 through NF.XA10) field, and (3) route this field to control store (ROS) 10 for selection of a specific control store word. The sources from which address data is selected are as follows: ~1) analysis register (AR) 34; (2) extended mask branch register 700 with its following inputs: (a) microprogram switch register ~PSR) 36, ~b) op-code register ~CIOPR) 704, ~c) counter 1 and counter 2 decode ~CTRl 46 and CTR2 48), ~d) counter 3 ~CTR3) 50, and (e) two sign status indicators ~NEGSNF and ILLSNF) or indicator register 32;
~3) end operation branch PROM (EOPMB) 706; (4) initial major branch PROM
(BINMB) 708; (5) ROS return address register ~RSRA) 40; (6) ROS address field (NEXA) 710; (7) ROS page register (RSRGR) 730; and ~8) ROS data register (RD) 38. The precise manner in which the NAG logic generates an address is described hereinafterO The following provides a functional description of the registers and PROMs that are directly associated with the NAG logic. The analysis register ~AR) 34 is a 16-bit register that is primarily used with a masked branch ~BRM) instruction to provide the necessary microprogram branches within the control store ~ROS) lOo The AR register is also used to implement the overpunch byte decode/encode operation. Data from the internal bus ~BI) is available to the AR register with the execution of a BARFBI microinstruction ~iOeO, load AR from BI). Data from the AR register 34 ~or the extended mask branch register 700) is selected and gated onto the AR test condition ~AROOTC
through AR15TC) field by RD register 38 bit ~RD37BR)o The extended mask branch register 700 is a 16-bit register. It is used exclusively with the extended mask branch ~BRMEX) i.nstruction to transpose pertinent commercial instruction processor ~CIP) functional data from selected registers and counters to the AR register 34 output test condition ~AROOTC through AR15TC) field for control store address modification or - 21 _ ~5~S3 generationO The selected registers and counters are as follows: (1) micro-program switch register 36: This register provides the applicable microprogram control flags (MPSR00 through MPSR03) for firmware interrogation, (2) op-code register 704: This register retains the applicable CIP instruction word op-code (CIOPR0 through CIOPR5) field, (3) counter 1 46 and counter 2 48 decode:
These counters provide test conditions for specific microprogram test and branch conditions, (4) counter 3 50 (bits 6 and 7): counter 3 (bits 6 and 7) provide for offset checkout, and (5) sign conditions: The sign conditions provide the negative sign (NEGSNF) and the illegal sign (ILLSNF) codes.
When a major branch (BMA) or a masked branch (BRM) instruction is executed, control signal RD37BR is falseO This disables the transfer of the preceding functions (items 1 through 5) into the extended mask branch register and enables the output from the AR register. Subsequently, the decode of an extended mask bTanch (BRMEX) instruction makes signal RD37BR true, disables the output from the AR register, and enables the output from the extended mask branch register.
The microprogram switch register 36 (MPSR) is an 8-bit register that uses each bit individually or groups of bits collectively as flags for microprogramming or for firmware test and branch operations. The output from the MPSR is distributed to the extended mask branch register and the binary collector multiplexers 712 to modify or generate a control store address. In addition, selected outputs from the MPSR 36 are distributed to the following CIP logic elements to perform the indicated functions: (1) overpunch decode/
encode logic 52; where (a) MPSR01 defines the operand sign (zero = positive (+) sign; one = negative (-) sign) and (b) MPSR0~ defines the type of decode/encode operation (zero = decode operation; one = encode operation); (2) data status 585~

accumulator: MPSR05 forms the address to status accumulator PROM; and (3) RALU: MPSR07 is used for the multiplexer 10's complement PROM during MIER
loading.
Data sent into the MPSR 36 is obtained from and controlled by the ROS data (RD) register 38 miscellaneous control ~RD32MS through RD36MS) field.
Signal RD3ZMS provides the firmware data for the MPSR input lines. It is made available to the respective MPSR output line by a 3-bit binary code on the select ~SEL) input lines to the register. This 3-bit binary code is provided by firmware via RD miscellaneous control ~RD33MS through RD35MS) signals.
The actual data transferred to the selected output line occurs when signal RD36MS is true and with the negative transition of MPSREN- on the clock ~C) input line to the register.
The op-code register 704 is a 6~bit register (CIOPR0 through CIOPR5) that holds an op-code from a CIP instruction word for ultimate address modification of a control store address. This op-code resides in the hexadec-imal code field ~bits 10 through 15) of the instruction word. The op-code register monitors internal bus bits BI10 through BI15 for this field. When the op-code register receives this field, it is sent to the extended mask branch register 700 and to the end operation PROM 706 where it is used in the genera-2a tion of the next address ~NEXA) fieldO Internal bus data is strobed into theop_code register 704 on the positive transition of its clock ~C) input line via signal LCIOPRo This signal is generated by decoding the output of the RD
register 38 when: ~1) the decoder input address field ~RD17KT through RD19KT) equals a binary 8, ~2) an RD register to BI load operation is not in progress ~i.eO, the unload ~ULKNST) signal is low), and ~3) with the positive transition of the next clock 1 pulseO

1~1L45&~53 Three 8-bit counter configurations called counter 1 (CTRl) 46, counter 2 (CTR2) 48, and counter 3 (CTR3) 50 provide the NAG logic with the following four test conditions that are used for specific test and branch operations described hereinafter: less than 8 ~CTR3L8), less than 4 ~CTRlL4), CTR2L4, and CTR3L4, less than 2 ~CTRlL2, CTR2L2, and CTR3L~,and equal to O
~CTRlEO, CTR2EO, and CTR3EO). The basic configuration for each of the three counters is the same. Hence, the following counter description is confined to CTRl 460 Internal bus bits 00 through 07 provide source data for each counter configuration. The least significant five data bits of byte O of BI ~BIDT03 through BIDT07) or all eight BI data bits of byte O ~BIDTOO through BIDT07) can be loaded into the counter at any one time as determined by the firmware.
The firmware selects the 5-bit or 8-bit load via the RD register constant ~KT) field bits RD16KT through RD23KTo The counter is incremented or decremented by a negative-going pulse on its respective count-up or count-down input line ~hile the opposite line is held higho Data from counter 1 is used to decode one of the preceding test conditions from its associated PROM. The selected information is then distributed to the extended mask branch register 700 and the binary~test collector multiplexers 712 where it is used to form the next address ~NEXA) field.
The ROS return address register ~RSRA) 40 is an ll-bit register that is. used to store a microprogram return addressO This return address is contained in the next address ~NEXAOO through NEXA10) field to control store and, when stored in the RSRA register, can only be accessed by a return after subroutlne ~RAS) instruction~ Data frcm the next address field is strobed into the RSRA register on the positive transition of its clock (C) input line via ~l~S~53 signal MISRADo The binary test logic 54 consists of four multiplexers and the associated gating logic, and is used exclusively with a branch on test (BTS) instructionO The logic selects one of 32 possible firmware test conditions and routes the selected test status (RSTSTT) signal to the next address generation logic 42 for use in the generation of a control store address.
Actual test selection is performed by the most significant four bits of the RD register next address field, i.e., (RD41NA through RD44NA) and RD50NA~
For example, to select the less than four status from CIP counter 2 (CTR2L4), the firmware encodes this NA field with a binary 3 ~i.e., turns on RD43NA and RD44NA~ and turns off RD41NA and RD42NA~ and also turns on RD50NA)~ This transfers the test results from microprogram switch register bit 7 ~MPSR07) and CTR2L4 to multiplexer output signal lines RSTST0 and RSTSTl~ respectively.
RSTST0 and RSTSTl in turn activate the corresponding wired OR output signals RSTSTE and RSTSTD~ RSTST2 and RSTST3 are disabled due to RD41 being off.
RD41 is fed through an inverter 713 to the enable input of the multiplexers corresponding to RSTST2/3~ However, with signal RD50NA true, further trans-mission of output signal RSTSTE is inhibited by the AND gate 717 since RD50NA
is inverted by inverter 719 and the negation thereof is fed as one input of gate 717~ while transmission of output signal RSTSTD is enabled by the AND
gate 715 to activate signal RSTSTT to the next address generation logic. This enables signal RSTSTT to reflect the true or false state of CTR2L4~
A control store address is generated by using the next address generation ~NAG) logic 42 in conjunction with the address lines to the control store (ROS)~ The NAG logic is designed to collect pertinent information from selected CIP sources, form this information into an ll-bit next address ~NEXA00 ~145~3S3 through NEXA10) field, and route the field to the corresponding control store (ROS) address linesO Selecting and routing this information is initiated and controlled by the following six CIP branch instructions: Branch Unconditionally (BUN), Branch on Test Condition (BTS)~ Return After Subroutine ~RAS), Major Branch ~BMA), Masked Branch ~BRM), and Extended Mask Branch ~BRMEX). All branch instructions are encoded in the RD register branch (RD37BR through RD40BR) field. Note that because the RD register receives firmware information from the control store, it is also called the control store wordO The manner in ~hich each instruction and the NAG logic performs its assigned task to form a control store address is described as follows, it being noted that the term firmware page is defined as a 128-word segment within the control store.
An unconditional branch instruction (BUN) is used to address the next sequential location in the control store 10. The firmware forms this address in the RD register next address ~NEXA) field. The RD register branch (RD37BR through RD40BR) field is set to zero for the BUN instruction. When the NAG logic decodes this instruction, the next address control (NEXAS0 and NEXASl) signals and the RAS instruction control ~NEXRAS) signal remain false.
This places a zero at the select (SEL) input lines to the BUN multiplexers, ~hich in conjunction with the associated gating logic, formulates and sends the above next address field to the control store. Also, with control signal NEXASl false, the most significant four bits from the next address ~NEXA00 through NEXA03) field are strobed into the page select register 730 on the positive transition of its clock (C) input line via signal RSPGCK. The page select register provides the firmware page number in control store for sub-sequent use ~ith a BTS, BRM, or BRMEX instruction.
A branch on test condition (BTS) instruction is used to perform a ~4S~S3
2-way branch within a firmware pageO It accomplishes this with bit 9 of the next address field ~i.eO, NEXA09). Bit 9 describes the true/false status of one of 32 possible test conditions selected by the binary test logic 54, and is used to modify a firmware-generated page address as it is formed in the next address ~NEXA) field and sent to control store. The RD register BR field is set to a binary 1 ~i.e., RD40BR is on) for the BTS instructionO The four most significant bits of the NEXA (RD41NA through RD44NA) field must contain a 4-bit binary value to select the desired test results. When the NAG logic decodes this instruction, NEXA control signal NEXASl goes true and the NEXA
control signals NEXAS0 and NEXASl remain false. This sets a binary 1 at the select ~SEL) input line to the BTS multiplexer, and enables the page select register and the associated gating logic to form and send the above next address field to the control storeO
The return after subroutine ~RAS) instruction is used to return to either the odd or even control store location, which corresponds to the addresc saved in the RSRA register, after the execution of a firmware subroutine.
The return address is obtained from the return address register 40, and must be stored into this register prior to execution of the firmware subroutine.
Execution of the RAS instruction transfers this address from the return address register ~RSRA) to the NAG logic to form the next address ~NEXA) field for a control store addressO The RD register BR field is set to a binary lO for the RAS instructionO When the NAG logic decodes this instruction, NEXA control signals NEXAS0 and NEXRAS are true. Control signal NEXAS0 sets a binary 2 on the select ~SEL) input line of the RAS multiplexer for the six least signific-ant bits from the RSRA register ~iOe., RSRA05 through RSRA10). Control signal NEXRAS enables bit 4 ~RSRA04) from the RSRA register through the NAG gating _ 27 -S~353 logicO The four most significant RSRA reglster bits ~RSRA00 through RSRA03) are enabled with RD39BR true on the select (SEL) input line to a second RAS
multiplexerO This action forms the NEXA format for a control store address.
The follo~ing description for the major branch (BMA), masked branch ~BRM), and extended mask branch ~BRMEX) instructions assumes that the analysis and page select registers contain the applicable address data required to form a next address ~NA) field. The BMA, BRM and BRMEX instruc~ions use the same NAG logic as the preceding (i.eO, BUN, BTS and RAS) three instructions to generate and format their respective next address fields. The firmware selects and executes one of the three branch instructions by encoding both fields with the applicable code (instruction/data source)D When the NAG logic decodes an instruction, it examines both fields (BR/NA) to determine the type of branch instruction and its data source; it then conditions the logic, For example, when the firmware initiates a BMA instruction, using the initial major branch PROM 708 for its primary data source, it encodes the RD register branch field ~ith a binary 5 and sets the applicable bits in the NA field, outlined above, to zero. When the NAG logic decodes this instruction: ~1) it encodes a binary 3 ~NEXAS0/NEXASl true) on the BMA multiplexer select (SEL) input line for data from the initial major branch PROM, ~2) it enables the output from 2Q the page select register (NEXASl true) and bit 45 ~RD45NA) from the RD register (NEXRAS false), and ~3) it selects (ENBMA) the initial major branch PRo~ via signal RD4QBR~. This forms the next address field for a control store address as shown in the preceding BMA-NA instruction format illustration. Note that the initial branch PROM is selected through a major branch decoder 732, which is enabled ~hen RD register bits 41 through 44 are set to zero as previously describedO

~458S3 The BRM and BRMEX masked branches are very similar in nature. The only difference between the two being that the BRM is based on the contents of the analysis register 34 of Figure 7BJ and the BRMEX branch, which is the extended mask branch, is based on the contents of the extended mask branch register 700 which has as its inputs some dedicated CIP control hardware. For both the BRM and BRMEX branches, RD38 of register 38 ~RD38BR) has to be trueJ
and for distinguishing between BRM and BRMEX bit RD37 is off for BRM and on for BRMEX. For ease of explanation, only the BRM branch will be explained here and the analogy will be made with the B~MEX and its associated hardware.
With RD38 true, the hardware decodes this branch instruction as a BRM. The BRM is based on the contents of the analysis register 34J which is a 16-bit register described previously. This register 34 can be interpreted as including four digits, digits OJ 1J 2 or 3J digit O being bits O to 3 and digit 3 being bits 12 to 150 While executing the BRM instructionJ bits 39 and 40 of RDBR control the digit select of the analysis register. For exampleJ
if RD39 and RD40 were O and 1 respectively, then, digit 1J that isJ bits 4 through 7 of the analysis registerJ would be selected for testing. NOW that bits 4 through 7 have been selected for testing, as the name appliesJ a mask has to be provided for these bits to mask out the bits to be tested. BY being able to mask these bits, the BRM has the capability of branching on a two-way branch, a four-way branch, an eight-way branch or an entire sixteen-way branchJ
if all four bits of that selected digit are being testedO
The mask which controls the bits to be tested in the analysis register is provided by RD41NA through RD44NA~ NOWJ for exampleJ if bits 4 and 5 of the analysis register 34 were to be testedJ then bits RD39BR and 40 would be O and 1 respectively, and bits RD41NA and 42 would both be trueJ

5~3S3 whereas bits 43 and 44 would be false, thereby giving a mask of 1100, a hexidecimal ~hex) C, indicating that bits 4 and 5 of the analysis register are to be tested. This is accomplished via the multiplexers 734 and 736 of Figure 7Bo The multiplexer 734 has as its inputs the 16 bits AROOTC through AR15TC, ~hich is basically a wired OR function of either the outputs of the analysis register 34 or the outputs of the extended mask branch register 700~ On the select input of such multiplexer 734 are the bits RD39BR and RD40BR~
Produced at the output of the multiplexer 734 are the selected four bits or selected digit of the analysis register controlled by RD39 and RD40~
The mask which is contained in RD41NA through 44 controls whether the bit selected from the digit of the analysis register or the corresponding bit from RDNA46 through 49 is to be taken to generate the NEXA for the next addres:sO This selection by the mask of the corresponding bits in the analysis register is accomplished by the multiplexer 736 in Figure 7B~ As shown in such ~lgure, the selection is controlled by bits RD41 through 44 and the selection is hetween the output of the multiplexer 734 NEXARO through NEXAR3~ or the corresponding bits from RD46NA through RD49NA~ The corresponding bits of the NEXA field are selected such that if the mask bit is on, then the corresponding bit of the selected digit of the analysis register is taken to generate the NEXA field. If the corresponding bits of the mask in RD41NA through 44 are off, then the corresponding NEXA bit is taken from the field RD46NA through 49~
These four bits, which are the result of the BRM or BMA microinstr-uctions, are used to generate the bits NEXA05 through NEXA08~ Taking, for example, the generation of NEXA05~ NEXA05 would be true if RD41NA is true and the selected bit of the digit, basically NEXARO~ is true~ Or, if RD41NA
is false, then the bit RD46NA would be selected to generate NEXA05~ Thereby, - 30 ~

this microinstruction BRM, as well as the BRMEX, have the capabi~ity of branching either on a two-way branch by testing only one bit, or to the other extreme, a sixteen-way branch by testing all four bits of the digit selected.
The extended mask branch is very similar to the BRM branch, except that instead of taking the output of the analysis register as the selected digit, it selects one of the groups of test conditions out of the extended mask branch register 700. The final output of the multiplexer 736, which is the result of the masked branch, NEXMK5 through NEXMK8, is wire ORed with the corresponding bits for the initial branch from the PROM 708 and the End Operation branch from PROM 7060 The major branch BMA is also similar to the BRM and the BRMEX, except that it requires mask in RD41 through 44 to all zeros. The bits RD39 and 40 via decoder 732 select one of four possible branch PROMs of BMA conditions to generate the next address. In the case of the BMA, it is always an unconditional sixteen-way branch. Bits RD46NA
through RD49NA are not used during the BMA operation, however, if further major branch conditions were necessary these bits could have been used to code more BMA conditions.
The subroutining mechanism of the CIP shall now be described. With reference to Pigure 8, the main line process starting in block 801 shares the subroutine in blocks 841, 842, etcO, with the main line process starting in block 871. In order to share a subroutine between two or more main line firmware processes, a return address has to be stored before going to the subroutine~ This firmware return address is stored in the register RSRA 40 under control of the microinstruction save return address (SRA) which is used to clock the register RSRA 40. At the execution of the SRA microinstructions the 11 bits of the next address are clocked into the register RSRA. For ~145~53 example, taking the flow starting in block 801, in block 801 the SRA micro-instruction is executedO This microinstruction saves the address of the next sequential location in firmware, for example address 400, as shown for block 802. At block 802 an unconditional branch or a testing branch, whatever the case may be, is made to the subroutine of block 8410 The subroutine is now executed, starting in block 841, and then 842, etc., until the end of the subroutine at block 843. A return after subroutine ~RAS) microinstruction is then executed, as shown in the block 8430 This microinstruction forces the NEXA to correspond to the contents of the RSRA registerO While making the return, since address 400 is saved in the RSRA register, the low order bit of that address in RSRA is inverted via inverter 880, to correspond to the address 401. The NEXA address then corresponds to location 401 and the firmware returns to the location of block 803 which has the address 401. Thus, only the lou order bit of the RSRA register is inverted to get to the corresponding return address point after the subroutine.
In the same analogy, the firmware routine starting in block 871 executes the SRA instruction and block 872, uhich has an address of 503, has such address 503 saved in the RSRA register. At block 872 an unconditional branch or a testing branch to the subroutine of block 841 is made. The subrautine is executed to its completion until block 843, where a return after subroutine ~RAS) microinstruction is executedO This time the RSRA register contains address 503 and the low order bit, bit 10, of that register, being a binary 1 is: inverted to a binary 0 to correspond to an address of 502. At the execution of RAS, the return address is now equal to 502 and the return is made to block 873 which has the address of 5020 Thus, irrespective of what the contents of RSRA were at the time the ~5~53 return is made, the low order bit of that RSRA i~ inverted to form the corresponding return address point for the RAS microinstruction. In such implementation, the low order bit is thereby used for a subroutining mechanism and gives two address pairs which are the exit from and entry to after the execution of the subroutine. If it is necessary to invert a different bit, the bit 8 or 9 or any other weight bit, so long as there is one bit inverted to make two corresponding locations for the subroutining mechanism inside the CIP. This mechanism eliminates the usage of an incrementer in the next address generation logic which is the conventional method of subroutining in firmware driven machines. For example, in a normal firmware machine, nominally the next address is incremented and this incremented value is saved in a return address register and this register is used to return to at the execution of the return after subroutine microinstruction. In the design of this invention, the need for such incrementer is completely eliminated and thus an incrementer is no longer necessary for firmware addressingO Only one bit needs to be inverted to make the subroutine mechanism operative.
This subroutining mechanism can also be expanded for the nesting of subroutines, if necessaryO In order to make the nesting mechanism, there would be a file of RSRA registersO For example, if there are to be four levels of nesting subroutines, then there will be four such RSRA registers which could be inside a register file or a last in first out register microcircuit.
Associated with this nested subroutine register file would be a pointer which would be incremented each time a save return address was made pointing to the last return address saved, so that when a subroutine return is made it will go back in the same sequence as it was saved.
The advantage of having the ROS page register 730 is that it provides ~:145~53 four high order address bits for the next address of the firm~areO If the ROS
page register was eliminated, it would require that the firmware word be increased by four bits to provide the high order 4 bits of the next addressO
By the present invention, since the 4 bits of the next address are provided by the ROS page register, the corresponding 4 bits of the RDNA field, that is RDNA41 through RDNA44~ can provide further control for the branch microinstruc-tionsO For example, in the BTS microinstruction, these bits are used to encode the condition which needs to be tested in this microinstruction, or in the case of the BRM and BRMEX microinstructions, these bits, bits RDNA41 through RDNA44~ provide the 4 bit mask to control the bits of the analysis register to be testedO
The firmware page in the apparatus of the invention is 128 words which are basically derived from the low order 7 bits of the next address, which correspond to bits RDNA45 to RDNA51, which, in turn, correspond to NEXA04 to NEXAlOo The firmware is divided into pages of 128 words, the philosophy of this 128 words per page is that in branches like the BTS~ BRM~
BR~EX and BMA~ the high order 4 bits of the next address field are directly coupled from the 4 bits of the ROS page registerO Since the next address field is 11 bits, that leaves 7 low order bits of the next address uhich are generated as a result of the address generation logic corresponding to these branch microinstructionsO Since the high order 4 bits of the next address are constant dur.ing execution of these microinstructions and are from the ROS
page register, it leaves only 7 bits to be manipulated for next address generationO Thus, the 7 bits correspond to the 128 words of address base which can be manipulated for these microinstructions. In the present apparatus, there are, by way of example, 16 such pages of 128 words (2 to the power of 7) 1~L4S8S3 thereby giving a total address base of 2048 words of firmwareO The basic savings derived from using the ROS page register is that the control store does not need to be expanded to include the bits corresponding to the ROS
page address and its next address field. If the depth of the control store is, for example, like in the CIP it would re~uire two extra chips of PROM which are much more expensive than one chip of the ROS page register.
The BRMEX feature is an extension of the masked branch ~BRM) microinstructionD Normally, the BRM microinstruction provides a capability of branching on more than one bit at the same time which bits are selected from the contents of the analysis registerO If the BRMEX capability did not exist, and it ~as necessary to test more than one logic function simultaneously in the firmware, it would require a load of these logic conditions into the analysis register from where they could be tested with the BRM microinstruction, and this would have to be done each time these logic conditions change and are tested, By providing the BRMEX capability, there exists the ability to test more than one function, up to four functions for example, simultaneously without having to load them into the analysis registerD These logic functions are systematically arranged in such fashion that groups of four correspond to different digits of the analysis registerD These groups of four conditions are selected on the basis of the design and their need to be in the same groupO These hardware conditions which need to be tested simultaneously, similar to the test BRM, are available in the extended mask branch latch 700 of Figure 7B. Actually, the latch ~or register) 700, is actually a buffer, and more particularly a tri-state buffer, ~iOeO, it is free flowing and is basically used for isolating conditions from the rest of the hardware), which is enabled or disabled for selection of a BRMEX or a BRM microinstructionO

5~53 The selection between the BRMEX buffer 700 and the BRM analysis register 34 is controlled by bit RD37BR. The assertion goes directly to the analysis register enable line and the same bit RD37 is inverted through the inverter 739 and the output of that inverter is gated into the enable pin of the buffer BRMEX 700O
As discussed hereinbefore, the selection of the major branch or the analysis register branch BRM or BRMEX is under control of bits RDNA41 through 44. When these 4 bi~s are zero, the BMA microinstruction is enabled. This zero detection logic is block 731 of Figure 7B. The decoder 732 is used to decode bits RD39 and RD40 which are encoded to select one of the four possible major branchesO In thc present apparatus~ only two of the four possible branches are used, iOeO, ENBMAO and ENBMAl, which correspond to EOP major branch PROM 706 and the initial major branch PROM 708 respectively.
With reference to Figure 7C, and with respect to the description of counter 1, which is shown in detail, the outputs of the counter 1 being CTR100 through CTR107 are coupled to the PROM chip 47O This PROM chip has on its output the conditions of counter 1 equal to O (CRTlEO), counter 1 less than 2 ~CRTlL2), and counter 1 less than 4 (CTRlL4)o This PROM chip is duplicated for each one of the other two counters, namely counter 2 (48) and counter 3 (50), Basically, the PROM chip takes all the 8 bits of the counters and decodes them to determine ~hether their values are equal to 0, less than 2, less than 4, or in the case of counter 3, less than 8. One reason for using a PROM chip for this logic instead of a typical gating structure, is that it saves physical space. If this decode logic was provided by use of typical hardware (i.e., small scale integrated circuits such as AND and OR gates) it would have taken about three chips of logic per counter to decode their respective values. By using the PROM chip for doing this decode, a significant amount of real estate (physical space) was savedO
Figure 7A depicts the final selection of NEXAOO through NEXA10 which, via the ROS address 710~ are coupled for transfer to the control store 10. The control functions NEXASO and NEXASl~ which are widely used in the logic of this Figure 7A~ are explained in the truth table of Figure 9. Figure 9 is a truth table for generation of the two control functions NEXASO and NEXASl~ In this truth table, the second column contains the different values of bits RD38BR through RD40BRo Column 3 contains the possible codes for the control signals NEXASO and NEXASl and the corresponding microinstructions which are generatedO For example, NEXASO is true, if RD38BR is true, or if RD39BR
is true, this corresponds to the codes shown in Column 3 for 100, 101, 110 and 111 and also 010 and 011. The first four codes starting at 100 to 111 are generated for the three microinstructions BRM~ BRMEX and BMA~ and the code 010 is generated for the microinstruction RASo For these four microinstructions BRM~ BRMEX~ BMA and RAS~ NEXASO is trueO NEXASO negation is true for the two codes of 000 or 001, which correspond to the microinstructions BUN and BTS
respectively.
A similar explanation for NEXASl generation will now be made.
NEXASl is true for bit RD38BR being true, or RD40BR being true. This in turn corresponds to the codes of 100 through 111 and 001 and Ollu The first four codes correspond to the microinstruction BRM~ BRMEX and BMA~ and the code of 001 corresponds to the microinstruction BTS~ It should be noted that the code 011 is not used at allO Similarly, NEXASl negation is true for the code of 000, or a 010, which corresponds to the microinstructions BUN and RAS respectively.
These functions NEXASO and NEXASl~ along with their negations, ~4St3S3 NEXASO negation and NEXASl negation, are used extensively to control the multiplexer selection in Figure 7Ao A more detailed explanation of Figure 7A~
which depicts the generation of NEXAOO through NEXA10 to be used for the control store address, ~ill now be made.
The high order 4 bits, NEXAOO through NEXA03~ have a possibility of three inputs and these inputs could be either directly from RD41NA through RD44NA~ or from the ROS return address register RSRAOO through RSRA03~ and lastl~ from the ROS page register RSPGOO through RSPGO30 The selection of RD41NA through RD44NA is for the microinstruction BUN~ which is the uncondi-tional branch, taking the data directly from the ROS data register. Theselection of the RSRAOO through RSRA03~ that is from the ROS return address register, is for the microinstruction RASo The selection of RSPGOO through RSPG03~ that is the ROS base register, is for all other microinstructions which are BRM~ BRMEX and BMAo The selection between RD41NA through RD44NA
and RSRAOO through RSRA03 is accomplished through the multiplexer 712~ The selection of RD41 through RD44 is provided for the microinstruction BUN~
which is controlled by RD39BR negative, and when RD39BR is positive, that is it is true, the output of the MUX is selected from the ROS return address registerO The output of this MUX is called NARTOO through NARTO30 The final selection of NARTOO through NART03 and RSPGOO through RSPG03 is accomplished by the enable lines on the multiplexer 712 and the register 730 which is the ROS page register explained earlierO
Referring again to Figure 9, which is the truth table, it shows that NEXASl being true corresponds to the microinstructions BTS, BRM~ BRMEX or BMA~
whereas NEXASl negation being true corresponds to the microinstructions BUN or RAS~ Hence, NEXASl controls the enabling and disabling of the multiplexer 712 ~ 38 ~

5~5;3 and the register 7300 If NEXASl is true, that is, there is either a BTS, BRM
or BRMEX in process, then the ROS page register 730 is enabled by the function NEXASl (negative) going negative. If NEXASl ~negative) is true, which corresponds to microinstructions BUN or RAS, NEXASl going negative enables the multiplexer 7120 The outputs of elements 712 and 730 are wire ORed together and the final output is the low order 4 bits of the next address NEXAOO through NEXA03.
NEXA04 is controlled by the two AND gates 714 and 716. The outputs of these AND gates NEXA04B and NEXA04A respectively are wire ORed tsgether to form the address NEXAO40 The two possible sources of NEXA04 are either the ROS return address register or directly from the ROS data register RD45NA. The ROS return address register RSRA bit 4 is enabled by the function NEXRAS which is generated for the RAS microinstruction. When NEXRAS is true, the output of NEXA04B follows the contents of RSRA bit 4, and is used to generate the output NEXAO40 Whereas if NEXRAS ~negation) is true, then the output NEXA04A is enabled and it follows the contents of RD45NA. These two wire ORed functions NEXA04A and NEXA04B together form the bit NEXA04 of the next address.
The control of the final low order six bits of the next address logic, NEXA05 through NEXA10 is accompIished via the multiplexer 718. This multiplexer is a 1 out of 4 multiplexer and is controlled by two control lines, NEXASO and NEXASl, which can have values 00~ 01, 10 and 11 respectively. These are depicted in the diagram of the multiplexer 718 as being the select code 0, select code 1, select code 2 and select code 3~ The select code O is the case where NEXASO negation is true and NEXASl negation is true~ That corresponds to the case of the BUN microinstruction which is the unconditional branch. ln this case, the contents of RD46NA through RD51NA which are directly from the _ 39 -~L~.45~353 control store word are enabled on the output to form NEXA05 through NEXAl0.
The next case when select 1 is true, that is NEXAS0 negation is true and NEXASl assertion is true, is the case where the BTS microinstruction is enabled. In the case of the BTS microinstruction, the six lines which are RD46NA through RD49NA and the final output of the test MUX 712 shown on Figure 7E, as the output of the wire ORed output of elements 715 and 717, along with RD51NA in that order are enabled on the output NEXAO5 through NEXAlOo The selection 2, which is the case with any NEXAS0 assertion being true and NEXASl negation being true, corresponds to the microinstruction RAS, which is the return after subroutine microinstructionO In this particular case, the ROS return address register, bits 05 through 09, and the ROS return address register RSRA10 negation, is enabled on the output NEXA05 through NEXA10. The final select output control 3 is the case where NEXAS0 and NEXASl are both trueO This is the case for the microinstructions BRM, BRMEX and BMA.
In this case, the NEXM05 through NEXM08, which are the outputs of the multiplexer 736 of Figure 7B, along with RD50NA and RD51NA, are enabled onto NEXA05 through NEXA10, Thus, the multiplexer 718 controls the output for NEXA05 through NEXA10 for the next address generationO Finally, these 11 bits, NEXA00 through NEXAl0, from the ROS address as depicted in the block 710 are coupled to the control store for completion of the next address.

_ 40 -

Claims (9)

THE EMBODIMENTS OF THE INVENTION IN WHICH AN EXCLUSIVE
PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:
1. A data processor comprising:
A. a control store having a plurality of locations, each said location for storing a control word for use in controlling the operation of said processor;
B. first means for receiving a plurality of signals indicative of status information of said data processor;
C. second means for receiving an instruction indicative of address information for use in addressing said control store;
D. third means for receiving a first portion of an addressed one of said control words;
E. first multiplexer means having an output for coupling to said output either said signals indicative of said status information or said selected portion of said addressed one of said control words;
F. means for decoding said information received by said second means for receiving;
G. means for selecting either said signals or said selected portion at said output of said first multiplexer means or for selecting said information received by said second means for receiving as decoded by said means for decoding;
H. second multiplexer means having an output and a plurality of inputs, a first one of said inputs coupled to said means for selecting and a second one of said inputs coupled to receive a second portion of an addressed one of said control words from said control store; and I. means, coupled to said output of said second multiplexer means, for addressing said control store by means of one of said inputs received by said second multiplexer means.
2. A processor as in Claim 1 wherein said first means for receiving is a plurality of gates coupled to pass said signals indicative of said status information to said first multiplexer means in an asynchronous manner.
3. A processor as in Claim 2 wherein said gates are of the type which provide an AND function.
4. A processor as in Claim 3 wherein said gates are enabled to pass said signals in response to a first level of one of a plurality of bits in an addressed one of said control words.
5. A processor as in Claim 4 further comprising:
A. a first register for receiving data representative of a mask pattern for use in transferring only selected bits of information as determined by said mask pattern; and B. means, responsive to a second level of said one of said plural-ity of bits, for enabling said data received in said first register to be transferred to said first multiplexer means.
6. A processor as in Claim 1 further comprising:
A. a page register for storing a plurality of bits of information;
B. means for coupling said page register and an addressed one of said words from said control store to third and fourth inputs respectively of said second multiplexer means;
C. first selection means responsive to a first instruction for enabling only the fourth input of said second multiplexer means to be coupled to the output thereof; and D. second selection means responsive to a second instruction for enabling a predetermined portion of said control word and said plurality of bits in said page register to be coupled to said output of said second multiplexer means.
7. A processor as in Claim 6 wherein said control store includes a plurality of pages, each of said pages including a plurality of said locations, wherein the number of said plurality of bits in said page register is sufficient to address any one of said pages, and wherein said predetermined portion of said control word has included therein a sufficient number of bits to address each of said locations in each of said pages.
8. A processor as in Claim 1 wherein said instruction received by said second means for receiving is indicative of branch address information for use in addressing a said location in said control store which is non-contiguous with a presently addressed one of said locations in said control store.
9. A processor as in Claim 1 further comprising:
A. further means for receiving yet further information indicative of the test status of said data processor; and B. means for coupling said further means for receiving to a fifth said input of said second multiplexer means for use in addressing said control store.

l0. A processor as in Claim 1 further comprising:
A. a return from subroutine address register;
B. means for storing a return address in said return address register;
C. means for coupling said means for storing to a fifth input of said second multiplexer means; and D. means, responsive to a predetermined instruction, for addressing said control store by means of said second multiplexer only, by use of the return address stored in said means for storing.
CA000401175A 1979-01-03 1982-04-16 Next address generation logic in a data processing system Expired CA1145853A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CA000401175A CA1145853A (en) 1979-01-03 1982-04-16 Next address generation logic in a data processing system

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US000,864 1979-01-03
US000,734 1979-01-03
US06/000,734 US4309753A (en) 1979-01-03 1979-01-03 Apparatus and method for next address generation in a data processing system
US06/000,864 US4224668A (en) 1979-01-03 1979-01-03 Control store address generation logic for a data processing system
CA000342927A CA1138118A (en) 1979-01-03 1980-01-02 Next address generation logic in a data processing system
CA000401175A CA1145853A (en) 1979-01-03 1982-04-16 Next address generation logic in a data processing system

Publications (1)

Publication Number Publication Date
CA1145853A true CA1145853A (en) 1983-05-03

Family

ID=27426212

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000401175A Expired CA1145853A (en) 1979-01-03 1982-04-16 Next address generation logic in a data processing system

Country Status (1)

Country Link
CA (1) CA1145853A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552511A (en) * 2020-05-14 2020-08-18 山东省计算中心(国家超级计算济南中心) Method for unpacking and recovering file name of Internet of things firmware of VxWorks system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552511A (en) * 2020-05-14 2020-08-18 山东省计算中心(国家超级计算济南中心) Method for unpacking and recovering file name of Internet of things firmware of VxWorks system

Similar Documents

Publication Publication Date Title
US4272828A (en) Arithmetic logic apparatus for a data processing system
US4395758A (en) Accelerator processor for a data processing system
EP0138419B1 (en) Central processing unit for a digital computer
US3585605A (en) Associative memory data processor
US4415969A (en) Macroinstruction translator unit for use in a microprocessor
US5293592A (en) Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
US4206503A (en) Multiple length address formation in a microprogrammed data processing system
EP0019392B1 (en) Instruction register sequence decoder for microprogrammed data processor and method
US5481734A (en) Data processor having 2n bits width data bus for context switching function
US4853849A (en) Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction
US5404560A (en) Microprocessor having external control store
CA1181865A (en) Microprogrammed control of extended integer instructions through use of a data type field in a central processor unit
US4309753A (en) Apparatus and method for next address generation in a data processing system
US4224668A (en) Control store address generation logic for a data processing system
EP0349124B1 (en) Operand specifier processing
US4258420A (en) Control file apparatus for a data processing system
US4812971A (en) Central processing unit for a digital computer
US4384343A (en) Firmware controlled search and verify apparatus and method for a data processing system
US6757809B1 (en) Data processor having 2n bits width data bus for context switching functions
US4245328A (en) Binary coded decimal correction apparatus for use in an arithmetic unit of a data processing unit
US4893235A (en) Central processing unit for a digital computer
CA1145853A (en) Next address generation logic in a data processing system
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
CA1138118A (en) Next address generation logic in a data processing system
US4271484A (en) Condition code accumulator apparatus for a data processing system

Legal Events

Date Code Title Description
MKEX Expiry