NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer’s non-volatile storage media usually attached via the PCI Express bus.
- 1. What is PCI Express?
- 2. What is NVM Express?
- 3. What is M.2?
- 4. Upgrade SSD in MacBook with MVMe driver
1. What is PCI Express?
PCI Express (Peripheral Component Interconnect Express), officially abbreviated as PCIe or PCI-e, is a high-speed serial computer expansion bus standard, designed to replace the older PCI, PCI-X and AGP bus standards.
The PCI Express electrical interface is measured by the number of simultaneous lanes. (A lane is a single send/receive line of data. The analogy is a highway with traffic in both directions.) The interface is also used in a variety of other standards — most notably the laptop expansion card interface called ExpressCard. It is also used in the storage interfaces of SATA Express, U.2 (SFF-8639) and M.2.
Conceptually, the PCI Express bus is a high-speed serial replacement of the older PCI/PCI-X bus. One of the key differences between the PCI Express bus and the older PCI is the bus topology:
Furthermore, the older PCI clocking scheme limits the bus clock to the slowest peripheral on the bus (regardless of the devices involved in the bus transaction). In contrast, a PCI Express bus link supports full-duplex communication between any two endpoints, with no inherent limitation on concurrent access across multiple endpoints.
In terms of bus protocol, PCI Express communication is encapsulated in packets. The work of packetizing and de-packetizing data and status-message traffic is handled by the transaction layer of the PCI Express port.
The PCI Express link between two devices can vary in size from one to 16 lanes. In a multi-lane link, the packet data is striped across lanes, and peak data throughput scales with the overall link width. The lane count is automatically negotiated during device initialization and can be restricted by either endpoint.
For example, a single-lane PCI Express (x1) card can be inserted into a multi-lane slot (x4, x8, etc.), and the initialization cycle auto-negotiates the highest mutually supported lane count.
The link can dynamically down-configure itself to use fewer lanes, providing a failure tolerance in case bad or unreliable lanes are present.
The PCI Express standard defines link widths of x1, x2, x4, x8, and x16.
PCI Express devices communicate via a logical connection called an interconnect or link. A link is a point-to-point communication channel between two PCI Express ports allowing both of them to send and receive ordinary PCI requests (configuration, I/O or memory read/write) and interrupts (INTx, MSI or MSI-X).
At the physical level, a link is composed of one or more lanes. Low-speed peripherals (such as an 802.11 Wi-Fi card) use a single-lane (x1) link, while a graphics adapter typically uses a much wider and therefore faster 16-lane (x16) link.
A lane is composed of two differential signaling pairs, with one pair for receiving data and the other for transmitting. Thus, each lane is composed of four wires or signal traces.
Conceptually, each lane is used as a full-duplex byte stream, transporting data packets in eight-bit "byte" format simultaneously in both directions between endpoints of a link.
Physical PCI Express links may contain 1, 4, 8 or 16 lanes. Lane counts are written with an "x" prefix (for example, "x8" represents an eight-lane card or slot), with x16 being the largest size in common use. Lane sizes are also referred to via the terms "width" or "by" e.g., an eight-lane slot could be referred to as a "by 8" or as "8 lanes wide."
1.2. Form factors
1.2.1. PCI Express (standard)
A PCI Express card fits into a slot of its physical size or larger (with x16 as the largest used), but may not fit into a smaller PCI Express slot; for example, a x16 card may not fit into a x4 or x8 slot. Some slots use open-ended sockets to permit physically longer cards and negotiate the best available electrical and logical connection.
1.2.2. PCI Express Mini Card
PCI Express Mini Card (also known as Mini PCI Express, Mini PCIe, Mini PCI-E, mPCIe, and PEM), based on PCI Express, is a replacement for the Mini PCI form factor. It is developed by the PCI-SIG. The host device supports both PCI Express and USB 2.0 connectivity, and each card may use either standard. Most laptop computers built after 2005 use PCI Express for expansion cards; however, as of 2015, many vendors are moving toward using the newer M.2 form factor for this purpose.
1.2.3. PCI Express M.2
M.2 replaces the mSATA standard and Mini PCIe. Computer bus interfaces provided through the M.2 connector are PCI Express 3.0 (up to four lanes), Serial ATA 3.0, and USB 3.0 (a single logical port for each of the latter two). It is up to the manufacturer of the M.2 host or device to choose which interfaces to support, depending on the desired level of host support and device type.
2. What is NVM Express?
NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer’s non-volatile storage media usually attached via the PCI Express bus. 
The initialism NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCIe add-in cards, and M.2 cards, the successor to mSATA cards.
NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices.
Architecturally, the logic for NVMe is physically stored within and executed by the NVMe controller chip that is physically co-located with the storage media, usually an SSD. Version changes for NVMe, e.g., 1.3 to 1.4, are incorporated within the storage media, and do not affect PCIe-compatible components such as motherboards and CPUs.
NVM Express devices are chiefly available in the form of standard-sized PCI Express expansion cards and as 2.5-inch form-factor devices that provide a four-lane PCI Express interface through the U.2 connector (formerly known as SFF-8639). Storage devices using SATA Express and the M.2 specification which support NVM Express as the logical-device interface are a popular use-case for NVMe and have become the dominant form of solid-state storage for servers, desktops, and laptops alike.
2.1. NVMe vs SATA
Non-Volatile Memory Express (NVMe) is a new transfer protocol designed for solid-state memory. While SATA (Serial Advanced Technology Attachment) remains the industry standard for storage protocols, it wasn’t built specifically for Flash storage like SSDs and can’t offer the same advantages of NVMe. Eventually, SSDs with NVMe will replace SATA SSDs as the new industry standard. 
2.1.1. NVMe Hardware Compatibility
However, there are a couple of things to consider before purchasing an NVMe SSD. Is your system even compatible with NVMe? Two things you need to look for in your computer system are a built-in M.2 slot and support for NVMe. Check the product page of your computer to see if it accommodates an M.2 slot. Next, you need to see if your motherboard supports NVMe SSDs. Some motherboards that do support it may not always refer to it as NVMe. Instead, they might refer to it as "PCIe mode." Ideally, there should be an easier way to tell if your computer system can support NVMe but unfortunately, there isn’t. You’ll just have to refer to your motherboard’s website or use Google to search and find out if it does.
2.1.2. NVMe Operating System Compatibility
Along with hardware compatibility, you must consider OS compatibility. The latest versions of Linux, Windows, Chrome OS, and Mac OS all support NVMe but Apple doesn’t let you upgrade its hardware on most of their recent models so it might not be possible for Mac users. Cloning software is now compatible with NVMe drives as well.
3. What is M.2?
M.2 is a form factor specification that was introduced in 2012 and designed to replace the mSATA standard. The form factor specification spells out the physical size and shape of the SSD card you can connect to your system. The M.2 form factor is designed to maximize PCB (printed circuit board) while minimizing the amount of space it takes up in your PC or laptop. To connect an M.2 specified SSD, your motherboard will need to have an M.2 slot. 
The M.2 form factor is small and rectangular in shape, almost like a piece of gum. Sizes can vary, with possible widths of 12, 16, 22, or 30 millimeters, but they’re generally 22 millimeters wide. Lengths can also vary, coming in 16, 26, 30, 38, 42, 60, 80, or 110 millimeters. Motherboards will accommodate a variety of lengths for an M.2 module to allow for flexibility, while the width is more fixed.
When you buy an SSD like the Crucial P5 Plus, you may see something like "M.2 2280" in the title, which is a combination of its dimensions — 22mm and 80mm in length — helping you know what to buy.
4. Upgrade SSD in MacBook with MVMe driver
|MacBook Pro uses a proprietary storage drive connector, and is therefore not compatible with common M.2 drives without the use of an adapter. |
The problem with Standby
When we write, "with good results," there is a caveat. 2013-2014 machines treat hibernation differently than 2015 and later machines.
Apple has different power management modes for increasing battery life. One of those can cause a problem for users who upgrade to an NVMe drive in a 2013-2014 machine.
Some of these machines will kernel panic when attempting to go into standby mode. Standby is where the computer records a snapshot of the current state of your computer to the flash drive, usually after about 3 hours. A Mac on Standby can stay charged for up to 30 days without being plugged in.
The solution is to prevent the computer from going into Standby. Here’s how to do it.
The computer will still hibernate or sleep, without saving the current state of the computer to the flash drive. You’ll still have battery-life, although maybe not the 30-days-without-charging kind of battery life.
2015 and later machines need no modifications like this at all.
4.1. Which NVMe SSDs are known to work?
Basically all NVMe SSD work, except a few ones with incompatible firmwares. 
The following models have been tested to work :
Adata NVMe SSD : SX6000, SX7000, SX8200, SX8200 Pro etc.
Corsair NVMe SSD : MP500, MP510
Crucial NVMe SSD : P1, P2, X8
HP NVMe SSD : ex900, ex920, ex950
Toshiba XG3, XG4, XG5, XG5p, XG6
Intel NVMe SSD : 600p, 660p, 760p
MyDigital NVMe SSDs : SBX - BPX
Kingston NVMe SSD : A1000, A2000, KC1000
Sabrent Rocket (Phison E12 and E16 based)
Samsung NVMe SSD : 960 Evo, 960 Pro, 970 Evo, 970 Pro, 970 Evo plus (with latest firmware), 980
WD Black NVMe SSD v1, v2 and v3, WD Blue SN550 (FW Update mandatory), SN750, SN750 SE
Inland Premium (not Professional)
NVMe SSD known not to work on MacBook Pro / Air. DO NOT BUY:
Samsung 950 Pro
WD Blue NvME SN570 (EDIT march 2023: many success stories with this one during 2022-2023, new ones seem to work)
WD Black NvME SN770
SK Hynix Gold P31
Compatibility issues with these models are due to a firmware issue.
I bought a WD Blue SN570 1TB (386.5￥), and a M2 PCIe NVME Converter (12.9￥) and upgraded the factory SSD 128GB which is very tiny now, and created a dual OSes (i.e. Windows 10) using the Boot Camp Assistant successfully.
What you need: