Flash Foundations

Flash Foundations, Part 1: Standards & Interfaces

Trace the standards, interfaces and form factors that limit a drive before its firmware runs.

On this page 21 sections

Datasheets lead with sequential bandwidth. The numbers that actually limit a drive are decided earlier, in places the firmware cannot rewrite. Firmware and NAND physics still matter, but they can’t rescue a drive on the wrong protocol or link, or in a package that overheats.

Flash Foundations, Part 1: a host and a drive joined by per-core queues, four link generations each twice the last, and an M.2 card beside an E3.S cardA three-panel schematic. Left: a host box above a drive box, joined by five columns of queue slots, one queue per core. Center: four bars rising in doubling steps for PCIe Gen3, Gen4, Gen5 and Gen6, the last in copper. Right: an M.2 card above a larger E3.S card, drawn at one scale, each with gold contact fingers on its left edge.GUIDE / FLASH FOUNDATIONS, PART 1Limits set before the firmware runsPROTOCOL · LINK · PACKAGE01 PROTOCOLHostDrive02 LINKGen3Gen4Gen5Gen603 PACKAGEM.2E3.S

Flash Foundations is a ten-part series about NAND flash at the engineering level. It covers the physics, the architecture and the design decisions behind how a solid-state drive (SSD) behaves under real load. This part sets the envelope, the external limits that every later part works inside. Which commands the drive answers comes down to the Non-Volatile Memory Express (NVMe) protocol. How much bandwidth that conversation can use comes down to the Peripheral Component Interconnect Express (PCIe) link. Whether the controller can hold that bandwidth without throttling depends on the form factor.

Which limits are fixed before the first line of firmware runs, and how do you read them on a real drive? By the end of this part you can name the body that writes each rule, work out what a link can carry, tell what a bay will accept, and set up a test that measures steady state instead of a burst.

Who writes the rules for each layer

Every drive follows several standards at once, and a different body writes each one. Published rules come from JEDEC, NVM Express, the PCI Special Interest Group (PCI-SIG), the Storage Networking Industry Association (SNIA), SATA-IO and INCITS. They cover NAND parts and buses, host protocols, links, connectors and test methods.

Who writes the rules for each layer

Each layer from the host to the NAND part has its own rule writer

Who publishes what, from the top of the stack down

A stack of six rows from the host at the top to the NAND part at the bottom. Host software is governed by NVM Express. The host link is governed by PCI-SIG for PCIe, SATA-IO for SATA, INCITS T10 for SAS, and the CXL Consortium for CXL, which shares the PCIe wires. This row is highlighted in copper. The form factor is governed by PCI-SIG for M.2 and the SNIA small form factor work for U.2, U.3 and EDSFF, with JEDEC covering CXL memory modules. The drive method is governed by SNIA for the performance test specification and JEDEC for endurance and workload. The NAND bus is the ONFI and Toggle interfaces joined under JEDEC JESD230. The NAND part is qualified by JEDEC stress and environment tests.01 SOFTWARENVM Express: commands, queues, namespaces02 HOST LINKPCI-SIG: PCIe. SATA-IO: SATA. T10: SAS.CXL Consortium: CXL on the PCIe wires03 FORM FACTORPCI-SIG: M.2. SNIA SFF: U.2, U.3, EDSFF.JEDEC: CXL memory modules (JESD317)04 DRIVE METHODSNIA: performance test (PTS)JEDEC: endurance (JESD218), workload (JESD219)05 NAND BUSONFI and Toggle, joined under JEDEC JESD23006 NAND PARTJEDEC: stress and environment tests (JESD47, JESD22)one layer, its rule writerswhere the most bodies meet
Figure 1.1 · A drive is bound by several bodies at once, and the host link is the layer where the most of them meet. Source: the bodies and document numbers named in the text.

Figure 1.1 puts each body on the layer it writes. Most bodies meet at the host link. PCI-SIG owns PCIe, and SATA-IO owns the Serial ATA (SATA)SATA is the serial interface for storage that tops out at 6Gb/s, or 600MB/s on the wire before overhead, with one command queue of 32 entries. specification. INCITS T10 (Small Computer System Interface, SCSI) and T13 (AT Attachment, ATA) own the legacy protocol specifications behind Serial Attached SCSI (SAS)SAS is the serial interface used by enterprise drives. It supports dual ports, long cables and expanders, and speaks the SCSI command set. and SATA. Compute Express Link (CXL), which runs on the PCIe wires, belongs to the CXL Consortium.

A drive can satisfy one body and still be wrong for a platform, because passing one body’s tests says nothing about another’s. The site’s Standards page lists the dated releases for each body.

JEDEC: the NAND part and the NAND bus

JEDEC publishes the electrical and reliability specifications for semiconductor memory, including NAND flash. Its electrical specifications cover package pinout, interface voltage and the timing windows the controller must respect on read, program and erase. Those windows have names: tR is page read time, tPROG is program time and tBERS is block erase time. Part 3 gives their values and what moves them. Controller firmware is built around these windows, and violating them corrupts data.

For reliability, JEDEC defines the qualification tests that decide whether a NAND component is production-ready. JESD47 is the stress-test standard. It uses accelerated life testing at elevated temperature and voltage to compress years of field aging into weeks. JESD22 is a family of environmental tests, such as temperature cycling, humidity and vibration. Drive-level endurance is a different book. JESD218 is the SSD endurance method, and JESD219 is the workload that method assumes.

Between the NAND die and the controller sits the raw NAND interface. That interface is either the Open NAND Flash Interface (ONFI) or Toggle Mode. The ONFI 6.0 specification names Micron, Phison, Western Digital, SK hynix and Sony as its authors, and Toggle DDR came from Samsung and Toshiba (now Kioxia), who announced in 2010 that they had started taking part in JEDEC standardization of it. JESD230 is the interoperability layer JEDEC and ONFI wrote together (as of October 2026 the current revision is JESD230G.02, September 2026), so a controller can talk to asynchronous, synchronous double data rate and Toggle double data rate packages without a unique pinout per vendor. Both are source-synchronous, meaning the sender drives a strobe (DQS) alongside the data lines (DQ), eight of them in a x8 package, and the receiver captures data on both edges of that strobe.

Who writes the rules for each layer

Both NAND buses move data on both edges of a strobe sent with it

Source-synchronous double data rate, drawn with no vendor marks

Two panels, one for ONFI synchronous double data rate and one for Toggle double data rate, drawn the same way. In each, a controller box connects to a NAND die box by an 8-bit bidirectional data bus labeled DQ, a strobe line labeled DQS drawn in copper, and a bundle of control pins drawn dashed. Below the wires, a waveform shows the DQS strobe as a square wave and the DQ data as a row of eyes, each centered on a strobe edge. Dotted markers show data captured on every rising and falling strobe edge, which is what double data rate means. The strobe travels with the data from the sender, so the receiver samples on the strobe edges. The two buses differ in their control signals and timing rules, so a controller must support whichever interface its NAND uses.01 ONFIsynchronous DDRControllerNAND dieDQ ×8DQScontrolDQSDQdata captured on every edge02 TOGGLEToggle DDRControllerNAND dieDQ ×8DQScontrolDQSDQdata captured on every edgeDQ dataDQS strobecontrol pinssampling edge
Figure 1.2 · ONFI and Toggle differ in control signaling and timing rules, not in the double-data-rate idea. Illustrative values.

Figure 1.2 draws that shared mechanism once for each family. The two families differ in control signaling and timing rules, and both use double data rate. A controller must support whichever interface its NAND uses, or both if it aims for broad compatibility, so mixing NAND from different vendors is not a drop-in swap. Part 5 covers bus speeds and how the controller drives the bus. Kioxia’s JESD230 write-up is a readable walk through the current additions, though it doesn’t replace the standard.

SNIA, T10, T13 and SATA-IO

