TWI436208B - 用來管理和存取快閃記憶體模組的控制器 - Google Patents

用來管理和存取快閃記憶體模組的控制器 Download PDF

Info

Publication number
TWI436208B
TWI436208B TW100118037A TW100118037A TWI436208B TW I436208 B TWI436208 B TW I436208B TW 100118037 A TW100118037 A TW 100118037A TW 100118037 A TW100118037 A TW 100118037A TW I436208 B TWI436208 B TW I436208B
Authority
TW
Taiwan
Prior art keywords
address
block
group
processing circuit
data
Prior art date
Application number
TW100118037A
Other languages
English (en)
Other versions
TW201142589A (en
Inventor
Chi Lung Wang
Chia Hsin Chen
Chien Cheng Lin
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of TW201142589A publication Critical patent/TW201142589A/zh
Application granted granted Critical
Publication of TWI436208B publication Critical patent/TWI436208B/zh

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

用來管理和存取快閃記憶體模組的控制器
本發明是有關快閃記憶體的技術,尤指一種用來管理和存取快閃記憶體模組的控制器。
快閃記憶體被廣泛使用在很多應用中,例如記憶卡、數位相機、數位攝影機、多媒體播放器、行動電話、固態硬碟(solid-state driver)、電腦和許多其他電子裝置。快閃記憶體可用單階儲存單元(single-level cells,SLC)、多階儲存單元(multi-level cells,MLC)、三階儲存單元(triple-level cells,TLC)或更高階數的儲存單元來實現。
在很多應用當中,存取快閃記憶體的速度(例如讀、寫速度)是很關鍵的。例如,在SD卡的應用中,快閃記憶體的寫入運作必須在250毫秒完成,否則便可能被主控裝置剔除連線。存取快閃記憶體的速度可以藉由改善快閃記憶體控制器的效能來獲得提升。例如,可藉由增加快閃記憶體控制器內建的揮發性記憶體容量來改善快閃記憶體控制器的運作效能。然而,增加內建的記憶體容量必須佔用快閃記憶體控制器內更多的空間,導致快閃記憶體控制器的體積變大,在某些應用中並不適合,而且這種方式也不 符合電子裝置微型化的設計趨勢。
有鑑於此,如何有效提升存取快閃記憶體的速度,並減輕或解決以上所述相關領域中既有技術的缺失,實為業界有待解決的問題。
因此,本說明書提供了一種用來管理一快閃記憶體模組的控制器的實施例,其包含有:一通訊介面,用於耦接一主控裝置;以及一處理電路,耦接於該通訊介面,用於將包含有對應於第一組連續的M個邏輯位址的第一組M個位址的一第一位址群組依據相對應的該第一組連續的M個邏輯位址的位址順序記錄於一第一定址區塊中的一第一記憶體頁,將包含有對應於第二組連續的M個邏輯位址的第二組M個位址的一第二位址群組依據相對應的該第二組連續的M個邏輯位址的位址順序記錄於該第一定址區塊中的一第二記憶體頁,將包含有對應於第三組連續的M個邏輯位址的第三組M個位址的一第三位址群組依據相對應的該第三組連續的M個邏輯位址的位址順序記錄於一第二定址區塊中的一第一記憶體頁,以及將包含有對應於第四組連續的M個邏輯位址的第四組M個位址的一第四位址群組依據相對應的該第四組連續的M個邏輯位址的位址順序記錄於該第二定址區塊中的一第二記憶體頁;其中M是大於1的整數、該第二組M個邏輯位址接續於該第一組M個邏輯位址、該第三組M個邏輯位址接續於該第二組M個邏輯位址、且該第四組M個邏輯位址接續於該第三組M個邏輯位址。
另一種用來管理一快閃記憶體模組的控制器的實施例包含有:一處理電路,用於將複數個位址群組記錄於複數個定址區塊中,其 中該處理電路會將每一位址群組寫入該複數個定址區塊的其中一定址區塊的一實體頁,且每一位址群組包含有分別對應於複數個連續的邏輯位址的複數個位址映射資訊;以及一通訊介面,耦接於該處理電路,用於自一主控裝置接收對應於一目標邏輯位址的一寫入指令;其中該處理電路會將該目標邏輯位址和相關的資料寫入目標資料區塊中的一目的地記憶體頁,從該複數個位址群組中取得對應於該目標邏輯位址的位址映射資訊,依據該目標資料區塊的該目的地記憶體頁的實體位置資訊更新所取得的位址映射資訊,以及將包含有該目標邏輯位址更新後的位址映射資訊的一目標位址群組寫入一目標定址區塊中的一目標區段。
本說明書另提供了一種用來存取一快閃記憶體模組的控制器的實施例,其包含有:一處理電路,用於將包含有對應於第一組連續的M個邏輯位址的第一組M個位址的一第一位址群組依據相對應的該第一組連續的M個邏輯位址的位址順序記錄於一第一定址區塊中的一第一記憶體頁,將包含有對應於第二組連續的M個邏輯位址的第二組M個位址的一第二位址群組依據相對應的該第二組連續的M個邏輯位址的位址順序記錄於該第一定址區塊中的一第二記憶體頁,將包含有對應於第三組連續的M個邏輯位址的第三組M個位址的一第三位址群組依據相對應的該第三組連續的M個邏輯位址的位址順序記錄於一第二定址區塊中的一第一記憶體頁,以及將包含有對應於第四組連續的M個邏輯位址的第四組M個位址的一第四位址群組依據相對應的該第四組連續的M個邏輯位址的位址順序記錄於該第二定址區塊中的一第二記憶體頁;以及一通訊介面,耦接於該處理電路;其中M是大於1的整數、該第二組M個 邏輯位址接續於該第一組M個邏輯位址、該第三組M個邏輯位址接續於該第二組M個邏輯位址、且該第四組M個邏輯位址接續於該第三組M個邏輯位址;又,若該通訊介面自一主控裝置接收到與位於該第一、第二、第三、或第四組邏輯位址中的一目標邏輯位址相對應的一讀取指令,該處理電路會依據該第一、第二、第三、或第四位址群組中所記錄的內容,將該目標邏輯位址轉換成一相對應的目標實體位址,並存取該目標實體位址所指向的該快閃記憶體模組中的一記憶體頁。
另一種用來存取一快閃記憶體模組的控制器的實施例包含有:一通訊介面,用於耦接於一主控裝置;以及一處理電路,耦接於該通訊介面,用於將複數個邏輯位址依序來回寫入至一資料寫入群組中的複數個資料區塊;其中每次該處理電路寫入該複數個邏輯位址的其中之一到該資料寫入群組中的一資料區塊後,該處理電路會將下一個邏輯位址寫入該資料寫入群組中的另一資料區塊;又,在抹除了該資料寫入群組中的一第一資料區塊後,該處理電路會將資料寫入該資料寫入群組中的一第二資料區塊,而不先將該第二資料區塊抹除。
100‧‧‧資料儲存系統
110‧‧‧主控裝置
120‧‧‧控制器
122‧‧‧揮發性記憶體
124‧‧‧非揮發性記憶體
126‧‧‧處理電路
128‧‧‧通訊介面
130‧‧‧快閃記憶體模組
132、132A、132B、132C、132D‧‧‧資料區塊
134、134A、134A’、134B、134B’、134C、134C’、134N‧‧‧定址區塊
136‧‧‧管理區塊
圖1為本發明的資料儲存系統的一實施例簡化後的功能方塊圖。
圖2是本發明的資料寫入群組的一實施例簡化後的示意圖。
圖3是本發明寫入資料至資料寫入群組的方法的一實施例簡化後的流程圖。
圖4和圖5為本發明的邏輯位址與資料區塊內的實體位址間的映射 關係的一實施例示意圖。
圖6為本發明管理邏輯位址的位址映射資訊的方法的一第一實施例簡化後的流程圖。
圖7為本發明將邏輯位址的位址映射資訊寫入定址區塊的一第一實施例的示意圖。
圖8為本發明的定址區塊中所記錄的位址映射資訊的一第一實施例的示意圖。
圖9為本發明用來儲存位址群組配置資訊的位址群組配置表的一第一實施例的示意圖。
圖10為本發明將邏輯位址轉譯成實體位址的方法的一第一實施例簡化後的流程圖。
圖11和圖12是本發明更新邏輯位址的位址映射資訊的一第一實施例的示意圖。
圖13和圖14是本發明的定址區塊中所記錄的更新後的位址映射資訊的一第一實施例的示意圖。
圖15為本發明管理邏輯位址的位址映射資訊的方法的一第二實施例簡化後的流程圖。
圖16為本發明將邏輯位址的位址映射資訊寫入定址區塊的一第二實施例的示意圖。
圖17為本發明的定址區塊中所記錄的位址映射資訊的一第二實施例的示意圖。
圖18為本發明用來儲存位址群組配置資訊的位址群組配置表的一第二實施例的示意圖。
圖19為本發明將邏輯位址轉譯成實體位址的方法的一第二實施例簡化後的流程圖。
圖20和圖21是本發明更新邏輯位址的位址映射資訊的一第二實施例的示意圖。
圖22和圖23是本發明的定址區塊中所記錄的更新後的位址映射資訊的一第二實施例的示意圖。
圖24為本發明監測定址區塊中的位址群組有效性況狀的方法的一實施例簡化後的流程圖。
圖25為本發明用來儲存位址群組有效性資訊的位址群組有效性表的一實施例的示意圖。
圖26為本發明清除定址區塊的方法的一實施例簡化後的流程圖。
圖27為本發明監測資料區塊中的記體頁有效性況狀的方法的一實施例簡化後的流程圖。
圖28為本發明用來儲存記憶體頁有效性資訊的記憶體頁有效性表的一實施例的示意圖。
圖29為本發明清除資料區塊的方法的一實施例簡化後的流程圖。
以下將配合相關圖式來說明本發明的實施例。在這些圖式中,相同的標號表示相同或類似的元件或流程步驟。
在說明書及後續的申請專利範圍當中使用了某些詞彙來指稱特定的元件。所屬領域中具有通常知識者應可理解,同樣的元件可能會用不同的名詞來稱呼。本說明書及後續的申請專利範圍並不以名稱的差異來作為區分元件的方式,而是以元件在功能上的差異來作為區分的基準。在通篇說明書及後續的請求項當中所提及的「包含」為一開放式的用語,故應解釋成「包含但不限定於…」。另外,「耦接」一詞在此包含任何直接及間接的連接手段。因此,若文中描述一第一裝置耦接於一第二裝置,則代表該第一裝置可直接(包含透過電性連接或無線傳輸、光學傳輸等訊號連接方式)連接於該第二裝置,或透過其他裝置或連接手段間接地電性或訊號連接至該第二裝置。
圖1為本發明一實施例的資料儲存系統100簡化後的功能方塊圖。資料儲存系統100包含主控裝置110、控制器120、和快閃記憶體模組130。主控裝置110會透過控制器120來存取快閃記憶體模組130。主控裝置110可以是讀卡機、數位相機、數位攝影機、行動電話、GPS定位裝置,或其他任何能把快閃記憶體模組130當作儲存媒介的電子裝置。控制器120包含有揮發性記憶體122例如(SRAM)、非揮發性記憶體124、處理電路126、和通訊介面128。非揮發性記憶體124是用來儲存用以控制處理電路126運作的程式碼。處理電路126在運作時會將要存取的資料和位址映射資訊暫存在揮發性記憶體122。通訊介面128則用以與主控裝置110耦接,以使處理電路126和主控裝置110能透過通訊介面128進行資料傳輸。
在一實施例中,快閃記憶體模組130是以多階儲存單元(MLC)晶 片或三階儲存單元(TLC)晶片來實現,以降低硬體的成本。這些記憶體晶片可劃分為複數個資料區塊132和複數個定址區塊(addressing block)134,以及一或多個管理區塊136。資料區塊132用來儲存從主控裝置110接收到的使用者資料。定址區塊134和管理區塊136則被控制器120用來儲存位址映射資訊(address mapping information)、記憶體頁有效性資訊(page validity information)、和其他為實現管理功能所需的相關資訊。實作上,這些定址區塊134可位於相同或不同的記憶體晶片上。同樣地,管理區塊136可位於相同或不同的記憶體晶片上。
控制器120和快閃記憶體模組130可一起整合在單一記憶體裝置中,並以可卸除方式與主控裝置110連接。或者,控制器120和主控裝置110可一起整合成在單一電子裝置中。
當主控裝置110需要存取快閃記憶體模組130中的資料區塊132時,主控裝置110會透過通訊介面128傳送一存取指令(例如寫入指令或讀取指令)給控制器120,以要求控制器120存取某一邏輯位址的資料。處理電路126會將該邏輯位址轉換成位在快閃記憶體模組130的一資料區塊132中相對應的一實體位址,再依據主控裝置110傳來的指令存取該實體位址中的資料。
例如,當主控裝置110要寫入許多筆資料到快閃記憶體模組130時,主控裝置110可傳送複數個寫入指令給控制器120,每一寫入指令會要求控制器120將資料寫入一相關的邏輯位址。亦即,有複數筆資料和相關的邏輯位址需要被寫入快閃記憶體模組130中。為了提升資料寫入速度,處理電路126會將該複數筆資料和相關的邏輯位址依序來回寫入(interleave)至由快閃記憶體模組的 多個資料區塊132組成的一資料寫入群組(data writing group)中。處理電路126可從快閃記憶體模組130的不同記憶體晶片中選出兩個、四個、八個、或其他數目的資料區塊132,以組成一資料寫入群組,並將資料依序寫入資料寫入群組的記憶體頁中。以下將搭配圖2和圖3來進一步說明前述的資料寫入運作。
圖2是本發明一實施例的資料寫入群組200簡化後的示意圖。圖3則是本發明寫入資料至資料寫入群組200的方法的一實施例簡化後的流程圖300。為了舉例說明,在此假設本實施例中的每一資料區塊132都具有256個實體頁(分別以編號0到255表示),且處理電路126從不同的記憶體晶片中選擇四個資料區塊132A、132B、132C、和132D以組成資料寫入群組200。為了方便說明,記憶體頁編號為X的實體頁以下稱為實體頁#X。
在流程310中,處理電路126會依序將資料和相關的邏輯位址寫入資料寫入群組200中的資料區塊132A~132D個別的實體頁#0。例如,處理電路126可將主控裝置110傳來的資料D1和相關的邏輯位址L1寫入資料區塊132A中的實體頁#0,再將主控裝置110傳來的資料D2和相關的邏輯位址L2寫入資料區塊132B中的實體頁#0。接著,處理電路126會將主控裝置110傳來的資料D3和相關的邏輯位址L3寫入資料區塊132C中的實體頁#0,再將主控裝置110傳來的資料D4和相關的邏輯位址L4寫入資料區塊132D中的實體頁#0。
接著,處理電路126會進行流程320,將資料和相關的邏輯位址依序寫入資料寫入群組200中的資料區塊132A~132D個別的實體頁#1。例如,處理電路126可將主控裝置110傳來的資料D5和相關的邏輯位址L5寫入資料區塊132A中的實體頁#1,再將主控裝置 110傳來的資料D6和相關的邏輯位址L6寫入資料區塊132B中的實體頁#1。接著,處理電路126會將主控裝置110傳來的資料D7和相關的邏輯位址L7寫入資料區塊132C的實體頁#1,再將主控裝置110傳來的資料D8和相關的邏輯位址L8寫入資料區塊132D的實體頁#1。
依據前述的資料寫入順序,處理電路126會將資料和相關的邏輯位址,依序寫入資料區塊132A~132D內的其他可用(available)實體頁。例如,處理電路126之後可依序將資料和相關的邏輯位址,依序寫入資料區塊132A~132D個別的實體頁#J中,例如實體頁#254(流程330)。
在前述的實施例中,處理電路126於同一寫入循環內,會將資料和相關的邏輯位址依序寫入具有相同記憶體頁編號的實體頁,但這僅是一實施例,而非侷限本發明的實際實施方式。例如,在另一實施例中,處理電路126於同一寫入循環內,可將資料和相關的邏輯位址寫入記憶體頁編號不相同的實體頁。
由前述說明可知,處理電路126將多個邏輯位址的其中之一與相關的資料,寫入資料寫入群組200中一資料區塊132的一可用實體頁後,處理電路126會將下一個要寫入的邏輯位址和相關的資料,寫入資料寫入群組200的另一資料區塊132中的一可用實體頁中。亦即,每次一邏輯位址Ln和相關的資料Dn被寫入資料寫入群組200中一資料區塊132的一可用實體頁後,下一個邏輯位址Ln+1和相關的資料Dn+1便會被寫到資料寫入群組200的另一資料區塊132中的一可用實體頁。藉由這種方式,處理電路126便能將要寫入的複數筆資料和相關的複數個邏輯位址依序來回寫入分別位於資 料區塊132A~132D的複數個實體頁當中。
由於資料區塊132A、132B、132C、和132D分別位在不同的快閃記憶體晶片上,故將資料和相關的邏輯位址寫入到一資料區塊132的某一可用實體頁的運作,不會干擾到將資料和相關的邏輯位址寫入另一資料區塊132的某一可用實體頁的運作。因此,可大幅縮短將多筆資料寫入多個記憶體頁(例如不同資料區塊個別的實體頁#1)時的所需潛時(latency),進而提升寫入資料到快閃記憶體模組130的速度。
在運作上,處理電路126可動態地選擇特定數量具有可用實體頁的資料區塊132來組成資料寫入群組,以加速資料寫入的運作。被選擇的資料區塊132可以具有相同數量的可用實體頁,但也可以不同。另外,處理電路126也可以隨時依據個別資料區塊132的使用頻率或受損情況,改變同一資料寫入群組的資料區塊成員,以避免用到毀壞的資料區塊和避免過度使用特定的資料區塊。
為了定址管理之用,處理電路126會在資料寫入群組200的每一資料區塊132中,保留至少一實體頁作為目標記憶體頁。例如,處理電路126可保留資料區塊132A~132D個別的實體頁#255來做為個別區塊的目標記憶體頁。當處理電路126完成將資料寫入到資料區塊132A內其他所有實體頁的動作後,處理電路126會進行流程340,將儲存在資料區塊132A內其他所有實體頁#0~#254中的邏輯位址L1~Li,依照這些邏輯位址L1~Li在資料區塊132A中的所在實體位置的順序,依序記錄在資料區塊132A的目標記憶體頁#255中。例如,可依據邏輯位址L1~Li所在的實體頁#0~#254的記憶體頁編碼順序,將邏輯位址L1~Li依序記錄 在資料區塊132A的實體頁#255中。
在圖2所示的實施例中,資料區塊132A的實體頁#255內包含有一邏輯位址序列,由儲存在資料區塊132A內的其他所有實體頁中的邏輯位址L1~Li所組成,且實體頁#255中的每個邏輯位址的排列位置,代表著資料區塊132A中用來儲存該邏輯位址的實體頁的位置。
同樣地,當處理電路126完成將資料寫入到資料區塊132B內其他所有實體頁的動作後,處理電路126會進行流程350,將儲存在資料區塊132B內其他所有實體頁#0~#254中的邏輯位址L2~Li+1,依照這些邏輯位址在資料區塊132B中的所在實體位置的順序,依序記錄在資料區塊132B的目標記憶體頁#255中。如圖2所示,資料區塊132B的實體頁#255內包含有一邏輯位址序列,由儲存在資料區塊132B內的其他所有實體頁中的邏輯位址L2~Li+1所組成,且實體頁#255中的每個邏輯位址的排列位置,代表著資料區塊132B中用來儲存該邏輯位址的實體頁的位置。
在本實施例中,每當處理電路126完成將資料寫入到某一特定資料區塊132內其他所有實體頁的動作後,處理電路126便會將儲存在該特定資料區塊132內其他所有實體頁中的邏輯位址,依照這些邏輯位址在該特定資料區塊132中的所在實體位置的順序,依序記錄在該特定資料區塊132的目標記憶體頁當中。例如,當處理電路126之後完成將資料寫入到資料區塊132D內其他所有實體頁的動作後,處理電路126會進行流程360,將資料區塊132D內其他所有實體頁中的邏輯位址,依照前述方式記錄在資料區塊132D的目標記憶體頁中。
因此,對於特定的資料區塊132而言,依據目標記憶體頁中所記錄的邏輯位址序列的內容,處理電路126便能很輕易且迅速地得知該特定資料區塊132中所儲存的所有邏輯位址,以及分別映射於這些邏輯位址的實體頁。舉例而言,在資料區塊132A的實體頁#255中,邏輯位址序列的第二個位置所記錄的邏輯位址為L5。因此,處理電路126可從邏輯位址L5在該邏輯位址序列中的位置,推知邏輯位址L5和相關的資料D5是被儲存在資料區塊132A內的第二個實體頁(在本例中為實體頁#1)。換言之,儲存在每一資料區塊132中的邏輯位址序列,可以當作是儲存在資料區塊132中的那些邏輯位址的初步位址映射資訊。
之後,若主控裝置110傳送一寫入指令要求控制器120將新資料D5’寫入邏輯位址L5,但因邏輯位址L5先前已儲存在資料區塊132A的實體頁#1中,故處理電路126可將新資料D5’和相關的邏輯位址L5,寫入資料寫入群組200的資料區塊132A~132D中的一可用實體頁。或者,處理電路126也可將新資料D5’和相關的邏輯位址L5,寫入不屬於資料寫入群組200的另一資料區塊132中。
如前所述,當主控裝置110需要存取快閃記憶體模組130內的資料區塊132時,處理電路126必須將主控裝置110傳來的邏輯位址轉換成一相對應的實體位址,再存取該實體位址所指向的實體頁。麻煩的是,邏輯位址和資料區塊132中的實體位址間的映射關係,會因為後續的資料寫入或刪除的動作而改變。
圖4和圖5所繪示為邏輯位址與資料區塊132內的實體位址間的映射關係的一實施例示意圖。如位址映射400所示,每一個邏輯位址會映射到一資料區塊132中的一有效實體頁,而該有效實體頁 就是該邏輯位址最後一次儲存的實體頁。例如,邏輯位址1映射到區塊標號為3708的資料區塊132中的一實體頁#71,而另一邏輯位址4095則映射到區塊標號為2351的資料區塊132中的一實體頁#37。以下,為便利說明,區塊標號為Z的資料區塊132又稱為資料區塊#Z。如位址映射400所示,與複數個連續的邏輯位址(例如邏輯位址0~524288)相對應的複數個有效實體頁的位址,通常不是連續排列。
當更新某一邏輯位址的資料時,處理電路126必須將新資料和該邏輯位址寫入一可用資料區塊132中的一可用實體頁。這會改變該邏輯位址的位址映射,且無可避免的會造成該邏輯位址原先的位址映射變成過時(obsolete)的資料。因此,將邏輯位址和相關的資料寫入一新的實體頁後,應該要將該邏輯位址與實體位址間的映射更新以反映當下的情況。
例如,若處理電路126之後將有關邏輯位址4095的新資料寫入資料區塊#64中的可用實體頁#175,則邏輯位址4095與原先對應的實體位址(亦即資料區塊#2351中的實體頁#37,如位址映射400所示)間的位址映射就變成過時的資料。圖4中的位址映射402描繪了邏輯位址與資料區塊132內的實體位址間的新映射關係。之後,若處理電路126將邏輯位址524287的更新資料寫入資料區塊#2972中的可用實體頁#71,則邏輯位址與資料區塊132內的實體位址間的新映射關係,會變成圖5所描繪的位址映射404。
控制器120將邏輯位址轉換成實體位址的運作,又稱為位址轉譯(address translation)或位址解析(address resolution),其效能對於存取快閃記憶體模組130的速度有很大的影響。因 此,控制器120應該要持續更新和掌握邏輯位址與資料區塊132內的實體位址間的映射關係,以達成位址轉譯的運作。另一方面,現今的快閃記憶體模組130內通常會設置相當多的資料區塊,以滿足大儲存容量的需求。邏輯位址與資料區塊132內的實體位址間的映射關係的資料量,會與快閃記憶體模組130內所設置的資料區塊的數量呈正比關係。在存取快閃記憶體模組130的運作過程中,若要將所有邏輯位址的位址映射資訊都暫存在控制器120中,就勢必得在控制器120內設置容量相當大的記憶體。
大容量的記憶體不僅會佔用控制器120內更多的空間,還會增加控制器120的整體硬體成本。然而,考量成本與電路空間限制的情況下,很多的應用環境都不允許在控制器120內部設置大容量的記憶體,尤其是在小型的記憶卡應用中。因此,本實施例中的控制器120的處理電路126在運作的過程中,會以不需要將快閃記憶體模組130的所有位址映射資訊都暫存在揮發性記憶體122的方式,來管理邏輯位址的位址映射資訊,以有效降低控制器120的硬體成本和所需的內部體積。以下,將搭配圖6到圖14來進一步說明處理電路126管理邏輯位址的位址映射資訊的運作方式。
圖6為本發明管理邏輯位址的位址映射資訊的方法的一第一實施例簡化後的流程圖600。圖7為本發明將邏輯位址的位址映射資訊寫入定址區塊134的一第一實施例簡化後的示意圖。
在流程610中,處理電路126會將快閃記憶體模組130可支援的邏輯位址的位址映射資訊,群組成多個位址群組(address group)。處理電路126可將一預定數量的連續邏輯位址的位址映射資訊群組成一位址群組。例如,在圖7的實施例中,每一邏輯位址 的位址映射資訊,是用一資料區塊位置資訊(例如資料區塊編號)和一實體頁位置資訊(例如記憶體頁編號)的組合來表示的一實體位址,而處理電路126會將每2048個連續的邏輯位址所對應的2048個位址映射資訊群組成一位址群組。亦即,每一位址群組包含有2048個實體位址,分別映射於2048個連續的邏輯位址。如圖所示,處理電路126會將映射於連續邏輯位址0~2047的第一組2048個實體位址,群組成一位址群組G0,並將映射於連續邏輯位址2048~4095的第二組2048個實體位址,群組成一位址群組G1,其餘依此類推。
如此一來,與一特定位址群組有關的2048個邏輯位址,便會接續於與相鄰的位址群組有關的2048個邏輯位址。例如,與位址群組G2有關的2048個邏輯位址,會接續於與位址群組G1有關的2048個邏輯位址;與位址群組G255有關的2048個邏輯位址,會接續於與位址群組G254有關的2048個邏輯位址;與位址群組G256有關的2048個邏輯位址,會接續於與位址群組G255有關的2048個邏輯位址;而與位址群組G257有關的2048個邏輯位址,則會接續於與位址群組G256有關的2048個邏輯位址。
如圖7所示,位址群組G0的內容是分別映射於邏輯位址0~2047的2048個實體位址;位址群組G1的內容是分別映射於邏輯位址2048~4095的2048個實體位址;位址群組G255的內容是分別映射於邏輯位址522240~524287的2048個實體位址;位址群組G256的內容是分別映射於邏輯位址524288~526335的2048個實體位址;而位址群組G511的內容是分別映射於邏輯位址1046528~1048575的2048個實體位址;依此類推。
在流程620中,處理電路126會將該等位址群組的資料內容寫入定址區塊134。為便於說明,以下假設每一定址區塊134具有256個實體頁,分別以編號#0~#255表示。在本實施例中,處理電路126會將定址區塊134區分成主定址區塊(primary addressing block)和副定址區塊(collateral addressing block),主定址區塊以編號134x表示(x=A、B、C、…),副定址區塊則以編號134x’表示(x’=A’、B’、C’、…),如圖7所示。
每一主定址區塊134x會與一相關的副定址區塊134x’配對組成一定址區塊對。例如,在圖7所示的實施例中,定址區塊134A和相關的副定址區塊134A’會配對成一第一定址區塊對;定址區塊134B和相關的副定址區塊134B’會配對成一第二定址區塊對;而定址區塊134C和相關的副定址區塊134C’會配對成一第三定址區塊對;依此類推。前述主定址區塊和副定址區塊的劃分只是為了便於說明,且處理電路126在後續的運作階段中也可以將某一定址區塊134劃分成另一類定址區塊。
處理電路126在流程620中,可將位址群組G0~G255中每一位址群組的內容,記錄在主定址區塊134A的一個區段中;將位址群組G256~G511中每一位址群組的內容,記錄在另一主定址區塊134B的一個區段中;並將位址群組G512~G767中每一位址群組的內容,記錄在另一主定址區塊134C的一個區段中;其餘依此類推。
在圖7的實施例中,處理電路126會將位址群組G0~G255中每一位址群組的2048筆位址映射資訊,依據相對應的2048個邏輯位址的位址順序,記錄在定址區塊134A的一實體頁中。舉例而言,如 圖8所示,處理電路126會將位址群組G0中的第一筆位址映射資訊(在本例中為資料區塊#23和實體頁#4),連同該第一筆位址映射資訊的資料有效性標記,寫入定址區塊134A的實體頁#0中的第一個位置,以做為一資訊單元802;還會將位址群組G0中的第二筆位址映射資訊(在本例中為資料區塊#3708和實體頁#71),連同該第二筆位址映射資訊的資料有效性標記,寫入定址區塊134A的實體頁#0中的第二個位置,以做為一資訊單元804;其餘依此類推。因此,位址群組G0中的第2048筆位址映射資訊連同相對應的資料有效性標記,會被記錄在定址區塊134A的實體頁#0中的第2048個位置,以做為一資訊單元。實作上,每一邏輯位址的位址映射資訊,可用適當大小的資料格式來記錄,例如長字元(longword)的格式。
相仿地,處理電路126會將位址群組G254中所包含的2048筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134A的實體頁#254。接著,處理電路126會將位址群組G255中的第一筆位址映射資訊(在本例中為資料區塊#610和實體頁#108),連同相對應的資料有效性標記,寫入定址區塊134A的實體頁#255中的第一個位置,以做為一資訊單元806;還會將位址群組G255中的第二筆位址映射資訊(在本例中為資料區塊#99和實體頁#166),連同相對應的資料有效性標記,寫入定址區塊134A的實體頁#255中的第二個位置,以做為一資訊單元808;依此類推。因此,位址群組G255中的第2048筆位址映射資訊(在本例中為資料區塊#41和實體頁#88),連同相對應的資料有效性標記,會被記錄在定址區塊134A的實體頁#255中的第2048個位置,以做為一資訊單 元810。
此外,處理電路126也會將位址群組G256中所包含的2048筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134B的實體頁#0,以做為2048個資訊單元,例如圖8中所繪示的資訊單元812和814。
同樣地,處理電路126會將位址群組G511中的第一筆位址映射資訊(在本例中為資料區塊#66和實體頁#49),連同相對應的資料有效性標記,寫入定址區塊134B的實體頁#255中的第一個位置,以做為一資訊單元816;也會將位址群組G511中的第2048筆位址映射資訊(在本例中為資料區塊#1731和實體頁#204),連同相對應的資料有效性標記,寫入定址區塊134B的實體頁#255中的第2048個位置,以做為一資訊單元818。
處理電路126會以前述的方式,繼續將其他位址群組的內容寫入其他定址區塊134,直到所有位址群組的內容都全部記錄在定址區塊134中。在圖8的實施例中,處理電路126會將位址群組中的每一筆位址映射資訊的資料有效性標記,設為一第一預定值,例如0,以代表這些位址映射資訊所指向的實體頁中所儲存的資料是有效的資料。資料有效性標記的功能在後面段落中會做進一步說明。如此一來,處理電路126便能在定址區塊134中建立並儲存一份邏輯位址的初始位址映射資料。
由前述說明可知,在一位址群組中,連續的邏輯位址的位址映射資訊是依照邏輯位址的順序來排列。此外,特定邏輯位址的位址映射資訊的存放位置,也會對應於該特定邏輯位址在該連續的邏 輯位址中的順序。例如,在映射於2048個連續的邏輯位址的一位址群組中,該2048個邏輯位址中的第N個邏輯位址的位址映射資訊,會記錄在該位址群組中的第N個位置。因此,處理電路126無須將邏輯位址記錄在位址群組中。
在本實施例中,若某一特定位址群組原先被儲存在主定址區塊134x中,則該特定位址群組被更新後的版本,將會記錄在相對應的副定址區塊134x’中。換言之,每一對主定址區塊134x和相關的副定址區塊134x’的組合,可用來管理256個位址群組,且每一位址群組包含有映射於2048個連續的邏輯位址的2048個實體位址。因此,每一對主定址區塊134x和相關的副定址區塊134x’的組合,最多可管理該等資料區塊132中的524,288個(=256*2048)實體位址。若每一實體位址用以指向大小為8KB的實體頁,則控制器120可利用每一對主定址區塊134x和相關的副定址區塊134x’,來管理大小為4,194,304KB(相當於4GB)的快閃記憶體的位址映射資訊。使用愈多的定址區塊134,控制器120就能管理愈大容量的快閃記憶體。
由於該等位址群組會分別記錄在多個定址區塊134中,處理電路126還會管理所有位址群組的配置資訊(allocation information),以便於需要時能找到特定的位址群組的存放位置。
在流程630中,處理電路126會將該等位址群組的配置資訊寫入一管理區塊136,例如管理區塊136A(未繪示)。處理電路126可將所有位址群組的配置資訊,按照位址群組的編號,依序寫入管理區塊136A中,以形成如圖9所示的一位址群組配置表(address group allocation table)910。在圖9的實施例中,每一位址群組的配置資訊,是用一定址區塊類型資訊和一實體頁位置資訊(例如記憶體頁編號)的組合來表示的一實體位址。如圖所示,處理電路126會將第一個位址群組G0的配置資訊,寫入位址群組配置表910中的第一個位置;將第二個位址群組G1的配置資訊,寫入位址群組配置表910中的第二個位置;將第三個位址群組G2的配置資訊,寫入位址群組配置表910中的第三個位置;其餘依此類推。因此,第512個位址群組G511的配置資訊,會被記錄在位址群組配置表910中的第512個位置。實作上,每一位址群組的配置資訊,可用適當大小的資料格式來記錄,例如字元(word)的格式。
換言之,處理電路126在位址群組配置表910中,會將位址群組的配置資訊依照位址群組的群組編號的順序來排列。如此一來,特定位址群組的配置資訊的存放位置,就會對應於該特定位址群組的群組編號。因此,處理電路126無須將位址群組的群組編號記錄在位址群組配置表910中。
由於特定位址群組的內容有可能是記錄在一主定址區塊134x或相關的一副定址區塊134x’中,因此,本實施例中的處理電路126會在個別位址群組的配置資訊中,加入該位址群組的有效當前版本的所在定址區塊的類型資訊。在本實施例中,定址區塊類型1代表對應的位址群組的當前版本是記錄在一主定址區塊134x,而定址區塊類型2代表對應的位址群組的當前版本是記錄在與該主定址區塊134x配對的一副定址區塊134x’中。
由於這些包含邏輯位址的位址映射資訊的位址群組會儲存在定址 區塊134中,而這些位址群組的配置資訊會儲存在管理區塊136A中,因此,快閃記憶體模組130的位址映射資訊不會在斷電後(例如切斷與主控裝置110的連接後)消失。因此,控制器120的處理電路126在快閃記憶體模組130下一次通電或連接主控裝置110時的初始化過程中,就不需要重新蒐集邏輯位址的所有位址映射資訊和該等位址群組的配置資訊。如此一來,就能有效降低對快閃記憶體模組130進行初始化所需的時間。
接下來,在描述流程圖600的流程640到流程660的運作之前,將先說明一下處理電路126將邏輯位址轉譯成實體位址的運作方式。當通訊介面128從主控裝置110接收到與一特定邏輯位址相關的存取指令時,處理電路126會參照管理區塊136A中儲存的位址群組配置資訊和定址區塊134中儲存的位址映射資訊,將該邏輯位址轉譯成一相對應的實體位址。圖10為本發明將邏輯位址轉譯成實體位址的方法的一第一實施例簡化後的流程圖1000。
在流程1010中,通訊介面128會從主控裝置110接收與一存取指令相關的目標邏輯位址。為便於說明,在此假設該目標邏輯位址是邏輯位址522241。
在流程1020中,處理電路126會將該目標邏輯位址除以單一位址群組所能容納的位址映射資訊筆數的最大值,以獲得一商數Q和一餘數R。在本實施例中,單一位址群組所能容納的位址映射資訊筆數的最大值是2048。因此,處理電路126會將522241除以2048,以獲得一商數255和一餘數1。
在流程1030中,處理電路126會依據前述的商數Q,來判斷包含有 該目標邏輯位址的位址映射資訊的一目標位址群組的群組編號。由於在流程1020中獲得的商數Q為255,故處理電路126會判定包含目標邏輯位址522241的位址映射資訊的目標位址群組是第256個位址群組G255,在本例中其群組編號為255。
在流程1040中,處理電路126會將該群組編號除以一組定址區塊對所能管理的位址群組的最大值,以獲得一商數Y。在本實施例中,一組定址區塊對所能管理的位址群組的最大值是256。因此,處理電路126會將255除以256,而獲得一商數0。
在流程1050中,處理電路126會依據前述的商數Y找出一組目標定址區塊對。由於在流程1040中獲得的商數Y為0,因此,處理電路126在本例中會判定目標位址群組G255是儲存在由主定址區塊134A和副定址區塊134A’所組成的第一組定址區塊對。
在流程1060中,處理電路126會查找該目標位址群組的配置資訊。由於目標位址群組G255是第256個位址群組,故處理電路126會判斷目標位址群組G255的配置資訊,是記錄在管理區塊136A內所儲存的最新位址群組配置表中的第256個位置。在本例中,管理區塊136A中所儲存的最新位址群組配置表是位址群組配置表910,而儲存在位址群組配置表910的第256個位置中的配置資訊,所記載的內容是定址區塊類型1和實體頁#255。
在流程1070中,處理電路126會依據前述的配置資訊來找出該目標位址群組的所在位置。處理電路126可依據該目標位址群組的配置資訊中所記載的定址區塊類型和實體頁編號,來判斷出該目標位址群組的最新內容是記錄在哪個定址區塊中的哪個實體頁。 在本例中,由於目標位址群組G255的配置資訊所記載的內容是定址區塊類型1和實體頁#255,故處理電路126會判定位址群組G255的最新內容是記錄在主定址區塊134A的實體頁#255中。
在流程1080中,處理電路126會依據該目標位址群組中的位址映射資訊,來找出映射於該目標邏輯位址的一實體頁位址。由於在流程1020中得到的餘數R是1,處理電路126會因此判定目標邏輯位址522241的位址映射資訊,是儲存在目標位址群組G255中的第2個位置。如圖8所示,在目標位址群組G255的第2個位置中,所記載的位址映射資訊內容是資料區塊#99和實體頁#166。因此,處理電路126會將目標邏輯位址522241轉譯成資料區塊#166中的實體頁#99。
在運作時,處理電路126不需要將記錄在定址區塊134中所有有效的位址映射資訊,都暫存在揮發性記憶體122中。處理電路126可以只將選自不同位址群組的局部位址映射資訊暫存在揮發性記憶體122中,並依據暫存在揮發性記憶體122中的局部位址映射資訊來進行圖10所描述的位址轉譯運作,以存取快閃記憶體模組130。
例如,在一實施例中,處理電路126會將每一位址群組切割成多個映射資訊段(mapping information segment),並只將分別選自不同位址群組的部分映射資訊段,暫存在揮發性記憶體122中。當主控裝置110要求存取一特定邏輯位址時,若當前暫存在揮發性記憶體122中的一特定映射資訊段包含有該特定邏輯位址的位址映射資訊,處理電路126會依據揮發性記憶體122所暫存的該特定映射資訊段當中的位址映射資訊,將該特定邏輯位址轉換 成一相對應的實體位址,而不會從定址區塊134中擷取該位址映射資訊。另一方面,若當前暫存在揮發性記憶體122中的映射資訊段,都未包含該特定邏輯位址的位址映射資訊,則處理電路126會從定址區塊134中擷取該特定邏輯位址的有效位址映射資訊,並依據該有效位址映射資訊進行位址轉譯的運作。另外,處理電路126可利用適當的機制來更新揮發性記憶體122所暫存的位址映射資訊。例如,處理電路126可將揮發性記憶體122中被利用率最低的映射資訊段剔除,而將包含有該特定邏輯位址的有效位址映射資訊的一目標映射資訊段,暫存到揮發性記憶體122中。由於處理電路126只需將記錄在定址區塊134中的所有有效位址映射資訊當中非常小比例的部分暫存於揮發性記憶體122,即可支援前述的位址轉譯運作,可大幅降低揮發性記憶體122所需的記憶體容量。
前述流程圖1000中的各流程的執行順序只是一實施例,而非侷限本發明的實際實施方式。例如,可將流程1050和1060順序對調。在另一實施例中,則可將流程1060移到流程1030和1040之間來進行。
請回過頭參閱圖6。如前所述,當與某一邏輯位址相關的資料被更新或抹除時,邏輯位址和實體位址間的映射關係便會改變,進而造成邏輯位址原先的位址映射變成過時或無效的資料。因此,當資料更新或抹除運作發生時,處理電路126在流程640中會判斷主定址區塊134中所記錄的哪個位址群組需要被更新。當處理電路126完成一項與特定邏輯位址有關的資料更新或抹除(或資料刪除)運作時,處理電路126會在流程640中判定相對應的位址 群組需要被更新,接著,便會進行流程650的運作。
在流程650中,處理電路126會更新包含有該特定邏輯位址的過時位址映射資訊的特定位址群組,並將更新後的位址群組記錄在與原先的位址群組所在的一主定址區塊134x配對的副定址區塊134x’的一區段中。例如,若一位址群組原先是記錄在一主定址區塊134x中,則處理電路126在流程650中會將該位址群組更新後的版本,記錄在與該主定址區塊134x配對的副定址區塊134x’中。以下將搭配圖11到圖14來進一步說明流程650的運作方式。
圖11和圖12是本發明更新邏輯位址的位址映射資訊的一第一實施例的示意圖。如圖11所示,將有關於邏輯位址4095的新資料寫入資料區塊#64的實體頁#175後,原先映射於邏輯位址4095的實體位址(亦即資料區塊#2351的實體頁#37)就變成無效資料,而當前映射於邏輯位址4095的有效實體位址是資料區塊#64的實體頁#175。由圖11中的位址映射402可以看出,前述的資料更新運作改變了位址群組G1的內容。
因此,處理電路126在流程650中會更新位址群組G1的內容,並將更新後的位址群組G1記錄於與定址區塊134A配對的副定址區塊134A’中的一可用實體頁。例如,在圖11的實施例中,處理電路126可從定址區塊134A的記憶體頁#1中讀取位址群組G1原來的內容,並將邏輯位址4095的位址映射資訊從原先的實體位址(亦即資料區塊#2351的實體頁#37)變更成新的實體位址(亦即資料區塊#64的實體頁#175)。
接著,處理電路126會將更新後的位址群組G1的內容,寫入定址 區塊134A’的實體頁#0中。在圖13的實施例中,處理電路126會將更新後的位址群組G1中的第一筆位址映射資訊(本例中為資料區塊#1和實體頁#34),和相對應的資料有效性標記,寫入定址區塊134A’的實體頁#0中的第一個位置,以做為一資訊單元1302,接著,再將更新後的位址群組G1中的第二筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134A’的實體頁#0中的第二個位置,以做為另一資訊單元,其餘依此類推。因此,更新後的位址群組G1中的第2048筆位址映射資訊(本例中為資料區塊#64和實體頁#175)和相對應的資料有效性標記,會被記錄在定址區塊134A’的實體頁#0中的第2048個位置,以做為一資訊單元1304。
更新位址群組G1的內容到定址區塊134A’的實體頁#0中的動作,會使得初始位址群組配置表910中所記錄的位址群組G1的配置資訊變成過時的資料。因此,處理電路126會進行流程660,將更新後的位址群組G1的新配置資訊記錄於管理區塊136A中。例如,處理電路126可從管理區塊136A中讀取位址群組配置表910的原始內容,並將其中記錄的位址群組G1的配置資訊,由原先記載的內容(本例中為定址區塊類型1和實體頁#1)變更成新的內容(本例中應為定址區塊類型2和實體頁#0)。接著,處理電路126再將位址群組G1的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成一更新後的位址群組配置表920,如圖9所示。
之後,倘若處理電路126依據主控裝置110的要求而寫入邏輯位址524287的更新資料至資料區塊#2972的實體頁#17中,則邏輯位址 與快閃記憶體模組130的實體位址間的映射關係,會變成如圖12中所繪示的位址映射404。
由位址映射404可以看出,對邏輯位址524287所進行的資料更新運作,改變了位址群組G255中的第2048筆位址映射資訊。因此,處理電路126會進行流程650以更新位址群組G255的內容,並將位址群組G255更新後的內容記錄於與主定址區塊134A配對的副定址區塊134A’中的可用實體頁。例如,在圖13的實施例中,處理電路126可從定址區塊134A的記憶體頁#255中讀取位址群組G255原來的內容,並將其中的邏輯位址524287的位址映射資訊,從原先的實體位址(本例中為資料區塊#41的實體頁#88)變更成新的實體位址(本例中為資料區塊#2972的實體頁#17)。
接著,處理電路126會將更新後的位址群組G255的內容,寫入定址區塊134A’的一可用實體頁#1中。例如,處理電路126可將更新後的位址群組G255中的第一筆位址映射資訊(本例中為資料區塊#610和實體頁#108),和相對應的資料有效性標記,寫入定址區塊134A’的實體頁#1中的第一個位置,以做為一資訊單元1306,接著,再將更新後的位址群組G255中的第二筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134A’的實體頁#1中的第二個位置,以做為另一資訊單元,其餘依此類推。因此,更新後的位址群組G255中的第2048筆位址映射資訊(本例中為資料區塊#2972和實體頁#17)和相對應的資料有效性標記,會被記錄在定址區塊134A’的實體頁#1中的第2048個位置,以做為一資訊單元1308。
更新位址群組G255的內容到定址區塊134A’的實體頁#1的動作, 會使得位址群組配置表920中所記錄的位址群組G255的配置資訊變成過時的資料。因此,處理電路126會進行流程660,將更新後的位址群組G255的新配置資訊記錄於管理區塊136A中。例如,處理電路126可從管理區塊136A中讀取位址群組配置表920的原始內容,並將其中記錄的位址群組G255的配置資訊,由原先記載的內容(本例中為定址區塊類型1和實體頁#255)變更成新的內容(本例中為定址區塊類型2和實體頁#1)。接著,處理電路126再將位址群組G255的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成一更新後的位址群組配置表930,如圖9所示。
倘若主控裝置110之後要求控制器120抹除(或刪除)與特定邏輯位址有關的資料,處理電路126會進行圖6中的流程650,以更新與該特定邏輯位址相關的位址群組,但不會立刻抹除當前映射於該特定邏輯位址的資料區塊中的實體頁所儲存的資料。
例如,若主控裝置110要求控制器120抹除(或刪除)與邏輯位址522240~526335有關的資料,處理電路126會更新包含有邏輯位址522240~526335的位址映射資訊的位址群組G255和G256的內容,來做為對於主控裝置110所傳來的抹除(或刪除)指令的回應。在圖14所繪示的一實施例中,處理電路126會將定址區塊134A’的實體頁#1中所儲存的位址群組G255的全部位址映射資訊,複製到定址區塊134A’中的一可用實體頁#2,並將這些位址映射資訊的資料有效性標記全設成一第二預定值,例如1,以代表這些位址映射資訊所指向的實體頁中所儲存的資料已經被「虛擬抹除」。接著,處理電路126會將定址區塊134B的實體頁#0中所 儲存的位址群組G256的全部位址映射資訊,複製到定址區塊134B’中的一可用實體頁#0,並將這些位址映射資訊的資料有效性標記全設成該第二預定值1。
因此,儲存在定址區塊134A’的實體頁#2中的資訊單元,會與儲存在定址區塊134A’的實體頁#1中的資訊單元很類似,但差別在於資料有效性標記的值不同。而且,儲存在定址區塊134B’的實體頁#0中的資訊單元,也會與儲存在定址區塊134B的實體頁#0中的資訊單元很類似,兩者的差異同樣是在於資料有效性標記的值不同。
在另一實施例中,處理電路126會只單純將定址區塊134A’的實體頁#2中的該等資料有效性標記都設為1,而不把位址群組G255的其他內容複製到定址區塊134A’的實體頁#2中。並且,處理電路126會只單純將定址區塊134B’的實體頁#0中的該等資料有效性標記都設為1,而不把位址群組G256的其他內容複製到定址區塊134B’的實體頁#0中。如此一來,可進一步加速更新和重新配置相關位址群組的運作,並降低在更新這些位址群組的過程中所需的記憶體。
換言之,當主控裝置110要求控制器120抹除(或刪除)與特定邏輯位址有關的資料時,處理電路126可以只單純的將更新後的相關位址群組寫入相關的副定址區塊中,而不真的對相關的資料區塊執行傳統的抹除運作。藉由資料有效性標記的使用,能讓控制器120在決定何時要對相關的資料區塊執行真正的抹除運作時有更大的自由度。因此,控制器120不須在接收到主控裝置110傳來的抹除(或刪除)指令時,就立刻對相關的資料區塊執行真正的 抹除運作。如此便可有效降低快閃記憶體模組130進行區塊抹除運作的頻率,進而大幅改善快閃記憶體模組130的存取效能。
當主控裝置110之後發送與一特定邏輯位址有關的讀取指令過來時,處理電路126會進行前述流程圖1000所描述的位址轉譯方法,以找出該特定邏輯位址的位址映射資訊。若處理電路126發現該特定邏輯位址的位址映射資訊的資料有效性標記被設成1時,處理電路126就會透過通訊介面128回傳虛擬資料(dummy data)給主控裝置110。
更新位址群組G255和G256內容的運作,會使得位址群組配置表930中所記錄的位址群組G255和G256的配置資訊變成過時的資料。因此,處理電路126會進行流程660,將更新後的位址群組G255和G256的新配置資訊記錄於管理區塊136A中。處理電路126可從管理區塊136A中讀取位址群組配置表930的原始內容,並將其中記錄的位址群組G255的配置資訊,由原先記載的值(本例中為定址區塊類型2和實體頁#1)變更成新的設定(本例中應為定址區塊類型2和實體頁#2),並將其中記錄的位址群組G256的配置資訊,由原先記載的值(本例中為定址區塊類型1和實體頁#0)變更成新的設定(本例中為定址區塊類型2和實體頁#0)。接著,處理電路126再將位址群組G255和G256的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成一更新後的位址群組配置表940,如圖9所示。
在本實施例中,處理電路126可於某一副定址區塊134x’被更新後的位址群組填滿時,將副定址區塊134x’與配對的主定址區塊134x一同清除(clean)。例如,若副定址區塊134B’在後續的 階段中被寫滿了更新後的位址群組,處理電路126會將成對的副定址區塊134B’和相關的主定址區塊134B中所儲存的所有有效位址群組,複製到一可用的目標定址區塊134,並將目標定址區塊134設為新的主定址區塊134B,用以記錄位址群組G256~G511的內容。處理電路126接著會控制快閃記憶體模組130對原本的主定址區塊134B和原本的副定址區塊134B’進行區塊抹除的動作,並可指定抹除後的定址區塊的其中之一做為新的副定址區塊134B’,以便與新的主定址區塊134B配對使用。
在另一實施例中,處理電路126則會於某一副定址區塊134x’的可用實體頁少於一預定數量(例如5)時,將副定址區塊134x’與配對的主定址區塊134x一同清除。
由於更新一特定定址區塊對的動作會改變該定址區塊對所管理的位址群組的配置情況,故處理電路126會進行流程660,將該特定區塊對所管理的位址群組的新配置資訊,連同其他位址群組原來的配置資訊,一起寫入管理區塊136A以形成新的位址群組配置表。
以下,將搭配圖15到圖23來說明本發明管理邏輯位址的位址映射資訊的另一實施例。
圖15為本發明管理邏輯位址的位址映射資訊的方法的一第二實施例簡化後的流程圖1500。圖16為本發明將邏輯位址的位址映射資訊寫入定址區塊134的一第二實施例簡化後的示意圖。
流程圖1500中的流程610與前述流程圖600中的流程610原則上相同。在圖16的實施例中,每一邏輯位址的位址映射資訊,是用一 資料區塊位置資訊(例如資料區塊編號)和一實體頁位置資訊(例如記憶體頁編號)的組合來表示的一實體位址,而處理電路126會將每2048個連續的邏輯位址所對應的2048的位址映射資訊群組成一位址群組。因此,每一位址群組包含有2048個實體位址,分別映射於2048個連續的邏輯位址。例如,處理電路126會將映射於連續邏輯位址0~2047的第一組2048個實體位址,群組成一位址群組G0,並將映射於連續邏輯位址2048~4095的下一組2048個實體位址,群組成一位址群組G1,其餘依此類推。
在流程1520中,處理電路126會將這些位址群組的資料內容寫入定址區塊134。為便於說明,以下假設每一定址區塊134具有256個實體頁,分別以編號#0~#255表示。處理電路126在流程1520中,可將位址群組G0~G254中每一位址群組的內容,記錄在定址區塊134A的一個區段中;將位址群組G255~G509中每一位址群組的內容,記錄在另一定址區塊134B的一個區段中;並將位址群組G510~G764中每一位址群組的內容,記錄在另一定址區塊134C的一個區段中;其餘依此類推。
在圖16的實施例中,處理電路126會將位址群組G0~G254中每個位址群組的內容,依據相對應的2048個邏輯位址的位址順序,記錄在定址區塊134A的一實體頁中。舉例而言,如圖17所示,處理電路126會將位址群組G0中的第一筆位址映射資訊(在本例中為資料區塊#23和實體頁#4),連同該第一筆位址映射資訊的資料有效性標記,寫入定址區塊134A的實體頁#0中的第一個位置,以做為一資訊單元1702;還會將位址群組G0中的第二筆位址映射資訊(在本例中為資料區塊#3708和實體頁#71),連同該第二筆 位址映射資訊的資料有效性標記,寫入定址區塊134A的實體頁#0中的第二個位置,以做為一資訊單元1704;其餘依此類推。因此,位址群組G0中的第2048筆位址映射資訊和相對應的資料有效性標記,會被記錄在定址區塊134A的實體頁#0中的第2048個位置,以做為一資訊單元。實作上,每一邏輯位址的位址映射資訊,可用適當大小的資料格式來記錄,例如長字元的格式。
相仿地,處理電路126會將位址群組G254中的第一筆位址映射資訊(在本例中為資料區塊#1090和實體頁#226)和相對應的資料有效性標記,寫入定址區塊134A的實體頁#254中的第一個位置,以做為一資訊單元1706;還會將位址群組G254中的第2048筆位址映射資訊(在本例中為資料區塊#449和實體頁#8),連同相對應的資料有效性標記,寫入定址區塊134A的實體頁#254中的第2048個位置,以做為一資訊單元1708。
此外,處理電路126也會將位址群組G255中的第一筆位址映射資訊(在本例中為資料區塊#610和實體頁#108),連同相對應的資料有效性標記,寫入定址區塊134B的實體頁#0中的第一個位置,以做為一資訊單元1712;並將位址群組G255中的第2048筆位址映射資訊(在本例中為資料區塊#41和實體頁#88),連同相對應的資料有效性標記,寫入定址區塊134B的實體頁#0中的第2048個位置,以做為一資訊單元1714。
相似地,處理電路126會將位址群組G509中的第一筆位址映射資訊(在本例中為資料區塊#78和實體頁#136),和相對應的資料有效性標記,寫入定址區塊134B的實體頁#254中的第一個位置,以做為一資訊單元1716;也會將位址群組G509中的第2048筆位址 映射資訊(在本例中為資料區塊#28和實體頁#7),連同相對應的資料有效性標記,寫入定址區塊134B的實體頁#254中的第2048個位置,以做為一資訊單元1718。
處理電路126會以前述的方式,繼續將其他位址群組的內容寫入其他定址區塊134,直到所有位址群組的內容都全部記錄在定址區塊134中。在圖17的實施例中,處理電路126會將位址群組中的每一筆位址映射資訊的資料有效性標記,設為一第一預定值,例如0,以代表這些位址映射資訊所指向的實體頁中所儲存的資料是有效的資料。如此一來,處理電路126便能在定址區塊134中建立並儲存一份邏輯位址的初始位址映射資料。
與前述的實施例類似,在一位址群組中,連續的邏輯位址的位址映射資訊是依照邏輯位址的順序來排列。此外,特定邏輯位址的位址映射資訊的存放位置,也會對應於該特定邏輯位址在該連續的邏輯位址中的順序。例如,在映射於2048個連續的邏輯位址的一個位址群組中,該2048個邏輯位址中的第N個邏輯位址的位址映射資訊,會記錄在該位址群組中的第N個位置。因此,處理電路126無須將邏輯位址記錄在位址群組中。
在流程1530中,處理電路126會將儲存於每一定址區塊134中的位址群組的群組編號,記錄在該定址區塊134的一目標區段中。處理電路126可保留每一定址區塊134中的最後一個實體頁#255來做為一目標區段。例如,當處理電路126完成了將位址群組G0~G254寫入到定址區塊134A內其他所有實體頁的動作後,處理電路126會將位址群組G0~G254的群組編號,依照這些位址群組G0~G254在定址區塊134A中的所在實體位置的順序,依序記錄在 定址區塊134A的實體頁#255中。
在圖17所示的實施例中,定址區塊134A的實體頁#255內包含有一群組編號序列(group numbering sequence)0、1、2、…、235、和254,與儲存在定址區塊134A的其他所有實體頁中的位址群組G0~G254相對應,且實體頁#255中的每個群組編號的排列位置,代表著定址區塊134A中用來儲存相對應的位址群組的實體頁的位置。
同樣地,當處理電路126完成了將位址群組G255~G509寫入到定址區塊134B內其他所有實體頁的動作後,處理電路126會進行流程1530,將位址群組G255~G509的群組編號,依照位址群組G255~G509在定址區塊134B中的所在實體位置的順序,依序記錄在定址區塊134B的實體頁#255中。如圖17所示,定址區塊134B的實體頁#255內包含有一群組編號序列255、256、257、…、508、和509,與儲存在定址區塊134B的其他所有實體頁中的位址群組G255~G509相對應,且實體頁#255中的每個群組編號的排列位置,代表著定址區塊134B中用來儲存相對應的位址群組的實體頁的位置。
因此,依據各定址區塊134的目標區段中所儲存的群組編號序列,處理電路126便能輕易且快速地得知儲存在該定址區塊134中的所有位址群組的群組編號,以及這些位址群組的所在實體頁。以定址區塊134A為例,在定址區塊134A的實體頁#255所儲存的群組編號序列中的第三個位置,所記載的群組編號是2。因此,處理電路126便能從群組編號2在群組編號序列中的位置,得知位址群組G2是被儲存在定址區塊134A的第三個實體頁(在本例中為實體 頁#2)當中。
在本實施例中,每一定址區塊134可用來管理255個位址群組,且每一位址群組包含有映射於2048個連續的邏輯位址的2048個實體位址。若某一特定位址群組原先被儲存在一定址區塊134x中(x可為A、B、C、…),則處理電路126可將該特定位址群組的更新版本,記錄在任何一個具有可用實體頁的可用定址區塊134中。因此,每一定址區塊134最多可管理該等資料區塊132中的522,240個(=255*2048)實體位址。若每一實體位址用以指向大小為8KB的實體頁,則控制器120可利用每一定址區塊134來管理大小為4,171,920KB(接近於4GB)的快閃記憶體的位址映射資訊。使用愈多的定址區塊134,控制器120就能管理愈大容量的快閃記憶體。
由於該等位址群組會分別記錄在多個定址區塊134中,處理電路126還會管理所有位址群組的配置資訊(allocation information),以便於需要時能找到特定的位址群組的存放位置。
在流程1540中,處理電路126會將該等位址群組的配置資訊寫入管理區塊136A。處理電路126可將所有位址群組的配置資訊,按照位址群組的編號,依序寫入管理區塊136A中,以形成如圖18所示的一位址群組配置表(address group allocation table)1810。在圖18的實施例中,每一位址群組的配置資訊,是用一定址區塊位置資訊(例如定址區塊編號)和一實體頁位置資訊(例如實體頁編號)的組合來表示的一實體位址。如圖所示,處理電路126會將第一個位址群組G0的配置資訊,寫入位址群組配置表 1810中的第一個位置;將第二個位址群組G1的配置資訊,寫入位址群組配置表1810中的第二個位置;將第三個位址群組G2的配置資訊,寫入位址群組配置表1810中的第三個位置;其餘依此類推。因此,第510個位址群組G509的配置資訊,會被記錄在位址群組配置表1810中的第510個位置。實作上,每一位址群組的配置資訊,可用適當大小的資料格式來記錄,例如長字元(longword)的格式。
換言之,在位址群組配置表1810中,處理電路126會將位址群組的配置資訊依照位址群組的群組編號的順序來排列。如此一來,特定位址群組的配置資訊的存放位置,就會對應於該特定位址群組的群組編號。因此,處理電路126無須將位址群組的群組編號記錄在位址群組配置表1810中。
由於這些包含邏輯位址的位址映射資訊的位址群組會儲存在定址區塊134中,而這些位址群組的配置資訊會儲存在管理區塊136A中,因此,快閃記憶體模組130的位址映射資訊不會在斷電後(例如切斷與主控裝置110的連接後)消失。因此,控制器120的處理電路126在快閃記憶體模組130下一次通電或連接主控裝置110時的初始化過程中,就不需要重新蒐集邏輯位址的所有位址映射資訊和該等位址群組的配置資訊。如此一來,就能有效降低對快閃記憶體模組130進行初始化所需的時間。
接下來,在描述流程圖1500的流程1550到流程1570的運作之前,將先說明一下本實施例中的處理電路126將邏輯位址轉譯成實體位址的運作方式。當通訊介面128從主控裝置1102接收到與一特定邏輯位址相關的存取指令時,處理電路126會參照管理區塊 136A中儲存的位址群組配置資訊和定址區塊134中儲存的位址映射資訊,將該邏輯位址轉譯成一相對應的實體位址。圖19為本發明將邏輯位址轉譯成實體位址的方法的一第二實施例簡化後的流程圖1900。
流程圖1900中的流程1010與前述流程圖1000中的流程1010原則上相同,故前述對流程圖1000中的流程1010的說明也適用在這邊。為便於說明,在此假設主控裝置110傳來的目標邏輯位址是邏輯位址520193。
在流程1920中,處理電路126會將該目標邏輯位址除以單一位址群組所能容納的位址映射資訊筆數的最大值,以獲得一商數Q和一餘數R。在本實施例中,單一位址群組所能容納的位址映射資訊筆數的最大值是2048。因此,處理電路126會將520193除以2048,以獲得一商數254和一餘數1。
在流程1930中,處理電路126會依據前述的商數Q,來判斷包含有該目標邏輯位址的位址映射資訊的一目標位址群組的群組編號。由於在流程1920中獲得的商數Q為254,故處理電路126會判定包含目標邏輯位址522241的位址映射資訊的目標位址群組是第255個位址群組G254,在本例中其群組編號為254。
在流程1940中,處理電路126會查找該目標位址群組的配置資訊。由於目標位址群組G254是第255個位址群組,故處理電路126會判斷目標位址群組G254的配置資訊,是記錄在管理區塊136A內所儲存的最新位址群組配置表中的第255個位置。在本例中,管理區塊136A中所儲存的最新位址群組配置表是位址群組配置表1810 ,而儲存在位址群組配置表1810的第255個位置中的配置資訊,所記載的內容是定址區塊#A和實體頁#254。
在流程1950中,處理電路126會依據前述的配置資訊來找出該目標位址群組的所在位置。處理電路126可依據該目標位址群組的配置資訊,來判斷出是哪個定址區塊中的哪個實體頁被用來記錄該目標位址群組的最新內容。在本例中,由於目標位址群組G254的配置資訊所記載的內容是定址區塊#A和實體頁#254,故處理電路126會判定位址群組G254的最新內容是記錄在定址區塊134A的實體頁#254中。
在流程1960中,處理電路126會依據該目標位址群組中的位址映射資訊,來找出映射於該目標邏輯位址的一實體頁位址。由於在流程1920中得到的餘數R是1,處理電路126會因此判定目標邏輯位址520193的位址映射資訊,是儲存在目標位址群組G254中的第2個位置。如圖17所示,在目標位址群組G254的第2個位置中,所記載的位址映射資訊內容是資料區塊#215和實體頁#42。因此,處理電路126會將目標邏輯位址520193轉譯成資料區塊#215中的實體頁#42。
與前述實施例類似,處理電路126在運作時不需要將記錄在定址區塊134中所有有效的位址映射資訊,都暫存在揮發性記憶體122中。處理電路126可以只將選自不同位址群組的局部位址映射資訊暫存在揮發性記憶體122中,並依據揮發性記憶體122中所暫存的這些局部位址映射資訊來進行圖19所描述的位址轉譯運作,以存取快閃記憶體模組130。
例如,在一實施例中,處理電路126會將每一位址群組切割成多個映射資訊段(mapping information segment),並只將分別選自不同位址群組的部分映射資訊段,暫存在揮發性記憶體122中。當主控裝置110要求存取一特定邏輯位址時,若當前暫存在揮發性記憶體122中的一特定映射資訊段包含有該特定邏輯位址的位址映射資訊,處理電路126會依據揮發性記憶體122所暫存的該特定映射資訊段當中的位址映射資訊,將該特定邏輯位址轉換成一相對應的實體位址,而不會從定址區塊134中擷取該位址映射資訊。另一方面,若當前暫存在揮發性記憶體122中的映射資訊段,都未包含該特定邏輯位址的位址映射資訊,則處理電路126會從定址區塊134中擷取該特定邏輯位址的有效位址映射資訊,並依據該有效位址映射資訊進行位址轉譯的運作。另外,處理電路126可利用適當的機制來更新暫存於揮發性記憶體122中的位址映射資訊。例如,處理電路126可將揮發性記憶體122中被利用率最低的映射資訊段剔除,而將包含有該特定邏輯位址的有效位址映射資訊的一目標映射資訊段,暫存到揮發性記憶體122中。由於處理電路126只需將記錄在定址區塊134中的所有有效位址映射資訊當中非常小比例的部分暫存於揮發性記憶體122,即可支援前述的位址轉譯運作,可大幅降低揮發性記憶體122所需的記憶體容量。
請回過頭參閱圖15。如前所述,當與某一邏輯位址相關的資料被更新或抹除時,邏輯位址和實體位址間的映射關係便會改變,進而造成邏輯位址原先的位址映射變成過時或無效的資料。因此,當資料更新或抹除運作發生時,處理電路126在流程1550中會判 斷定址區塊134中所記錄的哪個位址群組需要被更新。當處理電路126完成一項與特定邏輯位址有關的資料更新或抹除(或資料刪除)運作時,處理電路126會在流程1550中判定相對應的位址群組需要被更新,接著,便會進行流程1560。
在流程1560中,處理電路126會更新包含有該特定邏輯位址的過時位址映射資訊的特定位址群組,並將更新後的位址群組記錄在具有可用實體頁的一可用定址區塊134的一區段中。以下將搭配圖20到圖23來進一步說明流程1560的運作方式。
圖20和圖21是本發明更新邏輯位址的位址映射資訊的一第二實施例的示意圖。如圖20所示,將與邏輯位址4095相關的新資料寫入資料區塊#64的實體頁#175後,原先映射於邏輯位址4095的實體位址(亦即資料區塊#2351的實體頁#37)就變成無效資料,而當前映射於邏輯位址4095的有效實體位址是資料區塊#64的實體頁#175。由圖20中的位址映射402可以看出,前述的資料更新運作改變了位址群組G1的內容。
因此,處理電路126在流程1560中會更新位址群組G1的內容,並將更新後的位址群組G1記錄於一可用定址區塊134A中的一可用實體頁。例如,在圖20的實施例中,處理電路126可從定址區塊134A的記憶體頁#1中讀取位址群組G1原來的內容,並將邏輯位址4095的位址映射資訊從原先的實體位址(亦即資料區塊#2351的實體頁#37)變更成新的實體位址(亦即資料區塊#64的實體頁#175)。
接著,處理電路126會將更新後的位址群組G1的內容,寫入一可 用定址區塊134N的一可用實體頁#15中。在圖22的實施例中,處理電路126會將更新後的位址群組G1中的第一筆位址映射資訊(本例中為資料區塊#1和實體頁#34),和相對應的資料有效性標記,寫入定址區塊134N的實體頁#15中的第一個位置,以做為一資訊單元2202,接著,再將更新後的位址群組G1中的第二筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134N的實體頁#15中的第二個位置,以做為另一資訊單元,其餘依此類推。因此,更新後的位址群組G1中的第2048筆位址映射資訊(本例中為資料區塊#64和實體頁#175)和相對應的資料有效性標記,會被記錄在定址區塊134N的實體頁#15中的第2048個位置,以做為一資訊單元2204。
更新位址群組G1的內容到定址區塊134N的實體頁#15中的動作,會使得初始位址群組配置表1810中所記錄的位址群組G1的配置資訊變成過時的資料。因此,處理電路126會進行流程1570,將更新後的位址群組G1的新配置資訊記錄於管理區塊136A中。例如,處理電路126可從管理區塊136A中讀取位址群組配置表1810的原始內容,並將其中記錄的位址群組G1的配置資訊,由原先記載的內容(本例中為定址區塊#A和實體頁#1)變更成新的內容(本例中為定址區塊#N和實體頁#15)。接著,處理電路126再將位址群組G1的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成一更新後的位址群組配置表1820,如圖18所示。
之後,倘若處理電路126依據主控裝置110的要求而寫入邏輯位址524287的更新資料至資料區塊#2972的實體頁#17中,則邏輯位址 與快閃記憶體模組130的實體位址間的映射關係,會變成圖21中所繪示的位址映射404的情況。
由位址映射404可以看出,對邏輯位址524287所進行的資料更新運作,改變了位址群組G255中的第2048筆位址映射資訊。因此,處理電路126會進行流程1560以更新位址群組G255的內容,並將位址群組G255更新後的內容記錄於與一可用定址區塊134中的可用實體頁。例如,在圖22的實施例中,處理電路126可從定址區塊134B的記憶體頁#0中讀取位址群組G255原來的內容,並將其中的邏輯位址524287的位址映射資訊,從原先的實體位址(本例中為資料區塊#41的實體頁#88)變更成新的實體位址(本例中為資料區塊#2972的實體頁#17)。
接著,處理電路126會將更新後的位址群組G255的內容,寫入定址區塊134N的下一個可用實體頁#16中。例如,處理電路126可將更新後的位址群組G255中的第一筆位址映射資訊(本例中為資料區塊#610和實體頁#108),和相對應的資料有效性標記,寫入定址區塊134N的實體頁#16中的第一個位置,以做為一資訊單元2206,接著,再將更新後的位址群組G255中的第二筆位址映射資訊和相對應的資料有效性標記,寫入定址區塊134N的實體頁#16中的第二個位置,以做為另一資訊單元,其餘依此類推。因此,更新後的位址群組G255中的第2048筆位址映射資訊(本例中為資料區塊#2972和實體頁#17)和相對應的資料有效性標記,會被記錄在定址區塊134N的實體頁#16中的第2048個位置,以做為一資訊單元2208。
更新位址群組G255的內容到定址區塊134N的實體頁#16的動作, 會使得位址群組配置表1820中所記錄的位址群組G255的配置資訊變成過時的資料。因此,處理電路126會進行流程1570,將更新後的位址群組G255的新配置資訊記錄於管理區塊136A中。例如,處理電路126可從管理區塊136A中讀取位址群組配置表1820的原始內容,並將其中記錄的位址群組G255的配置資訊,由原先記載的內容(本例中為定址區塊$B和實體頁#0)變更成新的內容(本例中為定址區塊#1N和實體頁#16)。接著,處理電路126再將位址群組G255的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成一更新後的位址群組配置表1830,如圖18所示。
倘若主控裝置110之後要求控制器120抹除(或刪除)與特定邏輯位址有關的資料,處理電路126會進行圖15中的流程1560,以更新與該特定邏輯位址相關的位址群組,但不會立刻抹除當前映射於該特定邏輯位址的資料區塊中的實體頁所儲存的資料。
例如,若主控裝置110要求控制器120抹除(或刪除)與邏輯位址522240~526335有關的資料,處理電路126會更新包含有邏輯位址522240~526335的位址映射資訊的位址群組G255和G256的內容,來做為對於主控裝置110所傳來的抹除(或刪除)指令的回應。在圖23所繪示的一實施例中,處理電路126會將定址區塊134N的實體頁#16中所儲存的位址群組G255的全部位址映射資訊,複製到定址區塊134N中的下一個可用實體頁#17,並將這些位址映射資訊的資料有效性標記全設成一第二預定值,例如1,以代表這些位址映射資訊所指向的實體頁中所儲存的資料已經被「虛擬抹除」。接著,處理電路126會將定址區塊134B的實體頁#1 中所儲存的位址群組G256的全部位址映射資訊,複製到定址區塊134N中的下一個可用實體頁#18,並將這些位址映射資訊的資料有效性標記全設成該第二預定值1。
因此,儲存在定址區塊134N的實體頁#17中的資訊單元,會與儲存在定址區塊134N的實體頁#16中的資訊單元很類似,但差別在於資料有效性標記的值不同。而且,儲存在定址區塊134N的實體頁#18中的資訊單元,也會與儲存在定址區塊134B的實體頁#1中的資訊單元很類似,兩者的差異同樣是在於資料有效性標記的值不同。
在另一實施例中,處理電路126會只單純將定址區塊134N的實體頁#17中的該等資料有效性標記都設為1,而不把位址群組G255的其他內容複製到定址區塊134N的實體頁#17中。並且,處理電路126會只單純將定址區塊134N的實體頁#18中的該等資料有效性標記都設為1,而不把位址群組G256的其他內容複製到定址區塊134N的實體頁#18中。如此一來,可進一步加速更新和重新配置相關位址群組的運作,並降低在更新這些位址群組的過程中所需的記憶體。
換言之,當主控裝置110要求控制器120抹除(或刪除)與特定邏輯位址有關的資料時,處理電路126可以只單純的將更新後的相關位址群組寫入可用的定址區塊中,而不真的對相關的資料區塊執行傳統的抹除運作。藉由資料有效性標記的使用,能賦予控制器120更大的自由度來決定要在何時對相關的資料區塊執行真正的抹除運作,故控制器120不須在每次接收到主控裝置110傳來的抹除(或刪除)指令時,就立刻對相關的資料區塊執行真正的抹 除運作。如此一來,可有效降低快閃記憶體模組130進行區塊抹除運作的頻率,進而大幅改善快閃記憶體模組130的存取效能。
當主控裝置110之後發出與一特定邏輯位址有關的讀取指令時,處理電路126會進行前述流程圖1900所描述的位址轉譯方法,以找出該特定邏輯位址的位址映射資訊。若處理電路126發現該特定邏輯位址的位址映射資訊的資料有效性標記被設成1時,則處理電路126會透過通訊介面128回傳虛擬資料(dummy data)給主控裝置110。
更新位址群組G255和G256內容的運作,會使得位址群組配置表1830中所記錄的位址群組G255和G256的配置資訊變成過時的資料。因此,處理電路126會進行流程1570,將更新後的位址群組G255和G256的新配置資訊記錄於管理區塊136A中。處理電路126可從管理區塊136A中讀取位址群組配置表1830的原始內容,並將其中記錄的位址群組G255的配置資訊,由原先記載的值(本例中為定址區塊#N和實體頁#16)變更成新的設定(本例中為定址區塊#N和實體頁#17),並將其中記錄的位址群組G256的配置資訊,由原先記載的值(本例中為定址區塊#B和實體頁#1)變更成新的設定(本例中為定址區塊#N和實體頁#18)。接著,處理電路126再將位址群組G255和G256的新配置資訊連同其他位址群組原本的配置資訊,一同寫入管理區塊136A中,以形成更新後的位址群組配置表1840,如圖18所示。
在本實施例中的定址區塊134間並沒有前述實施例中的配對關係,故定址區塊134的更新時機與前述實施例不同。在本實施例中,處理電路126可監測各定址區塊134中所儲存的該等位址群組的 有效性狀況,並據以決定是否要清除(clean)一特定的定址區塊134。
請參考圖24,其所繪示為本發明監測定址區塊中的位址群組有效性況狀的方法的一實施例簡化後的流程圖2400。
在流程2410中,處理電路126會記錄每一定址區塊134的位址群組有效性資訊並暫存在揮發性記憶體122中。在本實施例中,處理電路126可用一有效群組計數值(valid group count)來代表一特定定址區塊134的位址群組有效性資訊。由於每一定址區塊134的最後一個實體頁被保留用來儲存群組編號序列,因此,當特定定址區塊134中的實體頁都填滿了有效的位址群組時,該特定定址區塊134的最大有效群組計數值是255。
處理電路126可依據特定定址區塊134中儲存的群組編號序列來查詢當時的位址群組配置表,以計算特定定址區塊134的有效群組計數值。以前面處理電路126剛建立圖18中的初始位址群組配置表1810的情況為例。當時,如前所述,處理電路126能依據定址區塊134A的實體頁#255中所儲存的群組編號序列,輕易地得知儲存在定址區塊134A中的所有位址群組G0~G254的群組編號,以及位址群組G0~G254的所在實體頁。處理電路126可從定址區塊134A所儲存的群組編號序列中獲得的位址群組G0~G254的配置資訊,並與初始位址群組配置表1810中所記載的位址群組G0~G254的配置資訊分別進行比較。例如,處理電路126可將定址區塊134A的初始有效群組計數值設成0,並於每次比對發現從定址區塊134A儲存的群組編號序列中所獲得的某一位址群組的配置資訊,與初始位址群組配置表1810中所記載的該位址群組的配置 資訊相吻合時,將定址區塊134A的有效群組計數值加1,並對每個位址群組都重複上述的配置資訊比對動作。或者,處理電路126也可將定址區塊134A的初始有效群組計數值設成255,並於每次比對發現從定址區塊134A儲存的群組編號序列中所獲得的某一位址群組的配置資訊,與初始位址群組配置表1810中所記載的該位址群組的配置資訊不吻合時,將定址區塊134A的有效群組計數值減1,並對每個位址群組都重複上述的配置資訊比對動作。在本例中,由於從定址區塊134A所儲存的群組編號序列中所獲得的所有位址群組G0~G254的配置資訊,都與初始位址群組配置表1810中所記載的位址群組G0~G254的配置資訊相符,故處理電路126會得到定址區塊134A的有效群組計數值為255。
在運作時,處理電路126可將各定址區塊134的有效群組計數值,依據區塊編碼的順序,依序記錄在揮發性記憶體122,以形成如圖25所示的一位址群組有效性表(address group validity table)2510。在圖25的實施例中,處理電路126會將第一個定址區塊134A的有效群組計數值記錄在位址群組有效性表2510中的第一個位置,將第二個定址區塊134B的有效群組計數值記錄在位址群組有效性表2510中的第二個位置,將第三個定址區塊134C的有效群組計數值記錄在位址群組有效性表2510中的第三個位置,其餘依此類推。因此,第14個定址區塊134N的位址群組有效性資訊,會被記錄在位址群組有效性表2510中的第14個位置。
在流程2420中,處理電路126會判斷是否需要更新任何定址區塊134的位址群組有效性資訊。每次處理電路126完成了更新一特定位址群組的動作時,處理電路126就會判定該特定位址群組原先 所在的一定址區塊的位址群組有效性資訊需要被更新。處理電路126也會判定新近用來儲存該特定位址群組的一定址區塊的位址群組有效性資訊同樣需要被更新。因此,每當處理電路126完成了更新一特定位址群組的動作時,處理電路126就會進行流程2430。
在流程2430中,處理電路126會更新相關定址區塊的位址群組有效性資訊。以前述圖20描述的處理電路126更新位址群組G1的情況為例,處理電路126在本例中會更新原先儲存在定址區塊134A的實體頁#1中的位址群組G1的內容,將更新後的位址群組G1記錄在定址區塊134N的實體頁#15中,並對應地更新位址群組G1的配置資訊。位址群組G1更新後的配置資訊,會使得原本記錄於定址區塊134A的實體頁#1中的位址群組G1的內容變成無效資料。此一更新位址群組G1的動作,不只會改變定址區塊134A的有效群組計數值,也會改變定址區塊134N的有效群組計數值。
因此,處理電路126會進行流程2430以更新定址區塊134A和定址區塊134N兩者的位址群組有效性資訊。如圖25所示,處理電路126會將定址區塊134N的有效群組計數值加1,並將定址區塊134A的有效群組計數值減1,以形成新的位址群組有效性表2520。
再舉前述圖21描述的處理電路126更新位址群組G255的情況做為另一個例子,處理電路126在本例中會更新原先儲存在定址區塊134B的實體頁#0中的位址群組G255的內容,將更新後的位址群組G255記錄在定址區塊134N的實體頁#16中,並對應地更新位址群組G255的配置資訊。位址群組G255更新後的配置資訊,會使得定址區塊134B中所記載的位址群組G255的原本內容變成無效資料。 此一更新位址群組G255的動作,不只會改變定址區塊134B的有效群組計數值,也會改變定址區塊134N的有效群組計數值。
因此,處理電路126會進行流程2430以更新定址區塊134B和定址區塊134N兩者的位址群組有效性資訊。如圖25所示,處理電路126會將定址區塊134N的有效群組計數值加1,並將定址區塊134B的有效群組計數值減1,以形成新的位址群組有效性表2530。
再舉前述圖23描述的處理電路126更新位址群組G255和G256的情況做為另一個例子。在本例中,處理電路126會更新原先儲存在定址區塊134N的實體頁#16中的位址群組G255的內容,將更新後的位址群組G255記錄在定址區塊134N的實體頁#17中,並對應地更新位址群組G255的配置資訊。並且,處理電路126會更新原先儲存在定址區塊134B的實體頁#1中的位址群組G256的內容,將更新後的位址群組G256記錄在定址區塊134N的實體頁#18中,並對應地更新位址群組G256的配置資訊
位址群組G255和G256更新後的配置資訊,會使得定址區塊134N中所記載的位址群組G255的原本內容變成無效資料,也會使得定址區塊134B中所記載的位址群組G256的原本內容變成無效資料。更新位址群組G255和G256的動作,不只會改變定址區塊134B的有效群組計數值,也會改變定址區塊134N的有效群組計數值。
因此,處理電路126會進行流程2430以更新定址區塊134B和定址區塊134N兩者的位址群組有效性資訊。
在本例中,雖然定址區塊134N中新增兩個有效的位址群組G255和G256,但儲存在定址區塊134N的實體頁#16中的位址群組G255的 原先資料會變成無效資料。因此,定址區塊134N的總有效群組計數值只會加1,故處理電路126會將定址區塊134B的有效群組計數值減1,並將定址區塊134N的有效群組計數值加1,以形成如圖25所示的新位址群組有效性表2540。
為了避免各定址區塊134的位址群組有效性資訊會在斷電後消失,處理電路126可於每次某一定址區塊134填滿位址群組時,將揮發性記憶體122當下所暫存的位址群組有效性表,寫入一管理區塊136中,例如管理區塊136B(未繪示)。
請參考圖26,其所繪示為本發明清除定址區塊的方法的一實施例簡化後的流程圖2600。
在運作時,處理電路126可於適當的時機進行流程2610,以將每一定址區塊134的位址群組有效性資訊與一預定閥值TH1進行比較。例如,處理電路126可間歇性地進行流程2610,或是趁著主控裝置110存取快閃記憶體模組130不太頻繁的空檔進行流程2610的運作。
在流程2620中,處理電路126會依據在流程2610的比較結果,選擇至少兩個定址區塊134做為候選定址區塊。處理電路126可選擇有效群組計數值低於預定閥值TH1的定址區塊134做為候選定址區塊。為了舉例說明,在此假設預定閥值TH1是12。在圖25的實施例中,處理電路126會選擇定址區塊134H和134J做為候選定址區塊,因為它們的有效群組計數值小於12。
在流程2630中,處理電路126會將候選定址區塊134H和134J中所記錄的有效位址群組,複製到具有夠多可用實體頁可儲存這些有 效位址群組的一目標定址區塊中。為了舉例說明,在此假設處理電路126選擇定址區塊134P做為目標定址區塊。將候選定址區塊134H和134J中的有效位址群組複製到目標定址區塊134P的運作方式,類似於前述流程圖1500中的流程1560。
在流程2640中,處理電路126會抹除候選定址區塊134H和134J,以釋出這些區塊的儲存空間供後續使用。
在流程2650中,處理電路126會更新從候選定址區塊134H和134J複製到目標定址區塊134P中的那些有效位址群組的配置資訊。更新儲存在目標定址區塊134P中的有效位址群組的配置資訊的方式,原則上很類似於前述流程圖1500中的流程1570。因此,處理電路126會將這些有效位址群組在定址區塊134P中的新所在實體位址,寫入到管理區塊136A中以形成一更新後的位址群組配置表。
接著,處理電路126會進行流程2430以更新相關定址區塊的位址群組有效性資訊。流程圖2600中的流程2430和流程圖2400中的流程2430原則上相同。在本例中,處理電路126會更新定址區塊134H、134J和134P的位址群組有效性資訊。
前述流程圖2600中各流程的執行順序只是一實施例,而非侷限本發明的實際實施方式。例如,流程圖2600中的流程2640、2650和2430可同時進行,也可以任意順序進行。
另外,前述流程2610中所使用預定閥值TH1也可以依據快閃記憶體模組130的區塊使用狀況來動態調整。在一實施例中,處理電路126可以隨時依據所有定址區塊134的有效群組計數值總和來動態調整預定閥值TH1。例如,處理電路126可於所有定址區塊134 的有效群組計數值總和低於一第一預定水平時,調增TH1的值,並於所有定址區塊134的有效群組計數值總和高於一第二預定水平時,調降TH1的值。
在另一實施例中,處理電路126可以依據快閃記憶體模組130的可用區塊數量來動態調整預定閥值TH1,其中,可用區塊在此指的可以是資料區塊132、定址區塊134、或兩者的組合。例如,處理電路126可於快閃記憶體模組130的可用資料區塊132數量低於一第一預定數量時,調增TH1的值,並於快閃記憶體模組130的可用資料區塊132數量高於一第二預定數量時,調降TH1的值。同樣地,處理電路126可於快閃記憶體模組130的可用定址區塊134數量低於一第三預定數量時,調增TH1的值,並於快閃記憶體模組130的可用定址區塊134數量高於一第四預定數量時,調降TH1的值。
為了避免各定址區塊134的位址群組有效性資訊會在斷電後消失,處理電路126也可於完成定址區塊134的清除動作時,將揮發性記憶體122當下所暫存的位址群組有效性表,寫入一管理區塊136B中。
在前述的實施例中,處理電路126是使用特定定址區塊134的有效群組計數值,來表示特定定址區塊134的位址群組有效性資訊。但這只是實施例之一,而非侷限本發明的實際實施方式。例如,在另一實施例中,處理電路126可改用特定定址區塊134的無效群組計數值(invalid group count)來表示特定定址區塊134的位址群組有效性資訊。在這種情況下,流程圖2600中所使用的比較演算法和參數,例如預定閥值TH1,都要做對應的調整。
由前述說明可知,由於本實施例中的定址區塊134間沒有兩兩配對使用的關係,故控制器120在選擇要清除哪些定址區塊上有更大的自由度。因此,可避免對定址區塊進行沒必要的清除動作。如此一來,可進一步降低快閃記憶體模組130進行區塊抹除動作的頻率,進而改善快閃記憶體模組130的存取效能。
在前述的實施例中,處理電路126在每一位址群組中所記錄的位址映射資訊是記憶體頁的真實實體位址。但這只是實施例之一,而非侷限本發明的實際實施方式。例如,處理電路126可以先將快閃記憶體的實體位址都先轉換成虛擬位址,例如虛擬頁編號,然後再將這些虛擬位址群組成多個位址群組。如此一來,每一位址群組中所包含的位址映射資訊會變成虛擬位址。因此,每一位址群組中所包含的位址映射資訊,可以是實體位址,也可以是任何形式的虛擬位址。
前面的部分說明了管理和更新邏輯位址的位址映射資訊的方法的部份實施例,以及將邏輯位址轉譯成相對應的實體位址的方法的部分實施例。由前述說明可知,處理電路126可利用定址區塊134和管理區塊136以不同的方式來管理和更新位址映射資訊。以下將搭配圖27到圖29來進一步說明清除資料區塊132的運作方式。與前述清除定址區塊134的運作類似,本實施例的處理電路126可監測各資料區塊132中所儲存的內容的有效性狀況,並依據所儲存的內容的有效性狀況來決定是否要清除一特定的資料區塊132。
請參考圖27,其所繪示為本發明監測資料區塊中的記體頁有效性況狀的方法的一實施例簡化後的流程圖2700。
在流程2710中,處理電路126會記錄每一資料區塊132的記憶體頁有效性資訊,並暫存在揮發性記憶體122中。在本實施例中,處理電路126可用一有效頁計數值(valid page count)來代表一特定資料區塊132的記憶體頁有效性資訊。由於每一資料區塊132的最後一個實體頁被保留用來儲存邏輯位址序列(如圖2所示),因此,當特定資料區塊132中的實體頁都填滿了有效的資料和邏輯位址時,該特定資料區塊132的最大有效頁計數值是255。
處理電路126可依據特定資料區塊132中儲存的邏輯位址序列,來查詢當時相對應的有效位址群組中所記載的位址映射資訊,以計算特定資料區塊132的有效頁計數值。以前面圖2中處理電路126剛將邏輯位址序列記錄在資料區塊132A的目標頁中的情況為例。當時,如前所述,處理電路126能依據資料區塊132A的實體頁#255中所儲存的邏輯位址序列,輕易地得知儲存在資料區塊132A中的所有邏輯位址L1、L5、…、Li,以及這些邏輯位址分別存放在資料區塊132A中的那些實體頁。處理電路126可從資料區塊132A的目標頁中所儲存的邏輯位址序列,獲得儲存於資料區塊132A中的一特定邏輯位址的一第一位址映射資訊,並進行前述圖10或圖19的位址轉譯方法,以從一相對應的位址群組中獲得該特定邏輯位址的一第二位址映射資訊。若該第一位址映射資訊與該第二位址映射資訊相符,則處理電路126會判定資料區塊132A中用來儲存該特定邏輯位址的實體頁是一有效頁(valid page)。反之,處理電路126則會判定資料區塊132A中用來儲存該特定邏輯位址的實體頁是一無效頁(invalid page)。
因此,處理電路126可將從資料區塊132A中儲存的邏輯位址序列 所獲得的邏輯位址L1、L5、…、Li的位址映射資訊,與相對應的位址群組中所記載的邏輯位址L1、L5、…、Li的位址映射資訊逐一進行比較,以得出資料區塊132A的有效頁計數值。例如,處理電路126可將資料區塊132A的初始有效頁計數值設成0,並於每次比對發現從資料區塊132A儲存的邏輯位址序列中所獲得的某一邏輯位址的位址映射資訊,與相對應的位址群組中所記載的該邏輯位址的位址映射資訊相吻合時,將資料區塊132A的有效頁計數值加1,並對其他邏輯位址都重複上述的位址映射資訊比對動作。或者,處理電路126也可將資料區塊132A的初始有效頁計數值設成255,並於每次比對發現從資料區塊132A儲存的邏輯位址序列中所獲得的某一邏輯位址的位址映射資訊,與相對應的位址群組中所記載的該邏輯位址的位址映射資訊不相符時,將資料區塊132A的有效頁計數值減1,並對其他邏輯位址都重複上述的位址映射資訊比對動作。
在運作時,處理電路126可將各資料區塊132的有效頁計數值,依據區塊編碼的順序,依序記錄在揮發性記憶體122,以形成如圖28所示的一記憶體頁有效性表(page validity table)2810。在圖28的實施例中,處理電路126會將第一個資料區塊#0的有效頁計數值,記錄在記憶體頁有效性表2810中的第一個位置,將第二個資料區塊#1的有效頁計數值記錄在記憶體頁有效性表2810中的第二個位置,將第三個資料區塊#2的有效頁計數值記錄在記憶體頁有效性表2810中的第三個位置,其餘依此類推。因此,第346個資料區塊#345的記憶體頁有效資訊,會被記錄在記憶體頁有效性表2810中的第346個位置。
在流程2720中,處理電路126會判斷是否需要更新任何資料區塊132的記憶體頁有效性資訊。每次處理電路126完成了一特定邏輯位址的資料更新動作時,處理電路126就會判定該特定邏輯位址原先所在的一資料區塊的記憶體頁有效性資訊需要被更新。處理電路126也會判定新近用來儲存該特定邏輯位址的一資料區塊的記憶體頁有效性資訊同樣需要被更新。
因此,每當處理電路126完成了某一特定邏輯位址的資料更新動作時,處理電路126就會進行流程2730,以更新相關資料區塊的記憶體頁有效性資訊。
先以前述圖11或圖20描述的處理電路126將與邏輯位址4095相關的新資料寫入資料區塊#64的實體頁#175中的情況為例來說明。在本例中,處理電路126會如前所述將更新資料寫入資料區塊#64的實體頁#175中、更新邏輯位址4095的位址映射資訊、並相應地更新位址群組G1的配置資訊。對邏輯位址4095進行資料更新的動作,會使得原本記載在資料區塊#2351的實體頁#37中的內容變成無效資料。此一邏輯位址4095的資料更新動作,不只會改變資料區塊#2351的有效頁計數值,也會改變資料區塊#64的有效頁計數值。
因此,處理電路126會進行流程2730以更新資料區塊#2351和資料區塊#64兩者的記憶體頁有效性資訊。如圖28所示,處理電路126會將資料區塊#64的有效頁計數值加1,並將資料區塊#2351的有效頁計數值減1,以形成新的記憶體頁有效性表2820。
再舉前述圖12或圖21描述的處理電路126將與邏輯位址524287相 關的新資料寫入資料區塊#2972的實體頁#17中的情況做為另一個例子。在本例中,處理電路126會如前所述將更新資料寫入資料區塊#2972的實體頁#17中、更新邏輯位址524287的位址映射資訊、並相應地更新位址群組G255的配置資訊。對邏輯位址524287進行資料更新的動作,會使得原本記載在資料區塊#41的實體頁#88中的內容變成無效資料。此一邏輯位址524287的資料更新動作,不只會改變資料區塊#2972的有效頁計數值,也會改變資料區塊#41的有效頁計數值。
因此,處理電路126會進行流程2730以更新資料區塊#2972和資料區塊#41兩者的記憶體頁有效性資訊。如圖28所示,處理電路126會將資料區塊#2972的有效頁計數值加1,並將資料區塊#41的有效頁計數值減1,以形成新的記憶體頁有效性表2830。
再舉前述圖14或圖23描述的主控裝置110要求抹除(或刪除)與邏輯位址522240~526335有關的資料的情況做為另一個例子來說明。在本例中,處理電路126會如前所述將位址群組G255中的所有位址映射資訊的資料有效性標記設為1、將位址群組G256中的所有位址映射資訊的資料有效性標記設為1、並更新位址群組G255和G256兩者的配置資訊。
抹除與邏輯位址522240~526335相關的資料的動作,會使得原本記載在映射於邏輯位址522240~526335的相關實體頁中的內容變成無效資料。例如,此一資料抹除動作會使得原本記載在資料區塊#610的實體頁#108、資料區塊#2972的實體頁#17、和資料區塊#345的實體頁#191當中的內容都變成無效資料。因此,此一資料抹除動作會改變資料區塊#610、資料區塊#2972、資料區塊 #345、和其他與位址群組G255和G256相關的資料區塊的有效頁計數值。
因此,處理電路126會進行流程2730以更新與位址群組G255和G256相關的資料區塊的記憶體頁有效性資訊。例如,如圖28所示,處理電路126會將資料區塊#345的有效頁計數值減1,將資料區塊#518的有效頁計數值減1,將資料區塊#610的有效頁計數值減1,將資料區塊#2972的有效頁計數值減1,並將其他與位址群組G255和G256相關的資料區塊的有效頁計數值都減1,以形成新的記憶體頁有效性表2840。
為了避免各資料區塊132的記憶體頁有效性資訊會在斷電後消失,處理電路126可於每次某一資料區塊132填滿資料和邏輯位址時,將揮發性記憶體122當下所暫存的記憶體頁有效性表,寫入一管理區塊136B中。
請參考圖29,其所繪示為本發明清除資料區塊的方法的一實施例簡化後的流程圖2900。
在運作時,處理電路126可於適當的時機進行流程2910,以將每一資料區塊132的記憶體頁有效性資訊與一預定閥值TH2進行比較。例如,處理電路126可間歇性地進行流程2910,或是趁著主控裝置110存取快閃記憶體模組130不太頻繁時進行流程2910的運作。
在流程2920中,處理電路126會依據在流程2910的比較結果,選擇至少兩個資料區塊132做為候選資料區塊。處理電路126可選擇有效頁計數值低於預定閥值TH2的資料區塊132做為候選資料區塊 。為了舉例說明,在此假設預定閥值TH2是20。在圖28的實施例中,處理電路126會選擇資料區塊#1和資料區塊#41做為候選資料區塊,因為它們的有效頁計數值小於20。
在流程2930中,處理電路126會將候選資料區塊#1和資料區塊#41中的有效記憶體頁的內容,複製到具有夠多可用實體頁可儲存這些有效內容的一目標資料區塊中。為了舉例說明,在此假設處理電路126選擇資料區塊#809做為目標資料區塊。因此,處理電路126會將候選資料區塊#1和資料區塊#41中的有效記憶體頁的儲存內容,複製到目標資料區塊#809的可用實體頁中。
由於流程2930的動作,會改變原先儲存在候選資料區塊#1和資料區塊#41的有效記憶體頁中的那些邏輯位址與實體位址間的映射關係,因此,處理電路126會進行流程2940,以更新包含有這些邏輯位址的位址映射資訊的相關位址群組。實作上,處理電路126可採用與前述流程圖600中的流程650相同的方式,來更新相關位址群組的內容。或者,處理電路126也可用與前述流程圖1500中的流程1560相同的方式,來更新相關的位址群組的內容。
在流程2950中,處理電路126會控制快閃記憶體模組130抹除候選資料區塊#1和資料區塊#41,以釋出這些資料區塊的儲存空間供後續使用。
在流程2960中,處理電路126會更新那些在前面流程2940中被更新的位址群組的配置資訊。實作上,處理電路126可採用與前述流程圖600中的流程660相同的方式,來更新相關位址群組的配置資訊。或者,處理電路126也可採用與前述流程圖1500中的流程 1570相同的方式,來更新相關位址群組的配置資訊。
接著,處理電路126會進行流程2730,以更新相關資料區塊的記憶體頁有效性資訊。流程圖2900中的流程2730和流程圖2700中的流程2730原則上相同。在本例中,處理電路126會更新資料區塊#1、資料區塊#41、和資料區塊#809的記憶體頁有效性資訊。
前述流程圖2900中各流程的執行順序只是一實施例,而非侷限本發明的實際實施方式。例如,流程圖2900中的流程2940、2950、2960和2730可同時進行,也可以以任意順序進行。
另外,前述流程2910中所使用預定閥值TH2也可以依據快閃記憶體模組130的區塊使用狀況來動態調整。在一實施例中,處理電路126可以隨時依據所有資料區塊132的有效頁計數值總和來動態調整預定閥值TH2。例如,處理電路126可於所有資料區塊132的有效頁計數值總和低於一第三預定水平時,調增TH2的值,並於所有資料區塊132的有效頁計數值總和高於一第四預定水平時,調降TH2的值。
在另一實施例中,處理電路126可以依據快閃記憶體模組130的可用區塊數量來動態調整預定閥值TH2,在此所稱的可用區塊可以是資料區塊132、定址區塊134、或兩者的組合。例如,處理電路126可於快閃記憶體模組130的可用資料區塊132數量低於一第五預定數量時,調增TH2的值,並於快閃記憶體模組130的可用資料區塊132數量高於一第六預定數量時,調降TH2的值。同樣地,處理電路126可於快閃記憶體模組130的可用定址區塊134數量低於一第七預定數量時,調增TH2的值,並於快閃記憶體模組130的可 用定址區塊134數量高於一第八預定數量時,調降TH2的值。
為避免各資料區塊132的記憶體頁有效性資訊因斷電而消失,處理電路126也可於完成資料區塊132的清除動作時,將揮發性記憶體122當下所暫存的記憶體頁有效性表,寫入管理區塊136B中。
由前述說明可知,處理電路126會持續監測每一資料區塊的記憶體頁有效性資訊,並依據它們的記憶體頁有效性資訊來選擇要進行清除的資料區塊,而不論被選擇到的資料區塊是否屬於同一資料寫入群組。因此,屬於同一資料寫入群組中的個別資料區塊,例如圖2中的資料區塊132A、132B、132C、和132D,是否要被處理電路126清除是彼此獨立的。在本實施例中,倘若處理電路126在流程2920中選擇了某一特定資料寫入群組中的一資料區塊和不屬於該特定資料寫入群組的另一資料區塊,來做為候選資料區塊,則處理電路126就只會清除這兩個被選擇的候選資料區塊,而不會把該特定資料寫入群組中的其他資料區塊隨著被選到的那個資料區塊一起抹除。亦即,在抹除了那兩個候選資料區塊後,處理電路126可將資料和相關的邏輯位址,寫入該特定資料寫入群組中的其他資料區塊的可用實體頁當中,而無須先將這些資料區塊抹除。
藉由這種方式,控制器120將可獲得更大的自由度來決定那些資料區塊要被清除,可避免進行不必要的資料區塊清除動作。例如,將可避免將特定資料寫入群組中的其他資料區塊,隨著被選做候選資料區塊的區塊成員一起抹除這類的情況。如此一來,前揭用來管理位址映射資訊的架構,以及清除定址區塊與資料區塊的方法,不只能有效降低快閃記憶體模組130進行區塊抹除動作的 頻率,還能有效降低控制器120必須在很短時間內清除完畢的區塊數量。因此,將可大幅提升存取快閃記憶體模組130的速度。例如,前揭用來管理位址映射資訊的架構,以及清除定址區塊與資料區塊的方法,可將存取由三階儲存單元(TLC)晶片構成的快閃記憶體模組的速度,提升至符合Class 6等級的存取速度水準。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧資料儲存系統
110‧‧‧主控裝置
120‧‧‧控制器
122‧‧‧揮發性記憶體
124‧‧‧非揮發性記憶體
126‧‧‧處理電路
128‧‧‧通訊介面
130‧‧‧快閃記憶體模組
132‧‧‧資料區塊
134‧‧‧定址區塊
136‧‧‧管理區塊

Claims (43)

  1. 一種用來管理一快閃記憶體模組的控制器,包含有:一通訊介面,用於耦接一主控裝置;以及一處理電路,耦接於該通訊介面,用於將包含有對應於第一組連續的M個邏輯位址的第一組M個位址的一第一位址群組依據相對應的該第一組連續的M個邏輯位址的位址順序記錄於一第一定址區塊中的一第一記憶體頁,將包含有對應於第二組連續的M個邏輯位址的第二組M個位址的一第二位址群組依據相對應的該第二組連續的M個邏輯位址的位址順序記錄於該第一定址區塊中的一第二記憶體頁,將包含有對應於第三組連續的M個邏輯位址的第三組M個位址的一第三位址群組依據相對應的該第三組連續的M個邏輯位址的位址順序記錄於一第二定址區塊中的一第一記憶體頁,以及將包含有對應於第四組連續的M個邏輯位址的第四組M個位址的一第四位址群組依據相對應的該第四組連續的M個邏輯位址的位址順序記錄於該第二定址區塊中的一第二記憶體頁;其中M是大於1的整數、該第二組M個邏輯位址接續於該第一組M個邏輯位址、該第三組M個邏輯位址接續於該第二組M個邏輯位址、且該第四組M個邏輯位址接續於該第三組M個邏輯位址。
  2. 如請求項1所述的控制器,其中該處理電路另會將該第一定址區塊中所儲存的N個位址群組的N個群組編號,記錄於該第一定址區塊中的一目標記憶體頁以形成一群組編號序列。
  3. 如請求項2所述的控制器,其中該處理電路會依據該N個位址群組 在該第一定址區塊中的儲存位置,將該N個群組編號依序記錄於該第一定址區塊中的該目標記憶體頁。
  4. 如請求項1所述的控制器,其中該處理電路另用於:將對應於該第二組M個邏輯位址中的一第一邏輯位址的一第一實體位址,和一相對應的第一資料有效性標記,記錄於該第一定址區塊中的該第二記憶體頁;以及將對應於該第二組M個邏輯位址中的一第二邏輯位址的一第二實體位址,和一相對應的第二資料有效性標記,記錄於該第一定址區塊中的該第二記憶體頁;其中,該處理電路會將該第一資料有效性標記以及該第二資料有效性標記均設為一第一預定值,以代表儲存在該第一定址區塊的該第二記憶體頁的該第一實體位址以及該第二實體位址是有效的資料。
  5. 如請求項4所述的控制器,其中若該通訊介面自該主控裝置接收到對應於該第二邏輯位址的一讀取指令,該處理電路會依據該第一定址區塊的該第二記憶體頁中所儲存的內容,將該第二邏輯位址轉換成一相對應的實體頁位址。
  6. 如請求項5所述的控制器,另包含有:一揮發性記憶體,耦接於該處理電路;其中該處理電路會將該第一定址區塊的該第二記憶體頁中所記錄的部份實體位址暫存於該揮發性記憶體,並依據該揮發性記憶體中所暫存的實體位址將該第二邏輯位址轉換成相對應的實體頁位址。
  7. 如請求項4所述的控制器,其中若該通訊介面自該主控裝置接收到與該第二位址群組的一第三實體位址相對應的一第三邏輯位址的 一抹除指令,該處理電路會將對應於該第三邏輯位址的一第三資料有效性標記設定為一第二預定值;以及若該通訊介面自該主控裝置接收到與該第三位址群組的一第四實體位址相對應的一第四邏輯位址的一抹除指令,該處理電路會將對應於該第四邏輯位址的一第四資料有效性標記設定為該第二預定值。
  8. 如請求項7所述的控制器,其中當該通訊介面自該主控裝置接收到對應於該第三邏輯位址的一讀取指令時,若該第三邏輯位址所對應的資料有效性標記被設定為該第二預定值,則該處理電路會回傳虛擬資料給該主控裝置。
  9. 如請求項4所述的控制器,其中該處理電路另會將該第一和第二定址區塊中的J個位址群組所在的J個實體位址記錄於一第一管理區塊中。
  10. 如請求項9所述的控制器,其中該處理電路會依據該J個位址群組的群組編號,將該J個實體位址依序記錄於該第一管理區塊中。
  11. 如請求項9所述的控制器,其中該處理電路另會將該J個位址群組中個別位址群組的所在區塊位置資訊和記憶體頁位置資訊,記錄於該第一管理區塊中以形成一第一位址群組配置表。
  12. 如請求項11所述的控制器,其中該處理電路另用於將至少兩個候選定址區塊中的有效位址群組,儲存於一第四定址區塊,並將該第四定址區塊中的複數個位址群組的所在實體位址記錄於該第一管理區塊中。
  13. 如請求項12所述的控制器,其中該處理電路另用於將複數個定址區塊個別的位址群組有效性資訊,記錄於一非揮發性的第二管理區塊中以形成一位址群組有效性表。
  14. 如請求項13所述的控制器,其中該處理電路另用於將該複數個定址區塊個別的位址群組有效性資訊與一預定閥值進行比較,並依據比較的結果從該複數個定址區塊中選出至少兩定址區塊做為候選定址區塊;其中,該複數個定址區塊個別的位址群組有效性資訊儲存在該非揮發性的第二管理區塊中。
  15. 如請求項14所述的控制器,其中該處理電路另會依據該快閃記憶體模組的區塊使用狀況,動態地調整該預定閥值。
  16. 如請求項15所述的控制器,其中該處理電路會依據該複數個定址區塊的有效位址群組總數,來動態地調整該預定閥值。
  17. 如請求項15所述的控制器,其中該處理電路會依據該快閃記憶體模組的可用區塊總數,來動態地調整該預定閥值。
  18. 如請求項9所述的控制器,其中該處理電路另會將該J個位址群組中個別位址群組的所在區塊類型資訊和記憶體頁位置資訊,記錄於該第一管理區塊中以形成一第二位址群組配置表。
  19. 如請求項18所述的控制器,其中該處理電路另用於將成對的兩個候選定址區塊中的有效位址群組,儲存於一第六定址區塊,並將該第六定址區塊中的複數個位址群組的所在實體位址記錄於該第一管理區塊中。
  20. 如請求項9所述的控制器,另包含有:一揮發性記憶體,耦接於該處理電路;其中若該通訊介面自該主控裝置接收到對應於該第二邏輯位址的一存取指令,該處理電路會將該第一定址區塊的該第二記憶體頁中所記錄的部份實體位址暫存於該揮發性記憶體,並依據該揮發性記憶體中所暫存的實體位址將該第二邏輯位址轉換成相對應的 實體頁位址。
  21. 如請求項20所述的控制器,其中若該通訊介面自該主控裝置接收到對應於一第三邏輯位址的一寫入指令,該處理電路會更新該第一管理區塊的內容。
  22. 如請求項4所述的控制器,其中若該通訊介面自該主控裝置接收到對應於該第二組M個邏輯位址中的一第三邏輯位址的一寫入指令,該處理電路會將該第三邏輯位址和相對應的資料寫入一資料區塊中的一實體頁,更新該第一定址區塊的第二記憶體頁中所記錄的該第二位址群組,並將更新後的第二位址群組記錄於一目標定址區塊中的一實體頁。
  23. 如請求項22所述的控制器,其中當該目標定址區塊填滿了更新後的位址群組時,該處理電路會將該第一定址區塊與該目標定址區塊一起清除。
  24. 一種用來管理一快閃記憶體模組的控制器,包含有:一處理電路,用於將複數個位址群組記錄於複數個定址區塊中,其中該處理電路會將每一位址群組寫入該複數個定址區塊的其中一定址區塊的一實體頁,且每一位址群組包含有分別對應於複數個連續的邏輯位址的複數個位址映射資訊;以及一通訊介面,耦接於該處理電路,用於自一主控裝置接收對應於一目標邏輯位址的一寫入指令;其中該處理電路會將該目標邏輯位址和相關的資料寫入目標資料區塊中的一目的地記憶體頁,從該複數個位址群組中取得對應於該目標邏輯位址的位址映射資訊,依據該目標資料區塊的該目的地記憶體頁的實體位置資訊更新所取得的位址映射資訊,以及將包含有該目標邏輯位址更新後的位址映射資訊的一目標位址群組 寫入一目標定址區塊中的一目標記憶體頁。
  25. 如請求項24所述的控制器,其中該處理電路另會記錄該複數個位址群組個別的配置資訊,以及依據該目標定址區塊的該目標記憶體頁的實體位置資訊,更新該目標位址群組的配置資訊。
  26. 如請求項25所述的控制器,其中該處理電路會將該第一定址區塊中所儲存的N個位址群組的N個群組編號,記錄於該第一定址區塊中的一記憶體頁。
  27. 如請求項26所述的控制器,其中該處理電路另用於:為該第一定址區塊設定一初始有效位址群組數;將該N個位址群組記錄中的配置資訊,與依據該N個群組編號所獲得的該N個位址群組的配置資訊進行比較;以及依據比較的結果調整該初始有效位址群組數,以獲得該第一定址區塊的一有效位址群組數。
  28. 一種用來存取一快閃記憶體模組的控制器,包含有:一處理電路,用於將包含有對應於第一組連續的M個邏輯位址的第一組M個位址的一第一位址群組依據相對應的該第一組連續的M個邏輯位址的位址順序記錄於一第一定址區塊中的一第一記憶體頁,將包含有對應於第二組連續的M個邏輯位址的第二組M個位址的一第二位址群組依據相對應的該第二組連續的M個邏輯位址的位址順序記錄於該第一定址區塊中的一第二記憶體頁,將包含有對應於第三組連續的M個邏輯位址的第三組M個位址的一第三位址群組依據相對應的該第三組連續的M個邏輯位址的位址順序記錄於一第二定址區塊中的一第一記憶體頁,以及將包含有對應於第四組連續的M個邏輯位址的第四組M個位址的一第四位址群組依據相對應的該第四組連續的M個邏輯位址的位址順序記錄於該第二定址區塊 中的一第二記憶體頁;以及一通訊介面,耦接於該處理電路;其中M是大於1的整數、該第二組M個邏輯位址接續於該第一組M個邏輯位址、該第三組M個邏輯位址接續於該第二組M個邏輯位址、且該第四組M個邏輯位址接續於該第三組M個邏輯位址;又,若該通訊介面自一主控裝置接收到與位於該第一、第二、第三、或第四組邏輯位址中的一目標邏輯位址相對應的一讀取指令,該處理電路會依據該第一、第二、第三、或第四位址群組中所記錄的內容,將該目標邏輯位址轉換成一相對應的目標實體位址,並存取該目標實體位址所指向的該快閃記憶體模組中的一記憶體頁。
  29. 如請求項28所述的控制器,另包含有:一揮發性記憶體,耦接於該處理電路;其中該處理電路會將該第一、第二、第三、或第四位址群組中所記錄的部份實體位址暫存於該揮發性記憶體,並依據該揮發性記憶體中所暫存的實體位址將該目標邏輯位址轉換成該目標實體位址。
  30. 如請求項29所述的控制器,其中該處理電路另用於:將對應於該第二組M個邏輯位址中的一第一邏輯位址的一第一實體位址,和一相對應的第一資料有效性標記,記錄於該第一定址區塊中的該第二記憶體頁;以及將對應於該第二組M個邏輯位址中的一第二邏輯位址的一第二實體位址,和一相對應的第二資料有效性標記,記錄於該第一定址區塊中的該第二記憶體頁;其中,該處理電路會將該第一資料有效性標記以及該第二資料有 效性標記均設為一第一預定值,以代表儲存在該第一定址區塊的該第二記憶體頁的該第一實體位址以及該第二實體位址是有效的資料。
  31. 如請求項30所述的控制器,其中若該通訊介面自該主控裝置接收到與該第二位址群組的一第三實體位址相對應的一第三邏輯位址的一抹除指令,該處理電路會將對應於該第三邏輯位址的一第三資料有效性標記設定為一第二預定值;以及若該通訊介面自該主控裝置接收到與該第三位址群組的一第四實體位址相對應的一第四邏輯位址的一抹除指令,該處理電路會將對應於該第四邏輯位址的一第四資料有效性標記設定為該第二預定值。
  32. 如請求項31所述的控制器,其中當該通訊介面自該主控裝置接收到對應於該第三邏輯位址的一讀取指令時,若該第三邏輯位址所對應的資料有效性標記被設定為該第二預定值,則該處理電路會回傳虛擬資料給該主控裝置。
  33. 如請求項30所述的控制器,其中該處理電路另會將該第一和第二定址區塊中的J個位址群組所在的J個實體位址記錄於一第一管理區塊中。
  34. 一種用來存取一快閃記憶體模組的控制器,包含有:一通訊介面,用於耦接於一主控裝置;以及一處理電路,耦接於該通訊介面,用於將複數個邏輯位址依序來回寫入至一資料寫入群組中的複數個資料區塊;其中每次該處理電路寫入該複數個邏輯位址的其中之一到該資料寫入群組中的一資料區塊後,該處理電路會將下一個邏輯位址寫入該資料寫入群組中的另一資料區塊; 又,在抹除了該資料寫入群組中的一第一資料區塊後,該處理電路會將資料寫入該資料寫入群組中的一第二資料區塊,而不先將該第二資料區塊抹除。
  35. 如請求項34所述的控制器,其中該處理電路另用於:將該複數個邏輯位址中的一第一邏輯位址寫入該第一資料區塊中的一第一記憶體頁;寫入該第一邏輯位址至該第一資料區塊中的該第一記憶體頁後,將該複數個邏輯位址中的一第二邏輯位址寫入該第二資料區塊中的一第一記憶體頁;以及寫入該第二邏輯位址至該第二資料區塊中的該第一記憶體頁後,將該複數個邏輯位址中的一第三邏輯位址寫入該第一資料區塊中的一第二記憶體頁。
  36. 如請求項34所述的控制器,其中該處理電路在抹除該第一資料區塊前,會將該第一資料區塊和一第三資料區塊中的有效記憶體頁的內容,儲存到一目標資料區塊;其中該第三資料區塊和該目標資料區塊不在該資料寫入群組中。
  37. 如請求項34所述的控制器,其中該處理電路會將該第一資料區塊和該第二資料區塊的記憶體頁有效資訊記錄到一第二管理區塊。
  38. 如請求項37所述的控制器,其中該處理電路會比較該第一資料區塊的記憶體頁有效資訊與一預定閥值,並依據比較結果判斷是否抹除該第一資料區塊。
  39. 如請求項38所述的控制器,其中該處理電路另會依據該快閃記憶體模組的區塊使用狀況,動態地調整該預定閥值。
  40. 如請求項39所述的控制器,其中該處理電路會依據複數個資料區塊的有效記憶體頁總數,來動態地調整該預定閥值。
  41. 如請求項39所述的控制器,其中該處理電路會依據該快閃記憶體模組的可用區塊數量,來動態地調整該預定閥值。
  42. 如請求項37所述的控制器,其中該處理電路另用於:將該第一資料區塊中儲存的N個邏輯位址,記錄在該第一資料區塊中的一目標記憶體頁;記錄該N個邏輯位址的位址映射資訊;將與該N個邏輯位址中的一目標邏輯位址相對應的更新資料,寫入一目的地資料區塊中的一目的地記憶體頁;以及依據該目的地資料區塊的該目的地記憶體頁的實體位置資訊,更新該目標邏輯位址的位址映射資訊。
  43. 如請求項42所述的控制器,其中該處理電路另用於:為該第一資料區塊設定一有效記憶體頁初始計數值;將該N個邏輯位址記錄中的位址映射資訊,與依據該N個邏輯位址所獲得的位址映射資訊進行比較;以及依據比較的結果調整該有效記憶體頁初始計數值,以獲得該第一資料區塊的記憶體頁有效資訊。
TW100118037A 2010-05-24 2011-05-23 用來管理和存取快閃記憶體模組的控制器 TWI436208B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US34750010P 2010-05-24 2010-05-24

Publications (2)

Publication Number Publication Date
TW201142589A TW201142589A (en) 2011-12-01
TWI436208B true TWI436208B (zh) 2014-05-01

Family

ID=44973424

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100115461A TWI437439B (zh) 2010-05-24 2011-05-03 用來以動態門檻進行區塊管理之方法及記憶裝置及控制器
TW100118037A TWI436208B (zh) 2010-05-24 2011-05-23 用來管理和存取快閃記憶體模組的控制器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100115461A TWI437439B (zh) 2010-05-24 2011-05-03 用來以動態門檻進行區塊管理之方法及記憶裝置及控制器

Country Status (3)

Country Link
US (3) US9104546B2 (zh)
CN (2) CN102262594A (zh)
TW (2) TWI437439B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI685747B (zh) * 2017-05-03 2020-02-21 大陸商合肥沛睿微電子股份有限公司 延伸裝置與記憶系統

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101279710B1 (ko) * 2011-04-01 2013-06-27 엘에스산전 주식회사 Plc 데이터 로그모듈 및 이의 데이터 저장 방법
US9158670B1 (en) * 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
KR101919934B1 (ko) * 2012-04-19 2018-11-20 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법 및 극 부호화된 부호어를 불휘발성 메모리 장치의 멀티 비트 데이터에 매핑하는 매핑 패턴을 선택하는 매핑 패턴 선택 방법
US20130282962A1 (en) * 2012-04-20 2013-10-24 SMART Storage Systems, Inc. Storage control system with flash configuration and method of operation thereof
CN103377135B (zh) * 2012-04-25 2016-04-13 上海东软载波微电子有限公司 寻址方法、装置及***
JP6072428B2 (ja) * 2012-05-01 2017-02-01 テセラ アドバンスト テクノロジーズ インコーポレーテッド 制御装置、記憶装置、記憶制御方法
TWI544334B (zh) * 2012-05-30 2016-08-01 慧榮科技股份有限公司 資料儲存裝置與資料儲存裝置操作方法
TWI486767B (zh) * 2012-06-22 2015-06-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
CN103530062B (zh) * 2012-07-03 2016-12-21 群联电子股份有限公司 数据存储方法、存储器控制器与存储器存储装置
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9740485B2 (en) 2012-10-26 2017-08-22 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
CN103811054B (zh) * 2012-11-15 2017-09-19 北京兆易创新科技股份有限公司 一种NAND Flash存储器、NAND Flash存储器实现方法及其***
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
CN105493051B (zh) * 2013-06-25 2019-03-08 马维尔国际贸易有限公司 自适应高速缓冲存储器控制器
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9645896B2 (en) * 2013-12-26 2017-05-09 Silicon Motion, Inc. Data storage device and flash memory control method
TWI545571B (zh) * 2014-02-18 2016-08-11 慧榮科技股份有限公司 存取快閃記憶體的方法及相關的控制器與記憶裝置
US10365835B2 (en) 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
KR20160075165A (ko) * 2014-12-19 2016-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
KR20170044782A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN105389130A (zh) * 2015-11-16 2016-03-09 联想(北京)有限公司 一种信息处理方法及固态硬盘
WO2017095911A1 (en) * 2015-12-01 2017-06-08 Huang Yiren Ronnie Method and apparatus for logically removing defective pages in non-volatile memory storage device
US9880743B1 (en) * 2016-03-31 2018-01-30 EMC IP Holding Company LLC Tracking compressed fragments for efficient free space management
TWI590051B (zh) * 2016-06-21 2017-07-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
KR102530262B1 (ko) * 2016-07-21 2023-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11237758B2 (en) 2016-08-06 2022-02-01 Wolley Inc. Apparatus and method of wear leveling for storage class memory using address cache
US10229047B2 (en) * 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
US10380028B2 (en) * 2016-12-30 2019-08-13 Western Digital Technologies, Inc. Recovery of validity data for a data storage system
CN107678684B (zh) * 2017-08-22 2020-11-10 深圳市硅格半导体有限公司 存储器的无效数据清除方法、装置和存储器
CN107632944B (zh) * 2017-09-22 2021-06-18 郑州云海信息技术有限公司 一种读取数据的方法及装置
CN109671458A (zh) * 2017-10-17 2019-04-23 联发科技股份有限公司 管理闪存模块的方法及相关的闪存控制器
TWI661303B (zh) * 2017-11-13 2019-06-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
KR20200133817A (ko) * 2018-04-23 2020-11-30 마이크론 테크놀로지, 인크. 호스트 논리적-대-물리적 정보 리프레시
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table
CN109343887A (zh) * 2018-09-20 2019-02-15 深圳市零点智联科技有限公司 一种优化stm32芯片dfu升级的方法
TWI681296B (zh) * 2018-09-28 2020-01-01 慧榮科技股份有限公司 記憶卡存取裝置及方法以及電腦程式產品
TWI726524B (zh) * 2019-12-09 2021-05-01 新唐科技股份有限公司 電子處理裝置及記憶體控制方法
US11500578B2 (en) * 2021-04-19 2022-11-15 Micron Technology, Inc. Memory access threshold based memory management

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4757438A (en) * 1984-07-12 1988-07-12 Texas Instruments Incorporated Computer system enabling automatic memory management operations
JP2833062B2 (ja) * 1989-10-30 1998-12-09 株式会社日立製作所 キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
US5784706A (en) * 1993-12-13 1998-07-21 Cray Research, Inc. Virtual to logical to physical address translation for distributed memory massively parallel processing systems
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US7620769B2 (en) * 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
KR100526178B1 (ko) * 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
WO2005103903A1 (ja) * 2004-04-20 2005-11-03 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶システム
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US7779426B2 (en) * 2006-03-30 2010-08-17 Microsoft Corporation Describing and querying discrete regions of flash storage
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
KR100824412B1 (ko) * 2006-12-08 2008-04-22 삼성전자주식회사 메모리 카드 시스템 및 그것의 수명 정보 전송 방법
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
CN101256534B (zh) 2007-03-01 2010-10-06 创惟科技股份有限公司 闪存的高效率静态平均抹除方法
US8701010B2 (en) * 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US7908423B2 (en) * 2007-07-25 2011-03-15 Silicon Motion, Inc. Memory apparatus, and method of averagely using blocks of a flash memory
CN201142229Y (zh) * 2007-12-05 2008-10-29 苏州壹世通科技有限公司 一种闪存阵列装置
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
KR101077339B1 (ko) * 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
US8417893B2 (en) * 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
CN101339808B (zh) 2008-07-28 2011-02-09 华中科技大学 存储块的擦除方法及装置
CN101645309B (zh) * 2008-08-05 2013-05-22 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US8412880B2 (en) * 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8713066B1 (en) * 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI685747B (zh) * 2017-05-03 2020-02-21 大陸商合肥沛睿微電子股份有限公司 延伸裝置與記憶系統

Also Published As

Publication number Publication date
US20130304975A1 (en) 2013-11-14
TW201142589A (en) 2011-12-01
CN102332290A (zh) 2012-01-25
TWI437439B (zh) 2014-05-11
US20110289260A1 (en) 2011-11-24
CN102332290B (zh) 2015-02-04
US9104546B2 (en) 2015-08-11
US9529709B2 (en) 2016-12-27
TW201142602A (en) 2011-12-01
US9606911B2 (en) 2017-03-28
CN102262594A (zh) 2011-11-30
US20110289255A1 (en) 2011-11-24

Similar Documents

Publication Publication Date Title
TWI436208B (zh) 用來管理和存取快閃記憶體模組的控制器
US9514057B2 (en) Storage module and method for managing logical-to-physical address mapping
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US7487303B2 (en) Flash memory device and associated data merge method
JP4960882B2 (ja) クラスタ自動位置合わせ
US8166258B2 (en) Skip operations for solid state disks
KR101002978B1 (ko) 플래시 메모리 관리 시스템 및 방법
US8001317B2 (en) Data writing method for non-volatile memory and controller using the same
KR100441587B1 (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
JP4533956B2 (ja) フラッシュメモリシステムのデータ記憶容量の解放
US9021187B2 (en) Logical block address remapping
US10496334B2 (en) Solid state drive using two-level indirection architecture
TW200419345A (en) A flash file system
WO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
KR20100034743A (ko) 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
US9037814B2 (en) Flash memory management method and flash memory controller and storage system using the same
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US10599333B2 (en) Storage device having dual access procedures
TW201727472A (zh) 資料儲存方法及其系統
JP2000181784A (ja) 書き換え可能な不揮発性記憶装置
CN214376421U (zh) Ftl加速器及控制部件
TW201624490A (zh) 記憶體裝置及非暫態電腦可讀取記錄媒體
CN110096452A (zh) 非易失随机访问存储器及其提供方法
CN110968520B (zh) 基于统一缓存架构的多流存储设备
US20080109588A1 (en) Memory Card and Method of Driving the Same