CN1517885B - 关于利用原子性更新的中央高速缓冲存储器的方法和系统 - Google Patents

关于利用原子性更新的中央高速缓冲存储器的方法和系统 Download PDF

Info

Publication number
CN1517885B
CN1517885B CN2004100035011A CN200410003501A CN1517885B CN 1517885 B CN1517885 B CN 1517885B CN 2004100035011 A CN2004100035011 A CN 2004100035011A CN 200410003501 A CN200410003501 A CN 200410003501A CN 1517885 B CN1517885 B CN 1517885B
Authority
CN
China
Prior art keywords
cache memory
relevant data
central cache
data
data element
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.)
Expired - Lifetime
Application number
CN2004100035011A
Other languages
English (en)
Other versions
CN1517885A (zh
Inventor
D·C·布朗
M·V·利昂诺夫
M·M·伯德
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1517885A publication Critical patent/CN1517885A/zh
Application granted granted Critical
Publication of CN1517885B publication Critical patent/CN1517885B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/027Arrangements and methods specific for the display of internet documents
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

揭示了一种中央高速缓冲存储器,该中央高速缓冲存储器的更新无需锁定管理费用。更新是“原子性的”,这体现在:这些更新无法被中途打断。应用程序始终自由地读取该高速缓冲存储器中的数据,从而通过参考表格来存取该数据。应用程序不是直接更新该高速缓冲存储器,相反,它们将更新请求发送到服务程序。为了更新该高速缓冲存储器,该服务程序在两个阶段中进行。在第一个阶段中,该服务程序准备该新数据,并将其加入该高速缓冲存储器,而不会更新该参考表格。在第一个阶段期间,存取该高速缓冲存储器的应用程序无法“看见”该新数据,因为还没有更新该参考表格。在第一个阶段完成之后,该服务程序执行该更新过程的第二个阶段:利用原子性来更新该参考表格。该双相更新过程使该高速缓冲存储器始终处于一致状态。

Description

关于利用原子性更新的中央高速缓冲存储器的方法和系统
技术领域
本发明通常涉及计算机记忆存储技术,更具体地说,涉及高速缓冲存储器。 
背景技术
要创建或访问计算机应用程序所需要的某些数据,其费用昂贵。这些费用可以包括计算资源,用于计算在网络上访问该数据的数据费用和输送费用(包括带宽和时间)。一旦在花费资源来创建或访问这些数据之后,计算设备就经常会将该数据存储在“高速缓冲”存储器中。然后,如果该计算设备再次需要该数据,则可以廉价地从该高速缓冲存储器中存取这些数据。 
该高速缓冲存储器对于该原始应用程序或原始计算设备而言可以是本地的,也可以在几个应用程序和设备之中共享该高速缓冲存储器。后一种类型的高速缓冲存储器经常被称作“中央”高速缓冲存储器。在一些环境中,每个应用程序支持供其自己使用的本地高速缓冲存储器,同时与其他应用程序共享中央高速缓冲存储器。对该中央高速缓冲存储器进行优化,用于存储对一个以上的应用程序有用的数据;同时,这些本地高速缓冲存储器可以为对于每个应用程序而言是特定的那些数据提供超高速缓存的各种好处。 
在中央高速缓冲存储器中管理数据很少是简单明了的。尝试从该中央高速缓冲存储器中读取数据的多个应用程序很少会引起难题,但当至少一个应用程序希望将数据加入该高速缓冲存储器时,就不可以这样说了。如果在一个应用程序正对该中央高速缓冲存储器进行写入的同时,允许其他应用程序从该高速缓冲存储器进行读取,那么,这些阅读器会获得过时或甚至是曲解的数据。当一个以上的应用程序希望将数据加入该高速缓冲存储器时,这种存取协调问题会加剧。 
缓解这种存取协调问题的一种普通的方法被称作“高速缓冲存储器锁定”。只要一个应用程序希望通过增加、删除或修改其内容来更改该高速缓冲存储 器的内容,它就可以寻求对“锁”数据结构的单独存取。当复写器应用程序具有该锁时,它可以修改该高速缓冲存储器,并且,只要复写器具有该锁,就可以防止其他应用程序存取该高速缓冲存储器。这样,可以防止阅读器获得过时或曲解的数据。如果两个应用程序都希望修改该高速缓冲存储器,那么,它们中的一个应用程序必须等候,直到另一个放弃该锁为止。 
在协调对中央高速缓冲存储器的存取的过程中,锁会非常有用。但是,显而易见,只要一个应用程序希望修改该高速缓冲存储器,这些锁就会延迟所有应用程序的存取。对于一些中央高速缓冲存储器而言,应用程序容易容忍这种关闭。但是,对于其他高速缓冲存储器而言,这真的会是一件麻烦事。例如,考虑字体图示符高速缓冲存储器。计算机屏幕上所显示的字符由被称作“图示符”的单独元素构成。由于这些图示符中的一些图示符包含重大数量的数据,并且由于这些图示符中的一些图示符在其生成过程中消耗重要的计算资源,因此,它们是中央高速缓冲存储器的理想主题。但是,如果在将新的图示符加入该字体图示符高速缓冲存储器的同时锁定该字体图示符高速缓冲存储器,则会在写入该计算机屏幕的应用程序中引起显著的延迟。 
当限制中央高速缓冲存储器可用的这些内存资源时,产生了另一个高速缓冲存储器管理问题。希望将数据加入该高速缓冲存储器的多个应用程序彼此独立地进行操作。这样,通常关于应该将哪些数据加入该中央高速缓冲存储器,以便改善该操作环境,这些应用程序没有“全局”观点。如果该中央高速缓冲存储器增长得太大,并且用较小的尺寸再形成,以便虑及进一步的增加,则会产生同样的问题。没有一个应用程序可以决定:哪些数据应该被保留在该中央高速缓冲存储器中,以及哪些数据最好被除去,以便释放内存,供高速缓冲存储器将来增长。 
发明内容
鉴于前述内容,本发明提供了一种中央高速缓冲存储器,该中央高速缓冲存储器可以在没有锁定的延迟管理费用的情况下被加以更新,并且对该高速缓冲存储器内的数据的重要性具有全局观点。“原子性”更新提供了存取协调的各种好处,而不会招致锁定的延迟管理费用。高速缓冲存储器更新是“原子性的”,这体现在:它们被设计成无法被中途打断。通过这些高速缓冲存储器更新,当被应用程序存取时,高速缓冲存储器内总是保持最新、一致。 
应用程序总是自由地读取该中央高速缓冲存储器中的数据,从而通过参考表格来存取该数据。但是,这些应用程序没有直接更新该高速缓冲存储器,相反,它们将更新请求发送到服务程序。为了更新该高速缓冲存储器,该高速缓冲存储器服务程序在两个阶段中进行。在第一个阶段中,该高速缓冲存储器服务程序准备该新数据并将它们加入该高速缓冲存储器,而不会更新该参考表格。这第一个阶段可能会花费一些时间,但应用程序仍然可以充分地对该高速缓冲存储器进行存取,这是因为该高速缓冲存储器没有被锁定。在这第一个阶段期间,存取该高速缓冲存储器的应用程序无法“看见”该新数据,因为该参考表格还没有被更新。只有在该高速缓冲存储器数据被充分加以准备并被载入该高速缓冲存储器之后,该高速缓冲存储器服务程序才执行该更新过程的第二个阶段:更新该参考表格。该更新(包括只改变一个指针)利用原子性来加以执行,而不会锁定该高速缓冲存储器。这样,该双相更新过程不要求锁定该高速缓冲存储器,并且一直使该高速缓冲存储器处于存取应用程序的有效状态。由于一个高速缓冲存储器服务程序执行所有的更新,因此,不需要锁在多个高速缓冲存储器复写器之中进行协调。 
该高速缓冲存储器服务程序收集关于如何使用该高速缓冲存储器中的数据的统计数字。当该高速缓冲存储器增长得太大时,该高速缓冲存储器服务程序使用这些统计数字来决定应该将哪些数据拷贝到新的高速缓冲存储器中。再次在两个阶段中,利用原子性来创建这个新的高速缓冲存储器。在第一个阶段期间,该高速缓冲存储器服务程序创建这个新的高速缓冲存储器,并且用来自老的高速缓冲存储器的所选择的数据来填充这个新的高速缓冲存储器。迄今,应用程序还不具备有关这个新的高速缓冲存储器的知识。当这个新的高速缓冲存储器准备好使用时,该高速缓冲存储器服务程序在老的高速缓冲存储器的头部中为其加入参考。然后,在第二个阶段中,并且通过使用另一项原子性操作,该高速缓冲存储器服务程序将老的高速缓冲存储器标记为“过时的”。一注意到这个老的高速缓冲存储器被标记为过时,应用程序就遵循对该新高速缓冲存储器的参考,并且开始只使用这个新的高速缓冲存储器。如在高速缓冲存储器内的更新中,按这样一种方式来执行用于替换整个高速缓冲存储器的这种机制,以便应用程序始终可以看见一致的高速缓冲存储器。 
应用程序可以继续使用过时的高速缓冲存储器,直到它们注意到过时的标志并转到这个新的高速缓冲存储器。一旦已转换所有应用程序,就自动删除该过时的高速缓冲存储器。 
在一些实施例中,高速缓冲存储器内的参考表格包括偏移量,这些偏移量相对于该高速缓冲存储器内的另一个位置来规定该高速缓冲存储器中所存储的数据位置。这具有一个优点:该高速缓冲存储器可以被存储为文件,并且在主宿该高速缓冲存储器的计算设备重新启动之后被立即再使用。 
该中央高速缓冲存储器可以由一个计算设备来主宿,并可以由那个计算设备和其他计算设备上的应用程序来使用。每个应用程序也可以具有结合该中央高速缓冲存储器来加以使用的其自己的本地高速缓冲存储器。如果该本地高速缓冲存储器具有与该中央高速缓冲存储器相同的数据结构,那么,可以为这两种高速缓冲存储器使用相同的超高速缓存访问代码。 
该高速缓冲存储器服务程序将试探法应用于其所搜集的关于高速缓冲存储器使用的统计数字,以便决定当替换该高速缓冲存储器时要保存哪些数据。在一些实施例中,提供了用户界面,从而允许改变该试探法,并允许监控该高速缓冲存储器的操作。 
附图说明
所附权利要求书详细陈述了本发明的各个特点,但通过以下详细的描述并结合附图,可以最佳程度地理解本发明及其目的和优点。在这些附图中: 
图1a是框图,表现了经由局域网(LAN)来共享超高速缓存数据的三个计算设备; 
图1b是框图,表现了在图1a的这些计算设备之中被共享的中央高速缓冲存储器; 
图2是示意图,通常展示了支持本发明的示范计算机系统; 
图3a~3d一起构成流程图,展示了根据本发明的示范方法,应用程序使用该示范方法来尝试从中央高速缓冲存储器存取数据; 
图4a是示意图,表现了根据本发明的中央高速缓冲存储器的示范数据结构; 
图4b是示意图,表现了中央高速缓冲存储器中的数据元素的示范数据结构; 
图5a~5d一起构成根据本发明的示范方法的流程图,该示范方法是关于维 持中央高速缓冲存储器的例行程序;以及, 
图6是示范方法的流程图,该示范方法用于配置中央高速缓冲存储器服务程序。 
具体实施方式
参考这些附图(其中,类似的参考数字提及类似的元件),将本发明展示为在合适的计算环境中被加以执行。下文基于本发明的实施例,不应该被视作在这里未作明确描述的选择性实施例方面限制本发明。 
在下文中,除非另有指示,参照由一个或多个计算设备执行的动作和操作的符号表示,来描述本发明。照此,将会理解:这类动作和操作(有时被称作“是计算机执行的”)包括用组织形式表示数据的电信号计算设备的处理单元所执行的操作。这项操作变换该数据或将其保存在该计算设备的存储系统中的位置,这样,用精通该技术领域的人所熟悉的方式来重新配置或改变该设备的操作。其中保存有数据的这些数据结构是具有由该数据的格式定义的特殊属性的存储器的物理位置。但是,前述上下文中正在描述本发明,而这并不意味着起限制的作用,因为精通该技术领域的人将会理解:也可以在硬件中执行下文中所描述的各种动作和操作。 
本发明提供了一种利用原子性更新的中央高速缓冲存储器。该中央高速缓冲存储器可以由运行于主宿该高速缓冲存储器的计算设备上的应用程序来专用,或者,如在图1a中,该中央高速缓冲存储器可以由几个计算设备上的应用程序来使用。在图1a中,三个计算设备——A102、B104和便携式计算机106处于超高速缓存数据共享环境100中。中央高速缓冲存储器(未示出)驻留在计算设备A102上,并且可以经由LAN 108由应用程序来加以存取。现存的标准通信协议用于在共享环境100内的各个计算设备之中传送高速缓冲存储器请求和响应。 
与因特网110的连接被示出指出:即使远程计算设备也可以加入超高速缓存数据共享环境100。实际上,这类远程设备存取该中央高速缓冲存储器所需的通信时间增加了,这样,为了满足该高速缓冲存储器提供对数据的快速存取的目的,可运行计数器。大多数中央高速缓冲存储器的情况将只涉及一个或至多几个位置接近的计算设备。 
图1b呈现了图1a中的超高速缓存数据共享环境100的示范实施例的结构细节。应用程序A 112正在计算设备A 102上运行。在一起构成应用程序A 112的各种例行程序之中,是本地和中央高速缓冲存储器搜索程序114。当应用程序A 112需要可以驻留在高速缓冲存储器中的数据时,这个程序114在当前的本地高速缓冲存储器116和当前的中央高速缓冲存储器118中寻找该数据。本地高速缓冲存储器116是应用程序A 112的一部分,并且在应用程序A 112的控制之下。中央高速缓冲存储器118不是应用程序A 112的一部分,但应用程序A 112和其他应用程序可以对中央高速缓冲存储器118进行存取。 
如果中央高速缓冲存储器搜索程序114在本地高速缓冲存储器116中或在中央高速缓冲存储器118中找到所请求的数据,则它将该数据返回到应用程序A 112。如果没有找到所请求的数据,则在其他地方搜寻该数据,或者创建该数据。一旦找到或创建该数据,高速缓冲存储器搜索程序114就要求:通过调用本地高速缓冲存储器更新程序120,将该数据加入本地高速缓冲存储器116。也将请求发送到中央高速缓冲存储器服务程序124,以便将该数据加入中央高速缓冲存储器118。 
当将数据加入本地高速缓冲存储器和中央高速缓冲存储器时,这两种高速缓冲存储器都会增长。当它们变得太大时,可创建新的高速缓冲存储器,并用先前的高速缓冲存储器的部分数据来填充这个新的高速缓冲存储器。为了选择将哪些数据传送到这个新的高速缓冲存储器,可以应用任何数量的方法。例如,选择最新近使用的数据或最频繁使用的数据。图1b表现了先前的本地高速缓冲存储器122以及当前的本地高速缓冲存储器116。 
当创建新的中央高速缓冲存储器时,注意使用该中央高速缓冲存储器来防止应用程序的中断。当新的中央高速缓冲存储器118准备就绪时,将较老的中央高速缓冲存储器126标记为“过时的”,以便警告应用程序:具备较新的高速缓冲存储器。但是,那些应用程序不需要立即切换到较新的高速缓冲存储器118,而可以选择暂时继续存取较老的中央高速缓冲存储器126。一旦不再有应用程序存取较老的中央高速缓冲存储器126,就删除那个高速缓冲存储器。 
应用程序B 128在超高速缓存数据共享环境100中的另一个计算设备上运行。该应用程序被示出没有本地高速缓冲存储器,但它具有中央高速缓冲存储器搜索程序130。那个例行程序仍然存取较老的中央高速缓冲存储器126,但还没有注意到这个高速缓冲存储器被标记为过时。高速缓冲存储器搜索程 序130可以要求将数据加入该中央高速缓冲存储器,但中央高速缓冲存储器服务程序124将把那个数据加入当前的中央高速缓冲存储器118,而不是加入过时的高速缓冲存储器126。 
图1中的计算设备102、104和106可能属于任何构造。图2是框图,通常展示了支持本发明的示范计算机系统。图2中的计算机系统只是合适的环境的一个例子,并且,它并不意在提出有关本发明的使用或功能性的范围的任何限制。不应该将计算设备102解释为具有涉及图2中所展示的任何一个部件或部件组合的任何从属性或要求。本发明可用于其他许多通用或专用的计算环境或配置。适合用于本发明的众所周知的计算系统、环境和配置的例子包括(但不局限于)个人计算机、服务器、手持设备或便携式设备、写字板设备、多处理器系统、基于微处理器的系统、置顶盒、可编程消费电子设备、网络PCs、小型计算机、大型计算机以及包括以上任何系统或设备的分布式计算环境。在其最基本的配置中,计算设备102通常包括至少一个处理单元200和存储器202。存储器202可能是易失的(例如,RAM)、非易失的(例如,ROM或快闪存储器),也可能是两者的某种组合。在图2中,用虚线204展示了该最基本的配置。计算设备102可能具有额外的特点和功能性。例如,计算设备102可以包括额外的存储器(可移动的和不可移动的),该额外的存储器包括(但不局限于)磁盘、光盘和磁带。在图2中,由可移动存储器206和不可移动的存储器208来展示这类额外的存储器。计算机存储介质包括易失的和非易失的可移动和不可移动的介质,该介质用关于信息(例如,计算机可读指令、数据结构、程序模块或其他数据)存储的任何方法或技术来加以执行。存储器202、可移动存储器206和不可移动的存储器208都是计算机存储介质的例子。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、快闪存储器、其他存储技术、CD-ROM、数字通用磁盘、其他光学存储器、盒式磁带、磁带、磁盘存储器、其他磁性存储设备,以及可以被用来存储所需信息并可以由设备102来存取的其他任何介质。任何这类计算机存储介质都可能是设备102的一部分。设备102也可能包含允许该设备与其他设备进行通信的信道210。信道210是通信介质的例子。通信介质通常具体表现计算机可读指令、数据结构、程序模块或调制数据信号(例如,载波或其他传送机制)中的其他数据,并且,它包括任何信息传递介质。术语“调制数据信号”意味着一种信号,该信号的一个或多个特征用这样一种方式来 加以设置或更改,以便为该信号中的信息编码。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络和直线连接)和无线介质(例如,声音、RF、红外线和其他无线介质)。如这里所使用的术语“计算机可读介质”包括存储介质和通信介质。计算设备102也可能具有输入设备212(例如,键盘、鼠标、笔、语音输入设备、写字板、触摸输入设备等)。也可能包括诸如显示器(可能与触摸输入设备结合)、扬声器和打印机的输出设备214。所有这些设备在该技术领域中都众所周知,这里不需要详细讨论。 
图3a~3d呈现了关于图1b中的本地和中央高速缓冲存储器搜索程序114的示范方法。该流程图包括不需要被包括在高速缓冲存储器搜索程序114的每个实施例中的许多选项。 
在该流程图始于图3a中的步骤300之前,向高速缓冲存储器搜索程序114请求存取与应用程序A 112有关的数据。在步骤300中,通过检查是否可以存取中央高速缓冲存储器,来开始高速缓冲存储器搜索程序114。如果没有中央高速缓冲存储器可存取,那么,高速缓冲存储器搜索程序114进行到图3d中的步骤326,并在本地高速缓冲存储器中寻找有关的数据。高速缓冲存储器搜索程序114的其他实施例根据这些情况来尝试在该中央高速缓冲存储器之前存取本地高速缓冲存储器。 
如果中央高速缓冲存储器可存取,那么,高速缓冲存储器搜索程序114在步骤302中进行核对,来了解该中央高速缓冲存储器是否被标记为“过时的”。注意,这个步骤和随后的步骤304是任选的:高速缓冲存储器搜索程序114可以继续使用过时的高速缓冲存储器。但是,为了保持当前状态,高速缓冲存储器搜索程序114应该定期检验该中央高速缓冲存储器的状况,以便一旦它注意到老的高速缓冲存储器过时了,它就会存取并放弃这个老的高速缓冲存储器。 
在中央高速缓冲存储器被标记为过时之前,中央高速缓冲存储器服务程序124创建新的中央高速缓冲存储器(见图5a和5b中的步骤512~518)。这样,在步骤304中,高速缓冲存储器搜索程序114可以遵循在该过时的中央高速缓冲存储器的头部中对该当前的中央高速缓冲存储器的参考。由于请求到达时与处理那个请求时之间的延迟会很重大,因此,在该延迟期间,一个以上的高速缓冲存储器可以被标记为过时。在那种情况下,重复步骤302和304,直到达到非过时的高速缓冲存储器。 
在步骤306中,高速缓冲存储器搜索程序114存取该中央高速缓冲存储器,来了解它是否包含有关的数据。根据该中央高速缓冲存储器的结构的细节,步骤306的细节会有很大的变化。如图3a~3c中所示的步骤306呈现了一项可能的实施,并且意在结合图4a和4b中所示的示范高速缓冲存储器数据结构来加以观察。 
图4a展示了中央高速缓冲存储器400的结构,中央高速缓冲存储器400可以结合步骤306中所展示的程序来使用。尺寸固定的头部402包含该过时的标志,并且,如果设置该标志,则参考更当前的中央高速缓冲存储器400。接下来是尺寸固定的参考表格404。参考表格404中的每个项目要么是对数据元素存储区406中的数据元素(见图4b中的410)的参考,要么是特殊值(例如,NULL),该特殊值指出:该项目没有提到数据元素。在一些实施例中,这些参考作为整数偏移量来加以提供。这允许:在主机计算设备102重新启动之后,将中央高速缓冲存储器400作为磁盘上的文件来加以存储,并且对其进行恢复。 
实际的超高速缓存数据作为单独的数据元素410来加以存储。被分配给这些数据元素406的空间按需要变成不受约束空间408的区域。当用完不受约束空间408时,高速缓冲存储器服务程序124就该创建新的中央高速缓冲存储器400了。 
步骤306中所展示的特殊实施通过散列有关的数据,在步骤308中开始。然后,在步骤310中,使用该散列,作为进入中央高速缓冲存储器400中的参考表格404的索引。在图3b的步骤312中,检查参考表格404中的所选择的项目。如果那个项目没有提到任何数据元素,那么,有关的数据不在中央高速缓冲存储器400中(步骤314)。然后,高速缓冲存储器搜索程序114进行到图3d中的步骤326,以便在除中央高速缓冲存储器400以外的其他地方寻找有关的数据。 
另一方面,如果参考表格404中的所选择的项目提到数据元素,那么,那个数据元素可能或可能不包含有关的数据。其中的原因是:不同的数据值可能会散列到相同的值,并导致在参考表格404中选择相同的项目。 
查阅图4b中的示范数据元素结构410。每个数据元素410始于参考412,参考412要么提到具有相同的散列值的另一个数据元素410,要么提到特殊值(例如,NULL),该特殊值指出:该项目没有提到另一个数据元素410。就 利用参考表格404中的这些项目,该参考可以作为整数偏移量来加以提供。参考412后面是数据标识符领域414,该数据标识符领域专门识别这个数据元素410中所包含的数据。最后是包含该数据本身的领域416。这个领域416的尺寸和结构针对所存储的数据的性质。在一些实施例中,数据元素410包含一个领域,该领域指出其尺寸或(同样)特定元素数据区416的末端的位置。在其他实施例中,中央高速缓冲存储器400的头部402中的领域指出所分配的数据存储区406的末端。无论如何,使用这些长度字段来指出:在哪里可以将另一个数据元素410加入高速缓冲存储器400(在图5d的步骤534中,以下将加以讨论)。 
注意数据元素410的这个示范结构,返回到图3b中的步骤316。步骤316中的数据元素410的散列匹配有关数据的散列。为了了解这个数据元素410是否包含有关的数据,可以将数据元素410的数据标识符领域414和有关的数据进行比较。如果它们匹配,那么,该搜索完成。有关的数据在步骤318中被加以检索,并被传递到应用程序A 112。这成功地结束了图3a~3d中的高速缓冲存储器搜索程序114。 
另一方面,如果步骤316中的比较揭示这个数据元素410不包含有关的数据,那么,高速缓冲存储器搜索程序114进行到图3c中的步骤320。在步骤320中,检查数据元素410的参考域412。如果这个参考域没有提到另一个数据元素410,那么,中央高速缓冲存储器400不包含有关的数据(步骤322)。高速缓冲存储器搜索程序114进行到图3d中的步骤326,以便在其他地方搜索有关的数据。 
在步骤320中,如果数据元素410的参考域412提到进一步的数据元素,那么,检查那个进一步的数据元素,来了解它是否包含有关的数据。步骤324捕获这个过程:通过重复步骤316~322来跟随数据元素链410,直到找到并检索到有关的数据(步骤318),或者直到达到该链的末端而没有找到有关的数据(步骤322)。 
如果中央高速缓冲存储器400不包含有关的数据,那么,在图3d的步骤326中,高速缓冲存储器搜索程序114可以搜索对于应用程序A 112而言是本地的高速缓冲存储器116。在一些实施中,步骤326的细节监控步骤306的细节。这允许再使用该高速缓冲存储器搜索代码。无论如何,如果本地高速缓冲存储器116包含有关的数据,那么,在步骤332中检索那些数据。如果不包含 有关的数据,并且假定没有其他的高速缓冲存储器搜索有关的数据,那么,在步骤328中创建那些数据。然后,在步骤330中将那些数据加入本地高速缓冲存储器116,以促进将来的存取。可以在步骤334中请求将所创建的数据加入中央高速缓冲存储器400。 
图3a~3d展示了高速缓冲存储器搜索程序114如何从中央高速缓冲存储器400中或从其他地方检索有关的数据。图5a~5d展示了高速缓冲存储器400的另一个方面:高速缓冲存储器服务程序124,当目前的高速缓冲存储器变满时,高速缓冲存储器服务程序124将数据加入高速缓冲存储器400并创建新的中央高速缓冲存储器。由于高速缓冲存储器服务程序124是将数据加入高速缓冲存储器400的唯一的例行程序,因此,不需要锁定高速缓冲存储器400,以防止多个复写器之中的冲突。也由于所有的写请求都流过高速缓冲存储器服务程序124,因此,它可以收集有关高速缓冲存储器使用的统计数字并形成对将数据加入高速缓冲存储器400的特殊请求的重要性的“全局”观点,并且,可以决定:当创建新的高速缓冲存储器时,应该传送哪些数据。图5a~5d中的程序只是起示范的作用。它使用在图4a和4b中所介绍的各种中央高速缓冲存储器数据结构。 
高速缓冲存储器服务程序124始于图5a中的步骤500,这时,它接收到将数据加入中央高速缓冲存储器400的请求。当高速缓冲存储器搜索程序114执行图3d中的步骤334时,这个请求可能已发生。 
在步骤502中,高速缓冲存储器服务程序124的一些实施例收集有关所接收的请求和有关其他请求的统计数字。在步骤504中,高速缓冲存储器服务程序124决定是否服从这个请求。一些实施例完全服从所有请求,而其他实施例在决定有关的数据是否“值得”被加入中央高速缓冲存储器400之前先参考所收集的统计数字。如果与高速缓冲存储器400中的不受约束空间408比较,有关数据的尺寸太大,则一些实施例拒绝该请求。将有关的数据和高速缓冲存储器400中的数据进行比较(可能通过执行图3a~3c中的步骤306),并且,如果已经存在有关的数据,则拒绝该请求。发生这种情况的原因是:排列在步骤500中所接收的请求,并且请求到达时与将有关的数据加入高速缓冲存储器400时(在图5b~5d的步骤522中)之间会有重大的延迟。在该延迟期间,请求的高速缓冲存储器服务程序114或另一个例行程序会再存取高速缓冲存储器400,无法找到有关的数据,并且再提出该请求。到处理稍后 的请求的时候,依照较早的请求,有关的数据已经被加入队列400。无论如何,如果在步骤506中决定不服从该请求,那么,高速缓冲存储器服务程序124在步骤508中等候进一步的请求。 
如果决定服从该请求,那么,在步骤510中,高速缓冲存储器服务程序124决定是否需要新的中央高速缓冲存储器400。例如,如果有关的数据将不适合高速缓冲存储器400中的不受约束空间408,那么,在图5a和5b的步骤512~520中创建新的高速缓冲存储器400。如果参考表格404变满,或者,如果高速缓冲存储器400具有太多暂时还没有被使用的数据元素410,则也可以创建新的高速缓冲存储器400。如果不需要新的高速缓冲存储器400,那么,高速缓冲存储器服务程序124在图5b的步骤522中直接开始加入有关的数据。 
如果需要新的中央高速缓冲存储器400,则在步骤512中创建空核。高速缓冲存储器通常被存储在RAM中,以便它们可以提供对其数据的快速存取。一些操作系统允许RAM的区域由该文件系统来映射。这提供了某些优点,以后将对这些优点进行描述。 
在图5b的步骤514中,高速缓冲存储器服务程序124用从现存的高速缓冲存储器中选择的数据元素410来填充新近被创建的高速缓冲存储器400。可以通过几种可能的方法来选择数据元素410。高速缓冲存储器服务程序124可以收集有关已如何使用数据元素410的统计数字。然后,选择最新近使用的元素或最频繁使用的元素。一些实施例使用该选择中的随机性元素。无论如何,一旦选择数据元素410,就将它们拷贝到新的中央高速缓冲存储器400的数据存储区406中,并且填充新的高速缓冲存储器400的参考表格404。注意,步骤514会需要一些时间来加以执行,但是,在这个步骤期间,老的高速缓冲存储器总是可存取的。 
在老的高速缓冲存储器的头部402中,在步骤516中写入对新的高速缓冲存储器400的参考,并且,在步骤518中,设置标志,以便将老的高速缓冲存储器标记为“过时的”。现在,新的高速缓冲存储器400准备就绪,可以使用了。高速缓冲存储器搜索程序114一看见老的高速缓冲存储器中的该过时标志,就遵循对新的高速缓冲存储器400的参考(见图3a中的步骤302和304)  。 
在步骤520中,高速缓冲存储器服务程序124要求:一没有提到该过时的高速缓冲存储器的应用程序,也就是说,所有这些应用程序一放弃其对该过 时的高速缓冲存储器的参考,该操作系统就自动删除该过时的高速缓冲存储器。 
不管是否刚刚创建新的高速缓冲存储器400,都在步骤522中将有关的数据加入当前的高速缓冲存储器400。图5b~5d中的步骤522监控图3a~3c中的步骤306的复杂化,因为步骤522创建在步骤306中被搜索的各种数据结构。附图中所提供的、关于步骤306和522的细节只说明了一些实施例,而在大多数实施例中,这些步骤彼此监控。 
步骤522的特殊实施例从在步骤524中散列有关的数据开始(图3a中的监控步骤308)。在步骤526中,使用该散列,在高速缓冲存储器400的参考表格404中选择项目(监控步骤310)。如果在步骤528中,所选择的项目还没有提到数据元素410,那么,在图5d的步骤534中,在高速缓冲存储器400的数据存储区406中创建数据元素410。然后,用有关的数据来填充这个新的数据元素。注意,当这个填充步骤(population step)进行时,存取高速缓冲存储器400的高速缓冲存储器搜索程序114将不会看见该新数据,所以可能会提出加入这些相同的数据的额外请求。一旦填充步骤534完成并且新的数据元素410准备就绪,高速缓冲存储器服务程序124就利用原子性来更新参考表格404中的所选择的指针,以指向新的数据元素410(步骤536)。该参考的写操作只占据一个计算机指令,以便它本质上是不可中断的。这样,在这项操作期间,不需要锁定高速缓冲存储器400,以保持其内部的一致性。 
返回到步骤528,如果参考表格404中的所选择的项目已经提到数据元素410,那么,在步骤530中检查数据元素410的参考域412。在步骤532中,遵循该参考链,直到它结束为止。(在图3b~3c的步骤316~324中,这沿相同的参考链来监控该搜索。)一旦找到该链的末端,该高速缓冲存储器服务程序就进行到以上所描述的步骤534,其中,新的数据元素410被定位并用有关的数据来填充。在这种情况中,步骤536利用原子性将对新的数据元素410的参考加入曾经处于该链末端的现存的数据元素410,这样,将该参考链延长又一个“链环”。 
总而言之,无论是将新的数据元素410加入现存的中央高速缓冲存储器400,还是创建新的中央高速缓冲存储器400,高速缓冲存储器服务程序124都在两个阶段中进行。首先,准备该数据,并且完成所有耗时的工作。在这个阶段期间,对于高速缓冲存储器搜索程序114而言,中央高速缓冲存储器400 的这些变化不可见。所以,不需要锁定中央高速缓冲存储器400,来保持其内部的一致性。也不需要按高优先级来运行高速缓冲存储器服务程序124。第二个阶段包括:将单一指针写入新的数据元素410或写入新的中央高速缓冲存储器400。写入单一指针是本质上不可中断的程序,因此,又不需要在此阶段期间锁定中央高速缓冲存储器400。一旦第二个阶段完成,高速缓冲存储器搜索程序114就可以存取这个新的数据或新的高速缓冲存储器。 
图6表现了一种用于监控和配置高速缓冲存储器服务程序124的操作的方法。在步骤600中,显示了该中央高速缓冲存储器的最大尺寸和当前尺寸。在步骤602中,显示了当填充新的中央高速缓冲存储器时在图5b的步骤514中被用来从现存的中央高速缓冲存储器中选择数据元素的试探法。在步骤604中,显示了在步骤504中被用来决定是否服从将数据加入该中央高速缓冲存储器的请求的试探法。记住:这种试探法可以只是“始终服从”。步骤606显示了已被搜集的、关于高速缓冲存储器使用的各种统计数字。网络管理员可以分析这些统计数字,并决定该中央高速缓冲存储器没有正在最佳地进行操作。该网络管理员在步骤608中输入某种变化,该变化在步骤610中被反映回来。图6意在仅仅提供用户界面的风味,而无法公平对待该技术领域中众所周知的众多不同的高速缓冲存储器分析工具。 
鉴于可以应用本发明的原理的这许多可能的实施例,应该认识到:这里根据附图而描述的实施例意在只是起说明性的作用,而不应该被视作限制本发明的范围。例如,精通该技术领域的人将会认识到:在不脱离本发明的精神的前提下,可以在布置和细节方面修改所展示的实施例,尤其是基于这些实施例的各种数据结构和程序。虽然按照软件模块或部件来描述本发明,但是,精通该技术领域的人将会认识到:这样的软件模块或部件可以同等地由硬件部件来取代。所以,如这里所描述的本发明计划可将所有这类实施例包括在以下权利要求书及其相等物的范围以内。 

