TWI421869B - 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 - Google Patents
用於快閃記憶體的資料寫入方法及其控制器與儲存系統 Download PDFInfo
- Publication number
- TWI421869B TWI421869B TW098134801A TW98134801A TWI421869B TW I421869 B TWI421869 B TW I421869B TW 098134801 A TW098134801 A TW 098134801A TW 98134801 A TW98134801 A TW 98134801A TW I421869 B TWI421869 B TW I421869B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- physical
- block
- logical
- page address
- Prior art date
Links
Classifications
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Description
本發明是有關於一種用於快閃記憶體的資料寫入方法,且特別是有關於一種能夠有效率地將資料寫入至快閃記憶體的資料寫入方法以及使用此方法的快閃記憶體控制器與快閃記憶體儲存系統。
由於快閃記憶體(Flash Memory)具有資料非揮發性、省電、體積小與無機械結構等的特性,最適合使用於由電池供電的可攜式電子產品上。例如,固態硬碟就是一種以NAND快閃記憶體作為儲存媒體的儲存裝置,並且已廣泛配置於筆記型電腦中作為主要的儲存裝置。
一般來說,快閃記憶體儲存裝置的快閃記憶體晶片(chip)會劃分為多個實體區塊,其中實體區塊更劃分為多個實體頁面,而實體區塊是快閃記憶體的抹除單位並且實體頁面是快閃記憶體的寫入單位。由於在程式化快閃記憶體之記憶胞時,僅能執行單向的程式化(即,僅能將記憶胞的值由1程式化為0),因此無法對已程式化的實體頁面(即,存有舊資料的頁面)直接進行寫入,而是必須先將此實體頁面抹除後方可重新程式化。特別是,由於快閃記憶體的抹除是以實體區塊為單位,因此當欲將存有舊資料的實體頁面執行抹除運作時,必須對此實體頁面所屬的整個實體區塊進行抹除。因此,快閃記憶體晶片的實體區塊會被區分為資料區與備用區,其中資料區的實體區塊是已被使用來儲存資料的實體區塊,而備用區中的實體區塊是未被使用的實體區塊,其中當主機系統欲寫入資料至快閃記憶體儲存裝置時,快閃記憶體儲存裝置的控制電路會從備用區中提取實體區塊來寫入資料,並且將所提取的實體區塊會關聯為資料區。並且,當資料區的實體區塊被執行抹除運作(erase operation)後,已抹除的實體區塊會被關聯為備用區。
由於主機系統是以邏輯位址來進行寫入,並且主機系統寫入資料至邏輯位址時經常不會依據邏輯位址的順序來寫入。基此,當快閃記憶體儲存裝置需要對實體區塊進行抹除運作時,快閃記憶體儲存裝置需要花費相當大的時間來整理實體區塊中的有效資料與無效資料。因此,如何提升在快閃記憶體所寫入資料的速度是此領域技術人員所致力的目標。
本發明提供一種資料寫入方法,其能夠有效地縮短寫入資料至快閃記憶體的時間。
本發明提供一種快閃記憶體控制器,其能夠有效地縮短寫入資料至快閃記憶體的時間。
本發明提供一種快閃記憶體儲存系統,其能夠有效地縮短寫入資料至快閃記憶體的時間。
本發明範例實施例提出一種資料寫入方法,用於將來自於主機系統的資料寫入至快閃記憶體晶片中,其中此快閃記憶體晶片包括多個實體區塊,每一實體區塊具有多個實體頁位址。本資料寫入方法包括配置多個邏輯頁位址;將邏輯頁位址分組為多個邏輯區塊;以及記錄每一邏輯區塊的資料散亂度,其中每一邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目。本資料寫入方法也包括從主機系統中接收寫入資料,其中此寫入資料是被寫入至邏輯頁位址之中的一第一邏輯頁位址,並且此第一邏輯頁位址屬於邏輯區塊之中的一第一邏輯區塊。本資料寫入方法還包括取得實體頁位址之中的一第一實體頁位址。本資料寫入方法更包括依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中,其中每一邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
在本發明之一實施例中,上述之資料寫入方法更包括將上述實體區塊至少分組為一資料區與一備用區。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中的步驟包括:當D1<TH1時,則將此寫入資料寫入至所取得的第一實體頁位址中,其中D1為第一邏輯區塊的資料散亂度,TH1為邏輯區塊資料散亂度門檻值。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中的步驟更包括:當D1=TH1時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則從上述備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中。
在本發明之一實施例中,上述之資料寫入方法更包括:記錄每一實體區塊的資料散亂度,其中每一實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中的步驟包括:依據第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將此寫入資料寫入至快閃記憶體晶片中,其中每一實體區塊的資料散亂度皆不大於一實體區塊資料散亂度門檻值。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將寫入資料寫入至快閃記憶體晶片中的步驟包括:當D1<TH1並且D2<TH2時,則將此寫入資料寫入至所取得的第一實體頁位址中,其中D1為第一邏輯區塊的資料散亂度,TH1為邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為實體區塊資料散亂度門檻值。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將此寫入資料寫入至快閃記憶體晶片中的步驟更包括:當D1<TH1並且D2=TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則從備用區中選擇一個實體區塊並且將此寫入資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將此寫入資料寫入至快閃記憶體晶片中的步驟更包括:當D1=TH1並且D2=TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,上述之依據第一邏輯區塊的資料散亂度、所取得的實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將此寫入資料寫入至快閃記憶體晶片中的步驟更包括:當D1=TH1並且D2<TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊。
本發明範例實施例提出一種快閃記憶體控制器,用於將來自於主機系統的資料寫入至快閃記憶體晶片中,其中此快閃記憶體晶片包括多個實體區塊,且每一實體區塊具有多個實體頁位址。本快閃記憶體控制器包括微處理器單元、快閃記憶體介面單元、主機介面單元與記憶體管理單元。快閃記憶體介面單元耦接至微處理器單元,用以耦接至上述快閃記憶體晶片。主機介面單元耦接至微處理器單元,用以耦接至主機系統。記憶體管理單元耦接至微處理器單元,用以配置多個邏輯頁位址,將邏輯頁位址分組為多個邏輯區塊,並且記錄每一邏輯區塊記錄的資料散亂度,其中每一邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目。此外,主機介面單元從主機系統中接收一寫入資料,其中此寫入資料是被寫入至邏輯頁位址之中的一第一邏輯頁位址,並且第一邏輯頁位址屬於邏輯區塊之中的一第一邏輯區塊。另外,記憶體管理單元取得實體頁位址之中的一第一實體頁位址。再者,記憶體管理單元依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中,其中每一邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
在本發明之一實施例中,上述之記憶體管單元將實體區塊至少分組為一資料區與一備用區。
在本發明之一實施例中,當D1<TH1時,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1時,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則記憶體管理單元從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中。
在本發明之一實施例中,上述之記憶體管理單元記錄每一實體區塊的資料散亂度,其中每一實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
在本發明之一實施例中,上述之記憶體管理單元更依據所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將寫入資料寫入至快閃記憶體晶片中,其中每一實體區塊的資料散亂度皆不大於一實體區塊資料散亂度門檻值。
在本發明之一實施例中,當D1<TH1並且D2<TH2時,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1<TH1並且D2=TH2時,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則記憶體管理單元從備用區中選擇一個實體區塊並且將此寫入資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1並且D2=TH2時,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則記憶體管理單元從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1並且D2<TH2時,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則記憶體管理單元將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的實體區塊的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則記憶體管理單元從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中。
本發明範例實施例提出一種快閃記憶體儲存系統,其包括快閃記憶體晶片、連接器與快閃記憶體控制器。快閃記憶體晶片具有多個實體區塊並且每一實體區塊具有多個實體頁位址。連接器用以耦接至主機系統。快閃記憶體控制器耦接至快閃記憶體晶片與連接器,用以配置多個邏輯頁位址,將邏輯頁位址分組為多個邏輯區塊,並且記錄每一邏輯區塊記錄的資料散亂度,其中每一邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目。此外,連接器從主機系統中接收一寫入資料,其中此寫入資料是被寫入至邏輯頁位址之中的一第一邏輯頁位址,並且此第一邏輯頁位址屬於邏輯區塊之中的一第一邏輯區塊。另外,快閃記憶體控制器取得實體頁位址之中的一第一實體頁位址。再者,快閃記憶體控制器依據第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將此寫入資料寫入至快閃記憶體晶片中,其中每一邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
在本發明之一實施例中,上述之快閃記憶體控制器將實體區塊至少分組為一資料區與一備用區。
在本發明之一實施例中,當D1<TH1時,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1時,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則快閃記憶體控制器從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中。
在本發明之一實施例中,上述之快閃記憶體控制器記錄每一實體區塊的資料散亂度,其中每一實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
在本發明之一實施例中,上述之快閃記憶體控制器更依據所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將此寫入資料寫入至快閃記憶體晶片中,其中每一實體區塊的資料散亂度不大於一實體區塊資料散亂度門檻值。
在本發明之一實施例中,當D1<TH1並且D2<TH2時,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1<TH1並且D2=TH2時,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則快閃記憶體控制器從備用區中選擇一個實體區塊並且將此寫入資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1並且D2=TH2時,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則快閃記憶體控制器從備用區中選擇其中一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中。
在本發明之一實施例中,當D1=TH1並且D2<TH2時,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有第一邏輯區塊的資料,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中;此外,當所取得的第一實體頁位址所屬的實體區塊無儲存有第一邏輯區塊的資料,則快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料時,則快閃記憶體控制器將此寫入資料寫入至所取得的第一實體頁位址中並且將用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中;並且,當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的資料時,則快閃記憶體控制器從備用區中選擇一個實體區塊並且將此寫入資料和用於儲存第一邏輯區塊的資料的其中一個實體區塊中屬於第一邏輯區塊的所有資料寫入至所選擇的實體區塊中。
基於上述,本發明範例實施例能夠避免所儲存的資料過於分散,由此有效地縮短執行主機寫入指令的時間。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
快閃記憶體儲存裝置一般而言包括快閃記憶體晶片與控制器(亦稱,控制電路)。通常快閃記憶體儲存裝置會與主機系統一起使用,以使主機系統可將資料寫入至快閃記憶體儲存裝置或從快閃記憶體儲存裝置中讀取資料。另外,亦有快閃記憶體儲存裝置是包括嵌入式快閃記憶體與可執行於主機系統上以實質地作為此嵌入式快閃記憶體之控制器的軟體。
圖1A是根據本發明第一範例實施例所繪示的使用快閃記憶體儲存裝置的主機系統。
請參照圖1A,主機系統1000包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108以及資料傳輸介面1110。輸入/輸出裝置1106包括如圖1B所示的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,快閃記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的處理主機系統1000可將資料寫入至快閃記憶體儲存裝置100或從快閃記憶體儲存裝置100中讀取資料。例如,快閃記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216。
一般而言,主機系統1000為可儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中,主機系統1000亦可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機1310時,快閃記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、或CF卡1318或嵌入式儲存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖1D是繪示圖1A所示的快閃記憶體儲存裝置100的概要方塊圖。
請參照圖1D,快閃記憶體儲存裝置100包括連接器102、快閃記憶體控制器104與快閃記憶體晶片106。
連接器102是耦接至快閃記憶體控制器104並且用以耦接至主機系統1000。在本範例實施例中,連接器102為序列先進附件(Serial Advanced Technology Attachment,SATA)連接器。然而,必須瞭解的是本發明不限於此,連接器102亦可以是平行先進附件(Parallel Advanced Technology Attachment,PATA)連接器、通用序列匯流排(Universal Serial Bus,USB)連接器、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394連接器、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)連接器、安全數位(secure digital,SD)介面連接器、記憶棒(Memory Sick,MS)介面連接器、多媒體儲存卡(Multi Media Card,MMC)介面連接器、小型快閃(Compact Flash,CF)介面連接器、整合式驅動電子介面(Integrated Device Electronics,IDE)連接器或其他適合的連接器。
快閃記憶體控制器104會執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在快閃記憶體晶片106中進行資料的寫入、讀取與抹除等運作。快閃記憶體控制器104包括微處理器單元202、記憶體管理單元204、主機介面單元206、快閃記憶體介面單元208。
微處理器單元202為快閃記憶體控制器104的主控單元,用以與記憶體管理單元204、主機介面單元206與快閃記憶體介面單元208等協同合作以進行快閃記憶體儲存裝置100的各種運作。
記憶體管理單元204是耦接至微處理器單元202,用以執行根據本範例實施例的資料寫入機制與區塊管理機制,記憶體管理單元204的運作將於以下配合圖式作詳細說明。
在本範例實施例中,記憶體管理單元204是以一韌體型式實作在快閃記憶體控制器104中。例如,將包括多個控制指令的記憶體管理單元204燒錄至一程式記憶體(例如,唯讀記憶體(Read Only Memory,ROM))中並且將此程式記憶體嵌入在快閃記憶體控制器104中,當快閃記憶體儲存裝置100運作時,記憶體管理單元204的多個控制指令會由微處理器單元202來執行以完成根據本發明實施例的資料寫入機制與區塊管理機制。
在本發明另一範例實施例中,記憶體管理單元204的控制指令亦可以程式碼型式儲存於快閃記憶體晶片106的特定區域(例如,快閃記憶體晶片中專用於存放系統資料的系統區)中。同樣的,當快閃記憶體儲存裝置100運作時,記憶體管理單元204的多個控制指令會由微處理器單元202來執行。此外,在本發明另一範例實施例中,記憶體管理單元204亦可以一硬體型式實作在快閃記憶體控制器104中。
主機介面單元206是耦接至微處理器單元202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面單元206來傳送至微處理器單元202。在本範例實施例中,主機介面單元206是對應連接器204為SATA介面。然而,必須瞭解的是本發明不限於此,主機介面單元210亦可以是PATA介面、USB介面、IEEE 1394介面、PCI Express介面、SD介面、MS介面、MMC介面、CF介面、IDE介面或其他適合的資料傳輸介面。
快閃記憶體介面單元208是耦接至微處理器單元202並且用以存取快閃記憶體晶片106。也就是說,欲寫入至快閃記憶體晶片106的資料會經由快閃記憶體介面單元208轉換為快閃記憶體晶片106所能接受的格式。
在本發明另一範例實施例中,快閃記憶體控制器亦可更包括其他功能模組。圖2是根據本發明另一範例實施例所繪示的快閃記憶體控制器的概要方塊圖。
請參照圖2,除了微處理器單元202、記憶體管理單元204、主機介面單元206與快閃記憶體介面單元208之外,快閃記憶體控制器104'更包括緩衝記憶體252、電源管理單元254與錯誤校正單元256。
緩衝記憶體252是耦接至微處理器單元202並且用以暫存來自於主機系統1000的資料與指令或來自於快閃記憶體晶片106的資料。
電源管理單元254是耦接至微處理器單元202並且用以控制快閃記憶體儲存裝置100的電源。
錯誤校正單元256是耦接至微處理器單元202並且用以執行一錯誤校正程序以確保資料的正確性。具體來說,當記憶體管理單元204從主機系統1000中接收到主機寫入指令時,錯誤校正單元256會為對應此主機寫入指令的寫入資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code),並且記憶體管理單元204會將此寫入資料與對應的錯誤校正碼寫入至快閃記憶體晶片106中。之後,當記憶體管理單元204從快閃記憶體晶片106中讀取資料時會同時讀取此資料對應的錯誤校正碼,並且錯誤校正單元256會依據此錯誤校正碼對所讀取的資料執行錯誤校正程序。
請再參照圖1D,快閃記憶體晶片106是耦接至快閃記憶體控制器104並且用以儲存資料。快閃記憶體晶片106具有實體區塊122-(0)~122-(N)。實體區塊為抹除之最小單位。亦即,每一實體區塊含有最小數目之一併被抹除之記憶胞。每一實體區塊具有數個實體頁面。在本範例實施例中,實體頁面為程式化的最小單元。換言之,實體頁面為寫入資料或讀取資料的最小單元。每一實體頁面通常包括使用者資料區與冗餘區。使用者資料區用以儲存使用者的資料,而冗餘區用以儲存系統的資料(例如,錯誤檢查與校正碼)。在本範例實施例中,快閃記憶體晶片106為多層記憶胞(Multi Level Cell,MLC)NAND快閃記憶體晶片。然而,本發明不限於此,快閃記憶體晶片106亦可是單層記憶胞(Single Level Cell,SLC)NAND快閃記憶體晶片。
圖3A是根據本發明第一範例實施例所繪示之快閃記憶體晶片的方塊圖。必須瞭解的是,在此描述快閃記憶體之實體區塊的運作時,以“提取”、“交換”、“分組”、“輪替”等詞來操作實體區塊是邏輯上的概念。也就是說,快閃記憶體之實體區塊的實際位置並未更動,而是邏輯上對快閃記憶體的實體區塊進行操作。
請參照圖3A,記憶體管理單元204會將實體區塊122-(0)~122-(N)邏輯地分組為系統區(system area)302、儲存區(storage area)304與取代區(replacement area)306。
邏輯上屬於系統區302的實體區塊122-(0)~122-(S)是用以記錄系統資料,此系統資料包括關於快閃記憶體晶片的製造商與型號、每一快閃記憶體晶片的區域數、每一區域的實體區塊的數目、每一實體區塊的實體頁面數等。
邏輯上屬於儲存區304的實體區塊122-(S+1)~~122-(A)是用以主機系統1000所寫入的資料。也就是說,快閃記憶體儲存裝置100會使用分組為儲存區304的實體區塊來實際地儲存主機系統1000所寫入的資料。更詳細來說,儲存區304的實體區塊122-(S+1)~122-(A)更分組為資料區304a與備用區304b,其中資料區304的實體區塊122-(S+1)~122-(D)是已被使用來儲存資料的實體區塊,而備用區304b的實體區塊122-(D+1)~122-(A)是未被使用來儲存資料的實體區塊。具體來說,當記憶體管理單元204從備用區304b提取實體區塊來寫入資料時,所提取的實體區塊會被關聯為資料區304a,並且當關聯為資料區304a的實體區塊被執行抹除運作後已抹除的實體區塊會被關聯為備用區304b。
邏輯上屬於取代區306中的實體區塊122-(A+1)~122-(N)是替代實體區塊。例如,快閃記憶體晶片106於出廠時會預留4%的實體區塊作為更換使用。也就是說,當系統區302與儲存區304中的實體區塊損毀時,預留於取代區306中的實體區塊可用以取代損壞的實體區塊(即,壞實體區塊(bad block))。因此,倘若取代區306中仍存有可用之實體區塊且發生實體區塊損毀時,記憶體管理模組204會從取代區306中提取可用的實體區塊來更換損毀的實體區塊。倘若取代區306中無可用之實體區塊且發生實體區塊損毀時,則快閃記憶體儲存裝置100將會被宣告為寫入保護(write protect),而無法再寫入資料。
由於快閃記憶體儲存裝置100是以輪替地使用儲存區304的實體區塊來儲存主機系統1000欲儲存之資料,因此記憶體管理單元204會提供邏輯頁位址給主機系統1000以進行資料存取,並且記憶體管理單元204會將此些邏輯頁位址分組為邏輯區塊350-(0)~350-(H),其中邏輯區塊350-(0)~350-(H)會映射儲存區304的實體區塊(如圖3B所示)。例如,記憶體管理單元204會維護邏輯頁轉實體頁映射表以及實體頁轉邏輯頁映射表來記錄邏輯頁位址與實體頁位址之間的映射關係。
具體來說,在本發明範例實施例中,當主機系統1000在邏輯區塊350-(0)~350-(H)的邏輯頁位址中寫入資料時,記憶體管理單元204將資料寫入至儲存區304的實體區塊的實體頁位址中。具體來說,當記憶體管理單元204開始使用實體區塊122-(D+1)來儲存主機系統1000欲寫入的資料時,不管主機系統1000是寫入那個邏輯頁位址,記憶體管理單元會將資料依序地寫入至實體區塊122-(D+1)的實體頁位址;而當記憶體管理單元204開始使用實體區塊122-(D+2)來儲存主機系統1000欲寫入的資料時,不管主機系統1000是寫入那個邏輯頁位址,記憶體管理單元會將資料依序地寫入至實體區塊122-(D+2)的實體頁位址中。也就是說,在寫入主機系統1000欲寫入的資料時,記憶體管理單元204會依序地使用一個實體區塊內的實體頁位址來寫入資料,並且當此實體區塊內的實體頁位址被使用完後才會再選擇另一個無儲存資料的實體區塊(即,從備用區304b中提取一個實體區塊),並且在新選擇之實體區塊的實體頁位址中繼續依序地寫入資料。在本範例實施例中,在記憶體管理單元204將資料寫入至實體頁位址後,記憶體管理單元204會更新邏輯頁轉實體頁映射表與實體頁轉邏輯頁映射表以正確地記錄邏輯頁位址與實體頁位址的映射關係。
必須瞭解的是,在快閃記憶體儲存裝置100的運作中,實體區塊122-(0)~122-(N)被分組為系統區302、資料區304a、備用區304b與取代區306的映射關係會動態地變動。也就是說,當記憶體管理單元204將資料寫入至原本屬於備用區304b的實體區塊(例如,實體區塊122-(D+2))後,此實體區塊會被關聯為資料區304a。或者,當資料區304a(或備用區304b)中的實體區塊損壞時而被取代區306的實體區塊取代時,則原本取代區306的實體區塊會被關聯為資料區304a(或備用區304b)。
值得一提的是,在本發明一範例實施例中,在記憶體管理單元204中更包括一可寫入實體頁指標(Available Physical Page Pointer),用以指示目前可寫入實體頁位址。基此,當快閃記憶體控制器104執行來自於主機系統1000的主機寫入指令來寫入資料時,記憶體管理單元204可依據可寫入實體頁指標的標記依序地將資料寫入至快閃記憶體晶片106的實體頁位址中。在此,目前可寫入實體頁位址所屬的實體區塊亦稱為目前可寫入實體區塊。
圖4A與圖4B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的範例,其中邏輯區塊350-(0)~350-(H)包括邏輯頁位址LBA-(0)~LBA(L),並且儲存區304的實體區塊包括實體頁位址PBA-(0)~PBA(K)。在本範例實施例中,邏輯頁轉實體頁映射表具有邏輯頁索引欄位與實體頁位址欄位來記錄每一邏輯頁位址所映射的實體頁位址,並且實體頁轉邏輯頁映射表具有實體頁索引欄位與邏輯頁位址欄位來記錄每一實體頁位址所映射的邏輯頁位址。
請參照圖4A與4B,假設邏輯頁位址LBA-(0)~邏輯頁位址LBA-(L)是分別地映射實體頁位址PBA-(0)~實體頁位址PBA-(L),也就是說,實體頁位址PBA-(0)~實體頁位址PBA-(L)已分別儲存主機系統1000在邏輯頁位址LBA-(0)~邏輯頁位址LBA-(L)中所寫入的資料。因此,邏輯頁轉實體頁映射表410以及實體頁轉邏輯頁映射表420會記錄此些映射關係,並且此時可寫入實體頁指標會指向實體頁位址PBA-(L+1)。
圖5A與圖5B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的另一範例。
請參照圖5A與5B,倘若在圖4A與圖4B的映射關係下主機系統1000欲寫入資料至邏輯頁位址LBA-(1)時,記憶體管理單元204會依據可寫入實體頁指標將主機系統1000欲寫入的資料寫入至實體頁位址PBA-(L+1)中,並且將可寫入實體頁指標改為指向實體頁位址PBA-(L+2)。此時,記憶體管理單元204會在邏輯頁轉實體頁映射表410中將邏輯頁位址LBA-(1)的映射更新為實體頁位址PBA-(L+1),並且在實體頁轉邏輯頁映射表420中將實體頁位址PBA-(L+1)的映射更新為邏輯頁位址LBA-(1)。
圖6A與圖6B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的另一範例。
請參照圖6A與6B,倘若在圖5A與圖5B的映射關係下主機系統1000欲寫入資料至邏輯頁位址LBA-(129)時,記憶體管理單元204會依據可寫入實體頁指標將主機系統1000欲寫入的資料寫入至實體頁位址PBA-(L+2)中,並且將可寫入實體頁指標改為指向實體頁位址PBA-(L+3)。此時,記憶體管理單元204會在邏輯頁轉實體頁映射表410中將邏輯頁位址129的映射更新為實體頁位址PBA-(L+2),並且在實體頁轉邏輯頁映射表420中將實體頁位址PBA-(L+2)的映射更新為邏輯頁位址129(如圖6B所示)。
此外,在本發明範例實施例中,記憶體管理單元204會比對邏輯頁轉實體頁映射表410以及實體頁轉邏輯頁映射表420中的記錄來判斷哪些實體頁位址為無效的實體頁位址與有效的實體頁位址,其中所謂無效的實體頁位址是指其中所儲存的資料為無效的舊資料,而有效的實體頁位址是指其中所儲存的資料是映射目前邏輯頁位址的有效資料。
例如,以圖6A與6B為例,當欲判斷實體頁位址PBA-(0)是否為有效的實體頁位址時,記憶體管理單元204會從實體頁轉邏輯頁映射表420中讀出實體頁位址PBA-(0)是映射邏輯頁位址LBA-(0),並且依據邏輯頁位址LBA-(0)從邏輯頁轉實體頁映射表410讀出邏輯頁位址LBA-(0)是映射實體頁位址PBA-(0),因此實體頁位址PBA-(0)為有效的實體頁位址。另外,當欲判斷實體頁位址PBA-(1)是否為有效的實體頁位址時,記憶體管理單元204會從實體頁轉邏輯頁映射表420中讀出實體頁位址PBA-(1)是映射邏輯頁位址LBA-(1),並且依據邏輯頁位址LBA-(1)從邏輯頁轉實體頁映射表410讀出邏輯頁位址LBA-(1)是映射實體頁位址PBA-(L+1),因此實體頁位址PBA-(1)為無效的實體頁位址。也就是說,記憶體管理單元204會依據待判斷之實體頁位址透過實體頁轉邏輯頁映射表420與邏輯頁轉實體頁映射表410查詢待判斷之實體頁位址映射之邏輯頁位址所映射之實體頁位址,倘若待判斷之實體頁位址和所查詢之實體頁位址相符時,則此待判斷之實體頁位址為有效的實體頁位址,反之則為無效的實體頁位址。
由於快閃記憶體晶片120是以實體區塊作為抹除的最小單位,因此記憶體管理單元204可透過上述比對將有效的實體頁位址中的資料進行合併以釋放無效的實體頁位址來寫入新的資料。例如,記憶體管理單元204可將至少一個實體區塊中有效實體頁位址中的資料複製到未寫入任何資料之實體區塊的實體頁位址中,並且將此實體區塊進行抹除運作,由此可將分散的有效資料合併並且將無效的實體頁位址釋放出來(以下稱為無效資料抹除程序)。
例如,在進行有效資料合併以釋放無效的實體頁位址後,記憶體管理單元204會更新實體頁轉邏輯頁映射表420,以將所抹除之實體區塊的實體頁位址的映射關係更新為空值(例如,“NULL”)。
特別是,如上所述,快閃記憶體儲存裝置100是輪替使用實體區塊來儲存資料,因此,為了能使快閃記憶體儲存裝置100正常運作,記憶體管理單元204會在每次從備用區304b中提取實體區塊前確認備用區304b中的的數目是否小於一備用實體區塊數門檻值。倘若備用區304b中的的數目小於備用實體區塊數門檻值時,記憶體管理單元204會執行上述無效資料抹除程序以將儲存無效資料的實體區塊進行抹除,並將所抹除之實體區塊關聯為備用區340b,以釋放儲存無效資料之實體區塊。例如,在本範例實施例中,備用實體區塊數門檻值是設定為5。然而,必須瞭解的是,本發明不限於此,備用實體區塊數門檻值可被設定為其他適當的數值。
值得一提的是,上述依據圖3所示的映射關係以及圖4A、圖4B、圖5A、圖5B、圖6A與圖6B所示的寫入運作亦可稱為以頁面為基礎(page-based)的快閃記憶體管理模式。
在本範例實施例中,當記憶體管理單元204使用以頁面為基礎(page-based)的快閃記憶體管理模式來寫入資料時,記憶體管理單元204會確保每一該些邏輯區塊的資料散亂度不大於一邏輯區塊資料散亂度門檻值。具體來說,由於主機系統1000在邏輯頁位址LBA-(0)~LBA(L)中寫入資料,主機系統1000未必會依據邏輯頁位址LBA-(0)~LBA(L)的順序來寫入資料。因此,當快閃記憶體儲存裝置100經過一段時間的寫入運作後,屬於同一個邏輯區塊的資料可能會分散地儲存於多個實體區塊中,其中邏輯區塊的資料散亂度就是指被用來儲存此邏輯區塊的資料的實體區塊的數目。在本發明中,邏輯區塊資料散亂度門檻值可以是大於零的任意正整數,例如,邏輯區塊資料散亂度門檻值可以為2、4、8或16。
在本範例實施例中,當主機介面單元206從該主機系統1000中接收主機寫入指令以及欲寫入的寫入資料時,記憶體管理單元204會確認主機寫入指令中所指示之邏輯頁位址所屬的邏輯區塊。在此,目前所接收之主機寫入指令中所指示之邏輯位址稱為“被寫入邏輯位址”,並且目前所接收之主機寫入指令中所指示之邏輯位址所屬的邏輯區塊稱為“被寫入邏輯區塊”。例如,記憶體管理單元204可依據一數學運算式來計算出主機寫入指令中的邏輯頁位址所屬的邏輯區塊,或者依據邏輯位址-邏輯區塊映射表來查詢主機寫入指令中的邏輯頁位址所對屬的邏輯區塊。並且,記憶體管理單元204會依據被寫入邏輯區塊的資料散亂度、目前可寫入實體頁位址和邏輯區塊資料散亂度門檻值來決定用於此寫入資料的實體頁位址。
圖7A、圖7B與圖7C是根據本發明第一範例實施例所繪示的資料寫入範例,其中假設每個實體區塊具有4個實體頁位址且邏輯區塊資料散亂度門檻值為2。
請參照圖7A,假設實體區塊122-(S+1)的其中2個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另2個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的實體頁位址都儲存有屬於邏輯區塊350-(1)的資料;實體區塊122-(D)的前2個實體頁位址儲存有屬於邏輯區塊350-(2)的資料;並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第3個實體頁位址。
請參照圖7B,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為1並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)未儲存有邏輯區塊350-(3)的資料。在此範例中,由於邏輯區塊350-(3)的資料散亂度為1,其小於邏輯區塊資料散亂度門檻值,因此,當屬於邏輯區塊350-(3)的寫入資料被寫入至實體區塊122-(D)時,邏輯區塊350-(3)的資料散亂度僅會增加1變為2,其未超過邏輯區塊資料散亂度門檻值。基此,記憶體管理單元204會將寫入資料寫入至實體區塊122-(D)的第3個實體頁位址。
請參照圖7C,在圖7B所示的狀態且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第4個實體頁位址的例子中,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址亦是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為2,其等於邏輯區塊資料散亂度門檻值,並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊儲存有邏輯區塊350-(3)的資料。在此範例中,由於目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)儲存有邏輯區塊350-(3)的資料,因此,當屬於邏輯區塊350-(3)的寫入資料被寫入至實體區塊122-(D)時,邏輯區塊350-(3)的資料散亂度仍會維持為2,其未超過邏輯區塊資料散亂度門檻值。基此,記憶體管理單元204會將寫入資料寫入至實體區塊122-(D)的第4個實體頁位址。
圖8A與圖8B是根據本發明第一範例實施例所繪示的另一資料寫入範例,其中假設每個實體區塊具有4個實體頁位址且邏輯區塊資料散亂度門檻值為2。
請參照圖8A,假設實體區塊122-(S+1)的其中2個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另2個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的其中3個實體頁位址儲存有屬於邏輯區塊350-(1)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(D)的前2個實體頁位址儲存有屬於邏輯區塊350-(2)的資料;並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第3個實體頁位址。
請參照圖8B,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為2並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)未儲存有邏輯區塊350-(3)的資料。在此範例中,記憶體管理單元204會更判斷實體區塊122-(D)的剩餘可儲存空間是否足夠儲存寫入資料和邏輯區塊350-(3)的其他資料。具體來說,由於邏輯區塊350-(3)的資料散亂度不能大於2,因此,當記憶體管理單元204欲在實體區塊122-(D)中寫入屬於邏輯區塊350-(3)的寫入資料時記憶體管理單元204必須搬移儲存在其他實體區塊中屬於邏輯區塊350-(3)的資料以使得邏輯區塊350-(3)的資料散亂度仍維持小於或等於2。基此,在實體區塊122-(D)的剩餘儲存空間足夠儲存寫入資料和在用於儲存邏輯區塊350-(3)的資料的實體區塊(即,實體區塊122-(S+1)與實體區塊122-(S+2))之中的其中一個實體區塊(例如,實體區塊122-(S+2))中屬於邏輯區塊350-(3)的所有資料的情況下,記憶體管理單元204會將寫入資料和儲存於實體區塊122-(S+2)中之邏輯區塊350-(3)的所有資料寫入至實體區塊122-(D)中。也就是說,由於實體區塊122-(S+1)中存有2個實體頁位址大小之屬於邏輯區塊350-(3)的資料而實體區塊122-(S+2)中存有1個實體頁位址大小之屬於邏輯區塊350-(3)的資料,因此,在實體區塊122-(D)僅剩1個實體頁位址可容納所搬移的資料的情況下,記憶體管理單元204會選擇將實體區塊122-(S+2)的第4個實體頁位址的資料搬移至實體區塊122-(D),並且將實體區塊122-(S+2)的第4個實體頁位址標示為無效,由此邏輯區塊350-(3)的資料散亂度仍為2。
圖9A與圖9B是根據本發明第一範例實施例所繪示的另一資料寫入範例,其中假設每個實體區塊具有4個實體頁位址且邏輯區塊資料散亂度門檻值為2。
請參照圖9A,假設實體區塊122-(S+1)的其中2個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另2個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的其中3個實體頁位址儲存屬於邏輯區塊350-(1)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(D)的前3個實體頁位址儲存有屬於邏輯區塊350-(2)的資料;並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第4個實體頁位址。
請參照圖9B,當主機介面單元206主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為2並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)未儲存有邏輯區塊350-(3)的資料。類似上述,記憶體管理單元204會更判斷實體區塊122-(D)的剩餘可儲存空間是否足夠儲存寫入資料和已寫入於其他實體區塊(例如,實體區塊122-(S+1)或實體區塊122-(S+2))中屬於邏輯區塊350-(3)的所有資料。在本範例中,由於實體區塊122-(D)的剩餘可儲存空間不足夠儲存寫入資料和在用於儲存邏輯區塊350-(3)的資料的實體區塊(即,實體區塊122-(S+1)與實體區塊122-(S+2))之中的任一個實體區塊中屬於邏輯區塊350-(3)的所有資料,所以記憶體管理單元204會從備用區304b中提取一個實體區塊(例如,實體區塊122-(D+1)),並且將寫入資料和儲存在用於儲存邏輯區塊350-(3)的資料的實體區塊之中的其中一個實體區塊中屬於邏輯區塊350-(3)的所有資料寫入至實體區塊122-(D+1)中。在本範例實施例中,記憶體管理單元204會先選擇需搬移之資料較少的實體區塊來進行搬移,避免因搬移資料而大幅增加執行主機寫入指令所需的時間。也就是說,在本範例中,記憶體管理單元204會選擇將實體區塊122-(S+2)的第4個實體頁位址的資料搬移至實體區塊122-(D+1),並且將實體區塊122-(S+2)的第4個實體頁位址標示為無效,由此邏輯區塊350-(3)的資料散亂度仍為2。
圖10是根據本發明第一範例實施例所繪示的資料寫入方法的流程圖。
請參照圖10,在步驟S1001中快閃記憶體控制器104的主機介面單元206經由連接器102從主機系統1000中接收主機寫入指令與寫入資料。
在步驟S1003中記憶體管理單元204依據主機寫入指令的被寫入邏輯頁位址判斷被寫入邏輯區塊,並且在步驟S1005記憶體管理單元204判斷目前可寫入實體頁位址。例如,在步驟S1005中記憶體管理單元204是根據可寫入實體頁指標來判斷目前可寫入實體頁位址。
接著,在步驟S1007中記憶體管理單元204會依據被寫入邏輯區塊的資料散亂度以及目前可寫入實體頁位址來將寫入資料寫入至快閃記憶體晶片106的實體頁位址中。
圖11是根據本發明第一範例實施例所繪示的圖10之步驟S1007的詳細步驟。
請參照圖11,在步驟S1101中記憶體管理單元204會判斷被寫入邏輯區塊的資料散亂度是否等於邏輯區塊資料散亂度門檻值。值得一提的是,記憶體管理單元204會使每一邏輯區塊的資料散亂度不超過邏輯區塊資料散亂度門檻值,因此,在步驟S1101的判斷中僅會出現被寫入邏輯區塊的資料散亂度等於邏輯區塊資料散亂度門檻值或者被寫入邏輯區塊的資料散亂度小於邏輯區塊資料散亂度門檻值的情況,而不會出現被寫入邏輯區塊的資料散亂度大於邏輯區塊資料散亂度門檻值的情況。
倘若在步驟S1101中判斷被寫入邏輯區塊的資料散亂度不等於邏輯區塊資料散亂度門檻值(即,被寫入邏輯區塊的資料散亂度小於邏輯區塊資料散亂度)時,則在步驟S1103中記憶體管理單元204會將寫入資料寫入至目前可寫入實體頁位址中。之後,在步驟S1105中記憶體管理單元204會更新邏輯頁位址與實體頁位址之間的映射關係,並且圖11所示的流程會被結束。例如,在步驟S1105中記憶體管理單元204會更新邏輯頁轉實體頁映射表410與實體頁轉邏輯頁映射表420來記錄邏輯頁位址與實體頁位址之間的新映射關係。
倘若在步驟S1101中判斷被寫入邏輯區塊的資料散亂度等於邏輯區塊資料散亂度門檻值時,則在步驟S1107中記憶體管理單元204會判斷在目前可寫入實體區塊(即,目前可寫入實體頁位址所屬的實體區塊)中是否儲存有屬於被寫入邏輯區塊的資料。倘若在目前可寫入實體區塊中儲存有屬於被寫入邏輯區塊的資料,則執行步驟S1103。
倘若在步驟S1107中判斷在目前可寫入實體區塊中未儲存有屬於被寫入邏輯區塊的資料,則在步驟S1109中記憶體管理單元204會判斷在目前可寫入實體區塊中是否有足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料。
倘若在步驟S1109中判斷在目前可寫入實體區塊中有足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料時,則在步驟S1111中記憶體管理單元204會將寫入資料寫入至目前可寫入實體頁位址中並且將在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料搬移至目前可寫入實體區塊中。之後,步驟S1105會被執行。
倘若在步驟S1109中判斷在目前可寫入實體區塊中無足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料時,則在步驟S1113中記憶體管理單元204會判斷備用區304b中的實體區塊的數目是否小於備用實體區塊數門檻值。倘若備用區304b中的實體區塊的數目小於備用實體區塊數門檻值,則在步驟S1115中記憶體管理單元204會執行無效資料抹除程序以釋放儲存無效資料之實體區塊,並且執行步驟S1113。
倘若在步驟S1113中判斷備用區304b中的實體區塊的數目非小於備用實體區塊數門檻值,則在步驟S1117中記憶體管理單元204會從備用區304b中提取一個實體區塊並且將寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料寫入至所提取的實體區塊中。
本發明第二範例實施例的快閃記憶體儲存裝置與主機系統本質上是相同於第一範例實施例的快閃記憶體儲存裝置與主機系統,其中差異在於第一範例實施例的記憶體管理單元依據每一邏輯區塊的資料散亂度來將資料寫入至快閃記憶體晶片,而在第二範例實施例中記憶體管理單元依據每一邏輯區塊的資料散亂度和每一實體區塊的資料散亂度來將資料寫入至快閃記憶體晶片。以下將配合第一範例實施例的圖1A、圖1D、圖3A與圖3B來描述第二範例實施例。在第二範例實施例中,記憶體管理單元204亦是類似於圖4A、4B、5A、5B、6A與6B所示的方式以頁面為基礎來管理快閃記憶體晶片106。
在本範例實施例中,當記憶體管理單元204使用以頁面為基礎的快閃記憶體管理模式來寫入資料時,記憶體管理單元204會確保每一邏輯區塊的資料散亂度不大於邏輯區塊資料散亂度門檻值並且每一實體區塊的資料散亂度不大於實體區塊資料散亂度門檻值。在此,實體區塊的資料散亂度就是指此實體區塊所儲存之資料所屬的邏輯區塊的數目。如上所述,由於主機系統1000未必會依據邏輯頁位址的順序來寫入資料,因此當快閃記憶體儲存裝置100經過一段時間的寫入運作後,在同一個實體區塊中有可能會儲存屬於多個邏輯區塊的資料。在本發明中,實體區塊資料散亂度門檻值可以是大於零的任意正整數,例如,實體區塊資料散亂度門檻值可以為2、4、8或16。
圖12A與圖12B是根據本發明第二範例實施例所繪示的資料寫入範例,其中假設每個實體區塊具有4個實體頁位址且邏輯區塊資料散亂度門檻值與實體區塊資料散亂度門檻值都為2。
請參照圖12A,假設實體區塊122-(S+1)的其中3個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的其中3個實體頁位址儲存有屬於邏輯區塊350-(1)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(2)的資料;實體區塊122-(D)的其中1個個實體頁位址儲存有屬於邏輯區塊350-(2)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第3個實體頁位址。
請參照圖12B,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為2,目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)的資料散亂度為2,並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)儲存有邏輯區塊350-(3)的資料。在此範例中,由於目前可寫入實體頁位址所屬的實體區塊122-(D)儲存有邏輯區塊350-(3)的資料,因此當寫入資料被寫入至實體區塊122-(D)時,實體區塊122-(D)的資料散亂度仍會維持為2且邏輯區塊350-(3)的資料散亂度亦會維持為2。也就是說,每一邏輯區塊的資料散亂度皆不大於邏輯區塊資料散亂度門檻值並且每一實體區塊的資料散亂度不大於實體區塊資料散亂度門檻值。基此,在此範例中,記憶體管理單元204會將寫入資料寫入至目前可寫入實體頁指標所指向的目前可寫入實體頁位址中。
圖13A與圖13B是根據本發明第二範例實施例所繪示的另一資料寫入範例,其中假設每個實體區塊具有4個實體頁位址且邏輯區塊資料散亂度門檻值與實體區塊資料散亂度門檻值都為2。
請參照圖13A,假設實體區塊122-(S+1)的其中2個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另2個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的實體頁位址都儲存屬於邏輯區塊350-(1)的資料;實體區塊122-(D)的其中1個個實體頁位址儲存有屬於邏輯區塊350-(2)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(4)的資料;並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第3個實體頁位址。
請參照圖13B,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為1,目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)的資料散亂度為2,並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)未儲存有邏輯區塊350-(3)的資料。在此範例中,若僅考量邏輯區塊350-(3)的資料散亂度下,屬於邏輯區塊350-(3)的寫入資料是可被寫入至實體區塊122-(D),但由於目前可寫入實體區塊122-(D)的資料散亂度為2,因此將屬於邏輯區塊350-(3)的寫入資料寫入至實體區塊122-(D)後實體區塊122-(D)的資料散亂度會變成3,其會超過實體區塊資料散亂度門檻值。因此,在此範例中,記憶體管理單元204從備用區304b中提取一個實體區塊(例如,實體區塊122-(D+1)),並且將寫入資料寫入至實體區塊122-(D+1)中。由此,記憶體管理單元204能使實體區塊122-(D)的資料散亂度為2,邏輯區塊350-(3)的資料散亂度為2,且實體區塊122-(D+1)的資料散亂度為1,以致於每一邏輯區塊的資料散亂度皆不大於邏輯區塊資料散亂度門檻值並且每一實體區塊的資料散亂度不大於實體區塊資料散亂度門檻值。
圖14A與圖14B是根據本發明第二範例實施例所繪示的另一資料寫入範例,其中假設每個實體區塊具有4個實體頁位址,且邏輯區塊資料散亂度門檻值與實體區塊資料散亂度門檻值都為2。
請參照圖14A,假設實體區塊122-(S+1)的其中2個實體頁位址儲存有屬於邏輯區塊350-(0)的資料且另2個實體頁位址儲存有屬於邏輯區塊350-(3)的資料;實體區塊122-(S+2)的其中3個實體頁位址儲存有屬於邏輯區塊350-(1)的資料且另1個實體頁位址儲存屬於邏輯區塊350-(3)的資料;實體區塊122-(D)的其中1個實體頁位址儲存有屬於邏輯區塊350-(2)的資料且另1個實體頁位址儲存有屬於邏輯區塊350-(4)的資料,並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址為實體區塊122-(D)的第3個實體頁位址。
請參照圖14B,當主機介面單元206從主機系統1000中接收到主機寫入指令,且記憶體管理單元204判斷主機系統1000欲寫入資料之邏輯頁位址是屬於邏輯區塊350-(3)時,記憶體管理單元204會判斷邏輯區塊350-(3)的資料散亂度為2,目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)的資料散亂度為2,並且目前可寫入實體頁指標所指向的目前可寫入實體頁位址所屬的實體區塊122-(D)未儲存有邏輯區塊350-(3)的資料。類似於圖13A與13B所示的範例,由於目前可寫入實體區塊122-(D)的資料散亂度為2,因此將屬於邏輯區塊350-(3)的寫入資料寫入至實體區塊122-(D)後會使得實體區塊122-(D)的資料散亂度變成3,其會超過實體區塊資料散亂度門檻值。因此,在此範例中,記憶體管理單元204從備用區304b中提取一個實體區塊(例如,實體區塊122-(D+1)),並且將寫入資料寫入至實體區塊122-(D+1)中,以使得每一實體區塊的資料散亂度皆不大於實體區塊資料散亂度門檻值。此外,在將寫入資料寫入至實體區塊122-(D+1)後,邏輯區塊350-(3)的資料散亂度會變為3,因此記憶體管理單元204會將在用於儲存邏輯區塊350-(3)的資料的實體區塊(即,實體區塊122-(S+1)與實體區塊122-(S+2))之中的任一個實體區塊中屬於邏輯區塊350-(3)的所有資料搬移至實體區塊122-(D+1),以使得邏輯區塊350-(3)的資料散亂度仍維持小於或等於2。在本範例實施例中,記憶體管理單元204會優先選擇需搬移之資料較少的實體區塊來進行搬移,避免因搬移資料而大幅增加執行主機寫入指令所需的時間。也就是說,記憶體管理單元204會選擇將實體區塊122-(S+2)的第4個實體頁位址的資料搬移至實體區塊122-(D+1),並且將實體區塊122-(S+2)的第4個實體頁位址標示為無效,由此邏輯區塊350-(3)的資料散亂度仍為2。
圖15是根據本發明第二範例實施例所繪示的資料寫入方法的流程圖。
請參照圖15,在步驟S1501中快閃記憶體控制器104的主機介面單元206經由連接器102從主機系統1000中接收主機寫入指令與寫入資料。
在步驟S1503中記憶體管理單元204依據主機寫入指令的被寫入邏輯頁位址判斷被寫入邏輯區塊,並且在步驟S1505記憶體管理單元204判斷目前可寫入實體頁位址。接著,在步驟S1507中記憶體管理單元204會依據被寫入邏輯區塊的資料散亂度、目前可寫入實體頁位址以及目前可寫入實體頁位址所屬的實體區塊的資料散亂度來將寫入資料寫入至快閃記憶體晶片106的實體頁位址中。
圖16A與16B是根據本發明第二範例實施例所繪示的圖15之步驟S1507的詳細步驟,其中圖16A的部分步驟繪示於圖16B中(即,節點A與節點B之間的步驟)。
請參照圖16A,在步驟S1601中記憶體管理單元204會判斷目前可寫入實體區塊(即,目前可寫入實體頁位址所屬的實體區塊)的資料散亂度是否等於實體區塊資料散亂度門檻值。值得一提的是,類似於邏輯區塊之資料散亂度的判斷,記憶體管理單元204會使每一實體區塊的資料散亂度不超過實體區塊資料散亂度門檻值,因此,在步驟S1601的判斷中僅會出現實體區塊的資料散亂度等於實體區塊資料散亂度門檻值或者實體區塊的資料散亂度小於實體區塊資料散亂度的情況,而不會出現實體區塊的資料散亂度大於實體區塊資料散亂度的情況。
倘若在步驟S1601中判斷目前可寫入實體區塊的資料散亂度不等於實體區塊資料散亂度門檻值(即,目前可寫入實體區塊的資料散亂度小於實體區塊資料散亂度門檻值)時,則執行圖16B中的步驟S1603。
請參照圖16B,在步驟S1603中記憶體管理單元204會判斷被寫入邏輯區塊的資料散亂度是否等於邏輯區塊資料散亂度門檻值。
倘若在步驟S1603中判斷被寫入邏輯區塊的資料散亂度不等於邏輯區塊資料散亂度門檻值(即,被寫入邏輯區塊的資料散亂度小於邏輯區塊資料散亂度)時,則在步驟S1605中記憶體管理單元204會將寫入資料寫入至目前可寫入實體頁位址中。之後,圖16A中的步驟S1607會被執行(即,節點B之後的步驟),其中在步驟S1607中記憶體管理單元204會更新邏輯頁位址與實體頁位址之間的映射關係,並且圖16所示的流程會被結束。例如,在步驟S1607中記憶體管理單元204會更新邏輯頁轉實體頁映射表410與實體頁轉邏輯頁映射表420來記錄邏輯頁位址與實體頁位址之間的新映射關係。
倘若在步驟S1603中判斷被寫入邏輯區塊的資料散亂度等於邏輯區塊資料散亂度門檻值時,則在步驟S1609中記憶體管理單元204會判斷在目前可寫入實體區塊中是否儲存有屬於被寫入邏輯區塊的資料。倘若在目前可寫入實體區塊中儲存有屬於被寫入邏輯區塊的資料,則執行步驟S1605。
倘若在步驟S1609中判斷在目前可寫入實體區塊中未儲存有屬於被寫入邏輯區塊的資料,則在步驟S1611中記憶體管理單元204會判斷在目前可寫入實體區塊中是否有足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料。
倘若在步驟S1611中判斷在目前可寫入實體區塊中有足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料時,則在步驟S1613中記憶體管理單元204會將寫入資料寫入至目前可寫入實體頁位址中並且將在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料搬移至目前可寫入實體區塊中。之後,圖16A中的步驟S1607會被執行。
倘若在步驟S1611中判斷在目前可寫入實體區塊中無足夠的儲存空間來儲存寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料時,則在步驟S1615中記憶體管理單元204會判斷備用區304b中的實體區塊的數目是否小於備用實體區塊數門檻值。倘若備用區304b中的實體區塊的數目非小於備用實體區塊數門檻值,則在步驟S1617中記憶體管理單元204會從備用區304b中提取一個實體區塊並且將寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料寫入至所提取的實體區塊中。之後,圖16A中的步驟S1607會被執行。
倘若在步驟S1615中判斷備用區304b中的實體區塊的數目小於備用實體區塊數門檻值,則在步驟S1619中記憶體管理單元204會執行無效資料抹除程序以釋放儲存無效資料之實體區塊,並且執行步驟S1615。
倘若在步驟S1601中判斷目前可寫入實體區塊的資料散亂度等於實體區塊資料散亂度門檻值時,則在步驟S1621中記憶體管理單元204會判斷在目前可寫入實體區塊中是否儲存有屬於被寫入邏輯區塊的資料。倘若在目前可寫入實體區塊中儲存有屬於被寫入邏輯區塊的資料,則執行圖16B中的步驟S1603。
倘若在步驟S1621中判斷在目前可寫入實體區塊中未儲存有屬於被寫入邏輯區塊的資料,則在步驟S1623中記憶體管理單元204會判斷備用區304b中的實體區塊的數目是否小於備用實體區塊數門檻值。倘若備用區304b中的實體區塊的數目小於備用實體區塊數門檻值,則在步驟S1625中記憶體管理單元204會執行無效資料抹除程序,以釋放儲存無效資料之實體區塊,並且執行步驟S1623。
倘若在步驟S1623中判斷備用區304b中的實體區塊的數目非小於備用實體區塊數門檻值,則在步驟S1627中記憶體管理單元204會判斷被寫入邏輯區塊的資料散亂度是否等於邏輯區塊資料散亂度門檻值。倘若判斷被寫入邏輯區塊的資料散亂度不等於邏輯區塊資料散亂度門檻值時,則在步驟S1629中記憶體管理單元204會從備用區304b中提取一個實體區塊並且將寫入資料寫入至所提取的實體區塊中。之後,步驟S1607會被執行。
倘若在步驟S1627中判斷被寫入邏輯區塊的資料散亂度等於邏輯區塊資料散亂度門檻值時,則在步驟S1631中記憶體管理單元204會從備用區304b中提取一個實體區塊並且將寫入資料和在用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料寫入至所提取的實體區塊中。之後,步驟S1607會被執行。
值得一提的是,在上述範例實施中,記憶體管理單元204會搬移用於儲存被寫入邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於被寫入邏輯區塊的所有資料來使被寫入邏輯區塊的資料散亂度仍維持不大於邏輯區塊資料散亂度門檻值。然而,本發明不限於此,在本發明另一範例實施例中,當儲存空間足夠時,記憶體管理單元204亦可搬移用於儲存被寫入邏輯區塊的資料的實體區塊之中的多個實體區塊中屬於被寫入邏輯區塊的所有資料,以使被寫入邏輯區塊的資料更為集中。
必須瞭解的是,圖7A、圖7B、圖7C、圖8A、圖8B、圖9A、圖9B、圖12A、圖12B、圖13A、圖13B、圖14A與圖14B所示的簡化範例僅是用於說明本發明,其非限制本發明。在本發明範例實施例中,快閃記憶體晶片106的每一實體區塊是具有64個、128個、256個或更多實體頁位址。
綜上所述,根據本發明範例實施例的資料寫入方法會依據每一邏輯區塊的資料散亂度來決定用於寫入資料的實體頁位址,由此可有效地避免屬於同一個邏輯區塊的資料被分散地儲存於過多個實體區塊中。基此,可減少整理有效資料的時間,由此提升執行主機寫入指令的速度。此外,根據本發明範例實施例的資料寫入方法會依據每一邏輯區塊的資料散亂度以及每一實體區塊的資料散亂度來決定用於寫入資料的實體頁位址,由此可有效地避免屬於同一個邏輯區塊的資料被分散地儲存於過多個實體區塊中以及同一個實體區塊中儲存有過多屬於不同邏輯區塊的資料。基此,可更減少整理有效資料的時間,由此提升執行主機寫入指令的速度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
1000...主機系統
1100...電腦
1102...微處理器
1104...隨機存取記憶體
1106...輸入/輸出裝置
1108...系統匯流排
1110...資料傳輸介面
1202...滑鼠
1204...鍵盤
1206...顯示器
1208...印表機
1212...隨身碟
1214...記憶卡
1216...固態硬碟
1310...數位相機
1312...SD卡
1314...MMC卡
1316...記憶棒
1318...CF卡
1320...嵌入式儲存裝置
100...快閃記憶體儲存裝置
102...連接器
104...快閃記憶體控制器
106...快閃記憶體晶片
122-(0)~122(N)...實體區塊
202...微處理器單元
204...記憶體管理單元
206...主機介面單元
208...快閃記憶體介面單元
252...緩衝記憶體
254...電源管理單元
256...錯誤校正單元
302...系統區
304...儲存區
304a...資料區
304b...備用區
306...取代區
350-(0)~350-(H)...邏輯區塊
410...邏輯頁轉實體頁映射表
420...實體頁轉邏輯頁映射表
LBA-(0)~LBA-(L)...邏輯頁位址
PBA-(0)~PBA-(K)...實體頁位址
S1001、S1003、S1005、S1007、S1101、S1103、S1105、S1107、S1109、S1111、S1113、S1115、S1117...資料寫入步驟
S1501、S1503、S1505、S1507、S1601、S1603、S1605、S1607、S1609、S1611、S1613、S1615、S1617、S1619、S1621、S1623、S1625、S1627、S1629、S1631...資料寫入步驟
圖1A是根據本發明第一範例實施例繪示使用快閃記憶體儲存裝置的主機系統。
圖1B是根據本發明範例實施例所繪示的電腦、輸入/輸出裝置與快閃記憶體儲存裝置的示意圖。
圖1C是根據本發明另一範例實施例所繪示的主機系統與快閃記憶體儲存裝置的示意圖。
圖1D是繪示圖1A所示快閃記憶體儲存裝置的概要方塊圖。
圖2是根據本發明另一範例實施例所繪示的快閃記憶體控制器的概要方塊圖。
圖3A是根據本發明第一範例實施例所繪示之快閃記憶體晶片的方塊圖。
圖3B是根據本發明第一範例實施例所繪示之邏輯頁位址與實體頁位址的映射示意圖。
圖4A與圖4B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的範例。
圖5A與圖5B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的另一範例。
圖6A與圖6B是根據本發明第一範例實施例繪示邏輯頁轉實體頁映射表及實體頁轉邏輯頁映射表的另一範例。
圖7A、圖7B與圖7C是根據本發明第一範例實施例所繪示的資料寫入範例。
圖8A與圖8B是根據本發明第一範例實施例所繪示的另一資料寫入範例。
圖9A與圖9B是根據本發明第一範例實施例所繪示的另一資料寫入範例。
圖10是根據本發明第一範例實施例所繪示的資料寫入方法的流程圖。
圖11是根據本發明第一範例實施例所繪示的圖10之步驟S1007的詳細步驟。
圖12A與圖12B是根據本發明第二範例實施例所繪示的資料寫入範例。
圖13A與圖13B是根據本發明第二範例實施例所繪示的另一資料寫入範例。
圖14A與圖14B是根據本發明第二範例實施例所繪示的另一資料寫入範例。
圖15是根據本發明第二範例實施例所繪示的資料寫入方法的流程圖。
圖16A與16B是根據本發明第二範例實施例所繪示的圖15之步驟S1507的詳細步驟。
S1001、S1003、S1005、S1007...資料寫入步驟
Claims (30)
- 一種資料寫入方法,用於將來自於一主機系統的資料寫入至一快閃記憶體晶片中,其中該快閃記憶體晶片包括多個實體區塊,每一該些實體區塊具有多個實體頁位址,該資料寫入方法包括:配置多個邏輯頁位址;將該些邏輯頁位址分組為多個邏輯區塊;記錄每一該些邏輯區塊的一資料散亂度,其中每一該些邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目;從該主機系統中接收一寫入資料,其中該寫入資料是欲被寫入至一第一邏輯頁位址,該第一邏輯頁位址屬於一第一邏輯區塊,該第一邏輯頁位址為該些邏輯頁位址的其中之一,且該第一邏輯區塊為該些邏輯區塊的其中之一;取得一第一實體頁位址,其中所取得的第一實體頁位址為該些實體頁位址的其中之一;以及依據該第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第1項所述之資料寫入方法,更包括將該些實體區塊至少分組為一資料區與一備用區。
- 如申請專利範圍第1項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:當DI<TH1時,則將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第2項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中的步驟更包括:當D1=TH1時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第2項所述之資料寫入方法,更包括:記錄每一該些實體區塊的一資料散亂度,其中每一該些實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
- 如申請專利範圍第5項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:依據該第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些實體區塊的資料散亂度皆不大於一實體區塊資料散亂度門檻值。
- 如申請專利範圍第6項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:當D1<TH1並且D2<TH2時,則將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第6項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:當D1<TH1並且D2=TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第6項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:當D1=TH1並且D2=TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第6項所述之資料寫入方法,其中依據該第一邏輯區塊的資料散亂度、所取得的第一實體頁位址以及所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中的步驟包括:當D1=TH1並且D2<TH2時,則判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 一種快閃記憶體控制器,用於將來自於一主機系統的資料寫入至一快閃記憶體晶片中,其中該快閃記憶體晶片包括多個實體區塊,每一該些實體區塊具有多個實體頁位址,該快閃記憶體控制器包括:一微處理器單元;一快閃記憶體介面單元,耦接至該微處理器單元,用以耦接至該快閃記憶體晶片;一主機介面單元,耦接至該微處理器單元,用以耦接至該主機系統;以及一記憶體管理單元,耦接至該微處理器單元,用以配置多個邏輯頁位址,將該些邏輯頁位址分組為多個邏輯區塊,並且記錄每一該些邏輯區塊的一資料散亂度,其中每一該些邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目,其中該主機介面單元從該主機系統中接收一寫入資料,其中該寫入資料是欲被寫入至一第一邏輯頁位址,該第一邏輯頁位址屬於一第一邏輯區塊,該第一邏輯頁位址為該些邏輯頁位址的其中之一,且該第一邏輯區塊為該些邏輯區塊的其中之一,其中該記憶體管理單元取得一第一實體頁位址,其中所取得的第一實體頁位址為該些實體頁位址的其中之一,其中該記憶體管理單元依據該第一邏輯區塊的資料散亂度以及所取得的第一實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中該記憶體管單元將該些實體區塊至少分組為一資料區與一備用區。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中當D1<TH1時,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第12項所述之快閃記憶體控制器,其中當D1=TH1時,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該記憶體管理單元從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第12項所述之快閃記憶體控制器,其中該記憶體管理單元記錄每一該些實體區塊的一資料散亂度,其中每一該些實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
- 如申請專利範圍第15項所述之快閃記憶體控制器,其中該記憶體管理單元更依據所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些實體區塊的資料散亂度皆不大於一實體區塊資料散亂度門檻值。
- 如申請專利範圍第16項所述之快閃記憶體控制器,其中當D1<TH1並且D2<TH2時,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第16項所述之快閃記憶體控制器,其中當D1<TH1並且D2=TH2時,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該記憶體管理單元從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第16項所述之快閃記憶體控制器,其中當D1=TH1並且D2=TH2時,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該記憶體管理單元從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第16項所述之快閃記憶體控制器,其中當D1=TH1並且D2<TH2時,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該記憶體管理單元判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該記憶體管理單元將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該記憶體管理單元從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 一種快閃記憶體儲存系統,包括:一快閃記憶體晶片,具有多個實體區塊並且每一該些實體區塊具有多個實體頁位址;一連接器,用以耦接至一主機系統;以及一快閃記憶體控制器,耦接至該快閃記憶體晶片與該連接器,用以配置多個邏輯頁位址,將該些邏輯頁位址分組為多個邏輯區塊,並且記錄每一該些邏輯區塊的一資料散亂度,其中每一該些邏輯區塊的資料散亂度為用於儲存屬於對應之邏輯區塊的資料的實體區塊的數目,其中該快閃記憶體控制器從該主機系統中接收一寫入資料,其中該寫入資料是欲被寫入至一第一邏輯頁位址,該第一邏輯頁位址屬於一第一邏輯區塊,該第一邏輯頁位址為該些邏輯頁位址的其中之一,且該第一邏輯區塊為該些邏輯區塊的其中之一,其中該快閃記憶體控制器取得一第一實體頁位址,其中所取得的第一實體頁位址為該些實體頁位址的其中之一,其中該快閃記憶體控制器依據該第一邏輯區塊的資料散亂度以及所取得的實體頁位址來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些邏輯區塊的資料散亂度皆不大於一邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第21項所述之快閃記憶體儲存系統,其中該快閃記憶體控制器將該些實體區塊至少分組為一資料區與一備用區。
- 如申請專利範圍第21項所述之快閃記憶體儲存系統,其中當D1<TH1時,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第22項所述之快閃記憶體儲存系統,其中當D1=TH1時,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該快閃記憶體控制器從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值。
- 如申請專利範圍第22項所述之快閃記憶體儲存系統,其中該快閃記憶體控制器記錄每一該些實體區塊的一資料散亂度,其中每一該些實體區塊的資料散亂度為儲存於對應之實體區塊中的資料所屬的邏輯區塊的數目。
- 如申請專利範圍第25項所述之快閃記憶體儲存系統,其中該快閃記憶體控制器更依據所取得的第一實體頁位址所屬的實體區塊的資料散亂度來將該寫入資料寫入至該快閃記憶體晶片中,其中每一該些實體區塊的資料散亂度不大於一實體區塊資料散亂度門檻值。
- 如申請專利範圍第26項所述之快閃記憶體儲存系統,其中當D1<TH1並且D2<TH2時,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第26項所述之快閃記憶體儲存系統,其中當D1<TH1並且D2=TH2時,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第26項所述之快閃記憶體儲存系統,其中當D1=TH1並且D2=TH2時,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,並且當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
- 如申請專利範圍第26項所述之快閃記憶體儲存系統,其中當D1=TH1並且D2<TH2時,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊是否儲存有該第一邏輯區塊的資料,其中當所取得的第一實體頁位址所屬的實體區塊儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中,其中當所取得的第一實體頁位址所屬的實體區塊無儲存有該第一邏輯區塊的資料,則該快閃記憶體控制器判斷所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間是否足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間足夠寫入該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料時,則該快閃記憶體控制器將該寫入資料寫入至所取得的第一實體頁位址中並且將在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所取得的第一實體頁位址所屬的實體區塊中,其中當所取得的第一實體頁位址所屬的實體區塊的剩餘儲存空間不足夠寫入該寫入資料和儲存於該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的資料時,則該快閃記憶體控制器從該備用區的實體區塊之中選擇其中一個實體區塊並且將該寫入資料和在用於儲存該第一邏輯區塊的資料的實體區塊之中的其中一個實體區塊中屬於該第一邏輯區塊的所有資料寫入至所選擇的實體區塊中,其中D1為該第一邏輯區塊的資料散亂度,TH1為該邏輯區塊資料散亂度門檻值,D2為所取得的第一實體頁位址所屬的實體區塊的資料散亂度,並且TH2為該實體區塊資料散亂度門檻值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098134801A TWI421869B (zh) | 2009-10-14 | 2009-10-14 | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US12/633,175 US8250292B2 (en) | 2009-10-14 | 2009-12-08 | Data writing method for a flash memory, and controller and storage system using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098134801A TWI421869B (zh) | 2009-10-14 | 2009-10-14 | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201113888A TW201113888A (en) | 2011-04-16 |
TWI421869B true TWI421869B (zh) | 2014-01-01 |
Family
ID=43855730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098134801A TWI421869B (zh) | 2009-10-14 | 2009-10-14 | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8250292B2 (zh) |
TW (1) | TWI421869B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI574274B (zh) * | 2015-05-07 | 2017-03-11 | 慧榮科技股份有限公司 | 循環區塊模式下的資料存取方法以及使用該方法的裝置 |
TWI760697B (zh) * | 2020-02-19 | 2022-04-11 | 群聯電子股份有限公司 | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011021237A1 (en) | 2009-08-20 | 2011-02-24 | Hitachi,Ltd. | Storage subsystem and its data processing method |
TWI540428B (zh) * | 2011-11-18 | 2016-07-01 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
CN103136111B (zh) * | 2011-11-29 | 2017-03-01 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
TWI533309B (zh) * | 2014-10-06 | 2016-05-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI714840B (zh) * | 2018-04-12 | 2021-01-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
JP7213712B2 (ja) * | 2019-02-14 | 2023-01-27 | キオクシア株式会社 | 不揮発性半導体記憶装置 |
TWI688956B (zh) * | 2019-08-28 | 2020-03-21 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN115757196B (zh) * | 2022-11-09 | 2023-09-01 | 超聚变数字技术有限公司 | 内存、访问内存方法及计算设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200413918A (en) * | 2002-10-28 | 2004-08-01 | Sandisk Corp | Method and apparatus for resolving physical blocks associated with a common logical block |
US20070245069A1 (en) * | 2004-09-10 | 2007-10-18 | Syuichi Kikuchi | Storage Device, Memory Management Method and Program |
US20080155177A1 (en) * | 2006-12-26 | 2008-06-26 | Sinclair Alan W | Configuration of Host LBA Interface With Flash Memory |
US20080162612A1 (en) * | 2006-12-28 | 2008-07-03 | Andrew Tomlin | Method for block relinking |
US20080215802A1 (en) * | 2000-01-06 | 2008-09-04 | Super Talent Electronics, Inc. | High Integration of Intelligent Non-volatile Memory Device |
US20080270680A1 (en) * | 2005-11-17 | 2008-10-30 | Chee Keng Chang | Controller for Non-Volatile Memories and Methods of Operating the Memory Controller |
TW200917021A (en) * | 2007-01-17 | 2009-04-16 | Memoright Memoritech Corp | Method for managing flash memory block |
TW200933631A (en) * | 2008-01-24 | 2009-08-01 | Samsung Electronics Co Ltd | Write and merge methods in memory card systems for reducing the number of page copies |
TW200937195A (en) * | 2008-02-29 | 2009-09-01 | Via Tech Inc | Management methods and systems for storage units |
TW200937427A (en) * | 2008-02-29 | 2009-09-01 | Phison Electronics Corp | Block management method for flash memory, controller and storage system thereof |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356152B2 (en) * | 2006-12-27 | 2013-01-15 | Intel Corporation | Initiative wear leveling for non-volatile memory |
TWI389125B (zh) * | 2008-07-18 | 2013-03-11 | A Data Technology Co Ltd | 記憶體儲存裝置及其控制方法 |
US8065469B2 (en) * | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
-
2009
- 2009-10-14 TW TW098134801A patent/TWI421869B/zh active
- 2009-12-08 US US12/633,175 patent/US8250292B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080215802A1 (en) * | 2000-01-06 | 2008-09-04 | Super Talent Electronics, Inc. | High Integration of Intelligent Non-volatile Memory Device |
TW200413918A (en) * | 2002-10-28 | 2004-08-01 | Sandisk Corp | Method and apparatus for resolving physical blocks associated with a common logical block |
US20070245069A1 (en) * | 2004-09-10 | 2007-10-18 | Syuichi Kikuchi | Storage Device, Memory Management Method and Program |
US20080270680A1 (en) * | 2005-11-17 | 2008-10-30 | Chee Keng Chang | Controller for Non-Volatile Memories and Methods of Operating the Memory Controller |
US20080155177A1 (en) * | 2006-12-26 | 2008-06-26 | Sinclair Alan W | Configuration of Host LBA Interface With Flash Memory |
US20080162612A1 (en) * | 2006-12-28 | 2008-07-03 | Andrew Tomlin | Method for block relinking |
TW200917021A (en) * | 2007-01-17 | 2009-04-16 | Memoright Memoritech Corp | Method for managing flash memory block |
TW200933631A (en) * | 2008-01-24 | 2009-08-01 | Samsung Electronics Co Ltd | Write and merge methods in memory card systems for reducing the number of page copies |
TW200937195A (en) * | 2008-02-29 | 2009-09-01 | Via Tech Inc | Management methods and systems for storage units |
TW200937427A (en) * | 2008-02-29 | 2009-09-01 | Phison Electronics Corp | Block management method for flash memory, controller and storage system thereof |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI574274B (zh) * | 2015-05-07 | 2017-03-11 | 慧榮科技股份有限公司 | 循環區塊模式下的資料存取方法以及使用該方法的裝置 |
US10168951B2 (en) | 2015-05-07 | 2019-01-01 | Silicon Motion, Inc. | Methods for accessing data in a circular block mode and apparatuses using the same |
TWI760697B (zh) * | 2020-02-19 | 2022-04-11 | 群聯電子股份有限公司 | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
US20110087827A1 (en) | 2011-04-14 |
US8250292B2 (en) | 2012-08-21 |
TW201113888A (en) | 2011-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI421869B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI423024B (zh) | 用於快閃記憶體的資料儲存方法及其控制器與儲存系統 | |
TWI506430B (zh) | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 | |
TWI467372B (zh) | 指令執行方法、記憶體控制器與記憶體儲存裝置 | |
TWI515735B (zh) | 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
TWI569139B (zh) | 有效資料合併方法、記憶體控制器與記憶體儲存裝置 | |
TWI584122B (zh) | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI399643B (zh) | 快閃記憶體儲存系統及其控制器與資料寫入方法 | |
TWI470431B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI501243B (zh) | 資料寫入方法、記憶體儲存裝置、記憶體控制電路單元 | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI495998B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI525625B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
US20120096321A1 (en) | Block management method, memory controller, and memory storage apparatus | |
TWI451439B (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TWI448892B (zh) | 資料搬移方法、記憶體控制器與記憶體儲存裝置 | |
TWI501244B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI414940B (zh) | 區塊管理與資料寫入方法、快閃記憶體儲存系統與控制器 | |
TWI553477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN102053920B (zh) | 数据写入方法及闪存控制器与闪存存储系统 | |
TWI503841B (zh) | 寫入方法、記憶體控制器與記憶體儲存裝置 | |
TW201337553A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |