用于管理存储设备和主机单元之间的通信的系统和方法技术方案

技术编号:24937706 阅读:44 留言:0更新日期:2020-07-17 20:52
在本文的实施例公开用于经由桥单元来管理架构上的非易失性存储器规范(NVMe‑oF)主机单元和多个非易失性存储器规范‑固态驱动器(NVMe‑SSD)存储设备之间的通信的系统和方法。在本文的实施例涉及存储设备的领域,并且更具体地涉及用于经由桥单元来管理NVMe‑oF主机单元和多个NVMe‑SSD存储设备之间的通信的系统和方法。桥单元可以包括子模块来执行对命令和数据的控制操作。桥单元可以生成与分散收集列表地址相对应的虚拟数据存储器地址。桥单元可以不需要数据缓冲器来存储中间数据。系统可以被配置为发起存储器WRITE/READ事务以访问虚拟数据存储器,用于执行诸如NVMe‑SSD存储设备的数据WRITE/READ操作之类的动作。

【技术实现步骤摘要】
用于管理存储设备和主机单元之间的通信的系统和方法相关申请的交叉引用本申请要求在印度专利局于2019年1月10日提交的印度专利申请号201941001145的权益,该专利申请的整体内容通过引用被合并于此。
本公开涉及存储设备的领域,并且更具体地涉及用于经由桥单元来管理架构(fabric)上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的系统和方法。
技术介绍
通常,计算系统可以包括处理单元、诸如高速外部组件互联(PCIe)之类的基于总线的互连以及将处理单元对接到诸如存储设备、网络设备以及图形设备之类的各种设备的各种输入输出控制器。例如,存储驱动器能够用于将与计算系统相关联的存储设备和处理单元对接。存储驱动器可以被配置为从处理单元接收命令和数据中的至少一个并且通过串行链路或并行链路向存储设备转发命令和数据中的至少一个。以类似的方式,存储驱动器也可以通过串行或并行链路从存储设备接收对命令和数据中的至少一个的响应并且可以向处理单元传送响应和数据中的至少一个。存储驱动器能够是NVMe-oF(架构上的非易失性存储器规范)驱动器,其可以通过诸如以太网之类的架构发出命令。存储设备能够是基于PCIe的NVMe-SSD(非易失性存储器规范-固态驱动器)。此外,为了建立NVMe-oF主机单元和NVMeSSD存储设备之间的数据通信,可能需要桥单元来管理NVMe-oF主机单元和NVMe-SSD存储设备之间的协议转换。因此,常规桥单元可能要求额外的存储器用于管理数据和CQ(完成队列),根据现有技术将参考图1a至图1d被描述为如下。图1a图示出常规桥单元的框图。如在图1a中所示,常规桥单元可以使能NVMe-oF主机单元和NVMe-SSD存储设备之间的通信。常规桥单元可以允许NVMe-oF至NVMe之间的协议转换。在命令被接收之前,NVMe-SSD可能需要缓冲器分配。常规桥单元中的读/写数据缓冲器能够被用于存储中间数据以执行从与NVMe-oF主机单元相关联的NVMe-oF读/写命令到来自NVMe-SSD存储设备的读/写数据/响应的转换。另外,常规桥单元中的提交队列(SQ)缓冲器可以用于在向基于PCIe的NVMe-SSD存储设备发布命令之前存储来自NVMe-oF主机单元的命令。另外,常规桥单元中的完成队列(CQ)缓冲器可以用于在向NVMe-oF主机单元发布响应之前存储来自基于PCIe的NVMe-SSD存储设备的响应。另外,如图1a中所示的处理器可以用于处理NVMe-oF命令和中断的管理/运用。此外,简明(in-capsule)写数据缓冲器可以用于存储与从NVMe-oF主机单元接收到的简明NVMe-oF写命令相关联的数据。而且,远程直接存储器存取(RDMA)子模块可以用于通过诸如以太网之类的架构在NVMe-oF主机单元和常规桥单元之间传送数据。另外,NVMeoF-NVMe子模块可以用于协议转换或者缓冲器管理。另外,根联合体(RC)子模块可以用于经由PCIe在常规桥单元和NVMe-SSD存储设备之间传送数据。图1b图示出在常规桥单元中的完成队列(CQ)流的序列图。在第一步,存储设备(即,NVMe-SSD)可以将完成条目(CE)发布到与CQ缓冲器相关联的CQ区域。在第二步,可以由NVMe-SSD存储设备生成消息信号中断(MSI-X)并且可以向常规桥单元的处理器提供该中断。在第三步,处理器可以在常规桥单元的CQ缓冲器中识别由NVMe-SSD存储设备发布的CE。此外,处理器也可以在CE中搜索相位比特(phasebit)。如果需要,在第四步,处理器可以在常规桥单元的CQ缓冲器中修改CE。在第五步,处理器可以向NVMeoF-NVMe子模块指示相关联的CQ缓冲器中的未决CE。在第六步,NVMeoF-NVMe子模块可以从相关联的CQ缓冲器中取出未决完成条目(PCE)。在第七步,NVMeoF-NVMe子模块可以经由RDMA子模块生成RDMASEND分组并且向NVMe-oF主机单元传送SEND分组。在第八步,NVMeoF-NVMe子模块可以更新NVMe-SSD存储设备中的完成队列头部门铃(headdoorbell)(CQHD)。图1c图示出常规桥单元中的架构上的非易失性存储器规范(NVMe-oF)读取流的序列图。在第一步,NVMe-oF主机单元可以将NVMe-oF读命令作为RDMASEND传递到常规桥单元。在第二步,NVMeoF-NVMe子模块可以在读/写数据缓冲器中分配读缓冲器并且可以将READ命令的分散收集列表(SGL)地址映射到所分配的读缓冲器地址。此外,NVMeoF-NVMe子模块可以在常规桥单元的SQ缓冲器中将读命令与修改的SGL字段一起更新。此外,对于读命令,NVMeoF-NVMe子模块可以存储上下文信息,诸如队列号码(QN)、NVMe-oF命令ID、远程密钥(用于与NVMeoF命令相关联的所有SGL的密钥字段)、以及用于与NVMeoF命令相关联的所有SGL的地址字段。在第三步,NVMeoF-NVMe子模块可以经由PCIe通过RC按下NVMe-SSD存储设备的提交队列尾部门铃(taildoorbell)(SQTD)。在第四步,NVMe-SSD可以经由PCIe从SQ缓冲器中取出SQE。在第五步,NVMe-SSD可以发起高速外部组件互联(PCIe)存储器写事务层分组(TLP)事务。此外,NVMe-SSD可以将与读命令相关联的数据写入与读/写数据缓冲器相关联的所分配的读缓冲器中。在第六步,NVMe-SSD存储设备可以在将与读命令相关联的完整数据写入所分配的与读/写数据缓冲器相关联的读缓冲器之后,在CQ缓冲器中发布CE。在第七步,可以由NVMe-SSD存储设备生成MSI-X中断并且可以向与常规桥单元相关联的处理器提供该中断。在第八步,处理器可以通过在CE中搜索相位比特来识别在CQ缓冲器中发布的CE。此外,如果需要,处理器可以修改CQ缓冲器中的CE。在第九步,处理器可以触发NVMeoF-NVMe子模块用于将数据从与常规桥单元相关联的读/写数据缓冲器传送到NVMe-oF主机单元。NVMeoF-NVMe子模块可以接收与和需要被传递到NVMe-oF主机单元的数据相对应的读命令相关联的上下文信息。在第十步,NVMeoF-NVMe子模块可以从读/写数据缓冲器中的所分配的读缓冲器中读取数据。在第十一步,NVMeoF-NVMe子模块可以形成RDMA写分组并且向NVMe-oF主机单元传送RDMA分组。在第十二步,NVMeoF-NVMe子模块可以在向NVMe-oF主机单元传送完整数据之后取出CE。在第十三步,NVMeoF-NVMe子模块可以形成RDMASEND并且可以经由架构向NVMe-oF主机单元传送RDMASEND分组。在第十四步,NVMeoF-NVMe子模块可以经由PCIe更新与NVMe-SSD存储设备相关联的CQHD并且可以对读/写数据缓冲器中的读缓冲器解除分配。图1d图示出常规桥体系结构中的常规NVMe-oF写入流的序列图。在第一步,NVMe-oF主机单本文档来自技高网...

