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