固态硬盘的连接处理方法、装置和系统转让专利

申请号 : CN201010581108.6

文献号 : CN102043592B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张靖余夕亮张昆

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明公开了一种SSD的连接处理方法、SSD和通信系统。本发明实施例采用在建立SSD与主机之间的连接时,建立新命令队列和预备命令队列,然后利用这些队列来执行主机命令,在主机命令执行完毕后并不直接关闭连接,而是在确定预备命令队列为空时才关闭连接,从而大大减少了连接的建立和关闭的次数,有效提高了SSD的IOPS,有利于SSD性能的提高。

权利要求 :

1.一种固态硬盘的连接处理方法,其特征在于,包括:固态硬盘建立与主机之间的连接,并建立新命令队列和预备命令队列;

接收所述主机发送的主机命令,将所述主机命令放入新命令队列中;

执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,以便将执行结果返回给主机;

在确定所述预备命令队列为空时,关闭所述连接;

其中,所述执行所述新命令队列中的主机命令包括:根据预置策略从新命令队列中调出需要执行的主机命令,或者,按照主机命令进入新命令队列的时间先后顺序调出需要执行的主机命令;执行调出的主机命令。

2.根据权利要求1所述的方法,其特征在于,还包括:在确定所述连接达到预置维持时间时,关闭所述连接。

3.根据权利要求2所述的方法,其特征在于,所述在确定所述连接达到预置维持时间时,关闭所述连接之后还包括:如果新命令队列中还有主机命令,则继续执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机;

如果预备命令队列中不为空,则在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机。

4.根据权利要求1所述的方法,其特征在于,所述根据预置策略从新命令队列中调出需要执行的主机命令包括:根据预置的主机命令优先权的高低或主机命令类型从新命令队列中调出需要执行的主机命令。

5.根据权利要求1至4所述的任一种方法,其特征在于,所述建立固态硬盘与主机之间的连接包括:通过串行连接小型计算机系统接口SAS建立固态硬盘与主机之间的连接。

6.一种固态硬盘的连接处理装置,其特征在于,包括:建立单元,用于建立固态硬盘与主机之间的连接,并建立新命令队列和预备命令队列;

接收单元,用于接收所述主机发送的主机命令,将所述主机命令放入建立单元建立的新命令队列中;

执行单元,用于执行接收单元放入新命令队列中的主机命令,并将执行结果放入建立单元建立的预备命令队列中,以便将执行结果返回给主机;

关闭单元,用于在确定所述预备命令队列为空时,关闭建立单元建立的所述连接;

所述执行单元包括调用子单元和执行子单元;

调用子单元,用于根据预置策略从新命令队列中调出需要执行的主机命令,或者,按照主机命令进入新命令队列的时间先后顺序调出需要执行的主机命令;

执行子单元,用于执行调用子单元所调出的主机命令,并将执行结果放入建立单元建立的预备命令队列中,以便将执行结果返回给主机。

7.根据权利要求6所述的固态硬盘的连接处理装置,其特征在于,建立单元,具体用于通过串行连接小型计算机系统接口SAS建立固态硬盘与主机之间的连接。

8.根据权利要求6所述的固态硬盘的连接处理装置,其特征在于,所述关闭单元,还用于在确定所述连接达到预置维持时间时,关闭建立单元建立的所述连接。

9.根据权利要求6所述的固态硬盘的连接处理装置,其特征在于,所述调用子单元,具体用于根据预置的主机命令优先权的高低或主机命令类型从新命令队列中调出需要执行的主机命令。

说明书 :

固态硬盘的连接处理方法、装置和系统

技术领域

[0001] 本发明涉及通信技术领域,具体涉及一种固态硬盘(SSD,solid state disk)的连接处理方法、SSD和通信系统。

背景技术

