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

一种NVMe固态硬盘异常处理方法、装置及集成芯片与流程

2021-04-09 20:32:00 来源:中国专利 TAG:固态 硬盘 装置 集成芯片 异常
一种NVMe固态硬盘异常处理方法、装置及集成芯片与流程

本发明涉及固态硬盘运行领域,特别涉及一种nvme固态硬盘异常处理方法、装置及集成芯片。



背景技术:

当前,nvme(non-volatilememoryexpress,快速非易失性存储)固态硬盘(solidstatedisk,ssd)以其低延迟、低功耗、高带宽等诸多优势获得也存储届越来越多的关注,也成为了存储设备发展的新风向。nvme控制器在数据路径上的对象主要包括pcie(peripheralcomponentinterconnectexpress,高速外围组件互联),nvme控制器、片上缓存或ddr存储器(doubledatarate,双倍速率同步动态随机存储器)、nandflash控制器、ldpc(lowdensityparitycheck,稀疏数据校验技术)编解码、raid(redundantarraysofindependentdisk,独立冗余磁盘阵列技术)、cpu(centralprocessingunit,中央处理单元)等。为了提高读数据的带宽,最新的一种读方法是将nandflash控制器中,把nand颗粒读取的零碎数据直接通过硬件电路传到nvme控制器,这样就避免了ssd控制器的缓存或ddr上的等待时间,且通过硬件电路直接传输方式省去了cpu配置nvmedma(directmemoryaccess,直接内存存取)的时间,从而提高了固态硬盘读操作数据带宽。

但此种处理下,一旦发生数据读取错误,固态硬盘的读操作会卡住无法继续进行,如何解决读取错误以及数据的异常恢复,是本领域技术人员要解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种nvme固态硬盘异常处理方法、装置及集成芯片。其具体方案如下:

一种nvme固态硬盘异常处理方法,包括:

当nandflash控制器检测到直接传输出现错误,通过所述nandflash控制器将与nvme控制器的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报cpu;

当所述nvme控制器检测到所述data_trans_err信号为1,通过nvme控制器将出现错误的数据从所述nandflash控制器中读出,并发送与所述nandflash控制器的握手信号,然后在所述nvme控制器内部丢弃所述数据;

当所述cpu收到所述信息,通过所述cpu调用raid模块对所述数据进行恢复。

优选的,所述nvme固态硬盘异常处理方法还包括:

当所述raid模块对所述数据进行恢复且恢复失败,进行以下操作:

通过所述cpu配置dma命令,并将所述dma命令中的data_cmd_err域段置为1;

当所述nvme控制器接收到所述dma命令,通过所述nvme控制器对所述dma命令对应的数据进行搬移,以将该数据写入主机内存,将所述dma命令对应的第一执行结果中的data_cmd_err域段置为1后上报至所述cpu;

当所述nvme控制器完成nvme命令对应的所有所述dma命令的数据搬移,通过所述nvme控制器将所述nvme命令对应的第二执行结果中的data_cmd_err域段置为1后上报至所述cpu。

优选的,所述nvme固态硬盘异常处理方法还包括:

当所述cpu收到所述第二执行结果,通过所述cpu向所述nvme命令对应的cq下发完成队列的具体数据,并将所述队列的错误状态置为1;

通过所述nvme控制器向所述主机内存写入所述具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

优选的,所述nvme固态硬盘异常处理方法还包括:

当所述raid模块对所述数据进行恢复且恢复成功,进行以下操作:

通过所述cpu将恢复成功的所述数据写入ssd控制器的片上缓存或ddr存储器,并相应配置dma命令;

当nvme控制器接收到所述dma命令,通过所述nvme控制器对所述dma命令对应的数据进行搬移,以将该数据写入主机内存,将所述dma命令对应的第一执行结果上报至所述cpu;

当所述nvme控制器完成nvme命令对应的所有所述dma命令的数据搬移,通过所述nvme控制器将所述nvme命令对应的第二执行结果上报至所述cpu。

优选的,所述nvme固态硬盘异常处理方法还包括:

通过所述nvme控制器向主机回复执行成功的cq数据。

优选的,所述nvme固态硬盘异常处理方法还包括:

当所述cpu收到所述第二执行结果,通过所述cpu向所述nvme命令对应的cq下发完成队列的具体数据;

通过所述nvme控制器向所述主机内存写入所述具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

相应的,本申请还公开了一种nvme固态硬盘异常处理装置,包括nandflash控制器、nvme控制器和cpu,其中:

当所述nandflash控制器检测到直接传输出现错误时,将与所述nvme控制器的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报所述cpu;

当所述nvme控制器检测到所述data_trans_err信号为1,将出现错误的数据从所述nandflash控制器中读出,并发送与所述nandflash控制器的握手信号,然后在所述nvme控制器内部丢弃所述数据;

当所述cpu收到所述信息,调用raid模块对所述数据进行恢复。

