SATA是Serial ATA的缩写,即串行ATA,这是一种完全不同于并行ATA的新型硬盘接口类型。2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA1.0规范,在当年的IDF Fall大会上,希捷宣布了Serial ATA1.0标准,正式宣告了SATA规范的确立。
SATA是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而得名。SATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比最大的区别在于它能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
SATA接口包括SATA控制器和SATA物理层。SATA物理层通过SATA连接线与主机连接,SATA控制器通过AHB从接口和AHB主接口连接到总线。此外,总线上还连接了控制硬盘的微处理器、内存等器件。
SATA接口物理层采用7根电缆线与主机连接,其中3根为地线,一对差分数据输入线,一对差分数据输出线。物理层实现差分串行数据传输,提供100Ω的传输终端和接收终端电阻匹配,实现将并行输入的数据串行传输;从串行数据流中接收需要的数据,并将串行数据转换为并行数据传输;为链路层提供当前控制器状态;通过使用专用OOB协议实现SATA接口物理层的连接初始化,并用OOB信号队列执行预定义的速度;使用本地器件时钟向主机发送数据,使用接收时钟从主机读取数据。
下面以SATA1.0协议为例进行简单介绍,SATA1.0协议可以分为四个层次:物理层、链路层、传输层和应用层,如图3-1所示。
图3-1 SATA1.0协议
其中物理层负责传输上层协议的位流,有收发两个独立的通道,每个通道使用一对差分线。在输出端,并行数据通过编码、误码检测、并串转换后被放到高速串行总线传输;在接收端,接收串行数据并反馈到采样器和时钟恢复单元,恢复采样时钟,接收到的数据经过采样形成位流,同步成字以后被解串和解码、并行输出。
链路层的功能是接收或发送数据帧,根据传输层的控制信号进行原语通信传输,以及从物理层接收原语用来控制传输层的操作。链路层对所传输的内容不做处理,只是将原语加入数据帧或将接收到的数据帧的原语删除,通过原语来控制数据帧的传输。链路层通过弹性缓存消除主机和器件之间的频率以及相位的差异,当传输层要求进行帧传输时,链路层将提供以下服务:当主机和器件同时发出传输数据的请求时由仲裁决定;将传输层发送过来的数据加上原语,以双字节的方式从传输层取出数据;对传输层发送过来的数据进行CRC编码,以数据帧的方式传输;根据链路层的输入输出缓存FIFO和主机链路层的要求进行数据帧的传输;接收主机链路层的应答信号,将传输过程的结果通知传输层;将数据加扰来避免由电磁干扰产生的传输错误。
传输层不会改变传输的数据结构,只将要传输的数据打包成数据帧的结构,并将接收到的数据帧还原。传输层根据需要将数据组合成数据帧,通知链路层要进行数据传输。传输层对缓存进行监控,并根据监控的情况控制链路层进行数据传输,并接收来自于链路层的应答信息,向应用层通知上次传输是否正确。当传输层从链路层接收到数据帧后,传输层将进行解帧并将数据帧还原为需要存储的数据流。当链路层接收数据帧后,判断数据帧的类型,根据帧的类型将数据分配到具体位置,并向应用层报告数据接收是否成功。
SATA应用层和ATA协议中的应用层功能一样,当主机的BIOS程序向硬盘控制器发送主机命令时,SATA应用层对主机发送过来的SATA命令进行解析和执行,因此SATA应用层通过命令和控制寄存器来接收命令,完成命令或执行命令的过程中通过设置状态寄存器向主机通知当前的状态,为硬盘控制器的微处理器提供当前的执行状态,使得硬盘系统软件根据当前的情况来继续下一步操作,并通过设置相应的寄存器控制传输层进行数据的传输操作。同时应用层还包括对SATA器件内部DMA的控制,通过配置DMA控制器来实现数据的快速传输。
SATA规范不仅立足于未来,而且还保留了多种向后兼容方式,在使用上不存在兼容性问题。在硬件方面,SATA标准中允许使用转换器提供同并行设备的兼容性,转换器能把来自主板的并行ATA信号转换成SATA硬盘能够使用的串行信号,目前已经有多种此类转接卡/转接头上市,这在某种程度上保护了企业的原有投资,减小了升级成本。在软件方面,SATA和并行ATA保持了软件兼容性,这意味着厂商丝毫也不必为使用SATA而重写任何驱动程序和操作系统代码。另外,SATA接线较传统的并行ATA(Paralle ATA,PATA)接线要简单得多,而且容易收放,对机箱内的气流及散热有明显改善。而且SATA硬盘与始终被困在机箱之内的并行ATA不同,扩充性很强,即可以外置,外置式的机柜(JBOD)不但可提供更好的散热及插拔功能,而且可以多重连接来防止单点故障;由于SATA和光纤通道的设计如出一辙,所以传输速度可用不同的传输通道来做保证,这对服务器和网络存储具有重要意义。
SATA是相对于PATA硬盘总线而言的一种串行架构,采用点对点半双工传输方式,利用单个路径串行传输数据,并用另外一条路径给发送端返回接收确认信息。每条路径都是由两根导线构成的差分对,因此SATA总线的每个通道由4条信号线组成。控制信息的传输利用以分组格式预先定义且能与数据区别的位序列,或者利用段外信号传送,不需要单独的传输线。SATA1.0接口采用1.5GHz的内嵌时钟,约为并行时钟的30倍。SATA1.0的最大吞吐量为150MB/s。SATA2.0的传输速率为300MB/s,SATA3.0的传输速率为600MB/s。SATA的主要优点如下。
1)SATA采用点对点传输协议。对主机而言,所有连接的磁盘的地位对等,不存在PATA协议中的“主/从”问题。此外,点对点传输模式使得每个通道都能独享宽带,有效提高了设备连接的灵活性和硬盘的性能,也使RAID配置更加容易。
2)SATA有良好的兼容性。SATA与PATA两者的软件和驱动程序完全透明,SATA不必对现有的操作系统代码和各种驱动程序做任何修改就可以正常运作。
3)SATA的连接线更轻薄、更灵活,避免了系统内的布线拥塞,增加了空气流通,有利于系统散热。同时,SATA的连接器由于针脚少,大大降低了PCB制板的复杂度。
4)相对于PATA只对数据进行CRC校验,SATA增加了对命令的CRC校验。CRC检测所有单位和双位错误,能够检测出99.9%的可能错误。因此,SATA总线的可靠性得到了进一步的提高。
5)SATA在连接器的设计中采用地针加长、最小插入力设计和背板互连等技术,使得SATA支持热插拔,在操作系统中实现即插即用。
6)SATA采用了原生命令排队技术,在队列中最多可以有32条待处理命令,这项技术使硬盘可在内部优化工作负荷执行顺序,让硬盘更有效地指挥排队命令的执行。
虽然SATA在单任务的测试中不比SCSI差,但面对大数据吞吐量的服务器时还是有差距的。除了速度之外,面对多任务数据读取、硬盘磁头频繁地来回摆动,使得硬盘过热是SATA最大的问题。
在实际应用中,RAID硬盘阵列是由多个硬盘组成的,必须知道损坏的具体硬盘,热插拔更换才有意义。SATA硬盘虽然可以热插拔,但SATA组成的阵列在某块硬盘损坏的时候,不能像SCSI、FC和SAS那样具有SAF-TE机制用指示灯显示,以便知道具体坏的是哪一块。所以在实际应用中,SATA的热插拔功能有点形同虚设了。
SATA相对于SCSI和FC速度慢,主要原因是机械底盘不同,不适应服务器应用程序大量非线性读取的请求。所以SATA硬盘用来作为视频下载服务器还不错,用在网上交易平台时则力不从心。