專利名稱::閃存的損壞區(qū)塊辨識(shí)方法、儲(chǔ)存系統(tǒng)及其控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明是有關(guān)于一種存儲(chǔ)器損壞區(qū)塊辨識(shí)方法,且特別是有關(guān)于一種用于閃存的損壞區(qū)塊辨識(shí)方法、儲(chǔ)存系統(tǒng)及其控制器。
背景技術(shù):
:近年來(lái),由于數(shù)字相機(jī)、具有照相功能的手機(jī)、MP3、以及MP4的成長(zhǎng)十分迅速,所以使得消費(fèi)者對(duì)儲(chǔ)存媒體的需求也急劇增加。綜觀現(xiàn)今所有的儲(chǔ)存媒體而言,由于閃存(FlashMemory)具有數(shù)據(jù)非易失性、省電、體積小,以及無(wú)機(jī)械結(jié)構(gòu)等特性,所以最適合內(nèi)建于上述所舉例的多種可攜式多媒體裝置中。在已知技術(shù)中,使用閃存的儲(chǔ)存系統(tǒng)在對(duì)區(qū)塊執(zhí)行寫(xiě)入與抹除等編程(program)操作后會(huì)檢查所執(zhí)行的寫(xiě)入或抹除操作是否正確。如果判斷有發(fā)生錯(cuò)誤時(shí),則此區(qū)塊會(huì)被判定為損壞區(qū)塊,并且會(huì)在損壞區(qū)塊管理表中記錄此區(qū)塊的地址或者在此區(qū)塊上進(jìn)行標(biāo)記,由此避免儲(chǔ)存系統(tǒng)之后誤用有問(wèn)題的區(qū)塊。隨著技術(shù)的進(jìn)步,閃存通過(guò)制程技術(shù)上的提升使得寫(xiě)入或抹除的循環(huán)時(shí)間(cycletime)更為縮短。此外,通過(guò)同時(shí)編程兩個(gè)頁(yè)的技術(shù)更可加速閃存寫(xiě)入的時(shí)間。然而,在編程速度提升的同時(shí),相對(duì)的儲(chǔ)存系統(tǒng)會(huì)更具噪聲,此可能導(dǎo)致在編程操作中發(fā)生區(qū)塊被誤判為損壞。此類(lèi)誤判會(huì)使得被誤判的區(qū)塊被標(biāo)記于損壞區(qū)塊管理表中而不再被使用,導(dǎo)致浪費(fèi)了系統(tǒng)可用的資源(即區(qū)塊)而縮短閃存儲(chǔ)存系統(tǒng)的壽命。
發(fā)明內(nèi)容本發(fā)明提供一種損壞區(qū)塊辨識(shí)方法,其能夠避免誤判閃存區(qū)塊的損毀而延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。本發(fā)明提供一種儲(chǔ)存系統(tǒng),其所執(zhí)行的閃存損壞區(qū)塊辨識(shí)程序可避免誤判閃存區(qū)塊的損毀而延長(zhǎng)儲(chǔ)存系統(tǒng)的使用壽命。本發(fā)明提供一種控制器,其可執(zhí)行閃存損壞區(qū)塊辨識(shí)程序,以避免誤判閃存區(qū)塊的損毀而延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。本發(fā)明提出一種損壞區(qū)塊辨識(shí)方法,此損壞區(qū)塊辨識(shí)方法包括在編程閃存的區(qū)塊之后檢查所編程的區(qū)塊是否發(fā)生編程錯(cuò)誤,以及當(dāng)所編程的區(qū)塊連續(xù)地發(fā)生編程錯(cuò)誤時(shí)將此區(qū)塊標(biāo)記為損壞區(qū)塊。在本發(fā)明的一實(shí)施例中,上述的編程閃存的區(qū)塊的步驟包括對(duì)閃存進(jìn)行寫(xiě)入操作或抹除操作。在本發(fā)明的一實(shí)施例中,上述的損壞區(qū)塊辨識(shí)方法還包括讀取所編程的區(qū)塊的讀取狀態(tài)(ReadStatus)以判斷此區(qū)塊是否發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的損壞區(qū)塊辨識(shí)方法還包括使用錯(cuò)誤校正碼檢查所編程的區(qū)塊中的數(shù)據(jù)以判斷此區(qū)塊是否發(fā)生編程錯(cuò)誤,其中當(dāng)確認(rèn)此區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)則判斷此區(qū)塊發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的將區(qū)塊標(biāo)記為損壞區(qū)塊的步驟包括于損壞區(qū)塊管理表中記錄此區(qū)塊的地址。在本發(fā)明的一實(shí)施例中,上述的將區(qū)塊標(biāo)記為損壞區(qū)塊的步驟包括于此區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記此區(qū)塊為損壞區(qū)塊。在本發(fā)明的一實(shí)施例中,上述的損壞區(qū)塊辨識(shí)方法還包括在編程錯(cuò)誤記錄文件中記錄區(qū)塊連續(xù)發(fā)生編程錯(cuò)誤的次數(shù),其中當(dāng)此區(qū)塊的編程錯(cuò)誤次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于損壞區(qū)塊管理表中記錄此區(qū)塊的地址。在本發(fā)明的一實(shí)施例中,上述的錯(cuò)誤上限門(mén)坎值為至少2以上。在本發(fā)明的一實(shí)施例中,上述的損壞區(qū)塊辨識(shí)方法還包括將編程錯(cuò)誤記錄文件儲(chǔ)存于閃存的其它區(qū)塊中或靜態(tài)隨機(jī)存取存儲(chǔ)器中。本發(fā)明提出一種控制器,其適用于具有閃存的儲(chǔ)存系統(tǒng),此閃存控制器包括微處理器單元、閃存接口、緩沖存儲(chǔ)器以及存儲(chǔ)器管理模塊。閃存接口耦接至微處理單元且用以存取閃存。緩沖存儲(chǔ)器耦接至微處理單元且用以暫時(shí)地儲(chǔ)存數(shù)據(jù)。存儲(chǔ)器管理模塊耦接至微處理器單元且用以在微處理單元編程閃存的區(qū)塊之后檢查區(qū)塊是否發(fā)生編程錯(cuò)誤,并且當(dāng)區(qū)塊的編程錯(cuò)誤連續(xù)地發(fā)生時(shí)將此區(qū)塊標(biāo)記為損壞區(qū)塊。在本發(fā)明的一實(shí)施例中,上述的編程包括寫(xiě)入操作或抹除操作。在本發(fā)明的一實(shí)施例中,上述的存儲(chǔ)器管理模塊會(huì)讀取區(qū)塊的讀取狀態(tài)以判斷區(qū)塊是否發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的控制器還包括錯(cuò)誤校正模塊,其中存儲(chǔ)器管理模塊通過(guò)錯(cuò)誤校正模塊檢查區(qū)塊的數(shù)據(jù),并且當(dāng)確認(rèn)區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)則判斷區(qū)塊發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的存儲(chǔ)器管理模塊會(huì)于損壞區(qū)塊管理表中i己錄此區(qū)塊的地址。在本發(fā)明的一實(shí)施例中,上述的存儲(chǔ)器管理模塊會(huì)于此區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記此區(qū)塊為損壞區(qū)塊。在本發(fā)明的一實(shí)施例中,上述的存儲(chǔ)器管理模塊會(huì)在編程錯(cuò)誤記錄文件中記錄區(qū)塊連續(xù)發(fā)生編程錯(cuò)誤的次數(shù),其中當(dāng)編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于損壞區(qū)塊管理表中記錄區(qū)塊的地址。在本發(fā)明的一實(shí)施例中,上述的錯(cuò)誤上限門(mén)坎值為至少2以上。在本發(fā)明的一實(shí)施例中,上述的存儲(chǔ)器管理模塊會(huì)將編程錯(cuò)誤記錄文件儲(chǔ)存于閃存的其它區(qū)塊中或靜態(tài)隨機(jī)存取存儲(chǔ)器中。本發(fā)明提出一種儲(chǔ)存系統(tǒng),其包括閃存、控制器與總線連接接口。閃存用以儲(chǔ)存數(shù)據(jù)??刂破黢罱又灵W存并且用以在編程閃存的區(qū)塊之后檢查區(qū)塊是否發(fā)生編程錯(cuò)誤,并且當(dāng)區(qū)塊的編程錯(cuò)誤連續(xù)地發(fā)生時(shí)將此區(qū)塊標(biāo)記為損壞區(qū)塊。總線連接接口耦接至控制器且用以連接主機(jī)。在本發(fā)明的一實(shí)施例中,上述的編程包括寫(xiě)入操作或抹除操作。在本發(fā)明的一實(shí)施例中,上述的控制器會(huì)讀取區(qū)塊的讀取狀態(tài)以判斷區(qū)塊是否發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的控制器會(huì)經(jīng)由錯(cuò)誤校正模塊檢查區(qū)塊的數(shù)據(jù),并且當(dāng)確認(rèn)此區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)則判斷此區(qū)塊發(fā)生編程錯(cuò)誤。在本發(fā)明的一實(shí)施例中,上述的控制器會(huì)于損壞區(qū)塊管理表中i己錄此區(qū)塊的地址。在本發(fā)明的一實(shí)施例中,上述的控制器會(huì)于此區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記此區(qū)塊為損壞區(qū)塊。在本發(fā)明的一實(shí)施例中,上述的控制器會(huì)在編程錯(cuò)誤記錄文件中記錄區(qū)塊連續(xù)發(fā)生編程錯(cuò)誤的次數(shù),其中當(dāng)編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于損壞區(qū)塊管理表中記錄此區(qū)塊的地址。本發(fā)明因采用當(dāng)區(qū)塊連續(xù)地發(fā)生編程錯(cuò)誤時(shí)才判定為損毀的損壞區(qū)塊辨識(shí)方法,因此可避免誤判閃存區(qū)塊的損毀,由此延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附圖式,作詳細(xì)說(shuō)明如下圖1是根據(jù)本發(fā)明第一實(shí)施例繪示儲(chǔ)存系統(tǒng)的概要方塊圖。圖2A~2C是根據(jù)本發(fā)明第一實(shí)施例繪示閃存及其運(yùn)作的詳細(xì)方塊圖。圖3是根據(jù)本發(fā)明第一實(shí)施例繪示損壞區(qū)塊辨識(shí)程序(方法)的流程圖。圖4是根據(jù)本發(fā)明第二實(shí)施例繪示儲(chǔ)存系統(tǒng)的概要方塊圖。圖5是根據(jù)本發(fā)明第二實(shí)施例繪示損壞區(qū)塊辨識(shí)程序(方法)的流程圖。100:儲(chǔ)存系統(tǒng)110:控制器110a:微處理器單元110b:閃存"l妻口110c:緩沖存儲(chǔ)器llOd:存儲(chǔ)器管理模塊120:總線連接接口130:閃存130—0、130-1、130-2、130-N:區(qū)塊200:主機(jī)202:系統(tǒng)區(qū)204:數(shù)據(jù)區(qū)206:備用區(qū)208:替換區(qū)塊300:總線400:儲(chǔ)存系統(tǒng)410:控制器410a:微處理器單元410b:閃存4妄口410c:緩沖存儲(chǔ)器410d:存儲(chǔ)器管理模塊420:總線連接接口430:閃存S301、S303、S305、S307、S309、法的步驟S501、S503、S505、S507、S509、驟S、M、C:區(qū)塊S311、S313、S315:損壞區(qū)塊辨識(shí)方S511、S515:損壞區(qū)塊辨識(shí)方法的步具體實(shí)施例方式本發(fā)明所提出的損壞區(qū)塊辨識(shí)方法是在區(qū)塊連續(xù)地發(fā)生編程錯(cuò)誤時(shí)才將此區(qū)塊視為損壞區(qū)塊。由此,可避免閃存中區(qū)塊內(nèi)的區(qū)塊因其它噪聲造成的編程錯(cuò)誤而被誤判為損壞區(qū)塊。以下將以數(shù)個(gè)范例實(shí)施例并配合圖式詳細(xì)說(shuō)明本發(fā)明。圖1是根據(jù)本發(fā)明第一實(shí)施例繪示儲(chǔ)存系統(tǒng)的概要方塊圖。請(qǐng)參照?qǐng)D1,儲(chǔ)存系統(tǒng)100包括控制器110、總線連接接口120以及閃存130。通常儲(chǔ)存系統(tǒng)100會(huì)與主機(jī)200—起使用,以使主機(jī)200可將數(shù)據(jù)寫(xiě)入至儲(chǔ)存系統(tǒng)100或從儲(chǔ)存系統(tǒng)100中讀取數(shù)據(jù)。在本實(shí)施例中,儲(chǔ)存系統(tǒng)10Q為隨身碟。但必須了解的是,在本發(fā)明另一實(shí)施例中儲(chǔ)存系統(tǒng)100亦可以是存儲(chǔ)卡或固態(tài)硬盤(pán)(SolidStateDrive,SSD)。控制器IIO會(huì)協(xié)調(diào)總線連接接口120以及閃存130的整體運(yùn)作,例如數(shù)據(jù)的寫(xiě)入、讀取與抹除等。控制器110包括微處理器單元110a、閃存接口HOb、緩沖存儲(chǔ)器110c與存儲(chǔ)器管理模塊110d。微處理器單元110a會(huì)協(xié)調(diào)控制閃存接口110b、緩沖存儲(chǔ)器110c與存儲(chǔ)器管理模塊110d,以進(jìn)行對(duì)閃存130的寫(xiě)入、讀取與抹除等運(yùn)作。閃存接口llOb是電性連接至微處理器單元110a并且用以存取閃存130。也就是,主機(jī)200欲寫(xiě)入至閃存130的數(shù)據(jù)會(huì)經(jīng)由閃存接口ll()b轉(zhuǎn)換為閃存130所能接受的格式。緩沖存儲(chǔ)器110c是電性連接至微處理器單元110a,并且用以暫時(shí)地儲(chǔ)存系統(tǒng)性數(shù)據(jù)(例如邏輯區(qū)塊與物理區(qū)塊的對(duì)映表)或者主機(jī)200所讀取或?qū)懭氲臄?shù)據(jù)。特別是,在本實(shí)施例中緩沖存儲(chǔ)器110c用以儲(chǔ)存編程錯(cuò)誤記錄文件,其用以記錄發(fā)生編程錯(cuò)誤的區(qū)塊的地址。在本實(shí)施例中,緩沖存儲(chǔ)器110c為靜態(tài)隨機(jī)存取存儲(chǔ)器(staticrandomaccessmemory,SRAM)。然而,必須了解的是,本發(fā)明不限于此,動(dòng)態(tài)隨才幾存耳又存卩諸器(DynamicRandomAccessmemory,DRAM)、磁阻式存儲(chǔ)器(MagnetoresistiveRandomAccessMemory,MRAM)、相變化存儲(chǔ)器(PhaseChangeRandomAccessMeniory,PRAM)或其它適合的存儲(chǔ)器亦可應(yīng)用于本發(fā)明。存儲(chǔ)器管理模塊110d是電性連接至微處理器單元ll()a。存儲(chǔ)器管理模塊]10d會(huì)管理閃存130,例如執(zhí)行平均磨損(wear1eve1ing)方法、壞區(qū)塊管理、維護(hù)對(duì)映表(mappingtable)等。特別是,在本發(fā)明實(shí)施例中,存儲(chǔ)器管理模塊110d會(huì)執(zhí)行根據(jù)本發(fā)明實(shí)施例的損壞區(qū)塊辨識(shí)程序(如圖3所示)。其亦可以固件方式來(lái)實(shí)現(xiàn)。此外,雖未繪示于本實(shí)施例,但控制器110可還包括一般閃存控制器常見(jiàn)的功能模塊,例如電源管理模塊等??偩€連接接口120用以通過(guò)總線300連接主機(jī)200。在本實(shí)施例中,總線連接接口120為USB接口。然而,必須了解的是本發(fā)明不限于此,總線連接接口120亦可以是PCIExpress接口、IEEE1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其它適合的數(shù)據(jù)傳輸接口。閃存130是耦接控制器110并且用以儲(chǔ)存數(shù)據(jù)。在本實(shí)施中閃存130為多層記憶胞(MultiLevelCell,MLC)反及(NAND)閃存。然而,必須了解的是,本發(fā)明不限于此。在本發(fā)明另一實(shí)施例中,單層記憶胞(SingleLevelCell,SLC)NAND閃存亦可應(yīng)用于本發(fā)明。閃存130通常會(huì)被分割為多個(gè)物理區(qū)塊(physicalblock)130-0至130-N,為方便說(shuō)明以下將物理區(qū)塊簡(jiǎn)稱為區(qū)塊。一般而言,在閃存中區(qū)塊為抹除的最小單位。亦即,每一區(qū)塊含有最小數(shù)目之一并被抹除的記憶胞。每一區(qū)塊通常會(huì)分割為數(shù)個(gè)頁(yè)(page)。頁(yè)通常為編程(program)的最小單元,但要特別說(shuō)明的是于有些不同的閃存設(shè)計(jì),最小的編程單位也可為一個(gè)扇區(qū)(sector)大小,即一頁(yè)中有多個(gè)扇區(qū)并以一扇區(qū)為編程的最小單元。換言之,頁(yè)為寫(xiě)入數(shù)據(jù)或讀取數(shù)據(jù)的最小單元。每一頁(yè)通常包括使用者數(shù)據(jù)區(qū)D與冗余區(qū)R。使用者數(shù)據(jù)區(qū)用以儲(chǔ)存使用者的數(shù)據(jù),而冗余區(qū)用以儲(chǔ)存系統(tǒng)的數(shù)據(jù)(例如,錯(cuò)誤校正碼(errorcorrectingcode,ECC))。為對(duì)應(yīng)于磁盤(pán)驅(qū)動(dòng)器的扇區(qū)(sector)大小,一般而言,使用者數(shù)據(jù)區(qū)D通常為512字節(jié),而冗余區(qū)R通常為16字節(jié)。也就是,一頁(yè)為一個(gè)扇區(qū)。然而,亦可以多個(gè)扇區(qū)形成一頁(yè),例如一頁(yè)包括4個(gè)扇區(qū)。一般而言,區(qū)塊可由任意數(shù)目的頁(yè)所組成,例如64頁(yè)、128頁(yè)、256頁(yè)等。區(qū)塊130-0至130-N通常也可被分組為數(shù)個(gè)區(qū)域(zone),以區(qū)域來(lái)管理存儲(chǔ)器某種程度上是彼此獨(dú)立地操作以增加操作執(zhí)行的平行程度且簡(jiǎn)化管理的復(fù)雜度。以下將根據(jù)本發(fā)明并配合圖式詳細(xì)說(shuō)明閃存的運(yùn)作。必須了解的是,在以下描述中使用"提取"、"搬移"、"交換"等詞來(lái)操作閃存區(qū)塊是邏輯上的概念。也就是說(shuō),閃存區(qū)塊的實(shí)際位置并未更動(dòng),而是邏輯上對(duì)閃存區(qū)塊進(jìn)行操作。圖2A2C是根據(jù)本發(fā)明第一實(shí)施例繪示閃存130及其運(yùn)作的詳細(xì)方塊圖。請(qǐng)參照?qǐng)D2A,在本發(fā)明實(shí)施例中,為了有效率地編程(即寫(xiě)入與抹除)閃存130,閃存130的區(qū)塊130-1至130-N會(huì)在邏輯上分組為一系統(tǒng)區(qū)202、一數(shù)據(jù)區(qū)204與一備用區(qū)206。一般來(lái)說(shuō),閃存130中屬于數(shù)據(jù)區(qū)204的區(qū)塊會(huì)占9()%以上。系統(tǒng)區(qū)202的區(qū)塊用以儲(chǔ)存系統(tǒng)性數(shù)據(jù),例如邏輯物理區(qū)塊對(duì)映表、固件碼等。數(shù)據(jù)區(qū)204中的區(qū)塊用以儲(chǔ)存數(shù)據(jù),一般來(lái)說(shuō)就是主機(jī)200所操作的邏輯區(qū)塊地址所對(duì)應(yīng)的區(qū)塊。備用區(qū)206中的區(qū)塊是用以替換數(shù)據(jù)區(qū)204中的區(qū)塊,因此在備用區(qū)206中的區(qū)塊為空或可使用的區(qū)塊,即無(wú)記錄數(shù)據(jù)或標(biāo)記為已沒(méi)用的無(wú)效數(shù)據(jù)。具體來(lái)說(shuō),由于若要對(duì)已寫(xiě)過(guò)數(shù)據(jù)位置再次寫(xiě)入數(shù)據(jù)時(shí),必須先執(zhí)行抹除的操作。然而,如前所述閃存寫(xiě)入單位為頁(yè),而抹除單位為區(qū)塊。一個(gè)抹除的單位大于寫(xiě)入的單位,這表示若要執(zhí)行區(qū)塊抹除操作,必須先將欲抹除區(qū)塊中的有效頁(yè)復(fù)制至其它區(qū)塊后才可進(jìn)行。因此,當(dāng)欲在數(shù)據(jù)區(qū)204中已寫(xiě)過(guò)數(shù)據(jù)位置的區(qū)塊M中寫(xiě)入新數(shù)據(jù)時(shí),一般會(huì)在備用區(qū)206中提取區(qū)塊S,然后將區(qū)塊M中的有效數(shù)據(jù)復(fù)制至區(qū)塊S且將新數(shù)據(jù)寫(xiě)入?yún)^(qū)塊S后,將區(qū)塊M抹除后搬移至備用區(qū)206同時(shí)將區(qū)塊S搬移至數(shù)據(jù)區(qū)204。必須了解的是,將區(qū)塊M抹除后搬移至備用區(qū)206同時(shí)將區(qū)塊S搬移至數(shù)據(jù)區(qū)204是邏輯上將區(qū)塊M搬移至備用區(qū)206而將區(qū)塊S搬移至數(shù)據(jù)區(qū)204。其中本領(lǐng)域技術(shù)人員皆能了解數(shù)據(jù)區(qū)204中區(qū)塊的邏輯關(guān)系可由邏輯物理對(duì)映表來(lái)維護(hù)。一般來(lái)說(shuō),為了更有效率地使用閃存130,區(qū)塊在邏輯上會(huì)更分為替換區(qū)塊208。圖2B是繪示閃存的另一種運(yùn)作方式,而圖2C是繪示圖2B的詳細(xì)運(yùn)作示意圖。請(qǐng)參照?qǐng)D2B與2C,替換區(qū)塊208是用來(lái)取代數(shù)據(jù)區(qū)204的區(qū)塊。更詳細(xì)而言,當(dāng)從上述備用區(qū)206中提取區(qū)塊C來(lái)取代數(shù)據(jù)區(qū)204的區(qū)塊M時(shí),會(huì)將新數(shù)據(jù)入至區(qū)塊C,但不會(huì)立刻將區(qū)塊M中的所有有效數(shù)據(jù)搬移至區(qū)塊C'而抹除區(qū)塊M。具體來(lái)說(shuō),會(huì)將區(qū)塊M中欲寫(xiě)入地址之前的有效數(shù)據(jù)(即頁(yè)P(yáng)0與P])復(fù)制至區(qū)塊C(如圖2C的(a)),并且將新數(shù)據(jù)(即區(qū)塊C的頁(yè)P(yáng)2與P3)寫(xiě)入至C區(qū)塊(如圖2C的(b))。此時(shí),將含有部分的有效舊數(shù)據(jù)與所寫(xiě)入新數(shù)據(jù)的區(qū)塊C暫時(shí)地搬移為替換區(qū)塊208。此是因?yàn)?,區(qū)塊M中的有效數(shù)據(jù)有可能在下個(gè)操作中變成無(wú)效,因此立刻將區(qū)塊M中的所有有效數(shù)據(jù)搬移至物理區(qū)塊C可能會(huì)造成無(wú)謂的搬移。在此案例中,在邏輯區(qū)塊地址與物理區(qū)塊地址的對(duì)映上會(huì)記錄多個(gè)物理區(qū)塊地址對(duì)應(yīng)到一個(gè)邏輯區(qū)塊地址的情況,也就是區(qū)塊M與區(qū)塊C的內(nèi)容整合起來(lái)才是所對(duì)映邏輯區(qū)塊的內(nèi)容。此等母子區(qū)塊(區(qū)塊M與區(qū)塊C)的瞬時(shí)關(guān)系可依據(jù)控制器110中緩沖存儲(chǔ)器110d的大小而定,在本發(fā)明實(shí)施例中是以五組來(lái)實(shí)作。之后,當(dāng)需要將區(qū)塊M與區(qū)塊C的內(nèi)容真正合并時(shí),才將區(qū)塊M與區(qū)塊C整并為一區(qū)塊,由此提升區(qū)塊的使用效率。例如,如圖2C的(c)所示,當(dāng)進(jìn)行整并時(shí),區(qū)塊M中剩余的有效數(shù)據(jù)(即頁(yè)P(yáng)4PN)會(huì)復(fù)制至區(qū)塊C,然后將區(qū)塊M抹除并搬移至備用區(qū)206,同時(shí),將區(qū)塊C搬移至數(shù)據(jù)區(qū)204,由此完成合并。值得一提的是,當(dāng)如圖2A或圖2B與2C的運(yùn)作過(guò)程中,倘若區(qū)塊M或C在寫(xiě)入或抹除之后被判斷為損壞區(qū)塊時(shí),則區(qū)塊M或C將不會(huì)再被搬移為備用區(qū)206。換言之,被判斷為損壞的區(qū)塊將不會(huì)再于系統(tǒng)中輪動(dòng)替換,而備用區(qū)的區(qū)塊數(shù)就會(huì)減少。當(dāng)備用區(qū)的區(qū)塊數(shù)目不足以提供儲(chǔ)存系統(tǒng)100的輪動(dòng)替換時(shí),則儲(chǔ)存系統(tǒng)100就無(wú)法再使用。圖3是根據(jù)本發(fā)明第一實(shí)施例繪示損壞區(qū)塊辨識(shí)程序(方法)的流程圖。本實(shí)施例所述的損壞區(qū)塊辨識(shí)程序會(huì)在控制器110的微處理器單元〗10a執(zhí)行編程(即寫(xiě)入或抹除)之后被啟動(dòng)。請(qǐng)參照?qǐng)D3,在步驟S301中會(huì)讀取所編程的區(qū)塊的讀取狀態(tài)(ReadStatus),并且在步驟S303中依據(jù)此讀取狀態(tài)來(lái)判斷所編程的區(qū)塊是否發(fā)生編程錯(cuò)誤。具體來(lái)說(shuō),在本實(shí)施例中閃存3()具有狀態(tài)讀取功能,存儲(chǔ)器管理模塊llOd可通過(guò)讀取此狀態(tài)來(lái)判斷此區(qū)塊是否發(fā)生編程錯(cuò)誤。倘若在步驟S303中判斷此區(qū)塊發(fā)生編程錯(cuò)誤時(shí),則在步驟S305中會(huì)讀取編程錯(cuò)誤記錄文件并且判斷編程錯(cuò)誤記錄文件中是否存有此區(qū)塊的地址的記錄。倘若在步驟S305中判斷編程錯(cuò)誤記錄文件中存有此區(qū)塊的地址的記錄時(shí),則表示此區(qū)塊已連續(xù)發(fā)生編程錯(cuò)誤。因此,在步驟S307中會(huì)在損壞區(qū)塊管理表中記錄此區(qū)塊的地址,以將此區(qū)塊視為損毀的區(qū)塊而不再使用。倘若在步驟S305中判斷編程錯(cuò)誤記錄文件中無(wú)存有此區(qū)塊的地址的記錄時(shí),則在步驟S309中會(huì)在編程錯(cuò)誤記錄文件中記錄此區(qū)塊的地址,并且在步驟S311中將此區(qū)塊搬移至備用區(qū)206以供后續(xù)輪動(dòng)替換使用。倘若在步驟S303中判斷此區(qū)塊正常地編程(即無(wú)發(fā)生編程錯(cuò)誤)時(shí),則在步驟S313中會(huì)讀取編程錯(cuò)誤記錄文件并且判斷編程錯(cuò)誤記錄文件中是否存有此區(qū)塊的地址的記錄。倘若在步驟S313中判斷在編程錯(cuò)誤記錄文件中存有此區(qū)塊的地址的記錄時(shí),則在步驟S315中會(huì)刪除此記錄,,換言之,由于先前編程此區(qū)塊時(shí)發(fā)生編程錯(cuò)誤,因此其地址被記錄在編程錯(cuò)誤記錄文件中。然而,當(dāng)微處理器單元110a再次編程此區(qū)塊時(shí),此區(qū)塊并未再發(fā)生編程錯(cuò)誤,因此存儲(chǔ)器管理模塊110d會(huì)認(rèn)定此區(qū)塊實(shí)際上并未損毀,所以在步驟S315中會(huì)清除其發(fā)生編程錯(cuò)誤的記錄。在本發(fā)明實(shí)施例中,編程錯(cuò)誤記錄文件是在緩沖存儲(chǔ)器110c中被記錄與更新。因此,一旦儲(chǔ)存系統(tǒng)100重新啟動(dòng)或開(kāi)機(jī)時(shí),儲(chǔ)存系統(tǒng)100必須重新建立編程錯(cuò)誤記錄文件來(lái)重新記錄所發(fā)生編程錯(cuò)誤的區(qū)塊。然而,在本發(fā)明另一實(shí)施例中,編程錯(cuò)誤記錄文件可更記錄在閃存130的區(qū)塊(例如系統(tǒng)區(qū)202中的區(qū)塊)中以便于儲(chǔ)存系統(tǒng)100重新啟動(dòng)時(shí)可加載,由此可依據(jù)關(guān)機(jī)前的記錄繼續(xù)更新。此外,在本發(fā)明另一實(shí)施例中,編程錯(cuò)誤記錄文件可更記錄區(qū)塊發(fā)生編程錯(cuò)誤的次數(shù),由此可更判斷當(dāng)區(qū)塊發(fā)生編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)才判定為損毀,其中此錯(cuò)誤上限門(mén)坎值可依據(jù)閃存的質(zhì)量或儲(chǔ)存系統(tǒng)發(fā)生誤判的機(jī)率來(lái)設(shè)定,例如設(shè)定為2次、3次或5次。在本實(shí)施例中,是以編程錯(cuò)誤記錄文件以及損壞區(qū)塊管理表來(lái)分別地記錄發(fā)生編程錯(cuò)誤的區(qū)塊與管理已判定為損毀的區(qū)塊。然而,在本發(fā)明另一實(shí)施例中,當(dāng)區(qū)塊編程錯(cuò)誤發(fā)生時(shí)亦可在區(qū)塊中至少一頁(yè)的冗余區(qū)R中記錄發(fā)生編程錯(cuò)誤或連續(xù)發(fā)生編程錯(cuò)誤的次數(shù),并且當(dāng)連續(xù)發(fā)生編程錯(cuò)誤時(shí)在此冗余區(qū)R中標(biāo)記為此區(qū)塊為損毀區(qū)塊。在本實(shí)施例中可在連續(xù)兩次或兩次以上對(duì)區(qū)塊編程都發(fā)生編程錯(cuò)誤時(shí)才判定此區(qū)塊已損毀。基此,可避免因其它噪聲所造成的誤判,延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。第一實(shí)施例是通過(guò)閃存所具有的讀取狀態(tài)功能來(lái)判定區(qū)塊是否發(fā)生編程圖4是根據(jù)本發(fā)明第二實(shí)施例繪示儲(chǔ)存系統(tǒng)的概要方塊圖。請(qǐng)參照?qǐng)D4,儲(chǔ)存系統(tǒng)400包括控制器410、總線連接接口420以及閃存430。類(lèi)似于儲(chǔ)存系統(tǒng)IOO,通常儲(chǔ)存系統(tǒng)400會(huì)通過(guò)總線300連接至主機(jī)200使用,以使主機(jī)200可將數(shù)據(jù)寫(xiě)入至儲(chǔ)存系統(tǒng)400或從儲(chǔ)存系統(tǒng)400中讀取數(shù)據(jù)。在本實(shí)施例中,儲(chǔ)存系統(tǒng)400為隨身碟。但必須了解的是,在本發(fā)明另一實(shí)施例中儲(chǔ)存系統(tǒng)400亦可以是存儲(chǔ)卡或固態(tài)硬盤(pán)(SolidStateDrive,SSD)。在本實(shí)施例中,控制器410、總線連接接口以及閃存430是大致上是相同于第一實(shí)施例的控制器110、總線連接接口12()以及閃存130,其中不同之處在于控制器410除了微處理單元410a、閃存模塊410b、緩沖存儲(chǔ)器410c與存儲(chǔ)器管理模塊410d還包括錯(cuò)誤校正模塊440,并且存儲(chǔ)器管理模塊410d會(huì)執(zhí)行根據(jù)本發(fā)明第二實(shí)施例的損壞區(qū)塊辨識(shí)程序(如圖5所示)。錯(cuò)誤校正模塊410e會(huì)對(duì)欲寫(xiě)入的數(shù)據(jù)產(chǎn)生一組錯(cuò)校正碼并且與此數(shù)據(jù)一同儲(chǔ)存至閃存430,其中之后當(dāng)從閃存430中讀取此數(shù)據(jù)時(shí),錯(cuò)誤校正模塊410c可依據(jù)錯(cuò)誤校正碼來(lái)檢查數(shù)據(jù)是否正確,或者當(dāng)數(shù)據(jù)不正確時(shí)嘗試將錯(cuò)誤的數(shù)據(jù)回復(fù)為正確的數(shù)據(jù)。圖5是根據(jù)本發(fā)明第二實(shí)施例繪示損壞區(qū)塊辨識(shí)程序(方法)的流程圖。本實(shí)施例所述的損壞區(qū)塊辨識(shí)程序會(huì)在控制器410的微處理器單元410a執(zhí)行編程之后被啟動(dòng)。請(qǐng)參照?qǐng)D5,在步驟S501中會(huì)讀取所編程的區(qū)塊的數(shù)據(jù),并且在步驟S503中依據(jù)此數(shù)據(jù)的錯(cuò)誤校正碼來(lái)檢查數(shù)據(jù)是否為正確或可回復(fù),以判斷所編程的區(qū)塊是否發(fā)生編程錯(cuò)誤。倘若在步驟S503中判斷數(shù)據(jù)為不正確且無(wú)法回復(fù)時(shí),則在步驟S505中會(huì)在編程錯(cuò)誤記錄文件中計(jì)數(shù)此區(qū)塊的編程錯(cuò)誤次數(shù)(例如于編程錯(cuò)誤次數(shù)中增加1)。之后,在步驟S507中會(huì)判斷此區(qū)塊的編程錯(cuò)誤次數(shù)是否等于錯(cuò)誤上限門(mén)坎值,其中此錯(cuò)誤上限門(mén)坎值可依據(jù)閃存的質(zhì)量或儲(chǔ)存系統(tǒng)發(fā)生誤判的機(jī)率來(lái)設(shè)定,例如設(shè)定為2次、3次或5次。倘若在步驟S507中判斷此區(qū)塊的編程錯(cuò)誤次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí),則在步驟S5()9中會(huì)在損壞區(qū)塊管理表中記錄此區(qū)塊的地址,以將此區(qū)塊視為損毀的區(qū)塊而不再使用。倘若在步驟S507中判斷此區(qū)塊的編程錯(cuò)誤次數(shù)不等于錯(cuò)誤上限門(mén)坎值時(shí),則在步驟SM1中將此區(qū)塊搬移至備用區(qū)206以供后續(xù)輪動(dòng)替換使用。倘若在步驟S503中判斷數(shù)據(jù)為正確或可回復(fù)時(shí),則在歩驟S5L3中會(huì)在編程錯(cuò)誤記錄文件中將此區(qū)塊的編程錯(cuò)誤次數(shù)重置(例如將編程錯(cuò)誤次數(shù)歸0)。換言之,倘若計(jì)數(shù)值是由有次數(shù)記錄而被歸Q表示此區(qū)塊先前雖發(fā)生編程錯(cuò)誤,但微處理器單元410a再次編程此區(qū)塊時(shí),此區(qū)塊并未再發(fā)生編程錯(cuò)誤,因此存儲(chǔ)器管理模塊410d會(huì)認(rèn)定此區(qū)塊實(shí)際上并未損毀,所以在步驟S513中會(huì)清除其發(fā)生編程錯(cuò)誤的次數(shù)記錄。在本發(fā)明實(shí)施例中,編程錯(cuò)誤記錄文件是在緩沖存儲(chǔ)器410c中被記錄與更新。因此,一旦儲(chǔ)存系統(tǒng)400重新啟動(dòng)或開(kāi)機(jī)時(shí),儲(chǔ)存系統(tǒng)400必須重新建立編程錯(cuò)誤記錄文件來(lái)重新記錄所發(fā)生編程錯(cuò)誤的區(qū)塊。然而,在本發(fā)明另一實(shí)施例中,編程錯(cuò)誤記錄文件可更記錄在閃存430中以便于儲(chǔ)存系統(tǒng)400重新啟動(dòng)時(shí)可加載,由此可依據(jù)關(guān)機(jī)前的記錄繼續(xù)更新。此外,在本發(fā)明另一實(shí)施例中,編程錯(cuò)誤記錄文件可如第一實(shí)施例所述僅記錄發(fā)生編程錯(cuò)誤的區(qū)塊的地址,并且當(dāng)此區(qū)塊連續(xù)地再一次發(fā)生編程錯(cuò)誤時(shí)就判定此區(qū)塊為損毀。在本實(shí)施例中是以錯(cuò)誤校正碼來(lái)判定是否發(fā)生編程錯(cuò)誤,并且在連續(xù)兩次或兩次以上對(duì)區(qū)塊編程都發(fā)生編程錯(cuò)誤時(shí)才判定此區(qū)塊已損毀?;?,可避免因其它噪聲所造成的誤判,延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。綜上所述,本發(fā)明所提供的損壞區(qū)塊辨識(shí)方法是通過(guò)編程錯(cuò)誤記錄文件的記錄在區(qū)塊連續(xù)地發(fā)生編程錯(cuò)誤時(shí)才判定為損毀區(qū)塊,由此可避免因閃存高速寫(xiě)入的噪聲所造成的誤判,并且可因此延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。權(quán)利要求1.一種損壞區(qū)塊辨識(shí)方法,該損壞區(qū)塊辨識(shí)方法包括在編程閃存的區(qū)塊之后檢查該區(qū)塊是否發(fā)生編程錯(cuò)誤;以及當(dāng)該區(qū)塊的編程錯(cuò)誤連續(xù)地發(fā)生時(shí)將該區(qū)塊標(biāo)記為損壞區(qū)塊。2.根據(jù)權(quán)利要求1所述的損壞區(qū)塊辨識(shí)方法,其中編程該閃存的區(qū)塊的步驟包括對(duì)該閃存進(jìn)行寫(xiě)入操作或抹除操作。3.根據(jù)權(quán)利要求1所述的損壞區(qū)塊辨識(shí)方法,還包括讀取該區(qū)塊的讀取狀態(tài)以判斷該區(qū)塊是否發(fā)生該編程錯(cuò)誤。4.根據(jù)權(quán)利要求1所述的損壞區(qū)塊辨識(shí)方法,還包括使用錯(cuò)誤校正碼檢查該區(qū)塊的數(shù)據(jù)以判斷該區(qū)塊是否發(fā)生編程錯(cuò)誤,其中當(dāng)確認(rèn)該區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)貝'j判斷該區(qū)塊發(fā)生該編程錯(cuò)誤。5.根據(jù)權(quán)利要求1所述的損壞區(qū)塊辨識(shí)方法,其中將該區(qū)塊標(biāo)記為損壞區(qū)塊的步驟包括于損壞區(qū)塊管理表中記錄該區(qū)塊的地址。6.根據(jù)權(quán)利要求1所述的損壞區(qū)塊辨識(shí)方法,其中將該區(qū)塊標(biāo)記為損壞區(qū)塊的步驟包括于該區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記該區(qū)塊為損壞區(qū)塊。7.根據(jù)權(quán)利要求5所述的損壞區(qū)塊辨識(shí)方法,還包括在編程錯(cuò)誤記錄文件中記錄該區(qū)塊連續(xù)發(fā)生該編程錯(cuò)誤的次數(shù),其中當(dāng)該編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于該損壞區(qū)塊管理表中記錄該區(qū)塊的地址。8.根據(jù)權(quán)利要求7所述的損壞區(qū)塊辨識(shí)方法,其中該錯(cuò)誤上限門(mén)坎值為至少2以上。9.根據(jù)權(quán)利要求7所述的損壞區(qū)塊辨識(shí)方法,還包括將該編程錯(cuò)誤記錄文件儲(chǔ)存于該閃存的其它區(qū)塊中或靜態(tài)隨機(jī)存取存儲(chǔ)器中。10.—種控制器,其適用于具有閃存的儲(chǔ)存系統(tǒng),該控制器包括微處理器單元;閃存接口,耦接至該微處理單元且用以存取該閃存;緩沖存儲(chǔ)器,耦接至該微處理單元且用以暫時(shí)地儲(chǔ)存數(shù)據(jù);以及存儲(chǔ)器管理模塊,耦接至該微處理器單元且用以在該微處理單元編程該閃存的區(qū)塊之后檢查該區(qū)塊是否發(fā)生編程錯(cuò)誤,并且當(dāng)該區(qū)塊的編程錯(cuò)誤連續(xù)地發(fā)生時(shí)將該區(qū)塊標(biāo)記為損壞區(qū)塊。11.根據(jù)權(quán)利要求IO所述的控制器,其中該編程包括寫(xiě)入操作或抹除操作。12.根據(jù)權(quán)利要求IO所述的控制器,該存儲(chǔ)器管理模塊會(huì)讀取該區(qū)塊的讀取狀態(tài)以判斷該區(qū)塊是否發(fā)生該編程錯(cuò)誤。13.根據(jù)權(quán)利要求10所述的控制器,還包括錯(cuò)誤校正模塊,其中該存儲(chǔ)器管理模塊通過(guò)該錯(cuò)誤校正模塊檢查該區(qū)塊的數(shù)據(jù),并且當(dāng)確認(rèn)該區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)則判斷該區(qū)塊發(fā)生該編程錯(cuò)誤。14.根據(jù)權(quán)利要求IO所述的控制器,其中該存儲(chǔ)器管理模塊會(huì)于損壞區(qū)塊管理表中記錄該區(qū)塊的地址。15.根據(jù)權(quán)利要求10所述的控制器,其中該存儲(chǔ)器管理模塊會(huì)于該區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記該區(qū)塊為損壞區(qū)塊。16.根據(jù)權(quán)利要求14所述的控制器,該存儲(chǔ)器管理模塊會(huì)在編程錯(cuò)誤記錄文件中記錄該區(qū)塊連續(xù)發(fā)生該編程錯(cuò)誤的次數(shù),其中當(dāng)該編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于該損壞區(qū)塊管理表中記錄該區(qū)塊的地址。17.根據(jù)權(quán)利要求16所述的控制器,其中該錯(cuò)誤上限門(mén)坎值為至少2以上。18.根據(jù)權(quán)利要求16所述的控制器,該存儲(chǔ)器管理模塊會(huì)將該編程錯(cuò)誤記錄文件儲(chǔ)存于該閃存的其它區(qū)塊中或靜態(tài)隨機(jī)存取存儲(chǔ)器中。19.一種儲(chǔ)存系統(tǒng),包括閃存,用以儲(chǔ)存數(shù)據(jù);控制器,耦接至該閃存用以在編程該閃存的區(qū)塊之后檢查該區(qū)塊是否發(fā)生編程錯(cuò)誤,并且當(dāng)該區(qū)塊的編程錯(cuò)誤連續(xù)地發(fā)生時(shí)將該區(qū)塊標(biāo)記為損壞區(qū)塊;以及總線連接接口,耦接至該控制器且用以連接主機(jī)。20.根據(jù)權(quán)利要求19所述的儲(chǔ)存系統(tǒng),其中該編程包括寫(xiě)入操作或抹除操作。21.根據(jù)權(quán)利要求19所述的儲(chǔ)存系統(tǒng),該控制器會(huì)讀取該區(qū)塊的讀取狀態(tài)以判斷該區(qū)塊是否發(fā)生該編程錯(cuò)誤。22.根據(jù)權(quán)利要求19所述的儲(chǔ)存系統(tǒng),其中該控制器會(huì)經(jīng)由錯(cuò)誤校正模塊檢查該區(qū)塊的數(shù)據(jù),并且當(dāng)確認(rèn)該區(qū)塊的數(shù)據(jù)為不正確或不可回復(fù)時(shí)則判斷該區(qū)塊發(fā)生該編程錯(cuò)誤。23.根據(jù)權(quán)利要求19所述的儲(chǔ)存系統(tǒng),其中該控制器會(huì)于損壞區(qū)塊管理表中記錄該區(qū)塊的地址。24.根據(jù)權(quán)利要求19所述的儲(chǔ)存系統(tǒng),其中該控制器會(huì)于該區(qū)塊中至少一頁(yè)的冗余區(qū)中標(biāo)記該區(qū)塊為損壞區(qū)塊。25.根據(jù)權(quán)利要求23所述的儲(chǔ)存系統(tǒng),該控制器會(huì)在編程錯(cuò)誤記錄文件中記錄該區(qū)塊連續(xù)發(fā)生該編程錯(cuò)誤的次數(shù),其中當(dāng)該編程錯(cuò)誤的次數(shù)等于錯(cuò)誤上限門(mén)坎值時(shí)則于該損壞區(qū)塊管理表中記錄該區(qū)塊的地址。全文摘要一種用于閃存的損壞區(qū)塊辨識(shí)方法、儲(chǔ)存系統(tǒng)及其控制器。此損壞區(qū)塊辨識(shí)方法包括在編程閃存的區(qū)塊之后檢查所編程的區(qū)塊是否發(fā)生編程錯(cuò)誤,以及當(dāng)所編程的區(qū)塊連續(xù)地發(fā)生編程錯(cuò)誤時(shí)標(biāo)記此區(qū)塊為損壞區(qū)塊?;耍捎谠诙啻伟l(fā)生編程錯(cuò)誤下才判定區(qū)塊為損壞,由此避免誤判而延長(zhǎng)閃存儲(chǔ)存系統(tǒng)的使用壽命。文檔編號(hào)G11C29/04GK101567220SQ20081009233公開(kāi)日2009年10月28日申請(qǐng)日期2008年4月22日優(yōu)先權(quán)日2008年4月22日發(fā)明者許智仁,黃意翔申請(qǐng)人:群聯(lián)電子股份有限公司