[go: up one dir, main page]

CN111435292B - 利用自适应写缓冲区释放的存储介质编程 - Google Patents

利用自适应写缓冲区释放的存储介质编程 Download PDF

Info

Publication number
CN111435292B
CN111435292B CN202010033035.0A CN202010033035A CN111435292B CN 111435292 B CN111435292 B CN 111435292B CN 202010033035 A CN202010033035 A CN 202010033035A CN 111435292 B CN111435292 B CN 111435292B
Authority
CN
China
Prior art keywords
data
storage medium
write
parity
write buffer
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN202010033035.0A
Other languages
English (en)
Other versions
CN111435292A (zh
Inventor
S·A·克莱因
V-D·阮
G·布德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Marvell Asia Pte Ltd
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 Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Publication of CN111435292A publication Critical patent/CN111435292A/zh
Application granted granted Critical
Publication of CN111435292B publication Critical patent/CN111435292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

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

Abstract

本公开描述了用于利用自适应写缓冲区释放的存储介质编程的装置和方法。在一些方面,存储介质系统的介质写管理器将从主机接口所接收的数据存储到写缓冲区中。介质写管理器确定针对被存储到写缓冲区的数据的奇偶校验信息,然后在完成确定针对数据的奇偶校验信息后释放写缓冲区。然后,在写缓冲区被释放之后,介质写管理器可以将数据的至少一部分写到存储介质。通过在确定奇偶校验信息之后释放存储介质系统的写缓冲区,写缓冲区可以较快地被释放,这可以导致改进的写缓冲区利用率和增加的存储介质系统的写吞吐量。

Description

利用自适应写缓冲区释放的存储介质编程
相关申请的交叉引用
本公开要求2019年1月11提交的美国临时专利申请No.62/791,542的优先权以及2020年1月8日递交的美国专利申请No.16/737,137的优先权,它们的全部内容通过引用而并入本文。
背景技术
许多计算和电子设备都包括用于存储软件、应用或设备数据的非易失性存储器。附加地,大多数用户通过数据网络从各个位置或在移动中利用其设备(诸如多介质内容或社交介质应用)来流式传输数据或访问服务。随着用户对数据和服务的需求不断增长,存储提供方已扩大了存储驱动器的容量和性能,以支持与用户和其他数据存储客户端的这些活动相关联的数据访问。通常,设备的存储驱动器包括设备数据写其中的存储介质。为此,设备向存储驱动器发出写命令,存储驱动器又如由每个命令所指定的来将数据写存储介质。因此,存储驱动器的写性能通常取决于存储驱动器能够完成设备或存储客户端的数据写命令的速率。
存储驱动器通常包括写缓冲区,以用于从设备接收与写命令相对应的数据。然后,存储驱动器将数据从写缓冲区发送到存储介质的编程接口。然而,存储介质的编程或写速度通常比写缓冲区的速度慢得多。附加地,大多数存储驱动器在写缓冲区中保留数据的副本,直到数据被成功编程到存储介质上,以在存储介质编程失败并且数据丢失时实现恢复数据。这样,由于存储介质较慢的编程速度,因此存储驱动器的写缓冲区可能会长时间被保留或占用。这防止了写缓冲区接收后续数据,直到存储介质编程完成为止,这会降低存储驱动器的写吞吐量,或需要增加数量的写缓冲区来维护写吞吐量。
发明内容
提供本发明内容以介绍主题,该主题将在具体实施方式和附图中进一步被描述。因此,该本发明内容不应当被视为描述基本特征,也不应当被用于限制要求保护的主题的范围。
在一些方面,存储介质系统的介质写管理器实现了一种方法,该方法将从包括存储介质的存储系统的主机接口所接收的数据存储到写缓冲区中。该方法经由基于奇偶校验的编码器来确定针对存储到写缓冲区的数据的奇偶校验信息。备选地或附加地,数据可以被传递到存储介质系统的另一内部缓冲区。然后,响应于对针对数据的奇偶校验信息的确定完成,写缓冲区被释放。该方法还包括在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到存储系统的存储介质。
在其他方面,一种装置包括:主机接口,其被配置为与主机系统通信;写缓冲区,其可操作地耦合到主机接口;存储介质;以及介质接口,其被配置为允许访问存储介质。该装置还包括基于奇偶校验的编码器和介质写管理器,该介质写管理器被配置为经由写缓冲区中的一个写缓冲区从主机接口接收数据。介质写管理器经由基于奇偶校验的编码器计算针对由写缓冲区所接收的数据的奇偶校验信息,并且将奇偶校验信息存储到基于奇偶校验的编码器的缓冲区。响应于对针对数据的奇偶校验信息的计算,介质写管理器释放写缓冲区,并且在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到装置的存储介质。
在其他方面,描述了一种片上系统(SoC),其包括与主机系统通信的主机接口、可操作地与主机接口耦合的写缓冲区、用以访问存储系统的存储介质的介质接口以及基于奇偶校验的编码器。SoC还包括基于硬件的处理器和存储处理器可执行指令的存储器,该指令可响应于基于硬件的处理器的执行而实现介质写管理器,以将从主机接口所接收的数据存储到写缓冲区。介质写管理器还经由基于奇偶校验的编码器来确定针对被存储到写缓冲区的数据的奇偶校验信息,并且响应于对针对数据的奇偶校验信息的确定而释放写缓冲区。然后,在写缓冲区从存储数据中被释放之后,介质写管理器将数据的至少一部分写到存储介质。
在附图和以下说明书中阐述了一个或多个实现的细节。根据说明书和附图以及根据权利要求书,其他特征和优点将是明显的。
附图说明
在附图和以下详细说明中,阐述了利用自适应写缓冲区释放的存储介质编程的一个或多个实现的详细信息。在附图中,附图标记的最左边的数字标识该附图标记首次出现的附图。在描述和附图中的不同实例中使用相同的附图标记指示相似的元素:
图1示出了根据本公开的一个或多个方面的示例操作环境,该示例操作环境具有在其中介质写管理器被实现的设备。
图2示出了固态驱动器的示例配置,在其中图1的介质写管理器、写缓冲区和独立磁盘冗余阵列(RAID)编码器根据各个方面被实现。
图3示出了各种硬件和固件组件的示例配置,以用于利用自适应写缓冲区释放来实现存储介质编程的各方面。
图4A至图4E示出了在管芯级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。
图5A至图5D示出了在平面级数据冗余的情况下利用自适应写缓冲区释放的存储介质编程的示例。
图6描绘了根据一个或多个方面的利用自适应写缓冲区释放的存储介质编程的示例方法。
图7描绘了用于基于奇偶校验信息的计算来释放写缓冲区的示例方法。
图8描绘了用于利用基于奇偶校验的数据重建来从编程故障中恢复的示例方法。
图9示出了示例片上系统(SoC)环境,在其中利用自适应写缓冲区释放的存储介质编程的各个方面可以被实现。
图10示出了根据本公开的一个或多个方面的示例存储系统控制器,在其中介质写管理器被实现。
具体实施方式
用于将数据写入到存储介质的传统技术通常将数据保持在写缓冲区中,直到数据被编程到存储介质上为止,这导致存储驱动器的写吞吐量降低或对写缓冲区的要求增加(例如,写缓冲区的数目或大小)。通常,存储驱动器固件被用于以端对端的方式来管理存储驱动器的数据路径,诸如通过转换数据命令并且管理沿着主机接口和存储介质接口之间的数据路径的数据移动。例如,固件可以处理写命令以在主机接口处接收对应的数据,并且将该数据发送到存储介质接口以用于编程到存储介质的适当区域。
许多存储驱动器以“高速缓存开启”模式操作,在该模式中,一旦写命令的数据由存储驱动器的控制器接收到,固件就会向主机发送针对写命令的确认。通常,优选高速缓存开启模式,因为高速缓存开启模式中的写命令延时较短,并且主机无需较快地保持数据。在高速缓存开启模式中,固件通常将数据保持在控制器的写缓冲区中,直到确认从存储介质被接收到为止,该确认指示将数据传递到存储介质的程序操作是成功的。这是必要的,因为在程序故障的情况下(例如,错误的字线或错误的块),固件仍具有数据,并且可能尝试将数据重新编程到存储介质中。
然而,与通过写缓冲区的数据的典型传输时间(其是几十微秒的量级)相比,对存储介质进行编程花费相对较长的时间(三毫秒)。换言之,从主机接收到的数据占据写缓冲区的时长延长了,这主要因为编程故障的偶然性,这是罕见的事件。附加地,由于实际问题,诸如布局面积、数据路径架构、功耗、成本等,由控制器所实现的写缓冲区的数目通常被限制。当控制器的有限写缓冲区不断被等待编程确认的数据占用时,控制器将无法从主机接收附加的数据,直到写缓冲区变为可用为止。这样,写缓冲区的有限数目且低效率利用会给写吞吐量强加上限,并且可以对存储驱动器的写性能产生负面影响。
本公开描述了用于利用自适应写缓冲区释放的存储介质编程的装置和技术。与用于写到存储介质的传统技术相反,所描述的装置和技术可以实现用于存储介质的数据写方案,该数据写方案包括基于奇偶校验的编码(例如,RAID),以在存储介质编程故障的情况下实现数据恢复。通过这样做,一旦奇偶校验信息被计算以用于被写到存储介质的数据,存储控制器的介质写管理器就可以释放写缓冲区。备选地或附加地,在计算奇偶校验信息之前或同时,数据可以被传递到存储介质系统的另一内部缓冲区。换言之,当奇偶校验信息(例如,XOR信息)的RAID计算完成时(例如,数十微秒),写缓冲区被释放,而不是一直保持直到编程成功确认从存储介质被接收到为止(例如,三毫秒)。备选地或附加地,写缓冲区的释放也可以以数据从写缓冲区被复制到存储系统的另一内部缓冲区或用于编程到存储介质的存储介质接口为条件。一旦被释放,则在一些情况下,当先前保持的数据被编程到存储介质的同时,写缓冲区可以从主机接收后续数据。这样,写缓冲区的自适应释放可以导致较有效的写缓冲区利用率和/或使得存储驱动器利用较少或较小的写缓冲区被实现。写缓冲区或写缓冲区大小的这种减小可以进而减小存储控制器的功耗,有利于改进的集成电路布局等。
在利用自适应写缓冲区释放的存储介质编程的各个方面,存储介质系统的介质写管理器将从主机接口所接收的数据存储到写缓冲区。在数据被存储在写缓冲区中的同时,介质写管理器确定针对数据的奇偶校验信息,然后在确定针对数据的奇偶校验信息完成时释放写缓冲区。然后,在写缓冲区被释放之后,介质写管理器可以将数据的至少一部分写到存储介质。通过在确定奇偶校验信息之后释放存储介质系统的写缓冲区,写缓冲区可以较快地自由,这可以引起改进的写缓冲区利用率和增加的存储介质系统的写吞吐量。
以下讨论描述了操作环境、可以在操作环境中采用的技术、以及在其中可以体现操作环境的组件的片上系统(SoC)。在本公开的上下文中,仅通过示例的方式参考操作环境。
操作环境
图1示出了具有主机系统102的示例操作环境100,主机系统102能够存储或访问各种形式的数据或信息。主机系统102的示例可以包括膝上型计算机104、台式计算机106和服务器108,其中任何一项可以被配置作为用户设备、计算设备或作为存储网络或云存储的一部分。主机系统102的其他示例(未示出)可以包括平板计算机、机顶盒、数据存储设备、可穿戴智能设备、电视、内容流设备、高清多媒体接口(HDMI)介质棒、智能家电、家庭自动化控制器、智能恒温器、物联网(IoT)设备、移动互联网设备(MID)、网络附加存储(NAS)驱动器、聚合存储系统、游戏机、汽车娱乐设备、汽车计算系统、汽车控制模块(例如发动机或动力传动控制模块)等。通常,主机系统102可以出于任何合适的目的通信或存储数据,诸如以实现特定类型的设备的功能、提供用户界面、启用网络访问、实现游戏应用、回放介质、提供导航、编辑内容、提供数据存储等。
主机系统102包括处理器110和计算机可读介质112。处理器110可以被实现为任何合适类型或数目的单核或多核的处理器,以用于执行操作系统的指令或命令或主机系统102的其他应用。计算机可读介质112(CRM 112)包括存储器(未示出)和主机系统102的存储系统114。主机系统102的存储器可以包括任何合适的类型的易失性存储器或非易失性存储器或其组合。例如主机系统102的易失性存储器可以包括各种类型的随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)等。非易失性存储器可以包括只读存储器(ROM)、电可擦除可编程ROM(EEPROM)或闪存(例如NAND闪存)。这些存储器个体地或组合地可以存储与用户、应用和/或主机系统102的操作系统相关联的数据。
主机系统102的存储系统114可以被配置为任何合适类型的数据存储系统,诸如存储设备、存储驱动器、存储阵列、存储卷等。尽管参考主机系统102进行了描述,但是存储系统114也可以单独地被实现为独立设备或较大存储集合体的一部分,诸如网络附接的存储设备、外部存储驱动器、数据中心、服务器群或虚拟存储系统(例如,用于基于云的存储或服务)。存储系统114的示例包括非易失性存储器快速(NVMe)固态驱动器116、外围组件互连快速(PCIe)固态驱动器118、固态驱动器120(SSD 120)和存储器阵列122,其可以利用存储设备或存储驱动器的任何组合来实现。
存储系统114包括存储介质124和用于管理存储系统114的各种操作或功能的存储介质控制器126(存储控制器126)。存储介质124可以包括非易失性存储设备,或从其被形成,数据128或主机系统102的信息被存储在该非易失性存储设备上。存储介质124可以利用诸如闪存、NAND闪存、RAM、DRAM(例如,用于高速缓存)、SRAM等的任何类型的固态存储介质或其组合来实现。在一些情况下,被存储到存储介质124的数据128被组织成数据(例如,内容)文件或数据对象,其被存储到存储系统114并且由主机系统102访问。数据128的文件类型、大小或格式可能根据与文件关联的相应来源、用途或应用而有所不同。例如存储到存储系统114的数据128可以包括音频文件、视频文件、文本文件、图像文件、多媒体文件、电子表格等。尽管参考固态存储器进行了描述,但是利用自适应写缓冲区释放的存储介质编程的各方面也可以被植入基于磁性或基于光学的介质类型。
通常,存储控制器126管理存储系统114的操作,并且使得主机系统102能够访问存储介质124以用于数据存储。存储控制器126可以通过硬件、固件或软件的任何适当的组合来实现,以提供存储系统114的各种功能。存储控制器126还可以管理或实施与存储介质124相关联的内部任务或操作,诸如数据高速缓存、数据迁移、垃圾收集、热管理(例如,节流)、功率管理等。这样,存储控制器126可以从主机系统102接收主机I/O以用于数据访问,并且将与存储介质124的内部操作相关联的内部I/O排队(或生成)。
在该示例中,存储控制器126还包括存储介质写管理器130(介质写管理器130)、写缓冲区132和基于奇偶校验的编码器,其被示为独立磁盘冗余阵列(RAID)编码器134。写缓冲区132可以接收或存储从主机系统102所接收的数据,以用于写到存储介质124。RAID编码器134可以计算用于被写到作为RAID条带的一部分的存储介质124的数据的奇偶校验信息(例如,XOR位)。RAID条带的成员或单元可以包括存储介质的任何合适的分区或区域,诸如管芯、平面、块、页面、字线等。通常,由RAID编码器提供的奇偶校验信息可用于与来自其他RAID条带成员的信息结合在一起,以在该成员的编程操作失败时,恢复RAID条带成员的数据。RAID或基于奇偶校验的数据恢复可以提供增强的数据可靠性,并且保护免于存储介质的完全块或页故障。
在各个方面,介质写管理器130可以与RAID编码器134交互以计算针对存储到写缓冲区132的数据的奇偶校验信息。在一些情况下,数据还可以在计算奇偶校验信息之前或其期间被传递到存储介质系统的另一内部缓冲区。如果将数据写到存储介质的编程操作失败,则介质写管理器130可以使用该奇偶校验信息来实现数据恢复,而不是依赖于写缓冲区中保持的数据。因为奇偶校验信息能够实现数据恢复,所以介质写管理器然后可以响应于对奇偶校验信息的计算(和/或数据被传递到另一内部缓冲区或存储介质)而释放写缓冲区,从而使写缓冲区132自由以用于在将数据编程到存储介质之前或在数据被编程到存储介质中时重复使用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。
主机系统102还可以包括I/O端口136、图形处理单元138(GPU138)和数据接口140。通常,I/O端口136允许主机系统102与其他设备、外围设备或用户交互。例如,I/O端口136可以包括通用串行总线、人机接口设备、音频输入、音频输出等或与其耦合。GPU 138处理并且绘制与图形相关的数据以用于主机系统102,诸如操作系统的用户界面元素、应用等。在一些情况下,GPU 138访问本地存储器的一部分以绘制图形,或包括用于绘制主机系统102的图形(例如,视频RAM)的专用存储器。
主机系统102的数据接口140提供到一个或多个网络以及被连接到那些网络的其他设备的连接。数据接口140可以包括有线接口(诸如以太网或光纤接口),以用于通过局域网、内联网或互联网进行通信。备选地或附加地,数据接口140可以包括促进通过无线网络(诸如无线局域网(LAN)、广域无线网络(例如蜂窝网络)和/或无线个人区域网络(WPAN))进行通信的无线接口。根据利用自适应写缓冲区释放的存储介质编程的一个或多个方面,通过I/O端口136或数据接口140传送的任何数据可以被写到主机系统102的存储系统114或从其被读取。
图2在200处图示了固态驱动器202的示例配置,其中介质写管理器、写缓冲区和RAID编码器可以根据一个或多个方面来实现。在该示例中,在被实现为固态存储驱动器(SSD)202的存储系统114的上下文中示出了介质写管理器130和其他组件。SSD 202可以耦合到任何合适的主机系统102,并且植入包括多个NAND闪存设备204-0至204-n的存储介质124,其中n是任何合适的整数。在一些情况下,NAND闪存设备204包括在通道级(设备组)或设备级(个体设备)上可访问或管理的存储设备、管芯或芯片的多个闪存通道。尽管被示为存储控制器126的组件,但是介质写管理器130可以与存储控制器分离地实现或在其外部。在一些情况下,介质写管理器130被实现为存储器接口的一部分(诸如DRAM控制器)或与存储控制器相关联的接口。
通常,SSD 202的操作由存储控制器126的实例启用或管理,在该示例中,该实例存储控制器包括用于实现与主机系统102通信的主机接口206和用于实现访问存储介质124的介质接口208。主机接口206可以被配置为实现任何合适类型的存储接口或协议,诸如串行高级技术附接(SATA)、通用串行总线(USB)、PCIe、高级主机控制器接口(AHCI)、NVMe、Fabric上NVM(NVM-OF)、NVM主机控制器接口规范(NVMHCIS)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、安全数字I/O(SDIO)、光纤通道,其任何组合(例如M.2或下一代形状因子(NGFF)组合接口)等。备选地或附加地,介质接口208可以实现任何合适类型的存储介质接口,诸如闪存接口、闪存总线通道接口、NAND通道接口、物理页面寻址(PPA)接口等。
在各个方面,SSD 202或存储控制器126的组件提供主机接口206到主机系统102和介质接口208到存储介质124之间的数据路径。在该示例中,存储控制器126包括处理器核210,以用于执行内核、固件或驱动器以实现存储控制器126的功能。在一些情况下,处理器核210还可以执行处理器可执行指令以实现存储控制器126的介质写管理器130。备选地或附加地,介质写管理器130可以从与RAID编码器134相关联的硬件执行或在其上运行。
如图2所示,存储控制器126的结构212(其可以包括控制和数据总线)可操作地耦合并且支持存储控制器126的组件之间的通信。例如,介质写管理器130可以与写缓冲区132、RAID编码器134或处理器核210(例如,固件)通信,以在存储控制器126内交换数据、信息或控制信令(例如,缓冲区释放中断)。存储控制器126的静态随机存取存储器214可以存储处理器可执行指令或用于存储控制器的固件或驱动器的代码,其可以由处理器核210执行。备选地或附加地,存储控制器126的写缓冲区132可以在控制器的SRAM 214中被实现。
在该示例中,存储控制器126包括动态随机存取存储器(DRAM)控制器216和相关联的DRAM 218,以用于在存储控制器126在主机系统102、存储介质124或存储控制器的其他组件之间移动数据时存储或高速缓存各种数据。如图2中所示,写缓冲区132的实例在DRAM218中实现,并且可以通过DRAM控制器216被访问或管理。存储控制器126还包括纠错码(ECC)编码器220,其可以被用于对被编程或写到SSD 202的存储介质124的数据进行ECC编码。
图3在300处示出了各种硬件和固件组件的示例配置,以用于实现利用自适应写缓冲区释放的存储介质编程的各方面。在该示例中,存储控制器126的组件被示为可以在存储控制器的固件302和/或硬件304中实现的抽象实体。这只是各种组件的一个示例实现,其中任何一个组件都可以与本文所述的其他组件分离地实现或与其组合而被实现。备选地或附加地,参考图2或图3描述的组件中的任何组件可以被实现为知识产权块(IP块)或IP核,其被配置为提供组件的各种描述特征的逻辑单元、单元和/或集成电路(IC)。例如,存储控制器126的组件(例如,介质写管理器130)可以被实现为包括硬件、固件或软件的组合的IP核或IP块,以提供相应功能或实现组件的相应操作。
在该示例中,存储控制器126的硬件304包括NAND闪存设备204、主机接口206、介质接口208、处理器210(未示出)和ECC编码器220,其可以如参考图2所描述地被实现。硬件304还可以包括写缓冲区132和RAID编码器134,其可操作地与RAID缓冲区306耦合。在该示例中单独示出,RAID缓冲区306可以被实现为RAID编码器134的一部分并且存储RAID编码器所生成或计算的奇偶校验信息。介质写管理器130可以至少部分地在硬件304中被实现,并且与写缓冲区132或RAID编码器134交互以执行写缓冲区132的自适应释放,如贯穿本公开所描述的。备选地或附加地,介质写管理器130可以在存储控制器126的处理器核210上执行。
通常,存储控制器126的固件302辅助硬件304管理主机系统102和存储介质124之间的数据路径。换言之,固件302可以转换针对从主机系统102所接收的数据的命令或请求,以实现对存储介质124的访问。如图3所示,固件302包括用于在主机侧实现主机命令处理器310的主机接口驱动器308和用于在存储介质侧实现介质命令管理器314的介质接口驱动器312。如图3中所示,用于数据318(例如,与写命令相对应的数据)的主机输入/输出命令316(主机I/O 316)由主机命令处理器310接收,并且被发送到存储控制器126的闪存转换层320(FTL 320)的I/O调度器。FTL 320和/或I/O调度器可以处理和调度主机I/O 316,然后其可以作为对应的介质输入/输出命令322(介质I/O 322)被执行,以用于通过介质命令管理器314的存储介质访问。
FTL 320可以管理命令处理(例如,主机I/O 316转换和调度),以促进主机系统数据318在存储系统114内和/或通过存储控制器126的移动,诸如到存储介质124。如图3中所示,在将主机数据写到存储介质的上下文中,FTL 320处理主机I/O 316,以管理或促进数据318从主机接口206通过数据路径到介质接口208的移动,其中数据318被编程到NAND闪存设备204。为此,FTL 320或固件302可以管理硬件304的各种组件,以促进数据318从一个组件移动到下一个组件。例如,固件302可以使硬件304从主机接口206获取数据318或将其从主机接口206移动到写缓冲区132,将数据318(例如,通过传递或复制)提供给RAID编码器134,和/或将数据318提供给ECC编码器220以用于编码。固件302还可以使硬件304将数据318或经ECC编码的数据324发送到介质接口208,以用于写或编程到NAND闪存设备204。
在各个方面,介质写管理器130可以与写缓冲区132、RAID编码器134、固件302或硬件304的其他组件交互,以实现利用自适应写缓冲区释放的存储介质编程的各方面。在一些情况下,介质写管理器130监测RAID编码器134,以用于对针对数据318(例如,一个主机写命令的数据)的奇偶校验信息的计算完成的指示。基于奇偶校验信息计算的完成和数据的副本被存储到另一内部缓冲区(例如,ECC缓冲区),写缓冲区130生成到固件302的中断以引起释放存储数据318(例如,一个主机写命令的数据)的写缓冲区132。通过这样做,写缓冲区132自由并且可以被重用于主机的下一个写命令的数据318。这还可以使得存储驱动器能够利用较少或较小的写缓冲区来实现,而不影响存储驱动器的写吞吐量。
图4A至图4E示出了在管芯级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。如图4A中的400所示,将主机数据存储到存储介质通常包括处理在写缓冲区132处所接收到的数据318和将其移动到NAND闪存204以编程到NAND介质中。在此,NAND闪存204被图示为个体NAND管芯1204-1至NAND管芯n 204n,其中n是任何合适的整数。图4A至图4E的实体中的任何实体可以类似于参考图1至图3所描述的对应实体而被实现。在该示例中,存储控制器126包括RAID编码器134的实例以实现RAID编码,这可以为存储控制器提供改进的数据可靠性,并且实现在NAND编程故障期间丢失的数据的恢复。
通常,RAID条带可以跨越驻留在存储介质的不同管芯或平面上的存储块。在高代码速率应用(低开销)中,RAID条带可能还包括来自存储介质的同一管芯或平面的块。在该示例中,RAID编码器134以管芯RAID方案(或管芯级RAID)实现,其可以防止存储介质管芯(例如,NAND管芯)的故障。在其他方面,可以代替RAID编码器来实现Reed-Solomon代码编码器,以针对多个RAID条带成员(例如,平面或管芯)中的故障事件实现保护。
如图4A所示,第一写缓冲区0 132-0可以从主机(诸如主机系统102)接收第一数据318-0。然后,第一数据318-0被提供给RAID编码器134以用于计算针对第一数据318-0的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及被编程到第一NAND管芯0204-0的第一平面(平面0 406-0)。通常,第一写缓冲区0 132-0中的数据可以被并行地传递到ECC编码器和/或存储介质以及用于XOR生成的RAID编码器。这样,第一写缓冲区0 132-0被编程到存储介质,并且RAID缓冲区306累积XOR信息,直到所有RAID成员都已经通过RAID编码器134,然后RAID缓冲区306的内容可以被写到介质。
在该示例中,RAID编码器134包括XOR引擎402,以计算针对第一数据318-0的XOR位,其被存储到RAID缓冲区306的第一平面(平面0 404-0)。如所指出的,与RAID编码器134奇偶校验信息的计算(例如40至50微秒)或到存储介质的传递时间相比,将第一数据318-0的编程到NAND闪存可能花费更多的时间(例如3到4毫秒)。
继续图4B,响应于RAID编码器134对XOR位的计算,介质写管理器130可以释放第一写缓冲区0 132-0,如在408所示。在第一数据318-0到第一NAND管芯204-0的编程410之前或其期间,第一写缓冲区0 132-0可以被释放。因此,在第一数据318-0到NAND闪存204的编程完成之前,第一写缓冲区0 132-0可以被释放并且可用于重用。与传统的存储介质编程相反,在第一数据318-0完成编程之前,第一写缓冲区0 132-0可以从主机接收附加的数据,这可以改进存储控制器126或存储系统114的写吞吐量。
如图4B中所示,当第二写缓冲区1 132-1从主机接收第二数据318 1,继续存储主机数据。然后,第二数据318 1被提供给RAID编码器134,以用于计算针对第二数据318 1的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及被编程到第一NAND管芯0204-0的第二平面(平面1 406-1)。XOR引擎402计算第二数据318 1的XOR位,其被存储到RAID缓冲区306的第二平面(平面1 404-1)。
继续图4C,基于RAID编码器134对第二数据318-1的XOR位的计算完成,介质写管理器130可以释放第二写缓冲区1 132-1,如在412所示。类似于第一写缓冲区0 132-0,在第二数据318-1到第一NAND管芯204-0的编程414之前或其期间,第二写缓冲区1 132-1可以被释放。因此,在第二数据318 1到NAND闪存204的编程完成之前,第二写缓冲区112-12-1可以被释放并且可用于重用。在一些情况下,在第二数据318 1到NAND闪存204的编程完成之前,第一写缓冲区0 132-0和第二写缓冲区1 132-1可以被释放以用于重用。
参考在图4C的上下文中主机数据的存储,第三写缓冲区2 132-2从主机接收第三数据318-2。然后,第三数据318-2被提供给RAID编码器134以计算针对第三数据318-2的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及被编程到第二NAND管芯1204-1的第一平面(平面0 406-0)。XOR引擎402可以计算用于第三数据318-2的XOR位,其可以被存储到RAID缓冲区306的第一平面(平面0 404-0)。
如图4D中所示,响应于RAID编码器134对第三数据318-2的XOR位的计算的完成,介质写管理器130释放第三写缓冲区2 132-2,如在416所示。在第三数据318-2到第二NAND管芯204-1的编程418之前或其期间,第三写缓冲区2132-2可以被释放。因此,在第三数据318-2到NAND闪存204的编程完成之前,第三写缓冲区2 132-2可以被释放并且可用于重用。在一些情况下,在第三数据318-2到NAND闪存204的编程完成之前,第一写缓冲区0 132-0、第二写缓冲区1 132-1和第三写缓冲区2 132-2可以被释放以用于重用。
在该示例中结束主机数据的存储,第四写缓冲区3 132-3从主机接收第四数据3183。然后,第四数据318 3被提供给RAID编码器134以用于计算第四数据318 3的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及被编程到第二NAND管芯1 204-1的第二平面(平面1 406-1)。XOR引擎402计算第四数据318-3的XOR位,其被存储到RAID缓冲区306的第二平面(平面1 404-1)。类似于其他写缓冲区132,在第四信息318-3的奇偶校验信息的计算完成时,介质写管理器可以释放第四写缓冲区3 132-3。
参考图4E,由RAID编码器134所计算出的奇偶校验信息或XOR位可以被存储或保持在RAID缓冲区306中,直到最后的NAND管芯204的编程完成为止。在管芯级RAID的情况下,RAID编码器134的奇偶校验信息从RAID缓冲区306被编程到RAID条带的最后的NAND管芯n204-n的两个平面406。通过回顾,主机的数据318跨RAID条带的其他NAND管芯204成员被条带化,诸如NAND管芯0 204-0至NAND管芯n-1(未示出)。在该示例中,ECC编码器220(为了视觉清晰示出两个实例)对第一平面0 406-0和第二平面1 406-1的相应奇偶校验信息(例如,XOR位)编码。然后,ECC编码的奇偶校验信息分别被编程到最后的NAND管芯n 204-n的第一平面0 406-0和第二平面1 406-1。通过实现RAID编码,无法编程的管芯(例如,管芯k<n)的任一平面的数据还可以如公式1和2所示被恢复。
(管芯k,平面0)=(管芯0,平面0)XOR(管芯1,平面0)XOR…XOR(管芯k-1,平面0)XOR(管芯k+1,平面0)XOR…XOR(管芯n,平面0)
公式1:管芯k的平面0的数据恢复
(管芯k,平面1)=(管芯0,平面1)XOR(管芯1,平面1)XOR…XOR(管芯k-1,平面1)XOR(管芯k+1,平面1)XOR…XOR(管芯n,平面1)
公式2:管芯k的平面1的数据恢复
在将奇偶校验信息编程到管芯n失败的情况下,奇偶校验信息可以被保持在RAID缓冲区306中,直到管芯n的编程完成为止,使得奇偶校验数据可以直接从RAID缓冲区306被恢复。
备选地,一旦已知RAID条带的所有(非奇偶校验)成员已经成功编程到存储介质,则RAID缓冲区306也可以提前被释放。在这种情况下,RAID缓冲区306可以提前被释放,并且如果到存储介质的编程失败,则奇偶校验信息可以通过再次读取所有RAID成员来重建。备选地,当不需要重建奇偶校验时,条带可能缺乏RAID保护,并且条带可以被重新定位到有效地重建奇偶校验信息的其他位置。
图5A至图5D示出了在平面级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。如图5A中在500处所示,将主机数据存储到存储介质通常包括处理在写缓冲区132处所接收到的数据318和将其移动到NAND闪存204,以用于编程到NAND介质中。在此,NAND闪存204被示为个体NAND管芯1204-1至NAND管芯n 204n,其中n是任何合适的整数。图5A至图5D的实体中的任何实体可以类似于参考图1至图4所描述的对应实体来实现。在该示例中,存储控制器126包括RAID编码器134的实例以实现RAID编码,这可以为存储控制器提供改进的数据可靠性,并且实现在NAND编程操作期间丢失的数据的恢复(例如,块或页面故障)。
在本示例中,RAID编码器134在平面RAID方案(或平面级RAID)中被实现,这可以针对存储介质平面(例如NAND平面)的故障进行保护。在一些情况下,使用平面RAID可以减少管芯RAID(例如,图4A至图4E)所涉及的计算开销。在其他方面,可以代替RAID编码器来实现Reed-Solomon代码编码器,以针对多个RAID条带成员(例如,平面或管芯)中的故障事件实现保护。
如图5A中所示,第一写缓冲区0 132-0可以从主机(诸如主机系统102)接收第一数据318-0。然后,第一数据318-0被提供给RAID编码器134用于计算针对第一数据318-0的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及然后被编程到第一NAND管芯0 204-0的第一平面(平面0 506-0)。在该示例中,RAID编码器134包括XOR引擎502,以计算用于第一数据318-0的XOR位,其被存储到RAID缓冲区306的第一平面(平面0 504-0)中。如所指出的,与RAID编码器134或XOR引擎502的奇偶校验信息的计算相比,对第一数据318-0进行编程可以消耗多得多的时间。
继续图5B,响应于RAID编码器134对XOR位的计算,介质写管理器130可以释放第一写缓冲区0 132-0,如在508处所示。在第一数据318-0到第一NAND管芯204-0的编程510之前或其期间,第一写缓冲区0 132-0可以被释放。因此,在第一数据318-0到NAND闪存204的编程完成之前,第一写缓冲区0 132-0可以被释放并且可用于重用。与传统的存储介质编程相反,在第一数据318-0完成编程之前,第一写缓冲区0 132-0可以从主机接收附加的数据,这可以改进存储控制器126或存储系统114的写吞吐量。
如图5B所示,当第二写缓冲区1 132-1从主机接收第二数据318 1,继续主机数据的存储。然后,第二数据318 1被提供给RAID编码器134以用于计算针对第二数据318 1的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及然后被编程到第一NAND管芯0 204-0的第二平面(平面1 506-1)。XOR引擎502计算第二数据318 1的XOR位,其被存储到RAID缓冲区306的第二平面(平面1 504-1)。
继续图5C,基于RAID编码器134对用于第二数据318-1的XOR位的计算的完成,介质写管理器130可以释放第二写缓冲区1 132-1,如在512处所示。与第一写缓冲区0 132-0类似,在第二数据318-1到第一NAND管芯204-0的编程514之前或其期间,第二写缓冲区1 132-1可以被释放。因此,在第二数据318 1到NAND闪存204的编程完成之前,第二写缓冲区1132-1可以被释放并且可用于重用。在此,假定奇偶校验信息还已经针对第三数据(未示出)被计算,其已经被发送到NAND闪存204的编程接口。响应于针对第三数据的奇偶校验信息的计算,介质写管理器130释放第三写缓冲区2 132-2,如在516处所示。这样,第三写缓冲区2132-2的释放可以在第三数据的编程518之前或其期间发生,从而在相应的数据被编程到NAND闪存204中之前,使第三写缓冲区2 132-2自由以用于重用。
如图5C中所示结束主机数据的存储,最后的写缓冲区2n 132-2n(例如,针对条带的最后的写缓冲区)从主机接收RAID条带的最后的平面成员的数据318-2n。然后,数据318-2n被提供给RAID编码器134以用于计算针对数据318-2n的奇偶校验信息,并且被提供给ECC编码器220以用于ECC编码,以及被编程到第n个NAND管芯n 204-n的第一平面(平面0 506-0)。XOR引擎502计算用于数据318-2n的XOR位,其被存储到RAID缓冲区306的第一平面(平面0 504-0)。类似于其他写缓冲区132,在信息318-2n的奇偶校验信息的计算完成时,介质写管理器可以释放最后的写缓冲区2n 132-2n。
参考图5D,由RAID编码器134所计算出的奇偶校验信息或XOR位可以被存储或保持在RAID缓冲区306中,直到最后的NAND管芯204的编程完成为止。在平面级RAID的情况下,针对RAID编码器134的每个平面(504-0和504-1)的奇偶校验信息在编程到RAID条带的最后的NAND管芯n 204-n的第二平面(平面0 506-1)之前,通过XOR运算被组合。通过回顾,主机的数据318跨RAID条带的其他NAND平面成员被条带化,诸如NAND管芯0 204-0的平面到NAND管芯n的第一平面。在该示例中,ECC编码器220对第一平面0 506-0和第二平面1 506-1的组合的奇偶校验信息(例如,XOR位)编码。然后,经ECC编码的奇偶校验信息被编程到最后的NAND管芯n 204-n的第二平面1 506-1。通过实现RAID编码,无法编程的管芯(例如,管芯k<n)的任一平面的数据还可以如公式3和4所示被恢复。
(管芯k,平面0)=(管芯0,平面0)XOR(管芯1,平面0)XOR…XOR(管芯k-1,平面0)XOR(管芯k+1,平面0)XOR…XOR(管芯n,平面0)
公式3:管芯k的平面0的数据恢复
(管芯k,平面1)=(管芯0,平面1)XOR(管芯1,平面1)XOR…XOR(管芯k-1,平面1)XOR(管芯k+1,平面1)XOR…XOR(管芯n,平面1)
公式4:管芯k的平面1的数据恢复
在奇偶校验信息到管芯n的编程失败的情况下,该奇偶校验信息可以被保留在RAID缓冲区306中,直到管芯n的第二平面的编程完成为止,使得奇偶校验数据从RAID缓冲区306直接可恢复。这些只是利用自适应写缓冲区释放的存储介质编程的少许示例,贯穿本公开中实现和描述了示例中的其他示例。
用于自适应写缓冲区释放和数据恢复的技术
以下讨论描述了用于利用自适应写缓冲区释放和/或基于奇偶校验的数据恢复的存储介质编程的技术。可以使用本文描述的环境和实体中的任何环境和实体(诸如介质写管理器130、写缓冲区132和/或RAID编码器134)来实现这些技术。这些技术包括图6至图8所示的各种方法,该方法中的每个方法被示为可以由一个或多个实体执行的操作的集合。
方法600到800不一定限于在相关联的图中所示的操作顺序。而是,该操作中的任何操作可以被重复、跳过,替换或重新排序,以实现本文描述的各个方面。此外,这些方法可以全部或部分地彼此结合使用,而不管是由同一实体、单独实体还是其任何组合来执行。在以下讨论的部分中,例如将参考图1的操作环境100以及图2至图5D的各种实体或配置。这样的参考不应当被视为将所描述的各方面限制到操作环境100、实体或配置,而是作为各种示例中的一个示例的说明。备选地或附加地,方法的操作也可以由参考图9的片上系统和/或图10的存储系统控制器所描述的实体实现或与其一起实现。
图6描绘了用于利用自适应写缓冲区释放的存储介质编程的示例方法600,包括由存储介质控制器的介质写管理器130、写缓冲区132或RAID编码器134来执行或与其一起执行的操作。
在602处,从主机接口接收的数据被存储到写缓冲区。写缓冲区可以在存储控制器的SRAM或DRAM中被实现。在一些情况下,从主机接口所接收的数据对应于主机系统的写命令,数据经由主机接口从该主机系统被接收。写命令可以指定存储介质(诸如存储系统的NAND闪存)中数据的目的地。
在604处,奇偶校验信息针对存储到写缓冲区的数据利用基于奇偶校验的编码器被确定。在确定奇偶校验信息之前或其期间,数据可以被传递到存储系统的内部缓冲区或存储介质。基于奇偶校验的编码器可以包括具有XOR引擎或XOR缓冲区的RAID编码器,以用于确定奇偶校验信息(例如,XOR位)。奇偶校验信息可以对应于将被写存储介质的平面或管芯的数据以及被写到存储介质的至少一个其他平面或至少一个其他管芯的其他数据。例如,奇偶校验数据可以对应于跨越NAND闪存的多个管芯或平面的RAID条带的数据成员的XOR位。
在606处,针对数据的奇偶校验信息被存储到基于奇偶校验的编码器的缓冲区中。奇偶校验信息可以基于数据被编程到的存储介质中的相应平面来被存储到缓冲区的平面。备选地或附加地,针对数据和其他数据的奇偶校验信息可以被保持在基于奇偶校验的编码器的缓冲区中,直到奇偶校验信息成功地被编程到存储介质中为止。
在608处,响应于奇偶校验信息的确定,写缓冲区被释放。在数据被完全编程到存储介质中之前,写缓冲区被释放。基于奇偶校验的编码器可以提供指示对奇偶校验信息的确定的完成的通知。在一些情况下,基于奇偶校验的编码器被监测以检测何时对奇偶校验信息的确定或计算完成和/或被存储到基于奇偶校验的编码器的缓冲区中。响应于通知或检测到奇偶校验信息的完成的确定,通知或中断可以被发送到存储控制器的固件以引起写缓冲区的释放。当被释放,写缓冲区可用于重用,诸如从主机接口接收后续数据。
在610处,在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到存储介质。因为在确定奇偶校验信息之后写缓冲区被释放,所以在数据被写到或编程到存储介质之前写缓冲区可以被释放。这样,在释放写缓冲区之后,可以继续向存储介质写或编程数据。在编程故障的情况下,数据可以基于奇偶校验信息并且不使用先前在写缓冲区中所保持的数据来恢复。
可选地在612处,在完成数据到存储介质的写之前,其他数据被存储到写缓冲区。如所指出的,数据的编程可以在释放写缓冲区之后继续,其可以被存储控制器的固件或其他组件自由地重用。在一些情况下,在将先前的数据被编程到存储介质时,附加的数据被存储到写缓冲区。通过使写缓冲区自由和重用写缓冲区,自适应缓冲区释放的各个方面可以改进写缓冲区利用率或增加存储介质的写吞吐量。
图7描绘了用于基于奇偶校验信息的计算来释放写缓冲区的示例方法700,包括由存储介质控制器的介质写管理器130、写缓冲区132和/或RAID编码器134执行的或与其一起执行的操作。
在702处,来自主机系统的数据在写缓冲区处被接收。数据从主机系统通过存储控制器的主机接口被接收。在一些情况下,数据作为I/O命令的一部分从主机系统被接收或获取,以将数据写到与存储控制器关联的存储介质。
在704处,数据从写缓冲区被传输到RAID编码器。通常,数据被传输、传递或发送到RAID编码器,而存储系统的另一内部缓冲区维护数据。换言之,RAID编码器可以在另一缓冲区保持数据副本或数据被发送到存储介质以用于编程的同时处理数据。通过这样做,主机系统可以从数据解脱(例如,高速缓存开启模式),并且存储控制器在数据处理或编程故障的情况下可以具有本地副本。
在706处,奇偶校验信息利用RAID编码器被计算以用于数据。RAID编码器可以包括用于计算或生成写缓冲区中的数据的XOR位的XOR引擎或XOR缓冲区。XOR位(或针对数据的奇偶校验信息)可以被保持在基于奇偶校验的编码器的缓冲区中。在一些情况下,RAID编码器被配置为生成中断或提供对奇偶校验信息的计算完成的通知。例如,RAID编码器可以向存储控制器的固件提供中断,该中断指示奇偶校验信息的计算完成和/或针对数据的奇偶校验信息被保持在RAID编码器的缓冲区中。
在708处,响应于针对数据的奇偶校验信息的计算完成,写缓冲区被释放。在释放写缓冲区之前,数据可以被复制到存储系统的另一内部缓冲区或被编程到存储介质。在数据被完全编程到存储介质中之前,写缓冲区可以被释放。在一些情况下,在开始数据到存储介质的编程之前,写缓冲区被释放。备选地或附加地,响应于RAID编码器、ECC编码器或存储控制器的其他组件所提供的中断或通知,写缓冲区可以被释放。
在710处,数据利用ECC编码器被编码,以提供经ECC编码的数据。ECC编码器可以在RAID编码之后或与RAID编码并行地对数据进行编码。在一些情况下,在奇偶校验信息根据数据被计算之后,ECC编码器从RAID编码器接收数据。
在712处,在写缓冲区从存储数据中被释放后,经ECC编码数据的至少一部分被写到存储介质。因为在确定奇偶校验信息之后写缓冲区被释放,所以在数据由ECC编码器进行ECC编码之前或与其同时,写缓冲区被释放。这样,在释放写缓冲区之后,可能发生或继续将经ECC编码的数据写或编程到存储介质。在编程故障的情况下,数据可以基于奇偶校验信息并且不使用先前保持在写缓冲区中的数据而被恢复。
可选地在714处,奇偶校验信息被写到存储介质。奇偶校验信息可以被写存储介质的任何合适区域,诸如RAID条带的最后的管芯或平面。通常,当奇偶校验信息由RAID缓冲区保持时,奇偶校验信息可以被写到RAID条带的最后的成员。通过这样做,在存储介质编程故障的情况下,奇偶校验信息可以从RAID缓冲区中被恢复。
可选地在716处,其他数据在写缓冲区处被接收。如所指出的,经ECC编码的数据的编程可以在释放写缓冲区之后继续,该写缓冲区自由以由存储控制器的固件或其他组件重用。在一些情况下,在先前的数据被编程到存储介质时,其他数据在写缓冲区处被接收。通过释放和重用写缓冲区,自适应缓冲区释放的各方面可以改进写缓冲区利用率或增加存储介质的写吞吐量。
图8描绘了用于利用基于奇偶校验的数据重建从编程故障中恢复的示例方法800,包括由存储介质控制器的介质写管理器130、写缓冲区132和/或RAID编码器134执行或与其一起执行的操作。
在802处,奇偶校验信息利用RAID编码器被计算以用于从主机接口所接收的数据。RAID编码器可以包括用于计算或生成用于写缓冲区中的数据的XOR位的XOR引擎或XOR缓冲区。
在804处,奇偶校验信息被存储到RAID编码器的缓冲区中。XOR位(或针对数据的奇偶校验信息)可以被保持在基于奇偶校验的编码器的缓冲区中。在一些情况下,RAID编码器被配置为生成中断或提供奇偶校验信息的计算完成的通知。
在806处,在计算奇偶校验信息之后写缓冲区被释放。在数据被完全编程到存储介质中之前,写缓冲区可以被释放。备选地或附加地,响应于存储控制器的RAID编码器、ECC编码器、介质写管理器或其他组件所提供的中断或通知,写缓冲区被释放。
在808处,启动数据到存储介质的区域的编程。数据可以被释放到存储介质接口以用于编程到存储介质的区域(例如,块、平面或管芯)。在一些情况下,数据经由存储控制器的闪存接口被发送到闪存控制器,以用于编程到闪存的区域。例如,提供有数据的介质I/O可以指定闪存控制器将数据写存储介质的平面。
在810处,针对数据到存储介质的编程,编程故障被检测到。编程故障可以包括页面故障、块故障、平面故障、管芯故障等。在写缓冲区从存储数据中被释放之后,编程故障可以被检测到。
在812处,数据基于奇偶校验信息和来自存储介质的其他区域的相应数据被重建。通过实现RAID,存储控制器可以基于RAID缓冲区中的奇偶校验信息和来自RAID条带的其他成员(例如,管芯或平面)的数据来重建编程故障的丢失数据。通过这样做,存储控制器能够重建先前由释放的写缓冲区所保持的数据。
在814,重建的数据被编程到存储介质的不同区域。在编程故障的情况下,存储控制器能够重建由于编程故障而丢失的数据,并且尝试将数据重新编程到存储介质的不同区域,这可以确保由存储控制器所管理的数据的可靠性。备选地或附加地,如果在尝试将奇偶校验信息写到RAID条带的最后的成员时发生编程故障,则RAID缓冲区的奇偶校验信息还可以被重新编程到存储介质的不同区域。如所指出的,奇偶校验信息被保持在RAID缓冲区中,直到成功完成到存储介质的编程为止,以确保从这样的编程故障中恢复的能力。备选地,RAID缓冲区还可以在条带被重新分配并且使其奇偶校验信息重新生成时被释放。
片上系统
图9示出了示例性片上系统(SoC)900,其可以实现利用自适应写缓冲区释放的存储介质编程的各个方面。SoC 900可以在任何合适的系统或设备中实现,诸如智能手机、上网本、平板电脑、接入点、网络附接存储装置、相机、智能设备、打印机、机顶盒、服务器、数据中心、固态驱动器(SSD)、硬盘驱动器(HDD)、存储驱动器阵列、内存模块、汽车计算系统或任何其他合适类型的设备(例如本文所述的其他设备)。尽管参考SoC进行了描述,但是图9的实体也可以被实现为其他类型的集成电路或嵌入式系统,诸如专用集成电路(ASIC)、存储器控制器、存储控制器、通信控制器、专用标准产品(ASSP)、数字信号处理器(DSP)、可编程SoC(PSoC)、系统级封装(SiP)或现场可编程门阵列(FPGA)。
SoC 900可以与电子电路、微处理器、存储器、输入-输出(I/O)控制逻辑、通信接口、固件和/或用于提供计算设备、主机系统或存储系统的功能的软件(诸如本文描述的设备或组件(例如存储驱动器或存储阵列)中的任何一项)集成在一起。SoC 900还可以包括集成数据总线或互连结构(未示出),其耦合SoC的各种组件以用于控制组件之间的信令、数据通信和/或路由。可以通过外部端口、并行数据接口、串行数据接口、基于结构的接口、外围组件接口或任何其他合适的数据接口来公开或访问SoC 900的集成数据总线、互连结构或其他组件。例如SoC 900的组件可以通过外部接口或片外数据接口来访问或控制外部存储介质。
在该示例中,SoC 900包括各种组件,诸如输入-输出(I/O)控制逻辑902和基于硬件的处理器904(处理器904),诸如微处理器、处理器核、应用处理器、DSP等。SoC 900还包括任何类型的存储器906,其可包括RAM、SRAM、DRAM、非易失性存储器、ROM、一次性可编程(OTP)存储器、多次可编程(MTP)存储器、闪存和/或其他合适的电子数据存储装置和/或其组合。在一些方面,处理器904和存储在存储器906上的代码被实现为存储系统控制器或存储聚合器,以提供与利用自适应写缓冲区释放的存储介质编程相关联的各种功能。在本公开的上下文中,存储器906经由非暂态信号存储数据、代码、指令或其他信息,并且不包括载波或暂态信号。替代地或另外地,SoC 900可以包括用于访问附加的或可扩展的片外存储介质的数据接口(未示出),诸如固态存储器(例如闪存或NAND存储器)、基于磁性的存储器介质,或基于光学的存储器介质。
SoC 900还可以包括固件908、应用、程序、软件和/或操作系统,其可以体现为在存储器906上维护的处理器可执行指令,用于由处理器904执行以实现SoC 900的功能。SoC900还可以包括其他通信接口,诸如用于控制本地片上(未示出)或片外通信收发机的组件或与本地片上(未示出)或片外通信收发机的组件通信的收发机接口。替代地或另外地,收发机接口还可包括或实现信号接口以片外传送射频(RF)、中频(IF)或基带频率信号,以促进通过收发机、物理层收发机(PHY)或者耦合到SoC 900的介质访问控制器(MAC)的有线或无线通信。例如SoC 900可以包括收发机接口,其被配置为允许通过有线或无线网络进行存储,诸如以提供能够利用自适应写缓冲区释放来实现存储介质编程的网络附接存储(NAS)卷。
SoC 900还包括介质写管理器130、写缓冲区132和RAID编码器134,其可以如所示分离地实现,也可以与存储组件、数据接口组合在一起,也可以通过片外接口可访问。根据利用自适应写缓冲区释放的存储介质编程的各个方面,介质写管理器130可以与RAID编码器134交互以计算用于写缓冲区132中所存储的数据的奇偶校验信息。然后,响应于奇偶校验信息的计算,介质写管理器可以释放写缓冲区,从而在数据被编程到存储介质之前或同时释放写缓冲区132以供重用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。如参考本文所呈现的各个方面所描述的,这些实体中的任何实体可以被体现为不同的或组合的组件。参考图1的环境100的相应组件或实体、图2至图5D中所示的相应配置和/或图6至图8中所示的方法描述了这些组件和/或实体或相应功能的示例。介质写管理器130的全部或部分可以被实现为由存储器906维护并且由处理器904执行的处理器可执行指令,以利用自适应写缓冲区释放来实现存储介质编程的各个方面和/或特征。
介质写管理器130可以独立地或与任何适当的组件或电路系统组合地被实现以实现本文描述的各方面。例如,介质写管理器130可以被实现为DSP、处理器/存储桥、I/O桥、图形处理单元,存储器控制器、存储控制器、算术逻辑单元(ALU)等的一部分。介质写管理器130还可以内部与SoC 900的其他实体一起被提供,诸如与SoC 900的处理器904、存储器906、存储介质接口或固件908集成在一起。备选地或附加地,SoC 900的介质写管理器130、RAID编码器134、RAID编码器134和/或其他组件可以被实现为硬件、固件,固定逻辑电路或其任何组合。
作为另一示例,考虑图10,其示出了根据利用自适应写缓冲区释放的存储介质编程的一个或多个方面的示例存储系统控制器1000。在各个方面,存储系统控制器1000或其组件的任何组合可以被实现为用于固态存储介质或其他类型的存储介质的存储驱动器控制器、存储介质控制器、NAS控制器、结构接口、NVMe目标或存储聚合控制器。在一些情况下,类似于或参考图9所描述的SoC 900的组件,存储系统控制器1000被实现。换言之,SoC 900的实例可以被配置为存储系统控制器,诸如存储系统控制器1000,以用于管理固态(例如,基于NAND闪存的)介质。
在该示例中,存储系统控制器1000包括输入/输出(I/O)控制逻辑1002和处理器1004,诸如微处理器、处理器核、应用处理器、DSP等。在一些方面,存储系统控制器1000的处理器1004和固件可以被实现为提供与利用自适应写缓冲区释放的存储介质编程相关联的各种功能,诸如参考方法600至800中的任何方法所描述的那些功能。存储系统控制器1000还包括主机接口1006(例如,SATA、PCIe、NVMe或结构接口)和存储介质接口1008(例如,NAND接口),其分别实现访问主机系统和存储介质。存储系统控制器1000还包括闪存转换层1010(FTL 1010)、设备级管理器1012和I/O调度器(未示出)。在利用自适应写缓冲区释放的存储介质编程的一些方面中,FTL 1010处理经由主机接口1006所接收的写命令,以管理在存储系统控制器1000内或通过其的数据移动。
存储系统控制器1000还包括介质写管理器130、写缓冲区132、RAID编码器134和ECC编码器220的实例。这些组件中的任何组件或全部组件可以如所示的单独地被实现,也可以与处理器1004、主机接口1006、存储介质接口1008、闪存转换层1010、设备级管理器1012和/或I/O调度器组合在一起。参考图1的环境100的相应组件或实体或图2至图5D所示的相应配置来描述这些组件和/或实体或相应功能的示例。根据利用自适应写缓冲区释放的存储介质编程的各个方面,介质写管理器130可以与RAID编码器134交互,以用于计算用于在写缓冲区132中所存储的数据的奇偶校验信息。然后,介质写管理器可以响应于奇偶校验信息的计算而释放写缓冲区,从而在数据被编程到存储介质之前或同时使写缓冲区132自由以供重用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。介质写管理器130可以全部或部分地被实现为由控制器的存储器维护并且由处理器1004执行的处理器可执行指令,以实现利用自适应写缓冲区释放的存储介质编程的各个方面和/或特征。
尽管用结构特征和/或方法操作专用的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于本文所描述的具体示例、特征或操作,包括它们被执行的顺序。

