NVM子系统复位的实现方法、装置、计算机设备及存储介质与流程

文档序号:29622853发布日期:2022-04-13 13:43阅读:723来源:国知局
NVM子系统复位的实现方法、装置、计算机设备及存储介质与流程
nvm子系统复位的实现方法、装置、计算机设备及存储介质
技术领域
1.本发明涉及固态硬盘技术领域,特别是涉及一种nvm子系统复位的实现方法、装置、计算机设备及存储介质。


背景技术:

2.目前,nvm subsystem reset(nvm子系统复位)发生于以下3种情形:主电源应用于nvm子系统;4e564d65h(“nvme”)被写到nssr.nssrc(nvm subsystem reset.nvm subsystem reset control子系统复位控制)字段;厂商定义的特殊事件发生时,nvm子系统将会reset(复位)。当nvm子系统复位时,整个nvm子系统将被重置,包括构成nvm子系统的所有控制器层级的重置,禁用与构成nvm子系统的所有控制器关联的持久内存区域,以及由nvm子系统的所有pcie端口转换到检测ltssm状态。
3.然而,现有subsystem reset方案在sanblaze(一种ssd测试软件)测试平台上reset测试失败。该平台由于ssd正在进行读写命令,主机没等读写命令结束就下发reset请求,device在收到reset中断时,在中断中将pcie/nvme core(核心)复位,导致还未处理完的节点卡住,无法顺利完成,最终测试失败。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种nvm子系统复位的实现方法、装置、计算机设备及存储介质。
5.一种nvm子系统复位的实现方法,所述方法包括:
6.ssd获取ssd控制器发送的子系统复位中断信号;
7.固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;
8.如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;
9.退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止;
10.等待所有命令均正常终止完成;
11.固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。
12.在其中一个实施例中,在所述固件跳转到中断处理函数处理该事件,并判断ssd是否有命令未处理完的步骤还包括:
13.如果所有命令都已处理完,则标记中断复位模式事件并跳转到所述固件向ssd控制器发停止ltssm请求的步骤。
14.在其中一个实施例中,在所述ssd收到ssd控制器发送的子系统复位中断信号的步骤之前还包括:
15.ssd上电后正常处理命令,并执行nvm子系统复位测试脚本;
16.主机发送子系统复位请求给ssd。
17.在其中一个实施例中,在所述链路重新开始训练的步骤之后还包括:
18.等待主机发送控制器配置寄存器使能命令,重新开始处理命令。
19.一种nvm子系统复位的实现装置,所述装置包括:
20.获取模块,所述获取模块用于ssd获取ssd控制器发送的子系统复位中断信号;
21.判断模块,所述判断模块用于固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;
22.第一标记模块,所述第一标记模块用于如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;
23.命令终止模块,所述命令终止模块用于退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止,等待所有命令均正常终止完成;
24.子流程模块,所述子流程模块用于固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。
25.在其中一个实施例中,所述装置还包括第二标记模块,所述第二标记模块用于:
26.如果所有命令都已处理完,则标记中断复位模式事件并跳转至子流程模块。
27.在其中一个实施例中,所述装置还包括请求模块,所述请求模块用于:
28.ssd上电后正常处理命令,并执行nvm子系统复位测试脚本;
29.主机发送子系统复位请求给ssd。
30.在其中一个实施例中,所述装置还包括等待模块,所述等待模块用于:
31.等待主机发送控制器配置寄存器使能命令,重新开始处理命令。
32.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
33.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
34.上述nvm子系统复位的实现方法、装置、计算机设备及存储介质通过ssd获取ssd控制器发送的子系统复位中断信号;固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止;所有命令均正常终止完成;固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。本发明所提供的方案可以根据收到主机发送的子系统复位请求时ssd是否正在处理读写命令来采用不同的方案来处理复位事件,达到不同的测试平台都能测试通过的目的。
附图说明
35.图1为传统技术中nvm subsystem reset方案的示意图;
36.图2为一个实施例中nvm子系统复位的实现方法的流程示意图;
37.图3为另一个实施例中nvm子系统复位的实现方法的流程示意图;
38.图4为一个实施例中nvm subsystem reset方案的示意图;
39.图5为一个实施例中nvm子系统复位的实现装置的结构框图;
40.图6为另一个实施例中nvm子系统复位的实现装置的结构框图;
41.图7为再一个实施例中nvm子系统复位的实现装置的结构框图;
42.图8为又一个实施例中nvm子系统复位的实现装置的结构框图;
43.图9为一个实施例中计算机设备的内部结构图。
具体实施方式
44.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
45.目前,参考图1所示的传统技术中的nvm subsystem reset方案。现有subsystem reset方案在sanblaze(一种ssd测试软件)测试平台上reset测试失败。该平台由于ssd正在进行读写命令,主机没等读写命令结束就下发reset请求,device在收到reset中断时,在中断中将pcie/nvme core(核心)复位,导致还未处理完的节点卡住,无法顺利完成,最终测试失败。
46.本发明提出一种nvm子系统复位的实现方法,旨在能够解决在sanblaze测试平台上测试失败的问题。
47.在一个实施例中,如图2所示,提供了一种nvm子系统复位的实现方法,该方法包括:
48.步骤202,ssd获取ssd控制器发送的子系统复位中断信号;
49.步骤204,固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;
50.步骤206,如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;
51.步骤208,退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止;
52.步骤210,等待所有命令均正常终止完成;
53.步骤212,固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。
54.在本实施例中,提供了一种nvm子系统复位的实现方法,该方法可用于sanblaze测试平台。sanblaze公司的仿真和验证产品提供可扩展性,高性能和可配置的仿真测试环境用来测试fc,fcoe,iscsi,sas/sata,nvme,nvme over fabric(nvmof)以及nvme over fc(fc-nvme)等技术涉及的启动器(initiator,即主机)和目标器(target,即存储系统或者ssd盘)。sanblaze的仿真产品已经广泛部署在全球绝大多数的主流存储硬件和软件厂商。
55.具体地,首先,ssd获取ssd控制器发送的子系统复位中断信号。接着,固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完,并根据不同的判断结果进行不同的复位处理。
56.如果所有命令都已处理完,则标记中断复位模式事件,然后再执行如图4中所示的
子流程。
57.如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作。退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止;等待所有命令均正常终止完成再执行如图4中所示的子流程。
58.具体地,图4中所示的子流程包括:固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。
59.在一个实施例中,在链路重新开始训练的步骤之后还包括:等待主机发送控制器配置寄存器使能命令,重新开始处理命令。
60.在本实施例中,通过ssd获取ssd控制器发送的子系统复位中断信号;固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止;所有命令均正常终止完成;固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。本方案所提供的方案可以根据收到主机发送的子系统复位请求时ssd是否正在处理读写命令来采用不同的方案来处理复位事件,达到不同的测试平台都能测试通过的目的。
61.在一个实施例中,如图3所示,提供了一种nvm子系统复位的实现方法,该方法还包括:
62.步骤302,ssd上电后正常处理命令,并执行nvm子系统复位测试脚本;
63.步骤304,主机发送子系统复位请求给ssd;
64.步骤306,ssd获取ssd控制器发送的子系统复位中断信号;
65.步骤308,固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;
66.步骤310,如果所有命令都已处理完,则标记中断复位模式事件;
67.步骤312,固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练
68.在本实施例中,可参考图4所示的nvm subsystem reset方案的流程示意图,其具体的实现过程如下:
69.1、正常上电后,ssd正常处理命令,执行nvm subsystem reset(nvm子系统复位)测试脚本。
70.2、主机发subsystem复位请求(通过写nvme寄存器的nssr.nssrc(nvm subsystem reset.nvm subsystem reset control子系统复位控制)字段4e564d65h来触发)。
71.3、ssd收到ssd controller(控制器)发来的subsystem reset中断信号。
72.4、fw(固件)跳转到中断处理函数处理该事件;此时判断ssd是否有命令未处理完。
73.5、如果有命令没处理完,则标记reset-user(用户复位模式)事件,不做reset相关操作;退出中断函数并跳转到步骤7。
74.6、如果所有命令都已处理完,则标记reset-isr(中断复位模式)事件,并跳转到步骤9。
75.7、ssd回到主状态机,进入到reset状态,首先将正在进行的命令终止。
76.8、等待所有命令均正常终止掉。
77.9、fw向ssd controller发停止ltssm(link training status state machine链路训练状态机)请求。
78.10、ssd做pcie核复位。
79.11、等待参考时钟正常可用。
80.12、ssd重新配置pcie寄存器。
81.13、ssd做nvme核复位。
82.14、ssd做nvme初始化。
83.15、fw向ssd controller发开启ltssm请求。
84.16、写nssro(nvm subsystem reset occurred发生nvm子系统复位)寄存器,表示子系统复位已发生过。
85.17、链路重新开始训练。
86.18、等待主机发cc en(控制器配置寄存器使能),重新开始处理命令。
87.应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
88.在一个实施例中,如图5所示,提供了一种nvm子系统复位的实现装置500,该装置包括:
89.获取模块501,所述获取模块用于ssd获取ssd控制器发送的子系统复位中断信号;
90.判断模块502,所述判断模块用于固件跳转到中断处理函数处理事件,并判断ssd是否有命令未处理完;
91.第一标记模块503,所述第一标记模块用于如果有命令没处理完,则标记用户复位模式事件并不做复位相关操作;
92.命令终止模块504,所述命令终止模块用于退出中断处理函数,待ssd回到主状态机进入到重启状态,将正在进行的命令终止,等待所有命令均正常终止完成;
93.子流程模块505,所述子流程模块用于固件向ssd控制器发停止ltssm请求,ssd做pcie核复位,等待参考时钟正常可用,ssd重新配置pcie寄存器,ssd做nvme核复位,ssd做nvme初始化,固件向ssd控制器发开启ltssm请求,写nssro寄存器表示子系统复位已发生过,链路重新开始训练。
94.在一个实施例中,如图6所示,提供了一种nvm子系统复位的实现装置500,该装置还包括第二标记模块506,所述第二标记模块用于:
95.如果所有命令都已处理完,则标记中断复位模式事件并跳转至子流程模块。
96.在一个实施例中,如图7所示,提供了一种nvm子系统复位的实现装置500,该装置还包括请求模块507,所述请求模块用于:
97.ssd上电后正常处理命令,并执行nvm子系统复位测试脚本;
98.主机发送子系统复位请求给ssd。
99.在一个实施例中,如图8所示,提供了一种nvm子系统复位的实现装置500,该装置还包括等待模块508,所述等待模块用于:
100.等待主机发送控制器配置寄存器使能命令,重新开始处理命令。
101.关于nvm子系统复位的实现装置的具体限定可以参见上文中对于nvm子系统复位的实现方法的限定,在此不再赘述。
102.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图9所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种nvm子系统复位的实现方法。
103.本领域技术人员可以理解,图9中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
104.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
105.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
106.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
107.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
108.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来
说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1