## 4 Related Work  
As NVM can be adopted in both memory and storage subsystems, a spectrum of studies have been conducted to explore the performance of systems making use of NVM as the main memory [6; 13; 20; 21; 28; 29] and/or storage [30; 31; 32; 33; 34; 35]. [PERSON] et al. propose a novel memory management technique for systems making use of DRAM and NVM hybrid memory. Their technique allocates pages to DRAM or NVM by utilizing the page's attributes, such that read-only pages are placed on PCM, whereas writable pages are placed on DRAM in order to decrease the write traffic to PCM [28]. [PERSON] et al. present a PCM based main memory system and adopt DRAM as PCM's write buffer to increase the lifespan of PCM as well as accelerating PCM's write performances [6]. [PERSON] et al. propose a PCM based main memory system and try to enhance the PCM's write performance by judiciously managing the last level cache memory. Specifically, they present the partial writing and the buffer reorganizing schemes for tracking the change of data in the last level cache and flush only the changed part to PCM memory [21; 29]. [PERSON] et al. present a new page replacement algorithm for memory systems being composed of PCM and DRAM [13]. Their algorithm performs online estimation of page attributes and places write-intensive pages on DRAM and read-intensive pages on PCM. Kultursay  
Figure 13: Comparison of power consumption. et al. propose an STT-MRAM based main memory system for reducing the power consumption of the main memory [20]. Their system considers the entire replacement of DRAM to STT-MRAM and exhibits that the performance of STT-MRAM based main memory is competitive to that of DRAM with the 60% energy-saving effect in the memory. Now, let us discuss the studies focusing on NVM as storage devices. In early days, the size of NVM was very small, and thus NVM acts as a certain part of the storage systems. NEB [32], MRAMFS [33], and PRAMFS [34] are examples of such cases. They aim to maintain hot data or important data such as metadata on NVM [34]. As the size of NVM was small, they also focused on the efficiency of the NVM storage spaces. For example, [PERSON] et al. [33] try to save NVM spaces by making use of compression, whereas [PERSON] et al. [32] perform space saving by extent-based data management. As the density of NVM increases, studies on NVM storage suggest the file system design that maintains the total file system in NVM. [PERSON] et al. present a system layer that acts as the memory as well as the storage by making use of NVM for managing both memory and file objects [35]. [PERSON] et al. present BPFS, which is a new file system for NVM exploiting the byte-addressable characteristics of NVM [30]. Specifically, BPFS overwrites data if the write size is small enough for atomic operations, thereby reducing the writing overhead of NVM without compromising reliability. Similarly, [PERSON] et al. propose a byte-addressable file system for NVM, which does not need to pass through the buffer cache layer by allocating memory address spaces to the location of the NVM file system [31]. [PERSON] et al. propose a persistent in-memory data storage consisting of NVM, which can be created by users [36]. [PERSON] et al. propose a new NVM interface that allows the creation and management of NVM without the risk of inconsistency from system crashes [37]. Specifically, it enables users to define persistent data with the given primitives, which is automatically managed by transaction, and thus users do not need to concern the inconsistency situations from system failures. Recently, studies on NVM focus on the efficiency of I/O paths and software stacks that are designed originally for slow storage like HDD rather than NVM storage. [PERSON] et al. argue that synchronous I/O performs better than asynchronous I/O if storage becomes very fast [38]. [PERSON] et al. quantify the overhead of each software stack in I/O operations and propose efficient interfaces for fast NVM storage systems [39].