專利名稱:恢復(fù)閃存的對(duì)照表的方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于一種內(nèi)存的工作方法,特別有關(guān)于一種閃存對(duì)照表的 恢復(fù)方法。
背景技術(shù):
一般系統(tǒng)在使用閃存都會(huì)參對(duì)照表(Look-up Table)做實(shí)體與邏輯 區(qū)塊的對(duì)應(yīng),這個(gè)對(duì)照表是在系統(tǒng)運(yùn)作時(shí)就必須維護(hù)好,它是一對(duì)一的 對(duì)應(yīng)關(guān)系,意思是一個(gè)邏輯區(qū)塊只能對(duì)應(yīng)到一個(gè)實(shí)體位置,不能發(fā)生對(duì) 應(yīng)紊亂的情況。以NAND Flash為例子,其抹除是以一個(gè)區(qū)塊(Block) 為單位,對(duì)照表也會(huì)是以區(qū)塊為單位來(lái)做對(duì)應(yīng),然而NAND Flash在寫數(shù) 據(jù)的單位卻是以頁(yè)(Page)為單位, 一個(gè)區(qū)塊分為好幾頁(yè),所以在寫入 數(shù)據(jù)的時(shí)候,如果尚未寫完整個(gè)區(qū)塊,就會(huì)有一時(shí)間片段是相同的邏輯 區(qū)塊對(duì)應(yīng)到新舊兩個(gè)不同的實(shí)體區(qū)塊,新的區(qū)塊是要取代原先舊的區(qū)塊, 但是尚未完成整個(gè)區(qū)塊數(shù)據(jù)的寫入或復(fù)制,如果在此時(shí)系統(tǒng)突然電源中 斷,系統(tǒng)重新供電后要再建立對(duì)照表時(shí)會(huì)遇到相同的邏輯區(qū)塊會(huì)對(duì)應(yīng)到 兩個(gè)不同實(shí)體區(qū)塊的狀況,如何在這兩個(gè)不同的實(shí)體區(qū)塊中選出正確的 那一個(gè),讓系統(tǒng)恢復(fù)到先前未發(fā)生斷電時(shí)的狀態(tài)是一個(gè)很重要的問(wèn)題。在NAND Flash的寫入單位為頁(yè),里面有預(yù)留一些的字節(jié)(Byte)作 為錯(cuò)誤更正或保留給系統(tǒng)使用, 一般512個(gè)位會(huì)有16個(gè)字節(jié)當(dāng)做這種用 途。其中部分作為錯(cuò)誤更正, 一部分記錄著這個(gè)實(shí)體位置對(duì)應(yīng)的邏輯區(qū) 塊。請(qǐng)參閱圖1所示,為不同的實(shí)體區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊示意圖, 當(dāng)遇到上述問(wèn)題時(shí),在建立對(duì)照表時(shí)會(huì)有兩個(gè)不同的實(shí)體區(qū)塊對(duì)應(yīng)到相 同邏輯區(qū)塊,但因新的區(qū)塊數(shù)據(jù)尚未完成,所以它的第一頁(yè)和最后一頁(yè) 所記錄的邏輯區(qū)塊是不同的,第一頁(yè)有記錄邏輯區(qū)塊,但是因?yàn)樯形磳?完,所以最后一頁(yè)應(yīng)該是空的。另一個(gè)舊的區(qū)塊因?yàn)樵缫淹瓿烧麄€(gè)區(qū)塊 的數(shù)據(jù),所以第一頁(yè)和最后一頁(yè)都對(duì)應(yīng)到相同的邏輯區(qū)塊。在建立對(duì)照 表時(shí),會(huì)將新的區(qū)塊抹除保留舊的區(qū)塊。承上所述,其說(shuō)明了不同的實(shí)體區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊,這樣的 方式會(huì)遺失先前在新區(qū)塊上的數(shù)據(jù),如果區(qū)塊的容量不大,這種數(shù)據(jù)遺 失或許可以忍受。但隨著技術(shù)的發(fā)展,閃存的區(qū)塊的容量愈做愈大,數(shù) 據(jù)壓縮比也愈來(lái)愈大,當(dāng)我們抹除新的區(qū)塊時(shí),數(shù)據(jù)的遺失相對(duì)來(lái)說(shuō)就 會(huì)讓人受不了。例如正在錄音或錄像時(shí)的斷電,可能會(huì)有數(shù)十分鐘的 影音數(shù)據(jù)不見,就會(huì)令人覺得奇怪。另外,如果突然斷電是發(fā)生在將舊的區(qū)塊抹除的時(shí)候,新舊區(qū)塊的 最后一頁(yè)都會(huì)有相同的邏輯區(qū)塊,這時(shí)候要判斷要使用那個(gè)區(qū)塊就會(huì)是 很大的問(wèn)題了,誤判的機(jī)率是一半。發(fā)明內(nèi)容當(dāng)遇到上述問(wèn)題時(shí),如果能將新舊兩個(gè)數(shù)據(jù)區(qū)的數(shù)據(jù)合成一個(gè),就 會(huì)比現(xiàn)有的技術(shù)保存更多的數(shù)據(jù),且又不會(huì)有數(shù)據(jù)遺失過(guò)多的問(wèn)題。如 果斷電是在抹除舊區(qū)塊時(shí)發(fā)生,便必須提供一個(gè)版本機(jī)制去知道那個(gè)區(qū) 塊是新的那個(gè)區(qū)塊是舊的。為達(dá)上述目的,本發(fā)明提供一種恢復(fù)閃存的對(duì)照表的方法,其特征 在于,當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同一邏輯區(qū)塊時(shí),判斷該第一區(qū)塊及該第二區(qū)塊何者為一新區(qū)塊何者為一舊區(qū)塊;另外考慮 到在寫入的程序中發(fā)生異常中止,不確定新區(qū)塊的數(shù)據(jù)是否已正確的被 寫入,所以必需提供第三區(qū)塊,該第三區(qū)塊對(duì)應(yīng)該新區(qū)塊中的頁(yè)次,依 序檢査該新區(qū)塊中的數(shù)據(jù)是否有誤,同時(shí)復(fù)制該新區(qū)塊中正確的數(shù)據(jù);當(dāng)該新區(qū)塊中的數(shù)據(jù)有誤而無(wú)法更正時(shí),該第三區(qū)塊停止復(fù)制該新區(qū)塊 中的數(shù)據(jù),而于該舊區(qū)塊中相對(duì)于該新區(qū)塊中發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù)的頁(yè)處,接著依序復(fù)制該舊區(qū)塊中的數(shù)據(jù);最后當(dāng)?shù)谌齾^(qū)塊的最后一頁(yè)完成數(shù)據(jù)的 寫入后,抹除該新區(qū)塊及該舊區(qū)塊,并將該第三區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊。 為達(dá)上述目的,本發(fā)明再提供一種恢復(fù)閃存的對(duì)照表的方法,其特 征在于,首先根據(jù)閃存的各區(qū)塊被寫入數(shù)據(jù)的先后順序,分別于各區(qū)塊 中設(shè)定一版本編號(hào);接著當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同 一邏輯區(qū)塊時(shí),判斷該第一區(qū)塊中最后一頁(yè)及該第二區(qū)塊中最后一頁(yè)是 否被寫過(guò);若該第一區(qū)塊及該第二區(qū)塊中最后一頁(yè)皆被寫過(guò),則根據(jù)該 第一區(qū)塊的版本編號(hào)及該第二區(qū)塊的版本編號(hào),判斷該第一區(qū)塊與該第 二區(qū)塊被寫入數(shù)據(jù)的先后順序;若該第一區(qū)塊比該第二區(qū)塊先被寫入資 料,則抹除該第一區(qū)塊并將該第二區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊;若該第二區(qū) 塊比該第一區(qū)塊先被寫入資料,則抹除該第二區(qū)塊并將該第一區(qū)塊對(duì)應(yīng) 至該邏輯區(qū)塊。為達(dá)上述目的,本發(fā)明再提供一種恢復(fù)閃存的對(duì)照表的方法,其特 征在于,首先根據(jù)閃存的各區(qū)塊被寫入數(shù)據(jù)的先后順序,分別于各區(qū)塊 中設(shè)定一版本編號(hào);當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同一邏 輯區(qū)塊時(shí),檢查該第一區(qū)塊的最后一頁(yè)及該第二區(qū)塊的最后一頁(yè)是否有 被寫過(guò),若該第一區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第一區(qū)塊為一新區(qū) 塊該第二區(qū)塊為一舊區(qū)塊,若該第二區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第二區(qū)塊為該新區(qū)塊該第一區(qū)塊為該舊區(qū)塊;提供一第三區(qū)塊,該第三 區(qū)塊對(duì)應(yīng)該新區(qū)塊中的頁(yè)次,依序檢查該新區(qū)塊中的數(shù)據(jù)是否有誤,同時(shí)復(fù)制該新區(qū)塊中正確的數(shù)據(jù);當(dāng)該新區(qū)塊中的數(shù)據(jù)有誤而無(wú)法更正時(shí), 該第三區(qū)塊停止復(fù)制該新區(qū)塊中的數(shù)據(jù),而于該舊區(qū)塊中相對(duì)于該新區(qū) 塊中發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù)的頁(yè)處,接著依序復(fù)制該舊區(qū)塊中的數(shù)據(jù);當(dāng)?shù)谌齾^(qū) 塊的最后一頁(yè)完成數(shù)據(jù)的寫入后,抹除該新區(qū)塊及該舊區(qū)塊,并將該第 三區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊;而若該第一區(qū)塊的最后一頁(yè)及該第二區(qū)塊的 最后一頁(yè)皆有被寫過(guò),則根據(jù)該第一區(qū)塊的版本編號(hào)及該第二區(qū)塊的版 本編號(hào),判斷該第一區(qū)塊與該第二區(qū)間被寫入數(shù)據(jù)的先后順序,并將該 第一區(qū)塊與該第二區(qū)塊中較晚被寫入的區(qū)塊對(duì)應(yīng)該邏輯區(qū)塊。透過(guò)本發(fā)明恢復(fù)閃存的對(duì)照表的方法去恢復(fù)對(duì)照表先前未斷電的狀 況,對(duì)于高容量區(qū)塊具有低數(shù)據(jù)遺失的優(yōu)點(diǎn)。特別是可攜式裝置在錄音 或錄像時(shí),若遇到斷電情況,采用舊方法的話,遺失數(shù)據(jù)量較大,而且 有可能出錯(cuò),但是用新方法,遺失數(shù)據(jù)少而且不會(huì)出錯(cuò)。為了能更進(jìn)一步了解本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)、手段及 功效,請(qǐng)參閱以下有關(guān)本發(fā)明的詳細(xì)說(shuō)明與附圖,相信本發(fā)明的目的、 特征與特點(diǎn),當(dāng)可由此得一深入且具體的了解,然而所附圖式僅提供參 考與說(shuō)明用,并非用來(lái)對(duì)本發(fā)明加以限制。
圖1為不同的實(shí)體區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊示意圖; 圖2為不同的實(shí)體區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊處理程序示意圖; 圖3為本發(fā)明恢復(fù)閃存的對(duì)照表的方法第一較佳實(shí)施例的步驟流程 圖;及圖4為本發(fā)明恢復(fù)閃存的對(duì)照表的方法第二較佳實(shí)施例的步驟流程圖。
具體實(shí)施方式
請(qǐng)參閱圖2所示,為不同的實(shí)體區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊處理程序 示意圖,當(dāng)有兩個(gè)不同的實(shí)體區(qū)塊(如圖2中所示新區(qū)塊及舊區(qū)塊)對(duì) 應(yīng)到相同邏輯區(qū)塊時(shí),本發(fā)明由于考慮到在寫入的程序中發(fā)生異常中止, 不確定新區(qū)塊的數(shù)據(jù)是否已正確的被寫入,所以必需提供一個(gè)全新的第 三區(qū)塊當(dāng)做是這個(gè)邏輯區(qū)塊對(duì)應(yīng)到的實(shí)體區(qū)塊,然后找先前的新區(qū)塊逐 頁(yè)讀出并檢查是否完全正確,若是完全正確,則表示這一頁(yè)是在斷電前 被寫入的,斷電并不影響其數(shù)據(jù)內(nèi)容,再將這一頁(yè)的內(nèi)容復(fù)制到第三區(qū) 塊上。 一直到新區(qū)塊的數(shù)據(jù)在做錯(cuò)誤更正時(shí)發(fā)生無(wú)法更正,或是新區(qū)塊 的數(shù)據(jù)是空白的為止。接下來(lái)在第三區(qū)塊上的數(shù)據(jù)來(lái)源就是舊區(qū)塊的數(shù) 據(jù),這樣數(shù)據(jù)才不會(huì)有遺失的現(xiàn)象。于是將舊區(qū)塊中的數(shù)據(jù)復(fù)制到第三 區(qū)塊。最后將新舊兩個(gè)區(qū)塊的數(shù)據(jù)都抹除,只保留第三區(qū)塊來(lái)對(duì)應(yīng)那個(gè) 邏輯區(qū)塊。接著請(qǐng)參閱圖3,為本發(fā)明恢復(fù)閃存的對(duì)照表的方法第一較佳實(shí)施例 的步驟流程圖。以NAND FLASH為例,假設(shè)NAND FLASH對(duì)照表的錯(cuò) 誤,是因?yàn)樵趯懶聟^(qū)塊某一頁(yè)時(shí)發(fā)生斷電,而使NAND FLASH中一第一 區(qū)塊及一第二區(qū)塊皆對(duì)應(yīng)至一邏輯區(qū)塊時(shí),首先判斷第一區(qū)塊及第二區(qū) 塊的最后一頁(yè)何者沒有被寫過(guò)(如步驟S301);若第一區(qū)塊中的最后一頁(yè) 沒有被寫過(guò),而第二區(qū)塊中的最后一頁(yè)有被寫過(guò),則第一區(qū)塊便為新區(qū) 塊,第二區(qū)塊為舊區(qū)塊(如步驟S305),若第一區(qū)塊中的最后一頁(yè)有被寫 過(guò),而第二區(qū)塊中的最后一頁(yè)沒有被寫過(guò),則第二區(qū)塊便為新區(qū)塊,第一區(qū)塊為舊區(qū)塊(如步驟S307)。在判斷出新區(qū)塊與舊區(qū)塊后(步驟S305或步驟S307后),便提供一 全新的第三區(qū)塊,其包括N頁(yè),由第一頁(yè)N二0開始寫數(shù)據(jù)(如步驟S309)。 接著判斷新區(qū)塊第N頁(yè)的資料是否有錯(cuò)(包括新區(qū)塊第N頁(yè)的數(shù)據(jù)不完 整或在做錯(cuò)誤更正時(shí)發(fā)生無(wú)法更正)或?yàn)榭瞻?如步驟S311),若無(wú)發(fā)生 錯(cuò)誤、沒有數(shù)據(jù)空白、或有錯(cuò)誤但已更正的情形,則復(fù)制新區(qū)塊的第N 頁(yè)到第三區(qū)塊的第N頁(yè)(如步驟S313);若新區(qū)塊第N頁(yè)發(fā)生錯(cuò)誤而無(wú) 法更正及有數(shù)據(jù)空白的情形,則復(fù)制舊區(qū)塊的第N頁(yè)到第三區(qū)塊的第N 頁(yè)(如步驟S315)。在完成第三區(qū)塊第N頁(yè)的數(shù)據(jù)的復(fù)制后(步驟S313或步驟S315后), 便判斷第N頁(yè)是否為第三區(qū)塊的最后一頁(yè)(如步驟S317);若第N頁(yè)不 是第三區(qū)塊的最后一頁(yè),則至第三區(qū)塊的下一頁(yè),N=N+1 (如步驟S319), 于步驟S319后返回歩驟S311繼續(xù)執(zhí)行;若第N頁(yè)是第三區(qū)塊的最后一 頁(yè),則抹除新區(qū)塊與舊區(qū)塊,保留第三區(qū)塊對(duì)應(yīng)前述的邏輯區(qū)塊(如步 驟S321)。藉上述的方法,可恢復(fù)較完整的數(shù)據(jù)區(qū)塊及正確的對(duì)照表。其 中新區(qū)塊第N頁(yè)的數(shù)據(jù)錯(cuò)誤更正,可利用錯(cuò)誤修正碼(ECC)來(lái)更正該 新區(qū)塊中的錯(cuò)誤數(shù)據(jù)。另外,如果NAND FLASH對(duì)照表的錯(cuò)誤時(shí)點(diǎn)是發(fā)生在,當(dāng)新區(qū)塊已 寫完,而要抹除掉舊的區(qū)塊時(shí)發(fā)生斷電的狀況,就會(huì)有兩個(gè)不同的實(shí)體 區(qū)塊對(duì)應(yīng)有相同的邏輯區(qū)塊,而且每個(gè)區(qū)塊的狀態(tài)都是完整的,第一頁(yè) 和最后一頁(yè)都記錄相同的邏輯區(qū)塊。因此必須提供一版本編號(hào),藉由參 考版本編號(hào)來(lái)決定那一個(gè)區(qū)塊是最新的,然后抹除舊的那一個(gè)區(qū)塊。而 版本編號(hào)則是記錄在每一頁(yè)多出來(lái)的字節(jié)中,可至少以兩個(gè)位(Bit)來(lái) 表示這個(gè)區(qū)塊的版本編號(hào),依序?yàn)镺O、 01、 10、 11、 00、 Ol...循環(huán)下去,藉此得知各區(qū)塊被寫入數(shù)據(jù)的順序,而供新舊區(qū)塊的判斷,同理推知, 不限于兩個(gè)位來(lái)表示區(qū)塊的版本編號(hào)。接著請(qǐng)參閱圖4,本發(fā)明恢復(fù)閃存的對(duì)照表的方法第二較佳實(shí)施例的步驟流程圖。同樣以NAND FLASH為例,首先根據(jù)NAND FLASH中各 區(qū)塊被寫入數(shù)據(jù)的順序,依序于各區(qū)塊設(shè)定一版本編號(hào)(如步驟S401)。 當(dāng)NAND FLASH中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)到同一邏輯區(qū)塊時(shí),便 判斷第一區(qū)塊的最后一頁(yè)與第二區(qū)塊的最后一頁(yè)是否皆被寫過(guò)(如步驟 S403);若第一區(qū)塊的最后一頁(yè)沒被寫過(guò),第二區(qū)塊的最后一頁(yè)被寫過(guò), 則可跳至圖3所示的步驟S305繼續(xù)執(zhí)行恢復(fù)對(duì)照表的步驟;若第二區(qū)塊 的最后一頁(yè)沒被寫過(guò),第一區(qū)塊的最后一頁(yè)被寫過(guò),則可跳至圖3所示 的步驟S307繼續(xù)執(zhí)行恢復(fù)對(duì)照表的步驟;若第一區(qū)塊的最后一頁(yè)與第二 區(qū)塊的最后一頁(yè)皆被寫過(guò),則根據(jù)第一區(qū)塊及第二區(qū)塊的版本編號(hào)判斷 第一區(qū)塊被寫入數(shù)據(jù)的順序是否早于第二區(qū)塊(如步驟S405),若第一區(qū) 塊被寫入數(shù)據(jù)的順序早于第二區(qū)塊,則表示第一區(qū)塊為較舊版本的區(qū)塊, 所以便抹除第一區(qū)塊,保留第二區(qū)塊為邏輯區(qū)塊的對(duì)應(yīng)(如步驟S407); 若第一區(qū)塊被寫入數(shù)據(jù)的順序晚于第二區(qū)塊,則表示第二區(qū)塊為較舊版 本的區(qū)塊,所以便抹除第二區(qū)塊,保留第一區(qū)塊為邏輯區(qū)塊的對(duì)應(yīng)(如 步驟S409)。藉上述的方法,可恢復(fù)較新的數(shù)據(jù)區(qū)塊及正確的對(duì)照表。綜上所述,藉由本發(fā)明恢復(fù)閃存的對(duì)照表的方法來(lái)恢復(fù)先前未斷電 的狀況,會(huì)比現(xiàn)有的技術(shù)保存更多的數(shù)據(jù),且又不會(huì)有數(shù)據(jù)遺失過(guò)多的 問(wèn)題,對(duì)于高容量區(qū)塊具有低數(shù)據(jù)遺失的優(yōu)點(diǎn)。以上所述,僅為本發(fā)明其中的較佳實(shí)施例而已,并非用來(lái)限定本發(fā) 明的實(shí)施范圍;即凡依本發(fā)明申請(qǐng)專利范圍所作的均等變化與修飾,皆 為本發(fā)明專利范圍所涵蓋。
權(quán)利要求
1. 一種恢復(fù)閃存的對(duì)照表的方法,其特征在于,步驟包括當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同一邏輯區(qū)塊時(shí),判斷該第一區(qū)塊及該第二區(qū)塊何者為一新區(qū)塊何者為一舊區(qū)塊;提供一第三區(qū)塊,以復(fù)制該新區(qū)塊中正確的數(shù)據(jù)至該第三區(qū)塊;該第三區(qū)塊中無(wú)法于該新區(qū)塊復(fù)制到正確數(shù)據(jù)的頁(yè)次,便于該舊區(qū)塊中相對(duì)于該新區(qū)塊中找不到正確數(shù)據(jù)的頁(yè)處,接著復(fù)制該舊區(qū)塊中的數(shù)據(jù);及當(dāng)?shù)谌齾^(qū)塊的最后一頁(yè)完成數(shù)據(jù)的寫入后,抹除該新區(qū)塊及該舊區(qū)塊,并將該第三區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊。
2、 如權(quán)利要求1所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于步 驟更包括逐頁(yè)檢査該新區(qū)塊中對(duì)應(yīng)該第三區(qū)塊的資料是否有誤; 若數(shù)據(jù)無(wú)誤,則復(fù)制該新區(qū)塊中的數(shù)據(jù)至該第三區(qū)塊; 若發(fā)現(xiàn)該新區(qū)塊中的數(shù)據(jù)有誤,則利用錯(cuò)誤修正碼(ECC)執(zhí)行錯(cuò)誤更正,并于錯(cuò)誤更正后繼續(xù)將該新區(qū)塊中的數(shù)據(jù)復(fù)制到該第三區(qū)塊;及若數(shù)據(jù)發(fā)生錯(cuò)誤又無(wú)法更正時(shí),便于該舊區(qū)塊中相對(duì)于該新區(qū)塊中 發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù)的頁(yè)處,接著復(fù)制該舊區(qū)塊中的數(shù)據(jù)到該第三區(qū)塊。
3、 如權(quán)利要求1所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該 閃存為一 NAND FLASH。
4、 如權(quán)利要求1所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于判 斷該第一區(qū)塊及該第二區(qū)塊何者為該新區(qū)塊何者為該舊區(qū)塊的步驟更包括檢查該第一區(qū)塊的最后一頁(yè)及該第二區(qū)塊的最后一頁(yè)是否有被寫過(guò),若該第一區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第一區(qū)塊為該新區(qū)塊該第二 區(qū)塊為該舊區(qū)塊,若該第二區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第二區(qū)塊 為該新區(qū)塊該第一區(qū)塊為該舊區(qū)塊。
5. 如權(quán)利要求1所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于步 驟更包括當(dāng)該第三區(qū)塊依序復(fù)制該新區(qū)塊中的資料時(shí),若發(fā)現(xiàn)該新區(qū) 塊中資料為空白,該第三區(qū)塊便于該舊區(qū)塊中相對(duì)于該新區(qū)塊中數(shù)據(jù)為 空白的頁(yè)處,接著依序復(fù)制該舊區(qū)塊中的數(shù)據(jù)。
6. 一種恢復(fù)閃存的對(duì)照表的方法,其特征在于,步驟包括 根據(jù)該閃存的各區(qū)塊被寫入數(shù)據(jù)的先后順序,分別于各區(qū)塊中設(shè)定一版本編號(hào);當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同一邏輯區(qū)塊時(shí),判斷 該第一區(qū)塊中最后一頁(yè)及該第二區(qū)塊中最后一頁(yè)是否被寫過(guò);若該第一區(qū)塊及該第二區(qū)塊中最后一頁(yè)皆被寫過(guò),則根據(jù)該第一區(qū) 塊的版本編號(hào)及該第二區(qū)塊的版本編號(hào),判斷該第一區(qū)塊與該第二區(qū)塊 被寫入數(shù)據(jù)的先后順序;若該第一區(qū)塊比該第二區(qū)塊先被寫入資料,則抹除該第一區(qū)塊并將 該第二區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊;及若該第二區(qū)塊比該第一區(qū)塊先被寫入資料,則抹除該第二區(qū)塊并將 該第一區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊。
7. 如權(quán)利要求6所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該 版本編號(hào)記錄于各區(qū)塊中每一頁(yè)多出來(lái)的字節(jié)中,以表示各區(qū)塊被寫入 數(shù)據(jù)的先后順序。
8. 如權(quán)利要求6所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該 版本編號(hào)利用每一頁(yè)的至少兩個(gè)位來(lái)記錄各區(qū)塊被寫入數(shù)據(jù)的先后順序。
9、 如權(quán)利要求6所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該閃存為一 NAND FLASH。
10、 一種恢復(fù)閃存的對(duì)照表的方法,其特征在于,步驟包括根據(jù)閃存的各區(qū)塊被寫入數(shù)據(jù)的先后順序,分別于各區(qū)塊中設(shè)定一版本編號(hào);當(dāng)該閃存中一第一區(qū)塊與一第二區(qū)塊對(duì)應(yīng)至同一邏輯區(qū)塊時(shí),檢查 該第一區(qū)塊的最后一頁(yè)及該第二區(qū)塊的最后一頁(yè)是否有被寫過(guò),若該第 一區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第一區(qū)塊為一新區(qū)塊該第二區(qū)塊為 一舊區(qū)塊,若該第二區(qū)塊中最后一頁(yè)沒有被寫過(guò),則該第二區(qū)塊為該新 區(qū)塊該第一區(qū)塊為該舊區(qū)塊;提供一第三區(qū)塊,以復(fù)制該新區(qū)塊中正確的數(shù)據(jù)至該第三區(qū)塊; 該第三區(qū)塊中無(wú)法于該新區(qū)塊復(fù)制到正確數(shù)據(jù)的頁(yè)次,便于該舊區(qū) 塊中相對(duì)于該新區(qū)塊中找不到正確數(shù)據(jù)的頁(yè)處,接著復(fù)制該舊區(qū)塊中的 數(shù)據(jù);當(dāng)?shù)谌齾^(qū)塊的最后一頁(yè)完成數(shù)據(jù)的寫入后,抹除該新區(qū)塊及該舊區(qū) 塊,并將該第三區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊;及若該第一區(qū)塊的最后一頁(yè)及該第二區(qū)塊的最后一頁(yè)皆有被寫過(guò),則 根據(jù)該第一區(qū)塊的版本編號(hào)及該第二區(qū)塊的版本編號(hào),判斷該第一區(qū)塊 與該第二區(qū)塊被寫入數(shù)據(jù)的先后順序,并將該第一區(qū)塊與該第二區(qū)塊中 較晚被寫入的區(qū)塊對(duì)應(yīng)該邏輯區(qū)塊。
11、 如權(quán)利要求10所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于 步驟更包括逐頁(yè)檢查該新區(qū)塊中對(duì)應(yīng)該第三區(qū)塊的資料是否有誤;若數(shù)據(jù)無(wú)誤,則復(fù)制該新區(qū)塊中的數(shù)據(jù)至該第三區(qū)塊;若發(fā)現(xiàn)該新區(qū)塊中的數(shù)據(jù)有誤,則利用錯(cuò)誤修正碼(ECC)執(zhí)行錯(cuò) 誤更正,并于錯(cuò)誤更正后繼續(xù)將該新區(qū)塊中的數(shù)據(jù)復(fù)制到該第三區(qū)塊; 及若數(shù)據(jù)發(fā)生錯(cuò)誤又無(wú)法更正時(shí),便于該舊區(qū)塊中相對(duì)于該新區(qū)塊中 發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù)的頁(yè)處,接著復(fù)制該舊區(qū)塊中的數(shù)據(jù)到該第三區(qū)塊。
12、 如權(quán)利要求10所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于歩驟更包括當(dāng)該第三區(qū)塊依序復(fù)制該新區(qū)塊中的資料時(shí),若發(fā)現(xiàn)該新區(qū)塊中資料為空白,該第三區(qū)塊便于該舊區(qū)塊中相對(duì)于該新區(qū)塊中數(shù)據(jù) 為空白的頁(yè)處,接著依序復(fù)制該舊區(qū)塊中的數(shù)據(jù)。
13、 如權(quán)利要求10所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該版本編號(hào)記錄于各區(qū)塊中每一頁(yè)多出來(lái)的字節(jié)中,以表示各區(qū)塊被寫 入數(shù)據(jù)的先后順序。
14、 如權(quán)利要求10所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于 將該第一區(qū)塊與該第二區(qū)塊中較晚被寫入的區(qū)塊對(duì)應(yīng)該邏輯區(qū)塊的步驟 更包括若該第一區(qū)塊比該第二區(qū)塊先被寫入資料,則抹除該第一區(qū)塊并將 該第二區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊;及若該第二區(qū)塊比該第一區(qū)塊先被寫入資料,則抹除該第二區(qū)塊并將 該第一區(qū)塊對(duì)應(yīng)至該邏輯區(qū)塊。
15、 如權(quán)利要求10所述的恢復(fù)閃存的對(duì)照表的方法,其特征在于該閃存為一 NAND FLASH 。
全文摘要
當(dāng)閃存中一第一區(qū)塊及一第二區(qū)塊對(duì)應(yīng)到相同邏輯區(qū)塊時(shí),本發(fā)明將提供一第三區(qū)塊來(lái)復(fù)制該第一區(qū)塊及該第二區(qū)塊中較新且正確的數(shù)據(jù),并于第三區(qū)塊完成數(shù)據(jù)寫入后,將該第三區(qū)塊對(duì)應(yīng)該邏輯區(qū)塊,且抹除該第一區(qū)塊及該第二區(qū)塊。本發(fā)明同時(shí)提供各區(qū)塊一版本編號(hào),以供各區(qū)塊被寫入順序的判斷,藉此以將最新版本的區(qū)塊對(duì)應(yīng)至邏輯區(qū)塊。
文檔編號(hào)G06F12/06GK101281492SQ20071009034
公開日2008年10月8日 申請(qǐng)日期2007年4月4日 優(yōu)先權(quán)日2007年4月4日
發(fā)明者平 陳 申請(qǐng)人:揚(yáng)智科技股份有限公司