两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

閃存存取裝置及方法

文檔序號(hào):6401663閱讀:158來源:國知局
專利名稱:閃存存取裝置及方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種閃存存取裝置及方法。具體地說,本發(fā)明涉及一種閃存存取裝置及方法,其中對(duì)響應(yīng)處理器要求的寫操作而獲得訪問閃存的寫操作處理進(jìn)行最小化,并通過基于該寫操作的最小化處理的恢復(fù)操作的處理來防止出現(xiàn)系統(tǒng)錯(cuò)誤,由此在出現(xiàn)系統(tǒng)錯(cuò)誤時(shí)立即恢復(fù)系統(tǒng)并最小化閃存的性能變差。
背景技術(shù)
通常,由于閃存是允許快速存取并具有低消耗的非易失性、可編程存儲(chǔ)器,因此被廣泛用于包括移動(dòng)設(shè)備,如移動(dòng)電話和個(gè)人數(shù)據(jù)助理(PDA)的嵌入式系統(tǒng)中。
在這樣一種閃存中,可以以與現(xiàn)有RAM、非易失存儲(chǔ)裝置、磁盤裝置等相同的方式來隨機(jī)存取存儲(chǔ)在特定位置的數(shù)據(jù)。但是與現(xiàn)有存儲(chǔ)裝置相反,當(dāng)數(shù)據(jù)被修改或刪除后,要以塊為基礎(chǔ)來存取該數(shù)據(jù)。
也就是說,在閃存中,存取是根據(jù)在讀/寫操作期間立即從中檢索數(shù)據(jù)或?qū)懭霐?shù)據(jù)的塊,以及包括多個(gè)塊并能通過一次刪除操作就被擦除的單元來獲得的。作為根據(jù)閃存的存取特性有效管理數(shù)據(jù)的方法,塊(或扇區(qū))重新映射機(jī)制被廣泛采用。
塊(或扇區(qū))重新映射機(jī)制采用通過映射表寫入閃存的特定數(shù)據(jù)的物理塊號(hào)碼(以下稱為“PBN”)和邏輯塊號(hào)碼(以下稱為“LBN”)之間的映射信息,從而即使數(shù)據(jù)的PBN由于對(duì)數(shù)據(jù)的修改或刪除而改變,也能用相同的LBN來存取該數(shù)據(jù)。
在現(xiàn)有的塊重新映射機(jī)制中,無論何時(shí)執(zhí)行處理器要求的寫、刪除和修改操作,都應(yīng)當(dāng)更改寫入映射表中的閃存狀態(tài)信息。因此,存在一個(gè)問題,即由于這種反復(fù)的寫操作而降低了閃存的性能。
為了解決這個(gè)問題,已經(jīng)提出了一種控制閃存的方法。圖1A-1D示出了閃存的塊視圖,以說明根據(jù)控制閃存的建議方法的操作過程。
該方法公布于在前公布的韓國專利申請(qǐng)文獻(xiàn)No.1999-0041835 “FlashMemory and Method of controlling the Same”中。圖1C和1D示出了物理單元的結(jié)構(gòu)。
每個(gè)單元都具有標(biāo)題或擦除單元標(biāo)題(“EUH”)以及塊配置映射(以下稱為“BAM”),并實(shí)際上將數(shù)據(jù)存儲(chǔ)在其中。有關(guān)標(biāo)題的各種元信息存儲(chǔ)在標(biāo)題中,有關(guān)屬于特定單元的塊的信息(邏輯塊號(hào)碼、狀態(tài)等等)寫入BAM中。
如果對(duì)閃存特定LBN 3最初請(qǐng)求一個(gè)寫操作,則通過圖1A所示的LBN-對(duì)-LUN表搜索對(duì)于給定LBN 3的邏輯單元號(hào)碼(以下稱為“LUN”)2。然后,當(dāng)確定LUN 2時(shí),通過圖1B所示的LUN-對(duì)-PUN表來搜索物理單元號(hào)碼(以下稱為“PUN”)。
當(dāng)以該方式確定PUN1時(shí),通過對(duì)應(yīng)于PUN 1的BAM來搜索當(dāng)前可寫PBN,待通過寫操作寫入的數(shù)據(jù)被寫到查找出的PBN 1中。然后,LBN 3和狀態(tài)信息“有效”被寫到對(duì)應(yīng)于PBN 1的BAM的第一字段中。
在該方式中,如果在執(zhí)行LBN 4和5的操作之后請(qǐng)求更新寫入數(shù)據(jù)LBN 3的操作,則將配置新PBN時(shí)被更新的LBN 3的數(shù)據(jù)寫入重新分配給該數(shù)據(jù)的PBN 4中,LBN 3和狀態(tài)信息“有效”寫入對(duì)應(yīng)PBN 4的BAM的第四字段中。
然后,刪除先前寫入已寫入更新的LBN 3的PBN 1的數(shù)據(jù)以及已寫入對(duì)應(yīng)PBN 1的BAM的第一字段的LBN 3。也寫入狀態(tài)信息“已刪除”。
如果由于上述寫入和更新操作導(dǎo)致PUN1中沒有空閑塊可用,而PUN2是可用的空閑塊,則只將寫入PUN1中的有效數(shù)據(jù)復(fù)制到新PUN2中,以便更有效地使用閃存。
此外,根據(jù)建議解決該問題的韓國專利申請(qǐng)文獻(xiàn)No.2000-0059731“Remapping Control Method for Flash Memory and Structure of Flash MemoryThereof”,利用輪詢次數(shù)說明塊狀態(tài)信息,以便在發(fā)生錯(cuò)誤時(shí)立即從錯(cuò)誤中恢復(fù)(即,1111未定狀態(tài);1110(S0)、1100(S1)、1000(S2)有效狀態(tài);0000已刪除),從而系統(tǒng)通過利用輪詢次數(shù)的更改順序?qū)η皵?shù)據(jù)和新數(shù)據(jù)進(jìn)行分類,可以在發(fā)生錯(cuò)誤時(shí)立即以分類寫操作的最小值恢復(fù),如圖2A所示。
圖2B是顯示根據(jù)閃存的上述重新映射控制方法的閃存塊結(jié)構(gòu)的視圖。塊結(jié)構(gòu)包括寫入重要數(shù)據(jù)的數(shù)據(jù)區(qū)域、邏輯扇區(qū)(塊)號(hào)碼(“l(fā)sn”)區(qū)域、輪詢次數(shù)(“cnt”)區(qū)域、lsn/cnt糾錯(cuò)碼(“ecc lsn”)區(qū)域以及數(shù)據(jù)糾錯(cuò)碼(“ecc data”)區(qū)域。
圖2C說明了將狀態(tài)信息寫入各塊中、并在發(fā)生錯(cuò)誤時(shí)立即采用后面的數(shù)據(jù)來恢復(fù)該狀態(tài)信息的處理。
例如,如果在閃存的第5個(gè)塊之后發(fā)生錯(cuò)誤,存在兩個(gè)輪詢次數(shù)分別為1110和1100的有效數(shù)據(jù)集。由于1110在1100之前,因此如果采用的是以最新數(shù)據(jù)恢復(fù)的策略,則左邊的數(shù)據(jù)集被刪除。
如上所述,傳統(tǒng)的閃存控制方法也不提供防止由于反復(fù)的寫操作而導(dǎo)致閃存系統(tǒng)性能變差的方法。
因此,需要一種可以通過減少寫操作次數(shù)來提高閃存系統(tǒng)性能的閃存存取方法。

