国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      寫(xiě)入數(shù)據(jù)的方法及裝置的制作方法

      文檔序號(hào):6472168閱讀:172來(lái)源:國(guó)知局
      專利名稱:寫(xiě)入數(shù)據(jù)的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種寫(xiě)入數(shù)據(jù)的方法及裝置。
      背景技術(shù)
      閃存屬于存儲(chǔ)器類型的一種,因?yàn)槠渚哂锌梢苿?dòng)性、及保存在閃存上的數(shù)
      據(jù)即便是在斷電情況下仍不會(huì)丟失的優(yōu)點(diǎn)而得到迅速的發(fā)展。在閃存中,寫(xiě)Flash 操作只能把Flash中數(shù)據(jù)從T變到"0" (Bit);擦除操作可以把"0"變?yōu)?1", 但是擦除操作只能針對(duì)整個(gè)"存儲(chǔ)塊"為單位進(jìn)行的。例如 一個(gè)存儲(chǔ)塊的大 小一般為256字節(jié)到1024字節(jié)。
      用戶在需要修改存儲(chǔ)器中某個(gè)存儲(chǔ)塊的數(shù)據(jù)時(shí), 一般是在空存儲(chǔ)塊中寫(xiě)入 需要修改的數(shù)據(jù)。在現(xiàn)有技術(shù)中,通常采用按照一定的順序在一些空存儲(chǔ)塊中 找出 一個(gè)空存儲(chǔ)塊的方法,然后再將修改后的數(shù)據(jù)寫(xiě)入到該空存儲(chǔ)塊中并擦除 修改前的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)。但是每一個(gè)存儲(chǔ)塊可以被寫(xiě)入和擦除的次數(shù)都 是有限的,特別是當(dāng)用戶頻繁的修改某些數(shù)據(jù)或者當(dāng)空存儲(chǔ)塊個(gè)數(shù)不多時(shí),很 容易出現(xiàn)對(duì)序號(hào)排在順序較前的空存儲(chǔ)塊頻繁地執(zhí)行寫(xiě)入或者擦除操作的情 況,久而久之就會(huì)使這些空存儲(chǔ)塊的受損程度增加,使用壽命降低,甚至可能 因此無(wú)法再次使用該存儲(chǔ)塊,導(dǎo)致整個(gè)存儲(chǔ)器的失效。

      發(fā)明內(nèi)容
      本發(fā)明的實(shí)施例提供一種寫(xiě)入數(shù)據(jù)的方法及裝置。以便提高該存儲(chǔ)器中存 儲(chǔ)塊能夠使用的次數(shù)。
      為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案 一種寫(xiě)入^t據(jù)的方法,包括 接收到寫(xiě)入新數(shù)據(jù)的指令; 定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊; 從所有的空存儲(chǔ)塊中隨機(jī)選出 一個(gè)空存儲(chǔ)塊;
      將所述需要修改的數(shù)據(jù)與新數(shù)據(jù)結(jié)合生成更新數(shù)據(jù),將所述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中; 將定位到的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。 一種寫(xiě)入數(shù)據(jù)的裝置,包括 接收模塊,用于接收寫(xiě)入新數(shù)據(jù)的指令; 定位模塊,用于定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊; 選出模塊,用于從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊; 寫(xiě)入模塊,用于將所述需要修改的數(shù)據(jù)與新數(shù)椐結(jié)合生成更新數(shù)據(jù),將所 述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中; 擦除模塊,用于將定位到的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。 本發(fā)明提供的寫(xiě)入數(shù)據(jù)的方法及裝置具有如下有點(diǎn)或有益效果通過(guò)采用 在空存儲(chǔ)塊中隨機(jī)選擇空存儲(chǔ)塊的技術(shù)方案,解決了現(xiàn)有技術(shù)中因?yàn)槭前错樞?進(jìn)行選擇空存儲(chǔ)塊所造成的容易出現(xiàn)對(duì)序號(hào)排在順序較前的空存儲(chǔ)塊頻繁地執(zhí) 行寫(xiě)入或者擦除操作的技術(shù)問(wèn)題,進(jìn)而取得了平衡存儲(chǔ)器中各個(gè)存儲(chǔ)塊受損程 度,增加存儲(chǔ)塊使用次數(shù)的有益效果。


      為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述 中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付
      出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。 圖1為本發(fā)明實(shí)施例1寫(xiě)入數(shù)據(jù)的方法的流程圖2為本發(fā)明實(shí)施例2寫(xiě)入數(shù)據(jù)的裝置的框圖3為本發(fā)明實(shí)施例3寫(xiě)入數(shù)據(jù)的方法的流程圖4為本發(fā)明實(shí)施例4寫(xiě)入數(shù)據(jù)的方法的框圖。
      具體實(shí)施方式
      下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清 楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是 全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造 性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      實(shí)施例1
      本實(shí)施例公開(kāi)一種寫(xiě)入數(shù)據(jù)的方法,如圖1所示,該方法包括如下步驟 101,接收到上層(如計(jì)算機(jī)操作系統(tǒng))發(fā)來(lái)的向存儲(chǔ)塊中寫(xiě)入新數(shù)據(jù)的指令。
      102,在存儲(chǔ)器的所有數(shù)據(jù)存儲(chǔ)塊中查找出需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊。
      103,在存儲(chǔ)器所有的空存儲(chǔ)塊中隨機(jī)的選出一個(gè)空存儲(chǔ)塊,并將該空存儲(chǔ) 塊作為選出的空存儲(chǔ)塊。
      104, 將數(shù)據(jù)中需要修改部分進(jìn)行修改,并將修改后的新數(shù)據(jù)與數(shù)據(jù)相結(jié)合 成為更新數(shù)據(jù),并將該更新數(shù)據(jù)寫(xiě)入上述選出的空存儲(chǔ)塊中。
      105, 將101步驟中定位到的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)擦除,使該數(shù)據(jù)存儲(chǔ)塊成 為一個(gè)空存儲(chǔ)塊。。
      本實(shí)施例提供的寫(xiě)入數(shù)據(jù)的方法,通過(guò)采用將要寫(xiě)入的數(shù)據(jù)寫(xiě)入在隨機(jī)選 出的空存儲(chǔ)塊中的技術(shù)方案,取得了可實(shí)現(xiàn)均勻的對(duì)各個(gè)存儲(chǔ)塊執(zhí)行寫(xiě)入操作 的有益效果。進(jìn)一步的,又因?yàn)槊總€(gè)存儲(chǔ)塊被執(zhí)行的寫(xiě)入操作的次數(shù)可是均勻 的數(shù)值,所以克服了某些個(gè)別的存儲(chǔ)塊因?yàn)楸粓?zhí)行的寫(xiě)入操作的次數(shù)過(guò)多,導(dǎo) 致的受損程度較嚴(yán)重,甚至無(wú)法再次使用的技術(shù)問(wèn)題,同時(shí)也提高了存儲(chǔ)塊可 以使用的次數(shù)。
      實(shí)施例2
      本實(shí)施例公開(kāi)一種寫(xiě)入數(shù)據(jù)的裝置,如圖2所示,該裝置包括接收模塊 21,定位模塊22,選出模塊23,寫(xiě)入模塊24,擦除模塊25。
      接收模塊21用于接收寫(xiě)入新數(shù)據(jù)的指令;定位模塊22用于定位需要修改 的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊;選出模塊23用于從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊;寫(xiě)入模塊24用于將所述數(shù)據(jù)與新數(shù)據(jù)結(jié)合后為更新數(shù)據(jù),并將所述 更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中;擦除模塊25用于將定位到的數(shù)據(jù)存 儲(chǔ)塊擦除為空存儲(chǔ)塊。
      本實(shí)施例提供的寫(xiě)入數(shù)據(jù)的裝置便于寫(xiě)入數(shù)據(jù)的方法的實(shí)現(xiàn),同時(shí)也可提 高例如閃存等,存儲(chǔ)塊容易受損的存儲(chǔ)器的使用壽命。
      實(shí)施例3
      本實(shí)施例結(jié)合對(duì)存儲(chǔ)塊中的數(shù)據(jù)進(jìn)行修改時(shí)的場(chǎng)景,具體描述寫(xiě)入數(shù)據(jù)的 方法,如圖3所示,該方法包括如下步驟
      為了闡述方^f更,假i殳在本實(shí)施例中閃存存儲(chǔ)區(qū)的物理地址為從0x0000000 到0x00007800,設(shè)每個(gè)存儲(chǔ)塊為0x100個(gè)字節(jié),則共有0x78個(gè)存儲(chǔ)塊。相應(yīng)地, 各存儲(chǔ)塊的物理塊號(hào)為0x00到0x77。在每個(gè)存儲(chǔ)塊的首字節(jié)用來(lái)標(biāo)記該存儲(chǔ)塊 邏輯塊號(hào),文件可以看做是多個(gè)存儲(chǔ)塊的集合并且文件中的存儲(chǔ)塊是根據(jù)各個(gè) 存儲(chǔ)塊的邏輯塊號(hào)聯(lián)結(jié)起來(lái)的。
      根據(jù)存儲(chǔ)塊邏輯塊號(hào)的不同,在本實(shí)施例中存儲(chǔ)塊分為了兩種類型
      空存儲(chǔ)塊,指邏輯塊號(hào)是0xFF的存儲(chǔ)塊??諗?shù)據(jù)區(qū)指空存儲(chǔ)塊中首字節(jié)(即 邏輯塊號(hào))以外的字節(jié)所組成的區(qū)域,則如果空數(shù)據(jù)區(qū)的所有字節(jié)都是OxFF, 該空存儲(chǔ)塊隨時(shí)可以寫(xiě)入數(shù)據(jù);否則,該空存儲(chǔ)塊為不能直接寫(xiě)入數(shù)據(jù)的空存 儲(chǔ)塊,需對(duì)該空存儲(chǔ)塊進(jìn)行擦除操作,即使該空存儲(chǔ)塊所有字節(jié)變?yōu)?xFF, 則空存儲(chǔ)塊就成為隨時(shí)可以寫(xiě)入數(shù)據(jù)的空存儲(chǔ)塊。特別地,把不能直接寫(xiě)入數(shù) 據(jù)的空存儲(chǔ)塊稱為"有記錄的空存儲(chǔ)塊"。
      數(shù)據(jù)存儲(chǔ)塊,指邏輯塊號(hào)在0x01到0x78范圍內(nèi)的存儲(chǔ)塊。數(shù)據(jù)區(qū)數(shù)據(jù)指 數(shù)據(jù)存儲(chǔ)塊中首字節(jié)(即邏輯塊號(hào))以外的字節(jié)所存儲(chǔ)的數(shù)據(jù)。數(shù)據(jù)區(qū)數(shù)據(jù)被 認(rèn)為是有效的文件數(shù)據(jù)。
      301,在存儲(chǔ)器通電后,統(tǒng)計(jì)存儲(chǔ)器中空存儲(chǔ)塊的總數(shù),并生成一個(gè)不大于該總數(shù)的隨機(jī)數(shù)。
      在本實(shí)施例中具體為在內(nèi)存開(kāi)辟一個(gè)變量N-O,設(shè)置指針P指向閃存存 儲(chǔ)區(qū)物理首地址,即P二0x00000000,指針P從0x00000000開(kāi)始,到0x00007800 結(jié)束,P的步長(zhǎng)是0x100,即P-P+0x100,則P總是指向存儲(chǔ)塊邏輯塊號(hào)。判斷 P所指向的存儲(chǔ)塊邏輯塊號(hào)是否為OxFF。如果是OxFF,使N=N+1,當(dāng) P=0x00007800時(shí),N的值就是空存儲(chǔ)塊的總數(shù)。根據(jù)得到的空存儲(chǔ)塊的總數(shù)N 生成一個(gè)隨機(jī)數(shù)M。隨積Jt的M的范圍是K-lVK-N。 M可以是通過(guò)相關(guān)的一 個(gè)函數(shù)f(M)產(chǎn)生的,也可以單純的選出K-NK-N之間的整數(shù)。這兩種方法 都可以用于生成本實(shí)施例中的隨^L數(shù)。
      302,判斷空存儲(chǔ)塊的總數(shù)是否與生成的隨機(jī)數(shù)相同,如果空存儲(chǔ)塊的總數(shù) 與生成的隨機(jī)數(shù)相同,則執(zhí)行步驟303;如果空存儲(chǔ)塊的總數(shù)與生成的隨機(jī)數(shù)不 同,則執(zhí)行步驟308。
      在本實(shí)施例中具體為判斷M是否等于N,如果M等于N則執(zhí)行步驟303; 如果M不等于N則執(zhí)行步驟308。
      當(dāng)存儲(chǔ)器中空存儲(chǔ)塊的個(gè)數(shù)很少時(shí),根據(jù)空存儲(chǔ)塊總數(shù)生成的隨機(jī)數(shù),與 空存儲(chǔ)塊總數(shù)相等的可能性就會(huì)變大。在本實(shí)施例中,利用該可能性,通過(guò)采 用判斷空存儲(chǔ)塊的總數(shù)是否與隨機(jī)數(shù)相等的方案,取得了可了解到空存儲(chǔ)塊目 前總數(shù)狀況的技術(shù)效果。而且在本實(shí)施例的此過(guò)程中,計(jì)算機(jī)生成的隨機(jī)數(shù)就 相當(dāng)于用戶設(shè)置的一個(gè)預(yù)設(shè)數(shù)值,該預(yù)設(shè)數(shù)值相當(dāng)于一個(gè)門(mén)限,可了解到當(dāng)前 空存儲(chǔ)塊總數(shù)是否處于很少的狀況,以便釆取相應(yīng)的措施。
      303,統(tǒng)計(jì)存儲(chǔ)器中數(shù)據(jù)存儲(chǔ)塊的總數(shù)并隨機(jī)生成一個(gè)不大于該數(shù)據(jù)存儲(chǔ)塊 總數(shù)的隨機(jī)數(shù);同時(shí)根據(jù)301步驟中統(tǒng)計(jì)出的空存儲(chǔ)塊的總數(shù),隨機(jī)生成一個(gè) 不大于該空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù)。
      在本實(shí)施例中具體為申請(qǐng)兩個(gè)內(nèi)存變量A和B。用A記錄在存儲(chǔ)器中查 找到的數(shù)據(jù)存儲(chǔ)塊的總數(shù),用B記錄在存儲(chǔ)器中查找到的空存儲(chǔ)塊的總數(shù)(在 本實(shí)施例中使B=N既可),并根據(jù)A的值生成一個(gè)隨機(jī)數(shù)a, a的范圍是1<= a<=A;根據(jù)B的值生成一個(gè)隨機(jī)數(shù)b, b的范圍是1<= b<=B。
      304,根據(jù)數(shù)據(jù)存儲(chǔ)塊總數(shù)生成的隨機(jī)數(shù)在數(shù)據(jù)存儲(chǔ)塊中選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊;同時(shí)根據(jù)空存儲(chǔ)塊總數(shù)生成的隨機(jī)數(shù)在空存儲(chǔ)塊中選出一個(gè)目標(biāo)空存儲(chǔ)塊。 在本實(shí)施例中具體為在內(nèi)存開(kāi)辟一個(gè)局部變量N4 = 0,設(shè)置指針T指向 閃存存儲(chǔ)區(qū)物理首地址,即T二0x00000000,指4十T從0x00000000開(kāi)始,到 0x00007800結(jié)束,指針T的步長(zhǎng)是0x100,即T:T+0x100,則指針T總是指向 存儲(chǔ)塊邏輯塊號(hào)。判斷指針T當(dāng)前所指向的存儲(chǔ)塊邏輯塊號(hào)是否在0x01至0x78 范圍內(nèi)。如果是,則N4-N4+1。當(dāng)N4-a的時(shí)候,指針T當(dāng)前所指向的數(shù)據(jù)存 儲(chǔ)塊即為根據(jù)隨機(jī)數(shù)a所選出的數(shù)據(jù)存儲(chǔ)塊n4,并選定該數(shù)據(jù)存儲(chǔ)塊n4。
      同時(shí),在內(nèi)存開(kāi)辟一個(gè)局部變量N3 = 0,設(shè)置指針S指向閃存存儲(chǔ)區(qū)物理 首地址,即S-Ox00000000,指針S從0x00000000開(kāi)始,到0x00007800結(jié)束, 指針S的步長(zhǎng)是0x100,即S-S+0x100,則指針S總是指向存儲(chǔ)塊邏輯塊號(hào)。 判斷指針S當(dāng)前所指向的存儲(chǔ)塊邏輯塊號(hào)是否為OxFF。如果是OxFF,則 N3=N3+1。當(dāng)N3-b的時(shí)候,指針S所對(duì)應(yīng)的空存儲(chǔ)塊即為根據(jù)隨機(jī)數(shù)b所選 出的空存儲(chǔ)塊n3,并選定該空存儲(chǔ)塊n3,即為目標(biāo)空存儲(chǔ)塊n3。
      本實(shí)施例303, 304步驟中關(guān)于隨機(jī)選出的空存儲(chǔ)塊n3的過(guò)程也可以釆用 下述方法實(shí)現(xiàn)
      本方法主要通過(guò)建立空存儲(chǔ)塊列表來(lái)實(shí)現(xiàn)隨機(jī)查找一個(gè)空存儲(chǔ)塊的目的。 3031,遍歷存儲(chǔ)器中所有的存儲(chǔ)塊,查找到目前存儲(chǔ)器中所有空存儲(chǔ)塊。 3041,建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊
      的物理塊號(hào)列表,從所述列表中隨機(jī)選出一個(gè)空存儲(chǔ)塊。
      在本實(shí)施例中,具體方法可為設(shè)置指針P指向閃存存儲(chǔ)器中物理地址最
      小的存儲(chǔ)塊的首地址。那么P-P+i"0xl00)就表示指向第i+l個(gè)存儲(chǔ)塊的首地址 (因?yàn)槊總€(gè)存儲(chǔ)塊的長(zhǎng)度為0x100字節(jié),所以指針P總是指向每個(gè)存儲(chǔ)塊首地
      址)。i的值從0到0x77,共0x78個(gè)存儲(chǔ)塊,則可以通過(guò)i的值來(lái)找到一個(gè)存儲(chǔ)
      塊的首地址。
      在內(nèi)存中開(kāi)辟一個(gè)數(shù)組freeblock[78]用來(lái)記錄空存儲(chǔ)塊的i的值。讓i的值 從0遍歷到0x77,判斷i值所對(duì)應(yīng)的存儲(chǔ)塊是否為空存儲(chǔ)塊,如果是空存儲(chǔ)塊, 則將i的值記錄到freeblock中。比如當(dāng)前時(shí)刻,空存儲(chǔ)塊的個(gè)數(shù)為5個(gè),對(duì)應(yīng) 的i值分別是0x2, 0x12, 0x33, 0x40, 0x59,那么freeblock
      =0x2, freeblock[l]=0x12, freeblock[2]= 0x33, freeblock[3]= Ox 40, freeblock[4]= Ox 59,產(chǎn)生一個(gè)1 5 之間的隨機(jī)數(shù)。比如這個(gè)隨機(jī)數(shù)是2,那么就可以通過(guò)找freeblock數(shù)組第2個(gè) 值或者第5-2個(gè)值(即找freeblock[2-l]或者找freeblock[5-2],5是空存儲(chǔ)塊的個(gè) 數(shù)),從而得到一個(gè)空存儲(chǔ)塊的i值。也可以根據(jù)i值,i"xlOO就是這個(gè)空存儲(chǔ) 塊的首地址。所以可以在數(shù)組freeblock中直接記錄空存儲(chǔ)塊的首地址,然后從 中隨機(jī)選出一個(gè)空存儲(chǔ)塊。
      305, 判斷所述隨機(jī)選出的空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊,如果判斷的 結(jié)果為是,則執(zhí)行步驟306;否則,直接執(zhí)行步驟307。
      在本實(shí)施例中具體為判斷空存儲(chǔ)塊n3是否為有記錄的空存儲(chǔ)塊。
      306, 擦除該有記錄的空存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù),使該有記錄的空存儲(chǔ)塊為空 存儲(chǔ)塊。
      307,將選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入到選出的空存儲(chǔ)塊中,然后擦除選 出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)。
      在本實(shí)施例中具體為將數(shù)據(jù)存儲(chǔ)塊n4中存儲(chǔ)的數(shù)據(jù)全部讀入到內(nèi)存中, 然后將邏輯塊號(hào)(即首字節(jié))以外的數(shù)據(jù)寫(xiě)入到通過(guò)305步驟隨機(jī)選出的空存 儲(chǔ)塊n3中,當(dāng)該數(shù)據(jù)全部寫(xiě)完后,再將數(shù)據(jù)存儲(chǔ)塊n4的邏輯塊號(hào)寫(xiě)入空存儲(chǔ) 塊n3中,同時(shí)擦除數(shù)據(jù)存儲(chǔ)塊n4中存儲(chǔ)的數(shù)據(jù)。即將空存儲(chǔ)塊n3變成數(shù)據(jù)存 儲(chǔ)塊n3,將數(shù)椐存儲(chǔ)塊n4變成空存儲(chǔ)塊n4。
      本實(shí)施例提供的方案因?yàn)榭紤]到了有些數(shù)據(jù)存儲(chǔ)塊可能一旦被寫(xiě)入了長(zhǎng)期 有效的數(shù)據(jù),就很少被執(zhí)行寫(xiě)入操作的情況,所以在存儲(chǔ)器通電后,采用了可 以將隨機(jī)選擇的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)轉(zhuǎn)移到隨機(jī)選擇的空存儲(chǔ)塊中的技術(shù)方 案,那么即便是數(shù)據(jù)存儲(chǔ)塊被寫(xiě)入長(zhǎng)期有效的數(shù)據(jù),仍舊可以將該數(shù)據(jù)存儲(chǔ)塊 變成空存儲(chǔ)塊,使其參與到可被執(zhí)行寫(xiě)入數(shù)據(jù)操作的場(chǎng)景中,取得了可以使存 儲(chǔ)塊被執(zhí)行寫(xiě)入操作的次數(shù)得到均衡的有益效果。
      308,設(shè)置計(jì)數(shù)器并使該計(jì)數(shù)器的初始計(jì)數(shù)值為零,同時(shí)等待上層(如計(jì) 算機(jī)操作系統(tǒng))發(fā)出寫(xiě)入新數(shù)據(jù)的指令。
      在本實(shí)施例中具體為在內(nèi)存中申請(qǐng)一個(gè)變量J,用來(lái)記錄修改存儲(chǔ)器的次 數(shù),并設(shè)置J的初始值為O,然后等待上層發(fā)出的需要修改數(shù)據(jù)的指令。每當(dāng)對(duì)存儲(chǔ)器中的存儲(chǔ)塊執(zhí)行一次寫(xiě)入操作時(shí),計(jì)數(shù)器則在初始值上累計(jì) 加一,以便記錄存儲(chǔ)器被執(zhí)行過(guò)的寫(xiě)入操作的次數(shù)。
      309, 接收到上層發(fā)來(lái)的寫(xiě)入新數(shù)據(jù)的指令并查找到需要修改的數(shù)據(jù)所在的 數(shù)椐存儲(chǔ)塊。
      在本實(shí)施例中具體為若需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊x邏輯塊號(hào)為 X,設(shè)置指針P指向閃存存儲(chǔ)區(qū)物理首地址,即P-0x00000000,指針P從 0x00000000開(kāi)始,到0x00007800結(jié)束,P的步長(zhǎng)是0x100,即P-P+0x100,則 P總是指向存儲(chǔ)塊邏輯塊號(hào)。判斷P當(dāng)前所指向的存儲(chǔ)塊邏輯塊號(hào)是否為x。如 果是,則該數(shù)據(jù)存儲(chǔ)塊為需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊x。如果不是,則 P-P+0x100繼續(xù)查找。
      在本實(shí)施例中,也可以通過(guò)物理塊號(hào)來(lái)查找到需要修改的數(shù)據(jù)所在的數(shù)據(jù) 存儲(chǔ)塊,假如該需要修改得數(shù)據(jù)存儲(chǔ)塊的物理塊號(hào)為Y,則令一個(gè)指針P從 0x00000000開(kāi)始,到0x00007800結(jié)束,P的步長(zhǎng)是0x100,即使P-Y^x100, P所對(duì)應(yīng)的存儲(chǔ)塊即為需要修改得數(shù)據(jù)存儲(chǔ)塊。
      310, 統(tǒng)計(jì)存儲(chǔ)器中空存儲(chǔ)塊的總數(shù),并生成一個(gè)不大于該空存儲(chǔ)塊總數(shù)范 圍內(nèi)的隨才幾#:。
      在本實(shí)施例中具體為在內(nèi)存開(kāi)辟一個(gè)變量N 2= 0,設(shè)置指針P指向閃存存 卡者區(qū)物理首地址,即P-0xOO0O0O00,指針P從0x00000000開(kāi)始,到0x00007800 結(jié)束,P的步長(zhǎng)是0x100,即P-P+0x100,則P總是指向存儲(chǔ)塊邏輯塊號(hào)。判斷 P所指向的存儲(chǔ)塊邏輯塊號(hào)是否為0xFF,如果是0xFF,則使N2-N2+l。當(dāng) P=0x00007800時(shí),N2的值就是空存儲(chǔ)塊的總數(shù)。根據(jù)得到的空存儲(chǔ)塊的總數(shù) N2生成一個(gè)隨機(jī)數(shù)w。隨機(jī)數(shù)w的范圍是1<= w<=N2。 w可以是通過(guò)相關(guān)的一 個(gè)函數(shù)f(w)產(chǎn)生的,也可以單純的選出K-w〈二N2之間的整數(shù)。這兩種方法 都可以用于生成本實(shí)施例中的隨才幾數(shù)。
      311,在存儲(chǔ)器中查找空存儲(chǔ)塊,對(duì)查找到的每一個(gè)空存儲(chǔ)塊進(jìn)行計(jì)數(shù),當(dāng) 計(jì)數(shù)的值與隨機(jī)數(shù)相等時(shí),選定當(dāng)前查找到的空存儲(chǔ)塊,并將該空存儲(chǔ)塊作為 隨機(jī)選出的空存儲(chǔ)塊。
      在本實(shí)施例中具體為在內(nèi)存開(kāi)辟一個(gè)局部變量N5二0,設(shè)置指針Y指向閃存存儲(chǔ)區(qū)物理首地址,即Y二0x00000000,指針Y從0x00000000開(kāi)始,到 0x00007800結(jié)束,指針Y的步長(zhǎng)是0x100,即Y=Y+0xl00,則指針S總是指向 存儲(chǔ)塊邏輯塊號(hào)。判斷指針Y當(dāng)前所指向的存儲(chǔ)塊邏輯塊號(hào)是否為0xFF。如果 是OxFF ,則N5=N5+1 。當(dāng)N5 = w的時(shí)候,指針Y所對(duì)應(yīng)的空存儲(chǔ)塊即為根據(jù) 隨機(jī)數(shù)w所選出的空存儲(chǔ)塊n5,并選定該空存儲(chǔ)塊n5。
      本實(shí)施例310, 311步驟中關(guān)于隨機(jī)選出的空存儲(chǔ)塊n5的過(guò)程也可以采用 通過(guò)建立空存儲(chǔ)塊列表來(lái)實(shí)現(xiàn)隨機(jī)查找一個(gè)空存儲(chǔ)塊的方法。具體的操作方法 與步驟3031和3041的方法相同,在這里不在進(jìn)行贅述。
      312, 判斷隨機(jī)選出的空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊,如果是,則執(zhí)行 步驟313;如果否,則直接執(zhí)行步驟314。
      313, 擦除該有記錄的空存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù),使該有記錄的空存儲(chǔ)塊成為 空存儲(chǔ)塊。
      314, 將309步驟中查找到的數(shù)據(jù)存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù)讀入內(nèi)存中,保持邏 輯塊號(hào)不變,同時(shí)在內(nèi)存中將數(shù)據(jù)區(qū)中需要修改的數(shù)據(jù)修改完,然后先將該修 改完數(shù)據(jù)與數(shù)據(jù)區(qū)數(shù)據(jù)相結(jié)合生成的更新數(shù)據(jù)(不含邏輯塊號(hào))寫(xiě)入通過(guò)312 步驟隨機(jī)選出的空存儲(chǔ)塊中,再將邏輯塊號(hào)寫(xiě)入到該空存儲(chǔ)塊中。
      在本實(shí)施例中,采用了先將更新數(shù)據(jù)寫(xiě)入所述空存儲(chǔ)塊,后將邏輯塊號(hào)寫(xiě) 入所述空存儲(chǔ)塊的技術(shù)方案,取得了避免在寫(xiě)入過(guò)程中,因?yàn)榘l(fā)生掉電所導(dǎo)致 寫(xiě)入數(shù)據(jù)不全,使該空存儲(chǔ)塊處于"有記錄的空存儲(chǔ)塊"狀態(tài)的有益效果,同 時(shí)也使該有記錄的空存儲(chǔ)塊不會(huì)錯(cuò)誤的成為數(shù)據(jù)存儲(chǔ)塊。
      315, 擦除309步驟中查找到的數(shù)據(jù)存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù),使該數(shù)據(jù)存儲(chǔ)塊 成為空存儲(chǔ)塊。
      314和315步驟在本實(shí)施例中具體為將數(shù)據(jù)存儲(chǔ)塊x的數(shù)據(jù)讀入內(nèi)存中, 保持邏輯塊號(hào)不變的同時(shí),在內(nèi)存中將數(shù)據(jù)區(qū)中需要修改的數(shù)據(jù)修改完,先將
      修改后數(shù)據(jù)與數(shù)據(jù)區(qū)數(shù)椐結(jié)合生成的更新數(shù)據(jù)全部寫(xiě)入到通過(guò)步驟311查找到 的空存儲(chǔ)塊n5中,再將數(shù)據(jù)存儲(chǔ)塊x邏輯塊號(hào)寫(xiě)入到該空存儲(chǔ)塊n5中(即把 空存儲(chǔ)塊n5變成數(shù)據(jù)存儲(chǔ)塊n5 ),同時(shí)擦除數(shù)據(jù)存儲(chǔ)塊x中存儲(chǔ)的數(shù)據(jù),使數(shù) 據(jù)存儲(chǔ)塊x成為空存儲(chǔ)塊(即使該數(shù)據(jù)存儲(chǔ)塊的所有字節(jié)變?yōu)镺xFF)。316,對(duì)所設(shè)置的計(jì)數(shù)器的計(jì)數(shù)值上加一。 在本實(shí)施例中具體為使J-J+1。
      317,判斷計(jì)數(shù)器的計(jì)數(shù)值是否達(dá)到預(yù)定次數(shù),如果判斷的結(jié)果為達(dá)到預(yù)定 次數(shù),則執(zhí)行步驟318;如果判斷的結(jié)果為未達(dá)到預(yù)定次數(shù),則本次操作結(jié)束。
      在本實(shí)施例中具體為設(shè)置預(yù)設(shè)次數(shù)為30,判斷J值是否等于30,如果J 值等于30,則執(zhí)行步驟318;否則,執(zhí)行步驟324。
      318,統(tǒng)計(jì)存儲(chǔ)器中數(shù)椐存儲(chǔ)塊的總數(shù)并隨機(jī)生成一個(gè)不大于該數(shù)據(jù)存儲(chǔ)塊 總數(shù)的隨機(jī)數(shù);同時(shí)統(tǒng)計(jì)存儲(chǔ)器中空存儲(chǔ)塊的總數(shù)并隨機(jī)生成一個(gè)不大于該空 存儲(chǔ)塊總數(shù)的隨機(jī)數(shù)。
      在本實(shí)施例中具體方法與303步驟中的具體實(shí)施方式
      相同。
      319,根據(jù)數(shù)據(jù)存儲(chǔ)塊總數(shù)生成的隨機(jī)數(shù)在數(shù)據(jù)存儲(chǔ)塊中選出一個(gè)數(shù)據(jù)存儲(chǔ) 塊;同時(shí)根據(jù)空存儲(chǔ)塊總數(shù)生成的隨機(jī)數(shù)在空存儲(chǔ)塊中選出一個(gè)目標(biāo)空存儲(chǔ)塊。
      在本實(shí)施例中具體方法與304步驟中的具體實(shí)施方式
      相同。
      320,判斷該隨機(jī)選出的空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊,如果是,則執(zhí) 行步驟321;如杲否,則直接執(zhí)行步驟322。
      在本實(shí)施例中具體方法與305步驟中的具體實(shí)施方式
      相同。
      321, 擦除該有記錄的空存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù),使該有記錄的空存儲(chǔ)塊為空 存儲(chǔ)塊。
      在本實(shí)施例中具體方法與306步驟中的具體實(shí)施方式
      相同。
      322, 將選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入到選出的空存儲(chǔ)塊中,然后擦除選 出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù),使該數(shù)據(jù)存儲(chǔ)塊成為空存儲(chǔ)塊。
      在本實(shí)施例中具體方法與307步驟中的具體實(shí)施方式
      相同。 當(dāng)計(jì)數(shù)器的值到達(dá)預(yù)定次數(shù)時(shí),說(shuō)明存儲(chǔ)器被執(zhí)行的寫(xiě)入操作的次數(shù)已經(jīng) 達(dá)到了預(yù)設(shè)的次數(shù),此時(shí)就代表了目前存儲(chǔ)器中存在的空儲(chǔ)塊因被執(zhí)行了預(yù)定 次數(shù)的寫(xiě)入操作而受到了 一定程度上的損傷。為了降低目前存在的空存儲(chǔ)塊受 損程度,本實(shí)施例采用將隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊中的數(shù)據(jù)轉(zhuǎn)移到隨機(jī)選出的空 存儲(chǔ)塊中的技術(shù)方案,在降低了目前空存儲(chǔ)塊受損程度的同時(shí)也取得了可均衡 各個(gè)存儲(chǔ)塊被執(zhí)行寫(xiě)入操作次數(shù)的有益效果。323,將計(jì)數(shù)器的計(jì)數(shù)值清零。 在本實(shí)施例中具體為使J-0。 324,結(jié)束流程。
      本實(shí)施例提供的方案,通過(guò)采用將需要修改的數(shù)據(jù)寫(xiě)入隨機(jī)選出的空存儲(chǔ) 塊的技術(shù)方案,克服了現(xiàn)有技術(shù)中,因?yàn)槭前错樞蜻x出空存儲(chǔ)塊而導(dǎo)致的容易 出現(xiàn)對(duì)序號(hào)排在順序較前的空存儲(chǔ)塊頻繁地執(zhí)行寫(xiě)入操作的情況,取得了可使 對(duì)存儲(chǔ)器中各個(gè)存儲(chǔ)塊均衡的執(zhí)行寫(xiě)入操作的技術(shù)效果,提高了存儲(chǔ)塊可使用 的次數(shù),也相當(dāng)于延長(zhǎng)存儲(chǔ)器可使用的壽命。而且在寫(xiě)入數(shù)據(jù)的過(guò)程中先寫(xiě)數(shù) 據(jù)后寫(xiě)入邏輯塊號(hào),因而具有良好的防掉電功能。
      實(shí)施例4
      本實(shí)施例具體描述了一種寫(xiě)入數(shù)據(jù)的裝置,如圖4所示,該裝置包括第 二判斷模塊401,第二隨機(jī)交換模塊402,接收模塊403,定位模塊404,選出 模塊405,第一判斷模塊408,第一清除模塊409,寫(xiě)入模塊406,擦除模塊407, 累計(jì)模塊410,第三判斷模塊411,第三隨機(jī)交換模塊412。
      第二判斷模塊401用于在存儲(chǔ)器通電后,判斷當(dāng)前空存儲(chǔ)塊總數(shù)是否小于 預(yù)設(shè)數(shù)值;第二隨機(jī)交換模塊402用于當(dāng)前空存儲(chǔ)塊總數(shù)小于預(yù)設(shè)數(shù)值時(shí),將 隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ)塊中,并將所述隨 機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊;接收模塊403用于接收寫(xiě)入新數(shù)據(jù)的指 令;定位模塊404用于定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊;選出模塊405 用于從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊;第一判斷模塊408用于判斷 所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊;第一清除模塊409用于 當(dāng)判斷模塊判斷是時(shí),將所述有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊;寫(xiě)入模塊406 用于將所述數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述更新l史據(jù)寫(xiě)入所述隨機(jī)選出 的空存儲(chǔ)塊中;擦除模塊407用于擦除定位到的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù);累計(jì)模 塊410用于將每次對(duì)存儲(chǔ)塊執(zhí)行的寫(xiě)入操作的次數(shù)累計(jì)到寫(xiě)入操作的總次數(shù)中; 第三判斷模塊411用于判斷所述寫(xiě)入操作的總次數(shù)是否大于預(yù)設(shè)次數(shù);第三隨 機(jī)交換模塊412用于當(dāng)寫(xiě)入操作的總次數(shù)大于預(yù)設(shè)次數(shù)時(shí),將隨機(jī)選出的數(shù)據(jù)
      存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ)塊中,并將所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊,同時(shí)將寫(xiě)入操作的總次數(shù)歸零。
      在本實(shí)施例中,第二隨機(jī)交換模塊402包括第一選出單元4021,第二選 出單元4022,第二判斷單元4025,第二清除單元4026,第二寫(xiě)入單元4023, 第二擦除單元4024。
      第一選出單元4021用于從所有的數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊; 第二選出單元4022用于從所有的空存儲(chǔ)塊中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊;笫二 判斷單元4025用于判斷所述目標(biāo)空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊;第二清除 單元4026用于當(dāng)?shù)诙袛鄦卧袛嗍菚r(shí),將有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊; 第二寫(xiě)入單元4023用于將所述數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入所述目標(biāo)空存儲(chǔ)塊中; 第二擦除單元4024用于將隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。
      其中,第一選出單元4021包括第一統(tǒng)計(jì)子單元40210,第一生成子單元 40211,第一定位子單元40212。
      第一統(tǒng)計(jì)子單元40210用于統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)塊的個(gè)數(shù);第一生成子單元40211 用于生成一個(gè)不大于所有數(shù)據(jù)存儲(chǔ)塊總數(shù)的隨機(jī)數(shù);第一定位子單元40212,用 于利用所述隨機(jī)數(shù)定位一個(gè)數(shù)據(jù)存儲(chǔ)塊。
      特別的,本實(shí)施例的裝置中第 一選出單元4021可由第二查找子單元來(lái)替換; 相應(yīng)地,第二選出單元4022可由第二建立子單元;相應(yīng)地,第二寫(xiě)入單元4023 可由第二選出子單元來(lái)替換。
      第二查找子單元用于遍歷所有的存儲(chǔ)塊查找所有空存儲(chǔ)塊;第二建立子單 元用于建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊的物 理塊號(hào)列表;第二選出子單元用于從所述列表中隨機(jī)選出一個(gè)目標(biāo)空存儲(chǔ)塊。
      在本實(shí)施例中,該第二選出單元4022包括第二統(tǒng)計(jì)子單元40221,第二 生成子單元40222,第二定位子單元40223。
      第二統(tǒng)計(jì)子單元40221用于統(tǒng)計(jì)空存儲(chǔ)塊的個(gè)數(shù);第二生成子單元40222 用于生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù);第二定位子單元40223用于 利用所述隨機(jī)數(shù)定位一個(gè)目標(biāo)空存儲(chǔ)塊。
      在本實(shí)施例中,選出模塊405包括統(tǒng)計(jì)單元4051,生成單元4052,定位 單元4053。統(tǒng)計(jì)單元4051用于統(tǒng)計(jì)空存儲(chǔ)塊的個(gè)數(shù);生成單元4052用于生成一個(gè)不 大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù);定位單元4053用于利用所述隨機(jī)數(shù)定位一個(gè) 空存儲(chǔ)塊。
      特別的,本實(shí)施例裝置中的選出模塊405的統(tǒng)計(jì)單元4051,生成單元4052, 定位單元4053還可以用查找單元,建立單元和選出單元來(lái)代替。其中,查找單 元用于遍歷所有的存儲(chǔ)塊查找到所有空存儲(chǔ)塊;建立單元用于建立一個(gè)包含有 查找到的所有空存儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊的物理塊號(hào)列表;選出單元 用于從所述列表中隨機(jī)選出一個(gè)空存儲(chǔ)塊。
      另外本實(shí)施例裝置中的定位模塊404定位的數(shù)據(jù)存儲(chǔ)塊由邏輯塊號(hào)和數(shù)據(jù) 區(qū)數(shù)據(jù)組成,則所述需要修改的數(shù)據(jù)為數(shù)據(jù)區(qū)數(shù)據(jù)。那么相應(yīng)的,寫(xiě)入模塊406 先將數(shù)據(jù)區(qū)數(shù)據(jù)與新數(shù)據(jù)結(jié)合寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中,再將所述邏輯 塊號(hào)寫(xiě)入所述隨才幾選出的空存儲(chǔ)塊中。
      在本實(shí)施例中的寫(xiě)入沖莫塊406包括讀取單元4061,結(jié)合單元4062,寫(xiě)入 單元4063。
      讀取單元4061用于將所述數(shù)據(jù)讀入到內(nèi)存中;結(jié)合單元4062用于在內(nèi)存 中將所述數(shù)據(jù)區(qū)數(shù)據(jù)與新數(shù)據(jù)結(jié)合后生成更新數(shù)據(jù);寫(xiě)入單元4063用于將所述 更新數(shù)據(jù)與邏輯塊號(hào)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中。
      本實(shí)施例中的第三隨機(jī)交換模塊412包括第三選出單元4120,第四選出 單元4121,第三判斷單元4125,第三清除單元4126,第三寫(xiě)入單元4122,第 三擦除單元4123,第三歸零單元4124。
      第三選出單元4120用于從所有的數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊; 第四選出單元4121用于從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)目標(biāo)空存儲(chǔ)塊;第三 判斷單元4125用于判斷所述目標(biāo)空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊;第三清除 單元4126用于當(dāng)?shù)诙袛鄦卧袛嗍菚r(shí),將有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊; 第三寫(xiě)入單元4122用于將所述數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入所述目標(biāo)空存儲(chǔ)塊中; 第三擦除單元4123用于將所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊;第三歸 零單元4124用于將寫(xiě)入操作的總次數(shù)歸零。
      本實(shí)施例裝置中的第三選出單元4120包括第三統(tǒng)計(jì)子單元41200用于統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)塊的個(gè)數(shù);第三生成子單元41201用于生成一個(gè)不大于所有數(shù)據(jù)存 儲(chǔ)塊總數(shù)的隨機(jī)數(shù);第三定位子單元41202用于利用所述隨機(jī)數(shù)定位一個(gè)數(shù)據(jù) 存儲(chǔ)塊。
      本實(shí)施例裝置中的第四選出單元4121包括第四統(tǒng)計(jì)子單元41210,第四 生成子單元41211,第四定位子單元41212。
      第四統(tǒng)計(jì)子單元41210,用于統(tǒng)計(jì)空存儲(chǔ)塊的個(gè)數(shù);第四生成子單元412H, 用于生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù);第四定位子單元41212,用于 利用所述隨機(jī)數(shù)定位一個(gè)目標(biāo)空存儲(chǔ)塊。
      特別的,本實(shí)施例裝置中的第四選出單元4121還可以由第四查找子單元、 第四建立子單元、第四選出子單元組成,其中第四查找子單元,用于遍歷所有 的存儲(chǔ)塊查找所有空存儲(chǔ)塊;第四建立子單元,用于建立一個(gè)包含有查找到的 所有空存儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊的物理塊號(hào)列表;第四選出子單元, 用于從所述列表中隨機(jī)選出一個(gè)目標(biāo)空存儲(chǔ)塊。
      本發(fā)明實(shí)施例主要應(yīng)用在各種存儲(chǔ)器中,例如閃存等以便實(shí)現(xiàn)提高存儲(chǔ)
      塊可以使用的次數(shù),同時(shí)也可以延長(zhǎng)存儲(chǔ)器的使用壽命。
      通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多 情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或 者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟 件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),硬盤(pán)或光盤(pán)等,包括若 干指令用以使得一 臺(tái)含有存儲(chǔ)器的終端執(zhí)行本發(fā)明各個(gè)實(shí)施例的方法。
      以上所述,僅為本發(fā)明的具體實(shí)施方式
      ,但本發(fā)明的保護(hù)范圍并不局限于 此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到 的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍 應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      權(quán)利要求
      1、一種寫(xiě)入數(shù)據(jù)的方法,其特征在于,包括接收到寫(xiě)入新數(shù)據(jù)的指令;定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊;從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊;將所述需要修改的數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中;將定位到的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。
      2、 根據(jù)權(quán)利要求1所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,該方法還包括 在存儲(chǔ)器通電后,判斷當(dāng)前空存儲(chǔ)塊總數(shù)是否小于預(yù)設(shè)數(shù)值;如果是,則將隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ) 塊中;將所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊;等待接收寫(xiě)入新數(shù)據(jù)的 指令;如果否,則等待接收寫(xiě)入新數(shù)據(jù)的指令。
      3、 根據(jù)權(quán)利要求l所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述數(shù)據(jù)存儲(chǔ)塊 的數(shù)據(jù)由邏輯塊號(hào)和數(shù)據(jù)區(qū)數(shù)據(jù)組成,則所述將所述需要修改的數(shù)據(jù)與新數(shù)據(jù) 結(jié)合為更新數(shù)據(jù),將所述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中包括將所述數(shù)據(jù)存儲(chǔ)塊的數(shù)據(jù)讀入內(nèi)存中;在內(nèi)存中將所述數(shù)據(jù)中的數(shù)據(jù)區(qū)數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù); 將所述更新數(shù)據(jù)與邏輯塊號(hào)寫(xiě)入空存儲(chǔ)塊中。
      4、 根據(jù)權(quán)利要求3所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述將所述更新 數(shù)據(jù)與邏輯塊號(hào)寫(xiě)入空存儲(chǔ)塊中為先將更新數(shù)據(jù)寫(xiě)入空存儲(chǔ)塊中,再將邏輯 塊號(hào)寫(xiě)入空存儲(chǔ)塊中。
      5、 根據(jù)權(quán)利要求3所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述從所有的空 存儲(chǔ)塊中隨機(jī)選出 一個(gè)空存儲(chǔ)塊包括生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù);利用所述隨機(jī)數(shù)選出一個(gè)空 存儲(chǔ)塊;或者遍歷所有的存儲(chǔ)塊查找到所有空存儲(chǔ)塊;建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊的物理塊號(hào)列表;從所述列表中選出一個(gè)空 存儲(chǔ)塊。
      6、 根據(jù)權(quán)利要求5所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,在將所述更新數(shù) 據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中之前,該方法還包括判斷所述隨機(jī)選出的空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊; 如果是,則將所述有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊; 如果否,則直接利用所述隨機(jī)選出的空存儲(chǔ)塊。
      7、 根據(jù)權(quán)利要求1所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,在將所述更新數(shù) 據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中之前,該方法還包括判斷所述隨機(jī)選出的空數(shù)據(jù)存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊;如果是,則將所述有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊;如果否,則直接執(zhí)行將所述需要修改的數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中。
      8、 根據(jù)權(quán)利要求1所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,將定位到的數(shù)據(jù) 存儲(chǔ)塊擦除為空存儲(chǔ)塊之后,該方法還包括 將每次對(duì)存儲(chǔ)塊執(zhí)行的寫(xiě)入操作的次數(shù)累計(jì)到寫(xiě)入操作的總次數(shù)中;判斷所述寫(xiě)入操作的總次數(shù)是否大于預(yù)設(shè)次數(shù);如果是,則將隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ) 塊中;將所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊;將寫(xiě)入操作的總次數(shù)歸 零;如果否,則結(jié)束本次操作。
      9、 根據(jù)權(quán)利要求2或8所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述將隨機(jī) 選出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ)塊中包括從所有的數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊; 從所有的空存儲(chǔ)塊中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊; 將所述數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入所述目標(biāo)空存儲(chǔ)塊中。
      10、 根據(jù)權(quán)利要求9所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述從所有的 數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊包括生成一個(gè)不大于所有數(shù)據(jù)存儲(chǔ)塊總數(shù)的隨機(jī)數(shù),利用所述隨機(jī)數(shù)定位一個(gè) 數(shù)據(jù)存儲(chǔ)塊。
      11、 根據(jù)權(quán)利要求9所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述從所有的 空存儲(chǔ)塊中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊包括生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù),利用所述隨機(jī)數(shù)選出一個(gè)目 標(biāo)空存儲(chǔ)塊;或者遍歷所有的存儲(chǔ)塊查找所有空存儲(chǔ)塊,建立一個(gè)包含有查找到的所有空存 儲(chǔ)塊的地址列表或所有空存儲(chǔ)塊的物理塊號(hào)列表,從列表中隨機(jī)選出一個(gè)目標(biāo) 空存儲(chǔ)塊。
      12、 根據(jù)權(quán)利要求11所述的寫(xiě)入數(shù)據(jù)的方法,其特征在于,在將所述更新 數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中之前,該方法還包括判斷所述隨機(jī)選出的目標(biāo)空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊; 如果是,則將所述有記錄的空存儲(chǔ)塊擦除為空存儲(chǔ)塊; 如果否,則直接利用所述隨機(jī)選出的目標(biāo)空存儲(chǔ)塊。
      13、 一種寫(xiě)入數(shù)據(jù)的裝置,其特征在于,包括 接收模塊,用于接收寫(xiě)入新數(shù)據(jù)的指令;定位模塊,用于定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊;選出模塊,用于從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊;寫(xiě)入模塊,用于將所述需要修改的數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述 更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中;擦除模塊,用于將定位到的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。
      14、 根據(jù)權(quán)利要求13所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述定位模塊 定位的數(shù)據(jù)存儲(chǔ)塊由邏輯塊號(hào)和數(shù)據(jù)區(qū)數(shù)據(jù)組成,則所述寫(xiě)入模塊先將數(shù)據(jù)區(qū) 數(shù)椐與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述更新數(shù)據(jù)與邏輯塊號(hào)寫(xiě)入所迷隨機(jī)選出 的空存儲(chǔ)塊中。
      15、 4艮據(jù)權(quán)利要求14所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述寫(xiě)入模塊 包括讀取單元,用于將所述數(shù)據(jù)讀入到內(nèi)存中;結(jié)合單元,用于在內(nèi)存中將所述數(shù)據(jù)區(qū)數(shù)據(jù)與新數(shù)據(jù)結(jié)合后生成更新數(shù)據(jù); 寫(xiě)入單元,用于將所述更新數(shù)據(jù)與邏輯塊號(hào)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中。所述寫(xiě)入單元先將更新數(shù)據(jù)寫(xiě)入空存儲(chǔ)塊中,再將邏輯塊號(hào)寫(xiě)入空存儲(chǔ)塊中。
      16、 根據(jù)權(quán)利要求14所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,該裝置還包括 第二判斷模塊,用于在存儲(chǔ)器通電后,判斷當(dāng)前空存儲(chǔ)塊總數(shù)是否小于預(yù)設(shè)數(shù)值;第二隨機(jī)交換模塊,用于當(dāng)前空存儲(chǔ)塊總數(shù)小于預(yù)設(shè)數(shù)值時(shí),將隨機(jī)選出 的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ)塊中,將所述隨機(jī)選出的數(shù) 據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。
      17、 根據(jù)權(quán)利要求16所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第二隨機(jī) 交換模塊包括第 一選出單元,用于從所有的數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊; 第二選出單元,用于從所有的空存儲(chǔ)塊中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊; 第二判斷單元,用于判斷所述目標(biāo)空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊; 第二清除單元,用于當(dāng)?shù)诙袛鄦卧袛嗍菚r(shí),將有記錄的空存儲(chǔ)塊擦除 為空存儲(chǔ)塊;第二寫(xiě)入單元,用于將所述數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入所述目標(biāo)空存儲(chǔ)塊中; 第二擦除單元,用于將隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。
      18、 根據(jù)權(quán)利要求17所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第一選出 單元包括第一生成子單元,用于生成一個(gè)不大于所有數(shù)據(jù)存儲(chǔ)塊總數(shù)的隨機(jī)數(shù); 第一定位子單元,用于利用所述隨機(jī)數(shù)定位一個(gè)數(shù)據(jù)存儲(chǔ)塊。
      19、 根據(jù)權(quán)利要求17所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第二選出 單元包括第二生成子單元,用于生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù); 第二定位子單元,用于利用所述隨機(jī)數(shù)選出一個(gè)目標(biāo)空存儲(chǔ)塊;或者第二查找子單元,用于遍歷所有的存儲(chǔ)塊查找所有空存儲(chǔ)塊; 第二建立子單元,用于建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表 或所有空存儲(chǔ)塊的物理塊號(hào)列表;第二選出子單元,用于從所述列表中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊。
      20、 根據(jù)權(quán)利要求14所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述選出模塊 包括生成單元,用于生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù); 定位單元,用于利用所述隨機(jī)數(shù)定位一個(gè)空存儲(chǔ)塊;或者 查找單元,用于遍歷所有的存儲(chǔ)塊查找到所有空存儲(chǔ)塊; 建立單元,用于建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表或所有 空存儲(chǔ)塊的物理塊號(hào)列表;選出單元,用于從所述列表中隨機(jī)選出一個(gè)空存儲(chǔ)塊。
      21、 根據(jù)權(quán)利要求13所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,該裝置還包括 第一判斷模塊,用于判斷所述隨機(jī)選出的空數(shù)據(jù)存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊;第一清除模塊,用于當(dāng)判斷模塊判斷是時(shí),將所述有記錄的空存儲(chǔ)塊擦除 為空存儲(chǔ)塊。
      22、 根椐權(quán)利要求14所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,該裝置還包括 累計(jì)模塊,用于將每次對(duì)存儲(chǔ)塊執(zhí)行的寫(xiě)入操作的次數(shù)累計(jì)到寫(xiě)入操作的總次數(shù)中;第三判斷模塊,用于判斷所述寫(xiě)入操作的總次數(shù)是否大于預(yù)設(shè)次數(shù); 第三隨機(jī)交換模塊,用于當(dāng)寫(xiě)入操作的總次數(shù)大于預(yù)設(shè)次數(shù)時(shí),將隨機(jī)選 出的數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入隨機(jī)選出的目標(biāo)空存儲(chǔ)塊中,并將所述隨機(jī)選出 的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊,同時(shí)將寫(xiě)入操作的總次數(shù)歸零。
      23、 根據(jù)權(quán)利要求22所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第三隨機(jī) 交換模塊包括第三選出單元,用于從所有的數(shù)據(jù)存儲(chǔ)塊中隨機(jī)選出 一個(gè)數(shù)據(jù)存儲(chǔ)塊; 第四選出單元,用于從所有的空存儲(chǔ)塊中隨機(jī)選出 一個(gè)目標(biāo)空存儲(chǔ)塊;第三判斷單元,用于判斷所述目標(biāo)空存儲(chǔ)塊是否為有記錄的空存儲(chǔ)塊; 第三清除單元,用于當(dāng)?shù)诙袛鄦卧袛嗍菚r(shí),將有記錄的空存儲(chǔ)塊擦除 為空存儲(chǔ)塊;第三寫(xiě)入單元,用于將所述數(shù)據(jù)存儲(chǔ)塊里的數(shù)據(jù)寫(xiě)入所述目標(biāo)空存儲(chǔ)塊中; 第三擦除單元,用于將所述隨機(jī)選出的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊; 第三歸零單元,用于將寫(xiě)入操作的總次數(shù)歸零。
      24、 根據(jù)權(quán)利要求23所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第三選出 單元包括第三生成子單元,用于生成一個(gè)不大于所有數(shù)據(jù)存儲(chǔ)塊總數(shù)的隨機(jī)數(shù); 第三定位子單元,用于利用所述隨機(jī)數(shù)定位一個(gè)數(shù)據(jù)存儲(chǔ)塊。
      25、 根據(jù)權(quán)利要求23所述的寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述第四選出 單元包括第四生成子單元,用于生成一個(gè)不大于所有空存儲(chǔ)塊總數(shù)的隨機(jī)數(shù); 第四定位子單元,用于利用所述隨機(jī)數(shù)選出一個(gè)目標(biāo)空存儲(chǔ)塊;或者 第四查找子單元,用于遍歷所有的存儲(chǔ)塊查找所有空存^ft塊; 第四建立子單元,用于建立一個(gè)包含有查找到的所有空存儲(chǔ)塊的地址列表 或所有空存儲(chǔ)塊的物理塊號(hào)列表;第四選出子單元,用于從所述列表中隨機(jī)選出一個(gè)目標(biāo)空存儲(chǔ)塊。
      全文摘要
      本發(fā)明實(shí)施例公開(kāi)了一種寫(xiě)入數(shù)據(jù)方法及裝置,涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,解決了現(xiàn)有技術(shù)中存儲(chǔ)器中某些存儲(chǔ)塊容易出現(xiàn)受損較嚴(yán)重的問(wèn)題。在本發(fā)明中接收到寫(xiě)入新數(shù)據(jù)的指令;定位需要修改的數(shù)據(jù)所在的數(shù)據(jù)存儲(chǔ)塊;從所有的空存儲(chǔ)塊中隨機(jī)選出一個(gè)空存儲(chǔ)塊;將所述需要修改的數(shù)據(jù)與新數(shù)據(jù)結(jié)合為更新數(shù)據(jù),將所述更新數(shù)據(jù)寫(xiě)入所述隨機(jī)選出的空存儲(chǔ)塊中;將定位到的數(shù)據(jù)存儲(chǔ)塊擦除為空存儲(chǔ)塊。本發(fā)明的實(shí)施例主要應(yīng)用在向存儲(chǔ)器執(zhí)行各種操作時(shí)的場(chǎng)景。
      文檔編號(hào)G06F12/02GK101526920SQ20081024705
      公開(kāi)日2009年9月9日 申請(qǐng)日期2008年12月31日 優(yōu)先權(quán)日2008年12月31日
      發(fā)明者于華章, 舟 陸 申請(qǐng)人:北京飛天誠(chéng)信科技有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1