Claims (31)

1.一种在具有应用程序、具有中央高速缓冲存储器和具有与所述应用程序不同的高速缓冲存储器服务程序的计算环境中,供所述高速缓冲存储器服务程序用来尝试将有关的数据加入所述中央高速缓冲存储器的方法,所述方法包括:
从所述应用程序接收请求,该请求要求将所述有关的数据加入所述中央高速缓冲存储器;
确定是否将所述有关的数据加入所述中央高速缓冲存储器;其中如果确定将有关的数据加入到所述中央高速缓冲存储器:
首先,将所述有关的数据存储在所述中央高速缓冲存储器;以及,
其次,将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格;
其中将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格是原子性操作。
2.如权利要求1所述的方法,其特征在于,所述应用程序在第一计算设备上运行,其中所述高速缓冲存储器服务程序在第二计算设备上运行,并且其中所述第一和第二计算设备彼此不同。
3.如权利要求2所述的方法,其特征在于,从所述应用程序接收请求包括通过从以下构成的组中选择的通信介质来接收:串行通信线路、并行通信线路、局域网、内联网、调制解调器连接和因特网。
4.如权利要求1所述的方法,其特征在于,所述有关的数据包括字体图示符。
5.如权利要求1所述的方法,其特征在于,确定是否将所述有关的数据加入所述中央高速缓冲存储器至少部分地基于从以下构成的组中选择的操作:
确定所述有关的数据是否将适合所述中央高速缓冲存储器;
确定是否已经在所述中央高速缓冲存储器中找到所述有关的数据;
收集有关该请求和有关从所述应用程序或从其他应用程序接收的其他请求的统计数字;以及,
参考从所述应用程序接收的收集的统计数字。
6.如权利要求1所述的方法,其特征在于,将所述有关的数据加入所述中央高速缓冲存储器包括:
在所述中央高速缓冲存储器中的参考表格中选择项目,该选择至少部分基于所述有关的数据的散列。
7.如权利要求6所述的方法,还包括:
如果对所选项目的检查显示所选项目没有提及所述中央高速缓冲存储器中的数据元素,那么:
用所述有关的数据来填充所述中央高速缓冲存储器中的新的数据元素;以及,
加入对所述参考表格中的所选项目中的有关的数据的参考。
8.如权利要求7所述的方法,其特征在于,加入对有关的数据的参考包括:计算到所述新的数据元素的整数偏移量。
9.如权利要求6所述的方法,还包括:
如果对所选项目的检查显示所选项目提及所述中央高速缓冲存储器中的数据元素,那么:
如果对所述数据元素的检查显示该数据元素提及进一步的数据元素,那么,重复检查所述数据元素的步骤,其中检查所述进一步的数据元素,直到达到没有提及另一个数据元素的数据元素为止;以及,
当达到没有提及另一个数据元素的数据元素时,那么:
用所述有关的数据来填充所述中央高速缓冲存储器中的新的数据元素;以及,
加入对所述数据元素中的有关的数据的参考。
10.如权利要求9所述的方法,其特征在于,加入对有关的数据的参考包括:计算到所述新的数据元素的整数偏移量。
11.如权利要求1所述的方法,还包括:
确定是否创建新的中央高速缓冲存储器;以及,
根据创建所述新的中央高速缓冲存储器的确定,来创建所述新的中央高速缓冲存储器。
12.如权利要求11所述的方法,其特征在于,确定是否创建所述新的中央高速缓冲存储器至少部分基于从以下构成的组中选择的操作:
确定所述有关的数据是否将适合该中央高速缓冲存储器;
确定该中央高速缓冲存储器中的参考表格是否装满;以及
确定已使用所述中央高速缓冲存储器中的数据有多新近。
13.如权利要求11所述的方法,其特征在于,创建所述新的中央高速缓冲存储器包括:
创建所述新的中央高速缓冲存储器;
在所述中央高速缓冲存储器中加入对所述新的中央高速缓冲存储器的参考;以及,
将所述中央高速缓冲存储器标记为过时。
14.如权利要求13所述的方法,还包括:
用从该过时的中央高速缓冲存储器中选择的数据元素来填充所述新的中央高速缓冲存储器,该选择至少部分基于被应用于所收集的统计数字的试探法,所收集的统计数字是关于该过时的中央高速缓冲存储器中的数据元素的使用。
15.如权利要求14所述的方法,其特征在于,从以下构成的组中选择该试探法:最新近使用的、最频繁使用的。
16.如权利要求13所述的方法,还包括:
标记该过时的中央高速缓冲存储器,以便当没有应用程序提及该过时的中央高速缓冲存储器时,自动删除该过时的中央高速缓冲存储器。
17.一种在具有应用程序、具有中央高速缓冲存储器和具有与所述应用程序不同的高速缓冲存储器服务程序的计算环境中,供所述应用程序用于尝试存取有关的数据的方法,该方法包括:
搜索所述中央高速缓冲存储器中的所述有关的数据;
确定是否在所述中央高速缓冲存储器中找到所述有关的数据;
如果在所述中央高速缓冲存储器中找到所述有关的数据,那么在所述中央高速缓冲存储器中存取所述有关的数据;以及,
如果在所述中央高速缓冲存储器中没有找到所述有关的数据,那么:
尝试在除所述中央高速缓冲存储器中以外的其他地方存取所述有关的数据;以及,
向所述高速缓冲存储器服务程序发出请求,要求将所述有关的数据加入所述中央高速缓冲存储器;
其中如果确定将所述有关的数据加入所述中央高速缓冲存储器:
首先,将所述有关的数据存储在所述中央高速缓冲存储器;以及,
其次,将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格;
其中将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格是原子性操作;
其中尝试在除所述中央高速缓冲存储器中以外的其他地方存取所述有关的数据包括:
在本地的高速缓冲存储器中搜索对于所述应用程序是有关的数据;
如果在所述本地高速缓冲存储器中找到所述有关的数据,那么在本地高速缓冲存储器中存取所述有关的数据;以及,
如果在所述本地高速缓冲存储器中没有找到所述有关的数据,那么,调用例行程序来创建有关的数据。
18.如权利要求17所述的方法,其中,所述应用程序在第一计算设备上运行,其中所述高速缓冲存储器服务程序在第二计算设备上运行,并且其中,所述第一和第二计算设备彼此不同。
19.如权利要求18所述的方法,其特征在于,向所述高速缓冲存储器服务程序发出请求包括通过从以下构成的组中选择的通信介质来发出:串行通信线路、并行通信线路、局域网、内联网、调制解调器连接和因特网。
20.如权利要求17所述的方法,其特征在于,所述有关的数据包括字体图示符。
21.如权利要求17所述的方法,其特征在于,在所述中央高速缓冲存储器中搜索有关的数据包括:
在所述中央高速缓冲存储器中的参考表格中选择项目,该选择至少部分基于所述有关的数据的散列。
22.如权利要求21所述的方法,还包括:
如果对所选项目的检查显示所选项目没有提及所述中央高速缓冲存储器中的数据元素,那么,决定所述有关的数据不在所述中央高速缓冲存储器中。
23.如权利要求21所述的方法,还包括:
如果对所选项目的检查显示所选项目提及所述中央高速缓冲存储器中的数据元素,并且如果对所述数据元素的检查显示所述数据元素包含所述有关的数据,那么决定所述有关的数据在所述中央高速缓冲存储器中。
24.如权利要求23所述的方法,其特征在于,所选项目借助于所述中央高速缓冲存储器中的整数偏移量来提及数据元素。
25.如权利要求21所述的方法,还包括:
如果对所选项目的检查显示所选项目提及所述中央高速缓冲存储器中的数据元素,并且,如果对所述数据元素的检查显示所述数据元素不包含所述有关的数据,那么:
如果所述数据元素没有提及进一步的数据元素,那么决定所述有关的数据不在所述中央高速缓冲存储器中;以及,
如果所述数据元素提及进一步的数据元素,那么重复检查所述数据元素的步骤,其中检查所述进一步的数据元素,直到达到包含所述有关的数据的数据元素或者达到没有提及另一个数据元素的数据元素为止。
26.如权利要求17所述的方法,还包括:
如果在所述本地高速缓冲存储器中没有找到所述有关的数据,那么将所创建的有关的数据加入所述本地高速缓冲存储器。
27.如权利要求17所述的方法,还包括:
如果在所述本地高速缓冲存储器中没有找到所述有关的数据,那么向所述高速缓冲存储器服务程序发出请求,要求将所创建的有关的数据加入所述中央高速缓冲存储器。
28.如权利要求17所述的方法,其特征在于,向所述高速缓冲存储器服务程序发出请求包括:
存储该请求;
存储一个或多个其他的请求;以及,
向所述高速缓冲存储器服务程序发出所存储的请求。
29.如权利要求17所述的方法,还包括:
检验所述中央高速缓冲存储器,以了解所述中央高速缓冲存储器是否被标记为过时;以及,
如果所述中央高速缓冲存储器被标记为过时,那么使用该过时的中央高速缓冲存储器中的参考来对另一个中央高速缓冲存储器进行定位。
30.如权利要求17所述的方法,还包括:
收集有关所述应用程序对所述中央高速缓冲存储器的使用的统计数字;以及,
将所收集的统计数字发给所述高速缓冲存储器服务程序。
31.一种在具有应用程序、具有中央高速缓冲存储器和具有与所述应用程序不同的高速缓冲存储器服务程序的计算环境中,供所述应用程序用于尝试存取有关的数据的系统,该系统包括:
用于搜索所述中央高速缓冲存储器中的所述有关的数据的装置;
用于确定是否在所述中央高速缓冲存储器中找到所述有关的数据的装置;
用于如果在所述中央高速缓冲存储器中找到所述有关的数据,那么在所述中央高速缓冲存储器中存取所述有关的数据的装置;以及,
如果在所述中央高速缓冲存储器中没有找到所述有关的数据,那么:
用于尝试在除所述中央高速缓冲存储器中以外的其他地方存取所述有关的数据的装置;以及,
用于向所述高速缓冲存储器服务程序发出请求,要求将所述有关的数据加入所述中央高速缓冲存储器的装置;
其中如果确定将所述有关的数据加入所述中央高速缓冲存储器:
用于将所述有关的数据存储在所述中央高速缓冲存储器的装置;以及,
用于将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格的装置;
其中将对所述有关的数据的参考加入所述中央高速缓冲存储器中的参考表格是原子性操作;
其中用于尝试在除所述中央高速缓冲存储器中以外的其他地方存取所述有关的数据的装置包括:
用于在本地的高速缓冲存储器中搜索对于所述应用程序是有关的数据的装置;
用于如果在所述本地高速缓冲存储器中找到所述有关的数据,那么在本地高速缓冲存储器中存取所述有关的数据的装置;以及,
用于如果在所述本地高速缓冲存储器中没有找到所述有关的数据,那么,调用例行程序来创建有关的数据的装置。
CN2004100035011A 2003-01-28 2004-01-29 关于利用原子性更新的中央高速缓冲存储器的方法和系统 Expired - Lifetime CN1517885B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/352,599 US7020746B2 (en) 2003-01-28 2003-01-28 Method and system for an atomically updated, central cache memory
US10/352,599 2003-01-28

Publications (2)

Publication Number Publication Date
CN1517885A CN1517885A (zh) 2004-08-04
CN1517885B true CN1517885B (zh) 2013-03-06

Family

ID=32655510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100035011A Expired - Lifetime CN1517885B (zh) 2003-01-28 2004-01-29 关于利用原子性更新的中央高速缓冲存储器的方法和系统

Country Status (5)

Country Link
US (3) US7020746B2 (zh)
EP (2) EP1443403A3 (zh)
JP (3) JP4195397B2 (zh)
KR (2) KR100906262B1 (zh)
CN (1) CN1517885B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316048B2 (en) * 2004-08-17 2012-11-20 Hewlett-Packard Development Company, L.P. Method and apparatus for managing a data structure for multi-processor access
EP1703404A1 (fr) * 2005-03-16 2006-09-20 Amadeus s.a.s Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
US7779206B2 (en) * 2005-05-16 2010-08-17 Texas Instruments Incorporated Cache inspection with inspection bypass feature
US8200688B2 (en) 2006-03-07 2012-06-12 Samsung Electronics Co., Ltd. Method and system for facilitating information searching on electronic devices
US8115869B2 (en) 2007-02-28 2012-02-14 Samsung Electronics Co., Ltd. Method and system for extracting relevant information from content metadata
US8863221B2 (en) * 2006-03-07 2014-10-14 Samsung Electronics Co., Ltd. Method and system for integrating content and services among multiple networks
US8843467B2 (en) * 2007-05-15 2014-09-23 Samsung Electronics Co., Ltd. Method and system for providing relevant information to a user of a device in a local network
US8510453B2 (en) * 2007-03-21 2013-08-13 Samsung Electronics Co., Ltd. Framework for correlating content on a local network with information on an external network
US8209724B2 (en) * 2007-04-25 2012-06-26 Samsung Electronics Co., Ltd. Method and system for providing access to information of potential interest to a user
US20070261099A1 (en) * 2006-05-02 2007-11-08 Broussard Scott J Confidential content reporting system and method with electronic mail verification functionality
US7954048B2 (en) * 2006-09-21 2011-05-31 International Business Machines Corporation Content management via configuration set relationships in a content management system
US8935269B2 (en) * 2006-12-04 2015-01-13 Samsung Electronics Co., Ltd. Method and apparatus for contextual search and query refinement on consumer electronics devices
US20090055393A1 (en) * 2007-01-29 2009-02-26 Samsung Electronics Co., Ltd. Method and system for facilitating information searching on electronic devices based on metadata information
US20080209120A1 (en) * 2007-02-26 2008-08-28 Microsoft Corporation Accelerating cache performance by active cache validation
US9286385B2 (en) 2007-04-25 2016-03-15 Samsung Electronics Co., Ltd. Method and system for providing access to information of potential interest to a user
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176068B2 (en) 2007-10-31 2012-05-08 Samsung Electronics Co., Ltd. Method and system for suggesting search queries on electronic devices
US8190652B2 (en) * 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
US8938465B2 (en) * 2008-09-10 2015-01-20 Samsung Electronics Co., Ltd. Method and system for utilizing packaged content sources to identify and provide information based on contextual information
US8171228B2 (en) * 2009-11-12 2012-05-01 Oracle International Corporation Garbage collection in a cache with reduced complexity
US8433865B2 (en) * 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
WO2012101855A1 (ja) * 2011-01-28 2012-08-02 株式会社日立製作所 通信システム、通信装置、通信制御方法
US8635411B2 (en) 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
US8892513B2 (en) * 2011-10-31 2014-11-18 U9T Inc Method, process and system to atomically structure varied data and transform into context associated data
KR102174337B1 (ko) 2014-04-08 2020-11-04 삼성전자주식회사 메모리 시스템 및 이를 포함하는 전자 장치
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9910907B2 (en) * 2015-01-29 2018-03-06 International Business Machines Corporation Atomically moving data elements between or within linked data structures
US10387053B1 (en) * 2015-09-16 2019-08-20 Amazon Technologies, Inc. Memory synchronization in a distributed computing system
CN105471870B (zh) * 2015-11-24 2019-04-23 深圳国微技术有限公司 一种密钥安全更新及使用的系统及方法
US10452638B2 (en) * 2016-12-14 2019-10-22 International Business Machines Corporation Atomically moving data elements between or within linked data structures having no support for atomic moves
CN109918134B (zh) * 2019-03-06 2023-05-30 湖南科技大学 用于vliw基本块调度的组合启发式指令选择优化方法
US20230060922A1 (en) * 2021-08-26 2023-03-02 Verizon Media Inc. Systems and methods for memory management in big data applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809543A (en) * 1993-12-23 1998-09-15 Unisys Corporation Fault tolerant extended processing complex for redundant nonvolatile file caching
CN1195817A (zh) * 1997-03-05 1998-10-14 国际商业机器公司 在非包含的高速缓存存储器分级体系内使用的实现高速缓存一致性机制的方法和系统
US6216212B1 (en) * 1997-08-01 2001-04-10 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
US5287473A (en) * 1990-12-14 1994-02-15 International Business Machines Corporation Non-blocking serialization for removing data from a shared cache
US5526511A (en) * 1993-12-23 1996-06-11 Unisys Corporation Enhanced least recently used round robin cache management method and apparatus for allocation and destaging of cache segments
US5706462A (en) * 1996-02-23 1998-01-06 Microsoft Corporation Self optimizing font width cache
US5883640A (en) * 1996-08-15 1999-03-16 Hsieh; Paul Computing apparatus and operating method using string caching to improve graphics performance
US5950201A (en) * 1996-12-06 1999-09-07 International Business Machines Corporation Computerized design automation method using a single logical PFVL paradigm
US5924098A (en) * 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6009428A (en) * 1997-09-15 1999-12-28 International Business Machines Corporation System and method for providing a single application program interface for heterogeneous databases
US6128627A (en) 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
BR9915366A (pt) * 1998-11-16 2001-07-31 Ericsson Telefon Ab L M Sistema de processamento, sistema de comunicação possuindo um sistema de processamento, e, processo para processar trabalho em um sistema de processamento tendo múltiplos processadores de memória compartilhada para execução paralela de trabalhos
EP1073951A1 (en) * 1999-02-15 2001-02-07 Koninklijke Philips Electronics N.V. Data processor with a configurable functional unit and method using such a data processor
US6738526B1 (en) * 1999-07-30 2004-05-18 Microsoft Corporation Method and apparatus for filtering and caching data representing images
JP2001043204A (ja) 1999-08-02 2001-02-16 Nec Eng Ltd キャッシュ・メモリ制御装置
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
IL140459A0 (en) * 1999-12-28 2002-02-10 Ge Med Sys Global Tech Co Llc Workstation with text font cache
US6594678B1 (en) * 2000-01-05 2003-07-15 Sun Microsystems, Inc. Methods and apparatus for improving locality of reference through memory management
US6889301B1 (en) * 2002-06-18 2005-05-03 Emc Corporation Data storage system
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809543A (en) * 1993-12-23 1998-09-15 Unisys Corporation Fault tolerant extended processing complex for redundant nonvolatile file caching
CN1195817A (zh) * 1997-03-05 1998-10-14 国际商业机器公司 在非包含的高速缓存存储器分级体系内使用的实现高速缓存一致性机制的方法和系统
US6216212B1 (en) * 1997-08-01 2001-04-10 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches

