一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法
【專利摘要】本發(fā)明提供了一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于在FTL映射表上層增加了一個二級映射維護模塊,該二級映射維護模塊維護了一張二級NoMapping映射表,所述二級NoMapping映射表將FTL映射表的LPA平均分為多個LPA分區(qū),每個LPA分區(qū)對應一個DESC,每個DESC描述對應LPA分區(qū)是否有映射,主機端讀命令先查找所述二級NoMapping映射表,就可判定該讀命令對應的地址是否為NoMapping,如果查找結(jié)果為NoMapping,讀命令即可迅速響應。本發(fā)明創(chuàng)建的二級NoMapping映射表是以FTL頁映射表為基礎,但其映射顆粒度卻顯著增大,從而使得查找效率大大提高;如果查找結(jié)果為NoMapping,讀命令即可迅速響應并返回,無需再到FTL;如果大量NoMapping讀命令一起出現(xiàn),本發(fā)明執(zhí)行效率將較現(xiàn)有技術(shù)大大提高。
【專利說明】一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法
【技術(shù)領域】
[0001]本發(fā)明涉及信息存儲領域,尤其涉及一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法。
【背景技術(shù)】
[0002]固態(tài)硬盤(SSD)中都設有閃存?zhèn)鬏攲?,簡稱FTL (Flash Transfer Layer),該FTL維護著一張映射表,記錄著SSD中的Nand Flash所有物理地址的映射信息。當主機發(fā)出的讀命令到達FTL后,檢查該映射表,如果讀的地址區(qū)域處于未映射狀態(tài)(也叫NoMapping狀態(tài)),所謂的地址區(qū)域處于未映射狀態(tài)表明該區(qū)域內(nèi)還沒有寫入內(nèi)容,因此該讀命令不需要去訪問實際地址上的數(shù)據(jù),即可直接向上層響應。判斷一個讀命令所對應的地址區(qū)域是否處于NoMapping狀態(tài),需要讀命令到FTL中檢查映射表,由于基于頁的FTL映射表顆粒度較小,該表的數(shù)據(jù)量較大,查找效率較低,導致地址區(qū)域處于NoMapping狀態(tài)的讀命令響應滯后。
[0003]現(xiàn)有技術(shù)在FTL維護了一張映射表,記錄了邏輯地址與Nand Flash物理地址的映射關系。映射方式可分為頁映射、塊映射和混合映射,頁映射的準確程度最高,目前的FTL映射表普遍采用這種方式。頁映射表以LPA(Logical Page Address,邏輯頁地址)為基本單位,每個LPA可映射Nand Flash的一個PPA (Physical Page Address,物理頁地址),寫地址為某一 LPA的數(shù)據(jù)將被最終寫到對應PPA中。LPA也可能沒有映射信息,說明該LPA還沒有寫入任何內(nèi)容,如果此時一個讀命令來讀這一區(qū)域,讀到的將是無效值,這樣的讀命令即為 NoMapping 讀。
[0004]現(xiàn)有技術(shù)在處理NoMapping讀時,通過查找FTL映射表,在獲取到NoMapping結(jié)果后就會返回上層。然而,基于頁的FTL映射表顆粒度太小,導致查找映射表得到NoMapping信息的效率不高,從而使得NoMapping讀命令響應滯后。用戶在使用固態(tài)硬盤過程中,經(jīng)常會遇到大量NoMapping讀命令一起出現(xiàn)的情形,采用現(xiàn)有技術(shù)方案會使固態(tài)硬盤的NoMapping讀性能大大降低。
【發(fā)明內(nèi)容】
[0005]針對以上缺陷,本發(fā)明目的在于提出如何解決現(xiàn)有技術(shù)在處理NoMapping讀命令的過程中,檢索FTL頁映射表時出現(xiàn)的檢索效率低、整體執(zhí)行速度慢的問題。
[0006]為了實現(xiàn)上述目的,本發(fā)明提供了一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于在FTL映射表上層增加了一個二級映射維護模塊,該二級映射維護模塊維護了一張二級NoMapping映射表,所述二級NoMapping映射表將FTL映射表的LPA平均分為多個LPA分區(qū),每個LPA分區(qū)對應一個DESC,每個DESC描述對應LPA分區(qū)是否有映射,主機端讀命令先查找所述二級NoMapping映射表,就可判定該讀命令對應的地址是否為NoMapping,如果查找結(jié)果為NoMapping,讀命令即可迅速響應。
[0007]所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射表的每個DESC包括3種狀態(tài),分別為Invalid、Mapping、NoMapping ;其中Invalid是無效狀態(tài),表示還不知道該DESC的映射信息;Mapping是已映射的狀態(tài),表示該DESC對應的地址區(qū)域已被寫過;NoMapping是未映射的狀態(tài),表示該DESC對應的地址區(qū)域都未被寫過,或者曾寫過但已經(jīng)被清空。
[0008]所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射表設置在DRAM中。
[0009]所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射在每次固態(tài)硬盤上電時進行重建。
[0010]所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,所述的二級NoMapping映射在每次固態(tài)硬盤上電時進行重建由后臺線程與系統(tǒng)其它線程并行運行實現(xiàn)重建。
[0011]本發(fā)明創(chuàng)建的二級NoMapping映射表是以FTL頁映射表為基礎,但其映射顆粒度卻顯著增大,從而使得查找效率大大提高;如果查找結(jié)果為NoMapping,讀命令即可迅速響應并返回,無需再到FTL ;如果大量NoMapping讀命令一起出現(xiàn),本發(fā)明執(zhí)行效率將較現(xiàn)有技術(shù)大大提聞。
【專利附圖】
【附圖說明】
[0012]圖1是:現(xiàn)有技術(shù)對NoMapping讀命令的處理流程示意圖;
[0013]圖2是:增加二級NoMapping映射表后對NoMapping讀命令的處理流程示意圖;
[0014]圖3是:二級NoMapping映射表與FTL頁映射表的關系圖;
[0015]圖4是:讀寫命令的LPA與對應DESC之間的關系圖;
[0016]圖5是:Trim命令的LPA與對應DESC之間的關系圖;
[0017]圖6是:二級NoMapping映射表的后臺重建示意圖;
[0018]圖7是:讀命令引發(fā)的二級NoMapping映射表的重建示意圖;
[0019]圖8是:寫命令引發(fā)的二級NoMapping映射表的更新示意圖;
[0020]圖9是:Trim命令引發(fā)的二級NoMapping映射表的更新示意圖。
【具體實施方式】
[0021]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0022]對于NoMapping讀命令的響應處理,圖1為現(xiàn)有技術(shù)對NoMapping讀命令的處理流程示意圖,Host Interface的讀命令需要到FTL檢查頁映射表FTL Mapping Table ;圖2為增加二級NoMapping映射表后對NoMapping讀命令的處理流程示意圖,在FTL上層增加了一個二級映射維護模塊Second NoMapping Table,該二級映射維護模塊維護了一張二級NoMapping映射表。主機下發(fā)的讀命令直接檢索二級NoMapping映射表,便可判定本條讀指令所指的讀地址上是否有映射信息,如果有繼續(xù)讀取,如果沒有直接返回。
[0023]二級NoMapping映射表是FTL頁映射表的大顆粒度模糊體現(xiàn),將FTL頁映射表中的每d個LPA設為一個分區(qū),每個分區(qū)的映射狀態(tài)用一個DESC (Descriptor,描述符)來描述。其中d為大于1的整數(shù),大小可自行設定;每個分區(qū)用DESC (Descriptor,描述符)描述FTL頁映射表中該段LPA區(qū)間的映射狀態(tài),區(qū)間大小可自行設定。定義DESC的映射狀態(tài)有3種,分別為Invalid、Mapping、NoMapping ;其中Invalid是無效狀態(tài),表示還不知道該DESC的映射信息;Mapping是已映射的狀態(tài),表示該DESC對應的地址區(qū)域已被寫過;NoMapping是未映射的狀態(tài),表示該DESC對應的地址區(qū)域都未被寫過,或者曾寫過但已經(jīng)被清空。
[0024]圖3是二級NoMapping映射表與FTL頁映射表的關系圖,F(xiàn)TL頁映射表是以LPA為單位維護,每個LPA包含多個LBA(Logical Block Address,邏輯塊地址)信息,每d個LPA構(gòu)成一個DESC,每個DESC描述了它對應LPA區(qū)間的映射狀態(tài)。二級NoMapping映射表存在DRAM中,固態(tài)硬盤每次上電都會重建該映射表。重建完成后,主機發(fā)出的讀命令只需檢查二級NoMapping映射表,便可得知相應讀地址上是否有映射信息。二級NoMapping映射表的顆粒度要顯著大于FTL頁映射表,從而使得查找效率大大提高;如果查找結(jié)果為NoMapping,讀命令即可迅速響應并返回主機,無需再到FTL ;如果大量NoMapping讀命令一起出現(xiàn),本專利方案的執(zhí)行效率將較現(xiàn)有技術(shù)方案大大提高。
[0025]主機下發(fā)的命令是以LBA為基本單位,經(jīng)過簡單計算可得到該命令所在的LPA,進而得到該LPA所屬的DESC。在實際計算命令對應的DESC時,Trim命令與普通讀寫命令的計算方式有所不同。
[0026]圖4是讀寫命令的LPA與對應DESC之間的關系圖,假設該命令的起始LPA處于某個DESC對應LPA區(qū)間的中間位置,而不是區(qū)間與區(qū)間的分界點;該命令的結(jié)束LPA處在另一個DESC對應LPA區(qū)間的中間位置,那么這兩個DESC之間(包括這兩個)的所有DESC都是該讀寫命令對應的DESC。
[0027]圖5是Trim命令的LPA與對應DESC之間的關系圖,假設該命令的起始LPA和結(jié)束LPA都不在區(qū)間與區(qū)間的分界點,而分別處在兩個DESC對應區(qū)間的中間位置,那么這兩個DESC之間(不包括這兩個)的所有DESC都是該Trim命令對應的DESC。
[0028]Trim命令與普通讀寫命令的差別就在于:當命令的起始或結(jié)束LPA處在某DESC對應區(qū)間的中間位置時,該DESC是否屬于此命令。普通讀寫命令是屬于,Trim命令則是不屬于。如果命令的起始LPA或結(jié)束LPA恰好處在某DESC的邊界上,那普通讀寫命令與Trim命令的判定是一樣的:該DESC屬于此命令。
[0029]具體二級NoMapping映射表的重建和更新流程如下:
[0030]1)重建過程。
[0031]圖6是二級NoMapping映射表的后臺重建示意圖,重新上電后,二級NoMapping映射表中所有DESC的初始狀態(tài)都為Invalid,此時開始按順序進行重建。重建是指通過查找FTL映射表,重新設定二級NoMapping映射表中Invalid DESC的狀態(tài)。只有當DESC中所有的LPA都為NoMapping時,該DESC的狀態(tài)才會設為NoMapping。由于考慮到表中所有DESC全部重建會耗費較長時間,為了不讓其它進程等待,重建可分多次進行,每次只重建少量Invalid DESC。經(jīng)過一段時間后,二級NoMapping映射表就會重建完成,屆時表中將不再有 Invalid 的 DESC。
[0032]上述重建在后臺進行,可稱為后臺重建,后臺重建是按順序進行,每次只重建少量DESC。此外還有一種重建方式,圖7是讀命令引發(fā)的二級NoMapping映射表的重建示意圖,當主機發(fā)出一個讀命令,查找二級NoMapping映射表時,發(fā)現(xiàn)對應DESC狀態(tài)為Invalid,說明后臺重建還沒有到達此DESC,此時需要主動重建,即主動查找FTL映射表并設置該DESC的狀態(tài),結(jié)果可能是Mapping、NoMapping或者Invalid,如結(jié)果仍是Invalid,表明重建失敗,后續(xù)將重新重建。主動重建是無序的,且重建只限于該讀命令對應的DESC,不管重建成功與否,只進行一次操作。
[0033]2)更新流程。
[0034]二級NoMapping映射表中DESC的狀態(tài)會隨著主機下發(fā)的命令而發(fā)生更新,狀態(tài)的更新有兩種:寫命令將對應DESC的狀態(tài)重新設置為Mapping,Trim命令將對應DESC的狀態(tài)重新設置為NoMapping。
[0035]圖8是寫命令引發(fā)的二級NoMapping映射表的更新示意圖,寫命令在更新對應DESC狀態(tài)之前,DESC的狀態(tài)可能是Mapping、NoMapping或Invalid,例如,如果DESC更新前的狀態(tài)是Invalid,說明該DESC還未重建。
[0036]圖9是Trim命令引發(fā)的二級NoMapping映射表的更新示意圖,Trim命令在更新對應DESC狀態(tài)之前,DESC的狀態(tài)也可能是Mapping、NoMapping或Invalid。
[0037]寫命令和Trim命令對二級NoMapping映射表的更新都是即時的,一次完成。
[0038]以上所揭露的僅為本發(fā)明一種實施例而已,當然不能以此來限定本之權(quán)利范圍,本領域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于在FTL映射表上層增加了一個二級映射維護模塊,該二級映射維護模塊維護了一張二級NoMapping映射表,所述二級NoMapping映射表將FTL映射表的LPA平均分為多個LPA分區(qū),每個LPA分區(qū)對應一個DESC,每個DESC描述對應LPA分區(qū)是否有映射,主機端讀命令先查找所述二級NoMapping映射表,就可判定該讀命令對應的地址是否為NoMapping,如果查找結(jié)果為NoMapping,讀命令即可迅速響應。
2.根據(jù)權(quán)利要求1所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射表的每個DESC包括3種狀態(tài),分別為Invalid、Mapping、NoMapping ;其中Invalid是無效狀態(tài),表示還不知道該DESC的映射信息;Mapping是已映射的狀態(tài),表示該DESC對應的地址區(qū)域已被寫過;NoMapping是未映射的狀態(tài),表示該DESC對應的地址區(qū)域都未被寫過,或者曾寫過但已經(jīng)被清空。
3.根據(jù)權(quán)利要求2所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射表設置在DRAM中。
4.根據(jù)權(quán)利要求3所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,其特征在于所述的二級NoMapping映射在每次固態(tài)硬盤上電時進行重建。
5.根據(jù)權(quán)利要求4所述的提高固態(tài)硬盤對未映射區(qū)域的讀性能的方法,所述的二級NoMapping映射在每次固態(tài)硬盤上電時進行重建由后臺線程與系統(tǒng)其它線程并行運行實現(xiàn)重建。
【文檔編號】G06F12/06GK104461387SQ201410723514
【公開日】2015年3月25日 申請日期:2014年12月2日 優(yōu)先權(quán)日:2014年12月2日
【發(fā)明者】姚蘭, 許毅, 鄭春陽 申請人:記憶科技(深圳)有限公司