本發(fā)明涉及一種存儲(chǔ)器管理技術(shù),尤其是涉及一種配置有可復(fù)寫式非易失性存儲(chǔ)器模塊的存儲(chǔ)裝置的存儲(chǔ)器管理方法及存儲(chǔ)器控制器。
背景技術(shù):
1、非易失性存儲(chǔ)器(non-volatile?memory)是指當(dāng)電流斷掉后,所存儲(chǔ)的數(shù)據(jù)不會(huì)消失的電腦存儲(chǔ)器,具有數(shù)據(jù)非易失性、省電、體積小與無機(jī)械結(jié)構(gòu)等優(yōu)點(diǎn),被廣泛地應(yīng)用于各種電子裝置中。
2、在現(xiàn)代的固態(tài)硬盤(ssd)中,為了平衡成本、容量和性能,通常采用混合模式的管理方法。這種方法將部分多層單元(tlc)存儲(chǔ)區(qū)域劃分出來作為單層單元(slc)使用。slc雖然容量較小,但讀寫速度更快。數(shù)據(jù)首先以slc方式寫入slc?cache,當(dāng)slc?cache所存儲(chǔ)的數(shù)據(jù)湊夠tlc一數(shù)據(jù)塊的數(shù)據(jù)量時(shí),數(shù)據(jù)會(huì)被轉(zhuǎn)移到tlc單元中。然而,以tlc模式寫入的數(shù)據(jù)比slc模式更容易出錯(cuò),可能會(huì)降低數(shù)據(jù)可靠性。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于解決上述問題,能設(shè)計(jì)一個(gè)存儲(chǔ)器管理方法,通過即時(shí)檢測(cè)和動(dòng)態(tài)調(diào)整,大大提高了ssd的數(shù)據(jù)可靠性。
2、本發(fā)明的一或多個(gè)實(shí)施例提供一種適用于配置有可復(fù)寫式非易失性存儲(chǔ)器模塊的存儲(chǔ)裝置的存儲(chǔ)器控制器的存儲(chǔ)器管理方法。所述方法包括:在所述可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)緩存區(qū)的多個(gè)緩存集中的第一緩存集被寫滿后,將所述第一緩存集的全部的第一數(shù)據(jù)從所述第一緩存集寫入到所述可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)存儲(chǔ)區(qū)的多個(gè)實(shí)體塊中的空白的第一實(shí)體塊,其中,所述第一緩存集的數(shù)據(jù)容量與所述第一實(shí)體塊的數(shù)據(jù)容量一致;對(duì)所述第一實(shí)體塊進(jìn)行回讀檢測(cè),以確定所述第一實(shí)體塊中的錯(cuò)誤頁面的總數(shù)量;判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過第一預(yù)設(shè)閾值;若所述錯(cuò)誤頁面的所述總數(shù)量未超過所述第一預(yù)設(shè)閾值,則從所述第一緩存集中獲取所述第一數(shù)據(jù)中相應(yīng)于所述錯(cuò)誤頁面的目標(biāo)數(shù)據(jù),并將所述目標(biāo)數(shù)據(jù)寫入到所述多個(gè)緩存集中的第二緩存集。
3、基于上述,本方法通過將第一緩存集的數(shù)據(jù)容量與第一實(shí)體塊容量匹配,減少數(shù)據(jù)搬運(yùn)時(shí)的分塊合并操作;再通過選擇性地僅對(duì)不穩(wěn)定區(qū)域執(zhí)行回讀檢測(cè),避免了對(duì)所有數(shù)據(jù)塊執(zhí)行檢測(cè)帶來的性能開銷。當(dāng)檢測(cè)到錯(cuò)誤頁面數(shù)量在閾值范圍內(nèi)時(shí),僅對(duì)錯(cuò)誤頁面的數(shù)據(jù)進(jìn)行重寫,無需整塊數(shù)據(jù)遷移。同時(shí),將錯(cuò)誤數(shù)據(jù)重新寫入slc緩存區(qū)而非tlc區(qū)域,避免了在不穩(wěn)定存儲(chǔ)位置反復(fù)寫入的問題。這種機(jī)制在保證數(shù)據(jù)可靠性的同時(shí),顯著提升了數(shù)據(jù)寫入速度。
4、在本發(fā)明的一或多個(gè)實(shí)施例中,若所述錯(cuò)誤頁面的所述總數(shù)量超過所述第一預(yù)設(shè)閾值,則從所述多個(gè)實(shí)體塊中選擇空白的第二實(shí)體塊,并將所述第一數(shù)據(jù)從所述第一緩存集寫入到所述第二實(shí)體塊。
5、在本發(fā)明的一或多個(gè)實(shí)施例中,所述方法還包括:在將所述目標(biāo)數(shù)據(jù)從所述第一緩存集重新寫入到所述第二實(shí)體塊后,若所述第二實(shí)體塊中的對(duì)應(yīng)所述目標(biāo)數(shù)據(jù)的所述錯(cuò)誤頁面的所述總數(shù)量超過所述第一預(yù)設(shè)閾值,將所述目標(biāo)數(shù)據(jù)從所述第一緩存塊重新寫入到另一個(gè)第二實(shí)體塊,累計(jì)所述目標(biāo)數(shù)據(jù)的重寫次數(shù);若所述重寫次數(shù)超過不兼容閾值,在所述數(shù)據(jù)存儲(chǔ)區(qū)中分配第一類型的多個(gè)第一類型實(shí)體塊,并將所述目標(biāo)數(shù)據(jù)寫入到所述多個(gè)第一類型實(shí)體塊,其中所述數(shù)據(jù)存儲(chǔ)區(qū)的所述多個(gè)實(shí)體塊為第二類型。
6、在本發(fā)明的一或多個(gè)實(shí)施例中,在判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過所述第一預(yù)設(shè)閾值之前,所述方法還包括:判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過第二預(yù)設(shè)閾值;若所述錯(cuò)誤頁面的所述總數(shù)量未超過第二預(yù)設(shè)閾值,則判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過所述第一預(yù)設(shè)閾值;以及若所述錯(cuò)誤頁面的所述總數(shù)量超過第二預(yù)設(shè)閾值,在不判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過所述第一預(yù)設(shè)閾值的情況下,直接從所述多個(gè)實(shí)體塊中選擇空白的所述第二實(shí)體塊,并將所述第一數(shù)據(jù)從所述第一緩存集寫入到所述第二實(shí)體塊。
7、在本發(fā)明的一或多個(gè)實(shí)施例中,若所述錯(cuò)誤頁面的所述總數(shù)量超過所述第二預(yù)設(shè)閾值,所述方法還包括:將對(duì)應(yīng)所述第一實(shí)體塊的異常次數(shù)累加1;以及當(dāng)所述異常次數(shù)超過第三預(yù)設(shè)閾值時(shí),將所述第一實(shí)體塊歸類為壞塊。
8、在本發(fā)明的一或多個(gè)實(shí)施例中,在判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過所述第一預(yù)設(shè)閾值之前,所述方法還包括:識(shí)別排序在所述第一緩存集后的所述第二緩存集;將所述第二緩存集的當(dāng)前剩余的空白的多個(gè)實(shí)體頁的總數(shù)量設(shè)定為所述第一預(yù)設(shè)閾值。
9、在本發(fā)明的一或多個(gè)實(shí)施例中,其中所述數(shù)據(jù)緩存區(qū)的每個(gè)緩存集具有屬于第一類型的多個(gè)第一存儲(chǔ)單元,其中每個(gè)第一存儲(chǔ)單元存儲(chǔ)1個(gè)位的數(shù)據(jù),其中所述數(shù)據(jù)存儲(chǔ)區(qū)的每個(gè)實(shí)體塊具有屬于第二類型的多個(gè)第二存儲(chǔ)單元,其中每個(gè)第二存儲(chǔ)單元存儲(chǔ)n個(gè)位的數(shù)據(jù),n為大于1的正整數(shù),其中每個(gè)緩存集的所述多個(gè)第一存儲(chǔ)單元的第一數(shù)量等于每個(gè)實(shí)體塊的所述多個(gè)第二存儲(chǔ)單元的第二數(shù)量的n倍。
10、在本發(fā)明的一或多個(gè)實(shí)施例中,所述方法還包括:判斷所述第一實(shí)體塊是否屬于多個(gè)不穩(wěn)定實(shí)體塊的其中之一,其中所述多個(gè)不穩(wěn)定實(shí)體塊是預(yù)先設(shè)定的;以及反應(yīng)于判定所述第一實(shí)體塊屬于所述不穩(wěn)定實(shí)體塊組,對(duì)所述第一實(shí)體塊進(jìn)行回讀檢測(cè),以確定所述第一實(shí)體塊中的錯(cuò)誤頁面的總數(shù)量。
11、在本發(fā)明的一或多個(gè)實(shí)施例中,在確定所述第一實(shí)體塊中的所述錯(cuò)誤頁面后,所述方法還包括:記錄相應(yīng)于所述錯(cuò)誤頁面的所述目標(biāo)數(shù)據(jù)的數(shù)據(jù)態(tài)樣;將對(duì)應(yīng)所述數(shù)據(jù)態(tài)樣的錯(cuò)誤次數(shù)累加1;以及當(dāng)所述數(shù)據(jù)態(tài)樣的所述錯(cuò)誤次數(shù)超過錯(cuò)誤數(shù)據(jù)態(tài)樣門檻值時(shí),將所述數(shù)據(jù)態(tài)樣記錄為不穩(wěn)定數(shù)據(jù)態(tài)樣,并且設(shè)定將符合所述數(shù)據(jù)態(tài)樣的寫入數(shù)據(jù)總是寫入到穩(wěn)定數(shù)據(jù)存儲(chǔ)區(qū)。
12、在本發(fā)明的一或多個(gè)實(shí)施例中,所述方法還包括:在從所述多個(gè)實(shí)體塊中選擇空白的所述第二實(shí)體塊時(shí),根據(jù)預(yù)先記錄的每個(gè)實(shí)體塊的質(zhì)量參數(shù)選擇質(zhì)量最佳的空白實(shí)體塊作為所述第二實(shí)體塊,其中所述質(zhì)量參數(shù)包括:被寫入數(shù)據(jù)的次數(shù)、擦除循環(huán)次數(shù)或位元錯(cuò)誤率。
13、本發(fā)明的一或多個(gè)實(shí)施例提供用于控制配置有可復(fù)寫式非易失性存儲(chǔ)器模塊的存儲(chǔ)裝置的一種存儲(chǔ)器控制器。所述存儲(chǔ)器控制器包括:存儲(chǔ)器接口控制電路,用以電性連接至所述可復(fù)寫式非易失性存儲(chǔ)器模塊;以及處理器,電性連接至所述存儲(chǔ)器接口控制電路。所述處理器被配置以:在所述可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)緩存區(qū)的多個(gè)緩存集中的第一緩存集被寫滿后,將所述第一緩存集的全部的第一數(shù)據(jù)從所述第一緩存集寫入到所述可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)存儲(chǔ)區(qū)的多個(gè)實(shí)體塊中的空白的第一實(shí)體塊,其中,所述第一緩存集的數(shù)據(jù)容量與所述第一實(shí)體塊的數(shù)據(jù)容量一致;對(duì)所述第一實(shí)體塊進(jìn)行回讀檢測(cè),以確定所述第一實(shí)體塊中的錯(cuò)誤頁面的總數(shù)量;判斷所述錯(cuò)誤頁面的所述總數(shù)量是否超過第一預(yù)設(shè)閾值;以及若所述錯(cuò)誤頁面的所述總數(shù)量未超過所述第一預(yù)設(shè)閾值,則從所述第一緩存集中獲取所述第一數(shù)據(jù)中相應(yīng)于所述錯(cuò)誤頁面的目標(biāo)數(shù)據(jù),并將所述目標(biāo)數(shù)據(jù)寫入到所述多個(gè)緩存集中的第二緩存集。
14、基于上述,本發(fā)明實(shí)施例所提供的存儲(chǔ)器管理方法及存儲(chǔ)器控制器,通過回讀檢測(cè)及時(shí)發(fā)現(xiàn)對(duì)應(yīng)第二類型存儲(chǔ)單元的存儲(chǔ)區(qū)域中的錯(cuò)誤頁面,并基于剩余對(duì)應(yīng)第一類型存儲(chǔ)單元的數(shù)據(jù)緩存區(qū)的容量動(dòng)態(tài)調(diào)整預(yù)設(shè)閾值,實(shí)現(xiàn)了自適應(yīng)的錯(cuò)誤處理策略:當(dāng)錯(cuò)誤頁面數(shù)量較少時(shí)僅重寫出錯(cuò)頁面以減少數(shù)據(jù)搬移的資源耗費(fèi),當(dāng)錯(cuò)誤較多時(shí)則選擇更優(yōu)質(zhì)的對(duì)應(yīng)第二類型存儲(chǔ)單元的實(shí)體塊進(jìn)行整塊重寫,增進(jìn)了存儲(chǔ)裝置的可靠性。同時(shí),通過識(shí)別易錯(cuò)數(shù)據(jù)模式和特殊處理不穩(wěn)定存儲(chǔ)區(qū)域,系統(tǒng)能預(yù)防性地調(diào)整存儲(chǔ)策略,在提升數(shù)據(jù)可靠性的同時(shí)有效延長(zhǎng)了存儲(chǔ)裝置壽命。