本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)存儲(chǔ)器擦寫均衡的數(shù)據(jù)管理方法及存儲(chǔ)設(shè)備。
背景技術(shù):
norflash技術(shù)是目前常用的一種非易失性存儲(chǔ)器技術(shù),采用這種技術(shù)的存儲(chǔ)器支持擦寫和再編程。對(duì)norflash的寫入操作只能在已擦除的單元內(nèi)進(jìn)行,通常這個(gè)單元的單位是頁(yè)(page),操作順序必須是先擦再寫。norflash的可擦寫次數(shù),也稱為使用壽命,是有限的。一般將擦一頁(yè)、寫滿一頁(yè)計(jì)為一次編程或稱為擦寫一次。通常norflash每頁(yè)可支持十萬(wàn)次擦寫,當(dāng)超過(guò)壽命時(shí),再寫入數(shù)據(jù),會(huì)因?yàn)槲锢砝匣?、電荷保持不住而丟失數(shù)據(jù)。在智能卡領(lǐng)域中使用norflash技術(shù)時(shí),對(duì)于存儲(chǔ)介質(zhì)的使用壽命要求比較高,例如,智能卡中的某些數(shù)據(jù)需要修改幾十萬(wàn)次左右,遠(yuǎn)遠(yuǎn)超過(guò)了norflash的最大物理可擦除次數(shù)。不過(guò)同時(shí),智能卡數(shù)據(jù)區(qū)不是所有數(shù)據(jù)頁(yè)都需要擦寫幾十萬(wàn)次。若需要提高智能卡的使用壽命,需要平衡使用norflash中各數(shù)據(jù)頁(yè),而不讓某一頁(yè)過(guò)度使用。
目前,在norflash中應(yīng)用數(shù)據(jù)管理技術(shù)時(shí)主要的實(shí)現(xiàn)方式的核心思想在于:從整個(gè)存儲(chǔ)空間中劃分出部分存儲(chǔ)單元作為管理存儲(chǔ)單元,用于記錄物理存儲(chǔ)單元與邏輯存儲(chǔ)單元的對(duì)應(yīng)關(guān)系。對(duì)于擦寫次數(shù)較多的存儲(chǔ)單元,將其數(shù)據(jù)寫入某空閑存儲(chǔ)單元,并修改物理存儲(chǔ)單元與邏輯存儲(chǔ)單元的對(duì)應(yīng)關(guān)系,以實(shí)現(xiàn)各個(gè)存儲(chǔ)單元的均衡使用。其中,物理存儲(chǔ)單元和邏輯存儲(chǔ)單元的關(guān)系如下:每個(gè)存儲(chǔ)單元都有其對(duì)應(yīng)的物理地址和邏輯地址,且每個(gè)存儲(chǔ)單元對(duì)應(yīng)的物理地址是固定不變的,用于唯一的標(biāo)識(shí)一個(gè)存儲(chǔ)單元,而存儲(chǔ)單元對(duì)應(yīng)的邏輯地址則是可以改變的,物理地址所對(duì)應(yīng)的存儲(chǔ)單元稱為物理存儲(chǔ)單元,邏輯地址所對(duì)應(yīng)的存儲(chǔ)單元稱為邏輯存儲(chǔ)單元。具體實(shí)現(xiàn)時(shí),在norflash上開(kāi)辟一段空間作為統(tǒng)計(jì)區(qū),統(tǒng)計(jì)區(qū)和存儲(chǔ)單元是分離的,用于記錄最近一段時(shí)間操作的存儲(chǔ)單元對(duì)應(yīng)的擦除次數(shù),由于統(tǒng)計(jì)區(qū)的空間有限,只能記錄一小部分存儲(chǔ)單元的擦寫次數(shù),因此,在內(nèi)存中還要開(kāi)辟同樣大小的一段空間作為統(tǒng)計(jì)數(shù)據(jù)的臨時(shí)記錄,用于輔助記錄擦寫次數(shù)。但是采用這種方式,并不能準(zhǔn)確判斷哪個(gè)存儲(chǔ)單元的擦除次數(shù)頻繁。每次擦寫都會(huì)啟動(dòng)存儲(chǔ)單元的擦寫和統(tǒng)計(jì)區(qū)的擦寫,造成擦寫性能低下;而且,在統(tǒng)計(jì)擦寫次數(shù)時(shí),統(tǒng)計(jì)區(qū)由于擦寫頻繁很容易被寫壞,導(dǎo)致flash存儲(chǔ)設(shè)備的使用壽命比較有限。
通常存儲(chǔ)器的均衡使用各數(shù)據(jù)頁(yè)的數(shù)據(jù)管理方法中,由于管理大容量的數(shù)據(jù)檢索空間很大,使得效率較低,因此常常選取折中的方法,即選擇存儲(chǔ)容量的一小部分空間——例如十分之一的空間——能夠支持?jǐn)?shù)據(jù)頁(yè)的均衡擦寫。這一小部分空間的空間地址基本都會(huì)固定下來(lái),例如固定在最高地址段。但是由于芯片存儲(chǔ)器有很多不同的客戶,不同的客戶對(duì)這種能支持?jǐn)?shù)頁(yè)均衡擦寫的特殊存儲(chǔ)器空間,可能有不同的地址空間需求。例如有的客戶希望在最高地址段,有的客戶希望不在最高地址段。原有的方法并不能解決這種矛盾。
以上以norflash為例說(shuō)明,但并不對(duì)存儲(chǔ)設(shè)備構(gòu)成限制,除了norflash之外,其他的很多存儲(chǔ)設(shè)備也會(huì)遇到類似的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有存在的技術(shù)問(wèn)題,本發(fā)明實(shí)施例期望提供一種norflash器的數(shù)據(jù)管理方法及存儲(chǔ)裝置。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用以下方式來(lái)實(shí)現(xiàn):
檢索出物理頁(yè)組內(nèi)當(dāng)前頁(yè)x步驟,用于根據(jù)當(dāng)前要擦寫的邏輯頁(yè)地址,在對(duì)應(yīng)的物理頁(yè)組中找到對(duì)應(yīng)的數(shù)據(jù)物理頁(yè)x。
閾值判斷步驟,用于根據(jù)數(shù)據(jù)物理頁(yè)x內(nèi)的映射管理控制信息檢索出物理頁(yè)x的擦寫次數(shù),并進(jìn)行判斷處理。如果物理頁(yè)x的閾值大于指定閾值,則從“檢索出物理組內(nèi)最小擦寫次數(shù)頁(yè)y”步驟開(kāi)始處理;如果物理頁(yè)x的擦寫次數(shù)小于等于指定閾值,則從“新數(shù)據(jù)寫入當(dāng)前頁(yè)x”步驟開(kāi)始處理。
新數(shù)據(jù)寫入當(dāng)前頁(yè)x步驟,用于將待寫的數(shù)據(jù)寫入到頁(yè)x內(nèi)。
當(dāng)前頁(yè)x擦寫次數(shù)更新步驟,用于將頁(yè)x的擦寫次數(shù)加一,將新擦寫次數(shù)和原映射關(guān)系寫入頁(yè)x的映射管理控制信息。
檢索出物理組內(nèi)最小擦寫次數(shù)頁(yè)y步驟,用于根據(jù)物理頁(yè)組內(nèi)每一頁(yè)的映射管理控制信息中存儲(chǔ)的擦寫次數(shù),檢索出最小擦寫次數(shù)的物理頁(yè)y。
將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k步驟,用于備份頁(yè)y的內(nèi)容到頁(yè)k中,并在k頁(yè)的映射管理控制信息中存儲(chǔ)頁(yè)y地址和原子性保護(hù)數(shù)據(jù)。原子性指的是保證啟動(dòng)頁(yè)擦寫的過(guò)程要么完整的執(zhí)行,要么完全不執(zhí)行。
新數(shù)據(jù)寫入頁(yè)y步驟,用于將待寫的數(shù)據(jù)寫入到頁(yè)y內(nèi),更新k頁(yè)中的原子性保護(hù)數(shù)據(jù)。
將頁(yè)k的數(shù)據(jù)寫入頁(yè)x步驟,用于將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)轉(zhuǎn)移至頁(yè)x中。
頁(yè)x、y擦寫次數(shù)更新步驟,用于將頁(yè)x、y的擦寫次數(shù)加一,將新擦寫次數(shù)寫入各自的映射管理控制信息中。
頁(yè)x、y映射關(guān)系更新步驟,用于將物理頁(yè)x、y與邏輯頁(yè)的映射關(guān)系互換,并清除k頁(yè)中的原子性保護(hù)數(shù)據(jù)。
上述方案中,所述方法還包括:
對(duì)“檢索出物理組內(nèi)當(dāng)前頁(yè)x”步驟采用以下規(guī)則:將物理數(shù)據(jù)存儲(chǔ)器等分為n份,0<n≤1000。將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組有關(guān)聯(lián)的物理數(shù)據(jù)頁(yè)組bi。提及的頁(yè)x、y屬于物理頁(yè)組bi。將邏輯數(shù)據(jù)存儲(chǔ)器同樣等分為n份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組邏輯數(shù)據(jù)頁(yè)組ai。ai與bi通過(guò)bi內(nèi)存儲(chǔ)的映射管理控制信息進(jìn)行一一映射。
上述方案中,所述方法還包括:
對(duì)“檢索出物理組內(nèi)當(dāng)前頁(yè)x”步驟采用以下規(guī)則:每一物理頁(yè)都有映射管理控制信息,位于該物理頁(yè)內(nèi)的有效數(shù)據(jù)段之外的輔助空間內(nèi)。映射管理控制信息包含頁(yè)擦寫次數(shù)、映射關(guān)系標(biāo)記。
上述方案中,所述方法還包括:
對(duì)“閾值判斷”步驟采用以下規(guī)則:每次的“指定閾值”是從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。該值是根據(jù)閾值基礎(chǔ)值從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。閾值基礎(chǔ)值根據(jù)組內(nèi)最大擦寫次數(shù)計(jì)算得出,方法是將最大擦寫次數(shù)除以定值p,結(jié)果向上取整,再乘以p,2≤p≤100000。
上述方案中,所述方法還包括:
對(duì)“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k”步驟采用以下規(guī)則:原子性保護(hù)數(shù)據(jù)包括頁(yè)x、y的地址,并記錄“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k步驟”至“頁(yè)x、y映射關(guān)系更新步驟”的執(zhí)行情況。以便該步驟及后續(xù)步驟中出現(xiàn)斷電,可以恢復(fù)數(shù)據(jù)。
上述方案中,所述方法還包括:
對(duì)“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k”步驟采用以下規(guī)則:中轉(zhuǎn)頁(yè)k屬于中轉(zhuǎn)頁(yè)區(qū),該區(qū)包含n個(gè)頁(yè),和邏輯數(shù)據(jù)區(qū)等分的個(gè)數(shù)相同。當(dāng)物理組內(nèi)發(fā)生換頁(yè)并最小擦寫次數(shù)是第j頁(yè)時(shí),中轉(zhuǎn)區(qū)第j個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。
為實(shí)現(xiàn)本發(fā)明的發(fā)明目的,本發(fā)明的裝置有如下構(gòu)成:
檢索出物理頁(yè)組內(nèi)當(dāng)前頁(yè)x單元,用于根據(jù)當(dāng)前要擦寫的邏輯頁(yè)地址,在對(duì)應(yīng)的物理頁(yè)組中找到對(duì)應(yīng)的數(shù)據(jù)物理頁(yè)x。
閾值判斷單元,用于根據(jù)數(shù)據(jù)物理頁(yè)x內(nèi)的映射管理控制信息檢索出物理頁(yè)x的擦寫次數(shù),并進(jìn)行判斷處理。如果物理頁(yè)x的閾值大于指定閾值,則從“檢索出物理組內(nèi)最小擦寫次數(shù)頁(yè)y”單元開(kāi)始處理;如果物理頁(yè)x的擦寫次數(shù)小于等于指定閾值,則從“新數(shù)據(jù)寫入當(dāng)前頁(yè)x”單元開(kāi)始處理。
新數(shù)據(jù)寫入當(dāng)前頁(yè)x單元,用于將待寫的數(shù)據(jù)寫入到頁(yè)x內(nèi)。
當(dāng)前頁(yè)x擦寫次數(shù)更新單元,用于將頁(yè)x的擦寫次數(shù)加一,將新擦寫次數(shù)和原映射關(guān)系寫入頁(yè)x的映射管理控制信息。
檢索出物理組內(nèi)最小擦寫次數(shù)頁(yè)y單元,用于根據(jù)物理頁(yè)組內(nèi)每一頁(yè)的映射管理控制信息中存儲(chǔ)的擦寫次數(shù),檢索出最小擦寫次數(shù)的物理頁(yè)y。
將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k單元,用于備份頁(yè)y的內(nèi)容到頁(yè)k中,并在k頁(yè)的映射管理控制信息中存儲(chǔ)頁(yè)y地址和原子性保護(hù)數(shù)據(jù)。原子性指的是保證啟動(dòng)頁(yè)擦寫的過(guò)程要么完整的執(zhí)行,要么完全不執(zhí)行。
新數(shù)據(jù)寫入頁(yè)y單元,用于將待寫的數(shù)據(jù)寫入到頁(yè)y內(nèi),更新k頁(yè)中的原子性保護(hù)數(shù)據(jù)。
將頁(yè)k的數(shù)據(jù)寫入頁(yè)x單元,用于將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)轉(zhuǎn)移至頁(yè)x中。
頁(yè)x、y擦寫次數(shù)更新單元,用于將頁(yè)x、y的擦寫次數(shù)加一,將新擦寫次數(shù)寫入各自的映射管理控制信息中。
頁(yè)x、y映射關(guān)系更新單元,用于將物理頁(yè)x、y與邏輯頁(yè)的映射關(guān)系互換,并清除k頁(yè)中的原子性保護(hù)數(shù)據(jù)。
上述裝置中,所述單元特征還包括:
對(duì)“檢索出物理組內(nèi)當(dāng)前頁(yè)x”單元采用以下規(guī)則:將物理數(shù)據(jù)存儲(chǔ)器等分為n份,0<n≤1000。將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組有關(guān)聯(lián)的物理數(shù)據(jù)頁(yè)組bi。提及的頁(yè)x、y屬于物理頁(yè)組bi。將邏輯數(shù)據(jù)存儲(chǔ)器同樣等分為n份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組邏輯數(shù)據(jù)頁(yè)組ai。ai與bi通過(guò)bi內(nèi)存儲(chǔ)的映射管理控制信息進(jìn)行一一映射。
上述裝置中,所述單元特征還包括:
對(duì)“檢索出物理組內(nèi)當(dāng)前頁(yè)x”單元采用以下規(guī)則:每一物理頁(yè)都有映射管理控制信息,位于該物理頁(yè)內(nèi)的有效數(shù)據(jù)段之外的輔助空間內(nèi)。映射管理控制信息包含頁(yè)擦寫次數(shù)、映射關(guān)系標(biāo)記。
上述裝置中,所述單元特征還包括:
對(duì)“閾值判斷”單元采用以下規(guī)則:每次的“指定閾值”是從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。該值是根據(jù)閾值基礎(chǔ)值從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。閾值基礎(chǔ)值根據(jù)組內(nèi)最大擦寫次數(shù)計(jì)算得出,方法是將最大擦寫次數(shù)除以定值p,結(jié)果向上取整,再乘以p,2≤p≤100000。
上述裝置中,所述單元特征還包括:
對(duì)“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k”單元采用以下規(guī)則:原子性保護(hù)數(shù)據(jù)包括頁(yè)x、y的地址,并記錄“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k單元”至“頁(yè)x、y映射關(guān)系更新單元”的執(zhí)行情況。以便該步驟及后續(xù)步驟中出現(xiàn)斷電,可以恢復(fù)數(shù)據(jù)。
上述裝置中,所述單元特征還包括:
對(duì)“將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k”單元采用以下規(guī)則:中轉(zhuǎn)頁(yè)k屬于中轉(zhuǎn)頁(yè)區(qū),該區(qū)包含n個(gè)頁(yè),和邏輯數(shù)據(jù)區(qū)等分的個(gè)數(shù)相同。當(dāng)物理組內(nèi)發(fā)生換頁(yè)并最小擦寫次數(shù)是第j頁(yè)時(shí),中轉(zhuǎn)區(qū)第j個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例的一種norflash存儲(chǔ)器的數(shù)據(jù)管理方法的流程圖;
圖2為本發(fā)明實(shí)施例的一種norflash存儲(chǔ)器的數(shù)據(jù)管理裝置的組成結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例的任意一段連續(xù)的邏輯空間可當(dāng)做高壽命區(qū)的示意圖。
具體實(shí)施方式
當(dāng)前有的芯片flaship核(intellectualpropertycore)有這樣的形式物理頁(yè):實(shí)際一頁(yè)的存儲(chǔ)空間為邏輯頁(yè)大小加上幾字節(jié)(例如4字節(jié))的額外空間sparebytes,例如宣稱flash特性是256字節(jié)一頁(yè),實(shí)際物理頁(yè)是260字節(jié)。這種flash在擦除一頁(yè)時(shí),可將260字節(jié)同時(shí)擦除,并可以單獨(dú)寫這一頁(yè)中的任意字節(jié)。本實(shí)施例是基于這種norflash來(lái)描述的,將256字節(jié)作為數(shù)據(jù)段,與邏輯頁(yè)的256字節(jié)對(duì)應(yīng),將sparebytes作為映射管理控制信息。
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。
本發(fā)明實(shí)施例提供一種非易失性存儲(chǔ)器的數(shù)據(jù)管理方法與裝置,用以解決現(xiàn)有技術(shù)中負(fù)責(zé)管理的存儲(chǔ)單元是壽命瓶頸,以及不能支持?jǐn)?shù)頁(yè)均衡擦寫的特殊存儲(chǔ)器空間可能有不同的地址空間需求的問(wèn)題。
為方便描述,本文基于如下flash特征來(lái)進(jìn)行說(shuō)明——每頁(yè)大小為260字節(jié)、包括4字節(jié)sparebytes,300kb邏輯空間(共計(jì)1200頁(yè)),對(duì)應(yīng)1200頁(yè)物理空間(300kb數(shù)據(jù)空間和4*1200字節(jié)sparebytes,為方便稱謂,也稱為300kb物理空間),單一物理頁(yè)擦寫壽命為10萬(wàn)次。
本發(fā)明實(shí)施例提供一種非易失性存儲(chǔ)器的數(shù)據(jù)管理方法,如圖1所示,該方法主要包括:
將物理數(shù)據(jù)存儲(chǔ)器300kb(1200頁(yè))等分為3份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組有關(guān)聯(lián)的物理數(shù)據(jù)頁(yè)組bi,i的范圍1~400。將邏輯數(shù)據(jù)存儲(chǔ)器300kb等分為3份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組邏輯數(shù)據(jù)頁(yè)組ai。ai與bi通過(guò)bi內(nèi)存儲(chǔ)的映射管理控制信息sparebytes進(jìn)行一一映射。讀bi的第1~3頁(yè)數(shù)據(jù)時(shí),依據(jù)映射關(guān)系從ai的第1~3頁(yè)中的某一頁(yè)中讀取。寫bi的第1~3頁(yè)數(shù)據(jù)時(shí),若ai中的指定映射物理頁(yè)的擦寫次數(shù)未滿足要求,直接寫入該物理頁(yè);若擦寫次數(shù)滿足要求,將進(jìn)行ai和bi映射關(guān)系的重新建立,然后將數(shù)據(jù)寫入到新映射關(guān)系指定的ai中的物理頁(yè)中。擦寫方法步驟為:
步驟a01,用于根據(jù)當(dāng)前要擦寫的邏輯頁(yè)地址,在對(duì)應(yīng)的物理頁(yè)組中找到對(duì)應(yīng)的數(shù)據(jù)物理頁(yè)x。例如當(dāng)前邏輯頁(yè)為第9頁(yè),則屬于第a9組(i=9,邏輯頁(yè)的第9、第409、第809頁(yè))的第3頁(yè),需要到對(duì)應(yīng)的b3組中進(jìn)行檢索。b9的三個(gè)物理頁(yè)(即物理頁(yè)的第9、第409、第809頁(yè))中各自映射管理控制信息sparebytes中存儲(chǔ)著映射關(guān)系字節(jié),例如b9的第一頁(yè)存儲(chǔ)著02,表明該物理頁(yè)對(duì)應(yīng)著a9邏輯組的第2頁(yè),即整體邏輯頁(yè)中第409頁(yè);b9的第2頁(yè)存儲(chǔ)著03,表明該物理頁(yè)對(duì)應(yīng)著a9邏輯組的第3頁(yè)。這樣檢索出當(dāng)前邏輯頁(yè)為第9頁(yè)對(duì)應(yīng)著b9物理頁(yè)組的第2頁(yè)(整體物理頁(yè)的409頁(yè)),該頁(yè)即上述數(shù)據(jù)物理頁(yè)x。
步驟a02,用于根據(jù)數(shù)據(jù)物理頁(yè)x內(nèi)的映射管理控制信息檢索出物理頁(yè)x的擦寫次數(shù),并進(jìn)行判斷處理。如果物理頁(yè)x的閾值大于指定閾值,則從“檢索出物理組內(nèi)最小擦寫次數(shù)頁(yè)y”步驟開(kāi)始處理;如果物理頁(yè)x的擦寫次數(shù)小于等于指定閾值,則從“新數(shù)據(jù)寫入當(dāng)前頁(yè)x”步驟開(kāi)始處理。每次的“指定閾值”不是一個(gè)固定值,而是根據(jù)閾值基礎(chǔ)從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。閾值基礎(chǔ)值是根據(jù)組內(nèi)最大擦寫次數(shù)計(jì)算出來(lái)的,是將最大擦寫次數(shù)對(duì)定值1024的倍數(shù)向上取整。例如組內(nèi)最大擦寫次數(shù)是2049,則閾值基礎(chǔ)值為2049除以1024大于2,則取3,再乘以1024,等于3072。閾值范圍定義為基礎(chǔ)值減q值(1≤p≤100000,本實(shí)例取值為10)至基礎(chǔ)值加r值(0≤r≤100000,本實(shí)例取值為0),即3062至3072。
步驟a11,用于將待寫的數(shù)據(jù)寫入到頁(yè)x內(nèi)。本實(shí)施例中,數(shù)據(jù)長(zhǎng)度為256字節(jié)。
步驟a12,用于將頁(yè)x的擦寫次數(shù)加一,將新擦寫次數(shù)和原映射關(guān)系寫入頁(yè)x的映射管理控制信息。本實(shí)施例中,b9物理頁(yè)組的第2頁(yè)的原映射關(guān)系是03,則將03還寫回至映射管理控制信息。無(wú)換頁(yè)的數(shù)據(jù)擦寫過(guò)程完成。
步驟a21,用于根據(jù)物理頁(yè)組內(nèi)每一頁(yè)的映射管理控制信息中存儲(chǔ)的擦寫次數(shù),檢索出最小擦寫次數(shù)的物理頁(yè)y。b9的三個(gè)物理頁(yè)中各自映射管理控制信息sparebytes中存儲(chǔ)著擦寫次數(shù),例如分別為組內(nèi)第一頁(yè)擦寫次數(shù)為100次,第二頁(yè)擦寫次數(shù)為1023次,第三頁(yè)擦寫次數(shù)為500次。則b9組內(nèi)第一頁(yè)為最小擦寫次數(shù)的物理頁(yè)y,第二頁(yè)為a01步驟中找出的頁(yè)x,并在第a02步驟中判斷1023大于了指定閾值。
步驟a22,用于備份頁(yè)y的內(nèi)容到頁(yè)k中,并在k頁(yè)的映射管理控制信息中存儲(chǔ)頁(yè)y地址和原子性保護(hù)數(shù)據(jù)。中轉(zhuǎn)頁(yè)k屬于中轉(zhuǎn)頁(yè)區(qū),該區(qū)包含n個(gè)頁(yè),和邏輯數(shù)據(jù)區(qū)等分的個(gè)數(shù)相同。本實(shí)施例中中轉(zhuǎn)頁(yè)區(qū)包含3個(gè)中轉(zhuǎn)頁(yè)。當(dāng)物理組內(nèi)發(fā)生換頁(yè)并最小擦寫次數(shù)是第j頁(yè)時(shí),中轉(zhuǎn)區(qū)第j個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。本實(shí)施例中中轉(zhuǎn)區(qū)第1個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。頁(yè)k原子性保護(hù)數(shù)據(jù)包括頁(yè)x、y的地址,并記錄a22步驟至a26步驟的執(zhí)行情況。通過(guò)監(jiān)控執(zhí)行步驟,以便該步驟及后續(xù)步驟中出現(xiàn)斷電,可以查出是哪一步驟過(guò)程中掉電,采取重新繼續(xù)執(zhí)行或回退至初始狀態(tài),達(dá)到恢復(fù)數(shù)據(jù)的效果。
步驟a23,用于將待寫的數(shù)據(jù)寫入到頁(yè)y內(nèi),更新k頁(yè)中的原子性保護(hù)數(shù)據(jù)。將預(yù)期寫入第9邏輯頁(yè)的數(shù)據(jù)寫入到最小擦寫次數(shù)的b9組內(nèi)第一頁(yè)中,并在中轉(zhuǎn)頁(yè)k中記錄a23執(zhí)行完成。
步驟a24,用于將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)轉(zhuǎn)移至頁(yè)x中。將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)寫入最大擦寫次數(shù)的b3組內(nèi)第二頁(yè),即頁(yè)x中。這樣完成了頁(yè)x和頁(yè)y的數(shù)據(jù)互換。
步驟a25,用于將頁(yè)x、y的擦寫次數(shù)加一,將新擦寫次數(shù)寫入各自的映射管理控制信息中。這時(shí),頁(yè)x(b3第二頁(yè))的擦寫次數(shù)是1024,頁(yè)y(b3第一頁(yè))的擦寫次數(shù)是101。
步驟a26,用于將物理頁(yè)x、y與邏輯頁(yè)的映射關(guān)系互換,并清除k頁(yè)中的原子性保護(hù)數(shù)據(jù)。物理頁(yè)x原先對(duì)應(yīng)的是邏輯頁(yè)第9頁(yè),物理頁(yè)y原先對(duì)應(yīng)的是邏輯頁(yè)第409頁(yè)。本步驟執(zhí)行后,物理頁(yè)x對(duì)應(yīng)的是邏輯頁(yè)第409頁(yè),物理頁(yè)y原先對(duì)應(yīng)的是邏輯頁(yè)第9頁(yè)。這樣原先被重度擦寫的邏輯頁(yè)就映射到了輕度擦寫的物理頁(yè)上。通常被重度擦寫的邏輯頁(yè)在后續(xù)還是會(huì)有大概率被擦寫,這樣由于其對(duì)應(yīng)的物理頁(yè)是個(gè)輕度擦寫的物理頁(yè),可以承受更大的擦寫次數(shù)了。循環(huán)反復(fù),假設(shè)該邏輯頁(yè)組里僅有一頁(yè)m總被擦寫,而另兩個(gè)邏輯頁(yè)幾乎不被擦寫,僅被用于保存不變的數(shù)據(jù)。則邏輯上m頁(yè)將有三倍的擦寫壽命。
本發(fā)明實(shí)施例提供一種非易失性存儲(chǔ)器的損耗均衡裝置,如圖2所示,該裝置主要包括:
將物理數(shù)據(jù)存儲(chǔ)器300kb(1200頁(yè))等分為3份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組有關(guān)聯(lián)的物理數(shù)據(jù)頁(yè)組bi,i的范圍1~400。將邏輯數(shù)據(jù)存儲(chǔ)器300kb等分為3份,將每份存儲(chǔ)器空間相同偏移的地址頁(yè)構(gòu)成一組邏輯數(shù)據(jù)頁(yè)組ai。ai與bi通過(guò)bi內(nèi)存儲(chǔ)的映射管理控制信息sparebytes進(jìn)行一一映射。讀bi的第1~3頁(yè)數(shù)據(jù)時(shí),依據(jù)映射關(guān)系從ai的第1~3頁(yè)中的某一頁(yè)中讀取。寫bi的第1~3頁(yè)數(shù)據(jù)時(shí),若ai中的指定映射物理頁(yè)的擦寫次數(shù)未滿足要求,直接寫入該物理頁(yè);若擦寫次數(shù)滿足要求,將進(jìn)行ai和bi映射關(guān)系的重新建立,然后將數(shù)據(jù)寫入到新映射關(guān)系指定的ai中的物理頁(yè)中。擦寫方法步驟為:
檢索出物理頁(yè)組內(nèi)當(dāng)前頁(yè)x單元10,檢索出物理頁(yè)組內(nèi)當(dāng)前頁(yè)x單元10,用于根據(jù)當(dāng)前要擦寫的邏輯頁(yè)地址,在對(duì)應(yīng)的物理頁(yè)組中找到對(duì)應(yīng)的數(shù)據(jù)物理頁(yè)x。例如當(dāng)前邏輯頁(yè)為第9頁(yè),則屬于第a9組(i=9,邏輯頁(yè)的第9、第409、第809頁(yè))的第3頁(yè),需要到對(duì)應(yīng)的b3組中進(jìn)行檢索。b9的三個(gè)物理頁(yè)(即物理頁(yè)的第9、第409、第809頁(yè))中各自映射管理控制信息sparebytes中存儲(chǔ)著映射關(guān)系字節(jié),例如b9的第一頁(yè)存儲(chǔ)著02,表明該物理頁(yè)對(duì)應(yīng)著a9邏輯組的第2頁(yè),即整體邏輯頁(yè)中第409頁(yè);b9的第2頁(yè)存儲(chǔ)著03,表明該物理頁(yè)對(duì)應(yīng)著a9邏輯組的第3頁(yè)。這樣檢索出當(dāng)前邏輯頁(yè)為第9頁(yè)對(duì)應(yīng)著b9物理頁(yè)組的第2頁(yè)(整體物理頁(yè)的409頁(yè)),該頁(yè)即上述數(shù)據(jù)物理頁(yè)x。
閾值判斷單元20,用于根據(jù)數(shù)據(jù)物理頁(yè)x內(nèi)的映射管理控制信息檢索出物理頁(yè)x的擦寫次數(shù),并進(jìn)行判斷處理。如果物理頁(yè)x的閾值大于指定閾值,則從單元40開(kāi)始處理;如果物理頁(yè)x的擦寫次數(shù)小于等于指定閾值,則從單元30開(kāi)始處理。每次的“指定閾值”不是一個(gè)固定值,而是根據(jù)閾值基礎(chǔ)從一個(gè)閾值范圍內(nèi)隨機(jī)產(chǎn)生的值。閾值基礎(chǔ)值是根據(jù)組內(nèi)最大擦寫次數(shù)計(jì)算出來(lái)的,是將最大擦寫次數(shù)對(duì)定值1024的倍數(shù)向上取整。例如組內(nèi)最大擦寫次數(shù)是2049,則閾值基礎(chǔ)值為2049除以1024大于2,則取3,再乘以1024,等于3072。閾值范圍定義為基礎(chǔ)值減q值(1≤p≤100000,本實(shí)例取值為10)至基礎(chǔ)值加r值(0≤r≤100000,本實(shí)例取值為0),即3062至3072。
新數(shù)據(jù)寫入當(dāng)前頁(yè)x單元30,用于將待寫的數(shù)據(jù)寫入到頁(yè)x內(nèi)。本實(shí)施例中,數(shù)據(jù)長(zhǎng)度為256字節(jié)。
當(dāng)前頁(yè)x擦寫次數(shù)更新單元31,用于將頁(yè)x的擦寫次數(shù)加一,將新擦寫次數(shù)和原映射關(guān)系寫入頁(yè)x的映射管理控制信息。本實(shí)施例中,b9物理頁(yè)組的第2頁(yè)的原映射關(guān)系是03,則將03還寫回至映射管理控制信息。無(wú)換頁(yè)的數(shù)據(jù)擦寫過(guò)程完成。
檢索出物理頁(yè)組內(nèi)最小擦寫次數(shù)頁(yè)y單元40,用于根據(jù)物理頁(yè)組內(nèi)每一頁(yè)的映射管理控制信息中存儲(chǔ)的擦寫次數(shù),檢索出最小擦寫次數(shù)的物理頁(yè)y。b9的三個(gè)物理頁(yè)中各自映射管理控制信息sparebytes中存儲(chǔ)著擦寫次數(shù),例如分別為組內(nèi)第一頁(yè)擦寫次數(shù)為100次,第二頁(yè)擦寫次數(shù)為1023次,第三頁(yè)擦寫次數(shù)為500次。則b9組內(nèi)第一頁(yè)為最小擦寫次數(shù)的物理頁(yè)y,第二頁(yè)為a01步驟中找出的頁(yè)x,并在第a02步驟中判斷1023大于了指定閾值。
將頁(yè)y的數(shù)據(jù)寫入中轉(zhuǎn)頁(yè)k單元41,用于備份頁(yè)y的內(nèi)容到頁(yè)k中,并在k頁(yè)的映射管理控制信息中存儲(chǔ)頁(yè)y地址和原子性保護(hù)數(shù)據(jù)。中轉(zhuǎn)頁(yè)k屬于中轉(zhuǎn)頁(yè)區(qū),該區(qū)包含n個(gè)頁(yè),和邏輯數(shù)據(jù)區(qū)等分的個(gè)數(shù)相同。本實(shí)施例中中轉(zhuǎn)頁(yè)區(qū)包含3個(gè)中轉(zhuǎn)頁(yè)。當(dāng)物理組內(nèi)發(fā)生換頁(yè)并最小擦寫次數(shù)是第j頁(yè)時(shí),中轉(zhuǎn)區(qū)第j個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。本實(shí)施例中中轉(zhuǎn)區(qū)第1個(gè)中轉(zhuǎn)頁(yè)將被當(dāng)成中轉(zhuǎn)頁(yè)k。頁(yè)k原子性保護(hù)數(shù)據(jù)包括頁(yè)x、y的地址,并記錄單元41至單元45的執(zhí)行情況。通過(guò)監(jiān)控執(zhí)行單元,以便該單元及后續(xù)單元中出現(xiàn)斷電,可以查出是哪一單元處理過(guò)程中掉電,采取重新繼續(xù)執(zhí)行或回退至初始狀態(tài),達(dá)到恢復(fù)數(shù)據(jù)的效果。
新數(shù)據(jù)寫入頁(yè)y單元42,用于將待寫的數(shù)據(jù)寫入到頁(yè)y內(nèi),更新k頁(yè)中的原子性保護(hù)數(shù)據(jù)。將預(yù)期寫入第9邏輯頁(yè)的數(shù)據(jù)寫入到最小擦寫次數(shù)的b9組內(nèi)第一頁(yè)中,并在中轉(zhuǎn)頁(yè)k中記錄a23執(zhí)行完成。
將頁(yè)k的數(shù)據(jù)寫入頁(yè)x單元43,用于將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)轉(zhuǎn)移至頁(yè)x中。將中轉(zhuǎn)頁(yè)k中的數(shù)據(jù)寫入最大擦寫次數(shù)的b3組內(nèi)第二頁(yè),即頁(yè)x中。這樣完成了頁(yè)x和頁(yè)y的數(shù)據(jù)互換。
頁(yè)x、頁(yè)y擦寫次數(shù)更新單元44,用于將頁(yè)x、y的擦寫次數(shù)加一,將新擦寫次數(shù)寫入各自的映射管理控制信息中。這時(shí),頁(yè)x(b3第二頁(yè))的擦寫次數(shù)是1024,頁(yè)y(b3第一頁(yè))的擦寫次數(shù)是101。
頁(yè)x、頁(yè)y映射關(guān)系更新單元45,用于將物理頁(yè)x、y與邏輯頁(yè)的映射關(guān)系互換,并清除k頁(yè)中的原子性保護(hù)數(shù)據(jù)。物理頁(yè)x原先對(duì)應(yīng)的是邏輯頁(yè)第9頁(yè),物理頁(yè)y原先對(duì)應(yīng)的是邏輯頁(yè)第409頁(yè)。本單元執(zhí)行后,物理頁(yè)x對(duì)應(yīng)的是邏輯頁(yè)第409頁(yè),物理頁(yè)y原先對(duì)應(yīng)的是邏輯頁(yè)第9頁(yè)。這樣原先被重度擦寫的邏輯頁(yè)就映射到了輕度擦寫的物理頁(yè)上。通常被重度擦寫的邏輯頁(yè)在后續(xù)還是會(huì)有大概率被擦寫,這樣由于其對(duì)應(yīng)的物理頁(yè)是個(gè)輕度擦寫的物理頁(yè),可以承受更大的擦寫次數(shù)了。循環(huán)反復(fù),假設(shè)該邏輯頁(yè)組里僅有一頁(yè)m總被擦寫,而另兩個(gè)邏輯頁(yè)幾乎不被擦寫,僅被用于保存不變的數(shù)據(jù)。則邏輯上m頁(yè)將有三倍的擦寫壽命。
當(dāng)采用本方法或裝置的本實(shí)施例可達(dá)到如下效果:
1)不存在索引區(qū),用于處理映射關(guān)系的數(shù)據(jù)在常規(guī)物理頁(yè)中,不存在索引區(qū)壽命問(wèn)題
2)每換頁(yè)一次,會(huì)擦寫中轉(zhuǎn)區(qū)。根據(jù)實(shí)施例可以計(jì)算出一個(gè)中轉(zhuǎn)區(qū)頁(yè)的最大擦寫次數(shù)。中轉(zhuǎn)區(qū)頁(yè)數(shù)是邏輯數(shù)據(jù)區(qū)等分的個(gè)數(shù)。實(shí)施例中相當(dāng)于每個(gè)中轉(zhuǎn)頁(yè)負(fù)責(zé)400物理頁(yè)的輪轉(zhuǎn)。每個(gè)物理頁(yè)擦寫壽命為10萬(wàn)次,輪轉(zhuǎn)閾值是1024。則中轉(zhuǎn)頁(yè)最多被擦400*10000/1024=3.9萬(wàn)次,遠(yuǎn)小于物理頁(yè)擦寫壽命。
3)假設(shè)邏輯頁(yè)組里僅有一頁(yè)m總被擦寫,而另兩個(gè)邏輯頁(yè)幾乎不被擦寫,僅被用于保存不變的數(shù)據(jù)。則邏輯m頁(yè)將有三倍的擦寫壽命。
4)通過(guò)本實(shí)施例分組方式的設(shè)計(jì),可以表現(xiàn)出將任意一段連續(xù)的邏輯100kb的空間,當(dāng)做高壽命區(qū)(1~3倍壽命),其他空間當(dāng)做低壽命區(qū)(小于1倍壽命)。當(dāng)用相同的實(shí)施例和裝置時(shí),如圖3所示的三種情況,可試為不同使用者有不同的使用習(xí)慣。情況1表明可以將200~300k地址空間的邏輯區(qū)域當(dāng)做高壽命區(qū);情況2表明可以將170~270k地址空間的邏輯區(qū)域當(dāng)做高壽命區(qū);情況3表明可以將151~251k地址空間的邏輯區(qū)域當(dāng)做高壽命區(qū)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。