CN113196225A - 开放信道矢量命令执行 - Google Patents

开放信道矢量命令执行 Download PDF

Info

Publication number
CN113196225A
CN113196225A CN202080007005.0A CN202080007005A CN113196225A CN 113196225 A CN113196225 A CN 113196225A CN 202080007005 A CN202080007005 A CN 202080007005A CN 113196225 A CN113196225 A CN 113196225A
Authority
CN
China
Prior art keywords
vector
command
commands
memory
controller
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
Application number
CN202080007005.0A
Other languages
English (en)
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 Technology Co
Original Assignee
Western Digital Technologies Inc
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
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN113196225A publication Critical patent/CN113196225A/zh
Pending legal-status Critical Current

Links

Images

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/1668Details of memory controller
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种方法和装置,该方法和装置提供固态驱动器控制器,该固态驱动器控制器被配置为分析来自主机计算设备的输入/输出命令以确定命令是否包括矢量或非矢量命令,并且被配置为基于矢量命令中包含的物理地址生成多个非矢量命令。

Description

开放信道矢量命令执行
相关申请的交叉引用
本申请要求2019年7月1日提交的美国申请号16/459,183的优先权,该美国申请转让给本文的受让人,并且全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及用于在存储器设备上执行矢量命令的系统和方法。
相关领域的描述
固态驱动器(SSD)存储设备是通常由控制器和SSD存储器(例如,非易失性NAND闪存)组成的数据存储设备。在所有SSD存储设备中,控制器位于一个或多个主机计算系统与SSD存储器之间。SSD存储设备使用闪存转换层(FTL)与主机进行交互。
最近,已开发出一类新的SSD,称为开放信道SSD。开放信道SSD与传统SSD的不同之处在于,它们将SSD存储器结构的内部映射暴露给主机,从而允许主机使用物理地址而不是传统逻辑地址来执行数据放置和数据输入/输出(I/O)调度。因此,开放信道SSD具有留下FTL的某些方面以供主机处理的能力。在主机承担一旦移交给存储设备便存在的附加责任时,可使用附加命令诸如矢量命令来增强SSD的功能。
因此,随着对数字存储解决方案的需求不断增加,需要新的方式来支持附加矢量命令,以便不仅满足增长的需求,而且还提升和增强用户体验。
发明内容
本公开整体涉及一种方法和装置,该方法和装置提供固态驱动器控制器,该固态驱动器控制器分析来自主机计算设备的输入/输出命令以确定命令是否包括矢量或非矢量命令,并且被配置为基于矢量命令中包含的物理地址生成多个非矢量命令。
在一个实施方案中,本公开描述了一种设备,该设备包括存储器以及通信地耦接到存储器的控制器,其中控制器被配置为识别从主机计算设备获取的矢量命令中的物理地址集合,其中物理地址集合中的每个物理地址对应于存储器中的位置。在一些实施方案中,控制器还被配置为生成非矢量命令集合,其中非矢量命令集合中的每个非矢量命令对应于物理地址集合中的每个物理地址中的一个物理地址。在一些实施方案中,控制器还被配置为执行非矢量命令集合。在一些实施方案中,控制器被配置为响应于非矢量命令集合的执行而向主机计算设备生成指示矢量命令完成的消息。
在另一个实施方案中,本公开描述了设备,该设备包括存储器以及通信地耦接到存储器的控制器,其中控制器被配置为接收存储器已执行非矢量命令的指示,其中非矢量命令是与从主机计算设备接收的矢量命令相对应的多个非矢量命令中的一个非矢量命令。在一些实施方案中,控制器还被配置为确定存储器是否已执行与矢量命令相对应的所有多个非矢量命令。在一些实施方案中,控制器还被配置为如果存储器已执行多个非矢量命令中的每个非矢量命令,则生成指示矢量命令的执行的完成消息。在一些实施方案中,控制器还被配置为将完成消息传输到主机计算设备。
在另一个实施方案中,本公开描述了一种装置。在一个示例中,该装置包括用于从主机设备接收矢量命令的装置,其中矢量命令包括物理地址集合。在另一个示例中,该装置包括用于生成非矢量命令集合的装置,其中非矢量命令集合中的每个非矢量命令与物理地址集合中的每个物理地址中的一个物理地址相对应,并且其中非矢量命令集合中的每个非矢量命令被配置为由用于存储数字数据的装置执行。在另一个示例中,该装置包括用于响应于由用于存储数字数据的装置执行非矢量命令集合而向主机计算设备生成指示矢量命令完成的消息的装置。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是根据本公开的某些方面的通信地耦接到主机计算机系统的存储器设备的框图。
图2是示出根据本公开的某些方面的开放信道固态驱动器(SSD)的内部并行组织的逻辑表示的框图。
图3是示出根据本公开的某些方面的用于执行矢量命令的示例性过程的流程图。
图4是示出根据本公开的某些方面的用于生成矢量命令完成消息的示例性过程的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开涉及一种方法和装置,该方法和装置提供固态驱动器控制器,该固态驱动器控制器分析来自主机计算设备的输入/输出(I/O)命令以确定命令是否包括矢量或非矢量命令,并且基于矢量命令中包含的物理地址生成多个非矢量命令。
图1是系统100的一个实施方案的示意图,该系统包括通信地耦接到存储设备108的主机计算系统102。存储设备108包括控制器110和非易失性存储器(NVM),诸如由闪存存储器单元(例如,单级单元(SLC 136)、多级单元(MLC)、三级单元(TLC 138)等)的一个或多个管芯或平面构成的固态驱动器(SSD)134。主机102与存储设备108交接以在SSD 134处发出用于存储器操作的I/O命令,包括:读取、写入、复制和重置(例如,擦除)。
存储设备108可以是内部存储驱动器,诸如笔记本硬盘驱动器或台式机硬盘驱动器。存储设备108可以是可移除的大容量存储设备,诸如但不限于,手持式可移除存储器设备,诸如存储卡(例如,安全数字(SD)卡、微型安全数字(微型SD)卡、或多媒体卡(MMC))或通用串行总线(USB)设备。存储设备108可采取嵌入在主机108中的嵌入式大容量存储设备(诸如eSD/eMMC嵌入式闪存驱动器)的形式。存储设备108还可以是任何其他类型的内部存储设备、可移除存储设备、嵌入式存储设备、外部存储设备、或网络存储设备。
主机102可以包括各种各样的设备,诸如计算机服务器、附网存储(NAS)单元、台式计算机、笔记本(即,膝上型)计算机、平板计算机(即,“智能”平板电脑)、机顶盒、电话手机(即“智能”电话)、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备和汽车应用(即,地图绘制、自主驾驶)。在某些实施方案中,主机102包括具有处理单元或能够处理数据的任何形式的硬件的任何设备,包括通用处理单元、专用硬件(诸如专用集成电路(ASIC))、可配置硬件(诸如现场可编程门阵列(FPGA))、或由软件指令、微代码或固件配置的任何其他形式的处理单元。
在一些配置中,主机102包括连接到主机存储器106的中央处理单元(CPU)104,诸如DRAM或其他主存储器。应用程序可存储在主机存储器106中,以便由CPU 104执行。例如,主机存储器106可包括存储能够由处理器104执行的计算机可读程序代码(例如,软件或固件)的计算机可读介质。主机102可被配置有硬件和/或固件,以执行下文描述并且在流程图中示出的各种功能。
存储设备108包括物理(PHY)接口部件114,用于进入从主机102到存储设备108的通信以及退出从存储设备108到主机102的通信。存储设备108和主机102之间的链路可包括任何适当的链路,诸如高速外围部件互连(PCIe)链路。PCIe链路支持存储设备108与主机102之间经由专用单向串行点对点连接或“通道”的全双工通信。PCIe链路可包括一至三十二个通道,这取决于存储设备108和主机102之间的可用PHY 114的数量。
存储设备108与主机102之间的通信可在通信协议诸如PCIe串行通信协议或其他合适的通信协议下操作。其他合适的通信协议包括以太网、串行附接SCSI(SAS)、串行AT附件(SATA)、与远程直接存储器访问(RDMA)相关的任何协议,诸如Infiniband、iWARP或基于融合以太网的RDMA(RoCE)以及其他合适的串行通信协议。存储设备108还可以通过开关或桥接件连接到主机102。
存储设备108的SSD 134可包括被配置用于在通电/断电周期之后长期存储信息的非易失性存储器空间。在一些示例中,SSD 134可由NAND闪存存储器、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、和其他固态存储器的一个或多个管芯或平面组成。
存储设备108包括控制器110,该控制器管理存储设备108的操作,诸如对SSD 134的写入以及从该SSD的读取。控制器110包括一个或多个处理器112,该一个或多个处理器可以是多核处理器。处理器112通过固件代码来处理存储设备108的部件。
控制器110可在NVM Express(NVMe)协议下进行操作,但其他协议也是适用的。NVMe协议是为SSD开发的用以对通过PCIe接口(例如,PHY 114)链接的主机和存储设备进行操作的通信接口/协议。NVMe协议提供用于由主机102访问存储在存储设备108中的数据的命令提交队列和命令完成队列。存储设备108可从存储在主机存储器106中的主机队列的命令提交队列获取、接收或读取主机102命令。
控制器110执行计算机可读程序代码(例如,软件和/或固件)可执行指令(在本文中称为“指令”)。指令可以由控制器110的各种部件执行,这些部件诸如处理器112、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器、嵌入式微控制器以及控制器110的其他部件。
指令存储在非暂态计算机可读存储介质中。在一些实施方案中,指令存储在存储设备108的非暂态计算机可读存储介质中,诸如存储在只读存储器中或SSD 134中。可以在没有从主机102添加的输入或指示的情况下执行存储在存储设备108中的指令。在其他实施方案中,从主机102传输指令。控制器110被配置有用以执行本文所述和附图所示的各种功能的硬件和指令。
存储设备102还可以包括其他部件,诸如闪存接口模块130、直接存储器访问(DMA)模块126、调度器128、命令执行器120和控制路径124。闪存接口模块130与SSD 134交互以用于与用于控制和访问开放信道SSD(例如,SSD 134)的各种I/O命令相关联的操作。DMA模块126被配置为控制主机102和存储设备108之间的实际数据传输。调度器128被配置为激活和调度图1中所示的各种部件。例如,调度器128控制数据传输,同时激活控制路径124以获取物理页面区域(PRP),发布完成请求和中断,并且激活DMA以在主机102和存储设备108之间进行实际数据传输。控制路径124被配置为在主机102和存储设备108之间传输控制信息,并向矢量完成器122提供完成请求。命令解析器118被配置为对从矢量命令转换器116接收的命令进行解析和排队,并且将命令传送到命令执行器120。命令执行器120被配置为仲裁并执行从命令解析器118接收的命令。
矢量命令转换器116和矢量完成器122可涉及设备控制器110上用于支持来自主机102的矢量型命令的硬件、固件和/或软件实现中的一者或多者。在一些配置中,矢量命令转换器116监控从主机102接收的I/O命令。矢量命令转换器116可确定I/O命令是矢量命令还是非矢量命令。例如,矢量命令转换器116可基于I/O命令是否包括包含分散收集逻辑块地址列表的额外字段来将I/O命令识别为矢量命令。如果I/O命令不是矢量命令(例如,不包含分散收集逻辑块地址的列表),则非矢量I/O命令被传送到命令解析器以供执行。否则,矢量命令转换器116经由控制路径124获取矢量命令的元数据,并且暂时停止从主机102获取新命令。
在一些配置中,矢量命令转换器116基于单个矢量命令生成多个非矢量I/O命令。在一些情况下,多个非矢量I/O命令的整个集合在逻辑上等同于单个矢量命令。在一些示例中,通过以下方式来生成多个非矢量I/O命令:将矢量命令中包含的指针转换为物理地址,并为每个物理地址生成非矢量I/O命令。矢量命令转换器116然后可将非矢量I/O命令在命令解析器118中排队以供执行。一旦非矢量I/O命令被排队,设备控制器110就可以恢复从主机102获取新的I/O命令。如本文所用,矢量命令可以是由主机102生成的命令的列表或集合。可将多个物理地址分配给每个矢量命令以指定SSD中的多个存储器位置。在一些配置中,矢量命令可包括指向存储在主机存储器106上的元数据的指针。在该配置中,元数据包含用于访问SSD134的物理地址列表。
在一些配置中,矢量完成器122收集与由矢量命令转换器116生成的多个非矢量I/O命令相关联的所有完成消息。最初,所收集的完成消息将不被提供给主机102。相反,一旦接收到与多个非矢量I/O命令相关联的所有完成消息,矢量完成器122就基于与多个非矢量I/O命令相关联的所有完成请求的内容生成矢量命令完成消息。也就是说,矢量命令完成消息是从主机102接收并转换为多个非矢量I/O命令的矢量命令已完成的指示。矢量完成器122然后向主机102提供矢量命令完成消息。
在一些配置中,设备控制器110负责处理从主机102接收的I/O命令(包括矢量命令),确保数据完整性和有效存储,以及管理SSD 134。为了执行这些任务,控制器110运行闪存转换层(FTL)固件。FTL任务可由一个或多个处理器112利用前述部件中的一者或多者来执行。FTL还可执行许多其他功能,包括:错误代码校正(即,使用冗余数据或奇偶校验数据来恢复具有错误的消息);垃圾收集(即,识别SSD 134存储器块中的过期数据/使该过期数据无效以删除得到空闲空间以供未来写入);调度(即,控制执行来自主机102的I/O命令的次序);预留空间(即,保留存储器以用于维持写入速度);以及损耗均衡(即,尽可能均匀地在SSD 134的块上扩展写入,以确保设备的所有块以大致类似的速率损耗)。
然而,在一些配置中,主机102可负责FTL任务中的一些或全部。例如,SSD 134可包括物理可寻址SSD,诸如开放信道SSD。在这样的配置中,开放信道SSD可将SSD 134的内部并行组织暴露给主机102,使得SSD 134可由主机102直接管理。
图2是示出开放信道SSD 202的内部并行组织的逻辑表示的框图。SSD 202的逻辑结构由一个或多个组204a-204n、并行单元206a-206n(例如,NAND管芯或平面)以及包含一个或多个逻辑块(未示出)的区块208a-208b划分。在并行单元206a-206n内,存在表示逻辑块的线性范围的区块集合。在一些示例中,组204a-204n可涉及用于将I/O命令传送到并行单元206a-206n的共享总线或物理信道,而并行单元206a-206n可涉及共享总线上的一个或多个NAND闪存存储器设备。在一些示例中,区块208a-208b是用于读取和写入的最小可寻址单元,并且逻辑块是最小可擦除单元。
在一些配置中,主机102负责FTL的各方面。因此,开放信道SSD 202可以不从主机102接收基于逻辑地址的指令。相反,主机102可直接管理其中存储数据的开放信道SSD202的物理地址。在一些配置中,主机102的责任包括数据放置和I/O调度。例如,主机102可使用物理寻址来控制数据映射,以及生成映射表和其他元数据。
因此,主机102可使用矢量型命令发出I/O命令,该矢量型命令包括被配置为传送分散收集逻辑块地址列表的额外字段。使用矢量命令,主机102能够使用单个I/O命令同时访问单独并行单元206a-206n。然而,并非所有存储设备都能够支持矢量命令。例如,来自主机102的非矢量I/O命令通常针对每个命令被引导到单个NAND平面,而矢量命令可以在单个I/O命令中并行地被引导到若干NAND平面。根据本公开的某些方面,可将最小的硬件、软件和/或固件变化应用于存储设备以将设备控制器110配置为支持由主机102发出的矢量命令。
图3是示出用于接收和执行矢量命令的示例性过程300的流程图。过程300可例如由存储设备(例如,诸如图1的存储设备108)执行。过程300可被实现为存储在存储器上的软件和/或固件部件,该软件和/或固件部件在一个或多个处理器(例如,图1的处理器112)上执行和运行。此外,可例如通过一个或多个PHY接口(例如,图1的PHY 114)来启用在示例性过程300中由存储设备108对信号的传输和接收。
在框310处,存储设备108接收主机I/O命令。例如,存储设备108的设备控制器110可经由PHY 114接口从主机102接收I/O命令。在一些配置中,设备控制器110包括包含多个(例如,64个、256个、512个等)1位时隙的命令寄存器。设备控制器110可基于命令寄存器是否具有任何可用时隙(例如,具有二进制“0”的时隙)来调节来自主机102的I/O命令的接收。
例如,设备控制器110可为从主机102接收的每个命令(例如,用二进制“1”)设定命令寄存器时隙中的一个命令寄存器时隙。因此,如果设定了位,则对应的时隙具有由设备控制器110接收的与该位相关联的I/O命令。如果位可用,则时隙为空,并且设备控制器110可用于新命令。
在一些配置中,处理器112可在设备控制器110获取新I/O命令之前确定命令寄存器是否包含任何可用时隙。例如,处理器112可利用存储在设备控制器110中的位图矢量来确定在继续从主机102获取I/O命令之前是否设定了命令寄存器时隙。
因此,在一些配置中,设备控制器110确定在从主机102获取I/O命令之前命令寄存器是否包含至少一个可用时隙。一旦设备控制器110确定时隙可用,设备控制器110就获取I/O命令并继续设定可用时隙。如果设备控制器110确定不存在可用时隙,则设备控制器110可禁用从主机102获取I/O命令,直到时隙变得可用。
在框320处,设备控制器110确定所获取的I/O命令是否为矢量命令。如果I/O命令不是矢量命令,则过程300移动至框330,并且设备控制器110排队到命令解析器118以用于执行命令。如果I/O命令是矢量命令,则过程300移动至框340,在该框中设备控制器110确定包含在矢量命令中的物理地址的数量,并且将命令时隙的数量设定为等于或小于物理地址的数量。例如,如果命令寄存器中的可用时隙少于包含在矢量命令中的物理地址,则矢量命令转换器116将继续从矢量命令生成数量仅等于时隙数量的非矢量I/O命令,而剩余的非矢量I/O命令将在一个或多个时隙变得可用时(例如,在对应于时隙中的一个时隙的命令完成之后)生成。
例如,如果SSD设备可保持来自主机102的多达64个I/O命令,则在设备控制器110的命令寄存器中实现64个命令时隙。如果所有64个命令时隙都被设定,则设备控制器110将停止获取主机命令,直到完成至少一个未完成的I/O命令,由此清除对应的时隙。
类似地,如果存储设备108处于空闲状态,并且在设备控制器110中不存在未完成的命令,则命令寄存器为0。如果设备控制器110从主机102获取16个非矢量I/O命令,则命令寄存器中的位0至15被设定为指示命令时隙0至15被占用。然而,如果设备控制器110获取包含32个物理地址的单个矢量命令,则必须生成32个非矢量I/O命令。此时,设备控制器110设定32个命令时隙(例如,命令寄存器中的时隙16至47)。在一些配置中,设备控制器110将停止获取新I/O命令,直到非矢量命令生成并排队以供执行。在其他配置中,设备控制器110可基于命令时隙可用性继续获取多达16个更多命令。
例如,如果设备控制器110从主机102获取15个新的非矢量命令和1个矢量命令,并且矢量命令包含21个物理地址,则设备控制器设定剩余的16个命令时隙(即,针对非矢量命令设定十五个时隙,并且针对矢量命令设定1个时隙),并且仅生成与矢量命令中的物理地址中的一个物理地址相对应的一个非矢量命令。然后,设备控制器停止从主机102获取I/O命令并等待直到在生成与矢量命令中的剩余20个物理地址相对应的附加非矢量命令之前时隙变得可用。
因此,设备控制器110可停止从主机102获取附加I/O命令,直到已针对包含在矢量命令中的每个物理地址设定了命令寄存器中的时隙,并且命令寄存器包含可用时隙。在其他配置中,如果命令寄存器不包含可用时隙,则设备控制器110可继续从主机102获取新命令,但是将考虑到要生成的I/O命令的数量。例如,设备控制器110可继续获取新命令,识别每个命令中的物理地址的数量,并且在时隙变得可用时将矢量命令转换器116排队以基于矢量命令生成多个I/O命令。
在框350处,设备控制器110从主机102获取矢量命令的元数据。在一些配置中,元数据包含生成多个I/O命令所需的信息。例如,元数据可包括对应于包括在矢量命令中的指针的物理地址的列表。在另一个示例中,元数据可包括根据NVMe标准由物理区域页面(PRP)或分散收集列表(SGL)表示的指针。存储设备获取指针并且可以操纵它们以便为每个非矢量命令构建指针。
在框360处,矢量命令转换器116基于从主机102获取的矢量命令来生成多个非矢量I/O命令。在一些配置中,矢量命令转换器116通过将矢量命令的物理地址中的一个物理地址附加到每个非矢量命令来生成非矢量I/O命令中的每个非矢量I/O命令。因此,多个非矢量I/O命令等同于原始矢量命令。
在一些配置中,按根据由主机102提供的元数据的次序生成多个非矢量I/O命令。例如,设备控制器110可从主机102获取元数据。在一些示例中,元数据包含物理地址列表。因此,非矢量I/O命令可以按列表上的地址的次序顺序地生成。在其他配置中,根据存储设备的结构和/或资源可用性来生成非矢量I/O命令。例如,矢量命令转换器116可以按优先级次序生成非矢量I/O命令,其中与可用并行单元相关联的物理地址获得比与繁忙并行单元相关联的物理地址更高的优先级。在该配置中,提高了存储设备108的服务质量和效率。
在框370处,矢量命令转换器116将多个非矢量命令发送到命令解析器118以排队以用于执行。
图4是示出用于生成和发送命令完成的示例性过程400的流程图。过程400可例如由存储设备(例如,诸如图1的存储设备108)执行。过程400可被实现为存储在存储器上的软件和/或固件部件,该软件和/或固件部件在一个或多个处理器(例如,图1的处理器112)上执行和运行。此外,可例如通过一个或多个PHY接口(例如,图1的PHY 114)来启用在示例性过程400中由存储设备108对信号的传输和接收。
在框410处,矢量完成器122接收完成请求。在一些配置中,完成请求由闪存接口模块130生成并经由控制路径124传送到矢量完成器122。
在步骤420处,矢量完成器122识别完成请求是对应于独立的非矢量I/O命令还是对应于源自矢量命令的多个非矢量命令中的一个非矢量命令。如果完成请求对应于独立的非矢量I/O命令,则过程400移动至框430,在该框中矢量完成器122生成完成消息并且将完成消息提供给主机102。
在步骤420处,如果矢量完成器122确定完成请求对应于源自矢量命令的多个非矢量命令中的一个非矢量命令,则过程400移动至步骤440,在该步骤中,矢量完成器122确定所接收的完成请求是否是对矢量命令的最后请求。例如,矢量完成器122可被配置为收集与特定矢量命令相关联的所有完成请求。如果所接收的完成请求不是最后请求(即,矢量完成器122尚未收集与矢量命令的每个物理地址相关联的所有完成请求),则过程400移动至框450,在该框中矢量完成器122保持所接收的完成请求并等待直到其接收到对矢量命令的最后完成请求。
在步骤440处,如果矢量完成器122确定所接收的完成请求是对矢量命令的最后请求,则过程400移动至框460,在该框中矢量完成器122基于与矢量命令相关联的所有所接收的完成请求生成矢量命令完成消息。
在框470处,矢量完成器122清除与矢量命令相关联的所有所接收的完成请求。
概括地说,本公开整体涉及用于从主机102接收矢量型I/O命令并对开放信道SSD(例如,SSD 134)执行矢量命令而对存储设备108的改变最小的系统、方法和装置。具体地讲,本公开的某些方面涉及用于支持矢量命令以使得对主机102和存储设备108的若干部件透明地处理矢量命令的方法和装置。例如,矢量命令转换器116可被配置为从单个矢量命令生成多个非矢量I/O命令,并将多个非矢量I/O命令传递到存储设备108的其他部件上以供执行。此外,矢量完成器122可基于多个非矢量I/O命令的完成来生成矢量命令完成消息,并将该完成消息传递给主机102。此处,可以不向主机102提供如何处理矢量命令的指示。
在一些示例中,由矢量命令转换器116从单个矢量命令生成多个非矢量I/O命令为设备控制器110提供了智能地调度多个非矢量I/O命令以提高存储设备108的效率的能力。在一个示例中,矢量命令转换器116可以按优先级次序生成非矢量I/O命令,其中与可用并行单元相关联的物理地址获得比与繁忙并行单元相关联的物理地址更高的优先级。在该配置中,提高了存储设备108的服务质量和效率。
在一个非限制性实施方案中,公开了一种设备,其中该设备包括存储器以及通信地耦接到存储器的控制器。在一些配置中,控制器被配置为识别从主机计算设备获取的矢量命令中的物理地址集合,其中物理地址集合中的每个物理地址对应于存储器中的位置。在一些配置中,控制器被配置为生成非矢量命令集合,其中非矢量命令集合中的每个非矢量命令对应于物理地址集合中的每个物理地址中的一个物理地址。在一些配置中,控制器被配置为执行非矢量命令集合。在一些配置中,控制器被配置为响应于非矢量命令集合的执行而向主机计算设备生成指示矢量命令完成的消息。
在一个非限制性实施方案中,控制器被进一步配置为从主机计算设备获取命令,并且确定所获取命令是矢量命令,其中确定基于所获取的命令是否包括被配置为传送分散收集逻辑块地址列表的字段。
在一个非限制性实施方案中,控制器被进一步配置为从主机计算设备获取元数据,其中元数据包括物理地址列表。
在一个非限制性实施方案中,矢量命令包括被配置为识别元数据中的物理地址列表中的物理地址集合的指针。
在一个非限制性实施方案中,物理地址集合包括两个或更多个物理地址,
在一个非限制性实施方案中,控制器包括包含多个1位时隙的命令寄存器,其中控制器被进一步配置为确定命令寄存器是否包含可用时隙,并且如果命令寄存器包含可用时隙,则从主机计算设备获取命令。
在一个非限制性实施方案中,控制器被进一步配置为针对命令寄存器中的每个可用时隙执行非矢量命令集合中的一个非矢量命令。
在一个非限制性实施方案中,存储器包括开放信道固态驱动器(SSD)存储器设备。
在一个非限制性实施方案中,公开了一种设备,其中该设备包括存储器以及通信地耦接到存储器的控制器。在一些配置中,控制器被配置为接收存储器已执行非矢量命令的指示,其中非矢量命令是与从主机计算设备接收的矢量命令相对应的多个非矢量命令中的一个非矢量命令。在一些配置中,控制器被配置为确定存储器是否已执行与矢量命令相对应的所有多个非矢量命令。在一些配置中,控制器被配置为如果存储器已执行多个非矢量命令中的每个非矢量命令,则生成指示矢量命令的执行的完成消息。另外在一些配置中,控制器被配置为将完成消息传输到主机计算设备。
在一个非限制性实施方案中,控制器被进一步配置为如果存储器尚未执行与矢量命令相对应的所有多个非矢量命令,则存储存储器已执行非矢量命令的指示。
在一个非限制性实施方案中,控制器被进一步配置为接收存储器已执行非矢量命令的多个指示,其中多个指示中的每个指示对应于多个非矢量命令中的一个非矢量命令。在一些配置中,控制器被配置为存储多个指示。在一些配置中,控制器被配置为在完成消息传输到主机计算设备之后清除所存储的多个指示。
在一个非限制性实施方案中,多个非矢量命令中的每个非矢量命令包括矢量命令中所包含的多个物理地址中的一个物理地址。
在一个非限制性实施方案中,物理地址中的每个物理地址对应于存储器中的位置。
在一个非限制性实施方案中,多个非矢量命令中的每个非矢量命令被配置为由存储器按相继次序执行。
在一个非限制性实施方案中,多个非矢量命令中的每个非矢量命令与矢量命令共享写入、读取、复制或重置命令中的至少一者。
在一个非限制性实施方案中,存储器包括开放信道非易失性存储器。
在一个非限制性实施方案中,公开了一种装置。在一些配置中,该装置包括用于从主机设备接收矢量命令的装置,其中矢量命令包括物理地址集合。在一些配置中,该装置包括用于生成非矢量命令集合的装置,其中非矢量命令集合中的每个非矢量命令与物理地址集合中的每个物理地址中的一个物理地址相对应,并且其中非矢量命令集合中的每个非矢量命令被配置为由用于存储数字数据的装置执行。在一些配置中,该装置包括用于响应于由用于存储数字数据的装置执行非矢量命令集合而向主机计算设备生成指示矢量命令完成的消息的装置。
在一个非限制性实施方案中,该装置包括用于从主机计算设备获取元数据的装置,其中元数据包括物理地址列表,并且其中矢量命令包括被配置为识别元数据中的物理地址列表中的物理地址集合的指针。
在一个非限制性实施方案中,该装置包括用于确定命令寄存器是否包含可用时隙的装置,其中命令寄存器包括多个1位时隙。在一些配置中,该装置包括用于在命令寄存器包含可用时隙的情况下从主机计算设备获取命令的装置。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。

