For the most part, installing a PCIe NVMe SSD into the M.2 slot on an Intel motherboard will result in you obtaining full speed thanks to the fact that where there's PCIe M.2 SSD support, you can expect the full PCIe 3.0 x4 bandwidth that 's needed to take advantage of the likes of Samsung's 900-series SSDs. Similarly, one or more of the M.2 ports on Intel Z370 boards can also cater for SATA M.2 SSDs too, although these have often had questionable layouts with only the primary heatsink-equipped ports being compatible with slower SATA-based SSDs, as I've blogged about before.
However, motherboard manufacturers appear to be assuming different stances on how their M.2 ports on AMD X470 boards are configured, and in many cases they're illogical and even downright confusing. The issues come in various guises, just to make things worse. Starting with good ol' SATA M.2 SSD support, the issue of which ports are compatible with them has reared its head again. Several boards I've seen, including Gigabyte's X470 Aorus Ultra Gaming, have two M.2 ports, but only one is compatible with both SATA and PCIe SSDs. With this board in particular, the issue is that this port is the one with the M.2 heatsink.
The second issue, and this is present on the same board, is that the SATA-compatible M.2 port is the only port that offers full PCIe 3.0 support. The second slot is limited to PCIe 2.0, which will see speeds limited to around 1,800MB/s, so it's a pretty pointless inclusion seeing as current M.2 SSDs are either PCIe 3.0 x4-based and offer speeds that will be bottlenecked by PCIe 2.0's maximum bandwidth, or are SATA-based and thus not compatible with that port anyway.
To make things worse, while MSI at least states that the second port is limited to PCIe 2.0, Gigabyte was merely stating that it offered PCIe x4 speed but conveniently missed out the fact that it's not PCIe 3.0, that is until we contacted them, after which the issue was rectified on the official specs page. To stress, PCIe 2.0 is much slower than 3.0, even if we're dealing with x4 speed/lanes, so it's really important that manufacturers state this clearly. MSI has also added SATA M.2 SSD support to this slot on most of its X470 boards, which makes more sense given it's the one that usually lacks a heatsink, plus you're able to use SATA M.2 and PCIe 3.0 x4 M.2 SSDs at the same time.
Asus isn't immune to the issues, either. As well as previous motherboards - including Intel-based ones - stating SATA M.2 support when it wasn't actually the case, the ROG Crosshair VII Hero appears to have a very odd layout and PCIe lane allocation. What visually appears to be its primary M.2 port and the one that is equipped with a heatsink out of the box, is actually the port that lacks its own dedicated four PCIe lanes from the CPU, but it doesn't even get them from the chipset like the lower 16x and 1x PCIe slots do. As a result, if you use it with a PCIe M.2 SSD, it will steal lanes from the 16 lanes allocated to the two primary 16x PCIe slots, reducing the bandwidth to your graphics card to just eight lanes instead of 16.
As has been proven in numerous benchmarks, the difference between x8 and x16 speed for GPUs doesn't make that much of a difference in games even with high-end graphics cards, so the Crosshair is at least able to offer full PCIe 3.0 x4 bandwidth in either M.2 slot, but there is nothing in the Crosshair VII Hero's manual that warns of this specific situation. So, while your PCIe M.2 SSD will achieve its full potential in the top M.2 slot, your graphics card might have reduced bandwidth, while using the lower M.2 port will see both the SSD and graphics card both receiving full bandwidth. In my mind, Asus should not only make this clear in the instructions, but it should also move the heatsink to the lower slot out of the box, as it doesn't do potential owners any favours.
So, if all that is as clear as mud (hopefully it makes some sense at least), you need to make sure of a couple of things before you invest in an X470 motherboard if you intend to use an M.2 SSD. Firstly, if that SSD is PCIe-based, check which M.2 ports offer the full bandwidth, and by that I mean PCIe 3.0 x4, not just x4 and not just 3.0 - both. If it just lists x4, it seems to be the case that it will actually be running at the 2.0 standard and not 3.0. Secondly, check which PCIe M.2 slot you should use - in the case of the ROG Crosshair VII Hero, using the wrong slot could see it steal bandwidth from your graphics card. Finally, if you're planning on using SATA M.2 and PCIe 3.0 x4 M.2 SSDs together, check whether the board supports both at the same time and whether the slot you'll be using for the PCIe SSD will actually offer the full bandwidth, as many don't.