CN109522250A - 根据多播通信协议与主机通信的存储设备和主机通信方法 - Google Patents
根据多播通信协议与主机通信的存储设备和主机通信方法 Download PDFInfo
- Publication number
- CN109522250A CN109522250A CN201810893708.2A CN201810893708A CN109522250A CN 109522250 A CN109522250 A CN 109522250A CN 201810893708 A CN201810893708 A CN 201810893708A CN 109522250 A CN109522250 A CN 109522250A
- Authority
- CN
- China
- Prior art keywords
- storage equipment
- controller
- storage
- host
- equipment
- 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.)
- Granted
Links
Classifications
-
- 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
-
- 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/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
一种存储设备包括:存储器器件;以及控制器,被配置为从主机获取命令,所述命令指示逻辑地址,基于逻辑地址处理命令,并且从第一副本存储设备接收确认信号,所述确认信号指示所述命令已由第一副本存储设备处理。
Description
相关申请的交叉引用
本申请要求2017年9月20日在韩国知识产权局递交的韩国专利申请No.10-2017-0121411的优先权,其全部内容通过引用并入本文。
技术领域
本文公开的本发明构思的至少一些示例实施例涉及存储设备以及主机的通信方法,并且更具体地,涉及根据多播通信协议与主机通信的存储设备和主机的通信方法。
背景技术
闪存设备正被用作诸如计算机、智能电话、个人数字助理(PDA)、数码相机、录音机、MP3播放器、手持式PC等信息设备的语音和图像数据存储介质。基于闪存的大容量存储设备的示例是固态驱动器(以下称为“SSD”)。根据SSD的各种目的,SSD的接口应提供最佳速度和可靠性。为了满足这些要求,诸如串行AT附件(SATA)接口、PCI Express(PCIe)接口和串行连接SCSI(SAS)之类的接口可以用作最佳SSD接口。特别地,研究并应用基于PCIe的NVMExpress(NVMe)。
主机可以与多个SSD通信以分发和管理数据。主机可以根据对等(P2P)通信方法与SSD通信。然而,如果主机根据P2P通信方法向任何一个SSD提供命令,则接收命令的SSD必须将接收到的命令提供给另一个SSD,从而导致处理命令所用的时间(即,延迟)增加。此外,每个SSD都需要存储器空间来向任何其他SSD提供命令并接收命令的完成信息。
发明内容
根据本发明构思的至少一些示例实施例提供了一种根据多播通信协议与主机进行通信的存储设备以及一种主机的通信方法。
根据本发明构思的至少一些示例实施例,一种存储设备包括:存储器器件;以及控制器,该控制器被配置为从主机获取命令,所述命令指示逻辑地址,基于逻辑地址处理命令,并且从第一副本存储设备接收确认信号,所述确认信号指示所述命令已由第一副本存储设备处理。
根据本发明构思的至少一些示例实施例,一种存储设备包括:存储器器件;以及控制器,该控制器被配置为:从主机获取命令,该命令指示逻辑地址;基于逻辑地址处理命令;以及向主存储设备发送指示所述命令已被处理的确认信号。
根据本发明构思的至少一些示例实施例,一种与第一存储设备和第二存储设备相连的主机的通信方法包括:生成用于控制第一存储设备和第二存储设备的命令;使第一存储设备和第二存储设备通过更新第一存储设备的至少一个寄存器来获取命令;以及当命令在第二存储设备中被处理并且第二存储设备向第一存储设备发送指示命令已被处理的确认信号时,从第一存储设备接收命令的完成信息。
附图说明
通过参照附图详细描述本发明构思的示例实施例,本发明构思的示例实施例的上述及其他特点和优点将变得更清楚。附图旨在描述本发明构思的示例实施例,并且不应被解释为限制权利要求的预期范围。除非明确说明,否则附图不应视为按比例绘制。
图1是示出了根据本发明构思的至少一些示例实施例的存储***的框图。
图2是示出了图1所示的主机的框图。
图3是示出了图1所示的存储设备的框图。
图4是示出了根据本发明构思的至少一些示例实施例的在主机与存储设备之间的多播通信方法的流程图。
图5是示出了根据本发明构思的至少一些示例实施例的在主机与存储设备之间的多播通信方法的流程图。
图6是示出了根据本发明构思的至少一些示例实施例的在主机与存储设备之间的多播通信方法的流程图。
图7是示出了根据本发明构思的至少一些示例实施例的、针对根据控制器的设置值的改变的数据、主设备的改变的视图。
图8是示出了当作为第一至第三存储设备的副本存储设备操作的第二存储设备的操作出现故障时,确定新的副本存储设备的过程的流程图。
图9是示出了在第一控制器将第三存储设备确定为新的副本存储设备之后,主机与存储设备之间的多播通信方法的流程图。
图10是示出了当作为第一至第三存储设备的主存储设备操作的第一存储设备的操作出现故障时,确定新的主存储设备的过程的流程图。
图11是示出了在第二和第三控制器将第二存储设备确定为新的主存储设备之后,主机与存储设备之间的多播通信方法的流程图。
图12是示出了根据本发明构思的至少一些示例实施例的,根据多播通信协议从主机向存储没备发送向量命令的视图。
图13是示出了根据本发明构思的至少另一个示例实施例的存储***的框图。
图14是示出了根据本发明构思的至少一些示例实施例的计算***的视图。
图15是示出了应用了根据本发明构思的至少一些示例实施例的多播通信方法的用户***的框图。
具体实施方式
如在本发明构思的领域中常见的,在功能块、单元和/或模块方面描述并在附图中示出实施例。本领域技术人员将理解,这些块、单元和/或模块通过诸如逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等的电子(或光学)电路物理地实现,其中所述电子(或光学)电路可以使用基于半导体的制造技术或其它制备技术来形成。在块、单元和/或模块由微处理器或类似物实现的情况下,它们可以使用软件(例如,微代码)来编程以执行本文讨论的各种功能,并且可以可选地由固件和/或软件驱动。备选地,每个块、单元和/或模块可以通过专用硬件实现或实现为执行一些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程的微处理器和相关联的电路)的组合。此外,在不脱离本发明构思的范围的情况下,实施例的每个块、单元和/或模块可以物理地分成两个或更多个交互和分立的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
本发明构思的至少一些示例实施例提供了一种计算***,用于通过使用硬件安全模块及其固件管理方法来提供固件的高安全性和可靠性。
图1是示出了根据本发明构思的至少一些示例实施例的存储***的框图。参考图1,存储***10可以包括主机11、第一存储设备12和第二存储设备15。
主机11可以在第一存储设备12中写入数据或者可以从第一存储没备12读取数据。为此,主机11可以生成各种命令以控制第一存储设备12。一般来说,主机11的命令处理过程如下。主机11可以向第一存储设备12发送命令,并且可以从第一存储设备12接收与所发送的命令相关联的完成信息和中断。响应于中断,主机11可以执行中断处理,该中断处理用于完成与所发送的命令相关联的线程或任务。
第一存储设备12可以获取主机11生成的命令。根据主机11生成的命令,第一存储设备12可以存储数据或者可以向主机11发送数据。第二存储设备15可以备份数据以应对第一存储设备12的操作出现故障或者在第一存储设备12中发生故障的事件。也就是说,第一存储设备12可以是主存储设备,并且第二存储设备15可以是副本存储设备。至少两个存储设备中的一个可以是主设备,并且另一个可以是副本存储设备。主存储设备可以管理除自身之外的任何其他存储设备,并且可以通知主机11命令已完成。副本存储设备可以备份或复制主存储设备存储的数据,并且可以向主设备通知其自身的任务或处理状态。
在本公开中,存储设备的操作“出现故障(going down)”与以下术语同义,并且也可以称为:存储设备出故障和/或存储设备已停止操作。
第一存储设备12可以包括控制器13和存储器器件14。控制器13可以通过将数据存储在存储器器件14中或者从存储器器件14读取数据来处理主机11生成的命令。存储器器件14可以基于控制器13的控制来存储或输出数据。
第二存储设备15可以包括控制器16和存储器器件17。例如,第二存储设备15可以实现为与第一存储设备12相同。控制器16和存储器器件17可以以与第一存储设备12的控制器13和存储器器件14类似的方式操作。如在第一存储设备12中那样,第二存储设备15可以获取主机11生成的命令。
根据本发明构思的至少一些示例实施例,主机11可以向诸如第一存储设备12和第二存储设备15的至少两个存储设备发送命令。也就是说,主机11可以向第一存储设备12和第二存储设备15多播命令。
第一存储设备12和第二存储设备15可以并行地获取主机11生成的命令。在图1所示的示例中,第一存储设备12是主存储设备,并且第二存储设备15是副本存储没备。然而,与图示不同,根据主机11生成的命令,第一存储设备12可以是副本存储设备,并且第二存储设备15可以是主存储设备。也就是说,可以根据主机11生成的命令来改变第一存储设备12和第二存储设备15的角色。
即使主机11向第一存储设备12和第二存储设备15多播命令,第一存储设备12和第二存储设备15中的任何设备是否是主存储设备可能并不重要。第一存储设备12和第二存储设备15中的任一个可以根据主机11请求的数据来执行主存储设备的角色,而另一个可以执行副本存储设备的角色。可以由第一存储设备12和第二存储设备15来确定主存储设备和副本存储设备。也就是说,第一存储设备12和第二存储设备15中的每一个可以基于主机11生成的命令来确定其自己的角色。下面将描述主机11的物理配置。
图2是示出了图1所示的主机的框图。将参考图1来描述图2。参考图2,主机100可以包括处理器110、主机存储器120和接口电路130。
处理器110可以执行加载在主机存储器120上的各种软件(例如,应用程序、操作***和设备驱动程序)。处理器110可以执行操作***(OS)和应用程序。处理器110可以是同构多核处理器或异构多核处理器。
可以将要由处理器110处理的应用程序或数据加载在主机存储器120上。更具体地,可以将提交队列SQ和完成队列CQ加载在主机存储器120上,其中提交队列SQ用于管理要发送给第一存储设备12和第二存储设备15(参考图1)的命令的队列,完成队列CQ用于管理所发送命令的完成信息的队列。可以预先为提交队列SQ和完成队列CQ分配主机存储器120的特定区域。提交队列SQ和完成队列CQ可以称为“循环缓冲区”。
作为由主机100写入的提交条目的队列的提交队列SQ可以对应于要发送给第一存储设备12和第二存储设备15的命令。作为由第一存储设备12和第二存储设备15中的任一个写入的完成条目的队列的完成队列CQ可以指示主机100请求的命令是否是已完成或完成信息。
提交队列SQ可以由主机100写入或提供,并且可以由第一存储设备12和第二存储设备15获取或消耗。可以由主机100更新提交队列SQ的尾指针TP,并且可以由主机100向第一存储设备12和第二存储设备15发送新的尾指针TP的位置。第一存储设备12和第二存储设备15中的任一个可以发送完成信息,因此,提交队列SQ的头指针HP可以被更新。
完成队列CQ可以由第一存储设备12和第二存储设备15写入或提供,并且可以由主机100处理或消耗。可以由第一存储设备12和第二存储设备15中的任一个来更新完成队列CQ的尾指针TP。主机100可以响应于从第一存储设备12和第二存储设备15中的任一个发送的中断来使完成队列CQ的头指针HP前进,并且可以向第一存储设备12和第二存储设备15发送新的头指针HP的位置。
接口电路130可以提供主机100与第一存储设备12和第二存储设备15之间的物理连接。也就是说,接口电路130可以根据主机100与第一存储设备12和第二存储设备15接口连接的方式来转换与从主机发出的各种访问请求相对应的命令、地址、数据等。接口电路130的通信协议可以包括以下至少一项:通用串行总线(USB)协议、小型计算机***接口(SCSI)协议、PCI express协议、NVM express(NVMe)协议、ATA协议、并行ATA(PATA)协议、串行ATA(SATA)协议和串行连接SCSI(SAS)协议。根据本发明构思的至少一个示例实施例,用于以PCIe方式交换数据的NVM express(NVMe)协议可以应用于接口电路130。下面将描述图1的第一存储设备12和第二存储设备15的物理配置。
图3是示出了图1所示的存储设备的框图。将参考图1来描述图3。图3中示出的存储设备200的配置可以是图1的第一存储设备12和第二存储设备15中的每一个的配置。参考图3,存储设备200可以包括存储器器件211至213、控制器220和缓冲存储器240。
在控制器220的控制下,存储器器件211至213可以执行数据输入/输出。例如,存储器器件211至213中的每一个可以包括:诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)之类的易失性存储器;或者诸如NAND闪存、NOR闪存、电阻随机存取存储器(ReRAM)、铁电随机存取存储器(FRAM)、相变随机存取存储器(PRAM)、晶闸管随机存取存储器(TRAM)或磁随机存取存储器(MRAM)之类的非易失性存储器。图3中所示的存储器器件的数量和通道的数量仅是示例,并且本发明构思的至少一些示例实施例不限于此。
控制器220可以提供主机11(参考图1)与存储设备200之间的接口。控制器220可以包括处理器221、主机接口电路222、存储设备接口电路226、缓冲管理器229和内部存储器接口电路230。
处理器221可以控制控制器220的内部组件的操作。处理器221可以向主机接口电路222、存储设备接口电路226、缓冲管理器229和内部存储器接口电路230提供针对存储器器件211至213执行读操作或写操作所需的各种控制信息。处理器221可以根据针对控制器220的各种控制操作提供的固件来操作。例如,处理器221可以执行闪存转换层(FTL),用于执行管理存储器器件211至213的垃圾收集操作、地址管理操作、损耗均衡操作等。
主机接口电路222可以与主机100通信。例如,主机接口电路222可以包括第一寄存器223,用于写入主机100的提交队列尾门铃SQTDBL。主机接口电路222还可以包括第二寄存器224,用于写入主机100的完成队列头门铃CQHDBL。第一寄存器223可以存储主机100的提交队列SQ的信息,并且第二寄存器224可以存储主机100的完成队列CQ的信息。提交队列尾门铃SQTDBL可以指示提交队列的尾指针的值,完成队列头门铃CQHDBL可以指示完成队列的头指针的值。主机接口电路222还可以包括第三寄存器225,用于存储中断(IR)表以管理根据第二寄存器224的状态生成的中断。
主机接口电路222可以被配置为根据应用于参考图2描述的主机100的接口电路130的通信协议来操作。根据本发明构思的至少一个示例实施例,用于以PCIe方式交换数据的NVMe协议可以应用于主机接口电路222。
存储设备接口电路226可以与任何其他存储设备(例如,图1的第一存储没备12和第二存储设备15中的任一个)通信。例如,存储设备接口电路226的通信协议可以是以下至少一项:USB、SCSI、PCIe、NVMe、ATA、PATA、SATA和SAS协议。
存储设备接口电路226可以包括确认模块227,用于与任何其他存储设备交换确认信号。根据本发明构思的至少一个示例实施例,在存储设备200是主存储设备的情况下,确认模块227可以从副本存储设备接收确认信号。在这种情况下,确认信号可以指示主机11的命令由副本存储设备进行处理。根据本发明构思的至少另一个示例实施例,在存储设备200是副本存储设备的情况下,确认模块227可以向主存储设备发送确认信号。在这种情况下,确认信号可以指示主机11的命令在控制器220或副本存储设备中进行处理。
存储设备接口电路226还可以包括故障识别模块228,用于与任何其他存储设备交换查询信号和响应信号。故障识别模块228可以向任何其他存储设备发送查询信号,并且可以从该任何其他存储设备接收响应信号。备选地,故障识别模块228可以从任何其他存储设备接收查询信号,并且可以向该任何其他存储设备发送响应信号。查询信号是指用于确定任何其他存储设备的操作是否出现故障或者是否发生故障的信号,响应信号是指从接收到查询信号的存储设备发送的作为响应的信号。例如,查询信号可以被称为“心跳信号”。根据本发明构思的至少一个示例实施例,确认模块227和故障识别模块228彼此分离。然而,根据本发明构思的至少一些示例实施例,确认模块227和故障识别模块228可以在单个集成电路中实现,或者可以以软件的形式在控制器220内实现。
缓冲管理器229控制缓冲存储器240的读写操作。例如,缓冲管理器229可以将针对存储器器件211至213的写数据或读数据临时存储在缓冲存储器240中。在处理器221的控制下,缓冲管理器229可以管理缓冲存储器240的区域。
内部存储器接口电路230可以与存储器器件211至213交换数据。内部存储器接口电路230可以通过通道CH1至CH3将来自缓冲存储器240的数据写入存储器器件211至213中。之后,可以由内部存储器接口电路230收集通过通道CH1至CH3从存储器器件211至213输出的读数据。经收集的数据可以在被存储在缓冲存储器240中之后发送给主机100,或者可以被直接发送给主机100。
根据本发明构思的至少一个示例实施例,可以如图3所示分离和实现控制器220的内部组件(处理器221、主机接口电路222、第一寄存器223至第三寄存器225、存储设备接口电路226、确认模块227、故障识别模块228、缓冲管理器229和内部存储器接口电路230)。
根据本发明构思的至少另一个示例实施例,与图示不同,控制器220的内部组件可以集成并实现在诸如片上***(SoC)、专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的单个集成电路上。在这种情况下,可以以软件的形式实现图3所示的内部组件。
缓冲存储器240用作存储设备200的缓冲存储器或高速缓存器。例如,缓冲存储器240可以临时存储从主机11接收的数据或从存储器器件211至213输出的数据,或者可以临时存储存储器器件211至213的元数据(例如,映射表)。缓冲存储器240可以包括诸如DRAM或SRAM的易失性存储器,并且可以被配置为具有比存储器器件211至213的输入/输出速度更快的输入/输出速度。
根据本发明构思的至少另一个示例实施例,存储器器件211至213、控制器220和缓冲存储器240可以集成在单个半导体器件中。根据本发明构思的至少一个示例实施例,存储器器件211至213、控制器220和缓冲存储器240可以集成在单个半导体器件中以构成固态驱动器(SSD)。存储器器件211至213、控制器220和缓冲存储器240可以集成在单个半导体器件中以构成存储卡。例如,存储器器件211至213、控制器220和缓冲存储器240可以集成在单个半导体器件中,以构成诸如PC卡(个人计算机存储卡国际协会(PCMCIA)卡)、紧凑型闪存卡(CF)、智能媒体卡(SM、SMC)、记忆棒、多媒体卡(MMC、RS-MMC、MMCmicro、eMMC)、SD卡(SD、miniSD、microSD、SDHC)或通用闪存(UFS)之类的存储卡。
根据本发明构思的至少一个示例实施例,控制器220可以包括一个或多个电路或线路(例如,硬件)或由一个或多个电路或线路(例如,硬件)来实现,该一个或多个电路或线路(例如,硬件)具体构造为执行和/或控制本公开中描述的由控制器220(或其元件)执行的任何操作或全部操作。根据本发明构思的至少一个示例实施例,控制器220可以包括工作存储器和一个或多个处理器或由工作存储器和一个或多个处理器来实现,该一个或多个处理器执行存储在工作存储器中的计算机可读代码(例如,软件和/或固件),并且控制器220包括用于使该一个或多个处理器执行和/或控制由控制器220(或其元件)执行的本文中描述的一些或全部操作的指令。根据本发明构思的至少一个示例实施例,可以通过例如上述硬件和执行计算机可读代码的一个或多个处理器的组合来实现控制器220。
参考图2和图3描述了图1所述的主机11以及第一存储设备12和第二存储设备15的配置。下面将描述主机11与第一存储设备12和第二存储设备15之间的多播通信方法。
图4是示出了根据本发明构思的至少一些示例实施例的在主机与存储设备之间的多播通信方法的流程图。将参考图1至图3来描述图4。在图4中,假设第一存储设备310是主存储设备并且第二存储设备320是副本存储设备。第一存储设备310可以包括第一控制器312,并且第二存储设备320可以包括第二控制器322。第一控制器312和第二控制器322的配置可以与图3的控制器220的配置基本相同。此外,第一存储设备310和第二存储设备320可以被分离和实现,或者可以集成并实现在单个集成设备中。
在操作S105中,主机100可以生成用于在第一存储设备310和第二存储设备320中存储数据或者从第一存储设备310和第二存储设备320读取数据的命令,并且可以将命令写入提交队列(SQ)条目。主机100可以更新分配给主机存储器120的提交队列SQ的尾指针。
在操作S110中,主机100可以更新第一控制器312和第二控制器322的存储提交队列尾门铃SQTDBL的寄存器(例如,图3的第一寄存器223),用于通知第一存储设备310和第二存储设备320在提交队列SQ中写入新命令。
在操作S115中,第一控制器312和第二控制器322中的每一个可以获取提交队列条目。第一存储设备310和第二存储没备320可以并行地获取主机100生成的命令。因此,可以以多播的方式向第一存储设备310和第二存储设备320发送主机100生成的命令。之后,第一控制器312和第二控制器322可以并行地处理所获取的命令。
根据本发明构思的至少一个示例实施例,当第一控制器312和第二控制器322获取命令时,可以顺序地获取一个或多个提交队列条目。更具体地,第一控制器312和第二控制器322可以顺序地获取按顺序存储在提交队列头到提交队列尾中的命令。
在操作S120和操作S125中,第一控制器312和第二控制器322可以分别根据逻辑块地址(LBA)确定如何处理命令。逻辑块地址可以是所获取的命令中包括的信息。逻辑块地址可以指示关于存储数据的位置的信息,并且可以称为“逻辑地址”。
第一控制器312和第二控制器322中的每一个可以根据命令中包括的逻辑块地址来确定自己的角色。这里,存储设备的角色可以被分类为主存储设备的角色或副本存储设备的角色。如图4所示,第一控制器312可以根据所获取的命令中包括的逻辑块地址,基于从提交队列SQ获取的命令将主存储设备的角色确定为自己的角色。如上所述,第二控制器322可以根据所获取的命令中包括的逻辑块地址,基于从提交队列SQ获取的命令将副本存储设备的角色确定为自己的角色。将参考表1描述控制器通过使用逻辑块地址确定角色的操作。
在操作S121和操作S126中,第一控制器312和第二控制器322可以分别根据逻辑块地址执行与所获取的命令相对应的操作,并且可以处理所获取的命令。例如,如果所获取的命令是写命令,则第一控制器312和第二控制器322中的每一个可以将从主机100提供的数据存储在存储器器件中。例如,如果所获取的命令是读命令,则第一控制器312和第二控制器322中的每一个可以从存储器器件211至213(参考图3)读取主机100请求的数据。可以以获取的顺序或者可以不以获取的顺序来处理提交队列SQ中存储的命令。
在操作S130中,第二控制器322可以向第一控制器312发送确认信号。在这种情况下,确认信号可以指示由第二存储设备320或第二控制器322处理主机100生成的命令。第一控制器312可以从第二控制器322接收确认信号,并且可以确定副本存储设备(例如,第二存储设备320)的命令处理已完成。也就是说,通过操作S130,第一控制器312可以确定由第一存储设备310和第二存储设备320处理主机100生成的命令。
在操作S135中,第一控制器312可以写入完成队列条目或完成信息,用于通知从提交队列SQ获取的命令的完成。第一控制器312和第二控制器322同时访问完成队列CQ的冲突事件不会在操作S135中发生。如果在操作S130中接收到确认信号,则第一控制器312可以向主机100发送所获取的命令的完成信息。由于第二存储设备320是副本存储设备,因此第二控制器322可以不访问完成队列CQ。根据本发明构思的至少一个示例实施例,完成队列条目的大小可以是16字节,并且可以包括提交队列标识符SQID、提交队列头指针SQHD、状态字段SF、阶段标签P、命令标识符CID等。
根据本发明构思的至少一些示例实施例,只有主存储设备的控制器(第一控制器312)可以访问完成队列CQ。因此,第一控制器312可以访问完成队列CQ,而第二控制器322不可以访问完成队列CQ。因此,即使主机100多播命令,也不会发生第一控制器312和第二控制器322同时访问完成队列CQ的冲突事件。
在操作S140中,第一控制器312可以生成中断并且可以向主机100发送该中断。中断可以是基于引脚(pin)的信号,或者可以以消息信号中断(MSI)方式或MSI-X方式被发送。
在操作S145中,主机100可以从第一控制器312接收中断,并且可以处理完成队列条目或完成信息。更具体地,主机100可以执行中断服务例程。如果向第一存储设备310和第二存储设备320请求的命令被正常处理,则主机100可以新生成与已完成的命令相关联的下一个命令。然而,在所请求的命令未被正常处理的情况下,主机100可以再次生成命令或者可以执行修复错误的操作。
在操作S150中,主机100可以更新第一控制器312和第二控制器322的存储完成队列头门铃CQHDB的寄存器(例如,图3的第二寄存器224),用于通知第一存储没备310和第二存储设备320完成队列条目或完成信息已被处理。
根据本发明构思的至少一个示例实施例,与图示不同,根据命令的逻辑块地址,第一存储设备310可以是副本存储设备,第二存储设备320可以是主存储设备。在这种情况下,可以由第一控制器312执行操作S130,并且可以由第二控制器322执行操作S135和操作S140。此外,第二控制器322可以访问完成队列CQ,而第一控制器312不可以访问完成队列CQ。
图5是示出了根据本发明构思的至少一些示例实施例的在主机与存储设备之间的多播通信方法的流程图。将参考图1至图4来描述图5。参考图5,主机100还可以向第三存储设备330以及第一存储设备310和第二存储设备320多播命令。在图5中,假设第一存储设备310是主存储设备,第二存储设备320是副本存储设备,并且第三存储设备330是空闲存储设备。空闲存储设备可以指不对相应命令执行任何任务的设备。存储设备的角色还可以包括空闲存储设备的角色。
第一存储设备310可以包括第一控制器312,第二存储设备320可以包括第二控制器322,并且第三存储设备330可以包括第三控制器332。第一控制器312、第二控制器322和第三控制器332的配置可以与图3的控制器220的配置基本相同。此外,第一存储设备310至第三存储设备330可以被分离和实现,或者可以集成并实现在单个集成电路中。
操作S205至操作S215与图4的操作S105至操作S115基本相同。然而,主机100还可以更新第三控制器332的存储提交队列尾门铃SQTDBL的寄存器(例如,图3的第一寄存器223),并且第三控制器332可以获取提交队列条目。
操作S220和操作S225与图4的操作S120和操作S125基本相同。在操作S230中,第三控制器332可以根据逻辑块地址来确定如何处理命令。如图5所示,第三控制器332可以根据所获取的命令中包括的逻辑块地址,基于从提交队列SQ获取的命令将空闲存储设备的角色确定为自己的角色。例如,第一控制器312、第二控制器322和第三控制器332中的每一个可以根据逻辑块地址来确定是否执行与命令相对应的操作或任务。
操作S221和操作S226与图4的操作S121和操作S126基本相同。在操作S231中,第三控制器332可以不对所获取的命令执行任何任务。
在操作S235中,第二控制器322可以向第一控制器312发送确认信号。此外,第三控制器332可以向第一控制器312发送确认信号。由于针对所获取的命令没有向第三控制器332分配角色,因此第三控制器332可以不执行与所获取的命令相对应的操作。第三控制器332可以不执行与所获取的命令相对应的操作,并且可以向第一控制器312发送指示所获取的命令已被处理的确认信号。
第一控制器312可以从第二控制器322和第三控制器332接收确认信号,并且可以确定存储设备从主机100获取命令的命令处理已完成。图5中示出了一个副本存储设备和一个空闲存储设备。然而,本发明构思的至少一些示例实施例可以不限于此。例如,主机100可以向多个存储设备(其数量多于图示的数量)多播命令。第一控制器312可以从存储设备(该存储设备从主机100获取命令)接收确认信号,并且第一控制器312可以对接收到的确认信号的数量进行计数。第一控制器312可以基于计数结果来确定主机100的命令是否被处理。
操作S240至操作S255与图4的操作S135至操作S150基本相同。第一控制器312、第二控制器322和第三控制器332同时访问完成队列CQ的冲突事件不会在操作S240中发生。主机100还可以更新第三控制器332的存储完成队列头门铃CQHDBL的寄存器(例如,图3的第二寄存器224),用于通知第三存储设备330完成队列条目或完成信息已被处理。
根据本发明构思的至少一个示例实施例,与图示不同,根据主机100生成的命令的逻辑块地址,第一存储设备310可以是副本存储设备或空闲存储设备,第二存储设备设备320可以是主存储设备或空闲存储设备,并且第三存储设备330可以是主存储设备或副本存储设备。
图6是示出了根据本发明构思的至少一些示例实施例的在主机与存储没备之间的多播通信方法的流程图。将参考图1至图5来描述图6。操作S305和操作S320至操作S355与图5的操作S205和操作S215至操作S250基本相同。下面将描述图5和图6之间的差异。
在操作S310中,主机100可以仅更新第一控制器312的寄存器而不更新第二控制器322和第三控制器332的寄存器(所述寄存器存储提交队列尾门铃SQTDBL),用于通知第一存储设备310至第三存储设备330新命令已被写入提交队列SQ。
在操作S315中,第一控制器312可以更新第二控制器322和第三控制器332的寄存器。第一控制器312可以将主机100更新的新提交队列尾门铃提供给第二控制器322和第三控制器332的寄存器。也就是说,第一控制器312可以代替主机100向第二存储设备320和第三存储设备330发送新提交队列的信息。
在操作S360中,为了通知第一存储设备310至第三存储设备330完成队列条目或完成信息已被处理,主机100可以仅更新第一控制器312的寄存器而不更新第二控制器322和第三控制器332的寄存器(所述寄存器存储完成队列头门铃CQHDBL)。
在操作S365中,第一控制器312可以代替主机100更新第二控制器322和第三控制器332的寄存器。第一控制器312可以将主机100更新的新完成队列头门铃提供给第二控制器322和第三控制器332的寄存器。也就是说,第一控制器312可以向第二存储设备320和第三存储设备330发送新完成队列的信息。
第一控制器312、第二控制器322和第三控制器332可以并行地从提交队列SQ获取命令,而不考虑图5所示的方式或图6所示的方式。即使主机100仅更新第一控制器312的寄存器,第一控制器312、第二控制器322和第三控制器332也可以获取提交队列SQ的命令。
[表11
表1示出了根据本发明构思的至少一些示例实施例的存储设备的控制器确定针对根据逻辑块地址的数据的角色的结果。将参考图4至图6来描述表1。表1示出了图4的操作S120和操作S125的结果、图5的操作S220、S225和S230的结果以及图6的操作S325、S330和S335的结果。
第一控制器312、第二控制器322和第三控制器332中的每一个可以对所获取的命令的逻辑块地址执行模N操作。可以基于获取命令的控制器的数量或者根据多播通信协议与主机通信的存储设备的数量来确定“N”。在表1中,例如,假设“N”是“3”,其表示控制器的数量。
参考表1,如果模运算的余数是“0”,则第一控制器312可以对数据执行主存储设备的角色;如果模运算的余数是“1”,则第一控制器312可以对数据执行空闲存储设备的角色;并且如果模运算的余数是“2”,则第一控制器312可以对数据执行副本存储设备的角色。可以以与第一控制器312类似的方式来确定第二控制器322和第三控制器332的角色。
从数据的角度来看,针对逻辑块地址为“0”的数据,第一控制器312可以作为主存储设备存储或复制数据,并且第二控制器322可以作为副本存储设备存储、复制或备份数据。相反,第三控制器332可以不对逻辑块地址为“0”的数据执行任何任务。针对具有另一个逻辑块地址的数据,可以以与上述方式类似的方式确定第一存储设备310至第三存储设备330的角色。
从第一控制器312的角度来看,第一控制器312可以预先存储第一设置值“0”、第二设置值“1”和第三设置值“2”。第一至第三设置值“0”、“1”和“2”可以存储在图3的控制器220的存储器器件211至213、缓冲存储器240或内部寄存器(未示出)中。第一至第三设置值“0”、“1”和“2”可以是预先确定的值,并且可以通过图3的存储设备接口电路226被第二存储设备320和第三存储设备330共享。
如果模运算的余数与第一设置值“0”相匹配,则第一控制器312可以操作为命令的主存储设备。例如,如果模运算的余数与第一设置值“0”相匹配,则第一控制器312可以处理命令(操作S121、操作S221和操作S326),并且可以从第二控制器322接收确认信号(操作S130、操作S235和操作S340)。
如果模运算的余数与第二设置值“1”相匹配,则第一控制器312可以操作为命令的空闲存储设备。例如,如果模运算的余数与第二设置值“1”相匹配,则第一控制器312可以不对命令执行任何操作(操作S231和操作S336),并且可以向主存储设备发送确认信号(操作S235和操作S340)。
如果模运算的余数与第三设置值“2”相匹配,则第一控制器312可以操作为命令的副本存储设备。例如,如果模运算的余数与第三设置值“2”相匹配,则第一控制器312可以处理命令(操作S126、操作S226和操作S331),并且可以向主存储设备发送确认信号(操作S130、操作S235和操作S340)。
根据本发明构思的至少一个示例实施例,存储在第一控制器312、第二控制器322和第三控制器332中的每一个中的设置值可以是固定值。根据本发明构思的至少另一个示例实施例,可以动态改变设置值。例如,可以改变存储在第一控制器312、第二控制器322和第三控制器332的每一个中的设置值,以调整第一控制器312、第二控制器322和第三控制器332的负载平衡。
图7是示出了根据本发明构思的至少一些示例实施例的、针对根据控制器的设置值的改变的数据、主设备的改变的视图。将参考图5、图6和表1来描述图7。在图7的左侧,针对模3运算的余数是“0”的数据,第一存储设备310可以操作为主存储设备;针对模3运算的余数是“1”的数据,第二储设备320可以操作为主存储设备;针对模3运算的余数是“2”的数据,第三存储设备330可以操作为主存储设备。
之后,在由于第一存储设备310的负载增加而减少第一存储设备310的负载的情况下,第一控制器312、第二控制器322和第三控制器332可以彼此通信以改变模运算的方式。例如,第一控制器312、第二控制器322和第三控制器332中的每一个可以执行模5操作。如果模5运算的余数是“0”,则第一存储设备310可以操作为主存储设备;如果模5运算的余数是“1”或“3”,则第二存储设备320可以操作为主存储设备;如果模5运算的余数是“2”或“4”,则第三存储设备330可以操作为主存储设备。
参考图7的右侧,随着主存储设备与数据的映射关系被更新,第一存储设备310的负载可以减小。也就是说,第一控制器312、第二控制器322和第三控制器332可以彼此通信以改变设置值、模运算的方式等。主机100可以不参与这样的改变处理。
图8是示出了当作为第一至第三存储设备的副本存储设备操作的第二存储设备的操作出现故障时,确定新的副本存储设备的过程的流程图。将参考图5来描述图8。
在操作S410、操作S420和操作S430中,第一控制器312、第二控制器322和第三控制器332可以彼此交换查询信号和响应信号。如上所述,查询信号可以是用于确定任何其他存储设备的操作是否出现故障或者是否发生故障的信号,并且响应信号可以是从接收到查询信号的存储设备发送的作为响应的信号。可以由第一控制器312、第二控制器322和第三控制器332的故障识别模块228(参考图3)执行操作S410、操作S420和操作S430。
在操作S440中,第二存储设备320的操作可能由于任何其他原因而出现故障。例如,第二存储设备320的操作可能由于各种原因(例如,与任何其他存储设备冲突、外部碰撞、不稳定的电力、寿命等)而出现故障。在这种情况下,第二存储设备320可能不会对第一控制器312和第三控制器332的查询信号生成响应信号。因此,响应于无法从第二存储设备320接收响应于从第一控制器312和第三控制器332发送的查询信号的响应信号,第一控制器312和第三控制器332可以确定第二存储没备320的操作已经出现故障。
在操作S450中,第一控制器312可以将第三存储设备330确定为新的副本存储设备,并且可以更新上述设置值。与图示不同,如果空闲存储设备的数量是2或更多,则第一控制器312可以将任何一个空闲存储设备确定为新的副本存储设备。例如,第一控制器312可以从两个或更多个空闲存储设备中,将负载相对较小的存储设备确定为新的副本存储设备。
图9是示出了在第一控制器将第三存储设备确定为新的副本存储设备之后,主机与存储设备之间的多播通信方法的流程图。将参考图5和图8来描述图9。在图9中,第二存储设备320的操作出现故障(参考操作S440)。
操作S505至操作S515与图5的操作S205至操作S215基本相同。然而,由于第二存储设备320的操作出现故障,因此在操作S515中,第二控制器322可能无法从提交队列SQ获取命令。
操作S520和操作S521与图5的操作S220和操作S221基本相同.第三存储设备330可以作为新的副本存储设备来执行操作S525和操作S526。操作S525和操作S526与图5的操作S225和操作S226基本相同。
在操作S440(参考图8)中,如果第一控制器312的故障识别模块228确定第二存储设备320的操作出现故障,则在操作S530,第一控制器312可以从获取了来自主机100的命令的第三存储设备330接收指示命令已被第三存储设备330处理的确认信号。之后,操作S535至操作S550与图5的操作S240至操作S255基本相同。
图10是示出了当作为第一至第三存储设备的主存储设备操作的第一存储设备的操作出现故障时,确定新的主存储设备的过程的流程图。将参考图5和图8来描述图10。
操作S610至操作S630与图8的操作S410至操作S430基本相同。在操作S640中,第一存储设备310的操作可能由于任何其他原因而出现故障。在这种情况下,第一存储设备310可能不会对第二控制器322和第三控制器332的查询信号生成响应信号。因此,第二控制器322和第三控制器332可以确定操作为主存储设备的第一存储设备310的操作出现故障。
在操作S650中,第二控制器322和第三控制器332可以将第二存储设备320和第三存储设备330中的任一个确定为新的主存储设备,并且可以更新上述设置值。例如,可以将第二存储设备320和第三存储设备330中负载相对较小的存储设备确定为新的主存储设备。可以将第二存储设备320和第三存储设备330中的另一个确定为新的副本存储设备。
图11是示出了在第二和第三控制器将第二存储设备确定为新的主存储设备之后,主机与存储设备之间的多播通信方法的流程图。将参考图5和图10来描述图11。在图11中,第一存储设备310的操作可能出现故障(参考操作S640),第二存储设备320可被第二控制器322和第三控制器332确定为新的主存储设备,并且第三存储设备330由此可以被确定为新的副本存储设备。
操作S705至操作S715与图5的操作S205至操作S215基本相同。然而,由于第一存储设备310的操作出现故障,因此在操作S715中,第一控制器312可能无法从提交队列SQ获取命令。
第二存储设备320可以作为新的主存储设备来执行操作S720和操作S721。操作S720和操作S721与图5的操作S220和操作S221基本相同。第三存储设备330可以作为新的副本存储设备来执行操作S725和操作S726。操作S725和操作S726可以与图5的操作S225和操作S226基本相同。
在操作S640(参考图10)中,如果第二控制器322的故障识别模块228确定第一存储设备310的操作出现故障,则在操作S730,第二控制器322可以从获取了来自主机100的命令的第三存储设备330接收指示命令已被第三存储设备330处理的确认信号。此外,如果第三控制器332的故障识别模块228确定第一存储设备310的操作出现故障,则第三控制器332可以向从主机100获取命令的第二存储设备320(之前的副本存储设备、当前的主存储设备)发送确认信号。之后,操作S735至操作S750可以与图5的操作S240至操作S255基本相同。
根据本发明构思的至少另一个示例实施例,可以将第三存储没备330确定为新的主存储设备,并且第二存储设备320可以在没有改变的情况下操作为副本存储设备。在这种情况下,第三控制器332可以执行操作S720和操作S721,并且第二控制器322可以执行操作S725和操作S726。
图12是示出了根据本发明构思的至少一些示例实施例的,根据多播通信协议从主机向存储设备发送向量命令的视图。参考图12,存储***400可以包括主机410以及第一存储设备420和第二存储设备430。主机410可以根据上述多播通信方法,向第一存储设备420和第二存储设备430发送向量命令。
向量命令可以是如图12所示的列表或一组命令。可以为每个命令分配逻辑块地址,并且可以由逻辑块地址指定存储器器件的存储器块。第一存储设备420和第二存储设备430可以分别根据图4至图11的多播通信方法,并行地获取主机生成的向量命令,并且可以处理向量命令。
图13是示出了根据本发明构思的至少一些示例实施例的存储***的框图。参考图13,存储***500可以包括主机510以及第一存储设备520和第二存储设备530。主机510可以包括第一对512、第二对514和第三对516。
第一对512可以由第一存储设备520和第二存储设备530访问。更具体地,第一存储设备520和第二存储设备530可以从第一对512的提交队列SQ获取命令,并且第一存储设备520和第二存储设备530的主存储设备可以将完成信息写入第一对512的完成队列CQ。第一存储设备520和第二存储设备530可以共享第一对512。第一存储设备520可以包括第一寄存器522,第二存储设备530可以包括第一寄存器532,使得主机510可以将第一对512的提交队列尾门铃分别写入第一寄存器522和第一寄存器532。
第二对514可以由第一存储设备520访问。第二对514可以是专用于第一存储设备520的队列。根据本发明构思的至少一些示例实施例,第二对514可以仅被第一存储设备520访问,而不被第二存储设备530访问。第一存储设备520可以包括第二寄存器524,使得主机510可以将第二对514的提交队列尾门铃写入第二寄存器524。
第三对516可以由第二存储设备530访问。第三对516可以是专用于第二存储设备530的队列。根据本发明构思的至少一些示例实施例,第三对516可以仅被第二存储设备530访问,而不被第一存储设备520访问。第二存储设备530可以包括第二寄存器534,使得主机510可以将第三对516的提交队列尾门铃写入第二寄存器534。
也就是说,主机510还可以包括针对第一存储设备520的专用队列(第二对514)和针对第二存储设备530的专用队列(第三对516)、以及针对第一存储设备520和第二存储设备530的共享队列(第一对512)。
图14是示出了根据本发明构思的至少另一个示例实施例的计算***的视图。参考图14,存储***600可以包括第一存储设备610至第四存储设备640。根据本发明构思的至少一些示例实施例,第一存储设备610至第四存储设备640可以根据多播通信协议彼此通信。也就是说,第一存储设备610至第四存储设备640中的每一个可以执行参考图1至图11描述的主机100的操作。这里,第一存储设备610至第四存储设备640可以被分离和实现,或者可以集成并实现在单个集成设备中。
第一存储设备610可以包括第一对612,第二存储设备620可以包括第二对622,第三存储设备630可以包括第三对632,并且第四存储设备640可以包括第四对642。如图13的第一对512那样,第一对612、第二对622、第三对632、第四对642可以由其他存储设备共享。第一对612可以由第二存储设备620至第四存储设备640共享,第二对622可以由第一存储设备610、第三存储设备630和第四存储设备640共享,第三对632可以由第一存储设备610、第二存储设备620和第四存储设备640共享,并且第四对642可以由第一存储设备610至第三存储设备630共享。
根据本发明构思的至少一些示例实施例的多播通信协议,第一存储设备610至第四存储设备640中的每一个可以仅包括用于与其他存储设备进行通信的一对提交队列和完成队列,而不是包括多对提交队列和完成队列,所述提交队列和完成队列的对的数量与其他存储设备的数量相同。例如,在“N”个存储设备彼此通信的情况下,传统P2P通信方法需要“N×(N-1)”对提交队列和完成队列。然而,根据本发明构思的至少一些示例实施例,仅需要“N”对提交队列和完成队列。
图15是示出了应用了根据本发明构思的至少一些示例实施例的多播通信方法的用户***的框图。参考图15,用户***700包括应用处理器710、存储器模块720、网络模块730、存储设备740和用户接口750。
应用处理器710可以驱动包括在用户***700中的组件和操作***。根据本发明构思的至少一个示例实施例,应用处理器710可以包括控制器,以控制用户***700的组件、接口、图形引擎等。应用处理器710可以用SoC来实现。应用处理器710可以指图1的主机11、图2的主机100以及图4至6和图8至13中描述的主机。
存储模块720可以操作为用户***700的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块720可以包括诸如DDR4SDRAM、LPDDR4SDRAM、GDDR5SDRAM或HBM之类的高速存储器器件。
网络模块730可以与外部设备通信。例如,网络模块730可以支持诸如码分多址(CDMA)、全球移动通信***(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、Wimax、WLAN、UWB、蓝牙、WI-DI等的无线通信。可以在应用处理器710中包括网络模块730。
存储设备740可以存储数据。例如,存储设备740可以存储从应用处理器710接收的数据。备选地,存储设备740可以将其中存储的数据发送到应用处理器710。根据本发明构思的至少一个示例实施例,存储设备740可以指图1的第一存储设备12和第二存储设备15、图3的存储设备200、图4的第一存储设备310和第二存储设备320、图5的第一存储设备310至第三存储设备330、图12的第一存储设备420和第二存储设备430、图13的第一存储设备520和第二存储设备530、或图14的第一存储设备610至第四存储设备640。此外,存储设备740可以根据参考图1至图14描述的多播通信方法来操作。
用户接口750可以包括向应用处理器710输入数据或指令或者向外部设备输出数据的接口。根据本发明构思的至少一个示例实施例,用户接口750可以包括用户输入接口,例如键盘、键区、按钮、触摸板、触摸屏、触控垫、触摸球、相机、麦克风、陀螺仪传感器、振动传感器和压电传感器。用户接口750还可以包括用户输出接口,例如液晶显示器(LCD)、有机发光二极管(OLED)显示设备、有源矩阵OLED(AMOLED)显示设备、发光二极管(LED)、扬声器和电机。
根据本发明构思的至少一些示例实施例的多播通信方法可以减少由于传统P2P通信方法导致的延迟。
利用根据本发明构思的至少一些示例实施例的多播通信方法,主机可以通过使用一个提交队列和一个完成队列来访问存储设备。
利用根据本发明构思的至少一些示例实施例的多播通信方法,存储设备可以相互调整负载平衡。
利用根据本发明构思的至少一些示例实施例的多播通信方法,可以灵活地应对存储设备的中断或故障。
已经描述了本发明构思的示例实施例,显然这些实施例可以以许多方式变化。这样的变化不被认为是偏离本发明构思的示例实施例的预期精神和范围,并且对于本领域技术人员显而易见的是,所有这些修改旨在被包括在所附权利要求的范围内。
Claims (20)
1.一种存储设备,包括:
存储器器件;以及
控制器,所述控制器被配置为:
从主机获取命令,所述命令指示逻辑地址,
基于所述逻辑地址处理所述命令,以及
从第一副本存储设备接收确认信号,所述确认信号指示所述命令已由所述第一副本存储设备处理。
2.根据权利要求1所述的存储设备,其中,所述控制器还被配置为使得:响应于接收到所述确认信号,所述控制器向所述主机发送所述命令的完成信息。
3.根据权利要求2所述的存储设备,
其中,所述控制器包括:
第一寄存器;以及
第二寄存器,以及
其中,所述控制器被配置为:
将关于所述主机的提交队列的第一信息存储在所述第一寄存器中,
向所述第一副本存储设备发送所述第一信息,
将关于所述主机的完成队列的第二信息存储在所述第二寄存器中,以及
向所述第一副本存储设备发送所述第二信息。
4.根据权利要求1所述的存储设备,其中,所述控制器还被配置为通过以下操作来确定所述第一副本存储设备是否已经停止操作:
向所述第一副本存储设备发送查询信号,以及
由所述控制器确定是否从所述第一副本存储设备接收到响应于所述查询信号的响应信号。
5.根据权利要求4所述的存储设备,其中,所述控制器还被配置为使得:响应于确定所述第一副本存储设备已经停止操作,所述控制器将不是所述第一副本存储设备的第二副本存储设备确定为新的副本存储设备。
6.根据权利要求4所述的存储设备,
其中,所述控制器还被配置为根据以下协议中的至少一种协议与所述第一副本存储设备进行通信:通用串行总线“USB”协议、小型计算机***接口“SCSI”协议、PCI express协议、NVM express“NVMe”协议、ATA协议、并行ATA“PATA”协议、串行ATA“SATA”协议和串行连接SCSI“SAS”协议,以及
其中,所述控制器被配置为使得所述控制器基于所述至少一种协议来执行所述查询信号的发送以及接收所述响应信号。
7.根据权利要求1所述的存储设备,其中,所述控制器还被配置为使得:
所述控制器对所述逻辑地址执行模运算,
响应于所述模运算的余数具有第一值,所述控制器执行对所述命令的处理以及所述确认信号的接收。
8.根据权利要求7所述的存储设备,其中所述控制器还被配置为:与所述第一副本存储设备进行通信并改变所述第一值。
9.一种存储设备,包括:
存储器器件;以及
控制器,所述控制器被配置为:
从主机获取命令,所述命令指示逻辑地址;
基于所述逻辑地址处理所述命令;以及
向主存储设备发送指示所述命令已被处理的确认信号。
10.根据权利要求9所述的存储设备,
其中,所述控制器包括:
第一寄存器;以及
第二寄存器,以及
其中,所述控制器被配置为:
将关于所述主机的提交队列的第一信息存储在所述第一寄存器中,
基于从所述主机和所述主存储设备中的至少一个接收到的信息来更新所述第一信息,
将关于所述主机的完成队列的第二信息存储在所述第二寄存器中,以及
基于从所述主机和所述主存储设备中的至少一个接收到的信息来更新所述第二信息。
11.根据权利要求9所述的存储设备,其中,所述控制器还被配置为通过以下操作来确定所述主存储设备是否已经停止操作:
向所述主存储设备发送查询信号,以及
由所述控制器确定是否从所述主存储设备接收到响应于所述查询信号的响应信号。
12.根据权利要求11所述的存储设备,其中,所述存储设备是第一副本存储设备,并且所述控制器还被配置为使得:响应于确定所述主存储设备已经停止操作,所述控制器将第二副本存储设备确定为新的主存储设备。
13.根据权利要求11所述的存储设备,其中,所述存储设备是第一副本存储设备,并且所述控制器还被配置为使得:响应于确定所述主存储设备已经停止操作,
所述控制器将所述第一副本存储设备确定为新的主存储设备,以及
响应于从第二副本存储设备接收到确认信号,所述控制器向所述主机发送完成信息,所述完成信息指示对从所述主机获取的命令的处理已经由所述新的主存储设备和所述第二副本存储设备完成。
14.根据权利要求9所述的存储设备,其中,所述控制器还被配置为使得:
所述控制器对所述逻辑地址执行模运算,
响应于所述模运算的余数具有第一值,所述控制器执行对所述命令的处理以及所述确认信号的发送。
15.根据权利要求14所述的存储设备,其中,所述控制器还被配置为:与所述主存储设备进行通信并改变所述第一值。
16.一种与第一存储设备和第二存储设备相连的主机的通信方法,所述方法包括:
生成用于控制所述第一存储设备和所述第二存储设备的命令;
通过更新所述第一存储设备的至少一个寄存器来使所述第一存储设备和所述第二存储设备获取所述命令;以及
当所述命令在所述第二存储设备中被处理并且所述第二存储设备向所述第一存储设备发送指示所述命令已被处理的确认信号时,从所述第一存储设备接收所述命令的完成信息。
17.根据权利要求16所述的方法,还包括:
当更新所述第一存储设备的寄存器时,由所述主机更新所述第二存储设备的寄存器。
18.根据权利要求16所述的方法,其中,当所述主机更新所述第一存储设备的寄存器时,由所述第一存储设备更新所述第二存储设备的寄存器。
19.根据权利要求16所述的方法,其中,所述主机包括被配置为存储所述命令的提交队列和被配置为存储所述完成信息的完成队列,以及
其中,包括所述提交队列和所述完成队列的对由所述第一存储设备和所述第二存储设备共享。
20.根据权利要求16所述的方法,还包括:
当所述第一存储设备停止操作时,从所述第二存储设备接收所述命令的完成信息,
其中,所述从所述第二存储设备接收所述命令的完成信息包括:
在所述第二存储设备处向所述第一存储设备发送用于确定所述第一存储设备是否已经停止操作的信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0121411 | 2017-09-20 | ||
KR1020170121411A KR102340287B1 (ko) | 2017-09-20 | 2017-09-20 | 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522250A true CN109522250A (zh) | 2019-03-26 |
CN109522250B CN109522250B (zh) | 2023-03-21 |
Family
ID=65719337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810893708.2A Active CN109522250B (zh) | 2017-09-20 | 2018-08-07 | 根据多播通信协议与主机通信的存储设备和主机通信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10572402B2 (zh) |
KR (1) | KR102340287B1 (zh) |
CN (1) | CN109522250B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442628B2 (en) * | 2018-07-31 | 2022-09-13 | SK Hynix Inc. | Apparatus and method for engaging a plurality of memory systems with each other |
US11157207B2 (en) | 2018-07-31 | 2021-10-26 | SK Hynix Inc. | Apparatus and method for engaging plural memory system with each other to store data |
US11249919B2 (en) | 2018-07-31 | 2022-02-15 | SK Hynix Inc. | Apparatus and method for managing meta data for engagement of plural memory system to store data |
US10901733B1 (en) * | 2019-07-01 | 2021-01-26 | Western Digital Technologies, Inc. | Open channel vector command execution |
US20220345414A1 (en) * | 2019-08-30 | 2022-10-27 | Unitex Corporation | Interface Conversion Device |
US11514194B2 (en) * | 2019-12-19 | 2022-11-29 | Advanced Micro Devices, Inc. | Secure and power efficient audio data processing |
KR20220048303A (ko) * | 2020-10-12 | 2022-04-19 | 삼성전자주식회사 | 크레딧을 이용하는 호스트 장치와 스토리지 장치의 동작 방법 |
US11907587B2 (en) | 2021-06-09 | 2024-02-20 | Western Digital Technologies, Inc. | Managing persistent memory regions across multiple protocols |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083281A1 (en) * | 2000-12-22 | 2002-06-27 | Bull Hn Information Systems Inc. | Write logging in mirrored disk subsystems |
CN1722706A (zh) * | 2004-06-21 | 2006-01-18 | 日立通讯技术株式会社 | 多播信息包传送装置 |
CN101222414A (zh) * | 2007-01-11 | 2008-07-16 | 华为技术有限公司 | 实现组播通信的装置、***和方法 |
WO2013048451A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Presentation of direct accessed storage under a logical drive model |
US20170075834A1 (en) * | 2015-09-14 | 2017-03-16 | Hyunseok Cha | Storage device and interrupt generation method thereof |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004139260A (ja) | 2002-10-16 | 2004-05-13 | Hitachi Ltd | マルチプロセッサによるコマンド処理方式 |
KR100857761B1 (ko) | 2007-06-14 | 2008-09-10 | 삼성전자주식회사 | 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 |
US8627015B2 (en) | 2009-07-31 | 2014-01-07 | Emc Corporation | Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers |
US8909864B2 (en) | 2011-09-30 | 2014-12-09 | Hewlett-Packard Development Company, L.P. | Multicast write commands |
US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
US9170755B2 (en) | 2013-05-21 | 2015-10-27 | Sandisk Technologies Inc. | Command and data selection in storage controller systems |
KR102330391B1 (ko) | 2014-09-11 | 2021-11-24 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법 |
US9990159B2 (en) | 2015-06-26 | 2018-06-05 | Xitore, Inc. | Apparatus, system, and method of look-ahead address scheduling and autonomous broadcasting operation to non-volatile storage memory |
-
2017
- 2017-09-20 KR KR1020170121411A patent/KR102340287B1/ko active IP Right Grant
-
2018
- 2018-04-27 US US15/964,737 patent/US10572402B2/en active Active
- 2018-08-07 CN CN201810893708.2A patent/CN109522250B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083281A1 (en) * | 2000-12-22 | 2002-06-27 | Bull Hn Information Systems Inc. | Write logging in mirrored disk subsystems |
CN1722706A (zh) * | 2004-06-21 | 2006-01-18 | 日立通讯技术株式会社 | 多播信息包传送装置 |
CN101222414A (zh) * | 2007-01-11 | 2008-07-16 | 华为技术有限公司 | 实现组播通信的装置、***和方法 |
WO2013048451A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Presentation of direct accessed storage under a logical drive model |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
US20170075834A1 (en) * | 2015-09-14 | 2017-03-16 | Hyunseok Cha | Storage device and interrupt generation method thereof |
Non-Patent Citations (1)
Title |
---|
张营建等: "控制软件中设备无关性的设计与实现", 《东华大学学报(自然科学版)》 * |
Also Published As
Publication number | Publication date |
---|---|
KR20190033122A (ko) | 2019-03-29 |
US10572402B2 (en) | 2020-02-25 |
CN109522250B (zh) | 2023-03-21 |
KR102340287B1 (ko) | 2021-12-20 |
US20190087362A1 (en) | 2019-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522250A (zh) | 根据多播通信协议与主机通信的存储设备和主机通信方法 | |
CN107015929B (zh) | 在储存设备中传送请求的方法和在主机中发布命令的方法 | |
US20150019798A1 (en) | Method and Apparatus for Providing Dual Memory Access to Non-Volatile Memory | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN110032332A (zh) | 存储设备和包括存储设备的电子设备 | |
JP6021759B2 (ja) | メモリシステムおよび情報処理装置 | |
TWI459201B (zh) | Information processing device | |
US20130073812A1 (en) | Cache memory device, processor, and information processing apparatus | |
US10613985B2 (en) | Buffer management in a data storage device wherein a bit indicating whether data is in cache is reset after updating forward table with physical address of non-volatile memory and jettisoning the data from the cache | |
US11513971B2 (en) | Address mapping method and operation method of storage device | |
CN106716395B (zh) | 事务处理的方法、装置及计算机*** | |
TWI804021B (zh) | 記憶體系統及資訊處理系統 | |
TW201324154A (zh) | 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法 | |
CN109213441A (zh) | 能够管理工作而无需处理器干预的存储装置 | |
US11372779B2 (en) | Memory controller and memory page management method | |
US10387304B2 (en) | Virtual transfer of data between memory and storage domains | |
US11662952B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
CN109871182A (zh) | 存储装置及其操作方法及发出命令的方法 | |
JP2014049091A (ja) | 情報処理装置 | |
US11762597B2 (en) | Memory system and control method controlling nonvolatile memory in accordance with command issued by processor | |
CN108885661A (zh) | 时变地址空间布局随机化 | |
US11494318B2 (en) | Controller and operation method thereof | |
US11789858B2 (en) | Method and system for performing read/write operation within a computing system hosting non-volatile memory | |
US20220229789A1 (en) | Host Memory Buffer (HMB) Abstraction Protocol Layer | |
CN111290975A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |