CN112015527B - 管理从提交队列获取和执行命令 - Google Patents

管理从提交队列获取和执行命令 Download PDF

Info

Publication number
CN112015527B
CN112015527B CN202010159576.8A CN202010159576A CN112015527B CN 112015527 B CN112015527 B CN 112015527B CN 202010159576 A CN202010159576 A CN 202010159576A CN 112015527 B CN112015527 B CN 112015527B
Authority
CN
China
Prior art keywords
command
execution
commands
determining
slot
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
Application number
CN202010159576.8A
Other languages
English (en)
Other versions
CN112015527A (zh
Inventor
S·贝尼斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US16/425,835 external-priority patent/US11467769B2/en
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of CN112015527A publication Critical patent/CN112015527A/zh
Application granted granted Critical
Publication of CN112015527B publication Critical patent/CN112015527B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开在一些方面涉及管理存储在提交队列中的命令的获取和执行。例如,由于内阻止条件(例如,大量特定类型的命令正等待在数据存储装置处执行),命令的执行可能在数据存储设备处被阻止。作为另一实例,由于外阻止条件(例如,主机装置可能指定某些命令要立即一个接一个地执行),命令的执行可能在数据存储设备处被阻止。本公开在一些方面涉及控制如何获取和执行命令,以使得近期不能由所述数据存储设备执行的命令不会妨碍其它命令(不受制于相同阻止条件)的执行。

Description

管理从提交队列获取和执行命令
相关申请的交叉引用
本申请是2018年2月28日提交的代理人案号WDT-1237CIP(SDA-2644-1US)的第15/908,710号美国专利申请的部分继续申请,前述美国专利申请是2015年9月28日提交的第14/868,373号美国专利申请(现在是第9,927,983号美国专利)的部分继续申请,前述专利中的每一者的全部内容以引用的方式并入本文中。
技术领域
在一些实施例中,本公开涉及非易失性存储器(NVM)装置以及配合其使用的存储器控制器和主机装置。更具体地但非排他性地,本公开涉及一种数据存储设备,所述数据存储设备从主机侧提交队列获取命令并执行那些命令。
背景技术
结合有诸如快闪NAND存储器之类的NVM装置的数据存储设备在许多消费或工业电子产品和计算机中正在替代或补充用于大容量存储的常规旋转硬盘驱动器。通常,主机装置可以包含装置控制器或与装置控制器通信,所述装置控制器又控制对一个或多个NVM装置(例如,NVM阵列)的存取。例如,主机装置可以向结合有NVM装置的数据存储设备的装置控制器发布写入命令和读取命令,以向NVM装置写入数据和从NVM装置读取数据。
在NVM Express(NVMe)系统中,主机装置在提交队列中写入数据存储设备命令,例如读取命令、写入命令和管理命令,这些命令在主机装置的存储器中实施。数据存储设备从提交队列中获取命令并执行命令。然后,数据存储设备将条目放置在也要在主机存储器中实施的完成队列中,以通知主机装置命令完成。主机装置通常会分配多个提交队列。因此,在提交队列存取的每个回合期间,数据存储设备确定要存取哪个提交队列以获得下一个要处理的命令。
当前版本为NVM Express(修订版1.3d,2019年3月20日)的NVMe标准描述了装置控制器可以从提交队列中选择命令的两种技术,其公开内容以全文引用的方式并入本文中。一种技术使用循环仲裁器,其中装置控制器以循环顺序从提交队列中选择命令。另一种技术使用加权循环仲裁器,其中为提交队列分配了静态优先级或权重,并使用权重以循环顺序从提交队列中选择命令以确定每个回合中的选择顺序。
在任一情况下,要从提交队列中获取的下一命令是基于静态仲裁逻辑,所述静态仲裁逻辑或不执行优先级(如在循环的情况下),或仅执行静态的主机定义优先级(如在加权循环的情况下)。如果存储装置具有足够的资源来处理所有主机I/O请求,则此类静态仲裁逻辑就足够了。然而,实际上,数据存储设备的存储资源可能是有限的,并且主机装置对那些资源的需求可能会超出数据存储设备迅速处理主机命令的能力。因此,需要用于管理数据存储设备对提交队列中存储的命令的使用的更有效技术。
发明内容
下文呈现本公开的一些方面的简化概述以提供对这些方面的基本理解。此概述并非本公开的所有所涵盖特征的广泛综述,且既不意在识别本公开的所有方面的关键或至关重要要素,也不意在划定本公开的任何或所有方面的范围。其唯一目的是以简化形式呈现本公开的一些方面的各种概念以作为稍后呈现的更详细描述的序言。
本公开的一个实施例提供一种数据存储设备,所述数据存储设备包含非易失性存储器阵列、接口,以及耦合到所述非易失性存储器阵列和所述接口的处理器。在一个实例中,所述处理器配置成:经由所述接口从另一设备的提交队列中获取命令;确定所述命令的执行当前被阻止;以及基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行。
本公开的一个实施例提供一种数据存储方法。在一个实例中,所述方法包含:经由所述接口从另一设备的提交队列中获取命令;确定所述命令的执行当前被阻止;以及基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行。
本公开的一个实施例提供一种数据存储设备。在一个实例中,所述设备包含:用于从提交队列中提取命令的构件;用于将所述命令存储在所述数据存储设备的命令槽中的可选构件;用于确定(例如,由于所述数据存储设备内部的条件或由于所述数据存储设备外部的条件而导致)所述命令的执行当前被阻止的构件;以及用于基于所述确定所述命令的执行当前被阻止而控制所述命令的所述执行的构件。
本公开的一个实施例提供一种非暂时性计算机可读介质,其存储用于存储数据的计算机可执行代码。在一个实例中,所述计算机可读介质包含用于以下操作的代码:经由所述接口从另一设备的提交队列中获取命令;确定所述命令的执行当前被阻止;以及基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行。
本公开的一个实施例提供一种数据存储设备,所述数据存储设备包含非易失性存储器阵列、接口,以及耦合到所述非易失性存储器阵列和所述接口的处理器。在一个实例中,所述处理器配置成:经由所述接口从另一设备接收指示,其中所述指示指示所述另一设备的多个提交队列中的至少一个提交队列包含至少一个命令;基于所述指示,估计所述多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令;以及作为所述估计的结果,从所述第一提交队列中共同获取所述多个命令。
本公开的一个实施例提供一种数据存储方法。在一个实例中,所述方法包含:经由所述接口从另一设备接收指示,其中所述指示指示所述另一设备的多个提交队列中的至少一个提交队列包含至少一个命令;基于所述指示,估计所述多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令;以及作为所述估计的结果,从所述第一提交队列中共同获取所述多个命令。
本公开的一个实施例提供一种数据存储设备。在一个实例中,所述设备包含:用于接收指示的构件,其中所述指示指示另一设备的多个提交队列中的至少一个提交队列包含至少一个命令;用于将所述命令存储在所述数据存储设备的命令槽中的可选构件;用于基于所述指示估计所述多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令的构件;以及用于作为所述估计的结果而从所述第一提交队列中共同获取所述多个命令的构件。
本公开的一个实施例提供一种非暂时性计算机可读介质,其存储用于存储数据的计算机可执行代码。在一个实例中,所述计算机可读介质包含用于以下操作的代码:经由所述接口从另一设备接收指示,其中所述指示指示所述另一设备的多个提交队列中的至少一个提交队列包含至少一个命令;基于所述指示,估计所述多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令;以及作为所述估计的结果,从所述第一提交队列中共同获取所述多个命令。
通过阅读以下详细描述将更加充分地理解本公开的这些和其它方面。所属领域的一般技术人员在结合附图阅读本公开的特定实施方案的以下描述后将了解本公开的其它方面、特征和实施方案。尽管可以相对于以下特定实施方案和附图讨论本公开的特征,但是本公开的所有实施方案都可以包含本文所讨论的有利特征中的一个或多个。换句话说,虽然可将一个或多个实施方案论述为具有特定有利特征,但也可以根据本文中所论述的本公开的各种实施方案来使用此类特征中的一个或多个。类似地,虽然特定实施方案可在下文论述为装置、系统或方法实施方案,但应理解,此类实施方案可以各种装置、系统和方法实施。
附图说明
下文参考附图中示出的特定实施例包含更具体的描述。应理解,这些附图仅描绘了本公开的某些实施例,因此不应被认为是对其范围的限制,通过使用附图,以附加的特征和细节来描述和解释本公开,在附图中:
图1示出包含根据本公开的一个或多个方面配置的数据存储设备的示例存储器系统。
图2示出根据NVMe架构的主机装置和数据存储设备的实例。
图3示出根据NVMe标准的循环命令获取的实例。
图4示出根据NVMe标准的加权循环命令调度的实例。
图5示出根据本公开的一个或多个方面的在内阻止和/或外阻止的情况下控制命令执行的操作的实例。
图6示出根据本公开的一个或多个方面的提高提交队列的优先级的实例。
图7示出根据本公开的一个或多个方面的用于在外阻止的情况下控制命令执行的操作的实例。
图8示出根据本公开的一个或多个方面的用于在外阻止的情况下控制命令执行的操作的另一实例。
图9示出根据本公开的一个或多个方面的用于在外阻止的情况下控制命令获取的操作的实例。
图10示出根据本公开的一个或多个方面的主机装置和NVMe装置的实例。
图11示出根据本公开的一个或多个方面配置的固态装置(SSD)的实例。
图12示出根据本公开的一个或多个方面的用于数据存储的设备(例如,电子装置)的示例硬件实施方案。
图13示出根据本公开的一个或多个方面的用于控制命令执行的示例过程。
图14示出根据本公开的一个或多个方面的用于数据存储的设备(例如,电子装置)的示例硬件实施方案。
图15示出根据本公开的一个或多个方面的用于控制命令获取的示例过程。
具体实施方式
在以下详细描述中,参考附图,所述附图形成描述的一部分。除了上文描述的说明性方面、实施例和特征之外,通过参考附图以及以下详细描述,另外的方面、实施例和特征将变得显而易见。每个附图中的元件的描述可以参考前述附图的元件。在附图中相似的数字可以指代相似的元件,包含相似元件的替代实施例。
在一些方面,本公开涉及用于管理由数据存储设备进行的命令获取和执行的各种设备、系统、方法和介质。例如,数据存储设备可以确定命令的执行是否被阻止。如果执行被阻止,则数据存储设备控制命令的执行,以防止被阻止的命令不适当地妨碍其它命令的执行。例如,如果命令将被阻止超过阈值时间段,则数据存储设备可以释放当前为所述命令分配的命令存储器位置(例如,命令槽),并采取措施在稍后的时间点执行所述命令。这样,释放的命令存储器位置可以用于执行另一命令(例如,另一类型的命令)。作为另一实例,数据存储设备可以估计(例如,预测)特定提交队列是否包含需要特定执行顺序的命令。在确定(例如,估计)提交队列可能包含此类命令时,数据存储设备共同(例如,同时或依次地)获取命令,使得数据存储设备可以根据规定的执行顺序来执行命令。
出于说明的目的,将在包含NAND存储器技术的存储器系统的背景下描述本公开的各个方面。NAND装置在本文中可以被称为NAND快闪存储器、NAND存储器装置、NAND快闪或NAND。一般而言,与更常规的存储器平台相比,NAND装置是具有高存储密度、快速存取时间、低操作功率需求和有利的抗冲击性的非易失性存储器。原始NAND装置可以配备有(例如,配置有)例如开放NAND快闪接口(ONFi)、通用快闪存储器接口(CFI)等的串行接口。NAND装置可以被配置为分立的存储器芯片,或可以与控制器封装在一起以形成安全数字(SD)存储卡、多媒体卡(MMC)或固态磁盘。NAND装置可以配置有单个快闪裸片或多个裸片。除了存储器单元之外,NAND装置还可以包含其它组件,例如控制/地址逻辑组件、I/O组件和数据寄存器组件。应理解,本文中的教示还适用于其它形式的存储器(例如,除NAND装置之外的NVM)。
示例存储器系统
图1示出包含主机装置102和通信地耦合到主机装置102的数据存储设备104的存储器系统100的实施例。在一些实施例中,数据存储设备104可以是固态装置(SSD)。在一些实施例中,SSD可以是固态驱动器。
主机装置(例如,主机计算机)102向数据存储设备104提供在主机装置102与数据存储设备104之间传输数据的命令。例如,主机装置102可以向数据存储设备104提供用于将数据写入数据存储设备104的写入命令,或者向数据存储设备104提供用于从数据存储设备104读取数据的读取命令。主机装置102可以是任何需要数据存储或检索以及用于与数据存储设备104通信的兼容接口的系统或装置。例如,主机装置102可以是计算装置、个人计算机、便携式计算机或工作站、服务器、个人数字助理、数码相机、数字电话等。
数据存储设备104包含主机接口106、控制器108、可选存储器110和非易失性存储器(NVM)112。主机接口106耦合到控制器108,并促进主机装置102与控制器108之间的通信。另外,控制器108耦合到存储器110和NVM 112。主机接口106可以是任何类型的通信接口,例如集成驱动电子设备(IDE)接口、通用串行总线(USB)接口、串行外围设备(SP)接口、高级技术附件(ATA)接口、小型计算机系统接口(SCSI)、IEEE 1394(火线)接口等。在一些实施例中,主机装置102包含数据存储设备104(例如,主机装置102和数据存储设备104被实施为单个组件)。在其它实施例中,数据存储设备104相对于主机装置102是远程的,或者被包含在与主机装置102通信耦合的远程计算系统中。例如,主机装置102可以通过无线通信链接与数据存储设备104通信。
控制器108控制数据存储设备104的操作。在各个实施例中,控制器108通过主机接口106从主机装置102接收命令114,并且执行命令以在主机装置102与NVM 112之间传输数据116。另外,控制器108执行内部操作,例如垃圾收集操作、数据完整性操作和损耗均衡操作。控制器108可以包含用于控制数据存储设备104的操作的任何类型的处理装置,例如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件等。
在一些实施例中,本文描述为由控制器108执行的一些或全部功能可以替代地由数据存储设备104的另一元件执行。例如,数据存储设备104可以包含微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件,或用于执行本文描述为由控制器108执行的一些或全部功能的任何种类的处理装置。在一些实施例中,本文描述为由控制器108执行的一个或多个功能替代地由主机装置102执行。在一些实施例中,本文描述为由控制器108执行的一些或全部功能可以替代地由另一元件执行,例如包含非易失性存储器元件和磁存储元件两者的混合驱动器中的控制器。
存储器110可以是能够存储数据的任何存储器、计算装置或系统。例如,存储器110可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、快闪存储装置、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。在各种实施例中,控制器108在主机装置102与NVM 112之间的数据传输期间使用存储器110或其一部分来存储数据。例如,存储器110或存储器110的一部分可以是高速缓存存储器。
主机装置102包含提交队列114,用于存储要由数据存储设备104获取和执行的命令。主机装置102还包含完成队列116,用于存储从数据存储设备104接收到的关于成功或不成功执行命令的信息。在一个提交队列114中对一个或多个命令进行排队之后,主机装置102发起所谓的门铃事务118以通知数据存储设备102在所述提交队列中有一个或多个命令排队。例如,门铃事务118可以写到数据存储设备104中的存储位置(例如,NVMe寄存器),设置指示特定提交队列包含至少一个命令和在所述提交队列中排队的命令数量的位。
控制器108包含用于命令获取、仲裁和执行的模块120(例如,硬件和/或软件)。控制器108还包含用于临时存储要由控制器108执行的命令(以及可选地,相关联的信息)的命令槽126(例如,缓冲器、寄存器等)。
用于命令获取、仲裁和执行的模块120控制如何从提交队列114中获取命令,并控制控制器108如何执行命令。例如,响应于门铃事务118,用于命令获取、仲裁和执行的模块120可以发布读取由门铃事务118识别的提交队列的请求122。响应于所述请求,主机装置102将对应的命令124(以及相关联的信息,如果适用的话)发送给数据存储设备104。
然后,用于命令获取、仲裁和执行的模块120可以将命令124放置在控制器108的命令槽126中的一个中,并且控制器108从命令槽中执行命令。例如,可以(例如,通过控制器108的逻辑)解析要执行的命令和相关联的信息(例如,所述命令的主机指针)并将其加载到特定命令槽中。随着控制器108的执行资源被释放(例如,完成另一命令的执行),控制器108将从一个命令槽126中执行一个命令。
在用于命令获取、仲裁和执行的模块120确定在控制器108处阻止了命令124的执行的情况下,用于命令获取、仲裁和执行的模块120可以控制命令124的执行以确保命令124不会长时间占据命令槽。例如,在给定时间点可以仅阻止一些类型的命令(例如,写入命令)。因此,如果命令将在近期不执行,则用于命令获取、仲裁和执行的模块120可以释放保存被阻止命令的命令槽。以此方式,可以将此时可以执行的其它类型的命令(例如,读取命令)加载到释放的命令槽中,从而更有效地利用数据存储设备104的资源。
用于命令获取、仲裁和执行的模块120还可以主动地从提交队列中获取多个命令。例如,一些命令可能需要以定义的顺序执行(例如,命令可能需要依次执行,以使得在这些命令的执行之间不执行其它命令)。为NVMe定义的FUSED命令是这种类型的受控执行命令的一个实例。主机装置102不告诉数据存储装置104哪种类型的命令存储在提交队列114中。因此,根据本文的教示,用于命令获取、仲裁和执行的模块120预测特定提交队列是否包含具有受控执行的多个命令(例如FUSED命令)。如果提交队列可能包含此类多个命令,则用于命令获取、仲裁和执行的模块120从提交队列中共同获取命令,并将命令放置在命令槽中,以使控制器108能够依次执行命令。例如,用于命令获取、仲裁和执行的模块120可以请求主机装置104一起发送所有命令,或者用于命令获取、仲裁和执行的模块120可以从提交队列中依次获取命令(例如,中间没有其它获取)。
示例NVMe架构
图2示出其中可以实施本文描述的主题的NVMe架构200的实例。根据NVMe标准,主机装置202使用提交队列将例如读取命令、写入命令和管理命令之类的存储器装置命令传送到数据存储设备204(例如,具有非易失性存储)。
主机装置202可以是能够存取存储装置上的存储器的任何合适的计算平台。例如,主机装置202可以是台式个人计算机、笔记本电脑、平板计算机、移动电话或存储阵列的前端。主机装置202包含主机处理器206和存储器208(例如DRAM)。主机装置202可以将数据存储在数据存储设备204中。
数据存储设备204可以是为主机装置202提供非易失性存储器存储的任何合适的装置。数据存储设备204可以是可移动存储装置,例如固态驱动器(例如,以装卸方式连接到主机装置202)。在替代实例中,数据存储设备204可以是不可装卸的或可以集成在主机装置202内。
在图2的实例中,数据存储设备204包含装置控制器210和非易失性存储器212。装置控制器210控制对非易失性存储器212的存取。在一个实施例中,装置控制器210可以是实施或支持NVMe协议的非易失性存储器控制器,并且非易失性存储器212可以是2D或3D NAND快闪存储器。
为了从数据存储设备204中读取数据或向数据存储设备204写入数据,主机处理器206生成命令并将命令存储在提交队列214-1、214-2和214-3中。出于说明目的,显示了三个提交队列。应理解,在任何给定时间,取决于主机系统的NVMe装置使用情况,提交队列可以多于或少于三个。装置控制器210从提交队列214-1、214-2和214-3获取命令,且接着执行命令。在命令完成后,装置控制器210将完成条目写入完成队列216-1、216-2和216-3。
NVMe标准定义了三种仲裁技术,用于从提交队列中提取命令。第一种技术使用循环仲裁并且是强制性的。第二种技术将加权循环与紧急优先级类别命令仲裁一起使用并且是可选的。最后一种技术是供应商专有的。
在循环仲裁技术中,数据存储设备在包含管理提交队列的所有提交队列之间提供循环命令仲裁。在这种情况下,所有提交队列都处理为具有相同的优先级。数据存储设备可以基于仲裁突发设置从每回合每个提交队列中选择多个候选命令进行处理。
图3示出通信系统300,其包含主机装置302和数据存储设备304,其中使用循环技术从提交队列(SQ)306-1到306-N中选择或获取命令。循环仲裁器308基于循环选择算法从提交队列306-1到306-N中的一个中静态地选择命令,而不论装置状态、对应完成队列的状态或任何其它信息。循环选择涉及按从1到N的顺序从每个队列306-1到306-N中进行选择,并以相同的顺序连续重复所述选择。循环仲裁器308指示命令获取逻辑310选择每个命令。命令获取逻辑310将命令提供给处理所述命令的命令处理逻辑(图3中未示出)。虽然循环选择可以确保平等地提供提交队列,但是可能无法最佳地利用存储装置资源,尤其是在从提交队列中获取命令但由于存储装置资源限制而无法对命令进行处理时。例如,如果数据存储设备304不能处理从提交队列获取的写入命令,则数据存储设备304可以等待直到有资源可用于处理写入命令。如果在等待时段期间用于处理读取命令的数据存储设备304处理资源可用但未被使用,则未有效利用此类资源。
在使用紧急优先级类别命令仲裁技术的加权循环中,存在三个严格优先级类别和三个加权循环优先级等级。如果提交队列A的严格优先级高于提交队列B,则提交队列A中的所有候选命令将在提交队列B的候选命令开始处理之前开始处理。
最高严格优先级类别是管理类别,其中包含提交给管理提交队列的任何命令。这种类别具有高于提交给任何其它提交队列的命令的最高严格优先级。
下一个最高严格优先级类别是紧急类别。分配给紧急优先级类别的任何I/O提交队列都在提交给管理提交队列的命令之后且在提交给加权循环优先级等级的任何命令之前提供。通常,主机装置软件会谨慎地将任何提交队列分配给紧急优先级类别,因为在紧急和非紧急I/O提交队列之间不存在公平性协议的情况下,在加权循环优先级等级中可能缺乏I/O提交队列。
最低严格优先级类别是加权循环类别。这种类别包含三个加权循环优先级等级(高、中等和低),它们使用加权循环仲裁共享剩余带宽。主机装置软件通过设置功能控制高、中等和低服务类别的权重。循环用于在分配给相同加权循环等级的多个提交队列中进行仲裁。可以从每回合的每个提交队列开始处理的候选命令的数目是仲裁突发设置或剩余加权循环信用额中的较小者。
图4示出通信系统400,其包含主机装置402和数据存储设备404,其中加权循环技术用于从提交队列(SQ)406-1到406-N中选择或获取命令。根据优先级对提交队列406-1到406-N进行分组。循环仲裁器(RR)408-1到408-N各自对其相应队列实施循环选择,并将所选队列传递到层次结构中的下一个等级。加权循环仲裁器(WRR)410使用分配的权重从循环仲裁器408-2到408-N在先前等级选择的候选项中选择命令,以在每个回合的循环选择中对候选项进行排序。加权循环仲裁器410将其选择的队列作为选择候选项传递到层次结构中的下一个等级,在所述实例中是最高等级。使用主机分配的优先级,层次结构中最高等级的优先级仲裁器412从加权循环仲裁器410的输出、管理队列406-1以及循环仲裁器406-1的输出中进行选择。虽然图4所示的技术允许对命令进行优先级排序,但是优先级由主机装置402静态地设置。因此,数据存储设备404可以获取不能立即处理的命令,而可以立即处理的其它命令仍然在提交队列406-1到406-N中排队。
NVMe标准还支持所谓的FUSED操作,所述操作通过将两个更简单的命令“融合”在一起而使得能够使用更复杂的命令。通常,这些命令统称为FUSED命令。
在FUSED操作中,命令以原子单位按顺序执行。例如,NVMe控制器可以确保在这两个命令之间不执行其它任何操作。
命令在同一提交队列中彼此相邻插入。提交队列尾部门铃指针更新将两个命令指示为一个门铃更新的一部分。
比较和写入是FUSED操作的一个实例。此操作将比较命令中指定的逻辑块的内容与存储在指示的逻辑块地址(LBA)范围内的数据进行比较。如果比较成功,则使用写入命令中提供的数据更新LBA范围。如果比较操作不成功,则由于失败的FUSED命令而导致写入操作被中止且命令状态被中止,并且LBA范围中的内容未被修改。
增强的NVMe命令选择
在NVMe系统环境中,主机软件将NVMe命令放置在主机存储器中分配的提交队列中,如上文所讨论。数据存储设备中的NVMe控制器基于队列优先级从提交队列中获取NVMe命令。
通常,优选的是足够早地获取命令,以便可以提高整体性能(例如,通过避免主机装置处的命令超时)。然而,将命令保存在NVMe控制器内部等待开始执行阶段可能会浪费NVMe控制器的昂贵资源,例如内部命令槽、内部缓冲区和相关联的逻辑。此外,长时间保存未执行的命令可能会导致性能下降,因为可以立即执行的其它命令可能已经使用了那些资源。例如,当NVMe控制器获取命令时,当所述命令等待执行时,所述命令将占用先前空闲的命令槽。如果此时NVMe控制器无法启动命令的执行阶段,则此命令槽将被浪费且无法充分利用,因为在此时段期间,其它命令可能已经使用了此槽。因此,不仅此特定命令的性能受到延迟执行的不利影响,而且其它I/O命令的性能也可能受到不利影响。
此外,使用常规技术,NVMe控制器可能遭受可能的命令执行死锁,尤其是对于FUSED命令操作。NVMe控制器架构针对常规操作(而非FUSED命令操作)进行了优化。在获取FUSED命令的第一部分(例如,第一命令)之后,将对应的命令保持在内部(占用命令槽),直到获取FUSED命令的第二部分(例如,第二命令)为止。仅当NVMe控制器同时具有FUSED命令的两个部分时,NVMe控制器才会开始此FUSED命令的执行阶段。因此,在等待开始执行阶段的同时将FUSED命令的第一部分保存在NVMe控制器内部可能会浪费NVMe控制器的昂贵资源。如果NVMe控制器中未完成命令的最大数目少于所支持的提交队列的最大数目,则当所有提交队列都具有FUSED命令时可能会发生死锁。
在一些方面,本公开涉及通过提供更好的命令利用和更好的内部资源利用来管理上述折衷。如,在获取命令之后但是在为此命令分配命令槽之前,NVMe控制器检查所述命令是否被至少一个事件(例如,内部事件和/或外部事件)阻止。当命令执行被内部事件阻止时,NVMe控制器确定何时将取消阻止。如果在相当长的一段时间内不会取消所述阻止,则NVMe控制器可以将此命令存储在DRAM或主机装置存储器(例如,主机存储器缓冲区(HMB))内部,释放命令槽,直到取消阻止。
在一些实施方案中,NVMe控制器将剩余的阻止持续时间(例如,命令的执行将被延迟的时间量)与阈值进行比较,以确定是否指示了阻止条件。例如,可以基于以下一项或多项来定义此阈值:可以存储用于执行的命令的最大数目(例如,在NVMe控制器或其它合适的装置中)、当前被阻止的可以存储用于执行的命令的数目、执行命令所花费的时间量,或其它与执行相关的信息。可以例如基于经验测试和/或模拟来定义此阈值,以识别提供最佳性能的阈值时间段。在一些实施方案中可以使用不同的阈值(例如,用于不同命令的不同阈值)。在一些实施方案中,可以使用大约10到20微秒的阈值。在其它实施方案中可以使用其它阈值。
LBA冲突是内阻止条件的一个实例。例如,如果主机装置发布对当前缓存在DRAM中的数据的读取,则控制器可能需要刷新DRAM并将数据写回到NAND装置(例如,控制器可能无法将数据直接从DRAM返回到主机装置)。因此,控制器将无法立即开始读取操作的执行阶段,从而导致临时阻止条件。
内阻止条件的另一实例涉及与特定名称空间(例如,一组LBA)相关联的命令。名称空间中的命令可以共享相同的属性(例如,安全区域、LBA大小、服务质量(QoS)等)。如果名称空间当前是饱和的,则控制器可以临时停止执行所述名称空间的所有命令(例如,为名称空间的所有命令维持一致服务(例如,QoS))。因此,可以临时阻止这些命令的执行。
定义的执行顺序命令的执行是外阻止条件的一个实例。例如,如果控制器仅将FUSED命令的第一部分加载到命令槽中,则控制器需要在执行FUSED命令的第一部分之前等待接收FUSED命令的第二部分。因此,由于主机装置从外部施加了执行顺序要求,因此在这种情况下阻止了FUSED命令的第一部分的执行。
如上文所提及,NVMe控制器架构针对非FUSED操作进行了优化。在一些方面,本公开涉及优化NVMe FUSED操作。这些优化可以包含用于FUSED命令执行的内部资源的优化,例如SRAM、NVMe命令槽、内部触发器等。这些优化可以包含在执行FUSED命令时避免死锁。这些优化可以包含考虑了FUSED操作的智能NVMe仲裁。这些优化可以包含将FUSED命令的两个部分作为单个条目排队到NVMe控制器固件,使得一旦接收到条目而没有任何额外流程,固件就可以立即开始执行。这些优化可以包含NVMe控制器所需的NVMe FUSED命令规则验证。
作为上述优化的实例,当命令执行被外部事件阻止(例如仅获取FUSED命令的第一命令)时,NVMe控制器可以缩短阻止时段(例如,通过提高提交队列的优先级)或释放命令槽并在稍后的时间执行FUSED命令。在第一实施例中,在获取FUSED命令的第一部分之后,相关提交队列的优先级提高,使得将尽快获取FUSED命令的第二部分。在第二实施例中,在设置指示此提交队列保存FUSED命令的同时,丢弃FUSED命令的第一部分。在命令获取仲裁的下一回合中,由于NVMe控制器知道此提交队列保存FUSED命令,因此NVMe控制器将获取FUSED命令的两个部分(例如,在一个获取操作中)。在第三实施例中,NVMe控制器预测提交队列何时保持FUSED命令并以单个单元的形式获取FUSED命令中的命令。此预测至少部分地基于主机装置进行门铃事务的方式。所有这些实施例可以并行作用。
因此,本公开在一些方面涉及减少不能立即执行的命令保存在内部(例如,在NVMe控制器中)的时间量。现在将结合图5到9中阐述的用于控制命令执行的操作来更详细地描述本公开的这些方面和其它方面。所有公开的实施例可以并行作用,但也可以在其之间动态切换。
示例命令执行控制操作
图5示出根据本文的教示可以结合控制命令执行一起执行的操作500的实施例。操作500可以在数据存储设备、主机装置、NVM装置或一些其它合适的一个或多个设备中进行。例如,这些操作中的一个或多个可以由图1的控制器108(例如,用于命令获取、仲裁和执行的模块120)执行。
在框502,数据存储设备(或其它合适的设备)获取命令。例如,数据存储设备可以响应于门铃事务从主机装置的提交队列中获取命令。
在框504,在为此命令分配命令槽之前,数据存储设备确定所述命令是否被一个或多个条件阻止。此类条件可以包括数据存储设备内部的条件(内部事件)或数据存储设备外部的条件(外部事件)。例如,内部条件可以包含内部资源不足、NAND正在忙于内部管理或LBA重叠中的一个或多个。外部条件可以包含数据存储设备仅获取了FUSED命令的一部分的情形。
如果命令未被阻止(例如,命令的执行阶段可以立即开始),则在框506,数据存储设备开始命令的执行。
如果命令被阻止,则在框508,数据存储设备确定阻止是由于内部条件还是由于外部条件引起。
如果阻止是由于内部条件引起,则在框510,数据存储设备评估阻止时段以确定何时将取消阻止。
在框512,如果阻止时段相对短(例如,小于阈值时间量),则操作流程进行到框514。
在框514,数据存储设备等待直到命令执行不再被阻止,然后开始命令的执行。
如果在框512确定阻止时段太长(例如,大于阈值时间量),则在框516,数据存储设备将此命令保存在存储器(例如,DRAM或HMB)内部,并且如果适用,释放命令槽。一旦取消了阻止,数据存储设备就将命令信息从存储器复制到命令槽并执行命令。
如果在框508确定阻止是由于外部条件引起,则在框518,数据存储设备可以使用三种技术中的任何一种来缩短阻止时段。在第一种技术中,数据存储设备改变命令获取的优先级方案(例如,通过提高包含FUSED命令的提交队列的优先级)。在第二种技术中,数据存储设备丢弃FUSED命令的第一部分,且接着在稍后的时间点与FUSED命令的另一部分一起获取所述第一部分。在第三种技术中,数据存储设备将FUSED命令的第一部分保存在存储器(例如,DRAM或HMB)内部,并且如果适用,释放命令槽。一旦取消了阻止(例如,一旦数据存储设备获取了FUSED命令的第二部分),数据存储设备就将命令信息从存储器复制到命令槽并执行命令。
NVMe标准规定,数据存储设备应确保在执行FUSED命令时主机装置不违反FUSED命令规则。一种验证技术是确保FUSED命令的两个部分都在提交队列中的相邻槽中提交。当使用本文描述的技术时,此验证相对简单,因为FUSED命令可能作为数据存储装置固件的单个条目排队。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
示例基于优先级的命令执行控制
图6示出上述用于缓解外阻止的第一种技术所使用的优先级等级的实例。在图6的实例中,NVMe控制器(未示出)针对FUSED操作实施两级NVMe提交队列仲裁逻辑。第一NVMe仲裁级别602用于如NVMe标准中定义的普通命令(非FUSED命令)。第二NVMe仲裁级别604具有更高优先级,并且用于FUSED操作。在一些实施方案中,可以复制NVMe仲裁逻辑,其中一组NVMe仲裁逻辑用于普通命令,而另一组NVMe仲裁逻辑用于FUSED命令的第二部分。
当NVMe控制器检测到内部仅保存FUSED命令的一部分时,NVMe控制器提高相关提交队列的优先级(从第一NVMe仲裁级别602提高到第二NVMe仲裁级别604),因此将尽快获取FUSED命令的第二部分。
例如,在仲裁的下一回合中,由针对第二NVMe仲裁级别604的FUSED操作的任何仲裁选择的提交队列将比由针对第一NVMe仲裁级别602的非FUSED操作的任何仲裁选择的提交队列具有更高的优先级。因此,固定仲裁逻辑606将为FUSED操作选择较高优先级的提交队列,作为此回合的仲裁要存取的提交队列。
示例基于优先级的命令执行控制操作
图7示出可以结合上述用于缓解外阻止的第一种技术来执行的操作700的实施例。操作700可以在数据存储设备、主机装置、NVM装置或一些其它合适的一个或多个设备中进行。例如,这些操作中的一个或多个可以由图1的控制器108(例如,用于命令获取、仲裁和执行的模块120)执行。
在框702,数据存储设备(或其它合适的设备)获取命令。例如,数据存储设备可以响应于门铃事务从主机装置的提交队列中获取命令。
在框704,数据存储设备确定命令是否是FUSED命令。
如果命令不是FUSED命令(例如,命令的执行阶段可以立即开始),则在框706,数据存储设备以普通方式执行命令。
如果在框704确定命令是FUSED命令,则在框708,数据存储设备确定命令是否是FUSED命令的第一部分。
如果命令不是FUSED命令的第一部分(例如,命令是FUSED命令的第二部分),则在框710,数据存储设备将对应提交队列的优先级更改为普通。例如,当获取了FUSED命令的第一部分时,在先前的仲裁回合期间,将提高此提交队列的优先级。因此,框710的操作将此提交队列的优先级降低回普通。在将相关的获取请求发送到主机装置之后以及在获取命令之前,可以立即执行这些操作。
如果在框708确定命令是FUSED命令的第一部分,则在框712,数据存储设备确定是否已经将另一获取请求发布到相关提交队列。
在框714,如果没有将进一步的获取请求发布到此提交队列,则提高此提交队列的优先级,因此,将尽快获取此FUSED命令的第二部分。
在框716,如果已经将另一获取请求发布到相关提交队列,则数据存储设备继续普通操作。即,以普通方式执行命令。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
示例基于重试的命令执行控制操作
图8示出可以结合上述用于缓解外阻止的第二种技术来执行的操作800的实施例。操作800可以在数据存储设备、主机装置、NVM装置或一些其它合适的一个或多个设备中进行。例如,这些操作中的一个或多个可以由图1的控制器108(例如,用于命令获取、仲裁和执行的模块120)执行。
在框802,数据存储设备(或其它合适的设备)获取命令。例如,数据存储设备可以响应于门铃事务从主机装置的提交队列中获取命令。
在框804,数据存储设备确定命令是否是FUSED命令。
如果命令不是FUSED命令(例如,命令的执行阶段可以立即开始),则在框806,数据存储设备以普通方式执行命令。
如果在框804确定命令是FUSED命令,则在框808,数据存储设备确定命令是否是单独获取的(例如,在单个获取命令中)FUSED命令的第一部分。
如果命令不是单独获取的FUSED命令的第一部分,则在框810,数据存储设备以普通方式处理命令。例如,如果相关联的获取请求在单个PCIe数据包中要求两个命令,则第二FUSED命令将在接下来的几个硬件周期中出现。在这种情况下,数据存储设备可以像通常那样简单地执行命令。作为另一实例,命令可以是FUSED命令的第二部分。在这种情况下,数据存储设备可以依次执行先前获取的FUSED命令的第一部分和FUSED命令的第二部分。
如果在框808确定命令是单独获取的FUSED命令的第一部分,则在框812,数据存储设备确定是否已经向相关的提交队列发布了另一获取请求。
在框814,如果没有向此提交队列发布进一步的获取请求,则丢弃命令,同时将此提交队列标记为包含FUSED命令。在下一回合的NVMe仲裁逻辑中,数据存储设备知道此提交队列中的下一个命令是FUSED命令,并从此提交队列中一个接一个地获取至少两个命令。例如,可以使用到主机装置存储器的单个请求或一个接一个地使用两个读取请求来完成此操作。
在框816,如果已经将另一获取请求发布到相关的提交队列,则数据存储设备将此提交队列标记为普通。这将提交队列的任何标记重置为包含在先前的仲裁回合期间在框814处可能已经出现的FUSED命令。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
示例基于预测的命令获取操作
图9示出可以结合预测提交队列是否包含如上所述的FUSED命令来执行的操作900的实施例。操作900可以在数据存储设备、主机装置、NVM装置或一些其它合适的一个或多个设备中进行。例如,这些操作中的一个或多个可以由图1的控制器108(例如,用于命令获取、仲裁和执行的模块120)执行。
在框902,数据存储设备(或其它合适的设备)确定主机装置发布针对提交队列的门铃写入。
在框904,数据存储设备确定主机装置是否在提交队列中对两个或更多个命令进行排队。
如果主机装置没有将两个或更多个命令进行排队,则在框906,数据存储设备以普通方式处理提交队列中的命令。
如果在框904确定主机装置已对两个或更多个命令进行排队,则在框908,数据存储设备一个接一个地获取提交队列中的所有命令,在其间不从其它提交队列中获取。
因此,数据存储设备基于主机装置写入门铃寄存器的方式来预测何时存在FUSED命令。根据NVMe标准,必须使用单个事务来写入FUSED命令的门铃。数据存储设备检测到门铃事务指示提交队列保存多个命令。在这种情况下,数据存储设备尝试获取通过单个门铃存取而更新的所有命令(例如,一个接一个)。以此方式,数据存储设备可能够一个接一个地获取FUSED命令的所有部分,而在它们之间不获取任何其它命令。
在一些实施例中,数据存储设备可以监视门铃事务以识别主机装置倾向于向其中写入FUSED命令的任何提交队列。在这种情况下,数据存储设备可以包含随时间推移捕获主机装置提交队列门铃写入事务的逻辑。基于此信息,识别可能包含FUSED命令的提交队列。例如,逻辑可以基于主机装置在所述提交队列中对FUSED命令进行排队的频率来产生(例如,基于收集的门铃统计信息)提交队列是否包含FUSED命令的估计。
因此,关于是否从提交队列中获取多个命令的决策(例如,在框906)可以基于:1)主机装置是否在所述提交队列中将两个或更多个命令进行排队(例如,如在框904所确定);和/或2)关于提交队列是否可能包含FUSED命令的估计(例如,基于收集的统计信息)。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
示例获取和执行组件
图10示出结合如本文教示的命令获取和执行的存储器系统1000的实例。在图10的实例中,存储器系统1000是NVMe系统。然而,本文的教示适用于其它类型的系统。存储器系统1000包含主机装置1002和NVMe装置1004(例如,数据存储装置的实例)。主机装置1002包含主机存储器1006,所述主机存储器包含主机队列1008(例如前述的SQ和CQ)、数据缓冲区1010和其它存储器组件1012。NVMe装置1004包含存储器阵列1014、NVMe装置控制器1016和DRAM 1018。NVMe装置控制器1016包含一个或多个处理器1020,其负责执行前端和后端任务以及其它任务。NVMe装置控制器1016包含命令获取器(例如,SQ选择器)1022,其配置成从主机装置1002处的提交队列(SQ)中获取命令,解析命令,并在内部对命令进行排队。NVMe装置控制器1016包含命令执行器1024,用于仲裁命令并处理命令的执行(例如,如本文所讨论的)。NVMe装置控制器1016包含门铃存储装置1026,用于监视门铃事务、在其上存储历史门铃事务信息(例如,主机装置提交队列门铃写入的历史)和统计信息,以及关于特定提交队列是否包含FUSED命令或其它相似命令(例如,如本文所讨论)的预测。
NVMe装置控制器1016还包含各种支持组件。这些组件包含控制路径模块1028、调度器1030、PCIe MAC PHY接口1032、DMA 1034、纠错模块1036、快闪接口模块1038和DRAM控制器1040。在操作中,控制路径模块1028可以负责管理主机完成队列。除其它功能外,控制路径模块1028将从调度器1030接收的完成条目经由PCIe MAC PHY接口1032路由到主机装置1002内的完成队列(CQ)。要传递到主机装置的数据页(例如读取命令的结果)可以使用一个或多个DMA 1034来传递。快闪接口模块1038负责控制和存取存储器阵列1014。纠错模块1036负责对由NVMe装置控制器1016处理的数据进行纠错。分别通过箭头1042和1044示出来自NVMe装置1004的入口和出口。
在一些方面,命令获取器1022和命令执行器1024可以实施本文描述的命令获取和执行控制功能。命令获取器1022负责在管理和仲裁支持的提交队列的同时从主机装置1002中获取NVMe命令。命令执行器1024从命令获取器获得NVMe命令,对其进行解析,并且开始执行阶段。根据本文的教示,命令执行器1024检测到FUSED命令的第一部分已经到达,并且基于所述检测,通过提高相关提交队列的优先级来动态地改变仲裁方案(例如,命令执行器1024将增大的提交队列优先级的指示发送到命令获取器1022)。在一些实施例中,命令执行器1024可以丢弃FUSED命令的第一部分,并且触发命令获取器1022以在随后的仲裁回合中重新获取FUSED命令的第一部分以及FUSED命令的第二部分。在一些实施例中,命令获取器1022预测何时FUSED命令位于提交队列中,并且预先一起(例如,作为单个实体)获取FUSED命令的两个部分。
可以将命令临时保存在主机装置1002的DRAM 1018或存储器(例如HMB)中,直到释放阻止为止。在此时段期间,命令槽(例如,NVMe控制器1016中的寄存器)是空闲的,并且可用于执行其它命令。
示例SSD存储装置
图11示出可以报告如本文所教示的可用物理存储空间的SSD 1102的实施例。SSD1102包含控制器1104,其向存储器装置1106(例如,NVM)写入数据和从存储器装置1106读取数据,并且执行其它相关联的数据存储操作。
控制器1104和存储器装置1106经由对应接口彼此通信。控制器1104包含存储器装置输入/输出(I/O)接口1108,其用于向存储器装置发送命令(例如,经由命令总线),向存储器装置1106发送数据和从存储器装置1106接收数据(例如,经由数据总线),以及用于在适当时发送和接收其它信令(例如,由存储器装置1106生成的读取/忙碌指示(RBx))。类似地,存储器装置1106包含控制器接口1110,其用于从控制器1104接收命令(例如,经由命令总线),向控制器1104发送数据和从控制器1104接收数据(例如,经由数据总线),以及用于在适当时发送和接收其它信令(例如,RBx)。
存储器装置1106包含用于存储数据的NVM磁芯阵列1112、用于将存储的数据输出到控制器接口1110并从控制器接口1110接收要存储的数据的外部接口数据锁存器1114,以及用于存储由存储器装置1106使用的操作数据的一组内部数据锁存器1116。存储器装置1106还包含用于从多层NVM磁芯阵列1112读取数据的读取电路1118、用于将数据写入多层NVM磁芯阵列1112的编程电路1120,以及用于擦除多层NVM磁芯阵列1112中的数据的擦除电路1122。
根据本文的教示,控制器1104包含用于命令获取、仲裁和执行的模块1126,其可以配置成执行本文描述的一个或多个操作。例如,用于命令获取、仲裁和执行的模块1126可以对应于图1的用于命令获取、仲裁和执行的模块120,并且执行本文结合图1到9、13和15描述的报告相关操作中的一个或多个。
第一示例设备
图12示出根据本公开的一个或多个方面的配置成进行通信的设备1200的实施例。设备1200可以在数据存储装置、SSD、存储器控制器、固态驱动器、主机装置、NVM装置、NAND裸片或支持数据存储的一些其它类型的装置中体现或实施。在各种实施方案中,设备1200可以在计算装置、个人计算机、便携式装置或工作站、服务器、个人数字助理、数码相机、数字电话、娱乐装置、医疗装置或存储数据的任何其它电子装置内体现或实施。
设备1200包含通信接口1202、存储介质1204、存储器装置(例如,NVM装置)1208和处理电路1210(例如,至少一个处理器和/或其它合适的电路系统)。这些组件可以经由信令总线或其它合适的组件(一般由图12中的连接线表示)耦合到彼此和/或放置成彼此电连通。信令总线可取决于处理电路1210的特定应用和总体设计约束而包含任何数目个互连总线和桥接器。信令总线将各种电路链接在一起,使得通信接口1202、存储介质1204和存储器装置1208中的每一个耦合到处理电路1210和/或与处理电路1210电连通。信令总线还可以链接所属领域中众所周知的各种其它电路(未示出),例如时序源、外围装置、电压调节器和功率管理电路,因此将不再进一步描述。
通信接口1202提供用于通过传输介质与其它设备通信的构件。在一些实施方案中,通信接口1202包含电路系统和/或编程(例如,程序),其适于促进关于系统中的一个或多个装置的双向信息通信。在一些实施方案中,通信接口1202可以配置成用于基于线材的通信。例如,通信接口1202可以是总线接口、发送/接收接口,或包含驱动器、缓冲区或用于输出和/或获得信号(例如,从集成电路输出信号和/或将信号接收到集成电路中)的其它电路系统的一些其它类型的信号接口。通信接口1202用作用于接收的构件和/或用于传输的构件的一个实例。在一些实施方案中,通信接口1202可以配置用于无线通信。在一些实施方案中,通信接口包含主机接口1214。在一些实施方案中,通信接口可以包含至少一个其它接口1216。例如,通信接口1202可以包含至少一个射频(RF)接收器和/或RF发射器(例如,共同地,RF收发器)。
存储器装置1208可以表示一个或多个存储器装置。如图所示,存储器装置1208可以维护映射信息1218以及设备1200所使用的其它信息。在一些实施方案中,存储器装置1208和存储介质1204被实施为公共存储器组件。存储器装置1208还可以用于存储由处理电路1210或设备1200的一些其它组件操纵的数据。
存储介质1204可以表示用于存储编程的一个或多个计算机可读、机器可读和/或处理器可读装置,所述编程例如处理器可执行代码或指令(例如,软件、固件)、电子数据、数据库或其它数字信息。存储介质1204也可以用于存储当执行编程时由处理电路1210操纵的数据。存储介质1204可以为可由通用或专用处理器存取的任何可用介质,包含便携式或固定存储装置、光学存储装置,以及能够存储、含有或载运编程的各种其它介质。
借助于实例而非限制,存储介质1204可以包含磁性存储装置(例如,硬盘、软盘、磁条)、光盘(例如,压缩光盘(CD)或数字多功能光盘(DVD))、智能卡、快闪存储器装置(例如,卡、棒或键驱动)、随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、寄存器、可移动磁盘,以及用于存储可由计算机存取和读取的软件和/或指令的任何其它合适的介质。存储介质1204可以体现在制品(例如,计算机程序产品)中。例如,计算机程序产品可以包含封装材料中的计算机可读介质。鉴于上文,在一些实施方案中,存储介质1204可以是非暂时性(例如,有形的)存储介质。例如,存储介质1204可以是存储计算机可执行代码的非暂时性计算机可读介质,包含执行如本文描述的操作的代码。
存储介质1204可以耦合到处理电路1210,使得处理电路1210可以从存储介质1204读取信息,并且可以向存储介质1204写入信息。也就是说,存储介质1204可以耦合到处理电路1210,使得存储介质1204至少可由处理电路1210存取,包含其中至少一种存储介质与处理电路1210集成在一起的实例和/或其中至少一种存储介质与处理电路1210分开的实例(例如位于设备1200中、位于设备1200外部、分布在多个实体之间等)。
由存储介质1204存储的编程在由处理电路1210执行时使处理电路1210执行本文描述的各种功能和/或处理操作中的一个或多个。例如,存储介质1204可以包含配置成调节处理电路1210的一个或多个硬件块处的操作,以及利用通信接口1202来利用其相应通信协议进行无线通信的操作。
处理电路1210通常适合于处理,包含存储在存储介质1204上的此类编程的执行。如本文所用,术语“代码”或“编程”将广义地解释为包含但不限于指令、指令集、数据、代码、代码段、程序代码、程序、编程、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行程序、执行线程、过程、函数等,无论被称作软件、固件、中间件、微码、硬件描述语言还是其它。
处理电路1210布置成获得、处理和/或发送数据,控制数据存取和存储,发出命令,且控制其它所要操作。处理电路1210在至少一个实例中可以包含配置成实施由适当介质提供的所要编程的电路。例如,处理电路1210可以实施为一个或多个处理器、一个或多个控制器和/或配置成执行可执行编程的其它结构。处理电路1210的实例可以包含通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件,或设计成执行本文描述的功能的其任何组合。通用处理器可以包含微处理器以及任何常规的处理器、控制器、微控制器或状态机。处理电路1210也可以实施为计算组件的组合,例如控制器和微处理器的组合、多个微处理器、结合ASIC和微处理器的一个或多个微处理器、或任何其它数目的不同配置。处理电路1210的这些实例是用于说明,且本公开范围内的其它合适配置也是预期的。
根据本公开的一个或多个方面,处理电路1210可以适于执行本文描述的设备中的任一者或全部的特征、过程、功能、操作和/或例程中的任一者或全部。例如,处理电路1210可以配置成执行相对于图1到9和13描述的任何步骤、功能和/或过程。如本文所使用,术语“相对于处理电路1210适合的”可以指处理电路1210经过配置、采用、实施和/或编程中的一个或多个,以执行根据本文描述的各种特征的特定过程、功能、操作和/或例程。
处理电路1210可以是专用处理器,例如专用集成电路(ASIC),其用作用于执行结合图1到9和13描述的操作中的任一者的构件(例如,用于执行所述操作的结构)。处理电路1210用作用于发送的构件和/或用于接收的构件的一个实例。在各种实施方案中,处理电路1210可以至少部分地提供和/或并入上文针对图1的控制器108描述的功能。
根据设备1200的至少一个实例,处理电路1210可以包含以下中的一个或多个:用于获取的电路/模块1220、用于确定的电路/模块1222、用于控制的电路/模块1224、用于执行的电路/模块1226,或用于存储的电路/模块1228。
如上文所提及,由存储介质1204存储的程序当由处理电路1210执行时使处理电路1210执行本文描述的各种功能和/或过程操作中的一或多者。例如,程序可以使处理电路1210执行本文在各种实施方案中相对于图1到9和13所描述的各种功能、步骤和/或过程。如图12所示,存储介质1204可以包含以下中的一个或多个:用于获取的代码1240、用于确定的代码1242、用于控制的代码1244、用于执行的代码1246,或用于存储的代码1248。
第一示例过程
图13示出根据本公开的一些方面的用于通信的过程1300。过程1300可以在处理电路(例如,图12的处理电路1210)内发生,所述处理电路可以位于数据存储装置、控制器、SSD、主机装置、NVM装置、NAND裸片,或一些其它合适的设备中。当然,在本公开范围内的各个方面中,过程1300可以由能够支持与存储器有关的操作的任何合适的设备来实施。
在框1302,设备(例如,数据存储设备的控制器)从另一设备的提交队列中获取命令。
在可选框1304,在从提交队列中检索命令之后,设备可以将命令存储在命令槽中。
在框1306,设备确定命令的执行当前被阻止。在一些方面,确定命令的执行当前被阻止可以包含确定执行是由于数据存储设备内部的条件而被阻止。在一些方面,为了确定命令的执行当前被阻止,设备可以确定在数据存储设备的命令槽中当前被阻止的命令的数量,并且确定所述数量大于或等于阈值。在一些方面,确定命令的执行当前被阻止可以包含确定执行是由于数据存储设备外部的条件而被阻止。在一些方面,为了确定命令的执行当前被阻止,设备可以确定命令是具有定义的执行顺序的多个命令的一部分,并且确定命令在多个命令中的至少一个命令之前。在一些方面,多个命令可以包含(例如,可以是)FUSED命令。
在框1308,设备基于确定命令的执行当前被阻止而控制命令的执行。
在可选框1310,设备可以依次执行多个命令(例如,FUSED命令中的命令)。
在一些方面,过程1300可以包含在从提交队列中检索命令之后将命令存储在命令槽中。在一些方面,为了控制命令的执行,设备可以:估计命令将保持被阻止的时间段;确定所述时间段小于或等于阈值;并且作为确定所述时间段小于或等于阈值的结果,等待从命令槽执行命令,直到命令不再被阻止为止。在一些方面,为了控制命令的执行,设备可以:估计命令将保持被阻止的时间段;确定所述时间段大于或等于阈值;作为确定所述时间段大于或等于阈值的结果,将命令存储在存储器中;在存储命令之后释放命令槽;在释放命令槽之后,确定命令不再被阻止;并且响应于确定命令不再被阻止,将命令从存储器中复制到释放的命令槽或另一命令槽中。
在一些方面,过程1300可以包含:确定命令是具有定义的执行顺序的多个命令的一部分;以及确定命令在多个命令中的至少一个命令之前。在一些方面,过程1300可以进一步包含:作为确定命令在多个命令中的至少一个命令之前的结果,提高提交队列的优先级。在一些方面,过程1300可以进一步包含:在从提交队列中检索命令之后,将命令存储在命令槽中;作为确定命令在多个命令中的至少一个命令之前的结果,释放命令槽;在释放命令槽之后,从提交队列中共同获取命令和至少一个命令。在一些方面,过程1300可以进一步包含:在从提交队列中检索命令之后,将命令存储在命令槽中;作为确定命令在多个命令中的至少一个命令之前的结果,将命令存储在存储器中;在存储命令之后释放命令槽;在释放命令槽之后,确定命令不再被阻止;并且作为确定命令不再被阻止的结果,将要执行的命令复制到释放的命令槽或另一命令槽中。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
第二示例设备
图14示出根据本公开的一个或多个方面的配置成进行通信的设备1400的实施例。设备1400可以在数据存储装置、SSD、存储器控制器、固态驱动器、主机装置、NVM装置、NAND裸片或使用数据存储的一些其它类型的装置中体现或实施。在各种实施方案中,设备1400可以在计算装置、个人计算机、便携式装置或工作站、服务器、个人数字助理、数码相机、数字电话、娱乐装置、医疗装置或存储数据的任何其它电子装置内体现或实施。
设备1400包含通信接口1402、存储介质1404、用户接口1406、存储器装置1408(例如,存储报告信息1418),以及处理电路1410(例如,至少一个处理器和/或其它合适的电路系统)。在各种实施方案中,用户接口1406可包含以下中的一个或多个:小键盘、显示器、扬声器、麦克风、触摸屏显示器、用于从用户接收输入或将输出发送到用户的一些其它电路系统。在一些实施方案中,通信接口1402包含SSD存储装置接口1414。这一些实施方案中,通信接口1402可以包含用户接口1416。这一些实施方案中,通信接口1402可以包含至少一个其它接口。例如,通信接口1402可以包含至少一个射频(RF)接收器和/或RF发射器(例如,共同地,RF收发器)。通常图14的组件可以类似于图12的设备1200的对应组件。
根据本公开的一个或多个方面,处理电路1410可以适于执行本文描述的设备中的任一者或全部的特征、过程、功能、操作和/或例程中的任一者或全部。例如,处理电路1410可以配置成执行相对于图1到9和15描述的任何步骤、功能和/或过程。如本文所使用,术语“相对于处理电路1410适合的”可以指处理电路1410经过配置、采用、实施和/或编程中的一个或多个,以执行根据本文描述的各种特征的特定过程、功能、操作和/或例程。
处理电路1410可以是专用处理器,例如专用集成电路(ASIC),其用作用于执行结合图1到9和15描述的操作中的任一者的构件(例如,用于执行所述操作的结构)。处理电路1410用作用于发送的构件和/或用于接收的构件的一个实例。各种实施方案中,处理电路1410可以至少部分地提供和/或并入上文针对图1的控制器108描述的功能。
根据设备1400的至少一个实例,处理电路1410可以包含以下中的一个或多个:用于接收的电路/模块1420、用于确定的电路/模块1422、用于获取的电路/模块1424、用于执行的电路/模块1426,或用于发布的电路/模块1428。
如上文所提及,由存储介质1404存储的编程当由处理电路1410执行时使处理电路1410执行本文描述的各种功能和/或过程操作中的一或多者。例如,编程可以使处理电路1410执行本文在各种实施方案中相对于图1到9和15所描述的各种功能、步骤和/或过程。如图14所示,存储介质1404可以包含以下中的一个或多个:用于接收的代码1440、用于确定的代码1442、用于获取的代码1444、用于执行的代码1446,或用于发布的代码1448。
第二示例过程
图15示出根据本公开的一些方面的用于通信的过程1500。过程1500可以在处理电路(例如,图14的处理电路1410)内发生,所述处理电路可以位于数据存储装置、SSD、存储器控制器、固态驱动器、主机装置、NVM装置、NAND裸片,或一些其它合适的设备中。当然,在本公开范围内的各个方面中,过程1500可以由能够支持与存储器有关的操作的任何合适的设备来实施。
在框1502,设备(例如,数据存储设备的控制器)接收指示,所述指示指示另一设备的至少一个提交队列包含至少一个命令。
在框1504,设备基于在框1502接收的指示,估计多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令。在一些方面,多个命令可以包含(例如,可以是)FUSED命令。在一些方面,指示可以是另一设备进行的门铃事务的结果。在一些方面,对第一提交队列是否包含具有定义的执行顺序的多个命令的估计可以包含:确定指示指示第一提交队列包含超过一个命令。
在框1506,作为确定的结果,设备从第一提交队列中共同获取多个命令。在一些方面,为了共同地从第一提交队列中获取多个命令,设备可以向另一设备发布针对多个命令的单个读取请求。在一些方面,为了共同地从第一提交队列中获取多个命令,设备可以向另一设备发布连续的读取请求。
在可选框1508,设备可以依次执行多个命令(例如,FUSED命令的命令)。
在一些方面,过程1500可以包含确定另一设备已将具有定义的执行顺序的命令重复写入第一提交队列,其中估计第一提交队列是否包含具有定义的执行顺序的多个命令进一步基于确定另一设备已将具有定义的执行顺序的命令重复写入第一提交队列。
在一些方面,过程1500可以包含确定另一设备已将具有定义的执行顺序的命令写入第一提交队列的速率,以及确定所述速率大于或等于阈值,其中估计第一提交队列是否包含具有定义的执行顺序的多个命令进一步基于确定所述速率大于或等于阈值。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
额外方面
根据本公开的一些方面的另一通信过程的实例如下。此过程可以在处理电路(例如,图12的处理电路1210)内发生,所述处理电路可以位于数据存储装置、控制器、SSD、主机装置、NVM装置、NAND裸片,或一些其它合适的设备中。当然,在本公开范围内的各个方面中,此过程可以由能够支持与存储器有关的操作的任何合适的设备来实施。
在第一框,设备(例如,数据存储设备的控制器)从主机装置的提交队列中获取命令。
在第二框,设备将命令存储在命令槽中。
在第三框,设备确定命令的执行当前被阻止。在一些方面,确定命令的执行当前被阻止可以包含:确定执行是由于数据存储设备内部的条件还是由于数据存储设备外部的条件而被阻止。在一些方面,确定命令的执行当前被阻止可以包含:估计命令将保持被阻止的时间段,以及确定所述时间段大于或等于阈值。在一些方面,确定命令的执行当前被阻止可以包含:确定数据存储设备的命令槽中当前被阻止的命令的数量;以及确定所述数量大于或等于阈值。在一些方面,确定命令的执行当前被阻止可以基于与一定数量的命令的执行相关联的至少一个时间段。在一些方面,确定命令的执行当前被阻止可以包含:确定命令是具有定义的执行顺序的多个命令的一部分;以及确定尚未从提交队列中获取所述多个命令中的至少一个命令。在一些方面,多个命令可以包含(例如,可以是)FUSED命令。
在第四框,设备基于确定命令的执行当前被阻止而控制命令的执行。在一些方面,控制命令的执行可以包含:确定所述命令将保持被阻止的时间段小于或等于阈值;以及作为确定所述时间段小于或等于阈值的结果,将命令保留在命令槽中以在命令不再被阻止之后执行。在一些方面,控制命令的执行可以包含:确定命令将保持被阻止的时间段大于或等于阈值;将命令存储在存储器中;为另一命令重新分配命令槽;确定所述命令不再被阻止;以及将所述命令从存储器复制到另一命令槽以供执行。在一些方面,控制命令的执行可以包含:确定命令是具有定义的执行顺序的多个命令的一部分;确定尚未从提交队列中获取多个命令中的至少一个命令;作为确定尚未从提交队列中获取多个命令中的至少一个命令的结果,提高提交队列的优先级;从提交队列中获取至少一个命令;以及依次执行命令和至少一个命令。在一些方面,控制命令的执行可以包含:确定命令是具有定义的执行顺序的多个命令的一部分;确定尚未从提交队列中获取多个命令中的至少一个命令;作为确定尚未从提交队列中获取多个命令中的至少一个命令的结果,为另一命令重新分配命令槽;从提交队列中共同获取命令和至少一个命令;以及依次执行命令和至少一个命令。在一些方面,控制命令的执行可以包含:确定命令是具有定义的执行顺序的多个命令的一部分;确定尚未从提交队列中获取多个命令中的至少一个命令;作为确定尚未从提交队列中获取多个命令中的至少一个命令的结果,将命令存储在存储器中;在存储命令之后为另一命令重新分配命令槽;随后确定命令不再被阻止;将命令从存储器复制到另一命令槽中以供执行;从提交队列中获取至少一个命令;以及依次执行命令和至少一个命令。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
根据本公开的一些方面的通信过程的另一实例如下。此过程可以在处理电路(例如,图14的处理电路1410)内发生,所述处理电路可以位于数据存储装置、SSD、存储器控制器、固态驱动器、主机装置、NVM装置、NAND裸片,或一些其它合适的设备中。当然,在本公开范围内的各个方面中,此过程可以由能够支持与存储器有关的操作的任何合适的设备来实施。
在第一框,设备(例如,数据存储设备的控制器)接收主机装置的多个提交队列的至少一个提交队列包含至少一个命令的指示。在一些方面,所述指示可以是主机装置调用门铃事务的结果,所述门铃事务包括对数据存储装置中的存储器位置的写入。
在第二框处,设备基于所述指示来估计多个提交队列中的第一提交队列是否包含具有定义的执行顺序的多个命令。在一些方面,多个命令可以包含(例如,可以是)FUSED命令。在一些方面,估计第一提交队列是否包含具有定义的执行顺序的多个命令可以包含确定指示是否指示已有超过一个命令在第一提交队列中排队。在一些方面,多个命令可以包含(例如,可以是)FUSED命令。在一些方面,估计第一提交队列是否包含具有定义的执行顺序的多个命令可以包含确定主机装置是否已向第一提交队列重复写入具有定义的执行顺序的命令。在一些方面,估计第一提交队列是否包含具有定义的执行顺序的多个命令可以包含:确定主机装置已向第一提交队列写入具有定义的执行顺序的命令的速率是否大于或等于阈值。
在第三框,作为估计的结果,设备从第一提交队列中共同获取多个命令。在一些方面,从第一提交队列中共同获取多个命令可以包含向主机装置发布针对多个命令的单个读取请求,或者向主机装置依次发布针对多个命令中的各个命令的读取请求。
在第四框,设备依次执行多个命令中的每个命令。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
根据本公开的一些方面的通信过程的又另一实例如下。此过程可以在处理电路(例如,图14的处理电路1410)内发生,所述处理电路可以位于数据存储装置、SSD、存储器控制器、固态驱动器、主机装置、NVM装置、NAND裸片,或一些其它合适的设备中。当然,在本公开范围内的各个方面中,此过程可以由能够支持与存储器有关的操作的任何合适的设备来实施。
在第一框,设备(例如,数据存储设备的控制器)收集指示写入到主机装置的多个提交队列的命令的类型的信息。例如,设备可以针对每个提交队列确定主机装置将具有定义的执行顺序的命令写入提交队列的速率。
在第二框,设备确定关于某种类型的命令是否被写入多个提交队列中的第一提交队列的至少一个统计信息。例如,所述设备可以确定主机装置将具有定义的执行顺序的命令写入第一提交队列的速率。
在第三框,设备基于至少一个统计信息来估计第一提交队列是否包含具有定义的执行顺序的多个命令。
在可选的第四框,设备可以进一步基于第一提交队列是否包含多个命令来估计第一提交队列是否包含具有定义的执行顺序的多个命令。
在一些方面,根据本文的教示的过程可以包含以上操作的任何组合。
其它方面
提供本文陈述的实例是为了说明本公开的特定概念。上文示出的设备、装置或组件可以配置成执行本文描述的方法、特征或步骤中的一个或多个。所属领域的一般技术人员将了解,这些本质上仅为说明性的,且其它实例可落在本公开和所附权利要求书的范围内。基于本文的教示,所属领域的技术人员应了解,本文公开的方面可以独立于任何其它方面实施,且可以各种方式组合这些方面中两个或更多个方面。例如,可以使用本文阐述的任何数目个方面来实施设备或实践方法。另外,通过使用除了本文阐述的方面中的一或多者之外或不同于本文阐述的实施例中的一或多者的其它结构、功能性或结构与功能性,可实施此设备或可实践此方法。
上文已经参考根据本公开的实施例的方法、设备、系统和计算机程序产品的示意性流程图和/或示意性框图描述了本公开的各方面。应理解,可以通过计算机程序指令来实施示意性流程图和/或示意性框图的每个框以及示意性流程图和/或示意性框图中的框的组合。这些计算机程序指令可以被提供给计算机的处理器或其它可编程数据处理设备以产生机器,从而使得经由处理器或其它可编程数据处理设备执行的指令创建用于实施示意性流程图和/或一个或多个示意性框图中指定的功能和/或动作的构件。
本文描述的主题可以以硬件、软件、固件或其任何组合来实施。由此,本文中使用的术语“功能”、“模块”等可以指代硬件,其也可以包含用于实施所描述的特征的软件和/或固件组件。在一个示例实施方案中,本文描述的主题可以使用其上存储有计算机可执行指令的计算机可读介质来实施,所述计算机可执行指令在由计算机(例如,处理器)执行时控制计算机执行本文描述的功能。适用于实施本文描述的主题的计算机可读介质的实例包含非暂时性计算机可读介质,例如磁盘存储器装置、芯片存储器装置、可编程逻辑装置和专用集成电路。另外,实施本文描述的主题的计算机可读介质可以位于单个装置或计算平台上,或者可以分布在多个装置或计算平台上。
还应注意,在一些替代的实施方案中,框中提及的功能可以不按图中所提及的顺序出现。例如,根据所涉及的功能性,依次示出的两个框实际上可以大体上同时执行,或这些框有时可以相反次序执行。可以构想其它步骤和方法,这些步骤和方法在功能、逻辑或效果上等同于所示附图的一个或多个框或其部分。尽管在流程图和/或框图中可以采用各种箭头类型和线条类型,但是应理解,它们不限制相应实施例的范围。例如,箭头可以指示所描绘实施例的所列步骤之间未指定持续时间的等待或监视时段。
上文所述的各种特征和方法可以独立于彼此使用,或可以不同方式合并。所有可能组合和子组合旨在落入本公开的范围内。此外,在一些实施方案中可省略某些方法、事件、状态或过程框。本文描述的方法和过程还不限于任何特定顺序,并且与其相关的框或状态可以适当的其它顺序执行。例如,所描述的任务或事件可以以不同于具体公开的顺序来执行,或者可以在单个框或状态中组合多个任务或事件。示例任务或事件可以串行、并行或以一些其它合适的方式执行。任务或事件可添加到所公开的示例实施例或从其去除。本文所描述的示例系统和组件可以与描述不同地配置。例如,元件可以添加到所公开的示例实施例、从其去除或与其相比重新排列。
所属领域的技术人员应了解,可以使用多种不同技术和技艺中的任一个来表示信息和信号。例如,可以通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
词语“示例性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“例示性”的任何方面不必解释为比其它方面优选或有利。同样地,术语“方面”不要求所有方面包含所论述的特征、优点或操作模式。
尽管以上描述包含本发明的许多特定实施例,但是这些不应解释为对本发明范围的限制,而应解释为其特定实施例的实例。因此,本发明的范围不应由所示的实施例来确定,而应由所附权利要求书及其等同形式来确定。此外,贯穿本说明书对“一个实施例”、“实施例”或类似语言的引用意味着结合所述实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在实施例中”和类似的语言的出现可以但不是必须全部指代相同的实施例,而是指“一个或多个但不是所有实施例”,除非另有明确说明。
本文中所使用的术语仅用于描述特定方面的目的,且并不希望限制各方面。如本文所使用,除非上下文另作明确指示,否则单数形式“一”和“所述”旨在也包含复数形式。除非另有明确说明,否则列举的项目清单并不意味着任何或所有项目都是相互排斥和/或相互包含的。应进一步理解,除非另有明确说明,否则本文中使用的术语“包括”、“包含”、“具有”及其变体是指“包含但不限于”。也就是说,这些术语可以指定所陈述的特征、整数、步骤、操作、元件或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件或其群组的存在或添加。此外,应理解,除非另外明确陈述,否则词语“或”具有与布尔(Boolean)运算子“OR”相同的涵义,即,其涵盖“任一”和“皆”的可能性,且不限于“异或”(“XOR”)。还应理解,除非另外明确陈述,否则两个邻接词之间的符号“/”具有与“或”相同的涵义。另外,除非另外明确陈述,否则例如“连接到”、“耦合到”或“与…连通”的短语不限于直接连接。
本文使用例如“第一”、“第二”等名称对元件的任何参考通常不限制那些元件的量或次序。而是,这些名称可在本文中用作区别两个或两个以上元件或元件实例的方便方法。因此,对第一和第二元件的参考并不意味着此处仅可使用两个元件,或第一元件必须以某一方式先于第二元件。并且,除非另外说明,否则一组元件可以包含一个或多个元件。此外,描述内容或权利要求书中使用的形式“a、b或c中的至少一者”或“a、b、c或其任何组合”的术语意味着“a或b或c,或这些元件的任何组合”。例如,此术语可以包含a或b或c,或a和b,或a和c,或a和b和c,或2a,或2b,或2c,或2a和b等。
如本文中所使用,术语“确定”涵盖广泛多种动作。例如,“确定”可以包含推算、计算、处理、导出、研究、查找(例如,在表、数据库或另一数据结构中查找)、断定等。另外,“确定”可以包含接收(例如,接收信息)、存取(例如,存取存储器中的数据)等。而且,“确定”可以包含解析、选择、挑选、建立等。

