CN103970688B - 缩短数据存储系统中写入等待时间的方法和系统 - Google Patents
缩短数据存储系统中写入等待时间的方法和系统 Download PDFInfo
- Publication number
- CN103970688B CN103970688B CN201410042732.7A CN201410042732A CN103970688B CN 103970688 B CN103970688 B CN 103970688B CN 201410042732 A CN201410042732 A CN 201410042732A CN 103970688 B CN103970688 B CN 103970688B
- Authority
- CN
- China
- Prior art keywords
- host computer
- order
- memory controller
- computer system
- nvm devices
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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; 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
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)
- Bus Control (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及缩短数据存储系统中写入等待时间的方法和系统。提供的数据存储系统实施缩短等待时间的命令压入模型。主机系统具有对存储器控制器的非易失性存储器(NVM)器件的访问权限,以允许主机系统将命令压入位于NVM器件中的命令队列中。主机系统在不需要来自存储器控制器的干预下完成每次IO,从而避免了对主机系统与存储控制器之间同步或握手的需要。对于写入命令,在写入命令完成后存储器控制器不需要向主机系统发出完成中断,因为主机系统认为在写入命令被压入存储器控制器的队列中时写入命令已完成。所有这些特征的结合引起整体等待时间大幅缩短。
Description
技术领域
一般来说,本发明涉及数据存储系统,更确切地说,涉及为了缩短写入等待时间在数据存储系统中使用命令压入模型的方法和系统。
背景技术
存储阵列或磁盘阵列是包括多个硬盘驱动器(HDD)或类似的永久存储单元的数据存储器件。存储阵列能够允许以高效方式存储大量数据。服务器或工作站可以被直接连接到存储阵列,使得存储阵列对服务器或工作站为本机器件。在服务器或工作站被直接连接到存储阵列的情况下,存储阵列典型情况下被称为直接连接存储(DAS)系统。作为替代,服务器或工作站可以经由存储阵列网络(SAN)远程地连接到存储阵列。在SAN系统中,尽管存储阵列对服务器或工作站不是本机器件,但是该阵列的磁盘驱动器对服务器或工作站的操作系统(OS)显现为本机连接的。
图1展示了典型的数据存储系统2的框图,执行命令弹出模型。系统2包括主机系统3、存储器控制器4以及外设部件互连(PCI)或PCI Express(PCIe)总线5。控制器4包括中央处理单元(CPU)6、存储器器件7和I/O接口器件8。I/O接口器件8被配置为遵照已知的数据传递协议标准执行数据传递,比如串行连接SCSI(SAS)标准、串行高级技术连接(SATA)标准或者非易失性存储器主机控制器高速接口(NVMe)标准。I/O接口器件8控制着往返多个物理盘(PD)9的数据传递。存储器控制器4经由PCI总线5与系统CPU11和系统存储器器件12通信。系统存储器器件12存储着由系统CPU11执行的软件程序和数据。系统存储器器件12的一部分被用作命令队列13。
在典型的写入动作期间,系统CPU11运行存储器驱动软件栈14,它存储着命令队列13中的命令和数据。当存储器驱动器14存储着命令队列13中的命令时,它通知存储器控制器4命令已准备好要执行。当控制器CPU6准备好执行命令时,它使所述命令或多条命令以及相关联的数据从系统队列13经由总线5弹出,并向主机系统3发出完成中断。当这些命令由存储器控制器执行时,控制器CPU6使与这些命令相关联的数据被暂时存储在控制器存储器器件7中,随后经由I/O接口器件8写入一个或多个PD9。
在历史上,按照输入/输出(IO)每秒(IOPS),在某些情况下,兆字节每秒(MB/s)已经测量了图1所示类型的基于HDD系统的性能。典型情况下,这样的存储器系统的等待时间按下式给出:Latency_Overall=Latency_SW_Stack+Latency_Controller+Latency_HDD=1/IOPS,其中Latency_Overall是系统的整体等待时间,Latency_SW_Stack是与存储器驱动器14相关联的等待时间,Latency_Controller是与存储器控制器4相关联的等待时间,而Latency_HDD是与PD9相关联的等待时间。典型情况下,Latency_SW_Stack在若干微秒(10-6秒)量级。同样,典型情况下,Latency_Controller在几十微秒量级。不过,典型情况下,Latency_HDD在毫秒(10-3秒)或几十毫秒的量级。近似99%的整体等待时间归因于HDD中极其缓慢的机械部件。所以,对于实用目的,确定系统性能时可以忽略Latency_SW_Stack和Latency_Controller。换言之,系统性能可以被估计为等于Latency_HDD。
最近,已经有了从使用磁性HDD作为PD9到使用固态驱动器(SSD)或SSD和HDD的结合作为PD9的过渡。在行业中,使用基于SSD的解决方案被视为基于HDD的解决方案的演变。不过,基于SSD的解决方案比基于HDD的解决方案快近似一百倍并且消耗的功率要少得多。基于SSD解决方案的这种观点已经导致本行业在基于SSD解决方案中继续使用先前存在的上述弹出式方法,从命令队列将命令弹出到存储器控制器中。同样,因为基于SSD的解决方案在行业中已经被视为仅仅是基于HDD的解决方案的演变,所以在实施基于SSD解决方案的存储系统中,IOPS已经被用作测量系统性能的性能度量。
不过,基于SSD的解决方案与基于HDD的解决方案之间的差异比看起来大得多,并且传统的度量不应当用于对实施基于SSD的解决方案的系统测量性能。在实施基于SSD解决方案的系统中,存储系统的整体等待时间按下式给出:Latency_Overall=Latency_SW_Stack+Latency_Controller+Latency_SSD=1/IOPS,其中Latency_SW_Stack是与存储器驱动器14相关联的等待时间,Latency_Controller是与存储器控制器4相关联的等待时间,而Latency_SSD是与被用作PD9的SSD相关联的等待时间。不同于HDD的等待时间,SSD的等待时间在几十至几百微秒量级,比如,一般在100至300微秒的范围内,并且与存储器驱动器14和存储器控制器4相关联的等待时间对整体等待时间增加了比HDD情况下大得多的比例。所以,在实施基于SSD解决方案的存储系统的整体等待时间计算中,Latency_SW_Stack和Latency_Controller不应当再被忽略。
命令弹出的方式需要存储器驱动器14与存储器控制器4之间相当多的交互作用。在基于HDD的系统中这是便利的方式,它允许主机系统3的快速的操作系统(OS)侧几乎完全独立于更慢的基于HDD的控制器侧,从而OS侧可以在队列13中堆积尽可能多的命令,以提供更大的队列深度(QD),这在基于HDD的解决方案中是非常可取和普通的。然后存储器控制器4可以按其自身的步调使命令从队列13中弹出。虽然在基于HDD的解决方案中这种方法非常便利,但是它增加了大量的额外等待时间,因为存储器控制器4与主机系统3之间需要同步,以及因为命令被存储器控制器4拾取的时间可能比它们被发出的时间迟得多的事实。此外,如果存储器控制器4有许多工作要做,如同常有的情况,所有的命令处理都必然与存储器控制器4的其余工作量竞争,这对整体等待时间增加了更多的等待时间。
上述命令弹出模型非常适于基于HDD的解决方案,其中对典型情况下可能花费大约10,000微秒来完成的命令增加50至500微秒是可以忽略的,假设该方法提供了其他优点。不过,命令弹出模型在实施基于SSD解决方案的存储系统中使用时没有产生可接受的结果,其中访问时间可以短至100微秒,或者当在存储器控制器4中使用动态随机存取存储器(DRAM)回写(WB)缓冲区的情况下,短至1到5微秒。
然而,正如上面指出,实施基于SSD的解决方案的存储系统的整体等待时间仍然被估计为等于Latency_SSD,而让Latency_SW_Stack和Latency_Controller在估计之外。由于这个原因,对实施基于SSD解决方案的存储系统缩短整体等待时间的尝试主要地一直集中在缩短Latency_SSD,而不是缩短Latency_SW_Stack或Latency_Controller。
对实施基于SSD解决方案并通过显著缩短Latency_SW_Stack和Latency_Controller之一或二者也显著缩短了整体等待时间的存储系统存在着需求。
发明内容
本发明提供了数据存储系统、存储器控制器、方法和计算机可读介质,它们全部实施了缩短等待时间的命令压入模型。数据存储系统包括主机系统、存储器控制器、至少一个SSD以及使主机系统与存储器控制器互连的总线。主机系统包括系统处理器和系统存储器器件。存储器控制器包括控制器处理器、非易失性存储器(NVM)器件和输入/输出(I/O)接口器件。NVM器件的一部分被用作命令队列。SSD被连接到I/O接口器件并被配置为PD的阵列。主机系统经由总线访问NVM器件并经由总线将命令压入NVM器件的命令队列中。
所述方法包括:
在包括控制器处理器、NVM器件以及连接到被配置为PD阵列的至少一个SSD的I/O接口器件的存储器控制器中,将NVM器件的一部分配置为命令队列;以及
利用经由总线与存储器控制器互连的主机系统,将命令经由总线压入存储器控制器中;以及
在存储器控制器中,将命令存储在NVM器件的命令队列中。
计算机可读介质具有存储于其上的用于由主机系统的处理器执行的计算机程序,用于将命令经由总线压入连接到主机系统的存储器控制器的NVM器件的命令队列中。计算机程序包括第一和第二代码部分。第一代码部分接收命令以读取或写入被配置为PD阵列的SSD的一个或多个地址。第二代码部分将命令压入存储器控制器中。根据一个展示性实施例,第二代码部分将命令压入存储器控制器的NVM器件的命令队列中。根据另一个展示性实施例,第二代码部分将命令压入存储器控制器的直接存储器访问(DMA)引擎中,命令被存储在存储器控制器的NVM器件的命令队列中。
按照以下说明、附图和权利要求书,本发明的这些和其他特征和优点将变得显而易见。
附图说明
图1展示了实施命令弹出模型的已知数据存储系统的框图;
图2展示了根据实施命令压入模型的展示性实施例的数据存储系统的框图;
图3展示了根据实施命令压入模型的另一个展示性实施例的数据存储系统的框图;
图4展示的流程图表示由图2所示的数据存储系统执行的命令压入方法;
图5展示的流程图表示由图3所示的数据存储系统执行的命令压入方法。
具体实施方式
根据本发明,提供的数据存储系统实施命令压入模型,它缩短了与存储器驱动器和存储器控制器相关联的等待时间。命令压入模型消除了因为写入命令IO在主机系统与存储器控制器之间的同步需求,从而消除了与同步相关联的等待时间。当命令IO在主机系统发出时,主机系统访问存储器控制器的存储器器件并将命令IO和相关联的数据压入存储器器件的命令队列中。所以,主机系统在没有来自存储器控制器的任何干预下完成每个写入命令IO,从而避免了主机系统与存储器控制器之间的同步或握手的需要。
存储器控制器的存储器件受保护以对抗电源故障和典型的存储器错误,并且这样就可以被认为是永久存储元件。所以,主机系统可以认为在它将写入命令和相关联的数据压入存储器控制器的存储器器件的命令队列中之时写入命令IO便安全地完成。换言之,从主机系统的观点,当它将写入命令压入存储器控制器的存储器器件的命令队列中时,仿佛它已经完成了对PD9的写入。所以,主机系统在没有来自存储器控制器的任何干预下完成每个写入命令IO,从而避免了主机系统与存储器控制器之间同步或握手的需要。
不仅如此,与以上参考图1介绍的命令弹出模型对照,一旦本发明的存储器控制器已经完成了写入命令的处理,存储器控制器不需要向主机系统发出完成中断,因为主机系统认为在它将写入命令压入存储器控制器的命令队列中时写入命令完成。这种特征允许主机系统和存储器控制器关于写入命令彼此独立地操作。所有这些特征的结合引起Latency_SW_Stack和Latency_Controller都大幅缩短,这引起整体等待时间大幅缩短。
因此,不是使用以上参考图1介绍的命令弹出模型,其中命令被准备在系统存储器12的命令队列13中并随后由存储器控制器4弹出并处理,而是主机系统将命令和任何相关联的数据压入到位于存储器控制器的存储器器件中的命令队列中。主机系统将命令和任何相关联的数据压入到存储器控制器的存储器器件的命令队列中的方式能够以许多方式完成。根据第一个展示性实施例,主机系统的存储器驱动器按计划地将命令和相关联的数据压入存储器控制器的存储器器件的命令队列中。根据本文介绍的第二个展示性实施例,存储器控制器的直接存储器访问(DMA)引擎将命令和任何相关联的数据压入存储器控制器的存储器器件的命令队列中。这两个实施例都避免了主机系统与存储控制器之间的同步或握手的需要。
图2展示了根据实施命令压入模型的第一个展示性实施例的数据存储系统20的框图。系统20包括主机系统30、存储器控制器70、外设部件互连(PCI)或PCI Express(PCIe)总线65以及包括PD120a的至少一个SSD120。主机系统30包括系统CPU40和系统存储器器件60。存储器控制器70包括CPU80、非易失性存储器(NVM)器件90和I/O接口器件110。典型情况下,NVM器件90是DRAM器件。NVM器件90的一部分被用作命令队列91。I/O接口器件110被配置为遵照已知的数据传输协议标准执行数据传输,比如SAS、SATA和/或NVMe标准。I/O接口器件110控制着往返SSD120的多个PD120a的数据传输。存储器控制器70经由PCI总线65和存储器驱动器50与系统CPU40通信。系统存储器器件60存储着由系统CPU40执行的软件程序和数据。
根据这个展示性实施例,存储器驱动器50经由总线65与NVM器件90直接通信。在典型的写入动作期间,系统CPU40运行的软件栈包括存储器驱动器50,它将命令和数据压入NVM器件90的命令队列91中,并且通知控制器CPU80所述命令和数据在队列91中。执行压入动作不需要主机系统30与存储器控制器之间的同步或握手。一旦存储器驱动器50已经将写入命令和相关联数据压入命令队列91中,主机系统30的OS便认为写入命令完成。所以,存储器控制器70不需要向主机系统30发出完成中断以通知主机CPU40所述写入命令已经完成。
当控制器CPU80准备好执行命令时,它从NVM器件90中检索命令和数据并执行该命令。在写入命令的情况下,控制器CPU80使相关联的数据经由I/O接口器件110写入到SSDPD120a。在读取命令的情况下,控制器CPU80检查NVM90的高速缓存(为清楚起见未显示)以判断要读取的数据是否在高速缓存中,如果在,便从高速缓存中读取数据并将其传送到主机系统30。如果要读取的数据不在高速缓存中,CPU80使数据从SSD PD120a中读取并传送到主机系统30。
图2的命令压入模型与图1的命令弹出模型之间的关键差异之一在于,在控制器CPU80意识到命令之前,命令所有权就从主机系统30传送到NVM器件90的队列91。在图1的命令弹出模型中,在主机系统3从存储器控制器4收到完成中断前,与写入命令相关联的命令所有权并不传送。此外,在图1的命令弹出模型中,同步或握手发生在控制器CPU6与主机系统3之间,以便将命令从系统存储器器件12的队列13弹出到存储器控制器4中。典型情况下,与图1所示的命令弹出模型相比,消除这些等待时间将引起写入等待时间缩短一到两个量级。
因为一旦命令已经被压入NVM90的队列91中,存储器控制器70便获得了命令的所有权,所以重要的是保护NVM90以抵抗电源故障。这样的保护措施能够以许多方式实现,但是一种方式是为NVM90使用备用电池(BBU)、超级电容器(Supercap)动态随机存取存储器(DRAM)器件。本领域的技术人员将理解可以选择BBU、Supercap DRAM器件或其他适宜存储器器件用于这种目的的方式。
为了使存储器驱动器50高效地将命令压入队列91中,NMV器件90应当由存储器驱动器50经由总线65直接可访问。这种可访问性可以以许多方式实现。一种实现它的方式是在NVM器件90中使用的命令和数据结构与主机系统30中所用的相同。这在PCIe中通过便利的基址寄存器(BAR)编程是可能的,如本领域的技术人员将理解。从主机系统30到NVM器件90的数据传输能够由存储器驱动器50按计划地实现。
也应当为存储器驱动器50提供确定NVM器件90中的哪些入口为可用的方式,以便用命令信息映射/标注它们。每条命令都由数据集和命令信息组成。命令信息包括诸如读取/写入、块地址、指针以及标记的信息。命令信息按照命令类型变化,并且与数据集独立地被创建。数据集和命令信息都需要被移动到NVM90中,并且数据集必须用对应的命令信息映射/标注,以确保命令信息与数据集之间的一致性。实现它的方式将变化,取决于所用的存储器控制器70的类型或配置。为了提供这种功能全部存储器控制器都是可配置的,尽管解决方案的效率将取决于存储器控制器的硬件、软件和/或固件实施。所以,这个问题将需要针对具体情况来解决,如本领域技术人员将理解。
图3展示了根据第二个展示性实施例的数据存储系统200的框图,其中DMA引擎用于将命令和数据压入存储器控制器的存储器器件的队列中。尽管DMA引擎可以是主机系统的一部分也可以是存储器控制器的一部分,但是出于展示性目的它被显示和描述为存储器控制器的一部分。系统200包括主机系统220、存储器控制器270、PCI或PCIe总线265以及包括多个PD320a的至少一个SSD320。主机系统220包括系统CPU230和系统存储器器件260。存储器控制器270包括DMA引擎240、CPU280、NVM器件290以及I/O接口器件310。典型情况下,NVM器件290是DRAM器件,并且它具有的保护措施与以上参考NVM90介绍的相同。NVM器件290的一部分被用作命令队列291。I/O接口器件310被配置为按照数据传输协议标准执行数据传输,比如SAS、SATA和/或NVMe标准。I/O接口器件310控制着往返SSD320的多个PD320a的数据传输。存储器控制器270经由PCI总线265和存储器驱动器250与系统CPU230通信。系统存储器件260存储着由系统CPU230执行的软件程序和数据。
根据这个展示性实施例,DMA引擎240经由总线265与存储器驱动器250通信并且与NVM器件290直接通信。在典型的写入动作期间,存储器驱动器250经由总线265将命令和任何相关联的数据压入DMA引擎240。DMA引擎240将命令和数据存储在NVM器件290的命令队列291中。执行压入动作不需要主机系统220与存储控制器270之间的同步或握手。一旦DMA引擎240已经将写入命令和相关联的数据存储到命令队列291中,优选情况下,它通知控制器CPU280命令和数据在NVM290中,典型情况下通过发出中断。主机系统220的OS认为在命令和数据被传送到DMA引擎240之时写入命令已完成。所以,存储器控制器270不需要向主机系统220发出完成中断以通知它写入命令已经完成。
当控制器CPU280准备好执行命令时,它从NVM器件290中检索命令和数据并执行该命令。在写入命令的情况下,控制器CPU280使相关联的数据经由I/O接口器件310写入到SSD的各PD320a。在读取命令的情况下,控制器CPU280检查NVM290的高速缓存(为清楚起见未显示)以判断要读取的数据是否在高速缓存中,如果在,便从高速缓存中读取数据并将其传送到主机系统220。如果要读取的数据不在高速缓存中,CPU280使数据从SSD各PD320a中读取并传送到主机系统220。
如同以上参考图2介绍的命令压入模型,利用图3的命令压入模型,在控制器CPU280意识到命令之前,命令所有权就从主机系统220传送到NVM器件290的队列291。如同以上参考图2介绍的命令压入模型,利用图3的命令压入模型,为了将命令压入队列291中,在控制器CPU280与主机系统220之间不需要同步或握手。所以,消除了以上参考图1介绍的等待时间。
图4展示的流程图表示根据部分地由图2所示的主机系统30部分地由存储控制器70执行的展示性实施例的命令压入方法。本方法将参考单命令介绍,尽管本方法的若干步骤也可以对多条命令同时执行。系统CPU40发出读取或写入命令,如方框401指示。主机系统30的存储器驱动器50将命令压入NVM器件90的队列91中,并且通知存储器控制器70所述命令在NVM器件90中,如方框402指示。
在写入命令的情况下,与命令相关联的数据也被压入NVM器件90中。随后,从NVM器件90读取的命令和数据被写入到SSD120的各PD120a。在已被压入NVM器件90中的读取命令的情况下,典型情况下,存储器控制器70将判断数据是否存储在NVM器件90的高速缓存中。如果存储器控制器70判定数据存储在高速缓存中(即一个高速缓存命中),它便从高速缓存中读取数据并传送到主机系统30。如果存储器控制器70判定数据没有存储在高速缓存中(即高速缓存未中),它便从SSD120的各PD120a中读取数据并将数据传送到主机系统30。
在写入命令被压入NVM器件90的队列91中的情况下,一旦存储器驱动器50将写入命令压入队列91中,主机系统30中的IO就完成了。在读取命令被压入队列91中的情况下,在读取的数据被返回到主机系统30前,主机系统30中的IO未完成,这是图1所示公知存储系统2中处理读取命令的方式。由本发明的方法和系统所实现的等待时间缩短关于写入命令最为显著,因为从主机系统30将写入命令传送到存储器控制器70中不再需要同步的事实,以及因为主机系统30不再必须等待完成中断才能认为写入命令已完成的事实。
图5展示的流程图表示根据部分地由图3所示的主机系统220部分地由存储控制器270执行的展示性实施例的命令压入方法。本方法将参考单命令介绍,尽管本方法的若干步骤也可以对多条命令同时执行。系统CPU230发出读取或写入命令,如方框501指示。存储器驱动器250将命令压入DMA引擎240,如方框502指示。DMA引擎240将命令存储在NVM器件290的队列291中,并且通知存储器控制器270该命令在NVM器件290中,如方框503指示。关于通知存储器控制器270该命令已经被存放到队列291中的方式,本发明不受限制。这可以以许多方式实现,例如,发出中断、更新寄存器中的值等等,正如本领域的技术人员将理解。
主机系统30和220的以及存储器控制器70和270的功能可以以硬件、软件、固件或其结合实施。以软件或固件实施功能的计算机代码存储在计算机可读介质(CRM)上,比如系统存储器器件60和260或者NVM器件90和290或者某种其他存储器器件。CRM可以是任何类型的存储器器件,包括但不限于磁性存储器件、固态存储器件、闪存器件以及光存储器件。典型情况下,CPU40、80、230和280的每一个都包括至少一个微处理器,但是可以包括能够提供执行相关联任务所必要或期望的功能的任何类型的处理器,包括例如微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)以及片上系统(SOC)。本文中所使用的术语“处理器”意在指示可以被编程或配置为执行上述任务和任何附加任务的这些和其他类型的计算器件,这些任务被视为允许CPU40、80、230和280执行其角色所需要的。
应当注意,为了演示本发明的原理和概念,参考几个展示性即示范性实施例已经介绍了本发明。正如本领域技术人员将理解,可以对上述展示性实施例做出许多改变而在不偏离本发明的范围。一切这样的改变都在本发明的范围之内。例如,尽管PD120a和320a分别在图2和图3中显示为分别仅仅在至少一个SSD120或320中实施,但是多个PD120a和320a可以实施为一个或多个SSD以及一个或多个HDD的组合。
Claims (19)
1.一种数据存储系统,包括:
主机系统,包括系统处理器和系统存储器器件;
存储器控制器,包括控制器处理器、非易失性存储器NVM器件和输入/输出I/O接口器件,其中NVM器件的一部分被用作命令队列;
连接到I/O接口器件的至少一个固态驱动器SSD,其中,所述至少一个SSD被配置为物理盘驱动器PD的阵列;以及
将主机系统与存储器控制器互连的总线,其中主机系统经由总线访问NVM器件并经由总线将命令压入NVM器件的命令队列中。
2.根据权利要求1的数据存储系统,其中,系统处理器执行存储器驱动器程序,所述存储器驱动器程序经由总线访问NVM器件并将命令经由总线压入NVM器件的命令队列中。
3.根据权利要求1的数据存储系统,其中,存储器控制器进一步包括直接访问NVM器件的直接存储器访问DMA引擎,以及其中系统处理器执行用于将命令经由总线压入DMA引擎的存储器驱动器程序,以及其中DMA引擎将命令存储在NVM器件的命令队列中。
4.根据权利要求1的数据存储系统,其中,主机系统在命令已经被压入NVM器件的命令队列中时通知存储器控制器。
5.根据权利要求2的数据存储系统,其中,主机系统和NVM器件使用相同的命令和数据结构。
6.根据权利要求5的数据存储系统,其中,总线是外设部件互连高速PCIe总线,存储器驱动器程序通过使用PCIe总线的基址寄存器BAR访问NVM器件。
7.一种存储器控制器,包括:
输入/输出I/O接口器件,其中,NVM器件的一部分被用作命令队列;
连接到I/O接口器件的至少一个固态驱动器SSD,其中,所述至少一个SSD被配置为物理盘驱动器PD的阵列;
控制器处理器;以及
非易失性存储器NVM器件,NVM器件的一部分被分配为命令队列,其中,NVM器件被配置为由主机系统经由将主机系统与存储器控制器互连的总线来访问,其中NVM器件被配置为允许主机系统经由总线将命令压入NVM器件的命令队列中。
8.根据权利要求7的存储器控制器,其中,NVM器件由主机系统经由主机系统的处理器所执行的存储器驱动器程序来访问,以及总线是外设部件互连高速PCIe总线,以及其中NVM器件能够由存储器驱动器程序通过PCIe总线的基址寄存器BAR来访问。
9.根据权利要求7的存储器控制器,其中,存储器控制器进一步包括:
直接存储器访问DMA引擎,经由总线与主机系统通信并直接与NVM器件通信,其中,DMA引擎由主机系统经由总线来访问,以及DMA引擎接收由存储器驱动器程序压入DMA引擎的命令并将命令存储在NVM器件的命令队列中。
10.根据权利要求8的存储器控制器,其中,NVM器件使用与主机系统相同的命令和数据结构。
11.一种缩短数据存储系统中的等待时间的方法,所述方法包括:
在包括控制器处理器、非易失性存储器NVM器件以及连接到被配置为物理盘驱动器PD阵列的至少一个固态驱动器SSD的输入/输出I/O接口器件的存储器控制器中,将NVM器件的一部分配置为命令队列;以及
利用经由总线与存储器控制器互连的主机系统,将命令经由总线压入存储器控制器中;以及
在存储器控制器中,将命令存储在NVM器件的命令队列中。
12.根据权利要求11的方法,其中,主机系统的系统处理器执行存储器驱动器程序,该存储器驱动器程序经由总线访问NVM器件,并将命令经由总线压入NVM器件的命令队列中。
13.根据权利要求11的方法,其中,存储器控制器进一步包括直接存储器访问DMA引擎,以及其中主机系统的系统处理器执行用于将来自主机系统的命令经由总线压入DMA引擎的存储器驱动器程序,以及其中DMA引擎经由总线将命令存储在NVM器件的命令队列中。
14.根据权利要求12的方法,进一步包括:
其中,主机系统当命令已经被压入NVM器件的命令队列中时通知存储器控制器。
15.根据权利要求12的方法,其中,主机系统和NVM器件使用相同的命令和数据结构。
16.根据权利要求15的方法,其中,总线是外设部件互连高速PCIe总线,存储器驱动器程序通过使用PCIe总线的基址寄存器BAR访问NVM器件。
17.一种用于将命令经由总线压入连接到主机系统的存储器控制器的非易失性存储器NVM器件的命令队列中的方法,所述方法包括:
接收命令以读取或写入被配置为物理盘驱动器PD阵列的固态驱动器SSD的一个或多个地址;以及
将命令压入存储器控制器中。
18.根据权利要求17的方法,其中,将命令压入存储器控制器中包括将命令压入NVM器件的命令队列中,所述方法进一步包括:
当命令已经被压入存储器控制器的NVM器件的命令队列中时通知存储器控制器的处理器。
19.根据权利要求17的方法,其中,将命令压入存储器控制器中包括将命令压入存储器控制器的直接存储器访问DMA引擎中,DMA引擎直接连接到NVM器件以允许DMA引擎将命令存储在命令队列中,所述方法进一步包括:
当命令已经被压入存储器控制器的NVM器件的命令队列中时通知存储器控制器的处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/758,853 | 2013-02-04 | ||
US13/758,853 US9256384B2 (en) | 2013-02-04 | 2013-02-04 | Method and system for reducing write latency in a data storage system by using a command-push model |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970688A CN103970688A (zh) | 2014-08-06 |
CN103970688B true CN103970688B (zh) | 2017-08-11 |
Family
ID=50112702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410042732.7A Active CN103970688B (zh) | 2013-02-04 | 2014-01-29 | 缩短数据存储系统中写入等待时间的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9256384B2 (zh) |
EP (1) | EP2763047A3 (zh) |
JP (1) | JP2014154155A (zh) |
KR (1) | KR20140099827A (zh) |
CN (1) | CN103970688B (zh) |
TW (1) | TW201439772A (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9547472B2 (en) * | 2013-09-18 | 2017-01-17 | HGST Netherlands B.V. | ACK-less protocol for noticing completion of read requests |
US9778859B2 (en) | 2013-09-18 | 2017-10-03 | Western Digital Technologies, Inc. | Doorless protocol having multiple queue read requests in flight |
US9304690B2 (en) * | 2014-05-07 | 2016-04-05 | HGST Netherlands B.V. | System and method for peer-to-peer PCIe storage transfers |
CN104317656B (zh) * | 2014-10-14 | 2018-01-16 | 深圳市锐明技术股份有限公司 | 一种块设备输入输出请求调度的方法及装置 |
WO2016059715A1 (ja) * | 2014-10-17 | 2016-04-21 | 株式会社日立製作所 | 計算機システム |
CN104536701B (zh) * | 2014-12-23 | 2018-02-06 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
JP6763307B2 (ja) * | 2015-01-16 | 2020-09-30 | 日本電気株式会社 | 計算機、デバイス制御システムおよびデバイス制御方法 |
KR102317787B1 (ko) | 2015-02-11 | 2021-10-26 | 삼성전자주식회사 | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 |
US9542269B1 (en) | 2015-06-29 | 2017-01-10 | SK Hynix Inc. | Controller controlling semiconductor memory device and operating method thereof |
CN104991745B (zh) * | 2015-07-21 | 2018-06-01 | 浪潮(北京)电子信息产业有限公司 | 一种存储系统数据写入方法和系统 |
SG11201709668SA (en) * | 2015-07-22 | 2017-12-28 | Huawei Tech Co Ltd | Computer device and method for reading/writing data by computer device |
US20180203813A1 (en) * | 2015-09-29 | 2018-07-19 | Shannon Systems Ltd. | Methods for processing return entities associated with multiple requests in single interrupt service routine thread and apparatuses using the same |
CN109117095B (zh) * | 2015-10-10 | 2021-06-15 | 北京忆芯科技有限公司 | NVMe协议处理器及其处理方法 |
US10423568B2 (en) * | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
CN106919531B (zh) * | 2015-12-25 | 2020-02-21 | 华为技术有限公司 | 基于非易失性存储总线协议的交互方法及设备 |
US10140057B2 (en) | 2016-02-18 | 2018-11-27 | Micron Technology, Inc. | Apparatuses and methods for multiple address registers for a solid state device |
CN113407244A (zh) * | 2016-03-01 | 2021-09-17 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的系统和方法 |
CN105892945B (zh) * | 2016-03-30 | 2019-09-20 | 深圳忆联信息系统有限公司 | 一种信息更新方法及电子设备 |
CN107852344B (zh) * | 2016-04-29 | 2021-03-30 | 华为技术有限公司 | 存储网元发现方法及装置 |
KR101888405B1 (ko) * | 2016-06-01 | 2018-08-14 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
KR20180010951A (ko) * | 2016-07-22 | 2018-01-31 | 삼성전자주식회사 | 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 |
KR20180043451A (ko) * | 2016-10-19 | 2018-04-30 | 삼성전자주식회사 | 컴퓨팅 시스템 및 그것의 동작 방법 |
KR20180069960A (ko) | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
CN107102822B (zh) * | 2017-04-27 | 2020-01-03 | 杭州迪普科技股份有限公司 | 一种数据回写方法及装置 |
CN109840232B (zh) * | 2017-11-28 | 2022-05-13 | 华为技术有限公司 | 存储设备及存储设备的元件管理方法 |
US11016890B2 (en) * | 2018-02-05 | 2021-05-25 | Micron Technology, Inc. | CPU cache flushing to persistent memory |
US10564886B2 (en) | 2018-02-20 | 2020-02-18 | Western Digital Technologies, Inc. | Methods and apparatus for controlling flash translation layer recycle from host |
JP2019175292A (ja) * | 2018-03-29 | 2019-10-10 | 東芝メモリ株式会社 | 電子機器、コンピュータシステム、および制御方法 |
EP3614253B1 (en) * | 2018-06-30 | 2022-02-09 | Huawei Technologies Co., Ltd. | Data processing method and storage system |
JP7191967B2 (ja) | 2018-06-30 | 2022-12-19 | 華為技術有限公司 | NVMeベースのデータ読み取り方法、装置及びシステム |
CN111542803B (zh) | 2018-06-30 | 2021-10-01 | 华为技术有限公司 | 一种基于NVMe的数据写入方法、装置及系统 |
CN109165105A (zh) * | 2018-08-17 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种主机和物理机系统 |
CN109582247B (zh) * | 2018-12-10 | 2022-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种主机到存储系统io的传输方法及存储系统 |
CN111610930B (zh) | 2019-02-26 | 2023-05-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
TWI706250B (zh) * | 2019-02-26 | 2020-10-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN111610929B (zh) | 2019-02-26 | 2023-04-14 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN111611178B (zh) | 2019-02-26 | 2023-05-26 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN111610931B (zh) | 2019-02-26 | 2023-05-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN109992534B (zh) * | 2019-03-22 | 2020-10-20 | 华北电力大学 | 一种在线快速搜索单线器件序列号的方法及系统 |
KR20210080761A (ko) * | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
KR20210157793A (ko) * | 2020-06-22 | 2021-12-29 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
CN111831226B (zh) * | 2020-07-07 | 2023-09-29 | 山东华芯半导体有限公司 | 一种自主输出nvme协议命令加速处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101063961A (zh) * | 2006-04-25 | 2007-10-31 | 英业达股份有限公司 | 刻录系统及其方法 |
CN102841879A (zh) * | 2007-10-03 | 2012-12-26 | 佳能株式会社 | 存储器访问控制装置、存储器系统和存储器访问控制方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622227B2 (en) * | 2000-12-27 | 2003-09-16 | Intel Corporation | Method and apparatus for utilizing write buffers in memory control/interface |
US7552144B2 (en) * | 2002-12-31 | 2009-06-23 | International Business Machines Corporation | System and method for central refresh of place objects |
US20050038946A1 (en) * | 2003-08-12 | 2005-02-17 | Tadpole Computer, Inc. | System and method using a high speed interface in a system having co-processors |
JP2007241612A (ja) * | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | マルチマスタシステム |
US7890696B2 (en) * | 2006-06-29 | 2011-02-15 | Seagate Technology Llc | Command queue ordering with directional and floating write bands |
JP2008077418A (ja) * | 2006-09-21 | 2008-04-03 | Sanyo Electric Co Ltd | メモリアクセス装置 |
JP2010512584A (ja) | 2006-12-06 | 2010-04-22 | フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) | 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法 |
US7921178B2 (en) | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
US8055816B2 (en) * | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8732396B2 (en) * | 2009-06-08 | 2014-05-20 | Lsi Corporation | Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system |
US8463979B2 (en) * | 2009-09-08 | 2013-06-11 | Ocz Technology Group Inc. | Non-volatile storage devices, methods of addressing, and control logic therefor |
US20110060869A1 (en) * | 2009-09-08 | 2011-03-10 | Ocz Technology Group, Inc. | Large capacity solid-state storage devices and methods therefor |
US8996794B2 (en) * | 2009-12-11 | 2015-03-31 | International Business Machines Corporation | Flash memory controller |
JP4829370B1 (ja) * | 2010-07-09 | 2011-12-07 | 株式会社東芝 | メモリ制御装置、メモリ装置および停止制御方法 |
US8495258B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
US9098209B2 (en) * | 2011-08-24 | 2015-08-04 | Rambus Inc. | Communication via a memory interface |
KR101880452B1 (ko) * | 2012-02-06 | 2018-08-17 | 삼성전자주식회사 | 커널 수행 순서 스케줄링 방법 및 장치 |
US8856479B2 (en) * | 2012-04-20 | 2014-10-07 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware operations completion coalescence |
-
2013
- 2013-02-04 US US13/758,853 patent/US9256384B2/en active Active
-
2014
- 2014-01-17 TW TW103101884A patent/TW201439772A/zh unknown
- 2014-01-29 CN CN201410042732.7A patent/CN103970688B/zh active Active
- 2014-01-29 KR KR1020140011535A patent/KR20140099827A/ko not_active Application Discontinuation
- 2014-02-03 EP EP14153655.7A patent/EP2763047A3/en not_active Ceased
- 2014-02-04 JP JP2014018979A patent/JP2014154155A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101063961A (zh) * | 2006-04-25 | 2007-10-31 | 英业达股份有限公司 | 刻录系统及其方法 |
CN102841879A (zh) * | 2007-10-03 | 2012-12-26 | 佳能株式会社 | 存储器访问控制装置、存储器系统和存储器访问控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140223071A1 (en) | 2014-08-07 |
JP2014154155A (ja) | 2014-08-25 |
CN103970688A (zh) | 2014-08-06 |
EP2763047A3 (en) | 2018-01-10 |
EP2763047A2 (en) | 2014-08-06 |
US9256384B2 (en) | 2016-02-09 |
KR20140099827A (ko) | 2014-08-13 |
TW201439772A (zh) | 2014-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970688B (zh) | 缩短数据存储系统中写入等待时间的方法和系统 | |
CN108292196B (zh) | 数据写入方法、装置和计算机可读存储介质 | |
KR101573591B1 (ko) | 메모리 시스템 제어기를 구비하는 장치 및 관련 방법 | |
US8924659B2 (en) | Performance improvement in flash memory accesses | |
KR101532863B1 (ko) | 메모리 시스템 제어기를 구비하는 장치 및 관련 방법 | |
CN105867840B (zh) | 闪存组件及非易失性半导体存储器组件 | |
US8250283B1 (en) | Write-distribute command for RAID mirroring | |
US9213500B2 (en) | Data processing method and device | |
CN103999060A (zh) | 固态存储管理 | |
US8949509B2 (en) | Mass storage systems and methods using solid-state storage media and ancillary interfaces for direct communication between memory cards | |
US9977602B2 (en) | Storage system, storage device, and control method of storage system | |
CN103403667A (zh) | 数据处理方法和设备 | |
KR20130107070A (ko) | Ssd 콘트롤러 및 그의 제어 방법 | |
US9015373B2 (en) | Storage apparatus and method of controlling storage apparatus | |
CN103002046A (zh) | 多系统数据拷贝的rdma架构 | |
CN109164976A (zh) | 利用写缓存优化存储设备性能 | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
KR102366512B1 (ko) | 논리 블록 어드레싱 범위 충돌 크롤러 | |
CN108984108A (zh) | 用于调度io命令的方法与固态存储设备 | |
JP2002157091A (ja) | ストレージサブシステム及びそのシステムに使用する記憶装置 | |
US9639417B2 (en) | Storage control apparatus and control method | |
JP4379836B2 (ja) | 入出力制御装置 | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
JP2019121129A (ja) | 不揮発性メモリモジュール | |
KR20230144434A (ko) | 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181017 Address after: Singapore Singapore Patentee after: Avago Technologies General IP (Singapore) Pte. Ltd. Address before: California, USA Patentee before: LSI Corp. |
|
TR01 | Transfer of patent right |