發(fā)明內(nèi)容
本發(fā)明致力于解決現(xiàn)有技術(shù)中提出的問題。本發(fā)明的一個(gè)方面是通過省略在處理器請(qǐng)求恢復(fù)操作處理期間將更改的閃存狀態(tài)信息寫入前PBN的寫操作處理,從而最小化寫操作處理。
本發(fā)明的另一個(gè)方面是根據(jù)所述寫操作的最小化處理,提供根據(jù)優(yōu)先級(jí)確定最新數(shù)據(jù)、并在初始化閃存處理期間即使在特定LBN中存在一個(gè)或多個(gè)數(shù)據(jù)集也進(jìn)行恢復(fù)的恢復(fù)操作處理。
本發(fā)明的另一個(gè)目的是通過所述寫操作的最小化處理及考慮該最小化處理的恢復(fù)操作處理,并通過允許在發(fā)生錯(cuò)誤時(shí)也進(jìn)行穩(wěn)定恢復(fù),最小化由于反復(fù)寫操作而導(dǎo)致的閃存性能變差,從而改進(jìn)閃存系統(tǒng)的整體性能。
根據(jù)為達(dá)到上述目的的本發(fā)明,由于考慮了恢復(fù)操作處理的寫操作處理,省略在處理器請(qǐng)求恢復(fù)操作處理期間將更改的閃存狀態(tài)信息寫入前PBN的寫操作處理。確定最新數(shù)據(jù),并在初始化閃存處理期間即使在特定LBN中存在一個(gè)或多個(gè)數(shù)據(jù)集也通過恢復(fù)操作處理進(jìn)行恢復(fù)。
為了通過恢復(fù)操作處理確定最新數(shù)據(jù),在初始化處理中將優(yōu)先級(jí)分配給較低的閃存塊。在根據(jù)其優(yōu)先級(jí)掃描各塊時(shí),將有關(guān)是否將數(shù)據(jù)寫入各塊LBN的信息寫入塊配置表的相關(guān)LBN中。
此外,最新數(shù)據(jù)被確定,通過將閃存預(yù)定單元中存在的閑置數(shù)據(jù)發(fā)送到新單元的存儲(chǔ)再利用處理來執(zhí)行恢復(fù)操作處理,從而刪除以前的數(shù)據(jù)。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種閃存存取裝置,包括其區(qū)域根據(jù)由預(yù)定塊組成的單元?jiǎng)澐值拈W存;以及閃存控制器。當(dāng)向閃存的特定邏輯塊號(hào)碼請(qǐng)求寫操作時(shí),閃存控制器在以前沒有寫入該邏輯塊的操作的情況下將數(shù)據(jù)和元信息寫入與具有該邏輯塊號(hào)碼的邏輯塊對(duì)應(yīng)的物理塊中,但是在以前存在寫操作的情況下,執(zhí)行將分配給該邏輯塊的數(shù)據(jù)和元信息寫入新物理單元的寫操作,而不改變寫入與該邏輯塊對(duì)應(yīng)的前物理塊中的閃存狀態(tài)信息。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種閃存存取方法,包括步驟如果處理器請(qǐng)求寫入閃存特定邏輯塊號(hào)碼的操作,則存取該閃存,并搜索可執(zhí)行該寫操作的當(dāng)前可寫入物理塊;在沒有寫入該邏輯塊的前寫操作的情況下將數(shù)據(jù)和元信息寫入與具有該邏輯塊號(hào)碼的邏輯塊對(duì)應(yīng)的物理塊中,但是在存在前寫操作的情況下,將該數(shù)據(jù)和元信息寫入與該邏輯塊對(duì)應(yīng)的新物理單元,而不改變寫入與該邏輯塊對(duì)應(yīng)的前物理塊中的閃存狀態(tài)信息。