【技术保护点】
1.一种用于经由桥单元(204)来管理架构上的非易失性存储器规范(NVMe-oF)主机单元(202)和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备(206)之间的通信的方法(300a),该方法包括:/n由桥单元(204)从NVMe-oF主机单元(202)接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作;/n由桥单元(204)基于将被执行的至少一个动作来生成与所接收的SGL地址相对应的虚拟数据存储器(204ba)的虚拟数据存储器地址;/n由桥单元(204)将所接收的NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器(204e)中,并且将上下文信息存储在上下文存储器(204bb)中,该上下文信息与和桥单元(204)相关联的架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块(204b)中的NVMe-oF数据传递命令相关联;/n由NVMe-SSD存储设备(206)获取存储在与桥单元(204)相关联的SQ缓冲器(204e)中的SQE;/n由NVMe-SSD存储设备(206)通过发起高速外部组件互联(PCIe)存储器WRITE事务层分组(TLP)事务和PCIe存储器READ TLP事务中的至少一个,基于与至少一个动作相对应的、所获取的存储在SQ缓冲器(204e)中的SQE来访问与桥单元(204)相关联的虚拟数据存储器(204ba);/n由桥单元(204)基于上下文存储器(204bb)中的所存储的上下文信息,将从NVMe-SSD存储设备(206)接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个分别转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的至少一个;以及/n由桥单元(204)经由架构向NVMe-oF主机单元(202)传送所转换的RDMA WRITE分组和所转换的RDMA READ分组中的至少一个。/n...

