在错误纠正前从非易失性固态装置发送数据的系统和方法与流程

文档序号:11519451阅读:138来源:国知局
在错误纠正前从非易失性固态装置发送数据的系统和方法与流程

本公开涉及一种用于发送存储在非易失性固态装置中的数据的系统和方法,以及特别地涉及在完成错误纠正之前发送数据的系统和方法。



背景技术:

非易失性固态装置(ssd)广泛用于计算机系统中的主存储和二级存储。一些非易失性存储器(比如相变存储器(pcm)、电阻式ram(reram)、以及磁性ram(mram))具有的误码率高于动态读取存取存储器(dram)的误码率,但可能远低于nand闪存存储器中的误码率。因此,这些中等的误码率需要比dram中使用的短汉明代码(hammingcodes)更好的错误纠正。这可能导致当运行错误纠正算法时的长延时(latency)。例如,比如在512b区块上实施纠错码(ecc,比如完整bch代码,来自代码发明人的首字母缩写,rajbose,d.k.ray-chaudhuri,以及alexishocquenghem),可能占用从存储介质读取位的大约一半的时间。

此外,在任意区块(比如4kb)中的错误的概率可能足够低,使得大多数区块将不具有错误。相应地,在大多数读取上,浪费了由错误纠正算法导致的延时。此外,常规系统实施非流水线型流程,其通常从存储介质读取全部的位,用于重建单个512b区块,然后它们运行ecc算法,并在完成ecc算法之后可以开始将数据发送到主机。因此,发送区块被延迟,直到完成ecc算法。



技术实现要素:

本公开涉及一种根据通信协议执行操作的方法和系统。

一个实施例可以包括一种在通信协议中执行操作的方法。该方法可以包括以下步骤:提供与主机和存储器通信的目标,以及目标从主机接收第一命令,第一命令包含从存储器请求多个数据包。该方法还可以包括以下步骤:目标从存储器取回多个数据包,以及随着每个数据包被取回,目标将每个取回的数据包发送到主机。该方法还可以包括以下步骤:目标取回对应于取回的多个数据包的纠错码(ecc)包,以及目标执行ecc算法,以识别并纠正取回的多个数据包中的可能的错误。该方法还可以包括以下步骤:如果任何取回的数据包存在错误,则目标将纠正的数据包发送到主机,以及目标将完成包发送到主机。

一个可替代的实施例可以包括一种在通信协议中执行操作的方法。该方法可以包括以下步骤:提供与主机和存储器通信的目标,以及目标从主机接收第一命令,第一命令包含从存储器请求多个数据包。该方法还可以包括以下步骤:目标从存储器取回多个数据包,以及随着每个数据包被取回,目标将每个取回的数据包发送到主机,除了最后取回的数据包之外。该方法还可以包括以下步骤:目标取回对应于取回的多个数据包的纠错码(ecc)包,以及目标执行ecc算法,以识别并纠正取回的多个数据包中的可能的错误。该方法还可以包括以下步骤:如果任何取回的数据包存在错误,则目标将纠正的数据包发送到主机,以及目标发送最后取回的数据包。

一个可替代的实施例可以包括一种在通信协议中执行操作的存储器控制器。存储器控制器可以包含接口控制器和存储控制器,接口控制器与主机和存储器通信,配置为从主机接收第一命令,第一命令包含从存储器请求多个数据包。存储控制器可以配置为从存储器取回多个数据包,并且随着每个数据包被取回,指示接口控制器将每个取回的数据包发送到主机,除了最后取回的数据包之外。存储控制器还可以配置为取回对应于取回的多个数据包的纠错码(ecc),并且执行ecc算法,以识别并纠正取回的多个数据包中的可能的错误。存储控制器还可以配置为,如果任何取回的数据包存在错误,则指示接口控制器将纠正的数据包发送到主机,并且指示接口控制器发送最后取回的数据包。

