一種ssd的前端數(shù)據(jù)管理加速的方法及一種ssd設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種SSD固態(tài)硬盤(pán)技術(shù),特別涉及一種SSD的前端數(shù)據(jù)管理加速的方法及一種SSD設(shè)備。
【背景技術(shù)】
[0002]相關(guān)名詞說(shuō)明:
[0003]SSD:Solid State Drive,固態(tài)硬盤(pán),與傳統(tǒng)的機(jī)械硬盤(pán)相對(duì)應(yīng),是基于nandflash的存儲(chǔ)設(shè)備。
[0004]Sata:Serial Advanced Technology Attachment,串行高級(jí)技術(shù)附件,一種基于行業(yè)標(biāo)準(zhǔn)的串行硬件驅(qū)動(dòng)器接口協(xié)議。
[0005]Host:主機(jī)。
[0006]Device:指的是 SSD 設(shè)備。
[0007]Sata cmd:sata命令,本專(zhuān)利文件指host發(fā)出用來(lái)通知device進(jìn)行數(shù)據(jù)傳輸?shù)拿钚袨椤?br>[0008]front-end data path:前端數(shù)據(jù)通路,SATA〈->DRAM 之間的通路。
[0009]back-end data path:后端數(shù)據(jù)通路,DRAM〈->nand 之間的通路
[0010]ncq cmd:Native Command Queuing,原生命令隊(duì)列,Sata cmd 的一種。
[0011]FPDMA:First Party DMA,單方 DMA。
[0012]Hw,hardware:硬件。
[0013]Fw,firmware:固件,本專(zhuān)利文件指的是SSD控制器的控制軟件。
[0014]Buf node:緩沖區(qū)節(jié)點(diǎn)。
[0015]Sata cmd tag:在ncq cmd的情況下,host在發(fā)送這些cmd的時(shí)候標(biāo)記,用于對(duì)這些cmd進(jìn)行區(qū)分。
[0016]Outstanding cmd:ncq 情況下 device 端的 cmd 個(gè)數(shù)。
[0017]Xfer cmd:本專(zhuān)利文件指前端已經(jīng)由Fw提交到Hw的進(jìn)入hw xfer序列的cmd。
[0018]Xfer cmd idx:表明 xfer cmd 的順序。
[0019]Buf node submit cnt:sw 本次向 hw 提交的 buf node 個(gè)數(shù)。
[0020]Buf node reclaim cnt:hw本次向fw釋放的已經(jīng)傳輸完畢的buf node個(gè)數(shù)
[0021]Bank:一種抽象的nand控制器對(duì)nand顆??梢赃M(jìn)行并行操作的級(jí)別。
[0022]nfc:nand flash controller,nand flash 控制器,是 SSD 主控中用于對(duì) nandflash顆??刂频挠布K。
[0023]nfc cmd:nand flash 控制器操作命令。
[0024]目前基于SATA/SATA-E標(biāo)準(zhǔn)接口的SSD設(shè)備廣泛采用ncq cmd,ncq是指nativecommand queuing原生命令隊(duì)列,ncq cmd是Sata cmd的一種,在host與device之間通過(guò)ncq cmd進(jìn)行數(shù)據(jù)傳輸,這里host指的系統(tǒng)主機(jī),device指的是SATA/SATA-E標(biāo)準(zhǔn)接口的SSD,一般而言device上的ncq原生命令隊(duì)列的可以存儲(chǔ)32個(gè)甚至更多的ncq cmd,最后由device決定選擇哪一條ncq cmd作為當(dāng)前執(zhí)行的數(shù)據(jù)傳送命令xfer cmd,基于此device內(nèi)部的數(shù)據(jù)通路管理可以做ncq cmd的排序,內(nèi)部加速等優(yōu)化處理該排序選擇。Device決定選擇哪一條ncq cmd作為當(dāng)前的數(shù)據(jù)傳送命令xfer cmd的過(guò)程稱(chēng)為前端數(shù)據(jù)通路管理。
[0025]現(xiàn)有的SATA/SATA-E標(biāo)準(zhǔn)的device前端數(shù)據(jù)通路管理由device上的控制器上的軟件具體實(shí)現(xiàn),每個(gè)xfer cmd —般都包括多個(gè)buf節(jié)點(diǎn)的訪問(wèn),一般分為兩類(lèi):第一類(lèi)是不支持不同xfer cmd之間buf節(jié)點(diǎn)亂序提交,第二類(lèi)是使用軟件的數(shù)據(jù)結(jié)構(gòu)支持xfer cmd之間的buf節(jié)點(diǎn)亂序提交。
[0026]對(duì)于第一類(lèi)方案,會(huì)出現(xiàn)以下兩個(gè)問(wèn)題。問(wèn)題一,由于后端數(shù)據(jù)回收的亂序性,當(dāng)當(dāng)前xfer cmd的buf節(jié)點(diǎn)未全部提交到前端時(shí),其他xfer cmd的buf節(jié)點(diǎn)會(huì)全部堵塞在通路上,導(dǎo)致數(shù)據(jù)通路的負(fù)載不均衡影響系統(tǒng)性能。問(wèn)題二,前端buf節(jié)點(diǎn)通路上的積累很多,可能會(huì)堆積在前端fw里,因?yàn)椴荒軄y序提交到硬件,當(dāng)上一個(gè)xfer cmd的最后一個(gè)傳輸完畢,會(huì)出現(xiàn)下一個(gè)xfer cmd的第一個(gè)未提交到hw的可能,本質(zhì)上這是fw/hw協(xié)作的問(wèn)題,通路上有buf節(jié)點(diǎn),沒(méi)有提交到hw,fw操作終宄會(huì)有延時(shí)出現(xiàn),也就是xfer cmd之間數(shù)據(jù)傳輸出現(xiàn)時(shí)間空隙進(jìn)一步影響系統(tǒng)性能。
[0027]對(duì)于第二類(lèi)方案,采用純軟件數(shù)據(jù)結(jié)構(gòu)支持的xfer cmd之間buf亂序提交可以規(guī)避上面的問(wèn)題一,但是問(wèn)題二卻仍然無(wú)法完全規(guī)避,采用純軟件的方式實(shí)現(xiàn)這樣一個(gè)矩陣,可以支持亂序提交到這個(gè)矩陣,可以緩解通路阻塞的問(wèn)題,但是軟件的矩陣不能自動(dòng)傳輸,還是需要按照ncq cmd—條一條的提交到hw才能自動(dòng)傳輸,本質(zhì)上兩條ncq cmd之間的那個(gè)間隙還是沒(méi)法覆蓋掉,由于不能亂序提交到前端硬件;在當(dāng)前xfer cmd傳輸完畢時(shí)若前端硬件中還沒(méi)有下一個(gè)xfer cmd的buf節(jié)點(diǎn),前端數(shù)據(jù)傳輸仍然會(huì)出現(xiàn)時(shí)間空隙,影響系統(tǒng)性能。其原因是前端硬件不支持xfer cmd之間buf節(jié)點(diǎn)的亂序提交,在這種情況下,會(huì)出現(xiàn)當(dāng)前xfer cmd傳輸結(jié)束,但是下一條xfer cmd的buf節(jié)點(diǎn)還未提交到前端硬件,此時(shí)前端硬件的傳輸會(huì)停住,等待下一條xfer cmd的提交,導(dǎo)致前端數(shù)據(jù)傳輸出現(xiàn)暫停,進(jìn)而影響到系統(tǒng)性能。
【發(fā)明內(nèi)容】
[0028]針對(duì)以上缺陷,本發(fā)明目的在于如何讓前端硬件可支持xfer cmd之間的buf node實(shí)現(xiàn)亂序提交,如何保證xfer cmd之間buf節(jié)點(diǎn)亂序提交的情況下前端的硬件自動(dòng)傳輸不會(huì)出現(xiàn)時(shí)間間隙。
[0029]本發(fā)明提供了一種SSD的前端數(shù)據(jù)管理加速的方法,其特征在于:SSD控制器根據(jù)SSD端可支持的ncq命令的個(gè)數(shù),實(shí)現(xiàn)對(duì)應(yīng)的硬件數(shù)組矩陣hw own cmd list ;將相同的ncqcmd tag的buf node按提交的順序建立并加入到硬件數(shù)組矩陣對(duì)應(yīng)的buf node list;以buf node為單位,按照ncq cmd tag的tag順序,在同一個(gè)buf node list內(nèi)按照buf nodelist鏈表的順序,hw自動(dòng)傳輸有效的buf node數(shù)據(jù),hw傳輸數(shù)據(jù)時(shí)遇到所需buf node還未提交或無(wú)效時(shí),則等待至所需buf node提交且有效。
[0030]所述的SSD的前端數(shù)據(jù)管理加速的方法,其特征在于在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交給前端的buf node到prepare buf list,fw按順序按照buf node的cmd tag提交到該buf node所對(duì)應(yīng)的xfer cmd idx對(duì)應(yīng)hwown cmd list 的 buf node list。
[0031]所述的SSD的前端數(shù)據(jù)管理加速的方法,其特征在于還設(shè)有已提交的buf node數(shù)量的計(jì)數(shù)器 buf node submit cnt,當(dāng) sw 向 hw 提交一個(gè) buf node 時(shí),buf node submitcnt自動(dòng)加I ;當(dāng)hw xfer執(zhí)行完并釋放掉一個(gè)buf node后buf node submit cnt自動(dòng)減
1
[0032]還提供了一種SSD設(shè)備,其特征在于包括:前端數(shù)據(jù)管理加速模塊,用于實(shí)現(xiàn)根據(jù)SSD端可支持的ncq命令的個(gè)數(shù),實(shí)現(xiàn)對(duì)應(yīng)的硬件數(shù)組矩陣hw own cmd list ;將相同的ncqcmd tag的buf node按提交的順序建立并加入到硬件數(shù)組矩陣對(duì)應(yīng)的buf node list;以buf node為單位,按照ncq cmd tag的tag順序,在同一個(gè)buf node list內(nèi)按照buf nodelist鏈表的順序,hw自動(dòng)傳輸有效的buf node數(shù)據(jù),hw傳輸數(shù)據(jù)時(shí)遇到所需buf node還未提交或無(wú)效時(shí),則等待所需buf node提交并有效。
[0033]所述的SSD設(shè)備,其特征在于還包括buf node提交模塊,用于實(shí)現(xiàn)在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交給前端的buf node到prepare buf list,fw按順序按照buf node的cmd tag提交到該buf node所對(duì)應(yīng)的xfercmd idx 對(duì)應(yīng) hw own cmd list 的 buf node list。
[0034]所述的SSD設(shè)備,其特征在于還包括硬件計(jì)數(shù)器,用于實(shí)現(xiàn)已提交的buf node數(shù)量的計(jì)數(shù)器 buf node submit cnt,當(dāng) sw 向 hw 提交一個(gè) buf node 時(shí),buf node submitcnt 自動(dòng)加 I ;當(dāng) hw xfer 執(zhí)行完一個(gè) buf node 后 buf node submit cnt 自動(dòng)減 I。
[0035]本發(fā)明實(shí)現(xiàn)了一種硬件支持的SSD的前端數(shù)據(jù)管理加速的方法,并具體由前端數(shù)據(jù)管理加速模塊來(lái)實(shí)現(xiàn),硬件支持cmd之間buf節(jié)點(diǎn)的亂序提交,可以有效降低cmd之間數(shù)據(jù)傳輸?shù)臅r(shí)間間隔出現(xiàn)概率,提升前端數(shù)據(jù)傳輸效率,進(jìn)而提升前端以及整個(gè)SSD的性能。
【附圖說(shuō)明】
[0036]圖1是fw提交buf node流程圖;
[0037]圖2是hw操作流程示意圖;
[0038]圖3是hw與fw之間的buf node交互及hw操作機(jī)制示意圖。
【具體實(shí)施方式】
[0039]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0040]前端數(shù)據(jù)管理加速模塊設(shè)置有硬件實(shí)現(xiàn)的待處理命令鏈表數(shù)組hw own cmdlist,hw own cmd list 的數(shù)組元素 cmd idx 為:buf 節(jié)點(diǎn)鏈表 buf node list,buf nodelist為根據(jù)cmd tag建立起記錄有相同cmd tag所要求提交的