SNIAThe SNIA Performance Test Specification sets a repeatable method for measuring SSDs: precondition the drive, reach steady state, then record. publishes the Solid State Storage Performance Test Specification (PTS), the baseline for honest device-level SSD comparison. Following PTS separates a characterization from a cherry-picked burst, and the field section below applies it. The SSD Benchmarking 101 series makes the argument behind it. SNIA’s SSD form factor overview is the mechanical half of the same story. SFF-TA-1006 specifies E1.S and SFF-TA-1008 specifies E3. The small form factor (SFF) specification catalog is where those document numbers live.

INCITS T10 and T13 still own the protocol specifications that SAS and SATA derive from, and SATA-IO publishes the SATA specification itself. Today the SNIA STA Forum is the SAS industry community that used to be the SCSI Trade Association. Both interfaces remain relevant in the installed base, even as NVMe takes new designs.

How NVMe replaced AHCI

NVMe is how a host talks to a solid-state device over PCIe. NVMe over Fabrics (NVMe-oF) carries it over a network too. Before NVMe, SSDs borrowed the Advanced Host Controller Interface (AHCIAHCI, the Advanced Host Controller Interface, is the register-level interface that SATA drives use, built around a single command queue of 32 entries.). That host interface was built for spinning disks and has one command list per port, 32 slots deep. NVMe’s base specification allows up to 65,535 I/O queues, each holding up to 65,535 outstanding commands.

How NVMe replaced AHCI

AHCI shares one queue, and NVMe gives each core its own

Queue structure, not drive speed, is what differs

Two stacked panels. The top panel shows AHCI, used by SATA drives: the host feeds one command list of 32 slots, drawn as 32 small cells in copper, to the drive. The bottom panel shows NVMe: each of several CPU cores, labeled core 0, core 1 and core n, owns its own submission queue and its own completion queue, which connect to the drive controller. The NVMe specification allows up to 65,535 I/O queues, each up to 65,535 outstanding commands. The contrast is that one shared 32-slot list caps the commands in flight, while per-core queue pairs let many commands be outstanding without cores contending for one structure.01 AHCI (SATA)HostDrivea single 32-slot command list02 NVMe (PCIe)DrivecontrollerCore 0SQCQCore 1SQCQCore nSQCQeach core owns a submission queue (SQ) and a completion queue (CQ)up to 65,535 I/O queues, each up to 65,535 outstanding commandsshared command slotsubmission slotcompletion slot
Figure 1.3 · One 32-slot queue limits how many commands the drive can see at once, while per-core queue pairs scale with the cores. Source: NVM Express base specification and the AHCI definition.

Figure 1.3 shows the structural difference. NVMe hosts usually give each CPU core its own submission queue (SQ)NVMe uses pairs of queues in host memory: the host places commands in a submission queue and the drive reports results in a completion queue. and completion queue (CQ); the specification allows many queues but does not require one pair per core. The host writes a command into its SQ and rings a doorbell register to tell the drive, which posts the result to the paired CQ. With a pair per core, cores do not take turns on a shared structure. AHCI shares one list, so every command passes through one 32-slot window.

This is why a modern NVMe SSD can deliver hundreds of thousands of input/output operations per second (IOPSIOPS counts commands finished per second. Queue depth is how many commands are outstanding at once, and a drive needs a deeper queue to reach its top IOPS.) where a SATA SSD manages far less, at a queue depth (QD) of 32: Samsung’s 870 EVO data sheet lists 98,000 read IOPS at QD32 and 13,000 at QD1. A 6Gb/s SATA link carries about 600MB/s, which caps 4KB transfers near 146,000 per second. Queue depth is how many commands are outstanding at once. Deeper queues let the controller group and reorder commands against NAND, and Part 5 covers how it spreads them across channels and dies. Everyday desktop work lives near QD1, so spec-sheet IOPS at QD32 or QD128 describe a different workload.

NVMe also defines the feature set the drive exposes. Namespaces let one physical device present multiple logical volumes. Power states let the host and the drive negotiate idle savings. Sanitize covers block erase, cryptographic erase or overwrite. Telemetry log pages give a standard way to pull vendor debug data, and the SMART / Health Information log gives the structured health view. Part 8 holds the field reference for those counters.

The NVMe library: command sets and transports

NVMe 2.0 broke the 1.x monolith into a library made of a base specification, separate I/O command sets such as Zoned Namespace (ZNS) and Key Value (KV), independent transport bindings for PCIe, remote direct memory access (RDMA) and TCP, and a management interface (NVMe-MI) for out-of-band management. That split is still the right way to read NVMe. Command sets and transports can move without waiting for a single giant revision.

The NVMe library: command sets and transports

Command sets and transports plug into one base specification

Since NVMe 2.0 the library is separate documents, not one specification

Four rows describe the NVMe specification library. The top row lists the command sets: NVM for block I/O, Zoned Namespace, Key Value, Computational Programs and Subsystem Local Memory. The second row, highlighted in copper, is the base specification that all of them share: queues, admin commands, namespaces and security. The third row lists the transports that carry commands: PCIe, RDMA and TCP. The fourth row, drawn dashed, lists the Boot specification and the NVMe Management Interface that sit alongside the stack. Splitting the library this way lets command sets and transports change independently.01 COMMAND SETSNVMblock I/OZNSKVProgramsLocal memory02 BASE SPECIFICATIONQueues, admin commands, namespaces, security03 TRANSPORTSPCIeRDMATCP04 ALONGSIDEBootNVMe-MI managementcommand set or transportshared basealongside
Figure 1.4 · A new command set or transport can ship without waiting for a revision of everything else. Source: NVM Express specification library.

Figure 1.4 shows the layering. Every device shares queues, admin commands, namespaces and security, and the base specification holds them. Command sets sit above it and define what the drive can be asked to do. Transports sit below it and define how commands travel. A connector that looks identical can hide devices from different revisions of the library, with different feature sets, so the Identify data shows what a drive implements.

Document What it adds
Base specification Queues, admin commands, power, namespaces, security and multipath. Sanitize, telemetry and namespace management live here
NVM command set Standard block I/O over any transport: read, write, compare, and dataset management (TRIM). Copy moves data between logical block address (LBA) ranges inside the drive without a host round trip
ZNS command set Sequential write zones. The host owns write ordering
KV command set Store, retrieve, list, delete and exist by key, which drops the host-side key-to-block map. A specialist feature, not a consumer one
Computational Programs command set Programs that run against data on the device. Implementation is still a product question
Subsystem Local Memory command set Memory local to the NVM subsystem, exposed as a memory namespace instead of an LBA namespace
PCIe transport Register map, doorbells, interrupts and PCI power management for the local SSD case
RDMA transport Binding to RDMA over Converged Ethernet (RoCE) or InfiniBand. Lowest-latency fabric path, but it needs RDMA hardware
TCP transport Binding to TCP/IP over standard Ethernet
Boot specification Booting from NVMe is specified instead of being tribal knowledge
NVMe-MI Out-of-band and in-band management of thermals, firmware update and health

Whether a drive implements a given command set is a product and firmware question. ZNS pushes work toward the host, which manages zone write ordering in exchange for less garbage collectionGarbage collection copies the valid pages out of mostly stale blocks and erases those blocks, so there is always free space for new writes. (GC) and less internal translation. The drive’s background reclaim of stale blocks is covered in Part 7. Part 10 covers where ZNS stands. With KV, the drive owns the key-to-location map, and the host drops its own key-to-block layer. Simple Copy and computational programs move work onto the device. NVMe 2.4 adds persistent lockdown settings, covered at the end of this part. These choices change what the drive does and what the system around it must provide, so the NVMe revision on a device matters long before you touch firmware or run a benchmark.

PCI-SIG publishes the PCIe base specification, the physical and logical signaling layer that NVMe and CXL both ride on. PCIe defines link trainingLink training is the handshake at power-up where two PCIe devices agree on a speed and width. The result is readable in the link status register, LnkSta., lane configuration and the electrical margins at each generation. A laneA PCIe lane is one pair of transmit wires and one pair of receive wires. A link bundles one, two, four, eight or sixteen lanes. is one pair of transmit wires and one pair of receive wires, and most storage links are x1, x2 or x4. If you need the GT/s ladder without opening the member PDF, the PCI-SIG FAQ for 5.0 is a clean generation recap. NVMe is the protocol layer on top. PCIe itself is a general-purpose interconnect used for graphics cards and network adapters too, and NVMe is what turns a PCIe connection into a storage conversation.