一个可替代的实施例可以包括一种在通信协议中执行操作的存储器控制器。存储器控制器可以包含接口控制器和存储控制器,接口控制器与主机和存储器通信,配置为从主机接收第一命令,第一命令包含从存储器请求多个数据包。存储控制器可以配置为从存储器取回多个数据包,以及在每个取回的数据包上执行错误检测算法,以识别取回的数据包是否含有错误。存储控制器还可以配置为,随着每个数据包被取回,指示接口控制器将每个取回的数据包发送到主机,除了最后取回的数据包之外,并且取回对应于取回的多个数据包的纠错码包,并且执行ecc算法,以识别并纠正取回的多个数据包中的可能的错误。存储控制器还可以配置为,如果任何取回的数据包存在错误,则指示接口控制器将纠正的数据包发送到主机,并且指示接口控制器发送最后取回的数据包。

附图说明

当参照下面的详细说明并联系附图考虑时,本公开的各种对象、特征以及优点可以被更彻底地理解,附图中相同的附图标记指示相同的元素。下面的附图仅为示例性目的,而不意图限制本发明,本发明的范围由所附的权利要求阐述。

图1图示了根据本公开的实施例的实施通信协议的示范性系统。

图2a图示了用于从存储介质发送数据的示范性常规实施方式。

图2b-图2c图示了根据本公开的方面的用于从存储介质发送数据的示范性实施方式。

图3a图示了用于从存储介质发送数据的示范性常规实施方式。

图3b-3c图示了根据本公开的方面的用于从存储介质发送数据的示范性实施方式。

图4图示了根据本公开的方面的用于从存储介质发送数据的示范性方法。

图5图示了根据本公开的方面的用于从存储介质发送数据的示范性方法。

具体实施方式

提供了一种用于发送存储在非易失性存储器中的数据的系统和方法。在执行错误纠正之前,数据包一经从非易失性存储器被取回,其可以被发送到主机。一旦区块的全部数据包已经被从非易失性存储器取回,可以执行错误纠正。如果任何数据包被带着错误取回,其可以被纠正并重新发送到主机。

图1图示了根据本公开的实施例的实施通信协议的示范性系统100。系统100包括与目标装置104和存储体122通信的主机102。主机102包括用户应用106、操作系统108、驱动器110、主机存储器112、队列118a,以及通信协议114a。目标装置104包括接口控制器117、通信协议114b、队列118b,以及与存储体122通信的存储控制器120。

主机102可以在操作系统108上运行用户级应用106。操作系统108可以运行与主机存储器112相接的驱动器110。在一些实施例中,存储器112可以是dram。主机存储器112可以使用队列118a存储来自主机102用于目标104处理的命令。存储的或入列的命令的示例可以包括来自主机102的读取或写入操作。通信协议114a可以允许主机102使用接口控制器117与目标装置104进行通信。

目标装置104可以使用接口控制器117和通信协议114b与主机102进行通信。通信协议114b可以提供队列118,以经由存储控制器120来存取存储体122。例如,用户级应用106可以生成对存储体122的数据存取请求。当存储器区块被从存储体122取回时,目标装置104可以实施纠错码以纠正错误。

如上面讨论的,例如在512b区块上运行纠错码(比如完整bch代码),可能消耗从存储体122读取数据的大约一半的时间。常规系统(比如,实施非流水线型流程的系统)通常从存储介质读取全部的位,用于重建一个区块,然后它们可以运行ecc算法,并且在已经完成ecc算法之后,可以开始将纠正的数据发送到主机。这如图2a所示,总体上在200处,其图示了从存储介质将包(比如,四个包202)发送到主机的示范性方式。在特定的示例中,系统首先读取包202和ecc包204,然后执行错误纠正算法206,以确定是否有任何包存在错误,并且纠正任何检测到的错误。然后系统可以将四个区块发送到主机,并且发送完成包208,以表示传输已经完成。本领域普通技术人员将理解,取决于这些位根据纠正方案的设计而布置在介质上的方式,ecc位可以是多个包。

