1. SATA接口概述与历史发展

大家好,我是老张,做存储接口协议十几年了。今天聊聊SATA——这个在PC、笔记本、NAS里随处可见的硬盘接口。你可能每天都在用,但它的设计思想和历史演变,很多人未必清楚。

1.1 为什么需要SATA?

90年代末,并行ATA(也就是IDE)遇到了瓶颈。我曾经在一家主板厂做过项目,当时为了把PATA线缆在机箱里走顺,恨不得把线折成U形——那根80芯的排线又宽又硬,还特别容易受干扰。

说白了,并行传输有三大硬伤:

  • 信号串扰:并行线太多,高频下互相干扰
  • 线缆笨重:80芯排线,弯折半径大,散热差
  • 速度上限:PATA/133到133MB/s之后再也上不去了

所以业界需要一种新的接口:串行、点对点、支持热插拔、线缆细软。SATA就是为这个目的诞生的。

核心转变:从并行到串行,不是简单改个线数,是整个传输架构的重写。

1.2 SATA发展简史

SATA的标准化组织是SATA-IO(Serial ATA International Organization)。我记得2001年第一版规范出来的时候,大家都觉得速度翻倍很厉害——从133MB/s直接跳到150MB/s。

下面这张表,是我自己整理的SATA版本演进,你记一下关键数字就行:

版本 发布年份 速率(Gbps) 实际吞吐(MB/s) 主要改进
SATA 1.0 2001 1.5 150 基本协议,NCQ可选
SATA 2.0 2004 3.0 300 NCQ强制,eSATA支持
SATA 3.0 2009 6.0 600 AHCI优化,SSD适配
SATA 3.1 2011 6.0 600 mSATA,零功耗ODD
SATA 3.2 2013 6.0 600 SATA Express,M.2接口

你可能会问:怎么3.0之后带宽再没翻倍?嗯,因为瓶颈已经从接口转到闪存控制器和NAND本身了。再说,NVMe的PCIe方案更适合高速SSD,SATA就守住了“够用就好”的定位。

1.3 SATA接口的核心特点

我个人习惯把SATA特点总结成四个词:串行、点对点、热插拔、低成本。

  • 串行传输:一对差分线发,一对差分线收。没有时钟线,靠时钟恢复。码率1.5/3/6 Gbps。
  • 点对点:每个端口只连一个设备,不用像SCSI那样做端接终结。布线简单多了。
  • 热插拔:7脚+15脚电源+地平面,最先接触的是地针,然后是电源,最后才是信号。我之前调试热插拔时,因为没处理好电源去耦,一插就复位——后来发现是电容位置不对。
  • 低成本:7根信号线(4根数据+3根地),线缆直径只有PATA的1/5。整个收发器用CMOS工艺就能做。

避坑提醒:eSATA(外置SATA)线缆长度可以到2米,但必须使用屏蔽线缆。我遇到过客户用普通内接线当外接线,结果USB3.0的干扰耦合进来,眼图没眼看。

1.4 SATA协议层次速览

光讲历史不够,咱们得知道SATA分几层。这张图我画了好多次,每次讲课都会拿出来:

SATA协议层次结构 应用层(Application Layer) 命令集:ATA命令、NCQ、FPDMA 传输层(Transport Layer) 帧结构:FIS(Frame Information Structure) 链路层(Link Layer) 原语(Primitive)、CRC、重传机制 物理层(PHY Layer) OOB信号、扩频时钟、8b/10b编码、差分驱动器 注意:本课程重点讲解物理层(PHY),其他层只做必要引用 OSI参考模型下三层在SATA中被严格隔离,PHY层和链路层之间通过原语接口交互

常见误解:有人以为SATA只有PHY和链路两层。其实应用层里包含了完整的ATA命令集——比如IDENTIFY DEVICE、READ DMA、SET FEATURES等。PHY层只负责比特流的收发,不理解命令是什么。

1.5 为什么PHY层值得单独讲?

很多人学SATA只关注读写性能、NCQ队列数,但实际项目里翻车最多的往往是PHY层。我曾经调一个平台,SATA链路反复协商失败,最后发现是参考时钟的扩频参数设错了。PHY层的OOB序列特性、信号眼图、电压摆幅、预加重……任何一个参数不对,上层跑得再完美也白搭。

  • OOB信号:设备插入时通过COMRESET/COMINIT/COMWAKE完成初始协商
  • 时钟恢复:SATA没有独立的时钟线,必须从数据流里恢复时钟
  • 信号完整性:6Gbps下的损耗、串扰、回损都是硬骨头
  • 电源序列:热插拔时电源和地的接触时序决定能否存活

所以说,PHY是SATA的根基。后面的章节,我会把每一块掰开讲——OOB、8b/10b编码、扩频时钟、接收均衡,一个都不少。

个人经验:如果你在做SSD主控或硬盘桥接芯片,我建议把PHY层的文档打印出来贴墙上。当年我在实验室花了三周才定位到一个COMINIT超时的问题,原因竟是有个电容的ESR偏大导致电源毛刺。PHY的事儿,往往小处见鬼。

好了,这章就到这儿。记住SATA不是“旧技术”——它在消费级和工业级存储里依然广泛存在,很多嵌入式系统还在用SATA SSD。理解它是理解整个存储接口体系的第一步。