TWI668571B - 快閃記憶體裝置之記憶體控制方法 - Google Patents
快閃記憶體裝置之記憶體控制方法 Download PDFInfo
- Publication number
- TWI668571B TWI668571B TW107100775A TW107100775A TWI668571B TW I668571 B TWI668571 B TW I668571B TW 107100775 A TW107100775 A TW 107100775A TW 107100775 A TW107100775 A TW 107100775A TW I668571 B TWI668571 B TW I668571B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- sector
- sectors
- flash memory
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種快閃記憶體裝置存取控制方法,適用於一具有將複數扇區分割成複數區塊之快閃記憶體裝置,包括:接收一虛擬區塊位址;基於一預設程式,計算可用於儲存具有該虛擬區塊位址之資料之一可能扇區集合;讀取該可能扇區之集合中每一扇區之元資料,其中一扇區之該元資料包括該扇區中每一區塊之訊息,該訊息顯示該區塊是否正為使用以及儲存於該區塊之該資料之虛擬區塊位址;當該資料係儲存於該可能扇區中的一扇區或是當一區塊為配置以儲存該資料,判斷該虛擬區塊位址之實體區塊位置;其中每一虛擬區塊位址相對應之可能扇區之集合為不同的。
Description
本揭露係有關於控制一快閃記憶體之記憶體使用以增加存取速度。
一般而言,反及(NAND)與反或(NOR)兩種類型的技術被使用於製造快閃記憶體。NAND快閃記憶體之常見特性為具有長列的位元,且一次被寫入一整列。縱使僅改變一列中之一位元,該整列仍續被讀入緩衝區、更正後再將整列寫回。相反地NOR快閃記憶體允許將0值寫入任記憶體裝置中的任何實體位元位置,以及當將一扇區抹除(包括複數位元,例如一列)時將值設為1。。在快閃記憶體中抹除或更新資料(意即將0改回1)為相對較昂貴之動作且影響到相對較大的記憶體區域(扇區)。抹除較少實體單位,如一位元、位元組或字組的方法並不存在。
一於快閃記憶體中較容易重寫資料之可能方法為用相同之邏輯位址取代另一實體位置。因此於一給定的邏輯位址將數值改寫,係執行下列步驟:
1.尋找該邏輯位址目前所指向之實體位置
2.搜尋並指定一新實體位置給該邏輯位址
3.將該更新數值寫入該新實體位置
一般而言一快閃記憶體可包括複數個扇區(sector),該複數個扇區進而被切分為複數個具有預定容量大小之區塊(block)。任何位置可由一扇區號碼與該扇區之一區塊偏移量(offset)所表示。一記憶體管理單位連結實體區塊和虛擬區塊,每一虛擬位址可如下轉譯為一實體位置: (實體位址)=(相關聯之實體扇區的位址)+(該扇區內之區塊偏移量)。
對每一實體區塊,該快閃記憶體儲存若干旗標以表示該區塊是否為空置(未被使用)、已連結(已被使用)或是過期(曾被使用且資料已被取消或是轉移至一新區塊)。如果該區塊已被連結,被連結之虛擬區塊之數目也會被存於快閃記憶體中。
當該記憶體中一位置之內容為更新,以下步驟被實施:
1.在上述位置相關聯於該虛擬區塊之全體實體區塊之已更新內容被複製至另一實體區塊。
2.因此該區塊關聯映射被更新,意即前一實體區塊被標記為未連結或過時,而新區塊被標記為連結至該關聯的虛擬區塊。
因此,為尋找目前關聯於一給定虛擬區塊之實體區塊,快閃記憶體管理單位必須掃描全體記憶體陣列以尋找現時標示為連結該目前虛擬區塊位址之實體區塊。在實際應用中,其為一可在快閃記憶體初始時對所有虛擬區塊位址執行一次 的耗時程序。映射訊息以一大型查看表的形式儲存於一隨機存取記憶體,該大型查看表包括條目以對應每一虛擬區塊。當使用一大容量之快閃記憶體,該查看表可能為龐大的且使用許多隨機存取記憶體之容量。
本揭露一實施例之一方面係有關於於一快閃記憶體中管理資料儲存之一系統與方法。該記憶體裝置包括一記憶體管理單元以及一扇區組成之陣列,其中每一扇區包括複數個區塊。每一扇區同時包括每一區塊之元資料(meta-data)。該元資料用以提供該資料區塊一虛擬位址,以及複數旗標,該等旗標用以指出該區塊為空置或是具有內容,以及該內容是否現時連結至該虛擬位址或是已無連結關係。該記憶體管理單元係設置為接收一虛擬位址以及轉譯該位址為一扇區索引(sector index)以及該扇區內之區塊偏移量(block offset)。該記憶體管理單元使用一於該虛擬位址上啟動之方程式以計算該區塊被允許存放之一扇區索引之集合。該記憶體管理單元接著讀取該扇區之元資料以定位該區塊之實體位址。當更新一連結區塊之內容時,該資料被寫入一依據該虛擬位址計算出之扇區索引集合內之一新區塊,且該元資料也為更新。
對每一虛擬位址而言扇區索引集合為獨一無二的,因此兩個虛擬位址永遠會有至少一扇區為不同。可選擇性地,該方程式可更具有限制性,使兩虛擬位址之扇區索引集合至多只有一扇區重複。在本揭露之一實施例中,該集合中扇區索引之數目為2、4或8以使其可被一、二或三位元所表示。
因此依據本揭露之一實施例提供一種快閃記憶體裝置存取控制方法,適用於一具有將複數扇區分割成複數區塊之快閃記憶體裝置,包括:接收一虛擬區塊位址;基於一功能,計算可用於儲存具有該虛擬區塊位址之資料之一可能扇區集合;讀取該可能扇區之集合中每一扇區之元資料,其中一扇區之該元資料包括該扇區中每一區塊之訊息,該訊息只是該區塊是否正使用中以及儲存於該區塊之資料之虛擬區塊位址;當該資料係現時儲存於該可能扇區中的一扇區或是當一區塊配置用以儲存該資料,判斷該虛擬區塊位址之實體區塊位址;其中每一虛擬區塊位址之可能扇區之集合為不同的。
依據本揭露之一實施例另外提供一中快閃記憶體,包括:一記憶體管理單元;一扇區陣列,其中每一扇區被分割為複數個記憶體的區塊;其中該記憶體管理單元係設置為:接收一虛擬區塊位址;基於一預設功能,計算一可能扇區集合,該可能扇區集合可基於一預設方程式儲存具有該虛擬區塊位址之資料;讀取該可能扇區集合中每一扇區之元資料,其中一扇區之該元資料包括給該扇區每一區塊以指出該區塊是否正使用中 之訊息以及儲存於該區塊之該資料之該虛擬區塊位置的訊息;當該資料為現時存於該可能扇區中一區塊或一區塊為現時指定為儲存該資料時,判斷該虛擬區塊位置之該實體區塊位置;其中對每一虛擬區塊位址,該可能扇區集合為不同的。
在本揭露之一實施例中,上述之控制一快閃記憶體裝置之方法係藉由儲存於一非揮發性儲存媒體之程式碼所實現。
100‧‧‧快閃記憶體
105‧‧‧記憶體陣列
110‧‧‧區塊
120‧‧‧扇區
130‧‧‧元資料區塊
140‧‧‧元資料紀錄
142‧‧‧位元
144‧‧‧位元
145‧‧‧最高有效部分
146‧‧‧位元
147‧‧‧最低有效部分
148‧‧‧區塊位址
150‧‧‧記憶體管理單元
160‧‧‧虛擬位址
200‧‧‧方法
210-240‧‧‧步驟
300‧‧‧方法
310-340‧‧‧步驟
第1A圖係為本揭露一實施例之快閃記憶體之示意圖。
第1B圖係為依據本揭露一實施例之快閃記憶體之一扇區結構之示意圖。
第1C圖係為依據本揭露一實施例之快閃記憶體之一扇區之元資料內容之示意圖。
第2圖係為依據本揭露一實施例之一依據一虛擬位址存取一實體區塊之方法之流程圖。
第3圖係為依據本揭露一實施例之一依無用資料蒐集方法之流程圖。
請參閱第1A圖。在本揭露之一實施例中,快閃記憶體100包括一記憶體管理單元150和一記憶體陣列105。記憶體陣列105包括複數個扇區110,其中扇區110係作為將該扇區內容中需要被初始化而將位元0改回位元1時之基本單位。 可選擇性地,每一扇區110被分割為複數記憶體儲存區塊120。每一實體區塊120可儲存一記憶體管理單元150所指定之虛擬位址160之資料。可選擇性地,當提供一虛擬位址160給快閃記憶體100時,記憶體管理單元150接收該虛擬位址160並決定資料被儲存(例如執行一讀取動作)或是應被儲存(例如一寫入動作中一新的且為使用的陣列)之該實體扇區之號碼與該實體扇區內之區塊號碼。在本揭露之一實施例中,記憶體管理單元150可包括理器與記憶體以執行計算。
在本揭露之一實施例中,用於儲存具有一特定虛擬位址160之資料之一區塊之扇區110為限制於一預設數目之扇區(例如4~8個扇區),該些扇區之位置可為一方程式計算出。基於一虛擬位址160存取一特定區塊120僅需要檢查被計算出之扇區,而不需要維持一查看表或是搜尋快閃記憶體100中所有的扇區110。此方法可加速快閃記憶體100之存取不需要使用大量的記憶體。
請參閱第1B圖,每一扇區110包括複數個區塊120以及每一區塊120之元資料(meta-data)。在本揭露之某些實施例中,該元資料係儲存於每一區塊120中,例如在每一該區塊開頭處與結尾處的指定位元集(a set of preserved bits)中。可選擇地,每一扇區110包括用於該儲存扇區110內之所有區塊的一元資料區塊130(例如扇區110之第一個或最後一個區塊包含整體該扇區110之元資料)。
請參閱第1C圖配合第1A圖與第1B圖。可選擇性地,當寫入資料至一區塊120時,一相對應之元資料紀錄140 被寫入元資料區塊130。在本揭露之一實施例中,該元資料紀錄140包括下列資訊:該區塊120之虛擬位址160,以及指出該區塊120在該扇區110最近一次初始化/再初始化後之狀態的2或3個位元,例如:
1.一位元142表示其相對應之區塊是否為空白(例如”1”表示該相對應之區塊120從未被使用過,”0”表示該相對應之區塊120曾被使用過)。
2.一位元144表示相對應區塊120中之內容是否現時為連結至一虛擬位址160,亦或已被取消,例如該區塊並非現時為連結至虛擬位址160,而另一新區塊存有該虛擬位址160之資料(例如”1”為連結,”0”為非連結意即過期)。
3.一位元146提供其他選擇性標示。
在本揭露之一實施例中,該元資料記錄140的其餘部分包括位址位元148,提供儲存於該扇區110內相對應區塊120之區塊之虛擬位址160。可選擇性地,該位址可視為由一最高有效部分145與一最低有效部分147所組成。在本揭露之某些實施例中,使用該方程式與該最低有效部分147即足以辨識該相對應區塊120內資料之虛擬位址160。詳細的解說如下所示。
在本揭露之一實施例,限制快閃記憶體內一區塊資料之存放位置的方程式(例如指定為Hab(v),v為虛擬位置160)係定義為以提供一可儲存資料區塊之扇區位址的集合(例如實體位址SI1、SI2、SI3、SI4提供給具有索引編號I1、I2、I3、I4之扇區)。可選擇性地,該方程式設計為具有互斥性以使二 虛擬位址160不會將不同的資料區塊完全儲存於同一扇區集合,而是至少會有一扇區為不同(亦即不共享)。
在本揭露之一實施例中,該方程式具有更嚴格的限制性以使二虛擬位址160(即V1≠V2)不會具有超過一相同之扇區。在一示範用之實施例,我們檢視一具有512個扇區110之快閃記憶體100,其中每一扇區110具有16個區塊120。15個區塊120係用於資料儲存以及1個區塊120用於儲存該扇區內區塊之元資料。可選擇性地,每一區塊包括至少256位元(具有元資料所需之足夠空間),因此本實施例之快閃記憶體之容量為至少256千位元組或是更大(512*16*256/8)。在此範例中虛擬區塊位址160為13位元長而扇區索引(如I1、I2、I3、I4)為9位元長(對512個扇區而言)。該13位元長之位址被切分為7個最高有效位元a7以及6個最低有效位元a6。
,a 6(v)=v%64;一方程式f(v)係定義為:f(v)為一7位元方程式,當a 6(v 1)=a 6(v 2)以及f(v 1)=f(v 2),則v 1=v 2。
我們使用f(v)=a 7(v)♁2a 6(v)。
此外我們定義i j (v)=j*27+(f(v)+j*a 6(v))%27為扇區索引所使用的9位元(例如4個可能扇區;j=1 to 4)。
第2圖為依據本揭露之一實施例之一依據虛擬位址160存取一實體區塊之方法200的流程圖。在本揭露之一實施例中,當要求讀取虛擬位址160之一區塊或是寫入虛擬位址160之一區塊時,記憶體管理單元150接受該虛擬區塊位址 160(步驟210)並計算區塊120可能實體儲存之扇區(具有索引I1、I2、I3、I4)(步驟220)。可選擇性地,記憶體管理單元150讀取該可能扇區之元資料區塊(步驟230)以判斷該虛擬區塊160所對應之實體區塊位址(SIj+該扇區之區塊偏移量Ij)(步驟240)。對一讀取動作,該虛擬位址140會顯示於該等可能扇區110中資料區塊130之元資料紀錄140之一中的區塊位址148。當寫入一需要重新寫入(例如將位元0改為位元1)之現存區塊,元資料紀錄140中的連結位元144會被標示為0(非連結),該等可能扇區110中一未使用區塊120會被用於儲存該已更新之資料區塊。舊區塊與新區塊之元資料紀錄140會為更新以反映此變化。在本揭露之一實施例,如果一扇區110內之所有區塊120皆標示為未連結,由於並無區塊120包含活躍資料(active data),整個該扇區可為重新初始化以為未來使用。
在本揭露之一實施例,該方程式(Hab(v))為設計以使虛擬位址160可藉由Hab(v)所提供之扇區索引(例如I1、I2、I3、I4)以及v之部分位元(如位元147中儲存之罪第有效位元)重建。因此僅有虛擬位址140之部分需要儲存於元資料紀錄140,以及/或當檢查位址時被讀取。依據上述之示範實施例,v可藉由下列計算Ij和a6重建: ,d=a 7♁2a 6=(i j -j*a 6)%27,a 7=d♁2a 6.
v=a 7*64+a 6
可選擇性地,元資料紀錄140中的位址148可僅儲存最低有效位元147以使元資料區塊130可小於256位元(亦即一區塊僅使用8位元而非16位元,因此15區塊約使用120 位元)。
在本揭露之一實施例中,快閃記憶體需要偶爾執行無用數據蒐集以移除不再使用的區塊120。可選擇性地,記憶體管理單元150可定期檢查快閃記憶體中的扇區以定位缺乏空閒區塊之扇區(例如具有少於一預定閥值數目的空閒區塊,如於一扇區中少於4、3或2個空閒區塊)以執行無用數據蒐集。
第3圖為依據本揭露之一實施例之一無用數據蒐集方法300之流程圖。可選擇性地,一扇區之無用數據蒐集程序包括:
1.於步驟310,判斷該扇區中每一連結區塊的虛擬位址160。
2.於步驟320,依據該虛擬位址160,計算每一連結資料區塊可被儲存之可能扇區集合之索引。
3.在步驟330,將每一資料區塊自該扇區移動到另一可能扇區(如具有最少已使用區塊)以清除該目前扇區,該另一可能扇區為該虛擬位址160之扇區集合之一。
4.在步驟340,重新初始化該扇區(例如將其內容重設為1)。
在本揭露的某些實施例中,當一扇區110被要求一未使用的區塊120,而該扇區110中並沒有未使用的區塊120時,則在該扇區110執行無用數據蒐集程序。
在本揭露的某些實施例中,當一新資料區塊依據其虛擬位址160被寫入一扇區110,該虛擬位址160之連結扇 區集合之所有可能扇區皆被掃描以判定該虛擬位址160之所有剩餘未使用區塊之數目。如果該未使用區塊數目小於一預定值,則一或多個扇區被標定為無用數據蒐集程序。可選擇性地,當記憶體管理單元150為閒置時,其可於上述扇區110執行無用數據蒐集程序。
應當注意的是上述之扇區、區塊、位元數目和一集合中扇區之數目僅為舉例用途,而可用不同之數值取代。
下述附錄A提供一範例數學表示以定義方程式Hab。附錄B提供一範例虛擬程式碼(使用python標示)以實現本揭露之儲存方法。可選擇性地,該程式碼可儲存於一非揮發性記憶體。在本揭露之一實施例,該程式碼為提供給記憶體管理單元150以控制快閃記憶體陣列105之存取。
應當理解的是上述方法與裝置可具有多種變化,包過省略或是增加之步驟,改變步驟之順序以及使用的裝置。應當理解的是不同的特徵可能以不同的方式結合。尤其是並非上述特定一實施例之所有特徵在本揭露的所有實施例中為必須的。上述特徵之其他未來組合也被認為是位於本揭露之某些實施例的範疇中。具本領域通常知識者應了解本揭露並不限定於上述之內容。
【附錄A】
對一自然數A,我們標示
目的為建立一方程式,在n 1≠n 2時
1.對一正數△,我們考慮下列形式的方程式 H(n,i)=i*△+(f(n)+i*g(n))%△。
2.同時我們選擇方程式以及使得 f(n 1)=f(n 2),g(n 1)=g(n 2) n 1=n 2 。
上述選擇同時意謂
˙H(n 1,i)=H(n 2, j )僅在i=j時才可能發生
˙△2 N,K*△ M
假設i>j,我們可得H(n 1,i)=H(n 2,i)以及H(n 1,j)=H(n 2,j),因此f(n 1)+i*g(n 1) f(n 2)+i*g(n 2)
f(n 1)+j*g(n 1) f(n 2)+j*g(n 2)
其中我們表示將(A-B)%△=0表示為A B
這意謂著f(n 1)-f(n 2) i*(g(n 2)-g(n 1)),f(n 1)-f(n 2) j*(g(n 2)-g(n 1))
進而可得0(i-j)*(g(n 2)-g(n 1))
為了避免超過一次的牴觸,我們必須確保上述等式滿足n 1=n 2或是i=j。
注意g(n 1)-g(n 2)0,意指f(n 1)-f(n 2)0,進而意指n 1=n 2。
1.我們可以選擇△使任何k,k {2,...,K-1},不能整除△.因此上述恆等式即意謂i=j。
2.如果需要△為2的次方,我們可以,例如選擇K=4並選擇g使其滿足g(n)<△/2.因此僅有i-j=2整除△,但 2*(g(n 2)-g(n 1))<△。
讓我們舉例示範第一種方法:取N=8000,則△=91可行(91*91=8281).上述數值允許取K=7,M=91*7=637,因為任何k,k {2,...,6}不能整除91=13*7。
我們可取f(n)=n%91,,H(n,i)=91*i+(f(n)+i*g(n))%91。
【附錄B】
def logical_block_ind(lut_address_entry): i=Sector_Index>>7 s7=0x7f & Sector_Index a7=(s7-i * lut_address_entry)^(lut_address_entry<<1) return((0x7f & a7)<<6) | lut_address_entry #回傳四個區塊可被寫入的扇區索引 def habitat(logical_block_ind): a6=logical_block_ind & 0x3f a7=(logical_block_ind>>6)^(a6<<1) for i in range(4): yield(i<<7) | (0x7f & (a7+i * a6)) def Write_to_Flash(logical_block_ind,data): #找出前一索引檔案,如果其存在的話 for sector in habitat(logical_block_ind): #實際上僅有部分的logical_block_ind被存於一扇區之LUT #但演算法確保僅有當該整體索引相配時,該部分才相配 block_index_in_sector=find(sector.lut(logical_block_ind)) if blck_ind !=None: old_instance=(sector,block_index_in_sector) break else: old_instance=None #尋寶空白區塊並寫入資料 for new_sector in sectors: if find_empty(new_sector) !=None: write the data to the new_sector,mark the newly occupied physical block as "in-use" and fill the corresponding LUT entry of the new_sector with 6 LS bits of logical_block_ind break else: raise OverflowError #刪除前時的索引檔案 if old_instance !=None: prev_sector,block_index_in_sector=old_instance mark as "expired" prev_sector[block_index_in_sector] if not in garbage collection: sectors=habitat(logical_block_ind) n_empty=sum(empty_blocks(s) for s in sectors) if n_empty <=Flash.garbage_collection_threshold: chose a sector for the garbage collection in sectors def Read_from_Flash(logical_block_ind): for sector in self.habitat(logical_block_ind): for block_index in range(nDATA_BLOCKS_IN_SECTOR): if (sector[block_index]is marked as "in-use" and sector[block_index]is not marked as "expired" lut_address of sector[block_index]matches the and corresponding part of logical_block_ind): return the data from sector[block_index] def Garbage_Collection(chosen_sector): for each "in-use" "non-old" block in chosen_sector: logical_ind= logical_block_ind(lut_address_entry) move data to another sector in habitat(logical_ind) erase chosen_sector
Claims (12)
- 一種快閃記憶體裝置存取控制方法,適用於一具有將複數扇區分割成複數區塊之快閃記憶體裝置,包括:接收一虛擬區塊位址;基於一預設方程式,計算可用於儲存具有該虛擬區塊位址之資料之一可能扇區之集合;讀取該可能扇區之集合中每一扇區之元資料,其中一扇區之該元資料包括該扇區中每一區塊之訊息,該訊息指示該區塊是否正使用中以及儲存於該區塊之該資料之虛擬區塊位址;當該資料係現時儲存於該可能扇區中的一扇區或是當一區塊現時配置用以儲存該資料,判斷該虛擬區塊位址之實體區塊位址;其中對每一虛擬區塊位址,該可能扇區之集合為不同的。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中該預設方程式可選擇為使任意二虛擬區塊位址之共享扇區數不大於1。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中該預設方程式可選擇為使該虛擬區塊位址可從儲存該實體區塊之該扇區之一索引與該虛擬區塊位址之部分位元重建。
- 如申請專利範圍第3項所述之快閃記憶體裝置存取控制方法,其中該虛擬區塊位址之該部分位元為最低有效位元。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方 法,其中該集合中可能扇區的數目為4。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中該扇區中該等區塊之一係用於儲存該扇區之元資料。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中對每一區塊,該元資料之訊息係儲存於該區塊。
- 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中當一區塊係配置為依據一虛擬區塊位址儲存資料時,掃描該可能扇區之集合以判斷該等扇區中未分配區塊之數目,以及當該未分配區塊之數目小於一預定數目,選擇該可能區塊之一供無用數據蒐集之用。
- 如申請專利範圍第8項所述之快閃記憶體裝置存取控制方法,其中在一扇區進行無用數據蒐集的過程中,檢驗該扇區之每一連結區塊的該虛擬區塊位址,以判斷該虛擬位置區塊之一可能扇區集合,且該等連結區塊之資料被複製至該區塊之虛擬區塊位址之該可能扇區集合中之一不同扇區。
- 如申請專利範圍第9項所述之快閃記憶體裝置存取控制方法,其中當完成複製該扇區之該等所有連結區塊至不同扇區後,重新初始化該扇區。
- 一種快閃記憶體裝置,包括一記憶體管理單元;一扇區陣列,其中每一扇區被分割為複數個記憶體的區塊; 其中該記憶體管理單元係設置為:接收一虛擬區塊位址;基於一預設方程式,計算一可能扇區集合,該可能扇區集合可用於儲存具有該虛擬區塊位址之資料;讀取該可能扇區集合中每一扇區之元資料,其中一扇區之該元資料包括給該扇區每一區塊以指出該區塊是否正使用中之訊息以及儲存於該區塊之該資料之該虛擬區塊位址的訊息;當該資料為現時存於該可能扇區中一區塊或一區塊現時指定為儲存該資料時,判斷該虛擬區塊位置之該實體區塊位址;其中對每一虛擬區塊位址,該可能扇區集合為不同的。
- 一種非暫態儲存媒體,包括依據申請專利範圍第1項所述之方法對一快閃記憶體裝置進行控制的程式碼。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762444395P | 2017-01-10 | 2017-01-10 | |
US62/444,395 | 2017-01-10 | ||
US15/437,471 | 2017-02-21 | ||
US15/437,471 US10445001B2 (en) | 2017-01-10 | 2017-02-21 | Memory control scheme for flash memory devices |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201826125A TW201826125A (zh) | 2018-07-16 |
TWI668571B true TWI668571B (zh) | 2019-08-11 |
Family
ID=62783094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107100775A TWI668571B (zh) | 2017-01-10 | 2018-01-09 | 快閃記憶體裝置之記憶體控制方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10445001B2 (zh) |
CN (1) | CN108287665B (zh) |
TW (1) | TWI668571B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI813978B (zh) * | 2021-04-16 | 2023-09-01 | 群聯電子股份有限公司 | 快閃記憶體控制方法、快閃記憶體儲存裝置及快閃記憶體控制器 |
CN115292266B (zh) * | 2022-05-30 | 2024-05-14 | 中国电子科技集团公司第五十二研究所 | 一种基于存储器的高可靠日志存储方法 |
CN115509465B (zh) * | 2022-11-21 | 2023-03-28 | 杭州字节方舟科技有限公司 | 一种扇区管理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721764B2 (en) * | 1993-06-03 | 2004-04-13 | Network Appliance, Inc. | Copy on write file system consistency and block usage |
TW200839516A (en) * | 2007-01-18 | 2008-10-01 | Sandisk Il Ltd | A method and system for facilitating fast wake-up of a flash memory system |
US20130227207A1 (en) * | 2011-05-12 | 2013-08-29 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
TW201339835A (zh) * | 2012-03-29 | 2013-10-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US20150356029A1 (en) * | 2013-02-05 | 2015-12-10 | Arm Limited | Handling memory access operations in a data processing apparatus |
US20160282644A1 (en) * | 2014-07-10 | 2016-09-29 | Boe Technology Group Co., Ltd. | Display Device and Driving Method Thereof |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509474B2 (en) * | 2005-06-08 | 2009-03-24 | Micron Technology, Inc. | Robust index storage for non-volatile memory |
CN100470506C (zh) * | 2007-06-08 | 2009-03-18 | 马彩艳 | 基于sector访问的flash存储器的存储管理方法 |
CN101499316B (zh) * | 2008-01-30 | 2011-10-19 | 群联电子股份有限公司 | 快闪存储器区块管理方法及使用此方法的控制器 |
US8805788B2 (en) * | 2009-05-04 | 2014-08-12 | Moka5, Inc. | Transactional virtual disk with differential snapshots |
CN103377129B (zh) * | 2012-04-11 | 2016-04-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
US10380026B2 (en) * | 2014-09-04 | 2019-08-13 | Sandisk Technologies Llc | Generalized storage virtualization interface |
US9927985B2 (en) * | 2016-02-18 | 2018-03-27 | SK Hynix Inc. | Method of dynamic table journaling |
US20170315875A1 (en) * | 2016-04-29 | 2017-11-02 | Netapp, Inc. | Namespace policy based deduplication indexes |
GB2557588B (en) * | 2016-12-09 | 2019-11-13 | Advanced Risc Mach Ltd | Memory management |
-
2017
- 2017-02-21 US US15/437,471 patent/US10445001B2/en active Active
-
2018
- 2018-01-09 TW TW107100775A patent/TWI668571B/zh active
- 2018-01-10 CN CN201810021580.0A patent/CN108287665B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721764B2 (en) * | 1993-06-03 | 2004-04-13 | Network Appliance, Inc. | Copy on write file system consistency and block usage |
TW200839516A (en) * | 2007-01-18 | 2008-10-01 | Sandisk Il Ltd | A method and system for facilitating fast wake-up of a flash memory system |
US20130227207A1 (en) * | 2011-05-12 | 2013-08-29 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
TW201339835A (zh) * | 2012-03-29 | 2013-10-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US20150356029A1 (en) * | 2013-02-05 | 2015-12-10 | Arm Limited | Handling memory access operations in a data processing apparatus |
US20160282644A1 (en) * | 2014-07-10 | 2016-09-29 | Boe Technology Group Co., Ltd. | Display Device and Driving Method Thereof |
Also Published As
Publication number | Publication date |
---|---|
US20180196598A1 (en) | 2018-07-12 |
TW201826125A (zh) | 2018-07-16 |
US10445001B2 (en) | 2019-10-15 |
CN108287665B (zh) | 2021-05-28 |
CN108287665A (zh) | 2018-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
JP4991320B2 (ja) | ホスト装置およびメモリシステム | |
US7594067B2 (en) | Enhanced data access in a storage device | |
US8392690B2 (en) | Management method for reducing utilization rate of random access memory (RAM) used in flash memory | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US11232022B2 (en) | Memory system, data storage device, user device and data management method thereof having a data management information matching determination | |
US6711663B2 (en) | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof | |
US20030229753A1 (en) | Flash memory file system | |
TWI625626B (zh) | 管理記憶體裝置中記憶體單元的實體資訊的方法及系統 | |
TWI385517B (zh) | Storage device and data management method | |
KR100608602B1 (ko) | 플래시 메모리, 이를 위한 사상 제어 장치 및 방법 | |
JP2019179455A (ja) | 記憶装置及びコンピュータシステム | |
US20180210832A1 (en) | Hybrid drive translation layer | |
JP2009244962A (ja) | メモリシステム | |
GB2476536A (en) | Modified B+ tree to map logical addresses to physical addresses in NAND flash memory | |
TWI668571B (zh) | 快閃記憶體裝置之記憶體控制方法 | |
US7051251B2 (en) | Method for storing data in a write-once memory array using a write-many file system | |
CN108073359B (zh) | 数据储存装置的操作方法 | |
US9009442B2 (en) | Data writing method, memory controller and memory storage apparatus | |
TWI417720B (zh) | 快閃記憶體管理方法與計算機系統 | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR100533683B1 (ko) | 플래시 메모리의 데이터 관리 장치 및 방법 | |
KR101676175B1 (ko) | 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법 | |
KR100638638B1 (ko) | 플래시 메모리의 제어 방법 | |
KR20050079991A (ko) | 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화) |