Technopedia

The technologist’s encyclopedia

SATA

SATA (Serial ATA) is the point-to-point storage link between a host and a drive: one differential pair in each direction, 8b/10b coded, at 1.5, 3, or 6 Gb/s. It replaced the wide parallel PATA (IDE) ribbon in 2003 and remains the standard interface for hard drives and budget SSDs, though performance SSDs have moved to NVMe over PCIe. This page covers the SATA-specific layers — connectors, framing, command queuing, host software interface. The general serialisation physics it shares with every cabled link (why serial beat parallel, skin effect, attenuation versus length) is treated in Cabled external interconnects.

Authoritative sources

Brief history

  1. 2003 — SATA 1.0. One thin differential pair each way replaces the 40/80-wire PATA ribbon and its master/slave cable sharing: 1.5 Gb/s line rate (150 MB/s payload), point-to-point, hot-pluggable.
  2. 2004–2005 — SATA 2.0. Line rate doubles to 3 Gb/s (300 MB/s); Native Command Queuing (NCQ) and hot-plug reporting become mandatory.
  3. 2009 — SATA 3.0. 6 Gb/s (600 MB/s), the last speed step; the mSATA connector appears for small-form-factor SSDs.
  4. 2013–present — SATA 3.2 and the NVMe era. SATA 3.2 adds SATA Express and the M.2 connector, but NVMe over PCIe takes the performance segment; SATA remains the hard-drive and budget-SSD standard.

Speed generations

Definition. Three generations, all with the same connectors and the same protocol, differing only in line rate. Every generation pays a fixed 20% coding tax: 8b/10b encoding turns each 8 payload bits into 10 line bits.

GenerationYearLine rateLine codingPayload rateMax cable
SATA 1.020031.5 Gb/s8b/10b150 MB/s1 m
SATA 2.020043 Gb/s8b/10b300 MB/s1 m
SATA 3.020096 Gb/s8b/10b600 MB/s1 m
Line rate vs payload rate: the 8b/10b tax is 20% at every generation SATA 1.0 (2003) SATA 2.0 (2004) SATA 3.0 (2009) 150 MB/s 300 MB/s 600 MB/s 187.5 MB/s line 375 MB/s line 750 MB/s line ■ line rate (coded) ■ payload (after 8/10 decode) grey = bits on the wire · blue = payload bits · the missing 20% is the 8b/10b coding overhead
Details

The payload rate is not a marketing rounding of the line rate — it follows from the coding. Work it through for SATA 3.0:

  1. Line rate. The PHY clocks 6 × 10⁹ symbols per second, one bit per symbol (NRZ on a differential pair), so the wire carries 6 Gb/s.
  2. Decode. 8b/10b maps every 8-bit payload byte to a 10-bit symbol chosen to keep the DC balance and enough transitions for clock recovery. Only 8 of every 10 wire bits are data: the payload rate is 6 × 10⁹ × 8/10 = 4.8 × 10⁹ bit/s.
  3. Convert to bytes. 4.8 × 10⁹ ÷ 8 = 6 × 10⁸ bytes/s = 600 MB/s.

The same three steps give 150 MB/s for 1.5 Gb/s and 300 MB/s for 3 Gb/s — the payload is always exactly 80% of the line rate. Why pay 20%? Because 8b/10b guarantees a transition density and running-disparity balance that let the receiver recover the clock from the data itself, with no separate clock wire — the same trade-off every serial link of the era made (PCIe Gen 1/2, Fibre Channel, Gigabit Ethernet all use 8b/10b; see Cabled external interconnects for why serial won over parallel in the first place).

On cable length. Internal SATA is limited to 1 m; the external variant eSATA allows up to 2 m (the Gen1m/Gen2m specifications) but mandates shielded cable and connectors to get there. The 1 m internal limit is not arbitrary: at 6 Gb/s, attenuation and crosstalk eat the noise budget quickly. The SATA specification does not mandate the adaptive equalisation and link-training machinery that 10GBASE-T or PCIe Gen 3+ use to buy back margin on long channels; Gen 3 receivers in practice do include equalisation DSP to close marginal links, but the specification does not tighten the cable plant to extend the reach — hence 1 m, and 2 m only with eSATA’s shielding.

Example problem

An early SATA hard drive (2004) streams 55 MB/s. Which generation does it saturate, and how much headroom does SATA 3.0 leave for it?

Solution

SATA 1.0’s payload is 150 MB/s, so a 55 MB/s drive uses 55/150 ≈ 37% of the link — SATA 1.0 is not the bottleneck for a spinning platter of that era (a 7200 rpm drive’s media rate, not the interface, sets the pace). On SATA 3.0 the same drive uses 55/600 ≈ 9%. The lesson: for mechanical drives the interface has been over-provisioned since 2003, which is why SATA survived as the hard-drive standard even after SSDs — it is only when flash arrived that the 600 MB/s ceiling started to bind (see the simulation at the end of this page).

Connectors: data and power are separate

Definition. The SATA data connector is 7 pins: two differential pairs (transmit, receive) and three grounds — nothing else. Power is a separate 15-pin connector carrying 3.3 V, 5 V, and 12 V rails. Internal SATA cable runs are limited to 1 m; the external variant eSATA is the same protocol with mandatory shielding, rated up to 2 m.

The two SATA connectors: 7 signal pins, 15 power pins Data connector (7 pins) 123 4567 GNDA+A− GNDB−B+GND blue: host transmit pair (A+, A−) green: host receive pair (B+, B−) grey: grounds, interleaved to isolate the two pairs no power, no sideband, no clock pin — the clock is recovered from the 8b/10b data itself

Power connector (15 pins) 1–34–67–910–1213–15 +3.3 VGND+5 VGND+12 V three rails × three pins each: 1.5 A per pin, so 4.5 A per rail (54 W at 12 V) for spin-up motors 2.5-inch drives use only 5 V; 3.5-inch drives need 12 V for the spindle motor pin 3 (3.3 V) doubles as PWDIS on some drives: wiring it disables power-on-in-standby

Details

Splitting data from power is a deliberate simplification: the data connector stays small (a 2.5-inch drive is only 7 mm thick), and devices that need only one function can omit the other — an eSATA bracket carries data with no power, and a powered enclosure carries power with no host data path. Compare USB-C, which multiplexes power and data on one 24-pin plug and therefore needs a negotiation protocol (USB-PD) just to agree on volts and amps; SATA’s split is possible because both ends are fixed-function and the drive never negotiates its power rail.

Two details of the pinout repay attention:

Example problem

A 3.5-inch drive spins up at 2 A on the 12 V rail and 0.5 A on the 5 V rail. Is the 15-pin connector within rating, and what total spin-up power does it deliver?

Solution

12 V × 2 A = 24 W and 5 V × 0.5 A = 2.5 W, so 26.5 W total. The 12 V rail has three pins at 1.5 A each = 4.5 A capacity, so 2 A uses 44% of it; the 5 V rail likewise. The connector is comfortably within rating — the tripled pins exist precisely so that the worst-case spin-up transient (which can be several amps for a second or two) never approaches a single pin’s limit. Note the 3.3 V rail is unused by most 3.5-inch drives; it exists for 2.5-inch drives and for the PWDIS feature.

The protocol: FIS exchange

Definition. SATA communicates by exchanging Frame Information Structures (FISs): the host sends a command FIS (read/write/identify), the drive returns data FISs and a status FIS. Every frame carries a CRC; the link layer wraps frames in primitive symbols (SYNC, HOLD, EOF) that double as flow control. NCQ (Native Command Queuing) lets the drive reorder up to 32 outstanding commands.

One read command, frame by frame (click Play) Host AHCI controller Drive SATA target host → drive (outgoing pair) drive → host (incoming pair) FIS Play
Details

Where the FIS comes from. SATA was designed for a frictionless transition from PATA, so its command FIS is a literal photograph of the old IDE task-file registers: the 8-bit command code, sector number, cylinder, drive/head, and count bytes that software used to write to I/O ports are carried field-for-field in the FIS payload. The same driver commands, the same register semantics — only the transport changed. This backward compatibility made adoption trivial, but it also caps the protocol: one command queue of depth 32, one device per cable, and a register-shaped command set that maps poorly to flash memory’s parallelism (see NCQ and AHCI below).

Framing and flow control. The link layer wraps every FIS between primitive symbols — a 32-bit control word repeated as needed: SOF opens the frame, CRC protects the payload, EOF closes it. Between frames, both sides stream SYNC to keep the receiver’s clock recovery locked. When a receiver’s buffers fill, it asserts HOLD; the transmitter pauses mid-frame and repeats HOLDA until HOLD drops. This is flow control without any credit accounting: the pause is signalled in-band, at symbol granularity, and costs nothing when unused.

