TWI629592B - 記憶體裝置及應用於其上之資料管理方法 - Google Patents

記憶體裝置及應用於其上之資料管理方法 Download PDF

Info

Publication number
TWI629592B
TWI629592B TW106136746A TW106136746A TWI629592B TW I629592 B TWI629592 B TW I629592B TW 106136746 A TW106136746 A TW 106136746A TW 106136746 A TW106136746 A TW 106136746A TW I629592 B TWI629592 B TW I629592B
Authority
TW
Taiwan
Prior art keywords
data
sub
cluster
controller
paging
Prior art date
Application number
TW106136746A
Other languages
English (en)
Other versions
TW201917583A (zh
Inventor
林秉賢
王韋程
何建忠
張原豪
郭大維
張育銘
Original Assignee
旺宏電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 旺宏電子股份有限公司 filed Critical 旺宏電子股份有限公司
Priority to TW106136746A priority Critical patent/TWI629592B/zh
Application granted granted Critical
Publication of TWI629592B publication Critical patent/TWI629592B/zh
Publication of TW201917583A publication Critical patent/TW201917583A/zh

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本揭露係為一種記憶體裝置及應用於其上之資料管理方法。記憶體裝置包含記憶體陣列與控制器。記憶體陣列包含第一儲存區域與第二儲存區域。第一儲存區域包含排列為I1行與J1列的複數個第一子區域叢集,且各第一子區域叢集包含排列為O1行與P1列的複數個子區域。第二儲存區域包含排列為I2行與J2列的複數個第二子區域叢集,且各第二子區域叢集包含排列為O2行與P2列的複數個子區域。其中,控制器利用該等第一子區域叢集中的第一第一子區域叢集以及該等第二子區域叢集中的第一第二子區域叢集之一者存取第一資料。

Description

記憶體裝置及應用於其上之資料管理方法
本發明是有關於一種記憶體裝置及應用於其上之資料管理方法,且特別是有關於一種針對機密性資料的存放之記憶體裝置及應用於其上之資料管理方法。
隨著影音技術的發展,為能存取大量的影音資料,平板電腦、手機、數位相機等電子產品均提供記憶體裝置。
請參見第1圖,其係記憶體裝置之示意圖。主控裝置10可透過匯流排或傳輸線等方式而電連接於記憶體裝置11的控制器111。控制器111因應主控裝置10發出的指令而存取記憶體陣列115。其中,記憶體陣列115可為不同類型的儲存元件。例如,快閃記憶體陣列。
記憶體陣列115採用實體位址(physical address)定址的方式紀錄資料的位置,但是主控裝置10使用的檔案系統,卻是以邏輯位址(logical address)定址的方式存取資料。其中,控制器111內部設有一快閃轉譯層(Flash translation layer,簡稱為FTL),用於提供位址映射的功能,將主控裝置10傳出的邏輯位址 轉換為實體位址,反之亦然。也就是說,快閃轉譯層能協助主控裝置10存取記憶體陣列115的資料。另,基於快閃記憶體存取時的限制,習用技術的記憶體裝置係以異地更新方式儲存資料。
請參見第2A~2C圖,其係習用技術的記憶體裝置,以異地更新(Out-of-place update)方式儲存資料之示意圖。為便於說明,本文以空白方格表示未存放資料的資料分頁;以點狀網底表示已經寫入資料的資料分頁(例如,第2A圖的資料分頁115a)。
在第2A圖中,控制器111從主控裝置10接收一筆新的寫入資料A。本文以英文字母搭配數字的方式表示資料內容與其對應的版本。即,相同的英文字母代表同一筆資料(例如同一個檔案),而數字則代表版本的新舊。因為寫入資料A為第一次寫入的緣故,此處表示為資料A1。在第2A圖中,快閃轉譯層111a將資料A1寫入資料分頁115a中。
在第2B圖中,控制器111從主控裝置10接收更新資料A的指令。即,主控裝置10擬以資料A2更新原本存放在記憶體裝置11的資料A1。此時,快閃轉譯層111a並不會以資料A1更新存放在資料分頁115a的內容。事實上,快閃轉譯層111a會將資料A2寫入資料分頁115b中,並更改內部的位址映射表(Mapping Table)。此外,快閃轉譯層111a還會將資料分頁115a標示為無效。在本文中,以交叉的網底表示資料分頁被標示為無效(例如,第2B圖的資料分頁115a)。其後,若主控裝置10想要讀取資料A時,快閃轉譯層111a會從資料分頁115b讀取資料A2。
在第2C圖中,控制器111再度從主控裝置10接收更新資料A的指令。即,主控裝置10擬以資料A3更新原本存放在記憶體裝置11的資料A2。同樣地,快閃轉譯層111a並不會更新資料分頁115b的內容,而是將資料A3寫入資料分頁115c中,並更改內部的位址映射表。此外,快閃轉譯層111a還會將資料分頁115b標示為無效。
根據第2A~2C圖的說明可以得知,控制器111在接收更新資料時,原本用於存放過時資料(stale data)的資料分頁(例如,資料分頁115a、115b)雖然被快閃轉譯層111a標示為無效,但在該些資料分頁存放的資料內容實際上仍然存在。此種存放著過時資料的資料分頁,仍有機會因為被駭而讀出。換言之,對於機密性較高的資料(例如,銀行資料、公司內部資料等)而言,過時資料仍存在於原本的資料分頁中,隨時可能被讀取,進而影響資料的安全性。也就是說,快閃記憶體異地更新的特性,並不適合機密性較高的資料。
本發明係有關於一種記憶體裝置及應用於其上之資料管理方法。
根據本發明之第一方面,提出一種包含記憶體陣列與控制器的記憶體裝置。記憶體陣列包含第一儲存區域與第二儲存區域。第一儲存區域對應於第一資料層級,第二儲存區域對應於第二資料層級。其中,第一儲存區域包含排列為I1行與J1列的複數個第一子區域叢集,且各該第一子區域叢集係包含排列為一O1行與一P1列的複數個資料分頁。第二儲存區域包含排列為I2行與J2列的複數個第二 子區域叢集,且各該第二子區域叢集係包含排列為一O2行與一P2列的複數個資料分頁。其中I1、J1、O1與P1與該第一資料層級相關,而I2、J2、O2與P2與該第二資料層級相關。控制器電連接於記憶體陣列。其中,控制器利用該等第一子區域叢集中的一第一第一子區域叢集以及該等第二子區域叢集中的一第一第二子區域叢集之其中一者存取一第一資料。此外,控制器利用該等第一子區域叢集中的一第二第一子區域叢集以及該等第二子區域叢集中的一第二第二子區域叢集之其中一者存取一第二資料。其中控制器隨著第一資料的更新頻率而將第一資料存放於第一第一子區域叢集與第二第一子區域叢集之一者。其中,I1與O1的乘積等於I2與O2的乘積,且J1與P1的乘積等於J2與P2的乘積。
根據本發明之第二方面,提出一種應用於記憶體裝置上之資料管理方法。此資料管理方法可被應用於包含第一儲存區域與第二儲存區域的記憶體陣列。其中,第一儲存區域與第二儲存區域分別對應於第一資料層級與第二資料層級。第一儲存區域包含排列為I1行與J1列的複數個第一子區域叢集,且各該第一子區域叢集包含排列為O1行與P1列的複數個資料分頁。第二儲存區域包含排列為I2行與J2列的複數個第二子區域叢集,且各該第二子區域叢集係包含排列為O2行與P2列的複數個資料分頁。其中,該等第一子區域叢集的數量大於該等第二子區域叢集的數量。資料管理方法包含以下步驟。利用該等第一子區域叢集中的一第一第一子區域叢集以及該等第二子區域叢集中的一第一第二子區域叢集之其中一者存取一第一資料。利用該等第一子區域叢集中的一第二第一子區域叢集以及該等第 二子區域叢集中的一第二第二子區域叢集之其中一者存取一第二資料。隨著該第一資料的更新頻率而將該第一資料存放於該第一第一子區域叢集與該第二第一子區域叢集之一者。其中I1、J1、O1與P1與該第一資料層級相關,而I2、J2、O2與P2與該第二資料層級相關。其中,I1與O1的乘積等於I2與O2的乘積,且J1與P1的乘積等於J2與P2的乘積。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
10‧‧‧主控裝置
11‧‧‧記憶體裝置
111、311‧‧‧控制器
115‧‧‧記憶體陣列
111a、3311‧‧‧快閃轉譯層
115a、215、P(1,1)、P(1,2)、P(1,3)、P(1,4)、P(2,1)、P(2,2)、P(2,3)、P(2,4)、P(3,1)、P(3,2)、P(3,3)、P(3,4)、P(4,1)、P(4,2)、P(4,3)、P(4,4)、451a、451b、451c、451d、451e、451f、452a、452b、452c、452d、452e、452f、453a、453b、453c、453d、453e、453f、P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7)‧‧‧資料分頁
215a‧‧‧記憶胞
335‧‧‧快取記憶體
333‧‧‧記憶體陣列
3313‧‧‧控制韌體層
333a‧‧‧敏感資料儲存區
333b‧‧‧非敏感資料儲存區
3311a‧‧‧位址轉譯器
3311b‧‧‧資料區塊分配器
3311c‧‧‧垃圾回收器
3311d‧‧‧耗損平均器
3311e‧‧‧擦除管理程式
3313a‧‧‧讀取功能
3313b‧‧‧程式化功能
3313c‧‧‧抹除功能
3313d‧‧‧擦除功能
40、20、41、42、23、BLKa、BLKb、BLKc、BLKd、BLKe、BLKf、BLKg、BLKh、BLKi、BLKj、BLKl、651、652、653、703、713、712、80、802、852、853‧‧‧資料區塊
S501、S501a、S501b、S503、S503a、S503b、S505、S507、S507a、S507b、S509、S509a、S509b、S601、S603、S603a、S603b、S605、S607、S609、S611、S613、S615、S71、S73、S75、S711a、S711b、S711c、S711d、S715a、S715b、S731a、S731b、S731c、S731d、S731e、S731f、S731g、S735a、S735b、S735c、S735d、S735e、S735f、S735g、S735h、S735i、S81、S83、S831、S832、S833、S834、S835、S836、S837、S838、S839、S901、S903、S905a、S905b、S905c、S905d、S907、S909、S911、S913‧‧‧步驟
A、B、C、D、A1、A2、A3、A4、A5、A6、X7、X8、X9、X10、X11、X12、X13、X14、Y6、Y7、Y8、A7、A8、A9、A10、A11、A12、A13、A14、A15、A16、A17、D6、D7、D8、D9、I2、I3、B2、B3、B4、B5、M2、M3、M4、J2、J3、J4、J5、C2、C3、C4、C5、N2、N3、D2、D3、D4、D5、E2、E3、E4、E5、F1、F2、F3、F4、F5、K2、K3、Q1、Q2、G2、G3、G4、G5、L2、L3、L4、H2、H3、H4、H5、H6‧‧‧資料
333a‧‧‧敏感資料儲存區
333b‧‧‧非敏感資料儲存區
CL1、CL2、CL3、CL4、CL5、CL6、CL7、CL8、CL9、CL10、CL11、CL12、CL13、CL14、CL15、CL16、CL(1,1)、CL(1,2)、CL(1,3)、CL(1,4)、CL(2,1)、CL(2,2)、CL(2,3)、CL(2,4)、CL(3,1)、CL(3,2)、CL(3,3)、CL(3,4)、CL(4,1)、CL(4,2)、CL(4,3)、CL(4,4)‧‧‧分頁叢集
335a‧‧‧資料區塊分級表
335b‧‧‧資料區塊使用表
335c‧‧‧位址映射表
744、751a、751b‧‧‧資料層級DG2的分頁叢集
Th‧‧‧臨限值
Th_L‧‧‧較低臨限值
Th_H‧‧‧較高臨限值
第1圖,其係記憶體裝置之示意圖。
第2A~2C圖,其係習用技術的記憶體裝置,以異地更新方式儲存資料之示意圖。
第3A圖,其係資料分頁的記憶胞存有資料之示意圖。
第3B圖,其係針對原本存放資料位元”1”的記憶胞,改以資料位元”0”進行再程式化之示意圖。
第4圖,其係依據本揭露構想的實施例,於控制器設置操作管理程式與擦除功能之示意圖。
第5A-5D,其係對一個選定的資料分頁進行再程式化時,對與該選定的資料分頁相鄰的資料分頁造成影響之示意圖。
第6A-6E圖,其係擬進行擦除操作的資料分頁的位置所影響之其他資料分頁的個數之示意圖。
第7A、7B、7C圖,其係說明隨著待擦除的資料分頁的位置不同,受干擾的資料分頁數量也隨著改變之示意圖。
第8A圖,其係依照待擦除資料分頁的排列順序,對資料分頁進行擦除操作之示意圖。
第8B圖,其係未依照待擦除資料分頁的排列順序,對資料分頁進行擦除操作之示意圖。
第9圖,其係對資料區塊中,排列為3*3的資料分頁進行擦除操作之示意圖。
第10A圖,其係以一個包含4行與8列之資料分頁的資料區塊為例,執行抹除操作之示意圖。
第10B圖,其係以一個包含4行與8列之資料分頁的資料區塊為例,執行擦除指令之示意圖。
第11圖,其係控制器對抹除操作與擦除操作評估所需時間後,選擇操作類別之流程圖。
第12圖,其係根據本揭露構想之記憶裝置之方塊圖。
第13A、13B、13C圖,其似分別對應於三個資料層級DG的資料區塊BLK,以及該些資料區塊內的分頁叢集CL之示意圖。
第14圖,其係快取記憶體內部之示意圖。
第15圖,其係儲存資料A1時,將資料A1寫入對應於資料層級DG1的資料區塊之示意圖。
第16圖,其係儲存資料A2時,不再存入對應於資料層級DG1的資料區塊,而是將資料A2改為寫入至對應於資料層級DG2的資料區塊之示意圖。
第17A~17C圖,其係將資料A3、A4與A5寫入對應於資料層級DG2的資料區塊之示意圖。
第18圖,其係儲存資料A6時,不再存入對應於資料層級DG2的資料區塊,而是將資料A6存入至對應於資料層級DG3的資料區塊之示意圖。
第19圖,其係隨著資料的版本變化,改變與寫入資料對應之資料區塊所對應的資料層級DG之流程圖。
第20圖,其係本揭露針對存放資料時,因應資料的狀態,動態調整與該資料對應的分頁叢集的資料層級DG之示意圖。
第21圖,其係執行垃圾回收時,因應資料熱度而調整與資料對應的資料層級DG之流程圖。
第22A、22B圖,其係選擇需進行垃圾回收之資料區塊的流程圖。
第23圖,其係一個存有四筆資料並對應於第三個資料層級DG的資料區塊之示意圖。
第24圖,其係執行垃圾回收時,以一個預設的臨限值判斷應如何調整在一個資料區塊所存放的資料所對應之資料層級DG的流程圖。
第25A圖,其係針對垃圾回收之資料區塊,定義一個預設的臨限值之示意圖。
第25B圖,其係以一個預設的臨限值比較待進行垃圾回收之資料區塊內的資料熱度之示意圖。
第26圖,其係將進行垃圾回收之資料區塊內的資料,複製至同一個資料層級DG的資料區塊之示意圖。
第27圖,其係將進行垃圾回收之資料區塊內的資料,複製至低一個資料層級DG的資料區塊之示意圖。
第28A、28B圖,其係對進行垃圾回收之資料區塊進行抹除之示意圖。
第29圖,其係對資料區塊進行垃圾回收時,以兩個預設的臨限值判斷應如何調整資料所對應資料層級DG的流程圖。
第30A、30B圖,其係針對垃圾回收之資料區塊,定義兩個預設的臨限值之示意圖。
第30C圖,其係以兩個預設的臨限值比較待進行垃圾回收之資料區塊內的資料熱度之示意圖。
第31A圖,其係將進行垃圾回收之資料區塊內的資料,複製至低一個資料層級DG的資料區塊之示意圖。
第31B圖,其係將進行垃圾回收之資料區塊內的資料,複製至高一個資料層級DG的資料區塊之示意圖。
第31C圖,其係將進行垃圾回收之資料區塊內的資料,複製至同一個資料層級DG的資料區塊之示意圖。
第32A、32B圖,其係以棋盤式配置方式,規劃分頁叢集的使用狀態之示意圖。
第33圖,其係針對棋盤式配置的分頁叢集要如何決定寫入資料分頁的流程圖。
第34圖,其係一種產生棋盤式配置的分頁叢集的流程圖。
第35圖,其係以對應於資料層級DG2的資料區塊為例,搭配第34圖的流程所定義的棋盤式配置的分頁叢集之示意圖。
第36圖,其係採用棋盤式配置時,原本被設為關閉狀態的分頁叢集應該如何判斷相鄰的分頁叢集的使用狀態,進而從關閉狀態改變為開啟狀態之示意圖。
第37圖,其係採用棋盤式配置時,控制器因應資料所寫入的位置,確認分頁叢集的狀態是否隨著改變的流程圖。
第38A~38H圖,其係以多筆資料的寫入與更新過程,說明如何在使用棋盤式規劃的資料區塊內,因應分頁叢集的狀態而存放資料之示意圖。
基於資料保密的考量,記憶體裝置的控制器需要將記憶體陣列儲存的過時資料加以清除(Sanitize)。一種進行資料清除的作法是,在控制器執行垃圾回收(garbage collection)後,以抹除(erase)操作的方式清除資料。然而,記憶體裝置進行抹除操作時,需要以較大的儲存區域(例如:資料區塊)作為基本單位,且抹除操作需要花費較長的時間。
此外,透過抹除操作而清除儲存區域的資料的做法,會影響記憶體裝置的存取速度以及增加壽命。特別像是,在儲存區域內,僅有小部分的過時資料具有機密性而需要清除,卻因此而必須清除整個儲存區域的內容。或者,資料經常被更新,導致控制器經常性地以抹除操作清除過時資料等情況。為此,基於避免因為清除儲存區去的過時資料而衍生之降低存取速度的情形,本揭露提出以較小的子區域(例如:資料分頁)作為清除過時資料的基本單位的做法,詳如下述。
為便於說明,以下舉例係以單階記憶胞(Single-Level Cell,簡稱為SLC)為例,但本發明亦可應用於多階記憶胞(Multi-Level Cell,簡稱為MLC)、三階記憶胞(Triple-Level Cell,簡稱為TLC)之應用。此外,只要記憶體裝置採用的是異地更新方式的情況,均可能存在類似的機密資料管理問題。因此,該些記憶體裝置也可搭配本揭露的資料管理方法使用,並不限於快閃記憶體。再者,本文的實施例雖假設儲存區域為資料區塊(block)、子區域為資料分頁(page),但實際應用時,資料區塊與資料分頁的單位與大小並不以此為限。
請參見第3A圖,其係資料分頁的記憶胞存有資料之示意圖。資料分頁215包含多個記憶胞215a、215b,其中部分的記憶胞215a存放的資料位元為”0”,部分的記憶胞215b存放的資料位元為”1”。因此,在第3A圖下方的記憶胞分布圖中,部分的記憶胞215a的臨界電壓Vth高於參考電壓Vref,代表記憶胞215b所儲存的資料位元為”0”;部分的記憶胞215b的臨界電壓Vth低於參考電壓Vref,代表記憶胞215b所儲存的資料位元為”1”。
根據本揭露的構想,可特定的針對資料分頁215中,資料位元為”1”的記憶胞進行再程式化(re-programming)。當這些原本存放資料位元”1”的記憶胞215b經過再程式化後,該些記憶胞215b儲存的資料位元更新為”0”。據此,整個資料分頁215的記憶胞分布情形就類似完全未寫入資料前的分布情形。
請參見第3B圖,其係針對原本存放資料位元”1”的記憶胞,改以資料位元”0”進行再程式化之示意圖。即,針對資料分頁215 中,所有存放有資料位元”1”的記憶胞215b進行程式化,以資料位元”0”取代原本儲存在記憶胞215b的資料位元”1”。據此,資料分頁215的內容將全部為資料位元”0”。此時,所有記憶胞215a、215b的臨界電壓Vth都高於參考電壓Vref。
在第3B圖中,即使資料分頁215再度被讀取,控制器僅能讀到全部為”0”的內容。因此,經過再程式化後,控制器無法從資料分頁215讀取任何資料,代表過時資料已經被清除。此種針對特定的資料分頁的內容,以資料位元”0”進行再程式化,進而達到清除效果的方式稱為擦除操作。
承上,基於資料安全性的考量而清除過時資料時,可選擇以資料區塊為單位進行抹除操作,或如第3B圖所示,以資料分頁為單位進行擦除操作。為此,針對清除(clean)過時資料的需求,本揭露的記憶體裝置可提供抹除指令(erase commad)以及擦除指令(scrub command)。其中,當控制器發出擦除指令時,可同時包含對多個資料分頁進行擦除操作的過程。
簡言之,控制器可評估執行抹除指令和執行擦除指令所需的執行時間後,選擇其中所需時間較短者。此外,為使擦除指令的執行時間縮短本揭露對記憶體裝置提出整體性的規劃管理機制。亦即,本揭露能基於清除過時資料的目的下,在資料寫入階段、資料更新階段以及垃圾回收等階段,針對資料的特性個別針對其存放位置進行管理。連帶地,待控制器執行擦除指令時,就可以用較有效率的方式執行擦除操作。
請參見第4圖,其係依據本揭露構想的實施例,於控制器設置操作管理程式與擦除功能之示意圖。在此實施例中,記憶體裝置33包含控制器331、快取記憶體335與記憶體陣列333。其中,控制器331電連接於快取記憶體335與記憶體陣列333。
控制器331包含快閃轉譯層3311與控制韌體層3313。其中,快閃轉譯層3311進一步包含:位址轉譯器3311a、資料區塊分配器3311b、垃圾回收器3311c、耗損平均器3311d,以及擦除管理程式3311e。根據本揭露的構想,擦除管理程式3311e可搭配快閃轉譯層3311的各個程式,利用控制韌體層3313的各個功能進行相關操作。
例如:當有一筆具有機密性的資料需要存入記憶體陣列333時,擦除管理程式3311e需搭配位址轉譯器3311a、資料區塊分配器3311b,自記憶體陣列333中,找出該筆資料應寫入的資料區塊以及在該資料區塊內的哪一個資料分頁。此外,在記憶體陣列333已經使用一段期間後,擦除管理程式3311e可搭配垃圾回收器3311c與耗損平均器3311d對記憶體陣列333的儲存空間加以調整。此外,在擦除管理程式3311e搭配垃圾回收器3311c與耗損平均器3311d對記憶體陣列333的儲存空間行調整的同時,也須搭配位址轉譯器3311a與3311b使用。
控制韌體層3313進一步包含:讀取功能3313a、程式化功能3313b、抹除功能3313c,以及擦除功能3313d。其中,讀取功能3313a可用於讀取資料分頁的內容;程式化功能3313b可以資料分頁為單位寫入資料(例如,將記憶胞的內容程式化為”0”或”1”);抹除功能3313c可以資料區塊為單位清除資料;且擦除功能3313d可以資料分頁為單為清 除資料。依據本揭露的實施例,針對資料清除的目的,擦除管理程式3311e可根據需被清除的範圍大小,選擇以抹除功能3313c清除資料區塊的內容,或是以擦除功能3313d清除資料分頁的內容。實際應用時,控制器331所提供的功能與程式並不以此處的例子為限。
接著以一個包含16個資料分頁的資料區塊為例,說明擦除資料分頁的過程。其中可以看出,當控制器331對一個選定的資料分頁進行再程式化時,對與該選定的資料分頁相鄰的資料分頁,也同時造成影響。此處假設資料區塊內的資料分頁排列為4行與4列。
請參見第5A-5D,其係對一個選定的資料分頁進行再程式化時,對與該選定的資料分頁相鄰的資料分頁造成影響之示意圖。此處假設資料區塊內的三個資料分頁P1、P2、P3存有過時資料而須進行再程式化,且這三個資料分頁在資料區塊中,排列為L型。為便於說明,以下係以清除操作代表對一個資料分頁的內容進行再程式化。
在第5A圖中,點狀網底代表資料區塊40內的資料分頁均已經寫入資料。其中,假設以粗黑線框起的資料分頁P1、P2、P3存有過時資料,因此被控制器331當作需要進行擦除操作的資料分頁。如第5A圖下方所示,在控制器331還未對資料分頁P1、P2、P3進行清除操作前,儲存在資料分頁P1、P2、P3內的記憶胞,其臨界電壓Vth均分別散佈在參考電壓Vref的兩側。
第5B圖所示為,控制器331對資料分頁P1進行擦除操作後的情形。第5B圖上方以白色表示資料分頁P1的資料已經因為擦除操作而被清除。此外,在第5B圖下方,與資料分頁P1對應的記憶胞分布中,記憶胞的資料位元全部轉變為”0”。也就是藉由擦除操作,讓資料分頁P1內的所有記憶胞的臨界電壓Vth均高於參考電壓Vref。
在第5B圖中,資料分頁P2因為未直接與資料分頁P1相鄰的緣故,資料分頁P2在第5B圖的記憶胞分佈仍然維持與第5A圖相同。另一方面,對資料分頁P3而言,因為資料分頁P3的位置在資料分頁P1的正下方。因此,擦除資料分頁P1的同時,因為資料分頁P3與其位置相當靠近地緣故,導致的資料分頁P3的記憶胞分佈,將連帶產生變化。由第5B圖可以看出,在資料分頁P3中,資料位元為1的記憶胞的臨界電壓Vth,開始呈現向參考電壓Vref方向(右側)移動的趨勢。此種記憶胞的臨界電壓Vth改變的現象,代表資料分P3儲存的內容受到干擾(Disturb)。
在本文中,以左上右下方向的網底,代表一個資料分頁因為其相鄰的資料分頁進行擦除操作後,所導致之資料分頁的儲存內容受到干擾的情況。如第5B圖所示,除了資料分頁P3具有左上右下方向的網底外,在資料分頁P1的上方、左側以及右側的資料分頁,同樣以左上右下方向的網底表示。這是因為在資料分頁P1的上方、左側以及右側的資料分頁,也都受到對資料分頁P1進行擦除操作影響的緣故。承上,對一個資料分頁進行擦除操作時,與該選定的資料分頁相鄰的其他資料分頁所儲存的資料,會連帶受到干擾。
在第5B圖後,控制器331也對資料分頁P2進行擦除操作。如第5C圖上方所示,因為資料分頁P2的資料被清除的緣故,資料分頁P2以白色方框表示空。由資料分頁P2的記憶胞分布可以看出中,資料分頁P2的記憶胞的臨界電壓Vth全部高於參考電壓Vref。亦即,資料分頁P2內的資料位元全部變為”0”。附帶一的是,因為資料分頁P1先前已經被擦除,在第5C圖中,資料分頁P1的資料分布仍維持與第5B圖相同。
在第5C圖中,因為資料分頁P3位於進行擦除操作的資料分頁P2的右側。因此,資料分頁P3的記憶胞分佈,將受到資料分頁P2的擦除操作而影響。由第5C圖可以看出,在資料分頁P3中,資料位元為1的記憶胞,再度呈現向參考電壓方向(右側)移動的趨勢。甚至,在資料分頁P3中,有部分的記憶胞的臨界電壓Vth已經超過參考電壓Vref。另,在本文中,以方格狀的網底代表此種因為相鄰的資料分頁進行擦除操作後,導致資料分頁的內容兩度受到干擾的情況。同樣的,除了資料分頁P3外,位於資料分頁P1左側的資料分頁,也與資料分頁P3一樣,受兩度受到干擾。因此,此處亦以方格狀的網底繪式位於資料分頁P1左側的資料分頁。
最後,第5D圖所示為,在第5C圖後,再對資料分頁P3進行擦除操作的結果。在第5D圖上方,因為資料分頁P3的資料已經被清除的緣故,資料分頁P3也以白色表示。此外,在資料分頁P3的記憶胞分布中,的記憶胞的資料位元全部變為”0”。也就是藉由擦除操作,讓資料分頁P3內的所有記憶胞的臨界電壓Vth均高於參考電壓Vref。同樣的,因為資料分頁P1、P2先前均已經過擦除操作,在第5D圖中,資料分頁P1、P2的資料分布仍維持與第5C圖相同。
在第5C圖中,控制器331雖然還未實際對資料分頁P3進行擦除操作,但是在第5C圖的資料分頁P3內,已經有部分的記憶胞的資料位元由”1”變成”0”。即,已經有部分的記憶胞不需要被再程式化,即已呈現被清除的效果。據此,當控制器331在對資料分頁P3進行擦除操作而變成第5D圖的過程中,實際需要被再程式化的記憶胞數量相對較少。連帶地,控制器331對資料分頁P3進行擦除操作所需要的時間, 會較對資料分頁P1、P2進行擦除操作所需的時間少。換言之,資料分頁P3受到干擾的現象,可以節省控制器331對資料分頁P3進行擦除操作所需的時間。
如前所述,控制器331擦除一個資料分頁所需的時間,會隨著該資料分頁是否曾經被干擾而異。若以單位擦除時間Tsu代表對未經過干擾的一個資料分頁進行擦除所需的時間,則,對一個被干擾過一次的資料分頁執行擦除操作時,控制器331需要的擦除時間約為Tsu*60%;對一個已經被干擾過兩次的資料分頁執行擦除操作時,控制器331需要的擦除時間約為Tsu*40%;對一個已經被干擾過三次的資料分頁執行擦除操作時,控制器331需要的擦除時間約為Tsu*35%;以及,對一個已經被干擾過四次的資料分頁進行擦除操作時,控制器331需要的擦除時間約為Tsu*30%。由此可以看出,隨著被干擾次數的增加,控制器331擦除資料分頁所需的時間雖然逐步減少,但減少的幅度亦隨著干擾次數的增加而趨緩。
進一步的,本揭露的實施例進一步規劃資料寫入至資料分頁的順序,藉以發揮此種因為相鄰的資料分頁(例如,資料分頁P1、P2)先進行擦除操作,所導致之後續需要進行擦除操作的資料分頁(例如,資料分頁P3)因為受到干擾而能縮短擦除操作所需時間的效果。
請參見第6A-6E圖,其係擬進行擦除操作的資料分頁的位置所影響之其他資料分頁的個數,且在進行擦除操作前,需先將其他受影響之有效分頁複製至其他空白頁面之示意圖。為便於說明,以下假設資料區塊BLK包含的資料分頁排列為M行與N列,並假設對資料分頁P(m,n)進行擦除操作。其中,m代表資料分頁在資料區塊內的 行數;n代表資料分頁在資料區塊內的列數。其中,M、N、m、n均為正整數。
第6A~6E圖所示為一個包含16個資料分頁的資料區塊20。在第6A圖中,假設全部的資料分頁均存有資料,且資料分頁均以P(m,n)、m=1~4、n=1~4標註在資料區塊20內的位置。
在第6B~6E圖中,以粗黑實線框選的資料分頁代表需進行擦除操作的資料分頁。另外,以粗黑虛線框選的資料分頁,代表與待執行擦除操作的資料分頁相鄰的受干擾的資料分頁。若在該些受干擾的資料分頁中,確實存有資料,且所儲存的資料內容仍然有效(即,非過時資料)時,控制器331需要將這些受干擾的資料分頁所儲存的有效資料,複製到其他的資料區塊。隨著待執行擦除操作的資料分頁P(m,n)在資料區塊20內的位置改變,在資料區塊20內受到干擾的資料分頁的數量也不盡相同。
在第6B圖中,若控制器331對資料分頁P(1,1)執行擦除操作時,資料分頁P(2,1)、P(1,2)會受到干擾。據此,若控制器331對資料分頁P(1,1)、P(M,1)、P(1,N)、P(M,N)(即,資料分頁位於資料區塊20的四個角落)執行擦除操作時,將使兩個與資料分頁P(m,n)相鄰的資料分頁受到干擾。
在第6C圖中,若控制器331對資料分頁P(1,2)執行擦除操作時,資料分頁P(1,1)、P(1,3)、P(2,2)會受到干擾。據此,若控制器331對資料分頁P(1,n)、P(M,n),其中n≠1且n≠N(即,資料分頁位於資料區塊的第一行或最後一行)執行擦除操作時,將使三個與資料分頁P(m,n)相鄰的資料分頁受到干擾。
在第6D圖中,若控制器331對資料分頁P(2,1)執行擦除操作時,資料分頁P(1,1)、P(3,1)、P(2,2)會受到干擾。據此,若控制器331對資料分頁P(m,1)、P(m,N),其中m≠1且m≠M(即,資料分頁位於於資料區塊的第一列或最後一列)執行擦除操作時,將使三個與資料分頁P(m,n)相鄰的資料分頁受到干擾。
在第6E圖中,若控制器331對資料分頁P(2,3)執行擦除操作時,資料分頁P(1,3)、P(2,2)、P(3,3)、P(2,4)會受到干擾。據此,若控制器331對資料分頁P(m,n),其中m≠1、m≠M、n≠1且n≠N(相當於資料區塊的中間)執行擦除操作時,資料分頁P((m-1),n)、P((m+1),n)、P(m,(n-1))、P(m,(n+1)),將使四個與資料分頁P(m,n)相鄰的資料分頁受到干擾。
由第6A~6E圖可以看出,隨著控制器331執行擦除操作的資料分頁P(m,n)的位置不同,受到干擾的資料分頁的數量也不相同。也因此,控制器331需備份的資料分頁資料分頁的內容也不相同。更進一步的,隨著該些受到干擾的資料分頁中,實際存放的資料為有效資料或是過時資料的不同,控制器331所需備份的資料分頁的個數也不相同。
請參見第7A、7B、7C圖,其係說明隨著待擦除的資料分頁在資料區塊的位置不同,受干擾的資料分頁的數量也隨著改變之示意圖。在第7A、7B、7C圖中,以數字代表在待執行擦除操作的資料分頁中,同樣需要執行擦除操作並彼此相鄰的資料分頁的個數。
第7A圖假設在資料區塊451內,待擦除的四個資料分頁451a、451b、451c、451d完全不相鄰。因此,待擦除的資料分頁451a、451b、451c、451d均標示為0(0表示待擦除相鄰分頁的個數)。此種情 況下,控制器331對各該待擦除的資料分頁451a、451b、451c、451d執行擦除操作時,都需要100%的單位擦除時間Tsu。在第7A圖中,不須被擦除的資料分頁可進一步區分為:15個與資料分頁451a、451b、451c、451d相鄰的受干擾的資料分頁451e,以及13個不會受到干擾的資料分頁451f。
第7B圖假設在資料區塊452內,待擦除的四個資料分頁452a、452b、452c、452d排列為一行,因此,位在頭尾兩端的待擦除的資料分頁452a、452d均標示為1;位在中間的待擦除的資料分頁452b、452c均標示為2(2表示待擦除相鄰頁面的個數)。此種情況下,可利用待擦除的資料分頁彼此鄰接的關係,縮短控制器331執行擦除操作所需的時間。在第7B圖中,共有10個與資料分頁452a、452b、452c、452d相鄰的受干擾的資料分頁451a,以及18個不會受到干擾的資料分頁452f。
第7C圖假設在資料區塊453內,待擦除的四個資料分頁453a、453b、453c、453d排列為田字型。因此,待擦除的資料分頁453a、453b、453c、453兩兩相鄰,故皆標示為2(2表示待擦除相鄰頁面的個數)。此種情況下,可利用待擦除的資料分頁453a、453b、453c、453d彼此鄰接的關係,減少控制器331執行擦除操作所需的時間。在7C圖中,共有8個與資料分頁453a、453b、453c、453d相鄰的受干擾的資料分頁453e,以及20個不會受到干擾的資料分頁453f。
比較第7A、7B、7C圖可以看出,待擦除之資料分頁在資料區塊內的排列方式,將影響受干擾的資料分頁的數量。當控制器331對資料區塊451、452、453內的資料分頁進行擦除操作時,也需要受干擾的資料分頁所儲存的資料進行備份。因此,當受干擾的資料分 頁的數量較多時,控制器331也相對需要花費較多的時間備份該些資料分頁的內容。
除了排列方式的差異可能影響控制器331執行擦除操作所需時間外,控制器331執行擦除操作的順序,也會對整體執行擦除指令所須的時間產生影響。關於擦除操作的順序如何影響控制器331執行擦除指令所需時間,將於第8A、8B說明。
第8A、8B圖延續第7B圖的舉例,以一個包含4*8個資料分頁的資料區塊為例,說明在執行擦除指令時,若採用不同的擦除順序,擦除指令的執行時間也不同。此處假設在控制器331已預先將受干擾的資料分頁的內容複製至其他分頁,也已經將該些受干擾的資料分頁標示為無效。第8A、8B圖各自包含四個須擦除的資料分頁,且擦除指令可包含四個以箭頭圖案表示的擦除階段。控制器331在每個階段擦除其中一個資料分頁。
請參見第8A圖,其係依照待擦除資料分頁的排列順序,對資料分頁進行擦除操作之示意圖。首先,第一個箭頭圖案ST1代表,對儲存過時資料A的資料分頁P(2,4)進行擦除。因為資料分頁P(2,4)為第一個被擦除的資料分頁,在擦除資料分頁P(2,4)前,過時資料A並未受到任何干擾。所以擦除資料分頁P(2,4)時,需要100%的單位擦除時間Tsu。
經過擦除操作後,資料分頁P(2,4)包含的過時資料A已經被清除。因此,在第一個箭頭圖案ST1右側的資料分頁P(2,4)以空白方格表示。在控制器331清除過時資料A的同時,資料分頁P(2,5)因為與資料分頁(2,4)相鄰的緣故,存放在資料分頁P(2,5)的過時資料B將受到一次干擾。
接著對包含過時資料B的資料分頁P(2,5)進行擦除操作。因為資料分頁P(2,5)先前已經被干擾過,控制器331擦除資料分頁P(2,5)時,僅需要花費60%的單位擦除時間Tsu(Tsu*60%)。經過擦除操作後,資料分頁P(2,5)包含的過時資料B已經被清除。因此,在第二個箭頭圖案ST2右側的資料分頁P(2,5)以空白方格表示。在控制器331清除過時資料B的同時,資料分頁P(2,6)因為與資料分頁(2,5)相鄰的緣故,存放在資料分頁P(2,6)的過時資料C將受到一次干擾。
接著對包含過時資料C的資料分頁P(2,6)進行擦除操作。因為資料分頁P(2,6)先前已經被干擾過,控制器331擦除資料分頁P(2,6)時,僅需要花費60%的單位擦除時間Tsu(Tsu*60%)。經過擦除操作後,資料分頁P(2,6)包含的過時資料C已經被清除。因此,在第三個箭頭圖案ST3右側的資料分頁P(2,6)以空白方格表示。在控制器331清除過時資料C的同時,資料分頁P(2,7)因為與資料分頁(2,6)相鄰的緣故,存放在資料分頁P(2,7)的過時資料D將受到一次干擾。
最後,對包含過時資料D的資料分頁P(2,7)進行擦除操作。因為資料分頁P(2,7)先前已經被干擾過,控制器331擦除資料分頁P(2,7)時,僅需要花費60%的單位擦除時間Tsu(Tsu*60%)。經過擦除操作後,資料分頁P(2,7)包含的過時資料D已經被清除。因此,在第四個箭頭圖案ST4右側的資料分頁P(2,7)以空白方格表示。
承上所述,依據資料分頁的排列順序,針對包含過時資料A、B、C、D的資料分頁P(2,4)、P(2,5)、P(2,6)、P(2,7)依序進行擦除操作的作法,所需的擦除時間分別為:Tsu*100%、Tsu*60%、Tsu*60%、Tsu*60%。因此,在第8A圖中,累計這四次的擦除操作總共需要Tsu*280%的時間。
請參見第8B圖,其係未依照待擦除資料分頁的排列順序,對資料分頁進行擦除操作之示意圖。首先,第一個箭頭圖案ST1代表,對儲存過時資料A的資料分頁P(2,4)進行擦除。因為資料分頁P(2,4)為第一個被擦除的資料分頁,在擦除資料分頁P(2,4)前,過時資料A並未受到任何干擾。所以擦除資料分頁P(2,4)時,需要100%的單位擦除時間Tsu*100%。
經過擦除操作後,資料分頁P(2,4)包含的過時資料A已經被清除。因此,在第一個箭頭圖案ST1右側的資料分頁P(2,4)以空白方格表示。在控制器331清除過時資料A的同時,資料分頁P(2,5)因為與資料分頁(2,4)相鄰的緣故,存放在資料分頁P(2,5)的過時資料B將受到一次干擾。
接著對包含過時資料C的資料分頁P(2,6)進行擦除操作。因為資料分頁P(2,6)先前未曾被干擾,控制器331擦除資料分頁P(2,6)時,需要花費100%的單位擦除時間Tsu(Tsu*100%)。經過擦除操作後,資料分頁P(2,6)包含的過時資料C已經被清除。因此,在第二個箭頭圖案ST2右側的資料分頁P(2,6)以空白方格表示。在控制器331清除過時資料C的同時,資料分頁P(2,7)因為與資料分頁(2,6)相鄰的緣故,存放在資料分頁P(2,7)的過時資料D將受到一次干擾。此外,在控制器331清除過時資料C的同時,資料分頁P(2,5)因為與資料分頁(2,6)相鄰的緣故,存放在資料分頁P(2,5)的過時資料B將第二度受到干擾。
接著對包含過時資料B的資料分頁P(2,5)進行擦除操作。因為資料分頁P(2,5)先前已經被干擾過兩次,控制器331擦除資料分頁P(2,5)時,僅需要花費40%的單位擦除時間Tsu(Tsu*40%)。經過擦除操作後,資料分頁P(2,5)包含的過時資料B已經被清除。因此,在第 三個箭頭圖案ST3右側的資料分頁P(2,5)以空白方格表示。在控制器331清除過時資料B的同時,資料分頁P(2,4)、P(2,6)並未存有資料,故不受影響。
最後,對包含過時資料D的資料分頁P(2,7)進行擦除操作。因為資料分頁P(2,7)先前已經被干擾過,控制器331擦除資料分頁P(2,7)時,僅需要花費60%的單位擦除時間Tsu(Tsu*60%)。經過擦除操作後,資料分頁P(2,7)包含的過時資料D已經被清除。因此,在第四個箭頭圖案ST4右側的資料分頁P(2,7)以空白方格表示。
承上所述,在第8B圖中,未依據資料分頁的排列順序,針對過時資料A、B、C、D進行擦除操作時,控制器331擦除資料分頁P(2,4)、P(2,6)、P(2,5)、P(2,7)需要的時間分別為:Tsu*100%、Tsu*100%、Tsu*40%、Tsu*60%。因此,在第8B圖中,累計這四次的擦除操作總共需要Tsu*300%的時間。
比較第8A圖與第8B圖可以看出,依照資料分頁本身的排列順序而對資料分頁P(2,4)、P(2,5)、P(2,6)、P(2,7)進行擦除操作時,執行擦除操作所需要的時間較短。因此,針對需擦除的資料分頁為彼此相鄰的情況,本揭露的實施例將依照待擦除的資料分頁的排列位置,依循著由左而右、由上而下的順序,對各個資料分頁進行擦除操作。
請參見第9圖,其係對資料區塊中,排列為九宮格狀的資料分頁進行擦除操作之示意圖。此處假設資料區塊23包含的資料分頁排列為4行與8列。
如第9圖左上方所示,假設在資料區塊23中,資料分頁P(1,4)、P(2,4)、P(3,4)、P(1,5)、P(2,5)、P(3,5)、P(1,6)、P(2,6)、 P(3,6)含有過時資料需要被清除。此處以粗黑線框選這些需要擦除的資料分頁。
此外,如第9圖右上方所示,共有9個受干擾的資料分頁P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7)的內容需要在備份至其他空白分頁後,再將該些受干擾的資料分頁P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7)標示為無效。
接著,為善加利用前述關於資料分頁相鄰時,清除資料分頁所導致之干擾現象進而加速其擦除速度,控制器331可針對需要清除的資料分頁,採用由左而右由上而下的順序進行擦除。
第9圖的左下方以箭頭方向代表控制器331執行擦除操作的順序。其中,並以不同的網底代表對各個資料分頁實際進行擦除操作前,各該資料分頁所處的狀態。該些狀態也對應於對資料分頁進行擦除操作所需的擦除時間。第9圖的右下方所示為,資料分頁P(1,4)、P(2,4)、P(3,4)、P(1,5)、P(2,5)、P(3,5)、P(1,6)、P(2,6)、P(3,6)的過時資料均被清除後的情形。以下說明按照資料分頁在各列的順序,由左而右說明擦除操作的執行順序。
首先,控制器331擦除資料分頁P(1,4)時,必須花費100%的單位擦除時間Tsu。對資料分頁P(2,4)執行擦除操作時,因為資料分頁P(2,4)內的過時資料曾受到控制器331先前對資料分頁(1,4)執行擦除操作所干擾。因此,控制器331僅需花費60%的單位擦除時間Tsu即可擦除資料分頁P(2,4)。同理,控制器331擦除資料分頁P(3,4)時,因為資料分頁P(3,4)內的過時資料已經受到控制器331先前對資料分頁 (2,4)執行擦除操作所干擾,因此,控制器331僅需花費60%的單位擦除時間Tsu即可擦除資料分頁(3,4)。
其次,控制器331擦除資料分頁P(1,5)時,因為資料分頁P(1,5)內的過時資料曾受到先前對資料分頁(1,4)執行擦除操作的影響,僅需花費60%的單位擦除時間Tsu。另一方面,控制器331擦除資料分頁P(2,5)時,因為受到控制器331先前擦除資料分頁P(2,4)、P(1,5)的影響,儲存在資料分頁P(2,5)的過時資料已經兩度受到干擾。因此,控制器331擦除資料分頁P(2,5)時,僅需花費40%的單位擦除時間Tsu。同樣的,控制器331擦除資料分頁P(3,5)時,因為受到控制器331先前擦除資料分頁P(3,4)、P(2,5)所干擾,儲存在資料分頁P(3,5)的過時資料已經兩度受到干擾。因此,控制器331擦除資料分頁P(3,5)時,僅需花費40%的單位擦除時間Tsu。
控制器331擦除資料分頁P(1,6)時,因為受到控制器331先前擦除資料分頁(1,5)的干擾,僅需花費60%的單位擦除時間Tsu。另一方面,控制器331擦除資料分頁P(2,6)時,因為受到控制器331先前擦除資料分頁P(2,5)、P(1,6)的干擾,資料分頁P(2,6)內的過時資料已經兩度受到干擾。因此,控制器331擦除資料分頁P(2,6)時,僅需花費40%的單位擦除時間Tsu。同樣的,控制器331擦除資料分頁P(3,6)時,因為受到控制器331先前擦除資料分頁P(3,5)、P(2,6)的干擾,資料分頁P(3,6)內的過時資料已經兩度受到干擾。因此,控制器331擦除資料分頁P(3,6)時,僅需花費40%的單位擦除時間Tsu。
由第9圖的左下角還可以看出,採用由左而右的順序以及由上而下的順序清除過時資料的方式,可以讓彼此相鄰且排列為田字型的四個資料分頁中,位於右上角的資料分頁受到至少一次因為其 他資料分頁被擦除操所引起的干擾、位於左下角的資料分頁受到至少一次因為其他資料分頁被擦除所引起的干擾,且位於右下角的資料分頁受到兩次因為其他資料分頁被擦除操作所引起的干擾。
承上所述,除了在擦除資料分頁P(1,4)時,無法利用干擾現象所減少擦除操作所需時間外,控制器331在擦除其餘的每一個資料分頁時,都不需要用到100%的單位擦除時間Tsu。因此,第9圖所示的擦除順序,確實可以降低擦除指令所需時間的效果。
更進一步分析依照此種順序而進行擦除操作所需的時間可以看出,控制器331擦除資料分頁P(1,4)需要的時間為Tsu*100%;控制器331擦除資料分頁P(2,4)、P(3,4)、P(1,5)、P(1,6)需要的時間為Tsu*60%;控制器331擦除資料分頁P(2,5)、P(3,5)、P(2,6)、P(3,6)需要的時間為Tsu*40%。因此,若需要由控制器331擦除的資料分頁排列為九宮格,且控制器331依照由左而右、由上而下的順序擦除該些資料分頁時,控制器331總共需要的擦除時間為Tsu*100%+4*Tsu*60%+4*Tsu*40%=Tsu*500%。據此,控制器331擦除這九個資料分頁的過程,僅需要五個單位擦除時間Tsu*500%。
如前所述,當待擦除的資料分頁彼此相鄰時,相較於個別對九個彼此完全不相鄰的資料分頁進行擦除操作的情況,可以減少需要複製至其他資料區塊之資料分頁的數量。進一步的,若控制器331針對擦除資料分頁的順序加以設計,依照由左而右、由上而下的順序進行擦除操作時,還可利用相鄰資料分頁間的干擾特性,大幅縮短擦除操作所需的時間。因此,採用循序方式擦除資料分頁的模式,確實可大幅縮短對資料區塊執行擦除指令所需的時間。
接著,以第10A、10B圖說明控制器331執行抹除操作與清除操作的做法,並說明兩種做法的差異。在10A、10B圖中,假設控制器331需要清除資料區塊41中,存放在資料分頁P(2,4)的過時資料A、存放在資料分頁P(2,5)的過時資料B、存放在資料分頁P(2,6)的過時資料C,以及存放在資料分頁P(2,7)的過時資料D。其中,第10A圖為控制器331針對資料區塊41執行抹除指令的作法;第10B圖為控制器331針對資料區塊執行擦除指令的作法。
如第10A圖所示,控制器331針對資料區塊41執行抹除指令時,須先將資料區塊41中,除了過時資料A、B、C、D所在位置以外的其他資料分頁所包含的資料,複製至另一個資料區塊42中。因資料區塊41包含32個資料分頁,代表此處需要先從資料區塊41中,複製32-4=28個資料分頁所儲存的內容至資料區塊42。當控制器331將須備分的資料複製至資料區塊42後,控制器331便可對資料區塊41執行抹除操作。據此,控制器331可以在執行抹除指令前,依據需要備份的資料分頁的數量,以及執行抹除操作所需的時間,計算執行抹除指令所需的時間。
如第10B圖所示,控制器331針對資料區塊41執行擦除指令時,須先將資料區塊41中,與過時資料A、B、C、D相鄰的資料分頁所包含的資料,複製至另一個資料區塊43中。由第10B圖可以看出,共有10個與過時資料A、B、C、D所在之資料分頁相鄰的資料分頁。因此,控制器331需要先從資料區塊41中,複製10個資料分頁的內容至資料區塊42中。將須備分的資料複製至資料區塊43後,控制器331便可擦除資料分頁P(2,4)、P(2,5)、P(2,6)、P(2,7)。據此,控制器331可以在執行擦除指令前,依據需要備份的資料分頁的數量,以及對資 料分頁P(2,4)、P(2,5)、P(2,6)、P(2,7)進行擦除操作所需的時間,計算執行擦除指令所需的時間。
為便於說明,此處假設資料區塊41中,屬於非待清除之資料分頁內均包含有效資料。但是,在實際應用中,並非全部的非待清除之資料分頁均包含有效資料。亦即,該些非待清除之資料分頁內,可能包含過時資料或還尚未寫入資料。因此,無論是抹除操作或擦除操作,實際需要複製之資料分頁內容可能少於第10A圖的例子。
請參見第11圖,其係控制器對抹除操作與擦除操作評估所需時間後,選擇操作類別之流程圖。
首先,控制器331分別估算執行抹除指令所需的時間(步驟S501),以及執行擦除指令所需的時間(S503)。這兩個步驟可同時或是先後進行,且其先後順序不限。
在步驟S501中,控制器331執行抹除指令所需的時間時,需先計算受影響之資料分頁的數量(S501a)。接著,計算將這些受影響之資料分頁中的有效資料,複製至其他資料區塊所需的時間。並且,將複製有效資料的時間,以及抹除一個資料區塊的時間加總後,以加總的結果代表控制器331執行抹除指令所需的時間(步驟S501b)。
在步驟S503中,估算執行擦除指令所需的時間時,需先計算受影響之資料分頁的數量(S503a)。接著,計算將這些受影響之資料分頁中的有效資料,複製至其他資料區塊所需的時間。並且,依據需擦除資料分頁的個數、位置與擬進行擦除的順序,計算對選定的資料分頁執行擦除操作所需的時間。並且,將複製有效資料的時間,以及對選定的資料分頁執行擦除操作所需的時間加總後,以加總的結果代表控制器331執行擦除指令所需的時間(步驟S503b)。
其後,控制器331判斷執行擦除指令所需時間是否大於執行抹除指令所需時間(步驟S505)。若步驟S505的判斷結果為肯定,控制器331便執行抹除指令(步驟S507,第10A圖)。反之,若步驟S505的判斷結果為否定,控制器331便執行擦除指令(步驟S509,第10B圖)。
在步驟S507中,控制器331先將在資料區塊中的其他資料分頁中的有效資料,複製至其他資料區塊(步驟S507b)。接著,控制器331再對整個資料區塊進行抹除(步驟S507b)。
在步驟S509中,控制器331先將受干擾的資料分頁中的有效資料,複製至其他資料區塊(步驟S507b)。其後,控制器331再對該些選定的資料分頁進行擦除操作(步驟S507b)。
另須留意的是,隨著記憶體製程的不同,控制器331針對不同類型的快閃記憶體執行抹除操作與擦除操作所需的時間差也不盡相同。連帶的,判斷要執行抹除指令或是執行擦除指令的判斷結果,也會依據記憶體技術的不同而異。例如,假設對第一種記憶體而言,對一個資料分頁進行擦除操作所需的時間約為對一個資料區塊進行抹除操作所需的時間的1/2;假設對第二種記憶體而言,對一個資料分頁進行擦除操作所需的時間約為對一個資料區塊進行抹除操作所需的時間的1/10。則,對這兩種不同類型的記憶體而言,控制器331選擇執行擦除操作或執行抹除操作的判斷結果也可能不同。
如前所述,控制器331將評估執行抹除指令與執行擦除指令所需花費的時間,並選擇進行其中需要較短時間的操作類型。因此,若控制器331能盡可能的縮短擦除操作所需的時間,並使擦除指令的執行時間短於抹除指令的執行時間,代表控制器331可以以用較有效率的方式清除過時資料,進而提升保護機密資料的效率。以下說明中, 著重於如何縮短擦除操作所需的時間,其中,包含從寫入階段時,如何決定資料的存放位置與寫入順序的規劃;以及,包含在執行垃圾回收操作時,對資料區塊的管理等面向。
請參見第12圖,其係根據本揭露構想之記憶裝置之方塊圖。記憶體裝置30可透過匯流排與主控裝置31相連接。記憶體裝置30包含快取記憶體335、控制器331與記憶體陣列333。其中,控制器331電連接於主控裝置31、快取記憶體335與記憶體陣列333。根據本揭露的構想,可進一步將記憶體陣列區分為兩個部分,一部分用於儲存機密性資料(confidential data);另一部分用於儲存一般性資料(generic data)。
如第12圖所示,記憶體陣列的內部可區分為兩個資料儲存區。其一為非敏感資料儲存區333b、其二為敏感資料儲存區333a。若控制器331從主控裝置31接收的將寫入資料或更新資料不具機密性質時,控制器331可使用一般的資料管理模式,並將其寫入非敏感資料儲存區333b。反之,若將寫入或更新的資料屬於機密資料,並需要存放於敏感資料儲存區333a時,控制器331將配合擦除管理程式3311e使用。
透過擦除管理程式3311e,控制器331在寫入、更新資料至敏感資料儲存區333a的過程,將盡可能地以集中化的方式儲存該筆資料的不同版本。再者,若在敏感資料儲存區333a所存放的資料因為後續的更新而變成過時資料時,控制器331將對存放過時資料的資料分頁進行清除。其中,控制器331清除過時資料的方式可為,針對資料區塊進行抹除指令,或是針對資料分頁執行擦除操作。
根據本揭露的實施例,控制器331在規劃敏感資料儲存區333a的資料區塊時,會將資料區塊規劃為不同的資料層級DG。例如,第12圖假設將資料區塊分為3個資料層級DG。其中,對應於第一個資料層級DG1的資料區塊假設為資料區塊BLKa、BLKb、BLKc、BLKd;對應於第二個資料層級DG2的資料區塊假設為資料區塊BLKe、BLKf、BLKg、BLKh;對應於第三個資料層級DG3的資料區塊假設為資料區塊BLKi、BLKj、BLKk、BLKl。
隨著資料區塊BLK所對應的資料層級DG不同,本揭露以不同數量的資料分頁作為分頁叢集CL(即,子區域叢集)。隨著資料區塊BLK所對應的資料層級DG不同,在資料區塊BLK內的分頁叢集CL所包含的資料分頁的數量也不相同。
以下將進一步以三個資料區塊所對應的資料層級DG為例,說明資料區塊BLK、分頁叢集CL與資料分頁的關係。附帶一提的是,此處關於資料層級DG數量、每個資料層級DG對應的分頁叢集CL數量,以及每個分頁叢集CL所對應的資料分頁的數量等,均為舉例,並非限制本揭露的應用。
請參見第13A、13B、13C圖,其似分別對應於三個資料層級DG的資料區塊BLK,以及該些資料區塊內的分頁叢集CL之示意圖。其中,第13A圖代表對應於第一個資料層級(G=1)的資料區塊651(例如,資料區塊BLKa、BLKb、BLKc、BLKd);第13B圖代表對應於資料層級DG2的資料區塊652(例如,資料區塊BLKe、BLKf、BLKg、BLKh);第13C圖代表對應於資料層級DG3的資料區塊653(例如,資料區塊BLKi、BLKj、BLKk、BLKl)。在這些圖式中,資料區塊均包含排列為M行(例如,M=8)與N列(例如,N=8)的多個資料分頁。隨著對 應的資料層級DG不同,資料區塊BLK內劃分的分頁叢集CL的數量也不相同。
在第13A圖中,資料區塊651包含64個分頁叢集CL,且每個分頁叢集包含1個資料分頁。例如,分頁叢集CL1包含資料分頁P(1,1)、分頁叢集CL2包含資料分頁P(2,1),其餘類推。因此,在第13A圖中,與資料區塊651對應的資料區塊使用表,總共列出64個叢集編號(1~64)。當資料區塊651內的分頁叢集CL1~CL64均未寫入任何資料時,與該些叢集編號(1~64)對應的資料存放位置(P#)均為”0”。若在資料區塊651內,有任何一個分頁叢集寫入資料時,控制器331將與該分頁叢集CL對應的叢集編號(CL#)對應的資料存放位置(P#)更新為”1”。
在第13B圖中,資料區塊652包含16個分頁叢集CL,且每個分頁叢集CL包含4個資料分頁。因此,與資料區塊652對應的資料區塊使用表,總共列出16個叢集編號(1~16),分別對應於分頁叢集CL1~CL16。此外,每個叢集編號(1~16)所對應的資料存放位置(P#)可為0~4。
在資料區塊652內的分頁叢集C1~CL16均未寫入任何資料時,與該些叢集編號(1~16)對應的資料存放位置(P#)均為”0”。若在資料區塊652內的分頁叢集CL開始被寫入資料時,控制器331在與分頁叢集CL對應的叢集編號(CL#)紀錄最新的資料存放位置(P#)。
在第13C圖中,資料區塊652包含4個分頁叢集,且每個分頁叢集CL包含16個資料分頁。因此,與資料區塊653對應的資料區塊使用表,總共列出4個叢集編號1~4,分別對應於分頁叢集CL1~CL4。此外,每個叢集編號(1~4)所對應的資料存放位置(P#)可為0~16。
當資料區塊653的分頁叢集CL1~CL4均未寫入任何資料時,與該些叢集編號(1~4)對應的資料存放位置(P#)均為”0”。若在資料區塊653內的分頁叢集CL1~CL4開始被寫入資料時,控制器331在與分頁叢集CL對應的叢集編號(CL#)紀錄最新的資料存放位置(P#)。
承上,控制器331將資料區塊使用表儲存於快取記憶體335。當控制器331對記憶體陣列33寫入資料或對資料區塊BLK、分頁叢集CL、資料分頁的內容有所更動時,亦同步更新。據此,控制器331可以透過資料區塊使用表,掌握每個資料區塊BLK的情況。除了資料區塊使用表外,控制器331另可於快取記憶體335中,維持一份資料區塊分級表與位址映射表,透過三者的搭配使用,管理資料區塊BLK的分配使用,以及如何將資料存放至合適的資料區塊與資料分頁。
請參見第14圖,其係快取記憶體內部之示意圖。快取記憶體335用於儲存資料區塊分級表335a、資料區塊使用表335b,以及位址映射表335c。基本上,資料區塊分級表335a與資料區塊使用表335b可視為控制器331針對資料區塊BLK的管理與使用所需的相關資訊。另一方面,位址映射表335c相當於控制器331針對資料管理目的而提供的資訊。
記憶體裝置30啟用期間,快閃轉譯層3311會即時更新快取記憶體335的內容,供控制器331存取記憶體陣列333使用。當記憶體裝置30停用時,控制器331將快取記憶體335的內容儲存於記憶體陣列333或其他的非揮發性記憶體中,待控制器331在下次開機時載入。
資料區塊分級表335a用於儲存資料區塊BLK與其對應的資料層級DG、各個資料層級DG內的分頁叢集所包含的資料分頁數量。例如,在第12圖中,資料區塊BLKa、BLKb、BLKc、BLKd均屬 於對應於資料層級DG1的資料區塊BLK;資料區塊BLKe、BLKf、BLKg、BLKh均屬於對應於資料層級DG2的資料區塊;以及,資料區塊BLKi、BLKj、BLKk、BLKl均屬於對應於資料層級DG3的資料區塊。
另,資料區塊分級表335a還記錄與每個資料層級對應的每個分頁叢集CL所包含的資料分頁的數量Npg_cl。其中,Npg_cl=Og*Pg。延續第13A~13C圖的舉例,此處假設與資料層級G=1對應的資料區塊中,每個分頁叢集CL包含一個資料分頁的數量(當G=1時,Npg_cl=1);假設與資料層級G=2對應的資料區塊中,每個分頁叢集CL包含四個資料分頁的數量(當G=2時,Npg_cl=4);以及,假設與資料層級G=3對應的資料區塊中,每個分頁叢集包含十六個資料分頁的數量(當G=3時,Npg_cl=16)。
此外,快取記憶體335進一步提供多份資料區塊使用表335b,每一份資料區塊使用表335b對應於一個資料區塊BLK。因此,針對第12圖的例子,若記憶體陣列333的敏感資料區333a包含資料區塊BLKa~BLKl,則每個資料區塊BLKa~BLKl都對於一份資料區塊使用表335b。另,隨著資料區塊BLKa~BLKl所對應的資料層級DG不同,各個資料區塊使用表335b內的叢集編號CL#與資料存放位置P#的數量也不相同。
例如,當資料區塊BLK對應於資料層級DG1時,資料區塊使用表335b紀錄叢集編號為1~64,以及資料存放位置為0或1;當資料區塊BLK對應於資料層級DG2時,資料區塊使用表335b紀錄叢集編號為1~16,且資料存放位置可為0~4;當資料區塊BLK對應於資料層級DG3時,資料區塊使用表335b紀錄叢集編號1~4,且資料存放位置可為0~16(0表示此叢集尚未有資料寫入)。
再者,位址映射表335c用於儲存每一個邏輯位址所對應的資料,以及該資料在記憶體陣列中的實體位址。依據本揭露的實施例,控制器331可以利用資料區塊BLKid與分頁叢集CLid辨別資料在記憶體陣列333的存放位置。在搭配資料區塊使用表335b後,就可得知該筆資料最新的版本的存放位置。
關於控制器331如何在更新資料時,決定應該將資料寫入至哪一個資料區塊與哪一個資料分頁的具體例子,請參見第15、16、17A~17B、18圖的說明。這些圖式假設筆資料A會經過反覆的更新,並說明隨著資料A的更新,控制器331如何決定應該將不同版本的資料A存放於什麼位置。為便於說明,此處以英文字母搭配數字代表資料與其版本。例如,A1代表資料A的第一個版本;A2代表資料A的第二個版本,其餘類推。
請參見第15圖,其係儲存資料A1時,將資料A1寫入對應於資料層級DG1的資料區塊之示意圖。第一次寫入任何資料時,控制器331均會利用與資料層級DG1對應的資料區塊651內。第15圖假設資料A1存放在分頁叢集CL1。此時,由資料區塊使用表335b可以看出,與分頁叢集CL1對應的叢集編號1,其資料存放位置P#更新為”1”。在此同時,因為其他的分頁叢集CL2~CL64並未存放任何資料。因此,叢集編號2~64所對應的資料存放位置均為”0”。
在位址映射表335c中,針對每一筆資料的存放位置(P#)加以記錄。此處假設資料A為記憶體陣列中的第一筆資料,因而對應於邏輯位址1。在位址映射表335c中,記錄儲存著資料A1的資料區塊651與分頁叢集CL1。如第12圖所示,資料區塊BLKa為對應於資料層級DG1的資料區塊BLK。因此,此處假設資料區塊651即為第12圖的資 料區塊BLKa,且因資料A1位於分頁叢集CL1。是故,此處可以(BLKa,1)對應於資料A。
請參見第16圖,其係儲存資料A2時,不再存入對應於資料層級DG1的資料區塊,而是將資料A2寫入至對應於資料層級DG2的資料區塊之示意圖。控制器331將資料A2存入記憶體陣列333時,因為與資料層級DG1對應的資料區塊651所分配給資料A的分頁叢集CL1已經全部被使用,此時改為使用與資料層級DG2對應的資料區塊存放資料A2。
如第16圖所示,在控制器331將資料A2寫入記憶體陣列333時,並不是將資料A2存入資料區塊651,而是將資料A2存入資料區塊652內的分頁叢集CL1的資料分頁P(1,1)。此時,因為資料A已經從A1更新為A2,原本存放在資料區塊651的資料A1已經成為過時資料。因此,在與資料區塊651對應的資料區塊使用表335b中,與叢集編號1對應的資料存放位置P#被註記為無效的資料分頁。此處以叉號代表資料分頁被標示為無效。另一方面,因為資料A2被存入資料區塊652的分頁叢集CL1中的資料分頁P(1,1)的緣故。因此,與資料區塊652對應的資料區塊使用表335b所記錄的叢集編號1所對應的資料存放位置P#更新為”1”。
隨著資料的更新,控制器331需記錄資料A的存放位置的歷史紀錄。因此,在位址映射表335c中,可以利用鏈串列(linking list)的方式,記錄儲存資料A的資料區塊BLK與分頁叢集CL的位置。如第12圖所示,資料區塊BLKe、BLKf、BLKg、BLKh屬於資料層級DG2。因此,此處可假設資料區塊652即為第12圖的資料區塊BLKe,且因資 料A2位於分頁叢集CL1的資料分頁P(1,1)。是故,此處可以(BLKe,1)更新至與資料A對應的鏈串列。
如前所述,同一個分頁叢集CL所包含的資料分頁P均用於存放同一筆資料的不同版本。由於本揭露的實施例假設在對應於資料層級DG2的資料區塊BLK中,每個分頁叢集CL包含四個資料分頁P。因此,在資料A2寫入資料區塊652的分頁叢集CL1的資料分頁P(1,1)後,分頁叢集CL1仍有其他三個資料分頁P(2,1)、P(1,2)、P(2,2)可用於寫入資料A的其他更新版本。
請參見第17A~17C圖,其係儲存資料A3、A4、A5時,寫入對應於資料層級DG2的資料區塊之示意圖。如前所述,資料區塊652的分頁叢集CL1中,仍有三個資料分頁可供寫入資料A的其他更新版本。因此,這三個資料分頁P可分別用於寫入資料A3、A4、A5。當控制器331將資料A3、A4、A5存入記憶體陣列333時,與資料A對應的資料區塊與分頁叢集並未變更。在此同時,位址映射表335c紀錄的鏈串列仍可維持不變。,
第17A圖為,控制器331將資料A3寫入資料區塊652的分頁叢集CL1的資料分頁P(2,1)(位於分頁叢集CL1右上角)。將資料A3寫入後,資料A2成為過時資料。因此,控制器331會將原本用於存放資料A2的資料區塊652的分頁叢集CL1的資料分頁P(1,1),標示為無效的資料分頁。此時,因為有效資料A3被存放在資料分頁P(2,1)的緣故,控制器331在與資料區塊652對應的資料區塊紀錄表中,將與叢集編號1對應的資料存放位置更新為”2”。
第17B圖為,控制器331將資料A4寫入資料區塊652的分頁叢集CL1的資料分頁P(1,2)(位於分頁叢集CL1左下角)。將資料A4寫 入後,資料A3成為過時資料。因此,控制器331會將原本用於存放資料A3的資料區塊652的分頁叢集CL1的資料分頁P(2,1),標示為無效的資料分頁。此時,因為有效資料A4的存放位置在資料分頁P(1,2)的緣故,控制器331在與資料區塊652對應的資料區塊紀錄表中,將與叢集編號1對應的資料存放位置更新為”3”。
第17C圖為,控制器331將資料A5寫入資料區塊652的分頁叢集CL1的資料分頁P(2,2)(位於分頁叢集CL1右下角)。將資料A5寫入後,資料A4成為過時資料。因此,控制器331會將原本用於存放資料A4的資料區塊652的分頁叢集CL1的資料分頁P(1,1),標示為無效的資料分頁。此時,因為有效資料A5的存放位置在資料分頁P(2,2)的緣故,控制器331在與資料區塊652對應的資料區塊紀錄表中,將與叢集編號1對應的資料存放位置更新為”4”。
請參見第18圖,其係儲存資料A的第六個版本時,不再存入對應於資料層級DG2的資料區塊,而是將資料A的第六個版本改為寫入至對應資料層級DG3的資料區塊之示意圖。
當控制器331寫入資料A6時,因為資料區塊652所分配與資料A對應的分頁叢集CL1已經全部被使用。據此,控制器331判斷需要使用容量更大的分頁叢集CL存放資料A的更新版本。因此,控制器331將改為使用與資料層級DG3對應的資料區塊653的分頁叢集CL存放資料A6。
如第18圖所示,在控制器331將資料A6存入記憶體陣列333時,並不是將資料A6存入資料區塊652,而是將資料A6存入資料區塊653。此時,因為資料A已經從A5更新為A6,原本儲存 的資料A5成為過時資料。因此,用於儲存資料A5的資料區塊652的分頁叢集CL2的資料分頁P(2,2)會被控制器331標示為無效。
承上,當控制器331存入資料A6時,資料區塊652的分頁叢集CL1內的全部的資料分頁已經全部被標示為無效。因此,在與資料區塊652對應的資料區塊使用表335b中,與叢集編號1對應的資料存放位置將被註記為無效(null)。此處以叉號表示資料分頁無法被使用。另一方面,因為資料A6被存入資料區塊653的分頁叢集CL1中的資料分頁P(1,1)。因此,在與資料區塊653對應的資料區塊使用表335b中,與叢集編號1所對應的資料存放位置更新為”1”。
根據前述的說明可以得知,在第16圖中,控制器331不再將資料A2存入資料區塊651,而是將資料A2存放至資料區塊652;以及,在第18圖中,控制器331不再將資料A6存入資料區塊652,而是將資料A2存放至資料區塊653。其中,資料區塊652所對應的資料層級G2高於資料區塊所對應的資料層級G1,且資料區塊653所對應的資料層級G3高於資料區塊所對應的資料層級G2。隨著資料區塊的變更,用於存放資料的資料分頁叢集所包含的資料分頁的數量也隨著增加。因此,本揭露將此種更換儲存的資料區塊的過程定義為資料的升級過程。此種升級過程發的發生,係基於資料不斷被更新所致。
附帶一提的是,隨著資料的升級,儲存資料的資料區塊對應的資料層級DG不斷提升。轉換儲存資料的資料區塊的同時,原本存放過時資料的資料區塊內,與該資料對應的分頁叢集CL中的全部資料分頁也都被標示為無效。針對此種因為資料升級所產生之,分 頁叢集內的資料分頁,控制器331可將其清除後,提供給其他資料使用。
為此,本揭露的控制器331亦可於控制韌體層3313提供一個刪除功能。該刪除功能可用於針對特定的分頁叢集進行過時資料的清除。當一筆資料被升級時,控制器331可同時執行刪除操作,藉以將相對下層的資料區塊內的分頁叢集清空作為後續使用。或者,控制器331可先記錄該些因為資料升級而可被刪除的分頁叢集,並於記憶體裝置30相對閒置時,才執行刪除操作。由此可知,當控制器331提供擦除功能時,各種資料分頁的管理可更為彈性。
如前所述,本揭露的實施例會係隨著資料的版本變化,改變與寫入資料對應之資料區塊所對應的資料層級DG。接著,係以流程圖的方式方式彙整第15、16、17A~17B、18圖的例子。
請參見第19圖,其係隨著資料的版本變化,改變與寫入資料對應之資料區塊所對應的資料層級DG之流程圖。在控制器331從主控裝置31接收一筆資料後,控制器331先判斷該筆資料是否為第一次寫入(步驟S601)。若是,控制器331便執行第一次寫入程序S603)。其中,步驟S603進一步包含以下步驟:將資料存放至對應於資料層級DG1的資料區塊BLK內的未使用分頁叢集CL(步驟S603a);以及,將資料存放位置儲存於位址轉換表(步驟S603b)。其後,控制器331須同步更新與被寫入之資料區塊對應的資料區塊使用表(步驟S607)。
另一方面,若控制器331判斷該筆資料並非第一次寫入,便執行資料更新程序(步驟S605)。接著,控制器331自快取記憶體 335取得先前用於存放該筆資料的過時資料的位置,包含資料區塊BLK、叢集CL#與資料存放位置P#(S605a)。其後,控制器331可依據快取記憶體335提供的資料區塊使用表,判斷先前用於儲存過時資料的分頁叢集內,是否仍有可用的資料分頁(步驟S605b)。
若步驟S605b的判斷結果為肯定,控制器331便將更新資料寫入與過時資料相同的一個資料區塊內的同一個分頁叢集內的另一個資料分頁(步驟S605c)。反之,若先前分配的分頁叢集內,已無空的資料分頁可存放更新資料時,控制器331便將更新資料寫入與較高資料層級DG對應的資料區塊內的分頁叢集內的第一個資料分頁(步驟S605d)。接著,控制器331會更新位址映射表(步驟S605e)並將原本用於儲存過時資料的資料分頁標示為無效的資料分頁(步驟S605f)。此外,控制器331須還需更新資料區塊使用表335b的內容(步驟S607)。
承上,本揭露的實施例可隨著資料的更新,對資料的資料層級加以升級。即,動態地使用與較高資料層級對應的資料區塊。除前述的資料升級外,本揭露的實施例還可將資料對應的資料層級降級。也就是說,資料與其對應的層級可動態地根據資料的屬性或實際需求而調整。接著,以第20圖說明存放資料時,使用的資料區塊所對應的資料層級可動態調整的概念。
請參見第20圖,其係本揭露針對存放資料時,因應資料的狀態,動態調整與該資料對應的分頁叢集的資料層級DG之示意圖。在本揭露的實施例中,資料區塊的資料層級可能為資料層級DG1、資料層級DG2或是資料層級DG3。隨著資料的寫入,代表資料的熱度逐漸增加。如果資料的熱度高於原本劃分的資料層級DG,控制器331便將較與較高的資料層級DG對應的資料區塊劃分給該筆資料。
另一方面,經過一段時間後,控制器331將判斷資料的熱度是否仍然維持。即,判斷先前針對資料熱度所提供資料層級DG是否適合資料的使用狀況。如果資料的熱度已經降低,代表該筆資料不再需要這麼大的儲存空間。因此,如果資料的熱度降低,控制器331就可改用包含較少數量之資料分頁的分頁叢集儲存該筆更新資料。也就是,控制器331可提供降級的做法。例如,將原本劃分為使用資料層級DG3的資料區塊的資料,改為對應於資料層級DG2的資料區塊。或者,原本規劃為使用資料層級DG2的資料區塊,改為對應於資料層級DG1的資料區塊。
此種因應資料的熱度變化而調整資料所對應的資料層級DG的做法,可在控制器331執行垃圾回收時實現。其中,控制器331可對資料所對應的資料層級DG進行升級調整、降級調整或是在同一個層級間平行調整。以下以第21~31C圖,說明控制器331調整與資料對應的資料層級DG的做法。
請參見第21圖,其係執行垃圾回收時,因應資料熱度而調整與資料對應的資料層級DG之流程圖。首先,控制器331自記憶體陣列333中,選擇將用於執行垃圾回收的資料區塊(待垃圾回收的資料區塊BLKgc)(步驟S71)。接著,對儲存在待垃圾回收的資料區塊BLKgc內的資料,判斷其資料熱度,並依據對資料熱度的判斷結果,對資料對應的資料層級進行調整(步驟S73);以及對待進行垃圾回收的資料區塊BLKgc執行抹除操作(步驟S75)。其中,步驟S73所述的資料層級的調整,可透過不同的定義方式與判斷過程實現。
以下,第22A、22B圖為,控制器331可選出一個或多個待垃圾回收的資料區塊BLKgc,另,第23~31C圖進一步提到兩種說明可用於調整資料層級的調整方式,但實際應用時,並不以此為限。
第22A圖所示為,僅選擇一個資料區塊作為待垃圾回收的資料區塊BLKgc。首先,找出具有最多被標示為無效的資料分頁的資料區塊(步驟S711a)。接著,控制器331判斷是否僅有一個資料區塊具有最多被標示為無效的資料分頁的資料區塊(步驟S711b)。若僅有一個資料區塊具有最多被標示為無效的資料分頁時,就以滿足該條件的資料區塊作為待垃圾回收的資料區塊BLKgc(步驟S711d)。
另一方面,如果步驟S711b的判斷結果為,有多個資料區塊同樣具有最多無效的資料分頁時,控制器331在這些資料區塊中,選擇所對應之資料層級DG較高的資料區塊做為選定資料區塊(步驟S711c)。
在步驟S711c中,控制器331選擇在資料層級DG較高的資料區塊作為待垃圾回收資料區塊的考量是,因為每個分頁叢集所包含的資料分頁為同一筆資料的不同版本的緣故,而資料層級DG越高的資料區塊所包含的分頁叢集數量越少。由於每個分頁叢集對應於一筆資料,分頁叢集數量較少時,代表存放的有效資料的數量也相對較少。也因此,若針對資料層級DG較高的資料區塊進行抹除時,需備份至其他資料區塊的資料量也相對較少。
第22B圖所示為,選擇多個資料區塊作為待垃圾回收的資料區塊。在第22B圖中,直接以一個資料區塊內的資料分頁使用臨限值Npgth_blk判斷資料區塊內的無效的資料分頁的數量是否已經超過這個臨限值Npgth_blk(步驟S715a)。若是,控制器331便將所有符 合這個判斷條件的資料區塊都當作待垃圾回收的資料區塊BLKgc。若步驟S715a的判斷結果為否定,代表還不需要進行資料層級的調整,則流程結束。
實際應用時,控制器331也可以視記憶體陣列的使用狀態,動態的選擇應採用第22A圖或第22B圖選擇待垃圾回收的資料區塊BLKgc。例如,控制器331雖然預設使用第22A圖選擇待垃圾回收的資料區塊BLKgc,但在記憶體裝置30相對較為閒置時,控制器331便改以第22B圖選擇多個待垃圾回收的資料區塊BLKgc。此外,控制器331選擇待垃圾回收的資料區塊BLKgc的方式,並不以第22A、22B圖為限。
無論是第22A圖或是第22B圖,當控制器331選出待垃圾回收的資料區塊BLKgc後,都需要進一步判斷待垃圾回收的資料區塊BLKgc內部儲存的資料應該如何進行資料層級DG的調整。接著,以一個存有四筆資料並對應於資料層級DG3的資料區塊為例,說明對待垃圾回收的資料區塊BLKgc進行垃圾回收時,應該如何調整其內部資料所對應之資料層級DG。
請參見第23圖,其係一個存有四筆資料並對應於資料層級DG3的資料區塊之示意圖。此圖式以一個對應於第三個資料層級的資料區塊為例,說明四筆資料在四個分頁叢集CL1~CL4的分布情形。
在分頁叢集CL1中,存放著資料X的過時資料X6~X13,以及更新資料X14。在分頁叢集CL2中,存放資料X的過時資料X6~Y7,以及更新資料Y8。在分頁叢集CL3中,存放著資料A的過時資料A6~A16,以及更新資料A17。在分頁叢集CL4中,存放著資料D的過時資料D6~D8,以及更新資料D9。以下,利用第24、25A、25B、 26圖說明一種利用一個臨限值,判斷應如何對資料所屬之資料層級G1進行調整的作法,以及利用第29、30A、30B、30C、31A、31B、31C圖說明另一種利用兩個臨限值,判斷應如何對資料所屬之資料層級G1進行調整的作法。
請參見第24圖,其係對資料區塊進行垃圾回收時,以一個預設的臨限值判斷應如何調整資料所對應資料層級DG的流程圖。此流程圖說明控制器331如何僅使用一個臨限值比較,並決定是否將資料加以降級的過程。
首先,在待垃圾回收的資料區塊BLKgc中,選擇一個分頁叢集CL進行檢查(步驟S731a)。控制器331將判斷在該分頁叢集CL中,已經使用的資料分頁的數量是否小於針對與該分頁叢集對應的資料層級DG所定義的臨限值(步驟S731b)。
若在該分頁叢集CL中,已經使用的資料分頁的數量確實小於針對與該叢集對應的資料層級DG定義的臨限值時,控制器331將視為存放在該分頁叢集的資料熱度相對較低。據此,控制器331判斷該筆資料已經不再需要用到目前使用的資料層級DG。連帶的,控制器331會將該筆資料的最新版本,複製至與較低一個資料層級DG對應的資料區塊內的分頁叢集(步驟S731c)。即,對資料進行降級調整。
另一方面,若在該分頁叢集CL中,已經使用的資料分頁數量大於或等於針對與該叢集對應的資料層級DG定義的臨限值時,控制器331將視為存在該分頁叢集CL的資料熱度符合預期。也就是,控制器331判斷該筆資料確實需要用到目前規畫使用的資料層級DG。連帶的,控制器331會將該筆資料的最新版本,複製至與同一個 資料層級DG對應的其他資料區塊內(步驟S731d)。即,對資料進行平移調整。
接著,控制器331判斷在該待垃圾回收的資料區塊BLKgc中的每一個分頁叢集,是否都已經經過與臨限值的比較與複製至其他資料區塊的前述流程(步驟S731e)。若否,控制器331將選取另一個分頁叢集CL,並重複自步驟S731a開始執行。
若在該待垃圾回收的資料區塊BLKgc中的每一個分頁叢集,全部都經過步驟S731a~731e判斷流程,則結束對此資料區塊的垃圾回收處理。接著,判斷是否有其他的待垃圾回收資料區塊BLKgc(步驟S731f)。若否,結束流程。若是,則選擇另一個待垃圾回收的資料區塊BLKgc(步驟S731g),並重複前述流程。
請參見第25A圖,其係針對垃圾回收之資料區塊BLKgc所對應的資料層級,定義一個預設的臨限值之示意圖。此圖式針對資料層級DG2的分頁叢集744,定義一個臨限百分比(例如:50%)。因此,控制器331可依據Npg_cl*50%計算臨限值Th,並以臨限值Th與待垃圾回收的資料區塊BLKgc內的分頁叢集內的資料分頁使用數量進行比較。如前所述,本文假設對應於資料層級DG2的分頁叢集包含16個資料分頁(Npg_cl=16)。因此,若與資料層級DG2對應的資料區塊被選為待垃圾回收資料區塊BLKgc時,控制器331便針對該待垃圾回收資料區塊BLKgc所包含的四個分頁叢集,分別以第25A圖定義的臨限值(例如:8個資料分頁)加以比對。
實際應用時,臨限值的選定並不限於Npg_cl *50%。另,針對其他資料層級DG,也可設定與其對應的臨限值。再者,針對每個資料層級DG所定義的臨限值也可能不同。
請參見第25B圖,其係以一個預設的臨限值比較待進行垃圾回收之資料區塊內的資料熱度之示意圖。此圖式係以第25A圖定義的臨限值,與第23圖的每個分頁叢集進行比較。
在第25B圖中,控制器331利用臨限值Th分別與分頁叢集CL1、CL2、CL3、CL4進行比較。其中,與分頁叢集CL1比較時,控制器331確認資料X14的存放位置已經超過臨限值Th。因此,控制器331判斷資料X屬於熱度較高的資料,確實需要使用對應於資料層級DG的資料區塊存放資料X14以及資料X的後續更新版本。
對分頁叢集CL2而言,資料Y8的存放位置低於臨限值。因此,控制器331判斷資料Y的熱度相對較低。據此,控制器331判斷應可以使用較低資料層級DG的分頁叢集,存放資料Y8以及資料Y的後續更新版本。
對分頁叢集CL3而言,資料A17的存放位置高於臨限值。因此,資料A的熱度相對較高。據此,控制器331判斷應可以維持使用資料層級DG3的分頁叢集存放資料A17以及資料A的後續更新版本。
對分頁叢集CL4而言,資料D9的存放位置低於臨限值。因此,資料D的熱度相對較低。據此,控制器331判斷應可以使用較低資料層級DG的分頁叢集存放資料D9以及資料D的後續更新版本。接著說明依據前述的判斷結果,控制器331將資料寫入其他分頁叢集的做法。
請參見第26圖,其係將進行垃圾回收之資料區塊內的資料,複製至同一個資料層級DG的資料區塊之示意圖。如前所述,經過第25B圖的比較後,控制器331判斷資料X、資料A的更新頻率較高。 因此,控制器331將維持使用資料層級DG3的分頁叢集存放資料X、資料A。因此,控制器331將資料X14、資料A17複製至同樣為資料層級DG的資料區塊713中。此處假設將資料X14存放於資料區塊713的分頁叢集CL1;以及將資料A17存放於資料區塊713的分頁叢集CL2。
請參見第27圖,其係將進行垃圾回收之資料區塊內的資料,複製至低一個資料層級DG的資料區塊之示意圖。如前所述,經過第25B圖的比較後,控制器331判斷資料Y、資料D的更新頻率較低。因此,控制器331使用較低資料層級DG的分頁叢集存放資料Y、資料D。因此,控制器331將資料Y8、資料D9複製至較低資料層級DG的資料區塊712中。此處假設將資料Y8存放於資料區塊712的分頁叢集CL1;以及將資料D9存放於資料區塊712的分頁叢集CL2。
請參見第28A、28B圖,其係對進行垃圾回收之資料區塊進行抹除之示意圖。在將資料區塊703的資料複製至資料區塊713、712後,將資料區塊703的資料分頁全部標為無效的資料分頁(如第28A圖所示)。此外,控制器331並可對資料區塊703進行抹除(如第28B圖所示)。
請參見第29圖,其係對資料區塊進行垃圾回收時,以兩個預設的臨限值判斷應如何調整資料所對應資料層級DG的流程圖。此流程圖說明如何僅使用兩個臨限值比較,並決定應將資料加以降級、升級或維持同一個資料層級DG的判斷過程。
在待垃圾回收的資料區塊BLKgc中,控制器331選擇一個分頁叢集進行檢查(步驟S735a)。控制器331判斷在該分頁叢集中,已經使用的資料分頁的數量是否小於針對與該分頁叢集對應的資料層級DG所定義的較低臨限值Th_L(步驟S735b)。
若在該分頁叢集中,已經使用的資料分頁數量確實小於針對與該叢集對應的資料層級DG定義的較低臨限值Th_L時,控制器331將視為存在該分頁叢集的資料熱度相對較低。據此,控制器331判斷該筆資料已經不再需要用到目前使用的資料層級DG。連帶的,控制器331會將該筆資料的最新版本,複製至與較低一個資料層級DG對應的資料區塊內的分頁叢集(步驟S735c)。
另一方面,若在該分頁叢集中,已經使用的資料分頁數量大於或等於針對與該叢集對應的資料層級DG定義的較低臨限值Th_L時,控制器331將進一步以較高臨限值Th_H較該分頁叢集(步驟S735d)。若分頁叢集儲存的資料低於較高臨限值Th_H時,代表儲存在該分頁叢集的資料熱度符合預期。也就是,控制器331判斷該筆資料確實需要用到目前規畫使用的資料層級DG。連帶的,控制器331會將該筆資料的最新版本,複製至與同一個資料層級DG對應的其他資料區塊內(步驟S735e)。
再者,若在該分頁叢集中,已經使用的資料分頁數量大於或等於針對與該叢集對應的資料層級DG定義的較高臨限值Th_H時,代表儲存在該分頁叢集的資料熱度高於預期。也就是,控制器331判斷該筆資料需要用較高的資料層級DG。連帶的,控制器331會將該筆資料的最新版本,複製至與高一個資料層級DG對應的其他資料區塊內(步驟S735f)。
接著,判斷在該待垃圾回收的資料區塊BLKgc中的每一個分頁叢集,是否都已經執行與臨限值的比較與複製至其他資料區塊的前述流程(步驟S735g)。若否,則選取另一個分頁叢集,並自步驟S735a開始重複執行前述步驟。
若在該待垃圾回收資料區塊BLKgc中的每一個分頁叢集,全部都經過判斷流程,控制器331便結束對此資料區塊的垃圾回收判斷。接著,控制器331將判斷是否有其他的待垃圾回收資料區塊(步驟S735h)。若否,結束流程。若是,控制器331將選擇另一個待垃圾回收的資料區塊BLKgc(步驟S735i),並重複前述流程。
請參見第30A、30B圖,其係針對垃圾回收之資料區塊,定義兩個預設的臨限值之示意圖。第30A圖與第30B圖針對資料層級DG2的分頁叢集751a、751b,分別定義一個較低臨限值Th_L(例如:Npg_cl *25%)與一個較高臨限值Th_H(例如:Npg_cl *75%)。如前所述,本文假設資料層級DG2的分頁叢集包含16個資料分頁(Npg_cl=16)。因此,若與資料層級DG2對應的資料區塊被選為待垃圾回收資料區塊時,控制器331便針對資料區塊所包含的四個分頁叢集,分別以第30A圖定義的較低臨限值(例如:4個資料分頁)加以比對,以及以第30B圖定義的較高臨限值(例如:12個資料分頁)。
據此,在另一個待垃圾回收的資料區塊BLKgc中,當一個分頁叢集內的資料存放位置低於較低臨限值Th_L時,控制器331便將該分頁叢集用於儲存的資料改為對應至較低資料層級DG的分頁叢集;當一個分頁叢集內的資料存放位置高於或等於較低臨限值Th_L,並同時低於較高臨限值Th_H時,控制器331便將該分頁叢集用於儲存的資料維持對應於同一個資料層級DG的分頁叢集;或者,當一個分頁叢集內的資料存放位置高於或等於較高臨限值Th_H時,控制器331便將該分頁叢集用於儲存的資料改為對應至較高資料層級DG的分頁叢集。
實際應用時,較低臨限值的選定並不限於Npg_cl *25%,且較高臨限值的選定並不限於Npg_cl*75%。另,針對其他資料層級DG,也可設定與其對應的臨限值。再者,針對每個資料層級DG定義的臨限值也可能不同。
請參見第30C圖,其係以兩個預設的臨限值比較待進行垃圾回收之資料區塊內的資料熱度之示意圖。此圖式係以第30A、30B圖定義的較低臨限值Th_L與較高臨限值Th_H,與第23圖的每個分頁叢集進行比較。
在第30C圖中,控制器331使用較低臨限值Th_L與較高臨限值Th_H與分頁叢集CL1、CL2、CL3、CL4進行比較。其中,分頁叢集CL1而言,資料X14的存放位置已經過較低臨限值Th_H且低於較高臨限值Th_H。因此,資料X的熱度大致符合目前分頁叢集的資料層級DG,控制器331維持使用資料層級DG3的資料區塊存放資料X14以及資料X的後續更新版本。
對分頁叢集CL2而言,資料Y8的存放位置低於較低臨限值Th_L。因此,資料Y的熱度相對較低。據此,控制器331可以使用較低資料層級DG的分頁叢集存放資料Y8以及資料Y的後續更新版本。
對分頁叢集CL3而言,資料A17的存放位置等於較高臨限值Th_H。因此,資料A的熱更高。據此,控制器331改為使用第四個資料層級DG的分頁叢集存放資料A17以及資料A的後續更新版本。
對分頁叢集CL4而言,資料D9的存放位置等於較低臨限值。因此,資料D的熱度大致符合目前對應的資料層級DG。據此,控制器331維持使用相同資料層級DG的分頁叢集,存放資料D9以及資料D的後續更新版本。
請參見第31A圖,其係將進行垃圾回收之資料區塊內的資料,複製至低一個資料層級DG的資料區塊之示意圖。如前所述,經過第30C圖的比較後,控制器331判斷資料Y的更新頻率較低。因此,可降低與資料X、資料Y所儲存之分頁叢集的資料層級DG。因此,將資料Y8複製至資料層級DG2的資料區塊752中。此處假設將資料Y8存放於資料區塊752的分頁叢集CL1。
請參見第31B圖,其係將進行垃圾回收之資料區塊內的資料,複製至高一個資料層級DG的資料區塊之示意圖。如前所述,經過第30C圖的比較後,控制器331判斷資料A的更新頻率較高。因此,須使使用更高資料層級DG的分頁叢集存放資料A。因此,控制器331將資料A17複製至對應於第四個資料層級DG的資料區塊754中。此處假設將資料X14存放於資料區塊753的分頁叢集CL1。
請參見第31C圖,其係將進行垃圾回收之資料區塊內的資料,複製至同一個資料層級DG的資料區塊之示意圖。如前所述,經過第30C圖的比較後,判斷資料X、資料D的更新頻率大致符合目前規劃的分頁叢集的資料層級DG。因此,控制器331維持使用資料層級DG3的分頁叢集存放資料X、資料D。因此,控制器331將資料X14、資料D9複製至同樣為資料層級DG3的資料區塊753中。此處假設將資料X14存放於資料區塊713的分頁叢集CL1;以及將資料D9存放於資料區塊753的分頁叢集CL2。
前述的舉例中,分別說明以一個臨限值與兩個臨限值比較分頁叢集的使用情形。另須留意的是,實際應用時,關於臨限值的選用、臨限值的數量,以及如何針對臨限值的比較結果調整資料所對應的資料層級等,並不以此處的舉例為限。
除了針對資料存放位置進行級別調整外,為減少在彼此相鄰的資料分頁進行再程式化時,對相鄰資料分頁可能產生的干擾現象,本揭露進一步針對記憶體區塊提出以棋盤式方式管理分頁叢集的寫入狀態的做法。
本揭露的實施例將資料區塊所包含的多個分頁叢集中,一部分預設為開啟狀態CLon,另一部分預設為關閉狀態CLoff。其中,被預設為開啟狀態CLon與關閉狀態CLoff的分頁叢集在資料區塊中,彼此交錯。當控制器331寫入資料時,僅先針對開啟狀態CLon的分頁叢集寫入資料。因為被預設為開啟狀態CLon與關閉狀態CLoff的分頁叢集在資料區塊中彼此交錯的緣故,在將資料寫入至被預設開啟狀態CLon的各個分頁叢集時,並不會產生因為對資料分頁進行再程式化,反而導致其他資料分頁的資料受到干擾的現象。
其後,待預設為開啟狀態CLon的分頁叢集均已用於寫入資料後,控制器331再依據在該些預設為開啟狀態CLon的分頁叢集中,資料分頁的使用情況,動態選擇是否能變更原本預設為關閉狀態CLoff的分頁叢集的使用狀態。
請參見第32A、32B圖,其係以棋盤式配置方式,對資料層級DG3的資料區塊,規劃其分頁叢集的使用狀態之示意圖。如前所述,對應於資料層級DG3的資料區塊80包含四個分頁叢集CL1、CL2、CL3、CL4。
第32A圖假設將分頁叢集CL1、CL4預設為關閉狀態CLoff;以及,將分頁叢集CL2、CL3預設為開啟狀態CLon。因為分頁叢集CL1、CL4被預設為關閉狀態CLoff的緣故,在資料區塊對應表中,與分頁叢集CL1、CL4對應的資料存放位置以叉號表示。另一方面,對 被預設為開啟狀態CLon的與分頁叢集CL2、CL3而言,與叢集編號2、3對應的資料存放位置標示為”0”。因此,記憶體控器會優先利用分頁叢集CL2、CL3的資料分頁寫入資料,並需於分頁叢集CL2、CL3都已經被用於存放資料後,才判斷分頁叢集CL1、CL4是否可以預設的關閉狀態CLoff,轉變為開啟狀態CLon。
第32B圖假設將分頁叢集CL1、CL4預設為開啟狀態CLon;以及,將分頁叢集CL2、CL3預設為關閉狀態CLoff。因為分頁叢集CL2、CL3被預設為關閉狀態CLoff的緣故,在資料區塊對應表中,與分頁叢集CL2、CL3對應的資料存放位置以叉號表示。另一方面,對被預設為開啟狀態CLon的與分頁叢集CL1、CL4而言,與叢集編號1、4對應的資料存放位置標示為”0”。因此,記憶體控器會優先利用分頁叢集CL1、CL4的資料分頁寫入資料,並需於分頁叢集CL1、CL4都已經被用於存放資料後,才判斷分頁叢集CL2、CL3是否可以預設的關閉狀態CLoff,轉變為開啟狀態CLon。
請參見第33圖,其係針對棋盤式配置的分頁叢集要如何決定寫入資料分頁的流程圖。
首先,控制器331依據分頁叢集CL在資料區塊BLK的位置而將一部分的分頁叢集預設為開啟狀態CLon的分頁叢集CLon,以及將另一部分的分頁叢集預設為關閉狀態CLoff的分頁叢集CLoff(步驟S81)。其次,隨著資料寫入的過程,控制器331動態調整分頁叢集的狀態(步驟S83)。其中,步驟S83將反覆進行。
步驟S83進一步包含以下步驟。首先,控制器331自主控裝置31接收一筆資料(步驟S831),並判斷該筆資料是否為新的資料(步驟S832)。若步驟S832的判斷結果為否定,代表先前已經分配過與該筆 資料對應的分頁叢集。因此,將資料寫入先前所分配與其對應的分頁叢集內(步驟S838),且控制器331依據資料的寫入位置,判斷是否有任何預設為關閉狀態CLoff的分頁叢集因為該筆資料的寫入而符合開啟狀態CLon。換言之,控制器331會動態的隨著資料的寫入位置,判斷是否應該調整分頁叢集的狀態(步驟S839)。第37圖將進一步說明步驟S839的相關細節。
若步驟S832的判斷結果為肯定,代表需要分配一個分頁叢集,用於儲存該筆資料的各個版本。此時,控制器331將判斷是否有設為開啟狀態CLon的分頁叢集可供寫入資料(步驟S833)。若是,便使用設為開啟狀態CLon的分頁叢集寫入該筆資料(步驟S834)。反之,則需確認是否有原本預設為關閉狀態CLoff的分頁叢集是否符合轉換為開啟狀態CLon的開啟條件(步驟S835)。
若步驟S835的判斷結果為,並無任何分頁叢集可以從關閉狀態CLoff轉換為開啟狀態CLon。則,控制器331將據以判斷資料區塊目前並無適合的分頁叢集可供存放該筆資料。因此,控制器331會將該筆資料存放至其他的資料區塊(步驟S837)。
另一方面,若步驟S835的判斷結果為,確實有分頁叢集已經符合開啟條件,並可從關閉狀態CLoff轉換為開啟狀態CLon。則,控制器331將在被轉換至開啟狀態CLon的分頁叢集存入該筆資料(步驟S836)。
承上,本揭露可將資料區塊內的分頁叢集區分兩個部分,其中一部分的分頁叢集預先設定為開啟狀態CLon,另一部分的分頁叢集預先設定為關閉狀態CLoff。控制器331儲存資料時,優先使用預設為開啟狀態CLon的分頁叢集存入資料,並於預設為開啟狀態CLon 的分頁叢集均被使用後,依據開啟條件逐步判斷原本被預設為關閉狀態CLoff的分頁叢集是否可以開始用於儲存資料。關於原本預設為關閉狀態CLoff的分頁叢集依據何種開啟條件進行判斷,以及在何種情況下判斷開啟條件的細節,將進一步說明如下。
請參見第34圖,其係記憶體控制規劃如第34圖所示之棋盤式配置的分頁叢集的流程圖。此圖式為第33圖的步驟S81的一種舉例首先,設定i=1,j=1(步驟S901)。其次,計算i%2與j%2(步驟S903)。接著,依據i%2與j%2的不同結果,決定分頁叢集CL應被預設為開啟狀態CLon或為關閉狀態CLoff。
若i%2=1且j%2=1時,將分頁叢集CL(i,j)設定為開啟狀態(步驟S905a)。若i%2=0且j%2=1時,將分頁叢集CL(i,j)設定為關閉狀態CLoff步驟S905b)。若i%2=1且j%2=0時,將分頁叢集CL(i,j)設定為關閉狀態CLoff(步驟S905c)。若i%2=0且j%2=0時,將分頁叢集CL(i,j)設定為開啟狀態CLon(步驟S905d)。
接著,判斷i是否等於Ig(步驟S907)。若否,累加i(步驟S909),並重複自步驟S903開始執行。若i等於Ig時,判斷j是否等於Jg(步驟S911)。若否,設定i=1並累加j(步驟S913)。若j=Jg時,決定分頁叢集CL之預設狀態的流程結束。
針對對應於資料層級DG2的資料區塊,若依據此流程圖決定分頁叢集的資狀態時,產生的棋盤式配置如第35圖所示。對資料層級DG2的資料區塊而言,Ig=I2=4、Jg=J2=4、Og=O2=2、Pg=P2=2。
請參見第35圖,其係以對應於資料層級DG2的資料區塊為例,說明一種棋盤式配置的分頁叢集之示意圖。第35圖以CL(i,j)代表分頁叢集CL在資料區塊BLK的位置。其中,每個分頁叢集CL包含排 列為Og行與Pg列的資料分頁。此處同樣以細格狀的網底代表被設為關閉狀態CLoff的分頁叢集CL;以及以空白方格代表被預設為開啟狀態CLon的分頁叢集CL。
第34圖的步驟S905a對應於此圖式中,位於第一列或第三列中的奇數行的分頁叢集,例如,分頁叢集CL(1,1)、CL(3,1)、CL(1,3)、CL(3,3)。因此,第35圖的分頁叢集CL(1,1)、CL(3,1)、CL(1,3)、CL(3,3)被預設為開啟狀態CLon。
第34圖的步驟S905b對應於此圖式中,位於第一列或第三列中的偶數行的分頁叢集,例如,分頁叢集CL(2,1)、CL(4,1)、CL(2,3)、CL(4,3)。因此,第35圖的分頁叢集CL(2,1)、CL(4,1)、CL(2,3)、CL(4,3)被預設為關閉狀態CLoff。
第34圖的步驟S905對應於此圖式中,位於第二列或第四列中的奇數行的分頁叢集,例如,分頁叢集CL(1,2)、CL(3,2)、CL(1,4)、CL(3,4)。因此,第35圖的分頁叢集CL(1,2)、CL(3,2)、CL(1,4)、CL(3,4)被預設為關閉狀態CLoff。
第34圖的步驟S905b對應於此圖式中,位於第二列或第四列中的偶數行的分頁叢集,例如,分頁叢集CL(2,2)、CL(4,2)、CL(2,4)、CL(4,4)。因此,第35圖的分頁叢集CL(2,2)、CL(4,2)、CL(2,4)、CL(4,4)被預設為開啟狀態CLon。
請參見第36圖,其係採用棋盤式配置時,原本被設為關閉狀態CLoff的分頁叢集應該如何判斷相鄰的分頁叢集的使用狀態,進而從關閉狀態CLoff改變為開啟狀態CLon之示意圖。此圖式的中心為擬判斷狀態的分頁叢集CL(i,j),其中,i、j分別代表擬判斷的分頁叢集在資料區塊的行方向的位置、列方向的位置。如前所述,判斷一個 分頁叢集可否開啟時,需視與其相鄰的資料分頁是否已經寫入資料。隨著在分頁叢集的上方、下方、左側、右側的不同,與其相鄰之分頁叢集中,需用於判斷的資料分頁的位置也不完全相同。
判斷分頁叢集CL(i,j)是否可被開啟時,必須判斷位在分頁叢集CL(i,j)上方、下方、左側、右側的分頁叢集的資料分頁中,與分頁叢集CL(i,j)相鄰接的資料分頁是否已經被標示為無效。其中,分頁叢集CL(i,j)的上方為分頁叢集CL(i,j-1);分頁叢集CL(i,j)的下方為分頁叢集CL(i,j+1);分頁叢集CL(i,j)的左側為分頁叢集CL(i-1,j);以及,分頁叢集CL(i,j)的右側為分頁叢集CL(i+1,j)。
在判斷分頁叢集CL(i,j-1)中,與分頁叢集CL(i,j)相鄰的資料分頁是否已經存入資料,相當於判斷在分頁叢集CL(i,j-1)中,位於最後一列的資料分頁是否都已經寫入資料。另,因為本揭露採用由左而右、由上而下的順序將資料寫入資料分頁,因此,僅在分頁叢集CL(i,j-1)的資料分頁P(Og,Pg)已經被標示為無效時,才代表與分頁叢集CL(i,j)的上方相鄰接的資料分頁均已經被標示為無效。
在判斷分頁叢集CL(i,j+1)中,與分頁叢集CL(i,j)相鄰的資料分頁是否已經被標示為無效,相當於判斷在分頁叢集CL(i,j-1)中,位於第一列的資料分頁是否被標示為無效。另,因為本揭露採用由左而右、由上而下的順序將資料寫入資料分頁,因此,僅在分頁叢集CL(i,j+1)的資料分頁P(Og,1)已經被標示為無效時,代表與分頁叢集CL(i,j)的下方相鄰接的資料分頁均已經被標示為無效。
在判斷分頁叢集CL(i-1,j)中,與分頁叢集CL(i,j)相鄰的資料分頁是否已經被標示為無效,相當於判斷在分頁叢集CL(i,j-1)中,位於第Pg行的資料分頁是否都已經被標示為無效。另,因為本揭 露採用由左而右、由上而下的順序將資料寫入資料分頁,因此,僅在分頁叢集CL(i,j-1)的資料分頁P(Og,Pg)已經被標示為無效時,控制器331方能聚確認與分頁叢集CL(i,j)的左側相鄰接的資料分頁均被使用。
在判斷分頁叢集CL(i+1,j)中,與分頁叢集CL(i,j)相鄰的資料分頁是否已經被標示為無效,相當於判斷在分頁叢集CL(i+1,j)中,位於第一行的資料分頁是否都已經被標示為無效。另,因為本揭露採用由左而右、由上而下的順序將資料寫入資料分頁,因此,僅在分頁叢集CL(i,j+1)的資料分頁P(1,Pg)已經被標示為無效時,代表與分頁叢集CL(i,j)的右側相鄰接的資料分頁均已經被標示為無效。
承上,分頁叢集CL(i,j)的開啟條件包含以下四個判斷條件:其一為,判斷分頁叢集CL(i,j-1)的資料分頁P(Og,Pg)是否已經被標示為無效;其二為,判斷分頁叢集CL(i,j+1)的資料分頁P(Og,1)是否已經被標示為無效;其三為,判斷斷分頁叢集CL(i-1,j)的資料分頁P(Og,Pg)是否已經被標示為無效;其四為,判斷分頁叢集CL(i+1,j)的資料分頁P(1,Pg)是否已經被標示為無效。當控制器331判斷這四個判斷條件均為肯定時,確認開啟條件已經成立。據此,控制器331可將符合開啟條件的分頁叢集CL(i,j)從關閉狀態CLoff轉換為開啟狀態CLon。
針對原本為關閉狀態CLoff的分頁叢集CL,依據其於資料區塊的位置不同,所需判斷之相鄰的分頁叢集CL的位置也不盡相同。以下進一步歸納,如何根據分頁叢集在資料區塊的位置,判斷被設為關閉狀態CLoff的分頁叢集CL是否可轉變為開啟狀態CLon。其中Ig、Jg分別代表在資料區塊的行方向與列方向包行的分頁叢集的個數。因此,隨著資料層級的不同,Ig與Jg的數值也不相同。其中,g代表資料層級DG。
首先,若分頁叢集CL(i,j)位於資料區塊的第1行與第1列(左上角)時,i=1,j=1(即,分頁叢集CL(1,1))。此時,控制器331需判斷位於分頁叢集CL(i,j)右側的分頁叢集CL(2,1),以及位於分頁叢集CL(i,j)下方的分頁叢集CL(1,2)所包含的資料分頁之使用情形。
若分頁叢集CL(i,j)位於資料區塊的第一列中,非第一行亦非第Ig行的位置時,j=1(即,分頁叢集CL(1,Jg))。此時,控制器331需判斷位於分頁叢集CL(i,j)左側的分頁叢集CL(i-1,1)、位於分頁叢集CL(i,j)右側的分頁叢集CL(i+1,1)與位於分頁叢集CL(i,j)下方的分頁叢集CL(i,2)所包含的資料分頁使用情形。
若分頁叢集CL(i,j)位於資料區塊的第Ig行與第1列(右上角)時,i=Ig、j=1(即,分頁叢集CL(Ig,1))。此時,控制器331需判斷位於分頁叢集CL(i,j)左側的分頁叢集CL(Ig-1,1)、位於分頁叢集CL(i,j)下方的分頁叢集CL(Ig,2)所包含的資料分頁之使用情形。
若分頁叢集CL(i,j)位於資料區塊的第一行中,非第一列亦非第Jg列的位置時,i=1、j≠1、j≠Ig(即,分頁叢集CL(1,j))。此時,控制器331需判斷位於分頁叢集CL(i,j)上方的分頁叢集CL(1,j-1)、位於分頁叢集CL(i,j)右側的分頁叢集CL(2,j),以及位於分頁叢集CL(i,j)下方的分頁叢集CL(1,j+1)所包含的資料分頁使用情形。
若分頁叢集CL(i,j)位於資料區塊中非第1行、非第Ig行、非第1列亦非第Jg列的位置時,控制器331需判斷位於分頁叢集CL(i,j)上方的分頁叢集CL(i,j-1)、位於分頁叢集CL(i,j)下方的分頁叢集CL(i,j+1)、位於分頁叢集CL(i,j)左側的分頁叢集CL(i-1,j)、位於分頁叢集CL(i,j)右側的分頁叢集CL(i+1,j)所包含的資料分頁之使用情形。
若分頁叢集CL(i,j)位於資料區塊的第Ig行中,非第一列亦非第Jg列的位置時,i=Ig、j≠1、j≠Jg(即,分頁叢集CL(Ig,j))。此時,控制器331需判斷在分頁叢集CL(i,j)上方的分頁叢集CL(Ig,j-1)、位於分頁叢集CL(i,j)左側的分頁叢集CL(Ig-1,j),以及位於分頁叢集CL(i,j)下方的分頁叢集CL(Ig,j+1)所包含的資料分頁使用情形。
若分頁叢集CL(i,j)位於資料區塊的第1行與第Jg列(左下角)時,i=1,j=Jg(即,分頁叢集CL(1,Jg))。此時,控制器331需要判斷在分頁叢集CL(i,j)上方的分頁叢集CL(1,Jg-1)、位於分頁叢集CL(i,j)右側的分頁叢集CL(2,Jg)所包含的資料分頁之使用情形。
若分頁叢集CL(i,j)位於資料區塊的第Jg列中,非第一行亦非第Ig行的位置時,i≠1、i≠Ig、j=Jg(即,分頁叢集CL(i,Jg))。此時,控制器331需判斷位於分頁叢集CL(i,j)左側的分頁叢集CL(i-1,Jg)、位於分頁叢集CL(i,j)右側的分頁叢集CL(i+1,Jg)、位於分頁叢集CL(i,j)上方的分頁叢集CL(i,Jg-1)所包含的資料分頁的使用情形。
若分頁叢集CL(i,j)位於資料區塊的第Ig行與第Jg列(右下角)時,i=Ig,j=Jg(即,分頁叢集CL(Ig,Jg))。此時,控制器331需判斷在需判斷位於分頁叢集CL(i,j)上方的分頁叢集CL(Ig,Jg-1)、位於分頁叢集CL(i,j)左側的分頁叢集CL(Ig-1,Jg)所包含的資料分頁之使用情形。
請參見第37圖,其係採用棋盤式配置時,控制器因應資料所寫入的位置,確認分頁叢集的狀態是否隨著改變的流程圖。首先,判斷該筆資料是否被存放在被預設為開啟狀態CLon的分頁叢集(步驟S839a)。若步驟S839a的判斷結果為否定,代表被用於寫入該筆資料的分頁叢集是由預設的關閉狀態CLoff轉 換為開啟狀態CLon。因此,該筆資料被寫入位置處的相鄰的分頁叢集必為原本即預設為開啟狀態CLon,故流程結束。
若步驟S839a的判斷結果為肯定,控制器331將進一步判斷是否仍有預設為開啟狀態CLon的分頁叢集可供新資料寫入(步驟S839b)。若步驟S839b的判斷結果為肯定,代表控制器331還不需要判斷原本被預設為關閉狀態CLoff的分頁叢集是否符合開啟條件,故流程結束。
若步驟S839b的判斷結果為否定,控制器331便需要與該筆資料的存入位置相鄰的分頁叢集是否為開啟狀態CLon(步驟S839c)。若步驟S839c的判斷結果為肯定,代表該筆資料的寫入並不會影響其周邊的分頁叢集的狀態,則流程結束。
若步驟S839c的判斷結果為否定,代表該筆資料的寫入可能會影響其周邊的分頁叢集的狀態。此時,控制器331需判斷該筆資料的寫入位置是否影響其周邊之分頁叢集的狀態(步驟S839d)。若步驟S839d的判斷結果為否定,控制器331不需要改變分頁叢集的狀態,則流程結束。若步驟S839d的判斷結果為肯定,則須待控制器331將符合開啟條件的分頁叢集轉換為關閉狀態CLoff(步驟S839e)後,流程結束。
當然,實際應用時,控制器331還需考慮其他相關因素。例如,控制器331實際將資料存入資料分頁的過程,並不一定需要判斷周邊分頁叢集的狀態。例如,若分頁叢集包含多列、多行的資料分頁時,控制器331若將資料存入非第一列、非最後一列、非第一行、非最後一行的資料分頁時,就不需要判斷存入資料的分頁叢集的周邊的分頁叢集的狀態。又如,對位於分 頁叢集的右上角、左下角、右下角位置的資料分頁而言,與其相鄰的分頁叢集有兩個,且這兩個相鄰的分頁叢集是否滿足開啟條件的判斷各自獨立。因此,可能出現針對同樣一筆寫入的資料,控制器331將一個相鄰的分頁叢集轉換為開啟狀態CLon(即,執行步驟S839d後,判斷結果為肯定並執行步驟S839e);卻維持另一個相鄰的分頁叢集為關閉狀態CLoff(即,執行步驟S839d後,判斷結果為否定)。
請參見第38A~38H圖,其係以多筆資料寫入過程,說明如何在使用棋盤式規劃的資料區塊內,因應分頁叢集的狀態而存放資料之示意圖。此處假設控制器331將分頁叢集CL2、CL4、CL5、CL7、CL10、CL12、CL13與CL15預設為關閉狀態CLoff,且將分頁叢集CL1、CL3、CL4、CL6、CL9、CL11、CL14與CL16預設為開啟狀態CLon。
在第38A圖中,控制器331已經在原本預設為開啟狀態CLon的分頁叢集寫入資料。其中,分頁叢集CL1已用於存放資料A的多個版本(A2、A3、A4、A5);分頁叢集CL3已用於儲存資料B的多個版本(B2、B3、B4、B5)。此外,分頁叢集CL6、CL8、CL9、CL11、CL14與CL16也分別用於存放資料C、資料D、資料E、資料F、資料G、資料H的多個版本。附帶一提,在寫入資料A2、B2、C2、D2、E2、F2、G2、H2時,控制器331執行的步驟相當於第33圖的步驟S831、S832、S833、S834。寫入資料A3~A5、B3~B5、C3~C4、D3~D5、E3~E4、F3~F5、G3~G5、H3~H5時,控制器331執行的步驟相當於第33圖的步驟S831、S832、S838以及第37圖的步驟S839a、S839b。
在第38A圖的資料區塊使用表335b中,被設為關閉狀態CLoff的分頁叢集(CL2、CL4、CL5、CL7、CL10、CL12、CL13、CL15) 均以叉號標示屬於該分頁叢集的資料分頁不可用於存放資料。另一方面,對開啟狀態CLon的分頁叢集而言,每個分頁叢集內的資料分頁的使用狀態將同步更新。以分頁叢集CL1為例,因為已經使用第四個資料分頁且第四個資料分頁儲存著有效資料,所以在資料區塊使用表335中,分頁叢集CL1的編號對應於4。再以分頁叢集CL3為例,分頁叢集3對應的數字為4,代表分頁叢集內的資料分頁中,已經有四個資料分頁被陸續用於存放資料B的不同版本(B2~B5)。其餘的分頁叢集與其對應的編號、數字亦可類推而不再詳述。
當資料區塊852內,原本預設為開啟狀態CLon的分頁叢集CL1、CL4、CL5、CL7、CL10、CL12、CL13、CL15都已經被用於存放資料後,控制器331會在接收尚未寫入過資料區塊852的資料時,執行步驟第33圖的步驟S831、S832、S833、S835。當控制器331執行步驟S835時,會依照如第36圖所說明的判斷方式,判斷原本預設為關閉狀態CLoff的分頁叢集(CL2、CL4、CL6、CL8、CL9、CL11、CL14、CL16)是否滿足開啟條件。
控制器331判斷在分頁叢集CL2左側的資料分頁存有有效資料A5,因此分頁叢集CL2仍不符合開啟條件,不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL4左側的資料分頁存有有效資料B5,因此分頁叢集CL4仍不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL5上方的資料分頁存有有效資料A5、右側的資料分頁存有有效資料C4,因此分頁叢集CL5仍不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL7上方的資料分頁存有有效資料B5、左側的資料分頁尚未被使用,因此分頁叢集CL7仍不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL10上方有一個資料分頁存有有效資料 C4、一個資料分頁尚未被使用,且在其左側的一個資料分頁尚未被使用,因此分頁叢集CL10仍不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL12左側的資料分頁仍存有有效資料F5,因此分頁叢集CL12仍不能被設為開啟。控制器331判斷在分頁叢集CL13上方有一個資料分頁仍存有有效資料E4、一個資料分頁尚未被使用,因此分頁叢集CL13仍不能被設為開啟狀態CLon。控制器331判斷在分頁叢集CL15上方的資料分頁存有有效資料F5、左側的資料分頁存有有效資料G5,因此分頁叢集CL15仍不能被設為開啟狀態CLon。根據前述說明可以得知,在第38A圖中,控制器331仍然無法使用分頁叢集CL2、CL4、CL5、CL7、CL10、CL12、CL13與CL15存放資料。
在第38B圖中,假設資料A、C再度被更新。連帶地,位在分頁叢集CL1中,原本用於存放資料A5的資料分頁已經被標示為無效;位在分頁叢集CL6中,原本用於存放資料C4的資料分頁已經被標示為無效。此時,控制器331須因應資料A、C的更新而執行第33圖的步驟S831、S832、S839以及第37圖的步驟S839a、S839b、S839c、S839d。在此同時,資料區塊使用表中,分頁叢集CL1以叉號表示,且與分頁叢集CL6對應於4。
在分頁叢集CL1中,原本用於存放資料A5的資料分頁與分頁叢集CL2、CL5相鄰。因此,當存放資料A5的資料分頁被標示為無效時,控制器331需判斷分頁叢集CL2、CL5的狀態是否需要改變。在分頁叢集CL6中,原本用於存放資料C4的資料分頁與分頁叢集CL5、CL10相鄰。因此,當存放資料C4的資料分頁被標示為無效時,控制器331需判斷分頁叢集CL5、CL10的狀態是否需要改變。
據此,在第38B圖中,隨著資料A、C的更新,控制器331須判斷分頁叢集CL2、CL5、CL10是否可被啟用。如第38B圖所示,分頁叢集CL2、CL4、CL5、CL7、CL10、CL12、CL13、CL15原本為關閉狀態CLoff。然而,隨著資料A、C被更新的緣故,控制器331確認在這些被設為關閉狀態CLoff的分頁叢集中,分頁叢集CL2、CL5可轉換為開啟狀態CLon,而分頁叢集CL10尚不可轉換為開啟狀態CLon。即,隨著資料A、C被更新,控制器S839d執行步驟S839d的判斷結果可能分為兩類,一類為執行步驟S839e的分頁叢集CL2、CL5,另一類則是不改變狀態的分頁叢集CL10。另一方面,對分頁叢集CL4、CL7、CL12、CL13、CL15而言,因為與其相鄰的資料分頁的狀態並未更新,所以分頁叢集CL4、CL7、CL12、CL13、CL15仍維持為關閉狀態CLoff。
比較第38A、38B圖可以看出,控制器331在判斷哪些分頁叢集的狀態可以轉換時,並不是依據分頁叢集在資料區塊852的位置而決定,而是更具在那些位置上的資料分頁隨著資料的更新而被標示為無效而判斷。換言之,控制器331會依據資料的更新,判斷有哪些分頁叢集會因應該些資料更新而須重新判斷相關的分頁叢集的開啟狀態CLon。
請同時參看第38B、38C圖。因為在第38B圖中,控制器331判斷分頁叢集CL2、CL5可被啟用,因此,在第38C圖中,分頁叢集CL2、CL5均被開啟(由格狀網底改變為無網底),且在資料區塊使用表中,分頁叢集CL2、CL5對應於0。
在第38C圖中,假設資料C、F、G再度被更新。連帶地,位在分頁叢集CL6中,原本用於存放資料C5的資料分頁已經被標示為無效;位在分頁叢集CL11中,原本用於存放資料F5的資料分頁已經被 標示為無效;以及,位在分頁叢集CL14中,原本用於存放資料G5的資料分頁已經被標示為無效。在此同時,資料區塊使用表中,分頁叢集CL6、CL11、CL14均以叉號表示。
在分頁叢集CL1中,原本用於存放資料C5的資料分頁與被預設為關閉狀態CLoff的分頁叢集CL7、CL10相鄰。因此,當存放資料C5的資料分頁被標示為無效時,控制器331需判斷分頁叢集CL7、CL10的狀態是否需要改變。在分頁叢集CL11中,原本用於存放資料F5的資料分頁與分頁叢集CL12、CL15相鄰。因此,當存放資料F5的資料分頁被標示為無效時,控制器331需判斷分頁叢集CL12、CL15的狀態是否需要改變。在分頁叢集CL14中,原本用於存放資料G5的資料分頁同樣與分頁叢集CL15相鄰。因此,當存放資料G5的資料分頁被標示為無效時,控制器331需判斷分頁叢集CL15的狀態是否需要改變。據此,在第38C圖中,隨著資料C、F、G的更新,控制器331須判斷分頁叢集CL7、CL10、CL12、CL15是否可被啟用。關於控制器331判斷分頁叢集CL7、CL10、CL12、CL15是否符合開啟條件並可被轉換為開啟狀態CLon的細節此處不再詳述。
如第38C圖所示,分頁叢集CL4、CL7、CL10、CL12、CL13、CL15原本為關閉狀態CLoff。然而,隨著資料C、F、G被更新的緣故,控制器331確認在這些被設為關閉狀態CLoff的分頁叢集中,分頁叢集CL15可轉換為開啟狀態CLon,而分頁叢集CL7、CL10、CL12、CL15尚不可轉換為開啟狀態CLon。另一方面,對分頁叢集CL4而言,因為與其相鄰的資料分頁的狀態並未更新,所以分頁叢集CL4仍維持為關閉狀態CLoff。
請同時參看第38C、38D圖。因為在第38C圖中,控制器331判斷分頁叢集CL15可被啟用,因此,分頁叢集CL15由第38C圖的格狀網底改變為第38D圖的無網底。且,在第38D圖的資料區塊使用表中,分頁叢集CL15對應於0。
在第38D圖中,假設資料D、E、I、J再度被更新。其中,控制器331執行第33圖的步驟S831、S832、S833、S835、S836以寫入資料I2、J2。因此,資料I2、J2被控制器331存放在開啟後的分頁叢集CL2、CL5的資料分頁。連帶的,在第38D圖的資料區塊使用表中,分頁叢集CL2對應於1,且分頁叢集CL5對應於1。由於資料I2、J2被存放在原先預設為關閉狀態CLoff並經轉換為開啟狀態CLon的分頁叢集內,代表資料I2、J2並不涉及分頁叢集的轉換狀態的判斷。因此,控制器331並不需要判斷有哪些分頁叢集與存放資料I2、J2的資料分頁相鄰。
此外,位在分頁叢集CL8中,原本用於存放資料D5的資料分頁已經被標示為無效;位在分頁叢集CL9中,原本用於存放資料E4的資料分頁被標示為無效,且資料E5儲存於分頁叢集Cl9的另一個資料分頁。接著,控制器331需判斷資料D、E的更新是否影響相關的分頁叢集的開啟狀態CLon。
在分頁叢集CL8中,原本用於存放資料D5的資料分頁與被預設為關閉狀態CLoff的分頁叢集CL12相鄰。因此,控制器331需判斷分頁叢集CL12的狀態是否需要改變。在分頁叢集CL9中,原本用於存放資料E4的資料分頁與分頁叢集CL13相鄰。因此,控制器331需判斷分頁叢集CL13的狀態是否需要改變。據此,在第38D圖中,隨著資 料D、E的更新,控制器331判斷分頁叢集CL12可被啟用,但分頁叢集CL13尚無法啟用。
承上,在第38D圖中,控制器331已經確認分頁叢集CL12可轉換為開啟狀態CLon,因此,在第38E圖中,分頁叢集CL12未以網底標示,且在資料區塊使用表中,分頁叢集CL12對應於0。另須留意的是,無論是因為更新資料或是判斷分頁叢集可轉換為開啟狀態CLon之判斷結果等。控制器331都需要同步更改在資料區塊使用表的相關紀錄。
關於第38E~38H圖的細節均可類推前述說明得出,此處不再詳述。簡言之,在第38E圖中,隨著資料E的更新,儲存資料E5的資料分頁被設為無效,連帶使分頁叢集CL10、CL13符合開啟條件。因此,在第37F圖中,分頁叢集CL10、CL13被設為開啟狀態CLon。在第37F圖中,隨著資料B的更新,儲存資料B5的資料分頁被設為無效,連帶使分頁叢集CL4、CL7可轉換為開啟狀態CLon。因此,在第38G圖中,分頁叢集CL4、CL7被設為開啟狀態CLon。在第38G圖中,所有原本被預設為關閉狀態CLoff的分頁叢集已經全部轉換為開啟狀態CLon,並陸續用於儲存新的資料。在第38H圖中,分頁叢集CL4、CL7也開始用於儲存資料O、P的更新版本。
由第38A~38H圖可以看出,控制器331使用原本預設為開啟狀態CLon的分頁叢集CL1、CL3、CL4、CL6、CL9、CL11、CL14與CL16存放資料時,會依照該些分頁叢集在資料區塊的排列順序,由左而右、由上而下先後用於存放資料。
另一方面,對原本預設為關閉狀態CLoff的叢集分頁叢集CL2、CL4、CL5、CL7、CL10、CL12、CL13與CL15而言,其轉換 為開啟狀態CLon的順序會受到那些資料被更新、被更新之資料的位置等因素而影響。也就是說,原本預設為關閉狀態CLoff的叢集分頁叢集CL2、CL4、CL5、CL7、CL10、CL12、CL13與CL15實際轉換為開啟狀態CLon的順序並不是依照該些分頁叢集在資料區塊的排列位置而決定。
承上,本揭露的實施例基於全盤性的考量,針對記憶體裝置在在寫入階段、垃圾回收階段、讀取階段等面向加以管理。在考慮這些面向後提出的資料管理方法,能確保記憶體裝置能以較有效率的方式達到資料清除的目的。
首先,根據本揭露構想的實施例,基於以資料分頁作為資料清除時的基本單位的作法,於記憶體裝置內提供擦除操作的功能。據此,控制器331可評估使用抹除操作與使用擦除操作所需的時間較短後,以較有效率的方式進行資料清除。
再者,為使擦除操作的執行效率提升,本揭露的實施例進一步提出以分頁叢集管理資料存放的作法。藉由分頁叢集的設置,同一筆資料的不同版本會儲存在資料區塊內的同一個分頁叢集內。其後,若需要對該筆資料的過時版本時,便可基於在分頁叢集內的資料分頁彼此相鄰的特性,大幅縮短執行擦除操作所需的時間。
此外,本揭露還針對資料更新頻率所對應的熱度,動態調整存放資料所使用的分頁叢集。據此,記憶體區塊可提供較合適的分頁叢集儲存資料。當一筆資料熱度較高時,將該筆資料存入至包含資料分頁數量較多的分頁叢集;當該筆資料熱度較低時,則將該筆資 料存入至包含資料分頁數量較少的分頁叢集內。
更進一步的,本揭露的實施例還提出棋盤式規劃的方式,避免資料分頁所儲存的內容受到相鄰的資料分頁進行存取所干擾。因此,本揭露能在有效率的清除資料,達到資料安全的目的的同時,維持資料的正確性。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。

Claims (9)

  1. 一種記憶體裝置,包含:一記憶體陣列,包含:一第一儲存區域,對應於一第一資料層級,其中該第一儲存區域係包含排列為一I1行與一J1列的複數個第一子區域叢集,且各該第一子區域叢集係包含排列為一O1行與一P1列的複數個子區域,其中I1、J1、O1與P1係與該第一資料層級相關;以及一第二儲存區域,對應於一第二資料層級,其中該第二儲存區域係包含排列為一I2行與一J2列的複數個第二子區域叢集,且各該第二子區域叢集係包含排列為一O2行與一P2列的複數個子區域,其中I2、J2、O2與P2係與該第二資料層級相關,且該等第一子區域叢集的數量大於該等第二子區域叢集的數量;以及一控制器,電連接於該記憶體陣列,其中,該控制器係利用該等第一子區域叢集中的一第一第一子區域叢集以及該等第二子區域叢集中的一第一第二子區域叢集之其中一者存取一第一資料,其中該控制器係隨著該第一資料的更新頻率而將該第一資料存放於該第一第一子區域叢集與該第一第二子區域叢集之一者,且該控制器係利用該等第一子區域叢集中的一第二第一子區域叢集以及該等第二子區域叢集中的一第二第二子區域叢集之 其中一者存取一第二資料,其中該第一第一子區域叢集在該第一儲存區域中的位置,與該第二第一子區域叢集在該第一儲存區域中的位置不相鄰,其中,I1、I2、J1、J2、O1、O2、P1與P2均為正整數,I1與O1的乘積等於I2與O2的乘積,且J1與P1的乘積等於J2與P2的乘積。
  2. 如申請專利範圍第1項所述之記憶體裝置,其中,當該第一資料的更新頻率較低時,該控制器係將該第一資料存放於該第一第一子區域叢集所包含的該等個子區域中的一者;以及當該第一資料的更新頻率較高時,該控制器係將該第一資料存放於該第一第二子區域叢集所包含的該等個子區域中的一者。
  3. 如申請專利範圍第2項所述之記憶體裝置,其中,隨著該第一資料的更新,該控制器將該第一資料存放於該第一第二子區域叢集,並將該第一第一子區域叢集所包含的該等子區域標示無效的子區域。
  4. 如申請專利範圍第3項所述之記憶體裝置,其中,該控制器係透過下列兩種指令之一者,清除在該第一第一子區域叢集中,被標示為無效的子區域:對該第一儲存區域執行一抹除指令;以及對該第一第一子區域叢集所包含之該等子區域執行一擦除指令。
  5. 如申請專利範圍第4項所述之記憶體裝置,其中該控制器係透過該擦除指令,依照一列方向遞增與一行方向遞增的順序而擦除該第一第一子區域叢集所包含之該等子區域的內容。
  6. 如申請專利範圍第1項所述之記憶體裝置,其中當該控制器將該第一資料存放於該第一第一子區域叢集所包含的該O1行與P1列的該等個子區域中的一者時,該控制器係隨著該第一資料的更新,依照一列方向遞增與一行方向遞增的順序儲存該第一資料。
  7. 一種應用於記憶體裝置的資料管理方法,應用於包含一第一儲存區域與一第二儲存區域的一記憶體陣列,其中該第一儲存區域與該第二儲存區域係分別對應於一第一資料層級與一第二資料層級,其中該第一儲存區域係包含排列為一I1行與一J1列的複數個第一子區域叢集,且各該第一子區域叢集係包含排列為一O1行與一P1列的複數個子區域,其中該第二儲存區域係包含排列為一I2行與一J2列的複數個第二子區域叢集,且各該第二子區域叢集係包含排列為一O2行與一P2列的複數個子區域,其中該等第一子區域叢集的數量大於該等第二子區域叢集的數量,且該資料管理方法係包含以下步驟:利用該等第一子區域叢集中的一第一第一子區域叢集以及該等第二子區域叢集中的一第一第二子區域叢集之其中一者存取一第一資料; 隨著該第一資料的更新頻率而將該第一資料存放於該第一第一子區域叢集與該第一第二子區域叢集之一者;以及利用該等第一子區域叢集中的一第二第一子區域叢集以及該等第二子區域叢集中的一第二第二子區域叢集之其中一者存取一第二資料,其中該第一第一子區域叢集在該第一儲存區域中的位置,與該第二第一子區域叢集在該第一儲存區域中的位置不相鄰,其中I1、J1、O1與P1係與該第一資料層級相關,而I2、J2、O2與P2係與該第二資料層級相關,其中,I1、I2、J1、J2、O1、O2、P1與P2均為正整數,I1與O1的乘積等於I2與O2的乘積,且J1與P1的乘積等於J2與P2的乘積。
  8. 如申請專利範圍第7項所述之資料管理方法,其中更包含以下步驟:當該第一資料的更新頻率較低時,將該第一資料存放於該第一第一子區域叢集所包含的該等個子區域中的一者;以及當該第一資料的更新頻率較高時,將該第一資料存放於該第一第二子區域叢集所包含的該等個子區域中的一者。
  9. 如申請專利範圍第8項所述之資料管理方法,其中更包含以下步驟:隨著該第一資料的更新,將該第一資料係存放於該第一第二子區域叢集;以及, 將該第一第一子區域叢集所包含的該等子區域標示為無效的子區域。
TW106136746A 2017-10-25 2017-10-25 記憶體裝置及應用於其上之資料管理方法 TWI629592B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW106136746A TWI629592B (zh) 2017-10-25 2017-10-25 記憶體裝置及應用於其上之資料管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106136746A TWI629592B (zh) 2017-10-25 2017-10-25 記憶體裝置及應用於其上之資料管理方法

Publications (2)

Publication Number Publication Date
TWI629592B true TWI629592B (zh) 2018-07-11
TW201917583A TW201917583A (zh) 2019-05-01

Family

ID=63640664

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106136746A TWI629592B (zh) 2017-10-25 2017-10-25 記憶體裝置及應用於其上之資料管理方法

Country Status (1)

Country Link
TW (1) TWI629592B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI671631B (zh) * 2018-08-01 2019-09-11 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
TWI696073B (zh) * 2019-04-02 2020-06-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN111813325A (zh) * 2019-04-12 2020-10-23 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
US11222693B2 (en) 2020-05-27 2022-01-11 Macronix International Co., Ltd. Data management method for memory and memory apparatus using the same

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI770668B (zh) * 2019-11-25 2022-07-11 旺宏電子股份有限公司 類神經網路的運算方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8130554B1 (en) * 2008-09-29 2012-03-06 Emc Corporation Securely erasing flash-based memory
CN102498522A (zh) * 2009-09-15 2012-06-13 国际商业机器公司 用于减小固态器件中的写入放大的容器标记方案
CN103458023A (zh) * 2013-08-30 2013-12-18 清华大学 分布式闪存存储系统
TW201719663A (zh) * 2015-11-25 2017-06-01 Macronix Int Co Ltd 資料配置方法及應用其之電子系統

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8130554B1 (en) * 2008-09-29 2012-03-06 Emc Corporation Securely erasing flash-based memory
CN102498522A (zh) * 2009-09-15 2012-06-13 国际商业机器公司 用于减小固态器件中的写入放大的容器标记方案
CN103458023A (zh) * 2013-08-30 2013-12-18 清华大学 分布式闪存存储系统
TW201719663A (zh) * 2015-11-25 2017-06-01 Macronix Int Co Ltd 資料配置方法及應用其之電子系統

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI671631B (zh) * 2018-08-01 2019-09-11 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
US10642731B2 (en) 2018-08-01 2020-05-05 Shenzhen Epostar Electronics Limited Co. Memory management method and storage controller
TWI696073B (zh) * 2019-04-02 2020-06-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN111813325A (zh) * 2019-04-12 2020-10-23 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
CN111813325B (zh) * 2019-04-12 2023-06-27 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
US11222693B2 (en) 2020-05-27 2022-01-11 Macronix International Co., Ltd. Data management method for memory and memory apparatus using the same

Also Published As

Publication number Publication date
TW201917583A (zh) 2019-05-01

Similar Documents

Publication Publication Date Title
TWI629592B (zh) 記憶體裝置及應用於其上之資料管理方法
CN101278267B (zh) 具有经调度回收操作的非易失性存储器
KR100849221B1 (ko) 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US8566504B2 (en) Dynamic metablocks
US5860082A (en) Method and apparatus for allocating storage in a flash memory
US8312203B2 (en) Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
US7818493B2 (en) Adaptive block list management
EP2565792B1 (en) Block management schemes in hybrid SLC/MLC memory
EP1856616B1 (en) Scheduling of housekeeping operations in flash memory systems
JP4738038B2 (ja) メモリカード
KR101089150B1 (ko) 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리
CN101147133A (zh) 闪速存储器中的直接文件数据编程及删除
CN101164037A (zh) 闪速存储器中的直接数据文件存储
CN101382918A (zh) 一种基于数据交换区的NAND Flash闪存优化管理方法
CN110531927B (zh) 一种基于块分级的垃圾回收方法及非易失性的存储设备
KR20090088858A (ko) 최악의 경우 제어 데이터 관리를 사용하는 비휘발성 메모리 및 관리 방법
CN114968096A (zh) 一种存储器的控制方法、存储器与存储系统
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN117555478A (zh) 一种基于闪存的模拟eeprom读写方法
CN109710173B (zh) 存储器装置及应用于其上的数据管理方法
CN106205706A (zh) 存储器装置与其相关的抹除方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
CN114610228A (zh) 文件管理系统及其文件管理方法、装置