Distributed shared memory system with variable granularity
First Claim
1. A method for controlling access to a physical memory in a distributed shared memory system (DSM), which includes a plurality of host processors that are configured to access pages having a predetermined page size in the physical memory, the method comprising:
- selecting one of the pages of the physical memory in which to store a plurality of data items, including at least first and second data items;
dividing the selected page of the physical memory into a plurality of minipages, including at least first and second minipages containing the first and second data items, respectively;
mapping both first and second virtual pages, in a virtual memory space of the processors, to the selected page of the physical memory, such that the first and second virtual pages are associated respectively with the first and second minipages, and the first data item receives a first address on the first virtual page, while the second data item receives a second address on the second virtual page;
applying first and second access permissions to the first and second virtual pages, respectively;
receiving requests by a process running on one of the host processors to access the first and second data items via the respective first and second addresses on the first and second virtual pages; and
permitting the process, responsive to the requests, to access the first data item subject to the first access permission and the second data item subject to the second access permission.
6 Assignments
0 Petitions
Accused Products
Abstract
A method for controlling access to a physical memory in a distributed shared memory system (DSM) includes selecting a page of the physical memory in which to store a plurality of data items, including at least first and second data items. The selected page of the physical memory is divided into a plurality of minipages, including at least first and second minipages containing the first and second data items, respectively. First and second virtual pages are mapped to the selected page of the physical memory, such that the first and second virtual pages are associated respectively with the first and second minipages, with first and second access permissions applied to the first and second virtual pages, respectively. A process is permitted to access the first data item subject to the first access permission and the second data item subject to the second access permission, via the respective first and second virtual pages.
58 Citations
38 Claims
-
1. A method for controlling access to a physical memory in a distributed shared memory system (DSM), which includes a plurality of host processors that are configured to access pages having a predetermined page size in the physical memory, the method comprising:
-
selecting one of the pages of the physical memory in which to store a plurality of data items, including at least first and second data items;
dividing the selected page of the physical memory into a plurality of minipages, including at least first and second minipages containing the first and second data items, respectively;
mapping both first and second virtual pages, in a virtual memory space of the processors, to the selected page of the physical memory, such that the first and second virtual pages are associated respectively with the first and second minipages, and the first data item receives a first address on the first virtual page, while the second data item receives a second address on the second virtual page;
applying first and second access permissions to the first and second virtual pages, respectively;
receiving requests by a process running on one of the host processors to access the first and second data items via the respective first and second addresses on the first and second virtual pages; and
permitting the process, responsive to the requests, to access the first data item subject to the first access permission and the second data item subject to the second access permission. - 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)
bunching the plurality of minipages together to form minipage groups, each group comprising two or more of the minipages;
mapping a third virtual page to the selected page of the physical memory, such that the third virtual page is associated with the minipage group containing the first and second minipages, and the first and second data items both receive respective third addresses on the third virtual page;
applying a third access permission to the third virtual page;
receiving a further request by the process to access both of the first and second data items via the respective third addresses on the third virtual page; and
permitting the process, responsive to the further request, to access both of the first and second data items subject to the third access permission.
-
-
19. A method according to claim 18, wherein bunching the plurality of minipages together comprises bunching together two or more of the minipage groups that are not mutually overlapping to form another of the minipage groups.
-
20. A method according to claim 18, wherein receiving the requests by the process to access the first and second data items via the first and second virtual pages comprises receiving the requests from an application process during a first, fine-granularity phase of the process, and wherein receiving the further request to access both of the data items via the third virtual page comprises receiving the further request during a second, coarse-granularity phase of the process.
-
21. A method according to claim 20, and comprising setting a barrier point in an application program corresponding to the process, at which point the process switches between the fine- and coarse-granularity phases.
-
22. A method according to claim 20, and comprising detecting a pattern of access to the minipages by the host processors, and switching between the fine- and coarse-granularity phases responsive to the pattern.
-
23. A method according to claim 22, wherein detecting the pattern comprises detecting, during the coarse-granularity phase, a likelihood of false sharing among the host processors accessing the third virtual page.
-
24. A method according to claim 22, wherein detecting the pattern comprises detecting, during the fine-granularity phase, that one of the host processors is accessing consecutively a predetermined number of the minipages that are arranged in succession on the page of the physical memory.
-
25. A method according to claim 20, wherein permitting the process to access the first data item subject to the first access permission, comprises, after switching from the coarse- to the fine-granularity phase, determining the third access permission that was in effect in the coarse-granularity phase.
-
26. A method according to claim 18, wherein permitting the process to access both of the first and second data items comprises conveying to the host processor an up-to-date copy of the first data item from a first one of the other host processors, and conveying an up-to-date copy of the second data item from a second one of the host processors.
-
27. A method according to claim 26, wherein permitting the process to access both of the first and second data items comprises setting the third access permission so as to forbid access by the process until the up-to-date copies have been conveyed to the host processor, and then setting the third access permission so as to permit the requested access.
-
28. A method according to claim 18, wherein permitting the process to access the first data item subject to the first access permission comprises, after permitting the process to access the data items subject to the third access permission, setting the first access permission to enable the process to access the first data item based on the third access permission that was applied previously.
-
29. A method for controlling access to a physical memory in a distributed shared memory system (DSM), which includes a plurality of host processors that are configured to access pages having a predetermined page size in the physical memory, the method comprising:
-
selecting a sequence of the pages of the physical memory in which to store a plurality of data items;
dividing each of the pages of the physical memory in the sequence into a plurality of minipages, including at least first and second minipages;
storing a respective first one of the data items in each of the first minipages, and a respective second one of the data items in each of the second minipages, whereby the data items stored in the first minipages constitute a first group, and the data items stored in the second minipages constitute a second group;
mapping respective first and second virtual pages, in a virtual memory space of the processors, to each of the pages of the physical memory in the sequence, such that the first and second virtual pages are associated respectively with the first and second minipages on each of the pages in the physical memory, and the first data item on each of the pages of the physical memory receives a first address on the respective first virtual page, while the second data item on each of the pages of the physical memory receives a second address on the respective second virtual pages;
applying respective access permissions to the virtual pages;
receiving a request by a process running on one of the host processors to access the data items in a selected one of the first and second groups over a sequential range of the pages of the physical memory via the respective addresses on the virtual pages that are associated with the minipages of the selected group; and
permitting the process, responsive to the requests, to access the data items over the sequential range subject to the access permissions applied to the virtual pages. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. Multiprocessor computing apparatus, comprising:
-
a plurality of host processors, which are mutually linked by a data communication network; and
a physical memory, arranged as a distributed shared memory among the processors, wherein the processors are configured to access pages having a predetermined page size in the physical memory, wherein the processors are programmed to select one of the pages of the physical memory in which to store a plurality of data items, including at least first and second data items, to divide the selected page of the physical memory into a plurality of minipages, including at least first and second minipages containing the first and second data items, respectively, to map both first and second virtual pages, in a virtual memory space of the processors, to the selected page of the physical memory, such that the first and second virtual pages are associated respectively with the first and second minipages, and the first data item receives a first address on the first virtual page, while the second data item receives a second address on the second virtual page, and to apply first and second access permissions to the first and second virtual pages, respectively, such that upon receiving requests by a process running on one of the host processors to access the first and second data items via the respective first and second addresses on the first and second virtual pages, the processors are adapted to permit the process, responsive to the requests, to access the first data item subject to the first access permission and the second data item subject to the second access permission.
-
-
36. Multiprocessor computing apparatus, comprising:
-
a plurality of host processors, which are mutually linked by a data communication network; and
a physical memory, arranged as a distributed shared memory among the processors, wherein the processors are configured to access pages having a predetermined page size in the physical memory, wherein the processors are programmed to select a sequence of the pages of the physical memory in which to store a plurality of data items, to divide each of the pages of the physical memory in the sequence into a plurality of minipages, including at least first and second minipages, to store a respective first one of the data items in each of the first minipages, and a respective second one of the data items in each of the second minipages, whereby the data items stored in the first minipages constitute a first group, and the data items stored in the second minipages constitute a second group, to map respective first and second virtual pages, in a virtual memory space of the processors, to each of the pages of the physical memory in the sequence, such that the first and second virtual pages are associated respectively with the first and second minipages on each of the pages in the physical memory, and the first data item on each of the pages of the physical memory receives a first address on the respective first virtual page, while the second data item on each of the pages of the physical memory receives a second address on the respective second virtual pages, and to apply respective access permissions to the virtual pages, such that upon receiving a request by a process running on one of the host processors to access the data items in a selected one of the first and second groups over a sequential range of the pages of the physical memory via the respective addresses on the virtual pages that are associated with the minipages of the selected group, the processors are adapted to permit the process, responsive to the requests, to access the data items over the sequential range subject to the access permissions applied to the virtual pages.
-
-
37. A computer software product, for controlling access to a physical memory in a distributed shared memory system (DSM), which includes a plurality of host processors that are configured to access pages having a predetermined page size in the physical memory, the product comprising a computer-readable medium in which program instructions are stored, which instructions, when read by the host processors, cause the processors to select one of the pages of the physical memory in which to store a plurality of data items, including at least first and second data items, to divide the selected page of the physical memory into a plurality of minipages, including at least first and second minipages containing the first and second data items, respectively, to map both first and second virtual pages, in a virtual memory space of the processors, to the selected page of the physical memory, such that the first and second virtual pages are associated respectively with the first and second minipages, and the first data item receives a first address on the first virtual page, while the second data item receives a second address on the second virtual page, and to apply first and second access permissions to the first and second virtual pages, respectively,
wherein when the processors receive requests by a process running on one of the host processors to access the first and second data items via the respective first and second addresses on the first and second virtual pages, the instructions cause the processors to permit the process, responsive to the requests, to access the first data item subject to the first access permission and the second data item subject to the second access permission.
-
38. A computer software product, for controlling access to a physical memory in a distributed shared memory system (DSM), which includes a plurality of host processors that are configured to access pages having a predetermined page size in the physical memory, the product comprising a computer-readable medium in which program instructions are stored, which instructions, when read by the host processors, cause the processors to select a sequence of the pages of the physical memory in which to store a plurality of data items, to divide each of the pages of the physical memory in the sequence into a plurality of minipages, including at least first and second minipages, to store a respective first one of the data items in each of the first minipages, and a respective second one of the data items in each of the second minipages, whereby the data items stored in the first minipages constitute a first group, and the data items stored in the second minipages constitute a second group, to map respective first and second virtual pages, in a virtual memory space of the processors, to each of the pages of the physical memory in the sequence, such that the first and second virtual pages are associated respectively with the first and second minipages on each of the pages in the physical memory, and the first data item on each of the pages of the physical memory receives a first address on the respective first virtual page, while the second data item on each of the pages of the physical memory receives a second address on the respective second virtual pages, and to apply respective access permissions to the virtual pages,
wherein when the processors receive a request by a process running on one of the host processors to access the data items in a selected one of the first and second groups over a sequential range of the pages of the physical memory via the respective addresses on the virtual pages that are associated with the minipages of the selected group, the instructions cause the processors to permit the process, responsive to the requests, to access the data items over the sequential range subject to the access permissions applied to the virtual pages.
Specification