一文了解SATA协议

科学文化人

    概述
    SATA是一种基于行业标准的串行硬件驱动器接口,以连续串行的方式传输数据,支持热插拔,主要用于SATA主机与大容量存储设备之间的数据传输。
    目前,SATA一共发展了三代,分别为SATA1、SATA2和SATA3,向后兼容,每一代SATA具有相应的传输功能定义,并且它们的传输速率也不尽相同。SATA1的传输速率只有150MB/s,SATA2扩展为300MB/s,SATA3将端口的传输速率提升至6Gbit/s。
    SATA3协议一共分为五层:应用层、命令层、传输层、链路层和物理层。由于命令层包含于应用层,因此在某些文献中,将应用层和命令层进行了合并,统称为应用层,这样SATA3协议一共分为四层。根据SATA接口协议,SATA主机端和设备端实现通信时,各层之间进行对等交互。
    
    本文对SATA协议做简单介绍。
    01
    物理层
    
    
    
    
    
    
    02
    链路层
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    03
    传输层
    
    
    
    
    
    
    
    
    
    04
    命令层/应用层
    
    
    
    
    
    
    
    
    
    总结
    应用层:负责所有ATA命令的解析和执行,向处理器报告硬盘的运行状态,发起数据读写请求,完成硬盘工作模式的设置和读取等。
    命令层:负责解析ATA指令,做出相应的回应,并指导传输层构建FIS。
    传输层:负责构建和解析FIS,完成组帧和解帧,调整命令层和链路层之间的数据格式,完成主机和设备的命令交互和数据传递。
    链路层:SATA链路层执行过程为:主机端发送数据,计算其32bit的CRCR校验和,并将该校验和与发送的有效数据进行加扰,放在有效数据帧的最后一帧,经过8B/10B编码后传输至物理层;设备端接收数据,对接收的有效数据进行8B/10B解码以及解扰操作,计算本组数据的CRC校验和,并与设备端接收的校验和比较。
    物理层:物理层位于协议的最底层,其功能是通过OOB(Out-of-Band)信号的检测以及原语交互,实现主机端控制器与设备端控制器的链路初始化和速度协商,并将主机和设备的链路状态向链路层反馈,建立数据通道,实现串并转换、并串转换等操作。目前,Xilinx的高速收发器可支持物理层设计与实现,并且包含了8B/10B编解码等功能。
    文章图片来源网络,更多关于SATA协议的详细说明,可参考:
    [1] Serial ATA International Organization. Serial ATA International Organization: Serial ATA Revision 3.0 specification.
    [2] Mindshare,Inc.SATA Storage Technology.