一種ssd后端數(shù)據(jù)通路管理加速模塊及ssd設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于包括了完全由硬件方式實(shí)現(xiàn)并自動(dòng)執(zhí)行的后端的nfc cmd管理模塊,所述nfc cmd管理模塊對(duì)SSD控制器向nand flash控制器發(fā)送的nfc cmd的進(jìn)行緩存,根據(jù)nfc cmd對(duì)應(yīng)的sata cmd tag進(jìn)行回收,實(shí)現(xiàn)了多個(gè)nfc bank下并行執(zhí)行bank間全亂序回收到按照sata cmd之間亂序sata cmd內(nèi)順序回收的轉(zhuǎn)換。及應(yīng)用該加速模塊的SSD設(shè)備,后端數(shù)據(jù)通路管理加速模塊可以直接返回sata cmd之間亂序sata cmd內(nèi)順序的buf node,可以使系統(tǒng)和SSD控制器都不再需要做大量的遍歷操作,降低通路上的響應(yīng)時(shí)間進(jìn)而提升系統(tǒng)整體性能。
【專利說明】一種SSD后端數(shù)據(jù)通路管理加速模塊及SSD設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種SSD固態(tài)硬盤技術(shù),特別涉及一種SSD后端數(shù)據(jù)通路管理加速模塊及SSD設(shè)備。
【背景技術(shù)】
[0002]相關(guān)名詞解釋:
[0003]SSD:Solid State Drive,固態(tài)硬盤,與傳統(tǒng)的機(jī)械硬盤相對(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命令,本專利文件指host發(fā)出用來通知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:固件,本專利文件指的是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:本專利文件指前端已經(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]對(duì)于基于SATA/SATA-E接口協(xié)議的SSD,按照SATA協(xié)議數(shù)據(jù)傳輸?shù)囊?,sata cmd內(nèi)數(shù)據(jù)buf node要求嚴(yán)格順序,而按照性能提升的要求,sata cmd之間數(shù)據(jù)buf node要求亂序。
[0025]SSD后端一般米用nand陣列實(shí)現(xiàn),nand flash controller將多個(gè)nand顆粒按照ch/ce/lun進(jìn)行管理,ch/ce/lun之間可以并行操作以提升性。Ch/ce/lun統(tǒng)一抽象為bank,實(shí)際情況下,nfc cmd在bank上的分布是不均衡,由于各個(gè)bank之間的并行性,會(huì)出現(xiàn)后提交的nfc cmd的bank操作比先交的nfc cmd的bank先完成的情況,即bank間nfccmd的亂序,在同一個(gè)bank內(nèi)操作的完成仍然是順序,即bank內(nèi)順序。
[0026]Bank之間nfc cmd的亂序與bank內(nèi)順序需要轉(zhuǎn)化為sata cmd之間buf node亂序sata cmd內(nèi)buf node順序,這一轉(zhuǎn)化目前主要由SSD控制器上的軟件來實(shí)現(xiàn),主要有兩類具體實(shí)現(xiàn)方案:
[0027]第一類,在后端按照sata cmd建立回收list矩陣,按照sata cmd內(nèi)順序cmd間亂序的規(guī)律進(jìn)行被動(dòng)回收,nfc bank做完成狀態(tài)標(biāo)記,這種方案需要SSD控制器上的軟件經(jīng)常性的按照cmd遍歷回收矩陣,確認(rèn)各個(gè)cmd的下一個(gè)node是否可以回收。
[0028]第二類,在前端按照sata cmd建立軟件xfer矩陣,進(jìn)行主動(dòng)排序回收,這種方案需要SSD控制器上的軟件按照新拿到的buf node尋找到對(duì)應(yīng)的cmd并遍歷buf node list,將新拿到的buf node插入到buf node list的適當(dāng)位置,同時(shí)這種方案需要在每個(gè)bufnode中做順序標(biāo)記。
[0029]不論是第一類方案還是第二類方案均需要SSD控制器上的軟件經(jīng)常性的做遍歷操作,會(huì)消耗大量的cpu計(jì)算資源,會(huì)引起通路上的響應(yīng)時(shí)間的增加,進(jìn)一步影響系統(tǒng)性能,同時(shí)第二類方案還會(huì)增加memory需求。
【發(fā)明內(nèi)容】
[0030]針對(duì)以上缺陷,本發(fā)明目的在于提出了在不需要額外消耗系統(tǒng)SSD控制器的memory和cpu的資源前提下,將SSD控制器的nfc cmd序列,按照bank之間nfc cmd的亂序與bank內(nèi)順序的規(guī)則要求進(jìn)行重新調(diào)度,不引起通路上的響應(yīng)時(shí)間增加的前提下實(shí)現(xiàn)sata cmd之間buf node亂序sata cmd內(nèi)buf node順序的目的,進(jìn)而達(dá)到整體提升系統(tǒng)性能的目的。
[0031]為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于包括了完全由硬件方式實(shí)現(xiàn)并自動(dòng)執(zhí)行的后端的nfc cmd管理模塊,所述nfc cmd管理模塊對(duì)SSD控制器向nand flash控制器發(fā)送的nfc cmd的進(jìn)行緩存,根據(jù)nfc cmd對(duì)應(yīng)的sata cmd tag進(jìn)行回收,實(shí)現(xiàn)了多個(gè)nfc bank下并行執(zhí)行,bank間全亂序回收和按照sata cmd之間亂序sata cmd內(nèi)順序回收的轉(zhuǎn)換。
[0032]所述的SSD后端數(shù)據(jù)通路管理加速模塊,所述nfc cmd管理模塊上建立有固定長度的nfc cmd接收隊(duì)列、還依據(jù)nand flash的bank數(shù)量,設(shè)置相同數(shù)量bank命令映射通道,每個(gè)bank命令映射通道都設(shè)有nfc cmd執(zhí)行點(diǎn)和nfc cmd就緒點(diǎn);nfc cmd接收隊(duì)列依據(jù)SSD控制器提交的nfc cmd的時(shí)間順序依次進(jìn)入nfc cmd接收隊(duì)列,nfc cmd接收隊(duì)列上的每個(gè)隊(duì)列元素包括nfc cmd進(jìn)入nfc cmd接收隊(duì)列的序號(hào)nfc cmd idx、nfc cmd需要操作的band序號(hào)bank id、nfc cmd詳細(xì)信息的ram地址、nfc cmd的狀態(tài)信息status、產(chǎn)生nfc cmd對(duì)應(yīng)的nfc cmd的sata cmd tag ;nfc cmd執(zhí)行點(diǎn)拷貝有每個(gè)bank上正在執(zhí)行的nfc cmd,并按照拷貝有的nfc cmd實(shí)際執(zhí)行與bank的交互,nfc cmd就緒點(diǎn)拷貝有每個(gè)bank上下一個(gè)準(zhǔn)備執(zhí)行的nfc cmd。
[0033]所述的SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于所述的nfc cmd管理模塊按照如下步驟進(jìn)行轉(zhuǎn)換:
[0034]步驟1:nfc cmd管理模塊接收fw提交的nfc cmd ;
[0035]步驟2:依據(jù)接收到的nfc cmd內(nèi)容將本次接收到的nfc cmd對(duì)應(yīng)的隊(duì)列元素進(jìn)行入隊(duì)操作,對(duì)應(yīng)的s tatus設(shè)置為pending狀態(tài),并將對(duì)應(yīng)bank序號(hào)的命令計(jì)數(shù)器cmdpending cnt加 I ;
[0036]步驟3:nfc cmd管理模塊檢查各個(gè)bank序號(hào)的就緒點(diǎn)是否有nfc cmd,如果不為空則不做操作;如果為空,則判斷對(duì)應(yīng)nfc bank序號(hào)的cmd pending cnt是否>0,如果為O則不做操作;如果> O檢索nfc cmd隊(duì)列,將nfc cmd隊(duì)列中對(duì)應(yīng)相同bank序號(hào)、狀態(tài)為pending、且nfc cmd idx最小的nfc cmd拷貝到對(duì)應(yīng)相同bank序號(hào)的就緒點(diǎn),同時(shí)將nfccmd隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為ready,對(duì)應(yīng)nfc bank序號(hào)的cmd pending cnt減I ;
[0037]步驟4:nfc cmd管理模塊檢查各個(gè)bank序號(hào)的執(zhí)行點(diǎn)是否為空,如果為空則檢查對(duì)應(yīng)的就緒點(diǎn)是否為空,如果也為空,則不做操作,如果就緒點(diǎn)不為空,則將就緒點(diǎn)轉(zhuǎn)換為執(zhí)行點(diǎn),同時(shí)將nfc cmd接收隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為exe狀態(tài);如果當(dāng)前執(zhí)行點(diǎn)不為空,nfc cmd管理模塊監(jiān)控當(dāng)前nfc cmd是否執(zhí)行完畢,監(jiān)控到當(dāng)前nfc cmd執(zhí)行完畢,將nfc cmd接收隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為done,同時(shí)觸發(fā)nfc cmd接收隊(duì)列的出隊(duì)操作;
[0038]步驟5:當(dāng)nfc cmd管理模塊被觸發(fā)出對(duì)操作,nfc cmd管理模塊從nfc cmdidx最小的隊(duì)列元素開始,將sata cmd tag相同且狀態(tài)為done的隊(duì)列元素逐一進(jìn)行出隊(duì)操作,當(dāng)出現(xiàn)狀態(tài)為非done時(shí),則終止本次出隊(duì)操作。
[0039]所述的SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于所述的nfc cmd接收隊(duì)列可緩存的nfc cmd數(shù)量為可并行訪問的nand flash的bank數(shù)的整數(shù)倍。
[0040]還提供了一種SSD設(shè)備,其特征在于在SSD控制器與nand flash之間還設(shè)有所述的SSD后端數(shù)據(jù)通路管理加速模塊,所述的SSD后端數(shù)據(jù)通路管理加速模塊包括了完全由硬件方式實(shí)現(xiàn)并自動(dòng)執(zhí)行的后端的nfc cmd管理模塊,所述nfc cmd管理模塊對(duì)SSD控制器向nand flash控制器發(fā)送的nfc cmd的進(jìn)行緩存,根據(jù)nfc cmd對(duì)應(yīng)的sata cmd tag進(jìn)行回收,實(shí)現(xiàn)了多個(gè)nfc bank下并行執(zhí)行bank間全亂序回收到按照sata cmd之間亂序sata cmd內(nèi)順序回收的轉(zhuǎn)換。
[0041]本發(fā)明實(shí)現(xiàn)了一種硬件支持的后端數(shù)據(jù)通路管理加速模塊及應(yīng)用該模塊的ssD設(shè)備,后端數(shù)據(jù)通路管理加速模塊可以直接返回sata cmd之間亂序sata cmd內(nèi)順序的bufnode,可以使系統(tǒng)和SSD控制器都不再需要做大量的遍歷操作,降低通路上的響應(yīng)時(shí)間進(jìn)而提升系統(tǒng)整體性能。
【專利附圖】
【附圖說明】
[0042]圖1是fw提交nfc cmd的操作示意圖;
[0043]圖2是nand flash執(zhí)行nfc cmd的操作流程示意圖;
[0044]圖3是nfc cmd管理模塊pop out操作流程示意圖;
[0045]圖4是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)I示意圖;
[0046]圖5是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)2示意圖
[0047]圖6是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)3示意圖;
[0048]圖7是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)4示意圖;
[0049]圖8是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)5示意圖;
[0050]圖9是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)6示意圖;
[0051]圖10是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)7示意圖;
[0052]圖11是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)8示意圖。
【具體實(shí)施方式】
[0053]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0054]SSD后端數(shù)據(jù)通路管理加速模塊由硬件協(xié)助軟件完成,硬件提供nfc cmd submitand reclaim buf用于整個(gè)后端的nfc cmd管理,位于硬件內(nèi)部,管理細(xì)節(jié)對(duì)fw透明,fw主要關(guān)心是否有剩余空間可以提交新的cmd,buf中可以容納的總共nfc cmd個(gè)數(shù)為bank數(shù)氺4 ;
[0055]圖1是fw提交nfc cmd的操作示意圖;fw接收到系統(tǒng)的指令,如本系統(tǒng)的接口類型為sata接口標(biāo)準(zhǔn),貝Ij為sata cmd,同一個(gè)sata cmd—般都是同時(shí)涉及對(duì)多個(gè)bank上的數(shù)據(jù)訪問,因此fw根據(jù)其涉及到的bank和訪問的順序,進(jìn)一步拆分為一定順序的bufnode ;fw 檢查 nfc cmd 接收隊(duì)列 hw nfc cmd submit and recla im buf,判斷是否有剩余空間,如果有剩余空間則將buf node轉(zhuǎn)換為nfccmd,并將nfc cmd提交給nfc cmd接收隊(duì)列hw nfc cmd submit and rec la im buf,開始執(zhí)行nfc cmd接收隊(duì)列的入隊(duì)操作;如果無剩余空間,貝1J等待到有剩余空間D hw nfc cmd submi t and rec la im buf檢測fw提交新的 nfc cmd,hw nfc cmd submi t and reclaim buf 將對(duì)應(yīng)該 nfc cmd 對(duì)應(yīng) bank 的 cmdpending cnt 力口 10
[0056]圖2是nand flash執(zhí)行nfc cmd的操作流程示意圖;各個(gè)不同狀態(tài)的cmd都簡稱對(duì)應(yīng)狀態(tài)+cmd各個(gè)的bank各自檢查當(dāng)前hw nfc cmd submit and reclaim buf中是否同時(shí)存在exe cmd和ready cmd,有則等待nfc bank上對(duì)應(yīng)的cmd執(zhí)行完畢。如果無則判斷無exe cmd但存在ready cmd,則對(duì)應(yīng)bank轉(zhuǎn)化ready cmd為exe cmd并開始執(zhí)行,則開始執(zhí)行判斷對(duì)應(yīng)bank對(duì)應(yīng)的cmd pending cnt是否大于O ;如果無exe cmd也無ready cmd,則也開始執(zhí)行對(duì)應(yīng)bank對(duì)應(yīng)的cmd pending cnt是否大于O,對(duì)應(yīng)bank從nfc cmd submitand reclaim buf獲取最早提交的本bank的pending cmd的copy,并轉(zhuǎn)化為ready cmd。
[0057]Bank 完成當(dāng)前的 exe cmd 執(zhí)行,bank 更新 nfc cmd submit and reclaim buf 中cmd 狀態(tài)為 done ;nfc cmd submit and reclaim buf 從 cmd idx 最小的 cmd 開始遍歷 satacmd tag相同的cmd,判斷當(dāng)前遍歷到的cmd的status是否為done如果當(dāng)前遍歷到的cmdpop out,就是移出 nfc cmd submit and reclaim buf,再重新開始從nfc cmd submit andreclaim buf從cmd idx最小的cmd開始遍歷sata cmd tag相同的cmd,一直循環(huán)執(zhí)行到當(dāng)前遍歷到的cmd狀態(tài)為非done狀態(tài),結(jié)束本輪的pop out流程。
[0058]下面結(jié)合圖4到圖11舉例說明具體的過程。設(shè)nand flash的bank數(shù)量為4,分別為bankO、bankl、bank2、bank3 ;nfc cmd管理模塊上nfc cmd接收隊(duì)列的長度為4*4,設(shè)置相同 4 個(gè) bank 命令映射通道 hw nfc bank,分別為 nfc bankO、nfc bankl、nfc bank2、nfcbank3,各個(gè) bank 對(duì)應(yīng)的 cmd pending cnt 分另丨J為:cmdOpending cnt、cmdlpending cnt、cmd2pending cnt、cmd3pending cnt0 某一時(shí)刻,fw 連續(xù)向 nfc cmd submit and reclaimbuf 提交了 9 條 cmd,即 nfc cmdO-8 屬于 tagO 的 sata cmd 有 nfc cmd5_nfc cmd8,需要操作的是nfc bank2_2-3_3,屬于tagl的sata cmd有nfc cmdO-nfc cmd4,需要操作的是nfc bankO-O-l-O-O,按照sata協(xié)議的要求,nfc cmd08獲取的數(shù)據(jù)需要分別順序的返回給host ο
[0059]圖5是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)I示意圖;該狀態(tài)顯示nfccmdO-nfc cmd7已經(jīng)按順序進(jìn)入了 SSD后端數(shù)據(jù)通路管理加速模塊隊(duì)列中,nfc cmd8正在進(jìn)入,所有cmd的狀態(tài)都為pending。
[0060]圖6是nfc cmd管理模塊狀態(tài)cmd pop out狀態(tài)2不意圖;由于每一個(gè)bank上能容納一條 exe cmd 和一條 ready cmd,nfc cmd0、nfc cmd2、nfc cmd5、nfc cmd7 被四個(gè)bank 分別轉(zhuǎn)化為 exe cmd,nfc cmdl、nfc cmd6、nfc cmd8 分別被轉(zhuǎn)化為 ready cmd,由于bankO 已經(jīng)滿了 nfc cmd3、nfc cmd4 仍然保持 pending 狀態(tài)。
[0061]根據(jù)圖7和圖8所示,nfc cmdO執(zhí)行完畢后啟動(dòng)pop out流程將nfc cmdOpop out,發(fā)現(xiàn)同屬于sata cmdO的nfc cmdl狀態(tài)非done,貝丨j退出pop out流程,此次pop out掉了nfc cmdOo nfc cmd2執(zhí)行完畢后啟動(dòng)pop out流程發(fā)現(xiàn)同屬于sata cmdO的nfc cmdl狀態(tài)非done,貝丨』退出pop out流程,此次流程沒有cmd pop out出去。nfc cmd5執(zhí)行完畢后啟動(dòng)pop out流程將nfc cmd5pop out,發(fā)現(xiàn)同屬于sata cmdl的nfc cmd6狀態(tài)非done,則退出pop out流程,此次pop out掉了 nfc cmd50 nfc cmd7執(zhí)行完畢啟動(dòng)pop out流程發(fā)現(xiàn)同屬于sata cmdl的nfc cmd6狀態(tài)非done,貝丨』退出pop out流程,此次流程沒有cmdpop out出去D可以看到,nfc cmd2和7雖然完成了,但是并沒有pop out出去,同時(shí)為了提升系統(tǒng)性能,分屬于sata cmdO和sata cmdl的nfc cmdO和5交替pop out出去了,這樣既滿足了 sata cmd內(nèi)順序的要求又充分利用了 nfc bank間返回的亂序性實(shí)現(xiàn)了 satacmd 間 buf node 的亂序返回 D nfc cmdl-6-8 轉(zhuǎn)化為 exe cmd,nfc cmd3 轉(zhuǎn)化為 ready cmd,nfc cmd4 仍然為 pendingo
[0062]如圖8和圖9所示^ nfc cmdl執(zhí)行完畢啟動(dòng)pop out流程將nfc cmdlpop out,同時(shí)檢查到同屬于sata cmdO的nfc cmd2狀態(tài)為done,pop out nfc cmd2,檢查到同屬于sata cmdO 的 nfc cmd3 狀態(tài)為非 done,則退出 pop out 流程,此次 pop out 掉了nfc cmd 1-2 0類似的情況 nfc cmd6 完成會(huì) pop out nfc cmd6-70 Nfc cmd8 完成會(huì) pop out nfc cmd80可以看到,受限于sata要求的cmd內(nèi)順序回收,上一輪沒有pop出去的nfc cmd2_7這次在前面堵塞的nfc cmd pop out后也立即被pop out 了,這樣保證了滿足sata cmd內(nèi)順序的需求下盡可能的提升效率。
[0063]如圖9、圖10和圖11所不,nfc cmd3和4完成后分別pop out掉自身,最終放入到 nfc cmd reclaim 的 nfc cmd 順序?yàn)?0-5-1-2-6-7-8-3-4,分別歸屬于 satacmdO-l-O-O-l-l-l-O-O,這做到了 sata cmd 之間亂序回收,從 sata 角度看,sata cmdO 和 I分別對(duì)應(yīng)的nfc cmd idx返回順序?yàn)?-1-2-3-4,5-6_7_8保證了 sata cmd內(nèi)的順序回收。
[0064]以上所掲露的僅為本發(fā)明一種實(shí)施例而已,當(dāng)然不能以此來限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于包括了完全由硬件方式實(shí)現(xiàn)并自動(dòng)執(zhí)行的后端的nfc cmd管理模塊,所述nfc cmd管理模塊對(duì)SSD控制器向nand flash控制器發(fā)送的nfc cmd的進(jìn)行緩存,根據(jù)nfc cmd對(duì)應(yīng)的sata cmd tag進(jìn)行回收,實(shí)現(xiàn)了多個(gè)nfc bank下并行執(zhí)行,bank間全亂序回收和按照sata cmd之間亂序sata cmd內(nèi)順序回收的轉(zhuǎn)換。
2.根據(jù)權(quán)利要求1所述的SSD后端數(shù)據(jù)通路管理加速模塊,所述nfccmd管理模塊上建立有固定長度的nfc cmd接收隊(duì)列、還依據(jù)nand flash的bank數(shù)量,設(shè)置相同數(shù)量bank命令映射通道,每個(gè)bank命令映射通道都設(shè)有nfc cmd執(zhí)行點(diǎn)和nfc cmd就緒點(diǎn);nfc cmd接收隊(duì)列依據(jù)SSD控制器提交的nfc cmd的時(shí)間順序依次進(jìn)入nfc cmd接收隊(duì)列,nfc cmd接收隊(duì)列上的每個(gè)隊(duì)列元素包括nfc cmd進(jìn)入nfc cmd接收隊(duì)列的序號(hào)nfc cmd idx、nfccmd需要操作的band序號(hào)bank id、nfc cmd詳細(xì)信息的ram地址、nfc cmd的狀態(tài)信息status、產(chǎn)生nfc cmd對(duì)應(yīng)的nfc cmd的sata cmd tag ;nfc cmd執(zhí)行點(diǎn)拷貝有每個(gè)bank上正在執(zhí)行的nfc cmd,并按照拷貝有的nfc cmd實(shí)際執(zhí)行與bank的交互,nfc cmd就緒點(diǎn)拷貝有每個(gè)bank上下一個(gè)準(zhǔn)備執(zhí)行的nfc cmd。
3.根據(jù)權(quán)利要求2所述的SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于所述的nfccmd管理模塊按照如下步驟進(jìn)行轉(zhuǎn)換: 步驟1:nfc cmd管理模塊接收fw提交的nfc cmd ; 步驟2:依據(jù)接收到的nfc cmd內(nèi)容將本次接收到的nfc cmd對(duì)應(yīng)的隊(duì)列元素進(jìn)行入隊(duì)操作,對(duì)應(yīng)的status設(shè)置為pending狀態(tài),并將對(duì)應(yīng)bank序號(hào)的命令計(jì)數(shù)器cmd pendingcnt 加 I ; 步驟3:nfc cmd管理模塊檢查各個(gè)bank序號(hào)的就緒點(diǎn)是否有nfc cmd,如果不為空則不做操作;如果為空,則判斷對(duì)應(yīng)nfc bank序號(hào)的cmd pending cnt是否> O,如果為O則不做操作;如果> O檢索nfc cmd隊(duì)列,將nfc cmd隊(duì)列中對(duì)應(yīng)相同bank序號(hào)、狀態(tài)為pending、且nfc cmd idx最小的nfc cmd拷貝到對(duì)應(yīng)相同bank序號(hào)的就緒點(diǎn),同時(shí)將nfccmd隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為ready,對(duì)應(yīng)nfc bank序號(hào)的cmd pending cnt減I ; 步驟4:nfc cmd管理模塊檢查各個(gè)bank序號(hào)的執(zhí)行點(diǎn)是否為空,如果為空則檢查對(duì)應(yīng)的就緒點(diǎn)是否為空,如果也為空,則不做操作,如果就緒點(diǎn)不為空,則將就緒點(diǎn)轉(zhuǎn)換為執(zhí)行點(diǎn),同時(shí)將nfc cmd接收隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為exe狀態(tài);如果當(dāng)前執(zhí)行點(diǎn)不為空,nfc cmd管理模塊監(jiān)控當(dāng)前nfc cmd是否執(zhí)行完畢,監(jiān)控到當(dāng)前nfc cmd執(zhí)行完畢,將nfc cmd接收隊(duì)列中該隊(duì)列元素的狀態(tài)設(shè)置為done,同時(shí)觸發(fā)nfc cmd接收隊(duì)列的出隊(duì)操作; 步驟5:當(dāng)nfc cmd管理模塊被觸發(fā)出對(duì)操作,nfc cmd管理模塊從nfc cmd idx最小的隊(duì)列元素開始,將sa ta cmd tag相同且狀態(tài)為done的隊(duì)列元素逐一進(jìn)行出隊(duì)操作,當(dāng)出現(xiàn)狀態(tài)為非done時(shí),則終止本次出隊(duì)操作。
4.根據(jù)權(quán)利要求3所述的SSD后端數(shù)據(jù)通路管理加速模塊,其特征在于所述的nfccmd接收隊(duì)列可緩存的nfc cmd數(shù)量為可并行訪問的nand flash的bank數(shù)的整數(shù)倍。
5.一種SSD設(shè)備,其特征在于在SSD控制器與nand flash之間還設(shè)有所述的SSD后端數(shù)據(jù)通路管理加速模塊,所述的SSD后端數(shù)據(jù)通路管理加速模塊包括了完全由硬件方式實(shí)現(xiàn)并自動(dòng)執(zhí)行的后端的nfc cmd管理模塊,所述nfc cmd管理模塊對(duì)SSD控制器向nandflash控制器發(fā)送的nfc cmd的進(jìn)行緩存,根據(jù)nfc cmd對(duì)應(yīng)的sata cmd tag進(jìn)行回收,實(shí)現(xiàn)了多個(gè)nfc bank下并行執(zhí)行bank間全亂序回收到按照8ata cmd之間亂序sata cmd內(nèi)順序回收的轉(zhuǎn)換。
【文檔編號(hào)】G06F3/06GK104462181SQ201410528228
【公開日】2015年3月25日 申請(qǐng)日期:2014年10月8日 優(yōu)先權(quán)日:2014年10月8日
【發(fā)明者】羅宗揚(yáng) 申請(qǐng)人:記憶科技(深圳)有限公司