Multiprocessor intercommunication system and method
First Claim
1. A multiprocessor system comprising:
- a plurality of processor modules, each including means for providing externally accessible semaphores evidencing readiness states of the procesor as to different transactions;
network means coupled to the processor modules for conducting a "test and set" operation as to the readiness states of the processors relating to a given transaction simultaneously in all processors, and selecting the least ready state as an indication of global readiness.
4 Assignments
0 Petitions
Accused Products
Abstract
A system using a sorting network to intercouple multiple processors so as to distribute priority messages to all processors is characterized by semaphore means accessible to both the local processors and the global resource via the network. Transaction numbers identifying tasks are employed in the messages, and interfaces at each processor are locally controlled to establish transaction number related indications of the current status of each task being undertaken at the associated processor. A single query to all processors via the network elicits a prioritized response that denotes the global status as to that task. The transaction numbers also are used as global commands and local controls for the flow of messages. A destination selection system based on words in the messages is used as the basis for local acceptance or rejection of messages. This arrangement together with the transaction number system provides great flexibility as to intercommunication and control.
241 Citations
155 Claims
-
1. A multiprocessor system comprising:
-
a plurality of processor modules, each including means for providing externally accessible semaphores evidencing readiness states of the procesor as to different transactions; network means coupled to the processor modules for conducting a "test and set" operation as to the readiness states of the processors relating to a given transaction simultaneously in all processors, and selecting the least ready state as an indication of global readiness. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. The method of intercommunication between processors in a multiprocessor system comprising the steps of:
-
maintaining locally updated semaphores as to readiness states at each processor; globally testing the local semaphores simultaneously to provide competing responses; and selecting the state evidencing least readiness as the global state from the competing responses. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)
-
-
64. A computing system for ascertaining the global status of a task being undertaken by individual processors performing subtasks related thereto, comprising:
-
locally controllable storage means at each of the processors for providing an externally accessible indication of readiness state as to the particular subtask; and global test means intercoupling the processors and including means for broadcasting a status query to all the storage means concurrently and deriving, in a predetermined fixed time interval, the least ready status of the processors undertaking subtasks pertaining to the given task. - View Dependent Claims (65, 66)
-
-
67. An intercommunicating multiprocessor system whose global state of readiness as to any of a number of transactions can be ascertained within a predetermined fixed time interval comprising:
-
a plurality of processors, each including means for maintaining and updating local test and set semaphores pertaining to the different transactions; network means coupled to each of the processors for providing transaction queries simultaneously to all processors and dynamically sorting concurrent responses within a fixed time interval; and global test and set means coupling each of the processors to the network means for providing semaphore response transmissions concurrently to the network means. - View Dependent Claims (68, 69)
-
-
70. A computing system comprising:
-
a plurality of processor modules, each including means for locally establishing a semaphore as a digital value pertaining to different ones of a number of given transactions identified by different transaction numbers; network means coupled to the processors for broadcasting concurrent messages to the processors, the messages including queries and commands identified by transaction numbers, the network means including means responsive to the concurrent messages for prioritizing the messages; and a plurality of interface means coupled to the network means and associated with each processor module for providing digital semaphore values to the network means in response to a broadcast query, for prioritizing of such values to derive a single value. - View Dependent Claims (71, 72, 73, 74)
-
-
75. A computing system having a plurality of processors and being capable of distributed asynchronous processing of multiple tasks and coordinated usage of task results, comprising:
-
a plurality of processors operating asynchronously but generating synchronous competing message transmissions, the messages including reference values of varying data content; network means coupled to the processors and responsive to the data content of the competing messages for transferring a priority message to all processors; a plurality of storage means, each associated with a different processor, for storing data relating to the reference values; and a plurality of controller means coupled to the different storage means and responsive to the reference values and data relating thereto for controlling processor intercommunication via the network means. - View Dependent Claims (76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86)
-
-
87. A system for intercommunication between a plurality of processor modules comprising:
-
means at each processor module providing serial messages comprising initial command bytes varying in data content to characterize the message as comprising data, status, control or response messages, and further to characterize messages within the different types, the command bytes being followed by subsequent message bytes; means at each processor for transmitting messages in synchronism following the termination of prior messages; and means intercoupling each processor to all other processors and including means for merging the serial messages in accordance with the data content therein during transmission to all the processors, wherein the data contents of the command bytes followed by the remaining message information successively determine message priority, and data, status, control and response messages are transferred between processor modules in accordance with a priority protocol without prefatory communications between processors. - View Dependent Claims (88, 89, 90, 91)
-
-
92. A multiprocessor system for performing multiple data processing tasks in different individual processors within the system without the need for substantial software to determine routing, availability and priority status, comprising:
-
means providing message packets including priority determining commands and data; spatially distributed network means coupled to receive the message packets and including a plurality of bidirectional active circuit means merging at a return circuit means, each of the active circuit means being responsive to the message packets to continue transfer of competing message packets having priority whereby multiple messages concurrently on the network are prioritized in the time and space domains and the single priority message packet is distributed concurrently on the network; and a plurality of processor modules, each comprising a processor operating at a different rate than the network means and interface means including a random access memory means, the interface means being coupled to both the network means and the processor means and including means responsive to the message packets for responding only to those message packets appropriate for the individual processor, the interface means including means for storing receive and send messages to and from the processor, and dedicated memory sections for retaining task identifying and destination selection information separately accessible to the network means, whereby tasks may be automatically accepted for the appropriate processors without requiring interprocessor communications or central determinations of priority and routing. - View Dependent Claims (93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106)
-
-
107. A system for controlling routing of messages between processors in a multiprocessor system comprising:
-
means at each processor for providing a serial message train including destination selection data comprising alternatively specific processor identification, identification of a process class, and hashing values; lookup table means at each processor including at least three separate sections defining different destination selection criteria comprising a specific processor identification section, a processor class section and a hash value section; means coupled to each of the processors for delivering to all processors, from a number of messages concurrently transmitted by the processors, a single priority message; and means at each processor responsive to the destination selection data in the single priority message for addressing the lookup table means directly with the destination selection data to determine whether the particular processor is being addressed, such that the processor may be selected in accordance with one of a variety of multiprocessor modes, including a general broadcasting mode in the absence of a destination selection data entry. - View Dependent Claims (108, 109)
-
-
110. In a system having a number of processors communicating via an interconnect network, the combination comprising:
-
a number of buffer means, each associated with a different one of the processors and coupled to the network and the processor associated therewith, each buffer means including a dedicated memory reference section having at least two different selection maps representing different modes of selection; the processors generating messages having selection data for referencing the selection maps; and a number of interface means, each connected to a different processor and the buffer means coupled thereto, and coupled to the network, and each responsive to the selection data for referencing the selection maps in the buffer means to determine whether the selection data specify that the message is intended for the processor associated therewith, and coupled to control reception of messages intended for the processor associated therewith. - View Dependent Claims (111, 112, 113, 114)
-
-
115. A system for effecting data transfer between a network and a processor providing transaction numbers comprising the combination of:
-
a network providing message streams associated with transaction numbers identifying a particular processing transaction or transaction type; interface means, including high speed random access memory means, coupled to the processor and the network and including; a memory section storing data in externally accessible form in accordance with transaction number addresses, a memory section storing a directory of transaction readiness words, and a section storing messages for transfer between the processor and the network; and the processor being coupled to reference the directory to store updated entries in the transaction number addresses, such that the network can determine the state of readiness as to a particular transaction solely from the random access memory means. - View Dependent Claims (116, 117)
-
-
118. A bidirectional branching node circuit for a message switching system in which competing concurrent messages are received, comprising:
-
a bidirectional upstream port circuit and two bidirectional downstream port circuits each including parallel data lines and collision lines; logic means coupled to the downstream port circuits for transferring a single one of two competing upstream messages received at the downstream ports to the upstream port by granting priority in accordance with a predetermined priority rule determined by message content; means coupling the upstream and downstream port circuits and responsive to messages received at the upstream port for providing downstream transmission of such messages to both downstream ports; and control means coupled to the logic means, the upstream port circuit and the downstream port circuits and responsive to the grant of priority between upstream messages for generating signals on the losing collision line to indicate that priority has been granted a message other than the message received at the port, and for transferring a signal received at the upstream port on the collision line thereat. - View Dependent Claims (119, 120, 121)
-
-
122. A system for transferring data from multiple sources along a chain of nodes with zero time skew between the data flow at the nodes comprising:
-
a plurality of individual active circuit nodes in a sequential array culminating at an apex node, the coupling between successive nodes introducing no more than a given maximum time delay; a master clock source coupled to the apex node; a plurality of individual clock generating circuits, each disposed at a different node and generating a controllably adjustable clock signal at the nominal frequency of the master clock source; means coupling successive pairs of nodes for returning clock signals from the next successive node to an originating node; means at each node coupled to receive the clock signal and the returning clock signal for comparing the clock from an individual clock generating circuit to the retardation of the returning clock signals to generate an error signal; and means for controlling the individual clock generating circuit with the error signal, whereby all clock generating circuits maintain a uniform time relation to the master clock. - View Dependent Claims (123, 124, 125)
-
-
126. In a multiprocessor system in which processors transfer message packets by broadcasting to all other processors, means for generating messages organized as a series of bytes defining a plurality of fields comprising:
-
a command field comprising one of a selected sequence of message characterizing values of fixed byte length; a tag field following the command field and comprising a fixed length transaction number or processor identification number, both of varying data content and fixed byte length; and control bits in parallel with the bytes, the control bit sequences defining the fields. - View Dependent Claims (127, 128, 129, 130)
-
-
131. A system for determining the global status of the resources in a multiprocessor system, where the resource is associated with a local semaphore means in each processor which contains the resource, comprising:
-
means for querying the local semaphore means in each processor to derive a plurality of concurrent responses; and means responsive to the concurrent responses for sorting the responses to derive a priority response indication of global status. - View Dependent Claims (132)
-
-
133. A multiprocessor system comprising:
-
a plurality of individual processors having local, externally accessible semaphores; and a network coupled to all the processors for broadcasting queries and updates as to semaphore status concurrently to the processors. - View Dependent Claims (134)
-
-
135. A multiprocessor system comprising:
-
a plurality of processors, each including means for transmitting a status response of selected data content, concurrently with responses from other processors, to a status query; and network means coupled to the processors for arbitrating the responses in accordance with the data contents thereof to provide global indication of multiprocessor status in response to the query. - View Dependent Claims (136, 137)
-
-
138. The method of operating a plurality of processors which may be performing related tasks asynchronously so as to provide global task coordination, which method comprises the steps of:
-
identifying tasks with global transaction numbers; sorting competing messages from different processors utilizing the data content of the communications, including the transaction numbers, to establish priority; locally establishing processor status pertaining to each given transaction number; transmitting a status request for sorting with competing messages; concurrently transmitting transaction status from the processors in response to a status request that gains priority; and merging the status responses in accordance with a predetermined priority rule such that an "update level" having the least priority takes precedence, whereby the global resource ascertains from the received response the readiness of the system in global terms. - View Dependent Claims (139, 140, 141)
-
-
142. The method of monitoring the status of related but asynchronous individual processor activities in a multiprocessor system coupled by a sorting network comprising the steps of:
-
transmitting a transaction identity on the network to the processors for common referencing relative to each particular task that is to be performed by related subtasks; accepting the transaction identity reference at each processor that is to function relative to the task; associating with the transaction identity at each processor that is to function as to the task, a locally updated local status indication that is accessible to the network; querying the processors concurrently to obtain concurrent local status indications as to a given transaction identity; and merging the local status indications pertaining to a transaction identity to obtain a network determination of the transaction status. - View Dependent Claims (143, 144, 145, 146)
-
-
147. The method of placing messages from a plurality of processors in a sorted order, the messages being generated during the completion of asynchronous processing tasks, the method comprising the steps of:
-
assembling, at the individual processors, sorted sequences of messages in suborders pertaining to transaction numbers in the messages; synchronously transmitting the highest priority messages from each of the processors pertaining to a given transaction number; dynamically prioritizing the competing messages to reject all but that message having highest priority; synchronously repeating the transmission of successive highest priority messages until all the messages in the sorted suborder pertaining to a given transaction number have been completely transmitted; and successively repeating the sequence for messages pertaining to transaction numbers in descending order of priority. - View Dependent Claims (148)
-
-
149. The method of communicating with a plurality of processors in a multiprocessor system to determine the global status of the system as to a task divided into subtasks being performed asynchronously by the processors, comprising the steps of:
-
providing concurrent status indications from each of the processors as to the state of readiness of that processor as to its subtask; and sorting the concurrent status indications. - View Dependent Claims (150, 151)
-
-
152. The method of communicating between multiple processors comprising the steps of:
-
maintaining a plurality of differently identified semaphores at each processor under local processor control; and externally testing corresponding semaphores at all processors with a broadcast addressed to all processors for a specific identity. - View Dependent Claims (153)
-
-
154. The method of providing a global assessment of the work status of processors as to a given task in a multiprocessor system comprising the steps of:
-
locally selecting, at each processor, one of a number of predetermined messages of different data content to indicate the local instantaneous readiness state as to the given task; externally eliciting the messages concurrently from all processors involved in the given task; and aribtrating the messages to establish the priority message based on data content. - View Dependent Claims (155)
-
Specification