CN114442922A - 存储系统、存储装置及其操作方法 - Google Patents

存储系统、存储装置及其操作方法 Download PDF

Info

Publication number
CN114442922A
CN114442922A CN202111286406.7A CN202111286406A CN114442922A CN 114442922 A CN114442922 A CN 114442922A CN 202111286406 A CN202111286406 A CN 202111286406A CN 114442922 A CN114442922 A CN 114442922A
Authority
CN
China
Prior art keywords
port
host
command
storage
queue
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
CN202111286406.7A
Other languages
English (en)
Inventor
李钟沅
朴璋旭
房官厚
裵浚桓
郑明俊
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN114442922A publication Critical patent/CN114442922A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1625Error detection by comparing the output signals of redundant hardware in communications, e.g. transmission, interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0653Monitoring storage devices or systems
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

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)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

提供了存储系统、存储装置及其操作方法。存储系统包括:主机,包括存储多个命令的主机队列;以及存储装置,包括存储队列,存储队列通过第一端口或第二端口与主机交换命令并存储所交换的命令,其中,存储装置被配置为:当通过第一端口的通信中发生通信错误时,通过第二端口将关于在错误发生之前存储在存储队列中的命令的信息传送到主机。

Description

存储系统、存储装置及其操作方法
于2020年11月5日在韩国知识产权局提交的名称为“存储系统及其操作方法”的第10-2020-0147082号韩国专利申请的全部内容通过引用包含于此。
技术领域
实施例涉及存储系统,并且更具体地,涉及包括主机和存储装置的存储系统。
背景技术
基于闪存的大容量存储装置的示例是固态驱动器(在下文中,SSD)。随着对SSD的需求的爆发性增加,它们的用途正在多样化。
发明内容
实施例涉及一种存储装置,所述存储装置包括:网络接口,包括多个端口,所述多个端口被配置为与主机进行通信,所述多个端口包括第一端口和第二端口;以及存储控制器,包括存储提交队列和存储完成队列。存储提交队列可被配置为存储从主机接收的命令之中的待处理命令。存储完成队列可被配置为:存储处理后的命令,将通过第一端口从主机接收的第一命令存储在存储提交队列中,并且在发生通过第一端口的通信错误时,通过第二端口将第一命令的标识符信息传送到主机。存储控制器可被配置为:在错误发生时通过第二端口从主机接收第二命令的标识符信息,并且通过第二端口将在错误发生之前存储在存储完成队列中的处理后的命令之中的比第二命令晚处理的第三命令的标识符信息传送到主机。
实施例还涉及一种存储装置的操作方法,所述存储装置通过所述存储装置的网络接口中包括的多个端口与主机进行通信,所述操作方法包括:通过所述多个端口之中的第一端口与主机交换命令或命令的标识符信息;响应于发生通过第一端口的通信错误,通过所述多个端口之中的第二端口将在错误发生之前从主机接收的第一命令的第一标识符信息提供给主机;以及通过第二端口从主机接收在错误发生之前提供给主机的第二命令的第二标识符信息。
实施例还涉及一种存储系统,所述存储系统包括:主机,包括主机队列,主机队列被配置为存储多个命令;以及存储装置,包括存储队列,存储队列被配置为:通过第一端口或第二端口与主机交换命令,并且存储所交换的命令。存储装置可被配置为:在发生通过第一端口的通信错误时,通过第二端口将关于在错误发生之前存储在存储队列中的命令的信息传送到主机。
附图说明
通过参照附图详细描述示例实施例,特征对于本领域技术人员将变得清楚,在附图中:
图1是示出根据示例实施例的存储系统的示图;
图2是示出命令队列的入队过程和出队过程的示图;
图3是示出根据示例实施例的存储系统的示例的框图;
图4是示出根据示例实施例的存储系统的示图;
图5是示出根据示例实施例的网络接口(NIF)优先级表的示图;
图6是示出根据示例实施例的存储装置的示图;
图7是示出根据示例实施例的队列映射表的示图;
图8是示出根据示例实施例的存储系统的操作方法的示图;
图9是示出根据示例实施例的存储系统的操作方法的示图;
图10是示出根据示例实施例的NIF交换操作的示图;
图11是示出根据示例实施例的NIF交换操作的示图;
图12是示出根据示例实施例的存储系统的操作方法的示图;
图13是示出根据示例实施例的当发生错误时关于命令的信息被存储在存储系统中的状态的示图;
图14是示出根据示例实施例的封装体的结构的示图;
图15是示出根据示例实施例的存储网络接口的示例的示图;以及
图16是示出根据示例实施例的应用了存储装置的数据中心的示图。
具体实施方式
在下文中,将参照附图描述示例实施例。
图1是示出根据示例实施例的存储系统10的示图。
参照图1,存储系统10可包括主机100、网络300和存储装置200。主机100和存储装置200可通过网络300交换封装体(capsule)。封装体可以是数据和/或命令的传输单元。封装体可被称为数据包(packet)、帧、消息等。由主机100发送的封装体可被称为命令封装体。由存储装置200发送的封装体可被称为响应封装体。网络300可以是诸如光纤通道、以太网或无限带宽的网络结构。
主机100和存储装置200可各自包括将连接到网络300的至少一个网络接口(NIF)。网络接口可被称为网络接口卡、网络接口控制器、LAN卡、以太网适配器、以太网卡等。
主机100可包括主机网络接口115(h_NIF)和主机控制器110。存储装置200可包括存储网络接口(s_NIF)230、存储控制器210以及多个存储器装置221、222和223(分别为MD#1、MD#2和MD#3)。存储网络接口230可包括多个端口(例如,第一端口231(端口1)和第二端口232(端口2))。多个端口231和232中的每个端口可连接到网络300。
主机网络接口115可通过网络300向存储装置200提供封装体或从存储装置200接收封装体。封装体可包括存储装置200中包括的端口231和232的标识符信息。网络300可将封装体传送到与标识符信息相应的端口。
主机控制器110可生成多个命令。命令可以是写入命令、读取命令或擦除命令,但不限于此。
主机控制器110可包括存储命令的一对队列hSQ和hCQ,即,主机提交队列hSQ和主机完成队列hCQ。在此,主机提交队列hSQ和主机完成队列hCQ也可统称为主机队列。
主机控制器110可将所生成的命令存储在主机提交队列hSQ中。主机控制器110可将存储在主机提交队列hSQ中的命令顺序地提供给存储装置200。命令可以以封装体的形式被提供给存储装置200。存储装置200可顺序地处理接收到的命令,并且将关于处理后的命令的信息提供给主机100。关于命令的信息可以是命令的标识符信息。主机控制器110可将与接收到的标识符信息相应的命令存储在主机完成队列hCQ中。主机控制器110可从主机提交队列hSQ移除与接收到的标识符信息相应的命令。
存储网络接口230可通过多个端口231和232中的每个端口向主机100提供封装体或从主机100接收封装体。为了便于解释,稍后可描述存储控制器210首先连接到第一端口231,并且当在第一端口231中发生错误时,存储控制器210连接到第二端口232。封装体可包括包含在主机100中的主机网络接口115的标识符信息。网络300可参考标识符信息将封装体传送到主机网络接口115。
存储控制器210可包括存储命令的一对队列sSQ和sCQ,即,存储提交队列sSQ和存储完成队列sCQ。存储提交队列sSQ和存储完成队列sCQ可统称为存储队列。
存储控制器210可将通过第一端口231从主机100接收的命令顺序地存储在存储提交队列sSQ中。存储控制器210可通过经由总线220将存储在存储提交队列sSQ中的命令提供给存储器装置221、222和223来处理命令。当存储在存储提交队列sSQ中的命令被处理时,存储控制器210可将处理后的命令存储在存储完成队列sCQ中。存储控制器210可从存储提交队列sSQ移除处理后的命令。存储控制器210可向主机100提供关于存储在存储完成队列sCQ中的命令(即,处理后的命令)的信息。关于处理后的命令的信息可以是处理后的命令的标识符信息。
当在第一端口231中发生错误时,存储控制器210可连接到第二端口232。当在第一端口231中发生错误时,由主机100发送的封装体和由存储装置200发送的封装体可能丢失。因此,在错误发生之前由主机100发送的命令可能不会到达存储装置200或存储控制器210。然而,主机100可能无法识别丢失的命令,并且可能通过第二端口232将与丢失的命令不同的命令发送到存储装置200。也就是说,因为即使在错误发生之后丢失的命令也不会被处理,所以存储系统10的可靠性可能劣化。同时,由于错误,由存储装置200发送的处理后的命令的标识符信息可能无法到达主机控制器110。然而,存储装置200可能无法识别丢失的标识符信息,并且可能通过第二端口232将与丢失的标识符信息不同的标识符信息发送到主机100。也就是说,因为即使在错误发生之后丢失的标识符信息也不会被发送到主机100,所以主机100可确定与丢失的标识符信息相应的命令尚未被处理。也就是说,存储系统10的可靠性可能由于错误而劣化。
在根据本示例实施例的存储系统10中,当在第一端口231中发生错误时,主机100和存储装置200可通过第二端口232交换关于在错误发生之前接收到的命令的信息。具体地,存储装置200可将在错误发生之前从主机100接收的命令的标识符信息发送到主机100。基于接收到的标识符信息,主机100可检查在错误发生之前由存储装置200接收到的命令,并且发送存储在主机提交队列hSQ中的命令之中的除检查到的命令之外的命令。所发送的命令可以是由于错误而丢失的命令。因此,因为存储在主机提交队列hSQ中的命令可被顺序地处理而没有丢失,所以可提高存储系统10的可靠性。此外,主机100可将在错误发生之前从存储装置200接收的命令的标识符信息发送到存储装置200。存储装置200可基于接收到的标识符信息检查在错误发生之前由主机100接收到的命令的标识符信息,并且将存储在存储完成队列sCQ中的命令之中的除了与检查到的标识符信息相应的命令之外的命令的标识符信息发送到主机100。所发送的标识符信息可以是由于错误而丢失的标识符信息。因此,因为存储在存储完成队列sCQ中的命令的标识符信息可被顺序地发送到主机100而没有丢失,所以可提高存储系统10的可靠性。
存储控制器210可通过总线220连接到多个存储器装置221、222和223。总线220可包括外围组件互连快速(PCIe)、小型计算机系统接口(SCSI)、串行高级技术附件(SATA)或集成驱动电子设备(IDE)中的一个,但不限于此。
存储器装置221、222和223中的每个存储器装置可执行与从存储控制器210接收的命令相应的操作。存储器装置221、222和223中的每个存储器装置可在执行操作之后向存储控制器210提供操作完成信息。处理后的命令可被从存储提交队列sSQ移除并被存储在存储完成队列sCQ中。多个存储器装置221、222和223中的每个存储器装置可包括闪存、相变随机存取存储器(PRAM)、电阻式随机存取存储器(ReRAM)、动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)中的至少一者。
图2是示出命令队列400的入队过程和出队过程的示图。
参照图2,命令队列400可包括多个时隙(slot)。一个命令可被存储在一个时隙中。命令队列400可存储第一命令(CMD1)、第二命令(CMD2)和第三命令(CMD3)。命令队列400可以是上面参照图1描述的主机提交队列hSQ、主机完成队列hCQ、存储提交队列sSQ或存储完成队列sCQ。
第一命令至第三命令(CMD1、CMD2和CMD3)可顺序地存储在命令队列400中。头指针可指向最早存储在命令队列400中的命令的时隙地址。尾指针可指向与最晚存储在命令队列400中的命令的时隙相邻的时隙地址。
在新命令被存储在命令队列400中的入队过程期间,尾指针可改变。具体地,当第四命令(CMD4)入队在命令队列400中时,尾指针可指向下一个时隙地址。
在存储在命令队列400中的命令被移除的出队过程期间,头指针可改变。具体地,当第一命令(CMD1)在命令队列400中出队时,头指针可指示下一个时隙地址,即,存储第二命令(CMD2)的时隙的地址。
如图2中所示,命令队列可以是FIFO类型,在FIFO类型中,首先入队的命令首先出队。因此,当通过标识符信息识别命令时,可指定比所识别的命令早或晚存储的命令。
根据图1的根据示例实施例的存储系统10,主机100可从存储装置200接收在错误发生之前发送到存储装置200的命令的标识符信息,并且基于相应的标识符信息确定将被发送到存储装置200的命令。此外,存储装置200可从主机100接收在错误发生之前发送到主机100的命令的标识符信息,并且基于标识符信息确定将被发送到主机100的标识符信息。
图3是示出根据示例实施例的存储系统10a的示例的框图。
参照图3,存储系统10a可包括主机100a、存储装置200a和网络300a。
主机100a可以是图1的主机100的示例。主机100a可包括主机网络接口110a、封装模块(encapsulation module)120a、解封装模块(decapsulation module)130a、主机存储器140a、输入/输出接口150a和主机缓冲器160a。
主机网络接口110a可与网络300a进行通信。例如,主机网络接口110a可提供网络结构(诸如,光纤通道、以太网或无限带宽)与主机100a之间的接口。主机网络接口110a可包括将被连接到网络300a的端口。
封装模块120a可生成将通过存储接口110a传送到网络300a的封装体。封装体可以是在主机100a与存储装置200a之间交换的数据的传输单元,并且可包括命令、命令的标识符信息、数据等。封装模块120a可生成包括存储在主机队列中的命令或命令的标识符信息的封装体,并且将封装体发送到存储接口110a。
解封装模块130a可对通过存储接口110a从网络300a接收的封装体执行解封装。解封装模块130a可对从存储装置200a发送的封装体执行解封装(或拆封装,deencapsulation),并获得由存储装置200a处理的命令的标识符信息。
主机存储器140a可包括主机提交队列hSQ和主机完成队列hCQ。
封装模块120a可访问主机存储器140a以获得主机提交队列hSQ中包括的命令或命令的标识符信息,并且可使用所获得的命令或标识符信息来生成封装体。
解封装模块130a可通过对经由网络300a接收的封装体进行解封装来获得标识符信息。解封装模块130a可将与所获得的标识符信息相应的命令入队到主机完成队列hCQ中,并将该命令从主机提交队列hSQ出队。
输入/输出接口150a可与外部装置进行通信。输入/输出接口150a可以是通用串行总线(USB)、高清多媒体接口(HDMI)、移动高清链路(MHL)、雷电接口(Thunderbolt)和音频接口中的至少一个。
主机缓冲器160a可包括临时存储由主机网络接口110a接收的封装体的接收缓冲器(未示出)和临时存储通过主机网络接口110a发送的封装体的发送缓冲器(未示出)。存储在主机提交队列hSQ中的命令可被封装并且顺序地发送到发送缓冲器,并且存储在接收缓冲器中的封装体可被解封装然后顺序地发送到主机完成队列hCQ。
存储装置200a可以是图1的存储装置200的示例。存储装置200a可包括存储网络接口210a、封装模块220a、解封装模块230a、存储存储器(storage memory)240a、存储器装置250a和存储缓冲器260a。
存储网络接口210a可与网络300a进行通信。例如,存储网络接口210a可提供网络结构(诸如,光纤通道、以太网或无限带宽)与存储装置200a之间的接口。存储网络接口210a可包括将被连接到网络300a的端口(例如,多个端口)。
封装模块220a可生成将通过存储网络接口210a发送到网络300a的封装体。封装模块220a可生成包括存储在存储完成队列sCQ中的命令的标识符信息的封装体,并将封装体发送到存储网络接口210a。
解封装模块230a可对通过存储网络接口210a从网络300a接收的封装体执行解封装。解封装模块230a可对从主机100a发送的封装体执行解封装,并且可获得命令或命令的标识符信息。
存储存储器240a可包括存储提交队列sSQ和存储完成队列sCQ。封装模块220a可通过访问存储存储器240a来获得存储完成队列sCQ包括中的命令的标识符信息,并使用所获得的标识符信息来生成封装体。解封装模块230a可将通过解封装获得的命令入队到存储提交队列sSQ中。
存储存储器240a可包括端口优先级表241a和队列映射表242a。端口优先级表241a可以是存储多个端口的优先级的表。因此,当任何一个端口中发生错误时,存储装置200a可通过参考端口优先级表241a来确定将连接到网络300a的端口。下面参照图4和图5详细描述端口优先级表241a。队列映射表242a可以是存储多个端口与多个队列对之间的映射关系的表。下面参照图6和图7详细描述队列映射表242a。
存储器装置250a可被设置为多个,并且可以是图1的多个存储器装置221、222和223的示例,因此,将省略其描述。
存储缓冲器260a可包括临时存储由存储网络接口210a接收的封装体的接收缓冲器(未示出)和临时存储通过存储网络接口210a发送的封装体的发送缓冲器(未示出)。可将存储在接收缓冲器中的封装体中包括的命令顺序地发送到存储提交队列sSQ,并且可将存储在存储完成队列sCQ中的命令的标识符信息顺序地发送到发送缓冲器。
图4是示出根据示例实施例的存储系统10b的示图。图5是示出根据示例实施例的端口优先级表241a的示图。
参照图4,存储系统10b可包括多个主机411、412和413以及存储装置430。
存储装置430可包括多个端口431、432和433。多个端口431、432和433可被包括在相同的网络接口或不同的网络接口中。存储控制器434可被连接到多个端口431、432和433中的一个端口,从而与网络420进行通信。
在一个示例实施例中,存储控制器434可首先连接到第一端口431。当在通过第一端口431的通信中发生错误时,存储控制器434可基于多个端口431、432和433的优先级连接到另一端口。在一个示例实施例中,存储控制器434可通过参考端口优先级表241a来连接到另一端口。可基于通过端口的通信速度、错误率、安全性等预先确定多个端口431、432和433之间的优先级。
参照图5,端口优先级表241a可存储多个端口(端口1、端口2和端口3)的优先级。优先级可基于通过端口的通信速度、错误率、安全性等被预先确定。存储控制器434可首先连接到第一端口(端口1),并且可通过第一端口(端口1)与网络420进行通信。当在通过第一端口(端口1)的通信中发生错误时,存储控制器434可通过参考端口优先级表241a来连接到具有下一优先级的第三端口(端口3)。
在另一示例实施例中,存储控制器434可基于关于多个端口中的每个端口的流量来确定将连接到的端口。例如,存储控制器434可确定与各个端口通信的主机的数量,并基于主机的数量来预测流量。封装体可包括主机的标识信息。因此,存储控制器434可通过经由端口接收的标识符信息来确定与端口通信的主机的数量。
再次参照图4,存储装置430可包括多个存储器控制器435、436和437。存储器控制器435、436和437可分别包括在图1的存储器装置221、222和223中。存储控制器434可将接收到的命令提供给多个存储器控制器435、436和437中的至少一个存储器控制器。存储器控制器435、436和437可控制将在存储器装置中包括的存储空间中执行的与接收到的命令相应的操作。
图6是示出根据示例实施例的存储装置630的示图。图7是示出根据示例实施例的队列映射表242a的示图。
参照图6,存储装置630可包括第一端口631和第二端口632、存储控制器633和队列映射表242a。
存储装置630可通过第一端口631或第二端口632连接到网络620。第一端口631和第二端口632可被包括在相同的网络接口或不同的网络接口中。
存储控制器633可包括多个队列对634、635和636。多个队列对634、635和636中的每个队列对可被映射到第一端口631或第二端口632中的一个,并且映射关系可被存储在队列映射表242a中。
多个队列对634、635和636可分别向多个存储器控制器637、638和639提供命令。存储器控制器637、638和639可控制相应的存储器装置,使得与所提供的命令相应的操作被执行。
参照图7,队列映射表242a可存储多个端口与多个队列对之间的映射关系。例如,队列映射表242a可存储第一端口(端口1)、第二端口(端口2)、第一队列对(队列对1)、第二队列对(队列对2)和第三队列对(队列对3)之间的映射关系。例如,第一端口(端口1)可被映射到第一队列对(队列对1),并且第二端口(端口2)可被映射到第二队列对(队列对2)以及第三队列对(队列对3)。
当在通过第一端口(端口1)的通信中发生错误时,存储控制器633可更新队列映射表242a,使得映射到第一端口(端口1)的队列对替代地映射到第二端口(端口2)。具体地,存储控制器633可更新队列映射表242a,使得第一队列对(队列对1)被映射到第二端口(端口2)。
由端口接收的封装体可包括队列标识符信息。因此,即使映射了一个端口和多个队列对,存储控制器633也可将由端口接收的命令发送到与标识符信息相应的队列对。
图8是示出根据示例实施例的存储系统的操作方法的示图。
参照图8,在根据本示例实施例的存储系统的操作方法中,在操作S810,可建立主机与存储装置之间的连接。主机可(使用例如存储装置的标识符信息、存储网络接口中包括的端口的标识符信息和存储队列的标识符信息中的至少一个)发现存储装置并建立与找到的存储装置的连接。存储装置可(使用例如主机的标识符信息、主机网络接口的标识符信息和主机队列的标识符信息中的至少一个)发现主机并建立与找到的主机的连接。例如,可通过在主机与存储装置之间交换标识信息(诸如,IP地址、MAC地址和端口号)来建立连接。
在操作S820,可在主机与存储装置之间交换封装体。举例来说,主机可产生包括命令的命令封装体,并且通过网络将命令封装体发送到存储装置。存储装置可对接收到的命令进行处理,生成包括处理后的命令的标识符信息的响应封装体,并且通过网络将响应封装体发送到主机。
在操作S830,可改变与主机通信的存储装置的端口。例如,当在通过第一端口的通信中发生错误时,存储装置和主机可通过第二端口进行通信。如上面参照图3至图5详细描述的,存储装置可基于多个优先级来改变端口。在另一实施方式中,存储装置可基于流量来改变端口。
在操作S840,主机和存储装置可交换关于命令的信息。例如,主机和存储装置中的每个可交换关于在错误发生之前接收到的命令的信息。例如,主机可通过改变的端口将在错误发生之前从存储装置接收的命令的标识符信息发送到存储装置。此外,存储装置可通过端口将在错误发生之前从主机接收的命令的标识符信息发送到主机。主机可基于从存储装置接收的标识符信息来确定将通过改变的端口发送到存储装置的命令(例如,存储在主机队列中的命令之中的命令)。此外,存储装置可基于从主机接收的标识符信息来确定将通过改变的端口发送到主机的命令(例如,存储在存储队列中的命令之中的命令)。
图9是示出根据示例实施例的存储系统的操作方法的示图。
参照图9,根据本示例性实施例的存储系统的操作方法可包括连接建立操作、封装体交换操作、端口改变操作、CMD信息交换操作和封装体交换操作。
连接建立操作可包括操作S901和S902。在操作S901,主机可将连接命令发送到存储装置。连接命令可包括存储装置的标识符信息、存储装置中包括的网络接口的端口标识符信息和存储队列的标识符信息中的至少一个。在操作S902,接收连接命令的存储装置可将连接响应发送到主机。连接响应可包括主机的标识符信息、主机中包括的网络接口的标识符信息和主机队列的标识符信息中的至少一个。为了便于解释,尽管连接命令和连接响应被示出为将被发送一次,但是主机和存储装置之间的连接可以以诸如3次握手(3-wayhandshaking)或4次握手(4-way handshaking)的方法来建立。在连接建立操作之后,主机和存储装置可通过第一端口(端口1)进行通信。然而,因为主机可知道第二端口(端口2)的标识符信息,所以当在第一端口(端口1)中发生错误时,主机可通过第二端口(端口2)与存储装置进行通信。
封装体交换操作可包括操作S903和S904。在操作S903,主机可通过第一端口(端口1)将命令封装体发送到存储装置。命令封装体可包括命令、命令的标识符信息、主机的标识符信息、主机中包括的网络接口的标识符信息、主机队列的标识符信息、主机队列的头指针、主机队列的尾指针和数据中的至少一个。在操作S904,存储装置可通过第一端口(端口1)将响应封装体发送到主机。响应封装体可包括命令、命令的标识符信息、存储装置的标识符信息、存储装置中包括的网络接口的标识符信息、存储队列的标识符信息、存储队列的头指针、存储队列的尾指针和数据中的至少一个。
端口改变操作可包括操作S905至S907。在操作S905,存储装置可检测到通过第一端口(端口1)的通信中发生了通信错误。可通过监测第一端口(端口1)的电流或电压的监测电路来检测错误。在另一实施方式中,可基于通过第一端口(端口1)接收的封装体中包括的错误检查信息来检测错误。下面将参照图10和图11详细描述使用错误检查信息的错误检测。在操作S906,存储装置可通过第二端口(端口2)将错误发生信息发送到主机。错误发生信息可被包括在响应封装体中。在操作S907,主机可将目标存储网络接口从第一端口(端口1)改变为第二端口(端口2)。例如,主机可在封装体中包括第二端口(端口2)的标识符信息,并且封装体可通过参考标识符信息通过网络切换到达第二端口(端口2)。
在命令(CMD)信息交换操作中,主机和存储装置可通过第二端口(端口2)交换关于命令的信息。例如,主机可将存储在主机队列中的命令的标识符信息发送到存储装置,并且存储装置可将存储在存储队列中的命令的标识符信息发送到主机。下面参照图12至图15详细描述CMD信息交换操作。
在封装体交换操作中,主机和存储装置可交换封装体,该封装体包括关于基于在CMD信息交换操作中接收的标识符信息确定的命令的信息。下面参照图12至图15详细描述基于标识符信息确定命令的方法。
图10是示出根据示例实施例的端口交换操作的示图。
参照图10,在操作S1001,主机可通过第一端口(端口1)将包括错误检查信息的封装体发送到存储装置。当接收到错误检查信息时,存储装置可检查出通过第一端口(端口1)的通信是正常的。错误检查信息可被称为保活(keep-alive)信息。
在操作S1002,当错误检查信息到达存储装置的时间间隔超过参考时间时,存储装置可确定通过第一端口(端口1)的通信中发生了通信错误。参考时间也可被称为超时(timeout)。在检测到错误时,在操作S1003,存储装置可通过第二端口(端口2)将指示发生了通信错误的错误发生信息发送到主机。在操作S1004,主机可接收错误发生信息,并且可将目标端口从第一端口(端口1)改变为第二端口(端口2)。
图11是示出根据示例实施例的NIF交换操作的示图。
参照图11,在操作S1101,主机可通过第一端口(端口1)周期性地将包括错误检查信息的封装体发送到存储装置。存储装置可对接收到错误检查信息的次数进行计数。在操作S1102,存储装置可将计数的次数与最大值(MAX)进行比较,并且当计数的次数达到最大值时,可确定通过第一端口(端口1)的通信中发生了通信错误。当接收到错误检查信息的次数达到最大值时,在操作S1103,存储装置可通过第二端口(端口2)将指示发生了通信错误的错误发生信息发送到主机。在操作S1104,主机可接收错误发生信息,并且可将目标端口从第一端口(端口1)改变为第二端口(端口2)。
图12是示出根据示例实施例的存储系统的操作方法的示图。
参照图12,根据本示例实施例的存储系统的操作方法可包括多个操作S1201至S1207。
在操作S1201,主机控制器1210可顺序地生成第二命令(CMD2)、第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4),并且通过第一端口(端口1)将第二命令(CMD2)、第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4)顺序地发送到存储控制器1240。在操作S1201,可将所生成的第二命令(CMD2)、第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4)存储在主机提交队列1211中。可将第二命令(CMD2)、第三命令(CMD3)和第一命令(CMD1)传送到存储控制器1240中包括的存储提交队列sSQ,而由于将在下面描述的第一端口(端口1)的错误,第四命令(CMD4)不会被传送到存储控制器1240中包括的存储提交队列sSQ。
在操作S1202,存储控制器1240可对从主机控制器1210接收的第二命令(CMD2)、第三命令(CMD 3)和第一命令(CMD1)进行处理,并且通过第一端口(端口1)将对处理后的命令的响应顺序地发送到主机控制器1210。然而,如下面将描述的,由于错误,对第三命令(CMD3)的响应可能不会到达主机控制器1210。主机控制器1210可接收对第二命令(CMD2)的响应,将第二命令(CMD2)从主机提交队列hSQ出队,并将第二命令(CMD2)入队到主机完成队列hCQ中。
在操作S1203,存储控制器1240可检测通过第一端口(端口1)的通信中的错误。在操作S1204,存储控制器1240可通过第二端口(端口2)将第一端口(端口1)的错误发生信息发送到主机控制器1210。
由于该错误,在操作S1201由主机控制器1210通过第一端口(端口1)发送的第四命令(CMD4)不会到达存储控制器1240中包括的存储提交队列sSQ。另外,由存储控制器1240通过第一端口(端口1)发送的对第三命令(CMD3)的响应不会到达主机控制器1210中包括的主机完成队列hCQ。
在操作S1205,主机控制器1210和存储控制器1240可交换命令的标识符信息。例如,存储控制器1240可将在错误发生之前从主机控制器1210接收的第一命令的标识符信息CMD1_ID提供给主机控制器1210。因此,主机控制器1210可检查出存储控制器1240接收到了顺序地发送的第二命令(CMD2)、第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4)之中的直到第一命令(CMD1)的命令。主机控制器1210可将在错误发生之前从存储控制器1240接收的第二命令的标识符信息CMD2_ID提供给主机控制器1210。因此,存储控制器1240可检查出主机控制器1210接收到了对顺序地发送的命令的响应之中的对第二命令(CMD2)的响应。
在操作S1206,主机控制器1210和存储控制器1240可基于在操作S1205交换的标识符信息来交换关于命令的信息。例如,主机控制器1210可通过第二端口(端口2)将在第一命令(CMD1)之后生成的第四命令(CMD4)以封装体的形式发送到存储控制器1240。存储控制器1240可通过第二端口(端口2)将对在第二命令(CMD2)之后处理的第三命令(CMD3)的响应以封装体的形式发送到主机控制器1210。
图13是示出根据示例实施例的当发生错误时关于命令的信息被存储在存储系统中的状态的示图。
参照图13,当在第一端口1230中发生错误时,主机提交队列1211可存储第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4),并且主机完成队列1212可存储第二命令(CMD2)。因此,如图12的操作S1202中所示,主机控制器1210可从存储控制器1240接收对第二命令(CMD2)的响应,将第二命令(CMD2)从主机提交队列1211出队,并将第二命令(CMD2)入队到主机完成队列1212中。
主机发送缓冲器1221可存储第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4)。主机接收缓冲器1222可存储第二命令(CMD2)和第三命令(CMD3)。因此,尽管对第三命令(CMD3)的响应到达了主机接收缓冲器1222,但是由于错误,响应不会到达主机完成队列1212。
第一端口1230可包括存储接收缓冲器1231和存储发送缓冲器1232。当发生错误时,存储接收缓冲器1231可存储第三命令(CMD3)、第一命令(CMD1)和第四命令(CMD4),并且存储发送缓冲器1232可存储第二命令(CMD2)和第三命令(CMD3)。
另外,当发生错误时,存储提交队列1241可存储第一命令(CMD1),并且存储完成队列1242可存储第二命令(CMD2)和第三命令(CMD3)。因此,如图12的操作S1201中所示,尽管由主机控制器1210发送的第四命令(CMD4)到达了存储接收缓冲器1231,但是由于错误,第四命令(CMD4)不会到达存储提交队列sSQ。另外,如图12的操作S1201中所示,存储控制器1240可接收第二命令(CMD2)、第三命令(CMD3)和第一命令(CMD1),并且对第二命令(CMD2)和第三命令(CMD3)进行处理。
图14是示出根据示例实施例的封装体的结构的示图。
参照图14,封装体可具有包括状态码、命令信息或以预定数量的比特表示的数据中的一个或多个的结构。该封装体可以是命令封装体或响应封装体的示例。
状态码可指示是否发生了错误。例如,如参照图10和图11所描述的,状态码可指示是否检测到错误。
命令信息可指示命令的类型和命令的标识符。例如,命令的类型可包括写入命令、读取命令或擦除命令,但不限于此。每个命令可具有唯一的命令标识符。因此,即使多个命令的类型相同,也可将不同的命令标识符分配给多个命令。
数据可指示主机的标识符、命令队列的标识符、存储装置的标识符、存储控制器的标识符、网络接口的标识符、将被写入存储装置的数据和从存储装置读取的数据中的至少一个。
图15是示出根据示例实施例的包括存储网络接口230c的存储系统10c的示例的示图。
参照图15,存储网络接口230c可包括多个端口231c和232c,并且可通过多个端口231c和232c接收命令。
当命令被入队到存储提交队列sSQ时,可预先确定分配给命令的时隙。例如,在远程直接存储器访问(RDMA)方法中,在通过网络300c发送命令之前,可预先确定每个命令将被入队的时隙。参照图15,第一命令(CMD1)可被预先确定为入队在第一时隙(SLOT 1)中,并且第二命令(CMD2)可入队在第二时隙(SLOT 2)中。在第一命令(CMD1)和第二命令(CMD2)入队之前,尾指针可指向第一时隙(SLOT 1),并且在第一命令(CMD1)和第二命令(CMD2)入队之后,尾指针可指向第三时隙(SLOT 3)。
主机100c可将多个命令CMD1和CMD2发送到存储装置200c,并且指定多个端口231c和232c之中的多个命令CMD1和CMD2中的每个命令将被传送到的端口。参照图15,可将第一命令(CMD1)发送到第一端口231c,并且可将第二命令(CMD2)发送到第二端口232c。主机100c可将第一命令(CMD1)和第二命令(CMD2)顺序地发送到网络300c。
同时,第一命令(CMD1)和第二命令(CMD2)到达存储网络接口230c的顺序可能由于网络300c的延迟而改变。例如,由主机100c相对晚发送的第二命令(CMD2)可相对较早地到达存储网络接口230c。因为第二命令(CMD2)被入队到预定的第二时隙(SLOT 2),所以当尾指针增加1时,尾指针可能指向错误的时隙(SLOT 1)。因此,根据本示例实施例的存储装置200c可通过在接收到第一命令(CMD1)和第二命令(CMD2)两者时将尾指针增加2来管理存储提交队列。
根据示例实施例的存储网络接口230c可包括端口监视器233。端口监视器233可通过监视多个端口231c和232c来监视将在预定时隙中入队的命令是否全部接收到。当将入队的命令全部被接收到时,端口监视器233可通过将尾指针增加接收到的命令的数量来管理存储提交队列。
同时,如上面参照图1至图14所描述的,当多个端口231c和232c中的一个端口中发生错误时,存储装置200c可与主机100c交换关于命令的信息。例如,当在第二端口232c中发生错误时,存储装置200c可通过第一端口231c与主机100c交换关于在错误发生之前通过第二端口232c发送/接收的命令的信息。
图16是示出根据示例实施例的应用了存储装置的数据中心3000的示图。
参照图16,数据中心3000是收集各种类型的数据并提供服务的设施,并且可被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,并且可以是由公司(诸如,银行或政府机构)使用的计算系统。数据中心3000可包括应用服务器3100至3100n和存储服务器3200至3200m。可根据实施例不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量,并且应用服务器3100至3100n的数量和存储服务器3200至3200m的数量可不同。
应用服务器3100或存储服务器3200可包括处理器3110和3210以及存储器3120和3220中的至少一个。以存储服务器3200为例,处理器3210可控制存储服务器3200的全部操作,并访问存储器3220以执行加载到存储器3220中的指令和/或数据。存储器3220可以是双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插存储器模块(DIMM)、光学DIMM或非易失性DIMM(NVDIMM)。根据示例实施例,可不同地选择存储服务器3200中包括的处理器3210的数量和存储器3220的数量。在一个示例实施例中,处理器3210和存储器3220可提供处理器-存储器对。在一个示例实施例中,处理器3210的数量和存储器3220的数量可不同。处理器3210可包括单核处理器或多核处理器。存储服务器3200的描述可类似地应用于应用服务器3100。根据示例实施例,应用服务器3100可不包括存储装置3150。存储服务器3200可包括至少一个存储装置3250。可根据示例实施例不同地选择存储服务器3200中包括的存储装置3250的数量。
应用服务器3100至3100n和存储服务器3200至3200m可经由网络接口NIC 3140、NIC 3140n、NIC 3240和NIC 3240m通过网络3300彼此通信。网络3300可使用光纤信道(FC)或以太网来实现。在这种情况下,FC可以是用于相对高速数据传输的介质,并且可使用提供高性能/高可用性的光交换机。根据网络3300的访问方法,存储服务器3200至3200m可被提供为文件存储、块存储或对象存储。
在一个示例实施例中,网络3300可以是仅存储网络(storage-only network)(诸如,存储区域网络(SAN))。例如,SAN可以是使用FC网络并且根据FC协议(FCP)来实现的FC-SAN。又例如,SAN可以是使用TCP/IP网络并且根据TCP/IP上的SCSI或互联网SCSI(iSCSI)协议来实现的IP-SAN。在另一示例实施例中,网络3300可以是通用网络(诸如,TCP/IP网络)。例如,网络3300可根据诸如以太网上的FC(FCoE)、网络附接存储(NAS)和通过网络的NVMe(NVMe-oF)的协议来实现。
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的描述可应用于其他应用服务器3100n,并且存储服务器3200的描述也可应用于其他存储服务器3200m。
应用服务器3100可通过网络3300将由用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一个中。另外,应用服务器3100可通过网络3300从存储服务器3200至3200m中的一个获得由用户或客户端请求读取的数据。例如,应用服务器3100可被实现为网络服务器或数据库管理系统(DBMS)。
应用服务器3100可通过网络3300访问另一应用服务器3100n中包括的存储器3120n或存储装置3150n,或者可通过网络3300访问存储服务器3200至3200m中包括的存储器3220至3220m或存储装置3250至3250m。因此,应用服务器3100可对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的命令。此时,数据可直接通过存储服务器3200至3200m的存储器3220至3220m从存储服务器3200至3200m的存储装置3250至3250m移动到应用服务器3100至3100n的存储器3120至3120n。为了安全或隐私,通过网络3300移动的数据可以是加密数据。
以存储服务器3200为例,接口(IF)3254可提供处理器3210与控制器3251之间的物理连接以及NIC 3240和控制器3251之间的物理连接。例如,接口3254可以以将存储装置3250与专用电缆直接连接的直接附接存储(DAS)方法来实现。另外,例如,接口3254可以以各种接口方法(诸如,高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机小型接口(SCSI)、串行附接SCSI(SAS)、外围组件互连(PCI)、PCI快速(PCIe)、NVM快速(NVMe)、IEEE 1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、嵌入式通用闪存(eUFS)、紧凑型闪存(CF)卡接口等)实现。
存储服务器3200还可包括交换机3230和NIC 3240。交换机3230可在处理器3210的控制下选择性地连接处理器3210和存储装置3250,或者可选择性地连接NIC 3240和存储装置3250。
在一个示例实施例中,NIC 3240可包括网络接口卡、网络适配器等。NIC3240可通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络3300。NIC 3240可包括内部存储器、DSP、主机总线接口等,并且可通过主机总线接口连接到处理器3210和/或交换机3230。主机总线接口可被实现为上述接口3254的示例之一。在一个实施例中,NIC 3240可与处理器3210、交换机3230和存储装置3250中的至少一个集成。
在一个示例实施例中,NIC 3240可包括多个端口。如上面参照图1至图15所描述的,当NIC 3240中包括的端口中的一个端口发生错误时,存储服务器3200可使用另一端口与应用服务器3100进行通信。
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可将命令发送到存储装置3130至3130n和3250至3250m或存储器3120至3120n和3220至3220m,以编程或读取数据。在这种情况下,数据可以是通过纠错码(ECC)引擎进行了纠错的数据。数据可包括由数据总线反转(DBI)或数据掩码(DM)处理了的数据,并且可包括循环冗余码(CRC)信息。为了安全或隐私,数据可以是加密数据。
存储装置3150至3150n和3250至3250m可响应于从处理器3210接收的读取命令,将控制信号和命令/地址信号发送到NAND闪存装置3252至3252m。因此,当数据从NAND闪存装置3252至3252m被读取时,读取使能(RE)信号可作为数据输出控制信号被输入,并且可用于将数据输出到DQ总线。可通过使用RE信号来生成数据选通(DQS)。可根据写入使能(WE)信号的上升沿或下降沿将命令和地址信号锁存在页缓冲器中。
控制器3251可控制存储装置3250的全部操作。在一个示例实施例中,控制器3251可包括静态随机存取存储器(SRAM)。控制器3251可响应于写入命令将数据写入NAND闪存3252,或者响应于读取命令从NAND闪存3252读取数据。例如,可从存储服务器3200中的处理器3210、另一存储服务器3200m中的处理器3210m或应用服务器3100和3100n中的处理器3110和3110n提供写入命令和/或读取命令。DRAM 3253可临时存储(缓冲)将被写入NAND闪存3252的数据或从NAND闪存3252读取的数据。此外,DRAM3253可存储元数据。元数据可以是用户数据或由控制器(CTRL)3251生成以管理NAND闪存3252的数据。存储装置3250可包括用于安全或隐私的安全元件(SE)。同样的,存储服务器3200m中的DRAM 3253m和控制器3251m可与存储服务器3200中的DRAM 3253和控制器3251类似。
通过总结和回顾,SSD可根据其用途被分类为服务器SSD、客户端SSD和数据中心SSD。SSD的接口应该为这些用途中的每个提供最佳速度和可靠性,因此积极研究和应用了基于SATA、SAS和PCIe的NVMe。
开发了SSD的接口以在诸如大容量数据中心的系统中提供扩展的容易性。例如,研究了通过网络的NVMe(NVMe-oF)作为用于将SSD放置在网络结构(诸如,以太网交换机)中的标准。NVMe-oF支持各种存储联网结构(例如,以太网、光纤通道、无限带宽等)上的NVMe存储协议。
如上所述,实施例涉及用于恢复主机与存储装置之间的网络错误的存储系统。实施例可提供用于在使用在错误发生之前使用的命令队列的同时改变主机与存储装置之间的路径的存储系统及其操作方法。
在此公开了示例实施例,并且尽管采用了特定术语,但是它们仅在一般和描述性意义上被使用并且被解释,而不是出于限制的目的。在一些情况下,如本领域普通技术人员在提交本申请时将清楚的,除非另有具体说明,否则结合特定实施例描述的特征、特性和/或元件可单独使用或与结合其他实施例描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离如所附权利要求中阐述的本发明的精神和范围的情况下,可在形式和细节上进行各种改变。

