801 storage: architecture and programming
ACM Transactions on Computer Systems (TOCS)
Garbage collection in an uncooperative environment
Software—Practice & Experience
VLDB '89 Proceedings of the 15th international conference on Very large data bases
The ObjectStore database system
Communications of the ACM
ACM Transactions on Database Systems (TODS)
The design and implementation of a log-structured file system
ACM Transactions on Computer Systems (TOCS)
Texas: good, fast, cheap persistence for C++
OOPSLA '92 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
Transactional memory: architectural support for lock-free data structures
ISCA '93 Proceedings of the 20th annual international symposium on computer architecture
Lightweight recoverable virtual memory
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Shoring up persistent applications
SIGMOD '94 Proceedings of the 1994 ACM SIGMOD international conference on Management of data
eNVy: a non-volatile, main memory storage system
ASPLOS VI Proceedings of the sixth international conference on Architectural support for programming languages and operating systems
Safe and efficient sharing of persistent objects in Thor
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
An orthogonally persistent Java
ACM SIGMOD Record
Free transactions with Rio Vista
Proceedings of the sixteenth ACM symposium on Operating systems principles
The Recovery Manager of the System R Database Manager
ACM Computing Surveys (CSUR)
Hoard: a scalable memory allocator for multithreaded applications
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Implementation techniques for main memory database systems
SIGMOD '84 Proceedings of the 1984 ACM SIGMOD international conference on Management of data
QuickStore: a high performance mapped object store
The VLDB Journal — The International Journal on Very Large Data Bases
Main Memory Database Systems: An Overview
IEEE Transactions on Knowledge and Data Engineering
The Design and Use of Persistent Memory on the DNCP Hardware Fault-Tolerant Platform
DSN '01 Proceedings of the 2001 International Conference on Dependable Systems and Networks (formerly: FTCS)
Software Exploitation of a Fault-Tolerant Computer with a Large Memory
FTCS '98 Proceedings of the The Twenty-Eighth Annual International Symposium on Fault-Tolerant Computing
MRAMFS: A Compressing File System for Non-Volatile RAM
MASCOTS '04 Proceedings of the The IEEE Computer Society's 12th Annual International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunications Systems
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Proceedings of the twentieth ACM symposium on Operating systems principles
Stasis: flexible transactional storage
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
Soft updates: a technique for eliminating most synchronous writes in the fast filesystem
ATEC '99 Proceedings of the annual conference on USENIX Annual Technical Conference
Paxos made live: an engineering perspective
Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing
The transaction concept: virtues and limitations (invited paper)
VLDB '81 Proceedings of the seventh international conference on Very Large Data Bases - Volume 7
Proving the Correctness of Multiprocess Programs
IEEE Transactions on Software Engineering
Dynamic performance tuning of word-based software transactional memory
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
Design and implementation of transactional constructs for C/C++
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Storage-class memory: the next storage system technology
IBM Journal of Research and Development
Compiler and runtime techniques for software transactional memory optimization
Concurrency and Computation: Practice & Experience - Compilers for Parallel Computers 2007 Workshop (CPC 2007)
Architecting phase change memory as a scalable dram alternative
Proceedings of the 36th annual international symposium on Computer architecture
A durable and energy efficient main memory using phase change memory technology
Proceedings of the 36th annual international symposium on Computer architecture
Scalable high performance main memory system using phase-change memory technology
Proceedings of the 36th annual international symposium on Computer architecture
Better I/O through byte-addressable, persistent memory
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Enhancing lifetime and security of PCM-based main memory with start-gap wear leveling
Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture
FRASH: Exploiting storage class memory in hybrid file system for hierarchical storage
ACM Transactions on Storage (TOS)
Dynamically replicated memory: building reliable systems from nanoscale resistive memories
Proceedings of the fifteenth edition of ASPLOS on Architectural support for programming languages and operating systems
NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Beyond block I/O: Rethinking traditional storage primitives
HPCA '11 Proceedings of the 2011 IEEE 17th International Symposium on High Performance Computer Architecture
NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
A limits study of benefits from nanostore-based future data-centric system architectures
Proceedings of the 9th conference on Computing Frontiers
Hathi: durable transactions for memory using flash
DaMoN '12 Proceedings of the Eighth International Workshop on Data Management on New Hardware
USENIX ATC'12 Proceedings of the 2012 USENIX conference on Annual Technical Conference
NV-process: a fault-tolerance process model based on non-volatile memory
Proceedings of the Asia-Pacific Workshop on Systems
NV-process: a fault-tolerance process model based on non-volatile memory
APSys'12 Proceedings of the Third ACM SIGOPS Asia-Pacific conference on Systems
Proceedings of the 8th ACM European Conference on Computer Systems
Phase-change memory: An architectural perspective
ACM Computing Surveys (CSUR)
Bridging the programming gap between persistent and volatile memory using WrAP
Proceedings of the ACM International Conference on Computing Frontiers
Efficient virtual memory for big memory servers
Proceedings of the 40th Annual International Symposium on Computer Architecture
Storage-class memory needs flexible interfaces
Proceedings of the 4th Asia-Pacific Workshop on Systems
SCMFS: A File System for Storage Class Memory and its Extensions
ACM Transactions on Storage (TOS)
Practical nonvolatile multilevel-cell phase change memory
SC '13 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
ACM SIGOPS 24th Symposium on Operating Systems Principles
From ARIES to MARS: transaction support for next-generation, solid-state drives
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
Tango: distributed data structures over a shared log
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
NVM heaps for accelerating browser-based applications
Proceedings of the 1st Workshop on Interactions of NVM/FLASH with Operating Systems and Workloads
Exploring storage class memory with key value stores
Proceedings of the 1st Workshop on Interactions of NVM/FLASH with Operating Systems and Workloads
MetaData persistence using storage class memory: experiences with flash-backed DRAM
Proceedings of the 1st Workshop on Interactions of NVM/FLASH with Operating Systems and Workloads
Approximate storage in solid-state memories
Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture
Kiln: closing the performance gap between systems with and without persistence support
Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture
NVM duet: unified working memory and persistent store architecture
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
System-level impacts of persistent main memory using a search engine
Microelectronics Journal
Hi-index | 0.00 |
New storage-class memory (SCM) technologies, such as phase-change memory, STT-RAM, and memristors, promise user-level access to non-volatile storage through regular memory instructions. These memory devices enable fast user-mode access to persistence, allowing regular in-memory data structures to survive system crashes. In this paper, we present Mnemosyne, a simple interface for programming with persistent memory. Mnemosyne addresses two challenges: how to create and manage such memory, and how to ensure consistency in the presence of failures. Without additional mechanisms, a system failure may leave data structures in SCM in an invalid state, crashing the program the next time it starts. In Mnemosyne, programmers declare global persistent data with the keyword "pstatic" or allocate it dynamically. Mnemosyne provides primitives for directly modifying persistent variables and supports consistent updates through a lightweight transaction mechanism. Compared to past work on disk-based persistent memory, Mnemosyne reduces latency to storage by writing data directly to memory at the granularity of an update rather than writing memory pages back to disk through the file system. In tests emulating the performance characteristics of forthcoming SCMs, we show that Mnemosyne can persist data as fast as 3 microseconds. Furthermore, it provides a 35 percent performance increase when applied in the OpenLDAP directory server. In microbenchmark studies we find that Mnemosyne can be up to 1400% faster than alternative persistence strategies, such as Berkeley DB or Boost serialization, that are designed for disks.