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

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

2021-11-09 23:15:00 来源:中国专利 TAG:


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


背景技术:

2.ssd(solid state disk,固态硬盘)已经被广泛应用于各种场合,目前在pc市场,已经逐步替代传统的hdd(hard disk drive,机械硬盘),从可靠性和性能方面为用户提供较好的体验。传统的ssd在启动时一般有一个独立的器件,为nor flash,其内存放引导程序较小,而在nand上存放主程序较大。nor flash访问接口较为简单差异性不大,ssd启动时,其soc主控通过通用的协议从nor上加载引导程序,引导程序可以根据不同nand命令协议再从nand上加载主程序,从而完成系统的加载。
3.目前,随着集成度越来越高以及成本的考量,ssd的外围器件越来越少,一般都会去除掉nor,引导程序也存放在nand固定区域。由于nand的更新换代以及不同的纠错命令/失效处理不一样,导致很可能主控在加载引导程序时失败,进而导致盘无法正常使用。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种固态硬盘的启动优化方法、装置、计算机设备及存储介质。
5.一种固态硬盘的启动优化方法,所述方法包括:
6.获取固态硬盘的启动优化请求;
7.根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域;
8.所述可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;
9.所述可配置区域根据不同nand的失效模型定义对应的配置参数;
10.当所述固态硬盘soc加载引导程序失败时,根据所述失效模型中对应的配置参数进行重试纠错。
11.在其中一个实施例中,所述根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域的步骤还包括:
12.在所述可配置区域中定义byte0用于指示nand的上电等待时间。
13.在其中一个实施例中,所述根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域的步骤还包括:
14.在所述可配置区域中定义byte 1用于指示nand初始化失败后重新上下电的尝试次数;
15.定义byte 2用于指示当nand初始化失败后nand的掉电保持时间。
16.在其中一个实施例中,所述根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域的步骤还包括:
17.在所述可配置区域中定义byte 3用于指示nand读取失败后的重读次数;
18.定义byte4用于指示nand读取失败后的重读地址;
19.定义byte5

n用于指示nand读取失败后的重读参数。
20.一种固态硬盘的启动优化装置,所述装置包括:
21.获取模块,所述获取模块用于获取固态硬盘的启动优化请求;
22.定义模块,所述定义模块用于根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域;
23.模型配置模块,所述模型配置模块用于所述可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;
24.参数配置模块,所述参数配置模块用于所述可配置区域根据不同nand的失效模型定义对应的配置参数;
25.重试纠错模块,所述重试纠错模块用于当所述固态硬盘soc加载引导程序失败时,根据所述失效模型中对应的配置参数进行重试纠错。
26.在其中一个实施例中,所述定义模块还用于:
27.在所述可配置区域中定义byte0用于指示nand的上电等待时间。
28.在其中一个实施例中,所述定义模块还用于:
29.在所述可配置区域中定义byte 1用于指示nand初始化失败后重新上下电的尝试次数;
30.定义byte 2用于指示当nand初始化失败后nand的掉电保持时间。
31.在其中一个实施例中,所述定义模块还用于:
32.在所述可配置区域中定义byte 3用于指示nand读取失败后的重读次数;
33.定义byte4用于指示nand读取失败后的重读地址;
34.定义byte5

n用于指示nand读取失败后的重读参数。
35.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
36.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
37.上述固态硬盘的启动优化方法、装置、计算机设备及存储介质通过获取固态硬盘的启动优化请求;根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域;所述可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;所述可配置区域根据不同nand的失效模型定义对应的配置参数;当所述固态硬盘soc加载引导程序失败时,根据所述失效模型中对应的配置参数进行重试纠错。本发明针对soc访问nand加载bootloader可能遇到的失效场景,在soc掉电非易失配置区域定义初始化可配置区域,可以对常见的失效场景以及不同颗粒的重读参数进行配置。量产时,根据不同的颗粒写入对应的配置;后续出厂后ssd启动时,如果遇到错误,则可以根据对应配置区域的参数进行针对性的纠错,提高了固态硬盘的可靠性。
附图说明
38.图1为传统技术中典型的ssd启动流程的示意图;
39.图2为传统技术中无nor时的ssd加载过程的示意图;
40.图3为一个实施例中固态硬盘的启动优化方法的流程示意图;
41.图4为另一个实施例中固态硬盘的启动优化方法的流程示意图;
42.图5为一个实施例中遇到nand初始化失败以及重试的流程示意图;
43.图6为一个实施例中从nand加载bootloader时遇到nand数据读取错误以及重试的流程示意图;
44.图7为一个实施例中固态硬盘的启动优化装置的结构框图;
45.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
46.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
47.目前,参考图1所示的典型的ssd启动流程,其具体包括如下步骤:s0、首从nor(非易失闪存)中加载bootloader到soc内部的内存中运行。s1、bootloader运行时,从nand上的存放fw(firmware,固件)的物理块中加载对应的copy(如某个错误,则可以选择其他copy以及使用nand特定的read retry参数重读、纠错)。s2、fw加载成功后,soc跳转到fw运行。在这个过程中,nor的访问接口简单单一而且数据可靠性高,基本不会出错,而nand则由于不同代次/供应商的差异访问接口复杂,数据容易出错,需要使用不同的差异性纠错方法来恢复数据。由于bootloader放在nor中,且bootloader可以在量产时针对不同nand烧录对应的错误处理/纠错的算法,可以很好地加载放在nand上的firmware。
48.参考图2所示的无nor时的ssd加载过程,其具体包括如下步骤:s0、从指定的物理块加载bootloader(如果遇到错误,尝试其他copy)。s1、bootloader运行时,从nand上的存放fw的物理块中加载对应的copy(如某个错误,则可以选择其他copy以及使用nand特定的read retry参数重读、纠错)。s2、fw加载成功后,soc跳转到fw运行。整个过程中由于没有nor,所以启动固件都放在nand上。s1阶段由于bootloader中能够根据不同nand特性使用较复杂的错误处理/纠错算法并且可以在量产阶段烧录,故可以较好地支持不同的nand且具备较高的可靠性,但是,在s0阶段是soc直接访问nand加载bootloader,由于soc中的代码(rom code)都是固化好的,不能针对不同nand在ssd量产时定制,故其对于不同nand的失效处理能力不足,容易导致加载bootloader失败,进而导致丢盘。
49.基于此,本发明提供了一种固态硬盘的启动优化方法,针对soc访问nand加载bootloader可能遇到的失效场景,在soc掉电非易失配置区域定义nand初始化可配置区域,可以对常见的失效场景以及不同颗粒的read retry参数进行配置。在量产时,根据不同的颗粒写入对应的配置;后续出厂后ssd启动时,如果遇到错误,则可以根据对应配置区域的参数进行针对性的纠错,提高了可靠性。
50.在一个实施例中,如图3所示,提供了一种固态硬盘的启动优化方法,该方法包括:
51.步骤302,获取固态硬盘的启动优化请求;
52.步骤304,根据固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域;
53.步骤306,可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;
54.步骤308,可配置区域根据不同nand的失效模型定义对应的配置参数;
55.步骤310,当固态硬盘soc加载引导程序失败时,根据失效模型中对应的配置参数进行重试纠错。
56.在本实施例中,为本发明为解决无nor情形下针对不同nand的失效模型引入的参数化配置,提供了一种固态硬盘的启动优化方法,其具体的实现步骤如下:
57.首先,获取固态硬盘的启动优化请求,并根据固态硬盘的启动优化请求在ssd的主控(soc)内的掉电非易失配置区域定义nand初始化可配置区域。
58.接着,可配置区域定义对应的nand访问延迟以及初始化失败的重试流程,并且可配置区域定义对应的nand read retry参数,当ssd soc加载引导程序失败时,可以按照对应的配置参数进行重试/纠错。
59.具体地,在soc的可配置区域,量产时根据所要搭配的nand,并写入关联的纠错模型。接着,当soc启动时,若rom code加载bootloader遇到错误,则根据可配置区域的参数信息进行针对性的纠错,从而提高了可靠性。
60.在一个实施例中,如图4所示,提供了一种固态硬盘的启动优化方法,该方法中根据固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域的步骤还包括:
61.步骤402,定义byte0用于指示nand的上电等待时间;
62.步骤404,定义byte 1用于指示nand初始化失败后重新上下电的尝试次数;
63.步骤406,定义byte 2用于指示当nand初始化失败后nand的掉电保持时间;
64.步骤408,定义byte 3用于指示nand读取失败后的重读次数;
65.步骤410,定义byte4用于指示nand读取失败后的重读地址;
66.步骤412,定义byte5

n用于指示nand读取失败后的重读参数。
67.具体地,可参考下表中所示,可以分别处理如下几个典型失效场景。
68.[0069][0070]
如byte 0所指示,不同的ssd电路设计其上电时序有差异,为等待nand电压稳定,设定了一定的延迟,以保障在访问nand时其电压处于稳定状态。
[0071]
如byte 1

2所指示,某些场景下ssd可能掉电不干净,导致nand复位不彻底,此时对nand进行初始化会失败。故加入了重新上下电次数以及放电保持时间的指示信息,通过对nand重新上下电,使其恢复正常。
[0072]
如byte 3

