欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

閃存的數(shù)據(jù)存儲(chǔ)方法

文檔序號(hào):6564391閱讀:219來源:國知局
專利名稱:閃存的數(shù)據(jù)存儲(chǔ)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)存儲(chǔ)方法,尤其涉及一種閃存的數(shù)據(jù)存儲(chǔ)方法。
背景技術(shù)
目前閃存技術(shù)高速發(fā)展,但其基本讀寫方式卻未改變,即,以頁 為單位寫入,以塊為單位擦除,而且必須經(jīng)擦除之后才能寫入數(shù)據(jù)。 因?yàn)殚W存的這個(gè)特性, 一般是以塊為單位進(jìn)行閃存的數(shù)據(jù)存儲(chǔ)。.而操 作系統(tǒng)的讀寫一般是以扇區(qū)為單位進(jìn)行的,因此,操作系統(tǒng)可能只對(duì) 塊的一小部分寫入數(shù)據(jù),而剩下部分的數(shù)據(jù)寫入需要由底層軟件來執(zhí) 行。這就需要閃存內(nèi)部具有至少一個(gè)交換塊來進(jìn)行數(shù)據(jù)交換。
基于上述提到的閃存的特性,如果操作系統(tǒng)寫入多個(gè)較小數(shù)據(jù)且 其地址不連續(xù),會(huì)導(dǎo)致閃存產(chǎn)生頻繁的數(shù)據(jù)搬遷(即,將數(shù)據(jù)復(fù)制到 交換塊中的動(dòng)作)。
此外,對(duì)于具有鏈?zhǔn)浇Y(jié)構(gòu)的文件系統(tǒng),文件的鏈與其具體內(nèi)容并 非放在同一個(gè)位置,而是按照一定的協(xié)議放在磁盤的不同位置。于是 在操作系統(tǒng)對(duì)一個(gè)文件執(zhí)行復(fù)制或?qū)懭霑r(shí),需要在不同位置進(jìn)行操作 才能完成。
例如,假設(shè)操作系統(tǒng)有兩個(gè)文件需要寫入,則對(duì)于每個(gè)文件,操
作系統(tǒng)都會(huì)寫入以下三個(gè)區(qū)域鏈表區(qū)、目錄區(qū)和數(shù)據(jù)區(qū)。以常用的 FAT文件系統(tǒng)為例,三個(gè)區(qū)域在磁盤中的位置關(guān)系如圖1所示。操作 系統(tǒng)一般按照以下順序?qū)懭霐?shù)據(jù)區(qū)、目錄區(qū)、鏈表區(qū)。當(dāng)操作系統(tǒng) 寫完一個(gè)文件以后,再重復(fù)上述順序?qū)懴乱粋€(gè)文件。
當(dāng)操作系統(tǒng)要寫入數(shù)據(jù)時(shí),底層軟件取出 一個(gè)交換塊并將數(shù)據(jù)寫 入此交換塊,然后,將待寫入數(shù)據(jù)的塊的剩余區(qū)域從該塊復(fù)制到交換 塊中,之后,跳轉(zhuǎn)到操作系統(tǒng)要求的地址進(jìn)行下一次寫入。下面我們將舉例說明傳統(tǒng)的閃存數(shù)據(jù)存儲(chǔ)操作。
假設(shè)一片閃存具有IO個(gè)塊,每個(gè)塊有256個(gè)扇區(qū)。則我們可以建 立如圖2所示的對(duì)照表。其中,邏輯第0塊對(duì)應(yīng)物理第0塊,邏輯第 1塊對(duì)應(yīng)物理第1塊,依此類推。
傳統(tǒng)的閃存數(shù)據(jù)存儲(chǔ)方法只使用一個(gè)交換塊,例如使用第9塊作 為交換塊。當(dāng)操作系統(tǒng)向邏輯第3塊寫數(shù)據(jù)時(shí),底層軟件將數(shù)據(jù)寫到 第9塊,之后,將第3塊中的原有數(shù)據(jù)搬到第9塊并在對(duì)照表上交換 兩個(gè)塊,然后將第3塊作為交換塊。此時(shí)對(duì)照表變?yōu)槿鐖D3所示,物 理第9塊變?yōu)檫壿嫷?塊,而物理第3塊則成為交換塊。
現(xiàn)在,假設(shè)操作系統(tǒng)要寫入兩個(gè)文件,其中鏈表區(qū)在邏輯第0塊, 目錄區(qū)在邏輯第l塊,數(shù)據(jù)區(qū)在邏輯第2至6塊。作為一個(gè)示例,假 設(shè)操作系統(tǒng)將完成以下任務(wù)
(1) 寫入第一個(gè)文件的數(shù)據(jù),寫入邏輯第2塊,寫100個(gè)扇區(qū)。
(2) 寫入第一個(gè)文件的目錄,寫入邏輯第l塊,寫1個(gè)扇區(qū)。
(3) 寫入第一個(gè)文件的鏈表,寫入邏輯第0塊,寫10個(gè)扇區(qū)。
(4) 寫入第二個(gè)文件的數(shù)據(jù),因?yàn)榈谝粋€(gè)文件的數(shù)據(jù)沒有占滿一 個(gè)塊,因此仍寫入邏輯第2塊,寫100個(gè)扇區(qū)。
(5) 寫入第二個(gè)文件的目錄,寫入邏輯第l塊,寫1個(gè)扇區(qū)。
(6) 寫入第二個(gè)文件的鏈表,寫入邏輯第0塊,寫10個(gè)扇區(qū)。
根據(jù)傳統(tǒng)的閃存數(shù)據(jù)儲(chǔ)存方法,上述寫入兩個(gè)文件的操作按照如下步驟進(jìn)行
(a) 操作系統(tǒng)寫第一個(gè)文件,首先寫邏輯第2塊。底層軟件將數(shù) 據(jù)寫入交換塊(物理第9塊)。
(b) 操作系統(tǒng)寫邏輯第1塊。底層軟件先把原邏輯第2塊的原有 數(shù)據(jù)搬遷到交換塊,然后在對(duì)照表上互換兩個(gè)塊。因此對(duì)照表變?yōu)槿?圖4a所示。然后,底層軟件將接收的數(shù)據(jù)寫入新的交換塊,即物理第 2塊。
(c) 操作系統(tǒng)寫邏輯第0塊。底層軟件先把原邏輯第1塊的原有 數(shù)據(jù)搬遷到交換塊,然后在對(duì)照表上互換兩個(gè)塊。因此對(duì)照表變?yōu)槿?圖4b所示。然后,底層軟件將接收的數(shù)據(jù)寫入新的交換塊,即物理第1塊。
(d) 操作系統(tǒng)開始寫第二個(gè)文件,首先寫邏輯第2塊,底層軟件先將原邏輯第O塊的原有數(shù)據(jù)搬遷到交換塊,然后在對(duì)照表上互換兩個(gè)塊。因此對(duì)照表變?yōu)槿鐖D4c所示。然后,底層軟件將接收的數(shù)據(jù)寫 入新的交換塊,即物理第0塊。
(e) 操作系統(tǒng)寫邏輯第l塊。底層軟件先把原邏輯第2塊的原有數(shù)據(jù)搬遷到交換塊,然后在對(duì)照表上互換兩個(gè)塊。因此對(duì)照表變?yōu)槿鐖D4d所示。然后,底層軟件將接收的數(shù)據(jù)寫入新的交換塊,即物理第 9塊。
(f) 操作系統(tǒng)寫邏輯第0塊。底層軟件先把原邏輯第1塊的原有數(shù)據(jù)搬遷到交換塊,然后在對(duì)照表上互換兩個(gè)塊。因此對(duì)照表變?yōu)槿鐖D4e所示。然后,底層軟件將接收的數(shù)據(jù)寫入新的交換塊,即物理第2塊。
(g) 操作系統(tǒng)完成文件寫入。這時(shí),底層軟件需要對(duì)剩余的數(shù)據(jù)執(zhí)行搬遷,即把邏輯第O塊的剩余數(shù)據(jù)搬到交換塊,并互換兩個(gè)塊在對(duì)照表的位置。這時(shí),對(duì)照表變?yōu)槿鐖D4f所示。從而完成了寫入兩個(gè)文件的4喿作。
從以上所舉的傳統(tǒng)的閃存數(shù)據(jù)存儲(chǔ)的示例可以看出,在對(duì)閃存進(jìn)行較小數(shù)據(jù)的寫入操作時(shí),需要頻繁地操作數(shù)據(jù)區(qū)和FAT區(qū),造成了大量無謂的數(shù)據(jù)拷貝操作,從而增加了閃存的擦寫次數(shù),既影響速度, 也降低了閃存使用壽命。

發(fā)明內(nèi)容
鑒于現(xiàn)有的閃存數(shù)據(jù)存儲(chǔ)方法的上述缺陷,本發(fā)明的目的在于通過算法的優(yōu)化,減少因?yàn)椴僮飨到y(tǒng)的讀寫不規(guī)律而導(dǎo)致的閃存性能下降和使用壽命的縮短。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種閃存的數(shù)據(jù)存儲(chǔ)方法,所述方法包括(1)為所述閃存設(shè)置至少一個(gè)交換塊,并為每個(gè)交換塊設(shè) 置相應(yīng)的結(jié)構(gòu)體;(2)將數(shù)據(jù)寫入交換塊,并對(duì)該交換塊的結(jié)構(gòu)體賦 值;(3)根據(jù)所述交換塊的結(jié)構(gòu)體的值進(jìn)行數(shù)據(jù)搬遷;(4)將每個(gè)
所述結(jié)構(gòu)體的值復(fù)位。
優(yōu)選地,當(dāng)一次寫入操作包含多個(gè)數(shù)據(jù)寫入動(dòng)作時(shí),根據(jù)本發(fā)明的閃存數(shù)據(jù)存儲(chǔ)方法中的寫入數(shù)據(jù)并對(duì)結(jié)構(gòu)體賦值的步驟包括(2-1 ) 將第一數(shù)據(jù)寫入第一交換塊,對(duì)所述第一交換塊的結(jié)構(gòu)體賦值;(2-2) 檢查每個(gè)具有已賦值結(jié)構(gòu)體的交換塊,根據(jù)其結(jié)構(gòu)體的值判斷應(yīng)將第 二數(shù)據(jù)寫入新交換塊還是寫入一個(gè)具有已賦值結(jié)構(gòu)體的交換塊; (2-3)如果判斷應(yīng)將第二數(shù)據(jù)寫入新交換塊,則將所述第二數(shù)據(jù)寫入 新交換塊,并對(duì)所述新交換塊的結(jié)構(gòu)體進(jìn)行賦值,否則,將所述第二 數(shù)據(jù)寫入所述具有已賦值結(jié)構(gòu)體的交換塊,并對(duì)該交換塊的結(jié)構(gòu)體重 新賦值;(2-4)重復(fù)步驟(2-1)至(2-3),直至完成所述多個(gè)數(shù)據(jù) 寫入動(dòng)作。
根據(jù)本發(fā)明的方法,在將數(shù)據(jù)寫入交換塊之后,并不立即進(jìn)行數(shù) 據(jù)搬遷,而是繼續(xù)進(jìn)行下一個(gè)數(shù)據(jù)寫入動(dòng)作,待本次寫入操作的所有 數(shù)據(jù)均已寫入適當(dāng)交換塊之后再根據(jù)交換塊的結(jié)構(gòu)體統(tǒng)一執(zhí)行數(shù)據(jù)搬 遷。而傳統(tǒng)的做法是每次將數(shù)據(jù)寫入交換塊之后便立即進(jìn)行數(shù)據(jù)搬遷。
因此,根據(jù)本發(fā)明的方法,能夠通過為每個(gè)交換塊所設(shè)置的結(jié)構(gòu) 體,記住交換塊與待寫入數(shù)據(jù)的塊的對(duì)應(yīng)關(guān)系。同樣,由于結(jié)構(gòu)體, 使得能夠在進(jìn)行數(shù)據(jù)寫入之前,迅速判斷是否需要進(jìn)行數(shù)據(jù)搬遷和重 新取得交換塊。在寫入的多個(gè)數(shù)據(jù)地址不連續(xù)的情況下,通過本發(fā)明 的方法能夠減少大量的數(shù)據(jù)搬遷,從而節(jié)省了處理時(shí)間,提高了速度。 同時(shí),由于減少了閃存的擦寫次數(shù),使得閃存的使用壽命得以延長。


