IP Library Granted Patent US 12,242,748
Granted Patent B2
US 12,242,748 · App. 16/909,693 · Granted Mar 4, 2025

Intermediary for storage command transfers

Inventors: Shaopeng He (Shanghai, CN); Yadong Li (Portland, OR); Ziye Yang (Shanghai, CN); Changpeng Liu (Shanghai, CN); Banghao Ying (Wenzhou, CN); Robert O. Sharp (Austin, TX)
Assignee: Intel Corporation
G06F3/0644G06F3/0604G06F3/0629G06F3/0659G06F3/0665G06F3/067G06F3/0683
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,242,748
App. No.
16/909,693
Granted
Mar 4, 2025
Kind
B2
Abstract

Examples described herein relate to accessing an initiator as a Non-Volatile Memory Express (NMVe) device. In some examples, the initiator is configured with an address space, configured in kernel or user space, for access by a virtualized execution environment. In some examples, the initiator to copy one or more storage access commands from the virtualized execution environment into a queue for access by a remote direct memory access (RDMA) compatible network interface. In some examples, the network interface to provide Non-Volatile Memory Express over Fabrics (NVMe-oF) compatible commands based on the one or more storage access commands to a target storage device. In some examples, the initiator is created as a mediated device in kernel space or user space of a host system. In some examples, configuration of a physical storage pool address of the target storage device for access by the virtualized execution environment occurs by receipt of the physical storage pool address in a configuration command. In some examples, configuration of the target storage device for access by the virtualized execution environment occurs by receipt of a storage pool internal NVMe Qualified Name in the configuration command.

Claims (42)

1. A method comprising:

causing creation of a processor-executed initiator as a mediated device in kernel space of a host system, wherein the initiator comprises a virtual function I/O (VFIO) based user space layer block in user space of the host system;

the processor-executed initiator copying one or more storage access commands from a virtualized execution environment into a queue for access by a remote direct memory access (RDMA) compatible network interface, wherein

a hypervisor, executing in user space, that utilizes a driver and an interface for communication between the virtualized execution environment and the processor-executed initiator,

the initiator is accessible as a Non-Volatile Memory Express (NVMe) device, and

the initiator is configured with an address space configured solely in the kernel space for access by the virtualized execution environment; and

the network interface transmitting NVMe-oF compatible commands, based on the one or more storage access commands, to a target storage device.

2. The method of claim 1 , comprising:

configuring a physical storage pool address of the target storage device for access by the virtualized execution environment by receipt of the physical storage pool address in a configuration command.

3. The method of claim 1 , comprising:

configuring the target storage device for access by the virtualized execution environment by receipt of a storage pool internal NVMe Qualified Name in a configuration command.

4. The method of claim 1 , wherein a device driver for the network interface is to provide the one or more storage access commands into a queue.

5. The method of claim 1 , comprising:

the initiator copying a response to the one or more storage access commands from a queue written-to by the RDMA compatible network interface to a queue accessible to the virtualized execution environment.

6. An apparatus comprising:

at least one processor comprising a cache, wherein the at least one processor is configured to:

execute an initiator configured with a storage address space for access, solely in user space, by a virtualized execution environment and

execute a hypervisor, in user space, to associate the virtualized execution environment with the initiator, wherein:

the initiator is created as a virtual function I/O (VFIO) based user space layer block in the user space of a host system,

the initiator is accessible as a Non-Volatile Memory Express (NVMe) device by an NVMe driver and interface,

the initiator is to copy one or more storage access commands from the virtualized execution environment into a queue for access by a remote direct memory access (RDMA) compatible network interface, and

the network interface is to provide NVMe-oF compatible commands based on the one or more storage access commands to a target storage device.

7. The apparatus of claim 6 , wherein a physical storage pool address of the target storage device is configured for access by the virtualized execution environment in a configuration command.

8. The apparatus of claim 7 , wherein the target storage device is configured for access by the virtualized execution environment by receipt of a storage pool internal Non-Volatile Memory Express device Qualified Name in the configuration command.

9. The apparatus of claim 7 , wherein the at least one processor is to execute a device driver for the network interface and the device driver is to provide the one or more storage access commands into a queue.

10. The apparatus of claim 6 , wherein the initiator is to copy a response to the one or more storage access commands from a queue written-to by the RDMA compatible network interface to a queue accessible to the virtualized execution environment.

11. The apparatus of claim 6 , comprising: a host computing system comprising one or more memory devices, one or more storage devices, and a rack switch, wherein the host computing system is to store and access data transferred using the initiator.

12. At least one non-transitory computer-readable medium, comprising instructions stored thereon, that if executed by at least one processor, cause the at least one processor to:

execute an initiator configured with a storage address space for access, solely in kernel space, by a virtualized execution environment;

create the initiator as a mediated kernel layer block in the kernel space, wherein the initiator comprises a virtual function I/O (VFIO) based user space layer block in user space of a host system;

execute a hypervisor, in user space, to associate the virtualized execution environment with the initiator; and

execute a driver and interface, in user space, wherein:

