TWI805449B - 藉助於多階段垃圾收集管理以進行記憶體裝置的存取控制的方法、用於記憶體裝置的控制器、以及記憶體裝置 - Google Patents
藉助於多階段垃圾收集管理以進行記憶體裝置的存取控制的方法、用於記憶體裝置的控制器、以及記憶體裝置 Download PDFInfo
- Publication number
- TWI805449B TWI805449B TW111126680A TW111126680A TWI805449B TW I805449 B TWI805449 B TW I805449B TW 111126680 A TW111126680 A TW 111126680A TW 111126680 A TW111126680 A TW 111126680A TW I805449 B TWI805449 B TW I805449B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- data
- memory
- garbage collection
- block
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- 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
- 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/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
- 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
-
- 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Selective Calling Equipment (AREA)
Abstract
本發明提供藉助於多階段垃圾收集管理以進行記憶體裝置的存取控制的方法及相關設備。該方法包含:在第一垃圾收集階段的期間,向非揮發性記憶體發送第一簡單讀取指令以嘗試從第一源區塊讀取第一有效資料,將第一有效資料發送到非揮發性記憶體的內部緩衝器中,以供被編程到第一目的地區塊中,發送第二簡單讀取指令以嘗試從第一源區塊讀取第二有效資料,且因應從第一源區塊讀取第二有效資料不成功,防止重新嘗試從第一源區塊讀取第二有效資料;完成至少一主機觸發操作;以及在第二垃圾收集階段的期間,重新嘗試從第一源區塊讀取第二有效資料。
Description
本發明係相關於記憶體控制,尤指一種藉助於多階段(multi-phase)垃圾收集(garbage collection,GC)管理以進行存取控制的方法以及相關設備諸如一記憶體裝置、其一記憶體控制器等。
記憶體技術的發展使得各種可攜式和非可攜式記憶體裝置,諸如分別符合SD/MMC、CF、MS以及XD規格的記憶卡以及別符合UFS與EMMC規格的嵌入式儲存裝置等的廣泛應用成為可能。改善這些記憶體裝置的存取控制一直是本領域需要解決的問題。
NAND快閃記憶體可包括單階細胞(single-level cell,簡稱SLC)以及多階細胞(multiple-level cell,簡稱MLC)快閃記憶體。在SLC快閃記憶體中,用作為一記憶體細胞(memory cell)的每個電晶體可以具有分別與邏輯值0和1對應的兩個電荷值中的任一電荷值。相較之下,在MLC快閃記憶體中,用作為一記憶體細胞的每個電晶體的儲存能力可以被充分地利用。MLC快閃記憶體中的電晶
體可以由比SLC快閃記憶體中的電晶體更高的電壓來驅動,並且不同的電壓準位可以被利用來記錄至少兩位元的資訊(例如00、01、11或10)。理論上,MLC快閃記憶體的記錄密度可以達到SLC快閃記憶體的記錄密度的至少兩倍,因此NAND快閃記憶體製造商是偏好MLC快閃記憶體的。
MLC快閃記憶體的低成本以及大容量意味著它比SLC快閃記憶體更可能被應用在記憶體裝置中。然而,MLC快閃記憶體確實存在著不穩定的問題。為了確保對記憶體裝置中的快閃記憶體的存取控制可以滿足所要求的規格,快閃記憶體的控制器可以配備有某些管理機制以妥善地管理資料存取。
然而,即使具備上述管理機制的記憶體裝置也可能具有某些缺陷。舉例來說,在包含上述快閃記憶體的記憶體裝置中,上述控制器可以被設計為具有有限的硬體資源,以節省記憶體裝置的整體成本,因此控制器的資料緩衝器可能非常小。在垃圾收集(garbage collection,GC)過程中,控制器可能需要從快閃記憶體中的一或多個SLC區塊讀取某些資料頁面,並將這些資料頁面寫入快閃記憶體中的四階細胞(quadruple-level cell,QLC)區塊中,其中由於硬體資源有限,控制器可能被迫每次只能緩衝一個資料頁面。對於控制器在讀取某個資料頁面時無法從硬解碼(hard-decoding)得到一可更正結果的一異常讀取情況,由於硬解碼無法克服錯誤,因此控制器可能需要觸發軟解碼(soft-decoding)。如此一來,快閃記憶體可能重複使用其一內部緩衝器,尤其,可能使先前從控制器接收的資料損壞,這可能導致一資料錯誤問題。可能有一或多種其它解決方案被提出以防止資料錯誤問題,但這可能會引發其它的問題,諸如某些副作用。
因此,需要一種新穎的方法和相關的架構,以在沒有副作用或較不可能帶來副作用之狀況下避免上述問題發生。
本發明之一目的在於提供一種藉助於多階段垃圾收集管理以進行存取控制的方法以及相關設備諸如一記憶體裝置、其一記憶體控制器等,以解決上述的問題。
本發明的至少一實施例提供一種藉助於一多階段(multi-phase)垃圾收集(garbage collection,GC)管理以進行一記憶體裝置的存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該方法包含:在一第一垃圾收集階段的期間,向該非揮發性記憶體發送一第一簡單讀取指令以嘗試從該複數個區塊中的一第一源區塊讀取一第一有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第一有效資料成功,將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中;在該第一垃圾收集階段的期間,向該非揮發性記憶體發送一第二簡單讀取指令,以嘗試從該第一源區塊讀取一第二有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第二有效資料不成功,防止重新嘗試從該第一源區塊讀取該第二有效資料;在該第一垃圾收集階段的一結束時間點和該第一垃圾收集階段之後的一第二垃圾收集階段的一開始時間點之間的一時間段內,完成至少一主機觸發(host-triggered)操作,其中該控制器因應來自一主機裝置的複數個主機指令中的至少一主機指令而進行該至少一主機觸發操作;以及在該第二垃圾收集階段的期間,重新嘗試從該第一源區塊讀取該第二有效資料。
除了上述方法,本發明還提供一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性(non-volatile,NV)記憶體,該非揮發性
記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該控制器包含一處理電路。該處理電路用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體。例如:在一第一垃圾收集階段的期間,該控制器向該非揮發性記憶體發送一第一簡單讀取指令以嘗試從該複數個區塊中的一第一源區塊讀取一第一有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第一有效資料成功,該控制器將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中;在該第一垃圾收集階段的期間,該控制器向該非揮發性記憶體發送一第二簡單讀取指令,以嘗試從該第一源區塊讀取一第二有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第二有效資料不成功,該控制器防止重新嘗試從該第一源區塊讀取該第二有效資料;在該第一垃圾收集階段的一結束時間點和該第一垃圾收集階段之後的一第二垃圾收集階段的一開始時間點之間的一時間段內,該控制器完成至少一主機觸發(host-triggered)操作,其中該控制器因應來自該主機裝置的該複數個主機指令中的至少一主機指令而進行該至少一主機觸發操作;以及在該第二垃圾收集階段的期間,該控制器重新嘗試從該第一源區塊讀取該第二有效資料。
除了上述方法,本發明還提供一種記憶體裝置諸如包含上述控制器的記憶體裝置。該記憶體裝置包含:該非揮發性記憶體,用以儲存信息;以及該控制器,耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作。
本發明的至少一實施例提供一種藉助於一多階段(multi-phase)垃圾收集(garbage collection,GC)管理以進行一記憶體裝置的存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性
記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該方法包含:在一第一垃圾收集階段的一開始時間點之前的一時間段內,因應來自一主機裝置的複數個主機指令中的多個第一主機指令,向該非揮發性記憶體發送多個第一讀取指令以分別嘗試從該複數個區塊中的一第一區塊的至少一頁面多次讀取一第一資料,其中對於該多次中的除了最後一次之外的每一次,從該第一區塊的該至少一頁面讀取該第一資料是成功的,並且對於該多次中的該最後一次,從該第一區塊的該至少一頁面讀取該第一資料是不成功的;在該第一垃圾收集階段的該開始時間點之前的該時間段內,因應從該第一區塊的該至少一頁面讀取該第一資料不成功,向該非揮發性記憶體發送至少一第二讀取指令以重新嘗試從該第一區塊的該至少一頁面讀取該第一資料;在該第一垃圾收集階段的期間,從一第一源區塊的至少一第一頁面讀取一第一有效資料,並將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中,其中該第一區塊是用來作為該第一源區塊,且該第一源區塊的該至少一第一頁面與該第一區塊的該至少一頁面不同;在該第一垃圾收集階段的期間,嘗試從該第一源區塊讀取該第一資料,且因應從該第一源區塊讀取該第一資料不成功,防止重新嘗試從該第一源區塊讀取該第一資料,以等待在該第一垃圾收集階段之後的一第二垃圾收集階段的期間進一步處理;以及在該第一垃圾收集階段的一結束時間點和該第二垃圾收集階段的一開始時間點之間的一時間段內,因應該複數個主機指令中的至少一其它主機指令,從該目的地區塊讀取該第一有效資料並嘗試從該第一源區塊讀取該第一資料。
除了上述方法,本發明還提供一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該控制器包含一處理電路。處理電路該用以依據來自一主機裝置的
複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體。例如:在一第一垃圾收集階段的一開始時間點之前的一時間段內,因應來自該主機裝置的該複數個主機指令中的多個第一主機指令,該控制器向該非揮發性記憶體發送多個第一讀取指令以分別嘗試從該複數個區塊中的一第一區塊的至少一頁面多次讀取一第一資料,其中對於該多次中的除了最後一次之外的每一次,從該第一區塊的該至少一頁面讀取該第一資料是成功的,並且對於該多次中的該最後一次,從該第一區塊的該至少一頁面讀取該第一資料是不成功的;在該第一垃圾收集階段的該開始時間點之前的該時間段內,因應從該第一區塊的該至少一頁面讀取該第一資料不成功,該控制器向該非揮發性記憶體發送至少一第二讀取指令以重新嘗試從該第一區塊的該至少一頁面讀取該第一資料;在該第一垃圾收集階段的期間,該控制器從一第一源區塊的至少一第一頁面讀取一第一有效資料,並將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中,其中該第一區塊是用來作為該第一源區塊,且該第一源區塊的該至少一第一頁面與該第一區塊的該至少一頁面不同;在該第一垃圾收集階段的期間,該控制器嘗試從該第一源區塊讀取該第一資料,且因應從該第一源區塊讀取該第一資料不成功,防止重新嘗試從該第一源區塊讀取該第一資料,以等待在該第一垃圾收集階段之後的一第二垃圾收集階段的期間進一步處理;以及在該第一垃圾收集階段的一結束時間點和該第二垃圾收集階段的一開始時間點之間的一時間段內,因應該複數個主機指令中的至少一其它主機指令,該控制器從該目的地區塊讀取該第一有效資料並嘗試從該第一源區塊讀取該第一資料。
除了上述方法,本發明還提供一種記憶體裝置諸如包含上述控制器的記憶體裝置。該記憶體裝置包含:該非揮發性記憶體,用以儲存信息;以及該控制器,耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作。
本發明的方法和相關設備能確保該記憶體裝置能在各種情況下正確地操作,其中上述設備的例子包含:控制器以及記憶體裝置等,另外,本發明提供的方法及相關設備可以在沒有副作用或較不可能帶來副作用之狀況下解決相關技術問題。此外,本發明提供的方法及相關設備藉助於多階段垃圾收集管理,可以確保記憶體裝置對主機裝置的實時響應(real-time response),進而提高整體性能。
10:電子系統
50:主機裝置
52:處理器
54:電源供應電路
100:記憶體裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體(ROM)
112C:程式代碼
114:控制邏輯電路
116:隨機存取記憶體(RAM)
116B:資料緩衝器
118:傳輸介面電路
120:非揮發性(NV)記憶體
120B:內部緩衝器
122-1,122-2~122-N:非揮發性(NV)記憶體元件
RB:讀取緩衝器
WB:寫入緩衝器
SBLK#0:源區塊
STBL,STBL(0),STBL(1):源區塊需要進階讀取(NAR)表
S10,S11,S12,S13A,S13B,S14,S15A,S15B,S16,S17,S18,S19A,S19B,S20,S21A,S21B:步驟
Need_AER:需要進階讀取旗標
t:時間
第1圖是依據本發明一實施例的一電子裝置的示意圖。
第2A圖依據本發明一實施例繪示藉助於一多階段(multi-phase)垃圾收集(garbage collection,簡稱GC)管理以進行一記憶體裝置諸如第1圖中所示的記憶體裝置的存取控制的方法的流程圖的一第一部分。
第2B圖繪示藉助於該多階段GC管理的該記憶體裝置的該存取控制的該方法的該流程圖的一第二部分。
第3圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一存取控制方案。
第4圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一多階段GC控制方案。
第5圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一源區塊需要進階讀取(needing-advanced-read,簡稱NAR)控制方案。
第6圖依據本發明一實施例繪示基於如第5圖所示之該源區塊NAR控制方案所記錄的某些NAR資訊條目。
第7圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一寫
入加多階段GC控制方案。
第8圖依據本發明一實施例繪示針對寫入每秒輸入/輸出(input/output per second,IOPS)的改進。
第1圖是依據本發明一實施例的一電子裝置10的示意圖,其中電子裝置10可以包含一主機裝置50和一記憶體裝置100。主機裝置50可以包含至少一處理器(例如,一或多個處理器),其可被統稱為處理器52,並且主機裝置50可以進一步包含耦接到處理器52的一電源供應電路54。處理器52是被配置以控制主機裝置50的操作,電源供應電路54是被配置以向處理器52和記憶體裝置100提供電源,並且向記憶體裝置100輸出一或多個驅動電壓。記憶體裝置100可以被配置以提供儲存空間給主機裝置50,並且從主機裝置50取得該一或多個驅動電壓以作為記憶體裝置100的電源。主機裝置50的例子可以包含(但不限於):一多功能行動電話、一可穿戴裝置、一平板電腦以及個人電腦諸如桌上型電腦和筆記型電腦。記憶體裝置100的例子可以包含(但不限於):一可攜式記憶體裝置(例如符合SD/MMC、CF、MS或XD規範的記憶卡)、一固態硬碟(solid state drives,SSD)以及各種不同的嵌入式儲存裝置諸如符合通用快閃記憶體儲存(Universal Flash Storage,簡稱UFS)標準或嵌入式MMC(eMMC)標準的嵌入式儲存裝置。依據本實施例,記憶體裝置100可以包含一控制器諸如一記憶體控制器110和一非揮發性(non-volatile,簡稱NV)記憶體120,其中,該控制器是被配置以控制記憶體裝置100的操作並存取NV記憶體120,且NV記憶體120是被配置以儲存資訊。NV記憶體120可以包含一內部緩衝器120B以及至少一NV記憶體元件(例如一或多個NV記憶體元件),諸如多個NV記憶體元件122-1、122-2、...以及122-N,其中「N」可以代表大於1的一正整數。舉例來說,NV記憶體120可以是快閃記憶體,
且多個NV記憶體元件122-1、122-2、...以及122-N可以是多個快閃記憶體晶片(chip)或多個快閃記憶體裸晶(die),但是本發明不以此為限。另外,內部緩衝器120B可以包含一讀取緩衝器RB以及一寫入緩衝器WB。讀取緩衝器RB是被配置以緩衝(或暫時地儲存)一或多個讀取操作的一或多個資料頁面,諸如從多個NV記憶體元件122-1、122-2、...以及122-N中的一或多個記憶體元件讀取的一或多個資料頁面,以供在該一或多個讀取操作的期間由記憶體控制器110讀取,並且寫入緩衝器WB是被配置以緩衝一或多個寫入操作的一或多個資料頁面,諸如從記憶體控制器110發送的一或多個資料頁面,以供在該一或多個寫入操作的期間被編程到多個NV記憶體元件122-1、122-2、...以及122-N中的一或多個NV記憶體元件中。
如第1圖所示,記憶體控制器110可以包含一處理電路諸如一微處理器112、一儲存單元諸如一唯讀記憶體(read-only memory,簡稱ROM)112M、一控制邏輯電路114、一隨機存取記憶體(random access memory,簡稱RAM)116以及一傳輸介面電路118,其中上列元件可以藉由一匯流排(bus)相互耦接。RAM 116由一靜態隨機存取記憶體(static random access memory,SRAM)實現,但本發明不以此為限。RAM 116可以被配置為向記憶體控制器110提供內部儲存空間。例如,RAM 116可以作為一緩衝記憶體以緩衝資料。尤其,RAM 116可以包含作為資料緩衝器116B的緩衝區,且資料緩衝器116B可具有對應於至少一個資料頁面(例如一或多個資料頁面)的緩衝器大小。記憶體控制器110可被設計為具有有限的硬體資源以節省記憶體裝置100的整體成本,因此資料緩衝器116B可以非常小,例如,可以具有與單一資料頁面對應的緩衝器大小來僅緩衝一個資料頁面諸如該單一資料頁面,但本發明不以此為限。另外,本實施例的ROM 112M用以儲存程式代碼112C,而微處理器112用以進行程序代碼112C以控制對NV記憶體120的存取。請注意,在某些例子中,程序代碼112C可以儲存在RAM 116或
任何形式的記憶體中。另外,控制邏輯電路114中的資料保護電路(未繪示)可保護資料及/或進行錯誤更正,而傳輸介面電路118可符合一特定通信標準(諸如串列進階技術附件(Serial Advanced Technology Attachment,SATA)標準、通用串列匯流排(Universal Serial Bus,USB)標準、快捷外設組件互聯(Peripheral Component Interconnect Express,PCIe)標準、嵌入式多媒體卡(Embedded Multi-Media Card,eMMC)標準、或通用快閃記憶體儲存(Universal Flash Storage,UFS)標準),並且可以依據該特定通信標準進行通信。
在本實施例中,主機裝置50可以藉由向記憶體控制器110發送主機指令和對應的邏輯位址來存取記憶體裝置100。記憶體控制器110接收主機指令及邏輯位址,並將主機指令轉換為記憶體操作指令(可簡稱為操作指令),並以操作指令控制NV記憶體以對NV記憶體120中具有物理位址的記憶體單元(例如資料頁面)進行讀取、寫入/編程(programing)等,其中物理位址可與邏輯位址相關聯。當記憶體控制器110對多個NV記憶體元件122-1、122-2、...和122-N中的任一NV記憶體元件122-n(符號「n」可以代表在區間[1,N]中的任一整數)進行一抹除(erase)操作時,NV記憶體裝置122-n的多個區塊中的至少一區塊將被抹除,其中該多個區塊中的每一區塊可以包含多個頁面(例如資料頁面),以及存取操作(例如讀取或寫入)可以在一或多個頁面上進行。
根據某些實施例,該處理電路諸如微處理器112可根據來自主機裝置50的複數個主機指令來控制記憶體控制器110,以容許主機裝置50藉由記憶體控制器110來存取NV記憶體120。記憶體控制器110可以為主機裝置50將資料儲存到NV記憶體120中,因應於來自主機裝置50的一主機指令(例如該複數個主機指令的其中之一)讀取儲存的資料,並且將從NV記憶體120讀取的資料提供給主機裝置50。在NV記憶體120諸如快閃記憶體中,上述至少一NV記憶體元件(例如多個NV記憶體元件122-1、122-2、...和122-N)可以包含複數個區塊,諸如NV記憶體
元件122-1中的第一組物理區塊、NV記憶體元件122-2中的第二組物理區塊、...以及NV記憶體元件122-N中的第N組物理區塊。記憶體控制器110可以被設計為適當地管理該複數個區塊諸如這些組物理區塊。
尤其,該複數個區塊諸如這些組物理區塊的可以包含複數個資料區塊(例如,儲存有效資料的多個有效區塊)以及複數個備用區塊。記憶體控制器110可以對該複數個資料區塊以及該複數個備用區塊進行區塊管理。舉例來說,記憶體控制器110可以從該複數個備用區塊中選擇一備用區塊並將該備用區塊更改為該複數個資料區塊中的一新成員,諸如供進行資料寫入的一新資料區塊。因應在某一邏輯位址寫入資料的一寫入請求,記憶體控制器110可以將該資料寫入NV記憶體120內的一第一位置,諸如與該邏輯位址相關聯的一物理位址。因應在同一邏輯位址寫入資料的另一寫入請求,記憶體控制器110可將該資料寫入NV記憶體120內的一第二位置,諸如與這個邏輯位址相關聯的另一物理位址,並判斷在NV記憶體120內的該第一位置的該資料變為無效資料(invalid data)。另外,記憶體控制器110可觸發一垃圾收集(garbage collection,GC)程序以丟棄該複數個資料區塊中的一或多個資料區塊中的無效資料,並且將該一或多個資料區塊中的有效資料一起儲存在其它地方,尤其,從該複數個備用區塊中選擇一或多個備用區塊並將該一或多個備用區塊更改為該複數個資料區塊的一或多個新成員,諸如一或多個新資料區塊,將該有效資料從該一或多個資料區塊複製到該一或多個新資料區塊中,並且將該一或多個資料區塊更改為該複數個備用區塊中的一或多個新成員,諸如一或多個新備用區塊,以藉由抹除(erase)該一或多個新備用區塊來準備更多的儲存空間,以供進一步儲存新的資料。
記憶體控制器110可以在至少一表諸如RAM 116中的至少一暫時表以及NV記憶體120中的至少一非暫時表中記錄、維護及/或更新針對該區塊管理的區塊管理資訊,其中後者是在NV記憶體120中,因此也可被稱為NV記憶體
內(intra-NV-memory,intra-NVM)表。該至少一暫時表可以包含該至少一非暫時表的至少一部分(例如一部分或全部)的暫時版本。舉例來說,該至少一非暫時表可以包含至少一邏輯到物理(logical-to-physical,簡稱L2P)位址映射表(例如一或多個L2P位址映射表),以供記錄邏輯位址(例如指出多個邏輯區塊的邏輯區塊位址(logical block addresses,LBAs)以及指出在該多個邏輯區塊的任一個邏輯區塊中的多個邏輯頁面的邏輯頁面位址(logical page addresses,LPAs))以及物理位址(例如指出多個物理區塊的物理區塊位址(physical block addresses,PBAs)以及指出在該多個物理區塊的任一個物理區塊中的多個物理頁面的物理頁面位址(physical page addresses,PPAs))之間的映射關係,並且該至少一暫時表可以包含上述至少一L2P位址映射表的至少一子表(sub-table)(例如一或多個子表)的一暫時版本,其中記憶體控制器110(例如微處理器112)可在主機裝置50的主機端儲存空間(例如邏輯位址)與記憶體裝置100內的NV記憶體120的裝置端儲存空間(例如物理位址)之間進行雙向位址轉換,以便為主機裝置50存取資料。舉例來說,該至少一非暫時表可以更包含用於管理該複數個備用區塊的一備用區塊管理表,並且該至少一暫時表可以包含該備用區塊管理表的一暫時版本。另外,記憶體控制器110可將該至少一暫時表備份至NV記憶體120(例如,多個NV記憶體元件122-1、122-2、...和122-N中的一或多個NV記憶體元件)中的該至少一非暫時表,並且記憶體控制器110可以將該至少一非暫時表的至少一部分(例如部分或全部)加載到RAM 116中以成為該至少一暫時表以供快速參考。舉例來說,該至少一暫時表可以更包含針對多階段GC管理的至少一GC管理表,諸如至少一源區塊需要進階讀取(needing-advanced-read,簡稱NAR)表(例如一或多個源區塊NAR表),統稱為源區塊NAR表STBL,且記憶體控制器110可將源區塊NAR表STBL備份至NV記憶體120(例如多個NV記憶體元件122-1、122-2、...和122-N中的該一或多個NV記憶體元件)成為NV記憶體120中的該至少一非暫時表的一部分。
第2A圖以及第2B圖依據本發明一實施分別繪示了藉助於一多階段GC管理以進行一記憶體裝置諸如第1圖中所示的記憶體裝置的存取控制的方法的一流程圖的一第一部分以及一第二部分,其中節點A和B可以指出第2A圖以及第2B圖各自的局部工作流程之間的連結。該方法可應用於第1圖所示的架構(例如電子裝置10、記憶體裝置100、記憶體控制器110以及微處理器112),且可由記憶體裝置100的記憶體控制器110(例如微處理器112)進行。為了更好地理解,前述GC程序的一第一GC階段(在第2A圖中標示為「1st GC階段」以求簡明)可以包含第2A圖所示的該第一部分的大部分操作,諸如步驟S11、S12、S13A、S13B、S14、S15A以及S15B的操作,以及該GC程序的一第二GC階段(在第2B圖中標示為「2nd GC階段」以求簡明)可以包含第2B圖所示的該第二部分的大部分操作,諸如步驟S17、S18、S19A、S19B、S20A以及S20B的操作。
在步驟S10中,記憶體控制器110(例如微處理器112)可判斷是否觸發該GC程序(標示為「GC」以求簡明)。若是,則進入步驟S11;若否,則進入步驟S10。
舉例來說,記憶體控制器110(例如微處理器112)可以依據該複數個備用區塊的一備用區塊計數(count)是否小於一預定備用區塊計數閾值以判斷是否觸發該GC程序,尤其,選擇性地進行以下操作中的一個:(1)如果該備用區塊計數小於該預定備用區塊計數閾值,則觸發該GC程序;以及(2)如果該備用區塊計數大於或等於該預定備用區塊計數閾值,則避免觸發該GC程序;但本發明不以此為限。
在步驟S11中,記憶體控制器110(例如微處理器112)可以向NV記憶體120發送一簡單讀取指令以嘗試從一源區塊(例如該一或多個資料區塊中的任一
資料區塊)讀取有效資料,尤其,嘗試從該源區塊內的某一物理頁面讀取該有效資料。
在步驟S12中,記憶體控制器110(例如微處理器112)可以判斷從該源區塊(例如該物理頁面諸如資料頁面)讀取該有效資料是否成功。若是,則進入步驟S13A;若否,則進入步驟S13B。
在步驟S13A中,因應從該源區塊(例如該物理頁面諸如資料頁面)讀取該有效資料成功,記憶體控制器110(例如微處理器112)可以將該有效資料發送到NV記憶體120的內部緩衝器120B(例如寫入緩衝器WB),以供被編程到一目的地區塊(例如該一或多個新資料區塊中的任一新資料區塊)。
在步驟S13B中,因應於從該源區塊(例如該物理頁面諸如資料頁面)讀取該有效資料不成功,記憶體控制器110(例如微處理器112)可以跳過這個資料頁面並將這個資料頁面標記為需要進階(advanced)讀取,例如,藉由使用一需要進階讀取旗標(flag)Need_AER,以供指出這個資料頁面被安排為在下一GC階段諸如第二(2nd)GC階段的期間用一進階讀取操作來進行進一步處理。
舉例來說,在記憶體裝置100內,記憶體控制器110可被設計為具有有限的硬體資源以節省記憶體裝置100的整體成本,因此,記憶體控制器110的資料緩衝器116B可以很小。在該GC程序的期間,記憶體控制器110可能需要從NV記憶體120中的一或多個單階細胞(single-level cell,簡稱SLC)區塊讀取某些資料頁面,並將這些資料頁面寫入NV記憶體120中的一更高階細胞區塊諸如三階細胞(triple-level cell,簡稱TLC)區塊、四階細胞(quadruple-level cell,簡稱QLC)區塊等。當資料緩衝器116B非常小時,記憶體控制器110可能被迫每次只緩衝一個資料頁面,尤其,從該SLC區塊讀取這個資料頁面以供被緩衝在資料緩衝器116B中,並將這個資料頁面發送到NV記憶體120的內部緩衝器120B以供被收集作為預計同時被編程至該更高階細胞區塊諸如該TLC區塊、該QLC區塊等中的一
組相關聯的資料頁面的其中之一。例如,當該更高階細胞區塊代表該TLC區塊時,該組相關聯的資料頁面可以是三個相關聯的資料頁面。再例如,當該更高階細胞區塊代表該QLC區塊時,該組相關聯的資料頁面可以是四個相關聯的資料頁面。
對於記憶體控制器110在讀取任何資料頁面時可以從硬解碼(hard-decoding)獲得一可更正結果的一正常讀取情況來說,在該組相關聯的資料頁面已經被發送到NV記憶體120的內部緩衝器120B之後,記憶體控制器110可以觸發NV記憶體120將該組相關聯的資料頁面同時編程到該更高階細胞區塊中。對於記憶體控制器110在當前GC階段諸如第一(1st)GC階段的期間讀取的某一資料頁面時無法從硬解碼得到一可更正結果的一異常讀取情況來說,因為硬解碼無法克服錯誤,記憶體控制器110可以跳過這個資料頁面並將這個資料頁面標記為需要進階讀取,例如藉由使用如上所述的需要進階讀取旗標Need_AER。由於記憶體控制器110不需要立即觸發軟解碼(soft-decoding),因此記憶體控制器110可以防止NV記憶體120重新使用其內部緩衝器120B(例如讀取緩衝器RB及/或寫入緩衝器WB),尤其,防止寫入緩衝器WB內的該組相關聯的資料頁面中的一或多個先前收集的資料頁面被其它資訊覆寫(overwrite),因此能防止資料錯誤問題的發生。
在步驟S14中,記憶體控制器110(例如微處理器112)可以判斷是否已經從記憶體控制器110(例如其內的資料緩衝器116B)收集足夠的資料頁面到NV記憶體120(例如其內的內部緩衝器120B)中以供被編程。若是,則進入步驟S15A;若否,則進入步驟S15B。
舉例來說,在該目的地區塊是TLC區塊的情況下,記憶體控制器110(例如微處理器112)可以選擇性地進行以下操作中的一個:(1)當已經有三資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)
時,記憶體控制器110(例如微處理器112)可以判斷已經收集了足夠的資料頁面,因此進入步驟S15A;以及(2)當尚未有三資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷沒有收集到足夠的資料頁面,因此進入此步驟S15B;但本發明不限於此。又例如,在該目的地區塊是QLC區塊的情況下,記憶體控制器110(例如微處理器112)可以選擇性地進行以下操作中的一個:(1)當已經有四資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷已經收集了足夠的資料頁面,因此進入步驟S15A;以及(2)當尚未有四資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷沒有收集到足夠的資料頁面,因此進入步驟S15B。
在步驟S15A中,記憶體控制器110(例如微處理器112)可以觸發對收集到NV記憶體120(例如其內的內部緩衝器120B)中的資料頁面的編程,例如,藉由向NV記憶體120發送一編程觸發指令(programing-trigger command)。
在步驟S15B中,記憶體控制器110(例如微處理器112)可以判斷第一(1st)GC階段是否完成。若是,則進入步驟S16;若否,則進入步驟S11。
如第2A圖所示,記憶體控制器110(例如微處理器112)可以進行以下操作:(1)在第一GC階段的期間,當在一第一時間點進入步驟S11時,記憶體控制器110可以向NV記憶體120發送一第一簡單讀取指令,以嘗試從該源區塊讀取第一有效資料;(2)在第一GC階段的期間,當後來接續地進入步驟S12和S13A時,因應從該源區
塊讀取該第一有效資料成功,記憶體控制器110可以將該第一有效資料發送到NV記憶體120的內部緩衝器120B中,以供被編程到該目的地區塊中;(3)在第一GC階段的期間,當在一第二時間點(例如該第一時間點之後的一時間點)進入步驟S11時,記憶體控制器110可以向NV記憶體120發送一第二簡單讀取指令,以嘗試從該源區塊中讀取第二有效資料;(4)在第一GC階段的期間,當後來接續地進入步驟S12和S13B時,因應從該源區塊讀取該第二有效資料不成功,記憶體控制器110可以防止從該源區塊重新嘗試讀取該第二有效資料;(5)在第一GC階段的期間,當在一第三時間點(例如該第二時間點之後的一時間點)進入步驟S11時,因應從該源區塊讀取該第二有效資料不成功,記憶體控制器110可以向NV記憶體120發送一第三簡單讀取指令,以嘗試從該源區塊讀取第三有效資料;以及(6)在第一GC階段的期間,當後來接續地進入步驟S12和S13B時,因應從該源區塊讀取該第三有效資料成功,記憶體控制器110可以將該第三有效資料發送到NV記憶體120的內部緩衝器120B中,以供被編程到該目的地區塊中;但本發明不限於此。如第2B圖所示,記憶體控制器110(例如微處理器112)可以進一步進行以下操作:(7)在第一GC階段的結束時間點以及第一GC階段之後的第二GC階段的開始時間點之間的一時間段內,當重新進入步驟S16以等待開始第二GC階段的機會,記憶體控制器110可完成至少一主機觸發(host-triggered)操作(例如一或多個主機觸發操作),其中記憶體控制器110可因應該複數個主機指令中的至少一主機指令而進行該至少一主機觸發操作,尤其,因應來自主機裝置50的一讀取請求而進行資料讀取及/或因應來自主機裝置50的一寫入請求而進行資料寫入;以及(8)在第二GC階段的期間,記憶體控制器110可以重新嘗試從該源區塊讀取該第
二有效資料。
舉例來說,多個簡單讀取指令可以包含該第一簡單讀取指令、該第二簡單讀取指令、該第三簡單讀取指令等。針對防止重新嘗試從源區塊讀取該第二有效資料,記憶體控制器110可以防止向NV記憶體120發送任一進階讀取指令,其中該任一進階讀取指令和該多個簡單讀取指令中的任一簡單讀取指令分別屬於不同類型的讀取指令。尤其,該任一進階讀取指令可以代表在多種類型的讀取指令中的比該任一簡單讀取指令造成NV記憶體120的更多讀取處理時間的任一讀取指令。該多種類型的讀取指令的例子可以包含但不限於:一更正型讀取指令(corrective read command)、一數位信號處理(digital signal processing,DSP)開啟讀取指令(DSP-on read command)、一軟讀取指令(soft-read command)以及一獨立磁碟冗餘陣列(Redundant Array of Independent Disks,RAID)復原讀取指令(RAID-recovery read command)。
在步驟S16中,記憶體控制器110(例如微處理器112)可以判斷是否開始第二(2nd)GC階段。若是,則進入步驟S17;若否,則進入步驟S16。
舉例來說,記憶體控制器110(例如微處理器112)可以選擇性地進行以下操作中的一個:(1)當記憶體控制器110仍因應該至少一主機指令而進行該至少一主機觸發操作時,記憶體控制器110(例如微處理器112)可判斷繼續等待,尤其,等待記憶體裝置100的一預定狀態,諸如一非忙碌狀態(non-busy status)、一閒置狀態等(例如,至少一主機觸發操作已完成且未接收到額外的主機指令),並且因此進入步驟S16;以及(2)當記憶體控制器110因應該至少一主機指令而完成該至少一主機觸發操作時,尤其,檢測到該預定狀態,諸如該非忙碌狀態、該空閒狀態等,記憶體控制器110(例如微處理器112)可判斷開始第二(2nd)GC階段,並且因此進入步驟
S17。
在步驟S17中,針對重新嘗試讀取在第一GC階段的期間未成功地讀取的該有效資料(例如該第二有效資料),記憶體控制器110(例如微處理器112)可以發送一進階讀取指令到NV記憶體120以嘗試從該源區塊(例如步驟S11中提到的源區塊)讀取該有效資料,尤其,嘗試從第二GC階段的一目標頁面讀取該有效資料(例如該第二有效資料),其中該目標頁面可以代表至少一先前存取資料頁面(例如一或多個先前存取資料頁面)中的已經在第一GC階段的期間在步驟S13B中被跳過並標記為需要進階讀取的任一先前存取資料頁面。
在包括步驟S17、S18以及S19B的迴圈中,記憶體控制器110(例如微處理器112)可以向NV記憶體120發送至少一進階讀取指令(例如一或多進階讀取指令)諸如在步驟S17中提到的進階讀取指令,以嘗試從該源區塊讀取該有效資料(例如上述第二有效資料),其中該至少一進階讀取指令和該多個簡單讀取指令中的該任一簡單讀取指令分別屬於不同類型的讀取指令。尤其,該至少一進階讀取指令可以包含該多種類型的讀取指令中的比該任一簡單讀取指令造成NV記憶體120的更多讀取處理時間的至少一讀取指令(例如一或多個讀取指令)。記憶體控制器110(例如微處理器112)可以使用該多種類型的讀取指令來請求NV記憶體120分別啟用(enable)相關的讀取處理機制。由於與該多種類型的讀取指令對應的相關的讀取處理機制比與該任一簡單讀指令對應的讀取處理機制複雜,該多種類型的讀取指令與該任一簡單讀取指令相比造成NV記憶體120的讀取處理時間更長。
在步驟S18中,記憶體控制器110(例如微處理器112)可以判斷從該源區塊(例如該目標頁面諸如該任一先前存取資料頁面)讀取該有效資料(例如該第二有效資料)是否成功。若是,則進入步驟S19A;若否,則進入步驟S19B。
在步驟S19A中,因應從該源區塊(例如該目標頁面諸如該任一先前存
取資料頁面)讀取該有效資料(例如該第二有效資料)成功,記憶體控制器110(例如微處理器112)可以將該有效資料發送到NV記憶體120的內部緩衝器120B(例如寫入緩衝器WB)中,以供被編程到第二GC階段的某一目的地區塊中。舉例來說,當第一GC階段的該目的地區塊還未滿時(例如還有更多的儲存空間以供儲存額外的資料頁面),第二GC階段的該目的地區塊可以等於第一GC階段的該目的地區塊。又例如,當第一GC階段的該目的地區塊已滿時(例如,已沒有更多的儲存空間來儲存任何額外的資料頁面),第二GC階段的該目的地區塊可以是另一目的地區塊(例如在該一或多個新資料區塊中的另一個新資料區塊)。
在步驟S19B中,因應從該源區塊(例如該目標頁面諸如該任一先前存取資料頁面)讀取該有效資料(例如該第二有效資料)不成功,記憶體控制器110(例如微處理器112)可以判斷該多種類型的進階讀取指令中的下一種類型的進階讀指令是否為可用/可得的(available)。若是,則進入步驟S17,以用下一種類型的進階讀取指令從該源區塊(例如該目標頁面諸如該任一先前存取資料頁面)重新嘗試讀取該有效資料(例如該第二有效資料);若否,則進入步驟S19C。
在步驟S19C中,記憶體控制器110(例如微處理器112)可以執行一錯誤處置程序(error handling procedure)(標示為「EHP」以求簡明)。舉例來說,在該錯誤處置程序中,記憶體控制器110(例如微處理器112)可以發送一預定類型的進階讀取指令(例如在步驟S17中剛剛使用的相同進階讀取指令)以從同一個目標頁面(例如,在步驟S17中剛剛存取過的相同先前存取資料頁面)一次或多次地重新嘗試讀取該有效資料,例如,直到該錯誤處置程序的重新嘗試操作次數達到一預定的錯誤處置重新嘗試計數閾值。對於這個重新嘗試操作成功的一較好的情況,記憶體控制器110(例如微處理器112)可以將該有效資料發送到NV記憶體120的內部緩衝器120B(例如寫緩衝器WB)中,以供被編程到第二GC階段的該目的地區塊,其中這個發送操作類似於步驟S19A的發送操作。對於這個重新嘗試
操作不成功的最壞情況,記憶體控制器110(例如微處理器112)可以將這個不成功的處理結果記錄到一日誌檔案(log file)中以供進一步處理。
在步驟S20中,記憶體控制器110(例如微處理器112)可以判斷是否已經有足夠的資料頁面從記憶體控制器110(例如其內的資料緩衝器116B)被收集到NV記憶體120(例如內部緩衝器120B)中以供被編程。若是,則進入步驟S21A;若否,則進入步驟S21B。
舉例來說,在該目的地區塊是TLC區塊的情況下,記憶體控制器110(例如微處理器112)可以選擇性地進行以下操作中的一個:(1)當已經有三個資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷已經收集了足夠的資料頁面,因此進入步驟S21A;以及(2)當還沒有三個資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷沒有收集到足夠的資料頁面,因此進入步驟S21B;但本發明不限於此。又例如,在該目的地區塊是QLC區塊的情況下,記憶體控制器110(例如微處理器112)可以選擇性地進行以下操作中的一個:(1)當已經有四個資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)時,記憶體控制器110(例如微處理器112)可以判斷已經收集了足夠的資料頁面,因此進入步驟S21A;以及(2)當還沒有四個資料頁面被收集至NV記憶體120(例如其內的內部緩衝器120B)中時,記憶體控制器110(例如微處理器112)可以判斷沒有收集到足夠的資料頁面,因此進入步驟S21B。
在步驟S21A中,記憶體控制器110(例如微處理器112)可以觸發對被收集到NV記憶體120(例如其內的內部緩衝器120B)的資料頁面的編程,例如,
藉由發送該編程觸發指令至NV記憶體120。
在步驟S21B中,記憶體控制器110(例如微處理器112)可以判斷第二(2nd)GC階段是否完成。若是,則進入步驟S10;若否,則進入步驟S17。
為了更好地理解,該方法可以用第2A圖以及第2B圖所示的工作流程來說明,但本發明不限於此。根據某些實施例,一或多個步驟可以在第2A圖以及第2B圖所示的工作流程中增加、刪除或修改。
根據某些實施例,第一GC階段的操作可以在背景進行,同時記憶體控制器110正在因應該至少一主機指令而將來自主機裝置50的資料寫入NV記憶體120。舉例來說,記憶體控制器110可以正在間歇地將該資料寫入NV記憶體120。再舉例來說,記憶體控制器110可以正在定期地將該資料寫入NV記憶體120。另外,第二GC階段的操作可以在記憶體裝置100沒有因應來自主機裝置50的任一主機指令而寫入任何資料的情況下進行。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第3圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一存取控制方案。在該目的地區塊是QLC區塊的情況下,讀取緩衝器RB以及寫入緩衝器WB中的每一緩衝器可以被設計為具有對應於四個資料頁面的緩衝器大小。舉例來說,資料緩衝器116B可以被設計成具有相當小的緩衝器大小諸如對應於一個資料頁面的緩衝器大小。記憶體控制器110(例如微處理器112)可藉助於該多階段GC管理來進行記憶體裝置100的存取控制,以防止資料錯誤的問題。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第4圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一多階段GC控制方案。記憶體控制器110(例如微處理器112)可維護前述NAR表諸如源區塊NAR表STBL,以管理至少一源區塊(SBLK)諸如一或多個源區塊。舉例來說,步驟S11中提到的源區塊可代表該至少一源區塊中的任一源區塊,且
該至少一源區塊可包含一第一源區塊諸如SBLK#0,但本發明不以此為限。在該至少一源區塊包含多個源區塊(例如該第一源區塊諸如SBLK#0以及一第二源區塊諸如SBLK#1)的情況下,步驟S11中提到的源區塊可以代表該多個源區塊中的任一源區塊。
如第4圖所示,在第一GC階段的期間,可以多次執行步驟S11以嘗試從該第一源區塊諸如SBLK#0讀取該有效資料,而且,對於具有未被成功地讀取的有效資料的某些物理頁面(例如四個物理頁面)(標示為「?」以便更好地理解),步驟S13B可以被執行多次(例如四次)。如此一來,記憶體控制器110(例如微處理器112)可以使用需要進階讀取旗標Need_AER將這些物理頁面標記成需要進階讀取標記,尤其,將需要進階讀取旗標Need_AER設置為一第一預定值諸如一(標示為「Need_AER=1」以求簡明),以供指出這些物理頁面被安排在下一個GC階段諸如第二GC階段的期間藉由進階讀取操作來進一步處理,其中該第一預定值不同於一預設值諸如零。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
根據某些實施例,該第一預定值可以被替換為不同於該預設值的多個預定值中的任一值。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第5圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一源區塊NAR控制方案。在該至少一源區塊包含該多個源區塊諸如SBLK#0、SBLK#1等的情況下,源區塊NAR表STBL可以包含分別對應於源區塊(SBLK)#0、#1等的多個子表,諸如分別對應於源區塊(SBLK)#0、#1等的SBLK#0 NAR表STBL(0)、SBLK#1 NAR表STBL(1)等。
如第5圖所示,SBLK#0 NAR表STBL(0)、SBLK#1 NAR表STBL(1)等中的與某一SBLK對應的任一源區塊NAR表的索引(index)可以是一物理頁面
位址(physical page address,PPA),以供指出這個SBLK中的一物理頁面。由於一物理位址可以包含用於指出這個SBLK(例如包括這個物理頁面的SBLK)的一物理區塊位址(physical block address,PBA)以及用於指出該物理頁面的PPA,記憶體控制器110(例如,微處理器112)可以根據源區塊NAR表STBL(例如其一子表諸如與這個SBLK對應的該任一源區塊NAR表)判斷該至少一先前存取資料頁面(例如在第一GC階段的期間在步驟S13B中被跳過並標記為需要進階讀取的至少一物理頁面),以取得與這個物理位址對應的需要進階讀取旗標Need_AER。
在開始使用與這個SBLK對應的該任一源區塊NAR表之前,記憶體控制器110(例如微處理器112)可以清除該任一源區塊NAR表的多個NAR資訊條目中的所有NAR資訊條目,尤其,將該多個NAR資訊條目中的每個NAR資訊條目設置為該預設值諸如零(例如Need_AER=0)。在第一GC階段的期間,當因應讀取這個SBLK中的某個物理頁面的有效資料不成功而進入步驟S13B時,記憶體控制器110(例如微處理器112)可以將該多個NAR資訊條目中與這個物理頁面對應的某個NAR資訊條目(例如與這個物理頁面的PPA對應的NAR資訊條目)改變為該第一預定值諸如一(例如Need_AER=1)。在第二GC階段,當因應於讀取這個SBLK中的這個物理頁面的有效資料成功而進入步驟S19A時,記憶體控制器110(例如微處理器112)可以將這個NAR資訊條目改回該預設值諸如零(例如Need_AER=0)。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
根據某些實施例,在該至少一源區塊只包含該第一源區塊諸如SBLK#0的情況下,記憶體控制器110(例如微處理器112)可以只使用SBLK#0 NAR表STBL(0),而且不需要使用SBLK#1 NAR表STBL(1)等,但本發明不以此為限。舉例來說,記憶體控制器110(例如微處理器112)可以只建立SBLK#0 NAR表STBL(0),而不需要建立SBLK#1 NAR表STBL(1)等。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第6圖依據本發明一實施例繪示基於如第5圖所示之該源區塊NAR控制方案所記錄的某些NAR資訊條目。SBLK#0 NAR表STBL(0)可以作為上述任一源區塊NAR表的例子。在第一GC階段的期間,當因應讀取該源區塊諸如SBLK#0內的於多個PPA{132,134,1132,1133}的物理頁面中的任一物理頁面的有效資料不成功而進入步驟S13B時,記憶體控制器110(例如微處理器112)可以將對應於這個物理頁面的NAR資訊條目(例如對應於多個PPA{132,134,1132,1133}中的一個PPA的NAR資訊條目)改變為該第一預定值諸如一(例如Need_AER=1)。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第7圖依據本發明一實施例繪示如第2A圖以及第2B圖所示之該方法的一寫入加多階段GC控制方案。如上所述,第一GC階段的操作可以在背景進行,同時記憶體控制器110正在因應該至少一主機指令而將來自主機裝置50的資料寫入NV記憶體120。舉例來說,主機裝置50可以具有一持續寫入(sustain write)行為(標示為「寫入」以求簡明,其中向下的箭頭可以代表寫入請求及/或寫入操作)以容許記憶體裝置100進行某些其它操作。記憶體控制器110(例如微處理器112)可藉助於該多階段GC管理來進行記憶體裝置100的存取控制,以防止資料錯誤的問題並進一步防止該至少一主機觸發操作的任何延遲。舉例來說,藉由在多個持續寫入周期(例如,由用虛線所描繪的矩形所指出的周期)的任一持續寫入周期中的一寫入階段(writing phase)之後的一空閒階段(idle phase)進行最多到一預定數量的GC操作諸如十個GC操作(標示為「10GC」以求簡明),記憶體控制器110(例如微處理器112)可以防止主機觸發寫入操作的任何延遲。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第8圖依據本發明一實施例繪示針對寫入每秒輸入/輸出(input/output per second,IOPS)的改進。記憶體控制器110(例如微處理器112)可以如第7圖所示地在該多個持續寫入周期中的任一持續寫入周期內的空閒階段進行最多到該預
定數量的GC操作諸如十個GC操作,而不會延遲任何主機觸發寫入操作。相較於不依靠該多階段GC管理的一單階段GC控制方案,依據該方法(例如該多階段GC控制方案)來操作的記憶體控制器110(例如微處理器112)可以保持寫入IOPS相對於時間(標示為“t”以求簡明)的較大平均值,並防止寫入IOPS下降到零。舉例來說,用粗線描繪的曲線可對應於該單階段GC控制方案並且指出寫入IOPS有時會下降到零,而用細線描繪的曲線可對應於該多階段GC控制方案並且指出寫入IOPS的平均值比該單段階GC控制方案的平均值要大,而且不會下降到零。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
根據某些實施例,該方法的一測試準備程序可以包含某些額外步驟以供在第2A圖所示步驟S10之前執行,並且可用以測試記憶體裝置100(例如其內的記憶體控制器110)是否被正確地實現以依據該方法來操作,其中可以在步驟S10之前***該測試準備過程,而不改變第2A圖以及第2B圖所示的原本的步驟諸如步驟S10、S11等以及包含原本的步驟的相關局部工作流程(例如迴圈)。在該測試準備程序中,記憶體控制器110(例如微處理器112)可以進行以下操作:(1)在第一GC階段的開始時間點之前的一時間段內,因應該複數個主機指令中的一組主機指令(例如主機寫入指令),記憶體控制器110(例如微處理器112)可以將該組主機指令所載有(carry)的資料發送到NV記憶體120中,以供被編程到該複數個資料區塊中,其中該資料的資料量為大到足以觸發GC程序;(2)在第一GC階段的開始時間點之前的該時間段內,因應該複數個主機指令中的多個第一主機指令(例如主機讀取指令),記憶體控制器110(例如微處理器112)可以向NV記憶體120發送多個第一讀取指令諸如大量的簡單讀取指令,以分別嘗試從該複數個區塊中的一第一區塊(例如該源區塊諸如SBLK#0)的至少一頁面多次讀取第一資料,其中對於該多次中的除了最後一次之外的每一次,從該第一區塊的該至少一頁面讀取該第一資料是成功的,並且對於該多次中的最後一
次,從該第一區塊的該至少一頁面讀取該第一資料是不成功的;以及(3)在第一GC階段的開始時間點之前的該時間段內,因應從該第一區塊的該至少一頁面讀取該第一資料不成功,記憶體控制器110(例如微處理器112)可以向NV記憶體120發送至少一第二讀取指令諸如一或多個進階讀取指令,以重新嘗試從該第一區塊的該至少一頁面讀取該第一資料;其中該第一區塊的該至少一頁面中的該第一資料可能已經變為損壞的,例如,由於與該多個第一讀取指令對應的讀取操作的某一影響/效應(effect)(例如讀取干擾),但本發明不以此為限。
在該測試準備程序之後,基於第2A圖以及第2B圖所示的原本的步驟諸如步驟S10、S11等,記憶體控制器110(例如微處理器112)可以進一步進行以下操作:(1)在第一GC階段的期間,當在該第一時間點進入步驟S11時,記憶體控制器110(例如微處理器112)可以向NV記憶體120發送該第一簡單讀取指令以嘗試從該源區塊(例如該源區塊諸如SBLK#0)讀取該第一有效資料,尤其,成功地從該源區塊(例如該源區塊諸如SBLK#0)的至少一第一頁面讀取該第一有效資料;(2)在第一GC階段的期間,當後來接續地進入步驟S12和S13A時,記憶體控制器110可以將該第一有效資料發送到NV記憶體120的內部緩衝器120B中,以供被編程到該目的地區塊中,其中該第一區塊是用來作為該源區塊(例如該源區塊諸如SBLK#0),且該源區塊的該至少一第一頁面與該第一區塊的該至少一頁面不同;(3)在第一GC階段的期間,當在該第二時間點進入步驟S11時,記憶體控制器110可以向NV內存120發送該第二簡單讀取指令以嘗試從該源區塊(例如該源區塊諸如SBLK#0)讀取該第二有效資料(例如可能已變為損壞的該第一資料);(4)在第一GC階段的期間,當後來接續地進入步驟S12和S13B時,因應從該源區塊讀取該第二有效資料(例如可能已變為損壞的該第一資料)不成功,記憶體控制
器110可防止重新嘗試該源區塊讀取該第二有效資料(例如上述第一資料),以等待在第一GC階段之後的第二GC階段的期間進一步處理;以及(5)在第一GC階段的結束時間點以及第二GC階段的開始時間點之間的該時間段內,當重新進入步驟S16以等待啟動第二GC階段的機會時,因應該複數個主機指令中的至少一其它主機指令,記憶體控制器110(例如微處理器112)可以從該目的地區塊讀取該第一有效資料並嘗試從該源區塊讀取該第二有效資料(例如可能已經變為損壞的該第一資料);但本發明不以此為限。另外,針對該多階段GC管理,重新嘗試從該源區塊讀取該第二有效資料(例如可能已經變為損壞的該第一資料)可以延後到第二GC階段。如此一來,讀取該第一有效資料的操作和嘗試讀取該第二有效資料(例如上述第一資料)的操作分別在不同的區塊諸如該目的地區塊和該源區塊上進行,這可以指出記憶體裝置100(例如其內的記憶體控制器110)已經被正確地實現以依據該方法來操作。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10:電子系統
50:主機裝置
52:處理器
54:電源供應電路
100:記憶體裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體(ROM)
112C:程式代碼
114:控制邏輯電路
116:隨機存取記憶體(RAM)
116B:資料緩衝器
118:傳輸介面電路
120:非揮發性(NV)記憶體
120B:內部緩衝器
122-1,122-2~122-N:非揮發性(NV)記憶體元件
STBL:源區塊需要進階讀取(NAR)表
RB:讀取緩衝器
WB:寫入緩衝器
Claims (20)
- 一種藉助於一多階段(multi-phase)垃圾收集(garbage collection,GC)管理以進行一記憶體裝置的存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該方法包含:在一第一垃圾收集階段的期間,向該非揮發性記憶體發送一第一簡單讀取指令以嘗試從該複數個區塊中的一第一源區塊讀取一第一有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第一有效資料成功,將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中;在該第一垃圾收集階段的期間,向該非揮發性記憶體發送一第二簡單讀取指令,以嘗試從該第一源區塊讀取一第二有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第二有效資料不成功,防止重新嘗試從該第一源區塊讀取該第二有效資料;在該第一垃圾收集階段的一結束時間點和該第一垃圾收集階段之後的一第二垃圾收集階段的一開始時間點之間的一時間段內,完成至少一主機觸發(host-triggered)操作,其中該控制器因應來自一主機裝置的複數個主機指令中的至少一主機指令而進行該至少一主機觸發操作;以及在該第二垃圾收集階段的期間,重新嘗試從該第一源區塊讀取該第二有效資料。
- 如申請專利範圍第1項所述之方法,其中多個簡單讀取指令包含該第一簡單讀取指令以及該第二簡單讀取指令;以及防止重新嘗試從該第一源區塊讀取該第二有效資料更包含:防止向該非揮發性記憶體發送任一進階(advanced)讀取指令,其中該任一進階讀取指令以及該多個簡單讀取指令中的任一簡單讀取指令分別屬於不同類型的讀取指令。
- 如申請專利範圍第2項所述之方法,其中該任一進階讀取指令代表在多種類型的讀取指令中的比該任一簡單讀取指令造成該非揮發性記憶體的更多讀取處理時間的任一讀取指令。
- 如申請專利範圍第1項所述之方法,其中多個簡單讀取指令包含該第一簡單讀取指令以及該第二簡單讀取指令;以及重新嘗試從該第一源區塊讀取該第二有效資料更包含:向該非揮發性記憶體發送至少一進階(advanced)讀取指令以嘗試從該第一源區塊讀取該第二有效資料,其中該至少一進階讀取指令以及該多個簡單讀取指令中的任一簡單讀取指令分別屬於不同類型的讀取指令。
- 如申請專利範圍第4項所述之方法,其中該至少一進階讀取指令包含在多種類型的讀取指令中的比該任一簡單讀取指令造成該非揮發性記憶體的更多讀取處理時間的至少一讀取指令。
- 如申請專利範圍第1項所述之方法,更包含:在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第二有效資料不成功,向該非揮發性記憶體發送一第三簡單讀取指令以嘗試從該第一源區塊讀取一第三有效資料;以及在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第三有效資料成功,將該第三有效資料發送到該非揮發性記憶體的該內部緩衝器中,以供被編程到該第一目的地區塊中。
- 如申請專利範圍第1項所述之方法,其中當該控制器因應該至少一主機指令而正在將資料從該主機裝置寫入該非揮發性記憶體時,該第一垃圾收集階段的操作是在背景進行。
- 如申請專利範圍第7項所述之方法,其中該第二垃圾收集階段的操作是在該記憶體裝置沒有因應來自該主機裝置的任一主機指令而寫入任一資料的情況下進行的。
- 一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該控制器包含:一處理電路,用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體;其中:在一第一垃圾收集階段的期間,該控制器向該非揮發性記憶體發送 一第一簡單讀取指令以嘗試從該複數個區塊中的一第一源區塊讀取一第一有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第一有效資料成功,該控制器將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中;在該第一垃圾收集階段的期間,該控制器向該非揮發性記憶體發送一第二簡單讀取指令,以嘗試從該第一源區塊讀取一第二有效資料;在該第一垃圾收集階段的期間,因應從該第一源區塊讀取該第二有效資料不成功,該控制器防止重新嘗試從該第一源區塊讀取該第二有效資料;在該第一垃圾收集階段的一結束時間點和該第一垃圾收集階段之後的一第二垃圾收集階段的一開始時間點之間的一時間段內,該控制器完成至少一主機觸發(host-triggered)操作,其中該控制器因應來自該主機裝置的該複數個主機指令中的至少一主機指令而進行該至少一主機觸發操作;以及在該第二垃圾收集階段的期間,該控制器重新嘗試從該第一源區塊讀取該第二有效資料。
- 一種包含如申請專利範圍第9項所述之控制器之記憶體裝置,其中該記憶體裝置包含:該非揮發性記憶體,用以儲存信息;以及該控制器,耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作。
- 一種藉助於一多階段(multi-phase)垃圾收集(garbage collection,GC)管理以進行一記憶體裝置的存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該方法包含:在一第一垃圾收集階段的一開始時間點之前的一時間段內,因應來自一主機裝置的複數個主機指令中的多個第一主機指令,向該非揮發性記憶體發送多個第一讀取指令以分別嘗試從該複數個區塊中的一第一區塊的至少一頁面多次讀取一第一資料,其中對於該多次中的除了最後一次之外的每一次,從該第一區塊的該至少一頁面讀取該第一資料是成功的,並且對於該多次中的該最後一次,從該第一區塊的該至少一頁面讀取該第一資料是不成功的;在該第一垃圾收集階段的該開始時間點之前的該時間段內,因應從該第一區塊的該至少一頁面讀取該第一資料不成功,向該非揮發性記憶體發送至少一第二讀取指令以重新嘗試從該第一區塊的該至少一頁面讀取該第一資料;在該第一垃圾收集階段的期間,從一第一源區塊的至少一第一頁面讀取一第一有效資料,並將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中,其中該第一區塊是用來作為該第一源區塊,且該第一源區塊的該至少一第一頁面與該第一區塊的該至少一頁面不同;在該第一垃圾收集階段的期間,嘗試從該第一源區塊讀取該第一資料,且 因應從該第一源區塊讀取該第一資料不成功,防止重新嘗試從該第一源區塊讀取該第一資料,以等待在該第一垃圾收集階段之後的一第二垃圾收集階段的期間進一步處理;以及在該第一垃圾收集階段的一結束時間點和該第二垃圾收集階段的一開始時間點之間的一時間段內,因應該複數個主機指令中的至少一其它主機指令,從該目的地區塊讀取該第一有效資料並嘗試從該第一源區塊讀取該第一資料。
- 如申請專利範圍第11項所述之方法,其中該至少一第二讀取指令以及該多個第一讀取指令中的任一第一讀取指令分別屬於不同類型的讀取指令。
- 如申請專利範圍第12項所述之方法,其中該多個第一讀取指令代表多個簡單讀取指令,而該至少一第二讀取指令代表至少一進階(advanced)讀取指令。
- 如申請專利範圍第13項所述之方法,其中該至少一進階讀取指令代表在多種類型的讀取指令中的比該多個簡單讀取指令中的任一簡單讀取指令造成該非揮發性記憶體的更多讀取處理時間的至少一讀取指令。
- 如申請專利範圍第11項所述之方法,其中重新嘗試從該第一源區塊讀取該第一資料被延後到該第二垃圾收集階段。
- 如申請專利範圍第11項所述之方法,其中從該第一源區塊的該至 少一第一頁面讀取該第一有效資料更包含:向該非揮發性記憶體發送至少一第三讀取指令以嘗試從該第一源區塊的該至少一第一頁面讀取該第一有效資料,其中從該第一源區塊的該至少一第一頁面讀取該第一有效資料是成功的。
- 如申請專利範圍第16項所述之方法,其中嘗試從該第一源區塊讀取該第一資料更包含:向該非揮發性記憶體發送一第四讀取指令以嘗試從該第一源區塊讀取該第一資料。
- 如申請專利範圍第16項所述之方法,其中該至少一第二讀取指令和該多個第一讀取指令中的任一第一讀取指令分別屬於不同類型的讀取指令;以及該至少一第三讀取指令與該任一第一讀取指令屬於同一類型的讀取指令。
- 一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該至少一非揮發性記憶體元件包含複數個區塊,該控制器包含:一處理電路,用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體;其中:在一第一垃圾收集階段的一開始時間點之前的一時間段內,因應來自該主機裝置的該複數個主機指令中的多個第一主機指令,該 控制器向該非揮發性記憶體發送多個第一讀取指令以分別嘗試從該複數個區塊中的一第一區塊的至少一頁面多次讀取一第一資料,其中對於該多次中的除了最後一次之外的每一次,從該第一區塊的該至少一頁面讀取該第一資料是成功的,並且對於該多次中的該最後一次,從該第一區塊的該至少一頁面讀取該第一資料是不成功的;在該第一垃圾收集階段的該開始時間點之前的該時間段內,因應從該第一區塊的該至少一頁面讀取該第一資料不成功,該控制器向該非揮發性記憶體發送至少一第二讀取指令以重新嘗試從該第一區塊的該至少一頁面讀取該第一資料;在該第一垃圾收集階段的期間,該控制器從一第一源區塊的至少一第一頁面讀取一第一有效資料,並將該第一有效資料發送到該非揮發性記憶體的一內部緩衝器中,以供被編程到該複數個區塊中的一第一目的地區塊中,其中該第一區塊是用來作為該第一源區塊,且該第一源區塊的該至少一第一頁面與該第一區塊的該至少一頁面不同;在該第一垃圾收集階段的期間,該控制器嘗試從該第一源區塊讀取該第一資料,且因應從該第一源區塊讀取該第一資料不成功,防止重新嘗試從該第一源區塊讀取該第一資料,以等待在該第一垃圾收集階段之後的一第二垃圾收集階段的期間進一步處理;以及在該第一垃圾收集階段的一結束時間點和該第二垃圾收集階段的一開始時間點之間的一時間段內,因應該複數個主機指令中的至少一其它主機指令,該控制器從該目的地區塊讀取該第一有效 資料並嘗試從該第一源區塊讀取該第一資料。
- 一種包含如申請專利範圍第19項所述之控制器之記憶體裝置,其中該記憶體裝置包含:該非揮發性記憶體,用以儲存信息;以及該控制器,耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/531,780 US11809314B2 (en) | 2021-11-21 | 2021-11-21 | Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management |
US17/531,780 | 2021-11-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202321922A TW202321922A (zh) | 2023-06-01 |
TWI805449B true TWI805449B (zh) | 2023-06-11 |
Family
ID=79316847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111126680A TWI805449B (zh) | 2021-11-21 | 2022-07-15 | 藉助於多階段垃圾收集管理以進行記憶體裝置的存取控制的方法、用於記憶體裝置的控制器、以及記憶體裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11809314B2 (zh) |
EP (1) | EP4184331A1 (zh) |
CN (1) | CN116150042A (zh) |
TW (1) | TWI805449B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061511B2 (en) * | 2015-09-23 | 2018-08-28 | Hanan Potash | Computing device with frames/bins structure, mentor layer and plural operand processing |
TW202036300A (zh) * | 2018-09-07 | 2020-10-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW202101221A (zh) * | 2019-06-17 | 2021-01-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1702338B1 (en) | 2003-12-30 | 2009-02-18 | SanDisk Corporation | Robust data duplication and improved update method in a multibit non-volatile memory |
US7441071B2 (en) * | 2006-09-28 | 2008-10-21 | Sandisk Corporation | Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
KR102602694B1 (ko) * | 2015-12-15 | 2023-11-15 | 삼성전자주식회사 | 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 |
US10901892B2 (en) * | 2017-05-18 | 2021-01-26 | Western Digital Technologies, Inc. | Locality grouping during garbage collection with flush of buffered write data upon completion of garbage collection operation |
US10175892B1 (en) | 2017-06-23 | 2019-01-08 | Amazon Technologies, Inc. | Adaptive read algorithm for a nonvolatile medium |
US10572391B2 (en) * | 2018-02-09 | 2020-02-25 | Western Digital Technologies, Inc. | Methods and apparatus for implementing a logical to physical address mapping in a solid state drive |
WO2019178845A1 (zh) * | 2018-03-23 | 2019-09-26 | 华为技术有限公司 | 一种存储介质垃圾回收方法、存储介质和程序产品 |
KR102656172B1 (ko) * | 2018-03-28 | 2024-04-12 | 삼성전자주식회사 | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 |
JP7042716B2 (ja) * | 2018-07-26 | 2022-03-28 | キオクシア株式会社 | 記憶装置及び記憶制御方法 |
KR20210065356A (ko) * | 2019-11-27 | 2021-06-04 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
WO2022204928A1 (en) | 2021-03-30 | 2022-10-06 | Yangtze Memory Technologies Co., Ltd. | Memory controller with read error handling |
-
2021
- 2021-11-21 US US17/531,780 patent/US11809314B2/en active Active
-
2022
- 2022-01-12 EP EP22151205.6A patent/EP4184331A1/en active Pending
- 2022-07-15 TW TW111126680A patent/TWI805449B/zh active
- 2022-09-30 CN CN202211207655.7A patent/CN116150042A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061511B2 (en) * | 2015-09-23 | 2018-08-28 | Hanan Potash | Computing device with frames/bins structure, mentor layer and plural operand processing |
TW202036300A (zh) * | 2018-09-07 | 2020-10-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW202101221A (zh) * | 2019-06-17 | 2021-01-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US11809314B2 (en) | 2023-11-07 |
EP4184331A1 (en) | 2023-05-24 |
CN116150042A (zh) | 2023-05-23 |
TW202321922A (zh) | 2023-06-01 |
US20230161698A1 (en) | 2023-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI643066B (zh) | 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置 | |
CN110908925B (zh) | 高效能垃圾收集方法以及数据存储装置及其控制器 | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US9280460B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
TWI601060B (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201945934A (zh) | 用以在記憶裝置中進行存取管理的方法、相關記憶裝置及其控制器以及相關電子裝置 | |
TWI789817B (zh) | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
TWI684860B (zh) | 用來進行讀取加速之方法以及資料儲存裝置及其控制器 | |
TWI446349B (zh) | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 | |
TW201308080A (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
CN113360303A (zh) | 进行数据存储管理以提升数据可靠度的方法以及相关设备 | |
TW201329999A (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN111984462B (zh) | 无预警断电复原管理方法、记忆装置、控制器及电子装置 | |
US10346040B2 (en) | Data merging management method based on data type, memory storage device and memory control circuit unit | |
US10191659B2 (en) | Buffer memory management method, memory control circuit unit and memory storage device | |
TWI805445B (zh) | 借助額外實體位址資訊來進行記憶體裝置之存取控制的方法、記憶體裝置以及記憶體裝置的控制器 | |
TWI805449B (zh) | 藉助於多階段垃圾收集管理以進行記憶體裝置的存取控制的方法、用於記憶體裝置的控制器、以及記憶體裝置 | |
TWI653531B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202125206A (zh) | 記憶體管理方法與記憶體裝置 | |
TWI831623B (zh) | 借助序號分配時序控制來進行記憶體裝置之存取管理的方法、記憶體裝置、電子裝置以及記憶體裝置的控制器 | |
TW202013183A (zh) | 高效能垃圾收集方法以及資料儲存裝置及其控制器 | |
TWI852615B (zh) | 藉助於專用資訊控制來進行記憶體裝置的垃圾收集管理之方法、記憶體控制器、記憶體裝置以及電子裝置 | |
TWI823649B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置 | |
US20180196722A1 (en) | Data Storage Device and Data Maintenance Method Thereof |