[0002] 串行连接小型计算机系统接口(SAS,Serial Attached SCSI)是新一代的小型计算机系统接口(SCSI,Small Computer System Interface)技术,是并行SCSI接口之后开发出的全新接口。由于SAS在传输速度、可靠性以及兼容性方面具有等较大的优势,因此,被广泛地应该在各种存储设备上,比如SSD。
[0003] 由于SAS具有支持多设备连接的特点,因此SAS每次在启动器(比如主机)与目标器(比如SSD)之间进行交互前都需要先建立连接。其中,该交互包括下发命令、传送数据或返回响应等。由于传统磁盘寻道时间会比较长(通常是10ms),因此在传统的SAS系统架构中,通常主机在向磁盘发送一个命令后会立即关闭连接,然后打开与其他盘的连接,与其它盘进行交互,等该磁盘寻道完毕,准备好数据后,才再次建立连接以进行数据传输。
[0004] 在对现有技术的研究和实践过程中,本发明的发明人发现,这种频繁地打开连接和关闭连接的操作对于高性能的SSD来说,是巨大的开销,不利于SSD性能的提升。

发明内容

[0005] 本发明实施例提供一种SSD的连接处理方法、SSD和通信系统,可以提高SSD性能。
[0006] 一种SSD的连接处理方法,包括:
[0007] 建立SSD与主机之间的连接,并建立新命令队列和预备命令队列;
[0008] 接收所述主机发送的主机命令,将所述主机命令放入新命令队列中;
[0009] 执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,以便将执行结果返回给主机;
[0010] 在确定所述预备命令队列为空时,关闭所述连接。
[0011] 一种SSD,包括:
[0012] 建立单元,用于建立SSD与主机之间的连接,并建立新命令队列和预备命令队列;
[0013] 接收单元,用于接收所述主机发送的主机命令,将所述主机命令放入建立单元建立的新命令队列中;
[0014] 执行单元,用于执行接收单元放入新命令队列中的主机命令,并将执行结果放入建立单元建立的预备命令队列中,以便将执行结果返回给主机;
[0015] 关闭单元,用于在确定所述预备命令队列为空时,关闭建立单元建立的所述连接。
[0016] 一种通信系统,其特征在于,包括主机和本发明实施例提供的任一种SSD;
[0017] 所述主机,用于发送主机命令给SSD。
[0018] 本发明实施例采用在建立SSD与主机之间的连接时,建立不同的新命令队列和预备命令队列,然后利用这些队列来执行主机命令,在主机命令执行完毕后并不直接关闭连接,而是在确定连接达到预置维持时间或预备命令队列为空时才关闭连接,从而大大减少了连接的建立和关闭的次数,有效提高了SSD每秒完成输入/输出(I/O,Input/Output)的次数(IOPS,I/O Per Second),有利于SSD性能的提高。

附图说明

[0019] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020] 图1是本发明实施例一提供的方法的流程图;
[0021] 图2a是本发明实施例中命令队列执行场景示意图;
[0022] 图2b是本发明实施例二提供的方法的流程图;
[0023] 图3a是本发明实施例提供的SSD的结构示意图;
[0024] 图3b是本发明实施例提供的SSD的另一结构示意图;
[0025] 图4是本发明实施例提供的通信系统的结构示意图。

具体实施方式

