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