【技术特征摘要】
20190110 IN 2019410011451.一种用于经由桥单元(204)来管理架构上的非易失性存储器规范(NVMe-oF)主机单元(202)和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备(206)之间的通信的方法(300a),该方法包括:
由桥单元(204)从NVMe-oF主机单元(202)接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作;
由桥单元(204)基于将被执行的至少一个动作来生成与所接收的SGL地址相对应的虚拟数据存储器(204ba)的虚拟数据存储器地址;
由桥单元(204)将所接收的NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器(204e)中,并且将上下文信息存储在上下文存储器(204bb)中,该上下文信息与和桥单元(204)相关联的架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块(204b)中的NVMe-oF数据传递命令相关联;
由NVMe-SSD存储设备(206)获取存储在与桥单元(204)相关联的SQ缓冲器(204e)中的SQE;
由NVMe-SSD存储设备(206)通过发起高速外部组件互联(PCIe)存储器WRITE事务层分组(TLP)事务和PCIe存储器READTLP事务中的至少一个,基于与至少一个动作相对应的、所获取的存储在SQ缓冲器(204e)中的SQE来访问与桥单元(204)相关联的虚拟数据存储器(204ba);
由桥单元(204)基于上下文存储器(204bb)中的所存储的上下文信息,将从NVMe-SSD存储设备(206)接收到的PCIe存储器READTLP事务和PCIe存储器WRITETLP事务中的至少一个分别转换为远程直接存储器存取(RDMA)READ分组和RDMAWRITE分组中的至少一个;以及
由桥单元(204)经由架构向NVMe-oF主机单元(202)传送所转换的RDMAWRITE分组和所转换的RDMAREAD分组中的至少一个。


2.根据权利要求1所述的方法(300a),所述方法(300b)进一步包括:
由桥单元(204)基于由NVMe-SSD存储设备(206)通过访问与桥单元(204)相关联的虚拟数据存储器(204ba)完成写入对应于NVMe-oF数据传递命令的数据和读取该数据中的至少一个,经由PCIe总线从NVMe-SSD存储设备(206)将完成队列条目(CQE)接收到与桥单元(204)相关联的虚拟完成队列(VCQ)地址;
由桥单元(204)经由与桥单元(204)相关联的NVMeoF-NVMe子模块(204b)将与从NVMe-SSD存储设备(206)接收到的CQE相对应的PCIeWRITETLP事务转换为RDMASEND分组;
由桥单元(204)经由RDMA子模块(204a)、经由架构向NVMe-oF主机单元(202)传送所转换的RDMASEND分组;以及
由桥单元(204)基于至少一个动作的完成,通过与桥单元(204)相关联的NVMeoF-NVMe子模块(204b)来更新NVMe-SSD存储设备(206)中的完成队列头部门铃(CQHD)。


