專利名稱::存取非易失性存儲(chǔ)器的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種存取非易失性存儲(chǔ)器的方法,特別涉及一種依據(jù)預(yù)先建立的區(qū)域的對(duì)照表存取非易失性存儲(chǔ)器的方法。
背景技術(shù):
:閃存具有低耗電量以及非易失性的優(yōu)點(diǎn),被廣泛地應(yīng)用于各種電子產(chǎn)品中。因?yàn)殚W存特有的抹除方式,所以需通過一對(duì)照表(lookuptable)來存取閃存,通常閃存會(huì)被分成多個(gè)區(qū)域(zone)進(jìn)行存取,每個(gè)區(qū)域需要各自的對(duì)照表,因此容量愈大的閃存就需要建立愈多份的對(duì)照表。相對(duì)于讀寫閃存的時(shí)間,建立一份對(duì)照表所需的時(shí)間是很長(zhǎng)的。閃存的每個(gè)區(qū)域由1024個(gè)區(qū)塊(block)所組成,一般僅使用1000個(gè)區(qū)塊來儲(chǔ)存數(shù)據(jù),其余的24個(gè)區(qū)塊則作為備用區(qū)塊,因?yàn)殚W存的特性只能由1寫成0,不能由0寫成1,所以需利用備用區(qū)塊來儲(chǔ)存新數(shù)據(jù),再變更對(duì)照表使得讀取舊數(shù)據(jù)的邏輯地址對(duì)應(yīng)到儲(chǔ)存新數(shù)據(jù)的備用區(qū)塊。公知技術(shù)中,建立閃存的對(duì)照表的方式有二種,第一種方式是當(dāng)一主機(jī)要存取閃存的不同區(qū)域時(shí),才建立存取該區(qū)域的對(duì)照表;第二種方式是在每次存取閃存前,預(yù)先建立所有區(qū)域的對(duì)照表儲(chǔ)存于一存儲(chǔ)器中。請(qǐng)參考圖1,圖1為主機(jī)10連接閃存30的示意圖。主機(jī)10包含一中央處理器12以及一隨機(jī)存取存儲(chǔ)器14。閃存30設(shè)置在一電子裝置20中,電子裝置20包含一控制器22以及一存儲(chǔ)器24。主機(jī)10存取閃存30時(shí),可通過USB接口與電子裝置20連接,主機(jī)10的中央處理器12傳送一邏輯地址給電子裝置20的控制器22,控制器22算出該邏輯地址對(duì)應(yīng)于閃存30的區(qū)域,并建立該區(qū)域的對(duì)照表儲(chǔ)存于存儲(chǔ)器24中,如此控制器22便可通過對(duì)照表存取閃存30,并將數(shù)據(jù)經(jīng)USB接口傳遞至主機(jī)的隨機(jī)存取存儲(chǔ)器14。請(qǐng)參考圖2,圖2為公知存取閃存30的流程圖。主機(jī)10存取電子裝置20的閃存30的步驟如下步驟110電子裝置20接收主機(jī)10存取閃存30的邏輯地址,并算出該邏輯地址對(duì)應(yīng)于閃存30的區(qū)域;步驟120判斷該邏輯地址所對(duì)應(yīng)的區(qū)域是否與儲(chǔ)存于存儲(chǔ)器24中的對(duì)照表所對(duì)應(yīng)的區(qū)域相同,若否,則進(jìn)行步驟130,若是,則進(jìn)行步驟140;步驟130建立該邏輯地址所對(duì)應(yīng)的區(qū)域的對(duì)照表,并將該對(duì)照表儲(chǔ)存在存儲(chǔ)器24中;步驟140控制器22依據(jù)儲(chǔ)存于存儲(chǔ)器24的對(duì)照表存取閃存30,將數(shù)據(jù)傳遞給主機(jī)10。在存取閃存30的過程中,如果中央處理器12存取閃存30的邏輯地址所對(duì)應(yīng)的區(qū)域改變時(shí),控制器22就需要重新建立該區(qū)域的對(duì)照表,也就是建立對(duì)照表的第一種方式。請(qǐng)參考圖3,圖3為圖2建立對(duì)照表的流程圖。圖2中步驟130建立對(duì)照表包含的步驟步驟210取得該邏輯地址所對(duì)應(yīng)的區(qū)域;步驟220讀取該區(qū)域中每一區(qū)塊的相對(duì)地址并儲(chǔ)存于存儲(chǔ)器24中;步驟230判斷該區(qū)域中每一區(qū)塊的地址是否都已被讀取,若是,則完成對(duì)照表的建立,若否,則重復(fù)步驟220。若是使用第二種方式建立對(duì)照表,則在每次存取閃存30前,就依據(jù)步驟210至步驟230建立閃存30所有區(qū)域的對(duì)照表,并儲(chǔ)存在存儲(chǔ)器24中。由上述可知,公知建立對(duì)照表的方式有二種,第一種方式是當(dāng)主機(jī)10要存取閃存30的某區(qū)域時(shí),才建立該區(qū)域的對(duì)照表,所以電子裝置20的存儲(chǔ)器24中只需儲(chǔ)存一份對(duì)照表,較省存儲(chǔ)器空間,也因此第一種方式較常被采用,但由于每次在變換存取區(qū)域時(shí)就需重新建立對(duì)照表,會(huì)影響主機(jī)10存取閃存30的速度。第二種方式是在每次存取閃存30前,預(yù)先建立閃存30中所有區(qū)域的對(duì)照表并儲(chǔ)存于電子裝置20的存儲(chǔ)器24中,雖然可節(jié)省變換存取區(qū)域時(shí)建立對(duì)照表的時(shí)間,但卻需要占用很多存儲(chǔ)器24的存儲(chǔ)器空間,增加制造電子裝置20的成本。
發(fā)明內(nèi)容因此本發(fā)明的主要目的在于提供一種存取非易失性存儲(chǔ)器的方法,預(yù)先建立所有區(qū)域的對(duì)照表儲(chǔ)存于該非易失性存儲(chǔ)器,以解決上述問題。一種存取非易失性存儲(chǔ)器的方法,該非易失性存儲(chǔ)器設(shè)置在一電子裝置中,該非易失性存儲(chǔ)器包含多個(gè)區(qū)域(zone),每一區(qū)域包含多個(gè)備用區(qū)塊(spareblock),該方法包含下列步驟(a)將每一區(qū)域的對(duì)照表(lookuptable)儲(chǔ)存在至少一備用區(qū)塊中;(b)該電子裝置取得一主機(jī)存取該非易失性存儲(chǔ)器的邏輯地址所對(duì)應(yīng)該非易失性存儲(chǔ)器的區(qū)域;(c)該電子裝置由該至少一備用區(qū)塊讀出步驟(b)取得的區(qū)域的對(duì)照表,并將該對(duì)照表儲(chǔ)存于該電子裝置的存儲(chǔ)器;以及(d)該主機(jī)依據(jù)儲(chǔ)存在該電子裝置的存儲(chǔ)器的對(duì)照表存取該非易失性存儲(chǔ)器。附圖簡(jiǎn)述圖1為主機(jī)連接閃存的示意圖。圖2為公知存取閃存的流程圖。圖3為圖1建立對(duì)照表的流程圖。圖4為本發(fā)明存取閃存的流程圖。圖5為主機(jī)存取閃存的示意圖。附圖符號(hào)說明10主機(jī)12中央處理器14隨機(jī)存取內(nèi)存20電子裝置22控制器24內(nèi)存30閃存34第一區(qū)塊36第二區(qū)塊具體實(shí)施方式有鑒于主機(jī)10每次在變更存取閃存30的區(qū)域時(shí),就必須費(fèi)時(shí)地建立新的對(duì)照表,影響主機(jī)10存取閃存30的速度,但若將閃存30所有區(qū)域的對(duì)照表一次建立儲(chǔ)存于電子裝置20的存儲(chǔ)器24中,又會(huì)占用存儲(chǔ)器24太多的存儲(chǔ)器空間,增加電子裝置20的制造成本,因此,本發(fā)明存取閃存的方法提供在主機(jī)10第一次讀取閃存30時(shí),將閃存30所有區(qū)域的對(duì)照表一次建立儲(chǔ)存于閃存30的備用區(qū)塊中,由于閃存30的非易失性,即使斷電后,對(duì)照表仍會(huì)保存在備用區(qū)塊中,所以當(dāng)主機(jī)10下次再存取閃存30或變更存取閃存30的區(qū)域時(shí),電子裝置20的控制器22只要直接由閃存30的備用區(qū)塊中讀取對(duì)照表至存儲(chǔ)器24即可,節(jié)省建立對(duì)照表的時(shí)間。閃存30的每一個(gè)區(qū)域都有備用區(qū)塊,而每一區(qū)域的對(duì)照表可分別儲(chǔ)存于該區(qū)域的備用區(qū)塊中,亦可以將所有區(qū)域的對(duì)照表都儲(chǔ)存在其中一區(qū)域的備用區(qū)塊中,當(dāng)主機(jī)10存取閃存30導(dǎo)致控制器22必須同步更新儲(chǔ)存在備用區(qū)塊的對(duì)照表,如此,對(duì)于閃存30而言,控制器22只要建立一次對(duì)照表,之后在主機(jī)10變換存取位置時(shí),即使因?yàn)檫壿嬑恢盟鶎?duì)應(yīng)使用的對(duì)照表不同亦可直接由閃存30的備用區(qū)塊中讀取,增加主機(jī)10存取閃存30的速度。請(qǐng)參考圖4,圖4為本發(fā)明存取閃存30的流程圖。當(dāng)主機(jī)10存取閃存30時(shí),利用閃存30的備用區(qū)塊來儲(chǔ)存主機(jī)10存取閃存30的對(duì)照表,因?yàn)橛砷W存30讀取對(duì)照表的速度遠(yuǎn)比建立對(duì)照表的速度快,可提升主機(jī)10存取閃存30的速度。此外,由于閃存30的非易失性,主機(jī)10只需在第一次存取閃存30時(shí)建立所有的對(duì)照表。本發(fā)明存取閃存30的方法如下列步驟步驟310判斷閃存30中是否已儲(chǔ)存所有區(qū)域的對(duì)照表,若否,通常表示主機(jī)10第一次存取閃存30,則進(jìn)行步驟320,若是,表示主機(jī)10曾存取閃存30,并已建立閃存30所有區(qū)域的對(duì)照表儲(chǔ)存于備用區(qū)塊中,則進(jìn)行步驟330;步驟320建立閃存30所有區(qū)域的對(duì)照表并儲(chǔ)存于備用區(qū)塊中,電子裝置20的控制器22分別對(duì)閃存30的每一區(qū)域讀取該區(qū)域的每一區(qū)塊的地址,并且在存儲(chǔ)器24中建立該區(qū)域的對(duì)照表,再寫入該區(qū)域的備用區(qū)塊或是其中一區(qū)域的備用區(qū)塊,直到閃存30所有區(qū)域的對(duì)照表都已建立完畢并儲(chǔ)存在備用區(qū)塊中;步驟330控制器22依據(jù)主機(jī)10傳來的邏輯地址算出該邏輯地址對(duì)應(yīng)于閃存30的區(qū)域;步驟340判斷步驟330中該邏輯地址對(duì)應(yīng)的區(qū)域與存儲(chǔ)器24中儲(chǔ)存的對(duì)照表對(duì)應(yīng)的區(qū)域是否相同,若否,表示控制器22必須更新存儲(chǔ)器24中對(duì)照表,如此主機(jī)10才可存取閃存30,進(jìn)行步驟350,若是,則進(jìn)行步驟360;步驟350由閃存30讀出該邏輯地址對(duì)應(yīng)的區(qū)域的對(duì)照表,更新存儲(chǔ)器24中的對(duì)照表;步驟360控制器22依據(jù)存儲(chǔ)器24中的對(duì)照表存取閃存30。請(qǐng)參考圖5,圖5為主機(jī)10存取閃存30的示意圖。以64MB的閃存30為例,可被分為4個(gè)區(qū)域(zone),每個(gè)區(qū)域的大小為16MB,一個(gè)區(qū)域中有1024個(gè)區(qū)塊(block),其中有1000個(gè)區(qū)塊作為數(shù)據(jù)區(qū)塊,剩余的24個(gè)區(qū)塊作為備用區(qū)塊,每個(gè)區(qū)塊的大小為16KB,區(qū)域的對(duì)照表儲(chǔ)存于備用區(qū)塊中,通常一區(qū)域的對(duì)照表的大小約為2KB,各區(qū)域的對(duì)照表可分別儲(chǔ)存在該區(qū)域的備用區(qū)塊,或儲(chǔ)存在其中某一區(qū)域的備用區(qū)塊中。假設(shè)一舊數(shù)據(jù)儲(chǔ)存在閃存30的區(qū)域1的一第一區(qū)塊34(數(shù)據(jù)區(qū)塊),因此主機(jī)10依據(jù)該舊數(shù)據(jù)的邏輯地址讀取區(qū)域1的對(duì)照表,再依據(jù)區(qū)域1的對(duì)照表將舊數(shù)據(jù)由第一區(qū)塊34讀出進(jìn)行改修,修改后的新數(shù)據(jù)本來應(yīng)將舊數(shù)據(jù)覆寫,但由于閃存30只能由1寫成0,不能由0寫成1,,所以必須利用一第二區(qū)塊36(備用區(qū)塊)來儲(chǔ)存新數(shù)據(jù),再將儲(chǔ)存于第一區(qū)塊34的舊數(shù)據(jù)抹除作為新的備用區(qū)塊,并且更新區(qū)域1的對(duì)照表,將該舊數(shù)據(jù)的邏輯地址指向第二區(qū)塊36。閃存30經(jīng)過主機(jī)10存取后,對(duì)照表的地址數(shù)據(jù)也會(huì)隨著變更,因此每一區(qū)域都要有各自的對(duì)照表,通常建立一區(qū)域的對(duì)照表需要數(shù)百個(gè)毫秒(ms)的時(shí)間,然而若是由備用區(qū)塊讀取預(yù)先建的對(duì)照表,則只要數(shù)十個(gè)微秒(us)的時(shí)間。由上述可知,存取閃存的不同區(qū)域時(shí),都需要該區(qū)域的對(duì)照表,若要重新建立相當(dāng)?shù)刭M(fèi)時(shí),因此在第一次存取閃存時(shí),就預(yù)先建立所有區(qū)域的對(duì)照表,儲(chǔ)存于閃存的備用區(qū)塊中,如此當(dāng)變換存取區(qū)域時(shí),就只要由備用區(qū)塊中將該區(qū)域的對(duì)照表讀出,而且由于閃存的非易失性,即使斷電后數(shù)據(jù)仍保存,因此對(duì)于每一閃存而言,都只需建立一次對(duì)照表,雖然對(duì)照表會(huì)占用閃存的一些空間,但對(duì)于閃存的存取速度卻有明顯的提升。相較于公知技術(shù),本發(fā)明存取閃存的方法在變換存取區(qū)域時(shí),不需重新建立對(duì)照表,只需由閃存的備用區(qū)塊中讀出對(duì)照表即可,因此所需時(shí)間由公知方法的數(shù)百個(gè)毫秒提升至數(shù)十個(gè)微秒。再者,公知的方法每次斷電后再啟動(dòng),也需要重新建立對(duì)照表,而本發(fā)明的方法只要在第一次啟動(dòng)時(shí)建立對(duì)照表,即使是斷電后再啟動(dòng),也只需由備用區(qū)塊中讀出對(duì)照表。建立閃存的對(duì)照表需要很長(zhǎng)的時(shí)間,一再的重復(fù)建立會(huì)降低存取速度,而將所有的對(duì)照表儲(chǔ)存于隨機(jī)存取存儲(chǔ)器中又會(huì)影響系統(tǒng)效能。因此,本發(fā)明的方法利用閃存來儲(chǔ)存對(duì)照表,除了節(jié)省建立對(duì)照表的時(shí)間,同時(shí)也節(jié)省隨機(jī)存取存儲(chǔ)器的空間,提升存取效率。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。權(quán)利要求1.一種存取非易失性存儲(chǔ)器的方法,該非易失性存儲(chǔ)器設(shè)置在一電子裝置中,該非易失性存儲(chǔ)器包含多個(gè)區(qū)域,每一區(qū)域包含多個(gè)備用區(qū)塊,該方法包含下列步驟(a)將每一區(qū)域的對(duì)照表儲(chǔ)存在至少一備用區(qū)塊中;(b)該電子裝置取得一主機(jī)存取該非易失性存儲(chǔ)器的邏輯地址所對(duì)應(yīng)該非易失性存儲(chǔ)器的區(qū)域;(c)該電子裝置由該至少一備用區(qū)塊讀出步驟(b)取得的區(qū)域的對(duì)照表,并將該對(duì)照表儲(chǔ)存在該電子裝置的存儲(chǔ)器;以及(d)該主機(jī)依據(jù)儲(chǔ)存在該電子裝置的存儲(chǔ)器的對(duì)照表存取該非易失性存儲(chǔ)器。2.如權(quán)利要求1所述的方法,其另包含判斷該非易失性存儲(chǔ)器中是否已儲(chǔ)存每一區(qū)域的對(duì)照表。3.如權(quán)利要求1所述的方法,其另包含判斷步驟(b)取得的區(qū)域是否與儲(chǔ)存在該電子裝置的存儲(chǔ)器的對(duì)照表的區(qū)域相同。4.如權(quán)利要求1所述的方法,其中,步驟(a)是將每一區(qū)域的對(duì)照表儲(chǔ)存在該區(qū)域的至少一備用區(qū)塊中。5.如權(quán)利要求1所述的方法,其中,步驟(a)是將每一區(qū)域的對(duì)照表儲(chǔ)存在該多個(gè)區(qū)域中的一區(qū)域的至少一備用區(qū)塊中。6.如權(quán)利要求1所述的方法,其中,該非易失性存儲(chǔ)器是閃存。7.一種裝置,用來實(shí)施如權(quán)利要求1所述的方法。全文摘要一種存取非易失性存儲(chǔ)器的方法,該非易失性存儲(chǔ)器設(shè)置在一電子裝置中,該非易失性存儲(chǔ)器包含多個(gè)區(qū)域,每一區(qū)域包含多個(gè)備用區(qū)塊,該方法包含下列步驟(a)將每一區(qū)域的對(duì)照表儲(chǔ)存在至少一備用區(qū)塊中;(b)該電子裝置取得一主機(jī)存取該非易失性存儲(chǔ)器的邏輯地址所對(duì)應(yīng)該非易失性存儲(chǔ)器的區(qū)域;(c)該電子裝置由該至少一備用區(qū)塊讀出步驟(b)取得的區(qū)域的對(duì)照表,并將該對(duì)照表儲(chǔ)存在該電子裝置的存儲(chǔ)器;以及(d)該主機(jī)依據(jù)儲(chǔ)存在該電子裝置的存儲(chǔ)器的對(duì)照表存取該非易失性存儲(chǔ)器。文檔編號(hào)G06F12/00GK1648875SQ200410003238公開日2005年8月3日申請(qǐng)日期2004年1月30日優(yōu)先權(quán)日2004年1月30日發(fā)明者陳平申請(qǐng)人:揚(yáng)智科技股份有限公司