• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 32
    • 下载费用:30 金币  

    重庆时时彩龙虎合的群: 一种交互方法、NVME设备、HOST及物理机系统.pdf

    关 键 词:
    一种 交互 方法 NVME 设备 HOST 物理 系统
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201510547074.1

    申请日:

    2015.08.31

    公开号:

    CN106484549A

    公开日:

    2017.03.08

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 11/00申请日:20150831|||公开
    IPC分类号: G06F11/00; G06F13/16 主分类号: G06F11/00
    申请人: 华为技术有限公司
    发明人: 种锋生; 张羽; 俞柏峰
    地址: 518129 广东省深圳市龙岗区坂田华为总部办公楼
    优先权:
    专利代理机构: 北京中博世达专利商标代理有限公司 11274 代理人: 申健
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201510547074.1

    授权公告号:

    |||

    法律状态公告日:

    2017.04.05|||2017.03.08

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本发明提供一种交互方法、NVMe设备、HOST及物理机系统,涉及计算机技术领域,用于实现NVMe设备的热插拔,保证HOST侧与NVMe设备正常交互的前提下,能够有效避免由于SDI卡(NVMe设备)系统复位导致的系统挂死。包括:主机HOST将任务指令写入所述HOST内存中的第一队列中,所述任务指令指示NVMe设备将执行的操作;NVMe设备为与HOST通过PCIe总线进行交互的外围设备;HOST将触发标识写入HOST内存中的第二队列;触发标识代表HOST已确认将与NVMe设备进行交互,交互为NVMe设备执行操作需要与HOST进行的交互;HOST确认操作已完成,则将完成标识写入第一队列,完成标识代表HOST已确认交互已完成。

    权利要求书

    1.一种交互方法,其特征在于,包括:
    主机HOST将任务指令写入所述HOST内存中的第一队列中,所述任
    务指令指示非易失存储快速通道NVMe设备将执行的操作;所述NVMe设
    备为与所述HOST通过快速外部组件互联PCIe总线进行交互的外围设备;
    所述HOST将触发标识写入所述HOST内存中的第二队列;所述触发
    标识代表所述HOST已确认将与所述NVMe设备进行交互,所述交互为所
    述NVMe设备执行所述操作需要与所述HOST进行的交互;
    所述HOST确认所述操作已完成,则将完成标识写入所述第一队列,
    所述完成标识代表所述HOST已确认所述交互已完成。
    2.根据权利要求1所述的方法,其特征在于,所述HOST确认所述操
    作已完成包括:
    所述HOST接收所述NVMe设备发送的预设中断,访问所述HOST内
    存中的第三队列,检测到操作完成标识,则确认所述操作已完成;
    其中,所述预设中断用于指示所述HOST访问所述第三队列,所述操
    作完成标识指示所述操作已完成。
    3.一种交互方法,其特征在于,包括:
    非易失存储快速通道NVMe设备轮询第一队列;所述第一队列存储在
    主机HOST的内存中;
    所述NVMe设备在所述第一队列中检测到触发标识,所述触发标识代
    表所述HOST已确认将与所述NVMe设备进行交互;所述交互为所述NVMe
    设备执行操作需要与所述HOST进行的交互;
    所述NVMe设备获取任务指令;所述任务指令指示所述NVMe设备将
    执行的所述操作;
    所述NVMe设备执行所述操作;
    所述NVMe设备在所述第一队列中检测到完成标识;所述完成标识指
    示所述HOST已确认所述交互已完成,所述完成标识是所述HOST确认所
    述操作完成之后写入所述第一队列的。
    4.根据权利要求3所述的方法,其特征在于,所述NVMe设备获取任
    务指令包括:
    所述NVMe设备访问所述HOST内存中的第二队列,在所述第二队列
    中获取所述任务指令。
    5.根据权利要求3或4所述的方法,其特征在于,若所述操作为写数
    据,则所述NVMe设备执行所述操作具体包括:
    所述NVMe设备在所述HOST的寄存器中获取待写数据,并将所述待
    写数据存储在所述NVMe设备的本地内存中;
    所述NVMe设备将操作完成标识写入所述HOST内的第三队列;所述
    操作完成标识指示所述操作已完成;
    所述NVMe设备向所述HOST发送第预设中断,指示所述HOST访问
    所述第三队列,确认所述操作已完成。
    6.根据权利要求3或4所述的方法,其特征在于,若所述操作为读数
    据,则所述NVMe设备执行所述操作具体包括:
    所述NVMe设备接收所述HOST的读数据请求,并将所述待读数据发
    送给所述HOST;
    所述NVMe设备接收所述HOST发送的第一中断,将操作完成标识写
    入所述HOST内的第三队列;所述操作完成标识指示所述操作已完成,所
    述第一中断用于指示所述NVMe设备将所述操作完成标识写入所述HOST
    内存中的第三队列;
    所述NVMe设备向所述HOST发送预设中断,指示所述HOST访问所
    述第三队列,确认所述操作已完成。
    7.根据权利要求1所述的方法,其特征在于,所述NVMe设备轮询第
    一队列包括:
    所述NVMe设备主动轮询所述第一队列;
    或,所述NVMe设备接收所述HOST发送的指示信息后轮询所述第一
    队列。
    8.一种主机HOST,其特征在于,包括:
    写入单元,用于将任务指令写入所述HOST内存中的第一队列中,所
    述任务指令指示非易失存储快速通道NVMe设备将执行的操作;所述NVMe
    设备为与所述HOST通过快速外部组件互联PCIe总线进行交互的外围设
    备;
    所述写入单元还用于,将触发标识写入所述HOST内存中的第二队列;
    所述触发标识代表所述HOST已确认将与非易失存储快速通道NVMe设备
    进行交互,所述交互为所述NVMe设备执行所述操作需要与所述HOST进
    行的交互;
    确认单元,用于确认所述操作已完成;
    所述写入单元还用于,在所述确认单元确认所述操作已完成时,将完成
    标识写入所述第一队列,所述完成标识代表所述HOST已确认所述交互已
    完成。
    9.根据权利要求8所述的HOST,其特征在于,所述确认单元具体用
    于,
    所述HOST接收所述NVMe设备发送的预设中断,访问所述HOST内
    存中的第三队列,检测到操作完成标识,则确认所述操作已完成;
    其中,所述预设中断用于指示所述HOST访问所述第三队列,所述操
    作完成标识指示所述操作已完成。
    10.一种非易失存储快速通道NVMe设备,其特征在于,包括:
    检测单元,用于轮询第一队列;所述第一队列存储在主机HOST的内
    存中;
    所述检测单元还用于,在所述第一队列中检测到触发标识,所述触发标
    识代表所述HOST已确认将与所述NVMe设备进行交互;所述交互为所述
    NVMe设备执行操作需要与所述HOST进行的交互;
    获取单元,用于获取任务指令;所述任务指令指示所述HOST将执行
    的所述操作;
    执行单元,用于执行所述操作;
    所述检测单元还用于,在所述第一队列中检测到完成标识;所述完成标
    识指示所述HOST已确认与所述交互已完成,所述完成标识是所述HOST
    确认所述操作完成之后写入所述第一队列的。
    11.根据权利要求10所述的设备,其特征在于,所述获取单元具体用
    于:访问所述HOST内存中的第二队列,在所述第二队列中获取所述任务
    指令。
    12.根据权利要求10或11所述的设备,其特征在于,若所述操作为
    写数据,则所述执行单元具体用于:
    在所述HOST的寄存器中获取待写数据,并将所述待写数据存储在所
    述NVMe设备的本地内存中;
    将操作完成标识写入所述HOST内的第三队列;所述操作完成标识指
    示所述操作已完成;
    向所述HOST发送第预设中断,指示所述HOST访问所述第三队列,
    确认所述操作已完成。
    13.根据权利要求10或11所述的设备,其特征在于,若所述操作为
    读数据,则所述执行单元具体用于:
    接收所述HOST的读数据请求,并将所述待读数据发送给所述HOST;
    接收所述HOST发送的第一中断,将操作完成标识写入所述HOST内
    的第三队列;所述操作完成标识指示所述操作已完成,所述第一中断用于指
    示所述NVMe设备将所述操作完成标识写入所述HOST内存中的第三队列;
    向所述HOST发送预设中断,指示所述HOST访问所述第三队列,确
    认所述操作已完成。
    14.根据权利要求10所述的设备,其特征在于,所述检测单元具体用
    于,设备主动轮询所述第一队列;
    或,接收所述HOST发送的指示信息后轮询所述第一队列。
    15.一种物理机系统,包括主机HOST和非易失存储快速通道NVMe
    设备,其特征在于,
    所述HOST将任务指令写入所述HOST内存中的第一队列中,所述任
    务指令指示非易失存储快速通道NVMe设备将执行的操作;所述NVMe设
    备为与所述HOST通过快速外部组件互联PCIe总线进行交互的外围设备;
    所述HOST将触发标识写入所述HOST内存中的第二队列;所述触发
    标识代表所述HOST已确认将与所述NVMe设备进行交互,所述交互为所
    述NVMe设备执行所述操作需要与所述HOST进行的交互;
    所述NVMe设备轮询所述第二队列;
    所述NVMe设备在所述第二队列中检测到触发标识;
    所述NVMe设备在所述第一队列中获取任务指令;
    所述NVMe设备执行所述操作;
    所述HOST获取所述操作完成标识,确认所述操作已完成,则将完成
    标识写入所述第二队列;所述操作完成标识指示所述操作已完成;所述完成
    标识代表所述HOST已确认所述交互已完成;
    所述NVMe设备在所述第二队列中检测到完成标识。

    说明书

    一种交互方法、NVMe设备、HOST及物理机系统

    技术领域

    本发明涉及计算机技术领域,尤其涉及一种交互方法及、NVMe(Non
    Volatile Memory express,非易失存储快速通道)设备、HOST(主机)
    及物理机系统。

    背景技术

    通常,运行在物理机CPU(Central Processing Unit,处理器)之上
    的软件可以分为系统软件和用户的业务软件。如图1所示,是现有的SDI
    (Service Driven lnfrastructure,业务驱动基础架构)架构,即将原来部
    署在处理器之上的系统软件卸载到独立的SDI卡上,CPU上仅运行用户
    的业务软件。这样,就将系统分为了HOST侧、NVMe设备侧两部分,二
    者之间通过PCIe(Peripheral Component Interconnect express,快速外
    部组件互联)总线进行通信。

    SDI卡对CPU(HOST侧)呈现为NVMe设备,通过PCIe总线以及
    标准NVMe协议进行通信。NVMe设备(如:SDI卡)与HOST侧进行
    通信交互的过程中,HOST侧的CPU需要先后两次对NVMe设备的寄存
    器进行写操作(即进行门铃操作),改写NVMe设备的寄存器中某个字段,
    使得NVMe获知将与HOST进行交互,以保证交互正常进行。

    通常,SDI卡是个插在服务器标准PCIe槽位上的独立硬件卡,卡上有
    承载系统软件和固件,这些软件和固件在使用过程中是需要进行升级。在
    一般情况下,软件及固件的升级都需要将SDI卡系统复位才能生效。SDI
    卡系统复位,对HOST侧而言等同于NVMe设备突然被拔掉。如果在
    HOST侧的CPU操作SDI卡的寄存器的时候,SDI卡系统复位,导致CPU
    的读/写请求得不到响应,CPU就会误认为设备异常,报出MCE(Machine
    Check Exception,机器校验错误)让整个系统挂死。

    发明内容

    本发明实施例提供一种交互方法、NVMe设备、HOST及物理机系
    统,保证HOST侧与NVMe设备正常交互的前提下,能够有效避免由于
    SDI卡(NVMe设备)系统复位导致的系统挂死,实现NVMe设备的热插
    拔。

    本发明的实施例采用如下技术方案:

    第一方面,公开了一种交互方法,包括:

    主机HOST将任务指令写入所述HOST内存中的第一队列中,所
    述任务指令指示非易失存储快速通道NVMe设备将执行的操作;所述
    NVMe设备为与所述HOST通过快速外部组件互联PCIe总线进行交互
    的外围设备;

    所述HOST将触发标识写入所述HOST内存中的第二队列;所述
    触发标识代表所述HOST已确认将与所述NVMe设备进行交互,所述
    交互为所述NVMe设备执行所述操作需要与所述HOST进行的交互;

    所述HOST确认所述操作已完成,则将完成标识写入所述第一队
    列,所述完成标识代表所述HOST已确认所述交互已完成。

    结合第一方面,在第一方面的第一种可能的实现方式中,所述
    HOST确认所述操作已完成包括:

    所述HOST接收所述NVMe设备发送的预设中断,访问所述HOST
    内存中的第三队列,检测到操作完成标识,则确认所述操作已完成;

    其中,所述预设中断用于指示所述HOST访问所述第三队列,所
    述操作完成标识指示所述操作已完成。

    第二方面,公开了一种交互方法,包括:

    非易失存储快速通道NVMe设备轮询第一队列;所述第一队列存
    储在主机HOST的内存中;

    所述NVMe设备在所述第一队列中检测到触发标识,所述触发标
    识代表所述HOST已确认将与所述NVMe设备进行交互;所述交互为
    所述NVMe设备执行操作需要与所述HOST进行的交互;

    所述NVMe设备获取任务指令;所述任务指令指示所述NVMe设
    备将执行的所述操作;

    所述NVMe设备执行所述操作;

    所述NVMe设备在所述第一队列中检测到完成标识;所述完成标
    识指示所述HOST已确认所述交互已完成,所述完成标识是所述HOST
    确认所述操作完成之后写入所述第一队列的。

    结合第二方面,在第二方面的第一种可能的实现方式中,所述
    NVMe设备获取任务指令包括:

    所述NVMe设备访问所述HOST内存中的第二队列,在所述第二
    队列中获取所述任务指令。

    结合第二方面或第二方面的第一种可能的实现方式,在第二方面
    的第二种可能的实现方式中,若所述操作为写数据,则所述NVMe设
    备执行所述操作具体包括:

    所述NVMe设备在所述HOST的寄存器中获取待写数据,并将所
    述待写数据存储在所述NVMe设备的本地内存中;

    所述NVMe设备将操作完成标识写入所述HOST内的第三队列;
    所述操作完成标识指示所述操作已完成;

    所述NVMe设备向所述HOST发送第预设中断,指示所述HOST
    访问所述第三队列,确认所述操作已完成。

    结合第二方面或第二方面的第一种可能的实现方式,在第二方面
    的第三种可能的实现方式中,若所述操作为读数据,则所述NVMe设
    备执行所述操作具体包括:

    所述NVMe设备接收所述HOST的读数据请求,并将所述待读数
    据发送给所述HOST;

    所述NVMe设备接收所述HOST发送的第一中断,将操作完成标
    识写入所述HOST内的第三队列;所述操作完成标识指示所述操作已
    完成,所述第一中断用于指示所述NVMe设备将所述操作完成标识写
    入所述HOST内存中的第三队列;

    所述NVMe设备向所述HOST发送预设中断,指示所述HOST访
    问所述第三队列,确认所述操作已完成。

    结合第二方面,在第二方面的第四种可能的实现方式中,所述
    NVMe设备轮询第一队列包括:

    所述NVMe设备主动轮询所述第一队列;

    或,所述NVMe设备接收所述HOST发送的指示信息后轮询所述
    第一队列。

    第三方面,公开了一种主机HOST,包括:

    写入单元,用于将任务指令写入所述HOST内存中的第一队列中,
    所述任务指令指示非易失存储快速通道NVMe设备将执行的操作;所
    述NVMe设备为与所述HOST通过快速外部组件互联PCIe总线进行交
    互的外围设备;

    所述写入单元还用于,将触发标识写入所述HOST内存中的第二
    队列;所述触发标识代表所述HOST已确认将与非易失存储快速通道
    NVMe设备进行交互,所述交互为所述NVMe设备执行所述操作需要
    与所述HOST进行的交互;

    确认单元,用于确认所述操作已完成;

    所述写入单元还用于,在所述确认单元确认所述操作已完成时,
    将完成标识写入所述第一队列,所述完成标识代表所述HOST已确认
    所述交互已完成。

    结合第三方面,在第三方面的第一种可能的实现方式中,所述确
    认单元具体用于,

    所述HOST接收所述NVMe设备发送的预设中断,访问所述HOST
    内存中的第三队列,检测到操作完成标识,则确认所述操作已完成;

    其中,所述预设中断用于指示所述HOST访问所述第三队列,所
    述操作完成标识指示所述操作已完成。

    第四方面,公开了一种非易失存储快速通道NVMe设备,包括:

    检测单元,用于轮询第一队列;所述第一队列存储在主机HOST
    的内存中;

    所述检测单元还用于,在所述第一队列中检测到触发标识,所述
    触发标识代表所述HOST已确认将与所述NVMe设备进行交互;所述
    交互为所述NVMe设备执行操作需要与所述HOST进行的交互;

    获取单元,用于获取任务指令;所述任务指令指示所述HOST将
    执行的所述操作;

    执行单元,用于执行所述操作;

    所述检测单元还用于,在所述第一队列中检测到完成标识;所述
    完成标识指示所述HOST已确认与所述交互已完成,所述完成标识是
    所述HOST确认所述操作完成之后写入所述第一队列的。

    结合第四方面,在第四方面的第一种可能的实现方式中,所述获
    取单元具体用于:访问所述HOST内存中的第二队列,在所述第二队
    列中获取所述任务指令。

    结合第四方面或第四方面的第一种可能的实现方式,在第四方面
    的第二种可能的实现方式中,若操作为写数据,则所述执行单元具体用
    于:

    在所述HOST的寄存器中获取待写数据,并将所述待写数据存储
    在所述NVMe设备的本地内存中;

    将操作完成标识写入所述HOST内的第三队列;所述操作完成标
    识指示所述操作已完成;

    向所述HOST发送第预设中断,指示所述HOST访问所述第三队
    列,确认所述操作已完成。

    结合第四方面或第四方面的第一种可能的实现方式,在第四方面
    的第三种可能的实现方式中,若操作为读数据,则所述执行单元具体用
    于:

    接收所述HOST的读数据请求,并将所述待读数据发送给所述
    HOST;

    接收所述HOST发送的第一中断,将操作完成标识写入所述HOST
    内的第三队列;所述操作完成标识指示所述操作已完成,所述第一中断
    用于指示所述NVMe设备将所述操作完成标识写入所述HOST内存中
    的第三队列;

    向所述HOST发送预设中断,指示所述HOST访问所述第三队列,
    确认所述操作已完成。

    结合第四方面,在第四方面的第四种可能的实现方式中,所述检
    测单元具体用于,设备主动轮询所述第一队列;

    或,接收所述HOST发送的指示信息后轮询所述第一队列。

    第五方面,公开了一种物理机系统,包括主机HOST和非易失存
    储快速通道NVMe设备,

    所述HOST将任务指令写入所述HOST内存中的第一队列中,所
    述任务指令指示非易失存储快速通道NVMe设备将执行的操作;所述
    NVMe设备为与所述HOST通过快速外部组件互联PCIe总线进行交互
    的外围设备;

    所述HOST将触发标识写入所述HOST内存中的第二队列;所述
    触发标识代表所述HOST已确认将与所述NVMe设备进行交互,所述
    交互为所述NVMe设备执行所述操作需要与所述HOST进行的交互;

    所述NVMe设备轮询所述第二队列;

    所述NVMe设备在所述第二队列中检测到触发标识;

    所述NVMe设备在所述第一队列中获取任务指令;

    所述NVMe设备执行所述操作;

    所述HOST获取所述操作完成标识,确认所述操作已完成,则将
    完成标识写入所述第二队列;所述操作完成标识指示所述操作已完成;
    所述完成标识代表所述HOST已确认所述交互已完成;

    所述NVMe设备在所述第二队列中检测到完成标识。

    本发明实施例提供的交互方法、NVMe设备、HOST及物理机系统,
    所述NVMe设备在主机HOST的内存中的第一队列中轮询到触发指令;
    所述触发指令指示所述HOST已确认将与所述NVMe设备进行交互。
    所述NVMe设备获取任务指令,执行所述任务指令指示的操作。NVMe
    设备在所述HOST的内存中的第一队列中检测到完成指令;所述完成
    指令指示所述HOST已确认与所述NVMe设备完成了交互。这样,在
    HOST与NVMe设备交互的过程中,避免HOST的CPU直接操作NVMe
    设备的寄存器,从而避免HOST的CPU对NVMe设备侧寄存器操作无
    响应导致系统挂死的情况出现。即使出现NVMe设备突然被拔掉也不
    会导致HOST的CPU操作寄存器无响应的情况,系统只会认为是一次
    读写超时,从而有效的避免NVMe设备复位引起的系统挂死,实现
    NVMe设备的热插拔。

    附图说明

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

    图1为现有的SDI架构的示意图;

    图2是本发明实施例1提供的交互方法的流程示意图;

    图3是本发明实施例2提供的交互方法的流程示意图;

    图4是本发明实施例3提供的交互方法的流程示意图;

    图5是本发明实施例4提供的写数据的流程示意图;

    图6是本发明实施例5提供的读数据的流程示意图;

    图7是本发明实施例6提供的HOST的结构框图;

    图8是本发明实施例7提供的NVMe设备的结构框图;

    图9是本发明实施例8提供的HOST的结构框图;

    图10是本发明实施例9提供的NVMe设备的结构框图;

    图11是本发明实施例10提供的物理机系统的架构图。

    具体实施方式

    下面将结合本发明实施例中的附图,对本发明实施例中的技术方
    案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分
    实施例,而不是全部的实施例?;诒痉⒚髦械氖凳├?,本领域普通技
    术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于
    本发明?;さ姆段?。

    所谓SDI架构,即将原来部署在处理器之上的系统软件卸载到独立的
    SDI卡上,CPU上仅运行用户的业务软件。这样,就将系统分为了两部分。
    如图1所示,A部分称为HOST(主机)侧、B部分称为NVMe设备侧。
    通常,需要将SDI卡系统复位才能使得卡上有承载系统软件和固件正常升
    级。在SDI卡做系统复位动作时,对CPU而言等同于NVMe设备突然被
    拔掉。

    现有标准中,NVMe设备与HOST侧交互流程具体包括:

    (1)CPU(HOST侧的CPU)写入命令到SQ(Submission Queue,
    提交队列),即将本次交互执行的命令写入SQ中;

    (2)CPU写NVMe设备的Doorbell(门铃)寄存器,这是CPU对
    NVMe设备寄存器的直接操作,HOST侧告知NVMe设备将要进行二者
    间的交互;

    (3)NVMe设备从SQ队列中读取在步骤(1)写入的命令;

    (4)NVMe设备执行该命令;

    (5)NVMe设备将完成数据写入CQ(Completion Queue,完成队
    列)指示已完成步骤(1)写入的命令,并释放SQ;

    (6)NVMe Contreller发送MSI-X中断到CPU,指示CPU执行CQ;

    (7)CPU接收到中断后执行CQ;

    (8)CPU写NVMe设备的Doorbell寄存器,这是HOST对NVMe
    设备寄存器的直接操作。随后NVMe设备释放CQ队列。一次完整的
    NVMe协议交互完成。

    上述流程中,第(2)个步骤和第(8)步是HOST对NVMe设备寄
    存器的直接操作,其余步骤都是HOST侧对本方内存的读写、设备侧的行
    为。在步骤(2)、(8)中,如果NVMe设备突然被拔出(如:SDI卡进
    行复位),这时HOST侧CPU发起的读/写请求得不到响应,HOST就会
    认为设备异常,报出MCE错误让整个系统挂死。

    所谓热插拔(hot-plugging或Hot Swap),即带电插拔,就是用户
    在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡
    等部件,同时不影响系统的正常运行。本发明旨在提供一种NVMe设备的
    热插拔实现方法,使得在NVMe设备拔出(如:SDI卡做系统复位)时,
    不影响系统的正常运行。

    另外,对本发明涉及的队列做以解释说明。队列是常用数据结构之一,
    是一种特殊的线性表,它只允许在表的前端(frent)进行删除操作,而在
    表的后端(rear)进行插入操作。其中,进行插入操作的端称为队尾,进
    行删除操作的端称为队头。

    实施例1:

    本发明实施例提供一种交互方法,如图2所示,所述方法包括以下步
    骤:

    101、HOST将任务指令写入所述HOST内存中的第一队列中,所述
    任务指令指示NVMe设备将执行的操作;所述NVMe设备为与所述HOST
    通过快速外部组件互联PCIe总线进行交互的外围设备。

    其中,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    102、所述HOST将触发标识写入所述HOST内存中的第二队列;所
    述触发标识代表所述HOST已确认将与所述NVMe设备进行交互,所述
    交互为所述NVMe设备执行所述操作需要与所述HOST进行的交互。

    其中,所谓交互即参与活动的对象可以相互交流,双方面互动。在本
    发明实施例中特指:HOST指示NVMe设备要执行某操作时,在NVMe
    设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行的交流,
    以确保NVMe设备与HOST知晓进行的每一步流程。示例的,当HOST
    指示NVMe设备写数据,还需要写入触发标识,使得NVMe设备检测到
    触发标识后知晓HOST已经确认所述NVMe设备将从HOST的内存中写
    数据。又如:当NVMe设备执行写数据操作时,不单单是在HOST的内
    存中获取数据,还需要在完成写数据后写操作完成标识到HOST的内存,
    使得HOST知晓NVMe设备已完成写数据。

    另外,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    103、所述HOST确认所述操作已完成,则将完成标识写入所述第一
    队列,所述完成标识代表所述HOST已确认所述交互已完成。

    需要说明的是,与所述触发标识一样,所述完成标识也可以是所述第
    一队列中的一个地址位,用于指示所述HOST是否已确认所述交互已完
    成。

    具体实现中,所述HOST确认所述操作已完成包括:

    所述HOST接收所述NVMe设备发送的预设中断,访问所述HOST
    内存中的第三队列,检测到操作完成标识,则确认所述操作已完成;

    其中,所述预设中断用于指示所述HOST访问所述第三队列,所述操
    作完成标识指示所述操作已完成。

    需要说明的是,所述预设中断可以是MSI(Message Signaled
    Interrupt,消息信息中断)-X。另外,在本实施例中,所述第一队列可以
    是SQ(Submit Queue,提交队列),所述第二队列可以是DQ(Doorbell
    Queue,门铃队列),所述第三队列可以是CQ(Complete Queue,完成
    队列)。

    在现有NVMe设备与HOST交互过程中,HOST对NVMe设备的
    Doorbell操作是由指HOST直接写NVMe设备的寄存器,修改某个字段
    以告知NVMe设备需要与HOST进行交互,在此过程中,如果NVMe设
    备系统复位,就会导致HOST的写请求得不到响应,系统报出MCE,进
    而系统被挂起。本发明中,将Doorbell操作修改为由NVMe设备驱动去
    HOST的寄存器内存轮循第一队列,以确定是否将与HOST进行交互。这
    样既保证了NVMe设备与HOST之间交互的正常进行,又避免了由于
    NVMe设备系统复位导致的系统挂死。

    本发明实施例提供的交互方法,所述NVMe设备在主机HOST的
    内存中的第一队列中轮询到触发指令;所述触发指令指示所述HOST
    已确认将与所述NVMe设备进行交互。所述NVMe设备获取任务指令,
    执行所述任务指令指示的操作。NVMe设备在所述HOST的内存中的第
    一队列中检测到完成指令;所述完成指令指示所述HOST已确认与所述
    NVMe设备完成了交互。这样,在HOST与NVMe设备交互的过程中,
    避免HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的
    CPU对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即
    使出现NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无
    响应的情况,系统只会认为是一次读写超时,从而有效的避免NVMe设
    备复位引起的系统挂死,实现NVMe设备的热插拔。

    实施例2:

    本发明实施例提供一种交互方法,如图3所示,所述方法包括以下步
    骤:

    201、NVMe设备轮询第一队列;所述第一队列存储在主机HOST的
    内存中。

    所谓轮询,是指NVMe设备去监控或者不断的去读取HOST内存中
    的第一队列,直到读取到所述触发指令(如:特定地址位的数值有变化:
    变为“1”),则认为NVMe设备将与所述HOST进行交互。

    202、所述NVMe设备在所述第一队列中检测到触发标识,所述触发
    标识代表所述HOST已确认将与所述NVMe设备进行交互;所述交互为
    所述NVMe设备执行操作需要与所述HOST进行的交互。

    其中,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    另外,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    所谓交互,是指HOST指示NVMe设备要执行某操作时,在NVMe
    设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行的交互,
    以确保NVMe设备与HOST知晓进行的某一步流程。如:HOST在步骤
    101中写入任务指令,将指示NVMe设备写数据,之后在写入触发标识,
    使得NVMe设备检测到触发标识后知晓HOST已经确认所述NVMe设备
    将从HOST的内存中写数据。

    203、所述NVMe设备获取任务指令;所述任务指令指示所述NVMe
    设备将执行的所述操作。

    具体地,所述NVMe设备访问所述HOST内存中的第二队列,在所
    述第二队列中获取所述任务指令。

    204、所述NVMe设备执行所述操作。

    具体可以是,所述NVMe设备在所述HOST的内存中读取数据,或
    者,是所述NVMe设备接收HOST读数据的请求,将响应数据发送给
    HOST。

    205、所述NVMe设备在所述第一队列中检测到完成标识;所述完成
    标识指示所述HOST已确认所述交互已完成,所述完成标识是所述HOST
    确认所述操作完成之后写入所述第一队列的。

    与所述触发标识一样,所述完成标识也可以是所述第一队列中的一个
    地址位,用于指示所述HOST是否已确认所述交互已完成。

    在现有NVMe设备与HOST交互过程中,HOST对NVMe设备的
    Doorbell操作是由指HOST直接写NVMe设备的寄存器,修改某个字段
    以告知NVMe设备需要与HOST进行交互,在此过程中,如果NVMe设
    备系统复位,就会导致HOST的写请求得不到响应,系统报出MCE,进
    而系统被挂起。本发明中,将Doorbell操作修改为由NVMe设备驱动去
    HOST的寄存器内存轮循第一队列,以确定HOST是否已确认将进行交
    互。这样,HOST不用去对NVMe设备的寄存器进行写操作,就可以避免
    了由于NVMe设备突然拔出(即SDI卡系统复位)导致的系统挂死。另
    外,告知NVMe设备将与HOST进行交互,交互完成之前不能进行NVMe
    设备拔出(即SDI卡系统复位)。

    所述NVMe设备执行所述操作,具体可以包括以下两种情况:

    第一、若所述操作为写数据,则所述NVMe设备执行所述操作具体包
    括:

    所述NVMe设备在所述HOST的寄存器中获取待写数据,并将所述
    待写数据存储在所述NVMe设备的本地内存中;所述NVMe设备将操作
    完成标识写入所述HOST内的第三队列;所述操作完成标识指示所述操作
    已完成;所述NVMe设备向所述HOST发送第预设中断,指示所述HOST
    访问所述第三队列,确认所述操作已完成。

    具体地,(1)NVMe Controller从SQ中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为将待写数据写入到所述NVMe设备。

    (2)NVMe Controller操作NVMe设备侧的DMA()引擎在HOST
    的内存中获取数据。

    (3)NVMe Controller封装所述待写数据后发送至NVMe设备侧的
    分布式存储软件。

    其中,所述分布式存储软件是所述NVMe设备侧的用于存储数据的。
    所谓封装待写数据即将待写数据封装成分布式存储软件可以识别的格式。

    (4)分布式存储软件向NVMe Controller返回Response。

    实际上,就是分布式存储软件在存储完NVMe Controller发送的数据
    之后,向NVMe Controller返回一个信息,用于告知NVMe Controller本
    次交互要写入NVMe设备的待写数据已经传完。

    (5)NVMe Controller将操作完成标识写入第三队列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (6)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    第二、若所述操作为读数据,则所述NVMe设备执行所述操作具体包
    括:所述NVMe设备接收所述HOST的读数据请求,并将所述待读数据
    发送给所述HOST;所述NVMe设备接收所述HOST发送的第一中断,
    将操作完成标识写入所述HOST内的第三队列;所述操作完成标识指示所
    述操作已完成,所述第一中断用于指示所述NVMe设备将所述操作完成标
    识写入所述HOST内存中的第三队列;所述NVMe设备向所述HOST发
    送预设中断,指示所述HOST访问所述第三队列,确认所述操作已完成。

    其中,所述第一中断可以是DMA((Direct Memory Access,直接内
    存存取))中断。

    具体地,(1)NVMe Controller从SQ队列中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为所述NVMe设备从HOST侧的内存中读数据。

    (2)NVMe Controller封装待读数据后发送至分布式存储软件。

    所谓封装待读数据即将待读数据封装成分布式存储软件可以识别的
    格式。

    (3)分布式存储软件返回Response。

    在此Response用于告知NVMe Controller所述待读数据已完成接
    收。

    (4)NVMe Controller设备侧的DMA引擎在分布式存储软件中读取
    待读数据,并将待读数据发送至HOST。

    (5)HOST完成待读数据接收后向NVMe侧返回DMA中断。

    其中,所述DMA中断用于告知NVMe Controlle已完成数据接收。

    (6)NVMe Controller接收DMA中断后将操作完成标识写入第三队
    列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (7)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    这样,在HOST与NVMe设备交互的过程中,避免HOST的CPU
    直接操作NVMe设备的寄存器。将HOST对NVMe设备的两次直接寄存
    器操作变成NVMe设备侧主动去HOST的内存队列轮循,从而避免HOST
    的CPU对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。
    Doorbell操作由原来的HOST直接写NVMe设备寄存器修改为由NVMe
    设备驱动去轮循Doorbell队列(即本发明所述第一队列),HOST将所述
    触发指令、完成指令写入内存中的Doorbell队列,即认为是读写请求已经
    得到响应。这时候即使出现NVMe设备突然被拔掉也不会导致HOST的
    CPU操作寄存器无响应的情况,系统只会认为是一次读写超时,从而有效
    的避免系统挂死的情况。这样,HOST不用去对NVMe设备的寄存器进行
    写操作,二者之间还可以进行正常交互,还可以避免了由于NVMe设备突
    然拔出导致的系统挂死。另外,告知NVMe设备与HOST之间的交互完
    成,可以进行NVMe设备拔出,从而实现NVMe设备的热插拔。

    进一步地,在本发明的优选实施例中,所述NVMe设备获取完成指令
    之后,所述方法还包括:

    所述NVMe设备释放所述第三队列。

    在本发明的另一优选实施例中,所述NVMe设备在所述HOST的寄
    存器中轮询第一队列包括:

    所述NVMe设备主动轮询所述第一队列;

    或,所述NVMe设备接收所述HOST发送的指示信息后轮询所述第
    一队列。

    另外,需要说明的是,本实施例所述的第一队列即实施例1所述的第
    二队列,可以是门铃队列DQ。本实施例所述的所述第二队列即实施例1
    所述的第一队列,可以是提交队列SQ。所述第三队列可以是完成队列CQ。

    本发明实施例提供的交互方法,所述NVMe设备在主机HOST的
    内存中的第一队列中轮询到触发指令;所述触发指令指示所述HOST
    已确认将与所述NVMe设备进行交互。所述NVMe设备获取任务指令,
    执行所述任务指令指示的操作。NVMe设备在所述HOST的内存中的第
    一队列中检测到完成指令;所述完成指令指示所述HOST已确认与所述
    NVMe设备完成了交互。这样,在HOST与NVMe设备交互的过程中,
    避免HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的
    CPU对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即
    使出现NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无
    响应的情况,系统只会认为是一次读写超时,从而有效的避免NVMe设
    备复位引起的系统挂死,实现NVMe设备的热插拔。

    实施例3:

    本发明实施例提供一种交互方法,如图4所示,所述方法包括以下步
    骤:

    301、HOST将任务指令写入所述HOST内存中的第一队列中。

    其中,所述任务指令指示非易失存储快速通道NVMe设备将执行的操
    作;所述NVMe设备为与所述HOST通过快速外部组件互联PCIe总线进
    行交互的外围设备。

    302、所述HOST将触发标识写入所述HOST内存中的第二队列。

    所述触发标识代表所述HOST已确认将与所述NVMe设备进行交互,
    所述交互为所述NVMe设备执行所述操作需要与所述HOST进行的交互。

    303、所述NVMe设备轮询所述第二队列。

    304、所述NVMe设备在所述第二队列中检测到触发标识。

    305、所述NVMe设备在所述第一队列中获取任务指令,执行任务指
    令指示的操作。

    具体地,若所述操作为写数据,则所述NVMe设备执行所述操作具体
    包括:

    所述NVMe设备在所述HOST的寄存器中获取待写数据,并将所述
    待写数据存储在所述NVMe设备的本地内存中;所述NVMe设备将操作
    完成标识写入所述HOST内的第三队列;所述操作完成标识指示所述操作
    已完成;所述NVMe设备向所述HOST发送第预设中断,指示所述HOST
    访问所述第三队列,确认所述操作已完成。

    若所述操作为读数据,则所述NVMe设备执行所述操作具体包括:所
    述NVMe设备接收所述HOST的读数据请求,并将所述待读数据发送给
    所述HOST;所述NVMe设备接收所述HOST发送的第一中断,将操作
    完成标识写入所述HOST内的第三队列;所述操作完成标识指示所述操作
    已完成,所述第一中断用于指示所述NVMe设备将所述操作完成标识写入
    所述HOST内存中的第三队列。

    其中,所述预设中断可以是MSI-X,所述第一中断可以是DMA中断。

    306、所述HOST获取所述操作完成标识,确认所述操作已完成,则
    将完成标识写入所述第二队列。

    所述操作完成标识指示所述操作已完成。所述完成标识代表所述
    HOST已确认所述交互已完成。

    具体实现中,是所述HOST接收所述NVMe设备发送的预设中断,
    并访问所述第三队列,在所述第三队列中获取所述操作完成标识。

    307、所述NVMe设备在所述第二队列中检测到完成标识。

    与所述触发标识一样,所述完成标识也可以是所述第一队列中的一个
    地址位,用于指示所述HOST是否已确认所述交互已完成。

    在现有NVMe设备与HOST交互过程中,HOST对NVMe设备的
    Doorbell操作是由指HOST直接写NVMe设备的寄存器,修改某个字段
    以告知NVMe设备需要与HOST进行交互,在此过程中,如果NVMe设
    备系统复位,就会导致HOST的写请求得不到响应,系统报出MCE,进
    而系统被挂起。本发明中,将Doorbell操作修改为由NVMe设备驱动去
    HOST的寄存器内存轮循第一队列,以确定HOST是否已确认将进行交
    互。这样,HOST不用去对NVMe设备的寄存器进行写操作,就可以避免
    了由于NVMe设备突然拔出(即SDI卡系统复位)导致的系统挂死。另
    外,告知NVMe设备将与HOST进行交互,交互完成之前不能进行NVMe
    设备拔出(即SDI卡系统复位)。

    本发明实施例提供的交互方法,HOST将触发指令写入内存,所述
    NVMe设备在主机HOST的内存中的第一队列中轮询到触发指令;所述
    触发指令指示所述HOST已确认将与所述NVMe设备进行交互。所述
    NVMe设备获取任务指令,执行所述任务指令指示的操作。NVMe设备
    在所述HOST的内存中的第一队列中检测到完成指令;所述完成指令指
    示所述HOST已确认与所述NVMe设备完成了交互。这样,在HOST
    与NVMe设备交互的过程中,避免HOST的CPU直接操作NVMe设备
    的寄存器,从而避免HOST的CPU对NVMe设备侧寄存器操作无响应
    导致系统挂死的情况出现。即使出现NVMe设备突然被拔掉也不会导
    致HOST的CPU操作寄存器无响应的情况,系统只会认为是一次读写
    超时,从而有效的避免NVMe设备复位引起的系统挂死,实现NVMe
    设备的热插拔。

    实施例4:

    本发明实施例提供一种交互方法,主要用于NVMe设备与HOST交
    互,将数据写入NVMe设备。如图5所示,所述方法包括以下步骤:

    401、HOST写入命令到SQ队列。

    402、HOST将触发指令写入DQ(Doorbell Queue,门铃队列)。

    403、NVMe Controller(控制器)从DQ中轮循到触发指令。

    404、NVMe Controller在HOST的内存中获取SQ队列。

    405、NVMe Controller在SQ队列中获取任务指令。

    406、NVMe Controller操作NVMe设备侧的DMA引擎在HOST的
    内存中读取待写数据。

    407、NVMe Controller封装待写数据后发送至分布式存储软件。

    408、分布式存储软件向NVMe Controlle返回Response(响应)。

    409、NVMe Controller将操作完成标识写入CQ队列并释放SQ队列。

    410、NVMe Controller发送MSI-X中断到HOST。

    411、HOST接收到中断后执行CQ队列。

    即访问CQ队列,获取操作完成标识。

    412、HOST将完成指令写入Doorbell队列。

    413、NVMe Controller从Doorbell队列中轮询到完成指令,NVMe
    Controller释放CQ队列。

    至此,依照NVMe协议,HOST与NVMe之间一次完整的写数据流
    程就完成了。

    本发明实施例提供一种交互方法,所述NVMe设备写入数据时,避免
    HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的CPU
    对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即使出现
    NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无响应的情
    况,系统只会认为是一次读写超时,从而有效的避免NVMe设备复位引起
    的系统挂死,实现NVMe设备的热插拔。

    实施例5:

    本发明实施例提供一种交互方法,主要用于NVMe设备与HOST交
    互,HOST在NVMe设备中读数据。如图6所示,所述方法包括以下步
    骤:

    501、HOST写入命令到SQ队列。

    502、HOST将触发指令写入Doorbell队列。

    503、NVMe Controller从Doorbell队列中轮询到触发指令。

    504、NVMe Controller在HOST的内存中获取SQ队列。

    505、NVMe Controller从SQ队列中获取任务指令。

    506、NVMe Controller封装待读数据后发送至分布式存储软件。

    507、分布式存储软件返回Response。

    508、NVMe Controller操作NVMe设备侧的DMA引擎在分布式存储
    软件中读取待读数据,并将待读数据发送至HOST。

    509、HOST完成待读数据的接收后返回DMA中断。

    510、NVMe Controller将操作完成标识写入CQ队列并释放SQ队列。

    511、NVMe Controller发送MSI-X中断到HOST。

    512、HOST接收到中断后执行CQ队列。

    即访问CQ队列,获取操作完成标识。

    513、HOST将完成指令写入Doorbell队列。

    514、NVMe Controller从Doorbell队列中轮询到完成指令,NVMe
    Controller释放CQ队列。

    至此,依照NVMe协议,HOST与NVMe之间一次完整的读数据流
    程就完成了。

    本发明实施例提供一种交互方法,所述NVMe设备读数据时,避免
    HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的CPU
    对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即使出现
    NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无响应的情
    况,系统只会认为是一次读写超时,从而有效的避免NVMe设备复位引起
    的系统挂死,实现NVMe设备的热插拔。

    实施例6:

    本发明实施例提供一种HOST,如图7所示,所述HOST包括:写入
    单元601、确认单元602。

    写入单元601,用于将任务指令写入所述HOST内存中的第一队列
    中,所述任务指令指示NVMe设备将执行的操作;所述NVMe设备为
    与所述HOST通过快速外部组件互联PCIe总线进行交互的外围设备。

    其中,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    所述写入单元601还用于,将触发标识写入所述HOST内存中的
    第二队列;所述触发标识代表所述HOST已确认将与非易失存储快速
    通道NVMe设备进行交互,所述交互为所述NVMe设备执行所述操作
    需要与所述HOST进行的交互。

    所谓交互,是指HOST指示NVMe设备要执行某操作时,在NVMe
    设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行的交互,
    以确保NVMe设备与HOST知晓进行的某一步流程。如:HOST在步骤
    101中写入任务指令,将指示NVMe设备写数据,之后在写入触发标识,
    使得NVMe设备检测到触发标识后知晓HOST已经确认所述NVMe设备
    将从HOST的内存中写数据。

    另外,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    确认单元602,用于确认所述操作已完成。

    所述写入单元601还用于,在所述确认单元确认所述操作已完成
    时,将完成标识写入所述第一队列,所述完成标识代表所述HOST已
    确认所述交互已完成。

    需要说明的是,与所述触发标识一样,所述完成标识也可以是所述第
    一队列中的一个地址位,用于指示所述HOST是否已确认所述交互已完
    成。

    所述确认单元602具体用于,所述HOST接收所述NVMe设备发
    送的预设中断,访问所述HOST内存中的第三队列,检测到操作完成
    标识,则确认所述操作已完成。

    其中,所述预设中断用于指示所述HOST访问所述第三队列,所
    述操作完成标识指示所述操作已完成。

    需要说明的是,所述预设中断可以是MSI(Message Signaled
    Interrupt,消息信息中断)-X。另外,在本实施例中,所述第一队列可以
    是SQ(Submit Queue,提交队列),所述第二队列可以是DQ(Doorbell
    Queue,门铃队列),所述第三队列可以是CQ(Complete Queue,完成
    队列)。

    在现有NVMe设备与HOST交互过程中,HOST对NVMe设备的
    Doorbell操作是由指HOST直接写NVMe设备的寄存器,修改某个字段
    以告知NVMe设备需要与HOST进行交互,在此过程中,如果NVMe设
    备系统复位,就会导致HOST的写请求得不到响应,系统报出MCE,进
    而系统被挂起。本发明中,将Doorbell操作修改为由NVMe设备驱动去
    HOST的寄存器内存轮循第一队列,以确定是否将与HOST进行交互。这
    样既保证了NVMe设备与HOST之间交互的正常进行,又避免了由于
    NVMe设备系统复位导致的系统挂死。

    本发明实施例提供的HOST,将触发指令写入内存,使得所述
    NVMe设备在主机HOST的内存中的第一队列中轮询到触发指令;所
    述触发指令指示所述HOST已确认将与所述NVMe设备进行交互。所
    述NVMe设备获取任务指令,执行所述任务指令指示的操作。NVMe
    设备在所述HOST的内存中的第一队列中检测到完成指令;所述完成
    指令指示所述HOST已确认与所述NVMe设备完成了交互。这样,在
    HOST与NVMe设备交互的过程中,避免HOST的CPU直接操作NVMe
    设备的寄存器,从而避免HOST的CPU对NVMe设备侧寄存器操作无
    响应导致系统挂死的情况出现。即使出现NVMe设备突然被拔掉也不
    会导致HOST的CPU操作寄存器无响应的情况,系统只会认为是一次
    读写超时,从而有效的避免NVMe设备复位引起的系统挂死,实现
    NVMe设备的热插拔。

    实施例7:

    本发明实施例提供一种NVMe设备,如图8所示,所述HOST包括:
    检测单元701、获取单元702、执行单元703。

    检测单元701,用于轮询第一队列;所述第一队列存储在主机HOST
    的内存中。

    所谓轮询,是指NVMe设备去监控或者不断的去读取HOST内存中
    的第一队列,直到读取到所述触发指令(如:特定地址位的数值有变化:
    变为“1”),则认为NVMe设备将与所述HOST进行交互。

    所述检测单元701还用于,在所述第一队列中检测到触发标识,
    所述触发标识代表所述HOST已确认将与所述NVMe设备进行交互;
    所述交互为所述NVMe设备执行操作需要与所述HOST进行的交互。

    其中,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    另外,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    所谓交互,是指HOST指示NVMe设备要执行某操作时,在NVMe
    设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行的交互,
    以确保NVMe设备与HOST知晓进行的某一步流程。如:HOST在步骤
    101中写入任务指令,将指示NVMe设备写数据,之后在写入触发标识,
    使得NVMe设备检测到触发标识后知晓HOST已经确认所述NVMe设备
    将从HOST的内存中写数据。

    获取单元702,用于获取任务指令;所述任务指令指示所述HOST
    将执行的所述操作。

    执行单元703,用于执行所述操作。

    所述检测单元701还用于,在所述第一队列中检测到完成标识;
    所述完成标识指示所述HOST已确认与所述交互已完成,所述完成标
    识是所述HOST确认所述操作完成之后写入所述第一队列的。

    需要说明的是,与所述触发标识一样,所述完成标识也可以是所述第
    一队列中的一个地址位,用于指示所述HOST是否已确认所述交互已完
    成。

    在现有NVMe设备与HOST交互过程中,HOST对NVMe设备的
    Doorbell操作是由指HOST直接写NVMe设备的寄存器,修改某个字段
    以告知NVMe设备需要与HOST进行交互,在此过程中,如果NVMe设
    备系统复位,就会导致HOST的写请求得不到响应,系统报出MCE,进
    而系统被挂起。本发明中,将Doorbell操作修改为由NVMe设备驱动去
    HOST的寄存器内存轮循第一队列,以确定HOST是否已确认将进行交
    互。这样,HOST不用去对NVMe设备的寄存器进行写操作,就可以避免
    了由于NVMe设备突然拔出(即SDI卡系统复位)导致的系统挂死。另
    外,告知NVMe设备将与HOST进行交互,交互完成之前不能进行NVMe
    设备拔出(即SDI卡系统复位)。

    所述获取单元702具体用于:访问所述HOST内存中的第二队列,
    在所述第二队列中获取所述任务指令。

    若操作为写数据,则所述执行单元703具体用于:

    在所述HOST的寄存器中获取待写数据,并将所述待写数据存储
    在所述NVMe设备的本地内存中;

    将操作完成标识写入所述HOST内的第三队列;所述操作完成标
    识指示所述操作已完成;

    向所述HOST发送第预设中断,指示所述HOST访问所述第三队
    列,确认所述操作已完成。

    示例的:(1)NVMe Controller从SQ中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为将待写数据写入到所述NVMe设备。

    (2)NVMe Controller操作NVMe设备侧的DMA()引擎在HOST
    的内存中获取数据。

    (3)NVMe Controller封装所述待写数据后发送至NVMe设备侧的
    分布式存储软件。

    其中,所述分布式存储软件是所述NVMe设备侧的用于存储数据的。
    所谓封装待写数据即将待写数据封装成分布式存储软件可以识别的格式。

    (4)分布式存储软件向NVMe Controller返回Response。

    实际上,就是分布式存储软件在存储完NVMe Controller发送的数据
    之后,向NVMe Controller返回一个信息,用于告知NVMe Controller本
    次交互要写入NVMe设备的待写数据已经传完。

    (5)NVMe Controller将操作完成标识写入第三队列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (6)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    若操作为读数据,则所述执行单元703具体用于:

    接收所述HOST的读数据请求,并将所述待读数据发送给所述
    HOST;

    接收所述HOST发送的第一中断,将操作完成标识写入所述HOST
    内的第三队列;所述操作完成标识指示所述操作已完成,所述第一中断
    用于指示所述NVMe设备将所述操作完成标识写入所述HOST内存中
    的第三队列;

    向所述HOST发送预设中断,指示所述HOST访问所述第三队列,
    确认所述操作已完成。

    示例的,(1)NVMe Controller从SQ队列中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为所述NVMe设备从HOST侧的内存中读数据。

    (2)NVMe Controller封装待读数据后发送至分布式存储软件。

    所谓封装待读数据即将待读数据封装成分布式存储软件可以识别的
    格式。

    (3)分布式存储软件返回Response。

    在此Response用于告知NVMe Controller所述待读数据已完成接
    收。

    (4)NVMe Controller设备侧的DMA引擎在分布式存储软件中读取
    待读数据,并将待读数据发送至HOST。

    (5)HOST完成待读数据接收后向NVMe侧返回DMA中断。

    其中,所述DMA中断用于告知NVMe Controlle已完成数据接收。

    (6)NVMe Controller接收DMA中断后将操作完成标识写入第三队
    列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (7)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    所述检测单元701具体用于,设备主动轮询所述第一队列;

    或,接收所述HOST发送的指示信息后轮询所述第一队列。

    本发明实施例提供的NVMe设备,在主机HOST的内存中的第一
    队列中轮询到触发指令;所述触发指令指示所述HOST已确认将与所
    述NVMe设备进行交互。所述NVMe设备获取任务指令,执行所述任
    务指令指示的操作。NVMe设备在所述HOST的内存中的第一队列中
    检测到完成指令;所述完成指令指示所述HOST已确认与所述NVMe
    设备完成了交互。这样,在HOST与NVMe设备交互的过程中,避免
    HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的CPU
    对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即使出
    现NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无响应
    的情况,系统只会认为是一次读写超时,从而有效的避免NVMe设备
    复位引起的系统挂死,实现NVMe设备的热插拔。

    实施例8:

    本发明实施例提供一种HOST,如图9所示,所述HOST包括:处理
    器801、系统总线802和存储器803。

    其中,处理器801可以为中央处理器(英文:central processing unit,
    缩写:CPU)。

    存储器803,用于存储程序代码,并将该程序代码传输给该处理器
    801,处理器801根据程序代码执行下述指令。存储器803可以包括易失
    性存储器(英文:volatile memory),例如随机存取存储器(英文:
    random-access memory,缩写:RAM);存储器803也可以包括非易失
    性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only
    memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英
    文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,
    缩写:SSD)。存储器803还可以包括上述种类的存储器的组合。处理器
    801、存储器803之间通过系统总线802连接并完成相互间的通信。

    处理器801,用于将任务指令写入所述HOST内存中的第一队列中,
    所述任务指令指示NVMe设备将执行的操作;所述NVMe设备为与所
    述HOST通过快速外部组件互联PCIe总线进行交互的外围设备。

    其中,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    所述处理器801还用于,将触发标识写入所述HOST内存中的第
    二队列;所述触发标识代表所述HOST已确认将与非易失存储快速通
    道NVMe设备进行交互,所述交互为所述NVMe设备执行所述操作需
    要与所述HOST进行的交互。

    其中,所谓交互,是指HOST指示NVMe设备要执行某操作时,在
    NVMe设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行
    的交互,以确保NVMe设备与HOST知晓进行的某一步流程。如:HOST
    在步骤101中写入任务指令,将指示NVMe设备写数据,之后在写入触
    发标识,使得NVMe设备检测到触发标识后知晓HOST已经确认所述
    NVMe设备将从HOST的内存中写数据。

    另外,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    确认处理器801,用于确认所述操作已完成,确认所述操作已完成
    时,将完成标识写入所述第一队列,所述完成标识代表所述HOST已确
    认所述交互已完成。

    需要说明的是,与所述触发标识一样,所述完成标识也可以是所述第
    一队列中的一个地址位,用于指示所述HOST是否已确认所述交互已完
    成。

    所述处理器801具体用于,所述HOST接收所述NVMe设备发送
    的预设中断,访问所述HOST内存中的第三队列,检测到操作完成标
    识,则确认所述操作已完成。

    其中,所述预设中断用于指示所述HOST访问所述第三队列,所
    述操作完成标识指示所述操作已完成。

    本发明实施例提供的HOST,将触发指令写入内存,使得所述
    NVMe设备在主机HOST的内存中的第一队列中轮询到触发指令;所
    述触发指令指示所述HOST已确认将与所述NVMe设备进行交互。所
    述NVMe设备获取任务指令,执行所述任务指令指示的操作。NVMe
    设备在所述HOST的内存中的第一队列中检测到完成指令;所述完成
    指令指示所述HOST已确认与所述NVMe设备完成了交互。这样,在
    HOST与NVMe设备交互的过程中,避免HOST的CPU直接操作NVMe
    设备的寄存器,从而避免HOST的CPU对NVMe设备侧寄存器操作无
    响应导致系统挂死的情况出现。即使出现NVMe设备突然被拔掉也不
    会导致HOST的CPU操作寄存器无响应的情况,系统只会认为是一次
    读写超时,从而有效的避免NVMe设备复位引起的系统挂死,实现
    NVMe设备的热插拔。

    实施例9:

    本发明实施例提供一种NVMe设备,如图10所示,所述HOST包括:
    处理器901、系统总线902和存储器903。

    其中,处理器901可以为中央处理器(英文:central processing unit,
    缩写:CPU)。

    存储器903,用于存储程序代码,并将该程序代码传输给该处理器
    901,处理器901根据程序代码执行下述指令。存储器903可以包括易失
    性存储器(英文:volatile memory),例如随机存取存储器(英文:
    random-access memory,缩写:RAM);存储器903也可以包括非易失
    性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only
    memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英
    文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,
    缩写:SSD)。存储器903还可以包括上述种类的存储器的组合。处理器
    901、存储器903之间通过系统总线902连接并完成相互间的通信。

    处理器901,用于轮询第一队列;所述第一队列存储在主机HOST
    的内存中。在所述第一队列中检测到触发标识,所述触发标识代表所述
    HOST已确认将与所述NVMe设备进行交互;所述交互为所述NVMe
    设备执行操作需要与所述HOST进行的交互。

    所谓轮询,是指NVMe设备去监控或者不断的去读取HOST内存中
    的第一队列,直到读取到所述触发指令(如:特定地址位的数值有变化:
    变为“1”),则认为NVMe设备将与所述HOST进行交互。

    处理器901,用于获取任务指令;所述任务指令指示所述HOST将
    执行的所述操作。

    其中,所述触发指令可以是所述第一队列中的一个地址位,用于指示
    所述HOST是否已确认将与所述NVMe设备进行交互。示例的,地址位
    为“0”代表所述HOST未确认将与所述NVMe设备进行交互,地址位为
    “1”代表所述HOST已确认将与所述NVMe设备进行交互。

    另外,所述操作,可以是所述NVMe设备在所述HOST的内存中读
    取数据,或者,是所述NVMe设备接收HOST读数据的请求,将响应数
    据发送给HOST。队列是一种数据结构,用于存储数据。

    所谓交互,是指HOST指示NVMe设备要执行某操作时,在NVMe
    设备执行操作之前、完成操作之后,NVMe设备与HOST间要进行的交互,
    以确保NVMe设备与HOST知晓进行的某一步流程。如:HOST在步骤
    101中写入任务指令,将指示NVMe设备写数据,之后在写入触发标识,
    使得NVMe设备检测到触发标识后知晓HOST已经确认所述NVMe设备
    将从HOST的内存中写数据。

    处理器901还用于,执行所述操作。

    所述处理器901还用于,在所述第一队列中检测到完成标识;所述
    完成标识指示所述HOST已确认与所述交互已完成,所述完成标识是所
    述HOST确认所述操作完成之后写入所述第一队列的。与所述触发标识
    一样,所述完成标识也可以是所述第一队列中的一个地址位,用于指示所
    述HOST是否已确认所述交互已完成。

    所述处理器901具体用于:访问所述HOST内存中的第二队列,
    在所述第二队列中获取所述任务指令。

    若操作为写数据,则所述处理器901具体用于:

    在所述HOST的寄存器中获取待写数据,并将所述待写数据存储
    在所述NVMe设备的本地内存中;

    将操作完成标识写入所述HOST内的第三队列;所述操作完成标
    识指示所述操作已完成;

    向所述HOST发送第预设中断,指示所述HOST访问所述第三队
    列,确认所述操作已完成。

    示例的,1)NVMe Controller从SQ中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为将待写数据写入到所述NVMe设备。

    (2)NVMe Controller操作NVMe设备侧的DMA()引擎在HOST
    的内存中获取数据。

    (3)NVMe Controller封装所述待写数据后发送至NVMe设备侧的
    分布式存储软件。

    其中,所述分布式存储软件是所述NVMe设备侧的用于存储数据的。
    所谓封装待写数据即将待写数据封装成分布式存储软件可以识别的格式。

    (4)分布式存储软件向NVMe Controller返回Response。

    实际上,就是分布式存储软件在存储完NVMe Controller发送的数据
    之后,向NVMe Controller返回一个信息,用于告知NVMe Controller本
    次交互要写入NVMe设备的待写数据已经传完。

    (5)NVMe Controller将操作完成标识写入第三队列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (6)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    若操作为读数据,则所述处理器901具体用于:

    接收所述HOST的读数据请求,并将所述待读数据发送给所述
    HOST;

    接收所述HOST发送的第一中断,将操作完成标识写入所述HOST
    内的第三队列;所述操作完成标识指示所述操作已完成,所述第一中断
    用于指示所述NVMe设备将所述操作完成标识写入所述HOST内存中
    的第三队列;

    向所述HOST发送预设中断,指示所述HOST访问所述第三队列,
    确认所述操作已完成。

    示例的:(1)NVMe Controller从SQ队列中读取NVMe命令。

    其中,所述NVMe Controller是NVMe设备侧的控制???,所述SQ
    即所述第二队列,所述NVMe命令即所述任务指令。这里,所述NVMe
    命令指示的操作为所述NVMe设备从HOST侧的内存中读数据。

    (2)NVMe Controller封装待读数据后发送至分布式存储软件。

    所谓封装待读数据即将待读数据封装成分布式存储软件可以识别的
    格式。

    (3)分布式存储软件返回Response。

    在此Response用于告知NVMe Controller所述待读数据已完成接
    收。

    (4)NVMe Controller设备侧的DMA引擎在分布式存储软件中读取
    待读数据,并将待读数据发送至HOST。

    (5)HOST完成待读数据接收后向NVMe侧返回DMA中断。

    其中,所述DMA中断用于告知NVMe Controlle已完成数据接收。

    (6)NVMe Controller接收DMA中断后将操作完成标识写入第三队
    列。

    其中,所述第三队列可以是CQ,所述操作完成标识指示操作已完成
    (即已将待写数据写入NVMe设备)。

    (7)NVMe Controller向HOST发送MSI-X,指示所述HOST访问
    所述第三队列,在第三队列中获取操作完成标识后确认所述操作已完成。

    这样,在HOST与NVMe设备交互的过程中,避免HOST的CPU
    直接操作NVMe设备的寄存器。将HOST对NVMe设备的两次直接寄存
    器操作变成NVMe设备侧主动去HOST的内存队列轮循,从而避免HOST
    的CPU对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。
    Doorbell操作由原来的HOST直接写NVMe设备寄存器修改为由NVMe
    设备驱动去轮循Doorbell队列(即本发明所述第一队列),HOST将所述
    触发指令、完成指令写入内存中的Doorbell队列,即认为是读写请求已经
    得到响应。这时候即使出现NVMe设备突然被拔掉也不会导致HOST的
    CPU操作寄存器无响应的情况,系统只会认为是一次读写超时,从而有效
    的避免系统挂死的情况。这样,HOST不用去对NVMe设备的寄存器进行
    写操作,二者之间还可以进行正常交互,还可以避免了由于NVMe设备突
    然拔出导致的系统挂死。另外,告知NVMe设备与HOST之间的交互完
    成,可以进行NVMe设备拔出,从而实现NVMe设备的热插拔。

    所述处理器901具体用于,设备主动轮询所述第一队列;

    或,接收所述HOST发送的指示信息后轮询所述第一队列。

    本发明实施例提供的NVMe设备,在主机HOST的内存中的第一
    队列中轮询到触发指令;所述触发指令指示所述HOST已确认将与所
    述NVMe设备进行交互。所述NVMe设备获取任务指令,执行所述任
    务指令指示的操作。NVMe设备在所述HOST的内存中的第一队列中
    检测到完成指令;所述完成指令指示所述HOST已确认与所述NVMe
    设备完成了交互。这样,在HOST与NVMe设备交互的过程中,避免
    HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的CPU
    对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即使出
    现NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无响应
    的情况,系统只会认为是一次读写超时,从而有效的避免NVMe设备
    复位引起的系统挂死,实现NVMe设备的热插拔。

    实施例10:

    本发明实施例提供一种物理机系统,如图11所示,所述物理机系
    统包括包括HOST和NVMe设备。

    具体地,所述HOST和NVMe设备间的交互包括:

    所述HOST将任务指令写入所述HOST内存中的第一队列中,所
    述任务指令指示非易失存储快速通道NVMe设备将执行的操作。所述
    NVMe设备为与所述HOST通过快速外部组件互联PCIe总线进行交互
    的外围设备。

    所述HOST将触发标识写入所述HOST内存中的第二队列;所述
    触发标识代表所述HOST已确认将与所述NVMe设备进行交互,所述
    交互为所述NVMe设备执行所述操作需要与所述HOST进行的交互。

    所述NVMe设备轮询所述第二队列。

    所述NVMe设备在所述第二队列中检测到触发标识。

    所述NVMe设备在所述第一队列中获取任务指令;行所述操作。

    所述HOST获取所述操作完成标识,确认所述操作已完成,则将
    完成标识写入所述第二队列;所述操作完成标识指示所述操作已完成;
    所述完成标识代表所述HOST已确认所述交互已完成;

    所述NVMe设备在所述第二队列中检测到完成标识。

    需要说明的是,所述任务指令指示的操作具体可以是所述NVMe
    设备在所述HOST的内存中读取数据,或者,是所述NVMe设备接收
    HOST读数据的请求,将响应数据发送给HOST。

    若所述操作为写数据,则所述NVMe设备执行所述操作具体包括:

    所述NVMe设备在所述HOST的寄存器中获取待写数据,并将所述
    待写数据存储在所述NVMe设备的本地内存中;所述NVMe设备将操作
    完成标识写入所述HOST内的第三队列;所述操作完成标识指示所述操作
    已完成;所述NVMe设备向所述HOST发送第预设中断,指示所述HOST
    访问所述第三队列,确认所述操作已完成。

    若所述操作为读数据,则所述NVMe设备执行所述操作具体包括:所
    述NVMe设备接收所述HOST的读数据请求,并将所述待读数据发送给
    所述HOST;所述NVMe设备接收所述HOST发送的第一中断,将操作
    完成标识写入所述HOST内的第三队列;所述操作完成标识指示所述操作
    已完成,所述第一中断用于指示所述NVMe设备将所述操作完成标识写入
    所述HOST内存中的第三队列;所述NVMe设备向所述HOST发送预设
    中断,指示所述HOST访问所述第三队列,确认所述操作已完成。

    这样,HOST接收所述预设中断后就会访问第三队列,获取其中的操
    作完成标识,进而将完成标识写入所述第二队列。

    本实施例所述的第一队列,可以是提交队列SQ,本实施例所述的第
    二队列,可以是门铃队列DQ。所述第三队列可以是完成队列CQ。所述
    预设中断可以是MSI-X。

    本发明实施例提供的物理机系统,NVMe设备在主机HOST的内存
    中的第一队列中轮询到触发指令;所述触发指令指示所述HOST已确认
    将与所述NVMe设备进行交互。所述NVMe设备获取任务指令,执行
    所述任务指令指示的操作。NVMe设备在所述HOST的内存中的第一队
    列中检测到完成指令;所述完成指令指示所述HOST已确认与所述
    NVMe设备完成了交互。这样,在HOST与NVMe设备交互的过程中,
    避免HOST的CPU直接操作NVMe设备的寄存器,从而避免HOST的
    CPU对NVMe设备侧寄存器操作无响应导致系统挂死的情况出现。即
    使出现NVMe设备突然被拔掉也不会导致HOST的CPU操作寄存器无
    响应的情况,系统只会认为是一次读写超时,从而有效的避免NVMe设
    备复位引起的系统挂死,实现NVMe设备的热插拔。

    通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解
    到,为描述的方便和简洁,仅以上述各功能??榈幕纸芯倮得?,实
    际应用中,可以根据需要而将上述功能分配由不同的功能??橥瓿?,即将
    装置的内部结构划分成不同的功能???,以完成以上描述的全部或者部分
    功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对
    应过程,在此不再赘述。

    所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,
    作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一
    个地方,或者也可以分布到多个不同地方??梢愿菔导实男枰≡衿渲?br />的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实
    施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独
    物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
    元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

    所述集成的单元如果以软件功能单元的形式实现并作为独立的产品
    销售或使用时,可以存储在一个可读取存储介质中?;谡庋睦斫?,本
    发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方
    案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个
    存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)
    或处理器(processor)执行本发明各个实施例所述方法的全部或部分步
    骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,
    Read-Only Memory)、随机存取存储器(RAM,Random Access
    Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

    以上所述,仅为本发明的具体实施方式,但本发明的?;し段Р⒉痪?br />限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可
    轻易想到变化或替换,都应涵盖在本发明的?;し段е?。因此,本发明
    的?;し段вλ鲆匀ɡ蟮谋;し段?。

    关于本文
    本文标题:一种交互方法、NVME设备、HOST及物理机系统.pdf
    链接地址://www.4mum.com.cn/p-6004831.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 3的走势图 3d3码组三最多遗漏 股票指数是什么意思 2004年排列五走势图 凤凰彩票平台网址 3d杀号万能计算公式 北京pk10漏洞技巧 十大棋牌游戏平台 股票指数期货走势 西安市福彩中心主任 非公开发行股票 双色球17145期号码预测 北京快乐8qq彩票 极速11选5软件下载 大富豪棋牌游戏app 老k棋牌官网下载