專利名稱:閃存的控制裝置與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及儲(chǔ)存設(shè)備,特別涉及一種閃存的控制裝置與方法。
背景技術(shù):
隨著消費(fèi)性產(chǎn)品的普及,對(duì)于數(shù)據(jù)儲(chǔ)存的需求也日益增加。因閃存制造技術(shù)突飛猛進(jìn),儲(chǔ)存容量也日益加大,并且因其體積小,操作省電而廣受歡迎。然而,目前的半導(dǎo)體制造工藝尚不能保證閃存出廠時(shí),每一個(gè)儲(chǔ)存區(qū)塊都是良好可用的。另外,每一個(gè)儲(chǔ)存區(qū)塊的寫入次數(shù)以及擦除次數(shù)也都有各自的上限,會(huì)在使用的過程中達(dá)到壽命而損壞。因此,在現(xiàn)有技術(shù)中要開發(fā)一個(gè)以閃存作為儲(chǔ)存媒介的消費(fèi)性產(chǎn)品,此閃存的控制裝置必須要使用很大的內(nèi)存才能管理其儲(chǔ)存空間。
圖1所示為已知閃存的系統(tǒng)結(jié)構(gòu)圖。閃存10本身便是由一個(gè)個(gè)區(qū)塊(Block)所組成,例如128Mb的閃存約由8千多個(gè)區(qū)塊101所組成。而每一個(gè)區(qū)塊內(nèi)部又分為多個(gè)頁(Page)102,一般來說是8~64頁。而每一頁又分為數(shù)據(jù)儲(chǔ)存區(qū)(data storage area)103以及空閑區(qū)(spare area)104,一般來說,頁分為兩種規(guī)格,若數(shù)據(jù)儲(chǔ)存區(qū)為512字節(jié)(byte),則空閑區(qū)便為16字節(jié),若數(shù)據(jù)儲(chǔ)存區(qū)為2048字節(jié),則空閑區(qū)便為64字節(jié)。其中,空閑區(qū)其中一個(gè)作用是用于作為數(shù)據(jù)儲(chǔ)存區(qū)的錯(cuò)誤更正碼,另一個(gè)功能則是當(dāng)區(qū)塊內(nèi)有損壞時(shí),會(huì)在第一頁或是第二頁(若第一頁損壞時(shí))標(biāo)示非FF的值,以便表示此區(qū)塊為損壞的區(qū)塊。
一般來說,在寫入閃存之前,要先作擦除(erase)的操作,把所有的儲(chǔ)存單元(memory cell)通通編程為邏輯1狀態(tài)。閃存作擦除的操作是以區(qū)塊為單位,而寫入是以頁為單位。由于閃存的物理特性,從邏輯1狀態(tài)轉(zhuǎn)變?yōu)檫壿?狀態(tài)是可行的,但是從邏輯0狀態(tài)轉(zhuǎn)為邏輯1狀態(tài)是不可行的。若需要在某個(gè)區(qū)塊的某頁寫入數(shù)據(jù),且該頁已經(jīng)存有邏輯0狀態(tài)時(shí),便必須擦除整個(gè)區(qū)塊再寫入。這就是閃存的特性。然而,長期作擦除的操作容易造成損壞的區(qū)塊產(chǎn)生。
使用閃存最大的問題即在損壞的區(qū)塊的產(chǎn)生。損壞的區(qū)塊可能在一出廠即出現(xiàn),也有可能是在使用過程中出現(xiàn)。一般來說,廠商會(huì)保證損壞的區(qū)塊的比例控制在2%。但是在使用者的角度上來看,使用者在儲(chǔ)存數(shù)據(jù)時(shí)不會(huì)希望數(shù)據(jù)不能連續(xù)儲(chǔ)存,一般的使用者,一定是希望數(shù)據(jù)可以連續(xù)放在閃存中。然而現(xiàn)在的半導(dǎo)體制造工藝并不能保證每一個(gè)區(qū)塊都是良好可用的。所以閃存的空間并非連續(xù),而是良好區(qū)塊與損壞的區(qū)塊交雜使用。然而使用者若不幸將數(shù)據(jù)(或數(shù)據(jù)的一部分)儲(chǔ)存至損壞的區(qū)塊中,便會(huì)造成數(shù)據(jù)的損毀,這種情形在一個(gè)產(chǎn)品上是不允許被接受的。
為了解決上述損壞的區(qū)塊所造成使用者在使用產(chǎn)品上的不便,已知MSystem公司曾在美國提出第5,404,485號(hào)專利,另外SSFDC組織也提出了SmartMedia Format規(guī)格。上述兩者解決方案都是建立一個(gè)映射表(VirtualMap)以及分配表(Allocation Map)。映射表主要是用于將出廠時(shí)已經(jīng)損毀的區(qū)塊或使用過程中損毀的區(qū)塊通過不列入映射范圍的方式,達(dá)到排除的目的。而分配表主要是用于紀(jì)錄每個(gè)區(qū)塊的狀態(tài),可加速區(qū)塊寫入時(shí)對(duì)新的區(qū)塊的尋找,以增加儲(chǔ)存速度。
以上兩種已知做法雖然可以有效的解決閃存中損壞的區(qū)塊被使用者所使用的問題。但是,以一個(gè)128Mb的閃存來說,就會(huì)有8192個(gè)區(qū)塊,每個(gè)區(qū)塊16Kb的閃存容量,此閃存以區(qū)塊(Block)為單位的映射表至少需要16Kb,也就是8192*2字節(jié)的內(nèi)存。若是以區(qū)塊加上頁(Page)的兩層式的映射方式則需要24Kb,也就是8192*3個(gè)字節(jié)的內(nèi)存。而分配表需要2Kb的存儲(chǔ)空間。因此若要使用上述的方式,總共的內(nèi)存需求至少要18Kb的內(nèi)存。在很多的嵌入式產(chǎn)品上無法提供如此大的內(nèi)存需求。因此需要一較低內(nèi)存需求的閃存控制裝置與控制方法。
發(fā)明內(nèi)容
本發(fā)明的目的就是提供一種閃存的控制裝置,用于降低成本。
本發(fā)明的再一目的是提供一種閃存的控制方法,用于避免使用者使用損壞的區(qū)塊。
本發(fā)明提出一種閃存的控制裝置。此閃存包括多個(gè)區(qū)塊,其中這些區(qū)塊分為多個(gè)儲(chǔ)存區(qū)塊以及多個(gè)備用區(qū)塊,此裝置包括壞塊映射表以及控制器。當(dāng)要根據(jù)一存取區(qū)塊地址存取一數(shù)據(jù)時(shí),控制器判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊,當(dāng)存取區(qū)塊地址所對(duì)應(yīng)區(qū)塊為損壞區(qū)塊時(shí),根據(jù)存取區(qū)塊地址尋找壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊的地址來取代該存取區(qū)塊地址,重復(fù)上述操作直至存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常區(qū)塊,根據(jù)最后得到的存取區(qū)塊地址存取該數(shù)據(jù)。
依照本發(fā)明的較佳實(shí)施例所述的閃存的控制裝置,上述的壞塊映射表包括多個(gè)映射單元,每一映射單元包括一損壞區(qū)塊地址儲(chǔ)存區(qū)以及一備用區(qū)塊地址儲(chǔ)存區(qū),該控制器查找壞塊映射表以獲得備用區(qū)塊地址來取代原存取區(qū)塊地址時(shí),掃描每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址,找出對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代該存取區(qū)塊地址。
本發(fā)明提出一種閃存的控制方法,用于控制一閃存。此閃存包括多個(gè)區(qū)塊,其中這些區(qū)塊分為多個(gè)儲(chǔ)存區(qū)塊以及多個(gè)備用區(qū)塊。此控制方法至少包括下列步驟首先,提供一壞塊映射表。當(dāng)要根據(jù)存取區(qū)塊地址存取數(shù)據(jù)時(shí),判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊。當(dāng)存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞區(qū)塊時(shí),根據(jù)存取區(qū)塊地址查找壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊的地址來取代該存取區(qū)塊地址。之后重復(fù)上述操作直至存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常區(qū)塊后,根據(jù)最后得到的存取區(qū)塊地址存取該數(shù)據(jù)。
依照本發(fā)明的較佳實(shí)施例所述的閃存的控制方法,上述壞塊映射表包括多個(gè)映射單元,每一映射單元包括損壞區(qū)塊地址儲(chǔ)存區(qū)以及備用區(qū)塊地址儲(chǔ)存區(qū)。當(dāng)存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊時(shí),根據(jù)存取區(qū)塊地址掃描壞塊映射表內(nèi)每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址,找出對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代原本的存取區(qū)塊地址。
本發(fā)明因采用較簡單的壞塊映射表,當(dāng)使用者存取時(shí),控制器先偵測儲(chǔ)存區(qū)塊是否為損壞區(qū)塊,若是損壞區(qū)塊則查表找出備用區(qū)塊,因此可避免使用者使用損壞的區(qū)塊。另外,由于壞塊映射表只須儲(chǔ)存損壞的區(qū)塊的信息,也就是說其余未損壞的區(qū)塊不須儲(chǔ)存至表內(nèi),比起已知查找表必須儲(chǔ)存所有地址信息造成的內(nèi)存浪費(fèi),本發(fā)明的方法與裝置可使用更少的儲(chǔ)存空間,同樣可達(dá)到避免使用者使用損壞區(qū)塊的功能,從而達(dá)到減少硬件成本的目的。
圖1所示為已知閃存系統(tǒng)結(jié)構(gòu)圖。
圖2所示為本發(fā)明實(shí)施例的一種閃存控制裝置的電路方框圖。
圖3所示為本發(fā)明實(shí)施例圖2中壞塊映射表202的一種實(shí)施方式。
圖4所示為本發(fā)明實(shí)施例圖2中壞塊映射表202的一種實(shí)施方式。
圖5所示為本發(fā)明實(shí)施例圖2中壞塊映射表202的一種實(shí)施方式。
圖6所示為本發(fā)明另一實(shí)施例的一種閃存控制裝置的電路方框圖;圖7所示為本發(fā)明實(shí)施例圖6中壞塊映射表602的一種實(shí)施方式。
圖8所示為本發(fā)明實(shí)施例的一種閃存控制方法的流程圖。
圖9所示為本發(fā)明另一實(shí)施例閃存控制方法的流程圖。
具體實(shí)施例方式
為讓本發(fā)明上述和其它目的、特點(diǎn)和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合附圖,作詳細(xì)說明如下。
由于先前為了防止損壞的區(qū)塊被使用者所使用的技術(shù)預(yù)先把所有儲(chǔ)存區(qū)塊的地址作映射表,以排除損壞的區(qū)塊,需要耗費(fèi)許多的內(nèi)存來管理,增加了許多不必要的硬件成本。因此本發(fā)明提出一種閃存的控制裝置與方法,藉以少量的硬件成本,同樣可以做到“防止損壞的區(qū)塊被使用者所使用”。詳細(xì)的實(shí)施方式將會(huì)在下面實(shí)施例中說明。
圖2為本發(fā)明實(shí)施例的一種閃存控制裝置的電路方框圖。請(qǐng)參考圖2,此實(shí)施例的電路方框圖包括接口電路200、控制器201、壞塊映射表202以及被控制器所控制的閃存區(qū)塊21,其中閃存區(qū)塊21分為多個(gè)給使用者所使用的儲(chǔ)存區(qū)塊211以及多個(gè)為了當(dāng)有損壞區(qū)塊時(shí)所提供的備用區(qū)塊212。另外,圖3為壞塊映射表202的實(shí)施例,在此實(shí)施例中包括多個(gè)映射單元I_01~I(xiàn)_10,每一映射單元包括損壞區(qū)塊地址(Address)儲(chǔ)存區(qū)BA以及備用區(qū)塊地址儲(chǔ)存區(qū)SA。
為了方便說明本發(fā)明,此圖2實(shí)施例以較少數(shù)目的儲(chǔ)存區(qū)塊(20個(gè)區(qū)塊)以及備用區(qū)塊(10個(gè)區(qū)塊)加以說明,其中儲(chǔ)存區(qū)塊211標(biāo)示為B01~B20,備用區(qū)塊212標(biāo)示為B21~B30。同樣的,圖3所示的映射單元也以較少數(shù)目(10個(gè)映射單元)I_01~I(xiàn)_10作為例子。然而,若以一般128Mb的閃存,會(huì)有八千多個(gè)使用者儲(chǔ)存區(qū)塊,因此本實(shí)施例僅為了說明方便而舉例,本發(fā)明不以此為限。
請(qǐng)參考圖2與圖3。首先,當(dāng)啟動(dòng)此裝置時(shí),例如此裝置是一個(gè)通用串行總線(Universal Serial Bus,USB)隨身碟,接口電路即USB接口電路。當(dāng)此裝置第一次通過USB接口插入電腦時(shí),便開始供應(yīng)電力至此隨身碟。此時(shí)控制器201便開始掃描閃存區(qū)塊21中所有使用者可使用的儲(chǔ)存區(qū)塊211內(nèi)的B01~B20是否有損壞。若區(qū)塊有損壞時(shí),便會(huì)在該損壞的區(qū)塊內(nèi)的第一個(gè)頁或第二個(gè)頁里面的空閑區(qū)標(biāo)示非FF的值。當(dāng)控制器201例如在第8個(gè)儲(chǔ)存區(qū)塊B08內(nèi)的第一頁里面的空閑區(qū)發(fā)現(xiàn)非FF值,便確定第8個(gè)儲(chǔ)存區(qū)塊B08為損壞的區(qū)塊,之后,控制器201將第8個(gè)儲(chǔ)存區(qū)塊的地址(Address)儲(chǔ)存在壞塊映射表202里面的映射單元I_01中的損壞區(qū)塊地址儲(chǔ)存區(qū)BA,并且分配一個(gè)備用區(qū)塊例如第一個(gè)備用區(qū)塊B21代替第8個(gè)儲(chǔ)存區(qū)塊B08,并在映射單元I_01中的備用區(qū)塊地址儲(chǔ)存區(qū)SA儲(chǔ)存B21的地址。
接下來控制器201繼續(xù)掃描閃存區(qū)塊21,又發(fā)現(xiàn)第15個(gè)儲(chǔ)存區(qū)塊B15也為損壞的區(qū)塊,控制器201便開始作與上述第8個(gè)儲(chǔ)存區(qū)塊相同的操作,將第15個(gè)儲(chǔ)存區(qū)塊的地址儲(chǔ)存至壞塊映射表202里面的映射單元I_02中的損壞區(qū)塊地址儲(chǔ)存區(qū)BA,并且分配一個(gè)備用區(qū)塊,例如第二個(gè)備用區(qū)塊B22代替第15個(gè)儲(chǔ)存區(qū)塊B15,并在映射單元I_02中的備用區(qū)塊地址儲(chǔ)存區(qū)SA儲(chǔ)存B22的地址以供查詢。
當(dāng)正常使用時(shí),例如使用者通過電腦要對(duì)此隨身碟作存取的操作時(shí),使用者通過操作系統(tǒng)Windows的資源管理器將文件拖曳至隨身碟中。此時(shí),通過接口電路200傳送指令至控制器201告知要儲(chǔ)存文件,并且將要儲(chǔ)存在例如第8個(gè)儲(chǔ)存區(qū)塊的地址作為存取區(qū)塊地址。此時(shí)控制器201便根據(jù)存取區(qū)塊地址檢查閃存區(qū)塊21內(nèi)的第8個(gè)儲(chǔ)存區(qū)塊B08。當(dāng)控制器201發(fā)現(xiàn)此區(qū)塊為損壞時(shí),便開始查壞塊映射表202內(nèi)所有映射單元I_01~I(xiàn)_10的損壞區(qū)塊地址儲(chǔ)存區(qū)BA,查詢是否有與第8個(gè)儲(chǔ)存地址B08相符合的地址。當(dāng)控制器201查詢到第8個(gè)儲(chǔ)存區(qū)塊B08的地址在映射單元I_01時(shí),便開始檢查B08對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)SA,查出第一個(gè)備用區(qū)塊B21的地址作為代替第8個(gè)儲(chǔ)存區(qū)塊B08地址的存取區(qū)塊地址。之后,控制器201檢查備用區(qū)塊B21是否為損壞的區(qū)塊。當(dāng)控制器201確定備用區(qū)塊B21為可用的區(qū)塊(非損壞),便開始控制接口電路200將數(shù)據(jù)儲(chǔ)存在第一個(gè)備用區(qū)塊B21。
接下來,當(dāng)使用者通過電腦操作系統(tǒng)Windows的資源管理器,將一個(gè)較大的文件拖曳至隨身碟中。此時(shí),通過接口電路200傳送指令至控制器201告知要儲(chǔ)存文件,并且告知將要儲(chǔ)存到的例如第10~15個(gè)儲(chǔ)存區(qū)塊B10~B15的地址。此時(shí)控制器201便依次根據(jù)這些地址開始搜尋第10~15個(gè)儲(chǔ)存區(qū)塊B10~B15是否為壞塊,若不是壞塊,則將數(shù)據(jù)儲(chǔ)存至該區(qū)塊。
假設(shè)搜尋至第12個(gè)儲(chǔ)存區(qū)塊B12發(fā)現(xiàn)此區(qū)塊為損壞的區(qū)塊時(shí),同樣的,控制器201會(huì)開始搜尋壞塊映射表202。此時(shí)由于第12個(gè)儲(chǔ)存區(qū)塊B12的地址并沒有儲(chǔ)存在壞塊映射表202中,因此,控制器201會(huì)在壞塊映射表202中未使用的映射單元I_03建立一個(gè)映射關(guān)系,如圖4中的401。在映射單元I_03內(nèi)的損壞區(qū)塊地址儲(chǔ)存區(qū)BA寫入B12的地址,在備用區(qū)塊地址儲(chǔ)存區(qū)SA中儲(chǔ)存第3個(gè)備用區(qū)塊B23的地址以提供映射關(guān)系。而控制器201便以第3個(gè)備用區(qū)塊B23代替第12個(gè)儲(chǔ)存區(qū)塊B12??刂破?01接下來檢查第3個(gè)備用區(qū)塊是否為損壞的區(qū)塊,假設(shè)沒有損壞,便將原本要儲(chǔ)存至第12個(gè)儲(chǔ)存區(qū)塊B12的數(shù)據(jù)存進(jìn)第3個(gè)備用區(qū)塊B23。
接下來,重復(fù)上述步驟直到第15個(gè)儲(chǔ)存區(qū)塊B15,控制器201發(fā)現(xiàn)此區(qū)塊B15為損壞時(shí),查詢壞塊映射表202,查出其對(duì)應(yīng)的地址為第二個(gè)備用區(qū)塊B22的地址。接下來控制器201便開始檢查第二個(gè)備用區(qū)塊B22是否為壞塊,若發(fā)現(xiàn)此區(qū)塊也為壞塊時(shí),繼續(xù)查詢壞塊映射表202,此時(shí)發(fā)現(xiàn)無法查出第二個(gè)備用區(qū)塊B22所對(duì)應(yīng)的備用區(qū)塊時(shí),控制器201同樣的在壞塊映射表202中的映射單元I_04建立一個(gè)映射關(guān)系,如圖5中的501,其中損壞區(qū)塊地址儲(chǔ)存區(qū)BA寫入B22的地址,在備用區(qū)塊地址儲(chǔ)存區(qū)SA中儲(chǔ)存第4個(gè)備用區(qū)塊B24的地址以提供映射關(guān)系??刂破?01便以第4個(gè)備用區(qū)塊B24代替第2個(gè)備用區(qū)塊B22??刂破?01接下來檢查第4個(gè)備用區(qū)塊是否為損壞的區(qū)塊,假設(shè)沒有損壞,便將原本要儲(chǔ)存至第15個(gè)儲(chǔ)存區(qū)塊B15的數(shù)據(jù)存進(jìn)第4個(gè)備用區(qū)塊B24。
上述的實(shí)施例為儲(chǔ)存的實(shí)施例,讀取時(shí)也相同。當(dāng)使用者通過電腦操作系統(tǒng)Windows的資源管理器,將一個(gè)在此隨身碟中的文件例如MP3文件點(diǎn)選兩下啟動(dòng)了WinAmp軟件要播放此文件時(shí),此時(shí)讀取指令通過接口電路200傳送至控制器201,控制器201接收到要讀取文件的地址(例如第15個(gè)儲(chǔ)存區(qū)塊B15的地址)后,便開始檢查第15個(gè)儲(chǔ)存區(qū)塊B15是否為損壞的區(qū)塊。當(dāng)控制器201檢查到第15個(gè)儲(chǔ)存區(qū)塊B15為損壞區(qū)塊時(shí),查詢壞塊映射表202內(nèi)的對(duì)應(yīng)關(guān)系查出B22為代替B15的區(qū)塊。接下來控制器201會(huì)再度檢查B22區(qū)塊是否為損壞。同樣的,控制器201檢查出B22區(qū)塊也是損壞的區(qū)塊,因此再一次查詢壞塊映射表202查出B24區(qū)塊為代替B22的區(qū)塊。控制器201會(huì)再次檢查B24是否為損壞的區(qū)塊,此時(shí)查出B24為非壞塊,便讀取B24數(shù)據(jù)給應(yīng)用程序WinAmp播放MP3音樂。
在此實(shí)施例中,不難發(fā)現(xiàn),此實(shí)施例的映射表只需要少數(shù)內(nèi)存便可以執(zhí)行。在先前的技術(shù)中,映射表必須要映射閃存中所有的空間,也就是說,閃存越大,映射表所需的內(nèi)存也會(huì)跟著越大。而此實(shí)施例中,映射表所需的內(nèi)存的最大值只需要根據(jù)備用區(qū)塊多少來決定。因此,若以閃存出廠約有2%的損壞的區(qū)塊的機(jī)率來說,按照產(chǎn)品的保質(zhì)期,我們可以安排一定的備用區(qū)塊以保證產(chǎn)品在保質(zhì)期內(nèi),使用者可以正常使用。
例如以一個(gè)MP3隨身碟來說,使用者一般將MP3放入隨身碟后,一周內(nèi)都是在聽該設(shè)備內(nèi)的歌,并不會(huì)常常作擦除的操作。因此在閃存中便可以選擇例如3%的備用區(qū)塊,其中2%是為了出廠的損壞率。另外1%則可以為了保質(zhì)期(如3年)而準(zhǔn)備。若以上述MP3隨身碟的例子來說,壞塊映射表便只需要先前技術(shù)內(nèi)存使用量的3%。另外,此壞塊映射表的特性在于當(dāng)有損壞的區(qū)塊時(shí),寫入此映射表,換句話說,此映射表不需要再更新。而控制器的操作則是一直查詢閃存的區(qū)塊是否有損壞,若有損壞則查表,無損壞則存取。因此此類型的壞塊映射表很適合儲(chǔ)存在只讀儲(chǔ)存器中,例如直接將此表建置在閃存中。而不須作擦除的操作。如此,本發(fā)明的實(shí)施例可以做到不需要任何形式的外加(或內(nèi)建)隨機(jī)存取存儲(chǔ)器即可實(shí)施。
再者,以本發(fā)明的實(shí)施例來說,雖然此實(shí)施例中的壞塊映射表中映射單元所映射的備用區(qū)塊都是以遞增的關(guān)系,也就是說I_01的備用區(qū)塊地址儲(chǔ)存區(qū)SA所儲(chǔ)存的備用區(qū)塊地址為B21,I_02的備用區(qū)塊地址儲(chǔ)存區(qū)SA所儲(chǔ)存的備用區(qū)塊地址為B22...。然而本發(fā)明不一定要如此實(shí)施。例如以遞減的方式,I_01的備用區(qū)塊地址儲(chǔ)存區(qū)SA所儲(chǔ)存的備用區(qū)塊地址為B30、I_02的備用區(qū)塊地址儲(chǔ)存區(qū)SA所儲(chǔ)存的備用區(qū)塊地址為B29...?;蚴且噪S機(jī)的方式,都是可以實(shí)行的。同樣的,此壞塊映射表也可以不需要依照順序儲(chǔ)存。
然而上述的實(shí)施例以按照順序的方式來儲(chǔ)存映射表的方式可帶來一個(gè)好處。一般來說,當(dāng)閃存在初始時(shí)可以先作一次完全的擦除,也就是說閃存所有的儲(chǔ)存單元都是例如邏輯1的狀態(tài)。因此要寫入文件的時(shí)候,便可以按照地址將某些區(qū)段(某個(gè)區(qū)塊內(nèi)的某幾頁)其部分改為邏輯0的狀態(tài)。但是若要編輯文件,也就是原本已經(jīng)儲(chǔ)存好的文件要編輯時(shí),原本被改為邏輯0的部分是無法再次變更為邏輯1。然而除了擦除的時(shí)間遠(yuǎn)大于寫入的時(shí)間外,由于寫入是以頁來計(jì)算,擦除是以區(qū)塊來計(jì)算。因此假設(shè)使用者要編輯的文件只占了2頁,其它存在此區(qū)塊的數(shù)據(jù)便需要一并擦除。因此在現(xiàn)有技術(shù)中一般文件編輯完成后,會(huì)將整個(gè)區(qū)塊中除了編輯的文件之外的數(shù)據(jù)都放入例如電腦的內(nèi)存中,再將區(qū)塊作擦除后,再將儲(chǔ)存在內(nèi)存內(nèi)的區(qū)塊數(shù)據(jù)以及該編輯過的文件寫入。
然而若以本發(fā)明實(shí)施例的方式來實(shí)施時(shí),便可以清楚的界定哪些部分是未使用的備用區(qū)塊,例如本實(shí)施例便有6個(gè)備用區(qū)塊未使用B25~B30,因此可以作為數(shù)據(jù)交換區(qū)。假設(shè)要編輯的文件存于B17內(nèi)的第5頁,當(dāng)要編輯的文件編輯完成后,將該編輯完成的文件以及除了該文件之外的整個(gè)區(qū)塊B17的數(shù)據(jù)寫入到備用區(qū)塊B25。接下來擦除該區(qū)塊B17后再將B25的資料寫入B17。若不幸在寫入B17時(shí)斷電,可以實(shí)現(xiàn)數(shù)據(jù)復(fù)原的功能。另外此交換區(qū)可以依序使用,假設(shè)這一次使用區(qū)塊B25作交換區(qū),下一次便可以使用B26,接下來使用B27...。以如此的方式依序循環(huán)的使用與擦除備用區(qū)塊,可以平均的使用到備用區(qū)塊。由于備用區(qū)塊被平均的使用,因此可以使得備用區(qū)塊的損壞機(jī)率較低。
若以上述實(shí)施例中按順序遞增的方式儲(chǔ)存,可以有另一實(shí)施例能進(jìn)一步減少壞塊映射表的存儲(chǔ)容量。以電路來說,是類似圖2的電路實(shí)施例。然而本實(shí)施例圖6中除了原圖2就有的閃存區(qū)塊61、控制器601、接口電路600以及壞塊映射表602之外,還多加了一個(gè)寄存器603用于提供第一個(gè)備用區(qū)塊B21的地址。閃存區(qū)塊61仍然是以20個(gè)儲(chǔ)存區(qū)塊611(B01~B20)以及10個(gè)備用區(qū)塊612(B21~B30)作為例子。由于電路以圖6的方式實(shí)施,壞塊映射表602便可以以圖7的方式實(shí)施,只需設(shè)置損壞區(qū)塊地址儲(chǔ)存區(qū),而不設(shè)置備用區(qū)塊地址儲(chǔ)存區(qū)。
請(qǐng)參考圖6與圖7,同樣的,例如此裝置是一個(gè)USB隨身碟,接口電路600即USB接口電路。同樣假設(shè)第8個(gè)與第15個(gè)儲(chǔ)存區(qū)塊是損壞的區(qū)塊。與上一實(shí)施例相同的方式,在啟動(dòng)時(shí),控制器601先掃描所有儲(chǔ)存區(qū)塊并將損壞的區(qū)塊的地址儲(chǔ)存在壞塊映射表。因此,壞塊映射表602的第1個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_00儲(chǔ)存第8個(gè)儲(chǔ)存區(qū)塊的地址。壞塊映射表602的第2個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_01儲(chǔ)存第15個(gè)儲(chǔ)存區(qū)塊的地址。
舉例來說,例如使用者通過電腦要對(duì)此隨身碟作存取的操作時(shí),使用者通過操作系統(tǒng)Windows的資源管理器將文件拖至該隨身碟中。此時(shí),通過接口電路600傳送指令至控制器601告知要儲(chǔ)存文件,并且告知將要儲(chǔ)存到的例如第8個(gè)儲(chǔ)存區(qū)塊的地址。此時(shí)控制器601便會(huì)開始檢查閃存區(qū)塊61內(nèi)部的第8個(gè)儲(chǔ)存區(qū)塊B08。當(dāng)控制器601發(fā)現(xiàn)此區(qū)塊為損壞時(shí),便開始查壞塊映射表602內(nèi)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_00~BA_09,查詢是否有與第8個(gè)儲(chǔ)存地址B08相符合的地址。當(dāng)控制器601查詢到第8個(gè)儲(chǔ)存區(qū)塊B08的地址在第0個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_00時(shí),便開始讀取寄存器603內(nèi)所儲(chǔ)存的第1個(gè)備用區(qū)塊的地址。并將此地址值加上0作為存取區(qū)塊地址。控制器601根據(jù)此存取區(qū)塊地址找出備用區(qū)塊B21,再檢查備用區(qū)塊B21是否為損壞的區(qū)塊。當(dāng)控制器601確定B21為可用的區(qū)塊(非損壞),則控制接口電路600將數(shù)據(jù)儲(chǔ)存在第一個(gè)備用區(qū)塊B21。
同樣的以上面實(shí)施例的例子說明。當(dāng)使用者通過電腦操作系統(tǒng)Windows的資源管理器將一個(gè)較大的文件拖曳至隨身碟中。此時(shí),通過接口電路600傳送指令至控制器601告知要儲(chǔ)存文件,并且告知將要儲(chǔ)存到的例如第10~15個(gè)儲(chǔ)存區(qū)塊B10~B15的地址。此時(shí)控制器601便依序根據(jù)這些地址開始搜尋第10~15個(gè)儲(chǔ)存區(qū)塊B10~B15是否為壞塊,若不是壞塊,則將數(shù)據(jù)儲(chǔ)存至該區(qū)塊。
假設(shè)搜尋至第12個(gè)儲(chǔ)存區(qū)塊B12發(fā)現(xiàn)此區(qū)塊為損壞的區(qū)塊時(shí),同樣的,控制器601會(huì)開始搜尋壞塊映射表602。此時(shí)由于第12個(gè)儲(chǔ)存區(qū)塊B12的地址并沒有儲(chǔ)存在壞塊映射表202中,因此,控制器601會(huì)將第12個(gè)儲(chǔ)存區(qū)塊B12的地址儲(chǔ)存至壞塊映射表602中第2個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_02,如圖7中的701。而控制器601便以第1個(gè)備用區(qū)塊的地址值加上2,也就是第3個(gè)備用區(qū)塊的地址作為新的存取區(qū)塊地址??刂破?01接下來檢查第3個(gè)備用區(qū)塊是否為損壞的區(qū)塊,假設(shè)沒有損壞,便將原本要儲(chǔ)存至第12個(gè)儲(chǔ)存區(qū)塊B12的數(shù)據(jù)存進(jìn)第3個(gè)備用區(qū)塊B23。
接下來,假設(shè)第13以及第14個(gè)區(qū)塊皆無損壞??刂破?01開始處理第15個(gè)儲(chǔ)存區(qū)塊B15。當(dāng)控制器601發(fā)現(xiàn)此區(qū)塊B15為損壞時(shí),查詢壞塊映射表602,查出B15的地址存于第1個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)BA_01,因此可以計(jì)算出其對(duì)應(yīng)的地址為寄存器所儲(chǔ)存的備用區(qū)塊的地址值加上1,也就是第二個(gè)備用區(qū)塊B22的地址。接下來控制器601便開始檢查第二個(gè)備用區(qū)塊B22是否為壞塊,若發(fā)現(xiàn)此區(qū)塊也為壞塊時(shí),繼續(xù)查詢壞塊映射表602,此時(shí)發(fā)現(xiàn)無法查出第2個(gè)備用區(qū)塊B22的地址時(shí),控制器601同樣的在壞塊映射表602中的損壞區(qū)塊地址儲(chǔ)存區(qū)BA_03儲(chǔ)存第2個(gè)備用區(qū)塊B22的地址,如圖7中的702。控制器201便以同樣的計(jì)算方式算出第4個(gè)備用區(qū)塊B24的地址代替第22個(gè)備用區(qū)塊B22的地址作為存取區(qū)塊地址??刂破?01根據(jù)存取區(qū)塊地址來檢查第4個(gè)備用區(qū)塊是否為損壞的區(qū)塊,假設(shè)沒有損壞,便將原本要儲(chǔ)存至第15個(gè)儲(chǔ)存區(qū)塊B15的數(shù)據(jù)存進(jìn)第4個(gè)備用區(qū)塊B24。
上述圖6的實(shí)施例為儲(chǔ)存的實(shí)施例,在讀取時(shí)的操作也相同,因此不加以贅述。而在本實(shí)施例中,可進(jìn)一步減少壞塊映射表的內(nèi)存使用量。同樣的,由于壞塊映射表以及寄存器所儲(chǔ)存的備用區(qū)塊起始地址是不需要更新的數(shù)據(jù),因此兩者都同樣適合存在閃存內(nèi)部。因此,本發(fā)明的實(shí)施例可以做到不需要任何形式的外加(或內(nèi)建)隨機(jī)存取內(nèi)存即可實(shí)施。
上述的裝置實(shí)施例僅為根據(jù)本發(fā)明的精神提出的一種實(shí)施例。本發(fā)明另外提出方法實(shí)施例。圖8為本發(fā)明實(shí)施例的一種閃存控制方法的流程圖,此方法流程圖為當(dāng)壞塊映射表為圖3實(shí)施例時(shí)的方法實(shí)施例。請(qǐng)參考圖8,首先,提供一壞塊映射表,其中壞塊映射表包括多個(gè)映射單元,每一映射單元包括損壞區(qū)塊地址儲(chǔ)存區(qū)以及備用區(qū)塊地址儲(chǔ)存區(qū)(步驟801)。初始時(shí),掃描所有儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址存于映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū),并從備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將配置的區(qū)塊的地址存于映射單元中的備用區(qū)塊地址儲(chǔ)存區(qū)(步驟802)。
接下來,當(dāng)要根據(jù)一存取區(qū)塊地址存取數(shù)據(jù)時(shí),判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊(步驟803)。上一步驟若判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞區(qū)塊時(shí),根據(jù)存取區(qū)塊地址尋找壞塊映射表內(nèi)的每一映射單元中損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址,試著找出與損壞區(qū)塊的地址相同的地址,以找出對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址作為存取區(qū)塊地址(步驟804),若找到則回到步驟803。
若在壞塊映射表內(nèi)無法找出與損壞區(qū)塊的地址相同的地址以找出對(duì)應(yīng)的存取區(qū)塊地址,則從未被使用的映射單元之中選擇一新的映射單元,將存取區(qū)塊地址存入該新增映射單元的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi),并從備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將其地址存于該新增映射單元中的備用區(qū)塊地址儲(chǔ)存區(qū),并且以其地址作為存取區(qū)塊地址(步驟805),回到步驟803。重復(fù)上述操作直至存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常的區(qū)塊,根據(jù)存取區(qū)塊地址存取數(shù)據(jù)(步驟806)。
當(dāng)壞塊映射表為圖7實(shí)施例時(shí),方法實(shí)施例便修正為圖9的流程圖。圖9為本發(fā)明另一實(shí)施例的一種閃存控制方法的流程圖。首先,提供一壞塊映射表以及一備用區(qū)塊的起始地址,其中壞塊映射表包括N個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū),每一損壞區(qū)塊地址儲(chǔ)存區(qū)可儲(chǔ)存一個(gè)損壞區(qū)塊的地址(步驟901)。初始化時(shí),掃描所有儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址依序儲(chǔ)存于未使用的損壞區(qū)塊地址儲(chǔ)存區(qū)(步驟902)。
接下來,當(dāng)要根據(jù)一存取區(qū)塊地址存取數(shù)據(jù)時(shí),判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊(步驟903)。上一步驟若判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞區(qū)塊時(shí),查詢損壞的區(qū)塊的地址是否儲(chǔ)存在損壞區(qū)塊地址儲(chǔ)存區(qū),若存在于第K個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)時(shí),輸出備用區(qū)塊起始地址加上K作為存取區(qū)塊地址,其中N、K為正整數(shù)且N>=K>=0(步驟904),回到步驟903。若在該壞塊映射表內(nèi)無法找出存取區(qū)塊地址,將存取區(qū)塊地址依序存入未使用的損壞區(qū)塊地址儲(chǔ)存區(qū),并按存入的損壞區(qū)塊地址儲(chǔ)存區(qū)的順序算出存取區(qū)塊地址(步驟905),回到步驟903。重復(fù)上述操作直至存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常的區(qū)塊,根據(jù)存取區(qū)塊地址存取數(shù)據(jù)(步驟906)。
綜上所述,本發(fā)明因采用較簡單的壞塊映射表。當(dāng)使用者存取時(shí),控制器先偵測儲(chǔ)存區(qū)塊是否為損壞區(qū)塊,若是損壞區(qū)塊則查表找出備用區(qū)塊,因此可避免使用者使用損壞的區(qū)塊。另外,由于壞塊映射表只須儲(chǔ)存損壞區(qū)塊的信息,也就是說其余未損壞的區(qū)塊不須儲(chǔ)存至表內(nèi),比起已知查找表必須儲(chǔ)存所有地址信息造成的內(nèi)存浪費(fèi),本發(fā)明的方法與裝置可使用更少的儲(chǔ)存空間,同樣可達(dá)到避免使用者使用損壞的區(qū)塊的功能。
雖然本發(fā)明已以較佳實(shí)施例公開如上,但其并非用于限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的變動(dòng)與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種閃存的控制裝置,該閃存包括多個(gè)區(qū)塊,該些區(qū)塊分為多個(gè)儲(chǔ)存區(qū)塊以及多個(gè)備用區(qū)塊,該裝置包括一壞塊映射表;以及一控制器,當(dāng)要根據(jù)一存取區(qū)塊地址存取一數(shù)據(jù)時(shí),判斷該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊,當(dāng)該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊時(shí),根據(jù)該存取區(qū)塊地址尋找該壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊地址來取代該存取區(qū)塊地址,重復(fù)上述操作直至該存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常區(qū)塊,根據(jù)最后得到的存取區(qū)塊地址存取該數(shù)據(jù)。
2.如權(quán)利要求1所述的閃存的控制裝置,其中該壞塊映射表包括多個(gè)映射單元,每一映射單元包括一損壞區(qū)塊地址儲(chǔ)存區(qū)以及一備用區(qū)塊地址儲(chǔ)存區(qū),該控制器查找該壞塊映射表以獲得備用區(qū)塊地址來取代該存取區(qū)塊地址時(shí),掃描每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址,找出對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代該存取區(qū)塊地址。
3.如權(quán)利要求2所述的閃存的控制裝置,其中該控制器在掃描每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址時(shí),如找到與該存取區(qū)塊地址相同的地址,則用該地址對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代該存取區(qū)塊地址。
4.如權(quán)利要求2或3所述的閃存的控制裝置,其中該控制器在掃描每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址時(shí),如無法找到與該存取區(qū)塊地址相同的地址,則從未被使用的所述映射單元之中選擇一新增映射單元,該控制器將該存取區(qū)塊地址存入該新增映射單元的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi),并從所述備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將其地址存于該新增映射單元中的該備用區(qū)塊地址儲(chǔ)存區(qū)。
5.如權(quán)利要求2所述的閃存的控制裝置,其中該控制器在初始化時(shí),掃描所有儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址存于該映射單元中的該損壞區(qū)塊地址儲(chǔ)存區(qū),并從所述備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將其地址存于該映射單元中的該備用區(qū)塊地址儲(chǔ)存區(qū)。
6.如權(quán)利要求1所述的閃存的控制裝置,還包括一寄存器,用于提供所述備用區(qū)塊的一備用區(qū)塊起始地址。
7.如權(quán)利要求6所述的閃存的控制裝置,其中該壞塊映射表包括N個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū),每一損壞區(qū)塊地址儲(chǔ)存區(qū)可儲(chǔ)存一個(gè)損壞的區(qū)塊的地址,該控制器查詢到該損壞區(qū)塊的地址儲(chǔ)存在第K個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)時(shí),將該備用區(qū)塊起始地址加上K輸出作為該存取區(qū)塊地址以找出對(duì)應(yīng)的備用區(qū)塊,其中N、K為正整數(shù)且N>=K>=0。
8.如權(quán)利要求7所述的閃存的控制裝置,其中該控制器在初始化時(shí),掃描所有該些儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址依序儲(chǔ)存于未使用的損壞區(qū)塊地址儲(chǔ)存區(qū)。
9.如權(quán)利要求7所述的閃存的控制裝置,該控制器判斷該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊,且于該壞塊映射表無法找出該存取區(qū)塊地址時(shí),該控制器將該存取區(qū)塊地址依序存入未使用的損壞區(qū)塊地址儲(chǔ)存區(qū)。
10.一種閃存的控制方法,該閃存包括多個(gè)區(qū)塊,這些區(qū)塊分為多個(gè)儲(chǔ)存區(qū)塊以及多個(gè)備用區(qū)塊,該方法包括提供一壞塊映射表;當(dāng)要根據(jù)一存取區(qū)塊地址存取一數(shù)據(jù)時(shí),判斷該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊;當(dāng)該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊時(shí),根據(jù)該存取區(qū)塊地址尋找該壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊的地址來取代該存取區(qū)塊地址;以及重復(fù)上述操作直至該存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常區(qū)塊,根據(jù)最后得到的存取區(qū)塊地址存取該數(shù)據(jù)。
11.如權(quán)利要求9所述的閃存的控制方法,其中該壞塊映射表包括多個(gè)映射單元,每一映射單元包括一損壞區(qū)塊地址儲(chǔ)存區(qū)以及一備用區(qū)塊地址儲(chǔ)存區(qū)。
12.如權(quán)利要求10所述的閃存的控制方法,其中當(dāng)該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊時(shí),根據(jù)該存取區(qū)塊地址尋找該壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊的地址來取代該存取區(qū)塊地址時(shí),包括以下操作掃描該壞塊映射表內(nèi)的每一映射單元中的該損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址,找出對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代該存取區(qū)塊地址。
13.如權(quán)利要求12所述的閃存的控制方法,其中在掃描壞塊映射表內(nèi)內(nèi)每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址時(shí),如找到與該存取區(qū)塊地址相同的地址,則用該地址對(duì)應(yīng)的備用區(qū)塊地址儲(chǔ)存區(qū)所儲(chǔ)存的備用區(qū)塊的地址取代該存取區(qū)塊地址。
14.如權(quán)利要求12或13所述的閃存的控制方法,其中在掃描壞塊映射表內(nèi)內(nèi)每一映射單元中的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi)所儲(chǔ)存的損壞區(qū)塊的地址時(shí),如無法找到與該存取區(qū)塊地址相同的地址,則從未被使用的所述映射單元之中選擇一新增映射單元,該控制器將該存取區(qū)塊地址存入該新增映射單元的損壞區(qū)塊地址儲(chǔ)存區(qū)內(nèi),并從所述備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將其地址存于該新增映射單元中的該備用區(qū)塊地址儲(chǔ)存區(qū)。
15.如權(quán)利要求11所述的閃存的控制方法,還包括初始化時(shí),掃描所有儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址存于該映射單元中的該損壞區(qū)塊地址儲(chǔ)存區(qū),并從所述備用區(qū)塊中選擇一個(gè)區(qū)塊配置,將其地址存于該映射單元中的備用區(qū)塊地址儲(chǔ)存區(qū)。
16.如權(quán)利要求10所述的閃存的控制方法,其中該壞塊映射表包括N個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū),每一損壞區(qū)塊地址儲(chǔ)存區(qū)可儲(chǔ)存一個(gè)損壞的區(qū)塊的地址。
17.如權(quán)利要求16所述的閃存的控制方法,還包括提供一備用區(qū)塊的初始地址。
18.如權(quán)利要求17所述的閃存的控制方法,其中當(dāng)該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊,根據(jù)該存取區(qū)塊地址尋找該壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊的地址來取代該存取區(qū)塊地址時(shí),包括以下操作當(dāng)查詢到該損壞區(qū)塊的地址儲(chǔ)存在第K個(gè)損壞區(qū)塊地址儲(chǔ)存區(qū)時(shí),將該備用區(qū)塊起始地址加上K輸出作為該存取區(qū)塊地址,其中N、K為正整數(shù)且N>=K>=0。
19.如權(quán)利要求18所述的閃存的控制方法,還包括初始化時(shí),掃描所有儲(chǔ)存區(qū)塊,將已經(jīng)損壞的區(qū)塊的地址依序儲(chǔ)存于未使用的損壞區(qū)塊地址儲(chǔ)存區(qū)。
20.如權(quán)利要求18所述的閃存的控制方法,還包括當(dāng)該存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞的區(qū)塊,且在該壞塊映射表內(nèi)無法找出該存取區(qū)塊地址時(shí),該控制器將該存取區(qū)塊地址依序存入未使用的損壞區(qū)塊地址儲(chǔ)存區(qū)。
全文摘要
一種閃存的控制裝置與方法。此閃存包括多個(gè)區(qū)塊,其中,這些區(qū)塊分為多個(gè)儲(chǔ)存區(qū)塊以及多個(gè)備用區(qū)塊。此控制裝置包括壞塊映射表以及控制器。當(dāng)要根據(jù)存取區(qū)塊地址存取數(shù)據(jù)時(shí),控制器判斷存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊是否為損壞的區(qū)塊。當(dāng)控制器判斷出存取區(qū)塊地址所對(duì)應(yīng)的區(qū)塊為損壞區(qū)塊時(shí),控制器根據(jù)存取區(qū)塊地址尋找壞塊映射表以找出對(duì)應(yīng)的備用區(qū)塊地址以取代存取區(qū)塊地址。接下來,控制器重復(fù)上述操作直至存取區(qū)塊地址所對(duì)應(yīng)的備用區(qū)塊為正常區(qū)塊后,根據(jù)存取區(qū)塊地址存取數(shù)據(jù)。
文檔編號(hào)G11C16/06GK1967504SQ20051012361
公開日2007年5月23日 申請(qǐng)日期2005年11月18日 優(yōu)先權(quán)日2005年11月18日
發(fā)明者陳泳成 申請(qǐng)人:凌陽科技股份有限公司