Claims (20)

1.一种用于利用自适应写缓冲区释放的存储介质编程的方法,包括:
将第一数据存储到写缓冲区,所述第一数据从存储系统的主机接口被接收,所述存储系统包括存储介质;
利用基于奇偶校验的编码器来确定针对被存储到所述写缓冲区的所述第一数据的奇偶校验信息;
响应于针对所述第一数据的所述奇偶检验信息的所述确定的完成,释放所述写缓冲区;在所述写缓冲区从存储所述第一数据中被释放之后,将所述第一数据的至少一部分写到所述存储系统的所述存储介质;以及
在完成所述第一数据到所述存储系统的所述存储介质的所述写之前,将第二数据存储到所述写缓冲区。
2.根据权利要求1所述的方法,进一步包括在所述第一数据被写到所述存储介质的同时,将针对所述第一数据的所述奇偶校验信息存储到与所述基于奇偶校验的编码器相关联的缓冲区中。
3.根据权利要求2所述的方法,进一步包括:
将针对所述第一数据的所述奇偶校验信息从与所述基于奇偶校验的编码器相关联的所述缓冲区写到所述存储系统的所述存储介质;或者
在完成所述第一数据到所述存储系统的所述存储介质的所述写时,从与所述基于奇偶校验的编码器相关联的所述缓冲区删除针对第一数据的所述奇偶校验信息。
4.根据权利要求1所述的方法,进一步包括:
经由纠错码ECC编码器来对所述第一数据进行编码,以提供经ECC编码的数据;以及
将所述经ECC编码的数据写到所述存储系统的所述存储介质。
5.根据权利要求4所述的方法,其中所述第一数据从所述基于奇偶校验的编码器被传输到所述ECC编码器,并且所述方法进一步包括:
监测所述基于奇偶校验的编码器,以检测针对所述第一数据的所述奇偶校验信息的所述确定的所述完成;以及
在所述第一数据到所述ECC编码器的传输之后,响应于针对所述第一数据的所述奇偶校验信息的所述确定的所述完成,通知所述存储系统的固件释放所述写缓冲区。
6.根据权利要求1所述的方法,其中所述基于奇偶校验的编码器是所述存储系统的独立磁盘冗余阵列RAID编码器,并且所述奇偶校验信息包括由所述RAID编码器针对所述第一数据所计算的XOR奇偶校验位。
7.根据权利要求1所述的方法,其中:
所述存储介质是闪存;
所述第一数据被写到所述闪存的平面或所述闪存的管芯;
所述第二数据被写到所述闪存的另一平面或所述闪存的另一管芯;以及
所述奇偶校验信息与被写到所述闪存的所述平面或所述管芯的所述第一数据和被写到所述闪存的所述另一平面或所述另一管芯的所述第二数据相对应。
8.根据权利要求1所述的方法,其中作为存储介质编程操作的一部分,所述第一数据被写到所述存储介质的区域,并且所述方法进一步包括:
检测将所述第一数据写到所述存储介质的所述区域的所述编程操作的失败;
基于所述奇偶校验信息和来自所述存储介质的其他区域的相应数据来重建所述第一数据;以及
将经重建的所述第一数据写到所述存储介质的不同区域。
9.一种用于利用自适应写缓冲区释放的存储介质编程的装置,包括:
主机接口,所述主机接口被配置用于与主机系统通信;
写缓冲区,所述写缓冲区可操作地被耦合到所述主机接口;
存储介质;
介质接口,所述介质接口被配置以实现对所述存储介质的访问;
基于奇偶校验的编码器;以及
介质写管理器,所述介质写管理器被配置为:
经由所述写缓冲区中的一个写缓冲区来从所述主机接口接收第一数据;
经由所述基于奇偶校验的编码器来计算针对由所述写缓冲区所接收的所述第一数据的奇偶校验信息;
将针对所述第一数据的所述奇偶校验信息存储到所述基于奇偶校验的编码器的缓冲区;
响应于对针对所述第一数据的所述奇偶校验信息的计算而释放所述写缓冲区,所述写缓冲区在所述第一数据被写入所述装置的所述存储介质之前被释放;
在所述写缓冲区从存储所述第一数据中被释放之后,将所述第一数据的至少一部分写到所述装置的所述存储介质;以及
在完成所述第一数据到所述装置的所述存储介质的写之前,经由被释放的所述写缓冲区来从所述主机接口接收第二数据。
10.根据权利要求9所述的装置,其中所述介质写管理器进一步被配置为:
将针对所述第一数据的所述奇偶校验信息从所述基于奇偶校验的编码器的所述缓冲区写到所述装置的所述存储介质或所述装置的另一存储器;或者
在完成所述第一数据到所述装置的所述存储介质的所述写时,从所述基于奇偶校验的编码器的所述缓冲区冲刷针对所述第一数据的所述奇偶校验信息。
11.根据权利要求9所述的装置,进一步包括纠错码ECC编码器并且其中所述介质写管理器进一步被配置为:
经由所述ECC编码器来对所述第一数据进行编码,以提供经ECC编码的数据;以及
将所述经ECC编码的数据写到所述装置的所述存储介质。
12.根据权利要求11所述的装置,其中所述第一数据从所述基于奇偶校验的编码器被发送到所述ECC编码器,并且所述介质写管理器进一步被配置为:
从所述基于奇偶校验编码器接收通知,所述通知指示针对所述第一数据的所述奇偶校验信息的所述计算的完成;以及
在所述第一数据被发送到所述ECC编码器之后,响应于针对所述第一数据的所述奇偶校验信息的所述计算的所述完成,生成到所述装置的固件的中断,以引起所述写缓冲区的所述释放。
13.根据权利要求9所述的装置,其中作为存储介质编程操作的一部分,所述第一数据被写到所述存储介质的区域,并且所述介质写管理器进一步被配置为:
检测将所述第一数据写到所述存储介质的所述区域的所述编程操作的失败;
基于所述奇偶校验信息和来自所述存储介质的其他区域的相应数据来重建所述第一数据;以及
将经重建的所述第一数据写到所述存储介质的不同区域。
14.根据权利要求9所述的装置,其中:
所述存储介质是闪存;
所述第一数据被写到所述闪存的平面或所述闪存的管芯;
所述第二数据被写到所述闪存的另一平面或所述闪存的另一管芯;以及
所述奇偶校验信息与被写到所述闪存的所述平面或所述管芯的所述第一数据和被写到所述闪存的所述另一平面或所述另一管芯的所述第二数据相对应。
15.一种用于利用自适应写缓冲区释放的存储介质编程的片上系统SoC,包括:
主机接口,所述主机接口与主机系统通信;
写缓冲区,所述写缓冲区可操作地与主机接口耦合;
介质接口,所述介质接口用于访问存储系统存储介质;
基于奇偶校验的编码器;
基于硬件的处理器;
存储器,所述存储器存储处理器可执行指令,所述处理器可执行指令响应于所述基于硬件的处理器的执行而实现介质写管理器,用以:
将从所述主机接口所接收的第一数据存储到所述写缓冲区中的一个写缓冲区;
经由所述基于奇偶校验的编码器来确定针对被存储到所述写缓冲区的所述第一数据的奇偶校验信息;
响应于针对所述第一数据的所述奇偶校验信息的所述确定而释放所述写缓冲区;
在所述写缓冲区从存储所述第一数据中被释放之后,将所述第一数据的至少一部分写到所述存储介质;以及
在完成所述第一数据到所述存储系统的所述存储介质的所述写之前,将第二数据存储到被释放的所述写缓冲区。
16.根据权利要求15所述的SoC,其中所述介质写管理器进一步被实现为:
在所述第一数据被写到所述存储介质时,将针对所述第一数据的所述奇偶校验信息存储到与所述基于奇偶校验的编码器相关联的缓冲区中;或者
将针对所述第一数据的所述奇偶校验信息从与所述基于奇偶校验的编码器相关联的所述缓冲区写到所述存储系统的所述存储介质。
17.根据权利要求15所述的SoC,其中所述介质写管理器进一步被实现为:
从所述基于奇偶校验的编码器接收通知,所述通知指示针对所述第一数据的所述奇偶校验信息的所述确定的完成;以及
生成到所述SoC的固件的中断,以引起所述写缓冲区的所述释放。
18.根据权利要求15所述的SoC,其中作为存储介质编程操作的一部分,所述第一数据被写到所述存储介质的区域,并且所述介质写管理器进一步被配置为:
检测将所述第一数据写到所述存储介质的所述区域的所述编程操作的失败;
基于所述奇偶校验信息和来自所述存储介质的其他区域的相应数据来重建所述第一数据;以及
将经重建的所述第一数据写到所述存储介质的不同区域。
19.根据权利要求15所述的SoC,进一步包括纠错码ECC编码器并且其中所述介质写管理器进一步被配置为:
经由所述ECC编码器来对所述第一数据进行编码,以提供经ECC编码的数据;以及
将所述经ECC编码的数据写到所述存储系统的所述存储介质。
20.根据权利要求15所述的SoC,其中所述基于奇偶校验的编码器是所述SoC的独立磁盘冗余阵列RAID编码器,并且所述奇偶校验信息包括由所述RAID编码器针对所述第一数据所计算的XOR奇偶校验位。
CN202010033035.0A 2019-01-11 2020-01-13 利用自适应写缓冲区释放的存储介质编程 Active CN111435292B (zh)

