Patent ID: 7577816

Claim:
A method of accessing shared memory in a computer system having a plurality of nodes, wherein each node includes a processor, a Translation Look-aside Buffer (TLB) associated with the processor and local memory wherein the local memory of each node includes a Remote Translation Table (RTT), the method comprising: distributing an application across the plurality of nodes; building an application virtual address space in each of the plurality of nodes, wherein building an application virtual address space includes: building a local virtual address space for the application in each of the plurality of nodes, wherein the local virtual address space translates a virtual address generated by the application executing on that node to a physical address in local memory for that node, wherein the virtual address generated by the application executing on the node includes a node number of the node; determining whether remote translation should be enabled; and if remote translation should be enabled, exporting the local virtual address space for each local node to the RTTs in each of the plurality of nodes, wherein exporting includes: requesting that the operating system on each node of the plurality of nodes enable remote translation; and shadowing the local virtual address spaces for each node across the plurality of nodes; if remote translation is enabled, translating a virtual memory reference to a physical memory address using the application virtual address space in the local RTT in each of the plurality of nodes, wherein translating the virtual memory reference includes translating in a source node the node number of the application virtual address into a node address associated with a remote node of the plurality of nodes and translating bits of the application virtual address into a physical page address for the remote node; and if remote translation is not enabled, sending the virtual memory reference to the remote node and translating the virtual memory reference into a physical address in local memory for the remote node using the local virtual address space in the RTT on the remote node.