Claims (28)

1.一种数据存储设备,其包括:
非易失性存储器阵列;
接口;以及
处理器,其耦合到所述非易失性存储器阵列和所述接口,且配置成:
经由所述接口从另一设备的提交队列中获取命令,
确定所述命令的执行当前被阻止,
基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行;
确定所述命令是具有定义的执行顺序的多个命令的一部分;以及
确定所述命令在所述多个命令中的至少一个命令之前。
2.根据权利要求1所述的设备,其中所述确定所述命令的执行当前被阻止包括:确定所述执行由于所述数据存储设备内部的条件而被阻止。
3.根据权利要求1所述的设备,其中所述确定所述命令的执行当前被阻止包括:确定所述执行由于所述数据存储设备外部的条件而被阻止。
4.根据权利要求1所述的设备,其中所述多个命令包括FUSED命令。
5.根据权利要求1所述的设备,其中所述处理器进一步配置成:
依次执行所述多个命令。
6.根据权利要求1所述的设备,其中所述处理器进一步配置成:
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中。
7.根据权利要求6所述的设备,其中为了控制所述命令的所述执行,所述处理器进一步配置成:
估计所述命令将保持被阻止的时间段;
确定所述时间段大于或等于阈值;
作为所述确定所述时间段大于或等于所述阈值的结果,将所述命令存储在存储器中;
在存储所述命令之后释放所述命令槽;
在释放所述命令槽之后,确定所述命令不再被阻止;以及
响应于所述确定所述命令不再被阻止,将所述命令从所述存储器复制到释放的命令槽或另一命令槽中。
8.根据权利要求1所述的设备,其中所述处理器进一步配置成:
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,提高所述提交队列的优先级。
9.根据权利要求1所述的设备,其中所述处理器进一步配置成:
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中;
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,释放所述命令槽;以及
在释放所述命令槽之后,从所述提交队列中共同获取所述命令和所述至少一个命令。
10.根据权利要求1所述的设备,其中所述处理器进一步配置成:
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中;
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,将所述命令存储在存储器中;
在存储所述命令之后释放所述命令槽;
在释放所述命令槽之后,确定所述命令不再被阻止;以及
作为所述确定所述命令不再被阻止的结果,将要执行的所述命令复制到所释放的命令槽或另一命令槽中。
11.一种数据存储设备,其包括:
非易失性存储器阵列;
接口;以及
处理器,其耦合到所述非易失性存储器阵列和所述接口,且配置成:
经由所述接口从另一设备的提交队列中获取命令,
确定所述命令的执行当前被阻止,以及
基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行;
其中为了确定所述命令的执行当前被阻止,所述处理器进一步配置成:
确定所述数据存储设备的命令槽中当前被阻止的命令的数量;以及
确定所述数量大于或等于阈值。
12.一种数据存储设备,其包括:
非易失性存储器阵列;
接口;以及
处理器,其耦合到所述非易失性存储器阵列和所述接口,且配置成:
经由所述接口从另一设备的提交队列中获取命令,
确定所述命令的执行当前被阻止,
基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行;以及
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中;
其中为了控制所述命令的所述执行,所述处理器进一步配置成:
估计所述命令将保持被阻止的时间段;
确定所述时间段小于或等于阈值;以及
作为所述确定所述时间段小于或等于所述阈值的结果,等待执行来自所述命令槽的所述命令直到所述命令不再被阻止为止。
13.一种数据存储设备,其包括:
用于从提交队列中提取命令的构件;
用于将所述命令存储在所述数据存储设备的命令槽中的构件;
用于确定由于所述数据存储设备内部的条件或由于所述数据存储设备外部的条件而导致所述命令的执行当前被阻止的构件;
用于基于所述确定所述命令的执行当前被阻止而控制所述命令的所述执行的构件;
用于确定所述命令是具有定义的执行顺序的多个命令的一部分的构件;以及
用于确定所述命令在所述多个命令中的至少一个命令之前的构件。
14.根据权利要求13所述的设备,其中:
所述数据存储设备内部的所述条件涉及所述命令将保持被阻止的时间段是否大于或等于阈值;并且
所述数据存储设备外部的所述条件涉及所述命令是否是具有定义的执行顺序的多个命令的一部分。
15.根据权利要求13所述的设备,其中所述用于控制所述命令的所述执行的构件配置成:
估计所述命令将保持被阻止的时间段;
将所述时间段与阈值进行比较;
如果所述时间段小于或等于所述阈值,则在所述命令不再被阻止后,将所述命令留在所述命令槽中以供执行;
如果所述时间段大于或等于所述阈值,则将所述命令存储在存储器中;
在将所述命令存储在所述存储器中之后,释放所述命令槽;
确定所述命令是否不再被阻止;以及
如果所述命令不再被阻止,则将所述命令从所述存储器复制到释放的命令槽或另一命令槽中。
16.根据权利要求15所述的设备,其中所述用于控制所述命令的所述执行的构件进一步配置成:
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,执行以下各项中的至少一项:提高所述提交队列的优先级、释放所述命令槽并重新获取所述命令,或释放所述命令槽并将所述命令存储在存储器中以供后续执行。
17.一种用于数据存储设备的方法,其包括:
从另一设备的提交队列提取命令,
确定所述命令的执行当前被阻止,
基于所述确定所述命令的执行当前被阻止,控制所述命令的所述执行;
确定所述命令是具有定义的执行顺序的多个命令的一部分;以及
确定所述命令在所述多个命令中的至少一个命令之前。
18.根据权利要求17所述的方法,进一步包括:
确定所述命令的所述执行是由于所述数据存储设备内部的条件而被阻止。
19.根据权利要求17所述的方法,其中确定所述命令的执行当前被阻止包括:
确定所述数据存储设备的命令槽中当前被阻止的命令的数量;以及
确定所述数量大于或等于阈值。
20.根据权利要求17所述的方法,其中确定所述命令的执行当前被阻止包括确定所述执行由于所述数据存储设备外部的条件而被阻止。
21.根据权利要求17所述的方法,其中所述多个命令包括FUSED命令。
22.根据权利要求17所述的方法,进一步包括依次执行所述多个命令。
23.根据权利要求17所述的方法,进一步包括在所述提交队列中检索所述命令之后,将所述命令存储在命令槽中。
24.根据权利要求23所述的方法,其中
控制所述命令的执行包括:
估计所述命令将保持被阻止的时间段;
确定所述时间段小于或等于阈值;以及
作为所述确定所述时间段小于或等于所述阈值的结果,等待执行来自所述命令槽的所述命令直到所述命令不再被阻止为止。
25.根据权利要求23所述的方法,其中控制所述命令的执行包括:
估计所述命令将保持被阻止的时间段;
确定所述时间段大于或等于阈值;
作为所述确定所述时间段大于或等于所述阈值的结果,将所述命令存储在存储器中;
在存储所述命令之后释放所述命令槽;
在释放所述命令槽之后,确定所述命令不再被阻止;以及
响应于所述确定所述命令不再被阻止,将所述命令从所述存储器复制到释放的命令槽或另一命令槽中。
26.根据权利要求17所述的方法,进一步包括:
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,提高所述提交队列的优先级。
27.根据权利要求17所述的方法,进一步包括:
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中;
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,释放所述命令槽;以及
在释放所述命令槽之后,从所述提交队列中共同获取所述命令和所述至少一个命令。
28.根据权利要求17所述的方法,进一步包括:
在从所述提交队列中检索所述命令之后,将所述命令存储在命令槽中;
作为所述确定所述命令在所述多个命令中的至少一个命令之前的结果,将所述命令存储在存储器中;
在存储所述命令之后释放所述命令槽;
在释放所述命令槽之后,确定所述命令不再被阻止;以及
作为所述确定所述命令不再被阻止的结果,将要执行的所述命令复制到所释放的命令槽或另一命令槽中。
CN202010159576.8A 2019-05-29 2020-03-09 管理从提交队列获取和执行命令 Active CN112015527B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/425,835 2019-05-29
US16/425,835 US11467769B2 (en) 2015-09-28 2019-05-29 Managed fetching and execution of commands from submission queues

