Stp链路层状态机优化方法

文档序号:809186 发布日期:2021-03-26 浏览:22次 >En<

阅读说明:本技术 Stp链路层状态机优化方法 (STP link layer state machine optimization method ) 是由 宫晓渊 赵新宇 张辅云 李兵 于 2020-12-22 设计创作,主要内容包括:本发明提供了一种STP链路层状态机优化方法,检测STP链路层状态机是否处于HL-SendChkRdy状态,如果所述STP链路层状态机处于所述HL-SendChkRdy状态,则确定STP链路层是否出现冲突事件,当出现所述冲突事件时,将所述STP链路层状态机迁移至L-SyncEscape状态,在所述L-SyncEscape状态下执行状态机跳转和后续业务处理。本发明改善了链路层状态机运转机制,解决了STP场景中链路层状态机的死循环问题,完善了SATA链路层对STP场景的支持。(The invention provides an STP link layer state machine optimization method, which comprises the steps of detecting whether an STP link layer state machine is in an HL _ SendChkRdy state or not, if the STP link layer state machine is in the HL _ SendChkRdy state, determining whether a conflict event occurs in the STP link layer or not, when the conflict event occurs, migrating the STP link layer state machine to an L _ SyncEscape state, and executing state machine jumping and subsequent service processing in the L _ SyncEscape state. The invention improves the running mechanism of the state machine of the link layer, solves the problem of endless loop of the state machine of the link layer in the STP scene, and perfects the support of the SATA link layer to the STP scene.)

STP链路层状态机优化方法

技术领域

本发明属于磁盘连接技术领域,特别涉及一种STP链路层状态机优化方法。

背景技术

SATA(Serial ATA)是一种高速串行总线,采用点对点的传输方式,内置数据/命令校验单元,纠错能力强,支持热插拔,具有管脚数量少、数据传输速率快、可靠性高、兼容性好等特性,目前被业界广泛用于存储设备和主机之间的主要I/O接口。

SAS(串行连接SCSI)作为新一代SCSI技术,类似SATA技术同样采用串行接口以获得更高的传输速度。同时,SAS设计考虑向下兼容SATA技术,通过STP协议(SATA通道协议)实现SAS控制器和SATA设备之间的互联和数据传输。SAS协议标准中的STP协议规范定义了SAS系统和SATA设备通信技术细节,其中STP的链路层,采用SATA标准协议定义的链路层实现为基础。

典型的SAS数据存储拓扑结构中,SAS控制器通过一级或者多级Expander(磁盘扩展器)扩展支持大规模磁盘的管理。SAS Expander中通常集成了STP/SATA桥,完成SAS协议到SATA协议的转换,以兼容SATA磁盘设备连接。如图1所描述,SAS控制器C1作为控制命令和数据读写命令的发起者,管理整个存储系统的拓扑结构,发出磁盘数据读写命令,接收设备响应。SAS Expander C2与SAS控制器C1通过SAS标准物理连接L1进行连接,用于扩展存储系统的拓扑结构,其内部集成STP/SATA桥以兼容SATA设备连接。STP/SATA桥C2.1,完成SAS标准中STP协议到SATA协议的转换,帮助SATA设备接入SAS系统。SATA存储设备C3通过SATA标准物理连接L2与STP/SATA桥C2.1相连接,用于存储业务数据。

然而,SATA标准协议在制定之初,并未充分考虑对SAS应用场景的支持,在特定STP应用场景下,SATA标准协议的链路层无法完成预期的数据通信过程,导致数据通信失败。

另一方面,对比标准SATA链路层,SAS的STP链路层需要和SAS的链路层(SAS链路层)配合工作,完成链路的连接管理。以下结合典型的SAS的STP链路层消息交互的场景,指出目前SATA标准链路层在支持STP应用场景时存在的问题。

参见图2,在SAS传输层的FIS(Frame Information Structure,SATA传输层数据结构)发送结束后,STP链路层发送WTRM原语提示FIS发送完成;SAS Expander的STP/SATA桥转发SAS控制器STP链路层WTRM原语至SATA设备;SATA设备链路层发送R_OK表示FIS接收成功;STP/SATA桥转发SATA设备的R_OK原语至SAS控制器;SAS控制器暂无FIS等待发送,STP链路层发送SYNC原语表示链路空闲;SATA设备空闲,无FIS发送,链路层发送SYNC原语;STP/SATA桥转发端口接收到的SYNC原语至SAS控制器或SATA设备;SAS Expander检测到STP端口和SATA端口同时收到SYNC原语,链路两端SAS控制器和SATA设备均处于空闲状态,启动连接管理过程,连续发送3次CLOSE原语请求关闭STP链路;同时,SAS控制器传输层产生FIS发送请求,SAS控制器STP链路层发送X_RDY原语请求链路,请求再次发送数据;SAS控制器链路层检测到Expander发送的CLOSE原语,回复3次CLOSE原语,关闭STP连接;STP连接关闭后,SAS控制器和Expander链路空闲,持续发送IDLE DWORD空闲数据,保持物理链路活跃。

其中链路层在HL_SendChkRdy状态发送X_RDY原语,如果收到R_RDY原语,状态迁移至L_SendSOF状态;如果收到X_RDY原语,状态迁移至L_RcvWaitFifo状态;如果是其他非R_RDY或X_RDY的数据,状态持续保留在HL_SendChkRdy。可见,如果SAS控制器STP链路层发送X_RDY后一直未从设备端接收到期望的X_RDY或R_RDY原语,则会导致STP链路层状态机持续停留在HL_SendChkRdy状态,发生死循环,无法继续后续业务处理。

发明内容

本发明的目的在于针对目前SATA标准协议链路层中存在的缺陷,提出在典型STP应用场景下的改进方案,完成对STP场景的正确支持。

本发明在第一方面提供了一种STP链路层状态机优化方法,包括:

检测STP链路层状态机是否处于HL_SendChkRdy状态,

如果所述STP链路层状态机处于所述HL_SendChkRdy状态,则确定STP链路层是否出现冲突事件,

当出现所述冲突事件时,将所述STP链路层状态机迁移至L_SyncEscape状态,在所述L_SyncEscape状态下执行状态机跳转和后续业务处理。

优选地,所述确定STP链路层是否出现冲突事件,进一步包括,确定STP链路层是否接收到连接关闭消息。

优选地,所述确定STP链路层是否接收到连接关闭消息,进一步包括:

确定所述SAS控制器的传输层是否请求STP连接关闭。

优选地,所述确定STP链路层是否接收到连接关闭消息,进一步包括:

确定SAS的链路层是否接收到CLOSE原语。

优选地,所述确定SAS的链路层是否接收到CLOSE原语,进一步包括:

通过判断GOT_CLOSE信号是否被拉高,确定是否接收到CLOSE原语。

优选地,所述确定SAS的链路层是否接收到CLOSE原语,进一步包括:

在传输层请求发送FIS数据时,如果SEND_X_RDY信号被拉高,请求物理层发送X_RDY原语,则确定STP链路层状态机处于所述HL_SendChkRdy状态。

优选地,所述在L_SyncEscape状态下执行状态机跳转和后续业务处理,进一步包括:

STP链路层终止当前数据请求的发送,将相应事件上报至SAS控制器的传输层实施发送终止异常处理。

优选地,所述在L_SyncEscape状态下执行状态机跳转和后续业务处理,进一步包括:

如果STP链路层收到SNYC原语,则回到STP链路层L_IDLE空闲状态,SAS控制器持续发送SYNC原语。

优选地,所述在L_SyncEscape状态下执行状态机跳转和后续业务处理,进一步包括:

通过将SEND_X_RDY信号拉低,停止发送X_RDY原语。

优选地,所述在L_SyncEscape状态下执行状态机跳转和后续业务处理,进一步包括:

如果出现物理链路异常,则将所述STP链路层状态机迁移至L_NoCommErr状态,进入物理链路异常处理。

相比于现有技术,本发明具有以下优点:

本发明以最小成本,改善了链路层状态机运转机制,解决了STP场景中链路层状态机处于的死循环问题,完善了SATA链路层对STP场景的支持,对于提升SATA协议的可靠性提供了有效支撑。

本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据现有技术的SAS控制器和SATA设备相连接的结构图。

图2示出了根据现有技术的符合SAS标准协议的STP链路层通信流程图。

图3示出了根据本发明的优选实施例的SATA链路层状态机状态迁移流程图

图4-1和图4-2分别示出了本发明的STP链路层状态机优化方法应用前后的效果对比时序图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明在STP链路层状态机优化方法中,通过定义新的SATA链路层状态机迁移条件和目的状态,改善链路层状态机运转机制,解决图2所述场景中状态机处于HL_SendChkRdy死循环的问题,提供对STP场景的正确支持,保证业务正常进行。

本发明在优选的实施例中,在SATA标准协议的基础上,在HL_SendChkRdy的状态转移表中增加L_SyncEscape状态(第3项),针对STP链路的连接状态的变化来实施优化。

当STP链路层接收到传输层或者SAS链路层的连接关闭消息时(即条件transportlayer or SAS link layer indicates connection close),将状态迁移至L_SyncEscape状态,继续后续状态机跳转和业务处理,防止状态机死循环。

其中,L_SyncEscape状态转移表描述如下。

