CN114385235A - 使用主机内存缓冲的命令排出 - Google Patents
使用主机内存缓冲的命令排出 Download PDFInfo
- Publication number
- CN114385235A CN114385235A CN202110636725.XA CN202110636725A CN114385235A CN 114385235 A CN114385235 A CN 114385235A CN 202110636725 A CN202110636725 A CN 202110636725A CN 114385235 A CN114385235 A CN 114385235A
- Authority
- CN
- China
- Prior art keywords
- storage device
- data storage
- command
- data
- hmb
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
Abstract
本公开整体涉及使用主机内存缓冲(HMB)有效地中止命令。该命令包含将数据存储设备引导到数据存储设备上相关内容所在的各个位置的指标。一旦接收到中止命令,就改变存储在数据存储设备RAM中的主机指标的内容以指向HMB。然后,数据存储设备等待直到与命令相关联的通过接口总线的任何已经开始的事务已经完成。此后,将失败完成命令发布到主机设备。
Description
相关申请的交叉引用
本申请要求2020年10月5日提交的美国临时专利申请序列号63/087,737的权益,该美国临时专利申请以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及使用主机内存缓冲(HMB)有效地中止命令。
相关领域的描述
在存储系统中,主机设备或数据存储设备有时中止未决命令。应中止命令有几种情形。一种情形是主机设备发出中止命令,由此主机设备指定应中止的命令的ID,并且数据存储设备应相应地起作用。第二种情形是主机设备删除主机设备先前已发出的队列命令。主机设备可以删除提交或完成队列,然后数据存储设备应该在删除队列之前中止所有相关联的命令。
第三种情形是数据存储设备可能需要终止命令的命令超时。终止可能是由于从NAND故障的恢复,该恢复涉及基于奇偶校验信息重新构建数据的恢复机制,但是重建需要很长时间。终止也可能是由于维护饥饿,维护饥饿可能是由于物理空间的极端碎片化而产生的。碎片化降低了吞吐量,如果命令和维护操作交错,则碎片化可导致命令超时。命令和维护的交错通常在其中不允许有维护时间的攻势的功率管理期间或在密集高队列深度随机写入工作负载期间发生。终止也可能是由于非常高的队列深度,其中如果设备内的命令由于上述原因被暂停,则未处理命令可在数据存储设备检索命令之前超时。
第四种情形是高级命令重试,其中数据存储设备决定使命令失败,同时要求主机设备使该命令在稍后时间重新排队。一般来讲,中止命令不是简单的流程。挑战是命令何时已启动执行阶段。在中止命令之前,数据存储设备必须首先终止与该命令相关联的所有任务,并且直到那时向主机设备发出完成消息。在发出完成消息之后,数据存储设备不得访问相关的主机内存缓冲(HMB)。
先前,在中止命令之前,数据存储设备首先通过扫描未决活动来终止与该命令相关联的所有任务,并且直到那时向主机设备发出完成消息。另选地,在中止命令之前,数据存储设备首先等待直到已经开始的任务被完成,并且直到那时将向主机设备发出完成消息。
因此,本领域需要更有效地处理中止命令。
发明内容
本公开整体涉及使用主机内存缓冲(HMB)有效地中止命令。该命令包含将数据存储设备引导到数据存储设备上相关内容所在的各个位置的指标。一旦接收到中止命令,就改变存储在数据存储设备RAM中的主机指标的内容以指向HMB。然后,数据存储设备等待直到与命令相关联的通过接口总线的任何已经开始的事务已经完成。此后,将失败完成命令发布到主机设备。
在一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及耦接到一个或多个存储器设备的控制器,其中控制器被配置成:从主机设备接收原始命令;开始执行原始命令;接收中止请求命令以中止原始命令,其中中止请求命令从主机设备接收或由数据存储设备生成;修改驻留在数据存储设备中的原始命令的一个或多个指标;将与原始命令相关联的一组数据排出到主机内存缓冲(HMB);以及向主机设备返回失败完成消息,其中在使用原始命令指标的已经发出的数据传输完成之后,向主机设备返回失败完成消息。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及耦接到一个或多个存储器设备的控制器,其中控制器被配置成:从主机设备接收原始命令;确定利用高级命令重试(ACR)完成原始命令;分配一个或多个主机内存缓冲(HMB)以用于保持与原始命令相关联的一组数据;向主机设备返回完成消息,其中完成消息请求所述主机设备重试原始命令;在将数据传输到HMB内的所分配的一个或多个缓冲区的同时执行原始命令;从主机设备接收重新发出的原始命令;以及从HMB内的所分配的一个或多个缓冲区复制用于重新发出的原始命令的数据。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器装置;以及耦接到一个或多个存储器装置的控制器,其中控制器被配置成:从主机设备接收中止命令请求;分配第一主机内存缓冲(HMB)和第二HMB以用于保持与中止命令请求相关联的一系列数据,其中:第一HMB被配置成排出与中止命令请求相关联的一系列数据;并且第二HMB被配置成指向漏极缓冲区;以及向主机设备返回完成消息。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意性框图,其中数据存储设备可以用作主机设备的存储设备。
图2是中止请求的示意图。
图3是示出根据一个实施方案的中止请求过程的流程图。
图4是根据一个实施方案的处理中止请求的时序图。
图5是NVMe标准中所述的PRP列表的示意图。
图6是根据一个实施方案的用于命令排出的两个主机内存缓冲(HMB)的示意图。
图7是示出根据一个实施方案的高级命令重试(ACR)的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及使用主机内存缓冲(HMB)有效地中止命令。该命令包含将数据存储设备引导到数据存储设备上相关内容所在的各个位置的指标。一旦接收到中止命令,就改变存储在数据存储设备RAM中的主机指标的内容以指向HMB。然后,数据存储设备等待直到与命令相关联的通过接口总线的任何已经开始的事务已经完成。此后,将失败完成命令发布到主机设备。
图1是示出根据公开的实施方案的存储系统100的示意性框图,其中数据存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM 138,其中主机DRAM 138的一部分被分配为主机内存缓冲(HMB)140。HMB 140可被数据存储设备106用作数据存储设备106的附加工作区域或附加存储区域。在一些示例中,HMB 140可能是主机设备不可访问的。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置成共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备、或能够从数据存储设备发送或接收数据的其它设备等。
数据存储设备106包括控制器108、NVM 110、电源111、易失性存储器112、接口114和写入缓冲区116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(PCB),数据存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连数据存储设备106的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCIExpress(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
数据存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
NVM 110可以包括多个存储器设备或存储器单元。NVM 110可以被配置成存储和/或检索数据。例如,NVM 110的存储单元可以接收数据并且从控制器108接收指示存储单元存储数据的消息。类似地,NVM 110的存储单元可以从控制器108接收指示存储单元检索数据的消息。在一些示例中,存储单元中的每个存储单元可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储单元)。在一些示例中,每个存储单元可以被配置成存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其它类型的非易失性存储器设备。
NVM 110可以包括多个闪存存储器设备或存储单元。NVM闪存存储器设备可以包括基于NAND或NOR的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NVM闪存存储器设备中,闪存存储器设备可被划分成多个管芯,其中多个管芯中的每个管芯包括多个块,这些块可被进一步划分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NVM单元。NVM单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NVM闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可能以页面等级向NVM闪存存储器设备写入数据以及从NVM闪存存储器设备读取数据,并且以块等级从NVM闪存存储器设备擦除数据。
数据存储设备106包括电源111,其可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。
在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。
在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
数据存储设备106还包括易失性存储器112,其可以由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。在一些示例中,控制器108可以使用易失性存储器112作为高速缓存。例如,控制器108可以将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入非易失性存储器110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
数据存储设备106包括控制器108,其可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲区116中。在一些其它实施方案中,可利用HMB 140。
图2是中止请求的示意图。图2的各方面可类似于图1的存储系统100。例如,主机220可以是主机设备104,控制器202可以是控制器108,并且NVM 222可以是NVM 110。在数据存储设备(诸如图1的数据存储设备106)操作期间,主机220或控制器202可以中止未决命令,诸如主机生成的读取命令或主机生成的写入命令。中止命令可由主机220或由控制器202发出。例如,中止命令可由控制器202的主处理器204生成,其中主处理器204将中止命令发送到控制器202的一个或多个处理器206a-206n。
当中止命令由一个或多个处理器206a-206n接收时,一个或多个处理器可通过扫描未决命令来终止与中止命令相关联的所有任务或等待终止尚未启动的所有未决命令,其中允许启动的未决命令在终止所有其它未决命令之前完成。在终止相关未决命令之后,向主机220发出完成消息。
关于图2,主处理器204向一个或多个处理器206a-206n发出中止命令请求。一个或多个处理器206a-206n利用硬件(HW)加速器208来扫描每个未决命令并终止相关的未决命令。在终止相关未决命令之后,一个或多个处理器向数据路径210发布完成消息,如果由数据存储设备发起中止命令则该完成消息可以是失败完成消息,其中数据路径210将完成消息传输到主机220。
在常规操作中,数据路径210可用于通过利用直接存储器访问(DMA)模块212向和从NVM 222传输数据,使用纠错码(ECC)引擎218编码/解码ECC,由安全引擎214生成安全协议,并且由RAID模块216管理数据的存储。中止命令操作可在向主机220发布完成消息或失败完成消息之前具有高延迟。由于高延迟,数据存储设备的缓冲区和资源可被低效地利用。此外,中止命令操作的某些情况可能必须单独执行或具有单独的程序以完成中止命令操作的某些情况。
图3是示出根据一个实施方案的中止请求过程300的流程图。在框302处,一个或多个处理器诸如图2的一个或多个处理器206a-206n接收中止请求或中止命令,其中一个或多个处理器可以是控制器(诸如图2的控制器202)的部件。在一些实施方案中,中止请求可由主机诸如主机220生成,并且经由数据总线传输到控制器。在其它实施方案中,中止请求可由主处理器诸如图2的主处理器204生成,其中主处理器将中止请求发送到一个或多个处理器中的相关处理器。
在框304处,控制器修改驻留在命令的内部副本中的缓冲区指标的内容。命令的内部副本可以是存储在数据存储设备的易失性存储器诸如DRAM中的命令。缓冲区指标可指向HMB,诸如图1的HMB 140。在一些实施方案中,HMB包括两个4KB的HMB缓冲区。先前列出的值并非旨在进行限制,而是提供可能的实施方案的示例。在框306处,控制器确定所有当前传输是否完成。当前传输可以是执行但尚未完成的命令。如果当前传输尚未完成,则控制器等待当前传输完成。然而,如果当前传输在框306处完成,则在框308处,控制器向主机设备发布完成消息或失败完成消息。
图4是根据一个实施方案的处理中止请求的时序图。图4的各方面可类似于图3所述的那些。在时间1处,主机设备(诸如图1的主机设备104)向数据存储设备(诸如图1的数据存储设备106)发出数据。命令可以是读取命令、写入命令等。在主机由于传输延迟等向数据存储设备发出命令之后的某个时间(诸如时间2),控制器(诸如图2的控制器202)发起数据传输操作。
在执行数据传输操作时,数据存储设备在时间3处接收中止命令。在一个实施方案中,中止命令可由主机设备生成。在另一个实施方案中,中止命令可由数据存储设备生成,其中中止命令由控制器或主处理器诸如图2的主处理器204生成。在时间4处,数据存储设备修改与驻留在数据存储设备中的中止命令相关联的一个或多个指标。
在时间5处,数据存储设备向主机设备发送失败完成消息,这发生在时间2处的数据传输操作之后。在时间6处,数据传输操作已停止,并且数据存储设备将与中止请求命令相关联的一组数据排出到HMB,诸如图1的HMB 140。在一些实施方案中,该组数据的排出在将失败完成消息发布给主机之前开始。在其它实施方案中,在中止向HMB操作的数据传输之前发布失败完成消息。
图5是NVMe标准中所述的PRP列表的示意图。命令502包括多个物理区域页面(PRP)指标,诸如第一PRP1 504和第二PRP2 506,其中每个PRP指标指向多个缓冲区中的缓冲区。多个缓冲区可为HMB(诸如图1的HMB 140)的一部分。此外,在图5中,每个页面、页面0 518、页面1520、页面2 522和页面3 524代表不同的缓冲区。在一个示例中,缓冲区中的每个可具有与命令或虚拟命令的大小对齐的大小,诸如约4K。虚拟命令可以是数据存储设备生成的命令,以设置HMB中的缓冲区的大小的参数。第一PRP1 504和第二PRP2 506包括偏移“xx”,其中偏移是与位置(诸如标头)的指标偏移。每个PRP指标可以是指向缓冲区的指标或指向条目列表的指标。
例如,第一PRP1 504包括指向第一页面0 518的第一指标526。第二PRP2 506包括指向PRP列表508的第一条目PRP条目0 510的第二指标528。PRP列表508具有偏移0,使得PRP列表508与缓冲区的大小对齐。例如,第一PRP条目0 510包括指向第二页面1 520的第三指标530,第二PRP条目1 512包括指向第三页面2 522的第四指标532,并且第三PRP条目2 514包括指向第四页面3 524的第五指标534。PRP列表508的最后一个条目可包括指向后续或新PRP列表的指标。
图6是根据一个实施方案的用于命令排出的两个主机内存缓冲(HMB)的示意图。NVMe命令602是由控制器接收的命令的存储副本,其中NVMe命令602可存储在数据存储设备的易失性存储器或非易失性存储器中。第一PRP1 604a可为图5的第一PRP 504,并且第二PRP2 604b可为图5的第二PRP 506。第一PRP1 604a的值被覆盖以指向第一HMB缓冲区606a。第二PRP2 604b指向第二HMB缓冲区606b。
HMB,诸如HMB 140,包括第一HMB缓冲区606a和第二HMB缓冲区606b。第一HMB缓冲区606a和第二HMB缓冲区606b可具有约4KB的大小。第一HMB缓冲区606a可用作漏极缓冲区,其中与中止命令相关联的数据将在读取操作和写入操作两者中被排出或传输到其中。第二HMB缓冲区606b是多个缓冲区608a-608n的列表。
在初始化阶段,第二HMB缓冲区606b可由数据存储设备(诸如图1的数据存储设备106)的控制器(诸如图2的控制器202)初始化。初始化阶段可以是在数据存储设备的唤醒操作期间,诸如当向数据存储设备提供电力时。第二HMB缓冲区606b的多个缓冲区608a-608n中的每个指标指向第一HMB缓冲区606a。此外,最后一个指标608n并非指向后续或下一个缓冲区列表,而是最后一个指标608n指向同一HMB缓冲区的第一缓冲区608a。通过将第二HMB缓冲区606b的每个指标指向第一HMB缓冲区606a,将第二HMB缓冲区606b的最后一个缓冲区608n的指标指向第一缓冲区608a,并且将第一PRP1的指标指向第一HMB缓冲区606a,与读取操作或写入操作相关联的相关数据将在接收到中止命令时被排出到第一HMB缓冲区606a。
图7是示出根据一个实施方案的高级命令重试(ACR)的流程图700。当数据存储设备接收到包括ACR请求的命令时,可分配一个或多个HMB以保持命令的该组数据。当失败命令具有ACR时,主机(诸如图1的主机设备104)被通知失败命令,并且主机可以在延迟(诸如约10秒)之后使失败命令在命令缓冲区中重新排队。延迟时间可由数据存储设备诸如图1的数据存储设备104经由识别控制器命令来公布。
不是使与失败命令相关联的数据在主机缓冲区(诸如图1的主机DRAM 138)中重新排队,而是由数据存储设备使与失败命令相关联的数据在主机HMB(诸如图1的主机HMB140)中排队。当接收到命令的ACR请求时,在框702处启动流程图700。在框704处,分配HMB缓冲区。HMB缓冲区包括第一HMB缓冲区(诸如图6的第一HMB缓冲区606a)和第二HMB缓冲区(诸如图6的第二HMB缓冲区606b),其中第一HMB缓冲区为排出缓冲区并且第二HMB缓冲区为指向第一HMB缓冲区的缓冲区指标的列表。
在框706处,修改指标(即,PRP1和PRP2)的内部版本以指向所分配的HMB缓冲区。例如,PRP1指标可指向第一HMB缓冲区并且PRP2指标可指向第二HMB缓冲区。在框708处,控制器确定是否已经用相关联的目标主机缓冲区开始的命令的所有当前传输都完成。如果当前传输尚未完成,则控制器等待命令完成。
在框710处,在所有当前命令完成之后,控制器向主机发布失败完成消息,该失败完成消息具有针对已失败的命令的ACR指示。在框712处,访问一个或多个HMB,使得失败命令的数据被传输到一个或多个HMB的位置。在主机设备的界面上发出该系列传输的表示,其中该系列传输存储在一个或多个HMB中。当HMB缓冲区被访问时,与失败的命令相关联的数据被传输到第一HMB缓冲区(即,排出HMB缓冲区)。在框714处,主机设备使该命令重新排队至数据存储设备,其中重新排队的命令是已失败的原始命令。在框716处,将与重新排队的命令相关联的数据从HMB中的相关位置(或在一些实施方案中,一个或多个HMB)复制到主机缓冲区。由控制器利用存储在主机缓冲区中的数据来执行重新排队的命令。
通过改变命令指标的内容,可以更有效地处理中止命令,从而改善存储设备性能。与目前存在的复杂的高延迟流相比,以简单的方式中止命令同时不具有任何延迟提高了效率。另外,使用HMB作为用于ACR失败的命令的高速缓存缓冲区将加速处理。
在一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及耦接到一个或多个存储器设备的控制器,其中控制器被配置成:从主机设备接收原始命令;开始执行原始命令;接收中止请求命令以中止原始命令,其中中止请求命令从主机设备接收或由数据存储设备生成;修改驻留在数据存储设备中的原始命令的一个或多个指标;将与原始命令相关联的一组数据排出到主机内存缓冲(HMB);以及向主机设备返回失败完成消息,其中在使用原始命令指标的已经发出的数据传输完成之后,向主机设备返回失败完成消息。控制器被进一步配置成在接收到中止请求之后继续处理与原始命令相关联的数据传输。处理数据传输在修改一个或多个指标完成之后继续。排出该组数据发生于:返回失败完成消息之后,在返回失败完成消息之前开始,或它们的组合。在与所述原始命令相关联的数据传输仍在处理时递送所述失败完成消息,其中在递送所述失败完成消息之后发生的所述数据传输利用所修改的一个或多个指标。排出一组数据包括将每个指标指向漏极缓冲区。最后一个指标指向最后一个指标所驻留在的相同缓冲区列表。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及耦接到一个或多个存储器设备的控制器,其中控制器被配置成:从主机设备接收原始命令;确定利用高级命令重试(ACR)完成原始命令;分配一个或多个主机内存缓冲(HMB)以用于保持与原始命令相关联的一组数据;向主机设备返回完成消息,其中完成消息请求主机设备重试原始命令;在将数据传输到HMB内的所分配的一个或多个缓冲区的同时执行原始命令;从主机设备接收重新发出的原始命令;以及从HMB内的所分配的一个或多个缓冲区复制用于重新发出的原始命令的数据。当控制器向主机设备返回完成消息时:在主机设备的界面上发出数据的表示;并且数据存储在HMB中,其中HMB不用于排出数据,并且其中HMB包括大小足以保持数据的多个缓冲区,以确保数据存储设备能够在从主机设备接收到检索数据的命令时将数据从HMB复制到主机设备。控制器被进一步配置成从主机设备接收原始命令的重新发出的命令。控制器被进一步配置成从一个或多个HMB复制数据。复制包括将一系列传输从一个或多个HMB复制到主机缓冲区以用于重新发出的命令。控制器被配置成等待完成在返回完成消息之前已经开始的与原始命令相关联的当前传输,其中在控制器返回完成消息之后,数据存储设备不访问具有原始命令的原始缓冲区,并且其中在控制器返回完成消息之后,数据存储设备能够访问一个或多个HMB。在等待期间并且在返回完成消息之前,数据存储设备能够并行地访问原始缓冲区和一个或多个HMB。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器装置;以及耦接到一个或多个存储器装置的控制器,其中控制器被配置成:从主机设备接收中止命令请求;分配第一主机内存缓冲(HMB)和第二HMB以用于保持与中止命令请求相关联的一系列数据,其中:第一HMB被配置成排出与中止命令请求相关联的一系列数据;并且第二HMB被配置成指向漏极缓冲区;以及向主机设备返回完成消息。第一HMB为漏极缓冲区。与中止命令相关联的数据在读取和写入操作中被排出到漏极缓冲区。第二HMB被配置成包含缓冲区指标列表。缓冲区指标列表中除最后一个指标之外的所有指标均指向漏极缓冲区。缓冲区指标列表中的最后一个指标指向缓冲区指标列表中的不同指标。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置成:
从主机设备接收原始命令;
开始执行所述原始命令;
接收中止请求命令以中止所述原始命令,其中所述中止请求命令从主机设备接收或者由所述数据存储设备生成;
修改驻留在所述数据存储设备中的所述原始命令的一个或多个指标;
将与所述原始命令相关联的一组数据排出到主机内存缓冲(HMB);以及
向所述主机设备返回失败完成消息,其中在使用原始命令指标的已经发出的数据传输完成之后,向所述主机设备返回所述失败完成消息。
2.根据权利要求1所述的数据存储设备,其中所述控制器被进一步配置成在接收到所述中止请求之后继续处理与所述原始命令相关联的数据传输。
3.根据权利要求2所述的数据存储设备,其中所述处理数据传输在所述修改一个或多个指标完成之后继续。
4.根据权利要求1所述的数据存储设备,其中排出所述一组数据发生于:在返回所述失败完成消息之后,在返回所述失败完成消息之前开始,或它们的组合。
5.根据权利要求1所述的数据存储设备,其中在与所述原始命令相关联的数据传输仍在处理时递送所述失败完成消息,其中在递送所述失败完成消息之后发生的所述数据传输利用所修改的一个或多个指标。
6.根据权利要求1所述的数据存储设备,其中排出所述一组数据包括将每个指标指向漏极缓冲区。
7.根据权利要求6所述的数据存储设备,其中最后一个指标指向所述最后一个指标所驻留在的相同缓冲区列表。
8.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置成:
从主机设备接收原始命令;
确定利用高级命令重试(ACR)完成原始命令;
分配主机内存缓冲(HMB)内的一个或多个缓冲区以用于保持与所述原始命令相关联的一组数据;
向所述主机设备返回具有ACR指示的完成消息,其中所述完成消息请求所述主机设备重试所述原始命令;
在将数据传输到HMB内的所分配的一个或多个缓冲区的同时执行所述原始命令;
从所述主机设备接收重新发出的原始命令;以及
从HMB内的所分配的一个或多个缓冲区复制用于所述重新发出的原始命令的数据。
9.根据权利要求8所述的数据存储设备,其中当所述控制器向所述主机设备返回所述完成消息时:
在所述主机设备的界面上发出所述数据的表示;并且
所述数据存储在所述HMB中,其中所述HMB不用于排出数据,并且其中所述HMB包括大小足以保持数据的多个缓冲区,以确保所述数据存储设备能够在从所述主机设备接收到检索所述数据的命令时将数据从所述HMB复制到所述主机设备。
10.根据权利要求8所述的数据存储设备,其中所述控制器被进一步配置成:
从所述主机设备接收所述原始命令的重新发出的命令。
11.根据权利要求10所述的数据存储设备,其中所述控制器被进一步配置成从所述一个或多个HMB复制数据。
12.根据权利要求11所述的数据存储设备,其中所述复制包括将所述数据从所述一个或多个HMB复制到主机缓冲区以用于所述重新发出的命令。
13.根据权利要求8所述的数据存储设备,其中所述控制器被配置成等待完成在返回所述完成消息之前已经开始的与所述原始命令相关联的当前传输,其中在所述控制器返回所述完成消息之后,所述数据存储设备不访问具有原始命令的原始缓冲区,并且其中在所述控制器返回所述完成消息之后,所述数据存储设备能够访问所述一个或多个HMB。
14.根据权利要求13所述的数据存储设备,其中在所述等待期间并且在返回所述完成消息之前,所述数据存储设备能够并行地访问所述原始缓冲区和所述一个或多个HMB。
15.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器装置;和
控制器,所述控制器耦接到所述一个或多个存储器装置,其中所述控制器被配置成:
从主机设备接收中止命令请求;
分配第一主机内存缓冲(HMB)和第二HMB以用于保持与所述中止命令请求相关联的一系列数据,其中:
所述第一HMB被配置成排出与所述中止命令请求相关联的所述一系列数据;并且
所述第二HMB被配置成指向漏极缓冲区;以及
向所述主机设备返回完成消息。
16.根据权利要求15所述的数据存储设备,其中所述第一HMB为所述漏极缓冲区。
17.根据权利要求15所述的数据存储设备,其中与所述中止命令相关联的数据在读取和写入操作中被排出到所述漏极缓冲区。
18.根据权利要求15所述的数据存储设备,其中所述第二HMB被配置成包含缓冲区指标列表。
19.根据权利要求18所述的数据存储设备,其中所述缓冲区指标列表中除最后一个指标之外的所有指标均指向所述漏极缓冲区。
20.根据权利要求19所述的数据存储设备,其中所述缓冲区指标列表中的所述最后一个指标指向所述缓冲区指标列表中的不同指标。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063087737P | 2020-10-05 | 2020-10-05 | |
US63/087,737 | 2020-10-05 | ||
US17/184,527 | 2021-02-24 | ||
US17/184,527 US11500589B2 (en) | 2020-10-05 | 2021-02-24 | Command draining using host memory buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385235A true CN114385235A (zh) | 2022-04-22 |
Family
ID=80738159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110636725.XA Pending CN114385235A (zh) | 2020-10-05 | 2021-06-07 | 使用主机内存缓冲的命令排出 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11500589B2 (zh) |
KR (1) | KR102645982B1 (zh) |
CN (1) | CN114385235A (zh) |
DE (1) | DE102021114458A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022071543A (ja) * | 2020-10-28 | 2022-05-16 | キヤノン株式会社 | 制御装置および制御装置の制御方法 |
US11941298B2 (en) * | 2021-05-11 | 2024-03-26 | Mediatek Inc. | Abort handling by host controller for storage device |
US11809742B2 (en) * | 2021-09-20 | 2023-11-07 | Western Digital Technologies, Inc. | Recovery from HMB loss |
US11914900B2 (en) | 2022-05-31 | 2024-02-27 | Western Digital Technologies, Inc. | Storage system and method for early command cancelation |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4603382A (en) * | 1984-02-27 | 1986-07-29 | International Business Machines Corporation | Dynamic buffer reallocation |
US6694390B1 (en) * | 2000-09-11 | 2004-02-17 | Intel Corporation | Managing bus transaction dependencies |
US7752340B1 (en) | 2006-03-31 | 2010-07-06 | Emc Corporation | Atomic command retry in a data storage system |
JP4858926B2 (ja) * | 2007-11-07 | 2012-01-18 | 東芝ストレージデバイス株式会社 | 媒体記憶装置のリード/ライト処理方法及び媒体記憶装置 |
US20130179614A1 (en) | 2012-01-10 | 2013-07-11 | Diarmuid P. Ross | Command Abort to Reduce Latency in Flash Memory Access |
US9792046B2 (en) * | 2014-07-31 | 2017-10-17 | Sandisk Technologies Llc | Storage module and method for processing an abort command |
CN104657145B (zh) * | 2015-03-09 | 2017-12-15 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
US9996262B1 (en) | 2015-11-09 | 2018-06-12 | Seagate Technology Llc | Method and apparatus to abort a command |
US10725677B2 (en) * | 2016-02-19 | 2020-07-28 | Sandisk Technologies Llc | Systems and methods for efficient power state transitions |
US10521305B2 (en) * | 2016-04-29 | 2019-12-31 | Toshiba Memory Corporation | Holdup time measurement for solid state drives |
US10521118B2 (en) * | 2016-07-13 | 2019-12-31 | Sandisk Technologies Llc | Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB) |
US10372378B1 (en) | 2018-02-15 | 2019-08-06 | Western Digital Technologies, Inc. | Replacement data buffer pointers |
US10642536B2 (en) | 2018-03-06 | 2020-05-05 | Western Digital Technologies, Inc. | Non-volatile storage system with host side command injection |
KR102599188B1 (ko) * | 2018-11-09 | 2023-11-08 | 삼성전자주식회사 | 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법 |
US11861217B2 (en) * | 2020-10-05 | 2024-01-02 | Western Digital Technologies, Inc. | DRAM-less SSD with command draining |
US20220113901A1 (en) * | 2020-10-12 | 2022-04-14 | Qualcomm Incorporated | Read optional and write optional commands |
-
2021
- 2021-02-24 US US17/184,527 patent/US11500589B2/en active Active
- 2021-06-04 DE DE102021114458.2A patent/DE102021114458A1/de active Pending
- 2021-06-07 CN CN202110636725.XA patent/CN114385235A/zh active Pending
- 2021-06-11 KR KR1020210076083A patent/KR102645982B1/ko active IP Right Grant
-
2022
- 2022-11-03 US US17/980,177 patent/US11954369B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230051007A1 (en) | 2023-02-16 |
DE102021114458A1 (de) | 2022-04-07 |
US20220107758A1 (en) | 2022-04-07 |
KR102645982B1 (ko) | 2024-03-08 |
US11954369B2 (en) | 2024-04-09 |
KR20220045548A (ko) | 2022-04-12 |
US11500589B2 (en) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9927999B1 (en) | Trim management in solid state drives | |
KR102645982B1 (ko) | 호스트 메모리 버퍼를 사용하는 커맨드 배출 | |
US11861217B2 (en) | DRAM-less SSD with command draining | |
CN113168374A (zh) | 写入命令在分区命名空间中的保持 | |
US11204833B1 (en) | NVM endurance group controller using shared resource architecture | |
US11513736B2 (en) | Revised host command generation for unaligned access | |
US11853571B2 (en) | Storage devices hiding parity swapping behavior | |
US11733920B2 (en) | NVMe simple copy command support using dummy virtual function | |
KR102621493B1 (ko) | 메모리 디바이스들의 병렬 부트 실행 | |
CN117616404A (zh) | 主存储器缓冲区高速缓存管理 | |
US11138066B1 (en) | Parity swapping to DRAM | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
US20210373809A1 (en) | Write Data-Transfer Scheduling in ZNS Drive | |
WO2021257117A1 (en) | Fast recovery for persistent memory region (pmr) of a data storage device | |
US20230297277A1 (en) | Combining Operations During Reset | |
US11556268B2 (en) | Cache based flow for a simple copy command | |
US20220405011A1 (en) | Latency On Indirect Admin Commands | |
US20230289226A1 (en) | Instant Submission Queue Release | |
US20230214254A1 (en) | PCIe TLP Size And Alignment Management | |
US20240094911A1 (en) | Dynamic And Shared CMB And HMB Allocation | |
US20240143512A1 (en) | Write buffer linking for easy cache reads | |
US20240086108A1 (en) | Parallel fragmented sgl fetching for hiding host turnaround time | |
WO2023064003A1 (en) | Efficient data path in compare command execution | |
WO2024063822A1 (en) | Partial speed changes to improve in-order transfer | |
CN116126746A (zh) | 具有hmb高速缓存管理的无dram ssd |
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 |