M.2, formerly known as the Next Generation Form Factor (NGFF), is a specification for internally mounted computer expansion cards and associated connectors. It is intended to replace mSATA, which used the PCI Express Mini Card physical layout. Having a smaller and more flexible physical specification, together with more advanced features, the M.2 is more suitable for solid-state storage applications in general, especially when used in small devices like ultrabooks or tablets.
Computer bus interfaces provided through the M.2 connector, together with supported logical interfaces, are a superset to those defined by the SATA Express interface. Essentially, the M.2 standard is a small form factor implementation of the SATA Express interface (which provides support for PCI Express 3.0 and Serial ATA 3.0), with the addition of an internal USB 3.0 interface. The M.2 connector can have different keying notches denoting various uses of M.2 modules.
Supported are multiple functions for add-in cards, including the following classes: Wi-Fi, Bluetooth, satellite navigation, near field communication (NFC), digital radio, Wireless Gigabit Alliance (WiGig), wireless WAN (WWAN), and solid-state drives (SSDs). Exposed buses are PCI Express 3.0, Serial ATA 3.0 and USB 3.0. The SATA v3.2 specification standardizes the SATA M.2 as a new format for storage devices, and specifies its hardware layout.
The M.2 specification provides four PCI Express lanes and one SATA 3.0 6 Gbit/s port, exposed through the same connector, allowing use of both PCI Express and SATA storage devices in form of M.2 cards. Exposed PCI Express lanes are providing a pure PCI Express connection to the storage device, without any additional layers of abstraction. PCI-SIG M.2 specification, in its revision 1.0 as of December 2013, provides detailed M.2 specifications.
Three options for the logical device interfaces and command sets are available for interfacing with M.2 storage devices, provided as features of the SATA Express storage interface:
- Legacy SATA
- Used for SATA SSDs, and interfaced through the AHCI driver and provided legacy SATA 3.0 6 Gbit/s port.
- SATA Express / AHCI
- Used for PCI Express SSDs and interfaced through the AHCI driver and provided PCI Express lanes, providing backwards compatibility with widespread SATA support in operating systems at the cost of not delivering optimal performance by using AHCI for accessing PCI Express SSDs.
- SATA Express / NVMe
- Used for PCI Express SSDs and interfaced through the NVMe driver and provided PCI Express lanes, as a high performance and scalable host controller interface designed and optimized especially for interfacing with PCI Express SSDs.