一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多Pass编程NAND的RAID优化方法、装置及计算机设备与流程

2022-03-02 02:17:09 来源:中国专利 TAG:

多pass编程nand的raid优化方法、装置及计算机设备
技术领域
1.本发明涉及存储系统技术领域,特别是涉及一种多pass编程nand的raid优化方法、装置、计算机设备及存储介质。


背景技术:

2.随着固态硬盘技术的发展,ssd(solid state disk,固态硬盘)已经被广泛应用于各种场合,在pc市场已经逐步替代传统的hdd(hard disk drive,硬盘驱动器),从可靠性和性能方面为用户提供较好的体验。随着nand工艺的演进,其编程模型越来越复杂,从早先的单pass编程到最近的多pass编程。对于多pass编程的颗粒来说,每个pass编程的时候,所有的页面数据都需要传输到nand,相应地,对应的数据需要缓存在ssd内存中。
3.目前,在现有的ssd设计中,一般都会使用raid来提升可靠性。对于n笔用户数据,通过raid引擎生成1笔校验数据,且写入到nand中。由于多pass编程的需求,raid校验数据也必需多次传输到nand,故需要缓冲对应的校验数据,直到对应页面的所有pass编程完成,由此增加了对ssd内存的需求。进一步地,由于raid引擎使用的为soc内部的高速memory(如sram),其空间有限,需要将校验数据备份到慢速内存中(如dram),此拷贝过程对性能影响较大。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种多pass编程nand的raid优化方法、装置、计算机设备及存储介质。
5.一种多pass编程nand的raid优化方法,所述方法包括:
6.获取多pass编程nand的raid优化请求;
7.根据所述多pass编程nand的raid优化请求在每个pass编程时,利用所属raid条带缓存的用户数据重新进行raid引擎编码;
8.通过raid引擎编码实时生成对应的parity数据;
9.在对应pass的编程完成后即可释放parity缓冲区,无需保持到所有pass编程完成。
10.在其中一个实施例中,所述方法还包括:
11.将raid条带的用户数据经过raid引擎编码生成对应的parity数据;
12.将用户数据和parity数据传输到ssd各个die的page上进行pass 1编程;
13.在所述pass 1编程完成后即可释放对应的parity缓冲区。
14.在其中一个实施例中,所述方法还包括:
15.在多pass编程模型下交错进行各个page的每个pass编程;
16.待所有相关交错编程page的pass 1完成后,再重新继续raid条带的pass2编程。
17.在其中一个实施例中,所述方法还包括:
18.判断page所有pass编程是否已经完成;
19.若否则继续发起各个die page对应pass用户数据编程;若是则完成各个die的page编程。
20.一种多pass编程nand的raid优化装置,所述装置包括:
21.获取模块,所述获取模块用于获取多pass编程nand的raid优化请求;
22.编码模块,所述编码模块用于根据所述多pass编程nand的raid优化请求在每个pass编程时,利用所属raid条带缓存的用户数据重新进行raid引擎编码;
23.生成模块,所述生成模块用于通过raid引擎编码实时生成对应的parity数据;
24.释放模块,所述释放模块用于在对应pass的编程完成后即可释放parity缓冲区,无需保持到所有pass编程完成。
25.在其中一个实施例中,所述装置还包括编程模块,所述编程模块用于:
26.将raid条带的用户数据经过raid引擎编码生成对应的parity数据;
27.将用户数据和parity数据传输到ssd各个die的page上进行pass 1编程;
28.在所述pass 1编程完成后即可释放对应的parity缓冲区。
29.在其中一个实施例中,所述编程模块还用于:
30.在多pass编程模型下交错进行各个page的每个pass编程;
31.待所有相关交错编程page的pass 1完成后,再重新继续raid条带的pass2编程。
32.在其中一个实施例中,所述装置还包括判断模块,所述判断模块用于:
33.判断page所有pass编程是否已经完成;
34.若否则继续发起各个die page对应pass用户数据编程;若是则完成各个die的page编程。
35.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
36.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
37.上述多pass编程nand的raid优化方法、装置、计算机设备及存储介质通过获取多pass编程nand的raid优化请求;根据所述多pass编程nand的raid优化请求在每个pass编程时,利用所属raid条带缓存的用户数据重新进行raid引擎编码;通过raid引擎编码实时生成对应的parity数据;在对应pass的编程完成后即可释放parity缓冲区,无需保持到所有pass编程完成。本发明针对多pass编程的场景,在各个pass编程时,动态生成raid校验数据而不缓存对应的校验数据,通过实时生成raid校验数据减少了对soc memory的需求,进而提高了固态硬盘的性能,降低了成本。
附图说明
38.图1为一个传统的multi-pass nand raid模型的示意图;
39.图2为另一个传统的multi-pass nand raid模型的示意图;
40.图3为一个实施例中多pass编程nand的raid优化方法的流程示意图;
41.图4为一个实施例中对应的nand多pass写入过程的流程示意图;
42.图5为另一个实施例中多pass编程nand的raid优化方法的流程示意图;
43.图6为一个实施例中multi-pass nand编程时的raid模型的示意图;
44.图7为一个实施例中多pass编程nand的raid优化装置的结构框图;
45.图8为另一个实施例中多pass编程nand的raid优化装置的结构框图;
46.图9为再一个实施例中多pass编程nand的raid优化装置的结构框图;
47.图10为一个实施例中计算机设备的内部结构图。
具体实施方式
48.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
49.目前,典型的nand组成包括:die,可独立并发操作的单元;block,可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个block擦除;page,读写单元,同一物理块内的page必需按顺序编程:0-》1-》2-》3