the initiator is accessible as a Non-Volatile Memory Express (NVMe) device by the driver and the interface,

the initiator is to copy one or more storage access commands from the virtualized execution environment into a queue for access by a remote direct memory access (RDMA) compatible network interface, and

the network interface to provide NVMe-oF compatible commands to a target storage device.

13. The at least one computer-readable medium of claim 12 , wherein a physical storage pool address of a target storage device is configured for access by the virtualized execution environment in a configuration command.

14. The at least one computer-readable medium of claim 13 , wherein the target storage device is configured for access by the virtualized execution environment by receipt of a storage pool internal Non-Volatile Memory Express Qualified Name in the configuration command.

15. The at least one computer-readable medium of claim 12 , comprising instructions stored thereon, that if executed by at least one processor, cause the at least one processor to:

execute a device driver for the network interface, wherein the device driver is to provide the one or more storage access commands into a queue.

16. The at least one computer-readable medium of claim 12 , comprising instructions stored thereon, that if executed by at least one processor, cause the at least one processor to:

cause the initiator to copy a response to the one or more storage access commands from a queue written-to by the RDMA compatible network interface to a queue accessible to the virtualized execution environment.

17. The at least one computer-readable medium of claim 12 , wherein RDMA comprises use of a send queue (SQ) to transfer work requests to the RDMA compatible network interface and a receive queue (RQ) to receive an RDMA-based command or RDMA-based response.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072851/0056 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2020
From: HE, SHAOPENG; LI, YADONG; YANG, ZIYE; LIU, CHANGPENG; YING, BANGHAO; SHARP, ROBERT O.
To: INTEL CORPORATION
Reel/Frame 053146/0494 →
Continuity (2)
Provisional Application 63034321 · Jun 3, 2020
Related Publication 20200319812A1 · Oct 8, 2020
References Cited (81)
US 6385727B1 · Cassagnol · 2002 [cited by examiner]
US 6732138B1 · Browning · 2004 [cited by examiner]
US 7782869B1 · Chitlur Srinivasa · 2010 [cited by examiner]
US 7783788B1 · Quinn · 2010 [cited by examiner]
US 9747039B1 · Coleman · 2017 [cited by examiner]
US 10817353B1 · Kain · 2020 [cited by examiner]
US 11625169B2 · Chen · 2023 [cited by examiner]
US 20010044886A1 · Cassagnol · 2001 [cited by examiner]
US 20040091114A1 · Carter · 2004 [cited by examiner]
US 20050015702A1 · Shier · 2005 [cited by examiner]
US 20050210479A1 · Andjelic · 2005 [cited by examiner]
US 20060248234A1 · Pope · 2006 [cited by examiner]
US 20070288719A1 · Cholleti · 2007 [cited by examiner]
US 20120151184A1 · Wilkerson · 2012 [cited by examiner]
US 20120331480A1 · Ertugay et al. · 2012 [cited by applicant]
US 20130132702A1 · Patel · 2013 [cited by examiner]
US 20130283017A1 · Wilkerson · 2013 [cited by examiner]
US 20130346709A1 · Wang · 2013 [cited by examiner]
US 20140258438A1 · Ayoub · 2014 [cited by applicant]
US 20140365971A1 · Laadan · 2014 [cited by examiner]
US 20140372717A1 · Ciu · 2014 [cited by examiner]
US 20150178111A1 · Warszawski · 2015 [cited by examiner]
US 20150220354A1 · Nair · 2015 [cited by examiner]
US 20160117497A1 · Saxena · 2016 [cited by examiner]
US 20160117498A1 · Saxena · 2016 [cited by examiner]
US 20160328562A1 · Saxena · 2016 [cited by examiner]
US 20160378529A1 · Wen · 2016 [cited by examiner]
US 20170060613A1 · Warkentin · 2017 [cited by examiner]
US 20170177541A1 · Berman et al. · 2017 [cited by applicant]
US 20170187496A1 · Shalev et al. · 2017 [cited by applicant]
US 20170235614A1 · Choe · 2017 [cited by examiner]
US 20170344406A1 · Yamaura · 2017 [cited by examiner]
US 20180152494A1 · Wilson · 2018 [cited by examiner]
US 20180152495A1 · Wilson · 2018 [cited by examiner]
US 20180152496A1 · Wilson · 2018 [cited by examiner]
US 20180152511A1 · Wilson · 2018 [cited by examiner]
US 20180219797A1 · Sen et al. · 2018 [cited by applicant]
US 20190042263A1 · Sukhomlinov · 2019 [cited by examiner]
US 20190042417A1 · Sukhomlinov · 2019 [cited by examiner]
US 20190146718A1 · Ben Dayan · 2019 [cited by examiner]
US 20190297015A1 · Marolia et al. · 2019 [cited by applicant]
US 20190306282A1 · Masputra · 2019 [cited by examiner]
US 20190377863A1 · Zhao · 2019 [cited by examiner]
US 20190384532A1 · Ananthapalli et al. · 2019 [cited by applicant]
US 20190385271A1 · Ben Dayan · 2019 [cited by examiner]
US 20200042177A1 · Benisty · 2020 [cited by examiner]
US 20200073689A1 · Tsirkin · 2020 [cited by examiner]
US 20200073846A1 · Adiletta et al. · 2020 [cited by applicant]
US 20200133497A1 · Meiri · 2020 [cited by examiner]
US 20200133909A1 · Hefty · 2020 [cited by examiner]
US 20200136996A1 · Li · 2020 [cited by examiner]
US 20200150734A1 · Ma · 2020 [cited by examiner]
US 20200293465A1 · Yang · 2020 [cited by examiner]
US 20210019270A1 · Li · 2021 [cited by examiner]
US 20210342215A1 · Chawla · 2021 [cited by examiner]
US 20210342273A1 · Patel · 2021 [cited by examiner]
US 20210342298A1 · Mathews · 2021 [cited by examiner]
WO 2016196766A2 · 2016 [cited by applicant]
International Search Report and Written Opinion for PCT Patent Application No. PCT/US20/64674, Mailed Apr. 7, 2021, 10 pages. [cited by applicant]
Fair, David, et al., “How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics”, SNIA Europe, Topic, Jun. 2016, 2 pages. [cited by applicant]
Guz, Zvika, et al., “Performance Characterization of NVMe-over-Fabrics Storage Disaggregation”, ACM Transactions on Storage, vol. 14, No. 4, Article 31. Publication date: Dec. 2018, 18 pages. [cited by applicant]
Johnson, John, “Disaggregating QEMU”, https://github.com/oracle/qemu/blob/multi-process-qemu-v0.5/docs/devel/qemu-multiprocess.rst, Aug. 19, 2019, 26 pages. [cited by applicant]
KVM Forum, “Muser: Mediated User Space Device”, https://kvmforum2019.sched.com/event/TmvV, Nov. 1, 2019, 2 pages. [cited by applicant]
KVM Forum, “Post-copy Live Migration on Pass-through Devices”, https://kvmforum2019.sched.com/event/TmvG, Nov. 1, 2019, 2 pages. [cited by applicant]
Lureau, Marc-Andre, “libvfio library”, Copyright (c) 2017 Red Hat, Inc., https://github.com/elmarco/qemu/blob/wip/vfio-user/hw/vfio/libvfio-user.com, Oct. 20, 2017, 13 pages. [cited by applicant]
Makatos, T., “framework for emulating devices in userspace”, https://github.com/nutanix/libvfio-user, downloaded Aug. 15, 2022, 8 pages. [cited by applicant]
Makatos, Thanos, et al., “MUSER: mediated userspace device” Nutanix, KVM Forum, Oct. 2019, 16 pages. [cited by applicant]
Makatos, Thomas, “RFC: use VFIO over a UNIX domain socket to implement device offloading”, https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg07900.html, Mar. 26, 2020, 2 pages. [cited by applicant]
NVM Express, “NVM Express Base Specification”, Revision 1.4, Jun. 10, 2019, 403 pages. [cited by applicant]
Williamson, Alex, “An Introduction to PCI Device Assignment with VFIO”, redhat, Sep. 1, 2016, 118 pages. [cited by applicant]
Williamson, Alex, “VFIO: A user's perspective”, redhat, KVM Forum 2012, Nov. 8, 2012, 38 pages. [cited by applicant]
“Errata for the Compute Express Link™ (CXL™) Specification Rev. 1.1”, CXL\Compute Express Link™, Feb. 2020, 34 pages. [cited by applicant]
“Errata for the Compute Express Link™ (CXL™) Specification Rev. 1.1”, CXL\Compute Express Link™, Jun. 2019, 250 pages. [cited by applicant]
“Gen Z Core Specification Version 1.0”, Copyright 2016-2018 by Gen-Z Consortium., 983 pages. [cited by applicant]
“Quick Concepts Part 1—Introduction to RDMA”, ZCopy education and Sample Code for RDMA Programming, taken from the internet, https://zcopy.wordpress.com/2010/10/08/quick-concepts-part-1-%e2%80%93-introduction-to-rdma/, … [cited by applicant]
“Swordfish Scalable Storage Management API Specification”, Version 1.1.0a. Swordfish SNIA, Technical Position, Last Updated Nov. 12, 2019, 149 pages. [cited by applicant]
Advisory Action for U.S. Appl. No. 16/701,026, Mailed Aug. 22, 2023, 3 pages. [cited by applicant]
Final Office Action for U.S. Appl. No. 16/701,026, Mailed May 5, 2023, 33 pages. [cited by applicant]
Final Office Action for U.S. Appl. No. 16/701,026, Mailed Jan. 13, 2023, 26 pages. [cited by applicant]
Intel, “PCI Express* Ethernet Networking” White Paper, Intel PRO Network Adapters, Network Performance, Network Connectivity, Sep. 2005, 6 pages. [cited by applicant]
Extended European Search Report for Patent Application No. 20938837.0, Mailed May 22, 2024, 8 pages. [cited by applicant]