TW201419303A - 在固態硬碟中命令執行次序的有效強制執行 - Google Patents
在固態硬碟中命令執行次序的有效強制執行 Download PDFInfo
- Publication number
- TW201419303A TW201419303A TW102130101A TW102130101A TW201419303A TW 201419303 A TW201419303 A TW 201419303A TW 102130101 A TW102130101 A TW 102130101A TW 102130101 A TW102130101 A TW 102130101A TW 201419303 A TW201419303 A TW 201419303A
- Authority
- TW
- Taiwan
- Prior art keywords
- commands
- storage
- command
- host
- subset
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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]
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)
Abstract
一種在一儲存器件中之方法包括自一主機接收用於在該儲存器件之一非揮發性記憶體中執行的儲存命令。將根據一到達次序執行該等儲存命令之至少一子集,依該到達次序接收該子集中之該等儲存命令。根據該儲存器件之內部排程準則在該非揮發性記憶體中執行該等接收到的儲存命令,該等內部排程準則允許與該到達次序之偏差,但使得該子集中之該等儲存命令之執行向該主機反映該到達次序。
Description
本發明大體上係關於資料儲存,且詳言之係關於用於實施屏障(barrier)命令之系統及方法。
在此項技術中已知用於在儲存器件與主機之間通信的各種儲存協定。一個實例儲存協定係串列進階附接技術(Serial Advanced Technology Attachment;SATA)協定,其係(例如)用於諸如硬碟機及固態硬碟(Solid State Drive;SSD)之大容量儲存設備。SATA協定被詳細說明(例如)於2009年6月2日之「串列ATA國際組織:串列ATA修訂本3.0(Serial ATA International Organization:Serial ATA Revision 3.0)」中,該文獻以引用之方式併入本文中。另一實例為NVM Express(NVMe)協定,其詳細說明(例如)於2012年2月16日之「NVM Express」修訂本1.0c中,該文獻以引用之方式併入本文中。
本文中所描述之本發明之實施例提供一種方法,其包括:在儲存器件中自主機接收用於在儲存器件之非揮發性記憶體中執行的儲存命令。將根據一到達次序執行儲存命令之至少一子集,依該到達次序接收子集中之儲存命令。根據儲存器件之內部排程準則在非揮發性記憶體中執行接收到的儲存命令,該等內部排程準則允許與到達次序之
偏差,但使得子集中之儲存命令的執行向主機反映該到達次序。
在一些實施例中,執行儲存命令包含允許在執行子集中之儲存命令的同時無阻地執行除該子集外的儲存命令。在一實施例中,非揮發性記憶體包括多個記憶體器件,且根據內部排程準則執行儲存命令包括排程儲存命令以在多個記憶體器件上執行。
在所揭示之實施例中,接收儲存命令包括自主機接收區分子集中之儲存命令與除子集外的儲存命令之一指示。在實例實施例中,接收儲存命令包括自在主機與儲存器件之間定義之多個佇列讀取儲存命令,且接收該指示包括自該等佇列中的預定義為有序佇列之佇列讀取子集中之命令,將根據到達次序執行該有序佇列之儲存命令。
在另一實施例中,接收儲存命令包括自主機接收各別序號,該等序號根據到達次序標記子集中之儲存命令。在又一實施例中,執行儲存命令包括根據內部排程原則在非揮發性記憶體中執行儲存命令,但僅在成功完成在到達次序中先於給定儲存命令之所有儲存命令時,才向主機應答給定儲存命令及記錄給定儲存命令之執行。
在又一實施例中,執行儲存命令包括:將提供於儲存命令中之資料項目儲存於非揮發性記憶體中;將根據到達次序指派給資料項目之各別序號儲存於非揮發性記憶體中;及在自儲存器件中之一中斷恢復時,識別儲存之序號中之間隙且使序號在該間隙之後的儲存命令取消資格。
在一些實施例中,接收儲存命令包括自在主機與儲存器件之間定義之多個佇列讀取儲存命令,包括:讀取由主機橫跨多個佇列複製之屏障命令;在識別出每一佇列中之屏障命令時停止該佇列;及當在所有佇列中達到屏障命令時釋放多個佇列。
根據本發明之實施例,另外提供包括介面及處理器之裝置。介面經組態以自主機接收用於在非揮發性記憶體中執行之儲存命令。將
根據一到達次序執行儲存命令之至少一子集,依該到達次序接收子集中之儲存命令。處理器經組態以根據裝置之內部排程準則在非揮發性記憶體中執行接收到的儲存命令,該等內部排程準則允許與到達次序之偏差,但使得子集中之儲存命令的執行向主機反映該到達次序。
根據本發明之實施例,亦提供包括非揮發性記憶體及記憶體控制器之裝置。記憶體控制器經組態以自主機接收用於在非揮發性記憶體中執行之儲存命令。將根據一到達次序執行儲存命令之至少一子集,依該到達次序接收子集中之儲存命令。記憶體控制器經組態以根據裝置之內部排程準則在非揮發性記憶體中執行接收到的儲存命令,該等內部排程準則允許與到達次序之偏差,但使得子集中之儲存命令的執行向主機反映該到達次序。
根據本發明之實施例,進一步提供一種包括主機及儲存器件之系統。主機經組態以發出儲存命令。儲存器件包括非揮發性記憶體,且該儲存器件經組態以自主機接收用於在非揮發性記憶體中執行的儲存命令,其中將根據一到達次序執行儲存命令之至少一子集,依該到達次序接收子集中之儲存命令,且該儲存器件經組態以根據儲存器件之內部排程準則在非揮發性記憶體中執行接收到的儲存命令,該等內部排程準則允許與到達次序之偏差,但使得子集中之儲存命令的執行向主機反映到達次序。
將根據結合圖式閱讀的本發明之實施例之以下詳細描述更全面地理解本發明。
20‧‧‧資料儲存系統
22‧‧‧儲存器件
24‧‧‧主機
28‧‧‧記憶體器件
32‧‧‧記憶體控制器
34‧‧‧記憶體介面
35‧‧‧中央處理單元
36‧‧‧主機介面
40‧‧‧記憶體介面
44‧‧‧處理器
圖1為示意性說明根據本發明之實施例之資料儲存系統的方塊圖;及圖2至圖5為示意性說明根據本發明之實施例之用於有序執行儲存命令的方法的流程圖。
當主機將資料儲存於非揮發性儲存器件中時,可在斷電之後在主機與儲存器件之間產生資料不一致性。舉例而言,一些非揮發性儲存器件最初將自主機接收之資料儲存於揮發性寫入緩衝器中,且隨後將資料傳送至非揮發性記憶體。此緩衝機構顯著改良了儲存器件之寫入效能,但另一方面可導致資料不一致性。
通常,一將資料置放於寫入緩衝器中,儲存器件就發送應答至主機,而不用等待資料成功傳送至非揮發性記憶體。若發生斷電,則儘管已向主機應答成功之儲存,但經緩衝但還未提交至非揮發性記憶體之資料可能丟失。
此外,儲存器件通常包含多個記憶體器件,且有時根據一些內部排程準則不按次序地執行儲存命令。因此,當發生斷電時,不能保證經緩衝資料之哪些部分被成功寫入及哪些部分丟失。
為了維持資料一致性,一些儲存協定(例如,SATA及NVMe)指定被稱為屏障寫入命令之寫入命令。屏障寫入命令確保:(i)若將屏障寫入命令之資料成功提交至非揮發性記憶體,則可保證亦成功提交了在屏障寫入命令之前寫入之所有資料;及(ii)若未將屏障寫入命令之資料成功提交至非揮發性記憶體,則可保證亦未成功提交在屏障寫入命令之後寫入之所有資料。
一種供主機強制執行某一執行次序的可能方式為寫入需要在屏障寫入之前提交之所有資料、等待所有此類資料得到應答、接著發出指示儲存器件將所有經緩衝資料提交至非揮發性記憶體之「排清(flush)」命令,及在排清命令得到應答後寫入需要在屏障寫入之後提交之資料。然而,該類解決方案存在問題,此係因為在完成排清命令之前主機被阻止發出新儲存命令。執行排清命令可使系統長時期停
止,有時歷時約數百毫秒。
本文所述之本發明之實施例提供用於在諸如SSD之非揮發性儲存器件中之資料儲存的經改良方法及系統。所揭示之技術使主機及儲存器件能夠以高效及無阻之方式實施屏障寫入命令,或以其他方式強制執行一執行次序。本文所述之方法通常在儲存器件中實施為快閃轉譯層(FTL)之部分。
在一些實施例中,儲存器件自主機接收用於執行之儲存命令。
將根據在儲存器件中接收其之次序(此次序在本文中稱為「到達次序」)執行儲存命令之至少一子集(在一些情況下為所有儲存命令)。儲存器件根據內部排程準則在非揮發性記憶體中執行儲存命令,該等內部排程準則大體上允許與到達次序之偏差以便改良效能。同時,執行子集中之儲存命令以使得向主機反映到達次序。
因此,在主機看來,維持了所請求之執行次序。同時,儲存器件能夠應用其內部排程準則(該等內部排程準則可與到達次序有偏差),且因此達到高儲存效率。舉例而言,儲存器件可排程儲存命令以在多個非揮發性記憶體器件中不按次序地執行。
在本文中描述了用於利用儲存器件之平行性同時對於主機維持到達次序的若干例示性技術。所揭示之技術可分為兩種類型:供主機向儲存器件識別將根據到達次序執行哪些儲存命令之技術;及供儲存器件以所請求次序執行儲存命令之技術。
在一些實施例中,儲存器件不按次序地執行命令,但僅在成功完成先於給定命令之所有命令時應答該給定命令且更新其內部表。若某一命令失敗,則使後續命令取消資格且不應答該等後續命令。
在其他實施例中,提供於儲存命令中之資料項目被指派各別序號。記憶體器件可能不按次序地將資料項目與相應序號兩者儲存於非揮發性記憶體中。在自斷電或其他中斷恢復時,儲存器件掃描序號以
試圖找到指示命令執行失敗之間隙。若找到序號中之間隙,則使序號在間隙之後的命令取消資格。
在替代性實施例中,主機在定義於主機與儲存器件之間的所有輸入/輸出(I/O)佇列上複製屏障寫入命令。當自佇列讀取用於執行之儲存命令時,儲存器件在達到每一佇列上之屏障寫入命令時停止該佇列。當在所有佇列上達到屏障寫入命令時,釋放所有佇列。
本文中所述之方法及系統使儲存器件能夠經由使用揮發性寫入緩衝器及內部平行性及排程準則而最大化其寫入效能。同時,所揭示之技術允許實現屏障寫入命令之高效及無阻的執行以及執行次序之強制執行。
圖1為示意性說明根據本發明之實施例之資料儲存系統20的方塊圖。系統20包含儲存器件22及主機24。儲存器件22自主機24接受用於儲存之資料並將資料儲存於非揮發性記憶體中,且自非揮發性記憶體擷取資料並將資料提供至主機。儲存器件及主機可根據任何適合儲存協定(諸如上述SASA或NVMe)彼此通信。
在各種實施例中,儲存器件22可包含(例如)儲存用於個人或行動計算器件或企業系統之資料的固態硬碟(SSD),或儲存用於蜂巢式電話、媒體播放器、數位相機或其他主機之資料的微安全數位(μSD)卡。在替代性實施例中,儲存器件22可用於儲存及擷取資料之任何其他適合應用中且可與任何其他適合主機一起使用。
儲存器件22包含多個記憶體器件28。在本實例中,每一記憶體器件28包含各別快閃晶粒,其包含多個非揮發性類比記憶體胞。記憶體胞可包含(例如)NAND快閃記憶體胞、NOR或電荷捕獲型快閃記憶體(Charge Trap Flash;CTF)快閃記憶體胞、相變RAM(PRAM,亦稱為相變記憶體PCM)記憶體胞、氮化物唯讀記憶體(Nitride Read Only
Memory;NROM)記憶體胞、鐵電RAM(FRAM)及/或磁性RAM(MRAM)記憶體胞或任何其他適合記憶體技術。
在本上下文中,術語「類比記憶體胞」用於描述保持物理參數(諸如電壓或電荷)之連續類比值之任何記憶體胞。可使用任何適合類型(諸如上文所列出之類型)之類比記憶體胞。在本實例中,每一記憶體器件28包含NAND快閃記憶體胞之非揮發性記憶體。儲存於記憶體胞中之電荷位準及/或寫入至記憶體胞中及自記憶體胞中讀出之類比電壓或電流在本文中統稱為類比值或儲存值。
儲存器件22藉由程式化記憶體胞以採取各別記憶體狀態而將資料儲存於類比記憶體胞中,該等記憶體狀態亦被稱為程式化位準。自可能位準之有限集合選擇程式化位準且每一位準對應於某一標稱儲存值。舉例而言,2位元/記憶體胞MLC可經程式化以藉由將四個可能標稱儲存值中之一者寫入至記憶體胞中來採取四個可能程式化位準中之一者。
記憶體胞通常按列與行配置。通常,給定記憶體器件包含多個擦除區塊(亦稱為記憶體區塊),亦即,被一起擦除之記憶體胞之群組。在各種實施例中,每一記憶體器件28可包含已封裝器件或未封裝半導體晶片或晶粒。大體上,儲存器件22可包含任何適合數目之任何所要類型及大小之記憶體器件。
儲存器件22包含記憶體控制器32,其自主機24接受資料並將資料儲存於記憶體器件28中,且自該等記憶體器件擷取資料並將資料提供至主機。記憶體控制器32包含用於與主機24通信之主機介面36、用於與記憶體器件28通信之記憶體介面40,及處理所儲存及擷取之資料的處理器44。舉例而言,處理器44可用錯誤校正碼(Error Correction Code;ECC)編碼用於儲存之資料且解碼自記憶體讀取之資料之ECC。
主機24包含用於與儲存器件22通信之記憶體介面34,及實行各種主機功能之中央處理單元(CPU)35。
例如,可使用在任何適合CPU或其他處理器上執行之軟體、使用硬體(例如,狀態機或其他邏輯)或使用軟體元件與硬體元件之組合來實施處理器44及/或CPU 35之功能。
可以硬體實施記憶體控制器32且詳言之實施處理器44及/或CPU 35。或者,記憶體控制器及/或主機CPU可包含執行適合軟體的微處理器或硬體元件與軟體元件之組合。在一些實施例中,處理器44及/或CPU 35包含通用處理器,其以軟體程式化以實行本文所述之功能。例如,軟體可經由網路以電子形式下載至處理器,或軟體可替代性地或額外地被提供及/或儲存於有形媒體(諸如磁性、光學或電子記憶體)上。
圖1之系統組態為實例組態,其僅為了概念清晰起見而示出。亦可使用任何其他適合記憶體系統組態。舉例而言,在一些實施例中,兩個或兩個以上記憶體控制器32可連接至同一主機。已為了清晰性而自圖式省略了對理解本發明之原理而言不必要之元件,諸如,各種介面、定址電路、定時及定序電路及除錯電路。
在圖1中所示之例示性系統組態中,記憶體器件28及記憶體控制器32被實施為單獨之積體電路(IC)。然而,在替代性實施例中,記憶體器件及記憶體控制器可整合於單一多晶片封裝(Multi-Chip Package;MCP)或系統單晶片(SoC)中之單獨半導體晶粒上,且可藉由內部匯流排互連。進一步替代性地,一些或所有記憶體控制器電路系統可駐留於一或多個記憶體器件所安置於之同一晶粒上。進一步替代性地,可以軟體實施記憶體控制器32之一些或所有功能性,且藉由主機24或藉由任何其他類型之記憶體控制器實行該等功能性。在一些實施例中,可在同一晶粒或在同一器件封裝中之單獨晶粒上製造主機
24及記憶體控制器32。
在一些實施例中,記憶體控制器32包含揮發性寫入緩衝器(未在圖式中示出)。記憶體控制器32之處理器44最初將自主機24接收之資料儲存於揮發性寫入緩衝器中,且隨後將經緩衝之資料傳送至非揮發性記憶體器件28。此類緩衝增加寫入效能。舉例而言,處理器44可等待直至經緩衝資料達到某一大小(例如,整個記憶體頁)且然後批量提交經緩衝資料。
通常,一將命令置於揮發性寫入緩衝器中,處理器44就向主機24應答儲存命令而不等待命令成功執行(例如,資料成功傳送至非揮發性記憶體器件28)。若發生電力中斷,則即使已向主機24應答了成功儲存,在揮發性緩衝器中緩衝但還未提交至記憶體器件28之資料亦可能丟失。
此外,處理器44通常根據某些內部排程準則將資料儲存於各種記憶體器件28中,以便增加平行性及改良寫入效能。儲存器件22之內部排程準則大體上允許不按次序執行,亦即允許以不同於命令到達次序之次序執行儲存命令。
由於上述特徵,當發生電力中斷時,不能保證哪些儲存命令得以成功執行。在一些情況下,由於不按次序執行,會成功執行某一儲存命令但後一儲存命令並非如此。因此,可在主機24與儲存器件22之間產生資料不一致性。諸如資料庫及作業系統檔案系統之一些應用程式對資料不一致性尤其敏感。
為了示範資料不一致性之影響,考慮了主機24之作業系統中之檔案系統移動檔案之實例情境。檔案系統首先將檔案之資料寫入至新位置,且隨後更新檔案分配表(File Allocation Table;FAT)以指向資料之新位置。檔案及FAT兩者均儲存於儲存器件22之記憶體器件28中。
記憶體控制器32應答FAT更新及資料更新兩者,因為該兩者均在揮發性緩衝器中緩衝。在此實例中,首先將FAT更新提交至非揮發性記憶體器件28。在提交FAT更新不久之後及在更新資料更新前發生斷電。當恢復供電且檔案系統再次掛接時,檔案系統FAT指向資料之新位置但資料並非存在於該處。所揭示之技術以高效及無阻的方式防止此種及其他情境。
一些儲存協定將多個I/O佇列定義為用於自主機24發送儲存命令至儲存器件22之構件。I/O佇列亦被稱為命令佇列或為簡便起見簡稱為佇列。例如,NVMe協定提供靈活數目之命令佇列,其中在佇列間有不同仲裁方案。I/O佇列可駐留於主機記憶體中(例如在NVMe中)或在儲存器件中(例如在SATA中)。
自給定佇列讀取之儲存命令之執行次序為任意的一儲存器件之記憶體控制器通常有序地自給定佇列獲取命令,但允許該記憶體控制器不按次序地執行及完成該等命令。不按次序執行改良了儲存器件效能。效能改良在讀取命令方面尤其顯著且通常在寫入命令方面不那麼顯著。
在一些實施例中,將主機24與儲存器件22之間的命令佇列中之至少一者定義為有序佇列。由主機寫入至有序佇列之儲存命令將被有序地執行,亦即,根據由記憶體控制器32之處理器44自佇列獲取儲存命令之次序執行。寫入至其他佇列之命令可按任何所要次序執行。
主機24通常將次序至關重要的儲存命令寫入至有序佇列及將次序不至關重要的命令(例如讀取命令)寫入至其他佇列。處理器44自各種佇列讀取命令且在非揮發性記憶體器件28中執行該等命令。詳言之,處理器44根據自有序佇列獲取之命令之到達次序執行及完成該等命令。藉由在單獨的有序佇列中處置次序至關重要的命令,可針對該
等命令強制執行執行次序而不阻斷其他命令之執行。
圖2為示意性說明根據本發明之實施例之用於有序地執行儲存命令的方法的流程圖。方法藉由在佇列定義步驟50處在主機24與儲存器件22之間定義多個佇列開始。佇列中之至少一者被定義為有序佇列,其命令將根據該等命令之到達次序而在儲存器件中執行。
在命令發送步驟54處,主機24將儲存命令發送至儲存器件22供執行。命令可包含(例如)寫入命令及讀取命令。主機發送次序至關重要的儲存命令至有序佇列,且發送其他儲存命令至其他佇列。
在執行步驟58處,處理器44自各種佇列獲取儲存命令且在非揮發性記憶體器件28中執行該等命令。處理器44根據命令之到達次序執行自有序佇列獲取之命令且以任意次序執行自其他佇列獲取之命令。
處理器44可使用用於對有序佇列中之儲存命令強制執行有序執行並同時利用儲存器件之平行性及內部排程準則的各種技術。下文的圖3及圖4呈現兩種實例技術。或者,出於此目的,處理器44可使用任何其他適合技術。
圖3為示意性說明根據本發明之實施例之用於有序執行儲存命令的方法的流程圖。在命令獲取步驟60處,方法以處理器44自有序佇列獲取儲存命令開始。每一儲存命令包含待寫入至記憶體器件28中或待在記憶體器件28中讀取之一或多個資料項目,在本實例中為邏輯區塊位址(Logical Block Address;LBA)。
在序號指派步驟64處,處理器44為每一LBA指派各別序號。連續的序號因此標記了根據命令之到達次序自有序佇列讀取之命令之LBA。
在命令執行步驟68處,處理器44發送用於在非揮發性記憶體器件28中執行之儲存命令,且自記憶體器件收集指示命令之成功執行的
應答。處理器44通常根據大體上允許不按次序執行之某些內部排程準則發送用於執行之命令至器件28。此外,不同記憶體器件28可具有執行命令之不同潛時,例如,因為一些器件比其他器件忙碌或因為任何其他原因。因此,來自記憶體器件28之應答可不按次序到達。
在應答步驟72處,處理器44向主機24應答儲存命令。發送至主機之每一應答指示各別儲存命令之成功完成。然而,在此實施例中,處理器44僅在亦完成及應答有序佇列中之所有先前命令之後才應答自有序佇列讀取的給定儲存命令。
類似地,處理器44僅在亦完成及應答有序佇列中之所有先前命令之後才回應於命令來更新其FTL表(例如,邏輯位址至器件28中的實體儲存位置的映射)。處理器44能夠自指派給有序佇列中之儲存命令之序號判定儲存命令之適當次序。
例如,考慮序號為#1、#2及#3之三個連續命令。若命令#3在命令#1及命令#2之前結束執行,則對命令#3之應答將首先自記憶體器件28到達。然而,處理器44通常將等待直至其自器件28接收到對命令#1及命令#2的應答,且之後才向主機24應答命令#3。類似地,處理器44將僅在記憶體器件28應答命令#1及命令#2之後才回應於命令#3而更新其FTL表。
上述延遲之應答機制確保了在主機看來,有序地執行有序佇列中之儲存命令,且確保在斷電之情況下將不會發生資料不一致性。例如,考慮在命令#3執行後及在命令#1及命令#2完全執行前發生斷電的情境。由於處理器44將不自記憶體器件28接收對命令#1及命令#2的應答,其將不會發送對對命令#3的應答至主機且將不會回應於#3而更新其FTL表。因此,主機與儲存器件兩者將同步至未執行命令#3之相同狀態,且將維持資料一致性。
圖4為示意性說明根據本發明之替代性實施例之用於有序執行儲
存命令的另一方法的流程圖。圖4之方法類似於圖3之方法開始,其中在獲取步驟80處,處理器44自有序佇列獲取儲存命令,及在指派步驟84處為每一LBA指派各別序號。自此階段起,兩種解決方案彼此不同。
在資料及序列儲存步驟88處,處理器44將接收到之LBA之資料以及各別序號儲存於記憶體器件28中。序號通常作為與各別LBA之資料相關聯之後設資料而儲存於器件28中。在實施例中,處理器44維護累積記憶體器件28中之資料及後設資料之變化的變化記錄日誌。在此實施例中,處理器44亦將序號記錄於日誌中。
在步驟80至步驟88之過程期間之任一點處,可中斷電力。在發生斷電時,可成功提交一些資料至記憶體器件28。其他資料可能仍駐留於揮發性寫入緩衝器中且因此將丟失。由於不按次序執行,所以當儲存器件22在斷電後恢復及重新掛接時,其無法假定所丟失之資料在到達次序上遲於成功提交之資料。
在恢復檢查步驟92處,處理器44檢查其現在是否正在進行自電力中斷的恢復後的掛接。若否,則方法循環回至上述步驟80,在該步驟中處理器44繼續自有序佇列獲取儲存命令。在重新掛接之情況下,在掃描步驟96處,處理器44掃描記憶體器件28中儲存的後設資料及/或日誌。在此掃描中,處理器44試圖識別序號中之間隙,亦即,未成功提交至非揮發性記憶體且因此其序號未出現於後設資料或日誌中之LBA。如上文所解釋,由於不按次序執行,丟失之LBA並非必定為具有最高序號之LBA。
在間隙檢查步驟100處,處理器44檢查序號中是否有間隙。若未發現間隙,則方法循環回至上述步驟80。若發現間隙,則在忽略步驟104處,處理器44忽略遲於間隙之資料、後設資料及日誌變化及/或使其失效。通常,處理器忽略序號高於間隙之儲存命令或使其取消資
格。舉例而言,若處理器44掃描後設資料及/或日誌且發現命令#1、#2及#4,則即使成功執行了命令#4,其亦將忽略命令#4且使命令#4取消資格。
換言之,在重新掛接之後,處理器44掃描非揮發性記憶體以發現成功執行而無間隙之最新儲存命令。處理器44接著將主機24及儲存器件22同步至同一狀態,其中忽略在間隙之後的儲存命令。
發現序號中之間隙之任務可為費時的,因為其通常涉及掃描大記憶體空間。在一些實施例中,處理器44藉由記錄已知不具有先前間隙之序號而減少此時間。舉例而言,若在某一階段,處理器44推斷直至序號#247均不存在間隙,則其可將此事實記錄於非揮發性記憶體器件28中。當在斷電之後重新掛接時,處理器44查找此記錄且開始自序號#247起進行掃描以發現間隙。處理器44可在任何所要時間(例如,在程式化期間週期性地)記錄此等序號。
在以上描述中,處理器44僅將序號指派至自有序佇列讀取之命令。在替代性實施例中,無佇列被定義為專用有序佇列。相反,處理器44將連續之序號指派至自命令佇列中的任一者讀取之任何儲存命令。在此等實施例中,處理器44將所有儲存命令的序號儲存於非揮發性記憶體中,且根據上文圖4之方法執行斷電後恢復。
在又一實施例中,處理器44藉由橫跨所有I/O佇列複製屏障寫入命令來強制執行所要執行次序,以便在多個佇列之間形成全域同步點。
圖5為示意性說明根據本發明之另一實施例之用於有序地執行儲存命令的方法的流程圖。當主機24發出屏障寫入命令時,在屏障複製步驟110處,方法以CPU 35橫跨在主機24與儲存器件22之間定義的所有I/O佇列複製屏障寫入命令開始。
在讀出步驟114處,處理器44自佇列中之一者讀取儲存命令。在屏障檢查步驟118處,處理器44檢查命令是否為屏障寫入命令。若否,且除非停止自其讀取命令之佇列,則在執行步驟122處,處理器44在非揮發性記憶體中執行命令。方法接著循環回至上述步驟114,在該步驟中處理器44自佇列中之一者讀取下一儲存命令。
若命令為屏障寫入命令,則在全域屏障檢查步驟126處,處理器44檢查是否在所有佇列上皆達到此屏障寫入命令。若否,則在停止步驟130處,處理器44停止自其讀取命令之佇列。方法接著循環回至上述步驟114。若在所有佇列上皆達到該屏障命令,則在釋放步驟134處,處理器44釋放所有佇列且繼續在步驟122處執行命令。
在一實施例中,處理器44可藉由維持追蹤達到屏障命令之佇列之數目的計數器來實施步驟126。每次在佇列中之一者中遭遇屏障命令,就使計數器遞增(步驟118)。當計數器值達到佇列之總數目(步驟126)時,處理器就釋放所有佇列(步驟134)且重設計數器。圖5之方法僅在遭遇屏障寫入命令時影響儲存器件22之效能。效能在穩定狀態下不受影響。
僅作為實例選擇圖2至圖5中所描述之實施例。在替代性實施例中,儲存器件22之處理器44及/或主機24之CPU 35可使用用於根據儲存器件之內部排程準則在非揮發性記憶體中執行儲存命令之任何其他適合技術,該等內部排程準則允許與到達次序之偏差,但使得在主機看來儲存命令之執行反映到達次序。
因此將瞭解,作為實例引證了上文所描述之實施例,且本發明不限於上文中特定展示及描述之實施例。相反,本發明之範疇包括上文所述之各種特徵之組合及子組合兩者,以及在閱讀前述描述之後熟習本項技術者將想到且未揭示於先前技術中的其變化及修改。以引用之方式併入本專利申請案之文件被認為係本申請案之必不可少的部
分,唯在該等所併入文件中以與在本說明書中明確地或隱含地作出之定義衝突之方式定義任何術語時,應僅考慮本說明書中之定義。
20‧‧‧資料儲存系統
22‧‧‧儲存器件
24‧‧‧主機
28‧‧‧記憶體器件
32‧‧‧記憶體控制器
34‧‧‧記憶體介面
35‧‧‧中央處理單元
36‧‧‧主機介面
40‧‧‧記憶體介面
44‧‧‧處理器
Claims (19)
- 一種方法,其包含:在一儲存器件中,自一主機接收用於在該儲存器件之一非揮發性記憶體中執行的儲存命令,其中將根據一到達次序執行該等儲存命令之至少一子集,依該到達次序接收該子集中之該等儲存命令;及根據該儲存器件之內部排程準則在該非揮發性記憶體中執行該等接收到的儲存命令,該等內部排程準則允許與該到達次序之偏差,但使得該子集中之該等儲存命令的執行向該主機反映該到達次序。
- 如請求項1之方法,其中執行該等儲存命令包含:允許在執行該子集中之該等儲存命令的同時無阻地執行除該子集外的該等儲存命令。
- 如請求項1之方法,其中該非揮發性記憶體包含多個記憶體器件,且其中根據該等內部排程準則執行該等儲存命令包含排程該等儲存命令以在該多個記憶體器件上執行。
- 如請求項1之方法,其中接收該等儲存命令包含:自該主機接收區分該子集中之該等儲存命令與除該子集外的該等儲存命令之一指示。
- 如請求項4之方法,其中接收該等儲存命令包含自在該主機與該儲存器件之間定義之多個佇列讀取該等儲存命令,且其中接收該指示包含自該等佇列中的預定義為一有序佇列之佇列讀取該子集中之該等命令,將根據該到達次序執行該有序佇列之儲存命令。
- 如請求項1之方法,其中接收該等儲存命令包含:自該主機接收 各別序號,該等序號根據該到達次序標記該子集中之該等儲存命令。
- 如請求項1之方法,其中執行該等儲存命令包含:根據內部排程原則在該非揮發性記憶體中執行該等儲存命令,但僅在成功完成在該到達次序中先於一給定儲存命令之所有該等儲存命令時,才向該主機應答該給定儲存命令及記錄該給定儲存命令之該執行。
- 如請求項1之方法,其中執行該等儲存命令包含:將提供於該等儲存命令中之資料項目儲存於該非揮發性記憶體中;將根據該到達次序指派給該等資料項目之各別序號儲存於該非揮發性記憶體中;及在自該儲存器件中之一中斷恢復時,識別該等儲存之序號中之一間隙且使序號在該間隙之後的該等儲存命令取消資格。
- 如請求項1之方法,其中接收該等儲存命令包含自在該主機與該儲存器件之間定義之多個佇列讀取該等儲存命令,包括:讀取由該主機橫跨該多個佇列複製之一屏障命令;在識別出每一佇列中之該屏障命令時,停止該佇列;及當在所有該等佇列中達到該屏障命令時釋放該多個佇列。
- 一種裝置,其包含:一介面,其經組態以自一主機接收用於在一非揮發性記憶體中執行的儲存命令,其中將根據一到達次序執行該等儲存命令之至少一子集,依該到達次序接收該子集中之該等儲存命令;及一處理器,其經組態以根據該裝置之內部排程準則在該非揮發性記憶體中執行該等接收到的儲存命令,該等內部排程準則允許與該到達次序之偏差,但使得該子集中之該等儲存命令的 執行向該主機反映該到達次序。
- 如請求項10之裝置,其中該處理器經組態以允許在執行該子集中之該等儲存命令的同時無阻地執行除該子集外的該等儲存命令。
- 如請求項10之裝置,其中該非揮發性記憶體包含多個記憶體器件,且其中該處理器經組態以藉由排程該等儲存命令以在該多個記憶體器件上執行而根據該等內部排程準則來執行該等儲存命令。
- 如請求項10之裝置,其中該處理器經組態以自該主機接收區分該子集中之該等儲存命令與除該子集外的該等儲存命令的一指示。
- 如請求項13之裝置,其中該處理器經組態以自在該主機與該裝置之間定義之多個佇列讀取該等儲存命令,且經組態以藉由自該等佇列中的預定義為一有序佇列之佇列讀取該子集中之該等命令來接收該指示,將根據該到達次序執行該有序佇列之儲存命令。
- 如請求項10之裝置,其中該處理器經組態以自該主機接收各別序號,該等序號根據該到達次序標記該子集中之該等儲存命令。
- 如請求項10之裝置,其中該處理器經組態以根據該內部排程原則在該非揮發性記憶體中執行該等儲存命令,但僅在成功完成在該到達次序中先於一給定儲存命令之所有該等儲存命令時,才向該主機應答該給定儲存命令及記錄該給定儲存命令之該執行。
- 如請求項10之裝置,其中該處理器經組態以將提供於該等儲存命令中之資料項目儲存於該非揮發性記憶體中,將根據該到達 次序指派給該等資料項目之各別序號儲存於該非揮發性記憶體中,及在自該裝置中之一中斷恢復時識別該等儲存之序號中之一間隙且使序號在該間隙之後的該等儲存命令取消資格。
- 如請求項10之裝置,其中該處理器經組態以自在該主機與該裝置之間定義之多個佇列讀取該等儲存命令,包括:讀取由該主機橫跨該多個佇列複製之一屏障命令;在識別出每一佇列中之該屏障命令時,停止該佇列;及當在所有該等佇列中達到該屏障命令時釋放該多個佇列。
- 一種系統,其包含:一主機,其經組態以發出儲存命令;及一儲存器件,其包含一非揮發性記憶體,且該儲存器件經組態以自該主機接收用於在該非揮發性記憶體中執行的該等儲存命令,其中將根據一到達次序執行該等儲存命令之至少一子集,依該到達次序接收該子集中之該等儲存命令;及該儲存器件經組態以根據該儲存器件之內部排程準則在該非揮發性記憶體中執行該等接收到的儲存命令,該等內部排程準則允許與該到達次序之偏差,但使得該子集中之該等儲存命令之執行向該主機反映該到達次序。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/593,299 US9122401B2 (en) | 2012-08-23 | 2012-08-23 | Efficient enforcement of command execution order in solid state drives |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201419303A true TW201419303A (zh) | 2014-05-16 |
TWI511157B TWI511157B (zh) | 2015-12-01 |
Family
ID=49080961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102130101A TWI511157B (zh) | 2012-08-23 | 2013-08-22 | 在固態硬碟中命令執行次序的有效強制執行 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9122401B2 (zh) |
TW (1) | TWI511157B (zh) |
WO (1) | WO2014031387A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI570558B (zh) * | 2014-12-23 | 2017-02-11 | 英特爾公司 | 用於增進固態硬碟的讀取效能之方法及設備 |
CN108470006A (zh) * | 2017-02-23 | 2018-08-31 | 西部数据技术公司 | 用于进行非阻塞控制同步操作的技术 |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Families Citing this family (195)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US20140181822A1 (en) * | 2012-12-20 | 2014-06-26 | Advanced Micro Devices, Inc. | Fragmented Channels |
US20140331001A1 (en) * | 2013-05-02 | 2014-11-06 | Lsi Corporation | Command Barrier for a Solid State Drive Controller |
US9547472B2 (en) * | 2013-09-18 | 2017-01-17 | HGST Netherlands B.V. | ACK-less protocol for noticing completion of read requests |
US9778859B2 (en) | 2013-09-18 | 2017-10-03 | Western Digital Technologies, Inc. | Doorless protocol having multiple queue read requests in flight |
KR102190670B1 (ko) * | 2014-03-03 | 2020-12-14 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
US9772782B2 (en) * | 2014-05-21 | 2017-09-26 | Seagate Technology Llc | Non-volatile complement data cache |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9959203B2 (en) | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10019161B2 (en) * | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10108340B2 (en) | 2015-10-21 | 2018-10-23 | Western Digital Technologies, Inc. | Method and system for a common processing framework for memory device controllers |
US9886196B2 (en) | 2015-10-21 | 2018-02-06 | Western Digital Technologies, Inc. | Method and system for efficient common processing in memory device controllers |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10572180B1 (en) | 2015-11-09 | 2020-02-25 | Seagate Technology Llc | Method and apparatus to perform a function level reset in a memory controller |
US9996262B1 (en) | 2015-11-09 | 2018-06-12 | Seagate Technology Llc | Method and apparatus to abort a command |
US10282103B1 (en) | 2015-11-09 | 2019-05-07 | Seagate Technology Llc | Method and apparatus to delete a command queue |
US20170160929A1 (en) * | 2015-12-02 | 2017-06-08 | Hewlett Packard Enterprise Development Lp | In-order execution of commands received via a networking fabric |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
WO2017131724A1 (en) * | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Host devices and non-volatile memory subsystem controllers |
US10466907B2 (en) * | 2016-03-22 | 2019-11-05 | Toshiba Memory Corporation | Method to efficiently store object data of an object storage service on a magnetic disk drive and magnetic SMR disk drive |
KR102564165B1 (ko) | 2016-04-25 | 2023-08-04 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US10152237B2 (en) | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10331352B2 (en) * | 2016-06-06 | 2019-06-25 | Toshiba Memory Corporation | Dynamic processing of storage command based on internal operations of storage system |
US10534540B2 (en) | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
US10289568B2 (en) | 2016-07-07 | 2019-05-14 | Microsoft Technology Licensing, Llc | Application-driven storage systems for a computing system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10585624B2 (en) * | 2016-12-01 | 2020-03-10 | Micron Technology, Inc. | Memory protocol |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US11003602B2 (en) | 2017-01-24 | 2021-05-11 | Micron Technology, Inc. | Memory protocol with command priority |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10372351B2 (en) * | 2017-02-23 | 2019-08-06 | Western Digital Technologies, Inc. | Techniques for non-blocking control information and data synchronization by a data storage device |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
KR20180114649A (ko) * | 2017-04-11 | 2018-10-19 | 에스케이하이닉스 주식회사 | 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 그리고 멀티 프로세서 시스템 |
US10635613B2 (en) | 2017-04-11 | 2020-04-28 | Micron Technology, Inc. | Transaction identification |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
JP6944107B2 (ja) * | 2017-07-11 | 2021-10-06 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10785301B2 (en) | 2017-08-03 | 2020-09-22 | Toshiba Memory Corporation | NVM express over fabrics |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
KR102549540B1 (ko) | 2017-09-22 | 2023-06-29 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
KR102262209B1 (ko) * | 2018-02-09 | 2021-06-09 | 한양대학교 산학협력단 | 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치 |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
CN112154408A (zh) * | 2018-04-12 | 2020-12-29 | 美光科技公司 | 重放受保护存储器块命令队列 |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10732900B2 (en) * | 2018-10-24 | 2020-08-04 | Western Digital Technologies, Inc. | Bounded latency and command non service methods and apparatus |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11269557B2 (en) | 2019-01-09 | 2022-03-08 | Atto Technology, Inc. | System and method for ensuring command order in a storage controller |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11531622B2 (en) | 2019-09-20 | 2022-12-20 | Micron Technology, Inc. | Managing data dependencies for out of order processing in a hybrid DIMM |
US11494306B2 (en) | 2019-09-20 | 2022-11-08 | Micron Technology, Inc. | Managing data dependencies in a transfer pipeline of a hybrid dimm |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
EP3842952B1 (en) | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
KR20210080761A (ko) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
US11481152B2 (en) | 2019-12-30 | 2022-10-25 | Micron Technology, Inc. | Execution of commands addressed to a logical block |
KR102226184B1 (ko) * | 2020-02-25 | 2021-03-10 | 한국과학기술원 | 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치 |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11287988B2 (en) | 2020-04-03 | 2022-03-29 | Dell Products L.P. | Autonomous raid data storage device locking system |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11262933B2 (en) * | 2020-07-01 | 2022-03-01 | EMC IP Holding Company LLC | Sharing memory resources between asynchronous replication workloads |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
CN114490463A (zh) * | 2020-11-13 | 2022-05-13 | 华为技术有限公司 | 一种保序执行写请求的方法及网络设备 |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US20220413755A1 (en) * | 2021-06-23 | 2022-12-29 | Western Digital Technologies, Inc. | Handling Urgent Commands in a Data Storage Device |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
US20240143228A1 (en) * | 2022-11-01 | 2024-05-02 | Western Digital Technologies, Inc. | Fast execution of barrier command |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754887A (en) * | 1995-06-07 | 1998-05-19 | International Business Machines Corporation | System for limiting access of plurality of requests to peripheral bus by halting transmission to particular peripheral devices and resuming transmission after second predetermined time period expiration |
US6085263A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corp. | Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor |
JP3858492B2 (ja) * | 1998-12-28 | 2006-12-13 | 株式会社日立製作所 | マルチプロセッサシステム |
DE60134696D1 (de) * | 2000-05-23 | 2008-08-21 | Hitachi Ltd | Rechnersystem mit Fernkopiereinrichtung |
US7103884B2 (en) * | 2002-03-27 | 2006-09-05 | Lucent Technologies Inc. | Method for maintaining consistency and performing recovery in a replicated data storage system |
US7302503B2 (en) * | 2002-04-01 | 2007-11-27 | Broadcom Corporation | Memory access engine having multi-level command structure |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US8176238B2 (en) * | 2003-12-02 | 2012-05-08 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US7392353B2 (en) * | 2004-12-03 | 2008-06-24 | International Business Machines Corporation | Prioritization of out-of-order data transfers on shared data bus |
US7657537B1 (en) * | 2005-04-29 | 2010-02-02 | Netapp, Inc. | System and method for specifying batch execution ordering of requests in a storage system cluster |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US7293136B1 (en) | 2005-08-19 | 2007-11-06 | Emc Corporation | Management of two-queue request structure for quality of service in disk storage systems |
US7861060B1 (en) * | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
JP4901310B2 (ja) * | 2006-05-31 | 2012-03-21 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置のコマンド実行数制御方法 |
US7970989B2 (en) * | 2006-06-30 | 2011-06-28 | Intel Corporation | Write ordering on disk cached platforms |
US20080005940A1 (en) * | 2006-07-10 | 2008-01-10 | Esco Corporation | Assembly for securing a wear |
US20080189501A1 (en) * | 2007-02-05 | 2008-08-07 | Irish John D | Methods and Apparatus for Issuing Commands on a Bus |
US20100049865A1 (en) * | 2008-04-16 | 2010-02-25 | Nokia Corporation | Decoding Order Recovery in Session Multiplexing |
JP5029513B2 (ja) * | 2008-06-30 | 2012-09-19 | ソニー株式会社 | 情報処理装置、情報処理装置の制御方法、およびプログラム |
US8219741B2 (en) | 2008-10-24 | 2012-07-10 | Microsoft Corporation | Hardware and operating system support for persistent memory on a memory bus |
US8078848B2 (en) * | 2009-01-09 | 2011-12-13 | Micron Technology, Inc. | Memory controller having front end and back end channels for modifying commands |
US8639871B2 (en) * | 2009-04-08 | 2014-01-28 | Google Inc. | Partitioning a flash memory data storage device |
US8321639B2 (en) | 2009-12-30 | 2012-11-27 | Lsi Corporation | Command tracking for direct access block storage devices |
US8280866B2 (en) | 2010-04-12 | 2012-10-02 | Clausal Computing Oy | Monitoring writes using thread-local write barrier buffers and soft synchronization |
US20120089775A1 (en) | 2010-10-08 | 2012-04-12 | Sandeep Ranade | Method and apparatus for selecting references to use in data compression |
US20120089579A1 (en) | 2010-10-08 | 2012-04-12 | Sandeep Ranade | Compression pipeline for storing data in a storage cloud |
US8589638B2 (en) * | 2011-07-19 | 2013-11-19 | Arm Limited | Terminating barriers in streams of access requests to a data store while maintaining data consistency |
US8321627B1 (en) * | 2011-10-06 | 2012-11-27 | Google Inc. | Memory operation command latency management |
-
2012
- 2012-08-23 US US13/593,299 patent/US9122401B2/en not_active Expired - Fee Related
-
2013
- 2013-08-13 WO PCT/US2013/054705 patent/WO2014031387A1/en active Application Filing
- 2013-08-22 TW TW102130101A patent/TWI511157B/zh not_active IP Right Cessation
-
2015
- 2015-07-30 US US14/813,436 patent/US10019196B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI570558B (zh) * | 2014-12-23 | 2017-02-11 | 英特爾公司 | 用於增進固態硬碟的讀取效能之方法及設備 |
CN107003813A (zh) * | 2014-12-23 | 2017-08-01 | 英特尔公司 | 用于提高固态驱动器的读取性能的方法和装置 |
CN108470006A (zh) * | 2017-02-23 | 2018-08-31 | 西部数据技术公司 | 用于进行非阻塞控制同步操作的技术 |
US11288201B2 (en) | 2017-02-23 | 2022-03-29 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Also Published As
Publication number | Publication date |
---|---|
US10019196B2 (en) | 2018-07-10 |
TWI511157B (zh) | 2015-12-01 |
US20140059270A1 (en) | 2014-02-27 |
US9122401B2 (en) | 2015-09-01 |
US20150331638A1 (en) | 2015-11-19 |
WO2014031387A1 (en) | 2014-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI511157B (zh) | 在固態硬碟中命令執行次序的有效強制執行 | |
US10496535B2 (en) | Power-safe data management system | |
KR101905645B1 (ko) | Ssd 환경에서의 i/o 스케줄링 | |
KR101573591B1 (ko) | 메모리 시스템 제어기를 구비하는 장치 및 관련 방법 | |
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
US8751740B1 (en) | Systems, methods, and computer readable media for performance optimization of storage allocation to virtual logical units | |
US20160026402A1 (en) | System and method for providing consistent, reliable, and predictable performance in a storage device | |
US9058293B2 (en) | Management of point-in-time copy relationship for extent space efficient volumes | |
TW201841117A (zh) | 記憶體之針對性淨除 | |
WO2019178845A1 (zh) | 一种存储介质垃圾回收方法、存储介质和程序产品 | |
TW201415233A (zh) | 使用適應性壓縮比之刷新指令之快速執行 | |
US20120260020A1 (en) | Non-volatile semiconductor memory module enabling out of order host command chunk media access | |
US8930614B2 (en) | Data storage apparatus and method for compaction processing | |
US9639287B1 (en) | Write command reporting | |
TW201227506A (en) | Controller and method for performing background operations | |
CN114127677B (zh) | 用于写高速缓存架构中的数据放置的方法和系统 | |
WO2018120844A1 (zh) | 一种差异数据备份方法和差异数据备份装置 | |
TW200822124A (en) | Device and method for prioritized erasure of flash memory | |
US9785438B1 (en) | Media cache cleaning based on workload | |
CN106133677B (zh) | 主机和次级存储装置之间的通信 | |
US11593262B1 (en) | Garbage collection command scheduling | |
US20190243578A1 (en) | Memory buffer management for solid state drives | |
US20120102242A1 (en) | Controlling data destaging within a multi-tiered storage system | |
TWI603191B (zh) | 用於使用反及頁面緩衝器來增進固態硬碟之移轉緩衝器之使用的方法和系統 | |
US20150220394A1 (en) | Memory system and method of controlling memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |