專利名稱:固態硬盤的連接處理方法、固態硬盤和通信系統的制作方法
技術領域:
本發明涉及通信技術領域,具體涉及一種固態硬盤(SSD,solid state disk)的連 接處理方法、SSD和通信系統。
背景技術:
串行連接小型計算機系統接口(SAS,Serial Attached SCSI)是新一代的小型計 算機系統接口 (SCSI, Small Computer System Interface)技術,是并行SCSI接口之后開 發出的全新接口。由于SAS在傳輸速度、可靠性以及兼容性方面具有等較大的優勢,因此, 被廣泛地應該在各種存儲設備上,比如SSD。
由于SAS具有支持多設備連接的特點,因此SAS每次在啟動器(比如主機)與目 標器(比如SSD)之間進行交互前都需要先建立連接。其中,該交互包括下發命令、傳送數 據或返回響應等。由于傳統磁盤尋道時間會比較長(通常是10ms),因此在傳統的SAS系統 架構中,通常主機在向磁盤發送一個命令后會立即關閉連接,然后打開與其他盤的連接,與 其它盤進行交互,等該磁盤尋道完畢,準備好數據后,才再次建立連接以進行數據傳輸。
在對現有技術的研究和實踐過程中,本發明的發明人發現,這種頻繁地打開連接 和關閉連接的操作對于高性能的SSD來說,是巨大的開銷,不利于SSD性能的提升。發明內容
本發明實施例提供一種SSD的連接處理方法、SSD和通信系統,可以提高SSD性能。
一種SSD的連接處理方法,包括
建立SSD與主機之間的連接,并建立新命令隊列和預備命令隊列;
接收所述主機發送的主機命令,將所述主機命令放入新命令隊列中;
執行新命令隊列中的主機命令,并將執行結果放入預備命令隊列中,以便將執行 結果返回給主機;
在確定所述預備命令隊列為空時,關閉所述連接。
一種 SSD,包括
建立單元,用于建立SSD與主機之間的連接,并建立新命令隊列和預備命令隊列;
接收單元,用于接收所述主機發送的主機命令,將所述主機命令放入建立單元建 立的新命令隊列中;
執行單元,用于執行接收單元放入新命令隊列中的主機命令,并將執行結果放入 建立單元建立的預備命令隊列中,以便將執行結果返回給主機;
關閉單元,用于在確定所述預備命令隊列為空時,關閉建立單元建立的所述連接。
一種通信系統,其特征在于,包括主機和本發明實施例提供的任一種SSD ;
所述主機,用于發送主機命令給SSD。
本發明實施例采用在建立SSD與主機之間的連接時,建立不同的新命令隊列和預 備命令隊列,然后利用這些隊列來執行主機命令,在主機命令執行完畢后并不直接關閉連接,而是在確定連接達到預置維持時間或預備命令隊列為空時才關閉連接,從而大大減少 了連接的建立和關閉的次數,有效提高了 SSD每秒完成輸入/輸出(1/0,hput/Output)的 次數(IOPS, I/O Per Second),有利于SSD性能的提高。
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于 本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他 的附圖。
圖1是本發明實施例一提供的方法的流程圖加是本發明實施例中命令隊列執行場景示意圖2b是本發明實施例二提供的方法的流程圖3a是本發明實施例提供的SSD的結構示意圖北是本發明實施例提供的SSD的另一結構示意圖4是本發明實施例提供的通信系統的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于 本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他 實施例,都屬于本發明保護的范圍。
本發明實施例提供一種SSD的連接處理方法、SSD和通信系統。以下分別進行詳 細說明。
實施例一、
本實施例將從SSD的角度進行描述。
如圖1所示,具體流程可以如下
101、建立SSD與主機之間的連接,并為該連接建立相應的新命令隊列和預備 (ready)命令隊列;其中,新命令隊列用于存放從主機接收的未被執行的主機命令,預備命 令隊列用于存放主機命令的執行結果,該執行結果尚未給主機返回響應。
由于SAS具有支持多設備連接的特點,因此SSD可以通過SAS與多個主機建立連 接,具體實施時,可以通過預置規則來控制各個主機與SSD建立連接的時機。例如,該預置 規則可以為
建立SSD和第一主機(稱為主機1)的連接A,維持連接A,并建立SSD和第二主機 (稱為主機2)的連接B;或者,
建立SSD和第一主機(稱為主機1)的連接A,在關閉連接A后,才建立SSD和第二 主機(稱為主機幻的連接B,等等。
其中,建立SSD與主機之間的連接具體可以如下
接收主機發送的連接建立請求;根據接收到的連接建立請求建立SSD與該主機之 間的連接。
102、利用建立好的連接,接收該主機發送的主機命令,將主機命令放入步驟101 中建立的新命令隊列中;具體的主機命令類型和格式可參見現有技術,在此不再贅述。
103、執行新命令隊列中的主機命令,并將執行結果放入預備命令隊列中,以便將 執行結果返回給主機;
例如,可以按照主機命令進入新命令隊列的時間先后順序調出需要執行的主機命 令,然后執行該調出的主機命令,并將執行結果放入預備命令隊列中;或者,
也可以根據預置策略從新命令隊列中調出需要執行的主機命令,然后執行該調出 的主機命令,并將執行結果放入預備命令隊列中,等等。
其中,預置策略可以是關于預先的主機命令優先權的設置,比如,主機命令A具有 最高優先權,主機命令B具有中等優先權,而主機命令C的優先權最低,則SSD在執行命令 前,會先遍歷新命令隊列,然后按照優先權的高低執行這些主機命令先調出主機命令A, 執行完畢后,再調出主機命令B,執行完畢后,才調出主機命令C進行執行,依此類推。
該預置策略還可以是關于主機命令類型的設置,比如,A類型的主機命令優先處 理,而B類型的主機命令則可以稍緩處理,等等。
104、在確定預備命令隊列為空時,關閉該連接;
例如,在預備命令隊列為空時,發送完成(done)指令給主機,接收主機返回的關 閉指令,根據接收到的關閉指令關閉該連接。
可選的,除此之外,該方法還可以包括在確定該連接達到預置維持時間時,關閉 該連接;即在預備命令隊列不為空時,連接達到預置維持時間的情況下,也可以關閉該連接。
其中,維持時間可以由用戶根據實際應用的需要進行設置。該維持時間是一種超 時機制。之所以設置該維持時間是因為SAS接口是一種虛電路連接,只有在主機和固態硬 盤通信時才會建立連接,因此,為了避免由于長時間占用連接,而對其他主機訪問固態硬盤 造成影響,設置了該超時機制,使得在預置的維持時間達到時,不管通信是否完成,都要關 閉連接,如果還需要繼續通信,則可以再次打開連接進行通信。另外,還需說明的是,預備命 令隊列作為命令執行結果的緩存,與該預置的維持時間并不矛盾,如果預備命令隊列為空, 則可以關閉連接,無需判斷預置維持時間是否到達,這樣其他主機就可以和固態硬盤建立 連接以進行通信。
因為預備命令隊列中的執行結果都會返回給主機,所以如果預備命令隊列為空, 則表示目前與該預備命令隊列相關的所有主機命令都執行完畢,所以可以關閉與該主機的 連接。需說明的是,如果預置維持時間到了,即使此時新命令隊列或預備命令隊列中還有主 機命令,也會關閉與該主機的連接;關閉連接后,SSD可以執行如下操作
(1)如果新命令隊列中還有主機命令,則SSD繼續執行新命令隊列中的主機命令, 并將執行結果放入預備命令隊列中,在下次與主機建立連接時,將預備命令隊列中的執行 結果返回給主機,比如,可以如下
等待下次主機發起命令請求建立連接,然后將預備命令隊列中的執行結果返回給 主機;或者,
SSD也可以主動建立與主機的連接,將預備命令隊列中的執行結果返回給主機。
(2)如果預備命令隊列中不為空,則SSD可以在下次與主機建立連接時,將預備命令隊列中的執行結果返回給主機;比如,可以如下
SSD可以在等待下次主機發起命令請求建立連接后,將預備命令隊列中的執行結 果返回給主機;或者,
SSD也可以主動建立與主機的連接,將預備命令隊列中的執行結果返回給主機。
由上可知,本實施例采用在建立SSD與主機之間的連接時,建立新命令隊列和預 備命令隊列,然后利用這些隊列來執行主機命令,在主機命令執行完畢后并不直接關閉連 接,而是在確定連接達到預置維持時間或預備命令隊列為空時才關閉連接,從而大大減少 了連接的建立和關閉的次數,有效提高了 SSD的I0PS,有利于SSD性能的提高。
實施例二、
根據實施例一所描述的方法,以下將舉例作進一步詳細說明。
SSD通過SAS與多個主機建立連接,并分別為各個主機建立新命令隊列和預備命 令隊列,當主機下發主機命令給SSD時,SSD的命令接收模塊接收這些主機命令,并將接收 到的主機命令放入相應的主機的新命令隊列中,由SSD的命令執行模塊從該新命令隊列中 調用需要的主機命令進行執行,并將執行結果放入相應主機的預備命令隊列中,后續可以 通過SSD的命令接收模塊返回命令響應給相應的主機,在執行完主機命令后,SSD并不會立 即斷開與相應主機的連接,而是在確定該連接達到預置維持時間或預備命令隊列為空時, 才關閉該連接。
例如,參見圖2a,SSD通過SAS與主機1、主機2......主機η建立連接,并分別為各個主機建立新命令隊列和預備命令隊列主機1的新命令隊列和預備命令隊列、主機2的新命令隊列和預備命令隊列......主機η的新命令隊列和預備命令隊列,當主機1下發主機命令給SSD時,SSD的命令接收模塊接收該主機命令,由于該主機命令是由主機1發送的, 于是SSD的命令接收模塊將該主機命令放入主機1的新命令隊列中,此后,SSD的命令執行 模塊從主機1的新命令隊列中調用該主機命令進行執行,并將執行結果放入主機1的預備 命令隊列中,通過SSD的命令接收模塊返回命令相應給主機1,在執行完該主機命令后,SSD 繼續維持與主機1的連接,直至在確定該連接達到預置維持時間或預備命令隊列為空時, SSD才發送done指令給主機1,在接收到主機1返回的關閉(close)指令后,SSD關閉與主 機1的連接。
以下將對SSD與主機之間的連接處理流程進行說明。參見圖2b,為了描述方便,以 下僅以SSD與其中的一個主機的連接為例進行說明,具體如下
201、主機發送連接建立請求給SSD,比如,主機發送連接請求消息(open_req)給 SSD。
202、SSD接收該連接建立請求,建立SSD與該主機之間的連接,然后執行步驟 203 ;
當然,SSD在接收到該連接建立請求時,可以先根據該連接建立請求確定是否建 立與該主機之間的連接,若是,才返回表示接受的響應給主機,比如,返回接受連接消息 (open_accept)給主機以建立連接,否則,如果不允許建立該連接,則可以返回表示拒絕的 響應給主機,比如,返回拒絕連接消息(operureject)給主機,流程結束。
203、SSD為該連接建立相應的新命令隊列和預備命令隊列。
204、利用建立好的連接,主機下發主機命令給SSD ;比如,主機發送CommancLCDB給SSD,其中,command_CDB為一種主機命令。
205、SSD接收該主機發送的主機命令,并將主機命令放入步驟101中建立的新命 令隊列中。
例如,SSD的命令接收模塊接收該主機發送的Command_CDB,并將Command_CDB放 入該主機對應的新命令隊列中。
需說明的是,在實際實現中,SSD接收到主機發送的主機命令之后,需要經過SAS 接口定義的物理層、鏈路層和傳輸層的處理,最后才能放到了 SSD存放命令的內存中,以等 待SSD對該主機命令進行處理,直至此時,整個主機命令才算是接收完成。所以,在本發明 實施例中,命令接收模塊指的是實際實現中的所有共同負責接收主機命令的模塊的統稱, 包括主機命令從鏈路上傳輸,到進入SSD存放命令的內存中的整個數據通路,以及經歷的 所有模塊的統稱。
206、在下發完主機命令后,主機可以發送表示命令下發完畢的消息給SSD,比如, 主機可以發送done指令給SSD。
207、SSD從該主機對應的新命令隊列中調用需要執行的主機命令;
例如,SSD的命令執行模塊可以根據預置策略從新命令隊列中調出需要執行的主 機命令,比如,可以通過設置優先權的方式或根據主機命令類型的方式來調用需要執行的 主機命令,詳見實施例一中的描述,在此不再贅述。
又例如,也可以按照主機命令進入新命令隊列的時間先后順序調出需要執行的主 機命令,等等。
208、SSD執行所調出的主機命令,并將執行結果放入該主機對應的預備命令隊列 中,以便將執行結果返回給主機;
例如,SSD的命令執行模塊準備好該主機命令所對應的命令數據(CommancLdata) 后,將這些命令數據放入該主機對應的預備命令隊列中,以便發送給該主機。
209、在執行完主機命令后,SSD可以返回命令響應(Command_response)給主機。
其中,步驟208和步驟209的執行可以不分先后,比如,SSD執行所調出的主機命 令A后,將主機命令A的執行結果放入該主機對應的預備命令隊列中,此后,SSD可以返回 主機命令A的命令響應給主機,也可以繼續執行調出的下一個主機命令B,將主機命令B的 執行結果放入該主機對應的預備命令隊列中,依次類推,直至所有主機命令執行完畢后,才 發送分別各條主機命令的命令響應給主機,又或者,還可以在執行主機命令的同時,返回上 一條主機命令的命令響應給主機,等等。
需說明的是,在現有技術中,在SSD返回命令響應后,一般會關閉連接,而在本發 明實施例中,可以返回命令響應,但并不關閉連接,是否關閉連接還需要由SSD作進一步判 斷,詳見步驟210。
210、SSD確定是否需要關閉連接,若是,則發送表示需要關閉連接的消息(比如 done消息)給主機,執行步驟211 ;若否,則維持該連接,返回步驟210。
例如,確定是否關閉連接的方法如下
SSD確定自身(即SSD)與該主機之間的連接是否達到預置維持時間,若是,則發送 表示需要關閉連接的消息(比如done消息)給主機,執行步驟211 ;若否,則維持該連接, 返回步驟210。
或者,SSD確定該主機所對應的預備命令隊列是否為空,若是,則發送表示需要關 閉連接的消息(比如done消息)給主機,執行步驟211 ;若否,則維持該連接,返回步驟210。
或者,SSD確定自身(即SSD)與該主機之間的連接是否達到預置維持時間,若是, 則發送表示需要關閉連接的消息(比如done消息)給主機,若否,則進一步確定該主機所 對應的預備命令隊列是否為空,若該主機所對應的預備命令隊列為空,則發送表示需要關 閉連接的消息(比如done消息)給主機,執行步驟211 ;若該主機所對應的預備命令隊列 不為空,則維持該連接,返回步驟210。
或者,SSD確定該主機所對應的預備命令隊列是否為空,若是,則發送表示需要關 閉連接的消息(比如done消息)給主機,若否,則SSD進一步確定自身(即SSD)與該主機 之間的連接是否達到預置維持時間,若達到預置維持時間,則發送表示需要關閉連接的消 息(比如done消息)給主機,執行步驟211 ;若未達到預置維持時間,則維持該連接,返回 步驟210。
其中,預置維持時間可以由用戶根據實際應用的需要進行設置。
211、主機發送表示關閉該連接的消息給SSD,比如,主機發送close指令給SSD。
212、SSD在接收到表示關閉連接的消息后,關閉與該主機之間的連接,流程結束。
SSD與其他主機的連接處理與此類似,不再贅述。其中,可以通過預置策略來控制 各個主機與SSD建立連接的時機,以及保證命令執行模塊調用訪問各個主機的新命令隊列 的時機,該預置策略可以根據實際應用的需要進行設置。
由上可知,本實施例采用在建立SSD與主機之間的連接時,建立新命令隊列和預 備命令隊列,然后利用這些隊列來執行主機命令,在主機命令執行完畢后并不直接關閉連 接,而是在確定連接達到預置維持時間或預備命令隊列為空時才關閉連接,從而大大減少 了連接的建立和關閉的次數,從而有效提高了 SSD的I0PS,有利于SSD性能的提高。
實施例三、
為了更好地實施以上方法,本發明實施例還相應地提供一種SSD,如圖3a所示,該 SSD包括建立單元301、接收單元302、執行單元303和關閉單元304 ;
建立單元301,用于建立SSD與主機之間的連接,并建立新命令隊列和預備命令隊 列;
例如,SSD接收主機發送的連接請求消息(open_req),然后根據接收到的open_ req返回接受連接消息(oper^acc印t)給主機以建立SSD與該主機之間的連接,并建立新命 令隊列和預備命令隊列。
需說明的是,由于SAS具有支持多設備連接的特點,因此SSD可以通過SAS與多個 主機建立連接,即
建立單元301,具體用于通過串行連接小型計算機系統接口 SAS建立固態硬盤與 主機之間的連接。
具體實施時,可以通過預置規則來控制各個主機與SSD建立連接的時機,參見前 面實施例,在此不再贅述。
接收單元302,用于接收主機發送的主機命令,將該主機命令放入建立單元301建 立的新命令隊列中;
執行單元303,用于執行接收單元302放入新命令隊列中的主機命令,并將執行結果放入建立單元301建立的預備命令隊列中;
關閉單元304,用于在確定預備命令隊列為空時,關閉建立單元301建立的與該主 機之間的連接。
可選的,該關閉單元304,還用于在確定與該主機之間的連接達到預置維持時間 時,關閉建立單元301建立的與該主機之間的連接。
其中,預置維持時間可以由用戶根據實際應用的需要進行設置。
需說明的是,在確定該連接達到預置維持時間,關閉該連接之后還可以包括如果 新命令隊列中還有主機命令,則執行單元303繼續執行新命令隊列中的主機命令,并將執 行結果放入預備命令隊列中,在下次與主機建立連接時,將預備命令隊列中的執行結果返 回給主機;如果預備命令隊列中不為空,則在下次與主機建立連接時,將預備命令隊列中的 執行結果返回給主機,具體可以參見前面實施例,在此不再贅述。
可選的,參見圖北,其中,建立單元301可以包括請求接收子單元3011、連接建立 子單元3012和隊列建立子單元3013 ;
請求接收子單元3011,用于接收主機發送的連接建立請求;
連接建立子單元3012,用于根據請求接收子單元3011接收到的連接建立請求建 立SSD與主機之間的連接;
隊列建立子單元3013,用于建立新命令隊列和預備命令隊列,具體為在連接建立 子單元3012建立了 SSD與主機之間的連接后,建立新命令隊列和預備命令隊列。
可選的,參見圖3b,執行單元303可以包括調用子單元3031和執行子單元3032 ;
調用子單元3031,用于根據預置策略從新命令隊列中調出需要執行的主機命令, 或者,按照主機命令進入新命令隊列的時間先后順序調出需要執行的主機命令;
其中,預置策略可以是預先的關于主機命令優先權的設置,比如,主機命令A具有 最高優先權,主機命令B具有中等優先權,而主機命令C的優先權最低,則SSD在執行命令 前,會先遍歷新命令隊列,然后按照優先權的高低執行這些主機命令先調出主機命令A, 執行完畢后,再調出主機命令B,執行完畢后,才調出主機命令C進行執行,依此類推。該預 置策略還可以是關于主機命令類型的設置,比如,A類型的主機命令優先處理,而B類型的 主機命令則可以稍緩處理,等等。即
調用子單元3031,具體用于根據預先設置的主機命令優先權的高低或主機命令類 型從新命令隊列中調出需要執行的主機命令
執行子單元3032,用于執行調用子單元3031所調出的主機命令,并將執行結果放 入建立單元301建立的預備命令隊列中。
例如,執行子單元3032準備好該主機命令所對應的命令數據(CommancLdata)后, 將這些命令數據放入該主機對應的預備命令隊列中,以便發送給該主機。
可選的,參見圖3b,關閉單元304可以包括發送子單元3041、指令接收子單元3042 和關閉連接子單元3043;
發送子單元3041,用于在確定連接達到預置維持時間或預備命令隊列為空時,發 送done指令給主機;
指令接收子單元3042,用于接收主機在接收到發送子單元3041發送的done指令 后,返回的關閉指令;
關閉連接子單元3043,用于根據指令接收子單元3042接收到的關閉(close)指令 關閉該連接。
以上各個單元的具體實施可參見前面實施例,在此不再贅述。
需說明的是,具體實施例,以上各個單元可以作為獨立的實體存在,也可以以多個 實體的形式存在,比如,建立單元301和接收單元302可以作為命令接收模塊的實體存在, 而執行單元304則可以作為命令執行模塊的實體存在,等等。
由上可知,本實施例的SSD在建立自身和主機之間的連接時,其建立單元301可以 建立新命令隊列和預備命令隊列,然后由接收單元302和執行單元303利用這些隊列來接 收和執行主機命令,在主機命令執行完畢后并不直接關閉連接,而是由關閉單元304在確 定連接達到預置維持時間或預備命令隊列為空時才關閉連接,從而大大減少了連接的建立 和關閉的次數,從而有效提高了 SSD的I0PS,有利于SSD性能的提高。
實施例四、
本發明實施例還相應地提供一種通信系統,如圖4所示,該通信系統包括本發明 實施例提供的任一種SSD300和至少一個主機400 ;
主機400,用于發送主機命令給SSD300。
主機400,還用于發送關閉指令給SSD300,使得SSD300關閉該連接。
可選的,主機400還用于發送連接建立請求給SSD300,以請求SSD300建立SSD300 與該主機400之間的連接,當主機400接收到SSD300返回的表示接受建立連接的消息時, SSD與該主機之間的連接建立,當然,SSD也可以拒絕該連接建立請求,則此時,主機400還 可以用于接收SSD300返回的表示拒絕建立連接的消息。
可選的,在執行完主機命令后,SSD300可以返回命令響應給主機400,則此時,主 機400還可以用于接收SSD300返回的命令響應。
以下將對該通信系統的具體實施進行簡略說明。
具體實現時,由于硬盤接口是硬盤與主機系統間的連接部件,以硬盤接口為SAS 接口為例;SSD300與主機400之間的連接的建立和關閉是由SAS接口的鏈路層來實現的, 而“維持時間”則通過在SAS接口的鏈路層設置一個定時器來實現,定時器從SSD300與主 機400之間成功建立連接時開始計時,并在超過預置維持時間時指示鏈路層關閉連接。預 備隊列是存放在系統內存里的一系列數據結構,預備命令隊列為空時,也會指示SAS接口 的鏈路層關閉連接。主要流程可以如下
步驟1、主機400通過SAS接口發送open_req給SSD300 ;
步驟2、SAS接口的鏈路層建立SSD300與該主機400之間的連接,并啟動定時器;
步驟3、SSD300為該連接在內存中建立相應的新命令隊列和預備命令隊列;
步驟4、利用建立好的連接,主機400下發主機命令給SSD300 ;
步驟5、SSD300接收該主機400發送的主機命令后,經過SAS接口定義的物理層、 鏈路層和傳輸層的處理后,放到了 SSD300內存中的新命令隊列中,以等待SSD對該主機命 令進行處理;
步驟6、主機400可以發送done指令給SSD,表示命令下發完畢;
步驟7、SSD300從內存中的新命令隊列中調出需要執行的主機命令進行執行,得 到執行結果;
步驟8、SSD300將執行結果存放到內存中的預備命令隊列中;
步驟9、SSD300從預備命令隊列中調出執行結果,通過CommancLresponse返回給 主機;
步驟10、SSD300判斷預備命令隊列是否為空,若為空,則發送處理完畢done消息 給主機400,執行步驟11 ;若否,則維持該連接,返回步驟10。
步驟11、主機400發送close指令給SSD300 ;
步驟12、SSD300在接收到表示關閉連接的消息后,指示SAS接口的鏈路層關閉與 該主機400之間的連接,流程結束。或者,如果定時器中預置的維持時間到達時,SSD300也 會指示SAS接口的鏈路層關閉與該主機400之間的連接,流程結束。
由于SAS具有支持多設備連接的特點,因此SSD300可以通過SAS與多個主機400 建立連接,并分別為各個主機400建立新命令隊列和預備命令隊列,當主機400下發主機命 令給SSD300時,SSD300接收這些主機命令,并將接收到的主機命令放入相應的主機400的 新命令隊列中,由SSD300從該新命令隊列中調用需要的主機命令進行執行,并將執行結果 放入相應主機的預備命令隊列中,后續可以返回命令響應給相應的主機400,在執行完主機 命令后,SSD300并不會立即斷開與相應主機的連接,而是在確定該連接達到預置維持時間 或預備命令隊列為空時,才關閉該連接。
由上可知,本實施例的通信系統采用在建立SSD300與主機400之間的連接時,由 SSD300建立新命令隊列和預備命令隊列,然后利用這些隊列來執行主機命令,在主機命令 執行完畢后,SSD300并不直接關閉與主機400之間的連接,而是在確定連接達到預置維持 時間或預備命令隊列為空時才關閉該連接,從而大大減少了連接的建立和關閉的次數,從 而有效提高了 SSD300的I0PS,有利于SSD300性能的提高。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存 儲介質可以包括只讀存儲器(ROM,Read Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、磁盤或光盤等。
以上對本發明實施例所提供的一種SSD的連接處理方法、SSD和通信系統進行了 詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的 說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依 據本發明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容 不應理解為對本發明的限制。
權利要求
1.一種固態硬盤的連接處理方法,其特征在于,包括固態硬盤建立與主機之間的連接,并建立新命令隊列和預備命令隊列;接收所述主機發送的主機命令,將所述主機命令放入新命令隊列中;執行新命令隊列中的主機命令,并將執行結果放入預備命令隊列中,以便將執行結果 返回給主機;在確定所述預備命令隊列為空時,關閉所述連接。
2.根據權利要求1所述的方法,其特征在于,還包括在確定所述連接達到預置維持時間時,關閉所述連接。
3.根據權利要求2所述的方法,其特征在于,所述在確定所述連接達到預置維持時間 時,關閉所述連接之后還包括如果新命令隊列中還有主機命令,則繼續執行新命令隊列中的主機命令,并將執行結 果放入預備命令隊列中,在下次與主機建立連接時,將預備命令隊列中的執行結果返回給 主機;如果預備命令隊列中不為空,則在下次與主機建立連接時,將預備命令隊列中的執行 結果返回給主機。
4.根據權利要求1所述的方法,其特征在于,所述執行所述新命令隊列中的主機命令 包括根據預置策略從新命令隊列中調出需要執行的主機命令,或者,按照主機命令進入新 命令隊列的時間先后順序調出需要執行的主機命令;執行調出的主機命令。
5.根據權利要求4所述的方法,其特征在于,所述根據預置策略從新命令隊列中調出 需要執行的主機命令包括根據預置的主機命令優先權的高低或主機命令類型從新命令隊列中調出需要執行的 主機命令。
6.根據權利要求1至5所述的任一種方法,其特征在于,所述建立固態硬盤與主機之間 的連接包括通過串行連接小型計算機系統接口 SAS建立固態硬盤與主機之間的連接。
7.一種固態硬盤,其特征在于,包括建立單元,用于建立固態硬盤與主機之間的連接,并建立新命令隊列和預備命令隊列;接收單元,用于接收所述主機發送的主機命令,將所述主機命令放入建立單元建立的 新命令隊列中;執行單元,用于執行接收單元放入新命令隊列中的主機命令,并將執行結果放入建立 單元建立的預備命令隊列中,以便將執行結果返回給主機;關閉單元,用于在確定所述預備命令隊列為空時,關閉建立單元建立的所述連接。
8.根據權利要求7所述的固態硬盤,其特征在于,建立單元,具體用于通過串行連接小型計算機系統接口 SAS建立固態硬盤與主機之間 的連接。
9.根據權利要求7所述的固態硬盤,其特征在于,所述關閉單元,還用于在確定所述連接達到預置維持時間時,關閉建立單元建立的所 述連接。
10.根據權利要求7至9任一項所述的固態硬盤,其特征在于,所述執行單元包括 調用子單元,用于根據預置策略從新命令隊列中調出需要執行的主機命令,或者,按照主機命令進入新命令隊列的時間先后順序調出需要執行的主機命令;執行子單元,用于執行調用子單元所調出的主機命令,并將執行結果放入建立單元301 建立的預備命令隊列中,以便將執行結果返回給主機。
11.根據權利要求10所述的固態硬盤,其特征在于,所述調用子單元,具體用于根據預置的主機命令優先權的高低或主機命令類型從新命 令隊列中調出需要執行的主機命令。
12.一種通信系統,其特征在于,包括主機和權利要求7至12所述的任一種固態硬盤; 所述主機,用于發送主機命令給固態硬盤。
全文摘要
本發明公開了一種SSD的連接處理方法、SSD和通信系統。本發明實施例采用在建立SSD與主機之間的連接時,建立新命令隊列和預備命令隊列,然后利用這些隊列來執行主機命令,在主機命令執行完畢后并不直接關閉連接,而是在確定預備命令隊列為空時才關閉連接,從而大大減少了連接的建立和關閉的次數,有效提高了SSD的IOPS,有利于SSD性能的提高。
文檔編號G06F3/06GK102043592SQ201010581108
公開日2011年5月4日 申請日期2010年12月9日 優先權日2010年12月9日
發明者余夕亮, 張昆, 張靖 申請人:成都市華為賽門鐵克科技有限公司