CN119336256A - 具有发起方模式的固态驱动 - Google Patents
具有发起方模式的固态驱动 Download PDFInfo
- Publication number
- CN119336256A CN119336256A CN202411362694.3A CN202411362694A CN119336256A CN 119336256 A CN119336256 A CN 119336256A CN 202411362694 A CN202411362694 A CN 202411362694A CN 119336256 A CN119336256 A CN 119336256A
- Authority
- CN
- China
- Prior art keywords
- solid state
- state drive
- command
- indication
- ssd
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Vehicle Body Suspensions (AREA)
- Information Transfer Systems (AREA)
Abstract
本公开的实施例涉及具有发起方模式的固态驱动。一种固态驱动,被配置为存储持久性数字编码数据,可以以发起方模式操作。当以发起方模式操作时,固态驱动可以发起命令或请求的生成和发布,以使另一固态驱动执行数据存储相关过程。由固态驱动生成的命令或请求可以被直接传送给另一固态驱动,而无需通信传递通过诸如主机处理器之类的中间设备。
Description
分案申请说明
本申请是申请日为2019年12月20日、申请号为201911327339.1、名称为“具有发起方模式的固态驱动”的中国专利申请的分案申请。
技术领域
本公开总体上涉及用于计算机和电子网络系统的数据存储的领域,并且更具体地涉及用于数据存储设备的操作模式。
背景技术
固态驱动(SSD)是使用诸如NAND(非与)或NOR(非或)非易失性存储器之类的非易失性存储器来存储持久性数字编码数据的数据存储设备。SSD可以被配置为模拟硬盘驱动,即,在快速旋转的盘片的磁性表面上存储持久性数字编码数据的设备,并且在许多应用中替换硬盘驱动(HDD)。
主机通常耦合到SSD,以从SSD读取数据、向SSD写入数据、以及从SSD擦除数据。主机可以通过诸如接口交换机之类的中间设备耦合到SSD。为了有利于数据的读取、写入和擦除,SSD可以包括:SSD控制器,其具有用于与主机通信的主机接口;以及非易失性存储器接口,其用于管理SSD处包括的非易失性存储器。主机接口包括用于与主机通信的寻址、数据总线和控件,并且符合诸如串行高级技术附接(SATA)、串行附接小型计算机系统接口(SAS)、高速非易失性存储器(NVMe)或通用串行总线(USB)之类的数据通信协议,而非易失性存储器接口包括用于管理非易失性存储器的寻址、数据总线和控件,并且符合诸如用于NAND非易失性存储器的开放NAND闪存接口(ONFI)之类的数据通信协议。
在操作中,主机通常发布对数据存储服务的请求,诸如写入、读取和擦除请求,以分别对存储在SSD处的数据执行写入、读取和擦除操作。为了执行写入操作,主机在各种情形中通过接口交换机向SSD发送写入请求。写入请求指示要写入的数据和在何处写入数据的数据地址。在SSD的主机接口处接收写入请求。然后,SSD控制器执行硬件和/或固件,以经由非易失性存储器接口、基于数据地址将数据写入非易失性存储器中。为了执行读取操作,主机在一些情形中通过接口交换机向SSD发送读取请求。读取请求指示要读取的数据地址。在SSD的主机接口处接收读取请求。SSD控制器执行硬件和/或固件,以基于数据地址读取非易失性存储器中的数据。SSD控制器经由非易失性存储器接口接收从非易失性存储器读取的数据,并且经由主机接口将所读取的数据提供给主机。为了执行擦除操作,主机在一些情形中通过接口交换机向SSD发送擦除请求。擦除请求指示要擦除的数据地址。在SSD的主机接口处接收擦除请求。SSD控制器执行硬件和/或固件,以基于数据地址在非易失性存储器中执行擦除操作。
发明内容
本公开涉及固态驱动(SSD),该固态驱动被配置为生成和发起可以在一个或多个对等SSD设备之间被直接传送的一个或多个请求和命令,而无需使这些请求和命令通过主机设备在SSD设备之间传输。在本公开中描述的实施例中,SSD可以以发起方模式操作,并且使用直接耦合来生成和发布对一个或多个其他SSD的请求和/或命令,该直接耦合不涉及SSD也可以耦合到其上的主机设备的使用。SSD设备之间的请求和命令的这种发起和直接耦合可以消除作为处置在分离的SSD设备之间传送的请求和/或命令的一部分而使这些请求和/或命令由主机设备复制的需要,并且还可以消除针对通信标准而将请求和/或命令从一种协议或格式转换为不同的协议或格式的需要,如果请求和/或命令不是使用本公开中描述的直接耦合而是通过主机设备在SSD设备之间传送,则通常需要这样做。
根据所描述的系统和技术的一方面,一种方法包括:在第一固态驱动处和在第二固态驱动处建立队列集合,该队列集合被配置为通过将第一固态驱动与第二固态驱动耦合的互连来控制第一固态驱动与第二固态驱动之间的直接通信;由第一固态驱动发起至少一个命令或请求的生成;以及由第一固态驱动通过互连来驱动至少一个命令或请求,使得至少一个命令或请求在第一固态驱动与第二固态驱动之间被直接传送。
根据所描述的系统和技术的另一方面,一种存储指令的非瞬态计算机可读介质,该指令在由一个或多个处理器执行时,使一个或多个处理器至少:在第一固态驱动处和在第二固态驱动处建立队列集合,该队列集合被配置为通过将第一固态驱动与第二固态驱动耦合的互连来控制第一固态驱动与第二固态驱动之间的直接通信;在第一固态驱动处发起至少一个命令或请求的生成;并且通过互连来驱动至少一个命令或请求,使得至少一个命令或请求在第一固态驱动与第二固态驱动之间被直接传送。
根据所描述的系统和技术的又一方面,一种装置包括:包括本地处理器和存储器阵列的固态驱动,其中存储器阵列被配置为将持久性数字编码数据存储在非易失性存储器上,并且其中本地处理器被配置为以发起方模式操作,其中本地处理器发起对数据存储过程的命令或请求的生成,该命令或请求通过互连而被直接传送给与固态驱动通信地耦合的一个或多个附加固态驱动。
附图说明
图1图示了包括被配置为以发起方模式操作的固态存储驱动的存储系统的示例配置。
图2是根据本公开中所描述的各种示例及其任何等效物的方法的流程图。
图3是可以根据如整个本公开中所描述的各种示例及其任何等效物被配置的固态驱动的简化示例框图。
附图是出于图示示例实施例的目的,但是应理解,实施例不限于附图中所示的布置和工具。
具体实施方式
本公开提供了涉及被提供给一个或多个主机的数据存储服务的示例和细节,该一个或多个主机具有耦合在一个或多个主机与被配置为提供数据存储的固态驱动(SSD)之间的交换设备。SSD被配置为接收、处理和响应由一个或多个主机做出、并且通过交换设备传送的对数据存储服务的请求。另外,SSD本身被配置为作为请求发起方操作,其中对数据存储服务的请求可以源自一个或多个SSD之一的第一SSD,其中第一SSD可以被称为发起方SSD。由发起方SSD发起的对(多个)数据存储服务的请求可以被传送给多个SSD中的第二SSD(被称为目标SSD)、被其接收、处理以及响应,发起方SSD与目标SSD之间的通信使用将发起方SSD和目标SSD耦合的直接通信链路,而无需通过中间设备主机处理器进行通信。尽管不需要诸如交换设备或主机之类的中间设备,但是一个或多个中间设备可以作为耦合一个或多个SSD的连接性方案的一部分、以直通模式操作。本文描述的原理可以应用于控制其他类型的存储设备的性能,诸如硬盘驱动(HDD)或混合SSD/HDD驱动。
图1图示了数据存储系统100的示例配置,该数据存储系统100向主机提供各种数据存储服务,同时还提供SSD,该SSD被配置为作为命令、或对数据存储过程的执行或对数据存储服务的请求的发起方操作,命令或请求在SSD之间被直接传送,而不需要由耦合到系统的主机源发命令或请求,并且在一些示例中,不需要SSD通过诸如主机处理器之类的中间设备在SSD之间进行通信。数据存储系统100可以包括一个或多个主机102(在下文中也被称为“主机102”)、包括通过交换设备110通信地耦合到一个或多个主机的一个或多个固态驱动(SSD)130、140、150的数据存储装置136。一个或多个主机可以用作向网络上的用户或其他节点提供信息资源、服务和/或应用的服务器。在一些示例中,一个或多个主机可以包括虚拟机(VM)。VM可以在主机上使用高速外围组件互连(PCIe)单根输入/输出虚拟化(SR-IOV)来实现。在各种示例中,一个或多个主机102可以通过诸如有线网络链路(诸如局域网(LAN)或广域网(WAN))和/或无线通信链路(诸如互联网)之类的通信链路101耦合到网络106。网络106可以包括一个或多个其他设备,诸如通信地耦合到一个或多个主机102的一个或多个附加主机、接口交换机和/或数据存储系统,其中这些附加设备和系统可以请求并接收涉及SSD 130、140和/或150中的一个或多个的数据存储服务。
在各种示例中,SSD 130、140和150中的一个或多个可以包括基于集成电路(IC)的存储机制,其可以持久地存储数据以使一个或多个主机102能够提供所需的功能性。与硬盘驱动(HDD)相比,SSD 130、140和150可以能够提供更高的带宽和更低的延迟。
接口交换机(“交换机”)110可以被放置在一个或多个主机102与SSD 130、140和150之间,并且可以被配置为将一个或多个主机与这些SSD通信地耦合。在各种示例中,交换机110是NVMe交换机,其被配置为处理NVMe命令以控制一个或多个主机102与SSD 130、140和150之间的、基于PCIe的点对点交换机连接。在系统100的一些示例中,每个SSD都具有它自己的到一个或多个主机102的专用连接。在各种示例中,交换机110包括处理器电路114,其通信地耦合到主机接口112、SSD接口116和包含队列118的存储器。
处理器电路114的示例可以包括诸如微处理器之类的一个或多个计算机处理器,以及诸如管理处理器模块、命令处理器模块和数据处理器模块中的一个或多个之类的附加电路。在一些示例中,主机接口可以是端点,诸如但不限于PCIe端点集群,其有利于交换机110与一个或多个主机102之间的通信,而SSD接口在一些示例中可以是PCIe根复合体集群,其有利于交换机110与SSD 130、140和150之间的通信。处理器电路114的命令处理器可以被配置为处理来自一个或多个主机102的命令。命令可以是用于从多个SSD中的一个SSD中获取数据、并且提供给主机或将来自主机的数据存储在SSD中的命令,例如NVMe命令。处理器电路的命令处理器可以被配置为向命令添加标签。标签可以指示从特定主机接收命令。然后,命令被发送给可能被指定为命令的一部分的SSD之一。因此,交换机110可以提供需要进行的附加处理,诸如报头和地址改变,以提供在主机102和SSD 130、140和150之间传送的请求、命令和/或数据的正确路由和操纵。
响应于接收到命令或请求,命令或请求所指向的SSD可以将诸如PCIe存储器读取请求之类的PCIe存储器请求发送给交换机110。PCIe存储器请求可以包括标签,以使处理器电路114的数据处理器模块能够将PCIe存储器请求发送给指定的主机,以执行与该主机相关联的命令或请求。管理处理器模块可以被配置执行用于交换机110的管理功能。例如,如果NVMe或PCIe事务不符合命令处理器模块能够执行的操作(例如,由于错误,或者由于PCIe存储器请求的复杂性或大小),则该功能可以被卸载到管理处理器模块。作为另一个示例,管理处理器模块可以关于与SSD相关联的预留访问和/或名称空间来管理SSD 130、140和/或150的分区。
在各种示例中,一个或多个主机102可以例如根据NVMe来实现队列对,以有利于SSD访问。队列对可以由提交队列和完成队列组成。如针对系统100所示,主机可以包括提交队列105和完成队列107。主机还可以具有附加队列,诸如管理队列。主机可以生成命令,诸如NVMe命令,该命令包括用于获取存储在SSD中的数据或将数据存储到SSD的数据存储服务请求,其中该命令被置放在提交队列105中。将命令从主机转发给交换机110,如箭头104所图示性地表示的。
当命令最终由SSD 130、140和/或150执行时,可以将指示命令所指示的过程的执行已经完成的完成存储在完成队列107中。作为此过程的一部分,交换机110可以包括设备队列管理器模块作为处理器电路114的一部分。设备队列管理器模块可以提供队列对118,以有利于交换机110与SSD 130、140和150之间的命令的通信。设备队列管理器模块可以为通过互连137耦合到交换机的SSD 130、140、150中的每一个维护对应的提交队列和完成队列。如所示,队列对118可以包括:队列121,其包括与SSD 130(SSD-1)相关联的提交队列(SQ)和完成队列(CQ);队列122,其包括与SSD 140(SSD-2)相关联的提交队列(SQ)和完成队列(CQ);以及队列123,其包括与SSD 150(SSD-N)相关联的提交队列(SQ)和完成队列(CQ)。可以提供附加的队列对作为队列118的一部分,以与数据存储装置136中包括的任何附加SSD相关联。
在各种示例中,通过分别针对基于对数据存储服务的请求正指向的SSD 130、140、150的队列对121、122或123中的一个特定的队列对的SQ中分发指示,处理器电路114的命令处理器模块可以终止从主机102接收的、与对SSD的访问的请求相关联的命令,例如NVMe命令。然后,通过由交换机110通过SSD接口116发布的命令,可以将来自主机102的、对数据存储服务的这些请求分发给相应的SSD,如在交换机110与SSD 130、140和150之间延伸的箭头111所表示的。
一个或多个SSD可以如交换机110所指向地接收命令。在接收到命令后,一个或多个相应SSD可以更新位于该SSD中的提交队列以指示命令已被接收,然后用于该SSD的本地处理器可以开始执行由该命令指示要被执行的实际数据存储过程。
在完成所请求的数据存储过程后,SSD 130、140和150中的一个或多个可以发布指示所请求的服务已被完成的命令,并且将完成指示转发回交换机110,并且由虚线箭头113所图示性地表示。数据存储过程的完成还可以包括:执行该过程的一个或多个SSD更新位于该SSD或相应SSD中的每一个内的相应完成队列,以指示由该命令指示的过程已被执行和完成。
在交换机110处接收到完成指示后,该指示可以被存储在位于交换机处的队列对121、122、123中的CQ队列中的,并且与提供完成指示的SSD相关联的相应的一个CQ队列中。然后,交换机110的设备队列管理器模块可以处理被存储在CQ中的完成指示,包括准备命令,如虚线箭头108所图示性地表示的,该命令通过主机接口112从交换机110被发送给主机102的CQ 107。然后,基于对指示由命令所请求的过程完成的完成队列107的更新,主机可以通过清除被存储在队列105中的命令的提交指示来更新命令的状态。
如图1中所图示,与被用来将交换机110与SSD 130、140和150通信地耦合的通信格式和/或数据接口相比,被用来将一个或多个主机102与交换机110通信地耦合的互连103可能需要不同的通信格式和/或不同的数据接口。这样,当交换机110处理并格式化从主机102到SSD 130、140和150的数据存储服务请求、并将包括用于读取或写入数据的请求的响应从SSD转发回一个或多个主机102时,通常会遇到附加处理,并且因此在处理命令时遇到时间延迟。此外,为了处理这些命令和数据请求,交换机110通常可能还需要在交换机处冗余地存储诸如设备标识、地址和/或数据之类的数据,这需要由交换机本身提供的附加的存储器要求以及处理。在主机102可以不使用交换机110而直接地直接耦合到SSD 130、140和150的示例中,可能需要主机本身处置正被执行的数据事务的管理和存储,从而在主机处和在主机上直接加载了处理和数据存储要求。
如图1中所示,系统100的SSD可以被配置为例如使用互连137和在一些示例中的互连139来提供SSD自身之间的直接通信,而无需涉及一个或多个主机102。在各种实施例中,SSD之间的通信可以被路由到诸如交换机110之类的交换机,其中可以将通信作为对等业务重新路由到另一SSD。如图1中所示,SSD 130、140和150被配置为在SSD自身内包括提交队列(SQ)和对应的完成队列(CQ),该SQ和CQ允许SSD在彼此之间直接传送对数据存储服务或其他数据相关过程的命令和/或请求。
作为系统100的非限制性示例,SSD 130包括本地处理器132、存储器阵列135、提交队列(SQ)133和完成队列(CQ)134,SSD 140包括本地处理器142、存储器阵列145、提交队列(SQ)143和完成队列(CQ)144,并且SSD 150包括本地处理器152、存储器阵列155、提交队列(SQ)153和完成队列(CQ)154。存储器阵列135、145和155中的每一个可以包括持久性存储器设备的阵列,其被配置为允许将数字数据写入存储器阵列中、从存储器阵列中读取数据和擦除存储器阵列中的数据。用于每个SSD的相应SQ和CQ可以位于用于SSD的相应存储器阵列的一部分中,或者可以被配置为位于每个相应SSD内的分离的存储器。用于每个SSD的本地处理器132、142和152可以被配置为管理与本地处理器所位于的相应SSD相关联的数据操作,诸如与本地处理器所位于的SSD的存储器阵列相关联的读取、写入和擦除数据操作。
另外,本地处理器132、142和152还可以被配置为以发起方模式操作,其中本地处理器可以发起对数据存储服务或其他数据相关过程的命令和/或请求,该数据存储服务或其他数据相关过程要由另一SSD执行并且源发于本地处理器所位于的SSD处,并且不是由一个或多个主机102和/或交换机110发布或从其接收的。在各种备选示例中,源发命令或请求的SSD可以响应于由诸如主机102之类的主机指向该SSD的命令或请求而这样做,但是其最初仅被指向源发被指向另一SSD的命令或请求的SSD。
作为非限制性示例,从SSD 140(SSD-2)延伸到SSD 130(SSD-1)的箭头147表示通信,该通信可以包括执行数据存储服务或其他数据存储过程的命令或请求,其由SSD 140发起并且例如使用互连137被直接传送给SSD 130,而无需传递通过交换机110。作为发起通信的一部分,SSD 140的本地处理器142可以将命令和/或请求已由SSD 140最初生成的指示输入到SSD 140的SC 143中,并将其发布给SSD 130。在SSD 130处接收到命令和/或请求后,本地处理器132可以更新SSD 130的SQ 133以指示该请求已被接收,然后继续处理接收到的命令/请求。从目标SSD的角度来看,在此示例SSD 130中,该请求就好像例如可以从诸如主机102之类的主机设备接收的任何其他类型的请求一样。目标SSD不一定具有指示通信来自另一SSD的信息,并且因此对请求进行操作,就好像它是来自诸如主机102之类的主机设备一样。
在命令/请求的处理完成后,可以更新SSD 130的CQ 134以提供命令/请求已被完成的指示。基于更新的指示,本地处理器132可以清除来自SQ 133的命令/请求的接收的指示,并且提供指向SSD 140的通信,其由在SSD 130和SSD 140之间延伸的虚线箭头148所图示性地表示。该通信可以包括对最初由SSD 140生成和发起的命令/请求的完成的指示。在接收到对最初由SSD 140发起的命令/请求的完成的指示后,本地处理器142可以用命令/请求已被完成的指示来更新CQ 144,并且更新SSD 140的SQ 143以移除或清除命令/请求未决的指示。同样,可以使用互连137进行由虚线箭头148图示性地表示的、从SSD 130到SSD 140的通信,并且该通信在无需传递通过交换机110或主机102的情况下被完成。
基于命令/请求完成的指示,或者在备选方案中,在命令/请求仍然未决的情况下,SSD 140的本地处理器142可以执行一个或多个其他过程,包括:生成和发起与包括在数据存储装置136中的其他SSD直接通信的一个或多个命令/请求,接收和处理从数据存储装置136中包括的其他SSD接收的命令/请求,和/或与交换机110通信和/或处理从主机102发送通过交换机110指向SSD 140的、对数据存储服务的命令/请求。SSD 140可以利用SQ 143和CQ 144来保持跟踪已经由SSD 140发起并且已经被SSD 140请求执行的未决数据存储操作,并且跟踪这些操作的完成。
关于在SSD处建立的队列,SQ和CQ通常仅被用于从属操作,其中SSD是接收请求或命令、并且响应接收到的请求或命令的目标设备。在这些情形中,SQ保留SSD需要执行的所有事务,并且CQ保留已完成并且需要被报告给请求方的所有事务。换句话说,SQ是对SSD的输入,其具有SSD已被要求执行的所有请求或命令,并且CQ是具有其响应的SSD的输出队列。当SSD正以发起方模式操作时,这些队列(虽然可能被命名为相同)的目的需要从主机角度考虑,其包括:SQ将是SSD的输出队列,其记录发起方SSD已请求其他SSD执行的所有工作,并且CQ将是具有来自其他SSD的响应的对该SSD的输入。
系统100的示例不限于被配置为以发起方模式作用以生成命令/请求并向其他SSD发布命令/请求的、SSD中的一个SSD或任何特定的一个SSD,并且在各种示例中,作为数据存储装置136的一部分而耦合在一起的一个、一些或所有SSD可以被配置为以发起方模式操作,并且生成对数据存储服务的命令/请求并将其直接发布给其他SSD,而无需通过诸如主机102之类的中间设备。例如,SSD 130可以以发起方模式操作,并且生成并发布对(多个)数据存储过程的一个或多个命令或请求以被传送给SSD 140和SSD 150中的一个或两个并由其执行。类似地,SSD 140和/或SSD 150可以以发起方模式操作,生成并发布对(多个)数据存储过程的一个或多个命令或请求以被传送给一个或多个其他SSD并由其执行。
SSD 130、140和150的彼此直接通信而无需使通信通过诸如主机102之类的中间设备的能力可以通过以下来节省处理时间:不必使被用来将命令/请求从设备传输到设备的通信格式化和/或数据格式冗余地保存在诸如交换机或主机之类的一个或多个中间设备处。SSD之间的直接通信还可以加快通信的整体通量,并且从而通过消除在这些中间设备(诸如从主机到交换机到SSD)处对消息进行格式化、然后通过交换机从SSD备份到(多个)主机的需要来加快命令/请求的整体处理速度。
系统100的示例不限于具有特定数目的SSD。在各种示例中,系统100可以包括少至两个SSD,并且可以包括一些正整数的“N”个SSD,如图1中由总体上由括号138指示的点所图示性地表示的。作为非限制性示例,数据存储装置可以包括在系统100的布置中耦合到互连137/139的多个个体SSD。系统100中包括的每个SSD可以通信地链接到交换机110,如在图1中由互连137和虚线箭头139所图示性地表示的,虚线箭头139表示到由总体上由括号138指示的点所表示的任何SSD的通信链路。
可以由SSD生成并直接传送给一个或多个其他SSD的数据存储服务或数据存储过程的类型不限于任何特定类型的命令或请求。在各种示例中,命令或请求可以涉及相同类型的读取、写入或擦除请求,其也可以从诸如主机102之类的主机生成并发送给一个或多个SSD。在各种示例中,诸如SSD 130、140或150之类的个体SSD可以具有最初由诸如主机102之类的主机发起的、指向该SSD的命令或请求,其中SSD然后可以执行由该命令或请求所指示的任务或过程,并且返回任务或过程已被完成的指示,而无需涉及数据存储装置136中包括的任何其他SSD。
例如,通过网络106从诸如主机102之类的远程主机或与主机耦合的系统100接收写入请求的、诸如SSD 130、140或150之类的SSD可以生成向对等SSD的后续请求,并将该请求转发给对等SSD,或者备选地复制要由SSD和对等SSD执行的写入请求,例如出于冗余目的。在这两种情形中,接收SSD仍将是与远程主机进行接口以完成的SSD,但是实际工作可以由不同的SSD完成。在系统100的示例中,可能存在某些实体,诸如与SSD一起被定位的本地处理器之一,或者一个或多个分离的处理器,它们将对接收SSD之间的工作进行负载平衡,以确保不会出现瓶颈。这样的解决方案例如可以实现全盒式虚拟化,而无需添加在现有系统中完成此效果所需的复杂计算资源。
在各种示例中,具有最初由诸如主机102之类的主机生成并指向个体SSD的命令或请求的该个体SSD然后可以以发起方模式操作,并且生成并发布附加命令和/或请求,该附加命令和/或请求指向数据存储装置136中包括的、但是没有被特别包括在由主机生成和发布的原始命令和/或请求中的一个或多个SSD。作为非限制性示例,诸如主机102之类的主机可以生成并发布命令以将与电影相关联的所有数据(例如,视频和音频数据)读取并转发回该主机。该命令可以被指向单个SSD,例如SSD 130。然而,与电影相关联的数据可以被存储在数据存储装置136中包括的多个SSD中。响应于接收到由主机102最初生成和发布的命令,SSD 130可以以发起方模式操作,并且向SSD 140和/或SSD 150生成并发布命令以读取被存储在这些相应SSD处的、与电影相关联的数据,并将其转发回到SSD 130。SSD 140和SSD 150可以被认为是关于由SSD 130发布的命令的目标SSD,并且响应于从SSD 130接收到命令,可以通过用被请求的数据应答SSD 130来执行所需的数据读取/转发操作。
SSD 130与SSD 140和/或SSD 150之间的通信可以通过互连137发生,其可以包括传递通过交换机110,但是不需要使任何通信传递通过主机102。一旦SSD 130已经接收到来自SSD 140和/或SSD 150的被请求数据,SSD 130就可以协调与电影相关联的被请求数据到交换机110和/或主机102的转发,以完成在由主机发布并指向SSD 130的命令中最初所请求的操作。使数据存储装置136中包括的SSD在个体SSD之间传递而无需也传递通过交换机110或主机102或由其控制的这种能力,可以允许在关于存储器和/或处理负载要求而卸载主机102和交换机110的同时更快地对命令进行整体处理。
在各种示例中,由以发起方模式操作的SSD所请求的操作可以不由诸如主机102之类的主机最初生成的命令或请求来触发。作为非限制性示例,命令或请求可以由数据存储装置136的第一SSD生成并发布,其为了冗余的目的,请求使数据存储装置136的第二SSD将第一SSD中的数据复制到第二SSD中。这样的命令可以由第一SSD发起,而不被来自交换机110或主机102的任何命令或请求提示或触发。因此,在该示例中,第一SSD可以被配置为发起命令或请求,以在某个预定时间间隔或者例如基于检测到触发事件(诸如检测到功率损耗或系统100关机)来执行数据备份过程。
可以触发SSD以发起方模式操作的其他类型的功能或事件可以包括:将任务从发起方SSD传输到目标SSD,虚拟化来自远程主机处理器的物理驱动,数据管理任务,以及自我修复系统功能。例如,数据存储装置136的SSD可以以发起方模式操作,以生成命令,该命令请求对存储在数据存储装置136中包括的其他SSD上的数据执行诸如计算存储功能之类的各种功能。这些计算存储功能可以包括使用人工智能(AI)来执行计算存储功能。
被用来提供通过互连137/139在数据存储装置136的SSD之间利用的通信的网络格式和通信协议的类型不限于任何特定的协议或(多个)网络标准。在一个非限制性示例中,数据存储装置136中包括的SSD之间的通信包括使用PCI Express作为传输层,以及使用MVE作为协议层。变体可以包括使用NVMe作为通信的传输层。变体可以包括使用以太网。当包括以太网作为SSD之间的通信链路的一部分时,可以在SSD处设置诸如远程直接存储器访问(RDMA)队列对或传输控制协议(TCP)队列之类的附加队列以建立随后利用以太网通信格式化的这些通信链路。
示例固态驱动发起方模式
在各种示例中,作为数据存储系统的一部分而通信地耦合在一起的一个或多个SSD可以以发起方模式操作,以提供第一SSD和第二SSD之间的直接通信,其中第一SSD充当发起方以生成与数据存储管理相关联的命令和/或请求并将其直接发布到第二SSD,而无需通信传递通过诸如交换设备或主机之类的中间设备,并且无需使命令/请求从主机发起。
图2是根据本公开中描述的各种示例及其任何等效物的方法200的示例流程图。方法200包括与以发起方模式操作的一个或多个SSD相关联的各种功能,以生成与数据存储管理相关联的直接传送的命令或请求并将其发布到另一SSD,而无需使通信传递通过诸如交换机或主机设备之类的中间设备。
在框202处,方法200包括:在第一固态驱动处和在第二固态驱动处建立队列集合,该队列集合被配置为通过将第一固态驱动与第二固态驱动耦合的互连来控制第一固态驱动和第二固态驱动之间的直接通信。在各种实施例中,在第一固态驱动处建立的第一队列集合包括第一提交队列和第一完成队列,并且在第二固态驱动处建立的第二队列集合包括第二提交队列和第二完成队列。在各种实施例中,在第一固态驱动处建立的第一队列集合包括用于驱动的协议操作的SQ和CQ,并且在一些实施例中,在第一队列集合之上的第二队列集合,诸如一个或多个RDMA队列对或TCP队列,被建立以用于例如以太网的构造的协议操作。
在框204处,方法200包括:由第一固态驱动发起至少一个命令或请求的生成。在各种实施例中,请求可以包括将数据写入诸如第二固态驱动之类的固态驱动的存储器阵列的请求。在各种实施例中,请求可以包括从诸如第二固态驱动之类的固态驱动的存储器阵列读取数据的请求。在各种实施例中,请求可以包括从诸如第二固态驱动之类的固态驱动中包括的一部分或全部存储器阵列中擦除数据的请求。在各种实施例中,命令可以包括用于执行与存储器阵列和/或诸如第二固态驱动之类的固态驱动有关的数据管理操作的命令。
在框206处,方法200包括:由第一固态驱动通过互连来驱动至少一个命令或请求,使得至少一个命令或请求在第一固态驱动与第二固态驱动之间被直接传送。在各种示例中,传送至少一个命令或请求包括通过PCIe接口驱动至少一个命令或请求。在各种示例中,传送至少一个命令或请求包括通过构造接口上的NVMe驱动至少一个命令或请求。在各种示例中,传送至少一个命令或请求包括通过以太网连接来传送。在使用以太网连接的示例中,方法200可以包括:建立专用于在用于互连的通信路径中使用的构造的操作的第二或附加队列RDMA QP或TCP队列集合。
在框208处,方法200的实施例包括:在第二固态驱动处接收由第一固态驱动传送的至少一个命令或请求。接收至少一个命令或请求可以包括更新第二固态驱动中的至少一个队列,诸如第二固态驱动中的提交队列,以指示对某些数据存储相关操作的命令或请求已在第二固态驱动处被接收。
在框210处,方法200的示例包括:响应于接收到至少一个命令或请求,由第二固态驱动对存储在第二固态驱动上的数据执行一个或多个数据存储相关操作。执行一个或多个数据存储相关操作可以包括:将数据写入第二固态驱动中包括的存储器阵列。执行一个或多个数据存储相关操作可以包括:从第二固态驱动中包括的存储器阵列读取数据。执行一个或多个数据存储相关操作可以包括:从第二固态驱动中包括的存储器阵列的某个部分或多个部分中擦除数据。执行一个或多个数据存储相关操作可以包括:对存储在第二固态驱动处的数据执行(多个)计算存储操作。执行一个或多个数据存储相关操作可以包括:重新布置存储在第二固态驱动处的数据,例如作为对存储在第二固态驱动处的数据执行的碎片整理(defragmentation)过程的一部分。
在完成由至少一个命令或请求所指示的、要由第二固态驱动执行的(多个)操作后,方法200的示例包括:更新第二固态驱动中的至少一个队列,诸如第二固态驱动中的完成队列,以指示操作已由第二固态驱动完成。
在框212处,方法200的示例包括:由第二固态驱动通过互连来驱动对第一固态驱动的应答,该应答指示对存储在第二固态驱动处的数据的一个或多个数据操作已被完成。在各种示例中,响应于由第一固态驱动发起并传送给第二固态驱动的命令或请求,还可以通过互连将从第二固态驱动读取的数据驱动到第一固态驱动。
在框214处,方法200的示例包括:在第一固态驱动处接收应答,该应答至少指示由命令或请求指示的数据存储操作已由第二固态驱动完成。在方法200的各种示例中,在第一固态驱动处接收应答包括:用从第一固态驱动发送到第二固态驱动的命令或请求已由第二固态驱动完成的指示来更新第一固态驱动处的队列,诸如第一固态驱动处的完成队列。基于接收到从第一固态驱动向第二固态驱动发送的命令或请求已由第二固态驱动完成的指示来更新第一固态驱动处的队列包括:更新第一固态驱动处的提交队列,以清除出与至少一个命令或请求的提交有关的指示。
示例装置
图3是可以根据如整个本公开中所描述的各种示例及其任何等效物被配置的固态驱动300的简化示例框图。固态驱动(SSD)300的示例可以包括本地处理器302、存储器阵列304、接口306和一个或多个队列集合308。总线303可以耦合到SSD 300中包括的各种元件,并且被配置为通信地耦合这些元件。SSD 300的示例可以是如关于图1所图示和描述的SSD130、140和/或150中的任何一个或多个,并且可以被配置为执行关于方法200(图2)及其任何等效物所描述的一些或全部功能。
本地处理器302的示例可以包括协调SSD 300上的操作的多个处理器、多个内核、多个节点和/或实现多线程等。存储器阵列304的示例不限于任何特定类型存储器,并且可以包括存储器604,可以是系统存储器(例如,高速缓存、随机存取存储器(RAM)、同步RAM(SRAM)、动态RAM(DRAM)、零电容器RAM、双晶体管RAM、嵌入式DRAM(eDRAM)、扩展数据输出RAM(EDO RAM)、双倍数据速率RAM(DDR RAM)、电可擦除可编程只读存储器(EEPROM)、纳米RAM(NRAM)、电阻性RAM(RRAM)、氮氧化硅氧化硅存储器(SONOS)、参数随机存取存储器(PRAM)等中的一个或多个)或一个或多个非瞬态机器可读介质的任何一种或多种其他可能实现。
接口306的示例不限于任何特定类型的接口,并且可以包括由本地处理器302可控制的一个或多个接口设备或模块,以使用在整个本公开及其任何等效物中描述的任何一种方法和/或技术在SSD 300和一个或多个其他SSD之间提供通信。例如,接口306可以由本地处理器控制,以通过互连在SSD 300和另一SSD之间提供直接通信,而不需要通信传递通过诸如主机设备之类的中间设备。当SSD 300正以发起方模式操作时,接口306可以提供与另一SSD的直接通信,并且生成并发布命令或请求以使另一SSD执行一些数据存储相关过程。当SSD 300正作为目标SSD操作时并且正从以发起方模式作用的另一SSD接收被直接发送给SSD 300的命令或请求时,接口306可以提供与另一SSD的直接通信。
在各种示例中,接口306也可以被配置为从例如通过诸如交换机110(图1)之类的交换机设备而耦合到SSD 300的、诸如一个或多个主机102(图1)之类的一个或多个主机传输和接收指向SSD 300的命令和请求。
总线303不限于任何特定类型的总线,并且例如可以符合外围组件互连(PCI)、工业标准架构(ISA)、高速PCI、新总线(NuBus)、高级可扩展总线AXI总线和以太网标准。总线303还可以有利于本地处理器302与存储器阵列304和队列308之间的通信。队列308可以包括一个或多个队列,其被建立以提供SSD 300与一个或多个其他SSD之间的通信链路。在各种示例中,队列308包括队列对310,该队列对310包括被配置为允许在SSD 300和另一SSD之间建立通信链路的提交队列(SQ)和完成队列(CQ)。还可以根据需要在队列308内建立由队列311图示性地表示的附加队列,以提供SSD 300在以发起方模式作用时为了与一个或多个主机通信以及还与一个或多个附加SSD直接通信所需的任何和所有通信链路,而无需SSD300与一个或多个其他SSD之间的通信传递通过诸如交换机或主机之类的中间设备。
归因于SSD 300的这些功能可以以存储在一个或多个非瞬态机器可读介质上的软件(例如,计算机代码、程序指令、程序代码、计算机指令)和/或硬件的组合来实现。在一些情形中,代替管理处理器模块、数据处理器模块和/或命令处理器模块或者除了这些模块之外,本地处理器302和存储器阵列304可以实现或有利于实现各功能性。此外,SSD 300的示例可以包括图3中未图示出的更少或附加的组件(例如,视频卡、音频卡、其他网络接口、外围设备等)。
上面已经详细描述了一些实现,并且各种修改是可能的。包括在本说明书中描述的功能操作的、所公开的主题可以在诸如在本说明书中公开的结构装置及其结构等同物之类的电子电路、计算机硬件、固件、软件或它们的组合中实现:潜在地包括一种可操作来使诸如处理器之类的一个或多个数据处理装置执行所描述操作的程序(诸如在非瞬态计算机可读介质中编码的程序,该非瞬态计算机可读介质可以是存储器设备、存储设备、机器可读存储基板、或其他物理、机器可读介质或它们中的一个或多个的组合)。
程序(也称为计算机程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解释语言、声明性或过程语言)来编写,并且其可以以任何形式进行部署,包括作为独立程序或作为模块、组件、子例程或适用于在计算环境中使用的其他单元。程序不一定与文件系统中的文件相对应。程序可以被存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所讨论程序的单个文件中或存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以将程序部署为在一台计算机上或者在位于一个站点上或分布在多个站点上并通过通信网络互连的多台计算机上被执行。
尽管本说明书包含许多具体细节,但是这些不应被解释为对可以被要求保护的范围的限制,而应被解释为对特定实现可能是特定的特征的描述。在本说明书中在各个实现的上下文中描述的某些特征也可以在单个实现中被组合实现。相反,在单个实现的上下文中描述的各种特征也可以分别在多个实现中或以任何合适的子组合来实现。此外,尽管特征在上面可以被描述为以某些组合起作用并且甚至最初如此声称,但是在一些情况下可以从组合中切除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了各操作,但是这不应被理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有图示出的操作来实现期望的结果。在某些场景中,多任务和并行处理可能是有利的。而且,上述实现中的各种系统组件的分离不应被理解为在所有实现中都需要这种分离。
除非明确说明,否则在具有连接词“和”的清单前使用短语“至少一个”不应被视为排他性清单,也不应被解释为具有来自每个类别中一项的类别清单。只有所列项目中的一项、所列项目中的多项、和清单中的一项或多项加上未列出的另一项才违反记述“A,B和C中的至少一个”的从句。
其他实现落入所附权利要求的范围内。
Claims (20)
1.一种在包括第一固态驱动和第二固态驱动的数据存储系统中的方法,所述方法包括:
在所述第一固态驱动处建立:i)第一提交队列,所述第一提交队列被配置为存储由所述第一固态驱动向所述第二固态驱动发布的命令的指示,以及ii)第一完成队列,所述第一完成队列被配置为存储由所述第二固态驱动执行的命令的完成的指示;
在所述第二固态驱动处建立:i)第二提交队列,所述第二提交队列被配置为存储由所述第一固态驱动向所述第二固态驱动发布的命令的指示,以及ii)第二完成队列,所述第二完成队列被配置为存储由所述第二固态驱动执行的命令的完成的指示;
由所述第一固态驱动发起要由所述第二固态驱动执行的至少一个命令的生成;
由所述第一固态驱动通过将所述第一固态驱动与所述第二固态驱动通信耦合的互连来驱动所述至少一个命令,使得所述至少一个命令在所述第一固态驱动与所述第二固态驱动之间被传送;
由所述第一固态驱动在所述第一提交队列中存储已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的第一指示;
在所述第二固态驱动处,接收由所述第一固态驱动传送的所述至少一个命令;
由所述第二固态驱动在所述第二提交队列中存储已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的第二指示;
响应于接收到所述至少一个命令,由所述第二固态驱动对被存储在所述第二固态驱动处的数据执行至少一个数据操作;
由所述第二固态驱动更新所述第二完成队列以指示所述至少一个命令已由所述第二固态驱动完成;
由所述第二固态驱动通过至所述第一固态驱动的所述互连来驱动至少一个相应指示,使得所述至少一个相应指示在所述第二固态驱动与所述第一固态驱动之间被传送,所述至少一个相应指示指示所述第二固态驱动已完成与所述至少一个命令相对应的至少一个相应数据操作;
在所述第一固态驱动处,接收来自所述第二固态驱动的所述至少一个相应指示;并且
由所述第一固态驱动更新所述第一完成队列以指示所述至少一个命令已被所述第二固态驱动完成。
2.根据权利要求1所述的方法,其中将所述第一固态驱动与所述第二固态驱动耦合的所述互连利用高速外围组件互连PCIe。
3.根据权利要求1所述的方法,其中将所述第一固态驱动与所述第二固态驱动耦合的所述互连利用以太网。
4.根据权利要求1所述的方法,还包括:
在所述第一固态驱动处进入发起方模式,并且响应于由通信耦合到所述第一固态驱动器和所述第二固态驱动器的主机源发并且在所述第一固态驱动处被接收的传入命令,发起所述至少一个命令的所述生成。
5.根据权利要求1所述的方法,还包括:
在所述第一固态驱动处进入发起方模式,并且响应于检测到与由通信耦合到所述第一固态驱动器和所述第二固态驱动器的主机源发的命令不相关的事件,发起所述至少一个命令的所述生成。
6.根据权利要求1所述的方法,还包括:
响应于所述第一固态驱动从所述第二固态驱动器接收所述至少一个相应指示,由所述第一固态驱动从所述第一提交队列移除或清除已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的指示。
7.根据权利要求1所述的方法,其中更新所述第一固态驱动的所述第一完成队列包括:
响应于所述第一固态驱动从所述第二固态驱动接收所述至少一个相应指示,由所述第一固态驱动利用所述至少一个命令已完成的指示更新所述第一固态驱动的所述第一完成队列。
8.根据权利要求1-7中任一项的方法,还包括:
在所述第一固态驱动处建立:i)第三提交队列,所述第三提交队列被配置为存储主机设备向所述第一固态驱动发布的命令的指示,以及ii)第三完成队列,所述第三完成队列被配置为存储由所述第一固态驱动执行的命令的完成的指示;
在所述第一固态驱动处,经由将所述第一固态驱动通信耦合到所述主机设备的交换机,接收由所述主机设备向所述第一固态驱动传送的至少一个其他命令;
由所述第一固态驱动在所述第三提交队列中存储已由所述主机设备向所述第一固态驱动发布所述至少一个其他命令的第三指示;
响应于从所述主机设备接收所述至少一个其他命令,由所述第一固态驱动对被存储在所述第一固态驱动处的数据执行至少一个其他数据操作;
由所述第一固态驱动更新所述第三完成队列以指示所述至少一个其他命令已由所述第一固态驱动完成;并且
由所述第一固态驱动通过所述交换机向所述主机设备发送至少一个其他相应指示,所述至少一个其他相应指示指示所述第一固态驱动已完成与所述至少一个其他命令相对应的至少一个其他相应数据操作。
9.根据权利要求8所述的方法,还包括:
在所述交换机处,接收来自所述主机设备的所述至少一个其他命令;
由所述交换机将所述至少一个其他命令发送到所述第一固态驱动;
由所述交换机接收来自所述第一固态驱动的所述至少一个其他相应指示;以及
由所述交换机将所述至少一个其他相应指示发送到所述主机设备。
10.一种数据存储系统,包括:
第一固态驱动,具有i)被配置为存储持久性数字编码数据的第一非易失性存储器阵列、ii)第一处理器和iii)第一本地存储器;
第二固态驱动,具有i)被配置为存储持久性数字编码数据的第二非易失性存储器阵列、ii)第二处理器和iii)第二本地存储器;以及
将所述第一固态驱动与所述第二固态驱动通信耦合的互连;
其中所述第一固态驱动的所述第一本地处理器被配置为:
发起要由所述第二固态驱动执行的至少一个命令的生成,
通过所述互连驱动所述至少一个命令,使得所述至少一个命令在所述第一固态驱动与所述第二固态驱动之间被传送,
在所述第一本地存储器内的第一提交队列中存储已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的第一指示,
从所述第二固态驱动接收所述第二固态驱动已完成与所述至少一个命令相对应的至少一个相应数据操作的至少一个相应指示,并且
更新所述第一本地存储器内的第一完成队列以指示所述至少一个命令已由所述第二固态驱动完成;并且
其中所述第二固态驱动的第二本地处理器被配置为:
接收由所述第一固态驱动传送的所述至少一个命令,
在所述第二本地存储器内的第二提交队列中存储已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的第二指示,
响应于接收所述至少一个命令,对被存储在所述第二固态驱动处的数据执行所述至少一个数据操作,
更新所述第二本地存储器内的第二完成队列以指示所述至少一个命令已由所述第二固态驱动完成,并且
通过至所述第一固态驱动的所述互连来驱动所述第二固态驱动已完成所述至少一个相应数据操作的所述至少一个相应指示,使得所述至少一个相应指示在所述第二固态驱动与所述第一固态驱动之间被传送。
11.根据权利要求10所述的数据存储系统,其中:
所述第一本地处理器被配置为通过用高速外围组件互连PCIe的所述互连来驱动所述至少一个命令;并且
所述第二本地处理器被配置为通过用PCIe的所述互连来驱动所述第二固态驱动已完成所述至少一个相应数据操作的所述至少一个相应指示。
12.根据权利要求10所述的数据存储系统,其中:
所述第一本地处理器被配置为通过利用所述以太网的所述互连来驱动所述至少一个命令;并且
所述第二本地处理器被配置为通过利用所述以太网的所述互连来驱动所述第二固态驱动已完成所述至少一个相应数据操作的所述至少一个相应指示。
13.根据权利要求10所述的数据存储系统,其中所述第一本地处理器还被配置为:
进入发起方模式,并且
响应于由主机源发并且在所述第一固态驱动处被接收的传入命令,发起所述至少一个命令的生成,所述主机被通信地耦合到所述第一固态驱动和所述第二固态驱动。
14.根据权利要求10所述的数据存储系统,其中所述第一本地处理器还被配置为:
进入发起方模式,并且
响应于检测到与由通信耦合到所述第一固态驱动和所述第二固态驱动的主机源发的命令不相关的事件,发起所述至少一个命令的生成。
15.根据权利要求10所述的数据存储系统,其中所述第一本地处理器还被配置为:
响应于所述第一固态驱动从所述第二固态驱动接收所述至少一个相应指示,从所述第一提交队列中移除或清除已由所述第一固态驱动向所述第二固态驱动发布所述至少一个命令的指示。
16.根据权利要求10所述的数据存储系统,其中所述第一本地处理器还被配置为:
响应于所述第一固态驱动从所述第二固态驱动接收所述至少一个相应指示,利用所述至少一个命令已完成的指示更新所述第一固态驱动的所述第一完成队列。
17.根据权利要求10-16中任一项所述的数据存储系统,其中所述第一本地处理器还被配置为:
经由将所述第一固态驱动通信耦合到主机设备的交换机,接收由所述主机设备传送的至少一个其他命令;
在所述第一本地存储器中的第三提交队列中存储已由所述主机设备向所述第一固态驱动发布所述至少一个其他命令的第三指示;
响应于从所述主机设备接收所述至少一个其他命令,对被存储在所述第一固态驱动处的数据执行至少一个其他数据操作;
更新所述第一本地存储器中的第三完成队列以指示所述第一固态驱动已完成至少一个其他命令;并且
经由所述交换机向所述主机设备发送至少一个其他相应指示,所述至少一个其他相应指示指示所述第一固态驱动已完成与所述至少一个其他命令相对应的至少一个其他相应数据操作。
18.根据权利要求17所述的数据存储系统,还包括所述交换机,所述交换机被配置为:
从所述主机设备接收所述至少一个其他命令;
将所述至少一个其他命令发送到所述第一固态驱动;
从所述第一固态驱动接收所述至少一个其他相应指示;并且
将所述至少一个其他相应指示发送到所述主机设备。
19.根据权利要求18所述的数据存储系统,其中所述交换机还被配置为:
从所述主机设备接收所述至少一个其他命令作为高速非易失性存储器NVMe命令;并且
将所述至少一个其他命令作为所述NVMe命令发送到所述第一固态驱动。
20.根据权利要求18所述的数据存储系统,其中所述交换机还被配置为:
从所述主机设备接收所述至少一个其他命令作为高速非易失性存储器NVMe命令;并且
经由高速外围组件互连PCIe将所述至少一个其他命令发送到所述第一固态驱动。
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862783060P | 2018-12-20 | 2018-12-20 | |
| US62/783,060 | 2018-12-20 | ||
| US16/717,408 | 2019-12-17 | ||
| US16/717,408 US11366610B2 (en) | 2018-12-20 | 2019-12-17 | Solid-state drive with initiator mode |
| CN201911327339.1A CN111352583B (zh) | 2018-12-20 | 2019-12-20 | 具有发起方模式的固态驱动 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911327339.1A Division CN111352583B (zh) | 2018-12-20 | 2019-12-20 | 具有发起方模式的固态驱动 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119336256A true CN119336256A (zh) | 2025-01-21 |
Family
ID=69061085
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911327339.1A Active CN111352583B (zh) | 2018-12-20 | 2019-12-20 | 具有发起方模式的固态驱动 |
| CN202411362694.3A Pending CN119336256A (zh) | 2018-12-20 | 2019-12-20 | 具有发起方模式的固态驱动 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911327339.1A Active CN111352583B (zh) | 2018-12-20 | 2019-12-20 | 具有发起方模式的固态驱动 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US11366610B2 (zh) |
| EP (1) | EP3671477B1 (zh) |
| CN (2) | CN111352583B (zh) |
| TW (2) | TWI828824B (zh) |
Families Citing this family (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
| US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
| US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
| US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
| US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
| US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
| US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
| US11573708B2 (en) * | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
| US11288196B2 (en) * | 2020-01-15 | 2022-03-29 | EMC IP Holding Company LLC | Efficient data read operation |
| US11704059B2 (en) | 2020-02-07 | 2023-07-18 | Samsung Electronics Co., Ltd. | Remote direct attached multiple storage function storage device |
| US12393432B2 (en) | 2020-09-02 | 2025-08-19 | Samsung Electronics Co., Ltd. | Mechanism to discover computational storage functions and devices |
| US12443436B2 (en) | 2020-09-02 | 2025-10-14 | Samsung Electronics Co., Ltd. | Systems and method for batching requests in computational devices |
| US12399639B2 (en) | 2021-01-27 | 2025-08-26 | Samsung Electronics Co., Ltd. | Systems and methods for data transfer for computational storage devices |
| US12014052B2 (en) * | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
| US12126548B2 (en) * | 2021-03-25 | 2024-10-22 | Nokia Solutions And Networks Oy | Supporting communications for data storage |
| US11755251B2 (en) * | 2021-06-02 | 2023-09-12 | Samsung Electronics Co., Ltd. | Virtual computational storage devices |
| US12423117B2 (en) * | 2021-06-03 | 2025-09-23 | Samsung Electronics Co., Ltd. | Plugin framework mechanism to manage computational storage devices |
| JP2025527961A (ja) * | 2022-08-17 | 2025-08-26 | ベイジン スーパーストリング アカデミー オブ メモリー テクノロジー | 記憶システム及びそのコンピュテーショナルストレージプロセッサ、ソリッドステートドライブ、データの読み取り・書き込み方法 |
| KR20240109445A (ko) * | 2023-01-04 | 2024-07-11 | 삼성전자주식회사 | 연산 스토리지 장치, 이를 포함하는 스토리지 시스템 및 그 동작 방법 |
| US20250244916A1 (en) * | 2024-01-26 | 2025-07-31 | Dell Products L.P. | Sds local data path optimization system |
Family Cites Families (38)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7499450B2 (en) | 2004-04-30 | 2009-03-03 | Infineon Technologies Ag | Router IP port for an IP router |
| WO2012111222A1 (ja) | 2011-02-17 | 2012-08-23 | 日本電気株式会社 | ネットワークシステム、及びネットワークフロー追跡方法 |
| US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
| CN102566943B (zh) * | 2011-12-31 | 2015-03-11 | 记忆科技(深圳)有限公司 | 基于固态硬盘的通讯方法及固态硬盘 |
| US10063638B2 (en) | 2013-06-26 | 2018-08-28 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
| US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
| US9785355B2 (en) | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
| US9304690B2 (en) | 2014-05-07 | 2016-04-05 | HGST Netherlands B.V. | System and method for peer-to-peer PCIe storage transfers |
| US9565269B2 (en) | 2014-11-04 | 2017-02-07 | Pavilion Data Systems, Inc. | Non-volatile memory express over ethernet |
| EP3295321A4 (en) | 2015-05-14 | 2019-04-24 | Apeiron Data Systems | ACCESS MULTIPLE STORES WITH MULTIPLE HOSTS WITHOUT REMOTE DIRECTORY ACCESS (RDMA) |
| KR102430187B1 (ko) | 2015-07-08 | 2022-08-05 | 삼성전자주식회사 | RDMA NVMe 디바이스의 구현 방법 |
| US10162793B1 (en) | 2015-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Storage adapter device for communicating with network storage |
| EP4202705A1 (en) | 2016-04-04 | 2023-06-28 | Marvell Asia Pte, Ltd. | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access |
| EP3279810B1 (en) | 2016-06-14 | 2019-09-04 | Huawei Technologies Co., Ltd. | Data access method and related apparatus and system |
| US10311008B2 (en) | 2016-08-12 | 2019-06-04 | Samsung Electronics Co., Ltd. | Storage device with network access |
| KR102229013B1 (ko) * | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
| US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
| KR102631351B1 (ko) * | 2016-10-07 | 2024-01-31 | 삼성전자주식회사 | 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 |
| CN108369530B (zh) | 2016-12-05 | 2021-06-15 | 华为技术有限公司 | 非易失性高速传输总线架构中数据读写命令的控制方法、设备和系统 |
| US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
| US10691368B2 (en) * | 2017-03-31 | 2020-06-23 | Samsung Electronics Co., Ltd. | System and method for providing data replication in NVMe-oF ethernet SSD |
| US10459665B2 (en) | 2017-04-03 | 2019-10-29 | Samsung Electronics Co., Ltd. | System and method of configuring NVMe-oF devices using a baseboard management controller (BMC) |
| US10275180B2 (en) | 2017-05-08 | 2019-04-30 | Samsung Electronics Co., Ltd. | Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch |
| US10860508B2 (en) * | 2017-05-25 | 2020-12-08 | Western Digital Technologies, Inc. | Offloaded disaggregated storage architecture |
| US10423358B1 (en) | 2017-05-31 | 2019-09-24 | FMAD Engineering GK | High-speed data packet capture and storage with playback capabilities |
| US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
| US20190163364A1 (en) | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
| 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 |
| US10963394B2 (en) | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
| US11003229B2 (en) * | 2018-07-02 | 2021-05-11 | Samsung Electronics Co., Ltd. | Cost-effective solid state disk data protection method for hot removal event |
| US11231764B2 (en) | 2018-10-17 | 2022-01-25 | Samsung Electronics Co., Ltd. | System and method for supporting chassis level keep alive in NVME-of based system |
| US10671302B1 (en) | 2018-10-26 | 2020-06-02 | Pure Storage, Inc. | Applying a rate limit across a plurality of storage systems |
| US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
| US10877682B2 (en) | 2019-01-10 | 2020-12-29 | Western Digital Technologies, Inc. | Non-disruptive cross-protocol live data migration |
| KR102691053B1 (ko) | 2019-01-10 | 2024-07-31 | 삼성전자주식회사 | NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법 |
| US11275698B2 (en) | 2019-03-14 | 2022-03-15 | Marvell Asia Pte Ltd | Termination of non-volatile memory networking messages at the drive level |
| WO2020186270A1 (en) | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Ethernet enabled solid state drive (ssd) |
| EP4398552B1 (en) | 2019-03-14 | 2025-12-31 | Marvell Asia Pte, Ltd. | DATA TRANSFER BETWEEN SOLID-STATE DRIVES (SSDs) VIA A CONNECTION BETWEEN SSDS |
-
2019
- 2019-12-17 US US16/717,408 patent/US11366610B2/en active Active
- 2019-12-18 TW TW108146474A patent/TWI828824B/zh active
- 2019-12-18 TW TW112148721A patent/TWI859030B/zh active
- 2019-12-20 EP EP19218779.7A patent/EP3671477B1/en active Active
- 2019-12-20 CN CN201911327339.1A patent/CN111352583B/zh active Active
- 2019-12-20 CN CN202411362694.3A patent/CN119336256A/zh active Pending
-
2022
- 2022-06-20 US US17/844,559 patent/US11640269B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| KR20200078382A (ko) | 2020-07-01 |
| TWI828824B (zh) | 2024-01-11 |
| US20220317936A1 (en) | 2022-10-06 |
| TW202416147A (zh) | 2024-04-16 |
| US20200201575A1 (en) | 2020-06-25 |
| CN111352583A (zh) | 2020-06-30 |
| US11640269B2 (en) | 2023-05-02 |
| EP3671477A1 (en) | 2020-06-24 |
| CN111352583B (zh) | 2024-10-15 |
| EP3671477B1 (en) | 2021-11-03 |
| TW202042077A (zh) | 2020-11-16 |
| US11366610B2 (en) | 2022-06-21 |
| TWI859030B (zh) | 2024-10-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111352583B (zh) | 具有发起方模式的固态驱动 | |
| TWI770358B (zh) | 主機系統及其方法和加速模組 | |
| US10257273B2 (en) | Systems, methods and devices for RDMA read/write operations | |
| US9696942B2 (en) | Accessing remote storage devices using a local bus protocol | |
| US9727503B2 (en) | Storage system and server | |
| US8949486B1 (en) | Direct memory access to storage devices | |
| CN110609659B (zh) | 用于执行读取命令的NVMeoF RAID实现方法 | |
| CN106933504B (zh) | 用于提供存储系统的访问的方法和系统 | |
| US11144232B2 (en) | Storage system with efficient snapshot pair creation during synchronous replication of logical storage volumes | |
| CN106662895A (zh) | 计算机设备和计算机设备数据读写的方法 | |
| US20210365329A1 (en) | Efficient synchronization of cloud enabled file system database during snapshot restore operation | |
| CN111831217A (zh) | 存储系统、其驱动器框体、以及奇偶校验计算方法 | |
| US10956245B1 (en) | Storage system with host-directed error scanning of solid-state storage devices | |
| US9921753B2 (en) | Data replication across host systems via storage controller | |
| US11238010B2 (en) | Sand timer algorithm for tracking in-flight data storage requests for data replication | |
| KR102926270B1 (ko) | 개시자 모드를 갖는 솔리드-스테이트 드라이브 | |
| US10506042B2 (en) | Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto | |
| WO2016188014A1 (zh) | 数据存储方法和装置 | |
| CN104601729A (zh) | 一种采用NVMe实现高性能云存储的方法 | |
| US11971855B2 (en) | Supporting multiple operations in transaction logging for a cloud-enabled file system | |
| CN110515536A (zh) | 数据存储系统 | |
| CN119576217A (zh) | 用于在存储设备和处理元件之间移动数据的系统和方法 | |
| CN118642849A (zh) | 一种基于双端口固态硬盘的数据处理方法、装置及设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |