CN101131675A - 预防存储控制器的分区高速缓存中写饥饿的装置和方法 - Google Patents

预防存储控制器的分区高速缓存中写饥饿的装置和方法 Download PDF

Info

Publication number
CN101131675A
CN101131675A CNA2007101465487A CN200710146548A CN101131675A CN 101131675 A CN101131675 A CN 101131675A CN A2007101465487 A CNA2007101465487 A CN A2007101465487A CN 200710146548 A CN200710146548 A CN 200710146548A CN 101131675 A CN101131675 A CN 101131675A
Authority
CN
China
Prior art keywords
write cache
low performance
memory device
memory
storage 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
Application number
CNA2007101465487A
Other languages
English (en)
Other versions
CN101131675B (zh
Inventor
R·A·库博
K·J·阿什
M·J·卡洛斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101131675A publication Critical patent/CN101131675A/zh
Application granted granted Critical
Publication of CN101131675B publication Critical patent/CN101131675B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices

Abstract

公开了一种装置、系统和方法,用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。包括了存储设备分配模块来为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制。该存储设备写高速缓存限制包括对写操作而言存储设备可用的存储控制器的写高速缓存的最大数量。至少一个存储设备包括低性能存储设备,且该存储设备可用的存储总量包括大于该写高速缓存的总存储容量的数量。包括了低性能写高速缓存限制模块来设置低性能写高速缓存限制。该低性能写高速缓存限制包括对写操作而言可供所述至少一个低性能存储设备使用的写高速缓存的数量。所述至少一个低性能存储设备可用的写高速缓存的数量包括小于该写高速缓存的总存储容量的数量。

Description

预防存储控制器的分区高速缓存中写饥饿的装置和方法
技术领域
本发明涉及管理存储控制器中的写高速缓存,并且更特别地,涉及预防存储控制器的分区写高速缓存中的写饥饿(write starvation)。
背景技术
本发明是在现有技术上的改进,其包括涉及Kevin J.Ash于2004年8月10日授权的美国专利No.6,775,738的专利,下文通过引用的方式将其并入本说明书。存储控制器(例如,来自国际商业机器公司的EnterpriseStorage Server)管理从网络上的主计算机到一个或多个存储设备的存储请求和检索。存储设备可以包括各种形式的硬盘驱动器,例如直接访问存储设备(“DASD”)、廉价/独立磁盘冗余阵列(“RAID”),以及简单磁盘捆绑(“JBOD”)。存储控制器还可以访问诸如磁带驱动器、光驱动器等的其它存储设备。
存储控制器通常包括通用高速缓冲存储器(高速缓存),其是易失性存储器,其中在存储控制器断电、在重新引导时等情况下,会丢失内容。另外,很多存储控制器包括非易失性存储器(“NVS”)形式的写高速缓存,其包括某种形式的备用电力,例如电池,以便预防在断电、重新引导等情况下内容的丢失。
通常,当存储控制器接收到将文件更新或完整文件存储到存储控制器可访问的存储设备上的请求时,存储控制器对数据使用快写操作。在快写操作中,存储控制器向高速缓存写入文件更新或完整文件的一个副本以及向写高速缓存写入文件更新或完整文件的一个副本,并且然后通知主机写过程完成。(为了简明起见,此后术语“更新”包括文件更新、完整文件,或者请求存储到存储设备上的任何其它的数据。)存储控制器然后使用离台(destage)过程将更新从高速缓存复制到目标存储设备。在向目标存储设备写入更新时,快写过程比与主机保持连接更有效率。
将更新的副本存储在写高速缓存中,以确保在电力失效、系统重新引导或其它问题造成高速缓存的内容在将更新离台至目标存储控制器之前丢失的情况下不丢失更新。在将更新离台至存储设备之后,高速缓存和写高速缓存中该更新的位置可以被分配给另一使用。通常写高速缓存具有比写操作可用的高速缓存实质上小的存储空间。
在对在存储请求中可以使用多少写高速缓存方面没有任何限制的情况下,存储设备可以控制对损害请求存储更新的其它主机的写高速缓存的使用。例如,在存在连接至存储控制器的多个存储设备的情况下,例如RAID阵列,高速缓存和写高速缓存可以存储打算给多个存储设备的更新。倘若写高速缓存实质上充满了给一个目标存储设备的更新并且该目标存储设备出现故障,那么如果写高速缓存充满了来自故障存储设备的数据,则不能够对指向幸存(surviving)存储设备的写入返回完成状态。除非将更新复制到高速缓存和写高速缓存二者才返回完成状态。
在另一例子中,如果存储设备低速处理存储请求,则该存储设备可以控制写高速缓存。可以在将更新离台至较慢者的程度上对提交存储请求的其它过程进行延迟,控制存储设备。如果由于故障驱动器导致重建存储设备中的一个或多个磁盘驱动器,或者如果到写高速缓存中的控制存储设备的更新主要包括随机(非顺序)更新,则对控制存储设备的离台操作可以低速运行。随机更新可能花费较长时间离台,因为它们具有较长的磁盘访问时间,并且在RAID环境中,需要对每个随机更新进行恒定的奇偶校验重新计算。可以将一个或多个存储设备控制写高速缓存并且对处理其它存储请求造成延迟称为写饥饿。
在所引用的Ash的专利(下文称为“Ash”)中给出了一种改进。在Ash中,向存储控制器可访问的存储设备分配存储设备可以使用的最大比例的写高速缓存。首先,确定存储控制器可访问的存储设备的数目。然后将存储设备写高速缓存限制(NVS阈值)分派给每个等级。等级可以包括单个存储设备或一组存储设备,例如在RAID阵列或JBOD中。然后可以向每个等级分派统一的存储设备写高速缓存限制或者可以向每个等级分派不同的存储设备写高速缓存限制。
对于效率,每个等级可用的写高速缓存的数量总计可以超过可用写高速缓存的100%。通常,如果有四个或更多的等级,则每个等级的存储设备写高速缓存限制是25%。限制等级的写高速缓存的可用性有助于解决存储设备或等级控制写高速缓存并造成写饥饿的问题。然而,引入高容量、低成本的邻线(nearline)存储设备给出了在预防写高速缓存的写饥饿方面的另外的挑战。邻线存储设备是在线存储设备和离线存储设备之间的折衷。在线存储设备可以以具有对数据恒定、非常快速的访问为特征。离线存储设备的特征在于出于备份目的或长期存储的非常见访问。
诸如光纤信道ATA(高级技术配件)驱动器或串行ATA驱动器这样的邻线存储设备由于其每字节的低成本是具有吸引力的。然而,邻线存储设备具有与在线、服务器类存储设备不同的可靠性特性,其中当施加服务器类存储设备工作负荷时,服务器类存储设备揭露邻线存储设备有故障。邻线存储设备通过基于工作负荷调整其操作行为来补偿其限制。为了限制机械部分上的压力以及预防邻线存储设备随后的故障,供应商已经实现了抑制设备活动的方法。虽然抑制设备活动限制了机械压力,但却降低了时间响应特性和性能。
将邻线存储设备引入上述分区高速缓存系统造成了其中可能发生写饥饿的情况。如果存储控制器可访问多个邻线存储设备,而每个邻线存储设备均可以由分配的存储设备写高速缓存限制所限制,则邻线存储设备的组合可以各自使用其被分配的写高速缓存并且引起写查找。例如,四个或更多的邻线存储设备可以由存储控制器访问,并且具有25%的存储设备写高速缓存限制。随着工作负荷在邻线设备上增加,邻线存储设备可能开始减速(throttle back)。当邻线存储设备减速时,到邻线存储设备的离台花费比最优操作更多的时间,并且处于负荷之下的每个邻线存储设备然后可能占用更多的写高速缓存。四个邻线存储设备中的每一个均可以占用达25%的写高速缓存并且控制整个写高速缓存。
根据前述讨论,存在对这样一种装置、系统和方法的需要应该是显而易见的,即这种装置、系统和方法预防了具有对邻线、低性能存储设备的访问的存储控制器的写饥饿。有益地,这样的装置、系统和方法将限制存储控制器可访问的邻线、低性能存储设备可用的写高速缓存的数量。
发明内容
响应于现有技术的当前状况,并且特别地,响应于现有技术中尚未由当前可用的存储控制器完全解决的问题和需要已经开发了本发明。因此,已经开发了本发明以提供一种用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的装置、系统和方法,其克服了现有技术中上述很多或所有缺点。
给出了本发明的一种方法,用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。所公开的实施例中的方法实质上包括实现以下关于所描述的装置和系统的操作所给出的功能所必需的步骤。在一个实施例中,所述方法包括为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制。所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量。至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量。
所述方法包括设置低性能写高速缓存限制。所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量。所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。在一个实施例中,所述低性能存储设备包括被配置以响应于重工作负荷而降低性能的存储设备。在另一实施例中,所述低性能存储设备包括邻线存储设备。在另一实施例中,所述写高速缓存包括非易失性存储器。
所述方法还可以包括:接收将更新存储到低性能存储设备的请求;响应于所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述存储设备写高速缓存限制,以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述低性能写高速缓存限制,将所述更新存储在所述写高速缓存中;以及将所述更新写入所述低性能存储设备。在另一实施例中,所述方法包括:接收将更新存储到低性能存储设备的请求;以及响应于所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量大于所述存储设备写高速缓存限制,或者所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量大于所述低性能写高速缓存限制,延迟对所述更新的存储。在另一实施例中,延迟对所述更新的存储包括:对重新连接请求所述更新的主机所要求的重新连接参数进行排队,以及从所述主机断开。
在进一步的实施例中,至少一个存储设备包括廉价磁盘冗余阵列(“RAID”)阵列。在另一实施例中,每个存储设备可用的写高速缓存的最大数量大于所述写高速缓存的总存储容量除以所述存储控制器可访问的存储设备的总数。在另一实施例中,所述存储控制器可访问的每个存储设备的存储设备写高速缓存限制包括对于每个存储设备相等的数量。在又一实施例中,所述存储控制器可访问的每个存储设备的存储设备写高速缓存限制包括对于每个存储设备不同的限制。在一个实施例中,当所述存储控制器可访问四个或更多的存储设备时,存储设备的存储设备写高速缓存限制被限制在所述写高速缓存的总存储容量的25%。在另一实施例中,当所述存储控制器可访问两个或更多的低性能存储设备时,所述低性能写高速缓存限制不超过所述写高速缓存的总存储容量的一半。
提供了一种预防存储控制器的分区高速缓存中的写饥饿的装置,其具有被配置以在功能上执行分派存储写高速缓存限制以及低性能写高速缓存限制的必要步骤的多个模块。所描述的实施例中的这些模块包括存储设备分配模块,其为存储控制器可访问的每个存储设备分派存储写高速缓存限制。所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量。至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量。所述装置包括低性能写高速缓存限制模块,其设置低性能写高速缓存限制。所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量。所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。
在一个实施例中,所述装置被配置以包括:请求模块,其接收将更新存储到低性能存储设备的请求;写高速缓存存储模块,其将所述更新存储在所述写高速缓存中;以及离台模块,其将所述更新离台至所述低性能存储设备。响应于所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述存储设备写高速缓存限制,以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述低性能写高速缓存限制,所述写高速缓存存储模块将所述更新存储在所述写高速缓存中。在一个实施例中,所述存储控制器包括易失性高速缓存,并且所述写高速缓存存储模块将所述更新的副本存储在所述写高速缓存中以及将所述更新的副本存储在所述易失性高速缓存中,并且所述离台模块将所述更新从所述易失性高速缓存离台至所述低性能存储设备。
在一个实施例中,所述装置被进一步配置以包括延迟模块,响应于所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量大于所述存储设备写高速缓存限制,或者所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量大于所述低性能写高速缓存限制,所述延迟模块延迟对所述更新的存储。
还给出了本发明的一种预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的系统。所述系统可以由多个存储设备来体现,其中所述存储设备中的至少一个包括低性能存储设备,以及连接至所述多个存储设备的存储控制器。特别地,在一个实施例中,所述存储控制器包括存储设备分配模块,其为所述存储控制器可访问的每个存储设备分派存储写高速缓存限制。所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量。至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量。
所述存储控制器包括低性能写高速缓存限制模块,其设置低性能写高速缓存限制。所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量。所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。所述系统可以进一步包括通过所述存储控制器具有对所述存储设备中至少一个的访问的主机,其中所述存储控制器用于将更新写入所述至少一个存储设备。在一个实施例中,主机通过存储区域网与所述存储控制器进行通信。
贯穿本说明书所谈及的特征、优点或类似的语言并不暗指随本发明可以实现的所有特征和优点应当在或者是在本发明的任何单个的实施例中。更确切地,将涉及特征和优点的语言理解为意指在本发明的至少一个实施例中包括了结合实施例所描述的具体特征、优点或特性。因而,贯穿本说明书所讨论的特征和优点以及类似的语言可以,但不一定,指的是相同的实施例。
此外,可以在一个或多个实施例中以任何适当的方式结合所描述的本发明的特征、优点以及特性。相关领域的技术人员可以认识到,在不具有特定实施例的一个或多个具体特征或优点的情况下仍然可以实践本发明。在其它的实例中,可以在特定的实施例中认识到在本发明的所有实施例中可能没有呈现的另外的特征和优点。
根据下面的描述以及所附的权利要求,本发明的这些特征和优点将变得更加充分显见,或者通过下文所阐述的本发明的实践可以获悉本发明的这些特征和优点。
附图说明
为了将更容易理解本发明的优点,通过参照附图中所说明的具体实施例将给出对以上简要描述的本发明的更具体的描述。理解到这些附图仅描绘了本发明的典型实施例,并不因此而被认为是对其范围的限制,通过使用附图,将利用附加的特征和细节描述和解释本发明,其中:
图1是说明了依照本发明的系统的一个实施例的示意性框图,该系统预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;
图2是说明了依照本发明的存储控制器的高速缓存的一个实施例的示意性框图,该存储控制器具有对低性能存储设备的访问以及具有预防存储控制器中的写饥饿的装置;
图3是说明了依照本发明的装置的一个实施例的示意性框图,该装置预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;
图4是说明了依照本发明的装置的另一实施例的示意性框图,该装置预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;
图5是说明了依照本发明的方法的一个实施例的示意性流程图,该方法用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;以及
图6是说明了依照本发明的方法的另一实施例的示意性流程图,该方法用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。
具体实施方式
本说明书中所描述的很多功能单元已经被标记为模块,以便更具体地强调其实现独立性。例如,模块可以作为包括定制VLSI电路或门阵列的硬件电路、诸如逻辑芯片、晶体管或其它分立元件的现成半导体来实现。模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等的可编程硬件设备中实现。
模块还可以在由各种类型的处理器执行的软件中实现。举例来说,可执行代码的标识模块可以包括可以例如组织为对象、过程或函数的计算机指令的一个或多个物理或逻辑块。然而,标识模块的可执行体不需要在物理上位于一起,但却可以包括存储在不同位置的不同指令,当在逻辑上连接在一起时,其包括该模块并且实现对该模块所规定的目的。
实际上,可执行代码的模块可以是单个指令或很多指令,并且甚至可以分布在几个不同的代码段上、在不同的程序间,以及跨几个存储设备。类似地,文中可以在模块内标识和说明操作数据,并且可以以任何适当的形式体现以及在任何适当类型的数据结构中组织操作数据。操作数据可以作为单个数据集来收集,或者可以分布在不同位置上(包括分布在不同存储设备上),以及可以(至少部分地)仅作为系统或网络上的电子信号而存在。
贯穿本说明书所谈及的“一个实施例”、“实施例”或类似的语言意味着在本发明的至少一个实施例中包括了结合实施例所描述的特定特征、结构或特性。因而,贯穿本说明书所出现的短语“在一个实施例中”、“在实施例中”以及类似的语言可以,但不一定,都指的是相同的实施例。
涉及的信号承载介质可以采取能够产生信号、导致信号产生或导致执行数字处理装置上的机器可读指令的程序的任何形式。信号承载介质可以由传输线、压缩磁盘、数字视盘、磁带、Bernoulli驱动器、磁盘、穿孔卡片、闪速存储器、集成电路或其它数字处理装置存储设备来体现。
此外,可以在一个或多个实施例中以任何适当的方式结合所描述的本发明的特征、结构或特性。在下面的描述中,提供了各种具体的细节,例如编程的例子、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等,以便提供对本发明的实施例的透彻理解。然而,相关领域的技术人员可以认识到,在不具有一个或多个具体细节的情况下,或者利用其它的方法、组件、材料等,仍然可以实践本发明。在其它的实例中,并未详细示出或描述公知的结构、材料或操作,以免模糊本发明的方面。
文中所描述的示意性流程图通常作为逻辑流程图来阐述。如此,图示的顺序以及标记的步骤表示的是所给出的方法的一个实施例。可以构想出在功能、逻辑或效果上等效于所说明的方法的一个或多个步骤或其部分的其它步骤和方法。另外,提供了所采用的格式和符号来解释该方法的逻辑步骤,并且可以理解这些格式和符号并不对该方法的范围进行限制。尽管在流程图中可以采用各种箭头类型和线条类型,然而要理解到它们并不对相应方法的范围进行限制。实际上,可以使用一些箭头或其它连接符来仅仅指示该方法的逻辑流程。例如,箭头可以指示在所述方法的枚举步骤之间,未指定的持续时间的等待或监控周期。另外,其中特定方法发生的顺序可以或不必严格遵守所示出的相应步骤的顺序。
图1描绘了说明依照本发明的系统100的一个实施例的示意性框图,该系统100预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。系统100包括存储控制器102,其具有对存储设备104、106的访问,存储设备104、106中的一些是低性能存储设备106。存储控制器102通过计算机网络110与一个或多个主机108进行通信。存储控制器102包括处理器112、计算机代码114、高速缓存116以及写高速缓存118。下面对设备和组件进行描述。
系统100包括存储控制器102。存储控制器102可以是EnterpriseStorage Server或类似的服务器或系统的一部分。存储控制器102可以包括单个计算机或计算机网络。存储控制器102可以是文件服务器的一部分或者可以是独立的计算机。存储控制器102访问多个存储设备104、106。存储控制器102可以通过存储区域网(“SAN”)、广域网、局域网、光纤信道网络、因特网等来访问存储设备104。
存储设备104、106包括多个低性能存储设备106a、b、...n。系统100包括至少一个低性能存储设备106a。存储设备通常是硬盘驱动器,但却还可以包括闪速存储器、光驱动器、磁带驱动器、RAID阵列、JBOD、DASD等。低性能驱动器106可以是高容量、低成本的邻线驱动器。低性能驱动器106可以是邻线存储设备。
低性能驱动器106通常在重工作负荷下具有有限的性能能力。例如,低性能驱动器106可以在重负荷期间减速以便在降低的性能级别操作。降低的性能可以包括以较低的速度操作、允许较少的读/写操作等。低性能存储设备106可以包括光纤信道ATA和串行ATA存储设备。其它存储设备104通常是服务器类设备并且可以不在负荷下显著降低性能。
存储控制器102通常从通过计算机网络110连接的一个或多个主机108接收写请求。主机108可以是服务器、工作站、个人计算机、大型计算机、膝上型计算机等。计算机网络110可以包括广域网、局域网、SAN、因特网、光纤信道网络等,并且可以包括网络类型的组合。计算机网络110可以包括集成服务器、集线器、交换机、电缆、路由器等。
存储控制器102包括处理器112,例如执行代码114以实现存储控制器操作的中央处理器(“CPU”)。计算机代码114可以存储在随机访问存储器(“RAM”)或处理器112可访问的其它位置。存储控制器102包括高速缓存116。高速缓存116通常是易失性存储器并且可以用于写操作。高速缓存116还可以用于存储控制器102操作必要的其它操作。
存储控制器102还包括写高速缓存118。在一个实施例中,写高速缓存118用于写操作,并且可以被称为非易失性存储器(“NVS”)。在一个实施例中,写高速缓存118可以用于其它的输入/输出操作或者其中期望在电力失效、重新引导或导致高速缓存116中数据丢失的其它情况下不丢失数据的其它功能。写高速缓存118可以由电池、不间断电源等来维护,或者可以包括闪速存储器或者在缺少外加电力的情况下维护其内容的其它存储器。本领域的技术人员可以认识到在缺少外加电力的情况下能够维护数据的写高速缓存118的其它形式。
图2是说明了依照本发明的存储控制器102的写高速缓存118的一个实施例的示意性框图,该存储控制器102具有对低性能存储设备106的访问以及具有预防存储控制器102中的写饥饿的装置。在一个实施例中,写高速缓存118包括存储设备写高速缓存限制202以及低性能写高速缓存限制204。写高速缓存118还可以包括重新连接队列206a、b、...n,使用的百分比写高速缓存208a、b、...n,以及存储控制器102可访问的每个存储设备104、106的中间计数器210a、b、...n。
限制202、204、队列206、使用的百分比写高速缓存208以及计数器210可以如所示位于写高速缓存118中,或者可以位于其它地方,例如高速缓存116、外部存储器、RAM或处理器112可访问的其它位置。限制202、204、队列206、使用的百分比写高速缓存208以及计数器210的位置可以在一起或分开。限制202、204、队列206、使用的百分比写高速缓存208以及计数器210可以是变量并且可以位于数据结构、阵列、表格等中。在一个实施例中,限制202、204、队列206、使用的百分比写高速缓存208以及计数器210可以不全部存在。在下面的附图中较为详细地描述了限制202、204、队列206、使用的百分比写高速缓存208以及计数器210。
图3是说明了依照本发明的装置300的一个实施例的示意性框图,该装置300预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。装置300包括具有存储设备分配模块302和低性能写高速缓存限制模块304的存储控制器102,在下面对其进行了描述。存储控制器102实质上类似于关于图1所描述的存储控制器102。
存储设备分配模块302为存储控制器102可访问的每个存储设备104、106分派存储写高速缓存限制202。在一个实施例中,存储设备写高速缓存限制202是对于写操作来说存储设备104、106可用的存储控制器102的写高速缓存118的最大数量。在一个实施例中,存储设备分配模块302为存储设备104、106分派一个存储设备写高速缓存限制202。在另一实施例中,存储设备分配模块302为每个存储设备104、106分派唯一的存储没备写高速缓存限制202。唯一的存储设备写高速缓存限制202对于一些存储设备104、106可以是相同的值。
在一个实施例中,存储设备分配模块302为RAID阵列分派存储设备写高速缓存限制202。在另一实施例中,存储设备分配模块302为RAID阵列中的每个存储设备104、106分派存储设备写高速缓存限制202。在另一实施例中,存储设备分配模块302基于存储设备104、106的大小,为每个存储设备104、106分派存储设备写高速缓存限制202。在又一实施例中,存储设备分配模块302基于优先级系统分派存储设备写高速缓存限制202。本领域的技术人员可以认识到存储设备分配模块302可以分派存储设备写高速缓存限制202的其它方式。
通常,装置300包括至少一个低性能存储设备106。低性能存储设备106可以是邻线存储设备并且实质上类似于关于图1所描述的低性能存储设备106。同样,通常存储设备104、106可用的存储总量包括大于写高速缓存118的总存储容量的数量。选择存储设备104、106可用的存储总量通常比划分存储空间更有效率,所以分配的总量小于或等于可用空间。
在存储控制器102可访问很多存储设备104、106的情况下,来自主机108的存储请求可以要求存储设备104、106在一段时间有效(需要高速缓存116和写高速缓存118的相当大的一部分用于一个或多个写操作),然后却可能待用相当长一段时间。在一个实施例中,在有四个或更多的存储设备104、106对于存储控制器102是可访问的情况下,存储设备分配模块302分派写高速缓存118的25%大小的存储设备写高速缓存限制202。本领域的技术人员可以认识到基于存储控制器102可访问的存储设备104、106的其它存储设备写高速缓存限制202。
在存储控制器102可访问慢速存储设备104、106的情况下,可能会产生问题,其中慢速存储设备控制写高速缓存118并且导致写饥饿。分派存储设备写高速缓存限制202缓解了该问题。然而,当存储控制器102可访问一组邻线存储设备或类似的低性能存储设备106的时候,该组可能会在存储控制器102的典型工作负荷之下全部减速。尽管每个低性能存储设备106均可以由存储设备写高速缓存限制202来限制,然而该组仍可能控制写高速缓存118并且可能导致写饥饿。
为此,装置300包括低性能写高速缓存限制模块304,其设置低性能写高速缓存限制204。在一个实施例中,低性能写高速缓存限制204包括对于写操作来说可供至少一个低性能存储设备106使用的写高速缓存118的数量。低性能存储设备106可用的写高速缓存118的数量包括小于写高速缓存118的总存储容量的数量。通常,当存储控制器102可访问一组低性能存储设备106时,由于在负荷之下往回抑制性能或导致低性能的类似动作,该组可能控制写高速缓存118。低性能写高速缓存限制模块304设置低性能写高速缓存限制204,以便预防该组低性能存储设备106控制写高速缓存118和导致写饥饿。在一个实施例中,低性能写高速缓存限制模块304设置写高速缓存118的50%大小的低性能写高速缓存限制204。本领域的技术人员可以认识到在存储控制器102可访问一组低性能存储设备106的情况下,适于写高速缓存118的其它低性能写高速缓存限制204。
低性能写高速缓存限制204通常限制可供存储控制器102可访问的低性能存储设备106使用的写高速缓存118的数量。通常,由低性能存储设备106a所使用的写高速缓存118的数量是由分派的存储设备写高速缓存限制202以及低性能写高速缓存限制204来限制的。例如,如果分派给低性能存储设备106a的存储设备写高速缓存限制202是25%,并且写高速缓存118的10%具有将要离台至低性能存储设备106a的更新,则如果该更新占用小于写高速缓存118的15%,就会接受来自主机108的对打算给低性能存储设备106a的更新进行存储的写请求。然而,低性能写高速缓存限制204被设置在50%,并且写高速缓存118的45%包括打算给低性能存储设备106a、b、...n的更新,则不会接受该更新并且将对其进行延迟。
在一个实施例中,存储控制器102的写高速缓存118包括使用的写高速缓存百分比208变量。每个存储设备104、106均具有使用的写高速缓存百分比变量208a、b、...n。每个使用的写高速缓存百分比变量208a、b、...n由存储控制器102用来跟踪有多少写高速缓存118充满了给特定存储设备104、106的更新。在另一实施例中,存储控制器102的写高速缓存118包括每个存储设备104、106的重新连接队列206a、b、...n。重新连接队列206用于在出于某种原因拒绝写请求时存储用于重新连接至主机108的参数。
图4是说明了依照本发明的装置400的另一实施例的示意性框图,该装置400预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。装置400包括具有存储设备分配模块302和低性能写高速缓存限制模块304的存储控制器102,其实质上类似于关于图3的装置300所描述的存储控制器102和模块。另外,存储控制器102包括下面描述的请求模块402、写高速缓存存储模块404、离台模块406以及延迟模块408。
存储控制器102包括请求模块402,其接收将更新存储到低性能存储设备106a的请求。通常从主机108接收存储更新的请求,但却还可以从与存储控制器102通信的任何设备接收。更新可以包括完整文件、部分文件,或者在低性能存储设备106a上存储数据的其它请求。将更新存储到其它存储设备104之一的请求可以以类似的方式接收。请求模块402通常通过计算机网络110接收更新。
存储控制器102包括写高速缓存存储模块404,其在写高速缓存118中存储更新。在更新的大小加上待写入低性能存储设备106a的更新所占用的写高速缓存118的数量小于或等于存储设备写高速缓存限制202,并且更新的大小加上待写入存储控制器102可访问的低性能存储设备106a、b、...n的更新所占用的写高速缓存的数量小于或等于低性能写高速缓存限制204的条件下,写高速缓存存储模块404存储该更新。出现低性能存储设备106的地方,通常是两个条件在写高速缓存存储模块404将更新存储在写高速缓存118中之前均得到满足。在一个实施例中,写高速缓存存储模块404还将更新存储在高速缓存116中。写高速缓存存储模块404可以将使用的写高速缓存百分比变量208用于跟踪使用中的写高速缓存118的数量。
存储控制器102包括离台模块406,其将更新离台至低性能存储设备106a。离台模块406还可以离台打算给其它存储设备104的更新。在一个实施例中,写高速缓存存储模块404和离台模块406是将成功状态返回给这样的主机108的快写操作的一部分,即该主机108请求写操作并且在写高速缓存存储模块404将更新存储在写高速缓存118和高速缓存116中之后发送更新。该类型的写操作通常比在将更新存储在存储设备104、106中之后返回成功的操作花费更少的时间。
存储控制器102包括延迟模块408,其延迟对更新的存储。如果以下两个条件之一得到满足,则延迟模块408延迟对更新的存储:更新的大小加上待写入低性能存储设备106a的更新所占用的写高速缓存118的数量大于存储设备写高速缓存限制202,或者更新的大小加上待写入存储控制器102可访问的低性能存储设备106a、b、...n的更新所占用的写高速缓存118的数量大于低性能写高速缓存限制204。如果任一条件符合,则延迟模块408延迟对更新的存储。
在一个实施例中,重新连接队列206用于在延迟模块408延迟写请求时存储重新连接参数。当延迟模块408确定有足够的写高速缓存118可用于经延迟的更新时,存储控制器102重新连接至发送写请求的主机108,从而给予主机108将关联更新存储在写高速缓存118中的另一机会。本领域的技术人员可以认识到存储控制器102何时可以重新连接至主机108以完成写请求的条件。
在一个实施例中,写高速缓存118包括存储控制器102可访问的每个存储设备104、106的中间计数器210a、b、...n。中间计数器210旨在当出现这样的情形时允许一些更新,即存储设备写高速缓存限制202或低性能写高速缓存限制204降低并且一个或多个存储设备104、106的使用的写高速缓存百分比208实质上超过存储设备写高速缓存限制202或低性能写高速缓存限制204。在通过引用并入的Ash专利(参见图5和相关文本)中详细描述了关于存储设备写高速缓存限制202(NVS阈值30)的中间计数器的操作。中间计数器210还可以以类似的方式用于低性能写高速缓存限制204。在一个实施例中,中间计数器210n+1(未示出)可以结合低性能写高速缓存限制204使用并且用于跟踪打算给低性能存储设备106的更新正在使用的写高速缓存118的数量。本领域的技术人员可以认识到存储控制器102以其它方式使用中间计数器210,以便当一个或多个存储设备104、106所使用的写高速缓存118的数量超过存储设备写高速缓存限制202或低性能写高速缓存限制204达相当大的数量时允许一些更新。
图5是说明了依照本发明的方法500的一个实施例的示意性流程图,该方法500用于预防在具有对低性能存储设备106的访问的存储控制器102中的写饥饿。该方法500开始于502,并且存储设备分配模块302确定504存储控制器102可访问的存储设备104、106的数目。存储设备104、106的数目可以确定多个等级,其中每个等级可以是例如在RAID阵列或JBOD中的存储设备104、106或一组存储设备104、106。存储设备分配模块302分派506存储设备写高速缓存限制204。在一个实施例中,存储设备分配模块302为所有等级或存储设备104、106分派506一个存储设备写高速缓存限制204。在另一实施例中,存储设备分配模块302基于大小、优先级或其它准则为每个存储设备104、106或等级分派506存储设备写高速缓存限制204。
在一个实施例中,低性能写高速缓存限制模块304确定508存储控制器102可访问的低性能存储设备106a、b、...n的数目。在一个实施例中,低性能写高速缓存限制模块304确定508低性能存储设备106的等级数,其中一些低性能存储设备106包括RAID阵列、JBOD等。低性能写高速缓存限制模块304设置510低性能写高速缓存限制204并且方法500结束于512。低性能写高速缓存限制模块304可以设置510与低性能存储设备106的数目无关的低性能写高速缓存限制204。将低性能写高速缓存限制204设置510为小于写高速缓存118的大小以预防写饥饿。在一个实施例中,将低性能写高速缓存限制204设置为写高速缓存118的大小的50%。本领域的技术人员可以认识到用于设置510低性能写高速缓存限制204的其它准则。
图6是说明了依照本发明的方法600的另一实施例的示意性流程图,该方法600用于预防在具有对低性能存储设备106的访问的存储控制器102中的写饥饿。该方法600开始于602,并且存储设备分配模块302确定604存储控制器102可访问的等级或存储设备104、106的数目。存储设备分配模块302为每个存储设备104、106分派606存储设备写高速缓存限制202。
低性能写高速缓存限制模块304确定608存储控制器102可访问的低性能存储设备106a、b、...n的数目。低性能写高速缓存限制模块304基于低性能存储设备106的等级数以及写高速缓存118的可用空间或大小设置610低性能写高速缓存限制204。请求模块402接收612将更新存储在低性能存储设备106a上的请求。写高速缓存存储模块404确定614更新加上充满了打算存储在低性能存储设备106a上的其它更新的写高速缓存118的数量是否会超过存储设备写高速缓存限制202。
如果写高速缓存存储模块404确定614不会超过存储设备写高速缓存限制202,则写高速缓存存储模块404确定616更新加上充满了打算给低性能存储设备106中任何一个的更新的写高速缓存118的数量是否会超过低性能写高速缓存限制204。如果写高速缓存存储模块404确定616更新加上充满了打算给低性能存储设备106中任何一个的更新的写高速缓存118的数量不会超过低性能写高速缓存限制204,则写高速缓存存储模块404向写高速缓存118写入618更新。离台模块406将更新离台620至预期的低性能存储设备106并且该方法600结束于622。
如果写高速缓存存储模块404确定更新将超过存储设备写高速缓存限制202或低性能写高速缓存限制204,则延迟模块408对重新连接请求主机108所需要的参数进行排队624并且断开626主机108。离台模块406将更新离台620至存储设备104、106并且该方法600结束于622。随后对存储更新的请求通常将不需要分派存储设备写高速缓存限制202或低性能写高速缓存限制204,但通常会开始于接收612请求的请求模块402。
在不背离本发明的精神或本质特性的情况下可以以其它具体形式来体现本发明。所描述的实施例应当被认为在所有方面仅是作为说明性而非限制性的。因此,本发明的范围是由所附权利要求而不是由前述说明来指出的。属于权利要求的等同物的含义和范围内的所有变化都将包括在本发明的范围之内。

Claims (20)

1.一种用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的方法,其包括:
为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制,所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量,其中至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量;以及
设置低性能写高速缓存限制,所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量,其中所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。
2.根据权利要求1的方法,其中所述低性能存储设备包括被配置以响应于重工作负荷而降低性能的存储设备。
3.根据权利要求1的方法,其中所述低性能存储设备包括邻线存储设备。
4.根据权利要求1的方法,其中所述写高速缓存包括非易失性存储器。
5.根据权利要求1的方法,其进一步包括:
接收将更新存储到低性能存储设备的请求;以及
将所述更新存储在所述写高速缓存中,作为对以下的响应:
所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述存储设备写高速缓存限制;以及
所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述低性能写高速缓存限制;以及
将所述更新写入所述低性能存储设备。
6.根据权利要求1的方法,其进一步包括:
接收将更新存储到低性能存储设备的请求;以及
延迟对所述更新的存储,作为对以下之一的响应:
所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量大于所述存储设备写高速缓存限制;以及
所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量大于所述低性能写高速缓存限制。
7.根据权利要求6的方法,其中延迟对所述更新的存储进一步包括:对重新连接请求所述更新的主机所要求的重新连接参数进行排队,以及从所述主机断开。
8.根据权利要求1的方法,其中至少一个存储设备包括廉价磁盘冗余阵列阵列。
9.根据权利要求1的方法,其中每个存储设备可用的写高速缓存的最大数量大于所述写高速缓存的总存储容量除以所述存储控制器可访问的存储设备的总数。
10.根据权利要求1的方法,其中所述存储控制器可访问的每个存储设备的存储设备写高速缓存限制包括对于每个存储设备相等的数量。
11.根据权利要求1的方法,其中所述存储控制器可访问的每个存储设备的存储设备写高速缓存限制包括对于每个存储设备不同的限制。
12.根据权利要求1的方法,其中当所述存储控制器可访问四个或更多的存储设备时,存储设备的所述存储设备写高速缓存限制被限制在所述写高速缓存的总存储容量的25%。
13.根据权利要求1的方法,其中当所述存储控制器可访问两个或更多的低性能存储设备时,所述低性能写高速缓存限制不超过所述写高速缓存的总存储容量的一半。
14.一种预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的装置,所述装置包括:
存储设备分配模块,所述存储设备分配模块被配置以为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制,所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量,其中至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量;以及
低性能写高速缓存限制模块,所述低性能写高速缓存限制模块被配置以设置低性能写高速缓存限制,其中所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量,其中所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。
15.根据权利要求14的装置,其进一步包括:
请求模块,所述请求模块被配置以接收将更新存储到低性能存储设备的请求;
写高速缓存存储模块,所述写高速缓存存储模块被配置以将所述更新存储在所述写高速缓存中,作为对以下的响应:
所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述存储设备写高速缓存限制;以及
所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量小于或等于所述低性能写高速缓存限制;以及
离台模块,所述离台模块被配置以将所述更新离台至所述低性能存储设备。
16.根据权利要求15的装置,其中所述存储控制器进一步包括易失性高速缓存,并且其中所述写高速缓存存储模块在所述写高速缓存中存储所述更新的副本以及在所述易失性高速缓存中存储所述更新的副本,并且所述离台模块将所述更新从所述易失性高速缓存离台至所述低性能存储设备。
17.根据权利要求15的装置,其进一步包括延迟模块,所述延迟模块被配置以延迟对所述更新的存储,作为对以下之一的响应:
所述更新的大小加上待写入所述低性能存储设备的更新所占用的写高速缓存的数量大于所述存储设备写高速缓存限制;以及
所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的写高速缓存的数量大于所述低性能写高速缓存限制。
18.一种预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的系统,所述系统包括:
多个存储设备,其中所述存储设备中的至少一个包括低性能存储设备;以及
连接至所述多个存储设备的存储控制器,所述存储控制器包括:
存储设备分配模块,所述存储设备分配模块被配置以为所述存储控制器可访问的每个存储设备分派存储设备写高速缓存限制,所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量,其中至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量;以及
低性能写高速缓存限制模块,所述低性能写高速缓存限制模块被配置以设置低性能写高速缓存限制,其中所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量,其中所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。
19.根据权利要求18的系统,其进一步包括通过所述存储控制器具有对所述存储设备中至少一个的访问的主机,其中所述存储控制器用于将更新写入所述至少一个存储设备。
20.根据权利要求18的系统,其中主机通过存储区域网与所述存储控制器进行通信。
CN2007101465487A 2006-08-22 2007-08-20 预防存储控制器的分区高速缓存中写饥饿的装置和方法 Expired - Fee Related CN101131675B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/466,426 US7627714B2 (en) 2006-08-22 2006-08-22 Apparatus, system, and method for preventing write starvation in a partitioned cache of a storage controller
US11/466,426 2006-08-22

Publications (2)

Publication Number Publication Date
CN101131675A true CN101131675A (zh) 2008-02-27
CN101131675B CN101131675B (zh) 2011-01-12

Family

ID=39128947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101465487A Expired - Fee Related CN101131675B (zh) 2006-08-22 2007-08-20 预防存储控制器的分区高速缓存中写饥饿的装置和方法

Country Status (2)

Country Link
US (1) US7627714B2 (zh)
CN (1) CN101131675B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103119590A (zh) * 2010-09-24 2013-05-22 日立数据系统有限公司 在分布式数据库中管理完整性的方法和系统
CN107103652A (zh) * 2017-03-13 2017-08-29 珠海格力电器股份有限公司 数据的存储方法和装置

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009194A (ja) 2007-06-26 2009-01-15 Hitachi Ltd 消費電力を削減する機能を備えたストレージシステム
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
WO2010050947A1 (en) * 2008-10-30 2010-05-06 Hewlett-Packard Development Company, L.P. Redundant array of independent disks (raid) write cache sub-assembly
US8429348B2 (en) * 2009-03-13 2013-04-23 International Business Machines Corporation Method and mechanism for delaying writing updates to a data cache
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9684455B2 (en) 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
US8930619B2 (en) * 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9552297B2 (en) 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
US9053038B2 (en) 2013-03-05 2015-06-09 Dot Hill Systems Corporation Method and apparatus for efficient read cache operation
US9852058B2 (en) * 2012-09-28 2017-12-26 International Business Machines Corporation NVS thresholding for efficient data management
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9152563B2 (en) 2013-03-04 2015-10-06 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9842024B1 (en) * 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
CN105528303B (zh) * 2014-09-28 2018-07-27 国际商业机器公司 用于管理存储系统的方法和装置
US10628045B2 (en) * 2016-06-23 2020-04-21 Seagate Technology Llc Internal data transfer management in a hybrid data storage device
US10459658B2 (en) * 2016-06-23 2019-10-29 Seagate Technology Llc Hybrid data storage device with embedded command queuing
US11036503B2 (en) * 2016-08-15 2021-06-15 Arm Limited Predicate indicator generation for vector processing operations
US11080054B2 (en) 2016-08-15 2021-08-03 Arm Limited Data processing apparatus and method for generating a status flag using predicate indicators
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503501A (en) * 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
JPH0437935A (ja) 1990-06-01 1992-02-07 Hitachi Ltd キャッシュメモリを有する計算機
JP3308554B2 (ja) * 1991-02-20 2002-07-29 株式会社日立製作所 制御装置及び制御装置の制御方法
DE4323405A1 (de) * 1993-07-13 1995-01-19 Sel Alcatel Ag Zugangskontrollverfahren für einen Pufferspeicher sowie Vorrichtung zum Zwischenspeichern von Datenpaketen und Vermittlungsstelle mit einer solchen Vorrichtung
US6032216A (en) 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
US6832280B2 (en) 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
US6775738B2 (en) * 2001-08-17 2004-08-10 International Business Machines Corporation Method, system, and program for caching data in a storage controller
US7827283B2 (en) * 2003-02-19 2010-11-02 International Business Machines Corporation System for managing and controlling storage access requirements
US7107403B2 (en) * 2003-09-30 2006-09-12 International Business Machines Corporation System and method for dynamically allocating cache space among different workload classes that can have different quality of service (QoS) requirements where the system and method may maintain a history of recently evicted pages for each class and may determine a future cache size for the class based on the history and the QoS requirements
JP4903415B2 (ja) * 2005-10-18 2012-03-28 株式会社日立製作所 記憶制御システム及び記憶制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103119590A (zh) * 2010-09-24 2013-05-22 日立数据系统有限公司 在分布式数据库中管理完整性的方法和系统
CN103119590B (zh) * 2010-09-24 2016-08-17 日立数据系统有限公司 在分布式数据库中管理完整性的方法和系统
CN107103652A (zh) * 2017-03-13 2017-08-29 珠海格力电器股份有限公司 数据的存储方法和装置

Also Published As

Publication number Publication date
CN101131675B (zh) 2011-01-12
US7627714B2 (en) 2009-12-01
US20080052456A1 (en) 2008-02-28

Similar Documents

Publication Publication Date Title
CN101131675B (zh) 预防存储控制器的分区高速缓存中写饥饿的装置和方法
CN100442250C (zh) 存储系统
EP0727745B1 (en) Cache memory control apparatus and method
US9665282B2 (en) Facilitation of simultaneous storage initialization and data destage
US7996609B2 (en) System and method of dynamic allocation of non-volatile memory
US7069465B2 (en) Method and apparatus for reliable failover involving incomplete raid disk writes in a clustering system
US10013361B2 (en) Method to increase performance of non-contiguously written sectors
US6003114A (en) Caching system and method providing aggressive prefetch
US6775738B2 (en) Method, system, and program for caching data in a storage controller
US8966170B2 (en) Elastic cache of redundant cache data
WO2013145029A1 (en) Data storage system and control method therefor
US20030212872A1 (en) Distributing workload evenly across storage media in a storage array
US8549220B2 (en) Management of write cache using stride objects
US20100100677A1 (en) Power and performance management using MAIDx and adaptive data placement
US10031844B2 (en) NVS thresholding for efficient data management
US11803222B2 (en) Systems and methods for managing reduced power failure energy requirements on a solid state drive
CN102158538B (zh) 一种存储资源的管理方法及装置
US20040068609A1 (en) Method of managing a data storage array, and a computer system including a raid controller
US9952969B1 (en) Managing data storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110112

Termination date: 20150820

EXPY Termination of patent right or utility model