Issue No. 06 - June (1998 vol. 31)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/2.683005
Virtual memory was developed to automate the movement of program code and data between main memory and secondary storage to give the appearance of a single large store. This technique greatly simplified the programmer's job, particularly when program code and data exceeded the main memory's size. Virtual memory has now become widely used, and most modern processors have hardware to support it. Unfortunately, there has not been much agreement on the form that this support should take. The result of this lack of agreement is that hardware mechanisms are often completely incompatible. Thus, designers and porters of system-level software have two somewhat unattractive choices: They can write software to fit many different architectures or they can insert layers of software to emulate a particular hardware interface. In this article, the authors present the software mechanisms of virtual memory from a hardware perspective and then describe several hardware examples and how they support virtual-memory software. Their focus is to show the diversity of virtual-memory support and, by implication, how this diversity complicates the design and porting of OSs. The authors introduce basic virtual-memory technologies and then compare memory-management designs in three commercial microarchitectures. They show the diversity of virtual-memory support and, by implication, how this diversity can complicate and compromise system operations.
T. Mudge and B. Jacob, "Virtual Memory: Issues of Implementation," in Computer, vol. 31, no. , pp. 33-43, 1998.