[0026] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027] 本发明实施例提供一种SSD的连接处理方法、SSD和通信系统。以下分别进行详细说明。
[0028] 实施例一、
[0029] 本实施例将从SSD的角度进行描述。
[0030] 如图1所示,具体流程可以如下:
[0031] 101、建立SSD与主机之间的连接,并为该连接建立相应的新命令队列和预备(ready)命令队列;其中,新命令队列用于存放从主机接收的未被执行的主机命令,预备命令队列用于存放主机命令的执行结果,该执行结果尚未给主机返回响应。
[0032] 由于SAS具有支持多设备连接的特点,因此SSD可以通过SAS与多个主机建立连接,具体实施时,可以通过预置规则来控制各个主机与SSD建立连接的时机。例如,该预置规则可以为:
[0033] 建立SSD和第一主机(称为主机1)的连接A,维持连接A,并建立SSD和第二主机(称为主机2)的连接B;或者,
[0034] 建立SSD和第一主机(称为主机1)的连接A,在关闭连接A后,才建立SSD和第二主机(称为主机2)的连接B,等等。
[0035] 其中,建立SSD与主机之间的连接具体可以如下:
[0036] 接收主机发送的连接建立请求;根据接收到的连接建立请求建立SSD与该主机之间的连接。
[0037] 102、利用建立好的连接,接收该主机发送的主机命令,将主机命令放入步骤101中建立的新命令队列中;具体的主机命令类型和格式可参见现有技术,在此不再赘述。
[0038] 103、执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,以便将执行结果返回给主机;
[0039] 例如,可以按照主机命令进入新命令队列的时间先后顺序调出需要执行的主机命令,然后执行该调出的主机命令,并将执行结果放入预备命令队列中;或者,[0040] 也可以根据预置策略从新命令队列中调出需要执行的主机命令,然后执行该调出的主机命令,并将执行结果放入预备命令队列中,等等。
[0041] 其中,预置策略可以是关于预先的主机命令优先权的设置,比如,主机命令A具有最高优先权,主机命令B具有中等优先权,而主机命令C的优先权最低,则SSD在执行命令前,会先遍历新命令队列,然后按照优先权的高低执行这些主机命令:先调出主机命令A,执行完毕后,再调出主机命令B,执行完毕后,才调出主机命令C进行执行,依此类推。
[0042] 该预置策略还可以是关于主机命令类型的设置,比如,A类型的主机命令优先处理,而B类型的主机命令则可以稍缓处理,等等。
[0043] 104、在确定预备命令队列为空时,关闭该连接;
[0044] 例如,在预备命令队列为空时,发送完成(done)指令给主机,接收主机返回的关闭指令,根据接收到的关闭指令关闭该连接。
[0045] 可选的,除此之外,该方法还可以包括:在确定该连接达到预置维持时间时,关闭该连接;即在预备命令队列不为空时,连接达到预置维持时间的情况下,也可以关闭该连接。
[0046] 其中,维持时间可以由用户根据实际应用的需要进行设置。该维持时间是一种超时机制。之所以设置该维持时间是因为SAS接口是一种虚电路连接,只有在主机和固态硬盘通信时才会建立连接,因此,为了避免由于长时间占用连接,而对其他主机访问固态硬盘造成影响,设置了该超时机制,使得在预置的维持时间达到时,不管通信是否完成,都要关闭连接,如果还需要继续通信,则可以再次打开连接进行通信。另外,还需说明的是,预备命令队列作为命令执行结果的缓存,与该预置的维持时间并不矛盾,如果预备命令队列为空,则可以关闭连接,无需判断预置维持时间是否到达,这样其他主机就可以和固态硬盘建立连接以进行通信。
[0047] 因为预备命令队列中的执行结果都会返回给主机,所以如果预备命令队列为空,则表示目前与该预备命令队列相关的所有主机命令都执行完毕,所以可以关闭与该主机的连接。需说明的是,如果预置维持时间到了,即使此时新命令队列或预备命令队列中还有主机命令,也会关闭与该主机的连接;关闭连接后,SSD可以执行如下操作:
[0048] (1)如果新命令队列中还有主机命令,则SSD继续执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机,比如,可以如下:
[0049] 等待下次主机发起命令请求建立连接,然后将预备命令队列中的执行结果返回给主机;或者,
[0050] SSD也可以主动建立与主机的连接,将预备命令队列中的执行结果返回给主机。
[0051] (2)如果预备命令队列中不为空,则SSD可以在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机;比如,可以如下:
[0052] SSD可以在等待下次主机发起命令请求建立连接后,将预备命令队列中的执行结果返回给主机;或者,
[0053] SSD也可以主动建立与主机的连接,将预备命令队列中的执行结果返回给主机。
[0054] 由上可知,本实施例采用在建立SSD与主机之间的连接时,建立新命令队列和预备命令队列,然后利用这些队列来执行主机命令,在主机命令执行完毕后并不直接关闭连接,而是在确定连接达到预置维持时间或预备命令队列为空时才关闭连接,从而大大减少了连接的建立和关闭的次数,有效提高了SSD的IOPS,有利于SSD性能的提高。
[0055] 实施例二、
[0056] 根据实施例一所描述的方法,以下将举例作进一步详细说明。
[0057] SSD通过SAS与多个主机建立连接,并分别为各个主机建立新命令队列和预备命令队列,当主机下发主机命令给SSD时,SSD的命令接收模块接收这些主机命令,并将接收到的主机命令放入相应的主机的新命令队列中,由SSD的命令执行模块从该新命令队列中调用需要的主机命令进行执行,并将执行结果放入相应主机的预备命令队列中,后续可以通过SSD的命令接收模块返回命令响应给相应的主机,在执行完主机命令后,SSD并不会立即断开与相应主机的连接,而是在确定该连接达到预置维持时间或预备命令队列为空时,才关闭该连接。
[0058] 例如,参见图2a,SSD通过SAS与主机1、主机2......主机n建立连接,并分别为各个主机建立新命令队列和预备命令队列:主机1的新命令队列和预备命令队列、主机2的新命令队列和预备命令队列......主机n的新命令队列和预备命令队列,当主机1下发主机命令给SSD时,SSD的命令接收模块接收该主机命令,由于该主机命令是由主机1发送的,于是SSD的命令接收模块将该主机命令放入主机1的新命令队列中,此后,SSD的命令执行模块从主机1的新命令队列中调用该主机命令进行执行,并将执行结果放入主机1的预备命令队列中,通过SSD的命令接收模块返回命令相应给主机1,在执行完该主机命令后,SSD继续维持与主机1的连接,直至在确定该连接达到预置维持时间或预备命令队列为空时,SSD才发送done指令给主机1,在接收到主机1返回的关闭(close)指令后,SSD关闭与主机1的连接。
[0059] 以下将对SSD与主机之间的连接处理流程进行说明。参见图2b,为了描述方便,以下仅以SSD与其中的一个主机的连接为例进行说明,具体如下:
[0060] 201、主机发送连接建立请求给SSD,比如,主机发送连接请求消息(open_req)给SSD。
[0061] 202、SSD接收该连接建立请求,建立SSD与该主机之间的连接,然后执行步骤203;
[0062] 当然,SSD在接收到该连接建立请求时,可以先根据该连接建立请求确定是否建立与该主机之间的连接,若是,才返回表示接受的响应给主机,比如,返回接受连接消息(open_accept)给主机以建立连接,否则,如果不允许建立该连接,则可以返回表示拒绝的响应给主机,比如,返回拒绝连接消息(open_reject)给主机,流程结束。
[0063] 203、SSD为该连接建立相应的新命令队列和预备命令队列。
[0064] 204、利用建立好的连接,主机下发主机命令给SSD;比如,主机发送Command_CDB给SSD,其中,command CDB为一种主机命令。
[0065] 205、SSD接收该主机发送的主机命令,并将主机命令放入步骤101中建立的新命令队列中。
[0066] 例如,SSD的命令接收模块接收该主机发送的Command_CDB,并将Command_CDB放入该主机对应的新命令队列中。
[0067] 需说明的是,在实际实现中,SSD接收到主机发送的主机命令之后,需要经过SAS接口定义的物理层、链路层和传输层的处理,最后才能放到了SSD存放命令的内存中,以等待SSD对该主机命令进行处理,直至此时,整个主机命令才算是接收完成。所以,在本发明实施例中,命令接收模块指的是实际实现中的所有共同负责接收主机命令的模块的统称,包括主机命令从链路上传输,到进入SSD存放命令的内存中的整个数据通路,以及经历的所有模块的统称。
[0068] 206、在下发完主机命令后,主机可以发送表示命令下发完毕的消息给SSD,比如,主机可以发送done指令给SSD。
[0069] 207、SSD从该主机对应的新命令队列中调用需要执行的主机命令;
[0070] 例如,SSD的命令执行模块可以根据预置策略从新命令队列中调出需要执行的主机命令,比如,可以通过设置优先权的方式或根据主机命令类型的方式来调用需要执行的主机命令,详见实施例一中的描述,在此不再赘述。
[0071] 又例如,也可以按照主机命令进入新命令队列的时间先后顺序调出需要执行的主机命令,等等。
[0072] 208、SSD执行所调出的主机命令,并将执行结果放入该主机对应的预备命令队列中,以便将执行结果返回给主机;
[0073] 例如,SSD的命令执行模块准备好该主机命令所对应的命令数据(Command_data)后,将这些命令数据放入该主机对应的预备命令队列中,以便发送给该主机。
[0074] 209、在执行完主机命令后,SSD可以返回命令响应(Command_response)给主机。
[0075] 其中,步骤208和步骤209的执行可以不分先后,比如,SSD执行所调出的主机命令A后,将主机命令A的执行结果放入该主机对应的预备命令队列中,此后,SSD可以返回主机命令A的命令响应给主机,也可以继续执行调出的下一个主机命令B,将主机命令B的执行结果放入该主机对应的预备命令队列中,依次类推,直至所有主机命令执行完毕后,才发送分别各条主机命令的命令响应给主机,又或者,还可以在执行主机命令的同时,返回上一条主机命令的命令响应给主机,等等。
[0076] 需说明的是,在现有技术中,在SSD返回命令响应后,一般会关闭连接,而在本发明实施例中,可以返回命令响应,但并不关闭连接,是否关闭连接还需要由SSD作进一步判断,详见步骤210。
[0077] 210、SSD确定是否需要关闭连接,若是,则发送表示需要关闭连接的消息(比如done消息)给主机,执行步骤211;若否,则维持该连接,返回步骤210。
[0078] 例如,确定是否关闭连接的方法如下:
[0079] SSD确定自身(即SSD)与该主机之间的连接是否达到预置维持时间,若是,则发送表示需要关闭连接的消息(比如done消息)给主机,执行步骤211;若否,则维持该连接,返回步骤210。
[0080] 或者,SSD确定该主机所对应的预备命令队列是否为空,若是,则发送表示需要关闭连接的消息(比如done消息)给主机,执行步骤211;若否,则维持该连接,返回步骤210。
[0081] 或者,SSD确定自身(即SSD)与该主机之间的连接是否达到预置维持时间,若是,则发送表示需要关闭连接的消息(比如done消息)给主机,若否,则进一步确定该主机所对应的预备命令队列是否为空,若该主机所对应的预备命令队列为空,则发送表示需要关闭连接的消息(比如done消息)给主机,执行步骤211;若该主机所对应的预备命令队列不为空,则维持该连接,返回步骤210。
[0082] 或者,SSD确定该主机所对应的预备命令队列是否为空,若是,则发送表示需要关闭连接的消息(比如done消息)给主机,若否,则SSD进一步确定自身(即SSD)与该主机之间的连接是否达到预置维持时间,若达到预置维持时间,则发送表示需要关闭连接的消息(比如done消息)给主机,执行步骤211;若未达到预置维持时间,则维持该连接,返回步骤210。
[0083] 其中,预置维持时间可以由用户根据实际应用的需要进行设置。
[0084] 211、主机发送表示关闭该连接的消息给SSD,比如,主机发送close指令给SSD。
[0085] 212、SSD在接收到表示关闭连接的消息后,关闭与该主机之间的连接,流程结束。
[0086] SSD与其他主机的连接处理与此类似,不再赘述。其中,可以通过预置策略来控制各个主机与SSD建立连接的时机,以及保证命令执行模块调用访问各个主机的新命令队列的时机,该预置策略可以根据实际应用的需要进行设置。
[0087] 由上可知,本实施例采用在建立SSD与主机之间的连接时,建立新命令队列和预备命令队列,然后利用这些队列来执行主机命令,在主机命令执行完毕后并不直接关闭连接,而是在确定连接达到预置维持时间或预备命令队列为空时才关闭连接,从而大大减少了连接的建立和关闭的次数,从而有效提高了SSD的IOPS,有利于SSD性能的提高。
[0088] 实施例三、
[0089] 为了更好地实施以上方法,本发明实施例还相应地提供一种SSD,如图3a所示,该SSD包括建立单元301、接收单元302、执行单元303和关闭单元304;
[0090] 建立单元301,用于建立SSD与主机之间的连接,并建立新命令队列和预备命令队列;
[0091] 例如,SSD接收主机发送的连接请求消息(open_req),然后根据接收到的open_req返回接受连接消息(open_accept)给主机以建立SSD与该主机之间的连接,并建立新命令队列和预备命令队列。
[0092] 需说明的是,由于SAS具有支持多设备连接的特点,因此SSD可以通过SAS与多个主机建立连接,即:
[0093] 建立单元301,具体用于通过串行连接小型计算机系统接口SAS建立固态硬盘与主机之间的连接。
[0094] 具体实施时,可以通过预置规则来控制各个主机与SSD建立连接的时机,参见前面实施例,在此不再赘述。
[0095] 接收单元302,用于接收主机发送的主机命令,将该主机命令放入建立单元301建立的新命令队列中;
[0096] 执行单元303,用于执行接收单元302放入新命令队列中的主机命令,并将执行结果放入建立单元301建立的预备命令队列中;
[0097] 关闭单元304,用于在确定预备命令队列为空时,关闭建立单元301建立的与该主机之间的连接。
[0098] 可选的,该关闭单元304,还用于在确定与该主机之间的连接达到预置维持时间时,关闭建立单元301建立的与该主机之间的连接。
[0099] 其中,预置维持时间可以由用户根据实际应用的需要进行设置。
[0100] 需说明的是,在确定该连接达到预置维持时间,关闭该连接之后还可以包括:如果新命令队列中还有主机命令,则执行单元303继续执行新命令队列中的主机命令,并将执行结果放入预备命令队列中,在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机;如果预备命令队列中不为空,则在下次与主机建立连接时,将预备命令队列中的执行结果返回给主机,具体可以参见前面实施例,在此不再赘述。
[0101] 可选的,参见图3b,其中,建立单元301可以包括请求接收子单元3011、连接建立子单元3012和队列建立子单元3013;
[0102] 请求接收子单元3011,用于接收主机发送的连接建立请求;
[0103] 连接建立子单元3012,用于根据请求接收子单元3011接收到的连接建立请求建立SSD与主机之间的连接;
[0104] 队列建立子单元3013,用于建立新命令队列和预备命令队列,具体为在连接建立子单元3012建立了SSD与主机之间的连接后,建立新命令队列和预备命令队列。
[0105] 可选的,参见图3b,执行单元303可以包括调用子单元3031和执行子单元3032;
[0106] 调用子单元3031,用于根据预置策略从新命令队列中调出需要执行的主机命令,或者,按照主机命令进入新命令队列的时间先后顺序调出需要执行的主机命令;
[0107] 其中,预置策略可以是预先的关于主机命令优先权的设置,比如,主机命令A具有最高优先权,主机命令B具有中等优先权,而主机命令C的优先权最低,则SSD在执行命令前,会先遍历新命令队列,然后按照优先权的高低执行这些主机命令:先调出主机命令A,执行完毕后,再调出主机命令B,执行完毕后,才调出主机命令C进行执行,依此类推。该预置策略还可以是关于主机命令类型的设置,比如,A类型的主机命令优先处理,而B类型的主机命令则可以稍缓处理,等等。即:
[0108] 调用子单元3031,具体用于根据预先设置的主机命令优先权的高低或主机命令类型从新命令队列中调出需要执行的主机命令
[0109] 执行子单元3032,用于执行调用子单元3031所调出的主机命令,并将执行结果放入建立单元301建立的预备命令队列中。
[0110] 例如,执行子单元3032准备好该主机命令所对应的命令数据(Command data)后,将这些命令数据放入该主机对应的预备命令队列中,以便发送给该主机。
[0111] 可选的,参见图3b,关闭单元304可以包括发送子单元3041、指令接收子单元3042和关闭连接子单元3043;
[0112] 发送子单元3041,用于在确定连接达到预置维持时间或预备命令队列为空时,发送done指令给主机;
[0113] 指令接收子单元3042,用于接收主机在接收到发送子单元3041发送的done指令后,返回的关闭指令;
[0114] 关闭连接子单元3043,用于根据指令接收子单元3042接收到的关闭(close)指令关闭该连接。
[0115] 以上各个单元的具体实施可参见前面实施例,在此不再赘述。
[0116] 需说明的是,具体实施例,以上各个单元可以作为独立的实体存在,也可以以多个实体的形式存在,比如,建立单元301和接收单元302可以作为命令接收模块的实体存在,而执行单元304则可以作为命令执行模块的实体存在,等等。
[0117] 由上可知,本实施例的SSD在建立自身和主机之间的连接时,其建立单元301可以建立新命令队列和预备命令队列,然后由接收单元302和执行单元303利用这些队列来接收和执行主机命令,在主机命令执行完毕后并不直接关闭连接,而是由关闭单元304在确定连接达到预置维持时间或预备命令队列为空时才关闭连接,从而大大减少了连接的建立和关闭的次数,从而有效提高了SSD的IOPS,有利于SSD性能的提高。
[0118] 实施例四、
[0119] 本发明实施例还相应地提供一种通信系统,如图4所示,该通信系统包括本发明实施例提供的任一种SSD300和至少一个主机400;
[0120] 主机400,用于发送主机命令给SSD300。
[0121] 主机400,还用于发送关闭指令给SSD300,使得SSD300关闭该连接。
[0122] 可选的,主机400还用于发送连接建立请求给SSD300,以请求SSD300建立SSD300与该主机400之间的连接,当主机400接收到SSD300返回的表示接受建立连接的消息时,SSD与该主机之间的连接建立,当然,SSD也可以拒绝该连接建立请求,则此时,主机400还可以用于接收SSD300返回的表示拒绝建立连接的消息。
[0123] 可选的,在执行完主机命令后,SSD300可以返回命令响应给主机400,则此时,主机400还可以用于接收SSD300返回的命令响应。
[0124] 以下将对该通信系统的具体实施进行简略说明。
[0125] 具体实现时,由于硬盘接口是硬盘与主机系统间的连接部件,以硬盘接口为SAS接口为例;SSD300与主机400之间的连接的建立和关闭是由SAS接口的链路层来实现的,而“维持时间”则通过在SAS接口的链路层设置一个定时器来实现,定时器从SSD300与主机400之间成功建立连接时开始计时,并在超过预置维持时间时指示链路层关闭连接。预备队列是存放在系统内存里的一系列数据结构,预备命令队列为空时,也会指示SAS接口的链路层关闭连接。主要流程可以如下:
[0126] 步骤1、主机400通过SAS接口发送open req给SSD300;
[0127] 步骤2、SAS接口的链路层建立SSD300与该主机400之间的连接,并启动定时器;
[0128] 步骤3、SSD300为该连接在内存中建立相应的新命令队列和预备命令队列;
[0129] 步骤4、利用建立好的连接,主机400下发主机命令给SSD300;
[0130] 步骤5、SSD300接收该主机400发送的主机命令后,经过SAS接口定义的物理层、链路层和传输层的处理后,放到了SSD300内存中的新命令队列中,以等待SSD对该主机命令进行处理;
[0131] 步骤6、主机400可以发送done指令给SSD,表示命令下发完毕;
[0132] 步骤7、SSD300从内存中的新命令队列中调出需要执行的主机命令进行执行,得到执行结果;
[0133] 步骤8、SSD300将执行结果存放到内存中的预备命令队列中;
[0134] 步骤9、SSD300从预备命令队列中调出执行结果,通过Command response返回给主机;
[0135] 步骤10、SSD300判断预备命令队列是否为空,若为空,则发送处理完毕done消息给主机400,执行步骤11;若否,则维持该连接,返回步骤10。
[0136] 步骤11、主机400发送close指令给SSD300;
[0137] 步骤12、SSD300在接收到表示关闭连接的消息后,指示SAS接口的链路层关闭与该主机400之间的连接,流程结束。或者,如果定时器中预置的维持时间到达时,SSD300也会指示SAS接口的链路层关闭与该主机400之间的连接,流程结束。
[0138] 由于SAS具有支持多设备连接的特点,因此SSD300可以通过SAS与多个主机400建立连接,并分别为各个主机400建立新命令队列和预备命令队列,当主机400下发主机命令给SSD300时,SSD300接收这些主机命令,并将接收到的主机命令放入相应的主机400的新命令队列中,由SSD300从该新命令队列中调用需要的主机命令进行执行,并将执行结果放入相应主机的预备命令队列中,后续可以返回命令响应给相应的主机400,在执行完主机命令后,SSD300并不会立即断开与相应主机的连接,而是在确定该连接达到预置维持时间或预备命令队列为空时,才关闭该连接。
[0139] 由上可知,本实施例的通信系统采用在建立SSD300与主机400之间的连接时,由SSD300建立新命令队列和预备命令队列,然后利用这些队列来执行主机命令,在主机命令执行完毕后,SSD300并不直接关闭与主机400之间的连接,而是在确定连接达到预置维持时间或预备命令队列为空时才关闭该连接,从而大大减少了连接的建立和关闭的次数,从而有效提高了SSD300的IOPS,有利于SSD300性能的提高。
[0140] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
[0141] 以上对本发明实施例所提供的一种SSD的连接处理方法、SSD和通信系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。