Claims
- 1. A method of performing remote address translation in a multiprocessor system, comprising:
determining a virtual address at a local node; accessing a local connection table at the local node to produce a system node identifier for a remote node; communicating the virtual address to the remote node; and translating the virtual address to a physical address at the remote node.
- 2. The method of claim 1, wherein the local connection table is indexed with a connection descriptor, and wherein accessing the local connection table includes applying the connection descriptor to the local connection table to produce the system node identifier for the remote node.
- 3. The method of claim 2, wherein determining the virtual address is performed by a user process running at the local node.
- 4. The method of claim 2, wherein accessing the local connection table includes indexing the local connection table using the connection descriptor as an index.
- 5. The method of claim 1, wherein accessing the local connection table also produces a remote address space number, wherein communicating includes communicating the remote address space number to the remote node, and wherein translating includes qualifying the virtual address by the remote address space number.
- 6. The method of claim 1, wherein translating includes matching the virtual address with an entry of a translation-lookaside buffer at the remote node.
- 7. The method of claim 5, wherein translating further includes matching the virtual address and the remote address space number with an entry of a translation-lookaside buffer at the remote node.
- 8. The method of claim 1, wherein the local node and the remote node are located within a distributed shared memory multiprocessor system.
- 9. The method of claim 1, wherein the local node is located within a first cluster and the remote node is located within a second cluster.
- 10. An apparatus for performing remote address translation in a multiprocessor system, comprising:
means for determining a connection descriptor and a virtual address at a local node; means for accessing a local connection table at the local node using the connection descriptor to produce a system node identifier for a remote node; means for communicating the virtual address to the remote node; and means for translating the virtual address to a physical address at the remote node.
- 11. The apparatus of claim 10, wherein the translating means includes a translation-lookaside buffer at the remote node.
- 12. The apparatus of claim 11, wherein the accessing means is also for producing a remote address space number, the communicating means is also for communicating the remote address space number to the remote node, and the translating means uses the remote address space number to qualify the translation.
- 13. A mechanism for performing a memory access operation in a multiprocessor system which includes a plurality of processing element nodes interconnected by an interconnect network, each processing element node including a processor, a local memory and an interface circuit connected to the interconnect network, comprising:
a communication engine located in a local processing element node, the communication engine configured to be programmable by a user process to perform a user-level memory access operation using a user-specified virtual address; and a translation-lookaside buffer located in a remote processing element node, the translation-lookaside buffer configured to receive the virtual address from the communication engine and to translate the virtual address to a physical address, wherein the physical address is used to perform the memory access operation.
- 14. The mechanism of claim 13, wherein the communication engine is further configured to receive a connection descriptor along with the virtual address from the user process and, when the connection descriptor specifies the remote processing element node as being an endpoint node for performing the address translation, to communicate the virtual address to the translation-lookaside buffer for translation.
- 15. The mechanism of claim 13, wherein the communication engine is programmable by the user process to perform a block transfer operation.
- 16. The mechanism of claim 15, wherein the communication engine can be programmed to perform a block transfer operation within the local processing element node, within the remote processing element node, or in either direction between the local processing element node and the remote processing element node.
- 17. The mechanism of claim 13, wherein the communication engine is programmable by the user process to perform an atomic memory operation.
- 18. The mechanism of claim 17, wherein the communication engine can be programmed to perform an atomic memory operation on a memory location within either the local processing element node or the remote processing element node.
- 19. The mechanism of claim 13, wherein the communication engine is programmable by the user process to perform an immediate data send operation.
- 20. The mechanism of claim 13, wherein the communication engine is programmable by the user process to perform a scalar fill operation.
- 21. The mechanism of claim 13, wherein the communication engine includes a plurality of communication interfaces which are each configured to be programmed by a user process to perform a user-level memory access operation using a virtual address, and the communication engine is configured to multiplex memory access operations among requests received from the plurality of communication interfaces.
- 22. The mechanism of claim 13, wherein the communication engine includes at least one communication interface, each communication interface including at least one user-accessible interface register for controlling the memory access operation.
- 23. The mechanism of claim 22, wherein each communication interface includes a plurality of user-accessible interface registers which include at least one of a data register for specifying immediate data to be transferred and a source virtual address register for specifying the virtual address of a source memory buffer, a destination virtual address register for specifying the virtual address of a destination memory buffer, and a command register for specifying a memory access operation command.
- 24. The mechanism of claim 23, wherein the command register provides for specifying a type of memory access operation selected from the group consisting of a memory copy operation, a scalar fill operation, an immediate data send operation, and an atomic memory operation.
- 25. The mechanism of claim 23, wherein the communication interface is configured to be programmable by a user process to perform a block transfer, and the command register provides for specifying the length of the block transfer.
- 26. The mechanism of claim 13, wherein the communication engine is further configured to receive a connection descriptor from the user process, the connection descriptor being used to specify a target node for translating the virtual address.
- 27. The mechanism of claim 26, wherein the communication engine is further configured to access a local connection table at the local processing element node using the connection descriptor to produce a system node identifier for the target node, and to communicate the virtual address to the target node for translation.
- 28. The mechanism of claim 13, further comprising a local translation-lookaside buffer in the local processing element node configured to receive the virtual address from the communication engine and to translate the virtual address to the physical address for performing the memory access operation, wherein the communication engine is configured to receive a connection descriptor from the user process which specifies a target node for performing the address translation, and to transmit the virtual address to the remote processing element node for translation if the remote processing element node is specified as the target node and to the local processing element node for translation if the local processing element node is the target node.
- 29. The mechanism of claim 13, wherein the communication engine is directly programmable by the user process.
- 30. The mechanism of claim 13, wherein the communication engine is programmable to process a plurality of memory access operations specified by entries placed by the user process within a transfer descriptor queue.
- 31. The mechanism of claim 13, wherein the local and the remote processing element nodes are located in a distributed shared memory multiprocessor system.
- 32. The mechanism of claim 13, wherein the local processing element node is located within a first machine of a clustered system, and the remote processing element node is located within a second machine of the clustered system.
CROSS-REFERENCES TO RELATED INVENTION
[0001] The present invention is related to the following application, which is filed on even date herewith, and which is incorporated herein by reference:
[0002] U.S. Pat. Appl. Serial No.______ , filed Dec. 14, 2001, entitled “NODE TRANSLATION AND PROTECTION IN A CLUSTERED MULTIPROCESSOR SYSTEM” (Atty. Docket No. 499.710US1).
Provisional Applications (1)
|
Number |
Date |
Country |
|
60255620 |
Dec 2000 |
US |