本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法。
背景技術(shù):
隨著半導(dǎo)體技術(shù)的進步,閃存容量越來越大,價格也卻越來越便宜,固態(tài)硬盤SSD在越來越多的領(lǐng)域取代以磁帶為媒介的傳統(tǒng)機械硬盤(HDD)。固態(tài)硬盤與機械硬盤最大的區(qū)別在于,固態(tài)硬盤中沒有任何機械部件。所以,相比傳統(tǒng)硬盤,固態(tài)硬盤具有更低的延時和能耗,更快的數(shù)據(jù)處理速度,更好的抗震性能,更高的可靠性和耐用性。
固態(tài)硬盤的存儲器件采用的是閃存,NAND型閃存具有以下幾個特點:
①讀寫基本單位是以頁(Page)為單位,擦除是以塊(Block)為單位;頁的大小為nKB(KB單位為1024字節(jié)),n通常等于2,4,8或16。每塊包含m頁,m通常為64,128或者256。
②每個物理塊,必須先擦除后,才能夠?qū)懭霐?shù)據(jù)。
③每個塊有一定的壽命,即擦除次數(shù)是有限的。舉例來說,對于SLC(Single Level Cell)Flash,即單邏輯單元閃存,壽命為10,00,00次;而對于MLC(Multi-Level Cell)Flash,典型壽命為1500-3,000次。
基于閃存的上述特點,在固態(tài)硬盤中引入了閃存轉(zhuǎn)換層FTL,用于對閃存進行存儲控制。比如,F(xiàn)lash寫數(shù)據(jù)只能將1寫為0,擦除數(shù)據(jù)是將所有數(shù)據(jù)都寫為1,因此如果在已經(jīng)有數(shù)據(jù)的Flash上寫入新的數(shù)據(jù),則必須先是整塊擦除(所有存儲為全部為1),然后再寫入新數(shù)據(jù)。這也決定了做適合讀寫SSD的最小單元是Page。在過去的機械硬盤時代,操作系統(tǒng)認為磁盤是一連串扇區(qū)(Sector,包含512Byte存儲空間),這是對硬盤操作的最小單位。這一系列的物理特性的限制,要求FTL承擔(dān)向下兼容的特性。FTL位于文件系統(tǒng)和物理介質(zhì)之間,把Flash的操作習(xí)慣虛擬成以傳統(tǒng)硬盤的512Byte扇區(qū)進行操作。操作系統(tǒng)就可以按照傳統(tǒng)的扇區(qū)方式操作,而不用擔(dān)心之前說的擦除/讀/寫問題。一切邏輯到物理的轉(zhuǎn)換,都由FTL來完成,如圖1所示。
FTL層負責(zé)將上層文件系統(tǒng)的讀寫請求轉(zhuǎn)換成閃存物理層面的讀寫操作命令,同時,依據(jù)閃存的操作特點完成相應(yīng)的管理。FTL算法,特別是它對應(yīng)的閃存映射表FMT(Flash Mapping Table)機制,是影響固態(tài)硬盤性能高低的關(guān)鍵所在。
傳統(tǒng)的數(shù)據(jù)映射方式采用塊映射和頁映射。隨著閃存頁面的增大,頁映射和塊映射在隨機讀寫上的速度的不足顯現(xiàn)出來。頁映射是將邏輯頁映射到Flash中的任何一個物理頁(Physical Page)。如果把邏輯區(qū)塊地址(Logical Block Address,LBA)切割成很多以物理頁大小為單位的操作單元,該映射算法在物理頁小于或等于4KB的時候,管理的靈活度高,垃圾回收負載小。但是隨著工藝的提升,F(xiàn)lash的物理頁逐漸增大,目前主流基本為16KB的物理頁,并有擴大到32KB的趨勢。當物理頁大于4KB的時候,隨機寫入小文件(通常IOPS的測量是基于4KB大小的隨機數(shù)據(jù)塊),將會導(dǎo)致一個物理頁只用掉4KB空間,剩余的物理頁空間補充其他數(shù)據(jù),這時候?qū)懭敕糯骔A(Write Amplification)系數(shù)就會變大,隨著物理頁大小的增大這種算法的劣勢會越來越大。顯然,按照這樣子簡單的映射方法是無法滿足寫入速度的要求的,同時,也大大消耗了閃存的“壽命”。
故,針對目前現(xiàn)有技術(shù)中存在的上述缺陷,實有必要進行研究,以提供一種方案,解決現(xiàn)有技術(shù)中存在的缺陷。
技術(shù)實現(xiàn)要素:
有鑒于此,確有必要提供一種用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法,從而能夠改善隨機讀寫的速度,并提高閃存的使用壽命。
為了克服現(xiàn)有技術(shù)的缺陷,本發(fā)明的技術(shù)方案如下:
一種用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法,包括以下步驟:
步驟S1:在閃存轉(zhuǎn)換層(FTL)中設(shè)置最小管理單元,且N個最小管理單元剛好構(gòu)成一個閃存物理頁的空間,其中,N為大于0的正整數(shù);
步驟S2:邏輯地址和物理地址之間以最小管理單元來進行映射;
步驟S3:FTL為每個最小管理單元數(shù)據(jù)給予一個地址標識進行管理;
步驟S4:當主機寫入數(shù)據(jù)時,等待連續(xù)寫入數(shù)據(jù)達到一個完整的閃存物理頁空間后,再一次性寫入一個完整的空白閃存物理頁。
優(yōu)選地,所述步驟S3中,在閃存映射表(FMT)中為每個最小管理單元數(shù)據(jù)設(shè)置一個獨立的地址碼。
優(yōu)選地,所述最小管理單元采用4KB存儲容量。
優(yōu)選地,閃存映射表(FMT)采用分段調(diào)度的方式,將當前需要用到的相關(guān)部分的閃存映射表讀入內(nèi)存,而其余部分閃存映射表存放在外部存儲空間。
優(yōu)選地,閃存映射表(FMT)存放到外部的DRAM空間。
優(yōu)選地,閃存映射表(FMT)存放到閃存中。
與現(xiàn)有技術(shù)相比較,本發(fā)明提供的用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法,閃存轉(zhuǎn)化層采用4KB數(shù)據(jù)塊映射算法,從而能夠有效提高隨機讀寫速度,同時能夠在有限的片上存儲空間來實現(xiàn)越來越大的映射表。
附圖說明
圖1為現(xiàn)有技術(shù)中FTL映射圖。
圖2為本發(fā)明用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法的流程框圖。
圖3為采用頁映射方式下隨機寫的FLASH存儲分布。
圖4為采用4KB映射方式下隨機寫的FLASH存儲分布。
圖5為傳統(tǒng)頁映射的PMT映射圖。
圖6為本發(fā)明一種優(yōu)選實施方式中4KB映射的PMT映射圖。
如下具體實施例將結(jié)合上述附圖進一步說明本發(fā)明。
具體實施方式
以下將結(jié)合附圖對本發(fā)明提供的一種用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法作進一步說明。
隨著閃存物理頁大小的增大,傳統(tǒng)頁映射方式將會導(dǎo)致寫入放大WA(Write Amplification)系數(shù)變大,從而無法滿足寫入速度的要求的,同時,也大大消耗了閃存的“壽命”。
舉一個簡單的寫入放大例子,假設(shè)Page大小為16KB,每次寫入4KB,基本需要:
①讀出此Page內(nèi)不需要修改的12KB;
②尋找新的物理Page寫入完整的16KB數(shù)據(jù)(包括讀出的12KB、新寫入的4KB)。也就是說,寫入4KB,實際上需要寫入16KB,寫入放大系數(shù)是
為了克服上述技術(shù)缺陷,參見圖2,所示為本發(fā)明一種用于固態(tài)存儲設(shè)備的閃存轉(zhuǎn)換層控制方法的流程框圖,包括以下步驟:
步驟S1:在閃存轉(zhuǎn)換層(FTL)中設(shè)置最小管理單元,且N個最小管理單元剛好構(gòu)成一個閃存物理頁的空間,其中,N為大于0的正整數(shù);優(yōu)選地,最小管理單元通常采用4KB存儲容量,通常操作系統(tǒng)讀寫數(shù)據(jù)的以4KB為最小單位,同時,IOPS的測量也是基于4KB大小的隨機數(shù)據(jù)塊。
步驟S2:邏輯地址和物理地址之間以最小管理單元來進行映射;
步驟S3:FTL為每個最小管理單元數(shù)據(jù)給予一個地址標識進行管理;
步驟S4:當主機寫入數(shù)據(jù)時,等待連續(xù)寫入數(shù)據(jù)達到一個完整的閃存物理頁空間后,再一次性寫入一個完整的空白閃存物理頁。
參見圖3和圖4,所示分別為采用頁映射方式和4KB映射方式下隨機寫的FLASH存儲分布情況。從圖3可以看出,現(xiàn)有技術(shù)的頁映射一個Page只是寫入了4KB,剩余的部分用其它數(shù)據(jù)填滿,16KB的空間只記錄了4KB有效數(shù)據(jù)。從圖4可以看出,本發(fā)明提出的4KB映射,一個Page能夠存滿16KB的數(shù)據(jù)。基本原理為:來自主機的寫入數(shù)據(jù),每4KB給予一個地址進行管理;連續(xù)幾個4KB達到一個完整的閃存Page數(shù)據(jù)量的時候,把它們一次性寫入一個完整的閃存Page。特別當Flash讀寫采用4KB隨機讀寫(4KB Random R/W)時,4KB映射的寫優(yōu)勢特別明顯。由于隨機讀寫數(shù)據(jù)的最小單元為4KB,把FTL的最小管理單元也適應(yīng)性地調(diào)整為每4KB數(shù)據(jù)塊為最小單元來進行映射和管理后,理性狀態(tài)下,寫入放大系數(shù)WA=1。使得隨機寫入速度,幾乎接近于連續(xù)數(shù)據(jù)流的寫入,大大提高了隨機寫入的性能。
閃存映射表(FMT)中,最重要的表為頁映射表(Paging Mapping Table,PMT),PMT是算法的核心,它至少包括邏輯頁到物理頁映射(Logic Page To Physical Page Mapping),參見圖5,所示為傳統(tǒng)頁映射的PMT映射圖,內(nèi)存地址表示邏輯頁號,內(nèi)存值表示物理頁號,PMT中存儲的每個物理地址信息對應(yīng)一個閃存物理頁,根據(jù)邏輯頁號可以獲取物理頁號。
在一種優(yōu)選實施方式中,所述步驟S3中,在閃存映射表(FMT)中為每個最小管理單元數(shù)據(jù)設(shè)置一個獨立的地址碼。也即在PMT中,為每個4KB空間設(shè)置一個獨立的物理地址。參見圖6,PMT中存儲的每個物理地址信息對應(yīng)閃存中的一段4KB空間。
上述技術(shù)方案中,采用4KB為單元的映射,從而大大提高了寫入性能,但是由于為每個4KB空間設(shè)置一個獨立的物理地址,以4KB為最小單元的映射引起了映射表存儲空間的成倍增大。映射表大小參見以下公式:
假設(shè)硬盤存儲空間128GB,每個映射單元的地址表征字節(jié)數(shù)為4,即用4字節(jié)地址來表示一個映射單元的地址,采用16KB Page映射,映射表格大小為32MB;而采用4KB映射,則映射表格大小為128MB。
另外,在上述技術(shù)方案中,由于為每個4KB空間設(shè)置一個獨立的物理地址,讀取時候的搜索就變成為每4KB就要搜索一次。而在16KB Page為單元的映射情況下,一次映射表的搜索,可以讀取16KB數(shù)據(jù),即每16KB搜索一次閃存映射表格。因此,隨機寫入性能的增加,一定程度上是以降低了隨機讀性能為折中的。但是在硬件性能大大提高的前提下,搜索速度(效能)很高,隨機讀速度的降低相比于隨機寫性能的提高,以及對于寫入放大系數(shù)WA的降低(從而提高閃存使用壽命),是非常值得的。
在一種優(yōu)選實施方式中,閃存映射表(FMT)采用分段調(diào)度的方式,將當前需要用到的相關(guān)部分的閃存映射表讀入內(nèi)存,而其余部分閃存映射表存放在外部存儲空間。由于映射表需要在集成電路芯片內(nèi)調(diào)度使用,芯片內(nèi)的緩存一般采用SRAM來實現(xiàn)。超過1MB大小的SRAM空間對于當前的集成電路細芯片需要占據(jù)很大的空間,性價比不高。通過采用分段調(diào)度的方式可以解決問題。即把當前需要用到的表格部分,讀入SRAM,而把其余部分存放在芯片外部空間。芯片外部空間存放的形式有兩種:
存放到外部的DRAM(Dynamic Random Access Memory)空間。優(yōu)點是,存取速度很快,性能優(yōu)越。缺點是,需要額外的硬件資源和成本,增加了芯片的復(fù)雜度、額外的DRAM芯片的成本;在電源不穩(wěn)定(包括異常掉電)情形下,很難對DRAM內(nèi)的大量表格數(shù)據(jù)及時備份保護,容易引起硬盤映射表格的丟失造成硬盤損壞。適合于電源穩(wěn)定、追求極致讀寫性能的硬盤和系統(tǒng),比如,高速計算機或者服務(wù)器的第一級硬盤陣列、熱數(shù)據(jù)存儲。
存放到閃存(Flash Memory)中。優(yōu)點是,沒有額外硬件成本開支;異常電源問題的情況下,容易保護映射表不丟失,或者容易丟失后自我重建,可靠性高。缺點是,存取速度相對比較慢,引起讀寫性能的一定程度下降;該方法也造成額外的閃存寫入負擔(dān)(WA系數(shù)略略增大)。適合于追求可靠性、讀寫性能要求一般的硬盤和系統(tǒng),比如工業(yè)設(shè)備、大型數(shù)據(jù)庫的冷數(shù)據(jù)存儲。
下面通過計算分析4KB映射存儲管理的讀寫速度及性能分析。假設(shè)隨機寫入4個4KB的數(shù)據(jù),F(xiàn)lash的頁大小為16KB,以下分別計算頁映射和4KB映射的速度。
隨機寫入4個4KB的數(shù)據(jù)時,4KB映射算法最大寫速度(不更換映射表):
最小寫速度(每個4KB都要更換全部的映射表):
公式(3)和公式(4)中,Tx0是指寫入16KB數(shù)據(jù)過程用來通過總線搬移數(shù)據(jù)的時間;Tw是寫入閃存時候的編程等待時間(體現(xiàn)為閃存總線總即busy時間);本文芯片內(nèi),SRAM資源用于存放4KB Mapping映射表的大小為13KB(其中8KB為直接地址映射,3KB為其他輔助信息),搬移映射表的時間為Tx1,讀取閃存數(shù)的總線等待時間(體現(xiàn)為總線忙即busy時間)為Tr,如果兩個4KB之間需要全部更新一次映射表(調(diào)用和更新當前SRAM內(nèi)的映射表)的時間為Tm=Tr+Tx1。
隨機寫入4個4KB的數(shù)據(jù)時,頁映射算法最大寫速度(不更換映射表):
最小寫速度(每個4KB都要更換全部的映射表):
公式(5)和公式(6)中,由于頁映射(Page Mapping)每次系統(tǒng)對硬盤寫入4KB數(shù)據(jù)時候,硬盤控制器芯片需要對另外12KB數(shù)據(jù)進行補齊,所以需要一個12KB數(shù)據(jù)的搬移時間Tp,以及一個讀的延遲時間Tr(從閃存讀取12KB時候的總線等待時間,體現(xiàn)為總線忙即BUSY時間)。
對比公式(3)和(5),(4)和(6),得知4KB映射的寫速度高于頁映射。
針對128GB的固態(tài)硬盤,閃存映射表(FMT表)總計32MB,按本文芯片資源給予的8KB SRAM內(nèi)存,具有4M個“映射表段”(每個8KB大小),其中只有一段8KB映射表段被導(dǎo)入控制器芯片內(nèi)存SRAM(稱為“當前內(nèi)存表段”),可以隨時被搜索查詢。因此,隨機寫入的4個4KB數(shù)據(jù),有四種可能性分布對應(yīng)于落入FMT中:
全部4個4KB數(shù)據(jù)落在同一個映射表段,那么此時寫入數(shù)據(jù)時只有一個busy時間,概率為:
(2)全部4個4KB數(shù)據(jù)落在兩個映射表段,有兩個busy時間,概率為:
(3)全部4個4KB數(shù)據(jù)落在三個映射表段,有三個busy時間,概率為:
全部4個4KB數(shù)據(jù)落在四個映射表段,有四個busy時間,概率為:
當寫入四個4KB數(shù)據(jù)時,平均概率為:
頁映射(Page Mapping)在隨機寫入4個4KB數(shù)據(jù)時候,它首先傳輸4KB有效數(shù)據(jù)給相應(yīng)地址的頁(頁大小為16KB),F(xiàn)lash讀寫是以頁為單位的,則頁內(nèi)剩下的空間填充全1或全0。由于是隨機寫入數(shù)據(jù),并且是頁映射,那么每次隨機寫入4KB的地址都不同,它將會如第一個4KB數(shù)據(jù)那樣寫入另一個頁中,每次寫入16KB到Flash中,有效的數(shù)據(jù)也只有4KB,那么它的傳輸效率為25%。按第一章末尾分析的結(jié)果,其寫入放大系數(shù)WA>4。
相比之下,基于4KB映射的方法,在隨機寫入4個4KB數(shù)據(jù)時,它會在16KB大小的頁內(nèi)等待4個4KB數(shù)據(jù)寫完,再寫入Flash中,也就是說這個頁寫入的都是需要傳輸?shù)?個4KB的有效數(shù)據(jù),所以理論值上的傳輸效率為100%。相應(yīng)的寫入放大系數(shù)WA>1而且接近于1。
基于4KB映射算法思路,本發(fā)明實現(xiàn)了一顆固態(tài)硬盤控制器芯片的設(shè)計。該芯片采用110nm工藝,已經(jīng)在8英寸硅片上面實現(xiàn)了批量生產(chǎn)。芯片尺寸3.908mm*3.746mm,采用SATA PHY,具有3Gb/s的數(shù)據(jù)傳輸速率。片上集成的電源管理電路,可以把5V電源轉(zhuǎn)換成為I/O電路和閃存芯片需要的3.3V電壓,同時也產(chǎn)生芯片內(nèi)部需要的1.2V電源。本發(fā)明討論的映射表存儲采用SRAM實現(xiàn)。
為了檢驗本發(fā)明描述算法的效果,這里采用市場上常見的M公司的兩個NAND閃存型號來進行測試和比較,其中一個型號的閃存頁面大小(Page Size)為8KB,另外一個型號的閃存頁面大小為16KB,因為出自同一個公司的同系列產(chǎn)品,其余標稱參數(shù)基本上一致,如讀取等待時間為75us,編程(寫入)等待時間1300us。通過測速軟件來測試這兩款Flash使用頁映射和4KB映射的隨機傳輸4KB數(shù)據(jù)的寫速度,如表1所示??梢钥闯觯簾o論頁面大小是8KB還是16KB,4KB映射的平均速度明顯比頁映射的速度快,并且頁面越大,4KB映射的速度與頁映射的速度差距增大。
表1使用不同映射方式的隨機寫測試速度
上述討論4KB映射方式下的隨機寫性能,在實際存儲操作中,還需要考慮連續(xù)寫性能。4KB映射方式,由于FMT更新更頻繁,顯然,當寫入大數(shù)據(jù)時,相對于頁映射方式,其寫效率反而降低。
為了克服上述技術(shù)缺陷,在本發(fā)明的一種優(yōu)選實施方式中,還包括獲取主機寫入文件大小的步驟,當文件的數(shù)據(jù)量大于單個閃存物理頁的存儲空間時,采用頁映射進行閃存管理。而當文件的數(shù)據(jù)量小于單個閃存物理頁的存儲空間時,將文件的數(shù)據(jù)先以最小管理單元為單位進行分割,再以最小管理單元映射進行閃存管理。也即采用頁映射和4KB映射相結(jié)合的方式,從而提高了閃存轉(zhuǎn)換層的隨機寫性能和連續(xù)寫性能。
以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。