根据本公开的方面,来自存储介质的数据包在实施错误纠正算法之前被发送到主机。这如图2b所示,总体上在210处。本公开的系统和方法首先取回包202。随着每个包被从存储介质取回,其被发送到主机。例如,当第一包被取回时,其被发送到主机212。当第二包被取回时,其也被发送到主机214。如此继续,直到全部包202被从存储介质取回。在全部包被取回之后,读取ecc包204,以实施错误纠正算法206。如果算法未检测到任何错误,发送终止包208,以通知主机传输已经完成。如图2b所示,在从存储装置取回的数据包中不存在错误的大多数通常情况下,本公开的方法可以产生显著的延时节约216。例如,延时节约可以大约为将全部数据包发送到主机所需要的时间。

即使在从存储介质取回的数据含有错误的情况下,本公开的系统和方法可以产生延时节约。图2c总体上在220处图示了当取回的数据包中存在错误的情况下将数据包发送到主机时的延时节约。特别地,在图示的示例中,第二数据包218含有错误。由于本公开的方法在包被发送到主机之前不等待错误检测和纠正算法完成,包218将带着错误被主机接收。当错误在206被检测时,错误的数据包218被纠正,并且纠正的数据包220被重新发送到主机。如果多于一个包带着错误从存储介质被取回,则全部错误的包被纠正并重新发送到主机。然后发送终止包208,以通知主机传输已经完成。还如图2c所示,即使当从存储装置取回的数据包中存在错误时(例如,当取回的数据中存在一个错误时),本公开的方法可以产生显著的延时节约224。

图3a图示了常规系统的非流水线型流程的可替代的实施方式。特别地,图3a,总体上在300处,图示了在不发送单独的完成包的情况下,将包(比如,四个包302)从存储介质发送到主机的另一示范性方式。在特定的示例中,系统首先取回包302和ecc包304,然后执行错误纠正算法306,以确定是否有任何包存在错误,并且纠正任何检测到的错误。然后系统可以将四个区块发送到主机。最后的包308也可以充当完成包,其可以通知主机传输已经完成。可以比例如其他完成检测程序更好地消除完成功能信号的示范性协议在2014年8月22日提交的、申请号为14/466,538、题为“ack-lessprotocolfornoticingcompletionofreadrequests”的美国专利申请,以及2014年9月18日提交的、申请号为14/489,881、题为“acknowledgement-lessprotocolforsolidstatedriveinterface”的美国专利申请中描述,两者的内容全部整合于本文。

根据本公开的可替代的方面,来自存储介质的数据包302可以在没有完成包的传输的情况下,在实施错误纠正算法之前被发送到主机。这如图3b所示,总体上在310处。本公开的系统和方法首先取回包302。随着每个包被从存储介质取回,其被发送到主机。例如,当第一包在312被取回时,其被发送到主机。当第二包在314被取回时,其也被发送到主机。根据本公开的方面,最后的包308不被发送到主机,直到实施错误检测和纠正算法。特别地,在ecc包304被从存储取回之后,实施ecc算法306。如果未检测到存在错误,最后的包308被发送到主机。当最后的包308被主机接收时,其可以通知主机传输已经完成。如图3b所示,在从存储装置取回的数据包中不存在错误的大多数通常情况下,本公开的方法可以产生显著的延时节约316。

图3c总体上在320处图示了当在数据包中存在错误的情况下以及当没有完成包时,将数据包发送到主机时的延时节约。特别地,在图示的示例中,第二数据包314含有错误。由于本公开的方法在包被发送到主机之前不等待完成错误检测和纠正算法,第二包314将带着错误被主机接收。根据本公开的方面,最后的包308不被发送,直到实施错误检测和纠正算法。当在306从第二包314中检测到错误时,错误的数据包314被纠正,并且纠正的数据包316被重新发送到主机。在发送纠正的包316之后,方法可以发送最后的数据包308。当最后的包308被主机接收时,其可以通知主机传输已经完成。本领域的普通技术人员将理解,如果最后的数据包带着错误被取回,则纠正的数据包将被发送到主机。如图3c所示,即使当从存储装置取回的数据包中存在错误时(例如,当取回的数据中存在一个错误时),本公开的方法可以产生显著的延时节约324。

根据本公开的可替代的方面,在检测到错误之后,仅将错误地取回的包的子集重新发送到主机,比如,仅含有错误的子集。当子集被主机接收时,其可以覆写(overwrite)包的适当部分。

根据本公开的可替代的方面,当数据包被从存储介质取回时,执行错误检测算法,比如,出错位组检查(syndromecheck,计算多项式,所述多项式返回指示多少位有错误的值),以识别取回的数据包中是否存在任何错误。如果取回的包都不存在任何错误,则不实施进一步的ecc算法。

图4图示了根据本公开的方面用于将数据包发送到主机的示范性方法的流程图400。存储器控制器可以从存储器取回多个数据包(402)。当存储器控制器取回数据包时,其将数据包发送到主机(404)。存储器控制器也可以取回对应于取回的数据包的ecc包(406)。ecc包一经被取回,存储器控制器可以执行ecc算法,以识别并纠正取回的数据包中的可能的错误(408)。然后方法可以检查取回的数据包中是否存在错误(410)。如果不存在检测到的错误,存储器控制器可以将完成包发送到主机(412)。如果取回的数据中存在错误,存储器控制器可以发送纠正的数据包(414),并且然后将完成包发送到主机(412)。

图5图示了根据本公开的可替代的方面用于将数据包发送到主机的示范性方法的流程图500。存储器控制器可以从存储器取回多个数据包(502)。当存储器控制器取回数据包时,其可以将每个包发送到主机(504),除了最后取回的数据包之外。存储器控制器也可以取回对应于取回的数据包的ecc包(506)。ecc包一经被取回,存储器控制器可以执行ecc算法,以识别并纠正取回的数据包中的可能的错误(508)。然后方法可以检查取回的数据包中是否存在错误(510)。如果不存在检测到的错误,存储器控制器可以将最后取回的包发送到主机(512)。如果取回的数据中存在错误,存储器控制器可以发送纠正的数据包(514),并且然后将最后取回的包发送到主机(512)。

本领域技术人员将理解,本文描述的说明书和附图中的各种图示可以实施为电子硬件、计算机软件,或两者的结合。为了阐述硬件和软件的此种可互换性,上面已经总体上依照其功能描述了各种示意性区块、模块、元件、部件、方法,以及算法。这样的功能实施为硬件、软件,或结合是取决于特定应用和影响整体系统的设计限制。对于每个特定应用,技术人员可以以变化的方式实施描述的功能。各种部件和区块可以不同地布置(例如,布置为不同顺序,或以不同方式分割),其都不背离主题技术的范围。

此外,通信协议的实施方式可以实现为一个计算机系统中的集中方式,或实现为分散方式,在分散方式的情况下,不同的元件遍布在若干互联的计算机系统上。任何种类的计算机系统,或者适合执行本文描述的方法的其他设备,适合于执行本文描述的功能。

硬件和软件的典型结合可以是具有计算机程序的通用计算机系统,当该计算机程序被载入并执行时,其控制计算机系统,使得其执行本文描述的方法。通信协议的方法也可以嵌入计算机程序产品中,其包含允许本文描述的方法的实施方式的全部特征,并且当其被载入到计算机系统时能够执行这些方法。

本文的上下文中的计算机程序或应用是指指令集的任何语言、代码或符号的任何表达,其意在使具有信息处理能力的系统直接地、或在以下任一或两者之后执行特定功能:a)转换为另一语言、代码或符号;b)以不同材料形式再现。值得注意的是,可以在不背离其精神或本质属性的情况下,以其他特定形式来实施此通信协议,并且相应地,为指示本发明的范围,应当参考随附的权利要求(而非前述说明书)。

已经具体参考这些图示的实施例描述了通信协议。然而,显而易见的是,在前述说明书中描述的本公开的精神和范围内,可以进行各种改变和变化,并且这样的改变和变化认为是等同于本公开,且为本公开的一部分。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1