Address Translation Strategies in the Texas Persistent Store

Texas is a highly portable, high-performance persistent object store that can be used with conventional compilers and operating systems, without the need for a preprocessor or special operating system privileges. Texas uses pointer swizzling at page fault time as its primary address translation mechanism, translating addresses from a persistent format into conventional virtual addresses for an entire page at a time as it is loaded into memory. Existing classifications of persistent systems typically focus only on address translation taxonomies based on semantics that we consider to be confusing and ambiguous. Instead, we contend that the granularity choices for design issues are much more important because they facilitate classification of different systems in an unambiguous manner unlike the taxonomies based only on address translation. We have identified five primary design issues that we believe are relevant in this context. We describe these design issues in detail and present a new general classification for persistence based on the granularity choices for these issues. Although the coarse granularity of pointer swizzling at page fault time is efficient in most case, it is sometimes desirable to use finer-grained techniques. We examine different issues related to fine-grained address translation mechanisms, and discuss why these are not suitable as general-purpose address translation techniques. Instead, we argue for a mixed-granularity approach where a coarse-grained mechanism is used as the primary address translation scheme, and a fine-grained approach is used for specialized data structures that are less suitable for the coarse-grained approach. We have incorporated fine-grained address translation in Texas using the C++ smart pointer idiom, allowing programmers to choose the kind of pointer used for any data member in a particular class definition. This approach maintains the important features of the system: persistence that is orthogonal to type, high performance with standard compilers and operating systems, suitability for huge shared address spaces across heterogeneous platforms, and the ability to optimize away pointer swizzling costs when the persistent store is smaller than the hardware-supported virtual address size.

[1]  David J. DeWitt,et al.  Persistence in E Revisited - Implementation Experiences , 1990, POS.

[2]  Sheetal V. Kakkad,et al.  Address Translation and Storage Management for Persistent Object Stores , 1997 .

[3]  David J. DeWitt,et al.  The oo7 Benchmark , 1993, SIGMOD Conference.

[4]  R. G. G. Cattell,et al.  The Engineering Database Benchmark , 1994, The Benchmark Handbook.

[5]  J. Eliot B. Moss,et al.  Working with Persistent Objects: To Swizzle or Not to Swizzle , 1992, IEEE Trans. Software Eng..

[6]  Vivek Singhal,et al.  Texas: An Efficient, Portable Persistent Store , 1992, POS.

[7]  Marvin H. Solomon,et al.  A trace-based simulation of pointer swizzling techniques , 1995, Proceedings of the Eleventh International Conference on Data Engineering.

[8]  Bjarne Stroustrup The Evolution of C++: 1985 to 1989 , 1989, Comput. Syst..

[9]  Michael J. Carey,et al.  Persistence in the E Language: Issues and Implementation , 1989, Softw. Pract. Exp..

[10]  Bjarne Stroustrup The Evolution of C , 1987 .

[11]  Seth J. White Pointer Swizzling Techniques for Object-Oriented Database Systems , 1994, Technical Report / University of Wisconsin, Madison / Computer Sciences Department.

[12]  David J. DeWitt,et al.  A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies , 1992, VLDB.

[13]  Daniel R. Edelson Smart Pointers: They're Smart, But They're Not Pointers , 1992, C++ Conference.

[14]  Henry M. Levy,et al.  Evaluation of OO7 as a system and an application benchmark , 1995 .

[15]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[16]  Craig Chambers,et al.  The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages , 1992 .

[17]  David J. DeWitt,et al.  The 007 Benchmark , 1993, SIGMOD '93.

[18]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[19]  R. G. G. Cattell,et al.  Object operations benchmark , 1992, TODS.

[20]  Kumar V. Vadaparty Pointer Swizzling at Page-Fault Time , 1995, J. Object Oriented Program..

[21]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[22]  P. R. Wilson,et al.  Pointer swizzling at page fault time: efficiently and compatibly supporting huge address spaces on standard hardware , 1992, [1992] Proceedings of the Second International Workshop on Object Orientation in Operating Systems.

[23]  Richard Jones,et al.  Garbage collection , 1996 .

[24]  Yannis Smaragdakis,et al.  The Case for Compressed Caching in Virtual Memory Systems , 1999, USENIX Annual Technical Conference, General Track.