TWI814975B - Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof - Google Patents

Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof 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
Chinese (zh)
Other versions
TW202042050A (en
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/en
Application granted granted Critical
Publication of TWI814975B publication Critical patent/TWI814975B/en

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

Abstract

The present disclosure describes apparatuses and methods for storage media programming with adaptive write buffer release. In some aspects, a media write manager of a storage media system stores, to a write buffer, data received from a host interface. The media write manager determines parity information for the data stored to the write buffer and then releases the write buffer on completion of determining the parity information for the data. The media write manager may then write at least a portion of the data to storage media after the write buffer is released. By releasing the write buffer of the storage media system after determining the parity information, the write buffer is freed more quickly, which may result in improved write buffer utilization and increased write throughput of the storage media system.

Description

用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝 置、以及其系統單晶片 Storage media programming method and device for utilizing self-adjusting write buffer release device, and its system single chip 【相關申請案的交互參照】 [Cross-reference to related applications]

本公開要求2019年1月11所申請的美國臨時專利申請案第62/791,542號的優先權、以及2020年1月8日所申請的美國專利申請案第16/737,137號的優先權,它們的全部內容通過引用而併入本文。 This disclosure claims priority to U.S. Provisional Patent Application No. 62/791,542, filed on January 11, 2019, and U.S. Patent Application No. 16/737,137, filed on January 8, 2020, which The entire contents are incorporated herein by reference.

許多計算和電子設備都包括用於存儲軟體、應用或設備數據的非易失性記憶體。附加地,大多數用戶通過數據網路從各個位置或在移動中利用其設備(諸如多介質內容或社交介質應用)來數據流數據或存取服務。隨著使用者對數據和服務的需求不斷增長,存儲提供方已擴大了存儲驅動器的容量和性能,以支援與使用者和其他數據存儲用戶端的這些活動相關聯的數據存取。通常,設備的存儲驅動器包括設備數據寫其中的存儲介質。為此,設備向存儲驅動器發出寫命令,存儲驅動器又如由每個命令所指定的來將數據寫存儲介質。因此,存儲驅動器的寫性能通常取決於存儲驅動器能夠完成設備或存儲用戶端的數據寫命令的速率。 Many computing and electronic devices include non-volatile memory for storing software, applications or device data. Additionally, most users utilize their devices (such as multimedia content or social media applications) to stream data or access services over data networks from various locations or on the move. As user demand for data and services continues to grow, storage providers have expanded the capacity and performance of storage drives to support the data access associated with these activities by users and other data storage clients. Typically, a device's storage drive includes the storage medium to which device data is written. To do this, the device issues write commands to the storage drive, which in turn writes the data to the storage medium as specified by each command. Therefore, storage drive write performance typically depends on the rate at which the storage drive is able to complete data write commands from the device or storage client.

存儲驅動器通常包括寫緩衝區,以用於從設備接收與寫命令相對應的數據。然後,存儲驅動器將數據從寫緩衝區發送到存儲介質的編程介面。然而,存儲介質的編程或寫速度通常比寫緩衝區的速度慢得多。附加地,大多數存儲驅動器在寫緩衝區中保留數據的副本,直到數據被成功編程到存儲介質上,以在存儲介質編程失敗並且數據丟失時實現恢復數據。這樣,由於存儲介質較慢的編程速度,因此存儲驅動器的寫緩衝區可能會長時間被保留或佔用。這防止了寫緩衝區接收後續數據,直到存儲介質編程完成為止,這會降低存儲驅動器的寫輸送量,或需要增加數量的寫緩衝區來維護寫輸送量。 Storage drives typically include a write buffer for receiving data from the device corresponding to write commands. The storage drive then sends the data from the write buffer to the storage medium's programming interface. However, storage media is typically much slower to program or write than the write buffer. Additionally, most storage drives retain a copy of the data in a write buffer until the data is successfully programmed onto the storage medium to enable recovery of the data if the storage medium programming fails and the data is lost. In this way, the storage drive's write buffer may be reserved or occupied for a long time due to the slower programming speed of the storage medium. This prevents the write buffer from receiving subsequent data until programming of the storage medium is complete, which can reduce the write throughput of the storage drive or require an increased number of write buffers to maintain write throughput.

提供本發明內容以介紹主題,該主題將在具體實施方式和附圖中進一步被描述。因此,該本發明內容不應當被視為描述基本特徵,也不應當被用於限制要求保護的主題的範圍。 This Summary is provided to introduce the subject matter that is further described in the Detailed Description and the Figures. Accordingly, this Summary should not be considered as describing essential features, nor should it be used to limit the scope of the claimed subject matter.

在一些方面,存儲介質系統的介質寫管理器實現了一種方法,該方法將從包括存儲介質的存儲系統的主機介面所接收的數據存儲到寫緩衝區中。該方法經由基於同位的編碼器來確定針對存儲到寫緩衝區的數據的同位資訊。備選地或附加地,數據可以被傳遞到存儲介質系統的另一內部緩衝區。然後,回應於對針對數據的同位資訊的確定完成,寫緩衝區被釋放。該方法還包括在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到存儲系統的存儲介質。 In some aspects, a media write manager of a storage media system implements a method of storing data received from a host interface of the storage system including the storage media into a write buffer. The method determines parity information for data stored into a write buffer via a parity-based encoder. Alternatively or additionally, the data may be transferred to another internal buffer of the storage media system. Then, in response to the determination of parity information for the data being completed, the write buffer is released. The method also includes writing at least a portion of the data to a storage medium of the storage system after the write buffer is released from storing the data.

在其他方面,一種裝置包括:主機介面,其被配置為與主機系統通信;寫緩衝區,其可操作地耦接到主機介面;存儲介質;以及介質介面,其被配置為允許存取存儲介質。該裝置還包括基於同位的編碼器和介質寫管理 器,該介質寫管理器被配置為經由寫緩衝區中的一個寫緩衝區從主機介面接收數據。介質寫管理器經由基於同位的編碼器計算針對由寫緩衝區所接收的數據的同位資訊,並且將同位資訊存儲到基於同位的編碼器的緩衝區。回應於對針對數據的同位資訊的計算,介質寫管理器釋放寫緩衝區,並且在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到裝置的存儲介質。 In other aspects, an apparatus includes: a host interface configured to communicate with a host system; a write buffer operably coupled to the host interface; a storage medium; and a media interface configured to allow access to the storage medium . The device also includes parity-based encoder and media write management The media write manager is configured to receive data from the host interface via one of the write buffers. The media write manager calculates parity information for the data received by the write buffer via the parity-based encoder and stores the parity information to the parity-based encoder's buffer. In response to the calculation of parity information for the data, the media write manager releases the write buffer, and after the write buffer is released from storing the data, at least a portion of the data is written to the storage medium of the device.

在其他方面,描述了一種系統單晶片(SoC),其包括與主機系統通信的主機介面、可操作地與主機介面耦接的寫緩衝區、用以存取存儲系統的存儲介質的介質介面以及基於同位的編碼器。SoC還包括基於硬體的處理器和存儲處理器可執行指令的記憶體,該指令可回應於基於硬體的處理器的執行而實現介質寫管理器,以將從主機介面所接收的數據存儲到寫緩衝區。介質寫管理器還經由基於同位的編碼器來確定針對被存儲到寫緩衝區的數據的同位資訊,並且回應於對針對數據的同位資訊的確定而釋放寫緩衝區。然後,在寫緩衝區從存儲數據中被釋放之後,介質寫管理器將數據的至少一部分寫到存儲介質。 In other aspects, a system on chip (SoC) is described that includes a host interface in communication with a host system, a write buffer operatively coupled with the host interface, a media interface to access a storage medium of the storage system, and Parity-based encoder. The SoC also includes a hardware-based processor and memory storing processor-executable instructions that implement a media write manager in response to execution by the hardware-based processor to store data received from the host interface to the write buffer. The media write manager also determines parity information for data stored to the write buffer via the parity-based encoder, and releases the write buffer in response to the determination of parity information for the data. Then, after the write buffer is released from storing the data, the media write manager writes at least a portion of the data to the storage medium.

在附圖和以下說明書中闡述了一個或多個實現的細節。根據說明書和附圖以及根據請求項書,其他特徵和優點將是明顯的。 The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.

100:操作環境 100:Operating environment

102:主機系統 102:Host system

104:膝上型電腦 104:Laptop

106:桌上型電腦 106:Desktop computer

108:伺服器 108:Server

110:處理器 110: Processor

112:電腦可讀介質 112: Computer readable media

114:存儲系統 114:Storage system

116:NVMe固態驅動器 116: NVMe solid state drive

118:PCIe固態驅動器 118: PCIe solid state drive

120:固態驅動器 120:Solid state drive

122:記憶體陣列 122:Memory array

124:存儲介質 124:Storage media

126:存儲介質控制器(存儲控制器) 126: Storage media controller (storage controller)

128:數據 128:Data

130:存儲介質寫管理器(介質寫管理器) 130:Storage Media Write Manager (Media Write Manager)

132:寫緩衝區 132:Write buffer

132-0~132-2n:寫緩衝區 132-0~132-2n: write buffer

134:RAID編碼器 134:RAID encoder

136:I/O埠 136:I/O port

138:圖形處理單元 138: Graphics processing unit

140:數據介面 140:Data interface

202:固態存儲驅動器 202:Solid State Storage Drive

204-0~204-n:快閃記憶體設備 204-0~204-n: Flash memory device

206:主機介面 206:Host interface

208:介質介面 208:Media interface

210:處理器核 210: Processor core

212:結構 212:Structure

214:靜態隨機存取記憶體 214: Static random access memory

216:DRAM控制器 216:DRAM controller

218:動態隨機存取記憶體(DRAM) 218: Dynamic Random Access Memory (DRAM)

220:改錯碼編碼器 220: Error correction code encoder

302:固件 302: Firmware

304:硬體 304:Hardware

306:RAID緩衝區 306: RAID buffer

308:主機介面驅動器 308: Host interface driver

310:主機命令處理器 310: Host command processor

312:介質介面驅動器 312:Media interface drive

314:介質命令管理器 314:Media Command Manager

316:主機輸入/輸出命令(主機I/O) 316: Host input/output command (host I/O)

318:數據 318:Data

318-0~318-3、318-2n:數據 318-0~318-3, 318-2n: data

320:快閃記憶體轉換層 320: Flash Memory Translation Layer

322:介質輸入/輸出命令(介質I/O) 322:Media input/output command (Media I/O)

324:數據 324:Data

402:XOR引擎 402:XOR engine

404-0~404-1:平面 404-0~404-1: Plane

406-0~406-1:平面 406-0~406-1: Plane

502:XOR引擎 502:XOR engine

504-0~504-1:平面 504-0~504-1: Plane

506-0~506-1:平面 506-0~506-1: Plane

600:方法 600:Method

602~612:步驟 602~612: Steps

700:方法 700:Method

702~716:步驟 702~716: Steps

800:方法 800:Method

802~814:步驟 802~814: Steps

900:系統單晶片(SoC) 900: System on chip (SoC)

902:輸入-輸出(I/O)控制邏輯 902: Input-output (I/O) control logic

904:基於硬體的處理器 904: Hardware-based processor

906:記憶體 906:Memory

908:固件 908: Firmware

1000:存儲系統控制器 1000: Storage system controller

1002:輸入/輸出(I/O)控制邏輯 1002: Input/output (I/O) control logic

1004:處理器 1004: Processor

1006:主機介面 1006:Host interface

1008:存儲介質介面 1008:Storage media interface

1010:快閃記憶體轉換層 1010: Flash Memory Translation Layer

在附圖和以下詳細說明中,闡述了利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個實現的詳細資訊。在附圖中,附圖標記的最左邊的數位識別碼該附圖標記首次出現的附圖。在描述和附圖中的不同實例中使用相同的附圖標記指示相似的元素: 圖1示出了根據本公開的一個或多個方面的示例操作環境,該示例操作環境具有在其中介質寫管理器被實現的設備。 Details of one or more implementations of storage media programming utilizing self-adjusting write buffer release are set forth in the accompanying drawings and the detailed description below. In the drawings, the leftmost digit of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and drawings indicates similar elements: 1 illustrates an example operating environment having a device in which a media write manager is implemented in accordance with one or more aspects of the present disclosure.

圖2示出了固態驅動器的示例配置,在其中圖1的介質寫管理器、寫緩衝區和獨立磁碟容錯陣列(RAID)編碼器根據各個方面被實現。 2 illustrates an example configuration of a solid state drive in which the media write manager, write buffer, and RAID encoder of FIG. 1 are implemented in accordance with various aspects.

圖3示出了各種硬體和固件元件的示例配置,以用於利用自我調整寫緩衝區釋放來實現存儲介質編程的各方面。 Figure 3 illustrates an example configuration of various hardware and firmware elements for implementing aspects of storage media programming utilizing self-adjusting write buffer release.

圖4A至圖4E示出了在晶元級數據冗餘的上下文中利用自我調整寫緩衝區釋放的存儲介質編程的示例。 4A-4E illustrate examples of storage media programming utilizing self-adjusting write buffer release in the context of wafer-level data redundancy.

圖5A至圖5D示出了在平面級數據冗餘的情況下利用自我調整寫緩衝區釋放的存儲介質編程的示例。 5A-5D illustrate examples of storage media programming utilizing self-adjusting write buffer release with plane-level data redundancy.

圖6描繪了根據一個或多個方面的利用自我調整寫緩衝區釋放的存儲介質編程的示例方法。 6 depicts an example method of storage media programming utilizing self-adjusting write buffer release in accordance with one or more aspects.

圖7描繪了用於基於同位資訊的計算來釋放寫緩衝區的示例方法。 Figure 7 depicts an example method for freeing a write buffer based on calculation of parity information.

圖8描繪了用於利用基於同位的數據重建來從編程故障中恢復的示例方法。 Figure 8 depicts an example method for recovering from programming failures using parity-based data reconstruction.

圖9示出了示例系統單晶片(SoC)環境,在其中利用自我調整寫緩衝區釋放的存儲介質編程的各個方面可以被實現。 9 illustrates an example system-on-chip (SoC) environment in which aspects of storage media programming utilizing self-adjusting write buffer release may be implemented.

圖10示出了根據本公開的一個或多個方面的示例存儲系統控制器,在其中介質寫管理器被實現。 Figure 10 illustrates an example storage system controller in which a media write manager is implemented in accordance with one or more aspects of the present disclosure.

用於將數據寫入到存儲介質的傳統技術通常將數據保持在寫緩衝區中,直到數據被編程到存儲介質上為止,這導致存儲驅動器的寫輸送量降低或對寫緩衝區的要求增加(例如,寫緩衝區的數目或大小)。通常,存儲驅 動器固件被用於以端對端的方式來管理存儲驅動器的數據路徑,諸如通過轉換數據命令並且管理沿著主機介面和存儲介質介面之間的數據路徑的數據移動。例如,固件可以處理寫命令以在主機介面處接收對應的數據,並且將該數據發送到存儲介質介面以用於編程到存儲介質的適當區域。 Traditional techniques for writing data to storage media typically hold data in a write buffer until the data is programmed onto the storage media, resulting in reduced write throughput of the storage drive or increased write buffer requirements ( For example, the number or size of write buffers). Typically, storage drives The driver firmware is used to manage the data path of the storage drive in an end-to-end manner, such as by translating data commands and managing the movement of data along the data path between the host interface and the storage media interface. For example, the firmware may process a write command to receive corresponding data at the host interface and send the data to the storage media interface for programming to the appropriate area of the storage media.

許多存儲驅動器以「快取記憶體開啟」模式操作,在該模式中,一旦寫命令的數據由存儲驅動器的控制器接收到,固件就會向主機發送針對寫命令的確認。通常,優選快取記憶體開啟模式,因為快取記憶體開啟模式中的寫命令延時較短,並且主機無需較快地保持數據。在快取記憶體開啟模式中,固件通常將數據保持在控制器的寫緩衝區中,直到確認從存儲介質被接收到為止,該確認指示將數據傳遞到存儲介質的程式操作是成功的。這是必要的,因為在程式故障的情況下(例如,錯誤的字線或錯誤的塊),固件仍具有數據,並且可能嘗試將數據重新編程到存儲介質中。 Many storage drives operate in a "cache-on" mode, in which the firmware sends an acknowledgment of the write command to the host once the data for the write command is received by the storage drive's controller. Generally, cache-on mode is preferred because write command latencies are shorter in cache-on mode and the host does not need to retain data as quickly. In cache-on mode, the firmware typically holds data in the controller's write buffer until an acknowledgment is received from the storage medium indicating that the program operation to transfer the data to the storage medium was successful. This is necessary because in the event of a program failure (e.g., wrong word line or wrong block), the firmware still has the data and may attempt to reprogram the data into the storage medium.

然而,與通過寫緩衝區的數據的典型傳輸時間(其是幾十微秒的量級)相比,對存儲介質進行編程花費相對較長的時間(三毫秒)。換言之,從主機接收到的數據佔據寫緩衝區的時長延長了,這主要因為編程故障的偶然性,這是罕見的事件。附加地,由於實際問題,諸如佈局面積、數據路徑架構、功耗、成本等,由控制器所實現的寫緩衝區的數目通常被限制。當控制器的有限寫緩衝區不斷被等待編程確認的數據佔用時,控制器將無法從主機接收附加的數據,直到寫緩衝區變為可用為止。這樣,寫緩衝區的有限數目且低效率利用會給寫輸送量強加上限,並且可以對存儲驅動器的寫性能產生負面影響。 However, programming the storage medium takes a relatively long time (three milliseconds) compared to the typical transfer time of data through the write buffer, which is on the order of tens of microseconds. In other words, data received from the host occupies the write buffer for an extended period of time, primarily due to the sporadic nature of programming failures, which are rare events. Additionally, the number of write buffers implemented by a controller is often limited due to practical issues such as layout area, data path architecture, power consumption, cost, etc. When the controller's limited write buffer is continually occupied by data awaiting programming acknowledgments, the controller will not be able to receive additional data from the host until the write buffer becomes available. As such, the limited number and inefficient utilization of write buffers imposes an upper limit on write throughput and can negatively impact the storage drive's write performance.

本公開描述了用於利用自我調整寫緩衝區釋放的存儲介質編程的裝置和技術。與用於寫到存儲介質的傳統技術相反,所描述的裝置和技術可以實現用於存儲介質的數據寫方案,該數據寫方案包括基於同位的編碼(例如,RAID),以在存儲介質編程故障的情況下實現數據恢復。通過這樣做,一旦同 位資訊被計算以用於被寫到存儲介質的數據,存儲控制器的介質寫管理器就可以釋放寫緩衝區。備選地或附加地,在計算同位資訊之前或同時,數據可以被傳遞到存儲介質系統的另一內部緩衝區。換言之,當同位資訊(例如,XOR資訊)的RAID計算完成時(例如,數十微秒),寫緩衝區被釋放,而不是一直保持直到編程成功確認從存儲介質被接收到為止(例如,三毫秒)。備選地或附加地,寫緩衝區的釋放也可以以數據從寫緩衝區被複製到存儲系統的另一內部緩衝區或用於編程到存儲介質的存儲介質介面為條件。一旦被釋放,則在一些情況下,當先前保持的數據被編程到存儲介質的同時,寫緩衝區可以從主機接收後續數據。這樣,寫緩衝區的自我調整釋放可以導致較有效的寫緩衝區利用率和/或使得存儲驅動器利用較少或較小的寫緩衝區被實現。寫緩衝區或寫緩衝區大小的這種減小可以進而減小存儲控制器的功耗,有利於改進的積體電路佈局等。 The present disclosure describes apparatus and techniques for storage media programming utilizing self-adjusting write buffer release. In contrast to conventional techniques for writing to storage media, the described apparatus and techniques may enable data writing schemes for storage media that include parity-based encoding (eg, RAID) to program failures in the storage media Data recovery is possible. By doing this, once the same Bit information is calculated for the data to be written to the storage medium, and the storage controller's media write manager can free the write buffer. Alternatively or additionally, the data may be passed to another internal buffer of the storage media system before or while calculating the parity information. In other words, the write buffer is released when the RAID computation of parity information (e.g., millisecond). Alternatively or additionally, the release of the write buffer may also be conditional on data being copied from the write buffer to another internal buffer of the storage system or to a storage medium interface for programming to the storage medium. Once freed, the write buffer can receive subsequent data from the host in some cases while previously held data is being programmed to the storage medium. In this way, self-adjusting release of the write buffer may result in more efficient write buffer utilization and/or enable the storage driver to utilize less or smaller write buffers. This reduction in write buffer or write buffer size may in turn reduce memory controller power consumption, facilitate improved integrated circuit layout, and the like.

在利用自我調整寫緩衝區釋放的存儲介質編程的各個方面,存儲介質系統的介質寫管理器將從主機介面所接收的數據存儲到寫緩衝區。在數據被存儲在寫緩衝區中的同時,介質寫管理器確定針對數據的同位資訊,然後在確定針對數據的同位資訊完成時釋放寫緩衝區。然後,在寫緩衝區被釋放之後,介質寫管理器可以將數據的至少一部分寫到存儲介質。通過在確定同位資訊之後釋放存儲介質系統的寫緩衝區,寫緩衝區可以較快地自由,這可以引起改進的寫緩衝區利用率和增加的存儲介質系統的寫輸送量。 In aspects of storage media programming that utilize self-adjusting write buffer release, the storage media system's media write manager stores data received from the host interface into the write buffer. While data is being stored in the write buffer, the media write manager determines parity information for the data and then releases the write buffer when determining parity information for the data is complete. Then, after the write buffer is freed, the media write manager can write at least a portion of the data to the storage medium. By freeing the storage media system's write buffer after determining parity information, the write buffer can be freed faster, which can result in improved write buffer utilization and increased write throughput of the storage media system.

以下討論描述了操作環境、可以在操作環境中採用的技術、以及在其中可以體現操作環境的元件的系統單晶片(SoC)。在本公開的上下文中,僅通過示例的方式參考操作環境。 The following discussion describes the operating environment, the technologies that may be employed in the operating environment, and the system-on-a-chip (SoC) in which components of the operating environment may be embodied. In the context of this disclosure, reference is made to the operating environment by way of example only.

操作環境 operating environment

圖1示出了具有主機系統102的示例操作環境100,主機系統102能夠存儲或存取各種形式的數據或資訊。主機系統102的示例可以包括膝上型電腦104、桌上型電腦106和伺服器108,其中任何一項可以被配置作為使用者設備、計算設備或作為存儲網路或雲存儲的一部分。主機系統102的其他示例(未示出)可以包括平板電腦、機上盒、數據存放裝置、可穿戴智慧設備、電視、內容流設備、高清多媒體介面(HDMI)介質棒、智慧家電、家庭自動化控制器、智慧恒溫器、物聯網(IoT)設備、移動互聯網設備(MID)、網路附加存儲(NAS)驅動器、聚合存儲系統、遊戲機、汽車娛樂設備、汽車計算系統、汽車控制模組(例如發動機或動力傳動控制模組)等。通常,主機系統102可以出於任何合適的目的通信或存儲數據,諸如以實現特定類型的設備的功能、提供使用者介面、啟用網路存取、實現遊戲應用、重播介質、提供導航、編輯內容、提供數據存儲等。 FIG. 1 illustrates an example operating environment 100 having a host system 102 capable of storing or accessing various forms of data or information. Examples of host systems 102 may include a laptop 104, a desktop 106, and a server 108, any of which may be configured as a user device, a computing device, or as part of a storage network or cloud storage. Other examples (not shown) of host system 102 may include tablet computers, set-top boxes, data storage devices, wearable smart devices, televisions, content streaming devices, high-definition multimedia interface (HDMI) media sticks, smart appliances, home automation controls controllers, smart thermostats, Internet of Things (IoT) devices, Mobile Internet Devices (MIDs), Network Attached Storage (NAS) drives, converged storage systems, game consoles, automotive entertainment devices, automotive computing systems, automotive control modules (e.g. Engine or power transmission control module), etc. Generally, host system 102 may communicate or store data for any suitable purpose, such as to enable functionality of a particular type of device, provide a user interface, enable network access, implement gaming applications, replay media, provide navigation, edit content , provide data storage, etc.

主機系統102包括處理器110和電腦可讀介質112。處理器110可以被實現為任何合適類型或數目的單核或多核的處理器,以用於執行作業系統的指令或命令或主機系統102的其他應用。電腦可讀介質112(CRM 112)包括記憶體(未示出)和主機系統102的存儲系統114。主機系統102的記憶體可以包括任何合適的類型的易失性記憶體或非易失性記憶體或其組合。例如主機系統102的易失性記憶體可以包括各種類型的隨機存取記憶體(RAM)、動態RAM(DRAM)、靜態RAM(SRAM)等。非易失性記憶體可以包括唯讀記憶體(ROM)、電可擦除可編程ROM(EEPROM)或快閃記憶體(例如NAND快閃記憶體)。這些記憶體個體地或組合地可以存儲與使用者、應用和/或主機系統102的作業系統相關聯的數據。 Host system 102 includes processor 110 and computer-readable media 112 . Processor 110 may be implemented as any suitable type or number of single-core or multi-core processors for executing instructions or commands of an operating system or other applications of host system 102 . Computer readable medium 112 (CRM 112) includes memory (not shown) and storage system 114 of host system 102. The memory of host system 102 may include any suitable type of volatile memory or non-volatile memory, or combinations thereof. For example, the volatile memory of the host system 102 may include various types of random access memory (RAM), dynamic RAM (DRAM), static RAM (SRAM), etc. Non-volatile memory may include read-only memory (ROM), electrically erasable programmable ROM (EEPROM), or flash memory (eg, NAND flash memory). These memories, individually or in combination, may store data associated with users, applications, and/or the operating system of host system 102 .

主機系統102的存儲系統114可以被配置為任何合適類型的數據存儲系統,諸如存放裝置、存儲驅動器、存儲陣列、存儲卷等。儘管參考主機系統102進行了描述,但是存儲系統114也可以單獨地被實現為獨立設備或較大 存儲集合體的一部分,諸如網路附接的存放裝置、外部存儲驅動器、數據中心、伺服器群或虛擬存儲系統(例如,用於基於雲的存儲或服務)。存儲系統114的示例包括非易失性記憶體快速(NVMe)固態驅動器116、周邊元件連接快速(PCIe)固態驅動器118、固態驅動器120(SSD 120)和記憶體陣列122,其可以利用存放裝置或存儲驅動器的任何組合來實現。 Storage system 114 of host system 102 may be configured as any suitable type of data storage system, such as storage devices, storage drives, storage arrays, storage volumes, and the like. Although described with reference to host system 102, storage system 114 may also be implemented separately as a stand-alone device or larger Part of a storage complex, such as a network-attached storage device, an external storage drive, a data center, a server farm, or a virtual storage system (eg, for cloud-based storage or services). Examples of storage systems 114 include Non-Volatile Memory Express (NVMe) solid-state drives 116, Peripheral Component Connect Express (PCIe) solid-state drives 118, solid-state drives 120 (SSDs 120), and memory arrays 122, which may utilize storage devices or Any combination of storage drives can be implemented.

存儲系統114包括存儲介質124和用於管理存儲系統114的各種操作或功能的存儲介質控制器126(存儲控制器126)。存儲介質124可以包括非易失性存放裝置,或從其被形成,數據128或主機系統102的資訊被存儲在該非易失性存放裝置上。存儲介質124可以利用諸如快閃記憶體、NAND快閃記憶體、RAM、DRAM(例如,用於快取記憶體)、SRAM等的任何類型的固態存儲介質或其組合來實現。在一些情況下,被存儲到存儲介質124的數據128被組織成數據(例如,內容)檔或數據物件,其被存儲到存儲系統114並且由主機系統102存取。數據128的檔案類型、大小或格式可能根據與檔關聯的相應來源、用途或應用而有所不同。例如存儲到存儲系統114的數據128可以包括音訊檔、視頻檔、文字檔、影像檔、多媒體檔、試算表等。儘管參考固態記憶體進行了描述,但是利用自我調整寫緩衝區釋放的存儲介質編程的各方面也可以被植入基於磁性或基於光學的介質類型。 Storage system 114 includes storage media 124 and storage media controller 126 (storage controller 126 ) for managing various operations or functions of storage system 114 . Storage medium 124 may include or be formed from a non-volatile storage device on which data 128 or information of host system 102 is stored. Storage medium 124 may be implemented utilizing any type of solid-state storage medium, such as flash memory, NAND flash memory, RAM, DRAM (eg, for cache), SRAM, etc., or a combination thereof. In some cases, data 128 stored to storage media 124 is organized into data (eg, content) files or data objects that are stored to storage system 114 and accessed by host system 102 . The file type, size or format of data 128 may vary depending on the corresponding source, purpose or application associated with the file. For example, the data 128 stored in the storage system 114 may include audio files, video files, text files, image files, multimedia files, spreadsheets, etc. Although described with reference to solid-state memory, aspects of storage media programming utilizing self-adjusting write buffer releases may also be implemented into magnetic-based or optical-based media types.

通常,存儲控制器126管理存儲系統114的操作,並且使得主機系統102能夠存取存儲介質124以用於數據存儲。存儲控制器126可以通過硬體、固件或軟體的任何適當的組合來實現,以提供存儲系統114的各種功能。存儲控制器126還可以管理或實施與存儲介質124相關聯的內部任務或操作,諸如數據快取記憶體、數據移轉、垃圾收集、熱管理(例如,節流)、功率管理等。這樣,存儲控制器126可以從主機系統102接收主機I/O以用於數據存取,並且將與存儲介質124的內部操作相關聯的內部I/O排隊(或生成)。 Generally, storage controller 126 manages the operation of storage system 114 and enables host system 102 to access storage media 124 for data storage. Storage controller 126 may be implemented through any suitable combination of hardware, firmware, or software to provide the various functions of storage system 114 . Storage controller 126 may also manage or implement internal tasks or operations associated with storage media 124, such as data caching, data migration, garbage collection, thermal management (eg, throttling), power management, and the like. In this manner, storage controller 126 may receive host I/O from host system 102 for data access and queue (or generate) internal I/O associated with internal operations of storage medium 124 .

在該示例中,存儲控制器126還包括存儲介質寫管理器130(介質寫管理器130)、寫緩衝區132和基於同位的編碼器,其被示為獨立磁碟容錯陣列(RAID)編碼器134。寫緩衝區132可以接收或存儲從主機系統102所接收的數據,以用於寫到存儲介質124。RAID編碼器134可以計算用於被寫到作為RAID條帶的一部分的存儲介質124的數據的同位資訊(例如,XOR位元)。RAID條帶的成員或單元可以包括存儲介質的任何合適的分區或區域,諸如晶元、平面、塊、頁面、字線等。通常,由RAID編碼器提供的同位資訊可用於與來自其他RAID條帶成員的資訊結合在一起,以在該成員的編程操作失敗時,恢復RAID條帶成員的數據。RAID或基於同位的數據恢復可以提供增強的數據可靠性,並且保護免於存儲介質的完全塊或頁故障。 In this example, storage controller 126 also includes storage media write manager 130 (Media Write Manager 130), write buffer 132, and a parity-based encoder, shown as a tolerant array of independent disks (RAID) encoder 134. Write buffer 132 may receive or store data received from host system 102 for writing to storage medium 124 . RAID encoder 134 may calculate parity information (eg, XOR bits) for data written to storage media 124 as part of a RAID stripe. The members or units of a RAID stripe may include any suitable partition or region of storage media, such as dies, planes, blocks, pages, wordlines, etc. Typically, the parity information provided by the RAID encoder can be used to combine with information from other RAID stripe members to restore the RAID stripe member's data if that member's programming operation fails. RAID or parity-based data recovery can provide enhanced data reliability and protection from complete block or page faults of the storage media.

在各個方面,介質寫管理器130可以與RAID編碼器134交互以計算針對存儲到寫緩衝區132的數據的同位資訊。在一些情況下,數據還可以在計算同位資訊之前或其期間被傳遞到存儲介質系統的另一內部緩衝區。如果將數據寫到存儲介質的編程操作失敗,則介質寫管理器130可以使用該同位資訊來實現數據恢復,而不是依賴於寫緩衝區中保持的數據。因為同位資訊能夠實現數據恢復,所以介質寫管理器然後可以回應於對同位資訊的計算(和/或數據被傳遞到另一內部緩衝區或存儲介質)而釋放寫緩衝區,從而使寫緩衝區132自由以用於在將數據編程到存儲介質之前或在數據被編程到存儲介質中時重複使用。通過這樣做,寫緩衝區的自我調整釋放可以導致改進的寫緩衝區利用率和增加的存儲介質寫輸送量。 In various aspects, media write manager 130 may interact with RAID encoder 134 to calculate parity information for data stored to write buffer 132 . In some cases, data may also be passed to another internal buffer of the storage media system before or during computation of parity information. If a programming operation to write data to the storage medium fails, the media write manager 130 can use this parity information to achieve data recovery rather than relying on data held in the write buffer. Because parity information enables data recovery, the media write manager can then release the write buffer in response to computation of parity information (and/or data being transferred to another internal buffer or storage medium), thereby freeing the write buffer. 132 is free for reuse before or while data is programmed into the storage medium. By doing so, self-adjusting release of write buffers can result in improved write buffer utilization and increased storage medium write throughput.

主機系統102還可以包括I/O埠136、圖形處理單元138(GPU 138)和數據介面140。通常,I/O埠136允許主機系統102與其他設備、週邊設備或使用者交互。例如,I/O埠136可以包括通用序列匯流排、人機周邊設備、音訊輸入、音訊輸出等或與其耦接。GPU 138處理並且繪製與圖形相關的數據以用於主機系 統102,諸如作業系統的使用者介面元素、應用等。在一些情況下,GPU 138存取本機存放區器的一部分以繪製圖形,或包括用於繪製主機系統102的圖形(例如,視頻RAM)的專用記憶體。 Host system 102 may also include I/O port 136, graphics processing unit 138 (GPU 138), and data interface 140. Generally, I/O ports 136 allow host system 102 to interact with other devices, peripherals, or users. For example, the I/O port 136 may include or be coupled to a universal serial bus, human-machine peripherals, audio input, audio output, etc. GPU 138 processes and renders graphics-related data for use by the host system. System 102, such as user interface elements, applications, etc. of the operating system. In some cases, GPU 138 accesses a portion of the native memory for drawing graphics, or includes dedicated memory for drawing graphics for host system 102 (eg, video RAM).

主機系統102的數據介面140提供到一個或多個網路以及被連接到那些網路的其他設備的連接。數據介面140可以包括有線介面(諸如乙太網或光纖介面),以用於通過局域網、內聯網或互聯網進行通信。備選地或附加地,數據介面140可以包括促進通過無線網路(諸如無線局域網(LAN)、廣域無線網路(例如蜂窩網路)和/或無線個人區域網路(WPAN))進行通信的無線介面。根據利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個方面,通過I/O埠136或數據介面140傳送的任何數據可以被寫到主機系統102的存儲系統114或從其被讀取。 Data interface 140 of host system 102 provides connectivity to one or more networks and other devices connected to those networks. Data interface 140 may include a wired interface (such as an Ethernet or fiber optic interface) for communication over a local area network, an intranet, or the Internet. Alternatively or additionally, data interface 140 may include facilities to facilitate communication over wireless networks, such as wireless local area networks (LANs), wide area wireless networks (eg, cellular networks), and/or wireless personal area networks (WPANs). wireless interface. In accordance with one or more aspects of storage media programming utilizing self-adjusting write buffer release, any data transferred via I/O port 136 or data interface 140 may be written to or read from storage system 114 of host system 102 .

圖2在200處圖示了固態驅動器202的示例配置,其中介質寫管理器、寫緩衝區和RAID編碼器可以根據一個或多個方面來實現。在該示例中,在被實現為固態存儲驅動器(SSD)202的存儲系統114的上下文中示出了介質寫管理器130和其他組件。SSD 202可以耦接到任何合適的主機系統102,並且植入包括多個NAND快閃記憶體設備204-0至204-n的存儲介質124,其中n是任何合適的整數。在一些情況下,NAND快閃記憶體設備204包括在通道級(設備組)或設備級(個體設備)上可存取或管理的存放裝置、晶元或晶片的多個快閃記憶體通道。儘管被示為存儲控制器126的元件,但是介質寫管理器130可以與存儲控制器分離地實現或在其外部。在一些情況下,介質寫管理器130被實現為記憶體介面的一部分(諸如DRAM控制器)或與存儲控制器相關聯的介面。 FIG. 2 illustrates at 200 an example configuration of solid state drive 202 in which a media write manager, write buffer, and RAID encoder may be implemented in accordance with one or more aspects. In this example, media write manager 130 and other components are shown in the context of storage system 114 implemented as solid-state storage drive (SSD) 202 . SSD 202 may be coupled to any suitable host system 102 and embedded with storage medium 124 including a plurality of NAND flash memory devices 204-0 through 204-n, where n is any suitable integer. In some cases, NAND flash memory device 204 includes multiple flash memory channels that store devices, dies, or dies that can be accessed or managed at the channel level (device group) or device level (individual device). Although shown as an element of storage controller 126, media write manager 130 may be implemented separately from or external to the storage controller. In some cases, media write manager 130 is implemented as part of a memory interface (such as a DRAM controller) or an interface associated with a storage controller.

通常,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)介面等。 Generally, operation of SSD 202 is enabled or managed by an instance of storage controller 126 , which in this example includes a host interface 206 for enabling communication with host system 102 and an interface for enabling access to storage media 124 Media interface 208. Host interface 206 may be configured to implement any Appropriate type of storage interface or protocol, such as Serial Advanced Technology Attach (SATA), Universal Serial Bus (USB), PCIe, Advanced Host Controller Interface (AHCI), NVMe, NVM-OF (NVM-OF), NVM Host Controller Interface Specification (NVMHCIS), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Secure Digital I/O (SDIO), Fiber Channel, any combination thereof (e.g. M.2 or next generation form factor Factor (NGFF) combination interface), etc. Alternatively or additionally, media interface 208 may implement any suitable type of storage media interface, such as a flash memory interface, a flash memory bus channel interface, a NAND channel interface, a physical page addressing (PPA) interface, or the like.

