CN105302659B - 固态器件中的多纠错码代码字尺寸 - Google Patents
固态器件中的多纠错码代码字尺寸 Download PDFInfo
- Publication number
- CN105302659B CN105302659B CN201510431923.7A CN201510431923A CN105302659B CN 105302659 B CN105302659 B CN 105302659B CN 201510431923 A CN201510431923 A CN 201510431923A CN 105302659 B CN105302659 B CN 105302659B
- Authority
- CN
- China
- Prior art keywords
- code word
- data
- size
- solid
- page
- 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
Links
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明提供了一种用于将具有多个尺寸的多个代码字写入固态器件的方法。在一个方面,一种方法包括接收多个主机数据单元用于存储在固态非易失性存储器中。该方法包括将所述多个主机数据单元划分成多个数据有效载荷,其中第一数据有效载荷包括第一主机数据单元,而第二数据有效载荷包括第二主机数据单元的一部分。该方法包括将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字。该方法包括将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,第二代码字尺寸不同于第一代码字尺寸。该方法包括将第一代码字和第二代码字写到固态非易失性存储器中的第一页。还提供了系统和机器可读介质。
Description
技术领域
本主题技术总体涉及一种固态存储设备。
背景技术
主机数据可以通过将主机数据编码成纠错码(ECC)代码字并将该代码字存储在数据存储介质上而被可靠地存储在诸如闪存的数据存储介质中。响应于读取命令,代码字可以从所述数据存储介质中被读取并且在将无差错主机数据传递给主机之前被解码。主机数据的扇区的尺寸可以基于主机系统而改变。例如,在企业应用中,相对于在许多客户应用中所使用的512字节,主机扇区尺寸在增加ECC奇偶校验位之前可以是536字节。不同尺寸的和主机扇区可以增加如固态器件(SSD)的基于闪存的数据存储系统的复杂性以及折中该数据存储系统的性能。
发明内容
披露了一种用于在固态器件中存储数据的系统和方法。根据一个方面,一种方法可包括:接收多个主机数据单元,用于存储在固态非易失性存储器中;在多个数据有效载荷之间划分所述多个主机数据单元,其中第一数据有效载荷包括第一主机数据单元,而第二数据有效载荷包括第二主机数据单元的一部分;将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字;将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,第二代码字尺寸不同于第一代码字尺寸;以及将第一代码字和第二代码字写到固态非易失性存储器中的第一页。在另一个方面,一种机器可读介质可以包括其上的指令,这些指令在被执行时执行前述方法。
在另一个方面,一种系统可以包括:固态非易失性存储器;一个或多个数据缓存器,配置为接收多个主机数据单元,用于存储在所述固态非易失性存储器中;控制器,被配置为在多个数据有效载荷之间划分在所述一个或多个数据缓存器中的所述多个主机数据单元,其中第一数据有效载荷包括第一主机数据单元,而第二数据有效载荷包括第二主机数据单元的一部分;以及编码器/解码器,被配置为将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字以及被配置为将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,所述第二代码字尺寸不同于所述第一代码字尺寸,其中所述控制器还被配置为将所述第一代码字和所述第二代码字写到固态非易失性存储器中的第一页。
应该理解的是,本领域技术人员根据下面的详细描述易于清楚该主题技术还有其它配置,在下面的详细描述中通过图释方式示出并描述了该主题技术的各种配置。如所认识到的那样,该主题技术能够有其它的和不同的配置,并且其几个细节能够在各种其它方面进行修改,所有这些都不脱离本主题技术的范围。因此,这些附图和详细描述自然地都将被认为是阐述性的而不应该被认为是一种限制。
附图说明
下面将参照附图进行详细描述。
图1是根据本主题技术的方面的框图,图释了一系列包括主机数据和纠错码的代码字的实例,这些代码字跨存储器块的多个页被存储。
图2描绘了根据本主题技术的方面的框图,图释了固态器件的组件,这些组件被配置为存储从主机系统中接收的数据。
图3是根据本主题技术的方面的流程图,图释了用于将数据存储在固态器件中的实例处理。
具体实施方式
下面给出的详细描述意图作为本主题技术的各种配置而不意图代表其中可以实现本主题技术的仅有配置。所述附图被包含在此处并构成该详细描述的一部分。该详细描述包括用于提供该主题技术的整体理解的一些具体细节。不过,本主题技术可以不采用这些具体细节来实施。在某些实例中,构件和组件以框图形式显示以避免掩盖本主题技术的构思。为了便于理解相同的组件采用同样的元件数字来标记。
闪存被组织成闪存单元的块。每块包括多个可以含有成千上万个比特的页。数据以页为单位写入闪存以及从闪存中读出。不过,闪存必须以块为单位被擦除。数据可以被写到顺序地跨闪存器件的闪存页。可以经由独立信道在不同闪存器件上写顺序页,这会使得通过经由独立信道向每个各自的闪存器件发送读取命令来并行地读取该顺序页。采用这种方式,可以快速实现从闪存中的数据检索。
有些闪存器件的制造者可以将闪存页配置成将闪存页的尺寸固定在512字节大多个用于ECC开销的额外空间的倍数。不过,在企业(enterprise)SSD中,将要存储在SSD上的主机数据单元(或扇区)可以不与闪存页对齐(align)。例如,企业主机数据单元可以大于512字节,诸如528字节或536字节,这会降低用于ECC奇偶校验位的空间量。此外,指定的ECC格式可能不足以达到具有所需的不可校正比特错误率的编程/擦除循环的理想的数量,因为来自闪存的原始比特错误率会随着其磨损(wears out)而增加。
当在被配置用于512字节的主机数据单元的SSD中写入大于512字节的主机数据单元时,该SSD可能尚未填满闪存的整页而停止,因为未划分的代码字将不会填充该页,或者跨两页拆分某些代码字。前者会很昂贵,因为需要更多的闪存来存储相同数量的主机数据。后者可能需要读取两页来检索用于单一主机数据单元的代码字,这在等待检索两页的同时占用(tie up)SSD中的资源.
ECC解码直到整个代码字已经从闪存中检索到为止才开始。不过,为了使得闪存中的存储空间的利用率最大化,代码字可以被拆分跨在两个闪存页上。例如,如果闪存页的尺寸为16kB并且每个代码字的尺寸为4kB加ECC奇偶校验位,则三个完整的代码字就可以写入该闪存页,但是第四个完整的代码字可能不适于该闪存页,因为每个代码字的ECC奇偶校验位要占用空间。与将闪存页上的剩余的空间空出来不同,下一个代码字可以被拆分到跨两个闪存页。在该实例中,4kB代码字的3kB可以被写入该闪存页而4kB代码字的剩余1kB可以被写入另一个闪存页。
不过,如果代码字被拆分跨两个闪存页,则解码器必须等待两个页被读取,这会需要将第一接收部分保存在缓存器中直到接收到第二部分为止。对于诸如低密度奇偶校验(LDPC)的更高级ECC系统而言,后果会更严重,因为两页的错误特性可能需要不同的处理。因此,对代码字来说跨页边界是不理想的,并且不将闪存中的存储空间利用率最大化也是不理想的。
与将不适于一页的代码字分拆到两页上不同,本主题技术将主机数据单元划分成两个独立的代码字并将这两个代码字写到相邻的页。采用这种方式,每个代码字不会横跨页边界并且闪存中的存储空间可被最大化。
单一ECC编码器/解码器可以被用于使用在最长和最短代码字两者中的相同数量的奇偶校验位切换代码字长度。例如,对于1kB代码字可以像4kB代码字一样使用相同数量的奇偶校验位。1kB代码字可以通过ECC被过度保护,由于其可能不需要与通过ECC提供的奇偶校验位一样多的奇偶校验位,但是,与通过具有附加的较小的代码字而从减少页中的无用位的数量所获得的增益相比,过量的奇偶校验位所占用的任何额外空间都是较小的。而且,如果在最长代码字中含有所有主机数据的大部分(bulk),则多个代码字尺寸系统的性能将接近于仅仅使用最长代码字的固定尺寸系统,并且读取放大率(read amplification)也可能被最小化。
图1描绘了根据本主题技术的一个方面的一个框图,其图释了跨闪存块的多个页所存储的代码字的实例系列。每个代码字100a-100l、102a-102b、104a-104b、106a-106b包含有主机数据和纠错码。每个代码字的尺寸选自于可能代码字尺寸列表。例如,在图1中,代码字100a-100l都是第一尺寸,代码字102a-102b为第二尺寸,代码字104a-104b为第三尺寸,以及代码字106a-106b为第四尺寸。
本主题技术生成并提供所占空间尽可能与每个闪存页120a-120d一样多的代码字100a-100l、102a-102b、104a-104b、106a-106b。例如在将代码字100a-100c写入页120a之后,适合于页120a的剩余空间的最大代码字尺寸为代码字102a,其为第二次尺寸。通过使用代码字,与将代码字104a或代码字106a写入页120a中相比,代码字102a的尺寸将尽可能多地使用闪存页120a-120d。尽管代码字100a-100c和102a不会占用页120a的全部,但是实质上占用页120a的全部。在有些方面,如果在特定页中剩余的空间量小于最小代码字尺寸,那么该页的全部实质上被占用。
图2描绘了根据本主题技术的框图,其图释了固态器件的被配置为存储从主机系统接收的数据的组件。数据存储系统200包括:处理器201(例如,数据存储或SSD控制器,微处理器等)、一个或多个存储器件202(例如,闪存器件或其它类型的存储器件,诸如随机存取存储器、光学或磁性介质器件的)、输入/输出(I/O)接口203、数据缓存器204、配置存储器205以及ECC编码器/解码器206。
数据缓存器204提供硬件机构,用于实现SSD前端和SSD后端的分离,所述SSD前端与主机系统接口,所述SSD后端与存储器件202接口。数据在经由I/O接口203从主机系统被接收用于存储时或者在从存储器件202检索到用于经由I/O接口203传输到主机系统时临时存储在数据缓存器204中。当起到帮助存储的功能时,数据缓存器204可以被分割以便临时划分其中所存储的数据并适当地创建有尺寸的(sized)数据有效载荷,用于编码成由SSD后端使用的代码字。采用这种方式,SSD后端参与将数据有效载荷编码成适合于在存储器件202的页边界内的代码字,并且将从存储器件202所检索的代码字解码成相同尺寸大小的数据有效载荷。另一方面,SSD前端参与接收和发送主机数据单元。
数据缓存器204可以由易失性或非易失性存储器来实现,并且可以包括一个或多个块、页、或其它存储单元。数据缓存器204和存储器件202的功能可以在同一存储器件中或者跨一组存储器件分布。而且,存储器件可以采用任何形式,诸如,闪存、RAM、光学或磁性介质等等。在一个实例中,数据缓存器204是一个或多个存储器件202内(例如,在运行时间动态地)预留的存储器的一部分。
数据存储系统200可以包括机器可读介质(例如,非瞬态介质),其上包括指令,该指令在被执行时,实现此处所描述的在I/O接口203、数据缓存器204以及存储器件202之间的数据传送以及数据的传输和/或修改的其它方法。在一个实施例中,数据存储系统200从主机设备接收主机数据单元。所述主机数据单元可以包括一个或多个扇区的数据或者根据主机设备设定尺寸的其他数据单元。所述主机数据单元可以每个具有相同的尺寸,并且该尺寸可以有主机系统确定。所述主机系统可以包括例如微处理器、外部存储器和/或与包括存储器件的数据存储系统协同运行的外围组件。
通过将来自主机数据单元的数据有效载荷编码成代码字以及将该代码字存储在存储器件202中,从主机接收的数据可以存储在存储器件202中。所述主机数据单元接收于主机,进入数据缓存器204,并且数据缓存器204将所述主机数据单元存储在数据有效载荷中。所述数据有效载荷ECC编码器/解码器206编码,并且数据缓存器204有助于根据所述数据有效载荷形成(populate)一个或多个尺寸的一个或多个代码字。在一些方面,可利用的代码字尺寸基于ECC编码器/解码器206的能力。例如,ECC编码器/解码器206能够编码和解码1kB代码字、2kB代码字、3kB代码字以及4kB代码字。在有些方面,所述控制器201向ECC编码器/解码器206指明了在编码特定数据有效载荷时使用的代码字的尺寸。在有些方面,ECC编码器/解码器206可以基于将被编码的所述数据有效载荷的尺寸动态地确定将使用那个尺寸的代码字。
ECC编码器/解码器206吞吐量可以以每秒的代码字来进行测量。例如,ECC编码器/解码器206可以花费与1kB代码字所花费的时间相同量的时间来编码4kB代码字。因此,理想的是尽可能使得代码字的尺寸一样大,因为编码一个4kB代码字所花费的时间小于编码4个14kB代码字所花费的时间。可选择地,ECC编码器/解码器206吞吐量可以以每秒的字节数来测量。例如,ECC编码器/解码器206可以花费比4kB代码字所花费的时间短的时间来编码1kB代码字。因此,使用较小的代码字可能依然不能与使用更长的代码字一样有效率,因为可能存在每个代码字处理时间
在所描述的实例中,数据存储系统200可以在两个数据有效载荷之间划分所接收到的主机数据单元。第一数据有效载荷可以编码成第一代码字而第二数据有效载荷编码成第二代码字。如上所述,将为每个数据有效载荷编码的代码字的尺寸可以由所述控制器201确定并且被指示给ECC编码器/解码器206。代码字的构建可以在数据缓存器204中发生。数据缓存器204可存储从主机接收到的主机数据,该数据缓存器204可存储由所述控制器201所创建的数据有效载荷,并且数据缓存器204可存储准备被写到存储器件202的被编码代码字。
在已经生成代码字之后,该代码字可以被写到闪存的一个或多个页。在有些方面,该代码字可以存储在闪存页的各个地址。在一个方面,这些代码字可以顺序地存储。在上述实例中,含有所接收到的主机数据单元的第一部分的第一代码字可以被写到第一页,而含有所接收到的主机数据单元的第二部分的第二代码字可以被写到第二页。如上所述,第一和第二页可以是相邻页,因为闪存页是按顺序被写入的。每个代码字所存储的各个地址可以基于代码字长度、闪存页尺寸以及各个闪存页的开始地址被预先确定,或者在运行时间确定,并且存储在例如配置存储器205中。配置存储器205可以包括查找表,并且在向存储器件202存储和从存储器件205代码字之前,处理器201可以从查找表检索与该代码字相关联的相应地址。
在有些方面,SSD控制器保持存储在闪存中的每个主机数据单元的虚拟地址。当接收到用于存储的主机数据时,所述主机数据单元与相应的逻辑地址相关联。控制器将主机数据单元的相应逻辑地址映射到所述主机数据单元被编码成的对应数据代码字的虚拟地址。采用这种方式,每个主机数据单元在它们被存储之后可能占(account for)多个数据代码字。所述多个代码字的每一个的虚拟地址随后被映射到闪存中的物理地址。因此,即使主机数据单元开始于代码字内的位置(例如,在开始数据位置),SSD控制器也知晓每个主机数据单元的位置整体地落于单一代码字内、跨过代码字边界,或者甚至跨过闪存页的边界。在一个实例中,逻辑地址的映射包括第一虚拟地址的每一个的偏移值,使得主机数据单元可以被编索引(index)以及从被编码到单一代码字或多个代码字之间的一个或多个数据有效载荷中被检索到。
类似地,SSD控制器可以存储在相应偏移地址处的一个或多个代码字、基于所述代码字长度的偏移地址、闪存页尺寸以及闪存页的起始地址。因此,在存储器件中存储代码字可以包括从查询表中检索与存储器件的闪存页相关联的相应偏移地址以及将相应的代码字存储在相应偏移地址处。
还是参见图2,处理器201可以起到SSD控制器的功能。处理器201可以使用配置存储器205,用于临时存储用来管理数据存储系统200的数据和信息。处理器201可以包括几个内部组件(未示出),诸如只读存储器、闪存组件接口(例如,管理沿着到存储器件202的串行连接的指令和数据传送的多路复用器)、I/O接口、纠错电路等等。在有些方面,控制器201的所有这些元件都可以继承到单一芯片上。在其他方面,这些元件可以分开位于其自己的PC板上。
处理器201还可以被配置为执行代码或指令以便执行此处所描述的操作和功能,管理请求流和地址映射,以及执行计算和生成命令。处理器201被配置为监视和控制系统200的组件的操作。该处理器可以是通用微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、控制器、状态机、门逻辑(gatedlogic)、离散硬件组件或前述例子的组合。一个或多个指令序列可以存储为处理器201和/或其处理器内的ROM上的固件。一个或多个指令序列可以为存储在存储介质205、存储器件202中和从其中读取的软件、从主机设备(例如,经由I/O接口203)接收的软件。ROM、存储介质205、存储器件202代表机器或计算机可读介质(例如非瞬态介质)的实例,其上可以存储可由处理器201和/或其处理器执行的指令/代码。机器或计算机可读介质通常可以指的是任何用于向处理器201和/或其处理器提供指令的介质或媒介,包括诸如用于存储介质205或用于内的缓存器的动态存储器的易失性介质和诸如电子介质、光学介质以及磁性介质的非易失性介质两者
在有些方面,存储器件202包括闪存。处理器201被配置为响应于来自主机设备的写命令在存储器件202中存储从主机设备接收的数据(例如,前面描述的主机扇区(sector)数据)。处理器201还被配置为响应于来自主机设备的读取命令读取存储在存储器件202中数据并且将所读取的数据传送到主机设备。主机设备可以是被配置为经由I/O接口203连接到数据存储系统200以及将数据存储在数据存储系统200中的任何设备。该主机设备可以是计算系统,诸如个人计算机、服务器、工作站、膝上计算机、PDA、智能电话等等。可替代地,主机设备可以是电子设备,诸如数字相机、数字音频播放器、数字视频记录器等等。
在有些方面,配置存储器是一种存储介质。在这点上,存储介质205代表被用于临时存储用来管理数据存储系统200的数据和信息的易失性存储器。根据本主题技术的一个方面,存储介质205是一种随机存取存储器(RAM),诸如双数据率(DDR)RAM。其它类型的RAM也可以被用来实现存储介质205。存储器205可以使用单一RAM模块或多个RAM模块来实现。尽管存储介质205别描绘成不同于处理器201,但是本领域技术人员将意识到,存储介质205可以结合到处理器201而不会脱离本主题技术的范围。可替代地,存储介质205可以数非易失性存储器,诸如,磁性盘、闪存、外围SSD等等。
如在图2中进一步描绘的那样,数据存储系统200还可以包括I/O接口203(例如,主机接口)。I/O接口203被配置为连接到主机设备,以便从主机设备接收数据以及向主机设备发送数据。I/O接口203可以包括点连接和物理连接两者,用于例如经由处理器201的I/O接口可操作地将主机设备连接到处理器201。I/O接口203被配置为在主机设备和处理器201之间进行数据、地址以及控制信号的通信。可替换地,处理器201的I/O接口可包括I/O接口203和/或与I/O接口203结合。I/O接口203可以被配置为实现一种标准接口,诸如,串行连接SCSI(SAS)、光纤通道接口、PCI Express接口(PCIe)、SATA、USB等。I/O接口203可以被配置为仅仅实现一个接口。可替换地,I/O接口203(和/或处理器201的I/O接口)可以被配置为实现多个接口,其使用用户所选择的或在组装时被编程的配置参数可以单个地选择。I/O接口203可以包括一个或多个缓存其,用于缓存主机设备和处理器201之间的传输量(transmission)。
存储器件202代表用于存储数据的非易失性存储器件。根据本主题技术的方面,存储器件202包括例如NAND闪存。存储器件202可以包括单一闪存期间或芯片,如图2所示,或者可以包括排列在多个通道中的多个闪存期间或芯片。闪存不限于任何特定容量或配置。例如,物理块的数量、每个物理块的物理页的数量、每个物理页的扇区的数量以及扇区的尺寸可以在本主题技术的范围内改变。
图3是根据本主题技术的流程图,图释了用于将数据存储在固态器件中的实例处理。图3中所呈现的实例处理可以采用闪存来执行,该闪存代表在用于数据存储的固态器件中使用的固态非易事存储器的一个实例。其它类型的固态非易失性存储器可以用于本主题技术,包括组织成有限长度页的存储器。其它类型的固态非易失性存储器可以包括但不限于,限制性随机存取存储器(ReRAM或RRAM)、非易失性静态随机存取存储器(nvSRAM)、铁电随机存取存储器(FeRAM)、磁阻效应随机存取存储器(MRAM)、自旋转移力矩RAM(STTRAM)、相变化存储器(PCM或PCRAM)、可编程金属化单元存储(PMC)、硅氧化物-氮氧化物-硅存储器(SONOS)、赛道记忆体(racetrack)或磁畴壁(domain-wall)存储器(DWM)以及纳米RAM(NRAM)。用于在例如闪存的固态非易失性存储器中存储的主机数据单元(例如,扇区)可以通过所述控制器201(302)接收。主机数据单元可以包括主机系统所提供的一个或多个扇区。如上所述,所述主机数据单元每个可以具有相同的尺寸。
所述多个主机数据单元划分成多个数据有效载荷,其中第一数据有效载荷包括第一主机数据单元而第二数据有效载荷包括第二主机数据单元的一部分(304)。在这方面,有些所述数据有效载荷包括整个主机数据单元而其他包括主机数据单元的部分。因此,尽管所述主机数据单元每个具有相同尺寸,但是所述数据有效载荷也可以不都具有相同尺寸。
所述第一数据有效载荷被编码到具有第一代码字尺寸的第一代码字(306)。第二数据有效载荷被编码到具有第二代码字尺寸的第二代码字,所述第二代码字尺寸不同于所述第一代码字尺寸(308)。如上所述,所述第一代码字尺寸和所述第二代码字尺寸可以基于ECC编码器/解码器206的能力。
所述第一代码字和所述第二代码字被写到闪存中的第一页(310)。通过将所述第二主机数据单元划分成多个数据有效载荷,可以将闪存存储空间最大化。例如,参见图1,如果闪存的页120a的尺寸为16kB以及用于开销(overhead)的一些空间(room),其能够存储三个尺寸为每个4kB加上ECC奇偶校验位的代码字100a-100c。不过,闪存中的页120a可以不具有剩余用于第四个4kB代码字和ECC奇偶校验位的足够空间(room)。相反,其可以具有用于3kB代码字和ECC奇偶校验位的空间。如果该闪存不具有剩余用于3kB代码字的足够空间,则所述控制器201可以核实看看是否存在用于2kB代码字的空间。如果该闪存不具有剩余用于2kB代码字的足够空间,则所述控制器201可以核实看看是否存在用于1kB代码字的足够空间。如果该闪存不具有剩余用于甚至最小的代码字的足够空间,则将最大尺寸的代码字,在该实例中为4kB,写到下一页。
一旦第二代码字102a被写入闪存内的第一页120a,则含有所述第二主机数据单元的剩余部分的第三数据有效载荷可以被编码成具有第三代码字尺寸的第三代码字104a。在上述实例中,第二代码字102a的尺寸为3kB,因此,第三代码字104a尺寸为1kB。第三代码字104a被写到与第一页120a邻近的第二页120b。如上所述,如果存在一个命令要读取在两页120a和120b上的被划分跨两个代码字102a和104a的主机数据单元,该系统可以解码所述两个代码字102a和104a,并且不会读取第一页120a或第二页120b上的任何其它数据以便访问所请求的主机数据单元。
为了尽可能多地将最大的代码字写入闪存,所述控制器201可以查看是否有一个或多个最大尺寸的代码字可以被写入该页。在这种情况下,有用于最大尺寸的多个代码字的足够空间,则将所述第一代码字尺寸的三个以上的代码字100d-100f(在本实例中,4kB)写入第二页120b。在写入具有1kB代码字尺寸的代码字104a和每个具有4kB代码字尺寸的代码字100d-100f之后,尺寸为16kB的第二页120b不能适于另一个3kB代码字,但是可适于具有2kB代码字尺寸的代码字106a。如前所述,将被存储在闪存上的下一个主机数据单元可以被划分成两个数据有效载荷,并被编码到两个代码字106a和106b。一个代码字106a被写入第二页120b而另一个代码字106b被写入第三页106b。
该处理继续,尽可能多地使用最大代码字尺寸。在图1中,代码字100g-100l、102b、104b被写入页120c-120d知道页以最大代码字尺寸的代码字结束为止。在该实例中,第四页120d以最大代码字尺寸的代码字100l结束。1kB代码字将不适于第四页120d。代码字100a-100l、102a-102b、104a-104b、106a-106被写入并按照代码字尺寸的模式(pattern)排列。在这种情况下,该模式为4kB、4kB、4kB、3kB、1kB、4kB、4kB、4kB、2kB、2kB、4kB、4kB、4kB、1kB、3kB、4kB、4kB、4kB。在编码和存储剩余的主机数据单元时可以重复该相同的模式。
本领域技术人员会理解到,此处所描述的各种图释性的块、元件、组件、方法以及算法可以实现为电子硬件、计算机软件或两者的组合。为了解释硬件和软件的这种互换性,已经总体上按照其功能描述了各种图释性的块、元件、组件、方法以及算法。这种功能实现为硬件或软件依赖于影响到整体系统的特定的应用和设计限制。本领域技术人员可以以用于每种特定应用的不同方式实现所述功能。各种组件和块可以在不脱离本主题技术的范围的情况下被完全不同地排列(例如,按照不同顺序排列或者按照不同方式分隔)。
可以理解的是,在所披露的处理中的步骤的具体顺序或层级是一种举例方式的解释。基于设计偏好,可以理解的是,所述处理中的步骤的具体顺序或层级可以被重新排列。有些步骤可以同步地被执行。附后的方法权利要求以相同的顺序给出了各个步骤的元素,但是不意味着将按照所呈现的具体顺序或层级收到限制。
所提供的前面的描述使得本领域技术人员能够实现此处描述的各个方面。前述描述提供了该主题技术的各种实例,并且该主题技术不限于这些实例。本领域技术人员清楚对这些方面可以有各种修改,并且此处所限定的总原则可以应用到其他方面。因此,权利要求书不意图受限于此处所示的这些方面,而是将于由语言权利要求构成的全部范围一致,其中以单数形式提到的元件并不意图意味着“一个和仅有一个”,除非有明确的说明,而是应该理解为“一个或多个”。除非有具体明示,术语“有些”指的是一个或多个。男性代词(例如,他的)包括女性和中性(例如,她的和它的),反之亦然。标题和小标题,如果有的话,仅仅是为了方便使用,并不限制本发明。
谓词“配置为”、“可操作来”以及“被编程为”不意味着对象的特定有形或无形的修改,而是意图可以被互换性使用。例如,被配置为件事和控制操作或组件的处理器也可以意味着该处处理器被编程为监视和控制该操作或者该处理器可操作来监视或控制该操作。同样地,被配置为执行代码的处理器可以被认为是被编程为执行代码的处理器或可以操作为执行代码的处理器。
诸如“方面”这种措辞并不意味着这种方面对该主题技术是必要的或者这种方面应用于该主题技术的所有配置。涉及一个方面的披露内容可以应用到所有配置,或者应用到一个或多个配置。一种方面可以提供一个或多个实例。诸如一个方面这种措辞可以指的是一个或多个方面,反之亦然。诸如“实施例”这种措辞并意味着该实施例对本主题技术是必要的或者该实施例应用于该主题技术的所有配置。涉及一个实施例的披露内容可以应用到所有实施例,或者应用到一个或多个实施例。一种实施例可以提供一个或多个实例。诸如“实施例”的措辞可以指的是一个或多个实施例,反之亦然。诸如“配置”这种措辞并意味着该配置对本主题技术是必要的或者该配置应用于该主题技术的所有配置。涉及一个配置的披露内容可以应用到所有配置,或者应用到一个或多个配置。一种配置可以提供一个或多个实例。诸如“配置”的措辞可以指的是一个或多个配置,反之亦然。
单词“示例性”在此被用来表示“起到一个例子或说明性的作用”在此被描述为“示例性”的方面或设计都不必然被认为是高于其他方面的或设计的优选的或最佳的方面。
等同于在本公开通篇所描述的各种方面的元件的、对本领域普通技术人员已知或将来所知晓的所有结构和功能等同无在此通过参引包含在此处并且意图由权利要求书所涵盖。而且,在此没有披露的任何事情意图将被奉献给公众,无论这种披露是否明确限定在权利要求书中。此外,就说明书和权利要求书中的术语“包括”、“具有”等而言,这种术语将是包含性的,方式上类似于术语“包含”,就像在权利要求中被用作过渡词是解释“包含”时一样。
Claims (18)
1.一种用于在固态器件中存储数据的方法,该方法包括:
接收用于存储在固态非易失性存储器中的多个主机数据单元;
在多个数据有效载荷之间划分所述多个主机数据单元,其中第一数据有效载荷包括第一主机数据单元,且第二数据有效载荷包括第二主机数据单元的一部分;
将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字;
将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,第二代码字尺寸不同于第一代码字尺寸;以及
将第一代码字和第二代码字写到固态非易失性存储器中的第一页,
其中所述第一代码字和所述第二代码字包括多个奇偶校验位,并且其中所述第一代码字中的奇偶校验位的数量与所述第二代码字中的奇偶校验位的数量相同。
2.根据权利要求1所述的方法,还包括:
将一组数据有效载荷编码成具有第一代码字尺寸的多个代码字,其中该组数据有效载荷包括源自所述多个数据有效载荷中的两个或多个数据有效载荷;以及
将所述具有第一代码字尺寸的多个代码字写到所述固态非易失性存储器中的第一页。
3.根据权利要求1所述的方法,其中第三数据有效载荷包括所述第二主机数据单元的剩余部分,并且该方法还包括:
将所述第二主机数据单元的剩余部分划分到第三数据有效载荷;
将所述第三数据有效载荷编码成具有第三代码字尺寸的第三代码字,第三代码字尺寸不同于所述第一代码字尺寸和第二代码字尺寸;以及
将所述第三代码字写到所述固态非易失性存储器中的第二页。
4.根据权利要求3所述的方法,其中所述第一页和第二页在所述固态非易失性存储器中是依次有顺序的。
5.根据权利要求3所述的方法,其中所述第二页包括三个代码字,每个代码字具有不同的代码字尺寸。
6.根据权利要求1所述的方法,其中多个代码字跨所述固态非易失性存储器中的多个页以代码字尺寸的重复图案被写入和被排列。
7.根据权利要求1所述的方法,其中所述第一代码字尺寸和所述第二代码字尺寸选自于多个代码字尺寸。
8.根据权利要求1所述的方法,其中在所述多个数据有效载荷之间划分所述多个主机数据单元包括:基于要被写到所述固态非易失性存储器的代码字尺寸分配数量。
9.一种存储系统,包括:
固态非易失性存储器;
一个或多个数据缓存器,配置为接收用于存储在所述固态非易失性存储器中的多个主机数据单元;
控制器,被配置为:
在多个数据有效载荷之间划分所述一个或多个数据缓存器中的所述多个主机数据单元,其中第一数据有效载荷包括第一主机数据单元,且
第二数据有效载荷包括第二主机数据单元的一部分;以及
编码器/解码器,被配置为:
将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字;以及
将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,所述第二代码字尺寸不同于所述第一代码字尺寸;
其中,所述控制器还被配置为将所述第一代码字和所述第二代码字写到固态非易失性存储器中的第一页,
其中所述第一代码字和所述第二代码字包括多个奇偶校验位,并且其中所述第一代码字中的奇偶校验位的数量与所述第二代码字中的奇偶校验位的数量相同。
10.根据权利要求9所述的系统,其中所述编码器/解码器还被配置为将一组数据有效载荷编码成具有第一代码字尺寸的多个代码字,其中该组数据有效载荷包括源自所述多个数据有效载荷中的两个或多个数据有效载荷;以及所述控制器还被配置为将所述具有第一代码字尺寸的多个代码字写到所述固态非易失性存储器中的第一页。
11.根据权利要求9所述的系统,其中第三数据有效载荷包括所述第二主机数据单元的剩余部分,
其中所述控制器还被配置为将所述第二主机数据单元的剩余部分划分为第三数据有效载荷;
其中所述编码器/解码器还被配置为将所述第三数据有效载荷编码成具有第三代码字尺寸的第三代码字,所述第三代码字尺寸不同于所述第一代码字尺寸和第二代码字尺寸;以及
其中所述控制器还被配置为将所述第三代码字写到所述固态非易失性存储器中的第二页。
12.根据权利要求11所述的系统,其中所述第一页和第二页在所述固态非易失性存储器是依次有顺序的。
13.根据权利要求11所述的系统,其中所述第二页包括三个代码字,每个代码字具有不同的代码字尺寸。
14.根据权利要求9所述的系统,其中多个代码字跨所述固态非易失性存储器中的多个页以代码字尺寸的重复图案被写入和被排列。
15.根据权利要求9所述的系统,其中所述第一代码字尺寸和所述第二代码字尺寸选自于多个代码字尺寸。
16.根据权利要求15所述的系统,其中所述多个代码字尺寸基于所述编码器/解码器的能力。
17.根据权利要求9所述的系统,其中所述在所述多个数据有效载荷之间划分所述多个主机数据单元包括:基于要被写到所述固态非易失性存储器的代码字尺寸分配数量。
18.一种机器可读介质,其上包含一些指令,所述指令在被执行时执行一种方法,该方法包括:
接收用于存储在固态非易失性存储器中的多个主机数据单元;
在多个数据有效载荷之间划分所述多个主机数据单元,其中第一数据有效载荷包括第一主机数据单元,且第二数据有效载荷包括第二主机数据单元的一部分;
将第一数据有效载荷编码成具有第一代码字尺寸的第一代码字;
将第二数据有效载荷编码成具有第二代码字尺寸的第二代码字,第二代码字尺寸不同于第一代码字尺寸;以及
将第一代码字和第二代码字写到固态非易失性存储器中的第一页,
其中所述第一代码字和所述第二代码字包括多个奇偶校验位,并且其中所述第一代码字中的奇偶校验位的数量与所述第二代码字中的奇偶校验位的数量相同。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/338,264 US9430326B2 (en) | 2014-07-22 | 2014-07-22 | Multiple ECC codeword sizes in an SSD |
US14/338,264 | 2014-07-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302659A CN105302659A (zh) | 2016-02-03 |
CN105302659B true CN105302659B (zh) | 2018-10-26 |
Family
ID=54013388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510431923.7A Active CN105302659B (zh) | 2014-07-22 | 2015-07-21 | 固态器件中的多纠错码代码字尺寸 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9430326B2 (zh) |
CN (1) | CN105302659B (zh) |
AU (1) | AU2015203825C1 (zh) |
DE (1) | DE102015008923A1 (zh) |
FR (1) | FR3024271B1 (zh) |
GB (1) | GB2530607B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9520901B2 (en) | 2014-03-06 | 2016-12-13 | Kabushiki Kaisha Toshiba | Memory controller, memory system, and memory control method |
US10283091B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Buffer optimization |
US10169142B2 (en) * | 2016-07-12 | 2019-01-01 | Futurewei Technologies, Inc. | Generating parity for storage device |
TWI695378B (zh) * | 2017-12-15 | 2020-06-01 | 群聯電子股份有限公司 | 位元標記方法、記憶體控制電路單元以及記憶體儲存裝置 |
US10817372B2 (en) * | 2018-06-13 | 2020-10-27 | Innogrit Technologies Co., Ltd | Systems and methods for ultra fast ECC with parity |
US11010245B2 (en) * | 2018-06-21 | 2021-05-18 | Winbond Electronics Corp. | Memory storage apparatus with dynamic data repair mechanism and method of dynamic data repair thereof |
KR102645140B1 (ko) | 2018-12-06 | 2024-03-07 | 삼성전자주식회사 | Fpga를 포함하는 메모리 시스템 및 이의 동작 방법 |
TWI709850B (zh) * | 2019-01-30 | 2020-11-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
KR20200117129A (ko) | 2019-04-03 | 2020-10-14 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11144392B1 (en) * | 2020-07-17 | 2021-10-12 | Toshiba Memory Corporation | Payload distribution in solid state drives |
US11520491B2 (en) * | 2021-04-12 | 2022-12-06 | Micron Technology, Inc. | Parity protection in non-volatile memory |
US11550658B1 (en) | 2021-09-02 | 2023-01-10 | Western Digital Technologies, Inc. | Storage system and method for storing logical-to-physical address table entries in a codeword in volatile memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950586A (zh) * | 2009-03-27 | 2011-01-19 | 联发科技股份有限公司 | 存储控制器及控制数据读取的方法 |
CN102656566A (zh) * | 2009-12-17 | 2012-09-05 | 国际商业机器公司 | 固态存储系统中的数据管理 |
CN103778958A (zh) * | 2012-10-17 | 2014-05-07 | 三星电子株式会社 | 控制非易失性存储器件的控制器以及控制器的操作方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8601352B1 (en) | 2009-07-30 | 2013-12-03 | Apple Inc. | Efficient LDPC codes |
CN101964205B (zh) | 2010-09-17 | 2013-08-07 | 记忆科技(深圳)有限公司 | 基于固态硬盘的ecc模块动态复用系统及方法 |
KR101712619B1 (ko) | 2011-01-19 | 2017-03-06 | 삼성전자주식회사 | 에러 정정 코드의 인코딩 및 디코딩 방법 |
KR101725223B1 (ko) * | 2011-03-25 | 2017-04-11 | 삼성전자 주식회사 | 저장 장치에서의 데이터 압축 방법 |
US20130031301A1 (en) | 2011-07-29 | 2013-01-31 | Stec, Inc. | Backend organization of stored data |
KR20130027253A (ko) * | 2011-09-07 | 2013-03-15 | 삼성전자주식회사 | 데이터의 압축 방법 |
KR101990971B1 (ko) | 2012-01-30 | 2019-06-19 | 삼성전자 주식회사 | 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 |
US8650467B1 (en) | 2012-07-23 | 2014-02-11 | Apple Inc. | Parallel chien search over multiple code words |
KR101926608B1 (ko) | 2012-08-27 | 2018-12-07 | 삼성전자 주식회사 | 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더 |
US9203435B2 (en) * | 2013-05-08 | 2015-12-01 | Broadcom Corporation | Multiple size and rate FEC code combination with minimum shortening and maximum combined code rate |
US9201728B2 (en) * | 2013-09-12 | 2015-12-01 | Seagate Technology Llc | Memory device with variable code rate |
-
2014
- 2014-07-22 US US14/338,264 patent/US9430326B2/en active Active
-
2015
- 2015-07-02 GB GB1511603.1A patent/GB2530607B/en active Active
- 2015-07-07 FR FR1556408A patent/FR3024271B1/fr active Active
- 2015-07-08 AU AU2015203825A patent/AU2015203825C1/en active Active
- 2015-07-10 DE DE102015008923.4A patent/DE102015008923A1/de active Pending
- 2015-07-21 CN CN201510431923.7A patent/CN105302659B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950586A (zh) * | 2009-03-27 | 2011-01-19 | 联发科技股份有限公司 | 存储控制器及控制数据读取的方法 |
CN102656566A (zh) * | 2009-12-17 | 2012-09-05 | 国际商业机器公司 | 固态存储系统中的数据管理 |
CN103778958A (zh) * | 2012-10-17 | 2014-05-07 | 三星电子株式会社 | 控制非易失性存储器件的控制器以及控制器的操作方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2530607B (en) | 2016-08-03 |
GB2530607A (en) | 2016-03-30 |
US20160026525A1 (en) | 2016-01-28 |
AU2015203825B2 (en) | 2017-04-06 |
FR3024271A1 (fr) | 2016-01-29 |
AU2015203825A1 (en) | 2016-02-11 |
US9430326B2 (en) | 2016-08-30 |
AU2015203825C1 (en) | 2017-10-19 |
GB201511603D0 (en) | 2015-08-19 |
FR3024271B1 (fr) | 2018-12-07 |
CN105302659A (zh) | 2016-02-03 |
DE102015008923A1 (de) | 2016-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302659B (zh) | 固态器件中的多纠错码代码字尺寸 | |
CN111081308B (zh) | 用于混合非易失性存储系统的系统和方法 | |
KR101564569B1 (ko) | 상위-레벨 리던던시 정보 계산 | |
CN108701087B (zh) | 用于处理到存储器装置中的物理块的块群组的顺序写入的方法和设备 | |
WO2016107272A1 (zh) | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 | |
US9875153B2 (en) | Validation bits and offsets to represent logical pages split between data containers | |
US9971517B2 (en) | Accelerated non-volatile memory recirculation processing | |
JP2015510213A (ja) | 物理ページ、論理ページ、およびコードワードの対応 | |
CN110764691B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
KR20160048682A (ko) | 불휘발성 메모리 장치 그리고 그 제어방법 | |
CN105683953A (zh) | 支持加速数据库操作的数据存储设备 | |
KR20210092844A (ko) | 호스트 상주 변환 레이어 유효성 검사 기술 | |
CN112445718A (zh) | 大文件完整性技术 | |
KR20220022092A (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
US11922012B2 (en) | Memory mapping device and method | |
CN116775368A (zh) | 用于以不同码率在分区之间回拷的多层码率架构 | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
US20180068701A1 (en) | Devices, systems, and methods for increasing the usable life of a storage system by optimizing the energy of stored data | |
US11487465B2 (en) | Method and system for a local storage engine collaborating with a solid state drive controller | |
JP5913735B2 (ja) | プログラム状態とデータパターンとの間のマッピング | |
US20220206711A1 (en) | Devices and methods for optimized fetching of multilingual content in media streaming | |
US20230176731A1 (en) | Memory management | |
CN118020057A (zh) | 使用内联元数据对压缩状态的早期检测 | |
CN117555474A (zh) | 用于存储设备的数据处理方法和相关设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190123 Address after: American California Patentee after: Western Digital Technologies, Inc. Address before: Amsterdam Patentee before: Hitachi Global Storage Technologies Netherlands B. V. |
|
TR01 | Transfer of patent right |