买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于机器学习的读数据错误处理方法与系统_北京忆恒创源科技股份有限公司_201711281523.8 

申请/专利权人:北京忆恒创源科技股份有限公司

申请日:2017-12-07

公开(公告)日:2024-04-12

公开(公告)号:CN109901944B

主分类号:G06F11/10

分类号:G06F11/10

优先权:

专利状态码:有效-授权

法律状态:2024.04.12#授权;2021.09.28#著录事项变更;2020.10.20#实质审查的生效;2019.06.18#公开

摘要:公开了基于机器学习的读数据错误处理方法与系统。所提供的读命令的错误处理方法,其特征在于,包括:向存储器发出读命令;接收所述存储器提供的对应于所述读命令的读出数据;若对所述读出数据的错误校正失败,对所述读命令被应用的场景进行强化学习训练,得到与读命令被应用的场景对应的重读命令或重读命令序列;以及向存储器发出重读命令。

主权项:1.一种读命令的错误处理方法,其特征在于,包括:向存储器发出读命令;接收所述存储器提供的对应于所述读命令的读出数据;若对所述读出数据的错误校正失败,对所述读命令被应用的场景进行强化学习训练,得到与读命令被应用的场景对应的重读命令或重读命令序列;以及向存储器发出重读命令;若对所述读出数据的错误校正失败,开始对强化学习系统的训练的局;响应于对应于重读命令的读出数据的错误校正成功,结束对强化学习系统的训练的所述局;将当前局中从存储器读出的数据的信息熵、从存储器读出的数据与存储器存储的数据的联合信息熵、和或从存储器读出的数据与存储器存储的数据的互信息作为强化学习系统的奖励。

全文数据:基于机器学习的读数据错误处理方法与系统技术领域本申请涉及存储领域,具体地,涉及利用机器学习技术对从NVM芯片中读出数据的错误处理。背景技术诸如闪存的NVM芯片通过在存储单元中保持电荷量来存储信息。存储单元中的电荷量决定了存储单元的读出电压。在读取闪存数据时,比较存储单元的读出电压与阈值电压来识别存储单元所存储的信息。相变存储器、阻变存储器、磁旋存储器、DRAM各自利用基于不同原理的存储单元来存储信息。存储介质一般不是完全可靠的。由于存储单元的电荷量受存储单元的质量、寿命、时间等多种因素的影响,以及从多个存储单元到敏感放大器的信号传输路径的非均一性,导致从存储单元读取的数据同写入的数据存在偏差,无法正确体现原始向存储单元写入的信息。现有技术中采用一些手段来预防或应对因存储单元的电荷量等因素的变化而导致读取的数据无法正确体现写入的数据的问题,例如,在美国专利US9070454B1中,根据存储单元的擦写次数、保持时间等因素计算阈值电压从存储单元中读取数据或向存储单元中写入数据时使用的阈值电压或判决电压,并使用计算出的阈值电压向存储单元写入数据。阈值电压可包括用于读操作的读阈值与用于写操作的写阈值。申请号为201710957709.4的中国专利提供了智能重读命令生成技术。在闪存芯片中,通过为读操作指示不同的参数,来选择读操作时所使用的阈值电压。通过具有不同阈值电压的读操作,从存储单元读出的数据可以有不同的结果。有些结果具有较低的比特错误率BitErrorRatio,错误比特与传输的总比特数的百分比,而有些结果具有较高的比特错误率。结合使用ECCErrorCorrectionCode,错误校正码技术,具有较低的比特错误率的读取结果被ECC技术纠正的几率较高,从而通过尝试不同参数,来应对读操作中遇到的错误。参数可以合并在读命中中提供给闪存芯片,或者在闪存芯片中设置用于读操作的参数,而在闪存芯片处理读操作时,使用所设置的参数。ECC技术的纠错能力是有限的,例如,最多能在1K字节数据被称为ECC数据帧中纠正40比特错误。当存储的数据的错误比特数量超出了ECC部件的纠错能力,需要尝试具有其他参数的读操作,以期待得到具有较少错误比特数的读出数据,以符合ECC部件的纠错能力要求。存储介质上通常按页来存储和读取数据,而按块来擦除数据。通常,块包含多个页,存储介质上的页称为物理页具有固定的尺寸,例如17664字节,当然,物理页也可以具有其他的尺寸。在读出或写入数据时,一般为每个页的所有存储单元设置相同的阈值电压。图1A是现有技术的固态存储设备的示意图。固态存储设备包括控制部件与耦合到控制器部件的一片或多片NVM非易失性存储器芯片。NVM芯片是例如NAND闪存、相变存储器、阻变存储器、磁旋存储器。控制部件还耦合到主机,以响应主机发出的访问固态存储设备的命令。控制部件包括命令下发队列、命令完成队列、ECC部件以及介质接口控制器。介质接口控制器耦合到NVM芯片,并以遵循NVM芯片的接口协议的方式向NVM芯片发出命令,以操作NVM芯片,并接收从NVM芯片输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。如图1A所示,主机向固态存储设备发出访问固态存储设备的命令1。命令下发队列用于接收并缓存主机发出的访问固态存储设备的命令。主机发出的命令经过处理,并被转发给介质接口控制器2。介质接口控制器根据主机发出的命令向NVM芯片发出命令3。介质接口控制器还从NVM芯片获取命令处理结果4。以读命令为例,从NVM芯片读出的数据被提供给ECC部件进行错误校正5。处理完成的命令被添加到命令完成队列6。通过访问命令完成队列,主机获取命令处理结果7。可以理解地,为使用ECC部件对读出数据进行错误校正,在向NVM芯片写入数据时,还用ECC部件对待写入数据进行错误校正编码图1中未示出。ECC部件对从NVM芯片读出的数据进行的错误校正可能成功,也可能失败。在一个实施方式中,即使ECC部件对读出数据的错误校正失败,也向命令完成队列添加命令处理完成指示。若从命令完成队列中的命令处理完成指示中识别出数据的错误校正失败,则响应于错误校正失败,主机生成重读命令重读命令指示与错误校正失败的读命令不同的读操作参数,发送给固态存储设备的命令下发队列。以及还重复步骤1-7,以再次尝试读取数据。一般情况下,主机会尝试NVM芯片提供的多种或所有重读命令。如果尝试了所有的重读命令,依然没能获得错误校正成功的结果,则需要通过其他错误处理手段获取数据例如,通过RAID技术。而当通过某个重读命令获得了错误校正成功的正确数据,则终止对其他重读命令的尝试。可选地,一些NVM芯片提供不同形式的重读命令。例如,通过设置特征SetFeature命令与读命令的组合来实现重读命令的功能。使用设置特征命令来设置读命令参数,并在读命令中,使用所设置的读命令参数。依然可选地,在重读命令中指示与错误校正失败的读命令相同的读命令参数。Q-Learning是强化学习技术ReinforcementLearning的一种。图1B展示了Q-Learning算法的示意图。Q-Learning算法的核心是维护Q-MatrixQ-矩阵。图1C是根据本申请实施例的Q-Matrix的示意图。Q-Matrix是二维表或矩阵,其行与列分别表示状态s与动作a。状态s的每个取值,在Q-Matrix中占据一行,而动作a的每个取值,在Q-Matrix中占据一列。行与列的交点被填入Q值。Q值评价了在状态s采取动作a究竟有多好。在Q-Learning技术的训练过程中,用公式1更新Q-Matrix。公式1中,Qs,a表示以状态s为行、动作a为列的Q-Matrix。α是学习率learningrate0α≤1,r是观察到的对当前状态s的奖励,γ是折扣因子discountfactor,maxα′Qs′,a′是对Q-Matrix最优将来值的估计。Qs,a←Qs,a+α[r+γmaxα′Qs′,a′-Qs,a]1发明内容读操作具有多种参数,分别指示了不同的读阈值电压。在对读操作的错误处理中,需要提高选择读操作参数的效率,以加快数据读取过程,并减少从NVM芯片重复读数据的次数,以提升读数据的有效带宽。根据本申请的第一方面,提供了根据本申请第一方面的第一读命令的错误处理方法,其特征在于,包括:向存储器发出读命令;接收所述存储器提供的对应于所述读命令的读出数据;若对所述读出数据的错误校正失败,对所述读命令被应用的场景进行强化学习训练,得到与读命令被应用的场景对应的重读命令或重读命令序列;以及向存储器发出重读命令。根据本申请第一方面的第一读命令的错误处理方法,提供了根据本申请第一方面的第二读命令的错误处理方法,其中读命令被应用的场景被作为强化学习系统的状态,用于错误处理的重读命令作为强化学习系统的动作,以及将完成错误处理过程的开销作为强化学习系统的奖励。根据本申请第一方面的第一或第二读命令的错误处理方法,提供了根据本申请第一方面的第三读命令的错误处理方法,还包括:接收所述存储器提供的对应于重读命令的读出数据;对所述重读命令被应用的场景进行强化学习训练。根据本申请第一方面的第一至第三读命令的错误处理方法之一,提供了根据本申请第一方面的第四读命令的错误处理方法,其中读命令被应用的场景包括,读命令所访问的存储单元被擦除的次数、读命令所访问的存储单元上次被擦除后的被读出次数、读命令所访问的存储单元的数据被写入至今的时间间隔、读命令所访问的存储单元的物理页类型、读命令访问的存储单元所在的LUN、读命令所访问的存储单元的物理地址,和或读命令所访问的存储单元所在的物理块是否被完整写入。根据本申请第一方面的第二读命令的错误处理方法,提供了根据本申请第一方面的第五读命令的错误处理方法,其中完成错误处理过程的开销包括,完成错误处理过程所需的时间、数据传输量和或功耗。根据本申请第一方面的第一至第五读命令的错误处理方法之一,提供了根据本申请第一方面的第六读命令的错误处理方法,其中还将所述存储器提供的对应于重读命令的读出数据的错误比特数,作为强化学习的奖励。根据本申请第一方面的第一至第六读命令的错误处理方法之一,提供了根据本申请第一方面的第七读命令的错误处理方法,其中强化学习系统的动作包括“停止”动作;训练强化学习系统,使得响应于对应于重读命令的读出数据的错误校正成功,或者错误处理过程的开销超过阈值,强化学习系统输出“停止”动作。根据本申请第一方面的第七读命令的错误处理方法,提供了根据本申请第一方面的第八读命令的错误处理方法,其中通过强化学习获得输出“停止”动作的最佳时机。根据本申请第一方面的第一至第八读命令的错误处理方法之一,提供了根据本申请第一方面的第九读命令的错误处理方法,还包括:若对所述读出数据的错误校正失败,开始对强化学习系统的训练的局;响应于对应于重读命令的读出数据的错误校正成功,结束对强化学习系统的训练的所述局。根据本申请第一方面的第九读命令的错误处理方法,提供了根据本申请第一方面的第十读命令的错误处理方法,其中将得到与读命令被应用的场景对应的重读命令或重读命令序列作为强化学习系统的步。根据本申请第一方面的第九或第十读命令的错误处理方法,提供了根据本申请第一方面的第十一读命令的错误处理方法,其中响应于开始对强化学习系统的训练的第一局,生成第一局标识符;以及响应于接收所述存储器提供的对应于第一局的重读命令的读出数据,用第一局标识符获取第一局的重读命令被应用的场景。根据本申请第一方面的第九至第十一读命令的错误处理方法之一,提供了根据本申请第一方面的第十二读命令的错误处理方法,其中读命令被应用的场景还包括当前局的错误处理过程中应用过的重读命令序列。根据本申请第一方面的第九至第十二读命令的错误处理方法之一,提供了根据本申请第一方面的第十三读命令的错误处理方法,其中将当前局中从存储器读出的数据的信息熵、从存储器读出的数据与存储器存储的数据的联合信息熵、和或从存储器读出的数据与存储器存储的数据的互信息作为强化学习系统的奖励。根据本申请第一方面的第一至第十三读命令的错误处理方法之一,提供了根据本申请第一方面的第十四读命令的错误处理方法,还包括:筛选从强化学习系统得到的重读命令或重读命令序列,剔除可被识别为对错误处理过程无效的重读命令或重读命令序列。根据本申请第一方面的第一至第十四读命令的错误处理方法之一,提供了根据本申请第一方面的第十五读命令的错误处理方法,还包括设置强化学习系统的参数,所述强化学习系统的参数被存储在存储器中或由主机提供。根据本申请第一方面的第一至第十五读命令的错误处理方法之一,提供了根据本申请第一方面的第十六读命令的错误处理方法,还包括获取强化学习系统的参数,并将所述强化学习系统的参数提供给主机或将所述强化学习系统的参数存储在所述存储器中。根据本申请第一方面的第一至第十六读命令的错误处理方法之一,提供了根据本申请第一方面的第十七读命令的错误处理方法,还包括将强化学习的训练结果记录在存储器、动态随机存取存储器或者非易失性存储器中。根据本申请第一方面的第一至第十七读命令的错误处理方法之一,提供了根据本申请第一方面的第十八读命令的错误处理方法,还包括:响应于对根据第二读命令从存储器读出数据的错误校正失败,对第二读命令被应用的场景进行强化学习推断,得到与地儿读命令被应用的场景对应的重读命令或重读命令序列;以及向存储器发出重读命令。根据本申请第一方面的第二读命令的错误处理方法,提供了根据本申请第一方面的第十九读命令的错误处理方法,其中根据强化学习系统的奖励,更新对同强化学习系统的状态对应的强化学习系统的动作的评价。根据本申请第一方面的第一至第十九读命令的错误处理方法之一,提供了根据本申请第一方面的第二十读命令的错误处理方法,其中所述强化学习系统应用Q-Learning算法。根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括控制部件、存储器芯片与强化学习部件;所述控制部件耦合所述存储器芯片与所述强化学习部件,并执行根据本申请第一方面的第一至第二十错误处理方法之一。根据本申请的第三方面,提供了根据本申请第三方面的第一错误处理系统,包括主机与同主机耦合的存储设备;所述存储设备包括控制部件与存储器芯片;所述控制部件用于向存储器发出读命令并接收所述存储器提供的对应于所述读命令的读出数据;响应于对所述读出数据的错误校正失败,所述控制部件将所述读命令被应用的场景提供给所述主机;所述主机对所述读命令被应用的场景进行强化学习训练,将得到的与读命令被应用的场景对应的重读命令或重读命令序列提供给所述控制部件;以及所述控制部件向所述存储器芯片发出重读命令。根据本申请第三方面的第一错误处理系统,提供了根据本申请第三方面的第二错误处理系统,其中所述控制部件还接收所述存储器提供的对应于重读命令的读出数据;将得到的与重读命令被应用的场景提供给所述主机;所述主机对所述重读命令被应用的场景进行强化学习训练。根据本申请的第四方面,提供了根据本申请第四方面的第一错误处理系统,包括:读命令模块,用于向存储器发出读命令;数据接收模块,用于接收所述存储器提供的对应于所述读命令的读出数据;强化学习模块,用于若对所述读出数据的错误校正失败,对所述读命令被应用的场景进行强化学习训练,得到与读命令被应用的场景对应的重读命令或重读命令序列;以及重读命令模块,用于向存储器发出重读命令。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。图1A是现有技术的固态存储设备的示意图;图1B是Q-Learning技术的示意图;图1C是Q-Matrix的示意图;图2A是根据本申请实施例的固态存储设备的示意图;图2B是根据图2A的实施例的固态存储设备处理读命令的示意图;图3根据本申请实施的固态存储设备的读出数据错误处理系统的示意图;图4A是根据本申请的实施例对Q-Learning部件进行训练的流程图;图4B是根据本申请的又一实施例对Q-Learning部件进行训练的流程图;图5A是根据本申请的实施例的固态存储设备处理读命令的示意图;图5B是根据本申请的又一实施例的固态存储设备处理读命令的示意图;图6是根据本申请又一实施的固态存储设备的读出数据错误处理系统的示意图;以及图7是根据本申请的依然又一实施例对Q-Learning部件进行训练的流程图。具体实施方式下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图2A是根据本申请实施例的固态存储设备的示意图。根据图2A的实施例的固态存储设备的控制部件,包括命令下发队列、命令完成队列、介质接口控制器、ECC部件以及AI人工智能,ArtificialIntelligence部件或机器学习部件。AI部件耦合到ECC部件。响应于ECC部件指示错误校正成功,将当前读命令被应用的场景与当前读命令的读命令参数提供给AI部件,用于训练AI部件。例如,在实现了强化学习算法的AI部件中,训练AI部件。可选地,AI部件还耦合到控制部件外部的DRAM,以缓存AI部件的神经网络的参数。AI部件可以是IP核、CPU核或耦合到控制器的ASIC芯片。在根据本申请的又一种实施方式中,控制部件的CPU核图中未示出识别ECC部件对读出数据的错误校正结果,并将对应的读命令参数与读命令被应用的场景提供给AI部件,以训练AI部件的神经网络。CPU核通过执行软件,控制AI部件的训练、推断、开启和或关闭。依然可选地,响应于主机的命令或指示,为AI部件设置神经网络的参数,所设置的神经网络的参数可以存储在固态存储设备的NVM芯片中或由主机提供。可选地,响应于主机的命令或指示,从AI部件获取经学习得到的神经网络参数,并提供给主机或存储在固态存储设备的NVM芯片中,以供其他固态存储设备使用。继续参看图2A,以固态存储设备读命令处理流程为例,主机向固态存储设备的命令下发队列发出读访问命令1。主机发出的读访问命令经过处理,并被转发给介质接口控制器2。介质接口控制器根据主机发出的读访问命令向NVM芯片发出命令3。介质接口控制器还从NVM芯片获取读命令的处理结果4。对于读命令,从NVM芯片读出的数据被提供给ECC部件进行错误校正5。若ECC部件对数据的错误校正成功,处理完成的读命令被添加到命令完成队列6,并且当前读命令被应用的场景与读命令参数还被转发给AI部件6,用于训练AI部件的神经网络。训练AI部件所得的结果被记录在控制部件的存储器、动态随机存取存储器DRAM或者NVM芯片中。图2B是根据图2A的实施例的固态存储设备处理读命令的示意图。在图2B中,主机向固态存储设备的命令下发队列发出读访问命令1。主机发出的读访问命令经过处理,并被转发给介质接口控制器2。介质接口控制器根据主机发出的读访问命令向NVM芯片发出读命令3。介质接口控制器还从NVM芯片获取命令处理结果4。对于读命令,从NVM芯片读出的数据被提供给ECC部件进行错误校正5。若ECC部件对数据的错误校正失败,读命令被应用的场景可选地,还包括读命令参数例如,读出阈值电压、读出数据的错误比特数和或读命令参数的序列被转发给AI部件6。AI部件根据接收的读命令被应用的场景推断最佳的读命令参数例如,读出阈值电压或具有不同读出阈值电压的读命令序列,生成重读命令,将重读命令发送给介质接口控制器7。介质接口控制器根据重读命令向NVM芯片发出重读命令8。介质接口控制器还从NVM芯片获取重读命令的处理结果9。重读命令读出的数据被提供给ECC部件10。若ECC部件对读出数据的错误校正失败,由AI部件再次发起从步骤6到步骤10的过程。若ECC部件对读出数据的错误校正成功,处理完成的命令被添加到命令完成队列11。通过访问命令完成队列,主机获取命令处理结果12。在根据本申请的又一种实施方式中,控制部件的CPU核未示出识别ECC部件对读出数据的错误校正结果,并将对应的读命令被应用的场景可选地,还包括读命令参数提供给AI部件,AI部件生成重读命令,并在控制部件的CPU核未示出的控制下将重读命令发送给介质接口控制器。图3根据本申请实施的固态存储设备的读出数据错误处理系统的示意图。介质接口控制器向NVM芯片发出读命令或重读命令,从NVM芯片读出数据。读命令重读命令可指示多种不同的读操作参数。ECC部件对读出数据进行错误校正。响应于对读出数据的错误校正失败,将对应的读命令被应用的场景作为状态,提供给Q-Learning部件,用于训练学习和或推断。为了清楚的目的,区分读命令与重读命令。将介质接口控制器为读取NVM芯片指定存储单元而向NVM芯片首次发出的命令称为读命令,而若读命令对应的读出数据的错误校正失败,而实施错误处理过程,将错误处理过程中发出的读命令称为重读命令。可以理解地,读命令与重读命令的形态可以相同或不同。错误处理过程,对一个读命令引起的错误进行处理,直到得到对应于读命令的正确数据作为错误处理过程的结束,或者以指定的终止条件作为处理过程的结束。读命令被应用的场景的属性包括读命令访问的存储单元的被擦除次数、存储单元上次被擦除后的被读出次数、物理块上的数据被写入至今的时间间隔和或存储单元的物理页类型LSBCSBMSB等。根据本申请实施例的Q-Learning部件的学习中,将对一个读命令引起的错误处理过程称为局Episode,而将产生的一个重读命令或重读命令序列称为步step。Q-Learning部件将接收的读命令被应用的场景的属性的部分或全部,作为要应用于Q-Matrix的状态s。Q-Matrix的动作a是介质接口控制器所能产生的或者NVM芯片所能接收的多种所有读命令具有不同的读操作参数。Q-Learning部件根据接收的读命令被应用的场景得到Q-Matrix的状态s,并从Q-Matrix获得对应于状态s的动作a。动作a是例如当前Q-Matrix中对应于状态s的最优动作a例如,具有最大的奖励r,或者引入随机值而选择的动作a。Q-Learning部件将Q-Matrix提供的动作a或同动作a对应的读操作参数提供给介质接口控制器。介质接口控制器根据接收的读操作参数产生重读命令,并发送给NVM芯片以重新读出数据。介质接口控制器还获取根据重读命令从NVM芯片读出的数据,由ECC部件对读出数据进行错误校正。ECC部件还给出错误校正成功失败的指示,以及可选地,读出数据中的错误比特数。将错误校正成功失败的指示,以及可选地,读出数据中的错误比特数提供给Q-Learning部件,作为同动作a对应的奖励r,以更新Q-Matrix。可选地,Q-Learning部件还记录当前局所经历的时间期间t,将时间期间t也作为用于Q-Matrix的奖励r。其中,时间期间t越短,对应的奖励r越大。可选地,若ECC部件告知Q-Learning部件对重读命令读出的数据的错误校正成功,Q-Learning部件也生成对应的奖励r,更新Q-Matrix,并结束对应于该重读命令的当前局的训练。依然可选地,根据读出数据中的错误比特数与当前局所经历的时间期间t计算奖励r。例如,对读出数据中的错误比特数与当前局所经历的时间期间t各自设置权重并通过加权求和以得到奖励r若ECC部件告知Q-Learning部件对重读命令读出的数据的错误校正依然失败,Q-Learning部件根据更新的Q-Matrix生成下一最优动作a提供给介质接口控制器。介质接口控制器生成新的重读命令。根据本申请的实施例,对Q-Learning的学习过程,将错误处理过程完成作为Q-Learning的局结束的标志。作为举例,ECC部件指示对重读命令的错误校正成功是错误处理过程完成的标志;作为又一个例子,错误处理过程已进行的时间超过阈值是错误处理过程完成的标志。可选地,Q-Matrix的包括“退出”动作,作为动作a的一种。响应于执行“退出”动作,学习过程的一局结束。例如,当学习过程的一局的步step数达到指定阈值时,执行“退出”动作。作为又一个例子,“退出”动作在Q-Matrix中也有其对应的Q值。通过学习过程,也更新“退出”动作对应的Q值,并且为“退出”动作的选取策略进行学习。例如,一些情况下,错误处理过程将以失败告终,那么尽早执行“退出”动作,将缩短错误处理过程的时间。图4A是根据本申请的实施例对Q-Learning部件进行训练的流程图。对Q-Learning部件的训练可以在实验室中进行在存储设备被提供给用户之前,并得到训练好的Q-Learning部件及其Q-Matrix。在存储设备中集成训练好的Learning部件与Q-Matrix,并在正常工作时,响应于ECC部件指示的错误校正失败,而生成优选的重读命令,以执行错误处理过程。作为又一个例子,在存储设备正常工作时,也对Q-Learning部件进行训练,并更新Q-Matrix。在Q-Learning部件得到良好训练之前,用已知的错误处理策略来选择读操作的参数。作为再一个例子,在实验室中对Q-Learning部件进行第一阶段的训练,得到基本可用的Q-Learning部件与Q-Matrix。并且在存储设备的使用过程中,用真实发生的错误校正失败的实例,继续对Q-Learning进行训练,以使Q-Learning部件不断学习,并改进错误处理过程。对Q-Learning部件的训练可由存储设备的控制部件实施,或者在实验室中由计算机和或服务器等通用计算平台例如,图1A的主机、AIArtificialIntelligence专用加速器例如,图2A、2B的AI部件等实施。参看图4A,为训练Q-Learning部件,首先初始化Q-Matrix410。例如,根据已知的知识,为Q-Matrix的各个状态s对应的动作a设置Q值。可选地,为Q-Matrix中的各Q值设置为相同的值或随机值。响应于从NVM芯片读出的数据的错误校正失败420,开始用于训练Q-Learning部件的一局Episode。例如,由ECC部件指示读出数据的错误校正失败。又例如,Q-Learning部件输出局Episode索引给ECC部件介质接口控制器或包含ECC部件介质接口控制器的控制部件。将对应于错误校正失败的读出数据的读命令所应用的场景提供给Q-Learning部件,用于确定对应于Q-Matrix的状态s430。例如,读命令被应用的场景包括读命令访问的存储单元的被擦除次数与读命令访问的存储单元上的数据被写入至今的时间间隔。存储单元被擦除次数的取值范围为例如0~3000次,数据被写入至今的时间间隔的取值范围为例如0-12个月以小时、天、周或月为单位。可选地,读命令被应用的场景还包括存储单元上次被擦除后的被读出次数和或存储单元的物理页类型LSBCSBMSB。依然可选地,读命令被应用的场景还包括读命令访问的LUN逻辑单元,由LUN号识别、存储单元的物理地址由物理块物理页地址识别,和或存储单元所在的物理块是否被完整写入以及当前被写入的位置由物理页地址识别。可选地,减少Q-Matrix的状态空间,以降低训练过程的复杂度。例如,对存储单元被擦除次数分段,分为0-500次、500-1000次、1000-1500次,每段作为状态空间的元素之一。作为又一个例子,将与状态相关的多种因素组合,状态空间的元素之一为被擦除次数在0-500次,且数据被写入至今的时间间隔为0-2周。Q-Learning根据状态s与Q-Matrix记录的对应于状态s的一个或多个动作a的Q值,选择最优的动作a’。根据动作a’获得对应的读操作参数,生成重读命令440。例如,Q-Learning将选择的动作a’提供给介质接口控制部,由介质接口控制器产生重读命令并提供给NVM芯片。介质接口控制器还接收重读命令从NVM芯片读出的数据,ECC部件对用重读命令读出的数据进行错误校正,并将错误校正结果提供给Q-Learning部件。可选地,为指定状态s选择最优动作a’时,还应用已知的知识。例如,已知随时间流逝,存储单元中存储的电荷有流失的倾向,而随着存储单元被读取的次数增加,存储单元的存储的电荷有增加的倾向。从而根据读命令被应用的场景,确定存储单元中存储的电荷的变化倾向,并选择与存储的电荷变化倾向对应的动作a。例如,可选动作集合中有多个动作,一半动作对应的读操作参数适用于流失了电荷的存储单元,而另一半动作对应的读操作参数适用于增加了电荷的存储单元,从而选择与存储的电荷变化倾向对应的动作a,可大幅度减少训练量。还将重读命令所应用的场景提供给Q-Learning部件,Q-Learning部件根据场景识别出同场景对应的局。可选地,向Q-Learning部件提供局Episode索引,以指示当前的错误校正结果属于哪个局。Q-Learning部件可同时进行多局的学习。Q-Learning部件为每局记录当前的进展例如,通过标记步step序号。Q-Learning部件使用例如公式1根据重读命令的读出数据的错误校正结果更新Q-Matrix450。以及判断是否满足学习过程的停止条件460。例如,将错误校正成功作为停止条件之一。若错误校正成功,则当前局的学习完成470。若对重读命令的读出数据的错误校正依然失败,则不满足停止条件460,Q-Learning部件根据重读命令的应用场景或局索引得到用于Q-Matrix的状态s’430,以及通过更新后的Q-Matrix得到当前局面下的最优动作a’,并由介质接口控制器生成重读命令440,以及重复对Q-Learning部件的训练过程。学习过程的终止条件还包括错误处理过程当前局的执行时间超出阈值,或者当前局中已经执行的步step数超出阈值,或者Q-Learning部件得到终止当前局的指示。图4B是根据本申请的又一实施例对Q-Learning部件进行训练的流程图。训练Q-Learning部件的局,开始于指定的Q-Matrix的状态s,例如,ECC部件指示错误校正失败时,同引起错误校正失败的读命令所应用的场景对应的状态s。为获得Q-Learning的理想训练结果,需要提高训练效率,并使训练过程尽快覆盖更多的状态s。图4B的实施例中,通过步骤415构造读命令所应用的读出数据的场景,以提高训练过程的效率。参看图4B,为训练Q-Learning部件,首先初始化Q-Matrix410,以及构造读命令所应用的读出数据的场景415。例如,对NVM芯片的一个或多个存储单元施加指定次数的擦写例如,500次、1000次、1500次等,来构成读命令所应用的场景。可选地,或进一步地,对施加了指定擦写次数的存储单元,还设置其被写入数据至今的时间间隔,以构成读命令所应用的场景。在被构造的场景中应用读命令。响应于从NVM芯片读出的数据的错误校正失败420,开始用于训练Q-Learning部件的一局Episode。将对应于错误校正失败的读出数据的读命令所应用的场景提供给Q-Learning部件,用于确定对应于Q-Matrix的状态s430。作为举例,在构造的场景基础上,记录所构造场景的变化例如,又发生的对存储单元的擦写次数、存储单元上记录的数据又经过的时间间隔等,以得到对应于错误校正失败的读出数据的读命令所应用的场景。Q-Learning根据状态s与Q-Matrix记录的对应于状态s的一个或多个动作a的Q值,选择最优的动作a’。根据动作a’获得对应的读操作参数,生成重读命令440。Q-Learning部件根据重读命令的读出数据的错误校正结果更新Q-Matrix450。以及判断是否满足学习过程的停止条件460。若满足学习过程的停止条件460,则当前局的学习完成470。以及返回步骤415,构造下一个读出数据的读命令所应用的场景415,并通过步骤420进入对Q-Learning部件下一局的学习。若不满足停止条件460,Q-Learning部件根据重读命令的应用场景或局索引得到用于Q-Matrix的状态s’430,以及通过更新后的Q-Matrix得到当前局面下的最优动作a’,并由介质接口控制器生成重读命令440,以及重复对Q-Learning部件的训练过程。图5A是根据本申请的实施例的固态存储设备处理读命令的示意图。控制部件的质接口控制器向NVM芯片发出读命令,并从NVM芯片获取读命令的读出数据。ECC部件对读出数据进行错误校正。响应于从NVM芯片读出的数据的错误校正失败510,将读命令所应用的场景提供给Q-Learning部件,以获取在当前场景下优选的用于错误处理过程的动作520。Q-Learning部件根据读命令所应用的场景获得对应于Q-Matrix的状态s,并访问Q-Matrix获得同状态s对应的最优动作a。例如,最优动作a指示了读操作参数、重读命令和或重读命令序列。介质接口控制器根据Q-Learning部件指示的最优动作a或最优动作序列,向NVM芯片发出重读命令或者重读命令序列。可选地,获取重读命令或重读命令序列的读出数据,对读出数据进行错误校正。若错误校正失败,则返回步骤510继续进行错误处理过程。可选地,在步骤520,Q-Learning部件输出最优动作a的序列。例如,Q-Learning部件预计到在执行了最优动作a后,同重读命令对应的场景将变为状态s的下一状态记为s1,以及从Q-Matrix中获得对应于状态s1的最优动作a1。以类似的方式,Q-Learning部件输出最优动作序列a、a1、a2……。以及介质接口控制器根据Q-Learning部件指示的最优动作a序列,向NVM芯片发出重读命令序列。以此方式,响应于一次ECC部件指示错误校正失败,仅需访问一次Q-Learning部件,减少了ECC部件与Q-Learning部件交互的次数,有助于降低错误处理过程所需的时间。图5B是根据本申请的又一实施例的固态存储设备处理读命令的示意图。控制部件的质接口控制器向NVM芯片发出读命令R1。ECC部件对读出数据进行错误校正。响应于从NVM芯片读出的数据的错误校正失败540,开启错误处理流程。作为举例,将读命令所应用的场景提供给Q-Learning部件。可选地,还将ECC部件提供的读出数据的错误比特数量提供给Q-Learning部件。Q-Learning部件输出的优选动作指示再次发出读命令R2同读命令R1使用相同的读操作参数550。响应于读命令R2读出的数据的错误校正成功555,错误处理流程结束,将校正后的读出数据作为对读命令的响应提供给主机。以及还将读命令R2读出的数据的错误校正成功作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。若读命令R2读出的数据的错误校正失败555,将读命令所应用的场景提供给Q-Learning部件,Q-Learning部件输出的优选动作指示发出重读命令1560。可选地,还将读命令R2读出的数据的错误比特数作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。以及识别通过重读命令1读出的数据是否错误校正成功565。响应于重读命令1读出的数据的错误校正成功565,错误处理流程结束。以及还将重读命令1读出的数据的错误校正成功作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。若重读命令1读出的数据的错误校正失败565,将读命令所应用的场景提供给Q-Learning部件,Q-Learning部件输出的优选动作指示发出重读命令2570。可选地,还将重读命令1读出的数据的错误比特数作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。以及识别通过重读命令2读出的数据是否错误校正成功575。响应于重读命令2读出的数据的错误校正成功575,错误处理流程结束。以及还将重读命令2读出的数据的错误校正成功作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。若重读命令2读出的数据的错误校正失败575,将读命令所应用的场景提供给Q-Learning部件,Q-Learning部件输出的优选动作指示发出重读命令3580。可选地,还将重读命令2读出的数据的错误比特数作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。以及识别通过重读命令3读出的数据是否错误校正成功585。响应于重读命令3读出的数据的错误校正成功585,错误处理流程结束。以及还将重读命令3读出的数据的错误校正成功作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。若重读命令3读出的数据的错误校正失败585,由于已经达到错误处理过程的最大次数例如,3次,Q-Learning部件输出的优选动作为“停止”动作。相应地,报告读数据失败590,或错误处理过程失败。可选地,还将重读命令3读出的数据的错误比特数作为奖励提供给Q-Learning部件,Q-Learning部件相应地更新Q-Matrix。图6是根据本申请又一实施的固态存储设备的读出数据错误处理系统的示意图。介质接口控制器向NVM芯片发出读命令或重读命令,从NVM芯片读出数据。ECC部件对读出数据进行错误校正。响应于对读出数据的错误校正失败,将对应的读命令被应用的场景作为状态,提供给Q-Learning部件,用于训练学习和或推断。读命令被应用的场景的属性包括读命令访问的存储单元的被擦除次数、存储单元上次被擦除后的被读出次数、物理块上的数据被写入至今的时间间隔和或存储单元的物理页类型LSBCSBMSB等。提供给Q-Learning部件的场景还包括已在当前局的错误处理过程中应用过的重读命令序列。Q-Learning部件将接收的读命令被应用的场景的属性的部分或全部,作为要应用于Q-Matrix的状态s。Q-Matrix的动作a是介质接口控制器所能产生的或者NVM芯片所能接收的多种所有读命令具有不同的读操作参数。Q-Learning部件根据接收的读命令被应用的场景得到Q-Matrix的状态s,并从Q-Matrix获得对应于状态s的动作a。Q-Learning部件将Q-Matrix提供的动作a或同动作a对应的读操作参数提供给介质接口控制器。介质接口控制器根据接收的读操作参数产生重读命令,并发送给NVM芯片以重新读出数据。介质接口控制器还获取根据重读命令从NVM芯片读出的数据,由ECC部件对读出数据进行错误校正。将错误校正成功失败的指示、读出数据中的错误比特数、当前局所经历的时间期间t、和或当前局中从NVM芯片读出数据的信息熵或互信息提供给Q-Learning部件,作为同动作a对应的奖励r,以更新Q-Matrix。申请号为201710030720.6的中国专利申请提供了计算从NVM芯片读出的数据的信息熵HY,从NVM芯片读出数据与NVM芯片存储的数据的联合信息熵HX,Y以及互信息IX,Y的方法,将该中国专利申请的全文通过引用合并入本申请。其中,通过多种处理过程T处理随机变量X,处理的结果作为随机变量Y,并依据公式1与2计算X与Y的互信息IX,Y。HX=-∑x∈Xpxlog2px2IX,Y=HX+HY-HX,Y3随机变量X表示原始数据,例如写入NVM芯片中的数据。随机变量Y表示对随机变量X经过处理过程T得到的数据,例如从NVM芯片读出的数据。作为举例,X代表写入NVM芯片的原始数据,而处理过程T是参数为r的重读命令,Y代表从NVM芯片读出的数据。HX是随机变量X的信息熵,由X的边缘概率计算公式2;HY是随机变量Y的信息熵,由Y的边缘概率计算公式2,HX,Y是随机变量X与Y的联合信息熵,HX,Y=-∑x,y∈X,Ypx,ylog2px,y。x是随机变量X的一个可能的值也称为符号。y是随机变量Y的一个可能的值也称为符号。px是x的边缘概率,x∈X,py是y的边缘概率,y∈Y。px,y是x和y同时出现的概率x与y的联合概率。根据本申请的实施例,从NVM芯片读出的数据的信息熵越低或者NVM芯片读出数据与NVM芯片存储的数据的互信息IX,Y越大,对应了更大的奖励r。可以理解地,向Q-Learning部件提供当前局已应用的重读命令序列,与向Q-Learning部件提供信息熵互信息或与其相关的奖励,不必同时应用。即使向Q-Learning部件提供的读命令被应用的场景不包括重读命令序列,也可将信息熵互信息作为奖励提供给Q-Learning部件。类似地,即使向Q-Learning部件提供当前局已应用的重读命令序列,在向Q-Learning部件提供的奖励中,可以不包括信息熵互信息。图7是根据本申请的依然又一实施例对Q-Learning部件进行训练的流程图。固态存储设备有多个LUN或存储单元。在多个存储单元上构造多个场景,以同时用多个场景训练Q-Learning部件,以加快训练的过程。参看图7,为训练Q-Learning部件,首先初始化Q-Matrix710,以及构造读命令所应用的读出数据的场景715。构造多个读命令所应用的读出场景作为举例,分别记为场景1、场景2与场景3。例如,场景1中,对NVM芯片的一个或多个存储单元施加500次的擦写,场景2中,对NVM芯片的一个或多个存储单元施加1000次的擦写,场景3中,对NVM芯片的一个或多个存储单元施加1500次的擦写。可选地,或进一步地,与场景有关的其他因素例如存储单元上次被擦除后的被读出次数、物理块上的数据被写入至今的时间间隔和或存储单元的物理页类型LSBCSBMSB、存储单元的物理地址,和或存储单元所在的物理块是否被完整写入也被用于构造场景。根据图7的实施例,在被构造的多个场景中同时或并发地应用读命令。响应于任何场景中从NVM芯片读出的数据的错误校正失败720,开始用于训练Q-Learning部件的一局Episode。训练Q-Learning部件的多局可并发或同时处理。对于每局,将对应于错误校正失败的读出数据的读命令所应用的场景提供给Q-Learning部件,用于确定对应于Q-Matrix的状态s730。Q-Learning部件根据状态s与Q-Matrix记录的对应于状态s的一个或多个动作a的Q值,选择最优的动作a’。根据动作a’获得对应的读操作参数,生成重读命令740。可选地,为指定状态s选择最优动作a’时,除了根据Q值选择动作,还应用已知的知识筛选动作745。例如,已知随时间流逝,存储单元中存储的电荷有流失的倾向,而随着存储单元被读取的次数增加,存储单元的存储的电荷有增加的倾向。从而根据读命令被应用的场景,确定存储单元中存储的电荷的变化倾向,并选择与存储的电荷变化倾向对应的动作a,或者剔除与存储的电荷变化倾向无关或相反的动作a。作为又一个例子,根据Q值选择动作a’,在对选出的动作a’进行筛选,若动作a’不满足筛选条件,则放弃动作a’而返回步骤740再次选择最优动作。通过筛选步骤745,排除掉大量“糟糕”的动作,以减低训练量,并加快学习过程。若动作a’满足筛选条件,则进入步骤750,Q-Learning部件根据重读命令的读出数据的错误校正结果更新Q-Matrix。以及判断是否满足学习过程的停止条件760。若满足学习过程的停止条件760,则当前局的学习完成770。以及返回步骤715,构造下一个或多个读出数据的读命令所应用的场景715,并通过步骤720进入对Q-Learning部件下一局学习。若不满足停止条件760,Q-Learning部件根据重读命令的应用场景或局索引得到用于Q-Matrix的状态s’730,以及重复对Q-Learning部件的训练过程。本申请实施例的阈值设置方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片诸如NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。的需要存储信息的电子设备。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