3.根据权利要求1所述的方法(300a),所述方法(300c)进一步包括:
由桥单元(204)经由与管理(Admin)队列(AQ)相对应的NVMe-oF连接命令从NVMe-oF主机单元(202)接收建立和与桥单元(204)相关联的控制器的关联的请求,其中,AQ包括管理提交队列(ASQ)和管理完成队列(ACQ);
由桥单元(204)在与桥单元(204)相关联的SQ缓冲器(204e)中分配与管理提交队列(ASQ)相对应的物理缓冲器,并且在与NVMe-SSD存储设备(206)相关联的管理提交队列(ASQ)基地址寄存器中提供所分配的物理缓冲器的基地址;
由桥单元(204)在与桥单元(204)相关联的管理完成队列(ACQ)缓冲器(204g)中分配与管理完成队列(ACQ)相对应的物理缓冲器,并且在与NVMe-SSD存储设备(206)相关联的管理完成队列(ACQ)基地址寄存器中提供所分配的物理缓冲器的基地址;以及
由桥单元(204)对与NVMe-SSD存储设备(206)相关联的管理队列属性(AQA)寄存器更新ASQ和ACQ的尺寸信息。


4.根据权利要求1所述的方法(300a),所述方法(300d)进一步包括:
由桥单元(204)经由与输入/输出队列(IOQ)相对应的NVMe-oF连接命令从NVMe-oF主机单元(202)接收创建与和桥单元(204)相关联的控制器的IOQ对的请求;
由桥单元(204)在与桥单元(204)相关联的SQ缓冲器(204e)中分配与输入/输出提交队列(IOSQ)缓冲器相对应的物理缓冲器,其中,所分配的与IOSQ缓冲器相对应的物理缓冲器的基地址被嵌入在IOSQ命令中的SQE的SQ基地址字段中;
由桥单元(204)分配与和桥单元(204)相关联的输入/输出完成队列(IOCQ)相对应的虚拟缓冲器,其中,所分配的与IOCQ缓冲器相对应的虚拟缓冲器的基地址被嵌入在CREATEIOCQ命令中的SQE的CQ基地址字段中;
由桥单元(204)基于经由与输入/输出命令相对应的NVMe-oF连接命令的接收的请求,经由AQ来创建CREATEIOSQ命令和CREATEIOCQ命令;
由桥单元(204)执行在NVMe-SSD存储设备(206)中的门铃寄存器WRITE操作,以创建IOSQ命令和IOCQ命令中的至少一个;以及
由桥单元(204)基于从NVMe-SSD存储设备(206)接收关于CREATEIOSQ命令和CREATEIOCQ命令的完成条目(CE),经由RDMA子模块(204a)、使用RDMASEND操作对NVMe-oF主机单元(202)更新与经由NVMe-oF连接命令接收的请求相对应的CQE。


5.根据权利要求1所述的方法(300a),所述方法(300e)进一步包括:
由桥单元(204)通过架构接收包括简明数据的NVMe-oF数据传递命令;
由桥单元(204)利用简明写数据缓冲器(204f)地址来更新NVMe-oF简明数据传递命令的SGL字段;
由桥单元(204)向与桥单元(204)相关联的SQ缓冲器(204e)中的相应的IOSQ写入NVMe-oF简明数据传递命令的SQE字段,并且向与桥单元(204)相关联的简明写数据缓冲器(204f)写入NVMe-oF简明命令的简明数据且对NVMe-SSD存储设备(206)更新SQ尾部门铃;
由NVMe-SSD存储设备(206)从与桥单元(204)相关联的SQ缓冲器(204e)的IOSQ获取SQE;
由NVMe-SSD存储设备(206)访问在存储于SQ缓冲器(204e)的IOSQ中的SQE的SGL字段中所提及的地址,以从桥单元(204)的简明写数据缓冲器(204f)中取出简明数据;以及
由桥单元(204)经由RDMA子模块(204a)、经由架构向NVMe-oF主机单元(202)传送所转换的RDMASEND分组。


6.根据权利要求1所述的方法(300a),其中,从NVMe-oF主机单元(202)接收包括SGL地址的NVMe-oF数据传递命令包括:经由...

【专利技术属性】
技术研发人员:V尼马加达K维诺德
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:韩国;KR

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1