TWI792892B - 鏡像資料至非揮發性記憶體之控制器之寫入快取中 - Google Patents

鏡像資料至非揮發性記憶體之控制器之寫入快取中 Download PDF

Info

Publication number
TWI792892B
TWI792892B TW111103286A TW111103286A TWI792892B TW I792892 B TWI792892 B TW I792892B TW 111103286 A TW111103286 A TW 111103286A TW 111103286 A TW111103286 A TW 111103286A TW I792892 B TWI792892 B TW I792892B
Authority
TW
Taiwan
Prior art keywords
write
data
volatile memory
host
controller
Prior art date
Application number
TW111103286A
Other languages
English (en)
Other versions
TW202301128A (zh
Inventor
羅門 亞歷山大 普雷特卡
提摩西 J 費雪
阿達爾伯托 基勒摩 岩尼斯
尼可拉奧斯 帕潘德瑞奧
拉度 伊恩 史都依卡
查拉蘭波斯 波茲堤斯
尼可拉斯 伊恩諾
Original Assignee
美商萬國商業機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商萬國商業機器公司 filed Critical 美商萬國商業機器公司
Publication of TW202301128A publication Critical patent/TW202301128A/zh
Application granted granted Critical
Publication of TWI792892B publication Critical patent/TWI792892B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本發明提供一種資料儲存系統,其在大容量非揮發性記憶體中提供持久儲存。該資料儲存系統之一控制器接收一主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之一第一寫入快取及揮發性記憶體中之一鏡像第二寫入快取兩者中。該控制器將該主機寫入資料自該第二寫入快取而非該第一寫入快取離台至該大容量非揮發性記憶體。該控制器藉由參考該第二寫入快取來服務請求該大容量非揮發性記憶體內之資料再定位的再定位寫入命令。服務該等再定位寫入命令包括將再定位寫入資料緩存於該第二寫入快取中而非該第一寫入快取中及將該再定位寫入資料自該第二寫入快取離台至該大容量非揮發性記憶體。

Description

鏡像資料至非揮發性記憶體之控制器之寫入快取中
本公開大體上係有關於資料儲存,且更特定而言,係關於非揮發性記憶體系統。又更特定而言,本公開係有關於非揮發性記憶體系統,該等記憶體系統包括將主機寫入資料緩存於揮發性記憶體及非揮發性記憶體兩者中之鏡像寫入快取。
反及閘(NAND)快閃記憶體為將每記憶體胞元之一或多個資料位元儲存為電晶體之浮動閘極或類似電荷捕獲結構上之電荷的電可程式化及可抹除非揮發性記憶體技術。在典型的實施方案中,NAND快閃記憶體陣列係以記憶體之實體區塊(亦被稱作「抹除區塊」)組織,該等實體區塊中之每一者包括多個實體頁面,該等頁面各自又含有多個記憶體胞元。藉助於用以存取記憶體胞元之字線及位元線的配置,快閃記憶體陣列通常可在頁面基礎上進行程式化,但在區塊基礎上進行抹除。
如此項技術中已知的,必須在用新資料程式化之前抹除NAND快閃記憶體之區塊。NAND快閃記憶體胞元之區塊係藉由將高的正抹除電壓脈衝施加至選定區塊之p井主體區域及將待抹除之記憶體胞元之所有字線偏壓至接地來抹除。施加抹除脈衝促進了電子穿隧離開偏壓至接地之記憶體胞元之浮動閘極,以使該等浮動閘極得到淨正電荷且因此使記憶體胞元之電壓臨限值朝向已抹除狀態轉變。每一抹除脈衝通常繼之以抹除驗證操作,該抹除驗證操作讀取抹除區塊以判定抹除操作是否成功,例如藉由驗證抹除區塊中少於臨限數目個記憶體胞元尚未被成功抹除。一般而言,抹除脈衝繼續施加至抹除區塊,直至抹除驗證操作成功或直至已使用預定數目個抹除脈衝(亦即,抹除脈衝預算耗盡)。
NAND快閃記憶體胞元可藉由將正的高程式化電壓施加至待程式化之記憶體胞元之字線及將中間通過電壓施加至待抑制程式化之同一串中之記憶體胞元來程式化。施加程式化電壓會導致電子穿隧至浮動閘極上以將其狀態自初始已抹除狀態改變至具有淨負電荷之已程式化狀態。在程式化之後,通常在讀取驗證操作中讀取已程式化頁面,以確保程式化操作成功,例如藉由驗證已程式化頁面中少於臨限數目個記憶體胞元含有位元錯誤。一般而言,將程式化及讀取驗證操作應用於頁面,直至讀取驗證操作成功或直至已使用預定數目個程式化脈衝(亦即,程式化脈衝預算耗盡)。
將資料以邏輯頁面之方式寫入至NAND快閃記憶體,該等邏輯頁面各自包括例如4 kB或16 kB的資料。記憶體之給定實體頁面可儲存資料之一或多個邏輯頁面。隨著資料被更新,儲存過時資料之邏輯頁面變得無效,從而使實體區塊具有含有有效資料及無效資料之實體頁面的混合物。最終,NAND快閃記憶體之控制器經由稱為廢棄項目收集之程序來恢復由保存無效資料之實體頁面所消耗的儲存容量。在廢棄項目收集中,仍有效的資料自第一實體區塊重新寫入至一或多個先前已抹除之實體區塊中。可接著抹除第一實體區塊以準備重新程式化。
在基於NAND快閃記憶體之企業級儲存系統中,例如在電力故障之狀況下防止資料丟失至關重要。因此,在此類資料儲存系統中,快閃記憶體控制器可僅在與主機寫入命令相關聯之主機寫入資料已持久保存於非揮發性儲存器之後才應答主機寫入命令。在第一種先前技術設計中,快閃記憶體控制器最初將傳入主機寫入資料緩存於寫入快取中,該寫入快取係以低成本揮發性記憶體技術實施,諸如動態隨機存取記憶體(DRAM)。快閃記憶體控制器接著將主機寫入資料自DRAM寫入快取離台(destage)至NAND快閃記憶體中。一旦與主機寫入命令相關聯之所有寫入資料持久保存於NAND快閃記憶體中(且因此在斷電之情況下受保護免於資料丟失),快閃記憶體控制器便將應答發送至主機,從而釋放主機中經分配以追蹤主機寫入命令之完成的資源。結合NAND快閃記憶體中之廢棄項目(garbage)收集而進行的再定位寫入在離台回至NAND快閃記憶體之前類似地緩存於DRAM寫入快取中。此第一架構具有簡單、相對較低成本設計之優點,但具有寫入效能相對較差之缺點,此係因為至主機之應答被延遲,直至主機寫入資料持久保存於NAND快閃記憶體中。
為了提供與此第一種先前技術設計相比改善的寫入效能,第二種先前技術設計實施非揮發性寫入快取,例如以電池支援式DRAM、磁阻式RAM (MRAM)、鐵阻式RAM (FRAM)、相變記憶體(PCM)或其他非揮發性記憶體技術。藉由此設計,寫入效能顯著改善,此係因為一旦相關聯之主機寫入資料被寫入至寫入快取中且因此在主機寫入資料自非揮發性寫入快取完全離台至NAND快閃記憶體之前,快閃記憶體控制器可將主機寫入命令之應答發送至主機。結合廢棄項目收集而進行的再定位寫入在被離台至NAND快閃記憶體之前類似地首先寫入至非揮發性寫入快取中。此第二種先前技術架構提供比第一種先前技術架構顯著更佳的寫入效能,但由於在揮發性記憶體(例如,DRAM)中實施寫入快取對比在非揮發性記憶體(例如,MRAM)中實施寫入快取之間的價格差異,如此做需要權衡更大的複雜度及更高的成本。
鑒於先前技術,本申請案瞭解到,提供一種改善之資料儲存系統將為有用且合乎需要的,該資料儲存系統實施非揮發性寫入快取,該非揮發性寫入快取准許在將相關聯之主機寫入資料離台至NAND快閃記憶體之前應答主機寫入命令,同時亦降低用以實施非揮發性寫入快取以實現給定等級之寫入效能的記憶體之成本。
在至少一個實施例中,提供一種管理在大容量非揮發性記憶體中提供持久儲存之資料儲存系統的方法。該資料儲存系統之控制器接收主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之第一寫入快取及揮發性記憶體中之鏡像第二寫入快取兩者中。該控制器將主機寫入資料自第二寫入快取而非第一寫入快取離台至大容量非揮發性記憶體。該控制器藉由參考第二寫入快取來服務請求大容量非揮發性記憶體內之資料再定位的再定位寫入命令。服務再定位寫入命令包括將再定位寫入資料緩存於第二寫入快取中而非第一寫入快取中及將再定位寫入資料自第二寫入快取離台至大容量非揮發性記憶體。
在至少一個實施例中,一種資料儲存系統包括大容量非揮發性記憶體之控制器。該控制器經組態以接收主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之第一寫入快取及揮發性記憶體中之鏡像第二寫入快取兩者中。該控制器將主機寫入資料自第二寫入快取而非第一寫入快取離台至大容量非揮發性記憶體。該控制器藉由參考第二寫入快取來服務請求大容量非揮發性記憶體內之資料再定位的再定位寫入命令。服務再定位寫入命令包括將再定位寫入資料緩存於第二寫入快取中而非第一寫入快取中及將再定位寫入資料自第二寫入快取離台至大容量非揮發性記憶體。
在至少一個實施例中,一種程式產品包括儲存裝置及儲存於儲存裝置中之程式碼,該程式碼可由大容量非揮發性記憶體之控制器執行。在經執行時,該程式碼使該控制器接收主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之第一寫入快取及揮發性記憶體中之鏡像第二寫入快取兩者中。該控制器將主機寫入資料自第二寫入快取而非第一寫入快取離台至大容量非揮發性記憶體。該控制器藉由參考第二寫入快取來服務請求大容量非揮發性記憶體內之資料再定位的再定位寫入命令。服務再定位寫入命令包括將再定位寫入資料緩存於第二寫入快取中而非第一寫入快取中及將再定位寫入資料自第二寫入快取離台至大容量非揮發性記憶體。
在至少一個實施例中,在完成將主機寫入資料離台至大容量非揮發性記憶體之前,控制器基於主機寫入資料緩存於第一寫入快取中而將主機寫入命令之應答發送至主機。
在至少一個實施例中,大容量非揮發性記憶體包括快閃記憶體,且控制器在快閃記憶體中之廢棄項目收集期間產生再定位寫入命令中之至少一些。
在至少一個實施例中,控制器基於完成將主機寫入資料離台至大容量非揮發性記憶體而在第一寫入快取中釋放主機寫入命令之主機寫入資料。
在至少一個實施例中,控制器將主機寫入資料在第一寫入快取中之至少一第一位置記錄於邏輯至實體轉譯資料結構之條目中。基於將主機寫入資料離台至大容量非揮發性記憶體,控制器更新條目以指示大容量非揮發性記憶體中之不同的第二位置。
在至少一個實施例中,控制器另外將主機寫入資料在第二寫入快取中之第三位置記錄於邏輯至實體轉譯資料結構之條目中。
在至少一個實施例中,大容量非揮發性記憶體包括第一寫入快取。
在至少一個實施例中,控制器在第一寫入快取中及第二寫入快取中維持各自對應於複數個不同寫入熱度中之各別者的複數個緩衝器。
參看諸圖且特定地參看 1A,示出例示性資料處理環境 100之高階方塊圖,該資料處理環境包括具有鏡像寫入快取之資料儲存系統 120,如本文中進一步所描述。如所展示,資料處理環境 100包括一或多個主機,諸如具有處理指令及資料之一或多個處理器 104的處理器系統 102。處理器系統 102可另外包括本端儲存器 106(例如,DRAM或磁碟),該本端儲存器可儲存由處理器 104執行之處理的程式碼、運算元及/或執行結果。在各種實施例中,處理器系統 102可為例如行動計算裝置(諸如,智慧型手機或平板電腦)、膝上型或桌上型個人電腦系統、伺服器電腦系統(諸如,可自國際商用機器公司購得之POWER®系列中之一者)或大型電腦系統。處理器系統 102亦可為使用諸如以下各者之各種處理器的嵌入式處理器系統:ARM®、POWER、Intel x86或與記憶體快取、記憶體控制器、本端儲存器、I/O匯流排集線器等組合之任何其他處理器。
每一處理器系統 102進一步包括經由I/O通道 110直接耦接(亦即,無任何介入裝置)或間接耦接(亦即,經由至少一個中間裝置)至資料儲存系統 120之輸入/輸出(I/O)配接器 108。在各種實施例中,I/O通道 110可使用已知或未來開發之通信協定中之任一者或組合,包括例如光纖通道(FC)、乙太網路FC (FCoE)、網際網路小型電腦系統介面(iSCSI)、InfiniBand、傳送控制協定/網際網路協定(TCP/IP)、周邊組件快速互連(PCIe)、快速非揮發性記憶體(NVMe)、網狀架構NVMe (NVMe over Fabrics;NVMe-oF)等。經由I/O通道 110傳達之I/O命令包括處理器系統 102藉以向資料儲存系統 120請求資料之主機讀取命令,及處理器系統 102藉以請求在資料儲存系統 120中儲存資料之主機寫入命令。
在所示出的實施例中,資料儲存系統 120包括多個介面節點 122,資料儲存系統 120經由該等介面節點而經由I/O通道 110接收I/O命令且對該等命令作出回應。每一介面節點 122耦接至多個廉價磁碟冗餘陣列(RAID)控制器 124中之每一者以便促進容錯及負載平衡。RAID控制器 124中之每一者又耦接(例如,藉由PCIe匯流排)至多個快閃卡 126中之每一者,在此實例中包括NAND快閃記憶體儲存媒體。在其他實施例中,可使用其他有損儲存媒體。
1B描繪根據第一實施例之 1A的資料儲存系統 120之快閃卡 126的更詳細方塊圖。在此實施例中,快閃卡 126包括充當快閃卡 126與RAID控制器 124之間的介面的閘道器 130。閘道器 130耦接至通用處理器(GPP) 132,該通用處理器可經組態(例如,藉由程式碼)以執行各種管理功能,諸如預處理由閘道器 130接收到之I/O命令、排程快閃卡 126對I/O命令之服務及/或執行其他管理功能。GPP 132耦接至GPP記憶體 134(例如,DRAM),該記憶體可方便地緩存由GPP 132在其處理過程中創建、參考及/或修改之資料。
閘道器 130進一步耦接至至少一個快閃記憶體控制器 140,該至少一個快閃記憶體控制器控制大容量非揮發性記憶體系統,諸如NAND快閃記憶體系統 150。快閃記憶體控制器(FC) 140服務I/O命令,例如藉由存取NAND快閃記憶體系統 150以自NAND快閃記憶體系統 150讀取所請求資料或將所請求資料寫入至該快閃記憶體系統中,如下文進一步所論述。在各種實施例中,快閃記憶體控制器 140可例如由特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)實施。在快閃記憶體控制器 140由FPGA實施之實施例中,GPP 132可在資料儲存系統 120之起動期間程式化及組態快閃記憶體控制器 140
快閃記憶體控制器 140耦接至快閃記憶體控制器記憶體,該快閃記憶體控制器記憶體在此實施例中包括快閃記憶體控制器非揮發性記憶體 142及快閃記憶體控制器揮發性記憶體 144兩者。快閃記憶體控制器非揮發性記憶體 142可例如由MRAM、FRAM、PCM、電池支援之DRAM或其他非揮發性記憶體技術實施,且快閃記憶體控制器揮發性記憶體 144可由諸如DRAM之相對廉價的揮發性記憶體技術實施。如 1B中進一步所指示,快閃記憶體控制器非揮發性記憶體 142包括第一主機寫入快取 146a,該第一主機寫入快取用於緩存與自諸如處理器系統 102之主機接收到之主機寫入命令相關聯的主機寫入資料。主機寫入快取 146a之內容係藉由快閃記憶體控制器 140鏡像於在快閃記憶體控制器揮發性記憶體 144中實施之第二主機寫入快取 146b中。如熟習此項技術者在閱讀本說明書後將瞭解,主機寫入快取 146a146b可進一步附接至同一記憶體匯流排以使得能夠使用單個命令將經鏡像資料寫入至兩個寫入快取146a、146b中。
快閃記憶體控制器 140實施快閃記憶體轉譯層(FTL),該快閃記憶體轉譯層提供邏輯至實體位址轉譯以使得能夠存取NAND快閃記憶體系統 150內之特定記憶體位置。一般而言,由快閃記憶體控制器 140自主機裝置(諸如,處理器系統 102)接收到之I/O命令含有待存取(讀取或寫入)資料所在的邏輯區塊位址(LBA),且若為主機寫入命令,則待將主機寫入資料寫入至資料儲存系統 120。I/O命令亦可指定待存取之資料的量(或大小)。取決於由資料儲存系統 120所支援之協定及特徵,亦可傳達其他資訊。如熟習此項技術者所已知,在NAND快閃記憶體之一些實施方案中,可由主機讀取或主機寫入命令存取之最小資料粒度固定於單個實體頁面之大小,例如16千位元組(KB)。由主機裝置提供之LBA對應於邏輯位址空間內之邏輯頁面,該邏輯頁面可具有例如4 kB或16 kB之大小。此邏輯頁面可進一步藉由快閃記憶體控制器 140壓縮使得每一實體頁面可儲存一或多個邏輯頁面。FTL將LBA轉譯成指派給NAND快閃記憶體系統 150中之對應實體位置的實體位址。快閃記憶體控制器 140可將邏輯位址與實體位址之間的映射儲存於邏輯至實體轉譯資料結構中,諸如邏輯至實體轉譯(LPT)表 152,該資料結構可方便地儲存於快閃記憶體控制器揮發性記憶體 144中。
1B中進一步所展示,在所描繪之實施例中,快閃記憶體控制器揮發性記憶體 144另外包括待再定位於NAND快閃記憶體系統 150內之再定位寫入緩衝器 148,該再定位寫入緩衝器緩存由廢棄項目收集程序收集之資料。此外,快閃記憶體控制器揮發性記憶體 144可視情況包括讀取快取 156,該讀取快取用於緩存來自NAND快閃記憶體系統 150之最近已由及/或常常由主機讀取命令請求的資料。快閃記憶體控制器 140亦可在快閃記憶體控制器揮發性記憶體 144內儲存臨限電壓(Vth)移位資料 154,該移位資料用以校準NAND快閃記憶體系統 150之各種子集(例如,頁面群組)的讀取臨限電壓,以及其他管理資料結構 158,該等管理資料結構儲存管理資料,諸如位元錯誤率(BER)及其他統計資料、程式化/抹除(P/E)循環計數器、日誌登載資訊等。
在各種實施例中,NAND快閃記憶體系統 150可呈許多形式。現參看 2 至圖 5,描繪根據一個實施例之NAND快閃記憶體系統 150內的實體記憶體之例示性配置。
2中所展示,NAND快閃記憶體系統 150可由四十(40)個可個別定址的NAND快閃記憶體儲存裝置形成。在所示出實例中,快閃記憶體儲存裝置M0a至M19b中之每一者採用能夠每胞元儲存兩個或多於兩個位元之板安裝式快閃記憶體模組的形式。在一個特定實施例中,記憶體模組由四層胞元(QLC)NAND快閃記憶體實施,該快閃記憶體經組態為以混合分層配置操作,該配置包括以QLC模式操作之實體區塊之第一集區及以單層胞元(SLC)模式操作之實體區塊之第二集區。四十個NAND快閃記憶體模組經配置成兩個模組之二十個群組:(M0a, M0b)至(M19a, M19b)。出於實體定址方案之目的,兩個模組之每一群組形成「單工通道」(有時亦被稱作「通道」),使得NAND快閃記憶體系統 150包括二十個通道或單工通道(Lane0至Lane19)。
在較佳實施例中,個別單工通道中之每一者具有將其耦接至相關聯之快閃記憶體控制器 140的各別相關聯匯流排。因此,藉由將其通信引導至特定通信匯流排中之一者,快閃記憶體控制器 140可將其通信引導至記憶體模組之單工通道中之一者。因為用於給定單工通道之每一通信匯流排獨立於用於其他單工通道之通信匯流排,所以快閃記憶體控制器 140可跨越各種通信匯流排同時發佈命令且發送或接收資料,從而使得快閃記憶體控制器 140能夠同時或幾乎同時存取對應於個別單工通道之快閃記憶體模組。
現參看 3,示出可用以實施 2之快閃記憶體模組M0a至M19b中之任一者的快閃記憶體模組 300之例示性實施例。如 3中所展示,由快閃記憶體模組 300所提供之實體儲存位置進一步再分為可經由晶片賦能(CE)定址及/或識別之實體位置。在 3之實例中,將每一快閃記憶體晶片 300之實體記憶體劃分成四個晶片賦能(CE0、CE1、CE2及CE3),每一晶片賦能具有由快閃記憶體控制器 140確證以使得能夠存取對應CE內之實體記憶體位置或自該實體記憶體位置進行存取的各別CE線。每一CE又再分成各自具有兩個或四個平面(例如,Plane0及Plane1)之多個晶粒(例如,Die0及Die1)。每一平面表示實體區塊之集合,因為快閃記憶體晶片之實體佈局,該等實體區塊彼此實體上相關聯且利用共同電路系統(例如,I/O緩衝器)以用於執行各種操作(諸如,讀取及寫入操作)。
4 至圖 5中進一步所展示,可用以實施 3之快閃記憶體模組 300內的平面中之任一者的例示性平面 400包括例如實體記憶體之512、2048或4096個區塊。一些製造商在此標稱區塊計數中包括額外區塊,此係因為一些區塊可能會由於製造缺陷而提前失效。一般而言,區塊為通常以實體方式彼此相關聯之實體頁面之集合。此關聯使得區塊被定義為可在NAND快閃記憶體系統 150內抹除之實體儲存位置之最小粒度。在 5之實施例中,每一區塊 500包括幾百或數千個頁面,例如512、1024或4096個實體頁面,其中實體頁面被定義為用於讀取及寫入存取之最小可個別定址的資料單元。在例示性系統中,資料之每一實體頁面具有用於資料儲存之共同容量(例如,16 kB)加上用於頁面後設資料之額外儲存空間。因此,資料通常係在逐頁基礎上寫入至NAND快閃記憶體系統 150或自該系統讀取,但係在逐區塊基礎上抹除。
因為由資料儲存系統 120實施之FTL將可用於主機裝置之邏輯位址空間與NAND快閃記憶體系統 150內之實體記憶體隔離,所以NAND快閃記憶體系統 150之大小無需等於呈現給主機裝置之邏輯位址空間之大小。在大多數實施例中,呈現大小比總可用實體記憶體小之邏輯位址空間為有益的(亦即,過度佈建NAND快閃記憶體系統 150為有益的)。以此方式過度佈建確保了當充分利用邏輯位址空間時,即使存在如上文所描述之一定量之無效資料,實體記憶體資源為亦可用的。除尚未回收之無效資料以外,即使存在記憶體失敗及由使用資料保護方案(諸如,錯誤校正碼(ECC)、循環冗餘檢查(CRC)及同位檢查)所帶來的記憶體額外負荷,亦可使用過度佈建之空間以確保存在足夠邏輯空間。
在一些實施例中,將資料以一次一個實體頁面之方式寫入至NAND快閃記憶體系統 150。在需要更穩健的錯誤恢復的其他實施例中,將資料寫入至NAND快閃記憶體系統 150之相關聯實體頁面的群組,其在本文中被稱作「頁面等量磁碟區」。在一個實施例中,頁面等量磁碟區之所有頁面與不同單工通道相關聯以達成高寫入頻寬。因為在許多實施方案中,最小抹除單元為區塊,所以可將多個頁面等量磁碟區分組成區塊等量磁碟區600,如 6A中所展示,其中區塊等量磁碟區中之每一區塊與不同單工通道相關聯。當建置區塊等量磁碟區時,可選擇單工通道之任何自由區塊,但較佳地,同一區塊等量磁碟區內之所有區塊具有相同或類似的健康等級。應注意。區塊選擇可進一步限制為來自同一平面、晶粒及/或晶片賦能。區塊等量磁碟區之長度可變化,但在NAND快閃記憶體系統 150包括20個單工通道之一個實施例中,每一區塊等量磁碟區包括兩個至二十個區塊,其中每一區塊來自不同單工通道。
一旦已自每一單工通道選擇區塊且形成區塊等量磁碟區,頁面等量磁碟區便較佳地由來自區塊等量磁碟區中之所有區塊的具有相同頁碼之實體頁面形成。雖然儲存至NAND快閃記憶體系統 150中之各種頁面等量磁碟區的長度可變化,但在一個實施例中,每一頁面等量磁碟區包括寫入資料之一個至二十個資料頁面(通常由主機裝置提供)。在另一實施例中,頁面等量磁碟區包括寫入資料之一個至十九個資料頁面以及用以儲存寫入資料之資料保護資訊的一個額外頁面(「資料保護頁面」)。舉例而言, 6B說明包括 N個資料頁面(亦即,Dpage00至Dpage N - 1)及一個資料保護頁面(亦即,Ppage N)之例示性頁面等量磁碟區 610。資料保護頁面可置放於含有非引退頁面之頁面等量磁碟區之任何單工通道上,但通常針對同一區塊等量磁碟區之所有頁面等量磁碟區而置放於同一單工通道上以最少化後設資料資訊。如所示出,添加資料保護頁面需要針對同一區塊等量磁碟區之所有頁面等量磁碟區同時執行廢棄項目收集。在區塊等量磁碟區之廢棄項目收集完成之後,區塊等量磁碟區可分解,且每一區塊可置放至相關即用(RTU)佇列中,如下文所解釋。
在已描述資料儲存系統 120之例示性實施例的一般實體結構及操作後,現參看 7描述資料儲存系統 120之某些操作態樣,該圖為示出根據一個實施例之由GPP 132及/或快閃記憶體控制器 140使用的快閃記憶體管理功能及資料結構之高階資料流程圖。
如上文所提及,資料儲存系統 120通常不允許外部裝置(例如,主機)直接定址及/或存取NAND快閃記憶體系統 150內之實體記憶體位置。實情為,資料儲存系統 120通常經組態以向主機裝置呈現一或多個邏輯卷,該等邏輯卷各自具有連續的邏輯位址空間,因此允許主機裝置自邏輯位址空間內之邏輯區塊位址(LBA)讀取資料及將資料寫入至該等邏輯區塊位址,同時准許各種層級之控制器(例如,RAID控制器 124、快閃記憶體控制器 140及GPP 132)中之一或多者控制與各種LBA相關聯之資料實際上駐留於包含NAND快閃記憶體系統 150之實體記憶體位置中何處。以此方式,可智慧地管理及最佳化NAND快閃記憶體系統 150之效能及壽命。在所示出的實施例中,每一快閃記憶體控制器 140使用邏輯至實體位址轉譯資料結構,諸如邏輯至實體轉譯(LPT)表 152,對LBA之相關聯集合執行邏輯至實體位址轉譯,該轉譯資料結構可儲存於相關聯之快閃記憶體控制器揮發性記憶體 144中。應注意,供應至快閃記憶體控制器 140之邏輯位址可不同於最初供應至資料儲存系統 120之邏輯位址,此係因為資料儲存系統 120內之各種組件可執行外部裝置與快閃記憶體控制器 140之間的位址轉譯操作。
如將瞭解,在快閃記憶體控制器揮發性記憶體 144中實施鏡像主機寫入快取 146b減少了快閃記憶體控制器揮發性記憶體 144中用於諸如LPT 152之其他後設資料的可用容量。在至少一些實施例中,LPT 152在快閃記憶體控制器揮發性記憶體 144中之佔用空間可藉由快閃記憶體控制器 140實施分頁機制來減小。在此等實施例中,在NAND快閃記憶體系統 150中維護LPT條目之備份儲存器,且快閃記憶體控制器 140視需要將LPT條目分頁至備份儲存器及自備份儲存器分頁。
在GPP 132上運行之快閃記憶體管理程式碼追蹤NAND快閃記憶體系統 150之準備好用於即用(RTU)佇列 700中的已抹除區塊,該等佇列可儲存於例如GPP記憶體 134中。在所描繪之實施例中,在GPP 132上運行之快閃記憶體管理程式碼較佳每平面或通道維護一或多個RTU佇列 700,且待再使用之每一已抹除區塊之識別符經排入對應於其通道之RTU佇列 700中之一者中。舉例而言,在一個實施例中,對於每一通道,RTU佇列 700針對複數個區塊健康等級中之每一者包括各別RTU佇列 700。在各種實施方案中,已發現每平面2至8個RTU佇列 700(及對應數目個區塊健康等級)便足夠。
建置區塊等量磁碟區功能 702(例如,由在GPP 132上運行之快閃記憶體管理程式碼執行)自排入RTU佇列 700中之已抹除區塊建構新的區塊等量磁碟區。如上文參看 6A所提及,區塊等量磁碟區較佳由駐留於不同通道中具有相同或類似健康狀況(亦即,預期的剩餘使用壽命)之區塊形成,此意謂區塊等量磁碟區可方便地藉由建置區塊等量磁碟區功能 702自不同平面或通道之對應RTU佇列 700抽取新區塊等量磁碟區之每一區塊來建構。接著將新的區塊等量磁碟區排入佇列至快閃記憶體控制器 140以供資料置放功能 704進行資料置放。
資料置放功能 704包括開放區塊佇列 706,該等佇列追蹤由建置區塊等量磁碟區功能 702建構之區塊等量磁碟區中的未完全程式化區塊之識別符。如 7中進一步所示出,資料置放功能 704另外包括用於將主機寫入資料寫入至鏡像主機寫入快取 146a146b中且用於將再定位寫入資料寫入至再定位寫入緩衝器 148中之快取引擎 714。資料置放功能 704亦包括用於將資料自主機寫入快取 146b及再定位寫入緩衝器 148寫入至在開放區塊佇列 706中識別之NAND快閃記憶體系統 150之開放區塊中的離台引擎 716
回應於自諸如處理器系統 102之主機接收到的主機寫入命令,快閃記憶體控制器 140之資料置放功能 704藉由參考LPT表 152判定在主機寫入命令中指示之目標LBA當前是否映射至NAND快閃記憶體系統 150中之實體頁面,且若如此,則改變當前與目標LBA相關聯之每一資料頁面之狀態以指示其不再有效。快取引擎 714另外將主機寫入命令之主機寫入資料寫入至主機寫入快取 146a146b兩者中,較佳並行地使用單個操作(例如,主機寫入資料僅遍歷記憶體匯流排一次)。一旦對主機寫入快取 146a之更新完成,快取引擎 714便可立即經由I/O通道 110將應答訊息(「Ack」)提供至發佈主機。快取引擎 714亦更新用於由主機寫入命令指示之LBA的LPT 704中之條目,以指向主機寫入資料在主機寫入快取 146a及/或主機寫入快取 146b中之位置。
為了服務主機寫入命令,資料置放功能 704另外在必要時分配頁面等量磁碟區以將主機寫入命令之寫入資料及來自為主機寫入命令之目標之現有頁面等量磁碟區(若存在)的任何未更新的資料(亦即,若寫入請求小於邏輯頁面,則存在需要以讀取-修改-寫入方式處置之仍有效的資料)儲存,及/或將主機寫入命令之寫入資料及來自為主機寫入命令之目標之現有頁面等量磁碟區(若存在)的任何未更新(亦即,仍有效)的資料儲存至剩有自由空間之已分配頁面等量磁碟區。可自已分配以保存資料之區塊等量磁碟區或自新區塊等量磁碟區分配頁面等量磁碟區。在較佳實施例中,頁面等量磁碟區分配可基於可用於分配之區塊的健康狀況以及寫入資料之LBA的「熱度」(亦即,所估計或所量測的寫入存取頻率)。資料置放功能 704之離台引擎 716接著針對來自主機寫入快取 146b之每一碼字將主機寫入資料及相關聯後設資料(例如,CRC及ECC值)寫入至在開放區塊佇列 706中識別之已分配頁面等量磁碟區的頁面中,且另外視需要將同位資訊寫入至已分配頁面等量磁碟區之資料保護頁面中。離台引擎 716亦更新LPT表 152以使主機寫入資料之LBA與用以儲存寫入資料之NAND快閃記憶體 150中的實體頁之位址相關聯。此後,快閃記憶體控制器 140可藉由參考LPT表 152存取來自NAND快閃記憶體 150之資料以服務主機讀取命令。
一旦區塊等量磁碟區中之所有頁面皆已被寫入或區塊等量磁碟區以其他方式關閉,快閃記憶體控制器 140便將區塊等量磁碟區之識別符置放於已佔用區塊佇列 708中之一者上,在GPP 132上運行之快閃記憶體管理程式碼利用該識別符來追蹤區塊以用於廢棄項目收集及其他管理功能。如上文所提及,經由寫入程序,頁面無效,且因此NAND快閃記憶體系統 150之部分變得未使用。相關聯快閃記憶體控制器 140(及/或GPP 132)最終需要經由廢棄項目收集器 720所執行之廢棄項目收集來回收此空間。廢棄項目收集器 720基於數個因素選擇用於廢棄項目收集之特定區塊等量磁碟區,該等因素包括例如區塊等量磁碟區內之實體區塊之健康狀況及實體區塊內有多少資料無效。在至少一個實施例中,對整個區塊等量磁碟區執行廢棄項目收集,且廢棄項目收集器 720向資料置放功能 704之快取引擎 714發佈再定位寫入命令,以將廢棄項目收集區塊等量磁碟區中仍有效之資料再定位至另一區塊等量磁碟區。在實施混合分層配置之NAND快閃記憶體系統 150中,該混合分層配置包括以較高儲存密度模式(例如,QLC模式)操作之實體區塊之第一集區及以較低儲存密度模式(例如,SLC模式)操作之實體區塊之第二集區,需要准許廢棄項目收集資料自以任一模式操作之舊區塊寫入至以任一模式操作之新區塊。因此,由廢棄項目收集器 720發佈之再定位寫入命令可指定目標區塊等量磁碟區之所要操作模式,以支援例如QLC至QLC、SLC至QLC、SLC至SLC或QLC至SLC廢棄項目收集。
7中進一步所指示,由GPP 132及/或快閃記憶體控制器 140執行之快閃記憶體管理功能另外包括:損耗均衡器 722,其請求再定位保存於已佔用區塊佇列 708中之區塊等量磁碟區中的資料,以均衡跨越區塊之損耗;及集區平衡器 724,其請求再定位保存於某些區塊等量磁碟區中之資料以允許重組態構成區塊中之一些或全部,從而以不同操作模式(例如,QLC或SLC)操作。
基於自廢棄項目收集器 720、損耗均衡器 722及集區平衡器 724接收到之再定位寫入命令,快取引擎 714將來自舊區塊等量磁碟區之再定位寫入資料儲存至快閃記憶體控制器揮發性記憶體 144中之再定位寫入緩衝器 148中。此外,快取引擎 714可更新LPT表 152以另外指向再定位寫入緩衝器 148中之位置。一旦所有仍有效的資料已自舊區塊等量磁碟區移動且寫入至在開放區塊佇列 706中識別之已分配頁面等量磁碟區的新頁面,離台引擎 716便更新LPT表 152以移除資料之邏輯位址與實體位址之間的當前關聯,且使經再定位資料之LBA與用以儲存經再定位資料之NAND快閃記憶體 150中的實體頁面之位址相關聯。接著,分解舊區塊等量磁碟區,因此將區塊解除關聯,且將區塊之識別符重新排入抹除佇列 710中,該等抹除佇列可每通道包括一個抹除佇列 710。快閃記憶體控制器 140之區塊抹除功能 712接著抹除先前形成已分解區塊等量磁碟區之區塊中之每一者,且在管理資料結構 158中遞增該區塊之相關聯程式化/抹除(P/E)循環計數。基於每一已抹除區塊之健康量度,每一已抹除區塊被引退(亦即,不再用以儲存使用者資料)或替代地藉由將區塊之識別符置放於相關聯GPP記憶體 134中之適當即用(RTU)佇列 700上來準備再使用。
現參看 8,描繪根據一個實施例之例示性方法的高階邏輯流程圖,控制器藉由該方法服務非揮發性記憶體系統中之主機寫入命令。所示出程序可例如在資料儲存系統 120之操作期間藉由控制器(例如,GPP 132及/或快閃記憶體控制器 140)以硬體、韌體、軟體或其組合執行。除非另外特定陳述,否則操作以邏輯次序而非以嚴格時間次序呈現,且在一些實施例中,操作可以不同於所呈現之次序執行或同時執行。
8之程序在區塊 800處開始且接著繼續進行至區塊 802,該區塊說明控制器監視主機寫入命令自諸如處理器系統 102之主機的接收。主機寫入命令包括或具有與其相關聯的待寫入LBA及主機寫入資料。回應於偵測到主機寫入命令,控制器使LPT 152中之LBA的條目(若存在)無效。程序自區塊 804較佳並行地繼續進行至區塊 806808。區塊 806說明控制器將主機寫入之主機寫入資料緩存於快閃記憶體控制器非揮發性記憶體 142中之主機寫入快取 146a中。區塊 808描繪控制器另外將主機寫入之主機寫入資料鏡像於快閃記憶體控制器揮發性記憶體 144中之主機寫入快取 146b中。
緩存主機寫入資料所需的主機寫入快取 146a146b之最小大小隨著內部並行度及所支援寫入串流之數目以及所支援寫入頻寬及平均寫入潛時而增加。對於具有給定寫入頻寬及潛時特性之控制器,可依據實體頁面大小、單工通道及平面之數目、未處理頁面等量磁碟區之最大數目以及所支援寫入串流及分格之數目而計算最小大小。舉例而言,對於實施16 kB個頁面、20個單工通道(其中將4個平面分組成一等量磁碟區)及4個未處理字線(亦即,16個頁面等量磁碟區)之NAND快閃記憶體系統 150,主機寫入快取 146a146b之最小大小可判定為16 kB×20×4×16=20 MB/串流/分格。
參看 9,示出根據一個實施例之例示性資料結構,其中控制器支援將主機寫入資料及再分配寫入資料分離至不同寫入串流中以及寫入串流內之讀取熱度分離兩者。在此例示性實施例中,快閃記憶體控制器 140實施主機寫入資料之一個寫入串流及再定位寫入資料之兩個寫入串流。每一寫入串流包括5個寫入分格,包括用於SLC資料之一個寫入分格及用於QLC資料之四個寫入分格。用於QLC資料之四個寫入分格針對每一QLC頁面類型包括各別分格,亦即,下部頁面(LP)、上部頁面(UP)、額外頁面(XP)及頂部頁面(TP)。快閃記憶體控制器 140基於相對讀取熱度而將資料導引至各種QLC寫入分格,例如其中將最冷QLC寫入資料緩存於QLC TP緩衝器中,將接下來的較熱QLC寫入資料緩存於QLC XP緩衝器中,將接下來的較熱QLC寫入資料緩存於QLC UP緩衝器中,且將最熱QLC寫入資料緩存於QLC LP緩衝器中。雖然各種熱度分格之實施方案增加了主機寫入快取 146a146b之最小大小,但減小寫入串流及/或熱度分格之數目以減小主機寫入快取 146a146b之佔用空間並非較佳的,此係因為整體寫入放大將增加或讀取熱度分離效率將顯著降低。
返回至 8之區塊 806,基於主機寫入命令之主機寫入資料緩存於主機寫入快取 146a中,控制器經由I/O通道 110將主機寫入命令之應答發送至起始主機(區塊 810)。如上文所提及,應答訊息表示主機寫入資料之持久儲存,且因此向主機發信分配給主機寫入命令之資源可被釋放以供再使用。 8之程序自區塊 810808繼續進行且在區塊 812處重新接合,該區塊描繪控制器更新LPT 152中用於主機寫入命令之LBA的條目以指向主機寫入資料在寫入快取 146a146b中之一者或兩者中的位置。結果,在至少一些實施例中,控制器可開始服務向寫入快取 146b請求主機寫入資料之主機讀取命令。
在區塊 814處,根據資料至主機寫入快取 146b中之緩衝器的指派,控制器起始將主機寫入資料自寫入快取 146b(且不自寫入快取 146a)離台至NAND快閃記憶體系統 150中。藉由避免將主機寫入資料自寫入快取 146a離台,在正常狀況下對快閃記憶體控制器非揮發性記憶體 142之存取限於每主機寫入命令單次寫入。在較佳實施例中,主機寫入資料之離台係在「背景」中執行,而控制器並不忙於服務其他主機I/O命令或執行其他管理功能。控制器監視主機寫入資料自寫入快取 146b至NAND快閃記憶體系統 150之離台的完成(區塊 816)。回應於偵測到主機寫入資料之離台完成,控制器可釋放駐留於主機寫入快取 146a中之主機寫入資料的複本(使其無效),此係因為主機寫入資料持久地儲存於NAND快閃記憶體系統 150中(區塊 818)。應注意,主機寫入資料之複本可保留於主機寫入快取 146b中以用於資料之未來主機讀取。此例如在主機寫入快取 146b之大小大於主機寫入快取 146a之大小時為有益的。替代地,主機寫入快取 146b中之主機寫入資料亦可與主機寫入快取 146a中之複本同時被釋放。釋放或保留主機寫入快取 146b中之主機寫入資料的決策可取決於例如所實施之快取策略、將在未來讀取主機寫入資料之可能性及/或主機寫入快取 146b之可用大小。此後, 8之程序在區塊 820處終止。
儘管在 8中未明確展示,但熟習此項技術者將瞭解,若在正服務主機寫入命令時對快閃卡 126或資料儲存系統 120斷電,將避免資料丟失。在彼狀況下,主機寫入資料可藉由主機自主機佇列或藉由控制器自緩存於寫入快取 146a中之持久複本恢復。然而,在不存在斷電時進行正常操作的狀況下,所揭示程序包括快閃卡 126內的以下四個內部資料移動: 1. 至非揮發性寫入快取 146a中之一次寫入; 2. 至鏡像揮發性寫入快取 146b中之一次寫入; 3. 自鏡像揮發性寫入快取 146b之一次讀取;及 4. 至NAND快閃記憶體系統 150中之一次寫入。 如將瞭解,相較於先前技術解決方案,將對非揮發性寫入快取 146a之存取限於每主機寫入命令一次寫入存取大大地減少了非揮發性寫入快取 146a所需之頻寬,且因此降低非揮發性寫入快取 146a之最小所需大小(及成本)。替代地,非揮發性寫入快取中所節省的空間亦可用以增加寫入串流之數目且因此改善熱度分離。
現參看 10,描繪根據一個實施例之例示性方法的高階邏輯流程圖,控制器藉由該方法服務非揮發性記憶體系統中之再定位寫入命令。所示出程序可例如在資料儲存系統 120之操作期間藉由控制器(例如,GPP 132及/或快閃記憶體控制器 140)以硬體、韌體、軟體或其組合執行。同樣,操作以邏輯次序而非以嚴格時間次序呈現,且在一些實施例中,操作可以不同於所呈現之次序執行或同時執行。
10之程序在區塊 1000處開始且接著繼續進行至區塊 1002,該區塊說明控制器監視再定位寫入命令例如自廢棄項目收集器 720、損耗均衡器 722或集區平衡器 724的接收。再定位寫入命令指定NAND快閃記憶體 150中之一或多個實體區塊(例如,區塊等量磁碟區),再定位寫入資料待自該一或多個實體區塊再定位。回應於偵測到再定位寫入命令,控制器在區塊1004處將來自實體區塊之一或多個仍有效的資料頁面(在本文中被稱作「再定位寫入資料」)自NAND快閃記憶體 150讀取至快閃記憶體控制器揮發性記憶體 144中之再定位寫入緩衝器 148中(區塊 1004)。應注意,控制器避免將再定位寫入資料中之任一者緩存於快閃記憶體控制器非揮發性記憶體 142中。
在區塊 1006處,控制器起始將再定位寫入資料自再定位寫入緩衝器 148離台至在開放區塊佇列 706中識別之NAND快閃記憶體系統 150中之區塊等量磁碟區中。在較佳實施例中,再定位寫入資料之離台係在「背景」中執行,而控制器並不忙於服務其他主機I/O命令或執行其他管理功能。控制器監視再定位寫入資料自再定位寫入緩衝器 148至NAND快閃記憶體系統 150之離台的完成(區塊 1008)。回應於偵測到再定位寫入資料之離台完成,控制器檢查所有仍有效的頁面是否已自正再定位之區塊或區塊等量磁碟區再定位(區塊 1010)。若存在更多頁面待再定位,則控制器返回至區塊 1004以讀取接下來的一或多個仍有效的頁面,如上文所描述。當未剩餘仍有效的頁面時,控制器將供讀取再定位寫入資料之源區塊的識別符排入抹除佇列 710中,且可釋放駐留於再定位寫入緩衝器 148中之再定位寫入資料的複本(使其失效)(區塊 1012)。在區塊 1012處,控制器另外更新LPT 152中之相關條目以指向NAND快閃記憶體 150中之新儲存位置。此後, 10之程序在區塊 1014處終止。
在正常操作(亦即,未斷電)之狀況下,用於處置再定位寫入命令之所揭示程序包括快閃卡 126內之以下四個內部資料移動: 1. 自NAND快閃記憶體系統 150之一次讀取; 2. 至快閃記憶體控制器揮發性記憶體 144中之再定位寫入緩衝器 148中的一次寫入; 3. 自再定位寫入緩衝器 148之一次讀取;及 4. 至NAND快閃記憶體系統 150中之一次寫入。 如將瞭解,相較於先前技術解決方案,在服務再定位寫入命令時消除對非揮發性寫入快取 146a之任何存取大大地減少了非揮發性寫入快取 146a所需之頻寬,且因此降低非揮發性寫入快取 146a之最小所需大小(及成本)。替代地,非揮發性寫入快取中所節省的空間亦可用以增加寫入串流之數目且因此改善熱度分離。
現參看 11,示出根據第二實施例之 1A的資料儲存系統之例示性快閃卡的方塊圖。如由類似參考編號所指示,所示出之快閃卡 126 '包括如先前關於 8 10所描述而使用的鏡像主機寫入快取 146a146b。然而,快閃卡 126 '省略分離的快閃記憶體控制器非揮發性記憶體 142,且替代地在NAND快閃記憶體系統 150中之大容量非揮發性記憶體內實施主機寫入快取 146a。由於省略了快閃記憶體控制器非揮發性記憶體,此第二實施例可以較低成本實現,但由於至NAND快閃記憶體系統 150之寫入的較長潛時,通常展現較低寫入效能。此較長寫入潛時可部分地藉由在較快SLC儲存層(亦即,經組態為以SLC模式或在專用SLC快閃記憶體中操作之QLC區塊)中排他地實施主機寫入快取 146a來改進。
如已描述,在至少一個實施例中,一種資料儲存系統在大容量非揮發性記憶體中提供持久儲存。該資料儲存系統之控制器接收主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之第一寫入快取及揮發性記憶體中之鏡像第二寫入快取兩者中。該控制器將主機寫入資料自第二寫入快取而非第一寫入快取離台至大容量非揮發性記憶體。該控制器藉由參考第二寫入快取來服務請求大容量非揮發性記憶體內之資料再定位的再定位寫入命令。服務再定位寫入命令包括將再定位寫入資料緩存於第二寫入快取中而非第一寫入快取中及將再定位寫入資料自第二寫入快取離台至大容量非揮發性記憶體。
在至少一個實施例中,在完成將主機寫入資料離台至大容量非揮發性記憶體之前,控制器基於主機寫入資料緩存於第一寫入快取中而將主機寫入命令之應答發送至主機。
在至少一個實施例中,大容量非揮發性記憶體包括快閃記憶體,且控制器在快閃記憶體中之廢棄項目收集期間產生再定位寫入命令中之至少一些。
在至少一個實施例中,控制器基於完成將主機寫入資料離台至大容量非揮發性記憶體而在第一寫入快取中釋放主機寫入命令之主機寫入資料。
在至少一個實施例中,控制器將主機寫入資料在第一寫入快取中之至少一第一位置記錄於邏輯至實體轉譯資料結構之條目中。基於將主機寫入資料離台至大容量非揮發性記憶體,控制器更新條目以指示大容量非揮發性記憶體中之不同的第二位置。
在至少一個實施例中,控制器另外將主機寫入資料在第二寫入快取中之第三位置記錄於邏輯至實體轉譯資料結構之條目中。
在至少一個實施例中,大容量非揮發性記憶體包括第一寫入快取。
在至少一個實施例中,控制器在第一寫入快取中及第二寫入快取中維持各自對應於複數個不同寫入熱度中之各別者的複數個緩衝器。
藉由將對非揮發性寫入快取之頻寬需求降低至正常狀況下之每主機寫入命令單次寫入,所揭示實施例改善快閃記憶體控制器非揮發性記憶體的大小與其對資料儲存系統之成本的貢獻之間的設計權衡。特定而言,在一些實施例中,所揭示實施例使得能夠維持給定數目個寫入串流及足夠寫入頻寬,同時減小非揮發性寫入快取之大小(且因此降低成本)。替代地,在其他實施例中,可利用給定大小之非揮發性寫入快取以相同成本實施產生較大效能之額外寫入串流。在另外其他實施例中,可在以相同的總寫入頻寬實施較大數目個寫入串流的相同達成一些成本降低。
本發明可為一種系統、一種方法及/或一種電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或多個媒體),其上具有電腦可讀程式指令以使得處理器執行本發明之態樣。
電腦可讀儲存媒體可為有形裝置,其可持留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為例如但不限於電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非詳盡清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型緊密光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟碟、機械編碼裝置(諸如,上面記錄有指令之凹槽中之打孔卡或凸起結構)及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由電線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一計算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別計算/處理裝置內之電腦可讀儲存媒體中。
用於進行本發明之操作的電腦可讀程式指令可為組譯程式指令、指令集合架構(ISA)指令、機器指令、機器相依指令、微碼、韌體指令、狀態設定資料或以一或多種程式設計語言之任何組合編寫的原始程式碼或目標程式碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及諸如「C」程式設計語言或類似程式設計語言之習知程序性程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立套裝軟體執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後一情境中,遠端電腦可經由包括區域網路(LAN)或廣域網路(WAN)之任何類型之網路連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括例如可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路系統可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,以及流程圖說明及/或方塊圖中之區塊的組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,使得經由該電腦或其他可程式化資料處理設備之處理器執行的指令創建用於實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作的手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在該電腦、其他可程式化設備或其他裝置上執行以產生電腦實施程序,使得在該電腦、其他可程式化設備或其他裝置上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施方案的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施經指定邏輯功能之一或多個可執行指令。在一些替代實施方案中,區塊中所提及的功能可能不以諸圖中所提及的次序發生。舉例而言,取決於所涉及的功能性,連續展示之兩個區塊實際上可實質上同時執行,或該等區塊可有時以相反次序執行。亦將注意,可藉由執行指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統來實施方塊圖及/或流程圖說明之每一區塊以及方塊圖及/或流程圖說明中之區塊的組合。
雖然已特定地展示了本發明,如參考一或多個較佳實施例所描述,但熟習此項技術者將理解,在不脫離隨附申請專利範圍之精神及範圍的情況下,可在本發明中進行形式及細節上之各種改變。舉例而言,儘管已關於包括指導某些功能之快閃記憶體控制器的資料儲存系統描述了態樣,但應理解,本發明可替代地實施為包括儲存裝置之程式產品,該儲存裝置儲存可由處理器處理以執行此等功能或導致執行此等功能的程式碼。如本文中所使用,「儲存裝置」特定地定義為僅包括法定製品且不包括傳輸媒體本身、暫時性傳播信號本身及能量形式本身。
此外,儘管已描述包括NAND快閃記憶體之使用的實施例,但應瞭解,本發明之實施例亦可與其他類型之非揮發性隨機存取記憶體(NVRAM)一起使用,該非揮發性隨機存取記憶體包括例如相變記憶體(PCM)及其組合。
上文所描述之諸圖及下文之特定結構及功能的書面描述並非呈現以限制申請人已發明之內容的範圍或隨附申請專利範圍之範圍。確切而言,提供諸圖及書面描述以教示任何熟習此項技術者製作及使用尋求專利保護的發明。熟習此項技術者將瞭解,為清楚及理解起見,並未描述或展示本發明之商業實施例的所有特徵。熟習此項技術者亦將瞭解,併有本發明之態樣的實際商業實施例之開發將需要眾多實施方案特定決策以達成開發者對商業實施例之最終目標。此等實施方案特定決策可包括且可能並不限於符合系統相關、企業相關、政府相關約束及其他約束,該等約束可能因特定實施方案、位置及時間而變化。雖然開發者之努力在絕對意義上可能係複雜且耗時的,但對於得益於本公開之熟習此項技術者而言,此類努力將為常規任務。必須理解,本文中所揭示及教示之本發明容易具有眾多及各種修改以及替代形式。最後,諸如但不限於「一」之單數術語的使用並不意欲限制項目之數目。
100: 資料處理環境 102: 處理器系統 104: 處理器 106: 本端儲存器 108: 輸入/輸出(I/O)配接器 110: I/O通道 120: 資料儲存系統 122: 介面節點 124: 廉價磁碟冗餘陣列(RAID)控制器 126: 快閃卡 126': 快閃卡 130: 閘道器 132: 通用處理器(GPP) 134: GPP記憶體 140: 快閃記憶體控制器 142: 快閃記憶體控制器非揮發性記憶體 144: 快閃記憶體控制器揮發性記憶體 146a: 第一主機寫入快取/鏡像主機寫入快取/非揮發性寫入快取 146b: 第二主機寫入快取/鏡像主機寫入快取/鏡像揮發性寫入快取 148: 再定位寫入緩衝器 150: NAND快閃記憶體系統/NAND快閃記憶體 152: 邏輯至實體轉譯(LPT)表 154: 臨限電壓(Vth)移位資料 156: 讀取快取 158: 管理資料結構 300: 快閃記憶體模組/快閃記憶體晶片 400: 平面 500: 區塊 600: 區塊等量磁碟區 610: 頁面等量磁碟區 700: 即用(RTU)佇列 702: 建置區塊等量磁碟區功能 704: 資料置放功能 706: 開放區塊佇列 708: 已佔用區塊佇列 712: 區塊抹除功能 714: 快取引擎 716: 離台引擎 720: 廢棄項目收集器 722: 損耗均衡器 724: 集區平衡器 800: 區塊 802: 區塊 804: 區塊 806: 區塊 808: 區塊 810: 區塊 812: 區塊 814: 區塊 816: 區塊 818: 區塊 820: 區塊 1000: 區塊 1002: 區塊 1004: 區塊 1006: 區塊 1008: 區塊 1010: 區塊 1012: 區塊 1012: 區塊 1014: 區塊 CE0: 晶片賦能 CE1: 晶片賦能 CE2: 晶片賦能 CE3: 晶片賦能 Die0: 晶粒 Diel: 晶粒 Dpage00~Dpage N-1: 資料頁面 M0a~M19a: 快閃記憶體儲存裝置 M0b~M19b: 快閃記憶體儲存裝置 lane0~lane19: 通道或單工通道 Plane0: 平面 Plane1: 平面 Ppage N: 資料保護頁面
1A為根據一個實施例之資料處理環境的高階方塊圖;
1B為根據第一實施例之 1A的資料儲存系統之例示性快閃卡的更詳細方塊圖;
2 至圖 5示出根據本公開之NAND快閃記憶體系統內的實體記憶體之例示性配置;
6A描繪根據本公開之區塊等量磁碟區的例示性實施方案;
6B描繪根據本公開之頁面等量磁碟區的例示性實施方案;
7為根據一個實施例之由快閃記憶體控制器使用的快閃記憶體管理功能及資料結構之高階資料流程圖;
8為根據一個實施例之例示性方法的高階邏輯流程圖,控制器藉由該方法服務非揮發性記憶體系統中之主機寫入命令;
9示出根據一個實施例之例示性資料結構,其中控制器支援將主機寫入資料及再分配寫入資料分離至不同寫入串流中以及寫入串流內之讀取熱度分離兩者;
10為根據一個實施例之例示性方法的高階邏輯流程圖,控制器藉由該方法服務非揮發性記憶體系統中之再定位寫入命令;及
11為根據第二實施例之 1A的資料儲存系統之例示性快閃卡的方塊圖。
800: 區塊 802: 區塊 804: 區塊 806: 區塊 808: 區塊 810: 區塊 812: 區塊 814: 區塊 816: 區塊 818: 區塊 820: 區塊

