Data processing system with multiple i/o buses
5 claims: 5 independent, 0 dependent
- 1CLAIMS:1. A data processing system comprising: a central processor unit connected to a system bus means having system operating timing and control characteristics for providing communication with one or more system units connected to said system bus;a first input/output bus means having operating timing and control characteristics which are different from those of said system bus means for providing communication with one or more first input/output units connected to said first input/ output bus means;interface means interconnecting said system bus means with said first input/output bus means for providing communication from said system bus means to said one or more first input/output units via said input/output bus means’
- 2A data processing system in accordance with claim 1 and further including:' a second input/output bus means having operating timing and control characteristics which are different from those of said system bus means and said first input/output bus means for providing communication with one or more second input/output units connected to said second input/output bus means;said interface means further interconnecting said system bus means with said second input/output bus means for providing further communication from said system bus means to said one or more second input/output units via said second input/output bus means.
- 3A data processing system in accordance with Claim 2, wherein said interface means further includes:identifying means for identifying each of said second input/output units which are currently in communication with said second input/output bus means;and storing means for storing information which indicates the presence of each of said identified second input/output units;and means responsive to said stored information for controlling the operation of said interface means to provide access to said identified second input/output units via said second input/output bus means.
- 4A data processing system in accordance with claim 3, wherein said identifying means includes:a poll register means for supplying coded information with respect to all said second input/output units;means responsive to information generated by each of said second input/output units which is present on said second input/output bus means in response to the receipt of said coded information for producing an indication signal which indicates that an input/output unit is so present on said second input/output bus means;and said storing means being responsive to said indication signal and to said coded information for storing information indicating the presence of said input/output units.
- 5A data processing system in accordance with claim 4, wherein said storing means provides a sensing signal identifying the presence of an input/output unit on said second input/output bus means and further including:bus control means responsive to said sensing signal for providing selected control signals to permit access by said system bus means to said second input/output bus means via said interface means.
Independent claims5
669 paragraphs in 26 sections, as filed
INTRODUCTION * -This invention relates to data processing systems using micro-processors and, more particularly, to systems using twolevel microcode architecture.
BACKGROUND OF THE INVENTION
Data processing systems have generally been developed to provide system configurations which range from comoact, singleboard microcomputers to more complex, high performance minicomputers. Such systems use microcode architecture in which macroinstructions are suitably decoded so as to provide access to a microinstruction or to a sequence of more than one microinstruction obtained from a suitable data store thereof.
Generally, in such systems, for example, a macroinstruction is appropriately supplied from it macroinstruction register to suitable decoding logic so as to provide a starting address for access in the microinstruction data store (sometimes referred to as the microcode store) of an initial microinstruction of a sequence thereof. The accessed microinstruction includes control infromation for performing the instruction designated and sequence information for determining the microaddress of the next microinstruction of the sequence. Each sequential microinstruction contains the same kind of information until the last microinstruction of the sequence has been accessed at which point the microinstruction routine having been completed, the system is ready to decode the next macroinstruction.
Such systems normally require data store utilizing microinstruction they contain a rolatiyoly to «»tai״ the require״ <sub>control a״d ־ot</sub>,<sub>llc</sub>״<sub>cin<1 infornat</sub>.<sub>on</sub>. hile the use 0. relatively ״ide ,״״״instruction ״<sub>ords ide;</sub>.
a relatively large microcode words which are relatively larqo number of bits) so as wide
<img file="IL73852A_D0001.tif" />
higher speed operation (i.e., a Jargc number of bits are simultaneously available in parallel to provide the control and sequencing operations) such systems tend to be more costly not only because the number of storage bits in microcode data store becomes relatively high but the data paths for handling a wide microinstruction word become more‘ complex and the system requires more expensive components and data path configurations.
In order to reduce the data storage space required for the microinstructions and to avoid handling a large number of wide instruction words, certain microcode systems have utilized two-level microcode store techniques as opposed to one level microcode stores as discussed above. Such two-level configurations arise from the recognition that control information in the microinstruction words arc often common to a large number of the microinstructions, Therefore, in order to avoid the repetitive storage of the same relatively large number of data bits required to Store all of the control and sequencing information for each microinstruction separately, control information, which is common to many microinstructions, is stored in one ROM store separately from sequencing information which is stored in a different ROM store. At the first level of operation the sequencing process is performed at the sequence microcode store ROM to produce sequential addresses to access control information in the control microcode store ROM which at the second level of: operation provides the control information required to sequentially perform the particular microinstruction involved, which latter., information may be.common to many microinstructions.
<sup>such £1</sup>’°״<sup>ι</sup>’<sup>ν01</sup> .....<sup>.</sup>.... '״״ ״*״ ״, <sub>raicrocodc</sub><sup>£t0ra1JC</sup> ״״“ <sup>rrti</sup><sup>ired in</sup> ...... on־-!™! microcode systems, such ι.<sub>ωη</sub>.1<sub>β</sub>1״״ a_________ סחן, however, ״ '<sup>icr״COliL</sup>’ ״PeraLienal capability since tore capacity nay permit the system to a specified se| of microinstructions with no mg for expansion of the basic increase the operational
Such two-level techniq provide only a limj.ted mi the limited control be designed for real flexibility for providinq’ ' microinstruction set i״ <sub>ordcr t0 </sub>capability of the overall system.
עהוזז tend to
SUMMARY OF THE INVENTION
This invention utilizes an j concept which increases the power <sub>t</sub>7<sup>tOm iB that </sup>״״״־־:״ ־׳ -— ’ <sup>״</sup>, ° ““<sup>01</sup>״׳»»־״‘‘.״ »t ״״out increasing «« <sub>si?</sub>, <sub>ot </sub>«־rocod. control store. ״ <sub>ewo־(״n(!e</sub> what has been termed an <sup>,</sup>׳orthoconaJ ״ mi u;. unogonaj. microcon trol ״hioh a first, <sub>r)l</sub>. <sub>Plicro[</sub>,<sub>ont1</sub>.<sub>ol =|oro</sub> . ,״*-״* ’״״״“׳ ’ ״«. word portion having one hits /<sup>0</sup>״»״ <sup>£</sup>° ״׳*”׳ <sup>י</sup>' <sup>9</sup>ד« , . <sup>nctln</sup>'J ס״ס οί a plura!ity <sub>o</sub>f second or horizontal ״ -nd love!, or horizon^ <sub>mlcr0</sub><sup>r</sup>° store, one or mo<sub>re</sub>>,״<sub>a1fler</sub>.
more fully below, address of 1 he next (i.<sub>G</sub> instruction in extension of the two-level of a two-level microcode includes store in provides
-------s, as described ״־d a sequencing field <sub>£or</sub> p<sub>־</sub>״<sub>enting</sub><sup>״ncl</sup>' <sup>su</sup>—־l״e> vortical micro° <sup>S</sup>°'<sup>1UC</sup>״־־־׳ .'־״״» ™״ horizontal microinstruction represents ה basic function to be performed but, unlike prior systems, one or more of the fields thereof arc subject to modification by the modifier field of the vertical microinstructions. For example, prior two-level systems use a vertical sequence store which merely specifies the address of a particular control word in a horizontal control store, the control word requiring the movement of data from a first specified register (c!.y., general register GR1) to a second specified register (e.g., general register GR2). Tn contrast the two-level microcode system of the invention might, for
I . . .
ן example, .specify, with a vertical microinstruction, a horizontal instruction which requires the movement of data from an unspecified location to an unspecified location. Such microinstruction would be common to a large number of data movement instructions. The vertical microinstruction could j then also contain in its modifier fields the specific source | and destination locations for such data movement and thereby modify the basic horizontal microinstruction so as to identify such locations therein.
Further, the two-level microcode system of the invention | can. be arranged so that the vertical microinstructions can 1 be fetched from control stores which are located directly on the microprocessor chip or, alternatively, from external j microcontrol source.־;. The horizontal microcontrol store can | also be located directly on the microprocessor chip.
I <sub>1</sub> j The. power of each horizontal microinstruction is effective !
j ly multiplied by the modifications of such microinstructions
I <sup>1</sup>'I I!
<sup>1</sup>I ־׳'tai whioh can be achieved by the. vertical microinr.truetion3, such technique being sometimes designated herein as a two-level micro-modification technique. Since each horizontal microinstruction can be modified by a large number cf vertical I microinstructions to represent thereby a large number of overall unique microinstructions, a relatively small number of horizontal microinstructions can be used to provide a general, but efficient set cf basic control operations, sometimes referred to as control primitives.
The system of the invention also includes the capability for providing communication with peripheral devices via more than one input/output. (I/O) bus. For example, the system in a preferred embodiment provides a system I/O interface unit which includes means for identifying all devices which are currently present on a selected one of the I/O buses using unique polling techniques for such purposes as discussed below. Further, the system .I/O interface unit is arranged to provide direct control of the transfer of information through the system I/O interface unit to the selected bus which has been polled and indirect control of an auxiliary interface unit for providing transfer of information through the auxiliary unit to another selected bus which has not been ,polled.
The system I/O interface unit also utilizes one or more counter signals, eacli Of which has a substantially constant frequency and isj derived from a system input clock signal. The system I/O interface unit, however, may receive a system input clock signal which han any one of a plurality of different, but known, frequencies. Accordingly, such unit includes a unique frequency synthesizer unit which can respond to any of the plurality of different frequency input signal and can still derive the desired one or rn6rc counter signals therefrom at the desired substantially constant frequencies involved.
Further, the system of the invention includes a unique system bus protocol which prevents simultaneous access to the system bus by two competing system components. Moreover, the system bus protocol permits a system component to obtain control of the system bus directly without the requirement for a bus control decision to bo made by the central processor unit, so long as all other system components have indicated that the system bus is ready for access and so long as no other system component has asserted a signal indicating its refusal to relinquish prior control of the system bus.
DESCRIPTION OF THE INVENTION
The various aspects of the invention can be described more fully with the help of the accompanying drawings wherein:
FIG. 1 shows a broad block diagram of an overall system in accordance with the invention;
.FIG. 2 shows a block diagram of an exemplary central processor unit (CPU) of the system of FIG. 1;
FIG. 3 shows a more specific block diagram of the vertical sequence unit of the CPU of FIG. 2;
FIG. 4 shows a more specific block diagram of the micromodification unit of the CPU of FIG. 2; .
״
HRS. 5-7 show block diagrams of exemplary logic useful in controlling system bus; protocol for the system of FIG. 1;
FIGS. 0 and ΠΛ show a block diagram of the system I/O interface unit of FIG. 1;
FIG. 8B shows a more specific block diagram of a portion of the system I/O interface unit qf FIGS. 8 and 0A;
FIG, 9 shows a more specific logic diagram of the master control finite state machine and control logic of FIGS. 8 arid 8B;
FIG. 10 shows.a more specific logic diagram of the microNOVA finite state machine and control logic of FIGS. 8A and 8B;
! FIGS. 11 and 12 show more specific logic diagrams of the microNOVA polling logic of FIGS. 0, 8Ά and RB;
j FIG. 13 shows a more specific block diagram of the
I frequency synthesizer unit of FIG. 8;
FIG. 14 shows a chart which depicts the parsing algorithm used for the operation of the frequency synthesizer of FIG. 13; j and
FIG. 15 shows an exemplary timing diagram of the frequency synthesizer output signal as generated from either of two exemplary input signals thereto.
An overall system using the techniques of the invention is shown in FIG, 1 wherein a microprocessor chip 10 (identified as a central processor unit or CPU in the figure) is interconnected via an appropriate system bus 11 with a memory system 12, one or more system .I/O units 1.7, one or more external microcontroller chips 13 (identified as XMC chips) and a system input/output interface unit 14 (identified as the system I/O interface) and a further interface unit 14Λ (identified as ECLIPSE® I/O interface) which latter units interface with appropriate buses 15 and 15A for external input/output devices. For example, in a particular embodiment the system is designed to operate with peripheral (I/O) units of the microNOVA® type as used with microNOVA® computer systems as made and sold by Data General Corporation of liestboro, Massachusetts and with peripheral (I/O) units of the ECLIPSE® type as used with ECLIPSE® computer systems made by Data General Corporation.
In a particular embodiment thereof the system bus 11 is a 16-bit parallel system bus, as shown, while microcode bits from the external microcontroller chips 13 are transmitted to the CPU in a time-multiplexed fashion via a suitable dedicated eight-bit microcode bus 16.
FIG. 2 depicts a more detailed block diagram of CPU'10, the eight-bit external microcode bus 16 supplying its microcode bits to an appropriate external microcontroller chip (XMC) interface unit 17A and the system bus 11 being connected to a suitable bus transceiver unit 18 capable of accepting or of supplying apporpriate data for transmission to and״from the CPU.
The CPU utilizes macro-instruction logic which includes macrO-instruction register (IR) 19 and program counter (PC) register 20, together with a suitable register file 21, comprising appropriate general registers and accumulators, and a suitable arithmetic logic unit (ALU) and shifter unit 22 having A and B inputs and a .<sup>U</sup>C output, such registers, accumulators, ALU and shifter components being capable of implementation using suitable configurations well known to the art.
A plurality of four internal buses 23, 24, 25 and 26 provides for appropriate internal data paths among such units, as shown in FIG. 2. The C-outpnt of the ALU and shifter logic 22 is supplied to the other units as well as to the system bus via bus transceiver on internal C-bus 23. The A and B inputs to the ALU and shifter logic 22 communicate with the other units via internal A-bus 24 and D-bus 25, respectively. Internal bus 26 provides a direct path from the registers and accumulators to the system bus 11 via bus transceiver 18, The use of such multiple internal data paths permits several concurrent operations to occur within a single microcycle, which in the particular embodiment discussed here is 400 nanoseconds. In accordance therewith, 16-bit register-to-register operations are performed in One microcycle (sometimes referred to as a T-period) and memory-to-register transfers are performed in two'microcycles (two T-periods),
The two-level microcontrol stores are depicted as vertical control read-only-memory (ROM) 31 and horizontal control ROM 32. in a particular embodiment of the .invention, the first level, or vertical, control ROM 31, provides an 18—bit vertical microinstruction, 6 of such bits being used to select one of a plurality of second level, or horizontal, microinstructions at horizontal microcontrol ROM 32, there being 64 of such instructions stored therein in the particular embodiment shown here. Horizontal control ROM 32 provides horizontal microinstructions having 33 bits, in a particular embodiment, the horizontal control ROM, for example, having a 64 x 33 bit configuration. In the embodiment described, eight bits from the vertical control store 31 are used to provide two 4-bit modifier fields which can be used to modify the horizontal microinstruction which has been selected from the horizontal microcontrol ROM as discussed below. The remaining four bits of each vertical microinstruction are used to control the sequencing of the vertical microinstructions, i.e., to specify thu next address mode from vortical control ROM 31 via appropriate vertical sequencing logic 33. The modification of specified fields of the selected horizontal microinstruction by the two modifier fields of the vertical microinstruction is accomplished via appropriate micro-modification logic 34 which thereupon supplies a 35-bit microinstruction word which is suitably decoded by horizontal decode logic 35 to provide the necessary control signals and sequencing signals required for performing the function of the selected microinstruction.
Vertical microinstructions can be fetched either from the CPU-resident vertical control ROM 31 or from an external microcontroller chip 13 (sec FIG. 1) via external microcontroller chip interface unit 17A, while horizontal microinstructions are fetched from the CPU-resident horizontal control ROM 32. External microcode can be obtained from an XMC unit 13 by the use of suitable time-multiplexing׳techniques, the external vertical microcode comprising 16<sup>,</sup>’bits supplied in time-multiplexec 8-bit microcode bus 16.
The sequence of microinstructions required to be decoded by horizontal decode logic unit 35 is begun by a suitable decoding of a macroinstruction from instruction register 19 by a decode control programmed logic array (PLA) unit 40.
i Decoding of such macroinstruction by the decode control PLA unit 40 provides an initial vertical microinstruction on internal bus 39, as well as supplying on internal bus 41 the address of the next microinstruction which is to be fetched from the vertical control ROM 31. The sequencing of vertical control ROM 31 is appropriately controlled by the 9-bit sequence control signal supplied froni vertical sequencer logic 33 via internal bus 43, Once thectecode control PLA unit 40 supplies the initial microinstruction and the address for the next microinstruction from vertical control ROM 31, the sequencing of subsequent vertical microinstructions from ROM 31 is determined by the sequencing bits supplied to vertical sequencer unit 33 at Internal 4-bit bus 44, If the microinstruction from vertical control ROM 31 requires a branch, or jump, to another vertical microinstruction rather than the selection of a horizontal microinstruction, the modifier bits are .used to specify the branching operation and the G-bits normally used to select a horizontal microinstruction comprise a no-operation (NOOP) code which inhibits the micromodification unit 34 from using the B-bit modifier fields for r modification of a horizontal microinstruction, t
Thus, in the micro-modification process, two 4-bit fields, for example, of the vertical microinstruction can be substituted for two or more 4-bit fields of the selected horizontal microinstruction. The technique of substituting vertical modifier fields into selected horizontal fields effectively multiplies the power of each horizontal microinstruction so that the overall orthogonal, two-level microcontrol store approach described provides a general, yet bit-efficient, set of basic horizontal microinstruction operations, sometimes referred to as control primitives having powerful capabilities for expanding the number of microinstructions in the microinstruction set of the overall system.
It is helpful in understanding the micro-modification process to consider a complete horizontal microinstruction set stored in horizontal control ROM 32 as set forth in Appendix A.
In a particular embodiment, for example, the horizontal microinstructions each include the following nine fields as shown below:
<td> 4</td><td> 4</td><td> 4</td><td> 4</td><td> 4</td><td> 3</td><td> 2</td><td> 4</td><td> 4</td>
<td> A-BUS</td><td> B-BUS</td><td> ALU</td><td> SHF</td><td> DEBT</td><td> ADR</td><td> MEM</td><td> TEST</td><td> RAND</td>
12 ״
The A-BUS field defines the source of the data for the A-input of ALU/shifter 22 on A-bus 24 while the B-BUS field defines the source of data for the B-input of the ALU/shifter 22 on B-BUS 25. The ALU field defines the operational function to be performed by the ALU while the, Sill.’ field defines the shifter function, The DEST field defines the destination for the data which is placed on C-BUS 23 from the ALU/shifter 21. The ADR field defines the source of the memory address while the MEM field provides control for the interconnection between the system bus 11 and the C-BUS 23. The TEST field is used to identify various system conditions to be tested, while the RAND (random) field provides for other special control functions. Appendix A sets forth in more detail the meanings of each of the above fields.
The vertical microcontrol ROM 31 is a ROM configuration which in a particular embodiment, for example, includes 288 microinstruction words, each Ifi bits wide, one horizontal microinstruction being executed for each vertical microinstruction that is executed. Sequences of vertical microinstructions interpret macro-instructions (i.e, machine instructions as decoded by decode control ELA unit 40).
The vertical microinstructions each involve the following four fields as shown below:
<td> 6</td><td> 4</td><td> __4 _ _</td><td> J <sub>״</sub></td>
<td> ADRU</td><td> VI</td><td> V2</td><td> NAM</td>
I
The 6-bit ADRH field defines the address of the horizontal microinstruction which is to bo selected in the horizontal main control store 32. The 4-bit VI field defines the first modifier (sometimes referred to as modifier 1) for the selected horizontal microinstruction while the 4-bit V2 field (modifier 2) defines the second modifier for the selected horizontal microinstruction. A 4-bit NAM field which is supplied to the vertical sequencer logic 33 identifies the next address mode for selecting the next sequential vertical microinstruction, such mode bits being used to generate a new vertical program counter 9-bit address. Appendix B sets forth in more detail the meaning of each of the above fields.
As can be seen in Appendix A, in many of the horizontal microinstructions certain fields are specified as requiring one of the vertical microinstruction modifier fields, identified as either the VI vertical modifier field or the V2 vertical modifier field. The remaining fields of each of the horizontal microinstructions are fixedly specified as shown. In a particular horizontal microinstruction, for example, identified as a write memory (WMEM) microinstruction, all fields thereof are specified except the ABUS field, which requires the use of the VI vertical modifier field, and the ADR field,which requires the use of the V2 vertical modifier field, the VI and V2 modifier fields being capable of identifying one of a plurality of sources of the data to be written (Vl) and one or more addresses at which said sourced data is to be written (V2). Thus the basic and general write memory (WM) microinstruction can, ,with modification by the modifier fields, be used to
<img file="IL73852A_D0002.tif" />
generate a large number of specific write microinstructions with regard to a large combination of data sources and address destinations. In the particular embodiment discussed the use of two modifier fields permits a large number of microinstructions to be generated from, only 64 basic horizontal microinstructions.
The decode control PLA unit 40 has a configuration which contains microinstructions each having 24 bits. Such unit is addressed with a 16-bit address from the instruction register 19 and provides the initial vortical microinstruction decoded from the macro-instruction and a 9-bit pointer to the next vertical microinstruction in the vertical control ROM 31 when a sequence of more than one microinstruction is required, as well as a flag which may invoke a subsequent macro-instruction for decoding where only a single microinstruction is required, as discussed below. There are as many entries in the decode control PLA unit 40 as there are macro-instructions implemented by the system of the invention.
The five fields of a starting microinstruction of decode control PLA unit 40 are shown below:
<sup>6</sup> 4 4 9 1
ADRH VI V2 ADRV D
The 6-bit AORII field is the same as that described above with reference to the vertical microcontrol ROM 31, the .;-bit VI field and the 4-bit V2 field also being the same as those.
ו
I described above with reference to the vertical microcontrol ROM.
In addition, the decode control PLA unit supplies a nine-bit ADRV field which is the address in the vertical control ROM 31
I j of the second microinstruction of the microinstruction sequence
I required for the decoded macro-insvtruction. A single bit (the .
D field) indicates that the single microinstruction provided by the decode control PLA suffices to interpret the macro-instruction. In this case the ADRV field is ignored. A more detailed summary of the five fields of a starting microinstruction io set forth in Appendix C.
The vertical and horizontal control ROMs and the decode control PLA unit are conventional logic units well known to the art and need not be shown in greater detail. Logic for the vertical sequencer unit 33 and micromodification unit 34 are shown in FIGS. 3 and 4 , respectively.
As can be seen in FIG. 3 , for example, the vertical ! sequencer in a particular embodiment can comprise a vertical program counter unit 100 and a multiplexer unit 101 which selects any one of five input signals to provide (1) for the decoding of the 9-bit output from decode control PLA unit 40, (2) for a jump (branch) or a call operation, identified by the zero-bit (VPC0) of the program counter and the vertical modifier fields.VI and V2, (3) for a SKIP operation, i.e., a skip of the next program counter (PC+1) output to the next subsequent program counter output (PC+2), (4) the next program counter (PC+1) output, or a RETURN operation wherein the next program counter output (PC+1) is saved (as when an interrupt operation occurs) j I and then, following the interrupt routine, the vertical sequencer returns to the(PC+1)output,
The multiplexer operation is controlled by switching control ; logic 102 which provides for the Qext. address mode of operation (wherein one of the above five operations is selected) when the test conditions required arc present.
FIG. 4 shows the micromodification unit 34 which [
I comprises a plurality of 21013 ־, in;>ut multiplexers 105 each of I | which includes cither a 4-bit horizontal, input (for horizontal j fields ABU, EBUS, AU), SHF, DEST, TEST and RAND), a 3-bit <sup>1</sup>i . i ן horizontal input (for horizontal ADR field) or a 2-bit horizontal : input (for horizontal MEM field) and cither a VI input (horizontal!
! fields ABUS, ALU, RAND), a V2 input (horizontal fields BBUS, SHF, I I ADR, MEM and TEST) or both VI and V2 fields (horizontal DEST field), as shown in Appendix A. The 4-bit horizontal inputs I { (liROM inputs) control the selection of the multiplexer input as ) either from the I1ROM bits or the Vi or V2 bits for supply to the !! horizontal decode logic 35.
i ;; The above discussed embodiment utilizes the particular <sup>!</sup> fields specified for the horizontal microinstructions and set !1 !| forth in Appendix D. In most cases, as can be seen, the j! horizontal fields which use the vertical modifier fields are I!
: those which specify source and destination locations. For example, for an INCH (increment) microinstruction, the A-BUS
I I field i:; modified by tl:u. VI vertical modifier field, the data I i i at the location specified by VI Lu be incremented being placed on . the.A-liUS, and the DEST field is modified by the V2 vertical modifier field, the Incremented data then being placed in the location specified by V2.
The memory field (MEM) in the particular embodiment described bears special scrutiny. Up to 1G<sup>׳</sup>memory operations can be defined by using a 4-bit MEM field. However, as is noted in Appendix D i only four operations are specified, io,, NOOP (no operation), RM (read memory), WM (write memory), and a V2 field. In this I case the V2 field must be used to specify memory operations other [ than RM and WM. Thus, as can be seen in specific horizontal microinstruction micro-order encodings of Appendix E, the V2 modifier can specify the other memory operations (i.e., WHM, RMOD, WLM, RHYP, etc.). Thus, the MEM field need only use 2 bits (rather than 4 bits) with a vertical modifier used to specify all operations other than an RM and a WM. Thus, the horizontal control ROM 32 needs to provide only 33 bits, as shown in FIG. 2.
However, as seen in Appendix E, and as shown in FIG. 4, 35 bits j I can be supplied to the micro-modification unit 34, two of the MEM bits 23-26 having no operating significance.
In each case where the memory operation is defiend by the V2 modifier, the V2 modifier cannot be used tc; specify any other field and only the VI modifier is free to modify one or more other fields, as appropriate. However, for both RM and WM operations both VI and V2 modifiers arc! so available. Since most memory operations are RM or WM opera Lions (where both VI and V2 modifications are available) , the modifier limitation placed on the other (not RM or WM) memory operation:, is not severe inasmuch as siich latter operations arc; not often used. However, the overall flexibility of the MEM field operations is considerably increasedi since only four microinstruction!.; are needed to specify memory j operation horizontals. The use of the V2 modifier field increases the range of micro-order (control stiites) for memory operations to 15 additional micro-orders, as shown in Appendix E.
A similar arrangement may be used for other horizontal microinstruction fields, if desired, and the overall horizontal control ROM can be used to specify relatively few microinstructions, the range of microvbrders thereof being considerably increased by defining additional control states by using a vertical modifier field. While the use of one of the two vertical modifiers for such purpose limits the ability to modify more than one other field, in many instances the need to modify more than one other field may not be critical. Obviously, if one increases the number of vertical modifier fields, flexibility increases in this regard at the cost of a larger vertical microinstruction word.
In the limit, it may be possible to use a single horizontal microinstruction with a single bit for each field thereof which bit in each case specifies whether a modifier is to be used for such field or whether a default operation is to occur. In such a system, the number of available vertical modifiers should be sufficient to permit modification of all fields which require it for each definable micro-order. The range of horizontal microinstruction micro-orders can thereby be considerably Increased at the expense of the׳ requirement for relatively large vertical microinstruction words having the desired number of modifier fields.
System Bus Protocol
Information transfer (i.e., addresses, data, instructions, etc.) to and from the CPU from system components other than the CPU, such as one or more memory units and one or more input/output (1/0) devices, takes place on the 16-bit system bus 11 either directly or via interface units 14 and 17. An effective system bus protocol must be utilized in order to provide for the correct transfer of such information, in this connection, each bus transaction comprises two segments, one of which can be identified as a specifier״segment and the other of which can be identified as a data segment.
The timing of the system operation is synchronized by two externally generated clocks, identifiable as phase-1 (¢-1) and phase-2 (¢-2) clocks. The clocks divide a microcycle time period (sometimes referred to as a T-period) into a ¢-1 portion and ¢-2 portion.
During the specifier segment the )jus is used to describe the type of bus cycle operation which is occurring (e.g., a memory reference operation or an 1/0 operation) and information describing the target of the transaction (e.g., an address for a memory reference operation). The specifier segment always occurs during the first ¢-1 portion of a bus transaction and cannot be extended. During the data segment the bus is used to transfer data as, for example, to or from the addresses or 1/0 devices specified in the specifier segment. The data segment begins in the first ¢-2 portion of a bus transaction and may be extended by an integral number of additional microcyclos (each having ¢-1 and ¢-2 portions). The ¢-1 and ¢-:2 portions of the T-oeriod may generally be separated by an essentially fixed time <sub>oat</sub>> <sub>15 ηβΒη״οοοη4β</sub>, <sub>nnd׳ nfc flny</sub> so as to provid <sup>0</sup> no overlapping of 1:))0 phases.
In operation, a particular system component may be transferring data on the system bus during the data segment of its bus transaction while another comoonent waits to transfer an address during the φ-l portion of the specifier segment of the next bus transaction, In time-multiplexed systems of the type described here, frequent bus turn-around operations of this nature give rise to problems. Because of delays in various logic components used in the operation of the system, the transfer of data during the data segment of one bus transaction may not be fully completed by the start of the ψ-l portion of the specifier segment of the next bus transaction. Accordingly, the second component may attempt to place its address on the system bus before the data transfer for the previous component has been completed.
Such a condition will produce a relatively high instantaneous surge of current which will tend to have an adverse effect on the system. For example, if system components are formed as TTL circuitry, the current surge will tend to cause undesirable noise effects, i.e., electromagnetic interference, to occur throughout the system as well as tending to provide a long-term adverse impact on the TTL components themselves. Further, if the CPU is formed as an integrated circuit chip, for example, by MOS techniques, such a current surge will also adversely impact upon at least the long term, and possibly the short .term, reliability of the MOS chip. Therefore, it is necessary to devise an appropriate technique for avoiding any overlapping of the system component bus driver operations which may result from the action of two different components at a bus turnaround operation in attempting to access the bus Eimultaneoualy (n bun fighting” condition).
i
One previous solution to such problem has been to utilize a dead cycle (i.e., a non-operating cycle)at a bus turnaround operation, e.g., between the completion of each data transfer operation and the start of the next operating cycle, such as an address transfer operation, or vice-versa. During such dead cycle no information caii be driven on to the bus and the bus in effect is idle. However, the presence of an extra dead cycle under such conditions either will require a basic microcycle clock of much higher resolution or will cause the operation of the overall system to be slower than desired. Accordingly, the use of a dead cycle is generally an undesirable approach to the problem.
Another proposed solution to the problem is to widen the separation between the two time phases, ¢-1 and ¢-2, of he T-period. However, the use of a wider gap lengthens the overall T-period and, accordingly, slows the system down to an even greater extent.
In accordance with the system discussed here the bus access overlap problem is avoided by the suitable generation of an address enable signal (ADRKN) and a data enable signal (DATEN). The assertion of an ADREN signal indicates that a valid address is present on the system bus, while the assertion of a DATEN signal indicates that data is present on the system bus. If a DATEN signal is asserted, the address drivers of all other units which are capable of nlacing an address on the system bus are inhibited froM operation. In a similar manner all data drivers are inhibited so long as an ADREN signal is asserted.
The ADREN signal is generated by the system component which has requested the current bus cyclo to be started and indicates that information describing the type of bus cycle operation which is occurring has been placed on the bus. The particular system as described herein, for example, can initiate one of four different types of bus cycle operations, namely, a program memory reference, a con’sole memory reference, an I/O operation, or a local memory reference operation. When the ADREN signal is asserted the system identifies which of the above four operations is to occur by placing an appropriate 16-bit word on the bus together with an additional bit as described belnw.
Thus, for a program memory reference the 16-bit word comprises a 15-bit address in bit nositions 1-15, while bit 0 of the word is used in conjunction with an additional bit supplied at an additional pin, designated as the memory cycle (MEMCYC) pin, as follows:
MEM
CYC ___0 1_________________________________<sub>15</sub>
ADDRESS
OPERATION the .,ystcm deacxibcd, for example, the memory references may be to a standard NOVA/Eclip<sub>Se</sub> logical address space to be used for program execution in NOVA and Eclipse computers made by Data General Corporation, Westboro, Massachusetts, the operation of which is well known to the art. For such program memory reference, the states of the MEMCYC and bit 0 pins identify the program memory reference operation, while the remaining 15 bits comprise the logical address for the memory reference. The combination of the MEMCYC and bit 0 states are used to define each of the four system operations involved, as follows:
-<sup>L7</sup>1<sup>CYC</sup> BIT 0 OPERATION θ θ I/O Operation θ 1 Local Memory Reference <sup>1 0</sup> Program Memory Reference
Console Memory Reference
In the case of console memory operation which relates to addre^. space used to store software for console operations, for example, the MEMCYC and bit U pins define the console memory reference operation while again the remaining 15 bits define a console address. The local memory reference relates to address space which contains instructions for implementing inter-system communications (e.g., communications between the system CPU and other processors, etc.) end accordingly the system operation ״ord includes a 15 bit local memory address. The !/0 operation format which is placed on the system bus is discussed in more detail later.
5נ
When the bus type operation descriptor (i.e., the appropriate address or I/O function definition) is placed on the bus <sup>,</sup>the ADREN signal is asserted. When whatever data involved is to be transferred on the bus, for example, during ¢-2 of the bus cycle, the ADREN signal is no longer asserted. The DATEN signal is asserted to indicate that a data transfer is taking t place on the system bus so that all address drivers on the system are inhibited from operation, as mentioned above. The DATEN signal is supplied by the particular system component which is supplying the data which is being placed on the system bus.
The use of ADREN and DATEN signals for such control protects against the bus fighting condition which occurs during bus turnaround operations because of time delays in the system logic and, accordingly, improves the reliability of the system whether used with TTL logic or MOS chips.
The system can be utilized with memories having different operating time cycles. If data at the address signified in ¢-1 is to be transferred between the CPU and a memory unit external to the CPU, for example, the data must be available for driving on to the bus during the subsequent ¢-2 so that the transfer can be completed therein. If the data is ready, the memory unit asserts a READY signal at the end of the ¢-2 portion of the current cycle during which the data has been driven on to the bus and the data transfer has been completed. If the data is not available and has not been driven on to the bus for tiansfer by the orid of the ¢-2 portion of the current T-period, the READY signal is not assorted and the bus cycle operation is extended causing the DATEN signal to remain asserted for one, or more, T-periods, as necessary, until the data is available and ready for transfer. Logic for generating the READY SIGNAL, the ADREN signal and the DATEN signal is shown in FIGS. 5 , and 6 . r
Further, if the system component which has control of the system bus for a data transfer operation does not intend to relinquish such control, such component must assert a bus locking signal (B/LOCK) in order to maintain control of the bus until the operation it is performing has been completed. For example, a system component may wish to read data, modify the data in some way, and return the modified data to the component for use or for storage, an operation sometimes referred to as a read-modify-writc (RMW) operation.
Accordingly, such component can not give up control of the bus until the data has been modified and returned to the component, an operation which may require one, or more, T-period cycles. In such situation the system component which is performing the RMW operation asserts a B/LOCK signal until the overall RMW operation has been completed. Such assertion prevents any other unit from obtaining control of the bus. An exemplary logic circuit for generating the B/LOCK signal is depicted in FIG. 7 .
Any unit which is in communication with the system bus can be made master of the bus whenever a current bus cycle operation, if any, terminates, control of the bus being relinquished at the beginning of the next T-period, (i.e., so long as a READY signal has been asserted by any unit utilizing the current bus cycle and so long as no B/LOCK signal has been asserted by another unit). Thus, a unit which desires master bus control monitors the READY signal and the B/LOCK signal, requests control of the bus by asserting a bus request (BREQ) signal and is permitted to gain control of the bus under the above described conditions of the READY and B/LOCK signals. Such unit maintains control until it no longer asserts the BREQ signal, so long as ה device having a higher bus priority does not also request control of the bus at the end of any bus cycle.
In this way bus control is handled by the unit which desires the control rather than by the CPU. In previous systems bus control is normally handled by the CPU which must entertain a bus request from an external unit and subsequently decide whether or not to provide a bus grant signal, or its equivalent. Such .a decision-making process by the CPU requires a relatively long time due to the propagation delays of the signals required between the CPU and the various system components with which the CPU must communicate in order to make its decision. In accordance with the procedure used in the system of the invention, i.e., where the unit itself generates a BREQ signal and under the proper conditions thereupon receives control of the bus, bus control requests are handled in a much faster manner and bus control can be handed over to the requesting unit much sooner.
As mentioned above, each of the different types of bus operation require the utilization of the MEMCYC pin which, together with bit 0 of the bus cyclo description word (i.e., an address or I/O operation word), defines the type of operation which is to be performed. In accordance with the operation chart set forth above, I/O operations are defined when the MEMCYC and bit 0 of the address word are both zero. For such operating condition the following word format for I/O operations is placed on the system bus:
MEM
CYC
<td> 0</td><td> 1</td><td> 2</td><td> 4</td><td> 5 6</td><td> 7 8</td><td> 9</td><td> 10</td><td> 15</td>
<td> 0</td><td> 0</td><td> SYS. Dcir</td><td> I/O AND FUNCTIONS</td><td> I/O PORT</td><td> DIR</td><td> S/C/P</td><td> DEVICE</td><td> CODE</td>
The above I/O instruction effectively represents a re-encoded version of the standard NOVA/Eclipse I/O instruction format received at the CPU, the re-encoded instruction being placed on the bus during the cycle description portion of the current bus cycle. The original microNOVA®/ECLIPSE® I/O instructions are re-encoded as above in order to facilitate the design of the interface logic between the CPU and the I/O devices.
As can be seen therein, bit 0 is utilized in conjunction with the MEMCYC pin to define the I/O operation, nit 1 is a non-used bit which has been reserved for possible future use.
...”W
<td rowspan="2"> •</td><td colspan="4"> Bits 2-4 are utilized to define the system, I/O and data channel • (DCH) functions as follows:</td>
<td> BIT 2</td><td> BIT 3</td><td> BIT 4</td><td> FUNCTION</td>
<td></td><td> 0</td><td> 0</td><td> 0</td><td> NOP</td>
<td> 5</td><td> 0</td><td> 0</td><td> ׳1</td><td> INTA</td>
<td></td><td> 0</td><td> 1</td><td> ’0</td><td> MASKO</td>
<td></td><td> 0</td><td> 1</td><td> 1</td><td> IORST</td>
<td></td><td> 1</td><td> 0</td><td> 0</td><td> DCHA</td>
<td></td><td> 1</td><td> 0</td><td> 1</td><td> DCHI</td>
<td> 10</td><td> 1</td><td> 1</td><td> 0</td><td> DCHO</td>
<td></td><td> 1</td><td> 1</td><td> 1</td><td> Reserved</td>
<td></td><td> Bits 5 and 6</td><td> define the I/O</td><td> port which</td><td> is utilized as follows:</td>
<td></td><td></td><td> BIT 5</td><td> BIT 6</td><td> PORT</td>
<td></td><td></td><td> 0</td><td> 0</td><td> Status</td>
<td> 15</td><td></td><td> 0</td><td> 1</td><td> A</td>
<td></td><td></td><td> 1</td><td> 0</td><td> B</td>
<td></td><td></td><td> 1</td><td> 1</td><td> C</td>
<td></td><td> Bit 7 defines</td><td> the direction</td><td colspan="2"> of the transfer as follows:</td>
<td></td><td></td><td></td><td> BIT 7</td><td> DIRECTION</td>
<td> 20</td><td></td><td> ,</td><td> 0</td><td> OUT</td>
<td></td><td></td><td></td><td> 1</td><td> IN</td>
<td></td><td> Bits 8 and 9</td><td colspan="2"> define the control option</td><td> which is being</td>
<td> 1</td><td> utilized, i.e</td><td colspan="2"> ., either a start, a clear</td><td> , or a pulse operation</td>
ן
I ן
- J
I in accordance with normal ECLIPSE® operations as follows:
<td> •</td><td> BIT 8</td><td> BIT 9</td><td> FUNCTION</td>
<td></td><td> 0</td><td> 0</td><td> NONE</td>
<td></td><td> 0</td><td> 1</td><td> START</td>
<td></td><td> 1</td><td> 0</td><td> CLEAR</td>
<td></td><td> 1</td><td> 1 1</td><td> PULSE</td>
Bits 10-15 define the 6-bit device code which identifies a particular I/O device which is to be utilized during.the I/O operation. The above operations arc as defined, for example, with previously known ECLIPSE® computers and, being known to those in the art, need not be defined in further detail.
The use of the above I/O instruction format requires less external logic for handling I/O instructions than was normally required for the handling of I/O instructions using the known previous ECLIPSE® instruction format. The type- of operation, i.e., a memory reference or a I/O operation, is appropriately flagged (by the MEMCYC and bit 0 states) and, if it is an I/O operation, the I/O instruction is sent in accordance with the above format in order to ease the interface operation.
In this connection one particular combination of bits in an I/O instruction is of some significance since it extends the capability of the I/O operation over that previously available to ECLIPSE® systems. Thus, as can be seen, the I/O ports include not only the normal A, B and C ports utilized in ECLIPSE® systems but also identifies an additional port capability defined as the Status port, the use of which is described below.
Thus, if the I/O instruction identifies a STATUS port in the port field (bits 5,G are 0,0) and an IN direction in the direction field (bit 7 is 1), such instruction operates as a request to the identified device (identified by device code bits 10-15) to provide information as to its status. The device I then returns data in the following format:
1 2 3__15 | BUSY !־DONE | POLL ( RESERVED
The device indicates its presence on the system bus by the state of the poll bit 2, and further indicates its busy or done state by bits 0 and 1, respectively. In addition the device has 13 reserved bits for use in providing further information.
Such format contrasts with the previous ECLIPSE® instruction format which did not permit the inclusion of such status information (thereby requiring two extra wires for separately generated busy and done flags) and which was not adaptable for polling (i.e., obtaining an indication of the presence of a device on the system bus) as is helpful in the present system described herein.
Accordingly, the revised I/O instruction format, which is supplied to the system bus and which does not require the inclusion of accumulator bits (which are already identified for the' CPU by the standard I/O instruction received thereat) provides for the further ability to transfer data not provided for by the standard microNOVA® /ECLIPSE® I/O instruction format.
System .I/O J וו ter f ace Unit
As can be seen in FIG. 1, the system CPU is arranged to be capable of communicating with I/O dcvicr:!״, on a plurality of different buses, For example, the CPU may communicate with I/O devices directly on the system bus 11, with I/O devices on j! bus 157! designated in a particular« embodiment, for example, as the;
Ij ECLIPSE^I/O bus for ECl/lPiP^!/() devices, or on bus 1513 designated I in a particular embodiment, for example, as the MicroNOVA®bus for
10.
; microNOVA®devices. In accordance with the system described herein, data can be transferred directly to and from the system ! I .
|1 I/O devices via the system bus 11, as described in more detail
|. below, while data for ECLIPSE<sup>8</sup>’I/O devices are transferred to and from such devices via ECLIPSE<sup>11</sup> bus 15Λ through a separate
I ECLIPSE®I/O interface unit 45, the transfer thereof being | controlled by control signals from the system I/O interface unit 114. Further, data for the microNOVA® I/O devices are transferred | to and from such devices on the microNOV/(>bus 15B through the j; system I/O interface ״nit, j! A more detailed block diagram of the system I/O interface
ן. unit 14 is shown in I׳ICS. 8 and 8Λ. Λ further, even more i detailed, block diagram of the m i cro’IOVA<sup>1</sup>׳’ I !us control logic for ו ו address/data transfers and Cor nii1.׳roNOV/\'׳ pel ling operation (as jdiscussed in more detail below) is shown in FIG. 8B.
;As can be seen therein, the system I/O interface unit comprises ו a plurality of local, or internal, devices and various control h logic circuits, shown as block 50, the devices being of the type ;! which arc already known and used with respect to previously | available systems, For example, the internal devices of the system I/O interface unit 14 may include devices of the type utilized in the Data General Corporation ECLIPSE^computer systems as shown and discussed with reference to the following publications:
ECLIPSE® M/600 Principles of Operation No. 014-000092 ׳
K <sup>r</sup> ECLIPSE® S/250 Programmer’s Reference Manual
No. 014-000611
Interface Designer's Reference NOVA® and ECLIPSE® Line Computers | No. 015-000031 microNOVA® Integrated Circuits Data Manual No. 014-000074 ; The above publication?; arc representative of publications available from Data General Corporation, Westboro, Massachusetts concerning NOVA®, ECLIPSE©, and microNOVA© systems made and sold jby Data General Corporation. Such publications contain !information useful as background information in understanding not j! only the aforementioned internal devices but also various other inspects of the system being described herein.
! i !
I !i <sub>al״tcr״rnran</sub>,,<sub>blc i</sub>,,״,!״ <sub>|; y</sub>,״,, Thus, such devices <sub>9״i<״ pr0lJri</sub>,<sub>mMbIe ־ ־״1)</sub>timer (pit) unit which <sub>provi </sub>clock rate at one of particular ה Tn interval timer can be which produces clock signals four selectable frequencies, embodiment, for example, the arranged to produce --------I ....־״'י.:. ^rcrvais at 1 MHz, 100 KHz,
KHz or 1 KHz f<sub>rorn a</sub> const,mf '<sub>input 10־ck </sub>through well-known frequency divider <sub>j״</sub> such timer responds to a pseudo-constant 1 MHz signal which is derived from a frequoncy synthesizer unit 51, as discussed in more detail below.
I . The local devices may also l<sub>nclud0</sub>, <sub>for ex־mple1 ־ </sub>al time clock (RTC) unit which generates timing pulses that independent of the system clock rate. The real time clock Interrupt at any one of four selectable frequencie־־, example, at the ״c line frequency, <sub>־״ ״</sub> ״ ״<sub></sub>ooo Hz the latter three clocks all derived from the pseudoconstant ! MHz signal ״,rough woll-k״ow״ frequency divider techniques .
at a counter for example.
programmable <sup>e</sup> counter clod' intervals at 1 MHz, are can for
Tho <sub>dovloo</sub>, <sub>a]s0</sub> .<sub>nclud־ a p0Mr</sub><sup>1</sup> any transition of a power monitor pulao which power has failed <sub>or that ״c p0</sub>״<sub>pt ha־ </sub>power failure, ״ that a ־tart up <sub>ρ0</sub>״<sub>״</sub> | Unit Which detects indicates that AC ®^ber a momentary condition exists.
The system , . . <sup>1/0 int־:rfi,C0</sup> “I‘ a!־° includes appropriate j Pa ״id output interface logic via which serial data can b־ jaa^nchrohously supplied (as from a teletype unit, f<sub>9</sub>r-־<sub>xa</sub>״<sub>ple)</sub>,
I - 34 I i
*/ί /-,.-- ׳
־.׳>׳ ״יייי ,., W. .ז!.- . J.
such inputs and outputs being supplied via TTI pin 55 and TTO pin 56, respectively, and from input and otuput registers 57 and 58, respectively, in a controlled manner in accordance with standard practice utilizing suitable finite state machine (FSM) and control logic 59 and 60. As ih prior art devices utilizing asynchronous, serial data terminal inputs and outputs, the terminal unit may operate at selectable baud rates, the available baud rates being selected from a large number of such rates ranging in a particular case from 50 baud to 38400 baud, for example. For such purpose in this system the baud rate signals are derived from a pseudo-constant 614,400 Hz master baud rate signal, also obtained from the frequency synthesizer unit 51. The selected baud rates can be obtained therefrom through suitable baud rate selection logic in accordance with well-known techniques of prior art systems which utilize such asynchronous, serial data input and output operation.
The internal units and the terminal logic discussed above do not form a part of the inventive aspects of the system I/O interface unit .14 and need not be described in further detail.
For convenience, an appropriate random access memory (RAM) storage unit 61 may also be present on the system I/O interface unit for providing temporary storage space which may be used, for example, when performing console operations. Such storage unit is of a well-known RAM type which can be formed to provide storage space of an appropriate size for the desired console use. For example, a particular embodiment may be capable of storing a selected number of 16-bit words for such purpose. As such, the
RAM unit 61 docs not form a part of the inventive aspects of the system I/O interface unit 14 and need not be discussed in more detail. Further a non-maskable interrupt (NMI) register 62 for use as described in the aforesaid ECLIPSE® and microNOVA® documents may also be part of the system I/O interface unit 14 but does not form a part of the inventive aspects thereof and need not be described in further detail.
Addresses and data are supplied to and from the system bus 11 at the system I/O interface unit 14 in the form of 16־bit words (MB 0-15) supplied at the physical address/data (PADS) pins 63. Suitable driver and multiplexer circuits 64 are j utilized for such purpose, the address and data words which are being transferred to or from the system bus being supplied to internal ϋ bus 65 for use in the system I/O interface unit 14 either directly via an internal bus 66 or indirectly via temporary address/data register 67 which may be used for temporary storage thereof before such addresses and data are supplied to the system I/O interface unit or to the system bus depending on the direction of transfer thereof.
TL I/O buses which must be used to transfer addresses I and data between the CPU and the I/O devices with which the CPU I may desire communication differ depending on which type of I/O devices are involved (e.g., ECLIPSE^devices which communicate via ן ECLIPSE^bus 15A, microNOVA®deviccs which communicate via microNOVA bus 15B and all other devices which communicate via system bus 11). The system I/O interface unit 14 must decide which I/O device is involved and, hence, which I/O bus is to be
W-M’Tv . ׳ >.. ; . י . , ., used for the transfer of such data so that the interface unit control can control such transfer to and from the CPU. In accordance with the system of the invention disclosed in FIGS. 8 and 8A, and the more detailed block diagram of FIG. 8B, the system I/O interface unit 14 contrins logic circuitry for identifying all of the devices which are on a selected one of the two buses which it controls, namely, buses 15Λ or 15B. Such identification can be achieved by appropriately polling the selected one of such buses and storing suitable information as to which devices are on the selected bus.
In accordance with a specific embodiment of the invention which utilizes either a microNOVA® I/O bus 15B or an ECLIPSE® I/O bus 15Λ, the system I/O interface unit is arranged to poll the microNOVA® I/O bus 15B to determine which devices are on such bus. A suitable microNOVA»)poll counter 62 supplies each of the expected device code words which identify the various‘ devices which are likely to be used with the system, which device code words, for example, are 6-bit device codes supplied to the microNOVA® I/O bus 15B via low-byte (a byte is 8 bits) shift register 69 from poll counter 68 to the output microNOVA® bus pin 70 identified as IOD2 in FIG. 8Ά. The 6-bit device codes are supplied in parallel to shift register (S/R) 69 during the polling process and are in turn supplied serially to the microNOVA® bus from shift register 69.
When microNOVA® I/O devices, which communicate with the CPU on tho microNOVA® bus 15B, are interrogated with a device code signal for identification thereof, such devices supply a return identifiable I/O clock (IOCLK) signal at oiq 71 to microNOVA® finite state machine and control logic 72 if a device matching a particular device code is present on the microNOVA®bus.
Such operation is in contract with devices on the ECLIPSE« bus
ISA for which no such identifiable I/O clock signal would be present if such devices were interrogated with the device codes. Because of such contrasting operations microNOVA® devices can be polled to determine their presence on microNOVA® bus 15B and a record of their presence kept in the system I/O interface unit 14.
Thus, receipt of an IOCLK signal at pin 71 from a particular I/O device on the microNOVA® bus is supplied to control logic in the microNOVA® finite state machine and control logic unit 72. Such logic generates a microNOVA® exist signal (sometimes referred to as pNEXST) for supply to a microNOVA® poll register 73 to indicate that an I/O device having such device code is present on the microNOVA® bus.
The microNOVA® poll store register 73, for example, is a 64-bit register, each bit corresponding to a particular device code (in a particular embodiment there being up to possible microNOVA® devices which can be present on the microNOVA® bus), If a 6-bit device code representing a specified device which has been interrogated is provided at the input thereto from microNOVA® poll counter 68, the particular bit associated therewith will be placed in a state which indicates the presence or absence of such device on the microNOVA®bus, depending on whether a pNEXST signal is so generated. Accordingly, when all of the device codes have been polled, the microNOVA® poll register 73 contains information as to the presence of all devices which are on the microNOVA® I/O bus 15B.
Polling of the microNOVA® bus is first performed at start-up, the complete set of 64 possible device^ in a particular embodiment, for example, being polled during one overall polling time.interval before the overall system is put into operation.
If, for example, the polling of each device takes 10 microseconds, or less, the complete poll can be accomplished in 600-700 microseconds. Once the system is in operation, updating of the I poll store can be accomplished as devices previously indicated as not being present are turned on and devices previously indicated as present are turned off. Such updated polling can be accomplished at a 100 Hz rate, a single device being polled each .01 seconds (a completed update polling of all devices occurs every 0.6-0.7 seconds, for example).
In some cases a device will be turned on and could, therefore, be present on the microNOVA®bus but the poll store may not indicate its presence (the updating for such device may not yet have occurred since the device camo on li!5e after the last update poll. If, under such condition, the device requests an interrupt operation, the interrupt request itself indicates the presence of the device and the microNOVA®poll register is automatically updated by appropriate gating in the microNOVA®finite state machine logic which provides a pNEXST signal to the poll register.
All devices which are not identified as being on the microNOVA®I/O bus, but which are in communication with the system, will by the process of elimination be either on the ECLIPSE®I/O bus 15Λ or on the system bus 11. As will be noted, a jumper register 74 is arranged so that an ECLIPSEftENABLE and/or a microNOVA״ENABLE is provided. The presence or absence thereof is controlled by the presence or absence, of a suitable jumper connection being reflected by the state of the jumper register 72. The following chart summarizes the conditions for identifying the devices involved:
MicroNOVA® ECLIPSE®
<td> ENABLE</td><td> ENABLE</td><td colspan="2"> System ECLIPSE®</td><td> MicroNOVA®</td>
<td> 0</td><td> 0</td><td> t Yes</td><td> No</td><td> No</td>
<td> 0</td><td> 1</td><td> E</td><td> E</td><td> No</td>
<td> 1</td><td> 0</td><td> Yes</td><td> No</td><td> Yes</td>
<td> 1</td><td> 1</td><td> E</td><td> E</td><td> Yes</td>
<td> In the first</td><td> condition</td><td> where neither</td><td> jumper</td><td> connection</td>
is enabled the only devices identifiable are system devices. Where the ECLIPSE®jumper is enabled but the microNOVA®jumper is not, the system generates the ECLIPSE^ timing signals (signified as E) but the interface unit 14 does not determine whether the devices are ECLIPSE®or system devices. Where the microNOVA® jumper is enabled but the ECLIPSI/<sup>1</sup> jumper is not, both microNOVA® and system devices are identifiable. Where both jumpers are enabled, microNOVA®doviccs can be identified but the system interface unit does not determine whether the devices are ECLIPSE®or system devices (the ECLIPSE®timing signals are generated). Accordingly, the polling technique permits the system I/O interface unit 14 to determine whether a particular I/O device must be communicated with either on the microNOVA 1/0 bus or on one of the other buses, if a microNOVA®device is present on the microNOVA<sup>14</sup>bus, its presence is indicated by the microNOVA-poll store unit 73 which provides a microNOVA®sensor signal, uNSNSR, to modify the operation of a mastercontrol
1.0
!]finite state machine 75 so t.hat its next stnte of operation !provides the necessary control signals to control the operation of the microNOVA® finite state machine 73 for microNOVA® operation.
Control. signals are shown in FIG. 813 for performing the polling process. The low byte shift register 69 is loaded with the device code at the assertion of LOAD POLL COUNTER by the I microNOVA® FSM 72, the poll count beginning at. a poll count signal PLWC which increments the poll counter. The high byte shift register is loaded with a suitable instruction which can be selected to produce the least effect on the system (e.g., an IOSKP instruction in which data in all registers remain unchanged, etc.) at the assertion of a LOAD INST signal. If a return IOCLK is !received at pin 71 a pNEXST signal is asserted by the microNOVA® FSM 72 which signal, together with the device code applied to the address latch of the poll store 73, provides the indication of the presence of the particular device involved. When ’the complete
I poll count is completed for start-up, for example, a POLDNE signal ן is asserted by poll counter 61) for supply to the microNOVA®FSM 73. ii
Ii The PLWR signal is used on interrupts by a device when ,the CPU acknowledges the interrupt request, by such device by asserting an interrupt acknowledge signal. At the assertion of a I ׳suitable interrupt acknowledge, signal the device itself updates jthe poll store, via the supplying of its device code and the of the PLWR signal by the master control PSM to the poll store.
For a poll store read operation, when an ADREN signal occurs, the poll store is accessed by the device code if an I/O instruction is present. The poll store then provides a pNSNSR signal to the master control FSM if such device is present.
! A poll update request signal (!!PUR) is supplied from the <sup>1</sup>master control PSM 75 at the 100 11:< rate as determined by a I
100 Hz intJUf. counter signal.J
-:
I ...;
The required microNOVA® instruction register and decode logic 76 and the microNOVA® high byte register 77 for supplying the high byte data at microNOVA® bus pin 78 (IOD1) are also shown in FIGS. 8A and 8B, as well as D-registcr 79 for shifting data to and from the U bus 65 and the microNOVA shifters 69 and 77, in accordance with standard microNOVA® operation already well I known to the art. Specific logic'.for the microNOVA® FSM and control logic unit 72 and the master control FSM and control logic unit 75 are shown in FIGS. 9 and 10, respectively. The poll counter 68 and shift registers 69 and 77 are shown in FIG. 11, while the poll store register 73 is shown in FIG. 12.
The system I/O interface unit 14 is designed so as to be capable of operation at more than one input system clock frequency and is, therefore, adaptable for use with a system wherein the system clock is not expected to remain at a single fixed frequency for all operations. The frequency synthesizer unit 51’ is provided so as to be responsive to one of a plurality of different selected input frequencies to produce the desired internal clock frequency required for operation of the internal devices of the interface unit and the desired master baud rate signal for operation of the asynchronous terminal system. In a particular embodiment, for example, the internal clock signal must have a substantially constant frequency of 1 MHz so as to provide for correct operation of the internal, or local, devices (such as the PIT and RTC devices mentioned above) and a substantially constant selected baud rate derived from the substantially constant master baud rate signal for the asynchronous terminal input/output logic.
A unique design fur such frequency synthesis is disclosed in FIG. 13 wherein a more detailed block diagram thereof is depicted for generating the 1MIIz signal, for example. In a particular embodiment thereof, the clock rate of the selected input clock signal to the frequency synthesizer unit 51 may be one of’eight different clock signals having clock periods which vary from 300 nanoseconds (nS) to 600 nanoseconds (see chart of FIG. 14). For example, in a particular embodiment eight different signals having clock periods, T, of 300 nS, 325 nS, 350 nS, 375 nS, 400 nS, 450 nS, 500 nS and 600 nS are utilized. The input frequency is identified by a 3-bit input signal (shown as U-bus bits U 9,10,11) which is supplied to clock rate latch and decode ROM 80, which identifies which of the eight clock rates must be latched for supply to the frequency synthesizer. The selected clock rate so latched is supplied to a high-count position and parsing ROM 81, to a denominator select ROM 82, and a high-low integer select ROM 83. The functions thereof can be understood better with the help of an example explained with reference to the chart of FIG. 14.
Such chart depicts an example of the above frequency synthesizer technique for generating a pseudo-constant 1.0 MHz output clock for each of oight different input clock signals.
I.
As can be sec: therein, except for the 500 nS clock signal, the clock periods for each of the eight frequencies involved are uneven multiples of the clock period for the desired 1.0 MHz signal. For example, an input clock signal having a 350 nS clock period completes 2 6/7 periods in the total 1000 nS clock period of a 1.0 MHz signal. Thus, for every 2 6/7 clock pulses I of the 350 nS input clock signal,; one clock pulse must be produced for the 1.0 MHz output clock signal, i.e., for any 20 input clock pulses, 7 output clock pulses are produced.
The chart of FIG. 14 depicts the parsing algorithm associated with each of the input clock signals. As can be seen therein, groups of input clock pulses are produced over repeatable or recycle time intervals the number of pulses in each group being selected as one of two numbers. Thun, for an input clock signal having a 350 nS period, seven groups of input pulses are utilized having either 3 pulses (high count) or 2 pulses (low count). The position of the high count groups is depicted by the ”high-count position column in accordance with the lettered column of the algorithm. Thus, the high count (3-pulse) groups are at the A and B positions of the seven group cycle (the low count group being at position C) so that the seven groups are as follows:
3 3 2 3 3 3
It should be noted that the uneven count (i.e., 2 6/7) identifies the algorithm to be used. Thus for the 350 nS input clock, the low/high counts vary between 2 (the whole number) and 3 (the next highest integer). The numerator of the fraction identifies the number of high-count position groups (i.e., 6 high count position groups), and the denominator identifies the total number of position groups (7 position groups), some imes
.-י ׳—*✓*,«זי referred t.o as the recycle time period. As another example the 300 nS clock signal requires a count of 3 3/9 and utilizes low/high counts of 3 and 4, a recycle time period (the denominator of the fraction) of 9 (i.e., 9 groups), three of which groups (the numerator of the fraction) are high count groups. The 3 high-count groups are placed in positions B and I 4
I C. The other algorithms can be similarly described. In FIG. 13 the denominator select ROM 82 selects the appropriate denominator, or recycle time period, depending on which input clock RATE | has been latched, the selected denominator (i.e., 7 for the 350 nS input clock) being identified by a 4-bit output of ROM 82. The ROM 81 identifies which of the eight parsing !algorithms shown in the chart of FIG. ]4 is to be used, in the example being discussed the parsing algorithm A’B representing seven groups of 350 nS pulses having 3332333 pulses in each group is selected.
It should be noted that in each pursing algorithm one of two numbers of pulses is used in each group. Thus, for the 350 nS algorithm either 3 pulses (the high count) or 2 pulses (the low count) are used, in the 300 nS algorithm either 4 pulses (the high count) or 3 pulses (the low count) are used. The parsing ROM 81 effectively determines for each demoninator count from denominator counter 84 which of the pulse counts (high or 1' low) is to be used. Thus, for the 350 nS clock the parsing ROM I 81 determines that the high count (3) is selected for the !first three and the last three of the seven denominator counts ,and that the low count (2) is selected for the middle deno!minator count in the overall recycle counter period.
i i 1
I ? '
I - 45 j The high or low integer is then selected by high-low integer select ROM 83 to identify which of the counts on integer counter 85 must count so in order to supply one output pulse therefrom for each of the seven groups (i.e., whether the group contains 3 350 nS pulse counts or 2 350 nS pulse r counts) so that for every 7 groups (making up 20 350 nS pulses I in total) seven output pulses are supplied. Accordingly, as seen in the timing diagram of FIG. 15, the output of integer counter 85 is a 1 MHz clock signal, i.e., every 7000 nS i (20 x 350 nS) the output counter 85 produces 7 pulses which | is, of course, equivalent to one pulse every 1000 nS. A
I similar analysis is shown in FIG. 15 for the 450 nS input clock i and can be made for each of the eight input clocks and associated ! parsing algorithms shown in the chart of FIG. 11.
As can be seen in FIG. 15 for the 350 nS inputclock, ' while the pulse spacing of the output signal is not uniform, ; the number of pulses over each seven microseconds (i.e., 7000 ί nanoseconds) recycle time period is the same. Thus, while a I timing error may occur during each recycle time period the I error reduces t.0 zero at the end thereof. For the 350 nS j clock signal the maximum error which occurs during the recycle period is + 150 nS, as shown in FIG. 15, and the error at the end of the recycle period is zero. For the 450 nS input signal the maximum error is 300 nS and at the end of the ן recycle time period of 9000 nS, the error is zero. The maximum j error for all of the input clock signals are shown in the chart of FIG. 14. Such errors are of little significance over the time periods required for operation of the internal units which utilize the 1 MHz signal so that, for all practical purposes, the 1 MHz signal has an essentially constant i frequency. It should be noted that in no case is the maximum j error greater than the time period of the input clock signal involved. ;
The above frequency synthesis unit provides an extremely adaptable system I/O interface unit 14 which can supply the j desired master clock signal for the local or internal devices and the desired master baud rate signal for asynchronous terminal operation even when the system input clock signal has one of a plurality of different selectable frequencies. As mentioned above, the overall frequency synthesizer circuitry i includes substantially two versions of the general unit shown in FIG. 13, one for the 1.0 MHz output signal and one*for the master baud rate output. A baud rate selection circuit can be utilized to provide one of a plurality of 16 different baud rates from the master baud rate by suitable baud selection circuitry which provides integer multiples of the master baud rate as desired. The circuitry for dividing the master baud rate to obtain each of 16 different baud rates is well known to those in the art. Moreover, the 1.0 MHz clock rate can also be appropriately divided down to produce clock rates ; which are integer submultiples of the 1.0 MHz master clock | rate for various internal devices as required. Lists of the exemplary baud rates which can be derived from a master baud
II rate of 614,400 Hz and exemplary local counter output signals (decode counter clocks) which can bo derived from a master
1.0 MHz clock signal are provided below.
Baud
Local Counter Output Signals
<td> 50</td><td> 1.0</td><td> MHz</td>
<td> 75</td><td> , 100</td><td> KHz</td>
<td> 110</td><td> 10</td><td> KHz</td>
<td> 134.5</td><td> 1.0</td><td> KHz</td>
1200
1800
2000
2400
4800
9600
19200
38400
While specific implementations of the two-level micro-modification technique, the system bus protocol techniques, the I/O bus polling techniques, and the frequency synthesizing technique are disclosed above for the particular embodiment of the invention, the invention is not limited thereto. Modifications thereof within the spirit and scope of the invention will occur to those in the art. Hence, the invention is not to be construed as limited to the particular embodiments described except as defined by the appended claims.
- 49 APPENDIX
HORIZONTAL MICROINSTRUCTION SET
<td colspan="2"> ABUS field (4 bits wide, 16 encodings)</td>
<td> VI GI GD</td><td> vertical modifier 1 GI . GD</td>
<td> 5 GR</td><td> GR</td>
<td> GL</td><td> GL</td>
<td> IRESX</td><td> IRE<8-15> , sign extended if IRE<6-7?. NE.O</td>
<td> IRD</td><td> IRD</td>
<td> ACSR</td><td> ACSR</td>
<td> 10 BIT</td><td> 2** (15 - GR<12-15> )</td>
<td> BONE</td><td> 377 (byte of Is right justified)</td>
<td> ZERO</td><td> 0</td>
<td> NOTES on the use of</td><td> ABUS micro-orders</td>
<td colspan="2"> 15 (1) Any microinstruction which uses BIT must be preceeded by at</td>
<td colspan="2"> least one microinstruction which does not modify GR</td>
<td> .(it takes one</td><td> I period for BIT to settle once GR is written)</td>
<td colspan="2"> (2) ACSR is loaded with IRD<l-2>when IRE is loaded with IRD.</td>
<td colspan="2"> ACSR is loaded with CBUS4 1-2* when IRE is loaded with CBUS.</td>
<td> 20</td><td></td>
<td colspan="2"> BBUS field (4 bits wide, 16 encodings) 1</td>
<td> V2</td><td> vertical modifier 2,</td>
<td> GI</td><td> GI</td>
<td> GD</td><td> GD</td>
<td> 25 GR</td><td> GR</td>
<td> GL</td><td> GL</td>
<td> PCE</td><td> PCE</td>
<td> PCD</td><td> PCD</td>
<td> LIT</td><td> VI UV2 right justified</td>
<td> 30 IRE 10</td><td> standard I/O instruction format based on</td>
<td></td><td> IRE (see notes)</td>
<td> XP12</td><td> 0 (PCD, AC2, AC3) if IRE<l-2>3 ,2’,1) 0־־)</td>
<td> XR67</td><td> 0 (POx, AC2, AC3) if IRE <6-7?3 ,2 ,1) 0 ־־)</td>
<td></td><td> X = PCE if EFA, x = PCD if xEFA</td>
<td> 35 ΜΟΝΕ</td><td></td>
'- 50 NOTES on the use of BBUS micro-orders (1) ־ IRE 10 is used to trigger the actual I/O to devices CPU and
MAP which are partially implemented on the CPU chip (RIO and WIO) normally trigger the I/O). Caution should be exercised when coding IRE 10 to execute during a DECODE CYCLE (2) IRE 10 word format is as follows:
IRE 10 <0? 0 ־־, IRE 10 41> is reserved IRE 10 <10-15? is the device code
<td> System function IRE 10 <2-4? 000 NO-OP 001 INIA 010 MSKO Oil I0RST 100.DCHA 101 DCHI׳ 110 DCHO 111 Spare</td><td> Function IRE 10 <•5-6 > 00 STATUS 01 A REG 10 B REG 11 C REG</td><td> Direction IRE 10 <7? 0 OUT 1 IN</td><td> Control IRE 10 <•8-9? 00 NO-OP 01 START 10 CLEAR 11 PULSE</td>
DCHA, DCHI, and DCHO are not generated by the CPU chip but are used by the System 1/0 interface unit.
ALU field (4 bits wide, 16 encodings)
VI vertical modifier1
COMA'
NEG-A
MOV pass A
INCA+l
ADC B-A-l
SUB B-A
ADD A+B
AND A<sup>A</sup>B
ADI A+B+l
ANC A'<sup>a</sup>B
MUL unsigned multiply iteration step
MULS signed multiply iteration step
DIV unsigned divide iteration step
NOTES on the use of ALU micro-orders (1) A and B refer to the contents of ABUS and BBUS respectively (2) ALC hardware can directly control ALU; ALU field mnemonics are consistent with ALC instructions
SHF field (4 bits wide, 16 encodings)
<td> V2</td><td> vertical modifier 2</td>
<td> PASS</td><td> pass</td>
<td> PASSO</td><td> pass, XBUS407 = 0</td>
<td> PASSC</td><td> pass, XBUS40? s CARRY</td>
<td> SHL</td><td> shift left, pull x into LSB (see note)</td>
<td> LSHR</td><td> logical shift right, pull x into MSB (see note)</td>
<td> ASHR</td><td> . arithmetic shift right, do not change sign bit</td>
<td> SHLC</td><td> shift left, pull CARRY into LSB</td>
<td> SHRC</td><td> shift right, pull CARRY into MSB</td>
<td> SWAP</td><td> swap bytes</td>
<td> ROL</td><td> 16 bit rotate left</td>
<td> ROR</td><td> 16 bit rotate right</td>
<td> ROLC</td><td> 17 bit rotate left, CARRY participates</td>
<td> RORC</td><td> 17 bit rotate right, CARRY participates</td>
<td> NOTE on the use of</td><td> SHF micro-orders</td>
<td colspan="2"> For SHL and LSHR: x = 0 unless ALU field is used to invoke</td>
<td> multiply or divide</td><td></td>
<td> DEST field (4 bits</td><td> wide, 16 encodings)</td>
<td> VI</td><td> vertical modifier 1 <sup>1</sup></td>
<td> V2</td><td> vertical modifier 2</td>
<td> GI</td><td> GI</td>
<td> GD .</td><td> GD</td>
<td> GR</td><td> GR</td>
<td> GL</td><td> GL</td>
<td> PCF</td><td> PCF</td>
<td> IRE</td><td> IRE</td>
<td> NOLD</td><td> no load</td>
NOTE on the use of DEST micro-orders
For IRE ACSR is also loaded with CBUS «41-27 unless CBUS is sourced by MBUS
ADR field (3 bits wide, B encodings)
<td> V2</td><td> vertical modifier s</td>
<td> NONE</td><td> no address</td>
<td> SP</td><td> 40 (stack pointer)</td>
<td> FP</td><td> 41 (frame pointer)</td>
<td> SL</td><td> 42 (stack limit)</td>
<td> GI</td><td> GI</td>
GD GD
NOTES on the use of ADR micro-orders (1) Memory address source drives MBUS during PHASE 1 only (2) MBUS <0? is forced to 0 unless RHYP/WHYP is issued br
RLCL/WLCL is issued or .HYPMOD (hyperspace mode flag) = 1
<td colspan="2"> REM field (2 bits wide, 4 .:encodings)</td>
<td> V2</td><td> vertical modifier 2</td>
<td> NOP</td><td> no operation</td>
<td> RM</td><td> read memory</td>
<td> WM</td><td> write memory</td>
NOTES on the use of MEM micro-orders (1) Read operations cause CBUS to be sourced by MBUS (MBB) during PHASE 2 (read data) (2) Write operations cause MBUS to be sourced by. ABUS (MBP) during PHASE 2 . (write data) (3) CBUS is sourced by xBUS whenever a read operation is not taking place (xIO)
<td> TEST field</td><td> (4 bits wide, 16 encodings)</td>
<td> V2</td><td> vertical modifier 2</td>
<td> NOP</td><td> SKIP = SKIP</td>
<td> SET</td><td> SKIP = 1</td>
<td> CLEAR</td><td> SKIP = 0</td>
<td> GEQZ</td><td> SKIP.1 ־־ if GI increments to zero (GIINC or GIAINC) or GD decrements to zero (GDDEC or GDADEC), else SKIP = 0</td>
<td> INTP</td><td> SKIP = 1 if PI is pending, else SKIP =0 ־</td>
<td> ACSRQ</td><td> SKIP = 1 if ACSR = IRE<3-47, else SKIP = 0</td>
<td> UCRYB</td><td> SKIP - 0 if carry out of ALU<JD7= 1, else SKIP = 1</td>
<td> SCRYB</td><td> SKIP = 0 if signed carry out of ALU<OX= 1, else SKIP = 1 ( see note)</td>
<td> DCRY </td><td> SKIP = 1 if decimal overflow or decimal borrow occurs, else SKIP = 0 (see note)</td>
<td> SHOUT</td><td> SKIP = 1 if SHIFTER rotates or shifts out a 1, else SKIP = 0</td>
<td> XEQZ</td><td> SKIP = 1 if XBUS157 = 0, else SKIP = 0</td>
<td> XNEG</td><td> SKIP = 1 if XBUS407 = 1, else SKIP = 0</td>
<td> IOSKP</td><td> SKIP = 1 if the I/O SKIP condition being tested is true, else SKIP = 0</td>
<td> NMIP</td><td> SKIP = 1 if NM1 is pending, else SKIP = 0</td>
<td> OVFLO</td><td> SKIP = 1 if carry out of ALU^OZand carry into ALU4.07 do not match, else SKIP = 0</td>
NOTES on the use of TEST micro-orders (1) ACSR is loaded with IRD4L-27 when IRE is loaded with IRD.
ACSR is loaded with CBUS.iJ.-27 when IRE is loaded with CBUS (2) SCRYB ־= (ALU</> .XOR. OVFLO) (3) DCRY = (carry out of ALU4127 .XOR. SUB) .OR.
( (ALU<12-157> 9.) .AND. ADD ) (4) UCRYB may be used for unsigned integer comparisons and SCRYB may be used for signed integer comparisons (5) The increment/decrement happens first if ACSR is incremented/decremented and ACSRQ is issued. Likewise for the increment/decrement using GEQZ (6) for IOSKP, the truth of the I/O skip condition is determined by the contents of the ABUS (DIS word) and IRE48-97 . lhe DIS word format is as follows:
DIS4O?־= ׳ DONE (POWER FAIL if DIS 77)
DIS<17 = BUSY (ION if DIS 77)
DIS<2-14> are reserved
DIS<L5* = NMI caused by BALT if DIS 77 else reserved
<td></td><td> RAND field (4 bits</td><td> wide, 16 encodings)</td>
<td> 10</td><td> vi</td><td> vertical modifier 1</td>
<td> .</td><td> NOP</td><td> no operation</td>
<td></td><td> IR5T0I</td><td> I (indirect enable) = IRE<5></td>
<td></td><td> AOTOI</td><td> I (indirect enable) = ABUS<0></td>
<td></td><td> GIINC</td><td> increment GI</td>
<td></td><td> GDDEC</td><td> decrement GD</td>
<td> 15</td><td> GIAINC</td><td> increment GI and ACSR</td>
<td></td><td> GDADEC</td><td> decrement GD and ACSR</td>
<td></td><td> SETCRY</td><td> CARRY = 1</td>
<td></td><td> CLRCRY</td><td> CARRY = 0</td>
<td></td><td> GLL</td><td> shift GL left, pull x into LSB (see note)</td>
<td> 20</td><td> GRR</td><td> shift GR right, pull χ into MSB (see note)</td>
<td></td><td> GLLGDD</td><td> decrement GD, shift GL left and pull x into</td>
<td></td><td></td><td> LSB (see note)</td>
<td></td><td> GRRGDD</td><td> decrement GD, shift GR right and pull x into</td>
<td></td><td></td><td> MSB (see note)</td>
<td> 25</td><td> HYPON</td><td> HYPMOD (hyperspace mode flag) = 1</td>
NOTE on the use of RAND micro-orders
For GLL, GRR<sub>׳</sub> GLLGDD, and GRRGDD: if multiply or divide is not invoked.' using the ALU field, then x equals the bit rotated 30 or shifted out of the SHIFTER (x = 0 if SHIFTER is not rotating or shifting), else MUL/DIV logic determines x
APPENDIX
VERTICAL MICROINSTRUCTION SET
ADRH field (6 bits wide, 64 encodings)
Each encoding selects one of 64 horizontal microinstructions in the HPLA. The selected horizontal is executed. If the executed horizontal sets I (indirect enable) (a horizontal which sets 1 is called an indirect initiator), then field V2 is saved in the 4 bit wide instruction class register (ICR) and used to control indirect address chains and the MAP. The ICR is interpreted as follows:
ICR4O> (1000) Jump-type instruction, PCF is loaded whenever GI is loaded
ICR<1> (0100) reserved
ICR t2-3 0001) ל) MAP indirect cycle turn-on (0011) MAP single cycle turn-on and/or indirect cycle turn-on
The ICR is cleared by every DECODE CYCLE whose vertical does not specify a horizontal that is an indirect initiator.
<td rowspan="2"></td><td colspan="2"> VI field/ABUS modification (4 bits wide, 16 encodings)</td>
<td> ACO</td><td> ACO</td>
<td> 20</td><td> AC1</td><td> AC1</td>
<td></td><td> AC2</td><td> AC2</td>
<td></td><td> AC3</td><td> AC3</td>
<td></td><td> ACS</td><td> ACx, x = ACSR</td>
<td></td><td> ACD</td><td> ACx, x = IRE 43-4></td>
<td> 25</td><td> GI</td><td> see horizontal</td>
<td></td><td> GD</td><td> see horizontal</td>
<td></td><td> GR</td><td> see horizontal</td>
<td></td><td> GL</td><td> see horizontal</td>
<td></td><td> iRESx</td><td> see horizontal</td>
<td> 30</td><td> IRD</td><td> see horizontal</td>
<td></td><td> ACSR</td><td> see horizontal</td>
<td> י</td><td> BIT</td><td> see horizontal</td>
<td></td><td> BONE</td><td> see horizontal</td>
<td></td><td> ZERO</td><td> see horizontal</td>
<td> 35</td><td></td><td></td>
.NOTE on the use of ABUS modifiers
ACSR is loaded with IRD41-27 when IRE is loaded with IRD.
ACSR is loaded with CBUS41-27 when IRE is loaded with CBUS.
<td> 5</td><td colspan="2"> V2 field/BBUS modification (4 bits wide, 16 encodings)</td>
<td></td><td> ACO</td><td> ACO</td>
<td></td><td> AC1</td><td> AC1</td>
<td></td><td> AC2</td><td> AC2</td>
<td></td><td> AC3</td><td> AC3</td>
<td> 10</td><td> ACS</td><td> ACx, x = ACSR</td>
<td></td><td> ACD</td><td> ACx, x = IRE<3-4></td>
<td></td><td> GI</td><td> see horizontal</td>
<td></td><td> GD</td><td> see horizontal</td>
<td></td><td> GR</td><td> see horizontal</td>
<td> 15</td><td> GL</td><td> see horizontal</td>
<td></td><td> PCE</td><td> see horizontal</td>
<td></td><td> PCD</td><td> see horizontal</td>
<td></td><td> LIT</td><td> see horizontal</td>
<td></td><td> IRE 10</td><td> see horizontal</td>
<td> 20</td><td> ΜΟΝΕ</td><td> see horizontal</td>
NOTE on the use of BBUS modifiers
ACSR is loaded with IR1M1-27 when IRE is loaded with IRD.
ACSR is loaded with CBUScl-2־? when IRE is loaded with CBUS.
<td> 25</td><td colspan="3"> Vl field/ALU modification (4 bits wide, 16 encodings)</td>
<td></td><td> COM</td><td> see</td><td> horizontal</td>
<td></td><td> NEG</td><td> see</td><td> horizontal</td>
<td></td><td> MOV</td><td> see</td><td> horizontal</td>
<td> 30</td><td> INC</td><td> see</td><td> horizontal</td>
<td></td><td> ADC</td><td> see</td><td> horizontal</td>
<td></td><td> SUB</td><td> see</td><td> horizontal</td>
<td></td><td> ADD</td><td> see</td><td> horizontal</td>
<td></td><td> AND</td><td> see</td><td> horizontal</td>
<td> 35 .</td><td> ADI</td><td> see</td><td> horizontal</td>
<td></td><td> ANC</td><td> see</td><td> horizontal</td>
<td></td><td colspan="2"> _V2 field/SHF modification (4 bits wide, 16 encodings)</td>
<td></td><td> PASS</td><td> see horizontal</td>
<td></td><td> PASSO</td><td> see horizontal</td>
<td></td><td> PASSC</td><td> see horizontal</td>
<td> 5</td><td> SHL</td><td> see horizontal</td>
<td></td><td> LSHR</td><td> see horizontal</td>
<td></td><td> ASHR</td><td> see horizontal</td>
<td></td><td> SHLC</td><td> see horizontal</td>
<td></td><td> SHRC</td><td> see horizontal</td>
<td> 10</td><td> SWAP</td><td> see horizontal</td>
<td></td><td> ROL</td><td> see horizontal</td>
<td></td><td> ROR</td><td> see horizontal</td>
<td></td><td> ROLC</td><td> see horizontal</td>
<td></td><td> RORC</td><td> see horizontal</td>
<td> 15</td><td></td><td></td>
<td></td><td colspan="2"> VI and V2 fieIds/DEST modification (4 bits wide, 16 encodings)</td>
<td></td><td> AGO</td><td> ACO</td>
<td></td><td> AC1</td><td> AC1</td>
<td></td><td> AC2</td><td> AC2</td>
<td><sup>20</sup></td><td> AC3</td><td> AC3</td>
<td></td><td> ACS</td><td> ACx, x = ACSR</td>
<td></td><td> ACD</td><td> ACx, x = IRE<3-4></td>
<td></td><td> GI</td><td> see horizontal</td>
<td></td><td> GD</td><td> see horizontal</td>
<td> 25</td><td> GR</td><td> see horizontal</td>
<td></td><td> GL</td><td> see horizontal</td>
<td></td><td> PCF</td><td> see horizontal</td>
<td></td><td> IRE</td><td> see horizontal</td>
<td></td><td> NOLD</td><td> see horizontal</td>
<td> 30</td><td></td><td></td>
NOTE on the use of DESTmodifiers
ACSR is loaded with IRD <l-2> when IRE is loaded with IRD.
ACSR is loaded with CBUS41-27 when IRE is loaded with CBUS
<td></td><td> V2 field/ADR modification (4 bits wide, 8 encodings) NONE see horizontal SP see horizontal FP see hori zontal</td>
<td> 5</td><td> SL see horizontal GI see horizontal GD see horizontal NOTES on the use of ADR modifiers</td>
<td> 10</td><td> (1) There are only 8 encodings since horizontal's ADR field is only 3 bits wide (2) Memcry address formats are as follows: USER SPACE, MEMCYC = 1 address<0> = 0</td>
<td> 15</td><td> address <1-15> = register select HYPERSPACE, MEMCYC = 1 address = 1 address<L-15> = register select</td>
<td> 20</td><td> I/O SPACE, MEMCYC = 0 same as IREIO word format LOCAL SPACE, MEMCYC = 0</td>
<td> 25</td><td> address<O> = 1 address^l-S> = sub-register select address<16-9> = register select address<10-15?= device select</td>
<td colspan="2"> V2 field/MEM modification (4 bits wide, 16 encodinos)</td>
<td> NOP</td><td> see horizontal</td>
<td> RM</td><td> see horizontal</td>
<td> WM</td><td> see horizontal</td>
<td> RMOD</td><td> read and lock memory</td>
<td> WHM</td><td> write memory, high byte only</td>
<td> WLM</td><td> write memory, low byte only</td>
<td> RHYP</td><td> read hyperspace</td>
<td> WHYP</td><td> write hyperspace</td>
<td> RIO</td><td> read I/O</td>
<td> WIO</td><td> write 1/0</td>
<td> RLCL</td><td> read local</td>
<td> WLCL</td><td> write local</td>
<td> XCT</td><td> take data on memory bus into IRF, assert FETCH</td>
<td> MAPON</td><td> turn MAP on if armed</td>
<td> MAPOFF</td><td> turn MAP off</td>
NOTES on the use of MEM modifiers (1) For RMOD, memory is un-locked by the next memory operation if it is not another RMOD (2) For XCT, microcode should force a memory cycle to fake out IR PIPES) using a WLCL to device 0 register 0 (3) MAPOFF will inhibit I/O interrupts until after the next macroinstruction has begun execution. This feature does not work if MAPOFF is coded to execute during a DECODE CYCLE
V2 field/TEST modification (4 bits wide,
<td></td><td> NOP</td><td> see horizontal</td>
<td></td><td> SET</td><td> see horizontal</td>
<td></td><td> CLEAR</td><td> see horizontal</td>
<td> 5</td><td> GEQZ</td><td> see horizontal</td>
<td></td><td> INTP</td><td> see horizontal</td>
<td></td><td> ACSRQ</td><td> see horizontal</td>
<td></td><td> UCRYB</td><td> see horizontal</td>
<td></td><td> SCRYB</td><td> see horizontal</td>
<td> 10</td><td> DCRY</td><td> see horizontal</td>
<td></td><td> SHOUT</td><td> see horizontal</td>
<td></td><td> XEQZ</td><td> see horizontal</td>
<td></td><td> XNEG</td><td> see horizontal</td>
<td></td><td> IOSKP</td><td> see horizontal</td>
<td> 15</td><td> NMIP</td><td> see horizontal</td>
<td></td><td> OVFLO</td><td> see horizontal</td>
VI field/RAND modification (4 bits wide, encodings)
<td></td><td> NOP</td><td> see</td><td> horizontal</td>
<td> 20</td><td> IR5T0I ״</td><td> see</td><td> horizontal</td>
<td></td><td> AOTOI</td><td> see</td><td> horizontal</td>
<td></td><td> GIINC</td><td> see</td><td> horizontal</td>
<td></td><td> GDDEC</td><td> see</td><td> horizontal</td>
<td><sup>1</sup></td><td> GIAINC</td><td> see</td><td> horizontal</td>
<td> 25</td><td> GDADEC</td><td> see</td><td> horizontal</td>
<td></td><td> SETCRY</td><td> see</td><td> horizontal</td>
<td></td><td> CLRCRY</td><td> see</td><td> horizontal</td>
<td></td><td> GLL</td><td> see</td><td> horizontal</td>
<td></td><td> GRR</td><td> see</td><td> horizontal</td>
<td> 30</td><td> GLLGDD</td><td> see</td><td> horizontal</td>
<td></td><td> GRRGDD</td><td> see</td><td> horizontal</td>
<td></td><td> HYPON</td><td> see</td><td> horizontal</td>
<td colspan="3"> NAM field (4 bits wide, 16 encodings)</td>
<td> NEXT SKIP JUMP DECODE</td><td colspan="2"> VPC = VPC + 1 VPC = VPC + 1 + 1 unconditional transfer (VPC = V1!!V2) begin interpretation of a new macroinstruction</td>
<td> SDCODE TJUMP</td><td> DECODE but allow a macro skip if SKIP = 1 then JUMP, else NEXT</td><td></td>
<td> FJUMP TSKIP FSKIP TREPT</td><td> if SKIP = 0 then JUMP, else NEXT if SKIP = 1 then SKIP, else NEXT if SKIP = 0 then skip, else NEXT if SKIP = 1 then JUMP to current VPC,</td><td> else NEXT</td>
<td> FREPT</td><td> if SKIP = 0 then JUMP to current VPC,</td><td> else NEXT</td>
<td> TDCOEE FDCODE CALL</td><td> if SKIP 1 ־־ then DECODE, else NEXT if SKIP = 0 then DECODE, else NEXT subroutine call (VPCSAV = VPC +1, VPC</td><td> = V1!!V2)</td>
<td> RTRN</td><td> subroutine return (VPC = VPCSAV)</td><td></td>
NOTES on the use of NAM micro-orders (1) The NAM field senses the old value of the SKIP flag, not the new value which is determined by the horizontal selected by the currently executing vertical (2) Special hardware conditions such as NMI (NonMaskable Interrupt) are handled during a DECODE CYCLE (3) If SKIP = 1 and an SDCODE is Issued, then the macroinstruction in IRD is not executed. The next macroinstruction to be executed is found in IRF (the macroinstruction in IRD is skipped). This is called macro skip and is used by macroinstruction interpreters such as CLM (4) It is illegal to write PCF or read IRD if a DECODE is issued (ie you can't start the autonomous fetch .unit and DECODE simultaneously) (5) VPC sequencing is polynomial, not binary (6) SKIP is cleared by every DECODE CYCLE
APPENDIX
STARTING MICROINSTRUCTION SET
ADRH, VI and V2 fields (total 14 bits wide) Same as in vertical control ROM (VCR)
ADRV field (9 bits wide, 512 encodings)
Each encoding is a pointer to one of 286 vertical microinstructions in the VCR. This pointer is loaded into the VERTICAL PC (VPC) to begin normal vertical sequencing through the VCR
D field (1 bit wide, 2 encodings)
N do not invoke a macroinstruction decode
Ϊ invoke a macroinstruction decode and allow a macro skip
NOTES (1) The D field is used by macroinstruction interpreters which consists of only one vertical microinstruction (eg ALCs). In those cases, the VCR is not accessed (2) The ADRV field is ignored if a macroinstruction decode is invoked using the D field (3) If SKIP = 1 and a macroinstruction decode is invoked using the D field, then the macroinstruction in IRD is not executed. The next macroinstruction to be executed is found in IRF (the macroinstruction in IRD is skipped). This is called macro skip and is used by the ALCs and others (4) It is illegal to write PCF or read IRD if a macroinstruction decode is invoked (ie you can't start the autonomous fetch unit and decode simultaneously) (5) SKIP is cleared by every DECODE CYCLE
APPENDIX D
SPECIFIC HORIZONTAL FIELDS
<td></td><td> LABEL</td><td> ABUS</td><td> BBUS</td><td> ALU</td><td> SHF</td><td> DEST</td><td> ' ADR</td><td> MEM</td><td> I TEST</td><td> RAND</td>
<td> OOOO</td><td> NOOP:</td><td> -</td><td> -</td><td> -</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> NOP ,</td><td> NOP</td>
<td> 0001</td><td> RMEM:</td><td> VI</td><td> -</td><td> -</td><td> PASS</td><td> VI</td><td> V2</td><td> RM</td><td> NOP</td><td> NOP .</td>
<td> 0002</td><td> WMEM:</td><td> VI</td><td> -</td><td> .</td><td> PASS</td><td> NOLD</td><td> V2</td><td> WM</td><td> NOP</td><td> NOP</td>
<td> 0003</td><td> XMEMGI:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> VI</td><td colspan="2"> GIADR V2</td><td> NOP</td><td> NOP</td>
<td> 0004</td><td> XMEMGD:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> VI</td><td colspan="2"> GDADR V2</td><td> NOP</td><td> NOP</td>
<td> 0005</td><td> XMEMIG:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> VI</td><td colspan="2"> GIADR V2</td><td> NOP</td><td> GIINC</td>
<td> 0006</td><td> XMEMDG:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> VI</td><td colspan="2"> GDADR V2</td><td> NOP</td><td> GDDEC</td>
<td> 0007</td><td> COMH:</td><td> VI</td><td> -</td><td> OOM</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0010</td><td> NEGH:</td><td> VI</td><td> -</td><td> NEG</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0011</td><td> MOVH:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0012</td><td> INCH:</td><td> VI</td><td> -</td><td> INC</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0013</td><td> ADCH:</td><td> VI</td><td> V2</td><td> ADC</td><td> PASS</td><td> . V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0014</td><td> SUBH:</td><td> VI</td><td> V2</td><td> SUB</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0015</td><td> ADDH:</td><td> VI</td><td> V2</td><td> ADD</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0016</td><td> ANDH:</td><td> VI</td><td> V2</td><td> AND</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0017</td><td> AD1H:</td><td> VI</td><td> V2</td><td> ADI</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0020</td><td> ANCH:</td><td> VI</td><td> V2</td><td> ANC</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0021</td><td> DECH:</td><td> VI</td><td> ΜΟΝΕ</td><td> ADD</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0022</td><td> MOVIT:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0023</td><td> ADDHC:</td><td> VI</td><td> V2</td><td> ADD</td><td> PASS</td><td> V2</td><td> NONE</td><td> NOP</td><td> UCRYB</td><td> NOP</td>
<td> 0024</td><td> GIDAS:</td><td> GD</td><td> GI</td><td> VI</td><td> V2</td><td> GD</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0025</td><td> GIDAT:</td><td> GD</td><td> GI</td><td> VI .</td><td> PASS</td><td> GD</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0026</td><td> GRLAS:</td><td> GL</td><td> GR</td><td> VI</td><td> V2 .</td><td> GL</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0027</td><td> GRLAT:</td><td> GL</td><td> GR</td><td> VI</td><td> PASS</td><td> GL</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0030</td><td> MULH:</td><td> VI</td><td> V2</td><td> MUL</td><td> LSHR</td><td> V2</td><td> NONE</td><td> NOP</td><td> GEQZ</td><td> GRRGDD</td>
<td> 0031</td><td> MI.LSH:</td><td> VI</td><td> V2</td><td> MULS</td><td> LSHR</td><td> V2</td><td> NONE</td><td> NOP</td><td> GEQZ</td><td> GRRGDD</td>
<td> 0032</td><td> DIVH:</td><td> VI</td><td> V2</td><td> DIV</td><td> ROLC</td><td> V2</td><td> NONE</td><td> NOP</td><td> GEQZ</td><td> GLLGDD</td>
<td> 0033</td><td> SHIFT:</td><td> VI</td><td> -</td><td> MOV</td><td> V2</td><td> VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0034</td><td> SHIFTO:</td><td> VI</td><td> -</td><td> MOV</td><td> V2</td><td> VI</td><td> NONE</td><td> NOP</td><td> SHOUT</td><td> NOP</td>
<td> 0035</td><td> SHIFTN:</td><td> VI</td><td> -</td><td> MOV</td><td> V2</td><td> VI</td><td> NONE</td><td> NOP</td><td> XNEG</td><td> NOP</td>
<td> 0036</td><td> TST:</td><td> VI</td><td> .”</td><td> MOV</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0037</td><td> RANTST:</td><td> GI</td><td> -</td><td> MOV</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> V2</td><td> VI</td>
<td></td><td> LABEL</td><td> ABUS</td><td> BBUS</td><td> ALU</td><td> SHF</td><td> DEST</td><td> ADR</td><td> MEM</td><td> TEST</td><td> RAND</td>
<td> 0040</td><td> LITGI:</td><td> ZERO</td><td> LIT</td><td> ADD</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0041</td><td> LITGD:</td><td> ZERO</td><td> LIT</td><td> ADD</td><td> PASS</td><td> GD</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0042</td><td> LITGR:</td><td> ZERO</td><td> LIT</td><td> ADD</td><td> PASS</td><td> GR</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0043</td><td> LITGI:</td><td> ZERO</td><td> LIT</td><td> ADD</td><td> PASS</td><td> GL</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0044</td><td> LITSGI:</td><td> ZERO</td><td> LIT</td><td> ADD</td><td> SWAP</td><td> GI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0045</td><td> ADDLIT:</td><td> GI</td><td> LIT</td><td> ADD</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0046</td><td> MCVHRQ:</td><td> ZERO</td><td> V2</td><td> ADD</td><td colspan="2"> PASSO VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0047</td><td> INCHRO:</td><td> ZERO</td><td> V2</td><td> ADI</td><td colspan="2"> PASSO VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0050</td><td> UCMPGT:</td><td> VI</td><td> V2</td><td> SUB</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> UCRYB</td><td> NOP</td>
<td> 0051</td><td> UCMPGE:</td><td> VI</td><td> V2</td><td> ADC</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> UCRYB</td><td> NOP</td>
<td> 0052</td><td> SCMPGT:</td><td> VI</td><td> V2</td><td> SUB</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> SCRYB</td><td> NOP</td>
<td> 0053</td><td> SCMPGE:</td><td> VI</td><td> V2</td><td> ADC</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> SCRYB</td><td> NOP</td>
<td> 0054</td><td> COMPEQ:</td><td> VI</td><td> V2</td><td> SUB</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> XEQZ</td><td> .NOP</td>
<td> 0055</td><td> SDSHL:</td><td> VI</td><td> -</td><td> MOV</td><td> SHL</td><td> VI</td><td> NONE</td><td> NOP</td><td> V2</td><td> GLLGDD</td>
<td> 0056</td><td> SDSHR:</td><td> VI</td><td> -</td><td> MOV</td><td> LSHR</td><td> VI</td><td> NONE</td><td> NOP</td><td> V2</td><td> GRRGDD</td>
<td> 0057</td><td> EFA:</td><td colspan="2"> IRESX XR67</td><td> ADD</td><td> . PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> CLEAR</td><td> IR5TOI</td>
<td> 0060</td><td> XEFA12:</td><td> IRD</td><td> XR12</td><td> ADD</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> CLEAR</td><td> AOTOI</td>
<td> 0061</td><td> XEFA67:</td><td> IRD</td><td> XR67</td><td> ADD</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> CLEAR</td><td> AOTOI</td>
<td> 0062</td><td> MCVHI:</td><td> VI</td><td> -</td><td> MOV</td><td> PASS</td><td> GI</td><td> NONE</td><td> NOP</td><td> CLEAR</td><td> AOTOI</td>
<td> 0063</td><td> RMEMI:</td><td> VI</td><td> -</td><td> -</td><td> PASS</td><td> VI</td><td> GIADR</td><td> RM</td><td> V2</td><td> GIINC</td>
<td> 0064</td><td> RMEMD:</td><td> -</td><td> -</td><td> -</td><td> PASS</td><td> VI</td><td> GDADR</td><td> RM</td><td> V2.</td><td> GDADEC</td>
<td> 0065</td><td> WMEMI:</td><td> VI</td><td> -</td><td> - .</td><td> PASS</td><td> NOLD</td><td> GIADR</td><td> WM</td><td> V2</td><td> GIAINC</td>
<td> 0066</td><td> WMEMD:</td><td> VI</td><td> -</td><td> —</td><td> PASS</td><td> NOLD</td><td> GDADR</td><td> WM</td><td> V2</td><td> GDDEC</td>
<td> 0067 .</td><td> INCT:</td><td> VI</td><td> —</td><td> INC</td><td> PASS</td><td> VI</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0070</td><td> DECT:</td><td> VI</td><td> NONE</td><td> ADD</td><td> PASS</td><td> VI</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0071</td><td> NEGT:</td><td> VI</td><td> -</td><td> NEG</td><td> PASS</td><td> VI</td><td> NONE</td><td> NOP</td><td> V2</td><td> NOP</td>
<td> 0072</td><td> hibyte:</td><td> BONE</td><td> V2</td><td> ANC</td><td> SWAP</td><td> VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0073</td><td> LOBYTE:</td><td> BONE</td><td> V2</td><td> AND</td><td> PASS</td><td> VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0074</td><td> MASRTZ:</td><td> VI</td><td> V2</td><td> AND</td><td> PASS</td><td> NOLD</td><td> NONE</td><td> NOP</td><td> XEQZ</td><td> NOP</td>
<td> 0075</td><td> SHOGI:</td><td> VI</td><td> .י-</td><td> MOV</td><td> V2</td><td> GI</td><td> NONE</td><td> NOP</td><td> SHOUT</td><td> NOP</td>
<td> 0076</td><td> SHOGD:</td><td> VI</td><td> -</td><td> MOV</td><td> V2</td><td> GD</td><td> NONE</td><td> NOP</td><td> SHOUT</td><td> NOP</td>
<td> ר loc.</td><td> 7ן IND is</td><td colspan="4"> locked to the indirect</td><td colspan="5"> address chaining mechanism</td>
<td> 0077</td><td> IND:</td><td> -</td><td> -</td><td> -</td><td></td><td> PASS</td><td> GI .</td><td> GIADR</td><td> RM</td><td> NOP</td>
APPENDIX E
HORIZONTAL MICROINSTRUCTION
MICRO-ORDER ENCODINGS
34 78 11 12 , 15 16 19 20 22 23 26 27 30 31
<td> HCR*</td><td> ABUS</td><td> BBUS</td><td> ALU</td><td> • SHF</td><td> DEST</td><td> ADR</td><td> MEM</td><td> TEST</td><td> RAND</td>
<td> 0000</td><td> ACO</td><td> ACO</td><td> COM</td><td> PASS</td><td> VI</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0001</td><td> AC1</td><td> AC1</td><td> NEG</td><td> ASHR</td><td> VI</td><td> SP</td><td> WM</td><td> V2</td><td> • VI</td>
<td> 0010</td><td> AC2</td><td> AC2</td><td> MOV</td><td> PASSO</td><td> V2</td><td> GDADR</td><td> RM</td><td> ACSRQ</td><td> A0T01</td>
<td> 0011</td><td> AC3</td><td> AC3</td><td> INC</td><td> PASSC</td><td> V2</td><td> SL</td><td> V2</td><td> GEQZ</td><td> NOP</td>
<td> 0100</td><td> GI</td><td> GI</td><td> ADC</td><td> SRL</td><td> GI</td><td> GIADR</td><td></td><td> XEQZ</td><td> GLL</td>
<td> 0101</td><td> GD</td><td> GD</td><td> SUB</td><td> . ROL</td><td> GD</td><td> FP</td><td> I</td><td> SHOUT</td><td> GLLGDD</td>
<td> 0110</td><td> GR</td><td> GR</td><td> ADD</td><td> SHLC</td><td> GR</td><td> V2</td><td></td><td> IMTP</td><td> GLRCRY</td>
<td> 0111</td><td> GL</td><td> GL</td><td> ADI</td><td> ROLC</td><td> GL</td><td> V2</td><td></td><td> NMTP</td><td> GDDEC</td>
<td> 1000</td><td> ZERO</td><td> ΜΟΝΕ</td><td> MUL</td><td> LSHR</td><td> NOLD</td><td></td><td></td><td> XNEG</td><td> GIINC</td>
<td> 1001</td><td> ZERO</td><td> XR67</td><td> MULS</td><td> ROR</td><td> NOLD</td><td></td><td></td><td> IOSKP</td><td> GIAINC</td>
<td> 1010</td><td> BONE</td><td> PCE</td><td> DIV</td><td> SHRC</td><td> PCF</td><td></td><td></td><td> DCRY</td><td> IR5T0I</td>
<td> 1011</td><td> IRD</td><td> PCD</td><td> ADI</td><td> RORC</td><td> PCF</td><td></td><td></td><td> SCRYB</td><td> HYPON</td>
<td> 1100</td><td> IRESX</td><td> IREIO</td><td> ANC</td><td> SWAP</td><td> IRE</td><td></td><td></td><td> UCRYB</td><td> GRR</td>
<td> 1101</td><td> BIT</td><td> LIT</td><td> ANC</td><td> SWAP</td><td> IRE</td><td></td><td></td><td> CLEAR</td><td> GRRGDD</td>
<td> 1110</td><td> ACSR</td><td> xR12</td><td> AND</td><td> V2</td><td> NOLD</td><td></td><td></td><td> OVFLO</td><td> SETCRY</td>
<td> 1111</td><td> VI</td><td> V2</td><td> VI</td><td> V2</td><td> NOLD</td><td></td><td></td><td> SET</td><td> GDADEC</td>
<td> MODIFIER</td><td> VI</td><td> V2 .</td><td> VI</td><td> V2</td><td> V1&V2</td><td> V2</td><td> V2</td><td> V2</td><td> VI</td>
<td> 0000</td><td> ACO</td><td> ACO</td><td> COM</td><td> PASS</td><td> ACO</td><td> NONE</td><td> NOP</td><td> NOP</td><td> NOP</td>
<td> 0001</td><td> AC1</td><td> AC1</td><td> NEG</td><td> ASHR</td><td> AC1</td><td> SP</td><td> WM</td><td> NOP</td><td> VI</td>
<td> 0010</td><td> AC2</td><td> AC2</td><td> MOV</td><td> PASSO</td><td> AC2</td><td> GDADR</td><td> RM</td><td> ACSHQ'</td><td> A0TO1</td>
<td> 0011</td><td> AC3</td><td> AC3</td><td> INC</td><td> PASSC</td><td> AC3</td><td> SL</td><td> WHM</td><td> GEQZ</td><td> NOP</td>
<td> 0100</td><td> GI</td><td> GI</td><td> ADC</td><td> SRL</td><td> GI</td><td> GIADR</td><td> RMDD</td><td> XEQZ</td><td> GLL</td>
<td> 0101</td><td> GD</td><td> GD</td><td> SUB</td><td> ROL</td><td> GD</td><td> FP</td><td> WLM</td><td> SHOUT</td><td> GLLGDD</td>
<td> 0110</td><td> GR</td><td> GR</td><td> ADD</td><td> SHLC</td><td> GR</td><td> NONE</td><td> RHYP</td><td> INTP</td><td> GLRCRY</td>
<td> 0111</td><td> GL</td><td> GL</td><td> ADI</td><td> ROLC</td><td> GL</td><td> NONE</td><td> WHYP</td><td> NMTP</td><td> GDDEC</td>
<td> 1000</td><td> ACS</td><td> ACS</td><td> ADC</td><td> LSHR</td><td> ACS</td><td> NONE</td><td> RIO</td><td> XNEG</td><td> GIINC</td>
<td> 1001</td><td> ACD</td><td> ACD</td><td> SUB</td><td> ROR</td><td> ACD</td><td> SP</td><td> WIO</td><td> IOSKP</td><td> GIAINC</td>
<td> 1010</td><td> BONE</td><td> PCE</td><td> ADD</td><td> SHRC</td><td> PCE</td><td> GDADR</td><td> RLCL</td><td> DCRY</td><td> IR5T0I</td>
<td> 1011</td><td> IRD</td><td> PCD</td><td> ADI</td><td> RORC</td><td> PCE</td><td> SL</td><td> WLCL</td><td> SCRYB</td><td> HYPON</td>
<td> 1100.</td><td> IRESX</td><td> IREIO</td><td> ANC</td><td> SWAP</td><td> IRE</td><td> GIADR</td><td> 4AP0N</td><td> DCRYB</td><td> GRR</td>
<td> 1101</td><td> BIT</td><td> LIT</td><td> ANC</td><td> SWAP</td><td> IRE</td><td> FP</td><td> XCT</td><td> CLEAR</td><td> GRRGDD</td>
<td> 1110</td><td> ACSR</td><td> ΜΟΝΕ</td><td> AND</td><td> SWAP</td><td> iOLD</td><td> NONE</td><td> 4AP0FF</td><td> OVFLO</td><td> SETCRY</td>
<td><sup>1111</sup></td><td> ZERO</td><td> ΜΟΝΕ 1</td><td> iND</td><td> SWAP</td><td> JOLD</td><td> NONE</td><td> 7</td><td> SET</td><td> GDADEC -</td>
<td> ' VCR</td><td> NAM . .</td><td> SPLA .</td><td> D .</td><td> CROS</td><td> CNAM</td><td> CNAMX</td><td> CNAMX</td><td> NAM</td><td> DEC</td>
<td> 0000</td><td> NEXT</td><td> OOOO</td><td> N</td><td> 0000</td><td> JUMP</td><td> NOP</td><td> WAI TO</td><td> NEXT</td><td> NO</td>
<td> □001</td><td> JUMP</td><td> 0001</td><td> Y</td><td> 0001 .</td><td> CALL</td><td> SETA</td><td> WAIT1</td><td> DECOEE</td><td> YES</td>
<td> □010</td><td> SKIP</td><td> ooio</td><td></td><td> 0010</td><td> FREPT</td><td> SETB</td><td> WAIT2</td><td> TREPT</td><td></td>
<td> □Oil</td><td> FSKIP</td><td> OOll</td><td></td><td> 0011.</td><td> IREPT</td><td> SETC</td><td> WAIT3</td><td> FREPT</td><td></td>
<td> □100</td><td> RTRN</td><td> 0100</td><td></td><td> 0100</td><td> DECODE</td><td> CLRA</td><td> FLAGA</td><td></td><td></td>
<td> □101</td><td> CALL</td><td> 0101</td><td></td><td> 0101</td><td> RTRN</td><td> CLRB</td><td> FLAGB</td><td></td><td></td>
<td> □110</td><td> ?</td><td> 0110</td><td></td><td> 0110</td><td> RLNEXT</td><td> CLRC</td><td> FLAGC</td><td></td><td></td>
<td> □111</td><td> FJUMP</td><td> 0111</td><td></td><td> 0111</td><td> RLNEXT</td><td> CLRX</td><td> FLAGC</td><td></td><td></td>
<td> 1000</td><td> DECODE</td><td> 1000</td><td></td><td> 1000</td><td> TJUMP</td><td></td><td></td><td></td><td></td>
<td> 1001</td><td> IDCODE</td><td> 1001</td><td></td><td> 1001</td><td> FJUMP</td><td></td><td></td><td></td><td></td>
<td> 1010</td><td> SDCODE</td><td> 1010</td><td></td><td> 1010</td><td> TCALL</td><td></td><td></td><td></td><td></td>
<td> 1011</td><td> FDCODE</td><td> 1011</td><td></td><td> 1011</td><td> FCALL</td><td></td><td></td><td></td><td></td>
<td> 1100</td><td> TSKIP</td><td> 1100</td><td></td><td> 1100</td><td> TRTRN</td><td></td><td></td><td></td><td></td>
<td> 1101</td><td> TJUMP</td><td> 1101</td><td></td><td> 1101</td><td> FRTRN־.</td><td></td><td></td><td></td><td></td>
<td> L110</td><td> TREPT</td><td> 1110</td><td></td><td> 1110</td><td> RJUMP</td><td></td><td></td><td></td><td></td>
<td> 1111</td><td> FREPT</td><td> 1111</td><td></td><td><sup>1111</sup></td><td> RJUMP</td><td></td><td></td><td></td><td></td>
* Horizontal Control ROM
Contents26
16 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16
47 members in 9 offices
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 12029280 | United States of America | A | |
| 12029280 | United States of America | A | |
| 6205581 | Israel | A | |
| 6205581 | Israel | A | |
| 120292 | – | – | – |
| 62055 | – | – | – |
| IL19810062055 | – | – | – |
| US19800120292 | – | – | – |
Members47
| Document | Office | Kind | |
|---|---|---|---|
| IL62055A0 | Israel | A0 | |
| BR8100790A | Brazil | A | |
| AU6679081A | Australia | A | |
| AU6679081A | Australia | A | |
| EP0035334A2 | European Patent Office (EPO) | A2 | |
| JPS56153449A | Japan | A | |
| EP0035334A3 | European Patent Office (EPO) | A3 | |
| US4371925A | United States of America | A | |
| US4394736A | United States of America | A | |
| CA1152652A | Canada | A | |
| CA1154169A | Canada | A | |
| EP0094140A1 | European Patent Office (EPO) | A1 | |
| EP0097977A2 | European Patent Office (EPO) | A2 | |
| EP0097977A3 | European Patent Office (EPO) | A3 | |
| US4464772A | United States of America | A | |
| AU541189B2 | Australia | B2 | |
| IL73850A0 | Israel | A0 | |
| IL73851A0 | Israel | A0 | |
| IL73852A0 | Israel | A0 | |
| AU3910085A | Australia | A | |
| AU3910085A | Australia | A | |
| EP0035334B1 | European Patent Office (EPO) | B1 | |
| DE3172395D1 | Germany | D1 | |
| EP0164138A1 | European Patent Office (EPO) | A1 | |
| JPS61262830A | Japan | A | |
| JPS61262867A | Japan | A | |
| JPS61262868A | Japan | A | |
| EP0097977B1 | European Patent Office (EPO) | B1 | |
| DE3175667D1 | Germany | D1 | |
| US4649470A | United States of America | A | |
| IL62055A | Israel | A | |
| IL73850A | Israel | A | |
| IL73851A | Israel | A | |
| IL73852AThis record | Israel | A | |
| JPS6258028B2 | Japan | B2 | |
| JPS6312231U | Japan | U | |
| JPS6315608B2 | Japan | B2 | |
| AU573310B2 | Australia | B2 | |
| JPS6319854Y2 | Japan | Y2 | |
| AU1380588A | Australia | A | |
| AU1380588A | Australia | A | |
| EP0164138B1 | European Patent Office (EPO) | B1 | |
| DE3177087D1 | Germany | D1 | |
| US2008188102A1 | United States of America | A1 | |
| WO2008098078A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US7632160B2 | United States of America | B2 | |
| US2010044064A1 | United States of America | A1 |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Patent voidRH | RH |
Numbers
- Publication, DOCDB
- 73852
- Publication, EPODOC
- IL73852
- Application
- 73852
- Application, DOCDB
- 7385281
- Application, EPODOC
- IL19810073852
Titles
- English
- DATA PROCESSING SYSTEM WITH MULTIPLE I/O BUSES
Classification
- IPC, 2
- G06F13 20
- G06F13 36
