type
status
date
slug
summary
tags
category
icon
password
Below are notes from Architectural and Operating System Support for Virtual Memory.
Virtual memory is a decades-old concept that is fundamental to the programmability, portability, and security of modern computing systems of all scales. Indeed, a measure of virtual memory’s success is that programmers rarely think about it when writing code today. As computer systems accommodate new classes of software, and integrate specialized hardware and emerging memory technologies, it is vital that we preserve and rethink the VM abstraction to ensure that these systems remain programmable.
One class of techniques that we cover consists of hardware-based approaches (e.g., shared TLBs, coalesced TLBs, part-of-memory TLBs, etc.). On the other hand, hardware-software co-design (e.g., direct segments, etc.) present the potential to dramatically reduce address translation overheads.
The VM subsystem is a complex one, and requires careful coordination between the hardware, operating system kernel, memory allocators, and runtime systems/libraries. It is important that we consider the verification challenges posed by these changes. We therefore believe that as systems continue to embrace complexity, it will ultimately be necessary to carefully model the impact of VM innovations on the full computing stack, from the OS level down to the register-transfer.