一种基于高密度闪存的多编码实现方法



1.本发明涉及闪存性能技术领域,特别是涉及一种基于高密度闪存的多编码实现方法。


背景技术:



2.3d nand型闪存具有高密度、低成本和轻便的优势,因而作为固态驱动器(ssd)中重要的存储介质。在过去的十年中,其发展主要包括两个方面:首先,堆叠层数显著增加,从早期的24层增加到最先进的220+层。其次,每个存储单元中能够存储的比特数从每单元1位增加到最近的每单元4位。基于大量调查,一个块中能够实现更多的层以及每个存储元中存储更多的位仍然在闪存供应商的路线图上。例如,已经宣布每个存储单元中存放5位的plc闪存和6位的hlc闪存。这些方法可以显著提高存储密度,并降低生产成本。然而,这类高密度和低成本的闪存面临着两个关键问题,可靠性和性能下降,这阻碍了其进一步发展。
3.先前的工作提出了一种两步编程(two-step programming,tsp)算法来改善闪存写性能。相比于更早提出的单步编程(one-step programming,osp)算法,tsp算法更可靠。tsp算法包括第一步的粗粒度编程和第二步的细粒度编程。以qlc闪存为例,在第一步编程中,字线中的存储单元被编程为中间的16级状态。将相邻的字线编程到中间状态后,当前字线上的存储单元被编程为最终状态。在这种情况下,字线之间的干扰可以被最小化。然而,上述基本的tsp编程算法引入了较高的编程延迟。为了提高编程效率,之前的工作提出通过加速第一步编程来降低整体的编程延迟,并提出了几种优化的tsp方案。如使用tsp(n,m)来表示不同的tsp算法,其中n和m分别是第一步和第二步的编程状态的数量,包括tsp(16,16)、tsp(8,16)和tsp(4,16)。其中tsp(4,16)的编程时间最小。然而,不同的tsp方案支持不同的格雷码,这与读性能高度相关。使用gc(a,b,c,d)来表示不同的格雷码,其中a,b,c和d是在qlc闪存中读取四页所需的参考电压数。
4.下述表1显示了qlc闪存的格雷码电压级别分布以及不同格雷码下页面对应的参考电压数:
5.表1 qlc闪存的格雷码电压级别分布
[0006][0007]
下述表2为对比不同格雷码的读写性能以及所支持的tsp算法:
[0008]
表2不同的格雷码对比
[0009][0010]
在所有的tsp算法中,tsp(16,16)可以支持任何格雷码,如gc(3,4,4,4)。tsp(8,16)支持gc(1,2,4,8),tsp(4,16)支持gc(1,2,6,6)。带有gc(1,2,6,6)的tsp(4,16)在四页之间的读性能不平衡,称为非平衡格雷码(unbalanced gray-code,ugc),带有gc(3,4,4,4)的tsp(16,16)下,四个页面的读性能相当,称为平衡格雷码(balanced gray-code,bgc)。然而,具有较高写性能的tsp(4,16)只能支持读性能较差的ugc,而具有较高读性能的bgc只能使用写性能较差的tsp(16,16)。除此之外,ugc编码下的部分页面将对可靠性更为敏感。
[0011]
综上所述,在高密度闪存中,虽然编程性能提升了,但是读性能得不到保障。因此,对于现有的编程算法以及支持的格雷码,无法实现读写性能的双重获利。本发明从编码的角度出发,对不同访问特征的数据采用不同的格雷码,将有效实现读写性能最优化。


技术实现要素:



