TW201734795A - 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 - Google Patents
記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 Download PDFInfo
- Publication number
- TW201734795A TW201734795A TW105108743A TW105108743A TW201734795A TW 201734795 A TW201734795 A TW 201734795A TW 105108743 A TW105108743 A TW 105108743A TW 105108743 A TW105108743 A TW 105108743A TW 201734795 A TW201734795 A TW 201734795A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- type
- program
- unit
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元。此方法包括:接收第一資料;執行第一程式化程序並判斷第一類實體單元的總數是否小於或等於第一門檻值,其中屬於第一類實體單元的每一個實體單元皆未儲存有效資料;若所述總數小於或等於第一門檻值,執行資料整併程序;判斷第一資料是否是第一類資料;若第一資料是第一類資料,在第一類實體單元的總數達到第二門檻值前,停止資料整併程序。藉此,可減少資料整併程序對於特定類型之資料的寫入速度造成的影響。
Description
本發明是有關於一種記憶體管理技術,且特別是有關於一種記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了評估記憶體裝置的效能,測試者可能會在記憶體裝置上執行效能測試程式。在某些效能測試程式中,循序(sequential)資料與非循序(non-sequential)資料會被輪流地寫入至記憶體裝置中,從而測試記憶體裝置對於循序寫入(sequential write)與隨機寫入(random write)的執行效率。然而,在某些情況下,若隨機寫入使用了太多的閒置實體區塊,則當後續測試循序寫入時,一個資料整併程序(例如,垃圾回收程序)可能會被觸發,從而降低循序寫入的寫入速度。
本發明提供一種記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元,可減少資料整併程序對於特定類型之資料的寫入速度造成的影響。
本發明的一範例實施例提供一種記憶體管理方法,其用於包括多個實體單元的可複寫式非揮發性記憶體模組,所述記憶體管理方法包括:接收第一資料並執行第一程式化程序;在所述第一程式化程序中,將所述第一資料的至少一部份資料程式化至所述實體單元中的第一實體單元;判斷所述實體單元中的第一類實體單元的總數是否小於或等於第一門檻值,其中屬於所述第一類實體單元的每一個實體單元皆未儲存有效資料;若所述第一類實體單元的所述總數小於或等於所述第一門檻值,執行資料整併程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大於所述第一數目;判斷所述第一資料是第一類資料或第二類資料,其中所述第一類資料屬於多個連續編號的邏輯單元,而所述第二類資料不屬於所述連續編號的邏輯單元;若所述第一資料是所述第一類資料,在所述第二數目達到第二門檻值之前,停止所述資料整併程序,其中所述第二門檻值大於所述第一門檻值;以及若所述第一資料是所述第二類資料,在所述第二數目達到所述第二門檻值之後,停止所述資料整併程序。
在本發明的一範例實施例中,判斷所述第一資料是所述第一類資料或所述第二類資料的步驟包括:根據被程式化至所述第一實體單元的所述第一資料的所述部份資料判斷所述第一資料是所述第一類資料或所述第二類資料。
在本發明的一範例實施例中,所述記憶體管理方法更包括:若所述第一資料是所述第一類資料,在所述資料整併程序中判斷所述實體單元中屬於第二類實體單元的第二實體單元所儲存的有效資料之資料量是否大於預設值;若所述第二實體單元所儲存的所述有效資料之資料量大於所述預設值,將儲存於所述第二實體單元中的所述有效資料複製到所述實體單元中的第三實體單元;以及若所述第二實體單元所儲存的所述有效資料之資料量不大於所述預設值,抹除所述第二實體單元並停止所述資料整併程序。
在本發明的一範例實施例中,所述記憶體管理方法更包括:在判斷所述第二實體單元所儲存的有效資料之資料量是否大於所述預設值之前,執行選擇程序;以及在所述選擇程序中,選擇所儲存的有效資料之資料量小於平均值的所述第二實體單元。
在本發明的一範例實施例中,所述記憶體管理方法更包括:若所述第一資料是所述第一類資料,在開始所述資料整併程序之後,暫停所述第一程式化程序,並且在停止所述資料整併程序之後,恢復執行所述第一程式化程序;以及若所述第一資料是所述第二類資料,允許所述資料整併程序與所述第一程式化程序共用傳輸頻寬。
在本發明的一範例實施例中,所述記憶體管理方法更包括:配置指令佇列,其用以暫存指示儲存資料的至少一指令;若所述第一資料是所述第一類資料,暫停將指示儲存所述第一資料的指令加入至所述指令佇列中,以暫停所述第一程式化程序;以及若所述第一資料是所述第二類資料,將指示儲存所述資料整併程序所收集之資料的指令與指示儲存所述第一資料的所述指令加入至所述指令佇列中。
在本發明的一範例實施例中,所述記憶體管理方法更包括:判斷所述第一程式程序是否接續於第二程式化程序,其中所述第二程式化程序用以程式化第二資料至所述實體單元中,其中所述第二資料為所述第二類資料。而在所述第二數目達到所述第二門檻值之前停止所述資料整併程序的步驟,是在判定所述第一資料是所述第一類資料且所述第一程式程序是接續於所述第二程式化程序之後執行。
本發明的另一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述可複寫式非揮發性記憶體模組包括多個實體單元。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,所述記憶體控制電路單元用以接收第一資料並執行第一程式化程序,在所述第一程式化程序中,所述記憶體控制電路單元發送程式化指令序列,以指示將所述第一資料的至少一部份資料程式化至所述實體單元中的第一實體單元,所述記憶體控制電路單元更用以判斷所述實體單元中的第一類實體單元的總數是否小於或等於第一門檻值,其中屬於所述第一類實體單元的每一個實體單元皆未儲存有效資料,若所述第一類實體單元的所述總數小於或等於所述第一門檻值,所述記憶體控制電路單元更用以執行資料整併程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大於所述第一數目,其中所述記憶體控制電路單元更用以判斷所述第一資料是一第一類資料或一第二類資料,其中所述第一類資料屬於多個連續編號的邏輯單元,而所述第二類資料不屬於所述連續編號的邏輯單元,若所述第一資料是所述第一類資料,所述記憶體控制電路單元更用以在所述第二數目達到一第二門檻值之前,停止所述資料整併程序,其中所述第二門檻值大於所述第一門檻值,若所述第一資料是所述第二類資料,所述記憶體控制電路單元更用以在所述第二數目達到所述第二門檻值之後,停止所述資料整併程序。
在本發明的一範例實施例中,所述記憶體控制電路單元判斷所述第一資料是所述第一類資料或所述第二類資料的操作包括:根據被程式化至所述第一實體單元的所述第一資料的所述部份資料判斷所述第一資料是所述第一類資料或所述第二類資料。
在本發明的一範例實施例中,若所述第一資料是所述第一類資料,所述記憶體控制電路單元更用以在所述資料整併程序中判斷所述實體單元中屬於第二類實體單元的第二實體單元所儲存的有效資料之資料量是否大於預設值,若所述第二實體單元所儲存的所述有效資料之資料量大於所述預設值,所述記憶體控制電路單元更用以指示將儲存於所述第二實體單元中的所述有效資料複製到所述實體單元中的第三實體單元,若所述第二實體單元所儲存的所述有效資料之資料量不大於所述預設值,所述記憶體控制電路單元抹除所述第二實體單元並停止所述資料整併程序。
在本發明的一範例實施例中,在判斷所述第二實體單元所儲存的有效資料之資料量是否大於所述預設值之前,所述記憶體控制電路單元更用以執行選擇程序,在所述選擇程序中,所述記憶體控制電路單元選擇所儲存的有效資料之資料量小於平均值的所述第二實體單元。
在本發明的一範例實施例中,若所述第一資料是所述第一類資料,在開始所述資料整併程序之後,所述記憶體控制電路單元更用以暫停所述第一程式化程序,並且在停止所述資料整併程序之後,所述記憶體控制電路單元恢復執行所述第一程式化程序,若所述第一資料是所述第二類資料,所述記憶體控制電路單元允許所述資料整併程序與所述第一程式化程序共用傳輸頻寬。
在本發明的一範例實施例中,所述記憶體控制電路單元更用以配置指令佇列,其用以暫存指示儲存資料的至少一指令,若所述第一資料是所述第一類資料,所述記憶體控制電路單元更用以暫停將指示儲存所述第一資料的指令加入至所述指令佇列中,以暫停所述第一程式化程序,若所述第一資料是所述第二類資料,所述記憶體控制電路單元將指示儲存所述資料整併程序所收集之資料的指令與指示儲存所述第一資料的所述指令加入至所述指令佇列中。
在本發明的一範例實施例中,所述記憶體控制電路單元更用以判斷所述第一程式程序是否接續於第二程式化程序,其中所述第二程式化程序用以程式化第二資料至所述實體單元中,其中所述第二資料為所述第二類資料。所述記憶體控制電路單元是在判定所述第一資料是所述第一類資料且所述第一程式程序是接續於所述第二程式化程序之後,執行在所述第二數目達到所述第二門檻值之前停止所述資料整併程序的操作。
本發明的另一範例實施例提供一種記憶體控制電路單元,其用於控制包括多個實體單元的可複寫式非揮發性記憶體模組,所述記憶體控制電路單元包括主機介面、記憶體介面及記憶體管理電路。所述主機介面用以耦接至主機系統。所述記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組。所述記憶體管理電路耦接至所述主機介面與所述記憶體介面,所述記憶體管理電路用以接收第一資料並執行第一程式化程序,在所述第一程式化程序中,所述記憶體管理電路發送程式化指令序列以指示將所述第一資料的至少一部份資料程式化至所述實體單元中的第一實體單元,所述記憶體管理電路更用以判斷所述實體單元中的第一類實體單元的總數是否小於或等於第一門檻值,其中屬於所述第一類實體單元的每一個實體單元皆未儲存有效資料,若所述第一類實體單元的所述總數小於或等於所述第一門檻值,所述記憶體管理電路更用以執行資料整併程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大於所述第一數目,所述記憶體管理電路更用以判斷所述第一資料是第一類資料或第二類資料,其中所述第一類資料屬於多個連續編號的邏輯單元,而所述第二類資料不屬於所述連續編號的邏輯單元,若所述第一資料是所述第一類資料,所述記憶體管理電路更用以在所述第二數目達到一第二門檻值之前,停止所述資料整併程序,其中所述第二門檻值大於所述第一門檻值,若所述第一資料是所述第二類資料,所述記憶體管理電路更用以在所述第二數目達到所述第二門檻值之後,停止所述資料整併程序。
在本發明的一範例實施例中,所述記憶體管理電路判斷所述第一資料是所述第一類資料或所述第二類資料的操作包括:根據被程式化至所述第一實體單元的所述第一資料的所述部份資料判斷所述第一資料是所述第一類資料或所述第二類資料。
在本發明的一範例實施例中,若所述第一資料是所述第一類資料,所述記憶體管理電路更用以在所述資料整併程序中判斷所述實體單元中屬於第二類實體單元的第二實體單元所儲存的有效資料之資料量是否大於預設值,若所述第二實體單元所儲存的所述有效資料之資料量大於所述預設值,所述記憶體管理電路更用以將儲存於所述第二實體單元中的所述有效資料複製到所述實體單元中的第三實體單元,若所述第二實體單元所儲存的所述有效資料之資料量不大於所述預設值,所述記憶體管理電路抹除所述第二實體單元並停止所述資料整併程序。
在本發明的一範例實施例中,所述預設值為零。
在本發明的一範例實施例中,在判斷所述第二實體單元所儲存的有效資料之資料量是否大於所述預設值之前,所述記憶體管理電路更用以執行選擇程序,在所述選擇程序中,所述記憶體管理電路選擇所儲存的有效資料之資料量小於平均值的所述第二實體單元。
在本發明的一範例實施例中,若所述第一資料是所述第一類資料,在開始所述資料整併程序之後,所述記憶體控制電路單元更用以暫停所述第一程式化程序,並且在停止所述資料整併程序之後,所述記憶體控制電路單元恢復執行所述第一程式化程序,若所述第一資料是所述第二類資料,所述記憶體控制電路單元允許所述資料整併程序與所述第一程式化程序共用傳輸頻寬。
在本發明的一範例實施例中,所述記憶體管理電路更用以配置指令佇列,其用以暫存指示儲存資料的至少一指令,若所述第一資料是所述第一類資料,所述記憶體管理電路更用以暫停將指示儲存所述第一資料的指令加入至所述指令佇列中,以暫停所述第一程式化程序,若所述第一資料是所述第二類資料,所述記憶體管理電路將指示儲存所述資料整併程序所收集之資料的指令與指示儲存所述第一資料的所述指令加入至所述指令佇列中。
在本發明的一範例實施例中,所述記憶體管理電路更用以判斷所述第一程式程序是否接續於第二程式化程序,其中所述第二程式化程序用以程式化第二資料至所述實體單元中,其中所述第二資料為所述第二類資料。所述記憶體管理電路是在判定所述第一資料是所述第一類資料且所述第一程式程序是接續於所述第二程式化程序之後,執行在所述第二數目達到所述第二門檻值之前停止所述資料整併程序的操作。
基於上述,在記憶體儲存裝置的運作中,一個資料整併程序可能會隨著第一類實體單元的減少而被觸發。在開始執行此資料整併程序之後,若判定所需程式化的資料是屬於多個連續編號之邏輯單元的第一類資料,則此資料整併程序可能會在第一類實體單元之總數達到一預設數目之前就停止,從而減少資料整併程序對第一類資料的寫入速度造成的影響。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
請參照圖1與圖2,主機系統11一般包括處理器111、隨機存取記憶體(random access memory, RAM)112、唯讀記憶體(read only memory, ROM)113及資料傳輸介面114。處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114皆耦接至系統匯流排(system bus)110。
在本範例實施例中,主機系統11是透過資料傳輸介面114與記憶體儲存裝置10耦接。例如,主機系統11可經由資料傳輸介面114將資料儲存至記憶體儲存裝置10或從記憶體儲存裝置10中讀取資料。此外,主機系統11是透過系統匯流排110與I/O裝置12耦接。例如,主機系統11可經由系統匯流排110將輸出訊號傳送至I/O裝置12或從I/O裝置12接收輸入訊號。
在本範例實施例中,處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114可設置在主機系統11的主機板20上。資料傳輸介面114的數目可以是一或多個。透過資料傳輸介面114,主機板20可以經由有線或無線方式耦接至記憶體儲存裝置10。記憶體儲存裝置10可例如是隨身碟201、記憶卡202、固態硬碟(Solid State Drive, SSD)203或無線記憶體儲存裝置204。無線記憶體儲存裝置204可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板20也可以透過系統匯流排110耦接至全球定位系統(Global Positioning System, GPS)模組205、網路介面卡206、無線傳輸裝置207、鍵盤208、螢幕209、喇叭210等各式I/O裝置。例如,在一範例實施例中,主機板20可透過無線傳輸裝置207存取無線記憶體儲存裝置204。
在一範例實施例中,所提及的主機系統為可實質地與記憶體儲存裝置配合以儲存資料的任意系統。雖然在上述範例實施例中,主機系統是以電腦系統來作說明,然而,圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。請參照圖3,在另一範例實施例中,主機系統31也可以是數位相機、攝影機、通訊裝置、音訊播放器、視訊播放器或平板電腦等系統,而記憶體儲存裝置30可為其所使用的安全數位(Secure Digital, SD)卡32、小型快閃(Compact Flash, CF)卡33或嵌入式儲存裝置34等各式非揮發性記憶體儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embedded MMC, eMMC)341及/或嵌入式多晶片封裝(embedded Multi Chip Package, eMCP)儲存裝置342等各類型將記憶體模組直接耦接於主機系統的基板上的嵌入式儲存裝置。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、記憶體控制電路單元404與可複寫式非揮發性記憶體模組406。
在本範例實施例中,連接介面單元402是相容於序列先進附件(Serial Advanced Technology Attachment, SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元402亦可以是符合並列先進附件(Parallel Advanced Technology Attachment, PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準、通用序列匯流排(Universal Serial Bus, USB)標準、SD介面標準、超高速一代(Ultra High Speed-I, UHS-I)介面標準、超高速二代(Ultra High Speed-II, UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。連接介面單元402可與記憶體控制電路單元404封裝在一個晶片中,或者連接介面單元402是佈設於一包含記憶體控制電路單元404之晶片外。
記憶體控制電路單元404用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統11的指令在可複寫式非揮發性記憶體模組406中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組406是耦接至記憶體控制電路單元404並且用以儲存主機系統11所寫入之資料。可複寫式非揮發性記憶體模組406可以是單階記憶胞(Single Level Cell, SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell, MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
可複寫式非揮發性記憶體模組406中的每一個記憶胞是以電壓(以下亦稱為臨界電壓)的改變來儲存一或多個位元。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,進而改變記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為“把資料寫入至記憶胞”或“程式化記憶胞”。隨著臨界電壓的改變,可複寫式非揮發性記憶體模組406中的每一個記憶胞具有多個儲存狀態。透過施予讀取電壓可以判斷一個記憶胞是屬於哪一個儲存狀態,藉此取得此記憶胞所儲存的一或多個位元。
圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
請參照圖5,記憶體控制電路單元404包括記憶體管理電路502、主機介面504及記憶體介面506。
記憶體管理電路502用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路502具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路502的操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路502的控制指令是以韌體型式來實作。例如,記憶體管理電路502具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路502的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路502具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路502的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路502的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路502包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的記憶胞或其群組。記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令序列(亦稱為程式化指令序列)以將資料寫入至可複寫式非揮發性記憶體模組406中。記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料。記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除。資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。在一範例實施例中,記憶體管理電路502還可以下達其他類型的指令序列給可複寫式非揮發性記憶體模組406以指示執行相對應的操作。
主機介面504是耦接至記憶體管理電路502並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面504來傳送至記憶體管理電路502。在本範例實施例中,主機介面504是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面504亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面506是耦接至記憶體管理電路502並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面506轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路502要存取可複寫式非揮發性記憶體模組406,記憶體介面506會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列例如是由記憶體管理電路502產生並且透過記憶體介面506傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
在一範例實施例中,記憶體控制電路單元404還包括錯誤檢查與校正電路508、緩衝記憶體510及電源管理電路512。
錯誤檢查與校正電路508是耦接至記憶體管理電路502並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路502從主機系統11中接收到寫入指令時,錯誤檢查與校正電路508會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code, ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路502會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路502從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路508會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
緩衝記憶體510是耦接至記憶體管理電路502並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路512是耦接至記憶體管理電路502並且用以控制記憶體儲存裝置10的電源。
在本範例實施例中,可複寫式非揮發性記憶體模組406的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元。例如,同一條字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一條字元線上的實體程式化單元至少可被分類為下實體程式化單元與上實體程式化單元。例如,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於下實體程式化單元,並且一記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於上實體程式化單元。一般來說,在MLC NAND型快閃記憶體中,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,及/或下實體程式化單元的可靠度是高於上實體程式化單元的可靠度。
在本範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面(page)或是實體扇(sector)。若實體程式化單元為實體頁面,則此些實體程式化單元通常包括資料位元區與冗餘(redundancy)位元區。資料位元區包含多個實體扇,用以儲存使用者資料,而冗餘位元區用以儲存系統資料(例如,錯誤更正碼)。
在本範例實施例中,資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte, B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,並且每一個實體扇的大小也可以是更大或更小。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊(block)。
圖6是根據本發明的一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
請參照圖6,記憶體管理電路502會將可複寫式非揮發性記憶體模組406的記憶胞邏輯地分組為實體單元610(0)~610(B)。在本範例實施例中,實體單元610(0)~610(B)中的每一者是指一個實體抹除單元。然而,在另一範例實施例中,實體單元610(0)~610(B)中的每一者也可以包含多個實體抹除單元。
在本範例實施例中,記憶體管理電路502會將實體單元610(0)~610(B)邏輯地分組為儲存區601與閒置(spare)區602。儲存區601中的實體單元610(0)~610(A)儲存有資料,而閒置區602中的實體單元610(A+1)~610(B)尚未被用來儲存資料。例如,屬於儲存區601的每一個實體單元可能儲存有有效資料及/或無效資料,而屬於儲存區601的某一個實體單元被抹除之後就會被關聯至閒置區602。當屬於儲存區601的某一個實體單元被寫滿之後,某一個實體單元會被從閒置區602選擇並且被關聯至儲存區601,以儲存其他資料。
在一範例實施例中,屬於閒置區602的每一個實體單元亦稱為閒置實體單元,而屬於儲存區601的每一個實體單元亦稱為非閒置(non-spare)實體單元。在一範例實施例中,閒置實體單元亦稱為第一類實體單元,而非閒置實體單元亦稱為第二類實體單元。
在本範例實施例中,記憶體管理電路502會配置邏輯單元612(0)~612(C)以映射儲存區601中的實體單元610(0)~610(A)的至少一部分。在本範例實施例中,主機系統11是透過邏輯位址(logical address, LA)來存取儲存於儲存區601中的資料,因此,邏輯單元612(0)~612(C)中的每一者是指一個邏輯位址。然而,在另一範例實施例中,邏輯單元612(0)~612(C)中的每一者也可以是由多個連續(例如,連續編號)的邏輯位址組成。
在本範例實施例中,記憶體管理電路502會將邏輯單元與實體單元之間的映射關係(亦稱為邏輯-實體映射關係)記錄於至少一邏輯-實體映射表。當主機系統11欲從記憶體儲存裝置10讀取資料或寫入資料至記憶體儲存裝置10時,記憶體管理電路502可根據此邏輯-實體映射表來執行對於記憶體儲存裝置10的資料存取。在一範例實施例中,邏輯-實體映射表以及特定的管理資料(例如,紀錄有記憶體儲存裝置10之管理資訊的管理表格)會被儲存在不屬於儲存區601與閒置區602的其他實體單元中,以避免被使用者修改。
在本範例實施例中,有效資料是屬於某一個邏輯單元的當前資料(或最新資料),而無效資料則不是屬於任一個邏輯單元的當前資料。例如,若主機系統11將一筆新資料儲存至某一邏輯單元而覆蓋掉此邏輯單元原先儲存的舊資料(即,更新屬於此邏輯單元的資料),則儲存區601中的此筆新資料即為屬於此邏輯單元的當前資料並且會被標記為有效,而被覆蓋掉的舊資料可能仍然儲存在儲存區601中但被標記為無效。
在本範例實施例中,若屬於某一邏輯單元的資料被更新,則此邏輯單元與儲存有屬於此邏輯單元之舊資料的實體單元之間的映射關係會被移除,並且此邏輯單元與儲存有屬於此邏輯單元之當前資料(或最新資料)的實體單元之間的映射關係會被建立。然而,在另一範例實施例中,若屬於某一邏輯單元的資料被更新,則此邏輯單元與儲存有屬於此邏輯單元之舊資料的實體單元之間的映射關係仍可被維持。
當記憶體儲存裝置10出廠時,屬於閒置區602的實體單元(即,第一類實體單元)的總數會是一個預設數目(例如,30)。隨著記憶體儲存裝置10的使用,越來越多的實體單元會被從閒置區602選擇並且被關聯至儲存區601以儲存資料(例如,來自主機系統11的使用者資料)。因此,屬於閒置區602的實體單元(即,第一類實體單元)的總數會隨著記憶體儲存裝置10的使用而逐漸減少。
在記憶體儲存裝置10的運作中,記憶體管理電路502會持續更新屬於閒置區602的實體單元(即,第一類實體單元)的總數。記憶體管理電路502會判斷第一類實體單元的總數是否小於或等於一個門檻值(以下亦稱為第一門檻值)。此第一門檻值例如是2或者更大的值(例如,10),本發明不加以限制。若第一類實體單元的總數小於或等於第一門檻值,記憶體管理電路502會執行一個資料整併程序。在一範例實施例中,此資料整併程序亦稱為垃圾回收程序(garbage collection process)。
在資料整併程序中,記憶體管理電路502會從儲存區601中選擇至少一個實體單元並且嘗試將有效資料從所選擇的實體單元集中複製(或搬移)到另一實體單元。用來儲存所複製(或搬移)之有效資料的實體單元則是從閒置區602中選擇並且會被關聯至儲存區601。若某一個實體單元所儲存的有效資料皆已被複製(或搬移),則此實體單元會被抹除並且被關聯至閒置區602。
在一範例實施例中,將某一個實體單元從儲存區601重新關聯回閒置區602的操作亦稱為釋放一個閒置實體單元。隨著資料整併程序的執行時間增加,越來越多的閒置實體單元會被釋放。藉此,在開始執行資料整併程序之後,屬於閒置區602的實體單元(即,第一類實體單元)的總數會逐漸增加,例如,從第一數目變更至第二數目。其中,第二數目大於第一數目。
在本範例實施例中,記憶體管理電路502會判斷第一類實體單元的總數是否大於或等於另一個門檻值(以下亦稱為第二門檻值)。在本範例實施例中,第二門檻值會大於第一門檻值。例如,若第一門檻值是「2」,則第二門檻值可能是「15」或任何大於「2」的數值。若第一類實體單元的總數大於或等於第二門檻值,記憶體管理電路502會停止資料整併程序。在本範例實施例中,停止資料整併程序是指結束當前執行中的資料整併程序。在停止一個資料整併程序之後,若第一類實體單元的總數再次小於或等於第一門檻值,則下一個資料整併程序會再次被執行。然而,在另一範例實施例中,第二門檻值也可能會等於第一門檻值。
在本範例實施例中,屬於閒置區602的實體單元(即,第一類實體單元)的總數會被記載在一個管理表格中。當某一個閒置實體單元被釋放時,記憶體管理電路502會將此管理表格所記載的第一類實體單元之總數加「1」;當某一個實體單元被從閒置區602關聯至儲存區601以儲存資料時,記憶體管理電路502會將此管理表格所記載的第一類實體單元之總數減「1」。在記憶體儲存裝置10的運作中,記憶體管理電路502會根據此管理表格所記載的第一類實體單元之總數來判斷是否需要執行下一個資料整併程序及/或是否要停止執行中的資料整併程序。
在一範例實施例中,當欲儲存特定類型的資料時,記憶體管理電路502也可能直接停止執行中的資料整併程序,即便當前記錄於上述管理表格中的第一類實體單元之總數尚未達到第二門檻值。例如,在一範例實施例中,此特定類型的資料是指循序(sequential)資料。
在一範例實施例中,記憶體管理電路502會從主機系統11接收資料(以下亦稱為第一資料)並且據以執行一程式化程序(以下亦稱為第一程式化程序)。在第一程式化程序中,記憶體管理電路502會發送至少一程式化指令序列至可複寫式非揮發性記憶體模組406,以指示將第一資料的至少一部份程式化至可複寫式非揮發性記憶體模組406中。
在一範例實施例中,記憶體管理電路502會判斷第一資料是第一類資料或第二類資料。其中,第一類資料是指循序資料,而第二類資料是指非循序資料。例如,第一類資料屬於多個連續(或連續編號)的邏輯單元,而第二類資料則不屬於多個連續的邏輯單元。例如,若第一資料被儲存至連續編號的多個邏輯單元或某一個邏輯位址範圍內,則第一資料為第一類資料;然而,若第一資料被儲存至非連續編號的(即,離散的)多個邏輯單元,則第一資料為第二類資料。
在一範例實施例中,若第一資料是第一類資料,則第一程式化程序可視為循序寫入(sequential write)程序;然而,若第一資料是第二類資料,則第一程式化程序可視為隨機寫入(random write)程序。
在一範例實施例中,若第一資料是第一類資料(或第一程式化程序是循序寫入程序)且當前有一個資料整併程序被執行,則在此資料整併程序中,即便記錄於上述管理表格中的第一類實體單元之總數(即,上述第二數目)尚未達到第二門檻值,記憶體管理電路502也可能直接停止執行中的資料整併程序。藉此,可減少資料整併程序對於循序寫入程序之寫入速度(或寫入頻寬)的影響;然而,若第一資料是第二類資料(或第一程式化程序是隨機寫入程序),則(只有)當記錄於上述管理表格中的第一類實體單元之總數(即,上述第二數目)達到第二門檻值時,記憶體管理電路502才會停止執行中的資料整併程序。
圖7是根據本發明的一範例實施例所繪示的程式化程序的示意圖。
請參照圖7,記憶體管理電路502從主機系統11接收屬於邏輯單元612(0)~612(D)的資料(即第一資料)。其中,邏輯單元612(0)~612(D)是連續編號的(或屬於同一個邏輯位址範圍),故屬於邏輯單元612(0)~612(D)的資料為第一類資料(即循序資料)。
在一範例實施例中,若一個邏輯單元是指一個邏輯位址,則邏輯單元612(0)~612(D)是由多個連續的邏輯位址組成。其中,任兩個連續編號的邏輯單元具有連續的邏輯位址。在另一範例實施例中,若一個邏輯單元包含多個連續的邏輯位址,則邏輯單元612(0)~612(D)中任兩個連續編號的邏輯單元是指後一個邏輯單元的起始邏輯位址接續於前一個邏輯單元的結束邏輯位址。例如,邏輯單元612(1)的起始邏輯位址接續於邏輯單元612(0)的結束邏輯位址,邏輯單元612(2)的起始邏輯位址接續於邏輯單元612(1)的結束邏輯位址等,以此類推。
在接收到第一資料之後,記憶體管理電路502會執行第一程式化程序。在第一程式化程序中,記憶體管理電路502會指示將第一資料程式化至儲存區601中的至少一實體單元。在本範例實施例中,一個實體單元可用於儲存屬於32個邏輯單元的資料,故屬於邏輯單元612(0)~612(31)的資料(即第一資料中的至少一部份資料)會先被程式化至實體單元601(E)(以下亦稱為第一實體單元)。同時,邏輯單元612(0)~612(31)會被映射至實體單元601(E)。由於邏輯單元612(0)~612(31)也是連續(或連續編號)的,故實體單元601(E)所儲存的資料也為第一類資料。
在一範例實施例中,記憶體管理電路502會根據實體單元601(E)所儲存的資料是否為第一類資料及/或儲存於實體單元601(E)的資料是否佔用連續(或連續編號)的多個邏輯單元來判定整個第一資料是否為第一類資料。例如,實體單元601(E)所儲存的資料為第一類資料,故記憶體管理電路502會據以判定整個第一資料為第一類資料。在另一範例實施例中,若實體單元601(E)所儲存的資料為第二類資料,則記憶體管理電路502會據以判定整個第一資料為第二類資料。在一範例實施例中,實體單元601(E)會儲存一個系統資料。此系統資訊用以表示實體單元601(E)所儲存的資料是否為第一類資料及/或儲存於實體單元601(E)的資料佔用了哪些邏輯單元(或邏輯位址)。記憶體管理電路502可查詢此系統資料以獲得實體單元601(E)所儲存的資料是否為第一類資料。
在寫滿實體單元601(E)之後,記憶體管理電路502會從閒置區602中選擇另一個實體單元以儲存第一資料中尚未儲存(或程式化)的資料。例如,記憶體管理電路502會從閒置區602中選擇實體單元610(E+1)並且將實體單元610(E+1)關聯至儲存區601。在選擇實體單元610(E+1)之後,閒置區602中只剩下實體單元610(B),如圖7所示。
在選擇實體單元610(E+1)之後,記憶體管理電路502會在上述管理表格中將第一類實體單元的總數從「2」更新為「1」並且判定第一類實體單元的總數(即,「1」)小於第一門檻值(例如,2)。因此,記憶體管理電路502會開始執行一個資料整併程序。然而,在另一範例實施例中,資料整併程序亦可以是在執行第一程式化程序之前即已開始執行,或者在第一程式化程序中的任一時間點被觸發,本發明不加以限制。
在資料整併程序中,記憶體管理電路502會執行一個選擇程序。此選擇程序是用以選擇有效資料的來源節點。例如,在選擇程序中,記憶體管理電路502會從儲存區601中選擇作為來源節點的一個實體單元(以下亦稱為第二實體單元)。被選擇作為有效資料之來源節點的第二實體單元會符合選擇程序的一個篩選條件。例如,在一範例實施例中,此篩選條件是儲存區601中儲存最少的有效資料的一個實體單元。或者,在另一範例實施例中,所選擇的第二實體單元所儲存的有效資料的資料量會小於一個平均值。其中,此平均值是指儲存區601中至少部分(或所有)的實體單元所儲存的有效資料之資料量的平均。然而,此篩選條件也可以包含任意有用的條件,本發明不加以限制。
在一範例實施例中,在選擇第二實體單元之後,記憶體管理電路502會開始複製(或搬移)儲存於第二實體單元中的有效資料。例如,記憶體管理電路502會將儲存於第二實體單元中的有效資料複製(或搬移)到另一個實體單元(以下亦稱為第三實體單元)。其中,第三實體單元也是從閒置區602中選擇並且用以集中儲存在資料整併程序中收集的有效資料。在將儲存於第二實體單元中所有的有效資料都複製(或搬移)至第三實體單元之後,第二實體單元會被抹除。
在一範例實施例中,在選擇第二實體單元之後,記憶體管理電路502還會判斷第二實體單元所儲存的有效資料之資料量是否大於一個預設值。例如,某一個實體單元所儲存的有效資料之資料量是用此實體單元的一個有效計數值來表示。其中,此有效計數值會對應於此實體單元中儲存有有效資料之實體子單元的總數。例如,若第二實體單元的有效計數值是「2」,表示第二實體單元中有2個實體子單元儲存有有效資料。在本範例實施例中,一個實體子單元是指一個實體程式化單元。然而,在另一範例實施例中,一個實體子單元也可以是由一個實體抹除單元中任意數目的記憶胞組成。
在一範例實施例中,記憶體管理電路502會判斷第二實體單元的有效計數值是否大於一預設計數值。若第二實體單元的有效計數值大於此預設計數值,記憶體管理電路502會判定第二實體單元所儲存的有效資料之資料量大於上述預設值並且開始複製(或搬移)儲存於第二實體單元中的有效資料;然而,若第二實體單元的有效計數值不大於此預設計數值,則記憶體管理電路502會判定第二實體單元所儲存的有效資料之資料量不大於上述預設值。若第二實體單元所儲存的有效資料之資料量不大於上述預設值,則記憶體管理電路502會將第二實體單元抹除並且直接停止資料整併程序。
具體而言,在將第二實體單元抹除(即,釋放一個閒置實體單元)之後,記憶體管理電路502可能會需要一段處理時間去更新上述管理表格(例如,將第一類實體單元的總數加「1」)。然而,在一範例實施例中,若第二實體單元所儲存的有效資料之資料量不大於上述預設值,則在此處理時間內,即便第一類實體單元的總數尚未被更新,記憶體管理電路502也會直接停止資料整併程序。此外,若資料整併程序是基於第二實體單元所儲存的有效資料之資料量不大於上述預設值而停止,則在經過上述處理時間之後,更新後的第一類實體單元的總數可能會達到或未達到上述第二門檻值,本發明不加以限制。
在本範例實施例中,預設計數值與預設值皆是零。也就是說,若所選擇要作為有效資料之來源節點的第二實體單元中沒有需要複製(或搬移)的有效資料,則第二實體單元可以隨即被抹除並且被釋放為一個閒置實體單元。同時,執行中的資料整併程序會立即被停止。藉此,第一資料中尚未儲存(或程式化)的資料(例如,屬於邏輯單元612(32)~612(D)的資料)可隨即被程式化至實體單元610(E+1)或者更多實體單元。
值得一提的是,在圖7的範例實施例中,第一程式化程序是用以程式化屬於邏輯單元612(0)~612(D)的循序資料,故每當儲存區601中的一個實體單元被寫滿,相對應地就可以釋放一個閒置實體單元。藉此,即便在執行第一程式化程序的過程中,第一類實體單元的總數始終未達到一個預設數目(例如,上述第二門檻值),仍可確保第一程式化程序順暢地執行。此外,上述快速地啟動並停止資料整併程序的操作亦可以應用在後續儲存屬於邏輯單元612(32)~612(D)之資料的過程中,在此便不贅述。
在一範例實施例中,若第一資料為第一類資料,則在開始執行資料整併程序之後,第一程式化程序的寫入頻寬會被限制至小於或等於一預設頻寬。其中,寫入頻寬用以表示每秒將多少資料程式化至可複寫式非揮發性記憶體模組406中。也就是說,藉由將第一程式化程序的寫入頻寬限制至小於或等於預設頻寬,可提供更多的寫入頻寬供資料整併程序使用,從而增加資料整併程序中對於有效資料的收集效率並且可縮短資料整併程序的執行時間。
在一範例實施例中,若第一資料為第一類資料,則在開始執行資料整併程序之後,第一程式化程序會被暫停。其中,暫停第一程式化程序也可以視為將第一程式化程序的寫入頻寬限制為零。例如,在一範例實施例中,記憶體管理電路502可配置一指令佇列,其用以暫存指示儲存資料的至少一指令。例如,此指令佇列會基於先入先出(First In First Out)規則來將暫存於其中的指令依序輸出。若此指令佇列輸出一個用於指示儲存第一資料的指令,記憶體管理電路502會指示可複寫式非揮發性記憶體模組406儲存第一資料的至少一部分。另外,若此指令佇列輸出一個用於指示儲存資料整併程序所收集之資料的指令,則記憶體管理電路502會指示可複寫式非揮發性記憶體模組406儲存由資料整併程序所收集之資料。
在一範例實施例中,若第一資料為第一類資料,記憶體管理電路502會暫停將指示儲存第一資料的指令加入至此指令佇列中,以暫停第一程式化程序。同時,更多用於指示儲存資料整併程序所收集之資料的指令可被加入至此指令佇列中,使得將資料整併程序所收集之資料回存至可複寫式非揮發性記憶體模組406的操作可以被連續地執行。藉此,可以確保在暫停第一程式化程序之期間所有的傳輸頻寬都可以供資料整併程序使用,更進一步縮短資料整併程序的執行時間。在停止資料整併程序之後,第一程式化程序可被恢復執行。例如,在停止資料整併程序之後,記憶體管理電路502會恢復將指示儲存第一資料的指令加入至此指令佇列中。
在一範例實施例中,若第一資料為第二類資料,則在開始執行資料整併程序之後,記憶體管理電路502允許資料整併程序與第一程式化程序共用傳輸頻寬。例如,在配置有上述指令佇列的一範例實施例中,若第一資料為第二類資料,則指示儲存第一資料的指令與指示儲存資料整併程序所收集之資料的指令皆可被加入至此指令佇列中。例如,記憶體管理電路502可隨機地或依據一預設比例將指示儲存第一資料的指令與指示儲存資料整併程序所收集之資料的指令加入至此指令佇列。然後,根據此指令佇列的輸出,相應的寫入操作可被可複寫式非揮發性記憶體模組406執行。因此,相對於第一資料為第一類資料之情況,當第一資料為第二類資料時,若資料整併程序被觸發,則第一程式化程序之寫入頻寬會在整個可複寫式非揮發性記憶體模組406之傳輸頻寬中占有較大比例。
在一範例實施例中,第一程式化程序是接續於前一個程式化程序(以下亦稱為第二程式化程序)執行的。第二程式化程序是用以儲存來自於主機系統11的另一資料(以下亦稱為第二資料)。其中,第二資料是第二類資料。換言之,第二資料是屬於多個離散的邏輯單元。在一範例實施例中,上述在第一類實體單元之總數達到第二門檻值之前就停止執行中的資料整併程序的操作是(只有)在判定第一資料是第一類資料(或第一程式化程序是循序寫入程序)且第一程式程序是接續於此第二程式化程序之後才會執行。
圖8是根據本發明的另一範例實施例所繪示的程式化程序的示意圖。
請參照圖8,主機系統11指示先儲存屬於邏輯單元612(G)、612(G+2)…612(H)的資料(即,第二資料),然後再儲存屬於邏輯單元612(0)~612(D)的資料(即,第一資料)。其中,邏輯單元612(G)、612(G+2)…612(H)是分散的(即未連續編號),而邏輯單元612(0)~612(D)是連續的(即連續編號)。因此,第二資料是第二類資料,而第一資料為第一類資料。
在本範例實施例中,記憶體管理電路502會先執行一個程式化程序(即,第二程式化程序)以將第二資料程式化至實體單元610(0)~610(I)。然後,記憶體管理電路502會執行第一程式化程序以將第一資料程式化至包含實體單元610(I+1)在內的其餘實體單元。其中,用於程式化第二資料的第二程式化程序亦稱為隨機寫入程序,而用於程式化第一資料的第一程式化程序亦稱為循序寫入程序。
在本範例實施例中,在執行第二程式化程序的過程中,若一個資料整併程序被執行,則記憶體管理電路502只會依照預設的規則來停止資料整併程序(例如,當判定第一類實體單元的總數達到上述第二門檻值時,此資料整併程序會被停止),而不會執行上述在第一類實體單元之總數達到第二門檻值之前就停止資料整併程序的操作。然而,在切換至執行第一程式化程序之後,若一個資料整併程序被執行,則在第一類實體單元之總數達到第二門檻值之前,記憶體管理電路502就可能直接停止資料整併程序,從而避免第一程式化程序的執行速度受到資料整併程序的影響。此外,圖8的範例實施例中其餘的操作細節皆已詳述於圖7的範例實施例中,故在此便不贅述。
值得一提的是,在圖8的另一範例實施例中,在執行第二程式化程序之前,用來程式化第一類資料的另一循序寫入程序(以下亦稱為第三程式化程序)已先被執行。因此,在接續於第二程式化程序而執行的第一程式化程序中,若有資料整併程序被執行,表示此時屬於儲存區601的實體單元610(0)~610(F)(即,第二類實體單元)實際上是同時儲存有第一類資料(即,循序資料)與第二類資料(非循序資料)。例如,儲存區601是被循序資料與非循序資料寫滿。
圖9是根據本發明的一範例實施例所繪示的記憶體管理方法的流程圖。
請參照圖9,在步驟S901中,接收第一資料。在步驟S902中,執行第一程式化程序。在步驟S903中,判斷第一類實體單元的總數是否小於或等於第一門檻值。若否,回到步驟S902。若第一類實體單元的總數小於或等於第一門檻值,在步驟S904中,執行資料整併程序。在步驟S905中,判斷第一資料是否是第一類資料。若第一資料是第一類資料,在步驟S906中,在第一類實體單元的總數達到第二門檻值之前,停止資料整併程序。若第一資料不是第一類資料(即,第一資料為第二類資料),在步驟S907中,在第一類實體單元的總數達到第二門檻值之後,停止資料整併程序。
圖10是根據本發明的另一範例實施例所繪示的記憶體管理方法的流程圖。
請參照圖10,在步驟S1001中,接收第一資料並執行第一程式化程序。在步驟S1002中,將第一資料的至少一部份資料程式化至第一實體單元。在步驟S1003中,判斷第一類實體單元的總數是否小於或等於第一門檻值。若否,再次執行步驟S1002,持續將第一資料程式化至第一實體單元。若第一類實體單元的總數小於或等於第一門檻值,在步驟S1004中,執行資料整併程序。在步驟S1005中,選擇屬於第二類實體單元的一個第二實體單元以作為有效資料的來源節點。在步驟S1006中,判斷第一資料是否為循序資料。若第一資料是循序資料,在步驟S1007中,判斷第二實體單元所儲存的有效資料之資料量是否大於一預設值。若第二實體單元所儲存的有效資料之資料量不大於此預設值,在步驟S1008中,抹除第二實體單元並停止(或結束)資料整併程序。若第二實體單元所儲存的有效資料之資料量大於此預設值,在步驟S1009中,將儲存於第二實體單元中的有效資料複製到第三實體單元,然後抹除第二實體單元。此外,若在步驟S1006中判定第一資料不是循序資料,則步驟1009也會被執行。在步驟S1010中,判斷第一類實體單元的總數是否大於第二門檻值。若是,則步驟S1008會被執行,以停止(或結束)資料整併程序。若在步驟S1010中判定第一類實體單元的總數仍小於第二門檻值,則步驟S1005會再次被執行,以選擇屬於第二類實體單元的另一個第二實體單元作為有效資料的來源節點。在步驟S1008之後,步驟S1002可被接續執行。
然而,圖9與圖10中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖9與圖10中各步驟可以實作為多個程式碼或是電路,本發明不加以限制。此外,圖9與圖10的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
綜上所述,在記憶體儲存裝置的運作中,一個資料整併程序可能會隨著第一類實體單元的減少而被觸發。在開始執行此資料整併程序之後,若判定所需程式化的資料是循序資料,則此資料整併程序可能會在第一類實體單元之總數達到一預設數目之前就停止,從而減少資料整併程序對循序資料(或循序寫入程序)的寫入速度造成的影響。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧記憶體儲存裝置
11‧‧‧主機系統
110‧‧‧系統匯流排
111‧‧‧處理器
112‧‧‧隨機存取記憶體
113‧‧‧唯讀記憶體
114‧‧‧資料傳輸介面
12‧‧‧輸入/輸出(I/O)裝置
20‧‧‧主機板
201‧‧‧隨身碟
202‧‧‧記憶卡
203‧‧‧固態硬碟
204‧‧‧無線記憶體儲存裝置
205‧‧‧全球定位系統模組
206‧‧‧網路介面卡
207‧‧‧無線傳輸裝置
208‧‧‧鍵盤
209‧‧‧螢幕
210‧‧‧喇叭
32‧‧‧SD卡
33‧‧‧CF卡
34‧‧‧嵌入式儲存裝置
341‧‧‧嵌入式多媒體卡
342‧‧‧嵌入式多晶片封裝儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
502‧‧‧記憶體管理電路
504‧‧‧主機介面
506‧‧‧記憶體介面
508‧‧‧錯誤檢查與校正電路
510‧‧‧緩衝記憶體
512‧‧‧電源管理電路
601‧‧‧儲存區
602‧‧‧閒置區
610(0)~610(B)‧‧‧實體單元
612(0)~612(C)‧‧‧邏輯單元
S901‧‧‧步驟(接收第一資料)
S902‧‧‧步驟(執行第一程式化程序)
S903‧‧‧步驟(判斷第一類實體單元的總數是否小於或等於第一門檻值)
S904‧‧‧步驟(執行資料整併程序)
S905‧‧‧步驟(判斷第一資料是否是第一類資料)
S906‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之前,停止資料整併程序)
S907‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之後,停止資料整併程序)
S1001‧‧‧步驟(接收第一資料並執行第一程式化程序)
S1002‧‧‧步驟(將第一資料的至少一部份資料程式化至第一實體單元)
S1003‧‧‧步驟(判斷第一類實體單元的總數是否小於或等於第一門檻值)
S1004‧‧‧步驟(執行資料整併程序)
S1005‧‧‧步驟(選擇屬於第二類實體單元的第二實體單元)
S1006‧‧‧步驟(判斷第一資料是否為循序資料)
S1007‧‧‧步驟(判斷第二實體單元所儲存的有效資料之資料量是否大於預設值)
S1008‧‧‧步驟(停止資料整併程序)
S1009‧‧‧步驟(將儲存於第二實體單元中的有效資料複製到第三實體單元)
S1010‧‧‧步驟(判斷第一類實體單元的總數是否大於第二門檻值)
11‧‧‧主機系統
110‧‧‧系統匯流排
111‧‧‧處理器
112‧‧‧隨機存取記憶體
113‧‧‧唯讀記憶體
114‧‧‧資料傳輸介面
12‧‧‧輸入/輸出(I/O)裝置
20‧‧‧主機板
201‧‧‧隨身碟
202‧‧‧記憶卡
203‧‧‧固態硬碟
204‧‧‧無線記憶體儲存裝置
205‧‧‧全球定位系統模組
206‧‧‧網路介面卡
207‧‧‧無線傳輸裝置
208‧‧‧鍵盤
209‧‧‧螢幕
210‧‧‧喇叭
32‧‧‧SD卡
33‧‧‧CF卡
34‧‧‧嵌入式儲存裝置
341‧‧‧嵌入式多媒體卡
342‧‧‧嵌入式多晶片封裝儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
502‧‧‧記憶體管理電路
504‧‧‧主機介面
506‧‧‧記憶體介面
508‧‧‧錯誤檢查與校正電路
510‧‧‧緩衝記憶體
512‧‧‧電源管理電路
601‧‧‧儲存區
602‧‧‧閒置區
610(0)~610(B)‧‧‧實體單元
612(0)~612(C)‧‧‧邏輯單元
S901‧‧‧步驟(接收第一資料)
S902‧‧‧步驟(執行第一程式化程序)
S903‧‧‧步驟(判斷第一類實體單元的總數是否小於或等於第一門檻值)
S904‧‧‧步驟(執行資料整併程序)
S905‧‧‧步驟(判斷第一資料是否是第一類資料)
S906‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之前,停止資料整併程序)
S907‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之後,停止資料整併程序)
S1001‧‧‧步驟(接收第一資料並執行第一程式化程序)
S1002‧‧‧步驟(將第一資料的至少一部份資料程式化至第一實體單元)
S1003‧‧‧步驟(判斷第一類實體單元的總數是否小於或等於第一門檻值)
S1004‧‧‧步驟(執行資料整併程序)
S1005‧‧‧步驟(選擇屬於第二類實體單元的第二實體單元)
S1006‧‧‧步驟(判斷第一資料是否為循序資料)
S1007‧‧‧步驟(判斷第二實體單元所儲存的有效資料之資料量是否大於預設值)
S1008‧‧‧步驟(停止資料整併程序)
S1009‧‧‧步驟(將儲存於第二實體單元中的有效資料複製到第三實體單元)
S1010‧‧‧步驟(判斷第一類實體單元的總數是否大於第二門檻值)
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。 圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。 圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。 圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。 圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。 圖6是根據本發明的一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。 圖7是根據本發明的一範例實施例所繪示的程式化程序的示意圖。 圖8是根據本發明的另一範例實施例所繪示的程式化程序的示意圖。 圖9是根據本發明的一範例實施例所繪示的記憶體管理方法的流程圖。 圖10是根據本發明的另一範例實施例所繪示的記憶體管理方法的流程圖。
S901‧‧‧步驟(接收第一資料)
S902‧‧‧步驟(執行第一程式化程序)
S903‧‧‧步驟(判斷第一類實體單元的總數是否小於或等於第一門檻值)
S904‧‧‧步驟(執行資料整併程序)
S905‧‧‧步驟(判斷第一資料是否是第一類資料)
S906‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之前,停止資料整併程序)
S907‧‧‧步驟(在第一類實體單元的總數達到第二門檻值之後,停止資料整併程序)
Claims (24)
- 一種記憶體管理方法,用於包括多個實體單元的一可複寫式非揮發性記憶體模組,該記憶體管理方法包括: 接收一第一資料並執行一第一程式化程序; 在該第一程式化程序中,將該第一資料的至少一部份資料程式化至該些實體單元中的一第一實體單元; 判斷該些實體單元中的一第一類實體單元的一總數是否小於或等於一第一門檻值,其中屬於該第一類實體單元的每一個實體單元皆未儲存有效資料; 若該第一類實體單元的該總數小於或等於該第一門檻值,執行一資料整併程序,使得該第一類實體單元的該總數從一第一數目變更為一第二數目,其中該第二數目大於該第一數目; 判斷該第一資料是一第一類資料或一第二類資料,其中該第一類資料屬於多個連續編號的邏輯單元,而該第二類資料不屬於該些連續編號的邏輯單元; 若該第一資料是該第一類資料,在該第二數目達到一第二門檻值之前,停止該資料整併程序,其中該第二門檻值大於該第一門檻值;以及 若該第一資料是該第二類資料,在該第二數目達到該第二門檻值之後,停止該資料整併程序。
- 如申請專利範圍第1項所述的記憶體管理方法,其中判斷該第一資料是該第一類資料或該第二類資料的步驟包括: 根據被程式化至該第一實體單元的該第一資料的該至少一部份資料判斷該第一資料是該第一類資料或該第二類資料。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 若該第一資料是該第一類資料,在該資料整併程序中判斷該些實體單元中屬於一第二類實體單元的一第二實體單元所儲存的有效資料之資料量是否大於一預設值; 若該第二實體單元所儲存的該有效資料之資料量大於該預設值,將儲存於該第二實體單元中的該有效資料複製到該些實體單元中的一第三實體單元;以及 若該第二實體單元所儲存的該有效資料之資料量不大於該預設值,抹除該第二實體單元並停止該資料整併程序。
- 如申請專利範圍第3項所述的記憶體管理方法,其中該預設值為零。
- 如申請專利範圍第3項所述的記憶體管理方法,更包括: 在判斷該第二實體單元所儲存的有效資料之資料量是否大於該預設值之前,執行一選擇程序;以及 在該選擇程序中,選擇所儲存的有效資料之資料量小於一平均值的該第二實體單元。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 若該第一資料是該第一類資料,在開始該資料整併程序之後,暫停該第一程式化程序,並且在停止該資料整併程序之後,恢復執行該第一程式化程序;以及 若該第一資料是該第二類資料,允許該資料整併程序與該第一程式化程序共用一傳輸頻寬。
- 如申請專利範圍第6項所述的記憶體管理方法,更包括: 配置一指令佇列,其用以暫存指示儲存資料的至少一指令; 若該第一資料是該第一類資料,暫停將指示儲存該第一資料的一指令加入至該指令佇列中,以暫停該第一程式化程序;以及 若該第一資料是該第二類資料,將指示儲存該資料整併程序所收集之資料的一指令與指示儲存該第一資料的該指令加入至該指令佇列中。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 判斷該第一程式程序是否接續於一第二程式化程序,其中該第二程式化程序用以程式化一第二資料至該些實體單元中,其中該第二資料為該第二類資料, 其中在該第二數目達到該第二門檻值之前停止該資料整併程序的步驟,是在判定該第一資料是該第一類資料且該第一程式程序是接續於該第二程式化程序之後執行。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統; 一可複寫式非揮發性記憶體模組,包括多個實體單元;以及 一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組, 其中該記憶體控制電路單元用以接收一第一資料並執行一第一程式化程序, 其中在該第一程式化程序中,該記憶體控制電路單元發送一程式化指令序列,以指示將該第一資料的至少一部份資料程式化至該些實體單元中的一第一實體單元, 其中該記憶體控制電路單元更用以判斷該些實體單元中的一第一類實體單元的一總數是否小於或等於一第一門檻值,其中屬於該第一類實體單元的每一個實體單元皆未儲存有效資料, 其中若該第一類實體單元的該總數小於或等於該第一門檻值,該記憶體控制電路單元更用以執行一資料整併程序,使得該第一類實體單元的該總數從一第一數目變更為一第二數目,其中該第二數目大於該第一數目, 其中該記憶體控制電路單元更用以判斷該第一資料是一第一類資料或一第二類資料,其中該第一類資料屬於多個連續編號的邏輯單元,而該第二類資料不屬於該些連續編號的邏輯單元, 其中若該第一資料是該第一類資料,該記憶體控制電路單元更用以在該第二數目達到一第二門檻值之前,停止該資料整併程序,其中該第二門檻值大於該第一門檻值, 其中若該第一資料是該第二類資料,該記憶體控制電路單元更用以在該第二數目達到該第二門檻值之後,停止該資料整併程序。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該記憶體控制電路單元判斷該第一資料是該第一類資料或該第二類資料的操作包括: 根據被程式化至該第一實體單元的該第一資料的該至少一部份資料判斷該第一資料是該第一類資料或該第二類資料。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中若該第一資料是該第一類資料,該記憶體控制電路單元更用以在該資料整併程序中判斷該些實體單元中屬於一第二類實體單元的一第二實體單元所儲存的有效資料之資料量是否大於一預設值, 其中若該第二實體單元所儲存的該有效資料之資料量大於該預設值,該記憶體控制電路單元更用以指示將儲存於該第二實體單元中的該有效資料複製到該些實體單元中的一第三實體單元, 其中若該第二實體單元所儲存的該有效資料之資料量不大於該預設值,該記憶體控制電路單元抹除該第二實體單元並停止該資料整併程序。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該預設值為零。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中在判斷該第二實體單元所儲存的有效資料之資料量是否大於該預設值之前,該記憶體控制電路單元更用以執行一選擇程序, 其中在該選擇程序中,該記憶體控制電路單元選擇所儲存的有效資料之資料量小於一平均值的該第二實體單元。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中若該第一資料是該第一類資料,在開始該資料整併程序之後,該記憶體控制電路單元更用以暫停該第一程式化程序,並且在停止該資料整併程序之後,該記憶體控制電路單元更用以恢復執行該第一程式化程序, 其中若該第一資料是該第二類資料,該記憶體控制電路單元允許該資料整併程序與該第一程式化程序共用一傳輸頻寬。
- 如申請專利範圍第14項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以配置一指令佇列,其用以暫存指示儲存資料的至少一指令, 其中若該第一資料是該第一類資料,該記憶體控制電路單元更用以暫停將指示儲存該第一資料的一指令加入至該指令佇列中,以暫停該第一程式化程序, 其中若該第一資料是該第二類資料,該記憶體控制電路單元將指示儲存該資料整併程序所收集之資料的一指令與指示儲存該第一資料的該指令加入至該指令佇列中。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以判斷該第一程式程序是否接續於一第二程式化程序,其中該第二程式化程序用以程式化一第二資料至該些實體單元中,其中該第二資料為該第二類資料, 其中該記憶體控制電路單元是在判定該第一資料是該第一類資料且該第一程式程序是接續於該第二程式化程序之後,執行在該第二數目達到該第二門檻值之前停止該資料整併程序的操作。
- 一種記憶體控制電路單元,用於控制包括多個實體單元的一可複寫式非揮發性記憶體模組,該記憶體控制電路單元包括: 一主機介面,用以耦接至一主機系統; 一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組;以及 一記憶體管理電路,耦接至該主機介面與該記憶體介面, 其中該記憶體管理電路用以接收一第一資料並執行一第一程式化程序, 其中在該第一程式化程序中,該記憶體管理電路發送一程式化指令序列以指示將該第一資料的至少一部份資料程式化至該些實體單元中的一第一實體單元, 其中該記憶體管理電路更用以判斷該些實體單元中的一第一類實體單元的一總數是否小於或等於一第一門檻值,其中屬於該第一類實體單元的每一個實體單元皆未儲存有效資料, 其中若該第一類實體單元的該總數小於或等於該第一門檻值,該記憶體管理電路更用以執行一資料整併程序,使得該第一類實體單元的該總數從一第一數目變更為一第二數目,其中該第二數目大於該第一數目, 其中該記憶體管理電路更用以判斷該第一資料是一第一類資料或一第二類資料,其中該第一類資料屬於多個連續編號的邏輯單元,而該第二類資料不屬於該些連續編號的邏輯單元, 其中若該第一資料是該第一類資料,該記憶體管理電路更用以在該第二數目達到一第二門檻值之前,停止該資料整併程序,其中該第二門檻值大於該第一門檻值, 其中若該第一資料是該第二類資料,該記憶體管理電路更用以在該第二數目達到該第二門檻值之後,停止該資料整併程序。
- 如申請專利範圍第17項所述的記憶體控制電路單元,其中該記憶體管理電路判斷該第一資料是該第一類資料或該第二類資料的操作包括: 根據被程式化至該第一實體單元的該第一資料的該至少一部份資料判斷該第一資料是該第一類資料或該第二類資料。
- 如申請專利範圍第17項所述的記憶體控制電路單元,其中若該第一資料是該第一類資料,該記憶體管理電路更用以在該資料整併程序中判斷該些實體單元中屬於一第二類實體單元的一第二實體單元所儲存的有效資料之資料量是否大於一預設值, 其中若該第二實體單元所儲存的該有效資料之資料量大於該預設值,該記憶體管理電路更用以將儲存於該第二實體單元中的該有效資料複製到該些實體單元中的一第三實體單元, 其中若該第二實體單元所儲存的該有效資料之資料量不大於該預設值,該記憶體管理電路抹除該第二實體單元並停止該資料整併程序。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中該預設值為零。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中在判斷該第二實體單元所儲存的有效資料之資料量是否大於該預設值之前,該記憶體管理電路更用以執行一選擇程序, 其中在該選擇程序中,該記憶體管理電路選擇所儲存的有效資料之資料量小於一平均值的該第二實體單元。
- 如申請專利範圍第17項所述的記憶體控制電路單元,其中若該第一資料是該第一類資料,在開始該資料整併程序之後,該記憶體管理電路暫停該第一程式化程序,並且在停止該資料整併程序之後,該記憶體管理電路恢復執行該第一程式化程序, 其中若該第一資料是該第二類資料,該記憶體管理電路允許該資料整併程序與該第一程式化程序共用一傳輸頻寬。
- 如申請專利範圍第22項所述的記憶體控制電路單元,其中該記憶體管理電路更用以配置一指令佇列,其用以暫存指示儲存資料的至少一指令, 其中若該第一資料是該第一類資料,該記憶體管理電路更用以暫停將指示儲存該第一資料的一指令加入至該指令佇列中,以暫停該第一程式化程序, 其中若該第一資料是該第二類資料,該記憶體管理電路將指示儲存該資料整併程序所收集之資料的一指令與指示儲存該第一資料的該指令加入至該指令佇列中。
- 如申請專利範圍第17項所述的記憶體控制電路單元,其中該記憶體管理電路更用以判斷該第一程式程序是否接續於一第二程式化程序,其中該第二程式化程序用以程式化一第二資料至該些實體單元中,其中該第二資料為該第二類資料, 其中該記憶體管理電路是在判定該第一資料是該第一類資料且該第一程式程序是接續於該第二程式化程序之後,執行在該第二數目達到該第二門檻值之前停止該資料整併程序的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105108743A TWI610171B (zh) | 2016-03-22 | 2016-03-22 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US15/158,600 US10346040B2 (en) | 2016-03-22 | 2016-05-19 | Data merging management method based on data type, memory storage device and memory control circuit unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105108743A TWI610171B (zh) | 2016-03-22 | 2016-03-22 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734795A true TW201734795A (zh) | 2017-10-01 |
TWI610171B TWI610171B (zh) | 2018-01-01 |
Family
ID=59897180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105108743A TWI610171B (zh) | 2016-03-22 | 2016-03-22 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10346040B2 (zh) |
TW (1) | TWI610171B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI714840B (zh) * | 2018-04-12 | 2021-01-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190128392A (ko) * | 2018-05-08 | 2019-11-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN110879794B (zh) * | 2018-09-05 | 2023-01-17 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727452B2 (en) * | 2007-12-14 | 2017-08-08 | Virident Systems, Llc | Distributing metadata across multiple different disruption regions within an asymmetric memory system |
US8380909B2 (en) * | 2009-04-08 | 2013-02-19 | Google Inc. | Multiple command queues having separate interrupts |
TWI451247B (zh) * | 2010-09-23 | 2014-09-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
KR101734200B1 (ko) * | 2010-12-03 | 2017-05-11 | 삼성전자주식회사 | 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
TWI423022B (zh) * | 2011-02-15 | 2014-01-11 | Phison Electronics Corp | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US10120613B2 (en) * | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
-
2016
- 2016-03-22 TW TW105108743A patent/TWI610171B/zh active
- 2016-05-19 US US15/158,600 patent/US10346040B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI714840B (zh) * | 2018-04-12 | 2021-01-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
TWI610171B (zh) | 2018-01-01 |
US20170277436A1 (en) | 2017-09-28 |
US10346040B2 (en) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI615710B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI587135B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI676176B (zh) | 資料整併方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107239225B (zh) | 存储器管理方法、存储器储存装置及存储器控制电路单元 | |
US20200301851A1 (en) | Memory control method, memory storage device and memory control circuit unit | |
TWI649653B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202038098A (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI702496B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI610171B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN112051971B (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
US11755242B2 (en) | Data merging method, memory storage device for updating copied L2P mapping table according to the physical address of physical unit | |
CN111737165B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
TW201719413A (zh) | 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI688956B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI717755B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN111767005B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
CN112835536B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
CN112394883B (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
TWI653531B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI720400B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI584292B (zh) | 記憶體抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI591641B (zh) | 資料程式化方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI768738B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI738272B (zh) | 快閃記憶體之資料整理方法、快閃記憶體儲存裝置及快閃記憶體控制電路單元 |