Each generationEach PCIe generation roughly doubles the per-lane transfer rate, so the same x4 link carries more data in every new generation. doubles the previous one. Gen3 delivers about 4GB/s across an x4 link, at 8GT/s per lane with 128b/130b encoding. That encoding sends 128 payload bits in every 130 on the wire, so it costs under 2% of the bits. Gen4 doubles the rate to about 8GB/s, and Gen5 to about 16GB/s. PCIe 6.0 doubles once more, to 64GT/s raw, about 32GB/s on an x4 before overhead and roughly 30GB/s after it. PCIe 7.0 runs at 128.0GT/s, double the 64.0GT/s of PCIe 6.x, according to PCI-SIG. Part 10 covers it.

Gen6 does that with four-level pulse amplitude modulation (PAM4NRZ sends one bit per symbol on two voltage levels. PAM4 sends two bits on four levels, which doubles the data rate but shrinks the noise margin.) instead of the non-return-to-zero (NRZ) signaling that carried Gen3 through Gen5. NRZ sends one bit per symbol on two voltage levels. PAM4 sends two bits per symbol on four levels. PCIe 6.0 also moves to FLITFLIT mode, introduced with PCIe 6.0, sends data in fixed-size units protected by forward error correction instead of variable-length packets. (flow control unit) mode, which sends fixed-size units protected by forward error correction (FEC) and a cyclic redundancy check (CRC) instead of variable-length packets.

PCIe link generations, encoding and signaling

Each PCIe generation doubles the x4 rate, and Gen6 adds PAM4

Link rate on an x4 link before protocol overhead

A horizontal bar chart of PCIe link rate on an x4 link in gigabytes per second, with an axis from 0 to 32. Gen3 at 8 gigatransfers per second with 128b/130b encoding and NRZ signaling is about 4 gigabytes per second, which is about 1 gigabyte per second per lane. Gen4 at 16 gigatransfers per second is about 8. Gen5 at 32 gigatransfers per second is about 16, with a unit interval of 31.25 picoseconds. Gen6, in copper, runs at 64 gigatransfers per second with PAM4 signaling, which carries two bits per symbol in the same unit interval, and FLIT mode packets with forward error correction and a cyclic redundancy check. Its bar is the raw x4 rate, about 32 gigabytes per second, and a dashed tick marks roughly 30 after FLIT overhead. These are link rates, so drive throughput is lower.PCIe generation08162432x4 link rate, GB/s (link level, not drive throughput)Gen38GT/s, 128b/130b, NRZabout 4GB/sGen416GT/s, 128b/130b, NRZabout 8GB/sGen532GT/s, 128b/130b, NRZabout 16GB/sGen664GT/s, PAM4, FLITabout 32GB/s rawNRZ generationsPAM4 generationabout 30GB/s after FLIT
Figure 1.5 · Gen3 to Gen5 double the transfer rate on NRZ signaling, and Gen6 reaches 64GT/s by sending two bits per symbol with PAM4. Source: PCI-SIG PCIe base specification and PCIe 6.0 page. Unit interval (UI) derived as 1 ÷ GT/s.

Figure 1.5 sets the four generations on one axis. Gen3 to Gen5 double on the same NRZ signaling by shortening the unit interval (UI). The UI is the time one symbol occupies, and it is 125ps at Gen3, 62.5ps at Gen4 and 31.25ps at Gen5. Gen6 keeps the 31.25ps UI and gets its doubling from the second bit in every symbol. Per lane, that is about 1GB/s at Gen3 and about 4GB/s at Gen5.

Signal integrity gets harder every generation. Gen3 was forgiving. At Gen5 trace geometry, connector quality and equalization stop being optional, which, together with controller power and heat, is why Gen5 SSDs showed up in high-end desktops before laptops. Gen6 is stricter. PAM4 packs two bits into the same UI, so each voltage eye is smaller, and retimers and compliance programs matter. Part 10 follows how the ecosystem handles it.

That margin is spent in the copper. A board is a stack of copper layers separated by fiberglass laminate and tied together with vias. PCIe lanes run as differential pairs, and the board has to hold their impedance along the whole route. TI’s layout guide gives 85Ω differential impedance for add-in cards on the lanes, with 100Ω on the reference clock. Each transmit lane also passes through a small series capacitor (the AC-coupling capacitor) that blocks DC between the two ends of the link. Vias, stubs and connector transitions each take a share of the loss budget, so the board matters more with every generation.

Link-level byte rates from the previous section overstate storage throughput. Part of the gap is packet overhead. Every transaction layer packet (TLP) wraps its payload in a header of 12 or 16 bytes and a 2-byte sequence number. Link CRC adds 4 bytes, framing adds 2 bytes at Gen2 or 4 at Gen3, and an optional end-to-end CRC adds 4 more. Xilinx’s PCIe performance white paper puts that at 20 to 30 bytes per packet and works one case: with a 12-byte header and no end-to-end CRC, the overhead is 20 bytes at Gen2 and 22 at Gen3, so a 256-byte maximum payload size (MPS) is about 92% efficient either way and a 128-byte MPS is about 86%. Acknowledgment, flow-control and clock-compensation traffic take a further share. Applying the 92% to the 3.94GB/s Gen3 x4 rate gives about 3.6GB/s before that traffic, close to the 3.5GB/s rating of the Gen3 drive in the table below. No drive was measured here, so treat that as an estimate.

From link rate to drive throughput

Drives read below the link rate after line coding

Link rate after encoding beside a maker-rated sequential read

A horizontal bar chart in gigabytes per second, axis 0 to 32, with ten bars in five pairs. In each pair a neutral bar is the link rate after line coding and a teal bar is the maker-rated sequential read of one drive on that interface. SATA III: link 0.6, Samsung 870 EVO 0.56, which is 560 megabytes per second. PCIe 3.0 x4: link 3.94, Samsung 970 EVO Plus 3.5, which is 3,500 megabytes per second. PCIe 4.0 x4: link 7.88, Samsung 990 PRO 7.45, which is 7,450 megabytes per second. PCIe 5.0 x4: link 15.75, Samsung 9100 PRO 14.7, which is 14,700 megabytes per second. PCIe 6.0 x4: link about 30 after FLIT overhead, Micron 9650 28. The first four drives are consumer models and the Micron 9650 is a data-center model. All drive values are maker ratings, not measurements.Link or drive08162432Link rate or rated sequential read, GB/sSATA III link0.6870 EVO, consumer0.56Gen3 x4 link3.94970 EVO Plus, consumer3.5Gen4 x4 link7.88990 PRO, consumer7.45Gen5 x4 link15.759100 PRO, consumer14.7Gen6 x4 link309650, data center28link rate after line codingmaker-rated sequential read
Figure 1.6 · Each rated read sits 5 to 11% under its link rate; the first four drives are consumer models and the Gen6 drive is a data-center model. Source: link rates derived from PCI-SIG and SATA-IO signaling rates and line codes; reads from the Samsung 870 EVO, 970 EVO Plus, 990 PRO and 9100 PRO data sheets and the Micron 9650 page (maker ratings, not measured here).

Figure 1.6 puts the link rate after line coding beside a maker-rated sequential read for each interface. The SATA, Gen3, Gen4 and Gen5 drives are consumer models, and the Gen6 drive is a data-center model. The Gen3 rating sits about 11% under the link, the Gen4 rating about 5% under and the Gen5 rating about 7% under. The Gen6 rating is also about 7% under, and the link rate shown there is already the roughly 30GB/s after FLIT overhead. Packet overhead alone takes about 14% at a 128-byte MPS, 8% at 256 and 4% at 512, so gaps of this size are within what packet overhead can account for before any controller limit. SATA III sits about 7% under, 560MB/s against a 600MB/s cap, because the 6Gb/s line limits it.

Headroom lets faster NAND and deeper queues show up as real performance. It does not shorten a single small read. tR is the time to read a page into the buffer, and it didn’t double with the link, so QD1 latency doesn’t follow the sequential figure. Gen6 can move more data per second. It cannot make a triple-level cell (TLC, three bits per cell) page read faster, and Part 2 covers how cell type sets that time. If the workload is small-block and queue-shallow, you feel NAND and firmware instead of the extra link bandwidth.

Gen5 already showed the thermal problem: controllers and the physical layer (PHY) run hot enough that drives need heatsinks or real airflow under sustained load. I covered that gap between the datasheet peak and what a thermally limited drive holds in The Visionary of PCIe 5.0. Gen6 doesn’t change that: the slot sets the generation the link trains at, and the power and cooling set whether the drive holds it.

Each interface gets one maker-rated sequential read. It is an up-to rating and not a measurement here. The rows mix drive classes, so the table names each one, and the last column is a reading of the likely limit rather than a measured result.

Interface Protocol Rated sequential read Drive class Likely limit (a reading)
SATA III AHCI 560MB/s, Samsung 870 EVO Consumer 6Gb/s link with 8b/10b encoding, one direction at a time, and a 32-slot queue
PCIe 3.0 NVMe NVMe 3,500MB/s, Samsung 970 EVO Plus Consumer The x4 link, about 4GB/s
PCIe 4.0 NVMe NVMe 7,450MB/s, Samsung 990 PRO Consumer The x4 link, about 8GB/s
PCIe 5.0 NVMe NVMe 14,700MB/s, Samsung 9100 PRO Consumer The x4 link, about 16GB/s
PCIe 6.0 NVMe NVMe 28GB/s, Micron 9650 Data center PAM4 signal integrity, power and cooling, and FLIT overhead

Those ratings sit below the x4 link rates, and SATA uses a single lane. QD1 read latency is missing from the table because the NAND and the firmware path set it. CXL is missing too, since it isn’t block I/O.

The ceilings of SATA and SAS

SATA was the dominant client storage interface for more than a decade, and it is still widely deployed. SATA throughput is capped at about 600MB/s, well below what modern NAND can do. That cap comes from the 6Gb/s line rate. With every byte sent as a 10-bit code (8b/10bLine encoding adds structure to a serial bit stream so the receiver can recover the clock. 8b/10b costs 20% of the bits, while 128b/130b costs under 2%.), 6Gb/s × 8/10 ÷ 8 leaves 600MB/s. Earlier generations ran at 1.5 and 3Gb/s, so 150 and 300MB/s. Samsung’s 870 EVO data sheet lists a SATA 6Gb/s interface, compatible with 3 and 1.5Gb/s hosts, and 560MB/s sequential read, just under the cap. It also carries data in one direction at a time.

The ceilings of SATA and SAS

A 6Gb/s SATA link carries 600MB/s once 8b/10b coding is counted

Line rate to data rate, then the 4KB command ceiling

A four-step strip turns the SATA III line rate into a data rate. The line rate is 6 gigabits per second. The 8b/10b code sends every byte as 10 bits, so only 8 of every 10 bits are data, which leaves 4.8 gigabits per second. Converting bits to bytes, a division by 8, gives 600 megabytes per second, in copper as the ceiling. Below the strip, a bar chart shows the three SATA generations at 1.5, 3, 6 gigabits per second giving 150, 300, 600 megabytes per second. A last line shows that 600 million bytes per second divided by 4,096 bytes per command caps 4 kilobyte transfers near 146,000 per second.LINE RATE6Gb/sSATA III8b/10b CODING× 8/1010 bits a byteDATA BITS4.8Gb/safter codingBITS TO BYTES600MB/s÷ 8, ceilingSATA line rate0200400600Data rate after 8b/10b coding, MB/s1.5Gb/s150MB/s3Gb/s300MB/s6Gb/s600MB/s4KB commands: 600,000,000 ÷ 4,096 ≈ 146,000 per second at mostearlier SATA generationsSATA III, the ceiling
Figure 1.7 · The SATA ceiling is arithmetic on the line code, so no NAND or controller improvement can raise it. Source: derived from the SATA line rates and 8b/10b coding.

Figure 1.7 walks that arithmetic. Line coding sets the cap, so no faster NAND or controller can lift it. For many workloads that doesn’t matter, since operating system boots, application launches and general file access are rarely limited by the interface at SATA speeds.

SATA hosts use AHCI on the host side, and the drive side uses Native Command Queuing (NCQ). Both stop at 32 outstanding commands, a limit that predates the parallelism demands of solid-state storage. NCQ let a hard drive reorder commands to save seeks and rotation. On an SSD the same queue’s job is to keep channels and dies busy, and 32 slots is a ceiling that shows up under sustained mixed workloads.

SATA also defines how the link sleeps. Partial leaves the link in a reduced-power condition from which the specification requires a wake in no more than 10µs. Slumber saves more, and the link must wake in no more than 10ms. Either the host or the device can ask for a sleep state, and the other side can accept or refuse it. Wake-up is signaled out of band, before the data link is up, and the same out-of-band signaling brings the link up at boot. Host and device exchange reset and initialization signals, then negotiate the highest speed they share, falling back from 6Gb/s to 3 or 1.5Gb/s if the higher rate will not hold. Power-saving settings explain some odd latency spikes on SATA drives, and a drive that works but runs below its port speed is a link problem rather than a NAND problem. Reading the negotiated speed is covered in the field section below.

SATA remains relevant in cost-sensitive client markets, in legacy enterprise deployments, and anywhere platform constraints make NVMe impractical, such as an older host, a fixed connector or a backplane that will not change. Knowing why it exists prevents two mistakes. One is dismissing it entirely, and the other is recommending NVMe where the platform cannot use it.

SAS is the enterprise interface that preceded broad NVMe adoption in the data center. On August 8, 2017 the SCSI Trade Association said that development of the 24G SAS specification was complete and that it is backward compatible with 12Gb/s and 6Gb/s SAS but uses a different encoding scheme from earlier generations. SAS-4 runs 22.5Gb/s per lane, the rate behind 24G SAS. NVMe is taking new enterprise designs, and the installed SAS base does not disappear in a product cycle, so SAS still matters if you sell into or support existing enterprise storage. On latency, SAS and SATA carry SCSI acknowledgment overhead that the slimmer NVMe protocol avoids, according to the NVM Express FAQ.

NVMe-oF: the drive in another chassis

NVMe-oF extends NVMe beyond the local PCIe connection. A drive doesn’t have to sit in the same chassis as the server. Storage can be pooled across a data center, and the host reaches remote media with the same NVMe commands it uses for a local drive.

Its main fabrics are RDMA over RoCE or InfiniBand, TCP over ordinary Ethernet, and Fibre Channel in existing storage area networks, which reaches NVMe through a separate mapping outside the NVMe transport documents. RDMA wins latency and loses hardware flexibility. NVMe over TCP takes the latency hit and runs on the network you already have. It defines Transport Layer Security (TLS) 1.3 and DH-HMAC-CHAP for in-band security, both optional. Where TLS is used, it is based on pre-shared key (PSK) authentication rather than certificates.

NVMe-oF: the drive in another chassis

NVMe over Fabrics sends the same commands over multiple paths

Host, fabric and target, with two paths to one namespace

A path diagram from left to right. A host box, holding the application and the NVMe host driver, connects into a fabric box listing the three transports RDMA, TCP and Fibre Channel. From the fabric, two paths run to two controller ports on the target. Port A is labeled optimized and drawn solid. Port B is labeled non-optimized and drawn dashed. Both ports lead to the same namespace on the NVMe SSDs of the target. Below, a row of chips lists the five asymmetric namespace access states a path can be in: optimized, non-optimized, inaccessible, persistent loss and change. The host sends I/O to the optimized path and fails over without interrupting the application.HostapplicationNVMe driverFABRICRDMATCPFibre ChannelPort AoptimizedPort Bnon-optimizedNamespaceon SSDsANA PATH STATESoptimizednon-optimizedinaccessiblepersistent losschangeoptimized pathnon-optimized pathhost or storage part
Figure 1.8 · The host multipath driver prefers the optimized path and fails over to the other when the path state changes. Source: NVM Express transport and ANA descriptions.