Claims (20)

1.一种设备,所述设备包括:
存储器;和
控制器,所述控制器通信地耦接到所述存储器,其中所述控制器被配置为:
识别从主机计算设备获取的矢量命令中的物理地址集合,其中所述物理地址集合中的每个物理地址对应于所述存储器中的位置;
生成非矢量命令集合,其中所述非矢量命令集合中的每个非矢量命令对应于所述物理地址集合中的每个物理地址中的一个物理地址;
执行所述非矢量命令集合;并且
响应于所述非矢量命令集合的执行而向所述主机计算设备生成指示所述矢量命令完成的消息。
2.根据权利要求1所述的设备,其中所述控制器被进一步配置为:
从所述主机计算设备获取命令;并且
确定所获取命令是矢量命令,其中所述确定基于所获取的命令是否包括被配置为传送分散收集逻辑块地址列表的字段。
3.根据权利要求1所述的设备,其中所述控制器被进一步配置为从所述主机计算设备获取元数据,其中所述元数据包括物理地址列表。
4.根据权利要求3所述的设备,其中所述矢量命令包括被配置为识别所述元数据中的所述物理地址列表中的所述物理地址集合的指针。
5.根据权利要求1所述的设备,其中所述物理地址集合包括两个或更多个物理地址。
6.根据权利要求1所述的设备,还包括包含多个1位时隙的命令寄存器,其中所述控制器被进一步配置为:
确定所述命令寄存器是否包含可用时隙;并且
并且如果所述命令寄存器包含所述可用时隙,则从所述主机计算设备获取命令。
7.根据权利要求6所述的设备,其中所述控制器被进一步配置为针对所述命令寄存器中的每个可用时隙执行所述非矢量命令集合中的一个非矢量命令。
8.根据权利要求1所述的设备,其中所述存储器包括开放信道固态驱动器(SSD)存储器设备。
9.根据权利要求1所述的设备,其中所述非矢量命令集合中的每个非矢量命令与所述矢量命令共享写入、读取、复制或重置命令中的至少一者。
10.一种设备,所述设备包括:
存储器;和
控制器,所述控制器通信地耦接到所述存储器,其中所述控制器被配置为:
接收所述存储器已执行非矢量命令的指示,其中所述非矢量命令是与从主机计算设备接收的矢量命令相对应的多个非矢量命令中的一个非矢量命令;
确定所述存储器是否已执行与所述矢量命令相对应的所有所述多个非矢量命令;
如果所述存储器已执行所述多个非矢量命令中的每个非矢量命令,则生成指示所述矢量命令的执行的完成消息;并且
将所述完成消息传输到所述主机计算设备。
11.根据权利要求10所述的设备,其中所述控制器被进一步配置为如果所述存储器尚未执行与所述矢量命令相对应的所有所述多个非矢量命令,则存储所述存储器已执行所述非矢量命令的所述指示。
12.根据权利要求10所述的设备,其中所述控制器被进一步配置为:
接收所述存储器已执行非矢量命令的多个指示,其中所述多个指示中的每个指示对应于所述多个非矢量命令中的一个非矢量命令;
存储所述多个指示;并且
在所述完成消息传输到所述主机计算设备之后清除所存储的多个指示。
13.根据权利要求10所述的设备,其中所述多个非矢量命令中的每个非矢量命令包括所述矢量命令中所包含的多个物理地址中的一个物理地址。
14.根据权利要求10所述的设备,其中所述控制器被进一步配置为保持完成请求,直到矢量命令中的所有请求已完成。
15.根据权利要求10所述的设备,其中所述多个非矢量命令中的每个非矢量命令被配置为由所述存储器按相继次序执行。
16.根据权利要求10所述的设备,其中所述多个非矢量命令中的每个非矢量命令与所述矢量命令共享写入、读取、复制或重置命令中的至少一者。
17.根据权利要求10所述的设备,其中所述存储器包括开放信道非易失性存储器。
18.一种装置,包括:
用于从主机设备接收矢量命令的装置,其中所述矢量命令包括物理地址集合;
用于生成非矢量命令集合的装置,其中所述非矢量命令集合中的每个非矢量命令与所述物理地址集合中的每个物理地址中的一个物理地址相对应,并且其中所述非矢量命令集合中的每个非矢量命令被配置为由用于存储数字数据的装置执行;以及
用于响应于由用于存储数字数据的所述装置执行所述非矢量命令集合而向所述主机计算设备生成指示完成所述矢量命令的消息的装置。
19.根据权利要求18所述的装置,还包括:
用于从所述主机计算设备获取元数据的装置,其中所述元数据包括物理地址列表,并且其中所述矢量命令包括被配置为识别所述元数据中的所述物理地址列表中的所述物理地址集合的指针。
20.根据权利要求18所述的装置,还包括:
用于确定命令寄存器是否包含可用时隙的装置,其中所述命令寄存器包括多个1位时隙;以及
用于在所述命令寄存器包含所述可用时隙的情况下从所述主机计算设备获取命令的装置。
CN202080007005.0A 2019-07-01 2020-03-17 开放信道矢量命令执行 Pending CN113196225A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/459,183 2019-07-01
US16/459,183 US10901733B1 (en) 2019-07-01 2019-07-01 Open channel vector command execution
PCT/US2020/023177 WO2021002896A1 (en) 2019-07-01 2020-03-17 Open channel vector command execution