Claims (20)

1.一种存储装置,包括:
网络接口,包括多个端口,所述多个端口被配置为与主机通信,所述多个端口包括第一端口和第二端口;以及
存储控制器,包括存储提交队列和存储完成队列,其中,
存储提交队列被配置为存储从主机接收的命令之中的待处理命令,
存储完成队列被配置为:存储处理后的命令,
存储控制器被配置为:将通过第一端口从主机接收的第一命令存储在存储提交队列中,并且在通过第一端口的通信中发生错误时,通过第二端口将第一命令的标识符信息传送到主机,并且
存储控制器被配置为:在错误发生时通过第二端口从主机接收第二命令的标识符信息,并且通过第二端口将在错误发生之前存储在存储完成队列中的处理后的命令之中的比第二命令晚处理的第三命令的标识符信息传送到主机。
2.如权利要求1所述的存储装置,其中,
第一端口包括接收缓冲器,接收缓冲器被配置为临时存储处理后的命令并且将处理后的命令传送到主机,并且
第三命令是在错误发生之前存储在接收缓冲器中的命令。
3.如权利要求1所述的存储装置,其中,存储控制器被配置为:当通过第一端口从主机接收到错误检查信息的时间间隔长于参考时间时,确定发生了错误。
4.如权利要求1所述的存储装置,其中,存储控制器被配置为:当通过第一端口从主机接收到错误检查信息的次数超过参考值时,确定发生了错误。
5.如权利要求1至权利要求4中的任意一项所述的存储装置,还包括:
多个命令队列对,被配置为存储从主机接收的命令;以及
队列映射表,指示所述多个端口与所述多个命令队列对之间的对应关系,
其中,存储控制器被配置为:更新队列映射表,使得当错误发生时,存储第一命令的命令队列对与第二端口对应。
6.如权利要求1至权利要求4中的任意一项所述的存储装置,其中,存储控制器被配置为:基于所述多个端口的流量从所述多个端口之中选择第二端口。
7.如权利要求1至权利要求4中的任意一项所述的存储装置,还包括:
优先级表,指示所述多个端口的优先级,
其中,存储控制器被配置为:基于优先级表从所述多个端口之中选择第二端口。
8.如权利要求1至权利要求4中的任意一项所述的存储装置,还包括:
端口监视器,被配置为:基于是否通过第一端口和第二端口在存储提交队列的分配的空间中接收到所有命令,来更新指示所分配的空间的指针。
9.一种存储装置的操作方法,所述存储装置通过所述存储装置的网络接口中包括的多个端口与主机进行通信,所述操作方法包括:
通过所述多个端口之中的第一端口与主机交换命令或命令的标识符信息;
响应于在通过第一端口的通信中发生错误,通过所述多个端口之中的第二端口将在错误发生之前从主机接收的第一命令的第一标识符信息提供给主机;以及
通过第二端口从主机接收在错误发生之前提供给主机的第二命令的第二标识符信息。
10.如权利要求9所述的操作方法,还包括:通过第二端口将在错误发生之前通过第一端口从主机接收的命令之中的第三命令的第三标识符信息提供给主机,
其中,第三命令是在第二命令之后处理的命令。
11.如权利要求9所述的操作方法,其中,提供第一标识符信息的步骤包括:基于参考时间与通过第一端口从主机接收到错误检查信息的时间间隔的比较结果,检测通过第一端口的通信中的错误。
12.如权利要求9所述的操作方法,其中,提供第一标识符信息的步骤包括:基于参考值与通过第一端口从主机接收到错误检查信息的次数的比较结果,检测通过第一端口的通信中的错误。
13.如权利要求9至权利要求12中的任意一项所述的操作方法,其中,提供第一标识符信息的步骤包括:基于所述多个端口的流量从所述多个端口之中选择第二端口。
14.如权利要求9至权利要求12中的任意一项所述的操作方法,其中,提供第一标识符信息的步骤包括:基于指示所述多个端口的优先级的优先级表,从所述多个端口之中选择第二端口。
15.一种存储系统,包括:
主机,包括主机队列,主机队列被配置为存储多个命令;以及
存储装置,包括存储队列,存储队列被配置为通过第一端口或第二端口与主机交换命令,并且存储所交换的命令,
其中,存储装置被配置为:在通过第一端口的通信中发生错误时,通过第二端口将关于在错误发生之前存储在存储队列中的命令的信息传送到主机。
16.如权利要求15所述的存储系统,其中,
主机队列包括:
主机提交队列,被配置为按顺序存储所述多个命令;以及
主机完成队列,被配置为存储所述多个命令之中的处理后的命令,并且
存储队列包括:
存储提交队列,被配置为存储从主机接收的命令之中的待处理命令;以及
存储完成队列,被配置为存储待处理命令之中的处理后的命令。
17.如权利要求16所述的存储系统,其中,存储装置被配置为:通过第二端口将关于在错误发生之前存储在存储提交队列中的第一命令的信息传送到主机。
18.如权利要求17所述的存储系统,其中,主机被配置为:通过第二端口将在第一命令之后存储在主机提交队列中的第四命令提供给存储装置。
19.如权利要求18所述的存储系统,其中,
存储装置还包括:
第一接收缓冲器,被配置为临时存储从主机接收的命令,并且被配置为将所述命令传送到存储提交队列,并且
第四命令是在错误发生之前存储在第一接收缓冲器中的命令。
20.如权利要求16所述的存储系统,其中,主机被配置为:通过第二端口将关于在错误发生之前存储在主机完成队列中的第二命令的信息传送到存储装置。
CN202111286406.7A 2020-11-05 2021-11-02 存储系统、存储装置及其操作方法 Pending CN114442922A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0147082 2020-11-05
KR1020200147082A KR20220060909A (ko) 2020-11-05 2020-11-05 스토리지 시스템 및 스토리지 시스템의 동작 방법

