改善闪存的读取重试的方法、控制器以及相关存储装置

文档序号:1339740 发布日期:2020-07-17 浏览:10次 >En<

阅读说明:本技术 改善闪存的读取重试的方法、控制器以及相关存储装置 (Method for improving read retry of flash memory, controller and related memory device ) 是由 杜建东 蔡璧如 杨宗杰 于 2019-02-12 设计创作,主要内容包括:本发明公开了一种管理闪存模块的多个存储单元的方法。所述方法包括:针对每一第一存储单元的数据写入时间建立对应于所述第一存储单元的编程时戳;根据所述第一存储单元的所述编程时戳,选择相对应的读取重试表来对所述第一存储单元进行读取操作;以及根据已写入数据的第一存储单元的编程时戳,执行第一刷新操作。通过周期性地对已写入数据的第一存储单元进行刷新,并且在每个使用历程中执行前一个使用历程中有写入的存储单元,本发明能够有效地减少所需的读取重试表的数量。此外,通过周期性地选择第二存储单元的部分进行错误检查,本发明能够更好地保证读读取重试表的数量在减少后仍能有效率地进行读取重试,进而改善读取重试的效率。(The invention discloses a method for managing a plurality of memory cells of a flash memory module. The method comprises the following steps: establishing a programming time stamp corresponding to each first storage unit for a data write time of the first storage unit; selecting a corresponding read retry table to perform a read operation on the first storage unit according to the programming timestamp of the first storage unit; and executing a first refresh operation according to the programming time stamp of the first memory cell in which the data is written. By periodically refreshing the first memory cell to which data has been written and executing the memory cell written in the previous usage history in each usage history, the present invention can effectively reduce the number of read retry tables required. In addition, by periodically selecting the part of the second storage unit for error check, the invention can better ensure that the read retry can be efficiently performed after the number of the read retry tables is reduced, thereby improving the efficiency of the read retry.)

改善闪存的读取重试的方法、控制器以及相关存储装置

技术领域

本发明关于闪存,尤其关于一种用于改善闪存的读取重试的方法与相关控制器及相关存储装置。

背景技术

近年来,闪存的使用越来越普及,尤其在各类行动装置上。原因在于,闪存相较于其他的现有存储装置,具有高速、高密度与非挥发性等特点。然而,尽管闪存具备上述的诸多优点,但仍存在不得不正视的缺陷,那就是使用寿命与数据保存性(Data Retention)。闪存中的存储单元(如,区块),常会在一定次数的使用后,发生错误,造成无法读出正确的数据。其中,造成错误的原因主要与抹写次数(Program/Erase Cycles)与数据存储时间有关。通常来说,闪存在历经越多的抹写次数后,或者是在长时间未更新存储数据时,都有更高的错误发生机率。因此,控制器往往需要对闪存进行读取重试,通过调整读取电压,来提高正确读出数据的机会。但读取重试的过程中,可能会根据上述的抹写次数与数据存储时间等变因,尝试多种不同的读取电压组合,以正确读出数据。然而,这样的过程会增加延迟,降低读取效率。

发明内容

有鉴于上述所提到的问题,本发明公开一种闪存装置的管理机制,从而改善读取重试。其中,本发明的方法通过定期地刷新闪存中的存储单元中所存储的数据,减少数据存储时间对读取重试的影响。也就是说,存储单元中的数据的存储时间都在一个较小的范围内变动,所以可以有效地降低读取重试中读取电压的调整幅度。另一方面,本发明也加入错误检查机制,针对错误率过高的存储单元,进行有条件的刷新,如此也可以减轻读取重试操作的负担。

本发明的一实施例公开一种管理一闪存模块中的多个存储单元的方法。所述方法包括:针对每一第一存储单元的数据写入时间建立一个对应于所述第一存储单元的一编程时戳;根据所述第一存储单元的所述编程时戳,选择相对应的一读取重试表来对所述第一存储单元进行一读取操作;以及根据已写入数据的第一存储单元的编程时戳,执行一第一刷新操作。

本发明的一实施例公开一种管理一闪存的多个存储单元的控制器。所述控制器包括:一存储单元以及一处理单元。所述存储单元用以存储一程序码。所述处理单元耦接于所述存储单元,用以从所述存储单元中读取所述程序码,以执行所述程序码,从而进行以下操作:针对每一第一存储单元的数据写入时间建立一个对应于所述第一存储单元的一编程时戳;根据所述第一存储单元的所述编程时戳,选择相对应的一读取重试表来对所述第一存储单元进行一读取操作;以及根据已写入数据的第一存储单元的编程时戳,执行一第一刷新操作。

本发明的一实施例公开一种存储装置。所述存储装置包括:一闪存模块与一控制器。所述闪存模块包括多个存储单元。所述控制器用以对闪存模块进行存取,包括:一存储单元与一处理单元。所述存储单元用以存储一程序码。所述处理单元耦接于所述存储单元,用以从所述存储单元中读取所述程序码,以执行所述程序码,从而进行以下操作:针对每一第一存储单元的数据写入时间建立一个对应于所述第一存储单元的一编程时戳;根据所述第一存储单元的所述编程时戳,选择相对应的一读取重试表来对所述第一存储单元进行一读取操作;以及根据已写入数据的第一存储单元的编程时戳,执行一第一刷新操作。

附图说明

图1绘示本发明实施例的相关存储装置、控制器与闪存模块的架构。

图2解释本发明如何选择读取重试表。

图3解释本发明如何针对第一存储单元进行第一刷新操作。

图4绘示本发明实施例中的读取重试表的选择与第一刷新操作的执行的相关流程图。

图5绘示本发明实施例中的第二刷新操作的流程图。

图6解释本发明实施例中的错误检查对于第二子存储单元的选择方式。

图7解释本发明实施例中的第一刷新操作与第二刷新操作的关联。

其中,附图标记说明如下:

100 存储装置

120 控制器

122 处理单元

124 存储单元

130 闪存模块

130_1~130_N 闪存芯片

UNT1~UNTM 第一存储单元

SUNT1~SUNTQ 第二存储单元

SSUNT1~SSUNTZ 第二子存储单元

410~430、510~530 步骤

200 主机

具体实施方式

在以下内文中,描述了许多具体细节以提供阅读者对本发明实施例的透彻理解。然而,本领域的技术人士将能理解,如何在缺少一个或多个具体细节的情况下,或者利用其他方法或组件等来实现本发明。在其他情况下,众所皆知的结构、材料或操作不会被示出或详细描述,从而避免模糊本发明的核心概念。

此外,说明书内文给出的任何范例或者阐释,不应被其中使用的任何词汇所限制或者定义。相反地,这些范例或阐释应当被认为是针对一个特定实施例进行描述的,并且仅作为说明。本领域的技术人员将可理解,这些范例或阐释使用的任何词汇将可涵盖在本说明书中其他地方给出的其他实施例。其中,用以指出这些非限制性范例的用词包括但不限于:“例如”、“如”、“举例来说”、“在一个实施例中”以及在“在一范例中”。

说明书内的流程图中的流程和方块示出了基于本发明的各种实施例的系统、方法和计算机软件产品所能实现的架构,功能和操作。在这方面,流程图或功能方块图中的每个方块可能代表程序码的模块,区段或者是部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。另外,功能方块图以及/或流程图中的每个方块,以及方块的组合,基本上可以由执行指定功能或动作的专用硬件系统来实现,或专用硬件和计算机程序指令的组合来实现。这些计算机程序指令还可以存储在计算机可读媒体中,所述媒体可以使计算机或其他可编程数据处理装置以特定方式工作,使得存储在计算机可读媒体中的指令,实现流程图以及/或功能方块图中的方块所指定的功能/动作。

图1为本发明实施例的示意图。如图所示,存储装置100包括一控制器120与一闪存模块130,并且受控于一主机(host device)200(存储装置100甚至可能为主机200的一部份)。主机200可包括至少一个中央处理器(未显示),并通过运作一个操作系统与应用程序来控制主机200的运作,并与周边装置(未显示)连动。而存储装置100可用来提供存储空间给主机200,存储运作操作系统与各种应用程序所必需的程序码与数据。主控装置50的范例可包括:多功能移动电话(multifunctional mobile phone)、平板计算机(tablet)、可穿戴装置(wearable device)以及个人计算机(personal computer)例如桌面计算机或笔记本电脑。存储装置100的例子可包括(但不限于):固态硬盘(solid state drive,SSD)以及各种嵌入式(embedded)存储装置(例如符合UFS或EMMC规格的嵌入式存储装置)。

控制器120可用来存取(access)闪存模块130。在一个实施例中,闪存模块130可能是一立体NAND型闪存(3D NAND-type flash),并可包括至少一个闪存芯片(Flash memorychip),但此非本发明的限制。每一个闪存芯片包括多个区块(Block),控制器120对闪存模块130进行数据抹除的操作是以区块为单位来进行。另外,一个区块可记录特定数量的数据页(Page),而控制器120对闪存模块130进行数据写入的操作是以数据页为单位来进行写入。

控制器120可能包括处理电路例如微处理器122、与存储单元124,例如只读存储器(Read Only Memory,ROM),只读存储器124主要用来存储程序码与特定数据,而微处理器122则用来执行程序码以控制对闪存模块130的存取。另外,控制器120可能还包括有其他的接口逻辑、控制逻辑以及缓冲器等等,用以辅助实现下文所述的各种操作。然而,为求说明书的简洁,在此省略不提。本领域的技术人士在阅读下文后,应能知晓如何运用已知的电路与文中揭露的电路组件与架构结合,从而实现本发明实施例中所提及的各式操作与相关应用。

在本实施例中,主机200可通过传送主控命令(host command)与相应的逻辑地址给控制器120,从而间接地存取存储装置100。控制器120接收主控命令(读取或写入命令)与逻辑地址,并且将主控命令转译成存储器操作命令,再以操作命令控制闪存模块130读取、写入、编程(program)、或抹除(erase)闪存模块130当中特定物理地址的存储单元(memoryunit)或数据页(page)、或区块(block)。再者,控制器120也会执行程序码1242C,以及/或参考存储单元124内的数据,从而执行一连串的操作来实现下文中将提到的特定操作。

针对读取操作,若控制器120无法在一次读取操作中读取出正确的数据时,控制器120便会读取存储在存储单元124中的一个或多个读取重试表,根据读取重试表中记载的读取电压,控制闪存模块130以不同的读取电压来读取数据,从而正确地读出主机200所需要的数据。

在本发明中,控制器120对于读取重试表的选择与数据保存时间有关。控制器120会针对闪存模块130中每个第一存储单元的写入操作所对应的时间信息建立起对应所述第一存储单元的编程时戳。当后续主机200发出读取命令时,控制器120会根据编程时戳中的信息与系统时间来选择读取重试表。在一实施例中,所述第一存储单元可能为一超级区块(super block)。

请进一步参考图2的范例。在所述范例中,假设闪存模块130包括有第一存储单元UNT1~UNTM(此非本发明的限制),并且,在使用历程P1中有数据写入第一存储单元UNT1、在使用历程P2中有数据写入第一存储单元UNT2,以及在使用历程P3有数据写入第一存储单元UNT3。那么,如果在使用历程P1内,当主机200发出读取命令要求读取第一存储单元UNT1中的数据时,则控制器120会使用重试表读取RTAB1进行读取。如果在使用历程P2内,当主机200发出读取命令要求读取第一存储单元UNT1中的数据时,则控制器120会使用读取重试表读取RTAB2进行读取,以及使用历程P2内,针对第一存储单元UNT2中的数据的读取操作会使用读取重试表RTAB1进行读取。如果在使用历程P3内,主机200发出读取命令要求读取第一存储单元UNT1、第一存储单元UNT2与第一存储单元UNT3中的数据时,则控制器120会分别使用读取重试表RTAB3、RTAB2与RTAB1进行读取。其中,读取重试表RTAB3、RTAB2与RTAB1依序适于读取由长到短的数据保存时间的数据。

