TWI790383B - 資料儲存裝置與資料處理方法 - Google Patents
資料儲存裝置與資料處理方法 Download PDFInfo
- Publication number
- TWI790383B TWI790383B TW108121252A TW108121252A TWI790383B TW I790383 B TWI790383 B TW I790383B TW 108121252 A TW108121252 A TW 108121252A TW 108121252 A TW108121252 A TW 108121252A TW I790383 B TWI790383 B TW I790383B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- garbage collection
- editing
- memory controller
- memory blocks
- Prior art date
Links
Images
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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
Abstract
一種資料儲存裝置,包括一記憶體裝置以及一記憶體控制器。記憶體裝置包括複數記憶體區塊。記憶體控制器耦接記憶體裝置,用以存取記憶體裝置。記憶體控制器根據空閒之記憶體區塊之一數量判斷是否需執行一垃圾收集,並且於記憶體控制器判斷需執行垃圾收集時,記憶體控制器根據複數開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間,開始一垃圾收集程序用以於執行期間內執行垃圾收集程序之至少一部分,以及於執行期間已屆滿但垃圾收集程序尚未完成時,暫停垃圾收集程序之執行並且根據開放編輯的記憶體區塊之最新的編輯狀態決定後續用以繼續執行垃圾收集程序之一時間間隔。
Description
本發明係有關於適用於一資料儲存裝置之一種資料處理方法,可可有效率地處理記憶體裝置所儲存之資料,以提升記憶體裝置之效能。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合SD/MMC規格、CF規格、MS規格與XD規格的記憶卡、固態硬碟、嵌入式多媒體記憶卡(embedded Multi Media Card,縮寫為eMMC)以及通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)已經廣泛地被應用在多種用途上。因此,在這些資料儲存裝置上,有效率的存取控制也變成一個重要的議題。
為了提高資料儲存裝置的存取效能,本發明提出一種新的資料處理方法,可有效率地處理記憶體裝置所儲存之資料,以提升記憶體裝置之存取效能。
本發明揭露一種資料儲存裝置,包括一記憶體裝置以及一記憶體控制器。記憶體裝置包括複數記憶體區塊。記憶體控制器耦接記憶體裝置,用
以存取記憶體裝置。記憶體控制器根據空閒之記憶體區塊之一數量判斷是否需執行一垃圾收集,並且於記憶體控制器判斷需執行垃圾收集時,記憶體控制器根據複數開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間,開始一垃圾收集程序用以於執行期間內執行垃圾收集程序之至少一部分,以及於執行期間已屆滿但垃圾收集程序尚未完成時,暫停垃圾收集程序之執行並且根據開放編輯的記憶體區塊之最新的編輯狀態決定後續用以繼續執行垃圾收集程序之一時間間隔。
本發明揭露一種資料處理方法,適用於一資料儲存裝置,資料儲存裝置包括一記憶體裝置以及一記憶體控制器,記憶體裝置包括複數記憶體區塊,記憶體控制器耦接記憶體裝置,用以存取記憶體裝置,該方法包括:由該記憶體控制器根據空閒之記憶體區塊之一數量判斷是否需執行一垃圾收集;於該記憶體控制器判斷需執行該垃圾收集時,由該記憶體控制器根據複數開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間;由該記憶體控制器開始一垃圾收集程序用以於該執行期間內執行該垃圾收集程序之至少一部分;於該執行期間已屆滿但該垃圾收集程序尚未完成時,由該記憶體控制器暫停該垃圾收集程序之執行;以及根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定爾後用以繼續執行該垃圾收集程序之一時間間隔。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Data_Buffer、Dest_Block、L2P_Block、P2L_Block、System_Block
:目前開放編輯的記憶體區塊
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的示意圖。
第2圖係顯示根據本發明之一實施例所述之資料處理方法流程圖。
第3圖係顯示根據本發明之一實施例所述之開放編輯的記憶體區塊的編輯狀態示意圖。
第4圖係顯示根據本發明之另一實施例所述之開放編輯的記憶體區塊的編輯狀態示意圖。
為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置100的示意圖。資料儲存裝置100包括一記憶體裝置120,例如,一快閃記憶體(Flash Memory)模組,以及一記憶體控制器110,且記憶體控制器110用來存取(Access)記憶體裝置120。根據本發明一實施例,記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對記憶體裝置120之存取。控制邏輯114包含了一編碼器132以及一解碼器134,其中編碼器132用來對寫入到記憶體裝置120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從記憶體裝置120所讀出的資料進行解碼。
於典型狀況下,記憶體裝置120包含了多個快閃記憶體晶片,而每
一個快閃記憶體晶片包含複數個記憶體區塊(Block),而該控制器(例如,透過微處理器112執行程式碼112C之記憶體控制器110)對記憶體裝置120進行抹除資料運作係以區塊為單位來進行。另外,一記憶體區塊可記錄(包含)特定數量的資料頁(Page),即,實體資料頁,其中該控制器(例如,透過微處理器112執行程式碼112C之記憶體控制器110)對記憶體裝置120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制記憶體裝置120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主機裝置(Host Device)130溝通。在一實施例中,記憶體控制器110透過介面邏輯118並使用一標準通訊協定與主機裝置130溝通。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus,縮寫為USB)標準、安全數位(Secure Digital,縮寫為SD)介面標準、超高速一代(Ultra High Speed-I,縮寫為UHS-I)介面標準、超高速二代(Ultra High Speed-II,縮寫為UHS-II)介面標準、複合式快閃記憶體(Compact flash,縮寫為CF)介面標準、多媒體卡(Multimedia Card,縮寫為MMC)介面標準、嵌入式多媒體卡(Embedded Multimedia Card,縮寫為eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,縮寫為UFS)介面標準、高技術組態(Advanced Technology Attachment,縮寫為ATA)標準、序列高技術組態(Serial ATA,縮寫為SATA)標準、快捷外設互聯標準(Peripheral Component Interconnect Express,縮寫為PCI-E)標準、並列先進附件(Parallel
Advanced Technology Attachment,縮寫為PATA)標準。
在一實施例中,緩衝記憶體116係以隨機存取記憶體(Random Access Memory,RAM)來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM,SRAM),但本發明不限於此。
在一實施例中,資料儲存裝置100可以是可攜式記憶體裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主機裝置130為一可與資料儲存裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,資料儲存裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主機裝置130可以是該電子裝置的一處理器。
主機裝置130可對資料儲存裝置100發出指令,例如,讀取指令或寫入指令,用以存取記憶體裝置120所儲存之資料,或者進一步控制、管理資料儲存裝置100。
根據本發明之一實施例,記憶體裝置120所包含之複數個記憶體區塊中可為單層式儲存(Single-Level Cell,SLC)記憶體區塊、多層式儲存(Multiple-Level Cell,MLC)記憶體區塊以及/或是三層式儲存(Triple-Level Cell,TLC)記憶體區塊。SLC記憶體區塊的每個記憶體單元中儲存一個位元資料,MLC記憶體區塊的每個記憶體單元中儲存兩個位元資料,TLC記憶體區塊的每個記憶體單元中儲存三個位元資料。
一般而言,記憶體裝置120可大體被區分為三個區域,包含系統區域、資料區域以及備用區域。記憶體控制器110可自備用區域選擇一或多個既定記憶體區塊作為快取記憶體,或稱緩存器(buffer)。待緩存器被寫滿時,記憶體控制器110再將作為緩存器之既定記憶體區塊更新成資料區域的資料區塊。舉例而言,若用以接收並暫存資料的緩存器為MLC或TLC記憶體區塊,待緩存器被寫滿時,可直接被更新為資料區域的資料區塊。若用以接收並暫存資料的緩存器為SLC記憶體區塊,待一定數量之緩存器被寫滿時,可透過特定的程序,例如,垃圾收集程序,將多個緩存器記憶體區塊所儲存之資料搬移至MLC或TLC記憶體區塊(目標記憶體區塊),並藉此操作將目標記憶體區塊更新為資料區域的資料區塊。
垃圾收集(Garbage Collection)用於收集多個記憶體區塊中零散的有效資料至特定區塊,使只殘留無效資料的該些區塊得以被抹除並且釋放出來,成為空閒的記憶體區塊。然而,垃圾收集程序在執行上通常需要相當的運算資源。因此,過早開始執行垃圾收集程序,或者執行垃圾收集程序的時間過長,皆可能導致記憶體裝置之存取效能下降。另一方面,若開始執行垃圾收集程序的時間太晚,或者執行垃圾收集程序的時間過短,則空閒的記憶體區塊的釋放速度過慢,因而產生記憶體裝置之空閒的記憶體區塊不足的問題,導致記憶體裝置之存取操作可能因記憶體空間不足而卡死。
有鑒於此,為了使垃圾收集的執行效率可達最佳化,本發明提出一種新的資料處理方法,藉由動態調整用以控制垃圾收集程序之執行的參數,使垃圾收集的執行效率可達最佳化,並可有效提升記憶體裝置之存取效能。
根據本發明之一實施例,用於控制垃圾收集程序之執行的參數可包含:
參數A:空閒之記憶體區塊之一數量
參數B:相鄰兩次執行垃圾收集程序的時間間隔
參數C:執行垃圾收集程序的期間
於本發明之一實施例中,記憶體控制器110根據空閒之記憶體區塊之一數量(參數A)判斷是否需執行垃圾收集。更具體的說,當空閒之記憶體區塊之數量不低於一低臨界值時,記憶體控制器110可判斷目前空閒之記憶體區塊仍足夠,因此,不需執行垃圾收集。另一方面,當空閒之記憶體區塊之數量下降至低於低臨界值時,記憶體控制器110可判斷目前空閒之記憶體區塊已不足夠,因此,記憶體控制器110可判斷需執行垃圾收集,並且可決定開始一垃圾收集程序。
根據本發明之一實施例,記憶體控制器110可將垃圾收集程序的執行分散於不同的時間點。即,記憶體控制器110通常不會於一次執行機會中將整個垃圾收集程序完成,而是利用多次佔據較短時間的執行機會間歇地執行垃圾收集程序。換言之,記憶體控制器110可於不同的時間點間歇地執行垃圾收集程序,並且於各執行機會執行垃圾收集程序的一或多個部份。舉例而言,記憶體控制器110可將垃圾收集程序的執行依序安插於記憶體裝置120之一或多個讀/寫操作中,用以分散運算資源的占用時間。
根據本發明之一實施例,記憶體控制器110可動態地根據複數目前開放編輯的記憶體區塊之一最新的編輯狀態決定於一次執行機會中執行垃圾收
集程序的期間(參數C)以及相鄰兩次執行垃圾收集程序的時間間隔(參數B),並且根據執行期間(參數C)與時間間隔(參數B)將垃圾收集程序之執行安插於記憶體裝置120之一或多個讀/寫操作中。
第2圖係顯示根據本發明之一實施例所述之資料處理方法流程圖。首先,當記憶體控制器110判斷需執行垃圾收集時,記憶體控制器110開始一垃圾收集程序,並且根據複數個目前開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間(參數C)(步驟S202),此執行期間(參數C)即為於本次執行機會(即,目前的執行機會,或即將到來的執行機會)中執行垃圾收集程序的執行期間。接著,記憶體控制器110於步驟S202所決定之執行期間內執行垃圾收集程序之至少一部分(步驟S204)。於執行期間屆滿時,記憶體控制器110可進一步確認垃圾收集程序是否已完成(步驟S206)。舉例而言,記憶體控制器110可決定於垃圾收集程序中挑選出有效資料頁(valid page)數量VP_Count低於一VP臨界值的資料區塊作為垃圾收集的來源記憶體區塊。當所有VP_Countt低於VP臨界值的資料區塊內的有效資料都被搬移至目標記憶體區塊後,記憶體控制器110可判斷垃圾收集程序已完成。
若記憶體控制器110判斷垃圾收集程序已完成,則流程結束。若記憶體控制器110判斷垃圾收集程序尚未完成,則記憶體控制器110可先暫停垃圾收集程序之執行(步驟S208),並且動態地根據目前開放編輯的記憶體區塊之最新的編輯狀態決定接下來用以繼續執行尚未完成之垃圾收集程序之一時間間隔(參數B)(步驟S210)。即,記憶體控制器110於步驟S210中動態地決定下一次執行垃圾收集程序與此次執行垃圾收集程序之時間間隔。
接著,在等待步驟S210所決定之時間間隔屆滿(步驟S212)後,記憶體控制器110可返回步驟S202重新根據複數個目前開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間(參數C),並且於步驟S204繼續執行尚未完成之垃圾收集程序。值得注意的是,於本發明之一實施例中,記憶體控制器110可於步驟S212的等待期間執行任何操作,例如,根據自主機裝置130接收到的指令執行一或多個對應之讀/寫操作,並且於一或多個對應之讀/寫操作完成且時間間隔屆滿後,返回步驟S202。
根據本發明之一實施例,如第2圖所示,每當記憶體控制器110繼續執行尚未完成之垃圾收集程序時,記憶體控制器110可重新根據複數個目前開放編輯的記憶體區塊之最新的編輯狀態決定於當次執行機會中用以執行垃圾收集程序之執行期間(參數C)。換言之,於本發明之實施例中,執行期間(參數C)並非一定值,而是可以根據記憶體區塊之最新的編輯狀態動態地調整。
此外,根據本發明之一實施例,如第2圖所示,每當垃圾收集程序之執行被暫停時,記憶體控制器110可重新根據複數個目前開放編輯的記憶體區塊之最新的編輯狀態決定下一次垃圾收集程序之執行與本次垃圾收集程序之執行之時間間隔(參數B)。換言之,於本發明之實施例中,時間間隔(參數B)也非一定值,而是可以根據記憶體區塊之最新的編輯狀態動態地調整。
值得注意的是,於本發明之其他實施例中,記憶體控制器110亦可於垃圾收集程序之執行被暫停時,同時根據當下記憶體區塊之最新的編輯狀態決定參數B與參數C。同樣地,於本發明之其他實施例中,記憶體控制器110亦可於繼續執行尚未完成之垃圾收集程序時,同時根據當下記憶體區塊之最新的編
輯狀態決定參數B與參數C。
根據本發明之一實施例,開放編輯的記憶體區塊(open memory block)為目前尚未被記憶體控制器110寫滿的記憶體區塊。舉例而言,上述被選擇作為緩存器的既定記憶體區塊在被寫滿之前,即為目前資料儲存裝置100系統中複數個開放編輯的記憶體區塊之其中一者。
除此之外,記憶體控制器110可於一或多個記憶體區塊內維護多個資料儲存裝置100系統的實體對邏輯(Physical to Logical,縮寫為P2L)映射表格。P2L映射表格包含了複數實體位址與邏輯位址之映射關係之資訊。P2L映射表格可包含複數欄位,各欄位用以紀錄寫入對應之一記憶體區塊之各實體資料頁之資料係指向(對應於)哪個邏輯資料頁。於本發明之實施例中,在用以儲存P2L映射表格的記憶體區塊被寫滿之前,該(些)記憶體區塊亦為目前資料儲存裝置100系統中複數個開放編輯的記憶體區塊之其中一者。
同樣地,記憶體控制器110可於一或多個記憶體區塊內維護一個資料儲存裝置100系統的邏輯對實體(Logical to Physical,縮寫為L2P)映射表格。L2P映射表格包含複數邏輯位址與實體位址之映射關係之資訊。L2P映射表格可包含複數欄位,各欄位對應於主機裝置系統的一個邏輯資料頁,用以紀錄此邏輯資料頁之資料係指向(實際上被儲存於)記憶體裝置120的哪個記憶體區塊以及哪個實體資料頁。於本發明之實施例中,在用以儲存L2P映射表格的記憶體區塊被寫滿之前,該(些)記憶體區塊亦為目前資料儲存裝置100系統中複數個開放編輯的記憶體區塊之其中一者。
除此之外,記憶體控制器110可於至少一個記憶體區塊內維護至少
一系統表格記憶體區塊(簡稱為系統表格區塊),系統表格區塊用以儲存多個系統表格。例如,系統表格區塊的一資料頁可用以儲存一系統表格。於此所述之系統表格可以是用以紀錄各個表格(例如,上述之L2P映射表格、P2L映射表格等)被儲存於記憶體裝置120的對應之位址之根表格(root table)、用以紀錄各個記憶體區塊之平均耗損(wear leveling)的平均耗損表格、用以紀錄各個記憶體區塊之有效資料頁(valid page)數量的VP表格等。一般而言,每當記憶體控制器110欲更新系統表格時,會將其所欲更新之系統表格的內容寫入系統表格區塊的空白資料頁,因此,於本發明之實施例中,在被寫滿之前,系統表格區塊亦為目前資料儲存裝置100系統中複數個開放編輯的記憶體區塊之其中一者。
除此之外,記憶體控制器於一垃圾收集程序中,會選擇一空閒之記憶體區塊作為目標記憶體區塊,用以將至少一來源記憶體區塊內所儲存之有效資料搬移至目標記憶體區塊。因此,於本發明之實施例中,在被寫滿之前,垃圾收集之目標記憶體區塊亦為目前資料儲存裝置100系統中複數個開放編輯的記憶體區塊之其中一者。
根據本發明之一實施例,所述之記憶體區塊之編輯狀態可以是記憶體區塊之剩餘空白資料頁之一數量。根據本發明之另一實施例,所述之記憶體區塊之編輯狀態可以是記憶體區塊之有效資料頁之一數量。根據本發明之又另一實施例,所述之記憶體區塊之編輯狀態可以是記憶體區塊之非空白資料頁之一數量。於本發明之實施例中,動態調整參數B與參數C的目的在於藉由控制執行垃圾收集的期間長度與時間間隔,調整空閒的記憶體區塊的釋放速度(或,產生速度),使得空閒的記憶體區塊的產生速度大於空閒的記憶體區塊的消耗速
度。因此,記憶體控制器110可根據目前開放編輯的記憶體區塊之一或多者的剩餘空白資料頁之數量及/或有效資料頁之一數量做些許的計算,以決定參數B與參數C。由於記憶體控制器110會持續監控目前開放編輯的記憶體區塊之最新的編輯狀態,因此,最新的編輯狀態可有效地反映出空閒的記憶體區塊的消耗速度。如此一來,藉由將最新的編輯狀態做適當的運算後,根據此資訊動態地調整參數B與參數C,便可使得空閒的記憶體區塊的產生速度大於空閒的記憶體區塊的消耗速度,並且藉由每次的調整在執行垃圾收集程序的時間間隔以及執行垃圾收集程序的時間長度之間取得好的平衡,使垃圾收集的執行效率可達最佳化。
根據本發明之一實施例,相鄰兩次執行垃圾收集程序的時間間隔(參數B)可以時間為單位、以執行主機裝置之指令數量為單位、或者以記憶體控制器110根據主機裝置之指令所處理的資料量為單位。同樣地,根據本發明之一實施例,執行垃圾收集程序的期間(參數C)可以時間為單位、或者以記憶體控制器110完成搬移的資料量為單位。舉例而言,記憶體控制器110可設定時間間隔(參數B)為10秒、執行完10筆主機裝置之讀/寫指令、或者處理完100M位元組之資料。舉另一例而言,記憶體控制器110可設定執行期間(參數C)為100毫秒、或者搬移完100M位元組之資料。
第3圖與第4圖係分別顯示根據本發明之一實施例所述之開放編輯的記憶體區塊的不同編輯狀態的示意圖,用以說明本發明動態調整執行垃圾收集之相關參數的概念。於此實施例中,記憶體控制器110以目前開放編輯的記憶體區塊之空白資料頁之一數量(或比例)作為記憶體區塊之編輯狀態的參考,其中
目前開放編輯的記憶體區塊包括用以執行垃圾收集之目標記憶體區塊Dest_Block、用以儲存L2P映射表格的記憶體區塊L2P_Block、用以儲存P2L映射表格的記憶體區塊P2L_Block、用以儲存多個系統表格的系統表格記憶體區塊System_Block、以及作為緩存器的既定記憶體區塊Data_Buffer。
記憶體控制器110可計算目前開放編輯的所有記憶體區塊中之空白資料頁之數量或比例的平均值作為編輯狀態的代表,或者可取目前開放編輯的所有記憶體區塊中之空白資料頁之數量或比例的最大值或最小值作為編輯狀態的代表,以下一併以空白資料頁數值Open_Block_EP做為所述之空白資料頁之數量或比例的平均值、最大值或最小值的表示。如第3圖所示,當空白資料頁數值Open_Block_EP大,代表目前尚可被編輯的記憶體空間多,記憶體控制器110仍不需要頻繁地執行垃圾收集。如第4圖所示,當空白資料頁數值Open_Block_EP小,代表目前尚可被編輯的記憶體空間少,記憶體控制器110需要較頻繁地執行垃圾收集。因此,當記憶體控制器110發現空白資料頁數值Open_Block_EP較先前增加,記憶體控制器110可藉由動態調整對應地增加時間間隔(參數B),以及減少執行期間(參數C)。另一方面,當記憶體控制器110發現空白資料頁數值Open_Block_EP較先前減少,記憶體控制器110可藉由動態調整對應地減少時間間隔(參數B),以及增加執行期間(參數C)。
除此之外,根據本發明之另一實施例,記憶體控制器110亦可根據空閒之記憶體區塊之一數量(參數A)動態調整時間間隔(參數B)與執行期間(參數C)。舉例而言,每當記憶體控制器110需重新決定時間間隔(參數B)與執行期間(參數C)時(例如,於第2圖所示之步驟S202與S210),可更進一步參考空閒之記憶體
區塊之一數量(參數A),並根據空閒之記憶體區塊之一數量(參數A)決定時間間隔(參數B)與執行期間(參數C)。
舉例而言,當記憶體控制器110發現空閒之記憶體區塊之數量較先前增加,記憶體控制器110可藉由動態調整對應地增加時間間隔(參數B),以及減少執行期間(參數C)。另一方面,當記憶體控制器110發現空閒之記憶體區塊之數量較先前減少,記憶體控制器110可藉由動態調整對應地減少時間間隔(參數B),以及增加執行期間(參數C)。
除此之外,根據本發明之又另一實施例,記憶體控制器110可同時根據空閒之記憶體區塊之一數量(參數A)以及目前開放編輯的記憶體區塊之最新的編輯狀態動態調整時間間隔(參數B)與執行期間(參數C)。
除此之外,於本發明之實施例中,記憶體控制器110可預先設定多組時間間隔(參數B)與執行期間(參數C)的數值,各組數值對應於一個特定的空閒之記憶體區塊之數量、一個特定範圍的空閒之記憶體區塊之數量、一個特定的編輯狀態、一個特定範圍的編輯狀態(當編輯狀態可以數值表示時)、或以上之一或多者的組合。於調整時間間隔(參數B)與執行期間(參數C)的數值時,記憶體控制器110可直接根據目前空閒之記憶體區塊之數量以及/或目前開放編輯的記憶體區塊之最新的編輯狀態選擇一組對應的參數。
除此之外,於本發明之另一實施例中,記憶體控制器110亦可預先設一組時間間隔(參數B)與執行期間(參數C)的數值。例如,記憶體控制器110可預先設定一組對應於系統極需執行垃圾收集的最差狀態的參數值,或者一組對應於系統幾乎不須執行垃圾收集的最佳狀態的參數值,並且根據目前空閒之記
憶體區塊之數量以及/或目前開放編輯的記憶體區塊之最新的編輯狀態做計算而得出目前應設定的時間間隔(參數B)與執行期間(參數C)的數值。舉例而言,記憶體控制器110可預先設定最差狀態的參數B為32K位元組,參數C為150位元組。於此狀態下,每當記憶體控制器110寫完32K位元組的資料時,就會暫停寫入操作,先執行垃圾收集程序,完成150位元組的資料搬移後,再繼續執行寫入操作。換言之,若此時主機裝置130要求寫入1M位元組之資料至記憶體裝置120,則記憶體控制器110會每寫入32K位元組的資料時,就中斷寫入操作,執行一部分的垃圾收集程序。
於此範例中,若記憶體控制器110以目前開放編輯的記憶體區塊之有效資料頁佔所有資料頁之一比例作為記憶體區塊之編輯狀態的參考,並且計算出目前開放編輯的所有記憶體區塊的有效資料頁的平均比例為13%,則可動態地將目前的時間間隔(參數B)調整為32K/13%=246K位元組,以及將目前的執行期間(參數C)調整為150*13%=20位元組(以四捨五入計算)。若目前開放編輯的所有記憶體區塊的有效資料頁的平均比例為80%,則可動態地將目前的時間間隔(參數B)調整為32K/80%=40K位元組,以及將目前的執行期間(參數C)調整為150*80%=120位元組。值得注意的是,於以上範例中的計算僅為實施本發明概念之其中一種方法,而非用於限定本發明。
舉另一範例而言,於本發明之另一實施例中,記憶體控制器110可預先設定多組時間間隔(參數B)與執行期間(參數C)的數值,各組數值對應於一個特定的空閒之記憶體區塊之數量或一個特定範圍的空閒之記憶體區塊之數量。於調整時間間隔(參數B)與執行期間(參數C)的數值時,記憶體控制器110可
直接根據目前空閒之記憶體區塊之數量選擇一組對應的參數。接著,記憶體控制器110可進一步根據目前開放編輯的記憶體區塊之最新的編輯狀態對選擇出的該組參數作微調。舉例而言,記憶體控制器110可將選擇出的該組參數根據最新的編輯狀態如以上範例所示做些許運算,進而得出目前應設定的時間間隔(參數B)與執行期間(參數C)的數值。
舉又另一範例而言,於本發明之又另一實施例中,記憶體控制器110可預先設定多組時間間隔(參數B)與執行期間(參數C)的數值,各組數值對應於一個特定的編輯狀態或一個特定範圍的編輯狀態(當編輯狀態可以數值表示時)。於調整時間間隔(參數B)與執行期間(參數C)的數值時,記憶體控制器110可直接根據目前開放編輯的記憶體區塊之最新的編輯狀態選擇一組對應的參數。接著,記憶體控制器110可進一步根據目前空閒之記憶體區塊之數量對選擇出的該組參數作微調。舉例而言,記憶體控制器110可將選擇出的該組參數根據目前空閒之記憶體區塊之數量如以上範例所示做些許運算,進而得出目前應設定的時間間隔(參數B)與執行期間(參數C)的數值。
如上所述,由於目前開放編輯的記憶體區塊的最新的編輯狀態的變化以及/或目前空閒之記憶體區塊之數量的變化皆可有效地反映出空閒的記憶體區塊的消耗速度,記憶體控制器110可根據最新的編輯狀態及/或空閒之記憶體區塊之數量取得空閒的記憶體區塊的消耗速度的相關資訊,或者藉由將最新的編輯狀態及/或空閒之記憶體區塊之數量做適當的運算後而取得空閒的記憶體區塊的消耗速度的相關資訊。接著,記憶體控制器110可根據此資訊動態地調整參數B與參數C,便可使得空閒的記憶體區塊的產生速度大於空閒的記憶體區塊的
消耗速度,並且藉由每次的調整在執行垃圾收集程序的時間間隔以及執行垃圾收集程序的時間長度之間取得好的平衡,使垃圾收集的執行效率可達最佳化。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Claims (10)
- 一種資料儲存裝置,包括:一記憶體裝置,包括複數記憶體區塊;以及一記憶體控制器,耦接該記憶體裝置,用以存取該記憶體裝置,其中該記憶體控制器根據空閒之記憶體區塊之一數量判斷是否需執行一垃圾收集,並且於該記憶體控制器判斷需執行該垃圾收集時,該記憶體控制器根據複數開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間,開始一垃圾收集程序用以於該執行期間內執行該垃圾收集程序之至少一部分,以及於該執行期間已屆滿但該垃圾收集程序尚未完成時,暫停該垃圾收集程序之執行並且根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定後續用以繼續執行該垃圾收集程序之一時間間隔,其中每當該垃圾收集程序之執行被暫停時,該記憶體控制器動態地根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定下一次該垃圾收集程序之執行與此次該垃圾收集程序之執行之該時間間隔。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器根據該執行期間與該時間間隔將該垃圾收集程序之一或多個部份之執行安插於該記憶體裝置之一或多個讀/寫操作中。
- 如申請專利範圍第1項所述之資料儲存裝置,其中每當該記憶體控制器繼續執行該垃圾收集程序時,該記憶體控制器動態地根據該等開放編輯的記憶體區塊之該最新的編輯狀態,決定此次用以執 行該垃圾收集程序之該執行期間。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該等開放編輯的記憶體區塊之該最新的編輯狀態為該等開放編輯的記憶體區塊之剩餘空白資料頁之一數量。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該等開放編輯的記憶體區塊之該最新的編輯狀態為該等開放編輯的記憶體區塊之有效資料頁之一數量。
- 一種資料處理方法,適用於一資料儲存裝置,該資料儲存裝置包括一記憶體裝置以及一記憶體控制器,該記憶體裝置包括複數記憶體區塊,該記憶體控制器耦接該記憶體裝置,用以存取該記憶體裝置,該方法包括:由該記憶體控制器根據空閒之記憶體區塊之一數量判斷是否需執行一垃圾收集;於該記憶體控制器判斷需執行該垃圾收集時,由該記憶體控制器根據複數開放編輯的記憶體區塊之一最新的編輯狀態決定一執行期間;由該記憶體控制器開始一垃圾收集程序用以於該執行期間內執行該垃圾收集程序之至少一部分;於該執行期間已屆滿但該垃圾收集程序尚未完成時,由該記憶體控制器暫停該垃圾收集程序之執行;以及根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定爾後用 以繼續執行該垃圾收集程序之一時間間隔,其中每當該垃圾收集程序之執行被暫停時,由該記憶體控制器動態地根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定下一次該垃圾收集程序之執行與此次該垃圾收集程序之執行之該時間間隔。
- 如申請專利範圍第6項所述之方法,其中根據該執行期間與該時間間隔,該垃圾收集程序之一或多個部份之執行被安插於該記憶體裝置之一或多個讀/寫操作中。
- 如申請專利範圍第6項所述之方法,更包括:由該記憶體控制器繼續執行該垃圾收集程序,其中每當繼續執行該垃圾收集程序時,由該記憶體控制器動態地根據該等開放編輯的記憶體區塊之該最新的編輯狀態決定此次用以執行該垃圾收集程序之該執行期間。
- 如申請專利範圍第6項所述之方法,其中該等開放編輯的記憶體區塊之該最新的編輯狀態為該等開放編輯的記憶體區塊之剩餘空白資料頁之一數量。
- 如申請專利範圍第6項所述之方法,其中該等開放編輯的記憶體區塊之該最新的編輯狀態為該等開放編輯的記憶體區塊之有效資料頁之一數量。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108121252A TWI790383B (zh) | 2019-06-19 | 2019-06-19 | 資料儲存裝置與資料處理方法 |
CN202010205650.5A CN112114742B (zh) | 2019-06-19 | 2020-03-23 | 数据储存装置与数据处理方法 |
US16/831,026 US11176035B2 (en) | 2019-06-19 | 2020-03-26 | Data storage devices and data processing methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108121252A TWI790383B (zh) | 2019-06-19 | 2019-06-19 | 資料儲存裝置與資料處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101230A TW202101230A (zh) | 2021-01-01 |
TWI790383B true TWI790383B (zh) | 2023-01-21 |
Family
ID=73798770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108121252A TWI790383B (zh) | 2019-06-19 | 2019-06-19 | 資料儲存裝置與資料處理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11176035B2 (zh) |
CN (1) | CN112114742B (zh) |
TW (1) | TWI790383B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210044564A (ko) * | 2019-10-15 | 2021-04-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 가비지 컬렉션 방법 |
US11210168B1 (en) * | 2020-06-25 | 2021-12-28 | Micron Technology, Inc. | Error handling optimization in memory sub-system mapping |
US11675536B2 (en) * | 2020-10-13 | 2023-06-13 | EMC IP Holding Company LLC | Intelligent scheduling for garbage collection |
CN116610596B (zh) * | 2023-07-19 | 2023-10-03 | 合肥康芯威存储技术有限公司 | 一种存储器件及其数据处理方法 |
CN116610597B (zh) * | 2023-07-20 | 2023-10-17 | 合肥康芯威存储技术有限公司 | 一种存储器件及其垃圾回收的控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200821829A (en) * | 2006-09-28 | 2008-05-16 | Sandisk Corp | Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
TW201913378A (zh) * | 2017-08-30 | 2019-04-01 | 群聯電子股份有限公司 | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485613A (en) * | 1991-08-27 | 1996-01-16 | At&T Corp. | Method for automatic memory reclamation for object-oriented systems with real-time constraints |
US7464216B2 (en) * | 2006-09-29 | 2008-12-09 | Sandisk Corporation | Method for phased garbage collection with state indicators |
US20170123700A1 (en) * | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Io redirection methods with cost estimation |
US9971681B2 (en) * | 2016-06-01 | 2018-05-15 | Nanjing University | Lazy real time garbage collection method |
TWI658361B (zh) * | 2017-09-05 | 2019-05-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
KR102512727B1 (ko) * | 2017-12-22 | 2023-03-22 | 삼성전자주식회사 | 가비지 컬렉션을 수행하는 스토리지 장치, 및 스토리지 장치의 가비지 컬렉션 방법 |
JP7321851B2 (ja) * | 2019-09-09 | 2023-08-07 | キオクシア株式会社 | メモリシステムおよびガベッジコレクション制御方法 |
-
2019
- 2019-06-19 TW TW108121252A patent/TWI790383B/zh active
-
2020
- 2020-03-23 CN CN202010205650.5A patent/CN112114742B/zh active Active
- 2020-03-26 US US16/831,026 patent/US11176035B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200821829A (en) * | 2006-09-28 | 2008-05-16 | Sandisk Corp | Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
TW201913378A (zh) * | 2017-08-30 | 2019-04-01 | 群聯電子股份有限公司 | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
US20200401516A1 (en) | 2020-12-24 |
TW202101230A (zh) | 2021-01-01 |
US11176035B2 (en) | 2021-11-16 |
CN112114742A (zh) | 2020-12-22 |
CN112114742B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI790383B (zh) | 資料儲存裝置與資料處理方法 | |
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI658462B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI738442B (zh) | 資料儲存裝置與資料處理方法 | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
TWI726314B (zh) | 資料儲存裝置與資料處理方法 | |
TWI446349B (zh) | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 | |
TWI659304B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TW202001565A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
CN101656104A (zh) | 快闪存储器储存系统及其数据写入方法 | |
TWI749279B (zh) | 資料儲存裝置與資料處理方法 | |
TWI437569B (zh) | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 | |
TW202015057A (zh) | 快閃記憶體控制器、快閃記憶體控制器的控制方法及相關的電子裝置 | |
TWI657339B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 | |
TWI697778B (zh) | 資料儲存裝置與資料處理方法 | |
TWI670598B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI760262B (zh) | 資料儲存裝置與資料處理方法 | |
TW202013183A (zh) | 高效能垃圾收集方法以及資料儲存裝置及其控制器 | |
CN118331509B (zh) | 数据写入控制方法与存储装置 | |
TWI824843B (zh) | 記憶裝置的控制方法與相關的快閃記憶體控制器與記憶裝置 | |
TWI653630B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI434284B (zh) | 主動式快閃管理之方法以及相關之記憶裝置及其控制器 | |
TWI695264B (zh) | 資料儲存裝置與資料處理方法 | |
CN116126239A (zh) | 一种提高zns固态硬盘nor flash写入性能的方法 |