專(zhuān)利名稱(chēng):非揮發(fā)性存儲(chǔ)器的損耗平衡方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于損耗平衡方法,尤其有關(guān)于一種非揮發(fā)性存儲(chǔ)器的每一儲(chǔ)存塊,其被擦除次數(shù)可平均化,以延長(zhǎng)該非揮發(fā)性存儲(chǔ)器的使用壽命的方法。
背景技術(shù):
嵌入式系統(tǒng)正廣泛應(yīng)于各個(gè)領(lǐng)域(如手機(jī)、電腦…等),其存儲(chǔ)模組一般包括有一隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)和快閃存儲(chǔ)器(FLASH)所組成。其中該隨機(jī)存取存儲(chǔ)器一般用于系統(tǒng)即時(shí)數(shù)據(jù)的存取,如系統(tǒng)處理完數(shù)據(jù)后將數(shù)據(jù)進(jìn)行堆疊儲(chǔ)存的媒介…等;該只讀存儲(chǔ)器則是用于存放系統(tǒng)數(shù)據(jù),如字型、指令…等;而該快閃存儲(chǔ)器可被分割為若干儲(chǔ)存塊,該儲(chǔ)存塊一般用于儲(chǔ)存數(shù)據(jù),其內(nèi)所儲(chǔ)存的數(shù)據(jù),可在其中一個(gè)或多個(gè)儲(chǔ)存塊中進(jìn)行修改,且該儲(chǔ)存塊修改其內(nèi)所儲(chǔ)存的數(shù)據(jù)時(shí),需先擦除該儲(chǔ)存塊中數(shù)據(jù),再重新寫(xiě)入該儲(chǔ)存塊中。此外,該快閃存儲(chǔ)器倘若其中一個(gè)儲(chǔ)存塊損壞或不能使用,即令該快閃存儲(chǔ)器損壞或無(wú)法繼續(xù)使用。再者,該快閃存儲(chǔ)器具有有限的擦除壽命(約100,000次擦除),若其中一個(gè)儲(chǔ)存塊達(dá)到該擦除壽命后,該快閃存儲(chǔ)器立即就不能再使用。
而一般該快閃存儲(chǔ)器所儲(chǔ)存的數(shù)據(jù)被修改時(shí),通常先將該儲(chǔ)存塊內(nèi)數(shù)據(jù)全部讀出,并合并新數(shù)據(jù)后,再擦除該儲(chǔ)存塊回寫(xiě),由此可見(jiàn),該快閃存儲(chǔ)器內(nèi)每一個(gè)儲(chǔ)存塊被讀取或修改的次數(shù),并不一致,故,延長(zhǎng)該快閃存儲(chǔ)器的使用壽命的最佳方法在于盡量使每個(gè)儲(chǔ)存塊的擦寫(xiě)次數(shù)相同,而對(duì)于延長(zhǎng)該快閃存儲(chǔ)器的使用壽命的方法,目前大致有兩種做法1.記錄日志結(jié)構(gòu)化其優(yōu)點(diǎn)是既能延長(zhǎng)快閃存儲(chǔ)器使用壽命,又能提供崩潰/斷電的安全保護(hù),而缺點(diǎn)是讀取該儲(chǔ)存塊的記錄時(shí),需要透過(guò)一附加程序(如同微軟的視窗軟體的磁碟重組程序從一長(zhǎng)列節(jié)點(diǎn)中,逐一恢復(fù)數(shù)據(jù),且該記錄越多,速度越慢。
2.采用損耗平衡方法當(dāng)嵌入式系統(tǒng)工作時(shí),該控制系統(tǒng)將藉由該損耗平衡方法對(duì)該快閃存儲(chǔ)器讀、寫(xiě)及修改數(shù)據(jù),當(dāng)該儲(chǔ)存塊的數(shù)據(jù)被修改時(shí),先將儲(chǔ)存塊內(nèi)數(shù)據(jù)全部讀出,并與新數(shù)據(jù)合并后,選擇讀寫(xiě)次數(shù)較少,且是空白的儲(chǔ)存塊寫(xiě)入,并擦除原儲(chǔ)存塊內(nèi)的數(shù)據(jù),其優(yōu)點(diǎn)是讀寫(xiě)速度快,且不會(huì)產(chǎn)生碎片,但是不支持崩潰/斷電的安全保護(hù)。
發(fā)明內(nèi)容
有鑒于延長(zhǎng)該快閃存儲(chǔ)器的使用壽命的方法的缺點(diǎn),發(fā)明人經(jīng)過(guò)長(zhǎng)久努力研究與實(shí)驗(yàn),終于開(kāi)發(fā)設(shè)計(jì)出本發(fā)明的一種非揮發(fā)性存儲(chǔ)器的損耗平衡方法,是將一非揮發(fā)性存儲(chǔ)器未被寫(xiě)入數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),以隊(duì)列結(jié)構(gòu)進(jìn)行排序,當(dāng)該非揮發(fā)性存儲(chǔ)器任一儲(chǔ)存塊被擦除數(shù)據(jù)時(shí),該被擦除數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),將被加入該隊(duì)列尾部,而一數(shù)據(jù)欲寫(xiě)入該非揮發(fā)性存儲(chǔ)器內(nèi)時(shí),將從該隊(duì)列頭部取得一儲(chǔ)存塊的塊號(hào),并將該數(shù)據(jù)寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除。
為便于對(duì)本發(fā)明的目的、形狀、構(gòu)造裝置特征及其功效,做更進(jìn)一步的認(rèn)識(shí)與了解,茲舉實(shí)施例配合附圖,詳細(xì)說(shuō)明如下
圖1是嵌入式系統(tǒng)的架構(gòu)示意圖;圖2是非揮發(fā)性存儲(chǔ)器修改數(shù)據(jù)后,進(jìn)行數(shù)據(jù)儲(chǔ)存的流程圖。
具體實(shí)施例方式
本發(fā)明是一種非揮發(fā)性存儲(chǔ)器的損耗平衡方法,請(qǐng)參閱圖1所示,該方法可運(yùn)用在一嵌入式系統(tǒng)1中,該系統(tǒng)主要由一非揮發(fā)性存儲(chǔ)器10(如快閃存儲(chǔ)器)、一驅(qū)動(dòng)程序12、一控制程序14、一隨機(jī)存取存儲(chǔ)器16及一運(yùn)算器18(如中央處理單元)所組成,其中該非揮發(fā)性存儲(chǔ)器10用以?xún)?chǔ)存數(shù)據(jù),該驅(qū)動(dòng)程序12控制該非揮發(fā)性存儲(chǔ)器10的讀寫(xiě),該控制程序14可對(duì)該非揮發(fā)性存儲(chǔ)器10的塊號(hào),進(jìn)行隊(duì)列結(jié)構(gòu)排序、將塊號(hào)加入該隊(duì)列或?qū)K號(hào)由該隊(duì)列中清除,即本發(fā)明的損耗平衡處理,而該隨機(jī)存取存儲(chǔ)器16乃存放該非揮發(fā)性存儲(chǔ)器10的邏輯映射、該驅(qū)動(dòng)程序12及該控制程序14代碼,該運(yùn)算器18可對(duì)該系統(tǒng)內(nèi)所有元件進(jìn)行操控處理。
在本發(fā)明中,該非揮發(fā)性存儲(chǔ)器10可被分割設(shè)成多個(gè)儲(chǔ)存塊,這些儲(chǔ)存塊分別被授與一個(gè)唯一的塊號(hào),當(dāng)該嵌入式系統(tǒng)1初始化時(shí),該控制程序14將未寫(xiě)入數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),以隊(duì)列結(jié)構(gòu)進(jìn)行排序,而每當(dāng)該驅(qū)動(dòng)程序12對(duì)該非揮發(fā)性存儲(chǔ)器10其中一個(gè)儲(chǔ)存塊,進(jìn)行擦除數(shù)據(jù)處理時(shí),將該被擦除數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),將加入該隊(duì)列尾部;當(dāng)該驅(qū)動(dòng)程序12對(duì)其中一個(gè)儲(chǔ)存塊內(nèi)的數(shù)據(jù),進(jìn)行修改處理后,而欲寫(xiě)回該非揮發(fā)性存儲(chǔ)器10內(nèi),或有新數(shù)據(jù)欲寫(xiě)入該非揮發(fā)性存儲(chǔ)器10內(nèi)時(shí),該控制程序14將從該隊(duì)列頭部取得一儲(chǔ)存塊的塊號(hào),再將該新數(shù)據(jù)或被修改的數(shù)據(jù),寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除,如圖2所示。
在本發(fā)明中,該隊(duì)列占用該隨機(jī)存取存儲(chǔ)器16的儲(chǔ)存空間為n×該非揮發(fā)性存儲(chǔ)器10的儲(chǔ)存塊數(shù);其中n為每一塊號(hào)所占的字節(jié)(byte),且每一塊號(hào)所占的字節(jié)是由該控制程序14而定,在本發(fā)明中該塊號(hào)所占的字節(jié)為1≤n<≤4;而該隊(duì)列將保存在該隨機(jī)存取存儲(chǔ)器16中,且由該控制程序14管理該隊(duì)列的排序,并控制該驅(qū)動(dòng)程序12的執(zhí)行,該驅(qū)動(dòng)程序12乃可完成對(duì)該非揮發(fā)性存儲(chǔ)器10的讀、寫(xiě)及擦除等操作,而該隨機(jī)存取存儲(chǔ)器16中,可同時(shí)存放從該儲(chǔ)存塊中讀取、修改或要寫(xiě)入該儲(chǔ)存塊的數(shù)據(jù)。
藉由以上所述可知,其算法簡(jiǎn)便、結(jié)構(gòu)簡(jiǎn)單,且該嵌入式系統(tǒng)1的額外負(fù)擔(dān)小,執(zhí)行速度快,不會(huì)產(chǎn)生碎片。而且對(duì)原先的文件系統(tǒng)具有較好的相容性,該嵌入式系統(tǒng)1中被修改的部份少。另,就傳統(tǒng)嵌入式系統(tǒng)的操作過(guò)程為讀取儲(chǔ)存塊內(nèi)的數(shù)據(jù)→合并(或修改)數(shù)據(jù)→擦除被讀取的儲(chǔ)存塊→寫(xiě)入合并(或修改)數(shù)據(jù)在儲(chǔ)存塊中。而本發(fā)明操作過(guò)程(如圖2所示)與傳統(tǒng)操作過(guò)程雷同,二者不同處,是在于本發(fā)明所擦除的儲(chǔ)存塊與寫(xiě)入新數(shù)據(jù)的儲(chǔ)存塊不同,且該隊(duì)列運(yùn)算皆在具有較快處理速度的該隨機(jī)存取存儲(chǔ)器16中完成,再者,本發(fā)明該隨機(jī)存取存儲(chǔ)器16的儲(chǔ)存容量,僅被該隊(duì)列占用極小的容量,而小容量的數(shù)據(jù)的數(shù)據(jù)運(yùn)算,將不會(huì)增加該處理器18太多的運(yùn)算負(fù)擔(dān),使其有別于傳統(tǒng)的損耗平衡方法。
本發(fā)明的效率與修改或新增數(shù)據(jù)的規(guī)律有關(guān),如任意一個(gè)儲(chǔ)存塊的數(shù)據(jù)在被再次修改之前,其他數(shù)據(jù)都被修改過(guò)一次,則每個(gè)儲(chǔ)存塊都有機(jī)會(huì)進(jìn)入該隊(duì)列中,故,各儲(chǔ)存塊被擦除次數(shù)的增長(zhǎng)是同步的,均衡的,此時(shí),該非揮發(fā)性存儲(chǔ)器10被使用效率達(dá)到最高;倘若局部的儲(chǔ)存塊一直沒(méi)有被讀取或修改,則該局部的儲(chǔ)存塊無(wú)法進(jìn)入該隊(duì)列中,此時(shí),各儲(chǔ)存塊的擦除次數(shù)的增長(zhǎng)是不平衡的,只有在該隊(duì)列中的儲(chǔ)存塊和被讀取數(shù)據(jù)的儲(chǔ)存塊的擦除次數(shù)在增長(zhǎng),將使得本發(fā)明的效率達(dá)到最低,故,本發(fā)明的總體效率介于兩者之間,端視該嵌入式系統(tǒng)2的使用者的使用狀態(tài)而定。
為能了解采用損耗平衡與不采用損耗平衡的不同,且清楚采用損耗平衡的優(yōu)點(diǎn),乃進(jìn)行說(shuō)明如下當(dāng)任意一儲(chǔ)存塊數(shù)據(jù)在被再次修改之前,其他儲(chǔ)存塊的數(shù)據(jù)都被修改過(guò)一次,則無(wú)論采用或不采用損耗平衡的嵌入式系統(tǒng)的效率,都達(dá)到二者最高的效率,先就不采用損耗平衡的嵌入式系統(tǒng)而言,其非揮發(fā)性存儲(chǔ)器可寫(xiě)次數(shù)為T(mén)max×N;Tmax系每?jī)?chǔ)存塊非揮發(fā)性存儲(chǔ)器可擦寫(xiě)次數(shù);N系該非揮發(fā)性存儲(chǔ)器已有數(shù)據(jù)的儲(chǔ)存塊的數(shù)量;而采用損耗平衡系統(tǒng)的嵌入式系統(tǒng)1而言,其非揮發(fā)性存儲(chǔ)器10可寫(xiě)次數(shù)為T(mén)max×N+M;Tmax是每?jī)?chǔ)存塊非揮發(fā)性存儲(chǔ)器10可擦寫(xiě)次數(shù);N是該非揮發(fā)性存儲(chǔ)器10已有數(shù)據(jù)的儲(chǔ)存塊的數(shù)量;M是該非揮發(fā)性存儲(chǔ)器10未寫(xiě)入數(shù)據(jù)的儲(chǔ)存塊的數(shù)量;因此二者效率的比為(N+M)/N,由此可知,采用損耗平衡系統(tǒng)的嵌入式系統(tǒng)1效率較好,倘若采用損耗平衡系統(tǒng)的嵌入式系統(tǒng)1的非揮發(fā)性存儲(chǔ)器10,被寫(xiě)滿(mǎn)數(shù)據(jù),即M為零,此時(shí),無(wú)論采用或不采用損耗平衡的嵌入式系統(tǒng)的效率相同。
另,當(dāng)該非揮發(fā)性存儲(chǔ)器10同一個(gè)儲(chǔ)存塊的數(shù)據(jù)反復(fù)被修改,直至該儲(chǔ)存塊無(wú)法被擦除時(shí),即該非揮發(fā)性存儲(chǔ)器10損壞,則二者效率都將至最低。以不采用損耗平衡的傳統(tǒng)嵌入式系統(tǒng)而言,其非揮發(fā)性存儲(chǔ)器可寫(xiě)次數(shù)為T(mén)max(Tmax是每?jī)?chǔ)存塊非揮發(fā)性存儲(chǔ)器可擦寫(xiě)次數(shù)。而采用損耗平衡的嵌入式系統(tǒng)1而言,其非揮發(fā)性存儲(chǔ)器10可寫(xiě)次數(shù)為T(mén)max×(M+1);M是該非揮發(fā)性存儲(chǔ)器10未寫(xiě)入數(shù)據(jù)的儲(chǔ)存塊的數(shù)量;因此效率的比為(M+1),由此可知,采用損耗平衡系統(tǒng)的嵌入式系統(tǒng)1效率較好,但當(dāng)采用損耗平衡的嵌入式系統(tǒng),若該非揮發(fā)性存儲(chǔ)器10寫(xiě)滿(mǎn)數(shù)據(jù),即M為零,此時(shí),無(wú)論采用或不采用損耗平衡的嵌入式系統(tǒng)的效率相同。
以上所述,僅為本發(fā)明最佳的一具體實(shí)施例,本發(fā)明的構(gòu)造特征并不局限于此,任何熟悉本技術(shù)領(lǐng)域者在本發(fā)明領(lǐng)域內(nèi),可輕易思及的變化或修飾,皆可涵蓋在以下本案的專(zhuān)利范圍。
權(quán)利要求
1.一種非揮發(fā)性存儲(chǔ)器的損耗平衡方法,該方法是將一非揮發(fā)性存儲(chǔ)器未寫(xiě)入數(shù)據(jù)的一儲(chǔ)存塊的塊號(hào),以隊(duì)列結(jié)構(gòu)進(jìn)行排序,該非揮發(fā)性存儲(chǔ)器其中一個(gè)儲(chǔ)存塊被擦除數(shù)據(jù)時(shí),該被擦除數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),將加入該隊(duì)列尾部,而一數(shù)據(jù)欲寫(xiě)入該非揮發(fā)性存儲(chǔ)器內(nèi)時(shí),將從該隊(duì)列頭部取得一儲(chǔ)存塊的塊號(hào),再將該數(shù)據(jù)寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除。
2.如權(quán)利要求1所述的方法,其特征在于,該非揮發(fā)性存儲(chǔ)器可被設(shè)在一嵌入式系統(tǒng)中,該系統(tǒng)還包括一驅(qū)動(dòng)程序、一控制程序、一隨機(jī)存取存儲(chǔ)器及一運(yùn)算器所組成,其中該非揮發(fā)性存儲(chǔ)器可儲(chǔ)存數(shù)據(jù),該驅(qū)動(dòng)程序控制該非揮發(fā)性存儲(chǔ)器的讀、寫(xiě)及擦除處理,該控制程序可對(duì)該非揮發(fā)性存儲(chǔ)器的塊號(hào),進(jìn)行隊(duì)列結(jié)構(gòu)排序、將塊號(hào)加入該隊(duì)列或?qū)K號(hào)由該隊(duì)列中清除,而該隨機(jī)存取存儲(chǔ)器乃存放該非揮發(fā)性存儲(chǔ)器的邏輯映射、該驅(qū)動(dòng)程序及該控制程序代碼,該運(yùn)算器可對(duì)該系統(tǒng)內(nèi)所有元件進(jìn)行操控處理,該嵌入式系統(tǒng)初始化時(shí),該控制程序?qū)⑽磳?xiě)入數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),以隊(duì)列結(jié)構(gòu)進(jìn)行排序。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)該驅(qū)動(dòng)程序?qū)θ我粌?chǔ)存塊進(jìn)行數(shù)據(jù)擦除處理時(shí),該被擦除數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),將被加入該隊(duì)列尾部。
4.如權(quán)利要求2所述的方法,其特征在于,當(dāng)該驅(qū)動(dòng)程序?qū)θ我粌?chǔ)存塊內(nèi)的數(shù)據(jù)進(jìn)行修改完畢后,而欲寫(xiě)回該非揮發(fā)性存儲(chǔ)器內(nèi),該控制程序?qū)脑撽?duì)列頭部取得一儲(chǔ)存塊的塊號(hào),再將該被修改的數(shù)據(jù),寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除。
5.如權(quán)利要求2所述的方法,其特征在于,當(dāng)該驅(qū)動(dòng)程序欲將新數(shù)據(jù)寫(xiě)入該非揮發(fā)性存儲(chǔ)器內(nèi)時(shí),該控制程序?qū)脑撽?duì)列頭部取得一儲(chǔ)存塊的塊號(hào),再將該新數(shù)據(jù)寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除。
6.如權(quán)利要求2所述的方法,其特征在于,該隊(duì)列將保存在該隨機(jī)存取存儲(chǔ)器中,且由該控制程序管理該隊(duì)列的排序,并控制該驅(qū)動(dòng)程序的執(zhí)行,該驅(qū)動(dòng)程序乃可完成對(duì)該非揮發(fā)性存儲(chǔ)器的讀、寫(xiě)及擦除等操作,而該隨機(jī)存取存儲(chǔ)器中,可同時(shí)存放從該儲(chǔ)存塊中讀取、修改或要寫(xiě)入該儲(chǔ)存塊的數(shù)據(jù)。
全文摘要
本發(fā)明提供一種非揮發(fā)性存儲(chǔ)器的損耗平衡方法,該方法可運(yùn)用在一嵌入式系統(tǒng)中,該嵌入式系統(tǒng)初始化時(shí),其所設(shè)的控制程序,可將其該嵌入式系統(tǒng)的非揮發(fā)性存儲(chǔ)器中,未寫(xiě)入數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),以隊(duì)列結(jié)構(gòu)進(jìn)行排序,且每當(dāng)一儲(chǔ)存塊被擦除數(shù)據(jù)時(shí),將該被擦除數(shù)據(jù)的儲(chǔ)存塊的塊號(hào),將加入該隊(duì)列尾部,而該儲(chǔ)存塊內(nèi)的數(shù)據(jù)被修改完畢后,欲寫(xiě)回該非揮發(fā)性存儲(chǔ)器內(nèi),或有新數(shù)據(jù)欲寫(xiě)入該非揮發(fā)性存儲(chǔ)器內(nèi)時(shí),該控制程序?qū)脑撽?duì)列頭部取得一儲(chǔ)存塊的塊號(hào),再將該新數(shù)據(jù)或被修改的數(shù)據(jù),寫(xiě)入對(duì)應(yīng)該塊號(hào)的儲(chǔ)存塊中,同時(shí)將該塊號(hào)從該隊(duì)列中清除。
文檔編號(hào)G06F9/38GK1536489SQ03116319
公開(kāi)日2004年10月13日 申請(qǐng)日期2003年4月11日 優(yōu)先權(quán)日2003年4月11日
發(fā)明者何代水, 蔡世光, 韓巍 申請(qǐng)人:英華達(dá)(上海)電子有限公司