硬盘数据恢复技术之SATA协议分析(二)

中国教育装备采购网2016-04-06 13:24围观1611次我要分享


  上一篇文章中,分析了SATA协议的主体部分,由4个层构成,物理层、链路层、传输层和应用层,数据在传输过程中依次经过这4个层,完成由电信号到逻辑数据的转换。那么具体到每一个层,数据是怎样处理的呢?下面就各层实现的技术细节做详细的介绍。

  首先来看物理层,SATA 协议规定物理层能够向上层链路层传输并行数据流,以及接收高速(1.5Gb/s、3Gb/s、6Gb/s)的串行数据流,同时进行数据的串并转换,通过带外信号的收发检测设备状态,实现接口的热插拔功能。SATA 物理层的主要任务是完成串并数据之间的转换,并将数字逻辑信号驱动为差分物理信号,对接收数据进行采样得到相应的时钟信号,通过带外信号完成设备的上电初始化进程,物理层接口逻辑图如图1所示:

硬盘数据恢复技术之SATA协议分析(二)

  图1 SATA物理层接口逻辑

  控制模块通过逻辑电路控制整个物理层的功能实现,它负责处理接收来自链路层的控制信号,并向链路层反馈本层的工作信息。模拟前端提供数据连接线的基本接口,它包含高速串行差分驱动器和接收器,以及 OOB 信号处理电路。数据提取模块负责从输入的数据流中提取时钟信息和数据。同步字符检测和同步字符源两个模块负责实现串行/并行的同步转换。并串转换模块负责将从链路层接收到的并行数据转换成串行数据,以适应物理接口的串行数据传输。串并转换模块负责将接收的物理接口转发的主机串行数据转换成并行数据,以适应链路层的并行数据传输。逻辑功能描述见下表

  表1 SATA物理层接口逻辑功能描述:

硬盘数据恢复技术之SATA协议分析(二)

  当SATA物理层接口进行数据传输时,串行数据传输链路中没有提供必要的时钟信号,物理层数据接收模块在进行接收数据高低电平的检测时没有可参考的时钟信号。为解决此问题,SATA 协议规定数据传输使用 8b/10b编码机制,利用数据冗余信息向物理层接收器提供数据检测时钟信号。另外,为了增强 SATA 接口设备的扩展能力以及响应能力,协议还定义了特殊信号:带外信号(Out Of Band)以协助物理层进行上电初始化和复位操作。

  由于在 SATA 标准接口建立通信链路之前,链路两端不知道对方的通信模式和速率,因此无法正确获取信号线路上的传输信息,导致无法正常通信。所以需要一种特殊机制来保证通信双方建立可靠的连接。SATA 2.0 标准协议采用的是OOB 信号机制。OOB 信号只用于物理层初始化时建立通信链路、系统重启和电源管理,在正常通信期间不起任何作用,所以相对于正常的数据流,它只是一种带外信号,即为 OOB(Out of Band)信号。差分信号传输是利用相互耦合的一对信号线的信号强度差来代表逻辑“0”或“1”。以 SATA 标准接口为例,发送端 TX(+)为250m V、TX(-)为 0m V 时,TX代表逻辑“1”;反之则代表逻辑“0”。当TX(+)、TX(-)维持不变,都为250m V 时,代表总线空闲状态。而OOB 信号正好就是在总线空闲时发起的一种数据短脉冲序列传输方式,该数据短脉冲序列的峰峰值一般在50m V 以内,远远低于正常数据传输时的幅值。SATA 2.0 标准协议总共定义了三种 OOB 信号:COMRESET、COMINIT和COMWAKE。它们均由有固定时间要求的一组数据短脉冲序列和一段空闲时间组成,并通过空闲时间长度的不同加以区分。

  (1)COMRESET

  COMRESET仅由SATA主机端发送,用于上电复位和错误状态下的强制重启。COMRESET由160个UIOOB的短脉冲(106.7ns)和480 个 UIOOB的空闲状态(320ns)组成,如图 2所示。UIOOB是 OOB 信号的时间单位,160个 UIOOB相当于传输 4个 DWs所占用的时间。短脉冲可以是 4个GEN1 ALIGNP原语或者是4个GEN1的DWs(每个DW由 4个D24.3 字符组成)。

  (2)COMINIT

  COMINIT 仅由SATA设备端发送,用于响应主机端的COMRESET 信号,表示设备已经准备就绪。COMINIT的信号格式与COMRESET完全相同,如图 2 所示。

硬盘数据恢复技术之SATA协议分析(二)

  图2 COMRESET和COMINIT信号格式

  (3)COMWAKE

  COMWAKE可由SATA主机端发送,也可由SATA设备端发送,用于唤醒对方。COMWAKE由160个UIOOB的短脉冲(106.7ns)和 160 个 UIOOB的空闲状态(106.7ns)组成,如图3所示。

