write-once-memory-code · research · also WOM code, WOM coding

Write-once memory code

A write-once memory code represents successive logical values using physical states that change only in a permitted direction between resets.

Related Observatory article: Write-once memory code on hesela.com

The classical binary model starts with zero bits and permits only zero-to-one transitions; this labels abstract states, not every NAND voltage mapping. A three-bit construction supports two successive two-bit messages, while decoding recovers the current value rather than both messages. [1]

Reusable SSD places expanded second-write data in over-provisioned space; its SSD performance evaluation uses trace-driven simulation. Additional logical writes, resident capacity and erase counts are separate quantities. [2]

The three-bit teaching code is not an error-correcting code. Every physical state decodes. Across its eight states, all 24 single-bit flips change the decoded value without rejection. This state-space check is not a physical error-rate estimate. [5]

Hardware reprogramming depends on the NAND part and programming sequence. A valid code alone does not certify device support or endurance. In the 2016 hardware study, the OpenSSD FTL omits actual WOM encoding/decoding, writes arbitrary reused-page data and ignores ECC on those reads. Coding costs and failures are modeled; this does not validate end-to-end WOM payload recovery. [3]

Voltage-based WOM-v coding targets ordered cell levels. Its FEMU/LightNVM evaluation changes cell-to-page assignment; the No-Read mode tracks page generations and gives up same-generation transitions. This is a research design, not a standard host command. [4]

Relations

related
NAND page, NAND erase block, Flash translation layer (FTL), Over-provisioning, Write amplification

Advantages

  • Permits more than one logical value to be written before the modeled physical medium must be reset. [1]

Limitations

  • Coding expansion, metadata, error correction and permitted programming operations must be evaluated together. [2, 3, 4]

Citations

  1. Rivest and Shamir. How to Reuse a Write-Once Memory. Information and Control 55 (1982), Table 1 and Lemma 1. (accessed 2026-11-01)
  2. Yadgar, Yaakobi and Schuster. Write Once, Get 50% Free: Saving SSD Erase Costs Using WOM Codes. FAST 2015, sections 2.2 and 6. (accessed 2026-11-01)
  3. Margaglia et al. The Devil Is in the Details: Implementing Flash Page Reuse with WOM Codes. FAST 2016, sections 3 and 5.1-5.2. (accessed 2026-11-01)
  4. Jaffer, Mahdaviani and Schroeder. Improving the Reliability of Next Generation SSDs using WOM-v Codes. FAST 2022; arXiv:2208.00772v1, section 3.2. (accessed 2026-11-01)
  5. Hesela: exhaustive three-bit WOM message and single-bit fault cases, assumptions and source hash (accessed 2026-11-01)
Sources & caveats
  • Research status refers to use as an SSD coding technique, not verified implementation in a shipping product.
  • Hesela's executable example implements the 1982 construction; it is not a new code or a NAND experiment.

JSON: /data/terms/write-once-memory-code.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. Write-once memory code. Hesela. 2026-11-01. https://hesela.dev/terms/write-once-memory-code/