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

固态硬盘性能优化方法、装置、计算机设备及存储介质与流程

2022-03-09 05:11:30 来源:中国专利 TAG:


1.本发明涉及存储系统技术领域,特别是涉及一种固态硬盘性能优化方法、装置、计算机设备及存储介质。


背景技术:

2.随着固态硬盘技术的发展,ssd(solid state disk,固态硬盘)已经被广泛应用于各种场合,在pc市场已经逐步替代传统的hdd(hard disk drive,硬盘驱动器),从可靠性和性能方面为用户提供较好的体验。
3.随着接口速率的提升,ssd的带宽越来越高,然而,与此同时随着nand工艺的演进,其物理一致性存在较大的波动。典型地,某些nand的物理页编程时间较大,当主机数据写入对应的物理页时,则会性能较低,给以用户比较差的体验。而为了取得较好的一致性,传统的方法通常会在nand或者ssd量产的时候进行筛选,将不满足要求的剔除出去,如此导致额外的测试成本,且生产的良率会大大降低,增加了成本。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种固态硬盘性能优化方法、装置、计算机设备及存储介质。
5.一种固态硬盘性能优化方法,所述方法包括:
6.获取固态硬盘性能优化请求;
7.根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表;
8.所述固态硬盘上电后加载所述编程速率表;
9.在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。
10.在其中一个实施例中,所述根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表的步骤还包括:
11.建立编程速率表,所述编程速率表中的字段包含die、block、page及速率;
12.根据固态硬盘的产品规格定义一个编程时间阈值;
13.对所述固态硬盘各个die的物理块和物理页进行编程并度量编程所需时间;
14.如果编程时间大于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为slow;
15.如果编程时间小于等于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为fast;
16.完成后将对应的编程速率表保存到固态硬盘中。
17.在其中一个实施例中,所述在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页的步骤还包括:
18.在数据写入的过程中,根据写入的die以及物理块和物理页查询编程速率表;
19.判断对应的速率字段是否为fast;
20.若对应的速率字段为fast则写入数据到nand。
21.在其中一个实施例中,在所述判断对应的速率字段是否为fast的步骤之后还包括:
22.若对应的速率字段为slow则跳过当前物理页,并根据写入顺序查找下一个fast类型的物理块和物理页进行数据的写入。
23.一种固态硬盘性能优化装置,所述装置包括:
24.获取模块,所述获取模块用于获取固态硬盘性能优化请求;
25.速率表建立模块,所述速率表建立模块用于根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表;
26.速率表加载模块,所述速率表加载模块用于所述固态硬盘上电后加载所述编程速率表;
27.数据写入模块,所述数据写入模块用于在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。
28.在其中一个实施例中,所述速率表建立模块还用于:
29.建立编程速率表,所述编程速率表中的字段包含die、block、page及速率;
30.根据固态硬盘的产品规格定义一个编程时间阈值;
31.对所述固态硬盘各个die的物理块和物理页进行编程并度量编程所需时间;
32.如果编程时间大于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为slow;
33.如果编程时间小于等于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为fast;
34.完成后将对应的编程速率表保存到固态硬盘中。
35.在其中一个实施例中,所述数据写入模块还用于:
36.在数据写入的过程中,根据写入的die以及物理块和物理页查询编程速率表;
37.判断对应的速率字段是否为fast;
38.若对应的速率字段为fast则写入数据到nand。
39.在其中一个实施例中,所述数据写入模块还用于:
40.若对应的速率字段为slow则跳过当前物理页,并根据写入顺序查找下一个fast类型的物理块和物理页进行数据的写入。
41.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
42.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
43.上述固态硬盘性能优化方法、装置、计算机设备及存储介质通过获取固态硬盘性能优化请求;根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表;所述固态硬盘上电后加载所述编程速率表;在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。本发明
针对nand物理块/页编程速率波动的特征,在量产时扫描各个物理块/页的编程参数形成编程速率表,进而在运行时刻针对主机的写入选用较高速率的物理块/页,从而保证了主机写入的性能。
附图说明
44.图1为一个典型的ssd写入模型的结构示意图;
45.图2为一个物理块/页编程时间较长时所发生情形的示意图;
46.图3为一个实施例中固态硬盘性能优化方法的流程示意图;
47.图4为另一个实施例中固态硬盘性能优化方法的流程示意图;
48.图5为再一个实施例中固态硬盘性能优化方法的流程示意图;
49.图6为一个实施例中引入的编程速率表的示意图;
50.图7为一个实施例中ssd运行时刻写入模型的示意图;
51.图8为一个实施例中ssd在通过查询编程速率表写入过程的示意图;
52.图9为一个实施例中固态硬盘性能优化装置的结构框图;
53.图10为一个实施例中计算机设备的内部结构图。
具体实施方式
54.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
55.典型的nand组成如下,包括:die,可独立并发操作的单元;block,可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个block擦除;page,读写单元,同一物理块内的page必需按顺序编程:0-》1-》2-》3