The overhead budget. The 600 MB/s payload computed above is not all data. Each frame pays SOF/EOF primitives, a 4-byte CRC, and the FIS type header; between frames, SYNC and flow-control primitives flow continuously. A well-driven sequential transfer keeps this under ~10%, which is why a good SATA 3.0 SSD reports ~550 MB/s rather than 600 — the arithmetic is exactly the example problem below, and the simulation at the end of this page lets you move the numbers around.

Example problem

A drive is streaming a large sequential read. Mid-frame, the host’s buffer fills and the host asserts HOLD for 2 ms out of every 10 ms. What is the ceiling this puts on throughput, ignoring all other overheads?

Solution

HOLD freezes the frame in place, so the link delivers payload for only 8 of every 10 ms: the effective payload rate is 600 MB/s × 0.8 = 480 MB/s. This is the in-band flow-control tax — it is why the protocol-overhead slider in the simulation below exists, and why a drive whose internal buffer is small (or whose cache-flush pattern stalls the host) can fall well below its headline number even though the copper could carry more.

NCQ and AHCI

Definition. NCQ (Native Command Queuing) lets the host hand the drive up to 32 queued commands that the drive may execute in any order — so a hard drive can service them in seek order instead of arrival order. AHCI (Advanced Host Controller Interface) is the standard host-side controller interface above the FIS exchange: software writes command entries to memory-resident command lists, and the AHCI controller builds and transmits the FISes, reporting completion through interrupts.

Details

The path of one read under AHCI (see the AHCI 1.3.1 specification for the register and memory layouts):

  1. The OS fills a command table in RAM: a command header pointing to a Register FIS-to-device (the LBA and count, i.e. the task-file image) and a PRDT listing the DMA buffers for the data.
  2. The OS sets the command’s issue bit in the port’s command register.
  3. The AHCI controller DMA-reads the table, transmits the Command FIS, receives the Data FIS, and DMA-writes the data into the buffers — the CPU is not involved in the transfer.
  4. The drive returns the Status FIS; the controller raises an interrupt and updates the done bits.

Why queue depth matters. With one outstanding command, a hard drive that takes 10 ms per random 4 KB read delivers 100 IOPS. With 32 outstanding, the drive’s scheduler can order them by head position, so the average seek per command drops and the commands overlap: even with no scheduling gain at all, pipelining alone lifts the ceiling to 32/0.010 = 3200 IOPS. NCQ is why the depth-32 queue — not bandwidth — is the number that matters for desktop hard-drive latency.

Example problem

A hard drive takes 10 ms per random 4 KB read, of which 8 ms is seek/rotational latency and 2 ms is transfer. With NCQ depth 32 and perfect seek ordering, the average non-overlapping delay per command falls to 5 ms. What is the IOPS and the delivered bandwidth?

Solution

With the queue keeping the drive busy, the effective service time per command is the 5 ms average delay plus the 2 ms transfer = 7 ms, so IOPS ≈ 1000/7 ≈ 143. Bandwidth = 143 × 4 KB ≈ 572 KB/s. Note how far both numbers sit from the link’s 600 MB/s: random access on spinning rust is limited by mechanics, not by SATA — the interface could be 100× faster and these numbers would not move. (This is also why NCQ does nothing for an SSD’s random reads: flash has no seek to reorder around.)

Connector variants and hot-plug

Definition. The same SATA protocol appears in several physical packages: the standard 7+15-pin cable pair, the mSATA card (2009, mini-PCIe footprint), the M.2 slot wired in SATA mode (B+M key, routes two of the slot’s pins to the SATA differential pairs), the short-lived SATA Express slot, and the external eSATA (shielded, up to 2 m). Internal variants support hot-plug if the host controller and drive declare it.

VariantYearFormRateHot-plugFate
SATA cable (7+15 pin)2003cable + drive connectorsup to 6 Gb/syes (with AHCI support)universal
eSATA2004shielded external connectorup to 6 Gb/s, 2 myes (by spec)niche; displaced by USB
mSATA2009mini-PCIe-sized cardup to 6 Gb/snodisplaced by M.2
SATA Express (SATAe)2013motherboard slotSATA or PCIe ×2nodead end; M.2 won
M.2 (SATA mode)2013M.2 card, B+M keyup to 6 Gb/snostandard for SATA SSDs
Details