Figure 1.8 shows the path. High-availability deployments extend the redundancy model through Asymmetric Namespace Access (ANA). A namespace can be reachable through multiple controller ports at once, and each path reports one of five states: optimized, non-optimized, inaccessible, persistent loss, or change while it transitions. A host multipath driver sends I/O to optimized paths under normal conditions and fails over to non-optimized paths without interrupting the application. This is the NVMe equivalent of Asymmetric Logical Unit Access (ALUA) in SCSI arrays over Fibre Channel, iSCSI or SAS.

A drive reports ANA state through the ANA log page, and it signals changes to the host with an asynchronous event notification, so the multipath driver does not have to poll. Linux’s native NVMe multipath is the implementation most operators run. NVM Express’s NVMe-oF 1.1 Q&A explains why ANA showed up as a fabric problem rather than a local-drive problem.

NVMe-oF is the architectural basis for modern disaggregated storage. Compute and storage scale independently instead of being physically co-located. That matters if you work in cloud, hyperscale or enterprise storage architecture.

CXL, the same bay with a different job

CXL uses the same PCIe wires NVMe uses, but the conversation is different. NVMe is queues and block commands. CXL is cache-coherent load and store, with CXL.ioCXL carries three protocols on one link: CXL.io for device control, CXL.cache for coherent caching by a device, and CXL.mem for host access to device memory. for device discovery, CXL.mem for host access to device memory, and CXL.cache when a device caches host memory. The cards you actually pull from an E3.S bay are Type 3 memory expandersA CXL memory module is a Type 3 CXL device: a memory expander the host reaches over CXL.io and CXL.mem, without the CXL.cache link accelerators use., and they speak CXL.io plus CXL.mem. CXL 1.1 and 2.0 sit on the PCIe 5.0 PHY at 32GT/s. CXL 3.0 through 3.2 sit on the PCIe 6.0 PAM4 PHY at 64GT/s, and CXL 4.0 moves to 128GT/s.

CXL, the same bay with a different job

CXL and NVMe use the same wires and speak different protocols

Two stacks over one physical layer, in one kind of bay

Two stacks stand side by side over a shared base. The left stack is an NVMe SSD: the host uses block I/O through the NVMe driver, and the protocol is NVMe queues and block commands. The right stack is a CXL memory module: the host uses CPU load and store instructions, and the protocol is CXL dot io plus CXL dot mem for a Type 3 memory expander. Both stacks sit on one shared layer, in copper, which is the PCIe physical layer with its lanes and signaling. Below that is the shared bay, an EDSFF E3.S or E1.S slot, drawn dashed. A row of three chips gives the generations: CXL 1.1 and 2.0 run on the PCIe 5.0 physical layer at 32 gigatransfers per second, CXL 3.x on the PCIe 6.0 physical layer at 64, and CXL 4.0 at 128.01 NVME SSDHost: block I/Othrough the NVMe driverNVMe protocolqueues, block commands02 CXL MEMORY MODULEHost: load and storefrom the CPUCXL.io and CXL.memmoves cache linesShared PCIe physical layer (PHY)same lanes, same signaling, same link trainingSame EDSFF bay: E1.S or E3.S03 CXL GENERATIONS ON THE SAME PHYCXL 1.1 and 2.0PCIe 5.0 PHY, 32GT/sCXL 3.xPCIe 6.0 PHY, 64GT/sCXL 4.0128GT/sone protocol stackshared physical layershared bay
Figure 1.9 · The physical layer and the bay are shared, so the slot does not tell you whether a card is storage or memory. Source: CXL Consortium and JEDEC JESD317-2 descriptions.

Figure 1.9 shows what is shared and what is not. Below the protocol line the two are the same: lanes, signaling, link training and the bay. So a Gen6 slot in an Enterprise and Datacenter Standard Form Factor (EDSFF)EDSFF, the Enterprise and Datacenter Standard Form Factor, defines the E1.S, E1.L and E3 shapes built for dense, hot-swappable server storage. backplane can train either an NVMe SSD or a CXL memory module, and the slot does not tell you which one you installed. JEDEC JESD317-2 defines CXL memory modules (CMMs), and a SNIA form-factor deck lists them in the same EDSFF mechanicals as NVMe SSDs: Samsung’s CMM-D, for example, is an E3.S 2T module (two thickness) on a PCIe 5.0 x8 link. Hot swap can differ too, because some servers, such as Lenovo’s, document their E3.S CXL memory modules as non-hot-swap. The ThinkSystem SR650 V4 install procedure starts with powering off the server and disconnecting the power cords, and the SR860 V4 uses its E3.S bays for non-hot-swap memory modules.

One field mistake follows. An E3.S that seats in an NVMe backplane can be a Samsung CMM-D or Micron CZ120 class DRAM expander instead of a flash SSD. Samsung’s CMM-D 2.0 SKUs in that white paper are E3.S 2T, PCIe 5.0 x8, CXL 2.0 and DDR5. Micron’s CZ120 qualification note describes 128GB and 256GB modules in extra E3.S bays next to NVMe bays. NVMe Identify will not tell you what you expect, because the module is not an NVMe device. A platform CPU without CXL support won’t bring the module up as memory, and the module never appears as an NVMe namespace, so a missing namespace here isn’t an SSD firmware bug. Read the JEDEC CMM label for media type, CXL revision, capacity and connector width.

CXL today is mostly Type 3 DRAM capacity and bandwidth next to the CPU, for working sets that no longer fit in DIMMs. For most fleets that means memory expansion rather than a storage architecture. Part 10 covers pooling, sharing and when that changes. Don’t specify a CXL module as if it were an NVMe drive in the same skin. CXL traffic is memory access rather than a 4KB command completion, so it has no place on a block I/O comparison.

Form factors: how the package sets heat, power and service

A form factor defines the physical package, meaning its dimensions, connector, thermal environment and ecosystem. That package sets the thermal and mechanical environment a drive works in, whatever NAND and controller sit inside. Choosing it is a product and deployment decision with real engineering consequences. Client cards live in the PCI Express M.2 spec. Rack cards live in SNIA’s EDSFF overview. EDSFF skins also carry CXL memory modules, and the bay doesn’t advertise the protocol.

Form factors: how the package sets heat, power and service

Drawn on one scale, M.2 is the small card and E3.S is the large one

Footprints from the top, thicknesses from the side

A to-scale lineup. The top view shows the footprints. Five M.2 cards are 22 millimeters wide and 30, 42, 60, 80 and 110 millimeters long, named 2230, 2242, 2260, 2280 and 22110, with 2280 in copper as the desktop standard. On the right, an E1.S card is about 111.5 by 31.5 millimeters and an E3.S card is about 112.75 by 76 millimeters. A scale bar shows 20 millimeters. The side view below shows thickness on the same scale: U.2 and U.3 at 7 millimeters, U.2 and U.3 at 15 millimeters, E3.S 1T at 7.5 millimeters and E3.S 2T at 16.8 millimeters. The 2.5 inch U.2 footprint is not drawn because its dimensions are not in the table.01 FOOTPRINT, TOP VIEW223022 × 30mm224222 × 42mm226022 × 60mm228022 × 80mm2211022 × 110mmE1.S111.5 × 31.5mmE3.S112.75 × 76mm20mm02 THICKNESS, SIDE VIEWU.2, U.37mmU.2, U.315mmE3.S 1T7.5mmE3.S 2T16.8mmform factorM.2 2280, the desktop standardconnector edge
Figure 1.10 · Footprint and thickness set how many NAND packages fit and how much heat the form factor can shed. Source: dimensions in the form factor table below. The 2.5in U.2 footprint is not drawn.

Figure 1.10 draws the footprints and thicknesses on one scale. An M.2 cardM.2 is a small card format for SSDs. The name 2280 means 22mm wide and 80mm long, and other common lengths are 2230, 2242 and 22110. is 22mm wide at every length. E1.S is about as long as an M.2 22110 and wider. E3.S is the large card, about 76mm wide, and it comes in two thicknesses. Footprint decides how many NAND packages fit, and thickness decides the cooling path. The table below lists the same form factors with their connectors and typical use.

