專利名稱:閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法
技術(shù)領(lǐng)域:
本發(fā)明涉及儲(chǔ)存裝置,尤其涉及一種閃存儲(chǔ)存裝置。
背景技術(shù):
近年來,閃存(Flash memory)的發(fā)展非常迅速,其在儲(chǔ)存裝置上的運(yùn)用也曰新月異,各式記憶卡(Memory card)、隨身碟(Flash drive )的普及已不在話下,然而隨著閃存的技術(shù)日趨成熟,成本逐曰降低,各廠商也開始投入大量資源研究閃存更廣泛的運(yùn)用,如固態(tài)硬盤(SSD, Solid-State Disk)即為一例,SSD為以閃存做儲(chǔ)存媒體的純電子式硬盤機(jī),而其依舊保有閃存存取速度快、低耗電量、低發(fā)熱量、重量輕、低震動(dòng)與耐震動(dòng)等特性,可應(yīng)用于傳統(tǒng)磁性硬盤機(jī)無法勝任的惡劣環(huán)境中,甚至具有取代傳統(tǒng)磁性硬盤機(jī)的潛力。
閃存本身具有一個(gè)明顯的缺點(diǎn),即使用壽命有其一定限制,是對(duì)應(yīng)于其抹除(Emse)的次數(shù)而定,目前閃存的可抹除次數(shù)因制造廠商的不同而略有出入,平均約在10萬次左右,且抹除次數(shù)越趨近極限,其所儲(chǔ)存的數(shù)據(jù)越不穩(wěn)定。因此,若不能延長(zhǎng)閃存的使用壽命,將會(huì)為使用閃存的儲(chǔ)存裝置產(chǎn)生極大的限制及置換成本。而以上述的固態(tài)硬盤為例,若用以儲(chǔ)存操作系統(tǒng)(OS, OperatingSystem),則其數(shù)據(jù)的存取量及傳輸量又將比沒有儲(chǔ)存OS的儲(chǔ)存裝置(例如隨身碟、記憶卡)大上許多,抹除次數(shù)也會(huì)增加,因此,在閃存的硬件制程尚未有突破性進(jìn)步的前提下,唯有不斷改良現(xiàn)已存在的儲(chǔ)存方法,才能有效將抹除次數(shù)降到最低,使閃存的運(yùn)用更為廣泛且不受限制。
閃存的最小單位是頁面(Page),兩個(gè)或兩個(gè)以上頁面組成一個(gè)區(qū)塊(Block)。而對(duì)閃存而言,儲(chǔ)存與讀取都是以頁面為單位,而抹除則是以區(qū)塊為單位。閃存有一個(gè)著名的特色,即是寫入前抹除(Erase before write ),即,只有被抹除過的空白區(qū)塊,其內(nèi)部的頁面才可被寫入新的數(shù)據(jù)。公知的閃存儲(chǔ)存裝置儲(chǔ)存方法如圖1所示,參照步驟S11:當(dāng)儲(chǔ)存裝置接收到由外部主機(jī)所傳送的儲(chǔ)存指令時(shí),同時(shí)接收到邏輯區(qū)塊地址(LBA),此時(shí),執(zhí)行步驟S12:該儲(chǔ)存裝置借由邏輯與實(shí)體地址對(duì)應(yīng)窗體(L2P Table ,Logical to Physical Table ),尋找出該儲(chǔ)存裝置內(nèi)的閃存內(nèi)部對(duì)應(yīng)于該LB A的實(shí)體區(qū)塊地址。接著,執(zhí)行步驟S13:將對(duì)應(yīng)至該LBA的區(qū)塊當(dāng)作舊區(qū)塊,并找到一個(gè)空白的新區(qū)塊,執(zhí)行步驟S14:先執(zhí)行第一次反向復(fù)制(Copyback)(詳如下述),接著執(zhí)行步驟S15:將該主機(jī)傳送過來的數(shù)據(jù)寫入該新區(qū)塊后,執(zhí)行步驟S16:再執(zhí)行第二次反向復(fù)制。當(dāng)新區(qū)塊寫入完畢后,即執(zhí)行步驟S17:修改該L2P窗體,使該LBA對(duì)應(yīng)至該新區(qū)塊,接著執(zhí)行步驟S18:將該舊區(qū)塊抹除,使其成為空白的區(qū)塊,以便后續(xù)其它數(shù)據(jù)的儲(chǔ)存。最后,執(zhí)行步驟S19:判斷該主機(jī)欲傳輸?shù)臄?shù)據(jù)是否全部傳送完畢,若數(shù)據(jù)未傳送完畢,則轉(zhuǎn)步驟S12,直到全部數(shù)據(jù)都傳送完畢,才可停止。
例如, 一個(gè)區(qū)塊具有64個(gè)頁面,而該儲(chǔ)存裝置所接收的LBA,是對(duì)應(yīng)至該閃存中的第10區(qū)塊內(nèi)的第11頁面到第42頁面。該儲(chǔ)存裝置先在該閃存中找到一個(gè)完全空白的新區(qū)塊,例如第100區(qū)塊,此時(shí),因?yàn)樵搩?chǔ)存裝置無法判斷該第10區(qū)塊中的第0頁面至第10頁面是否存有數(shù)據(jù),故,需先進(jìn)行第一次反向復(fù)制,即將該第10區(qū)塊內(nèi)的第0頁面至第10頁面內(nèi)的數(shù)據(jù),復(fù)制至該第100區(qū)塊的第0頁面至第IO頁面內(nèi)。復(fù)制完畢后,再將主機(jī)傳輸過來的數(shù)據(jù),寫入該第100區(qū)塊內(nèi)的第11頁面至第42頁面的位置。接著,因該儲(chǔ)存裝置也無法判斷該第10區(qū)塊內(nèi)的第43頁面至第63頁面內(nèi)是否存有數(shù)據(jù),故需進(jìn)行第二次的反向復(fù)制,將該第10區(qū)塊內(nèi)的第43頁面至第63頁面內(nèi)的數(shù)據(jù),寫入該第100區(qū)塊內(nèi)的第43頁面至第63頁面。而在寫入完畢后,將舊的區(qū)塊,即該第IO區(qū)塊抹除,成為一個(gè)完全空白的新區(qū)塊,供后續(xù)其它數(shù)據(jù)寫入時(shí)運(yùn)用。
上述的公知儲(chǔ)存方法具有一個(gè)相當(dāng)重大的缺點(diǎn),使用該種方法,只要寫入一筆數(shù)據(jù)至閃存,即需抹除一個(gè)區(qū)塊一次,故將會(huì)使得閃存的抹除次數(shù)嚴(yán)重浪費(fèi)。例如,若該儲(chǔ)存裝置先后收到三筆數(shù)據(jù),分別對(duì)應(yīng)至該閃存內(nèi)的第10區(qū)塊的第11頁面至第l5頁面、第16頁面至第20頁面,及第21頁面至第26頁面時(shí),雖然該三筆數(shù)據(jù)為連續(xù)性的數(shù)據(jù),但因該三筆數(shù)據(jù)是分開傳送,故該儲(chǔ)存裝置并無法得知該三筆數(shù)據(jù)為連續(xù),必須將該三筆數(shù)據(jù)分三次寫入,因此,即需重復(fù)執(zhí)行上述的流程三次,即,需先后抹除三個(gè)區(qū)塊共三次。但因該三筆數(shù)據(jù)為連續(xù)的數(shù)據(jù),故若能使該三筆連續(xù)數(shù)據(jù)循序?qū)懭牒笤賵?zhí)行反向復(fù)制,則只需抹除一個(gè)區(qū)塊,減少兩次抹除次數(shù)的浪費(fèi)。而若該筆寫入的連續(xù)性數(shù)據(jù)量非常大,則浪費(fèi)掉的抹除次數(shù)即非常的可觀。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的,在于提供一種提高閃存儲(chǔ)存裝置的使用壽命的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法。
為達(dá)上述目的,本發(fā)明一種閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,包括
a) 在儲(chǔ)存裝置內(nèi)的內(nèi)存內(nèi),規(guī)劃地址暫存區(qū),該地址暫存區(qū)內(nèi)部規(guī)劃為兩個(gè)或兩個(gè)以上由用以儲(chǔ)存數(shù)據(jù)的邏輯區(qū)塊地址的邏輯區(qū)塊地址字段、用以儲(chǔ)存數(shù)據(jù)的總區(qū)段數(shù)的區(qū)段數(shù)字段及用以儲(chǔ)存判斷參數(shù)的使用字段所組成的窗體;
b) 外部主機(jī)發(fā)出至少 一個(gè)具有一筆數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù)的儲(chǔ)存指令至該儲(chǔ)存裝置,并儲(chǔ)存于該地址暫存區(qū)內(nèi);
c) 借由該筆數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù),判斷該筆數(shù)據(jù)是否為連續(xù)性數(shù)據(jù)的其中一筆;
d) 若該筆數(shù)據(jù)為連續(xù)性數(shù)據(jù)的其中一筆,更新該地址暫存區(qū)中,對(duì)應(yīng)于該筆數(shù)據(jù)的窗體,并將該筆數(shù)據(jù)寫入該儲(chǔ)存裝置內(nèi)的閃存內(nèi)的空白區(qū)塊,等待該連續(xù)性數(shù)據(jù)全部寫入后,再執(zhí)行反向復(fù)制;
e) 若該筆數(shù)據(jù)并非連續(xù)性數(shù)據(jù)的其中一筆,在該筆數(shù)據(jù)寫入該閃存內(nèi)的空白區(qū)塊后即進(jìn)行反向復(fù)制;
f) 當(dāng)該儲(chǔ)存裝置的硬件條件符合,或收到該外部主機(jī)的控制指令時(shí),對(duì)該閃存執(zhí)行反向復(fù)制。
由上述方案可知,本發(fā)明使儲(chǔ)存裝置在寫入數(shù)據(jù)時(shí),能夠判斷數(shù)據(jù)為連續(xù)性數(shù)據(jù)或隨機(jī)數(shù)據(jù),若儲(chǔ)存的為連續(xù)性的數(shù)據(jù),且后面尚有接續(xù)的數(shù)據(jù),則不在儲(chǔ)存完后立刻做反向復(fù)制(Copyback)的動(dòng)作,在該筆連續(xù)性數(shù)據(jù)全部?jī)?chǔ)存 完畢后再執(zhí)行,其可有效區(qū)分連續(xù)性數(shù)據(jù)與隨機(jī)數(shù)據(jù)并加以儲(chǔ)存,借以避免該 閃存的抹除次數(shù)的浪費(fèi)。
圖1為公知閃存儲(chǔ)存裝置的儲(chǔ)存流程圖2為本發(fā)明儲(chǔ)存裝置的結(jié)構(gòu)圖3為本發(fā)明內(nèi)存內(nèi)部配置圖。
圖4為本發(fā)明第一實(shí)施例的儲(chǔ)存流程圖5為本發(fā)明儲(chǔ)存裝置的另 一結(jié)構(gòu)圖6為本發(fā)明附加內(nèi)存的內(nèi)部配置圖7為本發(fā)明第二實(shí)施例的儲(chǔ)存流程圖。
附圖標(biāo)記說明
1儲(chǔ)存裝置11處理器12內(nèi)存
121地址暫存區(qū)12汪LBA字段12b區(qū)段數(shù)字段
12c使用字段13閃存14程序單元
15附加內(nèi)存151管理區(qū)152數(shù)據(jù)暫存區(qū)
15aLBA字段15b內(nèi)存位置字段
15c修改字段15d讀取字段
16充電裝置
2外部主機(jī)
S11 S19,S21 S29, S2a S2f, S31 S39, S3a S3q 步驟
具體實(shí)施例方式
現(xiàn)就本發(fā)明的較佳實(shí)施例,配合附圖,詳細(xì)說明如后。 第一實(shí)施例首先請(qǐng)參閱圖2,為本發(fā)明儲(chǔ)存裝置的結(jié)構(gòu)圖,該儲(chǔ)存裝置1主要包括處
理器11 ,隨機(jī)存取內(nèi)存(RAM, Random Access Memory )12、閃存(Flash Memory )
13,及程序單元14。其中,該程序單元14為韌體程序,儲(chǔ)存于該儲(chǔ)存裝置1 內(nèi)的只讀存儲(chǔ)器(ROM, Read Only Memory)或該閃存13中,但不可加以限 定。
當(dāng)外部主機(jī)2連接該儲(chǔ)存裝置1,欲儲(chǔ)存數(shù)據(jù)至該儲(chǔ)存裝置1時(shí),該外部 主機(jī)2發(fā)出至少一個(gè)具有一筆數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù)的儲(chǔ)存指令至該 儲(chǔ)存裝置l,并儲(chǔ)存于地址暫存區(qū)內(nèi),該處理器11接收該主機(jī)2所發(fā)出的儲(chǔ)存 指令及邏輯區(qū)塊地址(LBA, Logical Block Address),該處理器11收到該儲(chǔ) 存指令后,啟動(dòng)該程序單元14,該程序單元14分析該筆數(shù)據(jù)的信息后,通過 該內(nèi)存12內(nèi)的該地址暫存區(qū)121 (如圖3所示)中所儲(chǔ)存的各數(shù)據(jù)的信息,將 該筆數(shù)據(jù)以最合適的方式,寫入該閃存13中,對(duì)應(yīng)至該LBA的實(shí)體區(qū)塊地址。
圖3為本發(fā)明內(nèi)存內(nèi)部配置圖,該儲(chǔ)存裝置1內(nèi)的該內(nèi)存(RAM) 12,其 內(nèi)部主要規(guī)劃有地址暫存區(qū)121,而該地址暫存區(qū)121可規(guī)劃為兩個(gè)或兩個(gè)以 上由LBA字段12a、區(qū)段數(shù)字段12b及使用字段12c所組成的窗體,每一個(gè)窗 體分別用以對(duì)應(yīng)一筆大小為 一個(gè)區(qū)段的數(shù)據(jù)。該LBA字段12a用以儲(chǔ)存數(shù)據(jù)的 LBA,該區(qū)段數(shù)字段12b用以儲(chǔ)存數(shù)據(jù)的總區(qū)段數(shù),而該使用字段12c用以儲(chǔ) 存判斷參數(shù),借以判斷此窗體是否已被參考過。
閃存寫入的最小單位為頁面,而頁面的大小與半導(dǎo)體的顆粒大小有關(guān),下 述將以一個(gè)頁面大小512字節(jié)(Bytes)為例,剛好等于一個(gè)區(qū)段的大小,而區(qū) 段即為計(jì)算機(jī)傳輸時(shí)的最小單位。例如,當(dāng)?shù)谝粩?shù)據(jù)被寫入時(shí),該程序單元14 分析該第一數(shù)據(jù)的信息,發(fā)現(xiàn)該第一數(shù)據(jù)的LBA為100,總區(qū)段數(shù)為128,即 在該內(nèi)存12內(nèi)的該地址暫存區(qū)121內(nèi)新增窗體,將該筆數(shù)據(jù)的LBA與總區(qū)段 數(shù),寫入該窗體中的LBA字段12a及區(qū)段數(shù)字段12b,并將使用字段12c設(shè)為 0。接著,當(dāng)再有第二數(shù)據(jù)寫入,且該程序單元14分析出該第二數(shù)據(jù)的LBA為 228時(shí),因?yàn)樯鲜龅谝粩?shù)據(jù)的LBA為100,而區(qū)段數(shù)為128,即,該第一數(shù)據(jù) 是由LBA為100的位置開始,連續(xù)寫了 128頁,而該第二數(shù)據(jù)的LBA為228,因此,該程序單元14即判斷該第二數(shù)據(jù)為該第一數(shù)據(jù)的后續(xù)數(shù)據(jù),并在儲(chǔ)存與 反向復(fù)制動(dòng)作執(zhí)行完成后,把對(duì)應(yīng)至該第二數(shù)據(jù)的窗體,即該第一數(shù)據(jù)的窗體 內(nèi)的使用字段12c設(shè)為1,表示該第一數(shù)據(jù)已被參考過,即,已接收到該第一 數(shù)據(jù)的接續(xù)數(shù)據(jù)。下次搜尋動(dòng)作開始,即不再搜尋該窗體,借以加快搜尋的動(dòng)作。
g)本發(fā)明的儲(chǔ)存方法,主要是借由寫入數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù), 判斷寫入的數(shù)據(jù)是否為連續(xù)性數(shù)據(jù)的其中一筆,若該筆數(shù)據(jù)為連續(xù)性數(shù)據(jù)的其 中一筆,更新該地址暫存區(qū)中,對(duì)應(yīng)于該筆數(shù)據(jù)的窗體,并將該筆數(shù)據(jù)寫入該 儲(chǔ)存裝置內(nèi)的閃存內(nèi)的空白區(qū)塊,等待該連續(xù)性數(shù)據(jù)全部寫入后,再執(zhí)行反向
復(fù)制;若該筆數(shù)據(jù)并非連續(xù)性數(shù)據(jù)的其中一筆,在該筆數(shù)據(jù)寫入該閃存內(nèi)的空 白區(qū)塊后即進(jìn)行反向復(fù)制;若寫入的數(shù)據(jù)為連續(xù)性數(shù)據(jù)的最后一筆,則表示該 筆連續(xù)性數(shù)據(jù)已寫入完畢,此時(shí)即直接進(jìn)行反向復(fù)制,而不再等待其它條件或 指令,詳細(xì)說明如下。
對(duì)計(jì)算機(jī)主機(jī)而言,在傳輸數(shù)據(jù)時(shí),為了要維持傳輸?shù)乃俣?,每筆傳輸數(shù)
據(jù)的總區(qū)段數(shù)都會(huì)相同,下述稱為臨界值(Threshold)。但是,在不同的操作 系統(tǒng)、或操作系統(tǒng)下的不同格式,會(huì)具有不同的臨界值,因此,該臨界值必須 經(jīng)由統(tǒng)計(jì)并校正來取得。而統(tǒng)計(jì)的方法是在韌體內(nèi)設(shè)置變量,當(dāng)該主機(jī)傳送一 筆數(shù)據(jù)至該儲(chǔ)存裝置并加以儲(chǔ)存后,需接著判斷該筆數(shù)據(jù)的總區(qū)段數(shù)是否符合 該臨界值,借以斷定該筆數(shù)據(jù)是否為連續(xù)性數(shù)據(jù)的其中一筆,因此,需比較該 變量與該筆數(shù)據(jù)的總區(qū)段數(shù),若該變量小于該總區(qū)段數(shù),即表示該變量所記載 的數(shù)值并非是該系統(tǒng)下的臨界值,即將該變量的數(shù)值更改為該總區(qū)段數(shù)。而經(jīng) 過多次的校正之后,即會(huì)得到穩(wěn)定的臨界值。但此僅為較佳的實(shí)施方式,不加 以限定。例如在微軟公司的Windows XP操作系統(tǒng)下使用32位數(shù)據(jù)配置表 (FAT32, File Allocation Table-32bit)格式的主機(jī)下,每筆傳輸數(shù)據(jù)的總區(qū)段 數(shù)都維持在128個(gè)區(qū)段;而在使用新的技術(shù)檔案系統(tǒng)(NTFS , New Technology File System )格式的主機(jī)下,每筆傳輸數(shù)據(jù)的總區(qū)段數(shù)都維持在64個(gè)區(qū)段。只 有當(dāng)主機(jī)所傳輸?shù)臄?shù)據(jù)是一筆未滿該臨界值大小的隨機(jī)數(shù)據(jù),或連續(xù)性數(shù)據(jù)的最后一筆時(shí),才可能會(huì)小于該臨界值。但此僅為本發(fā)明的較佳具體實(shí)施例,不 可加以限定。
故,若該儲(chǔ)存裝置l接收一筆數(shù)據(jù),且該程序單元14得知該筆數(shù)據(jù)的總區(qū) 段數(shù)等于該臨界值,則該數(shù)據(jù)極有可能為連續(xù)性數(shù)據(jù)的其中一筆,且可能具有
接續(xù)的下一筆數(shù)據(jù)尚未寫入,因此,不在該筆數(shù)據(jù)寫入后,立即進(jìn)行反向復(fù)制; 反之,若接收的數(shù)據(jù)區(qū)段數(shù)小于該臨界值,則該數(shù)據(jù)可能為隨機(jī)數(shù)據(jù),或者, 連續(xù)性數(shù)據(jù)的最后一筆,此時(shí),即在該筆數(shù)據(jù)寫入后,立即進(jìn)行反向復(fù)制,將
數(shù)據(jù)重整,使該閃存13中的區(qū)塊,不致被尚未執(zhí)行反向復(fù)制的數(shù)據(jù)占滿,產(chǎn)生 沒有區(qū)塊可用以儲(chǔ)存數(shù)據(jù),或提供數(shù)據(jù)用以重整的情形。詳細(xì)說明如下述圖4 的儲(chǔ)存流程圖。
如圖4所示,為本發(fā)明第一實(shí)施例的儲(chǔ)存流程圖,參照步驟S21:當(dāng)外部 主機(jī)2欲儲(chǔ)存一筆數(shù)據(jù)至該儲(chǔ)存裝置1時(shí),該儲(chǔ)存裝置1收到該筆數(shù)據(jù)的儲(chǔ)存 指令及LBA,接著執(zhí)行步驟S22:取得該筆數(shù)據(jù)的總區(qū)段數(shù),判斷該數(shù)據(jù)的總 區(qū)段數(shù)大小是否等于臨界值,若該筆數(shù)據(jù)的總區(qū)段數(shù)等于該臨界值,執(zhí)行步驟 S23:該程序單元14檢査該地址暫存區(qū)121內(nèi)是否具有對(duì)應(yīng)該筆數(shù)據(jù)的LBA的 第一窗體,若沒有,則表示該筆數(shù)據(jù)為連續(xù)性數(shù)據(jù)的第一筆,即執(zhí)行步驟S24: 在該地址暫存區(qū)121內(nèi)新增窗體,將該筆數(shù)據(jù)的LBA寫入該窗體內(nèi)的LBA字 段12a,總區(qū)段數(shù)寫入?yún)^(qū)段數(shù)字段12b,而將使用字段12c設(shè)為0,并執(zhí)行步驟 S25:至該閃存13內(nèi)搜尋一個(gè)完全空白的區(qū)塊,將數(shù)據(jù)寫入;若該地址暫存區(qū) 121內(nèi)具有對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的第一窗體,則表示該筆數(shù)據(jù)為連續(xù)性數(shù)據(jù) 的其中一筆,即執(zhí)行步驟S26:更新該地址暫存區(qū),如新增第二窗體,在該 地址暫存區(qū)121內(nèi)新增第二窗體,并修改參考的第一窗體,將該筆數(shù)據(jù)的信息 寫入該第二窗體內(nèi)相對(duì)的邏輯區(qū)塊地址字段,總區(qū)段數(shù)存入該第二窗體的區(qū)段 數(shù)字段,并將該第二窗體的使用字段設(shè)為0,接著,將對(duì)應(yīng)于該筆數(shù)據(jù)的LBA 的第一窗體內(nèi)的使用字段12c修改為1。表示此窗體已被參考過,且其的后續(xù) 數(shù)據(jù)已被傳輸并寫入,下次搜尋時(shí)即可跳過該窗體。窗體更新完后,即執(zhí)行步 驟S27:將該筆數(shù)據(jù)寫入閃存中其所參考的第一窗體所對(duì)應(yīng)的數(shù)據(jù)所在的區(qū)塊中。最后,執(zhí)行步驟S28:判斷該主機(jī)2欲傳輸?shù)臄?shù)據(jù)是否已全部傳輸完畢, 如果沒有,轉(zhuǎn)步驟23,直至數(shù)據(jù)全部傳輸完畢,才可停止;如果數(shù)據(jù)已全部傳 輸完畢,執(zhí)行步驟S29:而當(dāng)該儲(chǔ)存裝置l的硬件條件符合,或是該外部主機(jī)2 發(fā)出控制指令時(shí),該閃存13即執(zhí)行反向復(fù)制(Copy back)的動(dòng)作,所述外部 主機(jī)2發(fā)出的控制指令可以為反向復(fù)制指令;而若不符合,即等待直至任一條 件符合時(shí),執(zhí)行反向復(fù)制的動(dòng)作。本實(shí)施例中,該儲(chǔ)存裝置l的硬件條件,是 在數(shù)據(jù)存放的時(shí)間或數(shù)量超過默認(rèn)值時(shí)、這些數(shù)據(jù)所對(duì)應(yīng)的窗體將被刪除或覆 蓋、斷電或該閃存13內(nèi)部的數(shù)據(jù)被更新時(shí)符合,如該閃存內(nèi)的數(shù)據(jù)被進(jìn)行讀 取、修改、搜尋或管理動(dòng)作時(shí)符合,而當(dāng)條件符合時(shí),即執(zhí)行反向復(fù)制的動(dòng)作, 但此僅為本發(fā)明的實(shí)施例,任何熟悉本項(xiàng)技術(shù)的人必知,反向復(fù)制的動(dòng)作可視 流程規(guī)劃的重點(diǎn),而在任何適當(dāng)?shù)臅r(shí)間點(diǎn)執(zhí)行,不可加以限定。
若在步驟S22中,該筆數(shù)據(jù)的總區(qū)段數(shù)不等于該臨界值,則執(zhí)行步驟S2a: 該程序單元14也檢查該地址暫存區(qū)121內(nèi)是否具有對(duì)應(yīng)該筆數(shù)據(jù)的LBA的第 一窗體,若沒有,則表示該筆數(shù)據(jù)為隨機(jī)數(shù)據(jù),即執(zhí)行步驟S2b:在內(nèi)存搜尋 一個(gè)完全空白的新區(qū)塊,將該筆數(shù)據(jù)寫入,并隨即執(zhí)行步驟S2c :執(zhí)行反向復(fù) 制;而若該地址暫存區(qū)121內(nèi)具有對(duì)應(yīng)該筆數(shù)據(jù)的LBA的第一窗體,表示該筆 數(shù)據(jù)為連續(xù)性數(shù)據(jù)的最后一筆,即執(zhí)行步驟S2d:在地址暫存區(qū)內(nèi)新增第二窗 體,并修改參考的第一窗體,將該筆數(shù)據(jù)的邏輯區(qū)塊地址信息寫入該第二窗體 內(nèi)相對(duì)的邏輯區(qū)塊地址字段,并將對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的第一窗體內(nèi)的使用 字段12c修改為1,接著,執(zhí)行步驟S2e:將該筆數(shù)據(jù)寫入閃存中其所參考的第 一窗體所對(duì)應(yīng)的數(shù)據(jù)所在的區(qū)塊中,執(zhí)行步驟S2c:并執(zhí)行反向復(fù)制。最后, 執(zhí)行步驟S2f:判斷該主機(jī)欲傳輸?shù)臄?shù)據(jù)是否已全部傳輸完畢,如果未全部傳 輸完畢,則轉(zhuǎn)步驟S2a,直至數(shù)據(jù)全部傳輸完畢,才可停止。
上述實(shí)施例,主要用以處理連續(xù)性數(shù)據(jù),但仍無法處理隨機(jī)數(shù)據(jù),因隨機(jī) 數(shù)據(jù)都為單筆的小數(shù)據(jù),且存取率非常大,故其所造成的抹除率也相當(dāng)高,為
解決此問題,本發(fā)明還提出另一實(shí)施例,如圖5所示,是在該儲(chǔ)存裝置l內(nèi)設(shè)置揮發(fā)性附加內(nèi)存(Volatility memory ) 15,借由揮發(fā)性附加內(nèi)存15沒有抹除 次數(shù)上限的特色,處理這些隨機(jī)數(shù)據(jù),并在外部主機(jī)2發(fā)出指令、斷電或該附 加內(nèi)存15內(nèi)部空間被寫滿時(shí),進(jìn)行重整,將暫存于該附加內(nèi)存15內(nèi)的數(shù)據(jù)寫 入該閃存13內(nèi)。并另外增設(shè)充電裝置16,例如電池、電容等,用以提供給該 附加內(nèi)存15電源,使數(shù)據(jù)得以持續(xù)地存在于該附加內(nèi)存15內(nèi),不致因意外斷 電而導(dǎo)致該附加內(nèi)存15內(nèi)的數(shù)據(jù)消失。
圖6為本發(fā)明的附加內(nèi)存的內(nèi)部配置圖,如圖6所示,該附加內(nèi)存15內(nèi)部 規(guī)劃為管理區(qū)151及數(shù)據(jù)暫存區(qū)152,其中,該數(shù)據(jù)暫存區(qū)152用以儲(chǔ)存外部 主機(jī)2所傳送的數(shù)據(jù),而該管理區(qū)151可規(guī)劃為兩個(gè)或兩個(gè)以上由LBA字段 15a、內(nèi)存位置字段15b、修改字段15c及讀取字段15d所組成的窗體。該LBA 字段15a用以儲(chǔ)存該主機(jī)2所傳送來的數(shù)據(jù)的LBA;該內(nèi)存位置字段15b用以 儲(chǔ)存這些數(shù)據(jù)在該數(shù)據(jù)暫存區(qū)152中所存放的位置,是與該LBA字段15a內(nèi)的 窗體互相對(duì)應(yīng);而該修改字段15c及該讀取字段15d用以儲(chǔ)存這些存在數(shù)據(jù)暫 存區(qū)152內(nèi)的數(shù)據(jù)的使用率,當(dāng)這些數(shù)據(jù)被新增或修改時(shí),將該修改字段15c 加l,而當(dāng)這些數(shù)據(jù)被讀取時(shí),將該讀取字段15d加l。借此,可將使用率較高 的隨機(jī)數(shù)據(jù)往前移,提高該儲(chǔ)存裝置l修改與讀取這些數(shù)據(jù)時(shí)的速度。
繼續(xù)參見圖7,為本發(fā)明的第二實(shí)施例的儲(chǔ)存流程圖,執(zhí)行步驟S31:當(dāng)該 儲(chǔ)存裝置1內(nèi)的該處理器11收到儲(chǔ)存指令及LBA時(shí),先取得欲寫入的數(shù)據(jù)的 總區(qū)段數(shù),執(zhí)行步驟S32:判斷該數(shù)據(jù)的總區(qū)段數(shù)是否等于臨界值,若等于, 表示該筆數(shù)據(jù)可能為連續(xù)性數(shù)據(jù)除了最后一筆外的任一筆,即執(zhí)行步驟S33及 S34:即啟動(dòng)該程序單元14檢查該地址暫存區(qū)121內(nèi)是否具有與該筆數(shù)據(jù)的 LBA相對(duì)應(yīng)的第一窗體,該管理區(qū)151內(nèi)是否具有與該筆數(shù)據(jù)的LBA相對(duì)應(yīng) 的第三窗體。若該地址暫存區(qū)121內(nèi)具有對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的第一窗體, 且該管理區(qū)151中也具有對(duì)應(yīng)的第三窗體,即執(zhí)行步驟S35:更新該管理區(qū)151 內(nèi)的窗體,及該數(shù)據(jù)暫存區(qū)152中與該窗體相對(duì)應(yīng)的位置的數(shù)據(jù)。接著執(zhí)行步 驟S36:在該地址暫存區(qū)121內(nèi)新增第二窗體,并修改參考的第一窗體,并將 對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的第一窗體內(nèi)的使用字段12c修改為1,表示該第一窗體已被參考過,接著,執(zhí)行步驟S37:將該筆數(shù)據(jù)寫入該第一窗體所對(duì)應(yīng)的數(shù) 據(jù)所在的區(qū)塊中;而若該管理區(qū)151內(nèi)不具有對(duì)應(yīng)的第三窗體時(shí),則不更新該 管理區(qū)151與該數(shù)據(jù)暫存區(qū)152,即,不使用該附加內(nèi)存15,直接進(jìn)行步驟S36 及步驟S37的動(dòng)作;而若該地址暫存區(qū)121內(nèi)不具有對(duì)應(yīng)于該筆數(shù)據(jù)LBA的第 一窗體,則執(zhí)行步驟S38:也需判斷該管理區(qū)151內(nèi)是否具有對(duì)應(yīng)于該筆數(shù)據(jù) 的LBA的第三窗體,若該管理區(qū)151內(nèi)具有對(duì)應(yīng)的第三窗體,執(zhí)行步驟S39: 更新該管理區(qū)151內(nèi)的窗體,及該數(shù)據(jù)暫存區(qū)152中與該窗體相對(duì)應(yīng)的位置的 數(shù)據(jù)。在步驟S38中若該管理區(qū)151內(nèi)不具有對(duì)應(yīng)的窗體或在執(zhí)行步驟S39后, 則接著執(zhí)行步驟S3a:在該地址暫存區(qū)121內(nèi)新增窗體,并執(zhí)行步驟S3b:在該 閃存13內(nèi)找一個(gè)完全空白的新區(qū)塊,將數(shù)據(jù)寫入。最后,執(zhí)行步驟S3c:判斷 數(shù)據(jù)是否全部傳輸完畢,若數(shù)據(jù)未傳輸完畢,轉(zhuǎn)入步驟S33,直到全部都傳輸 完畢為止,才可結(jié)東。并執(zhí)行步驟S3d:并等到上述實(shí)施例中的這些條件符合 時(shí),即當(dāng)硬件條件符合或主機(jī)發(fā)出指令時(shí),對(duì)該閃存進(jìn)行反向復(fù)制的動(dòng)作。
若在步驟S32中,該數(shù)據(jù)的總區(qū)段數(shù)不等于該臨界值,則表示該筆數(shù)據(jù)可 能為隨機(jī)數(shù)據(jù),或連續(xù)性數(shù)據(jù)的最后一筆。執(zhí)行步驟S3e:啟動(dòng)該程序單元14 檢查該地址暫存區(qū)121是否具有與該筆數(shù)據(jù)的LBA相對(duì)應(yīng)的第一窗體,若該數(shù) 據(jù)為連續(xù)性數(shù)據(jù)的最后一筆,即,若在步驟S3e后,該程序單元14發(fā)現(xiàn)該地址 暫存區(qū)121內(nèi)具有對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的第一窗體時(shí),接著執(zhí)行步驟S3f: 判斷該管理區(qū)151內(nèi)是否具有對(duì)應(yīng)的第三窗體,若有,即執(zhí)行步驟S3g:更新 該管理區(qū)151內(nèi)的窗體,及該數(shù)據(jù)暫存區(qū)152中與該窗體相對(duì)應(yīng)的位置的數(shù)據(jù); 若沒有,則不使用該附加內(nèi)存。接著,執(zhí)行步驟S3h:在該地址暫存區(qū)121內(nèi) 新增第二窗體,并將對(duì)應(yīng)于該筆數(shù)據(jù)的LBA的該第一窗體內(nèi)的使用字段12c修 改為1,表示該第一窗體已被參考過,接著,執(zhí)行步驟S3i:將該筆數(shù)據(jù)寫入該 第一窗體所對(duì)應(yīng)的數(shù)據(jù)所在的區(qū)塊中,并在寫入后,執(zhí)行步驟S3j:執(zhí)行反向復(fù) 制的動(dòng)作;而若該筆數(shù)據(jù)為隨機(jī)數(shù)據(jù),即若在步驟S3e后,該程序單元14發(fā)現(xiàn) 該地址暫存區(qū)內(nèi)并不具有對(duì)應(yīng)于該筆數(shù)據(jù)LBA的第一窗體時(shí),則執(zhí)行步驟S3k:也需判斷該管理區(qū)151內(nèi)是否具有對(duì)應(yīng)的第三窗體,若有,則執(zhí)行步驟S3m: 將該筆數(shù)據(jù)寫入該附加內(nèi)存15中的該數(shù)據(jù)暫存區(qū)152內(nèi),執(zhí)行步驟S3n:并更 新管理區(qū)的窗體,在該管理區(qū)151內(nèi)的新增窗體,使該窗體得以對(duì)應(yīng)至儲(chǔ)存于 該數(shù)據(jù)暫存區(qū)152內(nèi)的該筆數(shù)據(jù),然后執(zhí)行步驟S3q:判斷數(shù)據(jù)是否已全部傳輸 完畢,若數(shù)據(jù)未傳輸完畢,則轉(zhuǎn)步驟S3e,直至完畢后,才可停止;而若該管
理區(qū)151內(nèi)沒有對(duì)應(yīng)的第三窗體,則執(zhí)行步驟S3o:需在該閃存13內(nèi)找一個(gè)完 全空白的新區(qū)塊將數(shù)據(jù)寫入,并復(fù)制至該附加內(nèi)存15中的該數(shù)據(jù)暫存區(qū)152 內(nèi),接著執(zhí)行步驟S3p:更新管理區(qū)內(nèi)的窗體,在該管理區(qū)151內(nèi)新增窗體, 使該窗體得以對(duì)應(yīng)至儲(chǔ)存于該數(shù)據(jù)暫存區(qū)152內(nèi)的該筆數(shù)據(jù),接著,執(zhí)行步驟 S3j:對(duì)該閃存13執(zhí)行反向復(fù)制的動(dòng)作。最后,執(zhí)行步驟S3q:判斷數(shù)據(jù)是否 已全部傳輸完畢,若數(shù)據(jù)未傳輸完畢,則轉(zhuǎn)步驟S3e,直至完畢后,才可停止。 而儲(chǔ)存于該附加內(nèi)存15內(nèi)的這些隨機(jī)數(shù)據(jù),是在該主機(jī)2發(fā)出指令,斷電, 或數(shù)據(jù)的存放時(shí)間超過默認(rèn)值等情況時(shí),執(zhí)行重整動(dòng)作,將這些隨機(jī)數(shù)據(jù)存回 該閃存13內(nèi)。
以上所述僅為本發(fā)明的較佳具體實(shí)施例,非因此即局限本發(fā)明的專利范圍, 故舉凡運(yùn)用本發(fā)明內(nèi)容所為的等效變化,均同理都包含于本發(fā)明的范圍內(nèi)。
權(quán)利要求
1、一種閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,包括a)在儲(chǔ)存裝置內(nèi)的內(nèi)存內(nèi),規(guī)劃地址暫存區(qū),該地址暫存區(qū)內(nèi)部規(guī)劃為兩個(gè)或兩個(gè)以上由用以儲(chǔ)存數(shù)據(jù)的邏輯區(qū)塊地址的邏輯區(qū)塊地址字段、用以儲(chǔ)存數(shù)據(jù)的總區(qū)段數(shù)的區(qū)段數(shù)字段及用以儲(chǔ)存判斷參數(shù)的使用字段所組成的窗體;b)外部主機(jī)發(fā)出至少一個(gè)具有一筆數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù)的儲(chǔ)存指令至該儲(chǔ)存裝置,并儲(chǔ)存于該地址暫存區(qū)內(nèi);c)借由該筆數(shù)據(jù)的邏輯區(qū)塊地址及總區(qū)段數(shù),判斷該筆數(shù)據(jù)是否為連續(xù)性數(shù)據(jù)的其中一筆;d)若該筆數(shù)據(jù)為連續(xù)性數(shù)據(jù)的其中一筆,更新該地址暫存區(qū)中,對(duì)應(yīng)于該筆數(shù)據(jù)的窗體,并將該筆數(shù)據(jù)寫入該儲(chǔ)存裝置內(nèi)的閃存內(nèi)的空白區(qū)塊,等待該連續(xù)性數(shù)據(jù)全部寫入后,再執(zhí)行反向復(fù)制;e)若該筆數(shù)據(jù)并非連續(xù)性數(shù)據(jù)的其中一筆,在該筆數(shù)據(jù)寫入該閃存內(nèi)的空白區(qū)塊后即進(jìn)行反向復(fù)制;f)當(dāng)該儲(chǔ)存裝置的硬件條件符合,或收到該外部主機(jī)的控制指令時(shí),對(duì)該閃存執(zhí)行反向復(fù)制。
2、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟f中的該條件,是在該外部主機(jī)發(fā)出反向復(fù)制指令時(shí)符合。
3、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟f中的該條件,是在該閃存內(nèi)的數(shù)據(jù)的存放時(shí)間超出默認(rèn)值時(shí)符合。
4、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟f中的該條件,是在該閃存內(nèi)的數(shù)據(jù)數(shù)量超過默認(rèn)值時(shí)符合。
5、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟f中的該條件,是在斷電時(shí)符合。
6、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟f中的該條件,是在該閃存內(nèi)的數(shù)據(jù)被進(jìn)行讀取、修改、搜尋或管理動(dòng)作時(shí)符合。
7、 如權(quán)利要求1所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟c包括下列步驟cl)判斷該外部主機(jī)所傳送的一筆數(shù)據(jù)的總區(qū)段數(shù),是否符合臨界值; c2)在步驟cl之后,搜尋該地址暫存區(qū)內(nèi)是否具有對(duì)應(yīng)于該筆數(shù)據(jù)的邏輯 區(qū)塊地址的第一窗體。
8、 如權(quán)利要求7所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟d包括下列步驟dl)若該筆數(shù)據(jù)的總區(qū)段數(shù)符合該臨界值,且該地址暫存區(qū)內(nèi)具有對(duì)應(yīng)于該 筆數(shù)據(jù)的邏輯區(qū)塊地址的第一窗體,即新增第二窗體,將該筆數(shù)據(jù)的邏輯區(qū)塊 地址存入該第二窗體的邏輯區(qū)塊地址字段,總區(qū)段數(shù)存入該第二窗體的區(qū)段數(shù) 字段,并將該第二窗體的使用字段設(shè)為0;d2)在步驟dl之后,將對(duì)應(yīng)于該筆數(shù)據(jù)的邏輯區(qū)塊地址的該第一窗體,其 內(nèi)部的使用字段修改為1,借以表示該第一窗體已被參考過,下次搜尋時(shí)將不 再參考;d3)在步驟d2之后,將該筆數(shù)據(jù)寫入該儲(chǔ)存裝置內(nèi)的閃存中該筆數(shù)據(jù)所參考的該第一窗體所對(duì)應(yīng)的數(shù)據(jù)所在的區(qū)塊;d4)若該筆數(shù)據(jù)的總區(qū)段數(shù)符合該臨界值,但該地址暫存區(qū)內(nèi)不具有對(duì)應(yīng)于 該筆數(shù)據(jù)的邏輯區(qū)塊地址的第一窗體,即在該地址暫存區(qū)內(nèi)新增窗體,將該筆 數(shù)據(jù)的邏輯區(qū)塊地址存入該窗體的邏輯區(qū)塊地址字段,總區(qū)段數(shù)存入該窗體的 區(qū)段數(shù)字段,并將該窗體的使用字段設(shè)為0;d5)在步驟d4之后,在該閃存中,搜尋已被抹除過的空白區(qū)塊,將該筆數(shù) 據(jù)寫入;d6)若該筆數(shù)據(jù)不符合該臨界值,但該地址暫存區(qū)內(nèi)具有對(duì)應(yīng)于該筆數(shù)據(jù)的 邏輯區(qū)塊地址的第一窗體,即新增第二窗體,將該筆數(shù)據(jù)的邏輯區(qū)塊地址存入 該第二窗體的邏輯區(qū)塊地址字段,總區(qū)段數(shù)存入該第二窗體的區(qū)段數(shù)字段,并 將該第二窗體的使用字段設(shè)為0;d7)在步驟d6之后,將對(duì)應(yīng)于該筆數(shù)據(jù)的邏輯區(qū)塊地址的該第一窗體,其內(nèi)部的使用字段修改為l;d8)在步驟d7之后,將該筆數(shù)據(jù)寫入該閃存中該筆數(shù)據(jù)所參考的該第一窗 體所對(duì)應(yīng)的數(shù)據(jù)所在的區(qū)塊;d9)在步驟d8之后,對(duì)該閃存執(zhí)行反向復(fù)制。
9、 如權(quán)利要求7所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟e包括下列步驟el)若該筆數(shù)據(jù)不符合該臨界值,且該地址暫存區(qū)內(nèi)也不具有對(duì)應(yīng)于該筆數(shù) 據(jù)的邏輯區(qū)塊地址的第一窗體,即在該儲(chǔ)存裝置內(nèi)的閃存中,搜尋空白的新區(qū)e2)在步驟el之后,對(duì)該閃存執(zhí)行反向復(fù)制。
10、 如權(quán)利要求7所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟c之后還包括步驟c3:若該筆數(shù)據(jù)的總區(qū)段數(shù)大于該臨界值,將該臨界 值的數(shù)值更改為借以校正該臨界值的該筆數(shù)據(jù)的總區(qū)段數(shù)的數(shù)值。
11、 如權(quán)利要求7所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟c中的該臨界值,在使用微軟公司的Windows XP操作系統(tǒng)的32位數(shù)據(jù) 配置表格式的主機(jī)下,為128區(qū)段。
12、 如權(quán)利要求7所述的閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,其特征在于,所 述步驟c中的該臨界值,在使用微軟公司的Windows XP操作系統(tǒng)的新的技術(shù) 檔案系統(tǒng)格式的主機(jī)下,為64區(qū)段。
全文摘要
本發(fā)明提供一種閃存儲(chǔ)存裝置的數(shù)據(jù)儲(chǔ)存方法,是在儲(chǔ)存裝置內(nèi)的內(nèi)存中規(guī)劃地址暫存區(qū),用以儲(chǔ)存數(shù)據(jù)的信息,當(dāng)外部主機(jī)儲(chǔ)存一筆第一數(shù)據(jù)至該儲(chǔ)存裝置時(shí),通過該地址暫存區(qū)判斷該筆數(shù)據(jù)是否為連續(xù)數(shù)據(jù)的其中一筆,若是,則表示該筆數(shù)據(jù)傳輸完畢后還有接續(xù)的第二數(shù)據(jù)、第三數(shù)據(jù)等,故不在該筆第一數(shù)據(jù)存入該儲(chǔ)存裝置內(nèi)的閃存中時(shí),立刻進(jìn)行重整,而是等待該筆連續(xù)數(shù)據(jù)全部傳輸完畢,再進(jìn)行重整,借以有效降低該閃存的抹除次數(shù)。
文檔編號(hào)G06F12/02GK101464836SQ20071030222
公開日2009年6月24日 申請(qǐng)日期2007年12月20日 優(yōu)先權(quán)日2007年12月20日
發(fā)明者許峻維 申請(qǐng)人:宇瞻科技股份有限公司