本發(fā)明涉及一種檢測方法及檢測裝置,尤其涉及一種對(duì)閃存進(jìn)行智能檢測的方法及檢測裝置。
背景技術(shù):
閃存具有如下特性:
(1)數(shù)據(jù)保持特性:保存在閃存上的數(shù)據(jù)并不是可以永久保存的。隨著時(shí)間的推移,因閃存浮柵極(float gate)中的電子會(huì)丟失或者增多,從而導(dǎo)致閃存上的數(shù)據(jù)發(fā)生錯(cuò)誤。時(shí)間越長,發(fā)生錯(cuò)誤的數(shù)據(jù)越多。另外該特性跟閃存的編程和擦除(program/erase)次數(shù)有很大關(guān)系,編程和擦除次數(shù)也稱為讀寫/擦除次數(shù),讀寫/擦除次數(shù)的值越大,相同時(shí)間內(nèi)發(fā)生錯(cuò)誤的數(shù)據(jù)越多;
(2)讀取干擾(Read disturb)特性:當(dāng)對(duì)閃存上的數(shù)據(jù)進(jìn)行讀取時(shí),也有可能導(dǎo)致閃存上與讀取位置相同的閃存塊發(fā)生數(shù)據(jù)錯(cuò)誤,當(dāng)然這種錯(cuò)誤通常都比較小,但在讀取的次數(shù)累計(jì)到一定程度時(shí),閃存上的數(shù)據(jù)也會(huì)超過糾錯(cuò)模塊可糾正的范圍。
由于閃存具有以上兩個(gè)特性,因此會(huì)導(dǎo)致存放在閃存上數(shù)據(jù)發(fā)生錯(cuò)誤。閃存上的數(shù)據(jù)發(fā)生錯(cuò)誤是一種正常的現(xiàn)象,通常固態(tài)硬盤主控都會(huì)自帶糾錯(cuò)模塊,用于對(duì)錯(cuò)誤的數(shù)據(jù)進(jìn)行糾正。但是糾錯(cuò)模塊的糾錯(cuò)能力是有限的,當(dāng)數(shù)據(jù)錯(cuò)誤得超出其范圍時(shí),數(shù)據(jù)將發(fā)生真正的損壞。
目前市面上實(shí)現(xiàn)的固態(tài)硬盤主控一種情況是沒有實(shí)現(xiàn)通過對(duì)閃存塊進(jìn)行監(jiān)控,將即將發(fā)生損壞的閃存塊上的數(shù)據(jù)進(jìn)行回收的功能,認(rèn)為數(shù)據(jù)發(fā)生錯(cuò)誤的速度極慢,在數(shù)據(jù)還沒有損壞之前主機(jī)就已經(jīng)把它們改寫到其它位置。這種做法是極其危險(xiǎn)的,我們并不能保證用戶的行為,并不能保證數(shù)據(jù)被真正損壞之前會(huì)被改寫。在某些場景下,用戶很可能在固態(tài)硬盤保存只讀的數(shù)據(jù),那么這些數(shù)據(jù)就會(huì)在固態(tài)硬盤上長時(shí)間不會(huì)被搬移到其它位置,時(shí)間久或者讀取次數(shù)夠多的情況下,就會(huì)發(fā)生不可修復(fù)的損壞。
另一種情況是雖然實(shí)現(xiàn)了該功能,但是較為簡單?;咀龇ň褪窃O(shè)置一個(gè)較短的時(shí)間周期,定期的讀取閃存上的數(shù)據(jù),并對(duì)錯(cuò)誤率進(jìn)行統(tǒng)計(jì),以此決定是否需要將數(shù)據(jù)回收搬移到其它地方。但是該方法的缺點(diǎn)就是有一定的盲目性,增加了不必要的底層開銷,會(huì)對(duì)正常的數(shù)據(jù)流程產(chǎn)生一定影響,并且無形中提高了閃存的讀取次數(shù),增加了數(shù)據(jù)發(fā)生損壞的可能。
綜上,現(xiàn)存固態(tài)硬盤主控要么沒有實(shí)現(xiàn)對(duì)閃存上即將發(fā)生不可糾正的情況進(jìn)行處理,可能導(dǎo)致在一些特殊場景下,發(fā)生數(shù)據(jù)損壞;要么實(shí)現(xiàn)的較為簡單,影響正常的數(shù)據(jù)流程,并進(jìn)一步了增加數(shù)據(jù)發(fā)生損壞的可能。
因此,現(xiàn)有SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法及檢測裝置無法滿足需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的問題是針對(duì)固態(tài)硬盤上的閃存讀取業(yè)務(wù)較多的情況下現(xiàn)有技術(shù)中固態(tài)硬盤主控?zé)o法對(duì)閃存進(jìn)行有效監(jiān)控的問題,提出一種對(duì)閃存進(jìn)行智能檢測的方法及檢測裝置。
為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法,SSD固態(tài)硬盤中包括SSD固態(tài)硬盤主控制器、閃存;所述閃存包括閃存塊,所述閃存塊包括多個(gè)頁面;所述SSD固態(tài)硬盤主控制器包括閃存塊狀態(tài)管理模塊、糾錯(cuò)模塊,所述閃存塊狀態(tài)管理模塊中設(shè)置有定時(shí)器模塊;所述SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法包括如下步驟:
(1)在中央處理器設(shè)置各個(gè)閃存塊的標(biāo)號(hào),并對(duì)閃存塊是否有效、閃存塊中編程完成的時(shí)間、閃存塊的讀取次數(shù)進(jìn)行初始化,并初始化第一閾值Y1、第二閾值Y2;
(2)在定時(shí)器模塊的每一個(gè)定時(shí)器周期完成時(shí),計(jì)算各個(gè)有效的閃存塊的t1、t2及第一概率值M,其中,t1為閃存塊編程完成后到當(dāng)前時(shí)刻經(jīng)歷的時(shí)間,t2為閃存塊編程完成之后,閃存中數(shù)據(jù)的理論保持時(shí)間;
(3)中央處理器對(duì)有效的閃存塊的讀取完成后,讀取糾錯(cuò)模塊記錄的該閃存塊的實(shí)際數(shù)據(jù)錯(cuò)誤率R,并計(jì)算該閃存塊的k1、k2、第二概率值N,其中k1為當(dāng)前的實(shí)際數(shù)據(jù)讀取次數(shù),k2為數(shù)據(jù)未發(fā)生錯(cuò)誤的閃存塊的理論最大數(shù)據(jù)讀取次數(shù);
(4)根據(jù)步驟(3)中計(jì)算得到的N值、步驟(2)中計(jì)算得到的M值計(jì)算經(jīng)驗(yàn)數(shù)據(jù)錯(cuò)誤率P=M+N;
(5)對(duì)于各個(gè)閃存塊,若P≥Y1或R≥Y1中至少有一項(xiàng)成立,則設(shè)置該閃存塊為待檢測閃存塊,并跳轉(zhuǎn)到步驟(6),否則,跳轉(zhuǎn)到步驟(2);
(6)中央處理器對(duì)待檢測閃存塊進(jìn)行讀取,并計(jì)算該閃存塊的檢測錯(cuò)誤率Q;
(7)判斷Q≥Y2是否成立;若上式成立,則中央處理器對(duì)該閃存塊進(jìn)行回收處理,且閃存塊狀態(tài)管理模塊將該閃存塊的狀態(tài)設(shè)置為無效。
主控需要在數(shù)據(jù)不可糾正之前,將該閃存塊上的有效數(shù)據(jù)通過回收的方式搬移到其它的閃存塊上。本發(fā)明中,預(yù)判哪些閃存塊需要進(jìn)行檢測以進(jìn)行回收搬移處理。本發(fā)明中,閃存塊狀態(tài)管理模塊根據(jù)各個(gè)閃存塊的數(shù)據(jù)錯(cuò)誤率信息,即通過將各個(gè)閃存塊的經(jīng)驗(yàn)數(shù)據(jù)錯(cuò)誤率、實(shí)際數(shù)據(jù)錯(cuò)誤率分別與第一閾值進(jìn)行比較,決定是否需要對(duì)該閃存塊進(jìn)行檢測,當(dāng)閃存塊中的數(shù)據(jù)錯(cuò)誤率達(dá)到初始化的第一閾值時(shí),閃存塊狀態(tài)管理模塊請(qǐng)求中央處理器對(duì)該閃存塊進(jìn)行檢測;中央處理器對(duì)待檢測閃存塊進(jìn)行讀取,計(jì)算該閃存塊的檢測錯(cuò)誤率,通過將檢測錯(cuò)誤率與初始化的第二閾值進(jìn)行比較,確定閃存塊是否達(dá)到回收處理的條件。
上述技術(shù)方案中,所述SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法,還包括如下步驟:
(8)若Q≥Y2不成立,則增大第一閾值Y1。
本發(fā)明中,若Q≥Y2不成立,說明待檢測閃存塊的檢測錯(cuò)誤率未超過第一閾值Y1,說明第一閾值Y1的設(shè)置值過小,將有效的閃存塊誤判為無效,因此通過增大第一閾值Y1可以避免誤判,提高本發(fā)明中檢測方法的檢測效率。如果中央處理器對(duì)閃存塊的檢測沒有達(dá)到回收處理的條件,還需要設(shè)置新的閃存塊檢測的數(shù)據(jù)錯(cuò)誤率閾值。
上述技術(shù)方案中,所述的步驟(1)中,Y2的初始值由閃存(2)的出廠數(shù)據(jù)或數(shù)據(jù)手冊獲得或由試驗(yàn)得到。
上述技術(shù)方案中,所述的步驟(2)中,t2由閃存(2)的出廠數(shù)據(jù)或數(shù)據(jù)手冊獲得,或由讀寫/擦除次數(shù)與閃存中數(shù)據(jù)的理論保持時(shí)間的對(duì)應(yīng)關(guān)系得到,其中讀寫/擦除次數(shù)表示閃存塊的編程和擦除的總次數(shù)。
上述技術(shù)方案中,所述的步驟(3)中,k2由閃存(2)的出廠數(shù)據(jù)或數(shù)據(jù)手冊獲得或由試驗(yàn)得到。
上述技術(shù)方案中,所述的步驟(6)中,中央處理器(14)選取待檢測閃存塊中的多個(gè)頁面進(jìn)行讀取,該閃存塊的檢測錯(cuò)誤率Q為待檢測閃存塊中所選取的的多個(gè)頁面的總錯(cuò)誤率。在對(duì)閃存塊進(jìn)行檢測的時(shí)候,通常不需要對(duì)閃存塊全部讀取,抽取閃存塊中的部分頁面即可。具體選取哪些頁面以及選取頁面的個(gè)數(shù),由實(shí)際情況確定即可。
本發(fā)明還提出一種實(shí)現(xiàn)上述任一項(xiàng)所述的SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法的SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測裝置,包括閃存、對(duì)閃存進(jìn)行控制的SSD固態(tài)硬盤主控制器,其特征在于:所述SSD固態(tài)硬盤主控制器包括閃存塊狀態(tài)管理模塊、糾錯(cuò)模塊、中央處理器,所述閃存塊狀態(tài)管理模塊中設(shè)置有定時(shí)器模塊,所述SSD固態(tài)硬盤主控制器與閃存連接,所述閃存塊狀態(tài)管理模塊、糾錯(cuò)模塊均與所述中央處理器連接。
進(jìn)一步地,所述閃存為NAND閃存。
本發(fā)明具有的優(yōu)點(diǎn)和積極效果是:本發(fā)明提出一種提高SSD固態(tài)硬盤數(shù)據(jù)可靠性的智能檢測方法,從導(dǎo)致閃存上數(shù)據(jù)發(fā)生損壞的根本入手,監(jiān)控閃存的使用狀態(tài),能夠及時(shí)有效的將即將發(fā)生損壞的數(shù)據(jù)搬移到其它地方;通過對(duì)閃存進(jìn)行智能監(jiān)控與測試,可以在保證數(shù)據(jù)可靠性的同時(shí),最大化減少對(duì)閃存上數(shù)據(jù)的影響以及減少對(duì)正常業(yè)務(wù)流程的影響。本發(fā)明通過統(tǒng)計(jì)正常業(yè)務(wù)流程中讀業(yè)務(wù)的錯(cuò)誤率,更加及時(shí)準(zhǔn)確監(jiān)控到需要檢測的閃存塊;本發(fā)明通過對(duì)待檢測閃存塊抽樣讀取頁面的數(shù)據(jù)內(nèi)容,并統(tǒng)計(jì)總的錯(cuò)誤率判斷一個(gè)閃存塊是否需要進(jìn)行回收處理,大大減小了檢測的工作量。本發(fā)明包含一個(gè)閃存塊狀態(tài)管理模塊,該模塊通過對(duì)閃存塊的狀態(tài)管理,智能選取閃存塊進(jìn)行檢測,及時(shí)將即將發(fā)生數(shù)據(jù)損壞的閃存塊進(jìn)行回收處理,達(dá)到保證閃存上數(shù)據(jù)可靠的目的;本發(fā)明根據(jù)閃存兩個(gè)特性作為依據(jù)判斷點(diǎn),選擇恰當(dāng)?shù)拈W存塊;本發(fā)明通過統(tǒng)計(jì)正常業(yè)務(wù)流程中讀業(yè)務(wù)的錯(cuò)誤率,更加及時(shí)準(zhǔn)確監(jiān)控到需要檢測的閃存塊;本發(fā)明通過對(duì)待檢測閃存塊抽樣讀取頁面的數(shù)據(jù)內(nèi)容,并統(tǒng)計(jì)總的錯(cuò)誤率判斷一個(gè)閃存塊是否需要進(jìn)行回收處理。
附圖說明
圖1是本發(fā)明的SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法的流程圖;
圖2是本發(fā)明的SSD固態(tài)硬盤與主機(jī)連接的原理框圖;
圖3是本發(fā)明的數(shù)據(jù)保持時(shí)間與讀寫/擦除次數(shù)關(guān)系的曲線圖,圖中,x軸表示讀寫和擦除次數(shù)的總次數(shù),y軸表示數(shù)據(jù)保持時(shí)間;
圖4是本發(fā)明的閃存塊狀態(tài)管理模塊的狀態(tài)更新與閃存塊選取流程圖;
圖5是本發(fā)明的閃存塊檢測處理流程圖。
圖中,1、SSD固態(tài)硬盤主控制器,11、閃存塊狀態(tài)管理模塊,12、定時(shí)器模塊,13、糾錯(cuò)模塊,14、中央處理器,2、閃存,3、主機(jī),4、SSD固態(tài)硬盤。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。
(1)本發(fā)明的閃存塊狀態(tài)管理模塊11通過對(duì)閃存2中各個(gè)閃存塊的狀態(tài)管理,智能選取閃存塊進(jìn)行檢測,及時(shí)將即將發(fā)生數(shù)據(jù)損壞的閃存塊進(jìn)行回收處理,達(dá)到保證閃存2上數(shù)據(jù)可靠的目的;
(2)本發(fā)明根據(jù)背景技術(shù)中所述的閃存2的兩個(gè)特性作為依據(jù)判斷點(diǎn),選擇恰當(dāng)?shù)拈W存塊;
(3)本發(fā)明通過統(tǒng)計(jì)正常業(yè)務(wù)流程中讀業(yè)務(wù)的錯(cuò)誤率,更加及時(shí)準(zhǔn)確監(jiān)控到需要檢測的閃存塊;
(4)本發(fā)明通過對(duì)待檢測閃存塊抽樣讀取頁面的數(shù)據(jù)內(nèi)容,并統(tǒng)計(jì)總的錯(cuò)誤率判斷一個(gè)閃存塊是否需要進(jìn)行回收處理。
(5)本發(fā)明從導(dǎo)致閃存上數(shù)據(jù)發(fā)生損壞的根本入手,監(jiān)控閃存的使用狀態(tài),能夠及時(shí)有效的將即將發(fā)生損壞的數(shù)據(jù)搬移到其它地方,并且最大化減少對(duì)正常業(yè)務(wù)流程的影響。
根據(jù)背景技術(shù)中所述的閃存2的兩個(gè)特性,如果要保證閃存2上數(shù)據(jù)的可靠性,主控就需要在數(shù)據(jù)不可糾正之前,將該閃存塊上的有效數(shù)據(jù)通過回收(recycle)的方式搬移到其它的閃存塊上。根據(jù)上述的閃存2的兩個(gè)特性,我們可以提前預(yù)判哪些閃存塊需要進(jìn)行檢測以進(jìn)行回收搬移處理。本發(fā)明通過智能選取可能發(fā)生數(shù)據(jù)損壞的閃存塊進(jìn)行檢測,從而達(dá)到保證閃存2上數(shù)據(jù)可靠的目的。
圖2是本發(fā)明的SSD固態(tài)硬盤與主機(jī)連接的原理框圖。SSD固態(tài)硬盤4中包括SSD固態(tài)硬盤主控制器1、閃存2,其中閃存2可采用NAND閃存。主機(jī)3是固態(tài)硬盤的使用者,在本發(fā)明中應(yīng)用場景下,有可能下發(fā)只讀屬性的數(shù)據(jù)。這部分?jǐn)?shù)據(jù)下發(fā)到SSD固態(tài)硬盤4之后,極少或者根本不進(jìn)行修改,只進(jìn)行讀取或者讀取都很少。主機(jī)3與SSD固態(tài)硬盤4連接,主機(jī)3對(duì)SSD固態(tài)硬盤4中的閃存進(jìn)行讀取。SSD固態(tài)硬盤4為固態(tài)硬盤,區(qū)別于機(jī)械硬盤,目前見得較多的使用nand閃存存儲(chǔ)數(shù)據(jù),沒有轉(zhuǎn)動(dòng)馬達(dá)。NAND閃存是閃存的一種,用于存放數(shù)據(jù)的閃存介質(zhì),可以保存數(shù)據(jù),具有存儲(chǔ)密度高的特點(diǎn),長時(shí)間使用有發(fā)生數(shù)據(jù)損壞的可能。在NAND閃存中,閃存塊是NAND閃存(NAND FLASH)進(jìn)行擦除的基本單元,它由多個(gè)頁面(pages)組成,頁面是NAND閃存的基本讀寫單位。
SSD固態(tài)硬盤主控制器1是SSD固態(tài)硬盤4的核心組成部分,是用于管理閃存2的模塊,它一方面向主機(jī)3提供數(shù)據(jù)的輸入輸出接口,一方面利用閃存2的接口將數(shù)據(jù)寫入閃存2或從閃存2中讀取數(shù)據(jù),它負(fù)責(zé)將用戶數(shù)據(jù)保存到閃存2或者從閃存2讀取數(shù)據(jù)提供給用戶。SSD固態(tài)硬盤主控制器1內(nèi)部實(shí)際還需要進(jìn)行地址轉(zhuǎn)換、垃圾回收、錯(cuò)誤處理等。根據(jù)本發(fā)明需要,圖2中僅畫出本發(fā)明用到的幾個(gè)模塊。
SSD固態(tài)硬盤主控制器1包括閃存塊狀態(tài)管理模塊11、糾錯(cuò)模塊13(ECC模塊)、中央處理器14、回收處理模塊15。閃存塊狀態(tài)管理模塊11內(nèi)置有定時(shí)器。閃存塊狀態(tài)管理模塊11管理的基本單元是閃存塊。閃存塊狀態(tài)管理模塊11通過對(duì)閃存塊的狀態(tài)管理,智能選取閃存塊進(jìn)行檢測,及時(shí)將即將發(fā)生數(shù)據(jù)損壞的閃存塊進(jìn)行回收處理,達(dá)到保證閃存2上數(shù)據(jù)可靠的目的;通過對(duì)閃存塊狀態(tài)的監(jiān)控,實(shí)現(xiàn)智能選取閃存塊進(jìn)行檢測。閃存塊狀態(tài)管理模塊11支持中央處理器14的初始化配置,閃存塊狀態(tài)管理模塊11檢測到滿足條件的閃存塊時(shí),通知中央處理器14對(duì)指定的閃存塊進(jìn)行檢測。在首次成盤初始化完成之后,閃存塊狀態(tài)管理模塊11就可以正常工作了。成盤初始化指的是,SSD固態(tài)硬盤4通過燒錄器寫入到盤片當(dāng)中,之后盤就可以正常使用了。糾錯(cuò)模塊13也稱為ECC模塊,糾錯(cuò)模塊13可以對(duì)閃存2上讀取的數(shù)據(jù)進(jìn)行糾錯(cuò),并給出錯(cuò)誤率數(shù)據(jù)。中央處理器14會(huì)將錯(cuò)誤率數(shù)據(jù)發(fā)送給閃存塊狀態(tài)管理模塊11,供其對(duì)該閃存塊進(jìn)行監(jiān)控。中央處理器14負(fù)責(zé)控制器內(nèi)部總的調(diào)度,可以請(qǐng)求糾錯(cuò)模塊13產(chǎn)生校驗(yàn)碼,請(qǐng)求糾錯(cuò)模塊13對(duì)讀出來的數(shù)據(jù)進(jìn)行校驗(yàn)并獲取錯(cuò)誤率數(shù)據(jù);對(duì)閃存塊狀態(tài)管理模塊11進(jìn)行初始化并更新閃存塊狀態(tài)數(shù)據(jù);處理閃存塊狀態(tài)管理模塊11給出的閃存塊檢測請(qǐng)求。使用過程中,中央處理器14負(fù)責(zé)對(duì)其中各個(gè)閃存塊的狀態(tài)信息進(jìn)行更新。當(dāng)閃存塊需要檢測時(shí),閃存塊狀態(tài)管理模塊11通知中央處理器14進(jìn)行檢測。
本發(fā)明中,設(shè)置第一閾值Y1、第二閾值Y2、第一概率值M、第二概率值N。第一閾值Y1為閃存塊選取的數(shù)據(jù)錯(cuò)誤率閾值;第二閾值Y2為閃存塊檢測的數(shù)據(jù)錯(cuò)誤率閾值;第一概率值M是由閃存塊的讀寫/擦除次數(shù)造成的數(shù)據(jù)錯(cuò)誤概率值;第二概率值N是由對(duì)閃存2上的數(shù)據(jù)的讀取次數(shù)造成的數(shù)據(jù)錯(cuò)誤概率值。
如圖1、4、5所示,本發(fā)明提出的SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法包括如下步驟:
(1)閃存塊的初始化
在中央處理器14中設(shè)置各個(gè)閃存塊的標(biāo)號(hào),并對(duì)閃存塊是否有效、閃存塊中編程完成的時(shí)間、閃存塊的讀取次數(shù)進(jìn)行初始化,并初始化第一閾值Y1、第二閾值Y2。第一閾值Y1、第二閾值Y2是經(jīng)驗(yàn)值,根據(jù)實(shí)際需要確定。上述參數(shù)需要寫入程序當(dāng)中。在閃存塊狀態(tài)管理模塊11正常運(yùn)作之前,需要對(duì)其進(jìn)行初始化。首先需要配置的是當(dāng)前使用閃存芯片的特性參數(shù),包括:
(A)對(duì)于不同的讀寫/擦除次數(shù),閃存中數(shù)據(jù)的理論保持時(shí)間,其中讀寫/擦除次數(shù)表示閃存塊的編程和擦除的總次數(shù);
(B)閃存在編程完成之后,在數(shù)據(jù)不可糾正之前最大可讀取的次數(shù);這些參數(shù)由閃存的出廠數(shù)據(jù)或數(shù)據(jù)手冊獲得,或由試驗(yàn)得到;
(C)初始化各個(gè)閃存塊的狀態(tài)參數(shù)
這些配置信息需要保持連貫性,在下電的時(shí)候,需要將其保存到閃存芯片上或者其他能夠保存的地方。上電的時(shí)候需要將這些最新的狀態(tài)信息加載到閃存塊狀態(tài)管理模塊當(dāng)中。
閃存塊的狀態(tài)參數(shù)包括:(C1)閃存塊是否有效;(C2)閃存塊中編程完成的時(shí)間;(C3)閃存塊的讀取次數(shù);(C4)定時(shí)器模塊12的定時(shí)器信息,包括設(shè)置定時(shí)器周期。
(2)計(jì)算第一概率值M
在定時(shí)器模塊12的每一個(gè)定時(shí)器周期完成時(shí),計(jì)算各個(gè)有效的閃存塊的t1、t2,并通過t1、t2計(jì)算第一概率值M,其中t1為閃存塊編程完成后到當(dāng)前時(shí)刻經(jīng)歷的時(shí)間,t2為閃存塊編程完成之后,閃存2中數(shù)據(jù)的理論保持時(shí)間。
依據(jù)背景技術(shù)中閃存的特性,閃存芯片上的數(shù)據(jù)隨著時(shí)間的推移,數(shù)據(jù)會(huì)發(fā)生錯(cuò)誤,且發(fā)生錯(cuò)誤的速度與讀寫/擦除次數(shù)(program/erase)有關(guān)。數(shù)據(jù)保持的時(shí)間與讀寫/擦除次數(shù)關(guān)系示意圖如圖3所示。圖3中數(shù)據(jù)的理論數(shù)據(jù)保持時(shí)間和讀寫/擦除次數(shù)的關(guān)系可通過具體閃存芯片的數(shù)據(jù)手冊得到,也可通過多次具體試驗(yàn)得到。M值可由讀寫/擦除次數(shù)決定。
定時(shí)器模塊12用于定時(shí)更新M值,定時(shí)器模塊12定時(shí)周期性輪詢有效閃存塊來更新各個(gè)閃存塊的M值。根據(jù)經(jīng)驗(yàn),對(duì)于SLC閃存芯片,t2約為5年;對(duì)于MLC閃存芯片,t2約為3年。不同閃存芯片的t2值可由具體閃存芯片的數(shù)據(jù)手冊或?qū)嶋H的試驗(yàn)值得出。
在已知讀寫/擦除次數(shù)的情況下,便可以查詢到與該讀寫/擦除次數(shù)對(duì)應(yīng)的數(shù)據(jù)保持時(shí)間。那么只需要記錄閃存塊編程完成的時(shí)間,那么后續(xù)很方便可以計(jì)算該閃存塊編程完成后經(jīng)歷過的總時(shí)間,將該時(shí)間與數(shù)據(jù)保持的時(shí)間進(jìn)行對(duì)比,并設(shè)置一個(gè)合適的閾值,便可以實(shí)現(xiàn)在數(shù)據(jù)損壞之前通知中央處理器14對(duì)該閃存塊進(jìn)行檢測。
如果沒有下電,則閃存塊編程完成后經(jīng)歷過的總時(shí)間就是當(dāng)前時(shí)間點(diǎn)減去閃存塊編程完成的時(shí)間點(diǎn)。如果有下電,那么就需要把各個(gè)閃存塊從編程完成到下電的所經(jīng)歷的時(shí)間進(jìn)行保存,得到閃存塊編程完成后經(jīng)歷過的總時(shí)間。計(jì)算閃存塊編程完成后經(jīng)歷過的總時(shí)間時(shí),不考慮各個(gè)閃存塊從編程完成到下電的時(shí)間區(qū)間內(nèi)閃存塊未上電的時(shí)間。數(shù)據(jù)保持指的是閃存塊編程完成之后,數(shù)據(jù)在閃存2當(dāng)中可以保持的時(shí)間。時(shí)間是從閃存塊編程完成后開始計(jì)算的。
(3)計(jì)算第二概率值N
中央處理器14對(duì)有效的閃存塊的讀取完成后,讀取糾錯(cuò)模塊13記錄的該閃存塊的實(shí)際數(shù)據(jù)錯(cuò)誤率R,并計(jì)算該閃存塊的k1、k2,通過k1、k2計(jì)算第二概率值N,其中k1為當(dāng)前的實(shí)際數(shù)據(jù)讀取次數(shù),k2為數(shù)據(jù)未發(fā)生錯(cuò)誤的閃存塊的理論最大數(shù)據(jù)讀取次數(shù)。
依據(jù)閃存2的特性,在對(duì)閃存芯片進(jìn)行讀取時(shí),會(huì)導(dǎo)致該閃存塊上的數(shù)據(jù)產(chǎn)生輕微錯(cuò)誤。錯(cuò)誤隨著讀取的次數(shù)累加,最終超過糾錯(cuò)模塊13可糾正的范圍。根據(jù)經(jīng)驗(yàn),對(duì)于SLC閃存芯片,k2約為100萬次;對(duì)于MLC閃存芯片,k2約為10萬次。不同閃存芯片的k2值可由具體閃存芯片的數(shù)據(jù)手冊和/或?qū)嶋H的試驗(yàn)值得出。因此只需要知道該閃存塊讀取的次數(shù),便可以判斷何時(shí)需要對(duì)該閃存塊進(jìn)行檢測。以上參數(shù)可以從閃存原廠獲取,也可以自己通過大規(guī)模測試得到。首先需要知道對(duì)顆粒讀取多少次數(shù)據(jù)將發(fā)生錯(cuò)誤的信息。數(shù)據(jù)保持時(shí)間等參數(shù)需要由閃存的出廠數(shù)據(jù)或數(shù)據(jù)手冊獲得或者自己試驗(yàn)得到。
當(dāng)主機(jī)讀取數(shù)據(jù)時(shí),中央處理器14會(huì)通知閃存塊狀態(tài)管理模塊11,閃存塊狀態(tài)管理模塊11以此來更新值N和R。
在實(shí)際的讀業(yè)務(wù)過程中,中央處理器14需要將從糾錯(cuò)模塊13獲取到的錯(cuò)誤率統(tǒng)計(jì)數(shù)據(jù)發(fā)送給閃存塊狀態(tài)管理模塊11進(jìn)行統(tǒng)計(jì)管理,該數(shù)據(jù)信息可以更實(shí)時(shí)準(zhǔn)確地了解當(dāng)前閃存塊的狀態(tài)。糾錯(cuò)模塊13是自動(dòng)糾錯(cuò)并給出錯(cuò)誤率數(shù)據(jù)的。糾錯(cuò)模塊13糾錯(cuò)完成之后,由糾錯(cuò)模塊13通過中央處理器14,中央處理器14主動(dòng)去獲取糾錯(cuò)模塊13獲取到的錯(cuò)誤率統(tǒng)計(jì)數(shù)據(jù)。
(4)計(jì)算經(jīng)驗(yàn)數(shù)據(jù)錯(cuò)誤率P
根據(jù)步驟(3)中計(jì)算得到的N值、步驟(2)中計(jì)算得到的M值計(jì)算經(jīng)驗(yàn)數(shù)據(jù)錯(cuò)誤率P=M+N;
(5)判斷閃存塊是否為待檢測閃存塊
對(duì)于各個(gè)閃存塊,若P≥Y1或R≥Y1中至少有一項(xiàng)成立,則設(shè)置該閃存塊為待檢測閃存塊,并跳轉(zhuǎn)到步驟(6),否則,跳轉(zhuǎn)到步驟(2)。
假設(shè)通過特性1獲取到閃存塊數(shù)據(jù)錯(cuò)誤的概率值M,通過特性2獲取到的閃存塊錯(cuò)誤概率值為N,通過讀流程獲取的數(shù)據(jù)錯(cuò)誤率統(tǒng)計(jì)值為R(即通過糾錯(cuò)模塊13獲取到的錯(cuò)誤率統(tǒng)計(jì)數(shù)據(jù))。通過閃存塊的讀寫/擦除次數(shù)獲取到在讀寫/擦除次數(shù)下對(duì)應(yīng)的數(shù)據(jù)保持的值。閃存塊編程之后總的時(shí)間與該數(shù)據(jù)保持比較獲得M值。
當(dāng)M+N或者R超過預(yù)設(shè)置的第一閾值Y1時(shí),閃存塊狀態(tài)管理模塊11就會(huì)給中央處理器14發(fā)起對(duì)該閃存塊進(jìn)行檢測的請(qǐng)求。接著由中央處理器14抽樣讀取該閃存塊中的頁面,統(tǒng)計(jì)實(shí)際的錯(cuò)誤率,以此判斷是否需要對(duì)該閃存塊進(jìn)行回收處理。
M+N是一個(gè)經(jīng)驗(yàn)值,表達(dá)的是兩者共同作用下對(duì)數(shù)據(jù)錯(cuò)誤率的影響,M+N在達(dá)到初始化的閾值之后,開始認(rèn)為該閃存塊可以且需要進(jìn)行檢測。R則是一個(gè)實(shí)際的值,反應(yīng)當(dāng)時(shí)實(shí)際的錯(cuò)誤率的情況。
(6)對(duì)待檢測閃存塊進(jìn)行檢測并計(jì)算檢測錯(cuò)誤率
中央處理器14對(duì)待檢測閃存塊進(jìn)行讀取,并計(jì)算該閃存塊的檢測錯(cuò)誤率Q。當(dāng)中央處理器14接收到閃存塊狀態(tài)管理模塊11的閃存塊檢測請(qǐng)求之后,需要對(duì)該閃存塊進(jìn)行讀取以確定是否需要進(jìn)行回收處理。主要流程如圖4所示。
閃存塊狀態(tài)管理模塊11閃存塊檢測處理步驟為:根據(jù)閃存塊狀態(tài)管理模塊11請(qǐng)求中的閃存塊標(biāo)號(hào),在該閃存塊上選取多個(gè)頁面進(jìn)行讀取,并對(duì)檢測錯(cuò)誤率Q進(jìn)行統(tǒng)計(jì);一個(gè)閃存塊由若干個(gè)頁面組成,比如東芝顆粒通常包括256個(gè)頁面。在進(jìn)行檢測的時(shí)候,通常不需要全部讀取,抽取部分頁面即可。具體在閃存塊中選取哪些頁面以及選取頁面的個(gè)數(shù),由實(shí)際情況確定即可。
(7)判斷閃存塊是否需進(jìn)行回收處理
在所有抽樣頁面讀取完成之后,判斷檢測錯(cuò)誤率Q是否超過第二閾值Y2,如果Q≥Y2成立,則說明該閃存塊需要進(jìn)行回收處理,則中央處理器14通知回收模塊對(duì)該閃存塊進(jìn)行回收處理。在回收處理完成之后,中央處理器14通知閃存塊狀態(tài)管理模塊11更新該閃存塊的狀態(tài),閃存塊狀態(tài)管理模塊11將該閃存塊的狀態(tài)設(shè)置為無效,至此閃存塊狀態(tài)管理模塊11請(qǐng)求處理完成。第二閾值Y2對(duì)于某一種顆粒是一個(gè)固定的值。該值來源于對(duì)給顆粒的特性測試,也是一個(gè)經(jīng)驗(yàn)值,根據(jù)實(shí)際需要確定;
(8)閾值更新
執(zhí)行到此步說明該閃存塊的錯(cuò)誤率尚未達(dá)到第二閾值Y2,需要更新閃存塊狀態(tài)管理模塊11,設(shè)置下次觸發(fā)給閃存塊檢測的閾值條件。請(qǐng)求處理完成。若Q≥Y2不成立,則增大閾值Y1。如果中央處理器14對(duì)閃存塊的檢測沒有達(dá)到回收處理的條件,還需要設(shè)置新的閃存塊檢測的數(shù)據(jù)錯(cuò)誤率閾值。在M+N或者R達(dá)到第一閾值Y1之后,開始對(duì)該閃存塊進(jìn)行檢測,但是很有可能達(dá)不到第二閾值Y2。此時(shí)需要對(duì)第一閾值Y1進(jìn)行適當(dāng)?shù)奈⒄{(diào),等待下一次滿足該第一閾值Y1條件之后選取該閃存塊進(jìn)行檢測是否滿足第二閾值條件Y2,直到數(shù)據(jù)被回收走。對(duì)第一閾值Y1進(jìn)行調(diào)整的范圍即為將第一閾值Y1增大ΔY1,其中ΔY1的范圍為[0.001%,5%]。也就是Y1是需要適當(dāng)調(diào)節(jié),Y2則是一個(gè)定值。其中,第一閾值Y1、第二閾值Y2的取值范圍均為[0.1%,30%]。
閃存塊狀態(tài)管理模塊11中保存了各個(gè)閃存塊的狀態(tài)管理信息,在正常業(yè)務(wù)過程中,需要中央處理器14對(duì)其中的數(shù)據(jù)進(jìn)行更新,更新情況包括:
(A)新的閃存塊編程完成后,中央處理器14通知閃存塊狀態(tài)管理模塊11并附帶時(shí)間信息,時(shí)間信息包括閃存塊中編程完成的時(shí)間等;
(B)閃存塊被擦除之后,中央處理器14通知閃存塊狀態(tài)管理模塊11將該閃存塊設(shè)置為無效;
(C)發(fā)生讀業(yè)務(wù)時(shí),中央處理器14通知閃存塊狀態(tài)管理模塊11更新讀取次數(shù)并進(jìn)行錯(cuò)誤率統(tǒng)計(jì);
(D)在對(duì)某一個(gè)閃存塊檢測之后,如果未達(dá)到回收的條件,需要將新的閾值信息更新到閃存塊狀態(tài)管理模塊11。
本發(fā)明還提出一種利用上述SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測方法的SSD固態(tài)硬盤數(shù)據(jù)可靠性智能檢測裝置,包括閃存2、對(duì)閃存2進(jìn)行控制的SSD固態(tài)硬盤主控制器1,所述SSD固態(tài)硬盤主控制器1包括閃存塊狀態(tài)管理模塊11、糾錯(cuò)模塊13、中央處理器14,所述閃存塊狀態(tài)管理模塊中設(shè)置有定時(shí)器模塊12,所述SSD固態(tài)硬盤主控制器與閃存2連接,所述閃存塊狀態(tài)管理模塊11、糾錯(cuò)模塊13均與所述中央處理器14連接。
以上對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)說明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本專利涵蓋范圍之內(nèi)。