CN110674059B - 基于服务质量进行仲裁以优化企业固态驱动器 - Google Patents
基于服务质量进行仲裁以优化企业固态驱动器 Download PDFInfo
- Publication number
- CN110674059B CN110674059B CN201910525448.8A CN201910525448A CN110674059B CN 110674059 B CN110674059 B CN 110674059B CN 201910525448 A CN201910525448 A CN 201910525448A CN 110674059 B CN110674059 B CN 110674059B
- Authority
- CN
- China
- Prior art keywords
- commands
- order
- completion
- memory
- host
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/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
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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/0032—Serial ATA [SATA]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明题为“基于服务质量进行仲裁以优化企业固态驱动器”。本发明公开了用于操作固态驱动器的方法和装置,包括:从主机接收要求固态驱动器以初步次序执行动作的至少两个命令,基于针对至少两个命令的服务质量分类将至少两个命令排序为最终次序,并以最终次序在固态驱动器上执行至少两个命令,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
Description
技术领域
本公开的方面涉及存储器布置。更具体地,方面涉及根据基于服务质量的仲裁来优化用于企业操作的固态驱动器(SSD)。
背景技术
NVM Express(NVMe)是已被创建以允许在非易失性存储介质附接到PCI Express(PCIe)总线时对该介质进行访问的标准。NVMe可与多种类型的非易失性存储介质一起使用。一种此类类型的介质是SSD。NVMe标准的创建聚焦于若干特征,包括主机设备和存储器设备之间的输入/输出(I/O)操作。例如,NVMe标准允许不同制造商的SSD与主机计算机一起使用,前提条件是维持该标准。
NVMe使用不同的队列来实现数据的处理。作为非限制性示例,NVMe使用配对的提交队列和完成队列来接受来自主机的数据并通知主机处理已完成。例如,定位于主机计算机内的主机软件可将命令放置在用于SSD的提交队列中。具有附带控制器的非易失性存储介质SSD可处理提交队列上的命令,然后将完成放置在相关联的完成队列上。
服务质量是设计非易失性存储器的一个重要因素。尽管工作负荷很高,但保持高水平的服务质量对于用户的整体性能和质量非常重要。例如,放置在提交队列上的命令不仅应以有序的方式处理,而且还应在预定义的时间限制内处理,使得不会经历延迟。然而,常规的非易失性存储器布置以串行格式接收命令并按所接收的处理这些命令。一些不要求立即处理的命令可被立即处理,而可迫使其他要求迅速处理的命令等待处理。因此,处理并非是最佳的。
需要以迅速的方式对非易失性存储器布置诸如固态驱动器执行命令处理。
还需要在队列中不同的命令之间执行仲裁,使得对更紧急的命令进行处理。
与常规系统相比,还需要为固态驱动器提供更高的服务质量。
发明内容
本发明提供以下发明内容以描述本公开的各方面,并且不应将其视为限制所述方面的范围。本发明公开了用于操作固态驱动器的方法和装置,包括:从主机接收要求固态驱动器以初步次序执行动作的至少两个命令,基于针对至少两个命令的服务质量分类将至少两个命令排序为最终次序,并以最终次序在固态驱动器上执行至少两个命令,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
在一个非限制性实施方案中,公开了一种操作固态驱动器的方法,包括:从主机接收要求固态驱动器以初步次序执行动作的至少两个命令,基于针对至少两个命令的服务质量将至少两个命令排序为最终次序,并以最终次序在固态驱动器上执行至少两个命令,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
在另一个非限制性实施方案中,公开了一种操作存储器布置的方法,包括:通过存储器布置的接口从主机接收至少两个命令,在接口处接收到命令时对至少两个命令中的每一者加盖时间戳,对至少两个命令中的每一者进行仲裁以创建用于执行至少两个命令中的每一者的最终次序,并且以最终次序在存储器布置中执行至少两个命令,其中存储器的操作参数被至少两个命令中的至少一者修改。
在另一个非限制性实施方案中,公开了一种用于存储器布置设备的设备控制器,包括:接口模块,该接口模块被配置为从存储器布置设备的至少一个存储器阵列发送和接收数据;主机接口模块,该主机接口模块被配置为从主机发送和接收数据;时间戳布置,该时间戳布置被配置为记录通过主机接口模块从主机接收到命令的时间,该时间戳布置连接到主机接口模块;命令仲裁布置,该命令仲裁布置连接到主机接口模块,该命令仲裁布置被配置为接收由主机接口模块接收的命令并对所接收的命令的操作次序进行仲裁;命令排队布置,该命令排队布置连接到主机接口和接口模块,其中该命令排队布置被配置为接受由命令仲裁布置按次序放置的命令。
在另一个非限制性实施方案中,公开了一种存储器设备,包括:至少一个存储器阵列,该存储器阵列被配置为存储提供给阵列的数据;接口模块,该接口模块被配置为从至少一个存储器阵列发送和接收数据;主机接口模块,该主机接口模块被配置为从主机发送和接收数据;时间戳布置,该时间戳布置被配置为记录通过主机接口模块从主机接收到命令的时间,该时间戳布置连接到主机接口模块;命令仲裁布置,该命令仲裁布置连接到主机接口模块,该命令仲裁布置被配置为接收由主机接口模块接收的命令并对所接收的命令的操作次序进行仲裁;命令排队布置,该命令排队布置连接到主机接口和接口模块,其中该命令排队布置被配置为接受由命令仲裁布置按次序放置的命令。
在另一个非限制性实施方案中,公开了一种用于操作固态驱动器的布置,包括用于从主机接收要求固态驱动器以初步次序执行动作的至少两个命令的装置,用于基于针对至少两个命令的服务质量分类将至少两个命令排序为最终次序的装置,以及用于以最终次序在固态驱动器上执行至少两个命令中的至少一者的装置,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
在另一个非限制性实施方案中,公开了一种用于操作存储器布置的装置,包括:用于通过存储器布置的接口从主机接收至少两个命令的装置,用于在接口处接收到命令时对至少两个命令中的每一者加盖时间戳的装置,用于对至少两个命令中的每一者进行仲裁以创建用于执行至少两个命令中的每一者的最终次序的装置,其中用于仲裁的装置通过加权循环算法执行,以及用于以最终次序在存储器布置中执行至少两个命令的装置,其中存储器的操作参数被至少两个命令中的至少一者修改。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是非易失性存储器(NVMe)仲裁器处理命令队列。
图2是用于紧急、高优先级、中优先级和低优先级以及管理命令的NVMe加权循环法(WRR)仲裁器处理命令。
图3是存储器系统的框图。
图4是在所述一个非限制性方面中处理命令的方法的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
现在将参考附图描述一些实施方案。为确保一致性,各个附图中的类似元件将用类似的数字标记。在以下描述中,示出了许多细节以提供对各种实施方案和/或特征的理解。然而,本领域技术人员将理解,可在没有许多这些细节的情况下实践一些实施方案,并且可对所述实施方案进行多种变化或修改。如本文所用,在本说明书中使用术语“上方”和“下方”、“上”和“下”、“上部”和“下部”、“向上”和“向下”以及表示在给定位置或元件以上或以下的相对位置的其他类似术语以更清楚地描述某些实施方案。
本公开的各方面涉及计算机操作和计算机存储,并且具体地涉及增强连接到计算机主机的存储设备的操作。存储器布置的功能是接受数据并存储数据直到用户或主机再次需要。该布置可被配置为取决于所执行的计算机进程接受突发数据,因此数据存储布置被配置为具有提供各种使用状态的多个存储器单元。数据存储布置的某些部分被配置为提供快速动作(低延迟)以便可快速执行计算机进程的存储器系统。此类低延迟性能可通过单层单元(SLC)存储器配置来实现。如果要求存储大量数据,则还可存在多层单元存储器配置,诸如三级单元(TLC)存储器配置。数据存储布置可具有允许数据存储布置与主机计算机连接的接口。作为非限制性实施方案,接口可以是SAS接口或串行ATA(SATA)兼容接口。存储器存储可具有允许插入和播放功能的配置。尽管被描述为具有SATA兼容接口,但存储器存储设备可设置有允许通过无线技术访问的配置。在一个非限制性实施方案中,可使用802.11ac技术为平滑流式处理提供快速性能。无线技术可使用例如2.5GHz至5GHz之间的频率进行连接。在一些实施方案中,存储装置可允许用户选择用于无线连接的频率。虽然被描述为SATA兼容,但可使用其他类型的接口。
可为数据存储布置提供辅助连接,以允许用于将数据直接输入到数据存储布置而不与主机进行交互的附加选项。可通过放置集成安全数字卡以卸载或复制数据来提供数据的此类直接输入。可提供其他辅助连接以用于附加输入/输出操作。此类连接可以是USB2.0、USB 3.0、Firewire或其他硬线配置。也可使用千兆以太网接口和连接。
数据存储布置可被配置为具有单独的电源,或者可通过诸如来自计算机主板的其他电源运行。在一些实施方案中,可提供内部电池来为作为独立实体的数据存储布置供电。可提供此类配置使得数据存储布置为便携式单元。在此类数据存储布置配置中,电源装置可足以为主机供电和/或对主机进行充电,诸如移动蜂窝电话、个人计算机、平板电脑、相机或其他配置。数据存储布置还可具有电池指示灯,以允许用户通过视觉检查来了解数据存储布置中的充电量。此类电池指示灯可以是例如低能耗发光二极管技术。在具体的实施方案中,数据存储布置可设置有电路以允许进行充电并且防止当数据存储布置连接到外部电源一段较长时间时系统的过度充电。在一些实施方案中,电路可用于确定是否已达到存储系统的不活动阈值,从而使系统进入低功耗模式,以节省电池电量。
在一个非限制性实施方案中,控制器被设置成根据主机的要求控制数据存储布置的动作。控制器还可被配置为执行数据存储布置的维护活动以允许有效使用。例如,控制器可以是专用集成电路(ASIC)或从主机接受命令然后控制固态驱动器或存储器布置的操作的其他配置。
可为数据存储布置提供内部软件,以允许有效存储和读取系统上的数据的功能。此类内部软件可用于使得数据存储布置可用作便携式媒体服务器,以将媒体无线地流传输到主机或输出设备。此类输出设备可包括但不限于智能电视、智能电话、立体音频系统。该内部软件还可被设置为使得数据的访问可由设计用于与数据存储布置进行交互的云应用程序来执行。
数据存储布置的内部软件还可被配置为提供数据存储布置的安全性。设置在数据存储布置上的安全防护材料可防止未经授权访问系统中所包含的敏感信息。安全协议可采用若干形式。协议可采用密码保护(诸如Wi-Fi密码保护)的形式。在实施方案中,软件可与数据存储布置一起使用,以允许数据存储布置创建硬件锁。例如,此类硬件锁可防止通过通用串行总线连接访问主机计算机。
存储器布置软件还可提供其他有益效果。此类有益效果可包括存储布置的诊断支持。所获得的数据可直接提供给用户,或者可被馈送到可分析所获得的数据的其他类型的软件中。在一个示例配置中,可提供两种不同模式。第一模式可提供快速测试软件程序,该程序可设置有检查数据存储布置的主要性能问题的功能。第二模式可提供完全测试模式,其也可被设置成向用户提供详细状态信息。可向用户提供的数据可包括例如软件的固件版本、数据存储布置的存储器总量、所使用的存储器存储量、设置在数据存储布置上的存储分区、存储块错误、能量使用、设备的年限和类似数据。
内部软件还可用作服务器系统,其中在某些实施方案中,结合了支持数字生活网络联盟(DLNA)的软件。此类软件允许作为服务器进行快速文件传输和错误检查操作。在一些实施方案中,内部软件可设置有使用文件传输协议(FTP)的功能,以能够向和从公共访问文件夹中的存储器存储装置传输内容。数据存储布置还可提供安全登录或匿名登录功能。
在具体的实施方案中,数据存储布置可被配置为使得系统与云存储系统或其他数据存储系统进行交互。在数据存储布置接近存储能力极限的情况下,数据存储布置可允许将一些数据存储在基于云的系统或其他数据存储系统上。选择待存储在此类外部存储系统上的数据可由控制器控制,该控制器被配置为确定数据的哪些部分可适当地存储在基于云的系统中以使用户的延迟时间最小化。存储系统可具有唯一标识符MAC地址和设备名称,以允许系统独立操作。存储系统还能够以允许系统克隆所附接计算机的MAC地址的配置来操作。
数据存储布置的总容量可根据所提供的不同实施方案而变化。作为非限制性实施方案,可提供1TB、2TB至高达64TB的容量。也可提供不同的形状因数。在例示的实施方案中,提供了2.5英寸的形状因数。也可使用其他形状因数,诸如1.8英寸或3.5英寸。作为非限制性实施方案,可为Windows操作系统、Windows服务器、Linux和Mac Os提供数据存储布置的兼容性。可使用该系统的示例Windows操作系统可以是Windows 10、Windows 8和Windows7。作为非限制性实施方案,示例Mac OS系统可以是Lion(Mac OSA 10.7)、Mountain Lion(Mac OS 10.8)、Yosemite(Mac OS10.10)、El Capitan(Mac OS 10.11)、Sierra和Mavericks。在非限制性实施方案中,存储系统支持的浏览器可以是Internet Explorer、Safari、Firefox和Google Chrome。
也可将软件包括在系统中,以允许根据用户规定的要求快速和自动地备份数据。此类备份功能可符合基于Windows的备份和还原功能和/或Apple Time Machine要求。此外,可提供软件以将多于一个用户添加到存储系统。可根据管理帐户添加或删除用户。此类管理帐户还可根据管理要求允许某些用户进行限制访问。
本公开的各方面涉及NVMe系统以及例如从主机接收到的命令的处理。在NVMe系统中,命令处理通常遵循一系列阶段。在第一阶段,主机设备(计算机、移动电话或其他计算设备)将命令放置在提交队列(SQ)中,然后通知存储器设备该命令已被放置在提交队列中。NVMe系统对主机设备的通知作出反应,并且NVMe从提交队列中提取命令。然后,NVMe根据主机的需要处理命令。在一个非限制性实施方案中,存储器设备执行内部命令选择,然后执行该命令。该命令可能是读取或写入命令的执行。在处理该命令之后,存储器设备在完成队列中放置一个条目,该条目指示命令的执行已完成。然后,存储器设备向主机设备生成中断命令,指示已将条目放置在完成队列上。在将命令放置在完成队列上之后,主机设备查看完成队列上的数据。然后,主机设备通知存储器设备已查看完成队列上的条目。
主机设备可使用和配置多个提交队列以帮助处理。主机设备可将命令放置在相应提交队列上,然后由存储设备和存储设备的控制器来处理这些提交队列。为了使存储设备能够选择要处理提交队列上的哪个命令,存储器设备可使用一个或多个仲裁方案来确定从多个提交队列中提取命令的次序。一种类型的提交队列是管理提交队列,其包括对存储器设备的管理命令。其他队列可以是I/O提交队列。
在某些实施方案中,可以为管理提交队列分配高优先级(或相对于其他提交队列的最高优先级)。但是,其他提交队列的优先级可低于管理提交队列。命令的优先级可按以下次序(按优先级递减次序):紧急、高优先级、中优先级和低优先级。其他提交队列上的命令可涉及数据传输,诸如读取命令(例如,从闪存存储器中读取数据)和写入命令(例如,将数据写入闪存存储器)。主机设备可在提交队列初始化时为提交队列分配相应的优先级。
在确定从提交队列中提取哪些命令时,可使用算法。在一个示例实施方案中,存储器设备可使用仲裁算法,诸如循环算法或加权循环算法。这些算法可确定从多个提交队列以及管理队列中提取命令的次序。例如,使用循环算法,存储器设备以对称方式选择放置在不同提交队列上的命令。无论提交队列的优先级如何,循环算法都以预定的次序从不同队列中提取命令。然而,利用加权循环方法,存储器设备以非对称方式选择放置在不同提交队列中的命令,其中每个提交队列具有由主机设备在初始化阶段分配的其自己的优先级。
在一个非限制性实施方案中,加权循环算法可确定是否存在紧急命令。该命令可被放置在管理提交队列或I/O提交队列中。如果不存在被指示为紧急的命令,则加权循环算法可对“高优先级”、“中优先级”和“低优先级”提交队列上的命令进行加权,以确定要提取哪些命令(例如,对“高优先级”提交队列上的命令的加权高于“中优先级”或“低优先级”提交队列上的命令)。
在另一个非限制性实施方案中,存储器设备可使用静态仲裁算法诸如循环方法,其中某些队列被赋予比其他队列更高的优先级。例如,从管理提交队列中提取命令可被赋予比从未指定为管理队列的其他提交队列中提取命令更高的优先级,因为管理队列被分配了最高优先级。
在一个具体实施中,存储器设备可确定用于执行在从队列中提取一个或多个命令之后的阶段的优先级。如上所述,提取后的示例阶段包括:处理命令(例如,执行内部命令选择、执行命令诸如数据传输)、发布完成消息;以及向主机设备生成中断,指示已在完成队列上放置条目。所列出的提取之后的阶段仅为了进行示意性的说明。
存储器设备诸如SSD可基于包括以下任何一者、任何组合或全部的一个或多个标准来确定命令(或用于执行一个或多个阶段)的优先级:(1)相应命令的优先级;(2)存储器设备的内部情况(例如,裸片的状态或存储器设备的处理能力,如下所述);(3)功耗;(4)主机设备和存储器设备之间通信接口的状态(例如,入口和/或出口路径的状态);以及(5)要执行的命令的阶段。因此,可基于除了接收到命令的时间之外的基准来执行命令。可对上述确定的标准设置不同的优先级。例如,如果SSD位于电池能量正迅速减少的膝上型计算机内,则功耗参数可能是最重要的优先级因素。因此,对使用过多功率的命令执行延迟可能适合于用户。
存储器设备可根据若干方法来确定命令的优先级。在第一方法中,可基于放置命令的相应提交队列来确定命令的优先级。在不同的具体实施中,在初始化特定提交队列时,主机设备可为该特定提交队列分配优先级。然后,存储器设备可确定放置命令放的特定提交队列,并将该特定提交队列的优先级分配给相应的命令。如上所述,主机设备可在初始化时配置管理提交队列并分配最高优先级,因为可能需要在进行其他不太关键的活动之前执行此类管理提交队列活动。在其他特定具体实施中,存储器设备可基于与相应完成队列相关联的提交队列的优先级来确定该相应完成队列的优先级。
存储器设备被配置为基于命令的一个或多个方面来确定为其赋予的命令优先级。作为第一示例,存储器设备可使用逻辑块地址来确定相应命令的优先级。例如,存储器设备可向包括位于存储器设备频繁访问的给定范围内的地址的命令而不是在特定地址范围之外的其他命令分配特定优先级。在该示例中,要求访问特定范围的命令被更快地处理。在第二示例中,可使用一种类型的命令来向存储器设备提供关于命令的优先级级别的指令。例如,强制单元访问(FUA)命令是指示存储器设备将数据存储到闪存存储器(而不是将数据存储在高速缓存中)的命令。在具体的实施方案中,存储器设备可将FUA命令处理为紧急的,因为存储器设备不能将条目发布到该命令的完成队列上,直到该数据存储在闪存存储器中。例如,存储器设备控制器可包括将命令类型与紧急程度相关联的表格。在第三示例中,存储器设备可基于命令的数据传输的大小来对命令进行优先级排序。具体地,存储器设备可对指示从闪存存储器读取少量数据而不是相对较大量数据的命令进行优先级排序。在第四示例中,存储器设备可分析与命令相关联的至少一个方面的随机性,并且基于与命令相关联的至少一个方面的所分析的随机性确定以及基于所分析的随机性来确定该命令的优先级。在一个示例实施方案中,设备诸如存储器设备分析作为读取命令的对象的存储器位置(或位置集)。响应于确定一个或多个存储器位置是随机的(没有从该存储器位置读取的模式),存储器设备可为该命令分配特定优先级。例如,特定优先级可以是更高的命令。因此,在一个具体实施中,与非随机命令相比,更高程度的命令随机性可指示对主机设备的更高重要性,并且因此与由存储器设备为随机命令分配的较高优先级相关。在提取操作之后的一个阶段是内部命令选择,其可包括(1)命令排队和(2)命令调度。在一个具体实施中,内部命令选择可由存储器设备基于存储器设备的内部情况诸如存储器设备的内部状态机和/或一个或多个闪存裸片的内部状态来执行。例如,闪存存储器的裸片可处于若干状态中的一种,并且可不可用于执行操作。例如,正将哪些数据写入闪存裸片,闪存裸片处于程序状态并且无法访问。在另一个实施方案中,如果闪存裸片正在执行垃圾回收,则闪存裸片不可用。命令诸如读取或写入命令的执行取决于特定裸片的状态。存储器设备控制器可对可用于操作的闪存裸片执行命令。以类似的方式,存储器设备控制器可延迟对不可用闪存裸片的执行。在另一个具体实施中,存储器设备控制器可基于存储器设备控制器的处理能力来选择操作阶段。如本文所讨论的,从闪存存储器的读取还可包括纠错、加密或解密等。这些命令和功能的操作可能是计算密集型的。因此,取决于存储器设备控制器的当前处理能力,存储器设备控制器可选择操作阶段。例如,响应于确定存储器设备控制器的当前处理能力减小,存储器设备控制器可选择计算密集度较低的操作阶段(诸如向主机设备发送读取请求)。响应于确定存储器设备控制器具有可用的处理能力,存储器设备控制器可选择计算密集度较高的操作阶段,存储器设备控制器可选择计算密集程度较高的操作阶段(诸如从闪存存储器读取数据、执行纠错和解密)。在另一个具体实施中,存储器设备控制器可在处于相同阶段的命令之间进行仲裁。此类仲裁可通过放置在控制器内的仲裁布置来完成。例如,一组命令可处于执行阶段,诸如执行对闪存存储器的写入或读取。存储器设备控制器可对在特定阶段(例如执行阶段)中操作的所有命令进行优先级排序。另选地,存储器设备控制器可对在特定阶段中操作的某种类型的命令(诸如,执行阶段中的所有读取命令或执行阶段中的所有写入命令)进行优先级排序。
在另一个非限制性实施方案中,存储器设备可基于与命令相关联的优先级来执行内部命令选择。如上所述,可通过若干方式中的一种来确定优先级,包括例如从中提取命令的提交队列的优先级、命令的类型或命令的地址范围。在一些具体实施中,存储器可基于与命令相关联的优先级和存储器设备的内部情况(例如,存储器设备的内部状态机和/或一个或多个闪存裸片的内部状态)来执行内部命令选择。
NVM Express基于配对的提交和完成队列机制。例如,命令由主机软件放置到主机中的提交队列中,然后被发送到固态驱动器。完成(由SSD完成的动作)由SSD的控制器放置到相关的完成队列中。在主机存储器中分配提交和完成队列。
企业SSD市场有不同的要求,特别是在服务质量(QoS)要求方面。QoS在企业操作中极为重要,因此定义了严格的要求。已建立了若干基准以测试设备诸如SSD,以确保用户在特定区域获得良好的结果。这些类型的要求的一个示例是输入/输出(I/O)命令的延迟。在SSD中,通常对性能有严格的要求,但对延迟没有要求。在一个示例实施方案中,为随机读取命令建立要求或基准。在该示例实施方案中,99%的命令应在300μs内完成,而99.9%的命令应在400μs内完成。如下表1所示,还提供了最大超时值。此外,右列中提供了特定测试中所需的操作数。中心列提供了在4kB、8kB和64kB处理下所需的μS数。
表1
根据表1,在较长期测试中,完成百分比极高。本文的方面提供了一种存储设备,该存储设备被高度优化以实现表1中的要求,同时不会显著影响其他标准诸如性能、功率和区域。通过逻辑处理所需的命令同时延迟其他不那么必要的命令,对用户来说整体处理得到改善。此类处理方法与传统处理方法基本上不同,传统处理方法不使用用于指示需要紧急处理的对命令的通知或优先级标记物或标记。
本文所述的方面不添加并行性互连装置或逻辑布置以实现表1的要求。提供了一种设备控制器,该设备控制器对处理流水线(从启动到向主机发布中断)的每个步骤中的QoS进行自适应和优化。对于每个命令,设备控制器捕获发出相关命令“门铃”的主机的时间戳。流水线的第一阶段涉及提取命令。还可将老化算法添加到NVMe队列仲裁算法中,以便不损失QoS要求。流水线中的下一个阶段是命令选择。在该阶段,基于智能QoS算法来选择下一个执行命令。评估所有待审的命令并将其分类到特定类别中。
在非限制性实施方案中,“A类”命令可代表99%的命令(其必须在300μS-400μS之间的范围内完成)。在单独的类别中,“B类”命令占命令的较小百分比,例如0.9%(其必须在300μS-400μS时间范围内完成)。以上分类可基于评估和预测,并且受SLC/TLC区、最后访问时间和门铃时间戳的影响。命令选择算法可考虑所有这些因素。可在流水线阶段中的每个阶段中实施仲裁,同时流水线中的每个阶段具有更多知识,并因此可通过延迟特定操作或向特定操作提供更高优先级来调整仲裁。
参见图1,示出了NVMe循环法仲裁器。示出了为循环法(RR)仲裁器提供输入的四(4)个不同的命令队列。输入中的一个来自管理队列(ASQ),并且输入中的三个由提交队列(SQ)提供。如图1所示,循环法仲裁器以对称方式在不同的命令队列中进行选择。
参见图2,示出了NVMe加权循环法(WRR)仲裁器。与该仲裁器相关联的算法以非对称方式在不同主机SQ之间进行选择,其中每个队列在初始化阶段具有由主机分配的其自己的优先级。为了获得与用户期望一致的结果,命令被分为紧急、高优先级、中优先级、低优先级和ASQ部分。ASQ在可能是最高优先级的严格优先级1下进行。紧急SQ通过RR仲裁器进行分类并被指定为严格优先级2或下一个最高可能优先级。高优先级SQ、中优先级SQ和低优先级SQ通过其各自的RR仲裁器进行处理,然后被加权输入到WWR仲裁器中。来自WRR的结果被指定为严格优先级3。在一个实施方案中,WRR仲裁器和RR仲裁器(下文描述为元件3 330)是设备控制器324的一部分。
非易失性存储器标准不限定在设备控制器诸如SSD控制器中实现的用于内部操作的仲裁算法。本文所述的方面公开了在设备控制器中具有基于QoS的仲裁,如稍后所述。这些基于QoS进行仲裁的流水线被优化以提供优异的QoS操作,尤其是对于企业操作而言。在流水线的每个阶段,必须对应执行的操作、执行的仲裁作出决定,并且仲裁算法应考虑QoS要求。评估所有待审的命令并将其分类到特定类别中。在一个非限制性实施方案中,可进行三(3)种不同类型的分类。例如,A类代表99%的命令(其必须在300μS内完成),B类代表0.9%的命令(其必须在300μS-400μS的范围内完成),C类代表0.09%的命令(其必须在400μS-500μS的范围内完成)。可进行其他或不同的分类,并且将命令分成三个不同的类别仅是示例性的。例如,如果已知特定命令比其他命令更影响性能,但竞争命令被标记为B类,则可使用不同因素来最终调度在更大程度上影响性能的命令。仲裁逻辑基于分类和剩余时间来选择下一个命令,以实现例如表1的目标。基于下文讨论的参数进行评估和命令分类。
命令分类参数
1)门铃时间戳-这表示设备控制器从与该特定命令相关联的主机获取“门铃”通知的时间。
2)SLC/TLC区-该参数表示相关用户数据存储在NAND中的位置是在SLC或TLC中。SLC和TLC区具有不同的参数,诸如延迟时间和误码率,因此在分类中被考虑。
3)裸片利用率-裸片利用率可能对分类产生影响。如果裸片当前已被充分利用,则使用该裸片的下一个命令将具有较长的延迟。因此,如果命令专用于特定的裸片,则可对其他不太重要的命令进行重新路由或延迟以确保操作速度。
4)考虑相关物理地址的BER-(误码率),因为BER越高,纠错所需的处理时间越长。
5)设备触发操作-一些计划的内部长操作诸如擦除、垃圾回收和重定位也可能影响分类。
当前时间戳-这表示当前的时间戳。该值减去门铃标记表示自主机将该命令排队以来经过的时间。
基于以上参数对命令进行分类。基于这些分类,在考虑每个待审命令的剩余时间的同时进行仲裁。一旦对命令进行了分类,算法就会尝试以最大允许值完成该命令,同时为其他命令提供更高的优先级。例如,如果命令被归类为C类(即必须在400μS-500μS范围内完成),则算法被优化以在500μS过去之前完成该命令,但不一定在400μS之前,从而超过B类命令。此类调度允许完成其他命令。然而,如将理解的,如果没有其他命令计划在400μs标记之前完成,则可立即执行C类命令。
参见图3,示出了连接到设备302的主机计算机系统300的框图。主机计算机系统300向设备302提供被分类为入口304的输出。主机计算机系统300还从设备302接受出口305。在所示的非限制性实施方案中,设备302是基于NAND的SSD。主机计算机系统300具有主机存储器,该主机存储器具有提交队列308、完成队列310、物理区页面(PRP)312、数据缓冲器314、主机存储器缓冲器(HMB)316以及其他318存储器部件。
进一步参见图3,设备302被配置为将数据存储在不同的存储器阵列320(1)至320(10)内。尽管示出为具有十(10)个不同的阵列,但可提供更多或更少的阵列。通过数据线322提供来自存储器阵列320(1)至320(10)的数据输入和输出。此类输入和输出传递到设备控制器324。
设备控制器324具有若干部件以允许处理命令。从主机计算机系统300到设备302的入口304和出口305通过PCIe MAC PHY互连装置326执行。如果设备控制器324已完成命令,如完成队列管理器328所指示,则可通过PCIe MAC PHY互连装置326将数据传输到主机计算机系统300中存在的完成队列310。
从主机计算机系统300发送的最初放置在提交队列308中的命令传递到入口304,PCIe MAC PHY互连装置326通过门铃时间戳336加盖时间戳,然后继续传递到命令仲裁和提取器330。根据所选择的方案对命令进行仲裁,然后通过PCIe MAC PHY互连装置326将命令发送到命令排队332。当命令排队布置332执行仲裁器活动时,可使用或填充若干队列。然后,连接的命令调度器334可基于命令排队来调度由设备302执行的活动。作为非限制性示例,当通过PCIe MAC PHY互连装置326通过入口304从提交队列308接收到命令时,可通过门铃时间戳布置336附加门铃时间戳以帮助命令仲裁330确保命令的执行相对于表1是适当的。
在通过命令调度器334调度命令之后,可通过直接存储器访问布置338执行对存储器单元的访问。为了确保数据有效地传输且不受延迟的影响,可通过将信息馈送到直接存储器访问布置338的数据传输调度器340来调度数据传输。
可由设备控制器324提供错误检查,以确保提供给主机计算机300的数据没有错误。错误检查布置342可使用不同类型的错误检查方案,以确保数据是正确的。在一个非限制性实施方案中,可针对数据实施奇偶校验。其他类型的实施方案也是可能的。错误检查布置也可以是校验和例程。在另一个实施方案中,可由纠错布置342执行循环冗余校验。
通过闪存接口模块344控制位于设备控制器324和存储器阵列320(1)-320(10)之间的接口。闪存接口模块344被配置为与所提供的单独类型的存储器阵列进行交互。如将理解的,存储器阵列可基于NAND或基于NOR,因此根据所使用的阵列来选择闪存接口模块344的类型。
参见图4,示出了用于对SSD执行基于QoS的仲裁的方法400。在402处,主机向SSD发送SQ门铃。在404处,将已加盖时间戳的门铃存储在SSD内部。在406处,运行查询以确定是否提取了相关命令。如果未提取相关命令,则该方法循环回到406。在408处,如果在406处提取了相关命令,则将门铃时间戳附加到命令。在410处,从GAT收集更多信息。此类信息可与(SLC/TLC、误码率等)相关。在412处,估计命令完成时间。在414处,提供命令服务质量分类。在416处,根据命令QoS分类和调度操作来执行命令。
为了提高固态驱动器的性能,设备可并行执行若干命令。在非限制性实施方案中,设备可发送与不同NVMe命令相关联的若干PRP提取请求。在现有技术中,仲裁机构仅基于内部设备状态,例如存储器阵列状态。本文所公开的各方面涉及在对所有待审命令进行评估和分类并因此进行动作时考虑QoS要求。
在NVMe中,可能存在由主机设备生成的若干读取请求,以读取存在于设备的存储器阵列内的数据。还可能存在(由主机设备生成的)若干写入请求,以将数据写入设备的存储器阵列。作为非限制性示例,存储器设备和主机设备可使用事务层分组(TLP)请求进行通信。在一个示例中(其中SQ驻留在主机设备上),响应于主机设备102对存储器设备上的门铃时间戳136的(经由入口路径104发送的)TLP写入请求(其中写入门铃寄存器指示在SQ上存在命令),存储器设备使用(经由出口路径发送的)TLP读取请求从(驻留在主机设备100上的)SQ提取写入命令。写入命令是对存储器设备将数据写入非易失性存储器的请求。然后,存储器设备解析写入命令以获取信息,诸如对PRP列表的PRP指针的指示。出于定义目的,PRP列表是指示数据在主机设备中的位置的一系列信息,诸如指针或地址。然后,存储器设备可使用另一个TLP读取请求从PRP列表中的指针或地址读取数据。然后,存储器设备通过将数据存储在存储器设备上的非易失性存储器(例如,闪存存储器)中来执行写入命令。在将数据存储在非易失性存储器中之后,存储器设备使用TLP写入请求将条目写入完成队列(CQ)(指示写入命令已完成)。存储器设备可使用TLP写入请求向主机设备生成中断,其中该中断向主机设备发送信号通知CQ上存在条目。响应于该中断,主机设备读取CQ上的条目,然后向CQ门铃写入寄存器发出TLP写入请求,指示主机设备已查看CQ上的条目。在上文提供的实施方案中,CQ和SQ可驻留在设备102中,诸如在控制器存储器缓冲器中。
又如(SQ和CQ同样驻留在主机设备上),响应于主机对存储器设备上的门铃寄存器的TLP写入请求(其中写入门铃寄存器指示在SQ上存在命令),存储器设备使用TLP读取请求从(驻留在主机设备上的)SQ提取读取命令。向存储器设备请求读取命令以从非易失性存储器读取数据并将读取的数据发送至主机设备。然后,存储器设备读取非易失性装置(例如闪存存储器)以读取数据。存储器设备可对数据执行一系列操作,诸如纠错、加密/解密等,其中存储缓冲器散布在每个串行操作之间。然后可解析读取命令以获取信息,诸如对PRP列表的PRP指示。PRP列表是一系列信息,诸如指针或地址,其指示主机设备中用于存储从非易失性存储器读取的(以及任选的经纠错、经加密等的)数据的位置。存储器设备可使用TLP读取请求从PRP列表中的指针或地址读取数据。之后,TLP写入请求被用于写入从非易失性存储器读取的数据。在将数据写入主机设备之后,存储器设备使用TLP写入请求将条目写入CQ(指示读取命令已完成)。然后,存储器设备使用TLP写入请求向主机设备生成中断,其中该中断向主机设备发送信号通知CQ上存在条目。响应于该中断,主机设备读取CQ上的条目,然后向CQ门铃写入寄存器发出TLP写入请求,指示主机设备已查看CQ上的条目。
在所提供的实施方案中,可使用任何合适类型的存储器。半导体存储器设备包括易失性存储器设备,诸如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)设备、非易失性存储器设备,诸如电阻式随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存存储器(也可以被认为是EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”),并且可使用能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的配置。例如,闪存存储器设备能够以NAND配置或NOR配置进行配置。
该存储器设备可由无源元件和/或有源元件形成。也可使用组合。以非限制性示例的方式,无源半导体存储器元件包括ReRAM设备元件,其在一些实施方案中包括电阻率切换存储元件诸如反熔丝、相变材料等,以及可选地包括导引元件诸如二极管等。进一步以非限制性示例的方式,有源半导体存储器元件包括具有电荷存储区的元件,诸如浮栅、导电纳米粒子或电荷存储介电材料。
多个存储器元件可被配置为使得它们串联连接。在此类配置中,也可单独访问每个元件。以非限制性示例的方式,NAND配置中的闪存存储器设备(NAND存储器)可包含串联连接的存储器元件。NAND存储器阵列可被配置为使得该阵列由存储器的多个串构成,其中串由对单个位线进行充电并作为一个组而被访问的多个存储器元件构成。另选地,存储器元件可被配置为使得每个元件可被单独访问,例如NOR存储器阵列。
半导体存储器元件可以是二维或三维类型的布置。因此,这些实施方案不限于针对存储器元件的特定布置。
在二维存储器结构中,半导体存储器元件被布置在单个平面或单个存储器设备级中。例如,在二维存储器结构中,存储器元件被布置在平面中(例如,在x-z方向平面中),该平面基本上平行于支撑存储器元件的基板的主表面延伸。作为非限制性示例,基板可包括半导体,诸如硅。
存储器元件可被布置在处于有序阵列中(诸如在多个行和/或列中)的单个存储器设备级中。在其他配置中,存储器元件能够以非常规构型或非正交构型排列。存储器元件可各自具有两个或更多个电极或接触线,诸如位线和字线。
在存在三维存储器阵列的实施方案中,三维存储器阵列被布置成使得存储器元件占据多个平面或多个存储器设备级,从而形成三个维度(即,在x方向、y方向和z方向上,其中y方向基本上垂直于基板的主表面,并且x方向和z方向基本上平行于基板的主表面)的结构。
作为非限制性示例,三维存储器结构可被垂直地布置为多个二维存储器设备级的叠堆。作为另一个非限制示例,三维存储器阵列可被布置为多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),其中在每一列中每一列均具有多个存储器元件。列能够以二维构型例如在x-z平面中布置,从而得到存储器元件的三维布置,其中元件位于多个垂直堆叠的存储器平面上。
作为非限制性示例,在三维NAND存储器阵列中,存储器元件可耦接在一起以形成NAND字符串。可设想到其他三维构型,其中一些NAND字符串包含单个存储器级中的存储器元件,而其他字符串则包含跨越多个存储器级的存储器元件。三维存储器阵列也能够以NOR配置以及ReRAM配置来设计。
在单体三维存储器阵列中,一个或多个存储器设备级可在单个基板上方形成。任选地,单体三维存储器阵列还可具有至少部分地在位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可包括不同的半导体材料,诸如硅。在单体三维阵列中,构成阵列的每个存储器设备级的层通常形成在阵列的底层存储器设备级的层上。单体三维存储器阵列的相邻存储器设备级的层可被共享或具有介于存储器设备级之间的居间层。
二维阵列可单独形成,然后封装在一起以形成具有多层存储器的非单体存储器设备。例如,非单体的堆叠存储器可通过在单独的基板上形成存储器级然后将存储器级堆叠在彼此之上而构造。可在堆叠前将基板从存储器设备级移除或减少,但由于存储器设备级在单独基板上初始形成,因此所得的存储器阵列不是单体三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列可在单独的芯片上形成,然后封装在一起以形成堆叠的芯片存储器设备。
可需要电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取功能的电路。又如,用于存储器读取-写入操作的控制器可位于单独的控制器芯片上和/或位于与存储器元件相同的基板上。
在一个非限制性实施方案中,公开了一种操作固态驱动器的方法,包括:从主机接收要求固态驱动器以初步次序执行动作的至少两个命令,基于至少两个命令的服务质量将至少两个命令排序为最终次序,并以最终次序在固态驱动器上执行至少两个命令,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
在另一个非限制性实施方案中,该方法还包括将至少两个命令从主机发送到固态驱动器。
在另一个非限制性实施方案中,该方法还可包括将至少两个命令中的每一者的完成通知从固态驱动器发送到主机,该完成通知指示该至少两个命令中的每一者已完成。
在另一个非限制性实施方案中,该方法还可包括在发送完成通知时向主机发送中断通知。
在另一个非限制性实施方案中,该方法还可包括在固态驱动器处附加用于指示至少两个命令中的每一者的到达时间的时间戳。
在另一个非限制性实施方案中,可执行该方法,其中对至少两个命令的排序考虑了这些命令中的每一者的到达时间。
在另一个非限制性实施方案中,可执行该方法,其中对这些命令中的每一者的到达时间的考虑还包括:基于至少两个命令中的每一者的初步完成次序估计至少两个命令中的每一者的完成时间,将至少两个命令中的每一者的估计完成时间与阈值进行比较,如果至少两个命令中的每一者的估计完成时间超过阈值,则将初步完成次序重新排序为最终完成次序,使得至少两个命令中的每一者按阈值以最终完成次序完成。
在另一个非限制性实施方案中,可执行该方法,其中对初步完成次序的重新排序考虑了误码率。
在另一个非限制性实施方案中,可执行该方法,其中对初步完成次序的重新排序考虑了裸片利用率。
在另一个非限制性实施方案中,可执行该方法,其中对初始完成次序的重新排序考虑了存储数据的存储区类型。
在另一个非限制性实施方案中,可执行所述方法,其中对初步完成次序的重新排序考虑了由设备控制器执行的命令仲裁。
在另一个非限制性实施方案中,可执行该方法,其中以加权循环算法执行命令仲裁。
在另一个非限制性实施方案中,可执行该方法,其中加权循环算法所使用的权重由主机分配给至少两个命令。
在另一个非限制性实施方案中,可执行该方法,其中所使用的权重为管理类别、紧急类别、高优先级类别、中优先级类别和低优先级类别。
在另一个非限制性实施方案中,公开了一种操作存储器布置的方法,包括:通过存储器布置的接口从主机接收至少两个命令,在接口处接收到命令时对至少两个命令中的每一者加盖时间戳,对至少两个命令中的每一者进行仲裁以创建用于执行至少两个命令中的每一者的最终次序,并且以最终次序在存储器布置中执行至少两个命令,其中存储器的操作参数被至少两个命令中的至少一者修改。
在另一个实施方案中,可实现该方法,其中对至少两个命令中的每一者进行仲裁包括估计至少两个命令中的每一者的执行时间并将至少两个命令中的每一者的执行时间与阈值进行比较。
在另一个实施方案中,该方法还可包括当超过阈值时对至少两个命令中的每一者的执行时间进行重新排序。
在另一个实施方案中,公开了一种用于存储器布置设备的设备控制器,包括:接口模块,该接口模块被配置为从存储器布置设备的至少一个存储器阵列发送和接收数据;主机接口模块,该主机接口模块被配置为从主机发送和接收数据;时间戳布置,该时间戳布置被配置为记录通过主机接口模块从主机接收到命令的时间,该时间戳布置连接到主机接口模块;命令仲裁布置,该命令仲裁布置连接到主机接口模块,该命令仲裁布置被配置为接收由主机接口模块接收的命令并对所接收的命令的操作次序进行仲裁;和命令排队布置,该命令排队布置连接到主机接口和接口模块,其中该命令排队布置被配置为接受由命令仲裁布置按次序放置的命令。
在另一个实施方案中,设备控制器还可包括连接到主机接口模块的完成队列管理器,其中该完成队列管理器被配置为通过主机接口模块向主机发送已完成命令的通知。
在另一实施方案中,设备控制器还包括连接到接口模块的纠错布置,其中该纠错布置被配置为识别和校正从至少一个存储器阵列接收的数据中的错误。
在另一实施方案中,公开了一种存储器设备,包括:至少一个存储器阵列,该存储器阵列被配置为存储提供给阵列的数据;接口模块,该接口模块被配置为从至少一个存储器阵列发送和接收数据;主机接口模块,该主机接口模块被配置为从主机发送和接收数据;时间戳布置,该时间戳布置被配置为记录通过主机接口模块从主机接收到命令的时间,该时间戳布置连接到主机接口模块;命令仲裁布置,该命令仲裁布置连接到主机接口模块,该命令仲裁布置被配置为接收由主机接口模块接收的命令并对所接收的命令的操作次序进行仲裁;和命令排队布置,该命令排队布置连接到主机接口和接口模块,其中该命令排队布置被配置为接受由命令仲裁布置按次序放置的命令。
在另一个实施方案中,存储器设备被配置,其中至少一个存储器阵列为非易失性存储器阵列。
在另一个实施方案中,存储器设备被配置,其中非易失性存储器阵列为NAND存储器阵列。
在另一个实施方案中,公开了一种用于操作固态驱动器的布置,包括:用于从主机接收要求固态驱动器以初步次序执行动作的至少两个命令的装置,用于基于针对至少两个命令的服务质量分类将至少两个命令排序为最终次序的装置,并且用于以最终次序在固态驱动器上执行至少两个命令中的至少一者的装置,其中固态驱动器的操作参数被至少两个命令中的至少一者修改。
在另一个实施方案中,该布置还可包括:用于基于至少两个命令中的每一者的初步完成次序估计至少两个命令中的每一者的完成时间的装置,用于将至少两个命令中的每一者的估计完成时间与阈值进行比较的装置,并且用于当至少两个命令中的每一者的估计完成时间超过阈值时将初步完成次序重新排序为最终完成次序使得至少两个命令中的每一者按阈值以最终完成次序完成的装置。
在另一个实施方案中,该布置还可包括用于将至少两个命令从主机发送到固态驱动器的装置。
在另一个实施方案中,该布置还可包括用于将至少两个命令中的每一者的完成通知从固态驱动器发送到主机的装置,该完成通知指示该至少两个命令中的每一者已完成。
在另一个非限制性实施方案中,公开了一种用于操作存储器布置的装置,包括:用于通过存储器布置的接口从主机接收至少两个命令的装置,用于在接口处接收到命令时对至少两个命令中的每一者加盖时间戳的装置,用于对至少两个命令中的每一者进行仲裁以创建用于执行至少两个命令中的每一者的最终次序的装置,其中用于仲裁的装置通过加权循环算法执行,并且用于以最终次序在存储器布置中执行至少两个命令的装置,其中存储器的操作参数被至少两个命令中的至少一者修改。
在另一个非限制性实施方案中,公开了一种用于操作存储器布置的装置,包括:用于通过存储器布置的接口从主机接收至少两个命令的装置,用于在接口处接收到命令时对至少两个命令中的每一者加盖时间戳的装置,用于对至少两个命令中的每一者进行仲裁以创建用于执行至少两个命令中的每一者的最终次序的装置,其中用于仲裁的装置通过加权循环算法执行,并且用于以最终次序在存储器布置中执行至少两个命令的装置,其中存储器的操作参数被至少两个命令中的至少一者修改。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (26)
1.一种操作固态驱动器的方法,包括:
从主机接收要求所述固态驱动器以初步完成次序执行动作的至少两个命令;
基于针对所述至少两个命令的服务质量分类将所述至少两个命令排序为最终完成次序,其中将所述至少两个命令排序包括:
基于所述至少两个命令中的每一者的所述初步完成次序以及指示在所述固态驱动器处所述至少两个命令中的每一者的到达时间的时间戳,估计所述至少两个命令中的每一者的完成时间;
将所述至少两个命令中的每一者的所估计的完成时间与阈值进行比较;以及
如果所述至少两个命令中的每一者的所估计的完成时间超过所述阈值,则将所述初步完成次序重新排序为所述最终完成次序,使得所述至少两个命令中的每一者按所述阈值以所述最终完成次序完成;并且
以所述最终完成次序在所述固态驱动器上执行所述至少两个命令,其中所述固态驱动器的操作参数被所述至少两个命令中的至少一者修改。
2.根据权利要求1所述的方法,还包括:
将所述至少两个命令从所述主机发送到所述固态驱动器。
3.根据权利要求1所述的方法,还包括:
将所述至少两个命令中的每一者的完成通知从所述固态驱动器发送到所述主机,所述完成通知指示所述至少两个命令中的每一者已完成。
4.根据权利要求3所述的方法,还包括:
在发送所述完成通知时从所述固态驱动器向所述主机发送中断通知。
5.根据权利要求1所述的方法,还包括:
在将所述至少两个命令排序之前,附加用于指示在所述固态驱动器处所述至少两个命令中的每一者的到达时间的所述时间戳。
6.根据权利要求1所述的方法,其中对所述至少两个命令的所述排序考虑了所述命令中的每一者的所述到达时间。
7.根据权利要求1所述的方法,其中对所述初步完成次序的所述重新排序考虑误码率。
8.根据权利要求1所述的方法,其中对所述初步完成次序的所述重新排序考虑裸片利用率。
9.根据权利要求1所述的方法,其中对所述初步完成次序的所述重新排序考虑存储数据的存储区类型。
10.根据权利要求1所述的方法,其中对所述初步完成次序的所述重新排序包括由所述固态驱动器的控制器执行的命令仲裁。
11.根据权利要求10所述的方法,其中所述命令仲裁以加权循环算法执行。
12.根据权利要求11所述的方法,其中用于所述加权循环算法的权重由所述主机分配给所述至少两个命令。
13.根据权利要求12所述的方法,其中所使用的所述权重为管理类别、紧急类别、高优先级类别、中优先级类别和低优先级类别。
14.一种操作存储器仪器的方法,包括:
通过所述存储器仪器的接口在所述存储器仪器处以初步次序从主机接收至少两个命令;
在所述接口处接收到所述命令时,对所述至少两个命令中的每一者加盖时间戳;
对所述至少两个命令中的每一者进行仲裁以创建用于执行所述至少两个命令中的每一者的最终次序,其中对所述至少两个命令中的每一者进行仲裁包括:
基于所述初步次序估计所述至少两个命令中的每一者的执行时间;
将所述至少两个命令中的每一者的所估计的执行时间与阈值进行比较;以及
如果所述至少两个命令中的每一者的所估计的执行时间超过所述阈值,则将所述初步次序重新排序为所述最终次序,使得所述至少两个命令中的每一者按所述阈值以所述最终次序完成;并且
以所述最终次序在所述存储器仪器中执行所述至少两个命令,其中所述存储器的操作参数被所述至少两个命令中的至少一者修改。
15.根据权利要求14所述的方法,其中将所述初步次序重新排序涉及所述存储器仪器的控制器执行的命令仲裁。
16.根据权利要求15所述的方法,还包括:
将所述至少两个命令中的每一者的完成通知从所述存储器仪器发送到所述主机,所述完成通知表示所述至少两个命令中的每一者已完成;以及
在发送所述完成通知时从所述存储器仪器向所述主机发送中断通知。
17.根据权利要求14所述的方法,其中将所述初步次序重新排序考虑误码率以及裸片利用率。
18.一种用于操作固态驱动器的仪器,包括:
用于从主机接收要求所述固态驱动器以初步完成次序执行动作的至少两个命令的装置;
用于基于针对所述至少两个命令的服务质量分类将所述至少两个命令排序为最终完成次序的装置,其中所述用于将所述至少两个命令排序的装置包括:
用于基于所述至少两个命令中的每一者的所述初步完成次序以及指示在所述固态驱动器处所述至少两个命令中的每一者的到达时间的时间戳来估计所述至少两个命令中的每一者的完成时间的装置;
用于将所述至少两个命令中的每一者的所估计的完成时间与阈值进行比较的装置;以及
用于当所述至少两个命令中的每一者的所估计的完成时间超过所述阈值时将所述初步完成次序重新排序为所述最终完成次序使得所述至少两个命令中的每一者按所述阈值以所述最终完成次序完成的装置;以及
用于以所述最终完成次序在所述固态驱动器上执行所述至少两个命令的装置,其中所述固态驱动器的操作参数被所述至少两个命令中的至少一者修改。
19.根据权利要求18所述的仪器,还包括:
用于附加指示在所述固态驱动器处所述至少两个命令中的每一者的到达时间的所述时间戳的装置。
20.根据权利要求19所述的仪器,还包括:
用于将所述至少两个命令从所述主机发送到所述固态驱动器的装置。
21.根据权利要求19所述的仪器,还包括:
用于将所述至少两个命令中的每一者的完成通知从所述固态驱动器发送到所述主机的装置,所述完成通知指示所述至少两个命令中的每一者已完成。
22.根据权利要求18所述的仪器,其中用于将所述初步完成次序重新排序的装置考虑误码率。
23.根据权利要求18所述的仪器,其中用于将所述初步完成次序重新排序的装置考虑裸片利用率。
24.根据权利要求18所述的仪器,其中用于将所述初步完成次序重新排序的装置考虑存储数据的存储区类型。
25.一种用于操作存储器仪器的装置,包括:
用于通过所述存储器仪器的接口从主机以初步次序接收至少两个命令的装置;
用于在所述接口处接收到所述命令时对至少两个命令中的每一者加盖时间戳的装置;
用于对所述至少两个命令中的每一者进行仲裁以创建用于执行所述至少两个命令中的每一者的最终次序的装置,其中用于对所述至少两个命令中的每一者进行仲裁的所述装置通过加权循环算法来执行,其中用于对所述至少两个命令中的每一者进行仲裁的所述装置包括:
用于基于所述初步次序来估计所述至少两个命令中的每一者的执行时间的装置;
用于将所述至少两个命令中的每一者的所估计的执行时间与阈值进行比较的装置;以及
用于当所述至少两个命令中的每一者的所估计的执行时间超过所述阈值时将所述初步次序重新排序为所述最终次序使得所述至少两个命令中的每一者按所述阈值以所述最终次序完成的装置;以及
用于以所述最终次序在所述存储器仪器中执行所述至少两个命令的装置,其中所述存储器的操作参数被所述至少两个命令中的至少一者修改。
26.根据权利要求25所述的装置,还包括:
用于将所述至少两个命令中的每一者的完成通知从所述存储器仪器发送到所述主机的装置,所述完成通知表示所述至少两个命令中的每一者已完成;以及
用于在发送所述完成通知时从所述存储器仪器向所述主机发送中断通知的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/026,965 | 2018-07-03 | ||
US16/026,965 US10732897B2 (en) | 2018-07-03 | 2018-07-03 | Quality of service based arbitrations optimized for enterprise solid state drives |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674059A CN110674059A (zh) | 2020-01-10 |
CN110674059B true CN110674059B (zh) | 2023-07-21 |
Family
ID=68943994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910525448.8A Active CN110674059B (zh) | 2018-07-03 | 2019-06-18 | 基于服务质量进行仲裁以优化企业固态驱动器 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10732897B2 (zh) |
CN (1) | CN110674059B (zh) |
DE (1) | DE102019116213A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
US11194511B2 (en) * | 2018-12-31 | 2021-12-07 | Micron Technology, Inc. | Arbitration techniques for managed memory |
US11237617B2 (en) | 2018-12-31 | 2022-02-01 | Micron Technology, Inc. | Arbitration techniques for managed memory |
US11687277B2 (en) | 2018-12-31 | 2023-06-27 | Micron Technology, Inc. | Arbitration techniques for managed memory |
US11262945B2 (en) * | 2019-10-30 | 2022-03-01 | EMC IP Holding Company, LLC | Quality of service (QOS) system and method for non-volatile memory express devices |
US11249926B1 (en) * | 2020-09-03 | 2022-02-15 | PetaIO Inc. | Host state monitoring by a peripheral device |
US11449443B2 (en) * | 2020-10-16 | 2022-09-20 | Western Digital Technologies, Inc. | Identification and classification of write stream priority |
US20220147392A1 (en) * | 2020-11-10 | 2022-05-12 | Samsung Electronics Co., Ltd. | System architecture providing end-to-end performance isolation for multi-tenant systems |
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 |
KR20220082563A (ko) * | 2020-12-10 | 2022-06-17 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
CN112650697B (zh) * | 2020-12-24 | 2023-04-18 | 西安翔腾微电子科技有限公司 | 一种基于ddr3存储控制器接口的多个主设备的仲裁电路 |
KR20220165855A (ko) * | 2021-06-08 | 2022-12-16 | 삼성전자주식회사 | 스토리지 장치 및 그의 동작 방법 |
US20230120600A1 (en) * | 2021-10-20 | 2023-04-20 | Western Digital Technologies, Inc. | Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices |
US20220083280A1 (en) * | 2021-11-29 | 2022-03-17 | Intel Corporation | Method and apparatus to reduce latency for random read workloads in a solid state drive |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773475A (zh) * | 2004-11-12 | 2006-05-17 | 国际商业机器公司 | 用于处理不同类型的存储器命令的仲裁结构和方法 |
US7672303B1 (en) * | 2005-02-17 | 2010-03-02 | Emc Corporation | Arbitration method and system |
CN103620570A (zh) * | 2011-06-24 | 2014-03-05 | Arm有限公司 | 存储器控制器和这种存储器控制器的操作方法 |
CN104679582A (zh) * | 2013-11-27 | 2015-06-03 | 英特尔公司 | 对于显示设备的命令调度 |
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530055A (en) | 1982-03-03 | 1985-07-16 | Sperry Corporation | Hierarchical memory system with variable regulation and priority of writeback from cache memory to bulk memory |
US7739436B2 (en) * | 2004-11-01 | 2010-06-15 | Sonics, Inc. | Method and apparatus for round robin resource arbitration with a fast request to grant response |
US7363406B2 (en) * | 2004-12-08 | 2008-04-22 | Motorola, Inc. | Dynamic access scheduling memory controller |
US20090165008A1 (en) * | 2007-12-19 | 2009-06-25 | Aten International Co., Ltd. | Apparatus and method for scheduling commands from host systems |
US7971093B1 (en) * | 2008-01-16 | 2011-06-28 | Network Appliance, Inc. | Apparatus and method to proactively address hard disk drive inefficiency and failure |
US8572130B2 (en) | 2011-06-27 | 2013-10-29 | Sap Ag | Replacement policy for resource container |
US9286125B2 (en) * | 2013-03-14 | 2016-03-15 | Intel Corporation | Processing engine implementing job arbitration with ordering status |
US9727503B2 (en) * | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
US10025535B2 (en) | 2015-03-27 | 2018-07-17 | Intel Corporation | Measurement and reporting of the latency of input and output operations by a solid state drive to a host |
KR20160118836A (ko) * | 2015-04-03 | 2016-10-12 | 에스케이하이닉스 주식회사 | 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법 |
US10318193B2 (en) | 2015-09-14 | 2019-06-11 | Sandisk Technologies Llc | Systems and methods of command authorization |
KR102358691B1 (ko) | 2015-10-30 | 2022-02-07 | 삼성전자주식회사 | 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법 |
CN109154883A (zh) * | 2017-03-22 | 2019-01-04 | 波利伍德有限责任公司 | 驱动级内部服务质量 |
US10387081B2 (en) | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10466904B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10572389B2 (en) * | 2017-12-12 | 2020-02-25 | Advanced Micro Devices, Inc. | Cache control aware memory controller |
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 |
US11048649B2 (en) * | 2018-10-17 | 2021-06-29 | Macronix International Co., Ltd. | Non-sequential page continuous read |
US10901658B2 (en) | 2018-12-28 | 2021-01-26 | Micron Technology, Inc. | Host adaptive memory device optimization |
-
2018
- 2018-07-03 US US16/026,965 patent/US10732897B2/en active Active
-
2019
- 2019-06-14 DE DE102019116213.0A patent/DE102019116213A1/de active Pending
- 2019-06-18 CN CN201910525448.8A patent/CN110674059B/zh active Active
-
2020
- 2020-07-16 US US16/931,309 patent/US11385835B2/en active Active
-
2022
- 2022-07-08 US US17/860,203 patent/US12001720B2/en active Active
- 2022-07-08 US US17/860,318 patent/US11709635B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773475A (zh) * | 2004-11-12 | 2006-05-17 | 国际商业机器公司 | 用于处理不同类型的存储器命令的仲裁结构和方法 |
US7672303B1 (en) * | 2005-02-17 | 2010-03-02 | Emc Corporation | Arbitration method and system |
CN103620570A (zh) * | 2011-06-24 | 2014-03-05 | Arm有限公司 | 存储器控制器和这种存储器控制器的操作方法 |
CN104679582A (zh) * | 2013-11-27 | 2015-06-03 | 英特尔公司 | 对于显示设备的命令调度 |
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
Also Published As
Publication number | Publication date |
---|---|
US11709635B2 (en) | 2023-07-25 |
US20220342607A1 (en) | 2022-10-27 |
US20220342608A1 (en) | 2022-10-27 |
US10732897B2 (en) | 2020-08-04 |
US20200348889A1 (en) | 2020-11-05 |
DE102019116213A1 (de) | 2020-01-09 |
CN110674059A (zh) | 2020-01-10 |
US20200012451A1 (en) | 2020-01-09 |
US12001720B2 (en) | 2024-06-04 |
US11385835B2 (en) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674059B (zh) | 基于服务质量进行仲裁以优化企业固态驱动器 | |
CN110088723B (zh) | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 | |
CN110088725B (zh) | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 | |
US11061721B2 (en) | Task queues | |
CN108628777B (zh) | 动态和自适应中断合并的系统和方法 | |
CN110447009B (zh) | 用于自适应命令获取聚合的系统和方法 | |
US10866910B2 (en) | Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments | |
US10866740B2 (en) | System and method for performance-based multiple namespace resource allocation in a memory | |
US10564857B2 (en) | System and method for QoS over NVMe virtualization platform using adaptive command fetching | |
US11392320B2 (en) | Quality of service based arbitrations optimized for enterprise solid state drives | |
US11650937B2 (en) | Storage system and method for secure host controller memory buffer access | |
US11789654B2 (en) | Data storage device and method for file-based interrupt coalescing | |
WO2021118623A1 (en) | Storage system and method for reducing read-retry duration | |
US11487449B2 (en) | Data storage device and method for enabling higher lane utilization in run time via device hints on workload patterns |
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 |