在一实施例中,为了减少读取重试表的数量,从而提高读取重试的效率,控制器120会针对闪存模块130中的第一存储单元对应的编程时戳进行全局性质且周期性进行的一第一刷新操作。请参考图3的范例以进一步了解本发明的第一刷新操作的运作原理以及影响。如图所示,假设闪存130包括有第一存储单元UNT1~UNTM(此非本发明的限制)。而控制器120会在存储单元124中维持一个刷新列表RLIST,记录每个第一存储单元对应的编程时戳,并根据新旧来排序,进行刷新。

假设,在使用历程P1中,第一存储单元UNT1与UNT4被写入数据;使用历程P2中,第一存储单元UNT2与UNT5中被写入数据;以及使用历程P3中,第一存储单元UNT6与UNT8中被写入数据。接着,控制器120会在当前使用历程中,对前一个使用历程中有写入数据的第一存储单元进行刷新,并且在当前使用历程结束前完成。如本实施例中,控制器120在使用历程P2中,控制器120根据刷新列表RLIST的顺序,针对在前一个使用历程P1中被写入数据的第一存储单元UNT1与UNT4,进行刷新并在使用历程P2结束前完成刷新操作;在使用历程P3中,控制器120根据刷新列表RLIST的顺序,针对在前一个使用历程P2中被写入数据的第一存储单元UNT2与UNT5,进行刷新并在使用历程P3结束前完成刷新操作。在使用历程P4中,控制器120根据刷新列表RLIST的顺序,针对在前一个使用历程P3中被写入数据的第一存储单元UNT6与UNT8,进行刷新并在使用历程P4结束前完成刷新操作。另外,由刷新操作新写入的第一记忆单元也会在下一个使用历程中被刷新。例如,假设在使用历程P2中,针对第一存储单元UNT1与UNT4的刷新操作,将数据搬移到了第一存储单元UNT3与UNT7中,那么在使用历程P3中,第一存储单元UNT3与UNT7中也会被刷新,以此类推。

如此一来,闪存模块130中任何的第一存储单元的数据保存时间,最长只有两个使用历程的长度(假设刷新最迟在一个使用历程结束时才完成)。因此,控制器120的存储单元124中只需要存储两个读取重试表RTAB1与RTAB2,就可以涵盖所有因存储时间过长而造成的读取错误。举例来说,如果在使用历程P2中,打算读取第一存储单元UNT1中的数据时,若此时第一存储单元UNT1中的数据已通过上述的刷新操作搬移到第一存储单元UNT3中时,则只需要用读取重试表RTAB1进行读取;同样在使用历程P2中,打算读取第一存储单元UNT4中的数据时,若此时第一存储单元UNT4中的数据未被刷新,则需要用读取重试表RTAB2进行读取。

以上的第一刷新操作与读取重试表的选择可归纳为图4所示的流程,包括有以下步骤:

步骤410:针对每一第一存储单元的数据写入时间建立一个对应于所述第一存储单元的一编程时戳;

步骤420:根据所述第一存储单元的所述编程时戳,选择相对应的一读取重试表来对所述第一存储单元进行一读取操作;以及

步骤430:根据已写入数据的第一存储单元的编程时戳,执行一第一刷新操作。

由于步骤410~430是由前述实施例中介绍的操作简化而来,故此处不再重复说明。

