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的CRC校验和,并将该校验和与发送的有效数据进行加扰,放在有效数据帧的最后一帧,经过8B/10B编码后传输至物理层;设备端接收数据,对接收的有效数据进行8B/10B解码以及解扰操作,计算本组数据的CRC校验和,并与设备端接收的校验和比较。
物理层:物理层位于协议的最底层,其功能是通过OOB(Out-of-Band)信号的检测以及原语交互,实现主机端控制器与设备端控制器的链路初始化和速度协商,并将主机和设备的链路状态向链路层反馈,建立数据通道,实现串并转换、并串转换等操作。目前,Xilinx的高速收发器可支持物理层设计与实现,并且包含了8B/10B编解码等功能。