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