Claims
- 1. A first message unit for transmitting messages in a data processing system characterized by an execution cycle, the first message unit comprising a first message array and first message transfer circuitry, wherein the first message transfer circuitry is operable to facilitate transfer of a first message stored in a first portion of the first message array in response to a first message transfer request, the first message transfer circuitry being further operable to store up to one additional message transfer request per execution cycle while facilitating transfer of the first message, and to maintain strict ordering between overlapping requests.
- 2. The first message unit of claim 1 wherein the data processing system is an asynchronous data processing system and the execution cycle corresponds to an asynchronous handshake protocol.
- 3. The first message unit of claim 2 wherein the asynchronous handshake protocol between a first sender and a first receiver in the data processing system comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 4. The first message unit of claim 3 wherein the handshake protocol is delay-insensitive.
- 5. The first message unit of claim 1 wherein the data processing system is a synchronous data processing system and the execution cycle is determined with reference to a clock signal.
- 6. The first message unit of claim 1 wherein the first message array comprises a first message queue operable to store the first message, a first local queue descriptor operable to store first information relating to the first message queue, and a first remote queue descriptor operable to store second information relating to a remote message queue associated with a second message unit in the data processing system.
- 7. The first message unit of claim 6 wherein the first information defines available space in the first message queue, and the second information defines available space in the remote message queue.
- 8. The first message unit of claim 7 wherein the first message transfer circuitry is operable to send the first message to the remote queue irrespective of how the available space in the remote message queue relates to a boundary of the remote message queue.
- 9. The first message unit of claim 8 wherein the first message transfer circuitry is operable to fragment the first message to effect wrapping at the boundary of the remote message queue.
- 10. The first message unit of claim 7 wherein the first information in the first local queue descriptor comprises a first head pointer, a first tail pointer, and a first queue size for the first message queue, and the second information in the first remote queue descriptor comprises a second head pointer, a second tail pointer, and a second queue size for the remote message queue.
- 11. The first message unit of claim 6 wherein the first message transfer circuitry is operable to facilitate transfer of the first message to the remote message queue according to a multi-phase message transfer protocol.
- 12. The first message unit of claim 11 wherein the multi-phase message transfer protocol comprises sending the first message to the remote message queue, updating a second local queue descriptor associated with the remote message queue to reflect transfer of the first message, and updating the first remote queue descriptor to reflect processing of the first message at the second message unit.
- 13. The first message unit of claim 12 wherein the multi-phase message transfer protocol further comprises, before sending the first message, determining whether sufficient space is available in the remote message queue with reference to the first remote queue descriptor.
- 14. The first message unit of claim 12 wherein sending the first message comprises sending the first message in multiple message fragments where the message exceeds a first size.
- 15. The first message unit of claim 1 wherein the first message transfer circuitry comprises a message transfer engine for transferring the first message, and a transfer request queue for storing the first and additional message transfer requests on a first-in-first-out basis.
- 16. The first message unit of claim 15 wherein the first message transfer circuitry further comprises an address range locked array for storing message queue address ranges associated with the first and additional message transfer requests, the first message transfer circuitry being operable to inhibit issuance of any further message transfer requests corresponding to the address ranges.
- 17. The first message unit of claim 16 wherein the first message transfer circuitry further comprises a coprocessor operable to issue the first and additional message transfer requests to the transfer request queue, store the message queue address ranges in the address range locked array, inhibit issuance of the further message transfer requests, and facilitate storage of the first message in the first message array.
- 18. The first message unit of claim 17 wherein the coprocessor is operable to facilitate storage of the first message in the first message array by retrieving the first message from an external register file associated with the first message unit.
- 19. The first message unit of claim 18 wherein the coprocessor is further operable to facilitate transfer of the first message from the first message array to the external register file.
- 20. The first message unit of claim 1 wherein the first message transfer circuitry is operable to facilitate transfer of the first message to any of system memory associated with the data processing system, a processor associated with the data processing system, and an interface associated with the data processing system.
- 21. The first message unit of claim 1 wherein the first message transfer circuitry comprises a direct memory access transfer engine operable to facilitate transfer of the first message from the first message array directly to memory associated with another device in the data processing system without interacting with system memory associated with the data processing system.
- 22. An integrated circuit comprising the first message unit of claim 1.
- 23. The integrated circuit of claim 22 wherein the integrated circuit comprises any of a CMOS integrated circuit, a GaAs integrated circuit, and a SiGe integrated circuit.
- 24. The integrated circuit of claim 22 wherein the integrated circuit comprises a microprocessor.
- 25. At least one computer-readable medium having data structures stored therein representative of the first message unit of claim 1.
- 26. The at least one computer-readable medium of claim 25 wherein the data structures comprise a simulatable representation of the first message unit.
- 27. The at least one computer-readable medium of claim 26 wherein the simulatable representation comprises a netlist.
- 28. The at least one computer-readable medium of claim 25 wherein the data structures comprise a code description of the first message unit.
- 29. The at least one computer-readable medium of claim 28 wherein the code description corresponds to a hardware description language.
- 30. A set of semiconductor processing masks representative of at least a portion of the first message unit of claim 1.
- 31. A first message unit for transmitting messages in an asynchronous data processing system characterized by an execution cycle, the first message unit comprising:
a first message array comprising a first message queue, and a remote queue descriptor operable to store information relating to a remote message queue associated with a second message unit in the data processing system; a message transfer engine operable to facilitate a direct memory access transfer of a first message stored in a first portion of the first message queue to the remote message queue in response to a first message transfer request; a transfer request queue operable to store up to one additional message transfer request per execution cycle while the message transfer engine is facilitating transfer of the first message, and to maintain strict ordering between overlapping requests; and a coprocessor operable in conjunction with the message array and the message transfer engine to facilitate transfer of the first message to the remote message queue according to a multi-phase message transfer protocol comprising sending the first message to the remote message queue, updating a local queue descriptor associated with the remote message queue to reflect transfer of the first message, and updating the remote queue descriptor to reflect processing of the first message at the second message unit.
- 32. A method for effecting transfers of messages between message units in a data processing system characterized by an execution cycle, the method comprising:
in a first message unit comprising a first message queue, a first remote queue descriptor, and message transfer circuitry, generating a first message transfer request requesting transfer of a first message in the first message queue to a second message queue in a second message unit; while the message transfer circuitry is facilitating transfer of the first message, generating up to one additional message transfer request per execution cycle where each additional message transfer request targets a different portion of the first message queue than the first message; sending the first message to the remote message queue using a direct memory access transfer; updating a local queue descriptor associated with the remote message queue to reflect transfer of the first message; and updating the remote queue descriptor to reflect processing of the first message at the second message unit.
- 33. The method of claim 32 further comprising determining whether sufficient space is available in the remote message queue with reference to the remote queue descriptor.
- 34. The method of claim 32 wherein sending the first message comprises sending the first message in multiple message fragments where the first message exceeds a first size.
- 35. The method of claim 32 wherein sending the first message comprises sending the first message in multiple message fragments to effect wrapping at a boundary of the remote message queue.
- 37. The method of claim 32 wherein the message transfer circuitry comprises an address range locked array for storing message queue address ranges associated with the first and additional message transfer requests, the message transfer circuitry being operable to inhibit issuance of any further message transfer requests corresponding to the address ranges.
- 38. The method of claim 32 further comprising loading the first message into the first message queue from an external register file associated with the first message unit.
- 39. A data processing system, comprising a plurality of processors, system memory, and interconnect circuitry operable to facilitate communication among the plurality of processors and the system memory, the data processing system further comprising a message unit and a message array associated with each processor, the message units being operable to facilitate direct memory access transfers between the message arrays via the interconnect circuitry without accessing system memory.
- 40. The data processing system of claim 39 wherein the data processing system is an asynchronous data processing system characterized by an asynchronous handshake protocol.
- 41. The data processing system of claim 40 wherein the asynchronous handshake protocol between a first sender and a first receiver in the data processing system comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 42. The first message unit of claim 41 wherein the handshake protocol is delay-insensitive.
- 43. The data processing system of claim 39 wherein the data processing system is a synchronous data processing system employing a clock signal.
- 44. The data processing system of claim 39 wherein the data processing system is characterized by an execution cycle, and wherein each message unit is operable to facilitate transfer of a message stored in a first portion of the corresponding message array in response to a first message transfer request, each message unit being further operable to store up to one additional message transfer request per execution cycle while facilitating transfer of the message, and to maintain strict ordering between overlapping requests.
- 45. The data processing system of claim 44 wherein each message array comprises a message queue operable to store the message, a local queue descriptor operable to store first information relating to the message queue, and a plurality of remote queue descriptors each being operable to store second information relating to a corresponding one of the message queues associated with another one of the message units.
- 46. The data processing system of claim 45 wherein each message unit is operable to facilitate transfer of the message to another message unit according to a multi-phase message transfer protocol.
- 47. The data processing system of claim 46 wherein the multi-phase message transfer protocol comprises sending the message to the message queue associated with the other message unit, updating the local queue descriptor associated with the message queue in the other message unit to reflect transfer of the message, and updating the remote queue descriptor corresponding to the message queue in the other message unit to reflect processing of the message at the other message unit.
- 48. The data processing system of claim 47 wherein the multi-phase message transfer protocol further comprises, before sending the message, determining whether sufficient space is available in the message queue in the other message unit with reference to the corresponding remote queue descriptor.
- 49. The data processing system of claim 44 wherein each message unit is operable to store message queue address ranges associated with the first and additional message transfer requests, each message unit being further operable to inhibit issuance of any further message transfer requests corresponding to the address ranges.
- 50. The data processing system of claim 44 wherein each message unit is operable to facilitate storage of the message in the associated message array by retrieving the message from an external register file associated with the corresponding processor.
- 51. The data processing system of claim 50 wherein each message unit is further operable to facilitate transfer of the message from the associated message array to the external register file.
- 52. The data processing system of claim 39 wherein each message unit is further operable to facilitate direct memory access transfers from the associated message array the system memory.
- 53. The data processing system of claim 39 further comprising a plurality of interfaces operable to communicate with each other and any of the processors and system memory via the interconnect circuitry, each interface having a message unit and a message array associated therewith, each message unit being operable to facilitate direct memory access transfers between the message arrays via the interconnect circuitry without accessing system memory.
- 54. The data processing system of claim 53 wherein the message units operable to implement a plurality of message transfer path topologies using any combination of interface-to-processor transfer, interface-to-interface transfer, processor-to-processor transfer, and processor-to-interface transfer.
- 55. The data processing system of claim 54 wherein the data processing system is a packet-based system, and the message units are operable to implement a first processor pipeline in which first data packets are transferred between the message units associated with a first series of the processors.
- 56. The data processing system of claim 55 wherein the first processor pipeline receives the first data packets from the message unit associated with a first one of the interfaces and transmits the first data packets to the message unit associated with a second one of the interfaces.
- 57. The data processing system of claim 55 wherein the first data packets each comprises a header and a payload, the message unit associated with a first one of the processors in the first processor pipeline being operable to transfer the headers to a next one of the processors in the first processor pipeline and to store the payloads in the system memory, the message unit associated with a final one of the processors in the first processor pipeline being operable to retrieve the payloads from the system memory and recombine the payloads with the corresponding headers.
- 58. The data processing system of claim 55 wherein the message units are further operable to implement a second processor pipeline in which second data packets are transferred between the message units associated with a second series of the processors.
- 59. The data processing system of claim 58 wherein the first processor pipeline represents an ingress data path and the second processor pipeline represents an egress data path.
- 60. The data processing system of claim 59 wherein a particular one of the processors and its corresponding message unit are operable to manage the ingress and egress data paths.
- 61. The data processing system of claim 54 wherein the data processing system is a packet-based system, and the message unit associated with a first one of the processors is operable to distribute data packets among the message units associated with others of the processors to effect load balanced processing of the data packets.
- 62. The data processing system of claim 61 wherein the message unit associated with the first processor is further operable to receive the processed data packets from the message units associated with the other processors.
- 63. The data processing system of claim 62 wherein the data packets each comprises a header and a payload, the message unit associated with the first processors further being operable to transfer the headers to the other processors and to store the payloads in the system memory, the message unit associated with the first processor also being operable to retrieve the payloads from the system memory and recombine the payloads with the corresponding headers after processing by the other processors.
- 64. The data processing system of claim 53 wherein each of the interfaces comprises a serial interface.
- 65. The data processing system of claim 64 wherein the serial interface comprises a System Packet Interface Level 4 (SPI-4).
- 66. The data processing system of claim 39 wherein each of the processors comprises a 32-bit integer-only processor based on MIPS Technologies' MIPS32 Instruction Set Architecture (ISA).
- 67. The data processing system of claim 39 wherein the interconnect circuitry comprises an asynchronous crossbar operable to route a first number of input channels to a second number of output channels in all possible combinations.
- 68. The data processing system of claim 39 wherein each message unit is integrated with the associated processor.
- 69. At least one integrated circuit comprising the data processing system of claim 39.
- 70. The at least one integrated circuit of claim 69 wherein the at least one integrated circuit comprises any of a CMOS integrated circuit, a GaAs integrated circuit, and a SiGe integrated circuit.
- 71. At least one computer-readable medium having data structures stored therein representative of the data processing system of claim 39.
- 72. The at least one computer-readable medium of claim 71 wherein the data structures comprise a simulatable representation of the data processing system.
- 73. The at least one computer-readable medium of claim 72 wherein the simulatable representation comprises a netlist.
- 74. The at least one computer-readable medium of claim 71 wherein the data structures comprise a code description of the data processing system.
- 75. The at least one computer-readable medium of claim 74 wherein the code description corresponds to a hardware description language.
- 76. A set of semiconductor processing masks representative of at least a portion of the data processing system of claim 39.
- 77. The data processing system of claim 39 wherein the data processing system comprises any one of a service provisioning platform, a packet-over-SONET platform, a metro ring platform, a storage area switch, a storage area gateway, a multi-protocol router, an edge router, a core router, a cable headend system, a wireless headend system, an integrated web server, an application server, a content cache, a load balancer, and an IP telephony gateway.
- 78. A data transmission system, comprising a plurality of interfaces and interconnect circuitry operable to facilitate communication among the plurality of interfaces, the data transmission system further comprising a message unit and a message array associated with each interface, the message units being operable to facilitate direct memory access transfers between the message arrays via the interconnect circuitry.
- 79. The data transmission system of claim 78 wherein the interconnect circuitry comprises an asynchronous crossbar operable to route a first number of input channels to a second number of output channels in all possible combinations.
- 80. The data transmission system of claim 78 wherein each of the interfaces comprises a serial interface.
- 81. The data transmission system of claim 80 wherein the serial interface comprises a System Packet Interface Level 4 (SPI-4).
- 82. The data transmission system of claim 78 wherein the data transmission system is an asynchronous data transmission system characterized by an asynchronous handshake protocol.
- 83. The data transmission system of claim 82 wherein the asynchronous handshake protocol between a first sender and a first receiver in the data transmission system comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 84. The first message unit of claim 83 wherein the handshake protocol is delay-insensitive.
- 85. The data transmission system of claim 78 wherein the data transmission system is a synchronous data transmission system employing a clock signal.
- 86. The data transmission system of claim 78 wherein the data transmission system is characterized by an execution cycle, and wherein each message unit is operable to facilitate transfer of a message stored in a first portion of the corresponding message array in response to a first message transfer request, each message unit being further operable to store up to one additional message transfer request per execution cycle while facilitating transfer of the message, and to maintain strict ordering between overlapping requests.
- 87. The data transmission system of claim 86 wherein each message array comprises a message queue operable to store the message, a local queue descriptor operable to store first information relating to the message queue, and a plurality of remote queue descriptors each being operable to store second information relating to a corresponding one of the message queues associated with another one of the message units.
- 88. The data transmission system of claim 87 wherein each message unit is operable to facilitate transfer of the message to another message unit according to a multi-phase message transfer protocol.
- 89. The data transmission system of claim 88 wherein the multi-phase message transfer protocol comprises sending the message to the message queue associated with the other message unit, updating the local queue descriptor associated with the message queue in the other message unit to reflect transfer of the message, and updating the remote queue descriptor corresponding to the message queue in the other message unit to reflect processing of the message at the other message unit.
- 90. The data transmission system of claim 89 wherein the multi-phase message transfer protocol further comprises, before sending the message, determining whether sufficient space is available in the message queue in the other message unit with reference to the corresponding remote queue descriptor.
RELATED APPLICATION DATA
[0001] The present application claims priority from U.S. Provisional Patent Application No. 60/429,153 entitled MESSAGE UNIT filed on Nov. 25, 2002, the entire disclosure of which is incorporated herein by reference for all purposes.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60429153 |
Nov 2002 |
US |