[0012]
本发明的目的是针对现有技术的不足而提供一种基于高密度闪存的多编码实现方法,采用对不同操作的数据以及不同访问热度的数据进行格雷码仲裁的方法,对于初次写入的数据采用读性能较好的格雷码来提升读性能,对于更新的数据则采用编程性能较好的格雷码来提升写性能。通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁,并结合数据的访问特征,对热数据进行适当地格雷码转换,以提升读写性能,实现了高密度闪存读写性能的优化。
[0013]
实现本发明目的的具体技术方案是:一种基于高密度闪存的多编码实现方法,其特点是在闪存控制器中设置包括数据的初始格雷码仲裁方法和热读数据格雷码仲裁方法的仲裁机制,通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁,对于初次写入的数据通过在映射表中添加单个比特位来标记格雷码类型,采用读性能较好的格雷码来提升读性能;采用编程性能较好的格雷码来提升写性能;对于热数据数据则进一步进行格雷码的仲裁,将其迁移到读性能更好的页面上,实现高密度闪存读写性能的优化。
[0014]
所述闪存控制器中设置包括数据的初始格雷码仲裁方法和热读数据格雷码仲裁方法的仲裁机制是通过闪存阵列中的每个plane内部添加编码和解码两套硬件电路,实现数据在不同的格雷码下进行数据的编码和解码过程,所述格雷码仲裁方法通过对数据的多编码方式进行仲裁,对热读的数据采用平衡格雷码,热写数据则采用非平衡格雷码,对于每一种格雷码,选取所能支持的最优编程算法,实现读写性能最优化。
[0015]
所述多编码指的是基于高密度闪存使用的平衡格雷码和非平衡格雷码;所述平衡格雷码是单个字线中各个页面读取时,所需要的参考电压次数较为均衡;所述而非平衡格雷码是指单个字线中各个页面之间读取时所需参考电压次数差异较大,实现对数据写入或者更新时,仲裁相应格雷码进行编码。
[0016]
所述格雷码仲裁方法通过对热读数据采用整体可靠性较好的平衡格雷码bgc来保障读性能;对热写数据采用编程速度较快的编程算法所支持的非平衡格雷码ugc来保障写性能;初次写入的数据采用读性能较好的格雷码所支持的编程算法进行写入,而对于更新
的数据则采用编程性能较好的编程算法来提升写性能。
[0017]
本发明通过对现有的单一格雷码进行分析,深入探索每一种格雷码各自的优缺点,实验发现可实现快速编程的算法所支持的格雷码读性能较差且不稳定,而能够实现读性能较好的格雷码却只能通过写性能较差的编程算法来支持。针对该问题,首先,在闪存控制器中添加多套控制电路来支持不同的格雷码。其次,在闪存传输层中添加格雷码仲裁机制,包括数据的初始格雷码仲裁方法和热读数据的格雷码仲裁方法,该方法通过对数据的编码方式进行仲裁,并结合数据的局部性访问特征,从而实现读写性能的最优化。本发明的基本思想是将热读数据采用具有较好读性能的格雷码,而热写数据则采用快速编程算法所支持的格雷码。基于上述思想,本发明权衡了读写性能,相对于最先进的编码方式,优化了闪存读性能。
[0018]
本发明与与现有技术相比具有较高的读、写性能,通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁,并结合数据的访问特征,对热数据进行适当地格雷码转换,以提升读写性能,实现了高密度闪存读写性能的优化,热读数据采用更为可靠的编码来提升读性能,而热写的数据则采取编程性能较高的编码来提升写性能。
附图说明
[0019]
图1为本发明架构图;
[0020]
图2为闪存控制器中启用多种格雷码示意图。
具体实施方式
[0021]
本发明采用在闪存控制器中中添加格雷码仲裁机制,包括数据的初始格雷码仲裁方法和热读数据的格雷码仲裁方法。通过在映射表中添加单个比特位来识别格雷码类型,通过lru链表来判别热读数据。
[0022]
所述格雷码仲裁方法采用的多编码指的是基于高密度闪存使用的平衡格雷码(balanced gray-code,bgc)和非平衡格雷码(unbalanced gray-code,ugc)。其中,平衡格雷码指的是单个字线中各个页面读取时,所需要的参考电压次数较为均衡。而非平衡格雷码则是指单个字线中各个页面之间读取时所需参考电压次数差异较大。以qlc闪存为例,格雷码gc(3,4,4,4)为平衡格雷码,而格雷码gc(1,2,4,8),格雷码gc(1,2,6,6)则为非平衡格雷码。
[0023]
所述格雷码仲裁方法通过对热读数据采用整体可靠性较好的平衡格雷码bgc来保障读性能。而对热写数据则采用编程速度较快的编程算法所支持的非平衡格雷码ugc来保障写性能。基于上述基本思想,将初次写入的数据采用读性能较好的格雷码所支持的编程算法进行写入,而对于更新的数据则采用编程性能较好的编程算法来提升写性能。从而在保障写性能的同时,极大地提升了读性能。
[0024]
所述格雷码仲裁方法的关键在于如何在控制器内部支持多种格雷码机制。闪存控制器内部能够支持多种类型的格雷码。为此,需要添加两套编码和解码部件。其中,编码部件指的是在数据写入的时候,通过确定的格雷码类型,能够获取到相应格雷码下的阈值电压值。以qlc闪存为例,一个存储单元中的四位可通过16种阈值电压值来表示相应的比特值。然而对于同一种比特值,在不同的格雷码下所使用的阈值电压值不同。为此,编码部件
主要负责不同格雷码之间的阈值电压翻译功能。对于解码部件,在读取数据时,通过获得的格雷码类型,提供相应的参考电压序列,从而实现对应格雷码下的数据页面读取。实现对数据写入或者更新时,仲裁相应格雷码进行编码。另外,需要对热读数据进行格雷码的切换。总的来说,通过在闪存阵列中的每个plane内部添加两套硬件电路,主要更新的部件为编码部件和解码部件,从而实现数据在不同的格雷码下进行数据的编码和解码过程。
[0025]
所述格雷码仲裁方法对热读的数据采用平衡格雷码,而热写数据则采用非平衡格雷码。从而能够实现读写性能最优化。其中,对于每一种格雷码,选取所能支持的最优编程算法。通过大量的研究和实验表明,目前已有的两步编程算法(two-step programming,tsp)中,具有较好的编程性能的编程算法无法支持更可靠的格雷码;而可靠的格雷码却只能通过次优的编程算法来实现。为了获得读写性能的双重保障,本发明致力于将数据的访问特征与格雷码类型相结合,通过数据的格雷码仲裁,实现读写性能的最优化。本发明中以目前编程速度最快的两步编程算法tsp(4,16)所支持的格雷码gc(1,2,6,6)和具有整体最优读性能的格雷码gc(3,4,4,4)和其对应的两步编程算法tsp(16,16)作为默认的非平衡格雷码和平衡格雷码。
[0026]
所述对热读的数据采用平衡格雷码,热写数据则采用非平衡格雷码。对于数据的访问次数进行记录,从而实现热读的数据迁移至采用非平衡格雷码的字线中的低延迟页面上,从而实现读性能的进一步提升。
[0027]
现有技术的编码方案是基于编码位信息与对应电压状态之间的预定义映射对数据进行编程。在编程过程中,如果一个存储元上的验证操作成功,则表明该存储元已达到所需的电压状态,并将其排除在之后的编程步骤之外。例如,对于带有格雷码gc(1,2,6,6)的两步编程算法tsp(4,16),待写入的数据是根据编码位信息和电压状态之间的映射应该根据格雷码的类型来确定。要启用此过程,应该在闪存控制器上维护两个编码映射表。这两个表旨在记录格雷码gc(1,2,6,6)和格雷码gc(3,4,4,4)与其对应的电压状态之间的映射。如果数据用tsp(4,16)编程,则数据由格雷码gc(1,2,6,6)编码。然后,将相应的验证电压添加到位线中。否则,采用格雷码gc(3,4,4,4)进行编码。最后,将编程电压vpp加入到字线中。另一个编程步骤与传统的编程方案相同。除了编程之外,读操作也不同于单一的格雷码方法。这两个格雷码使用不同的参考电压来感知存储元。与写入过程类似,在闪存控制器上应该维护另外两个用于解码的映射表。这两个表旨在记录格雷码gc(1,2,6,6)和格雷码gc(3,4,4,4)与其对应的参考电压之间的映射。在读操作中,根据格雷码的类型,使用相应的参考电压来感知闪存单元。本发明在块级启用,这意味着每个块支持一种类型的格雷码。本发明也可以在不同的级别上启用,如字线级别、芯片级别等。实现的基本思想是一致的。
[0028]
本发明通过对现有的单一格雷码进行分析,深入探索每一种格雷码各自的优缺点。实验发现可实现快速编程的算法所支持的格雷码读性能较差且不稳定,而能够实现读性能较好的格雷码却只能通过写性能较差的编程算法来支持。针对该问题,首先,在闪存控制器中添加多套控制电路来支持不同的格雷码。其次,在闪存传输层中添加格雷码仲裁机制,包括数据的初始格雷码仲裁方法和热读数据的格雷码仲裁方法。所述格雷码仲裁方法方法通过对数据的编码方式进行仲裁,并结合数据的局部性访问特征,从而实现读写性能的最优化。本发明的基本思想是将热读数据采用具有较好读性能的格雷码,而热写数据则采用快速编程算法所支持的格雷码。基于上述思想,本发明权衡了读写性能,相对于最先进
的编码方式,优化了闪存读性能。通过对数据的格雷码进行仲裁,并结合数据的访问特征,对热数据进行适当地格雷码转换,将有效提升读写性能。
[0029]
以下通过具体实施对本发明作进一步的详细说明。
[0030]
实施例1
[0031]
参阅图1,本发明为多编码实现架构图,在闪存控制器中增加了两个新组件,即初始格雷码仲裁机制和热读数据仲裁机制,该仲裁机制是通过闪存阵列中的每个plane内部添加编码和解码两套硬件电路,实现数据在不同的格雷码下进行数据的编码和解码过程,具体实施包括下述步骤:
[0032]
1)在每个plane内部维护两个以块粒度的写入头,每个写入头对应一种类型的格雷码。
[0033]
2)当数据为初次写入时,将其采用bgc进行编码;当数据为更新的数据时,则采用ugc进行编码。
[0034]
3)当数据被访问时,记录其访问次数。对于访问频繁的数据则进一步考虑迁移到到更可靠的页面。此时,如果发现当前数据的访问次数超过阈值,那么立即对其标记,并准备迁移。
[0035]
4)在迁移过程中,如果是迁移到bgc中,那么只需要集齐一个字线大小的热数据,就可以编程写入。而如果需要编程写入到ugc中,那么需要主动寻另外的冷数据,并将其与当前热数据结合后进行迁移。
[0036]
5)当所有数据准备就绪,就进行编程。编程时需要根据具体的编程算法选取相应的翻译电路,从而获取相应的编程电压。
[0037]
上述格雷码仲裁机制依据的原则主要有两个,一个是数据是否为首次写入,另一个是数据的访问次数。其中,对于数据是否为首次写入,可以通过查询地址映射表时确定,而数据的访问次数则通过在映射表中添加两个比特位来标识,并且采用lru链表来判别在一段时间内的数据访问情况,从而更为准确地识别数据的热度。采用上述实施方式,格雷码的仲裁过程所带来的额外开销可忽略不计。
[0038]
参阅图1,硬件修改主要在闪存控制器上添加了两对映射表(信息编码器和解码器)。此外,电路逻辑还需要映射表来进行数据编码和解码。从以前的工作来看,一个映射表的成本不超过整个区域的0.07%,本发明所提出的设计使成本翻了一倍,这在3d nand闪存芯片中仍然可以忽略不计。
[0039]
本发明通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁。具体来说,对于初次写入的数据采用读性能较好的格雷码来提升读性能,对于更新的数据则采用编程性能较好的格雷码来提升写性能。而对于热数据数据则进一步进行格雷码的仲裁,迁移到读性能更好的页面上。以qlc闪存作为默认的存储器进行探索,也可以很容易地扩展到其他类型的高密度闪存。本发明实现了高密度闪存读写性能的优化。数据应该提前缓存在dram中,并在它们准备就绪时将它们编程到闪存芯片上。上述设计有几个好处:首先,如果数据是只读的,它们可以直接使用bgc编码以进行读性能优化。其次,一旦数据是频繁更新的,它们在更新时则采用tsp(4,16)以及ugc进行编码,以用于写性能优化。本发明采用目前编程速度最快的两步编程算法tsp(4,16)所支持的格雷码gc(1,2,6,6)和具有整体最优读性能的格雷码gc(3,4,4,4)和其对应的两步编程算法tsp(16,16)作为默认的非平衡格雷码
和平衡格雷码。
[0040]
所述初始格雷码仲裁的基本过程如下:考虑到数据访问特征在第一次写入时是未知的,本发明提出了一个初始的格雷码仲裁方案,其基本设计思想是第一次写入使用bgc,以后的更新使用ugc。最初,数据是用bgc进行编程,一旦数据被更新,将用ugc进行编程。上述设计的原因如下:首先,由于在第一次写时访问特征未知,因此使用bgc编程有利于保障读性能。其次,唯一的影响是第一次编写时的编程性能。但是,一旦数据被更新,就可以使用ugc加快其速度。由于写操作可以通过缓存优化,因此对写性能的影响较小。
[0041]
参阅图1,数据应该提前缓存在dram中,并在它们准备就绪时将它们编程到闪存芯片上。上述设计有几个好处:首先,如果数据是只读的,它们可以直接使用bgc读取以进行读性能优化。其次,一旦数据是只写的,它们就可以用ugc进行更新,以用于写性能优化。注意,本发明中以目前编程速度最快的两步编程算法tsp(4,16)所支持的格雷码gc(1,2,6,6)和具有整体最优读性能的格雷码gc(3,4,4,4)和其对应的两步编程算法tsp(16,16)作为默认的非平衡格雷码和平衡格雷码。
[0042]
参阅图2,所述热读数据的格雷码转换机制如下:与写入不同的是,具有读取的数据应该根据其热度正确放置。本发明提出了热读数据转换,其中包括两个方面:1)基于ugc的块的tsb或msb页面上的热读数据;2)基于bgc的块页面上的热读数据。对于第一种情况,如果来自基于ugc的块的tsb或msb页面的数据被读取超过t
ur
或由于可靠性低而重读,它们应该转移到基于bgc的块中进行读性能优化。在这种情况下,这些数据首先被缓存在ssd控制器的dram中。当四页数据被缓存时,它们将用bgc编码并一次性写入。在编程过程中,它们可以与上述首次编写的数据结合组成一个字线粒度,以避免dram中长时间等待时间。对于第二种情况,如果基于bgc的块的页面上的数据经常被读取,并且超过阈值t
br
,则这些数据可以传输到基于ugc的块的lsb或csb页面,以进一步读性能优化。
[0043]
上述设计的一个关键问题是确定t
ur
和t
br
两个阈值。t
ur
是基于ugc块上数据迁移的阈值,而t
br
是基于bgc块上数据迁移的阈值。首先,t
ur
被设计为确定从基于ugc的块的tsb或msb页面到基于bgc的块的转换的阈值。t
ur
被设置为1,以避免在这两种类型的页面上的读取带来的读性能下降。也就是说,一旦读取了这两种类型的页面上的数据,它们就会被立即迁移并采用bgc进行编码。其次,t
br
被设计用来确定从基于bgc的块的页面到基于ugc的块的lsb或csb页面的转换的阈值,以便于进一步的读性能优化。t
br
值的选取不能过大也不能过小,若t
br
设置过大,读性能优化的机会较小。对于t
br
设置过小,可能会发生许多转换,从而引入大量额外的写操作,本发明中t
br
设置权衡了性能和迁移开销。本发明结合上述两个设计,实现热读数据采用更为可靠的编码来提升读性能,而热写的数据则采取编程性能较高的编码来提升写性能。
[0044]
以上只是对本发明作进一步的说明,并非用以限制本专利,凡为本发明等效实施,均应包含于本专利的权利要求范围之内。