。随着nand技术的演进,其page编程模型越来越复杂。以qlc为例,其需要按照一定的规则对page进行多次编程才能达到稳定的状态。期间,需要存储的数据需要多次传输到nand上。
50.如图1所示,为一个传统的multi-pass nand raid模型的示意图。其中,data 0_0、data 0_1、data 0_2

data 0_n-1为属于同一raid条带(称为条带0)的n笔用户数据。raid条带0的用户数据经过raid引擎编码,生成对应的parity数据(parity 0_n)。此n(用户数据) 1(raid parity数据)传输到ssd各个die的block x的page 0上,进行pass 1编程;且由于raid parity数据还需在后续的pass中传输到nand中,则需要在内存中继续保持缓存。在多pass编程模型下,各个page的各个pass编程是交错进行的,依次进行raid条带1的parity生成,以及写入各个die的block x的page 1。所有相关交错编程的page的pass 1完成后,再重新继续raid条带0的pass 2编程,此时对应的校验数据直接使用缓存的raid parity数据。依次进行raid条带1的pass 2编程,此时也依然使用内存中缓存的parity数据。循环上述序列,直到所有相关的交错编程的条带完成所有pass的数据写入。在此过程中,由于每个pass编程都需要所有数据传输到nand上,故对于raid条带数据,需要保持在raid parity缓存中(一般为高速的soc内部sram),直到所有交错编程的page完成所有pass的编程才能释放。此过程对于raid parity缓存的要求很大,极大地增加了soc成本。
51.如图2所示,为另一个传统的multi-pass nand raid模型的示意图。在此过程中,同图1中的模型类似,也需要缓存raid parity数据。但考虑到高速的soc sram成本较高,所以一般在pass 1编程,经过raid引擎生成的parity数据会备份到慢速的内存(空间大,一般如dram)。此过程可以降低soc成本,但是频繁的内存拷贝,对整体性能影响较大。
52.基于此,本发明提出一种多pass编程nand的raid优化方法,旨在能够针对多pass编程的场景可以降低对soc memory的需求。
53.在一个实施例中,如图3所示,提供了一种多pass编程nand的raid优化方法,该方法包括:
54.步骤302,获取多pass编程nand的raid优化请求;
55.步骤304,根据多pass编程nand的raid优化请求在每个pass编程时,利用所属raid条带缓存的用户数据重新进行raid引擎编码;
56.步骤306,通过raid引擎编码实时生成对应的parity数据;
0_n)。
75.6.3、此n(用户数据) 1(raid parity数据)传输到ssd各个die的block x的page 0上进行pass 1编程;编程完成后即可释放parity 0_n缓冲区。
76.6.4、在多pass编程模型下,各个page的各个pass编程是交错进行的,依次进行raid条带1的parity生成以及写入各个die的block x的page 1。
77.6.5、所有相关交错编程的page的pass 1完成后,再重新继续raid条带0的pass 2编程:
78.此时同pass 1一样,n笔用户数据重新经过raid引擎,重新生成parity 0_n。传输到ssd各个die的block x page 0进行pass 2编程,完成后即释放parity 0_n缓冲区。
79.6.6、依次进行raid条带1的pass 2编程,此时也是重新经由raid引擎生成相应的校验数据并写入nand。
80.6.7、循环上述序列,直到所有相关的交错编程的条带完成所有pass的数据写入。
81.在本实施例中,由于用户数据总是缓存在内存中,通过在每个pass编程时,实时重新生成对应的raid parity数据,大大降低了对soc parity buffer大小的需求,降低了成本;且无需触发memory的拷贝备份,不会影响性能。
82.应该理解的是,虽然图1-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
83.在一个实施例中,如图7所示,提供了一种多pass编程nand的raid优化装置700,该装置包括:
84.获取模块701,用于获取多pass编程nand的raid优化请求;
85.编码模块702,用于根据所述多pass编程nand的raid优化请求在每个pass编程时,利用所属raid条带缓存的用户数据重新进行raid引擎编码;
86.生成模块703,用于通过raid引擎编码实时生成对应的parity数据;
87.释放模块704,用于在对应pass的编程完成后即可释放parity缓冲区,无需保持到所有pass编程完成。
88.在一个实施例中,如图8所示,提供了一种多pass编程nand的raid优化装置700,该装置还包括编程模块705,用于:
89.将raid条带0的用户数据经过raid引擎编码生成对应的parity数据;
90.将用户数据和parity数据传输到ssd各个die的page 0上进行pass 1编程;
91.在所述pass 1编程完成后即可释放对应的parity缓冲区。
92.在一个实施例中,编程模块705还用于:
93.在多pass编程模型下交错进行各个page的每个pass编程;
94.待所有相关交错编程page的pass 1完成后,再重新继续raid条带0的pass2编程。
95.在一个实施例中,如图9所示,提供了一种多pass编程nand的raid优化装置700,该
装置还包括判断模块706,用于:
96.判断page0所有pass编程是否已经完成;
97.若否则继续发起各个die page0对应pass用户数据编程;若是则完成各个die的page0编程。
98.关于多pass编程nand的raid优化装置的具体限定可以参见上文中对于多pass编程nand的raid优化方法的限定,在此不再赘述。
99.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多pass编程nand的raid优化方法。
100.本领域技术人员可以理解,图10中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
101.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
102.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
103.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
104.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
105.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献