I seem to have found exactly what I am looking for in this article:
http://www.pcworld.com/article/2899351/everything-you-need-to-know-about-nvme.html
Quoted from the article:
One of the best things about NVM Express is that you don’t have to worry about drivers showing up. Linux has had NVMe support since kernel 3.1; Windows 8.1 and Server 2012 R2 both include a native driver, and there’s a FreeBSD driver in the works. When Apple decides to support NVMe, the latter should make it easy to port.
However, BIOS support is largely lacking. Without an NVMe-aware BIOS, you can’t boot from an NVMe drive, though anyone with a x4 PCIe slot or M.2 connector can benefit from employing an NVMe drive as secondary storage.
NVMe support on the motherboard is only about the firmware (BIOS/UEFI). That's because NVMe is not a physical connector or electronic transmission protocol like PCI Express. Instead, it is a way to talk to the SSD controller, much like AHCI is way to talk to the SATA HBA (or backwards-compatible PCIe SSDs).
It is also only about booting. After that, the operating system takes over.
With M.2/U.2, there are two types of connections:
- SATA (supported by U.2 ports and M.2 slots keyed B or M)
- PCIe (supported by U.2 ports and M.2 slots keyed A, B, E or M)
A SATA M.2/U.2 SSD interfaces with an external (not on the SSD but on the mainboard) SATA HBA (Host Bus Adapter) using the SATA protocol. The operating system typically talks to the SATA HBA using AHCI. Everything works the same as when connecting a SATA drive to a SATA port. With U.2, you are even using a regular SATA cable.
A PCIe M.2/U.2 SSD on the other hand comes in two varieties. It has an equivalent to the SATA HBA built-in. The host can talk to this controller using one of two standard:
- AHCI (none available with U.2, but still possible)
- NVMe
An AHCI controller has limited performance. However, it offers the best compatibility because virtually all (but very old) firmware already supports AHCI. As such, you can boot from such SSDs no problem. (Provided the SSD itself isn't somehow limited in that regard.)
The NVMe specification is more suitable for non-rotational drives like SSDs and offers better performance by reducing overhead and whatnot. However, until relatively recently, mainboard firmware did not support this standard and could not boot from NVMe SSDs. You could still access them from your operating system, provided appropriate drivers were available.
Wikipedia has a great image on this topic:
![asdf](https://i.stack.imgur.com/kpS7a.png)
(Just ignore that it's apparently only about SATA Express/U.2, M.2 is mostly equivalent in this case.)
tl;dr: All NVMe SSDs use a PCI Express connection. As such, they appear the same to the BIOS, whether connected via U.2, M.2 or a full-size PCI Express slot.
However, having an M.2 or U.2 slot does not guarantee in any way that the firmware can boot from NVMe storage devices.
The manufacturer could provide a NVMe-boot-capable firmware later, yes.
Best Answer
There's no such thing as a "M.2 controller". The M.2 slot provides direct PCI-Express and SATA AHCI interfaces – NVMe drives are full-on PCI-Express devices, with the NVMe controller being on the drive itself.
There are M.2 slots which only provide SATA but not PCI-Express, or vice versa, and while (AFAIK) it's rare on actual PC motherboards, this seems to be very common for M.2-to-USB adapters – many of which only support SATA because adding PCIe support would've been much more expensive. (And the ones which support PCIe often omit SATA...)
So if the USB device's specs do not explicitly say it supports NVMe, there's a high chance it doesn't.