PCI Express NVMe – What is an NVMe Controller?

nvmepci-express

This question may sound trivial but it isn't.
Take a look at this image.
You can see Windows device manager listing NVMe controllers. I expected it to list NVMe disks but not controllers.

It does not make sense to me because NVMe is a software protocol only. NVMe disks use PCIe. AFAIK they are connected to PCIe directly. There is no storage controller in between.

For example when using SATA there is a SATA AHCI controller on the mainboard connected to PCIe which converts PCIe to physical SATA. There can be multiple disks connected to this controller.

But as already said NVMe is different to SATA as it is only a software protocol. There is no physical NVMe.

So it must be the NVMe controller is virtual and located on the disk.

But why is there a controller at all if it is on the disk and always can only have one disk connected to it? Why does the device manager show two devices while it is logical and physical one?

Can someone please explain what exactly an NVMe controller is and what it does?

Best Answer

From Wikipedia NVM Express:

NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer's non-volatile storage media usually attached via PCI Express (PCIe) bus. The initialism NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCIe add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices.

Architecturally, the logic for NVMe is physically stored within and executed by the NVMe controller chip that is physically co-located with the storage media, usually an SSD. Version changes for NVMe, e.g., 1.3 to 1.4, are incorporated within the storage media, and do not affect PCIe-compatible components such as motherboards and CPUs.

The computer sees the controller that is on the disk, and the controller than shows the disk to the computer. The disk itself has no protocol and can only communicate via its NVMe controller chip.

Related Question