Claims (24)

  1. 一種在大容量非揮發性記憶體中提供儲存之一資料儲存系統中的方法,該方法包含: 該資料儲存系統之一控制器接收一主機寫入命令,且將相關聯之主機寫入資料緩存於非揮發性記憶體中之一第一寫入快取及揮發性記憶體中之一鏡像第二寫入快取兩者中; 該控制器將該主機寫入資料自該第二寫入快取而非該第一寫入快取離台至該大容量非揮發性記憶體;及 該控制器藉由參考該第二寫入快取來服務請求該大容量非揮發性記憶體內之資料再定位的再定位寫入命令,該服務包括將與再定位寫入命令相關聯之再定位寫入資料緩存於該第二寫入快取中而非該第一寫入快取中及將該再定位寫入資料自該第二寫入快取離台至該大容量非揮發性記憶體。
  2. 如請求項1之方法,其進一步包含: 在完成該將該主機寫入資料離台至該大容量非揮發性記憶體之前,該控制器基於該主機寫入資料緩存於該第一寫入快取中而將該主機寫入命令之一應答發送至一主機。
  3. 如請求項1之方法,其中: 該大容量非揮發性記憶體包括快閃記憶體;且 該方法包括該控制器在該快閃記憶體中之廢棄項目收集期間產生該等再定位寫入命令中之至少一些。
  4. 如請求項1之方法,其進一步包含: 該控制器基於完成將該主機寫入資料離台至該大容量非揮發性記憶體而在該第一寫入快取中釋放該主機寫入命令之該主機寫入資料。
  5. 如請求項1之方法,其進一步包含: 該控制器將主機寫入資料在該第一寫入快取中之至少一第一位置記錄於一邏輯至實體轉譯資料結構之一條目中;及 基於將該主機寫入資料離台至該大容量非揮發性記憶體,該控制器更新該條目以指示該大容量非揮發性記憶體中之一不同的第二位置。
  6. 如請求項5之方法,其中記錄於該條目中包括將主機寫入資料在該第二寫入快取中之一第三位置記錄於該條目中。
  7. 如請求項1之方法,其中該大容量非揮發性記憶體包括該第一寫入快取。
  8. 如請求項1之方法,其進一步包含: 該控制器在該第一寫入快取中及該第二寫入快取中維持各自對應於複數個不同寫入熱度中之一各別者的複數個緩衝器。
  9. 一種資料儲存系統,其包含: 一大容量非揮發性記憶體之一控制器,其中該控制器經組態以執行以下操作: 接收一主機寫入命令且將相關聯之主機寫入資料緩存於非揮發性記憶體中之一第一寫入快取及揮發性記憶體中之一鏡像第二寫入快取兩者中; 將該主機寫入資料自該第二寫入快取而非該第一寫入快取離台至該大容量非揮發性記憶體;及 藉由參考該第二寫入快取來服務請求該大容量非揮發性記憶體內之資料再定位的再定位寫入命令,該服務包括將與再定位寫入命令相關聯之再定位寫入資料緩存於該第二寫入快取中而非該第一寫入快取中及將該再定位寫入資料自該第二寫入快取離台至該大容量非揮發性記憶體。
  10. 如請求項9之資料儲存系統,其中該控制器經進一步組態以執行以下操作: 在完成該將該主機寫入資料離台至該大容量非揮發性記憶體之前,基於該主機寫入資料緩存於該第一寫入快取中而將該主機寫入命令之一應答發送至一主機。
  11. 如請求項9之資料儲存系統,其中: 該大容量非揮發性記憶體包括快閃記憶體;且 該控制器經進一步組態以在該快閃記憶體中之廢棄項目收集期間產生該等再定位寫入命令中之至少一些。
  12. 如請求項9之資料儲存系統,其中該控制器經進一步組態以執行以下操作: 基於完成將該主機寫入資料離台至該大容量非揮發性記憶體而在該第一寫入快取中釋放該主機寫入命令之該主機寫入資料。
  13. 如請求項9之資料儲存系統,其中該控制器經進一步組態以執行以下操作: 將主機寫入資料在該第一寫入快取中之至少一第一位置記錄於一邏輯至實體轉譯資料結構之一條目中;及 基於將該主機寫入資料離台至該大容量非揮發性記憶體,更新該條目以指示該大容量非揮發性記憶體中之一不同的第二位置。
  14. 如請求項13之資料儲存系統,其中記錄於該條目中包括將主機寫入資料在該第二寫入快取中之一第三位置記錄於該條目中。
  15. 如請求項9之資料儲存系統,其進一步包含該大容量非揮發性記憶體,其中該大容量非揮發性記憶體包括該第一寫入快取。
  16. 如請求項9之資料儲存系統,其中該控制器經進一步組態以執行以下操作: 在該第一寫入快取中及該第二寫入快取中維持各自對應於複數個不同寫入熱度中之一各別者的複數個緩衝器。
  17. 一種程式產品,其包含: 一儲存裝置;及 程式碼,其儲存於該儲存裝置中且可由一大容量非揮發性記憶體之一控制器執行以使該控制器執行以下操作: 接收一主機寫入命令且將相關聯之主機寫入資料緩存於非揮發性記憶體中之一第一寫入快取及揮發性記憶體中之一鏡像第二寫入快取兩者中; 將該主機寫入資料自該第二寫入快取而非該第一寫入快取離台至該大容量非揮發性記憶體;及 藉由參考該第二寫入快取來服務請求該大容量非揮發性記憶體內之資料再定位的再定位寫入命令,該服務包括將與再定位寫入命令相關聯之再定位寫入資料緩存於該第二寫入快取中而非該第一寫入快取中及將該再定位寫入資料自該第二寫入快取離台至該大容量非揮發性記憶體。
  18. 如請求項17之程式產品,其中該程式碼使該控制器執行以下操作: 在完成該將該主機寫入資料離台至該大容量非揮發性記憶體之前,基於該主機寫入資料緩存於該第一寫入快取中而將該主機寫入命令之一應答發送至一主機。
  19. 如請求項17之程式產品,其中: 該大容量非揮發性記憶體包括快閃記憶體;且 該程式碼使該控制器在該快閃記憶體中之廢棄項目收集期間產生該等再定位寫入命令中之至少一些。
  20. 如請求項17之程式產品,其中該程式碼使該控制器執行以下操作: 基於完成將該主機寫入資料離台至該大容量非揮發性記憶體而在該第一寫入快取中釋放該主機寫入命令之該主機寫入資料。
  21. 如請求項17之程式產品,其中該程式碼使該控制器執行以下操作: 將主機寫入資料在該第一寫入快取中之至少一第一位置記錄於一邏輯至實體轉譯資料結構之一條目中;及 基於將該主機寫入資料離台至該大容量非揮發性記憶體,更新該條目以指示該大容量非揮發性記憶體中之一不同的第二位置。
  22. 如請求項21之程式產品,其中記錄於該條目中包括將主機寫入資料在該第二寫入快取中之一第三位置記錄於該條目中。
  23. 如請求項17之程式產品,其中該大容量非揮發性記憶體包括該第一寫入快取。
  24. 如請求項17之程式產品,其中該程式碼使該控制器執行以下操作: 在該第一寫入快取中及該第二寫入快取中維持各自對應於複數個不同寫入熱度中之一各別者的複數個緩衝器。