技术特征:


1.一种基于高密度闪存的多编码实现方法,其特征在于闪存控制器中设置包括数据的初始格雷码仲裁方法和热读数据格雷码仲裁方法的仲裁机制,通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁,对于初次写入的数据通过在映射表中添加单个比特位来标识格雷码类型,采用读性能较好的格雷码来提升读性能;采用编程性能较好的格雷码来提升写性能;对于热数据则进一步进行格雷码的仲裁,将其迁移到读性能更好的页面上,实现高密度闪存读写性能的优化。2.根据权利要求1所述的基于高密度闪存的多编码实现方法,其特征在于所述闪存控制器中设置包括数据的初始格雷码仲裁方法和热读数据格雷码仲裁方法的仲裁机制是通过闪存阵列中的每个plane内部添加编码和解码两套硬件电路,实现数据在不同的格雷码下进行数据的编码和解码过程,所述格雷码仲裁方法通过对数据的多编码方式进行仲裁,对热读的数据采用平衡格雷码,热写数据则采用非平衡格雷码,对于每一种格雷码,选取所能支持的最优编程算法,实现读写性能最优化。3.根据权利要求2所述的基于高密度闪存的多编码实现方法,其特征在于所述多编码指的是基于高密度闪存使用的平衡格雷码和非平衡格雷码;所述平衡格雷码是单个字线中各个页面读取时,所需要的参考电压次数较为均衡;所述而非平衡格雷码是指单个字线中各个页面之间读取时所需参考电压次数差异较大,实现对数据写入或者更新时,选择合适的格雷码进行编码。4.根据权利要求1或权利要求2所述的基于高密度闪存的多编码实现方法,其特征在于所述格雷码仲裁方法通过对热读数据采用整体可靠性较好的平衡格雷码bgc来保障读性能;对热写数据采用编程速度较快的编程算法所支持的非平衡格雷码ugc来保障写性能;初次写入的数据采用读性能较好的格雷码所支持的编程算法进行写入,而对于更新的数据则采用编程性能较好的编程算法来提升写性能。

技术总结


本发明公开了一种基于高密度闪存的多编码实现方法,其特点是在闪存控制器中添加多套控制电路来支持不同的格雷码,在闪存传输层中添加格雷码仲裁机制,通过对不同操作的数据以及不同访问热度的数据进行格雷码仲裁,对于初次写入的数据通过在映射表中添加单个比特位来标识格雷码类型,采用读性能较好的格雷码来提升读性能;采用编程性能较好的格雷码来提升写性能;对于热数据则进一步进行格雷码的仲裁,将其迁移到读性能更好的页面上,实现高密度闪存读写性能优化。本发明与现有技术相比具有保障较高的读写性能,通过对格雷码的选择,较好地实现了高密度闪存读写性能的优化。较好地实现了高密度闪存读写性能的优化。较好地实现了高密度闪存读写性能的优化。


技术研发人员:

石亮 吕熠娜 宋云鹏 罗龙飞

受保护的技术使用者:

华东师范大学

技术研发日:

2022.06.20

技术公布日:

2022/8/30

本文发布于:2024-09-22 00:58:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/24691.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:格雷   数据   性能   闪存
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议