專利名稱:一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法,屬于閃存存儲(chǔ)技術(shù)領(lǐng)域。
背景技術(shù):
閃存(Flash Memory)是ー種長(zhǎng)壽命的非易失性(在斷電情況下仍能保持所存儲(chǔ)的數(shù)據(jù)信息)的存儲(chǔ)器,數(shù)據(jù)刪除不是以單個(gè)的字節(jié)為單位而是以固定的區(qū)塊為單位,區(qū)塊大小一般為256KB到20MB。閃存是電子可擦除只讀存儲(chǔ)器(EEPROM)的變種,閃存與EEPROM不同的是,它能在字節(jié)水平上進(jìn)行刪除和重寫而不是整個(gè)芯片擦寫,這樣閃存就比EEPROM的更新速度快。由于其斷電時(shí)仍能保存數(shù)據(jù),閃存通常被用來(lái)保存設(shè)置信息,如在電腦的BIOS(基本輸入輸出程序)、PDA (個(gè)人數(shù)字助理)、數(shù)碼相機(jī)中保存資料等。閃存由于本身特點(diǎn),一個(gè)扇區(qū)在可以存放數(shù)據(jù)之前,必須先擦除該扇區(qū),然后再在相應(yīng)位置寫入數(shù)據(jù),這是因?yàn)殚W存擦出操作,會(huì)將該扇區(qū)重置為全1,當(dāng)寫入數(shù)據(jù)時(shí),數(shù)據(jù)中的所有為0的數(shù)據(jù)位會(huì)將閃存中對(duì)應(yīng)位置的I置為0,而數(shù)據(jù)中所有為I的數(shù)據(jù)位將不會(huì)影響扇區(qū)中對(duì)應(yīng)的1,即扇區(qū)中的數(shù)據(jù)位,可以被從I置為0,但是不可以被從0置為I (除非執(zhí)行擦除操作)。鄭文靜、李明強(qiáng)、舒繼武等所寫的“Flash存儲(chǔ)技木”[見“計(jì)算機(jī)研究與發(fā)展”雜志,2010,47 (4) :716-726] —文中指出,跨扇區(qū)存儲(chǔ)數(shù)據(jù)時(shí)產(chǎn)生的扇區(qū)合并操作,由于涉及數(shù)據(jù)復(fù)制、扇區(qū)擦除等耗時(shí)耗能操作,還會(huì)降低可靠性,已經(jīng)被認(rèn)為是閃存存儲(chǔ)系統(tǒng)設(shè)計(jì)時(shí)的瓶頸。同時(shí),針對(duì)其他存儲(chǔ)介質(zhì)(如磁盤等)設(shè)計(jì)的B樹和B+樹等數(shù)據(jù)結(jié)構(gòu),在閃存介質(zhì)中性能急劇下降,如何針對(duì)閃存介質(zhì)設(shè)計(jì)高性能的數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)檢索方法,也是亟待解決的問題?,F(xiàn)有方法在閃存介質(zhì)檢索存儲(chǔ)數(shù)據(jù)時(shí)檢索效率與存儲(chǔ)效率不能兼顧。刪除數(shù)據(jù)時(shí),現(xiàn)有方法,查找該數(shù)據(jù)所在的扇區(qū),將該扇區(qū)中除該數(shù)據(jù)以外的數(shù)據(jù)讀出,擦除該扇區(qū),將讀出的結(jié)果寫會(huì)該扇區(qū),操作復(fù)雜低效,內(nèi)存消耗大。擦寫數(shù)據(jù)時(shí),現(xiàn)有方法,ー種方式是以追加方式存儲(chǔ)新數(shù)據(jù),另ー種方式是將某個(gè)扇區(qū)的已有數(shù)據(jù)與新數(shù)據(jù)排序,再擦除該扇區(qū),再將排序結(jié)果寫入該扇區(qū)。前者的存儲(chǔ)速度快,但是檢索速度慢;后者的存儲(chǔ)速度慢,但是檢索速度快。查詢數(shù)據(jù)時(shí),現(xiàn)有方法,對(duì)于以追加方式存儲(chǔ)新數(shù)據(jù)而言,只能順序查找,復(fù)雜度為線性增長(zhǎng),復(fù)雜度高;對(duì)于以排序方式存儲(chǔ)新數(shù)據(jù)而言,可以使用二分查找,復(fù)雜度為對(duì)數(shù)增長(zhǎng),復(fù)雜度低??缟葏^(qū)存儲(chǔ)數(shù)據(jù)時(shí),如果某扇區(qū)已滿,現(xiàn)有方法,對(duì)于以追加方式存儲(chǔ)新數(shù)據(jù)而言,可以隨機(jī)找ー個(gè)未滿的扇區(qū),存放新數(shù)據(jù),效率高;對(duì)于以排序方式存儲(chǔ)新數(shù)據(jù)而言,為將新數(shù)據(jù)存儲(chǔ)到正確位置,需要擦除并重新寫入該扇區(qū)之后全部已存儲(chǔ)數(shù)據(jù)扇區(qū)的數(shù)據(jù),效率極其低下。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法,它是ー種基于位圖和未知長(zhǎng)度二分查找的閃存介質(zhì)存儲(chǔ)檢索易變數(shù)據(jù)的高效方法,以解決現(xiàn)有閃存介質(zhì)存儲(chǔ)檢索易變數(shù)據(jù)時(shí)存儲(chǔ)效率與檢索效率不能兼顧的問題。本發(fā)明使用位圖,標(biāo)示數(shù)據(jù)的有效性,進(jìn)而實(shí)現(xiàn)高效的刪除操作;使用負(fù)載因子,決定各扇區(qū)的負(fù)載百分比,進(jìn)而解決以排序方式存儲(chǔ)數(shù)據(jù)導(dǎo)致的存儲(chǔ)速度慢的問題;使用未知長(zhǎng)度ニ分查找,解決對(duì)未知長(zhǎng)度的有序序列中的高效數(shù)據(jù)檢索;使用擦寫距離,解決跨扇區(qū)存儲(chǔ)數(shù)據(jù)時(shí),由于某扇區(qū)滿而導(dǎo)致的極低效的數(shù)據(jù)移動(dòng)問題。本發(fā)明的技術(shù)方案如下一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法,是利用單片機(jī)控制系統(tǒng)實(shí)現(xiàn)的,該系統(tǒng)包括單片機(jī)、閃存存儲(chǔ)芯片、查詢生成器、報(bào)警器、上位機(jī),上位機(jī)通過 RS-485連接單片機(jī),單片機(jī)通過SPI連接閃存存儲(chǔ)芯片,單片機(jī)通過SPI或RS-232連接查詢生成器,單片機(jī)通過三極管放大器和繼電器連接報(bào)警器;查詢生成器用于向單片機(jī)輸入待查詢的數(shù)據(jù),當(dāng)待查詢數(shù)據(jù)在閃存存儲(chǔ)芯片中不存在時(shí),報(bào)警器報(bào)警,上位機(jī)將變更的數(shù)據(jù)發(fā)送至單片機(jī),單片機(jī)負(fù)責(zé)將數(shù)據(jù)變更反映到閃存存儲(chǔ)芯片中;該方法分作6步,前3步提供設(shè)定及計(jì)算得到的基本參數(shù),后3步分別進(jìn)行不同的操作以實(shí)現(xiàn)3組不同的功能,該方法具體步驟如下I)各扇區(qū)的容量為Capacity,負(fù)載因子為L(zhǎng)oadFactor,扇區(qū)數(shù)量為SectorCount,扇區(qū)從0開始編號(hào);2)向編號(hào)為i的已存儲(chǔ)SizeStorecKi)大小數(shù)據(jù)的扇區(qū),存入長(zhǎng)度為N的數(shù)據(jù)時(shí),
該扇區(qū)提供的剰余空間
權(quán)利要求
1. 一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法,是利用單片機(jī)控制系統(tǒng)實(shí)現(xiàn)的,該系統(tǒng)包括單片機(jī)、閃存存儲(chǔ)芯片、查詢生成器、報(bào)警器、上位機(jī),上位機(jī)通過RS-485 連接單片機(jī),單片機(jī)通過SPI連接閃存存儲(chǔ)芯片,單片機(jī)通過SPI或RS-232連接查詢生成器,單片機(jī)通過三極管放大器和繼電器連接報(bào)警器;查詢生成器用于向單片機(jī)輸入待查詢的數(shù)據(jù),當(dāng)待查詢數(shù)據(jù)在閃存存儲(chǔ)芯片中不存在時(shí),報(bào)警器報(bào)警,上位機(jī)將變更的數(shù)據(jù)發(fā)送至單片機(jī),單片機(jī)負(fù)責(zé)將數(shù)據(jù)變更反映到閃存存儲(chǔ)芯片中;該方法分作6步,前3步提供設(shè)定及計(jì)算得到的基本參數(shù),后3步分別進(jìn)行不同的操作以實(shí)現(xiàn)3組不同的功能,該方法具體步驟如下1)各扇區(qū)的容量為Capacity,負(fù)載因子為L(zhǎng)oadFactor,扇區(qū)數(shù)量為SectorCount,扇區(qū)從O開始編號(hào);2)向編號(hào)為i的已存儲(chǔ)SizeStorecKi)大小數(shù)據(jù)的扇區(qū),存入長(zhǎng)度為N的數(shù)據(jù)時(shí),該I Capacity-SizeStored(i),N+SizeStored( i KCapacity扇區(qū)提供的剩余空間為L(zhǎng)(i,N)=也就是[Capacity^LoadFactor-SizeSroredii), Iliili說(shuō),編號(hào)為i的扇區(qū)在已存儲(chǔ)SizeStorecKi)大小的數(shù)據(jù)后,仍有剩余空間繼續(xù)存儲(chǔ)大小為 N的數(shù)據(jù)時(shí),該扇區(qū)提供的剩余空間為扇區(qū)容量減去扇區(qū)中已存儲(chǔ)的數(shù)據(jù)大?。黄渌闆r下,該扇區(qū)提供的剩余空間為“負(fù)載因子限制下”的扇區(qū)容量即CapaCity*L0adFaCt0r減去扇區(qū)中已存儲(chǔ)的數(shù)據(jù)大??;另外,允許LIN)的結(jié)果為負(fù),當(dāng)KIN)的結(jié)果為負(fù)時(shí)表示該扇區(qū)需要額外空間存儲(chǔ)數(shù)據(jù);3)擦寫距離分為前向擦寫距離DEWp和后向擦寫距離DEWn兩種,有效的擦寫距離為非負(fù)整數(shù),擦寫距離的計(jì)算過程步驟如下a.向i號(hào)扇區(qū)寫入長(zhǎng)度為N的數(shù)據(jù)時(shí),前向擦寫距離DEWp的計(jì)算過程步驟如下1.初始化DEffp=O ;前向擦寫距離的初始值為O sectorNo=i ;扇區(qū)編號(hào)Rsumps=Rcs (i) N);編號(hào)小于和等于i的所有扇區(qū)的剩余空間之和;i1.如果sectorNo>=0并且Rsumps〈N,轉(zhuǎn)至步驟iii;否則轉(zhuǎn)至步驟iv ;ii1.sectorNo=sectorNo-l DEffp=DEffp+IRSUmpS=RSUmpS+RcS (sectorNo, N-Rsumps)轉(zhuǎn)至步驟ii ;iv.如果Rsumps〈N,那么 DEWp=-1 ;b.向i號(hào)扇區(qū)寫入長(zhǎng)度為N的數(shù)據(jù)時(shí),后向擦寫距離DEWn的計(jì)算過程步驟如下1.初始化DEffn=O ;后向擦寫距離的初始值為O sectorNo=i ;扇區(qū)編號(hào)Rsumns=Rcs ( ) N);編號(hào)大于和等于i的所有扇區(qū)的剩余空間之和;i1.如果sectorNo〈SectorCount并且RS_S〈N,轉(zhuǎn)至步驟iii;否則轉(zhuǎn)至步驟iv ;ii1.sectorNo=sectorNo+lDEffn=DEffn+I轉(zhuǎn)至步驟ii ;c.如果 Rsumns〈N,那么 DEWn=-1 ;4)查找操作該操作首先執(zhí)行未知長(zhǎng)度二分查找算法,然后結(jié)合位圖Bitmap,判定該數(shù)據(jù)是否有效, 查找操作步驟如下a.未知長(zhǎng)度 二分查找,查找操作的執(zhí)行過程主要分為以下兩步1.使用步長(zhǎng)倍增的方式,即第I次查找時(shí),步長(zhǎng)為1,即2(1-1);第2次查找時(shí),步長(zhǎng)為2, 即2(2-1);第3次查找時(shí),步長(zhǎng)為4,即2(h),以此類推,該方式快速確定一個(gè)不小于待查詢數(shù)據(jù)的數(shù)據(jù)地址,并使next變量指向該地址,而將cur變量指向next前的最后一個(gè)小于待查詢數(shù)據(jù)的數(shù)據(jù)地址,cur初始值為O,next初始值為I ;i1.使用標(biāo)準(zhǔn)二分查找,在cur和next-Ι之間確定待查詢數(shù)據(jù)是否存在;如果查找失敗,則直接報(bào)錯(cuò);否則,繼續(xù)執(zhí)行;b.查看被成功查找到的數(shù)據(jù)的下標(biāo)Iquwy所對(duì)應(yīng)的位圖是否有效,即需要進(jìn)一步驗(yàn)證數(shù)據(jù)的有效性;用以下方式定義下標(biāo)i的位圖查詢函數(shù)
全文摘要
一種基于未知長(zhǎng)度二分查找的閃存數(shù)據(jù)檢索存儲(chǔ)的方法,屬于閃存存儲(chǔ)技術(shù)領(lǐng)域。本發(fā)明結(jié)合未知長(zhǎng)度二分查找、位圖、負(fù)載因子、擦寫距離等算法和思想,用未知長(zhǎng)度二分查找代替全地址空間(扇區(qū)的全部地址)的二分查找,用位圖代替實(shí)際刪除,用負(fù)載因子和擦寫距離代替全地址空間存儲(chǔ),本發(fā)明檢索存儲(chǔ)的方法提高了對(duì)閃存介質(zhì)的查詢、刪除、擦寫等基本操作的性能,同時(shí),還具有可擴(kuò)展性強(qiáng)、資源占用少等優(yōu)點(diǎn),易于在嵌入式系統(tǒng)或無(wú)操作系統(tǒng)的單片機(jī)中實(shí)現(xiàn)。
文檔編號(hào)G06F12/02GK103020323SQ20131001515
公開日2013年4月3日 申請(qǐng)日期2013年1月15日 優(yōu)先權(quán)日2013年1月15日
發(fā)明者王洪君, 李紹林, 曹敏, 王琰, 王惠, 王光雷 申請(qǐng)人:山東大學(xué)