We study the performance power of software combining in designing recoverable algorithms and data structures. We present two recoverable synchronization protocols, one blocking and another wait-free, which illustrate how to use software combining to achieve both low persistence and synchronization cost. Our experiments show that these protocols outperform by far state-of-the-art recoverable universal constructions and transactional memory systems. We built recoverable queues and stacks, based on these protocols, that exhibit much better performance than previous such implementations
Two key synchronization paradigms for the construction of scalable concurrent data-structures are so...
Modern software systems are deeply embedded into our daily lives; the failures of these systems can ...
As multicore systems become widespread, both software and hardware face a major challenge in efficie...
We study the performance power of software combining in designing persistent algorithms and data str...
The availability of Non-Volatile Main Memory (known as NVMM) enables the design of recoverable concu...
The recent emergence of fast, dense, nonvolatile main memory suggests that certain long-lived data s...
Non-volatile memory is expected to coexist with (or even displace) volatile DRAM for main memory in ...
This paper presents a generic approach for deriving detectably recoverable implementations of many w...
Persistent memory makes it possible to recover in-memory data structures following a failure instead...
We present a fully lock-free variant of our recent Montage system for persistent data structures. Th...
his paper addresses the problem of universal synchronization primitives that can support scalable th...
The imminent release of 3D XPoint memory by Intel and Micron looks set to end the long wait for affo...
In this brief paper, we survey existing correctness definitions for concurrent persistent programs
The emergence of systems with non-volatile main memory (NVRAM) increases the need for persistent con...
Non-Volatile Main Memory (NVMM) has brought forth the need for data structures that are not only con...
Two key synchronization paradigms for the construction of scalable concurrent data-structures are so...
Modern software systems are deeply embedded into our daily lives; the failures of these systems can ...
As multicore systems become widespread, both software and hardware face a major challenge in efficie...
We study the performance power of software combining in designing persistent algorithms and data str...
The availability of Non-Volatile Main Memory (known as NVMM) enables the design of recoverable concu...
The recent emergence of fast, dense, nonvolatile main memory suggests that certain long-lived data s...
Non-volatile memory is expected to coexist with (or even displace) volatile DRAM for main memory in ...
This paper presents a generic approach for deriving detectably recoverable implementations of many w...
Persistent memory makes it possible to recover in-memory data structures following a failure instead...
We present a fully lock-free variant of our recent Montage system for persistent data structures. Th...
his paper addresses the problem of universal synchronization primitives that can support scalable th...
The imminent release of 3D XPoint memory by Intel and Micron looks set to end the long wait for affo...
In this brief paper, we survey existing correctness definitions for concurrent persistent programs
The emergence of systems with non-volatile main memory (NVRAM) increases the need for persistent con...
Non-Volatile Main Memory (NVMM) has brought forth the need for data structures that are not only con...
Two key synchronization paradigms for the construction of scalable concurrent data-structures are so...
Modern software systems are deeply embedded into our daily lives; the failures of these systems can ...
As multicore systems become widespread, both software and hardware face a major challenge in efficie...