專利名稱::存儲(chǔ)介質(zhì)管理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及靜態(tài)存儲(chǔ)器領(lǐng)域,特別涉及一種存儲(chǔ)介質(zhì)管理方法。
背景技術(shù):
:現(xiàn)有對(duì)存儲(chǔ)介質(zhì)的管理方法一般是建立物理地址與邏輯地址的對(duì)照表,參照?qǐng)D1所示的邏輯塊與物理塊對(duì)照關(guān)系示意圖,通過對(duì)照表可查找與邏輯塊對(duì)應(yīng)的物理塊,當(dāng)有物理塊成為壞塊時(shí)可將其剔除不用。然而隨著存儲(chǔ)介質(zhì)的容量越來越大,對(duì)照表的數(shù)據(jù)量也越來越大,要在嵌入式系統(tǒng)的內(nèi)存中保存整個(gè)存儲(chǔ)介質(zhì)的對(duì)照表,幾乎是不實(shí)際的?,F(xiàn)有一種分段管理技術(shù),對(duì)存儲(chǔ)介質(zhì)的物理塊分段進(jìn)行管理。如圖2所示的邏輯塊與物理塊對(duì)照關(guān)系示意圖,設(shè)存儲(chǔ)介質(zhì)有m個(gè)物理塊,分為L個(gè)區(qū)域,每個(gè)區(qū)域N塊,分別對(duì)每個(gè)物理塊區(qū)域做物理地址與邏輯地址的對(duì)照表。只有使用到相應(yīng)邏輯地址區(qū)域的時(shí)候才在內(nèi)存中建立與該邏輯地址所在區(qū)域相應(yīng)的對(duì)照表,這樣就在內(nèi)存空間和效率之間取得了一個(gè)折衷。但這也引起了另一個(gè)問題,因?yàn)榇鎯?chǔ)空間被物理分割,各區(qū)域之間就被隔絕。根據(jù)存儲(chǔ)介質(zhì)的實(shí)際使用特點(diǎn),某些區(qū)域的物理塊經(jīng)常被使用,另外一些區(qū)域的物理塊卻^l少使用,于是會(huì)導(dǎo)致使用的不均衡,某些物理塊已經(jīng)達(dá)到壽命的極限,而某些物理塊卻還很年輕。當(dāng)一些物理塊已經(jīng)損壞時(shí),存儲(chǔ)數(shù)據(jù)不可靠,必須重新對(duì)整個(gè)存儲(chǔ)介質(zhì)進(jìn)行掃描,把壞物理塊剔除出來才能再次使用。針對(duì)以上問題,也有另一現(xiàn)有技術(shù)提出基于上述分段管理技術(shù),當(dāng)一個(gè)區(qū)域使用到一定程度的時(shí)候,將整個(gè)區(qū)域與其他區(qū)域中的數(shù)據(jù)進(jìn)行交換的技術(shù)。該技術(shù)可以解決上述問題,但產(chǎn)生交換區(qū)域的效率低下的問題,會(huì)有一段時(shí)間需要拷貝大量的數(shù)據(jù),導(dǎo)致存儲(chǔ)介質(zhì)性能不穩(wěn)定。
發(fā)明內(nèi)容本發(fā)明目的在于提供一種存儲(chǔ)介質(zhì)管理方法,用于管理大容量存儲(chǔ)介質(zhì)。本發(fā)明提供一種存儲(chǔ)介質(zhì)管理方法,包括分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟;將至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟;根據(jù)至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟。優(yōu)選地,上述分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟包括將邏輯地址劃分為至少兩個(gè)區(qū)域;對(duì)至少一邏輯區(qū)域中的邏輯地址,分別建立與存儲(chǔ)介質(zhì)的任一物理地址之間的對(duì)應(yīng)關(guān)系;將對(duì)應(yīng)關(guān)系形成至少兩個(gè)區(qū)域?qū)φ毡?。上述將至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟包括根據(jù)訪問命令計(jì)算指定邏輯塊屬于哪一區(qū)域;判斷內(nèi)存中的區(qū)域?qū)φ毡硎欠駥?duì)應(yīng)指定邏輯塊所屬區(qū)域;將指定邏輯塊所屬區(qū)域的區(qū)域?qū)φ毡砑虞d到內(nèi)存中,替換內(nèi)存中的區(qū)域?qū)φ毡怼I鲜鰧⒅辽僖粎^(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟還包括將其中一區(qū)域?qū)φ毡肀4嬖趦?nèi)存中的步驟。優(yōu)選地,分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟包括將邏輯地址劃分為至少兩個(gè)區(qū)域;對(duì)各區(qū)域中的邏輯地址,建立與存儲(chǔ)介質(zhì)任一物理地址之間對(duì)應(yīng)關(guān)系,形成完整對(duì)照表。上述將至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟包括將完整對(duì)照表保存在外部存儲(chǔ)介質(zhì)中;將完整對(duì)照表的地址保存在內(nèi)存中;根據(jù)訪問命令計(jì)算指定邏輯塊屬于哪一區(qū)域;根據(jù)完整對(duì)照表的地址找到完整對(duì)照表;將完整對(duì)照表中,指定邏輯塊所屬區(qū)域的部分對(duì)照表加載到內(nèi)存中。上述將對(duì)照表保存在外部存儲(chǔ)介質(zhì)中是指保存在至少一物理塊中,或是保存在至少一物理塊的冗余區(qū)中。優(yōu)選地,上述存儲(chǔ)介質(zhì)管理方法還包括定義至少一交換塊,建立交換塊的邏輯地址與物理地址對(duì)應(yīng)關(guān)系的步4《。上述根據(jù)至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟包括根據(jù)至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系,查找與寫命令指定邏輯地址對(duì)應(yīng)的物理地址;將寫命令要寫入的新數(shù)據(jù)寫到與交換塊對(duì)應(yīng)的物理地址中;將與寫命令指定邏輯地址對(duì)應(yīng)的物理地址中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到與交換塊對(duì)應(yīng)的物理地址中;建立交換塊與寫命令指定邏輯地址對(duì)應(yīng)的物理地址之間的對(duì)應(yīng)關(guān)系,建立寫命令指定邏輯地址與交換塊對(duì)應(yīng)的物理地址之間的對(duì)應(yīng)關(guān)系;擦除與交換塊對(duì)應(yīng)的物理地址。上述根據(jù)至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟還包括更新至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系,更新對(duì)照表的步驟。上述將與寫命令指定邏輯地址對(duì)應(yīng)的物理地址中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到與交換塊對(duì)應(yīng)的物理地址中包括將與寫命令指定邏輯地址對(duì)應(yīng)的物理地址與交換塊對(duì)應(yīng)的物理地址比較,得到不被寫命令指定寫入新數(shù)據(jù)的未指定地址;將未指定地址中的l丈據(jù)復(fù)制到與交換塊對(duì)應(yīng)的物理地址中。上述存儲(chǔ)介質(zhì)管理方法單獨(dú)使用一交換塊,或輪流使用至少一交換塊。本發(fā)明通過將存儲(chǔ)介質(zhì)的邏輯地址劃分多個(gè)區(qū)域,各區(qū)域分別組織對(duì)照表,實(shí)現(xiàn)占用極少量的內(nèi)存完成大容量存儲(chǔ)介質(zhì)的管理;本發(fā)明還利用交換塊實(shí)現(xiàn)各個(gè)區(qū)域之間的物理塊相互交換,從而消除了區(qū)域間磨損不均衡的問題,同時(shí)避免了整個(gè)區(qū)域數(shù)據(jù)的搬遷而導(dǎo)致的性能不穩(wěn)定問題,安全穩(wěn)定,易于實(shí)現(xiàn)。圖1是本發(fā)明一種現(xiàn)有技術(shù)的邏輯塊與物理塊對(duì)照關(guān)系示意圖;圖2是本發(fā)明另一種現(xiàn)有技術(shù)的邏輯塊與物理塊對(duì)照關(guān)系示意圖;圖3是本發(fā)明第一實(shí)施例的邏輯塊與物理塊對(duì)照關(guān)系示意圖;圖4是本發(fā)明第一實(shí)施例的邏輯塊與物理塊對(duì)照關(guān)系變化示意圖;圖5是本發(fā)明第二實(shí)施例寫命令的處理過程示意圖;圖6是本發(fā)明第二實(shí)施例的區(qū)域?qū)φ毡砉芾砹鞒淌疽鈭D。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。具體實(shí)施例方式參照?qǐng)D3,示出本發(fā)明第一實(shí)施例的邏輯塊與物理塊對(duì)照關(guān)系示意圖,本實(shí)施例應(yīng)用于閃存介質(zhì)(FLASH),在整個(gè)存儲(chǔ)介質(zhì)中作對(duì)照表,但僅在邏輯域?qū)Υ鎯?chǔ)介質(zhì)劃分多個(gè)區(qū)域,而在物理域不劃分區(qū)域,每個(gè)邏輯區(qū)域都可以對(duì)照整個(gè)存儲(chǔ)介質(zhì)的物理塊。當(dāng)訪問到某邏輯地址的時(shí)候,才把該邏輯地址所在區(qū)域的對(duì)照表力。載到內(nèi)存中。本實(shí)施例還設(shè)置交換塊(swap),通過共享交換塊實(shí)現(xiàn)物理塊的交換,從而消除物理塊磨損不均tf的問題。具體來說,設(shè)存儲(chǔ)介質(zhì)共有m個(gè)物理塊,將邏輯地址劃分為L個(gè)區(qū)域,分別是區(qū)域0、區(qū)域l……區(qū)域L,每個(gè)區(qū)域N個(gè)邏輯塊,每個(gè)邏輯塊分別與一個(gè)物理塊建立對(duì)照關(guān)系,例如區(qū)域Q的邏輯塊Q對(duì)應(yīng)物理塊1,區(qū)域1的邏輯塊X對(duì)應(yīng)物理塊y。再設(shè)置一邏輯交換塊,也對(duì)應(yīng)一物理塊z。形成如表l所示的邏輯塊與物理塊對(duì)照表:<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>表1接收到對(duì)存儲(chǔ)介質(zhì)的訪問命令后,本實(shí)施例對(duì)寫命令的處理過程參照?qǐng)D5包括如下步驟步驟Sll,收到對(duì)邏輯塊X寫入新數(shù)據(jù)的寫命令;步驟S12,計(jì)算邏輯塊X屬于哪個(gè)邏輯區(qū)域;步驟S13,將該邏輯區(qū)域的對(duì)照表加載到內(nèi)存;步驟S14,查對(duì)照表,才艮據(jù)邏輯塊X的邏輯地址查找到對(duì)應(yīng)的物理塊y;步驟S15,取預(yù)先定義的交換塊;步驟S16,將寫命令要寫入邏輯塊X的新數(shù)據(jù)寫到交換塊對(duì)應(yīng)的物理塊z中;步驟S17,將物理塊y中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到物理塊z中;步驟S18,將交換塊改為與物理塊y對(duì)應(yīng),將邏輯塊X改為與物理塊z對(duì)應(yīng);步驟S19,擦除交換塊對(duì)應(yīng)的物理塊y,寫過程結(jié)束。參照?qǐng)D4所示的經(jīng)過上述寫過程后,邏輯塊與物理塊對(duì)照關(guān)系變化示意圖,邏輯塊X中的原有數(shù)據(jù)和寫命令要寫入的新數(shù)據(jù)都寫入物理塊z中,而將交換塊從物理塊z改為物理塊y。同理,對(duì)每一個(gè)寫命令,都僅加載一個(gè)區(qū)域的對(duì)照表,使用交換塊寫入數(shù)據(jù),既實(shí)現(xiàn)了分區(qū)域管理存儲(chǔ)介質(zhì),減少占用內(nèi)存,又實(shí)現(xiàn)了物理塊的使用平衡,還無需對(duì)整個(gè)區(qū)域數(shù)據(jù)進(jìn)行搬遷。上述步驟S12,計(jì)算邏輯塊X屬于哪個(gè)邏輯區(qū)域,具體來說在對(duì)邏輯地址分區(qū)時(shí),每個(gè)邏輯區(qū)域的大小都是預(yù)先設(shè)定的,確定下來一般無需改變,如一個(gè)區(qū)域包括1024個(gè)邏輯塊。當(dāng)收到訪問命令后,本實(shí)施例可以通過邏輯地址來推算要訪問的塊屬于哪個(gè)邏輯區(qū)域。一個(gè)區(qū)域包括1024個(gè)邏輯塊為例,則可算出邏輯塊0到邏輯塊1023都屬于區(qū)域0,而邏輯塊1024至邏輯塊2047都屬于區(qū)域l,依此類推。上述步驟S13,將該邏輯區(qū)域的對(duì)照表加載到內(nèi)存,其中加載是指把對(duì)照表讀取到內(nèi)存中,具體加載方式見下文說明。上述步驟S16,將寫命令要寫入邏輯塊X的新數(shù)據(jù)寫到交換塊對(duì)應(yīng)的物理塊z中是采用現(xiàn)有的寫操作技術(shù)完成的,完成一個(gè)寫操作可以分為兩個(gè)步驟,一個(gè)是設(shè)備從主機(jī)接收數(shù)據(jù),存到設(shè)備的緩沖區(qū),然后從緩沖區(qū)把數(shù)據(jù)寫入flash。本實(shí)施例從寫命令中得知要對(duì)邏輯塊X寫入數(shù)據(jù),而邏輯塊X對(duì)應(yīng)物理塊y,物理塊y本身是存有原有數(shù)據(jù)的,根據(jù)閃存的特性,物理塊y是不能寫入數(shù)據(jù)的,必須把物理塊y擦除才可以再寫入數(shù)據(jù)。但一旦擦除物理塊y,原有數(shù)據(jù)就會(huì)丟失。因此不能直接把緩沖區(qū)的數(shù)據(jù)寫入物理塊y,而只能寫到交換塊對(duì)應(yīng)的物理塊z中。完成將緩沖區(qū)數(shù)據(jù)寫入交換塊的寫操作后,物理塊y和交換塊對(duì)應(yīng)的物理塊z中各保存了邏輯塊X的一部分?jǐn)?shù)據(jù),在以后的操作中是無法使用的,因此還需要把物理塊y中的原有數(shù)據(jù)搬遷到物理塊z中。至此,邏輯塊X的所有數(shù)據(jù)都保存在物理塊z中了,物理塊y中雖然存有原有數(shù)據(jù),但已經(jīng)無用了,就可以"J巴物理塊y〗察除。當(dāng)然也可以在物理塊y纟寮除以后,^!巴物理塊z中的所有數(shù)據(jù)重新拷貝回物理塊y,但這樣明顯效率4艮4氐。因此本實(shí)施例只是4巴物理塊y與物理塊z與邏輯塊的對(duì)應(yīng)關(guān)系交換一下,4巴物理塊y對(duì)應(yīng)交換塊,物理塊z對(duì)應(yīng)邏輯塊X,節(jié)省了一次數(shù)據(jù)搬遷的操作,提高了效率。上述步驟S17,將物理塊y中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到物理塊z中是采用現(xiàn)有的數(shù)據(jù)搬遷技術(shù),具體包括步驟步驟S171,從寫命令中取得要寫入新數(shù)據(jù)的指定地址;步驟S172,將指定地址與物理塊y的地址比較,得到不被寫命令指定寫入新數(shù)據(jù)的未指定地址,這些未指定地址中的數(shù)據(jù)是不:^皮新數(shù)據(jù)覆蓋的原有數(shù)據(jù);步驟S173,將未覆蓋地址中的原有數(shù)據(jù)復(fù)制到物理塊z的相應(yīng)地址中,流程結(jié)束。閃存介質(zhì)的特性是要先擦除才能寫數(shù)據(jù),如果直接擦除保存了原有數(shù)據(jù)的物理塊寫入新數(shù)據(jù),很可能造成原有數(shù)據(jù)的丟失,故本實(shí)施例在每次執(zhí)行寫數(shù)據(jù)命令時(shí)都使用交換塊,以保證原有數(shù)據(jù)的安全。本實(shí)施例對(duì)于讀命令的處理過程如下步驟S21,收到讀取邏輯塊X數(shù)據(jù)的讀命令;步驟S22,計(jì)算邏輯塊X屬于哪個(gè)邏輯區(qū)域;步驟S23,將該邏輯區(qū)域的對(duì)照表加載到內(nèi)存;步驟S24,查對(duì)照表,根據(jù)邏輯塊X的邏輯地址查找到對(duì)應(yīng)的物理塊y;步驟S25,讀取物理塊y中的指定數(shù)據(jù);步驟S26,返回讀到的^:據(jù),讀過程結(jié)束。本發(fā)明提出第二實(shí)施例,在第一實(shí)施例基礎(chǔ)上對(duì)對(duì)照表和交換塊的管理提出改進(jìn)。本實(shí)施例至少在存儲(chǔ)介質(zhì)量產(chǎn)的時(shí)候建立一完整對(duì)照表,通過完整對(duì)照表,可使所有邏輯地址都與好的物理塊對(duì)應(yīng)起來,而不對(duì)應(yīng)壞物理塊,將壞的物理塊忽略不使用,建立邏輯地址與所有好塊的物理地址之間的對(duì)應(yīng)關(guān)系。例如存儲(chǔ)介質(zhì)共有IO個(gè)物理塊,其中物理塊2是壞塊,建立完整對(duì)照表的做法是從邏輯塊0和物理塊0開始建立對(duì)照,先為邏輯塊O找一個(gè)物理塊與之對(duì)應(yīng),檢測到物理塊O是好塊就把物理塊0對(duì)應(yīng)到邏輯塊0;再順序?yàn)檫壿媺K1找一個(gè)物理塊與之對(duì)應(yīng),因?yàn)槲锢韷K0已經(jīng)有對(duì)應(yīng)關(guān)系,所以順序檢測物理塊l,物理塊l是好塊就把物理塊l對(duì)到邏輯塊l。再為邏輯塊2找一個(gè)物理塊與之對(duì)應(yīng),因?yàn)槲锢韷K1之前的塊都操作過了,就從物理塊2開始,發(fā)現(xiàn)物理塊2是壞塊,不能將物理塊2與任何一個(gè)邏輯塊對(duì)應(yīng),于是再往后找到物理塊3,發(fā)現(xiàn)物理塊3是好塊,就把物理塊3對(duì)到邏輯塊2。依次對(duì)應(yīng)直到所有邏輯塊都與物理塊建立對(duì)應(yīng)關(guān)系,而對(duì)其中壞塊的處理就是不讓壞塊與任何一個(gè)邏輯塊對(duì)應(yīng),也不與任何一個(gè)交換塊對(duì)應(yīng),使得壞塊在實(shí)際使用過程中永遠(yuǎn)不會(huì)被使用到。當(dāng)然本實(shí)施例也可用其他規(guī)則建立完整對(duì)照表,將壞的物理塊忽略不使用,建立邏輯地址與所有好塊的物理地址之間的對(duì)應(yīng)關(guān)系。建立對(duì)照表后,在數(shù)據(jù)處理系統(tǒng)的外部存儲(chǔ)介質(zhì)(例如EEPR0M,或存儲(chǔ)介質(zhì)本身)劃出一存儲(chǔ)空間來保存上述完整對(duì)照表,數(shù)據(jù)處理系統(tǒng)的MCU內(nèi)存只需記錄完整對(duì)照表所在的物理地址。當(dāng)需要訪問某區(qū)域的數(shù)據(jù)時(shí),根據(jù)內(nèi)存保存的完整對(duì)照表所在物理地址,就可以訪問完整對(duì)照表中該區(qū)域?qū)?yīng)的部分,將這部分對(duì)照表讀取到內(nèi)存中,完成完整對(duì)照表的加載。上述在外部存儲(chǔ)介質(zhì)中劃出的存儲(chǔ)空間可以是取幾個(gè)物理塊,也可以是多個(gè)物理塊的冗余區(qū)。本實(shí)施例還可為每個(gè)區(qū)域分別建立區(qū)域?qū)φ毡怼TO(shè)邏輯地址劃分為L個(gè)區(qū)域,分別是區(qū)域0、區(qū)域l……區(qū)域L,每個(gè)區(qū)域N個(gè)邏輯塊。本實(shí)施例為每個(gè)區(qū)域分別建立區(qū)域?qū)φ毡恚垂灿蠰個(gè)區(qū)域?qū)φ毡?,每個(gè)對(duì)照表覆蓋N個(gè)邏輯塊。這L個(gè)區(qū)域?qū)φ毡斫Y(jié)合起來即等同于上述完整對(duì)照表,可以將所有好的物理塊管理起來。在內(nèi)存中4叉保留某一區(qū)域?qū)φ毡?例如區(qū)域0對(duì)照表),其他的區(qū)域?qū)φ毡肀4嬖谕獠看鎯?chǔ)介質(zhì)(例如EEPROM,或存儲(chǔ)介質(zhì)本身)劃出的存儲(chǔ)空間中。內(nèi)存中記錄每個(gè)區(qū)域表的保存地址(例如區(qū)域0對(duì)照表保存在邏輯塊0,區(qū)域1對(duì)照表保存在邏輯塊1……)。設(shè)接收到的訪問命令要訪問邏輯塊500,而目前內(nèi)存中保存的區(qū)域0對(duì)照表僅覆蓋邏輯塊0至邏輯塊127,因此當(dāng)前區(qū)域?qū)φ毡頍o法滿足訪問需求,就需要加載與訪問指令相應(yīng)的區(qū)域?qū)φ毡?。通過計(jì)算得到邏輯塊500屬于區(qū)域3,讀取區(qū)域3對(duì)照表并存入內(nèi)存中,替代內(nèi)存中原有的區(qū)域G對(duì)照表完成對(duì)照表加載過程,然后利用區(qū)域3對(duì)照表執(zhí)行訪問命令。上述在外部存儲(chǔ)介質(zhì)中劃出的存儲(chǔ)空間可以是耳又幾個(gè)物理塊,也可以是多個(gè)物理塊的冗余區(qū)。上述區(qū)域?qū)φ毡砉芾砹鞒倘鐖D6所示,包括步驟S31,將邏輯地址劃分為至少兩個(gè)區(qū)域;步驟S32,分別為至少兩個(gè)區(qū)域建立區(qū)域?qū)φ毡?;步驟S33,將其中一區(qū)域?qū)φ毡肀4嬖趦?nèi)存中,其他區(qū)域?qū)φ毡肀4嬖谕獠看鎯?chǔ)介質(zhì)中;步驟S34,接收訪問命令;步驟S35,計(jì)算訪問命令指定邏輯塊屬于哪一區(qū)域;步驟S36,如果內(nèi)存中的區(qū)域?qū)φ毡韺?duì)應(yīng)指定邏輯塊所屬區(qū)域,則進(jìn)行步驟S38,否則進(jìn)行S37;步驟S37,將指定邏輯塊所屬區(qū)域?qū)φ毡砑虞d到內(nèi)存中,替換內(nèi)存中的原區(qū)域?qū)φ毡恚缓筮M(jìn)行步驟S38;步驟S38,利用內(nèi)存中的區(qū)域?qū)φ毡?,?zhí)行訪問命令;步驟S39,返回命令執(zhí)行結(jié)果,流程結(jié)束。若訪問命令為讀命令,訪問不改變邏輯塊與物理塊的對(duì)應(yīng)關(guān)系;若訪問命令為寫命令,執(zhí)行完該訪問命令后邏輯塊與物理塊的對(duì)應(yīng)關(guān)系改變,區(qū)域?qū)φ毡硪矐?yīng)作相應(yīng)更新,用新的區(qū)域?qū)φ毡硖娲瓍^(qū)域?qū)φ毡?。這樣在根據(jù)訪問命令切換區(qū)域?qū)φ毡頃r(shí),可直接讀取區(qū)域?qū)φ毡怼I鲜霾襟ES37,將區(qū)域?qū)φ毡砑虞d到內(nèi)存中,是指把區(qū)域?qū)φ毡韽耐獠看鎯?chǔ)介質(zhì)讀取到內(nèi)存中。例如一區(qū)域?qū)φ毡淼臄?shù)據(jù)是"0987654321",本實(shí)施例將其保存在外部存儲(chǔ)介質(zhì)中,并設(shè)專門的變量記錄該區(qū)域?qū)φ毡肀4嬖谕獠看鎯?chǔ)介質(zhì)的哪個(gè)物理地址中。當(dāng)本實(shí)施例需要用到該區(qū)域?qū)φ毡淼臅r(shí)候,就從變量記錄的物理地址中把區(qū)域?qū)φ毡頂?shù)據(jù)讀出來,讀到內(nèi)存中用于保留對(duì)照表的區(qū)域即可。這樣,同一個(gè)內(nèi)存區(qū)域在不同的時(shí)刻被加載不同的區(qū)域?qū)φ毡砹恕I鲜鰠^(qū)域?qū)φ毡砑虞d完成后,本實(shí)施例采用第一實(shí)施例中的寫過程執(zhí)行訪問命令。本實(shí)施例可以只在要用到區(qū)域?qū)φ毡淼臅r(shí)候,例如收到訪問命令或其他需要查表的情況下,才將區(qū)域?qū)φ毡砑虞d到內(nèi)存中,平時(shí)的內(nèi)存完全可以不存放任何區(qū)域?qū)φ毡?。把一個(gè)區(qū)域?qū)φ毡沓qv在內(nèi)存中是為了提高訪問效率。當(dāng)然,本發(fā)明也可以不預(yù)先生成對(duì)照表,而是每次需要訪問某區(qū)域時(shí)臨時(shí)重建該區(qū)域的對(duì)照表或者臨時(shí)重建存儲(chǔ)空間的完整對(duì)照表,然后加載到內(nèi)存中。這樣做可以節(jié)省一點(diǎn)存儲(chǔ)介質(zhì)的存儲(chǔ)空間,但頻繁重建對(duì)照表可能會(huì)影響訪問效率,因此建議保存對(duì)照表,在不使用時(shí)保存在外部存儲(chǔ)介質(zhì)(例如EEPR0M,或存儲(chǔ)介質(zhì)本身)或在存儲(chǔ)介質(zhì)內(nèi)部,要使用時(shí)讀取并加載到內(nèi)存中即可,這樣僅占用極少量的內(nèi)存就可完成大容量存儲(chǔ)介質(zhì)的管理。如果需要掃描存儲(chǔ)介質(zhì)重建對(duì)照表,則需要在存儲(chǔ)介質(zhì)中保存重建對(duì)照表的信息。本實(shí)施例提出在物理塊冗余區(qū)中保存對(duì)照表信息及重建對(duì)照表的做法如下閃存介質(zhì)的結(jié)構(gòu)是在每個(gè)物理塊中除了數(shù)據(jù)區(qū)以外,還有若干字節(jié)的冗余區(qū)。冗余區(qū)可以保存一些廠商自定的信息,因此本實(shí)施例可以在這個(gè)區(qū)域放置一些標(biāo)志信息。如冗余區(qū)有16字節(jié),其中10字節(jié)放置ECC校驗(yàn)碼,剩下的6字節(jié)就可以放置對(duì)照表信息,在這6字節(jié)中,本實(shí)施例記錄本物理塊對(duì)應(yīng)的邏輯塊號(hào)。這樣,在寫數(shù)據(jù)的時(shí)候,就把邏輯塊號(hào)和數(shù)據(jù)以及ECC校驗(yàn)碼一起寫入存儲(chǔ)介質(zhì)中。在本實(shí)施例重建對(duì)照表的時(shí)候,通過讀取每個(gè)物理塊的冗余區(qū)信息,就知道每個(gè)物理塊對(duì)應(yīng)的邏輯塊號(hào),這樣無需重新掃描存儲(chǔ)介質(zhì),即可重建對(duì)照表。把對(duì)照表保存到存儲(chǔ)介質(zhì)的部分物理塊中的做法則是在最初建立對(duì)照表的時(shí)候,本實(shí)施例把部分的好塊劃出來用于保存對(duì)照表,不與邏輯塊對(duì)應(yīng),也不與交換塊對(duì)應(yīng),而讓數(shù)據(jù)處理系統(tǒng)的MCU的內(nèi)存記住這些塊的物理塊號(hào),當(dāng)對(duì)照表發(fā)生變化的時(shí)候,把對(duì)照表寫入這些物理塊中。為了區(qū)分對(duì)照表和數(shù)據(jù),本實(shí)施例仍需要標(biāo)記哪個(gè)塊里保存的是數(shù)據(jù),哪個(gè)塊保存的是對(duì)照表信息,該標(biāo)記可以放到物理塊的冗余區(qū)中。這樣,通過掃描冗余區(qū),本實(shí)施例就知道哪個(gè)塊保存的是數(shù)據(jù),哪個(gè)塊保存的是對(duì)照表,在找到保存對(duì)照表的塊后,把對(duì)照表讀出即可,無需進(jìn)行重建的過程。在上述實(shí)施例基礎(chǔ)上,本發(fā)明還提出設(shè)置多個(gè)交換塊,維持一交換塊池以管理這些交換塊,在讀寫數(shù)據(jù)過程可以輪換使用交換塊以提高訪問效率。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的
技術(shù)領(lǐng)域:
,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。權(quán)利要求1.一種存儲(chǔ)介質(zhì)管理方法,包括分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟;將所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟;根據(jù)所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟。2.根據(jù)權(quán)利要求l所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,所述分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟包括將邏輯地址劃分為至少兩個(gè)區(qū)域;對(duì)至少一邏輯區(qū)域中的邏輯地址,分別建立與所述存儲(chǔ)介質(zhì)的任一物理地址之間的對(duì)應(yīng)關(guān)系;將所述對(duì)應(yīng)關(guān)系形成所述至少兩個(gè)區(qū)域?qū)φ毡怼?.根據(jù)權(quán)利要求2所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,將所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟包括根據(jù)訪問命令計(jì)算指定邏輯塊屬于哪一區(qū)域;判斷內(nèi)存中的區(qū)域?qū)φ毡硎欠駥?duì)應(yīng)指定邏輯塊所屬區(qū)域;將指定邏輯塊所屬區(qū)域的區(qū)域?qū)φ毡砑虞d到內(nèi)存中,替換內(nèi)存中的區(qū)域?qū)φ毡怼?.根據(jù)權(quán)利要求1所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,將所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟還包括將至少一區(qū)域?qū)φ毡肀4嬖谕獠看鎯?chǔ)介質(zhì)中的步驟。5.根據(jù)權(quán)利要求l所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,所述分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟包括將邏輯地址劃分為至少兩個(gè)區(qū)域;對(duì)各區(qū)域中的邏輯地址,建立與存儲(chǔ)介質(zhì)任一物理地址之間對(duì)應(yīng)關(guān)系,形成完整對(duì)照表。6.根據(jù)權(quán)利要求5所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,將所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟包括將所述完整對(duì)照表保存在外部存儲(chǔ)介質(zhì)中;將所述完整對(duì)照表的信息保存在內(nèi)存中;根據(jù)訪問命令計(jì)算指定邏輯塊屬于哪一區(qū)域;根據(jù)所述完整對(duì)照表的地址找到所述完整對(duì)照表;將所述完整對(duì)照表中,指定邏輯塊所屬區(qū)域的部分對(duì)照表加載到內(nèi)存中。7.根據(jù)權(quán)利要求4或6所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,所述將對(duì)照表保存在外部存儲(chǔ)介質(zhì)中是指保存在至少一物理塊中,或是保存在至少一物理塊的冗余區(qū)中。8.根據(jù)權(quán)利要求1至6任意一項(xiàng)所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,還包括定義至少一交換塊,建立交換塊的邏輯地址與物理地址對(duì)應(yīng)關(guān)系的步驟。9.根據(jù)權(quán)利要求8所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,根據(jù)所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟包括根據(jù)所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系,查找與寫命令指定邏輯地址對(duì)應(yīng)的物理地址;將寫命令要寫入的新數(shù)據(jù)寫到與交換塊對(duì)應(yīng)的物理地址中;將所述與寫命令指定邏輯地址對(duì)應(yīng)的物理地址中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到與交換塊對(duì)應(yīng)的物理地址中;建立所述交換塊與寫命令指定邏輯地址對(duì)應(yīng)的物理地址之間的對(duì)應(yīng)關(guān)系,建立寫命令指定邏輯地址與交換塊對(duì)應(yīng)的物理地址之間的對(duì)應(yīng)關(guān)系;擦除與交換塊對(duì)應(yīng)的物理地址。10.根據(jù)權(quán)利要求9所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,根據(jù)所述至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟還包括更新至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系,更新對(duì)照表的步驟。11.根據(jù)權(quán)利要求9所述的存儲(chǔ)介質(zhì)管理方法,其特征在于,將所述與寫命令指定邏輯地址對(duì)應(yīng)的物理地址中不被寫命令覆蓋的原有數(shù)據(jù)搬遷到與交換塊對(duì)應(yīng)的物理地址中包括較,得^^被寫命令指定寫入新數(shù)據(jù)的未指定地址;';'將未指定地址中的凄史據(jù)復(fù)制到與交換塊對(duì)應(yīng)的物理地址中。全文摘要本發(fā)明提供一種存儲(chǔ)介質(zhì)管理方法,包括分區(qū)域管理邏輯地址,建立至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系的步驟;將至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系加載在內(nèi)存中的步驟;根據(jù)至少一區(qū)域邏輯地址與物理地址的對(duì)應(yīng)關(guān)系執(zhí)行訪問命令的步驟。本發(fā)明通過將存儲(chǔ)介質(zhì)的邏輯地址劃分多個(gè)區(qū)域,各區(qū)域分別組織對(duì)照表,實(shí)現(xiàn)占用極少量的內(nèi)存完成大容量存儲(chǔ)介質(zhì)的管理;本發(fā)明還利用交換塊實(shí)現(xiàn)各個(gè)區(qū)域之間的物理塊相互交換,從而消除了區(qū)域間磨損不均衡的問題,同時(shí)避免了整個(gè)區(qū)域數(shù)據(jù)的搬遷而導(dǎo)致的性能不穩(wěn)定問題,安全穩(wěn)定,易于實(shí)現(xiàn)。文檔編號(hào)G06F12/06GK101436159SQ20071016599公開日2009年5月20日申請(qǐng)日期2007年11月14日優(yōu)先權(quán)日2007年11月14日發(fā)明者鐘智淵申請(qǐng)人:深圳市朗科科技股份有限公司