圖1是示出了鏈?zhǔn)浇Y(jié)構(gòu)文件系統(tǒng)在磁盤中的存儲(chǔ)方式的示意圖2是示出了一個(gè)示例性閃存結(jié)構(gòu)的對(duì)照表;
圖3是根據(jù)現(xiàn)有技術(shù)、對(duì)具有圖2所示結(jié)構(gòu)的閃存進(jìn)行寫入一個(gè) 數(shù)據(jù)操作后的對(duì)照表;
圖4a至圖4f是根據(jù)現(xiàn)有技術(shù)、對(duì)具有圖2所示結(jié)構(gòu)的閃存進(jìn)行 寫入兩個(gè)文件的操作過程的對(duì)照表;
圖5是示出了根據(jù)本發(fā)明的閃存的數(shù)據(jù)存儲(chǔ)方法的流程圖6是示出了根據(jù)本發(fā)明的執(zhí)行多個(gè)數(shù)據(jù)寫入動(dòng)作的流程圖7是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例寫入兩個(gè)文件之后的對(duì)照表。
具體實(shí)施例方式
下面結(jié)合附圖,對(duì)本發(fā)明的方法進(jìn)行詳細(xì)地描述。
參照?qǐng)D5,其示出了根據(jù)本發(fā)明的閃存的數(shù)據(jù)存儲(chǔ)方法的處理流 程。首先,為閃存設(shè)置至少一個(gè)交換塊,每個(gè)交換塊具有相應(yīng)的結(jié)構(gòu) 體來記錄其信息(步驟501)。根據(jù)本發(fā)明的方法,當(dāng)操作系統(tǒng)寫數(shù) 據(jù)時(shí),首先將數(shù)據(jù)寫入交換塊,并對(duì)該交換塊所對(duì)應(yīng)的結(jié)構(gòu)體賦值(步 驟502 )。然后,根據(jù)交換塊的結(jié)構(gòu)體的值進(jìn)行數(shù)據(jù)搬遷(步驟503 ), 并將結(jié)構(gòu)體的值復(fù)位。
當(dāng) 一次寫入操作包括多個(gè)數(shù)據(jù)寫入動(dòng)作時(shí),根據(jù)本發(fā)明的方法能 夠顯著提高數(shù)據(jù)存儲(chǔ)速度。在這種情況下,上述的步驟502可以細(xì)分 為以下子步驟首先,將一個(gè)數(shù)據(jù)寫入一個(gè)交換塊,并對(duì)該交換塊的 結(jié)構(gòu)體賦值(步驟5021 )。在寫入下一數(shù)據(jù)之前,首先檢查每個(gè)具有 已賦值結(jié)構(gòu)體的交換塊(即,已經(jīng)寫入了數(shù)據(jù)的交換塊),根據(jù)該交 換塊的結(jié)構(gòu)體值判斷是將新數(shù)據(jù)寫入新的交換塊還是寫入該之前已寫 入數(shù)據(jù)的交換塊(步驟5022),如果是前者,則將數(shù)據(jù)寫入新的交換 塊并對(duì)該交換塊的結(jié)構(gòu)體進(jìn)行賦值(步驟5023 );如果是后者,則將 數(shù)據(jù)寫入已寫入了數(shù)據(jù)的交換塊,并對(duì)該交換塊的結(jié)構(gòu)體重新賦值(步 驟5024)。如此重復(fù)以上操作,直至所有數(shù)據(jù)均已寫入。
作為一個(gè)實(shí)施例,交換塊的結(jié)構(gòu)體具有以下數(shù)據(jù)結(jié)構(gòu)
Struct {
OlsBlockAddress; NewBlockAddress;ActSector; LogicAddress;
}
其中,OldBlockAddress表示待寫入數(shù)據(jù)的塊的物理地址,NewBlockAddress表示交才奐塊的4勿理i也i止,ActSector表示當(dāng)前塊中口那 個(gè)扇區(qū)正在被操作系統(tǒng)訪問,如果操作系統(tǒng)正在訪問其他塊,則此變 量表示上次系統(tǒng)訪問過的扇區(qū)的下一個(gè)扇區(qū)。LogicAddress表示 ActSector所對(duì)應(yīng)的邏輯扇區(qū)地址。
仍以上面描述的情況為例,即,對(duì)具有10個(gè)塊、每個(gè)塊具有256 個(gè)扇區(qū)的閃存進(jìn)行數(shù)據(jù)存儲(chǔ)操作,該閃存的文件對(duì)照表如圖2所示。 假設(shè)操作系統(tǒng)要寫入兩個(gè)文件,其中鏈表區(qū)在邏輯第0塊,目錄區(qū)在 邏輯第l塊,數(shù)據(jù)區(qū)在邏輯第2至6塊。操作系統(tǒng)具體將完成的任務(wù) 在上面已經(jīng)詳細(xì)描述,此處不再贅述。
與現(xiàn)有閃存的數(shù)據(jù)存儲(chǔ)方式不同,根據(jù)本發(fā)明的 一個(gè)實(shí)施例的閃 存數(shù)據(jù)存儲(chǔ)方法采用三個(gè)塊作為交換塊,例如,將邏輯第7、 8和9 塊分別作為交換塊O、 1和2。
根據(jù)本發(fā)明的這一 實(shí)施例,寫入兩個(gè)文件的#:作二換照如下步驟進(jìn)行
(a,)操作系統(tǒng)寫邏輯第2塊。底層軟件把數(shù)據(jù)寫入交換塊O(物 理第7塊),并如下設(shè)置交換塊O的結(jié)構(gòu)體的值 S wap0 01dBlockAddress=2; SwapO.NewBlockAddress=7; Swap0.ActSector=100;
SwapO丄ogicAddress二612; //邏輯0塊的扇區(qū)數(shù)+邏輯1塊的扇區(qū) 數(shù)+ ActSector 。
(b,)操作系統(tǒng)寫邏輯第1塊。底層軟件首先檢查交換塊0的結(jié) 構(gòu)體的值,通過LogicAddress表示的已寫入了數(shù)據(jù)的扇區(qū)邏輯地址計(jì) 算出其物理地址,并將該扇區(qū)物理地址與本次的寫入命令中的扇區(qū)物 理地址相比較。底層軟件發(fā)現(xiàn)上述兩個(gè)扇區(qū)地址不連續(xù),從而判斷出 本次的數(shù)據(jù)將寫入不同于之前寫入動(dòng)作所操作的塊中。底層軟件重新 取出一個(gè)交換塊1 (物理第8塊),將數(shù)據(jù)寫入交換塊1并如下設(shè)置 對(duì)應(yīng)的結(jié)構(gòu)體的值
Swapl .OldBlockAddress=l;
Swap 1 .NewBlockAddress=8;
Swap 1. ActSector= 1;
SwapLLogicAddress=257; 〃邏輯0塊的扇區(qū)數(shù)+ ActSector。
(c,)操作系統(tǒng)寫邏輯第0塊。與步驟(b,)類似,底層軟件首 先檢查交換塊0的結(jié)構(gòu)體。底層軟件發(fā)現(xiàn)待寫入數(shù)據(jù)的扇區(qū)地址與交 換塊0的已寫入了數(shù)據(jù)的扇區(qū)地址不連續(xù),因而檢查交換塊1的結(jié)構(gòu) 體。同樣,底層軟件發(fā)現(xiàn)待寫入數(shù)據(jù)的扇區(qū)地址與交換塊1的已寫入 了數(shù)據(jù)的扇區(qū)地址也不連續(xù),因此判斷應(yīng)將數(shù)據(jù)寫入新的交換塊。底 層軟件重新取出一個(gè)交換塊2(物理第9塊),并將數(shù)據(jù)寫入交換塊2 并如下設(shè)置對(duì)應(yīng)的結(jié)構(gòu)體值
Swap2.OldBlockAddress=0;
Swap2.NewBlockAddress=9;
Swap2.ActSector=10;
Swap2丄ogicAddress二10; 〃ActSector地址。
(d,)操作系統(tǒng)開始寫第二個(gè)文件,重新寫邏輯第2塊。類似地, 底層軟件檢查交換塊0的結(jié)構(gòu)體,發(fā)現(xiàn)待寫入數(shù)據(jù)的扇區(qū)地址與交換 塊0的結(jié)構(gòu)體所記錄的已寫入了數(shù)據(jù)的扇區(qū)地址連續(xù)。這時(shí),底層軟 件不再重新取得交換塊,而是直接把數(shù)據(jù)寫入交換塊0,并將對(duì)應(yīng)的 結(jié)構(gòu)體的值如下修改
Swap0.OldBlockAddress=2;
SwapO.NewBlockAddress=7;
SwapO.ActSector=200;
Swap(XLogicAddress=712; 〃邏輯0塊的扇區(qū)數(shù)+邏輯第1塊的扇 區(qū)凄丈+ ActSector 。
(c,)操作系統(tǒng)寫邏輯第1塊。同樣,底層軟件發(fā)現(xiàn)待寫入數(shù)據(jù) 的扇區(qū)地址與交換塊1的結(jié)構(gòu)體所記錄的已寫入了數(shù)據(jù)的扇區(qū)地址連 續(xù),于是直接把數(shù)據(jù)寫入交換塊1,并將對(duì)應(yīng)的結(jié)構(gòu)體的值如下修改:
Swapl .01dBlockAddress=l;
Swap 1 .NewBlockAddress=8;
Swapl .ActSector=2;
SwapllogicAddress=258; 〃邏輯第0塊的扇區(qū)數(shù)+ActSector。
(f')操作系統(tǒng)寫邏輯第0塊。底層軟件發(fā)現(xiàn)待寫入數(shù)據(jù)的扇區(qū)
地址與交換塊2的結(jié)構(gòu)體所記錄的已寫入了數(shù)據(jù)的扇區(qū)地址連續(xù),因 而直接把數(shù)據(jù)寫入交換塊2,并修改對(duì)應(yīng)的結(jié)構(gòu)體的值如下
Swap2.OldBlockAddress=0;
Swap2 .Ne wBlockAddress=9;
Swap2.ActSector=20;
Swap21ogicAddress=20; //ActSector。
(g')操作系統(tǒng)完成兩個(gè)文件的寫入。底層軟件通過交換塊0、 1 和2的結(jié)構(gòu)體值,進(jìn)行剩余數(shù)據(jù)的搬遷。具體而言,對(duì)于交換塊0, 其結(jié)構(gòu)體中01dBlockAddress=2且NewBlockAddress=7,因此可知針 對(duì)該交換塊的數(shù)據(jù)搬遷的源塊是邏輯第2塊,目標(biāo)塊是邏輯第7塊(即 交換塊0),也就是說,將邏輯第2塊原有數(shù)據(jù)搬遷到邏輯第7塊。 類似地,底層軟件根據(jù)交換塊1和2的結(jié)構(gòu)體值,將邏輯第l塊的原 有數(shù)據(jù)搬遷到邏輯第8塊(交換塊1 ),將邏輯第0塊的原有數(shù)據(jù)搬 遷到邏輯第9塊(交換塊2)。然后,在對(duì)照表上互換對(duì)應(yīng)的塊,并 將各交換塊的結(jié)構(gòu)體的值復(fù)位。此時(shí),完成了寫入兩個(gè)文件的操作的 對(duì)照表如圖7所示。
以上描述的是本發(fā)明的優(yōu)選實(shí)施方式,本領(lǐng)域的技術(shù)人員可以根 據(jù)本發(fā)明的教導(dǎo),進(jìn)行各種修改、增加和替換。
權(quán)利要求
1. 一種閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述方法包括(1)為所述閃存設(shè)置至少一個(gè)交換塊,并為每個(gè)交換塊設(shè)置相應(yīng)的結(jié)構(gòu)體;(2)將數(shù)據(jù)寫入交換塊,并對(duì)該交換塊的結(jié)構(gòu)體賦值;(3)根據(jù)所述至少一個(gè)交換塊的結(jié)構(gòu)體的值進(jìn)行數(shù)據(jù)搬遷;(4)將每個(gè)所述結(jié)構(gòu)體的值復(fù)位。
2. 如權(quán)利要求1所述的閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述 結(jié)構(gòu)體具有以下數(shù)據(jù)結(jié)構(gòu)Struct {O畫ockAddress; NewBlockAddress; ActSector; LogicAddress;其中,OldBlockAddress表示待寫入數(shù)據(jù)的塊的物理地址, NewBlockAddress表示交換塊的物理地址,ActSector表示當(dāng)前塊中明卩 個(gè)扇區(qū)正在^皮:操作系統(tǒng)訪問,LogicAddress表示ActSector所對(duì)應(yīng)的邏輯扇區(qū)地址。
3. 如權(quán)利要求2所述的閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述 數(shù)據(jù)搬遷的步驟(3)包括基于OldBlockAddress值所代表的源塊地 址和NewBlockAddress值所代表的目標(biāo)塊地址,將所述源塊的原有數(shù) 據(jù)復(fù)制到所述目標(biāo)塊中。
4. 如權(quán)利要求1所述的閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,當(dāng)一 次寫入操作包含多個(gè)數(shù)據(jù)寫入動(dòng)作時(shí),所述步驟(2)包括(2-1 )將第一數(shù)據(jù)寫入第一交換塊,對(duì)所述第一交換塊的結(jié)構(gòu)體賦值;(2-2 )檢查每個(gè)具有已賦值結(jié)構(gòu)體的交換塊,根據(jù)其結(jié)構(gòu)體的值 判斷應(yīng)將第二數(shù)據(jù)寫入新交換塊還是寫入一個(gè)具有已賦值結(jié)構(gòu)體的交 換塊;(2-3)如果判斷應(yīng)將第二數(shù)據(jù)寫入新交換塊,則將所述第二數(shù)據(jù) 寫入新交換塊,并對(duì)所述新交換塊的結(jié)構(gòu)體進(jìn)行賦值,否則,將所述 第二數(shù)據(jù)寫入所述具有已賦值結(jié)構(gòu)體的交換塊,并對(duì)該交換塊的結(jié)構(gòu)體重新賦值;(2-4)重復(fù)步驟(2-1)至(2-3),直至完成所述多個(gè)數(shù)據(jù)寫入動(dòng)作。
5. 如權(quán)利要求4所述的閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述 結(jié)構(gòu)體具有以下數(shù)據(jù)結(jié)構(gòu)Struct {OldblockAddress; NcwBlockAddress; ActSector; LogicAddress;}其中,OldBlockAddress表示待寫入數(shù)據(jù)的塊的物理地址, NewBlockAddress表示交換塊的物理地址,ActSector表示當(dāng)前塊中哪 個(gè)扇區(qū)正在被操作系統(tǒng)訪問,LogicAddress表示ActSector所對(duì)應(yīng)的邏 輯扇區(qū)地址。
6. 如權(quán)利要求5所述的閃存的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述 判斷步驟(2-2)進(jìn)一步包括(2-2-1)對(duì)一個(gè)具有已賦值結(jié)構(gòu)體的交換塊進(jìn)行檢查,通過其結(jié) 構(gòu)體中的LogicAddress值計(jì)算出已寫入了數(shù)據(jù)的扇區(qū)物理地址;(2-2-2 )判斷待寫入的第二數(shù)據(jù)的扇區(qū)地址與所述已寫入了數(shù)據(jù) 的扇區(qū)物理地址是否連續(xù);(2-2-3)如果連續(xù),則所述第二數(shù)據(jù)應(yīng)寫入所述具有已賦值結(jié)構(gòu) 體的交換塊,否則,重復(fù)步驟(2-2-1)至(2-2-3),直至找到所述第 二數(shù)據(jù)應(yīng)寫入的、具有已賦值結(jié)構(gòu)體的交換塊,或者完成對(duì)所有具有 已賦值結(jié)構(gòu)體的交換塊的檢查。
全文摘要
本發(fā)明公開了一種閃存的數(shù)據(jù)存儲(chǔ)方法,該方法包括以下步驟設(shè)置至少一個(gè)交換塊,并為每個(gè)交換塊設(shè)置相應(yīng)的結(jié)構(gòu)體;將數(shù)據(jù)寫入交換塊,并對(duì)該交換塊的結(jié)構(gòu)體賦值;根據(jù)所述至少一個(gè)交換塊的結(jié)構(gòu)體的值進(jìn)行數(shù)據(jù)搬遷;將每個(gè)結(jié)構(gòu)體的值復(fù)位。通過本發(fā)明的方法,在將數(shù)據(jù)寫入交換塊之后,并不立即進(jìn)行數(shù)據(jù)搬遷,而是待本次寫入操作的所有數(shù)據(jù)均已寫入適當(dāng)交換塊之后再根據(jù)交換塊的結(jié)構(gòu)體統(tǒng)一執(zhí)行數(shù)據(jù)搬遷。因此,本發(fā)明的方法降低了數(shù)據(jù)搬遷頻率,從而提高了數(shù)據(jù)存儲(chǔ)速度。同時(shí),由于減少了閃存的擦寫次數(shù),使得閃存的使用壽命得以延長。
文檔編號(hào)G06F12/02GK101206617SQ20061016786
公開日2008年6月25日 申請(qǐng)日期2006年12月20日 優(yōu)先權(quán)日2006年12月20日
發(fā)明者鐘智淵 申請(qǐng)人:深圳市朗科科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
隆林| 临颍县| 平凉市| 呼和浩特市| 诏安县| 石棉县| 时尚| 铁岭市| 高台县| 太保市| 渑池县| 溧水县| 屯门区| 左权县| 江口县| 玉环县| 苗栗市| 阿拉善左旗| 巴中市| 中方县| 叙永县| 江口县| 澄迈县| 宁强县| 乐陵市| 鹰潭市| 奈曼旗| 邢台县| 高淳县| 眉山市| 长乐市| 尚志市| 宁陕县| 永和县| 南华县| 新沂市| 红安县| 富锦市| 西吉县| 临颍县| 遂川县|