Publications (2)

Publication Number Publication Date
CN112015527A CN112015527A (zh) 2020-12-01
CN112015527B true CN112015527B (zh) 2024-03-22

Family

ID=73264845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010159576.8A Active CN112015527B (zh) 2019-05-29 2020-03-09 管理从提交队列获取和执行命令

Country Status (2)

Country Link
CN (1) CN112015527B (zh)
DE (1) DE102020108303A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599271B2 (en) * 2021-02-12 2023-03-07 Hewlett Packard Enterprise Development Lp Controlling I/O Q-connections in NVMe devices

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633131A (zh) * 2005-01-14 2005-06-29 清华大学 一种iSCSI存储系统的实现方法
CN1645316A (zh) * 2004-01-22 2005-07-27 国际商业机器公司 使用停滞机制避免由于存储队列满而导致的清除的方法
CN101243421A (zh) * 2005-08-19 2008-08-13 国际商业机器公司 在处理器与外部设备之间传送指令和数据的系统和方法
CN102053930A (zh) * 2009-11-10 2011-05-11 苹果公司 用于外围组件的命令队列
CN102750226A (zh) * 2011-02-28 2012-10-24 苹果公司 具有非易失性存储器的系统的高效缓冲
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统
CN106527967A (zh) * 2015-09-10 2017-03-22 蜂巢数据有限公司 减小存储设备中的读命令时延
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
WO2018175062A1 (en) * 2017-03-24 2018-09-27 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
CN109471817A (zh) * 2017-09-08 2019-03-15 三星电子株式会社 储存设备、控制器和储存设备的操作方法
CN109634664A (zh) * 2018-12-17 2019-04-16 深圳忆联信息系统有限公司 一种cpu给硬件电路下发命令描述符的方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
CN102395956B (zh) * 2011-07-07 2013-10-02 华为技术有限公司 内存备份过程中的系统命令的处理方法和装置
US8787110B2 (en) * 2012-06-29 2014-07-22 Intel Corporation Realignment of command slots after clock stop exit
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
US10521121B2 (en) * 2016-12-29 2019-12-31 Intel Corporation Apparatus, system and method for throttling a rate at which commands are accepted in a storage device

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645316A (zh) * 2004-01-22 2005-07-27 国际商业机器公司 使用停滞机制避免由于存储队列满而导致的清除的方法
CN1633131A (zh) * 2005-01-14 2005-06-29 清华大学 一种iSCSI存储系统的实现方法
CN101243421A (zh) * 2005-08-19 2008-08-13 国际商业机器公司 在处理器与外部设备之间传送指令和数据的系统和方法
CN102053930A (zh) * 2009-11-10 2011-05-11 苹果公司 用于外围组件的命令队列
CN102750226A (zh) * 2011-02-28 2012-10-24 苹果公司 具有非易失性存储器的系统的高效缓冲
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统
CN106527967A (zh) * 2015-09-10 2017-03-22 蜂巢数据有限公司 减小存储设备中的读命令时延
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
WO2018175062A1 (en) * 2017-03-24 2018-09-27 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
CN109471817A (zh) * 2017-09-08 2019-03-15 三星电子株式会社 储存设备、控制器和储存设备的操作方法
CN109634664A (zh) * 2018-12-17 2019-04-16 深圳忆联信息系统有限公司 一种cpu给硬件电路下发命令描述符的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于LVDS的固态存储器与地面综合测试台通信系统设计;张迦卫等;计算机测量与控制;全文 *

