TW202343259A - 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 - Google Patents
動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 Download PDFInfo
- Publication number
- TW202343259A TW202343259A TW112125974A TW112125974A TW202343259A TW 202343259 A TW202343259 A TW 202343259A TW 112125974 A TW112125974 A TW 112125974A TW 112125974 A TW112125974 A TW 112125974A TW 202343259 A TW202343259 A TW 202343259A
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- buffer
- buffers
- data
- controller
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 572
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 45
- 230000015654 memory Effects 0.000 claims description 59
- 238000012546 transfer Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000002955 isolation Methods 0.000 description 12
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000003321 amplification Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 239000007853 buffer solution Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000000454 anti-cipatory effect Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012367 process mapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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/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/0866—Addressing 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
-
- 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/0866—Addressing 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/0871—Allocation or management of cache space
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/224—Disk storage
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文中所述的各種實作係有關用以動態地管理儲存裝置之緩衝區的系統及方法,其包含由儲存裝置之控制器從主機接收指示該儲存裝置中所儲存之資料被存取之頻率的資訊;以及回應於接收該資訊,由該控制器決定該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序。虛擬字線(WL)的NAND讀取計數也被用來快取更頻繁存取的WL,因而主動地減少讀取干擾且因此增加NAND可靠性以及NAND壽命。
Description
本發明通常係有關用以施行資料儲存裝置之緩衝區的系統、方法、及非暫態性處理器可讀媒體。
在用於非揮發性記憶體(NVM)裝置的習知讀取干擾(read disturb)演算法中,為各記憶體分頁維持讀取干擾計數器。超過讀取閾值(例如,64 K讀取)之任何分頁變成週期性讀取檢查該分頁中之資料完整性的候選者。這些檢查涉及讀取資料,其將不僅保持晶粒和通道忙碌(因而減少隨機讀取性能)而且也致使更多的讀取干擾效應。例如,NVM中超過完整性檢查之某閾值的任何記憶體分頁變成讀取干擾刷新(refresh)之候選者,而且整個超級區塊(superblock)能夠被移動到新的區塊,造成寫入放大。在讀取密集工作負載中過度的寫入放大最終減少NVM的壽命。此方法並未將於讀取操作中所使用之記憶體緩衝區的使用來減少讀取干擾納入考量。
在一些配置中,一種方法包含:由儲存裝置之控制器從主機接收指示該儲存裝置中所儲存之資料被存取之頻率的資訊;以及回應於接收該資訊,由該控制器決定該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序。
在一些配置中,一種方法包含:至少部分使用由儲存裝置之控制器所計算之讀取緩衝區的總讀取計數來決定該儲存裝置之讀取緩衝區針對要被分配給下一個讀取命令而被排列的順序。
在一些配置中,一種被用來計算總讀取計數的方法包含:計算讀取緩衝區之命中計數的和、NVM中之記憶體分頁的真正讀取計數、和由儲存裝置之控制器分派給頻繁讀取資料(如同由主機所通知的)的高讀取計數來決定該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序。
在一些配置中,一種非暫態性電腦可讀媒體,包括電腦可讀指令,使得當該等電腦可讀指令被執行時,致使處理器用以:從主機接收指示該儲存裝置中所儲存之資料被存取之頻率的資訊;以及;回應於接收該資訊,決定該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序。
在用於NVM裝置的習知讀取干擾演算法中,為各虛擬字線(WL)群組維持讀取干擾計數器。超過讀取閾值(例如,64 K讀取)之任何WL群組變成用於掃描讀取的候選者。掃描讀取將不僅保持晶粒和通道忙碌(因而減少隨機讀取性能)而且也致使更多的讀取干擾以及觸發轉移(shift)讀取重試,並且最終Vth復原。
舉例來說,以每秒600 K輸入/輸出操作(IOPS)的隨機讀取目標性能,每107ms能夠觸發一次掃描讀取。如果虛擬字線(WL)越過15個掃描讀取的閾值,則讀取干擾能夠被觸發,而且整個超級區塊被移動到NVM裝置之新的區塊,造成寫入放大。讀取干擾刷新或Vth復原能夠額外地致使一組(SET)輸入/輸出確定性(IOD)裝置經歷自主過渡(autonomous transition)至非確定性時間視窗(non-deterministic window)。
習知的讀取僅為依序讀取檢查預提取(pre-fetch)。這增加了針對依序讀取而不是隨機讀取或本地化讀取的通量(throughput)。除此之外,讀取緩衝區習知上一完成被讀取就被釋出。換句話說,假設目前的讀取緩衝區並不考慮讀取NAND區塊中之受讀取干擾的WL以快取熱門資料(hot data),則使用該目前的讀取緩衝區對於集中的工作負載而言沒有NAND可靠度的改善。被用來避免讀取干擾誤差的目前機制正在使用掃描讀取及讀取干擾改造(reclaim)。讀取干擾改造通常是指被用來避免因讀取干擾誤差而資料毀損(corruption)之任何前發的(anticipatory)防止程序。在此上下文中,讀取干擾改造指的是當虛擬WL中的許多掃描讀取到達閾值時,將資料移到新的超級區塊。此使用掃描讀取的方法藉由使晶粒和通道保持忙碌來減少隨機讀取性能。進一步讀取和掃描讀取那些WL造成讀取干擾改造因而增加驅動器的寫入放大。
習知的讀取緩衝區並不使用由主機所提供之存取頻率資訊以快取熱門資料,因此不利用元資料來改善NVM記憶體的管理以及增加讀取通量。
因此,本文中所述之讀取緩衝區設計利用NVM中之記憶體分頁的讀取計數和由主機所提供之存取頻率資訊以快取熱門資料。這不僅減少NVM中之讀取干擾因而提高NVM壽命,而且也增加集中之隨機讀取工作負載的通量。
本文中所述之配置係有關針對記憶體儲存讀取緩衝區的系統、方法、及非暫態性處理器可讀媒體,其積極地增加集中之工作負載的通量以及減少讀取干擾掃描讀取及超級區塊改造,因此藉由減少背景活動來增加NVM儲存器(例如,NAND裝置)的壽命。在一些範例中,避免落在具有高讀取計數之虛擬WL群組中之讀取緩衝區的提前釋出(early release)。本文中所揭示之讀取緩衝區能夠以分散-集中的方式來予以管理,具有針對快取之最常使用以及最近使用之緩衝區政策的組合,因而藉由有效率地釋出讀取緩衝區來增加非揮發性記憶體儲存器的讀取通量和可靠度。
在一些配置中,讀取緩衝區未被立即釋出於當讀取命令的完成之時,反而是以適當的順序被佇列在自由列表中,使得在讀取緩衝區被分配給新的不重疊的邏輯位址之前,這些讀取緩衝區能夠被使用於快取以改善頻繁地讀取資料的延遲以及避免長尾的(long tail)讀取延遲,特別是針對隨機以及本地化的讀取命令。實際上,有些資料/元資料被非常頻繁地讀取。在來自主機(host)緩衝區快取的未命中(如果有的話),這樣的資料習知上直接從NAND中被讀取出,其造成讀取干擾。沒有避免進一步讀取已經受干擾的WL之任何機制,進一步讀取及掃描此等WL導致讀取水準(read level)偏移,且因而甚至在確定性模式中藉由觸發轉移讀取(shift reads)而降低讀取確定性。頻繁的轉移讀取重試最終觸發Vth誤差,其造成在IOD驅動器中自主過渡至非確定性模式。
為了協助繪示本實作,圖1為依據一些實作,顯示包含耦接至主機101之儲存裝置100之系統的方塊圖。在一些範例中,主機101可以是由用戶所操作之用戶裝置。主機101可包含作業系統(OS),其係配置成提供檔案系統(filesystem)以及使用該檔案系統的應用。該檔案系統與儲存裝置100(例如,儲存裝置100的控制器110)透過適合的有線或無線通訊鏈路或網路而相通訊來管理儲存裝置100中之資料的儲存。
就那而言,主機101的檔案系統使用適合的主機介面110來將資料發送至儲存裝置100以及自儲存裝置100中接收資料。主機介面110讓主機101的軟體(例如,檔案系統)能夠與儲存裝置100(例如,控制器110)相通訊。當主機介面110在概念上被顯示為主機101與儲存裝置100之間的方塊時,主機介面110能夠包含一或多個控制器、一或多個命名空間(namespace)、埠、運輸機制、以及其連接性。為了發送和接收資料,主機101的軟體或檔案系統使用運行於主機介面110上之儲存資料傳輸協定而與儲存裝置100相通訊。協定的範例包含但不限於串列附接式小型電腦系統介面(Serial Attached Small Computer System Interface (SAS))、串列先進技術附接(Serial AT Attachment (SATA))、和非揮發性記憶體儲存裝置(Non-Volatile Memory Express (NVMe))協定。主機介面110包含施行於主機101、儲存裝置100(例如,控制器110)、或者經由一或多個適合的網路而可操作地耦接至主機101及/或儲存裝置100的另一個裝置上之硬體。主機介面110和運行於其上的儲存協定也包含執行於該硬體上的軟體及/或韌體。
在一些範例中,儲存裝置100係位於資料中心(為了簡潔而未顯示出)內。資料中心可包含一或多個平台,各平台支援一或多個儲存裝置(諸如但不限於儲存裝置100)。在一些實作中,平台內之儲存裝置係連接至機架頂部(Top of Rack (TOR))交換器而且能夠經由TOR交換器或另一適合之平台內(intra-platform)通訊機制而互相通訊。在一些實作中,至少一個路由器可經由適合的網路連結結構(networking fabric)來幫助不同平台、機架(rack)、機櫃(cabinet)中之儲存裝置間的通訊。儲存裝置100的範例包含非揮發性裝置,諸如但不限於固態硬碟(Solid State Drive (SSD))、非揮發性雙列直插式記憶體模組 (Non-Volatile Dual In-line Memory Module (NVDIMM))、通用快閃儲存器(Universal Flash Storage (UFS))、安全數位(Secure Digital (SD))裝置、等等。
儲存裝置100包含至少一控制器110和非揮發性記憶體(NVM)140。儲存裝置100的其他組件為了簡潔而未被顯示出。NVM 140包含NAND快閃記憶體裝置。NAND快閃記憶體裝置之各者皆包含NAND快閃記憶體晶粒142a到142d、144a到144d、146a到146d、及148a到148d中的一或多個,其為能夠保有資料而不需要電力的NVM。因此,NAND快閃記憶體裝置係指NVM 140之內的多個NAND快閃記憶體裝置或晶粒。NVM 140因此能夠被參考為記憶體晶粒陣列,如圖所示。該等晶粒142a到142d、144a到144d、146a到146d、及148a到148d各自具有一或多個平面。各平面具有多個區塊,而且各區塊具有多個分頁。
該等晶粒142a到142d、144a到144d、146a到146d、及148a到148d能夠被排列於連接至控制器120的一或多個記憶體通訊通道中。例如,晶粒142a到142d能夠被配置在一個記憶體通訊通道上、晶粒144a到144d在一個記憶體通訊通道上、等等。雖然16個晶粒142a到142d、144a到144d、146a到146d、及148a到148d被顯示於圖1中,NVM 140能夠包含排列於一或多個通道中與控制器120相通訊之任意數量的NVM晶粒。
雖然該等晶粒142a到142d、144a到144d、146a到146d、及148a到148d被顯示作為NVM 140的範例實作,用以施行NVM 140之NVM技術的其他範例包含但不限於磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、鐵電性RAM (FeRAM)、電阻性RAM (ReRAM)、等等。本文中所述之緩衝區機制能夠同樣使用此等記憶體技術以及其他適合的記憶體技術而被施以於記憶體系統上。
控制器110的範例包含但不限於SSD控制器(例如,客戶SSD控制器、資料中心SSD控制器、企業SSD控制器、等等)、UFS控制器、或SD控制器、等等。
控制器110能夠結合該等晶粒142a到142d、144a到144d、146a到146d、及148a到148d中的原始資料儲存器而使得那些晶粒142a到142d、144a到144d、146a到146d、及148a到148d用作為單一儲存器。控制器110能夠包含處理器、微處理器、中央處理單元(CPU)、快取記憶體130、緩衝區(例如,緩衝區152、154、及156)、錯誤偵測系統、資料加密系統、快閃記憶體轉換層(Flash Translation Layer (FTL))132、映射表134、快閃記憶體介面136、等等。此等功能能夠用硬體、軟體、和韌體之方式或其組合來施行。在一些配置中,控制器110的軟體/韌體能夠被儲存在NVM 140中或者任何其他適合的電腦可讀儲存媒體中。
控制器110包含除了其他功能外還用來執行本文中所述之功能的處理及記憶體能力。控制器110管理針對NVM 140的各種特徵,包含但不限於I/O處理、讀取、寫入/編程、拭除、監控、日誌記錄(logging)、錯誤處理、垃圾回收、耗損平均(wear leveling)、邏輯到實體位址映射、資料保護(加密/解密)、等等。因此,控制器110提供對該等晶粒142a到142d、144a到144d、146a到146d、及148a到148d的能見度。
快取記憶體130、讀取緩衝區152、和寫入緩衝區156各自為控制器110的本地記憶體(local memory)。在一些範例中,快取記憶體130、讀取緩衝區152、和寫入緩衝區156各自包含一或多個揮發性儲存器。在一些範例中,快取記憶體130、讀取緩衝區152、和寫入緩衝區156各自為非揮發性永久儲存器。快取記憶體130、讀取緩衝區152、和寫入緩衝區156各自的範例包含但不限於RAM、DRAM、靜態RAM (SRAM)、MRAM、PCM等等。
回應來自主機101的讀取命令,讀取緩衝區152儲存從NVM 140中讀出的資料。控制器120能夠經由主機介面110將資料從讀取緩衝區152轉移至主機101。在一些範例中,針對各範圍之邏輯位址的資料被儲存在該等讀取緩衝區152的其中一個中。在資料被轉移至主機101之後,該等讀取緩衝區152之各者在被用來快取針對另一範圍之邏輯位址的資料之前能夠存在一段時間。在那段時間期間,回應接收針對相同範圍之邏輯位址的另一讀取命令,命中該讀取緩衝區已經發生,而且控制器120能夠將相同的資料從該讀取緩衝區轉移至主機101,而不需要從NVM 140讀取。本文中所揭示之配置係有關動態地管理讀取緩衝區152,如同本文中所進一步詳細揭示的。
讀取緩衝區表154被緩衝區管理程序(manager)125所使用來管理讀取緩衝區152的動態分配,如同本文中所進一步詳細揭示的。讀取緩衝區表154能夠包含用於讀取緩衝區之各式各樣類型的資訊,包含但不限於邏輯位址範圍、讀取緩衝區識別符(ID)、緩衝區類型列表、總讀取計數、時間戳記、等等。
寫入緩衝區156儲存從主機101(經由主機介面110)接收到的資料。控制器120能夠將寫入緩衝區156中所儲存的資料寫到NVM 140(例如,到晶粒142a到142d、144a到144d、146a到146d、及148a到148d)。
緩衝區管理程序125包含配置來管理快取記憶體130、讀取緩衝區152、讀取緩衝區表154、和寫入緩衝區156之適合的硬體(例如,一或多個CPU)、軟體、及/或韌體。在一些範例中,使用專用的硬體(例如,專用的處理器、CPU、及記憶體)來施行緩衝區管理程序125。
映射表134為位址映射表(例如,邏輯到實體位址(L2P)映射表)。FTL 132(例如,FTL處理器、FTL介面模組、等等)能夠處理映射表134。映射表134為保持邏輯位址與實體位址間之對應的記錄。例如,映射表134能夠將相關於邏輯區塊/位址的讀取和寫入命令(接收自主機101)轉譯成參考實體區塊/位址的低階(low-level)命令。在一些範例中,從主機101接收到的讀取或寫入命令包含諸如但不限於邏輯區塊位址(LBA)的邏輯位址。LBA為識別邏輯區塊的邏輯位址,邏輯區塊可以是一區域或區段。在一些範例中,邏輯位址範圍係指多個LBA或邏輯叢集(cluster)位址(LCA)的範圍。映射表134儲存各個邏輯位址與其中儲存邏輯位址之資料的一或多個實體位址(例如,記憶體晶粒的分頁)之間的映射。
FTL 132能夠根據映射表134而實施L2P操作。例如,FTL 132能夠將邏輯位址轉譯成實體位址,因而解開對應於邏輯位址的實體位址。回應從主機101接收寫入或讀取命令(含有LCA於其中),FTL 132能夠藉由使用映射表132來查找對應於LCA的實體位址(例如,Media Cluster Address (MCA)),以便寫到實體位址或者從實體位址讀出。映射表134能夠被儲存在NVM 140、快取記憶體130、或控制器120之適合的記憶體中的一或多個中。
快閃記憶體介面136(例如,快閃記憶體介面層(FIL))處理命令佇列中來自FTL 132之進來的快閃命令,以針對該命令之目的地實體記憶體晶粒的最佳方式來排程那些命令。
在一些範例中,控制器120(例如,主機介面110)接收來自主機101的讀取命令而且將讀取命令轉發至快取記憶體130。快取記憶體130將該實體位址範圍發送至緩衝區管理程序125。緩衝區管理程序125確定該實體位址範圍是否與對應於讀取緩衝區152或寫入緩衝區156的其中一者(命中緩衝區)的實體位址範圍重疊。回應確定讀取緩衝區152或寫入緩衝區156之命中的一者已經發生,緩衝區管理程序125將該命中結果回報給快取記憶體130。緩衝區管理程序125管理使用中列表及自由列表,如同本文中所述的。
針對讀取緩衝區152之命中的一者,資料從那個讀取緩衝區被轉移至主機101,而且讀取命令被完成。回應確定沒有命中讀取緩衝區152和寫入緩衝區156已經發生,FTL 132確定來自映射表134之對應於該邏輯位址範圍的實體位址,而且讀取請求經由快閃記憶體介面136而被提交給NVM 140。快閃記憶體介面136從NVM 140的實體位址讀取資料並且將該資料、讀取計數、和掃描讀取計數發送給快取記憶體130。快取記憶體130將該資料轉移至主機101(例如,到主機101的緩衝區),確定以及更新總讀取計數。
雖然NVM 140在本文中被顯示作為範圍,但是所揭示之方案能夠被施行於透過介面而被連接至主機101的任何儲存系統或裝置上,其中,這樣的系統暫時或永久地為主機101儲存資料以供稍後的擷取用。
圖2為依據一些實作,支援低延遲操作之架構200的方塊圖。參照圖1及圖2,能夠從儲存裝置的非揮發性記憶體(諸如但不限於NVM 140)組構出架構200。如圖2所示,架構200包含配置橫越8個通道(CH0到CH7)之32個非揮發性記憶體的陣列,具有4個NVM晶粒耦接至每一個通道。換言之,架構200包含NAND快閃記憶體裝置的陣列。各個NVM晶粒具有一或多個平面。任意適合數量的晶粒能夠可操作地耦接至任意適合數量的通道。架構200中的非揮發性記憶體晶粒各自能夠是該等非揮發性記憶體晶粒142a到142d、144a到144d、146a到146d、及148a到148d中的一個。通道CH0到CH7能夠是實體通道或邏輯通道。
不是藉由從橫越所有8個通道之NVM晶粒的每一個中選出一實體區塊所形成的超級區塊,架構200包含藉由從相同及相鄰通道上之NVM晶粒每一個中選出所有的實體區塊所形成的超級區塊(由相同的陰影所表示者)。這些超級區塊在NVM 140內形成一隔離區域(例如,與其他區域隔離的區域),其不受到NVM 140之其他區域的通道I/O所影響,假設各區域經由不和其他區域共享的通道而被存取。各個隔離區域能夠被稱為NVM組。因此,在架構200中,隔離區域202包含兩個通道CH0和CH1上之非揮發性記憶體晶粒的實體區塊。隔離區域204包含兩個通道CH2和CH3上之非揮發性記憶體晶粒的實體區塊。隔離區域206包含兩個通道CH4和CH5上之非揮發性記憶體晶粒的實體區塊。隔離區域208包含兩個通道CH6和CH7上之非揮發性記憶體晶粒的實體區塊。
藉由僅使用來自固定數量之隔離通道的NVM晶粒之實體區塊而形成隔離區域來組構超級區塊,諸如圖2所示的,能夠使在NVM晶粒及通道控制器處的I/O操作碰撞達最小或者完全避免,得以致能儲存裝置之更低的延遲、更大的可預測性、以及更加一致的I/O性能。如同所顯示的,隔離區域202至208各自包含耦接至多個(例如,兩個)通道的NVM晶粒,因而起每一隔離區域之多個通道控制器的槓桿作用以處理主機I/O操作來改善每一隔離區域的通量。或者,隔離區域能夠包含耦接至一個通道的NVM晶粒。因此,架構200的晶粒能夠被選擇以及排列而形成隔離區域202至208,但是原則上,任意數量的通道可以被用來形成隔離區域,其中,分開的隔離區域並不共享通道。
就那而言,IOD驅動器係指施行IOD特徵的SSD,如同本文中所述的。各個NVM組在邏輯上被管理而和IOD驅動器之其他NVM組的邏輯無關。亦即,IOD裝置的每一個實體分割被映射至IOD裝置的每一個邏輯分割。IOD裝置能夠獨立地管理每一個NVM組上所實施的邏輯以及將適當的儲存空間和頻寬分配給每一個NVM組。有關NVM組的I/O操作被保證有來自該NVM組之一定等級的頻寬,而與其他NVM組無關,因而當主機意識到保證的頻寬時,讓延遲能夠可為主機預測的。因此,主機101能夠使用帶有保證頻寬之期望的IOD驅動器來執行儲存及計算功能,其由於IOD驅動器的特性而總是能夠被完成。IOD裝置的範例能夠在2017年11月1日提出申請之發明名稱為“SSD ARCHITECTURE SUPPORTING LOW LATENCY OPERATION”的美國專利公告號US 2019/0042150中找到,其整體內容在此被併入做為參考。
在一些配置中,除了NAND讀取計數和讀取緩衝區(快取)命中計數之外,讀取緩衝區152能夠使用主機介面110之讀取命令中的“存取頻率(Access Frequency)”欄位(例如,NVMe傳輸層)來確定讀取緩衝區152的壽命以增加命中率。命中率指的是進來的讀取命令命中現有的讀取緩衝區之比率。在一些配置中,主機101能夠通知資料是否被頻繁地讀取,而且讀取緩衝區快取能夠基於記憶體資源可用性來予以縮放。
在施行本文中所揭示之讀取緩衝區系統的IOD驅動器中,讀取確定性能夠藉由減少自主過渡至非確定性時間視窗(NDWIN)來予以改善。特別是,確定被頻繁地讀取之資料最後被釋出。
在一個範例中,帶有具有512十億位元組(Gigabyte (Gb))NAND之晶粒尺寸的NVM之1太拉位元組(Terabyte (TB))驅動器含有16個平行的晶粒。假設4個WL在一個WL群組中,則一個虛擬WL群組的總容量為:
6百萬位元組(Megabyte (MB))的讀取緩衝區尺寸能夠減少讀取干擾掃描讀取以及避免至少16個虛擬WL群組的改造(例如,6 MB/384 KB),亦即,在最壞的情況下,每晶粒的1虛擬WL群組,在其中該WL群組中的所有資料為熱門資料的情況下。
然而,在一些情況下(例如,用以增加讀取通量之SSD的FTL實作),至少一排組(橫跨於所有通道之上的晶粒被稱為排組)的所有下方分頁(L)按順序被寫入於中間分頁(M)之前,以及該排組的所有上方分頁(U)按順序被寫入於中間分頁(M)按順序被寫入之後。因而,在虛擬WL中僅一個雙平面(dual-plane)分頁(例如,32千位元組(Kilobyte (KB))為熱門資料。因此,具有6 MB之尺寸的讀取緩衝區能夠減少192個虛擬WL(例如,6 MB/32 KB)的掃描讀取及改造。此種讀取緩衝區能夠覆蓋每晶粒192/16= 12個虛擬WL。
從性能觀點來看,具有640 MB/s的有效通道速度,橫跨於2個晶粒之上以每通道400 MB/s之速度的多平面讀取足以使通道保持忙碌。像這樣,3 MB(例如,16 MB分頁尺寸 * 2個平面 * 16個通道 * 3)讀取緩衝區足以使針對16個通道的組態中的所有通道之通道頻寬飽和。
因此,如果針對在一16個通道的驅動中為讀取緩衝區而分配總共6 MB,則運行時間讀取緩衝區分配在更高的佇列深度處能夠以3 MB來予以節流(throttled)而沒有任何讀取性能的損失,使得在任何的時間點,3 MB之頻繁讀取的資料緩衝區能夠被單獨專門用作為讀取快取記憶體,如同在本文中所述的。具有36 MB之總讀取緩衝區尺寸,總共1152 (192 * 6)個受讀取干擾的WL群組能夠在任何的時間點被快取。
如同在本文中所述的,藉由根據要被快取之WL群組的數量,能夠達成使用於讀取緩衝區152的記憶體與尾端讀取延遲/寫入放大之間的權衡(trade-off)。
在一些配置中,讀取緩衝區尺寸能夠根據要被快取之WL群組的數量來予以定義。特別是,讀取緩衝區尺寸能夠依據可用的記憶體和要被快取之受讀取干擾的WL群組的數量來予以定義。
一些配置係有關其中保存有使用中列表及自由列表之分散聚集緩衝系統。圖3為依據一些配置,繪示使用中列表300及自由列表320的方塊圖。參照圖3,讀取緩衝區152能夠被組織成使用中列表300及自由列表320。使用中列表300含有所有被分配及使用的讀取緩衝區(目前被用來將資料從那些使用的讀取緩衝區轉移到主機101)。自由列表320含有所有能夠回應於從主機101接收到新的讀取命令而被佔用的讀取緩衝區。使用中列表300為一讀取緩衝區的列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,使用中列表300包含緩衝區ID 310a、緩衝區ID 310b、…、緩衝區ID 310n。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,第一個緩衝區ID,緩衝區ID 310a,係鏈結到第二個緩衝區ID 310b、等等。最後一個緩衝區ID 310n係鏈結到NULL,其表示緩衝區ID 310n是使用中列表300中的最後一個緩衝區ID。
類似地,自由列表320為的讀取緩衝區列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,自由列表320包含緩衝區ID 330a、緩衝區ID 330b、…、緩衝區ID 330n。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,第一個緩衝區ID,緩衝區ID 330a,係鏈結到第二個緩衝區ID 330b、等等。最後一個緩衝區ID 330n係鏈結到NULL,其表示緩衝區ID 330n是自由列表320中的最後一個緩衝區ID。讀取緩衝區係從自由列表320的頭(例如,緩衝區ID 330a)開始被分配。例如,回應於接收到針對邏輯位址的非重疊範圍之新的讀取命令,控制器120(例如,緩衝區管理程序125)分配目前為自由列表320之頭的讀取緩衝區而且將自NVM裝置中讀出的資料儲存在該讀取緩衝區中。邏輯位址的非重疊範圍指的是不和對應於自由列表320及使用中列表300中之讀取緩衝區的範圍重疊(相同)的範圍。因此,邏輯位址的非重疊範圍並不導致對現有之緩衝區的命中。
在一些範例中,頻繁讀取的資料使用主機介面110(例如,NVMe規格)之讀取命令的欄位(例如,“存取頻率(Access Frequency)”欄位)和總讀取計數而被動態地快取於讀取緩衝區152中。這確保了僅在較不頻繁使用且未分配的資料緩衝區被耗盡之後,才針對新的非重疊讀取分配更頻繁讀取的資料緩衝區。
主機101能夠,例如藉由將資訊送至控制器120,以指示針對邏輯位址之給定範圍的存取頻率。此種資訊包含指示針對邏輯位址範圍之存取頻率的存取頻率值。圖4為依據NVMe標準協定,繪示範例存取頻率值的表400。存取頻率值能夠由主機介面110來予以定義。存取頻率值被提供於讀取命令的“存取頻率”欄位中。每一個存取頻率值映射到指示存取頻率之對應的定義(例如,邏輯位址範圍被讀取及/或寫入的頻率,或者被稱為期望讀取頻率及/或期望寫入頻率)。
回應於從主機101接收到針對邏輯位址範圍之存取頻率值為0 (“0000”),控制器120(例如,緩衝區管理程序125)決定主機101沒有提供針對邏輯位址範圍的頻率資訊。回應於從主機101接收到針對邏輯位址範圍之存取頻率值為1 (“0001”),控制器120(例如,緩衝區管理程序125)決定針對該邏輯位址的範圍期望一典型(中等)數量的讀取和寫入。
回應於從主機101接收到針對邏輯位址範圍之存取頻率值為2 (“0010”),控制器120(例如,緩衝區管理程序125)決定針對該邏輯位址的範圍期望低數量的讀取和寫入(例如,不頻繁寫入和不頻繁讀取)。回應於從主機101接收到針對邏輯位址範圍之存取頻率值為3 (“0011”),控制器120(例如,緩衝區管理程序125)決定針對該邏輯位址的範圍期望低數量的寫入(例如,不頻繁寫入)和高數量的讀取(例如,頻繁讀取)。
回應於從主機101接收到針對邏輯位址範圍之存取頻率值為4 (“0100”),控制器120(例如,緩衝區管理程序125)決定針對該邏輯位址的範圍期望低數量的讀取(例如,不頻繁讀取)和高數量的寫入(例如,頻繁寫入)。回應於從主機101接收到針對邏輯位址範圍之存取頻率值為5 (“0101”),控制器120(例如,緩衝區管理程序125)決定針對該邏輯位址的範圍期望高數量的讀取和寫入(例如,頻繁讀取和寫入)。
回應於從主機101接收到針對邏輯位址範圍之存取頻率值為6 (“0110”),控制器120(例如,緩衝區管理程序125)決定對應於該邏輯位址的範圍之命令為一次性(one-time)讀取命令(例如,由於病毒掃描、備份、檔案複製、存檔(archive)、等等而由主機101發出該命令)。回應於從主機101接收到針對邏輯位址範圍之存取頻率值為7 (“0111”),控制器120(例如,緩衝區管理程序125)決定對應於該邏輯位址的範圍之命令為推測性(speculative)讀取命令(例如,針對預提取(pre-fetch)操作而由主機101發出該命令)。回應於從主機101接收到針對邏輯位址範圍之存取頻率值為8 (“1000”),控制器120(例如,緩衝區管理程序125)決定該邏輯的範圍在不久的將來將被覆寫。
在一些範例中,回應於決定針對該邏輯位址的範圍之讀取緩衝區具有對應於頻繁讀取且不頻繁寫入的存取頻率值(例如,值為3的存取頻率值),當讀取緩衝區第一次被發出時,緩衝區管理程序125將高的讀取計數指派給該讀取緩衝區(由一緩衝區ID所識別)。在一些範例中,高的讀取計數為64 K的讀取計數,其從讀取干擾的觀點來看被認為是高的讀取。該讀取緩衝區依據總讀取計數而被鏈結到自由列表320。
另一方面,回應於決定針對該邏輯位址的範圍之讀取緩衝區(1)具有對應於不頻繁讀取的存取頻率值(例如,值為2、4、6、或7的存取頻率值);(2)具有對應於頻繁寫入(頻繁更新)的存取頻率值(例如,值為5或8的存取頻率值);或者(3)經由寫入或解除分配命令而無效,緩衝區管理程序125將對應於邏輯位址的範圍之讀取緩衝區放置在自由列表320的前頭(例如,緩衝區ID 330a)。就那方面而言,對應於邏輯位址的範圍之資料被快取一段短量的時間。自由列表320中剩餘的讀取緩衝區按照總讀取計數之遞升順序的方式來予以鏈結,具有最少總讀取計數的緩衝區(具有緩衝區ID 330b)立即接在緩衝區ID 330a之後,具有最多總讀取計數的緩衝區(具有緩衝區ID 330n)立即接在NULL之前。
此種機制讓更頻繁讀取的資料緩衝區能夠僅在較不頻繁讀取、頻繁寫入、及/或未分配的資料緩衝區被耗盡於自由列表320中之後才由新的非重疊讀取來予以分配。
在一些配置中,控制器120能夠節省對應於讀取命令的時間戳記。在一個範例中,控制器120從具有讀取命令的主機101接收時間戳記。在此情況下,時間戳記指示讀取命令已經由主機101發出之時的時間(例如,讀取命令的產生時間戳記)。在另一個範例中,控制器120回應於從主機101接收到讀取命令而決定對應於該讀取命令的時間戳記。在此情況下,時間戳記指示讀取命令已經被控制器120接收到之時的時間。在一些範例中,控制器120能夠將對應於每一個接收到之讀取命令的時間戳記儲存在讀取緩衝區表中。
在一些配置中,一旦在預定數量的讀取緩衝區分配中,最老的讀取緩衝區被分配而不是自由列表320的頭。例如,假設緩衝區計數的總數為N,在每一個第(N/4)次讀取之後,自由列表320之最老的緩衝區條目(例如,對應於最早的時間戳記之讀取緩衝區)被分配給下一個非重疊讀取,而不是從自由列表320的前頭來分配緩衝區。這讓控制器120能夠在逐出目前正被頻繁讀取的其他讀取緩衝區之前,逐漸從自由列表320中逐出具有高讀取計數的緩衝區,假設那些讀取緩衝區可能在過去已經頻繁地讀取但是已經有一段時間未被存取。
就那方面而言,圖5為依據一些配置,繪示自由列表500的方塊圖。參照圖1至圖5,自由列表500能夠是緩衝區列表(緩衝區ID),諸如但不限於自由列表320。自由列表500為一讀取緩衝區列表,每一個讀取緩衝區由一對應的緩衝區ID所識別。如所示者,自由列表500包含緩衝區ID 501、緩衝區ID 510、緩衝區ID 511、…緩衝區ID 520、緩衝區ID 521、…、及緩衝區ID 530。每一個緩衝區ID係鏈結到下一個緩衝區ID。最後一個緩衝區ID 530係鏈結到NULL,其表示緩衝區ID 530為最後一個緩衝區ID而且是自由列表500中的尾。讀取緩衝區係從自由列表500的頭(例如,緩衝區ID 501)開始被分配。例如,回應於接收到針對邏輯位址的非重疊範圍之讀取命令,控制器120分配目前為自由列表500之頭的讀取緩衝區而且將自NVM 140中讀出的資料儲存在該讀取緩衝區中。因此,針對新的讀取命令,具有更接近於自由列表500的頭之緩衝區ID的讀取緩衝區被分配在具有更接近於自由列表500的之尾(NULL)的緩衝區ID之前。
在一個範例中,自由列表500含有屬於三個群組,例如,第一群組541、第二群組542、及第三群組543之讀取緩衝區。緩衝區ID 501到510的第一群組541比第二群組542及第三群組543更接近於自由列表500的頭,因此,在將緩衝區ID 511到530分配給新的讀取命令之前,先將緩衝區ID 501到510分配給新的讀取命令。第一群組541中的緩衝區ID 501到510之各者識別含有不再有效之資料的讀取緩衝區。例如,主機101能夠發出針對邏輯位址之範圍的寫入或解除分配命令,執行該命令的結果是,對應於該邏輯位址範圍之在該讀取緩衝區中的資料係過時的(outdated)及/或不在需要的。就那方面而言,此等讀取緩衝區能夠首先針對新的讀取命令而被分配,且因此在自由列表500的前頭。
緩衝區ID 511到520的第二群組542比第三群組543更接近於自由列表500的頭,因此,針對新的讀取命令而將緩衝區ID 511到520分配在針對新的讀取命令而分配緩衝區ID 521到530之前。第二群組542中的緩衝區ID 511到520之各者識別對應於被視為與頻繁寫入及不頻繁讀取(例如,在表400中具有值為2、4、5、6、7、或8的存取頻率值)相關聯之邏輯位址範圍的讀取緩衝區。頻繁寫入導致讀取緩衝區中的資料係過時的。因此,對應於邏輯位址範圍之預期經歷頻繁寫入及不頻繁讀取兩者的資料很可能不需要被保持很長的一段時間,且因此能夠在第一群組541中的緩衝區已經被分配給新的讀取命令之後才被分配給新的讀取命令。
第三群組541中的緩衝區ID 521到530依據總讀取計數來排序。在一些範例中,該等緩衝區依據遞增的總讀取計數來排列,具有最低之總讀取計數的緩衝區(例如,緩衝區ID 521)最接近於自由列表500的頭,而具有最高之總讀取計數的緩衝區(例如,緩衝區ID 530)最接近於自由列表500的尾。如所述者,對應於邏輯位址範圍之預期具有較高總讀取計數(例如,在表400中具有值為3的存取頻率值)的緩衝區分配給新的讀取命令,由於頻繁讀取而給予高可能性命中此讀取緩衝區。
如所述者,在一些範例中,假設緩衝區ID 501到530的總數為N,在每一個第(N/4)次讀取之後,自由列表500中對應於最早的時間戳記之緩衝區ID被分配給下一個非重疊讀取命令,而不是從自由列表500的前頭開始分配緩衝區。
圖6為依據各種配置,繪示用以執行讀取命令之範例方法600的流程圖。依據圖1至圖6,範例方法600能夠由控制器120來予以執行。在610,控制器120經由主機介面110而接收來自主機101的讀取命令。在620,控制器120決定該讀取命令是否命中一讀取緩衝區。命中一讀取緩衝區意指讀取命令中之邏輯位址的範圍對應於其中已經儲存有針對該邏輯位址範圍之最新資料的讀取緩衝區,使得控制器120能夠從讀取緩衝區中轉移資料,而不是從NVM 140中讀取資料。
在一些配置中,回應於控制器120決定命中一讀取緩衝區(620:是),控制器120在640處理來自讀取緩衝區的讀取命令。另一方面,回應於控制器120決定沒有命中一讀取緩衝區(620:否),控制器120在630處理來自NVM 140的讀取命令。
圖7為依據各種配置,繪示用以執行讀取命令之範例方法700的流程圖。依據圖1至圖7,範例方法700能夠由控制器120來予以執行而且是方塊630的範例實作。例如,回應於邏輯位址的範圍並未導致命中任何讀取緩衝區(620:否),控制器120在701從自由列表320的頭開始分配讀取緩衝區。
在702,控制器120決定對應於邏輯位址之範圍的一或更多個實體位址。例如,控制器120能夠從位址映射表(例如,L2P映射表)中獲取映射到邏輯位址之範圍的MCA,並且發出請求經由快閃記憶體介面層(Flash Interface Layer (FIL))而從NVM 140中讀取資料。在703,控制器120(例如,FIL)以針對NVM 140中對應的虛擬WL之讀取計數和掃描讀取計數(例如,0到15)送回來自NVM 140的資料。
在704,控制器120將資料送回到主機101以及儲存針對該讀取緩衝區的NAND讀取計數。例如,控制器120能夠將資料經由主機介面110而從讀取緩衝區轉移至主機101的緩衝區(例如,DRAM)。在一些範例中,虛擬WL上的NAND讀取計數(N
NAND)能夠使用式(1)來予以決定:
其中,
N
read_count 係指虛擬WL上的讀取計數,及
N
scan_red_count 係指虛擬WL上的掃描讀取計數。
在705,控制器120決定存取頻率值是否為第一值(例如,3)。如表400中所示,指示存取頻率(例如,讀取頻率和寫入頻率)的存取頻率值能夠從主機101接收到。針對邏輯位址之範圍之值為3的存取頻率值對應於針對該邏輯位址之範圍而預期低數量的寫入(例如,不頻繁寫入)和高數量的讀取(例如,頻繁讀取)。
回應於決定存取頻率值為3 (705:是),控制器120在706決定針對邏輯位址之範圍的指定讀取計數。在一個範例中,回應於決定針對邏輯位址之範圍的指定讀取計數目前為0,控制器120指定預定數(例如,64 K)作為指定讀取計數。另一方面,回應於決定存取頻率值不是3 (705:否),控制器120在707決定存取頻率值是否為第二值(例如,2、4、5、6、7、或8)。
回應於決定存取頻率值是第二值(707:是),在708,控制器120將讀取緩衝區移動至自由列表320的頭或者將讀取緩衝區移動至第二群組542中。例如,緩衝區ID 330a識別在703所分配之讀取緩衝區。另一方面,回應於在709決定存取頻率值不是第二值(707:否),控制器120決定針對在703所分配之讀取緩衝區的總讀取計數。在一些範例中,讀取緩衝區的總讀取計數(
N
Total )能夠使用式(2)來予以決定:
其中,
N
hit_count 為讀取命中計數,及
N
assigned 為指定讀取計數。總讀取計數被儲存在讀取緩衝區表中。
在710,控制器120依據讀取緩衝區的總讀取計數來鏈結自由列表320中的讀取緩衝區(例如,其緩衝區ID)。換言之,自由列表320中具有除了2、4、5、6、7、或8以外之存取頻率值的緩衝區由總讀取計數來予以排列,使得具有低數量之總讀取計數的緩衝區更接近自由列表320的頭(並且被首先分配給下一個使用)。
對應於該讀取緩衝區的緩衝區ID被鏈結或插入在第一緩衝區ID與第二緩衝區ID之間,使得具有比該讀取緩衝區之總讀取計數更小之總讀取計數的第一緩衝區ID更接近自由列表320的頭,而且具有比該讀取緩衝區之總讀取計數更大之總讀取計數的第二緩衝區ID更接近自由列表320的尾。這讓具有較低總讀取計數的讀取緩衝區能夠更接近自由列表320的頭。
方法700避免對應於對應到具有較高讀取計數之邏輯位址的資料之WL上的進一步讀取干擾,以及避免對應於哪些虛擬WL之超級區塊上的未來掃描讀取和讀取干擾改造。
圖8為依據各種配置,繪示用以執行讀取命令之範例方法800的流程圖。依據圖1至圖8,範例方法800能夠由控制器120來予以執行而且是方塊640的範例實作。例如,回應於邏輯位址的範圍導致命中任何讀取緩衝區(620:是),控制器120在801增加針對該讀取緩衝區的讀取命中計數(
N
hit_count )。控制器120因而維持針對所快取之緩衝區的每一個的讀取命中計數。
在802,控制器120將讀取緩衝區從自由列表320移動至使用中列表300。在803,控制器120經由主機介面110將讀取緩衝區中所儲存的資料轉移至主機101的緩衝區(例如,DRAM)。在804,控制器120決定存取頻率值是否為預定值(例如,2、4、5、6、7、或8)。
回應於決定存取頻率值為預定值(804:是),在805,控制器120將讀取緩衝區移動至自由列表320的頭。例如,緩衝區ID 330a識別該讀取緩衝區。另一方面,回應於在806決定存取頻率值不是預定值(804:否),在806,控制器120決定針對該讀取緩衝區的總讀取計數。在一些範例中,該讀取緩衝區的總讀取計數(
N
Total )能夠使用式(2)來予以決定,且讀取命中計數(
N
hit_count )增加於801。總讀取計數被儲存在讀取緩衝區表中。
在807,控制器120依據讀取緩衝區的總讀取計數來鏈結自由列表320中的讀取緩衝區(例如,其緩衝區ID),使得自由列表320中的緩衝區由總讀取計數來予以排列,使得具有低數量之總讀取計數的緩衝區更接近自由列表320的頭(並且被首先分配給下一個使用)。
在一些其中二或更多個讀取緩衝區具有相同之總讀取計數的範例中,具有較晚之時間戳記的讀取緩衝區被用來快取讀取資料,以及具有較早之時間戳記的讀取緩衝區被鏈結更接近自由列表320的頭(並且被分配在具有較晚之時間戳記的讀取緩衝區之前以用於下一個使用)。
圖9A及9B為依據各種配置,用來維持讀取緩衝區之總讀取計數的範例讀取緩衝區表900a和900b。參照圖1至圖9B,讀取緩衝區表900a和900b維持邏輯位址的範圍(例如,LCA)、讀取緩衝區ID、列表類型(使用中列表300或自由列表320)、總讀取計數、以及時間戳記之間的對應。讀取緩衝區表900a為在儲存裝置100的操作期間之讀取緩衝區的快照(snapshot)。讀取緩衝區表900b為初始化於啟動時的讀取緩衝區表。
在其中儲存裝置100為IOD儲存裝置的配置中,儲存裝置100不是在Deterministic Window (DTWIN)中就是在NDWIN中。於啟動時,所有的讀取緩衝區將在自由列表300中,如同在讀取緩衝區表900b中所顯示的。
在一些配置中,讀取緩衝區表搜尋被致能於DTWIN和NDWIN兩者中。在NDWIN中,假設儲存裝置100大多正在寫入、分配、及實施背景操作,回應於在讀取緩衝區表900a中決定寫入或分配命令命中LCA,控制器120能夠使對應於LCA的條目無效,而且該條目從讀取緩衝區表900a中被去除。
在其中儲存裝置100為IOD儲存裝置的配置中,DTWIN和NDWIN能夠輪替。在DTWIN的開始時,控制器120典型上插入與針對對應於新的非重疊讀取命令之LCA之讀取緩衝區相關的條目。在NDWIN的開始時,控制器120典型上使與針對對應於非重疊寫入命令之LCA之讀取緩衝區相關的條目無效。
於啟動時以及在針對可預測延遲模式而致能儲存裝置100的方案中,讀取緩衝區表900b被初始化以使LCA(例如,“0xFFFFFFFF”)無效。當在DTWIN期間從主機101接收到新的讀取命令時,讀取緩衝區表900a能夠依據與該讀取命令相關聯之邏輯位址的範圍(例如,LCA)而首先被搜尋來決定讀取緩衝區命中是否發生。回應於決定沒有讀取緩衝區命中發生,控制器120用邏輯位址的範圍、讀取緩衝區ID、列表類型、總讀取計數、以及時間戳記來填滿讀取緩衝區表900a中之新的條目。
此外,回應於從主機101接收到讀取命令,控制器120搜尋讀取緩衝區表900a以及決定讀取緩衝區命中具有相同邏輯位址之範圍的現有條目。如果決定讀取緩衝區命中,則控制器120增量讀取命中計數(因而增加總讀取計數),將列表類型從自由列表設定為使用中列表,將讀取緩衝區移至使用中列表300,以及從讀取緩衝區中讀取現有資料。
在資料的複製被轉移至主機101之後,控制器120依據新的存取頻率和針對LCA之更新後的總讀取計數而將該讀取緩衝區重新安置於自由列表320,並且據以更新讀取緩衝區表900a。這確保了自由列表320依據讀取緩衝區的存取頻率和總讀取計數而被動態地排序(sorted),其可以改變於儲存裝置100的操作期間。
圖10為依據各種配置,繪示用以管理使用中列表1000及自由列表1020中之讀取緩衝區之範例方法的方塊圖。參照圖1至圖10,使用中列表1000為使用中列表300的範例實作,而自由列表1020為自由列表320的範例實作。
使用中列表1000為一讀取緩衝區的列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,使用中列表1000包含緩衝區ID 1010a、緩衝區ID 1010b、及緩衝區ID 1010c。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,使用中列表1000的頭,緩衝區ID 1010a,係鏈結到第二個緩衝區ID 1010b,而第二個緩衝區ID 1010b係鏈結到最後一個緩衝區ID 1010c。最後一個緩衝區ID 1010c係鏈結到NULL,其表示緩衝區ID 1010c是使用中列表1000的尾。
自由列表1020為一讀取緩衝區的列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,自由列表1020包含緩衝區ID 1030a、緩衝區ID 1030b、及緩衝區ID 1030c。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,自由列表1020的頭,緩衝區ID 1030a,係鏈結到第二個緩衝區ID 1030b,而第二個緩衝區ID 1030b係鏈結到最後一個緩衝區ID 1030c。最後一個緩衝區ID 1030c係鏈結到NULL,其表示緩衝區ID 1030c是自由列表1020的尾。
回應於接收到針對邏輯位址的非重疊範圍之讀取命令(沒有命中自由列表1020或使用中列表1000中的任何緩衝區),控制器120分配目前為自由列表1020之頭的讀取緩衝區(例如,動應於緩衝區ID 1030a)。如所述者,在一些範例中,一旦在預定數量(例如,N/4)的讀取緩衝區分配中,最晚的讀取緩衝區(例如,對應於最早的時間戳記之讀取緩衝區)被分配,而不是自由列表1020的頭。
在被分配之後,在104,由緩衝區ID 1030a所識別的讀取緩衝區從自由列表1020移動到使用中列表1000。如所示者,緩衝區ID 1030a被移動到使用中列表1000的尾,作為緩衝區ID 1010c。控制器120發出讀取命令至NVM 140,並且將從NVM 140所讀出的資料儲存在那個讀取緩衝區中。在控制器120將資料從讀取緩衝區(緩衝區ID 1010c)轉移至主機101之後,控制器120將讀取緩衝區(緩衝區ID 1010c)移回到自由列表1020。在所示的範例中,回應於決定存取頻率值為預定數(例如,第二值,707:是),控制器120在1042 (708)將讀取緩衝區(緩衝區ID 1010c)移動到自由列表1020的頭,在那裡,緩衝區ID 1010c再次對應於緩衝區ID 1030a。或者,控制器120將讀取緩衝區(緩衝區ID 1010c)移動進入第二群組542之中。在其他範例中,如所述者,控制器120能夠依據讀取緩衝區(緩衝區ID 1010c)之更新後的總讀取計數而將讀取緩衝區(緩衝區ID 1010c)移動到自由列表1020。
圖11為依據各種配置,繪示用以管理使用中列表1100及自由列表1120中之讀取緩衝區之範例方法的方塊圖。參照圖1至圖11,使用中列表1100為使用中列表300的範例實作,而自由列表1120為自由列表320的範例實作。
使用中列表1100為一讀取緩衝區的列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,使用中列表1100包含緩衝區ID 1110a、緩衝區ID 1110b、及緩衝區ID 1110c。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,使用中列表1100的頭,緩衝區ID 1110a,係鏈結到第二個緩衝區ID 1110b,而第二個緩衝區ID 1110b係鏈結到最後一個緩衝區ID 1110c。最後一個緩衝區ID 1110c係鏈結到NULL,其表示緩衝區ID 1110c是使用中列表1100的尾。
自由列表1120為一讀取緩衝區的列表,每一個讀取緩衝區被一對應的緩衝區ID所識別。如所示者,自由列表1120包含緩衝區ID 1130a、緩衝區ID 1130b、及緩衝區ID 1130c。每一個緩衝區ID係鏈結到下一個緩衝區ID。例如,自由列表1120的頭,緩衝區ID 1130a,係鏈結到第二個緩衝區ID 1130b,而第二個緩衝區ID 1130b係鏈結到最後一個緩衝區ID 1130c。最後一個緩衝區ID 1130c係鏈結到NULL,其表示緩衝區ID 1130c是自由列表1120的尾。
在一些配置中,回應於在NDTWIN期間接收到新的寫入或解除分配命令,控制器120針對讀取緩衝區命中而搜尋讀取緩衝區表900a。例如,控制器120能夠決定所接收到之寫入或解除分配命令的邏輯位址(例如,LCA)之範圍和對應於緩衝區ID 1130b的邏輯位址之範圍係相同的。在此情況下,控制器120將資料寫至寫入緩衝區快取記憶體。控制器120接著使重疊的邏輯位址之範圍無效,並且在1141,將對應的讀取緩衝區ID 1130b移至自由列表1120的頭(作為緩衝區ID 1130a),即將由下一個非重疊讀取所耗損。寫入緩衝區中的資料最終將被寫至NVM 140。
在一些配置中,回應於在DTWIN和NDTWIN兩者中接收到新的讀取命令,讀取緩衝區表900a能夠被填滿及搜尋。讀取命中寫入緩衝區能夠被平行地刪除。
當針對非重疊讀取而從自由列表320的開始分配讀取緩衝區時,針對該緩衝區之先前的LCA條目(如果有的話)能夠從讀取緩衝區表900a中被去除,而且新的LCA條目連同相關聯之新的總讀取計數和時間戳記一起被添加至讀取緩衝區表900a。
在一些其中多個命中使用的緩衝區已經被決定的配置中,那些使用的讀取命令ID能夠使用鏈結的列表而排隊(queued up)。圖12為依據各種配置,繪示針對在使用中列表1200中所識別之各緩衝區所維持之範例等候讀取命令ID列表的方塊圖。參照圖1至圖12,使用中列表1100為一讀取緩衝區的列表,其包含讀取緩衝區ID 1210a、1210b、…、及1210n,如同本文中所述者。該等讀取緩衝區ID 1210a、1210b、…、及1210n的每一個係鏈結至或者包含等候讀取命令ID列表1210a、1210b、…、及1210n之對應的一個。
等候讀取命令ID列表1210a中的每一個讀取命令ID(例如,讀取命令ID A、讀取命令ID B、…、讀取命令ID N)對應於從主機101所接收到之針對緩衝區ID 1210a (例如,命中緩衝區ID 1210a的LCA)的邏輯位址之範圍(例如,LCA)的讀取命令。如所示者,等候讀取命令ID列表1220a包含讀取命令ID A、讀取命令ID B、…、及讀取命令ID N。每一個讀取命令ID係鏈結至下一個讀取ID命令。例如,等候讀取命令ID列表1220a的頭,讀取命令ID A,係鏈結至第二讀取命令ID B、等等。最後一個讀取命令ID N係鏈結到NULL,其表示該讀取命令ID N是等候讀取命令ID列表1220a的尾,其已命中對應於特別的讀取命令ID之LCA。每一個讀取命令ID識別由控制器120從主機101所接收到之讀取命令。在等候讀取命令ID列表1220a中的讀取命令ID A到N能夠依據該等讀取命令ID A到N的每一個的時間戳記來排隊。於較早時間所接收到之讀取命令 (例如,讀取命令ID A)被放在朝向等候讀取命令ID列表1220a的頭。其他的等候讀取命令ID列表1220b到1220n被類似地組構,如所示者。
在控制器120將資料從NVM轉移到對應於使用中列表300中之緩衝區ID的讀取緩衝區之後,等候列表1200中針對相同的邏輯位址之範圍(由對應之讀取命令ID所識別的)所有的讀取命令能夠使用相同的緩衝區來予以服務。
當資料由於寫入而係過時之時,假設針對對應於邏輯位址之範圍的重疊寫入命令使來自讀取緩衝區表900a之對應於相同的邏輯位址之範圍的條目無效,控制器120能夠搜尋讀取緩衝區表900a同時搜尋讀取命中寫入緩衝區。這改善了整體讀取延遲。
因此,如本文中所述者,本配置係有關讀取緩衝區機制,其使用讀取命令的“存取頻率(Access Frequency)”欄位來改善讀取性能。因此,存取頻率值為能夠被用來改善性能及增加NAND壽命的元資料(metadata)。控制器120能夠使用讀取命令之“存取頻率(Access Frequency)”欄位中的存取頻率值來管理自由列表320,使得快取頻繁讀取之資料的讀取緩衝區能夠被維持很長的一段時間,而且頻繁寫入及/或不頻繁讀取的資料早點被釋出,因而增加通量以及增加熱門資料的延遲。
除此之外,快取之緩衝區的讀取命中計數和WL群組中之NAND讀取干擾讀取計數被用來決定自由列表320中讀取緩衝區的順序,並且因而被用來快取更頻繁讀取的資料。這減少了讀取干擾掃描讀取和讀取干擾改造,因而減小寫入放大以及增加NAND壽命。
依據最常被使用以及最近被使用的快取政策來排序讀取緩衝區之自由緩衝區列表的實作讓讀取緩衝區能夠有效率地釋出,使得讀取緩衝區能夠同時用作為動態讀取緩衝區快取記憶體。因而,施行如本文中所述之有效率的緩衝區分配和釋出政策以及讀取命令年表(chronology),讀取決定論(determinism)能夠被改善於DTWIN中而且自主轉變至NDWIN能夠被減少。
圖13為依據各種配置,繪示用以管理讀取緩衝區之範例方法1300的流程圖。參照圖1至圖13,方法1300能夠藉由控制器120來予以實施。
在1310,控制器120從主機101接收指示儲存裝置100(例如,NVM 140)中所儲存之資料被存取的頻率之資訊。在1320,回應於接收該資訊,控制器120(例如,緩衝區管理程序125)決定儲存裝置100之讀取緩衝區152被分配給下一個讀取命令的順序。在一些範例中,決定讀取緩衝區152被分配的順序指的是決定自由列表320中之讀取緩衝區152的順序。自由列表320中的每一個讀取緩衝區對應於存活的時間(time to live),其係定義為讀取命令的完成(完成將資料從讀取緩衝區轉移至主機101)與被分配給不同的邏輯位址範圍之下一個新的讀取命令之間的一段時間。被放置在或者較接近自由列表320之頭的讀取緩衝區具有比被放置在或者較接近自由列表320之尾的讀取緩衝區更短的存活時間。
在一些配置中,讀取緩衝區152的每一個儲存對應於邏輯位址之範圍的資料。指示資料被存取之頻率的資訊包含針對讀取緩衝區152的每一個之邏輯位址範圍的存取頻率值(顯示於表400中)。控制器120(例如,緩衝區管理程序125)至少部分根據對應於讀取緩衝區152的每一個之存取頻率值來排列自由列表320中的讀取緩衝區。
在一些範例中,存取頻率值指示所期望之讀取頻率或者所期望之讀取頻率和所期望之寫入頻率之組合中的一個。從主機101所接收到之對應於邏輯位址之範圍的讀取命令包含存取頻率值。
在一些範例中,自由列表320中的讀取緩衝區152係依據針對讀取緩衝區152的每一個之總讀取計數來予以排列的。在讀取緩衝區152之具有較低總讀取計數的第二讀取緩衝區被分配之後,讀取緩衝區152之具有較高總讀取計數的第一讀取緩衝區被分配給新的讀取命令。針對讀取緩衝區152的每一個之總讀取計數為讀取命中計數、NAND讀取計數、和指定讀取計數的和。在一些範例中,讀取緩衝區表900a針對讀取緩衝區152的每一個儲存邏輯位址之範圍、讀取緩衝區ID、緩衝區的類型、總讀取計數、和時間戳記中的一或更多者。
在一些範例中,自由列表320中讀取緩衝區152中的至少一些係依據針對該等讀取緩衝區的每一個之總讀取計數來予以排列的。在讀取緩衝區152之具有較低總讀取計數和較晚時間戳記的第二讀取緩衝區被分配之後,讀取緩衝區152之具有較高總讀取計數和較早時間戳記的第一讀取緩衝區被分配給新的讀取命令。
在一些配置中,自由列表230 (500)中的讀取緩衝區152包含第一群組541、第二群組542、及第三群組543。第一群組541包含第一讀取緩衝區(對應於緩衝區ID 501到510),其各自對應於無效資料。第二群組542包含第二讀取緩衝區(對應於緩衝區ID 511到520),其各自具有對應於頻繁寫入及不頻繁讀取的存取頻率值(例如,表400中之值為2、4、5、6、7、或8的存取頻率值)。第三群組543包含依據針對第三讀取緩衝區的每一個之總讀取計數而排列的第三讀取緩衝區(對應於緩衝區ID 521到530)。在一些範例中,在第一讀取緩衝區和第二讀取緩衝區被分配之後,第三讀取緩衝區被分配給新的讀取命令。在第一讀取緩衝區被分配之後,第二讀取緩衝區被分配給新的讀取命令。
在一些配置中,回應於決定新讀取命令之邏輯位址的範圍和自由列表320中任何讀取緩衝區之邏輯位址的範圍係不同的(沒有命中緩衝區,該範圍係非重疊的),控制器120(緩衝區管理程序125)從自由列表320開始分配第一讀取緩衝區。控制器120從NVM 140中將對應於新讀取命令之邏輯位址範圍的資料讀進到第一讀取緩衝區之中。控制器120將資料從第一讀取緩衝區轉移至主機101。
在一些其中新讀取命令中的存取頻率值(例如,3)對應於頻繁讀取及不頻繁寫入的範例中,控制器120(緩衝區管理程序125)將高的指定讀取計數指派給第一讀取緩衝區。在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)依據至少部分基於該高的指定讀取計數所決定之第一讀取緩衝區的總讀取計數而將第一讀取緩衝區加回到自由列表320。
在一些其中新讀取命令中的存取頻率值(例如,2、4、5、6、7、或8)對應於不頻繁讀取或頻繁寫入中的一或更多者的範例中,在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)將第一讀取緩衝區加回到自由列表320的第二群組。
在一些其中新讀取命令中的存取頻率值(例如,0或1)對應於沒有頻率資訊被提供或者典型數量的讀取和寫入的範例中,在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)依據第一讀取緩衝區之總讀取計數而將第一讀取緩衝區加回到自由列表230。
在一些配置中,回應於決定新讀取命令之邏輯位址的範圍和自由列表中該等讀取緩衝區的第一讀取緩衝區之邏輯位址的範圍係相同的,控制器120(緩衝區管理程序125)增加第一讀取緩衝區的讀取命中計數。
在一些其中新讀取命令中的存取頻率值(例如,2、4、5、6、7、或8)對應於不頻繁讀取或頻繁寫入中的一或更多者的範例中,在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)將第一讀取緩衝區加回到自由列表320的第二群組。
在一些其中新讀取命令中的存取頻率值(例如,0或1)對應於沒有頻率資訊被提供或者典型數量的讀取和寫入的範例中,在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)依據第一讀取緩衝區之總讀取計數而將第一讀取緩衝區加回到自由列表230。
在一些其中新讀取命令中的存取頻率值(例如,3)對應於頻繁讀取及不頻繁寫入的範例中,在將資料轉移至主機101之後,控制器120(緩衝區管理程序125)依據第一讀取緩衝區的總讀取計數而將第一讀取緩衝區加回到自由列表320。
先前的說明係提供來致使習於此技藝者能夠實行本文中所述的各種態樣。對這些態樣的各式各樣修正對於習於此技藝者而言將是很容易顯而易知的,而且本文中所定義的一般性原則可以被應用到其他態樣。因此,申請專利範圍並不想要被限定於本文中所示出的該等態樣,而是要給予與申請專利範圍一致的充分範疇,其中,對呈單數形式之元件的參考並不意欲有“一個而且僅一個”的意思,除非有特別地述明,而是指“一或更多個”的意思。除非有特別地述明,用語“一些”指的是“一或更多個”。先前說明中通篇所述之對一般習於此技藝者而言為已知或稍後可知之各種態樣的元件的所有結構及功能上的等同物在本文中明確被併入作為參考並且打算被包含在申請專利範圍中。而且,本文中所揭示之所有者並不想要獻給大眾,不管此種揭示是否明確詳述於申請專利範圍中。沒有任何元件要被建構為功能附加手段,除非該元件係使用“means for”來加以明確敘述。
要了解的是,所揭示之過程中的步驟的特定順序或等級為說明性方法的範例。基於設計偏好,要了解的是過程中之步驟的特定順序或等級可以被重新排列,且同時仍然保持在先前說明的範疇之內。隨附的方法項申請專利範圍按照樣本順序來展示各種步驟的要素,而且不意謂要被限定於所展示的特定順序或等級。
所揭示之實作的先前說明係提供來致使習於此技藝者能夠製作或使用所揭示之標的物。對這些實作的各式各樣修正對於習於此技藝者而言將是很容易顯而易知的,而且本文中所定義的一般性原則可以被應用到其他實作而诶有違離先前說明的精神或範疇。因此,先前的說明並不想要被限定於本文中所示出的該等實作,而是要給予與本文中所揭示之原理及新穎特徵一致的最寬廣的範圍。
所繪示及所說明的各種範例僅被提供做為用來繪示申請專利範圍之各種特徵的範例。然而,相關於任意給定之範例所示及所述的特徵不需要被限定於相關聯的範例而且可以和所示及所述之其他範例一起使用或相結合。此外,申請專利範圍不想要被任何一個範例所限定。
前述方法說明和過程流程圖僅被提供做為說明性的範例而且不打算要求或隱含各種範例的步驟必須按照所顯示的順序進行。如同將由習於此技藝者所領會到的,前述範例中之步驟的順序可以用任意的順序來進行。諸如「其後」、「然後」、「接著」等等的用語不打算要限制步驟的順序;這些用字僅被用來經由該等方法的說明來引導讀者。此外,對呈單數形式之元件的任何參考,例如使用冠詞“a”、“an”、或“the”,並不意欲被建構為將該元件限定為單數。
配合本文中所揭示之範例所述的各種說明性邏輯方塊、模組、電路、以及演算法步驟可以被施行作為電子硬體、電腦軟體、或兩者的組合。為了清楚地繪示此硬體和軟體的可互換性,各種說明性組件、方塊、模組、電路、和步驟通常按照他們的功能性而已經被說明於上。此種功能性是否被施行作為硬體或軟體端視施加於整體系統之上的特別應用及設計而定。熟練的藝匠可以針對每一個特別的應用而用不同的方法來施行所述的功能性,但是此等實作決定不應該被解譯為造成離開本發明的範疇。
用來施行配合本文中所揭示之範例所述的各種說明性邏輯、邏輯方塊、模組、及電路的硬體可以和通用處理器、DSP、ASIC、FPGA或其他可編程的邏輯裝置、分開的閘或電晶體邏輯、分開的硬體組件、或者其被設計成實施本文中所述之功能的任何組合一起被施行或實施。通用處理器可以是微處理器,但是替代地,該處理器可以是任何習知的處理器、控制器、微控制器、或狀態機器。處理器也可以被施行作為計算裝置的組合,例如,DSP和微處理器的組合、複數個微處理器、一或更多個處理器結合DSP核心、或者任何其他此中組態。或者,某些步驟或方法可以藉由專用於給定功能的電路來予以實施。
在一些代表性範例中,所述的功能可以用硬體、軟體、韌體、或其任意組合來予以施行。如果用軟體來予以施行,則該等功能可以被儲存作為非暫態性電腦可讀儲存媒體或非暫態性處理器可讀儲存媒體上的一或更多個指令或代碼。本文中所揭示之方法或演算法的步驟可以被具體化於處理器可執行軟體模組,其可位於非暫態性電腦可讀或處理器可讀儲存媒體上。非暫態性電腦可讀或處理器可讀儲存媒體可以是可以由電腦或處理器來予以存取的任何儲存媒體。舉例說明但非限制性的,此種非暫態性電腦可讀或處理器可讀儲存媒體可包含RAM、ROM、EEPROM、FLASH記憶體、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存器、或者可以被用來以指令或資料結構的形式來儲存所想要的程式碼以及可由電腦來予以存取的任何其他媒體。磁碟片(disk)和光碟片(disc),如同本文中所使用者,包含壓縮碟片(CD)、雷射碟片、光碟片、數位多功能碟片(DVD)、軟碟片、以及藍光碟片,其中,磁碟片(disk)通常以磁性的方式來再現複製資料,而光碟片(disc)以光學的方式用雷射來再現複製資料。上面的組合也被包含在非暫態性電腦可讀或處理器可讀媒體之內。除此之外,方法或演算法的操作可以作為非暫態性處理器可讀儲存媒體及/或電腦可讀儲存媒體上之代碼及/或指令的任何組合或集合,其可被併入於電腦程式產品內。
所揭示之範例的前述說明被提供來致使任何習於此技藝者能夠製作或使用本發明。對這些範例的各式各樣修正對於習於此技藝者而言將是很容易顯而易知的,而且本文中所定義的一般性原則可以被應用到一些範例而沒有違離本發明的精神或範疇。因此,本發明並不想要被限定於本文中所示出的該等範例,而是要給予與下面的申請專利範圍以及本文中所揭示之原理及新穎特徵一致之最寬廣的範圍。
100:儲存裝置
101:主機
110:主機介面
120:控制器
125:緩衝區管理程序
130:快取記憶體
132:快閃記憶體轉換層
134:映射表
136:快閃記憶體介面
140:非揮發性記憶體
142a~142d:NAND快閃記憶體晶粒
144a~144d:NAND快閃記憶體晶粒
146a~146d:NAND快閃記憶體晶粒
148a~148d:NAND快閃記憶體晶粒
152:讀取緩衝區
154:讀取緩衝區表
156:寫入緩衝區
200:架構
202,204,206,208:隔離區域
300:使用中列表
310a~310n:緩衝區ID
320:自由列表
330a~330n:緩衝區ID
400:表
500:自由列表
501~530:緩衝區ID
541:第一群組
542:第二群組
543:第三群組
900a:讀取緩衝區表
900b:讀取緩衝區表
1000:使用中列表
1010a~1010c:緩衝區ID
1020:自由列表
1030a~1030c:緩衝區ID
1110a~1110c:緩衝區ID
1130a~1130c:緩衝區ID
1200:使用中列表
1210a~1210n:緩衝區ID
1220a~1220n:等候讀取命令ID列表
[圖1]係依據一些配置,顯示範例儲存裝置的方塊圖。
[圖2]係依據一些實作,支援低延遲(latency)操作之架構的方塊圖。
[圖3]係依據一些配置,繪示使用中列表(in-use list)及自由列表(free list)的方塊圖。
[圖4]係依據NVMe協定,繪示範例存取頻率值的表。
[圖5]係依據一些配置,繪示自由列表的方塊圖。
[圖6]係依據各種配置,繪示用以執行讀取命令之範例方法的流程圖。
[圖7]係依據各種配置,繪示用以執行讀取命令(對讀取緩衝區沒有讀取命中)之範例方法的流程圖。
[圖8]係依據各種配置,繪示用以執行讀取命令(對讀取緩衝區沒有讀取命中)之範例方法的流程圖。
[圖9A及9B]係依據各種配置,用來維持讀取緩衝區之總讀取計數的範例讀取緩衝區表。
[圖10]係依據各種配置,繪示用以管理使用中列表及自由列表中之讀取緩衝區之範例方法的方塊圖。
[圖11]係依據各種配置,繪示當重疊寫入或解除分配命令使緩衝區識別符(ID)無效時,用以管理使用中列表及自由列表中之讀取緩衝區之範例方法的方塊圖。
[圖12]係依據各種配置,繪示針對在使用中列表中之各緩衝區所維持之範例等候讀取命令ID列表的方塊圖。
[圖13]係依據各種配置,繪示用以管理讀取緩衝區之範例方法的流程圖。
100:儲存裝置
101:主機
110:主機介面
120:控制器
125:緩衝區管理程序
130:快取記憶體
132:快閃記憶體轉換層
134:映射表
136:快閃記憶體介面
140:非揮發性記憶體
142a~142d:NAND快閃記憶體晶粒
144a~144d:NAND快閃記憶體晶粒
146a~146d:NAND快閃記憶體晶粒
148a~148d:NAND快閃記憶體晶粒
152:讀取緩衝區
154:讀取緩衝區表
156:寫入緩衝區
Claims (20)
- 一種方法,包括: 由儲存裝置之控制器從主機接收指示該儲存裝置中所儲存之資料被存取之頻率的資訊;以及 回應於接收該資訊,由該控制器按照該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序而將他們鏈結在一起。
- 如請求項1之方法,其中 該等讀取緩衝區的每一個儲存對應於邏輯位址之範圍的資料; 指示該資料被存取之該頻率的該資訊包括針對該等讀取緩衝區的每一個之該邏輯位址範圍的存取頻率值;以及 其中,鏈結在一起包含由該控制器至少部分根據對應於該等讀取緩衝區的每一個之該存取頻率值來排列該等讀取緩衝區於自由列表中。
- 如請求項2之方法,其中 該存取頻率值指示所期望之讀取頻率或者該所期望之讀取頻率和所期望之寫入頻率之組合中的一個;以及 從該主機所接收到之對應於該邏輯位址範圍的讀取命令包括該存取頻率值。
- 如請求項2之方法,其中 該自由列表中的該等讀取緩衝區係依據針對該等讀取緩衝區的每一個之總讀取計數來予以排列的;以及 在該等讀取緩衝區之具有較低總讀取計數的第二讀取緩衝區被分配之後,該等讀取緩衝區之具有較高總讀取計數的第一讀取緩衝區被分配給新的讀取命令。
- 如請求項4之方法,其中,針對該等讀取緩衝區的每一個之該總讀取計數為讀取命中計數、NAND讀取計數、和指定讀取計數的和。
- 如請求項5之方法,其中,讀取緩衝區表針對該等讀取緩衝區的每一個而儲存邏輯位址之範圍、讀取緩衝區識別符(ID)、緩衝區的類型、該總讀取計數、和時間戳記中的一或更多者。
- 如請求項2之方法,其中 該自由列表中之該等讀取緩衝區中的至少一些係依據針對該等讀取緩衝區的每一個之總讀取計數來予以排列的;以及 在該等讀取緩衝區之具有較低總讀取計數和較晚時間戳記的第二讀取緩衝區被分配之前,該等讀取緩衝區之具有較高總讀取計數和較早時間戳記的第一讀取緩衝區被分配給新的讀取命令。
- 如請求項2之方法,其中 該自由列表中的該等讀取緩衝區包括第一群組、第二群組、及第三群組; 該第一群組包括各自對應於無效資料的第一讀取緩衝區; 該第二群組包括各自具有對應於頻繁寫入及不頻繁讀取之存取頻率值的第二讀取緩衝區;以及 該第三群組包括依據針對第三讀取緩衝區的每一個之總讀取計數而排列的該等第三讀取緩衝區。
- 如請求項8之方法,其中 在該等第一讀取緩衝區和該等第二讀取緩衝區被分配之後,該等第三讀取緩衝區被分配給新的讀取命令;以及 在該等第一讀取緩衝區被分配之後,該等第二讀取緩衝區被分配給新的讀取命令。
- 如請求項2之方法,另包括回應於決定新讀取命令之邏輯位址的範圍和該自由列表中該等讀取緩衝區任意者之邏輯位址的範圍係不同的: 由該控制器從該自由列表開始分配第一讀取緩衝區; 由該控制器從該儲存裝置之非揮發性記憶體中將對應於該新讀取命令之該邏輯位址範圍的資料讀進到該第一讀取緩衝區之中;以及 由該控制器將該資料從該第一讀取緩衝區轉移至該主機。
- 如請求項10之方法,其中 該存取頻率值係包含在該新讀取命令中而且對應於頻繁讀取及不頻繁寫入;以及 該方法另包括: 由該控制器將高的指定讀取計數指派給該第一讀取緩衝區; 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器依據至少部分根據該高的指定讀取計數所決定之該第一讀取緩衝區的總讀取計數而將該第一讀取緩衝區加回到該自由列表。
- 如請求項10之方法,其中 該存取頻率值係包含在該新讀取命令中而且對應於不頻繁讀取或頻繁寫入中的一或更多者;以及 該方法另包括: 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器將該第一讀取緩衝區加回到該自由列表的一位置,其中,該位置對應於一群組的讀取緩衝區,其各自具有對應於頻繁寫入和不頻繁讀取的存取頻率值。
- 如請求項10之方法,其中 該存取頻率值係包含在該新讀取命令中而且對應於沒有頻率資訊被提供或者典型數量的讀取和寫入;以及 該方法另包括: 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器依據該第一讀取緩衝區之總讀取計數而將該第一讀取緩衝區加回到該自由列表。
- 如請求項2之方法,其中,回應於決定新讀取命令之該邏輯位址的範圍和該自由列表中該等讀取緩衝區的第一讀取緩衝區之邏輯位址的範圍係相同的,增加該第一讀取緩衝區的讀取命中計數。
- 如請求項14之方法,其中 該存取頻率值係包含在該新讀取命令中的而且對應於不頻繁讀取或頻繁寫入中的一或更多者;以及 該方法另包括: 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器將該第一讀取緩衝區加回到該自由列表的一位置,其中,該位置對應於一群組的讀取緩衝區,其各自具有對應於頻繁寫入和不頻繁讀取的存取頻率值。
- 如請求項14之方法,其中 該存取頻率值係包含在該新讀取命令中而且對應於沒有頻率資訊被提供或者典型數量的讀取和寫入;以及 該方法另包括: 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器依據總讀取計數而將該第一讀取緩衝區加回到該自由列表。
- 如請求項14之方法,其中 該存取頻率值係包含在該新讀取命令中而且對應於頻繁讀取及不頻繁寫入;以及 該方法另包括: 將該資料轉移至該主機;以及 在將該資料轉移至該主機之後,由該控制器依據總讀取計數而將該第一讀取緩衝區加回到該自由列表。
- 一種儲存裝置,包括: 非揮發性儲存器; 複數個讀取緩衝區;以及 控制器,其係組構成: 從主機接收指示該儲存裝置中所儲存之資料被存取之頻率的資訊;以及; 回應於接收該資訊,按照該等讀取緩衝區被分配給下一個讀取命令的順序而將他們鏈結在一起。
- 如請求項18之儲存裝置,其中 該等讀取緩衝區的每一個儲存對應於邏輯位址之範圍的資料; 指示該資料被存取之該頻率的該資訊包括針對該等讀取緩衝區的每一個之該邏輯位址範圍的存取頻率值;以及 該控制器另被組構成至少部分根據對應於該等讀取緩衝區的每一個之該存取頻率值來排列該等讀取緩衝區於自由列表中。
- 一種非暫態性電腦可讀媒體,包括電腦可讀指令,使得當該等電腦可讀指令被執行時,致使處理器用以: 從主機接收指示儲存裝置中所儲存之資料被存取之頻率的資訊;以及 回應於接收該資訊,按照該儲存裝置之讀取緩衝區被分配給下一個讀取命令的順序而將他們鏈結在一起。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/025,898 | 2020-09-18 | ||
US17/025,898 US11392499B2 (en) | 2020-09-18 | 2020-09-18 | Dynamic buffer caching of storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202343259A true TW202343259A (zh) | 2023-11-01 |
Family
ID=80646064
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110134238A TWI809504B (zh) | 2020-09-18 | 2021-09-14 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
TW112125974A TW202343259A (zh) | 2020-09-18 | 2021-09-14 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110134238A TWI809504B (zh) | 2020-09-18 | 2021-09-14 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11392499B2 (zh) |
CN (1) | CN114201417A (zh) |
TW (2) | TWI809504B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11417410B2 (en) * | 2020-09-16 | 2022-08-16 | Kioxia Corporation | Die-based high and low priority error queues |
US11435920B2 (en) * | 2021-01-20 | 2022-09-06 | Western Digital Technologies, Inc. | Storage system and method for using read and write buffers in a memory |
US11886741B2 (en) * | 2021-04-16 | 2024-01-30 | Samsung Electronics Co., Ltd. | Method and storage device for improving NAND flash memory performance for intensive read workloads |
US11842069B2 (en) | 2022-01-14 | 2023-12-12 | Western Digital Technologies, Inc. | Storage system and method for delaying flushing of a write buffer based on a host-provided threshold |
US20240168881A1 (en) * | 2022-11-22 | 2024-05-23 | Samsung Electronics Co., Inc. | Storage device and data processing method |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL7510904A (nl) * | 1975-09-17 | 1977-03-21 | Philips Nv | Woordgroepsprioriteitsinrichting. |
US6092127A (en) * | 1998-05-15 | 2000-07-18 | Hewlett-Packard Company | Dynamic allocation and reallocation of buffers in links of chained DMA operations by receiving notification of buffer full and maintaining a queue of buffers available |
US6370619B1 (en) * | 1998-06-22 | 2002-04-09 | Oracle Corporation | Managing partitioned cache |
US6615318B2 (en) * | 2002-01-22 | 2003-09-02 | International Business Machines Corporation | Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries |
US8117396B1 (en) * | 2006-10-10 | 2012-02-14 | Network Appliance, Inc. | Multi-level buffer cache management through soft-division of a uniform buffer cache |
TWI375953B (en) * | 2008-02-21 | 2012-11-01 | Phison Electronics Corp | Data reading method for flash memory, controller and system therof |
CN102023811B (zh) * | 2009-09-10 | 2012-11-28 | 群联电子股份有限公司 | 对闪存下达程序化指令的方法和系统 |
US9355036B2 (en) * | 2012-09-18 | 2016-05-31 | Netapp, Inc. | System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers |
WO2014102886A1 (en) * | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Information processing apparatus and cache control method |
US9563382B2 (en) * | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
US11093397B1 (en) * | 2015-05-19 | 2021-08-17 | EMC IP Holding Company LLC | Container-based flash cache with a survival queue |
US10108552B2 (en) * | 2015-08-21 | 2018-10-23 | International Business Machines Corporation | Using cache lists for processors to determine tracks to demote from a cache |
US10185660B2 (en) * | 2015-12-22 | 2019-01-22 | Reduxio Systems Ltd. | System and method for automated data organization in a storage system |
US10423541B1 (en) * | 2016-12-22 | 2019-09-24 | Amazon Technologies, Inc. | Using encryption within a computing system |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
US10126964B2 (en) * | 2017-03-24 | 2018-11-13 | Seagate Technology Llc | Hardware based map acceleration using forward and reverse cache tables |
US10691596B2 (en) * | 2018-04-27 | 2020-06-23 | International Business Machines Corporation | Integration of the frequency of usage of tracks in a tiered storage system into a cache management system of a storage controller |
US11144474B2 (en) * | 2018-06-26 | 2021-10-12 | International Business Machines Corporation | Integration of application indicated maximum time to cache to least recently used track demoting schemes in a cache management system of a storage controller |
CN110737399B (zh) * | 2018-07-20 | 2023-09-05 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
TWI688859B (zh) * | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
US11182307B2 (en) * | 2020-02-22 | 2021-11-23 | International Business Machines Corporation | Demoting data elements from cache using ghost cache statistics |
-
2020
- 2020-09-18 US US17/025,898 patent/US11392499B2/en active Active
-
2021
- 2021-09-14 TW TW110134238A patent/TWI809504B/zh active
- 2021-09-14 TW TW112125974A patent/TW202343259A/zh unknown
- 2021-09-17 CN CN202111093459.7A patent/CN114201417A/zh active Pending
-
2022
- 2022-07-18 US US17/867,074 patent/US11797452B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11392499B2 (en) | 2022-07-19 |
US11797452B2 (en) | 2023-10-24 |
TWI809504B (zh) | 2023-07-21 |
US20220350746A1 (en) | 2022-11-03 |
CN114201417A (zh) | 2022-03-18 |
US20220091984A1 (en) | 2022-03-24 |
TW202217576A (zh) | 2022-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI809504B (zh) | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 | |
US11579773B2 (en) | Memory system and method of controlling memory system | |
US10761777B2 (en) | Tiered storage using storage class memory | |
JP6832187B2 (ja) | データストレージサブシステムにおけるキャッシングのための方法およびシステム | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
US9128847B2 (en) | Cache control apparatus and cache control method | |
US8688894B2 (en) | Page based management of flash storage | |
US20170024140A1 (en) | Storage system and method for metadata management in non-volatile memory | |
CN113508368A (zh) | 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用 | |
US9792073B2 (en) | Method of LUN management in a solid state disk array | |
KR20180123625A (ko) | 하이브리드 메모리에서 쓰기 및 플러시 지원을 위한 시스템 및 방법 | |
WO2012106362A2 (en) | Apparatus, system, and method for managing eviction of data | |
US10635581B2 (en) | Hybrid drive garbage collection | |
JP2020071583A (ja) | データ管理装置、データ管理方法、及びデータ管理プログラム | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN115993930A (zh) | 用于有序访问块修改存储器中的数据的系统、方法和装置 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
KR20230166803A (ko) | 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 | |
JP6273678B2 (ja) | ストレージ装置 |