在各個方面,SSD 202或存儲控制器126的元件提供主機介面206到主機系統102和介質介面208到存儲介質124之間的數據路徑。在該示例中,存儲控制器126包括處理器核210,以用於執行內核、固件或驅動器以實現存儲控制器126的功能。在一些情況下,處理器核210還可以執行處理器可執行指令以實現存儲控制器126的介質寫管理器130。備選地或附加地,介質寫管理器130可以從與RAID編碼器134相關聯的硬體執行或在其上運行。 In various aspects, SSD 202 or elements of storage controller 126 provide data paths between host interface 206 to host system 102 and media interface 208 to storage media 124 . In this example, storage controller 126 includes a processor core 210 for executing kernels, firmware, or drivers to implement the functions of storage controller 126 . In some cases, processor core 210 may also execute processor-executable instructions to implement media write manager 130 of storage controller 126 . Alternatively or additionally, media write manager 130 may execute from or run on hardware associated with RAID encoder 134 .

如圖2所示,存儲控制器126的結構212(其可以包括控制和數據匯流排)可操作地耦接並且支援存儲控制器126的元件之間的通信。例如,介質寫管理器130可以與寫緩衝區132、RAID編碼器134或處理器核210(例如,固件)通信,以在存儲控制器126內交換數據、資訊或控制信令(例如,緩衝區釋放中斷)。存儲控制器126的靜態隨機存取記憶體214可以存儲處理器可執行指令或用於存儲控制器的固件或驅動器的代碼,其可以由處理器核210執行。備選地或附加地,存儲控制器126的寫緩衝區132可以在控制器的SRAM 214中被實現。 As shown in FIG. 2 , structure 212 of storage controller 126 , which may include control and data buses, is operatively coupled and supports communications between elements of storage controller 126 . For example, media write manager 130 may communicate with write buffer 132, RAID encoder 134, or processor core 210 (e.g., firmware) to exchange data, information, or control signaling (e.g., buffers) within storage controller 126 release interrupt). The static random access memory 214 of the storage controller 126 may store processor-executable instructions or code for the storage controller's firmware or drivers, which may be executed by the processor core 210 . Alternatively or additionally, the write buffer 132 of the memory controller 126 may be implemented in the SRAM 214 of the controller.