Publications (1)

Publication Number Publication Date
CN113196225A true CN113196225A (zh) 2021-07-30

Family

ID=74065216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080007005.0A Pending CN113196225A (zh) 2019-07-01 2020-03-17 开放信道矢量命令执行

Country Status (5)

Country Link
US (1) US10901733B1 (zh)
KR (1) KR102645983B1 (zh)
CN (1) CN113196225A (zh)
DE (1) DE112020000124T5 (zh)
WO (1) WO2021002896A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893278B2 (en) * 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request
US12001270B2 (en) * 2021-12-07 2024-06-04 Microchip Technology Incorporated Vector fetch bus error handling
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0285960A (ja) * 1988-09-22 1990-03-27 Nec Corp 情報処理システム
CN1952911A (zh) * 2005-10-21 2007-04-25 英特尔公司 实现矢量存储器操作
US20090198977A1 (en) * 2008-01-31 2009-08-06 Gschwind Michael K Sharing Data in Internal and Memory Representations with Dynamic Data-Driven Conversion
CN105718386A (zh) * 2014-12-22 2016-06-29 德克萨斯仪器股份有限公司 程序存储器控制器中页面窗口的本地页面转换和许可存储

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070195367A1 (en) 2006-02-22 2007-08-23 Seiko Epson Corporation Computer readable medium recording a printer control program, printer control method, and printer system
US8407407B1 (en) 2009-10-06 2013-03-26 Marvell International Ltd. Solid state drive access control system with equalized access timing
US9075708B1 (en) * 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
EP2972781A4 (en) * 2013-03-15 2016-10-19 Intel Corp METHOD AND SYSTEMS FOR VECTORIZING SCALAR COMPUTER PROGRAM GRINDINGS WITH GRINDING DEPENDENCIES
US9720860B2 (en) 2014-06-06 2017-08-01 Toshiba Corporation System and method for efficient processing of queued read commands in a memory system
US9645739B2 (en) 2014-09-26 2017-05-09 Intel Corporation Host-managed non-volatile memory
US9904609B2 (en) 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
KR102564165B1 (ko) 2016-04-25 2023-08-04 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
CN107870727B (zh) 2016-09-23 2021-01-01 伊姆西Ip控股有限责任公司 用于存储数据的方法和设备
KR102618699B1 (ko) * 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102387922B1 (ko) 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10073640B1 (en) 2017-03-10 2018-09-11 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
KR102293069B1 (ko) 2017-09-08 2021-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
KR102340287B1 (ko) * 2017-09-20 2021-12-20 삼성전자주식회사 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
CN109542335B (zh) 2017-09-22 2022-04-01 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
KR102446733B1 (ko) 2017-11-30 2022-09-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
US10761775B2 (en) 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
JP7131053B2 (ja) * 2018-04-24 2022-09-06 富士通株式会社 記憶装置,情報処理プログラムおよび情報処理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0285960A (ja) * 1988-09-22 1990-03-27 Nec Corp 情報処理システム
CN1952911A (zh) * 2005-10-21 2007-04-25 英特尔公司 实现矢量存储器操作
US20090198977A1 (en) * 2008-01-31 2009-08-06 Gschwind Michael K Sharing Data in Internal and Memory Representations with Dynamic Data-Driven Conversion
CN105718386A (zh) * 2014-12-22 2016-06-29 德克萨斯仪器股份有限公司 程序存储器控制器中页面窗口的本地页面转换和许可存储

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Open-Channel Solid State Drives Specification Revision 2.0 January 29, 2018 Please send", pages 1 - 29, Retrieved from the Internet <URL:http://lightnvm.io/docs/OCSSD-2_0-20180129.pdf> *
"一张图了解Open-Channel SSD 2.0", pages 1 - 10, Retrieved from the Internet <URL:http://www.ssdfans.com/?p=69566> *

Also Published As

Publication number Publication date
DE112020000124T5 (de) 2021-07-29
WO2021002896A1 (en) 2021-01-07
KR20210084632A (ko) 2021-07-07
KR102645983B1 (ko) 2024-03-08
US10901733B1 (en) 2021-01-26
US20210004229A1 (en) 2021-01-07

Similar Documents

Publication Publication Date Title
US11960725B2 (en) NVMe controller memory manager providing CMB capability
US11023167B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US9229655B2 (en) Controller and method for performing background operations
US9009391B2 (en) Solid state drive architecture
US9489141B2 (en) Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
JP5918359B2 (ja) メモリシステムコントローラを含む装置および関連する方法
CN109947362B (zh) 管理闪存存储器读取操作
CN108153482B (zh) Io命令处理方法与介质接口控制器
KR102645983B1 (ko) 오픈 채널 벡터 커맨드 실행
CN107533440B (zh) 标识磁盘驱动器和处理数据访问请求
US11199992B2 (en) Automatic host buffer pointer pattern detection
CN112597078A (zh) 数据处理系统、存储器系统和用于操作存储器系统的方法
CN108153582B (zh) Io命令处理方法与介质接口控制器
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
US20150234605A1 (en) Memory system and method of controlling memory system
CN213338708U (zh) 一种控制部件及存储设备
CN113196253A (zh) 具有主机周转时间的预测器引擎的存储设备
KR20230036682A (ko) 인터리빙 동작을 지원하는 메모리 장치, 메모리 시스템 및 그의 동작 방법

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
TA01 Transfer of patent application right

Effective date of registration: 20240829

Address after: California, USA

Applicant after: SanDisk Technology Co.

Country or region after: U.S.A.

Address before: California, USA

Applicant before: Western Digital Technologies, Inc.

Country or region before: U.S.A.