TW201826125A - 快閃記憶體裝置之記憶體控制方法 - Google Patents

快閃記憶體裝置之記憶體控制方法 Download PDF

Info

Publication number
TW201826125A
TW201826125A TW107100775A TW107100775A TW201826125A TW 201826125 A TW201826125 A TW 201826125A TW 107100775 A TW107100775 A TW 107100775A TW 107100775 A TW107100775 A TW 107100775A TW 201826125 A TW201826125 A TW 201826125A
Authority
TW
Taiwan
Prior art keywords
sector
block
data
sectors
flash memory
Prior art date
Application number
TW107100775A
Other languages
English (en)
Other versions
TWI668571B (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 華邦電子股份有限公司
Publication of TW201826125A publication Critical patent/TW201826125A/zh
Application granted granted Critical
Publication of TWI668571B publication Critical patent/TWI668571B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-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)+ja 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 -ja 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 1n 2
1.對一正數△,我們考慮下列形式的方程式 H(n,i)=i*△+(f(n)+ig(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)+ig(n 1) f(n 2)+ig(n 2)
f(n 1)+jg(n 1) f(n 2)+jg(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.我們可以選擇△使任何kk {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)+ig(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. 一種快閃記憶體裝置存取控制方法,適用於一具有將複數扇區分割成複數區塊之快閃記憶體裝置,包括:接收一虛擬區塊位址;基於一預設功能,計算可用於儲存具有該虛擬區塊位址之資料之一可能扇區之集合;讀取該可能扇區之集合中每一扇區之元資料,其中一扇區之該元資料包括該扇區中每一區塊之訊息,該訊息指示該區塊是否正使用中以及儲存於該區塊之該資料之虛擬區塊位址;當該資料係現時儲存於該可能扇區中的一扇區或是當一區塊現時配置用以儲存該資料,判斷該虛擬區塊位址之實體區塊位址;其中對每一虛擬區塊位址,該可能扇區之集合為不同的。
  2. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中選擇該預定功能為使任意二虛擬區塊位址之共享扇區數不大於1。
  3. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中選擇該預定功能為使該虛擬區塊位址可從儲存該實體區塊之該扇區之一索引與該虛擬區塊位址之部分位元重建。
  4. 如申請專利範圍第3項所述之快閃記憶體裝置存取控制方法,其中該虛擬區塊位址之該部分位元為最低有效位元。
  5. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方 法,其中該集合中可能扇區的數目為4。
  6. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中該扇區中該等區塊之一係用於儲存該扇區之元資料。
  7. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中對每一區塊,該元資料之訊息係儲存於該區塊。
  8. 如申請專利範圍第1項所述之快閃記憶體裝置存取控制方法,其中當一區塊係配置為依據一虛擬區塊位址儲存資料時,掃描該可能扇區之集合以判斷該等扇區中未分配區塊之數目,以及當該未分配區塊之數目小於一預定數目,選擇該可能區塊之一供無用數據蒐集之用。
  9. 如申請專利範圍第8項所述之快閃記憶體裝置存取控制方法,其中在一扇區進行無用數據蒐集的過程中,檢驗該扇區之每一連結區塊的該虛擬區塊位址,以判斷該虛擬位置區塊之一可能扇區集合,且該等連結區塊之資料被複製至該區塊之虛擬區塊位址之該可能扇區集合中之一不同扇區。
  10. 如申請專利範圍第9項所述之快閃記憶體裝置存取控制方法,其中當完成複製該扇區之該等所有連結區塊至不同扇區後,重新初始化該扇區。
  11. 一種快閃記憶體裝置,包括一記憶體管理單元;一扇區陣列,其中每一扇區被分割為複數個記憶體的區塊; 其中該記憶體管理單元係設置為:接收一虛擬區塊位址;基於一預設功能,計算一可能扇區集合,該可能扇區集合可用於儲存具有該虛擬區塊位址之資料;讀取該可能扇區集合中每一扇區之元資料,其中一扇區之該元資料包括給該扇區每一區塊以指出該區塊是否正使用中之訊息以及儲存於該區塊之該資料之該虛擬區塊位址的訊息;當該資料為現時存於該可能扇區中一區塊或一區塊現時指定為儲存該資料時,判斷該虛擬區塊位置之該實體區塊位址;其中對每一虛擬區塊位址,該可能扇區集合為不同的。
  12. 一種非暫態儲存媒體,包括依據申請專利範圍第1項所述之方法對一快閃記憶體裝置進行控制的程式碼。
TW107100775A 2017-01-10 2018-01-09 快閃記憶體裝置之記憶體控制方法 TWI668571B (zh)

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 true TW201826125A (zh) 2018-07-16
TWI668571B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561719B2 (en) 2021-04-16 2023-01-24 Phison Electronics Corp. Flash memory control method of re-programming memory cells before erase operations, flash memory storage device and flash memory controller

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
CN115509465B (zh) * 2022-11-21 2023-03-28 杭州字节方舟科技有限公司 一种扇区管理方法、装置、电子设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US7509474B2 (en) * 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
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
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
TWI480733B (zh) * 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103377129B (zh) * 2012-04-11 2016-04-06 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US9940268B2 (en) * 2013-02-05 2018-04-10 Arm Limited Handling memory access protection and address translation in a data processing apparatus
CN104090417B (zh) * 2014-07-10 2016-11-23 京东方科技集团股份有限公司 一种显示装置及其驱动方法
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561719B2 (en) 2021-04-16 2023-01-24 Phison Electronics Corp. Flash memory control method of re-programming memory cells before erase operations, flash memory storage device and flash memory controller
TWI813978B (zh) * 2021-04-16 2023-09-01 群聯電子股份有限公司 快閃記憶體控制方法、快閃記憶體儲存裝置及快閃記憶體控制器

Also Published As

Publication number Publication date
TWI668571B (zh) 2019-08-11
US10445001B2 (en) 2019-10-15
CN108287665B (zh) 2021-05-28
CN108287665A (zh) 2018-07-17
US20180196598A1 (en) 2018-07-12

Similar Documents

Publication Publication Date Title
US11640353B2 (en) Memory system, data storage device, user device and data management method thereof
US8392690B2 (en) Management method for reducing utilization rate of random access memory (RAM) used in flash memory
US7594067B2 (en) Enhanced data access in a storage device
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
KR100292011B1 (ko) 플래쉬파일수단
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US20030229753A1 (en) Flash memory file system
US8412881B2 (en) Modified B+ tree to store NAND memory indirection maps
US10740251B2 (en) Hybrid drive translation layer
US20100005270A1 (en) Storage unit management methods and systems
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US8521947B2 (en) Method for writing data into flash memory
JP2019179455A (ja) 記憶装置及びコンピュータシステム
TWI668571B (zh) 快閃記憶體裝置之記憶體控制方法
US9009442B2 (en) Data writing method, memory controller and memory storage apparatus
CN108073359B (zh) 数据储存装置的操作方法
TWI417720B (zh) 快閃記憶體管理方法與計算機系統
KR100533683B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
KR100638638B1 (ko) 플래시 메모리의 제어 방법
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101056909B1 (ko) 플래시 메모리 장치 및 플래시 메모리 장치에서의 메모리 관리 방법
US20230054801A1 (en) Memory device and method for accessing memory device with namespace management