Form factor Dimensions Connector Typical use Notable characteristic
M.2 2280 22 × 80mm Edge connector (M key or B+M key) Consumer, prosumer, laptop, desktop Dominant client form factor, susceptible to thermal throttle in fanless slots
M.2 2230 22 × 30mm Edge connector (M key) Compact laptops, handheld devices Same protocols as 2280, less NAND capacity due to the shorter board
U.2 2.5in, 7 or 15mm height SFF-8639 Enterprise hot-swap server bays Power and data in one connector. A Gen6 product family can still come as a Gen5 U.2
U.3 2.5in, 7 or 15mm height SFF-8639 (same physical) Hot-swap bays with mixed-protocol backplanes Tri-mode. SFF-TA-1001 defines the pin usage and slot detection a host controller uses to pick the protocol
EDSFF E1.S ~111.5 × 31.5mm EDSFF connector 1U front-access, hyperscale, Gen6 SI nodes Cable-free hot swap, higher sustained power than M.2, three enclosure heights (9.5, 15 and 25mm)
EDSFF E3.S ~112.75 × 76mm, 7.5mm (1T) or 16.8mm (2T) EDSFF connector High-capacity NVMe and CXL Type 3 memory Same bay for a NAND SSD or a DRAM expander. Confirm the protocol before you chase NVMe logs
BGA Board-level dimensions vary Soldered, no connector Laptops, tablets, embedded, automotive, industrial Non-replaceable, no connector wear, vibration-resistant

BGA (ball grid array) storage modules are soldered directly to the host board instead of connecting through a removable interface. That removes the connector, which cuts height and improves vibration resistance. BGA storage is common in thin laptops, tablets, mobile devices, industrial controllers and automotive applications where space and mechanical robustness matter more than replaceability. Much phone-class BGA storage runs on UFS, covered in the UFS guide. Apple’s phones are a documented case: AnandTech reported in 2015 that the iPhone 6s used PCIe and NVMe for storage instead of UFS or eMMC, and the Linux kernel carries an NVMe driver for Apple’s ANS controller. An early NVMe SSD in a single BGA package was Samsung’s PM971-NVMe, a 2016 PCIe SSD that was 1.5mm thick and held the controller, DRAM and the NAND dies for up to 512GB.

Serviceability is the trade-off. A BGA module cannot be upgraded or replaced without rework equipment. For consumer devices that is often acceptable. For industrial and automotive work it is frequently a requirement, because connector reliability over thousands of thermal cycles and years of vibration is hard to guarantee. That makes the solder joint the primary mechanical concern, addressed with reflow process control and thermal-cycling fatigue characterization under IPC-9701B. JEDEC’s JESD22 family is the environmental half of the same conversation.

M.2 as the client standard

M.2 is the common form factor for client and prosumer SSDs. Each card is small and rectangular, with an edge connector. Length variants include 2230 (30mm, common in compact laptops and handhelds), 2242, 2260, 2280 (80mm, the desktop standard) and 22110 (110mm, used in some workstation and NAS platforms). Of the four or five digits, the first two are the width in millimeters and the rest are the length, so every standard M.2 SSD is 22mm wide. Height codes on the drive label set how tall parts can be on each side. D2 means double-sided, with components up to 1.35mm on each side, so a thin laptop that only takes single-sided drives will not fit a D2 card even when the length and key match. To see what sits on an M.2 card, open the Atlas, an interactive 3D reference for how an M.2 NVMe SSD is put together.

M.2 supports both SATA and NVMe over PCIe. Keying notches on the card edge say which socket a drive fits. They do not tell you whether the slot is wired for PCIe, SATA or both.

M.2 as the client standard

The notches on the card edge decide which sockets it fits

Schematic of the connector edge, not to scale

Two schematic M.2 cards, each with its connector edge on the left and two possible notch positions, B above and M below. The first card has a notch at the M position only. It fits M-key sockets only and carries PCIe x4. The second card has notches at both the B and M positions. It fits both B-key and M-key sockets and carries SATA or PCIe x2. The contact fingers are gold and the key notches copper. The drawing is a schematic of the keying idea. Keying does not say whether a given slot is wired for PCIe, SATA or both.01 M KEYB position (upper)M position (lower)Notch at the M positionFits M-key sockets onlyPCIe x4.02 B+M KEYB position (upper)M position (lower)Notches at B and MFits B-key and M-key socketsSATA, or PCIe x2.All standard cards are 22mm wide.Lengths run from 30 to 110mm.cardcontact fingerskey notch
Figure 1.11 · Keying says what fits, not what the slot is wired for, so confirm the link the slot actually trains. Illustrative values.

Figure 1.11 shows the two keyings in common use. An M-key card supports PCIe x4 and is what most NVMe M.2 drives use. A B+M-key card fits both B-key and M-key sockets and typically means SATA or PCIe x2. Check keying before you specify a drive. A wrong-keyed card either won’t fit or won’t be recognized.

Thermal management is the most important operational consideration for M.2 in compact platforms. A 2230 drive in a laptop slot with no heatsink and limited airflow will throttle sooner than the same drive tested open on a bench. Evaluating M.2 performance apart from the target platform produces numbers that do not reflect what a user will experience. To heat a simulated drive and watch the different ways real drives slow down, try the Throttle Lab.

Power delivery is the second compatibility issue. The 3.3V limitThe M.2 socket supplies 3.3V and sets a current limit that caps how much power the drive may draw from the board. comes from the M.2 specification. Through at least 2019 it was commonly quoted as 2.5A, or 8.25W, and a Flash Memory Summit talk on Gen4 thermals (Grace Chen of Phison) names 8.25W as the M.2 limit. The saved Plextor M9PG Plus and M9PGN Plus data sheets list 3.3V DC at 2.5A maximum. For scale, Micron’s 7450 data sheet lists its M.2 versions at a maximum average current of 2.4A (RMS) on the 3.3V rail, about 8W. That table also gives a typical peak inrush of 2.5A, a short surge as the drive powers up, which is a different quantity from the steady draw. A laptop can budget less than a drive like this draws at full speed, through NVMe power states and platform power policy, and the controller would then clock down. That is an inference and not a measurement here. A drive that posts full performance on a desktop testbench could throttle in the same laptop slot because the platform enforces a power budget, even with no heat problem. Without a power-rail measurement, the symptom looks identical to thermal throttle.

Gold fingers are the only electrical path off the module. An M-key card gets 3.3V power, up to four PCIe lanes, a reference clock and a handful of sideband signalsSideband pins carry control signals beside the data lanes, such as PERST# for reset, CLKREQ# for clock requests and PLN# for power loss notice. through them. A drive datasheet states the supply tolerance. One industrial M.2 datasheet specifies 3.3V ±5%, or 3.135 to 3.465V. Every watt of the power budget ends up as heat on a card 22mm wide, which is why fast drives lean on heatsinks and thermal throttling. Sideband signals, listed below, come from the same datasheet.

Signal Direction What it does
REFCLK Host to drive 100MHz PCIe reference clock
PERST# Host to drive PCIe reset. Link training starts after the host releases it
CLKREQ# Drive to host Requests the reference clock. Also used by the L1 power-management substates
PEWAKE# Drive to host Open-drain wake request, with the pull-up on the platform side
SUSCLK Host to drive 32.768kHz low-power clock from the platform chipset
LED1# / DAS Drive to host Open-drain activity signal that drives an LED on the system side
SMBus (optional) Both Out-of-band management on platforms that wire it

Two pins, MFG_DATA and MFG_CLOCK (pins 56 and 58), are reserved for SSD manufacturing and left unconnected in a host socket. A factory uses them to program and test a drive before it ever sees a host.

