TWI814975B - 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片 - Google Patents

用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片 Download PDF

Info

Publication number
TWI814975B
TWI814975B TW109100893A TW109100893A TWI814975B TW I814975 B TWI814975 B TW I814975B TW 109100893 A TW109100893 A TW 109100893A TW 109100893 A TW109100893 A TW 109100893A TW I814975 B TWI814975 B TW I814975B
Authority
TW
Taiwan
Prior art keywords
data
write
storage medium
write buffer
parity
Prior art date
Application number
TW109100893A
Other languages
English (en)
Other versions
TW202042050A (zh
Inventor
S A 克莱因
V D 阮
G 布德
Original Assignee
新加坡商馬維爾亞洲私人有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 新加坡商馬維爾亞洲私人有限公司 filed Critical 新加坡商馬維爾亞洲私人有限公司
Publication of TW202042050A publication Critical patent/TW202042050A/zh
Application granted granted Critical
Publication of TWI814975B publication Critical patent/TWI814975B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公開描述了用於利用自我調整寫緩衝區釋放的存儲介質編程裝置和方法。在一些方面,存儲介質系統的介質寫管理器將從主機介面所接收的數據存儲到寫緩衝區中。介質寫管理器確定針對被存儲到寫緩衝區的數據的同位資訊,然後在完成確定針對數據的同位資訊後釋放寫緩衝區。然後,在寫緩衝區被釋放之後,介質寫管理器可以將數據的至少一部分寫到存儲介質。通過在確定同位資訊之後釋放存儲介質系統的寫緩衝區,寫緩衝區可以較快地被釋放,這可以導致改進的寫緩衝區利用率和增加的存儲介質系統的寫輸送量。

Description

用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝 置、以及其系統單晶片 【相關申請案的交互參照】
本公開要求2019年1月11所申請的美國臨時專利申請案第62/791,542號的優先權、以及2020年1月8日所申請的美國專利申請案第16/737,137號的優先權,它們的全部內容通過引用而併入本文。
許多計算和電子設備都包括用於存儲軟體、應用或設備數據的非易失性記憶體。附加地,大多數用戶通過數據網路從各個位置或在移動中利用其設備(諸如多介質內容或社交介質應用)來數據流數據或存取服務。隨著使用者對數據和服務的需求不斷增長,存儲提供方已擴大了存儲驅動器的容量和性能,以支援與使用者和其他數據存儲用戶端的這些活動相關聯的數據存取。通常,設備的存儲驅動器包括設備數據寫其中的存儲介質。為此,設備向存儲驅動器發出寫命令,存儲驅動器又如由每個命令所指定的來將數據寫存儲介質。因此,存儲驅動器的寫性能通常取決於存儲驅動器能夠完成設備或存儲用戶端的數據寫命令的速率。
存儲驅動器通常包括寫緩衝區,以用於從設備接收與寫命令相對應的數據。然後,存儲驅動器將數據從寫緩衝區發送到存儲介質的編程介面。然而,存儲介質的編程或寫速度通常比寫緩衝區的速度慢得多。附加地,大多數存儲驅動器在寫緩衝區中保留數據的副本,直到數據被成功編程到存儲介質上,以在存儲介質編程失敗並且數據丟失時實現恢復數據。這樣,由於存儲介質較慢的編程速度,因此存儲驅動器的寫緩衝區可能會長時間被保留或佔用。這防止了寫緩衝區接收後續數據,直到存儲介質編程完成為止,這會降低存儲驅動器的寫輸送量,或需要增加數量的寫緩衝區來維護寫輸送量。
提供本發明內容以介紹主題,該主題將在具體實施方式和附圖中進一步被描述。因此,該本發明內容不應當被視為描述基本特徵,也不應當被用於限制要求保護的主題的範圍。
在一些方面,存儲介質系統的介質寫管理器實現了一種方法,該方法將從包括存儲介質的存儲系統的主機介面所接收的數據存儲到寫緩衝區中。該方法經由基於同位的編碼器來確定針對存儲到寫緩衝區的數據的同位資訊。備選地或附加地,數據可以被傳遞到存儲介質系統的另一內部緩衝區。然後,回應於對針對數據的同位資訊的確定完成,寫緩衝區被釋放。該方法還包括在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到存儲系統的存儲介質。
在其他方面,一種裝置包括:主機介面,其被配置為與主機系統通信;寫緩衝區,其可操作地耦接到主機介面;存儲介質;以及介質介面,其被配置為允許存取存儲介質。該裝置還包括基於同位的編碼器和介質寫管理 器,該介質寫管理器被配置為經由寫緩衝區中的一個寫緩衝區從主機介面接收數據。介質寫管理器經由基於同位的編碼器計算針對由寫緩衝區所接收的數據的同位資訊,並且將同位資訊存儲到基於同位的編碼器的緩衝區。回應於對針對數據的同位資訊的計算,介質寫管理器釋放寫緩衝區,並且在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到裝置的存儲介質。
在其他方面,描述了一種系統單晶片(SoC),其包括與主機系統通信的主機介面、可操作地與主機介面耦接的寫緩衝區、用以存取存儲系統的存儲介質的介質介面以及基於同位的編碼器。SoC還包括基於硬體的處理器和存儲處理器可執行指令的記憶體,該指令可回應於基於硬體的處理器的執行而實現介質寫管理器,以將從主機介面所接收的數據存儲到寫緩衝區。介質寫管理器還經由基於同位的編碼器來確定針對被存儲到寫緩衝區的數據的同位資訊,並且回應於對針對數據的同位資訊的確定而釋放寫緩衝區。然後,在寫緩衝區從存儲數據中被釋放之後,介質寫管理器將數據的至少一部分寫到存儲介質。
在附圖和以下說明書中闡述了一個或多個實現的細節。根據說明書和附圖以及根據請求項書,其他特徵和優點將是明顯的。
100:操作環境
102:主機系統
104:膝上型電腦
106:桌上型電腦
108:伺服器
110:處理器
112:電腦可讀介質
114:存儲系統
116:NVMe固態驅動器
118:PCIe固態驅動器
120:固態驅動器
122:記憶體陣列
124:存儲介質
126:存儲介質控制器(存儲控制器)
128:數據
130:存儲介質寫管理器(介質寫管理器)
132:寫緩衝區
132-0~132-2n:寫緩衝區
134:RAID編碼器
136:I/O埠
138:圖形處理單元
140:數據介面
202:固態存儲驅動器
204-0~204-n:快閃記憶體設備
206:主機介面
208:介質介面
210:處理器核
212:結構
214:靜態隨機存取記憶體
216:DRAM控制器
218:動態隨機存取記憶體(DRAM)
220:改錯碼編碼器
302:固件
304:硬體
306:RAID緩衝區
308:主機介面驅動器
310:主機命令處理器
312:介質介面驅動器
314:介質命令管理器
316:主機輸入/輸出命令(主機I/O)
318:數據
318-0~318-3、318-2n:數據
320:快閃記憶體轉換層
322:介質輸入/輸出命令(介質I/O)
324:數據
402:XOR引擎
404-0~404-1:平面
406-0~406-1:平面
502:XOR引擎
504-0~504-1:平面
506-0~506-1:平面
600:方法
602~612:步驟
700:方法
702~716:步驟
800:方法
802~814:步驟
900:系統單晶片(SoC)
902:輸入-輸出(I/O)控制邏輯
904:基於硬體的處理器
906:記憶體
908:固件
1000:存儲系統控制器
1002:輸入/輸出(I/O)控制邏輯
1004:處理器
1006:主機介面
1008:存儲介質介面
1010:快閃記憶體轉換層
在附圖和以下詳細說明中,闡述了利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個實現的詳細資訊。在附圖中,附圖標記的最左邊的數位識別碼該附圖標記首次出現的附圖。在描述和附圖中的不同實例中使用相同的附圖標記指示相似的元素: 圖1示出了根據本公開的一個或多個方面的示例操作環境,該示例操作環境具有在其中介質寫管理器被實現的設備。
圖2示出了固態驅動器的示例配置,在其中圖1的介質寫管理器、寫緩衝區和獨立磁碟容錯陣列(RAID)編碼器根據各個方面被實現。
圖3示出了各種硬體和固件元件的示例配置,以用於利用自我調整寫緩衝區釋放來實現存儲介質編程的各方面。
圖4A至圖4E示出了在晶元級數據冗餘的上下文中利用自我調整寫緩衝區釋放的存儲介質編程的示例。
圖5A至圖5D示出了在平面級數據冗餘的情況下利用自我調整寫緩衝區釋放的存儲介質編程的示例。
圖6描繪了根據一個或多個方面的利用自我調整寫緩衝區釋放的存儲介質編程的示例方法。
圖7描繪了用於基於同位資訊的計算來釋放寫緩衝區的示例方法。
圖8描繪了用於利用基於同位的數據重建來從編程故障中恢復的示例方法。
圖9示出了示例系統單晶片(SoC)環境,在其中利用自我調整寫緩衝區釋放的存儲介質編程的各個方面可以被實現。
圖10示出了根據本公開的一個或多個方面的示例存儲系統控制器,在其中介質寫管理器被實現。
用於將數據寫入到存儲介質的傳統技術通常將數據保持在寫緩衝區中,直到數據被編程到存儲介質上為止,這導致存儲驅動器的寫輸送量降低或對寫緩衝區的要求增加(例如,寫緩衝區的數目或大小)。通常,存儲驅 動器固件被用於以端對端的方式來管理存儲驅動器的數據路徑,諸如通過轉換數據命令並且管理沿著主機介面和存儲介質介面之間的數據路徑的數據移動。例如,固件可以處理寫命令以在主機介面處接收對應的數據,並且將該數據發送到存儲介質介面以用於編程到存儲介質的適當區域。
許多存儲驅動器以「快取記憶體開啟」模式操作,在該模式中,一旦寫命令的數據由存儲驅動器的控制器接收到,固件就會向主機發送針對寫命令的確認。通常,優選快取記憶體開啟模式,因為快取記憶體開啟模式中的寫命令延時較短,並且主機無需較快地保持數據。在快取記憶體開啟模式中,固件通常將數據保持在控制器的寫緩衝區中,直到確認從存儲介質被接收到為止,該確認指示將數據傳遞到存儲介質的程式操作是成功的。這是必要的,因為在程式故障的情況下(例如,錯誤的字線或錯誤的塊),固件仍具有數據,並且可能嘗試將數據重新編程到存儲介質中。
然而,與通過寫緩衝區的數據的典型傳輸時間(其是幾十微秒的量級)相比,對存儲介質進行編程花費相對較長的時間(三毫秒)。換言之,從主機接收到的數據佔據寫緩衝區的時長延長了,這主要因為編程故障的偶然性,這是罕見的事件。附加地,由於實際問題,諸如佈局面積、數據路徑架構、功耗、成本等,由控制器所實現的寫緩衝區的數目通常被限制。當控制器的有限寫緩衝區不斷被等待編程確認的數據佔用時,控制器將無法從主機接收附加的數據,直到寫緩衝區變為可用為止。這樣,寫緩衝區的有限數目且低效率利用會給寫輸送量強加上限,並且可以對存儲驅動器的寫性能產生負面影響。
本公開描述了用於利用自我調整寫緩衝區釋放的存儲介質編程的裝置和技術。與用於寫到存儲介質的傳統技術相反,所描述的裝置和技術可以實現用於存儲介質的數據寫方案,該數據寫方案包括基於同位的編碼(例如,RAID),以在存儲介質編程故障的情況下實現數據恢復。通過這樣做,一旦同 位資訊被計算以用於被寫到存儲介質的數據,存儲控制器的介質寫管理器就可以釋放寫緩衝區。備選地或附加地,在計算同位資訊之前或同時,數據可以被傳遞到存儲介質系統的另一內部緩衝區。換言之,當同位資訊(例如,XOR資訊)的RAID計算完成時(例如,數十微秒),寫緩衝區被釋放,而不是一直保持直到編程成功確認從存儲介質被接收到為止(例如,三毫秒)。備選地或附加地,寫緩衝區的釋放也可以以數據從寫緩衝區被複製到存儲系統的另一內部緩衝區或用於編程到存儲介質的存儲介質介面為條件。一旦被釋放,則在一些情況下,當先前保持的數據被編程到存儲介質的同時,寫緩衝區可以從主機接收後續數據。這樣,寫緩衝區的自我調整釋放可以導致較有效的寫緩衝區利用率和/或使得存儲驅動器利用較少或較小的寫緩衝區被實現。寫緩衝區或寫緩衝區大小的這種減小可以進而減小存儲控制器的功耗,有利於改進的積體電路佈局等。
在利用自我調整寫緩衝區釋放的存儲介質編程的各個方面,存儲介質系統的介質寫管理器將從主機介面所接收的數據存儲到寫緩衝區。在數據被存儲在寫緩衝區中的同時,介質寫管理器確定針對數據的同位資訊,然後在確定針對數據的同位資訊完成時釋放寫緩衝區。然後,在寫緩衝區被釋放之後,介質寫管理器可以將數據的至少一部分寫到存儲介質。通過在確定同位資訊之後釋放存儲介質系統的寫緩衝區,寫緩衝區可以較快地自由,這可以引起改進的寫緩衝區利用率和增加的存儲介質系統的寫輸送量。
以下討論描述了操作環境、可以在操作環境中採用的技術、以及在其中可以體現操作環境的元件的系統單晶片(SoC)。在本公開的上下文中,僅通過示例的方式參考操作環境。
操作環境
圖1示出了具有主機系統102的示例操作環境100,主機系統102能夠存儲或存取各種形式的數據或資訊。主機系統102的示例可以包括膝上型電腦104、桌上型電腦106和伺服器108,其中任何一項可以被配置作為使用者設備、計算設備或作為存儲網路或雲存儲的一部分。主機系統102的其他示例(未示出)可以包括平板電腦、機上盒、數據存放裝置、可穿戴智慧設備、電視、內容流設備、高清多媒體介面(HDMI)介質棒、智慧家電、家庭自動化控制器、智慧恒溫器、物聯網(IoT)設備、移動互聯網設備(MID)、網路附加存儲(NAS)驅動器、聚合存儲系統、遊戲機、汽車娛樂設備、汽車計算系統、汽車控制模組(例如發動機或動力傳動控制模組)等。通常,主機系統102可以出於任何合適的目的通信或存儲數據,諸如以實現特定類型的設備的功能、提供使用者介面、啟用網路存取、實現遊戲應用、重播介質、提供導航、編輯內容、提供數據存儲等。
主機系統102包括處理器110和電腦可讀介質112。處理器110可以被實現為任何合適類型或數目的單核或多核的處理器,以用於執行作業系統的指令或命令或主機系統102的其他應用。電腦可讀介質112(CRM 112)包括記憶體(未示出)和主機系統102的存儲系統114。主機系統102的記憶體可以包括任何合適的類型的易失性記憶體或非易失性記憶體或其組合。例如主機系統102的易失性記憶體可以包括各種類型的隨機存取記憶體(RAM)、動態RAM(DRAM)、靜態RAM(SRAM)等。非易失性記憶體可以包括唯讀記憶體(ROM)、電可擦除可編程ROM(EEPROM)或快閃記憶體(例如NAND快閃記憶體)。這些記憶體個體地或組合地可以存儲與使用者、應用和/或主機系統102的作業系統相關聯的數據。
主機系統102的存儲系統114可以被配置為任何合適類型的數據存儲系統,諸如存放裝置、存儲驅動器、存儲陣列、存儲卷等。儘管參考主機系統102進行了描述,但是存儲系統114也可以單獨地被實現為獨立設備或較大 存儲集合體的一部分,諸如網路附接的存放裝置、外部存儲驅動器、數據中心、伺服器群或虛擬存儲系統(例如,用於基於雲的存儲或服務)。存儲系統114的示例包括非易失性記憶體快速(NVMe)固態驅動器116、周邊元件連接快速(PCIe)固態驅動器118、固態驅動器120(SSD 120)和記憶體陣列122,其可以利用存放裝置或存儲驅動器的任何組合來實現。
存儲系統114包括存儲介質124和用於管理存儲系統114的各種操作或功能的存儲介質控制器126(存儲控制器126)。存儲介質124可以包括非易失性存放裝置,或從其被形成,數據128或主機系統102的資訊被存儲在該非易失性存放裝置上。存儲介質124可以利用諸如快閃記憶體、NAND快閃記憶體、RAM、DRAM(例如,用於快取記憶體)、SRAM等的任何類型的固態存儲介質或其組合來實現。在一些情況下,被存儲到存儲介質124的數據128被組織成數據(例如,內容)檔或數據物件,其被存儲到存儲系統114並且由主機系統102存取。數據128的檔案類型、大小或格式可能根據與檔關聯的相應來源、用途或應用而有所不同。例如存儲到存儲系統114的數據128可以包括音訊檔、視頻檔、文字檔、影像檔、多媒體檔、試算表等。儘管參考固態記憶體進行了描述,但是利用自我調整寫緩衝區釋放的存儲介質編程的各方面也可以被植入基於磁性或基於光學的介質類型。
通常,存儲控制器126管理存儲系統114的操作,並且使得主機系統102能夠存取存儲介質124以用於數據存儲。存儲控制器126可以通過硬體、固件或軟體的任何適當的組合來實現,以提供存儲系統114的各種功能。存儲控制器126還可以管理或實施與存儲介質124相關聯的內部任務或操作,諸如數據快取記憶體、數據移轉、垃圾收集、熱管理(例如,節流)、功率管理等。這樣,存儲控制器126可以從主機系統102接收主機I/O以用於數據存取,並且將與存儲介質124的內部操作相關聯的內部I/O排隊(或生成)。
在該示例中,存儲控制器126還包括存儲介質寫管理器130(介質寫管理器130)、寫緩衝區132和基於同位的編碼器,其被示為獨立磁碟容錯陣列(RAID)編碼器134。寫緩衝區132可以接收或存儲從主機系統102所接收的數據,以用於寫到存儲介質124。RAID編碼器134可以計算用於被寫到作為RAID條帶的一部分的存儲介質124的數據的同位資訊(例如,XOR位元)。RAID條帶的成員或單元可以包括存儲介質的任何合適的分區或區域,諸如晶元、平面、塊、頁面、字線等。通常,由RAID編碼器提供的同位資訊可用於與來自其他RAID條帶成員的資訊結合在一起,以在該成員的編程操作失敗時,恢復RAID條帶成員的數據。RAID或基於同位的數據恢復可以提供增強的數據可靠性,並且保護免於存儲介質的完全塊或頁故障。
在各個方面,介質寫管理器130可以與RAID編碼器134交互以計算針對存儲到寫緩衝區132的數據的同位資訊。在一些情況下,數據還可以在計算同位資訊之前或其期間被傳遞到存儲介質系統的另一內部緩衝區。如果將數據寫到存儲介質的編程操作失敗,則介質寫管理器130可以使用該同位資訊來實現數據恢復,而不是依賴於寫緩衝區中保持的數據。因為同位資訊能夠實現數據恢復,所以介質寫管理器然後可以回應於對同位資訊的計算(和/或數據被傳遞到另一內部緩衝區或存儲介質)而釋放寫緩衝區,從而使寫緩衝區132自由以用於在將數據編程到存儲介質之前或在數據被編程到存儲介質中時重複使用。通過這樣做,寫緩衝區的自我調整釋放可以導致改進的寫緩衝區利用率和增加的存儲介質寫輸送量。
主機系統102還可以包括I/O埠136、圖形處理單元138(GPU 138)和數據介面140。通常,I/O埠136允許主機系統102與其他設備、週邊設備或使用者交互。例如,I/O埠136可以包括通用序列匯流排、人機周邊設備、音訊輸入、音訊輸出等或與其耦接。GPU 138處理並且繪製與圖形相關的數據以用於主機系 統102,諸如作業系統的使用者介面元素、應用等。在一些情況下,GPU 138存取本機存放區器的一部分以繪製圖形,或包括用於繪製主機系統102的圖形(例如,視頻RAM)的專用記憶體。
主機系統102的數據介面140提供到一個或多個網路以及被連接到那些網路的其他設備的連接。數據介面140可以包括有線介面(諸如乙太網或光纖介面),以用於通過局域網、內聯網或互聯網進行通信。備選地或附加地,數據介面140可以包括促進通過無線網路(諸如無線局域網(LAN)、廣域無線網路(例如蜂窩網路)和/或無線個人區域網路(WPAN))進行通信的無線介面。根據利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個方面,通過I/O埠136或數據介面140傳送的任何數據可以被寫到主機系統102的存儲系統114或從其被讀取。
圖2在200處圖示了固態驅動器202的示例配置,其中介質寫管理器、寫緩衝區和RAID編碼器可以根據一個或多個方面來實現。在該示例中,在被實現為固態存儲驅動器(SSD)202的存儲系統114的上下文中示出了介質寫管理器130和其他組件。SSD 202可以耦接到任何合適的主機系統102,並且植入包括多個NAND快閃記憶體設備204-0至204-n的存儲介質124,其中n是任何合適的整數。在一些情況下,NAND快閃記憶體設備204包括在通道級(設備組)或設備級(個體設備)上可存取或管理的存放裝置、晶元或晶片的多個快閃記憶體通道。儘管被示為存儲控制器126的元件,但是介質寫管理器130可以與存儲控制器分離地實現或在其外部。在一些情況下,介質寫管理器130被實現為記憶體介面的一部分(諸如DRAM控制器)或與存儲控制器相關聯的介面。
通常,SSD 202的操作由存儲控制器126的實例啟用或管理,在該示例中,該實例存儲控制器包括用於實現與主機系統102通信的主機介面206和用於實現存取存儲介質124的介質介面208。主機介面206可以被配置為實現任何 合適類型的存儲介面或協定,諸如串列高級技術附接(SATA)、通用序列匯流排(USB)、PCIe、高級主機控制器介面(AHCI)、NVMe、Fabric上NVM(NVM-OF)、NVM主機控制器介面規範(NVMHCIS)、小型電腦系統介面(SCSI)、串列附接SCSI(SAS)、安全數位I/O(SDIO)、光纖通道,其任何組合(例如M.2或下一代形狀因數(NGFF)組合介面)等。備選地或附加地,介質介面208可以實現任何合適類型的存儲介質介面,諸如快閃記憶體介面、快閃記憶體匯流排通道介面、NAND通道介面、物理頁面定址(PPA)介面等。
在各個方面,SSD 202或存儲控制器126的元件提供主機介面206到主機系統102和介質介面208到存儲介質124之間的數據路徑。在該示例中,存儲控制器126包括處理器核210,以用於執行內核、固件或驅動器以實現存儲控制器126的功能。在一些情況下,處理器核210還可以執行處理器可執行指令以實現存儲控制器126的介質寫管理器130。備選地或附加地,介質寫管理器130可以從與RAID編碼器134相關聯的硬體執行或在其上運行。
如圖2所示,存儲控制器126的結構212(其可以包括控制和數據匯流排)可操作地耦接並且支援存儲控制器126的元件之間的通信。例如,介質寫管理器130可以與寫緩衝區132、RAID編碼器134或處理器核210(例如,固件)通信,以在存儲控制器126內交換數據、資訊或控制信令(例如,緩衝區釋放中斷)。存儲控制器126的靜態隨機存取記憶體214可以存儲處理器可執行指令或用於存儲控制器的固件或驅動器的代碼,其可以由處理器核210執行。備選地或附加地,存儲控制器126的寫緩衝區132可以在控制器的SRAM 214中被實現。
在該示例中,存儲控制器126包括動態隨機存取記憶體(DRAM)控制器216和相關聯的DRAM 218,以用於在存儲控制器126在主機系統102、存儲介質124或存儲控制器的其他元件之間移動數據時存儲或快取記憶體各種數據。如圖2中所示,寫緩衝區132的實例在DRAM 218中實現,並且可以通過DRAM 控制器216被存取或管理。存儲控制器126還包括改錯碼(ECC)編碼器220,其可以被用於對被編程或寫到SSD 202的存儲介質124的數據進行ECC編碼。
圖3在300處示出了各種硬體和固件元件的示例配置,以用於實現利用自我調整寫緩衝區釋放的存儲介質編程的各方面。在該示例中,存儲控制器126的元件被示為可以在存儲控制器的固件302和/或硬體304中實現的抽象實體。這只是各種元件的一個示例實現,其中任何一個元件都可以與本文所述的其他元件分離地實現或與其組合而被實現。備選地或附加地,參考圖2或圖3描述的元件中的任何元件可以被實現為智慧財產權塊(IP塊)或IP核,其被配置為提供元件的各種描述特徵的邏輯單元、單元和/或積體電路(IC)。例如,存儲控制器126的元件(例如,介質寫管理器130)可以被實現為包括硬體、固件或軟體的組合的IP核或IP塊,以提供相應功能或實現元件的相應操作。
在該示例中,存儲控制器126的硬體304包括NAND快閃記憶體設備204、主機介面206、介質介面208、處理器210(未示出)和ECC編碼器220,其可以如參考圖2所描述地被實現。硬體304還可以包括寫緩衝區132和RAID編碼器134,其可操作地與RAID緩衝區306耦接。在該示例中單獨示出,RAID緩衝區306可以被實現為RAID編碼器134的一部分並且存儲RAID編碼器所生成或計算的同位資訊。介質寫管理器130可以至少部分地在硬體304中被實現,並且與寫緩衝區132或RAID編碼器134交互以執行寫緩衝區132的自我調整釋放,如貫穿本公開所描述的。備選地或附加地,介質寫管理器130可以在存儲控制器126的處理器核210上執行。
通常,存儲控制器126的固件302輔助硬體304管理主機系統102和存儲介質124之間的數據路徑。換言之,固件302可以轉換針對從主機系統102所接收的數據的命令或請求,以實現對存儲介質124的存取。如圖3所示,固件302包括用於在主機側實現主機命令處理器310的主機介面驅動器308和用於在存儲 介質側實現介質命令管理器314的介質介面驅動器312。如圖3中所示,用於數據318(例如,與寫命令相對應的數據)的主機輸入/輸出命令316(主機I/O 316)由主機命令處理器310接收,並且被發送到存儲控制器126的快閃記憶體轉換層320(FTL 320)的I/O調度器。FTL 320和/或I/O調度器可以處理和調度主機I/O 316,然後其可以作為對應的介質輸入/輸出命令322(介質I/O 322)被執行,以用於通過介質命令管理器314的存儲介質存取。
FTL 320可以管理命令處理(例如,主機I/O 316轉換和調度),以促進主機系統數據318在存儲系統114內和/或通過存儲控制器126的移動,諸如到存儲介質124。如圖3中所示,在將主機數據寫到存儲介質的上下文中,FTL 320處理主機I/O 316,以管理或促進數據318從主機介面206通過數據路徑到介質介面208的移動,其中數據318被編程到NAND快閃記憶體設備204。為此,FTL 320或固件302可以管理硬體304的各種元件,以促進數據318從一個元件移動到下一個元件。例如,固件302可以使硬體304從主機介面206獲取數據318或將其從主機介面206移動到寫緩衝區132,將數據318(例如,通過傳遞或複製)提供給RAID編碼器134,和/或將數據318提供給ECC編碼器220以用於編碼。固件302還可以使硬體304將數據318或經ECC編碼的數據324發送到介質介面208,以用於寫或編程到NAND快閃記憶體設備204。
在各個方面,介質寫管理器130可以與寫緩衝區132、RAID編碼器134、固件302或硬體304的其他元件交互,以實現利用自我調整寫緩衝區釋放的存儲介質編程的各方面。在一些情況下,介質寫管理器130監測RAID編碼器134,以用於對針對數據318(例如,一個主機寫命令的數據)的同位資訊的計算完成的指示。基於同位資訊計算的完成和數據的副本被存儲到另一內部緩衝區(例如,ECC緩衝區),寫緩衝區130生成到固件302的中斷以引起釋放存儲數據318(例如,一個主機寫命令的數據)的寫緩衝區132。通過這樣做,寫緩 衝區132自由並且可以被重用於主機的下一個寫命令的數據318。這還可以使得存儲驅動器能夠利用較少或較小的寫緩衝區來實現,而不影響存儲驅動器的寫輸送量。
圖4A至圖4E示出了在晶元級數據冗餘的上下文中利用自我調整寫緩衝區釋放的存儲介質編程的示例。如圖4A中的400所示,將主機數據存儲到存儲介質通常包括處理在寫緩衝區132處所接收到的數據318和將其移動到NAND快閃記憶體204以編程到NAND介質中。在此,NAND快閃記憶體204被圖示為個體NAND晶元1204-1至NAND晶元n 204 n,其中n是任何合適的整數。圖4A至圖4E的實體中的任何實體可以類似於參考圖1至圖3所描述的對應實體而被實現。在該示例中,存儲控制器126包括RAID編碼器134的實例以實現RAID編碼,這可以為存儲控制器提供改進的數據可靠性,並且實現在NAND編程故障期間丟失的數據的恢復。
通常,RAID條帶可以跨越駐留在存儲介質的不同晶元或平面上的存儲塊。在高代碼速率應用(低開銷)中,RAID條帶可能還包括來自存儲介質的同一晶元或平面的塊。在該示例中,RAID編碼器134以晶元RAID方案(或晶元級RAID)實現,其可以防止存儲介質晶元(例如,NAND晶元)的故障。在其他方面,可以代替RAID編碼器來實現Reed-Solomon代碼編碼器,以針對多個RAID條帶成員(例如,平面或晶元)中的故障事件實現保護。
如圖4A所示,第一寫緩衝區0 132-0可以從主機(諸如主機系統102)接收第一數據318-0。然後,第一數據318-0被提供給RAID編碼器134以用於計算針對第一數據318-0的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及被編程到第一NAND晶元0 204-0的第一平面(平面0 406-0)。通常,第一寫緩衝區0 132-0中的數據可以被並行地傳遞到ECC編碼器和/或存儲介質以及用於XOR生成的RAID編碼器。這樣,第一寫緩衝區0 132-0被編程到存儲介 質,並且RAID緩衝區306累積XOR資訊,直到所有RAID成員都已經通過RAID編碼器134,然後RAID緩衝區306的內容可以被寫到介質。
在該示例中,RAID編碼器134包括XOR引擎402,以計算針對第一數據318-0的XOR位元,其被存儲到RAID緩衝區306的第一平面(平面0 404-0)。如所指出的,與RAID編碼器134同位資訊的計算(例如40至50微秒)或到存儲介質的傳遞時間相比,將第一數據318-0的編程到NAND快閃記憶體可能花費更多的時間(例如3到4毫秒)。
繼續圖4B,回應於RAID編碼器134對XOR位元的計算,介質寫管理器130可以釋放第一寫緩衝區0 132-0,如在408所示。在第一數據318-0到第一NAND晶元204-0的編程410之前或其期間,第一寫緩衝區0 132-0可以被釋放。因此,在第一數據318-0到NAND快閃記憶體204的編程完成之前,第一寫緩衝區0 132-0可以被釋放並且可用於重用。與傳統的存儲介質編程相反,在第一數據318-0完成編程之前,第一寫緩衝區0 132-0可以從主機接收附加的數據,這可以改進存儲控制器126或存儲系統114的寫輸送量。
如圖4B中所示,當第二寫緩衝區1 132-1從主機接收第二數據318 1,繼續存儲主機數據。然後,第二數據318 1被提供給RAID編碼器134,以用於計算針對第二數據318 1的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及被編程到第一NAND晶元0 204-0的第二平面(平面1 406-1)。XOR引擎402計算第二數據318 1的XOR位元,其被存儲到RAID緩衝區306的第二平面(平面1 404-1)。
繼續圖4C,基於RAID編碼器134對第二數據318-1的XOR位的計算完成,介質寫管理器130可以釋放第二寫緩衝區1 132-1,如在412所示。類似於第一寫緩衝區0 132-0,在第二數據318-1到第一NAND晶元204-0的編程414之前或其期間,第二寫緩衝區1 132-1可以被釋放。因此,在第二數據318 1到NAND 快閃記憶體204的編程完成之前,第二寫緩衝區112-12-1可以被釋放並且可用於重用。在一些情況下,在第二數據318 1到NAND快閃記憶體204的編程完成之前,第一寫緩衝區0 132-0和第二寫緩衝區1 132-1可以被釋放以用於重用。
參考在圖4C的上下文中主機數據的存儲,第三寫緩衝區2 132-2從主機接收第三數據318-2。然後,第三數據318-2被提供給RAID編碼器134以計算針對第三數據318-2的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及被編程到第二NAND晶元1 204-1的第一平面(平面0 406-0)。XOR引擎402可以計算用於第三數據318-2的XOR位元,其可以被存儲到RAID緩衝區306的第一平面(平面0 404-0)。
如圖4D中所示,回應於RAID編碼器134對第三數據318-2的XOR位的計算的完成,介質寫管理器130釋放第三寫緩衝區2 132-2,如在416所示。在第三數據318-2到第二NAND晶元204-1的編程418之前或其期間,第三寫緩衝區2132-2可以被釋放。因此,在第三數據318-2到NAND快閃記憶體204的編程完成之前,第三寫緩衝區2 132-2可以被釋放並且可用於重用。在一些情況下,在第三數據318-2到NAND快閃記憶體204的編程完成之前,第一寫緩衝區0 132-0、第二寫緩衝區1 132-1和第三寫緩衝區2 132-2可以被釋放以用於重用。
在該示例中結束主機數據的存儲,第四寫緩衝區3 132-3從主機接收第四數據318 3。然後,第四數據318 3被提供給RAID編碼器134以用於計算第四數據318 3的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及被編程到第二NAND晶元1 204-1的第二平面(平面1 406-1)。XOR引擎402計算第四數據318-3的XOR位元,其被存儲到RAID緩衝區306的第二平面(平面1 404-1)。類似於其他寫緩衝區132,在第四資訊318-3的同位資訊的計算完成時,介質寫管理器可以釋放第四寫緩衝區3 132-3。
參考圖4E,由RAID編碼器134所計算出的同位資訊或XOR位元可以被存儲或保持在RAID緩衝區306中,直到最後的NAND晶元204的編程完成為止。在晶元級RAID的情況下,RAID編碼器134的同位資訊從RAID緩衝區306被編程到RAID條帶的最後的NAND晶元n 204-n的兩個平面406。通過回顧,主機的數據318跨RAID條帶的其他NAND晶元204成員被條帶化,諸如NAND晶元0 204-0至NAND晶元n-1(未示出)。在該示例中,ECC編碼器220(為了視覺清晰示出兩個實例)對第一平面0 406-0和第二平面1 406-1的相應同位資訊(例如,XOR位元)編碼。然後,ECC編碼的同位資訊分別被編程到最後的NAND晶元n 204-n的第一平面0 406-0和第二平面1 406-1。通過實現RAID編碼,無法編程的晶元(例如,晶元k<n)的任一平面的數據還可以如公式1和2所示被恢復。
(晶元k,平面0)=(晶元0,平面0)XOR(晶元1,平面0)XOR…XOR(晶元k-1,平面0)XOR(晶元k+1,平面0)XOR…XOR(晶元n,平面0)公式1:晶元k的平面0的數據恢復
(晶元k,平面1)=(晶元0,平面1)XOR(晶元1,平面1)XOR…XOR(晶元k-1,平面1)XOR(晶元k+1,平面1)XOR…XOR(晶元n,平面1)公式2:晶元k的平面1的數據恢復
在將同位資訊編程到晶元n失敗的情況下,同位資訊可以被保持在RAID緩衝區306中,直到晶元n的編程完成為止,使得同位數據可以直接從RAID緩衝區306被恢復。
備選地,一旦已知RAID條帶的所有(非同位)成員已經成功編程到存儲介質,則RAID緩衝區306也可以提前被釋放。在這種情況下,RAID緩衝區306可以提前被釋放,並且如果到存儲介質的編程失敗,則同位資訊可以通 過再次讀取所有RAID成員來重建。備選地,當不需要重建同位時,條帶可能缺乏RAID保護,並且條帶可以被重新定位到有效地重建同位資訊的其他位置。
圖5A至圖5D示出了在平面級數據冗餘的上下文中利用自我調整寫緩衝區釋放的存儲介質編程的示例。如圖5A中在500處所示,將主機數據存儲到存儲介質通常包括處理在寫緩衝區132處所接收到的數據318和將其移動到NAND快閃記憶體204,以用於編程到NAND介質中。在此,NAND快閃記憶體204被示為個體NAND晶元1204-1至NAND晶元n 204 n,其中n是任何合適的整數。圖5A至圖5D的實體中的任何實體可以類似於參考圖1至圖4所描述的對應實體來實現。在該示例中,存儲控制器126包括RAID編碼器134的實例以實現RAID編碼,這可以為存儲控制器提供改進的數據可靠性,並且實現在NAND編程操作期間丟失的數據的恢復(例如,塊或頁面故障)。
在本示例中,RAID編碼器134在平面RAID方案(或平面級RAID)中被實現,這可以針對存儲介質平面(例如NAND平面)的故障進行保護。在一些情況下,使用平面RAID可以減少晶元RAID(例如,圖4A至圖4E)所涉及的計算開銷。在其他方面,可以代替RAID編碼器來實現Reed-Solomon代碼編碼器,以針對多個RAID條帶成員(例如,平面或晶元)中的故障事件實現保護。
如圖5A中所示,第一寫緩衝區0 132-0可以從主機(諸如主機系統102)接收第一數據318-0。然後,第一數據318-0被提供給RAID編碼器134用於計算針對第一數據318-0的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及然後被編程到第一NAND晶元0 204-0的第一平面(平面0 506-0)。在該示例中,RAID編碼器134包括XOR引擎502,以計算用於第一數據318-0的XOR位元,其被存儲到RAID緩衝區306的第一平面(平面0 504-0)中。如所指出的,與RAID編碼器134或XOR引擎502的同位資訊的計算相比,對第一數據318-0進行編程可以消耗多得多的時間。
繼續圖5B,回應於RAID編碼器134對XOR位元的計算,介質寫管理器130可以釋放第一寫緩衝區0 132-0,如在508處所示。在第一數據318-0到第一NAND晶元204-0的編程510之前或其期間,第一寫緩衝區0 132-0可以被釋放。因此,在第一數據318-0到NAND快閃記憶體204的編程完成之前,第一寫緩衝區0 132-0可以被釋放並且可用於重用。與傳統的存儲介質編程相反,在第一數據318-0完成編程之前,第一寫緩衝區0 132-0可以從主機接收附加的數據,這可以改進存儲控制器126或存儲系統114的寫輸送量。
如圖5B所示,當第二寫緩衝區1 132-1從主機接收第二數據318 1,繼續主機數據的存儲。然後,第二數據318 1被提供給RAID編碼器134以用於計算針對第二數據318 1的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及然後被編程到第一NAND晶元0 204-0的第二平面(平面1 506-1)。XOR引擎502計算第二數據318 1的XOR位元,其被存儲到RAID緩衝區306的第二平面(平面1 504-1)。
繼續圖5C,基於RAID編碼器134對用於第二數據318-1的XOR位的計算的完成,介質寫管理器130可以釋放第二寫緩衝區1 132-1,如在512處所示。與第一寫緩衝區0 132-0類似,在第二數據318-1到第一NAND晶元204-0的編程514之前或其期間,第二寫緩衝區1 132-1可以被釋放。因此,在第二數據318 1到NAND快閃記憶體204的編程完成之前,第二寫緩衝區1 132-1可以被釋放並且可用於重用。在此,假定同位資訊還已經針對第三數據(未示出)被計算,其已經被發送到NAND快閃記憶體204的編程介面。回應於針對第三數據的同位資訊的計算,介質寫管理器130釋放第三寫緩衝區2 132-2,如在516處所示。這樣,第三寫緩衝區2 132-2的釋放可以在第三數據的編程518之前或其期間發生,從而在相應的數據被編程到NAND快閃記憶體204中之前,使第三寫緩衝區2 132-2自由以用於重用。
如圖5C中所示結束主機數據的存儲,最後的寫緩衝區2n 132-2n(例如,針對條帶的最後的寫緩衝區)從主機接收RAID條帶的最後的平面成員的數據318-2n。然後,數據318-2n被提供給RAID編碼器134以用於計算針對數據318-2n的同位資訊,並且被提供給ECC編碼器220以用於ECC編碼,以及被編程到第n個NAND晶元n 204-n的第一平面(平面0 506-0)。XOR引擎502計算用於數據318-2n的XOR位元,其被存儲到RAID緩衝區306的第一平面(平面0 504-0)。類似於其他寫緩衝區132,在資訊318-2n的同位資訊的計算完成時,介質寫管理器可以釋放最後的寫緩衝區2n 132-2n。
參考圖5D,由RAID編碼器134所計算出的同位資訊或XOR位元可以被存儲或保持在RAID緩衝區306中,直到最後的NAND晶元204的編程完成為止。在平面級RAID的情況下,針對RAID編碼器134的每個平面(504-0和504-1)的同位資訊在編程到RAID條帶的最後的NAND晶元n 204-n的第二平面(平面0 506-1)之前,通過XOR運算被組合。通過回顧,主機的數據318跨RAID條帶的其他NAND平面成員被條帶化,諸如NAND晶元0 204-0的平面到NAND晶元n的第一平面。在該示例中,ECC編碼器220對第一平面0 506-0和第二平面1 506-1的組合的同位資訊(例如,XOR位元)編碼。然後,經ECC編碼的同位資訊被編程到最後的NAND晶元n 204-n的第二平面1 506-1。通過實現RAID編碼,無法編程的晶元(例如,晶元k<n)的任一平面的數據還可以如公式3和4所示被恢復。
(晶元k,平面0)=(晶元0,平面0)XOR(晶元1,平面0)XOR…XOR(晶元k-1,平面0)XOR(晶元k+1,平面0)XOR…XOR(晶元n,平面0)公式3:晶元k的平面0的數據恢復
(晶元k,平面1)=(晶元0,平面1)XOR(晶元1,平面1)XOR…XOR(晶元k-1,平面1)XOR(晶元k+1,平面1)XOR…XOR(晶元n,平面1)公式4:晶元k的平面1的數據恢復
在同位資訊到晶元n的編程失敗的情況下,該同位資訊可以被保留在RAID緩衝區306中,直到晶元n的第二平面的編程完成為止,使得同位數據從RAID緩衝區306直接可恢復。這些只是利用自我調整寫緩衝區釋放的存儲介質編程的少許示例,貫穿本公開中實現和描述了示例中的其他示例。
用於自我調整寫緩衝區釋放和數據恢復的技術
以下討論描述了用於利用自我調整寫緩衝區釋放和/或基於同位的數據恢復的存儲介質編程的技術。可以使用本文描述的環境和實體中的任何環境和實體(諸如介質寫管理器130、寫緩衝區132和/或RAID編碼器134)來實現這些技術。這些技術包括圖6至圖8所示的各種方法,該方法中的每個方法被示為可以由一個或多個實體執行的操作的集合。
方法600到800不一定限於在相關聯的圖中所示的操作順序。而是,該操作中的任何操作可以被重複、跳過,替換或重新排序,以實現本文描述的各個方面。此外,這些方法可以全部或部分地彼此結合使用,而不管是由同一實體、單獨實體還是其任何組合來執行。在以下討論的部分中,例如將參考圖1的操作環境100以及圖2至圖5D的各種實體或配置。這樣的參考不應當被視為將所描述的各方面限制到操作環境100、實體或配置,而是作為各種示例中的一個示例的說明。備選地或附加地,方法的操作也可以由參考圖9的系統單晶片和/或圖10的存儲系統控制器所描述的實體實現或與其一起實現。
圖6描繪了用於利用自我調整寫緩衝區釋放的存儲介質編程的示例方法600,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132或RAID編碼器134來執行或與其一起執行的操作。
在602處,從主機介面接收的數據被存儲到寫緩衝區。寫緩衝區可以在存儲控制器的SRAM或DRAM中被實現。在一些情況下,從主機介面所接 收的數據對應於主機系統的寫命令,數據經由主機介面從該主機系統被接收。寫命令可以指定存儲介質(諸如存儲系統的NAND快閃記憶體)中數據的目的地。
在604處,同位資訊針對存儲到寫緩衝區的數據利用基於同位的編碼器被確定。在確定同位資訊之前或其期間,數據可以被傳遞到存儲系統的內部緩衝區或存儲介質。基於同位的編碼器可以包括具有XOR引擎或XOR緩衝區的RAID編碼器,以用於確定同位資訊(例如,XOR位元)。同位資訊可以對應於將被寫存儲介質的平面或晶元的數據以及被寫到存儲介質的至少一個其他平面或至少一個其他晶元的其他數據。例如,同位數據可以對應於跨越NAND快閃記憶體的多個晶元或平面的RAID條帶的數據成員的XOR位元。
在606處,針對數據的同位資訊被存儲到基於同位的編碼器的緩衝區中。同位資訊可以基於數據被編程到的存儲介質中的相應平面來被存儲到緩衝區的平面。備選地或附加地,針對數據和其他數據的同位資訊可以被保持在基於同位的編碼器的緩衝區中,直到同位資訊成功地被編程到存儲介質中為止。
在608處,回應於同位資訊的確定,寫緩衝區被釋放。在數據被完全編程到存儲介質中之前,寫緩衝區被釋放。基於同位的編碼器可以提供指示對同位資訊的確定的完成的通知。在一些情況下,基於同位的編碼器被監測以檢測何時對同位資訊的確定或計算完成和/或被存儲到基於同位的編碼器的緩衝區中。回應於通知或檢測到同位資訊的完成的確定,通知或中斷可以被發送到存儲控制器的固件以引起寫緩衝區的釋放。當被釋放,寫緩衝區可用於重用,諸如從主機介面接收後續數據。
在610處,在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到存儲介質。因為在確定同位資訊之後寫緩衝區被釋放,所以在數據被寫到或編程到存儲介質之前寫緩衝區可以被釋放。這樣,在釋放寫緩衝區之 後,可以繼續向存儲介質寫或編程數據。在編程故障的情況下,數據可以基於同位資訊並且不使用先前在寫緩衝區中所保持的數據來恢復。
可選地在612處,在完成數據到存儲介質的寫之前,其他數據被存儲到寫緩衝區。如所指出的,數據的編程可以在釋放寫緩衝區之後繼續,其可以被存儲控制器的固件或其他元件自由地重用。在一些情況下,在將先前的數據被編程到存儲介質時,附加的數據被存儲到寫緩衝區。通過使寫緩衝區自由和重用寫緩衝區,自我調整緩衝區釋放的各個方面可以改進寫緩衝區利用率或增加存儲介質的寫輸送量。
圖7描繪了用於基於同位資訊的計算來釋放寫緩衝區的示例方法700,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132和/或RAID編碼器134執行的或與其一起執行的操作。
在702處,來自主機系統的數據在寫緩衝區處被接收。數據從主機系統通過存儲控制器的主機介面被接收。在一些情況下,數據作為I/O命令的一部分從主機系統被接收或獲取,以將數據寫到與存儲控制器關聯的存儲介質。
在704處,數據從寫緩衝區被傳輸到RAID編碼器。通常,數據被傳輸、傳遞或發送到RAID編碼器,而存儲系統的另一內部緩衝區維護數據。換言之,RAID編碼器可以在另一緩衝區保持數據副本或數據被發送到存儲介質以用於編程的同時處理數據。通過這樣做,主機系統可以從數據解脫(例如,快取記憶體開啟模式),並且存儲控制器在數據處理或編程故障的情況下可以具有本機複本。
在706處,同位資訊利用RAID編碼器被計算以用於數據。RAID編碼器可以包括用於計算或生成寫緩衝區中的數據的XOR位元的XOR引擎或XOR緩衝區。XOR位元(或針對數據的同位資訊)可以被保持在基於同位的編碼器的緩衝區中。在一些情況下,RAID編碼器被配置為生成中斷或提供對同位 資訊的計算完成的通知。例如,RAID編碼器可以向存儲控制器的固件提供中斷,該中斷指示同位資訊的計算完成和/或針對數據的同位資訊被保持在RAID編碼器的緩衝區中。
在708處,回應於針對數據的同位資訊的計算完成,寫緩衝區被釋放。在釋放寫緩衝區之前,數據可以被複製到存儲系統的另一內部緩衝區或被編程到存儲介質。在數據被完全編程到存儲介質中之前,寫緩衝區可以被釋放。在一些情況下,在開始數據到存儲介質的編程之前,寫緩衝區被釋放。備選地或附加地,回應於RAID編碼器、ECC編碼器或存儲控制器的其他元件所提供的中斷或通知,寫緩衝區可以被釋放。
在710處,數據利用ECC編碼器被編碼,以提供經ECC編碼的數據。ECC編碼器可以在RAID編碼之後或與RAID編碼並行地對數據進行編碼。在一些情況下,在同位資訊根據數據被計算之後,ECC編碼器從RAID編碼器接收數據。
在712處,在寫緩衝區從存儲數據中被釋放後,經ECC編碼數據的至少一部分被寫到存儲介質。因為在確定同位資訊之後寫緩衝區被釋放,所以在數據由ECC編碼器進行ECC編碼之前或與其同時,寫緩衝區被釋放。這樣,在釋放寫緩衝區之後,可能發生或繼續將經ECC編碼的數據寫或編程到存儲介質。在編程故障的情況下,數據可以基於同位資訊並且不使用先前保持在寫緩衝區中的數據而被恢復。
可選地在714處,同位資訊被寫到存儲介質。同位資訊可以被寫存儲介質的任何合適區域,諸如RAID條帶的最後的晶元或平面。通常,當同位資訊由RAID緩衝區保持時,同位資訊可以被寫到RAID條帶的最後的成員。通過這樣做,在存儲介質編程故障的情況下,同位資訊可以從RAID緩衝區中被恢復。
可選地在716處,其他數據在寫緩衝區處被接收。如所指出的,經ECC編碼的數據的編程可以在釋放寫緩衝區之後繼續,該寫緩衝區自由以由存儲控制器的固件或其他組件重用。在一些情況下,在先前的數據被編程到存儲介質時,其他數據在寫緩衝區處被接收。通過釋放和重用寫緩衝區,自我調整緩衝區釋放的各方面可以改進寫緩衝區利用率或增加存儲介質的寫輸送量。
圖8描繪了用於利用基於同位的數據重建從編程故障中恢復的示例方法800,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132和/或RAID編碼器134執行或與其一起執行的操作。
在802處,同位資訊利用RAID編碼器被計算以用於從主機介面所接收的數據。RAID編碼器可以包括用於計算或生成用於寫緩衝區中的數據的XOR位元的XOR引擎或XOR緩衝區。
在804處,同位資訊被存儲到RAID編碼器的緩衝區中。XOR位元(或針對數據的同位資訊)可以被保持在基於同位的編碼器的緩衝區中。在一些情況下,RAID編碼器被配置為生成中斷或提供同位資訊的計算完成的通知。
在806處,在計算同位資訊之後寫緩衝區被釋放。在數據被完全編程到存儲介質中之前,寫緩衝區可以被釋放。備選地或附加地,回應於存儲控制器的RAID編碼器、ECC編碼器、介質寫管理器或其他元件所提供的中斷或通知,寫緩衝區被釋放。
在808處,啟動數據到存儲介質的區域的編程。數據可以被釋放到存儲介質介面以用於編程到存儲介質的區域(例如,塊、平面或晶元)。在一些情況下,數據經由存儲控制器的快閃記憶體介面被發送到快閃記憶體控制器,以用於編程到快閃記憶體的區域。例如,提供有數據的介質I/O可以指定快閃記憶體控制器將數據寫存儲介質的平面。
在810處,針對數據到存儲介質的編程,編程故障被檢測到。編程故障可以包括頁面故障、塊故障、平面故障、晶元故障等。在寫緩衝區從存儲數據中被釋放之後,編程故障可以被檢測到。
在812處,數據基於同位資訊和來自存儲介質的其他區域的相應數據被重建。通過實現RAID,存儲控制器可以基於RAID緩衝區中的同位資訊和來自RAID條帶的其他成員(例如,晶元或平面)的數據來重建編程故障的丟失數據。通過這樣做,存儲控制器能夠重建先前由釋放的寫緩衝區所保持的數據。
在814,重建的數據被編程到存儲介質的不同區域。在編程故障的情況下,存儲控制器能夠重建由於編程故障而丟失的數據,並且嘗試將數據重新編程到存儲介質的不同區域,這可以確保由存儲控制器所管理的數據的可靠性。備選地或附加地,如果在嘗試將同位資訊寫到RAID條帶的最後的成員時發生編程故障,則RAID緩衝區的同位資訊還可以被重新編程到存儲介質的不同區域。如所指出的,同位資訊被保持在RAID緩衝區中,直到成功完成到存儲介質的編程為止,以確保從這樣的編程故障中恢復的能力。備選地,RAID緩衝區還可以在條帶被重新分配並且使其同位資訊重新生成時被釋放。
系統單晶片
圖9示出了示例性系統單晶片(SoC)900,其可以實現利用自我調整寫緩衝區釋放的存儲介質編程的各個方面。SoC 900可以在任何合適的系統或設備中實現,諸如智慧手機、上網本、平板電腦、接入點、網路附接存儲裝置、相機、智慧設備、印表機、機上盒、伺服器、數據中心、固態驅動器(SSD)、硬碟驅動器(HDD)、存儲驅動器陣列、記憶體模組、汽車計算系統或任何其他合適類型的設備(例如本文所述的其他設備)。儘管參考SoC進行了描述,但是圖9的實體也可以被實現為其他類型的積體電路或嵌入式系統,諸如專用積體電路(ASIC)、記憶體控制器、存儲控制器、通信控制器、專用標準產品(ASSP)、 數位訊號處理器(DSP)、可編程SoC(PSoC)、系統級封裝(SiP)或現場可編程閘陣列(FPGA)。
SoC 900可以與電子電路、微處理器、記憶體、輸入-輸出(I/O)控制邏輯、通信介面、固件和/或用於提供計算設備、主機系統或存儲系統的功能的軟體(諸如本文描述的設備或元件(例如存儲驅動器或存儲陣列)中的任何一項)集成在一起。SoC 900還可以包括集成數據匯流排或互連結構(未示出),其耦接SoC的各種元件以用於控制元件之間的信令、數據通信和/或路由。可以通過外部埠、並行數據介面、串列數據介面、基於結構的介面、週邊元件介面或任何其他合適的數據介面來公開或存取SoC 900的集成數據匯流排、互連結構或其他元件。例如SoC 900的元件可以通過外部介面或片外數據介面來存取或控制外部存儲介質。
在該示例中,SoC 900包括各種元件,諸如輸入-輸出(I/O)控制邏輯902和基於硬體的處理器904(處理器904),諸如微處理器、處理器核、應用處理器、DSP等。SoC 900還包括任何類型的記憶體906,其可包括RAM、SRAM、DRAM、非易失性記憶體、ROM、一次性可編程(OTP)記憶體、多次可編程(MTP)記憶體、快閃記憶體和/或其他合適的電子數據存儲裝置和/或其組合。在一些方面,處理器904和存儲在記憶體906上的代碼被實現為存儲系統控制器或存儲聚合器,以提供與利用自我調整寫緩衝區釋放的存儲介質編程相關聯的各種功能。在本公開的上下文中,記憶體906經由非暫態信號存儲數據、代碼、指令或其他資訊,並且不包括載波或暫態信號。替代地或另外地,SoC 900可以包括用於存取附加的或可擴展的片外存儲介質的數據介面(未示出),諸如固態記憶體(例如快閃記憶體或NAND記憶體)、基於磁性的記憶體介質,或基於光學的記憶體介質。
SoC 900還可以包括固件908、應用、程式、軟體和/或作業系統,其可以體現為在記憶體906上維護的處理器可執行指令,用於由處理器904執行以實現SoC 900的功能。SoC 900還可以包括其他通信介面,諸如用於控制本地片上(未示出)或片外通信收發機的組件或與本地片上(未示出)或片外通信收發機的元件通信的收發機介面。替代地或另外地,收發機介面還可包括或實現信號介面以片外傳送射頻(RF)、中頻(IF)或基帶頻率信號,以促進通過收發機、實體層收發機(PHY)或者耦接到SoC 900的介質存取控制器(MAC)的有線或無線通訊。例如SoC 900可以包括收發機介面,其被配置為允許通過有線或無線網路進行存儲,諸如以提供能夠利用自我調整寫緩衝區釋放來實現存儲介質編程的網路附接存儲(NAS)卷。
SoC 900還包括介質寫管理器130、寫緩衝區132和RAID編碼器134,其可以如所示分離地實現,也可以與存儲元件、數據介面組合在一起,也可以通過片外介面可存取。根據利用自我調整寫緩衝區釋放的存儲介質編程的各個方面,介質寫管理器130可以與RAID編碼器134交互以計算用於寫緩衝區132中所存儲的數據的同位資訊。然後,回應於同位資訊的計算,介質寫管理器可以釋放寫緩衝區,從而在數據被編程到存儲介質之前或同時釋放寫緩衝區132以供重用。通過這樣做,寫緩衝區的自我調整釋放可以導致改進的寫緩衝區利用率和增加的存儲介質寫輸送量。如參考本文所呈現的各個方面所描述的,這些實體中的任何實體可以被體現為不同的或組合的元件。參考圖1的環境100的相應元件或實體、圖2至圖5D中所示的相應配置和/或圖6至圖8中所示的方法描述了這些元件和/或實體或相應功能的示例。介質寫管理器130的全部或部分可以被實現為由記憶體906維護並且由處理器904執行的處理器可執行指令,以利用自我調整寫緩衝區釋放來實現存儲介質編程的各個方面和/或特徵。
介質寫管理器130可以獨立地或與任何適當的元件或電路系統組合地被實現以實現本文描述的各方面。例如,介質寫管理器130可以被實現為DSP、處理器/存儲橋、I/O橋、圖形處理單元,記憶體控制器、存儲控制器、算數邏輯單位(ALU)等的一部分。介質寫管理器130還可以內部與SoC 900的其他實體一起被提供,諸如與SoC 900的處理器904、記憶體906、存儲介質介面或固件908集成在一起。備選地或附加地,SoC 900的介質寫管理器130、RAID編碼器134、RAID編碼器134和/或其他元件可以被實現為硬體、固件,固定邏輯電路或其任何組合。
作為另一示例,考慮圖10,其示出了根據利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個方面的示例存儲系統控制器1000。在各個方面,存儲系統控制器1000或其元件的任何組合可以被實現為用於固態存儲介質或其他類型的存儲介質的存儲驅動器控制器、存儲介質控制器、NAS控制器、結構介面、NVMe目標或存儲聚合控制器。在一些情況下,類似於或參考圖9所描述的SoC 900的元件,存儲系統控制器1000被實現。換言之,SoC 900的實例可以被配置為存儲系統控制器,諸如存儲系統控制器1000,以用於管理固態(例如,基於NAND快閃記憶體的)介質。
在該示例中,存儲系統控制器1000包括輸入/輸出(I/O)控制邏輯1002和處理器1004,諸如微處理器、處理器核、應用處理器、DSP等。在一些方面,存儲系統控制器1000的處理器1004和固件可以被實現為提供與利用自我調整寫緩衝區釋放的存儲介質編程相關聯的各種功能,諸如參考方法600至800中的任何方法所描述的那些功能。存儲系統控制器1000還包括主機介面1006(例如,SATA、PCIe、NVMe或結構介面)和存儲介質介面1008(例如,NAND介面),其分別實現存取主機系統和存儲介質。存儲系統控制器1000還包括快閃記憶體轉換層1010(FTL 1010)、設備級管理器1012和I/O調度器(未示出)。 在利用自我調整寫緩衝區釋放的存儲介質編程的一些方面中,FTL 1010處理經由主機介面1006所接收的寫命令,以管理在存儲系統控制器1000內或通過其的數據移動。
存儲系統控制器1000還包括介質寫管理器130、寫緩衝區132、RAID編碼器134和ECC編碼器220的實例。這些元件中的任何元件或全部元件可以如所示的單獨地被實現,也可以與處理器1004、主機介面1006、存儲介質介面1008、快閃記憶體轉換層1010、設備級管理器1012和/或I/O調度器組合在一起。參考圖1的環境100的相應元件或實體或圖2至圖5D所示的相應配置來描述這些元件和/或實體或相應功能的示例。根據利用自我調整寫緩衝區釋放的存儲介質編程的各個方面,介質寫管理器130可以與RAID編碼器134交互,以用於計算用於在寫緩衝區132中所存儲的數據的同位資訊。然後,介質寫管理器可以回應於同位資訊的計算而釋放寫緩衝區,從而在數據被編程到存儲介質之前或同時使寫緩衝區132自由以供重用。通過這樣做,寫緩衝區的自我調整釋放可以導致改進的寫緩衝區利用率和增加的存儲介質寫輸送量。介質寫管理器130可以全部或部分地被實現為由控制器的記憶體維護並且由處理器1004執行的處理器可執行指令,以實現利用自我調整寫緩衝區釋放的存儲介質編程的各個方面和/或特徵。
儘管用結構特徵和/或方法操作專用的語言描述了本主題,但應理解,所附申請專利範圍中定義的主題不必限於本文所描述的具體示例、特徵或操作,包括它們被執行的順序。
130:存儲介質寫管理器
132:寫緩衝區
134:RAID編碼器
204:快閃記憶體設備
208:介質介面
220:改錯碼編碼器
302:固件
304:硬體
306:RAID緩衝區
308:主機介面驅動器
310:主機命令處理器
312:介質介面驅動器
314:介質命令管理器
316:主機輸入/輸出命令(主機I/O)
318:數據
318-0~318-3、318-2n:數據
320:快閃記憶體轉換層
322:介質輸入/輸出命令(介質I/O)
324:數據

Claims (20)

  1. 一種用於利用自我調整寫緩衝區釋放的存儲介質編程方法,包括:將數據存儲到一寫緩衝區,所述數據是接收自一存儲系統的一主機介面,所述存儲系統包括存儲介質;利用一基於同位的編碼器來確定存儲到所述寫緩衝區的所述數據之同位資訊;回應於所述數據之所述同位資訊的確定完成,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述存儲系統的所述存儲介質。
  2. 根據請求項1所述的方法,其中所述數據是第一數據,並且所述方法進一步包括在完成將所述第一數據寫到所述存儲系統的所述存儲介質之前,將第二數據存儲到所述寫緩衝區。
  3. 根據請求項1所述的方法,進一步包括在所述數據被寫到所述存儲介質的同時,將所述數據之所述同位資訊存儲到與所述基於同位的編碼器相關聯的一緩衝區中。
  4. 根據請求項3所述的方法,進一步包括:將所述同位資訊從與所述基於同位的編碼器相關聯的所述緩衝區寫到所述存儲系統的所述存儲介質;或者在完成將所述數據寫到所述存儲系統的所述存儲介質時,從與所述基於同位的編碼器相關聯的所述緩衝區中刪除所述同位資訊。
  5. 根據請求項1所述的方法,進一步包括: 經由一改錯碼(ECC)編碼器對所述數據進行編碼,以提供經ECC編碼的數據;以及將所述經ECC編碼的數據寫到所述存儲系統的所述存儲介質。
  6. 根據請求項5所述的方法,其中所述數據從所述基於同位的編碼器被傳輸到所述ECC編碼器,並且所述方法進一步包括:監測所述基於同位的編碼器,以檢測所述同位資訊的確定完成;以及在所述數據被傳輸到所述ECC編碼器之後,回應於所述同位資訊的確定完成,通知所述存儲系統的固件釋放所述寫緩衝區。
  7. 根據請求項1所述的方法,其中所述基於同位的編碼器是所述存儲系統的一獨立磁碟容錯陣列(RAID)編碼器,並且所述同位資訊包括由所述RAID編碼器針對所述數據所計算的XOR同位位元。
  8. 根據請求項1所述的方法,其中:所述存儲介質是快閃記憶體;所述數據被寫到所述快閃記憶體的一平面或所述快閃記憶體的一晶元;以及所述同位資訊係對應於被寫到所述快閃記憶體的所述平面或所述晶元的所述數據、以及被寫到所述快閃記憶體的至少一個其他平面或至少一個其他晶元的其他數據。
  9. 根據請求項1所述的方法,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的一區域,並且所述方法進一步包括:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的數據寫到所述存儲介質的一不同區域。
  10. 一種用於利用自我調整寫緩衝區釋放的存儲介質編程裝置,包括:一主機介面,所述主機介面係配置以與一主機系統通信;寫緩衝區,所述寫緩衝區可操作地耦接到所述主機介面;存儲介質;一介質介面,所述介質介面被配置以實現對所述存儲介質的存取;一基於同位的編碼器;以及一介質寫管理器,所述介質寫管理器被配置為:經由所述寫緩衝區中的一個寫緩衝區來從所述主機介面接收數據;經由所述基於同位的編碼器來計算由所述寫緩衝區所接收的所述數據之同位資訊;將所述同位資訊存儲到所述基於同位的編碼器的一緩衝區;回應於所述數據之所述同位資訊的計算,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述裝置的所述存儲介質。
  11. 根據請求項10所述的裝置,其中所述數據是第一數據,並且所述介質寫管理器進一步被配置為在完成將所述第一數據寫到所述裝置的所述存儲介質之前,經由被釋放的所述寫緩衝區來接收第二數據。
  12. 根據請求項10所述的裝置,其中所述介質寫管理器進一步被配置為:將所述同位資訊從所述基於同位的編碼器的所述緩衝區寫到所述裝置的所述存儲介質或所述裝置的另一記憶體;或者在完成將所述數據寫到所述裝置的所述存儲介質時,從所述基於同位的編碼器的所述緩衝區中清除所述同位資訊。
  13. 根據請求項10所述的裝置,進一步包括一改錯碼(ECC)編碼器,並且其中所述介質寫管理器進一步被配置為:經由所述ECC編碼器來對所述數據進行編碼,以提供經ECC編碼的數據;以及將所述經ECC編碼的數據寫到所述裝置的所述存儲介質。
  14. 根據請求項10所述的裝置,其中所述數據從所述基於同位的編碼器被發送到所述ECC編碼器,並且所述介質寫管理器進一步被配置為:從所述基於同位編碼器接收一通知,所述通知指示所述同位資訊的確定完成;以及在所述數據被發送到所述ECC編碼器之後,生成對所述裝置的固件的一中斷,以引起所述寫緩衝區的釋放。
  15. 根據請求項10所述的裝置,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的一區域,並且所述介質寫管理器進一步被配置為:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的數據寫到所述存儲介質的一不同區域。
  16. 一種系統單晶片(SoC),包括:一主機介面,所述主機介面與一主機系統通信;寫緩衝區,所述寫緩衝區可操作地耦接於所述主機介面;一介質介面,所述介質介面用於存取一存儲系統的存儲介質;一基於同位的編碼器;一基於硬體的處理器; 一記憶體,所述記憶體存儲處理器可執行指令,所述處理器可執行指令回應於所述基於硬體的處理器的執行而實現一介質寫管理器,用以:將從所述主機介面所接收的數據存儲到所述寫緩衝區中的一個寫緩衝區;經由所述基於同位的編碼器來確定被存儲到所述寫緩衝區的所述數據之同位資訊;回應於所述數據之所述同位資訊的所述確定,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述存儲介質。
  17. 根據請求項16所述的系統單晶片,其中所述數據是第一數據,並且所述介質寫管理器進一步被實現為在完成所述第一數據到所述存儲系統的所述存儲介質的所述寫之前,將第二數據存儲到所述寫緩衝區。
  18. 根據請求項16所述的系統單晶片,其中所述介質寫管理器進一步被實現為:在所述數據被寫到所述存儲介質時,將針對所述數據的所述同位資訊存儲到與所述基於同位的編碼器相關聯的緩衝區中;或者將所述同位資訊從與所述基於同位的編碼器相關聯的所述緩衝區寫到所述存儲系統的所述存儲介質。
  19. 根據請求項16所述的系統單晶片,其中所述介質寫管理器進一步被實現為:從所述基於同位的編碼器接收通知,所述通知指示所述同位資訊的所述確定的完成;以及生成到所述裝置的固件的中斷,以引起所述寫緩衝區的所述釋放。
  20. 根據請求項16所述的系統單晶片,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的區域,並且所述介質寫管理器進一步被配置為:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的所述數據寫到所述存儲介質的一不同區域。
TW109100893A 2019-01-11 2020-01-10 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片 TWI814975B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962791542P 2019-01-11 2019-01-11
US62/791,542 2019-01-11
US16/737,137 US11481118B2 (en) 2019-01-11 2020-01-08 Storage media programming with adaptive write buffer release
US16/737,137 2020-01-08

Publications (2)

Publication Number Publication Date
TW202042050A TW202042050A (zh) 2020-11-16
TWI814975B true TWI814975B (zh) 2023-09-11

Family

ID=69159564

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109100893A TWI814975B (zh) 2019-01-11 2020-01-10 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片

Country Status (5)

Country Link
US (1) US11481118B2 (zh)
EP (1) EP3680778B1 (zh)
KR (1) KR20200087713A (zh)
CN (1) CN111435292A (zh)
TW (1) TWI814975B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11348643B2 (en) * 2020-02-25 2022-05-31 Apple Inc. Identifying failure type in NVM programmed in SLC mode using a single programming pulse with no verification
WO2021232024A1 (en) * 2020-05-15 2021-11-18 Rey Bruce Artificial intelligence-based hybrid raid controller device
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
US11687275B2 (en) 2020-12-21 2023-06-27 SK Hynix Inc. Method for assigning plurality of channels of storage device for stream data writing, storage device and storage medium
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) * 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11403034B1 (en) 2021-06-11 2022-08-02 International Business Machines Corporation Non-volatile storage class memory data flow with mismatched block sizes
US11733893B2 (en) * 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
US11698750B2 (en) * 2021-10-04 2023-07-11 Sandisk Technologies Llc Smart re-use of parity buffer
CN114661230A (zh) * 2021-12-30 2022-06-24 无锡芯铭微电子有限公司 Raid存储系统及ssd raid加速命令设计方法
CN117251107B (zh) * 2023-06-27 2024-04-16 北京忆芯科技有限公司 降低页条带写操作性能波动的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201640358A (zh) * 2015-05-07 2016-11-16 三星電子股份有限公司 資料儲存方法、記憶體模組以及資料儲存系統
US20170123901A1 (en) * 2015-10-28 2017-05-04 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and Methods for Side Data Based Soft Data Flash Memory Access
US20170269876A1 (en) * 2016-03-17 2017-09-21 Sandisk Technologies Inc. Data coding
US20180373450A1 (en) * 2017-06-27 2018-12-27 Western Digital Technologies, Inc. Geometry-aware command scheduling

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US6671791B1 (en) 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US7433948B2 (en) 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US7406598B2 (en) 2004-02-17 2008-07-29 Vixs Systems Inc. Method and system for secure content distribution
US7502908B2 (en) 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US20080100636A1 (en) 2006-10-31 2008-05-01 Jiin Lai Systems and Methods for Low-Power Computer Operation
US7783858B2 (en) 2007-01-20 2010-08-24 International Business Machines Corporation Reducing memory overhead of a page table in a dynamic logical partitioning environment
US7861036B2 (en) * 2007-09-18 2010-12-28 Agere Systems Inc. Double degraded array protection in an integrated network attached storage device
JP5186982B2 (ja) 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US8571745B2 (en) 2008-04-10 2013-10-29 Robert Todd Pack Advanced behavior engine
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
JP5660053B2 (ja) 2010-01-20 2015-01-28 日本電気株式会社 ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体
US8438344B2 (en) * 2010-03-12 2013-05-07 Texas Instruments Incorporated Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes
US8495274B2 (en) 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8726276B2 (en) 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
US8954822B2 (en) * 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8713562B2 (en) 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
US9015351B1 (en) 2012-03-02 2015-04-21 Marvell International Ltd. Address translation for SR-IOV virtual function apertures
US9098805B2 (en) 2012-03-06 2015-08-04 Koodbee, Llc Prediction processing system and method of use and method of doing business
US20130254146A1 (en) 2012-03-06 2013-09-26 Koodbee, Llc Prediction processing system and method of use and method of doing business
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9134779B2 (en) 2012-11-21 2015-09-15 International Business Machines Corporation Power distribution management in a system on a chip
US9424219B2 (en) 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9720717B2 (en) 2013-03-14 2017-08-01 Sandisk Technologies Llc Virtualization support for storage devices
US20150378886A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Software-defined ssd and system using the same
US9092362B1 (en) * 2014-03-13 2015-07-28 NXGN Data, Inc. Programmable data write management system and method for operating the same in a solid state drive
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
US9501245B2 (en) 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
CN104461958B (zh) 2014-10-31 2018-08-21 华为技术有限公司 支持sr-iov的存储资源访问方法、存储控制器及存储设备
KR102336443B1 (ko) 2015-02-04 2021-12-08 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10114675B2 (en) 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
KR102371916B1 (ko) 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
KR102519663B1 (ko) 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
US9948556B2 (en) 2015-08-25 2018-04-17 Google Llc Systems and methods for externalizing network functions via packet trunking
US9929750B2 (en) 2015-09-08 2018-03-27 Toshiba Memory Corporation Memory system
US9959138B1 (en) 2015-09-11 2018-05-01 Cohesity, Inc. Adaptive self-maintenance scheduler
US10866910B2 (en) 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
US10586158B2 (en) 2015-10-28 2020-03-10 The Climate Corporation Computer-implemented calculation of corn harvest recommendations
US10764242B2 (en) 2015-11-24 2020-09-01 At&T Intellectual Property I, L.P. Providing network address translation in a software defined networking environment
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10001922B2 (en) * 2016-02-19 2018-06-19 International Business Machines Corporation High performance optical storage system for protection against concurrent data loss
US10635499B2 (en) 2016-03-23 2020-04-28 Unisys Corporation Multifunction option virtualization for single root I/O virtualization
US20180032249A1 (en) 2016-07-26 2018-02-01 Microsoft Technology Licensing, Llc Hardware to make remote storage access appear as local in a virtualized environment
US10318162B2 (en) 2016-09-28 2019-06-11 Amazon Technologies, Inc. Peripheral device providing virtualized non-volatile storage
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10254966B2 (en) 2016-12-28 2019-04-09 Western Digital Technologies, Inc. Data management based on I/O traffic profiling
US10228874B2 (en) 2016-12-29 2019-03-12 Intel Corporation Persistent storage device with a virtual function controller
US11256431B1 (en) 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10908998B2 (en) 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US11055125B2 (en) 2017-11-10 2021-07-06 Microsoft Technology Licensing, Llc Virtual machine client-side virtual network change
US10509753B2 (en) 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10698709B2 (en) 2018-03-07 2020-06-30 Microsoft Technology Licensing, Llc Prediction of virtual machine demand
US20190354599A1 (en) 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Ai model canvas
CN108959127B (zh) 2018-05-31 2021-02-09 华为技术有限公司 地址转换方法、装置及系统
US11630920B2 (en) 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
JP7384900B2 (ja) 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US10866740B2 (en) 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11133067B2 (en) * 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US11023397B2 (en) 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11055232B2 (en) 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201640358A (zh) * 2015-05-07 2016-11-16 三星電子股份有限公司 資料儲存方法、記憶體模組以及資料儲存系統
US20170123901A1 (en) * 2015-10-28 2017-05-04 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and Methods for Side Data Based Soft Data Flash Memory Access
US20170269876A1 (en) * 2016-03-17 2017-09-21 Sandisk Technologies Inc. Data coding
US20180373450A1 (en) * 2017-06-27 2018-12-27 Western Digital Technologies, Inc. Geometry-aware command scheduling

Also Published As

Publication number Publication date
CN111435292A (zh) 2020-07-21
EP3680778A1 (en) 2020-07-15
EP3680778B1 (en) 2023-09-27
US20200225851A1 (en) 2020-07-16
US11481118B2 (en) 2022-10-25
KR20200087713A (ko) 2020-07-21
TW202042050A (zh) 2020-11-16

Similar Documents

Publication Publication Date Title
TWI814975B (zh) 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片
CA3062336C (en) Apparatus and method for controlling data acceleration
US11243837B2 (en) Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US10732893B2 (en) Non-volatile memory over fabric controller with memory bypass
US10635529B2 (en) Parity offload for multiple data storage devices
US10725859B2 (en) Parity generation offload using peer-to-peer data transfers in data storage system
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
KR102107723B1 (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9092152B1 (en) Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
TW202316259A (zh) 用於控制資料處理系統中的共享記憶體的設備和方法
US20190235768A1 (en) Data availability during memory inaccessibility
KR20240122177A (ko) 복구 방법, 스토리지 장치, 컴퓨터 시스템
KR20220142521A (ko) 단방향 커맨드들을 이용한 온-ssd 소거 코딩
US11893270B2 (en) Storage device, and host-storage system including the storage device
US20240311019A1 (en) Using a persistent byte-addressable memory in a compute express link (cxl) memory device for efficient power loss recovery
US11733917B2 (en) High bandwidth controller memory buffer (CMB) for peer to peer data transfer
EP4258097A1 (en) Operation method of host device and operation method of storage device
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
US20230325110A1 (en) Operation method of host device and operation method of storage device
CN117472817A (zh) 数据处理方法、装置、系统及网卡
KR20230087863A (ko) 메모리 시스템의 동작 방법 및 이를 수행하는 메모리 시스템
CN117795466A (zh) 使用子命令的存取请求管理
KR20220127137A (ko) 지정된 데이터 전송 속도로 데이터 저장을 위한 시스템, 방법 및 장치
CN118656017A (zh) 使用计算高速链路(cxl)存储器装置中的持久性字节可寻址存储器以用于高效断电恢复