优选的,当所述raid模块对所述数据进行恢复且恢复失败,所述cpu配置dma命令,并将所述dma命令中的data_cmd_err域段置为1;

当所述nvme控制器接收到所述dma命令,对所述dma命令对应的数据进行搬移,以将该数据写入主机内存,将所述dma命令对应的第一执行结果中的data_cmd_err域段置为1后上报至所述cpu;

当所述nvme控制器完成nvme命令对应的所有所述dma命令的数据搬移,将所述nvme命令对应的第二执行结果中的data_cmd_err域段置为1后上报至所述cpu。

优选的,当所述cpu收到所述第二执行结果,向所述nvme命令对应的cq下发完成队列的具体数据,并将所述队列的错误状态置为1;

所述nvme控制器向所述主机内存写入所述具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

相应的,本申请还公开了一种集成芯片,包括:

如上文任一项所述nvme固态硬盘异常处理装置。

本申请公开了一种nvme固态硬盘异常处理方法,包括:当nandflash控制器检测到直接传输出现错误,通过所述nandflash控制器将与所述nvme控制器的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报cpu;当所述nvme控制器检测到所述data_trans_err信号为1,通过nvme控制器将出现错误的数据从所述nandflash控制器中读出,并发送与所述nandflash控制器的握手信号,然后在所述nvme控制器内部丢弃所述数据;当所述cpu收到所述信息,通过所述cpu调用raid模块对所述数据进行恢复。本申请对直接传输出现错误的情况进行异常处理,通过nandflash控制器实现data_trans_err信号的置位和信息上报,nvme控制器则在已知data_trans_err信号置1的情况下进行握手,保证后续信息的正常传递,同时cpu调用raid模块进行数据恢复,整个过程对传输错误的情况标记和处理恢复,避免读操作流程因该错误卡顿或停止,降低了错误出现对数据传输的影响。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例中一种nvme固态硬盘异常处理方法的步骤流程图;

图2为本发明实施例中一种nvme固态硬盘异常处理方法的子步骤流程图;

图3为本发明实施例中一种nvme固态硬盘异常处理方法的子步骤流程图;

图4为本发明实施例中一种nvme固态硬盘异常处理系统的结构分布图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有的最新读方法一旦发生数据读取错误,固态硬盘的读操作会卡住无法继续进行,如何解决读取错误以及数据的异常恢复,时本领域技术人员要解决的问题。本申请中整个过程对传输错误的情况标记和处理恢复,避免读操作流程因该错误卡顿或停止,降低了错误出现对数据传输的影响。

本发明实施例公开了一种nvme固态硬盘异常处理方法,参见图1所示,包括:

s1:当nandflash控制器检测到直接传输出现错误,通过nandflash控制器将与nvme控制器的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报cpu;

s2:nvme控制器检测到data_trans_err信号为1,通过nvme控制器将出现错误的数据从nandflash控制器中读出,并发送与nandflash控制器的握手信号,然后在nvme控制器内部丢弃数据;

可以理解的是,nvme控制器在检测到data_trans_err信号为1时一边读出数据、发送握手信号,避免整个读数据过程卡顿,另一方面丢弃该数据,避免垃圾数据被传输,丢弃动作包括:保持垃圾数据前的已传输数据的传输长度不变,且不发起nvmedma传输。

s3:当cpu收到信息,通过cpu调用raid模块对数据进行恢复。

进一步的,根据数据恢复是否成功分为两种情况,参见图2所示,当raid模块对数据进行恢复且恢复失败,进行以下操作:

s41:通过cpu配置dma命令,并将dma命令中的data_cmd_err域段置为1;

s42:当nvme控制器接收到dma命令,通过nvme控制器对dma命令对应的数据进行搬移,以将该数据写入主机内存,将dma命令对应的第一执行结果中的data_cmd_err域段置为1后上报至cpu;

s43:当nvme控制器完成nvme命令对应的所有dma命令的数据搬移,通过nvme控制器将nvme命令对应的第二执行结果中的data_cmd_err域段置为1后上报至cpu。

可以理解的是,s42、s43中第一执行结果和第二执行结果的data_cmd_err域段被置为1,表示由cpu下发的包含错误的dma命令已被执行完成。

进一步的,在第二执行结果上报cpu后,nvme固态硬盘异常处理方法还包括:

s44:当cpu收到第二执行结果,通过cpu向nvme命令对应的cq(completionqueue,完成队列)下发完成队列的具体数据,并将队列的错误状态置为1;

s45:通过nvme控制器向主机内存写入具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

可以理解的是,cpu将队列的错误状态置为1,用于告诉主机该笔nvme命令的执行结果以及具体发生的错误。

类似的,参见图3所示,当raid模块对数据进行恢复且恢复成功,进行以下操作:

s51:通过cpu将恢复成功的数据写入ssd控制器的片上缓存或ddr存储器,并相应配置dma命令;

s52:当nvme控制器接收到dma命令,通过nvme控制器对dma命令对应的数据进行搬移,以将该数据写入主机内存,将dma命令对应的第一执行结果上报至cpu;