TW111103286A 2021-06-29 2022-01-26 鏡像資料至非揮發性記憶體之控制器之寫入快取中 TWI792892B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/361,662 2021-06-29
US17/361,662 US11656792B2 (en) 2021-06-29 2021-06-29 Mirroring data in write caches of a controller of a non-volatile memory

Publications (2)

Publication Number Publication Date
TW202301128A TW202301128A (zh) 2023-01-01
TWI792892B true TWI792892B (zh) 2023-02-11

Family

ID=84543200

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111103286A TWI792892B (zh) 2021-06-29 2022-01-26 鏡像資料至非揮發性記憶體之控制器之寫入快取中

Country Status (7)

Country Link
US (1) US11656792B2 (zh)
JP (1) JP2024528369A (zh)
CN (1) CN117441164A (zh)
DE (1) DE112022002830T5 (zh)
GB (1) GB2622350A (zh)
TW (1) TWI792892B (zh)
WO (1) WO2023275632A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921637B2 (en) * 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
US20230251963A1 (en) * 2022-02-04 2023-08-10 National Technology & Engineering Solutions Of Sandia, Llc Architectural support for persistent applications
US11868248B2 (en) * 2022-02-25 2024-01-09 Dell Products L.P. Optimization for garbage collection in a storage system
US20240296085A1 (en) * 2023-03-02 2024-09-05 International Business Machines Corporation Write and retire pages in qlc nand blocks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200525390A (en) * 2003-09-25 2005-08-01 Ibm Method, system, and program for data synchronization
CN110196818A (zh) * 2018-02-27 2019-09-03 华为技术有限公司 缓存数据的方法、缓存设备和存储系统
EP2476055B1 (en) * 2009-09-08 2020-01-22 SanDisk Technologies LLC Apparatus, system, and method for caching data on a solid-state storage device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US7366846B2 (en) * 2005-01-14 2008-04-29 International Business Machines Corporation Redirection of storage access requests
JP4437489B2 (ja) 2006-10-25 2010-03-24 株式会社日立製作所 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8924629B1 (en) * 2011-06-07 2014-12-30 Western Digital Technologies, Inc. Mapping table for improving write operation efficiency
US9081665B2 (en) 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
EP2988222B1 (en) * 2014-08-21 2019-12-11 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential i/o streams
US10180792B1 (en) * 2015-04-30 2019-01-15 Seagate Technology Llc Cache management in data storage systems
US20170228191A1 (en) * 2016-02-08 2017-08-10 Western Digital Technologies, Inc. Systems and methods for suppressing latency in non-volatile solid state devices
US11803468B2 (en) * 2018-09-19 2023-10-31 Seagate Technology Llc Data storage system with write back cache
KR20200053204A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
JP7458763B2 (ja) * 2018-12-13 2024-04-01 ソニーセミコンダクタソリューションズ株式会社 階層セキュリティを備えたフラッシュ変換層
US11182089B2 (en) * 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
US10977181B2 (en) * 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation
JP2021033848A (ja) * 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US20210216239A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Host controlled garbage collection in a solid state drive

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200525390A (en) * 2003-09-25 2005-08-01 Ibm Method, system, and program for data synchronization
EP2476055B1 (en) * 2009-09-08 2020-01-22 SanDisk Technologies LLC Apparatus, system, and method for caching data on a solid-state storage device
CN110196818A (zh) * 2018-02-27 2019-09-03 华为技术有限公司 缓存数据的方法、缓存设备和存储系统