通過結(jié)合附圖描述本發(fā)明的優(yōu)選實(shí)施例,本發(fā)明的上述及其它目的、優(yōu)點(diǎn)和特征將更加明顯,其中圖1A、1B、1C和1D示出了閃存塊的視圖,以說明根據(jù)傳統(tǒng)閃存控制方法的操作處理;圖2A是根據(jù)傳統(tǒng)的閃存重新映射控制方法的輪詢次數(shù)概念圖;圖2B是示出根據(jù)傳統(tǒng)的閃存重新映射控制方法的閃存塊結(jié)構(gòu)的視圖;圖2C是閃存的塊視圖,以說明在發(fā)生錯(cuò)誤時(shí)馬上將狀態(tài)信息寫入各塊并用后面的數(shù)據(jù)恢復(fù)該信息;圖3示出了根據(jù)本發(fā)明實(shí)施例的閃存存取裝置;圖4示出了根據(jù)本發(fā)明實(shí)施例的NAND型閃存的塊結(jié)構(gòu);圖5是說明根據(jù)本發(fā)明實(shí)施例的閃存寫操作處理的流程圖;圖6是說明根據(jù)本發(fā)明實(shí)施例的初始化閃存處理的流程圖;圖7是說明根據(jù)本發(fā)明實(shí)施例的再利用閃存處理的流程圖;和圖8A至8C示出了根據(jù)本發(fā)明實(shí)施例的存取閃存的處理。
具體實(shí)施例方式
下面,將參考附圖來詳細(xì)描述根據(jù)本發(fā)明的閃存存取裝置及方法。
首先,通過附圖中的例子來描述根據(jù)本發(fā)明的閃存結(jié)構(gòu)以及用于該閃存的閃存存取裝置的配置和操作。
圖3示出了根據(jù)本發(fā)明實(shí)施例的閃存存取裝置。
如圖3所示,根據(jù)本發(fā)明實(shí)施例的閃存存取裝置包括閃存100;閃存控制器300,用于存取閃存100,并且控制對(duì)應(yīng)寫入和更新操作(以下共同稱為“寫操作”)的、將指定邏輯塊的數(shù)據(jù)和元信息寫入可寫物理塊中的操作;系統(tǒng)處理器500,用于通過閃存控制器300產(chǎn)生控制指令,使寫入的數(shù)據(jù)從閃存100中讀出或數(shù)據(jù)寫入閃存100;以及RAM 700,用于緩存各種存儲(chǔ)在閃存100中的信息(例如有關(guān)邏輯和物理單元之間映射的信息、有關(guān)存取各邏輯塊的信息以及有關(guān)各單元的邏輯和物理塊之間映射的信息)以改進(jìn)系統(tǒng)性能。
此外,如果初始化處理或?qū)⒂行?shù)據(jù)發(fā)送到新單元的存儲(chǔ)再利用處理期間在特定LBN中存在一個(gè)或多個(gè)數(shù)據(jù)集,則閃存控制器300根據(jù)通過掃描處理獲得的優(yōu)先級(jí)來確定最新數(shù)據(jù),并執(zhí)行刪除數(shù)據(jù)而非最新數(shù)據(jù)的閃存狀態(tài)信息的恢復(fù)操作處理。
每個(gè)初始化和存儲(chǔ)再利用處理都包括掃描根據(jù)閃存100的較低塊在各塊中寫入的LBN的處理以及寫入“0”或“1”的處理,其中“0”或“1”表示在塊配置表(下面稱作“BAT”)中檢查掃描處理期間獲得的各個(gè)LBN中是否存在數(shù)據(jù)的結(jié)果值。
BAT存儲(chǔ)在RAM中,以保證對(duì)閃存100的有效存取,而且它是一個(gè)表示通過掃描處理獲得的各LBN中是否存在寫入的數(shù)據(jù)的表,以便在恢復(fù)操作處理期間確定特定LBN的數(shù)據(jù)集中的最新數(shù)據(jù)。
作為例子,在閃存初始化處理中,即掃描閃存100的物理塊并將掃描的物理塊中是否存在數(shù)據(jù)寫入BAT的相關(guān)LBN中,如果“1”寫入與選擇塊的LBN對(duì)應(yīng)的BAT的相關(guān)LBN字段中,則寫在被搜索的物理塊中的LBN數(shù)據(jù)是在前掃描處理期間被搜索的LBN的值,被搜索的物理塊的數(shù)據(jù)具有低于以前寫入該物理塊中的數(shù)據(jù)的優(yōu)先級(jí)。因此,被搜索的物理塊的閃存狀態(tài)信息更改為“已刪除”。
閃存100包括多個(gè)單元,而擦除操作以單元為基礎(chǔ)進(jìn)行。每個(gè)單元都劃分為多個(gè)塊,而讀取或?qū)懭腴W存100的操作以塊為基礎(chǔ)進(jìn)行。
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的NAND型閃存的塊結(jié)構(gòu)。
如圖4所示,NAND型閃存100的每個(gè)塊都包括主區(qū)110和備用區(qū)130。數(shù)據(jù)存儲(chǔ)在主區(qū)110中,而相關(guān)塊的元信息存儲(chǔ)在備用區(qū)130中。
作為例子,用于存儲(chǔ)元信息的備用區(qū)包括再分區(qū),其中分別寫入邏輯塊號(hào)碼(LBN)和閃存狀態(tài)信息(包括“有效”、“已刪除”或“無效”),還包括其中寫入糾錯(cuò)碼(“ECC”)的區(qū)域。
在NOR型閃存100的情況下,塊狀態(tài)信息可能存儲(chǔ)在每個(gè)單元的一個(gè)或多個(gè)主要塊中。
作為參考,根據(jù)本發(fā)明實(shí)施例的閃存存取裝置的所有模塊都可以包括硬件或軟件模塊,或其中一些模塊由軟件模塊組成。
因此,根據(jù)本發(fā)明實(shí)施例的由硬件和軟件構(gòu)成的閃存存取裝置沒有背離本發(fā)明的精神和范圍。很明顯,不背離本發(fā)明的精神和范圍的情況下,可以根據(jù)該結(jié)構(gòu)利用硬件和/或軟件進(jìn)行修正和更改。
下面根據(jù)附圖以示例方式說明采用閃存的閃存存取方法和本發(fā)明的閃存存取裝置。
在解釋本發(fā)明的閃存100的存取過程時(shí),將省略對(duì)讀取操作處理的詳細(xì)描述,因?yàn)樗c傳統(tǒng)處理相同。
因此,將首先說明根據(jù)本發(fā)明的考慮恢復(fù)操作處理的寫操作處理,然后說明用于在初始化處理期間執(zhí)行寫操作以進(jìn)行錯(cuò)誤恢復(fù)的錯(cuò)誤恢復(fù)操作處理。
此外,還要說明在僅將寫入閃存100的數(shù)據(jù)中的有效數(shù)據(jù)發(fā)送到新單元期間執(zhí)行寫操作以進(jìn)行錯(cuò)誤恢復(fù)的存儲(chǔ)再利用處理。
1.寫操作處理寫操作處理是搜索可用的物理塊,以便將根據(jù)處理器500請(qǐng)求的寫操作指定的邏輯塊數(shù)據(jù)寫入閃存100的特定物理塊中,并隨后將與此相關(guān)的數(shù)據(jù)和元信息寫入物理塊中。
圖5是說明根據(jù)本發(fā)明實(shí)施例的閃存寫操作處理的流程圖。
如圖5所示,如果邏輯塊地址和寫入命令一起輸入,則閃存控制器300首先通過LBN-LUN表根據(jù)指定的LBN搜索LUN,以確定其中將寫入數(shù)據(jù)的物理塊(S1),并通過搜索的LUN在邏輯和物理單元的映射表(例如LUN-PUN表)中搜索PUN(S2)。
然后,檢查BAM以搜索在被搜索的PUN的物理塊中當(dāng)前是否存在可寫入的物理塊(S3)。確定在構(gòu)成被搜索的PUN的物理塊中是否存在空閑塊(S4)。
如果確定沒有空閑塊,則執(zhí)行存儲(chǔ)再利用處理,即僅將寫入相關(guān)物理單元的數(shù)據(jù)中的特定邏輯塊的有效數(shù)據(jù)發(fā)送到新單元,進(jìn)程返回通過LUN-PUN表搜索PUN的例行程序(S5)。如果確定存在空閑塊,則將數(shù)據(jù)和元信息寫入被搜索的空閑塊中(S6)。
至于數(shù)據(jù)和元信息,該數(shù)據(jù)寫入塊的主區(qū)中,元信息的LBN寫入塊的備用區(qū)中,以保證相關(guān)數(shù)據(jù)的穩(wěn)定寫入。
當(dāng)這樣完成寫入數(shù)據(jù)和LBN的寫操作之后,根據(jù)寫操作的閃存100的狀態(tài)信息“有效”寫入塊的備用區(qū)中。
如果保證以塊為基礎(chǔ)的寫操作的可分性,則可以同時(shí)寫入數(shù)據(jù)和元信息。
2.初始化處理初始化處理保證閃存控制器300加載寫入閃存100的映射信息,以根據(jù)處理器500請(qǐng)求的操作有效存取閃存100。
下面,在本發(fā)明實(shí)施例中解釋的初始化處理定義為由于突發(fā)電源故障引起的初始化處理。將解釋在該初始化處理過程中由于突發(fā)電源故障而從錯(cuò)誤中恢復(fù)閃存系統(tǒng)的錯(cuò)誤恢復(fù)處理。
但是,本發(fā)明不僅限于由于突發(fā)電源故障而導(dǎo)致的初始化處理,還可以應(yīng)用于閃存100的所有初始化處理。
圖6是說明根據(jù)本發(fā)明實(shí)施例的初始化閃存處理的流程圖。
如圖6所示,對(duì)于每個(gè)單元,閃存控制器300首先加載所有待寫入閃存100標(biāo)題中的閃存信息,然后選擇單元的最低物理塊,以掃描閃存100(S11)。在對(duì)所選擇的物理塊給出優(yōu)先級(jí)后,掃描閃存100的物理塊。
因此,從所選擇的物理塊中讀取LBN(S12),并利用所讀取的LBN在BAT中搜索相關(guān)LBN字段(S13)。
然后,確定寫入被搜索的LBN字段的狀態(tài)值是否為“1”(S14)。如果確定該狀態(tài)值不為“1”,則將“1”寫入BAT作為L(zhǎng)BN的狀態(tài)值(S15)。隨后,確定所選擇的物理塊是否為相關(guān)單元的第一個(gè)塊(S16)。
如果確定所選擇的物理塊不是第一個(gè)塊,則移動(dòng)恰好在所選擇的物理塊之上的塊,反過來又選擇該塊(S17)。然后,進(jìn)程返回從選擇的較高塊中讀出LBN狀態(tài)值的例行程序。
現(xiàn)在返回S14,確定在BAT中搜索的LBN狀態(tài)值是否為“1”。如果確定LBN的狀態(tài)值為“1”,則相關(guān)塊的閃存狀態(tài)信息指示為“已刪除”(S18)。
當(dāng)以這種方式在掃描處理期間搜索其中寫入BAT中的相關(guān)LBN的狀態(tài)值是“1”的物理塊時(shí),寫入被搜索的物理塊中的LBN數(shù)據(jù)具有低于該塊中LBN以前被搜索數(shù)據(jù)的優(yōu)先級(jí)。因此,顯示狀態(tài)信息“已刪除”,以防止由于相同LBN的有效數(shù)據(jù)而導(dǎo)致的錯(cuò)誤。
3.再利用處理如果當(dāng)前在其中將寫入待進(jìn)行由處理器請(qǐng)求的寫操作的數(shù)據(jù)的相關(guān)單元中沒有可寫入的空閑塊,則再利用處理僅將寫入特定單元的有效數(shù)據(jù)復(fù)制到新單元中。
圖7是說明根據(jù)本發(fā)明實(shí)施例的再利用閃存處理的流程圖。
如圖7所示,閃存控制器300首先確定從中請(qǐng)求移動(dòng)寫入的有效數(shù)據(jù)的源單元,以及作為移入閑置數(shù)據(jù)的新單元的發(fā)送單元(S21)。
然后,選擇源單元的最低塊(S22),并讀出所選擇塊的LBN。
隨后,通過所讀取的LBN在BAT中搜索相對(duì)LBN,并確定搜索的LBN的狀態(tài)值是否為“1”(S24)。
如果確定LBN的狀態(tài)值不為“1”,則BAT中的LBN狀態(tài)值設(shè)置為“1”(S25),并將LBN數(shù)據(jù)復(fù)制到發(fā)送單元(S26)。
當(dāng)搜索LBN的前相關(guān)數(shù)據(jù),并確定LBN的狀態(tài)值為“1”時(shí),確定當(dāng)前選擇的塊是否為源單元的第一個(gè)塊(S27)。
如果確定所選擇的塊不是源單元的第一個(gè)塊,則移動(dòng)恰好在所選擇的物理塊之上的塊,反過來又選擇該塊(S28)。然后,進(jìn)程返回從選擇的較高塊中讀出LBN的例行程序。
如果確定所選擇的塊是源單元的第一個(gè)塊,則源單元的所有塊都被擦除(S29),并由此更改LUN-PUN的信息(S30)。
本發(fā)明的錯(cuò)誤恢復(fù)進(jìn)程這樣執(zhí)行,即通過將寫入源單元的有效數(shù)據(jù)復(fù)制到發(fā)送單元的處理,僅將源單元中現(xiàn)有特定邏輯塊的多個(gè)數(shù)據(jù)集中最低塊中的現(xiàn)有數(shù)據(jù)作為有效數(shù)據(jù)復(fù)制到發(fā)送單元。
下面結(jié)合附圖詳細(xì)說明這樣執(zhí)行的本發(fā)明的閃存存取方法。
圖8A至8C示出了根據(jù)本發(fā)明實(shí)施例的存取閃存的處理。
如圖8A所示,當(dāng)處理器500請(qǐng)求對(duì)特定LBN 3進(jìn)行寫操作時(shí),閃存控制器300查詢LBN-LUN映射表,并搜索將被執(zhí)行寫操作的LBN所屬的LUN,以存取閃存100的數(shù)據(jù)可寫物理塊。
當(dāng)通過LBN-LUN映射表確定LUN之后,通過查詢LUN-PUN映射表確定LUN的PUN。從該確定的PUN的BAM中搜索其中可以寫入由處理器500指定的LBN 3數(shù)據(jù)的物理塊位置。
當(dāng)這樣搜索當(dāng)前可寫的PBN時(shí),閃存控制器300將數(shù)據(jù)寫入被搜索的PBN 1的主區(qū),而將處理器指定的LBN 3寫入PBN 1的備用區(qū)(①)。
當(dāng)完全寫入數(shù)據(jù)和LBN 3之后,穩(wěn)定地結(jié)束了處理器500請(qǐng)求的寫操作。因此,為了顯示數(shù)據(jù)已經(jīng)寫入相關(guān)塊中,備用區(qū)的閃存狀態(tài)信息標(biāo)示為“有效”(②)。
如圖8B所示,如果處理器500請(qǐng)求寫操作,即在該寫操作過程中更新寫在閃存PBN 1中的LBN 3數(shù)據(jù),則閃存控制器300搜索當(dāng)前可寫的PBN以寫入待更新的數(shù)據(jù)。
搜索的結(jié)果是,如果搜索特定的PBN 4作為空閑塊,則待更新的數(shù)據(jù)寫入被搜索的PBN 4的主區(qū)中,而所配置的LBN 3寫入其備用區(qū)(①)。
然后,當(dāng)數(shù)據(jù)和LBN 3的寫操作完成后,穩(wěn)定結(jié)束了處理器500請(qǐng)求的寫操作。因此,為了顯示數(shù)據(jù)已經(jīng)寫入PBN 4中,備用區(qū)域的閃存狀態(tài)信息標(biāo)示為“有效”(②)。
如果系統(tǒng)由于執(zhí)行該寫操作的閃存100中的突發(fā)電源故障而關(guān)閉,然后由電源供電,則閃存控制器300執(zhí)行初始化閃存的初始化處理。
首先,為了存取閃存100中最近存取的塊,閃存控制器300選擇PBN 4,它是包括最新存取塊的單元的最低塊。
然后,讀出寫入選擇的PBN 4的備用區(qū)中的LBN 3,利用所讀出的LBN3檢查寫入BAT中LBN 3相關(guān)字段的狀態(tài)值。
檢查結(jié)果是,如果寫在BAT中的LBN 3狀態(tài)值不是“1”,則在BAT中的LBN 3相關(guān)字段中顯示狀態(tài)值“1”。隨后,執(zhí)行確定所選擇的PBN 4是否是該單元的第一個(gè)塊的掃描處理,并在移動(dòng)到恰好位于每個(gè)塊之上的較高塊時(shí)檢查該單元每個(gè)塊的狀態(tài)。
如果寫入BAT的LBN狀態(tài)值在該掃描處理期間是“1”,則意味著在前掃描處理期間搜索的是與有效數(shù)據(jù)相同的LBN。當(dāng)前根據(jù)掃描優(yōu)先級(jí)選擇的相關(guān)塊的備用區(qū)中寫入的閃存狀態(tài)信息顯示為“已刪除”。
也就是說,如圖8C所示,如果其中已寫入特定LBN 3的更新數(shù)據(jù)的PBN 4是最新被存取的,則在掃描閃存處理期間選擇第5個(gè)塊作為該單元的較低塊,以讀出LBN 3(①)。
利用讀出的LBN 3檢查寫入BAT中相關(guān)LBN 3的狀態(tài)值。由于LBN 3是最近被存取的較低塊,因此狀態(tài)值還沒有寫入并由此為“0”。因此,狀態(tài)值“1”寫入BAT中LBN的相關(guān)字段(②)。
然后,確定所選擇的塊是否為該單元的第一個(gè)塊。由于所選擇的塊是單元的較低塊,因此選擇恰好在所選擇的塊之上的較高塊。
因此,選擇PBN 3(③),利用由搜索所選擇的PBN 3獲得的LBN 5,檢查寫入BAT中LBN 5的相關(guān)字段中的狀態(tài)值。
根據(jù)上述檢查結(jié)果,與寫入選擇的PBN 3中的數(shù)據(jù)的LBN 5對(duì)應(yīng),狀態(tài)值“1”寫入BAT中LBN 5的字段中(④)。由于當(dāng)前選擇的PBN 3不是第一個(gè)塊,因此選擇恰好位于PBN 3之上的PBN 2。
然后,讀出寫入所選擇的PBN 2中的LBN 4(⑤)。在檢查與讀取LBN 4對(duì)應(yīng)而寫入BAT中LBN 4字段中的狀態(tài)值之后,狀態(tài)值“1”寫入該字段(⑥)。
接著,如果通過該掃描處理選擇PBN 1(⑦),則讀取寫入所選擇的PBN1中的LBN 3,并檢查寫入與BAT對(duì)應(yīng)的LBN 3字段中的狀態(tài)值(⑧)。
在該處理中,由于前掃描處理期間的信息寫入導(dǎo)致狀態(tài)值“1”已寫入BAT中LBN 3的相關(guān)字段,因此根據(jù)掃描優(yōu)先級(jí)確定,包括前LBN 3的PBN4是其中寫入了有效數(shù)據(jù)的塊,而PBN 1被確定為無效塊。
因此,寫入PBN 1備用區(qū)的閃存狀態(tài)信息更改為“已刪除”(⑨)。
由于通過上述掃描處理最小化了考慮本發(fā)明的錯(cuò)誤恢復(fù)處理的寫操作,因此最新數(shù)據(jù)在特定邏輯塊現(xiàn)有的有效數(shù)據(jù)中選擇,這允許從錯(cuò)誤中進(jìn)行恢復(fù)。
根據(jù)本發(fā)明,在更新閃存特定邏輯塊的數(shù)據(jù)時(shí)立即請(qǐng)求的寫操作次數(shù)被最小化,由此保證閃存系統(tǒng)的最大性能。
此外,由于在初始化閃存的處理中通過特定邏輯地址的數(shù)據(jù)的優(yōu)先級(jí)確定了有效數(shù)據(jù),因此即使出現(xiàn)突發(fā)電源故障導(dǎo)致的錯(cuò)誤也能穩(wěn)定地進(jìn)行錯(cuò)誤恢復(fù)。
盡管結(jié)合附圖中所示的本發(fā)明優(yōu)選實(shí)施例說明了本發(fā)明,本發(fā)明還有很多例子。本領(lǐng)域的技術(shù)人員也可以理解,在不脫離所附權(quán)利要求限定的本發(fā)明的精神和范圍的情況下,可以對(duì)其進(jìn)行各種修改和等效。因此,本發(fā)明的真正技術(shù)范圍應(yīng)當(dāng)由所附權(quán)利要求的技術(shù)實(shí)質(zhì)來限定。
權(quán)利要求
1.一種閃存存取裝置,包括其區(qū)域根據(jù)由預(yù)定塊組成的單元而劃分的閃存;以及閃存控制器,其中,當(dāng)對(duì)于閃存的邏輯塊號(hào)碼請(qǐng)求寫操作時(shí),如果對(duì)該邏輯塊以前沒有執(zhí)行寫操作,則所述閃存控制器被配置用來將數(shù)據(jù)和元信息寫入與具有該邏輯塊號(hào)碼的邏輯塊對(duì)應(yīng)的物理塊中;如果對(duì)該邏輯塊以前執(zhí)行了寫操作,則所述閃存控制器被配置用來執(zhí)行將分配給該邏輯塊的數(shù)據(jù)和元信息寫入新物理單元的寫操作,而不改變寫入與該邏輯塊對(duì)應(yīng)的前一物理塊中的閃存狀態(tài)信息。
2.如權(quán)利要求1所述的裝置,其中所述元信息是在寫入所述邏輯塊的數(shù)據(jù)之后而被寫入的。
3.如權(quán)利要求1所述的裝置,其中所述邏輯塊的數(shù)據(jù)和元信息是被同時(shí)寫入的。
4.如權(quán)利要求1所述的裝置,其中所述元信息包括所述邏輯塊號(hào)碼,所述閃存狀態(tài)信息表示所述物理塊為有效、已刪除或無效中的一種狀態(tài)。
5.如權(quán)利要求1所述的裝置,其中所述閃存控制器被配置用來執(zhí)行恢復(fù)操作,即根據(jù)所述寫操作在掃描處理期間為現(xiàn)有的邏輯塊號(hào)碼檢測(cè)物理塊,并通過在所檢測(cè)的物理塊中為該邏輯塊確定有效塊而從錯(cuò)誤中恢復(fù)。
6.如權(quán)利要求5所述的裝置,其中,所述掃描處理包括通過根據(jù)最新存取的較低塊來檢查所述閃存,為每個(gè)物理塊讀取邏輯塊號(hào)碼,以及檢查與該讀取的邏輯塊號(hào)碼對(duì)應(yīng)的塊配置表的該邏輯塊號(hào)碼的字段。
7.如權(quán)利要求6所述的裝置,其中,所述檢查塊配置表的邏輯塊號(hào)碼字段包括如果狀態(tài)值已為“0”,則將狀態(tài)值“1”寫入邏輯塊號(hào)碼字段中;如果狀態(tài)值為“1”,則檢測(cè)在掃描處理期間已通過在前的物理塊搜索的所述邏輯塊號(hào)碼。
8.如權(quán)利要求5所述的裝置,其中,所述根據(jù)確定有效塊的錯(cuò)誤恢復(fù)操作包括在所述掃描處理期間根據(jù)優(yōu)先級(jí)的設(shè)置在所檢測(cè)的物理塊中,為所述邏輯塊號(hào)碼確定最新訪問的物理塊作為有效塊,并將寫入其它物理塊中的閃存狀態(tài)信息重寫為已刪除。
9.如權(quán)利要求5所述的裝置,其中,所述錯(cuò)誤恢復(fù)操作是在初始化閃存期間執(zhí)行的。
10.如權(quán)利要求5所述的裝置,其中,所述錯(cuò)誤恢復(fù)操作是在再利用閃存期間執(zhí)行的,在再利用閃存期間,將寫入所述閃存預(yù)定單元的數(shù)據(jù)移動(dòng)到新單元。
11.一種閃存存取方法,包括步驟如果處理器為閃存的特定邏輯塊號(hào)碼請(qǐng)求寫操作,則存取該閃存,并搜索當(dāng)前可寫入的物理塊;以及如果以前沒有對(duì)該邏輯塊執(zhí)行寫操作,則將數(shù)據(jù)和元信息寫入與具有該邏輯塊號(hào)碼的邏輯塊對(duì)應(yīng)的物理塊中;如果以前對(duì)該邏輯塊執(zhí)行了寫操作,則將該數(shù)據(jù)和元信息寫入與該邏輯塊對(duì)應(yīng)的新物理單元,而不改變寫入與該邏輯塊對(duì)應(yīng)的在前物理塊中的閃存狀態(tài)信息。
12.如權(quán)利要求11所述的方法,其中,所述元信息是在寫入所述邏輯塊的數(shù)據(jù)之后而被寫入的。
13.如權(quán)利要求11所述的方法,其中,所述邏輯塊的數(shù)據(jù)和元信息是被同時(shí)寫入的。
14.如權(quán)利要求11所述的方法,其中,所述元信息包括所述邏輯塊號(hào)碼,并且所述閃存狀態(tài)信息表示所述物理塊的狀態(tài)為有效、已刪除或無效中的一種。
15.如權(quán)利要求11所述的方法,還包括恢復(fù)操作,即根據(jù)所述寫操作在掃描處理期間為現(xiàn)有的邏輯塊號(hào)碼檢測(cè)物理塊,并通過在所檢測(cè)的物理塊中為該邏輯塊確定有效塊而從錯(cuò)誤中恢復(fù)。
16.如權(quán)利要求15所述的方法,其中,所述掃描處理包括通過根據(jù)最新存取的較低塊來檢查所述閃存,為每個(gè)物理塊讀取邏輯塊號(hào)碼,并檢查與該讀取的邏輯塊號(hào)碼對(duì)應(yīng)的塊配置表的該邏輯塊號(hào)碼的字段;以及如果狀態(tài)值已為“0”,則將狀態(tài)值“1”寫入邏輯塊號(hào)碼的字段中;如果狀態(tài)值為“1”,則檢測(cè)在掃描處理期間已通過在前的物理塊搜索的所述邏輯塊號(hào)碼。
17.如權(quán)利要求15所述的方法,其中,所述錯(cuò)誤恢復(fù)操作步驟包括通過在再利用閃存期間檢測(cè)的特定邏輯塊號(hào)碼的數(shù)據(jù)中確定最新數(shù)據(jù)而從錯(cuò)誤中進(jìn)行恢復(fù),其中在再利用閃存期間,將寫入所述閃存預(yù)定單元的數(shù)據(jù)移動(dòng)到新單元。
全文摘要
本發(fā)明涉及一種閃存存取裝置和方法,通過利用寫操作的最小化處理以及考慮了該最小化處理的恢復(fù)操作處理最小化由于反復(fù)寫操作導(dǎo)致的閃存性能變差,以及允許即使在發(fā)生錯(cuò)誤時(shí)也進(jìn)行穩(wěn)定的恢復(fù),來提高閃存系統(tǒng)的總體性能。閃存存取裝置包括其區(qū)域根據(jù)由預(yù)定塊組成的單元而劃分的閃存;以及閃存控制器。當(dāng)對(duì)于閃存的特定邏輯塊號(hào)碼請(qǐng)求寫操作時(shí),閃存控制器在以前沒有寫入該邏輯塊的操作的情況下將數(shù)據(jù)和元信息寫入與具有該邏輯塊號(hào)碼的邏輯塊對(duì)應(yīng)的物理塊中,但是在以前存在寫操作的情況下,執(zhí)行將分配給該邏輯塊的數(shù)據(jù)和元信息寫入新物理單元的寫操作,而不改變寫入與該邏輯塊對(duì)應(yīng)的在前物理塊中的閃存狀態(tài)信息。
文檔編號(hào)G06F12/02GK1538456SQ20041003962
公開日2004年10月20日 申請(qǐng)日期2004年3月12日 優(yōu)先權(quán)日2003年3月31日
發(fā)明者鄭泰善, 權(quán)容錫, 金范洙 申請(qǐng)人:三星電子株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
廉江市| 全南县| 五大连池市| 教育| 田东县| 萨迦县| 平定县| 扬州市| 永德县| 长乐市| 咸宁市| 滕州市| 息烽县| 营山县| 贵德县| 武汉市| 阿克陶县| 大庆市| 安徽省| 三河市| 含山县| 灵武市| 渑池县| 龙胜| 武宁县| 禹城市| 崇仁县| 色达县| 固阳县| 营口市| 灵山县| 苗栗市| 胶州市| 罗平县| 临猗县| 泰来县| 六盘水市| 滦平县| 徐州市| 仙游县| 平谷区|