。随着nand技术的演进,其物理块/页的编程时间一致性差异很大,进而导致写入的性能波动较大。
56.如图1所示,为典型的ssd写入模型。为便于说明,本发明中使用4个die的模型进行举例说明。具体地,主机写入4页数据:h_data_0,h_data_1,h_data_2,h_data_3。ssd内部依次写入到die 0/1/2/3的page 1上。由于数据写入顺序的要求,主机数据需要顺序生效。所以在回收对应的写入请求、释放对应的资源时,也必需按照写入的顺序依次回收h_data_0,h_data_1,h_data_2,h_data_3,也就是die 0page 1,die 1page 1,die 2page 1,die 3page 1。
57.如图2所示,为某个die例如die0的物理块/页编程时间较长时所发生情形的示意。die 0page 1编程时间较长。die 1/2/3page 1编程时间较短。由于顺序回收资源的需求约束,die 1/2/3page 1的编程必需要等待die 0page 1编程完成。在此模型下,整体编程时间被编程较慢的die0拉长,进而导致性能下降严重。
58.基于此,本发明提出一种固态硬盘性能优化方法,旨在能够进一步提高主机写入性能。
59.在一个实施例中,如图3所示,提供了一种固态硬盘性能优化方法,该方法包括:
60.步骤302,获取固态硬盘性能优化请求;
61.步骤304,根据固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立
编程速率表;
62.步骤306,固态硬盘上电后加载编程速率表;
63.步骤308,在主机写入数据时根据编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。
64.在本实施例中,提供了一种固态硬盘性能优化方法,该方法针对nand物理块/页编程速率波动的特征,在量产时扫描各个物理块/页的编程参数,形成编程速率表,进而在运行时刻针对主机的写入选用较高速率的物理块/页,从而保证了主机写入的性能。
65.在一个实施例中,如图4所示,提供了一种固态硬盘性能优化方法,该方法中根据固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表的步骤还包括:
66.步骤402,建立编程速率表,编程速率表中的字段包含die、block、page及速率;
67.步骤404,根据固态硬盘的产品规格定义一个编程时间阈值;
68.步骤406,对固态硬盘各个die的物理块和物理页进行编程并度量编程所需时间;
69.步骤408,如果编程时间大于编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为slow;
70.步骤410,如果编程时间小于等于编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为fast;
71.步骤412,完成后将对应的编程速率表保存到固态硬盘中。
72.具体地,可参考图6所示的编程速率表,具体地:
73.首先,建立一张编程速率快慢表,包含die/block/page/速率等各个字段。接着,根据ssd产品规格,定义一个物理页编程时间阈值prog_th。在ssd出厂前,对其内各个die的物理块、页进行编程,度量其所需时间。
74.如果其编程时间大于prog_th,则在对应的编程速率表中,标志对应die/block/page的速率字段为slow。如果其编程时间小于等于prog_th,则在对应的编程速率表中,标志对应die/block/page的速率字段为fast。完成后,将对应的编程速率表保存到ssd中。
75.参考图7所示的ssd运行时刻写入模型的示意图,具体地:
76.首先,在ssd上电时加载编程速率表。然后,主机写入4页数据:h_data_0,h_data_1,h_data_2,h_data_3。接着,ssd内部根据编程速率表,依次写入到各个die的快速编程页上:
77.根据编程速率表,查询到die 0block 0page 0为fast类型,故将h_data_0写入。
78.根据编程速率表,查询到die 1block 0page 0为slow类型,故跳过该页,查询该die/block内的fast类型的page(page 1),将h_data_1写入die 1block0page 1。
79.根据编程速率表,查询到die 2block 0page 0为slow类型,故跳过该页,查询该die/block内的fast类型的page(page 1),将h_data_2写入die 2block0page 1。
80.根据编程速率表,查询到die 3block 0page 0为fast类型,故将h_data_3写入。
81.在上述实施例中,通过获取固态硬盘性能优化请求;根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表;所述固态硬盘上电后加载所述编程速率表;在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。上述方案针对nand物理块/页编程速率波动的特
征,在量产时扫描各个物理块/页的编程参数形成编程速率表,进而在运行时刻针对主机的写入选用较高速率的物理块/页,从而保证了主机写入的性能。
82.在一个实施例中,如图5所示,提供了一种固态硬盘性能优化方法,该方法中在主机写入数据时根据编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页的步骤还包括:
83.步骤502,在数据写入的过程中,根据写入的die以及物理块和物理页查询编程速率表;
84.步骤504,判断对应的速率字段是否为fast;
85.步骤506,若对应的速率字段为fast则写入数据到nand;
86.步骤508,若对应的速率字段为slow则跳过当前物理页,并根据写入顺序查找下一个fast类型的物理块和物理页进行数据的写入。
87.在本实施例中,参考图8所示ssd在通过查询编程速率表写入过程的示意图,该方法具体的执行步骤如下:
88.8.1、加载保存的编程速率表。
89.8.2、主机写入数据。
90.8.3、根据所需写入的die以及物理块/页信息查询编程速率快慢表。
91.8.4、是否为fast类型。若是,跳转到8.6;若否,继续8.5。
92.8.5、根据写入顺序,查找下一个fast类型的编程块/页。
93.8.6、写入主机数据到nand。
94.在本实施例中,在主机写入时,根据预先测定的编程速率表跳过一些编程较慢的物理块/页,而总是写入编程较快的物理块/页,有效地保障了主机写入的性能。
95.应该理解的是,虽然图1-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
96.在一个实施例中,如图9所示,提供了一种固态硬盘性能优化装置900,该装置包括:
97.获取模块901,所述获取模块用于获取固态硬盘性能优化请求;
98.速率表建立模块902,所述速率表建立模块用于根据所述固态硬盘性能优化请求通过扫描物理块和物理页的编程速率建立编程速率表;
99.速率表加载模块903,所述速率表加载模块用于所述固态硬盘上电后加载所述编程速率表;
100.数据写入模块904,所述数据写入模块用于在主机写入数据时根据所述编程速率表跳过编程速率慢的物理块和物理页,优先使用编程速率快的物理块和物理页。
101.在一个实施例中,速率表建立模块902还用于:
102.建立编程速率表,所述编程速率表中的字段包含die、block、page及速率;
103.根据固态硬盘的产品规格定义一个编程时间阈值;
104.对所述固态硬盘各个die的物理块和物理页进行编程并度量编程所需时间;
105.如果编程时间大于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为slow;
106.如果编程时间小于等于所述编程时间阈值,则在对应的编程速率表中标志对应die、block、page的速率字段为fast;
107.完成后将对应的编程速率表保存到固态硬盘中。
108.在一个实施例中,数据写入模块904还用于:
109.在数据写入的过程中,根据写入的die以及物理块和物理页查询编程速率表;
110.判断对应的速率字段是否为fast;
111.若对应的速率字段为fast则写入数据到nand。
112.在一个实施例中,数据写入模块904还用于:
113.若对应的速率字段为slow则跳过当前物理页,并根据写入顺序查找下一个fast类型的物理块和物理页进行数据的写入。
114.关于固态硬盘性能优化装置的具体限定可以参见上文中对于固态硬盘性能优化方法的限定,在此不再赘述。
115.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种固态硬盘性能优化方法。
116.本领域技术人员可以理解,图10中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
117.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
118.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
119.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
120.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
121.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献