CN112988056A - 固态驱动器和操作固态驱动器的方法 - Google Patents
固态驱动器和操作固态驱动器的方法 Download PDFInfo
- Publication number
- CN112988056A CN112988056A CN202011207118.3A CN202011207118A CN112988056A CN 112988056 A CN112988056 A CN 112988056A CN 202011207118 A CN202011207118 A CN 202011207118A CN 112988056 A CN112988056 A CN 112988056A
- Authority
- CN
- China
- Prior art keywords
- reliability
- solid state
- state drive
- entry
- configuration
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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 arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
公开了固态驱动器和操作固态驱动器的方法。SSD可以包括用于从主机上的应用接收读取请求和写入请求的接口。包括至少一个芯片的存储设备可以存储数据。SSD控制器可以处理来自应用的读取请求和写入请求。配置模块可以配置SSD。用于可靠性表的存储设备可以包括包含条目的可靠性表,所述条目指定SSD的配置和针对那些配置的可靠性。
Description
本申请要求于2019年12月16日提交的第62/948,792号美国临时专利申请和于2020年4月20日提交的第16/853,731号美国非临时专利申请的权益,所述专利申请出于所有目的通过引用包含于此。
技术领域
发明构思总体上涉及存储***,更具体地,涉及提供可变级别的可靠性的存储***。
背景技术
理想地,存储装置(诸如,固态驱动器(SSD))应是完美的:写入的每个比特可以被读取而没有错误。但现实世界是不完美的:尽管SSD制造商做出了最大努力,但还是偶尔发生错误。
为了帮助消费者,制造商可以提供对装置的可靠性的估计。例如,制造商可以报告99.99%的可靠性(或其等同物,每写入和/或读取1000个比特1个比特的平均错误率)。(事实上,这种可靠性是相对低的:它将暗示在写入SSD的几乎每个页中存在至少一个错误。然而,这种可靠性级别起示例的作用。)
然而,这种可靠性涉及写入SSD或从SSD读取的比特的数量。这种可靠性不能从应用的角度准确地反映数据的可靠性。存在由SSD执行的可能影响SSD的真实可靠性的其他功能。
有这样的需求:更准确地确定存储***的可靠性,并且控制存储***的可靠性。
发明内容
发明构思的一些实施例提供了一种固态驱动器(SSD),所述固态驱动器(SSD)包括:接口,用于从主机上的第一应用接收读取请求和写入请求;用于数据的存储设备,所述存储设备包括至少一个芯片;SSD控制器,用于使用所述存储设备处理来自主机上的第一应用的读取请求和写入请求;配置模块,用于配置所述SSD;以及用于可靠性表的存储设备,可靠性表至少包括第一条目和第二条目,第一条目识别所述SSD的第一配置和所述SSD的第一配置的第一可靠性,第二条目识别所述SSD的第二配置和所述SSD的第二配置的第二可靠性。
发明构思的一些实施例提供了一种操作固态驱动器(SSD)的方法,所述方法包括:确定对SSD的期望可靠性,SSD包括用于数据的存储设备,存储设备包括至少一个芯片;从SSD访问可靠性表中的第一条目,可靠性表至少包括第一条目和第二条目,第一条目识别SSD的第一配置和SSD的第一配置的第一可靠性,第二条目识别SSD的第二配置和SSD的第二配置的第二可靠性;以及根据第一条目配置SSD。
发明构思的一些实施例提供了一种操作固态驱动器(SSD)的方法,所述方法包括:将可靠性请求从主机上的应用发送到SSD,可靠性请求请求SSD的有效可靠性;在主机上的应用处从SSD接收SSD的有效可靠性;将可靠性表请求从主机上的应用发送到SSD,可靠性表请求请求存储在SSD上的可靠性表;在主机上的应用处从SSD接收可靠性表,可靠性表中的每个条目识别SSD的配置和SSD的配置的可靠性;至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目;以及将配置请求从主机上的应用发送到SSD,配置请求识别可靠性表中的条目。
附图说明
图1示出了根据发明构思的实施例的包括客户端和服务器的***,服务器包括固态驱动器(SSD)。
图2示出了图1的服务器的细节。
图3示出了图1的SSD的细节。
图4示出了图1的SSD的可靠性表。
图5示出了图1的SSD的可选示图。
图6示出了在图5的应用与图1的SSD之间交换的消息。
图7示出了根据发明构思的实施例的用于图1的SSD将自身配置为提供期望可靠性的示例过程的流程图。
图8示出了用于图1的SSD对自身进行配置的示例过程的流程图。
图9A至图9B示出了用于图1的SSD确定期望可靠性的示例过程的流程图。
图10示出了用于图1的SSD确定图1的SSD的有效可靠性的示例过程的流程图。
图11A至图11B示出了根据发明构思的实施例的用于图5的应用指示图1的SSD提供期望可靠性的示例过程的流程图。
具体实施方式
现在将对发明构思的实施例做出详细参照,在附图中示出了发明构思的实施例的示例。在下面的详细描述中,多个特定细节被阐述,以使对发明构思的彻底理解成为可能。然而,应理解的是,本领域普通技术人员可以在没有这些特定细节的情况下实践发明构思。在其他情况下,公知的方法、过程、组件、电路和网络未被详细描述,以免不必要地模糊实施例的方面。
将理解的是,尽管在这里可以使用术语第一、第二等来描述各种元件,但这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不脱离发明构思的范围的情况下,第一模块可以被称为第二模块,相似地,第二模块可以被称为第一模块。
这里,在发明构思的描述中使用的术语仅出于描述具体实施例的目的,而不意图成为发明构思的限制。如在发明构思的描述和所附权利要求中使用的,除非上下文另外清楚地指示,否则单数形式“一”、“一个(种/者)”和“所述(该)”也意图包括复数形式。还将理解的是,如在这里使用的术语“和/或”是指并涵盖相关所列项中的一个或多个的任何和所有可能的组合。还将理解的是,术语“包括”和/或“包含”用在本说明书中时,说明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
作为由制造商列出的可靠性如何不能准确地反映存储装置的真实可靠性的示例,考虑数据压缩。如果固态驱动器(SSD)在写入数据之前压缩数据,则压缩数据中的单个比特错误实际上可能影响原始数据中的多个比特。例如,如果以2:1的有效比例压缩数据(即,写入的数据的大小是原始数据的大小的1/2),则单个比特错误可以被预期为影响原始数据中的两个比特,实际上使平均错误率翻倍。或者在最坏的情况下,错误可能阻止SSD能够将压缩数据成功地解压为原始数据,导致整个原始数据丢失。
或者考虑重复数据删除(data dedupliaction)。在重复数据删除中,SSD尝试通过识别横跨多个文件相同的数据组块(或者甚至被等同地存储多次的整个文件)来改善存储效率。替代存储数据的多个副本,SSD可以仅存储一个副本并从包括该数据组块的各种文件引用该副本。然而,如果在原本应该被复制的数据中存在错误,则该错误成为使用该数据的每个文件中的错误,再次放大了错误率。例如,如果同一数据在三个不同的文件中被使用,则复制数据中的单个错误实际上为三个不同的文件中的三个错误。
此外,不同的应用可以各自具有不同的可靠性需求。例如,一个应用可能希望在由应用写入的1MB数据中存在不超过1个错误,而另一个应用可能希望在由应用写入的1GB数据中存在不超过1个错误。尽管应用可以指定这样的可靠率,以帮助从可用的不同存储装置之中进行选择,但当前没有用于单个存储装置支持多个不同的可靠性级别的方式。
根据实施方式,SSD可以包括多个级别,可靠性可以以所述多个级别被管理。这些级别可以包括存储器芯片自身(数据被真实地存储在存储器芯片中),存储器芯片可以是使用纠错码(ECC)模块(其可以对从存储器芯片读取的错误进行检测和/或校正)和RAID/擦除编码实施方式(其中,数据可以经由多个通道而横跨多个存储器芯片被存储,以提供一些冗余)的闪存芯片(诸如,NAND闪存芯片)、非易失性存储器芯片或其他类型的存储器芯片。
存在使用独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)或用擦除编码(Erasure Coding,EC)来提供错误检测和校正的各种方式。例如,使用RAID 1、RAID 5、RAID 6或支持纠错的任何可选的擦除编码实施方式。每个实施方式提供不同程度的可靠性。
ECC模块也可以被使用,并且可以实现任何期望的ECC算法。可以提供错误检测和/或校正的示例算法包括都作为用于执行错误检测和/或校正的公知方案的基本奇偶校验(basic parity check)、循环冗余校验(CRC)、汉明码等。每个实施方式提供不同程度的可靠性。
最后,NAND闪存芯片还可以提供关于可靠性的一些选项。例如,考虑单层单元(SLC)。SLC可以存储一个比特的数据。通过将适当的电压施加到单元,SSD可以该比特(即,通过将一个电压施加到该单元,该单元可以被确定为存储值“0”,而通过将不同的电压施加到该单元,该单元可以被确定为存储值“1”)。多层单元(MLC)存储两个比特的数据,从而需要多达4个不同的电压电平来确定存储在单元中的值;三层单元(TLC)存储多达三个比特的数据,从而需要多达八个不同的电压电平来确定存储在单元中的值;四层单元(QLC)存储多达四个比特,需要多达16个不同的电压电平来确定存储在单元中的值。
随着存储在单元中的比特的数量增加,将不同的可能存储值分离的电压范围的宽度变小。因此,与SLC将返回由于来自对施加的电压进行处理的错误而引起的错误相比,QLC将更可能返回这样的错误(对MLC和TLC而言也是如此)。此外,随着单元存储的比特的数量增加,它们倾向于支持较少的写入。因此,SLC可以支持多达100,000次数据写入,而QLC可以最多支持仅100次数据写入(在此之后,在写入数据时更可能发生错误)。(此外,因为必须被施加到单元以确定单元的值的电压的数量随着存储在单元中的比特的数量的增加而增加,所以从来自QLC的单元读取数据可能比从来自SLC的单元读取数据花费更长的时间。)
因为在存储在单元中的比特的数量与由于对输入电压的不正确处理而引起的错误的可能性之间存在关系,所以能够合理地总结出QLC比其他单元类型更可能经历这样的错误(或者可选地,QLC是最不可靠的单元类型),并且SLC最不可能经历这样的错误(或者,SLC是最可靠的)。当然,除非NAND闪存芯片提供两种类型的单元,否则不可能将数据存储在期望的单元类型中以实现特定的可靠性。然而,可以使用单元来存储比其能够存储的比特少的比特,从而提高单元的可靠性。
考虑QLC类型。如果QLC存储4个比特的数据,则其可靠性与通告的一样。然而,如果QLC存储例如仅一个比特(使其他三个比特具有默认值或“不关心(don’t cate)”值),则QLC实际上正在模拟SLC。可能由于在“不关心”比特的值之间做区分的电压的处理错误而引起的错误变得无关紧要:实际上仅存在需要被施加以确定单元中的值的两个输入电压。(发明构思的实施例不是建议QLC可以被实现为潜在地仅存储和读取一个比特,而是建议与“不关心”比特相关地返回的信息可以与可能同该信息相关的任何错误一起被忽略。发明构思的实施例也不建议在QLC中一次仅存储一个比特,这可能导致QLC支持增加数量的写入操作。)因此,如果QLC仅存储一个比特,则错误率可以被降低,从而增强了可靠性。对用于存储比设计的比特少的比特的任何单元类型而言也将是如此:因此,QLC可以模拟TLC、MLC或SLC,TLC可以模拟MLC或SLC,MLC可以模拟SLC,所有QLC、TLC和MLC在它们的可靠性上都具有提高。(注意的是,不可能反向进行:即使在单元类型的可靠性降低的情况下,也没有单元类型可以存储超过指定比特数量的信息。)
可以采用QLC并凭经验地测试它,以确定它在存储少于4个比特时有多可靠:对TLC和MLC而言也是如此。除了写入QLC的数据的量之外,该测试将与QLC(或其他单元类型)如何被测试以确定它们的正常可靠性没有区别。因此,针对每种单元类型,可以确定在存储任何数量的比特时(甚至在存储少于由单元支持的最大数量的比特时)的可靠性。
对于RAID/擦除编码和ECC模块,存在可以估计它们的可靠性的数学模型,或者它们的可靠性可以通过实际使用而被凭经验地确定(与各种单元类型的可靠性可以如何被确定非常像)
的确,SSD的各种级别上的纠错方案不是彼此完全独立的。也就是说,如果RAID实施方式和ECC模块的错误率为10-10,并且使用QLC存储仅一个比特具有10-10的错误率,则将全部三者组合起来使用将不会产生10-30的错误率(各个错误率的乘积)。然而,各种级别上的解决方案至少部分地是互补的:在SSD的多于一个级别上使用纠错方案的组合可以提供这样的可靠率,该可靠率超过可以由任何单独的级别孤立地提供的可靠率。
在制造SSD装置时,可以在各种级别上测试每个纠错组合的可靠性,并且确定任何单独的组合的总体可靠性。因此,例如,如果NAND闪存包括QLC,则将存在四种可能的变型(使用QLC来存储四个比特、三个比特、两个比特或一个比特),如果ECC提供三种不同的纠错方案,RAID/擦除编码实施方式提供10种不同的纠错变型,则将存在总共120个不同的组合(4×3×10=120)。制造商可以测试每个这样的组合,并且确定每个组合的单独的可靠性。然后,该信息可以被存储在SSD内的存储设备中:例如,在配置模块内。配置模块还可以负责在各种级别上选择适当的纠错组合,以实现期望可靠性。
在发明构思的一些实施例中,应用可以指定将要应用于它们的数据的可靠性。例如,一些应用可能要求数据是高度可靠的,而其他应用可能不太关心数据是否被丢失(诸如,对于临时数据或即使丢失也容易重构的数据)。在给定应用的指定可靠性的情况下,配置模块可以基于各种纠错组合的可靠率而使用相应的纠错组合将SSD配置为实现用于应用的数据的该目标可靠性。注意的是,如果多个应用正在将数据写入同一SSD,则配置模块可以将整个SSD配置为以由任一应用要求的最高可靠性操作,或者配置模块可以将SSD的不同区域配置为在不同的可靠性级别上操作。例如,在不改变RAID或ECC实施方式的情况下,SSD可以针对要求较高可靠性的数据而在QLC中仅存储一个比特,并且可以针对容忍较低可靠性的数据而在QLC中存储四个比特。注意的是,发明构思的实施例可以支持以任何期望的数据单位(页、块、平面、裸片、芯片或在整个SSD上)来管理可靠性。
在发明构思的其他实施例中,应用可以简单地提供数据,而不另外提供对数据的可靠性需求。在发明构思的这样的实施例中,更具体地,在发明构思的其中SSD可以使用压缩、重复数据删除或可能影响可靠性的任何其他事务的实施例中,SSD可以跟踪任何特定数据单位的有效可靠性是什么(多少)。因此,如果应用的原始数据正在被压缩,则SSD可以跟踪数据的有效压缩率,数据的有效压缩率可以用于确定用于错误率的乘数。或者,如果SSD使用重复数据删除,则SSD可以跟踪多少文件正在共享特定数据单位,这(也)可以用于确定用于错误率的乘数。然后,为了确保通告可靠性被实现,配置模块可以将该信息与各种纠错组合的可靠率组合起来使用,以选择提供通告可靠率的适当组合(考虑错误如何基于SSD的操作而倍增)。
注意的是,可靠性不是在选择纠错组合以实现目标可靠性时考虑的唯一变量(尽管它可以是主要变量)。如果可靠性单独作为唯一考虑因素,则SSD可以简单地被配置为使用提供最高可靠性的纠错组合并按其执行:更高的可靠性不能被实现。然而,各种纠错组合还具有其他影响。这些其他影响包括空间开销和性能。例如,如果QLC用于仅存储一个比特的信息,则QLC以较高的可靠性操作,但在存储方面仅有1/4的效率(因为QLC可以存储多达四个比特)。性能也是考虑因素:不同的纠错组合可能需要不同的时间来处理数据,这可能影响SSD的延迟。
因此,考虑到其他考虑因素,配置模块可以选择使用哪个纠错组合来将SSD配置为提供目标可靠性。例如,如果空间开销被认为是重要因素,则使QLC存储四个比特的数据(更多地依赖于ECC模块或RAID/擦除编码)的纠错组合可以优于在QLC中仅存储一个比特的纠错组合。可选地,如果与空间开销相比,性能是更大的问题,则即使更少地依赖于ECC模块或RAID/擦除编码来校正数据的纠错组合意味着QLC仅存储一个比特的数据,它也可以是有利的。
图1示出了根据发明构思的实施例的包括客户端和服务器的***,服务器包括固态驱动器(SSD)。在图1中,客户端105-1和105-2被示出为通过网络115与服务器110通信。客户端105-1和105-2以及服务器110可以呈客户端-服务器关系:客户端105-1和105-2可以发出命令,服务器110可以执行这些命令。可选地,服务器110可以是由终端用户直接使用的计算机,从而避免了客户端105-1和105-2的参与。
网络115可以是任何种类的网络或各种网络。例如,网络115可以包括局域网(LAN)、广域网(WAN)、城域网(MAN)或全局网络(诸如,互联网)以及其他可能性。数据可以直接通过网络115发送,或者它可以被保护:例如,使用加密或虚拟专用网络(VPN)。网络115可以包括有线或无线连接。此外,网络115可以包括这些可选项的任何期望的组合。例如,客户端105-1和105-2可以经由无线连接连接到LAN,LAN继而经由有线连接连接到互联网,互联网继而连接到连接有服务器110的另一LAN。客户端105-1和105-2与服务器110之间的连接可以变化:连接不必在所有情况下都相同。
服务器110可以包括处理器120、存储器125和固态驱动器(SSD)130。处理器120可以包括包含操作***、应用、存储软件(诸如,文件***)和控制器软件的软件栈,以管理附接到服务器110的装置(诸如,存储器125和SSD 130)。处理器120可以是任何种类的处理器:例如,Intel Xeon、Celeron、Itanium或Atom处理器、AMD Opteron处理器、ARM处理器等。尽管图1示出了单个处理器120,但服务器110可以包括任何数量的处理器,每个处理器可以是单核处理器或多核处理器,并且可以以任何期望的组合进行混合。
存储器125可以是在服务器110中使用的传统存储器。存储器125可以是任何种类的存储器(诸如,闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、持久性随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)(诸如,磁阻式随机存取存储器(MRAM)等))。存储器125可以是易失性存储器或非易失性存储器。存储器125还可以是不同存储器类型的任何期望的组合。存储器125可以由存储器控制器(图1中未示出)管理,存储器控制器可以是服务器110中的具有驱动器的单独组件,驱动器是软件栈的一部分。存储器125可以用于存储可被称为“短期数据”的数据:即,预期不被长时间存储的数据。短期数据的示例可以包括临时文件、由应用本地使用的数据(其可能已经从其他存储位置被复制)等。
处理器120和存储器125还可以支持操作***,各种应用可以在操作***下运行。这些应用可以发出用于从存储器125或SSD 130读取数据或将数据写入存储器125或SSD130的请求。与存储器125可以用于存储可被称为“短期数据”的数据不同,SSD 130可以是用于存储被认为是“长期数据”的数据(即,预期被长时间存储的数据)的存储装置。SSD 130可以使用在处理器120上运行的软件栈中的控制器软件来访问。尽管图1仅示出了一个SSD130,但发明构思的实施例可以包括任何类型的且经由任何期望的连接进行连接的存储装置。因此,SSD 130可以用串行AT附件(SATA)硬盘驱动器、以太网SSD(Ethernet SSD)或其他任何类型的存储装置来替换。此外,发明构思的实施例可以包括任何数量的(零个或多个)存储装置,每个存储装置可以具有任何期望的类型:因此,多种不同类型的存储装置可以被混合在服务器中。
图2示出了图1的服务器110的细节。在图2中,通常,服务器110可以包括一个或多个处理器120,处理器120可以包括存储器控制器205和时钟210,时钟210可以用于协调机器(例如,服务器110)的组件的操作。处理器120还可以结合到存储器125,作为示例,存储器125可以包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保持介质。处理器120还可以结合到存储装置130并且结合到网络连接器215,网络连接器215可以是例如以太网连接器或无线连接器。处理器120还可以连接到总线220,用户接口225和输入/输出接口端口以及其他组件可以附接到总线220,输入/输出接口端口可以使用输入/输出(I/O)引擎230来管理。
图3示出了图1的SSD 130的细节。在图3中,SSD 130可以包括主机接口逻辑(HIL)305、SSD控制器310和各种存储器芯片315-1至315-8(也被称为“存储器存储设备”),存储器芯片315-1至315-8可以被组织为各种通道320-1至320-4。主机接口逻辑305可以管理SSD130与其他组件(诸如,图1的处理器120或者其他SSD)之间的通信。这些通信可以包括用于从SSD 130读取数据的读取请求和用于将数据写入SSD 130的写入请求。主机接口逻辑305可以仅通过单个端口管理接口,或者它可以通过多个端口管理接口。可选地,SSD 130可以包括多个端口,多个端口中的每个可以具有用于通过该端口管理接口的单独的主机接口逻辑305。发明构思的实施例还可以将可能性混合(例如,具有三个端口的SSD可以具有用于管理一个端口的一个主机接口逻辑和用于管理其他两个端口的第二主机接口逻辑)。
SSD控制器310可以使用存储器控制器(图3中未示出)来管理存储器芯片315-1至315-8上的读取操作和写入操作以及垃圾收集操作和其他操作。存储器芯片315-1至315-8可以是任何种类的存储器芯片(诸如,NAND闪存芯片或其他非易失性存储器芯片),但发明构思的实施例可以扩展至其他存储***(诸如,非易失性RAM(NVRAM))。
SSD控制器310可以包括转换层325、纠错码模块330、RAID/擦除编码模块335、配置模块340和可靠性表存储设备345。转换层325可以管理从由在图1的处理器120上运行的应用使用的逻辑块地址(LBA)到在SSD 130上真实地存储有数据的物理块地址(PBA)的映射。通过使用转换层325(在发明构思的一些实施例中,转换层325还可以被称为闪存转换层325),SSD 130可以在存储器芯片315-1至315-8上四处移动数据,而不必使应用跟上数据当前驻留的位置(例如,这可能在应用请求用新值覆写数据时发生(SSD通常不支持就地(inplace)覆写数据,并且因此将新数据存储在新位置中),或者这可能在含有一些有效数据的块经历垃圾收集时发生)。转换层325可以被实现为存储在位于SSD 130内某处的一些(优选地)非易失性存储装置中的表。
纠错码(ECC)模块330可以将纠错码应用于将要写入存储器芯片315-1至315-8的数据。在发明构思的一些实施例中,ECC模块330可以应用于数据,而与哪个存储器芯片315-1至315-8将存储数据无关;在其他实施例中,每个通道320-1至320-4(或每个存储器芯片315-1至315-8)可以具有它自己的ECC模块330。ECC模块330可以实现任何期望的纠错算法,并且因此可以(根据实现的算法)支持任何数量的错误的检测和/或校正。可被ECC模块330使用的示例算法包括诸如奇偶校验码、循环冗余校验(CRC)码或汉明码。ECC模块330可以使用执行适当指令的通用处理器来实现,或者可以使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理器(GPU)或任何其他期望的实施方式来实现。
RAID/擦除编码模块335可以实现任何期望的RAID或擦除编码方案,以将数据存储在存储器芯片315-1至315-8上。(因为独立磁盘冗余阵列(或RAID)描述了擦除编码的实施方式的特定集合,所以RAID/擦除编码模块335可以被更一般地描述为在功能上没有减少的擦除编码模块。)通常,RAID/擦除编码模块335可以获取将要写在SSD 130上的数据,将该数据划分成各种单位,并且将那些单位存储在不同的存储器芯片315-1至315-8上。为了引入冗余,相同的数据可以被存储在多个存储器芯片315-1至315-8上,或者纠错信息(诸如,奇偶校验码、CRC码或汉明码)可以被使用。以这种方式,错误可以被检测或校正。(注意的是,相同的基本方法可以在RAID/擦除编码模块335和ECC模块330两者中以不同的规模(scale)被使用:因此,解决方案可以彼此互补。)擦除编码模块335可以使用执行适当指令的通用处理器来实现,或者可以使用FPGA、ASIC、GPU或任何其他期望的实施方式来实现。
配置模块340可以用于对什么技术将用于改善可靠性进行编程。尽管人们可能想知道不同的可靠性技术可以如何被使用,但答案是简单的。ECC模块330和RAID/擦除编码模块335可以为不同的纠错技术提供支持。每种纠错技术具有(潜在地)不同的可靠率。配置模块340可以用于就哪种纠错可以在给定时间被使用而对ECC模块330和/或RAID/擦除编码模块335进行指示。
然而,该答案导致后续的问题:如果存在提供不同程度的可靠性的不同纠错技术,则为什么不一直使用最可靠的方法呢?答案是:不同的技术可能对SSD 130的操作具有其他意义,这可能抵消较大可靠性的益处。例如,考虑这样的可能性:同一数据可以被存储在存储器芯片315-1至315-8中的每个中。该方法引入了数据的八重复制,单个存储器芯片的失效将不会导致数据的丢失。该方法的缺点是:因为同一数据被存储八次,所以SSD 130的总可用存储不会大于单个存储器芯片的总可用存储。换言之,由SSD 130提供的总可用存储将仅为由SSD 130提供的真实存储的八分之一,或者可选地,可用存储的87.5%针对数据的冗余副本而被保留。如果数据如此敏感,以至于八重复制是必须的,则这种代价可以是可接受的;但对于大多数用户而言,这样的冗余是过度的,而可用存储的减少是不可接受的。
因此,配置模块340可以用于将ECC模块330和RAID/擦除编码模块335指示(或编程,或配置:任何术语可以是优选的)为使用由ECC模块330和RAID/擦除编码模块335提供的技术中的特定技术。
除了ECC模块330和RAID/擦除编码模块335之外,存在可以由配置模块340配置的其他组件:具体地,存储器芯片315-1至315-8。不同的存储器芯片可以提供用于存储数据的不同方式,这可能影响存储器芯片的可靠性。为了理解该事实,理解不同类型的存储器存储设备是重要的。
存储器根据正在发生的情况而以不同级别的粒度来管理数据。例如,用于读取和写入数据的基本访问单位是页(其可以具有任何期望的大小:例如,4KB的数据)。如果页是空闲的,则页可以被写入。然而,当新数据替换旧数据时,页可能无法被覆写:在该情况下,原始页可以被标记为无效,新数据可以被写入新页。页被组织为被称作块的组:例如,一个块可以具有64个页或128个页。块(或作为一组块的超级块)通常是用于擦除数据(其使页返回到待重新写入的空闲状态)的单位。因此,如果在针对擦除而已经选择的块中存在任何有效数据,则有效数据应在块被擦除之前被复制出块(以免有效数据在块被擦除时被丢失)。
然而,即使在较精细的级别上,也存在数据存储上的变型。单独的单位(被称为单元)以比页更精细的粒度来存储数据。(单独的单元不能被直接访问:整个页可以作为单位被读取或写入。)每个单元被设计为当不同的电压被施加时进行响应:这些不同的响应可以用于从单元读取值(或将数据写入单元)。
在最简单的形式中,单元具有单元的响应在其处改变的单个触发电压(触发电压可以被认为是分界点)。也就是说,施加低于该触发电压的电压时的响应与施加高于该触发电压的电压时的响应不同。因此,例如,如果输入电压可以从0V至5V任意变化,则2.5V可以是单元可以开始响应的点。(单元如何响应可以取决于存储在单元中的值。例如,如果单元表示二进制值0,则单元可以输出一个电压,而如果单元表示二进制值1,则单元可以输出另一电压。)仅存储单个比特的单元有时被称为单层单元(SLC)。
多层单元(MLC)是指存储多于一个比特的单元。尽管“多个”可以被理解为意味着“两个或更多个”,但实际上,MLC通常可以存储两个比特,同时,三层单元(TLC)可以存储三个比特,四层单元(QLC)可以存储四个比特,以此类推。因为MLC(以及存储多于一个比特的所有其他类型的单元)存储多个比特,所以MLC具有多个触发电压。例如,如果输入电压可以从0V至5V任意变化,则MLC可以具有1V、2V、3V和4V的触发电压。根据触发电压,闪存芯片可以确定存储在单元中的真实值。因此,例如,如果触发电压是1V,则单元可以存储值00;如果触发电压是2V,则单元可以存储值01;如果触发电压是3V,则单元可以存储值10;如果触发电压是4V,则单元可以存储值11。
各种单元类型具有不同的优点/缺点。显然,每单元存储多于一个比特的信息的能力意味着需要较少的单元来存储相同量的数据。因此,如果将数据存储在SLC中,则为了存储相同量的数据,需要的SLC比将需要的MLC、TLC或QLC多。尽管存储较多比特的单独的单元倾向于比存储较少比特的单元贵,但增加的成本可以通过需要较少的这样的单元来抵消。因此,为了存储相同量的数据,通常,QLC可以比TLC便宜,TLC可以比MLC便宜,MLC可以比SLC便宜。
然而,存在可以抵消成本的其他因素。首先,因为SSD必须针对多个不同的电压来测试单元,以确定存储在单元中的值,所以需要被执行的较多的这样的测试可能减慢单元的性能。例如,考虑QLC。因为QLC存储四个比特的数据,所以QLC可以取16个可能值中的任何一个。因此,读取QLC可能需要针对16个可能的触发电压来测试QLC,这比针对两个触发电压来测试单元花费更长的时间。因此,QLC可能比TLC读取得慢,TLC可能比MLC读取得慢,MLC可能比SLC慢。此外,单元可以存储的比特越多,单元的寿命中的编程/擦除周期的数量越少。例如,在单元可能失效之前,SLC可以保证100,000个编程/擦除操作,而对于MLC,该数量可能下降到10,000个,对于TLC,该数量可能下降到1,000个,对于QLC,该数量可能下降到100个。因此,不同类型的单元可以较好地用于不同的存储配置(storage profile):QLC可以较好地用于存储几乎从不改变的数据,而SLC可以用于随相对频率而改变的数据。
单元类型的最后一个缺点再次与存储较高密度的数据的单元所需要的触发电压的数量有关。触发电压的数量越大,那些触发电压可能彼此间隔得越接近。然而,触发电压彼此越接近,单元越容易遭受潜在的错误。例如,考虑QLC。因为QLC可以存储四个比特的数据,所以在QLC中存在16个可能值。在16个可能值之间进行区分可以需要16个触发电压,这意味着触发电压之间的间隙可能稍微大于0.25V。对于单元而言,不需要电压的巨大下降或浪涌就会使单元认为其正在响应与实际期望的电压不同的电压,这意味着QLC可能错误地响应读取单元的尝试。(尽管错误的裕度因存在较少的触发电压要考虑而较大,但该相同的分析也适用于MLC单元类型和TLC单元类型。)
因此,返回到可靠性的问题,QLC可以存储较高密度的数据,但以降低的错误裕度为代价。然而,仅因为QLC(或者存储两个或更多个比特的数据的任何类型的单元)可以存储多个比特,并不意味着QLC(或者存储两个或更多个比特的数据的任何类型的单元)必须存储多个比特。这样的QLC可以用于存储少于四个比特的数据,并且分配给QLC中的其他比特的任何值在读取操作时被忽略。通过在QLC中存储较少的比特,触发电压的实际数量被减少,这可以使错误的裕度加宽。(注意的是,QLC仍然可以被硬连线,以针对所有16个触发电压进行测试;仅错误的可能性被降低,而访问单元所需要的时间未被减少。)
例如,假设QLC仅用于存储一个比特的数据。该值(或该比特)(其是0或1)可以被存储在QLC的四个位中的任何一个中,并且其他位实际上被SSD忽略(即,那些位可以在单元被写入时被分配任何的任意值,从那些位读取的任何值可以被忽略,并且仅感兴趣的位可以被返回)。因为QLC现在实际上仅具有一个触发电压,所以单元(例如,由于电压波动)被错误地写入或读取的可能性被降低。
因此,还可以通过改变每个存储器芯片315-1至315-8的操作行为来影响SSD的可靠性。然而,存在要考虑的若干个问题。首先,SSD的可靠性是否可以通过改变存储器芯片315-1至315-8的操作行为来影响取决于存储器芯片315-1至315-8中使用的单元的类型。单元的数据密度越高,所存在的影响SSD的可靠性的选项越多。例如,SLC仅存储一个比特的数据,因此,仅使用SLC的SSD的可靠性不能通过改变SLC的操作行为来改善。
此外,上述改善仅在一个方向上操作。能够存储较高密度的数据的单元可以通过忽略单元中的一些比特而用于存储较低密度的数据。然而,不可能通过尝试在单元中存储比单元可以存储的比特多的比特来降低SSD的可靠性。例如,因为SLC仅可以存储一个比特的数据,所以不可能在SLC中存储两个比特(与可以容忍的可靠性的降低无关)。(当然,存储比其能够存储的比特少的比特的单元可以使其数据密度增大,只要该增大不超过单元的能力。因此,例如,能够存储四个比特但当前仅存储两个比特的QLC可以使其数据密度增大到三个比特或四个比特,但不能使其数据密度增大到五个比特。)
其次,与将存储器芯片315-1至315-8都用于存储同一数据一样,在单元中存储比其能够存储的比特少的比特可能导致SSD的较少的可用存储。例如,考虑使用QLC单元并具有1TB的总可用存储容量的SSD。如果QLC用于每单元仅存储一个比特,则SSD仅具有256GB(总可用存储容量的25%)的有效容量:剩余768GB的存储在QLC的未使用的比特中被“丢失”。
另一方面,不同的存储器芯片可以被配置为实现不同的总体可靠性。因此,例如,假设存储器芯片315-1至315-8都使用QLC单元。存储器芯片315-1可以被配置为在每个单元中仅存储一个比特,从而以减少的可用存储为代价来提供提高的可靠性。另一方面,存储器芯片315-2可以被配置为在每个单元中存储四个比特,从而以较低的可靠性为代价来提供最大的可用存储。
配置模块340可以使用执行适当指令的通用处理器来实现,或者使用FPGA、ASIC、GPU或任何其他期望的实施方式来实现。在图3中,ECC模块330、RAID/擦除编码模块335和配置模块340被示出为不同的组件。因为这些组件可以被单独地制造并且被安装在SSD 130中,所以它们可以被实现为单独的组件。此外,这些组件实际上可以驻留在物理上不同的位置中。例如,如以上讨论的和以下参照图5进一步讨论的,ECC模块330可以应用于单独的通道(但应用于多个存储器芯片),而RAID/擦除编码模块335可以在多个通道上应用。在这样的配置中,ECC模块330、RAID/擦除编码模块335和配置模块340中的任何一个不太可能使用公共硬件来实现。然而,在发明构思的一些实施例中,对于这些组件中的任何一个或全部而言,使用公共硬件来实现可以是可行的。
以上讨论集中于配置模块340为了配置存储器芯片315-1至315-8、ECC模块330和RAID/擦除编码模块335可以做什么,但尚未就什么将触发配置模块340执行这样的操作给出解释。下面,图5至图6讨论了什么可以触发配置模块340执行其操作。
最后,为了支持配置模块340,SSD 130可以包括可靠性表存储设备345。可靠性表存储设备345可以存储可靠性表。该可靠性表可以提供关于由存储器芯片315-1至315-8、ECC模块330和RAID/擦除编码模块335所使用的方案的各种组合提供的可靠性的信息。
图4示出了图1的SSD 130的可靠性表。在图4中,示出了可靠性表405。可靠性表405包括各种列(诸如,存储方案410、ECC方案415和擦除编码方案420)。共同地,存储方案410、ECC方案415和擦除编码方案420形成配置425:即,对于可靠性表405中的给定条目,存储方案410、ECC方案415和擦除编码方案420指定图3的存储器芯片315-1至315-8、图3的ECC模块330和图3的RAID/擦除编码模块335可以被如何配置。其他列可以包括可靠性470(其可以指定给定配置的总体可靠性)、空间开销430(其可以指定由使用特定配置引起的任何空间限制)和性能435(其可以指定由使用特定配置引起的任何性能限制)。如果可靠性单独作为如何配置图1的SSD130的驱动考虑因素,则空间开销430和性能435可以从可靠性表405被省略。
可靠性表405可以包括图1的SSD 130的各种可能配置的条目。例如,图4将可靠性表示出为包括六个条目440、445、450、455、460和465。每个条目表示图1的SSD 130的不同的可能配置。因此,例如,条目440识别这样的配置的可靠性,该配置对图3的存储器芯片315-1至315-8使用存储方案1,对图3的ECC模块330使用ECC方案1,并且对图3的RAID/擦除编码模块335使用擦除编码方案1。对于该配置,总体可靠性为写入或读取的1012个比特中1个错误。该配置也不施加空间开销和性能开销(条目440可以表示例如图1的SSD 130的默认配置,在这种情况下,条目440的可靠率可以是图1的SSD 130的通告可靠率)。相反,条目445表示这样的配置,该配置对图3的存储器芯片315-1至315-8使用存储方案2,对图3的ECC模块330使用ECC方案1,并且对图3的RAID/擦除编码模块335使用擦除编码方案1。该配置具有写入或读取的1014个比特中1个错误的可靠率,但施加了图1的SSD 130的可用存储容量的50%的减少(但未施加性能开销)。例如,条目445可以表示为了冗余而将数据写入两个不同的存储器芯片的配置,这改善了SSD 130的总体可靠性,但以减少可用存储量为代价。
条目450和455与条目440和445相似,但图3的ECC模块330使用ECC方案2。如可以看到的,这些配置分别具有1016个比特中一个错误的可靠率和1018个比特中1个错误的可靠率:比条目440和445中示出的配置改善104倍。然而,因为ECC方案2可能需要比ECC方案1多的计算资源,所以由条目450和455表示的配置可能施加25%的性能损失(performancehit)(即,与使用由条目440和445表示的配置相比,使用由条目450和455表示的配置,图1的SSD 130可能需要多25%的时间来处理读取和/或写入请求)。
条目460和465与条目440和445相似,但图3的RAID/擦除编码模块335使用擦除编码方案2。如可以看到的,这些配置分别具有1014个比特中一个错误的可靠率和1017个比特中1个错误的可靠率,这表示好10倍至100倍的可靠性。然而,因为擦除编码方案2可能需要比擦除编码方案1多的计算资源,所以由条目460和465表示的配置可能施加10%的性能损失(即,与使用由条目440和445表示的配置相比,使用由条目460和465表示的配置,图1的SSD 130可能需要多10%的时间来处理读取和/或写入请求)。
注意的是,由擦除编码方案2单独提供的改善对于由条目460和465表示的两种配置是不同的。条目460和465表示这样的事实:尽管相对于仅一个组件提供任何可靠性,将用于图1的SSD 130的不同组件的不同方案进行组合可以提供改善,但将用于不同组件的方案进行组合的益处也不是完全正交的。换言之,使用多个组件的可靠性选项可以优于使用单个组件的可靠性选项,但当使用两个组件来增强可靠性时,不能为了确定可靠率而简单地将两个组件的可靠率相乘在一起。因此,例如,即使在图3的存储器芯片315-1至315-8、图3的ECC模块330和图3的RAID/擦除编码模块335中存在提供读取或写入的1010个比特中1个错误的错误率的特定方案,一起使用所有三个方案也不一定导致读取或写入的1030个比特中一个比特的错误率。
因此,如果方案的组合的可靠率不能被计算为单独的方案的可靠率的乘积,则如何可以针对可靠性表405中的条目而确定特定配置的可靠率呢?对于图1的SSD 130的制造商而言,答案是单独地测试每种可能的配置。也就是说,各种SSD可以被配置为使用配置中的每种可能的组合。然后,这些SSD可以被测试,以了解它们各自的错误率(以及空间开销和性能开销)是多少。然后,该信息可以被存储在根据同一规范制造的所有SSD的可靠性表405中。
此外,尽管图4仅为使用图3的存储器芯片315-1至315-8、图3的ECC模块330和图3的RAID/擦除编码模块335中的每者的可靠性(以及空间开销和性能开销)示出了不同方案的组合,但可靠性表405还可以用于示出单独的方案的可靠率(以及空间开销和性能开销(如果期望))。例如,可靠性表405可以包括用于图3的存储器芯片315-1至315-8的存储方案1和存储方案2的条目,而不具有用于图3的ECC模块330或图3的RAID/擦除编码模块335的相关联方案:在该情况下,那些条目可以分别表示使用存储方案1和存储方案2的可靠率(而不添加来自图3的ECC模块330或图3的RAID/擦除编码模块335的任何可靠性增强)。相似地,可靠性表405可以包括仅用于ECC方案1和ECC方案2以及/或者用于擦除编码方案1和擦除编码方案2的条目。
可靠性表405可以沿着多个轴被搜索。例如,可靠性表405可以用于确定特定配置的可靠性(以及其他结果(诸如,空间开销和/或性能))。可靠性表405还可以用于确定支持特定可靠性的配置。也就是说,在给定特定的期望可靠率的情况下,可靠性表405可以被搜索以找到提供该可靠率(或优越的可靠率)的特定配置。
如果多个配置可以提供期望可靠率(或优越的可靠率),则图3的配置模块340可以使用任何期望的方法在选项之间进行选择。例如,图3的配置模块340可以选择这样的配置,该配置提供满足或超过期望可靠率的最高可靠率或者最低可靠率。或者,图3的配置模块340可以使用配置的空间开销结果和/或性能结果(如果配置的空间开销结果和/或性能结果被包括在可靠性表405中)来选择这样的配置,该配置提供具有最少的其他结果的足够的可靠率。图3的配置模块340还可以使用任何其他期望的技术从提供足够的可靠性的多个配置之中进行选择。
为了帮助识别可靠性表405中的特定组合,可靠性表405还可以包括标识符475。标识符475可以是分配给可靠性表405中的每个条目的唯一标识符。因此,例如,条目440可以被分配标识符“1”,条目445可以被分配标识符“2”,以此类推。注意的是,不要求标识符475是数字的或顺序的。例如,标识符475可以是随机字符串,或者在条目中示出的信息的散列,或者任何其他期望的标识符。唯一有帮助的要素是:标识符475可以是唯一的,使得可靠性表405中的唯一条目可以使用给定的标识符来定位。
返回到图3,尽管图3将SSD 130示出为包括被组织为四个通道320-1至320-4的八个存储器芯片315-1至315-8,但发明构思的实施例可以支持被组织为任何数量的通道的任何数量的存储器芯片。相似地,尽管图3示出了SSD的结构,但其他存储装置(例如,硬盘驱动器)可以使用不同的结构来实现,但具有相似的潜在益处。
图5示出了图1的SSD 130的可选视图。在图5中,SSD 130被示出为包括RAID/擦除编码模块335以及ECC模块330-1、330-2和330-3,ECC模块330-1、330-2和330-3可以分别沿着通道320-1、320-2和320-3操作,通道320-1、320-2和320-3包括存储器芯片315-1、315-3和315-5。因此,数据可以使用RAID或擦除编码来组织,以被存储在多个存储器芯片上,多个存储器芯片中的每个可以在不同的(或相同的)通道上。
数据可以从应用505-1和505-2(尽管可以存在任何数量的(一个或多个)应用)被接收。每个应用可以具有它自己的期望可靠性510-1和510-2。每个应用的期望可靠性表示该应用期望的可靠率。注意的是,可靠性510-1和510-2不必一致:每个应用可以预期不同的可靠率。
每个应用505-1和505-2可以分别具有它自己的相关联的命名空间515-1和515-2。命名空间515-1和515-2提供用于对来自每个应用的数据进行组织的方式,使得数据可以被容易地识别和/或分组在一起。命名空间515-1和515-2的使用是可选的。
图5涉及重复数据删除和数据压缩的概念。重复数据删除引用这样的想法:可以存在存储在SSD 130上的特定数据的多个副本。单个副本可以被存储,其他副本引用存储的副本,而不是存储多个副本。在这样做时,将在存储多个文件时使用的空间量被减少。
例如,考虑图像文件(诸如,图片(照片))。同一照片可能以不同的文件名被存储多次并不罕见(因为容易忘记照片先前使用了不同的名称存储)。然而,对于主机或SSD 130而言,对特定文件是先前存储的文件的副本进行识别是足够简单的(假设SSD 130包括用于识别副本文件的一些处理能力)。不需要多次存储同一照片:单个副本(与来自存储有副本其他文件夹的引用一起)将是足够的。
作为如何可以识别数据复制的示例,可以生成每个文件的密码散列。如果两个文件的密码散列相同,则存在两个文件包含同一数据的可能性(或许,强的可能性)。因此,确定新文件是否是已经存储在SSD 130上的文件的副本仅需要:生成新文件的密码散列,将该密码散列与其他文件的密码散列进行比较(可能使用散列表),并且如果匹配被找到,则执行匹配文件中的数据的(详细)比较。
注意的是,重复数据删除可以按任何期望的数据单位操作。尽管文件是用于重复数据删除的常用单位,但其他单位可以是块或页(SSD 130内的数据单位)。另外的其他数据单位也可以被使用。
另一方面,压缩是指这样的技术,数据可以通过该技术以比原始数据占用更少空间的方式被存储。例如,考虑数字10100(通常被称为10的100次方(googol))。将该数字存储为原始值将需要大致2300个比特或238个字节(假设计算机被设计为存储这样大的整数)。另一方面,该数字还可以被表示为被100个“0”跟随“1”。使用编码方案(诸如,游程编码(RunLength Encoding)),该值可以使用四个字节来表示:1、1、100、0(即,值“1”的一个副本和值“0”的100个副本)。因为四个字节大大小于238个字节,所以对该值使用编码的空间节省至少可以说是显著的。(尽管作为术语的“压缩”通常是指使用诸如霍夫曼码(Huffman code)的结构对数据进行编码的算法,但在本上下文中,“压缩”是指可以用于减少数据占用的空间量的任何技术,并且因此可以包括通常涉及使用诸如“编码”的术语的技术。)
尽管重复数据删除和数据压缩因它们减少了可能呈现在存储装置上的“占用体积”数据而具有它们的益处,但它们也具有潜在的缺点,特别是当讨论错误时。例如,假设如存储在SSD 130上的特定文件实际上包含用于五个不同文件(一个原始文件和四个副本)的数据。因为四个副本指向与原始文件相同的数据,所以如果在存储的文件中的任何地方存在单个比特错误,则每当不同的文件中的任何文件被访问,该错误将被读取。因此,存储在SSD130上的数据的单个比特错误实际上将更好地被理解为五个比特错误:原始文件和每个副本中一个相同的比特错误。换言之,重复数据删除已经将SSD130的错误率放大文件的引用副本的数量那么多倍。
相似地,压缩可能影响真实错误率。再次考虑可以如何使用游程编码来存储10100的示例。如果值“0”被“1”(单个比特错误)替换,则该错误将横跨编码的整个长度被放大。替代表示10100,编码现在将表示重复101次的数字“1”:一个非常不同的值。因此,压缩数据上的单个比特错误实际上可能更有效地意味着大量的比特错误。作为通则,单个比特错误可以与使用的技术的压缩率成比例地被粗略地放大。因此,如果压缩技术导致将数据压缩两倍(即,占用一半的空间),则单个比特错误实际上意味着数据中的两个比特错误;如果压缩技术导致将数据压缩三倍(即,占用三分之一的空间),则单个比特错误实际上意味着数据中的三个比特错误,以此类推。(在最坏的情况下,压缩数据中的单个比特错误实际上可能使恢复原始数据不可行。)
因此,尽管图4的可靠性表405中的条目对于SSD 130的可靠性而言是有用的起点,但它们不能完全表示SSD 130的真实可靠性。为此,SSD 130(可能通过配置模块340)可以跟踪正在代表应用505-1和505-2执行的事务(重复数据删除和数据压缩是事务的两个示例),并且使用那些事务来确定乘数。然后,(如基于SSD 130的配置从图4的可靠性表405确定的)SSD 130的可靠性可以乘以该乘数,以确定SSD 130的有效可靠率。
用于可靠率的乘数可以使用任何期望的方法来确定。例如,SSD 130可以跟踪特定事务,确定适用于该事务的乘数,然后保留该乘数和先前乘数中的较大乘数。然而,这种方法假设乘数是彼此独立的。如果重复数据删除是唯一被使用的可能引入乘数的技术,或者如果压缩是唯一被使用的可能引入乘数的技术,则这样的假设可以是合理的。然而,如果被压缩的文件随后经历重复数据删除,则作为两种空间节省方案的结果,单个比特错误可能倍增。
因此,SSD 130不仅可以跟踪到目前为止的最高乘数,而且可以单独地跟踪适用于每个空间节省方案的最高乘数。那样,SSD 130不仅可以考虑新乘数对于单个方案是否是最高乘数,而且可以考虑乘数是否可以跨方案。例如,假设SSD 130当前跟踪以下内容:2.0为最高压缩乘数,5.0为最高重复数据删除乘数,5.0为最高总体乘数(按照经历压缩的文件没有在SSD 130上被存储超过两次的假设)。然后,如果SSD 130跟踪到先前已经被压缩和重复删除的文件被第三次写入,则那将意味着该文件的三个副本现在已经被存储在SSD 130上(并且已经被重复删除)。因此,尽管该事务不增大最高压缩乘数(因为尚未发生新的压缩)或最高重复删除乘数(因为用于任何文件的当前最大副本数量为5),但最高总体乘数可能被增大至6.0(因为存在受乘数2.0制约的压缩文件的三个副本)。因此,无论可靠率可能另外地为多少(如在图4的可靠性表405中可以通告的),该可靠率都可以乘以6.0,以确定SSD130的有效可靠性。可选地,SSD 130可以分别跟踪用于压缩和重复数据删除的最高乘数,并且将它们两者应用于可靠性,以确定SSD 130的最小有效可靠性。(因为可能不存在存储在SSD 130上的经历压缩和重复数据删除两者的数据,所以该计算可能过度强调事务的影响,但保守计算仍然可以被使用。)
事务的对SSD 130的有效可靠性的这种影响也可以作为用于SSD 130的配置的选择的因素。例如,在知道由于存储在SSD 130上的数据而存在乘数的情况下,配置模块340可以在将各种配置的可靠性与应用505-1和505-2的期望可靠性510-1和510-2进行比较时使用该乘数。也就是说,简单地将图4的可靠性表405中列出的可靠性与期望可靠性510-1和510-2进行比较可能是不够的:在给定当前存储在SSD 130上的数据的情况下,图4的可靠性表405中列出的可靠性可能需要根据乘数被调整,以反映SSD 130的有效可靠性。
图6示出了在图5的应用505-1与图1的SSD 130之间交换的消息。在发明构思的一个实施例中,应用505-1可以向SSD 130发送可靠性消息605:可靠性消息605可以包括图5的期望可靠性510-1。(尽管在图6中未示出,但图5的应用505-2以及使用SSD 130的任何其他应用也可以发送它们自己的期望可靠性。)然后,如由自配置610所示,SSD 130可以(使用图3的配置模块340)将自身配置为满足所有的提供的期望可靠性(即,通过满足提供的最严格的可靠性来满足所有的提供的期望可靠性)。
然而,在发明构思的另一实施例中,应用505-1可以发送可靠性请求615。可靠性请求615可以请求(如上述所确定的)SSD 130的有效可靠性,SSD 130的有效可靠性可以作为消息620被返回。应用505-1还可以发送可靠性表请求625,可靠性表请求625可以向SSD 130请求图4的可靠性表405:SSD 130可以通过在消息630中返回图4的可靠性表405来进行响应。然后,应用505-1可以选择提供足够的可靠性(图5的期望可靠性510-1或一些优越的可靠性)的配置,并且可以向SSD 130发送配置请求635,识别图4的可靠性表405中的应用505-1所期望的条目。然后,如由自配置640所示,SSD 130可以根据可靠性表405的识别的条目对自身进行配置。
但注意的是,自配置640被示出为虚线。对此有两个原因。首先,假定应用505-1将对在消息620中接收的有效可靠率进行比较:如果有效可靠率高于图5的期望可靠性510-1,则应用505-1将不发送配置请求635(在这种情况下,自配置640将不被需要)。然而,在发明构思的一些实施例中,应用505-1可以不向SSD 130请求有效可靠性,而是简单地从图4的可靠性表405选择期望配置,并且相应地发送配置请求635。在发明构思的这样的实施例中,SSD 130(可能经由配置模块340)可以将有效可靠性与在配置请求635中识别的配置的可靠性进行比较。如果SSD 130的有效可靠性大于在配置请求635中识别的配置的可靠性,则SSD130可以跳过自配置640(因为当前配置已经是足够好的)。
其次,如上所述,应用505-1可能无法孤立地操作:其他应用(诸如,图5的应用505-2)可能正在发送它们自己的配置请求635。在这样的情况下,SSD 130可以选择以满足所有应用的方式进行自配置,并且因此可以根据具有最高可靠率的配置进行配置(按照请求该配置的应用不能被具有较低可靠性的配置满足的假设)。因此,尽管SSD 130可以执行自配置640,但自配置640可以涉及与配置请求635中指定的配置不同的配置。
在图6中,配置模块340可以在配置图1的SSD 130时响应应用505-1。然而,配置模块340还可以“自发地”操作,以配置图1的SSD 130。例如,在给定期望可靠性(在其他可能性之中,其可以是如以可靠性消息605从应用505-1接收的图5的期望可靠性510-1,或者其可以是图1的SSD 130的根据制造商的通告可靠性)的情况下,配置模块340可以跟踪图1的SSD130的有效可靠性。如果图1的SSD 130的有效可靠性应该下降到期望可靠性以下,则配置模块340可以选择提供期望可靠性的新配置(考虑任何乘数因素),以确保图1的SSD 130的可靠性保持在可接受的级别。
值得一提的是:配置模块340可以如何配置图1的SSD 130。如以上所讨论的,图4的可靠性表405中的条目指定将被图3的存储器芯片315-1至315-8、图3的ECC模块330和图3的RAID/擦除编码模块335使用的特定方案。为了配置图1的SSD 130,配置模块340可以就要使用什么方案对这些组件进行指示。也就是说,配置模块340可以指示图3的存储器芯片315-1至315-8在每个单元中存储特定数量的比特,并且/或者指示图3的ECC模块330使用特定ECC方案,并且/或者指示图3的RAID/擦除编码模块335使用特定擦除编码方案。注意的是,对已经存在的数据改变方案可以涉及从图1的SSD 130读取数据,并且改变应用于该数据的方案,使得足够的可靠性被保持。因此,例如,如果数据当前被存储为使用每个QLC单元中的四个比特,而现在需要被存储为仅用每个QLC单元中的两个比特,则图3的存储器芯片315-1至315-8中的数据可以被读取,被临时缓冲到某个地方(服务器110的一些本地存储设备中或主存储器中),然后使用新的存储方案被写回到存储器芯片315-1至315-8。相似地,应用新的ECC方案或擦除编码方案可以涉及从SSD 130读取数据并将数据写入SSD 130,以应用改变。
图7示出了根据发明构思的实施例的用于图1的SSD 130将自身配置为提供期望可靠性的示例过程的流程图。在图7中,在块(block)705,图3的配置模块340可以确定对图1的SSD 130的期望可靠性。如以上所讨论的,图3的配置模块340可以选择它自己的期望可靠性,或者它可以以图6的可靠性消息605从图5的应用505-1接收图5的期望可靠性510-1。在块710,图3的配置模块340可以确定图1的SSD 130的有效可靠性。在块715,图3的配置模块340可以将图1的SSD 130的有效可靠性与期望可靠性进行比较(考虑由于事务而导致的任何乘数)。如果有效可靠性足以满足期望可靠性(即,有效可靠性不小于期望可靠性),则处理被完成,并且图3的配置模块340不需要再做任何事情。
另一方面,如果有效可靠性小于期望可靠性,则在块720,图3的配置模块340可以访问图4的可靠性表405以考虑其中的条目。在块725,图3的配置模块340可以在图4的可靠性表405中选择具有至少与期望可靠性一样高(考虑任何乘数)的可靠性的条目。在块730,图3的配置模块340可以根据在图4的可靠性表405中的选择的条目中的配置来配置图1的SSD 130,在此之后,处理被完成。
图8示出了用于图1的SSD 130对自身进行配置的示例过程的流程图。在图8中,在块805,图3的配置模块340可以将图3的存储器芯片315-1至315-8中的一个或多个配置为使用特定存储方案。在块810,图3的配置模块340可以将图3的ECC模块330配置为使用特定纠错码方案。在块815,图3的配置模块340可以将图3的RAID/擦除编码模块335配置为使用特定擦除编码方案。如由虚线820、虚线825和虚线830所示,块805、块810和块815都是独立可选的,并且可以被省略。
图9A至图9B示出了用于图1的SSD 130确定期望可靠性的示例过程的流程图。在图9A中,在块905,图1的SSD 130可以接收图6的可靠性消息605,可靠性消息605可以指定对SSD 130的期望可靠性。
可选地,在块910(图9B),图1的SSD 130可以从图5的应用505-1接收图6的可靠性请求615。在块915,图1的SSD 130可以确定图1的SSD130的有效可靠性。在块920,SSD 130可以将有效可靠性作为图6的消息620发送到图5的应用505-1。注意的是,如虚线925所示,块910、块915和块920是可选的。
在块930,图5的应用505-1可以发送图6的可靠性表请求625。在块935,图1的SSD130可以从图3的可靠性表存储设备345取得图4的可靠性表405。在块940,图1的SSD 130可以将图4的可靠性表405作为消息630发送到图5的应用505-1。最后,在块945,图5的应用505-1可以将配置请求635发送到图1的SSD 130,请求图3的配置模块340根据可靠性表405中的在图6的配置请求635中识别的条目来配置图1的SSD 130。
图10示出了用于图1的SSD 130确定图1的SSD 130的有效可靠性的示例过程的流程图。在图10中,在块1005,图1的SSD 130可以(至少,根据图1的SSD 130的当前配置)确定图1的SSD 130的通告可靠性。在块1010处,SSD 130可以跟踪由图5的应用505-1(或代表图5的应用505-1)请求的当前事务。在块1015,图1的SSD 130可以确定响应于当前事务(和先前事务)的乘数(或多于一个的乘数)。最后,在块1020,图1的SSD 130可以将通告可靠性乘以一个乘数/多个乘数,以确定图1的SSD 130的有效可靠性。
图11A至图11B示出了根据发明构思的实施例的用于图5的应用505-1指示图1的SSD 130提供期望可靠性的示例过程的流程图。在图11A中,在块1105,图5的应用505-1可以简单地将图5的期望可靠性510-1(作为图6的可靠性消息605)发送到图1的SSD 130。此时,图5的应用505-1可以被完成,提供对图5的期望可靠性510-1的确保被留给图1的SSD 130。
可选地,在块1110,图5的应用505-1可以将图6的可靠性请求615发送到图1的SSD130。在块1115,图5的应用505-1可以以图6的消息620接收图1的SSD 130的当前有效可靠性。在块1120,图5的应用505-1可以将(如以图6的消息620接收的)图1的SSD 130的有效可靠性与图5的期望可靠性510-1进行比较。如果图1的SSD 130的有效可靠性至少与图5的期望可靠性510-1一样高,则处理可以结束(因为不需要做任何事情)。
另一方面,如果图1的SSD 130的有效可靠性小于图5的期望可靠性510-1(或者,如果如由虚线箭头1125所示,图5的应用505-1选择请求用特定配置来配置图1的SSD 130,而与图1的SSD 130的有效可靠性无关),则在块1130(图11B)处,图5的应用505-1可以将图6的可靠性表请求625发送到图1的SSD 130。在块1135,图1的SSD 130可以将图4的可靠性表405作为消息630发送到图5的应用505-1。在块1140,图5的应用505-1可以在图4的可靠性表405中选择提供期望可靠性的条目。最后,在块1145,图5的应用505-1可以发送图6的配置请求635,请求根据图4的可靠性表405中的选择的条目来配置图1的SSD 130。
在图7至图11B中,示出了发明构思的一些实施例。然而,本领域技术人员将认识到的是,通过改变块的顺序、通过省略块或通过包括附图中未示出的链接,发明构思的其他实施例也是可行的。无论是否被明确地描述,流程图的所有这样的变型被认为是发明构思的实施例。
发明构思的实施例提供了超过现有技术的技术优点。在传统***中,存储装置的可靠性由制造商设置,并且基本在用户的控制之外。发明构思的实施例不仅将对存储装置的可靠性的一定程度的控制赋予消费者,甚至允许使这样的管理自动化。应用可以指定期望可靠性(或者可以指定存储装置的实现期望可靠性的特定配置)。然后,存储装置可以基于存储装置的使用而通过按需要地改变配置来保持该程度的可靠性。
下面的讨论意图提供对其中可以实现发明构思的特定方面的一个或多个适合的机器的简要的、一般的描述。一个机器或多个机器可以至少部分地通过来自传统输入装置(诸如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号来控制。如在这里使用的,术语“机器”意图广泛地涵盖单个机器、虚拟机器或者通信地结合且一起操作的机器、虚拟机器或装置的***。示例性的机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持式装置、电话、平板电脑等)以及诸如私人或公共运输的运输装置(例如,汽车、火车、出租车等)。
一个机器或多个机器可以包括嵌入式控制器(诸如,可编程或不可编程逻辑装置或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等)。一个机器或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如,通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式互连。本领域技术人员将理解的是,网络通信可以利用包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等的各种有线和/或无线短距离或长距离载波和协议。
本发明构思的实施例可以通过参照或结合包括函数、过程、数据结构、应用程序等的相关联的数据来描述,相关联的数据在被机器访问时使机器执行任务或者定义抽象数据类型或低级硬件上下文。例如,相关联的数据可以被存储在易失性和/或非易失性存储器(例如,RAM、ROM等)中,或者被存储在其他存储装置及其相关联的存储介质(包括硬盘驱动器、软盘、光学存储设备、磁带、闪存、记忆棒、数字视频盘、生物存储设备等)中。相关联的数据可以以分组(包)、串行数据、并行数据、传播信号等的形式在传输环境(包括物理和/或逻辑网络)上传送,并且可以以压缩或加密格式被使用。相关联的数据可以在分布式环境中被使用,并且被本地存储和/或远程存储以用于机器访问。
发明构思的实施例可以包括有形的、非暂时性的机器可读介质,有形的、非暂时性的机器可读介质包括能够由一个或多个处理器执行的指令,所述指令包括用于执行如在这里描述的发明构思的元件的指令。
上述方法的各种操作可以由能够执行该操作的任何适合的装置(诸如,各种硬件和/或软件组件、电路以及/或者模块)执行。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以被实现在任何“处理器可读介质”中,以供指令执行***、设备或装置(诸如,单核或多核处理器或者包含处理器的***)使用,或者与指令执行***、设备或装置(诸如,单核或多核处理器或者包含处理器的***)结合起来使用。
结合在这里公开的实施例描述的方法或算法以及功能的块或步骤可以被直接实现在硬件中、由处理器执行的软件模块中或两者的组合中。如果被实现在软件中,则功能可以作为一个或多个指令或代码被存储在有形的、非暂时性的计算机可读介质上或者在有形的、非暂时性的计算机可读介质上被传输。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其他形式的存储介质中。
已经参照示出的实施例描述和示出了发明构思的原理,将认识到的是,示出的实施例可以在不脱离这样的原理的情况下在布置和细节上被修改,并且可以以任何期望的方式进行组合。此外,尽管前述讨论已经集中在特定实施例上,但其他配置是预期的。具体地,即使在这里使用了诸如“根据发明构思的实施例”等的表述,这些短语也意味着总体上涉及实施例可能性,而不意图将发明构思限制为特定实施例配置。如在这里使用的,这些术语可以涉及能够组合到其他实施例中的相同或不同的实施例。
前述的说明性实施例将不被解释为限制其发明构思。尽管已经描述了一些实施例,但本领域技术人员将容易理解的是,在实质上不脱离本公开的新颖教导和优点的情况下,许多修改对那些实施例而言是可行的。因此,所有这样的修改意图被包括在如在权利要求中限定的本发明构思的范围内。
发明构思的实施例可以扩展至下面的声明,而没有限制:
声明1、发明构思的实施例包括一种固态驱动器(SSD),SSD包括:
接口,用于从主机上的第一应用接收读取请求和写入请求;
用于数据的存储设备,所述存储设备包括至少一个芯片;
SSD控制器,用于使用所述存储设备处理来自主机上的第一应用的读取请求和写入请求;
配置模块,用于配置SSD;以及
用于可靠性表的存储设备,可靠性表至少包括第一条目和第二条目,第一条目识别SSD的第一配置和SSD的第一配置的第一可靠性,第二条目识别SSD的第二配置和SSD的第二配置的第二可靠性。
声明2、发明构思的实施例包括根据声明1所述的SSD,其中,接口可以从主机上的第一应用接收配置请求。
声明3、发明构思的实施例包括根据声明2所述的SSD,其中,配置请求包括可靠性表中的第一条目和第二条目中的一个的标识符。
声明4、发明构思的实施例包括根据声明3所述的SSD,其中,配置模块可以根据可靠性表中的第一条目和第二条目中的一个的标识符来重新配置SSD。
声明5、发明构思的实施例包括根据声明1所述的SSD,其中,接口可以从主机上的第一应用接收可靠性消息,可靠性消息包括用于主机上的第一应用的第一期望可靠性。
声明6、发明构思的实施例包括根据声明5所述的SSD,其中,配置模块可以至少基于第一期望可靠性而根据可靠性表中的第一条目和第二条目中的一个来配置SSD。
声明7、发明构思的实施例包括根据声明6所述的SSD,其中,配置模块可以至少基于用于主机上的第一应用的第一期望可靠性和用于主机上的第二应用的第二期望可靠性而根据可靠性表中的第一条目和第二条目中的一个来配置SSD。
声明8、发明构思的实施例包括根据声明1所述的SSD,其中,所述至少一个芯片至少提供具有第一芯片可靠性的第一存储方案和具有第二芯片可靠性的第二存储方案。
声明9、发明构思的实施例包括根据声明8所述的SSD,其中,SSD的第一配置识别第一存储方案,SSD的第二配置识别第二存储方案。
声明10、发明构思的实施例包括根据声明1所述的SSD,SSD还包括纠错码(ECC)模块,ECC模块至少提供具有第一ECC可靠性的第一ECC方案和具有第二ECC可靠性的第二ECC方案。
声明11、发明构思的实施例包括根据声明10所述的SSD,其中,SSD的第一配置识别第一ECC方案,SSD的第二配置识别第二ECC方案。
声明12、发明构思的实施例包括根据声明1所述的SSD,SSD还包括擦除编码模块和独立磁盘冗余阵列(RAID)模块中的至少一个,擦除编码模块至少提供具有第一擦除编码可靠性的第一擦除编码方案和具有第二擦除编码可靠性的第二擦除编码方案,RAID模块至少提供具有第一RAID可靠性的第一RAID方案和具有第二RAID可靠性的第二RAID方案。
声明13、发明构思的实施例包括根据声明12所述的SSD,其中,SSD的第一配置识别第一擦除编码方案和第一RAID方案中的至少一个,SSD的第二配置识别第二擦除编码方案和第二RAID方案中的至少一个。
声明14、发明构思的实施例包括根据声明1所述的SSD,其中,可靠性表中的第一条目识别SSD的第一配置的第一空间开销和第一性能中的至少一者,可靠性表中的第二条目识别SSD的第二配置的第二空间开销和第二性能中的至少一者。
声明15、发明构思的实施例包括根据声明1所述的SSD,其中,所述至少一个芯片包括至少一个NAND闪存芯片。
声明16、发明构思的实施例包括一种方法,所述方法包括:
确定对固态驱动器(SSD)的期望可靠性,SSD包括用于数据的存储设备,存储设备包括至少一个芯片;
从SSD访问可靠性表中的第一条目,可靠性表至少包括第一条目和第二条目,第一条目识别SSD的第一配置和SSD的第一配置的第一可靠性,第二条目识别SSD的第二配置和SSD的第二配置的第二可靠性;以及
根据第一条目配置SSD。
声明17、发明构思的实施例包括根据声明16所述的方法,其中:
第一条目包括用于芯片的第一存储方案;
第二条目包括用于芯片的第二存储方案;以及
根据第一条目配置SSD的步骤包括根据第一存储方案或第二存储方案来配置芯片。
声明18、发明构思的实施例包括根据声明16所述的方法,其中:
SSD包括纠错码(ECC)模块;
第一条目包括用于ECC模块的第一ECC方案;
第二条目包括用于ECC模块的第二ECC方案;以及
根据第一条目配置SSD的步骤包括根据第一ECC方案或第二ECC方案来配置ECC模块。
声明19、发明构思的实施例包括根据声明16所述的方法,其中:
SSD包括擦除编码模块和独立磁盘冗余阵列(RAID)模块中的至少一个;
第一条目包括用于擦除编码模块的第一擦除编码方案和用于RAID模块的第一RAID方案中的至少一个;
第二条目包括用于擦除编码模块的第二擦除编码方案和用于RAID模块的第二RAID方案中的至少一个;以及
根据第一条目配置SSD的步骤包括根据第一擦除编码方案或第二擦除编码方案来配置擦除编码模块以及根据第一RAID方案或第二RAID方案来配置RAID模块中的至少一者。
声明20、发明构思的实施例包括根据声明16所述的方法,其中,确定对固态驱动器(SSD)的期望可靠性的步骤包括在SSD处从主机上的应用接收期望可靠性。
声明21、发明构思的实施例包括根据声明20所述的方法,其中,从SSD访问可靠性表中的第一条目的步骤包括:
访问可靠性表中的第一条目和第二条目;以及
识别第一条目包括至少与期望可靠性一样高的可靠性。
声明22、发明构思的实施例包括根据声明16所述的方法,所述方法还包括:
在SSD处从主机上的应用接收对SSD的有效可靠性的可靠性请求;
确定SSD的有效可靠性;以及
将有效可靠性从SSD发送到主机上的应用。
声明23、发明构思的实施例包括根据声明22所述的方法,其中,确定SSD的有效可靠性的步骤包括:
确定SSD的通告可靠性;
跟踪SSD上的操作;
基于SSD上的操作来确定乘数;以及
将通告可靠性乘以乘数,以确定有效可靠性。
声明24、发明构思的实施例包括根据声明16所述的方法,其中,从SSD访问可靠性表中的第一条目的步骤包括在SSD处从主机上的应用接收可靠性表中的第一条目的标识符。
声明25、发明构思的实施例包括根据声明24所述的方法,其中,从SSD访问可靠性表中的第一条目的步骤还包括将可靠性表中的第一条目从SSD发送到主机上的应用。
声明26、发明构思的实施例包括根据声明16所述的方法,其中:
可靠性表中的第一条目识别SSD的第一配置的第一空间开销和第一性能中的至少一者;
可靠性表中的第二条目识别SSD的第二配置的第二空间开销和第二性能中的至少一者;以及
从SSD访问可靠性表中的第一条目的步骤包括至少基于期望空间开销和期望性能中的至少一者以及期望可靠性而从SSD访问可靠性表中的第一条目。
声明27、发明构思的实施例包括根据声明16所述的方法,其中,所述至少一个芯片包括至少一个NAND闪存芯片。
声明28、发明构思的实施例包括一种方法,所述方法包括:
将可靠性请求从主机上的应用发送到SSD,可靠性请求请求SSD的有效可靠性;
在主机上的应用处从SSD接收SSD的有效可靠性;
将可靠性表请求从主机上的应用发送到SSD,可靠性表请求请求存储在SSD上的可靠性表;
在主机上的应用处从SSD接收可靠性表,可靠性表中的每个条目识别SSD的配置和SSD的配置的可靠性;
至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目;以及
将配置请求从主机上的应用发送到SSD,配置请求识别可靠性表中的条目。
声明29、发明构思的实施例包括根据声明28所述的方法,所述方法还包括:
将SSD的有效可靠性与用于主机上的应用的期望可靠性进行比较;以及
至少基于SSD的有效可靠性超过用于主机上的应用的期望可靠性,不向SSD发送配置请求。
声明30、发明构思的实施例包括根据声明28所述的方法,其中,至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目的步骤包括:选择可靠性表中的条目,所述条目的SSD的配置的可靠性至少与期望可靠性一样高。
声明31、发明构思的实施例包括根据声明28所述的方法,其中:
可靠性表中的每个条目还识别SSD的配置的第一空间开销和第一性能中的至少一者;
可靠性表中的第二条目识别第二空间开销和第二性能中的至少一者;以及
至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目的步骤包括至少基于期望空间开销和期望性能中的至少一者以及用于主机上的应用的期望可靠性来选择可靠性表中的条目。
声明32、发明构思的实施例包括一种包含非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
确定对固态驱动器(SSD)的期望可靠性,SSD包括用于数据的存储设备,存储设备包括至少一个芯片;
从SSD访问可靠性表中的第一条目,可靠性表至少包括第一条目和第二条目,第一条目识别SSD的第一配置和SSD的第一配置的第一可靠性,第二条目识别SSD的第二配置和SSD的第二配置的第二可靠性;以及
根据第一条目配置SSD。
声明33、发明构思的实施例包括根据声明32所述的物品,其中:
第一条目包括用于芯片的第一存储方案;
第二条目包括用于芯片的第二存储方案;以及
根据第一条目配置SSD的步骤包括根据第一存储方案或第二存储方案来配置芯片。
声明34、发明构思的实施例包括根据声明32所述的物品,其中:
SSD包括纠错码(ECC)模块;
第一条目包括用于ECC模块的第一ECC方案;
第二条目包括用于ECC模块的第二ECC方案;以及
根据第一条目配置SSD的步骤包括根据第一ECC方案或第二ECC方案来配置ECC模块。
声明35、发明构思的实施例包括根据声明32所述的物品,其中:
SSD包括擦除编码模块和独立磁盘冗余阵列(RAID)模块中的至少一个;
第一条目包括用于擦除编码模块的第一擦除编码方案和用于RAID模块的第一RAID方案中的至少一个;
第二条目包括用于擦除编码模块的第二擦除编码方案和用于RAID模块的第二RAID方案中的至少一个;以及
根据第一条目配置SSD的步骤包括根据第一擦除编码方案或第二擦除编码方案来配置擦除编码模块以及根据第一RAID方案或第二RAID方案来配置RAID模块中的至少一者。
声明36、发明构思的实施例包括根据声明32所述的物品,其中,确定对固态驱动器(SSD)的期望可靠性的步骤包括在SSD处从主机上的应用接收期望可靠性。
声明37、发明构思的实施例包括根据声明36所述的物品,其中,从SSD访问可靠性表中的第一条目的步骤包括:
访问可靠性表中的第一条目和第二条目;以及
识别第一条目包括至少与期望可靠性一样高的可靠性。
声明38、本发明构思的实施例包括根据声明32所述的物品,非暂时性存储介质具有存储在其上的附加指令,当所述附加指令被机器执行时,使得:
在SSD处从主机上的应用接收对SSD的有效可靠性的可靠性请求;
确定SSD的有效可靠性;以及
将有效可靠性从SSD发送到主机上的应用。
声明39、发明构思的实施例包括根据声明38所述的物品,其中,确定SSD的有效可靠性的步骤包括:
确定SSD的通告可靠性;
跟踪SSD上的操作;
基于SSD上的操作确定乘数;以及
将通告可靠性乘以乘数,以确定有效可靠性。
声明40、发明构思的实施例包括根据声明32所述的物品,其中,从SSD访问可靠性表中的第一条目的步骤包括在SSD处从主机上的应用接收可靠性表中的第一条目的标识符。
声明41、发明构思的实施例包括根据声明40所述的物品,其中,从SSD访问可靠性表中的第一条目的步骤包括将可靠性表中的第一条目从SSD发送到主机上的应用。
声明42、本发明构思的实施例包括根据声明32所述的物品,其中:
可靠性表中的第一条目识别SSD的第一配置的第一空间开销和第一性能中的至少一者;
可靠性表中的第二条目识别SSD的第二配置的第二空间开销和第二性能中的至少一者;以及
从SSD访问可靠性表中的第一条目的步骤包括至少基于期望空间开销和期望性能中的至少一者以及期望可靠性而从SSD访问可靠性表中的第一条目。
声明43、本发明构思的一个实施例包括根据声明32所述的物品,其中,所述至少一个芯片包括至少一个NAND闪存芯片。
声明44、发明构思的实施例包括一种包含非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
将可靠性请求从主机上的应用发送到SSD,可靠性请求请求SSD的有效可靠性;
在主机上的应用处从SSD接收SSD的有效可靠性;
将可靠性表请求从主机上的应用发送到SSD,可靠性表请求请求存储在SSD上的可靠性表;
在主机上的应用处从SSD接收可靠性表,可靠性表中的每个条目识别SSD的配置和SSD的配置的可靠性;
至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目;以及
将配置请求从主机上的应用发送到SSD,配置请求识别可靠性表中的条目。
声明45、发明构思的实施例包括根据声明44所述的物品,非暂时性存储介质具有存储在其上的附加指令,当所述附加指令被机器执行时,使得:
将SSD的有效可靠性与用于主机上的应用的期望可靠性进行比较;以及
至少基于SSD的有效可靠性超过用于主机上的应用的期望可靠性,不向SSD发送配置请求。
声明46、发明构思的实施例包括根据声明44所述的物品,其中,至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目的步骤包括选择可靠性表中的条目,所述条目的SSD的配置的可靠性至少与期望可靠性一样高。
声明47、发明构思的实施例包括根据声明44所述的物品,其中:
可靠性表中的每个条目还识别SSD的配置的第一空间开销和第一性能中的至少一者;
可靠性表中的第二条目识别第二空间开销和第二性能中的至少一者;以及
至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目的步骤包括至少基于期望空间开销和期望性能中的至少一者以及用于主机上的应用的期望可靠性来选择可靠性表中的条目。
因此,鉴于对这里描述的实施例的广泛的各种置换,本具体实施方式和所附材料仅意图为说明性的,并且不应被视为限制发明构思的范围。因此,如发明构思所要求保护的是可以落入权利要求及其等同物的范围和精神内的所有这样的修改。
Claims (20)
1.一种固态驱动器,包括:
接口,用于从主机上的第一应用接收读取请求和写入请求;
用于数据的存储设备,所述存储设备包括至少一个芯片;
固态驱动器控制器,用于使用所述存储设备处理来自主机上的第一应用的读取请求和写入请求;
配置模块,用于配置所述固态驱动器;以及
用于可靠性表的存储设备,可靠性表至少包括第一条目和第二条目,第一条目识别所述固态驱动器的第一配置和所述固态驱动器的第一配置的第一可靠性,第二条目识别所述固态驱动器的第二配置和所述固态驱动器的第二配置的第二可靠性。
2.根据权利要求1所述的固态驱动器,其中,接口从主机上的第一应用接收配置请求。
3.根据权利要求2所述的固态驱动器,其中,配置请求包括可靠性表中的第一条目和第二条目中的一个条目的标识符。
4.根据权利要求1所述的固态驱动器,其中,接口从主机上的第一应用接收可靠性消息,可靠性消息包括用于主机上的第一应用的第一期望可靠性。
5.根据权利要求4所述的固态驱动器,其中,配置模块至少基于第一期望可靠性而根据可靠性表中的第一条目和第二条目中的一个条目来配置所述固态驱动器。
6.根据权利要求1所述的固态驱动器,其中,所述至少一个芯片至少提供具有第一芯片可靠性的第一存储方案和具有第二芯片可靠性的第二存储方案。
7.根据权利要求6所述的固态驱动器,其中,所述固态驱动器的第一配置识别第一存储方案,所述固态驱动器的第二配置识别第二存储方案。
8.根据权利要求1至7中的任一项所述的固态驱动器,还包括纠错码模块,纠错码模块至少提供具有第一纠错码可靠性的第一纠错码方案和具有第二纠错码可靠性的第二纠错码方案。
9.根据权利要求8所述的固态驱动器,其中,所述固态驱动器的第一配置识别第一纠错码方案,所述固态驱动器的第二配置识别第二纠错码方案。
10.根据权利要求1至7中的任一项所述的固态驱动器,还包括擦除编码模块和RAID模块中的至少一个,擦除编码模块至少提供具有第一擦除编码可靠性的第一擦除编码方案和/或具有第二擦除编码可靠性的第二擦除编码方案,RAID模块至少提供具有第一RAID可靠性的第一RAID方案和/或具有第二RAID可靠性的第二RAID方案。
11.根据权利要求10所述的固态驱动器,其中,所述固态驱动器的第一配置识别第一擦除编码方案和第一RAID方案中的至少一个,所述固态驱动器的第二配置识别第二擦除编码方案和第二RAID方案中的至少一个。
12.一种操作固态驱动器的方法,包括:
确定对固态驱动器的期望可靠性,固态驱动器包括用于数据的存储设备,存储设备包括至少一个芯片;
从固态驱动器访问可靠性表中的第一条目,可靠性表至少包括第一条目和第二条目,第一条目识别固态驱动器的第一配置和固态驱动器的第一配置的第一可靠性,第二条目识别固态驱动器的第二配置和固态驱动器的第二配置的第二可靠性;以及
根据第一条目配置固态驱动器。
13.根据权利要求12所述的方法,其中:
第一条目包括用于芯片的第一存储方案;
第二条目包括用于芯片的第二存储方案;以及
根据第一条目配置固态驱动器的步骤包括:根据第一存储方案或第二存储方案来配置芯片。
14.根据权利要求12所述的方法,其中:
固态驱动器包括纠错码模块;
第一条目包括用于纠错码模块的第一纠错码方案;
第二条目包括用于纠错码模块的第二纠错码方案;以及
根据第一条目配置固态驱动器的步骤包括:根据第一纠错码方案或第二纠错码方案来配置纠错码模块。
15.根据权利要求12所述的方法,其中:
固态驱动器包括擦除编码模块和RAID模块中的至少一个;
第一条目包括用于擦除编码模块的第一擦除编码方案和用于RAID模块的第一RAID方案中的至少一个;
第二条目包括用于擦除编码模块的第二擦除编码方案和用于RAID模块的第二RAID方案中的至少一个方案;以及
根据第一条目配置固态驱动器的步骤包括:根据第一擦除编码方案或第二擦除编码方案来配置擦除编码模块以及根据第一RAID方案或第二RAID方案来配置RAID模块中的至少一者。
16.根据权利要求12所述的方法,其中,确定对固态驱动器的期望可靠性的步骤包括:在固态驱动器处从主机上的应用接收期望可靠性。
17.根据权利要求16所述的方法,其中,从固态驱动器访问可靠性表中的第一条目的步骤包括:
访问可靠性表中的第一条目和第二条目;以及
识别第一条目包括至少与期望可靠性一样高的可靠性。
18.根据权利要求12所述的方法,其中,从固态驱动器访问可靠性表中的第一条目的步骤包括:在固态驱动器处从主机上的应用接收可靠性表中的第一条目的标识符。
19.一种操作固态驱动器的方法,包括:
将可靠性请求从主机上的应用发送到固态驱动器,可靠性请求请求固态驱动器的有效可靠性;
在主机上的应用处从固态驱动器接收固态驱动器的有效可靠性;
将可靠性表请求从主机上的应用发送到固态驱动器,可靠性表请求请求存储在固态驱动器上的可靠性表;
在主机上的应用处从固态驱动器接收可靠性表,可靠性表中的每个条目识别固态驱动器的配置和固态驱动器的配置的可靠性;
至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目;以及
将配置请求从主机上的应用发送到固态驱动器,配置请求识别可靠性表中的条目。
20.根据权利要求19所述的方法,其中,至少基于用于主机上的应用的期望可靠性来选择可靠性表中的条目的步骤包括:选择可靠性表中的条目,所述条目的固态驱动器的配置的可靠性至少与期望可靠性一样高。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962948792P | 2019-12-16 | 2019-12-16 | |
US62/948,792 | 2019-12-16 | ||
US16/853,731 US11307804B2 (en) | 2019-12-16 | 2020-04-20 | Enhanced SSD reliability |
US16/853,731 | 2020-04-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988056A true CN112988056A (zh) | 2021-06-18 |
Family
ID=76318025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011207118.3A Pending CN112988056A (zh) | 2019-12-16 | 2020-11-03 | 固态驱动器和操作固态驱动器的方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11307804B2 (zh) |
JP (1) | JP2021096837A (zh) |
KR (1) | KR20210076834A (zh) |
CN (1) | CN112988056A (zh) |
TW (1) | TW202125208A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307804B2 (en) * | 2019-12-16 | 2022-04-19 | Samsung Electronics Co., Ltd. | Enhanced SSD reliability |
KR20220077208A (ko) * | 2020-11-30 | 2022-06-09 | 삼성전자주식회사 | 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법 |
US11733893B2 (en) | 2021-07-28 | 2023-08-22 | International Business Machines Corporation | Management of flash storage media |
US11989088B2 (en) * | 2022-08-30 | 2024-05-21 | Micron Technology, Inc. | Read data path |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8006166B2 (en) * | 2007-06-12 | 2011-08-23 | Micron Technology, Inc. | Programming error correction code into a solid state memory device with varying bits per cell |
JP5349897B2 (ja) * | 2008-10-21 | 2013-11-20 | 株式会社日立製作所 | ストレージシステム |
US10073737B2 (en) * | 2009-10-30 | 2018-09-11 | International Business Machines Corporation | Slice location identification |
US8533564B2 (en) | 2009-12-23 | 2013-09-10 | Sandisk Technologies Inc. | System and method of error correction of control data at a memory device |
KR101678404B1 (ko) | 2010-02-25 | 2016-11-23 | 삼성전자주식회사 | 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법 |
US8892980B2 (en) * | 2010-06-15 | 2014-11-18 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
US8533550B2 (en) | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
KR101801147B1 (ko) | 2011-08-30 | 2017-11-27 | 삼성전자주식회사 | 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치 |
US10418097B2 (en) | 2017-11-27 | 2019-09-17 | Western Digital Technologies, Inc. | Non-volatile storage system with read calibration |
US11307804B2 (en) * | 2019-12-16 | 2022-04-19 | Samsung Electronics Co., Ltd. | Enhanced SSD reliability |
-
2020
- 2020-04-20 US US16/853,731 patent/US11307804B2/en active Active
- 2020-09-09 KR KR1020200115467A patent/KR20210076834A/ko unknown
- 2020-09-29 TW TW109133859A patent/TW202125208A/zh unknown
- 2020-11-03 CN CN202011207118.3A patent/CN112988056A/zh active Pending
- 2020-11-16 JP JP2020190393A patent/JP2021096837A/ja active Pending
-
2022
- 2022-03-22 US US17/701,664 patent/US11662951B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2021096837A (ja) | 2021-06-24 |
KR20210076834A (ko) | 2021-06-24 |
US11662951B2 (en) | 2023-05-30 |
TW202125208A (zh) | 2021-07-01 |
US20210181983A1 (en) | 2021-06-17 |
US11307804B2 (en) | 2022-04-19 |
US20230305751A1 (en) | 2023-09-28 |
US20220214836A1 (en) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860508B2 (en) | Offloaded disaggregated storage architecture | |
US8825938B1 (en) | Use of write allocation decisions to achieve desired levels of wear across a set of redundant solid-state memory devices | |
US9582220B2 (en) | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system | |
KR101730497B1 (ko) | 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치 | |
US11662951B2 (en) | Enhanced SSD reliability | |
CN115114059B (zh) | 使用区来管理归因于存储装置故障的容量减小 | |
US10146435B2 (en) | Storage system and data write method | |
US9524105B2 (en) | Process and apparatus to reduce declared capacity of a storage device by altering an encoding format | |
US9543988B2 (en) | Adaptively strengthening ECC for solid state cache | |
US12013762B2 (en) | Meta data protection against unexpected power loss in a memory system | |
US9519427B2 (en) | Triggering, at a host system, a process to reduce declared capacity of a storage device | |
CN115114057A (zh) | 管理在下移多层级存储器单元时的容量减小 | |
CN115114058A (zh) | 管理存在存储装置故障时的存储空间减小和再用 | |
US9582193B2 (en) | Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system | |
KR20210131058A (ko) | 메모리 시스템 내 데이터를 보호하는 장치 및 방법 | |
CN115114054B (zh) | 管理发生故障的多层级存储器单元的存储空间减小和再用 | |
US12050811B2 (en) | Enhanced SSD reliability | |
US9582202B2 (en) | Process and apparatus to reduce declared capacity of a storage device by moving data | |
US9552166B2 (en) | Process and apparatus to reduce declared capacity of a storage device by deleting data | |
CN115114055A (zh) | 管理归因于存储装置故障的容量减小和恢复 | |
US9582212B2 (en) | Notification of trigger condition to reduce declared capacity of a storage device | |
KR20230056901A (ko) | 메모리 장치에 데이터를 프로그램하는 장치 및 방법 | |
US9563370B2 (en) | Triggering a process to reduce declared capacity of a storage device | |
CN115114061A (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 |