固態(tài)硬盤使用方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用方法及裝置,該方法包括:當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)固態(tài)硬盤的負(fù)載均衡表確定待操作的數(shù)據(jù)塊的潛伏期;判斷數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,預(yù)警值小于典型潛伏期,典型潛伏期為預(yù)設(shè)的對(duì)固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;若數(shù)據(jù)塊的潛伏期大于預(yù)警值,則禁止對(duì)數(shù)據(jù)塊執(zhí)行操作。該方法中,通過(guò)對(duì)各Block當(dāng)前的潛伏期與預(yù)警值進(jìn)行比較,動(dòng)態(tài)的監(jiān)控實(shí)際操作的Block的潛伏期,在當(dāng)前的潛伏期小于或等于預(yù)警值時(shí)對(duì)該Block進(jìn)行操作,從而從物理特性上做到真正的負(fù)載均衡,在一定程度上減少了壞塊的產(chǎn)生,盡可能使用了保留塊,從而延長(zhǎng)了SSD的壽命。
【專利說(shuō)明】固態(tài)硬盤使用方法及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明實(shí)施例涉及存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種固態(tài)硬盤使用方法及裝置。
【背景技術(shù)】
[0002]大部分固態(tài)硬盤(Solid State Disk, SSD)通過(guò)非易失性隨機(jī)訪問(wèn)存儲(chǔ)介質(zhì)一與非門閃存(NAND Flash)實(shí)現(xiàn),NAND Flash可分為單階存儲(chǔ)單元(Single Level Cell,SLC)和多階存儲(chǔ)單元(Multi Level Cell,MLC)。NAND Flash通常由內(nèi)部存儲(chǔ)器和存儲(chǔ)矩陣組成。其中,存儲(chǔ)矩陣包括若干個(gè)塊(Block),每個(gè)Block又包括若干個(gè)頁(yè)(Page),每個(gè)Page進(jìn)一步的包括若干個(gè)字節(jié)(Byte)。目前市面上的NAND Flash多采用MLC芯片,對(duì)NAND Flash的操作主要為讀、寫和擦除。NAND Flash的讀寫以頁(yè)(Page)為單位,擦除以塊(Block)為單位,在進(jìn)行寫操作之前必須進(jìn)行頁(yè)面擦除操作,擦寫過(guò)程中會(huì)對(duì)NAND Flash內(nèi)部浮柵晶體管的絕緣層造成破換。當(dāng)發(fā)生擦除失敗等時(shí),NAND Flash會(huì)主動(dòng)上報(bào)SSD,使得SSD置操作失敗的Block為壞塊(Bad Block)。隨著NAND Flash擦寫次數(shù)(本領(lǐng)域技術(shù)人員也稱之為PE Cycle)的增加,當(dāng)壞塊數(shù)量達(dá)到一定程度,例如3%時(shí),則認(rèn)為NAND Flash達(dá)到使用壽命。
[0003]為避免對(duì)某些熱點(diǎn)Block頻繁擦寫發(fā)生壞塊而導(dǎo)致SSD壽命降低,現(xiàn)有技術(shù)中引入負(fù)載均衡技術(shù),采用均衡表記錄每個(gè)Block的擦寫次數(shù)。每次寫入數(shù)據(jù)時(shí),優(yōu)先選擇擦寫次數(shù)較低的Block進(jìn)行操作,從而保證整個(gè)SSD中各Block的擦寫次數(shù)在同一個(gè)水平,即對(duì)各Block的擦寫次數(shù)盡量均勻。另外,SSD中有一部分冗余Block作為保留塊,當(dāng)發(fā)生壞塊時(shí),用保留塊來(lái)替換失效的Block,避免整個(gè)SSD過(guò)早失效,從而提高SSD的使用壽命。
[0004]假設(shè)SSD有32000個(gè)Block,寫入某數(shù)據(jù)時(shí),會(huì)均勻選擇該32000個(gè)Block,從而保證各Block的擦寫次數(shù)相差不大,例如通過(guò)32000X 3K次完成數(shù)據(jù)寫入。然而,不同Block的壽命是不同的,該數(shù)據(jù)寫入過(guò)程中,若某些Block達(dá)不到3K次就發(fā)生壞塊,則需要使用冗余Block來(lái)替換壞塊,當(dāng)冗余Block消耗完時(shí),SSD的壽命也隨之耗盡。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用方法及裝置,通過(guò)負(fù)載均衡以減少壞塊的產(chǎn)生從而減少保留塊的使用,最終到達(dá)提高固態(tài)硬盤使用壽命的目的。
[0006]第一個(gè)方面,本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用方法,包括:
[0007]當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)所述固態(tài)硬盤的負(fù)載均衡表確定待操作的數(shù)據(jù)塊的潛伏期,所述潛伏期為執(zhí)行所述操作而持續(xù)的時(shí)間,所述操作包括擦除操作或?qū)懖僮鳎?br>
[0008]判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0009]若所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
[0010]在第一個(gè)方面的第一種可能的實(shí)現(xiàn)方式中,該方法還包括:[0011]若所數(shù)據(jù)塊的潛伏期不大于所述預(yù)警值,則對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
[0012]結(jié)合第一個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第一個(gè)方面的第二種可能的實(shí)現(xiàn)方式中,所述對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,還包括:
[0013]獲得所述操作過(guò)程中的所述數(shù)據(jù)塊的潛伏期;
[0014]根據(jù)獲得的潛伏期更新所述負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
[0015]結(jié)合第一個(gè)方面、第一個(gè)方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第一個(gè)方面的第三種可能的實(shí)現(xiàn)方式中,所述禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,還包括:
[0016]在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊,所述預(yù)壞塊表用于指示需要減少操作的數(shù)據(jù)塊。
[0017]第二個(gè)方面,本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用方法,包括:
[0018]根據(jù)固態(tài)硬盤的負(fù)載均衡表確定待操作的數(shù)據(jù)塊;
[0019]對(duì)所述數(shù)據(jù)塊進(jìn)行操作,其中,所述操作包括擦除操作或?qū)懖僮鳎?br>
[0020]在所述負(fù)載均衡表中記錄在所述操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,其中,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間;
[0021]判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0022]若所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊。
[0023]第三個(gè)方面,本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用裝置,包括:
[0024]確定模塊,用于當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)所述固態(tài)硬盤的負(fù)載均衡表確定的數(shù)據(jù)塊的潛伏期,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間,所述操作包括擦除操作或?qū)懖僮鳎?br>
[0025]判斷模塊,用于判斷所述確定模塊確定出的所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0026]處理模塊,用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
[0027]在第三個(gè)方面的第一種可能的實(shí)現(xiàn)方式中,所述處理模塊,還用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期不大于所述預(yù)警值,則對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
[0028]結(jié)合第三個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第三個(gè)方面的第二種可能的實(shí)現(xiàn)方式中,該裝置還包括:
[0029]獲取模塊,用于獲得所述操作過(guò)程中的所述數(shù)據(jù)塊的潛伏期;
[0030]更新模塊,用于根據(jù)所述獲取模塊獲得的潛伏期更新所述負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
[0031]結(jié)合第三個(gè)方面、第三個(gè)方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第三個(gè)方面的第三種可能的實(shí)現(xiàn)方式中,該裝置還包括:
[0032]記錄模塊,用于在所述禁止操作模塊禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊,所述預(yù)壞塊表用于指示需要減少所述操作的數(shù)據(jù)塊。
[0033]第四個(gè)方面,本發(fā)明實(shí)施例提供一種固態(tài)硬盤使用裝置,包括:[0034]選擇模塊,用于根據(jù)固態(tài)硬盤的負(fù)載均衡表確定數(shù)據(jù)塊;
[0035]操作模塊,用于對(duì)所述確定模塊確定的所述數(shù)據(jù)塊進(jìn)行操作,其中,所述操作包括擦除操作或?qū)懖僮鳎?br>
[0036]記錄模塊,用于在所述負(fù)載均衡表中記錄在所述操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,其中,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間;
[0037]判斷模塊,用于判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0038]所述記錄模塊,還用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊。
[0039]本發(fā)明實(shí)施例提供的固態(tài)硬盤使用方法及裝置,通過(guò)對(duì)各Block當(dāng)前的潛伏期與預(yù)警值進(jìn)行比較,動(dòng)態(tài)的監(jiān)控實(shí)際操作的Block的潛伏期,在當(dāng)前的潛伏期小于或等于預(yù)警值時(shí)對(duì)該Block進(jìn)行操作,通過(guò)本發(fā)明實(shí)施例的方法從SSD中Block的物理特性上做到了負(fù)載均衡,在一定程度上減少了壞塊的數(shù)量,進(jìn)而延長(zhǎng)了 SSD的壽命。
【專利附圖】
【附圖說(shuō)明】
[0040]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1為本發(fā)明固態(tài)硬盤使用方法實(shí)施例一的流程圖;
[0042]圖2A為本發(fā)明固態(tài)硬盤編程操作的示意圖;
[0043]圖2B為本發(fā)明固態(tài)硬盤擦除操作的示意圖;
[0044]圖3為本發(fā)明固態(tài)硬盤的擦寫特性示意圖;
[0045]圖4A為本發(fā)明基于MLC的固態(tài)硬盤的擦潛伏時(shí)間tBERS與擦寫次數(shù)的關(guān)系曲線示意圖;
[0046]圖4B是本發(fā)明基于SLC的固態(tài)硬盤的擦潛伏時(shí)間tBERS與擦寫次數(shù)的關(guān)系曲線示意圖;
[0047]圖5為本發(fā)明固態(tài)硬盤使用方法中確定預(yù)警值的流程圖;
[0048]圖6為本發(fā)明實(shí)施例中擦寫次數(shù)與擦潛伏期的變化關(guān)系示意圖;
[0049]圖7為本發(fā)明固態(tài)硬盤使用壽命方法中根據(jù)預(yù)警值進(jìn)行負(fù)載均衡的流程圖;
[0050]圖8為本發(fā)明實(shí)施例提供的一種固態(tài)硬盤使用狀態(tài)圖;
[0051]圖9為本發(fā)明固態(tài)硬盤使用方法實(shí)施例二的流程圖;
[0052]圖10為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例一的結(jié)構(gòu)示意圖;
[0053]圖11為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例二的結(jié)構(gòu)示意圖;
[0054]圖12為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例三的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0055]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0056]圖1為本發(fā)明固態(tài)硬盤使用方法實(shí)施例一的流程圖。本實(shí)施例的執(zhí)行主體為固態(tài)硬盤使用裝置,其可設(shè)置在SSD上也可以是SSD本身,適用于需要均衡SSD中各Block負(fù)載的場(chǎng)景。具體的,本實(shí)施例包括如下步驟:
[0057]101、當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)固態(tài)硬盤的負(fù)載均衡表確定待操作數(shù)據(jù)塊的潛伏期,潛伏期為對(duì)數(shù)據(jù)塊執(zhí)行操作而持續(xù)的時(shí)間,操作包括擦除操作或?qū)懖僮鳌?br>
[0058]NAND Flash的地址、命令和數(shù)據(jù)的輸入輸出(Input/Output,I/O)端口是復(fù)用的,讀寫數(shù)據(jù)的過(guò)程比較復(fù)雜。一般來(lái)說(shuō),每次對(duì)SSD中的待操作的數(shù)據(jù)塊(Block)發(fā)送操作命令,如擦除操作命令、寫操作命令后,需要等待一定的時(shí)長(zhǎng)以執(zhí)行該操作。例如,對(duì)于擦除操作來(lái)說(shuō),需要等等一定的時(shí)長(zhǎng)以對(duì)數(shù)據(jù)塊進(jìn)行擦除;對(duì)于寫操作來(lái)說(shuō),需要等待一定的時(shí)長(zhǎng)以對(duì)數(shù)據(jù)塊進(jìn)行數(shù)據(jù)寫入。然后才能發(fā)送查詢命令以判斷是否成功執(zhí)行擦除操作或?qū)懖僮?,最終實(shí)際完成對(duì)數(shù)據(jù)塊的操作。其中,該需要等待的時(shí)間稱之為潛伏期。擦除操作、寫操作簡(jiǎn)稱為擦寫操作。經(jīng)驗(yàn)證發(fā)現(xiàn):各Block的潛伏期隨擦寫次數(shù)的變化而呈規(guī)律性的變化,潛伏期是物理上真實(shí)反映Block健康狀態(tài)的參數(shù)。
[0059]在本發(fā)明實(shí)施例中,負(fù)載均衡表中記錄有各個(gè)Block的潛伏期,對(duì)于一個(gè)具體的數(shù)據(jù)塊,固態(tài)硬盤使用裝置查詢負(fù)載均衡表獲取該數(shù)據(jù)塊的潛伏期。
[0060]102、判斷數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,預(yù)警值小于典型潛伏期,典型潛伏期為預(yù)設(shè)的對(duì)固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期。
[0061]對(duì)每一數(shù)據(jù)塊(Block)來(lái)說(shuō),當(dāng)潛伏期達(dá)到一定程度時(shí),若繼續(xù)對(duì)該Block進(jìn)行擦寫,則可能會(huì)出現(xiàn)失敗。本實(shí)施例中,可預(yù)先對(duì)樣本固態(tài)硬盤中的各Block發(fā)生擦寫失敗時(shí)的潛伏期進(jìn)行統(tǒng)計(jì),得到典型潛伏期。例如,將所有Block中發(fā)生擦寫失敗時(shí)的最小潛伏期作為典型潛伏期,預(yù)警值小于該典型潛伏期;或者,將所有或部分Block發(fā)生擦寫失敗時(shí)的潛伏期的平均值作為典型潛伏期,預(yù)警值小于該典型潛伏期;或者,按照其他規(guī)則統(tǒng)計(jì)出典型潛伏期并設(shè)定預(yù)警值。
[0062]103、若數(shù)據(jù)塊的潛伏期大于預(yù)警值,則禁止對(duì)數(shù)據(jù)塊執(zhí)行操作。
[0063]固態(tài)硬盤使用裝置根據(jù)步驟102中判斷出的潛伏期與預(yù)警值的關(guān)系,決定是否繼續(xù)對(duì)該數(shù)據(jù)塊執(zhí)行操作。
[0064]具體的,若Block當(dāng)前的潛伏期大于預(yù)警值,表示該數(shù)據(jù)塊壽命較差,即該數(shù)據(jù)塊能夠承擔(dān)的擦寫次數(shù)比較低,若繼續(xù)對(duì)該數(shù)據(jù)塊進(jìn)行操作會(huì)導(dǎo)致擦寫失敗等。此時(shí),即使該數(shù)據(jù)塊的擦寫次數(shù)遠(yuǎn)遠(yuǎn)小于其他Block的擦寫次數(shù),也禁止對(duì)該數(shù)據(jù)塊進(jìn)行擦除操作、寫操作。
[0065]可選的,若待操作數(shù)據(jù)塊的潛伏期不大于預(yù)警值,表示該待操作數(shù)據(jù)塊壽命較強(qiáng),即該待操作數(shù)據(jù)塊能夠承擔(dān)的擦寫次數(shù)比較高,可對(duì)數(shù)據(jù)塊執(zhí)行擦寫操作,即可執(zhí)行擦除操作、寫操作。
[0066]可選的,本實(shí)施例中,對(duì)于潛伏期大于預(yù)警值的待操作數(shù)據(jù)塊,固態(tài)硬盤使用裝置在禁止對(duì)其執(zhí)行操作后,還可在預(yù)設(shè)的預(yù)壞塊表中記錄該待操作數(shù)據(jù)塊,該預(yù)壞塊表用于指示需要減少擦寫操作的數(shù)據(jù)塊。例如,在本發(fā)明的實(shí)施例中,可設(shè)置預(yù)壞塊表,預(yù)壞塊表的格式和用于記錄壞塊的壞塊表的格式相同,即每個(gè)塊中有I?2bit指示該塊是否可以正常使用或作為優(yōu)選使用;如OO指示為好塊,Ol指示為壞塊,10指示為預(yù)壞塊類型。另外,根據(jù)設(shè)定的預(yù)警值,在對(duì)塊進(jìn)行擦寫過(guò)程中記錄當(dāng)前除潛伏時(shí)間,當(dāng)當(dāng)前除潛伏時(shí)間到達(dá)預(yù)警值時(shí),暫不使用該塊,將該類塊加入預(yù)壞塊表。對(duì)于加入到預(yù)壞塊表中的Block,暫時(shí)不對(duì)其進(jìn)行擦寫操作或減少擦寫操作的次數(shù),以避免其很快成為壞快,但不影響對(duì)其進(jìn)行的讀操作。
[0067]需要說(shuō)明的是,預(yù)壞塊表中記錄的Block并不是表真正的壞數(shù)據(jù)塊,而是若對(duì)其繼續(xù)操作則容易變?yōu)閴臄?shù)據(jù)塊的數(shù)據(jù)塊。將潛伏期大于預(yù)警值的Block記錄在預(yù)壞塊表中,減少或暫停對(duì)該Block的擦除操作或?qū)懖僮?,從而在一定程度上減少壞塊出現(xiàn)的概率。
[0068]可選的,上述實(shí)施例一種,對(duì)數(shù)據(jù)塊執(zhí)行操作之后,固態(tài)硬盤使用裝置獲得操作過(guò)程中的數(shù)據(jù)塊的潛伏期;根據(jù)獲得的潛伏期更新負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
[0069]具體的,為了使負(fù)載均衡表中記錄各Block當(dāng)前的潛伏期,對(duì)于每一具體的數(shù)據(jù)塊,每次執(zhí)行完操作后,獲取在操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,并用獲取的潛伏期更新負(fù)載均衡表。例如,在執(zhí)行所述操作之前,根據(jù)所述數(shù)據(jù)塊的潛伏期未2ms,在執(zhí)行所述操作過(guò)程中,所述數(shù)據(jù)塊的潛伏期為3ms,則可以將負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期更新為3ms。換一種表達(dá)方式,在對(duì)數(shù)據(jù)塊執(zhí)行本次操作之后,可以根據(jù)本次操作過(guò)程中該數(shù)據(jù)塊的潛伏期更新負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
[0070]可選的,上述實(shí)施例一中,在判斷待操作數(shù)據(jù)塊的潛伏期是否大于預(yù)警值之前,可統(tǒng)計(jì)出固態(tài)硬盤的擦寫次數(shù)與潛伏期變化的特點(diǎn),從而確定出預(yù)警值。一般來(lái)說(shuō),潛伏期包括擦潛伏期tBERS與寫潛伏期tPROG。具體的,請(qǐng)參照?qǐng)D2A、圖2B。
[0071]圖2A為本發(fā)明固態(tài)硬盤編程操作的示意圖。基于與非門閃存的固態(tài)硬盤地址、命令和數(shù)據(jù)的1/0通道是復(fù)用的,對(duì)一個(gè)頁(yè)編程的過(guò)程,即寫操作的過(guò)程如下:先發(fā)送一個(gè)時(shí)鐘周期的寫操作命令(例如“0x80”),再發(fā)送五個(gè)時(shí)鐘周期的寫地址,然后發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送完成后,發(fā)送一個(gè)時(shí)鐘周期的寫操作命令(例如“0x10”)表示數(shù)據(jù)已發(fā)送完,再等待一段時(shí)間后,進(jìn)入查詢狀態(tài)判斷是否寫數(shù)據(jù)成功。如果沒(méi)有成功,需要重新寫數(shù)據(jù)。該過(guò)程中等待的一段時(shí)間稱之為寫潛伏期(tPROG)。
[0072]圖2B為本發(fā)明固態(tài)硬盤擦除操作的示意圖。同理,基于與非門閃存的固態(tài)硬盤地址、命令和數(shù)據(jù)的1/0通道是復(fù)用的,對(duì)一個(gè)數(shù)據(jù)塊擦除的過(guò)程,即擦除操作的過(guò)程如下:先發(fā)送一個(gè)時(shí)鐘周期的擦除操作命令(例如“0x60”),再發(fā)送三個(gè)時(shí)鐘周期的擦地址,發(fā)送一個(gè)時(shí)鐘周期的擦除操作命令(例如“0xD0”),再等待一段時(shí)間長(zhǎng)后,進(jìn)入查詢狀態(tài)判斷是否擦除數(shù)據(jù)成功,如果沒(méi)有成功則表示發(fā)送擦失敗,需要將正在操作的Block置為壞塊。該過(guò)程中等待的一段時(shí)間稱之為擦潛伏期(tBERS)。
[0073]一般來(lái)說(shuō),擦潛伏時(shí)間tBERS和寫潛伏時(shí)間tPROG會(huì)隨著擦寫次數(shù)的增加而發(fā)生變化。具體的,請(qǐng)參見(jiàn)圖3。
[0074]圖3為本發(fā)明固態(tài)硬盤的擦寫特性示意圖。請(qǐng)參照?qǐng)D3,橫坐標(biāo)為擦寫次數(shù),左邊的縱坐標(biāo)為擦除潛伏時(shí)間的變化值,其單位為us (微秒),右邊的縱坐標(biāo)為寫潛伏時(shí)間的變化值,其單位為US,虛線所示為擦潛伏期隨擦寫次數(shù)發(fā)生變化的變化曲線,實(shí)線所示為寫潛伏期隨擦寫次數(shù)發(fā)生變化的變化曲線。隨著擦寫次數(shù)的增加,固態(tài)硬盤的閾值電壓會(huì)發(fā)生變化,由圖3可知,當(dāng)達(dá)到一定程度之后就會(huì)出現(xiàn)擦失敗或?qū)懯?,?duì)應(yīng)到可以直接測(cè)量的數(shù)據(jù),即擦潛伏時(shí)間tBERS和寫潛伏時(shí)間tPROG會(huì)隨著擦寫次數(shù)的增加而發(fā)生變化。[0075]經(jīng)驗(yàn)證發(fā)現(xiàn),固態(tài)硬盤的擦寫次數(shù)與擦潛伏期的變化關(guān)系呈現(xiàn)一定的規(guī)律。下面,以擦潛伏期與擦寫次數(shù)的關(guān)系為例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明,具體的,可參見(jiàn)圖4A與圖4B。
[0076]圖4A為本發(fā)明基于MLC的固態(tài)硬盤的擦潛伏時(shí)間tBERS與擦寫次數(shù)的關(guān)系曲線示意圖,圖4B是本發(fā)明基于SLC的固態(tài)硬盤的擦潛伏時(shí)間tBERS與擦寫次數(shù)的關(guān)系曲線示意圖。
[0077]請(qǐng)參照?qǐng)D4A與圖4B,橫坐標(biāo)為擦寫次數(shù),左邊的縱坐標(biāo)為擦除潛伏時(shí)間的變化值,其單位為ms (毫秒)。擦潛伏時(shí)間tBERS會(huì)隨著讀擦寫次數(shù)的增加而變化,并且具有一定的規(guī)律性:擦潛伏時(shí)間tBERS會(huì)隨著讀擦寫次數(shù)的增加而規(guī)律性增大,當(dāng)塊的擦潛伏時(shí)間tBERS大到一定程度時(shí),對(duì)該塊擦除會(huì)出現(xiàn)擦失敗。
[0078]同理,以寫潛伏期為例:寫潛伏時(shí)間tPROG會(huì)隨著讀擦寫次數(shù)的增加而規(guī)律性減少,當(dāng)塊的寫潛伏時(shí)間tPROG減少到一定程度時(shí),對(duì)該塊寫會(huì)出現(xiàn)寫失敗。
[0079]綜合上述可知,確定預(yù)警值的過(guò)程中,統(tǒng)計(jì)出固態(tài)硬盤的擦寫次數(shù)與潛伏期變化的特點(diǎn),動(dòng)態(tài)監(jiān)控實(shí)際操作的塊的擦潛伏時(shí)間tBERS或頁(yè)的寫潛伏時(shí)間tPROG,設(shè)定預(yù)警值,并根據(jù)該預(yù)警值,設(shè)置多個(gè)小于該預(yù)警值的閾值。當(dāng)擦潛伏時(shí)間tBERS或?qū)憹摲鼤r(shí)間tPROG到達(dá)相應(yīng)設(shè)定的閾值后做不同處理(如減少使用頻率或暫不使用等),在塊失效前將其暫時(shí)屏蔽,從而減少保留塊消耗。即通過(guò)動(dòng)態(tài)預(yù)判的方式識(shí)別出不同品質(zhì)的塊,盡量減少對(duì)品質(zhì)較差塊的使用,從而整體上延長(zhǎng)了固態(tài)硬盤的使用壽命。下面,以根據(jù)擦寫次數(shù)與擦潛伏期的變化關(guān)系確定預(yù)警值為例對(duì)本發(fā)明進(jìn)行詳細(xì)闡述。
[0080]圖5為本發(fā)明固態(tài)硬盤使用方法中確定預(yù)警值的流程圖。如圖5所示,本實(shí)施例包括如下步驟:
[0081]201、選取樣本,準(zhǔn)備擦寫測(cè)試。
[0082]選擇某型號(hào)新批次的一定數(shù)量的NAND Flash作為樣本,準(zhǔn)備擦寫測(cè)試,測(cè)試各Block擦寫失敗時(shí)的潛伏期。
[0083]202、對(duì)Block進(jìn)行擦寫,記錄擦潛伏期。
[0084]每擦寫一次,記錄該Block的擦潛伏期。
[0085]203、判斷是否出現(xiàn)擦失敗。
[0086]204、確定所有樣本測(cè)試完畢。
[0087]205、判斷被測(cè)試的NAND Flash的數(shù)量是否達(dá)到預(yù)定的測(cè)試數(shù)量。
[0088]206、確定擦潛伏期隨著擦寫次數(shù)增加而變化的變化關(guān)系。
[0089]具體的,可參見(jiàn)圖6,圖6為本發(fā)明實(shí)施例中擦寫次數(shù)與擦潛伏期的變化關(guān)系示意圖,其中,橫坐標(biāo)為擦寫次數(shù),縱坐標(biāo)為擦潛伏期(tBERS)。如圖6所示,當(dāng)擦寫次數(shù)為I~200時(shí),擦潛伏期約為3ms ;當(dāng)擦寫次數(shù)為200~400時(shí),擦潛伏期約為4ms ;當(dāng)擦寫次數(shù)為400~600時(shí),擦潛伏期約為5ms……當(dāng)擦寫次數(shù)大于3400時(shí)候,擦潛伏期約為10ms。
[0090]207、確定典型潛伏期。
[0091]若潛伏期隨擦寫次數(shù)的變化小于預(yù)設(shè)值,則確定該擦潛伏期為典型潛伏期。例如,請(qǐng)參照?qǐng)D6,當(dāng)擦寫次數(shù)大于3400時(shí),潛伏期基本保持在IOms而不再發(fā)生變化,則可以選擇IOms為典型潛伏期,而將9ms設(shè)置為預(yù)警值,達(dá)到該預(yù)警值意味著如果繼續(xù)使用該Block,則該Block可能很快會(huì)變?yōu)閴膲K。[0092]進(jìn)一步的,上述實(shí)施例一中,還可根據(jù)預(yù)警值,設(shè)置多級(jí)閾值以對(duì)各Block進(jìn)行可靠性分級(jí),其中各閾值小于所述預(yù)警值。此時(shí),對(duì)于每一閾值,可根據(jù)該閾值,對(duì)負(fù)載均衡表中當(dāng)前的潛伏期小于或等于閾值的Block進(jìn)行操作,使各Block的同時(shí)到達(dá)閾值。
[0093]具體的,再請(qǐng)參照?qǐng)D3,可根據(jù)需求設(shè)置第一級(jí)閾值為6ms,第二級(jí)閾值為7ms,第三級(jí)閾值為8ms,第四級(jí)閾值為9ms。最初進(jìn)行擦寫操作時(shí),可隨機(jī)對(duì)任一個(gè)Block進(jìn)行操作,當(dāng)數(shù)據(jù)塊的潛伏期即將達(dá)到第一閾值時(shí),則避免對(duì)該數(shù)據(jù)塊進(jìn)行操作,而對(duì)其他各Block進(jìn)行操作,使得各Block均達(dá)到第一級(jí)閾值。當(dāng)各Block都達(dá)到第一級(jí)閾值后,在保證潛伏期小于第二級(jí)閾值的前提下,可隨機(jī)對(duì)各Block進(jìn)行操作……以此類推,從而保證按照閾值對(duì)各Block進(jìn)行負(fù)載均衡以提高SSD的使用壽命。該過(guò)程中,若產(chǎn)生壞塊,則不對(duì)該Block進(jìn)行操作,例如,各Block都達(dá)到第三級(jí)閾值時(shí),若隨機(jī)操作使得某Block發(fā)生壞塊,此時(shí),在保證潛伏期小于第四級(jí)閾值的前提下,可隨機(jī)對(duì)其他各Block進(jìn)行操作。另外,對(duì)于每一級(jí)閾值,可設(shè)置不同的操作方式,例如,當(dāng)數(shù)據(jù)塊的潛伏期小于第一閾值的時(shí)候,可隨機(jī)的對(duì)該數(shù)據(jù)塊進(jìn)行擦寫操作;當(dāng)數(shù)據(jù)塊的潛伏期介于第一級(jí)與第二級(jí)閾值之間時(shí),可減少對(duì)該數(shù)據(jù)塊的擦寫操作;當(dāng)數(shù)據(jù)塊的潛伏期大于第二級(jí)閾值時(shí),可暫停對(duì)該數(shù)據(jù)塊的操作。
[0094]需要說(shuō)明的是,上述過(guò)程是設(shè)置多級(jí)閾值以對(duì)各block進(jìn)行可靠性分級(jí),從而區(qū)分不同品質(zhì)的Block,達(dá)到不同的閾值后做不同的處理。在實(shí)際的實(shí)施方式中,也可設(shè)置多級(jí)閾值區(qū)分不同品質(zhì)的Page,達(dá)到不同的閾值后做不同的處理。從而實(shí)現(xiàn)對(duì)Block更精細(xì)
化的管理。
[0095]圖7為本發(fā)明固態(tài)硬盤使用壽命方法中根據(jù)預(yù)警值進(jìn)行負(fù)載均衡的流程圖。如圖7所示,本實(shí)施例包括如下步驟:
[0096]301、生成負(fù)載均衡表。
[0097]本步驟中,將每個(gè)Block初始的潛伏期都進(jìn)行記錄。
[0098]302、進(jìn)行操作時(shí)監(jiān)控并更新各Block的負(fù)載均衡表。
[0099]在對(duì)Block的擦寫過(guò)程中,監(jiān)控各Block當(dāng)前的潛伏期,并將當(dāng)前的潛伏期更新到負(fù)載均衡表中。例如,若某Block進(jìn)行擦除操作前初始的潛伏期為3ms,若對(duì)該Blockl進(jìn)行擦除操作,第100次擦除操作后該Block的潛伏期變更為4ms,則在第100次擦除操作后將負(fù)載均衡表中的潛伏期更新為4ms。
[0100]303、判斷當(dāng)前的潛伏期是否小于或等于預(yù)警值。
[0101]對(duì)于一具體的數(shù)據(jù)塊,每次擦寫操作后,將該數(shù)據(jù)塊的潛伏期與預(yù)警值進(jìn)行比較,使得Block之間的負(fù)載均衡參考負(fù)載均衡表來(lái)實(shí)現(xiàn),即若當(dāng)前的潛伏期小于或等于預(yù)警值,在返回步驟302 ;否則,執(zhí)行步驟304。
[0102]304、將該待操作數(shù)據(jù)塊加入到預(yù)壞塊表中,暫時(shí)不對(duì)該待操作數(shù)據(jù)塊進(jìn)行擦寫操作,在所有Block或大部分Block的潛伏期都大于預(yù)警值時(shí),用保留塊替換預(yù)壞塊表中的Block。
[0103]需要說(shuō)明的是,對(duì)于加入到預(yù)壞塊表中的Block,暫時(shí)不對(duì)其進(jìn)行擦寫操作或減少擦寫操作的次數(shù),以避免其很快成為壞快,但不影響對(duì)其進(jìn)行的讀操作。
[0104]305、判斷保留塊是否耗盡。
[0105]SSD在設(shè)計(jì)時(shí)會(huì)預(yù)留一部分冗余Block作為保留塊,如100G的SSD其裸容量可能為128G,該28G即可用作保留塊。SSD判斷保留塊是否耗盡,若保留塊未耗盡,則返回步驟304 ;否則,若保留塊耗盡,則執(zhí)行步驟306。
[0106]306、繼續(xù)對(duì)Block進(jìn)行操作。
[0107]若保留塊耗盡,則對(duì)預(yù)壞塊表中的Block繼續(xù)進(jìn)行操作。
[0108]307、判斷Block是否發(fā)生擦寫失敗。
[0109]繼續(xù)操作的過(guò)程中,判斷當(dāng)前操作的預(yù)壞塊表中的Block是否發(fā)生擦寫失敗,若未發(fā)生,則返回步驟306 ;否則,若發(fā)生擦寫失敗,則執(zhí)行步驟308.[0110]308、將該Block加入壞塊表,作為真實(shí)壞Block。
[0111]本發(fā)明實(shí)施例提供的固態(tài)硬盤使用方法,通過(guò)對(duì)待操作數(shù)據(jù)塊的潛伏期與預(yù)警值進(jìn)行比較,動(dòng)態(tài)的監(jiān)控待操作數(shù)據(jù)塊的潛伏期,禁止對(duì)潛伏期大于預(yù)警值的Block進(jìn)行操作,從而從物理特性上做到真正的負(fù)載均衡,在一定程度上減少了壞塊的產(chǎn)生,盡可能使用了保留塊,從而延長(zhǎng)了 SSD的壽命。例如,如圖8所示,圖8為本發(fā)明實(shí)施例提供的一種固態(tài)硬盤使用狀態(tài)圖,橫坐標(biāo)用于指示各Block實(shí)際能夠承載的最大擦寫次數(shù),縱坐標(biāo)用于指示該SSD中的Block。其中,blockl實(shí)際能夠承載的最大擦寫次數(shù)約為3.2K次,Block2實(shí)際能夠承載的最大擦寫次數(shù)約為4.8K次,Block3實(shí)際能夠承載的的最大擦寫次數(shù)約為1.5K
次......?,F(xiàn)有技術(shù)中,為保證各Block之間的負(fù)載均衡,會(huì)均勻的對(duì)每個(gè)Block進(jìn)行相同次
數(shù)的擦寫,根據(jù)這種方式,若各Block的擦寫次數(shù)達(dá)到3K次時(shí),block3、blockl5、block26可能會(huì)發(fā)生壞塊。而本實(shí)施例提供的方法,不根據(jù)各Block的擦寫次數(shù)來(lái)實(shí)現(xiàn)各Block之間的負(fù)載均衡,而是根據(jù)各Block當(dāng)前的潛伏期與預(yù)警值的大小關(guān)系實(shí)現(xiàn)負(fù)載均衡以提高SSD的使用壽命。例如,假設(shè)預(yù)警值為9ms,Bl0ck3在進(jìn)行1.2K次的擦寫后,若繼續(xù)對(duì)其進(jìn)行擦寫,則潛伏期有可能大于9ms,此時(shí),暫停對(duì)block3的擦寫;而對(duì)Block4進(jìn)行擦寫1.2K次后,若繼續(xù)對(duì)其進(jìn)行擦寫,也不會(huì)導(dǎo)致潛伏期大于9ms,因此,可繼續(xù)對(duì)blcok4進(jìn)行擦寫。根據(jù)上面的描述可知,通過(guò)本發(fā)明實(shí)施例的方法從Block的物理特性上做到了真正的負(fù)載均衡,在一定程度上減少了壞塊的數(shù)量,進(jìn)而延長(zhǎng)了 SSD的壽命。
[0112]圖9為本發(fā)明固態(tài)硬盤使用方法實(shí)施例二的流程圖。相較于圖1實(shí)施例中,本實(shí)施例中,固態(tài)硬盤使用裝置在對(duì)各Block進(jìn)行操作之前,先根據(jù)負(fù)載均衡表確定待操作的數(shù)據(jù)塊。具體的,本實(shí)施例包括如下步驟:
[0113]401、根據(jù)固態(tài)硬盤的負(fù)載均衡表確定待操作的數(shù)據(jù)塊。
[0114]本實(shí)施例中,負(fù)載均衡表中存儲(chǔ)有潛伏期不大于預(yù)警值的Block。每次需要進(jìn)行擦除操作或?qū)懖僮髦?,先從?fù)載均衡表中確定待操作的數(shù)據(jù)塊。優(yōu)選的,可選擇負(fù)載均衡表中潛伏期小的Block做為待操作的數(shù)據(jù)塊。
[0115]402、對(duì)所述數(shù)據(jù)塊進(jìn)行操作,其中,操作包括擦除操作或?qū)懖僮鳌?br>
[0116]在確定出數(shù)據(jù)塊后,對(duì)該數(shù)據(jù)塊進(jìn)行擦除操作或?qū)懖僮鳌?br>
[0117]403、在負(fù)載均衡表中記錄在操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,其中,潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間。
[0118]為了使負(fù)載均衡表中存儲(chǔ)各Block當(dāng)前的潛伏期,對(duì)于每一具體的數(shù)據(jù)庫(kù),每次執(zhí)行完操作后,獲取在操作過(guò)程中所述數(shù)據(jù)塊的的潛伏期,并用獲取的潛伏期更新負(fù)載均衡表。
[0119]404、判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,預(yù)警值小于典型潛伏期,典型潛伏期為預(yù)設(shè)的對(duì)固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0120]405、若待操作數(shù)據(jù)塊的潛伏期大于預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄待操作數(shù)據(jù)塊。
[0121]為確保負(fù)載均衡表中的各Block均為可操作的Block,即確保負(fù)載均衡表中的各Block的潛伏期均不大于預(yù)警值。本步驟中,對(duì)于具體的數(shù)據(jù)塊,執(zhí)行完操作后,固態(tài)硬盤使用裝置判斷該數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,若大于預(yù)警值,則將該數(shù)據(jù)塊記錄到預(yù)壞塊表中,并從負(fù)載均衡表中移出;否則,若數(shù)據(jù)塊的潛伏期不大于預(yù)警值,則在負(fù)載均衡表中記錄該數(shù)據(jù)塊執(zhí)行操作后的潛伏期。例如,在本發(fā)明的實(shí)施例中,可設(shè)置預(yù)壞塊表,預(yù)壞塊表的格式和用于記錄壞塊的壞塊表的格式相同,即每個(gè)塊中有I?2bit指示該塊是否可以正常使用或作為優(yōu)選使用;如00指示為好塊,01指示為壞塊,10指示為預(yù)壞塊類型。另夕卜,根據(jù)設(shè)定的預(yù)警值,在對(duì)塊進(jìn)行擦寫過(guò)程中記錄當(dāng)前除潛伏時(shí)間,當(dāng)當(dāng)前除潛伏時(shí)間到達(dá)預(yù)警值時(shí),暫不使用該塊,將該類塊加入預(yù)壞塊表。對(duì)于加入到預(yù)壞塊表中的Block,暫時(shí)不對(duì)其進(jìn)行擦寫操作或減少擦寫操作的次數(shù),以避免其很快成為壞快,但不影響對(duì)其進(jìn)行的讀操作。
[0122]需要說(shuō)明的是,本實(shí)施例中,還可根據(jù)預(yù)警值,設(shè)置多級(jí)閾值以對(duì)各Block進(jìn)行可靠性分級(jí)。具體的,統(tǒng)計(jì)出固態(tài)硬盤的擦寫次數(shù)與潛伏期變化的特點(diǎn),動(dòng)態(tài)監(jiān)控實(shí)際操作的塊的擦潛伏時(shí)間tBERS或頁(yè)的寫潛伏時(shí)間tPROG,可以設(shè)定出預(yù)警值,并根據(jù)該預(yù)警值,設(shè)置多個(gè)小于該預(yù)警值的閾值。當(dāng)擦潛伏時(shí)間tBERS或?qū)憹摲鼤r(shí)間tPROG到達(dá)相應(yīng)設(shè)定的閾值后做不同處理(如減少使用頻率或暫不使用等),在塊失效前將其暫時(shí)屏蔽,從而減少保留塊消耗。即通過(guò)動(dòng)態(tài)預(yù)判的方式識(shí)別出不同品質(zhì)的塊,盡量減少對(duì)品質(zhì)較差塊的使用,從而整體上延長(zhǎng)了固態(tài)硬盤的使用壽命。
[0123]本發(fā)明實(shí)施例提供的固態(tài)硬盤使用方法,執(zhí)行操作之前先確定出潛伏期小于預(yù)警值的數(shù)據(jù)塊作為待操作數(shù)據(jù)塊并執(zhí)行操作,動(dòng)態(tài)的監(jiān)控待操作數(shù)據(jù)塊的潛伏期,禁止對(duì)潛伏期大于預(yù)警值的Block進(jìn)行操作,從而從物理特性上做到真正的負(fù)載均衡,在一定程度上減少了壞塊的產(chǎn)生,盡可能使用了保留塊,從而延長(zhǎng)了 SSD的壽命。
[0124]圖10為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例一的結(jié)構(gòu)示意圖,本實(shí)施例提供的固態(tài)硬盤使用裝置是與本發(fā)明圖1實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,具體實(shí)現(xiàn)過(guò)程在此不再贅述。具體的,本實(shí)施例提供的固態(tài)硬盤使用裝置100具體包括:
[0125]確定模塊11,用于當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)固態(tài)硬盤的負(fù)載均衡表確定的數(shù)據(jù)塊的潛伏期,潛伏期為對(duì)數(shù)據(jù)塊執(zhí)行操作而持續(xù)的時(shí)間,操作包括擦除操作或?qū)懖僮鳎?br>
[0126]判斷模塊12,用于判斷確定模塊11確定出的數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,預(yù)警值小于典型潛伏期,典型潛伏期為預(yù)設(shè)的對(duì)固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0127]處理模塊13,用于若判斷模塊12判斷出數(shù)據(jù)塊的潛伏期大于預(yù)警值,則禁止對(duì)數(shù)據(jù)塊執(zhí)行操作。
[0128]本發(fā)明實(shí)施例提供的固態(tài)硬盤使用裝置,通過(guò)對(duì)待操作數(shù)據(jù)塊的潛伏期與預(yù)警值進(jìn)行比較,動(dòng)態(tài)的監(jiān)控待操作數(shù)據(jù)塊的潛伏期,禁止對(duì)潛伏期大于預(yù)警值的Block進(jìn)行操作,從而從物理特性上做到真正的負(fù)載均衡,在一定程度上減少了壞塊的產(chǎn)生,盡可能使用了保留塊,從而延長(zhǎng)了 SSD的壽命。[0129]可選的,處理模塊13,還用于若判斷模塊12判斷出數(shù)據(jù)塊的潛伏期不大于預(yù)警值,則對(duì)數(shù)據(jù)塊執(zhí)行操作。
[0130]圖11為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例二的結(jié)構(gòu)示意圖。如圖11所示,本實(shí)施例提供的固態(tài)硬盤使用裝置在上述圖10所示裝置的基礎(chǔ)上,進(jìn)一步的,還包括:
[0131]獲取模塊14,用于獲得操作過(guò)程中的數(shù)據(jù)塊的潛伏期;
[0132]更新模塊15,用于根據(jù)獲取模塊14獲得的潛伏期更新負(fù)載均衡表中數(shù)據(jù)塊的潛伏期。
[0133]再請(qǐng)參照?qǐng)D8,固態(tài)硬盤使用裝置還包括:
[0134]記錄模塊16,用于在禁止操作模塊禁止對(duì)數(shù)據(jù)塊執(zhí)行操作之后,在預(yù)設(shè)的預(yù)壞塊表中記錄數(shù)據(jù)塊,預(yù)壞塊表用于指示需要減少操作的數(shù)據(jù)塊。
[0135]圖12為本發(fā)明固態(tài)硬盤使用裝置實(shí)施例三的結(jié)構(gòu)示意圖,本實(shí)施例提供的固態(tài)硬盤使用裝置是與本發(fā)明圖9實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,具體實(shí)現(xiàn)過(guò)程在此不再贅述。具體的,本實(shí)施例提供的固態(tài)硬盤使用裝置200具體包括:
[0136]選擇模塊21,用于根據(jù)固態(tài)硬盤的負(fù)載均衡表確定數(shù)據(jù)塊;
[0137]操作模塊22,用于對(duì)確定模塊確定的數(shù)據(jù)塊進(jìn)行操作,其中,操作包括擦除操作或?qū)懖僮鳎?br>
[0138]記錄模塊23,用于在負(fù)載均衡表中記錄在操作過(guò)程中數(shù)據(jù)塊的潛伏期,其中,潛伏期為對(duì)數(shù)據(jù)塊執(zhí)行操作而持續(xù)的時(shí)間;
[0139]判斷模塊24,用于判斷數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,預(yù)警值小于典型潛伏期,典型潛伏期為預(yù)設(shè)的對(duì)固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期;
[0140]記錄模塊23,還用于若判斷模塊24判斷出數(shù)據(jù)塊的潛伏期大于預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄數(shù)據(jù)塊。
[0141]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0142]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種固態(tài)硬盤使用方法,其特征在于,包括: 當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)所述固態(tài)硬盤的負(fù)載均衡表確定待操作的數(shù)據(jù)塊的潛伏期,所述潛伏期為執(zhí)行所述操作而持續(xù)的時(shí)間,所述操作包括擦除操作或?qū)懖僮鳎? 判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期; 若所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 若所數(shù)據(jù)塊的潛伏期不大于所述預(yù)警值,則對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,還包括: 獲得所述操作過(guò)程中的所述數(shù)據(jù)塊的潛伏期; 根據(jù)獲得的潛伏期更新所述負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
4.根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的方法,其特征在于,所述禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,還包括: 在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊,所述預(yù)壞塊表用于指示需要減少所述操作的數(shù)據(jù)塊。
5.一種固態(tài)硬盤使用方法,其特征在于,包括: 根據(jù)固態(tài)硬盤的負(fù)載均衡表確`定待操作的數(shù)據(jù)塊; 對(duì)所述數(shù)據(jù)塊進(jìn)行操作,其中,所述操作包括擦除操作或?qū)懖僮鳎? 在所述負(fù)載均衡表中記錄在所述操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,其中,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間; 判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期; 若所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊。
6.一種固態(tài)硬盤使用裝置,其特征在于,包括: 確定模塊,用于當(dāng)需要對(duì)固態(tài)硬盤中的數(shù)據(jù)塊進(jìn)行操作時(shí),根據(jù)所述固態(tài)硬盤的負(fù)載均衡表確定的數(shù)據(jù)塊的潛伏期,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間,所述操作包括擦除操作或?qū)懖僮鳎? 判斷模塊,用于判斷所述確定模塊確定出的所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期; 處理模塊,用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于: 所述處理模塊,還用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期不大于所述預(yù)警值,則對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括: 獲取模塊,用于獲得所述操作過(guò)程中的所述數(shù)據(jù)塊的潛伏期;更新模塊,用于根據(jù)所述獲取模塊獲得的潛伏期更新所述負(fù)載均衡表中所述數(shù)據(jù)塊的潛伏期。
9.根據(jù)權(quán)利要求6~8任一項(xiàng)所述的裝置,其特征在于,還包括: 記錄模塊,用于在所述禁止操作模塊禁止對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作之后,在預(yù)設(shè)的預(yù)壞塊表中記錄所述數(shù)據(jù)塊,所述預(yù)壞塊表用于指示需要減少所述操作的數(shù)據(jù)塊。
10.一種固態(tài)硬盤使用裝置,其特征在于,包括: 選擇模塊,用于根據(jù)固態(tài)硬盤的負(fù)載均衡表確定數(shù)據(jù)塊; 操作模塊,用于對(duì)所述確定模塊確定的所述數(shù)據(jù)塊進(jìn)行操作,其中,所述操作包括擦除操作或?qū)懖僮鳎? 記錄模塊,用于在所述負(fù)載均衡表中記錄在所述操作過(guò)程中所述數(shù)據(jù)塊的潛伏期,其中,所述潛伏期為對(duì)所述數(shù)據(jù)塊執(zhí)行所述操作而持續(xù)的時(shí)間; 判斷模塊,用于判斷所述數(shù)據(jù)塊的潛伏期是否大于預(yù)警值,其中,所述預(yù)警值小于典型潛伏期,所述典型潛伏期為預(yù)設(shè)的對(duì)所述固態(tài)硬盤中的數(shù)據(jù)塊操作失敗時(shí)的潛伏期; 所述記錄模塊,還用于若所述判斷模塊判斷出所述數(shù)據(jù)塊的潛伏期大于所述預(yù)警值,則在預(yù)設(shè)的預(yù)壞塊表中記錄所`述數(shù)據(jù)塊。
【文檔編號(hào)】G06F12/02GK103678150SQ201310718063
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年12月23日 優(yōu)先權(quán)日:2013年12月23日
【發(fā)明者】周建華 申請(qǐng)人:華為技術(shù)有限公司