CN101110061A - 使用多个数据结构管理高速缓存中的数据的方法和*** - Google Patents

使用多个数据结构管理高速缓存中的数据的方法和*** Download PDF

Info

Publication number
CN101110061A
CN101110061A CNA200710102599XA CN200710102599A CN101110061A CN 101110061 A CN101110061 A CN 101110061A CN A200710102599X A CNA200710102599X A CN A200710102599XA CN 200710102599 A CN200710102599 A CN 200710102599A CN 101110061 A CN101110061 A CN 101110061A
Authority
CN
China
Prior art keywords
subclauses
clauses
data
data structure
readable medium
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
CNA200710102599XA
Other languages
English (en)
Inventor
达蒙德拉·S.·莫哈
毕尼·谢尔·吉尔
迈克尔·T.·本哈斯
约瑟夫·S.·海德二世
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 CN101110061A publication Critical patent/CN101110061A/zh
Pending legal-status Critical Current

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供用于使用多个数据结构管理高速缓存中的数据的方法、***和程序。多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目。接收对第一计算机可读介质中数据的请求。确定在数据结构之一中是否存在用于所请求数据的条目。响应于确定在数据结构之一中不存在用于所请求数据的条目,从第一计算机可读介质检索所请求的数据以存储在第二计算机可读介质中。响应于确定在数据结构之一中不存在用于所请求数据的条目,选择数据结构之一,并将用于所检索数据的条目添加到选定数据结构。

Description