s53:当nvme控制器完成nvme命令对应的所有dma命令的数据搬移,通过nvme控制器将nvme命令对应的第二执行结果上报至cpu。

进一步的,在上报第二执行结果后,进行cq数据的处理,该处理包括可由软件或硬件实现,硬件实现的过程为:通过nvme控制器向主机回复执行成功的cq数据;软件实现的过程为:当cpu收到第二执行结果,通过cpu向nvme命令对应的cq下发完成队列的具体数据;通过nvme控制器向主机内存写入具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

可以理解的是,本实施例种异常处理方法采用了软硬件协同的方式,其中nandflash控制器和nvme控制器执行的操作均属于硬件操作,cpu的操作属于软件操作,cpu调用raid模块的操作属于软硬件协同。利用软硬件协同技术,本实施例实现了不同异常场景下的固态硬盘异常处理方案,能够有效、快速地完成错误处理,避免固态硬盘发生卡死等严重问题。

本申请公开了一种nvme固态硬盘异常处理方法,包括:当nandflash控制器检测到直接传输出现错误,通过nandflash控制器将与nvme控制器的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报cpu;当nvme控制器检测到data_trans_err信号为1,通过nvme控制器将出现错误的数据从nandflash控制器中读出,并发送与nandflash控制器的握手信号,然后在nvme控制器内部丢弃数据;当cpu收到信息,通过cpu调用raid模块对数据进行恢复。本申请对直接传输出现错误的情况进行异常处理,通过nandflash控制器实现data_trans_err信号的置位和信息上报,nvme控制器则在已知data_trans_err信号置1的情况下进行握手,保证后续信息的正常传递,同时cpu调用raid模块进行数据恢复,整个过程对传输错误的情况标记和处理恢复,避免读操作流程因该错误卡顿或停止,降低了错误出现对数据传输的影响。

相应的,本申请实施例还公开了一种nvme固态硬盘异常处理装置,参见图4所示,包括nandflash控制器1、nvme控制器2和cpu3,其中:

当nandflash控制器1检测到直接传输出现错误时,将与nvme控制器2的传输接口信号data_trans_err信号置为1,并将出现错误的信息上报cpu3;

当nvme控制器2检测到data_trans_err信号为1,将出现错误的数据从nandflash控制器1中读出,并发送与nandflash控制器1的握手信号,然后在nvme控制器2内部丢弃数据;

当cpu3收到信息,调用raid模块对数据进行恢复。

本申请对直接传输出现错误的情况进行异常处理,通过nandflash控制器1实现data_trans_err信号的置位和信息上报,nvme控制器2则在已知data_trans_err信号置1的情况下进行握手,保证后续信息的正常传递,同时cpu3调用raid模块进行数据恢复,整个过程对传输错误的情况标记和处理恢复,避免读操作流程因该错误卡顿或停止,降低了错误出现对数据传输的影响。

在一些具体的实施例中,当raid模块对数据进行恢复且恢复失败,cpu3配置dma命令,并将dma命令中的data_cmd_err域段置为1;

当nvme控制器2接收到dma命令,对dma命令对应的数据进行搬移,以将该数据写入主机内存,将dma命令对应的第一执行结果中的data_cmd_err域段置为1后上报至cpu3;

当nvme控制器2完成nvme命令对应的所有dma命令的数据搬移,将nvme命令对应的第二执行结果中的data_cmd_err域段置为1后上报至cpu3。

在一些具体的实施例中,当cpu3收到第二执行结果,向nvme命令对应的cq下发完成队列的具体数据,并将队列的错误状态置为1;

nvme控制器2向主机内存写入具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

在一些具体的实施例中,当raid模块对数据进行恢复且恢复成功,cpu3将恢复成功的数据写入ssd控制器的片上缓存或ddr存储器,并相应配置dma命令;

当nvme控制器2接收到dma命令,通过nvme控制器2对dma命令对应的数据进行搬移,以将该数据写入主机内存,将dma命令对应的第一执行结果上报至cpu3;

当nvme控制器2完成nvme命令对应的所有dma命令的数据搬移,将nvme命令对应的第二执行结果上报至cpu3。

在一些具体的实施例中,nvme控制器2还用于:向主机回复执行成功的cq数据。

在一些具体的实施例中,当cpu3收到第二执行结果,向nvme命令对应的cq下发完成队列的具体数据;nvme控制器2向主机内存写入具体数据,并根据pcie的配置向主机发送msi-x中断消息、msi中断消息或pin-base中断消息。

相应的,本申请实施例还公开了一种集成芯片,包括:

如上文任一项实施例所述nvme固态硬盘异常处理装置。

其中,具体有关nvme固态硬盘异常处理装置的相关内容可参照上文实施例中描述,此处不再赘述。

其中,本实施例汇总集成芯片具有与上文实施例中nvme固态硬盘异常处理装置相同的技术效果,此处不再赘述。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种nvme固态硬盘异常处理方法、装置及集成芯片进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