n所示,为解决nand数据读取出错时的纠错方法。不同厂家的nand为了对抗数据出错,提供了不同的read retry机制,通过调整nand的读参考电压可以实现数据纠错。具体地,需要往特定地址(retry addr,存放参考电压调节参数)写入特定的数据(retry val,对应的参考电压调节参数)。
[0073]
在本实施例中,通过获取固态硬盘的启动优化请求;根据所述固态硬盘的启动优化请求在soc掉电非易失配置区域定义nand初始化可配置区域;所述可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;所述可配置区域根据不同nand的失效模型定义对应的配置参数;当所述固态硬盘soc加载引导程序失败时,根据所述失效模型中对应的配置参数进行重试纠错。本方案针对soc访问nand加载bootloader可能遇到的失效场景,在soc掉电非易失配置区域定义初始化可配置区域,可以对常见的失效场景以及不同颗粒的重读参数进行配置。量产时,根据不同的颗粒写入对应的配置;后续出厂后ssd启动时,如果遇到错误,则可以根据对应配置区域的参数进行针对性的纠错,提高了固态硬盘的可靠性。
[0074]
在一个实施例中,如图5所示,为遇到nand初始化失败以及重试的流程,其具体的实现步骤如下:
[0075]
步骤5.1、系统上电,soc固化的rom代码开始执行。
[0076]
步骤5.2、加载soc内部nand初始化可配置区域参数。
[0077]
步骤5.3、等待twait(ms)以便nand电压稳定。
[0078]
步骤5.4、nand初始化。
[0079]
步骤5.5、初始化是否成功。
[0080]
步骤5.5.1、若是则跳转到nand加载bootloader。
[0081]
步骤5.5.2、若否跳转到步骤5.6。
[0082]
步骤5.6、nand掉电。
[0083]
步骤5.7、等待tnand_power_off_hold(ms),以便nand放电干净。
[0084]
步骤5.8、nand上电。
[0085]
步骤5.9、等待twait(ms)以便nand电压稳定。
[0086]
步骤5.10、nand初始化。
[0087]
步骤5.11、初始化是否成功。
[0088]
步骤5.11.1、若是则跳转到nand加载bootloader。
[0089]
步骤5.11.2、若否跳转到步骤5.12。
[0090]
步骤5.12、初始化次数是否超过power_cycle_cnt。
[0091]
步骤5.12.1、若是则启动失败。
[0092]
步骤5.12.2、若否跳转到步骤5.6。
[0093]
通过上述流程,固化的soc rom代码可以根据可配置区的参数,针对不同nand初始化失败的场景进行有效的处理。
[0094]
在一个实施例中,如图6所示,为从nand加载bootloader时遇到nand数据读取错误以及重试的流程,其具体的实现步骤如下:
[0095]
步骤6.1、nand初始化成功。
[0096]
步骤6.2、soc rom代码从nand读取bootloader。
[0097]
步骤6.3、读取是否成功。
[0098]
步骤6.3.1、若是则启动成功。
[0099]
步骤6.3.2、若否,则跳转步骤6.4。
[0100]
步骤6.4、加载soc内部nand初始化可配置区域参数,获取重读次数(retry_cnt)。
[0101]
步骤6.5、判断重读此时是否超过retry_cnt。
[0102]
步骤6.5.1、若是则启动失败。
[0103]
步骤6.5.2、若否则跳转步骤6.6。
[0104]
步骤6.6、加载soc内部nand初始化可配置区域参数,获取下一个重读参数(retry_val_x)和重读地址(retry_addr)。
[0105]
步骤6.7、将重读参数(retry_val_x)写入到nand的寄存器中重读地址(retry_addr),调节读取参数(读参考电压)。
[0106]
步骤6.8、跳转到步骤6.2。
[0107]
通过上述流程,固化的soc rom代码可以根据可配置区的参数,针对不同nand读取失败的场景进行有效的处理。
[0108]
应该理解的是,虽然图1

6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1

6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0109]
在一个实施例中,如图7所示,提供了一种固态硬盘的启动优化装置700,该装置包括:
[0110]
获取模块701,所述获取模块用于获取固态硬盘的启动优化请求;
[0111]
定义模块702,所述定义模块用于根据所述固态硬盘的启动优化请求在soc掉电非
易失配置区域定义nand初始化可配置区域;
[0112]
模型配置模块703,所述模型配置模块用于所述可配置区域定义对应的nand访问延迟以及初始化失败的失效模型;
[0113]
参数配置模块704,所述参数配置模块用于所述可配置区域根据不同nand的失效模型定义对应的配置参数;
[0114]
重试纠错模块705,所述重试纠错模块用于当所述固态硬盘soc加载引导程序失败时,根据所述失效模型中对应的配置参数进行重试纠错。
[0115]
在一个实施例中,所述定义模块702还用于:
[0116]
在所述可配置区域中定义byte0用于指示nand的上电等待时间。
[0117]
在其中一个实施例中,所述定义模块702还用于:
[0118]
在所述可配置区域中定义byte 1用于指示nand初始化失败后重新上下电的尝试次数;
[0119]
定义byte 2用于指示当nand初始化失败后nand的掉电保持时间。
[0120]
在其中一个实施例中,所述定义模块702还用于:
[0121]
在所述可配置区域中定义byte 3用于指示nand读取失败后的重读次数;
[0122]
定义byte4用于指示nand读取失败后的重读地址;
[0123]
定义byte5

n用于指示nand读取失败后的重读参数。
[0124]
关于固态硬盘的启动优化装置的具体限定可以参见上文中对于固态硬盘的启动优化方法的限定,在此不再赘述。
[0125]
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种固态硬盘的启动优化方法。
[0126]
本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0127]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
[0128]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
[0129]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
[0130]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0131]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献