BYTE ADDR NONVOLATILE PERSISTENT MEMORY CPU PERSISTENTMEMORY Provides an opportunity to manipulate persistent data directly LdSt NVM FAST BYTE ADDR NONVOLATILE WHAT HAPPENS WHEN WE RUN AN APPLICATION ID: 934251
Download Presentation The PPT/PDF document "PERSISTENT MEMORY NVM FAST" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
PERSISTENT MEMORY
NVM
FAST
BYTE ADDR
NONVOLATILE
Slide2PERSISTENT MEMORY
CPU
PERSISTENTMEMORY
Provides an opportunity to manipulate persistent data directly
Ld/St
NVM
FAST
BYTE ADDR
NONVOLATILE
Slide3WHAT HAPPENS WHEN
WE RUN AN APPLICATION?
v
oid 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;
}
Slide4RUN THE CODE…
Persistent Memory System
System crash can result in
permanent data corruption in NVM
v
oid
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;
}
Slide5CURRENT SOLUTION
v
oid
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;
}
Slide6CURRENT SOLUTION
v
oid
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
Slide7CURRENT SOLUTION
v
oid
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
Slide8Our Solution:
ThyNVM
Slide9NO MODIFICATION IN THE CODE
v
oid
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;}
Slide10RUN THE EXACT SAME CODE…
Persistent Memory System
Software transparent
memory crash consistency
v
oid
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;
}
Slide11ThyNVM
A new hardware-based
c
heckpointing
mechanism
Checkpoints at multiple granularities to minimize both latency and
metadataOverlaps checkpointing
and
execution
Adapts
to
DRAM and NVM
characteristics
Performs within
4.9%
of an
idealized DRAM
with zero cost consistency
Slide12ThyNVM
E
nabling
Software-Transparent Crash Consistency in Persistent Memory
Jinglei
Ren, Jishen
Zhao, Samira Khan, Jongmoo
Choi,
Yongwei
Wu,
and
Onur
Mutlu
WEDNESDAY 10:20 am