支持多磁盘PIO命令并发的STP传输层实现方法技术

技术编号:28373387 阅读:17 留言:0更新日期:2021-05-08 00:00
本发明专利技术提供了一种支持多磁盘PIO命令并发的STP传输层实现方法,当SAS控制器满足第一条件时,将所述SATA传输层状态机从HT_HostIdle状态迁移到HT_DMAOTrans2状态;以及,当SAS控制器满足第二条件时,将所述SATA传输层状态机从HT_ChkTyp状态迁移到所述HT_DMAITrans状态。本发明专利技术改进标准SATA传输层状态机的运转机制,解决磁盘PIO命令并发中的异常,提供对SAS控制器并发控制多SATA设备场景的正确支持,提升系统的吞吐率。

【技术实现步骤摘要】
支持多磁盘PIO命令并发的STP传输层实现方法
本专利技术属于磁盘连接
,特别涉及一种支持多磁盘PIO命令并发的STP传输层实现方法。
技术介绍
SATA(SerialATA)是一种高速串行总线,采用点对点的传输方式,内置数据/命令校验单元,纠错能力强,支持热插拔,具有管脚数量少、数据传输速率快、可靠性高、兼容性好等特性,目前被业界广泛用于存储设备和主机之间的主要I/O接口。SAS(串行连接SCSI)作为新一代SCSI技术,类似SATA技术同样采用串行接口以获得更高的传输速度。同时,SAS设计考虑向下兼容SATA技术,通过STP协议(SATA通道协议)实现SAS控制器和SATA设备之间的互联和数据传输。SAS协议标准中的STP协议规范定义了SAS系统和SATA设备通信技术细节,其中STP的传输层采用SATA标准协议定义的传输层实现为基础。典型的SAS数据存储拓扑结构中,SAS控制器通过一级或多级Expander(磁盘扩展器)扩展支持大规模磁盘的管理。SASExpander中通常集成了STP/SATA桥,完成SAS协议到SATA协议的转换,以兼容SATA磁盘设备连接。图1描述了SAS控制器和多个SATA设备互联时的主要组件。其中SAS控制器作为控制命令和数据读写命令的发起者,负责管理整个存储系统的拓扑结构,发出磁盘数据读写命令,接收设备响应;SASExpander用于扩展存储系统的拓扑结构,内部集成STP/SATA桥以兼容SATA设备连接;STP/SATA桥完成SAS标准中STP协议到SATA协议的转换,帮助SATA设备接入SAS系统;SATA磁盘存储设备,存储业务数据。然而,SATA标准协议在制定之初,并未充分考虑对SAS应用场景的支持,在SAS控制器并发访问多个SATA设备的应用场景下,SATA标准协议的传输层无法正确、高效的完成SAS标准中定义的数据交互过程,导致数据通信失败。为了说明SATA标准传输层在支持SAS的STP应用场景时存在的问题,如图2所示,从传输层角度出发,以PIO写命令为例,描述一个SAS控制器并发访问两个SATA磁盘设备时传输层消息交互的典型场景。当两个SATA设备并发PIO写命令时:H1.1:SAS控制器请求向SATA设备#1写入数据,发送PIO写命令,传输层发送Host-DeviceRegisterFIS(FrameInformationStructure,SATA传输层数据结构);H1.2:SAS控制器请求向SATA设备#2写入数据,发送PIO写命令,传输层发送Host-DeviceRegisterFIS;D1.1:SATA设备#1就绪,准备接收来自SAS控制器的数据,传输层发送PIOSetupFIS;D2.1:SATA设备#2就绪,准备接收来自SAS控制器的数据,传输层发送PIOSetupFIS;H2.1:SAS控制器发送数据给SATA设备#1,传输层发送一帧DataFIS;D1.2:SATA设备#1数据接收完毕,传输层发送D-HRegisterFIS,返回PIO写命令完成状态;H2.2:SAS控制器发送数据给SATA设备#2,传输层发送一帧DataFIS;D2.2:SATA设备#2数据接收完毕,传输层发送D-HRegisterFIS,返回PIO写命令完成状态。容易看出,目前SATA标准传输层在支持多磁盘PIO命令并发的应用场景时存在缺陷。因为根据标准SATA传输层状态机的描述,控制器的传输层由HT_HostIdle状态进入HT_PIOOTrans2状态,实施PIO数据发送的前提条件是前一个接收到的FIS类型为PIOSetupFIS。然而,如图2所示两个SATA设备并发PIO写命令的典型场景,在步骤D1.2,SAS控制器收到SATA设备#1的D-HRegisterFIS后,开始步骤H2.2,即发送数据至SATA设备#2。此时状态机检测到前一个收到的FIS并非PIOSetupFIS,无法启动DataFIS的发送过程,导致状态机持续停留于HT_HostIdle状态,发生死循环。类似地,对于PIO读命令,标准SATA传输层状态机由HT_ChkTyp状态进入HT_PIOITrans1状态,实施PIO数据接收的前提条件是前一个接收到的FIS类型为PIOSetupFIS。然而,在多个SATA设备并发PIO读命令场景下,同样会导致状态机持续停留于HT_ChkTyp状态,发生死循环。除图2所描述的多磁盘场景下PIO写命令并发情况之外,在真实应用场景中,由于D-HRegisterFIS、H-DRegisterFIS、PIOSetupFIS、Rx方向DataFIS、Tx方向DataFIS的交织,导致SATA传输层实际存在多重缺陷。
技术实现思路
本专利技术的目的在于针对现有SATA标准协议传输层存在的缺陷,提出支持多磁盘PIO命令并发的STP传输层实现方法,完善SAS场景下多SATA磁盘并发访问的支持。本专利技术在第一方面提供了一种支持多磁盘PIO命令并发的STP传输层实现方法,包括:当SAS控制器满足第一条件时,将所述SATA传输层状态机从HT_HostIdle状态迁移到HT_DMAOTrans2状态;以及当SAS控制器满足第二条件时,将所述SATA传输层状态机从HT_ChkTyp状态迁移到所述HT_DMAITrans状态。优选地,所述第一条件进一步包括:在所述SATA传输层状态机的HT_HostIdle状态下,检测到应用层数据发送请求。优选地,所述将状态迁移到HT_DMAOTrans2状态之后,进一步包括:启动控制器内部DMA,发送DataFIS至SATA设备。优选地,方法还包括:在所述HT_DMAOTrans2状态下,当数据传输结束时,将状态机迁移到HT_DMAEnd状态,并检查SAS控制器DMA模块是否结束。优选地,所述第二条件进一步包括:在所述SATA传输层状态机的HT_ChkTyp状态下,接收到的FIS类型为DataFIS,且前一个接收到的FIS类型为PIOSetupFIS。优选地,在将状态机迁移到所述HT_DMAITrans状态之后,进一步包括:启动SAS控制器内部DMA模块,接收DataFIS到控制器内部存储单元。优选地,方法还包括:在HT_DMAITrans状态下,当数据传输结束;将所述状态机迁移到迁移到HT_DMAEnd状态,并检查SAS控制器DMA模块是否结束。相比于现有技术,本专利技术具有以下优点:本专利技术改进标准SATA传输层状态机的运转机制,解决PIO命令并发中的各类异常,提供对SAS控制器并发控制多SATA设备场景的正确支持,提升系统的吞吐率。本专利技术的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。<本文档来自技高网
...

【技术保护点】
1.一种支持多磁盘PIO命令并发的STP传输层实现方法,其特征在于,包括:/n当SAS控制器满足第一条件时,将所述SATA传输层状态机从HT_HostIdle状态迁移到HT_DMAOTrans2状态;以及/n当SAS控制器满足第二条件时,将所述SATA传输层状态机从HT_ChkTyp状态迁移到所述HT_DMAITrans状态。/n

【技术特征摘要】
1.一种支持多磁盘PIO命令并发的STP传输层实现方法,其特征在于,包括:
当SAS控制器满足第一条件时,将所述SATA传输层状态机从HT_HostIdle状态迁移到HT_DMAOTrans2状态;以及
当SAS控制器满足第二条件时,将所述SATA传输层状态机从HT_ChkTyp状态迁移到所述HT_DMAITrans状态。


2.根据权利要求1所述的多磁盘PIO命令并发的STP传输层实现方法,其特征在于,所述第一条件进一步包括:
在所述SATA传输层状态机的HT_HostIdle状态下,检测到应用层数据发送请求。


3.根据权利要求1或2所述的多磁盘PIO命令并发的STP传输层实现方法,其特征在于,所述将状态迁移到HT_DMAOTrans2状态之后,进一步包括:
启动控制器内部DMA,发送DataFIS至SATA设...

【专利技术属性】
技术研发人员:宫晓渊张俊磊徐娟申正
申请(专利权)人:无锡众星微系统技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1