TWI814625B - 資料儲存裝置與寫入緩存器管理方法 - Google Patents
資料儲存裝置與寫入緩存器管理方法 Download PDFInfo
- Publication number
- TWI814625B TWI814625B TW111140793A TW111140793A TWI814625B TW I814625 B TWI814625 B TW I814625B TW 111140793 A TW111140793 A TW 111140793A TW 111140793 A TW111140793 A TW 111140793A TW I814625 B TWI814625 B TW I814625B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- write
- memory blocks
- host device
- count value
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 74
- 238000013500 data storage Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims description 19
- 230000004044 response Effects 0.000 claims abstract description 43
- 238000007726 management method Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000011010 flushing procedure Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0656—Data buffering arrangements
-
- 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
- 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/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
- 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/0893—Caches characterised by their organisation or structure
-
- 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
-
- 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/0658—Controller construction arrangements
-
- 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
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
一種資料儲存裝置,包括一記憶體裝置與一記憶體控制器。記憶體裝置包含複數被配置作為緩存器用以自主機裝置接收資料的既定記憶體區塊。記憶體控制器響應於由主機裝置所發出之一寫入指令執行寫入操作,於寫入操作中,記憶體控制器維護已被寫入資料的既定記憶體區塊之第一數量計數值、判斷響應於寫入操作而被釋放之記憶體區塊之一數量,並且根據數量維護第二數量計數值。於寫入操作完成後,記憶體控制器更執行一垃圾回收操作,並且於判斷主機裝置要求對既定記憶體區塊執行一沖出操作時,根據第二數量計數值更新第一數量計數值。
Description
本發明係關於一種寫入緩存器管理方法,以正確地管理並維護寫入緩存器的相關參數。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合安全數位(Secure Digital,縮寫為SD)/ 多媒體卡(Multi Media Card,縮寫為MMC)規格、複合式快閃記憶體(Compact flash,縮寫為CF)規格、記憶條(Memory Stick,縮寫為MS)規格與極數位(Extreme Digital,縮寫為XD)規格的記憶卡、固態硬碟、嵌入式多媒體記憶卡(embedded Multi Media Card,縮寫為eMMC)以及通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)已經廣泛地被應用在多種用途上。
通常資料儲存裝置會配置寫入緩存器(write buffer)自主機接收資料。產品開發者會對資料儲存裝置執行寫入緩存器的各種相關測試,以確認資料儲存裝置的寫入操作是否正常,並判斷資料儲存裝置是否可正確地記錄寫入緩存器相關的各項參數。若所設計的參數維護方式不夠完善,可能造成參數於部分測試情境中可正確地被記錄,但於其他測試情境中無法正確地被記錄的結果。為解決此問題,需要一種於各種測試情境中皆可正確地維護寫入緩存器的相關參數的寫入緩存器管理方法。
本發明之一目的在於提供一種可正確地維護寫入緩存器的相關參數的寫入緩存器管理方法。
根據本發明之一實施例,一種資料儲存裝置,包括一記憶體裝置與一記憶體控制器。記憶體裝置包含複數記憶體區塊,記憶體區塊包括複數被配置作為緩存器用以自一主機裝置接收資料的既定記憶體區塊。記憶體控制器耦接記憶體裝置,用以存取記憶體裝置,記憶體控制器響應於由主機裝置所發出之一寫入指令執行一寫入操作,於寫入操作中,記憶體控制器維護既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值、判斷既定記憶體區塊中響應於寫入操作而被釋放之記憶體區塊之一數量,並且根據響應於寫入操作而被釋放之記憶體區塊之數量維護一第二數量計數值。於寫入操作完成後,記憶體控制器更執行一垃圾回收操作,並且判斷主機裝置是否要求對既定記憶體區塊執行一沖出(flush)操作,並且於判斷主機裝置要求對既定記憶體區塊執行一沖出操作時,記憶體控制器根據第二數量計數值更新第一數量計數值。
根據本發明之一實施例,一種寫入緩存器管理方法,適用於一資料儲存裝置,資料儲存裝置包括一記憶體裝置與一記憶體控制器,記憶體裝置包含複數記憶體區塊,記憶體區塊包括複數被配置作為緩存器用以自一主機裝置接收資料的既定記憶體區塊,該方法包括:響應於由主機裝置所發出之一寫入指令執行一寫入操作,其中響應於由主機裝置所發出之寫入指令執行寫入操作之步驟還包括:於寫入操作中維護既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值;判斷既定記憶體區塊中響應於寫入操作而被釋放之記憶體區塊之一數量;以及根據響應於寫入操作而被釋放之記憶體區塊之數量維護一第二數量計數值;該方法還包括:執行一垃圾回收操作;判斷主機裝置是否要求對既定記憶體區塊執行一沖出(flush)操作;以及於判斷主機裝置要求對既定記憶體區塊執行一沖出操作時,根據第二數量計數值更新第一數量計數值。
在下文中,描述了許多具體細節以提供對本發明實施例的透徹理解。然而,本領域技術人員仍將理解如何在缺少一個或多個具體細節或依賴於其他方法、元件或材料的情況下實施本發明。在其他情況下,未詳細示出或描述公知的結構、材料或操作,以避免模糊本發明的主要概念。
在整個說明書中對「一實施例」或「一範例」的引用意味著結合該實施例或範例所描述的特定特徵、結構或特性係包括於本發明之多個實施例的至少一個實施例中。因此,貫穿本說明書在各個地方出現的短語「於本發明之一實施例中」、「根據本發明之一實施例」、「於一範例中」或「根據本發明之一範例」不一定都指到相同的實施例或範例。此外,特定特徵、結構或特性可以在一個或多個實施例或範例中以任何合適的組合和/或子組合進行結合。
此外,為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。資料儲存裝置100可包括一記憶體裝置120與一記憶體控制器110。記憶體控制器110用以存取(Access)記憶體裝置120及控制記憶體裝置120之運作。記憶體裝置120可為一非揮發性(non-volatile,縮寫為NV)記憶體裝置(例如,一快閃記憶體(flash memory)),並且可包括一或多個記憶元件(例如,一或多個快閃記憶體晶粒、一或多個快閃記憶體晶片、或其他類似元件)。
資料儲存裝置100可耦接至一主機裝置130。主機裝置130可至少包括一處理器、一電源電路、以及至少一隨機存取記憶體(Random Access Memory,縮寫為RAM),例如至少一動態隨機存取記憶體(Dynamic RAM,縮寫為DRAM)、至少一靜態隨機存取記憶體(Static RAM,縮寫為SRAM)等(以上未示於第1圖)。處理器與隨機存取記憶體可透過一匯流排彼此相互連接,並且可耦接至電源電路以取得電源。處理器可控制主機裝置130之運作。電源電路可將電源供應至處理器、隨機存取記憶體以及資料儲存裝置100,例如輸出一或多個驅動電壓至資料儲存裝置100。資料儲存裝置100可自主機裝置130取得所述驅動電壓作為資料儲存裝置100的電源,並且為主機裝置130提供儲存空間。
根據本發明之一實施例,記憶體控制器110可包括一微處理器112、一唯讀記憶體(Read Only Memory,縮寫為ROM)112M、一記憶體介面114、一緩存記憶體116、與一主機介面118。唯讀記憶體112M係用以儲存程式碼112C。而微處理器112則用來執行程式碼112C以控制對記憶體裝置120之存取操作。程式碼112C可包括一或多個程式模組,例如啟動載入(boot loader)程式碼。當資料儲存裝置100自主機裝置130取得電源時,微處理器112可藉由執行程式碼112C執行資料儲存裝置100之一初始化程序。於初始化程序中,微處理器112可自記憶體裝置120載入一組系統內編程(In-System Programming,縮寫為ISP)程式碼(未示於第1圖)。微處理器112可執行該組系統內編程程式碼,使得資料儲存裝置100可具備各種功能。根據本發明之一實施例,該組系統內編程程式碼可包括,但不限於:一或多個與記憶體存取(例如,讀取、寫入與抹除)相關的程式模組,例如一讀取操作模組、一查找表格模組、一損耗均衡(wear leveling)模組、一讀取刷新(read refresh) 模組、一讀取回收(read reclaim)模組、一垃圾回收模組、一非預期斷電恢復(Sudden Power Off Recovery,縮寫為SPOR)模組、以及一不可更正錯誤更正碼(Uncorrectable Error Correction Code,縮寫為UECC)模組,其分別被提供用以執行對應之讀取、查找表格、損耗均衡、讀取刷新、讀取回收、垃圾回收、非預期斷電恢復以及對偵測到的UECC錯誤進行錯誤處理等操作。
記憶體介面114包含了一編碼器132以及一解碼器134,其中編碼器132用來對需被寫入記憶體裝置120的資料進行編碼,例如執行錯誤更正碼(ECC)編碼,而解碼器134用來對從記憶體裝置120所讀出的資料進行解碼。
於典型狀況下,記憶體裝置120包含了多個記憶元件,例如多個快閃記憶體晶粒或多個快閃記憶體晶片,各記憶元件可包含複數個記憶體區塊(Block)。記憶體控制器110對記憶體裝置120進行抹除資料運作係以區塊為單位來進行。另外,一記憶體區塊可記錄(包含)特定數量的資料頁(Page),例如,實體資料頁,其中記憶體控制器110對記憶體裝置120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用記憶體介面114來控制記憶體裝置120之存取運作(尤其是對至少一記憶體區塊或至少一資料頁之存取運作)、利用緩存記憶體116進行所需之緩存處理、以及利用主機介面118來與主機裝置130溝通。
在一實施例中,記憶體控制器110透過主機介面118並使用一標準通訊協定與主機裝置130溝通。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus ,縮寫為USB)標準、SD介面標準、超高速一代 (Ultra High Speed-I,縮寫為UHS-I) 介面標準、超高速二代 (Ultra High Speed-II,縮寫為UHS-II) 介面標準、CF介面標準、MMC介面標準、eMMC介面標準、UFS介面標準、高技術組態(Advanced Technology Attachment,縮寫為ATA)標準、序列高技術組態(Serial ATA,縮寫為SATA)標準、快捷外設互聯標準(Peripheral Component Interconnect Express,縮寫為PCI-E)標準、並列先進附件(Parallel Advanced Technology Attachment,縮寫為PATA)標準等。
在一實施例中,緩存記憶體116係以隨機存取記憶體來實施。例如,緩存記憶體116可以是靜態隨機存取記憶體,但本發明亦不限於此。於其他實施例中,緩存記憶體116可以是動態隨機存取記憶體。
在一實施例中,資料儲存裝置100可以是可攜式記憶體裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主機裝置130為一可與資料儲存裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,資料儲存裝置100可以是固態硬碟或符合UFS或eMMC規格之嵌入式儲存裝置,並且可被設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主機裝置130可以是該電子裝置的一處理器。
主機裝置130可對資料儲存裝置100發出指令,例如,讀取指令或寫入指令,用以存取記憶體裝置120所儲存之資料,或者主機裝置130可對資料儲存裝置100發出指令以進一步控制、管理資料儲存裝置100。
一般而言,記憶體控制器110可配置一或多個既定記憶體區塊作為快取記憶體,或稱緩存器(buffer),亦可稱為現用區塊(current block)或活用區塊(active block),用以自主機裝置130接收資料。被配置的既定記憶體區塊可以是單層單元(Single-level cell,縮寫為SLC)記憶體區塊、多層單元(Multiple-level cell,縮寫為MLC)記憶體區塊、三層單元(Triple-level cell,縮寫為TLC)記憶體區塊、或其他更多層單元的記憶體區塊。待緩存器的使用率達到一定程度時,記憶體控制器110可再將緩存器儲存的資料寫入另一記憶體區塊(例如,將多個SLC記憶體區塊儲存的資料合併並儲存於一個TLC 記憶體區塊),並使其成為記憶體裝置120之使用者區域或資料區域的資料區塊,或直接將作為緩存器使用之記憶體區塊更新成為使用者區域或資料區域的資料區塊,如此一來,緩存器的記憶體空間可被釋放並可再度被使用。
此外,主機裝置130可決定是否於資料儲存裝置100端啟用寫入加速器(WriteBooster)功能。當寫入加速器功能被啟用後,記憶體控制器110會配置SLC 記憶體區塊作為緩存器用以自主機裝置130接收資料。由於將資料寫入SLC 記憶體區塊的速度會比將資料寫入其他類型之記憶體區塊(例如,MLC、TLC或其他)來的快,藉此可使資料的寫入運作於高速模式。
主機裝置130可藉由發出對應的指令對資料儲存裝置100進行寫入加速器的控制。例如,主機裝置130可藉由發出對應的指令設立對應的旗標或者發出啟用寫入加速器的指令使資料儲存裝置100端啟用寫入加速器功能。
當寫入加速器功能被啟用時,主機裝置130可進一步發出詢問指令至資料儲存裝置100,用以詢問目前由記憶體控制器110所配置的緩存器大小(size)。舉例而言,主機裝置130可以讀取屬性的方式對資料儲存裝置100詢問寫入加速器的狀態,其中的屬性可包含當前的寫入加速器緩存器大小(Current_Write_Booster_Buffer_Size)、剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)等。
如上所述,產品開發者會對資料儲存裝置100執行寫入緩存器的各種相關測試,以確認資料儲存裝置利用寫入加速器緩存器的寫入操作是否正常,並判斷資料儲存裝置是否可正確地記錄與寫入加速器緩存器相關的各項參數。為能正確記錄參數以避免發生參數記錄錯誤的情況,需要一種於各種測試情境中皆可正確地維護寫入緩存器的相關參數的寫入緩存器管理方法。
第2圖係顯示根據本發明之第一實施例所述之寫入緩存器管理方法簡要流程圖,包括由記憶體控制器110所執行的以下步驟:
步驟S202: 響應於由主機裝置130所發出之一寫入指令執行一寫入操作。於執行寫入操作的過程中,記憶體控制器110可同步地維護被配置作為緩存器用以自主機裝置130接收資料的既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值、判斷既定記憶體區塊中響應於本次寫入操作而被釋放之記憶體區塊之一數量、並且根據該數量維護一第二數量計數值。於本發明之實施例中,所述第一數量計數值係用以紀錄(計數)當前被配置的既定記憶體區塊中已被寫入資料的既定記憶體區塊之數量,而所述第二數量計數值係用以紀錄(計數)在當前已被寫入資料的記憶體區塊中,會被釋放之記憶體區塊之數量。
步驟S204: 於寫入操作完成後,判斷主機裝置130是否要求對被配置作為緩存器使用的既定記憶體區塊執行一沖出(flush)操作。於本發明之實施例中,沖出操作可以是前述將多個做為緩存器使用的SLC記憶體區塊所儲存的資料合併寫入另一個記憶體區塊的操作。於本發明之實施例中,若主機裝置130要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,記憶體控制器110將於適當時機執行前述資料合併的操作,而於步驟S204中,若判斷主機裝置130要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,將接續執行步驟S206。
步驟S206: 根據第二數量計數值更新第一數量計數值,使第一數量計數值反映出有記憶體區塊被釋放的結果。
另一方面,若判斷主機裝置130未要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,則不根據第二數量計數值更新第一數量計數值。
根據本發明之一實施例,記憶體控制器110可藉由自第一數量計數值減去第二數量計數值以更新第一數量計數值。此外,記憶體控制器110可更響應於由主機裝置130所發出之一詢問指令回傳一可用寫入緩存器大小給主機裝置130,其中的可用寫入緩存器大小可以是上述的剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size),並且記憶體控制器110可根據第一數量計數值計算出可用寫入緩存器大小。
由於寫入緩存器的相關參數會經常性地隨著寫入緩存器的使用狀態變化,而本發明所提出之寫入緩存器管理方法可正確地維護寫入緩存器的參數,例如,所述第一數量計數值,使第一數量計數值於適當的時機反映出有記憶體區塊被釋放的結果,因此,由記憶體控制器110根據第一數量計數值所計算出的可用寫入緩存器大小也能真實地反映出當前可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
如上所述,主機裝置130可藉由發出對應的指令對資料儲存裝置100進行寫入加速器的控制。舉例而言,根據本發明之一實施例,主機裝置130可藉由發出對應的指令設立一既定旗標的狀態,例如,藉由將既定旗標設定為不同數值,以分別表示啟用或不啟用將緩存器內的資料沖入使用者區域或資料區域的沖出操作(即,前述將多個做為緩存器使用的SLC記憶體區塊所儲存的資料合併寫入另一記憶體區塊的操作)。因此,根據本發明之一實施例,記憶體控制器110可根據既定旗標之設定值判斷主機裝置130是否要求對作為緩存器使用的既定記憶體區塊執行沖出操作。
第3圖係顯示根據本發明之第一實施例所述之寫入緩存器管理方法之詳細流程圖,於第3圖之範例中,寫入加速器功能已被啟用,因此配置作為緩存器使用的既定記憶體區塊為SLC記憶體區塊,並且本發明之第一實施例所述之寫入緩存器管理方法包括響應於接收到主機裝置130發出的寫入指令後由記憶體控制器110所開始執行的以下步驟:
步驟S302: 響應於寫入指令進入寫入流程以執行一或多個寫入工作。
步驟S304: 將資料寫入配置作為緩存器使用的SLC記憶體區塊。
步驟S306: 判斷當前的SLC記憶體區塊是否被寫滿。若是,執行步驟S308。若否,執行步驟S310。
步驟S308: 取新的SLC記憶體區塊(例如,取一空閒的記憶體區塊並執行對應的抹除操作用以將此記憶體區塊配置為SLC記憶體區塊),並且更新數量計數值(例如,前述第一數量計數值) SLCCnt,例如,將數量計數值SLCCnt加1。若以算式表示,即為(SLCCnt=SLCCnt+1)。於本發明之實施例中,所述的數量計數值SLCCnt係用以紀錄(計數)已被寫入資料的SLC記憶體區塊之數量。
若於SLC記憶體區塊已被寫滿時本次寫入工作所欲寫入的資料尚有部分未被寫入,則步驟S308可更包括將剩餘之資料寫入新的SLC記憶體區塊的操作。
步驟S310: 判斷已被寫入資料的SLC記憶體區塊中是否有任何記憶體區塊會被釋放。若是,執行步驟S312。若否,執行步驟S314。
根據本發明之一實施例,記憶體控制器110可根據已被寫入資料的SLC記憶體區塊中的有效資料量是否為零來判斷此記憶體區塊是否會被釋放。更具體的說,記憶體控制器110可為各記憶體區塊記錄其有效資料頁數量(Valid Page Count)。當一個記憶體區塊的有效資料頁數量為零時,代表其中所儲存的資料已皆為無效資料,因此,記憶體控制器110可釋放此記憶體區塊。
一般而言,於實體記憶體區塊所儲存的資料會有一對應的邏輯位址,例如,邏輯區塊位址(Logical Block Address,縮寫LBA),其中的邏輯區塊位址可以是主機系統130端用來辨識邏輯儲存空間的位址。當記憶體控制器110接收到對應於一邏輯位址的寫入資料時,會判斷記憶體裝置120內是否已存有該邏輯位址所對應的資料。若有,代表主機系統130更新了此邏輯位址的資料,因此,目前已被寫入記憶體裝置120內的該邏輯位址所對應的資料會被標記於無效資料,且儲存該資料的記憶體區塊所對應的有效資料頁數量會被對應地調整,例如,被減少。此外,當一記憶體區塊所儲存的資料因為使用者的刪除,或其他的操作而成為無效資料時,該記憶體區塊所對應的有效資料頁數量也會被對應地調整。因此,記憶體控制器110可藉由判斷一記憶體區塊的有效資料頁數量是否為零來判斷是否可釋放該記憶體區塊。
於本發明之實施例中,記憶體控制器110可於步驟S310中對目前已被寫入資料的SLC記憶體區塊逐一檢視其有效資料頁數量,以判斷是否有任何記憶體區塊會響應於目前的寫入操作被釋放,並記錄下響應於目前的寫入操作會被釋放的記憶體區塊數量。
步驟S312: 假設目前有n個記憶體區塊於步驟S310中判斷會被釋放,則記憶體控制器110根據該數量維護另一數量計數值 (例如,前述第二數量計數值) MinuSLCCnt。若以算式表示,即為(MinuSLCCnt=MinuSLCCnt+n)。
步驟S314: 記憶體控制器110可判斷是否已完成所有的寫入工作。若是,執行步驟S316。若否,返回步驟S304執行將資料寫入SLC記憶體區塊的次一寫入工作。
步驟S316: 判斷是否需對寫入緩存器執行沖出(flush)操作,若是,執行步驟S318,若否,則可結束此流程。如上所述,記憶體控制器110可根據既定旗標之設定值判斷主機裝置130是否要求對寫入緩存器執行沖出操作。
步驟S318: 自SLCCnt減去MinuSLCCnt,若以算式表示,即為(SLCCnt=SLCCnt-MinuSLCCn),並且將數量計數值MinuSLCCnt重置為0。
另一方面,若判斷無需對寫入緩存器執行沖出操作,則不改變數量計數值SLCCnt與MinuSLCCnt。
如上所述,記憶體控制器110可根據既定旗標之設定值判斷是否需對寫入緩存器執行沖出操作。此外, 如上所述,本發明所提出之寫入緩存器管理可更包括記憶體控制器110響應於由主機裝置130所發出之一詢問指令回傳一可用寫入緩存器大小給主機裝置130,其中的可用寫入緩存器大小可以是上述的剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size),並且記憶體控制器110可根據數量計數值SLCCnt計算出可用寫入緩存器大小。例如,自當前的寫入加速器緩存器大小(Current_Write_Booster_Buffer_Size)減去數量計數值SLCCnt可得剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
藉由實施本發明提出寫入緩存器管理方法,可正確記錄寫入緩存器的相關參數,例如,數量計數值SLCCnt,以避免發生參數記錄錯誤的情況,並可確保主機裝置130也可接收到正確的參數值,例如,剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
根據本發明之第二實施例,由於寫入緩存器的沖出操作可被整合於記憶體裝置的垃圾回收(Garbage Collection,縮寫為GC)操作中,因此記憶體控制器110也可將寫入緩存器相關的數量計數值的更新操作整合於垃圾回收(Garbage Collection,縮寫為GC)的流程中。
第4圖係顯示根據本發明之第二實施例所述之寫入緩存器管理方法簡要流程圖,包括由記憶體控制器110所執行的以下步驟:
步驟S402: 響應於由主機裝置130所發出之一寫入指令執行一寫入操作。於執行寫入操作的過程中,記憶體控制器110可同步地維護被配置作為緩存器用以自主機裝置130接收資料的既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值、判斷既定記憶體區塊中響應於本次寫入操作而被釋放之記憶體區塊之一數量、並且根據響應於本次寫入操作而被釋放之記憶體區塊之數量維護一第二數量計數值。於本發明之實施例中,所述第一數量計數值係用以紀錄(計數)當前被配置的既定記憶體區塊中已被寫入資料的既定記憶體區塊之數量,而所述第二數量計數值係用以紀錄(計數)在當前已被寫入資料的記憶體區塊中,會被釋放之記憶體區塊之數量。
步驟S404: 於寫入操作完成後,執行一垃圾回收操作,用以收集零散分布於不同記憶體區塊中的有效資料,並將有效資料集中寫入新的記憶體區塊中。根據本發明之一實施例,於垃圾回收操作中,記憶體控制器110也可判斷響應於垃圾回收操作而被釋放之記憶體區塊之一數量,並且根據響應於垃圾回收操作而被釋放之記憶體區塊之數量維護第二數量計數值。
步驟S406: 於垃圾回收操作完成後,判斷主機裝置130是否要求對被配置作為緩存器使用的既定記憶體區塊執行一沖出(flush)操作。於本發明之實施例中,沖出操作可以是前述將多個做為緩存器使用的SLC記憶體區塊所儲存的資料合併寫入另一個記憶體區塊的操作。於本發明之實施例中,若判斷主機裝置130要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,將接續執行步驟S408。若判斷主機裝置130未要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,則可結束此流程。
步驟S408: 對既定記憶體區塊執行沖出操作,並且根據第二數量計數值更新第一數量計數值,使第一數量計數值反映出有記憶體區塊被釋放的結果。需注意的是,由於記憶體裝置的垃圾回收操作也可直接包含寫入緩存器的沖出操作,即,記憶體控制器110可於收集有效資料的過程中,一併收集作為緩存器使用的既定記憶體區塊內的有效資料,因此,於本發明之一些實施例中,步驟S404中的垃圾回收操作亦可包含沖出操作的執行(當判斷主機裝置130要求對既定記憶體區塊執行沖出操作時),而於這些實施例中,步驟S408可僅包含根據第二數量計數值更新第一數量計數值的操作。
另一方面,若判斷主機裝置130未要求對被配置作為緩存器使用的既定記憶體區塊執行沖出操作,則不根據第二數量計數值更新第一數量計數值。
如上所述,記憶體控制器110可藉由自第一數量計數值減去第二數量計數值以更新第一數量計數值。此外,記憶體控制器110可更響應於由主機裝置130所發出之一詢問指令回傳一可用寫入緩存器大小給主機裝置130,其中的可用寫入緩存器大小可以是上述的剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size),並且記憶體控制器110可根據第一數量計數值計算出可用寫入緩存器大小。
由於寫入緩存器的相關參數會經常性地隨著寫入緩存器的使用狀態變化,而本發明所提出之寫入緩存器管理方法可正確地維護寫入緩存器的參數,例如,所述第一數量計數值,使第一數量計數值可即時反映出有記憶體區塊被釋放的結果,因此,由記憶體控制器110根據第一數量計數值所計算出的可用寫入緩存器大小也能真實地反映出當前可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
此外,如上所述,主機裝置130可藉由發出對應的指令對資料儲存裝置100進行寫入加速器的控制。舉例而言,根據本發明之一實施例,主機裝置130可藉由發出對應的指令設立一既定旗標的狀態,例如,藉由將既定旗標設定為不同數值,以分別表示啟用或不啟用將緩存器內的資料沖入使用者區域或資料區域的沖出操作(即,前述將多個做為緩存器使用的SLC記憶體區塊所儲存的資料合併寫入另一記憶體區塊的操作)。因此,根據本發明之一實施例,記憶體控制器110可根據既定旗標之設定值判斷主機裝置130是否要求對作為緩存器使用的既定記憶體區塊執行沖出操作。
第5圖係顯示根據本發明之第二實施例所述之寫入緩存器管理方法之詳細流程圖。於第5圖之範例中,寫入加速器功能已被啟用,因此配置作為緩存器使用的既定記憶體區塊為SLC記憶體區塊,並且本發明之第二實施例所述之寫入緩存器管理方法包括響應於接收到主機裝置130發出的寫入指令後由記憶體控制器110所開始執行的以下步驟:
步驟S502: 響應於寫入指令進入寫入流程以執行一或多個寫入工作。
步驟S504: 將資料寫入配置作為緩存器使用的SLC記憶體區塊。
步驟S506: 判斷當前的SLC記憶體區塊是否被寫滿。若是,執行步驟S508。若否,執行步驟S510。
步驟S508: 取新的SLC記憶體區塊(例如,取一空閒的記憶體區塊並執行對應的抹除操作用以將此記憶體區塊配置為SLC記憶體區塊),並且更新數量計數值(例如,前述第一數量計數值) SLCCnt,例如,將數量計數值SLCCnt加1。若以算式表示,即為(SLCCnt=SLCCnt+1)。於本發明之實施例中,所述的數量計數值SLCCnt係用以紀錄(計數)已被寫入資料的SLC記憶體區塊之數量。
若於SLC記憶體區塊已被寫滿時本次寫入工作所欲寫入的資料尚有部分未被寫入,則步驟S508可更包括將剩餘之資料寫入新的SLC記憶體區塊的操作。
步驟S510: 判斷已被寫入資料的SLC記憶體區塊中是否有任何記憶體區塊會被釋放。若是,執行步驟S512。若否,執行步驟S514。
類似地,記憶體控制器110可根據已被寫入資料的SLC記憶體區塊中的有效資料量是否為零來判斷此記憶體區塊是否會被釋放。例如,記憶體控制器110可藉由判斷一記憶體區塊的有效資料頁數量是否為零來判斷是否可釋放該記憶體區塊。於本發明之實施例中,記憶體控制器110可於步驟S510中對目前已被寫入資料的SLC記憶體區塊逐一檢視其有效資料頁數量,以判斷是否有任何記憶體區塊會響應於目前的寫入操作被釋放,並記錄下響應於目前的寫入操作會被釋放的記憶體區塊數量。
步驟S512: 假設目前有n個記憶體區塊於步驟S510中判斷會被釋放,則記憶體控制器110根據該數量維護另一數量計數值 (例如,前述第二數量計數值) MinuSLCCnt。若以算式表示,即為(MinuSLCCnt=MinuSLCCnt+n)。
步驟S514: 記憶體控制器110可判斷是否已完成所有的寫入工作。若是,執行步驟S516。若否,返回步驟S504執行將資料寫入SLC記憶體區塊的次一寫入工作。
步驟S516: 離開寫入流程。
根據本發明之一實施例,於離開寫入流程後,記憶體控制器110可於適當的時間,例如,於判斷資料儲存裝置100閒置時,執行步驟S518。例如,記憶體控制器110可觀察一既定時間,並判斷於既定時間內是否自主機裝置130接收到任何指令。若於既定時間內都未自主機裝置130接收到任何指令,可判斷資料儲存裝置100 為閒置,並開始執行步驟S518。
步驟S518: 進入垃圾回收流程。
步驟S520: 對記憶體區塊(例如,SLC記憶體區塊)執行垃圾回收操作。
步驟S522: 判斷是否一SLC記憶體區塊被釋放。如上所述,記憶體控制器110可於執行垃圾回收操作的過程中檢視當前的SLC記憶體區塊中的有效資料頁數量是否因垃圾回收而降至零,以判斷是否此記憶體區塊會響應於目前的垃圾回收操作被釋放。若是,執行步驟S524,若否,執行步驟S526。
步驟S524: 響應於記憶體區塊的釋放更新數量計數值MinuSLCCnt。若以算式表示,即為(MinuSLCCnt=MinuSLCCnt+1)。
步驟S526: 判斷垃圾回收流程是否結束。若是,執行步驟S528,若否,返回步驟S520繼續執行垃圾回收操作。
步驟S528: 判斷是否需對寫入緩存器執行沖出(flush)操作,若是,執行步驟S530,若否,則可結束此流程。如上所述,記憶體控制器110可根據既定旗標之設定值判斷主機裝置130是否要求對寫入緩存器執行沖出操作。
步驟S530: 自SLCCnt減去MinuSLCCnt,若以算式表示,即為(SLCCnt=SLCCnt-MinuSLCCn),並且將數量計數值MinuSLCCnt重置為0。
另一方面,若判斷無需對寫入緩存器執行沖出操作,則不改變數量計數值SLCCnt與MinuSLCCnt。
如上所述,記憶體控制器110可根據既定旗標之設定值判斷是否需對寫入緩存器執行沖出操作。此外,如上所述,本發明所提出之寫入緩存器管理可更包括記憶體控制器110響應於由主機裝置130所發出之一詢問指令回傳一可用寫入緩存器大小給主機裝置130,其中的可用寫入緩存器大小可以是上述的剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size),並且記憶體控制器110可根據數量計數值SLCCnt計算出可用寫入緩存器大小。例如,自當前的寫入加速器緩存器大小(Current_Write_Booster_Buffer_Size)減去數量計數值SLCCnt可得剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
藉由實施本發明提出寫入緩存器管理方法,可正確記錄寫入緩存器的相關參數,例如,數量計數值SLCCnt,以避免發生參數記錄錯誤的情況,並可確保主機裝置130也可接收到正確的參數值,例如,剩餘可用的寫入加速器緩存器大小(Available_Write_Booster_Buffer_Size)。
特別是,當主機裝置130重覆在相同邏輯位址上寫入資料時,因舊的資料會響應於資料的更新而被標記成無效資料,加速記憶體區塊的釋放,而藉由實施本發明提出寫入緩存器管理方法,若主機裝置130並未要求寫入緩存器執行沖出操作,則暫時不在數量計數值SLCCnt反映出有記憶體區塊被釋放的結果。反之,若主機裝置130要求寫入緩存器執行沖出操作,則如本發明第一實施例與第二實施例所述,於適當的時機反映出有記憶體區塊被釋放的結果,如此一來,由記憶體控制器110根據數量計數值SLCCnt所計算出的可用寫入緩存器大小也能真實地反映出當前可用的寫入加速器緩存器大小,以確保主機裝置130可接收到正確的參數值,避免發生於傳統技術中主機裝置130持續對資料儲存裝置100寫入相同邏輯位址的資料,但主機裝置130所接收到的當前可用寫入緩存器大小卻不會對應地因寫入操作而減少的問題。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩存記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。
第2圖係顯示根據本發明之第一實施例所述之寫入緩存器管理方法簡要流程圖。
第3圖係顯示根據本發明之第一實施例所述之寫入緩存器管理方法之詳細流程圖。
第4圖係顯示根據本發明之第二實施例所述之寫入緩存器管理方法簡要流程圖。
第5圖係顯示根據本發明之第二實施例所述之寫入緩存器管理方法之詳細流程圖。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩存記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Claims (14)
- 一種資料儲存裝置,包括: 一記憶體裝置,包含複數記憶體區塊,該等記憶體區塊包括複數被配置作為緩存器用以自一主機裝置接收資料的既定記憶體區塊;以及 一記憶體控制器,耦接該記憶體裝置,用以存取該記憶體裝置,該記憶體控制器響應於由該主機裝置所發出之一寫入指令執行一寫入操作,於該寫入操作中,該記憶體控制器維護該等既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值、判斷該等既定記憶體區塊中響應於該寫入操作而被釋放之記憶體區塊之一數量,並且根據響應於該寫入操作而被釋放之記憶體區塊之該數量維護一第二數量計數值,以及 於該寫入操作完成後,該記憶體控制器更執行一垃圾回收操作,並且判斷該主機裝置是否要求對該等既定記憶體區塊執行一沖出(flush)操作,其中於判斷該主機裝置要求對該等既定記憶體區塊執行一沖出操作時,該記憶體控制器根據該第二數量計數值更新該第一數量計數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中於該垃圾回收操作中,該記憶體控制器更判斷響應於該垃圾回收操作而被釋放之記憶體區塊之一數量,並且根據響應於該垃圾回收操作而被釋放之記憶體區塊之該數量維護該第二數量計數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中於判斷該主機裝置未要求對該等既定記憶體區塊執行一沖出操作時,該記憶體控制器不根據該第二數量計數值更新該第一數量計數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器藉由自該第一數量計數值減去該第二數量計數值以更新該第一數量計數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器更響應於由該主機裝置所發出之一詢問指令回傳一可用寫入緩存器大小給該主機裝置,其中該記憶體控制器係根據該第一數量計數值計算出該可用寫入緩存器大小。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器根據一既定旗標之設定值判斷該主機裝置是否要求對該等既定記憶體區塊執行一沖出操作。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器根據已被寫入資料的既定記憶體區塊中有效資料量為零之記憶體區塊之一數量判斷該等既定記憶體區塊中響應於該寫入操作而被釋放之記憶體區塊之該數量。
- 一種寫入緩存器管理方法,適用於一資料儲存裝置,該資料儲存裝置包括一記憶體裝置與一記憶體控制器,該記憶體裝置包含複數記憶體區塊,該等記憶體區塊包括複數被配置作為緩存器用以自一主機裝置接收資料的既定記憶體區塊,該方法包括: 響應於由該主機裝置所發出之一寫入指令執行一寫入操作,其中響應於由該主機裝置所發出之該寫入指令執行該寫入操作之步驟還包括: 於該寫入操作中維護該等既定記憶體區塊中已被寫入資料的既定記憶體區塊之一第一數量計數值; 判斷該等既定記憶體區塊中響應於該寫入操作而被釋放之記憶體區塊之一數量;以及 根據響應於該寫入操作而被釋放之記憶體區塊之該數量維護一第二數量計數值; 執行一垃圾回收操作; 判斷該主機裝置是否要求對該等既定記憶體區塊執行一沖出(flush)操作;以及 於判斷該主機裝置要求對該等既定記憶體區塊執行一沖出操作時,根據該第二數量計數值更新該第一數量計數值。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,其中執行該垃圾回收操作之步驟更包括: 判斷響應於該垃圾回收操作而被釋放之記憶體區塊之一數量;以及 根據響應於該垃圾回收操作而被釋放之記憶體區塊之該數量維護該第二數量計數值。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,更包括: 於判斷該主機裝置未要求對該等既定記憶體區塊執行一沖出操作時,不根據該第二數量計數值更新該第一數量計數值。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,其中根據該第二數量計數值更新該第一數量計數值之步驟更包括: 自該第一數量計數值減去該第二數量計數值。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,更包括: 根據該第一數量計數值計算出一可用寫入緩存器大小;以及 響應於由該主機裝置所發出之一詢問指令回傳該可用寫入緩存器大小給該主機裝置。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,其中該主機裝置是否要求對該等既定記憶體區塊執行一沖出操作係該根據一既定旗標之設定值被判斷。
- 如申請專利範圍第8項所述之寫入緩存器管理方法,其中該等既定記憶體區塊中響應於該寫入操作而被釋放之記憶體區塊之該數量係根據已被寫入資料的既定記憶體區塊中有效資料量為零之記憶體區塊之一數量被判斷。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111140793A TWI814625B (zh) | 2022-10-27 | 2022-10-27 | 資料儲存裝置與寫入緩存器管理方法 |
CN202211437472.4A CN117950573A (zh) | 2022-10-27 | 2022-11-11 | 数据储存装置与写入缓存器管理方法 |
US18/220,293 US20240143226A1 (en) | 2022-10-27 | 2023-07-11 | Data storage device and method for managing a write buffer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111140793A TWI814625B (zh) | 2022-10-27 | 2022-10-27 | 資料儲存裝置與寫入緩存器管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI814625B true TWI814625B (zh) | 2023-09-01 |
TW202418092A TW202418092A (zh) | 2024-05-01 |
Family
ID=88966076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111140793A TWI814625B (zh) | 2022-10-27 | 2022-10-27 | 資料儲存裝置與寫入緩存器管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240143226A1 (zh) |
CN (1) | CN117950573A (zh) |
TW (1) | TWI814625B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120124294A1 (en) * | 2007-12-06 | 2012-05-17 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
US8688899B2 (en) * | 2010-09-28 | 2014-04-01 | Fusion-Io, Inc. | Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US20220229555A1 (en) * | 2021-01-20 | 2022-07-21 | Western Digital Technologies, Inc. | Storage System and Method for Using Read and Write Buffers in a Memory |
US20220245064A1 (en) * | 2021-02-02 | 2022-08-04 | SK Hynix Inc. | Memory controller and storage device including the same |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239724B2 (en) * | 2009-04-08 | 2012-08-07 | Google Inc. | Error correction for a data storage device |
WO2012051600A2 (en) * | 2010-10-15 | 2012-04-19 | Kyquang Son | File system-aware solid-state storage management system |
US10102119B2 (en) * | 2015-10-30 | 2018-10-16 | Sandisk Technologies Llc | Garbage collection based on queued and/or selected write commands |
KR102685013B1 (ko) * | 2019-11-11 | 2024-07-15 | 삼성전자주식회사 | 스토리지 장치 및 그 동작방법 |
KR20210101982A (ko) * | 2020-02-11 | 2021-08-19 | 삼성전자주식회사 | 스토리지 장치 및 메모리 컨트롤러의 동작 방법 |
KR20210142981A (ko) * | 2020-05-19 | 2021-11-26 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR20220079264A (ko) * | 2020-12-04 | 2022-06-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11625333B2 (en) * | 2021-04-26 | 2023-04-11 | Micron Technology, Inc. | Configurable flush operation speed |
-
2022
- 2022-10-27 TW TW111140793A patent/TWI814625B/zh active
- 2022-11-11 CN CN202211437472.4A patent/CN117950573A/zh active Pending
-
2023
- 2023-07-11 US US18/220,293 patent/US20240143226A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120124294A1 (en) * | 2007-12-06 | 2012-05-17 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US8688899B2 (en) * | 2010-09-28 | 2014-04-01 | Fusion-Io, Inc. | Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol |
US20220229555A1 (en) * | 2021-01-20 | 2022-07-21 | Western Digital Technologies, Inc. | Storage System and Method for Using Read and Write Buffers in a Memory |
US20220245064A1 (en) * | 2021-02-02 | 2022-08-04 | SK Hynix Inc. | Memory controller and storage device including the same |
Also Published As
Publication number | Publication date |
---|---|
TW202418092A (zh) | 2024-05-01 |
US20240143226A1 (en) | 2024-05-02 |
CN117950573A (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402318B2 (en) | Mapping table updating method, memory control circuit unit and memory storage device | |
US8230161B2 (en) | Data backup method for a flash memory and controller and storage system using the same | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US10599345B2 (en) | Memory device that writes data into a block based on time passage since erasure of data from the block | |
US9021218B2 (en) | Data writing method for writing updated data into rewritable non-volatile memory module, and memory controller, and memory storage apparatus using the same | |
TW201437807A (zh) | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 | |
CN110879793B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI582776B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI607309B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN113885692B (zh) | 存储器效能优化方法、存储器控制电路单元以及存储装置 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TWI501244B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US11922062B2 (en) | Controller and operating method thereof | |
CN112051971B (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
CN112860193A (zh) | 整理指令处理方法、存储器控制电路单元与存储装置 | |
CN114327240A (zh) | 计算机可读存储介质、闪存存储器的数据存储方法及装置 | |
TWI814625B (zh) | 資料儲存裝置與寫入緩存器管理方法 | |
CN111583976B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
US20220012180A1 (en) | Memory system for meta data management and operating method of memory system | |
TWI810095B (zh) | 資料儲存裝置與寫入緩存器管理方法 | |
TWI822398B (zh) | 資料儲存裝置與資料儲存裝置之緩存器大小估計方法 | |
TWI828391B (zh) | 資料儲存裝置與資料儲存裝置之緩存器大小估計方法 | |
CN112799601A (zh) | 有效数据合并方法、存储器存储装置及控制电路单元 | |
CN107229413B (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 |