在一实施例中,为了增加数据的可靠度,以及保证读取重试的成功率,会在第一刷新操作之外,额外进行一个第二刷新操作。其中,第二刷新操作的流程如图5所示,包括有以下步骤:

步骤510:针对已写入数据的第二存储单元中每一者的至少一部份进行一错误检查;以及

步骤520:当所述错误检查的结果指出一错误位数量大于一临界值时,读取出包括所述第二存储单元的一第一存储单元所存储的数据,并将所述数据校正后写入至另一第一存储单元;以及

步骤530:建立所述另一第一存储单元的一编程时戳。

请进一步搭配图6的说明,以进一步了解本发明实施例如何进行第二刷新操作。如图所示,闪存130可能包括有多个大小相同的第二存储单元SUNT1、SUNT2、…与SNTQ。而每个存储单元SUNT1~SUNTQ可能又包括有数量相同的第二子存储单元SSUNT1~SSUNTZ。

在步骤510中,控制器120会对每个第二存储单元SUNT1~SUNTQ的至少一部份进行错误检查。其中,在一实施例中,控制器120单元可能会从第二存储单元SUNT1选出第二子存储单元SSUNT1、在第二存储单元SUNT2选出第二子存储单元SSUNT2、….以及在第二存储单元SNTQ选出第二子存储单元SSUNTQ进行错误检查。这样的选取方式是为了避免造成取样不均匀。例如,如果在每个第二存储单元中都选择子存储单元SSUNT1或子存储单元SSUNTQ进行检查,则可能因为相同编号的子存储单元在物理结构上接近,具有相似的物理特性,而忽略了其他物理特性不同且容易造成错误的存储单元。在一实施例中,第二存储单元SUNT1~S UNTP可能为超级数据页(super pages),而第二子存储单元SSUNT1~SSNTQ可能为数据页。

在本发明中,第二刷新操作是具有条件性,也就是只有当被选择出的第二子存储单元无法通过错误检查时,控制器120才会针对包括所述第二存储单元进行第二刷新操作。在步骤520中,控制器120是通过检查选择出的第二子存储单元的错误位数目是否超过一临界值,来决定是否通过错误检查。若当所述错误检查的结果指出一第二存储单元的至少一部份的错误位数量大于一临界值时,则控制器120读取出包括所述第二存储单元的第一存储单元中所存储的数据,并将所述数据校正后写入至另一第一存储单元。也就是说,若检查出一个超级数据页中某一个数据页的错误位数目过高,则会刷新包括所述第二超级数据页的一第一超级区块的数据。并且在步骤530中,建立所述第一存储单元的一编程时戳。此即为本发明的第二刷新操作。

在本实施例中,需要被刷新的第一存储单元会被插入至控制器120的存储单元124中所存储的刷新清单RLIST的排序中。请参考图7的说明。如图7所示,控制器120原本按照刷新清单RLIST进行第一刷新操作,针对UNT2、UNT3、UNT4与UNT6的顺序周期性地进行。并且,也同时周期性地进行错误检查。然而,当控制器120在时间点T1中发现某个被检查的第二存储单元SUNT2无法通过检查时,则会在刷新清单RLIST中插入相应的于包括有第二存储单元SUNT2的第一存储单元UNT3的刷新操作的第二刷新操作,并在时间点T2,执行针对第一存储单元UNT3中的数据的刷新操作。

如上所述,本发明通过了周期性对已写入数据的第一存储单元(如:超级区块)进行刷新。并且在每个使用历程中,执行前一个使用历程中有写入的存储单元,从而有效地减少所需的读取重试表的数量。并且,通过周期性地选择第二存储单元的部分(如:数据页)进行错误检查,从而更好地保证读读取重试表的数量在减少后仍能有效率地进行读取重试。如此一来,便能改善读取重试的效率。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:补偿非易失存储元件编程时电荷流失与源极线偏置的方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!