一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种双模SATA传输层优化方法与流程

2022-06-05 14:09:22 来源:中国专利 TAG:

一种双模sata传输层优化方法
技术领域
1.本发明属于磁盘连接技术领域,特别涉及一种双模sata传输层优化方法。


背景技术:

2.sata(serial ata)是一种高速串行总线,采用串行差分信号连接方式和点对点的传输方式,内置数据/命令校验单元,纠错能力强,支持噪声滤除和热插拔,具有管脚数量少、数据传输速率快、可靠性高、兼容性好等特性,目前被业界广泛用于存储设备和主机之间的主要i/o接口。sata的拓扑结构是点对点式,主机可以通过端口多路器链接支持多个设备,每个设备百分百占用总线带宽,并且一个设备的链接出错不会影响其他设备的链接。
3.sas作为新一代scsi技术,类似sata技术同样采用串行接口以获得更高的传输速度。同时,sas设计考虑向下兼容sata技术,通过stp协议(sata通道协议)实现sas控制器和sata设备之间的互联和数据传输。sas协议标准中的stp是在sata协议的底层传输逻辑基础上,将其承载于sas底层(物理层 链路层 传输层)进行传输的方法。stp协议规范定义了sas系统和sata设备通信技术细节。其中stp的传输层采用sata标准协议定义的传输层实现为基础,并适配sas标准中的port层(端口层)功能。
4.典型的sas数据存储拓扑结构中,sas控制器通过一级或者多级expander(磁盘扩展器)扩展支持大规模磁盘的管理。sas expander中通常集成了stp/sata桥,完成sas协议到sata协议的转换,以兼容sata磁盘设备连接。图1为将sata设备接入sas网络中的典型stp连接示意图。sas controller(sas控制器)作为控制命令和数据读写命令的发起者,负责管理整个存储系统的拓扑结构,发出磁盘数据读写命令,接收设备响应;sas expander用于扩展存储系统的拓扑结构,兼容sata设备连接;sata磁盘存储设备存储业务数据并接入sas系统。
5.为说明sata标准传输层在支持sas的stp应用场景时存在的问题,以fpdma(sata标准中定义的first-party dma)写操作为例,描述典型的stp消息交互场景。如图2所示:主机初始化后下发fpdma命令,经主机端sata传输层将命令内容组帧后发送至设备驱动;设备端接收到命令后将其加入驱动执行队列,然后向主机发送应答帧以通知接收fpdma命令完成;主机端sata传输层接收解析收到的设备应答命令帧并通知主机;设备端执行完成fpdma命令后,向主机发送dma setup fis以表示接收数据准备就绪,主机将此fis帧内容用于dma相关配置。随后设备端发送dma active fis请求主机发送数据,主机端sata传输层接收解析设备返回的dma setup fis和dma active fis并上报应用层;主机配置完成dma后,开始启动发送数据。主机端sata传输层进入发送数据流程,将待发送数据组成数据帧后进行发送,并检查发送状态;设备端接收数据后通过驱动写入硬盘对应扇区,待执行完毕后向主机返回setdevbits fis以通知状态;主机端sata传输层接收解析收到的setdevbits fis并上报主机以更新对应状态,并通知软件结束当前进程。
6.然而,sata标准协议在制定之初,并未充分考虑对sas应用场景的支持,在sas控制器并发访问多个sata设备的stp应用场景下,sata标准协议的传输层无法正确、高效的完成
sas标准中定义的数据交互过程,导致数据通信失败。总的来说,目前典型sata传输层优化方法存在的问题如下:
7.1.面对单个sas控制器控制多个sata盘的场景,进行并发控制访问操作存在异常问题;
8.2.传输层设计开发成本较高,需要独立开发两套逻辑代码分别用于支持stp和sata设备直连场景;
9.3.传输层设计兼容性差,一套传输层设计仅能支持stp和sata设备直连场景之一,不利于设计迭代;
10.4.传输层设计维护性差,一旦发生设计改动,需要同时修改stp和sata设备直连场景的两套逻辑,增大了错误风险。


技术实现要素:

11.本发明的目的在于解决典型sata传输层优化方法存在的问题,提供了一种双模sata传输层优化方法,用于实现对sas控制器并发控制多sata设备的正确支持,并且满足stp和sata设备直连双模场景。
12.所述双模sata传输层优化方法,包括:
13.当sata传输层状态机处于ht_hostidle状态时,确定sas控制器的当前模式是stp模式还是sata直连模式,基于所述sas控制器的当前模式和预定义事件,将所述sata传输层状态机跳转到与所述预定义事件相对应的目的状态;
14.当所述sata传输层状态机处于ht_ds_fis状态时,如果数据方向为写方向并且auto active bit置位,则将所述sata传输层状态机跳转到所述ht_hostidle状态;
15.当所述sata传输层状态机接收到dma active fis并处于ht_dmaotrans1状态时,将所述sata传输层状态机直接跳转到所述ht_hostidle状态。
16.优选地,当所述sata传输层状态机从所述ht_ds_fis状态或ht_dmaotrans1状态跳转到所述ht_hostidle状态之后,进一步包括:
17.由上层软件决定是否对当前sata设备进行数据发送。
18.优选地,基于所述sas控制器的当前模式和预定义事件,将所述sata传输层状态机跳转到与所述预定义事件相对应的目的状态,进一步包括:
19.如果所述sas控制器的当前模式不是stp模式,并且所述预定义事件为存在发送命令或数据的请求,则将所述sata传输层状态机跳转到ht_dmaotrans2状态,并执行dma数据的发送。
20.优选地,基于所述sas控制器的当前模式和预定义事件,将所述sata传输层状态机跳转到与所述预定义事件相对应的目的状态,进一步包括:
21.如果所述sas控制器的当前模式是stp模式,并且所述预定义事件为存在发送命令或数据的请求,则将所述sata传输层状态机跳转到ht_stp_openreq状态;其中所述ht_stp_openreq状态指示所述sata传输层状态机与端口层进行通信并发送建立链接的请求。
22.优选地,在将所述sata传输层状态机跳转到ht_stp_openreq状态之后,进一步包括:
23.如果所述建立链接的请求发送完成,则将所述sata传输层状态机跳转到ht_stp_
cowait状态;其中所述ht_stp_cowait状态指示所述sata传输层状态机等待所述端口层返回链接建立结果。
24.优选地,在将所述sata传输层状态机跳转到ht_stp_openreq状态之后,进一步包括:
25.如果在发送所述建立链接的请求时产生异常错误,则将所述sata传输层状态机跳转到ht_co_fail状态;其中所述ht_co_fail状态指示所述sata传输层状态机产生对应的错误状态并上报,然后自动跳转到所述ht_hostidle状态。
26.优选地,在将所述sata传输层状态机跳转到ht_stp_cowait状态之后,进一步包括:
27.如果所述端口层返回成功建立链接的消息,将所述sata传输层状态机跳转到ht_co_done状态;其中所述ht_co_done状态指示所述sata传输层状态机根据先前的发送命令或数据的请求,基于已建立的链接来执行对应的发送控制流程。
28.优选地,在将所述sata传输层状态机跳转到ht_stp_cowait状态之后,进一步包括:
29.如果所述端口层返回建立链接失败的消息,将所述sata传输层状态机跳转到所述ht_co_fail状态。
30.优选地,基于所述sas控制器的当前模式和预定义事件,将所述sata传输层状态机跳转到与所述预定义事件相对应的目的状态,进一步包括:
31.如果所述sas控制器的当前模式不是stp模式,并且需要发送host to device register fis命令,则将所述sata传输层状态机跳转到ht_cmdfis状态,并进入命令发送流程。
32.优选地,当所述sas控制器的当前模式是stp模式时,所述sas控制器通过expander连接多个sata设备。
33.相比于现有技术,本发明具有以下优点:
34.通过对sata传输层状态机的优化,保证了stp场景控制访问设备的正确性,以及并发控制多盘操作的正确性和高效性;通过传输层自动完成工作模式配置,灵活切换以支持stp或sata设备直连场景。在后续进行设计改动时,只需修改和维护一套逻辑代码,有效解决了典型sata传输层优化方法存在的问题,提供了对单个sas控制器并发控制多sata设备的正确支持,并且满足stp和sata设备直连双模场景,降低了设计开发成本和风险,增强了设计兼容性和维护性。
35.本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1示出了根据现有技术的sata设备接入sas网络中的典型stp连接示意图。
38.图2示出了根据现有技术的sata fpdma写流程示意图。
39.图3示出了根据现有技术的单个sas控制器控制两个sata盘的fpdma写流程示意图。
40.图4示出了根据本发明的双模sata传输层状态机跳转图。
41.图5示出了根据本发明的双模sata传输层stp场景下fpdma写操作的第一波形图。
42.图6示出了根据本发明的双模sata传输层stp场景下fpdma写操作的第二波形图。
43.图7示出了根据本发明的双模sata传输层stp场景下fpdma写操作的第三波形图。
44.图8示出了根据本发明的双模sata传输层stp场景下fpdma写操作的第四波形图。
45.图9示出了根据本发明的双模sata传输层stp场景下fpdma写操作的的第五波形图。
46.图10示出了根据现有技术的典型sata传输层优化方法fpdma多盘写操作异常波形图。
47.图11示出了根据本发明的双模sata传输层在sata设备直连场景下的fpdma写操作的第一波形图。
48.图12示出了根据本发明的双模sata传输层在sata设备直连场景下的fpdma写操作的第二波形图。
具体实施方式
49.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.图3为单个sas控制器控制两个sata盘进行fpdma写流程示意图,描述了一个sas控制器通过expander分别向sata设备0和设备1发送fpdma命令,待收到各设备返回的dma setup fis和dma active fis后再向对应设备发送数据的过程。sas控制器和sata设备进行通信前,都需要与expander进行通信,建立对应链路连接后再进行正常通信,单个sata设备的流程操作与图2的sata fpdma写流程一致,因此在图3中省略了建立链接事件的描述。
51.在图3的场景中,正常过程的事件顺序例如可以描述为:
52.事件t1:sas控制器通过expander向sata设备0发送fpdma写命令;
53.事件t2:sas控制器通过expander向sata设备1发送fpdma写命令;
54.事件t3:sata设备0通过expander向sas控制器发送dma active fis;
55.事件t4:sata设备1通过expander向sas控制器发送dma setup fis。
56.然而如果事件t4发生在传输层还未对事件t3完全响应完毕期间,则会引起控制访问异常。根据表1至表3分别示出的sata标准协议规定的传输层状态机的接收dma active fis跳转示意表、dma写操作跳转示意表以及接收dma setup fis跳转示意表,按照sata标准协议传输层状态机在收到sata设备0的dma active fis后由idle状态(空闲状态)跳转到ht_dmaotrans1状态(如表1第1项),如果dma配置完成则再跳转到ht_dmaotrans2状态(如表2第2项)。如果此时sata设备1向sas控制器发送dma setup fis(t4事件发生),传输层状态
机由于还处于ht_dmaotrans2状态而无法按照表3进行正常响应,即无法从ht_dmaotrans2状态实现接收dma setup fis的状态跳转,从而导致控制访问异常产生。
57.表1
[0058][0059]
表2
[0060][0061]
表3
[0062][0063]
有鉴于此,本发明针对目前典型sata传输层优化方法和sata标准协议传输层在sas应用中存在的缺陷,提出一种双模sata传输层优化方法。通过对原有标准协议sata传输层状态机新增ht_stp_openreq,ht_stp_cowait,ht_co_done和ht_co_fail四个状态,用于在发送命令或数据前和port层申请建立链路,在返回建链成功信息后再进行后续发送流程操作,保证了stp场景控制访问设备的正确性。通过对sata标准协议原有传输层状态机中ht_hostidle,ht_ds_fis和ht_dmaotrans1这三个状态进行部分跳转条件的优化和修改,保证了并发控制多盘操作的正确性和高效性。通过在链路层上报链路协商结果时使传输层自动完成工作模式配置,在不同模式之间灵活切换,以支持stp或sata设备直连场景。
[0064]
首先,本发明的方案需要对sata标准传输层状态机中多个状态进行优化。为使sata传输层状态机支持双模式,在原有的标准协议sata状态机基础上,本发明新增了ht_stp_openreq,ht_stp_cowait,ht_co_done和ht_co_fail状态。对原有状态机中ht_hostidle,ht_ds_fis和ht_dmaotrans1进行部分状态跳转的优化修改,包括:
[0065]
1.ht_hostidle状态跳转优化
[0066]
表4
[0067][0068]
表4以对照形式示出了ht_hostidle状态下优化前后的状态跳转表(需要说明的是,在表2-表10中,粗体字部分表示在标准sata传输层状态定义基础上新增的部分,删除线部分表示从标准sata传输层状态定义中移除的部分,其余为继承了标准sata传输层状态定义的部分)。在表4第1-6项中,ht_hostidle状态跳转条件在原有协议基础上增加了stp模式使能判断(if stp mode disabled/enabled),即首先确定stp模式被使能还是禁用。当stp模式被禁用时,当前模式可以是sata直连模式。此外,表4第7项新增状态跳转分支,即当有发送命令或数据的请求时,如果未使能stp模式,则由idle状态跳转到ht_dmaotrans2的分支,随后进行dma数据的发送。表4第8项新增状态跳转分支,即如果使能stp模式,传输层状态机则由idle状态跳转到ht_stp_openreq。
[0069]
2.增加ht_stp_openreq状态
[0070]
表5
[0071][0072]
如表5所示,传输层状态机进入ht_stp_openreq状态后,开始与port层进行通信,即发送建立链接的请求,port层根据此请求进行链路建立操作。根据表5第1项,传输层状态机在发送请求完毕后跳转到ht_stp_cowait状态等待结果。根据表5第2项,如果中途发生异常错误则跳转ht_co_fail状态。
[0073]
3.增加ht_stp_cowait状态
[0074]
表6
[0075][0076]
如表6所示,传输层状态机进入ht_stp_cowait状态后,等待port层返回申请建立链接的结果。根据表6第1项,如果port层返回成功建立链接,传输层状态机跳转到ht_co_done状态;根据表6第2项,如果返回建立链接失败消息,则跳转到ht_co_fail状态。
[0077]
4.增加ht_co_done状态
[0078]
表7
[0079][0080]
如表7所示,传输层状态机进入ht_co_done状态后,根据先前下发的命令或数据发送请求进入不同的分支执行对应的发送控制流程,随后传输层状态机跳转遵循sata协议标准设计。
[0081]
5.增加ht_co_fail状态
[0082]
表8
[0083][0084]
如表8所示,传输层状态机进入ht_co_fail状态后,产生对应的错误状态并上报后自动跳转到idle状态,结束本次进程,如表8第1项。
[0085]
6.ht_ds_fis状态跳转优化
[0086]
表9
[0087][0088]
如表9所示,传输层状态机接收到dma setup fis后进入ht_ds_fis状态。根据优化后的表9新的第4项,如果为写方向且auto active bit置位,状态机跳转目的状态由原先sata协议标准定义的ht_dmaotrans2状态更改为idle状态(ht_hostidle)。之后,由软件决定是否对当前设备进行数据发送,而非限制为必须完成当前设备数据发送后才能进行其他操作。由于软件应用可以灵活管理控制整个收发流程,因此在控制多个设备端场景时,可以达到访问多设备的灵活调度和传输数据正确高效的效果。
[0089]
7.ht_dmaotrans1状态跳转优化
[0090]
表10
[0091][0092]
如表10所示,传输层状态机接收到dma active fis后进入ht_dmaotrans1状态,状态机由原先sata协议标准定义的根据dma控制器是否配置完毕分别跳转到ht_dmaotrans1
或ht_dmaotrans2状态(表10的删除线部分的第1、2项),全部更改为跳转到idle状态(表10中粗体不带删除标记的第1、2项)。硬件记录并上报该dma active fis内容,后续由应用层进行处理。与表9类似,通过对表10的更改,同样能够由软件决定是否对当前设备进行数据发送,而非限制为必须完成当前设备数据发送后才能进行其他操作。
[0093]
通过对sata标准传输层状态机的优化,有效解决了sas控制器在stp场景以及并发控制多sata时遇到的各类异常。
[0094]
图4描述了采用本发明实现的传输层相关状态跳转片段,涵盖了图2所述sata标准业务场景。在stp模式下,本发明传输层状态机跳转流程描述如下:
[0095]
1、主机在发送命令或数据之前,申请建立链路:
[0096]
事件t1:对应于表4第8项,即使能stp模式,控制器命令层配置命令寄存器,请求传输层下发fpdma写命令给sata设备;
[0097]
事件t2:对应于表5第1项,传输层与port层进行通信,即发送建立链接的请求,等待port层返回申请建立链接结果;
[0098]
事件t3:对应于表6第1项,传输层接收到port层返回成功建立链接;
[0099]
2、主机发送host to device registerfis命令:
[0100]
事件t4:对应于表7第1项,传输层在链路建立成功后进入命令发送流程;
[0101]
事件t5:传输层命令发送完成,检查状态;
[0102]
事件t6:传输层检查状态通过,表示发送命令成功;
[0103]
3、主机接收device to host registerfis:
[0104]
事件r1:传输层接收设备端发送的帧内容;
[0105]
事件r2:传输层识别接收的帧类型为device to host registerfis;
[0106]
事件r3:传输层检查帧类型为device to host registerfis的接收状态;
[0107]
事件r4:传输层接收device to host registerfis成功;
[0108]
4、主机接收dma setup fis:
[0109]
事件r1:传输层接收设备端发送的帧内容;
[0110]
事件r5:传输层识别接收的帧类型为dma setup fis;
[0111]
事件r6:对应于表9第4项,传输层接收dma setup fis成功;
[0112]
5、主机接收dma active fis:
[0113]
事件r1:传输层接收设备端发送的帧内容;
[0114]
事件r7:传输层识别接收的帧类型为dma active fis;
[0115]
事件r8:传输层接收dma active fis成功;
[0116]
事件r9:对应于表10第1项,传输层记录并上报dma配置信息;
[0117]
6、主机发送数据:
[0118]
事件t7:对应于表7第6项,传输层在链路建立成功后进入数据发送流程;
[0119]
事件t8:传输层数据发送完成,开始检查传输状态;
[0120]
事件t9:传输层数据发送状态检查通过,表示发送数据成功;
[0121]
7、主机接收setdevbits fis:
[0122]
事件r1:传输层接收设备端发送的帧内容;
[0123]
事件r10:传输层识别接收的帧类型为setdevbits fis;
[0124]
事件r11:传输层检查帧类型为setdevbits fis的接收状态;
[0125]
事件r12:传输层接收setdevbits fis成功;
[0126]
而在sata设备直连模式下,接收流程与stp模式传输层设计相同,仅发送流程存在差别。在优选的实施例中,sata设备直连模式下传输层状态机旁路图4中进行发送命令或数据前申请建立链路的部分,即跳过t1,t2和t3事件。状态机由idle状态可直接跳转到其余状态进行发送流程控制,具体如下所示:
[0127]
1、主机发送host to device registerfis命令:
[0128]
事件t10:对应于表4第1项,传输层进入命令发送流程;
[0129]
事件t5:传输层命令发送完成,检查状态;
[0130]
事件t6:传输层检查状态通过,表示发送命令成功;
[0131]
2、主机发送数据:
[0132]
事件t11:对应于表4第7项,传输层进入数据发送流程;
[0133]
事件t8:传输层数据发送完成,开始检查传输状态;
[0134]
事件t9:传输层数据发送状态检查通过,表示发送数据成功;
[0135]
本发明通过在sata标准传输层状态机的基础上新增状态,以及对ht_hostidle、ht_ds_fis和ht_dmaotrans1状态跳转进行优化修改,根据图4所述的状态机跳转示意图,在确保每次业务正常完成后,sata传输层状态机成功回到空闲状态ht_hostidle,完成闭环操作。本发明的方法有效解决了单个sas控制器控制访问多个sata盘场景的异常问题,同时还支持了stp和sata设备直连场景两种模式。
[0136]
需要说明的是,图4所示的状态机跳转过程仅用于说明而非限定本发明的技术方案。本领域技术人员应当理解,在本发明基础上可以根据实际需要而对磁盘连接结构以及状态机的事件数量、状态数量等做出容易想到的任意调整,而不应将本发明限于上述示例的具体结构或参数。
[0137]
在说明性的实施例中,以下以1个sas控制器控制访问2个sata设备(stp)场景为例,说明采用根据本发明的双模sata传输层优化方法实现的效果。对于1个sas控制器和2个sata设备(stp)场景,图5-图9的具体事件描述如下:
[0138]
事件e1:传输层根据链路层上报的链路协商结果自动使能stp模式,传输层收到sas控制器向sata设备0下发fpdma写命令的请求;
[0139]
事件e2:传输层接收到port层返回的链路建立成功后,开始向sata设备0下发fpdma写命令;
[0140]
事件e3:传输层下发命令完毕后收到sata设备0返回的r_ok消息,表示命令传输成功;
[0141]
事件e4:传输层开始接收sata设备0的传输帧,判断类型为device to host registerfis;
[0142]
事件e5:传输层接收完成sata设备0的device to host register fis,状态机返回至idle状态;
[0143]
事件e6:传输层根据链路层上报的链路协商结果自动使能stp模式,传输层收到sas控制器向sata设备1下发fpdma写命令的请求;
[0144]
事件e7:传输层接收到port层返回的链路建立成功后,开始向sata设备1下发
fpdma写命令;
[0145]
事件e8:传输层下发命令完毕后收到sata设备1返回的r_ok消息,表示命令传输成功;
[0146]
事件e9:传输层开始接收sata设备1传输的帧,判断类型为device to host registerfis;
[0147]
事件e10:传输层接收完成sata设备1的device to host register fis,状态机返回至idle状态;
[0148]
事件e11:传输层接收到sata设备0的dma setup fis,接收完成后状态机返回至idle状态;
[0149]
事件e12:传输层接收到sata设备0的dma active fis,接收完成后状态机返回至idle状态;
[0150]
事件e13:传输层接收到sata设备1的dma setup fis,接收完成后状态机返回至idle状态;
[0151]
事件e14:传输层接收到sata设备1的dma active fis,接收完成后状态机返回至idle状态;
[0152]
事件e15:传输层收到sas控制器向sata设备0下发数据的请求;
[0153]
事件e16:传输层接收到port层返回的链路建立成功后,开始向sata设备0下发数据;
[0154]
事件e17:传输层下发数据完毕后收到sata设备0返回的r_ok消息,表示数据传输成功;
[0155]
事件e18:传输层开始接收sata设备0的传输帧,判断类型为setdevbits fis;
[0156]
事件e19:传输层接收完成sata设备0的setdevbits fis,检查状态通过并指示对sata设备0的fpdma写操作完成,状态机返回至idle状态;
[0157]
事件e20:传输层收到sas控制器向sata设备1下发数据的请求;
[0158]
事件e21:传输层接收到port层返回的链路建立成功后,开始向sata设备1下发数据;
[0159]
事件e22:传输层下发数据完毕后收到sata设备1返回的r_ok消息,表示数据传输成功;
[0160]
事件e23:传输层开始接收sata设备1传输的帧,判断类型为setdevbits fis;
[0161]
事件e24:传输层接收完成sata设备1的setdevbits fis,检查状态通过并指示对sata设备1的fpdma写操作完成,状态机最后返回idle状态。
[0162]
以上场景如果采用典型sata传输层优化方法,在图7中的事件e12发生时,传输层接收到sata设备0的dma active fis后,状态机会跳转到ht_dmaotrans1状态,然后等待dma引擎配置完成后向sata设备0发送数据。在此期间如果收到sata设备1返回的dma setup fis,对应于图10中的事件e28,则传输层状态机无法正常响应,从而造成后续sata设备1的操作异常。具体参见图10的事件描述如下:
[0163]
事件e25:与图7中的事件e11相同,即传输层接收到sata设备0的dma setup fis,接收完成后状态机返回至idle状态;
[0164]
事件e26:与图7中的事件e12相同,即传输层接收到sata设备0的dma active fis,
接收完成后状态机返回至idle状态;
[0165]
事件e27:传输层状态机进入ht_dmaotrans1状态等待dma引擎配置完成,随后跳转到ht_dmaotrans2状态向sata设备0发送数据。
[0166]
事件e28:与图7中的事件e13相同,即sata设备1向传输层返回dma setup fis。但此时传输层状态机处于ht_dmaotrans1或ht_dmaotrans2状态而无法进行正常接收响应,最终导致对sata设备1后续操作异常。
[0167]
在可选的实施例中,以下以sata设备直连场景的fpdma写操作为例,说明采用根据本发明的双模sata传输层优化方法实现的效果。对于sata设备直连场景,参见图11-图12中的事件描述如下:
[0168]
事件e1:传输层根据链路层上报的链路协商结果自动关闭stp模式,即进入sata直连模式,传输层收到向sata直连设备下发fpdma写命令的请求后开始下发命令;
[0169]
事件e2:传输层下发命令完毕后收到sata直连设备返回r_ok消息,表示命令传输成功;
[0170]
事件e3:传输层开始接收sata直连设备传输帧,判断类型为device to host registerfis;
[0171]
事件e4:传输层接收完成sata直连设备的device to host registerfis,检查状态通过后,状态机返回至idle状态;
[0172]
事件e5:传输层接收到sata直连设备的dma setup fis,接收完成后状态机返回至idle状态;
[0173]
事件e6:传输层接收到sata直连设备的dma active fis,接收完成后状态机返回至idle状态;
[0174]
事件e7:传输层收到向sata直连设备下发数据的请求,开始下发数据;
[0175]
事件e8:传输层开始接收sata直连设备传输的setdevbits fis,接收完成并检查状态通过后,指示对sata直连设备的fpdma写操作完成,状态机最后返回至idle状态。
[0176]
本发明有效解决了典型sata传输层优化方法存在的问题,提供了对sas控制器并发控制多sata设备的正确支持,并且满足stp和sata设备直连双模场景。本领域技术人员可以理解,除图3所述的单个sas控制器并发控制两个sata设备的场景之外,本发明的构思同样适用于两个以上的sata设备的场景。
[0177]
由上述时序图及描述清晰可见,采用本发明设计的双模sata传输层状态机有效解决了典型sata传输层设计中针对sas控制器和sata多设备并发通信存在的fpdma操作异常问题,保证了多设备并发数据业务的正确进行,保证sas控制器并发控制多个sata设备的数据通信业务正确完成,更加高效地利用物理链路提升了整个存储系统的吞吐率;同时还支持了stp和sata设备直连两种场景。即使后续进行设计改动,也只需修改和维护一套逻辑代码,从而降低了设计开发成本和风险,增强了设计兼容性和维护性。
[0178]
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献