Preparing the minipage layout can be done in both static and dynamic fashion. Static layout may divide each memory page into k minipages of equal size. This way, it is easy to calculate the minipage borders when a fault occurs. Static layout may therefore be appropriate for general purpose caching and global memory systems, in order to reduce the page size by a fixed factor [10]. In the dynamic layout each allocation in the shared memory defines its own minipage according to the allocation size, and this minipage is associated with its own vpage. The system should therefore store and maintain a minipage-table (MPT) with the appropriate pair specified for each minipage. Large allocations should still reside in a contiguous region of addresses.
MILLIPAGE design is based on the dynamic layout; it is this option on which we focus in the rest of this paper.