Applications Claiming Priority (4)

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

Publications (2)

Publication Number Publication Date
CN111435292A CN111435292A (zh) 2020-07-21
CN111435292B true CN111435292B (zh) 2025-02-25

Family

ID=69159564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010033035.0A Active CN111435292B (zh) 2019-01-11 2020-01-13 利用自适应写缓冲区释放的存储介质编程

Country Status (5)

Country Link
US (1) US11481118B2 (zh)
EP (1) EP3680778B1 (zh)
KR (1) KR102729696B1 (zh)
CN (1) CN111435292B (zh)
TW (1) TWI814975B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11348643B2 (en) * 2020-02-25 2022-05-31 Apple Inc. Identifying failure type in NVM programmed in SLC mode using a single programming pulse with no verification
WO2021232024A1 (en) * 2020-05-15 2021-11-18 Rey Bruce Artificial intelligence-based hybrid raid controller device
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
TWI854078B (zh) 2020-12-21 2024-09-01 韓商愛思開海力士有限公司 用以分配儲存裝置的多個記憶通道以進行串流資料寫入的方法、儲存裝置及其記錄媒體
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11847324B2 (en) * 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12229437B2 (en) 2020-12-31 2025-02-18 Pure Storage, Inc. Dynamic buffer for storage system
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
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
US12487776B1 (en) 2021-10-28 2025-12-02 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for transferring data between a host computer and a solid state memory
US12131067B2 (en) * 2021-11-19 2024-10-29 Rambus Inc. Multiple host memory controller
CN114661230B (zh) * 2021-12-30 2025-08-29 浙江元储科技有限公司 Raid存储系统及ssd raid加速命令设计方法
EP4457644A4 (en) * 2022-11-15 2025-07-30 Yangtze Memory Tech Co Ltd Interface protocols between memory controller and nand flash memory for cache programming
CN117251107B (zh) * 2023-06-27 2024-04-16 北京忆芯科技有限公司 降低页条带写操作性能波动的方法
WO2025144672A1 (en) * 2023-12-20 2025-07-03 Computero Inc. Data backup device