在該示例中,存儲控制器126包括動態隨機存取記憶體(DRAM)控制器216和相關聯的DRAM 218,以用於在存儲控制器126在主機系統102、存儲介質124或存儲控制器的其他元件之間移動數據時存儲或快取記憶體各種數據。如圖2中所示,寫緩衝區132的實例在DRAM 218中實現,並且可以通過DRAM 控制器216被存取或管理。存儲控制器126還包括改錯碼(ECC)編碼器220,其可以被用於對被編程或寫到SSD 202的存儲介質124的數據進行ECC編碼。 In this example, storage controller 126 includes a dynamic random access memory (DRAM) controller 216 and associated DRAM 218 for use in storage controller 126 on host system 102 , storage medium 124 , or storage controller. Various data are stored or cached in memory while moving data between other components. As shown in Figure 2, an instance of write buffer 132 is implemented in DRAM 218 and can be Controller 216 is accessed or managed. Storage controller 126 also includes an error correction code (ECC) encoder 220 that may be used to ECC encode data programmed or written to storage media 124 of SSD 202 .

圖3在300處示出了各種硬體和固件元件的示例配置,以用於實現利用自我調整寫緩衝區釋放的存儲介質編程的各方面。在該示例中,存儲控制器126的元件被示為可以在存儲控制器的固件302和/或硬體304中實現的抽象實體。這只是各種元件的一個示例實現,其中任何一個元件都可以與本文所述的其他元件分離地實現或與其組合而被實現。備選地或附加地,參考圖2或圖3描述的元件中的任何元件可以被實現為智慧財產權塊(IP塊)或IP核,其被配置為提供元件的各種描述特徵的邏輯單元、單元和/或積體電路(IC)。例如,存儲控制器126的元件(例如,介質寫管理器130)可以被實現為包括硬體、固件或軟體的組合的IP核或IP塊,以提供相應功能或實現元件的相應操作。 FIG. 3 illustrates at 300 an example configuration of various hardware and firmware elements for implementing aspects of storage media programming utilizing self-adjusting write buffer release. In this example, the elements of storage controller 126 are shown as abstract entities that may be implemented in the storage controller's firmware 302 and/or hardware 304 . This is only one example implementation of various elements, any of which may be implemented separately from or in combination with other elements described herein. Alternatively or additionally, any of the elements described with reference to Figure 2 or Figure 3 may be implemented as an intellectual property block (IP block) or IP core configured as a logical unit, unit that provides the various descriptive characteristics of the element. and/or integrated circuits (ICs). For example, elements of storage controller 126 (eg, media write manager 130) may be implemented as IP cores or IP blocks that include a combination of hardware, firmware, or software to provide corresponding functionality or implement corresponding operations of the elements.

在該示例中,存儲控制器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上執行。 In this example, hardware 304 of storage controller 126 includes NAND flash memory device 204, host interface 206, media interface 208, processor 210 (not shown), and ECC encoder 220, which may be described with reference to FIG. 2 implemented as described. Hardware 304 may also include a write buffer 132 and a RAID encoder 134 operatively coupled with RAID buffer 306 . Shown separately in this example, RAID buffer 306 may be implemented as part of RAID encoder 134 and stores parity information generated or calculated by the RAID encoder. Media write manager 130 may be implemented at least partially in hardware 304 and interact with write buffer 132 or RAID encoder 134 to perform self-tuning freeing of write buffer 132 as described throughout this disclosure. Alternatively or additionally, media write manager 130 may execute on processor core 210 of storage controller 126 .