使用多个数据结构管理高速缓存中的数据的方法和***
技术领域
本发明涉及一种使用多个数据结构管理高速缓存中的数据的方法、***和程序。
背景技术
高速缓存管理***将在存储设备内保存的数据存储在更快的访问介质内,例如存储器设备,以便可以从更快的访问高速缓存存储器服务来自存储器的数据请求。高速缓存管理***可以保存链接列表,其具有从存储器进入高速缓存的每个数据单元的单个条目。在通常使用的最近最少使用(Least Recently Used:LRU)高速缓存技术中,如果访问在高速缓存内的数据,即高速缓存“命中”,则将用于所访问数据的LRU列表内的条目移动到该列表的最近最常使用(MostRecently Used:MRU)端。如果所请求的数据不在高速缓存内,即高速缓存未中,则可以删除(或者降回存储器)其条目在列表LRU端的高速缓存内的数据,并将升入高速缓存的新数据的条目添加到LRU列表的MRU端。使用这种LRU高速缓存技术,较频繁使用的数据可保存在高速缓存内,而不经常使用的数据将更可能被从该列表的LRU端删除以在高速缓存内为新访问的数据提供空间。
在异步计算环境内(其中在多处理器环境内的多个线程或不同处理器正在从同一高速缓存访问数据),由锁保护MRU条目使对MRU条目的访问串行化。这意味着一个或多个线程必需等待保持MRU条目上的锁(lock)的线程以完成它们的高速缓存命中或未中操作。在多线程环境中,存在对该锁的大量竞争,因为所有的高速缓存命中和高速缓存未中都要求访问这个锁。对于高性能和高吞吐量的环境,例如虚拟存储器、数据库、文件***和存储器控制器,并不希望这种竞争。
图1图示在现有技术中公知的管理从存储设备高速缓存的数据的时钟数据结构(或者“时钟”)2。该时钟2包括环形缓冲器。该时钟包括指在该时钟2的头部条目6和尾部条目8之间的时钟指针4。将来自存储器的数据添加到头部条目6。该时钟算法保存用于每个时钟2条目或页面的“页面参考比特”。当第一次将数据从存储器带入高速缓存时,将用于所高速缓存数据的条目的页面参考比特设置为零。当访问高速缓存内的数据时,将用于所访问数据的页面参考比特设置为一。
为了使用从存储器最新访问的数据替换高速缓存内的数据,如果在时钟指针4上的头部条目8具有页面参考比特零,则将与头部条目8对应的数据从高速缓存降级,并将新页面的相关信息添加到头部条目6。如果用于当前头部条目8的页面参考比特是一,则将该页面参考比特重新设置为零,并将时钟指针4沿时钟2向前移动直到发现具有为零的页面参考比特的头部条目8以替换。在虚拟存储应用中,可以通过硬件改变页面参考比特。
时钟高速缓存技术的一个优点是不需要为了高速缓存命中将页面移动到MRU位置,例如对于LRU高速缓存技术的情况,其需要锁和串行化以将LRU列表内用于所访问数据的条目移动到MRU位置。此外,时钟高速缓存技术的命中比率通常可与LRU高速缓存方法的比率相比较。因此,在多种操作***和应用程序内使用时钟高速缓存技术的变型。然而,当将页面添加到时钟结构的头部条目8时,依然需要时钟用于高速缓存未中。因而,当替换高速缓存内的数据时,LRU和时钟高速缓存技术都需要锁定竞争。
因为这些原因,在技术上需要提供用于管理高速缓存内的数据的技术。
发明内容
提供用于使用多个数据结构管理高速缓存内的数据的方法、***和程序。多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目。接收对第一计算机可读介质内数据的请求。确定在数据结构之一中是否存在用于所请求数据的条目。响应于确定在数据结构之一中不存在用于所请求数据的条目,从第一计算机可读介质检索所请求的数据以存储在第二计算机可读介质内。响应于确定在数据结构之一中不存在用于所请求数据的条目,选择数据结构之一,并将用于所检索数据的条目添加到选定数据结构。
在又一种实施例中,选择数据结构之一包括随机地选择数据结构之一。
在又一种实施例中,响应于确定在数据结构之一中不存在用于所请求数据的条目,确定第二计算机可读介质是否具有可用于存储所检索的所请求数据的空间。响应于确定第二计算机可读介质不具有可用空间,从数据结构之一中选择一个条目。使用于选定条目的数据从第二计算机可读介质中降级。
在又一种实施例中,响应于确定第二计算机可读介质不具有可用空间、从数据结构之一中选择一个条目包括确定具有最旧条目的其中一个数据结构,其中选定条目包括在所确定数据结构内的最旧条目。
在又一种实施例中,响应于确定第二计算机可读介质不具有可用空间、从数据结构之一中选择一个条目包括选择数据结构的随机子集和从选定随机子集中选择一个数据结构,该数据结构的最旧条目不新于选定子集内任何其它数据结构内的最旧条目。
在又一种实施例中,数据结构包括最近最少使用(LRU)列表,并且其中添加用于所检索数据的条目包括将条目添加到选定LRU列表的最近最常使用(MRU)端。
在又一种实施例中,数据结构包括时钟,其中每个时钟包括在列表中彼此相邻的头部和尾部条目,并且其中添加所检索数据的条目包括将条目添加到选定时钟的头部条目。
在又一种实施例中,时钟内的条目表示条目是否被访问过。响应于确定在时钟之一中没有用于所请求数据的条目,确定第二计算机可读介质是否具有可用空间以存储所检索的所请求数据。选择时钟之一,并确定时钟内被表示为尚未被访问的一个条目。使用于所确定条目的数据从第二计算机可读介质中降级。
在又一种实施例中,多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目。接收对第一计算机可读介质内的数据的请求,确定是否在数据结构之一中存在用于所请求数据的条目。响应于确定在数据结构之一中存在所请求数据的条一个目,针对该数据请求从第二计算机可读介质访问所请求的数据。响应于确定在数据结构之一中存在所请求数据的一个条目,选择数据结构之一,响应于确定存在用于所请求数据的一个条目,将确定的用于所请求数据的条目移动到选定的数据结构。
在又一种实施例中,响应于确定在数据结构之一中存在所请求数据的一个条目,随机地选择数据结构。
在又一种实施例中,每个数据结构是一组数据结构的成员,所述数据结构包括下述之一:最近最少使用(LRU)列表和时钟数据结构。
附图说明
图1图示现有技术的用于高速缓存管理的时钟数据结构。
图2图示计算环境的实施例。
图3图示在图2的计算环境内用于管理高速缓存的索引条目的实施例。
图4图示使用图2和图3的数据结构管理高速缓存的操作的实施例。
图5图示用于管理高速缓存的存储器内组件的实施例。
图6图示使用图5的存储器用于管理高速缓存的索引条目的实施例。
图7图示使用图5和图6的结构管理高速缓存的操作的实施例。
具体实施方式
图2图示计算环境的实施例。***12包括一个或多个处理器14a、14b、...、14n,其中每个处理器14a、14b、...、14n提交指向存储装置(storage)16内存储位置的输入/输出(I/O)请求。高速缓存管理器18处理I/O请求,和将由处理器14a、14b、...、14n请求的数据高速缓存到在存储器22内存储的多个最近最少使用(LRU)列表20a、20b、...、20n之一中。高速缓存管理器18使用LRU列表20a、20b、...、20n管理来自存储装置16、高速缓存在存储器(memory)22内的数据,从而确定何时从存储装置16升级(stage)和降级(destage)数据以优化高速缓存命中和最小化高速缓存未中。每个LRU列表20a、20b、...、20n包括最近最常使用(MRU)端24a、24b、...、24n和LRU端26a、26b、...、26n。在LRU列表20a、20b、...、20n内识别的从存储装置16访问的数据高速缓存在存储器22内。
高速缓存管理器18还保存高速缓存索引28,其具有在存储器22的高速缓存内保存的来自存储装置16的数据的相关信息。高速缓存索引28表示来自存储装置16内特定地址或位置的数据是否在LRU列表20a、20b、...、20n之一中的条目内被识别。存储地址或位置可以包括存储装置16内数据的轨道、块、页面或任何其它分段。
存储装置16可以包括一个或多个存储设备,例如一个或多个磁盘驱动器,存储设备阵列,例如仅一组磁盘(JBOD)、直接访问存储设备(DASD)、独立磁盘冗余阵列(RAID)、虚拟化设备、磁带存储器、闪存、等等。存储器22可以包括一个或多个存储器设备,其具有比存储装置16更高的吞吐量和更快的访问。在替代实施例中,存储器22和存储装置16可以包括在现有技术内公知的任意合适的计算机可读介质,以便一个计算机可读介质用作对另一个计算机可读介质(I/O请求指向其)的快速访问高速缓存。处理器14a、14b、...、14n可以包括分立微处理器设备或者在一个或多个多核微处理器设备上实施的分立处理内核。高速缓存管理器18可以实施为由一个或多个处理器14a、14b、...、14n执行或者在存储器22硬件内实施的计算机程序。
在一种实施例中,***12可以包括从多个连接主机接收对存储装置16的读和写请求的存储控制器。
图3图示在高速缓存索引28内高速缓存索引条目30的实施例,所述高速缓存索引条目表示存储位置32,例如存储地址;LRU列表34,识别具有用于该高速缓存的存储位置32的条目的LRU列表10a、10b、...、10n;和对于该高速缓存的存储位置32、在表示的LRU列表34中的条目36位置。
高速缓存索引28可以包括散列表,其条目根据存储位置32的散列进行索引。可替代地,可以通过除了在现有技术中公知的散列表之外的适当索引类型数据结构实施高速缓存索引28。
图4图示由高速缓存管理器18执行以管理将数据从存储装置16高速缓存在存储器22内的操作的实施例。一旦接收到请求(在方框100),例如读或写请求,以访问在存储装置16内的数据,高速缓存管理器18处理(在方框102)高速缓存索引28以确定所请求的存储地址是否在LRU列表20a、20b、...、20n之一中。所高速缓存的数据的存储位置可以包括存储装置的块、轨道、页面或者其它单元或分段。如果(在方框104)存在用于所请求存储地址的高速缓存索引条目30(图3),则所请求的数据在高速缓存内,即“高速缓存命中”。在这种情况下,高速缓存管理器18根据高速缓存索引28确定(在方框106)来自字段34的LRU列表20a、20b、...、20n和所请求数据的列表内的条目36。在一种实施例中,高速缓存管理器18可以将用于所访问数据的条目移动到当前LRU列表20a、20b、...、20n的MRU端24a、24b、...、24n,在所述当前LRU列表内包括该条目。在替代实施例中,高速缓存管理器18可以选择(在方框108),例如随机地选择,LRU列表20a、20b、...、20n之一(它可能包括也可能不包括已经包含所确定条目的LRU列表),和将所确定的用于请求数据的条目移动(在方框110)到选定LRU列表20a、20b、...、20n的MRU端24a、24b、...、24n。
如果(在方框104)在高速缓存索引28内不存在用于所请求存储地址的条目,则所请求的数据不在高速缓存内,即“高速缓存未中”。在这种情况下,如果(在方框112)高速缓冲存储器22未满,即具有可用于所请求数据的空间,则高速缓存管理器18(在方框114)将所请求的数据升级入高速缓存存储器22。为了建立用于升级入高速缓存存储器22的数据的LRU列表条目,高速缓存管理器18选择,例如随机地,(在方框116)LRU列表20a、20b、...、20n之一,和(在方框118)将用于所升级数据的条目添加到选定LRU列表20a、20b、...、20n的MRU端24a、24b、...、24n。还将条目30(图3)添加(在方框120)给高速缓存索引28,所述高速缓存索引包括所请求数据的存储地址和添加了条目30的选定LRU列表20a、20b、...、20n。如果(在方框112)高速缓存已满,即并不具有可用于所请求数据的空间,则需要使该数据降级。为了使该数据降级,通过处理随机选择的列表子集以确定包含最旧的LRU 26a、26b、...、26n条目的随机选择的子集的列表,高速缓存管理器18(在方框124)选择列表之一。通过为每个高速缓存条目保存存储最后访问该条目的时间的时间戳记,可以确定最旧的条目。例如,如果存在n个LRU列表,则随机选择列表的子集可以包括m个列表。在一种实施例中,列表子集或者m可以是两个。随后,高速缓存管理器18(在方框126)将用于LRU条目26a、...、26n的数据从选定的LRU列表20a、20b、...、20n中降级。使数据降级会从存储器22中删除该数据,并将对该数据的任何更新应用于存储装置16。在使该数据降级之后,控制继续到方框114,以升级所请求的数据。从方框110或120,控制前进到方框128以将所请求的数据返回给进行请求的处理器14a、14b、...、14n。
通过将条目随机地分配在LRU列表之中,所描述的实施例寻求提高同时访问的存储位置在不同LRU列表内具有条目以避免请求数据的处理器14a、14b、...、14n的锁竞争的可能性。例如,如果存在对LRU条目在不同的LRU列表上的存储位置的两个同时请求,则将不存在由于当两个请求要求访问同一LRU列表内的MRU条目时会产生的锁竞争和连续化而导致的延迟。然而,如果两个同时请求针对其条目在同一列表上的数据,则依然可能出现锁竞争。尽管如此,通过在多个LRU列表(具有用于它们的MRU和LRU端的单独锁)之中随机地分配最近访问的条目,所描述的实施例大大降低了锁竞争的可能性。
图5是替代实施例,其中不使用LRU列表20a、20b、...、20n(图2),高速缓存管理器18在存储器152内保存时钟数据结构(或“时钟”)150a、150b、...、150n以管理在高速缓存存储器152内来自存储装置16的数据。每个时钟150a、150b、...、150n包括时钟指针154a、154b、...、154n,提供指向时钟150a、150b、...、150n中在时钟150a、150b、...、150n的尾部条目156a、156b、...、156n和头部条目158a、158b、...、158n之间的位置的指针。高速缓存索引160提供到时钟之一中的条目的存储地址的索引。高速缓存索引160可以包括散列表或其它合适的索引数据结构。
图6是在高速缓存索引160内条目170的实施例,它表示存储位置172,例如存储地址;时钟174,识别具有用于该存储位置172的条目的时钟150a、150b、...、150n;和用于该存储位置172的在所表示的时钟174内的条目176。
图7图示由高速缓存管理器18使用时钟150a、150b、...、150n管理高速缓存存储器152所执行的操作的实施例。一旦(在方框200)接收到对存储地址的请求,高速缓存管理器18(在方框202)处理高速缓存索引160以确定所请求的数据是否在时钟150a、150b、...、150n之一中。如果(在方框204)存在用于所请求存储地址的高速缓存索引条目160,即“高速缓存命中”,则高速缓存管理器18根据高速缓存索引160(在方框206)确定时钟150a、150b、...、150n和在时钟150a、150b、...、150n内用于所请求数据的条目176(图6)。随后,高速缓存管理器18(在方框208)设置用于所确定条目的条目比特以表示该条目已经被访问过(例如将页面参考比特设置为“1”)和返回(在方框210)所请求的数据。如果(在方框204)高速缓存索引160并不包括用于所请求存储地址的条目,即“高速缓存未中”,并且如果(在方框212)高速缓存存储器152未满,即确实具有可用于所请求数据的空间,则高速缓存管理器18(在方框214)将所请求的数据升级进入高速缓存存储器152,并(在方框216)选择时钟150a、150b、...、150n之一,其可以是随机地选择。(在方框218)将用于所升级数据的条目170(图6)添加到选定时钟150a、150b、...、150n的头部条目158a、158b、...、158n,并(在方框220)将一个条目添加到高速缓存索引170。该高速缓存索引条目170包括所请求数据的存储地址172、选定时钟和用于升级进入存储器152的数据的选定时钟内的条目。从方框220,控制前进到方框210以返回数据。
如果(在方框212)存储器高速缓存152已满,即并不具有可用于所请求数据的空间,则高速缓存管理器18可以(在方框222)通过随机地选择时钟150a、150b、...、150n的子集以确定随机选择子集的最大块时钟(即具有最多条目170的时钟)来选择从中删除条目的时钟150a、150b、...、150n之一,该时钟是具有最多条目的时钟。对于每个时钟,保持表示其中的条目数量的计数器。可以使用计数器确定一组时钟之中的最大时钟,即包含最多条目的时钟。可替代地,高速缓存管理器18可以随机地选择时钟150a、150b、...、150n之一,以对用于针对高速缓存未中升级入存储器152的数据的条目进行更新。
如果(在方框224)在选定时钟集150a、150b、...、150n的时钟指针154a、154b、...、154n上的头部条目158a、158b、...、158n被表示为已经访问过,即将用于该条目的页面参考比特设置为“1”,则高速缓存管理器18设置(在方框226)该条目170的比特以表示该存储地址尚未被访问过,例如“0”,并将时钟指针154a、154b、...、154n向前移动一个条目以便先前的头部条目158a、158b、...、158n现在是新时钟指针位置的尾部条目156a、156b、...、156n。在重置该条目的比特以表示“未访问”之后,例如“0”,(在方框226)控制继续回到方框224,以便时钟指针154a、154b、...、154n继续向前移动直到到达其访问比特表示该条目最近未被访问的头部条目158a、158b、...、158n,例如页面参考比特为零。
如果(在方框224)在时钟指针154a、154b、...、154n上的头部条目158a、158b、...、158n表示高速缓存内的存储地址尚未被访问,例如页面参考比特为零,则高速缓存管理器18(在方框228)将头部条目156a、156b、...、156n的数据从高速缓冲存储器152降级到存储装置16(如果该数据已经被修改的话)。如果该数据尚未被修改,则可以丢弃该数据。控制随后前进到方框214以升级所请求的数据,将所请求数据的条目添加到时钟150a、150b、...、150n之一,并返回所请求的数据。
通过在时钟数据结构之中随机地分配条目,所描述的实施例寻求提高同时访问的存储位置在不同时钟内具有条目以避免当存在高速缓存未中时处理器14a、14b、...、14n的锁竞争的可能性。例如,如果存在对时钟条目在不同时钟上的存储位置的两个同时请求,则将不存在由于在有高速缓存未中情况时的锁竞争和连续化而产生的延迟,因为可以针对该高速缓存未中升级入高速缓存的数据,分别地更新不同时钟。通过在具有单独锁的多个时钟上随机地分配最新访问的条目,所描述的实施例大大降低了锁竞争的可能性。而且,通过避免锁定延迟,使用多个列表改善了***传输吞吐量。
附加实施例细节
使用标准编程和/或工程技术以生成软件、固件、硬件或其任意组合,可以将所描述的操作实施为方法、设备或制造产品。可以将所描述的操作实施为在“计算机可读介质”内保存的编码,其中处理器可以从计算机可读介质读取和执行该代码。计算机可读介质可以包括介质,例如磁存储介质(例如硬盘驱动器、软盘、磁带、等等)、光存储器(CD-ROM、DVD、光盘、等等)、易失性和非易失性存储器设备(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑、等等)、等等。可以进一步将执行所描述操作的代码实施为硬件逻辑(例如集成电路芯片、可编程门阵列(PGA)、应用专用集成电路(ASIC)、等等)。另外,可以在“传输信号”内实施执行所描述操作的代码,其中传输信号可以通过空间或者通过诸如光纤、铜线等传输介质传播。其中编码代码或逻辑的传输信号还可以包括无线信号、卫星传输、无线电波、红外信号、蓝牙、等等。其中编码代码或逻辑的传输信号能够由发送站发送和由接收站接收,其中在传输信号内编码的代码或逻辑可以在接收和发送站或设备上的硬件或计算机可读介质上解码和存储。“制造物品”包括其中可以实施代码的计算机可读介质、硬件逻辑和/或传输信号。其中编码实施所描述的操作实施例的代码的设备可以包括计算机可读介质或硬件逻辑。当然,本领域的普通技术人员将认识到在不脱离本发明的范围的情况下可以对此配置进行多种修改,制造物品可以包括在现有技术中公知的适当信息承载介质。
在所描述的实施例中,用于在高速缓存内存储数据的条目的数据结构包括LRU列表或时钟。在替代实施例中,可以使用其它适当数据结构存储信息的条目以管理高速缓存内的数据。而且,在所描述的实施例中,用于存储条目的数据结构具有同一类型,例如LRU列表、时钟。在替代实施例中,用于存储高速缓存条目的多个数据结构可以是混合类型的。
术语“实施例”、“一个实施例”、“多个实施例”、“该实施例”、“所述实施例”、“一个或多个实施例”、“一些实施例”是指“本发明的一个或多个(但并非全部的)实施例”,除非另有具体表述。
术语“包括”、“包含”、“具有”及其变型是指“包括但是不限于”,除非另有具体表述。
项目的枚举列表并不暗示任意或全部项目是相互排除的,除非另有具体表述。
术语“一个”以及“该”是指“一个或多个”,除非另有具体表述。
变量“n”和“m”当用于表示元素的可变数量时可以表示元素的任意数量的实例,并且当用于不同的元素时可以表示不同的整数。
相互通信的设备不需要相互连续地通信,除非另有具体表述。此外,相互通信的设备可以通过一个或多个中介直接或间接地通信。
具有相互通信的若干组件的实施例的描述并不暗示需要所有这些组件。相反,描述多种可选组件以说明本发明的各种可能的实施例。
此外,尽管顺序地描述了处理步骤、方法步骤、算法等,也可以以替代的顺序配置这些处理、方法和算法以工作。换句话说,可描述的任意顺序的步骤并不必然表示以该顺序执行这些步骤的要求。可以以任何实际的顺序执行在此所述的处理步骤。此外,可以同时执行一些步骤。
当在此描述单个设备或物品时,显然可以使用多个设备/物品(无论它们是否协作)替代单个设备/物品。类似地,在此描述多个设备或物品时(无论它们是否写作),显然可以使用单个设备/物品替代多个设备或物品或者可以使用不同数量的设备/物品替代所描述数量的设备或程序。通过未明确描述为具有某功能/特征的一个或多个其它设备可以替代地实施该设备的功能和/或特征。因而,本发明的其它实施例不需要包括设备本身。
图4和图7的图示操作说明以某个顺序出现的某些事件。在替代实施例中,可以以不同的顺序执行、修改或删除某些操作。而且,可以将步骤添加到上述逻辑,并依然符合所描述的实施例。此外,在此所描述的操作可以顺序地出现,或者可以并行地处理某些操作。另外,可以通过单个处理单元或者通过分布式处理单元执行操作。
已经为了说明和描述的目的介绍了本发明的上述各种实施例的描述。将不是详尽的,或者将本发明的限制为所公开的具体形式。在上述教导之下可以进行多种修改和变化。本发明的范围将不由该详细描述而由权利要求来限制。上述描述、实例和数据提供制造物的完整描述和本发明的组成的使用。因为在不脱离本发明的精神和范围的情况下,可以实现本发明的多种实施例,所以本发明的范围由权利要求书来限定。

Claims (19)

1.一种方法,包括:
提供多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目;
接收对第一计算机可读介质中数据的请求;
确定在数据结构之一中是否存在用于所请求数据的条目;
响应于确定在数据结构之一中不存在用于所请求数据的条目,从第一计算机可读介质检索所请求的数据以存储在第二计算机可读介质中;
响应于确定在数据结构之一中不存在用于所请求数据的条目,选择数据结构之一;和
将用于所检索数据的条目添加到选定数据结构。
2.权利要求1的方法,其中选择数据结构之一包括随机地选择数据结构之一。
3.权利要求1的方法,还包括:
响应于确定在数据结构之一中不存在用于所请求数据的条目,确定第二计算机可读介质是否具有可用于存储所检索的所请求数据的空间;
响应于确定第二计算机可读介质不具有可用空间,从数据结构之一中选择一个条目;
使用于选定条目的数据从第二计算机可读介质中降级。
4.权利要求3的方法,其中响应于确定第二计算机可读介质不具有可用空间、从数据结构之一中选择一个条目包括:
确定具有最旧条目的数据结构之一,其中选定条目包括在所确定数据结构中的最旧条目。
5.权利要求3的方法,其中响应于确定第二计算机可读介质不具有可用空间、从数据结构之一中选择一个条目包括:
选择数据结构的随机子集;和
从选定随机子集中选择一个数据结构,该数据结构的最旧条目不新于选定子集中任何其它数据结构中的最旧条目。
6.权利要求1的方法,其中数据结构包括最近最少使用(LRU)列表,并且其中添加用于所检索数据的条目包括将条目添加到选定LRU列表的最近最常使用(MRU)端。
7.权利要求1的方法,其中数据结构包括时钟,其中每个时钟具有在列表中彼此相邻的头部和尾部条目,并且其中添加用于所检索数据的条目包括将条目添加到选定时钟的头部条目。
8.权利要求7的方法,其中时钟内的条目表示该条目是否被访问过,还包括:
响应于确定在时钟之一中没有用于所请求数据的条目,确定第二计算机可读介质是否具有可用空间以存储所检索的所请求数据;
选择时钟之一;
确定时钟内被表示为尚未被访问的一个条目;和
使用于所确定条目的数据从第二计算机可读介质中降级。
9.一种方法,包括:
提供多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目;
接收对第一计算机可读介质中的数据的请求;
确定在数据结构之一中是否存在用于所请求数据的条目;
响应于确定在数据结构之一中存在用于所请求数据的一个条目,针对该数据请求从第二计算机可读介质访问所请求的数据;
响应于确定在数据结构之一中存在用于所请求数据的一个条目,选择数据结构之一;和
响应于确定存在用于所请求数据的一个条目,将确定的用于所请求数据的条目移动到选定的数据结构。
10.权利要求9的方法,其中响应于确定在数据结构之一中存在所请求数据的一个条目,随机地选择数据结构。
11.权利要求9的方法,其中每个数据结构是一组数据结构的成员,所述数据结构包括下述之一:最近最少使用(LRU)列表和时钟数据结构。
12.一种与第一计算机可读介质通信的***,包括:
至少一个处理器;
第二计算机可读介质;
多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目;
管理对第二计算机可读介质的访问的高速缓存管理器,其能够执行操作,所述操作包括:
提供多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目;
从一个处理器接收对第一计算机可读介质中数据的请求;
确定在数据结构之一中是否存在用于所请求数据的条目;
响应于确定在数据结构之一中不存在用于所请求数据的条目,从第一计算机可读介质检索所请求的数据以存储在第二计算机可读介质中;
响应于确定在数据结构之一中不存在用于所请求数据的条目,选择数据结构之一;和
将用于所检索数据的条目添加到选定数据结构。
13.权利要求12的***,其中由高速缓存管理器执行的操作还包括:
响应于确定在数据结构之一中不存在用于所请求数据的条目,确定第二计算机可读介质是否具有可用于存储所检索的所请求数据的空间;
响应于确定第二计算机可读介质不具有可用空间,从数据结构之一中选择一个条目;
使用于选定条目的数据从第二计算机可读介质中降级。
14.权利要求13的***,其中响应于确定第二计算机可读介质不具有可用空间、从数据结构之一中选择一个条目包括:
选择数据结构的随机子集;和
从选定随机子集中选择一个数据结构,该数据结构的最旧条目不新于选定子集中任何其它数据结构中的最旧条目。
15.权利要求12的***,其中数据结构包括最近最少使用(LRU)列表,并且其中添加用于所检索数据的条目包括将条目添加到选定LRU列表的最近最常使用(MRU)端。
16.权利要求12的***,其中数据结构包括时钟,其中每个时钟包括在列表中彼此相邻的头部和尾部条目,并且其中添加用于所检索数据的条目包括将条目添加到选定时钟的头部条目。
17.权利要求16的***,其中时钟内的条目表示条目是否被访问过,并且其中由高速缓存管理器执行的操作还包括:
响应于确定在时钟之一中没有用于所请求数据的条目,确定第二计算机可读介质是否具有可用空间以存储所检索的所请求数据;
选择时钟之一;
确定时钟内被表示为尚未被访问的一个条目;和
使用于所确定条目的数据从第二计算机可读介质中降级。
18.一种与第一计算机可读介质通信的***,包括:
至少一个处理器;
第二计算机可读介质;
多个数据结构,每个具有识别从第一计算机可读介质添加到第二计算机可读介质的数据的条目;
管理对第二计算机可读介质的访问的高速缓存管理器,其能够执行操作,所述操作包括:
从处理器接收对第一计算机可读介质中的数据的请求;
确定在数据结构之一中是否存在用于所请求数据的条目;
响应于确定在数据结构之一中存在用于所请求数据的一个条目,针对该数据请求从第二计算机可读介质访问所请求的数据;
响应于确定在数据结构之一中存在所请求数据的一个条目,选择数据结构之一;和
响应于确定存在用于所请求数据的一个条目,将确定的用于所请求数据的条目移动到选定的数据结构。
19.一种执行代码的制造物品,其中该代码使执行操作以访问第一计算机可读介质和第二计算机可读介质,该操作包括用于执行根据权利要求1-11中任一权利要求的方法中的步骤的指令。
CNA200710102599XA 2006-07-20 2007-05-16 使用多个数据结构管理高速缓存中的数据的方法和*** Pending CN101110061A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/459,004 2006-07-20
US11/459,004 US7908236B2 (en) 2006-07-20 2006-07-20 Using multiple data structures to manage data in cache

Publications (1)

Publication Number Publication Date
CN101110061A true CN101110061A (zh) 2008-01-23

Family

ID=38972599

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200710102599XA Pending CN101110061A (zh) 2006-07-20 2007-05-16 使用多个数据结构管理高速缓存中的数据的方法和***

Country Status (3)

Country Link
US (1) US7908236B2 (zh)
JP (1) JP5305621B2 (zh)
CN (1) CN101110061A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104115133A (zh) * 2012-02-16 2014-10-22 苹果公司 复合非易失性存储设备的数据迁移
CN104145252A (zh) * 2012-03-05 2014-11-12 国际商业机器公司 两级高速缓存***中的自适应高速缓存提升
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘***中的映射表缓存管理方法
CN104769560A (zh) * 2012-11-06 2015-07-08 先进微装置公司 基于缓冲器充满度而向高速缓存进行预取
CN106936913A (zh) * 2017-03-16 2017-07-07 宿州学院 一种基于节点位移和lru记录的缓存更新方法及网络
CN109902092A (zh) * 2019-02-22 2019-06-18 广州荔支网络技术有限公司 一种数据存储***的操作方法、装置和移动终端

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783839B2 (en) * 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8868611B2 (en) 2011-07-28 2014-10-21 Hewlett-Packard Development Company, L.P. Data management system for efficient storage and retrieval of multi-level/multi-dimensional data
US10073851B2 (en) 2013-01-08 2018-09-11 Apple Inc. Fast new file creation cache
US9262415B2 (en) * 2013-11-08 2016-02-16 Sybase, Inc. Cache efficiency in a shared disk database cluster
US9710398B2 (en) * 2014-11-18 2017-07-18 International Business Machines Corporation RE-MRU of metadata tracks to reduce lock contention
US10114753B2 (en) * 2015-08-21 2018-10-30 International Business Machines Corporation Using cache lists for multiple processors to cache and demote tracks in a storage system
US9952904B2 (en) 2015-08-21 2018-04-24 International Business Machines Corporation Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache
US9921974B2 (en) 2015-08-21 2018-03-20 International Business Machines Corporation Assigning cache control blocks and cache lists to multiple processors to cache and demote tracks in a storage system
US10108552B2 (en) 2015-08-21 2018-10-23 International Business Machines Corporation Using cache lists for processors to determine tracks to demote from a cache
US10067884B2 (en) 2015-08-21 2018-09-04 International Business Machines Corporation Distributing a plurality of tracks to add to cache to lists assigned to processors
US9971508B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads on processors to demote tracks from a cache
US9971689B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads and demote threads on processors to demote tracks from a cache
US9952982B2 (en) 2016-06-06 2018-04-24 International Business Machines Corporation Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
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
US11580023B2 (en) 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program
US11163699B2 (en) 2020-03-30 2021-11-02 EMC IP Holding Company LLC Managing least recently used cache using reduced memory footprint sequence container
US11307935B2 (en) 2020-03-31 2022-04-19 EMC IP Holding Company LLC Management of volume snapshots in a data storage system
US11301162B2 (en) 2020-05-31 2022-04-12 EMC IP Holding Company LLC Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems
US11262933B2 (en) 2020-07-01 2022-03-01 EMC IP Holding Company LLC Sharing memory resources between asynchronous replication workloads
US11636089B2 (en) 2020-08-03 2023-04-25 EMC IP Holding Company LLC Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array
US10986174B1 (en) 2020-09-18 2021-04-20 EMC IP Holding Company LLC Automatic discovery and configuration of server nodes
US11487432B2 (en) 2020-10-08 2022-11-01 EMC IP Holding Company LLC Direct response to IO request in storage system with remote replication
US11687536B2 (en) 2020-10-14 2023-06-27 EMC IP Holding Company LLC Pipeline-based system for configuration checking and reporting associated with an information processing system
US11606429B2 (en) 2020-10-14 2023-03-14 EMC IP Holding Company LLC Direct response to IO request in storage system having an intermediary target apparatus
US11900131B2 (en) 2020-10-15 2024-02-13 EMC IP Holding Company LLC Dynamic remediation actions in response to configuration checks in an information processing system
US11416396B2 (en) 2020-10-22 2022-08-16 EMC IP Holding Company LLC Volume tiering in storage systems
US11573736B2 (en) 2020-11-30 2023-02-07 EMC IP Holding Company LLC Managing host connectivity to a data storage system
US11487460B2 (en) 2020-12-16 2022-11-01 EMC IP Holding Company LLC Deferred reclamation of invalidated entries associated with replication in a log-structured array
US11704160B2 (en) 2021-01-11 2023-07-18 EMC IP Holding Company LLC Redistribution of processing groups between server nodes based on hardware resource utilization
US11418589B1 (en) 2021-04-16 2022-08-16 EMC IP Holding Company LLC Object synchronization of server nodes in a network computing environment
US11809274B2 (en) 2021-04-21 2023-11-07 EMC IP Holding Company LLC Recovery from partial device error in data storage system
US11733874B2 (en) 2021-05-03 2023-08-22 EMC IP Holding Company LLC Managing replication journal in a distributed replication system
US11966294B2 (en) 2021-05-05 2024-04-23 EMC IP Holding Company LLC Journal barrier consistency determination
US11537312B2 (en) 2021-05-05 2022-12-27 EMC IP Holding Company LLC Maintaining replication consistency during distribution instance changes
US11675789B2 (en) 2021-06-29 2023-06-13 EMC IP Holding Company LLC Tracking utilization of data blocks in a storage system
US11650920B1 (en) 2021-10-27 2023-05-16 Dell Products L.P. Write cache management
US11550479B1 (en) 2021-10-27 2023-01-10 Dell Products L.P. Metadata management in storage systems
US11609854B1 (en) 2021-10-28 2023-03-21 Dell Products L.P. Utilizing checkpoints for resiliency of metadata in storage systems
US11630773B1 (en) 2022-01-05 2023-04-18 Dell Products L.P. Utilizing a persistent write cache as a redo log
US11789917B2 (en) 2022-01-25 2023-10-17 Dell Products L.P. Data deduplication in a storage system
US11842051B2 (en) 2022-01-25 2023-12-12 Dell Products L.P. Intelligent defragmentation in a storage system
US11868248B2 (en) 2022-02-25 2024-01-09 Dell Products L.P. Optimization for garbage collection in a storage system
US11704053B1 (en) 2022-04-06 2023-07-18 Dell Products L.P. Optimization for direct writes to raid stripes
US11960481B2 (en) 2022-06-29 2024-04-16 Dell Products L.P. Managing lookup operations of a metadata structure for a storage system
US11971825B2 (en) 2022-07-14 2024-04-30 Dell Products L.P. Managing granularity of a metadata structure for a storage system
US11921714B2 (en) 2022-07-19 2024-03-05 Dell Products L.P. Managing insert operations of a metadata structure for a storage system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4636946A (en) * 1982-02-24 1987-01-13 International Business Machines Corporation Method and apparatus for grouping asynchronous recording operations
US5778442A (en) * 1996-03-25 1998-07-07 Oracle Corporation Method and apparatus for buffering data in a computer system
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6141731A (en) * 1998-08-19 2000-10-31 International Business Machines Corporation Method and system for managing data in cache using multiple data structures
US6393525B1 (en) * 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
GB2372589B (en) * 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US6961804B2 (en) * 2001-07-20 2005-11-01 International Business Machines Corporation Flexible techniques for associating cache memories with processors and main memory
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US6615318B2 (en) * 2002-01-22 2003-09-02 International Business Machines Corporation Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US7096321B2 (en) * 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005091146A1 (ja) * 2004-03-24 2005-09-29 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
US7337273B2 (en) * 2004-03-31 2008-02-26 Microsoft Corporation Strategies for reading information from a mass storage medium using a cache memory
US20060143396A1 (en) * 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104115133A (zh) * 2012-02-16 2014-10-22 苹果公司 复合非易失性存储设备的数据迁移
CN104115133B (zh) * 2012-02-16 2017-08-08 苹果公司 用于复合非易失性存储设备的数据迁移的方法、***和设备
CN104145252A (zh) * 2012-03-05 2014-11-12 国际商业机器公司 两级高速缓存***中的自适应高速缓存提升
CN104145252B (zh) * 2012-03-05 2017-03-29 国际商业机器公司 两级高速缓存***中的自适应高速缓存提升
CN104769560A (zh) * 2012-11-06 2015-07-08 先进微装置公司 基于缓冲器充满度而向高速缓存进行预取
CN104769560B (zh) * 2012-11-06 2017-04-12 先进微装置公司 基于缓冲器充满度而向高速缓存进行预取
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘***中的映射表缓存管理方法
CN106936913A (zh) * 2017-03-16 2017-07-07 宿州学院 一种基于节点位移和lru记录的缓存更新方法及网络
CN106936913B (zh) * 2017-03-16 2020-06-19 宿州学院 一种基于节点位移和lru记录的缓存更新方法及网络
CN109902092A (zh) * 2019-02-22 2019-06-18 广州荔支网络技术有限公司 一种数据存储***的操作方法、装置和移动终端

