本發(fā)明屬于存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種閃存管理系統(tǒng)、方法及閃存芯片。
背景技術(shù):
閃存的管理控制技術(shù)通常包括輸出/輸入指令(i/ocommand)、數(shù)據(jù)管理(datashaping)、平均磨耗技術(shù)(wearleveling)、有效塊回收(garbagecollection)、電源斷電供電處理(powercycle)和好壞塊管理(blockmanagement)以上這些,對(duì)閃存控制芯片都是很重要的工作。由于閃存工藝和算法越來(lái)越先進(jìn),而消費(fèi)者也非常重視隨機(jī)讀寫(xiě)(randomaccess)效能,所以有效塊回收(garbagecollection)算法就變成是一個(gè)很重要的部份。
閃存轉(zhuǎn)換層flashtranslationlayer(ftl)算法,可以大致區(qū)分為塊映射(blockmapping)、頁(yè)映射(pagemapping)及扇映射(sectormapping)這三種,而過(guò)去在塊映射(blockmapping)的算法部份比較重視數(shù)據(jù)緩沖存儲(chǔ)器的空間節(jié)省,故有效塊回收算法部份并沒(méi)有太多的發(fā)揮,所以隨機(jī)讀寫(xiě)(randomaccess)效能一直是塊映射(blockmapping)的問(wèn)題,直到頁(yè)映射(pagemapping)算法的出現(xiàn)才改善此問(wèn)題。
比起塊映射(blockmapping),頁(yè)映射(pagemapping)所使用的數(shù)據(jù)緩沖存儲(chǔ)器的空間比較大,基于商業(yè)的考慮,對(duì)于每個(gè)有效塊的有效頁(yè)(validpage)數(shù)都會(huì)是記錄有效頁(yè)數(shù)的值,如果要去找尋有效頁(yè)(validpage)出來(lái),則必需要找出該塊(block)的所有頁(yè)才可以知道那一個(gè)頁(yè)是真正的有效頁(yè),導(dǎo)致不能快速的找出有效頁(yè),增加了有效塊回收的成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種閃存管理系統(tǒng)、方法及閃存芯片,旨在解決現(xiàn)有的問(wèn)題。
在本發(fā)明實(shí)施例中,提供一種閃存管理系統(tǒng),所述系統(tǒng)包括閃存和閃存控制器,所述閃存包括若干個(gè)由若干個(gè)依序排列的頁(yè)組成的塊,所述頁(yè)包括用戶(hù)數(shù)據(jù)區(qū)、ecc校驗(yàn)區(qū)和冗余區(qū),所述閃存控制器在向所述頁(yè)寫(xiě)入數(shù)據(jù)時(shí),根據(jù)所述冗余區(qū)的容量向所述冗余區(qū)中依次寫(xiě)入當(dāng)前頁(yè)和當(dāng)前頁(yè)的前面多個(gè)頁(yè)的邏輯地址。
在本發(fā)明實(shí)施例中,所述冗余區(qū)存儲(chǔ)的頁(yè)邏輯地址數(shù)量
n=冗余區(qū)空間大小/logical_page_size,小數(shù)點(diǎn)無(wú)條件進(jìn)位,
其中,logical_page_size為所述頁(yè)的邏輯地址需使用的空間,且
logical_page_size=log256(閃存總?cè)萘?頁(yè)大小),小數(shù)點(diǎn)無(wú)條件進(jìn)位。
在本發(fā)明實(shí)施例中,所述閃存控制器對(duì)所述閃存進(jìn)行有效塊回收時(shí),采用下述步驟進(jìn)行:
找尋出有效頁(yè)數(shù)值最少的塊;
根據(jù)所述冗余區(qū)中的邏輯地址遍歷所述塊中的頁(yè),建立所述塊中有效頁(yè)的bitmap;
通過(guò)所述bitmap找出有效頁(yè)并搬至新塊中;
釋放原塊。
在本發(fā)明實(shí)施例中,建立有效頁(yè)的bitmap的過(guò)程包括下述步驟:
讀取最后一個(gè)頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)頁(yè)的邏輯地址;
根據(jù)讀取的多個(gè)頁(yè)的邏輯地址,間隔n個(gè)頁(yè)依次讀取頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)邏輯地址,并根據(jù)讀取到的邏輯地址找到相應(yīng)的頁(yè);
判斷所述頁(yè)是否有效并記錄。
在本發(fā)明實(shí)施例中,所述最后一個(gè)頁(yè)為有效頁(yè)。
在本發(fā)明實(shí)施例中,還提供一種閃存管理方法,所述方法中,閃存控制器在向所述閃存的頁(yè)寫(xiě)入數(shù)據(jù)時(shí),根據(jù)所述頁(yè)的冗余區(qū)的容量向所述冗余區(qū)中寫(xiě)入當(dāng)前頁(yè)和當(dāng)前頁(yè)的前面多個(gè)頁(yè)的邏輯地址。
所述閃存管理方法中,所述冗余區(qū)存儲(chǔ)的頁(yè)邏輯地址數(shù)量
n=冗余區(qū)空間大小/logical_page_size,小數(shù)點(diǎn)無(wú)條件進(jìn)位,
其中,logical_page_size為所述頁(yè)的邏輯地址需使用的空間,且
logical_page_size=log256(閃存總?cè)萘?頁(yè)大小),小數(shù)點(diǎn)無(wú)條件進(jìn)位。
所述閃存管理方法中,所述閃存控制器對(duì)所述閃存進(jìn)行有效塊回收時(shí),采用下述步驟進(jìn)行:
找尋出有效頁(yè)數(shù)值最少的塊;
根據(jù)所述冗余區(qū)中的邏輯地址遍歷所述塊中的頁(yè),建立所述塊中有效頁(yè)的bitmap;
通過(guò)所述bitmap找出有效頁(yè)并搬至新塊中;
釋放原塊。
所述閃存管理方法中,所述閃存管理方法中,建立有效頁(yè)的bitmap的過(guò)程包括下述步驟:
讀取最后一個(gè)頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)頁(yè)的邏輯地址;
根據(jù)讀取的多個(gè)頁(yè)的邏輯地址,間隔n個(gè)頁(yè)依次讀取頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)邏輯地址,并根據(jù)讀取到的邏輯地址找到相應(yīng)的頁(yè);
判斷所述頁(yè)是否有效并記錄。
所述閃存管理方法中,所述最后一個(gè)頁(yè)為有效頁(yè)。
在本發(fā)明實(shí)施例中,還提供一種閃存芯片,所述閃存芯片包括至少一處理器、存儲(chǔ)器及接口,所述至少一處理器、存儲(chǔ)器及接口均通過(guò)總線連接;
所述存儲(chǔ)器存儲(chǔ)計(jì)算機(jī)執(zhí)行指令;
所述至少一個(gè)處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,使得所述閃存芯片執(zhí)行上述的閃存管理方法。
與現(xiàn)有技術(shù)相比較,本發(fā)明的技術(shù)方案中,在閃存寫(xiě)入數(shù)據(jù)時(shí),在每一頁(yè)的冗余區(qū)中都寫(xiě)入當(dāng)前頁(yè)及當(dāng)前頁(yè)前面多個(gè)頁(yè)的邏輯地址,在進(jìn)行塊回收時(shí),可以根據(jù)所述冗余區(qū)中的多個(gè)頁(yè)的邏輯地址快速的建立所述塊的bitmap,進(jìn)一步地,根據(jù)所述bitmap,可以快速的實(shí)現(xiàn)所述塊的回收。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例一提供的閃存管理系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例一提供的閃存管理系統(tǒng)中頁(yè)的數(shù)據(jù)空間分配圖;
圖3是本發(fā)明實(shí)施例一提供的閃存管理系統(tǒng)中閃存頁(yè)的邏輯地址需要的內(nèi)存空間對(duì)照表;
圖4是本發(fā)明實(shí)施例一提供的閃存管理方法對(duì)閃存冗余區(qū)存儲(chǔ)數(shù)據(jù)的示意圖;
圖5是本發(fā)明實(shí)施例一提供的閃存有效塊回收方法的流程圖;
圖6是本發(fā)明實(shí)施例一提供的閃存管理方法中采用bitmap來(lái)進(jìn)行有效塊回收的示意圖;
圖7是本發(fā)明實(shí)施例二提供的閃存芯片的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述:
實(shí)施例一
本實(shí)施例中,描述了一種閃存管理系統(tǒng)和在該系統(tǒng)中對(duì)內(nèi)存進(jìn)行管理的方法。
圖1示出了本發(fā)明實(shí)施例一提供的閃存管理系統(tǒng)的結(jié)構(gòu)示意圖,所述系統(tǒng)包括閃存控制器10和閃存20,所述閃存20包括多個(gè)塊b0-b9。每一個(gè)塊都由多個(gè)依序排列的頁(yè)p0-p5組成,其中,有些頁(yè)為無(wú)效頁(yè),有些頁(yè)為有效頁(yè),還有些頁(yè)為空白頁(yè)。
為了便于說(shuō)明,本實(shí)施例將以總?cè)萘?capacity)32gbyte、滿(mǎn)頁(yè)密度(fullpagesize)為18336byte(16kpage)、總頁(yè)數(shù)為384及ecc較正能力為6xbits/perkbyte的閃存為例,進(jìn)行說(shuō)明。
由上述閃存參數(shù)可知,每個(gè)扇(sector)可以分得1146byte,其中用戶(hù)數(shù)據(jù)區(qū)(userarea)有1024byte,而ecc校驗(yàn)區(qū)每1k約占120byte,故還有2byte的冗余區(qū)(metadata),可以整理出一個(gè)頁(yè)的18336byte空間的狀態(tài)分配。
如圖2所示,一個(gè)頁(yè)的存儲(chǔ)空間可以被劃分為16384byte的用戶(hù)數(shù)據(jù)區(qū)、1920byte的ecc校驗(yàn)區(qū)和32byte的冗余區(qū)。
本實(shí)施例提供的閃存管理方法,在進(jìn)行塊的回收時(shí),需要首先對(duì)所述塊的頁(yè)建立bitmap,以便于后續(xù)進(jìn)行所述塊中有效頁(yè)的數(shù)據(jù)回收。本實(shí)施例中,采用所述冗余區(qū)中存儲(chǔ)頁(yè)的邏輯地址進(jìn)行bitmap的建立。
使用所述冗余區(qū)來(lái)存儲(chǔ)頁(yè)的邏輯地址之前,首先就是要先考慮用戶(hù)的總使用容量(capacity)的空間并以頁(yè)的邏輯地址(logicalpageaddress,lpa)來(lái)表示,計(jì)算公式如下:
所述冗余區(qū)存儲(chǔ)的頁(yè)邏輯地址數(shù)量
n=冗余區(qū)空間大小/logical_page_size,小數(shù)點(diǎn)無(wú)條件進(jìn)位,
其中,logical_page_size為所述頁(yè)的邏輯地址需使用的空間,
邏輯地址需使用的空間
logical_page_size=log256(總?cè)萘?頁(yè)大小),小數(shù)點(diǎn)無(wú)條件進(jìn)位。
如圖3所示,根據(jù)上述公式,對(duì)于總?cè)萘繛?2gbyte的閃存來(lái)說(shuō),每個(gè)容量為16k的頁(yè)的邏輯地址所需要的空間為3byte,一個(gè)頁(yè)的冗余區(qū)可以存儲(chǔ)10個(gè)邏輯地址。
如圖4所示,根據(jù)本實(shí)施例的閃存管理方法,所述閃存控制器10在向所述頁(yè)寫(xiě)入數(shù)據(jù)時(shí),根據(jù)所述冗余區(qū)的容量向所述冗余區(qū)中寫(xiě)入當(dāng)前頁(yè)和當(dāng)前頁(yè)的前面多個(gè)頁(yè)的邏輯地址。從第一個(gè)邏輯地址lpa0開(kāi)始,每間隔10個(gè)頁(yè),頁(yè)中的冗余區(qū)中都存儲(chǔ)當(dāng)前頁(yè)和前面的多個(gè)頁(yè)的邏輯地址,其中,ppa(physicalpageaddress)表示的是頁(yè)的物理地址。可選地,除了最開(kāi)始的9個(gè)頁(yè),后面的每一個(gè)頁(yè)的冗余區(qū)都存儲(chǔ)了10個(gè)邏輯地址,所述10個(gè)邏輯地址包括當(dāng)前頁(yè)的邏輯地址和當(dāng)前頁(yè)前面的9個(gè)頁(yè)的邏輯地址。
如圖5所示,所述閃存控制器20對(duì)所述閃存10進(jìn)行有效塊回收時(shí),采用步驟s1至步驟s4來(lái)實(shí)現(xiàn)。下面進(jìn)行詳細(xì)說(shuō)明。
步驟s1:找尋出有效頁(yè)數(shù)值最少的塊。
進(jìn)行有效塊回收時(shí),首先是要回收有效頁(yè)最少的塊,也就是無(wú)效頁(yè)最多的塊,從而實(shí)現(xiàn)存儲(chǔ)空間的有效利用。
步驟s2:根據(jù)冗余區(qū)中的邏輯地址遍歷所述塊中的頁(yè),建立所述塊中有效頁(yè)的bitmap。
需要說(shuō)明的是,bitmap為通過(guò)一個(gè)bit數(shù)組來(lái)存儲(chǔ)特定數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu);由于bit是數(shù)據(jù)的最小單位,所以這種數(shù)據(jù)結(jié)構(gòu)往往是非常節(jié)省存儲(chǔ)空間。如圖6所示,本實(shí)施例中,通過(guò)需要回收的塊中頁(yè)的邏輯地址和頁(yè)的狀態(tài)的對(duì)應(yīng)關(guān)系來(lái)建立bitmap,從而指示塊中有效頁(yè)的位置。其中,有效頁(yè)(validpage)用“1”表示,無(wú)效頁(yè)(invalidpage)用“0”表示,有效頁(yè)總數(shù)(validpagecountnumber)為4個(gè)。根據(jù)所述冗余區(qū)的邏輯地址存儲(chǔ)規(guī)則,塊中最后一個(gè)頁(yè)通常是有效頁(yè),一個(gè)冗余區(qū)中都存儲(chǔ)了包括當(dāng)前頁(yè)邏輯地址在內(nèi)的10個(gè)邏輯地址,因此,只需根據(jù)最后一個(gè)頁(yè)中存儲(chǔ)的邏輯地址,間隔10個(gè)頁(yè)進(jìn)行冗余區(qū)的邏輯地址的查找,即可遍歷所述塊中的頁(yè),然后讀取每頁(yè)的狀態(tài)即可建立所述塊中有效頁(yè)的bitmap。具體的,建立有效頁(yè)的bitmap的過(guò)程包括下述步驟:
讀取最后一個(gè)頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)頁(yè)的邏輯地址;
根據(jù)讀取的多個(gè)頁(yè)的邏輯地址,間隔10個(gè)頁(yè)依次讀取頁(yè)的冗余區(qū)中存儲(chǔ)的多個(gè)邏輯地址,并根據(jù)讀取到的邏輯地址找到相應(yīng)的頁(yè);
判斷所述頁(yè)是否有效并記錄,從而形成所述塊中有效頁(yè)的bitmap。
步驟s3:通過(guò)所述bitmap找出有效頁(yè)并搬至新塊中。如圖6所示,通過(guò)所述bitmap可以快速的找出有效頁(yè),并將有效頁(yè)中的數(shù)據(jù)移到新塊(newblock)中去。
步驟s4:釋放原塊,將原塊中的數(shù)據(jù)清除。
經(jīng)過(guò)上述步驟,即可完成原塊中有效數(shù)據(jù)的轉(zhuǎn)移和原塊空間的回收。
在本發(fā)明實(shí)施例中,在閃存寫(xiě)入數(shù)據(jù)時(shí),在每一頁(yè)的冗余區(qū)中都寫(xiě)入當(dāng)前頁(yè)及當(dāng)前頁(yè)前面多個(gè)頁(yè)的邏輯地址,在進(jìn)行塊回收時(shí),可以根據(jù)所述冗余區(qū)中的多個(gè)頁(yè)的邏輯地址快速的建立所述塊的bitmap,進(jìn)一步地,根據(jù)所述bitmap,可以快速的實(shí)現(xiàn)所述塊的回收。
實(shí)施例二
如圖7所示,本發(fā)明實(shí)施例三提供在本發(fā)明實(shí)施例中,提供一種閃存芯片,其包括至少一處理器310、存儲(chǔ)器320及接口330,所述至少一處理器310、存儲(chǔ)器320及接口330均通過(guò)總線連接;
所述存儲(chǔ)器320存儲(chǔ)計(jì)算機(jī)執(zhí)行指令;
所述至少一個(gè)處理器310執(zhí)行所述存儲(chǔ)器320存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,使得所述閃存芯片執(zhí)行實(shí)施例1所述的閃存管理方法。
綜上所述,采用本發(fā)明的閃存管理系統(tǒng)、方法及閃存芯片,在閃存寫(xiě)入數(shù)據(jù)時(shí),在每一頁(yè)的冗余區(qū)中都寫(xiě)入當(dāng)前頁(yè)及當(dāng)前頁(yè)前面多個(gè)頁(yè)的邏輯地址,在進(jìn)行塊回收時(shí),可以根據(jù)所述冗余區(qū)中的多個(gè)頁(yè)的邏輯地址快速的建立所述塊的bitmap,進(jìn)一步地,根據(jù)所述bitmap,可以快速的實(shí)現(xiàn)所述塊的回收。
值得注意的是,本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的步驟或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟,而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。