CN111176553A - 固态驱动器中的带宽限制 - Google Patents
固态驱动器中的带宽限制 Download PDFInfo
- Publication number
- CN111176553A CN111176553A CN201910878488.0A CN201910878488A CN111176553A CN 111176553 A CN111176553 A CN 111176553A CN 201910878488 A CN201910878488 A CN 201910878488A CN 111176553 A CN111176553 A CN 111176553A
- Authority
- CN
- China
- 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
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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Hardware Design (AREA)
Abstract
本公开题为“固态驱动器中的带宽限制”。整体涉及限制存储设备中的带宽。一个或多个带宽服务质量等级可以根据服务水平协议进行选择并与命令相关联,服务水平协议可以使一些命令优先于其他命令。存储设备获取并执行一个或多个命令。该命令中的每个命令与带宽服务质量等级相关联。在执行该命令并将数据转移到主机设备之后,存储设备可以基于该命令的相关带宽服务质量等级延迟将与所执行的命令相对应的完成条目写入完成队列。然后,该设备可以通过延迟更新完成队列头指针来延迟显示完成条目。该设备还可以基于命令的相关带宽服务质量等级延迟向主机设备发送中断信号。
Description
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关技术的描述
服务水平协议(SLA)通常由SSD的零售商或销售存储解决方案的人员持有,他们具有多租户系统。每个多租户系统可以覆盖许多订户和客户、虚拟机或应用程序,所有这些都希望共享系统的可用带宽。由于可用带宽是有限资源,因此SLA通常确保针对不同价格层的可用驱动器带宽量和服务质量(QoS)。SLA还旨在为客户提供有保证且准确的QoS和/或带宽吞吐量保证。SLA可以限制租户可用的BW、QoS或两者的组合,并且可以设置BW和QoS中的最小值、最大值和关系变化。SLA中的保证可以是提供最小或最大带宽量或QoS。例如,可以向付费更高的客户确保更大的带宽量,在这种情况下,客户的SLA将在进行其他租户的流量时确保最小带宽量和QoS的最大劣化。
限制可用带宽的方法包括在SSD中处理命令时减慢数据流速或计数字节或命令数。然而,这些方法可能在过程中消耗大量带宽,并且可能被认为是侵入性的或粗暴的。因此,这些方法可能是浪费且低效的。
从而,需要一种在SSD中限制带宽,而不限制数据速度并消耗大量SSD资源的可靠且准确的方法。
发明内容
本公开整体涉及限制存储设备中的带宽。一个或多个带宽服务质量等级可以根据服务水平协议进行选择并与命令相关联,服务水平协议可以使一些命令优先于其他命令。存储设备获取并执行一个或多个命令。命令中的每个命令与带宽服务质量等级相关联。在执行命令并将数据转移到主机设备之后,存储设备可以基于命令的相关带宽服务质量等级延迟将与所执行的命令相对应的完成条目写入完成队列。然后,设备可以通过延迟更新完成队列头指针来延迟显示完成条目。设备还可以基于命令的相关带宽服务质量等级延迟向主机设备发送中断信号。
在一个实施方案中,操作存储设备的方法包括由存储设备的控制器执行与带宽服务质量等级相关联的命令。命令以全速执行。方法还包括延迟写入持续预定时间量的完成条目,该完成条目对应于所执行的命令。预定时间量基于相关带宽服务质量等级。方法包括触发将对应于所执行的命令的完成条目写入完成队列。在满足预定时间量之后触发将完成条目写入完成队列。
在另一个实施方案中,存储设备包括一个或多个存储器设备和耦接到一个或多个存储器设备的控制器。控制器被配置成以全速从提交队列获取与带宽和服务质量等级相关联的命令,执行命令,将对应于所执行的命令的完成条目写入完成队列,以及延迟发送指示完成队列已准备好被读取的中断信号。延迟基于与命令相关联的带宽和服务质量等级。
在又一个实施方案中,存储系统包括主机设备和耦接到主机设备的存储设备。存储设备包括一个或多个存储器设备和耦接到一个或多个存储器设备的控制器。控制器被配置成以全速从提交队列获取多个命令,读取多个命令中的每个命令的标头以确定多个命令中的每个命令的相关带宽服务质量等级,以及基于多个命令中的每个命令的相关带宽服务质量等级,按照高优先级到低优先级的顺序执行多个命令。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,该实施方案中的一些实施方案在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2示出了根据另一个实施方案的包括耦接到主机设备的存储设备的存储系统。
图3是示出根据一个实施方案的限制主机与存储设备之间的带宽的方法的框图。
图4是示出根据一个实施方案的通过延迟将完成条目写入主机的完成队列来限制带宽的方法的流程图。
图5是示出根据另一个实施方案的通过延迟向主机设备发送中断信号来限制带宽的方法的流程图。
图6是示出根据一个实施方案的通过从完成队列移除完成条目以对完成条目重新排序来限制带宽的方法的流程图。
图7A至图7C是示出根据各种实施方案的通过在执行命令之前读取命令的标头以确定相关带宽QoS等级来限制带宽的方法的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求的要素或限制,除非在权利要求中明确地叙述。
本公开整体涉及限制存储设备中的带宽。一个或多个带宽服务质量等级可以根据服务水平协议进行选择并与命令相关联,服务水平协议可以使一些命令优先于其他命令。存储设备获取并执行一个或多个命令。命令中的每个命令与带宽服务质量等级相关联。在执行命令并将数据转移到主机设备之后,存储设备可以基于命令的相关带宽服务质量等级延迟将与所执行的命令相对应的完成条目写入完成队列。然后,设备可以通过延迟更新完成队列头指针来延迟显示完成条目。设备还可以基于命令的相关带宽服务质量等级延迟向主机设备发送中断信号。图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在存储设备106中的非易失性存储器设备来存储和检索数据。主机设备104包括主机DRAM138。在一些示例中,存储系统100可以包括可作为存储阵列操作的多个存储设备,诸如存储设备106。例如,存储系统100可以包括多个存储设备106,其被配置为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)的冗余阵列。
存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备(诸如存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机(诸如所谓的“智能”电话)、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。
如图1所示,存储设备106包括控制器108、非易失性存储器110(NVM 110)、电源111、易失性存储器112、带宽限制器120和接口114。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷板(PB),存储设备106的部件机械地附接到该印刷板,并且该印刷板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因子。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCI Express(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
存储设备106包括NVM 110,其可以包括多个存储器设备。NVM 110可以被配置成存储和/或检索数据。例如,NVM 110的存储器设备可以从控制器108接收数据和指示存储器设备存储数据的消息。类似地,NVM 110的存储器设备可以从控制器108接收指示存储器设备检索数据的消息。在一些示例中,存储器设备中的每个存储器设备可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储器设备)。在一些示例中,每个存储器设备可以被配置成存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储器设备可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
NVM 110可以包括多个闪存存储器设备。闪存存储器设备可以包括基于NAND或NOR的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NAND闪存存储器设备中,闪存存储器设备可以被分成多个块,这些块可以被分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NAND单元。NAND单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NAND闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可能以页面等级向NAND闪存存储器设备写入数据以及从NAND闪存存储器设备读取数据,并且以块等级从NAND闪存存储器设备擦除数据。
存储设备106包括电源111,其可以向存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备(例如主机设备104)提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件提供电力。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
存储设备106还包括易失性存储器112,其可以由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。在一些示例中,控制器108可以使用易失性存储器112作为高速缓存。例如,控制器108可以将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入非易失性存储器110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM 110。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到NVM 110并监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并将至少一个操作特性存储到NVM 110。
存储设备106包括耦接到控制器108的带宽限制器120。带宽限制器120监测和控制对存储系统100的可用带宽的访问。带宽限制器120基于相应的QoS等级对带宽的每个请求进行优先级排序,并控制对可用带宽的访问。QoS是来自驱动器的命令延迟的统计聚合描述。最大命令延迟、平均命令延迟影响、所有命令的统计描述、通过某种极限执行命令的99%的保证,或者所有命令延迟相对该延迟的概率的完整描述(经常以曲线图示出)。在一些实施方案中,带宽限制器120可以是位于存储设备106内的硬件电路。在其他实施方案中,带宽限制器120位于存储设备106中的固件中。在其他实施方案中,带宽限制器120在位于存储设备106内的软件中执行。带宽限制器120可以是位于控制器108内的硬件、固件或软件。带宽限制器120还可以位于服务器或其他处理器中远离存储设备106的位置。其他实施方案是可能的,并且不受本文公开的示例的限制。
存储系统100可以是多租户系统。租户可以包括应用程序、虚拟机、对接站、容器、OS实例、数据库、客户端服务器、处理器、虚拟功能、命名空间、提交队列和完成队列对等。在此类实施方案中,多个用户或租户可以共享存储设备106。例如,存储设备106可以是基于云的存储网络的一部分。在此类实施方案中,带宽限制器120通过基于与每个命令相关联的带宽QoS等级对从主机设备104接收的命令的执行进行优先级排序,对于特定租户或用户限制带宽。带宽限制器120可以延迟将与执行的命令相关联的完成条目写入完成队列。带宽限制器120可以进一步延迟向主机设备104发送中断信号,从而通知主机设备104命令已经完成。实际命令由控制器108以全带宽速度执行,并且不受带宽限制器120的限制。主机设备104与存储设备106之间的数据吞吐量继续以全带宽操作以便保持最高的数据吞吐效率。主机DRAM 138可以用于填写和存储完成条目。然而,由于主机设备104直到存储设备106将完成条目写入完成队列并将中断信号发送到主机设备104才知道该命令已被存储设备106成功执行,因此有效地限制了对于用户的带宽。
图2示出了根据另一个实施方案的包括耦接到主机设备204的存储设备206的存储系统200。存储系统200可以是图1的存储系统100、主机设备104和存储设备106。
存储设备206可以从主机设备204发送和接收命令和数据,并且包括命令处理器220。命令处理器220可以调度存储器设备访问(诸如NAND访问),并且可以在先前接收的命令需要写入相同存储器备之前执行对存储器设备的读取。命令处理器220耦接到带宽限制器230和一个或多个存储器设备228。一个或多个存储器设备228可以是NAND非易失性存储器设备。带宽限制器230耦接到命令获取222。命令获取222耦接到提交队列仲裁224。提交队列仲裁224耦接到一个或多个提交队列头和尾指针226。
主机设备204包括耦接到一个或多个处理单元或CPU应用程序234的一个或多个主机软件应用程序232。在一个实施方案中,软件应用程序232具有有限的固态驱动器队列深度以便为系统200的每个用户导出延迟QoS。主机设备204还包括没有相关QoS的操作系统(OS)或软件应用程序240。CPU 234耦接到互连件236和主机DRAM 238。主机DRAM 238可以存储提交队列数据。互连件236耦接到设备206。互连件236可以与提交队列头和尾指针226以及命令获取222两者通信。
CPU 234生成一个或多个命令216以发送到设备206,并且可以经由命令获取信号244从设备206发送和接收命令。CPU 234还可以向设备206发送中断或门铃218,以向设备206通知一个或多个命令216。CPU 234可以基于与每个命令相关联的带宽QoS等级来区分命令。相关联的带宽QoS等级确定命令的优先级。例如,在具有定价层的多租户系统中,付费较高的客户将具有更高的优先级。这样,由付费较高的客户通过CPU 234生成的任何命令将具有直接对应于较高优先级的相关带宽QoS等级。
CPU 234可以限制提交给设备206的数据队列深度。队列深度(QD)是排队到设备206的命令的最大数量,而数据-QD是与用QD排队的命令相关联的数据量。在一个实施方案中,存储设备206的数据-QD 242等于存储设备206的带宽。数据-QD 242限于在其下设备206仍然可以维持期望的延迟QoS的最高等级。主机设备204可以为存储系统200选择目标延迟QoS,并且还可以限制存储系统200的相关数据-QD 242。为了选择延迟QoS目标,设备206可以向主机驱动器234提供信息。此类信息可以包括设备206的延迟QoS能力,与特定延迟QoS目标相关联的近似最大数据-QD限制,以及/或者多对数据-QD限制或QoS目标值。附加地,主机设备204可以将系统200的数据-QD保持在当前数据-QD限制之下。
图3是示出根据一个实施方案的在执行读取命令时限制主机与存储设备之间的带宽的方法300的框图。方法300可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法300可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
方法300开始于操作350,其中主机设备将命令作为条目写入提交队列中。在操作350处,主机设备可以将一个或多个命令写入提交队列中。命令可以是读取命令或写入命令。主机设备可以用相关带宽QoS等级写入命令。例如,主机设备可以在命令的标头中写入命令的相关带宽QoS等级。与每个命令相关联的带宽QoS等级直接对应于优先级排名,并且使一些命令优先于其他命令。例如,付费较高的客户或用户将具有比付费较低的客户更高的优先级,并且因此将具有更高或更大的带宽QoS等级。可能存在任何数量的各种优先级排名或等级。例如,可能有五层的带宽QoS等级,其中第一等级是最低优先级并且第五等级是最高优先级。
主机设备可以包括一个或多个提交队列。可以基于优先级将命令写入一个或多个提交队列中。例如,主机可以具有用于高排名命令的第一提交队列,用于中级排名命令的第二提交队列,以及用于低排名命令的第三提交队列。
在操作352中,主机设备写入一个或多个更新的提交队列尾指针并且敲响门铃或发送中断信号以向存储设备通知或发信号告知准备好执行的新命令。门铃信号可以是图2的门铃218。如果存在多于一个提交队列,则主机可以写入更新的提交队列尾指针并为提交队列中的每个提交队列发送门铃或中断信号。在操作354中,响应于接收到门铃或中断信号,存储设备的控制器以全速从一个或多个提交队列获取命令。全速可以是正常运行速度或最快带宽速度。
以全速从提交队列中获取命令允许存储设备接收最大量的信息。此类信息可以包括用于最佳排队和执行的命令的数量、优先化命令、不同的命名空间、以及不同的提交队列配置等。向存储设备提供最大量的信息使高级SLA客户能够接收高级服务。附加地,低级SLA客户仍然可能以最小延迟进行响应,这可以减小存储设备资源的冲突,包括控制器SRAM、存储器管芯可用性和切换模式总线可用性等。
在接收到命令时,存储设备的控制器可以确定与命令相关联的带宽QoS等级,并且因此可以确定命令的优先级排名。存储设备可以通过命令从提交队列中检索带宽QoS等级。可以基于提交队列中的每个命令的位置来确定带宽QoS等级。在至少一个实施方式中,主机设备包括命令标头中的命令的带宽QoS等级。然后,存储设备可以读取命令标头以确定相关带宽QoS等级。
在操作356中,存储设备的控制器处理命令并将与命令相关联的数据全速写入或转移到主机设备存储器。在操作358中,存储设备的控制器将对应于执行的命令的完成条目写入主机设备的完成队列,并且移动或更新CQ头指针以指向新写入的完成条目。存储设备可以延迟将完成条目写入完成队列和/或延迟更新CQ头指针。延迟基于与执行的命令相关联的带宽QoS等级。在至少一个实施方式中,相关带宽QoS等级的优先级越低,延迟越长。与最高优先级排名的带宽QoS等级相关联的命令可以没有延迟。
延迟将完成条目写入完成队列和/或延迟更新头指针允许将命令数据转移到主机DRAM或非易失性存储器中,同时将完成条目保持在存储设备中。这提供了控制器SRAM的最佳可用性,而无需向主机确认命令数据的移动。延迟将完成条目写入完成队列和/或延迟更新头指针导致主机不知道存储设备利用命令和数据转移所取得的进展。
在一个实施方案中,完成队列包括多个完成队列。多个完成队列中的每个完成队列可以与不同的带宽QoS等级相关联。与命令相关联的带宽QoS等级可以与和多个完成队列中的每个完成队列相关联的带宽QoS等级匹配或相同。继续上述示例,如果存在对应于五个定价层的五个带宽QoS等级,则将存在五个对应的完成队列。存储设备将完成条目写入对应于命令的带宽QoS等级的完成队列中。例如,高度优先化命令将被写入高度优先化完成队列。可以通过全局跟踪、预定列表或每个完成队列中的一个或多个来跟踪多个完成队列。
操作350-358可以重复一次或多次以在操作360之前处理多个命令。在操作358中可以将几个完成条目写入完成队列而不警告主机设备。为了向主机设备警告完成队列中的完成条目,可以更新完成队列(CQ)头指针以指向完成队列中的最新结束完成条目或最后写入条目。更新CQ头指针将完成队列中的一个或多个完成条目显示给主机。
在操作360中,存储设备的控制器生成中断信号或门铃并将其发送到主机设备。中断信号指示该命令已被执行,并且与该命令相关联的数据在存储器中可用。中断信号进一步通知完成队列已准备好被读取或处理。存储设备可以延迟将中断信号发送到主机设备。延迟基于与执行的命令相关联的带宽QoS等级。在至少一个实施方式中,相关带宽QoS等级的优先级越低,延迟越长。与最高优先级排名的带宽QoS等级相关联的命令可以没有延迟。
存储设备可以延迟更新CQ头指针并将中断信号发送到主机设备,直到将多个完成条目写入完成队列。例如,如果存储设备将对应于低排名的带宽QoS等级的一个或多个完成条目写入完成队列,则存储设备可以延迟更新CQ头指针并发送中断信号,直到将与较高排名的带宽QoS等级相关联的完成条目写入完成队列。通过延迟更新CQ头指针并发送中断信号,直到将与较高排名的带宽QoS等级相关联的完成条目写入完成队列,中断信号可以清除当前在命令队列中的所有完成条目,包括在与较高排名的带宽QoS等级相关联的条目之前写入完成队列的所有完成条目。
操作358和360中的延迟可以是直接基于与命令相关联的带宽QoS等级的预定时间量。延迟可能是由倒计时到期或满足递增计数而引起的。存储设备可以包括计时器,其还可以根据与命令相关联的带宽QoS等级来设置延迟。延迟还可以基于倒数计时器、所执行的命令数量的计数器、可用带宽、以及提交队列中的命令数量中的一者或多者。延迟可以进一步基于最大或最小带宽描述符、最大或最小QoS保证、以及QoS和带宽最大值和最小值的混合。
在操作362中,主机设备处理完成条目。在操作364中,主机设备将更新的CQ头指针写入存储设备并敲响门铃或向存储设备发送中断信号以释放完成条目。
在一个实施方案中,带宽QoS等级和相关参数由零售商在存储设备的设置页面上设置。当零售商接收或重新启动存储设备时,零售商可以选择带宽QoS等级的数量。零售商可以进一步选择与每个带宽QoS等级相关联的延迟长度,或者存储设备可以基于所利用的带宽QoS等级的数量自动填充延迟。当零售商进入关于客户的SLA时,可以基于定价层将预定带宽QoS等级分配给每个客户或用户,并将其存储为存储设备存储器中的设置。当从已知客户或用户、从主机设备接收到命令时,从存储设备存储器检索带宽QoS等级信息,并且将其用于确定命令的优先级。零售商可以选择其他参数以对应于各种带宽QoS等级。
在另一个实施方案中,在写入提交队列时,每个命令与带宽QoS等级相关联,并且命令不具有预定的带宽QoS等级。在此类实施方案中,每个命令将通过在系统操作时被动态地即时分配带宽QoS等级。零售商还可以选择其他参数以对应于各种带宽QoS等级,诸如延迟的长度。可以基于一天中的时间、客户编号、先前检索或当前正在获取的命令的量、可用带宽、或其他区分参数来建立给定客户或用户命令的带宽QoS等级。其他实施方案是可能的,并且不限于这些示例。
图4、图5、图6和图7A至图7C是示出限制存储设备中的带宽的各种实施方案的流程图。可以如上所述确定图4至图7C中详述的每个实施方案的配置,诸如零售商设置设置页面或通过即时选择。
图4是示出根据一个实施方案的通过延迟将完成条目写入主机的完成队列来限制带宽的方法400的流程图。方法400可以与方法300结合使用。例如,方法400中未示出的是方法300的操作350和352。然而,方法400可以从方法300的操作350和352开始。此外,方法400可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法400可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
在操作402中,存储设备的控制器或命令处理器从主机的提交队列获取命令并以全速执行命令。在操作402中,可以获取并以全速执行一个或多个命令。全速可以是正常运行速度或最快带宽速度。在获取或执行命令时没有延迟。命令可以是读取命令或写入命令。执行命令包括将命令数据写入或转移到主机。
在操作404中,控制器或命令处理器延迟将持续预定时间量的更新的完成条目和CQ头指针写入主机的完成队列,该完成条目对应于所执行的命令。预定时间量基于与命令相关联的带宽(BW)QoS等级。延迟的长度与命令的优先级排名或层直接成比例。例如,与命令相关联的优先级排名或带宽QoS等级越低,延迟可能越长。与命令相关联的优先级排名或带宽QoS等级越高,延迟可能越短。最高优先级排名命令可能根本没有延迟,诸如在具有多个定价层的多租户系统中。
延迟将更新的完成条目和CQ头指针写入完成队列允许将命令数据转移到主机DRAM或非易失性存储器中,同时将完成条目保持在存储设备中。这提供了控制器SRAM的最佳可用性,而无需向主机确认命令数据的移动。延迟将更新的完成条目和CQ头指针写入完成队列导致主机不知道存储设备利用命令和数据转移所取得的进展。
延迟可能是由倒计时到期或满足递增计数而引起的。存储设备可以包括计时器,其还可以根据与命令相关联的带宽QoS等级来设置延迟。延迟还可以基于倒数计时器、所执行的命令数量的计数器、可用带宽、以及提交队列中的命令数量中的一者或多者。延迟可以进一步基于最大或最小带宽描述符、最大或最小QoS保证、以及QoS和带宽最大值和最小值的混合。
在操作406中,控制器或命令处理器触发将对应于执行的命令的完成条目写入完成队列,并且将完成条目写入完成队列。可以通过计时器或倒计时到期或满足递增计数来触发写入。在一个实施方案中,在将一个或多个较高排名的优先级命令写入完成队列时,触发写入。
在操作408中,控制器更新或移动内部CQ头指针以指向完成队列中的新写入的完成条目之一。控制器可以将CQ头指针移动到任何最近写入的完成条目。例如,如果控制器处理了三个命令并将更新的完成条目写入完成队列,则控制器可以选择三个新写入的完成条目中的任何一个完成条目来移动CQ头指针以向主机通知特定命令已被处理。更新CQ头指针以指向新写入的完成条目向主机显示一个或多个更新的完成条目。
类似于操作406,控制器可以基于与命令相关联的BW QoS等级来延迟移动持续预定时间量的CQ头指针。延迟的长度与命令的优先级排名或层直接成比例。例如,与命令相关联的优先级排名或带宽QoS等级越低,延迟可能越长。与命令相关联的优先级排名或带宽QoS等级越高,延迟可能越短。最高优先级排名命令可能根本没有延迟,诸如在具有多个定价层的多租户系统中。
在操作410中,控制器或命令处理器向主机发送中断信号以向主机通知或指示完成队列已准备好被读取或处理。中断信号向主机指示该命令已被执行,并且与该命令相关联的数据在存储器中可用。然后,主机可以处理完成队列。例如,方法400然后可以在方法300的操作362和364之前。图5是示出根据一个实施方案的通过延迟向主机设备发送中断信号来限制带宽的方法500的流程图。方法500可以与方法300和/或方法400结合使用。例如,方法500中未示出的是方法300的操作350和352。然而,方法500可以从方法300的操作350和352开始。此外,方法500可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法500可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
在操作502中,存储设备的控制器或命令处理器从主机的提交队列获取一个或多个命令并以全速执行一个或多个命令。全速可以是正常运行速度或最快带宽速度。在获取或执行命令时没有延迟。命令可以是读取命令或写入命令。执行命令包括将命令数据写入或转移到主机。
在操作504中,控制器或命令处理器将对应于一个或多个执行的命令中的每个执行的命令的完成条目写入主机的完成队列,并更新CQ头指针以指向新写入的完成条目中的一个新写入的完成条目。无论与每个命令相关联的带宽QoS等级如何,对应于每个执行的命令的完成条目可能以任何顺序写入完成队列。将完成条目写入主机的完成队列并更新CQ头指针不会向主机通知命令已被执行并且准备好由主机读取或处理。此外,方法500可以与方法400的操作404-408结合使用,并且可以延迟将完成条目写入完成队列和/或延迟更新CQ头指针。
在操作506中,控制器或命令处理器延迟将持续预定时间量的中断信号发送到主机。预定时间量基于与命令中的每个命令相关联的带宽QoS等级。延迟的长度与和命令相关联的优先级排名或层直接成比例。例如,与命令相关联的优先级或带宽QoS等级越低,延迟可能越长。与命令相关联的优先级或带宽QoS等级越高,延迟可能越短。最高优先级排名命令可能根本没有延迟,诸如在具有多个定价层的多租户系统中。
延迟可能是由倒计时到期或满足递增计数而引起的。存储设备可以包括计时器,其还可以根据与命令相关联的带宽QoS等级来设置延迟。延迟还可以基于倒数计时器、所执行的命令数量的计数器、可用带宽、以及提交队列中的命令数量中的一者或多者。延迟可以进一步基于最大或最小带宽描述符、最大或最小QoS保证、以及QoS和带宽最大值和最小值的混合。
在操作508中,控制器或命令处理器触发向主机发送中断信号。中断信号向主机通知或指示完成队列已准备好被读取或处理。中断信号向主机指示该命令已被执行,并且与该命令相关联的数据在存储器中可用。可能以至少两种方式触发向主机发送中断信号。在操作510中描述第一触发,并且在操作512中描述第二触发。
在操作510中,控制器或命令处理器在满足预定时间限制时自动将中断信号发送到主机。计时器或倒计时到期或者满足递增计数可以触发存储设备以自动发送中断信号。
在操作512中,控制器或命令处理器在将对应于新执行的命令的完成条目写入完成队列之后向主机发送将中断信号。与先前执行的命令相比,新执行的命令与更高优先级的带宽QoS等级相关联。例如,如果对应于与较低优先级层相关联的命令的一个或多个完成条目被写入完成队列,则对应于写入完成队列的较高优先级命令的完成条目将触发中断信号的发送。因此,写入与较高优先级命令相关联的完成条目将触发中断信号的发送并清除完成队列中的所有先前写入的完成条目。
例如,详细说明实现对应于五个定价层的五个带宽QoS等级的上述示例,零售商可以选择五个带宽QoS等级并确定等级5是最高优先级,而等级1是最低优先级。零售商可以进一步选择,与等级4或更高等级命令相关联的完成条目写入完成队列将清除与等级3或更低等级命令相关联的所有先前写入的完成条目。因此,与等级3或更低等级命令相关联的完成条目将不会触发中断信号的发送。然而,与等级4或更高等级命令相关联的完成条目将会触发中断信号的发送并清除完成队列。
然后,主机可以在接收到中断信号之后处理完成队列。例如,方法400然后可以在方法300的操作362和364之前。
图6是示出根据一个实施方案的通过从完成队列移除完成条目以对完成条目重新排序来限制带宽的方法600的流程图。方法600可以与方法300、方法400和/或方法500结合使用。例如,方法600中未示出的是方法300的操作350和352。然而,方法600可以从方法300的操作350和352开始。此外,方法600可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法600可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
在操作602中,存储设备的控制器或命令处理器从主机的提交队列获取第一命令并以全速执行第一命令。全速可以是正常运行速度或最快带宽速度。在获取或执行命令时没有延迟。命令可以是读取命令或写入命令。执行命令包括将命令数据写入或转移到主机。
在操作604中,控制器或命令处理器将对应于第一命令的完成条目写入主机的完成队列。如上面在方法400中所讨论的,可以延迟将对应于第一命令的完成条目写入完成队列。
在操作606中,控制器或命令处理器从主机的提交队列获取第二命令并以全速执行第二命令。在操作608中,控制器或命令处理器确定第二命令具有比第一命令更高的优先级。根据命令的相关带宽QoS等级确定第一命令和第二命令的优先级。存储设备可以通过命令从提交队列中检索命令的带宽QoS等级。可以基于提交队列中的每个命令的位置来确定带宽QoS等级。在至少一个实施方式中,主机设备包括命令标头中的命令的带宽QoS等级。然后,存储设备可以读取命令标头以确定相关带宽QoS等级。
在操作610中,控制器或命令处理器从完成队列中移除对应于第一命令的完成条目。可以从完成队列中擦除对应于第一命令的完成条目,或者可以从完成队列中检索对应于第一命令的完成条目,并且经由接口将其返回到存储设备。
在操作612中,控制器或命令处理器将对应于第二命令的完成条目写入主机的完成队列。在操作614中,控制器或命令处理器将对应于第一命令的完成条目重新写入完成队列。通过从完成队列中移除对应于第一命令的完成条目并且在写入对应于第二命令的完成条目之后重新写入对应于第一命令的完成条目,完成队列可以按优先级顺序重组或重新排序。因此,可以在对应于具有较低优先级排名的第一命令的完成条目之前处理对应于具有较高优先级排名的第二命令的完成条目。
在操作616中,控制器更新或移动内部完成队列头指针以指向完成队列中的新写入的完成条目之一。控制器可以将CQ头指针移动到任何最近写入的完成条目。例如,如果控制器处理了三个命令并将更新的完成条目写入完成队列,则控制器可以选择三个新写入的完成条目中的任何一个完成条目来移动CQ头指针以向主机通知特定命令和先前在完成队列中发生的所有命令完成条目已经被处理。
在操作618中,控制器或命令处理器向主机发送中断信号以向主机通知或指示完成队列已准备好被读取或处理。中断信号向主机指示该命令已被执行,并且与该命令相关联的数据在存储器中可用。在重新写入对应于第一命令的完成条目之前,可以在将对应于第二命令的完成条目写入完成队列并且将CQ头指针移动成指向对应于第二命令的完成条目之后立即发送中断信号。因此,操作618可以在操作614之前发生。然后,主机可以处理完成队列。例如,方法600然后可以在方法300的操作362和364之前。
图7A至图7C是分别示出根据各种实施方案的通过在执行命令之前读取命令的标头以确定相关带宽QoS等级来限制带宽的方法700、710和730的流程图。方法700、710和730可以与方法300、方法400、方法500和/或方法600结合使用。例如,方法700、710和730中未示出的是方法300的操作350和352。然而,方法700、710和730中的每个方法可以从方法300的操作350和352开始。此外,方法700、710和730可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法700、710和730还可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
图7A示出了根据一个实施方案的存储设备按优先级顺序执行一个或多个命令的方法700。在操作702中,存储设备的控制器或命令处理器以全速从主机的提交队列获取一个或多个命令。命令可以是读取命令或写入命令。
在操作704中,控制器或命令处理器读取一个或多个命令中的每个命令的标头以确定与一个或多个命令中的每个命令相关联的带宽QoS等级。命令的相关带宽QoS等级识别一个或多个命令中的每个命令的优先级。每个命令的标头可以包括与命令相关联的带宽QoS等级以及其他信息。在将命令写入提交队列时,主机可以为每个命令写入标头。因此,当在操作702中获取命令时,也获取每个命令的标头。这样,可以在执行命令之前确定与每个命令相关联的优先级层和带宽QoS等级。
在操作706中,按照从高到低的优先级的顺序,控制器或命令处理器一次以全速执行一个命令。在执行命令之后,控制器或命令处理器立即在完成队列中写入对应于执行的命令的完成条目,更新CQ头指针以指向对应于完成队列中的执行的命令的完成条目,并且向主机发送中断信号。因此,从最高优先级命令开始,执行命令并一次一个地将其作为完成条目写入完成队列,更新CQ头指针,并且发送中断信号。
在操作708中,控制器或命令处理器一次或多次地重复操作706,直到已经按照从高到低的优先级顺序处理一个或多个命令中的每个命令。每次重复操作706时,处理具有与先前处理的命令相同或减少的优先级层的命令。然后,主机可以处理完成队列。例如,方法700然后可以在方法300的操作362和364之前。
图7B示出了根据另一个实施方案的存储设备按照优先级顺序将对应于一个或多个执行的命令的完成条目发送到主机的完成队列的方法710。方法710可以与方法700结合使用。
在操作712中,存储设备的控制器或命令处理器以全速从主机的提交队列获取一个或多个命令。命令可以是读取命令或写入命令。在操作714中,控制器或命令处理器读取一个或多个命令中的每个命令的标头以确定与一个或多个命令中的每个命令相关联的带宽QoS等级。命令的相关带宽QoS等级识别一个或多个命令中的每个命令的优先级。
在操作716中,控制器或命令处理器以非特定顺序全速执行一个或多个命令中的每个命令。命令可能以任何顺序执行,诸如从提交队列获取的命令的顺序。
在操作718中,控制器或命令处理器按照从高到低的优先级的顺序将一个或多个执行的命令中的每个执行的命令的完成条目写入完成队列。在执行每个命令之后,控制器或命令处理器使用在操作714中确定的每个命令的带宽QoS等级来选择将对应于每个命令的完成条目写入完成队列的顺序。与最高优先级带宽QoS等级相关联的执行的命令首先被写入完成队列,然后是与较低优先级带宽QoS等级相关联的执行的命令。
在操作720中,对于每个CQ头指针更新,控制器或命令处理器通过对应中断信号一次或多次地将CQ头指针更新到主机,以向主机通知或指示完成队列已准备好被读取或处理。通过对应中断信号更新CQ头指针指示该命令已被执行,并且与该命令相关联的数据在存储器中可用。可以在将每个完成条目写入完成队列之后立即更新CQ头指针和中断信号,或者可以在将执行的已获取命令的所有完成条目写入完成队列之后更新CQ头指针和中断信号。在一个实施方案中,可以在对应于高优先级命令的一个或多个完成条目被写入完成队列之后更新CQ头指针和中断信号,诸如以上在方法500的操作512中所描述的。然后,主机可以处理完成队列。例如,方法710然后可以在方法300的操作362和364之前。
图7C示出了根据又一个实施方案的存储设备将对应于每个执行的命令的完成条目发送到主机的对应优先级排名的完成队列的方法730。方法730可以与方法700和/或方法710结合使用。
在操作722中,存储设备的控制器或命令处理器以全速从主机的提交队列获取一个或多个命令。命令可以是读取命令或写入命令。在操作724中,控制器或命令处理器读取一个或多个命令中的每个命令的标头以确定与一个或多个命令中的每个命令相关联的带宽QoS等级。命令的相关带宽QoS等级识别一个或多个命令中的每个命令的优先级。
在操作726中,控制器或命令处理器以非特定顺序全速执行一个或多个命令中的每个命令。命令可能以任何顺序执行,诸如从提交队列获取命令的顺序。
在操作728中,控制器或命令处理器将一个或多个执行的命令中的每个执行的命令的完成条目写入多个完成队列中的一个完成队列。多个完成队列中的每个完成队列可以与和一个或多个命令相同的带宽QoS等级相关联。例如,如果存储设备被设置为具有对应于五个定价层的五个带宽QoS等级,则可以利用五个对应的完成队列。因此,最低优先级命令(例如,等级1命令)将被全部发送到多个完成队列中的第一完成队列,并且最高优先级命令(例如,等级5命令)将被全部发送到多个完成队列中的第二完成队列。操作728可以合并方法710的操作718,以按照从高到低的优先级顺序将完成条目写入相应的完成队列。例如,在将较低优先级命令写入其相应的完成队列之前,可以将最高优先级命令发送到其相应的完成队列。
在操作732中,对于每个CQ头指针更新,控制器或命令处理器按照从高到低的优先级顺序通过对应中断信号一次或多次地将CQ头指针更新到主机。在完成条目按优先级顺序写入相应完成队列的实施方案中,一旦完成条目已满,或者在每个单独的完成条目被写入完成队列之后,CQ头指针和中断信号可以被发送到主机。例如,在一个实施方案中,如果对应于最高优先级命令的完成条目首先被写入对应的最高优先级完成队列,则一旦写入了对应于最高优先级命令的所有完成条目,就可以发送CQ头指针和中断信号。在另一个实施方案中,可以在按照从高到低的优先级顺序写入对应于完成队列的完成条目之后,立即将中断信号发送到主机。例如,从最高优先级完成队列和最高优先级命令开始,当每个单独的最高优先级命令条目被写入最高优先级完成队列时,可以紧接地发送多个中断信号。在另一个实施方案中,CQ头指针仅在所有完成条目被写入相应的完成队列之后才更新一次。然后,主机可以处理完成队列。例如,方法730然后可以在方法300的操作362和364之前。
通过以全速获取和执行一个或多个命令,存储设备可以接收最大信息量,这有助于向所有级别或层的SLA客户提供待递送的更可靠和准确的带宽QoS等级。附加地,可以减小存储设备的资源冲突,并且可以在不向主机确认数据移动的情况下转移数据。可以利用各种带宽QoS等级而不会减慢数据流速或消耗过多的带宽,从而导致向客户提供更精确和准确的带宽量。
此外,零售商可以在即时或预定地定制带宽QoS等级和参数。通过允许零售商确定带宽QoS等级和相关参数(诸如延迟时间),零售商可以根据需要精确地定制配置和设置,使得配置将最有利于个体零售商的需求。因此,可以根据SLA有效且可靠地限制带宽,同时释放存储设备资源并减少争用。
在一个实施方案中,操作存储设备的方法包括由存储设备的控制器执行与带宽服务质量等级相关联的命令。命令以全速执行。方法还包括延迟写入持续预定时间量的完成条目,该完成条目对应于所执行的命令。预定时间量基于相关带宽服务质量等级。方法包括触发将对应于所执行的命令的完成条目写入完成队列。在满足预定时间量之后触发将完成条目写入完成队列。
方法还可以包括在执行该命令之前接收发信号通知该命令存在于提交队列中的门铃。方法还可以包括在以全速执行命令之前从提交队列获取命令。命令的相关带宽服务质量等级可以确定命令的优先级。与较高优先级的带宽服务质量等级相比,较低优先级的带宽服务质量等级的预定时间量可以更长。预定时间量可以基于倒计时、递增计数或计时器。方法还可以包括延迟更新完成队列头指针以指向持续预定时间量的完成条目。预定时间量可以基于相关带宽服务质量等级。
在另一个实施方案中,存储设备包括一个或多个存储器设备和耦接到一个或多个存储器设备的控制器。控制器被配置成以全速从提交队列获取与带宽服务质量等级相关联的命令,执行命令,将对应于所执行的命令的完成条目写入完成队列,以及延迟发送指示完成队列已准备好被读取的中断信号。延迟基于与命令相关联的带宽服务质量等级。
命令的相关带宽服务质量等级可以确定命令的优先级。控制器可以包括设置页面,该设置页面确定一个或多个带宽服务质量等级。一个或多个带宽服务质量等级可以基于一天中的时间、客户编号、先前检索的命令的量和可用带宽中的一者或多者。与较高优先级的带宽服务质量等级相比,较低优先级的带宽服务质量等级的延迟可以更长。延迟还可以基于倒数计时器、所执行的命令数量的计数器、可用带宽、以及提交队列中的命令数量中的一者或多者。存储设备还可以包括耦接到控制器的带宽限制器。
在又一个实施方案中,存储系统包括主机设备和耦接到主机设备的存储设备。存储设备包括一个或多个存储器设备和耦接到一个或多个存储器设备的控制器。控制器被配置成以全速从提交队列获取多个命令,读取多个命令中的每个命令的标头以确定多个命令中的每个命令的相关带宽服务质量等级,以及基于多个命令中的每个命令的相关带宽服务质量等级,按照高优先级到低优先级的顺序执行多个命令。
控制器可以被进一步配置成在执行多个命令中的每个命令之后,将对应于多个命令中的每个命令的完成条目发送到多个完成队列。多个完成队列中的每个完成队列可以与不同带宽服务质量等级相关联。多个命令中的每个命令的相关带宽服务质量等级可以对应于与多个完成队列相关联的不同带宽服务质量等级。控制器可以被进一步配置成向主机设备发送一个或多个中断信号,以指示多个完成队列中的至少一个完成队列准备好被读取。控制器可以基于多个完成队列中的每个完成队列的相关带宽服务质量等级,按照高优先级到低优先级的顺序将一个或多个中断信号发送到主机设备。
虽然前述内容涉及本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求确定。
Claims (20)
1.一种操作存储设备的方法,包括:
由所述存储设备的控制器执行与带宽服务质量等级相关联的命令,其中所述命令以全速执行;
延迟写入持续预定时间量的完成条目,所述完成条目对应于所执行的命令,其中所述预定时间量基于相关带宽服务质量等级;以及
触发将对应于所执行的命令的所述完成条目写入完成队列,其中在满足所述预定时间量之后触发将所述完成条目写入所述完成队列。
2.根据权利要求1所述的方法,还包括在执行所述命令之前接收发信号通知所述命令存在于提交队列中的门铃。
3.根据权利要求2所述的方法,还包括在以全速执行所述命令之前从所述提交队列获取所述命令。
4.根据权利要求1所述的方法,其中所述命令的所述相关带宽服务质量等级确定所述命令的优先级。
5.根据权利要求4所述的方法,其中与较高优先级的带宽服务质量等级相比,较低优先级的带宽服务质量等级的预定时间量更长。
6.根据权利要求1所述的方法,其中所述预定时间量基于倒计时、递增计数或计时器。
7.根据权利要求1所述的方法,还包括延迟更新完成队列头指针以指向持续预定时间量的所述完成条目,其中所述预定时间量基于所述相关带宽服务质量等级。
8.一种存储设备,包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置成:
以全速从提交队列获取与带宽和服务质量等级相关联的命令;
执行所述命令;
将对应于所执行的命令的所述完成条目写入完成队列;以及
延迟发送指示所述完成队列已准备好被读取的中断信号,其中所述延迟基于与所述命令相关联的所述带宽和所述服务质量等级。
9.根据权利要求8所述的存储设备,其中所述命令的所述相关带宽和服务质量等级确定所述命令的所述优先级。
10.根据权利要求9所述的存储设备,其中所述控制器包括设置页面,所述设置页面确定一个或多个带宽服务质量等级。
11.根据权利要求10所述的存储设备,其中所述一个或多个带宽和服务质量等级基于一天中的时间、客户编号、先前检索的命令的量和可用带宽中的一者或多者。
12.根据权利要求10所述的存储设备,其中与较高优先级的带宽和服务质量等级相比,较低优先级的带宽服务质量等级的延迟更长。
13.根据权利要求8所述的存储设备,其中所述延迟还基于倒数计时器、所执行的命令数量的计数器、可用带宽、以及所述提交队列中的命令数量中的一者或多者。
14.根据权利要求8所述的存储设备,还包括耦接到所述控制器的带宽限制器。
15.一种存储系统,包括:
存储设备,其中所述存储设备包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置成:
以全速从提交队列获取多个命令;
读取所述多个命令中的每个命令的标头以确定所述多个命令中的每个命令的相关带宽服务质量等级;以及
基于所述多个命令中的每个命令的所述相关带宽服务质量等级,按照高优先级到低优先级的顺序执行所述多个命令。
16.根据权利要求15所述的存储系统,其中所述控制器被进一步配置成在执行所述多个命令中的每个命令之后,将对应于所述多个命令中的每个命令的完成条目发送到多个完成队列。
17.根据权利要求16所述的存储系统,其中所述多个完成队列中的每个完成队列与不同带宽服务质量等级相关联。
18.根据权利要求17所述的存储系统,其中所述多个命令中的每个命令的所述相关带宽服务质量等级对应于与所述多个完成队列相关联的不同带宽服务质量等级。
19.根据权利要求18所述的存储系统,其中所述控制器被进一步配置成向主机设备发送一个或多个中断信号,以指示所述多个完成队列中的至少一个完成队列准备好被读取。
20.根据权利要求19所述的存储系统,其中所述控制器基于所述多个完成队列中的每个完成队列的所述相关带宽服务质量等级,按照高优先级到低优先级的顺序将所述一个或多个中断信号发送到主机设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/189,963 | 2018-11-13 | ||
US16/189,963 US10635355B1 (en) | 2018-11-13 | 2018-11-13 | Bandwidth limiting in solid state drives |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176553A true CN111176553A (zh) | 2020-05-19 |
CN111176553B CN111176553B (zh) | 2023-06-27 |
Family
ID=70332681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910878488.0A Active CN111176553B (zh) | 2018-11-13 | 2019-09-18 | 固态驱动器中的带宽限制 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10635355B1 (zh) |
CN (1) | CN111176553B (zh) |
DE (1) | DE102019124450A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831227A (zh) * | 2020-07-07 | 2020-10-27 | 山东华芯半导体有限公司 | 一种nvme协议命令加速处理系统 |
CN114090477A (zh) * | 2020-06-29 | 2022-02-25 | 爱思开海力士有限公司 | 控制命令完成速率的系统和方法 |
CN114116556A (zh) * | 2021-10-29 | 2022-03-01 | 山东云海国创云计算装备产业创新中心有限公司 | 一种动态分配队列缓存的方法、系统、存储介质及设备 |
CN114721984A (zh) * | 2022-03-30 | 2022-07-08 | 湖南长城银河科技有限公司 | 面向低延时应用的sata接口数据传输方法和系统 |
Families Citing this family (11)
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 |
EP3842952B1 (en) * | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
KR20210080761A (ko) * | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
US11500559B2 (en) * | 2020-06-10 | 2022-11-15 | Western Digital Technologies, Inc. | Systems and methods for configuring a data storage device |
US11494098B2 (en) * | 2020-06-30 | 2022-11-08 | Western Digital Technologies, Inc. | Variable performance storage devices |
CN111949371B (zh) * | 2020-08-14 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种命令信息传输方法、系统、装置及可读存储介质 |
JP2022076620A (ja) | 2020-11-10 | 2022-05-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
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 |
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 (zh) * | 2023-03-24 | 2023-10-13 | 四川水利职业技术学院 | 基于多硬盘协调的数据存储方法、系统、终端及介质 |
Citations (7)
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 |
CN104205078A (zh) * | 2012-04-10 | 2014-12-10 | 英特尔公司 | 具有降低的延迟的远程直接存储器访问 |
CN106233269A (zh) * | 2014-04-14 | 2016-12-14 | 微软技术许可有限责任公司 | 在存储器控制器中的精细粒度带宽供应 |
CN106528461A (zh) * | 2015-09-14 | 2017-03-22 | 三星电子株式会社 | 储存设备及其中断生成方法 |
CN107346265A (zh) * | 2016-05-05 | 2017-11-14 | 北京忆恒创源科技有限公司 | 实现QoS的方法与装置 |
CN107924289A (zh) * | 2015-10-26 | 2018-04-17 | 株式会社日立制作所 | 计算机系统和访问控制方法 |
US20180176323A1 (en) * | 2014-10-23 | 2018-06-21 | Netapp, Inc. | System and Method for Managing Application Performance |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 |
US10481946B2 (en) * | 2014-05-12 | 2019-11-19 | Hitachi, Ltd. | Information-processing device, processing method thereof, and input/output device |
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 |
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 |
US20170322897A1 (en) * | 2016-05-06 | 2017-11-09 | Sandisk Technologies Inc. | Systems and methods for processing a submission queue |
KR102649324B1 (ko) * | 2016-05-19 | 2024-03-20 | 삼성전자주식회사 | 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법 |
CN107870820B (zh) | 2016-09-23 | 2023-10-13 | 北京忆恒创源科技股份有限公司 | 在固态驱动器中提供服务质量 |
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 |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10452278B2 (en) * | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10466903B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
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 |
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/de active Pending
- 2019-09-18 CN CN201910878488.0A patent/CN111176553B/zh active Active
-
2020
- 2020-03-27 US US16/832,402 patent/US11061620B2/en active Active
Patent Citations (7)
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 |
CN104205078A (zh) * | 2012-04-10 | 2014-12-10 | 英特尔公司 | 具有降低的延迟的远程直接存储器访问 |
CN106233269A (zh) * | 2014-04-14 | 2016-12-14 | 微软技术许可有限责任公司 | 在存储器控制器中的精细粒度带宽供应 |
US20180176323A1 (en) * | 2014-10-23 | 2018-06-21 | Netapp, Inc. | System and Method for Managing Application Performance |
CN106528461A (zh) * | 2015-09-14 | 2017-03-22 | 三星电子株式会社 | 储存设备及其中断生成方法 |
CN107924289A (zh) * | 2015-10-26 | 2018-04-17 | 株式会社日立制作所 | 计算机系统和访问控制方法 |
CN107346265A (zh) * | 2016-05-05 | 2017-11-14 | 北京忆恒创源科技有限公司 | 实现QoS的方法与装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090477A (zh) * | 2020-06-29 | 2022-02-25 | 爱思开海力士有限公司 | 控制命令完成速率的系统和方法 |
CN114090477B (zh) * | 2020-06-29 | 2024-03-05 | 爱思开海力士有限公司 | 控制命令完成速率的系统和方法 |
CN111831227A (zh) * | 2020-07-07 | 2020-10-27 | 山东华芯半导体有限公司 | 一种nvme协议命令加速处理系统 |
CN114116556A (zh) * | 2021-10-29 | 2022-03-01 | 山东云海国创云计算装备产业创新中心有限公司 | 一种动态分配队列缓存的方法、系统、存储介质及设备 |
CN114721984A (zh) * | 2022-03-30 | 2022-07-08 | 湖南长城银河科技有限公司 | 面向低延时应用的sata接口数据传输方法和系统 |
CN114721984B (zh) * | 2022-03-30 | 2024-03-26 | 湖南长城银河科技有限公司 | 面向低延时应用的sata接口数据传输方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11061620B2 (en) | 2021-07-13 |
CN111176553B (zh) | 2023-06-27 |
US20200225879A1 (en) | 2020-07-16 |
US10635355B1 (en) | 2020-04-28 |
DE102019124450A1 (de) | 2020-05-14 |
US20200151134A1 (en) | 2020-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176553B (zh) | 固态驱动器中的带宽限制 | |
US11416161B2 (en) | Zone formation for zoned namespaces | |
US11960725B2 (en) | NVMe controller memory manager providing CMB capability | |
US10042563B2 (en) | Segmenting read requests and interleaving segmented read and write requests to reduce latency and maximize throughput in a flash storage device | |
US10564857B2 (en) | System and method for QoS over NVMe virtualization platform using adaptive command fetching | |
US20200409601A1 (en) | Hold of Write Commands in Zoned Namespaces | |
US11797188B2 (en) | Solid state drive with multiplexed internal channel access during program data transfers | |
CN113179658A (zh) | 非顺序分区命名空间 | |
KR102663302B1 (ko) | Zns 드라이브에서의 데이터 취합 | |
KR102569435B1 (ko) | 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치 | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
CN111356991B (zh) | 逻辑块寻址范围冲突爬虫 | |
US20190324658A1 (en) | Dynamic maximization of drive throughput while maintaining latency qos | |
CN114995743A (zh) | 多个固态硬盘提交队列之间的公平共享 | |
CN114746835A (zh) | 用中间填充保持分区开放 | |
US20240168801A1 (en) | Ensuring quality of service in multi-tenant environment using sgls | |
US20240201847A1 (en) | Write Completion Pacing For Unbalanced Command Length | |
US11656798B1 (en) | Immediate partial host buffer fetching | |
US20240086108A1 (en) | Parallel fragmented sgl fetching for hiding host turnaround time | |
US20240053927A1 (en) | Bandwidth Balancing for a Single Namespace Tenant in Multi-Function Nonvolatile Memory Express Devices | |
WO2024035475A1 (en) | Write coalescing via hmb to optimize write performance | |
WO2023075858A1 (en) | Host buffers and data transfer management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |