Download presentation
Presentation is loading. Please wait.
Published byRosa Hensley Modified over 9 years ago
1
PERSISTENT MEMORY NVM FAST BYTE ADDR NONVOLATILE
2
PERSISTENT MEMORY CPU PERSISTENT MEMORY Provides an opportunity to manipulate persistent data directly Ld/St NVM FAST BYTE ADDR NONVOLATILE
3
WHAT HAPPENS WHEN WE RUN AN APPLICATION? void hashtable_update (hashtable_t* ht, void *key, void *data) { list_t* chain = get_chain (ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) list_find (chain, &updatePair); pair->second = data; }
4
RUN THE CODE… Persistent Memory System System crash can result in permanent data corruption in NVM void hashtable_update(hashtable_t* ht, void *key, void *data){ list_t* chain = get_chain(ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) list_find(chain, &updatePair); pair->second = data; }
5
CURRENT SOLUTION void TMhashtable_update (TMARCGDECL hashtable_t* ht, void *key, void*data){ list_t* chain = get_chain (ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) TMLIST_FIND (chain, &updatePair); pair->second = data; }
6
CURRENT SOLUTION void TMhashtable_update (TMARCGDECL hashtable_t* ht, void *key, void*data){ list_t* chain = get_chain (ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) TMLIST_FIND (chain, &updatePair); pair->second = data; } Manual declaration of persistent components Needs a new implementation Third party code can be inconsistent Prohibited Operation
7
CURRENT SOLUTION void TMhashtable_update (TMARCGDECL hashtable_t* ht, void *key, void*data){ list_t* chain = get_chain (ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) TMLIST_FIND (chain, &updatePair); pair->second = data; } Manual declaration of persistent components Needs a new implementation Third party code can be inconsistent Prohibited Operation Burden on the programmers
8
Our Solution: ThyNVM
9
NO MODIFICATION IN THE CODE void hashtable_update (hashtable_t* ht, void *key, void *data) { list_t* chain = get_chain (ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) list_find (chain, &updatePair); pair->second = data; }
10
RUN THE EXACT SAME CODE… Persistent Memory System Software transparent memory crash consistency void hashtable_update(hashtable_t* ht, void *key, void *data){ list_t* chain = get_chain(ht, key); pair_t* pair; pair_t updatePair; updatePair.first = key; pair = (pair_t*) list_find(chain, &updatePair); pair->second = data; }
11
ThyNVM A new hardware-based checkpointing mechanism A new hardware-based checkpointing mechanism Checkpoints at multiple granularities to minimize both latency and metadata Overlaps checkpointing and execution Adapts to DRAM and NVM characteristics Performs within 4.9% of an idealized DRAM with zero cost consistency
12
ThyNVM Enabling Software-Transparent Crash Consistency in Persistent Memory Jinglei Ren, Jishen Zhao, Samira Khan, Jongmoo Choi, Yongwei Wu, and Onur Mutlu Jinglei Ren, Jishen Zhao, Samira Khan, Jongmoo Choi, Yongwei Wu, and Onur Mutlu WEDNESDAY 10:20 am
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.