《SATA系列 2》:SATA Specification 精解

摘要

 本文主要阐述了SATA(串行ATA)规范的核心内容,重点解析了SATA接口的逻辑结构及其各层功能和关键要点。通过对SATA规范的深入分析,本文帮助读者更好地理解SATA接口的工作原理、性能特点以及它在存储设备发展中的重要作用。同时,本文还将持续更新,为读者提供对SATA技术全面而深刻的认知。

文章目录

一. SATA 定义

SATA(Serial Advanced Technology Attachment): 是一种用于连接计算机和存储设备的接口标准。

  1. 高速传输:相比之前的并行 ATA 接口,SATA 提供了更高的数据传输速率(1.5 / 3 / 6 Gbps)。
  2. 串行传输:采用串行方式传输数据,减少了并行传输中的信号干扰和同步问题,提高了数据传输的准确性和稳定性。
    在这里插入图片描述
图1. SATA 接口实物图

二. SATA的逻辑结构

  如图2所示,按逻辑功能划分,SATA可以分为 Application Layer(应用层)Transport Layer(传输层)Link Layer(链路层)Phy Layer(物理层)

  1. Application Layer(应用层): 负责处理Command。
  2. Transport Layer(传输层): 根据Command的种类构造和分解FIS(Frame Information Structure)。
  3. Link Layer(链路层): 在FIS前后插入控制字符,并进行编码和解码(8b/10b),以及CRC(Cyclic Redundancy Check)校验。
  4. Phy Layer(物理层):通过OOB(Out-of-Band)信号的检测和Primitives的交互,实现Host与Device之间的链路初始化;使用串行的方式传输和接收数据。

在这里插入图片描述

图2. SATA 逻辑结构图

2.1 Phy Layer(物理层)

 SATA物理层负责主机与存储设备间的数据传输,利用8b/10b编码平衡信号、便于时钟同步并降低误码率。通过差分信号对实现高速串行传输,支持1.5 Gbps、3 Gbps和6 Gbps的速率,并向下兼容。物理层还负责链路的初始化和同步,以及信道训练和时钟恢复,确保数据传输的稳定性。同时,其电气特性设计增强了抗干扰性,保证了传输的可靠性。
 Phy Layer(物理层)的主要作用如下:

  1. 串并转换:Rx通道将串行信号转为并行信号, Tx通道将并行信号转为串行信号。
  2. OOB信号的产生和检测:生成并检测OOB信号(Out Of Band),用于建立信号连接。
  3. 字节对齐:检测Align Primitive ,调整对齐边界。
  4. 向Link Layer发送状态(已连接、未连接、已连接但是速率协商失败)

2.1.1 OOB(Out Of Band)

 OOB(Out Of Band)由一组特殊的二进制数据的Brust组成(如图3所示),主要是用于建立信号连接。其作用可以分为以下四个部分

  1. 初始化(initialization)。
  2. 传输速率的协商与对接(Speed negotiation)
  3. 重置(Reset)。
  4. 从省电状态(Slumer/Partial)的唤醒。

 OOB信号可以分为 COMRESETCOMINITCOMWAKE,每种信号都有其特殊作用。

  1. COMRESET:Host对Device进行硬件重置以及SATA信号的重新建立。
  2. COMINIT:由Device送往Host,要求信号初始化。
  3. COMWAKE:Host或是Device装置可以激发该信号来将 Phy 从省电状态(Slumer/Partial)中唤醒。

COMRESETCOMINITCOMWAKE三者主要是由4个Gen1 ALIGNp Primitives(这个后面会进行介绍) 的 brust或者 4Gen1 Dwords(4 个 D24.3 characters)的brust。由图3 我们可以看出,COMRESET和COMINIT结构保持一致,不同的是,COMWAKE中的时间间隔(T1)为320ns,而COMRESET/COMINIT的时间间隔(T2)为106.7ns。
图2

图3. OOB 信号结构图

2.1.2 Power management(电源管理)

  在SATA(Serial ATA)协议中,Phy Layer(物理层)的Power management(电源管理)设计主要是为了减少功耗,特别是在设备不活跃的情况下。SATA电源管理在Phy Layer(物理层)通常在几种不同的电源状态间进行转换。这些状态包括:

  1. Active:在Active状态下,Device 和 Host 之间的 Phy Layer(物理层)连接是完全激活的,可以正常传输或接收数据。

  2. Partial:在Partial状态下,Device 中的Signal Lines处于 Common mode voltage(电压低于Active状态下的电压)。在这样的状态下,功耗较低,恢复到Active状态的时间较短(大约为10微秒)。

  3. Slumber:在Slumber状态下,允许更低的电压值(限制在正常范围内,0-2000mV),比Partial模式进一步降低了功耗,适合较长时间的不活跃状态。Slumber模式会关闭更多的电路,以实现更大的功耗节省,恢复到Active状态的时间稍长(大约为10毫秒)。

  4. DevSleep:在DevSleep状态下,Device几乎完全关闭,只保留一个最小的电源保持部分连接。DevSleep是SATA 3.2引入的一个更深度的电源管理模式,旨在显著降低功耗。当需要恢复时,恢复时间较长,但功耗也最低,适合更长时间的不活动状态。

 为了更合理的控制功耗,SATA 设置了不同模式之间的自由转换。

  1. Partial/Slumber => PHYRDY
    Host/Device发送COMWAKE将Device/Host从省电模式唤醒。
  2. PHYRDY => Partial/Slumber
    由PHYRDY 转为 Partial/Slumber的过程如4所示

在这里插入图片描述

图4. PHYRDY => Partial/Slumber

2.1.3 Power on(上电)

  在SATA接口的上电过程中,涉及一系列初始化步骤,以确保主机与设备之间的连接能够稳定、可靠地建立。SATA设备的上电过程主要分为以下几个阶段:

  1. Host 发送COMRESET并循环检测Device的回复。
  2. Device发送COMINIT,并循环检测Host的回复。
  3. 收到Device的COMINIT后, Host回复COMWAKE,并循环检测Device的回复。
  4. 收到Host的COMWAKE后, Device回复COMWAKE,循环检测Device的回复。并以最高速度发送ALIGN primitive。
  5. 收到Device的COMWAKE后, Host以最低速率发送D10.2。同时如果接收到来自Device的ALIGN后,以相同的速度发送ALIGN给Device
  6. 当Host接收到三个非ALIGNp后,链结建立完成,进入正常操作。

  其中需要注意以下几点

  • 在1完成后,如果Device没有回复COMINIT,那么Host就会一直发送COMRESET,直到Host
    Software的介入才会停止。
  • 在3完成后,Host至少要在873.8 us内接检测到ALIGNp,否则会重新启动Power on程序(发送COMRESET),直到Host Software的介入。
  • 在4中,如果Device在54.6us内未检测到来自Host的ALlGNp且没有额外的速度可以使用,则进入错误处理,等待重新连接。

在这里插入图片描述

图5. Power On 过程

2.1.4 Speed negotiation(速度协商)

  在SATA协议中,Speed Negotiation(速率协商)是指主机和设备在链路初始化过程中,确定数据传输速率的步骤。SATA的速率协商过程使得主机和设备能够在兼容的最大速率下进行通信。SATA目前支持三种数据传输速率:1.5 Gbps(SATA I)、3.0 Gbps(SATA II)和6.0 Gbps(SATA III)。
  Power On(上电)的最后就是Host和Device在进行速度协商。协商的过程如下

  1. Device 以 Gen3(6 Gbps)de 速度发送ALIGNp Primit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值