Hot-plug. SATA was designed for it from the start, unlike PATA: the data connector’s ground pins are longer than the signal pins, so grounding happens before any signal line mates (a “staggered” pinout), and AHCI controllers support mechanical presence detection and cold-presence-detect interrupts so the OS can enumerate a drive inserted into a live port. eSATA makes this mandatory; internal hot-plug is optional but common on server backplanes, where a failed drive is swapped without powering down the chassis.

Why the variants died or lived. mSATA and M.2 SATA carry the identical protocol over different physical cards — M.2 won because it is thinner, uses the same slot as NVMe drives, and needs no cable. SATA Express is the instructive failure: it tried to make one slot serve both SATA and PCIe, but a slot that runs at the slower standard’s speed whenever a SATA drive is inserted satisfies nobody, and M.2 (which simply wires the same pins differently per module type) replaced it within a few years.

Example problem

A laptop has one M.2 slot, key B+M, wired for both SATA and PCIe. You insert an M.2 SATA drive. Why can the same slot also take an NVMe drive, and what decides which protocol runs?

Solution

The M.2 slot carries PCI Express lanes plus sideband signals on its edge connector; the SATA variant of the standard routes two of those pins to a SATA PHY instead of leaving them as PCIe lanes. Which protocol runs is decided by the module’s keying and the chipset’s configuration: a B+M-keyed SATA drive presents its pairs on the SATA pins, and the chipset’s SATA controller claims the port. An M-keyed NVMe drive lands on the PCIe lanes instead (see Board-level interconnects for what a PCIe lane is physically). One slot, two protocols, distinguished by key notches — the mechanical key is the protocol selector.

SATA vs NVMe

Definition. NVMe is a command set and host interface designed for flash, running over PCIe lanes rather than a SATA PHY: up to 64K queues of 64K commands each (versus one queue of 32), no ATA register legacy, and 128b/130b coding at PCIe Gen 3 (versus 8b/10b). A PCIe Gen 3 ×4 link moves ~3.94 GB/s — about 6.5× SATA 3.0’s payload.

Details

The comparison is not “newer is faster” but a lesson in what legacy costs. SATA’s command model — one queue, depth 32, register-shaped FISes, one device per cable — was engineered for 2003’s hard drives, and every one of those choices is a ceiling for flash, which has no seek time to schedule around and many parallel NAND dies to keep busy. NVMe (see the NVMe specification) starts from PCIe’s point-to-point lanes — the physical layer is described in Board-level interconnects — and defines a scalable queue model that matches flash’s parallelism. The bandwidth ratio (3.94 GB/s vs 0.6 GB/s) is the smaller half of the story; the queue-depth and latency differences are what make NVMe drives feel faster at small random I/O.

SATA survives where its ceiling does not bind: hard drives (mechanically limited far below 600 MB/s), bulk storage, and budget SSDs — plus universal compatibility, since every OS and BIOS for 20 years speaks it.

Example problem

A SATA 3.0 SSD reads at 550 MB/s. The same flash controller is moved to an NVMe PCIe Gen 3 ×4 board (~3.94 GB/s effective). How much faster can the NVMe version be, and what limits it?

Solution

Up to 3.94/0.55 ≈ 7× on paper — but only if the flash array itself can source that rate. A 4-channel SATA-class controller cannot; the NVMe version needs more NAND channels to saturate the link. The lesson: a faster interface only helps when the device, not the link, was the bottleneck — here the SATA link was the bottleneck (550/600 ≈ 92% utilisation), so the flash behind it had headroom to spare.

The simulation below ties the numbers together: pick a generation, set the drive’s own sequential speed and the protocol overhead, and see whether the link or the device is the bottleneck — with the 550 MB/s-on-600 MB/s case as the default.

Notice the two regimes: when the drive slider sits below the usable link rate, the system is device-bound and the generation selector changes nothing; push the drive past it and the link clamps the throughput — which is precisely the transition SATA SSDs crossed in the early 2010s, and the reason NVMe exists.

Quiz

Example problem

A technician connects a 2.5-inch SATA drive with only the 7-pin data cable plugged in. The BIOS never enumerates the drive. Why, and what does this reveal about the connector design?

Solution

The 7-pin data connector carries data only — two differential pairs and three grounds. With the 15-pin power connector unconnected, the drive’s PHY has no power at all, so no link comes up and the controller sees nothing on the port. The split design is deliberate: it keeps the data plug small (a 2.5-inch drive is only 7 mm thick) and lets the power connector carry three rails (3.3/5/12 V) at amp-level currents that a 7-pin data plug was never sized for.