硬盘数据恢复技术之SATA协议分析(二)

  图3 COMWAKE信号格式

  SATA接口物理层在接通电源并硬件复位成功后,主机端通过使用OOB信号来启动上电后的复位序列。接口通信双方在经过阻抗校准,自我诊断等一系列自我状态的调整后,主机端通知SATA接口设备端准备就绪,并在进行速度协商及时钟恢复后在两端建立起可靠的高效通信链路,初始化时序如下:

硬盘数据恢复技术之SATA协议分析(二)

  图4 物理层初始化时序

  物理层初始化过程可以分为两个步骤:1、检测连接设备是否存在;2、协商双方端口支持的最高传输速率。第一个步骤通过OOB 信号交互完成。双方端口发送固定格式的信号,然后等待对方响应。如果检测到响应,说明设备已存在,可以进行第二个步骤。双方端口发送固定格式的稳定数据流,SATA 设备端通过不断降速协商双方支持的最高传输速率,并从数据流中提取出时钟信号,实现数据同步。此时,双方端口就可以进行正常通信了。具体流程为:

硬盘数据恢复技术之SATA协议分析(二)

  图5 初始化流程

  硬件上电后,Host端开始复位,并在复位期间不断向Device端发送COMRESET信号。Host端复位完成后,停止向Device端发送COMRESET信号,并等待Device端的响应。

  Device端接收到COMRESET信号后进行复位,复位完成后通过发送COMINIT信号响应Host端,表明Device端已就绪,可以进入下一阶段。

  如果Device端在 Host端停止发送COMRESET信号之前没有成功接收到该信号,则无法发送COMINIT 响应信号,Host等待10ms 后作超时处理,需要重新复位;如果在Device就绪之后,发送 COMINIT 响应信号之前,Host仍处于复位状态,那么Device将再次进入复位并发送COMINIT响应信号,直到Host复位完成。

  当Host端检测到Device端的COMINIT响应信号后,进入阻抗校准状态。Host端针对当前信号传输环境,以传输电缆作为参考,采用 TDR 测试方案进行自我诊断并对高速差分信号收发器做一些适当的调整,从而达到最好的信号质量。高速差分信号收发器的调整主要是对其内部的阻抗进行匹配,减少信号损耗,保证信号的完整性。需要注意的是,阻抗校准不是物理层初始化过程所必需的,视情况而选择。

  阻抗校准完成后,Host端发送 COMWAKE信号给Device端并等待响应。此时Device端接收到 COMWAKE信号后,进行时钟校准,并同样可以进行阻抗校准并以COMWAKE信号通知Host端可以进入速率协商阶段。

  在速率协商阶段Device端主导该流程,Host端只是作为响应。当Device端向Host端发送COMWAKE信号后,紧接着以它所能支持的最大速率连续向Host端发送ALIGNP序列。如果Device端在54.6us之后仍未检测到Host端回复的ALIGNP序列,那么Device端判定Host端不支持该传输速率,Device端自动将速率降至下一级并重复以上过程,如果Device端速率已降至最低而Host端仍然没有响应,则进入错误状态。

  Host端在接收到Device端发来的COMWAKE信号后,以最低的速率发送 D10.2字符。同时,Host端要在54.6us内锁定ALIGNP序列,一旦锁定ALIGNP序列,它将以相同的速率回复ALIGNP序列表示支持该传输速率。如果Host端在880us内没有接收到 ALIGNP信号,则会重新启动上电初始化操作,并一直重复下去,直到应用层将其强行终止。

  Device端锁定ALIGNP序列并在准备就绪后发送SYNCP序列表示可以开始正常通信了。当主机端接收到 3个非ALIGNP序列后,通信链路建立成功,物理层初始化过程结束,进入正常工作状态。

  总的来看,物理层的初始化,包括复位阶段、可选的阻抗匹配阶段和速率校准阶段等,这三个阶段都需要执行OOB信号的指令,由Host主机端和Device设备端交互完成。

  SATA协议的物理层,基本上分析完了,看上去要比PATA协议复杂不少,由于要实现高速串行传输,这些功能都是必不可少的。下一篇文章中,将继续介绍SATA协议的其他层的技术原理和细节,敬请关注。

  关于达思科技

  达思科技,国家级高新技术企业,天津市国家保密局涉密载体数据恢复唯一协作单位,数据恢复行业著名品牌,在国内乃至全亚洲数据恢复技术领先!

  达思科技中国数据恢复与取证真专家!

  更多数据恢复与取证前沿技术请关注微信公众账号:woocs

  微信号:woocs

硬盘数据恢复技术之SATA协议分析(二)

  长按识别二维码关注

  专注数据恢复与取证技术、互联网

  投稿:woocs@qq.com


来源:达思凯瑞技术(北京)有限公司作者:达思凯瑞技术(北京)有限公司

相关阅读