CN106598883B - 基于fpga的sas错误状态命令的处理方法及装置 - Google Patents
基于fpga的sas错误状态命令的处理方法及装置 Download PDFInfo
- Publication number
- CN106598883B CN106598883B CN201611033683.6A CN201611033683A CN106598883B CN 106598883 B CN106598883 B CN 106598883B CN 201611033683 A CN201611033683 A CN 201611033683A CN 106598883 B CN106598883 B CN 106598883B
- Authority
- CN
- China
- Prior art keywords
- control command
- order
- error condition
- sas
- condition order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0028—Serial attached SCSI [SAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于FPGA的SAS错误状态命令的处理方法及装置,所述方法包括:接收到所述SAS驱动下发的控制命令;保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;判断所述错误状态命令是否为重传命令;若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。在本发明中,由于使用FPGA模块来完成对SAS协议层模块返回的错误状态命令的解析,避免了SAS驱动与SAS协议层模块复杂的交互过程,因此可以大大缩短命令传输的时间,解决相关技术中错误状态命令的处理效率低的问题。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于FPGA(Field-Programmable GateArray,现场可编程门阵列)的SAS(Serial Attached SCSI,串行小型计算机系统接口)错误状态命令的处理方法及装置。
背景技术
随着数据存储技术的发展,SAS技术应运而生,SAS技术是一种新型的磁盘连接技术,具有较之前磁盘连接技术更好的可用性、扩充性以及更快的速度。SAS控制器为基于SAS技术的磁盘接口控制器,目前,已成为主流的磁盘接口控制器。
SAS控制器通常可以包括SAS协议层模块,其中,SAS协议层模块可以与SAS驱动进行命令交互。SAS驱动可以基于软件(如操作系统)来实现,在与SAS协议层模块进行命令交互的过程中,SAS驱动可以向SAS协议层模块下发控制命令,并处理SAS协议层模块返回的错误状态命令。其中,SAS协议层模块返回的错误状态命令中存在较多用于请求重新发送控制命令的错误状态命令,SAS驱动接收到请求重新发送控制命令的错误状态命令后,可以根据该错误状态命令向SAS协议层模块重新发送控制命令。
在相关技术中,当SAS协议层模块未成功处理SAS驱动发送的控制命令时,SAS协议层模块可以向SAS驱动发送用于请求重新发送控制命令的错误状态命令,由于SAS驱动基于软件来实现,因此,该错误状态命令需要通过总线传输至SAS驱动,类似地,当SAS驱动向SAS协议层模块重新发送控制命令时,该控制命令同样需要通过总线传输至SAS协议层模块,由于通过总线传输命令的过程中需要花费较长的时间,且需要占用较多的带宽,因此,在相关技术中,错误状态命令的处理效率低。
发明内容
有鉴于此,本发明提供一种基于FPGA的SAS错误状态命令的处理方法及装置,来解决相关技术中SAS控制器对错误状态命令的处理效率低的问题。
具体地,本发明是通过如下技术方案实现的:
本发明提供一种基于现场可编程门阵列FPGA的串行小型计算机系统接口SAS错误状态命令的处理方法,应用于SAS控制器的FPGA模块,所述SAS控制器还包括SAS协议层模块,所述SAS协议层模块通过所述FPGA模块与SAS驱动相连,所述方法包括:
接收到所述SAS驱动下发的控制命令;
保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;
接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;
判断所述错误状态命令是否为重传命令;
若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
可选的,所述保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块,包括:
为所述控制命令设置命令标签;
保存携带所述命令标签的控制命令,并将携带所述命令标签的控制命令发送至所述SAS协议层模块;
所述错误状态命令携带所述控制命令的命令标签;所述基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令包括:
基于所述错误状态命令携带的命令标签从保存的控制命令中确定所述控制命令;
基于所述控制命令以及所述错误状态命令构造待重传的控制命令。
可选的,所述判断所述错误状态命令是否为重传命令,包括:
获取所述错误状态命令携带的状态标识信息;
基于所述状态标识信息判断所述错误状态命令是否为重传命令。
可选的,所述状态标识信息包括status信息;所述基于所述状态标识信息判断所述错误状态命令是否为重传命令,包括:
基于所述status信息判断所述错误状态命令是否携带sense data信息;其中,所述sense data信息包括sense key信息、additional sense code信息以及addition sensecode qualifier信息;
若所述错误状态命令携带所述sense data信息,基于所述sense key信息、additional sense code信息以及addition sense code qualifier信息判断所述错误状态命令是否为重传命令。
可选的,所述基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令包括:
基于所述错误状态命令中的sense key信息确定所述错误状态命令的处理等级;
基于所述处理等级和保存的所述控制命令构造待重传的控制命令。
本发明同时提供一种基于现场可编程门阵列FPGA的串行小型计算机系统接口SAS错误状态命令的处理装置,应用于SAS控制器的FPGA模块,所述SAS控制器还包括SAS协议层模块,所述SAS协议层模块通过所述FPGA模块与SAS驱动相连,所述装置包括:
第一接收单元,用于接收到所述SAS驱动下发的控制命令;
第一发送单元,用于保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;
第二接收单元,用于接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;
判断单元,用于判断所述错误状态命令是否为重传命令;
第二发送单元,用于若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
可选的,所述第一发送单元具体用于:
为所述控制命令设置命令标签;
保存携带所述命令标签的控制命令,并将携带所述命令标签的控制命令发送至所述SAS协议层模块;
所述错误状态命令携带所述控制命令的命令标签;所述第二发送单元具体用于:
基于所述错误状态命令携带的命令标签从保存的控制命令中确定所述控制命令;
基于所述控制命令以及所述错误状态命令构造待重传的控制命令。
可选的,所述判断单元具体用于:
获取所述错误状态命令携带的状态标识信息;
基于所述状态标识信息判断所述错误状态命令是否为重传命令。
可选的,所述状态标识信息包括status信息;所述判断单元进一步用于:
基于所述status信息判断所述错误状态命令是否携带sense data信息;其中,所述sense data信息包括sense key信息、additional sense code信息以及addition sensecode qualifier信息;
若所述错误状态命令携带所述sense data信息,基于所述sense key信息、additional sense code信息以及addition sense code qualifier信息判断所述错误状态命令是否为重传命令。
可选的,所述第二发送单元进一步用于:
基于所述错误状态命令中的sense key信息确定所述错误状态命令的处理等级;
基于所述处理等级和保存的所述控制命令构造待重传的控制命令。
在本发明中,SAS控制器上的FPGA模块可以接收到SAS驱动下发的控制命令,然后,FPGA模块可以保存该控制命令,并将该控制命令发送至SAS协议层模块,在接收到SAS协议层模块上报的对应于上述控制命令的错误状态命令后,FPGA模块可以判断该错误状态命令是否为重传命令,并在该错误状态命令为重传命令时,基于该错误状态命令和保存的上述控制命令构造待重传的控制命令,并将构造的待重传的控制命令发送至SAS协议层模块。
在本发明中,使用FPGA模块替代SAS驱动来完成对SAS协议层模块返回的错误状态命令的解析,减少了SAS协议层模块与基于软件实现的SAS驱动之间的交互。由于应用本发明可以避免由SAS驱动对错误状态命令进行解析时,导致的与SAS协议层模块复杂的交互过程,因此可以大大缩短命令传输的时间,解决相关技术中错误状态命令的处理效率低的问题。
附图说明
图1是本发明一实施例示出的一种基于FPGA的SAS错误状态命令的处理方法的流程图;
图2是本发明示出的一种基于FPGA的SAS错误状态命令的处理方法的应用场景图;
图3是本发明基于FPGA的SAS错误状态命令的处理装置的一个实施例框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参见图1,为本发明一实施例示出的一种基于FPGA的SAS错误状态命令的处理方法的流程图。该实施例应用于SAS控制器的FPGA模块,包括以下步骤:
步骤101:接收到所述SAS驱动下发的控制命令。
步骤102:保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块。
请参见图2,为本发明示出的一种基于FPGA的SAS错误状态命令的处理方法的应用场景图。由图2可知,上述SAS控制器可以包括FPGA模块、以及SAS协议层模块,其中,SAS协议层模块可以通过FPGA模块与SAS驱动相连,并可以通过FPGA模块与SAS驱动进行命令交互,上述SAS控制器可以通过SAS扩展器与若干个硬盘进行相连,并对该若干个硬盘进行处理。
由图2同样可知,SAS控制器上的FPGA模块可以包括应用层子模块,其中,应用层子模块可以包括Data Cache子模块、Build_cmd子模块以及Error_handle子模块。关于应用层子模块、Data Cache子模块、Build_cmd子模块以及Error_handle子模块的具体内容会在下面的实施例中详述,本发明在此先暂不说明。
在本发明中,FPGA模块可以接收到SAS驱动下发至SAS协议层模块的控制命令,然后,FPGA模块可以保存该控制命令,并将该控制命令发送至SAS协议层模块。
当然,在本发明中,FPGA模块在保存上述控制命令时,可以保存该控制命令携带的数据,并在将该控制命令发送至SAS协议层模块时,将该控制命令携带的数据发送至SAS协议层模块。
在一个实施例中,FPGA模块在接收到SAS驱动下发至SAS协议层模块的控制命令后,可以为该控制命令设置命令标签,然后,FPGA模块可以保存携带该命令标签的控制命令,并将携带该命令标签的控制命令发送至SAS协议层模块。
在示出的一个实施例中,可以假设FPGA接收到的上述控制命令为命令A,然后,FPGA可以为命令A设置对应的命令标签A′,在设置了命令标签A′后,FPGA模块可以保存命令标签A′与命令A的对应关系。
在保存了命令标签A′与命令A的对应关系后,FPGA模块可以将命令标签A′添加至命令A的数据部分,然后,将携带命令标签A′的控制命令发送至SAS协议层模块。
需要说明的是,本发明对命令标签的大小以及形式等不做限制,理论上只要满足标识每条控制命令的唯一性即可。
在本发明示出的一个实施例中,如图2所示,FPGA模块可以包括应用层子模块,其中,应用层子模块可以对上述控制命令以及控制命令携带的数据进行保存。具体地,应用层子模块可以包括Data Cache子模块。应用层子模块可以基于Data Cache子模块对上述控制命令以及上述控制命令携带的数据进行保存。
步骤103:接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令。
步骤104:判断所述错误状态命令是否为重传命令。
在本发明中,FPGA模块在向SAS协议层模块发送控制命令后,可以接收到SAS协议层模块上报的对应于该控制命令的错误状态命令。然后,FPGA模块可以判断该错误状态命令是否为重传命令。
在一个实施例中,FPGA模块可以在接收到SAS协议层模块上报的对应于该控制命令的错误状态命令后,从该错误状态命令中获取状态标识信息,其中,该状态标识信息可以包括status信息,然后,FPGA模块可以基于该状态标识信息判断该错误状态命令是否为重传命令。
在一个示出的实施例中,FPGA模块基于上述状态标识信息判断上述错误状态命令是否为重传命令的过程可以为:
在获取了状态标识信息后,FPGA模块可以先确定状态标识信息中的status信息,例如,可以为0x01,然后,FPGA模块可以根据该status信息从表1所示的status状态信息对应表中确定status的状态:
Status信息 | Status状态 |
0x01 | CHECK_CONDITION |
0x02 | CONDITION_GOOD |
0x04 | BUSY |
表1
从表1中可知,当Status信息为0x01时,对应的status状态可以为CHECK_CONDITION,此状态可以表示上述错误状态命令携带sense_data信息,需要FPGA模块基于sense_data信息来进一步判断上述错误状态命令是否为重传命令;当Status信息为0x02时,对应的status状态可以为CONDITION_GOOD,此状态可以表示与该错误状态命令对应的控制命令已被SAS协议层模块丢弃;当Status信息为0x04时,对应的status状态可以为BUSY,此状态可以表示SAS协议层模块在接收与该错误状态命令对应的控制命令时处于繁忙状态,无法处理该控制命令,需要延迟重试。
需要说明的是,表1中仅示出了status状态信息对应表的部分表项。
在确定了错误状态命令携带的status的状态为CHECK_CONDITION后,FPGA模块可以获取错误状态命令携带的sense_data信息,并基于该sense_data信息来判断该错误状态命令是否为重传命令。
在一个实施例中,错误状态命令携带的sense data信息可以包括sense key信息、additional sense code信息(可简称为“asc信息”)以及addition sense code qualifier信息(可简称为“ascq信息”)。FPGA模块可以基于sense key信息、asc信息以及ascq信息来判断上述错误状态命令是否为重传命令。
请参见表2以及表3,分别为sense key状态信息对应表以及asc和ascq状态信息对应表的部分表项:
Sense key信息 | Sense key状态 |
2h | NOT READY |
4h | HARDWARE ERROR |
Bh | ABORTED COMMAND |
表2
Asc信息 | Ascq信息 | asc和ascq状态 |
29h | 02h | BUS DEVICE RESET FUNCTION OCCURRED |
19h | 02h | DEFECT LIST ERROR IN PRIMARY LIST |
4bh | 04h | NAK RECEIVED |
表3
由表2和表3可知,在确定了上述Sense key信息为2h,asc信息为29h以及ascq信息为02h后,FPGA模块可以确定Sense key的状态以及asc和ascq状态分别为NOT READY以及BUS DEVICE RESET FUNCTION OCCURRED,此时,FPGA模块可以基于Sense key的状态以及asc和ascq状态确定对应的SAS协议层模块的BUS总线被复位了,因此,与上述错误状态命令对应的控制命令并没有被对应的SAS协议层模块处理,故与上述错误状态命令对应的控制命令可以重传至SAS协议层模块,FPGA模块可以确定上述错误状态命令为重传命令。
由表2和表3同样可知,在确定了上述Sense key信息为4h,asc信息为19h以及ascq信息为02h后,FPGA模块可以确定Sense key的状态以及asc和ascq状态分别为HARDWAREERROR以及DEFECT LIST ERROR IN PRIMARY LIST,此时,FPGA模块可以确定对应的SAS协议层模块在启动自检的过程中,发现硬盘出现问题,硬盘的主要的配置信息发生错误,此时,对应的硬盘无法使用,SAS协议层模块需要更换新的硬盘。此时,FPGA模块可以确定上述错误状态命令不为重传命令。
由表2和表3同样可知,在确定了上述Sense key信息为Bh,asc信息为4bh以及ascq信息为04h后,FPGA模块可以确定Sense key的状态以及asc和ascq状态分别为ABORTEDCOMMAND以及NAK RECEIVED,此时,FPGA模块可以确定对应的SAS协议层模块接收到了与上述错误状态命令对应的控制命令,但是,SAS协议层模块接收到的控制命令是错误的,需要重新接收上述控制命令。此时,FPGA模块可以确定该错误状态命令为重传命令。
在本发明示出的一个实施例中,如图2所示,FPGA模块的应用层子模块可以判断SAS协议层模块上报的对应于控制命令的错误状态命令是否为重传命令。具体地,应用层子模块可以包括Error_handle子模块,应用层子模块可以基于Error_handle子模块来判断上述错误状态命令是否为重传命令。
步骤105:若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
在本发明中,在确定了上述错误状态命令为重传命令后,FPGA模块可以基于上述错误状态命令和保存的上述控制命令构造待重传的控制命令,并将该待重传的控制命令发送至上述SAS协议层模块。
在一个实施例中,上述错误状态命令可以携带与上述控制命令对应的命令标签,FPGA模块在确定了上述错误状态命令为重传命令后,可以基于该错误状态命令携带的命令标签从保存的控制命令中确定与错误状态命令对应的控制命令,然后,FPGA模块可以基于该控制命令以及错误状态命令构造待重传的控制命令。
具体地,FPGA模块可以在确定与错误状态命令对应的控制命令后,基于错误状态命令中的sense key信息确定与该错误状态命令对应的处理等级,然后基于该处理等级和确定的控制命令构造待重传的控制命令。其中,该处理等级可以包括第一处理等级以及第二处理等级。
需要说明的是,不同的处理等级可以对应不同的处理方式,例如,当处理等级为第一处理等级时,FPGA模块可以获取保存的与上述错误状态命令对应的控制命令,并基于该控制命令的全部数据构造待重传的控制命令;当处理等级为第二处理等级时,FPGA模块可以获取保存的与上述错误状态命令对应的控制命令,并基于该控制命令的部分数据构造待重传的控制命令,其中,该控制命令的部分数据可以基于上述错误状态命令的数据来确定。
在示出的一个实施例中,可以假设上述错误状态命令携带的sense key的状态为NOT READY,则由此状态可以确定对应的SAS协议层模块并没有处理与该错误状态命令对应的控制命令,此时,FPGA模块可以确定与该错误状态命令对应的处理等级为第一处理等级,然后,FPGA模块可以基于对应的控制命令的全部数据构造待重传的控制命令,并将该待重传的控制命令发送至上述SAS协议层模块。
在示出的另一个实施例中,可以假设上述错误状态命令携带的sense key的状态为NAK RECEIVED,则由此状态可以确定对应的SAS协议层模块已经处理了上述控制命令的部分数据,此时,FPGA模块可以确定与该错误状态命令对应的处理等级为第二处理等级,然后,FPGA模块可以基于上述错误状态命令从对应的控制命令中获取SAS协议层模块未处理的数据,并基于该未处理的数据构造待重传的控制命令,并将该待重传的控制命令发送至上述SAS协议层模块。
在本发明示出的一个实施例中,如图2所示,FPGA模块的应用层子模块可以在确定上述错误状态命令为重传命令后,基于上述错误状态命令和保存的控制命令构造待重传的控制命令。具体地,上述应用层子模块可以包括Build_cmd子模块,应用层子模块可以基于Build_cmd子模块来构造基于上述错误状态命令和保存的控制命令的待重传控制命令。
在本发明中,SAS控制器上的FPGA模块可以接收到SAS驱动下发的控制命令,然后,FPGA模块可以保存该控制命令,并将该控制命令发送至SAS协议层模块,在接收到SAS协议层模块上报的对应于上述控制命令的错误状态命令后,FPGA模块可以判断该错误状态命令是否为重传命令,并在该错误状态命令为重传命令时,基于该错误状态命令和保存的上述控制命令构造待重传的控制命令,并将构造的待重传的控制命令发送至SAS协议层模块。
在本发明中,使用FPGA模块替代SAS驱动来完成对SAS协议层模块返回的错误状态命令的解析,减少了SAS协议层模块与基于软件实现的SAS驱动之间的交互。由于应用本发明可以避免由SAS驱动对错误状态命令进行解析时,导致的与SAS协议层模块复杂的交互过程,因此可以大大缩短命令传输的时间,解决相关技术中错误状态命令的处理效率低的问题。
基于与上述方法同一的发明构思,本发明实施例还提供了基于FPGA的SAS错误状态命令的处理装置的实施例。
如图3所示,为本发明根据一示例性实施例示出的一种基于FPGA的SAS错误状态命令的处理装置的框图。
该装置可以包括:第一接收单元310、第一发送单元320、第二接收单元330、判断单元340以及第二发送单元350。
其中,第一接收单元310,用于接收到所述SAS驱动下发的控制命令;
第一发送单元320,用于保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;
第二接收单元330,用于接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;
判断单元340,用于判断所述错误状态命令是否为重传命令;
第二发送单元350,用于若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
在一个可选的实现方式中,所述第一发送单元320可以具体用于:
为所述控制命令设置命令标签;
保存携带所述命令标签的控制命令,并将携带所述命令标签的控制命令发送至所述SAS协议层模块;
所述错误状态命令携带所述控制命令的命令标签;所述第二发送单元350具体用于:
基于所述错误状态命令携带的命令标签从保存的控制命令中确定所述控制命令;
基于所述控制命令以及所述错误状态命令构造待重传的控制命令。
在一个可选的实现方式中,所述判断单元340可以具体用于:
获取所述错误状态命令携带的状态标识信息;
基于所述状态标识信息判断所述错误状态命令是否为重传命令。
在一个可选的实现方式中,所述状态标识信息包括status信息;所述判断单元340可以进一步用于:
基于所述status信息判断所述错误状态命令是否携带sense data信息;其中,所述sense data信息包括sense key信息、additional sense code信息以及addition sensecode qualifier信息;
若所述错误状态命令携带所述sense data信息,基于所述sense key信息、additional sense code信息以及addition sense code qualifier信息判断所述错误状态命令是否为重传命令。
在一个可选的实现方式中,所述第二发送单元350可以进一步用于:
基于所述错误状态命令中的sense key信息确定所述错误状态命令的处理等级;
基于所述处理等级和保存的所述控制命令构造待重传的控制命令。
在本发明中,SAS控制器上的FPGA模块可以接收到SAS驱动下发的控制命令,然后,FPGA模块可以保存该控制命令,并将该控制命令发送至SAS协议层模块,在接收到SAS协议层模块上报的对应于上述控制命令的错误状态命令后,FPGA模块可以判断该错误状态命令是否为重传命令,并在该错误状态命令为重传命令时,基于该错误状态命令和保存的上述控制命令构造待重传的控制命令,并将构造的待重传的控制命令发送至SAS协议层模块。
在本发明中,使用FPGA模块替代SAS驱动来完成对SAS协议层模块返回的错误状态命令的解析,减少了SAS协议层模块与基于软件实现的SAS驱动之间的交互。由于应用本发明可以避免由SAS驱动对错误状态命令进行解析时,导致的与SAS协议层模块复杂的交互过程,因此可以大大缩短命令传输的时间,解决相关技术中错误状态命令的处理效率低的问题。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种基于现场可编程门阵列FPGA的串行小型计算机系统接口SAS错误状态命令的处理方法,应用于SAS控制器的FPGA模块,所述SAS控制器还包括SAS协议层模块,所述SAS协议层模块通过所述FPGA模块与SAS驱动相连,其特征在于,所述方法包括:
接收到所述SAS驱动下发的控制命令;
保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;
接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;
判断所述错误状态命令是否为重传命令;
若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
2.根据权利要求1所述的方法,其特征在于,所述保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块,包括:
为所述控制命令设置命令标签;
保存携带所述命令标签的控制命令,并将携带所述命令标签的控制命令发送至所述SAS协议层模块;
所述错误状态命令携带所述控制命令的命令标签;所述基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令包括:
基于所述错误状态命令携带的命令标签从保存的控制命令中确定所述控制命令;
基于所述控制命令以及所述错误状态命令构造待重传的控制命令。
3.根据权利要求1所述的方法,其特征在于,所述判断所述错误状态命令是否为重传命令,包括:
获取所述错误状态命令携带的状态标识信息;
基于所述状态标识信息判断所述错误状态命令是否为重传命令。
4.根据权利要求3所述的方法,其特征在于,所述状态标识信息包括status信息;所述基于所述状态标识信息判断所述错误状态命令是否为重传命令,包括:
基于所述status信息判断所述错误状态命令是否携带sense data信息;其中,所述sense data信息包括sense key信息、additional sense code信息以及addition sensecode qualifier信息;
若所述错误状态命令携带所述sense data信息,基于所述sense key信息、additionalsense code信息以及addition sense code qualifier信息判断所述错误状态命令是否为重传命令。
5.根据权利要求4所述的方法,其特征在于,所述基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令包括:
基于所述错误状态命令中的sense key信息确定所述错误状态命令的处理等级;
基于所述处理等级和保存的所述控制命令构造待重传的控制命令。
6.一种基于现场可编程门阵列FPGA的串行小型计算机系统接口SAS错误状态命令的处理装置,应用于SAS控制器的FPGA模块,所述SAS控制器还包括SAS协议层模块,所述SAS协议层模块通过所述FPGA模块与SAS驱动相连,其特征在于,所述装置包括:
第一接收单元,用于接收到所述SAS驱动下发的控制命令;
第一发送单元,用于保存所述控制命令,并将所述控制命令发送至所述SAS协议层模块;
第二接收单元,用于接收到所述SAS协议层模块上报的对应于所述控制命令的错误状态命令;
判断单元,用于判断所述错误状态命令是否为重传命令;
第二发送单元,用于若所述错误状态命令为重传命令,基于所述错误状态命令和保存的所述控制命令构造待重传的控制命令,并将所述待重传的控制命令发送至所述SAS协议层模块。
7.根据权利要求6所述的装置,其特征在于,所述第一发送单元具体用于:
为所述控制命令设置命令标签;
保存携带所述命令标签的控制命令,并将携带所述命令标签的控制命令发送至所述SAS协议层模块;
所述错误状态命令携带所述控制命令的命令标签;所述第二发送单元具体用于:
基于所述错误状态命令携带的命令标签从保存的控制命令中确定所述控制命令;
基于所述控制命令以及所述错误状态命令构造待重传的控制命令。
8.根据权利要求6所述的装置,其特征在于,所述判断单元具体用于:
获取所述错误状态命令携带的状态标识信息;
基于所述状态标识信息判断所述错误状态命令是否为重传命令。
9.根据权利要求8所述的装置,其特征在于,所述状态标识信息包括status信息;所述判断单元进一步用于:
基于所述status信息判断所述错误状态命令是否携带sense data信息;其中,所述sense data信息包括sense key信息、additional sense code信息以及addition sensecode qualifier信息;
若所述错误状态命令携带所述sense data信息,基于所述sense key信息、additionalsense code信息以及addition sense code qualifier信息判断所述错误状态命令是否为重传命令。
10.根据权利要求9所述的装置,其特征在于,所述第二发送单元进一步用于:
基于所述错误状态命令中的sense key信息确定所述错误状态命令的处理等级;
基于所述处理等级和保存的所述控制命令构造待重传的控制命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2016109435027 | 2016-11-01 | ||
CN201610943502 | 2016-11-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598883A CN106598883A (zh) | 2017-04-26 |
CN106598883B true CN106598883B (zh) | 2019-09-17 |
Family
ID=58592653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611033683.6A Active CN106598883B (zh) | 2016-11-01 | 2016-11-14 | 基于fpga的sas错误状态命令的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598883B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402723B (zh) * | 2017-07-25 | 2020-05-12 | 北京腾凌科技有限公司 | 读写数据的方法及存储系统 |
KR20200065929A (ko) * | 2018-11-30 | 2020-06-09 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042632A (zh) * | 2006-03-20 | 2007-09-26 | 株式会社日立制作所 | 控制物理链接分配的计算机系统及方法 |
CN102447675A (zh) * | 2010-09-30 | 2012-05-09 | 宏正自动科技股份有限公司 | 远端数据传输方法及使用此方法的虚拟媒体系统 |
CN103530257A (zh) * | 2013-10-18 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种动态自适应传输路径优化sas信号质量的方法 |
CN104267911A (zh) * | 2014-09-18 | 2015-01-07 | 湖南喜玛拉云技术有限公司 | 数据存储控制器及其数据处理方法 |
CN104601711A (zh) * | 2015-01-27 | 2015-05-06 | 曙光云计算技术有限公司 | 用于云服务器的基于fpga的数据存储方法和系统 |
CN105138469A (zh) * | 2015-08-28 | 2015-12-09 | 北京腾凌科技有限公司 | 一种数据读写方法以及主板 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4383148B2 (ja) * | 2003-11-25 | 2009-12-16 | 株式会社日立製作所 | 処理オフロード機能モジュールを備えた磁気ディスクアレイ装置 |
-
2016
- 2016-11-14 CN CN201611033683.6A patent/CN106598883B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042632A (zh) * | 2006-03-20 | 2007-09-26 | 株式会社日立制作所 | 控制物理链接分配的计算机系统及方法 |
CN102447675A (zh) * | 2010-09-30 | 2012-05-09 | 宏正自动科技股份有限公司 | 远端数据传输方法及使用此方法的虚拟媒体系统 |
CN103530257A (zh) * | 2013-10-18 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种动态自适应传输路径优化sas信号质量的方法 |
CN104267911A (zh) * | 2014-09-18 | 2015-01-07 | 湖南喜玛拉云技术有限公司 | 数据存储控制器及其数据处理方法 |
CN104601711A (zh) * | 2015-01-27 | 2015-05-06 | 曙光云计算技术有限公司 | 用于云服务器的基于fpga的数据存储方法和系统 |
CN105138469A (zh) * | 2015-08-28 | 2015-12-09 | 北京腾凌科技有限公司 | 一种数据读写方法以及主板 |
Also Published As
Publication number | Publication date |
---|---|
CN106598883A (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102959502B (zh) | 在系统中提供异步事件通知的方法 | |
US7024591B2 (en) | Mechanism for enabling enhanced fibre channel error recovery across redundant paths using SCSI level commands | |
DE69728178T2 (de) | Vorrichtung und verfahren zur fernen datenrückgewinnung | |
EP1292893B1 (en) | Method and apparatus for data replication using scsi over tcp/ip | |
US7043578B2 (en) | Method, system, and program for processing a packet including I/O commands and data | |
US20040107304A1 (en) | Methods and systems for efficient connection of I/O devices to a channel-based switched fabric | |
US7941545B2 (en) | System and article of manufacture for establishing and requesting status on a computational resource | |
US7548998B2 (en) | Modifying host input/output (I/O) activity to allow a storage drive to which I/O activity is directed to access requested information | |
CN112217906A (zh) | 结合ai和rpa的通信方法、装置、设备及存储介质 | |
CN106598883B (zh) | 基于fpga的sas错误状态命令的处理方法及装置 | |
CN110233881A (zh) | 业务请求处理方法、装置、设备及存储介质 | |
WO2019019864A1 (zh) | 嵌入式自助终端的通信系统、方法及装置 | |
WO2017088494A1 (zh) | 一种链路管理方法及装置 | |
CN105809817A (zh) | 一种atm故障监控方法及装置 | |
CN104010023B (zh) | 普通文件传输协议tftp加速文件重试选项 | |
CN105808364A (zh) | 融合PC系统和android系统的双系统通信方法和系统 | |
TWI273420B (en) | Data processing method and system based on a serial transmission interface | |
US7757242B2 (en) | Apparatus, system, and method for asynchronous outbound transaction event processing into an SAP application using service oriented architecture | |
CN106990916A (zh) | 一种读写请求的处理方法及装置 | |
CN113852610B (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
CN105721400A (zh) | 数据完整性传输方法及其pos机和数据加密服务器 | |
CN105955916B (zh) | 一种写立即数的方法、设备及系统 | |
CN114090979A (zh) | 一种基于小程序的跳绳管理方法及装置 | |
CN103078720A (zh) | 报文处理方法及装置 | |
CN105871917A (zh) | 传输控制协议tcp连接调度的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |