No, the CPU is the bottleneck here. We should be able to do better than 50% CPU usage for 1.4GB/s. Probably the actual bottleneck is the allocator; we allocate a bounce buffer and free it for every single transfer.
NVMe also comes in other form factors than M.2 such as U.2 and PCIe cards which are even faster than M.2 drives. Also there is NVMe over thunderbolt once that is perhaps someday supported.
I have a M.2 PCIe adapter I intend to test with an HP EX900 SSD also.
I suspect you may know hardware better than I do, but I have been researching things lately for a new build and I am pretty sure the PCIe version of M.2 (as opposed the the SATA3 ones) are quite fast, and pretty much on par with PCIe cards. It is quite confusing that M.2 cards come in both types…
the speed difference is not due to being M.2 or PCIe straight. It’s due to internal flash memory arrays’ speed limits. as said above, M.2 is a universal connector, it’s not controller or protocol or command set, just a connector, capable of carrying either PCIe or SATA or USB signals. it’s not confusing, it’s feature (keying is for differentiation).
M.2 is merely a form factor with 1 2 or 4 PCIe lanes (USB and data can also be on certain cards but if the card doesnt have pcie then it wont support NVMe). M.2 also has variants for wlan cards etc…
NVMe cards that go in a PCIe slot might have 4x 8x or 16x pcie lanes…and are typically faster or have higher IOPS.