Also Published As

Publication number Publication date
CN112015527A (zh) 2020-12-01
DE102020108303A1 (de) 2020-12-03

Similar Documents

Publication Publication Date Title
US11467769B2 (en) Managed fetching and execution of commands from submission queues
CN108958907B (zh) 用于数据存储系统的上下文感知动态命令调度
US9075712B2 (en) Scheduling requests in a solid state memory device
CN1554050B (zh) 具有自适应优先权控制器的数据处理器及其方法
US7523271B2 (en) Apparatus, system, and method for regulating the number of write requests in a fixed-size cache
WO2019156727A1 (en) Method and system for user-space storage i/o stack with user-space flash translation layer
CN110716691B (zh) 调度方法、装置、闪存设备和系统
US9223373B2 (en) Power arbitration for storage devices
US10884920B2 (en) Metadata-based operations for use with solid state devices
US11010094B2 (en) Task management method and host for electronic storage device
US11481342B2 (en) Data storage system data access arbitration
US10372379B2 (en) Command processing method and storage controller using the same
US10310770B2 (en) Nonvolatile memory device, and storage apparatus having nonvolatile memory device
US12056360B2 (en) Optimized I/O performance regulation for non-volatile storage
US11442635B2 (en) Data storage systems and methods for optimized scheduling of background management operations
US20200387307A1 (en) Namespace auto-routing data storage system
CN108572932B (zh) 多平面nvm命令融合方法与装置
CN112015527B (zh) 管理从提交队列获取和执行命令
CN113196225A (zh) 开放信道矢量命令执行
CN108628759B (zh) 乱序执行nvm命令的方法与装置
CN114003366A (zh) 一种网卡收包处理方法及装置
US9870156B2 (en) Memory system and method of controlling memory system
CN114610661B (zh) 数据处理装置、方法和电子设备
CN111736779B (zh) Nvm接口命令的优化执行方法与装置
US20240201902A1 (en) Method and non-transitory computer-readable storage medium and apparatus for executing host write commands

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