Also Published As

Publication number Publication date
US20080021853A1 (en) 2008-01-24
JP5305621B2 (ja) 2013-10-02
US7908236B2 (en) 2011-03-15
JP2008027444A (ja) 2008-02-07

Similar Documents

Publication Publication Date Title
CN101110061A (zh) 使用多个数据结构管理高速缓存中的数据的方法和***
US7783839B2 (en) Using different algorithms to destage different types of data from cache
US9454533B2 (en) Reducing metadata in a write-anywhere storage system
CN104145252B (zh) 两级高速缓存***中的自适应高速缓存提升
US7721043B2 (en) Managing write requests in cache directed to different storage groups
US10169232B2 (en) Associative and atomic write-back caching system and method for storage subsystem
US9921973B2 (en) Cache management of track removal in a cache for storage
US10082958B2 (en) Invoking input/output (I/O) threads on processors to demote tracks from a cache
US8443149B2 (en) Evicting data from a cache via a batch file
US10642755B2 (en) Invoking demote threads on processors to demote tracks from a cache based on free cache segments
US9971689B2 (en) Invoking input/output (I/O) threads and demote threads on processors to demote tracks from a cache
CN106716334A (zh) 文件***卷内的高效数据移动
CN104040508B (zh) 用于在高速缓存***中管理数据的方法和***
CN103703440A (zh) 预取用于使更新轨道离台的数据轨道和奇偶校验数据
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US11036635B2 (en) Selecting resources to make available in local queues for processors to use
CN103257932A (zh) 用于管理计算机可读高速缓存***中的数据的方法和***
Fevgas et al. LB-Grid: An SSD efficient grid file
JP2007334752A (ja) Raid装置、raid制御プログラムおよびキャッシュ管理方法
CN108989373B (zh) 访问数据的方法和装置
US20040039869A1 (en) Information processing system
KR101162679B1 (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20080123