本發(fā)明涉及存儲(chǔ)管理領(lǐng)域,尤指一種位翻轉(zhuǎn)檢測(cè)方法及裝置。
背景技術(shù):
Nand-flash是閃存(flash)的一種,其中,Nand-flash作為一種存儲(chǔ)設(shè)備,具有容量大、改寫速度快、適用于存儲(chǔ)大量數(shù)據(jù)等優(yōu)點(diǎn),因而在業(yè)界得到了越來越廣泛的應(yīng)用。
在使用Nand-flash內(nèi)存的過程中,通常通過在系統(tǒng)對(duì)該Nand-flash內(nèi)存的存儲(chǔ)區(qū)域進(jìn)行讀操作的過程中,可以發(fā)現(xiàn)位翻轉(zhuǎn)現(xiàn)象,也就是說,在讀到發(fā)生位翻轉(zhuǎn)區(qū)域時(shí)可以發(fā)現(xiàn)位翻轉(zhuǎn),接著可以通過錯(cuò)誤檢查和糾正(Error Correcting Code,簡(jiǎn)稱ECC)算法對(duì)位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù),其中,位翻轉(zhuǎn)是指一個(gè)比特bit發(fā)生翻轉(zhuǎn)或被報(bào)告翻轉(zhuǎn)了。
上述現(xiàn)有技術(shù)是通過讀操作來發(fā)現(xiàn)位翻轉(zhuǎn)區(qū)域,然而,本領(lǐng)域技術(shù)人員在實(shí)現(xiàn)上述現(xiàn)有技術(shù)的過程中發(fā)現(xiàn),若位翻轉(zhuǎn)區(qū)域未及時(shí)發(fā)現(xiàn),位翻轉(zhuǎn)的位數(shù)超過一限值后,ECC算法將無法對(duì)該位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù),從而導(dǎo)致閃存的可靠性較低。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明提供了一種位翻轉(zhuǎn)檢測(cè)方法及裝置,用以解決及時(shí)發(fā)現(xiàn)位翻轉(zhuǎn)區(qū)域的問題。
為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種位翻轉(zhuǎn)檢測(cè)方法,包括:
確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),所述閃存設(shè)備包括至少一個(gè)閃存分 區(qū);
對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
進(jìn)一步的,所述確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),包括以下任意一組或其組合:
確定閃存分區(qū)當(dāng)前無用戶訪問;
確定當(dāng)前CPU的第一使用率小于第一門限值,所述中央處理器CPU與所述閃存設(shè)備連接,用于對(duì)所述閃存設(shè)備進(jìn)行控制操作;
確定當(dāng)前內(nèi)存的第二使用率小于第二門限值,所述內(nèi)存與所述CPU連接。
進(jìn)一步的,所述第一門限值為20%;所述第二門限值為50%。
進(jìn)一步的,所述對(duì)所述存閃存分區(qū)進(jìn)行分塊掃描操作,包括:
向所述閃存設(shè)備發(fā)送分塊讀nanddump指令,所述分塊讀指令包括讀取所述閃存分區(qū)的數(shù)據(jù),用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
進(jìn)一步的,所述對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作之后,還包括:
確定所述閃存分區(qū)存在位翻轉(zhuǎn)區(qū)域;
將所述位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù)處理。
本發(fā)明提供了一種位翻轉(zhuǎn)檢測(cè)裝置,包括:
確定模塊,用于確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),所述閃存設(shè)備包括至少一個(gè)閃存分區(qū);
掃描模塊,用于對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
進(jìn)一步的,所述確定模塊,具體用于執(zhí)行以下任意一組或其組合:
確定閃存分區(qū)當(dāng)前無用戶訪問;
確定當(dāng)前中央處理器CPU的第一使用率小于第一門限值,所述CPU與所述閃存設(shè)備連接,用于對(duì)所述閃存設(shè)備進(jìn)行控制操作;
確定當(dāng)前內(nèi)存的第二使用率小于第二門限值,所述內(nèi)存與所述CPU連接。
進(jìn)一步的,所述第一門限值為20%;所述第二門限值為50%。
進(jìn)一步的,所述掃描模塊,具體用于向所述閃存設(shè)備發(fā)送分塊讀nanddump指令,所述分塊讀指令包括讀取所述閃存分區(qū)的數(shù)據(jù),用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
進(jìn)一步的,所述確定模塊,還用于確定所述閃存分區(qū)存在位翻轉(zhuǎn)區(qū)域;將所述位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù)處理。
在本實(shí)施例中,確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),所述閃存設(shè)備包括至少一個(gè)閃存分區(qū);對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。實(shí)現(xiàn)了及時(shí)對(duì)閃存中位翻轉(zhuǎn)區(qū)域的檢測(cè),從而提高了閃存的可靠性。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
附圖說明
附圖用來提供對(duì)本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請(qǐng)的實(shí)施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。
圖1為本發(fā)明的位翻轉(zhuǎn)檢測(cè)方法一實(shí)施例的流程示意圖;
圖2為本發(fā)明的位翻轉(zhuǎn)檢測(cè)方法二實(shí)施例的流程示意圖;
圖3為本發(fā)明的位翻轉(zhuǎn)檢測(cè)裝置一實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
本發(fā)明實(shí)施例提供的位翻轉(zhuǎn)檢測(cè)方法具體應(yīng)用于檢測(cè)閃存,如Nand-flash 是否存在位翻轉(zhuǎn)區(qū)域,其中,位翻轉(zhuǎn)是指一個(gè)比特bit發(fā)生翻轉(zhuǎn)或被報(bào)告翻轉(zhuǎn)了。本實(shí)施例提供的位翻轉(zhuǎn)檢測(cè)實(shí)現(xiàn)方法可以通過位翻轉(zhuǎn)檢測(cè)裝置執(zhí)行,該位翻轉(zhuǎn)檢測(cè)裝置可以單獨(dú)設(shè)置,也可以設(shè)置在用于檢測(cè)閃存是否位翻轉(zhuǎn)的設(shè)備中,該設(shè)備可以為電腦或移動(dòng)終端等,其中,該裝置可以采用軟/硬件實(shí)現(xiàn)。以下對(duì)位翻轉(zhuǎn)檢測(cè)方法及裝置進(jìn)行詳細(xì)闡述。
圖1為本發(fā)明的位翻轉(zhuǎn)檢測(cè)方法一實(shí)施例的流程示意圖,如圖1所示,本發(fā)明提供的位翻轉(zhuǎn)檢測(cè)方法適用于對(duì)閃存設(shè)備的該閃存分區(qū)進(jìn)行讀操作之前,該位翻轉(zhuǎn)檢測(cè)方法,包括:
步驟101、確定閃存分區(qū)的工作狀態(tài)為空閑態(tài)。
在本實(shí)施例中,所述閃存設(shè)備包括至少一個(gè)閃存分區(qū),所述閃存分區(qū)包括至少一個(gè)存儲(chǔ)區(qū)域,所述存儲(chǔ)區(qū)域的大小與擦除塊的大小相同。舉例來講,NandFlash的數(shù)據(jù)是以比特bit的方式保存在存儲(chǔ)單元(memory cell)中,一般來說,一個(gè)存儲(chǔ)單元中只能存儲(chǔ)一個(gè)bit。這些存儲(chǔ)單元以8個(gè)bit或者16個(gè)bit為單位,連成比特線(bit line),形成所謂的字節(jié)(byte/word),這就是閃存的位寬。這些bit line會(huì)再組成頁(page),頁會(huì)組成塊(block)。NandFlash以頁為單位讀寫數(shù)據(jù),以塊為單位擦除數(shù)據(jù)。
舉例來講,對(duì)于確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),包括以下任意一組或其組合:
確定閃存分區(qū)當(dāng)前無用戶訪問;
確定當(dāng)前CPU的第一使用率小于第一門限值,所述中央處理器CPU對(duì)所述閃存設(shè)備進(jìn)行控制操作;
確定當(dāng)前內(nèi)存的第二使用率小于第二門限值,所述內(nèi)存與所述CPU連接。
步驟102、對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
在本實(shí)施例中,確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),閃存設(shè)備包括至少一個(gè)閃存分區(qū);對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。實(shí)現(xiàn)了及時(shí)對(duì)閃存中位翻轉(zhuǎn)區(qū)域的檢測(cè),從而提高了閃存的可靠性。
需要說明的是,在上述實(shí)施例的基礎(chǔ)上,所述第一門限值可以為20%;所述第二門限值可以為50%。
進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,可以包括:
向所述閃存設(shè)備發(fā)送分塊讀nanddump指令,所述分塊讀指令包括讀取所述閃存分區(qū)的數(shù)據(jù),用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
更進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,所述對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作之后,還包括:
確定所述閃存分區(qū)存在位翻轉(zhuǎn)區(qū)域;
將所述位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù)處理。
圖2為本發(fā)明的位翻轉(zhuǎn)檢測(cè)方法二實(shí)施例的流程示意圖,如圖2所示,該方法包括:
步驟201、確定閃存中閃存分區(qū)的數(shù)目,用以確定需要掃描的閃存分區(qū)數(shù)目。
步驟202、根據(jù)閃存中擦除塊大小,確定每一閃存分區(qū)需要掃描的次數(shù)。
先以一個(gè)閃存分區(qū)作為當(dāng)前閃存分區(qū),進(jìn)行步驟202。
舉例來講,將每一閃存分區(qū)的大小與擦除塊大小相除,接著將相除結(jié)果取整后獲得需要掃描的次數(shù)。
步驟203、獲取內(nèi)存當(dāng)前的第二使用率;
步驟204、獲取CPU當(dāng)前的第一使用率;
步驟205、檢查當(dāng)前閃存分區(qū)是否有其他用戶正在訪問;
步驟206、確定閃存分區(qū)的工作狀態(tài)為空閑態(tài)。
具體的,根據(jù)步驟203~205的結(jié)果,若確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),則執(zhí)行步驟207;若確定閃存分區(qū)的工作狀態(tài)不為空閑態(tài),則進(jìn)入休眠狀態(tài),在第一預(yù)設(shè)時(shí)長(zhǎng),如24小時(shí)后自動(dòng)從休眠狀態(tài)恢復(fù),執(zhí)行步驟201。
舉例來講,對(duì)于確定閃存分區(qū)的工作狀態(tài)為空閑態(tài)的實(shí)現(xiàn)方式,包括:
內(nèi)存使用率小于50%,CPU使用率小于20%,且當(dāng)前閃存分區(qū)沒有用戶 正在訪問。
需要說明的是,若以上任意沒有滿足,則確定閃存分區(qū)的工作狀態(tài)不為空閑態(tài)。
步驟207、對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
具體的,執(zhí)行分塊讀nanddump命令讀取閃存數(shù)據(jù)。該過程中如果發(fā)現(xiàn)位翻轉(zhuǎn)問題,會(huì)由硬件自動(dòng)進(jìn)行修復(fù)。
步驟208、確定該閃存分區(qū)是否掃描完畢。
具體的,根據(jù)步驟202中獲得該閃存分區(qū)掃描次數(shù),確定該閃存分區(qū)是否掃描完畢,若未掃描完畢,則執(zhí)行步驟203,即重復(fù)步驟203-步驟205。若掃描完畢,則執(zhí)行步驟209。
步驟209、確定閃存設(shè)備的所有閃存分區(qū)是否掃描完畢。
具體的,若未掃描完畢,則將未掃描的閃存分區(qū)中的一個(gè)作為當(dāng)前閃存分區(qū),執(zhí)行步驟202,若掃描完畢,進(jìn)入休眠狀態(tài),在第二預(yù)設(shè)時(shí)長(zhǎng),如24小時(shí)后自動(dòng)從休眠狀態(tài)恢復(fù),執(zhí)行步驟201。
圖3為本發(fā)明的位翻轉(zhuǎn)檢測(cè)裝置一實(shí)施例的結(jié)構(gòu)示意圖,如圖3所示,該位翻轉(zhuǎn)檢測(cè)裝置,包括:確定模塊31和掃描模塊32。其中,
確定模塊31,用于確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),所述閃存設(shè)備包括至少一個(gè)閃存分區(qū);
掃描模塊32,用于對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
在本實(shí)施例中,確定閃存分區(qū)的工作狀態(tài)為空閑態(tài),閃存設(shè)備包括至少一個(gè)閃存分區(qū);對(duì)所述閃存分區(qū)進(jìn)行分塊掃描操作,用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。實(shí)現(xiàn)了及時(shí)對(duì)閃存中位翻轉(zhuǎn)區(qū)域的檢測(cè),從而提高了閃存的可靠性。
在上述實(shí)施例的基礎(chǔ)上,所述確定模塊31,具體用于執(zhí)行以下任意一組或其組合:
確定閃存分區(qū)當(dāng)前無用戶訪問;
確定當(dāng)前CPU的第一使用率小于第一門限值,所述中央處理器CPU與所述閃存設(shè)備連接,用于對(duì)所述閃存設(shè)備進(jìn)行控制操作;
確定當(dāng)前內(nèi)存的第二使用率小于第二門限值,所述內(nèi)存與所述CPU連接。
進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,所述第一門限值為20%;所述第二門限值為50%。
進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,所述掃描模塊32,具體用于向所述閃存設(shè)備發(fā)送分塊讀nanddump指令,所述分塊讀指令包括讀取所述閃存分區(qū)的數(shù)據(jù),用以確定所述閃存分區(qū)是否存在位翻轉(zhuǎn)。
進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,所述確定模塊31,還用于確定所述閃存分區(qū)存在位翻轉(zhuǎn)區(qū)域;將所述位翻轉(zhuǎn)區(qū)域進(jìn)行修復(fù)處理。
本實(shí)施例,減小了因位翻轉(zhuǎn)累積而帶來的不可修復(fù)的錯(cuò)誤,降低了數(shù)據(jù)或文件損壞的幾率,提高了系統(tǒng)的可靠性,同時(shí)又不影響系統(tǒng)性能,本實(shí)施例中的系統(tǒng)包括內(nèi)存、CPU和閃存。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。