US3678467A - Multiprocessor with cooperative program execution - Google Patents

Multiprocessor with cooperative program execution Download PDF

Info

Publication number
US3678467A
US3678467A US82354A US3678467DA US3678467A US 3678467 A US3678467 A US 3678467A US 82354 A US82354 A US 82354A US 3678467D A US3678467D A US 3678467DA US 3678467 A US3678467 A US 3678467A
Authority
US
United States
Prior art keywords
processor
instruction
register
execution
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US82354A
Inventor
Eric Nussbaum
Wing Noon Toy
Melvin Neil Woinsky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
Bell Telephone Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bell Telephone Laboratories Inc filed Critical Bell Telephone Laboratories Inc
Application granted granted Critical
Publication of US3678467A publication Critical patent/US3678467A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54541Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme using multi-processor systems
    • H04Q3/5455Multi-processor, parallelism, distributed systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1637Error detection by comparing the output of redundant processing systems using additional compare functionality in one or some but not all of the redundant processing components

Definitions

  • This invention is concerned with program controlled multiprocessor systems wherein an instruction obtained by one processor from memory can be executed in both the processor obtaining the instruction and in another processor.
  • This arrangement is of particular but not exclusive interest to multiprocessor systems in which one processor controls both itself and another processor to diagnose troubles detected in the operation of the other processor.
  • Multiprocessor systems often are employed in system environments requiring extremely high reliability of operation.
  • An example of such a system environment is the use of a multiprocessor as the control element for an industrial process or a communications switching system.
  • a plurality of processors are synchronously operated in accordance with identical programs and input data with only one on-line processor exerting system control at any given time.
  • the other off-line processor or processors are used to check the operation of the processor in control by means of matching arrangements which verify the equivalence of data flow and processing results within all the processors.
  • system control can be transferred from one processor to another thereby insuring continuous operation of the overall system.
  • the program order register of one processor in a multiprocessor system is connected to command translators in a plurality of processors in the multiprocessor system. Instructions can be decoded in more than one processor and can be executed cooperatively in more than one processor at the same time.
  • the decoding function in all processors of a particular instruction is not necessarily identical.
  • a plurality of processors simultaneously can perform similar or different data processing functions.
  • each data processor the data processing circuits and the registers, which store the data upon which data processing functions are executed by means of the data processing circuits, are each connected to a program gating bus.
  • This provides bidirectional communication access to and from all registers and data processing circuits by way of the program gating bus within one processor.
  • the program gating bus of each processor is connected through controllable gating elements to the program gating bus of the other processor or processors. This provides a transmission path by means of which data can be transferred selectively from any register in one processor to any register in another processor. Thus, data can be transferred directly between processors without resorting to time consuming special read and write operations with respect to a common memory.
  • connection between the program order register of one processor and the command translator of another processor permits a single instruction obtained by one processor to define and initiate the different gating operations within both processors which provide for the transfer of information from a specified register in one proces sor to a specified register in the other processor.
  • Each processor includes a bistable element which, when in one stable state, e.g., SET, blocks outputs of the command translator of that processor and inhibits the clock pulses normally used for resetting the various registers in that processor.
  • the processor is frozen in the particular state it was in when the bistable element was placed in a SET condition.
  • Selective control of the states of this bistable element in response to instructions obtained by another processor, in combination with transfers of data to and from the other processor can be used to exercise and check the frozen processor on a per cycle or a per instruction basis.
  • the frozen processor can be preset with specific address information and caused to execute a specific sequence of program orders to verify the proper operation of the processor.
  • an instruction obtained from memory by one processor is decoded in a plurality of processors to achieve simultaneous execution of cooperative or independent data processing functions by both processors responsive to the instruction.
  • the transmission buses within each processor for communicating between registers and data processing circuits of that processor are interconnected by selectively operable gating arrangements to permit speedy transfer of information between the processors.
  • FIG. 1 is a block diagram which shows a switching network. the peripheral access circuits and a temporary memory access circuit I400 of a communications switching system which is an illustrative embodiment of a system environment in which the present invention advantageously can be employed;
  • FIGS. 25 comprise a schematic diagram of one program controlled main processor 2000
  • FIGS. 6-10 comprise a schematic diagram of another program controlled main processor 2001 and its associated memory access 1401;
  • FIGS. [1-12 represent auxiliary wired logic processors 6000 and 6001'
  • FIG. 13 is a block diagram showing an illustrative multiprocessor organized in accordance with the invention.
  • FIG. 14 is a keysheet showing the arrangements of FIGS. 1-12 above.
  • FIG. 13 is a skeletonized block diagram showing only those parts of the Processors 2000 and 2001 which are pertinent to the invention. Two identical Processors 2000 and 2001 are shown, each having access to a memory 3000 and 3001, respectively. Since the Processors 2000 and 2001 are identical, portions of the following description relate only to one of the Processors 2000, it being understood that it is similarly applicable to the other Processor 2001.
  • Control Circuit 7000 which includes timing and logical gating circuitry. Control Circuit 7000 provides properly sequenced control signals to the Data Processing Execution and Register circuits 8000, which perform the data processing functions needed to execute the operation defined by the instruction in P0 register 5010, The Data Processing Execution and Register circuits 8000 communicate selectively with each other over Program Gating Bus 2020, as needed, under control of the control signals from Control Circuit 7000.
  • each of the Processors 2000 and 2001 selectively obtain instructions from the Memories 3000 and 3001 in sequence according to the results of data processing operation and the order in which the instructions are stored in the respective Memories 3000 and 3001, as is well known in the art. All of the above functions and elements are well known and no detailed description thereof is presented at this time. A more detailed description of certain ofthe aforenoted functions and elements is given later herein.
  • Each of the Processors, e.g., 2000 also includes an External Command Translator, e.g., 9000, which is directly connected to the PO register, e.g., 5011, of the other Processor, e.g., 2001. Additionally, the EC translator, e.g., 9000, of each Processor, e.g., 2000, is connected via an enable lead. e.g., EETO. to the 1C translator, e.g., 5021, ofthe other Processor, e.g., 2001.
  • an enable lead e.g., EETO.
  • An instruction registered in P0 register 5010 in Processor 2000 is decoded by lC translator 5020 which provides in addition to other output signals, a signal on its output conductor EETl, if the instruction is so coded.
  • the signal on EETl enables EC translator 9001 in Processor 2001.
  • EC translator 9001 also decodes the instruction registered in P0 register 5010 and provides output signals defining a data processing operation to be executed in Processor 2001. This defined operation is executed by the Data Processing Execution and Register circuits 8001 in Processor 2001 at the same time the operation defined by the other output signals from [C translator 5020 is executed in Processor 2000.
  • a single instruction obtained by one processor from its memory is employed directly to initiate execution of data processing operations in two data processors. These data processing operations may be similar, indepen dent, or cooperative in terms of the result achieved with respect to the two processors.
  • an inhibit lead e.g. EINHO
  • EINHO connects the EC translator, e.g., 9000, to the Control Circuit, e.g., 7000, in that processor.
  • Activation of this inhibit lead precludes the Control Circuit 7000 from responding to the output signals from [C translator 5020 and also inhibits the generation of clock pulses in Control Circuit 7000 which are employed in resetting the various register circuits of Data Processing Execution and Register circuits 8000.
  • an instruction registered in the PO register 501] of Processor 200] can directly initiate, through EC translator 9000 in Processor 2000, the freezing of all registers in Processor 2000 and inhibit response by Processor 2000 to an instruction registered in P0 register 5010,
  • Program Gating Bus 2020 of Processor 2000 is connected through gating elements 240] to the Program Gating Bus 2021 of Processor 2001.
  • Program Gating Bus 202] of Processor 2001 is connected through gating elements 2400 to the Program Gating Bus 2020 of Processor 2000.
  • Gating elements 2400 when enabled by Control Circuit 7000, transfer the data on Program Gating Bus 202] of Processor 2001 to the Program Gating Bus 2020 of Processor 2000.
  • gating elements 2401 when enabled by Control Circuit 7001, transfer the data on Program Gating Bus 2020 of Processor 2000 to the Program Gating Bus 2021 of Processor 2001.
  • any of the registers of the Data Processing Execution and Register circuits 9000 and 9001 can be transferred from one processor to the other in response to a single instruction obtained from memory by only one processor. This is achieved by the decoding of the single instruction by the [C translator of one processor and the EC translator of the other processor to define the operations needed in both processors to perform the necessary gating functions.
  • the above described multiprocessor organization can be used advantageously to perform the same or different logical operations in difi'erent processors on the same or different data parameters under control ofa single set ofinstructions to one processor.
  • Different processors can be evaluating the same data simultaneously according to different criteria. Where trouble is encountered in one processor, another processor can control and diagnose operations of the proces sor in trouble.
  • One example of such a diagnostic test operation includes the following steps:
  • the first processor freezes the second processor, initializes instruction sequence timing in the second processor, and causes an instruction to be gated into the PO register of the second processor;
  • the first processor causes the second processor to ex ecute the instruction in its PO register
  • the first processor causes the second processor to gate the content of one of its registers to a register in the first processor and performs a check operation to verify proper execution by the second processor of the instruction.
  • test operations can be arranged in a diagnostic program used to evaluate the ability ofa processor to function properly.
  • FIG. 2-13 For purposes of illustration, this invention is described herein in the environment of a communication switching system.
  • a communication switching system is described in the copending application, Ser. No. 868,196, filed Oct. 2 l, I969, by T. M. Quinn and F. S. Vigilante, now U.S. Pat. No. 3,587,060, issued June 22, I97].
  • the system described in the Quinn et al. application employs only a single data processor in combination with a wired logic processor to provide for system control functions.
  • the system contemplated herein employs two identical synchronized data processors and wired logic processors for reliability purposes. Only one processor, the on-line processor, is in control of the system at any given time. The other processor, the off-line processor, under most conditions receives identical input data and instructions as the on-line processor and thus is maintained in synchronous step with the on-line processor. Matching arrangements, not shown or described herein, are used to compare data obtained simultaneously from both processors to insure proper operation of the system.
  • the communication switching system shown herein serves local Subscriber Lines I00, lOl and Trunks l2l, 122 to distant offices. in serving the local lines and the trunks, call signaling information originating with both the lines and the trunks must be detected and interpreted and appropriate control actions initiated in accordance therewith. in addition to the input information which originates with the lines and the trunks, the illustrative switching system receives data from a plurality of data sources and is arranged to transmit data to a corresponding plurality of data users.
  • the two major sources of input information comprise the Scanners 130, 131, I05 and data receivers.
  • the output devices employed herein comprise the Peripheral Access Circuit I and a data sender.
  • data transmitted by these arrangements may be utilized in the control of remote switching units and in communication with other switching centers.
  • data is transmitted on a maximum of 32 channels at a rate of approximately 800 bits per channel per second.
  • the data received via the data receiver arrangement and the utilization thereof similarly is not detailed herein but rather it is sufficient to note that such data may comprise information from a remote switching unit or data from a distant switching center.
  • the input and output functions of the illustrative switching system may be classified in accordance with the rate at which such functions occur and the precision with which such functions must be correlated with the passage of time.
  • the functions which require the highest repetition rate and the highest degree of timing precision are performed by the wired logic input-output arrangements 6000 and 600l. This results in substantial savings in complexity and in time in the operation of the Processors 2000 and 2001.
  • a basic machine cycle of 3 microseconds is employed.
  • the Clock 504 generates eight phases of clock pulses. Each clock pulse has a duration of 0.75 microseconds and the clock pulses overlap each other by one-half ofthe clock pulse period or 0.375 microseconds.
  • Certain of the instructions of the instruction set executed by the Processor 200 require only 3 microseconds for execution.
  • Other instructions of the instruction set perform more complex operations and require a number of 3-microsecond machine cycles for their execution. The number of machine cycles varies from two through six. Instructions which require access to the Memory 20! and the Peripheral Access Circuit 120 require a maximum of four machine cycles l2 microseconds) for execution.
  • the Wired Logic Processor 600 utilizes the clock pulses generated by the Clock Circuit 504 and in addition generates timing sequences which are discretely related to the jobs assigned to the Wired Logic Processor 600.
  • the Processor 200 and the Wired Logic Processor 600 share a Temporary Memory 201.
  • the Wired Logic Processor 600 requires 12 microseconds for the completion ofits tasks which require access to the Temporary Memory 201.
  • the Program Controlled Processor is precluded from accessing the Temporary Memory 20l for a period of l2 microseconds. Accordingly, under certain conditions, the Program Controlled Processor may be forced to sit in an idle state for a period of time up to 9 microseconds. while waiting for access to the shared Temporary Memory 20 l.
  • a program memory word comprises 22 bits.
  • the word structure employed herein comprises full word length instructions and half word length instructions, and each program memory word may contain one full word length or two half word length instructions.
  • the full word length instructions generally comprise a 5-bit operation code accompanied by an address or data, a transfer-allowed bit and, if space permits, a parity bit.
  • Half word length instructions comprise a 5-bit operation code and a 5-bit address code. The remaining two bits of the 22-bit memory word are used for the transfer-allowed bit and the parity bit.
  • the S-bit address code of a half word length instruction is used to denote a value or a modifier. For example, a value associated with a rotate instruction specifies the amount of rotation.
  • a modifier associated with a gating operation specifies the source and destination register combination.
  • the transfer-allowed bit is used to detect illegal transfers and serves to indicate hardware faults as well as program faults.
  • the instructions are loaded in memory subject to the restriction that each full word length instruction be as signed a new memory address location.
  • a half word length nooperation (NO-OP) instruction is inserted where necessary to adjust the word boundaries such that each full word length instruction will be stored in a new address location.
  • the operation of logic circuitry within the Program Controlled Processor 200 is generally synchronous and under control of the Clock Circuit 504. As mentioned earlier, this circuit generates clock signals which define a basic 3-microsecond machine cycle. However, the rate at which instructions can be fetched from the Program Store is once every 6 microseconds. The majority of half word length instructions require one 3- microsecond cycle for execution, so that in many instances two half word length instructions may be executed during a 6 microsecond memory reading period. In the illustrative system, full word length instructions and certain half word length instructions require two or more B-microsecond cycles for execution. The number of cycles required for each instruction ranges from I through 6. The fetching of instructions from the Program Memory 300 and the moving of instructions and data within the Program Controlled Processor 200 are discussed herein with reference to FIGS.
  • the Program Controlled Processor 200 There are two flip-flop registers within the Program Controlled Processor 200 which are associated with communications with the Program Memory 300, namely, the 18-bit PA register 304 and the 22-bit PSB register 306.
  • the contents of the PA register 304 define the memory location to be accessed and the PS8 register 306 stores instruction words or data obtained from the Program Memory 300 or data to be written into that memory.
  • the PA register 304 is connected to the Program Memory 300 via Cable 307.
  • the PSB register 306 is connected to the Program Memory 300 via Cable 326. Instruction words are normally read from the program memory in sequence. Hence the contents of the PA register 304 are normally incremented by l prior to the reading of the next instruction. This is done under control ofthe PA logic 305.
  • the instruction repertoire includes a variety of transfer instructions which cause a transfer address to be gated into the PA register 304.
  • the transfer address may be obtained from various sources within the Program Controlled Processor 200.
  • the minimum time interval between successive readings of the Program Memory 300 is 6 microseconds. It is desirable that this entire time be available to execute the instructions read from the memory. For this reason the PO register 50l is provided in addition to the PSB register 306. At a predetermined time of the basic machine cycle the contents of the PSB register 306 are gated to the PO register 50l, via AND gates 510 and 5l2, for decoding. Thereafter, the contents of the PA register 304 are incremented by "l" and the newly generated memory address is transmitted to the Program Memory 300 to obtain the next instruction in sequence. In case the instruction in the PO register 501 is a transfer instruction, the transfer address rather than the next sequential address must be used in obtaining the next instruction from the Program Memory 300.
  • the contents of the PSB register 306 will be discarded.
  • both half word length instructions are gated into the 22-bit PO register 50].
  • the half word length instruction stored in the left-hand half of the PO register 501 is always executed first.
  • the contents of the right-hand half of the P register 50l are gated into the left-hand half of the same register via AND gate l4.
  • the next instruction or pair of instructions is gated from the PSB register 306 into the PO register 50l.
  • An instruction in the PO register 501 is decoded by means of the Command Translator 502, which produces output signals unique to the instruction found in the PO register 50!.
  • the output signals of the Command Translator 502 are combined in the Order Combining Gate Circuit 505 with output signals of the Clock Circuit 504, the Sequence Circuit 506, and the Read and Regenerate Control 503. It is the output signals of the Order Combining Gate Circuit 505 which control the gating actions and logical operations taking place within the Program Controlled Processor 200 and, in certain cases, within the Wired Logic Processor 600.
  • the Sequence Circuit 506 serves to control the access to the Program Memory 300. Since the various program instruction words require a varying number of 3-microsecond machine cycles for their execution, a circuit must be provided to keep track of the number of cycles yet remaining for execution of a particular instruction in order that new instructions may be obtained from the Program Memory 300 at the correct time.
  • the Sequence Circuit 506 has been provided for this purpose. This circuit is initialized by each instruction and it produces output signals which indicate to the Order Combining Gate Circuit 505 that the next instruction or pair ofthe instructions must be prepared for execution.
  • the Read and Regenerate Control 503 generates timing signals for use by the Order Combining Gate Circuit 505 in the generation of signals required for the reading of data from the Temporary Memory l. the regeneration of memory cells which have been read, and the writing of data into the Temporary Memory 20l. The cooperation of the Program Controlled Processor 200 with the Memory Access 140 will be described later herein.
  • the Program Controlled Processor 200 contains a plurality of flip-flop registers.
  • the content of any one register can be gated to any other register in the processor.
  • This transfer of information is accomplished by means of the Program Gating Bus 202 which also extends to the Wired Logic Processor 600.
  • an output gate connected to the source register and an input gate connected to the destination register are both activated.
  • AND gates 3l5 and 3l2 are activated.
  • Many of the processor's registers are used primarily for specific functions; however, they are not limited to such use.
  • Temporary Memory 201 is responsive to clock signals generated by the Clock Circuit 504 and to read and write signals. There are two read conductors, RCSDO and RCSGR. A signal on the first conductor causes the memory location specified by the contents of the CSA register 142 to be read and the data to be transmitted to the DO register 604 via Conductor 241. A signal on the second conductor causes the memory to be read and the data to be transmitted to the GR register 203 via Conductor 240.
  • a 16-bit address may be transmitted from either the AA register 302 or the CA register 303 to the CSA register I42 via the Program Gating Bus 202, AND gate 23l, OR gate M4, and either AND gate 3 l 5 or 316.
  • Data to be written into the Tern porary Memory 20! may be gated to the CSI register l4l from GR register 203 via AND gate 232 and OR gate 143, or from other registers by means of the Program Gating Bus 202, AND gate 233, and OR gate 143.
  • the Temporary Memory 20l is a destructive readout memory. Any memory location which is read by the processor must be regenerated to preserve the data for subsequent reading operations.
  • the Temporary Memory 20l does not contain flip-flop registers for storing the data to be held for regeneration. Instead, data read from the memory is gated into either the GR register 203 or the DO register 604 and regeneration data is obtained from the CSI register l4].
  • a sufficient period of time is allowed between the reading and regeneration that the read data can be gated to the CSI register I41 from either the GR register 203 or the DO register 604.
  • Certain instructions of the instruction repertoire of the Program Controlled Processor 200 take advantage of this period of time between the reading and regenerating to alter the data which is used for the regeneration. For example, one instruction causes the contents of the memory location specified by the address in the AA register 302 to be read into the GR register 203, causes the contents of the GR register 203 to be logically combined with the contents of the LR register 204. and causes the logical result to be gated to the CSI register l4] before regeneration takes place.
  • the LR register 204. the LF register 205, the LM register 206, and the LW register 207 are used in conjunction with instructions which perform a variety of logical operations.
  • the Logic Function Circuit 220 is employed by these instructions and generally the contents of the GR register 203 and of the LR register 204 are combined in accordance with the logical function specified by the contents of the LF register 205.
  • the contents of the LM register 206 are used in the logic function to selectively mask certain bits such that the logic function will be performed only on those bits of the input words for which there exists a 1" in the LM register 206, and a 0" will be generated for all bits for which there exists a 0" in the LM register 206.
  • the resultant data word generated by the Logic Function Circuit 220 is gated to the LW register 207 via the Program Gating Bus 202 and AND gates 234 and 235. If it is desired that the bits on which a logic function has been performed be returned to the GR register 203 but that all other bits of GR register 203 not be disturbed, the Insertion Mask Circuit 208 is employed.
  • This selective insertion into the GR register is accomplished by single rail gating the l side of each bit of the LW register 207 to the GR register 203 via the Program Gating Bus 202 and the appropriate AND gates, and simultaneously combining the contents of the LM register 206 and the side of each bit of the LW register 207 and gating the result to the clear side of each bit of the GR register 203 via AND gate 236.
  • a l is written into each bit of the GR register 203 for which there was a in the LW register 207
  • a 0" is written in each bit of the GR register for which there exists a l in the LM register 206 and a 0" in the LW register 207.
  • the Sum Rotate Circuit 301 is a logic circuit which is used for several purposes. This circuit may be used to rotate the contents of any register by a specified amount by gating the contents of the desired register to the Sum Rotate Circuit 301 via the program gating bus, and by gating the rotated result back to the register from which the data originated.
  • the Sum Rotate Circuit 301 is also used to add the contents of the GR register 20] and the AA register 302. The result may then be placed in any desired register. A specified number may also be added to the contents of either the AA or the GR register by means of the Sum Rotate Circuit 30l.
  • the PA register comprises 18 bits which form an 18-bit address for the Program Memory 300, and that each memory word comprises 22 bits.
  • a 22-bit memory word has space for at most a 16-bit address in addition to the required 5-bit instruction code and a check bit. Therefore, a transfer instruction needs two bits in addition to the 16-bit address which is stored in the instruction word.
  • certain bits of the Transfer Buffer 400 have been provided. When a transfer is to take place, two bits are obtained from the Transfer Buffer 400 in addition to the 16-bit address. It is, of course, a prerequisite that the appropriate bits of the transfer buffer be loaded before the transfer instruction is executed. This loading may be accomplished by ordinary data handling instructions. The significance and use of each of the bits of the Transfer Buffer 400 are discussed in the aforenoted Quinn et al. application.
  • Execution of a program may be interrupted to begin execution of other programs in response to interrupt signals generated by the Interrupt Register 520.
  • This register comprises a plurality of interrupt flip-flops each of which is assigned a discrete priority level.
  • Interrupt programs are stored in the Program Memory 300 which are uniquely associated with each of the interrupt flip-flops.
  • the Interrupt Register 520 further comprises circuitry for generating interrupt signals which indicate the priority level of the desired interrupt.
  • the Order Combining Gate Circuit 505 is responsive to the interrupt signals to selectively initiate transfers to the interrupt programs in the Program Memory 300. Such transfers are initiated by jamming an interrupt instruction into the P0 register 50l upon completion of the instruction being executed.
  • the interrupt instruction stores the contents of the PA register 304 and the Transfer Buffer 400 in predetermined locations of the Temporary Memory 201 and inserts a transfer address into the PA register 304.
  • the value of the transfer address is a function of the level of interrupt being executed. Thereafter the appropriate interrupt program is executed. interrupt programs are executed in accordance with the priority levels of the interrupt flip-flop associated with the program. Accordingly, higher level interrupts are completed before lower level interrupts are initiated. However, a higher level interrupt may interrupt a lower level interrupt program.
  • Certain of the flip-flops of the interrupt Register 520 are set in response to error signals from the Error Detector 52l when errors are detected within the Program Controlled Processor 200. For example, such error signals are generated in case ofa parity error in a reading from a Program Memory 300.
  • One of the interrupt flip-flops is set in response to signals on the 25MS conductor. These last-named signals are generated by a Timing Counter in the Wired Logic Processor 600 and occur approximately once every 25 milliseconds. These timed interrupts provide for the initiation of execution of certain programs on a periodic basis.
  • Program Gating Bus 2020 of Processor 2000 is connected to Program Gating Bus 2021 in Processor 200] through gate 2401 in Processor 2001.
  • Gating Bus 202] in Processor 2001 is connected to Gating Bus 2020 in Processor 2000 through gate 2400 in Processor 2000.
  • This cross-coupling of the gating busses 2020 and 2021 of the processors serves as a transmission path for information exchange between the processors 2000 and 2001 by selective enablement of the gates 2400 and 2401 under program controlv
  • Each Processor 2000 and 2001 includes an External Command Translator 9000 and 9001 respectively.
  • EC translator 9000 in Processor 2000 is connected directly to the output of PO register 5011 in processor 2001.
  • EC translator 9001 in Processor 2001 is connected directly to the output of PO register 5010 in Processor 2000.
  • One output lead from each lC translator 5020 and S021 is connected to the EC translator 9001 and 9000 in the other processor.
  • Lead EETl connects lC translator 5020 in Processor 2000 to EC Translator 9001 in Processor 2001v
  • lead EETO connects lC Translator 5021 in Processor 2001 to EC Translator 9000 in Processor 2000.
  • an instruction coded in a particular manner causes both an IC Translator and an EC Translator in the other processor to decode the instruction and provide controlling output signals to both OCG circuits. Control signals are then appropriately provided in both processors to cause cooperative execution of the instruction.
  • Each Processor 2000, 2001 includes an inhibit flip-flop lNHO, lNHl whose states start and stop data processing operations in the respective processors.
  • the inhibit flip-flop lNl'll is controlled by signals from OCG circuit 5051 on conductors SINH and RlNHl. These signals are provided by OCG circuit 5051 in response to a specific output signal from EC translator 9001 when an instruction in P0 register 5010 is appropriately coded.
  • inhibit flip-flop [NH] applies an inhibit signal to Clock Circuit 5041 and to 1C Translator 5021.
  • lC Translator 502l provides no output signals and Clock Circuit 5041 provides no timing signals for resetting the various registers in the Processor 2001.
  • the instruction EXC when registered in P0 register 5010, causes the inhibit flip-flop lNl-ll in the other processor 2001 to be RESET. This permits the other processor 2001 to execute whatever instruction is then present in its P0 register 5011.
  • the instruction EXC still registered in the controlling processor 2000, then causes the inhibit flip-flop [M11 in the other processor 2001 to be SET.
  • execution of instruction EXC causes the other processor 2001 to be stepped through a program one instruction at a time with provision for analysis of the results by the controlling processor 2000 between steps.
  • ZOINH and 501MB can be used in the controlling processor to step the other processor through a sequence of operations one cycle at a time, as opposed to one instruction at a time. This permits detailed analysis of multicycle instruction execution in the other processor by the controlling processor.
  • the instruction repertoire of the illustrative system comprises the following instructions:
  • bit of the Transfer Buffer 400 is ()tr easier to address in the PA register 304 modified by 5-bit address specified by the instruction; if bit ID of the Transfer Bufi'er 400 is l transfer to address in the PA register 304 modified by contents of bits I l through of the Transfer Buffer 400 and the 5-bit address specified by the instructionv Transfer to address specified by the instruction and bits PFHZ and PFH3 ofa Transfer Buffer 400.
  • End program interrupt restore Transfer Buffer 400 with information from predetermined address of Temporary Memory 20].
  • restore PA register 304 with information from predetermined address of Temporary Memory 201 and contents of bits RAPG and RAP? of the Transfer Buffer 400. and transfer to new address in the PA register 304.
  • bit CF8 is advance to next sequential address.
  • Test Instructions Description These two instructions test the lower four bits of the GR register 203 for the all ls" and all 0'5" condition. respectively. and set bit CF8 of the Transfer Buffer 400 if the condition is met.
  • Test GR register 203 for all "0's" condition and set hit CF8 if condition is met.
  • Test LW register 207 for all "0's" condition and set bit CF8 if condition is met.
  • This instruction reads a plurality of locations of the Temporary Memory 20l in sequence, combines the read information with the contents of the LR register 204 as specified by LF register 205 and LM register 206. places the result in the UN register 207, and performs an all "0 test on the contents of the LW register. If the desired result is not found, the instruction modifies the read information. writes it into the location from which it was read reads the next sequential word from the Temporary Memory 201. and performs the same logical operations. Options of the instruction specify whether the desired condition is the all "(1" condition or the not all "0 condition of the LW register 207. The number oflocations to be so examined is specified by the count in the KR counter 522. This count is decremented each time a word is read from memory and the program advances when the count of! is reached.
  • GR register 203 Logically combine GR register 203 with LR register 204 as specified by LF register 205 and LM register 206, place result in LW register 207, perform all "0" test on LW register 20'! and set bit CF8 of Transfer Buffer 400 if the all "0 condition is found. Besides being gated to the LW register 207 the result may optionally be insertion masked into the GR register 203 as previously explained in this description.

Abstract

Disclosed herein is a multiprocessor control for a communications switching system wherein an instruction stored in the program order register of one processor is decoded both within that processor and within another processor to initiate and control cooperative data processing operations in both processors. Data and control information is exchanged between processors by means of cross-coupled gating buses which are employed within each respective processor for communication among its own registers and data processing functional circuits.

Description

United States Patent Nussbaum et a1.
[ 1 July 18, 1972 [54] MULTIPROCESSOR WITH COOPERATIVE PROGRAM EXECUTION [72] Inventors: Fz'ic Nu-haurn, St Charles; Wing Noon Toy, Glen Ellyn, both of 111.; Melvin Nell Woimky, Dover, NJ.
[73] Assignee: Deli Telephone Laboratories Incorporated,
Murray Hill, NJ.
[22] Filed: Oct. 20, 1970 [21] App1.No.: 82,354
[52] U.S.Cl ..340/172.5 [51] Int-Cl. ..G06fl5/l6 [58] FleldotSeu-eh ..340/l72.5
[56] References Cited UNITED STATES PATENTS 3,287,705 11/1966 Rosenblatt et a1. ..340/l72.5 3,303,474 2/1967 Moore et a1. 3,312,951 4/1967 Hertz ..340/172.5
3,374,465 3/ 1968 Richmond et a1 ..240/172.5 3,444,528 5/1969 Lovell et a1. .....340/172.5 3,480,914 11/1969 Schlaeppi .....340/172.5 3,517,174 6/1970 Ossfeldt .340/172.5 X 3,566,357 2/1971 Ling.......... .....340/172.5 3,238,506 3/1966 Jung et al ..340/172.5
Primary Examiner-Paul J. Henon Am'slanr Examiner-Sydney R. Chirlin Attorney-R. J. Guenther and R. B. Ardis ABSTRACT 18 Claims, 14 Drawing Figures PI 1 r PORO 1-50) sou PORI 2021 1cm 5020 2020 G80 7 5021 1cm P680 1 P651 IHPCO a I I l IHPCI /7000 cogn DPOER b DPER com I L 7001 v 1 some 8001 i EINHD EINHI 2 100 21i0| I ECTO 9000 90m I] [EETO E-EH l l 1 l a 1 PATENTEB JUL 1 8 m2 SHEET WIRED LOGIC PROCESSOR FIG. /2
MULTIPROCESSOR WITII COOPERATIVE PROGRAM EXECUTION BACKGROUND OF THE INVENTION l. Field of the Invention This invention is concerned with program controlled multiprocessor systems wherein an instruction obtained by one processor from memory can be executed in both the processor obtaining the instruction and in another processor. This arrangement is of particular but not exclusive interest to multiprocessor systems in which one processor controls both itself and another processor to diagnose troubles detected in the operation of the other processor.
2. Description of the Prior Art Multiprocessor systems often are employed in system environments requiring extremely high reliability of operation. An example of such a system environment is the use of a multiprocessor as the control element for an industrial process or a communications switching system. Often, in such an environment. a plurality of processors are synchronously operated in accordance with identical programs and input data with only one on-line processor exerting system control at any given time. The other off-line processor or processors are used to check the operation of the processor in control by means of matching arrangements which verify the equivalence of data flow and processing results within all the processors. In the event of a detected error, system control can be transferred from one processor to another thereby insuring continuous operation of the overall system.
In multiprocessor systems, to coordinate system functions it is advantageous to provide for information transfer between the respective processors of the system. Such information can be employed to control selectively the accessability of the respective processors to various other system elements such as memory and input/output elements. Such information also can be employed for communication between programs being run cooperatively on more than one processor. In high reliability multiprocessors employing redundant control capability, such as those mentioned above, information can be trans ferred from the processor in control of the system to other processors to control diagnostic testing of a faulty processor. All of the above is disclosed in the copending application of R. W. Downing, F. F. Taylor, H. F. May, and W. Ulrich, Ser. No. 334,875, filed Dec. 31, I963, now US. Pat. No. 3,570,008, issued Mar. 9, 197 l which describes a program controlled communication switching system.
In most multiprocessor arrangements data transfer between processors is implemented by means of a buffer memory accessible to both processors. Often this is accomplished by use of a specially designated area of memory which is reserved for transfer of information between processors. In this type of arrangement, each processor must be independently capable of accessing memory. Where a processor is in trouble and unable to access memory in the usual way, it is necessary for the other processor to direct control signals to both the memory and the processor in trouble so that information read from a specified memory location will be accepted by the processor in trouble. This arrangement for inter-processor communication requires substantial special circuitry and additionally employs a number of memory read and write cycles to achieve the inforrnation transfer. Such an arrangement is disclosed in the aforenoted Downing et al. application.
SUMMARY OF THE INVENTION In accordance with this invention, the program order register of one processor in a multiprocessor system is connected to command translators in a plurality of processors in the multiprocessor system. Instructions can be decoded in more than one processor and can be executed cooperatively in more than one processor at the same time. The decoding function in all processors of a particular instruction is not necessarily identical. Thus, in response to a single instruction obtained from memory by one processor, a plurality of processors simultaneously can perform similar or different data processing functions.
In each data processor the data processing circuits and the registers, which store the data upon which data processing functions are executed by means of the data processing circuits, are each connected to a program gating bus. This provides bidirectional communication access to and from all registers and data processing circuits by way of the program gating bus within one processor. The program gating bus of each processor is connected through controllable gating elements to the program gating bus of the other processor or processors. This provides a transmission path by means of which data can be transferred selectively from any register in one processor to any register in another processor. Thus, data can be transferred directly between processors without resorting to time consuming special read and write operations with respect to a common memory. The provision ofa connection between the program order register of one processor and the command translator of another processor permits a single instruction obtained by one processor to define and initiate the different gating operations within both processors which provide for the transfer of information from a specified register in one proces sor to a specified register in the other processor.
Each processor includes a bistable element which, when in one stable state, e.g., SET, blocks outputs of the command translator of that processor and inhibits the clock pulses normally used for resetting the various registers in that processor. In order words, the processor is frozen in the particular state it was in when the bistable element was placed in a SET condition. Selective control of the states of this bistable element in response to instructions obtained by another processor, in combination with transfers of data to and from the other processor, can be used to exercise and check the frozen processor on a per cycle or a per instruction basis. Also, the frozen processor can be preset with specific address information and caused to execute a specific sequence of program orders to verify the proper operation of the processor.
It is an object of this invention to facilitate the transfer of in formation between the respective processors of a multiproces sor.
It is a further object of this invention to increase the flexibility and speed of the operations within a multiprocessor system with respect to control of one processor by another processor.
In accordance with one feature of this invention, an instruction obtained from memory by one processor is decoded in a plurality of processors to achieve simultaneous execution of cooperative or independent data processing functions by both processors responsive to the instruction.
In accordance with another feature of this invention, the transmission buses within each processor for communicating between registers and data processing circuits of that processor are interconnected by selectively operable gating arrangements to permit speedy transfer of information between the processors.
The above and other objects and features of this invention will be more readily understood from the following description when read with respect to the drawings in which:
FIG. 1 is a block diagram which shows a switching network. the peripheral access circuits and a temporary memory access circuit I400 of a communications switching system which is an illustrative embodiment of a system environment in which the present invention advantageously can be employed;
FIGS. 25 comprise a schematic diagram of one program controlled main processor 2000;
FIGS. 6-10 comprise a schematic diagram of another program controlled main processor 2001 and its associated memory access 1401;
FIGS. [1-12 represent auxiliary wired logic processors 6000 and 6001',
FIG. 13 is a block diagram showing an illustrative multiprocessor organized in accordance with the invention; and
FIG. 14 is a keysheet showing the arrangements of FIGS. 1-12 above.
GENERAL DESCRIPTION (FIG. 13)
The multiprocessor organization illustrated in FIG. 13 is a skeletonized block diagram showing only those parts of the Processors 2000 and 2001 which are pertinent to the invention. Two identical Processors 2000 and 2001 are shown, each having access to a memory 3000 and 3001, respectively. Since the Processors 2000 and 2001 are identical, portions of the following description relate only to one of the Processors 2000, it being understood that it is similarly applicable to the other Processor 2001.
Instructions obtained from Memory 3000 by Processor 2000 are registered in Program Order Register 5010. An instruction registered in P register 5010 is decoded by Internal Command Translator 5020 which provides discrete output signals defining a data processing operation to be executed in Processor 2000. These signals are applied to Control Circuit 7000, which includes timing and logical gating circuitry. Control Circuit 7000 provides properly sequenced control signals to the Data Processing Execution and Register circuits 8000, which perform the data processing functions needed to execute the operation defined by the instruction in P0 register 5010, The Data Processing Execution and Register circuits 8000 communicate selectively with each other over Program Gating Bus 2020, as needed, under control of the control signals from Control Circuit 7000. It is to be understood, although not shown, that each of the Processors 2000 and 2001 selectively obtain instructions from the Memories 3000 and 3001 in sequence according to the results of data processing operation and the order in which the instructions are stored in the respective Memories 3000 and 3001, as is well known in the art. All of the above functions and elements are well known and no detailed description thereof is presented at this time. A more detailed description of certain ofthe aforenoted functions and elements is given later herein.
Each of the Processors, e.g., 2000, also includes an External Command Translator, e.g., 9000, which is directly connected to the PO register, e.g., 5011, of the other Processor, e.g., 2001. Additionally, the EC translator, e.g., 9000, of each Processor, e.g., 2000, is connected via an enable lead. e.g., EETO. to the 1C translator, e.g., 5021, ofthe other Processor, e.g., 2001. An instruction registered in P0 register 5010 in Processor 2000 is decoded by lC translator 5020 which provides in addition to other output signals, a signal on its output conductor EETl, if the instruction is so coded. The signal on EETl enables EC translator 9001 in Processor 2001. Upon enablement thereof, EC translator 9001 also decodes the instruction registered in P0 register 5010 and provides output signals defining a data processing operation to be executed in Processor 2001. This defined operation is executed by the Data Processing Execution and Register circuits 8001 in Processor 2001 at the same time the operation defined by the other output signals from [C translator 5020 is executed in Processor 2000. Thus, a single instruction obtained by one processor from its memory is employed directly to initiate execution of data processing operations in two data processors. These data processing operations may be similar, indepen dent, or cooperative in terms of the result achieved with respect to the two processors.
In each of the data Processors, e.g., 2000, an inhibit lead, e.g. EINHO, connects the EC translator, e.g., 9000, to the Control Circuit, e.g., 7000, in that processor. Activation of this inhibit lead, for example, EINHO, precludes the Control Circuit 7000 from responding to the output signals from [C translator 5020 and also inhibits the generation of clock pulses in Control Circuit 7000 which are employed in resetting the various register circuits of Data Processing Execution and Register circuits 8000. Thus, an instruction registered in the PO register 501] of Processor 200] can directly initiate, through EC translator 9000 in Processor 2000, the freezing of all registers in Processor 2000 and inhibit response by Processor 2000 to an instruction registered in P0 register 5010,
Program Gating Bus 2020 of Processor 2000 is connected through gating elements 240] to the Program Gating Bus 2021 of Processor 2001. Similarly, Program Gating Bus 202] of Processor 2001 is connected through gating elements 2400 to the Program Gating Bus 2020 of Processor 2000. Gating elements 2400, when enabled by Control Circuit 7000, transfer the data on Program Gating Bus 202] of Processor 2001 to the Program Gating Bus 2020 of Processor 2000. Similarly, gating elements 2401, when enabled by Control Circuit 7001, transfer the data on Program Gating Bus 2020 of Processor 2000 to the Program Gating Bus 2021 of Processor 2001. Thus, the information in any of the registers of the Data Processing Execution and Register circuits 9000 and 9001 can be transferred from one processor to the other in response to a single instruction obtained from memory by only one processor. This is achieved by the decoding of the single instruction by the [C translator of one processor and the EC translator of the other processor to define the operations needed in both processors to perform the necessary gating functions.
The above described multiprocessor organization can be used advantageously to perform the same or different logical operations in difi'erent processors on the same or different data parameters under control ofa single set ofinstructions to one processor. Different processors can be evaluating the same data simultaneously according to different criteria. Where trouble is encountered in one processor, another processor can control and diagnose operations of the proces sor in trouble. One example of such a diagnostic test operation includes the following steps:
1. The first processor freezes the second processor, initializes instruction sequence timing in the second processor, and causes an instruction to be gated into the PO register of the second processor;
2. The first processor causes the second processor to ex ecute the instruction in its PO register;
3. The first processor causes the second processor to gate the content of one of its registers to a register in the first processor and performs a check operation to verify proper execution by the second processor of the instruction. Such test operations can be arranged in a diagnostic program used to evaluate the ability ofa processor to function properly.
GENERAL DESCRIPTION (FIGS. 2-13) For purposes of illustration, this invention is described herein in the environment of a communication switching system. Such a communication switching system is described in the copending application, Ser. No. 868,196, filed Oct. 2 l, I969, by T. M. Quinn and F. S. Vigilante, now U.S. Pat. No. 3,587,060, issued June 22, I97]. Reference can be made to that application for details of the communication functions of the system and the call processing function implementation. The system described in the Quinn et al. application employs only a single data processor in combination with a wired logic processor to provide for system control functions. The system contemplated herein employs two identical synchronized data processors and wired logic processors for reliability purposes. Only one processor, the on-line processor, is in control of the system at any given time. The other processor, the off-line processor, under most conditions receives identical input data and instructions as the on-line processor and thus is maintained in synchronous step with the on-line processor. Matching arrangements, not shown or described herein, are used to compare data obtained simultaneously from both processors to insure proper operation of the system.
Since two identical processors are contemplated herein, the designations given to the elements ofthe respective processors have been coordinated. The last digit of a designation in dicates the processor in which the element so designated is contained. The preceding digits or letters define the nature of the element. For example, both Program Order Registers are labeled with designations having 50l as their first three digits. The last digit, either or 1, specifies the Processor 2000 or 2001 in which the particular Program Order Register is contained. Thus PO register 5010 is in Processor 2000 and PO register 50 is in Processor 2001. Where the descriptions herein relate to both processors generically, only the initial digits or letters of a designation are used. For example, in describing the general operations of the data processors of the system, reference is made to a PO register as S0l.
The communication switching system shown herein serves local Subscriber Lines I00, lOl and Trunks l2l, 122 to distant offices. in serving the local lines and the trunks, call signaling information originating with both the lines and the trunks must be detected and interpreted and appropriate control actions initiated in accordance therewith. in addition to the input information which originates with the lines and the trunks, the illustrative switching system receives data from a plurality of data sources and is arranged to transmit data to a corresponding plurality of data users.
The two major sources of input information comprise the Scanners 130, 131, I05 and data receivers. The output devices employed herein comprise the Peripheral Access Circuit I and a data sender.
The nature of the data which is transmitted via the data sender and the generation of this data will not be considered in detail herein. It is sufficient to note that data transmitted by these arrangements may be utilized in the control of remote switching units and in communication with other switching centers. In the illustrative embodiment of this invention data is transmitted on a maximum of 32 channels at a rate of approximately 800 bits per channel per second. The data received via the data receiver arrangement and the utilization thereof similarly is not detailed herein but rather it is sufficient to note that such data may comprise information from a remote switching unit or data from a distant switching center.
The input and output functions of the illustrative switching system may be classified in accordance with the rate at which such functions occur and the precision with which such functions must be correlated with the passage of time. The functions which require the highest repetition rate and the highest degree of timing precision are performed by the wired logic input-output arrangements 6000 and 600l. This results in substantial savings in complexity and in time in the operation of the Processors 2000 and 2001.
In a system in which the functions which are performed with a high degree of timing precision are implemented by means of a stored program processor, substantial time is expended in monitoring function clocks or in executing program interrupts which are initiated in accordance with such function clocks. For example, in one prior art telephone switching system program interrupts occur at 5 millisecond intervals to assure orderly and timely completion of input-output work functions e.g., dial pulse detection, dial pulse sending). in this prior art system there is no provision for data sending and receiving apart from the call signaling information occurring on subscriber lines and on trunk circuits. In the present system, interrupts, other than maintenance interrupts, occur once every milliseconds rather than at the prior rate of once every 5 to ID milliseconds.
A basic machine cycle of 3 microseconds is employed. The Clock 504 generates eight phases of clock pulses. Each clock pulse has a duration of 0.75 microseconds and the clock pulses overlap each other by one-half ofthe clock pulse period or 0.375 microseconds. Certain of the instructions of the instruction set executed by the Processor 200 require only 3 microseconds for execution. Other instructions of the instruction set perform more complex operations and require a number of 3-microsecond machine cycles for their execution. The number of machine cycles varies from two through six. Instructions which require access to the Memory 20! and the Peripheral Access Circuit 120 require a maximum of four machine cycles l2 microseconds) for execution.
The Wired Logic Processor 600 utilizes the clock pulses generated by the Clock Circuit 504 and in addition generates timing sequences which are discretely related to the jobs assigned to the Wired Logic Processor 600. The Processor 200 and the Wired Logic Processor 600 share a Temporary Memory 201. The Wired Logic Processor 600 requires 12 microseconds for the completion ofits tasks which require access to the Temporary Memory 201. Whenever the Wired Logic is afforded access to the Temporary Memory 201, the Program Controlled Processor is precluded from accessing the Temporary Memory 20l for a period of l2 microseconds. Accordingly, under certain conditions, the Program Controlled Processor may be forced to sit in an idle state for a period of time up to 9 microseconds. while waiting for access to the shared Temporary Memory 20 l.
PROGRAM CONTROLLED PROCESSOR 200 A program memory word comprises 22 bits. The word structure employed herein comprises full word length instructions and half word length instructions, and each program memory word may contain one full word length or two half word length instructions. The full word length instructions generally comprise a 5-bit operation code accompanied by an address or data, a transfer-allowed bit and, if space permits, a parity bit. Half word length instructions comprise a 5-bit operation code and a 5-bit address code. The remaining two bits of the 22-bit memory word are used for the transfer-allowed bit and the parity bit. The S-bit address code of a half word length instruction is used to denote a value or a modifier. For example, a value associated with a rotate instruction specifies the amount of rotation. A modifier associated with a gating operation specifies the source and destination register combination. The transfer-allowed bit is used to detect illegal transfers and serves to indicate hardware faults as well as program faults. The instructions are loaded in memory subject to the restriction that each full word length instruction be as signed a new memory address location. A half word length nooperation (NO-OP) instruction is inserted where necessary to adjust the word boundaries such that each full word length instruction will be stored in a new address location.
The operation of logic circuitry within the Program Controlled Processor 200 is generally synchronous and under control of the Clock Circuit 504. As mentioned earlier, this circuit generates clock signals which define a basic 3-microsecond machine cycle. However, the rate at which instructions can be fetched from the Program Store is once every 6 microseconds. The majority of half word length instructions require one 3- microsecond cycle for execution, so that in many instances two half word length instructions may be executed during a 6 microsecond memory reading period. In the illustrative system, full word length instructions and certain half word length instructions require two or more B-microsecond cycles for execution. The number of cycles required for each instruction ranges from I through 6. The fetching of instructions from the Program Memory 300 and the moving of instructions and data within the Program Controlled Processor 200 are discussed herein with reference to FIGS. 2 through 5. There are two flip-flop registers within the Program Controlled Processor 200 which are associated with communications with the Program Memory 300, namely, the 18-bit PA register 304 and the 22-bit PSB register 306. The contents of the PA register 304 define the memory location to be accessed and the PS8 register 306 stores instruction words or data obtained from the Program Memory 300 or data to be written into that memory. The PA register 304 is connected to the Program Memory 300 via Cable 307. The PSB register 306 is connected to the Program Memory 300 via Cable 326. Instruction words are normally read from the program memory in sequence. Hence the contents of the PA register 304 are normally incremented by l prior to the reading of the next instruction. This is done under control ofthe PA logic 305. Occasionally it is necessary to break the sequential chain and to make a transfer to a nonsequential address. The instruction repertoire includes a variety of transfer instructions which cause a transfer address to be gated into the PA register 304. The transfer address may be obtained from various sources within the Program Controlled Processor 200.
As mentioned earlier, the minimum time interval between successive readings of the Program Memory 300 is 6 microseconds. It is desirable that this entire time be available to execute the instructions read from the memory. For this reason the PO register 50l is provided in addition to the PSB register 306. At a predetermined time of the basic machine cycle the contents of the PSB register 306 are gated to the PO register 50l, via AND gates 510 and 5l2, for decoding. Thereafter, the contents of the PA register 304 are incremented by "l" and the newly generated memory address is transmitted to the Program Memory 300 to obtain the next instruction in sequence. In case the instruction in the PO register 501 is a transfer instruction, the transfer address rather than the next sequential address must be used in obtaining the next instruction from the Program Memory 300. If the next sequential address has been read, but a transfer is to be executed, the contents of the PSB register 306 will be discarded. When the contents of the PSB register 306 comprises two half word length instructions, both half word length instructions are gated into the 22-bit PO register 50]. The half word length instruction stored in the left-hand half of the PO register 501 is always executed first. Upon completion of execution of the left-hand instruction, the contents of the right-hand half of the P register 50l are gated into the left-hand half of the same register via AND gate l4. Upon completion of execution of this second half word length instruction, the next instruction or pair of instructions is gated from the PSB register 306 into the PO register 50l.
An instruction in the PO register 501 is decoded by means of the Command Translator 502, which produces output signals unique to the instruction found in the PO register 50!. The output signals of the Command Translator 502 are combined in the Order Combining Gate Circuit 505 with output signals of the Clock Circuit 504, the Sequence Circuit 506, and the Read and Regenerate Control 503. It is the output signals of the Order Combining Gate Circuit 505 which control the gating actions and logical operations taking place within the Program Controlled Processor 200 and, in certain cases, within the Wired Logic Processor 600.
The Sequence Circuit 506 serves to control the access to the Program Memory 300. Since the various program instruction words require a varying number of 3-microsecond machine cycles for their execution, a circuit must be provided to keep track of the number of cycles yet remaining for execution of a particular instruction in order that new instructions may be obtained from the Program Memory 300 at the correct time. The Sequence Circuit 506 has been provided for this purpose. This circuit is initialized by each instruction and it produces output signals which indicate to the Order Combining Gate Circuit 505 that the next instruction or pair ofthe instructions must be prepared for execution. The Read and Regenerate Control 503 generates timing signals for use by the Order Combining Gate Circuit 505 in the generation of signals required for the reading of data from the Temporary Memory l. the regeneration of memory cells which have been read, and the writing of data into the Temporary Memory 20l. The cooperation of the Program Controlled Processor 200 with the Memory Access 140 will be described later herein.
As shown in FIGS. 2 through 5, the Program Controlled Processor 200 contains a plurality of flip-flop registers. In general, the content of any one register can be gated to any other register in the processor. This transfer of information is accomplished by means of the Program Gating Bus 202 which also extends to the Wired Logic Processor 600. To transfer data by means of the Program Gating Bus 202 from one register to another, an output gate connected to the source register and an input gate connected to the destination register are both activated. For example, to gate information from the AA register 302 to the CA register 303, AND gates 3l5 and 3l2 are activated. Many of the processor's registers are used primarily for specific functions; however, they are not limited to such use. For example, the AA register 302, the CA register 303, and the GR register 203 are used primarily in communication with the Temporary Memory 201. This communication is via the Memory Access l40. Temporary Memory 201 is responsive to clock signals generated by the Clock Circuit 504 and to read and write signals. There are two read conductors, RCSDO and RCSGR. A signal on the first conductor causes the memory location specified by the contents of the CSA register 142 to be read and the data to be transmitted to the DO register 604 via Conductor 241. A signal on the second conductor causes the memory to be read and the data to be transmitted to the GR register 203 via Conductor 240. There are two WRITE conductors and a signal on either of these conductors causes the contents of the CSI register M1 to be written into the memory location specified by the contents of the CSA register I42. The signals on the RCSDO conductor and one of the WRITE conductors are generated by the Order Combining Gate Circuit 9l2 in the Wired Logic Processor 600 while signals on the RCSGR conductor and the other WRITE conductor are generated by the Order Combining Gate Circuit 505 in the Program Controlled Processor 200. A 16-bit address may be transmitted from either the AA register 302 or the CA register 303 to the CSA register I42 via the Program Gating Bus 202, AND gate 23l, OR gate M4, and either AND gate 3 l 5 or 316. Data to be written into the Tern porary Memory 20! may be gated to the CSI register l4l from GR register 203 via AND gate 232 and OR gate 143, or from other registers by means of the Program Gating Bus 202, AND gate 233, and OR gate 143. The Temporary Memory 20l is a destructive readout memory. Any memory location which is read by the processor must be regenerated to preserve the data for subsequent reading operations. The Temporary Memory 20l does not contain flip-flop registers for storing the data to be held for regeneration. Instead, data read from the memory is gated into either the GR register 203 or the DO register 604 and regeneration data is obtained from the CSI register l4]. A sufficient period of time is allowed between the reading and regeneration that the read data can be gated to the CSI register I41 from either the GR register 203 or the DO register 604. Certain instructions of the instruction repertoire of the Program Controlled Processor 200 take advantage of this period of time between the reading and regenerating to alter the data which is used for the regeneration. For example, one instruction causes the contents of the memory location specified by the address in the AA register 302 to be read into the GR register 203, causes the contents of the GR register 203 to be logically combined with the contents of the LR register 204. and causes the logical result to be gated to the CSI register l4] before regeneration takes place.
The LR register 204. the LF register 205, the LM register 206, and the LW register 207 are used in conjunction with instructions which perform a variety of logical operations. The Logic Function Circuit 220 is employed by these instructions and generally the contents of the GR register 203 and of the LR register 204 are combined in accordance with the logical function specified by the contents of the LF register 205. The contents of the LM register 206 are used in the logic function to selectively mask certain bits such that the logic function will be performed only on those bits of the input words for which there exists a 1" in the LM register 206, and a 0" will be generated for all bits for which there exists a 0" in the LM register 206. The resultant data word generated by the Logic Function Circuit 220 is gated to the LW register 207 via the Program Gating Bus 202 and AND gates 234 and 235. If it is desired that the bits on which a logic function has been performed be returned to the GR register 203 but that all other bits of GR register 203 not be disturbed, the Insertion Mask Circuit 208 is employed. This selective insertion into the GR register is accomplished by single rail gating the l side of each bit of the LW register 207 to the GR register 203 via the Program Gating Bus 202 and the appropriate AND gates, and simultaneously combining the contents of the LM register 206 and the side of each bit of the LW register 207 and gating the result to the clear side of each bit of the GR register 203 via AND gate 236. As a result, a l is written into each bit of the GR register 203 for which there was a in the LW register 207, and a 0" is written in each bit of the GR register for which there exists a l in the LM register 206 and a 0" in the LW register 207. it should be remembered that a 1" can appear only in those bits of the LW register 207 for which there was a l in the LM register 206. Consequently, a change is made in only those bits of the GR register 203 for which there exists a l in the LM register 206.
The Sum Rotate Circuit 301 is a logic circuit which is used for several purposes. This circuit may be used to rotate the contents of any register by a specified amount by gating the contents of the desired register to the Sum Rotate Circuit 301 via the program gating bus, and by gating the rotated result back to the register from which the data originated. The Sum Rotate Circuit 301 is also used to add the contents of the GR register 20] and the AA register 302. The result may then be placed in any desired register. A specified number may also be added to the contents of either the AA or the GR register by means of the Sum Rotate Circuit 30l.
It was mentioned earlier that the PA register comprises 18 bits which form an 18-bit address for the Program Memory 300, and that each memory word comprises 22 bits. A 22-bit memory word has space for at most a 16-bit address in addition to the required 5-bit instruction code and a check bit. Therefore, a transfer instruction needs two bits in addition to the 16-bit address which is stored in the instruction word. For this purpose, certain bits of the Transfer Buffer 400 have been provided. When a transfer is to take place, two bits are obtained from the Transfer Buffer 400 in addition to the 16-bit address. It is, of course, a prerequisite that the appropriate bits of the transfer buffer be loaded before the transfer instruction is executed. This loading may be accomplished by ordinary data handling instructions. The significance and use of each of the bits of the Transfer Buffer 400 are discussed in the aforenoted Quinn et al. application.
Execution of a program may be interrupted to begin execution of other programs in response to interrupt signals generated by the Interrupt Register 520. This register comprises a plurality of interrupt flip-flops each of which is assigned a discrete priority level. Interrupt programs are stored in the Program Memory 300 which are uniquely associated with each of the interrupt flip-flops. The Interrupt Register 520 further comprises circuitry for generating interrupt signals which indicate the priority level of the desired interrupt. The Order Combining Gate Circuit 505 is responsive to the interrupt signals to selectively initiate transfers to the interrupt programs in the Program Memory 300. Such transfers are initiated by jamming an interrupt instruction into the P0 register 50l upon completion of the instruction being executed. The interrupt instruction stores the contents of the PA register 304 and the Transfer Buffer 400 in predetermined locations of the Temporary Memory 201 and inserts a transfer address into the PA register 304. The value of the transfer address is a function of the level of interrupt being executed. Thereafter the appropriate interrupt program is executed. interrupt programs are executed in accordance with the priority levels of the interrupt flip-flop associated with the program. Accordingly, higher level interrupts are completed before lower level interrupts are initiated. However, a higher level interrupt may interrupt a lower level interrupt program.
Certain of the flip-flops of the interrupt Register 520 are set in response to error signals from the Error Detector 52l when errors are detected within the Program Controlled Processor 200. For example, such error signals are generated in case ofa parity error in a reading from a Program Memory 300. One of the interrupt flip-flops is set in response to signals on the 25MS conductor. These last-named signals are generated by a Timing Counter in the Wired Logic Processor 600 and occur approximately once every 25 milliseconds. These timed interrupts provide for the initiation of execution of certain programs on a periodic basis.
In addition to the above described arrangements in Processors 2000 and 2001 for performing data processing functions within themselves, facilities are provided for the communication of data between the processors and for selective execution by each processor of instructions obtained from memory by the other processor.
Program Gating Bus 2020 of Processor 2000 is connected to Program Gating Bus 2021 in Processor 200] through gate 2401 in Processor 2001. Similarly, Gating Bus 202] in Processor 2001 is connected to Gating Bus 2020 in Processor 2000 through gate 2400 in Processor 2000. This cross-coupling of the gating busses 2020 and 2021 of the processors serves as a transmission path for information exchange between the processors 2000 and 2001 by selective enablement of the gates 2400 and 2401 under program controlv Each Processor 2000 and 2001 includes an External Command Translator 9000 and 9001 respectively. EC translator 9000 in Processor 2000 is connected directly to the output of PO register 5011 in processor 2001. EC translator 9001 in Processor 2001 is connected directly to the output of PO register 5010 in Processor 2000. In this illustrative embodiment, only the five low order bits of each PO register are available for decoding by the EC Translator of the other processor. it is apparent, however, that any number of instruction bits in the PO register of one processor can be made available to such a translator in another processor in a similar manner.
One output lead from each lC translator 5020 and S021 is connected to the EC translator 9001 and 9000 in the other processor. Lead EETl connects lC translator 5020 in Processor 2000 to EC Translator 9001 in Processor 2001v Similarly, lead EETO connects lC Translator 5021 in Processor 2001 to EC Translator 9000 in Processor 2000. Thus, an instruction coded in a particular manner causes both an IC Translator and an EC Translator in the other processor to decode the instruction and provide controlling output signals to both OCG circuits. Control signals are then appropriately provided in both processors to cause cooperative execution of the instruction.
Each Processor 2000, 2001 includes an inhibit flip-flop lNHO, lNHl whose states start and stop data processing operations in the respective processors. For example, the inhibit flip-flop lNl'll is controlled by signals from OCG circuit 5051 on conductors SINH and RlNHl. These signals are provided by OCG circuit 5051 in response to a specific output signal from EC translator 9001 when an instruction in P0 register 5010 is appropriately coded. When SET, inhibit flip-flop [NH] applies an inhibit signal to Clock Circuit 5041 and to 1C Translator 5021. When so inhibited, lC Translator 502l provides no output signals and Clock Circuit 5041 provides no timing signals for resetting the various registers in the Processor 2001. Selective control of flip-flop lNHl can be used advantageously to control operations in Processor 20017 For example, the instruction EXC, when registered in P0 register 5010, causes the inhibit flip-flop lNl-ll in the other processor 2001 to be RESET. This permits the other processor 2001 to execute whatever instruction is then present in its P0 register 5011. The instruction EXC, still registered in the controlling processor 2000, then causes the inhibit flip-flop [M11 in the other processor 2001 to be SET. Thus, execution of instruction EXC causes the other processor 2001 to be stepped through a program one instruction at a time with provision for analysis of the results by the controlling processor 2000 between steps.
Other instructions (ZOINH and 501MB) can be used in the controlling processor to step the other processor through a sequence of operations one cycle at a time, as opposed to one instruction at a time. This permits detailed analysis of multicycle instruction execution in the other processor by the controlling processor.
The instruction repertoire of the illustrative system comprises the following instructions:
Code
Transfer Instructions Description TGR TLR
TRA
TSA
TTSA
PlE(n) TCNS TCS
Code
Transfer to address specified by GR register 203 and bits PFHZ and PFHJ ofthe Transfer Buffer 400.
Transfer to address specified by LR register 204 and bits PFH2 and PFl-i3 of the Transfer Buffer 400.
If bit of the Transfer Buffer 400 is ()tr easier to address in the PA register 304 modified by 5-bit address specified by the instruction; if bit ID of the Transfer Bufi'er 400 is l transfer to address in the PA register 304 modified by contents of bits I l through of the Transfer Buffer 400 and the 5-bit address specified by the instructionv Transfer to address specified by the instruction and bits PFHZ and PFH3 ofa Transfer Buffer 400.
Store bits 0 through 15 of the PA register 304 in Temporary Memory 201 at address location specified by contents of CA register 303, store bits 16 and 17 of the PA register 304 in bits RAP6 and RAM of the Transfer Buffer 400. and transfer to address specified by the instruction and the contents of bits PFHZ and PPFH3 of the Transfer Buffer 400.
Fetch contents of the location of Temporary Memory 201 defined by CA register 303 and insert into bits 0 through 15 of PA register 304, place the contents of bits RAP6 and RAP7 into bits PFHSZ and PFH3 of the Transfer Buffer 400 and into bits l6 and i7 of the PA register 304. and transfer to new address in the PA register 304.
End program interrupt: restore Transfer Buffer 400 with information from predetermined address of Temporary Memory 20]. restore PA register 304 with information from predetermined address of Temporary Memory 201 and contents of bits RAPG and RAP? of the Transfer Buffer 400. and transfer to new address in the PA register 304.
if bit CF8 of the Transfer Buffer 400 is 0,"
transfer as described for TR instruction; if bit CF8 is "1, advance to next sequential address.
If bit CH of the Transfer Buffer 400 is l,
transfer as described for TR instruction; if
bit CF8 is advance to next sequential address.
Test Instructions Description These two instructions test the lower four bits of the GR register 203 for the all ls" and all 0'5" condition. respectively. and set bit CF8 of the Transfer Buffer 400 if the condition is met.
Test GR register 203 for all "0's" condition and set hit CF8 if condition is met.
MST
Code
Test LW register 207 for all "0's" condition and set bit CF8 if condition is met.
This instruction reads a plurality of locations of the Temporary Memory 20l in sequence, combines the read information with the contents of the LR register 204 as specified by LF register 205 and LM register 206. places the result in the UN register 207, and performs an all "0 test on the contents of the LW register. If the desired result is not found, the instruction modifies the read information. writes it into the location from which it was read reads the next sequential word from the Temporary Memory 201. and performs the same logical operations. Options of the instruction specify whether the desired condition is the all "(1" condition or the not all "0 condition of the LW register 207. The number oflocations to be so examined is specified by the count in the KR counter 522. This count is decremented each time a word is read from memory and the program advances when the count of! is reached.
Add Instructions Description ADXAA ADXCA ADIGR ADD Code
Add X to the AA register 302 (X l. 4, 8).
Add X to the CA register 303 ( X 1,4,8).
Add l to GR register 203.
Add GR register 203 to contents of AA register 302 and place sum in AA register.
Zero and Set Instructions Description SCAZ SCF
SGL
ZAA
ZAAZ
ZCA
ZCF
ZDFH
Code DLF AND GTLR2 Set bit 2 of CA register 303.
Set bit CF8 of Transfer Buffer 4004 Set bit 0 of GR register 203.
Zero AA register 302.
Zero bit 2 of AA register 302.
Zero CA register 303.
Zero bit 2 ofCA register 303.
Zero bit CFU of Transfer Buffer 400.
Zero bits DFHO and DFl-ll of Transfer Buffer 400.
Logic Function Instructions Description Logically combine GR register 203 with LR register 204 as specified by LF register 205 and LM register 206, place result in LW register 207, perform all "0" test on LW register 20'! and set bit CF8 of Transfer Buffer 400 if the all "0 condition is found. Besides being gated to the LW register 207 the result may optionally be insertion masked into the GR register 203 as previously explained in this description.
Logical AND of GR register 203 and the data word accompanying the instruction.
Logical OR of GR register 203 and data word specified by instruction.
Set bit 0 of LR register 204 if bit 0 of GR register 203 equals set bit I of LR register 204 if bit 0 of GR register 203 equals l." and rotate LR register 204 right by two bits.

Claims (18)

1. In combination, a plurality of data processors, each comprising means for selectively obtaining program instructions from memory in accordance with address information, an instruction register for storing instructions selectively obtained from memory, internal decoder means for decoding instructions stored in said instruction register, execution means controlled by said internal decoder means in accordance with an instruction stored in said instruction register for performing a set of logic functions specified by said instruction; external decoder means in one of said processors for decoding instructions stored in said instruction register of another of said processors; and said execution means of said one processor controlled by said external decoder in accordance with said instruction stored in said instruction register of said other processor for performing a set of logic functions specified by said instruction.
2. The combination according to claim 1 wherein said set of logic functions performed by said execution means of said one processor under control of said external decoder means of said one processor is different from said set of logic functions performed by said execution means of said other processor under control of said internal decoder means of said other processor.
3. The combination according to claim 2 wherein said execution means of said one and said other processors are connected by gating elements selectively controlled by said execution means of said one and said other processors, and said sets of logic functions comprise transfers of information between said execution means of said one and said other processors through said gating elements.
4. The combination according to claim 1 wherein said one processor comprises inhibiting means controlled by said execution means of said one processor for inhibiting said internal decoder means of said one processor, and said set of logic functions performed in said one processor comprises activation of said inhibiting means by said execution means.
5. The combination according to claim 1 wherein said one processor comprises inhibiting means controlled by said execution means of said one processor for inhibiting said internal decoder means of said one processor, and said set of logic functions performed in said one processor comprises deactivation of said inhibiting means by said execution means of said one processor.
6. The combination according to claim 1 wherein said execution means of each of said processors comprises means for clearing information from data storage elements in said execution means, said one processor comprises inhibiting means for inhibiting activation of said clearing means of said one processor, and said set of logic functions performed in said one processor comprises activation of said inhibiting means by said execution means of said one processor.
7. The combination according to claim 1 wherein said execution means of each of said processors comprises means for clearing information from data storage elements in said execution means, said one processor comprises inhibiting means for inhibiting activation of said clearing means of said one processor, and said set of logic functions performed in said one processor comprises deactivation of said inhibiting means by said execution means of said one processor.
8. The combination according to claim 1 wherein said program instruction obtaining meAns of each of said processors is controlled by said execution means of said processor in accordance with address information stored in said execution means of said processor, and said set of logic functions performed in said one processor comprises the control by said execution means of said one processor of said program instruction obtaining means of said one processor for obtaining from memory an instruction having a memory address defined by address information stored in said execution means of said one processor and storing said obtained instruction in said instruction register means of said one processor.
9. The combination according to claim 1 wherein said execution means of each of said processors comprises a plurality of registers and functional circuits and transmission means for transferring information between selected of said registers and functional circuits under control of said execution means in accordance with said instruction, said transmission means of said one and said other processors are interconnected by controllable gating elements controlled by said execution means of said one and said other processors, said set of logic functions performed in said other processor comprises transfer of information from a selected register in said other processor specified in said instruction to said transmission means of said other processor, and said set of logic functions performed in said one processor comprises the transfer of information through said gating elements from said transmission means of said other processor to a selected register in said one processor specified in said instruction.
10. The combination according to claim 9 wherein said selected register in said one processor comprises an address register which controls said program instruction obtaining means of said one processor by defining the memory address from which an instruction is obtained.
11. The combination according to claim 9 wherein said one processor comprises means controlled by said execution means of said one processor for transferring information from said transmission means of said one processor to said instruction register of said one processor, and said selected register in said one processor comprises said instruction register of said one processor.
12. The combination according to claim 1 wherein said execution means of said one processor comprises data storage means, address storage means for storing said address information for said one processor, clearing means for selectively clearing data from said data storage means and address information from said address storage means, means for inhibiting said clearing means and said internal decoding means of said one processor, means for transferring information selectively between said data storage means, said address storage means, and said instruction register of said one processor; said execution means of said other processor is connected through controllable gating elements to said transferring means in said one processor; and said external decoder means controls said execution means of said one processor in accordance with a sequence of instructions selectively obtained from memory by said other processor and sequentially stored in said instruction register of said other processor to selectively activate and deactivate said inhibiting means, said transferring means, and said gating elements so as to control said one processor in executing a particular instruction or sequence of instructions defined by information transferred from said other processor in a step-by-step manner.
13. In combination, memory means for storing instructions defining data processing functions; a pair of data processors, each comprising an instruction register for storing an instruction obtained from memory by said processor, a plurality of registers and processing circuits, transmission means for selectively interconnecting said plurality oF registers and processing circuits for data transfer therebetween, gating means for transferring data between said transmission means and the transmission means of the other processor, decoder means connected to said instruction register and to the instruction register of the other processor for identifying the functions defined by the instruction stored in one of said instruction registers, and logic control means controlled by said decoder means for controlling selectively said transmission means, said processing circuits, and said gating means to execute said identified functions.
14. The combination according to claim 13 wherein each of said processors comprises inhibit means connected to said logic control means for inhibiting a portion of said decoder means of one of said processors and for inhibiting clearance of information from said registers in said one processor, said logic control means of said one processor controlled by the active portion of said decoder means of said one processor for controlling the execution of a function identified by an instruction stored in said instruction register of the other processor, and said logic control means of said other processor controlled by said decoder means of said other processor for controlling the execution of a function identified by said instruction stored in said instruction register of said other processor.
15. In combination, memory means for storing instructions defining data processing functions; first and second data processors, each comprising a plurality of registers and processing circuits, transmission means for selectively interconnecting said plurality of registers and processing circuits for data transfer therebetween, gating means for transferring data between said transmission means and the transmission means of the other processor; said first processor comprising a first instruction register for storing an instruction obtained by said first processor from said memory means, first decoder means connected to said first instruction register for identifying the functions defined by said instruction stored in said first instruction register, first logic control means connected to and controlled by said first decoder means for controlling selectively said transmission means, said processing circuits and said gating means in said first processor to execute said identified function in said first processor; said second processor comprising second decoder means connected to said first instruction register for identifying other functions defined by said instruction stored in said first instruction register, and second logic control means connected to and controlled by said second decoder means for controlling selectively said transmission means, said processing circuits and said gating means in said second processor to execute said identified other functions in said second processor.
16. The combination according to claim 15 wherein said second processor comprises a second instruction register for storing an instruction obtained by said second processor from said memory means, third decoder means connected to said second instruction register for identifying the functions defined by said instruction stored in said second instruction register, said second logic control means connected to and controlled by said third decoder means for controlling selectively said transmission means, said processing circuits and said gating means in said second processor to execute said functions defined by said instruction stored in said second instruction register, inhibit means controlled by said second logic control means for inhibiting control of said second logic control means by said third decoder means, said second decoder means responsive to a specific instruction stored in said first instruction register for controlling said second logic control means to activate said inhibit means.
17. The combination according to claim 16 wherein said second decoder means is responsive to another specific instruction stored in said first instruction register for controlling said second logic means to selectively operate said transmission means and said gating means of said second processor for transferring data from said transmission means of said first processor to a selected one of said plurality of registers and data processing circuits.
18. The combination according to claim 17 wherein said second decoder means is responsive to a third specific instruction stored in said first instruction register for controlling said second logic control means to deactivate said inhibit means.
US82354A 1970-10-20 1970-10-20 Multiprocessor with cooperative program execution Expired - Lifetime US3678467A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US8235470A 1970-10-20 1970-10-20

Publications (1)

Publication Number Publication Date
US3678467A true US3678467A (en) 1972-07-18

Family

ID=22170671

Family Applications (1)

Application Number Title Priority Date Filing Date
US82354A Expired - Lifetime US3678467A (en) 1970-10-20 1970-10-20 Multiprocessor with cooperative program execution

Country Status (2)

Country Link
US (1) US3678467A (en)
CA (1) CA939822A (en)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US3889237A (en) * 1973-11-16 1975-06-10 Sperry Rand Corp Common storage controller for dual processor system
US3905024A (en) * 1973-09-14 1975-09-09 Gte Automatic Electric Lab Inc Control of devices used as computer memory and also accessed by peripheral apparatus
US3919693A (en) * 1974-07-26 1975-11-11 Honeywell Inc Associative interface for single bus communication system
US3921141A (en) * 1973-09-14 1975-11-18 Gte Automatic Electric Lab Inc Malfunction monitor control circuitry for central data processor of digital communication system
US3930236A (en) * 1973-06-05 1975-12-30 Burroughs Corp Small micro program data processing system employing multi-syllable micro instructions
US3940743A (en) * 1973-11-05 1976-02-24 Digital Equipment Corporation Interconnecting unit for independently operable data processing systems
US4041471A (en) * 1975-04-14 1977-08-09 Scientific Micro Systems, Inc. Data processing system including a plurality of programmed machines and particularly including a supervisor machine and an object machine
US4091455A (en) * 1976-12-20 1978-05-23 Honeywell Information Systems Inc. Input/output maintenance access apparatus
FR2372473A1 (en) * 1976-11-29 1978-06-23 Data General Corp Data processing system with CPU - has parallel processor connected between CPU and main memory for synchronous and simultaneous processing of data
US4133029A (en) * 1975-04-21 1979-01-02 Siemens Aktiengesellschaft Data processing system with two or more subsystems having combinational logic units for forming data paths between portions of the subsystems
US4245301A (en) * 1977-08-03 1981-01-13 Tokyo Shibaura Denki Kabushiki Kaisha Information processing system
WO1981000925A1 (en) * 1979-09-20 1981-04-02 Western Electric Co Peripheral unit controller
US4507781A (en) * 1980-03-14 1985-03-26 Ibm Corporation Time domain multiple access broadcasting, multipoint, and conferencing communication apparatus and method
US4517639A (en) * 1982-05-13 1985-05-14 The Boeing Company Fault scoring and selection circuit and method for redundant system
EP0154551A2 (en) * 1984-03-06 1985-09-11 Codex Corporation Apparatus for enabling a first processor to cause a second processor to effect a transfer of data between said processors
US4663708A (en) * 1983-07-08 1987-05-05 International Business Machines Corporation Synchronization mechanism for a multiprocessing system
US4729094A (en) * 1983-04-18 1988-03-01 Motorola, Inc. Method and apparatus for coordinating execution of an instruction by a coprocessor
EP0260584A2 (en) * 1986-09-17 1988-03-23 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Fault tolerant computer achitecture
US4750110A (en) * 1983-04-18 1988-06-07 Motorola, Inc. Method and apparatus for executing an instruction contingent upon a condition present in another data processor
US4758950A (en) * 1983-04-18 1988-07-19 Motorola, Inc. Method and apparatus for selectively delaying an interrupt of a coprocessor
US4803620A (en) * 1986-01-08 1989-02-07 Hitachi, Ltd. Multi-processor system responsive to pause and pause clearing instructions for instruction execution control
US4811274A (en) * 1983-04-18 1989-03-07 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
US4821231A (en) * 1983-04-18 1989-04-11 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
US5021991A (en) * 1983-04-18 1991-06-04 Motorola, Inc. Coprocessor instruction format
US5097412A (en) * 1987-04-24 1992-03-17 Hitachi, Ltd. Method for simulating the operation of programs in a distributed processing system
US5193204A (en) * 1984-03-06 1993-03-09 Codex Corporation Processor interface circuitry for effecting data transfers between processors
US5519873A (en) * 1990-08-31 1996-05-21 International Business Machines Corporation Apparatus for switching digital command execution between a general purpose microprocessor and dedicted execution logic
US5848276A (en) * 1993-12-06 1998-12-08 Cpu Technology, Inc. High speed, direct register access operation for parallel processing units
US5850521A (en) * 1986-05-30 1998-12-15 Bull Hn Information Systems Inc. Apparatus and method for interprocessor communication
US6209079B1 (en) * 1996-09-13 2001-03-27 Mitsubishi Denki Kabushiki Kaisha Processor for executing instruction codes of two different lengths and device for inputting the instruction codes
US20090241124A1 (en) * 2008-03-24 2009-09-24 Denneau Monty M Online multiprocessor system reliability defect testing
US20160019178A1 (en) * 1999-12-27 2016-01-21 Intel Corporation Memory mapping in a processor having multiple programmable units

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3238506A (en) * 1961-06-27 1966-03-01 Ibm Computer multiplexing apparatus
US3287705A (en) * 1963-03-07 1966-11-22 Rca Corp Computer system
US3303474A (en) * 1963-01-17 1967-02-07 Rca Corp Duplexing system for controlling online and standby conditions of two computers
US3312951A (en) * 1964-05-29 1967-04-04 North American Aviation Inc Multiple computer system with program interrupt
US3374465A (en) * 1965-03-19 1968-03-19 Hughes Aircraft Co Multiprocessor system having floating executive control
US3444528A (en) * 1966-11-17 1969-05-13 Martin Marietta Corp Redundant computer systems
US3480914A (en) * 1967-01-03 1969-11-25 Ibm Control mechanism for a multi-processor computing system
US3517174A (en) * 1965-11-16 1970-06-23 Ericsson Telefon Ab L M Method of localizing a fault in a system including at least two parallelly working computers
US3566357A (en) * 1966-07-05 1971-02-23 Rca Corp Multi-processor multi-programed computer system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3238506A (en) * 1961-06-27 1966-03-01 Ibm Computer multiplexing apparatus
US3303474A (en) * 1963-01-17 1967-02-07 Rca Corp Duplexing system for controlling online and standby conditions of two computers
US3287705A (en) * 1963-03-07 1966-11-22 Rca Corp Computer system
US3312951A (en) * 1964-05-29 1967-04-04 North American Aviation Inc Multiple computer system with program interrupt
US3374465A (en) * 1965-03-19 1968-03-19 Hughes Aircraft Co Multiprocessor system having floating executive control
US3517174A (en) * 1965-11-16 1970-06-23 Ericsson Telefon Ab L M Method of localizing a fault in a system including at least two parallelly working computers
US3566357A (en) * 1966-07-05 1971-02-23 Rca Corp Multi-processor multi-programed computer system
US3444528A (en) * 1966-11-17 1969-05-13 Martin Marietta Corp Redundant computer systems
US3480914A (en) * 1967-01-03 1969-11-25 Ibm Control mechanism for a multi-processor computing system

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US3930236A (en) * 1973-06-05 1975-12-30 Burroughs Corp Small micro program data processing system employing multi-syllable micro instructions
US3905024A (en) * 1973-09-14 1975-09-09 Gte Automatic Electric Lab Inc Control of devices used as computer memory and also accessed by peripheral apparatus
US3921141A (en) * 1973-09-14 1975-11-18 Gte Automatic Electric Lab Inc Malfunction monitor control circuitry for central data processor of digital communication system
US3940743A (en) * 1973-11-05 1976-02-24 Digital Equipment Corporation Interconnecting unit for independently operable data processing systems
US3889237A (en) * 1973-11-16 1975-06-10 Sperry Rand Corp Common storage controller for dual processor system
US3919693A (en) * 1974-07-26 1975-11-11 Honeywell Inc Associative interface for single bus communication system
US4041471A (en) * 1975-04-14 1977-08-09 Scientific Micro Systems, Inc. Data processing system including a plurality of programmed machines and particularly including a supervisor machine and an object machine
US4133029A (en) * 1975-04-21 1979-01-02 Siemens Aktiengesellschaft Data processing system with two or more subsystems having combinational logic units for forming data paths between portions of the subsystems
FR2372473A1 (en) * 1976-11-29 1978-06-23 Data General Corp Data processing system with CPU - has parallel processor connected between CPU and main memory for synchronous and simultaneous processing of data
US4091455A (en) * 1976-12-20 1978-05-23 Honeywell Information Systems Inc. Input/output maintenance access apparatus
US4245301A (en) * 1977-08-03 1981-01-13 Tokyo Shibaura Denki Kabushiki Kaisha Information processing system
WO1981000925A1 (en) * 1979-09-20 1981-04-02 Western Electric Co Peripheral unit controller
US4428044A (en) 1979-09-20 1984-01-24 Bell Telephone Laboratories, Incorporated Peripheral unit controller
US4507781A (en) * 1980-03-14 1985-03-26 Ibm Corporation Time domain multiple access broadcasting, multipoint, and conferencing communication apparatus and method
US4517639A (en) * 1982-05-13 1985-05-14 The Boeing Company Fault scoring and selection circuit and method for redundant system
US4811274A (en) * 1983-04-18 1989-03-07 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
US4729094A (en) * 1983-04-18 1988-03-01 Motorola, Inc. Method and apparatus for coordinating execution of an instruction by a coprocessor
US4750110A (en) * 1983-04-18 1988-06-07 Motorola, Inc. Method and apparatus for executing an instruction contingent upon a condition present in another data processor
US4758950A (en) * 1983-04-18 1988-07-19 Motorola, Inc. Method and apparatus for selectively delaying an interrupt of a coprocessor
US4821231A (en) * 1983-04-18 1989-04-11 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
US5021991A (en) * 1983-04-18 1991-06-04 Motorola, Inc. Coprocessor instruction format
US4663708A (en) * 1983-07-08 1987-05-05 International Business Machines Corporation Synchronization mechanism for a multiprocessing system
EP0154551A3 (en) * 1984-03-06 1987-12-16 Codex Corporation Apparatus for enabling a first processor to cause a second processor to effect a transfer of data between said processors
US5193204A (en) * 1984-03-06 1993-03-09 Codex Corporation Processor interface circuitry for effecting data transfers between processors
EP0154551A2 (en) * 1984-03-06 1985-09-11 Codex Corporation Apparatus for enabling a first processor to cause a second processor to effect a transfer of data between said processors
US4803620A (en) * 1986-01-08 1989-02-07 Hitachi, Ltd. Multi-processor system responsive to pause and pause clearing instructions for instruction execution control
US5850521A (en) * 1986-05-30 1998-12-15 Bull Hn Information Systems Inc. Apparatus and method for interprocessor communication
EP0260584A2 (en) * 1986-09-17 1988-03-23 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Fault tolerant computer achitecture
EP0260584A3 (en) * 1986-09-17 1990-05-09 Bull Hn Information Systems Italia S.P.A. Fault tolerant computer achitecture
US5097412A (en) * 1987-04-24 1992-03-17 Hitachi, Ltd. Method for simulating the operation of programs in a distributed processing system
US5519873A (en) * 1990-08-31 1996-05-21 International Business Machines Corporation Apparatus for switching digital command execution between a general purpose microprocessor and dedicted execution logic
US5848276A (en) * 1993-12-06 1998-12-08 Cpu Technology, Inc. High speed, direct register access operation for parallel processing units
US6209079B1 (en) * 1996-09-13 2001-03-27 Mitsubishi Denki Kabushiki Kaisha Processor for executing instruction codes of two different lengths and device for inputting the instruction codes
US6463520B1 (en) * 1996-09-13 2002-10-08 Mitsubishi Denki Kabushiki Kaisha Processor for executing instruction codes of two different lengths and device for inputting the instruction codes
CN1095116C (en) * 1996-09-13 2002-11-27 三菱电机株式会社 Processor of executing to order lenghth code, and order inputling device
US20160019178A1 (en) * 1999-12-27 2016-01-21 Intel Corporation Memory mapping in a processor having multiple programmable units
US9830284B2 (en) * 1999-12-27 2017-11-28 Intel Corporation Memory mapping in a processor having multiple programmable units
US20090241124A1 (en) * 2008-03-24 2009-09-24 Denneau Monty M Online multiprocessor system reliability defect testing
US8176362B2 (en) * 2008-03-24 2012-05-08 International Business Machines Corporation Online multiprocessor system reliability defect testing

Also Published As

Publication number Publication date
CA939822A (en) 1974-01-08

Similar Documents

Publication Publication Date Title
US3678467A (en) Multiprocessor with cooperative program execution
US3728693A (en) Programmatically controlled interrupt system for controlling input/output operations in a digital computer
US4354225A (en) Intelligent main store for data processing systems
US4527237A (en) Data processing system
US3787818A (en) Mult-processor data processing system
US4516199A (en) Data processing system
US4591977A (en) Plurality of processors where access to the common memory requires only a single clock interval
US4366535A (en) Modular signal-processing system
CA2009529C (en) Servicing interrupt requests in a data processing system without using the services of an operating system
US3781810A (en) Scheme for saving and restoring register contents in a data processor
US4412303A (en) Array processor architecture
US4365292A (en) Array processor architecture connection network
US4623997A (en) Coherent interface with wraparound receive and transmit memories
US5701502A (en) Isolating a central processing unit from the operating system controlling said unit and its associated hardware for interaction of the unit with data handling apparatus alien to the operating system
CA2009548C (en) Single physical main storage shared by two or more processors executing respective operating systems
CA2009550C (en) Data processing system with total system resource management for itself and for an associated alien processor
JP3645281B2 (en) Multiprocessor system having shared memory
US4481572A (en) Multiconfigural computers utilizing a time-shared bus
US3576541A (en) Method and apparatus for detecting and diagnosing computer error conditions
US3500466A (en) Communication multiplexing apparatus
US3629854A (en) Modular multiprocessor system with recirculating priority
KR940002340B1 (en) Computer system for multiple operation
GB1454810A (en) Data processing apparatus
US3811114A (en) Data processing system having an improved overlap instruction fetch and instruction execution feature
FI80533C (en) CONTROL AV DATAMASKER HIERARKI.