Also Published As

Publication number Publication date
US20050251627A1 (en) 2005-11-10
EP1443403A3 (en) 2007-10-10
US20060136670A1 (en) 2006-06-22
KR20040069282A (ko) 2004-08-05
CN1517885A (zh) 2004-08-04
JP4295791B2 (ja) 2009-07-15
US20040148463A1 (en) 2004-07-29
US7191289B2 (en) 2007-03-13
EP1443403A2 (en) 2004-08-04
JP2007184009A (ja) 2007-07-19
JP2004234663A (ja) 2004-08-19
KR100906262B1 (ko) 2009-07-06
US7089365B2 (en) 2006-08-08
EP1993039A2 (en) 2008-11-19
EP1993039A3 (en) 2013-04-03
KR20090006034A (ko) 2009-01-14
JP2008027461A (ja) 2008-02-07
KR100932803B1 (ko) 2009-12-21
JP4195397B2 (ja) 2008-12-10
US7020746B2 (en) 2006-03-28

Similar Documents

Publication Publication Date Title
CN1517885B (zh) 关于利用原子性更新的中央高速缓冲存储器的方法和系统
CN1811757B (zh) 用于定位万维网页以及计算机网络文件的系统和方法
US7107323B2 (en) System and method of file distribution for a computer system in which partial files are arranged according to various allocation rules
KR930008684B1 (ko) 데이타 베이스 백업카피 발생 방법
CN102667772B (zh) 文件级分级存储管理系统、方法和设备
US7177865B2 (en) Data synchronization method and system
CN1773509B (zh) 计算机文件系统
CN1848849B (zh) 复制目录修改的方法和装置
CA2302303A1 (en) System for accessing database tables mapped into memory for high performance
KR20110128846A (ko) 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델
CN101331488A (zh) 基于盘的高速缓存
CN109597707A (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
KR100858157B1 (ko) 맵 업데이트 시스템 및 방법, 방법 프로그램을 기록한저장매체, 사용자 단말기
CN100393042C (zh) 一般化管理网络处理器用表的系统和方法
CN115803725A (zh) 存档仅限加速器的数据库表
JP2007501476A (ja) オブジェクトおよび従属オブジェクトをドロップしないデータベースシステム
US11113339B2 (en) System and method for federated content management using a federated library and federated metadata propagation
US11580128B2 (en) Preventing DBMS deadlock by eliminating shared locking
JP2010160577A (ja) 検索装置及びその制御方法、並びにコンピュータプログラム
CN108256019A (zh) 数据库主键生成方法、装置、设备及其存储介质
US6625614B1 (en) Implementation for efficient access of extended attribute data
JP4060890B2 (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
JP3769775B2 (ja) 分散リンク情報維持方法
EP0394172A2 (en) Method of performing file services given partial file names
CN116821058B (zh) 元数据访问方法、装置、设备及存储介质

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150423

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150423

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CX01 Expiry of patent term

Granted publication date: 20130306

CX01 Expiry of patent term