M.2 vs mSATA case study – Crucial M500 240GB & Plextor M6e 256GB
SATA, mSATA, SATA Express, M.2, mPCIE… a bunch of terminology from which the normal customer doesn’t understand much. I must tell you that even I got confused when I found out that you can have a M.2 SSD based on a SATA controller. I knew that M.2 was the next generation high performance port allowing PCI-Express storage, so you can understand why this information was a total surprise for me and I started to research everything about this new M.2 port and its implementation in the Z97 platform.
The first thing we must clarify is the difference between connectors and protocols. M.2, SATA Express or mSATA are connectors that allows your storage device to be attached to the motherboard, while SATA and PCI-Express are protocols which is the “language” used by the devices to communicate.
SATA 3 is on the market for some time and is limited to 600MB/s, most SSD being already limited for some time by the interface. SATA 3.2 adds support for PCI-Express communication through SATA Express and M.2 interfaces, support for old SATA devices being preserved. So, in conclusion the communication protocol is being transitioned from the already obsolete SATA to the more scalable PCI-Express and we have some new connectors for this: SATA Express & M.2.
As we need it for getting all the performance out of our hardware, we must look also to the software part of this problem. AHCI (Advanced Host Controller Interface) was launched on the market more than 10 years ago, when the mechanical HDD’s were in their prime so we can say that is pretty outdated and completely not suited to high speed flash storage. While AHCI can add some performance to regular SATA 3 SSD’s, it’s totally unsuited for the high performance PCI-Express based SSD’s.
The solution comes in the form of NVMe (Non-Volatile Memory Express) – built from the ground up for SSDs and PCIe devices, NVMe has its extremely low latency compared to AHCI. This is because it doesn’t require an Uncacheable register reads to issue a command while, in comparison, AHCI needs 4 register reads per command generating an additional latency of 2.5µs. Currently there are a couple of enterprise drives that support NVMe, but consumer drives are also expected most probably with the launch of the Sandforce SF-3700 controller.