{
  "slug": "femu",
  "term": "FEMU",
  "aliases": [
    "FEMU flash emulator"
  ],
  "definition": "FEMU is a QEMU-based flash emulator that lets a guest operating system exercise configurable SSD interfaces, mapping policies and timing models.",
  "note": "Research platform: The FAST 2018 design runs application and kernel code against an emulated device, separating memory-backed data transfers from modeled completion delays. Host computation contributes to observed latency. [femu-paper]\n\nUnwritten pages: In the pinned BlackBox ssd_read path, an unmapped or invalid physical address skips the data-page NAND read. Translation is charged earlier, and buffer/cache hits have separate paths. Skipping that operation does not mean zero request latency. [femu-code]\n\nPreparation: Populate the intended read range and record mapping/cache settings. Direct I/O bypasses the guest page cache, not the emulator's caches. NoSSD deliberately omits media timing. Filling a range does not establish sustained-write steady state. [femu-guide]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Results depend on emulator revision, configuration, host resources and workload rather than defining a universal SSD performance guarantee.",
      "citationIds": [
        "femu-paper"
      ]
    }
  ],
  "related": [
    "mqsim",
    "ssd-preconditioning",
    "ssd-steady-state",
    "ftl",
    "queue-depth",
    "direct-io"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-10",
  "citations": [
    {
      "id": "femu-paper",
      "title": "Li et al. The CASE of FEMU: Cheap, Accurate, Scalable and Extensible Flash Emulator. FAST 2018, pp. 83-90, sections 3.1-3.3.",
      "url": "https://www.usenix.org/system/files/conference/fast18/fast18-li.pdf",
      "accessed": "2026-11-10"
    },
    {
      "id": "femu-code",
      "title": "MoatLab FEMU, pinned BlackBox ssd_read path: mapping, buffer/cache checks and NAND timing.",
      "url": "https://github.com/MoatLab/FEMU/blob/785fe5a63e54228482168d62fc746045df4d1533/hw/femu/bbssd/ftl-datapath.c#L958-L1088",
      "accessed": "2026-11-10"
    },
    {
      "id": "femu-guide",
      "title": "MoatLab FEMU measurement guide: NoSSD, BlackBox preparation and guest-visible latency.",
      "url": "https://github.com/MoatLab/FEMU/blob/785fe5a63e54228482168d62fc746045df4d1533/hw/femu/docs/guides/measuring.md#L397-L436",
      "accessed": "2026-11-10"
    },
    {
      "id": "hesela",
      "title": "Hesela: SSD steady state is not a timer, FEMU preparation and data-page read coverage.",
      "url": "https://hesela.com/analyses/ssd-steady-state-is-not-a-timer/#femu-preparation",
      "accessed": "2026-11-10"
    }
  ],
  "provenance": [
    "Read-path review pins FEMU commit 785fe5a63e54228482168d62fc746045df4d1533; it is not asserted to be the 2018 evaluation version.",
    "Primary-paper and code review only. No FEMU run, physical SSD benchmark or performance replication was performed."
  ]
}
