OS support for heterogeneous memory
MetadataShow full item record
To address the 'memory wall' problem of future systems, vendors are creating heterogeneous memory structures, supplementing DRAM with on-chip stacked 3D-RAM and high capacity non-volatile memory (NVM). Each of these technologies differs significantly in terms of density, bandwidth, and latency. However, current operating systems (OSes) and software stacks lack generic memory abstractions that can be uniformly used with different memory types. This increases the software complexity resulting in limited performance and efficiency benefits from the memory heterogeneity for both virtualized and non-virtualized systems. To address these challenges, this thesis develops HeteroMem -- an OS design for heterogeneous memory and makes the following contribution. First, HeteroMem introduces a unified OS abstraction for heterogeneous memories. As a result, different memory technologies can extensively leverage the current advances made for traditional memory management, thereby reducing software complexity, achieving efficient use of hardware resources such as caches and TLBs, and permitting seamless scaling across heterogeneous memory components. Second, HeteroMem incorporates novel memory placement mechanisms focused on reducing data movement overheads. The outcome is up to 2x improvement in application performance compared to the state-of-the-art solutions. Furthermore, to exploit the persistence benefits from non-volatile memories, HeteroMem goes beyond memory capacity scaling, to provide fast persistent object storage. Using NVMs for persistence leads to new types of cache sharing and energy bottlenecks. We address these bottlenecks via novel cache- and energy-efficient system software principles that do not impact application correctness. Finally, for achieving maximum performance and reliability gains with heterogeneous memory, we also explore the redesign of HPC, datacenter, and end-user applications.