The rows also show what the drive doesn’t need. Because the host supplies SUSCLK, the drive needs no 32.768kHz crystal of its own. LED1# is only an output the drive pulls low, so the activity LED and its resistor sit on the host side. SMBus pins are 0/1.8V open-drain signals with the pull-up on the platform, and one NVMe M.2 2280 manual marks the device sleep (DEVSLP) pin not connected. M.2’s specification also defines PLN# (power loss notification) and PWRDIS (power disable), and revision 4.0 carries both. PLN# lets the host warn a drive that power is about to go, and PWRDIS lets the host cut power to it. PLN# first arrived through a 2018 engineering change notice to revision 1.1. SSSTC’s PLN page shows PLN# in use on its CA8 M.2 and PJ1 E1.S drives. Part 5 follows the 3.3V input past the connector to the rails inside the drive.

A drive can also train at fewer lanes or a lower generation than the slot offers, with no error. Checking is covered in the field section below.

U.2, U.3 and EDSFF: the server bays

Server bays trade the M.2 card’s small size for hot swap, power and cooling. U.2 and U.3U.2 and U.3 are 2.5-inch drive form factors with a PCIe connector. U.3 lets one backplane slot accept SAS, SATA or NVMe drives. keep the 2.5-inch drive shape. EDSFF drops it and is built for the rack. Figure 1.12 shows what each bay is built to take.

U.2, U.3 and EDSFF: the server bays

U.3 mixes drive protocols, and EDSFF bays can also hold memory

What each bay is built to accept

A grid with four bay types as rows and three device types as columns: NVMe SSD, SATA or SAS drive, and CXL memory module. A U.2 bay takes an NVMe SSD. A U.3 bay takes an NVMe SSD, a SATA drive or a SAS drive, because tri-mode support lives in the host controller and backplane. An E1.S bay takes an NVMe SSD or a CXL memory module. An E3.S bay takes the same two. The CXL memory module column is in copper because that is the case where the bay holds DRAM, not NAND.NVMe SSDSATA or SAS driveCXL memory moduleU.2U.3E1.SE3.SU.3 tri-mode lives in the host controller and backplane.EDSFF bays take NVMe SSDs and CXL memory modules alike.built to take ita memory module, not NANDnot accepted
Figure 1.12 · A bay does not advertise its protocol, so read what is installed before you read its logs. Source: form factor descriptions in the text.

Only U.3 is built to mix drive protocols. EDSFF bays take NVMe SSDs and also CXL memory modules, which is why the bay never tells you what is installed. Measure the negotiated PCIe generation and read the module label before you read any logs.

U.2 uses the SFF-8639 connector and is the enterprise form factor for 2.5-inch SSDs. One connector carries PCIe x4 and power, and it supports hot swap and the high insertion counts data-center maintenance demands. U.2 drives look like 2.5-inch SATA or SAS drives and fit the same bays, which made the NVMe transition easier in many enterprise deployments. U.2 is also the easy place to get fooled on generation. A U.2 bay looks the same, but the link may not. Do not infer the PCIe generation from the product family name. SFF-TA-1001 is the universal x4 link definition on that same connector.

U.3 extends U.2 so one bay can accept a SATA, SAS or NVMe drive. This lets data center operators standardize on one physical form factor while supporting mixed protocol environments. Tri-mode lives in the host controller and backplane. Each drive still speaks one protocol, and the host detects the drive type at power-up and talks to it accordingly.

EDSFF was designed for the rack. It did not evolve from a laptop card. E1.S and E1.L sit in 1U with front-access hot swap, specified as SFF-TA-1006 and SFF-TA-1007. E3.S and E3.L are SFF-TA-1008. They are the larger family, meant to replace much of what U.2 used to do, with power envelopes that can run well past M.2. SNIA’s OCP EDSFF briefing is a useful public map of thickness versus recommended watts.

The Gen6 drives named in “What is on offer at these limits” below come in these bays rather than M.2: Micron’s 9650 in E1.S and E3.S, and Samsung’s PM1763. EDSFF offers cable-free hot swap and a thermal envelope that can hold a drive dissipating far more than M.2 allows, and E1.S is available for liquid cooling and comes in three heights (9.5, 15 and 25mm).

EDSFF drives such as Micron’s 7450 in E1.S take 12V instead of the M.2 card’s 3.3V, with a 3.3V auxiliary rail for management. A hot-plug bay also has to limit the inrush current that charges the drive’s input capacitance the moment it is inserted. OCP’s Catalina EDSFF reference design caps it at 2A. Enterprise drives handle this with inrush control or an eFuse on the input, and Intel listed inrush current management as a feature of its SATA DC S3700 enterprise drive.

In the field: proving a drive

Selecting standards, interfaces and form factors is the engineering on paper. Validation is where those decisions meet physical reality, and the field is where a missed limit shows up. Five checks cover most limit problems before anyone blames the firmware:

Device Manager on Windows, or the LnkSta line in lspci -vv on Linux, shows the PCIe generation and width the drive trained at, and LnkCap shows the most it could train at. If LnkSta is lower, check the physical path first. A drive seated at an angle, dirty contacts or a riser with poor signal integrity can enumerate and still train at x2 or a lower generation. Cost-reduced boards sometimes route an M-key slot for only two lanes, or train the link below the drive’s generation. A drive takes whatever the slot offers with no error, and the user sees reduced bandwidth and no warning.

SATA speed

smartctl -i reports both the speed the drive supports and the speed currently negotiated.

NVMe revision

Read Identify Controller instead of the product page. Drives that look identical can report different NVMe versions and optional features.

Power versus heat

A drive that is fast on a bench and slow in a laptop slot may be hitting the platform power budget, so measure the 3.3V rail before concluding it is thermal.

What is in the bay

On an EDSFF backplane, read the module label before the logs, because an E3.S can be a CXL memory module that never appears as a namespace.

Those checks say what the drive could do. A test says what it does. Burst speeds are marketing and sustained speeds are reality, and that matters even more once a datasheet quotes Gen6 speeds. A factory-fresh drive has empty NAND, no GC pressure and a full SLC cacheAn SLC cache writes incoming data first in a fast one-bit-per-cell mode, then folds it into denser TLC or QLC cells when the drive has time.. That region is programmed one bit per cell for speed. Part 6 covers it. Testing that state tells you about the first burst and nothing about the second hour.

SNIA PTS fixes that with two preconditioning steps. Workload-independent preconditioning (WIPC) is two sequential full-drive fills. Workload-dependent preconditioning (WDPC) runs the target pattern until performance stabilizes. PTS calls a drive steady when, over a measurement window of five rounds, the range stays under 20% of the average and the best-fit slope stays within 10%.

In the field: proving a drive

Only the settled phase of a write test is a result

Write throughput during preconditioning, relative to the burst

A line chart of write throughput over time for a fresh drive, with throughput on the vertical axis as a percentage of the burst level and time on the horizontal axis in phases, not to scale. Throughput starts flat at the burst level, then falls through a transition, then settles on a lower steady level. Above the plot, three brackets mark the test phases. The first, WIPC, is workload-independent preconditioning with two sequential full-drive fills. The second, WDPC, is workload-dependent preconditioning that runs the target pattern until performance stabilizes. The last, in copper, is the window where results are recorded, and it sits entirely in steady state. SNIA PTS 2.0.2 calls the drive steady when, over a window of five rounds, the range is under 20% of the average and the best-fit slope is within 10%. The curve shape is a teaching shape, not measured data.WIPCWDPCrecordWrite throughput, % of burst0255075100bursttransitionsteady statestartlaterTime, in test phases (not to scale)PTS steady state, over a window of five rounds:range under 20% of the average, slope within 10%write throughput (shape)recorded window
Figure 1.13 · The first minutes measure empty NAND and a full SLC cache, while the recorded window sits after the drive reaches steady state. Source: SNIA PTS 2.0.2 for the steady-state rule; the curve is a teaching shape, not a measurement.

Figure 1.13 shows why the order matters. It bursts first, drops through a transition and settles, and PTS records results only from the settled window. A burst figure from the fresh state is a starting point rather than a substitute, and Part 9 covers why sustained numbers differ.

PCI-SIG compliance, JEDEC SSD endurance and SNIA PTS are three different questions, and passing one doesn’t answer the other two. A compliance test confirms that a device meets the specification under the defined conditions. It says much less about real deployment. Real deployment adds temperature variation, connector wear, simultaneous I/O from multiple workloads and years of NAND wear.

