專利名稱:一種預(yù)防故障累加的方法和固態(tài)硬盤的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)領(lǐng)域,尤其涉及一種預(yù)防故障累加的方法和固態(tài)硬盤。
背景技術(shù):
SSD(Solid State Drive,固態(tài)硬盤)是由固態(tài)電子存儲(chǔ)芯片陣列而制成的硬盤,可以由控制單元和存儲(chǔ)單元(Flash芯片)組成。其中,構(gòu)成SSD的存儲(chǔ)介質(zhì)Nand Flash (與非門快閃存儲(chǔ)介質(zhì))存在可能造成可糾正故障累加的因素,如Soft Error (數(shù)據(jù)的軟失效)可以導(dǎo)致Nand Flash內(nèi)存儲(chǔ)的電荷很容易受到干擾,可靠性下降。當(dāng)前對于SSD中提高其可靠性的方法主要是ECC(Error Correcting Code,糾錯(cuò)碼)和RAID (Redundant Array of Independent Disks,獨(dú)立磁盤冗余陣列)兩種方法,都可以用于保護(hù)Nand Flash中易出錯(cuò)的數(shù)據(jù)。除此之外,基于LBA(Logic Block Address,邏輯塊地址)的Data Scrub (巡檢)技術(shù),也可以應(yīng)用于RAID卡和SSD控制器中。為了防止可糾正故障累加,控制器后臺(tái)可以隔固定的時(shí)間間隔去將每個(gè)LBA的數(shù)據(jù)讀出來,如果發(fā)生了 ECC不可糾的錯(cuò)誤或者較高的故障率,且快超過ECC可糾的范圍時(shí),就利用已有的RAID保護(hù)或者ECC保護(hù)將數(shù)據(jù)糾正后,再重新寫到SSD的新頁中,將原有的頁標(biāo)識(shí)為壞頁,避免再次寫入到該頁時(shí)產(chǎn)生不可糾的故障。其中,ECC保護(hù)和RAID保護(hù)力度有限,且對于熱數(shù)據(jù)有效,如果冷數(shù)據(jù)長時(shí)間未被搬移,導(dǎo)致兩個(gè)通道的數(shù)據(jù)出錯(cuò)超過ECC可糾范圍,就會(huì)導(dǎo)致數(shù)據(jù)不可恢復(fù)。由于基于LBA的Data Scrub技術(shù)可以定期掃描和搬移即將出錯(cuò)的有效數(shù)據(jù),可以解決上述冷數(shù)據(jù)不可恢復(fù)的問題,但是通過LBA方式的主機(jī)端無法訪問到無效頁處,而一旦該無效頁所在的塊長時(shí)間未滿足GC(Garbage Collection,垃圾回收)條件,該塊長中的無效頁和有效頁就容易受到各種因素的影響而引發(fā)錯(cuò)誤的增加。這樣,基于LBA的Data Scrub技術(shù)是存在盲點(diǎn)的,可靠性仍然不足。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種預(yù)防故障累加的方法和固態(tài)硬盤,能夠提高固態(tài)硬盤的
可靠性。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:第一方面,提供一種預(yù)防故障累加的方法,包括:獲取物理頁號(hào)的可糾故障率,若所述物理頁號(hào)的可糾故障率達(dá)到閾值,則對所述物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取所述物理頁號(hào)所在的芯片范圍;若啟動(dòng)巡檢,則對所述芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)所述巡檢的讀物理頁號(hào)命令;根據(jù)所述讀物理頁號(hào)命令獲取所述物理頁號(hào)的數(shù)據(jù),并將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)在第一種可能實(shí)現(xiàn)的方式中,結(jié)合第一方面,所述將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)包括:若所述可糾故障率大于所述第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù);若所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù);若所述可糾故障率小于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄所述恢復(fù)后的數(shù)據(jù),其中,所述第一預(yù)設(shè)閾值小于所述第二預(yù)設(shè)閾值。在第二種可能實(shí)現(xiàn)的方式中,結(jié)合第一方面或第一方面的第一種可能實(shí)現(xiàn)的方式,還包括:當(dāng)所述可糾故障率大于所述第二預(yù)設(shè)閾值,或所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值時(shí),將所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的所述物理頁號(hào)標(biāo)記為壞頁。在第三種可能實(shí)現(xiàn)的方式中,結(jié)合第一方面或第一方面的第一種可能實(shí)現(xiàn)的方式或第二種可能實(shí)現(xiàn)的方式,還包括:獲取所述物理頁號(hào)的可糾故障率,將存在所述可糾故障率的物理頁號(hào)的數(shù)量反饋至主機(jī)端,所述主機(jī)端根據(jù)存在所述可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取所述物理頁號(hào)所在的芯片范圍。在第四種可能實(shí)現(xiàn)的方式中,結(jié)合第一方面或第一方面的第一種可能實(shí)現(xiàn)的方式至第三種可能實(shí)現(xiàn)的方式,所述根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢包括:若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊或所述主機(jī)端啟動(dòng)所述巡檢。第二方面,提供一種固態(tài)硬盤,所述固態(tài)硬盤包括固態(tài)硬盤控制器和多組存儲(chǔ)單元,所述固態(tài)硬盤控制器包括主機(jī)接口模塊、寄存器模塊、檢錯(cuò)/糾錯(cuò)模塊、閃存控制模塊、讀模塊、寫模塊和垃圾回收模塊,其中:所述檢錯(cuò)/糾錯(cuò)模塊用于獲取物理頁號(hào)的可糾故障率,若所述物理頁號(hào)的可糾故障率達(dá)到閾值,則所述檢錯(cuò)/糾錯(cuò)模塊對所述物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并將所述物理頁號(hào)的數(shù)量發(fā)送至寄存器模塊,所述寄存器模塊根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取所述物理頁號(hào)所在的芯片范圍;若啟動(dòng)巡檢,所述寄存器模塊對所述芯片范圍內(nèi)的物理頁號(hào)向讀模塊定期下發(fā)所述巡檢的讀物理頁號(hào)命令;所述讀模塊將所述讀物理頁號(hào)命令下發(fā)到閃存控制模塊,所述閃存控制模塊根據(jù)所述讀物理頁號(hào)命令獲取所述物理頁號(hào)的數(shù)據(jù),并將所述物理頁號(hào)的數(shù)據(jù)發(fā)送至所述檢錯(cuò)/糾錯(cuò)模塊,所述檢錯(cuò)/糾錯(cuò)模塊將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)。在第一種可能實(shí)現(xiàn)的方式中,結(jié)合第二方面,當(dāng)所述檢錯(cuò)/糾錯(cuò)模塊將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)時(shí),所述檢錯(cuò)/糾錯(cuò)模塊用于:若所述可糾故障率大于所述第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù);若所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù);若所述可糾故障率小于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄所述恢復(fù)后的數(shù)據(jù),其中,所述第一預(yù)設(shè)閾值小于所述第二預(yù)設(shè)閾值。在第二種可能實(shí)現(xiàn)的方式中,結(jié)合第二方面或第二方面的第一種可能實(shí)現(xiàn)的方式,還包括:當(dāng)所述可糾故障率大于所述第二預(yù)設(shè)閾值,或所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值時(shí),所述檢錯(cuò)/糾錯(cuò)模塊向垃圾回收模塊發(fā)送回寫請求,所述回寫請求包括所述恢復(fù)后的數(shù)據(jù),所述垃圾回收模塊根據(jù)所述回寫請求向?qū)懩K發(fā)送寫請求,所述寫模塊將所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的所述物理頁號(hào)標(biāo)記為壞頁。在第三種可能實(shí)現(xiàn)的方式中,結(jié)合第二方面或第二方面的第一種可能實(shí)現(xiàn)的方式或第二種可能實(shí)現(xiàn)的方式,還包括:所述檢錯(cuò)/糾錯(cuò)模塊獲取所述物理頁號(hào)的可糾故障率,將存在所述可糾故障率的物理頁號(hào)的數(shù)量通過所述寄存器模塊反饋至主機(jī)端,所述主機(jī)端根據(jù)存在所述可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取所述物理頁號(hào)所在的芯片范圍。在第四種可能實(shí)現(xiàn)的方式中,結(jié)合第二方面或第二方面的第一種可能實(shí)現(xiàn)的方式至第三種可能實(shí)現(xiàn)的方式,當(dāng)所述根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢時(shí),所述寄存器模塊用于:若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊或所述主機(jī)端啟動(dòng)所述巡檢。本發(fā)明實(shí)施例提供一種預(yù)防故障累加的方法和固態(tài)硬盤,通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),并將恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁,這樣能夠提高固態(tài)硬盤的可靠性。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種多通道固態(tài)硬盤控制器應(yīng)用示意圖;圖2為本發(fā)明實(shí)施例提供的一種固態(tài)硬盤獨(dú)立磁盤冗余陣列場景示意圖;圖3為本發(fā)明實(shí)施例提供的一種固態(tài)硬盤應(yīng)用示意圖;圖4為本發(fā)明實(shí)施例提供的一種預(yù)防故障累加的方法流程示意圖;圖5為本發(fā)明又一實(shí)施例提供的一種預(yù)防故障累加的方法流程示意圖;圖6為本發(fā)明又一實(shí)施例提供的一種固態(tài)硬盤結(jié)構(gòu)示意圖;圖7為本發(fā)明又一實(shí)施例提供的一種固態(tài)硬盤結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例中涉及的方法、SSD(Solid State Drive,固態(tài)硬盤)01以及實(shí)體都是基于PPN(Physical Page Number,物理頁號(hào))的Data Scrub (巡檢)技術(shù)來說明的,應(yīng)用于SSD控制器011。其中,如圖1所示,該SSD可以由SSD控制器011和多組(多個(gè)通道)存儲(chǔ)單元012構(gòu)成,每組存儲(chǔ)單元包括一個(gè)或多個(gè)Flash芯片。該SSD控制器可以通過控制器內(nèi)部的主機(jī)接口模塊與主機(jī)03連接。對于SSD的RAID技術(shù)來說,如圖2所示,以RAID4為例,假設(shè)有8個(gè)通道,通道1-7用來保存數(shù)據(jù),通道8用來保存校驗(yàn)碼,本發(fā)明實(shí)施例中所涉及到的物理頁號(hào)PPN可以是某一通道的物理頁號(hào),例如可以是通道O的PPNO物理頁號(hào)。如圖3所示,本發(fā)明實(shí)施例的應(yīng)用場景主要由主機(jī)03、包括SSD控制器011以及多個(gè)通道的Flash芯片012組成。主機(jī)通過SSD控制器011讀寫Flash芯片中的數(shù)據(jù)。其中,在主機(jī)03的服務(wù)器機(jī)框中,里面有一塊底板031,底板上安裝有CPU0311 (CentralProcessing Unit,中央處理機(jī))、內(nèi)存0312、南橋0313等芯片,用于對其他擴(kuò)展卡032進(jìn)行控制,實(shí)現(xiàn)主機(jī)的功能。SSD控制器也是一個(gè)芯片,如FPGA(Field Programmable GataArray,現(xiàn)場可編程門陣列)、ASIC(Application Specific Integrated Circuit,特定用途集成電路)等。可以通過對這個(gè)芯片進(jìn)行編程來完成接收主機(jī)的讀寫請求,并對SSD中的Flash芯片進(jìn)行各種訪問和控制,SSD控制器對應(yīng)的芯片可以和各個(gè)Flash芯片都設(shè)置在一個(gè)PCB(Printed Circuit Board,印刷電路板)上,通過PCB走線相連,最后呈現(xiàn)的形式是一個(gè)硬盤盒。或者也可以將Flash芯片和SSD控制器做成一個(gè)擴(kuò)展卡,通過PCIe (PeripheralComponent Interface Express,總線和接口標(biāo)準(zhǔn))接口與地板相連。本發(fā)明的實(shí)施例是對SSD控制器進(jìn)行了改進(jìn),即實(shí)現(xiàn)時(shí),需要對SSD控制器進(jìn)行相應(yīng)的編程,使之可以預(yù)防SSD可糾故障的累加。本發(fā)明實(shí)施例提供一種預(yù)防故障累加的方法,如圖4所示,包括:101、固態(tài)硬盤獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍。其中,SSD(Solid State Drive,固態(tài)硬盤)用固態(tài)電子存儲(chǔ)芯片陣列制成的硬盤,由控制單元和存儲(chǔ)單元Flash芯片組成。PPN(Physical Page Number,物理頁號(hào))是物理存儲(chǔ)器的頁號(hào),多個(gè)PPN的內(nèi)存可以構(gòu)成一個(gè)Flash芯片的內(nèi)存空間。102、若啟動(dòng)巡檢,則固態(tài)硬盤對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令。103、固態(tài)硬盤根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù)。本發(fā)明實(shí)施例提供一種預(yù)防故障累加的方法,通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),這樣能夠提高固態(tài)硬盤的可靠性。本發(fā)明又一實(shí)施例提供一種預(yù)防故障累加的方法,如圖5所示,包括:201、固態(tài)硬盤獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì)。具體的,當(dāng)固態(tài)硬盤SSD中存在一個(gè)或多個(gè)物理頁號(hào)PPN出現(xiàn)故障,該固態(tài)硬盤中SSD控制器的檢錯(cuò)/糾錯(cuò)模塊可以對該P(yáng)PN的可糾故障率做出統(tǒng)計(jì),當(dāng)可糾故障率較高或者可糾故障率達(dá)到閾值后,檢錯(cuò)/糾錯(cuò)模塊可以將可糾故障率發(fā)送至固態(tài)硬盤中的寄存器模塊。例如,物理頁號(hào)的可糾故障閾值為25bit,當(dāng)其中一個(gè)物理頁號(hào)的故障值在接近25bit或者到達(dá)25bit時(shí),檢錯(cuò)/糾錯(cuò)模塊就可以將該物理頁號(hào)信息發(fā)送至SSD控制器的寄存器模塊。其中,構(gòu)成SSD的存儲(chǔ)介質(zhì)可以是Nand Flash (與非門快閃存儲(chǔ)介質(zhì)),造成該存儲(chǔ)介質(zhì)可糾正故障累加的因素可以是=Soft EiroH數(shù)據(jù)的軟失效),主要包括單顆粒反轉(zhuǎn)(Single Event Upset)和單顆粒瞬態(tài)(Single Event Transent)效應(yīng);也可以是Program/Read Disturb (編程/讀故障),這是由于SSD中同一個(gè)塊其他頁的編程/讀對本頁引入的溝道效應(yīng),導(dǎo)致Nand Flash中存儲(chǔ)的電荷受到干擾,從而引起故障,或者其他的因素等等。這些效應(yīng),可以導(dǎo)致Nand Flash內(nèi)存儲(chǔ)的電荷很容易受到干擾,造成SSD可靠性下降。202、固態(tài)硬盤根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取物理頁號(hào)所在的芯片范圍。示例性的,寄存器模塊在接收到檢錯(cuò)/糾錯(cuò)模塊統(tǒng)計(jì)出的物理頁號(hào)的可糾故障率后,可以通過硬件單獨(dú)控制的方式來判斷是否要啟動(dòng)Data Scrub(巡檢)技術(shù),也可以通過軟硬件交互控制的方式來判斷是否要啟動(dòng)Data Scrub。其中,硬件單獨(dú)控制的方式可以是寄存器模塊根據(jù)可糾故障率判斷是否要發(fā)起Data Scrub,具體可以通過存在故障的PPN的數(shù)量與物理頁號(hào)所在物理芯片范圍內(nèi)所有物理芯片的比例值來進(jìn)行判斷,當(dāng)該比例到達(dá)預(yù)設(shè)的第三預(yù)設(shè)閾值時(shí),由寄存器模塊發(fā)起該物理芯片范圍內(nèi)的Data Scrub,該寄存器模塊并獲取該物理芯片的地址,即獲取所要進(jìn)行Data Scrub b的PPN范圍。而軟硬件交互控制的方式可以是寄存器模塊將可糾故障率通過SSD控制器中的主機(jī)接口模塊通知給上層主機(jī)端,主機(jī)端可以根據(jù)存在故障的PPN的數(shù)量與物理頁號(hào)所在物理芯片范圍內(nèi)所有物理芯片的比例來進(jìn)行判斷,當(dāng)該比例到達(dá)預(yù)設(shè)的比例閾值時(shí),將啟動(dòng)Data Scrub消息反饋至寄存器模塊,并獲取該物理芯片的地址,即獲取所要進(jìn)行Data Scrub的PPN范圍,并將該范圍反饋至寄存器模塊。在SSD固態(tài)硬盤中,可以將整個(gè)SSD盤按照物理芯片或者其它的方式進(jìn)行一定范圍的劃分,所以所獲取的PPN范圍可以是按照物理芯片的范圍,也可以是其它的范圍。而后,通過寄存器模塊或者主機(jī)端對該范圍內(nèi)存在故障的PPN與該范圍內(nèi)所有PPN的比例來決定是否要發(fā)起該范圍內(nèi)的Data Scrub。203、若啟動(dòng)巡檢,固態(tài)硬盤對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令。具體的,SSD控制器中的寄存器模塊在接收到Data Scrub的啟動(dòng)范圍后,可以向SSD控制器中的讀模塊定期下發(fā)Data Scrub的讀PPN命令,這里的PPN即為上述獲取到的物理芯片的范圍或者其他的范圍。其中,這里的定期可以是3秒或者其它的時(shí)間段。該時(shí)間段可以根據(jù)當(dāng)前SSD固態(tài)硬盤的故障率來進(jìn)行設(shè)置,并且要保證不影響到主機(jī)端的帶寬。204、固態(tài)硬盤將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,而后進(jìn)入步驟205或206、或207。具體的,讀模塊在從寄存器模塊接收到Data Scrub的讀PPN命令后,將該讀PPN命令下發(fā)到Flash (閃存)控制模塊,F(xiàn)lash控制模塊讀取該P(yáng)PN的數(shù)據(jù),并將讀取的數(shù)據(jù)返回給檢錯(cuò)/糾錯(cuò)模塊,檢錯(cuò)/糾錯(cuò)模塊在接收到Flash控制模塊返回的PPN數(shù)據(jù)后,檢測得知是Data Scrub的讀PPN數(shù)據(jù),可以將該P(yáng)PN數(shù)據(jù)中的故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較。205、若可糾故障率大于第二預(yù)設(shè)閾值,則固態(tài)硬盤通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù),而后進(jìn)入步驟208。示例性的,若檢錯(cuò)/糾錯(cuò)模塊檢測到該P(yáng)PN的故障率大于第二預(yù)設(shè)閾值,可以通過RAID (Redundant Array of Independent Disks,獨(dú)立磁盤冗余陣列)技術(shù)獲取對該P(yáng)PN進(jìn)行糾錯(cuò),以獲取恢復(fù)后的正確的PPN數(shù)據(jù)。其中,第二預(yù)設(shè)閾值可以是ECC(Eir0rCorrecting Code,糾錯(cuò)碼)的糾錯(cuò)閾值,即當(dāng)該P(yáng)PN的故障率大于ECC的糾錯(cuò)閾值時(shí),可以通過RAID技術(shù)來獲取該P(yáng)PN恢復(fù)后的數(shù)據(jù)。在SSD固態(tài)硬盤提高可靠性的方法中,主要是ECC糾錯(cuò)和RAID技術(shù)兩種。其中,在SSD固態(tài)硬盤中,寫的最小單位是頁,一頁的數(shù)據(jù)處理數(shù)據(jù)區(qū)外,還存在00B(0ut Of Band,冗余區(qū)),該冗余區(qū)可以用于存放ECC的糾錯(cuò)碼,該糾錯(cuò)碼可以對該頁中的錯(cuò)誤進(jìn)行糾正。如果一頁中錯(cuò)誤的比特過多超過了 ECC的可糾范圍,可以通過RAID技術(shù)來獲取正確的比特?cái)?shù)據(jù)。該RAID技術(shù)可以讓多個(gè)Flash芯片工作在同步讀寫方式下,每次可以同時(shí)讀寫多個(gè)Flash芯片,而多個(gè)Flash芯片可以按照RAID算法將數(shù)據(jù)和校驗(yàn)碼按條帶方式進(jìn)行保存,當(dāng)某個(gè)Flash芯片不可用時(shí),可以通過條帶上其他Flash芯片讀取的數(shù)據(jù)恢復(fù)出來,來提高SSD固態(tài)硬盤的可靠性。206、若可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值,則固態(tài)硬盤通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),而后進(jìn)入步驟208。示例性的,假設(shè)ECC糾錯(cuò)碼的可糾范圍是25bit 30bit,當(dāng)PPN的錯(cuò)誤率大于30bit時(shí),即PPN的錯(cuò)誤率大于第二預(yù)設(shè)閾值,可以通過RAID技術(shù)獲取恢復(fù)后的數(shù)據(jù);當(dāng)PPN的錯(cuò)誤率小于或等于第二預(yù)設(shè)閾值,且大于第一預(yù)設(shè)閾值,可以通過ECC糾錯(cuò)碼進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù)。其中,第一預(yù)設(shè)閾值可以是ECC糾錯(cuò)范圍內(nèi)閾值25bit JPiPPN的錯(cuò)誤率在25bit 30bit之間時(shí),可以通過ECC糾錯(cuò)碼進(jìn)行糾錯(cuò)。207、若可糾故障率小于第一預(yù)設(shè)閾值,則固態(tài)硬盤通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄恢復(fù)后的數(shù)據(jù),其中,第一預(yù)設(shè)閾值小于第二預(yù)設(shè)閾值。示例性的,以步驟206為例,當(dāng)PPN的故障率小于25bit,可以通過ECC糾錯(cuò)碼進(jìn)行糾錯(cuò),來獲取回復(fù)后的數(shù)據(jù)。這樣,檢錯(cuò)/糾錯(cuò)模塊可以獲取該P(yáng)PN中錯(cuò)誤的比特?cái)?shù),由于該錯(cuò)誤數(shù)未達(dá)到臨近糾錯(cuò)能力的第一預(yù)設(shè)閾值,檢錯(cuò)/糾錯(cuò)模塊丟去該讀PPN命令,即丟棄恢復(fù)后的數(shù)據(jù)。208、固態(tài)硬盤將物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁。示例性的,當(dāng)可糾故障率大于第二預(yù)設(shè)閾值,或者可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值時(shí),檢錯(cuò)/糾錯(cuò)模塊在獲取了 PPN恢復(fù)后的數(shù)據(jù)后,向SSD控制器中的垃圾回收模塊發(fā)起回寫請求,該回寫請求中可以包括恢復(fù)后的PPN數(shù)據(jù),垃圾回收模塊在接收到檢錯(cuò)/糾錯(cuò)模塊的回寫請求后,向SSD控制器中的寫模塊發(fā)送寫請求,寫模塊根據(jù)該寫請求將恢復(fù)后的PPN數(shù)據(jù)寫入新的PPN中,并將恢復(fù)前的存在故障的PPN標(biāo)記為壞頁。本發(fā)明實(shí)施例提供一種預(yù)防故障累加的方法,通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),并將恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁,這樣能夠提高固態(tài)硬盤的可靠性。本發(fā)明又一實(shí)施例提供一種固態(tài)硬盤01,如圖6所示,固態(tài)硬盤01包括固態(tài)硬盤控制器011和多組存儲(chǔ)單元012,固態(tài)硬盤控制器011包括主機(jī)接口模塊0111、寄存器模塊0112、檢錯(cuò)/糾錯(cuò)模塊0113、閃存控制模塊0114、讀模塊0115、寫模塊0116和垃圾回收模塊0117,包括:檢錯(cuò)/糾錯(cuò)模塊0113用于獲取物理頁號(hào)的可糾故障率,若所述物理頁號(hào)的可糾故障率達(dá)到閾值,則所述檢錯(cuò)/糾錯(cuò)模塊0113對所述物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并將所述物理頁號(hào)的數(shù)量發(fā)送至寄存器模塊0112,所述寄存器模塊0112根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍。若啟動(dòng)巡檢,寄存器模塊0112對芯片范圍內(nèi)的物理頁號(hào)向讀模塊0115定期下發(fā)巡檢的讀物理頁號(hào)命令。讀模塊0115將讀物理頁號(hào)命令下發(fā)到閃存控制模塊0114,閃存控制模塊0114根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)的數(shù)據(jù)發(fā)送至檢錯(cuò)/糾錯(cuò)模塊0113,檢錯(cuò)/糾錯(cuò)模塊0113將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù)??蛇x的,當(dāng)檢錯(cuò)/糾錯(cuò)模塊0113將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù)時(shí),檢錯(cuò)/糾錯(cuò)模塊0113可以用于:若可糾故障率大于第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù);若可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù);若可糾故障率小于第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄恢復(fù)后的數(shù)據(jù),其中,第一預(yù)設(shè)閾值小于第二預(yù)設(shè)閾值??蛇x的,還可以包括:當(dāng)可糾故障率大于第二預(yù)設(shè)閾值,或可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值時(shí),檢錯(cuò)/糾錯(cuò)模塊0113向垃圾回收模塊0117發(fā)送回寫請求,回寫請求包括恢復(fù)后的數(shù)據(jù),垃圾回收模塊根據(jù)回寫請求向?qū)懩K0116發(fā)送寫請求,寫模塊0116將物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁。可選的,還包括:檢錯(cuò)/糾錯(cuò)模塊0113獲取物理頁號(hào)的可糾故障率,將存在可糾故障率的物理頁號(hào)的數(shù)量通過寄存器模塊0112反饋至主機(jī)端,主機(jī)端根據(jù)存在可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取物理頁號(hào)所在的芯片范圍??蛇x的,當(dāng)所述根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢時(shí),寄存器模塊0112可以用于:若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊0112或所述主機(jī)端啟動(dòng)所述巡檢。本發(fā)明實(shí)施例提供一種固態(tài)硬盤,通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),并將恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁,這樣能夠提高固態(tài)硬盤的可靠性。本發(fā)明又一實(shí)施例提供一種固態(tài)硬盤02,如圖7所示,該固態(tài)硬盤包括:總線021、處理器022、接收器023、存儲(chǔ)器024以及發(fā)射器025,其中,存儲(chǔ)器024用于存儲(chǔ)指令,該處理器022用于執(zhí)行該指令用于獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍;處理器022用于執(zhí)行該指令還用于若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令;處理器022用于執(zhí)行該指令還用于根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù)。在本發(fā)明實(shí)施例中,可選的,該處理器022執(zhí)行該指令用于將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù)包,可以包括:若可糾故障率大于第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù);若可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù);若可糾故障率小于第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄恢復(fù)后的數(shù)據(jù),其中,第一預(yù)設(shè)閾值小于第二預(yù)設(shè)閾值。在本發(fā)明實(shí)施例中,可選的,該處理器022執(zhí)行該指令還可以用于:當(dāng)可糾故障率大于第二預(yù)設(shè)閾值,或可糾故障率小于或等于第二預(yù)設(shè)閾值且大于或等于第一預(yù)設(shè)閾值時(shí),將物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁。在本發(fā)明實(shí)施例中,可選的,該處理器022執(zhí)行該指令用于獲取物理頁號(hào)的可糾故障率,將存在可糾故障率的物理頁號(hào)的數(shù)量反饋至主機(jī)端,主機(jī)端根據(jù)存在可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取物理頁號(hào)所在的芯片范圍。在本發(fā)明實(shí)施例中,可選的,該處理器022執(zhí)行該指令用于根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,可以包括: 若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊0112或所述主機(jī)端啟動(dòng)所述巡檢。本發(fā)明實(shí)施例提供一種固態(tài)硬盤,通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),并將恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁,這樣能夠提高固態(tài)硬盤的可靠性。在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露方法和固態(tài)硬盤,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。另外,在本發(fā)明各個(gè)實(shí)施例中的中,各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理包括,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。且上述的各單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(Read Only Memory,簡稱ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(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)。
權(quán)利要求
1.一種預(yù)防故障累加的方法,其特征在于,包括: 獲取物理頁號(hào)的可糾故障率,若所述物理頁號(hào)的可糾故障率達(dá)到閾值,則對所述物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取所述物理頁號(hào)所在的芯片范圍; 若啟動(dòng)巡檢,則對所述芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)所述巡檢的讀物理頁號(hào)命令; 根據(jù)所述讀物理頁號(hào)命令獲取所述物理頁號(hào)的數(shù)據(jù),并將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)包括: 若所述可糾故障率大于所述第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù); 若所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù); 若所述可糾故障率小于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄所述恢復(fù)后的數(shù)據(jù),其中,所述第一預(yù)設(shè)閾值小于所述第二預(yù)設(shè)閾值。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 當(dāng)所述可糾故障率大于所述第二預(yù)設(shè)閾值,或所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值時(shí),將所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的所述物理頁號(hào)標(biāo)記為壞頁。
4.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的方法,其特征在于,還包括: 獲取所述物理頁號(hào)的可糾故障率,將存在所述可糾故障率的物理頁號(hào)的數(shù)量反饋至主機(jī)端,所述主機(jī)端根據(jù)存在所述可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取所述物理頁號(hào)所在的芯片范圍。
5.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢包括: 若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊或所述主機(jī)端啟動(dòng)所述巡檢。
6.一種固態(tài)硬盤,其特征在于,所述固態(tài)硬盤包括固態(tài)硬盤控制器和多組存儲(chǔ)單元,所述固態(tài)硬盤控制器包括主機(jī)接口模塊、寄存器模塊、檢錯(cuò)/糾錯(cuò)模塊、閃存控制模塊、讀模塊、寫模塊和垃圾回收模塊,其中: 所述檢錯(cuò)/糾錯(cuò)模塊用于獲取物理頁號(hào)的可糾故障率,若所述物理頁號(hào)的可糾故障率達(dá)到閾值,則所述檢錯(cuò)/糾錯(cuò)模塊對所述物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并將所述物理頁號(hào)的數(shù)量發(fā)送至寄存器模塊,所述寄存器模塊根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取所述物理頁號(hào)所在的芯片范圍; 若啟動(dòng)巡檢,所述寄存器模塊對所述芯片范圍內(nèi)的物理頁號(hào)向讀模塊定期下發(fā)所述巡檢的讀物理頁號(hào)命令;所述讀模塊將所述讀物理頁號(hào)命令下發(fā)到閃存控制模塊,所述閃存控制模塊根據(jù)所述讀物理頁號(hào)命令獲取所述物理頁號(hào)的數(shù)據(jù),并將所述物理頁號(hào)的數(shù)據(jù)發(fā)送至所述檢錯(cuò)/糾錯(cuò)模塊,所述檢錯(cuò)/糾錯(cuò)模塊將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的固態(tài)硬盤,其特征在于,當(dāng)所述檢錯(cuò)/糾錯(cuò)模塊將所述物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)時(shí),所述檢錯(cuò)/糾錯(cuò)模塊用于: 若所述可糾故障率大于所述第二預(yù)設(shè)閾值,則通過磁盤冗余陣列技術(shù)獲取恢復(fù)后的數(shù)據(jù); 若所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù); 若所述可糾故障率小于所述第一預(yù)設(shè)閾值,則通過糾錯(cuò)碼對所述物理頁號(hào)的數(shù)據(jù)進(jìn)行糾錯(cuò)來獲取恢復(fù)后的數(shù)據(jù),并丟棄所述恢復(fù)后的數(shù)據(jù),其中,所述第一預(yù)設(shè)閾值小于所述第二預(yù)設(shè)閾值。
8.根據(jù)權(quán)利要求7或8所述的固態(tài)硬盤,其特征在于,還包括: 當(dāng)所述可糾故障率大于所述第二預(yù)設(shè)閾值,或所述可糾故障率小于或等于所述第二預(yù)設(shè)閾值且大于或等于所述第一預(yù)設(shè)閾值時(shí),所述檢錯(cuò)/糾錯(cuò)模塊向垃圾回收模塊發(fā)送回寫請求,所述回寫請求包括所述恢復(fù)后的數(shù)據(jù),所述垃圾回收模塊根據(jù)所述回寫請求向?qū)懩K發(fā)送寫請求,所述寫模塊將所述物理頁號(hào)恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,并將恢復(fù)前的所述物理頁號(hào)標(biāo)記為壞頁。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的固態(tài)硬盤,其特征在于,還包括: 所述檢錯(cuò)/糾錯(cuò)模塊獲取所述物理頁號(hào)的可糾故障率,將存在所述可糾故障率的物理頁號(hào)的數(shù)量通過所述寄存器模塊反饋至主機(jī)端,所述主機(jī)端根據(jù)存在所述可糾故障率的物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,并獲取所述物理頁號(hào)所在的芯片范圍。
10.根據(jù)權(quán)利要求6至9任意一項(xiàng)所述的固態(tài)硬盤,其特征在于,當(dāng)所述根據(jù)所述物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢時(shí),所述寄存器模塊用于: 若所述物理頁號(hào)的數(shù)量與所述芯片范圍內(nèi)總的物理頁號(hào)的數(shù)量的比例值大于第三預(yù)設(shè)閾值,則由所述寄存器模塊或所述主機(jī)端啟動(dòng)所述巡檢。
全文摘要
本發(fā)明實(shí)施例提供一種預(yù)防故障累加的方法和固態(tài)硬盤,涉及存儲(chǔ)領(lǐng)域,能夠提高固態(tài)硬盤的可靠性。其方法為通過獲取物理頁號(hào)的可糾故障率,若物理頁號(hào)的可糾故障率達(dá)到閾值,則對物理頁號(hào)的數(shù)量進(jìn)行統(tǒng)計(jì),并根據(jù)物理頁號(hào)的數(shù)量判斷是否要啟動(dòng)巡檢,獲取物理頁號(hào)所在的芯片范圍,若啟動(dòng)巡檢,則對芯片范圍內(nèi)的物理頁號(hào)定期下發(fā)巡檢的讀物理頁號(hào)命令,根據(jù)讀物理頁號(hào)命令獲取物理頁號(hào)的數(shù)據(jù),并將物理頁號(hào)數(shù)據(jù)中的可糾故障率與第一預(yù)設(shè)閾值和第二預(yù)設(shè)閾值進(jìn)行比較,根據(jù)比較結(jié)果獲取物理頁號(hào)恢復(fù)后的數(shù)據(jù),并將恢復(fù)后的數(shù)據(jù)寫入新的物理頁號(hào)中,將恢復(fù)前的物理頁號(hào)標(biāo)記為壞頁。本發(fā)明實(shí)施例用于預(yù)防固態(tài)硬盤可糾故障的累加。
文檔編號(hào)G06F3/06GK103218274SQ201310082760
公開日2013年7月24日 申請日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者鮑慧強(qiáng), 王大勇, 王榮生 申請人:華為技術(shù)有限公司