图3描述了本发明基于图2场景优化后的状态迁移过程:

1.状态S1:L_IDLE,即STP链路层空闲状态,在该状态下SAS控制器持续发送SYNC原语;

2.事件T1:SAS控制器的传输层请求发送FIS至SATA设备,事件结束后进入状态S2;

3.状态S2:HL_SendChkRdy,在该状态下STP链路层发送X_RDY原语请求链路,准备发送数据;

4.事件T2:收到R_RDY原语,SAS控制器开始发送FIS,进入状态S3;

5.状态S3:L_SendSOF,此时STP链路层发送SOF原语,由传输层启动FIS发送过程,FIS发送完成后回到状态S1,即L_IDLE状态;

6.事件T3:收到X_RDY原语,SATA设备同一时刻请求发送FIS,进入状态S5;

7.状态S5:L_RcvWaitFifo,SAS控制器将数据发送权让给SATA设备,SAS控制器准备接收FIS,接收完成后回到L_IDLE状态;

8.事件T4:SAS控制器的传输层请求STP连接关闭,或SAS链路层检测到CLOSE原语,进入状态S4;

9.状态S4:L_SyncEscape,STP链路层终止当前FIS发送请求,停止发送X_RDY,SAS控制器持续发送SYNC原语,上报事件给SAS控制器的传输层实施发送终止异常处理;

10.事件T7:STP链路层收到SNYC原语,回到状态S1;

11.事件T5、T6:物理链路出现异常,进入状态S6;

12.状态S6:L_NoCommErr,进入物理链路异常处理。

在上述实施例中,事件T4和状态S4(L_SyncEscape)的引入,有效防止了链路层发送X_RDY后链路关闭引发的状态机死循环。因为当冲突场景发生时,STP链路层状态机退出HL_SendChkRdy状态,并经过L_SyncEscape状态成功迁移至L_IDLE初始空闲状态,由于状态机实现了闭环操作,避免了死循环问题。

需要说明的是,图3所示的状态机迁移过程仅用于说明而非限定本发明的技术方案。本领域技术人员应当理解,在本发明基础上可以根据实际需要而对磁盘阵列的结构特点以及状态机的事件数量、状态数量等做出容易想到的任意调整,而不应将本发明限于上述示例的具体结构或参数。

本发明结合链路CLOSE场景的示例实现方式对上述优化过程作进一步说明。图4-1和图4-2的信号时序图对比了STP链路层状态机优化前后的效果。

如图4-1所示,STP链路层标准状态机开始于L_IDLE状态,此时STP链路层处于空闲状态,持续发送SYNC原语;当SAS控制器的TX_START_FRAME信号发生拉高事件时,传输层请求发送FIS数据;如果此时将SAS控制器的SEND_X_RDY信号拉高,请求物理层发送X_RDY原语,则进入HL_SendChkRdy状态,STP链路层持续发送X_RDY原语请求链路,准备发送数据;而在HL_SendChkRdy状态中,如果再将SAS控制器的GOT_CLOSE信号拉高,SAS的链路层接收到CLOSE原语;此后,STP链路层状态仍将持续保持在HL_SendChkRdy状态,无法形成闭环回到状态L_IDLE。

如图4-2所示,在本发明优化后的STP链路层状态机中,同样在上述HL_SendChkRdy状态中,如果再将GOT_CLOSE信号拉高,则SAS的链路层接收到CLOSE原语;则将SAS控制器的SEND_X_RDY信号拉低,进入L_SyncEscape状态,此时,STP链路层终止当前FIS发送请求,停止发送X_RDY请求,持续发送SYNC原语;并等待SAS控制器的信号TX_GOT_SYNC的事件,当TX_GOT_SYNC被拉高时,链路关闭,接收SAS链路层上报的SYNC原语,则STP链路层状态机回到L_IDLE状态,即STP链路层保持空闲,持续发送SYNC原语的状态,防止死循环的发生。

由此可见,本发明优化后的STP链路层状态机克服了状态机无法跳出HL_SendChkRdy状态的弊端,保证了后续业务的正确进行。本发明的方法利用既有L_SyncEscape状态,在不引入新状态的基础上以最小成本有效解决了STP链路层状态死锁问题,完善了SATA链路层对STP场景的支持,对于提升SATA协议的可靠性提供了有效支撑。

此外,本领域技术人员可以理解,图4-1和图4-2所示的链路CLOSE场景下的时序仅为举例说明,并不构成对本发明的信号时序的限定。本领域技术人员可以理解,除了链路CLOSE场景之外,本发明的实质方案同样适用于类似的场景,诸如X_RDY和其他链路管理异常冲突的场景。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种主板及其信号转接系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!