A device and method for providing inter-processor communication in a multi-processor architecture. A post office RAM has a plurality of mailboxes. Each mailbox is write-accessible by one port, but is read-accessible by the other ports. Thus, a processor device on a port has write-access to one mailbox, but can read the other mailboxes in the post office. A transmitting processor communicates with a receiving processor, by utilizing the post office. The transmitting processor writes information into its own mailbox, and signals a receiving processor. The receiving processor determines which of the processor devices signalled it, and reads the information in the transmitting processor's mailbox. |
Citations|
| US4665482 | Jun 13, 1983 | May 12, 1987 | Honeywell Information Systems Inc. | Data multiplex control facility | | US4760521 | Nov 18, 1985 | Jul 26, 1988 | White Consolidated Industries, Inc. | Arbitration system using centralized and decentralized arbitrators to access local memories in a multi-processor controlled machine tool | | US4862354 | May 5, 1986 | Aug 29, 1989 | Honeywell Bull Italia S.p.A. | Multiprocessor system with interrupt notification and verification unit | | US4873476 | Sep 23, 1987 | Oct 10, 1989 | Fanuc Ltd. | Robot control apparatus for controlling a manipulator through a robot arm having a plurality of axes | | US4879642 | Oct 18, 1984 | Nov 7, 1989 | Allied-Signal Inc. | Servo loop processor in association with a central processing unit for closed loop control of a servo system | | US4965707 | Feb 5, 1990 | Oct 23, 1990 | Basic Engineering Ltd. | Apparatus for simulating flames | | US4970447 | Feb 9, 1989 | Nov 13, 1990 | Fanuc Ltd. | Software servo control apparatus for use in an injection molding machine | | US5038276 | Mar 16, 1990 | Aug 6, 1991 | | Data processing system having dual arbiter for controlling access to a system bus | | US5072373 | Jan 17, 1991 | Dec 10, 1991 | Encore Computer U.S., Inc. | Real-time data processing system | | US5127089 | Jul 3, 1989 | Jun 30, 1992 | Motorola, Inc. | Synchronous bus lock mechanism permitting bus arbiter to change bus master during a plurality of successive locked operand transfer sequences after completion of current sequence | | US5136714 | Dec 4, 1989 | Aug 4, 1992 | International Business Machines Corporation | Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system | | US5142683 | Oct 7, 1991 | Aug 25, 1992 | Unisys Corporation | Intercomputer communication control apparatus and method | | US5142689 | May 25, 1990 | Aug 25, 1992 | Siemens Nixdort Informationssysteme AG | Process for the preparation of the connection of one of several data processor devices to a centrally synchronized multiple line system | | US5146596 | Jan 29, 1990 | Sep 8, 1992 | Unisys Corporation | Multiprocessor multifunction arbitration system with two levels of bus access including priority and normal requests | | US5161209 | Jan 24, 1992 | Nov 3, 1992 | Sony Corporation | Servo control device for a VTR | | US5187796 | Jul 16, 1990 | Feb 16, 1993 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units | | US5193197 | Aug 30, 1990 | Mar 9, 1993 | Digital Equipment Corporation | Apparatus and method for distributed dynamic priority arbitration for access to a shared resource | | US5202966 | Sep 6, 1991 | Apr 13, 1993 | Rockwell International Corporation | Centralized bus arbitration circuit | | US5271020 | Dec 21, 1990 | Dec 14, 1993 | Intel Corporation | Bus stretching protocol for handling invalid data | | US5319753 | Sep 29, 1992 | Jun 7, 1994 | Zilog, Inc. | Queued interrupt mechanism with supplementary command/status/message information |
Referenced by|
| US6189049 | Aug 10, 1998 | Feb 13, 2001 | Micron Technology | Method for operating processor with internal register for peripheral status | | US6219720 | Aug 10, 1998 | Apr 17, 2001 | Micron Technology, Inc. | Core logic unit with internal register for peripheral status | | US6233627 | Aug 10, 1998 | May 15, 2001 | Micron Technology, Inc. | Processor with internal register for peripheral status | | US6338098 | Jan 26, 2001 | Jan 8, 2002 | Micron Technology, Inc. | Processor with internal register for peripheral status | | US6374320 | Aug 10, 1998 | Apr 16, 2002 | Micron Technology, Inc | Method for operating core logic unit with internal register for peripheral status | | US6393507 | Jan 17, 2001 | May 21, 2002 | Micron Technology, Inc. | Computer system including core logic unit with internal register for peripheral status | | US6912716 | Nov 5, 1999 | Jun 28, 2005 | Agere Systems Inc. | Maximized data space in shared memory between processors | | US7233977 | Dec 18, 1998 | Jun 19, 2007 | EMC Corporation | Messaging mechanism employing mailboxes for inter processor communications | | US7617346 | Feb 27, 2007 | Nov 10, 2009 | Integrated Device Technology, Inc. | Rapid input/output doorbell coalescing to minimize CPU utilization and reduce system interrupt latency | | US7840762 | Aug 23, 2007 | Nov 23, 2010 | Samsung Electronics Co., Ltd | Multi-path accessible semiconductor memory device having mailbox areas and mailbox access control method thereof | | US7870313 | Feb 27, 2007 | Jan 11, 2011 | Integrated Device Technology, Inc. | Method and structure to support system resource access of a serial device implementating a lite-weight protocol | | US7996574 | May 3, 2007 | Aug 9, 2011 | EMC Corporation | Messaging mechanism for inter processor communication | | US8019948 | Oct 21, 2010 | Sep 13, 2011 | SAMSUNG Electronics Co., Ltd. | Multi-path accessible semiconductor memory device having mailbox areas and mailbox access control method thereof | | US8078838 | Sep 23, 2008 | Dec 13, 2011 | Samsung Electronics Co., Ltd. | Multiprocessor system having multiport semiconductor memory with processor wake-up function responsive to stored messages in an internal register | | US8094677 | Feb 27, 2007 | Jan 10, 2012 | Integrated Device Technology, Inc. | Multi-bus structure for optimizing system performance of a serial buffer |
Claims1. An apparatus for communication between a plurality of processor devices, comprising: - a post office memory including a plurality of mailbox memories;
- each of the mailbox memories being write accessible at any time only by a corresponding owner processor device, and read-accessible by the corresponding owner processor device and other processor devices of the plurality of processor devices at times determined independently of a write access;
- the plurality of processor devices including a transmitting processor device and a receiving processor device;
- a mailbox memory corresponding to the transmitting processor device containing information to be transferred to the receiving processor device; and
- the transmitting processor device being determined prior to the receiving processor device reading the information to be transferred.
2. An apparatus as in claim 1, wherein: - a signal line provides communication between the processor devices; and
- a subroutine in the receiving processor device, corresponding to the signal line, reads the mailbox memory corresponding to the transmitting processor device.
3. An apparatus as in claim 2, wherein the signal line is a trigger, and further comprising a vector register pointing to the subroutine. 4. An apparatus as in claim 3, wherein the plurality of processor devices comprises at least three processor devices, including at least two transmitting processor devices and at least one receiving processor device, and a signal line between the receiving processor device and each of the transmitting processor devices, further comprising: - (a) an OR gate producing a logical-OR of the signal lines; and
- (b) a mailbox status register associated with the receiving processor device, each of the signal lines setting a status of one of the transmitting processor devices in the mailbox status register.
5. An apparatus as in claim 3, having at least three processor devices, including at least two transmitting processor devices and at least one receiving processor device, and a signal line between the receiving processor device and each of the transmitting processor devices, further comprising: - (a) an OR gate producing a logical-OR of the signal lines;
- (b) a mailbox status register associated with the receiving processor device, each of the signal lines setting a status of one of the transmitting processors in the mailbox status register.
6. An apparatus as in claim 2, wherein at least one of the processor devices is external to a chip, and the other processor devices are on the chip. 7. An apparatus as in claim 6, wherein at least two of the processor devices on the chip are streamlined signal processors, and one of the processor devices on the chip is a master microprocessor. 8. An apparatus as in claim 2, wherein the signal line is an interrupt, and wherein the subroutine is an interrupt service routine addressed by the interrupt. 9. An apparatus as in claim 1, wherein the post office memory is a multi-port random access memory (RAM), and each of the mailbox memories is a predetermined area of the RAM; - each predetermined area of the RAM further comprising means for providing write-access for only one of the processor devices to the predetermined area of the RAM from one port of the RAM; and
- means for providing read-access to the RAM for the processor devices from each port of the RAM.
10. An apparatus as in claim 9, wherein the multi-port RAM comprises a 4-port RAM. 11. An apparatus as in claim 10, wherein each predetermined area of RAM comprises 8 bytes. 12. An apparatus as in claim 1, further comprising: - a plurality of ports corresponding to the plurality of processor devices; and
- wherein each of the mailbox memories comprises,
- a plurality of register blocks, each of the register blocks including,
- storage for a predetermined number of data bits,
- a single data-in bus connection,
- a plurality of data-out bus connections, one data-out bus connection for each of the plurality of ports,
- a plurality of read input lines, one read input line from each of the plurality of ports, and
- a single write line, the write line coming from the port corresponding to the owner processor device.
13. A method of communicating among a plurality of processor devices, including a transmitting processor device and a receiving processor device, utilizing a post office with a plurality of mailboxes, the method comprising the steps of: - writing information to be transferred from a transmitting processor device to a receiving processor device into a predetermined one of the mailboxes in the post office at any time determined by the transmitting processor device;
- signaling the receiving processor device with the transmitting processor device;
- determining in the receiving processor device, prior to the receiving processor reading the information, which of the processor devices signalled the receiving processor device; and
- reading the information from the predetermined mailbox with the receiving processor device an a time determined by the receiving processor.
14. The method of claim 13, wherein the signalling step comprises the transmitting processor device issuing an interrupt to the receiving processor device. 15. The method of claim 14, the determining step including the receiving processor device executing an interrupt subroutine corresponding to the interrupt, and the reading step being performed by the interrupt subroutine. 16. The method of claim 15, further comprising the step of the transmitting processor device setting a status register indicating the transmitting processor device, and the determining step comprising the receiving processor device reading the status register to determine the transmitting processor device. 17. The method of claim 13, wherein the signalling step comprises the transmitting processor device issuing a trigger to the receiving processor device. 18. The method of claim 17, the determining step including executing a subroutine pointed at in a vector register corresponding to the trigger, and the reading step being performed by the subroutine. 19. The method of claim 18, further comprising the step of the transmitting processor device setting a mailbox status register indicating the transmitting processor device, and the determining step comprising the receiving processor device reading the mailbox status register to determine the transmitting processor device. 20. The method of claim 13, further comprising the step of the receiving processor device acting on the information. 21. The method of claim 13, wherein the writing step occurs via a first port which is reserved to the transmitting processor device. 22. A method of bi-directional communication between at least two processor devices, utilizing a post office RAM with a plurality of mailboxes, the method comprising the steps of: - writing information to be transferred from a first processor device to a second processor device into a first mailbox in the post office RAM, and signaling the second processor device with the first processor device;
- writing information to be transferred from the second processor device to a first processor device into a second mailbox in the post office RAM, and signaling the first processor device with the second processor device;
- determining in the second processor device, prior to the second processor device reading the first mailbox, which of the processor devices signalled the second processor device;
- determining in the first processor device, prior to the first processor device reading the second mailbox, which of the processor devices signalled the first processor device;
- reading the information in the first mailbox with the second processor device; and
- reading the information in the second mailbox with the first processor device.
23. A post office RAM comprising: - a multi-port RAM, having a plurality of cells and a plurality of ports, any one of the RAM cells being read-accessible by the plurality of ports, and write-accessible by only one of the ports.
|