通常,存儲控制器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的存儲介質存取。 Typically, firmware 302 of storage controller 126 assists hardware 304 in managing the data path between host system 102 and storage media 124 . In other words, firmware 302 may translate commands or requests for data received from host system 102 to enable access to storage medium 124 . As shown in FIG. 3, firmware 302 includes a host interface driver 308 for implementing the host command processor 310 on the host side and a host interface driver 308 for implementing the host command processor 310 on the storage device. The media side implements the media interface driver 312 of the media command manager 314. As shown in Figure 3, host input/output commands 316 (host I/O 316) for data 318 (eg, data corresponding to a write command) are received by the host command processor 310 and sent to the storage control The I/O scheduler of the flash translation layer 320 (FTL 320) of the processor 126. The FTL 320 and/or I/O scheduler may process and schedule the host I/O 316, which may then be executed as corresponding media input/output commands 322 (media I/O 322) for use by the media command manager 314 storage media access.

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。 FTL 320 may manage command processing (eg, host I/O 316 translation and scheduling) to facilitate the movement of host system data 318 within storage system 114 and/or through storage controller 126 , such as to storage media 124 . As shown in Figure 3, in the context of writing host data to storage media, FTL 320 handles host I/O 316 to manage or facilitate the movement of data 318 from the host interface 206 through the data path to the media interface 208, where the data 318 is programmed into the NAND flash memory device 204. To this end, FTL 320 or firmware 302 may manage various elements of hardware 304 to facilitate the movement of data 318 from one element to the next. For example, firmware 302 may cause hardware 304 to obtain or move data 318 from host interface 206 to write buffer 132, provide data 318 (eg, by passing or copying) to RAID encoder 134, and/ Or the data 318 is provided to the ECC encoder 220 for encoding. Firmware 302 may also cause hardware 304 to send data 318 or ECC-encoded data 324 to media interface 208 for writing or programming to NAND flash memory device 204 .

在各個方面,介質寫管理器130可以與寫緩衝區132、RAID編碼器134、固件302或硬體304的其他元件交互,以實現利用自我調整寫緩衝區釋放的存儲介質編程的各方面。在一些情況下,介質寫管理器130監測RAID編碼器134,以用於對針對數據318(例如,一個主機寫命令的數據)的同位資訊的計算完成的指示。基於同位資訊計算的完成和數據的副本被存儲到另一內部緩衝區(例如,ECC緩衝區),寫緩衝區130生成到固件302的中斷以引起釋放存儲數據318(例如,一個主機寫命令的數據)的寫緩衝區132。通過這樣做,寫緩 衝區132自由並且可以被重用於主機的下一個寫命令的數據318。這還可以使得存儲驅動器能夠利用較少或較小的寫緩衝區來實現,而不影響存儲驅動器的寫輸送量。 In various aspects, media write manager 130 may interact with write buffer 132, RAID encoder 134, firmware 302, or other elements of hardware 304 to implement aspects of storage media programming utilizing self-adjusting write buffer release. In some cases, media write manager 130 monitors RAID encoder 134 for an indication that calculation of parity information for data 318 (eg, data for a host write command) is complete. Upon completion of parity calculations and a copy of the data being stored to another internal buffer (e.g., an ECC buffer), write buffer 130 generates an interrupt to firmware 302 to cause the release of stored data 318 (e.g., a host write command data) write buffer 132. By doing this, write buffering Buffer 132 is free and can be reused for data 318 on the host's next write command. This may also enable the storage drive to utilize fewer or smaller write buffers without impacting the storage drive's write throughput.

圖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編程故障期間丟失的數據的恢復。 4A-4E illustrate examples of storage media programming utilizing self-adjusting write buffer release in the context of wafer-level data redundancy. As shown at 400 in Figure 4A, storing host data to storage media generally includes processing data 318 received at write buffer 132 and moving it to NAND flash memory 204 for programming into the NAND media. NAND flash memory 204 is illustrated here as individual NAND die 1204-1 through NAND die n 204n, where n is any suitable integer. Any of the entities of Figures 4A-4E may be implemented similarly to the corresponding entities described with reference to Figures 1-3. In this example, storage controller 126 includes an instance of RAID encoder 134 to implement RAID encoding, which may provide improved data reliability to the storage controller and enable recovery of data lost during a NAND programming failure.

通常,RAID條帶可以跨越駐留在存儲介質的不同晶元或平面上的存儲塊。在高代碼速率應用(低開銷)中,RAID條帶可能還包括來自存儲介質的同一晶元或平面的塊。在該示例中,RAID編碼器134以晶元RAID方案(或晶元級RAID)實現,其可以防止存儲介質晶元(例如,NAND晶元)的故障。在其他方面,可以代替RAID編碼器來實現Reed-Solomon代碼編碼器,以針對多個RAID條帶成員(例如,平面或晶元)中的故障事件實現保護。 Typically, a RAID stripe can span storage blocks that reside on different dies or planes of storage media. In high code rate applications (low overhead), a RAID stripe may also include blocks from the same die or plane of storage media. In this example, RAID encoder 134 is implemented in a wafer-level RAID scheme (or wafer-level RAID), which can protect against failures of storage media wafers (eg, NAND wafers). In other aspects, a Reed-Solomon code encoder can be implemented in place of a RAID encoder to achieve protection against failure events in multiple RAID stripe members (e.g., planes or dies).

如圖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的內容可以被寫到介質。 As shown in Figure 4A, first write buffer 0 132-0 may receive first data 318-0 from a host (such as host system 102). The first data 318-0 is then provided to the RAID encoder 134 for calculating parity information for the first data 318-0, and to the ECC encoder 220 for ECC encoding, and is programmed into the first The first plane (plane 0 406-0) of NAND die 0 204-0. Typically, the data in the first write buffer 0 132-0 may be passed in parallel to the ECC encoder and/or the storage medium and the RAID encoder for XOR generation. Thus, the first write buffer 0 132-0 is programmed into the storage medium quality, and the RAID buffer 306 accumulates XOR information until all RAID members have passed the RAID encoder 134, and then the contents of the RAID buffer 306 can be written to the media.

在該示例中,RAID編碼器134包括XOR引擎402,以計算針對第一數據318-0的XOR位元,其被存儲到RAID緩衝區306的第一平面(平面0 404-0)。如所指出的,與RAID編碼器134同位資訊的計算(例如40至50微秒)或到存儲介質的傳遞時間相比,將第一數據318-0的編程到NAND快閃記憶體可能花費更多的時間(例如3到4毫秒)。 In this example, RAID encoder 134 includes XOR engine 402 to compute XOR bits for first data 318-0, which is stored to the first plane of RAID buffer 306 (plane 0 404-0). As noted, programming of the first data 318-0 to the NAND flash memory may take longer compared to the calculation of the RAID encoder 134 parity information (e.g., 40 to 50 microseconds) or the transfer time to the storage medium. much time (e.g. 3 to 4 milliseconds).

繼續圖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的寫輸送量。 Continuing with FIG. 4B , in response to RAID encoder 134's calculation of the XOR bits, media write manager 130 may release first write buffer 0 132 - 0 , as shown at 408 . Before or during programming 410 of first data 318-0 to first NAND die 204-0, first write buffer 0 132-0 may be freed. Therefore, before programming of first data 318-0 to NAND flash memory 204 is completed, first write buffer 0 132-0 may be freed and available for reuse. In contrast to traditional storage media programming, first write buffer 0 132 - 0 may receive additional data from the host before first data 318 - 0 completes programming, which may improve write delivery to storage controller 126 or storage system 114 quantity.

如圖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)。 As shown in Figure 4B, when the second write buffer 1 132-1 receives the second data 318 1 from the host, it continues to store the host data. The second data 318 1 is then provided to the RAID encoder 134 for calculating parity information for the second data 318 1 , to the ECC encoder 220 for ECC encoding, and programmed into the first NAND The second plane of die 0 204-0 (plane 1 406-1). The XOR engine 402 computes the XOR bits of the second data 318 1 , which is stored into the second plane of the RAID buffer 306 (Plane 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可以被釋放以用於重用。 Continuing with FIG. 4C , upon completion of RAID encoder 134's calculation of the XOR bits of second data 318 - 1 , media write manager 130 may release second write buffer 1 132 - 1 , as shown at 412 . Similar to first write buffer 0 132-0, second write buffer 1 132-1 may be released prior to or during programming 414 of second data 318-1 to first NAND die 204-0. So in the second data 318 1 to NAND Before programming of flash memory 204 is completed, second write buffer 112-12-1 may be released and available for reuse. In some cases, first write buffer 0 132-0 and second write buffer 1 132-1 may be released for reuse before programming of second data 318 1 to NAND flash memory 204 is completed.

參考在圖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)。 Referring to the storage of host data in the context of Figure 4C, third write buffer 2 132-2 receives third data 318-2 from the host. The third data 318-2 is then provided to the RAID encoder 134 to calculate parity information for the third data 318-2, to the ECC encoder 220 for ECC encoding, and to be programmed to the second NAND chip. The first plane of element 1 204-1 (plane 0 406-0). The XOR engine 402 may calculate the XOR bits for the third data 318-2, which may be stored to the first plane of the RAID buffer 306 (Plane 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可以被釋放以用於重用。 As shown in FIG. 4D , in response to RAID encoder 134 completing the calculation of the XOR bits of third data 318 - 2 , media write manager 130 releases third write buffer 2 132 - 2 , as shown at 416 . Before or during programming 418 of third data 318-2 to second NAND die 204-1, third write buffer 2132-2 may be released. Therefore, before programming of third data 318-2 to NAND flash memory 204 is completed, third write buffer 2 132-2 may be freed and available for reuse. In some cases, first write buffer 0 132-0, second write buffer 1 132-1, and third write buffer 2 are completed before programming of third data 318-2 to NAND flash memory 204 is completed 132-2 can be released for reuse.

在該示例中結束主機數據的存儲,第四寫緩衝區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。 To end the storage of the host data in this example, the fourth write buffer 3 132-3 receives the fourth data 3183 from the host. The fourth data 318 3 is then provided to the RAID encoder 134 for calculating parity information of the fourth data 318 3 and to the ECC encoder 220 for ECC encoding and programmed to the second NAND die. The second plane of 1 204-1 (plane 1 406-1). The XOR engine 402 computes the XOR bits of the fourth data 318-3, which is stored to the second plane of the RAID buffer 306 (Plane 1 404-1). Similar to other write buffers 132, the media write manager may release fourth write buffer 3 132-3 upon completion of calculation of parity information for fourth information 318-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所示被恢復。 Referring to Figure 4E, the parity information or XOR bits calculated by the RAID encoder 134 may be stored or maintained in the RAID buffer 306 until programming of the last NAND die 204 is completed. In the case of die-level RAID, the parity information of the RAID encoder 134 is programmed from the RAID buffer 306 to the two planes 406 of the last NAND die n 204-n of the RAID stripe. By way of review, the host's data 318 is striped across other NAND die 204 members of the RAID stripe, such as NAND die 0 204-0 through NAND die n-1 (not shown). In this example, ECC encoder 220 (two examples shown for visual clarity) encodes corresponding parity information (eg, XOR bits) for first plane 0 406-0 and second plane 1 406-1. Then, the ECC-encoded parity information is respectively programmed to the first plane 0 406-0 and the second plane 1 406-1 of the last NAND wafer n 204-n. By implementing RAID encoding, data on any plane of a die that cannot be programmed (for example, die k < n) can also be recovered as shown in Equations 1 and 2.

(晶元k,平面0)=(晶元0,平面0)XOR(晶元1,平面0)XOR…XOR(晶元k-1,平面0)XOR(晶元k+1,平面0)XOR…XOR(晶元n,平面0)公式1:晶元k的平面0的數據恢復 (die k, plane 0) = (die 0, plane 0) XOR (die 1, plane 0) XOR…XOR (die k-1, plane 0) XOR (die k+1, plane 0) XOR...XOR(die n, plane 0) Formula 1: Data recovery of plane 0 of wafer k

(晶元k,平面1)=(晶元0,平面1)XOR(晶元1,平面1)XOR…XOR(晶元k-1,平面1)XOR(晶元k+1,平面1)XOR…XOR(晶元n,平面1)公式2:晶元k的平面1的數據恢復 (die k, plane 1) = (die 0, plane 1) XOR (die 1, plane 1) XOR…XOR (die k-1, plane 1) XOR (die k+1, plane 1) XOR...XOR(die n, plane 1) Formula 2: Data recovery of plane 1 of wafer k

在將同位資訊編程到晶元n失敗的情況下,同位資訊可以被保持在RAID緩衝區306中,直到晶元n的編程完成為止,使得同位數據可以直接從RAID緩衝區306被恢復。 In the event that programming of parity information to die n fails, the parity information can be maintained in the RAID buffer 306 until programming of die n is completed, so that the parity data can be restored directly from the RAID buffer 306 .

備選地,一旦已知RAID條帶的所有(非同位)成員已經成功編程到存儲介質,則RAID緩衝區306也可以提前被釋放。在這種情況下,RAID緩衝區306可以提前被釋放,並且如果到存儲介質的編程失敗,則同位資訊可以通 過再次讀取所有RAID成員來重建。備選地,當不需要重建同位時,條帶可能缺乏RAID保護,並且條帶可以被重新定位到有效地重建同位資訊的其他位置。 Alternatively, the RAID buffer 306 may also be released early once it is known that all (non-co-located) members of the RAID stripe have been successfully programmed to the storage medium. In this case, the RAID buffer 306 can be freed early, and if programming to the storage medium fails, the parity information can be passed Rebuild by reading all RAID members again. Alternatively, when parity reestablishment is not required, the stripe may lack RAID protection, and the stripe may be relocated to another location that effectively reestablishes parity information.

圖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編程操作期間丟失的數據的恢復(例如,塊或頁面故障)。 5A-5D illustrate examples of storage media programming utilizing self-adjusting write buffer release in the context of plane-level data redundancy. As shown at 500 in Figure 5A, storing host data to storage media generally includes processing data 318 received at write buffer 132 and moving it to NAND flash memory 204 for programming to the NAND media middle. NAND flash memory 204 is shown here as individual NAND die 1204-1 through NAND die n 204n, where n is any suitable integer. Any of the entities of Figures 5A-5D may be implemented similarly to the corresponding entities described with reference to Figures 1-4. In this example, storage controller 126 includes an instance of RAID encoder 134 to implement RAID encoding, which may provide improved data reliability to the storage controller and enable recovery of data lost during NAND programming operations (e.g., block or page fault).

在本示例中,RAID編碼器134在平面RAID方案(或平面級RAID)中被實現,這可以針對存儲介質平面(例如NAND平面)的故障進行保護。在一些情況下,使用平面RAID可以減少晶元RAID(例如,圖4A至圖4E)所涉及的計算開銷。在其他方面,可以代替RAID編碼器來實現Reed-Solomon代碼編碼器,以針對多個RAID條帶成員(例如,平面或晶元)中的故障事件實現保護。 In this example, the RAID encoder 134 is implemented in a planar RAID scheme (or plane-level RAID), which can protect against failures of a storage media plane (eg, a NAND plane). In some cases, using planar RAID can reduce the computational overhead involved in on-die RAID (eg, Figures 4A-4E). In other aspects, a Reed-Solomon code encoder can be implemented in place of a RAID encoder to achieve protection against failure events in multiple RAID stripe members (e.g., planes or dies).

如圖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進行編程可以消耗多得多的時間。 As shown in Figure 5A, first write buffer 0 132-0 may receive first data 318-0 from a host (such as host system 102). The first data 318-0 is then provided to the RAID encoder 134 for calculating parity information for the first data 318-0, and to the ECC encoder 220 for ECC encoding, and is then programmed into the first The first plane (plane 0 506-0) of NAND die 0 204-0. In this example, RAID encoder 134 includes XOR engine 502 to compute XOR bits for first data 318-0, which is stored into the first plane of RAID buffer 306 (plane 0 504-0). As noted, programming the first data 318-0 can consume much more time than the calculation of the parity information of the RAID encoder 134 or the XOR engine 502.

繼續圖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的寫輸送量。 Continuing with FIG. 5B , in response to RAID encoder 134's calculation of the XOR bits, media write manager 130 may release first write buffer 0 132 - 0 , as shown at 508 . Before or during programming 510 of first data 318-0 to first NAND die 204-0, first write buffer 0 132-0 may be freed. Therefore, before programming of first data 318-0 to NAND flash memory 204 is completed, first write buffer 0 132-0 may be freed and available for reuse. In contrast to traditional storage media programming, first write buffer 0 132 - 0 may receive additional data from the host before first data 318 - 0 completes programming, which may improve write delivery to storage controller 126 or storage system 114 quantity.

如圖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)。 As shown in Figure 5B, when the second write buffer 1 132-1 receives the second data 318 1 from the host, storage of the host data continues. The second data 318 1 is then provided to the RAID encoder 134 for calculating parity information for the second data 318 1 and to the ECC encoder 220 for ECC encoding, and then programmed to the first NAND The second plane of die 0 204-0 (plane 1 506-1). The XOR engine 502 computes the XOR bits of the second data 318 1 , which is stored into the second plane of the RAID buffer 306 (Plane 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自由以用於重用。 Continuing with FIG. 5C , based on completion of RAID encoder 134's calculation of the XOR bits for second data 318 - 1 , media write manager 130 may release second write buffer 1 132 - 1 , as shown at 512 . Similar to first write buffer 0 132-0, second write buffer 1 132-1 may be released prior to or during programming 514 of second data 318-1 to first NAND die 204-0. Therefore, before programming of the second data 318 1 to the NAND flash memory 204 is completed, the second write buffer 1 132-1 may be freed and available for reuse. Here, it is assumed that the parity information has also been calculated for the third data (not shown), which has been sent to the programming interface of the NAND flash memory 204 . In response to the calculation of parity information for the third data, media write manager 130 releases third write buffer 2 132-2, as shown at 516. In this way, the release of the third write buffer 2 132-2 can occur before or during the programming 518 of the third data, thereby causing the third write buffer 2 to be released before the corresponding data is programmed into the NAND flash memory 204. 2 132-2 Free for reuse.

如圖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。 Ending the storage of host data as shown in Figure 5C, the last write buffer 2n 132-2n (eg, the last write buffer for the stripe) receives data 318-2n from the host for the last plane member of the RAID stripe . Data 318-2n is then provided to RAID encoder 134 for computing parity information for data 318-2n, to ECC encoder 220 for ECC encoding, and programmed to the nth NAND die n 204-n's first plane (plane 0 506-0). The XOR engine 502 computes the XOR bits for data 318-2n, which is stored into the first plane of the RAID buffer 306 (Plane 0 504-0). Similar to other write buffers 132, the media write manager may release the final write buffer 2n 132-2n upon completion of calculation of parity information for message 318-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所示被恢復。 Referring to Figure 5D, the parity information or XOR bits calculated by the RAID encoder 134 may be stored or maintained in the RAID buffer 306 until programming of the last NAND die 204 is completed. In the case of plane-level RAID, the parity information for each plane (504-0 and 504-1) of the RAID encoder 134 is programmed into the second plane (204-n) of the last NAND die n 204-n of the RAID stripe. Plane 0 506-1) before, are combined by XOR operation. By way of review, the host's data 318 is striped across other NAND plane members of the RAID stripe, such as the plane of NAND die 0 204-0 to the first plane of NAND die n. In this example, ECC encoder 220 encodes parity information (eg, XOR bits) for the combination of first plane 0 506-0 and second plane 1 506-1. The ECC-encoded parity information is then programmed into the second plane 1 506-1 of the final NAND die n 204-n. By implementing RAID encoding, data on any plane of a die that cannot be programmed (for example, die k < n) can also be recovered as shown in Equations 3 and 4.

(晶元k,平面0)=(晶元0,平面0)XOR(晶元1,平面0)XOR…XOR(晶元k-1,平面0)XOR(晶元k+1,平面0)XOR…XOR(晶元n,平面0)公式3:晶元k的平面0的數據恢復 (die k, plane 0) = (die 0, plane 0) XOR (die 1, plane 0) XOR…XOR (die k-1, plane 0) XOR (die k+1, plane 0) XOR...XOR(die n, plane 0) Formula 3: Data recovery of plane 0 of wafer k

(晶元k,平面1)=(晶元0,平面1)XOR(晶元1,平面1)XOR…XOR(晶元k-1,平面1)XOR(晶元k+1,平面1)XOR…XOR(晶元n,平面1)公式4:晶元k的平面1的數據恢復 (die k, plane 1) = (die 0, plane 1) XOR (die 1, plane 1) XOR…XOR (die k-1, plane 1) XOR (die k+1, plane 1) XOR...XOR(die n, plane 1) Formula 4: Data recovery of plane 1 of wafer k

在同位資訊到晶元n的編程失敗的情況下,該同位資訊可以被保留在RAID緩衝區306中,直到晶元n的第二平面的編程完成為止,使得同位數據從RAID緩衝區306直接可恢復。這些只是利用自我調整寫緩衝區釋放的存儲介質編程的少許示例,貫穿本公開中實現和描述了示例中的其他示例。 In the event that programming of the parity information to die n fails, the parity information may be retained in the RAID buffer 306 until programming of the second plane of die n is completed, such that the parity data is directly available from the RAID buffer 306 restore. These are just a few examples of storage media programming utilizing self-adjusting write buffer release, and others of the examples are implemented and described throughout this disclosure.

用於自我調整寫緩衝區釋放和數據恢復的技術Techniques for self-tuning write buffer release and data recovery

以下討論描述了用於利用自我調整寫緩衝區釋放和/或基於同位的數據恢復的存儲介質編程的技術。可以使用本文描述的環境和實體中的任何環境和實體(諸如介質寫管理器130、寫緩衝區132和/或RAID編碼器134)來實現這些技術。這些技術包括圖6至圖8所示的各種方法,該方法中的每個方法被示為可以由一個或多個實體執行的操作的集合。 The following discussion describes techniques for programming storage media that utilize self-adjusting write buffer release and/or parity-based data recovery. These techniques may be implemented using any of the environments and entities described herein, such as media write manager 130, write buffer 132, and/or RAID encoder 134. These techniques include the various methods shown in Figures 6-8, each of which is shown as a collection of operations that can be performed by one or more entities.

方法600到800不一定限於在相關聯的圖中所示的操作順序。而是,該操作中的任何操作可以被重複、跳過,替換或重新排序,以實現本文描述的各個方面。此外,這些方法可以全部或部分地彼此結合使用,而不管是由同一實體、單獨實體還是其任何組合來執行。在以下討論的部分中,例如將參考圖1的操作環境100以及圖2至圖5D的各種實體或配置。這樣的參考不應當被視為將所描述的各方面限制到操作環境100、實體或配置,而是作為各種示例中的一個示例的說明。備選地或附加地,方法的操作也可以由參考圖9的系統單晶片和/或圖10的存儲系統控制器所描述的實體實現或與其一起實現。 Methods 600-800 are not necessarily limited to the order of operations shown in the associated figures. Rather, any operations within this operation may be repeated, skipped, replaced, or reordered to implement various aspects described herein. Furthermore, these methods may be used in whole or in part in conjunction with each other, whether performed by the same entity, separate entities, or any combination thereof. In portions of the following discussion, reference will be made, for example, to the operating environment 100 of Figure 1 and the various entities or configurations of Figures 2-5D. Such references should not be construed as limiting the described aspects to the operating environment 100, entity, or configuration, but rather as an illustration of one example among various examples. Alternatively or additionally, the operations of the method may also be implemented by or in conjunction with the entities described with reference to the system-on-chip of FIG. 9 and/or the storage system controller of FIG. 10 .

圖6描繪了用於利用自我調整寫緩衝區釋放的存儲介質編程的示例方法600,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132或RAID編碼器134來執行或與其一起執行的操作。 6 depicts an example method 600 for storage media programming utilizing self-adjusting write buffer release, including being performed by or with the media write manager 130, write buffer 132, or RAID encoder 134 of a storage media controller. operation.

在602處,從主機介面接收的數據被存儲到寫緩衝區。寫緩衝區可以在存儲控制器的SRAM或DRAM中被實現。在一些情況下,從主機介面所接 收的數據對應於主機系統的寫命令,數據經由主機介面從該主機系統被接收。寫命令可以指定存儲介質(諸如存儲系統的NAND快閃記憶體)中數據的目的地。 At 602, data received from the host interface is stored into the write buffer. The write buffer can be implemented in the SRAM or DRAM of the memory controller. In some cases, the connection from the host interface The received data corresponds to the write command of the host system from which the data is received via the host interface. A write command may specify the destination of data in a storage medium, such as the NAND flash memory of a storage system.

在604處,同位資訊針對存儲到寫緩衝區的數據利用基於同位的編碼器被確定。在確定同位資訊之前或其期間,數據可以被傳遞到存儲系統的內部緩衝區或存儲介質。基於同位的編碼器可以包括具有XOR引擎或XOR緩衝區的RAID編碼器,以用於確定同位資訊(例如,XOR位元)。同位資訊可以對應於將被寫存儲介質的平面或晶元的數據以及被寫到存儲介質的至少一個其他平面或至少一個其他晶元的其他數據。例如,同位數據可以對應於跨越NAND快閃記憶體的多個晶元或平面的RAID條帶的數據成員的XOR位元。 At 604, parity information is determined using a parity-based encoder for data stored to the write buffer. Before or during determination of parity information, data may be transferred to the storage system's internal buffer or storage medium. Parity-based encoders may include RAID encoders with XOR engines or XOR buffers for determining parity information (eg, XOR bits). The parity information may correspond to data to be written to a plane or die of the storage medium and other data to be written to at least one other plane or at least one other die of the storage medium. For example, parity data may correspond to XOR bits of data members of a RAID stripe spanning multiple dies or planes of NAND flash memory.

在606處,針對數據的同位資訊被存儲到基於同位的編碼器的緩衝區中。同位資訊可以基於數據被編程到的存儲介質中的相應平面來被存儲到緩衝區的平面。備選地或附加地,針對數據和其他數據的同位資訊可以被保持在基於同位的編碼器的緩衝區中,直到同位資訊成功地被編程到存儲介質中為止。 At 606, parity information for the data is stored into the parity-based encoder's buffer. Parity information may be stored into planes of the buffer based on the corresponding plane in the storage medium into which the data is programmed. Alternatively or additionally, parity information for data and other data may be maintained in a buffer of the parity-based encoder until the parity information is successfully programmed into the storage medium.

在608處,回應於同位資訊的確定,寫緩衝區被釋放。在數據被完全編程到存儲介質中之前,寫緩衝區被釋放。基於同位的編碼器可以提供指示對同位資訊的確定的完成的通知。在一些情況下,基於同位的編碼器被監測以檢測何時對同位資訊的確定或計算完成和/或被存儲到基於同位的編碼器的緩衝區中。回應於通知或檢測到同位資訊的完成的確定,通知或中斷可以被發送到存儲控制器的固件以引起寫緩衝區的釋放。當被釋放,寫緩衝區可用於重用,諸如從主機介面接收後續數據。 At 608, in response to the determination of parity information, the write buffer is released. The write buffer is released before the data is completely programmed into the storage medium. Parity-based encoders can provide notification indicating the completion of a determination of parity information. In some cases, the parity-based encoder is monitored to detect when determination or calculation of parity information is complete and/or stored in the parity-based encoder's buffer. In response to a notification or detection of a determination that parity information is complete, a notification or interrupt may be sent to the memory controller's firmware to cause the write buffer to be released. When freed, the write buffer is available for reuse, such as receiving subsequent data from the host interface.

在610處,在寫緩衝區從存儲數據中被釋放之後,數據的至少一部分被寫到存儲介質。因為在確定同位資訊之後寫緩衝區被釋放,所以在數據被寫到或編程到存儲介質之前寫緩衝區可以被釋放。這樣,在釋放寫緩衝區之 後,可以繼續向存儲介質寫或編程數據。在編程故障的情況下,數據可以基於同位資訊並且不使用先前在寫緩衝區中所保持的數據來恢復。 At 610, after the write buffer is released from storing the data, at least a portion of the data is written to the storage medium. Because the write buffer is released after parity information is determined, the write buffer can be released before data is written or programmed to the storage medium. In this way, after releasing the write buffer After that, you can continue to write or program data to the storage medium. In the event of a programming failure, data can be recovered based on parity information and without using data previously held in the write buffer.

可選地在612處,在完成數據到存儲介質的寫之前,其他數據被存儲到寫緩衝區。如所指出的,數據的編程可以在釋放寫緩衝區之後繼續,其可以被存儲控制器的固件或其他元件自由地重用。在一些情況下,在將先前的數據被編程到存儲介質時,附加的數據被存儲到寫緩衝區。通過使寫緩衝區自由和重用寫緩衝區,自我調整緩衝區釋放的各個方面可以改進寫緩衝區利用率或增加存儲介質的寫輸送量。 Optionally at 612, prior to completing the writing of the data to the storage medium, additional data is stored to the write buffer. As noted, programming of data can continue after the write buffer is released, which can be freely reused by the memory controller's firmware or other elements. In some cases, additional data is stored to the write buffer while previous data is programmed to the storage medium. Self-tuning aspects of buffer release can improve write buffer utilization or increase the write throughput of a storage medium by freeing the write buffer and reusing the write buffer.

圖7描繪了用於基於同位資訊的計算來釋放寫緩衝區的示例方法700,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132和/或RAID編碼器134執行的或與其一起執行的操作。 7 depicts an example method 700 for freeing a write buffer based on calculation of parity information, including performed by or in conjunction with the media write manager 130, write buffer 132, and/or RAID encoder 134 of a storage media controller. The operation performed.

在702處,來自主機系統的數據在寫緩衝區處被接收。數據從主機系統通過存儲控制器的主機介面被接收。在一些情況下,數據作為I/O命令的一部分從主機系統被接收或獲取,以將數據寫到與存儲控制器關聯的存儲介質。 At 702, data from the host system is received at the write buffer. Data is received from the host system through the storage controller's host interface. In some cases, data is received or obtained from the host system as part of an I/O command to write the data to a storage medium associated with the storage controller.

在704處,數據從寫緩衝區被傳輸到RAID編碼器。通常,數據被傳輸、傳遞或發送到RAID編碼器,而存儲系統的另一內部緩衝區維護數據。換言之,RAID編碼器可以在另一緩衝區保持數據副本或數據被發送到存儲介質以用於編程的同時處理數據。通過這樣做,主機系統可以從數據解脫(例如,快取記憶體開啟模式),並且存儲控制器在數據處理或編程故障的情況下可以具有本機複本。 At 704, data is transferred from the write buffer to the RAID encoder. Typically, data is transferred, passed, or sent to a RAID encoder while another internal buffer of the storage system maintains the data. In other words, the RAID encoder can process the data while keeping a copy of the data in another buffer or while the data is being sent to the storage medium for programming. By doing so, the host system can be freed from the data (eg, cache-on mode) and the storage controller can have a native replica in the event of a data processing or programming failure.

在706處,同位資訊利用RAID編碼器被計算以用於數據。RAID編碼器可以包括用於計算或生成寫緩衝區中的數據的XOR位元的XOR引擎或XOR緩衝區。XOR位元(或針對數據的同位資訊)可以被保持在基於同位的編碼器的緩衝區中。在一些情況下,RAID編碼器被配置為生成中斷或提供對同位 資訊的計算完成的通知。例如,RAID編碼器可以向存儲控制器的固件提供中斷,該中斷指示同位資訊的計算完成和/或針對數據的同位資訊被保持在RAID編碼器的緩衝區中。 At 706, parity information is calculated for the data using the RAID encoder. The RAID encoder may include an XOR engine or XOR buffer for calculating or generating XOR bits of the data in the write buffer. XOR bits (or parity information for data) can be maintained in the parity-based encoder's buffer. In some cases, RAID encoders are configured to generate interrupts or provide support for parity Notification of completion of calculation of information. For example, the RAID encoder may provide an interrupt to the storage controller's firmware that indicates that calculation of the parity information is complete and/or that the parity information for the data is maintained in the RAID encoder's buffer.

在708處,回應於針對數據的同位資訊的計算完成,寫緩衝區被釋放。在釋放寫緩衝區之前,數據可以被複製到存儲系統的另一內部緩衝區或被編程到存儲介質。在數據被完全編程到存儲介質中之前,寫緩衝區可以被釋放。在一些情況下,在開始數據到存儲介質的編程之前,寫緩衝區被釋放。備選地或附加地,回應於RAID編碼器、ECC編碼器或存儲控制器的其他元件所提供的中斷或通知,寫緩衝區可以被釋放。 At 708, in response to completion of calculation of parity information for the data, the write buffer is released. Before releasing the write buffer, the data can be copied to another internal buffer of the storage system or programmed to the storage medium. The write buffer can be released before the data is fully programmed into the storage medium. In some cases, the write buffer is released before programming of data to the storage medium begins. Alternatively or additionally, the write buffer may be released in response to an interrupt or notification provided by the RAID encoder, ECC encoder, or other element of the storage controller.

在710處,數據利用ECC編碼器被編碼,以提供經ECC編碼的數據。ECC編碼器可以在RAID編碼之後或與RAID編碼並行地對數據進行編碼。在一些情況下,在同位資訊根據數據被計算之後,ECC編碼器從RAID編碼器接收數據。 At 710, the data is encoded using an ECC encoder to provide ECC encoded data. The ECC encoder can encode data after RAID encoding or in parallel with RAID encoding. In some cases, the ECC encoder receives data from the RAID encoder after parity information is calculated from the data.

在712處,在寫緩衝區從存儲數據中被釋放後,經ECC編碼數據的至少一部分被寫到存儲介質。因為在確定同位資訊之後寫緩衝區被釋放,所以在數據由ECC編碼器進行ECC編碼之前或與其同時,寫緩衝區被釋放。這樣,在釋放寫緩衝區之後,可能發生或繼續將經ECC編碼的數據寫或編程到存儲介質。在編程故障的情況下,數據可以基於同位資訊並且不使用先前保持在寫緩衝區中的數據而被恢復。 At 712, after the write buffer is released from storing the data, at least a portion of the ECC encoded data is written to the storage medium. Because the write buffer is released after parity information is determined, the write buffer is released before or at the same time as the data is ECC encoded by the ECC encoder. In this way, writing or programming of ECC-encoded data to the storage medium may occur or continue after the write buffer is released. In the event of a programming failure, data can be recovered based on parity information and without using data previously held in the write buffer.

可選地在714處,同位資訊被寫到存儲介質。同位資訊可以被寫存儲介質的任何合適區域,諸如RAID條帶的最後的晶元或平面。通常,當同位資訊由RAID緩衝區保持時,同位資訊可以被寫到RAID條帶的最後的成員。通過這樣做,在存儲介質編程故障的情況下,同位資訊可以從RAID緩衝區中被恢復。 Optionally at 714, parity information is written to the storage medium. Parity information may be written to any suitable area of the storage medium, such as the last die or plane of a RAID stripe. Normally, when parity information is held by the RAID buffer, parity information can be written to the last member of the RAID stripe. By doing this, parity information can be recovered from the RAID buffer in the event of a storage media programming failure.

可選地在716處,其他數據在寫緩衝區處被接收。如所指出的,經ECC編碼的數據的編程可以在釋放寫緩衝區之後繼續,該寫緩衝區自由以由存儲控制器的固件或其他組件重用。在一些情況下,在先前的數據被編程到存儲介質時,其他數據在寫緩衝區處被接收。通過釋放和重用寫緩衝區,自我調整緩衝區釋放的各方面可以改進寫緩衝區利用率或增加存儲介質的寫輸送量。 Optionally at 716, additional data is received at the write buffer. As noted, programming of ECC-encoded data may continue after releasing the write buffer, which is free for reuse by the memory controller's firmware or other components. In some cases, other data is received at the write buffer while previous data is being programmed to the storage medium. Self-tuning aspects of buffer release can improve write buffer utilization or increase the write throughput of a storage medium by freeing and reusing write buffers.

圖8描繪了用於利用基於同位的數據重建從編程故障中恢復的示例方法800,包括由存儲介質控制器的介質寫管理器130、寫緩衝區132和/或RAID編碼器134執行或與其一起執行的操作。 8 depicts an example method 800 for recovering from a programming failure utilizing parity-based data reconstruction, including being performed by or in conjunction with the media write manager 130, write buffer 132, and/or RAID encoder 134 of a storage media controller. The operation performed.

在802處,同位資訊利用RAID編碼器被計算以用於從主機介面所接收的數據。RAID編碼器可以包括用於計算或生成用於寫緩衝區中的數據的XOR位元的XOR引擎或XOR緩衝區。 At 802, parity information is calculated using the RAID encoder for the data received from the host interface. The RAID encoder may include an XOR engine or XOR buffer for calculating or generating XOR bits for writing data in the buffer.

在804處,同位資訊被存儲到RAID編碼器的緩衝區中。XOR位元(或針對數據的同位資訊)可以被保持在基於同位的編碼器的緩衝區中。在一些情況下,RAID編碼器被配置為生成中斷或提供同位資訊的計算完成的通知。 At 804, the parity information is stored in the RAID encoder's buffer. XOR bits (or parity information for data) can be maintained in the parity-based encoder's buffer. In some cases, the RAID encoder is configured to generate an interrupt or provide notification that the calculation of parity information is complete.

在806處,在計算同位資訊之後寫緩衝區被釋放。在數據被完全編程到存儲介質中之前,寫緩衝區可以被釋放。備選地或附加地,回應於存儲控制器的RAID編碼器、ECC編碼器、介質寫管理器或其他元件所提供的中斷或通知,寫緩衝區被釋放。 At 806, the write buffer is released after calculating the parity information. The write buffer can be released before the data is fully programmed into the storage medium. Alternatively or additionally, the write buffer is released in response to an interrupt or notification provided by the storage controller's RAID encoder, ECC encoder, media write manager, or other element.

在808處,啟動數據到存儲介質的區域的編程。數據可以被釋放到存儲介質介面以用於編程到存儲介質的區域(例如,塊、平面或晶元)。在一些情況下,數據經由存儲控制器的快閃記憶體介面被發送到快閃記憶體控制器,以用於編程到快閃記憶體的區域。例如,提供有數據的介質I/O可以指定快閃記憶體控制器將數據寫存儲介質的平面。 At 808, programming of data to the area of the storage medium is initiated. Data may be released to the storage medium interface for programming to a region of the storage medium (eg, block, plane, or die). In some cases, data is sent to the flash memory controller via the memory controller's flash memory interface for programming to a region of flash memory. For example, a media I/O provided with data may designate a plane on which the flash memory controller writes data to the storage medium.

在810處,針對數據到存儲介質的編程,編程故障被檢測到。編程故障可以包括頁面故障、塊故障、平面故障、晶元故障等。在寫緩衝區從存儲數據中被釋放之後,編程故障可以被檢測到。 At 810, a programming failure is detected for programming of data to the storage medium. Programming faults can include page faults, block faults, plane faults, wafer faults, etc. Programming failures can be detected after the write buffer is released from storing data.

在812處,數據基於同位資訊和來自存儲介質的其他區域的相應數據被重建。通過實現RAID,存儲控制器可以基於RAID緩衝區中的同位資訊和來自RAID條帶的其他成員(例如,晶元或平面)的數據來重建編程故障的丟失數據。通過這樣做,存儲控制器能夠重建先前由釋放的寫緩衝區所保持的數據。 At 812, the data is reconstructed based on the parity information and corresponding data from other areas of the storage medium. By implementing RAID, the storage controller can reconstruct lost data from a programming failure based on parity information in the RAID buffer and data from other members of the RAID stripe (e.g., die or planes). By doing so, the storage controller is able to reconstruct the data previously held by the freed write buffer.

在814,重建的數據被編程到存儲介質的不同區域。在編程故障的情況下,存儲控制器能夠重建由於編程故障而丟失的數據,並且嘗試將數據重新編程到存儲介質的不同區域,這可以確保由存儲控制器所管理的數據的可靠性。備選地或附加地,如果在嘗試將同位資訊寫到RAID條帶的最後的成員時發生編程故障,則RAID緩衝區的同位資訊還可以被重新編程到存儲介質的不同區域。如所指出的,同位資訊被保持在RAID緩衝區中,直到成功完成到存儲介質的編程為止,以確保從這樣的編程故障中恢復的能力。備選地,RAID緩衝區還可以在條帶被重新分配並且使其同位資訊重新生成時被釋放。 At 814, the reconstructed data is programmed to a different area of the storage medium. In the event of a programming failure, the storage controller is able to reconstruct the data lost due to the programming failure and attempt to reprogram the data to a different area of the storage medium, which can ensure the reliability of the data managed by the storage controller. Alternatively or additionally, the RAID buffer's parity information may also be reprogrammed to a different area of the storage medium if a programming failure occurs while trying to write the parity information to the last member of the RAID stripe. As noted, parity information is maintained in the RAID buffer until programming to the storage medium is successfully completed to ensure the ability to recover from such programming failures. Alternatively, the RAID buffer can be released when the stripe is reallocated and its parity information is regenerated.

系統單晶片SoC

圖9示出了示例性系統單晶片(SoC)900,其可以實現利用自我調整寫緩衝區釋放的存儲介質編程的各個方面。SoC 900可以在任何合適的系統或設備中實現,諸如智慧手機、上網本、平板電腦、接入點、網路附接存儲裝置、相機、智慧設備、印表機、機上盒、伺服器、數據中心、固態驅動器(SSD)、硬碟驅動器(HDD)、存儲驅動器陣列、記憶體模組、汽車計算系統或任何其他合適類型的設備(例如本文所述的其他設備)。儘管參考SoC進行了描述,但是圖9的實體也可以被實現為其他類型的積體電路或嵌入式系統,諸如專用積體電路(ASIC)、記憶體控制器、存儲控制器、通信控制器、專用標準產品(ASSP)、 數位訊號處理器(DSP)、可編程SoC(PSoC)、系統級封裝(SiP)或現場可編程閘陣列(FPGA)。 Figure 9 illustrates an example system on chip (SoC) 900 that can implement various aspects of storage media programming utilizing self-adjusting write buffer release. SoC 900 can be implemented in any suitable system or device, such as smartphones, netbooks, tablets, access points, network attached storage, cameras, smart devices, printers, set-top boxes, servers, data center, solid state drive (SSD), hard disk drive (HDD), storage drive array, memory module, automotive computing system, or any other suitable type of device (such as other devices described herein). Although described with reference to an SoC, the entities of Figure 9 may also be implemented as other types of integrated circuits or embedded systems, such as application specific integrated circuits (ASICs), memory controllers, storage controllers, communications controllers, Specialized Standard Products (ASSP), Digital signal processor (DSP), programmable SoC (PSoC), system-in-package (SiP) or field-programmable gate array (FPGA).

SoC 900可以與電子電路、微處理器、記憶體、輸入-輸出(I/O)控制邏輯、通信介面、固件和/或用於提供計算設備、主機系統或存儲系統的功能的軟體(諸如本文描述的設備或元件(例如存儲驅動器或存儲陣列)中的任何一項)集成在一起。SoC 900還可以包括集成數據匯流排或互連結構(未示出),其耦接SoC的各種元件以用於控制元件之間的信令、數據通信和/或路由。可以通過外部埠、並行數據介面、串列數據介面、基於結構的介面、週邊元件介面或任何其他合適的數據介面來公開或存取SoC 900的集成數據匯流排、互連結構或其他元件。例如SoC 900的元件可以通過外部介面或片外數據介面來存取或控制外部存儲介質。 SoC 900 may interface with electronic circuitry, a microprocessor, memory, input-output (I/O) control logic, communications interfaces, firmware, and/or software for providing functionality of a computing device, host system, or storage system (such as herein). Any of the described devices or elements (such as a storage drive or storage array) are integrated together. SoC 900 may also include an integrated data bus or interconnect fabric (not shown) that couples the various elements of the SoC for signaling, data communication, and/or routing between control elements. The integrated data bus, interconnect fabric, or other components of SoC 900 may be exposed or accessed through an external port, parallel data interface, serial data interface, fabric-based interface, peripheral device interface, or any other suitable data interface. For example, components of the SoC 900 can access or control external storage media through an external interface or an off-chip data interface.

在該示例中,SoC 900包括各種元件,諸如輸入-輸出(I/O)控制邏輯902和基於硬體的處理器904(處理器904),諸如微處理器、處理器核、應用處理器、DSP等。SoC 900還包括任何類型的記憶體906,其可包括RAM、SRAM、DRAM、非易失性記憶體、ROM、一次性可編程(OTP)記憶體、多次可編程(MTP)記憶體、快閃記憶體和/或其他合適的電子數據存儲裝置和/或其組合。在一些方面,處理器904和存儲在記憶體906上的代碼被實現為存儲系統控制器或存儲聚合器,以提供與利用自我調整寫緩衝區釋放的存儲介質編程相關聯的各種功能。在本公開的上下文中,記憶體906經由非暫態信號存儲數據、代碼、指令或其他資訊,並且不包括載波或暫態信號。替代地或另外地,SoC 900可以包括用於存取附加的或可擴展的片外存儲介質的數據介面(未示出),諸如固態記憶體(例如快閃記憶體或NAND記憶體)、基於磁性的記憶體介質,或基於光學的記憶體介質。 In this example, SoC 900 includes various elements, such as input-output (I/O) control logic 902 and a hardware-based processor 904 (processor 904), such as a microprocessor, a processor core, an application processor, DSP etc. SoC 900 also includes any type of memory 906, which may include RAM, SRAM, DRAM, non-volatile memory, ROM, one-time programmable (OTP) memory, multiple-time programmable (MTP) memory, fast Flash memory and/or other suitable electronic data storage devices and/or combinations thereof. In some aspects, processor 904 and code stored on memory 906 are implemented as a storage system controller or storage aggregator to provide various functions associated with storage media programming utilizing self-adjusting write buffer release. In the context of this disclosure, memory 906 stores data, code, instructions or other information via non-transitory signals and does not include carrier waves or transient signals. Alternatively or additionally, SoC 900 may include a data interface (not shown) for accessing additional or expandable off-chip storage media, such as solid-state memory (eg, flash memory or NAND memory), based on Magnetic memory media, or optically based memory media.

SoC 900還可以包括固件908、應用、程式、軟體和/或作業系統,其可以體現為在記憶體906上維護的處理器可執行指令,用於由處理器904執行以實現SoC 900的功能。SoC 900還可以包括其他通信介面,諸如用於控制本地片上(未示出)或片外通信收發機的組件或與本地片上(未示出)或片外通信收發機的元件通信的收發機介面。替代地或另外地,收發機介面還可包括或實現信號介面以片外傳送射頻(RF)、中頻(IF)或基帶頻率信號,以促進通過收發機、實體層收發機(PHY)或者耦接到SoC 900的介質存取控制器(MAC)的有線或無線通訊。例如SoC 900可以包括收發機介面,其被配置為允許通過有線或無線網路進行存儲,諸如以提供能夠利用自我調整寫緩衝區釋放來實現存儲介質編程的網路附接存儲(NAS)卷。 SoC 900 may also include firmware 908 , applications, programs, software, and/or operating systems, which may be embodied as processor-executable instructions maintained on memory 906 for execution by processor 904 to implement the functions of SoC 900 . SoC 900 may also include other communication interfaces, such as a transceiver interface for controlling or communicating with components of a local on-chip (not shown) or off-chip communication transceiver. . Alternatively or additionally, the transceiver interface may also include or implement signaling interfaces to carry radio frequency (RF), intermediate frequency (IF), or baseband frequency signals off-chip to facilitate communication through the transceiver, physical layer transceiver (PHY), or coupling Wired or wireless communication to SoC 900's Media Access Controller (MAC). For example, SoC 900 may include a transceiver interface configured to allow storage over a wired or wireless network, such as to provide a network-attached storage (NAS) volume that enables storage media programming with self-adjusting write buffer release.

SoC 900還包括介質寫管理器130、寫緩衝區132和RAID編碼器134,其可以如所示分離地實現,也可以與存儲元件、數據介面組合在一起,也可以通過片外介面可存取。根據利用自我調整寫緩衝區釋放的存儲介質編程的各個方面,介質寫管理器130可以與RAID編碼器134交互以計算用於寫緩衝區132中所存儲的數據的同位資訊。然後,回應於同位資訊的計算,介質寫管理器可以釋放寫緩衝區,從而在數據被編程到存儲介質之前或同時釋放寫緩衝區132以供重用。通過這樣做,寫緩衝區的自我調整釋放可以導致改進的寫緩衝區利用率和增加的存儲介質寫輸送量。如參考本文所呈現的各個方面所描述的,這些實體中的任何實體可以被體現為不同的或組合的元件。參考圖1的環境100的相應元件或實體、圖2至圖5D中所示的相應配置和/或圖6至圖8中所示的方法描述了這些元件和/或實體或相應功能的示例。介質寫管理器130的全部或部分可以被實現為由記憶體906維護並且由處理器904執行的處理器可執行指令,以利用自我調整寫緩衝區釋放來實現存儲介質編程的各個方面和/或特徵。 SoC 900 also includes a media write manager 130, a write buffer 132, and a RAID encoder 134, which may be implemented separately as shown, may be combined with storage elements, data interfaces, or may be accessible through an off-chip interface . In accordance with aspects of storage media programming utilizing self-adjusting write buffer release, media write manager 130 may interact with RAID encoder 134 to calculate parity information for data stored in write buffer 132 . Then, in response to the computation of parity information, the media write manager may release the write buffer, thereby releasing write buffer 132 for reuse before or while data is programmed to the storage medium. By doing so, self-adjusting release of write buffers can result in improved write buffer utilization and increased storage medium write throughput. Any of these entities may be embodied as distinct or combined elements, as described with reference to the various aspects presented herein. Examples of these elements and/or entities or corresponding functions are described with reference to the corresponding elements or entities of the environment 100 of FIG. 1 , the corresponding configurations shown in FIGS. 2 to 5D , and/or the methods shown in FIGS. 6 to 8 . All or portions of media write manager 130 may be implemented as processor-executable instructions maintained by memory 906 and executed by processor 904 to implement various aspects of storage media programming and/or utilizing self-adjusting write buffer release. Characteristics.

介質寫管理器130可以獨立地或與任何適當的元件或電路系統組合地被實現以實現本文描述的各方面。例如,介質寫管理器130可以被實現為DSP、處理器/存儲橋、I/O橋、圖形處理單元,記憶體控制器、存儲控制器、算數邏輯單位(ALU)等的一部分。介質寫管理器130還可以內部與SoC 900的其他實體一起被提供,諸如與SoC 900的處理器904、記憶體906、存儲介質介面或固件908集成在一起。備選地或附加地,SoC 900的介質寫管理器130、RAID編碼器134、RAID編碼器134和/或其他元件可以被實現為硬體、固件,固定邏輯電路或其任何組合。 Media write manager 130 may be implemented independently or in combination with any suitable components or circuitry to implement the aspects described herein. For example, media write manager 130 may be implemented as part of a DSP, processor/memory bridge, I/O bridge, graphics processing unit, memory controller, storage controller, arithmetic logic unit (ALU), etc. Media write manager 130 may also be provided internally with other entities of SoC 900, such as integrated with processor 904, memory 906, storage media interface, or firmware 908 of SoC 900. Alternatively or additionally, media write manager 130, RAID encoder 134, RAID encoder 134, and/or other elements of SoC 900 may be implemented as hardware, firmware, fixed logic circuitry, or any combination thereof.

作為另一示例,考慮圖10,其示出了根據利用自我調整寫緩衝區釋放的存儲介質編程的一個或多個方面的示例存儲系統控制器1000。在各個方面,存儲系統控制器1000或其元件的任何組合可以被實現為用於固態存儲介質或其他類型的存儲介質的存儲驅動器控制器、存儲介質控制器、NAS控制器、結構介面、NVMe目標或存儲聚合控制器。在一些情況下,類似於或參考圖9所描述的SoC 900的元件,存儲系統控制器1000被實現。換言之,SoC 900的實例可以被配置為存儲系統控制器,諸如存儲系統控制器1000,以用於管理固態(例如,基於NAND快閃記憶體的)介質。 As another example, consider Figure 10, which illustrates an example storage system controller 1000 in accordance with one or more aspects of storage media programming utilizing self-adjusting write buffer release. In various aspects, storage system controller 1000 or any combination of elements thereof may be implemented as a storage drive controller, storage media controller, NAS controller, fabric interface, NVMe target for solid state storage media or other types of storage media. or storage aggregation controller. In some cases, storage system controller 1000 is implemented similar to or with reference to elements of SoC 900 described in FIG. 9 . In other words, an instance of SoC 900 may be configured as a storage system controller, such as storage system controller 1000, for managing solid-state (eg, NAND flash memory-based) media.

在該示例中,存儲系統控制器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內或通過其的數據移動。 In this example, storage system controller 1000 includes input/output (I/O) control logic 1002 and a processor 1004, such as a microprocessor, processor core, application processor, DSP, or the like. In some aspects, the processor 1004 and firmware of the storage system controller 1000 may be implemented to provide various functions associated with storage media programming utilizing self-adjusting write buffer release, such as described with reference to any of methods 600-800 those functions. Storage system controller 1000 also includes a host interface 1006 (eg, SATA, PCIe, NVMe, or fabric interface) and a storage media interface 1008 (eg, NAND interface) that enable access to the host system and storage media, respectively. Storage system controller 1000 also includes flash translation layer 1010 (FTL 1010), device level manager 1012, and I/O scheduler (not shown). In some aspects of storage media programming utilizing self-adjusting write buffer release, FTL 1010 processes write commands received via host interface 1006 to manage the movement of data within or through storage system controller 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執行的處理器可執行指令,以實現利用自我調整寫緩衝區釋放的存儲介質編程的各個方面和/或特徵。 Storage system controller 1000 also includes instances of media write manager 130 , write buffer 132 , RAID encoder 134 , and ECC encoder 220 . Any or all of these elements may be implemented separately as shown, or may be implemented in conjunction with processor 1004, host interface 1006, storage media interface 1008, flash memory translation layer 1010, device level manager 1012, and/or or I/O scheduler combined together. Examples of these elements and/or entities or corresponding functions are described with reference to corresponding elements or entities of environment 100 of FIG. 1 or corresponding configurations shown in FIGS. 2-5D. In accordance with aspects of storage media programming utilizing self-adjusting write buffer release, media write manager 130 may interact with RAID encoder 134 for computing parity information for data stored in write buffer 132 . The media write manager may then release the write buffer in response to the computation of parity information, thereby freeing the write buffer 132 for reuse before or while data is programmed to the storage medium. By doing so, self-adjusting release of write buffers can result in improved write buffer utilization and increased storage medium write throughput. Media write manager 130 may be implemented in whole or in part as processor-executable instructions maintained by memory of the controller and executed by processor 1004 to implement various aspects of storage media programming utilizing self-adjusting write buffer release and /or features.

儘管用結構特徵和/或方法操作專用的語言描述了本主題,但應理解,所附申請專利範圍中定義的主題不必限於本文所描述的具體示例、特徵或操作,包括它們被執行的順序。 Although the subject matter has been described in language specific to structural features and/or methodological operations, it should be understood that the subject matter defined in the patent scope of the appended claims is not necessarily limited to the specific examples, features or operations described herein, including the order in which they are performed.

130:存儲介質寫管理器 130:Storage media write manager

132:寫緩衝區 132:Write buffer

134:RAID編碼器 134:RAID encoder

204:快閃記憶體設備 204:Flash memory device

208:介質介面 208:Media interface

220:改錯碼編碼器 220: Error correction code encoder

302:固件 302: Firmware

304:硬體 304:Hardware

306:RAID緩衝區 306: RAID buffer

308:主機介面驅動器 308: Host interface driver

310:主機命令處理器 310: Host command processor

312:介質介面驅動器 312:Media interface drive

314:介質命令管理器 314:Media Command Manager

316:主機輸入/輸出命令(主機I/O) 316: Host input/output command (host I/O)

318:數據 318:Data

318-0~318-3、318-2n:數據 318-0~318-3, 318-2n: data

320:快閃記憶體轉換層 320: Flash Memory Translation Layer

322:介質輸入/輸出命令(介質I/O) 322:Media input/output command (Media I/O)

324:數據 324:Data

Claims (20)

一種用於利用自我調整寫緩衝區釋放的存儲介質編程方法,包括:將數據存儲到一寫緩衝區,所述數據是接收自一存儲系統的一主機介面,所述存儲系統包括存儲介質;利用一基於同位的編碼器來確定存儲到所述寫緩衝區的所述數據之同位資訊;回應於所述數據之所述同位資訊的確定完成,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述存儲系統的所述存儲介質。 A storage medium programming method for utilizing self-adjusting write buffer release, including: storing data into a write buffer, the data being received from a host interface of a storage system, the storage system including a storage medium; utilizing a parity-based encoder to determine parity information for the data stored in the write buffer; responsive to completion of the determination of the parity information for the data, releasing the write buffer; and in the write buffer After the area is released from storing the data, at least a portion of the data is written to the storage medium of the storage system. 根據請求項1所述的方法,其中所述數據是第一數據,並且所述方法進一步包括在完成將所述第一數據寫到所述存儲系統的所述存儲介質之前,將第二數據存儲到所述寫緩衝區。 The method of claim 1, wherein the data is first data, and the method further includes storing the second data before completing writing the first data to the storage medium of the storage system. to the write buffer. 根據請求項1所述的方法,進一步包括在所述數據被寫到所述存儲介質的同時,將所述數據之所述同位資訊存儲到與所述基於同位的編碼器相關聯的一緩衝區中。 The method according to claim 1, further comprising storing the parity information of the data into a buffer associated with the parity-based encoder while the data is written to the storage medium. middle. 根據請求項3所述的方法,進一步包括:將所述同位資訊從與所述基於同位的編碼器相關聯的所述緩衝區寫到所述存儲系統的所述存儲介質;或者在完成將所述數據寫到所述存儲系統的所述存儲介質時,從與所述基於同位的編碼器相關聯的所述緩衝區中刪除所述同位資訊。 The method according to claim 3, further comprising: writing the parity information from the buffer associated with the parity-based encoder to the storage medium of the storage system; or after completing the process of writing the parity information to the storage medium of the storage system; When the data is written to the storage medium of the storage system, the parity information is deleted from the buffer associated with the parity-based encoder. 根據請求項1所述的方法,進一步包括: 經由一改錯碼(ECC)編碼器對所述數據進行編碼,以提供經ECC編碼的數據;以及將所述經ECC編碼的數據寫到所述存儲系統的所述存儲介質。 According to the method described in request item 1, further comprising: Encoding the data via an error correction code (ECC) encoder to provide ECC-encoded data; and writing the ECC-encoded data to the storage medium of the storage system. 根據請求項5所述的方法,其中所述數據從所述基於同位的編碼器被傳輸到所述ECC編碼器,並且所述方法進一步包括:監測所述基於同位的編碼器,以檢測所述同位資訊的確定完成;以及在所述數據被傳輸到所述ECC編碼器之後,回應於所述同位資訊的確定完成,通知所述存儲系統的固件釋放所述寫緩衝區。 The method of claim 5, wherein the data is transmitted from the parity-based encoder to the ECC encoder, and the method further includes: monitoring the parity-based encoder to detect the Determination of parity information is completed; and after the data is transmitted to the ECC encoder, in response to completion of determination of parity information, notifying firmware of the storage system to release the write buffer. 根據請求項1所述的方法,其中所述基於同位的編碼器是所述存儲系統的一獨立磁碟容錯陣列(RAID)編碼器,並且所述同位資訊包括由所述RAID編碼器針對所述數據所計算的XOR同位位元。 The method of claim 1, wherein the parity-based encoder is a RAID encoder of the storage system, and the parity information includes the parity information generated by the RAID encoder for the The calculated XOR bits of the data. 根據請求項1所述的方法,其中:所述存儲介質是快閃記憶體;所述數據被寫到所述快閃記憶體的一平面或所述快閃記憶體的一晶元;以及所述同位資訊係對應於被寫到所述快閃記憶體的所述平面或所述晶元的所述數據、以及被寫到所述快閃記憶體的至少一個其他平面或至少一個其他晶元的其他數據。 The method according to claim 1, wherein: the storage medium is a flash memory; the data is written to a plane of the flash memory or a wafer of the flash memory; and the The parity information corresponds to the data written to the plane or the die of the flash memory and to at least one other plane or at least one other die of the flash memory. of other data. 根據請求項1所述的方法,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的一區域,並且所述方法進一步包括:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的數據寫到所述存儲介質的一不同區域。 The method of claim 1, wherein the data is written to an area of the storage medium as part of a storage medium programming operation, and the method further includes: detecting that the data is written to the storage medium failure of the programming operation of the region; reconstructing the data based on the parity information and corresponding data from other regions of the storage medium; and writing the reconstructed data to a different location of the storage medium area. 一種用於利用自我調整寫緩衝區釋放的存儲介質編程裝置,包括:一主機介面,所述主機介面係配置以與一主機系統通信;寫緩衝區,所述寫緩衝區可操作地耦接到所述主機介面;存儲介質;一介質介面,所述介質介面被配置以實現對所述存儲介質的存取;一基於同位的編碼器;以及一介質寫管理器,所述介質寫管理器被配置為:經由所述寫緩衝區中的一個寫緩衝區來從所述主機介面接收數據;經由所述基於同位的編碼器來計算由所述寫緩衝區所接收的所述數據之同位資訊;將所述同位資訊存儲到所述基於同位的編碼器的一緩衝區;回應於所述數據之所述同位資訊的計算,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述裝置的所述存儲介質。 A storage medium programming device for utilizing self-adjusting write buffer release, comprising: a host interface configured to communicate with a host system; a write buffer operably coupled to The host interface; storage medium; a media interface configured to achieve access to the storage medium; a parity-based encoder; and a media write manager, the media write manager is Configured to: receive data from the host interface via one of the write buffers; and calculate parity information of the data received by the write buffer via the parity-based encoder; storing the parity information in a buffer of the parity-based encoder; releasing the write buffer in response to calculation of the parity information for the data; and storing the parity information in the write buffer After the data is released, at least a portion of the data is written to the storage medium of the device. 根據請求項10所述的裝置,其中所述數據是第一數據,並且所述介質寫管理器進一步被配置為在完成將所述第一數據寫到所述裝置的所述存儲介質之前,經由被釋放的所述寫緩衝區來接收第二數據。 The apparatus of claim 10, wherein the data is first data, and the media write manager is further configured to, before completing writing the first data to the storage medium of the apparatus, via The write buffer is released to receive the second data. 根據請求項10所述的裝置,其中所述介質寫管理器進一步被配置為:將所述同位資訊從所述基於同位的編碼器的所述緩衝區寫到所述裝置的所述存儲介質或所述裝置的另一記憶體;或者在完成將所述數據寫到所述裝置的所述存儲介質時,從所述基於同位的編碼器的所述緩衝區中清除所述同位資訊。 The device of claim 10, wherein the media write manager is further configured to: write the parity information from the buffer of the parity-based encoder to the storage medium of the device or Another memory of the device; or clearing the parity information from the buffer of the parity-based encoder when completing writing the data to the storage medium of the device. 根據請求項10所述的裝置,進一步包括一改錯碼(ECC)編碼器,並且其中所述介質寫管理器進一步被配置為:經由所述ECC編碼器來對所述數據進行編碼,以提供經ECC編碼的數據;以及將所述經ECC編碼的數據寫到所述裝置的所述存儲介質。 The apparatus of claim 10, further comprising an error correction code (ECC) encoder, and wherein the media write manager is further configured to: encode the data via the ECC encoder to provide ECC-encoded data; and writing the ECC-encoded data to the storage medium of the device. 根據請求項10所述的裝置,其中所述數據從所述基於同位的編碼器被發送到所述ECC編碼器,並且所述介質寫管理器進一步被配置為:從所述基於同位編碼器接收一通知,所述通知指示所述同位資訊的確定完成;以及在所述數據被發送到所述ECC編碼器之後,生成對所述裝置的固件的一中斷,以引起所述寫緩衝區的釋放。 The apparatus of claim 10, wherein the data is sent from the parity-based encoder to the ECC encoder, and the media write manager is further configured to: receive from the parity-based encoder a notification indicating that the determination of the parity information is complete; and after the data is sent to the ECC encoder, generating an interrupt to the firmware of the device to cause a release of the write buffer . 根據請求項10所述的裝置,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的一區域,並且所述介質寫管理器進一步被配置為:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的數據寫到所述存儲介質的一不同區域。 The apparatus of claim 10, wherein the data is written to an area of the storage medium as part of a storage medium programming operation, and the media write manager is further configured to: detect that the data is written failure of the programming operation to the region of the storage medium; reconstructing the data based on the parity information and corresponding data from other regions of the storage medium; and writing the reconstructed data to the A different area of storage media. 一種系統單晶片(SoC),包括:一主機介面,所述主機介面與一主機系統通信;寫緩衝區,所述寫緩衝區可操作地耦接於所述主機介面;一介質介面,所述介質介面用於存取一存儲系統的存儲介質;一基於同位的編碼器;一基於硬體的處理器; 一記憶體,所述記憶體存儲處理器可執行指令,所述處理器可執行指令回應於所述基於硬體的處理器的執行而實現一介質寫管理器,用以:將從所述主機介面所接收的數據存儲到所述寫緩衝區中的一個寫緩衝區;經由所述基於同位的編碼器來確定被存儲到所述寫緩衝區的所述數據之同位資訊;回應於所述數據之所述同位資訊的所述確定,釋放所述寫緩衝區;以及在所述寫緩衝區從存儲所述數據中被釋放之後,將所述數據的至少一部分寫到所述存儲介質。 A system on a chip (SoC), including: a host interface, the host interface communicates with a host system; a write buffer, the write buffer is operatively coupled to the host interface; a media interface, the The media interface is used to access the storage medium of a storage system; a parity-based encoder; a hardware-based processor; a memory storing processor-executable instructions that implement a media write manager in response to execution by the hardware-based processor to: write data from the host data received by the interface is stored in one of the write buffers; determining parity information of the data stored in the write buffer via the parity-based encoder; responding to the data based on the determination of the parity information, releasing the write buffer; and writing at least a portion of the data to the storage medium after the write buffer is released from storing the data. 根據請求項16所述的系統單晶片,其中所述數據是第一數據,並且所述介質寫管理器進一步被實現為在完成所述第一數據到所述存儲系統的所述存儲介質的所述寫之前,將第二數據存儲到所述寫緩衝區。 The system on a chip according to claim 16, wherein the data is first data, and the media write manager is further implemented to complete all writing of the first data to the storage medium of the storage system. Before writing, the second data is stored in the write buffer. 根據請求項16所述的系統單晶片,其中所述介質寫管理器進一步被實現為:在所述數據被寫到所述存儲介質時,將針對所述數據的所述同位資訊存儲到與所述基於同位的編碼器相關聯的緩衝區中;或者將所述同位資訊從與所述基於同位的編碼器相關聯的所述緩衝區寫到所述存儲系統的所述存儲介質。 The system single chip according to claim 16, wherein the media write manager is further implemented to: when the data is written to the storage medium, store the parity information for the data to the same location as the data. into the buffer associated with the parity-based encoder; or write the parity information from the buffer associated with the parity-based encoder to the storage medium of the storage system. 根據請求項16所述的系統單晶片,其中所述介質寫管理器進一步被實現為:從所述基於同位的編碼器接收通知,所述通知指示所述同位資訊的所述確定的完成;以及生成到所述裝置的固件的中斷,以引起所述寫緩衝區的所述釋放。 The system-on-chip of claim 16, wherein the media write manager is further implemented to: receive a notification from the parity-based encoder, the notification indicating completion of the determination of the parity information; and An interrupt is generated to firmware of the device to cause the release of the write buffer. 根據請求項16所述的系統單晶片,其中作為存儲介質編程操作的一部分,所述數據被寫到所述存儲介質的區域,並且所述介質寫管理器進一步被配置為:檢測將所述數據寫到所述存儲介質的所述區域的所述編程操作的失敗;基於所述同位資訊和來自所述存儲介質的其他區域的相應數據來重建所述數據;以及將經重建的所述數據寫到所述存儲介質的一不同區域。 The system-on-chip of claim 16, wherein the data is written to an area of the storage medium as part of a storage medium programming operation, and the media write manager is further configured to: detect that the data failure of the programming operation to write to the region of the storage medium; reconstructing the data based on the parity information and corresponding data from other regions of the storage medium; and writing the reconstructed data to a different area of the storage medium.
TW109100893A 2019-01-11 2020-01-10 Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof TWI814975B (en)

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 (en) 2020-11-16
TWI814975B true TWI814975B (en) 2023-09-11

Family

ID=69159564

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109100893A TWI814975B (en) 2019-01-11 2020-01-10 Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof

Country Status (5)

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

Families Citing this family (13)

* 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 (en) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 Memory controller and data processing method
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
TW202225987A (en) 2020-12-21 2022-07-01 韓商愛思開海力士有限公司 Method for assigning a plurality of channels of a storage device for stream data writing, storage device and storage medium thereof
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
CN117251107B (en) * 2023-06-27 2024-04-16 北京忆芯科技有限公司 Method for reducing page stripe write operation performance fluctuation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201640358A (en) * 2015-05-07 2016-11-16 三星電子股份有限公司 Data storage method, memory module and data storage system
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
US8571745B2 (en) 2008-04-10 2013-10-29 Robert Todd Pack Advanced behavior engine
JP5186982B2 (en) 2008-04-02 2013-04-24 富士通株式会社 Data management method and switch device
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 (en) 2010-01-20 2015-01-28 日本電気株式会社 NETWORK DEVICE, NETWORK CONFIGURATION METHOD, AND PROGRAM RECORDING MEDIUM CONTAINING NETWORK DEVICE PROGRAM
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
CA2903367A1 (en) 2012-03-06 2013-09-12 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
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
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 (en) 2014-10-31 2018-08-21 华为技术有限公司 Support storage resource access method, storage control and the storage device of SR-IOV
KR102336443B1 (en) 2015-02-04 2021-12-08 삼성전자주식회사 Storage device and user device supporting virtualization function
KR102398213B1 (en) 2015-03-09 2022-05-17 삼성전자주식회사 Storage device, host system having the same and map table updating method thereof
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 (en) 2015-07-22 2022-03-07 삼성전자주식회사 Storage device for supporting virtual machines, storage system including the storage device, and method of the same
KR102519663B1 (en) 2015-07-31 2023-04-07 삼성전자주식회사 Storage device, system including storage device and operating method thereof
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 (en) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 data storage device and data processing system having the same
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
US11048537B2 (en) 2017-11-10 2021-06-29 Microsoft Technology Licensing, Llc Virtual machine compute re-configuration
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 (en) 2018-05-31 2021-02-09 华为技术有限公司 Address translation method, device and system
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
US11429419B2 (en) 2018-08-03 2022-08-30 Nvidia Corporation Secure access of virtual machine memory suitable for AI assisted automotive applications
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state 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 (en) * 2015-05-07 2016-11-16 三星電子股份有限公司 Data storage method, memory module and data storage system
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
EP3680778B1 (en) 2023-09-27
CN111435292A (en) 2020-07-21
EP3680778A1 (en) 2020-07-15
KR20200087713A (en) 2020-07-21
TW202042050A (en) 2020-11-16
US20200225851A1 (en) 2020-07-16
US11481118B2 (en) 2022-10-25

Similar Documents

Publication Publication Date Title
TWI814975B (en) Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof
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
US9263102B2 (en) Apparatus, system, and method for data transformations within a data storage device
KR102107723B1 (en) Memory controller and operating method thereof
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
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
US20190235768A1 (en) Data availability during memory inaccessibility
KR20230078577A (en) Synchronous write method and device, storage system and electronic device
TW202316259A (en) Apparatus and method for controlling a shared memory in a data processing system
US11893270B2 (en) Storage device, and host-storage system including the storage device
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 (en) Operation method of operating host device, and operation method of storage device
US20230325110A1 (en) Operation method of host device and operation method of storage device
CN117472817A (en) Data processing method, device, system and network card
KR20220142521A (en) On-SSD erase coding using unidirectional commands
CN117795466A (en) Access request management using subcommands
KR20230056920A (en) Method of operating storage device and method of operating storage system using the same
KR20220127137A (en) Data storage with specified data transfer rate
CN116893877A (en) Operation method of host device and operation method of storage device