CN1967507A - 数据存储控制器及用于管理其中的高速缓存数据的方法 - Google Patents
数据存储控制器及用于管理其中的高速缓存数据的方法 Download PDFInfo
- Publication number
- CN1967507A CN1967507A CNA2006101321683A CN200610132168A CN1967507A CN 1967507 A CN1967507 A CN 1967507A CN A2006101321683 A CNA2006101321683 A CN A2006101321683A CN 200610132168 A CN200610132168 A CN 200610132168A CN 1967507 A CN1967507 A CN 1967507A
- Authority
- CN
- China
- Prior art keywords
- speed cache
- subclauses
- data
- write
- clauses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在数据存储控制器中,将被存取的轨道临时存储在高速缓存中,其中写入数据存储在第一和第二高速缓存中,并且读取数据存储在第二高速缓存中。维护对应的最近最少使用(LRU)列表,以保存识别存储在高速缓存中的轨道的条目。当保存用于第一高速缓存的条目的列表(A列表)满时,扫描该列表,以识别未修改(读取)数据,其可以从高速缓存丢弃,以便为新数据腾出空间。在扫描之前或期间,将修改(写入)数据条目移动到列表的最近使用(MRU)端,从而允许扫描以高效的方式进行,并且减少扫描必须跳过修改条目的次数。可选地,可以将状态位与每个修改数据条目相关联。当将修改条目移动到A列表的MRU端而没有被请求读取时,将其状态位从初始状态改变为第二状态,从而表示它是要被丢弃的候选者。如果已经将状态位设置为第二状态,则让其保持不变。如果由于被请求读取而将修改轨道移动到A列表的MRU端,则将对应的A列表条目的状态位改变回到第一状态,从而防止该轨道被丢弃。这样,仅仅在必要时才允许将写入轨道保留在第一高速缓存中。
Description
技术领域
本发明一般涉及数据存储控制器,特别涉及建立高速缓存丢弃和降级策略。
背景技术
诸如国际商业机器公司企业级存储服务器的数据存储控制器接收定向于附连存储系统的输入/输出(I/O)请求。附连存储系统可以包括一个或多个机盒(enclosure),其包括大量互连的盘驱动器,例如,随机存取存储设备(DASD)、独立盘冗余阵列(RAID阵列)、简单盘集群(JBOD)等。如果接收I/O读取和写入请求的速率快于能够处理它们的速率,则存储控制器将使I/O请求在初级高速缓存中排队,其中初级高速缓存可以包括一吉或多吉字节的易失性存储装置,例如,随机存取存储器(RAM)、动态随机存取存储器(DRAM)等。还可以将某些修改(写入)数据的拷贝放置在次级非易失性存储(NVS)高速缓存如电池供电易失性存储器中,以在存储控制器发生故障的情况下提供对写入数据的额外保护。典型地,次级高速缓存由于NVS存储器的成本而小于初级高速缓存。
在很多目前系统中,对于存储在初级高速缓存中的每个轨道,在最近最少使用(LRU)列表内包括一个条目。标题为“Method,System,andProgram for Destaging Data in Cache”的、共同转让的美国专利No.6,785,771描述了这样的一种系统,在此将其引作参考。轨道可以从存储系统升级到高速缓存,以回答读请求。另外,轨道的写数据在被传输到附连存储系统之前可以存储在初级高速缓存中,以在传输失败的情况下保存该数据。LRU列表条目中的每个条目包括控制块,其表示轨道的当前状态、轨道在高速缓存中的位置、以及轨道在存储系统中的位置。对于次级NVS高速缓存中的轨道,维护独立的NVS LRU列表,并且以相同的方式对其进行管理。总之,初级高速缓存包括读取和修改(写入)的轨道,而次级高速缓存仅仅包括修改(写入)的轨道。这样,初级LRU列表(也被称作‘A’列表)包括表示读取和写入轨道的条目,而次级LRU列表(也被称作‘N’列表)包括仅仅表示写入轨道的条目。虽然初级和次级LRU每个可以被划分成用于顺序数据的列表(“加速”列表)、以及用于随机数据的列表(“活动”列表),但是对于本公开内容而言,将不作这样的区分。
参考图1A-1F、以及图2A和2B中所示的现有技术的高速缓存管理序列,标有撇号(‘)的列表条目表示修改轨道条目,而不带撇号的列表条目表示未修改或读取条目。图1A示出了A和N列表的示例,其已经被部分填充了读取和写入条目。将新条目添加到LRU列表的最近使用(MRU)端,以表示添加到初级高速缓存的每个轨道。在图1B中,已经将新写入条目E′添加到两个列表的MRU端。当将新条目添加到MRU端时,现有条目朝向该列表的LRU端“贬降(demote)”。当接收到存取轨道的请求时,在初级高速缓存中进行搜索,并且如果找到所请求轨道的条目(被称为“命中”),则该条目提升到列表的MRU端(图1C)。
当需要初级高速缓存中的附加空间以缓冲附加的被请求读取数据和修改数据时,从高速缓存丢弃由LRU列表的LRU端的条目表示的一个或多个轨道,并且从初级LRU列表移除对应条目(图1F,其中在添加新条目H′时从两个高速缓存中都丢弃了条目A′)。可以快速地从高速缓存中丢弃初级高速缓存中的读取数据轨道,因为该数据已经存储在存储系统中的盘上,并且不需要被降级。然而,只有在已经安全地将初级和次级高速缓存中的修改(写入)数据轨道降级到存储系统之后,才可以将其从高速缓存和列表中丢弃。这样的降级过程可能花费与100倍丢弃未修改的读取数据的时间那样长的时间。
由于初级和次级高速缓存之间的大小差异,如果在已经从次级高速缓存降级相关联的轨道之后,从次级(NVS)列表丢弃写入数据条目,则有可能该条目和轨道保留在初级LRU列表和高速缓存中(图2A和2B,其中写入条目D′从次级列表中被丢弃但保留在初级列表中)。在这样的情况下,将条目状态从“修改”改变成“未修改”,并且保持对读请求有效(图2B;条目D′被改变成D)。
如上所述,如果初级高速缓存没有足够的空闲空间来接收附加的数据轨道(从图1D到1E开始),丢弃现有轨道。在一个目前使用的处理中,从LRU端扫描初级LRU列表中的一个或多个未修改(读取)数据条目,其对应的轨道可以被快速丢弃。在扫描期间,跳过修改(写入)数据条目,这是由于降级这样的轨道需要较长的时间(图1E;未修改条目C已被丢弃)。即使不跳过修改数据条目而是对其进行降级,它们也可能不能为新条目而快速地释放足够的空间;并且只要降级正在进行中,就将必须跳过这些修改条目。结果,在繁重的写入负荷期间,一些修改轨道可能被修改若干次,并且保留在次级高速缓存中相对长的时间。这样的轨道在被降级之前,还将以“修改”状态保留在初级高速缓存中。此外,甚至在这样的轨道最终从次级高速缓存降级之后,它们也可能作为“未修改”而保留在初级高速缓存中,并且如果靠近初级列表的MRU端,则它们可能得到在初级列表中移动的另一机会(或“生命”)。当在初级高速缓存中存在很多修改轨道时,列表扫描必须跳过多个条目,并且不能识别足够的未修改轨道,以便丢弃而为新轨道腾出空间。应当理解,跳过如此多的高速缓存轨道花费大量的时间,并且浪费处理器周期。由于这些因素,读取替换和写入退休策略是相互依赖的,并且写入高速缓存管理与读取高速缓存管理相结合。
这样,尽管利用LRU列表来管理高速缓存降级操作,本领域还存在对用于管理高速缓存中的数据并执行降级操作的改进技术的需要。
发明内容
本发明提供用于更高效的高速缓存管理丢弃/降级策略的系统、方法和程序产品。在扫描之前或期间,将修改(写入)数据条目移动到列表的最近使用(MRU)端,允许扫描以高效的方式前进,而不必跳过修改数据条目。可选地,可以将状态位与每个修改数据条目相关联。当将条目移动到A列表的MRU端时,将其状态位从初始状态(例如,0)改变为第二状态(例如,1),从而表示它是要被丢弃的候选者。如果在初级高速缓存中找到被请求存取的写入轨道(“命中”),则将对应A列表条目的状态位改变回到第一状态,从而防止该轨道被丢弃。这样,仅仅在必要时才允许将写入轨道保留在初级高速缓存中。
附图说明
图1A-1F示出了现有技术的高速缓存管理序列;
图2A和2B示出了另一现有技术的高速缓存管理序列;
图3是其中可以实现本发明的数据处理环境的框图;
图4示出了本发明中采用的LRU列表的示例;
图5A和5B示出了根据本发明的一方面的高速缓存管理序列;
图6A-6F示出了根据本发明的另一方面的高速缓存管理序列;以及
图7A-7E示出了根据本发明的另一方面的高速缓存管理序列。
具体实施方式
图3是其中可以实现本发明的数据处理环境300的框图。存储控制器310从一个或多个主机302A、302B、302C接收输入/输出(I/O)请求,其中存储控制器310通过网络304附连到该一个或多个主机302A、302B、302C。I/O请求被定向到存储系统306中的轨道,其中存储系统306具有若干配置中的任一个的盘驱动器,例如,随机存取存储设备(DASD)、独立磁盘冗余阵列(RAID阵列)、简单盘集群(JBOD)等。存储控制器310包括处理器312、高速缓存管理器314和高速缓存320。高速缓存管理器314可以包括由处理器312执行的硬件组件或软件/固件组件,以管理高速缓存320。高速缓存320包括第一部分和第二部分。在一个实施例中,第一高速缓存部分是易失性存储装置322,并且第二高速缓存部分是非易失性存储装置(NVS)324。高速缓存管理器314被配置成将读取(未修改)和写入(修改)数据轨道临时存储在易失性存储部分322中,并且仅仅将写入(修改)数据轨道临时存储在非易失性存储部分324中。
虽然在所述实现中,将数据作为高速缓存中的轨道来管理,但是在可选实施例中,可以以诸如逻辑块地址(LBA)等的其他数据单元来管理该数据。
高速缓存管理器314还被配置成建立用于易失性高速缓存部分322的一组数据轨道列表(“A”列表)、以及用于NVS高速缓存部分324的一组数据轨道列表(“N”列表)。如图4所示,在每个集合中可以建立一个列表,以保存用于随机存取数据的条目(“活动”列表)、并且建立第二列表,以保存用于顺序存取数据的条目(“加速”列表)。在本说明中,活动列表大于加速列表,然而,不必如此。另外,本发明不依赖于活动和加速列表之间划分轨道条目的存在,并且下面的描述将不作这样的区别。
图5A和5B示出了根据本发明的一方面的高速缓存管理序列。在图5A中,A列表从MRU端到LRU端填满了读取和写入条目。条目也从MRU端到LRU端进入到N列表中,但是该列表尚未填满。在将新读取或写入条目添加到A列表中之前的某个时间,或作为用于添加新条目的处理的一部分,由高速缓存管理器314重新布置A列表以便为新条目的添加作准备。如上文的背景技术所总结的那样,在现有技术处理中,将从LRU端向上朝向MRU端扫描A列表,以定位第一个未修改的读取条目。然后,将丢弃与该条目相关联的轨道,从而在易失性高速缓存中为新条目腾出空间。然而,相反,在本发明的一个变体中,高速缓存管理器314将所有或足够的修改(写入)数据条目移动到A列表的MRU端,从而留下一个或多个未修改数据条目在LRU端(图5B)。然后,当高速缓存管理器314启动A列表的扫描,没有时间或处理器循环浪费在试图识别未修改的数据条目:这样的条目已经在LRU端,并且可以立即被丢弃。在另一变体中,启动A列表的扫描,并且将修改数据条目移动到MRU端,直至未修改的数据条目在LRU端;然后丢弃由该条目表示的数据轨道。
图6A-6F示出了关于图5A和5B所述的实施例的第一可选增强。每个写入数据条目包括最初被设置为0的额外状态位(图6A)。为简单地实现本发明起见,所有条目可以包括最初设置为0的状态位。然而,与未修改条目相关联的状态位将保持为0。在图6B中,修改数据条目(A′,D′和E1)已被移动到A列表的MRU端,并且它们的状态位已被改变成1,从而表示它们至少部分在A列表中前进一次。如同在图5A和5B的序列中一样,可以移动所有或一些修改条目,并且可以在扫描之前或在扫描期间移动它们,其中移动足够的用于修改数据的条目,以暴露在LRU端的用于未修改数据的条目。
其后,由存储控制器310从主机302接收存取诸如轨道E’的修改轨道的请求。因为该轨道处于高速缓存320中,可以快速将其从高速缓存中读出而无需从存储设备306检索。轨道E1上的“命中”使高速缓存管理器314将对应的数据条目移动到A列表的MRU端,并且将其状态位改变回到0(图6C),从而允许该条目再次在列表中移动。添加到NVS高速缓存324的另一写入轨道填充高速缓存324,并且其条目(G’)填充N列表。其到A列表中的条目还迫使丢弃在A列表的LRU端的读取条目(C)(图6D)。当将另一写入轨道添加到NVS高速缓存324时,将相关联的条目(H’)添加到N列表,迫使在N列表的LRU端的写入条目(A’)降级到存储设备306。A列表中的对应条目从修改状态改变为未修改状态(图6E)。由于其状态位是1,因此立即或在后续扫描期间从A列表丢弃条目(A)(图6F)。
图7A-7E示出了对图6A-6E所示的过程的替换过程。初始序列(图7A和7B)与在前的过程中的初始序列(图6A和6B)相同。接下来,轨道A′上的读取命中使相关联的A列表条目留在A列表的MRU端的顶部(或者如果它先前朝向LRU端被贬降,则将其移动到那里)。另外,该条目的状态位从1改变为0,从而允许该条目再次在列表中移动(图7C)。新写入条目(G′)使N列表变满(图7D),而另一新写入条目(H′)迫使将A’从N列表降级。高速缓存管理器314确定其对应的A列表条目的状态位是0;因此,高速缓存管理器314将状态从修改(A’)改变为未修改(A),并且不立即从A列表丢弃该条目。条目(A)被给予在A列表中移动的另一机会,并且仅仅在它未被修改并且具有1的状态位时才会被丢弃。
值得注意的是,虽然在全功能的数据处理系统的上下文中描述了本发明,但是本领域的普通技术人员将会理解,本发明的处理能够以指令的计算机可读介质的形式、以及各种形式来分发,并且本发明与实际上用来实现分发的信号承载介质的具体类型无关地适用。计算机可读介质的示例包括诸如软盘、硬盘驱动器、RAM和CD-ROM的可记录型介质,以及诸如数字和模拟通信链接的传输型介质。
本发明的描述是为了说明和描述起见而提出的,而不意欲是穷尽性的或者将本发明局限于所公开的形式。对于本领域的普通技术人员,很多修改和变化将是明显的。例如,前文描述了以特定次序发生的具体操作。在可选实现中,可以以不同的次序执行、修改或者移除某些操作。另外,可以将步骤添加到上述操作并且仍然符合所述实现。此外,在此所述的操作可以顺序地发生,或者可以并行地被处理。选择和描述所述实施例是为了最佳地说明本发明的原理、实际应用,并且使得本领域的普通技术人员能够理解本发明,以便考虑适于具体应用的具有各种修改的各种实施例。另外,虽然上面是关于方法和系统而描述的,但是也可以使用计算机程序产品来满足本领域的需要,其中该计算机程序产品包含用于管理数据存储控制器中的高速缓存数据的指令。
Claims (13)
1.一种用于管理数据存储控制器中的高速缓存数据的方法,包括:
将存储器空间分配给数据存储控制器中的第一高速缓存,第一高速缓存具有最近使用(MRU)端和最近最少使用端(LRU);
将存储器空间分配给数据存储控制器中的第二高速缓存,第二高速缓存具有比第一高速缓存更少的存储器空间,并且具有最近使用(MRU)端和最近最少使用端(LRU);
将读取数据条目临时存储在第一高速缓存中;
将写入数据条目临时存储在第一和第二高速缓存中;
接收存取第一和第二高速缓存中的数据条目的请求;
在读取期间,将被存取并且在第一高速缓存中找到的数据条目从第一高速缓存中的其当前位置移动到第一高速缓存的MRU端;
在写入期间,将被存取并且在第二高速缓存中找到的数据条目从第二高速缓存中的其当前位置移动到第二高速缓存的MRU端;
当第一读取数据条目要被升级到第一高速缓存时:
如果在第一高速缓存中可获得存储器空间,则将存在于第一高速缓存中的所有数据条目朝向第一高速缓存的LRU端移动,以容纳第一读取数据条目;
如果在第一高速缓存中不可获得存储器空间:
将最靠近第一高速缓存的LRU端的写入数据条目中的至少一个,从第一高速缓存中的当前位置移动到第一高速缓存的MRU端,同时将读取数据条目从第一高速缓存中的当前位置移动到第一高速缓存的LRU端;以及
从第一高速缓存的LRU端丢弃读取数据条目;以及
将第一读取数据条目升级到第一高速缓存的MRU端中;而当第一写入数据条目要被升级到第一高速缓存时:
如果在第一高速缓存和第二高速缓存中都可获得存储器空间,则将存在于第一和第二高速缓存中的所有数据条目分别朝向第一和第二高速缓存的LRU端移动,以容纳第一写入数据条目;
如果在第一高速缓存中不可获得存储器空间:
将最靠近第一高速缓存的LRU端的写入数据条目中的至少一个,从第一高速缓存中的当前位置移动到第一高速缓存的MRU端,同时将读取数据条目从第一高速缓存中的当前位置移动到第一高速缓存的LRU端;以及
从第一高速缓存的LRU端丢弃读取数据条目;以及
将第一写入数据条目升级到第二高速缓存的MRU端中,以及到第一高速缓存的MRU端中。
2.如权利要求1所述的方法,还包括:
将状态位与第一高速缓存中的每个写入数据条目相关联,当每个写入数据条目被升级到第一高速缓存时,将每个写入数据条目的状态位设置为第一状态;
将至少一个写入数据条目从第一高速缓存中的当前位置移动到第一高速缓存的MRU端;以及
将该至少一个写入数据条目的状态位设置为第二状态。
3.如权利要求2所述的方法,其中移动包括将所有写入数据条目从第一高速缓存中的其当前位置移动到第一高速缓存的MRU端。
4.如权利要求2所述的方法,其中移动包括将至少一个写入数据条目从第一高速缓存中的其当前位置移动到第一高速缓存的MRU端,直至读取数据条目处于第一高速缓存的LRU端。
5.如权利要求2所述的方法,还包括:
接收对位于第一和第二高速缓存中的第二写入数据条目的读取请求;
再次将命中的第二写入数据条目从第一高速缓存中的当前位置移动到第一高速缓存的MRU端;
将第一高速缓存中的第二写入数据条目的状态位设置为第一状态;
试图将第三写入数据条目临时存储在第一和第二高速缓存中;
如果在第二高速缓存中不可获得存储器空间:
从第二高速缓存的LRU端将现有的写入数据条目降级;
将第三写入数据条目升级到第一高速缓存以及第二高速缓存的MRU端;
朝向LRU端贬降第一高速缓存中的写入数据条目,其对应于在第二高速缓存中降级的写入条目;以及
将贬降的写入数据条目转换成第一高速缓存中的读取数据条目。
6.如权利要求5所述的方法,还包括从第一高速缓存移除贬降的写入数据条目。
7.一种数据存储控制器,包括:
接口,通过其从主机设备接收数据存取请求;
接口,通过其向和从至少一个附连的存储设备发送和接收数据;
第一高速缓存,其包括第一多个条目空间,用于临时存储读取和写入数据条目,第一多个条目空间具有最近使用(MRU)端和最近最少使用(LRU)端;
第二高速缓存,包括第二多个条目空间,用于临时存储写入数据条目,第二多个条目空间比第一多个条目空间少,第二多个条目空间具有MRU端和LRU端;以及
高速缓存管理器,被设计成:
接收读取或写入第一和第二高速缓存中的数据条目的请求;
在读取请求期间,将被存取并且在第一高速缓存中找到的数据条目从第一高速缓存中的其当前位置移动到第一高速缓存的MRU端;
在写入期间,将被存取并且在第二高速缓存中找到的数据条目从第二高速缓存中的当前位置移动到第二高速缓存的MRU端;
当第一读取数据条目要被升级到第一高速缓存时:
如果在第一高速缓存中可获得存储器空间,则将存在于第一高速缓存中的所有数据条目朝向第一高速缓存的LRU端移动,以容纳第一读取数据条目;
如果在第一高速缓存中不可获得存储器空间:
将最靠近第一高速缓存的LRU端的一个或多个写入数据条目,从第一高速缓存中的当前位置移动到第一高速缓存的MRU端,同时将读取数据条目从第一高速缓存中的当前位置移动到第一高速缓存的LRU端;以及
从第一高速缓存的LRU端丢弃读取数据条目;以及
将第一读取数据条目升级到第一高速缓存的MRU端中;而当第一写入数据条目要被升级到第一高速缓存时:
如果在第一高速缓存和第二高速缓存中都可获得存储器空间,则将存在于第一和第二高速缓存中的所有数据条目分别朝向第一和第二高速缓存的LRU端移动,以容纳第一写入数据条目;
如果在第一高速缓存中不可获得存储器空间:
将最靠近第一高速缓存的LRU端的一个或多个写入数据条目,从第一高速缓存中的当前位置移动到第一高速缓存的MRU端,同时将读取数据条目从第一高速缓存中的当前位置移动到第一高速缓存的LRU端;以及
从第一高速缓存的LRU端丢弃读取数据条目;以及
将第一写入数据条目升级到第二高速缓存的MRU端中,以及到第一高速缓存的MRU端中。
8.如权利要求7所述的控制器,其中:
第一高速缓存包括易失性存储器;并且
第二高速缓存包括非易失性存储器。
9.如权利要求7所述的控制器,其中高速缓存管理器还被设计成:
将状态位与第一高速缓存中的每个写入数据条目相关联,当每个写入数据条目被升级到第一高速缓存时,将每个写入数据条目的状态位设置为第一状态;
将至少一个写入数据条目从第一高速缓存中的当前位置移动到第一高速缓存的MRU端;以及
将该至少一个写入数据条目的状态位设置为第二状态。
10.如权利要求9所述的控制器,其中高速缓存管理器被设计成,通过将所有写入数据条目从第一高速缓存中的其当前位置移动到第一高速缓存的MRU端,移动该至少一个写入数据条目。
11.如权利要求9所述的控制器,其中高速缓存管理器通过移动来移动该至少一个写入数据条目包括,将至少一个写入数据条目从第一高速缓存中的当前位置移动到第一高速缓存的MRU端,直至读取数据条目处于第一高速缓存的LRU端。
12.如权利要求9所述的控制器,其中高速缓存管理器还被设计成:
接收对位于第一和第二高速缓存中的第二写入数据条目的读取请求;
再次将命中的第二写入数据条目从第一高速缓存中的当前位置移动到第一高速缓存的MRU端;
将第一高速缓存中的第二写入数据条目的状态位设置为第一状态;
试图将第三写入数据条目临时存储在第一和第二高速缓存中;
如果在第二高速缓存中不可获得存储器空间:
从第二高速缓存的LRU端将现有的写入数据条目降级;
将第三写入数据条目升级到第一高速缓存以及第二高速缓存的MRU端;
朝向LRU端贬降第一高速缓存中的写入数据条目,其对应于在第二高速缓存中降级的写入条目;以及
将贬降的写入数据条目转换成第一高速缓存中的读取数据条目。
13.如权利要求12所述的控制器,其中高速缓存管理器还被设计成从第一高速缓存移除贬降的写入数据条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/282,157 | 2005-11-18 | ||
US11/282,157 US20070118695A1 (en) | 2005-11-18 | 2005-11-18 | Decoupling storage controller cache read replacement from write retirement |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1967507A true CN1967507A (zh) | 2007-05-23 |
CN100428199C CN100428199C (zh) | 2008-10-22 |
Family
ID=38054814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101321683A Expired - Fee Related CN100428199C (zh) | 2005-11-18 | 2006-10-12 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070118695A1 (zh) |
JP (1) | JP2007141225A (zh) |
CN (1) | CN100428199C (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561783B (zh) * | 2008-04-14 | 2012-05-30 | 阿里巴巴集团控股有限公司 | 一种Cache异步淘汰的方法和装置 |
CN102722448A (zh) * | 2011-03-31 | 2012-10-10 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
WO2013108097A1 (en) * | 2012-01-17 | 2013-07-25 | International Business Machines Corporation | Populating a first stride of tracks from a first cache to write to a second stride in a second cache |
CN103257932A (zh) * | 2012-01-17 | 2013-08-21 | 国际商业机器公司 | 用于管理计算机可读高速缓存系统中的数据的方法和系统 |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
CN103562887A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 用于存储设备的第一高速缓存和第二高速缓存中的轨道的高速缓存管理 |
US8825944B2 (en) | 2011-05-23 | 2014-09-02 | International Business Machines Corporation | Populating strides of tracks to demote from a first cache to a second cache |
US8825956B2 (en) | 2012-01-17 | 2014-09-02 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及系统 |
CN104284046A (zh) * | 2013-07-10 | 2015-01-14 | 京瓷办公信息系统株式会社 | 图像形成装置 |
US9021201B2 (en) | 2012-01-17 | 2015-04-28 | International Business Machines Corporation | Demoting partial tracks from a first cache to a second cache |
CN111837102A (zh) * | 2018-04-12 | 2020-10-27 | 国际商业机器公司 | 使用轨道锁和跨步组锁来管理高速缓存操作 |
CN112395223A (zh) * | 2019-08-16 | 2021-02-23 | 国际商业机器公司 | 基于对高速缓存列表的不同区域的访问来管理被访问磁道到高速缓存列表的mru端的指示 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1990732A4 (en) * | 2006-02-27 | 2009-09-02 | Fujitsu Ltd | DEVICE, METHOD AND LRU CONTROL PROGRAM |
US20090193195A1 (en) * | 2008-01-25 | 2009-07-30 | Cochran Robert A | Cache that stores data items associated with sticky indicators |
US8615678B1 (en) * | 2008-06-30 | 2013-12-24 | Emc Corporation | Auto-adapting multi-tier cache |
JP4843693B2 (ja) * | 2009-03-30 | 2011-12-21 | 株式会社東芝 | 記憶装置 |
US8055850B2 (en) * | 2009-04-06 | 2011-11-08 | International Business Machines Corporation | Prioritization of directory scans in cache |
JP5404798B2 (ja) * | 2009-09-21 | 2014-02-05 | 株式会社東芝 | 仮想記憶管理装置及び記憶管理装置 |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US8555019B2 (en) * | 2010-09-08 | 2013-10-08 | International Business Machines Corporation | Using a migration cache to cache tracks during migration |
JP5627521B2 (ja) * | 2011-03-24 | 2014-11-19 | 株式会社東芝 | キャッシュシステムおよび処理装置 |
US8825952B2 (en) | 2011-05-23 | 2014-09-02 | International Business Machines Corporation | Handling high priority requests in a sequential access storage device having a non-volatile storage cache |
US8996789B2 (en) | 2011-05-23 | 2015-03-31 | International Business Machines Corporation | Handling high priority requests in a sequential access storage device having a non-volatile storage cache |
KR101358407B1 (ko) | 2012-01-10 | 2014-02-05 | 고려대학교 산학협력단 | 계층 캐시 시스템 및 방법 |
US10628331B2 (en) * | 2016-06-01 | 2020-04-21 | International Business Machines Corporation | Demote scan processing to demote tracks from cache |
US10248577B2 (en) | 2017-04-07 | 2019-04-02 | International Business Machines Corporation | Using a characteristic of a process input/output (I/O) activity and data subject to the I/O activity to determine whether the process is a suspicious process |
US10445497B2 (en) | 2017-05-03 | 2019-10-15 | International Business Machines Corporation | Offloading processing of writes to determine malicious data from a first storage system to a second storage system |
US10282543B2 (en) * | 2017-05-03 | 2019-05-07 | International Business Machines Corporation | Determining whether to destage write data in cache to storage based on whether the write data has malicious data |
TWI688859B (zh) * | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
US11237973B2 (en) * | 2019-04-09 | 2022-02-01 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20210011176A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 액세스 동작 방법 및 장치 |
KR20210011201A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
KR20200132047A (ko) | 2019-05-15 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치 |
KR20200119059A (ko) * | 2019-04-09 | 2020-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210014338A (ko) | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법 |
KR20210011216A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 메타 데이터 관리 방법 및 장치 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4430701A (en) * | 1981-08-03 | 1984-02-07 | International Business Machines Corporation | Method and apparatus for a hierarchical paging storage system |
US4875155A (en) * | 1985-06-28 | 1989-10-17 | International Business Machines Corporation | Peripheral subsystem having read/write cache with record access |
US5434992A (en) * | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US5671406A (en) * | 1995-10-18 | 1997-09-23 | Digital Equipment Corporation | Data structure enhancements for in-place sorting of a singly linked list |
US6119114A (en) * | 1996-09-17 | 2000-09-12 | Smadja; Frank | Method and apparatus for dynamic relevance ranking |
US6105115A (en) * | 1997-12-31 | 2000-08-15 | Intel Corporation | Method and apparatus for managing a memory array |
US6393525B1 (en) * | 1999-05-18 | 2002-05-21 | Intel Corporation | Least recently used replacement method with protection |
US6438651B1 (en) * | 1999-11-01 | 2002-08-20 | International Business Machines Corporation | Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer |
US6823427B1 (en) * | 2001-05-16 | 2004-11-23 | Advanced Micro Devices, Inc. | Sectored least-recently-used cache replacement |
US6785771B2 (en) * | 2001-12-04 | 2004-08-31 | International Business Machines Corporation | Method, system, and program for destaging data in cache |
US7117305B1 (en) * | 2002-06-26 | 2006-10-03 | Emc Corporation | Data storage system having cache memory manager |
US7178134B2 (en) * | 2003-04-24 | 2007-02-13 | International Business Machines Corporation | Method and apparatus for resolving memory allocation trace data in a computer system |
US7010649B2 (en) * | 2003-10-14 | 2006-03-07 | International Business Machines Corporation | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache |
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
US7356651B2 (en) * | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
KR100577384B1 (ko) * | 2004-07-28 | 2006-05-10 | 삼성전자주식회사 | 페이지 정보를 이용한 페이지 대체 방법 |
US20060143398A1 (en) * | 2004-12-23 | 2006-06-29 | Stefan Rau | Method and apparatus for least recently used (LRU) software cache |
US7363433B2 (en) * | 2005-02-09 | 2008-04-22 | International Business Machines Corporation | Cache member protection with partial make MRU allocation |
US7360043B1 (en) * | 2005-08-17 | 2008-04-15 | Sun Microsystems, Inc | Method and apparatus for efficiently determining rank in an LRU list |
-
2005
- 2005-11-18 US US11/282,157 patent/US20070118695A1/en not_active Abandoned
-
2006
- 2006-10-12 CN CNB2006101321683A patent/CN100428199C/zh not_active Expired - Fee Related
- 2006-10-19 JP JP2006285563A patent/JP2007141225A/ja active Pending
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561783B (zh) * | 2008-04-14 | 2012-05-30 | 阿里巴巴集团控股有限公司 | 一种Cache异步淘汰的方法和装置 |
CN102722448A (zh) * | 2011-03-31 | 2012-10-10 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
CN102722448B (zh) * | 2011-03-31 | 2015-07-22 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
US8850106B2 (en) | 2011-05-23 | 2014-09-30 | International Business Machines Corporation | Populating strides of tracks to demote from a first cache to a second cache |
CN103562887B (zh) * | 2011-05-23 | 2016-11-09 | 国际商业机器公司 | 用于存储设备的第一高速缓存和第二高速缓存中的轨道的高速缓存管理 |
CN103562843B (zh) * | 2011-05-23 | 2016-07-20 | 国际商业机器公司 | 用于管理顺序存取存储设备中的数据的方法和设备 |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
CN103562887A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 用于存储设备的第一高速缓存和第二高速缓存中的轨道的高速缓存管理 |
US8825944B2 (en) | 2011-05-23 | 2014-09-02 | International Business Machines Corporation | Populating strides of tracks to demote from a first cache to a second cache |
CN103207839B (zh) * | 2012-01-17 | 2016-06-08 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN103257932B (zh) * | 2012-01-17 | 2016-03-16 | 国际商业机器公司 | 用于管理计算机可读高速缓存系统中的数据的方法和系统 |
US8832377B2 (en) | 2012-01-17 | 2014-09-09 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache |
US8825956B2 (en) | 2012-01-17 | 2014-09-02 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache |
US9921973B2 (en) | 2012-01-17 | 2018-03-20 | International Business Machines Corporation | Cache management of track removal in a cache for storage |
US9804971B2 (en) | 2012-01-17 | 2017-10-31 | International Business Machines Corporation | Cache management of track removal in a cache for storage |
US8959279B2 (en) | 2012-01-17 | 2015-02-17 | International Business Machines Corporation | Populating a first stride of tracks from a first cache to write to a second stride in a second cache |
US8966178B2 (en) | 2012-01-17 | 2015-02-24 | International Business Machines Corporation | Populating a first stride of tracks from a first cache to write to a second stride in a second cache |
US9021201B2 (en) | 2012-01-17 | 2015-04-28 | International Business Machines Corporation | Demoting partial tracks from a first cache to a second cache |
US9026732B2 (en) | 2012-01-17 | 2015-05-05 | International Business Machines Corporation | Demoting partial tracks from a first cache to a second cache |
US8825957B2 (en) | 2012-01-17 | 2014-09-02 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache |
US8825953B2 (en) | 2012-01-17 | 2014-09-02 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache |
CN103257932A (zh) * | 2012-01-17 | 2013-08-21 | 国际商业机器公司 | 用于管理计算机可读高速缓存系统中的数据的方法和系统 |
WO2013108097A1 (en) * | 2012-01-17 | 2013-07-25 | International Business Machines Corporation | Populating a first stride of tracks from a first cache to write to a second stride in a second cache |
US9471496B2 (en) | 2012-01-17 | 2016-10-18 | International Business Machines Corporation | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及系统 |
CN104284046B (zh) * | 2013-07-10 | 2017-07-14 | 京瓷办公信息系统株式会社 | 图像形成装置 |
CN104284046A (zh) * | 2013-07-10 | 2015-01-14 | 京瓷办公信息系统株式会社 | 图像形成装置 |
CN111837102A (zh) * | 2018-04-12 | 2020-10-27 | 国际商业机器公司 | 使用轨道锁和跨步组锁来管理高速缓存操作 |
CN111837102B (zh) * | 2018-04-12 | 2024-04-19 | 国际商业机器公司 | 使用轨道锁和跨步组锁来管理高速缓存操作 |
CN112395223A (zh) * | 2019-08-16 | 2021-02-23 | 国际商业机器公司 | 基于对高速缓存列表的不同区域的访问来管理被访问磁道到高速缓存列表的mru端的指示 |
Also Published As
Publication number | Publication date |
---|---|
CN100428199C (zh) | 2008-10-22 |
JP2007141225A (ja) | 2007-06-07 |
US20070118695A1 (en) | 2007-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100428199C (zh) | 数据存储控制器及用于管理其中的高速缓存数据的方法 | |
US7447836B2 (en) | Disk drive storage defragmentation system | |
CN1148658C (zh) | 利用高速缓存器管理raid存储系统的方法和系统 | |
US9910784B2 (en) | Methods and systems for directly mapping a backend block address into a physical address of a caching device | |
KR102093523B1 (ko) | 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법 | |
CN106547476B (zh) | 用于数据存储系统的方法和装置 | |
US8595451B2 (en) | Managing a storage cache utilizing externally assigned cache priority tags | |
CN102156738B (zh) | 数据块处理方法、数据块存储设备及系统 | |
US6785771B2 (en) | Method, system, and program for destaging data in cache | |
US6807607B1 (en) | Cache memory management system and method | |
US6327644B1 (en) | Method and system for managing data in cache | |
JP4429780B2 (ja) | 記憶制御装置、制御方法、および制御プログラム。 | |
US20100293337A1 (en) | Systems and methods of tiered caching | |
US20020118582A1 (en) | Log-structure array | |
US20070011401A1 (en) | System and method for adaptive operation of storage capacities of RAID systems | |
US20060129763A1 (en) | Virtual cache for disk cache insertion and eviction policies and recovery from device errors | |
US10761989B2 (en) | Method of storage management, storage system and computer program product | |
US10275363B2 (en) | Cuckoo caching | |
US6678752B1 (en) | Data storage system with automatic storage request analysis and selection of optimal output media type | |
KR20120055707A (ko) | 메모리 시스템 | |
US6834325B1 (en) | System and method for providing client-directed staging to improve non-sequential access performance in a caching disk storage system | |
KR101070511B1 (ko) | Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법 | |
JP4792335B2 (ja) | Raid装置、raid制御プログラムおよびキャッシュ管理方法 | |
KR20180135390A (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
KR100876148B1 (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20091112 |