Publications (1)

Publication Number Publication Date
CN114442922A true CN114442922A (zh) 2022-05-06

Family

ID=78695476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111286406.7A Pending CN114442922A (zh) 2020-11-05 2021-11-02 存储系统、存储装置及其操作方法

Country Status (4)

Country Link
US (1) US11809290B2 (zh)
EP (1) EP3995961B1 (zh)
KR (1) KR20220060909A (zh)
CN (1) CN114442922A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220171572A1 (en) * 2020-12-01 2022-06-02 Micron Technology, Inc. Queue configuration for host interface
US20240004574A1 (en) * 2022-06-29 2024-01-04 Western Digital Technologies, Inc. Automatic data erase from data storage device
US20240004556A1 (en) * 2022-06-29 2024-01-04 Western Digital Technologies, Inc. Asynchronous operation completion notification

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459864A (en) * 1993-02-02 1995-10-17 International Business Machines Corporation Load balancing, error recovery, and reconfiguration control in a data movement subsystem with cooperating plural queue processors
US6260158B1 (en) * 1998-05-11 2001-07-10 Compaq Computer Corporation System and method for fail-over data transport
US6728210B1 (en) 1998-12-21 2004-04-27 Nec America, Inc. Multi-logical access for a serial data link
US7467191B1 (en) 2003-09-26 2008-12-16 Network Appliance, Inc. System and method for failover using virtual ports in clustered systems
US7539780B2 (en) * 2003-12-01 2009-05-26 International Business Machines Corporation Asynchronous completion notification for an RDMA system
JP2007072571A (ja) 2005-09-05 2007-03-22 Hitachi Ltd 計算機システム及び管理計算機ならびにアクセスパス管理方法
GB0613239D0 (en) * 2006-07-04 2006-08-09 Ibm Storage area network system
US8204980B1 (en) 2007-06-28 2012-06-19 Emc Corporation Storage array network path impact analysis server for path selection in a host-based I/O multi-path system
US8848575B2 (en) 2009-02-23 2014-09-30 Brocade Communications Systems, Inc. High availability and multipathing for fibre channel over ethernet
CN102263807A (zh) 2010-05-31 2011-11-30 国际商业机器公司 在存储区域网络保持通信路径畅通的方法和存储区域网络
US8904224B2 (en) * 2012-07-20 2014-12-02 International Business Machines Corporation Providing replication and fail-over as a network service in data centers
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
US9348525B2 (en) * 2014-02-21 2016-05-24 Netapp, Inc. Systems and methods for a storage array-managed initiator cache
KR101730991B1 (ko) 2014-10-28 2017-04-28 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102549611B1 (ko) 2016-04-01 2023-06-30 삼성전자주식회사 스토리지 장치 및 그것의 이벤트 통지 방법
US10649950B2 (en) 2016-08-29 2020-05-12 Excelero Storage Ltd. Disk access operation recovery techniques
US10540219B2 (en) 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits

Also Published As

Publication number Publication date
US11809290B2 (en) 2023-11-07
EP3995961A1 (en) 2022-05-11
KR20220060909A (ko) 2022-05-12
US20220138059A1 (en) 2022-05-05
EP3995961B1 (en) 2023-09-13

Similar Documents

Publication Publication Date Title
EP3995961A1 (en) Storage system and operating method thereof
US9672143B2 (en) Remote memory ring buffers in a cluster of data processing nodes
US10593380B1 (en) Performance monitoring for storage-class memory
US10339079B2 (en) System and method of interleaving data retrieved from first and second buffers
US11314635B1 (en) Tracking persistent memory usage
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US20220057967A1 (en) System device, and method for memory interface including reconfigurable channel
US11962675B2 (en) Interface circuit for providing extension packet and processor including the same
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
KR20230088215A (ko) 분산 스토리지 시스템
US11314460B2 (en) Solid state drive supporting both byte addressable protocol and block addressable protocol
US11914879B2 (en) Storage controller and storage system comprising the same
US11868270B2 (en) Storage system and storage device, and operating method thereof
US20230141936A1 (en) Secure processor, operating method thereof, and storage device including same
EP4174664A1 (en) Storage device including storage controller and operating method
US20240168675A1 (en) Storage apparatus and method for data integrity
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
US20240160362A1 (en) Memory devices and methods for managing use history
US20240193041A1 (en) Operation method of memory controller configured to control memory device
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
CN117220861A (zh) 秘钥烧录系统、方法、智能网卡以及可读存储介质
CN116893877A (zh) 主机装置的操作方法及存储装置的操作方法
CN114528228A (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