CN110088725B - 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 - Google Patents
用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 Download PDFInfo
- Publication number
- CN110088725B CN110088725B CN201880005222.9A CN201880005222A CN110088725B CN 110088725 B CN110088725 B CN 110088725B CN 201880005222 A CN201880005222 A CN 201880005222A CN 110088725 B CN110088725 B CN 110088725B
- Authority
- CN
- China
- Prior art keywords
- command
- memory device
- priority
- commands
- memory
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 14
- 238000004891 communication Methods 0.000 claims description 67
- 230000000694 effects Effects 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 2
- 238000012546 transfer Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 29
- 230000004044 response Effects 0.000 description 22
- 239000000872 buffer Substances 0.000 description 19
- 239000000758 substrate Substances 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 101150101414 PRP1 gene Proteins 0.000 description 8
- 101100368710 Rattus norvegicus Tacstd2 gene Proteins 0.000 description 8
- 101100342406 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PRS1 gene Proteins 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 4
- 238000007616 round robin method Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011810 insulating material Substances 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/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
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了用于对提交队列和完成队列进行处理并做出仲裁的系统和方法。NVM Express(NVMe)实现配对的提交队列和完成队列机制,其中主机设备上的主机软件将命令放置到提交队列中。存储器设备通过各种阶段来处理命令,该各种阶段包括获取、处理、发布完成消息以及发送对主机的中断。存储器设备可基于所确定的命令的优先级来处理命令。例如,存储器设备可确定在获取命令之后执行阶段的优先级。作为另一示例,存储器设备可基于与命令相关联的优先级来执行内部命令选择。以这种方式,可基于存储器设备或主机设备的优先级需求来实行命令。
Description
相关申请的引用
本申请要求2017年3月24日提交的美国申请15/468,620和2017年5月3日提交的美国申请15/585,717的优先权,这两个申请据此全文以引用方式并入本文。
背景技术
NVM Express(NVMe)是访问经由PCI Express(PCIe)总线附接的非易失性存储介质的标准。NVMe可与多种非易失性存储介质诸如固态驱动器(SSD)一起使用。NVMe的一个焦点涉及主机设备(其可访问和/或写入非易失性存储介质)与存储器设备(其包括非易失性存储介质)之间的I/O通信。在这一点上,NVMe实现配对的提交队列和完成队列机制,其中主机设备上的主机软件将命令放置到提交队列中。存储器设备控制器将完成放置到相关联的完成队列上。
附图说明
并入本说明书中并且构成本说明书的一部分的附图示出了本发明的各个方面,并与说明书一起用于解释其原理。在方便的情况下,相同的参考号将在整个附图中用来指代相同或相似的元件。
图1A是示例性非易失性存储器系统的框图。
图1B是包括多个非易失性存储器系统和主机的存储模块的框图。
图1C是分级存储系统的框图。
图2A是图1A的非易失性存储器系统的控制器的示例性部件的框图。
图2B是图1A的非易失性存储器系统的非易失性存储器管芯的示例性部件的框图。
图3是主机设备和NVMe控制器的框图,示出了主机设备和存储器设备请求和处理NVMe命令的序列。
图4是主机设备和存储器设备的其他示例性部件的框图。
图5是图4中所示的命令排队和命令调度器的框图。
图6是在从提交队列获取命令之后区分命令处理的优先级的第一示例的流程图。
图7是在从提交队列获取命令之后区分命令处理的优先级的第二示例的流程图。
图8是通过确定与多个PRP请求相关联的命令的优先级来处理多个PRP请求的流程图。
图9是通过确定与多个主机传输请求相关联的命令的优先级来处理多个主机传输请求的流程图。
图10是通过确定多个完成队列的优先级来管理多个完成队列的流程图。
图11是用于通过确定多个完成队列的优先级来确定与多个完成队列相关联的完成发布中的哪些完成发布发布到完成队列的流程图。
图12是用于确定不同操作阶段的命令之间的优先级的流程图。
图13是用于确定主机设备和存储器设备之间的通信接口的一条或多条路径中的通信的优先级的流程图。
具体实施方式
概述
在NVMe中,命令的处理遵循阶段序列。如下文关于图3更详细讨论的,在第一阶段中,主机设备将命令放置在提交队列中,随后通知存储器设备命令已被放置在提交队列中。响应于主机设备的通知,存储器设备从提交队列获取命令。随后,存储器设备处理命令(例如,存储器设备执行内部命令选择、实行命令(诸如执行写入或读取)等)。在处理命令之后,存储器设备在完成队列上放置指示命令实行已经完成的条目。然后,存储器设备生成对主机设备的中断,指示条目已被放置在完成队列上。主机设备审核完成队列上的条目,然后通知存储器设备完成队列上的条目已被审核。
主机设备可配置多个提交队列,并且可将命令放置在相应提交队列上。在这一点上,存储器设备可使用一个或多个仲裁方案以便确定从多个提交队列获取命令的顺序。一种类型的提交队列为管理提交队列,其包括对存储器设备的管理命令。示例性管理命令包括但不限于:获得日志页面(例如,从NVMe设备检索NVMe日志页面并提供重新调整的结构);识别(例如,返回描述有关NVMe子系统、控制器或命名空间的信息的数据缓冲区)、获得特征(例如,检索所指定的特征的属性)和设置特征(例如,指定所指示的特征的属性)。列出的管理命令仅用于说明目的。
可为管理提交队列分配高优先级(或相对于其他提交队列的最高优先级)。具体地,可为其他提交队列分配较低优先级,诸如以下各项(按优先级递减的顺序):紧急;高优先级;中优先级;以及低优先级。其他提交队列上的命令可涉及数据传输,诸如读取命令(例如,从闪存存储器读取数据)和写入命令(例如,将数据写入闪存存储器)。主机设备可在提交队列的初始化时为提交队列分配相应优先级。
在确定从提交队列获取哪些命令时,存储器设备可使用静态仲裁算法诸如循环算法或加权循环算法,以便确定从多个提交队列获取命令的顺序。通过循环法,存储器设备以对称方式选择放置在不同提交队列中的命令。例如,无论提交队列的优先级如何,循环法都以预定顺序从不同的队列中获取命令。通过加权循环法,存储器设备以非对称方式选择放置在不同提交队列中的命令,其中每个提交队列都具有在初始化阶段由主机设备分配的它自己的优先级。例如,加权循环法可确定在管理提交队列或提交队列中是否存在指定为紧急的命令。如果不是,则加权循环法可对“高优先级”、“中优先级”和“低优先级”提交队列上的命令进行加权,以确定要获取哪些命令(例如,“高优先级”提交队列上的命令比“中优先级”或“低优先级”提交队列上的命令更高地加权)。另选地,存储器设备可使用静态仲裁算法,其中某些队列被赋予较高优先级。例如,从管理提交队列中获取命令可比从未指定为管理队列的其他提交队列中获取命令被赋予更高优先级,因为管理提交被分配了最高优先级。
在一个实施方式中,存储器设备可确定获取命令后的阶段的执行的优先级。如上面所讨论的,获取后的示例性阶段包括:处理命令(例如,执行内部命令选择、实行命令诸如数据传输)、发布完成消息;以及生成对主机设备的中断,指示条目已被放置在完成队列上。获取后列出的阶段仅用于说明目的。设想了另外的或不同的阶段。存储器设备可基于一个或多个标准来确定命令的优先级(或用于执行一个或多个阶段),该一个或多个标准包括以下任何一个、任何组合或全部:(1)相应命令的优先级;(2)存储器设备的内件(例如,管芯的状态或存储器设备的处理能力,如下面所讨论的);(3)功率消耗;(4)主机设备和存储器设备之间的通信接口的状态(例如,入口路径和/或出口路径的状态);以及(5)实行的命令阶段。
存储器设备可以几种方式中的一种来确定命令的优先级。在第一方式中,可基于在其上放置命令的相应提交队列和/或基于在其上放置指示命令完成的条目的相应完成队列来确定优先级。在一个实施方式中,在初始化特定提交队列时,主机设备可为特定提交队列分配优先级。随后,存储器设备可确定在其上放置命令的特定提交队列,并为相应命令分配特定提交队列的优先级。例如,主机设备可在初始化时配置管理提交队列并分配最高优先级,如上面所讨论的。在另一个具体实施方式中,存储器设备可基于与相应完成队列相关联的提交队列的优先级来确定相应完成队列的优先级。
在第二方式中,存储器设备可基于命令的一个或多个方面来确定命令的优先级。在第一示例中,存储器设备可基于相应命令内的地址(诸如逻辑块地址LBA)(或地址范围(诸如LBA范围))来确定相应命令的优先级。例如,存储器设备可为包括存储器设备频繁访问的地址(或地址范围)的命令,而不是为具有存储器设备不太频繁地访问的地址(或地址范围)的另一命令分配较高优先级。在这一点上,可更快速地处理频繁访问。在第二示例中,存储器设备可基于命令的类型来确定命令的优先级。例如,强制单元访问(FUA)命令是指示存储器设备将数据存储到闪存存储器(而不是将数据存储在高速缓存中)的命令。在这一点上,存储器设备可将FUA命令视为紧急的,因为存储器设备无法将条目发布到此命令的完成队列,直到数据被存储在闪存存储器中。在这一点上,存储器设备控制器可包括将命令的类型与紧急程度相关联的表。在第三示例中,存储器设备可基于命令的数据传输的大小来确定命令的优先级。具体地,存储器设备可区分指示从闪存存储器读取较少量数据(例如,低于预定量)或将较少量数据写入闪存存储器的命令的优先级。在第四示例中,存储器设备可分析与命令相关联的至少一个方面的随机性,并且基于所分析的随机性来确定命令的优先级。在具体示例中,存储器设备可分析受到读取命令的存储器位置(或位置集)。响应于确定存储器位置(或位置集)是随机的(无来自该存储器位置的读数模式),存储器设备可为该命令分配较高优先级。因此,在一个实施方式中,命令的较高随机性可指示对主机设备的较大重要性,并且因此与由存储器设备分配的较高优先级相关。
如上面所讨论的,一个获取后阶段为内部命令选择,其可包括:(1)命令排队;以及(2)命令调度。在一个实施方式中,存储器设备基于存储器设备的内件(诸如存储器设备的内部状态机和/或闪存管芯的内部状态)来执行内部命令选择。具体地,闪存存储器的每个管芯都可处于几种状态之一,并且可能不可用于执行操作。例如,在数据被写入闪存管芯时,闪存管芯处于编程状态并且无法访问。同样,如果闪存管芯正在执行垃圾收集,那么闪存管芯可能不可用。在这一点上,命令诸如读取命令或写入命令的实行取决于特定管芯的状态。因此,存储器设备控制器可在可用的闪存管芯上实行命令并在不可用的闪存管芯上延迟实行。在另一个实施方式中,存储器设备控制器可基于存储器设备控制器的处理能力来选择操作阶段。如本文所讨论的,从闪存存储器读取还可包括错误校正、加密或解密等。这些操作可以是计算密集型的。因此,根据存储器设备控制器的当前处理能力,存储器设备控制器可选择某些操作阶段。例如,响应于确定存储器设备控制器的当前处理能力减小,存储器设备控制器可选择计算密集度较低的操作阶段(诸如向主机设备发送读取请求)。相反,响应于确定存储器设备控制器具有可用处理能力,存储器设备控制器可选择计算密集度较高的操作阶段(诸如从闪存存储器读取数据、执行错误校正和解密)。在再一个实施方式中,存储器设备控制器可在处于相同相位的命令之间做出仲裁。例如,命令集可处于实行阶段,诸如执行对闪存存储器的写入或读取。存储器设备控制器可区分在特定阶段(诸如实行阶段)中操作的所有命令的优先级。另选地,存储器设备控制器可区分在特定阶段中操作的特定类型的命令(诸如实行阶段中的所有读取命令或实行阶段中的所有写入命令)的优先级。
在另一个实施方式中,存储器设备可基于与命令相关联的优先级来执行内部命令选择。如上面所讨论的,可通过若干方式中的一种来确定优先级,包括例如从其获取命令的提交队列的优先级、命令的类型或命令的地址范围。在再一个实施方式中,存储器可基于与命令相关联的优先级和存储器设备的内件(例如,存储器设备的内部状态机和/或闪存管芯的内部状态)两者来执行内部命令选择。
此外,存储器设备可基于与执行处理命令的各阶段相关联的功率消耗来确定优先级。如上面所讨论的,各阶段包括获取命令、处理命令、发布完成消息以及生成中断。各阶段诸如处理命令可能需要更多的功率。在某些时间段期间,存储器设备可能希望节省功率,并且因此可延迟执行某些动作诸如写入闪存存储器,以便节省功率。同样,存储器设备可具有存储器设备被指示不超过的功率消耗限制。在这一点上,存储器设备可执行命令的阶段,以便不超过分配的存储器消耗准则。
此外,存储器设备可基于存储器设备和主机设备之间的通信接口的状态(例如,入口路径和/或出口路径的状态)来确定优先级。在一个实施方式中,主机设备和存储器设备之间的通信接口是单工的,其中向存储器设备的通信和从存储器设备的通信在同一路径上。在另一个实施方式中,主机设备和存储器设备之间的通信接口是全双工的并且包括入口路径(由此存储器设备从主机设备接收通信,诸如读取请求或写入请求)和出口路径(由此存储器设备向主机设备发送通信,诸如读取请求或写入请求)。在该实施方式中,入口路径和出口路径彼此独立地工作。命令的阶段可能需要经由通信接口进行通信(经由单个路径或经由入口路径或出口路径)。如下面所讨论的,存储器设备可确定在处理不同命令时使用通信接口的需要(在单工配置或双工配置中),并基于优先级和需要来选择处理命令的顺序。
在单工示例中,存储器设备可在访问通信接口的所有命令之间做出仲裁,并区分命令的优先级(或在处理命令时区分活动的优先级),如下面进一步讨论的。在双工示例中,存储器设备可在所有命令之间做出仲裁,诸如在处理命令时导致入口路径或出口路径通信的不同活动之间做出仲裁,并区分这些命令的优先级(诸如在处理命令时区分活动的优先级)。如将在下文更详细讨论的,命令的处理可包括经由出口路径从存储器设备到主机设备的通信,并且可包括经由入口路径从主机设备到存储器设备的通信。此外,来自存储器设备的出口通信可提示主机设备向存储器设备发送入口通信。
作为一个示例,主机设备可发出写入命令(例如,供存储器设备将数据写入存储器设备上的闪存存储器)。为了使存储器设备获得写入闪存存储器的数据,存储器设备经由出口路径向主机设备发送PCIe读取请求。响应于PCIe读取请求,主机设备经由入口路径将数据(将由存储器设备写入闪存存储器)发送到存储器设备。在这一点上,响应于存储器设备确定诸如入口路径的路径繁忙,存储器设备可相应地修改操作,诸如延迟PCIe读取请求(这导致经由入口路径的通信),如下文更详细地讨论。作为另一示例,存储器设备,其从驻留在主机设备中的SQ获取命令,使用出口路径以使用TLP读取请求从SQ读取命令。作为再一示例,主机设备,其写入SQ门铃寄存器,使用入口路径。存储器设备可确定出口路径的状态(例如,出口路径的活动水平),以确定要执行哪个阶段。具体地,响应于存储器设备确定出口路径具有高水平的活动,存储器设备可区分不需要使用入口路径的操作的优先级。同样,响应于存储器设备确定出口路径具有高水平的活动,存储器设备可区分不需要使用出口路径的操作的优先级,如下面更详细讨论。
确定优先级的再一个标准包括实行的命令阶段。除了在具体阶段内的命令(诸如处理命令;在完成队列上放置条目;中断主机设备;等等)之间做出仲裁之外,存储器设备控制器还可在与主机设备通信时(例如,访问主机设备上的存储器)在不同阶段之间做出仲裁。例如,PRP获取、数据传输和完成发布可同时向主机设备请求出口总线。与基于优先级确定要在同一阶段内执行哪些命令类似,仲裁逻辑还可在此类场景中考虑命令的优先级。例如,具体PRP获取命令可具有比完成发布命令更高的优先级。在这一点上,具体PRP获取命令可优先于完成发布命令(并经由出口总线传输)。
更具体地,命令经历由存储器设备执行的各种阶段,诸如获取、实行、将条目发布到完成队列、以及发送对主机设备的中断。在这一点上,存储器设备可在各阶段具有不同的命令。存储器设备可分析各阶段中的命令,并且可基于具体命令的特定阶段或基于不同命令的阶段的比较来区分存储器设备要执行的动作的优先级。在第一实施方式中,存储器设备可包括与不同阶段相关联的优先级。作为一个示例,存储器设备可按以下顺序(从最高优先级到最低优先级)区分阶段的优先级:命令获取;PRP获取;数据传输;完成队列发布;以及中断通知。作为另一示例,完成队列发布和中断通知可具有比命令获取、PRP获取和数据传输更高的优先级。在另一个实施方式中,存储器设备可区分实行后的命令(例如,将条目发布到CQ或发送中断)的优先级,因为主机设备可能正在等待这些动作。在第二实施方式中,存储器设备可通过尝试平衡各阶段的命令来区分这些命令的优先级。在一个实例中,存储器设备可在获取后阶段具有大部分命令,并且因此优先获取命令以便平衡阶段。在另一实例中,存储器设备可具有过量的获取命令(数量大于第一预定量)。在这一点上,可区分诸如获取后阶段的其他阶段的优先级,直到获取阶段处的命令的数量已降低至低于第二预定量。在第三实施方式中,存储器设备可基于命令的类型或与命令相关的过程类型(例如,读取PCIe请求或写入PCIe请求)来确定阶段的优先级。在第四实施方式中,存储器设备可基于存储器设备资源的分配(例如,DRAM中的缓冲存储器的使用、要传输到主机设备的数据量、或者存储器设备执行的处理量)来确定阶段的优先级。在第五实施方式中,存储器设备可基于命令的处理深度来确定阶段的优先级,其中进一步处理的命令接收较高优先级,如下面更详细地讨论。
在实践中,从多个提交队列获取命令。获取的命令按先进先出(FIFO)放置在单个队列中。在不进一步重新排序的情况下,可在该FIFO序列中实行命令。另选地,可基于优先级对命令进行重新排序,然后基于重新排序来实行命令。作为一个示例,存储器设备控制器可包括单个重新排序队列,用于对来自FIFO队列的命令进行重新排序。作为另一示例,存储器设备控制器可包括用于重新排序的多个具体队列。在任一示例中,可基于优先级来对命令进行重新排序。
示例性具体队列包括:管理提交命令队列(其中放置了来自管理提交队列的命令);紧急提交命令队列;高优先级提交命令队列;中优先级提交命令队列;以及低优先级提交命令队列。设想了其他具体队列。
另选地或除此之外,可使用以下命令队列:一个或多个读取命令队列(其中放置来自提交队列的读取命令);一个或多个写入队列(其中放置来自提交队列的写入命令);一个或多个物理区域页面(PRP)队列;等。在读取队列的情况下,可能存在列出所有读取命令的单个读取队列。另选地,可存在依赖于读取命令的一个或多个方面的多个读取队列。作为一个示例,多个读取队列可基于要读取的数据量。具体地,针对较小读取(诸如4K或更少)的命令可放置在较小读取队列中,并且针对较大读取(诸如大于4K)的命令可放置在较大读取队列中。在这一点上,来自较小读取队列的命令的实行可优先于来自较大读取队列的命令的实行。作为另一示例,多个读取队列可基于要读取的地址(或地址范围)。具体地,频繁读取的地址(或地址范围)可放置在频繁读取的队列中,而不频繁读取的地址(或地址范围)可放置在不频繁读取的队列中。以这种方式,来自频繁读取的队列的命令的实行可优先于来自不频繁读取的队列的命令的实行。
类似地,在写入队列的情况下,可能存在列出所有写入命令的单个写入队列。另选地,可存在依赖于写入命令的一个或多个方面的多个写入队列。例如,多个写入队列可基于要写入的数据量,或者对于地址(或地址范围)的频繁写入/不频繁写入。因此,关于选择实行哪个命令的仲裁可基于与命令相关联的优先级。
在PRP获取命令的情况下,为了提高性能,存储器设备可并行地实行若干命令。某些NVMe命令(诸如读取命令和写入命令)可包括指向主机设备存储器的一部分的指针。例如,读取命令可包括指向PRP列表的指针,其中PRP列表指示存储器设备应该在存储器中存储响应于读取命令而读取的数据的部分。作为另一示例,写入命令可包括指向PRP列表的指针,其中PRP列表指示存储器设备应该在存储器中读取存储在存储器设备的闪存存储器上的数据的部分。在处理命令时,存储器设备可通过向主机设备发送一个或多个PRP获取请求来获取PRP列表。在这一点上,存储器设备可发送与不同NVMe命令相关联的若干PRP获取请求。如下面更详细地讨论,在确定何时实行具体PRP获取请求时,可考虑与具体PRP获取请求相关联的命令的优先级。
在实行命令之后,存储器设备执行一个或多个实行后阶段(诸如将条目发布到完成队列并发送对主机设备的中断,通知条目被发布在完成队列上)。在一个实施方式中,存储器设备可基于命令的优先级来执行实行后阶段中的一个或多个。
例如,完成发布和中断发布可并行发生。因此,当确定执行完成队列发布和/或中断主机设备的发布的顺序时,可考虑命令的优先级。例如,一个或多个完成队列可具有相关联的优先级。如下面更详细地讨论,在提交队列和完成队列之间通常存在1:1映射。另选地,提交队列和完成队列之间的映射并非1:1。在1:1映射的实例中,在一个实施方式中,完成队列的优先级等于相关的提交队列。当若干提交队列与同一完成队列相关联时,完成队列的优先级可能等于与此完成队列关联的最高提交队列优先级。当确定何时发布对主机设备的中断时,可考虑对完成队列优先级进行类似的分析。
实施方案
以下实施方案描述了用于处理命令的非易失性存储器设备和相关方法。在转向这些和其他实施方案之前,以下段落提供了对可与这些实施方案一起使用的示例性非易失性存储器设备和存储模块的讨论。当然,这些仅仅是示例,并且可使用其他合适类型的非易失性存储器设备和/或存储模块。
图1A是示出非易失性存储器设备100的框图。非易失性存储器设备100可包括控制器102和可由一个或多个非易失性存储器管芯104构成的非易失性存储器。如本文所述,术语管芯指的是在单个半导体基板上形成的一组非易失性存储器单元,以及用于管理那些非易失性存储器单元的物理操作的相关联的电路。控制器102可与主机设备或主机系统进行交互,并且将用于读取、编程和擦除操作的命令序列传输到非易失性存储器管芯104。如下面所讨论的,命令可包括逻辑地址和/或物理地址。
控制器102(可以是闪存存储器控制器)可以采用以下形式:例如处理电路、微处理器或处理器,以及存储可由(微)处理器执行的计算机可读程序代码的计算机可读介质(例如,软件或固件)、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器。控制器102可以配置有硬件和/或固件,以执行下面描述并在流程图中示出的各种功能。另外,示出为控制器内部的一些部件也可以存储在控制器外部,并且可以使用其他部件。此外,短语“操作地与…通信”可能意味着直接或间接地(有线或无线)与一个或多个部件通信或通过一个或多个部件通信,其可在本文中示出或未示出。
如本文所用,闪存存储器控制器是管理存储在闪存存储器上的数据并与主机诸如计算机或电子设备通信的设备。除了这里描述的特定功能外,闪存存储器控制器可以具有各种功能。例如,闪存存储器控制器可以对闪存存储器进行格式化以确保存储器正确操作,标出坏的闪存存储器单元,并且分配备用单元以替代将来的故障单元。备用单元中的部分备用单元可以用来容纳固件以操作闪存存储器控制器并实现其他特征。固件的一个示例为闪存转换层。在操作中,当主机设备需要从闪存存储器读取数据或向闪存存储器写入数据时,它将与闪存存储器控制器通信。在一个实施方案中,如果主机设备提供要读取/写入数据的逻辑地址,则闪存存储器控制器可以将从主机接收的逻辑地址转换为闪存存储器中的物理地址。闪存存储器控制器还可以执行各种存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗否则将被重复写入的特定存储器块)和垃圾收集(在块已满之后,仅将有效的数据页面移动到新块,因此可以擦除并重用完整块)。
控制器102和非易失性存储器管芯104之间的接口可以是任何合适的闪存接口,诸如切换模式200、400或800。在一个实施方案中,存储器设备100可为基于卡的系统,诸如安全数字(SD)卡或微型安全数字(微SD)卡。在另选的实施方案中,非易失性存储器设备100可为嵌入式存储器设备的一部分。
虽然在图1A所示的示例中,非易失性存储器设备100可包括控制器102和非易失性存储器管芯104之间的单个信道,但是本文描述的主题不限于具有单个存储器信道。例如,在一些NAND存储器设备架构中,控制器和NAND存储器管芯104之间存在2、4、8个或更多个NAND信道,具体取决于控制器的能力。在本文描述的任何实施方案中,即使在附图中示出单个信道,控制器和存储器管芯104之间也可以存在多于一个信道。如下面更详细讨论的,在主机设备和存储器设备之间可存在单个通信信道。单个通信信道可以是单工或双工的。在单工实施方式中,向和从存储器设备的通信在同一信道上。在这一点上,存储器设备可确定哪个通信接收到最高优先级。在双工实施方式中,通信接口具有入口路径(进入存储器设备)和出口路径(来自存储器设备)。如上面所讨论的,存储器设备可分别针对入口路径和出口路径确定通信的优先级。
图1B示出了包括多个非易失性存储器设备100的存储模块200。因此,存储模块200可包括存储控制器202,该存储控制器与主机220以及包括多个非易失性存储器设备100的存储系统204交互。存储控制器202和非易失性存储器设备100之间的接口可为总线接口,诸如作为示例的串行高级技术附件(SATA)、外围组件快速互连(PCIe)接口、嵌入式多媒体卡(eMMC)接口、SD接口或通用串行总线(USB)接口。在一个实施方案中,存储系统200可为固态驱动器(SSD),诸如在便携式计算设备诸如膝上型计算机和平板电脑、以及移动电话中存在的。
图1C是示出分级存储系统250的框图。分级存储系统250可包括多个存储控制器202,该多个存储控制器中的每个存储控制器控制相应存储系统204。主机系统252可经由总线接口访问分级存储系统250内的存储器。作为示例,示例性总线接口可包括非易失性存储器express(NVMe)、以太网光纤信道(FCoE)接口、SD接口、USB接口、SATA接口、PCIe接口或eMMC接口。在一个实施方案中,图1C所示的分级存储系统250可为机架可安装的大容量存储系统,该机架可安装的大容量存储系统可由多个主机计算机访问,诸如在数据中心中或在需要大容量存储的其他位置中可以找到。在一个实施方案中,主机系统252可包括主机220中描述的功能。
图2A是更详细地示出控制器102的示例性部件的框图。控制器102可包括与主机进行交互的前端模块108、与非易失性存储器管芯104进行交互的后端模块110、以及执行非易失性存储器设备100的各种功能的各种其他模块。一般来讲,模块可以是硬件或硬件和软件的组合。例如,每个模块可包括专用集成电路(ASIC),现场可编程门阵列(FPGA),电路,数字逻辑电路,模拟电路,离散电路、门或任何其他类型的硬件的组合,或者其组合。除此之外或另选地,每个模块都可包括存储器硬件,该存储器硬件包括可用处理器或处理器电路执行以实现模块的特征中的一个或多个的指令。当模块中的任一个包括存储器的包括可用处理器执行的指令的部分时,模块可包括,也可不包括处理器。在一些示例中,每个模块可仅为存储器的包括可用处理器执行以实现对应模块的特征的指令的部分,而模块不包括任何其他硬件。由于每个模块都包括至少一些硬件,因此即使在所包括的硬件包括软件时,每个模块也可互换地称为硬件模块。
控制器102可包括缓冲区管理器/总线控制模块114,该缓冲区管理器/总线控制模块管理随机存取存储器(RAM)116中的缓冲区并控制内部总线仲裁以在控制器102的内部通信总线117上进行通信。只读存储器(ROM)118可存储和/或访问系统引导代码。虽然图2A所示为与控制器102分开定位,但在其他实施方案中,RAM 116和ROM 118中的一者或两者可位于控制器102内。在其他实施方案中,RAM 116和ROM 118的部分可以位于控制器102内和控制器102外部。此外,在一些实施方式中,控制器102、RAM 116和ROM 118可以位于单独的半导体管芯上。如下面所讨论的,在一个实施方式中,提交队列和完成队列可存储在控制器存储器缓冲区中,该控制器存储器缓冲区可容纳在RAM 116中。
另外,前端模块108可包括提供与主机或下一级存储控制器的电接口的主机接口120和物理层接口(PHY)122。主机接口120类型的选择可取决于所使用的存储器的类型。主机接口120的示例性类型可包括但不限于SATA、SATA Express、SAS、光纤信道、USB、PCIe和NVMe。主机接口120通常可有利于传输数据、控制信号和定时信号。
后端模块110可包括错误校正控制器(ECC)引擎124,该ECC引擎对从主机接收的数据字节进行编码,并且对从非易失性存储器管芯104读取的数据字节进行解码和错误校正。如下面更详细讨论的,ECC引擎可为可调的,诸如基于模式生成不同量的ECC数据(例如,在正常编程模式下生成正常模式ECC数据并在突发编程模式下生成突发模式ECC数据,其中突发模式ECC数据大于正常模式ECC数据)。后端模块110还可包括命令定序器126,该命令定序器生成命令序列,诸如编程命令序列、读取命令序列和擦除命令序列,以传输到非易失性存储器管芯104。另外,后端模块110可包括RAID(独立驱动器冗余阵列)模块128,该RAID模块管理RAID奇偶校验的生成和失败数据的恢复。RAID奇偶校验可用作写入到非易失性存储器设备100中的数据的附加级的完整性保护。在一些情况下,RAID模块128可以是ECC引擎124的一部分。存储器接口130向非易失性存储器管芯104提供命令序列,并且从非易失性存储器管芯104接收状态信息。连同命令序列和状态信息,可通过存储器接口130传送要编程到非易失性存储器管芯104中和从非易失性存储器管芯读取的数据。在一个实施方案中,存储器接口130可为双倍数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制层132可控制后端模块110的总体操作。
因此,控制器102可包括用于管理存储系统100的操作的一个或多个管理表。一种类型的管理表包括逻辑地址到物理地址映射表。逻辑地址到物理地址映射表的大小可随着存储器大小而增大。在这一点上,用于高容量存储设备(例如,大于32G)的逻辑地址到物理地址映射表可能太大而不能存储在SRAM中,并且可与用户和主机数据一起存储在非易失性存储器104中。因此,对非易失性存储器104的访问可首先要求从非易失性存储器104读取逻辑地址到物理地址映射表。
图2A中所示的非易失性存储器设备100的附加模块可包括媒体管理层138,该媒体管理层执行非易失性存储器管芯104的存储器单元的损耗均衡。非易失性存储器设备100还可包括其他分立部件140,诸如外部电气接口、外部RAM、电阻器、电容器或可与控制器102进行交互的其他部件。在另选的实施方案中,RAID模块128、媒体管理层138和缓冲区管理/总线控制器114的一者或多者是控制器102中可能不需要的任选部件。
图2A中所示的非易失性存储器设备100的其他模块可包括优先级确定模块111、命令获取模块112、以及命令获取后处理模块113。这些模块被示为与非易失性存储器设备100的其他模块分开,但在其他配置中,它们中的一个或多个可以是任何其他模块的一部分。
如下面更详细讨论的,存储器设备可使用优先级确定模块111来确定命令的优先级。例如,优先级确定模块111可分析命令本身或从中获取命令的提交队列,以便确定命令的优先级。另外,命令获取模块112可包括用于确定从各种提交队列获取命令的顺序的逻辑。此外,命令获取后处理模块113可基于所确定的命令的优先级来确定在获取之后命令的处理,如下面更详细地讨论。
图2B是更详细地示出非易失性存储器管芯104的示例性部件的框图。非易失性存储器管芯104可包括非易失性存储器阵列142。非易失性存储器阵列142可包括多个非易失性存储器元件或单元,各自被配置为存储一个或多个数据位。非易失性存储器元件或单元可以是任何合适的非易失性存储器单元,包括采用二维和/或三维配置的NAND闪存存储器单元和/或NOR闪存存储器单元。存储器单元可采用固态(例如,闪存)存储器单元的形式,并且可以是一次可编程、几次可编程或多次可编程的。此外,存储器元件或单元可被配置为每个单元存储单个数据位的单级单元(SLC)、每个单元存储多个数据位的多级单元(MLC)、或它们的组合。对于一些示例性配置,多级单元(MLC)可包括每单元存储三个数据位的三级单元(TLS)。
此外,闪存存储器单元可在阵列142中包括具有浮栅和控制栅的浮栅晶体管(FGT)。浮栅由绝缘体或绝缘材料包围,有助于保持浮栅中的电荷。浮栅内部的电荷的存在或不存在可引起FGT的阈值电压的偏移,该阈值电压用于区分逻辑电平。也就是说,每个FGT的阈值电压可指示存储在存储器单元中的数据。在下文中,FGT、存储器元件和存储器单元可互换使用以指同一物理实体。
存储器单元可根据存储器单元的行和列的矩阵状结构设置在存储器阵列142中。在行和列的交叉处为FGT(或存储器单元)。FGT列可被称为串。串或列中的FGT可串联电连接。FGT行可被称为页面。页面或行中的FGT的控制栅可电连接在一起。
存储器阵列142还可包括连接到FGT的字线和位线。FGT的每个页面都耦接到字线。具体地,每个字线都可耦接到页面中的FGT的控制栅。此外,FGT的每个串都可耦接到位线。此外,单个串可跨越多个字线,并且串中的FGT的数量可等于块中的页面的数量。
非易失性存储器管芯104还可包括页面缓冲区或数据高速缓存144,其从存储器阵列142感测和/或将被编程到存储器阵列的数据。非易失性存储器管芯104还可包括行地址解码器146和列地址解码器148。当从存储器阵列146中的存储器单元读取或向其写入数据时,行地址解码器142可对行地址解码并选择存储器阵列142中的特定字线。列地址解码器148可对列地址解码以选择存储器阵列144中的要电耦接到数据高速缓存142的特定位线组。
此外,非易失性存储器管芯104可包括外围电路150。外围电路150可包括提供状态信息到控制器102的状态机151。状态机151的其他功能在下面进一步详细描述。
图3示出了用于经由NVMe标准实行命令的步骤序列。如图所示,主机设备300包括主机存储器302,并且存储器设备包括控制器,诸如NVMe控制器310。在一个实施方式中,主机存储器302包括提交队列304和完成队列306。在实践中,在初始化阶段,主机设备300创建一个或多个提交队列和一个或多个对应的完成队列。如上面所讨论的,在一个实施方式中,提交队列和完成队列可具有1:1相关性,而在另一个实施方式中,提交队列和完成队列不具有1:1相关性。
对于初始化,主机设备300可通过向存储器设备发送诸如每个队列的基地址的信息来向存储器设备通知提交队列和完成队列。在这一点上,每个提交队列都具有对应的完成队列。当提交队列和完成队列驻留在主机设备中时,主机设备向存储器设备发送信息,以便存储器设备确定主机设备中的提交队列和完成队列的位置。在具体实施方式中,主机设备发送指示创建提交队列和完成队列的命令。该命令可包括PRP1指针,该指针是指向主机设备上的具体提交队列或具体完成队列的位置的列表的指针。在实践中,存储器设备使用PRP1来发送TLP读取请求以便获得PRP列表,并将PRP列表存储在存储器设备中以确定主机设备内的存储器位置,以供将来在从具体提交队列读取或写入到具体完成队列的命令中使用。另选地,主机设备300可指示存储器设备在驻留在存储器设备中的存储器(诸如控制器存储器缓冲区)中创建提交队列和对应的完成队列。
提交队列304可基于环形缓冲区,诸如图3所示,具有头部指针和尾部指针。在创建提交队列并向存储器设备通知所创建的提交队列之后,主机设备300可将命令(或若干命令)写入提交队列。这在图3中被指示为步骤1,标记为“队列命令”。具体地,图3示出了将四个命令写入提交队列。在一个实施方式中,存储器设备不知道主机设备300已经用四个命令更新了提交队列304,因为主机设备300更新了它自己的主机存储器302。在另一个实施方式中(诸如当提交队列和完成队列驻留在控制器存储器缓冲区中时),存储器设备可监测主机设备300和存储器设备之间的通信接口以进行特定通信,诸如写入驻留在存储器设备上的提交队列。例如,存储器设备可监测PCI Express总线上的传输层分组(TLP)以确定主机设备300是否已经发送TLP,该TLP导致对驻留在控制器存储器缓冲区中的提交队列的更新。在这一点上,存储器设备可识别正被写入提交队列的一个或多个条目。
在步骤2中,主机设备300写入存储器设备中的提交队列尾部门铃寄存器312。对提交队列尾部门铃寄存器312的该写入向存储器设备指示主机设备使该具体提交队列304中的一个或多个命令(例如,如图3所示的4个命令)排队。对提交队列尾部门铃寄存器312的写入可采用若干形式中的一种。在一种方式中,主机设备300指示提交队列304的新尾部,从而指示写入提交队列304的命令的数量。因此,由于存储器设备知道提交队列304的基地址,因此存储器设备仅需要知道尾部地址以指示写入提交队列304的新命令的数量。在处理了命令(或命令集)之后,存储器设备然后相应地设置提交队列304的新头部。因此,尾部指针可表示相对于头部指针的“偏移”。换句话说,主机设备300指示写入提交队列304的多个命令。在实践中,每个提交队列304在存储器设备中都具有对应的提交队列尾部门铃寄存器,使得当主机设备300更新特定门铃寄存器(与特定提交队列304相关)时,存储器设备可基于门铃寄存器来确定哪个特定提交队列304已被更新。
在步骤2之后(由此向存储器设备通知提交队列304上的命令)并且在步骤3之前(由此存储器设备获取命令),存储器设备知道在提交队列304中存在待处理的命令。在一般情况下,可能存在若干提交队列(在若干提交队列中可能有许多待处理命令)。因此,在执行步骤3之前,存储器设备控制器可在各种提交队列之间做出仲裁,以选择要从中获取命令的特定提交队列。
响应于确定要从哪个特定提交队列304获取命令,在步骤3处,存储器设备从特定提交队列304获取命令。在实践中,存储器设备可访问特定提交队列304的基地址以及在主机设备300中实现的当前头部指针上的指针。
如上面所讨论的,可为提交队列或完成队列分配存储器区域(诸如在主机设备中或在存储器设备中的控制器存储器缓冲区中)。提交队列和完成队列可包括多个条目,每个条目都与具体命令相关联。每个条目的大小都可为预定大小,诸如64Kb。在这一点上,可使用提交队列的基地址,并且通过将条目数乘以每个条目的大小(例如,64Kb)而偏移基地址来确定提交队列内的条目。
如上面所讨论的,存储器设备知道尾部指针,其已经由过步骤2来通知。因此,存储器设备可从提交队列304获得所有新命令。在驻留在主机设备中的提交队列中,存储器设备可发送TLP请求以从提交队列304获得命令。响应于接收到TLP请求,主机设备300发送完成TLP消息,该TLP消息具有提交队列304中的命令。在这一点上,在步骤3结束时,存储器设备从提交队列304接收命令。
在步骤4处,存储器设备处理命令。在一个实施方式中,存储器设备解析命令,并确定实行命令的步骤(例如,读取/写入/等)。例如,该命令可包括读取命令。响应于接收到读取命令,存储器设备解析读取命令、实现地址转换、并访问闪存以接收数据。在接收到数据之后,存储器设备基于命令中的信息(例如,下面讨论的PRP 1)来使数据存储在主机设备上。作为另一示例,该命令可包括写入命令。响应于接收到写入命令,存储器设备解析写入命令、确定主机设备上的要写入数据的位置、从主机设备上的位置读取数据、并将数据写入闪存存储器。
具体地,存储器设备可通过PRP1指针接收读取命令或写入命令。例如,主机设备请求存储器设备从闪存存储器读取的读取命令包括指向PRP列表的PRP1指针。存储器设备获得PRP列表,以便确定主机设备内的存储器位置以写入从闪存存储器读取的数据。作为另一示例,主机设备请求存储器设备将数据写入闪存存储器的写入命令包括指向PRP列表的PRP1指针。存储器设备获取PRP列表,以便确定主机设备内的存储器位置以从中读取数据(然后将读取的数据保存到闪存存储器)。
PRP列表中的每个条目都可与主机设备存储器中的特定部分相关联,并且可以是预定大小,诸如4Kb。因此,在1Mb传输中,PRP列表中可能有250个引用,每个引用大小为4Kb。在实践中,存储器设备可不按顺序检索数据。这可能是由于受到检索的数据存在于若干闪存管芯上,其中管芯可用于在不同时间进行数据检索。例如,在检索对应于1Mb传输的0-100Kb的数据之前,存储器设备可检索对应于1Mb传输的100-200Kb的数据。然而,由于存储器设备具有PRP列表(并因此知道主机设备期望存储对应于100-200Kb的数据的存储器位置),因此存储器设备可传输对应于1Mb传输的100-200Kb的数据,而无需首先检索对应于1Mb传输的0-100Kb的数据。
在NVMe中,可存在多个PCIe TLP以将数据从存储器设备传输到主机设备300。通常,传输的数据基于命令中的指示而存储在主机设备300的主机存储器302中(例如,命令可包括存储所请求的数据的地址)。
在完成数据传输之后,在步骤5处,存储器设备控制器向相关的完成队列306发送完成消息。如上所述,在初始化阶段,主机设备300将提交队列与完成队列相关联。这样,主机设备300基于存储器设备要写入哪些完成队列而知道在提交队列中完成的命令。完成消息可包含关于命令处理的信息,诸如命令是否成功完成或者在实行命令时是否存在错误。
在步骤5之后,主机设备300不知道存储器设备发布到完成队列306。这是由于存储器设备使数据被写入完成队列306。在这一点上,在步骤6处,存储器设备通知主机设备300已经对完成队列306进行了更新。具体地,存储器设备发布对主机设备300的中断(例如,在NVMe中,主机设备300可使用MSI-X中断)。中断可向主机指示在完成队列上存在一个或多个条目。
响应于接收到中断,主机设备300确定在该完成队列306中存在针对主机设备300的一个或多个待处理完成条目。在步骤7处,主机设备300然后处理完成队列306中的条目。
在主机处理来自完成队列306的条目之后,在步骤8处,主机设备300向存储器设备通知主机设备300从完成队列306处理的条目。这可通过更新完成队列头部门铃寄存器314来执行,该完成队列头部门铃寄存器向存储器设备指示主机设备300处理了来自完成队列306的一个或多个条目。响应于完成队列头部门铃寄存器314的更新,存储器设备更新完成队列306的头部。给定新的头部,存储器设备知道完成队列306中的哪些条目已经由主机设备300处理并且可被覆盖。
图4是主机设备400和存储器设备420的其他示例性部件的框图。主机设备400包括主机存储器402,该主机存储器可包括一个或多个提交队列404、一个或多个完成队列406、物理区域页面(PRP)408、数据缓冲区410、主机存储器缓冲区(HMB)412和其他存储器414。
图4还示出了主机设备400和存储器设备420之间的通信接口。在第一实施方式中(图4中未示出),主机设备和存储器设备之间的通信接口是单工的,其中向存储器设备的通信和从存储器设备的通信在同一路径上。在第二实施方式中(图4中示出),主机设备400和存储器设备420之间的通信接口是双工的,具有单独的入口路径和单独的出口路径。从存储器设备420的角度来看,入口路径包括从主机设备400到存储器设备420的传入请求。相反,从存储器设备420的角度来看,出口路径包括从存储器设备420到主机设备400的传出请求。
传入请求(从主机设备400到存储器设备420的请求)可以不同方式划分,诸如传入读取请求和传入写入请求。例如,主机设备400可经由入口路径发送读取存储器设备420中的存储器部分的读取请求或写入存储器设备420中的存储器部分的写入请求。类似地,存储器设备420可经由出口路径发送对主机设备400中的存储器部分的读取请求,或者写入主机设备400中的存储器部分的写入请求。
在使用了NVMe的实践中,可存在一系列读取请求(主机设备对读取驻留在存储器设备上的数据的请求,反之亦然)和一系列写入请求(主机设备将数据写入驻留在存储器设备上的位置的请求,反之亦然)。具体地,在NVMe中,存储器设备和主机设备使用事务层分组(TLP)请求(诸如在另一设备上执行读取的TLP读取请求,或在另一设备上执行写入的TLP写入请求)来彼此通信。在一个示例中(SQ和CQ驻留在主机设备上),响应于主机设备对存储器设备上的门铃寄存器的TLP写入请求(经由入口路径发送)(其中对门铃寄存器的写入指示在SQ上存在命令),存储器设备使用TLP读取请求(经由出口路径发送)来从SQ(其驻留在主机设备上)获取写入命令。因此,写入命令是对存储器设备将数据写入非易失性存储器的请求。然后,存储器设备解析写入命令以获得信息,诸如指向PRP列表的PRP指针(例如,PRP1)的指示。PRP列表是指示主机设备中的数据的位置的一系列信息,诸如指针或地址。然后,存储器设备使用另一个TLP读取请求来从PRP列表中的指针或地址读取数据。随后,存储器设备通过将数据存储在存储器设备上的非易失性存储器(例如,闪存存储器)中来执行写入。在存储数据之后,存储器设备使用TLP写入请求来将条目写入CQ(指示写入命令已经完成)。最后,存储器设备使用TLP写入请求来生成对主机设备的中断,其中中断向主机设备发信号通知在CQ上存在条目。响应于该中断,主机设备读取CQ上的条目,然后向CQ门铃写入寄存器发出指示主机设备已审核CQ上的条目的TLP写入请求。
作为另一示例(再一次,SQ和CQ驻留在主机设备上),响应于主机对存储器设备上的门铃寄存器的TLP写入请求(其中对门铃寄存器的写入指示在SQ上存在命令),存储器设备使用TLP读取请求来从SQ(其驻留在主机设备上)获取读取命令。因此,读取命令是对存储器设备从非易失性存储器读取数据并将读取的数据发送至主机设备的请求。然后,存储器设备读取非易失性存储器(例如,闪存存储器)以读取数据。存储器设备可对数据执行一系列操作,诸如错误校正、加密/解密等,其中存储缓冲区散布在每个串行操作之间。然后,存储器设备可解析读取命令以获得信息,诸如指向PRP列表的PRP指针(例如,PRP1)的指示。PRP列表是指示在主机设备中用于存储从非易失性存储器读取的数据的位置(并且任选地,错误已校正、加密等)的一系列信息,诸如指针或地址。存储器设备使用TLP读取请求来从PRP列表中的指针或地址读取数据。随后,存储器设备使用TLP写入请求来写入从非易失性存储器读取的数据。在将数据写入主机设备之后,存储器设备使用TLP写入请求将条目写入CQ(指示读取命令已经完成)。最后,存储器设备使用TLP写入请求来生成对主机设备的中断,其中中断向主机设备发信号通知在CQ上存在条目。响应于该中断,主机设备读取CQ上的条目,然后向CQ门铃写入寄存器发出指示主机设备已审核CQ上的条目的TLP写入请求。
任选地,CQ和SQ可驻留在存储器设备中,诸如驻留在控制器存储器缓冲区(CMB)中。在该实例中,主机设备可将TLP写入请求(经由入口路径发送)发送到存储器设备以写入SQ。同样,存储器设备可发送TLP写入请求(经由出口路径发送)以生成对主机设备的中断。
对主机存储器缓冲区中的提交队列和完成队列的存储器分配可在物理上位于连续或非连续的位置。在非连续NVMe提交队列和/或完成队列的实例中,将PRP列表提供给存储器设备。PRP列表包含描述相关队列的每个物理部分的位置的指针列表,如下面更详细地讨论。在实践中,PRP列表存储在主机设备存储器中,并且在相关队列的整个寿命期间不被修改。此外,可使用指向PRP列表的指针来指向PRP列表的至少一部分。PRP列表和指向PRP列表的指针中的每一个都可包括在PRP 408中。如下面更详细地讨论,在PRP 408中可存储多个PRP列表。
存储器设备420包括存储器设备控制器422和存储器阵列442。存储器阵列442可以各种方式划分,诸如分成如图4中所示的10个部分。存储器设备控制器422可结合有PCIeMAC和PHY接口424中的一个或全部。另外,存储器设备控制器422可包括将命令的优先级考虑在内的各种功能,如下面更详细地讨论。该命令可包括各种阶段,其中一些阶段可由存储器设备420执行。由存储器设备420执行的阶段中的一个、一些或全部可在确定何时执行与阶段相关联的功能时将命令的优先级考虑在内(例如,部分地或仅使用优先级来确定何时执行该功能)。图4包括指示由存储器设备控制器422执行的可能考虑到命令的优先级的功能的各个框。例如,存储器设备控制器422可包括命令仲裁和获取器426,该命令仲裁和获取器如上面所讨论的,可在提交队列之间使用诸如循环或加权循环的算法并且用于获取命令。
此外,命令排队428被配置为使所获取的NVMe命令的部分或全部排队以用于进一步处理。命令调度器430被配置为从命令排队428选择下一个待处理命令以进一步实行。如图4所示,可存在若干队列可供选择。因此,命令调度器430可至少部分地基于命令的优先级来从若干队列中选择哪个命令。数据传输调度器434被配置为调度一种或多种类型的数据传输。作为一个示例,读取数据可并行地从不同的存储器阵列到达。数据传输调度器434可基于来自不同数据传输的读取数据的优先级(例如,不同读取命令的优先级)来做出仲裁。
直接存储器访问(DMA)432被配置为执行主机设备400和存储器设备420之间的实际数据传输。完成队列管理器436被配置为将完成条目发布到完成队列406,同时还处理相关指针。错误校正438被配置为校正从存储器阵列442所获取的数据。闪存接口模块440被配置为控制和访问存储器阵列442。因此,通过使用图4中的框中所示的各种功能,存储器设备控制器422可在由存储器设备420执行的命令实行流的部分或全部期间来使用命令的优先级(例如,可为该命令分配从中获得该命令的提交队列的优先级)。
图5是图4中所示的命令排队428和命令调度器430的框图。如图所示,命令排队428可将一个或多个队列发送到命令调度器430。如上面所讨论的,命令排队可将命令分为一个或多个队列,诸如管理员队列、紧急队列、高优先级队列、中优先级队列和低优先级队列。因此,在一个实施方式中,当主机设备400选择加权循环仲裁方案作为存储器设备420使用的算法时,命令排队428可通过若干内部队列(例如,管理员队列、紧急队列、高优先级队列、中优先级队列和低优先级队列,如图4所示)来将命令引导到命令调度器430。另选地,命令排队428可使用循环仲裁方案来确定将命令引导到命令调度器430的顺序。各种队列的指定仅用于说明目的。可设想其他队列。另选地,命令排队可输出具有相关联的优先级指定的单个队列。例如,单个队列中的条目可各自具有相关联的优先级。在这一点上,命令排队428可使从主机存储器402中的提交队列404获取的部分或全部NVMe命令排队。
命令调度器430从命令排队428接收命令、在命令之间做出仲裁并选择下一个将实行的命令。在一个实施方式中,命令调度器430仅基于与命令相关联的优先级来对不同命令做出仲裁。在另一个实施方式中,命令调度器430基于与命令相关联的优先级和存储器设备420的当前内部状态(诸如,存储器阵列442的状态)来在不同命令之间做出仲裁。例如,命令仲裁500可基于存储器设备420的一个或多个内部参数(诸如当前存储器阵列状态)并且也基于由主机设备400分配的命令的优先级。这在图5中示出为主机设备对存储器设备优先级。因此,命令仲裁500可输出命令的顺序以供命令实行502实行。
图6是在从提交队列获取命令之后区分命令处理的优先级的第一示例的流程图600。在602处,从提交队列获取一个或多个命令。如上面所讨论的,获取可基于一种或多种算法,诸如循环法或加权循环法。在604处,确定是否执行获取后处理。在一个实施方式中,获取后处理包括在从提交队列中获取命令之后存储器设备对命令执行的任何处理(例如,排队、调度、实行、发布、中断)。在606处,可确定来自命令集的具体命令的优先级。在608处,使用所确定的优先级来对具体命令执行获取后处理。在一个实施方式中,所确定的优先级可包括相对于另一个命令的优先级。在这一点上,响应于确定具体命令的优先级高于另一命令的优先级,对具体命令的获取后处理的一个或多个部分可优先于另一命令。在另一个实施方式中,所确定的优先级并不相对于另一命令进行比较。例如,管理员命令可包括最高优先级。在这一点上,可处理具有“管理员”优先级的具体命令而无需将该优先级与另一命令进行比较。
图7是在从提交队列获取命令之后区分命令处理(诸如命令实行)的优先级的第二示例的流程图700。在702处,使从主机存储器中的提交队列中获取的命令排队。在704处,确定是否实行下一个命令。如果是,则在706处,确定存储器设备的一个或多个内部参数(诸如存储器阵列442的状态)。在708处,确定从主机存储器获取的排队命令中的一个或多个命令的优先级。在710处,可基于所确定的优先级以及任选地存储器设备的一个或多个内部参数来实行命令。如图7所示,响应于确定实行下一个命令来确定内部参数和优先级。另选地,可在确定实行下一个命令之前确定内部参数和优先级。
如上面所讨论的,各种具体命令可使用命令的优先级来确定实行命令的顺序。作为一个示例,PRP获取可在确定PRP获取的顺序时考虑提交队列的优先级。具体地,为了提高性能,存储器设备可并行地实行若干命令。因此,设备可发送与不同NVMe命令相关联的若干PRP获取请求。代替仅基于内部存储器设备状态(例如,存储器阵列状态)在几个PRP获取请求之间做出仲裁,也可考虑与当前PRP获取相关联的命令的优先级。这在图8中示出,该图是通过确定与多个PRP请求相关联的命令的优先级来处理多个PRP请求的流程图800。在802处,确定是否存在多个PRP请求。如果不是,则在812处,发送单个PRP请求。如果是,则在804处,确定存储器设备的一个或多个内部参数。在806处,确定与多个PRP请求相关联的命令的优先级。在808处,基于所确定的优先级并且任选地基于存储器设备的内部参数来选择PRP请求中的一个(例如,区分PRP请求的优先级顺序)。在810处,针对所选择的PRP请求发送PRP请求。例如,PRP请求以PRP请求的优先级顺序执行。
作为另一示例,诸如读取命令的命令可导致从存储器设备到主机设备的数据传输。数据传输请求可并行地来自若干部件。具体地,存储器阵列442中的每个存储器阵列都是独立的,并且可与另一个存储器阵列并行工作。因此,存储器设备控制器中的数据传输调度器可从若干部件并行地接收主机传输请求。代替仅基于内部设备状态(例如,存储器阵列状态)进行调度,也可考虑与当前数据传输相关联的命令的优先级。这在图9中示出,该图是通过确定与多个主机传输请求相关联的命令的优先级来处理多个主机传输请求的流程图900。在902处,确定是否存在来自多个部件的多个主机传输请求。如果不是,则在912处,发送单个主机传输请求。如果是,则在904处,确定存储器设备的一个或多个内部参数。在906处,确定与多个主机传输请求相关联的命令的优先级。在908处,基于所确定的优先级并且任选地基于存储器设备的内部参数来选择主机传输请求中的一个(例如,区分主机传输请求的优先级顺序)。在910处,针对所选择的主机传输请求发送主机传输请求。例如,主机传输请求以主机传输请求的优先级顺序执行。
如上面所讨论的,一个或多个操作可能会影响完成队列。例如,存储器设备向完成队列发布条目(例如,图3中的步骤5)并中断主机设备(例如,图3中的步骤6)会影响完成队列。在这一点上,执行那些操作的存储器设备可在确定何时执行影响相应完成队列的操作时考虑与命令相关联的优先级和/或完成队列的优先级。与提交队列类似,完成队列可能具有优先级。如上面所讨论的,提交队列和完成队列之间的映射可为1:1,但情况不一定是这样。在1:1映射中工作时,完成队列的优先级可能等于相关的提交队列。当若干提交队列与同一完成队列相关联时,完成队列的优先级可能等于与此完成队列关联的最高提交队列优先级。
图10示出了通过确定多个完成队列的优先级来管理多个完成队列的流程图1000。在1002处,确定操作是否会影响多个完成队列。如果不是,则在1008处,确定单个完成队列上的操作。如果是,则在1004处,确定多个完成队列的优先级。因此,图10示出了其中所确定的优先级可包括相对于另一命令的优先级的一个实施方式。另选地,所确定的优先级并不相对于另一命令进行比较。在1006处,使用所确定的优先级来执行与多个完成队列相关联的操作,诸如队列完成和/或生成对主机设备的中断。
图11是关于完成队列的操作的具体实施方式,即通过确定多个完成队列的优先级来确定与多个完成队列相关联的完成发布中的哪些完成发布发布到完成队列的流程图1100。当确定主机中断时,可使用类似的逻辑。在1102处,确定是否存在对不同完成队列的完成发布。如果不是,则在1110处,发送单个主机传输请求。如果是,则在1104处,确定不同完成队列的优先级。在1106处,基于所确定的优先级来选择完成发布中的一个(例如,区分完成发布的优先级顺序)。在1108处,针对所选择的完成发布执行完成发布。例如,完成发布以主机传输请求的优先级顺序执行。
以上讨论集中于实行阶段内的仲裁。例如,可在命令排队阶段、命令调度阶段、完成发布阶段、中断阶段执行仲裁。除此之外,可在不同的命令执行阶段(诸如访问主机存储器时的不同命令实行阶段)之间使用命令的优先级。作为一个示例,RP获取、数据传输和完成发布可同时请求出口总线。仲裁逻辑可在此类场景中考虑命令的优先级。
如上面所讨论的,存储器设备可使用各种标准,包括以下各项中的任一个、任何组合或全部:预定的阶段优先级顺序;命令的类型;存储器资源的分配;命令的处理深度;或不同阶段中的命令的预定平衡的维持。
作为一个示例,阶段可具有预定的优先级。如上面所讨论的,存储器设备可按预定的优先级顺序来区分阶段的优先级。作为一个示例,存储器设备可根据以下各项(从最高优先级到最低优先级)来区分优先级:命令获取;PRP获取;数据传输;完成队列发布;以及中断通知。作为另一示例,完成队列发布和中断通知可具有比命令获取、PRP获取和数据传输更高的优先级。
存储器设备还可基于命令的类型(或请求的类型)来区分优先级。如上面所讨论的,命令可能需要不同的请求,诸如来自主机设备的读取请求(例如,从主机设备读取数据的PCIe读取请求)或对主机设备的写入请求(例如,将数据写入主机设备的PCIe写入请求)。存在不同类型的PCIe读取请求,包括但不限于:命令获取(例如,存储器设备从驻留在主机设备上的提交队列中读取命令);PRP获取(例如,存储器设备使用指针从主机设备读取PRP列表);或数据获取(例如,在NVMe写入命令流中,存储器设备从主机读取要写入闪存存储器的数据)。对于PCIe读取请求,从最高到最低的预定优先级可包括:数据获取;PRP获取;以及命令获取。在一个实施方式中,数据获取接收最高优先级,因为存储器设备已经为此任务分配了内部资源。在这一点上,存储器设备可有效地使用所分配的内部资源。存储器设备可使PRP获取的优先级高于命令获取,因为在几个循环中,存储器设备可具有可用的数据缓冲区,并且在PRP尚不可用的情况下可能必须等待。
同样,存在不同类型的PCIe写入请求,包括但不限于:将数据写入主机设备(例如,在NVMe读取命令流中,存储器设备已从闪存存储器读取的数据被写入主机设备);完成发布(例如,存储器设备将指示命令已完成的条目写入驻留在主机设备上的完成队列);或中断(例如,对主机设备的MSI-X中断向主机设备指示在完成队列上存在条目以供审核)。对于PCIe写入请求,从最高到最低的预定优先级可包括:中断;完成发布;以及将数据写入主机设备。在实践中,中断(诸如MSI-X中断)可能需要非常少的数据(诸如要发送到主机设备的4个字节)。同样,完成队列条目可能需要将16字节数据传输到主机设备。相比之下,在处理NVMe读取命令时,写入数据(诸如将数据写入主机系统)可包括大量数据。此外,当存储器设备已完成命令的所有处理阶段时,存储器设备可释放内部资源以处理命令(例如,存储器空间、处理能力等)。在这一点上,存储器设备可区分某些命令的最后处理阶段(诸如完成队列发布和发送对主机的中断)的优先级,以便更快地完成命令的处理,继而更快地释放内部资源。在主机系统侧,完成命令处理同样可导致主机系统内部资源(诸如驻留在主机系统上的缓冲区)的释放。
另选地,或除了为不同阶段分配优先级之外,存储器系统还可平衡在不同阶段中处理的命令。例如,存储器系统可分配要在不同阶段中处理的命令数量的范围,诸如下限和上限。更具体地,获取阶段可具有上限(诸如10个命令)和下限(诸如2个命令)。在实践中,存储器系统可检查当前已获取的命令的数量,并确定命令的数量是否在上限和下限内。如果命令的数量小于下限,则存储器系统可获取更多命令。如果命令的数量大于上限,则存储器系统可将命令获取评估为较低优先级。在平衡这些阶段时,存储器设备不会忽略不同的操作。例如,如果命令获取始终被忽略,则存储器系统可能到达所有PRP获取和数据传输都完成的点,但存储器系统不具有待处理命令。在这种情况下,等待获取命令而不能在任何其他阶段中执行处理可能是低效的。
图12是用于确定不同操作阶段中的命令之间的优先级的流程图1200。如上面所讨论的,命令经历一系列不同的阶段,诸如获取命令、处理命令、发布完成消息;以及生成对主机设备的中断,指示条目已被放置在完成队列上。此外,在具体阶段内,该命令可包括不同的子阶段。作为仅一个示例,在处理命令时,存储器设备可执行内部命令选择并实行命令。作为另一示例,在实行诸如读取命令的命令时,存储器设备可执行错误校正(诸如对从闪存读取的数据进行错误校正)、加密或解密等。
因此,存储器设备可在命令的不同阶段之间做出仲裁。另选地或除此之外,存储器设备可在命令的不同子阶段之间做出仲裁。在1202处,存储器设备确定是否在不同阶段之间做出仲裁。如果不是,则在1210处,存储器设备执行不同的阶段而无需分配优先级。如果是,则在1204处,存储器设备确定不同阶段(和/或不同子阶段)的优先级或不同阶段中的命令的优先级。例如,存储器设备可具有与不同阶段相关联的预定义优先级,诸如为完成队列更新和生成中断分配比获取和实行命令更高的优先级。作为另一示例,存储器设备可动态地分析存储器设备的操作状态,并且响应于该分析,可为不同的阶段动态地分配优先级。在一个具体示例中,存储器设备可确定存在高于第一预定量的多个获取命令和低于第二预定量的多个实行命令。在该具体示例中,随后,存储器设备可使实行命令的优先级高于获取命令(例如,直到获取命令的数量低于第一预定量和/或直到实行命令的数量大于第二预定量)。另选地或除此之外,存储器设备可确定不同阶段中的具体命令的优先级。具体地,具体命令可具有相关联的优先级。例如,命令1可具有分配的优先级1并且可在阶段1中,而命令2可具有分配的优先级2并且可在阶段2中。存储器设备可基于命令1和2的相关联的优先级来确定是在执行命令2的阶段2之前还是之后执行命令1的阶段1。在1206处,存储器设备基于所确定的优先级来选择一个或多个不同的阶段或不同阶段中的命令。在1208处,存储器设备基于所选择的阶段或命令来执行操作。
图13是用于确定主机设备和存储器设备之间的通信接口的一条或多条路径中的通信的优先级的流程图1300。如上面所讨论的,主机设备和存储器设备之间的通信接口可以是单工或双工的。在这一点上,在任一实施方式中,存储器设备可对通信做出仲裁。例如,在双工中,存储器设备可在用于入口路径和/或出口路径的通信之间做出仲裁,如上面所讨论的。在1302处,存储器设备确定是否在一条或多条通信路径之间做出仲裁。如果不是,则在1308处,存储器设备发送通信而无需仲裁。如果是,则在1304处,存储器设备确定一条或多条路径上的通信的优先级。在1306处,存储器设备基于所确定的优先级来选择通信。最后,在1308处,存储器设备基于该选择来发送通信。
最终,如上所述,可使用任何合适类型的存储器。半导体存储器设备包括易失性存储器设备,诸如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)设备,非易失性存储器设备,诸如电阻式随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存存储器(也可以被认为是EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”),以及能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的配置。例如,闪存存储器设备可以NAND配置或NOR配置进行配置。
该存储器设备可由无源元件和/或有源元件以任何组合形成。以非限制性示例的方式,无源半导体存储器元件包括ReRAM设备元件,其在一些实施方案中包括电阻率切换存储元件诸如反熔丝、相变材料等,以及任选地包括导引元件诸如二极管等。进一步以非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪存存储器设备元件,其在一些实施方案中包括具有电荷存储区域的元件,诸如浮栅、导电纳米粒子或电荷存储介电材料。
多个存储器元件可被配置为使得它们串联连接或者使得每个元件可被单独访问。以非限制性示例的方式,NAND配置中的闪存存储器设备(NAND存储器)通常包含串联连接的存储器元件。NAND存储器阵列可被配置为使得该阵列由存储器的多个串构成,其中串由共享单个位线并作为组被访问的多个存储器元件构成。另选地,存储器元件可被配置为使得每个元件均为单独可访问的,例如,NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且存储器元件可以其他方式配置。
位于基板内和/或上方的半导体存储器元件可被布置成两个维度或三个维度,诸如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件被布置在单个平面或单个存储器设备级中。通常,在二维存储器结构中,存储器元件被布置在平面中(例如,在x-z方向平面中),所述平面基本上平行于支撑存储器元件的基板的主表面延伸。基板可以是存储器元件的层在其之上或之中形成的晶圆,或者其可以是在存储器元件形成后附接到其的承载基板。作为非限制性示例,基板可包括半导体,诸如硅。
存储器元件可被布置在处于有序阵列中(诸如在多个行和/或列中)的单个存储器设备级中。然而,存储器元件可以非常规配置或非正交配置排列。存储器元件可各自具有两个或更多个电极或接触线,诸如位线和字线。
三维存储器阵列被布置成使得存储器元件占据多个平面或多个存储器设备级,从而形成三个维度(即,在x方向、y方向和z方向上,其中y方向基本上垂直于基板的主表面,并且x方向和z方向基本上平行于基板的主表面)的结构。
作为非限制性示例,三维存储器结构可被垂直地布置为多个二维存储器设备级的叠堆。作为另一个非限制示例,三维存储器阵列可被布置为多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),其中在每一列中每一列均具有多个存储器元件。列可被布置成二维配置,例如,在x-z平面中,从而得到在多个垂直堆叠的存储器平面上具有元件的存储器元件的三维布置。三维存储器元件的其他配置也可构成三维存储器阵列。
以非限制性示例的方式,在三维NAND存储器阵列中,存储器元件可耦接在一起以在单个水平(例如,x-z)存储器设备级内形成NAND串。另选地,存储器元件可耦接在一起以形成横贯多个水平存储器设备级的垂直NAND串。可设想到其他三维配置,其中一些NAND字符串包含在单个存储器级中的存储器元件,而其他字符串则包含跨越多个存储器级的存储器元件。三维存储器阵列也可以NOR配置以及ReRAM配置来设计。
通常,在单片三维存储器阵列中,一个或多个存储器设备级在单个基板上方形成。任选地,单片三维存储器阵列还可具有至少部分地在单个基板内的一个或多个存储器层。作为非限制性示例,基板可包括半导体,诸如硅。在单片三维阵列中,构成阵列的每个存储器设备级的层通常形成在阵列的底层存储器设备级的层上。然而,单片三维存储器阵列的相邻存储器设备级的层可被共享或具有介于存储器设备级之间的居间层。
然后,可单独形成二维阵列,然后封装在一起以形成具有多个存储器层的非单片存储器设备。例如,非单片的堆叠存储器可通过在单独的基板上形成存储器级并然后将存储器级堆叠在彼此之上而构造。可在堆叠前将基板减薄或从存储器设备级移除,但由于存储器设备级在单独基板上初始形成,因此所得的存储器阵列不是单片的三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可在单独的芯片上形成,然后封装在一起以形成堆叠的芯片存储器设备。
通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可与存储器元件位于同一基板上和/或位于单独的基板上。例如,用于存储器读取-写入操作的控制器可位于单独的控制器芯片上和/或位于与存储器元件相同的基板上。
预期将前面的详细描述理解为本发明可以采用的选定形式的说明,而不是作为本发明的定义。预期只有以下权利要求(包括所有等同物)限定要求保护的本发明的范围。最后,应当指出的是,本文所述的任何优选实施方案的任何方面均可单独使用或彼此组合使用。
Claims (19)
1.一种供存储器设备处理一个或多个命令的方法,所述方法包括:
从多个提交队列获取命令,主机设备使所述命令存储在所述多个提交队列中,以便所述存储器设备处理所述命令;
确定所述命令的优先级;
在获取之后,基于所确定的优先级来处理所述命令;
其中处理每个命令包括执行多个阶段,其中的一些阶段要求经由通信接口在所述存储器设备和所述主机设备之间的通信;以及
基于所述存储器设备和所述主机设备之间的所述通信接口的活动水平确定所述多个阶段的优先级,其中对于所述多个阶段中的至少一些,不要求所述存储器设备和所述主机设备之间的通信的阶段相比于要求所述存储器设备和所述主机设备之间的通信的阶段被给与更高的优先级而与和所述阶段关联的命令的优先级无关。
2.根据权利要求1所述的方法,其中:
处理所述命令包括所述存储器设备使指示存储在一个或多个完成队列中,相应指示指示相应命令已由所述存储器设备实行;并且
使所述指示存储在所述一个或多个完成队列中是基于所确定的优先级。
3.根据权利要求1所述的方法,其中处理所述命令包括所述存储器设备:
使指示存储在一个或多个完成队列中,相应指示指示相应命令已由所述存储器设备实行;并且
生成对所述主机设备的中断,所述中断向所述主机设备指示所述指示被存储在所述一个或多个完成队列中;
其中生成对所述主机设备的所述中断是基于所确定的优先级。
4.根据权利要求1所述的方法,其中确定所述命令的所述优先级包括:
确定与相应命令相关联的相应提交队列;以及
基于所述相应提交队列的优先级为所述相应命令分配所述优先级。
5.根据权利要求4所述的方法,其中:
所述多个提交队列包括第一提交队列和第二提交队列;
所述第一提交队列被分配比所述第二提交队列更高的优先级;并且
从所述第一提交队列获取的所述命令的处理被分配比从所述第二提交队列获取的所述命令的处理更高的优先级。
6.根据权利要求5所述的方法,其中:
所述第一提交队列包括管理提交队列;并且
所述第二提交队列包括非管理提交队列。
7.根据权利要求1所述的方法,其中确定所述命令的所述优先级包括:
确定相应命令的命令类型;以及
基于所述命令类型为所述相应命令分配所述优先级。
8.根据权利要求1所述的方法,其中确定所述命令的所述优先级包括:
确定与相应命令相关联的地址;以及
基于所确定的地址为所述相应命令分配所述优先级。
9.一种非易失性存储器设备,包括:
非易失性存储器,所述非易失性存储器具有多个存储器单元;
通信接口,所述通信接口被配置为与主机设备通信,所述存储器设备用以执行与从一个或多个提交队列获取的命令相关的一个或多个动作,所述一个或多个动作包括所述存储器设备在处理所获取的命令时执行的动作;和
控制器,所述控制器与所述非易失性存储器和所述通信接口通信,所述控制器被配置为:
从一个或多个提交队列中获取命令;
确定所获取的命令的优先级;
基于所确定的优先级处理所述命令;
其中处理每个命令包括执行多个阶段,其中的一些阶段要求经由通信接口在所述存储器设备和所述主机设备之间的通信;以及
基于所述存储器设备和所述主机设备之间的所述通信接口的活动水平确定所述多个阶段的优先级,其中对于所述多个阶段中的至少一些,不要求所述存储器设备和所述主机设备之间的通信的阶段相比于要求所述存储器设备和所述主机设备之间的通信的阶段被给与更高的优先级而与和所述阶段关联的命令的优先级无关。
10.根据权利要求9所述的非易失性存储器设备,其中:
所述多个阶段包括获得与所获取的命令相关联的物理区域页面;并且
所述控制器被配置为基于所获取的命令的所确定的优先级来确定获得所获取的命令的所述物理区域页面的顺序。
11.根据权利要求9所述的非易失性存储器设备,其中所述多个阶段中的每个与一个或多个完成队列相关联。
12.根据权利要求11所述的非易失性存储器设备,其中所述多个阶段包括使命令完成的指示被写入相应完成队列。
13.根据权利要求11所述的非易失性存储器设备,其中所述多个阶段包括生成对所述主机设备的中断,以向所述主机设备指示命令完成的指示被写入相应完成队列。
14.根据权利要求9所述的非易失性存储器设备,其中所述控制器被配置为通过以下方式来确定所获取的命令的所述优先级:
确定与相应命令相关联的相应提交队列;以及
基于所述相应提交队列的优先级为所述相应命令分配所述优先级。
15.根据权利要求9所述的非易失性存储器设备,其中所述控制器被配置为通过以下方式来确定所获取的命令的所述优先级:
分析所获取的命令的至少一个方面;以及
基于所获取的命令的所述至少一个方面的所述分析来为所获取的命令分配所述优先级。
16.根据权利要求15所述的非易失性存储器设备,其中所述至少一个方面包括所获取的命令的类型。
17.根据权利要求15所述的非易失性存储器设备,其中所述至少一个方面包括与所获取的命令相关联的存储器地址。
18.一种非易失性存储器系统,包括:
非易失性存储器,所述非易失性存储器具有多个存储器单元;
通信接口,所述通信接口被配置为与主机设备通信;
用于经由所述通信接口从多个提交队列获取命令的装置,所述主机设备使所述命令被存储在所述多个提交队列中;
用于确定所述命令的优先级的装置;
用于基于所确定的优先级来处理所述命令的装置;
其中处理每个命令包括执行多个阶段,其中的一些阶段要求经由通信接口在所述非易失性存储器和所述主机设备之间的通信;以及
基于所述非易失性存储器和所述主机设备之间的所述通信接口的活动水平确定所述多个阶段的优先级的装置,其中对于所述多个阶段中的至少一些,不要求所述非易失性存储器和所述主机设备之间的通信的阶段相比于要求所述非易失性存储器和所述主机设备之间的通信的阶段被给与更高的优先级而与和所述阶段关联的命令的优先级无关。
19.根据权利要求18所述的非易失性存储器系统,其中所述用于确定所述命令的所述优先级的装置进一步基于获取相应命令的相应提交队列。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/468,620 | 2017-03-24 | ||
US15/468,620 US10466903B2 (en) | 2017-03-24 | 2017-03-24 | System and method for dynamic and adaptive interrupt coalescing |
US15/585,717 | 2017-05-03 | ||
US15/585,717 US10466904B2 (en) | 2017-03-24 | 2017-05-03 | System and method for processing and arbitrating submission and completion queues |
PCT/US2018/019933 WO2018175064A1 (en) | 2017-03-24 | 2018-02-27 | System and method for processing and arbitrating submission and completion queues |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110088725A CN110088725A (zh) | 2019-08-02 |
CN110088725B true CN110088725B (zh) | 2022-08-26 |
Family
ID=61627186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880005222.9A Active CN110088725B (zh) | 2017-03-24 | 2018-02-27 | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10466904B2 (zh) |
CN (1) | CN110088725B (zh) |
DE (1) | DE112018000228T5 (zh) |
WO (1) | WO2018175064A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10732897B2 (en) | 2018-07-03 | 2020-08-04 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
US11392320B2 (en) | 2018-07-03 | 2022-07-19 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
CN109634875A (zh) * | 2018-12-12 | 2019-04-16 | 深圳忆联信息系统有限公司 | 命令数据缓存处理方法、装置、计算机设备和存储介质 |
US11093352B2 (en) * | 2019-09-11 | 2021-08-17 | Hewlett Packard Enterprise Development Lp | Fault management in NVMe systems |
KR20210051718A (ko) * | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11599481B2 (en) * | 2019-12-12 | 2023-03-07 | Western Digital Technologies, Inc. | Error recovery from submission queue fetching errors |
WO2021126656A1 (en) * | 2019-12-16 | 2021-06-24 | Micron Technology, Inc. | Interrupt signaling for a memory device |
KR20210099291A (ko) | 2020-02-04 | 2021-08-12 | 삼성전자주식회사 | 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법 |
CN115427926A (zh) * | 2020-03-10 | 2022-12-02 | 美光科技公司 | 维持存储器子系统的队列 |
US20210303340A1 (en) * | 2020-03-24 | 2021-09-30 | Micron Technology, Inc. | Read counter for quality of service design |
US11093175B1 (en) | 2020-04-02 | 2021-08-17 | Dell Products L.P. | Raid data storage device direct communication system |
US11561912B2 (en) * | 2020-06-01 | 2023-01-24 | Samsung Electronics Co., Ltd. | Host controller interface using multiple circular queue, and operating method thereof |
KR20220036169A (ko) * | 2020-09-15 | 2022-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 데이터 처리 시스템 |
KR20220050407A (ko) * | 2020-10-16 | 2022-04-25 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US11417410B2 (en) * | 2020-09-16 | 2022-08-16 | Kioxia Corporation | Die-based high and low priority error queues |
US11449443B2 (en) * | 2020-10-16 | 2022-09-20 | Western Digital Technologies, Inc. | Identification and classification of write stream priority |
CN112256601B (zh) * | 2020-10-19 | 2023-04-21 | 苏州凌云光工业智能技术有限公司 | 数据存取控制方法、嵌入式存储系统及嵌入式设备 |
CN114518833B (zh) * | 2020-10-30 | 2024-05-03 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、电子设备和计算机程序产品 |
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 |
CN113157205B (zh) * | 2021-02-26 | 2023-03-14 | 西安微电子技术研究所 | 一种nand阵列的控制方法、控制器、电子设备及存储介质 |
US12067254B2 (en) | 2021-05-21 | 2024-08-20 | Samsung Electronics Co., Ltd. | Low latency SSD read architecture with multi-level error correction codes (ECC) |
US20220374149A1 (en) * | 2021-05-21 | 2022-11-24 | Samsung Electronics Co., Ltd. | Low latency multiple storage device system |
CN114048156B (zh) * | 2021-10-28 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多通道多映射中断控制器 |
US11899941B2 (en) | 2021-11-11 | 2024-02-13 | Samsung Electronics Co., Ltd. | Storage device and operating method thereof |
CN113778694B (zh) * | 2021-11-12 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
CN116166415A (zh) * | 2021-11-25 | 2023-05-26 | 三星电子株式会社 | 装置控制器、存储装置及其方法 |
US11768606B2 (en) * | 2021-12-27 | 2023-09-26 | Western Digital Technologies, Inc. | Maximizing performance through traffic balancing |
EP4216049A1 (en) * | 2022-01-24 | 2023-07-26 | Samsung Electronics Co., Ltd. | Low latency multiple storage device system |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
CN116303130B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 存储设备异步事件上报方法及其应用设备 |
CN117149278B (zh) * | 2023-10-30 | 2024-02-06 | 苏州元脑智能科技有限公司 | 一种命令处理系统、控制方法及主机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157963A (en) * | 1998-03-24 | 2000-12-05 | Lsi Logic Corp. | System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients |
CN102473087A (zh) * | 2009-07-02 | 2012-05-23 | 三德动力有限公司 | 对与存储装置关联的多个写命令进行排序 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654343B1 (en) * | 2001-03-19 | 2003-11-25 | Turin Networks | Method and system for switch fabric flow control |
US20060161733A1 (en) | 2005-01-19 | 2006-07-20 | Emulex Design & Manufacturing Corporation | Host buffer queues |
JP2007026366A (ja) * | 2005-07-21 | 2007-02-01 | Canon Inc | メモリコントローラ |
US7797468B2 (en) * | 2006-10-31 | 2010-09-14 | Hewlett-Packard Development Company | Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing |
JP5460143B2 (ja) | 2009-06-29 | 2014-04-02 | キヤノン株式会社 | データ処理装置、データ処理方法およびプログラム |
US8881141B2 (en) | 2010-12-08 | 2014-11-04 | Intenational Business Machines Corporation | Virtualization of hardware queues in self-virtualizing input/output devices |
US9021146B2 (en) * | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
US9003071B2 (en) | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US10063638B2 (en) | 2013-06-26 | 2018-08-28 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US20150067291A1 (en) * | 2013-08-30 | 2015-03-05 | Kabushiki Kaisha Toshiba | Controller, memory system, and method |
US9110786B2 (en) | 2013-11-07 | 2015-08-18 | Sandisk Technologies Inc. | Read operation prior to retrieval of scatter gather list |
US9317204B2 (en) | 2013-11-14 | 2016-04-19 | Sandisk Technologies Inc. | System and method for I/O optimization in a multi-queued environment |
US9509771B2 (en) * | 2014-01-14 | 2016-11-29 | International Business Machines Corporation | Prioritizing storage array management commands |
WO2015121912A1 (ja) | 2014-02-12 | 2015-08-20 | 株式会社日立製作所 | データ記憶装置 |
EP3117583A4 (en) | 2014-03-08 | 2017-11-01 | Diamanti, Inc. | Methods and systems for converged networking and storage |
US10635316B2 (en) | 2014-03-08 | 2020-04-28 | Diamanti, Inc. | Methods and systems for data storage using solid state drives |
US20170228173A9 (en) | 2014-05-02 | 2017-08-10 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US9990313B2 (en) | 2014-06-19 | 2018-06-05 | Hitachi, Ltd. | Storage apparatus and interface apparatus |
KR101699377B1 (ko) | 2014-07-02 | 2017-01-26 | 삼성전자주식회사 | 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102238652B1 (ko) * | 2014-11-12 | 2021-04-09 | 삼성전자주식회사 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US9727239B2 (en) | 2014-11-13 | 2017-08-08 | Samsung Electronics Co., Ltd. | Electronic system with partitioning mechanism and method of operation thereof |
US9841902B2 (en) | 2014-11-20 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Peripheral component interconnect express controllers configured with non-volatile memory express interfaces |
US20160188510A1 (en) | 2014-12-26 | 2016-06-30 | Samsung Electronics Co., Ltd. | METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES |
KR102398213B1 (ko) | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
US10114675B2 (en) | 2015-03-31 | 2018-10-30 | Toshiba Memory Corporation | Apparatus and method of managing shared resources in achieving IO virtualization in a storage device |
US10191691B2 (en) | 2015-04-28 | 2019-01-29 | Liqid Inc. | Front-end quality of service differentiation in storage system operations |
KR102403489B1 (ko) * | 2015-07-10 | 2022-05-27 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
US10025532B2 (en) | 2015-09-11 | 2018-07-17 | Sandisk Technologies Llc | Preserving read look ahead data in auxiliary latches |
US9927983B2 (en) | 2015-09-28 | 2018-03-27 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
US10866910B2 (en) | 2015-09-28 | 2020-12-15 | Sandisk Technologies Llc | Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments |
KR102358691B1 (ko) | 2015-10-30 | 2022-02-07 | 삼성전자주식회사 | 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법 |
CN105867844B (zh) * | 2016-03-28 | 2019-01-25 | 北京联想核芯科技有限公司 | 一种命令控制方法及存储设备 |
US20170322897A1 (en) | 2016-05-06 | 2017-11-09 | Sandisk Technologies Inc. | Systems and methods for processing a submission queue |
US11586565B2 (en) | 2016-10-03 | 2023-02-21 | Samsung Electronics Co., Ltd. | Non-volatile storage system and data storage access protocol for non-volatile storage devices |
KR20180045103A (ko) | 2016-10-24 | 2018-05-04 | 삼성전자주식회사 | 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법 |
US10656873B2 (en) * | 2016-12-21 | 2020-05-19 | Intel Corporation | Technologies for prioritizing execution of storage commands |
US10817191B2 (en) | 2017-03-13 | 2020-10-27 | Western Digital Technologies, Inc. | Storage system and method for thermal throttling via command arbitration |
US10387081B2 (en) | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
-
2017
- 2017-05-03 US US15/585,717 patent/US10466904B2/en not_active Expired - Fee Related
-
2018
- 2018-02-27 WO PCT/US2018/019933 patent/WO2018175064A1/en active Application Filing
- 2018-02-27 CN CN201880005222.9A patent/CN110088725B/zh active Active
- 2018-02-27 DE DE112018000228.4T patent/DE112018000228T5/de active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157963A (en) * | 1998-03-24 | 2000-12-05 | Lsi Logic Corp. | System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients |
CN102473087A (zh) * | 2009-07-02 | 2012-05-23 | 三德动力有限公司 | 对与存储装置关联的多个写命令进行排序 |
Also Published As
Publication number | Publication date |
---|---|
CN110088725A (zh) | 2019-08-02 |
US10466904B2 (en) | 2019-11-05 |
DE112018000228T5 (de) | 2019-09-05 |
US20180321844A1 (en) | 2018-11-08 |
WO2018175064A1 (en) | 2018-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110088725B (zh) | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 | |
CN110088723B (zh) | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 | |
CN108628777B (zh) | 动态和自适应中断合并的系统和方法 | |
US11635898B2 (en) | System and method for adaptive command fetch aggregation | |
CN110088724B (zh) | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 | |
US10564857B2 (en) | System and method for QoS over NVMe virtualization platform using adaptive command fetching | |
CN110073322B (zh) | 用于快速执行封装体内命令的系统和方法 | |
US10725835B2 (en) | System and method for speculative execution of commands using a controller memory buffer | |
CN108885584B (zh) | 使用主机存储器缓冲区的无序读取传输 | |
US20190332428A1 (en) | Task queues | |
US10642498B2 (en) | System and method for flexible management of resources in an NVMe virtualization | |
WO2018175059A1 (en) | System and method for speculative execution of commands using the controller memory buffer | |
US10740243B1 (en) | Storage system and method for preventing head-of-line blocking in a completion path | |
US20230101626A1 (en) | Data Storage Device and Method for File-Based Interrupt Coalescing | |
US11086804B2 (en) | Storage system and method for reducing read-retry duration | |
US11720280B2 (en) | Storage system and method for improving utilization of a communication channel between a host and the storage system | |
CN118235118A (zh) | 用于存储器裸片状态感知主机命令提交的数据存储设备和方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240828 Address after: California, USA Patentee after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |