This U.S. Patent application claims the benefit under 35 U.S.C. §119 of Indian Application No. 6621/CHE/2014 filed on Dec. 26 2014, the subject matter of which is hereby incorporated by reference.
Embodiments of the inventive concept relate generally to Peripheral Component Interconnect Express (PCIe) based storage devices, and more particularly, to methods of assigning the priority to various PCIe functions where host commands are fetched and processed according to an assigned priority.
PCIe based storage devices provide exceptional data storage capacity, excellent data processing speed and have proven to be highly scalable. As a result, storage device manufacturers are now able to provide multi-Terra Byte sized storage devices. Contemporaneously, there is a rising demand for standard based PCIe storage virtualization solutions which include storage devices that support Single Root (SR) Input Output Virtualization (IOV) and Multiple Root (MR) IOV, hereafter respectively indicated as SR-IOV and MR-IOV.
However, as yet, few storage device are commercially available that support SR-IOV and/or MR-IOV. Rather, current storage devices support PCI virtualization as per specifications defined by the PCI Special Interest Group (PCI-SIG). Of note, in PCIe based virtualized devices, there is no mechanism to assign respective priorities of various PCIe functions (e.g., Virtual Function (VF) and/or Physical Function (PF)).
As a result, there is a need for an efficient and priority-based approach to fetching and processing commands in SR-IOV or MR-IOV supported storage devices. In enterprise storage environments, it is highly likely that some PCIe functions may need to be accessed according to a priority basis.
Embodiments of the inventive concept provide methods of assigning priority to PCIe functions in PCIe based storage devices, such as Non-Volatile Memory (NVM) express (NVMe) storage devices. Embodiments of the inventive concept also provide methods of fetching and processing commands in SR-IOV or MR-IOV supported storage devices according to assigned PCIe function priorities. In these regards and others, embodiments of the inventive concept provide an efficient, priority-based methods and devices that fetch/process input/output (I/O protocol commands in various PCIe based storage devices (e.g., NVMe) characterized by multi-port data access, SR-IOV, and/or MR-IOV.
One aspect of the inventive concept provides a method fetching input/output (I/O) commands received from a host in a Peripheral Component Interconnect Express (PCIe) device. The method includes; assigning priority to PCIe functions in the host, fetching a PCIe function from among the PCIe functions based on an assigned priority, selecting a host command queue associated with the selected PCIe function, and indicating the selected host command queue, as well as a number of commands to be fetched from the selected command queue.
Another aspect of the inventive concept provides a Peripheral Component Interconnect Express (PCIe) system including a storage device connected to a host via a PCIe connection. The method includes recognizing a priority assigned by the host for each one of a plurality of PCIe functions, wherein the host selects a port amongst available ports of the storage device, selects a PCIe function from amongst the plurality of PCIe functions, and selects a commands associated with the selected PCIe function, and executing the selected commands according to a sequence in accordance with the priority of the selected PCIe function and a priority assigned to the selected PCIe function.
Another aspect of the inventive concept provides a method of operating a Peripheral Component Interconnect Express (PCIe) system comprising a storage device including multiple ports connected to a host via a PCIe connection. The method includes; using an arbitration module of the host, selecting a port from amongst the multiple ports of the storage device, and selecting a PCIe function from amongst a plurality of PCIe functions according to an assigned priority for the selected PCIe function, processing the selected PCIe function via the selected port.
These and other aspects of the embodiments herein will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following descriptions, while indicating preferred embodiments and numerous specific details thereof, are given by way of illustration and not of limitation. Many changes and modifications may be made within the scope of the embodiments herein without departing from the spirit thereof, and the embodiments herein include all such modifications.
The other objects, features and advantages will occur to those skilled in the art from the following description of embodiment and the accompanying drawings in which:
Although specific features of the inventive concept are shown in certain drawings and not in others, this is done for convenience only as each feature may be combined with any or all of the other features in accordance with the inventive concept.
In various embodiments, the inventive concept provides priority-based methods for fetching and processing I/O protocol commands in PCIe based storage devices (e.g., NVMe) characterized by multi-port data access, SR-IOV and/or MR-IOV. In the following detailed description of embodiments, reference is made to the accompanying drawings. These embodiments are described in sufficient detail to enable those skilled in the art to practice the inventive concept, and it is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the inventive concept. The following detailed description is, therefore, to be taken not in a limiting sense, but rather the scope of the inventive concept is defined by the appended claims.
Figure (
With regard to the conceptual diagram of
Assuming that a storage device is a multi-port device having multiple ports (e.g., PORT 0 and PORT 1) that operate simultaneously, an arbitration module may be used to selects amongst the available ports using a round robin arbitration. The arbitration module may also be used to arbitrate amongst both PFs and VFs, thereby selecting a corresponding PCIe function, using the round robin arbitration. The arbitration module also arbitrates amongst Inbound/Submission host command IO queues for the selected PCIe function, and selects a queue according to a priority (e.g., Admin Q, Q Urgent, Q High, Q Medium and Q Low) assigned by a round robin (RR) arbitration and/or weighted RR arbitration, as assigned by a host.
Thus, the arbitration module may be used to monitor commands received from one or more hosts by checking, for example, a producer index/tail doorbell of the Inbound/Submission host command queue that indicates a selected queue along with a number of commands to be fetched from the host to a command fetch module. Once the command(s) are fetched, they may be sent to various command processing modules of the constituent device. Then, the commands may be processed in the sequence received from command fetch module.
This general approach continues so long as functions and commands are applied to the device. Yet, in this conventional approach the device does not know a priority for any of the PCIe functions (e.g., PFs and/or VFs) when the SR-IOV is enabled.
As compared with the conventional approach, various embodiments of the inventive concept provide improved Quality of Service (QoS) for NVMe devices and other PCIe based host controller specification based storage devices. In this regard, QoS has become an important design consideration in contemporary devices. Some services require high QoS, while others require less stringent QoS. Accordingly, it is important that any given device be able to recognize relative QoS requirements, and be able to process services according to a rationally ascribed QoS-based (at least in part) priority. Hence, embodiments of the inventive concept provide methods of effectively assigning respective priorities for PCIe functions (e.g., PFs and/or VFs) and ports, and corresponding methods for fetching and processing commands according to the priorities assigned by the host environment. In this regard, an assignment of port of PCIe function priority may be made using a side-band management protocol, or user-specific command associated with an I/O protocol.
As will be appreciated by those skilled in the art, a PF is a PCIe function associated with a storage device that supports a SR-IOV or MR-IOV interface. For example, a PF may include a SR-IOV extended capability in the PCIe configuration space. This capability may be used to configure and manage the SR-IOV functionality of the storage device such as enabling virtualization and exposing one or more VFs. In contrast, a VF is a lightweight PCIe function associate with the storage device that supports a SR-IOV or MR-IOV interface. A VF may be associated with one or more PF of the storage device, and represents a virtualized instance of the storage device. Each VF may have its own PCI configuration space, and may shares one or more physical resources of the storage device.
Once one or more commands is processed via the command processing module, possibly using a data transfer unit 308, and command completion indication may be generated and/or stored in a command completion unit 310.
With reference to
Embodiments of the inventive concept provide a better QoS with respect to one or more hosts by enabling the host to assign respective priority to each PCIe function. In the foregoing written description, the terms “module” and/or “unit” have been used to denote a collection of hardware, firmware and/or software resources as well as various forms of data storing media (e.g., flash memory, Solid State Drive/Disk (SSD), and various distributed memory systems). These resources may be provided by one or more host(s) connected to one or more storage device(s) via one or more PCIe connection(s). Those skilled in the art will recognize that such modules and unit may be variously embodied.
The inventive concept has been described with reference to specific example embodiments. It will be evident that various modifications and changes may be made to the illustrated embodiments without departing from the broader scope of the inventive concept as defined by the following claims.
Number | Date | Country | Kind |
---|---|---|---|
6621/CHE/2014 | Dec 2014 | IN | national |