Also Published As

Publication number Publication date
US20220413762A1 (en) 2022-12-29
US11656792B2 (en) 2023-05-23
GB202400236D0 (en) 2024-02-21
DE112022002830T5 (de) 2024-03-14
TW202301128A (zh) 2023-01-01
CN117441164A (zh) 2024-01-23
JP2024528369A (ja) 2024-07-30
GB2622350A (en) 2024-03-13
WO2023275632A1 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
US10496293B2 (en) Techniques for selecting storage blocks for garbage collection based on longevity information
US10235283B2 (en) Techniques for supporting in-place updates with a log-structured array controller
US10884914B2 (en) Regrouping data during relocation to facilitate write amplification reduction
US10445016B2 (en) Techniques for storage command processing
US10459808B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
TWI792892B (zh) 鏡像資料至非揮發性記憶體之控制器之寫入快取中
US10592110B2 (en) Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
US10310938B2 (en) Data deduplication with reduced hash computations
US11016940B2 (en) Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
WO2015097956A1 (en) Extending useful life of a non-volatile memory by health grading
JP7513356B2 (ja) 不揮発性メモリにおける摩耗を意識したブロック・モード変換
US9389792B1 (en) Reducing read-after-write errors in a non-volatile memory system using an old data copy
US10254981B2 (en) Adaptive health grading for a non-volatile memory
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
US10489086B1 (en) Reducing read errors by performing mitigation reads to blocks of non-volatile memory
US9740609B1 (en) Garbage collection techniques for a data storage system
US9892128B2 (en) Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
US10115472B1 (en) Reducing read disturb effect on partially programmed blocks of non-volatile memory
CN112346658A (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
TWI820797B (zh) 頁群組讀取電壓臨限校準