主机CPU和由其访问远程目标装置的NVMeoF存储器区域的方法
文献发布时间:2023-06-19 18:35:48
本申请要求于2021年8月17日提交的第202141037370号印度专利申请的优先权,所述印度专利申请的公开通过引用全部包含于此。
技术领域
本发明的实施例涉及数据存储的领域,并且更具体地,涉及一种由主机中央处理器(CPU)访问远程目标装置的通过网络的非易失性存储器快速(Non-Volatile Memoryexpress over Fabrics,NVMeoF)存储器区域的方法。
背景技术
传统上,主机中央处理器(CPU)可使用其附接的非易失性存储器快速(NVMe)装置的存储器(诸如,控制器存储器缓冲器(CMB)或持久性存储器区域(PMR))以执行其内部操作。为了实现该动作,主机CPU可使用基于外围组件快速互连(PCIe)基地址寄存器(BAR)的寻址来访问CMB或PMR。
发明内容
在一个实施例中,一种由主机CPU访问远程目标装置的通过网络的非易失性存储器快速(NVMeoF)存储器区域的方法包括:与远程目标装置建立NVMeoF传输连接,和当与远程目标装置建立NVMeoF传输连接时,通过将NVMeoF连接命令发送到远程目标装置来创建管理队列。所述方法还包括:通过将PropertyGet/PropertySet命令发送到远程目标装置的管理提交队列来访问远程目标装置的NVMeoF存储器区域。所述方法还包括:执行以下之一:(a)当完成访问远程目标装置的NVMeoF存储器区域时,从远程目标装置接收PropertyGet/PropertySet完成队列条目,或者(b)响应于PropertyGet/PropertySet提交队列条目,从远程目标装置接收远程直接存储器访问(RDMA)写入请求或RDMA读取请求,和当完成对远程目标装置的NVMeoF存储器区域的访问时,从远程目标装置接收完成队列条目。
在一个实施例中,一种由主机CPU访问远程目标装置的NVMeoF存储器区域的方法包括:与远程目标装置建立NVMeoF传输连接,和当与远程目标装置建立NVMeoF传输连接时,发送在远程目标装置中创建管理提交队列的NVMeoF连接命令。所述方法包括:当在远程目标装置中创建管理提交队列时,将请求访问远程目标装置的NVMeoF存储器区域的供应商特定命令发送到远程目标装置。所述方法还包括:响应于供应商特定命令而接收包括远程目标装置的NVMeoF存储器区域的存储器区域地址和密钥中的至少一个的访问权限,和通过由主机CPU发送RDMA写入操作或RDMA读取操作来访问远程目标装置的NVMeoF存储器区域。所述方法还包括:当完成访问远程目标装置的NVMeoF存储器区域时,从远程目标装置接收RDMA确认和RDMA读取响应中的至少一个。
在一个实施例中,访问远程目标装置的NVMeoF存储器区域的主机CPU包括:处理器和存储器,存储器通信地结合到处理器。存储器存储处理器可执行指令,所述处理器可执行指令在执行时使处理器与远程目标装置建立NVMeoF传输连接。主机CPU被配置为:当与远程目标装置建立NVMeoF传输连接时,通过将NVMeoF连接命令发送到远程目标装置来创建管理队列,和通过将PropertyGet/PropertySet命令发送到远程目标装置的管理提交队列来访问远程目标装置的NVMeoF存储器区域。主机CPU还被配置为:执行以下之一:(1)当完成访问远程目标装置的NVMeoF存储器区域时,从远程目标装置接收PropertyGet/PropertySet完成队列条目,或者(b)响应于PropertyGet/PropertySet提交队列条目,从远程目标装置接收RDMA写入请求或RDMA读取请求,和当完成对远程目标装置的NVMeoF存储器区域的访问时,从远程目标装置接收完成队列条目。
附图说明
通过参照附图详细描述本发明的实施例,本发明的上面和其他特征将变得更加清楚,其中:
图1A示出展示根据本公开的实施例的用于由主机中央处理器(CPU)访问远程目标装置的通过网络的非易失性存储器快速(NVMeoF)存储器区域的操作的示例的示图。
图1B和图1C分别示出根据NVMeoF技术规范和根据本公开的实施例的PropertyGet命令格式。
图1D和图1E分别示出根据NVMeoF技术规范和根据本公开的实施例的PropertySet命令格式。
图2A示出展示根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的操作的示例的示图。
图2B和2C分别示出根据NVMeoF技术规范和根据本公开的实施例的PropertyGet命令格式。
图2D和2E分别示出根据NVMeoF技术规范和根据本公开的实施例的PropertySet命令格式。
图3示出展示根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的操作的示例的示图。
图4A示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
图4B示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
图5示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
本领域技术人员应理解,在此的任何框图表示体现本公开的实施例的原理的示出性系统的概念视图。类似地,将理解,任何流程图、流程示图、状态转换示图、伪代码等表示可基本上在计算机可读介质中表示并且无论计算机或处理器是否被明确示出都由这样的计算机或处理器执行的各种处理。
具体实施方式
在下文中将参照附图更全面地描述本发明的实施例。在整个附图中,相同的附图标记可指代相同的元件。
应理解,除非上下文另有清楚地指示,否则每个实施例内的特征或方面的描述通常应被认为可适用于其他实施例中的其他类似特征或方面。
如在此使用的,除非上下文另有清楚地指示,否则单数形式也旨在包括复数形式。
术语“包括”、“包含”或其任何其他变型旨在涵盖非排他性包括,使得包括一系列组件或步骤的设置、装置或方法不一定仅包括那些组件或步骤,而是还可包括未被明确列出或者这种设置或装置或方法固有的其他组件或步骤。换言之,在没有更多约束的情况下,系统或设备中由“包括……”开头的一个或多个元件不排除系统或方法中的其他元件或附加元件的存在。
图1A示出展示根据本公开的实施例的用于由主机中央处理器(CPU)访问远程目标装置的通过网络的非易失性存储器快速(NVMeoF)存储器区域的操作的示例的示图。
如图1A中示出,主机CPU 101与远程目标装置103进行通信。在一个实施例中,可包括多个主机CPU 101和远程目标装置103。主机CPU 101可以是例如服务器,并且远程目标装置103可以是例如存储装置(诸如,NVMeoF固态驱动器(SSD)存储装置)。
远程目标装置103可包括存储器区域,存储器区域也可被称为NVMeoF存储器区域103
在一个实施例中,寻求访问远程目标装置103的NVMeoF存储器区域103
图1B和1C分别示出根据NVMeoF技术规范和根据本公开的实施例的包括ATTRIB(属性)、SQHD(提交队列头指针)、CID(命令标识符)的PropertyGet命令格式。
根据本公开的实施例,如图1C中示出,修改PropertyGet命令的格式(例如,PropertyGet命令的提交队列条目(SQE))。图1B示出根据NVMeoF技术规范的PropertyGet命令格式的表示,而图1C示出根据本公开的实施例的PropertyGet命令格式。
与图1B中的PropertyGet命令格式的SQE相比,在图1C中示出的PropertyGet命令格式的SQE中,添加也被称为PMR位121的用于PMR的单个位。PMR位121被添加到CDW10的字节1的位1。在此,缩写CDW表示命令Dword。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
类似地,与图1B中的PropertyGet命令格式的SQE相比,在图1C中示出的PropertyGet命令格式的SQE中,添加也被称为CMB位123的用于CMB的单个位。CMB位123被添加到CDW10的字节1的位0。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
图1D示出根据NVMeoF技术规范的PropertySet命令格式,并且图1E示出根据本公开的实施例的PropertySet命令格式。
根据本公开的实施例,如图1E中示出,修改PropertySet命令的格式(例如,PropertySet命令的SQE)。图1D示出根据NVMeoF技术规范的PropertySet命令格式,而图1E示出根据本公开的实施例的PropertySet命令格式。与图1D中的PropertySet命令格式的SQE相比,在图1E中示出的PropertySet命令格式的SQE中,添加也被称为PMR位121的用于PMR的单个位。PMR位121被添加到CDW10的字节1的位1。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
类似地,与图1D中的PropertySet命令格式的SQE相比,在图1E中示出的PropertySet命令格式的SQE中,添加也被称为CMB位123的用于CMB的单个位。CMB位123被添加到CDW10的字节1的位0。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
在这个阶段,当完成访问远程目标装置103的NVMeoF存储器区域103
上述根据本公开的实施例的方法包括对NVMeoF技术规范的少量改变,并且因此可被标准化。
图2A示出展示根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的操作的示例的示图。
如图2A中示出,主机CPU 101与远程目标装置103进行通信。在一个实施例中,可包括多个主机CPU 101和远程目标装置103。主机CPU 101可以是例如服务器,并且远程目标装置103可以是例如存储装置(诸如,NVMeoF SSD存储装置)。
远程目标装置103可包括存储器区域,存储器区域也可被称为NVMeoF存储器区域103
寻求访问远程目标装置103的NVMeoF存储器区域103
图2B和2C分别示出根据NVMeoF技术规范和根据本公开的实施例的PropertyGet命令格式。
根据本公开的实施例,如图2C中示出,修改PropertyGet命令的格式(例如,PropertyGet命令的SQE)。图2B示出根据NVMeoF技术规范的PropertyGet命令格式,而图2C示出根据本公开的实施例的PropertyGet命令格式。与图2B中的PropertyGet命令格式的SQE相比,在图2C中示出的PropertyGet命令格式的SQE中,添加也被称为PMR位121的用于PMR的单个位。PMR位121被添加到CDW10的字节1的位1。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
类似地,与图2B中的PropertyGet命令格式的SQE相比,在图2C中示出的PropertyGet命令格式的SQE中,添加也被称为CMB位123的用于CMB的单个位。CMB位123被添加到CDW10的字节1的位0。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
根据本公开的实施例,下面参照图2D和图2E描述PropertySet命令的格式(例如,PropertySet命令的SQE)。
图2D示出根据NVMeoF技术规范的PropertySet命令格式,而图2E示出根据本公开的实施例的PropertySet命令格式。
与图2D中的PropertySet命令格式的SQE相比,在图2E中示出的PropertySet命令格式的SQE中,添加也被称为PMR位121的用于PMR的单个位。PMR位121被添加到CDW10的字节1的位1。当主机CPU 101想要访问远程目标装置103的NVMeoF存储器区域103
类似地,与图2D中的PropertySet命令格式的SQE相比,在图2E中示出的PropertySet命令格式的SQE中,添加也被称为CMB位123的用于CMB的单个位。CMB位123被添加到CDW10的字节1的位0。当主机CPU101想要访问远程目标装置103的NVMeoF存储器区域103
在这个阶段,例如,在操作211处,远程目标装置103响应于在管理提交队列中接收到的PropertyGet/PropertySet提交队列条目,将远程直接存储器访问(RDMA)写入或读取请求发送到主机CPU 101。使用RDMA写入请求或RDMA读取请求,主机CPU 101访问远程目标装置103的NVMeoF存储器区域103
上面参照图2A至图2E描述的根据本公开的实施例的方法包括对NVMeoF技术规范的中等量的改变,与上面参照图1A至图1E描述的本公开的实施例相比,在访问具有更大尺寸的远程目标装置103的PMR/CMB的情况下,这可导致对NVMeoF存储器区域103
图3示出展示根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的操作的示例的示图。
如图3中示出,主机CPU 101与远程目标装置103进行通信。在一个实施例中,可包括多个主机CPU 101和远程目标装置103。主机CPU 101可以是例如服务器,并且远程目标装置103可以是例如存储装置(诸如,NVMeoF SSD存储装置)。
远程目标装置103可包括存储器区域,存储器区域也可被称为NVMeoF存储器区域103
在下文中,将描述根据本公开的实施例的由主机CPU 101访问远程目标装置103的NVMeoF存储器区域103
在一个实施例中,寻求访问远程目标装置103的NVMeoF存储器区域103
上面参照图3描述的根据本公开的实施例的方法使用供应商特定命令,并且因此,与根据图1A至图1E和图2A至图2E的本公开的实施例相比,该方法可增加访问远程目标装置103的NVMeoF存储器区域103
图4A示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
如图4A中示出,方法400a包括根据图1A至图1E的根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的框。可在计算机可执行指令的一般上下文中描述方法400a。通常,计算机可执行指令可包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、单元和功能。
描述方法400a的顺序不旨在被解释为限制,并且任何数量的描述的方法框可以以任何顺序被组合以实现方法。此外,在不脱离在此描述的主题的范围的情况下,可根据一些实施例从方法400a删除各个框。此外,方法可以以任何合适的硬件、软件、固件或他们的组合被实现。
在框401处,主机CPU 101可与远程目标装置103建立NVMeoF传输连接。
在框403处,当与远程目标装置103建立NVMeoF传输连接时,主机CPU 101可通过将NVMeoF连接命令发送到远程目标装置103来创建管理队列。
在框405处,主机CPU 101可通过将PropertyGet/PropertySet命令发送到远程目标装置103的管理提交队列来访问远程目标装置的NVMeoF存储器区域103
在框407处,当完成对远程目标装置103的NVMeoF存储器区域103
图4B示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
如图4B中示出,方法400b包括根据图2A至图2E的根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的框。可在计算机可执行指令的一般上下文中描述方法400b。通常,计算机可执行指令可包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、单元和功能。
描述方法400b的顺序不旨在被解释为限制,并且任何数量的描述的方法框可以以任何顺序被组合以实现方法。此外,在不脱离在此描述的主题的范围的情况下,可从方法400b删除各个框。此外,方法可以以任何合适的硬件、软件、固件或他们的组合被实现。
在框401处,主机CPU 101可与远程目标装置103建立NVMeoF传输连接。
在框403处,当与远程目标装置103建立NVMeoF传输连接时,主机CPU 101可通过将NVMeoF连接命令发送到远程目标装置103来创建管理队列。
在框405处,主机CPU 101可通过将PropertyGet/PropertySet命令发送到远程目标装置103的管理提交队列来访问远程目标装置的NVMeoF存储器区域103
在框409处,主机CPU 101可响应于PropertyGet/PropertySet提交队列条目而从远程目标装置103接收RDMA写入请求或RDMA读取请求。
在框411处,当完成对远程目标装置103的NVMeoF存储器区域103
图5示出展示根据本公开的实施例的由主机CPU访问远程目标装置的NVMeoF存储器区域的方法的流程图。
如图5中示出,方法500包括根据图3的根据本公开的实施例的用于由主机CPU访问远程目标装置的NVMeoF存储器区域的框。可在计算机可执行指令的一般上下文中描述方法500。通常,计算机可执行指令可包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、单元和功能。
描述方法500的顺序不旨在被解释为限制,并且任何数量的描述的方法框可以以任何顺序被组合以实现方法。此外,在不脱离在此描述的主题的范围的情况下,可从方法500删除各个框。此外,方法可以以任何合适的硬件、软件、固件或他们的组合被实现。
在框501处,主机CPU 101可与远程目标装置103建立NVMeoF传输连接。
在框503处,当与远程目标装置103建立NVMeoF传输连接时,主机CPU 101可发送NVMeoF连接命令以在远程目标装置103中创建管理提交队列。
在框505处,当在远程目标装置103中创建管理提交队列时,主机CPU101可将请求访问远程目标装置103的NVMeoF存储器区域103
在框507处,主机CPU 101可响应于供应商特定命令请求而接收包括远程目标装置103的NVMeoF存储器区域103
在框509处,主机CPU 101可通过发送RDMA写入操作或RDMA读取操作来访问远程目标装置103的NVMeoF存储器区域103
在框511处,当完成访问远程目标装置103的NVMeoF存储器区域103
传统上,访问NVMeoF存储器区域(诸如,CMB或PMR)仅限于基于NVMe外围组件快速互连(PCIe)的传输。然而,本发明的实施例允许主机CPU通过快速、可扩展和可共享的基于NVMeoF的传输来访问远程目标装置的NVMeoF存储器区域(诸如,CMB或PMR)。
尽管参照基于RDMA的传输描述本公开的实施例,但是本公开不限于此。例如,根据本公开的实施例,方法可适用于其他NVMeoF传输(诸如,NVMe-TCP、NVMe-FC等)。此外,尽管参照PMR/CMB NVMeoF存储器区域描述本公开的实施例,但是本公开不限于此。例如,根据本公开的实施例,方法可适用于其他类型的NVMeoF存储器区域(诸如,计算存储器区域)。
描述的操作可使用标准编程和/或工程技术来实现为方法、系统或制造的物品,以产生软件、固件、硬件或他们的任何组合。描述的操作可被实现为在“非暂时性计算机可读介质”中保持的代码,其中,处理器可从计算机可读介质读取并执行代码。处理器可以是能够处理和执行查询的处理器和微处理器中的至少一个。非暂时性计算机可读介质可包括诸如例如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、DVD、光盘等)、易失性和非易失性存储器装置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)等的介质。此外,非暂时性计算机可读介质包括除暂时性计算机可读介质外的所有计算机可读介质。实现描述的操作的代码还可在硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中被实现。
除非另有明确说明,否则术语“包括”、“包含”、“具有”以及他们的变体是指“包括但不限于”。
除非另有明确说明,否则单数术语可表示“一个或多个”。
对具有彼此通信的若干组件的实施例的描述并不意味着需要所有这些组件。相反,描述各种可选组件以示出发明的种类繁多的可能实施例。
当在此描述单个装置或物品时,将容易清楚的是,可使用多于一个装置/物品(无论它们是否协作)来代替单个装置/物品。类似地,在在此描述多于一个装置或物品(无论它们是否协作)的情况下,将容易清楚的是,可使用单个装置/物品来代替多于一个装置或物品,或者可使用不同数量的装置/物品来代替示出的数量的装置或程序。装置的功能和/或特征可被替代地由未明确描述为具有这样的功能/特征的一个或多个其他装置来体现。因此,发明的其他实施例不需要包括装置本身。
图4A、图4B和图5的示出的操作展示以特定顺序发生的特定事件。在替代实施例中,特定操作可以以不同的顺序执行、修改或移除。此外,操作可被添加到上述逻辑并且仍然符合描述的实施例。此外,在此描述的操作可顺序地发生,或者特定操作可并行处理。此外,操作可由单个处理单元或由分布式处理单元执行。
虽然已经参照本发明的实施例具体示出和描述了本发明,但是本领域普通技术人员将理解,在不脱离本发明的由所附权利要求所限定的精神和范围的情况下,可在实施例中做出形式和细节上的各种改变。
- NAND存储器及其访问方法、访问装置
- 访问快闪存储器模块的方法及相关闪存控制器与电子装置
- 存储器管理方法、存储器控制电路单元与存储器存储装置
- 与主机接合的储存装置以及操作主机和储存装置的方法
- 对共享存储器区域的独立地受控的DMA和CPU访问
- 用于使用直接目标访问经由通过结构的非易失性存储器桥接访问主机存储器的方法和系统