

Storage hierarchy
add(word)that adds a new word into the dictionary,contains(word)that specifies if the given word is present in the dictionary,containsPrefix(prefix)that specifies if there is any word beginning with the given prefix.
- What persistent memory is.
- The characteristics of persistent memory.
- What makes persistent memory different from block storage devices.
- Memory mapping.
- How persistent memory works.
- Byte addressability vs Word addressability.
- Why byte addressability of persistent memory is useful.
- Full persistence The idea behind full persistence is to have the entire data structure on persistent memory. Our persistent dictionary will use full persistence which means all read/write operations will involve persistent memory.
- Selective persistence The idea behind selective persistence is to have some part of the data structure in DRAM and the rest in persistent memory. This design choice gives the best of DRAM and persistent memory as we might be able to perform READ operations from DRAM and writes will happen both in DRAM and persistent memory, thus making our writes non-volatile.
classes, objects and raw pointers. The codebase link will be mentioned in the corresponding articles.- Non-volatile storage is a type of storage that can retain the stored information even after power is off. ↩
- DIMM (dual in-line memory module) is a module that can be found on the motherboard. The module has slots that contain one or more RAM chips found on a smaller part of the entire motherboard of your computer. Basically, the DIMM slots serve as your computer’s main memory storage unit as it houses the RAM chips. ↩
- NVMe (nonvolatile memory express) is a storage access and transport protocol for flash and solid-state drives (SSDs). To help deliver a high-bandwidth and low-latency user experience, the NVMe protocol accesses flash storage via a PCI Express (PCIe) bus, which supports tens of thousands of parallel command queues and thus is much faster than hard disks and traditional all-flash architectures, which are limited to a single command queue. ↩
- DRAM (dynamic random access memory) is volatile memory that stores bits of data in transistors. This memory is located closer to the processor, too, so the computer can easily and quickly access it for all the processes. ↩