Language selection

Search

Patent 1145853 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 1145853
(21) Application Number: 401175
(54) English Title: NEXT ADDRESS GENERATION LOGIC IN A DATA PROCESSING SYSTEM
(54) French Title: DISPOSITIF LOGIQUE GENERATEUR D'ADRESSES SUBSEQUENTES POUR SYSTEME DE TRAITEMENT DE DONNEES
Status: Expired
Bibliographic Data
(52) Canadian Patent Classification (CPC):
  • 354/230.73
(51) International Patent Classification (IPC):
  • G06F 9/22 (2006.01)
(72) Inventors :
  • NEGI, VIRENDRA S. (United States of America)
  • PETERS, ARTHUR (United States of America)
(73) Owners :
  • HONEYWELL INFORMATION SYSTEMS INC. (Not Available)
(71) Applicants :
(74) Agent: SMART & BIGGAR
(74) Associate agent:
(45) Issued: 1983-05-03
(22) Filed Date: 1982-04-16
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
000,864 United States of America 1979-01-03
000,734 United States of America 1979-01-03

Abstracts

English 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.


Claims

Note: Claims are shown in the official language in which they were submitted.



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.

41



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

42



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

43



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.

44

Description

Note: Descriptions are shown in the official language in which they were submitted.


~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


1353

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


-- 3 --

~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


-- 6 --

~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


- 10 -


, -- .

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

- 13 -

~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 -

58S3

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,


5853

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

- 16 -


~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


- 19-

~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


- 20 -

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


- 22 -

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


- 23 -

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


- 24 -

~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


- 25 -

~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


- 26 -

~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

- 28 -

~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


29 -

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 ~

5BS3

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

- 31 -

~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


- 32 -

~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


- 33 -

~: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)


- 34 -

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


- 35 -

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


53

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,
- 37 -

~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 -

Representative Drawing

Sorry, the representative drawing for patent document number 1145853 was not found.

Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 1983-05-03
(22) Filed 1982-04-16
(45) Issued 1983-05-03
Expired 2000-05-03

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $0.00 1982-04-16
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
HONEYWELL INFORMATION SYSTEMS INC.
Past Owners on Record
None
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Description 1994-01-05 40 1,679
Drawings 1994-01-05 11 250
Claims 1994-01-05 4 108
Abstract 1994-01-05 1 30
Cover Page 1994-01-05 1 15