Validation also has to cover the boundary conditions that define reliability over a product’s service life. These are power loss at critical I/O moments, sustained load at thermal limits, compatibility with the actual host platforms and operating systems, and behavior at the margins of the specification. ioTraX and similar live telemetry tools make I/O visible during these tests in ways static benchmarks can’t. Every performance and reliability claim in a datasheet needs a link to the test conditions, firmware revision and component lot that produced it. Without that chain a field failure cannot be traced back to the conditions that produced it.

JEDEC qualification proves that a component meets its specification in isolation, covering timing behavior and endurance under accelerated stress. Deployment validation proves that the assembled system behaves under real workloads, real thermals and real host stacks. A drive can pass every JEDEC qualification test and still fail on a specific platform, through marginal power delivery, a host driver that mishandles a power-state transition, or a thermal environment beyond what the form factor was designed for. SSD Benchmarking 101 is the measurement half of that argument.

What is on offer at these limits

As of October 6, 2026, Tom’s Hardware’s best-SSD guide recommends M.2 NVMe drives on PCIe 4.0 and 5.0 and lists no PCIe 6.0 consumer drive. The PCIe 6.0 SSDs in the sources below are data-center products in E1.S, E3.S or U.2 for SI servers. TrendForce’s March 2026 enterprise SSD readout has PCIe 5.0 as the mainstream enterprise interface this year, with the next contest being who can deliver stable Gen6 for SI. Micron exited the Crucial consumer channel after February 2026 to feed data-center customers. If you are buying or qualifying storage, start with the platform you actually have instead of the generation on a keynote slide.

Micron’s 9650 is a PCIe 6.0 data-center SSD in E1.S and E3.S, with up to 28GB/s sequential read claimed. Samsung’s PM1763 entered mass production in July 2026, claiming up to 28,400MB/s sequential read for its 16TB drive, and Storage Review’s write-up notes liquid-cooled, direct-to-chip server designs. Vendors made both claims, and neither is a preconditioned lab run. Samsung’s own PM1763 page still lists the U.2 SKU on Gen5, so check each SKU’s PCIe generation, because the family name alone doesn’t tell you.

NVMe’s public library is at 2.4, and EE Times’ briefing reports post-quantum crypto hooks, persistent lockdown, rate limiting and voltage-monitoring telemetry. These capabilities are optional, so a drive advertised as NVMe 2.4 doesn’t have to implement any of them, and its Identify data shows which it does.

What is on offer at these limits

Capacity ceilings run from 7.68TB (7450 PRO, E1.S) to 512TB (E2)

As of October 2026, log scale

A horizontal bar chart of drive capacity on a logarithmic axis from 1 to 1,000 terabytes. Seven bars rise in order. The Micron 7450 PRO in E1.S has a top step of 7.68 terabytes. The best 8 terabyte pick in a buying guide is an M.2 2280 drive. The Exascend PE4, an M.2 2280 drive, has been listed at 16 terabytes. Solidigm drives in the 60 terabyte class exist. The Sandisk DC SN670, a QLC drive, is 122.88 terabytes. QLC drives at 245 to 256 terabytes follow. The top bar, in copper, is the DapuStor R6060, a 512 terabyte EDSFF E2 drive shown at FMS 2026. Form factors are named where the source gives one. The axis is logarithmic, so equal steps in bar length are equal multiples of capacity.Drive or class1101001,000Drive capacity, TB, log scaleMicron 7450 PRO, E1.S7.68TBBest 8TB pick, M.2 22808TBExascend PE4, M.2 228016TBSolidigm, 60TB class60TB classSandisk DC SN670, QLC122.88TBQLC, 245 to 256TB256TBDapuStor R6060, E2512TBdrive or class from a vendor or press sourceshown at FMS 2026
Figure 1.14 · Each bar is a drive or class named in the text, with its form factor where the source gives one. Source: Micron 7450 specification, Tom's Hardware, TechPowerUp, Solidigm interview, Sandisk investor day deck and vendor and press pages named in the text, as of October 2026.

Figure 1.14 shows the capacity steps of the drives and classes named here, with the form factor on each bar where the source gives one. The same Tom’s Hardware guide names the SanDisk Optimus GX Pro 8100 / WD Black SN8100 8TB as its best high-capacity (8TB) pick and the Samsung 9100 Pro 8TB as the alternative, both M.2 2280. Larger cards have been listed, such as a 16TB M.2 2280, the Exascend PE4, a PCIe 4.0 TLC drive.

Enterprise capacities come in their own steps, and for the 7450 the step tells you the endurance class. Micron’s 7450 is a clean example. Read-intensive 7450 PRO drives come in E1.S at 960GB, 1.92TB, 3.84TB and 7.68TB, and StorageReview’s launch coverage lists a 15.36TB U.3 step above that. Mixed-use 7450 MAX drives hold back more spare area and come in E1.S at 800GB, 1.6TB, 3.2TB and 6.4TB, and the same launch tables list U.3 versions up to 12.8TB. That missing space is overprovisioning, and Part 9 covers what it buys.

At the top end, Solidigm says it was first to introduce 30TB and then 60TB drives. Sandisk’s 2025 investor day deck shows the DC SN670, a 122.88TB drive built on quad-level cell (QLC) flash, which stores four bits per cell. Part 2 covers it. Drives in the 245 to 256TB class include the Micron 6600 ION, the Kioxia LC9 (245.76TB) and SK hynix PS1101 and the Sandisk UltraQLC (256TB). At FMS 2026 DapuStor showed the R6060, a 512TB drive in EDSFF E2.

ServeTheHome notes that E3.L and E1.L top out at 256TB (245.76TB), and DapuStor doubled that in the larger EDSFF E2 form factor. For scale, Sandisk builds its 256TB drive from 2Tb QLC dies, so one drive carries roughly a thousand of them. Part 3 explains why more dies also means more parallelism.

The limits every later part inherits

Because standards bodiesStandards bodies such as NVM Express, PCI-SIG, SATA-IO, JEDEC and ONFI each write the rules for one layer, from the host link down to the NAND bus. write these rules by layer, every later part uses this part’s vocabulary of protocol, link, package and body. The map below shows the two parts that build on it directly. Part 5 follows the 3.3V input and the NAND interface past the connector into the controller, and Part 9 takes the burst-versus-sustained gap into performance.

A quoted sequential figure from an empty E3.S in a liquid-cooled aisle doesn’t apply to a 2280 in a laptop slot, and it doesn’t make NAND tR faster.

The limits every later part inherits

Standards & Interfaces feeds 2 later parts.

Arrows run to the parts that build on this one.

Ten boxes are stacked from top to bottom in series order: Part 1, Standards & Interfaces; Part 2, The Physics of Flash; Part 3, From Cell to Die; Part 4, 3D NAND Stacking; Part 5, The Controller; Part 6, The Flash Translation Layer; Part 7, Garbage Collection & Wear; Part 8, Error Correction & Integrity; Part 9, Performance & Endurance; Part 10, The Future of Flash. Part 1 is highlighted. It feeds Part 5, The Controller; Part 9, Performance & Endurance. Curved arrows on the right of the stack run from Part 1 to each of those parts.01Standards & Interfaces02The Physics of Flash03From Cell to Die043D NAND Stacking05The Controller06The Flash Translation Layer07Garbage Collection & Wear08Error Correction & Integrity09Performance & Endurance10The Future of FlashThis partBuilds on itOther partFeeds
Figure 1.15 · Part 1 (Standards & Interfaces) feeds Part 5, Part 9. Source: Eyes on Flash series map.

Part 2 builds on this envelope from the other end. It covers how electrons are stored, how tightly they must sit in narrowing voltage windows, and why each program/erase cycle costs the cell measurable life. That physics is easier to read once you know the electrical and protocol limits the silicon has to live inside.

KEEP GOING / NEXT CHAPTERContinue to Part 2

Sources

Primary is the original paper, standard or datasheet. Secondary is a review, a vendor summary or a news report. Measured is my own test data.

Show all 72 sources, 56 primary