CN108172261B - 由数据存储设备的解码期间的流水线延迟检测 - Google Patents
由数据存储设备的解码期间的流水线延迟检测 Download PDFInfo
- Publication number
- CN108172261B CN108172261B CN201710817883.9A CN201710817883A CN108172261B CN 108172261 B CN108172261 B CN 108172261B CN 201710817883 A CN201710817883 A CN 201710817883A CN 108172261 B CN108172261 B CN 108172261B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- decoding
- read
- command
- 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
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/1012—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 codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
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)
- Read Only Memory (AREA)
Abstract
一种数据存储设备的操作的方法,包括向数据存储设备的解码器输入数据。方法还包括,响应于与解码数据的解码过程相关联的流水线延迟的指示而传送命令到数据存储设备的存储器。命令指示响应于流水线延迟而要在存储器处执行的操作。
Description
技术领域
本公开一般涉及电子设备,并且更具体地,涉及数据存储设备。
背景技术
数据存储设备使得用户能够存储和检索数据。数据存储设备的示例包括易失性存储器设备和非易失性存储器设备。非易失性存储器可以在掉电事件之后保留数据,并且易失性存储器可以在掉电事件之后丢失数据。
在一些情况下,从数据存储设备读取的数据可能遭受一个或多个错误。例如,电噪声可以引起逻辑“0”值被读取为逻辑“1”值(或反之亦然)。
为了启用数据错误的校正,数据存储设备可以使用编码方案来编码数据,诸如通过在将数据存储到数据存储设备的存储器之前向数据添加冗余信息。编码方案可以指定将数据与编码方案的码字相关联的码本。在读取数据时,数据存储设备可以通过使用冗余信息来定位和校正一个或多个数据错误以解码数据(取决于编码方案的特定纠错能力)。
在一些情况下,数据的解码可以造成读取操作中的延迟。例如,解码器可以使用迭代解码过程来定位数据错误,并且大量的错误可以造成减慢其它数据的处理的“瓶颈”条件,导致延迟。
发明内容
一种包括解码器和存储器的数据存储设备的操作的方法,所述方法包括:向数据存储设备的解码器输入数据;以及响应于与解码所述数据的解码过程相关联的流水线延迟的指示,向所述数据存储设备的存储器传送命令,所述命令指示响应于所述流水线延迟而要在所述存储器处执行的操作。
一种装置,包括:纠错码ECC引擎,被配置为使用解码操作来解码数据;耦合到所述ECC引擎的电路,所述电路被配置为,检测指示与所述解码操作相关联的流水线延迟的事件;以及到存储器的接口,所述接口被配置为,向所述存储器提供响应于所述流水线延迟要使用特定读取技术来执行读取操作的命令。
一种装置,包括:用于解码数据的装置;用于预测与所述数据的解码相关联的流水线延迟的装置;以及用于向存储器传送命令的装置,所述命令指示要使用特定读取技术在所述存储器处执行读取操作以补偿所述流水线延迟。
附图说明
图1是包括数据存储设备的***的特定例示性示例的示图,所述数据存储设备包括被配置为在数据存储设备处检测流水线延迟的电路。
图2是图1的数据存储器设备的操作的方法的特定例示性示例的流程图。
图3是图1的数据存储设备的操作的另一方法的特定例示性示例的流程图。
图4是包括诸如图1的数据存储设备的数据存储设备的非易失性存储器***的特定例示性示例的框图。
图5是包括多个图4的非易失性存储器***的存储***的特定例示性示例的框图。
图6是包括多个图5的存储***的分级存储***的特定例示性示例的框图。
图7是存储器***的框图,并且描绘图4的非易失性存储器***的控制器的特定例示性示例的组件。
图8是存储器***的框图,并且描绘图4的非易失性存储器***的非易失性存储器裸芯的特定例示性示例的组件。
具体实施方式
根据本公开的多方面的数据存储设备被配置为预测或检测与在数据存储设备处被执行以解码数据的解码过程有关的流水线延迟。为了说明,数据存储设备可以被配置为检测解码过程的持续时间满足阈值。可替换地或此外,数据存储设备可以被配置为,基于与数据相关联的综合权重(syndrome weight)、基于与数据相关联的翻转比特的数量、基于在解码过程期间的解码模式改变、基于一个或多个其它条件、或它们的组合,来预测(或检测)流水线延迟。
响应于预测流水线延迟,数据存储设备可以向数据存储设备的存储器发送命令。命令可以指示要被读取的数据、要被使用来读取数据的读取技术(例如,软比特技术)、另一操作(例如,读取阈值校准操作)、或它们的组合。在有些情况下,命令在解码过程的执行期间被执行。
通过响应于预测流水线延迟来发送命令,数据存储设备可以增加在数据存储设备的流水线处的吞吐量(例如,通过减小或避免在流水线处“停止(stall)”的情况)。例如,通过在解码过程的执行期间执行命令,相比于等待直到解码过程被完成才发起另一存储器操作,吞吐量可以被增加。
下面参考附图描述本公开的特定方面。在描述中,共同的和相似的特征可以由共同的参考编号所指定。如这里所使用的,“示范性”可以指示示例、实施、和/或方面,并且不应该被解释为限制或指示偏好或优选的实施。
参考图1,***的特定例示性示例被描绘并且通常被指定为100。***100包括数据存储设备102(例如,装置)和设备180(例如,主机设备或访问设备)。数据存储设备102包括存储器设备103(例如,一个或多个存储器裸芯)和控制器130。控制器130被耦合到存储器设备103。在一些实施方式中,数据存储设备102被集成在诸如与固态驱动器(solid-statedrive,SSD)实施方式有关的设备180之内。
存储器设备103包括读取/写入电路116、和诸如包括在一个或多个存储器裸芯中的非易失性的存储元件的阵列的存储器104。如例示性示例,存储器104可以包括闪存(例如,NAND闪存)、或诸如电阻式随机存取存储器(resistive random access memory,ReRAM)的电阻式存储器。存储器104可以具有三维(three-dimensional,3D)存储器配置。如这里所使用的,3D存储器设备可以包括多个物理层的存储元件(而不是具有单一物理层的存储元件,如平面存储设备中的)。作为示例,存储器104可以具有3D垂直位线(vertical bitline,VBL)配置。在特定实施方式中,存储器104是具有3D存储器阵列配置的非易失性存储器,所述3D存储器阵列配置在一个或多个物理层的具有放置在硅衬底上的有源区的存储器单元的阵列中被单片地形成。可替换地,存储器104可以具有另一配置,诸如二维(two-dimensional,2D)存储器配置或非单片3D存储器配置(例如,堆叠的裸芯3D存储器配置)。
存储器104包括存储元件的一个或多个区域。存储区域的示例是块,诸如存储元件的NAND快闪擦除组、或ReRAM实施方式中的基于电阻的存储元件的组。存储区域的另一示例是存储元件的字线(例如,NAND快闪存储元件的字线或基于电阻的存储元件的字线)。如例示性示例,存储区域可以具有单层单元(single-level-cell,SLC)配置、多层单元(multi-level-cell,MLC)配置、或三层单元(tri-level-cell,TLC)配置。存储器104的每个存储元件可以是对指示一个或多个值的状态(例如,闪存配置中的阈值电压或电阻式存储器配置中的电阻式状态)可编程的。作为示例,在例示性TLC方案中,存储元件可以是对指示三个值的状态可编程的。作为附加示例,在例示性MLC方案中,存储元件可以是对指示两个值的状态可编程的。
控制器130包括到存储器设备103的存储器接口132,并且还包括到设备180的设备接口172。在例示性示例中,存储器接口132包括缓冲器的第一集合,并且设备接口172包括缓冲器的第二集合。控制器130也包括命令队列134、纠错码(error correcting code,ECC)引擎140、和流水线调度器150。
ECC引擎140可以包括一个或多个编码器、一个或多个解码器、或两者的组合。为了说明,图1的示例描绘了ECC引擎140包括第一解码器142和第二解码器144。在其它示例中,ECC引擎140可以包括不同数量的解码器(例如,一个解码器、三个解码器、或另一数量的解码器)。图1也示出了ECC引擎140可以包括综合权重生成器电路146和比特翻转电路148。
ECC引擎140被配置为,使用一个或多个ECC编码技术来编码数据以生成一个或多个纠错码(ECC)码字。例如,ECC引擎140可以包括里德-所罗门(Reed-Solomon,RS)编码器、博斯-乔赫里-黑姆(Bose-Chaudhuri-Hocquenghem,BCH)编码器、低密度奇偶校验(low-density parity check,LDPC)编码器、涡轮(turbo)编码器、被配置为根据一个或多个其它ECC技术来编码数据的编码器、或它们的组合。
ECC引擎140被配置为对从存储器104读取的数据进行解码来检测和校正,取决于ECC方案的纠错能力,可能在数据中出现的一个或多个比特错误。解码器142、144中的一个或两者可以对应于RS解码器、BCH解码器、LDPC解码器、涡轮解码器、被配置为根据一个或多个其它ECC技术解码数据的解码器、或它们的组合。第一解码器142可以被配置为解码包括硬比特、软比特、或它们的组合的数据。第二解码器144可以被配置为解码包括硬比特、软比特、或它们的组合的数据。
控制器130还包括被耦合到ECC引擎140的电路(例如,流水线延迟预测电路152)。例如,流水线延迟预测电路152可以被耦合到第一解码器142、第二解码器144、综合权重生成器电路146、或比特翻转电路148中的一个或多个。流水线延迟预测电路152可以包括计时器电路154、比较器电路160、或比较器电路166中的一个或多个。
在操作期间,控制器130可以从设备180接收诸如与对向存储器104的写入访问的请求有关的数据174。控制器130可以编码数据174以生成编码的数据,诸如数据106。数据106可以包括一个或多个页面,诸如第一页面108(例如,第一ECC码字、快闪管理单元(flashmanagement unit,FMU)、或ECC页面)和第二页面110(例如,第二ECC码字、FMU、或ECC页面)。
控制器130被配置为向存储器设备103传送数据106。存储器设备103可以将数据106存储到存储器104的特定区域。
控制器130可以从存储器104访问数据106。作为例示性示例,控制器130可以接收对包括第一页面108的数据的读取访问的请求。控制器130可以将读取命令传送到存储器设备103以发起第一页面108的读取。响应于读取命令,存储器设备103可以使用读取/写入电路116来感测第一页面108以生成感测的数据,诸如第一页面108的第一表示124。由于一个或多个错误,第一表示124可以不同于第一页面108。根据特定实现,第一表示124可以包括表示第一页面108的硬比特的集合、表示第一页面108的软比特的集合、或两者。
存储器设备103可以向控制器130提供第一页面108的第一表示124。控制器130被配置为从存储器设备103接收第一表示124。例如,存储器接口132可以包括被配置为缓冲第一表示124的一个或多个缓冲器。
在缓冲第一表示124之后,控制器130可以被配置为处理第一表示124。例如,ECC引擎被配置为使用解码操作来解码数据(例如,通过解码第一表示124来生成所解码的数据)。在一些实施方式中,综合权重生成器电路146可以在第一表示124的解码之前或与第一表示124的解码有关地确定与第一表示124相关联的综合权重162。可替换地或此外,比特翻转电路148可以在第一表示124的解码之前或与第一表示124的解码有关地翻转第一表示124的一个或多个比特。例如,比特翻转电路148可以包括被配置为通过翻转第一表示124的一个或多个比特来尝试解码第一表示124的解码器(例如,基于综合权重162)。如果使用比特翻转电路148解码失败,则ECC引擎140可以将第一表示124输入到第一解码器142(例如,来发起“充分”解码操作)。
ECC引擎140可以被配置为使用比特翻转电路148、第一解码器142、第二解码器144、另一解码器、或它们的组合来执行解码操作。在例示性示例中,第一解码器142与第一纠错能力相关联,并且第二解码器144与大于第一纠错能力的第二纠错能力相关联。在这种情况下,ECC引擎140可以使用第一解码器142来尝试解码第一表示124。如果使用第一解码器142解码第一表示124未能收敛(例如,超时),则ECC引擎140可以在解码操作期间,发起从使用第一解码器142来解码第一表示124到使用第二解码器144来解码第一表示124的解码模式改变。
在解码数据(例如,第一表示124)以生成解码的数据时,控制器130可以向设备180提供解码的数据(例如,经由设备接口172)。例如,设备接口172可以包括被配置为缓冲用于由设备180来检索的解码的数据的一个或多个缓冲器。
数据存储设备102的某些组件可以在诸如第一表示124的数据的检索和处理期间起到流水线的作用。作为例示性示例,流水线的第一阶段可以对应于存储器接口132的缓冲器的集合,流水线的第二阶段可以对应于ECC引擎140,并且流水线的第三阶段可以对应于设备接口172的缓冲器的集合。流水线调度器150可以被配置为发起由命令队列134指示的任务(例如,第一任务136和第二任务138),来保持流水线“充满”要被传送到设备180的数据。作为例示性示例,流水线调度器150可以被配置为每次数据“穿过”(或“清除”)流水线的特定阶段时发起由命令队列134指示的任务。
在一些情况下,在流水线的特定阶段的延迟可以引起流水线中的“气泡(bubble)”。为了说明,如果由ECC引擎140执行的特定解码过程被延迟(例如,由于数据中相对大数量的错误),则流水线的每个阶段都可能“停止”。在一些情况下,存储器设备103的存储器裸芯的物理特性之间的变化(也称为“裸芯到裸芯的变化”)可以引起某些数据包括相对大数量的错误,在一些情况中导致流水线停止。流水线停止增加读取操作的延迟并且减小在数据存储设备102处的吞吐量。
流水线延迟预测电路152被配置为在数据存储设备102处预测流水线延迟。在特定示例中,流水线延迟预测电路152被配置为检测指示与解码第一页面108的第一表示124的解码操作相关联的流水线延迟的事件。为了说明,下面描述流水线延迟检测的某些方面。根据特定实施方式,这样的方面可以被联合地或分开地使用。可替换地或此外,一个或多个其它方面可以被用于预测流水线延迟。
根据第一示例,计时器电路154被配置为监视解码诸如第一表示124的数据的解码操作的持续时间156。计时器电路154可以被配置为检测持续时间156是否满足阈值158(例如,持续时间156是否大于阈值158)。如果持续时间156满足阈值158,则流水线延迟预测电路152可以预测(或检测)在数据存储设备102处的流水线延迟。
可替换地或除了第一示例之外,在第二示例中,比较器电路160被配置为访问与解码诸如第一表示124的数据的解码操作有关的综合权重162。比较器电路160可以被配置为检测综合权重162是否满足阈值164(例如,综合权重162是否大于阈值164)。如果综合权重162满足阈值164,则流水线延迟预测电路152可以预测(或检测)在数据存储设备102处的流水线延迟。
可替换地或除了第一示例和第二示例之外,在第三示例中,比较器电路166被配置为检测与解码诸如第一表示124的数据的解码操作有关的、由比特翻转电路148调整的一个或多个翻转的比特168的数量。比较器电路166可以被配置为检测一个或多个翻转的比特168的数量是否满足阈值170(例如,一个或多个翻转的比特168的数量是否大于阈值170)。如果一个或多个翻转的比特168的数量满足阈值170,则流水线延迟预测电路152可以预测(或检测)在数据存储设备102处的流水线延迟。
可替换地或除了第一示例、第二示例、和第三示例之外,在第四示例中,流水线延迟预测电路152被配置为检测在解码操作期间由ECC引擎140执行的解码模式改变。例如,流水线延迟预测电路152可以被配置为检测在解码操作期间,从使用第一解码器142来解码第一表示124到使用第二解码器144来解码该数据的解码模式改变。流水线延迟预测电路152可以被配置为基于编码模式改变来预测(或检测)在数据存储设备102处的流水线延迟。
响应于预测或检测在数据存储设备102处的流水线延迟,流水线延迟预测电路152可以被配置为引起控制器130向存储器设备103传送命令120。例如,存储器接口132被配置为向存储器设备103提供命令120。命令120指示响应于流水线延迟使用特定读取技术在存储器104处执行读取操作(例如,为补偿流水线延迟)。例如,命令120可以包括指定要被读取的存储器104的物理地址中的一个或多个的操作码122、要被使用来读取一个或多个物理地址的特定读取技术、其它信息、或它们的组合。
为了说明,读取操作可以包括响应于预测流水线延迟重新感测第一页面108以生成第一页面108的第二表示126。在这个示例中,操作码122可以包括与第一页面108相关联的地址。在一些示例中,第一表示124包括硬比特的集合,并且第二表示126包括软比特的集合。可替换地或此外,第一表示124可以包括第一数量的软比特,并且第二表示126可以包括大于第一数量的软比特的第二数量的软比特。在例示性示例中,在ECC引擎140对第一表示124的解码期间生成第二表示126。
在一些实施方式中,响应于将解码第一页面108的第一表示124的硬比特的解码操作终止,发起第一页面108的软比特重新感测。例如,响应于检测(例如,基于与第一表示124相关联的误比特率(bit error rate,BER))解码操作可能会失败,解码操作可以被终止(例如,为了在数据存储设备102处节省功率),并且命令120可以被发出以发起第一页面108的软比特重新感测,来生成第一页面108的第二表示126。
可替换地或除了重新感测第一页面108来生成第二表示126之外,数据存储设备102可以响应于检测流水线延迟来执行预先读取(read look-ahead)操作以生成第二页面110的表示128。例如,在第一表示124的解码之后,控制器130可以访问命令队列134以确定要被执行的任务,诸如通过标识第二任务138与第二页面110相关联。在这种情况下,控制器130可以响应于流水线延迟通过发出命令120来“加速”第二任务138的执行,诸如通过响应于流水线延迟而发起第二页面110的软比特读取。例如,在有些情况下,如果第一页面108包括相对大数量的错误,则第二页面110可能会包括相对大数量的错误(例如,由于被存储在共同的存储器裸芯、块、或字线中)。在这个示例中,响应于流水线延迟发起软比特读取以生成表示128可以减少与表示128的解码相关联的持续时间。
在一些实施方式中,控制器130被配置为,标识与和第一页面108相同的时间标签相关联的(或“被分配给”和第一页面108相同的时间标签的)、命令队列134的一个或多个任务。时间标签的一个示例是存储诸如第一页面108的页面的存储器104的区域的状态(例如,健康状态)的指示。在一些情况下,与共同的时间标记相关联的页面可能会展示共同的BER(例如,由于存储页面的存储元件的相似量的物理磨损)。在一些情况下,如果第一页面108包括相对大数量的错误,则第二页面110可能会包括相对大数量的错误(例如,由于页面108、110与共同的时间标记相关联)。在这个示例中,响应于流水线延迟发起软比特读取以生成表示128可以减少与表示128的解码相关联的持续时间。
在其它情况下,控制器130可以推测地标识第二页面110(例如,独立于由命令队列134指示的任务)。例如,控制器130可以基于由设备180指示的逻辑地址的模式来确定第二页面110可能会被设备180请求。操作码122可以指示与第二页面110相关联的地址。在例示性示例中,在ECC引擎140对第一表示124的解码期间生成表示128。
在一些实施方式中,控制器130被配置为基于成功地解码第一表示124的概率,设置由操作码122指示的地址。为了说明,如果控制器130确定(例如,基于综合权重162)解码操作可能会成功,则控制器130可以设置操作码122来指示第二页面110(可替换地或除了指示第一页面108之外)的地址。作为另一示例,如果控制器130确定(例如,基于综合权重162)解码操作可能会失败,则控制器130可以设置操作码122来指示第一页面108(可替换地或除了指示第二页面110之外)的地址。
可替换地或除了指示一个或多个地址之外,命令120可以指示一个或多个读取技术。由命令120指示的特定读取技术可以不同于用来生成第一表示124的读取技术。为了说明,特定读取技术可以对应于一种类型的感测操作,诸如软比特感测操作。可替换地或此外,特定读取技术可以对应于用来表示被存储在存储器104处的数据的若干软比特。操作码122可以指示特定读取技术。
可替换地或除了指示地址或特定读取技术之外,命令120可以指示另一存储器操作。作为示例,操作码122可以指示要在存储器104处执行读取阈值校准操作,以确定读取阈值118。在一些情况下,由于特定条件,第一表示124可以包括相对大数量的错误(例如,在数据存储设备102处的温度变化或电压波动中的一个或多个),并且执行读取阈值校准操作可以重新校准读取阈值118以补偿特定条件。读取阈值校准操作的一个示例是单元电压分发(cell voltage distribution,CVD)追踪操作。
在执行命令120之后,数据存储设备102可以继续操作。例如,如果在执行命令120之后,第一表示124的解码还没有收敛到有效结果,则控制器130可以向ECC引擎140输入第二表示126(例如,为了“帮助”解码第一表示124)。可替换地或此外,作为例示性示例,在第一表示124的解码被完成的同时,数据存储设备102可以向特定流水线阶段输入第二页面110的表示128,诸如在存储器接口132的一个或多个缓冲器处。可替换地或此外,在存储器处的另一读取操作可以被执行(例如,使用读取阈值118),或者数据存储设备102可以执行另一操作。
参考图1所描述的一个或多个方面可以增加在数据存储设备102处的吞吐量。例如,通过响应于在数据存储设备102处预测流水线延迟来传送命令120以发起存储器操作,相比于等待直到解码操作的完成(或失败)才发起存储器操作,可以增加吞吐量。
图2描绘了数据存储设备的操作的方法200。例如,方法200可以由图1的数据存储设备102执行。
方法200包括,在202,确定与ECC引擎对页面的解码有关的指示。例如,图1的流水线延迟预测电路152可以在ECC引擎140对第一页面108的第一表示124的解码期间检测指示。指示可以对应于持续时间156、综合权重162、一个或多个翻转的比特168的数量、ECC引擎140所使用的解码模式、一个或多个其它标准、或它们的组合。
方法200还包括,在204,确定指示是否满足阈值。例如,流水线延迟预测电路152可以确定持续时间156是否满足阈值158、综合权重162是否满足阈值164、一个或多个翻转的比特168的数量是否满足阈值170、ECC引擎140所使用的解码模式是否满足阈值、或它们的组合。
如果指示未能满足阈值,则在206,方法200可以继续。如果指示满足阈值,则在208,方法200还可以包括通过在命令队列中发起当前页面的软比特读取或下一页面的软比特读取来生成软比特页面。例如,可以执行软比特读取来生成第一页面108的第二表示126。可替换地或此外,图1的命令队列134可以指示第二页面110,并且可以执行软比特读取来生成第二页面110的表示128。可以响应于从命令队列134选择与共同时间标记相关联的任务作为当前页面来执行软比特读取。
方法200还包括,在210,通过从当前页面的硬比特解码到当前页面的软比特解码过渡、或通过解码命令队列中的下一页面来使用软比特页面。例如,第二表示126可以被输入到图1的ECC引擎140来加速第一页面108的解码。可替换地或此外,表示128可以被输入到ECC引擎140来解码第二页面110。
参考图2的方法200所描述的一个或多个方面可以增加在诸如图1的数据存储设备102的数据存储设备处的吞吐量。例如,通过响应于检测到在页面的解码期间所确定的指示满足阈值来发起软比特读取,相比于等待直到页面的解码的完成(或失败),可以增加吞吐量。
图3描绘了包括解码器和存储器的数据存储设备的操作的方法300。例如,方法300可以由图1的数据存储设备102执行。
方法300包括,在302,将数据输入到数据存储设备的解码器。例如,第一表示124可以被输入到第一解码器142、第二解码器144、或可以被包括在ECC引擎140中的另一解码器。
方法300还包括,在304,响应于与解码数据的解码过程相关联的流水线延迟的指示来将命令传送到数据存储设备的存储器。例如,控制器130可以响应于流水线延迟预测电路152在数据存储设备102处预测流水线延迟,将命令120传送到存储器设备103。
命令120指示响应于流水线延迟而要在存储器处被执行的操作。在一些示例中,命令120指示包括重新感测至少数据的第一页面,诸如数据106的第一页面108,的读取操作。可替换地或此外,命令120可以指示读取不同于第一页面的第二页面(例如,第二页面110)的预先读取操作。可替换地或此外,命令120可以指示诸如软比特读取技术的特定读取技术。可替换地或此外,命令120可以指示读取阈值校准操作(例如,为了确定读取阈值118)。
在一些示例中,可以基于满足阈值158的解码过程的持续时间156预测流水线延迟。可替换地或此外,方法300可以包括确定数据的综合权重162,并且可以基于满足阈值158的综合权重162预测流水线延迟。可替换地或此外,方法300可以包括在发起解码过程之前翻转数据的一个或多个比特,可以基于满足阈值164的一个或多个翻转的比特168的数量来预测流水线延迟。可替换地或此外,方法300可以包括在解码过程期间执行解码模式改变,并且可以基于解码模式改变来预测流水线延迟。例如,解码模式改变可以包括从使用第一解码器142解码数据到使用第二解码器144解码数据的改变。
参考图3的方法300所描述的一个或多个方面可以在诸如图1的数据存储设备102的数据存储设备处增加吞吐量。例如,通过响应于在数据存储设备102处预测流水线延迟来传送发起存储器操作的命令120,相比于等待直到解码操作的完成(或失败)才发起存储器操作,可以增加吞吐量。
参考图4,***400包括可以被耦合到设备470(例如,设备180)的非易失性存储器***402(例如,数据存储设备102)。非易失性存储器***402包括控制器430(例如,控制器130)和非易失性存储器,所述非易失性存储器可以由一个或多个非易失性存储器裸芯404组成(例如,被包括在存储器设备103中的一个或多个存储器裸芯)。如这里所使用的,术语“存储器裸芯”是指在单一半导体衬底上形成的非易失性存储器单元的集合、以及用于管理那些非易失性存储器单元的物理操作的相关联的电路。控制器430与设备470用接口相连并且向一个或多个非易失性存储器裸芯404发送用于读取、编程、和擦除操作的命令序列。
控制器430包括流水线延迟预测电路152。控制器430(其可以是闪存控制器)可以采取处理电路、微处理器或处理器、以及计算机可读介质的形式,所述计算机可读介质存储可由例如(微)处理器、逻辑门、开关、专用集成电路(application specific integratedcircuit,ASIC)、可编程逻辑控制器、和嵌入式微控制器执行的程序代码(例如,固件)。控制器430可以被配置有执行下述的和流程图中所示出的各种功能的硬件和/或固件。并且,被示为控制器430的内部的组件中的一些能够被存储在控制器430的外部,并且其它组件能够被使用。额外地,短语“可操作地与……通信”能够意指直接地与……通信或通过一个或多个组件来间接地(有线或无线)与……通信,所述一个或多个组件可以或可以不在这里示出或描述。
如这里所使用的,闪存控制器是管理存储在闪存上的数据并且与诸如计算机或电子设备的主机通信的设备。闪存控制器能够具有除了这里所描述的特定功能之外的各种功能。例如,闪存控制器能够格式化闪存、映射出坏的闪存单元、以及分配要替代未来的失效单元的备用单元。备用单元的一些部分能够被用来保存固件以操作闪存控制器以及实施其它特征。在操作中,当主机设备要从闪存读取数据或要向闪存写入数据时,主机设备与闪存控制器通信。如果主机设备提供数据要被读取/写入到的逻辑地址,则闪存控制器能够将从主机设备接收的逻辑地址转换为闪存中的物理地址。(可替换地,主机设备能够提供物理地址。)闪存控制器也能够执行各种存储器管理功能,诸如,但不限于,磨损均衡(对写入进行分发以避免磨损存储器的特定块,否则所述特定块会重复地被写入)和垃圾收集(在块满之后,仅移动数据的有效页面到新的块,所以满的块能够被擦除和重用)。
一个或多个非易失性存储器裸芯404可以包括任何适合的非易失性存储介质,包括NAND闪存单元和/或NOR闪存单元。存储器单元能够采用固态(例如,快闪)存储器单元的形式,并且能够是一次可编程的、几次可编程的、或多次可编程的。存储器单元也能够是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)、或使用现在所熟知的或以后所研发的其它存储器单元层技术。并且,存储器单元能够以二维或三维方式被制造。
控制器430和一个或多个非易失性存储器裸芯404之间的接口可以是任何适合的快闪接口,诸如Toggle Mode 200、Toggle Mode 400或Toggle Mode 800。在一个实施例中,非易失性存储器***402可以是诸如安全数字(secure digital,SD)或微型安全数字(micro secure digital,micro-SD)卡的基于卡的***。在替换性实施例中,非易失性存储器402可以是嵌入式存储器***的部分。
虽然,在图4所示的示例中,非易失性存储器***402(在这里有时被称为存储模块)包括控制器430与一个或多个非易失性存储器裸芯404之间的单一通道,但是这里所描述的主题不限于具有单一存储器通道。例如,在一些NAND存储器***架构中(诸如图5和图6中所示的那些个),取决于控制器能力,2个、4个、8个或更多个NAND通道可以存在于控制器430和NAND存储器设备之间。在这里所描述的实施例中的任何中,即使在附图中示出单一通道,在控制器430和一个或多个非易失性存储器裸芯404之间也可以不只存在单一通道。
图5示出包括多个非易失性存储器***402的存储***500。照此,存储***500可以包括与设备470(例如,主机设备)和存储***502用接口相连的存储控制器530,所述存储***502包括多个非易失性存储器***402。存储控制器530和非易失性存储器***402之间的接口可以是总线接口,诸如串行高级技术附件(serial advanced technologyattachment,SATA)或***组件接口表达(peripheral component interface express,PCIe)接口。存储***500可以对应于固态驱动器(SSD),诸如在诸如膝上型计算机和平板计算机的便携式计算设备中所发现的。图4的控制器430中的一个或多个可以包括流水线延迟预测电路152。可替换地或此外,存储控制器530可以包括流水线延迟预测电路152。
图6是示出分级存储***600的框图。分级存储***600包括多个存储控制器530,多个存储控制器530中的每一个控制相应的存储***502。设备470(例如,一个或多个主机设备或访问设备)可以经由总线接口来访问分级存储***600内的存储器。在一个实施例中,总线接口可以是NVMe或跨以太网光纤通道(fiber channel over Ethernet,FCoE)接口。在一个实施例中,在图6中所示的分级存储***600可以是诸如在数据中心中或需要大容量储存器的其它位置中会被发现的、可由多个主机计算机访问的机架式大容量存储***(rack mountable mass storage system)。图6的一个或多个存储控制器530可以包括流水线延迟预测电路152。
图7是更详细地示出非易失性存储器***402的控制器430的示范性组件的框图。控制器430可以包括流水线延迟预测电路152。控制器430也可以包括与主机设备用接口相连的前端组件708、与一个或多个非易失性存储器裸芯404用接口相连的后端组件710、和执行其它功能的各种其它模块。例如,模块可以采用以下各项的形式:被设计用于与其它组件一起使用的封装的功能性硬件单元、可由(微)处理器或通常执行相关功能的特定功能的处理电路执行的程序代码(例如,软件或固件)的部分、或与更大的***通过接口相连的自包含的硬件或软件。
再次参考控制器430,缓冲器管理器/总线控制器714管理随机存取存储器(randomaccess memory,RAM)716中的缓冲器并且控制控制器430的内部总线仲裁。只读存储器(read only memory,ROM)718存储***启动代码。虽然在图7中被示出为位于控制器430之内,但是在其它实施例中RAM 716和ROM 718中的一个或两者可以位于控制器430的外部。在其它实施例中,RAM和ROM的部分可以位于控制器430之内和控制器430外部两者。
前端组件708包括主机接口720和提供与主机设备或下一级存储控制器的电接口的物理层接口(physical layer interface,PHY)722。在例示性示例中,主机接口720和PHY722对应于或被包括在图1的设备接口172中。主机接口720的类型的选择能够取决于所使用的存储器的类型。主机接口720的示例包括,但不限于,SATA、SATA Express、SAS、光纤通道、USB、PCIe、和NVMe。主机接口720典型地便利了数据、控制信号、和定时信号的传递。
后端组件710包括ECC引擎724(例如,图1的ECC引擎140),所述ECC引擎724对从主机设备接收的数据进行编码,并且对从非易失性存储器读取的数据进行解码和纠错。命令序列器726生成命令序列,诸如要被发送到一个或多个非易失性存储器裸芯404的编程和擦除命令序列。RAID(Redundant Array of Independent Drive,独立驱动器冗余阵列)组件728管理RAID奇偶校验的生成和失效数据的恢复。RAID奇偶校验可以被用作对于被写入到一个或多个非易失性存储器裸芯404的数据的额外级别的完整性保护。在一些情况下,RAID组件728可以是ECC引擎724的一部分。存储器接口730向非易失性存储器裸芯404提供命令序列,并且从一个或多个非易失性存储器裸芯接收状态信息。例如,存储器接口730可以是双倍数据速率(double data rate,DDR)接口,诸如Toggle Mode 200接口、Toggle Mode400接口、或Toggle Mode 800接口。闪存控制层732控制后端组件710的总体操作。
在图7中所示出的非易失性存储器***402的额外组件包括电力管理组件712和媒体管理层738,所述媒体管理层738执行一个或多个非易失性存储器裸芯404的存储器单元的磨损均衡。非易失性存储器***402还包括其它分立组件740,诸如外部电接口、外部RAM、电阻、电容器、或可以与控制器430通过接口相连的其它组件。在替换性实施例中,物理层接口722、RAID组件728、媒体管理层738和缓冲器管理/总线控制器714中的一个或多个是被从控制器430省略的可选组件。
图8是更详细地示出非易失性存储器***402的一个或多个非易失性存储器裸芯404的示范性组件的框图。一个或多个非易失性存储器裸芯404包括***电路841和非易失性存储器阵列842。非易失性存储器阵列842包括用于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何适合的非易失性存储器单元,包括以二维和/或三维配置的NAND闪存单元和/或NOR闪存单元。***电路841包括向控制器430提供状态信息的状态机852。***电路841也可以包括电力管理或数据锁定控制组件854。一个或多个非易失性存储器裸芯404还包括分立组件840、地址解码器848、地址解码器850、和缓存数据的数据缓存856。图8还示出控制器430可以包括流水线延迟预测电路152。
结合所描述的实施例,装置包括用于解码数据(例如,第一页面108的第一表示124)的装置(例如,解码器142或解码器144)。装置还包括用于预测与数据的解码相关联的流水线延迟的装置(例如,流水线延迟预测电路152)。装置还包括用于向存储器(例如,存储器104)传送命令(例如,命令120)的装置(例如,存储器接口132)。命令指示要使用特定读取技术在存储器处执行读取操作以补偿流水线延迟。装置还可以包括用于基于命令在存储器处执行读取操作的装置(例如,读取/写入电路116)。
虽然这里所描绘的各种组件被示出为块组件并且以一般术语描述,但是这样的组件可以包括一个或多个微处理器、状态机、或被配置为使得这样的组件能够执行这里所描述的一个或多个操作的其它电路。例如,流水线延迟预测电路152的某些方面可以表示物理组件,诸如硬件控制器、状态机、逻辑电路、或使得控制器130能够检测流水线延迟的其它结构。
可替换地或此外,流水线延迟预测电路152的某些方面可以使用微处理器或微控制器来实施。在特定实施例中,流水线延迟预测电路152的一个或多个方面可以使用执行存储在存储器104的指令(例如,固件)的处理器实施。可替换地,或此外,由处理器执行的可执行指令可以被存储在不是存储器104的部分的、分开的存储器位置,诸如在可以被包括在控制器130中的只读存储器(ROM)。
数据存储设备102可以被耦合到、被附着到、或被嵌入在一个或多个访问设备之内,诸如设备180的外壳之内。例如,根据联合电子器件工程理事会(Joint ElectronDevices Engineering Council,JEDEC)固态技术协会通用闪存存储(Universal FlashStorage,UFS)配置,数据存储设备102可以被嵌入在设备180之内。为了进一步说明,数据存储设备102可以被集成在诸如移动电话、计算机(例如,膝上型计算机、平板型计算机、或笔记本计算机)、音乐播放器、视频播放器、游戏设备或控制台、电子书阅读器、个人数字助理(personal digital assistant,PDA)、便携式导航设备、或使用内部非易失性存储器的其它设备的电子设备(例如,设备180)之内。
在一个或多个其它实施方式中,数据存储设备102可以被实施在被配置为选择性地耦合到一个或多个诸如主机设备的外部设备的便携式设备中。例如,数据存储设备102可以是从设备180可移除的(即,“可移除地”耦合到设备180)。作为示例,根据可移除通用串行总线(USB)配置,数据存储设备102可以被可移除地耦合到设备180。
设备180可以对应于移动电话、计算机(例如,膝上型计算机、平板型计算机、或笔记本计算机)、音乐播放器、视频播放器、游戏设备或控制台、电子书阅读器、个人数字助理(PDA)、便携式导航设备、另一电子设备、或它们的组合。设备180可以经由控制器通信,所述控制器可以使得设备180能够与数据存储设备102通信。设备180可以遵照诸如嵌入式多媒体卡(embedded MultiMedia Card,eMMC)规范或通用闪存存储(UFS)主机控制器接口规范的JEDEC固态技术协会行业规范进行操作。作为例示性示例,设备180可以遵照诸如安全数字(SD)主机控制器规范的一个或多个其它规范进行操作。可替换地,设备180可以根据另一通信协议来与数据存储设备102通信。作为例示性示例,在一些实施方式中,数据存储设备102可以被集成在诸如企业数据***、NAS***、或云数据存储***的网络可访问的数据存储***之内。
在一些实施方式中,数据存储设备102可以包括固态驱动器(SSD)。作为例示性的、非限制性示例,数据存储设备102可以起到嵌入式存储驱动器(例如,移动设备的嵌入式SSD驱动器)、企业存储驱动器(enterprise storage drive,ESD)、云存储设备、网络附接存储(NAS)设备、或客户端存储设备的作用。在一些实施方式中,数据存储设备102可以经由网络耦合到设备180。例如,网络可以包括数据中心存储***网络、企业存储***网络、存储区网络、云存储网络、局域网(local area network,LAN)、广域网(wide area network,WAN)、互联网、和/或另一网络。
作为例示性示例,为了进一步说明,数据存储设备102可以被配置为作为嵌入式存储器耦合到设备180,诸如与嵌入式多媒体卡(embedded MultiMedia Card,)(弗吉尼亚州阿灵顿JEDEC固态技术协会的商标)配置有关。数据存储设备102可以对应于eMMC设备。作为另一示例,数据存储设备102可以对应于存储器卡,诸如安全数字卡、卡、miniSDTM卡(特拉华威尔明顿SD-3C LLC的商标)、MultiMediaCardTM(MMCTM)卡(弗吉尼亚州阿灵顿JEDEC固态技术协会的商标)、或(CF)卡(加利福尼亚米尔皮塔斯桑迪士克公司的商标)。数据存储设备102可以遵照JEDEC行业规范进行操作。例如,数据存储设备102可以遵照JEDEC eMMC规范、JEDEC通用快闪存储(UFS)规范、一个或多个其它规范、或它们的组合来进行操作。
存储器104可以包括电阻式随机存取存储器(ReRAM)、闪存(例如,NAND存储器、NOR存储器、单层单元(SLC)闪存、多层单元(MLC)闪存、划分位线NOR(divided bit-line NOR,DINOR)存储器、AND存储器、高电容耦合比(high capacitive coupling ratio,HiCR)设备、非对称非接触式晶体管(asymmetrical contactless transistor,ACT)设备、或另一闪存)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically-erasable programmable read-only memory,EEPROM)、只读存储器(ROM)、一次性可编程存储器(one-time programmable memory,OTP)、另一类型的存储器、或它们的组合。存储器104可以包括半导体存储器设备。
半导体存储器设备包括以下各项:诸如动态随机存取存储器(dynamic randomaccess memory,“DRAM”)或静态随机存取存储器(static random access memory,“SRAM”)设备的易失性存储设备,诸如电阻式随机存取存储器(“ReRAM”)、磁阻式随机存取存储器(magnetoresistive random access memory,“MRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存(其也能够被认为是EEPROM的子集)、铁电随机存取存储器(ferroelectric random access memory,“FRAM”)、以及能够存储信息的其它半导体元件的非易失性存储器设备。每个类型的存储器设备具有不同的配置。例如,闪存设备可以以NAND或NOR配置被配置。
存储器设备能够从无源和/或有源元件以任何组合形成。通过非限制性示例的方式,无源半导体存储器元件包括其在一些实施例中包括诸如反熔丝、相变材料等的电阻式开关存储元件的ReRAM设备元件,以及诸如二极管等的可选地转向元件。进一步通过非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪存设备元件,其在一些实施例中包括包含诸如浮置栅极、导电纳米粒子、或电荷存储介电材料的充电区域的元件。
可以配置多个存储器元件使得它们被串联连接或使得每个元件是单独可访问的。通过非限制性示例的方式,NAND配置(NAND存储器)中的闪存设备典型地包含串联连接的存储器元件。可以配置NAND存储器阵列使得阵列由多串存储器组成,在其中串由共享单一位线并且作为组来访问的多个存储器元件组成。可替换地,可以配置存储器元件使得每个元件是单独可访问的,例如,NOR存储器阵列。NAND和NOR存储器配置是示范性的,并且存储器元件可以以其它方式配置。
位于衬底之内和/或衬底之上的半导体存储器元件可以以二维或三维排列,诸如二维存储器结构或三维存储器结构。在二维存储器结构中,半导体存储器元件以单一平面或单一存储器设备层排列。典型地,在二维存储器结构中,存储器元件以平面(例如,以x-z方向平面)排列,其基本上平行于支持存储器元件的衬底的主要表面进行扩展。衬底可以是在其上或其中形成存储器元件的层的晶圆,或者它可以是在存储器元件形成后被附接到存储器元件的载流子衬底。作为非限制性示例,衬底可以包括诸如硅的半导体。
存储器元件可以以有序阵列排列在单一存储器设备层中,诸如以多行和/或列。然而,存储器元件可以以非规则或非正交配置排列。存储器元件可以每个具有两个或更多电极或诸如位线和字线的接触线。
对三维存储器阵列进行排列使得存储器元件占用多个平面或多个存储器设备层,从而以三维(即,在x、y、和z方向,其中y方向基本上垂直于并且x和y方向基本上平行于衬底的主要表面)形成结构。作为非限制性示例,三维存储器结构可以被垂直地排列为多个二维存储器设备层的堆叠。作为另一非限制性示例,三维存储器阵列可以被排列为多个垂直列(例如,基本上垂直于衬底的主要表面扩展的列,即,在y方向),每列具有在每列中的多个存储器元件。列可以以二维配置被排列,例如,在x-z平面,导致了具有在多个垂直堆叠的存储器平面上的元件的存储器元件的三维排列。三维的存储器元件的其它配置也能够构成三维存储器阵列。
通过非限制性示例的方式,在三维NAND存储器阵列中,存储器元件可以被耦合到一起,以在单一水平(例如,x-z)存储器层之内形成NAND串。可替换地,存储器元件可以被耦合到一起,以形成横跨多个水平存储器设备层的垂直NAND串。其它三维配置能够被预见,其中一些NAND串以包含处于单一存储器层的存储器元件,而其它串包含跨过多个存储器层的存储器元件。三维存储器阵列也可以以NOR配置以及以ReRAM配置被设计。
典型地,在单片三维存储器阵列中,一个或多个存储器设备层在单一衬底之上被形成。可选地,单片三维存储器阵列也可以具有至少部分地在单一衬底之内的一个或多个存储器层。作为非限制性示例,衬底可以包括诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器设备层的层,典型地在阵列的底层存储器设备层的层上被形成。然而,单片三维存储器阵列的相邻存储器设备层的层,可以在存储器设备层之间共享或具有中间层。
可替换地,二维阵列可以分开地被形成然后被封装在一起以形成具有多层存储器的非单片存储器设备。例如,非单片堆叠存储器能够通过在分开的衬底上形成存储器层、然后彼此在顶上堆叠存储器层来构建。衬底可以在堆叠之前被减薄或从存储器设备层移除,但是由于存储器设备层最初是在分开的衬底上形成,所得存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以在分开的芯片上被形成,然后被封装在一起以形成堆叠芯片存储器设备。
相关联的电路典型地是存储器元件的操作所要求的以及与存储器元件的通信所要求的。作为非限制性示例,存储器设备可以具有用于控制和驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可以与存储器元件在相同的衬底上和/或在分开的衬底上。例如,用于存储器读取-写入操作的控制器可以位于分开的控制器芯片上和/或与存储器元件位于相同的衬底上。
本领域技术人员将认识到本公开不限于所描述的二维或三维示范性结构,而是如这里所描述的以及如本领域技术人员所理解的将所有相关存储器结构覆盖在本公开的精神和范围之内。在这里所描述的实施例的例示意图提供各种实施例的一般理解。可以利用并从本公开派生其它实施例,使得可以做出结构的和逻辑的替代和改变,而不脱离本公开的范围。本公开意图覆盖各种实施例的任何和所有后续调整或变化。本领域技术人员将认识到这样的修改是在本公开的范围之内的。
以上公开的主题将被认为是例示性的,而不是限制性的,并且所附权利要求意图覆盖落入本公开的范围的所有这样的修改、增强、和其它实施例。因此,在法律所允许的最大程度上,本发明的范围要由对所附权利要求及其等同物的最广泛可允许解释所确定,并且不应该被前述详细描述所约束或限制。
Claims (18)
1.一种包括控制器和存储器设备的数据存储设备的操作的方法,所述方法包括:
向所述控制器的解码器输入数据;以及
通过所述控制器,确定与所述数据相关联的特征;
通过所述控制器,响应于确定与所述数据相关联的特征满足特征阈值,生成与解码所述数据的解码过程相关联的流水线延迟的指示;以及
通过所述控制器,响应于与解码所述数据的解码过程相关联的所述流水线延迟的指示,控制所述控制器的存储器接口以向所述存储器设备传送命令,所述命令指示响应于所述流水线延迟而要在所述存储器处执行的操作。
2.如权利要求1所述的方法,其中所述命令指示包括重新感测至少所述数据的第一页面的读取操作。
3.如权利要求1所述的方法,其中所述数据包括第一页面,并且其中所述命令指示读取不同于所述第一页面的第二页面的预先读取操作。
4.如权利要求1所述的方法,其中所述命令指示软比特读取技术。
5.如权利要求1所述的方法,其中所述命令指示读取阈值校准操作。
6.如权利要求1所述的方法,其中确定所述特征包括确定与所述数据相关联的综合权重,并且其中基于满足综合权重阈值的所述综合权重来生成所述流水线延迟的指示。
7.如权利要求1所述的方法,还包括在发起所述解码过程之前翻转所述数据的一个或多个比特,其中确定所述数据的特征包括确定所述数据的一个或多个所翻转的比特的数量,并且其中基于满足翻转比特阈值的一个或多个所翻转的比特的数量来预测所述流水线延迟。
8.如权利要求1所述的方法,还包括在所述解码过程期间执行解码模式改变,其中基于所述解码模式改变来预测所述流水线延迟。
9.如权利要求8所述的方法,其中所述解码模式改变包括从使用具有第一纠错能力的第一解码器来解码所述数据到使用具有第二纠错能力的第二解码器来解码所述数据的改变,所述第二纠错能力大于所述第一纠错能力。
10.一种装置,包括:
纠错码(ECC)引擎,被配置为使用解码操作来解码数据;
耦合到所述ECC引擎的电路,所述电路被配置为,确定与所述数据相关联的特征,并且响应于确定与所述数据相关联的特征满足特征阈值,生成与所述解码操作相关联的流水线延迟的指示;以及
到存储器设备的存储器接口,所述存储器接口被配置为,向所述存储器设备提供响应于所述流水线延迟要使用特定读取技术来执行读取操作的命令。
11.如权利要求10所述的装置,还包括存储要在所述数据的解码之后被执行的任务的指示的命令队列,其中所述读取操作对应于所述任务。
12.如权利要求10所述的装置,还包括综合权重生成器电路,所述综合权重生成器电路被配置为确定与所述数据相关联的综合权重,其中确定所述特征包括确定与所述数据相关联的综合权重,其中所述电路包括比较器电路,所述比较器电路被配置为确定所述综合权重满足阈值,并且其中基于满足综合权重阈值的综合权重生成所述流水线延迟的指示。
13.如权利要求10所述的装置,还包括比特翻转电路,所述比特翻转电路被配置为在所述解码操作之前翻转所述数据的一个或多个比特,其中确定所述数据的特征包括确定所述数据的一个或多个所翻转的比特的数量,其中所述电路包括比较器电路,所述比较器电路被配置为确定一个或多个所翻转的比特的数量满足阈值,并且其中基于满足翻转比特阈值的一个或多个所翻转的比特的数量生成所述流水线延迟的指示。
14.如权利要求10所述的装置,其中所述ECC引擎包括与第一纠错能力相关联的第一解码器和与第二纠错能力相关联的第二解码器,所述第二纠错能力大于所述第一纠错能力。
15.如权利要求14所述的装置,其中所述电路被配置为,检测在所述解码操作期间的、从使用所述第一解码器来解码所述数据到使用所述第二解码器来解码所述数据的解码模式改变,并且其中基于所述解码模式改变来生成所述流水线延迟的指示。
16.如权利要求10所述的装置,其中所述命令包括指示所述特定读取技术的操作码,并且其中所述特定读取技术不同于被用来感测所述数据的读取技术。
17.一种装置,包括:
用于解码数据的装置;
用于预测与所述数据的解码相关联的流水线延迟的装置,其中所述用于预测流水线延迟的装置确定与所述数据相关联的特征,并且响应于确定与所述数据相关联的特征满足特征阈值,生成与解码所述数据的解码过程相关联的流水线延迟的指示;以及
用于向存储器设备传送命令的装置,所述命令指示响应于所述流水线延迟的指示要使用特定读取技术在所述存储器设备处执行以补偿所述流水线延迟的读取操作,
其中所述存储器设备与所述向存储器设备传送命令的装置分开且不同。
18.如权利要求17所述的装置,其中所述存储器设备还包括用于基于所述命令执行所述读取操作的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/372,485 US10379940B2 (en) | 2016-12-08 | 2016-12-08 | Pipeline delay detection during decoding by a data storage device |
US15/372,485 | 2016-12-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108172261A CN108172261A (zh) | 2018-06-15 |
CN108172261B true CN108172261B (zh) | 2021-07-16 |
Family
ID=62201484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710817883.9A Active CN108172261B (zh) | 2016-12-08 | 2017-09-12 | 由数据存储设备的解码期间的流水线延迟检测 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10379940B2 (zh) |
CN (1) | CN108172261B (zh) |
DE (1) | DE102017120971A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200127685A1 (en) * | 2018-10-19 | 2020-04-23 | Nyquist Semiconductor Limited | Systems and methods for a hybrid non-volatile storage system |
US20230065593A1 (en) * | 2021-08-31 | 2023-03-02 | Micron Technology, Inc. | Memory traffic monitoring |
US11949429B2 (en) * | 2022-07-19 | 2024-04-02 | Macronix International Co., Ltd. | Memory device, error correction device and error correction method thereof |
US11940874B2 (en) * | 2022-08-08 | 2024-03-26 | Micron Technology, Inc. | Queue management for a memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017430A (zh) * | 2006-02-09 | 2007-08-15 | 国际商业机器公司 | D缓存缺失预测和调度的方法和装置 |
CN101267209A (zh) * | 2008-04-29 | 2008-09-17 | 清华大学 | Ldpc译码的循环式分级最小值计算方法及其实现装置 |
CN102929741A (zh) * | 2012-09-29 | 2013-02-13 | 邹粤林 | 一种提高闪存芯片纠错码使用效率的方法、***及控制器 |
US9363508B2 (en) * | 2012-09-12 | 2016-06-07 | Broadcom Corporation | Delta QP handling in a high efficiency video decoder |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212611B1 (en) | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
US7237181B2 (en) * | 2003-12-22 | 2007-06-26 | Qualcomm Incorporated | Methods and apparatus for reducing error floors in message passing decoders |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US7577891B2 (en) * | 2005-05-27 | 2009-08-18 | Aquantia Corporation | Method and apparatus for extending decoding time in an iterative decoder using input codeword pipelining |
US8386895B2 (en) * | 2010-05-19 | 2013-02-26 | Micron Technology, Inc. | Enhanced multilevel memory |
US9306600B2 (en) * | 2014-01-06 | 2016-04-05 | Micron Technology, Inc. | Read threshold calibration for LDPC |
US9268635B2 (en) | 2014-05-21 | 2016-02-23 | Sandisk Technologies Inc. | Error correction using multiple data sources |
US10089177B2 (en) | 2014-06-30 | 2018-10-02 | Sandisk Technologies Llc | Multi-stage decoder |
TWI541820B (zh) * | 2014-07-10 | 2016-07-11 | 群聯電子股份有限公司 | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 |
US9729171B2 (en) * | 2015-09-24 | 2017-08-08 | Intel Corporation | Techniques for soft decision decoding of encoded data |
TWI612527B (zh) * | 2016-04-08 | 2018-01-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
-
2016
- 2016-12-08 US US15/372,485 patent/US10379940B2/en not_active Expired - Fee Related
-
2017
- 2017-09-11 DE DE102017120971.9A patent/DE102017120971A1/de active Pending
- 2017-09-12 CN CN201710817883.9A patent/CN108172261B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017430A (zh) * | 2006-02-09 | 2007-08-15 | 国际商业机器公司 | D缓存缺失预测和调度的方法和装置 |
CN101267209A (zh) * | 2008-04-29 | 2008-09-17 | 清华大学 | Ldpc译码的循环式分级最小值计算方法及其实现装置 |
US9363508B2 (en) * | 2012-09-12 | 2016-06-07 | Broadcom Corporation | Delta QP handling in a high efficiency video decoder |
CN102929741A (zh) * | 2012-09-29 | 2013-02-13 | 邹粤林 | 一种提高闪存芯片纠错码使用效率的方法、***及控制器 |
Also Published As
Publication number | Publication date |
---|---|
US20180165150A1 (en) | 2018-06-14 |
DE102017120971A1 (de) | 2018-06-14 |
US10379940B2 (en) | 2019-08-13 |
CN108172261A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10002042B2 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
US10019174B2 (en) | Read operation delay | |
US10643707B2 (en) | Group write operations for a data storage device | |
US9978462B2 (en) | Partial soft bit read | |
CN109074228B (zh) | 用于对在主机存储器缓冲区中损坏的数据进行恢复的存储***和方法 | |
US10567006B2 (en) | Data relocation | |
US10496484B2 (en) | Methods and apparatus for error detection for data storage devices | |
US9927986B2 (en) | Data storage device with temperature sensor and temperature calibration circuitry and method of operating same | |
US10250281B2 (en) | ECC decoder having adjustable parameters | |
CN106255954B (zh) | 主从环境中的通信命令数据的***和方法 | |
US9886341B2 (en) | Optimizing reclaimed flash memory | |
US9766976B2 (en) | Data storage device and method for storing multiple codewords and redundancy information at a word line | |
US20160162215A1 (en) | Meta plane operations for a storage device | |
US20160018998A1 (en) | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules | |
US9244767B1 (en) | Data storage device with in-memory parity circuitry | |
US10114743B2 (en) | Memory erase management | |
US9659619B2 (en) | System and method for memory integrated circuit chip write abort indication | |
US9824760B2 (en) | Systems and methods of generating shaped random bits | |
CN108172261B (zh) | 由数据存储设备的解码期间的流水线延迟检测 | |
CN107980126B (zh) | 用于调度多裸芯储存装置的方法、数据储存装置及设备 | |
US20210382643A1 (en) | Storage System and Method for Retention-Based Zone Determination | |
US10572189B2 (en) | Method and decoder to adjust an error locator polynomial based on an error parity | |
CN111798910A (zh) | 存储装置及其操作方法 | |
US20240143509A1 (en) | Data Storage Device and Method for Handling Write Commands in Zoned Storage |
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 |