Conventional paging systems do not perform well with large object-oriented environments (such as Smalltalk-80) due to the fine granularity of objects and the persistence of the object space. One approach taken to increase efficiency has been to group objects together in virtual space in an attempt to keep related objects on the same page. Conventionally, grouping has been performed whilst the system is inactive with the objects being ordered in virtual space according to a depth- or breadth-first traversal of the graph formed by the pointers between objects. Whilst such static grouping reduces the amount of paging compared with an arbitrarily grouped system, it is not sufficiently effective to eliminate the paging problems of large persistent object-oriented applications.
As part of current research on architectures for high-performance object-oriented machines, a novel dynamically grouped virtual memory system was developed and extensively simulated. With dynamic grouping, objects reside in a virtual object memory and are accessed by pointer-offset addresses. Objects are transferred between primary memory and disk in groups which are determined at run time. Our simulations show that dynamic grouping strategies can achieve significantly better performance than static grouping. In a previous paper static and dynamic grouping were simulated and it was discovered that for reasonable memory sizes dynamic grouping reduced page faults by up to three times compared with static grouping.
This paper will describe an ideal dynamically grouped virtual memory and will investigate different practical realisations of dynamic grouping schemes. The results of comprehensive simulations of practical implementations will be presented and cost-performance estimations will be compared with conventional memory systems.