提升多分區(qū)順序讀寫性能的方法及其系統(tǒng)的制作方法
【專利摘要】本發(fā)明適用于存儲(chǔ)【技術(shù)領(lǐng)域】,提供了一種提升多分區(qū)順序讀寫性能的方法及其系統(tǒng),所述方法包括:A、根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所述主引導(dǎo)記錄建立所述固態(tài)硬盤的分區(qū)信息列表;B、根據(jù)所述分區(qū)信息列表對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離和重組。借此,本發(fā)明提高垃圾塊產(chǎn)生的機(jī)率以及固態(tài)硬盤多分區(qū)順序讀寫的性能。
【專利說明】提升多分區(qū)順序讀寫性能的方法及其系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種提升多分區(qū)順序讀寫性能的方法及其系 統(tǒng)。
【背景技術(shù)】
[0002] 當(dāng)SSD(Solid State Disk,固態(tài)硬盤)被劃分成多個(gè)分區(qū)后,這幾個(gè)分區(qū)同時(shí)進(jìn) 行順序讀寫,發(fā)現(xiàn)長(zhǎng)時(shí)間運(yùn)行后性能急劇下降。從數(shù)據(jù)流上分析,雖然各個(gè)分區(qū)都是順序讀 寫,但是當(dāng)這些讀寫請(qǐng)求在SSD里匯合時(shí),已經(jīng)被認(rèn)作是隨機(jī)讀寫,隨機(jī)程度取決于每個(gè)讀 寫命令的大小。
[0003] 如圖1所示,目前,固態(tài)硬盤的固件在處理多分區(qū)讀寫請(qǐng)求時(shí),只是簡(jiǎn)單的按照主 機(jī)下發(fā)的命令順序,依次進(jìn)行處理。這樣無論分區(qū)是順序讀寫,還是隨機(jī)讀寫,對(duì)于固件 來說都是隨機(jī)讀寫(其程度取決于單個(gè)讀寫命令的大小,單個(gè)讀寫命令越小,隨機(jī)成分越 商)。
[0004] 隨著時(shí)間的推移,分區(qū)數(shù)據(jù)在NAND(閃存)上的分布趨于離散,這樣就降低了垃圾 塊的產(chǎn)生。當(dāng)磁盤可用空間接近用完時(shí),會(huì)導(dǎo)致大量的數(shù)據(jù)搬移以產(chǎn)生足夠多的可回收的 垃圾塊,大幅提高寫放大。而從主機(jī)端來看,性能急劇下降,順序讀寫沒有達(dá)到預(yù)期的性能。
[0005] 因此,從NAND上分析,隨著時(shí)間的推移,各個(gè)分區(qū)的數(shù)據(jù)越來越趨向離散分布,這 樣就導(dǎo)致了數(shù)據(jù)的頻繁搬移,寫放大變大,影響了使用壽命。
[0006] 綜上可知,現(xiàn)有的多分區(qū)順序讀寫技術(shù)在實(shí)際使用上,顯然存在不便與缺陷,所以 有必要加以改進(jìn)。
【發(fā)明內(nèi)容】
[0007] 針對(duì)上述的缺陷,本發(fā)明的目的在于提供一種提升多分區(qū)順序讀寫性能的方法及 其系統(tǒng),由此提高垃圾塊產(chǎn)生的機(jī)率以及固態(tài)硬盤多分區(qū)順序讀寫的性能。
[0008] 為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種提升多分區(qū)順序讀寫性能的方法,包括:
[0009] A、根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所述主引導(dǎo)記錄 建立所述固態(tài)硬盤的分區(qū)信息列表;
[0010] B、根據(jù)所述分區(qū)信息列表對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離和重組。
[0011] 根據(jù)所述的方法,所述方法還包括:
[0012] C、將所述命令按照所述固態(tài)硬盤的閃存的最大帶寬進(jìn)行下發(fā)。
[0013] 根據(jù)所述的方法,在所述步驟B中,按照所述固態(tài)硬盤中的分區(qū)對(duì)所述固態(tài)硬盤 的主機(jī)端發(fā)送的命令進(jìn)行分離,并且將屬于同一分區(qū)的所述命令在相同的邏輯塊中進(jìn)行重 組。
[0014] 根據(jù)所述的方法,在所述固態(tài)硬盤的分區(qū)多于4個(gè)時(shí),所述步驟A還包括:根據(jù)所 述文件系統(tǒng)分區(qū)協(xié)議,解析所述固態(tài)硬盤的主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄,并根據(jù)所述主引 導(dǎo)記錄和擴(kuò)展分區(qū)記錄建立包括所述固態(tài)硬盤擴(kuò)展分區(qū)的分區(qū)信息列表。
[0015] 根據(jù)上述任一所述的方法,所述分區(qū)信息列表包括:每個(gè)所述分區(qū)的起始LBA和 LBA個(gè)數(shù);
[0016] 所述命令包括所述主機(jī)端發(fā)起的順序讀命令或者順序?qū)懨睢?br>
[0017] 為了實(shí)現(xiàn)本發(fā)明的另一發(fā)明目的,本發(fā)明還提供了一種提升多分區(qū)順序讀寫性能 的系統(tǒng),包括:
[0018] 建立模塊,用于根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所述 主引導(dǎo)記錄建立所述固態(tài)硬盤的分區(qū)信息列表;
[0019] 分離重組模塊,用于根據(jù)所述分區(qū)信息列表對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令 進(jìn)行分離和重組。
[0020] 根據(jù)所述的系統(tǒng),所述固態(tài)硬盤還包括:
[0021] 傳送模塊,用于將所述命令按照所述固態(tài)硬盤的閃存的最大帶寬進(jìn)行下發(fā)。
[0022] 根據(jù)所述的系統(tǒng),所述分離重組模塊按照所述固態(tài)硬盤中的分區(qū)對(duì)所述固態(tài)硬盤 的主機(jī)端發(fā)送的命令進(jìn)行分離,并且將屬于同一分區(qū)的所述命令在相同的邏輯塊中進(jìn)行重 組。
[0023] 根據(jù)所述的系統(tǒng),在所述固態(tài)硬盤的分區(qū)多于4個(gè)時(shí),所述建立模塊根據(jù)所述文 件系統(tǒng)分區(qū)協(xié)議,解析所述固態(tài)硬盤的主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄,并根據(jù)所述主引導(dǎo)記 錄和擴(kuò)展分區(qū)記錄建立包括所述固態(tài)硬盤擴(kuò)展分區(qū)的分區(qū)信息列表。
[0024] 根據(jù)上述任一所述的系統(tǒng),所述分區(qū)信息列表包括:每個(gè)所述分區(qū)的起始LBA和 LBA個(gè)數(shù);
[0025] 所述命令包括所述主機(jī)端發(fā)起的順序讀命令或者順序?qū)懨睢?br>
[0026] 本發(fā)明通過獲取并分析磁盤的MBR和EBR信息,建立起分區(qū)信息表,包括每個(gè)分區(qū) 的起始LBA和LBA個(gè)數(shù)。利用已建立的分區(qū)信息表,對(duì)主機(jī)端發(fā)起的多分區(qū)順序讀寫命令 進(jìn)行分離。各分區(qū)間的命令分離出來,并依據(jù)特定的模式進(jìn)行重組,以達(dá)到最大的帶寬和 數(shù)據(jù)在NAND上集中分布。因此,在本發(fā)明中通過采用分區(qū)分離和重組的技術(shù)方案,可以大 大提高垃圾塊產(chǎn)生的機(jī)率,同樣是數(shù)據(jù)搬移,也大大減少了數(shù)量,降低了寫放大,延長(zhǎng)了 SSD 的壽命。
【專利附圖】
【附圖說明】
[0027] 圖1是現(xiàn)有技術(shù)中的主機(jī)端命令流程示意圖;
[0028] 圖2是本發(fā)明第一實(shí)施例提供的提升多分區(qū)順序讀寫性能的系統(tǒng)的結(jié)構(gòu)示意圖;
[0029] 圖3是本發(fā)明第二實(shí)施例提供的提升多分區(qū)順序讀寫性能的系統(tǒng)的結(jié)構(gòu)示意圖;
[0030] 圖4A是圖4B?圖11中數(shù)據(jù)塊的標(biāo)識(shí)示意圖;
[0031] 圖4B是現(xiàn)有技術(shù)中順序與入與命令1?6固態(tài)硬盤的閃存的變化不意圖;
[0032] 圖5是現(xiàn)有技術(shù)中繼續(xù)寫入命令導(dǎo)致無可用邏輯塊示意圖;
[0033] 圖6是現(xiàn)有技術(shù)中搬移數(shù)據(jù)后再執(zhí)行命令固態(tài)硬盤的閃存的變化示意圖;
[0034] 圖7是現(xiàn)有技術(shù)中數(shù)據(jù)搬移及執(zhí)行命令7?9后NAND上數(shù)據(jù)分布示意圖;
[0035] 圖8是現(xiàn)有技術(shù)中執(zhí)行命令7?9數(shù)據(jù)搬移后NAND上數(shù)據(jù)分布示意圖;
[0036] 圖9是本發(fā)明實(shí)施例中順序?qū)懭雽懨??6固態(tài)硬盤的閃存的變化示意圖;
[0037] 圖10是本發(fā)明實(shí)施例中繼續(xù)寫入寫命令7?9固態(tài)硬盤的閃存的變化示意圖;
[0038] 圖11是本發(fā)明實(shí)施例中搬移數(shù)據(jù)后固態(tài)硬盤的閃存的變化示意圖;
[0039] 圖12是本發(fā)明第四實(shí)施例提供的提升多分區(qū)順序讀寫性能的方法流程圖。
【具體實(shí)施方式】
[0040] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0041] 參見圖2,在本發(fā)明的第一實(shí)施例中,提供了一種提升多分區(qū)順序讀寫性能的系統(tǒng) 100,包括:
[0042] 建立模塊10,用于根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所 述主引導(dǎo)記錄建立固態(tài)硬盤的分區(qū)信息列表;
[0043] 分離重組模塊20,用于根據(jù)所述分區(qū)信息列表對(duì)固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn) 行分離和重組。
[0044] 在該實(shí)施例中,建立模塊10根據(jù)文件系統(tǒng)分區(qū)協(xié)議解析固態(tài)硬盤的主引導(dǎo)記錄, 然后獲得固態(tài)硬盤的分區(qū)信息列表,如表1所示。在該表1中,所述分區(qū)信息列表包括:每 個(gè)所述分區(qū)的起始LBA和LBA個(gè)數(shù)。然后,分離重組模塊20根據(jù)所述分區(qū)信息列表對(duì)所述 固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離和重組,具體的將所述命令按照分區(qū)進(jìn)行分離。例 如,表1中包括了 C\D兩個(gè)分區(qū),則將命令按照C、D區(qū)進(jìn)行區(qū)分。然后再按照不同分區(qū),將 各分區(qū)的命令重組在一起。這樣各個(gè)分區(qū)的數(shù)據(jù)將不會(huì)趨向離散分布,防止了數(shù)據(jù)的頻繁 搬移。其中,所述命令包括所述主機(jī)端發(fā)起的順序讀命令或者順序?qū)懨睢?br>
[0045] 參見圖3,在本發(fā)明的第二實(shí)施例中,提升多分區(qū)順序讀寫性能的系統(tǒng)100還包 括:
[0046] 傳送模塊30,用于將所述命令按照固態(tài)硬盤的閃存的最大帶寬進(jìn)行下發(fā)。
[0047] 在本發(fā)明的第三實(shí)施例中,在固態(tài)硬盤的分區(qū)多于4個(gè)時(shí),所述建立模塊10根據(jù) 所述文件系統(tǒng)分區(qū)協(xié)議,解析所述固態(tài)硬盤的主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄,并根據(jù)所述主 引導(dǎo)記錄和擴(kuò)展分區(qū)記錄建立包括所述固態(tài)硬盤擴(kuò)展分區(qū)的分區(qū)信息列表。
[0048] 在該實(shí)施例中,如果固態(tài)硬盤的分區(qū)多于4個(gè),則需要另外擴(kuò)展分區(qū),因此建立模 塊10將分析主引導(dǎo)記錄以及如表2所示的擴(kuò)展分區(qū)記錄。然后,根據(jù)這兩個(gè)記錄,獲得分 區(qū)信息列表。如表2?表4,以DOS分區(qū)為例,MBR (Master Boot Record,即硬盤的主引導(dǎo)記 錄)存在第一個(gè)LBA (Logical Block Address,邏輯區(qū)塊地址)里,大小為512字節(jié),000h? lBDh為引導(dǎo)代碼,IBEh?lFDh為分區(qū)信息,每個(gè)分區(qū)信息用16個(gè)字節(jié)表示,通過分區(qū)協(xié) 議,解析出磁盤MBR分區(qū)、擴(kuò)展分區(qū)信息,計(jì)算出各個(gè)分區(qū)的起始LBA信息??梢詮腖BA0中 解析出MBR,進(jìn)而依次得到分區(qū)和擴(kuò)展分區(qū),從而建立分區(qū)信息表。其次,命令分離與重組。 由于已經(jīng)建立好分區(qū)信息,所以分離是很容易實(shí)現(xiàn)的。為了使分區(qū)數(shù)據(jù)在NAND上的分布相 對(duì)集中并達(dá)到高帶寬(簡(jiǎn)單描述下,假設(shè)SSD有4個(gè)CHANNEL,每個(gè)CHANNEL每次處理的數(shù) 據(jù)量為8K,由于CHANNEL之間是獨(dú)立的,可以并行處理,所以最大的帶寬為4*8 = 32K,現(xiàn)實(shí) 中會(huì)更復(fù)雜,但原理都是看最大并行度),分區(qū)之間可以參照CPU時(shí)間片輪轉(zhuǎn)的模式,固定 在某個(gè)CHANNEL上寫,這樣由于每個(gè)CHANNEL都有數(shù)據(jù)請(qǐng)求,第一滿足最大并行度,第二分 區(qū)數(shù)據(jù)集中在某個(gè)CHANNEL上。時(shí)間片輪轉(zhuǎn)調(diào)度是一種最古老,最簡(jiǎn)單,最公平且使用最 廣的算法.每個(gè)進(jìn)程被分配一個(gè)時(shí)間段,稱作它的時(shí)間片,即該進(jìn)程允許運(yùn)行的時(shí)間。如 果在時(shí)間片結(jié)束時(shí)進(jìn)程還在運(yùn)行,則CPU將被剝奪并分配給另一個(gè)進(jìn)程。如果進(jìn)程在時(shí)間 片結(jié)束前阻塞或結(jié)束,則CPU當(dāng)即進(jìn)行切換。調(diào)度程序所要做的就是維護(hù)一張就緒進(jìn)程列 表,當(dāng)進(jìn)程用完它的時(shí)間片后,它被移到隊(duì)列的末尾。
[0049] 例如,如表1所示,SSD分為C和D兩個(gè)分區(qū),C區(qū)LPA (主機(jī)端單位為L(zhǎng)BA,可以參 照LPA :LBA轉(zhuǎn)化成LPA)區(qū)間為64?85, D區(qū)LPA區(qū)間為86?101,NAND每個(gè)Block包含 8個(gè)Page,1個(gè)Page大小為1個(gè)LPA,SSD有2個(gè)CHANNEL,NAND提供6個(gè)BLOCKS寫數(shù)據(jù),2 個(gè)BLOCKS搬移數(shù)據(jù)。
【權(quán)利要求】
1. 一種提升多分區(qū)順序讀寫性能的方法,其特征在于,包括: A、 根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所述主引導(dǎo)記錄建立 所述固態(tài)硬盤的分區(qū)信息列表; B、 根據(jù)所述分區(qū)信息列表對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離和重組。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: C、 將所述命令按照所述固態(tài)硬盤的閃存的最大帶寬進(jìn)行下發(fā)。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述步驟B中,按照所述固態(tài)硬盤中的 分區(qū)對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離,并且將屬于同一分區(qū)的所述命令在相 同的邏輯塊中進(jìn)行重組。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述固態(tài)硬盤的分區(qū)多于4個(gè)時(shí),所述 步驟A還包括:根據(jù)所述文件系統(tǒng)分區(qū)協(xié)議,解析所述固態(tài)硬盤的主引導(dǎo)記錄和擴(kuò)展分區(qū) 記錄,并根據(jù)所述主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄建立包括所述固態(tài)硬盤擴(kuò)展分區(qū)的分區(qū)信息 列表。
5. 根據(jù)權(quán)利要求1?4任一所述的方法,其特征在于,所述分區(qū)信息列表包括:每個(gè)所 述分區(qū)的起始LBA和LBA個(gè)數(shù); 所述命令包括所述主機(jī)端發(fā)起的順序讀命令或者順序?qū)懨睢?br>
6. -種提升多分區(qū)順序讀寫性能的系統(tǒng),其特征在于,包括: 建立模塊,用于根據(jù)文件系統(tǒng)分區(qū)協(xié)議,解析固態(tài)硬盤的主引導(dǎo)記錄,并根據(jù)所述主引 導(dǎo)記錄建立所述固態(tài)硬盤的分區(qū)信息列表; 分離重組模塊,用于根據(jù)所述分區(qū)信息列表對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行 分離和重組。
7. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 傳送模塊,用于將所述命令按照所述固態(tài)硬盤的閃存的最大帶寬進(jìn)行下發(fā)。
8. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述分離重組模塊按照所述固態(tài)硬盤中 的分區(qū)對(duì)所述固態(tài)硬盤的主機(jī)端發(fā)送的命令進(jìn)行分離,并且將屬于同一分區(qū)的所述命令在 相同的邏輯塊中進(jìn)行重組。
9. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,在所述固態(tài)硬盤的分區(qū)多于4個(gè)時(shí),所述 建立模塊根據(jù)所述文件系統(tǒng)分區(qū)協(xié)議,解析所述固態(tài)硬盤的主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄, 并根據(jù)所述主引導(dǎo)記錄和擴(kuò)展分區(qū)記錄建立包括所述固態(tài)硬盤擴(kuò)展分區(qū)的分區(qū)信息列表。
10. 根據(jù)權(quán)利要求6?9任一所述的系統(tǒng),其特征在于,所述分區(qū)信息列表包括:每個(gè) 所述分區(qū)的起始LBA和LBA個(gè)數(shù); 所述命令包括所述主機(jī)端發(fā)起的順序讀命令或者順序?qū)懨睢?br>
【文檔編號(hào)】G06F12/02GK104111894SQ201410340464
【公開日】2014年10月22日 申請(qǐng)日期:2014年7月17日 優(yōu)先權(quán)日:2014年7月17日
【發(fā)明者】周冬華, 王猛, 徐偉華 申請(qǐng)人:記憶科技(深圳)有限公司