Memory management for virtual address space with translation units of variable range size
First Claim
1. A method for managing a virtual memory space, the method comprising:
- providing a pool of physical addresses;
receiving a request for a virtual memory allocation from a client;
creating a plurality of clusters from the pool, wherein each cluster represents a plurality of physical addresses selected from the pool and wherein the respective pluralities of physical addresses represented by different ones of the plurality of clusters correspond to different amounts of memory, and wherein different ones of the clusters include references to different numbers of blocks of contiguous physical addresses;
removing from the pool the physical addresses represented by each cluster that is created;
for each of the clusters, defining a mapped virtual address representing a mapping between a range of virtual addresses in the virtual memory space and the physical addresses represented by the cluster; and
returning a reference to the mapped virtual address to the client.
0 Assignments
0 Petitions
Accused Products
Abstract
In a virtual memory system, address translation information is provided using a cluster that is associated with some range of virtual addresses and that can be used to translate any virtual address in its range to a physical address, where the sizes of the ranges mapped by different clusters may be different. Clusters are stored in an address translation table that is indexed by virtual address so that, starting from any valid virtual address, the appropriate cluster for translating that address can be retrieved from the translation table. The clusters are dynamically created from a fragmented pool of physical addresses as new virtual address mappings are requested by consumers of the virtual memory space.
61 Citations
16 Claims
-
1. A method for managing a virtual memory space, the method comprising:
-
providing a pool of physical addresses; receiving a request for a virtual memory allocation from a client; creating a plurality of clusters from the pool, wherein each cluster represents a plurality of physical addresses selected from the pool and wherein the respective pluralities of physical addresses represented by different ones of the plurality of clusters correspond to different amounts of memory, and wherein different ones of the clusters include references to different numbers of blocks of contiguous physical addresses; removing from the pool the physical addresses represented by each cluster that is created; for each of the clusters, defining a mapped virtual address representing a mapping between a range of virtual addresses in the virtual memory space and the physical addresses represented by the cluster; and returning a reference to the mapped virtual address to the client. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for managing a virtual memory space, the method comprising:
-
providing a pool of physical addresses; receiving a request for a virtual memory allocation from a client; iteratively forming clusters from the physical addresses for at least portion of the physical addresses, wherein forming clusters from the physical address includes; sorting the pool of physical addresses into groups of contiguous addresses; determining whether all groups in the pool can be represented by a same cluster; if all of the groups cannot be represented by the same cluster, dividing the pool into two subpools and iteratively forming clusters from each of the subpools; if all of the groups can be represented by the same cluster, accepting the cluster and removing from the pool the physical addresses represented by the cluster; and for each of the clusters, defining a mapped virtual address representing a mapping between a range of virtual addresses in the virtual memory space and the physical addresses represented by the cluster; selecting a range of mapped virtual addresses to be allocated to the client, the range of mapped virtual address being associated with one or more clusters; and returning a reference to the selected range of mapped virtual addresses to the client. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A method for managing a virtual memory space, the method comprising:
-
providing a pool of physical addresses; receiving a request for a virtual memory allocation from a client; sorting the pool of physical addresses into groups of contiguous addresses; setting a target range size to a maximum threshold size; forming as many clusters from the groups of contiguous addresses as possible from the groups of contiguous addresses; removing from the pool the physical addresses represented by each cluster that is created; for each of the clusters, defining a mapped virtual address representing a mapping between a range of virtual addresses in the virtual memory space and the physical addresses represented by the cluster; and returning a reference to the mapped virtual address to the client. - View Dependent Claims (15, 16)
-
Specification