权利要求:1.一种读命令的错误处理方法,其特征在于,包括:向存储器发出读命令;接收所述存储器提供的对应于所述读命令的读出数据;若对所述读出数据的错误校正失败,对所述读命令被应用的场景进行强化学习训练,得到与读命令被应用的场景对应的重读命令或重读命令序列;以及向存储器发出重读命令。2.根据权利要求1所述的方法,其中读命令被应用的场景被作为强化学习系统的状态,用于错误处理的重读命令作为强化学习系统的动作,以及将完成错误处理过程的开销作为强化学习系统的奖励。3.根据权利要求1或2所述的方法,还包括:接收所述存储器提供的对应于重读命令的读出数据;对所述重读命令被应用的场景进行强化学习训练。4.根据权利要求1-3之一所述的方法,其中读命令被应用的场景包括,读命令所访问的存储单元被擦除的次数、读命令所访问的存储单元上次被擦除后的被读出次数、读命令所访问的存储单元的数据被写入至今的时间间隔、读命令所访问的存储单元的物理页类型、读命令访问的存储单元所在的LUN、读命令所访问的存储单元的物理地址,和或读命令所访问的存储单元所在的物理块是否被完整写入。5.根据权利要求2所述的方法,其中完成错误处理过程的开销包括,完成错误处理过程所需的时间、数据传输量和或功耗。6.根据权利要求1-5之一所述的错误处理方法,其中强化学习系统的动作包括“停止”动作;训练强化学习系统,使得响应于对应于重读命令的读出数据的错误校正成功,或者错误处理过程的开销超过阈值,强化学习系统输出“停止”动作。7.根据权利要求1-6之一所述的方法,还包括:若对所述读出数据的错误校正失败,开始对强化学习系统的训练的局;响应于对应于重读命令的读出数据的错误校正成功,结束对强化学习系统的训练的所述局。8.根据权利要求7所述的方法,其中将当前局中从存储器读出的数据的信息熵、从存储器读出的数据与存储器存储的数据的联合信息熵、和或从存储器读出的数据与存储器存储的数据的互信息作为强化学习系统的奖励。9.一种存储设备,包括控制部件、存储器芯片与强化学习部件;所述控制部件耦合所述存储器芯片与所述强化学习部件,并执行根据权利要求1-8之一所述的方法。10.一种错误处理系统,包括主机与同主机耦合的存储设备;所述存储设备包括控制部件与存储器芯片;所述控制部件用于向存储器发出读命令并接收所述存储器提供的对应于所述读命令的读出数据;响应于对所述读出数据的错误校正失败,所述控制部件将所述读命令被应用的场景提供给所述主机;所述主机对所述读命令被应用的场景进行强化学习训练,将得到的与读命令被应用的场景对应的重读命令或重读命令序列提供给所述控制部件;以及所述控制部件向所述存储器芯片发出重读命令。

百度查询: 北京忆恒创源科技股份有限公司 基于机器学习的读数据错误处理方法与系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。