Family Cites Families (72)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN111435292B (zh) 利用自适应写缓冲区释放的存储介质编程
US11243837B2 (en) Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US10635529B2 (en) Parity offload for multiple data storage devices
US10732893B2 (en) Non-volatile memory over fabric controller with memory bypass
US10725859B2 (en) Parity generation offload using peer-to-peer data transfers in data storage system
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US20210405916A1 (en) Method of operating storage device for improving qos latency and storage device performing the same
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
TW202316259A (zh) 用於控制資料處理系統中的共享記憶體的設備和方法
US20190004942A1 (en) Storage device, its controlling method, and storage system having the storage device
KR20210131058A (ko) 메모리 시스템 내 데이터를 보호하는 장치 및 방법
US20260037155A1 (en) Using a persistent byte-addressable memory in a compute express link (cxl) memory device for efficient power loss recovery
KR20220142521A (ko) 단방향 커맨드들을 이용한 온-ssd 소거 코딩
US20190235768A1 (en) Data availability during memory inaccessibility
CN118656017A (zh) 使用计算高速链路(cxl)存储器装置中的持久性字节可寻址存储器以用于高效断电恢复
US11733917B2 (en) High bandwidth controller memory buffer (CMB) for peer to peer data transfer
CN115480700A (zh) 数据存储方法、存储设备以及主机
KR20230087863A (ko) 메모리 시스템의 동작 방법 및 이를 수행하는 메모리 시스템
US11893270B2 (en) Storage device, and host-storage system including the storage device
US20240248850A1 (en) Memory device, system including the same, and operating method of memory device
EP4258097A1 (en) Operation method of host device and operation method of storage device
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
KR20250074188A (ko) 쓰기 데이터를 복수의 메모리 영역에 분산 저장하는 장치 및 방법
CN117795466A (zh) 使用子命令的存取请求管理

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant