US 3678467 A
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 (OCR text may contain errors)
United States Patent Nussbaum et a1.
[ 1 July 18, 1972  MULTIPROCESSOR WITH COOPERATIVE PROGRAM EXECUTION  Inventors: Fz'ic Nu-haurn, St Charles; Wing Noon Toy, Glen Ellyn, both of 111.; Melvin Nell Woimky, Dover, NJ.
 Assignee: Deli Telephone Laboratories Incorporated,
Murray Hill, NJ.
 Filed: Oct. 20, 1970  App1.No.: 82,354
 U.S.Cl ..340/172.5  Int-Cl. ..G06fl5/l6  FleldotSeu-eh ..340/l72.5
 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:
Transfer Instructions Description TGR TLR
PlE(n) TCNS TCS
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.
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
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.