Data Tiering in Heterogeneous Memory Systems
Heterogeneous memory architectures coupling DRAM with high capacity, low cost, but also lower performance NVM. couple NVM with a smaller amount of DRAM as cache.
Contributions:
- high performance -> placing some applications data structures in small DRAM
 - different memory access patterns (sequential, random, pointer chasing)
- pointer chasing: every operation will occur a cache miss when traveling a list
 
 - X-mem -> map objects to data structures
- automatically placing data-structures in appropriate memory types
 
 - According access pattern and automates the task of mapping memory regions of that data structure to DRAM or NVM to optimize performance
 
Design (features)
- Using a unique tag (Hash, Tree, Buffer) for each data structures
 - Binding NVM and DRAM to NUMA node
 - Select the Solution Type
 
| Dependent | Independent | |
|---|---|---|
| Sequential | NA | Streaming | 
| Non-sequential | Pointer chasing | Random | 
A Write-friendly Hashing Scheme for Non-volatile Memory Systems
This is a naive paper, and the idea is trivial
This paper introduces a newly hash scheme, which reduce frequency of write operation in NVM
Existing Hashing Schemes:
- Chained Hash
 - Linear Hash
 - 2-choice Hash
 - Cuckoo Hash
 
Hash Scheme Structure
12345678| |---| |---| |---| |---| |---| |---| |---| | Layer-1\ / \ / \ / \ /| |---------| |---------| |---------| | Layer-2\ / \ /\ / \ /| | | | Layer-3........... Layer-L- every two nearly table items share a item in next layer
 - cache coherence
 - remove some levels in the bottom -> shortening finding path