Emerging Non-Volatile Memory (NVM) technologies offer high capacity
and energy efficiency compared to DRAM, but suffer from limited write endurance and longer latencies. Prior
work seeks the best of both technologies by combining DRAM and NVM in hybrid
memories to attain low latency, high capacity, energy efficiency,
and durability. Coarse-grained hardware and OS optimizations then spread
writes out (wear-leveling) and place highly mutated
pages in DRAM to extend NVM lifetimes.
Unfortunately even with these coarse-grained methods, popular Java
applications exact impractical NVM lifetimes
of 4 years or less.
This paper shows how to make hybrid memories practical, without
changing the programming model, by enhancing garbage collection in
managed language runtimes. We find object write behaviors offer two
opportunities: (1) 70% of writes occur to newly allocated
objects, and (2) 2% of objects capture 81% of writes to mature
objects. We introduce write-rationing garbage collectors that
exploit these fine-grained behaviors. They extend NVM lifetimes
by placing highly mutated objects in DRAM and read-mostly objects in
NVM. We implement two such systems. (1) Kingsguard-nursery places new allocation
in DRAM and survivors in NVM, reducing NVM writes by 5X
versus NVM only with wear-leveling. (2) Kingsguard-writers (KG-W)
places nursery objects in DRAM and survivors in a DRAM observer
space. It monitors all mature object writes and moves
unwritten mature objects from DRAM to NVM. Because most mature objects
are unwritten, KG-W exploits NVM capacity while increasing NVM
lifetimes by 11X. It reduces the energy-delay product by 32%
over DRAM-only and 29% over NVM-only. This work opens up new avenues
for making hybrid memories practical.
Original languageEnglish
Title of host publicationProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
Number of pages16
StatePublished - Jun 2018

ID: 37472248