US20200151134A1 - Bandwidth limiting in solid state drives - Google Patents
Bandwidth limiting in solid state drives Download PDFInfo
- Publication number
- US20200151134A1 US20200151134A1 US16/189,963 US201816189963A US2020151134A1 US 20200151134 A1 US20200151134 A1 US 20200151134A1 US 201816189963 A US201816189963 A US 201816189963A US 2020151134 A1 US2020151134 A1 US 2020151134A1
- Authority
- US
- United States
- Prior art keywords
- command
- bandwidth
- completion
- commands
- storage device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000007787 solid Substances 0.000 title 1
- 238000003860 storage Methods 0.000 claims abstract description 174
- 238000000034 method Methods 0.000 claims description 107
- 230000001960 triggered effect Effects 0.000 claims description 7
- 230000011664 signaling Effects 0.000 claims description 3
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Definitions
- Embodiments of the present disclosure generally relate to storage devices, such as sold state drives (SSDs).
- SSDs sold state drives
- SLAs Service Level Agreements
- SLAs are often held by retailers of SSDs, or persons selling storage solutions, who have multi-tenant systems. Each multi-tenant system may cover many subscribers and customers, virtual machines, or applications, all of which desire a share of the available bandwidth of the system. As available bandwidth is a limited resource, the SLAs generally assure a quantity of available drive bandwidth and quality of service (QoS) for different price tiers. SLAs also aim to provide customers with an assured and accurate QoS and/or bandwidth throughput guarantees. SLAs may limit BW, QoS, or in a combination of both available to the tenants, and may set minimums, maximums, and relational changes in both BW and QoS.
- the assurances in an SLA may be to provide a minimum or a maximum quantity of bandwidth or QoS. For example, a higher paying customer may be assured a greater quantity of bandwidth, in which case the customer's SLA would like assure a minimum quantity of bandwidth and a maximum degradation of QoS while other tenant's traffic is occurring.
- Methods of limiting available bandwidth include slowing down the data flow rate or counting bytes or number of commands as the commands are processed in an SSD.
- these methods may consume large amounts of bandwidth in the process, and may be considered invasive or heavy-handed. As such, these methods can be wasteful and inefficient.
- the present disclosure generally relates to limiting bandwidth in storage devices.
- One or more bandwidth quality of services levels may be selected and associated with commands according to service level agreements, which may prioritize some commands over others.
- a storage device fetches and executes one or more the commands. Each of the commands is associated with a bandwidth quality of service level. After executing the commands and transferring the data to a host device, the storage device may delay writing a completion entry corresponding to the executed commands to a completion queue based on the associated bandwidth quality of service level of the commands. The device may then delay revealing the completion entry by delaying updating a completion queue head pointer. The device may further delay sending an interrupt signal to the host device based on the associated bandwidth quality of service level of the commands.
- a method of operating a storage device comprises executing, by a controller of the storage device, a command associated with a bandwidth quality-of-service level.
- the command is executed at full speed.
- the method further comprises delaying writing a completion entry corresponding to the executed command for a predetermined amount of time.
- the predetermined amount of time is based on the associated bandwidth quality-of-service level.
- the method comprises triggering the completion entry corresponding to the executed command to be written to a completion queue. The writing of the completion entry to the completion queue is triggered after the predetermined amount of time is met.
- a storage device comprises one or more memory devices and a controller coupled to the one or more memory devices.
- the controller is configured to fetch a command associated with a bandwidth and a quality-of-service level from a submission queue at full speed, execute the command, write a completion entry corresponding to the executed command to a completion queue, and delay sending an interrupt signal indicating the completion queue is ready to be read. The delay is based on the bandwidth and the quality-of-service level associated with the command.
- a storage system comprises a host device and a storage device coupled to the host device.
- the storage device comprises one or more memory devices and a controller coupled to the one or more memory devices.
- the controller is configured to fetch a plurality of commands from a submission queue at full speed, read headers of each of the plurality of commands to determine an associated bandwidth quality-of-service level of each of the plurality of commands, and execute the plurality of commands in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of commands.
- FIG. 1 is a schematic block diagram illustrating a storage system, according to one embodiment.
- FIG. 2 illustrates a storage system comprising a storage device coupled to a host device, according to another embodiment.
- FIG. 3 is a block diagram illustrating a method of limiting bandwidth between a host and a storage device, according to one embodiment.
- FIG. 4 is a flowchart illustrating a method of limiting bandwidth by delaying writing a completion entry to a completion queue of a host, according to one embodiment.
- FIG. 5 is a flowchart illustrating a method of limiting bandwidth by delaying sending an interrupt signal to a host device, according to another embodiment.
- FIG. 6 is a flowchart illustrating a method of limiting bandwidth by removing a completion entry from a completion queue to reorder the completion entries, according to one embodiment.
- FIGS. 7A-7C are flowcharts illustrating methods of limiting bandwidth by reading a header of a command to determine the associated bandwidth QoS level before executing the command, according to various embodiments.
- the present disclosure generally relates to limiting bandwidth in storage devices.
- One or more bandwidth quality of services levels may be selected and associated with commands according to service level agreements, which may prioritize some commands over others.
- a storage device fetches and executes one or more the commands. Each of the commands is associated with a bandwidth quality of service level. After executing the commands and transferring the data to a host device, the storage device may delay writing a completion entry corresponding to the executed commands to a completion queue based on the associated bandwidth quality of service level of the commands. The device may then delay revealing the completion entry by delaying updating a completion queue head pointer. The device may further delay sending an interrupt signal to the host device based on the associated bandwidth quality of service level of the commands.
- FIG. 1 is a schematic block diagram illustrating a storage system 100 in which storage device 106 may function as a storage device for a host device 104 , in accordance with one or more techniques of this disclosure.
- the host device 104 may utilize non-volatile memory devices included in storage device 106 to store and retrieve data.
- the host device 104 comprises a host DRAM 138 .
- the storage system 100 may include a plurality of storage devices, such as the storage device 106 , which may operate as a storage array.
- the storage system 100 may include a plurality of storages devices 106 configured as a redundant array of inexpensive/independent disks (RAID) that collectively function as a mass storage device for the host device 104 .
- RAID redundant array of inexpensive/independent disks
- the storage system 100 includes a host device 104 which may store and/or retrieve data to and/or from one or more storage devices, such as the storage device 106 . As illustrated in FIG. 1 , the host device 104 may communicate with the storage device 106 via an interface 114 .
- the host device 104 may comprise any of a wide range of devices, including computer servers, network attached storage (NAS) units, desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called “smart” phones, so-called “smart” pads, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming device, and the like.
- NAS network attached storage
- the storage device 106 includes a controller 108 , non-volatile memory 110 (NVM 110 ), a power supply 111 , volatile memory 112 , a bandwidth limiter 120 , and an interface 114 .
- the storage device 106 may include additional components not shown in FIG. 1 for sake of clarity.
- the storage device 106 may include a printed board (PB) to which components of the storage device 106 are mechanically attached and which includes electrically conductive traces that electrically interconnect components of the storage device 106 , or the like.
- PB printed board
- the physical dimensions and connector configurations of the storage device 106 may conform to one or more standard form factors.
- Some example standard form factors include, but are not limited to, 3.5′′ data storage device (e.g., an HDD or SSD), 2.5′′ data storage device, 1.8′′ data storage device, peripheral component interconnect (PCI), PCI-extended (PCI-X), PCI Express (PCIe) (e.g., PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCl, etc.).
- the storage device 106 may be directly coupled (e.g., directly soldered) to a motherboard of the host device 104 .
- the interface 114 of the storage device 106 may include one or both of a data bus for exchanging data with the host device 104 and a control bus for exchanging commands with the host device 104 .
- the interface 114 may operate in accordance with any suitable protocol.
- the interface 114 may operate in accordance with one or more of the following protocols: advanced technology attachment (ATA) (e.g., serial-ATA (SATA) and parallel-ATA (PATA)), Fibre Channel Protocol (FCP), small computer system interface (SCSI), serially attached SCSI (SAS), PCI, and PCIe, non-volatile memory express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), or the like.
- ATA advanced technology attachment
- SATA serial-ATA
- PATA parallel-ATA
- FCP Fibre Channel Protocol
- SCSI small computer system interface
- SAS serially attached SCSI
- PCI PCI
- PCIe non-volatile memory express
- the electrical connection of the interface 114 (e.g., the data bus, the control bus, or both) is electrically connected to the controller 108 , providing electrical connection between the host device 104 and the controller 108 , allowing data to be exchanged between the host device 104 and the controller 108 .
- the electrical connection of the interface 114 may also permit the storage device 106 to receive power from the host device 104 .
- the power supply 111 may receive power from the host device 104 via the interface 114 .
- the storage device 106 includes NVM 110 , which may include a plurality of memory devices.
- NVM 110 may be configured to store and/or retrieve data.
- a memory device of NVM 110 may receive data and a message from the controller 108 that instructs the memory device to store the data.
- the memory device of NVM 110 may receive a message from the controller 108 that instructs the memory device to retrieve data.
- each of the memory devices may be referred to as a die.
- a single physical chip may include a plurality of dies (i.e., a plurality of memory devices).
- each memory devices may be configured to store relatively large amounts of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.).
- relatively large amounts of data e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.
- each memory device of NVM 110 may include any type of non-volatile memory devices, such as flash memory devices, phase-change memory (PCM) devices, resistive random-access memory (ReRAM) devices, magnetoresistive random-access memory (MRAM) devices, ferroelectric random-access memory (F-RAM), holographic memory devices, and any other type of non-volatile memory devices.
- non-volatile memory devices such as flash memory devices, phase-change memory (PCM) devices, resistive random-access memory (ReRAM) devices, magnetoresistive random-access memory (MRAM) devices, ferroelectric random-access memory (F-RAM), holographic memory devices, and any other type of non-volatile memory devices.
- NVM 110 may comprise a plurality of flash memory devices.
- Flash memory devices may include NAND or NOR based flash memory devices, and may store data based on a charge contained in a floating gate of a transistor for each flash memory cell.
- the flash memory device may be divided into a plurality of blocks which may divided into a plurality of pages.
- Each block of the plurality of blocks within a particular memory device may include a plurality of NAND cells.
- Rows of NAND cells may be electrically connected using a word line to define a page of a plurality of pages.
- Respective cells in each of the plurality of pages may be electrically connected to respective bit lines.
- NAND flash memory devices may be 2D or 3D devices, and may be single level cell (SLC), multi-level cell (MLC), triple level cell (TLC), or quad level cell (QLC).
- the controller 108 may write data to and read data from NAND flash memory devices at the page level and erase data from NAND flash memory devices at the block level.
- the storage device 106 includes a power supply 111 , which may provide power to one or more components of the storage device 106 .
- the power supply 111 may provide power to the one or more components using power provided by an external device, such as the host device 104 .
- the power supply 111 may provide power to the one or more components using power received from the host device 104 via the interface 114 .
- the power supply 111 may include one or more power storage components configured to provide power to the one or more components when operating in a shutdown mode, such as where power ceases to be received from the external device. In this way, the power supply 111 may function as an onboard backup power source.
- the one or more power storage components include, but are not limited to, capacitors, super capacitors, batteries, and the like.
- the amount of power that may be stored by the one or more power storage components may be a function of the cost and/or the size (e.g., area/volume) of the one or more power storage components. In other words, as the amount of power stored by the one or more power storage components increases, the cost and/or the size of the one or more power storage components also increases.
- Storage device 106 also includes volatile memory 112 , which may be used by controller 108 to store information.
- Volatile memory 112 may be comprised of one or more volatile memory devices.
- the controller 108 may use volatile memory 112 as a cache. For instance, the controller 108 may store cached information in volatile memory 112 until cached information is written to non-volatile memory 110 . As illustrated in FIG. 1 , volatile memory 112 may consume power received from the power supply 111 .
- volatile memory 112 examples include, but are not limited to, random-access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4, and the like)).
- RAM random-access memory
- DRAM dynamic random access memory
- SRAM static RAM
- SDRAM synchronous dynamic RAM
- the storage device 106 includes a controller 108 , which may manage one or more operations of the storage device 106 .
- the controller 108 may manage the reading of data from and/or the writing of data to NVM 110 .
- the controller 108 may initiate a data storage command to store data to NVM 110 and monitor the progress of the data storage command.
- the controller 108 may determine at least one operational characteristic of the storage system 100 and store the at least one operational characteristic to NVM 110 .
- the storage device 106 includes a bandwidth limiter 120 coupled to the controller 108 .
- the bandwidth limiter 120 monitors and controls access to the available bandwidth of the storage system 100 .
- the bandwidth limiter 120 prioritizes each request for bandwidth based on a respective QoS level, and controls access to the available bandwidth.
- QoS is a statistical aggregate description of command latencies from the drive. Either a maximum command latency, average command latency impact, a statistical description of all the commands an assurance of 99% of the commands executing by some limit, or a complete description of all of the command latencies versus the probability of that latency (shown in a plot frequently).
- the bandwidth limiter 120 may be a hardware circuit located within the storage device 106 .
- the bandwidth limiter 120 is located in firmware in the storage device 106 . In yet other embodiments, the bandwidth limiter 120 is executed in software located within the storage device 106 .
- the bandwidth limiter 120 may be hardware, firmware, or software located within the controller 108 .
- the bandwidth limiter 120 may also be located remotely from the storage device 106 in a server or other processor. Other embodiments are possible and are not limited by the examples disclosed herein.
- the storage system 100 may be a multi-tenant system.
- a tenant may include apps, virtual machines, dockers, containers, OS instances, databases, client servers, processors, virtual functions, namespaces, submission queue and completion queue pairs, or the like.
- multiple users, or tenants may be sharing the storage device 106 .
- the storage device 106 may be a part of a cloud-based storing network.
- the bandwidth limiter 120 limits the bandwidth to a particular tenant or user by prioritizing the execution of commands received from the host device 104 based on the bandwidth QoS level associated with each command.
- the bandwidth limiter 120 may delay a completion entry associated with an executed command from being written to a completion queue.
- the bandwidth limiter 120 may further delay sending interruption signals to the host device 104 notifying the host device 104 that the command has been completed.
- the actual command is executed by the controller 108 at full bandwidth speed and is not limited by the bandwidth limiter 120 .
- the data throughput between the host device 104 and the storage device 106 continues to operate at full bandwidth in order to maintain the highest data throughput efficiency.
- the host DRAM 138 may be utilized to fill out and store the completion entry. However, as the host device 104 is not aware that the command has been successfully executed by the storage device 106 until the storage device 106 writes the completion entry to the completion queue and sends the interrupt signal to the host device 104 , the bandwidth to the user is effectively limited.
- FIG. 2 illustrates a storage system 200 comprising a storage device 206 coupled to a host device 204 , according to another embodiment.
- Storage system 200 may be the storage system 100 , the host device 104 , and the storage device 106 of FIG. 1 .
- the storage device 206 may send and receive commands and data from the host device 204 , and comprises a command processor 220 .
- the command processor 220 may schedule memory device access, such as NAND access, and may perform a read to a memory device prior to a previously received command requiring a write to the same memory device.
- the command processor 220 is coupled to a bandwidth limiter 230 and one or more memory devices 228 .
- the one or more memory devices 228 may be NAND non-volatile memory devices.
- the bandwidth limiter 230 is coupled to a command fetch 222 .
- the command fetch 222 is coupled to a submission queue arbitration 224 .
- the submission queue arbitration 224 is coupled to one or more submission queue head and tail pointers 226 .
- the host device 204 is comprised of one or more host software applications 232 coupled to one or more processing units or CPU applications 234 .
- the software application 232 has limited solid-state drive queue depth in order to derive a latency QoS for each user of the system 200 .
- the host device 204 further comprises an operating system (OS) or software application 240 without an associated QoS.
- the CPU 234 is coupled to an interconnect 236 and to a host DRAM 238 .
- the host DRAM 238 may store submission queue data.
- the interconnect 236 is coupled to the device 206 .
- the interconnect 236 may be in communication with both the submission queue head and tail pointers 226 and the command fetch 222 .
- the CPU 234 generates one or more commands 216 to send to the device 206 , and may send and receive commands from the device 206 via the command fetch signal 244 .
- the CPU 234 may further send an interrupt or doorbell 218 to the device 206 to notify the device 206 of the one or more commands 216 .
- the CPU 234 may differentiate between commands based on a bandwidth QoS level associated with each command.
- the associated bandwidth QoS level determines the priority of the commands. For example, in a multi-tenant system with pricing tiers, a higher paying customer will have a higher priority. As such, any commands generated by the higher paying customer through the CPU 234 will have an associated bandwidth QoS level directly corresponding to the higher priority level.
- the CPU 234 may limit data-queue depth submitted to the device 206 .
- Queue depth is the maximum number of commands queued to the device 206
- data-QD is the amount of data associated with the commands queued with a QD.
- the data-QD 242 of the storage device 206 is equal to the bandwidth of the storage device 206 .
- Data-QD 242 is limited to the highest level under which the device 206 can still maintain a desired latency QoS.
- the host device 204 may select a target latency QoS for the storage system 200 , and may also limit an associated data-QD 242 of the storage system 200 . For selecting the latency QoS target, the device 206 may provide information to the host driver 234 .
- Such information may include the latency QoS capabilities of the device 206 , an approximate maximum data-QD limit associated with a particular latency QoS target, and/or multiple pairs of data-QD limits or QoS target values. Additionally, the host device 204 may keep a data-QD of the system 200 under a current data-QD limit.
- FIG. 3 is a block diagram illustrating a method 300 of limiting bandwidth between a host and a storage device when executing a read command, according to one embodiment.
- Method 300 may be used with the storage system 100 having a host device 104 and a storage device 106 comprising a controller 108 .
- Method 300 may further be used with the storage system 200 having a host device 204 and a storage device 206 comprising a command processor 220 .
- Method 300 begins at operation 350 , where the host device writes a command into a submission queue as an entry.
- the host device may write one or more commands into the submission queue at operation 350 .
- the commands may be read commands or write commands.
- the host device may write the command with an associated bandwidth QoS level.
- the host device may write the associated bandwidth QoS level of a command in a header of the command.
- the bandwidth QoS level associated with each command directly corresponds to a priority rank and prioritizes some commands over others. For example, a higher paying customer or user will have a higher priority than a lower paying customer, and thus, will have a higher or greater bandwidth QoS level.
- There may be any number of various priority ranks or levels. For example, there may be five tiers of bandwidth QoS levels, with level one being the lowest priority and level five being the highest priority.
- the host device may comprise one or more submission queues. Commands may be written into the one or more submission queues based on priority. For example, the host may have a first submission queue for high ranking commands, a second submission queue for mid-level ranking commands, and a third submission queue for low ranking commands.
- the host device writes one or more updated submission queue tail pointers and rings a doorbell or sends an interrupt signal to notify or signal the storage device of the new command that is ready to be executed.
- the doorbell signal may be the doorbell 218 of FIG. 2 .
- the host may write an updated submission queue tail pointer and send a doorbell or interrupt signal for each of the submission queues if there are more than one submission queues.
- a controller of the storage device fetches the command from the one or more submission queue at full speed. Full speed may be the normal operating speed or fastest bandwidth speed.
- Fetching the commands from the submission queue at full speed allows a maximum amount of information to be received by the storage device. Such information may include the number of commands for best queuing and execution, prioritized commands, different namespaces, and different submission queue configurations, among others. Providing the maximum amount of information to the storage device affords for high grade SLA customers to receive the high grade of service. Additionally, a lower grade SLA customer can still be responded to with minimum latency, which can reduce conflicts of storage device resources, including controller SRAM, memory die availability, and toggle mode bus availability, among others.
- the controller of the storage device may determine the bandwidth QoS level associated with the command, and thus, may determine the priority rank of the command.
- the bandwidth QoS level may be retrieved by the storage device from the submission queue with the command.
- the bandwidth QoS level may be determined based on the location of each command in a submission queue.
- the host device includes the bandwidth QoS level of a command in the header of the command. The storage device may then read the header of the command to determine the associated bandwidth QoS level.
- the controller of the storage device processes the command and writes or transfers data associated with the command to the host device memory at full speed.
- the controller of the storage device writes a completion entry corresponding to the executed command to a completion queue of the host device and moves or updates the CQ head pointer to point to the newly written completion entry.
- the storage device may delay writing the completion entry to the completion queue and/or delay updating the CQ head pointer. The delay is based on the bandwidth QoS level associated with the executed command. In at least one implementation, the lower the priority of the associated bandwidth QoS level, the longer the delay. Commands associated with the highest priority ranked bandwidth QoS level may have no delay.
- Delaying the writing of a completion entry to a completion queue and/or delaying updating the head pointer permits command data to be transferred into the host DRAM or into non-volatile memory while holding the completion entry in the storage device. This provides for optimal availability of the controller SRAM without acknowledging to the host the movement of the command data. Delaying the writing of the completion entry to the completion queue and/or delaying updating the head pointer results in the host being unaware of the progress the storage device has made with the commands and data transfers.
- the completion queue comprises a plurality of completion queues.
- Each completion queue of the plurality of completion queues may be associated with a different bandwidth QoS level.
- the bandwidth QoS level associated with the commands may match or be the same as the bandwidth QoS level associated with each completion queue of the plurality of completion queues.
- the storage device writes a completion entry into the completion queue corresponding to the bandwidth QoS level of the command. For instance, a high prioritized command would be written to a high prioritized completion queue.
- the plurality of completion queues may be tracked by one or more of global tracking, a predetermined list, or per completion queue.
- Operations 350 - 358 may be repeated one or more times to process a plurality of commands prior to operation 360 .
- Several completion entries may be written to the completion queue in operation 358 without alerting the host device.
- the completion queue (CQ) head pointer may be updated to point to the newest ending completion entry, or the last written entry, in the completion queue. Updating the CQ head pointer reveals the one or more completion entries in the completion queue to the host.
- the controller of the storage device generates and sends an interrupt signal or doorbell to the host device.
- the interrupt signal indicates that the command has been executed and data associated with the command is available in memory.
- the interrupt signal further notifies that the completion queue is ready to be read or processed.
- the storage device may delay sending the interrupt signal to the host device. The delay is based on the bandwidth QoS level associated with the executed command. In at least one implementation, the lower the priority of the associated bandwidth QoS level, the longer the delay. Commands associated with the highest priority ranked bandwidth QoS level may have no delay.
- the storage device may delay updating the CQ head pointer and sending the interrupt signal to the host device until multiple completion entries are written to the completion queue. For example, if the storage device writes one or more completion entries corresponding to low ranked bandwidth QoS levels to the completion queue, the storage device may delay updating the CQ head pointer and sending the interrupt signal until a completion entry associated with a higher ranked bandwidth QoS level is written to the completion queue. By delaying updating the CQ head pointer and sending the interrupt signal until a completion entry associated with a higher ranked bandwidth QoS level is written to the completion queue, the interrupt signal may flush out all completion entries currently in the command queue, including all completion entries written to the completion queue prior to the entry associated with the higher ranked bandwidth QoS level.
- the delay in both operations 358 and 360 may be a predetermined amount of time based directly upon the bandwidth QoS level associated with the command.
- the delay may be caused by a countdown expiring or a count up being met.
- the storage device may comprise a timer, which may also set the delay according to the bandwidth QoS level associated with a command.
- the delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue.
- the delay may be further based on a maximum or minimum bandwidth descriptor, maximum or minimum QoS assurances, and a mix of QoS and bandwidth maximums and minimums.
- the host device processes the completion entry.
- the host device writes an updated CQ head pointer to the storage device and rings the doorbell or sends an interrupt signal to the storage device to release the completion entry.
- the bandwidth QoS levels and associated parameters are set by a retailer on a settings page of the storage device.
- the retailer may select the number of bandwidth QoS levels.
- the retailer may further select the length of delay associated with each bandwidth QoS level, or the storage device may automatically populate a delay based on the number of bandwidth QoS level utilized.
- a predetermined bandwidth QoS level may be assigned to each customer or user based on a pricing tier and stored as a setting in the storage device memory.
- the bandwidth QoS level information is retrieved from the storage device memory and used to determine the priority of the command.
- the retailer may select other parameters to correspond to the various bandwidth QoS levels.
- each command is associated with a bandwidth QoS level when written to the submission queue, and the commands do not have a predetermined bandwidth QoS level.
- each command would by dynamically assigned a bandwidth QoS level on-the-fly as the system operates.
- the retailer may further select other parameters to correspond to the various bandwidth QoS levels, such as the length of a delay.
- the bandwidth QoS level for a given customer or user's command may be established based on the time of day, a customer number, a quantity of commands previously retrieved or currently being fetched, available bandwidth, or other discriminating parameter. Other embodiments are possible and are not limited to these examples.
- FIG. 4 , FIG. 5 , FIG. 6 , and FIGS. 7A-7C are flowcharts illustrating various embodiments of limiting bandwidth in a storage device.
- the configurations of each embodiment detailed in FIGS. 4-7C may be determined as described above, such as a retailer setting a settings page or by choosing on-the-fly.
- FIG. 4 is a flowchart illustrating a method 400 of limiting bandwidth by delaying writing a completion entry to a completion queue of a host, according to one embodiment.
- Method 400 may be used in conjunction with method 300 .
- operations 350 and 352 of method 300 are operations 350 and 352 of method 300 .
- method 400 may start with operations 350 and 352 of method 300 .
- method 400 may be used with the storage system 100 having a host device 104 and a storage device 106 comprising a controller 108 .
- Method 400 may further be used with the storage system 200 having a host device 204 and a storage device 206 comprising a command processor 220 .
- a controller or command processor of the storage device fetches a command from a submission queue of a host and executes the command at full speed.
- One or more commands may be fetched and executed at full speed in operation 402 .
- Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command.
- the commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host.
- the controller or command processor delays the writing of an updated completion entry and CQ head pointer corresponding to the executed command to a completion queue of the host for a predetermined amount of time.
- the predetermined amount of time is based on a bandwidth (BW) QoS level associated with the command.
- BW bandwidth
- the length of the delay is directly proportional to the priority rank or tier of the command. For example, the lower the priority rank or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority rank or bandwidth QoS level associated with the command, the shorter the delay may be.
- the highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers.
- Delaying the writing of an updated completion entry and CQ head pointer to a completion queue permits command data to be transferred into the host DRAM or into non-volatile memory while holding the completion entry in the storage device. This provides for optimal availability of the controller SRAM without acknowledging to the host the movement of the command data. Delaying the writing of the updated completion entry and CQ head pointer to the completion queue results in the host being unaware of the progress the storage device has made with the commands and data transfers.
- the delay may be caused by a countdown expiring or a count up being met.
- the storage device may comprise a timer, which may also set the delay according to the bandwidth QoS level associated with a command.
- the delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue.
- the delay may be further based on a maximum or minimum bandwidth descriptor, maximum or minimum QoS assurances, and a mix of QoS and bandwidth maximums and minimums.
- the controller or command processor triggers the writing of the completion entry corresponding to the executed command to the completion queue, and the completion entry is written to the completion queue.
- the writing may be triggered by the timer or countdown expiring or the count up being met. In one embodiment, the writing is triggered when one or more higher ranked priority commands are written to the completion queue.
- the controller updates or moves the internal CQ head pointer to point to one of the newly written completion entries in the completion queue.
- the controller may move the CQ head pointer to any of the recently written completion entries. For example, if the controller processed three commands and wrote the updated completion entries to the completion queue, the controller may select any of the three newly written completion entries to move the CQ head pointer to notify the host that the specific command has been processed. Updating the CQ head pointer to point to a newly written completion entry reveals the one or more updated completion entries to the host.
- the controller may delay moving the CQ head pointer for a predetermined amount of time based on the BW QoS level associated with the command.
- the length of the delay is directly proportional to the priority rank or tier of the command. For example, the lower the priority rank or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority rank or bandwidth QoS level associated with the command, the shorter the delay may be.
- the highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers.
- FIG. 5 is a flowchart illustrating a method 500 of limiting bandwidth by delaying sending an interrupt signal to a host device, according to one embodiment.
- Method 500 may be used in conjunction with method 300 and/or method 400 .
- operations 350 and 352 of method 300 are operations 350 and 352 of method 300 .
- method 500 may start with operations 350 and 352 of method 300 .
- method 500 may be used with the storage system 100 having a host device 104 and a storage device 106 comprising a controller 108 .
- Method 500 may further be used with the storage system 200 having a host device 204 and a storage device 206 comprising a command processor 220 .
- a controller or command processor of the storage device fetches one or more commands from a submission queue of a host and executes the one or more commands at full speed.
- Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command.
- the commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host.
- the controller or command processor writes a completion entry corresponding to each of the one or more executed commands to a completion queue of the host and updates the CQ head pointer to point to one of the newly written completion entries.
- the completion entries corresponding to each executed command may be written to the completion queue in any order, regardless of the bandwidth QoS level associated with each command. Writing the completion entries to the completion queue of the host and updating the CQ head pointer does not notify the host that the commands have been executed and are ready to be read or processed by the host.
- method 500 may be used in conjunction with operations 404 - 408 of method 400 , and may delay writing the completion entries to the completion queue and/or delay updating the CQ head pointer.
- the controller or command processor delays sending an interrupt signal to the host for a predetermined amount of time.
- the predetermined amount of time is based on the bandwidth QoS level associated with each of the commands.
- the length of the delay is directly proportional to the priority rank or tier associated with the command. For example, the lower the priority or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority or bandwidth QoS level associated with the command, the shorter the delay may be.
- the highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers.
- the delay may be caused by a countdown expiring or a count up being met.
- the storage device may comprise a timer, which may also set the delay according to the bandwidth QoS level associated with a command.
- the delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue.
- the delay may be further based on a maximum or minimum bandwidth descriptor, maximum or minimum QoS assurances, and a mix of QoS and bandwidth maximums and minimums.
- the controller or command processor triggers the sending of the interrupt signal to the host.
- the interrupt signal notifies or indicates to the host that the completion queue is ready to be read or processed.
- the interrupt signal indicates to the host that the command has been executed and data associated with the command is available in memory.
- the sending of the interrupt signal to the host may be triggered in at least two ways. A first trigger is described in operation 510 and a second trigger is described in operation 512 .
- the controller or command processor automatically sends the interrupt signal to the host upon the predetermined time limit being met.
- the timer or countdown expiring or the count up being met may trigger the storage device to automatically send the interrupt signal.
- the controller or command processor sends the interrupt signal to the host after writing a completion entry corresponding to a newly executed command to the completion queue.
- the newly executed command is associated with a higher priority bandwidth QoS level than the previously executed commands. For example, if one or more completion entries corresponding to commands associated with a lower priority tier are written to the completion queue, a completion entry corresponding to a higher priority command written to the completion queue would trigger the sending of the interrupt signal. Thus, the writing of a completion entry associated with a higher priority command would trigger the sending of the interrupt signal and flush all previously written completion entries in the completion queue.
- a retailer may select the five bandwidth QoS levels and determine that level 5 is the highest priority while level 1 is the lowest priority. The retailer may further select that a completion entry associated with a level 4 command or above being written to the completion queue will flush all previously written completion entries associated with a level 3 command or below. Thus, a completion entry associated with a level 3 command or below would not trigger the sending of the interrupt signal. However, a completion entry associated with a level 4 command or above would trigger the sending of the interrupt signal and flush the completion queue.
- the host may then process the completion queue after receiving the interrupt signal. For example, method 400 may then precede to operations 362 and 364 of method 300 .
- FIG. 6 is a flowchart illustrating a method 600 of limiting bandwidth by removing a completion entry from a completion queue to reorder the completion entries, according to one embodiment.
- Method 600 may be used in conjunction with method 300 , method 400 , and/or method 500 .
- operations 350 and 352 of method 300 are operations 350 and 352 of method 300 .
- method 600 may start with operations 350 and 352 of method 300 .
- method 600 may be used with the storage system 100 having a host device 104 and a storage device 106 comprising a controller 108 .
- Method 600 may further be used with the storage system 200 having a host device 204 and a storage device 206 comprising a command processor 220 .
- a controller or command processor of the storage device fetches a first command from a submission queue of a host and executes the first command at full speed.
- Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command.
- the commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host.
- the controller or command processor writes a completion entry corresponding to the first command to a completion queue of the host.
- the writing of completion entry corresponding to the first command to the completion queue may be delayed, as discussed above in method 400 .
- the controller or command processor fetches a second command from the submission queue of the host and executes the second command at full speed.
- the controller or command processor determines that the second command has a higher priority than the first command.
- the priority of the first and second commands is determined from the associated bandwidth QoS level of the commands.
- the bandwidth QoS level of the commands may be retrieved by the storage device from the submission queue with the commands.
- the bandwidth QoS level may be determined based on the location of each command in a submission queue.
- the host device includes the bandwidth QoS level of a command in the header of the command. The storage device may then read the header of the command to determine the associated bandwidth QoS level.
- the controller or command processor removes the completion entry corresponding to the first command from the completion queue.
- the completion entry corresponding to the first command may be erased from the completion queue, or the completion entry corresponding to the first command may be retrieved from the completion queue and brought back over to the storage device via an interface.
- the controller or command processor writes a completion entry corresponding to the second command to the completion queue of the host.
- the controller or command processor re-writes the completion entry corresponding to the first command to the completion queue.
- the controller updates or moves the internal completion queue head pointer to point to one of the newly written completion entries in the completion queue.
- the controller may move the CQ head pointer to any of the recently written completion entries. For example, if the controller processed three commands and wrote the updated completion entries to the completion queue, the controller may select any of the three newly written completion entries to move the CQ head pointer to notify the host that the specific command and all command completion entries occurring earlier in the completion queue have been processed.
- the controller or command processor sends an interrupt signal to the host to notify or indicate to the host that the completion queue is ready to be read or processed.
- the interrupt signal indicates to the host that the command has been executed and data associated with the command is available in memory.
- the interrupt signal may be sent immediately following the writing of the completion entry corresponding to the second command to the completion queue and moving the CQ head pointer to point to the completion entry corresponding to the second command, before the re-writing of the completion entry corresponding to the first command.
- operation 618 may occur prior to operation 614 .
- the host may then process the completion queue. For example, method 600 may then precede to operations 362 and 364 of method 300 .
- FIGS. 7A-7C are flowcharts illustrating methods 700 , 710 , and 730 , respectively, of limiting bandwidth by reading a header of a command to determine the associated bandwidth QoS level before executing the command, according to various embodiments.
- Methods 700 , 710 , and 730 may be used in conjunction with method 300 , method 400 , method 500 , and/or method 600 .
- operations 350 and 352 of method 300 are operations 350 and 352 of method 300 .
- each of methods 700 , 710 , and 730 may start with operations 350 and 352 of method 300 .
- methods 700 , 710 , and 730 may be used with the storage system 100 having a host device 104 and a storage device 106 comprising a controller 108 . Methods 700 , 710 , and 730 may further be used with the storage system 200 having a host device 204 and a storage device 206 comprising a command processor 220 .
- FIG. 7A illustrates a method 700 of the storage device executing one or more commands in order of priority, according to one embodiment.
- a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed.
- the commands may be read commands or write commands.
- the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands.
- the associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands.
- the header of each command may comprises the bandwidth QoS level associated with the command, as well as other information.
- the host may write a header for each command when writing the commands to the submission queue.
- the header of each command is fetched as well. As such, the priority tier and bandwidth QoS level associated with each command can be determined prior to executing the commands.
- the controller or command processor executes one command at a time at full speed. Immediately after executing a command, the controller or command processor writes a completion entry corresponding to the executed command in the completion queue, updates the CQ head pointer to point to the completion entry corresponding to the executed command in the completion queue, and sends an interrupt signal to the host.
- the commands are executed and written to the completion queue as a completion entry one at a time, the CQ head pointer is updated, and an interrupt signal is sent.
- the controller or command processor repeats operation 706 one or more times until each of the one or more commands have been processed in order of priority from high to low. Each time operation 706 is repeated, a command with the same or decremented priority tier from the previously processed command is processed.
- the host may then process the completion queue. For example, method 700 may then precede to operations 362 and 364 of method 300 .
- FIG. 7B illustrates a method 710 of the storage device sending completion entries corresponding to one or more executed commands to a completion queue of the host in order of priority, according to another embodiment.
- Method 710 may be used in conjunction with method 700 .
- a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed.
- the commands may be read commands or write commands.
- the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands.
- the associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands.
- the controller or command processor executes each of the one or more commands at full speed in no particular order.
- the commands may be executed in any order, such as the order in which the commands were fetched from the submission queue.
- the controller or command processor writes a completion entry for each of the one or more executed commands to a completion queue in order of priority from high to low.
- the controller or command processor uses the bandwidth QoS level determined in operation 714 for each command to select the order in which to write the completion entries corresponding to each command to the completion queue.
- the executed commands associated with the highest priority bandwidth QoS level are written to the completion queue first, followed by the executed commands associated with lower priority bandwidth QoS levels.
- the controller or command processor updates the CQ head pointer one or more times with a corresponding interrupt signal to the host for each CQ head pointer update to notify or indicate to the host that the completion queue is ready to be read or processed. Updating the CQ head pointer with a corresponding interrupt signal indicates that the command has been executed and data associated with the command is available in memory.
- the CQ head pointer andinterrupt signal may be updated immediately following the writing of each completion entry to the completion queue, or the CQ head pointer and interrupt signal may be updated after all completion entries of the executed fetched commands are written to the completion queue.
- the CQ head pointer and interrupt signal may be updated after one or more completion entries corresponding to high priority commands are written to the completion queue, such as described above in operation 512 of method 500 .
- the host may then process the completion queue. For example, method 710 may then precede to operations 362 and 364 of method 300 .
- FIG. 7C illustrates a method 730 of the storage device sending completion entries corresponding to each executed command to a corresponding priority ranked completion queue of the host, according to yet another embodiment.
- Method 730 may be used in conjunction with method 700 and/or method 710 .
- a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed.
- the commands may be read commands or write commands.
- the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands.
- the associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands.
- the controller or command processor executes each of the one or more commands at full speed in no particular order.
- the commands may be executed in any order, such as the order in which the commands were fetched from the submission queue.
- the controller or command processor writes a completion entry for each of the one or more executed commands to one of a plurality of completion queues.
- Each completion queue of the plurality of completion queues may be associated with the same bandwidth QoS levels as the one or more commands. For example, if the storage device is set up with five bandwidth QoS levels corresponding to five pricing tiers, five corresponding completion queues may be utilized.
- the lowest priority commands e.g., level 1 commands
- the highest priority commands e.g., level 5 commands
- Operation 728 may incorporate operation 718 of method 710 to write the completion entries to the respective completion queue in order of priority from high to low. For example, the highest priority commands may be sent to their respective completion queue before the lower priority commands are written to their respective completion queue.
- the controller or command processor updates the CQ head pointer one or more times with a corresponding interrupt signal to the host for each CQ head pointer update in order of priority from high to low.
- a CQ head pointer and interrupt signal may be sent to the host as soon as a completion entry is full, or after each individual completion entry is written to a completion queue. For example, in one embodiment, if the completion entries corresponding to the highest priority commands are first written to the corresponding highest priority completion queue, a CQ head pointer and interrupt signal may be sent as soon all completion entries corresponding to the highest priority commands are written.
- an interrupt signal may be sent to the host immediately following the writing of a completion entry corresponding to a completion queue in order of priority from high to low. For example, starting with the highest priority completion queue and highest priority command, multiple interrupt signals may be sent back-to-back as each individual highest priority command entry is written to the highest priority completion queue.
- the CQ head pointer is updated only once after all completion entries are written to the respective completion queues. The host may then process the completion queues. For example, method 730 may then precede to operations 362 and 364 of method 300 .
- the storage device may receive the maximum amount of information, which helps provide for more reliable and accurate bandwidth QoS levels to be delivered to SLA customers of all grades or tiers. Additionally, conflicts of the resources of a storage device can be reduced, and data can be transferred without acknowledging to the host the movement of the data. Various bandwidth QoS levels may be utilized without slowing down the data flow rate or consuming excess bandwidth, resulting in more precise and accurate quantities of bandwidth offered to customers.
- a retailer may customize the bandwidth QoS levels and parameters, either on-the-fly or predetermined.
- the retailer can precisely tailor the configuration and settings as desired such that the configurations will be most beneficial to the individual retailer needs. As such, bandwidth can be effectively and reliably limited as per SLAs while freeing storage device resources and reducing contention.
- a method of operating a storage device comprises executing, by a controller of the storage device, a command associated with a bandwidth quality-of-service level.
- the command is executed at full speed.
- the method further comprises delaying writing a completion entry corresponding to the executed command for a predetermined amount of time.
- the predetermined amount of time is based on the associated bandwidth quality-of-service level.
- the method comprises triggering the completion entry corresponding to the executed command to be written to a completion queue. The writing of the completion entry to the completion queue is triggered after the predetermined amount of time is met.
- the method may further comprise receiving a doorbell signaling the command is present in a submission queue prior to executing the command.
- the method may further comprise fetching the command from the submission queue prior to executing the command at full speed.
- the associated bandwidth quality-of-service level of the command may determine the priority of the command.
- the predetermined amount of time may be longer for lower priority bandwidth quality-of-service levels than higher priority bandwidth quality-of-service levels.
- the predetermined amount of time may be based on a countdown, a count up, or timer.
- the method may further comprise delaying updating a completion queue head pointer to point to the completion entry for a predetermined amount of time.
- the predetermined amount of time may be based on the associated bandwidth quality-of-service level.
- a storage device comprises one or more memory devices and a controller coupled to the one or more memory devices.
- the controller is configured to fetch a command associated with a bandwidth quality-of-service level from a submission queue at full speed, execute the command, write a completion entry corresponding to the executed command to a completion queue, and delay sending an interrupt signal indicating the completion queue is ready to be read. The delay is based on the bandwidth quality-of-service level associated with the command.
- the associated bandwidth quality-of-service level of the command may determine the priority of the command.
- the controller may comprise a settings page, the settings page determining one or more bandwidth quality-of-service levels.
- the one or more bandwidth quality-of-service levels may be based on one or more of a time of day, a customer number, a quantity of commands previously retrieved, and available bandwidth.
- the delay may be longer for lower priority bandwidth quality-of-service levels than higher priority bandwidth quality-of-service levels.
- the delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue.
- the storage device may further comprise a bandwidth limiter coupled to the controller.
- a storage system comprises a host device and a storage device coupled to the host device.
- the storage device comprises one or more memory devices and a controller coupled to the one or more memory devices.
- the controller is configured to fetch a plurality of commands from a submission queue at full speed, read headers of each of the plurality of commands to determine an associated bandwidth quality-of-service level of each of the plurality of commands, and execute the plurality of commands in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of commands.
- the controller may be further configured to send completion entries corresponding to each of the plurality of commands to a plurality of completion queues after each of the plurality of commands are executed.
- Each completion queue of the plurality of completion queues may be associated with a different bandwidth quality-of-service level.
- the associated bandwidth quality-of-service level of each of the plurality of commands may correspond to the different bandwidth quality-of-service levels associated with the plurality of completion queues.
- the controller may be further configured to send one or more interrupt signals to the host device to indicate that at least one of the plurality of completion queues is ready to be read.
- the controller may send the one or more interrupt signals to the host device in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of completion queues.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Hardware Design (AREA)
Abstract
Description
- Embodiments of the present disclosure generally relate to storage devices, such as sold state drives (SSDs).
- Service Level Agreements (SLAs) are often held by retailers of SSDs, or persons selling storage solutions, who have multi-tenant systems. Each multi-tenant system may cover many subscribers and customers, virtual machines, or applications, all of which desire a share of the available bandwidth of the system. As available bandwidth is a limited resource, the SLAs generally assure a quantity of available drive bandwidth and quality of service (QoS) for different price tiers. SLAs also aim to provide customers with an assured and accurate QoS and/or bandwidth throughput guarantees. SLAs may limit BW, QoS, or in a combination of both available to the tenants, and may set minimums, maximums, and relational changes in both BW and QoS. The assurances in an SLA may be to provide a minimum or a maximum quantity of bandwidth or QoS. For example, a higher paying customer may be assured a greater quantity of bandwidth, in which case the customer's SLA would like assure a minimum quantity of bandwidth and a maximum degradation of QoS while other tenant's traffic is occurring.
- Methods of limiting available bandwidth include slowing down the data flow rate or counting bytes or number of commands as the commands are processed in an SSD. However, these methods may consume large amounts of bandwidth in the process, and may be considered invasive or heavy-handed. As such, these methods can be wasteful and inefficient.
- Thus, what is needed is a reliable and accurate method of limiting bandwidth in SSDs without limiting data speeds and consuming large quantities of SSD resources.
- The present disclosure generally relates to limiting bandwidth in storage devices. One or more bandwidth quality of services levels may be selected and associated with commands according to service level agreements, which may prioritize some commands over others. A storage device fetches and executes one or more the commands. Each of the commands is associated with a bandwidth quality of service level. After executing the commands and transferring the data to a host device, the storage device may delay writing a completion entry corresponding to the executed commands to a completion queue based on the associated bandwidth quality of service level of the commands. The device may then delay revealing the completion entry by delaying updating a completion queue head pointer. The device may further delay sending an interrupt signal to the host device based on the associated bandwidth quality of service level of the commands.
- In one embodiment, a method of operating a storage device comprises executing, by a controller of the storage device, a command associated with a bandwidth quality-of-service level. The command is executed at full speed. The method further comprises delaying writing a completion entry corresponding to the executed command for a predetermined amount of time. The predetermined amount of time is based on the associated bandwidth quality-of-service level. The method comprises triggering the completion entry corresponding to the executed command to be written to a completion queue. The writing of the completion entry to the completion queue is triggered after the predetermined amount of time is met.
- In another embodiment, a storage device comprises one or more memory devices and a controller coupled to the one or more memory devices. The controller is configured to fetch a command associated with a bandwidth and a quality-of-service level from a submission queue at full speed, execute the command, write a completion entry corresponding to the executed command to a completion queue, and delay sending an interrupt signal indicating the completion queue is ready to be read. The delay is based on the bandwidth and the quality-of-service level associated with the command.
- In yet another embodiment, a storage system comprises a host device and a storage device coupled to the host device. The storage device comprises one or more memory devices and a controller coupled to the one or more memory devices. The controller is configured to fetch a plurality of commands from a submission queue at full speed, read headers of each of the plurality of commands to determine an associated bandwidth quality-of-service level of each of the plurality of commands, and execute the plurality of commands in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of commands.
- So that the manner in which the above recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure may admit to other equally effective embodiments.
-
FIG. 1 is a schematic block diagram illustrating a storage system, according to one embodiment. -
FIG. 2 illustrates a storage system comprising a storage device coupled to a host device, according to another embodiment. -
FIG. 3 is a block diagram illustrating a method of limiting bandwidth between a host and a storage device, according to one embodiment. -
FIG. 4 is a flowchart illustrating a method of limiting bandwidth by delaying writing a completion entry to a completion queue of a host, according to one embodiment. -
FIG. 5 is a flowchart illustrating a method of limiting bandwidth by delaying sending an interrupt signal to a host device, according to another embodiment. -
FIG. 6 is a flowchart illustrating a method of limiting bandwidth by removing a completion entry from a completion queue to reorder the completion entries, according to one embodiment. -
FIGS. 7A-7C are flowcharts illustrating methods of limiting bandwidth by reading a header of a command to determine the associated bandwidth QoS level before executing the command, according to various embodiments. - To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially utilized on other embodiments without specific recitation.
- In the following, reference is made to embodiments of the disclosure. However, it should be understood that the disclosure is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the disclosure. Furthermore, although embodiments of the disclosure may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the disclosure. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the disclosure” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
- The present disclosure generally relates to limiting bandwidth in storage devices. One or more bandwidth quality of services levels may be selected and associated with commands according to service level agreements, which may prioritize some commands over others. A storage device fetches and executes one or more the commands. Each of the commands is associated with a bandwidth quality of service level. After executing the commands and transferring the data to a host device, the storage device may delay writing a completion entry corresponding to the executed commands to a completion queue based on the associated bandwidth quality of service level of the commands. The device may then delay revealing the completion entry by delaying updating a completion queue head pointer. The device may further delay sending an interrupt signal to the host device based on the associated bandwidth quality of service level of the commands.
FIG. 1 is a schematic block diagram illustrating astorage system 100 in whichstorage device 106 may function as a storage device for ahost device 104, in accordance with one or more techniques of this disclosure. For instance, thehost device 104 may utilize non-volatile memory devices included instorage device 106 to store and retrieve data. Thehost device 104 comprises ahost DRAM 138. In some examples, thestorage system 100 may include a plurality of storage devices, such as thestorage device 106, which may operate as a storage array. For instance, thestorage system 100 may include a plurality ofstorages devices 106 configured as a redundant array of inexpensive/independent disks (RAID) that collectively function as a mass storage device for thehost device 104. - The
storage system 100 includes ahost device 104 which may store and/or retrieve data to and/or from one or more storage devices, such as thestorage device 106. As illustrated inFIG. 1 , thehost device 104 may communicate with thestorage device 106 via aninterface 114. Thehost device 104 may comprise any of a wide range of devices, including computer servers, network attached storage (NAS) units, desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called “smart” phones, so-called “smart” pads, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming device, and the like. - As illustrated in
FIG. 1 , thestorage device 106 includes acontroller 108, non-volatile memory 110 (NVM 110), apower supply 111,volatile memory 112, abandwidth limiter 120, and aninterface 114. In some examples, thestorage device 106 may include additional components not shown inFIG. 1 for sake of clarity. For example, thestorage device 106 may include a printed board (PB) to which components of thestorage device 106 are mechanically attached and which includes electrically conductive traces that electrically interconnect components of thestorage device 106, or the like. In some examples, the physical dimensions and connector configurations of thestorage device 106 may conform to one or more standard form factors. Some example standard form factors include, but are not limited to, 3.5″ data storage device (e.g., an HDD or SSD), 2.5″ data storage device, 1.8″ data storage device, peripheral component interconnect (PCI), PCI-extended (PCI-X), PCI Express (PCIe) (e.g., PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCl, etc.). In some examples, thestorage device 106 may be directly coupled (e.g., directly soldered) to a motherboard of thehost device 104. - The
interface 114 of thestorage device 106 may include one or both of a data bus for exchanging data with thehost device 104 and a control bus for exchanging commands with thehost device 104. Theinterface 114 may operate in accordance with any suitable protocol. For example, theinterface 114 may operate in accordance with one or more of the following protocols: advanced technology attachment (ATA) (e.g., serial-ATA (SATA) and parallel-ATA (PATA)), Fibre Channel Protocol (FCP), small computer system interface (SCSI), serially attached SCSI (SAS), PCI, and PCIe, non-volatile memory express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), or the like. The electrical connection of the interface 114 (e.g., the data bus, the control bus, or both) is electrically connected to thecontroller 108, providing electrical connection between thehost device 104 and thecontroller 108, allowing data to be exchanged between thehost device 104 and thecontroller 108. In some examples, the electrical connection of theinterface 114 may also permit thestorage device 106 to receive power from thehost device 104. For example, as illustrated inFIG. 1 , thepower supply 111 may receive power from thehost device 104 via theinterface 114. - The
storage device 106 includesNVM 110, which may include a plurality of memory devices.NVM 110 may be configured to store and/or retrieve data. For instance, a memory device ofNVM 110 may receive data and a message from thecontroller 108 that instructs the memory device to store the data. Similarly, the memory device ofNVM 110 may receive a message from thecontroller 108 that instructs the memory device to retrieve data. In some examples, each of the memory devices may be referred to as a die. In some examples, a single physical chip may include a plurality of dies (i.e., a plurality of memory devices). In some examples, each memory devices may be configured to store relatively large amounts of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.). - In some examples, each memory device of
NVM 110 may include any type of non-volatile memory devices, such as flash memory devices, phase-change memory (PCM) devices, resistive random-access memory (ReRAM) devices, magnetoresistive random-access memory (MRAM) devices, ferroelectric random-access memory (F-RAM), holographic memory devices, and any other type of non-volatile memory devices. -
NVM 110 may comprise a plurality of flash memory devices. Flash memory devices may include NAND or NOR based flash memory devices, and may store data based on a charge contained in a floating gate of a transistor for each flash memory cell. In NAND flash memory devices, the flash memory device may be divided into a plurality of blocks which may divided into a plurality of pages. Each block of the plurality of blocks within a particular memory device may include a plurality of NAND cells. Rows of NAND cells may be electrically connected using a word line to define a page of a plurality of pages. Respective cells in each of the plurality of pages may be electrically connected to respective bit lines. Furthermore, NAND flash memory devices may be 2D or 3D devices, and may be single level cell (SLC), multi-level cell (MLC), triple level cell (TLC), or quad level cell (QLC). Thecontroller 108 may write data to and read data from NAND flash memory devices at the page level and erase data from NAND flash memory devices at the block level. - The
storage device 106 includes apower supply 111, which may provide power to one or more components of thestorage device 106. When operating in a standard mode, thepower supply 111 may provide power to the one or more components using power provided by an external device, such as thehost device 104. For instance, thepower supply 111 may provide power to the one or more components using power received from thehost device 104 via theinterface 114. In some examples, thepower supply 111 may include one or more power storage components configured to provide power to the one or more components when operating in a shutdown mode, such as where power ceases to be received from the external device. In this way, thepower supply 111 may function as an onboard backup power source. Some examples of the one or more power storage components include, but are not limited to, capacitors, super capacitors, batteries, and the like. In some examples, the amount of power that may be stored by the one or more power storage components may be a function of the cost and/or the size (e.g., area/volume) of the one or more power storage components. In other words, as the amount of power stored by the one or more power storage components increases, the cost and/or the size of the one or more power storage components also increases. -
Storage device 106 also includesvolatile memory 112, which may be used bycontroller 108 to store information.Volatile memory 112 may be comprised of one or more volatile memory devices. In some examples, thecontroller 108 may usevolatile memory 112 as a cache. For instance, thecontroller 108 may store cached information involatile memory 112 until cached information is written tonon-volatile memory 110. As illustrated inFIG. 1 ,volatile memory 112 may consume power received from thepower supply 111. Examples ofvolatile memory 112 include, but are not limited to, random-access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4, and the like)). - The
storage device 106 includes acontroller 108, which may manage one or more operations of thestorage device 106. For instance, thecontroller 108 may manage the reading of data from and/or the writing of data toNVM 110. In some embodiments, when thestorage device 106 receives a write command from thehost device 104, thecontroller 108 may initiate a data storage command to store data toNVM 110 and monitor the progress of the data storage command. Thecontroller 108 may determine at least one operational characteristic of thestorage system 100 and store the at least one operational characteristic toNVM 110. - The
storage device 106 includes abandwidth limiter 120 coupled to thecontroller 108. Thebandwidth limiter 120 monitors and controls access to the available bandwidth of thestorage system 100. Thebandwidth limiter 120 prioritizes each request for bandwidth based on a respective QoS level, and controls access to the available bandwidth. QoS is a statistical aggregate description of command latencies from the drive. Either a maximum command latency, average command latency impact, a statistical description of all the commands an assurance of 99% of the commands executing by some limit, or a complete description of all of the command latencies versus the probability of that latency (shown in a plot frequently). In some embodiments, thebandwidth limiter 120 may be a hardware circuit located within thestorage device 106. In other embodiments, thebandwidth limiter 120 is located in firmware in thestorage device 106. In yet other embodiments, thebandwidth limiter 120 is executed in software located within thestorage device 106. Thebandwidth limiter 120 may be hardware, firmware, or software located within thecontroller 108. Thebandwidth limiter 120 may also be located remotely from thestorage device 106 in a server or other processor. Other embodiments are possible and are not limited by the examples disclosed herein. - The
storage system 100 may be a multi-tenant system. A tenant may include apps, virtual machines, dockers, containers, OS instances, databases, client servers, processors, virtual functions, namespaces, submission queue and completion queue pairs, or the like. In such an embodiment, multiple users, or tenants, may be sharing thestorage device 106. For example, thestorage device 106 may be a part of a cloud-based storing network. In such an embodiment, thebandwidth limiter 120 limits the bandwidth to a particular tenant or user by prioritizing the execution of commands received from thehost device 104 based on the bandwidth QoS level associated with each command. Thebandwidth limiter 120 may delay a completion entry associated with an executed command from being written to a completion queue. Thebandwidth limiter 120 may further delay sending interruption signals to thehost device 104 notifying thehost device 104 that the command has been completed. The actual command is executed by thecontroller 108 at full bandwidth speed and is not limited by thebandwidth limiter 120. The data throughput between thehost device 104 and thestorage device 106 continues to operate at full bandwidth in order to maintain the highest data throughput efficiency. Thehost DRAM 138 may be utilized to fill out and store the completion entry. However, as thehost device 104 is not aware that the command has been successfully executed by thestorage device 106 until thestorage device 106 writes the completion entry to the completion queue and sends the interrupt signal to thehost device 104, the bandwidth to the user is effectively limited. -
FIG. 2 illustrates astorage system 200 comprising astorage device 206 coupled to ahost device 204, according to another embodiment.Storage system 200 may be thestorage system 100, thehost device 104, and thestorage device 106 ofFIG. 1 . - The
storage device 206 may send and receive commands and data from thehost device 204, and comprises acommand processor 220. Thecommand processor 220 may schedule memory device access, such as NAND access, and may perform a read to a memory device prior to a previously received command requiring a write to the same memory device. Thecommand processor 220 is coupled to abandwidth limiter 230 and one ormore memory devices 228. The one ormore memory devices 228 may be NAND non-volatile memory devices. Thebandwidth limiter 230 is coupled to a command fetch 222. The command fetch 222 is coupled to asubmission queue arbitration 224. Thesubmission queue arbitration 224 is coupled to one or more submission queue head andtail pointers 226. - The
host device 204 is comprised of one or morehost software applications 232 coupled to one or more processing units orCPU applications 234. In one embodiment, thesoftware application 232 has limited solid-state drive queue depth in order to derive a latency QoS for each user of thesystem 200. Thehost device 204 further comprises an operating system (OS) orsoftware application 240 without an associated QoS. TheCPU 234 is coupled to aninterconnect 236 and to ahost DRAM 238. Thehost DRAM 238 may store submission queue data. Theinterconnect 236 is coupled to thedevice 206. Theinterconnect 236 may be in communication with both the submission queue head andtail pointers 226 and the command fetch 222. - The
CPU 234 generates one ormore commands 216 to send to thedevice 206, and may send and receive commands from thedevice 206 via the command fetchsignal 244. TheCPU 234 may further send an interrupt ordoorbell 218 to thedevice 206 to notify thedevice 206 of the one or more commands 216. TheCPU 234 may differentiate between commands based on a bandwidth QoS level associated with each command. The associated bandwidth QoS level determines the priority of the commands. For example, in a multi-tenant system with pricing tiers, a higher paying customer will have a higher priority. As such, any commands generated by the higher paying customer through theCPU 234 will have an associated bandwidth QoS level directly corresponding to the higher priority level. - The
CPU 234 may limit data-queue depth submitted to thedevice 206. Queue depth (QD) is the maximum number of commands queued to thedevice 206, and data-QD is the amount of data associated with the commands queued with a QD. In one embodiment, the data-QD 242 of thestorage device 206 is equal to the bandwidth of thestorage device 206. Data-QD 242 is limited to the highest level under which thedevice 206 can still maintain a desired latency QoS. Thehost device 204 may select a target latency QoS for thestorage system 200, and may also limit an associated data-QD 242 of thestorage system 200. For selecting the latency QoS target, thedevice 206 may provide information to thehost driver 234. Such information may include the latency QoS capabilities of thedevice 206, an approximate maximum data-QD limit associated with a particular latency QoS target, and/or multiple pairs of data-QD limits or QoS target values. Additionally, thehost device 204 may keep a data-QD of thesystem 200 under a current data-QD limit. -
FIG. 3 is a block diagram illustrating amethod 300 of limiting bandwidth between a host and a storage device when executing a read command, according to one embodiment.Method 300 may be used with thestorage system 100 having ahost device 104 and astorage device 106 comprising acontroller 108.Method 300 may further be used with thestorage system 200 having ahost device 204 and astorage device 206 comprising acommand processor 220. -
Method 300 begins atoperation 350, where the host device writes a command into a submission queue as an entry. The host device may write one or more commands into the submission queue atoperation 350. The commands may be read commands or write commands. The host device may write the command with an associated bandwidth QoS level. For example, the host device may write the associated bandwidth QoS level of a command in a header of the command. The bandwidth QoS level associated with each command directly corresponds to a priority rank and prioritizes some commands over others. For example, a higher paying customer or user will have a higher priority than a lower paying customer, and thus, will have a higher or greater bandwidth QoS level. There may be any number of various priority ranks or levels. For example, there may be five tiers of bandwidth QoS levels, with level one being the lowest priority and level five being the highest priority. - The host device may comprise one or more submission queues. Commands may be written into the one or more submission queues based on priority. For example, the host may have a first submission queue for high ranking commands, a second submission queue for mid-level ranking commands, and a third submission queue for low ranking commands.
- In
operation 352, the host device writes one or more updated submission queue tail pointers and rings a doorbell or sends an interrupt signal to notify or signal the storage device of the new command that is ready to be executed. The doorbell signal may be the doorbell 218 ofFIG. 2 . The host may write an updated submission queue tail pointer and send a doorbell or interrupt signal for each of the submission queues if there are more than one submission queues. Inoperation 354, in response to receiving the doorbell or interrupt signal, a controller of the storage device fetches the command from the one or more submission queue at full speed. Full speed may be the normal operating speed or fastest bandwidth speed. - Fetching the commands from the submission queue at full speed allows a maximum amount of information to be received by the storage device. Such information may include the number of commands for best queuing and execution, prioritized commands, different namespaces, and different submission queue configurations, among others. Providing the maximum amount of information to the storage device affords for high grade SLA customers to receive the high grade of service. Additionally, a lower grade SLA customer can still be responded to with minimum latency, which can reduce conflicts of storage device resources, including controller SRAM, memory die availability, and toggle mode bus availability, among others.
- Upon receiving the command, the controller of the storage device may determine the bandwidth QoS level associated with the command, and thus, may determine the priority rank of the command. The bandwidth QoS level may be retrieved by the storage device from the submission queue with the command. The bandwidth QoS level may be determined based on the location of each command in a submission queue. In at least one implementation, the host device includes the bandwidth QoS level of a command in the header of the command. The storage device may then read the header of the command to determine the associated bandwidth QoS level.
- In
operation 356, the controller of the storage device processes the command and writes or transfers data associated with the command to the host device memory at full speed. Inoperation 358, the controller of the storage device writes a completion entry corresponding to the executed command to a completion queue of the host device and moves or updates the CQ head pointer to point to the newly written completion entry. The storage device may delay writing the completion entry to the completion queue and/or delay updating the CQ head pointer. The delay is based on the bandwidth QoS level associated with the executed command. In at least one implementation, the lower the priority of the associated bandwidth QoS level, the longer the delay. Commands associated with the highest priority ranked bandwidth QoS level may have no delay. - Delaying the writing of a completion entry to a completion queue and/or delaying updating the head pointer permits command data to be transferred into the host DRAM or into non-volatile memory while holding the completion entry in the storage device. This provides for optimal availability of the controller SRAM without acknowledging to the host the movement of the command data. Delaying the writing of the completion entry to the completion queue and/or delaying updating the head pointer results in the host being unaware of the progress the storage device has made with the commands and data transfers.
- In one embodiment, the completion queue comprises a plurality of completion queues. Each completion queue of the plurality of completion queues may be associated with a different bandwidth QoS level. The bandwidth QoS level associated with the commands may match or be the same as the bandwidth QoS level associated with each completion queue of the plurality of completion queues. Continuing the above example, if there are five bandwidth QoS levels corresponding to five pricing tiers, there would be five corresponding completion queues. The storage device writes a completion entry into the completion queue corresponding to the bandwidth QoS level of the command. For instance, a high prioritized command would be written to a high prioritized completion queue. The plurality of completion queues may be tracked by one or more of global tracking, a predetermined list, or per completion queue.
- Operations 350-358 may be repeated one or more times to process a plurality of commands prior to
operation 360. Several completion entries may be written to the completion queue inoperation 358 without alerting the host device. To alert the host device of the completion entries in the completion queue, the completion queue (CQ) head pointer may be updated to point to the newest ending completion entry, or the last written entry, in the completion queue. Updating the CQ head pointer reveals the one or more completion entries in the completion queue to the host. - In
operation 360, the controller of the storage device generates and sends an interrupt signal or doorbell to the host device. The interrupt signal indicates that the command has been executed and data associated with the command is available in memory. The interrupt signal further notifies that the completion queue is ready to be read or processed. The storage device may delay sending the interrupt signal to the host device. The delay is based on the bandwidth QoS level associated with the executed command. In at least one implementation, the lower the priority of the associated bandwidth QoS level, the longer the delay. Commands associated with the highest priority ranked bandwidth QoS level may have no delay. - The storage device may delay updating the CQ head pointer and sending the interrupt signal to the host device until multiple completion entries are written to the completion queue. For example, if the storage device writes one or more completion entries corresponding to low ranked bandwidth QoS levels to the completion queue, the storage device may delay updating the CQ head pointer and sending the interrupt signal until a completion entry associated with a higher ranked bandwidth QoS level is written to the completion queue. By delaying updating the CQ head pointer and sending the interrupt signal until a completion entry associated with a higher ranked bandwidth QoS level is written to the completion queue, the interrupt signal may flush out all completion entries currently in the command queue, including all completion entries written to the completion queue prior to the entry associated with the higher ranked bandwidth QoS level.
- The delay in both
operations - In
operation 362, the host device processes the completion entry. Inoperation 364, the host device writes an updated CQ head pointer to the storage device and rings the doorbell or sends an interrupt signal to the storage device to release the completion entry. - In one embodiment, the bandwidth QoS levels and associated parameters are set by a retailer on a settings page of the storage device. When a retailer receives or reboots the storage device, the retailer may select the number of bandwidth QoS levels. The retailer may further select the length of delay associated with each bandwidth QoS level, or the storage device may automatically populate a delay based on the number of bandwidth QoS level utilized. As the retailer enters into SLAs with customers, a predetermined bandwidth QoS level may be assigned to each customer or user based on a pricing tier and stored as a setting in the storage device memory. When a command is received from the host device from a known customer or user, the bandwidth QoS level information is retrieved from the storage device memory and used to determine the priority of the command. The retailer may select other parameters to correspond to the various bandwidth QoS levels.
- In another embodiment, each command is associated with a bandwidth QoS level when written to the submission queue, and the commands do not have a predetermined bandwidth QoS level. In such an embodiment, each command would by dynamically assigned a bandwidth QoS level on-the-fly as the system operates. The retailer may further select other parameters to correspond to the various bandwidth QoS levels, such as the length of a delay. The bandwidth QoS level for a given customer or user's command may be established based on the time of day, a customer number, a quantity of commands previously retrieved or currently being fetched, available bandwidth, or other discriminating parameter. Other embodiments are possible and are not limited to these examples.
-
FIG. 4 ,FIG. 5 ,FIG. 6 , andFIGS. 7A-7C are flowcharts illustrating various embodiments of limiting bandwidth in a storage device. The configurations of each embodiment detailed inFIGS. 4-7C may be determined as described above, such as a retailer setting a settings page or by choosing on-the-fly. -
FIG. 4 is a flowchart illustrating amethod 400 of limiting bandwidth by delaying writing a completion entry to a completion queue of a host, according to one embodiment.Method 400 may be used in conjunction withmethod 300. For example, not shown inmethod 400 areoperations method 300. However,method 400 may start withoperations method 300. Furthermore,method 400 may be used with thestorage system 100 having ahost device 104 and astorage device 106 comprising acontroller 108.Method 400 may further be used with thestorage system 200 having ahost device 204 and astorage device 206 comprising acommand processor 220. - In
operation 402, a controller or command processor of the storage device fetches a command from a submission queue of a host and executes the command at full speed. One or more commands may be fetched and executed at full speed inoperation 402. Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command. The commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host. - In
operation 404, the controller or command processor delays the writing of an updated completion entry and CQ head pointer corresponding to the executed command to a completion queue of the host for a predetermined amount of time. The predetermined amount of time is based on a bandwidth (BW) QoS level associated with the command. The length of the delay is directly proportional to the priority rank or tier of the command. For example, the lower the priority rank or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority rank or bandwidth QoS level associated with the command, the shorter the delay may be. The highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers. - Delaying the writing of an updated completion entry and CQ head pointer to a completion queue permits command data to be transferred into the host DRAM or into non-volatile memory while holding the completion entry in the storage device. This provides for optimal availability of the controller SRAM without acknowledging to the host the movement of the command data. Delaying the writing of the updated completion entry and CQ head pointer to the completion queue results in the host being unaware of the progress the storage device has made with the commands and data transfers.
- The delay may be caused by a countdown expiring or a count up being met. The storage device may comprise a timer, which may also set the delay according to the bandwidth QoS level associated with a command. The delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue. The delay may be further based on a maximum or minimum bandwidth descriptor, maximum or minimum QoS assurances, and a mix of QoS and bandwidth maximums and minimums.
- In
operation 406, the controller or command processor triggers the writing of the completion entry corresponding to the executed command to the completion queue, and the completion entry is written to the completion queue. The writing may be triggered by the timer or countdown expiring or the count up being met. In one embodiment, the writing is triggered when one or more higher ranked priority commands are written to the completion queue. - In
operation 408, the controller updates or moves the internal CQ head pointer to point to one of the newly written completion entries in the completion queue. The controller may move the CQ head pointer to any of the recently written completion entries. For example, if the controller processed three commands and wrote the updated completion entries to the completion queue, the controller may select any of the three newly written completion entries to move the CQ head pointer to notify the host that the specific command has been processed. Updating the CQ head pointer to point to a newly written completion entry reveals the one or more updated completion entries to the host. - Similar to
operation 406, the controller may delay moving the CQ head pointer for a predetermined amount of time based on the BW QoS level associated with the command. The length of the delay is directly proportional to the priority rank or tier of the command. For example, the lower the priority rank or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority rank or bandwidth QoS level associated with the command, the shorter the delay may be. The highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers. - In
operation 410, the controller or command processor sends an interrupt signal to the host to notify or indicate to the host that the completion queue is ready to be read or processed. The interrupt signal indicates to the host that the command has been executed and data associated with the command is available in memory. The host may then process the completion queue. For example,method 400 may then precede tooperations method 300.FIG. 5 is a flowchart illustrating amethod 500 of limiting bandwidth by delaying sending an interrupt signal to a host device, according to one embodiment.Method 500 may be used in conjunction withmethod 300 and/ormethod 400. For example, not shown inmethod 500 areoperations method 300. However,method 500 may start withoperations method 300. Furthermore,method 500 may be used with thestorage system 100 having ahost device 104 and astorage device 106 comprising acontroller 108.Method 500 may further be used with thestorage system 200 having ahost device 204 and astorage device 206 comprising acommand processor 220. - In
operation 502, a controller or command processor of the storage device fetches one or more commands from a submission queue of a host and executes the one or more commands at full speed. Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command. The commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host. - In
operation 504, the controller or command processor writes a completion entry corresponding to each of the one or more executed commands to a completion queue of the host and updates the CQ head pointer to point to one of the newly written completion entries. The completion entries corresponding to each executed command may be written to the completion queue in any order, regardless of the bandwidth QoS level associated with each command. Writing the completion entries to the completion queue of the host and updating the CQ head pointer does not notify the host that the commands have been executed and are ready to be read or processed by the host. Furthermore,method 500 may be used in conjunction with operations 404-408 ofmethod 400, and may delay writing the completion entries to the completion queue and/or delay updating the CQ head pointer. - In
operation 506, the controller or command processor delays sending an interrupt signal to the host for a predetermined amount of time. The predetermined amount of time is based on the bandwidth QoS level associated with each of the commands. The length of the delay is directly proportional to the priority rank or tier associated with the command. For example, the lower the priority or bandwidth QoS level associated with the command, the longer the delay may be. The higher the priority or bandwidth QoS level associated with the command, the shorter the delay may be. The highest priority ranking commands may have no delay at all, such as in multi-tenant systems having numerous pricing tiers. - The delay may be caused by a countdown expiring or a count up being met. The storage device may comprise a timer, which may also set the delay according to the bandwidth QoS level associated with a command. The delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue. The delay may be further based on a maximum or minimum bandwidth descriptor, maximum or minimum QoS assurances, and a mix of QoS and bandwidth maximums and minimums.
- In
operation 508, the controller or command processor triggers the sending of the interrupt signal to the host. The interrupt signal notifies or indicates to the host that the completion queue is ready to be read or processed. The interrupt signal indicates to the host that the command has been executed and data associated with the command is available in memory. The sending of the interrupt signal to the host may be triggered in at least two ways. A first trigger is described inoperation 510 and a second trigger is described inoperation 512. - In
operation 510, the controller or command processor automatically sends the interrupt signal to the host upon the predetermined time limit being met. The timer or countdown expiring or the count up being met may trigger the storage device to automatically send the interrupt signal. - In
operation 512, the controller or command processor sends the interrupt signal to the host after writing a completion entry corresponding to a newly executed command to the completion queue. The newly executed command is associated with a higher priority bandwidth QoS level than the previously executed commands. For example, if one or more completion entries corresponding to commands associated with a lower priority tier are written to the completion queue, a completion entry corresponding to a higher priority command written to the completion queue would trigger the sending of the interrupt signal. Thus, the writing of a completion entry associated with a higher priority command would trigger the sending of the interrupt signal and flush all previously written completion entries in the completion queue. - For example, elaborating on the above example of implementing five bandwidth QoS levels corresponding to five pricing tiers, a retailer may select the five bandwidth QoS levels and determine that level 5 is the highest priority while level 1 is the lowest priority. The retailer may further select that a completion entry associated with a level 4 command or above being written to the completion queue will flush all previously written completion entries associated with a level 3 command or below. Thus, a completion entry associated with a level 3 command or below would not trigger the sending of the interrupt signal. However, a completion entry associated with a level 4 command or above would trigger the sending of the interrupt signal and flush the completion queue.
- The host may then process the completion queue after receiving the interrupt signal. For example,
method 400 may then precede tooperations method 300. -
FIG. 6 is a flowchart illustrating amethod 600 of limiting bandwidth by removing a completion entry from a completion queue to reorder the completion entries, according to one embodiment.Method 600 may be used in conjunction withmethod 300,method 400, and/ormethod 500. For example, not shown inmethod 600 areoperations method 300. However,method 600 may start withoperations method 300. Furthermore,method 600 may be used with thestorage system 100 having ahost device 104 and astorage device 106 comprising acontroller 108.Method 600 may further be used with thestorage system 200 having ahost device 204 and astorage device 206 comprising acommand processor 220. - In
operation 602, a controller or command processor of the storage device fetches a first command from a submission queue of a host and executes the first command at full speed. Full speed may be the normal operating speed or fastest bandwidth speed. There is no delay in fetching or executing the command. The commands may be read commands or write commands. Executing the command comprises writing or transferring the command data to the host. - In
operation 604, the controller or command processor writes a completion entry corresponding to the first command to a completion queue of the host. The writing of completion entry corresponding to the first command to the completion queue may be delayed, as discussed above inmethod 400. - In
operation 606, the controller or command processor fetches a second command from the submission queue of the host and executes the second command at full speed. Inoperation 608, the controller or command processor determines that the second command has a higher priority than the first command. The priority of the first and second commands is determined from the associated bandwidth QoS level of the commands. The bandwidth QoS level of the commands may be retrieved by the storage device from the submission queue with the commands. The bandwidth QoS level may be determined based on the location of each command in a submission queue. In at least one implementation, the host device includes the bandwidth QoS level of a command in the header of the command. The storage device may then read the header of the command to determine the associated bandwidth QoS level. - In
operation 610, the controller or command processor removes the completion entry corresponding to the first command from the completion queue. The completion entry corresponding to the first command may be erased from the completion queue, or the completion entry corresponding to the first command may be retrieved from the completion queue and brought back over to the storage device via an interface. - In
operation 612, the controller or command processor writes a completion entry corresponding to the second command to the completion queue of the host. Inoperation 614, the controller or command processor re-writes the completion entry corresponding to the first command to the completion queue. By removing the completion entry corresponding to the first command from the completion queue and re-writing the completion entry corresponding to the first command following the writing of the completion entry corresponding to the second command, the completion queue can be reorganized or reordered in order of priority. Thus, the completion entry corresponding to the second command, which has a higher priority rank, can be processed before the completion entry corresponding to the first command, which has a lower priority rank. - In
operation 616, the controller updates or moves the internal completion queue head pointer to point to one of the newly written completion entries in the completion queue. The controller may move the CQ head pointer to any of the recently written completion entries. For example, if the controller processed three commands and wrote the updated completion entries to the completion queue, the controller may select any of the three newly written completion entries to move the CQ head pointer to notify the host that the specific command and all command completion entries occurring earlier in the completion queue have been processed. - In
operation 618, the controller or command processor sends an interrupt signal to the host to notify or indicate to the host that the completion queue is ready to be read or processed. The interrupt signal indicates to the host that the command has been executed and data associated with the command is available in memory. The interrupt signal may be sent immediately following the writing of the completion entry corresponding to the second command to the completion queue and moving the CQ head pointer to point to the completion entry corresponding to the second command, before the re-writing of the completion entry corresponding to the first command. Thus,operation 618 may occur prior tooperation 614. The host may then process the completion queue. For example,method 600 may then precede tooperations method 300. -
FIGS. 7A-7C areflowcharts illustrating methods Methods method 300,method 400,method 500, and/ormethod 600. For example, not shown inmethods operations method 300. However, each ofmethods operations method 300. Furthermore,methods storage system 100 having ahost device 104 and astorage device 106 comprising acontroller 108.Methods storage system 200 having ahost device 204 and astorage device 206 comprising acommand processor 220. -
FIG. 7A illustrates amethod 700 of the storage device executing one or more commands in order of priority, according to one embodiment. Inoperation 702, a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed. The commands may be read commands or write commands. - In
operation 704, the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands. The associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands. The header of each command may comprises the bandwidth QoS level associated with the command, as well as other information. The host may write a header for each command when writing the commands to the submission queue. Thus, when the commands are fetched inoperation 702, the header of each command is fetched as well. As such, the priority tier and bandwidth QoS level associated with each command can be determined prior to executing the commands. - In
operation 706, in order of priority from high to low, the controller or command processor executes one command at a time at full speed. Immediately after executing a command, the controller or command processor writes a completion entry corresponding to the executed command in the completion queue, updates the CQ head pointer to point to the completion entry corresponding to the executed command in the completion queue, and sends an interrupt signal to the host. Thus, starting with the highest priority commands, the commands are executed and written to the completion queue as a completion entry one at a time, the CQ head pointer is updated, and an interrupt signal is sent. - In
operation 708, the controller or command processor repeatsoperation 706 one or more times until each of the one or more commands have been processed in order of priority from high to low. Eachtime operation 706 is repeated, a command with the same or decremented priority tier from the previously processed command is processed. The host may then process the completion queue. For example,method 700 may then precede tooperations method 300. -
FIG. 7B illustrates amethod 710 of the storage device sending completion entries corresponding to one or more executed commands to a completion queue of the host in order of priority, according to another embodiment.Method 710 may be used in conjunction withmethod 700. - In
operation 712, a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed. The commands may be read commands or write commands. Inoperation 714, the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands. The associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands. - In
operation 716, the controller or command processor executes each of the one or more commands at full speed in no particular order. The commands may be executed in any order, such as the order in which the commands were fetched from the submission queue. - In
operation 718, the controller or command processor writes a completion entry for each of the one or more executed commands to a completion queue in order of priority from high to low. After each command is executed, the controller or command processor uses the bandwidth QoS level determined inoperation 714 for each command to select the order in which to write the completion entries corresponding to each command to the completion queue. The executed commands associated with the highest priority bandwidth QoS level are written to the completion queue first, followed by the executed commands associated with lower priority bandwidth QoS levels. - In
operation 720, the controller or command processor updates the CQ head pointer one or more times with a corresponding interrupt signal to the host for each CQ head pointer update to notify or indicate to the host that the completion queue is ready to be read or processed. Updating the CQ head pointer with a corresponding interrupt signal indicates that the command has been executed and data associated with the command is available in memory. The CQ head pointer andinterrupt signal may be updated immediately following the writing of each completion entry to the completion queue, or the CQ head pointer and interrupt signal may be updated after all completion entries of the executed fetched commands are written to the completion queue. In one embodiment, the CQ head pointer and interrupt signal may be updated after one or more completion entries corresponding to high priority commands are written to the completion queue, such as described above inoperation 512 ofmethod 500. The host may then process the completion queue. For example,method 710 may then precede tooperations method 300. -
FIG. 7C illustrates amethod 730 of the storage device sending completion entries corresponding to each executed command to a corresponding priority ranked completion queue of the host, according to yet another embodiment.Method 730 may be used in conjunction withmethod 700 and/ormethod 710. - In
operation 722, a controller or command processor of the storage device fetches one or more commands from a submission queue of a host at full speed. The commands may be read commands or write commands. Inoperation 724, the controller or command processor reads a header of each of the one or more commands to determine a bandwidth QoS level associated with each of the one or more commands. The associated bandwidth QoS level of the commands identifies the priority of each of the one or more commands. - In
operation 726, the controller or command processor executes each of the one or more commands at full speed in no particular order. The commands may be executed in any order, such as the order in which the commands were fetched from the submission queue. - In operation 728, the controller or command processor writes a completion entry for each of the one or more executed commands to one of a plurality of completion queues. Each completion queue of the plurality of completion queues may be associated with the same bandwidth QoS levels as the one or more commands. For example, if the storage device is set up with five bandwidth QoS levels corresponding to five pricing tiers, five corresponding completion queues may be utilized. Thus, the lowest priority commands (e.g., level 1 commands) will all be sent to a first completion queue of the plurality of completion queues, and the highest priority commands (e.g., level 5 commands) will all be sent to a second completion queue of the plurality of completion queues. Operation 728 may incorporate
operation 718 ofmethod 710 to write the completion entries to the respective completion queue in order of priority from high to low. For example, the highest priority commands may be sent to their respective completion queue before the lower priority commands are written to their respective completion queue. - In
operation 732, the controller or command processor updates the CQ head pointer one or more times with a corresponding interrupt signal to the host for each CQ head pointer update in order of priority from high to low. In an embodiment where the completion entries are written to the respective completion queues in order of priority, a CQ head pointer and interrupt signal may be sent to the host as soon as a completion entry is full, or after each individual completion entry is written to a completion queue. For example, in one embodiment, if the completion entries corresponding to the highest priority commands are first written to the corresponding highest priority completion queue, a CQ head pointer and interrupt signal may be sent as soon all completion entries corresponding to the highest priority commands are written. In another embodiment, an interrupt signal may be sent to the host immediately following the writing of a completion entry corresponding to a completion queue in order of priority from high to low. For example, starting with the highest priority completion queue and highest priority command, multiple interrupt signals may be sent back-to-back as each individual highest priority command entry is written to the highest priority completion queue. In another embodiment, the CQ head pointer is updated only once after all completion entries are written to the respective completion queues. The host may then process the completion queues. For example,method 730 may then precede tooperations method 300. - By fetching and executing one or more commands at full speed, the storage device may receive the maximum amount of information, which helps provide for more reliable and accurate bandwidth QoS levels to be delivered to SLA customers of all grades or tiers. Additionally, conflicts of the resources of a storage device can be reduced, and data can be transferred without acknowledging to the host the movement of the data. Various bandwidth QoS levels may be utilized without slowing down the data flow rate or consuming excess bandwidth, resulting in more precise and accurate quantities of bandwidth offered to customers.
- Furthermore, a retailer may customize the bandwidth QoS levels and parameters, either on-the-fly or predetermined. By permitting a retailer to determine the bandwidth QoS levels and associated parameters, such as delay times, the retailer can precisely tailor the configuration and settings as desired such that the configurations will be most beneficial to the individual retailer needs. As such, bandwidth can be effectively and reliably limited as per SLAs while freeing storage device resources and reducing contention.
- In one embodiment, a method of operating a storage device comprises executing, by a controller of the storage device, a command associated with a bandwidth quality-of-service level. The command is executed at full speed. The method further comprises delaying writing a completion entry corresponding to the executed command for a predetermined amount of time. The predetermined amount of time is based on the associated bandwidth quality-of-service level. The method comprises triggering the completion entry corresponding to the executed command to be written to a completion queue. The writing of the completion entry to the completion queue is triggered after the predetermined amount of time is met.
- The method may further comprise receiving a doorbell signaling the command is present in a submission queue prior to executing the command. The method may further comprise fetching the command from the submission queue prior to executing the command at full speed. The associated bandwidth quality-of-service level of the command may determine the priority of the command. The predetermined amount of time may be longer for lower priority bandwidth quality-of-service levels than higher priority bandwidth quality-of-service levels. The predetermined amount of time may be based on a countdown, a count up, or timer. The method may further comprise delaying updating a completion queue head pointer to point to the completion entry for a predetermined amount of time. The predetermined amount of time may be based on the associated bandwidth quality-of-service level.
- In another embodiment, a storage device comprises one or more memory devices and a controller coupled to the one or more memory devices. The controller is configured to fetch a command associated with a bandwidth quality-of-service level from a submission queue at full speed, execute the command, write a completion entry corresponding to the executed command to a completion queue, and delay sending an interrupt signal indicating the completion queue is ready to be read. The delay is based on the bandwidth quality-of-service level associated with the command.
- The associated bandwidth quality-of-service level of the command may determine the priority of the command. The controller may comprise a settings page, the settings page determining one or more bandwidth quality-of-service levels. The one or more bandwidth quality-of-service levels may be based on one or more of a time of day, a customer number, a quantity of commands previously retrieved, and available bandwidth. The delay may be longer for lower priority bandwidth quality-of-service levels than higher priority bandwidth quality-of-service levels. The delay may be further based on one or more of a countdown timer, a counter of a number of commands executed, available bandwidth, and a number of commands in the submission queue. The storage device may further comprise a bandwidth limiter coupled to the controller.
- In yet another embodiment, a storage system comprises a host device and a storage device coupled to the host device. The storage device comprises one or more memory devices and a controller coupled to the one or more memory devices. The controller is configured to fetch a plurality of commands from a submission queue at full speed, read headers of each of the plurality of commands to determine an associated bandwidth quality-of-service level of each of the plurality of commands, and execute the plurality of commands in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of commands.
- The controller may be further configured to send completion entries corresponding to each of the plurality of commands to a plurality of completion queues after each of the plurality of commands are executed. Each completion queue of the plurality of completion queues may be associated with a different bandwidth quality-of-service level. The associated bandwidth quality-of-service level of each of the plurality of commands may correspond to the different bandwidth quality-of-service levels associated with the plurality of completion queues. The controller may be further configured to send one or more interrupt signals to the host device to indicate that at least one of the plurality of completion queues is ready to be read. The controller may send the one or more interrupt signals to the host device in order of high to low priority based on the associated bandwidth quality-of-service level of each of the plurality of completion queues.
- While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Claims (21)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/189,963 US10635355B1 (en) | 2018-11-13 | 2018-11-13 | Bandwidth limiting in solid state drives |
DE102019124450.1A DE102019124450A1 (en) | 2018-11-13 | 2019-09-11 | BANDWIDTH LIMITATION IN SOLID STATE DRIVES |
CN201910878488.0A CN111176553B (en) | 2018-11-13 | 2019-09-18 | Bandwidth limitation in solid state drives |
US16/832,402 US11061620B2 (en) | 2018-11-13 | 2020-03-27 | Bandwidth limiting in solid state drives |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/189,963 US10635355B1 (en) | 2018-11-13 | 2018-11-13 | Bandwidth limiting in solid state drives |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/832,402 Division US11061620B2 (en) | 2018-11-13 | 2020-03-27 | Bandwidth limiting in solid state drives |
Publications (2)
Publication Number | Publication Date |
---|---|
US10635355B1 US10635355B1 (en) | 2020-04-28 |
US20200151134A1 true US20200151134A1 (en) | 2020-05-14 |
Family
ID=70332681
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/189,963 Active US10635355B1 (en) | 2018-11-13 | 2018-11-13 | Bandwidth limiting in solid state drives |
US16/832,402 Active US11061620B2 (en) | 2018-11-13 | 2020-03-27 | Bandwidth limiting in solid state drives |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/832,402 Active US11061620B2 (en) | 2018-11-13 | 2020-03-27 | Bandwidth limiting in solid state drives |
Country Status (3)
Country | Link |
---|---|
US (2) | US10635355B1 (en) |
CN (1) | CN111176553B (en) |
DE (1) | DE102019124450A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021252015A1 (en) * | 2020-06-10 | 2021-12-16 | Western Digital Technologies, Inc. | Systems and methods for configuring a data storage device |
WO2022005538A1 (en) * | 2020-06-30 | 2022-01-06 | Western Digital Technologies, Inc. | Variable performance storage devices |
US20230229485A1 (en) * | 2020-08-14 | 2023-07-20 | Suzhou Inspur Suzhou Intelligent Technology Co., Ltd. | Command information transmission method, system, and apparatus, and readable storage medium |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
US11055022B2 (en) * | 2019-03-25 | 2021-07-06 | Western Digital Technologies, Inc. | Storage system and method for early host command fetching in a low queue depth environment |
KR20210080761A (en) * | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | Storage controller managing completion timing, and operating method thereof |
EP3842952B1 (en) * | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
US11321017B2 (en) * | 2020-06-29 | 2022-05-03 | SK Hynix Inc. | Systems and methods for controlling completion rate of commands |
CN111831227B (en) * | 2020-07-07 | 2024-07-16 | 山东华芯半导体有限公司 | NVME protocol command acceleration processing system |
JP2022076620A (en) | 2020-11-10 | 2022-05-20 | キオクシア株式会社 | Memory system and control method |
US11409439B2 (en) * | 2020-11-10 | 2022-08-09 | Samsung Electronics Co., Ltd. | Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device |
CN114116556B (en) * | 2021-10-29 | 2024-06-28 | 山东云海国创云计算装备产业创新中心有限公司 | Method, system, storage medium and equipment for dynamically distributing queue cache |
CN114721984B (en) * | 2022-03-30 | 2024-03-26 | 湖南长城银河科技有限公司 | SATA interface data transmission method and system for low-delay application |
US20240160372A1 (en) * | 2022-11-16 | 2024-05-16 | Samsung Electronics Co., Ltd. | Prepopulating commands at a storage device for accelerated host-issued live migration of storage data |
CN116301644B (en) * | 2023-03-24 | 2023-10-13 | 四川水利职业技术学院 | Data storage method, system, terminal and medium based on multi-hard disk coordination |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065089A (en) * | 1998-06-25 | 2000-05-16 | Lsi Logic Corporation | Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency |
US8083373B2 (en) | 2009-07-23 | 2011-12-27 | James William Zimmerman | LED retrofit for fluorescent backlit signs |
US8291135B2 (en) * | 2010-01-15 | 2012-10-16 | Vmware, Inc. | Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode |
US8612648B1 (en) * | 2010-07-19 | 2013-12-17 | Xilinx, Inc. | Method and apparatus for implementing quality of service in a data bus interface |
US9774677B2 (en) * | 2012-04-10 | 2017-09-26 | Intel Corporation | Remote direct memory access with reduced latency |
US9871734B2 (en) * | 2012-05-28 | 2018-01-16 | Mellanox Technologies, Ltd. | Prioritized handling of incoming packets by a network interface controller |
US9483431B2 (en) | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US8595385B1 (en) * | 2013-05-28 | 2013-11-26 | DSSD, Inc. | Method and system for submission queue acceleration |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US10635316B2 (en) | 2014-03-08 | 2020-04-28 | Diamanti, Inc. | Methods and systems for data storage using solid state drives |
US9563369B2 (en) * | 2014-04-14 | 2017-02-07 | Microsoft Technology Licensing, Llc | Fine-grained bandwidth provisioning in a memory controller |
US20150317176A1 (en) | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller |
WO2015173853A1 (en) * | 2014-05-12 | 2015-11-19 | 株式会社日立製作所 | Information-processing device, processing method thereof, and input/output device |
US9930133B2 (en) * | 2014-10-23 | 2018-03-27 | Netapp, Inc. | System and method for managing application performance |
US9934177B2 (en) | 2014-11-04 | 2018-04-03 | Cavium, Inc. | Methods and systems for accessing storage using a network interface card |
US11036533B2 (en) * | 2015-04-17 | 2021-06-15 | Samsung Electronics Co., Ltd. | Mechanism to dynamically allocate physical storage device resources in virtualized environments |
US10089266B2 (en) * | 2015-07-10 | 2018-10-02 | Apple Inc. | Power saving feature for storage subsystems |
KR20170032502A (en) * | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | Storage device and interrupt generation method thereof |
CN107924289B (en) * | 2015-10-26 | 2020-11-13 | 株式会社日立制作所 | Computer system and access control method |
US10185678B1 (en) * | 2015-10-30 | 2019-01-22 | Amazon Technologies, Inc. | Universal offloading engine |
US10185511B2 (en) * | 2015-12-22 | 2019-01-22 | Intel Corporation | Technologies for managing an operational characteristic of a solid state drive |
US9792051B2 (en) | 2016-02-24 | 2017-10-17 | Samsung Electronics Co., Ltd. | System and method of application aware efficient IO scheduler |
CN107346265B (en) * | 2016-05-05 | 2021-05-18 | 北京忆恒创源科技有限公司 | Method and device for realizing QoS |
US20170322897A1 (en) * | 2016-05-06 | 2017-11-09 | Sandisk Technologies Inc. | Systems and methods for processing a submission queue |
KR102649324B1 (en) * | 2016-05-19 | 2024-03-20 | 삼성전자주식회사 | Computer system for performing adaptive interrupt control and method for controlling interrupt thereof |
CN107870820B (en) | 2016-09-23 | 2023-10-13 | 北京忆恒创源科技股份有限公司 | Providing quality of service in solid state drives |
US20180088978A1 (en) | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
US10095422B2 (en) * | 2016-10-28 | 2018-10-09 | Veritas Technologies, LLC | Systems and methods for allocating input/output bandwidth in storage systems |
US11010431B2 (en) * | 2016-12-30 | 2021-05-18 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD |
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10452278B2 (en) * | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10725835B2 (en) * | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
US10466903B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10691368B2 (en) * | 2017-03-31 | 2020-06-23 | Samsung Electronics Co., Ltd. | System and method for providing data replication in NVMe-oF ethernet SSD |
US10659376B2 (en) * | 2017-05-18 | 2020-05-19 | International Business Machines Corporation | Throttling backbone computing regarding completion operations |
US11178023B2 (en) * | 2017-06-30 | 2021-11-16 | Intel Corporation | Data plane interface network quality of service in multi-tenant data centers |
US10564857B2 (en) * | 2017-11-13 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for QoS over NVMe virtualization platform using adaptive command fetching |
US10884658B2 (en) * | 2018-02-09 | 2021-01-05 | Western Digital Technologies, Inc. | Completion entry throttling using data storage controller |
US10387078B1 (en) * | 2018-03-13 | 2019-08-20 | Western Digital Technologies, Inc. | Adaptive control of host queue depth for command submission throttling using data storage controller |
US10732897B2 (en) * | 2018-07-03 | 2020-08-04 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
-
2018
- 2018-11-13 US US16/189,963 patent/US10635355B1/en active Active
-
2019
- 2019-09-11 DE DE102019124450.1A patent/DE102019124450A1/en active Pending
- 2019-09-18 CN CN201910878488.0A patent/CN111176553B/en active Active
-
2020
- 2020-03-27 US US16/832,402 patent/US11061620B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021252015A1 (en) * | 2020-06-10 | 2021-12-16 | Western Digital Technologies, Inc. | Systems and methods for configuring a data storage device |
US11500559B2 (en) | 2020-06-10 | 2022-11-15 | Western Digital Technologies, Inc. | Systems and methods for configuring a data storage device |
WO2022005538A1 (en) * | 2020-06-30 | 2022-01-06 | Western Digital Technologies, Inc. | Variable performance storage devices |
US11494098B2 (en) | 2020-06-30 | 2022-11-08 | Western Digital Technologies, Inc. | Variable performance storage devices |
US20230229485A1 (en) * | 2020-08-14 | 2023-07-20 | Suzhou Inspur Suzhou Intelligent Technology Co., Ltd. | Command information transmission method, system, and apparatus, and readable storage medium |
US11868799B2 (en) * | 2020-08-14 | 2024-01-09 | Inspur Suzhou Intelligent Technology Co., Ltd. | Command information transmission method, system, and apparatus, and readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
US20200225879A1 (en) | 2020-07-16 |
CN111176553A (en) | 2020-05-19 |
US11061620B2 (en) | 2021-07-13 |
CN111176553B (en) | 2023-06-27 |
DE102019124450A1 (en) | 2020-05-14 |
US10635355B1 (en) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061620B2 (en) | Bandwidth limiting in solid state drives | |
US11960725B2 (en) | NVMe controller memory manager providing CMB capability | |
US11416161B2 (en) | Zone formation for zoned namespaces | |
CN113168374B (en) | Maintaining write commands in partition namespaces | |
US20190324658A1 (en) | Dynamic maximization of drive throughput while maintaining latency qos | |
US11734207B1 (en) | Dynamic port allocation in PCIe bifurcation system | |
US11861224B2 (en) | Data transfer management from host buffers | |
CN114995743A (en) | Fair sharing among multiple solid state disk commit queues | |
US20240168801A1 (en) | Ensuring quality of service in multi-tenant environment using sgls | |
US11656798B1 (en) | Immediate partial host buffer fetching | |
US20240053923A1 (en) | Write coalescing via hmb to optimize write performance | |
US11397699B2 (en) | Interrupt coalescing protection logic | |
US20240201847A1 (en) | Write Completion Pacing For Unbalanced Command Length | |
US12105990B2 (en) | Parallel fragmented SGL fetching for hiding host turnaround time | |
US20240143228A1 (en) | Fast execution of barrier command | |
US12118219B2 (en) | Asymmetric time division peak power management (TD-PPM) timing windows | |
US20230289093A1 (en) | Automatic Prediction Timers Adaptation | |
WO2024226112A1 (en) | Cmb caching using hybrid sram/dram data path |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566 Effective date: 20200113 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001 Effective date: 20220203 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:067982/0032 Effective date: 20240621 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS THE AGENT, ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:068762/0494 Effective date: 20240820 |