Compare hard drives, solid-state drives, and nonvolatile memory by latency, bandwidth, endurance, and failure behavior. Trace requests through block interfaces, queues, controllers, caches, and flash translation layers.