專利名稱:提高與非門陣列閃存的存取裝置與方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于一種提高與非門陣列閃存(NANDFlash)的存取裝置與方法, 提供在寫入與非門陣列閃存時,將未滿一個數(shù)據(jù)頁的數(shù)據(jù)暫存于鏡像數(shù)據(jù)區(qū) 中,以減少與非門陣列閃存內(nèi)區(qū)塊數(shù)據(jù)重復(fù)拷貝-備份和抹除。
背景技術(shù):
一般操作系統(tǒng)的存取方式,都是以節(jié)區(qū)(sector)為最基本單位,而大量數(shù) 據(jù)的存取,則是以多個連續(xù)的節(jié)區(qū)為單位,例如,串節(jié)(chister)。然而,與非 門陣列閃存(NANDFlash)的讀取(read)與寫入(write)的單位,是以數(shù)據(jù)頁(page) 為單位, 一個數(shù)據(jù)頁的大小是以512 bytes為倍數(shù),例如512 bytes、 1024 bytes、 2048bytes、或4096 bytes等。
現(xiàn)有與非門陣列閃存將內(nèi)存分割為數(shù)個固定的區(qū)塊(blockl-blockN),每 個區(qū)塊切割成數(shù)個大小相同的數(shù)據(jù)頁(pagel-pageN), 一個數(shù)據(jù)頁中切割成多 個節(jié)區(qū)(例如,數(shù)據(jù)頁page3分配為4個節(jié)區(qū)(page3J-page3—4),請參閱圖1 所示。其中,與非門陣列閃存的抹斷erase)操作的基本單位是區(qū)l央(block), 而輸入/輸出(讀取數(shù)據(jù)/寫入數(shù)據(jù))的操作單位則為數(shù)據(jù)頁,數(shù)據(jù)頁也是與非門 陣列閃存與主存儲器之間數(shù)據(jù)交換的單位。
與非門陣列閃存是以數(shù)據(jù)頁為單位進(jìn)行讀取和編程(program)等操作;而
抹除則是以區(qū)塊為單位。因此在管理上也就以一個區(qū)塊為單位來做管理,當(dāng) 主控端(處理器)在存取檔案數(shù)據(jù)時,以節(jié)區(qū)為單位。但是,節(jié)區(qū)并不一定能 與與非門陣列閃存的存取單位數(shù)據(jù)頁(page)對齊(alignment),尤其是在作寫入
與非門陣列閃存的動作時。
圖2A為一范例,說明當(dāng)區(qū)塊blockl內(nèi)已經(jīng)寫了部分的數(shù)據(jù)頁 (pagel-page3)與節(jié)區(qū)(page4J與page4—2)時,當(dāng)一筆新的數(shù)據(jù)欲寫入與非門 陣列閃存,并接續(xù)舊的數(shù)據(jù)的位置,即新數(shù)據(jù)準(zhǔn)備從區(qū)塊bkxTkl的節(jié)區(qū) page4—3開始寫入。圖2B說明管理者必須將目前區(qū)塊blockl的舊數(shù)據(jù)
(pagel-page3、 page4_l與page4_2),拷貝-備份(copy-back)到一個新的可用自
由區(qū)塊block2中。圖2C說明區(qū)塊block2的節(jié)區(qū)(page4—3)寫入2筆新的數(shù)據(jù)。
最后,并以新的區(qū)塊block2取代舊的區(qū)塊blockl,將舊的區(qū)塊blockl的數(shù)
據(jù)抹除掉,才能再重新寫入新的數(shù)據(jù)。由于閃存(flash)本身運(yùn)作模式的特性,
也就是不能直接對與非門陣列閃存做直接覆寫的動作。
雖然與非門陣列閃存具有多項優(yōu)點,但有兩項硬件電氣上的限制,不能
直接覆寫和抹除次數(shù)限制。而抹除次數(shù)的限制方面, 一般而言,與非門陣列 閃存抹除次數(shù)為IOO,OOO次,抹除次數(shù)依制造商而定。所以為延長與非門陣 列閃存的壽命,就得減少對與非門陣列閃存作抹除的動作。
發(fā)明內(nèi)容
本發(fā)明提供一種提高與非門陣列閃存的存取裝置與方法。
本發(fā)明提供的提高與非門陣列閃存的存取裝置包含至少一個與非門陣 列閃存,每一該與非門陣列閃存切割為多個存取區(qū)塊,每一該區(qū)塊分配多個 數(shù)據(jù)頁,每一該數(shù)據(jù)頁中再分配多個節(jié)區(qū);以及一鏡像數(shù)據(jù)區(qū);其中,當(dāng) 一區(qū)塊內(nèi)的部分?jǐn)?shù)據(jù)不滿一數(shù)據(jù)頁時,將不滿該數(shù)據(jù)頁的數(shù)據(jù)暫存于該鏡像 數(shù)據(jù)區(qū)中;當(dāng)欲寫入至少一個節(jié)區(qū)的新數(shù)據(jù),其接續(xù)于前一筆數(shù)據(jù)的位置時, 則將新的數(shù)據(jù)接續(xù)寫入該鏡像數(shù)據(jù)區(qū)內(nèi),當(dāng)該鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁 的數(shù)據(jù)時,再寫入該區(qū)塊內(nèi)的該數(shù)據(jù)頁中。
上述的提高與非門陣列閃存存取裝置,其中優(yōu)選地,每一該與非門陣列 閃存與該鏡像數(shù)據(jù)區(qū)的存取動作由一處理器所控制。
上述的提高與非門陣列閃存存取裝置,其中優(yōu)選地,該鏡像數(shù)據(jù)區(qū)為硬 件模塊的隨機(jī)存取內(nèi)存。
上述的提高與非門陣列閃存存取裝置,其中優(yōu)選地,該鏡像數(shù)據(jù)區(qū)為軟 件緩沖區(qū)。
上述的提高與非門陣列閃存存取裝置,其中優(yōu)選地,該鏡像數(shù)據(jù)區(qū)大小 至少等于該數(shù)據(jù)頁的大小。
上述的提高與非門陣列閃存存取裝置,其中優(yōu)選地,新的數(shù)據(jù)與舊的數(shù) 據(jù)不是連續(xù)的線性地址時,則在新數(shù)據(jù)寫入該與非門陣列閃存時,將該鏡像 數(shù)據(jù)區(qū)的數(shù)據(jù)回存至該數(shù)據(jù)頁中。
本發(fā)明還提供一種提高與非門陣列閃存的存取方法,其中該與非門陣列 閃存切割為多個存取區(qū)塊,每一該區(qū)塊分配多個數(shù)據(jù)頁,每一該數(shù)據(jù)頁中再 分配多個節(jié)區(qū),該方法包含下列步驟A.判斷一區(qū)塊內(nèi)是否有不滿一數(shù)據(jù)頁 的數(shù)據(jù)內(nèi)容;B.是的話,將不滿一個數(shù)據(jù)頁的數(shù)據(jù)內(nèi)容則暫存于一鏡像數(shù)據(jù) 區(qū)內(nèi);C.當(dāng)欲寫入一新數(shù)據(jù)時,判斷該新數(shù)據(jù)的地址是否接續(xù)舊的數(shù)據(jù);D. 是的話,該新數(shù)據(jù)接續(xù)寫入該鏡像數(shù)據(jù)區(qū)內(nèi);以及E.當(dāng)該鏡像數(shù)據(jù)區(qū)內(nèi)寫滿 一個數(shù)據(jù)頁的數(shù)據(jù)時,再寫入該區(qū)塊內(nèi)的原來該數(shù)據(jù)頁中。
上述的提高與非門陣列閃存存取方法,其中優(yōu)選地,該步驟C中,該新 數(shù)據(jù)的地址并無接續(xù)舊的數(shù)據(jù)時,將該鏡像數(shù)據(jù)區(qū)內(nèi)數(shù)據(jù)存回原來的該數(shù)據(jù) 頁中,并直接對該與非門陣列閃存寫入該新數(shù)據(jù)。
本發(fā)明提供在一個與非門陣列閃存的存取系統(tǒng)中,在寫入與非門陣列閃 存時,將未滿一個數(shù)據(jù)頁的數(shù)據(jù)暫存于一鏡像數(shù)據(jù)區(qū)(mirrordataarea, MDA) 中,當(dāng)下一筆寫入的數(shù)據(jù)是連續(xù)的線性地址時,可以等待整個頁填滿一并儲 存到原來的數(shù)據(jù)頁中。如此可以減少與非門陣列閃存內(nèi)區(qū)塊數(shù)據(jù)重復(fù)拷貝-備份和抹除,以延長與非門陣列閃存的壽命。本發(fā)明的裝置,其在存取鏡像 數(shù)據(jù)區(qū)的數(shù)據(jù)時,主控端的處理器(processor)可同時計算處理下一筆數(shù)據(jù)應(yīng) 當(dāng)儲存的最佳位置,以達(dá)到最有效率的方式。
圖1為一說明現(xiàn)有與非門陣列閃存的分配的示意圖。 圖2A為一說明一新數(shù)據(jù)準(zhǔn)備寫入?yún)^(qū)塊的節(jié)區(qū)中的范例。 圖2B說明一區(qū)塊的舊數(shù)據(jù),拷貝-備份到一個新的可用自由區(qū)塊的一個 示意圖。
圖2C說明寫入2筆新的數(shù)據(jù)至區(qū)塊的一個示意圖。 圖3為本發(fā)明的一實施范例,說明一種與非門陣列閃存存取裝置的一個 示意圖。
圖4A為一工作范例,說明處理器將區(qū)塊中不滿一個數(shù)據(jù)頁的數(shù)據(jù)暫存 于鏡像數(shù)據(jù)區(qū)中。
圖4B說明將新的數(shù)據(jù)接續(xù)寫入鏡像數(shù)據(jù)區(qū)的節(jié)區(qū)內(nèi)的一個示意圖。 圖4C說明鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù),寫回區(qū)塊的」個示意
圖。
圖5為另一工作范例,說明當(dāng)寫入的新數(shù)據(jù)大于2個節(jié)區(qū)時的一個示意圖。
圖6為本發(fā)明一種與非門陣列閃存存取方法的一個工作流程。
其中,附圖標(biāo)記說明如下
blockl-blockN 區(qū)塊 pagel-pageN 數(shù)據(jù)頁 page3—1 -page3—4 數(shù)據(jù)頁的節(jié)區(qū)
1 與非門陣列閃存 3 鏡像數(shù)據(jù)區(qū)
5 處理器
Ml-M4 鏡像數(shù)據(jù)區(qū)內(nèi)的節(jié)區(qū) 601-606 步驟流程
具體實施例方式
配合下列附圖、實施例的詳細(xì)說明及權(quán)利要求范圍,將上述及本發(fā)明的 其它目的與優(yōu)點詳述于后。
圖3為本發(fā)明的一實施范例,說明提高與非門陣列閃存的存取裝置的一 個示意圖。參考圖3,此與非門陣列閃存存取裝置主要包括至少一個與非門 陣列閃存l、以及一鏡像數(shù)據(jù)區(qū)(MDA)3。其中,與非門陣列閃存切割為多個 存取區(qū)塊(blockl-blockN),每一區(qū)塊分配多個數(shù)據(jù)頁,每一數(shù)據(jù)頁中再分配 多個節(jié)區(qū)(sector)。鏡像數(shù)據(jù)區(qū)3可以為硬件模塊,如隨機(jī)存取內(nèi)存(Random Access Memory, RAM),或是軟件的緩沖區(qū)(buffer),而鏡像數(shù)據(jù)區(qū)3的大小 至少為與非門陣列閃存內(nèi)的一數(shù)據(jù)頁的大小。
處理器5用以控制與非門陣列閃存1與鏡像數(shù)據(jù)區(qū)3的數(shù)據(jù)存取。處理 器5將與非門陣列閃存的一區(qū)塊內(nèi)的不滿一個數(shù)據(jù)頁的數(shù)據(jù),暫存于鏡像數(shù) 據(jù)區(qū)3中。當(dāng)寫入至少一個節(jié)區(qū)的新數(shù)據(jù)時,其接續(xù)于前一筆數(shù)據(jù)的地址時, 則將新的數(shù)據(jù)接續(xù)寫入鏡像數(shù)據(jù)區(qū)內(nèi),當(dāng)鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù) 據(jù)時,再寫入?yún)^(qū)塊內(nèi)的數(shù)據(jù)頁中。 據(jù)區(qū)3的數(shù)據(jù)時,數(shù)據(jù)流(data stream) 與指令流(command stream)是可以平行工作,因此,處理器5可以獨(dú)立計算 處理下一筆數(shù)據(jù)應(yīng)當(dāng)儲存的最佳位置,以達(dá)到最有效率的方式。
以下將以兩個工作范例來加以說明
圖4A為一工作范例(working example),說明處理器5將區(qū)塊中不滿一個 數(shù)據(jù)頁的數(shù)據(jù)暫存于鏡像數(shù)據(jù)區(qū)中。參考圖4A,區(qū)塊blockl內(nèi)的每一數(shù)據(jù) 頁(pagel-page9)分別切割為4個節(jié)區(qū)(sector),每一節(jié)區(qū)大小為512 bytes,每 一數(shù)據(jù)頁大小為2K bytes;鏡像數(shù)據(jù)區(qū)3的大小等于一數(shù)據(jù)頁的大小2K bytes,且分配為4個節(jié)區(qū)(M1-M4),每一個節(jié)區(qū)(M1-M4)的大小為512 bytes。 當(dāng)區(qū)塊blockl內(nèi)的儲存數(shù)據(jù)為5 Kbytes,其地址位于數(shù)據(jù)頁pagel、 page2、 與節(jié)區(qū)(page3—1、 page3—2)中。其中,處理器5將不滿一個數(shù)據(jù)頁(page3)的 節(jié)區(qū)數(shù)據(jù)(page3—1、 page3一2)則暫存于一鏡像數(shù)據(jù)區(qū)3的節(jié)區(qū)(M1與M2)中。
圖4B說明當(dāng)欲寫入2個節(jié)區(qū)的新數(shù)據(jù)時,其接續(xù)于舊的節(jié)區(qū)數(shù)據(jù) (page3—1、 page3—2)的位置時,則將新的數(shù)據(jù)接續(xù)寫入鏡像數(shù)據(jù)區(qū)3的節(jié)區(qū) (M3與M4)內(nèi)。當(dāng)鏡像數(shù)據(jù)區(qū)3內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù)時,再寫入?yún)^(qū)塊 blockl內(nèi)的數(shù)據(jù)頁(page3)中,請參閱圖4C。
圖5為另一工作范例,接續(xù)說明上述的工作范例中,當(dāng)欲寫入的新數(shù)據(jù) 大于2個節(jié)區(qū)時,則將新數(shù)據(jù)中前2個節(jié)區(qū)數(shù)據(jù)暫存于鏡像數(shù)據(jù)區(qū),然后, 寫入?yún)^(qū)塊blockl內(nèi)的數(shù)據(jù)頁(page3)中,而剩余的數(shù)據(jù)則接續(xù)從區(qū)塊blockl 的數(shù)據(jù)頁(page4)中寫入,當(dāng)寫入的數(shù)據(jù)中有不滿一個數(shù)據(jù)頁的大小,例如, 原本要儲存于節(jié)區(qū)page6—1的數(shù)據(jù),處理器5同樣的將有不滿一個數(shù)據(jù)頁的 節(jié)區(qū)page6—1數(shù)據(jù)暫存于鏡像數(shù)據(jù)區(qū)的節(jié)區(qū)Ml中。
上述的兩個工作范例中,若新的數(shù)據(jù)與舊的數(shù)據(jù)不是連續(xù)的線性地址 時,則在新數(shù)據(jù)寫入與非門陣列閃存時,將鏡像數(shù)據(jù)區(qū)的數(shù)據(jù)(M1與M2)回 存至區(qū)塊blockl節(jié)區(qū)(page3—1、 page3—2)中。如此,并不會影響原來數(shù)據(jù)的 正確性以及存取的效率。
圖6為本發(fā)明提高與非門陣列閃存的存取方法的一個工作流程圖。判斷 一區(qū)塊內(nèi)是否有不滿一個數(shù)據(jù)頁的數(shù)據(jù)內(nèi)容,如步驟601所示。是的話,處 理器將不滿一個數(shù)據(jù)頁的數(shù)據(jù)內(nèi)容則暫存于鏡像數(shù)據(jù)區(qū)內(nèi),如步驟602所示。 當(dāng)欲寫入一新的數(shù)據(jù),判斷新數(shù)據(jù)的地址是否接續(xù)舊的數(shù)據(jù),如步驟603所
示。是的話,新數(shù)據(jù)接續(xù)寫入鏡像數(shù)據(jù)區(qū)內(nèi),如步驟604所示。當(dāng)鏡像數(shù)據(jù) 區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù)時,再寫入?yún)^(qū)塊內(nèi)的原來數(shù)據(jù)頁中,如步驟605所示。
上述的步驟603中,當(dāng)新的數(shù)據(jù)地址并無接續(xù)舊的數(shù)據(jù)地址時,則將鏡 像數(shù)據(jù)區(qū)內(nèi)數(shù)據(jù)存回原來的數(shù)據(jù)頁中,并直接對與非門陣列閃存寫入新的數(shù) 據(jù),如步驟605所示。
然而,以上所述的內(nèi)容,僅為發(fā)明的最佳實施例而已,當(dāng)不能依此限定 本發(fā)明實施的范圍。即所有依據(jù)本發(fā)明權(quán)利要求范圍所作的均等變化與修 飾,皆應(yīng)仍屬本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種提高與非門陣列閃存的存取裝置,該裝置至少包含至少一個與非門陣列閃存,每一該與非門陣列閃存切割為多個存取區(qū)塊,每一該區(qū)塊分配多個數(shù)據(jù)頁,每一該數(shù)據(jù)頁中再分配多個節(jié)區(qū);以及 一鏡像數(shù)據(jù)區(qū); 其中,當(dāng)一區(qū)塊內(nèi)的部分?jǐn)?shù)據(jù)不滿一數(shù)據(jù)頁時,將不滿該數(shù)據(jù)頁的數(shù)據(jù)暫存于該鏡像數(shù)據(jù)區(qū)中;當(dāng)欲寫入至少一個節(jié)區(qū)的新數(shù)據(jù),其接續(xù)于前一筆數(shù)據(jù)的位置時,則將新的數(shù)據(jù)接續(xù)寫入該鏡像數(shù)據(jù)區(qū)內(nèi),當(dāng)該鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù)時,再寫入該區(qū)塊內(nèi)的該數(shù)據(jù)頁中。
2. 如權(quán)利要求1所述的提高與非門陣列閃存存取裝置,其中每一該與 非門陣列閃存與該鏡像數(shù)據(jù)區(qū)的存取動作由 一處理器所控制。
3. 如權(quán)利要求1所述的提高與非門陣列閃存存取裝置,其中該鏡像數(shù) 據(jù)區(qū)為硬件模塊的隨機(jī)存取內(nèi)存。
4. 如權(quán)利要求1所述的提高與非門陣列閃存存取裝置,其中該鏡像數(shù) 據(jù)區(qū)為軟件緩沖區(qū)。
5. 如權(quán)利要求1所述的提高與非門陣列閃存存取裝置,其中該鏡像數(shù) 據(jù)區(qū)大小至少等于該數(shù)據(jù)頁的大小。
6. 如權(quán)利要求1所述的提高與非門陣列閃存存取裝置,其中新的數(shù)據(jù) 與舊的數(shù)據(jù)不是連續(xù)的線性地址時,則在新數(shù)據(jù)寫入該與非門陣列閃存時, 將該鏡像數(shù)據(jù)區(qū)的數(shù)據(jù)回存至該數(shù)據(jù)頁中。
7. —種提高與非門陣列閃存的存取方法,其中該與非門陣列閃存切割 為多個存取區(qū)塊,每一該區(qū)塊分配多個數(shù)據(jù)頁,每一該數(shù)據(jù)頁中再分配多個 節(jié)區(qū),該方法包含下列步驟A. 判斷一區(qū)塊內(nèi)是否有不滿一數(shù)據(jù)頁的數(shù)據(jù)內(nèi)容;B. 是的話,將不滿一個數(shù)據(jù)頁的數(shù)據(jù)內(nèi)容則暫存于一鏡像數(shù)據(jù)區(qū)內(nèi);C. 當(dāng)欲寫入一新數(shù)據(jù)時,判斷該新數(shù)據(jù)的地址是否接續(xù)舊的數(shù)據(jù);D. 是的話,該新數(shù)據(jù)接續(xù)寫入該鏡像數(shù)據(jù)區(qū)內(nèi);以及E. 當(dāng)該鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù)時,再寫入該區(qū)塊內(nèi)的原來 該數(shù)據(jù)頁中。
8.如權(quán)利要求7所述的提高與非門陣列閃存存取方法,其中該步驟C 中,該新數(shù)據(jù)的地址并無接續(xù)舊的數(shù)據(jù)時,將該鏡像數(shù)據(jù)區(qū)內(nèi)數(shù)據(jù)存回原來 的該數(shù)據(jù)頁中,并直接對該與非門陣列閃存寫入該新數(shù)據(jù)。
全文摘要
本發(fā)明揭示一種提高與非門陣列閃存(NAND Flash)的存取裝置與方法。此存取裝置包含至少一個與非門陣列閃存、以及一鏡像數(shù)據(jù)區(qū)。主控端將與非門陣列閃存的區(qū)塊內(nèi)的不滿一個數(shù)據(jù)頁的數(shù)據(jù),暫存于鏡像數(shù)據(jù)區(qū)中,當(dāng)欲寫入新數(shù)據(jù)至與非門陣列閃存時,其新數(shù)據(jù)的地址接續(xù)于前一筆數(shù)據(jù)的連續(xù)線性地址時,則將新數(shù)據(jù)接續(xù)寫入鏡像數(shù)據(jù)區(qū)內(nèi),當(dāng)鏡像數(shù)據(jù)區(qū)內(nèi)寫滿一個數(shù)據(jù)頁的數(shù)據(jù)后,再寫回區(qū)塊內(nèi)的數(shù)據(jù)頁中。本發(fā)明提供在寫入與非門陣列閃存時,將未滿一個數(shù)據(jù)頁的數(shù)據(jù)暫存于鏡像數(shù)據(jù)區(qū)中,以減少與非門陣列閃存內(nèi)區(qū)塊數(shù)據(jù)重復(fù)拷貝-備份和抹除,可延長與非門陣列閃存的壽命。
文檔編號G11C16/06GK101364438SQ200710141150
公開日2009年2月11日 申請日期2007年8月8日 優(yōu)先權(quán)日2007年8月8日
發(fā)明者詹立翔, 陳建文, 陳桮棬 申請人:奇巖電子股份有限公司