CN101185068A - 维持多个独立进程的高速缓存的一致性的方法和系统 - Google Patents
维持多个独立进程的高速缓存的一致性的方法和系统 Download PDFInfo
- Publication number
- CN101185068A CN101185068A CNA2006800164306A CN200680016430A CN101185068A CN 101185068 A CN101185068 A CN 101185068A CN A2006800164306 A CNA2006800164306 A CN A2006800164306A CN 200680016430 A CN200680016430 A CN 200680016430A CN 101185068 A CN101185068 A CN 101185068A
- Authority
- CN
- China
- Prior art keywords
- data
- input
- search
- cache memory
- processes
- 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/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明涉及保持能由多个独立进程访问的高速缓存存储器的一致性的方法和系统。进程能共享公共数据。进程执行同时数据搜索操作,其后可选地提供数据给进程、移除数据或插入新数据。一旦由独立进程发起,就全面执行搜索、移除和插入操作。当操作公共数据时,搜索、移除和插入操作彼此排斥地执行。移除和插入操作均完全可逆。在此情况下,提供、移除或插入数据的操作有受限的执行持续时间以防止锁定。具体地,若到达最大浏览时间,则可能中断插入操作,插入操作包括:若要浏览整个分区以进行选择,则当高速缓存存储器的分区满时释放输入。在此情况下,释放最适当的所浏览的输入。穷尽地浏览分区的输入是通过存储每一释放之后查阅的最后地址来实现的。
Description
技术领域
本发明通常涉及软件工程,更具体地说,描述了一种方法和系统,所述方法和系统在需要数据的持久可用性和确保对其的短期访问时间的信息技术环境中用于长期维持可由独立进程访问的高速缓存存储器中的数据一致性。
背景技术
虽然近年来对计算机及其中央处理单元(CPU,即英语技术文献中的中央处理单元)的功率的计算实际上已经在增长,但日益增长的对软件应用的需求通过越来越多地使用这些中央单元而同时利用处理功率中的这种增长。特别是在当它们必须访问在中央存储器中可用的数据时的情况下,所述中央存储器必须存储大量信息,例如包含用于空中交通的全球出价的数据库。必须能够从无数旅行社和销售点连续查阅这些数据,并且基于24-7在全球通过航班来更新它们。
无论配置如何,用于获得这种结果的计算机网络和IT方案、期望的性能、特别是对所找寻的信息的短的访问时间总是涉及存储器等级体系的使用。事实上,即使存储器可能不包含可能被找寻的所有信息,但所找寻的信息也必须被馈送给所述存储器,中央单元可以充分快速地访问所述存储器。这种类型的存储器被称为高速缓存存储器或大容量存储器。高速缓存存储器用于存储系统在给定时间最频繁访问的数据,因此使得中央单元和计算机处理器的等待情况减少。
在中央单元中,必须被同时执行的不同的独立进程之间必须能够共享必要受限大小的高速缓存存储器。此外,当它们对公共数据操作时,多个独立进程应该优选地能够进行该操作,而不必复制这些数据。
因此,可由多个进程访问的高速缓存存储器的管理是一种复杂的事务。具体地说,必须保持对一些进程共同的数据的一致性。如果所述一些进程中的一个必须修改所述数据,则极其重要的是,另一进程能够在数据已经被完全修改和更新之前使用它们。虽然已知的是,可以通过在多个进程之间交换消息来实现这种处理,但这是一种由于交换消息所需的时间而导致的对所述数据的访问速度造成严重影响的方法。
当前所使用的另一方法包括使得进程能够专有地并且临时地获得对访问共享数据的权限,因此阻塞其它进程的访问,所述其它进程必须等待。然而,一旦进程已经获得这样的对访问的专有权限,它自身还可能必须等待另一进程释放它还必须使用的数据。因此,明显的是,存在两个或更多进程被交互锁定的情况,一个进程必须等待其它进程完成,反之亦然。这些进程必须执行的任务不进行下去,并存在阻塞。
当然,能够具有与进程同样多的高速缓存存储器。因此,在高速缓存存储器中存在公共数据的副本,这是将要大力避免的,以确保对可用的存储器空间的更好的使用,并再次提出了存储器中的副本的一致性的问题。
此外,高速缓存存储器不仅包含由进程自身使用的工作数据,而且还必须对其进行严格的组织。事实上,高速缓存存储器总是对于较慢的低成本但非常大的存储器中的所有数据的部分的、高动态的视图,所述非常大的存储器位于典型具有磁盘组的背板上,能够存储太字节(1012字节)的数据。在工作数据被传送到共享高速缓存存储器之后,它们全部潜在地可在给定时间由多个进程来访问。因此,高速缓存存储器中的所组织的数据必须能够在高速缓存存储器中实际在给定时间出现的工作数据以及在背板存储器中它们的对应物之间的一致性。然而,如果在进程正常终止之前中断进程(例如仅因为操作者过早地终止请求)或如果由于软件的较差的编程而导致不正确地执行进程,则因此可以出现高速缓存存储器的有组织的数据不完全被更新或被不正确地更新。包含所述有组织的数据的控制表其后部分被破坏。虽然应用软件通常被设计为容忍崩溃和错误以防止部分破坏产生重大后果,但它们在必须长期昼夜不停地操作的系统中的累积会通过减少实际可以使用的存储器大小,特别在长期范围内使得高速缓存存储器的性能和效率恶化,这使得可以由必须在给定时间被执行的所有进程共享的充足的工作数据不再能够响应于从必须对大型数据库(例如包含关于世界空中交通或对大型宾馆链的预订的信息的数据库)进行访问的计算机得到的多个请求。
因此,可以被有效使用的高速缓存存储器的大小是操作的关键参数。必需对其进行优化。具体地说,即使高速缓存存储器已经是满的,进程也必须总是能够提供新的工作数据以响应于新的客户机请求。这仅可以通过释放空间并且因此从存储器移除不太可能再被使用的工作数据或过期或太陈旧的数据来实现。该方案存在一系列缺点,如果基本任务不再正常地执行,则因为以过期的数据来填充高速缓存存储器,所以高速缓存存储器很快地变得不可用。此外,基本任务通常不能释放由尚未完全执行或正常执行的进程所破坏的数据。
然而,在必须昼夜不停地操作并且因此从不重新启动的系统中,其可靠性必须基于典型地对上述基本任务的单个元素的正确操作,然而,这是常有的情况。
在提交到美国专利局或USPTO(美国专利商标局)的、2003年10月16日公开的、题为“Transaction-aware caching for access controlmetadata”的第2003/0195866号专利申请中已经提出了想要弥补上述的现有技术的一些弱点的机制,然而,该专利申请没有尝试描述用于在已经满的高速缓存中释放空间的任何具体机制。因此,在从不重启的系统中,在特定使用时间之后,这是经常需要的操作,其中,连续的请求趋向于在高速缓存存储器中不断地累积数据。
因此,本发明的目的通常在于弥补现有技术的弱点,本发明通过防止进程的任何锁定来改进高速缓存存储器的管理,从而特别在存储器必须容纳新的数据时释放空间。
发明内容
本发明描述了一种用于维持可由独立进程访问的高速缓存存储器的一致性的机制。多个进程可以共享公共数据。多个进程执行同时数据搜索操作,之后可选地使数据可用于所述进程,移除所述数据或插入新数据。一旦已经由独立进程发起搜索、移除和插入操作,就全面地执行这些操作。当这些操作必须对公共数据进行操作时,相互排斥地执行这些操作。移除或插入操作均是完全可逆的。在上下文中,本发明规定:用于使数据可用、移除数据或插入数据的操作具有有限或受限的执行持续时间以防止任意锁定。具体地说,如果需要浏览整个分区以进行选择,则插入操作包括当高速缓存存储器的分区是满的时释放输入的阶段,然而,如果到达最大浏览时间,则所述插入操作可以被中断。在此情况下,在已经浏览的输入中释放最合适的输入。穷尽地(exhaustively)浏览分区的输入,这是通过对每次释放之后分区的最新查阅的地址进行存储实现的。
附图说明
本发明的目的、目标以及特点和优点将从由以下附图所示的优选实施例的详细描述中变得更加清楚,其中:
图1描述实现本发明的环境。
图2示出由独立进程对CLE(高速缓存逻辑实体)的共享。
图3描述独立进程访问几个CLE的情况。
图4描述CLE的数据表的结构。
图5描述与数据表关联的控制表。
图6给出控制表的分区的内容的示例。
图7描述分区表的结构。
图8描述散列表的结构和寻址。
图9描述搜索CLE中的数据的方法。
图10描述用于使数据在CLE中可用、移除、替换和插入数据的方法。
图11描述用于释放完全数据表中的输入的方法。
图12描述执行用于维持所述表的一致性的进程的各阶段。
具体实施方式
如图1中示意性所示,本发明涉及一种系统(100),其包括一个或多个计算机中央单元(CU)(110),其共享快速访问存储装置(120)。然而,在大小受限的情况下,共享存储器(SM)自身可以访问一个或多个大容量存储器(MM),所述MM位于背板中,并且通常包括能够存储大量数据的磁盘组(130)。具体地说,例如是必须由全世界的旅行社查阅并且收集关于世界空中交通或国际宾馆链的预约状态的信息的数据库。中央单元在操作系统的控制下进行操作。例如,因为UNIX不仅使很多用户(140)能够被同时处理,而且还能够生成同时独立操作的大量进程任务,所以UNIX是频繁使用的操作系统。在包括控制机制(125)的共享系统中,直接地或通过在所述操作系统中集成的附加软件层,操作系统因此能够定义一个或多个高速缓存逻辑实体(CLE)。如已经在现有技术的段落中所讨论的那样,这些高速缓存存储器(150)的目的在于:能够将由中央单元(110)发起的独立进程在给定时间必须能够对其操作的数据从大容量存储器(130)提供给快速访问存储器,即共享存储器(120)。
图2更详细地描述本发明的新的方面,其使得独立进程(200)(在该示例中标号1至5)能够在仅这些进程中的一个进程必须找到大容量存储器(230)中的数据并执行格式化和计算(220)之后共享公共数据实体(210),在该示例中,所述一个进程在该示例中由数字3来表示,其中,所述格式化和计算是对可能必须在给定时间操作这些数据的所有进程进行高效使用所需要的。在该示例中,由于仅通过由数字3所表示的进程来执行格式化计算,因此,这个过程实际上通过将共享存储器的效率增加到相同程度并大量解除中央单元来减少包含在共享存储器中的高速缓存存储器中的存储需求。
图3期望示出在相同CLE的进程中是否可以有利地共享数据。在一些CLE共存(300)于共享存储器中的情况下,本发明还确保进程(310)不必对所有CLE进行访问。因此,在这个特定示例中,进程1访问CLE A和C,而进程2访问CLE B和C。因此,仅出现在CLEC中的数据对于进程1和2是公共的,可以将该情况看作是有用的,例如用于防止进程2改变仅授权进程1修改的数据,即其后将优选地被包含在CLE A中的数据。
下面的附图描述了由CLE使用以在给定时间找到并更新被包含在高速缓存存储器中的数据的不同的表。图4描述数据表的组织。如名称所暗示的那样,数据表(44)主要用于存储用户数据以及以下描述的与其关联的唯一代码或识别代码以及参数。可以在系统的配置期间设置可出现在CLE中的数据表的最大数量。例如,可以授权创建一百个数据表。此外,这些表中的每一个可以包括可变数量的输入(410),在该示例中是四个,从而这些表可以更好地适用于它们必须在本发明的特定应用中要容纳的用户数据,可以在配置时间指定所述输入自身的大小。每一数据表输入的格式包括以下字段:
-代码大小(420),
-用户数据大小(430),
-识别数据的唯一代码(440)。典型地,该代码是几十个字节的字段,包括足够的信息以识别关联数据的类型,
-用户数据自身(450)。例如,对于给定目的地和给定时段,其可以是航空公司收取的价格。
图5描述控制表,所述控制表用于跟踪在CLE中在给定时间出现的用户数据。在控制表(500)和数据表(510,520)的输入之间存在一一对应。因此,控制表中的输入的数量与在配置时间指定的数据表的最大数目乘以这些表中的每一个中的输入的数量是相同的。在图5中的简单示例中,仅示出两个数据表,第一数据表(510)包括四个输入,第二数据表(520)包括五个输入,因此,关联的控制表(500)包括9个激活的输入。
应注意,这些表中的输入0总是未使用的,从而每个字段0具有特定意义:指示缺少对输入的参考。
控制表中的每一输入包括以下信息:
-与数据关联的散列值。
-插入数据的日期。
-数据到期的日期。
-被存储在数据表的对应的输入的数据的大小。
-在控制表和数据表的输入(空闲或已使用)的链表中的下一输入。
-如果不存在其它链式输入,则前述链式输入或0值。
-参照图8所描述的散列表的对应的输入,或在空闲输入的链表的情况下的值0。
-与控制表的所述输入关联的数据表的数量。
-数据表中的对应输入。
-使用计量(用于确定最近使用了哪些输入)。
-各种参数,具体地说,包括二进制指示符,用于指示对应的输入是空闲的并且可以被使用。
图6给出与图5中的数据表1对应的控制表的分区可以包含的内容的示例。为了清楚,上述列表中的参数并不都在图6中的表中出现。
在该示例中,输入2和4空闲(600)。它们是双链式的,从而可以在两个方向浏览列表,并且它们可以被用于存储用户数据。因此,空闲输入2参考网络空闲输入4(610)。后者参考前述空闲输入2(620)。
所使用的输入1和3在此属于相同的链表,所述链表用于解决由于不同代码的相同的散列化而导致的冲突。它们参考散列表(630)的特定输入,即输入123。以下在图8中详细讨论散列表和标识代码的散列化。类似于空闲输入的列表,用于解决冲突的列表也是双链式的:输入1参考下一个所使用的输入(640)3,输入3其自身参考列表中的前面的输入1(650)。
如上所述,“下一输入”和“先前输入”列中的零值不参考任何输入,并作为链表的开始或结束。
图7描述分区表(700)。如其名称所暗示的那样,分区表用于存储用于确定如何对控制表和数据表进行组织和分区所需的信息。因此,存在与数据表同样多的分区表中的输入(710),即,在前面附图中所示的示例中是两个。参考对应的数据表的分区表中的每一输入(第一输入参考1号表,等等)包括以下参数,然而,为了清楚,在图7中的分区表的示图中将不完全出现所述参数:
-控制表中用于对应分区的第一输入(720)的索引
-用于最后输入的索引(730)
-该分区中的输入的数量
-该分区中的输入的大小
-空闲输入的数量
-空闲输入的链表中的第一输入(740)
-分区锁定指示符
-控制表中用于开始对可能被移除的输入的下一搜索的索引。
图8描述散列表(800),所述散列表是用于CLE中的任意搜索的开始点。
散列表中的开始点(810)是由于对数据标识代码散列化而产生的值,所述数据标识代码是与数据关联的唯一代码,在前面附图中对其进行了描述。由于已经提及的原因,输入0必须保持未被使用,散列函数必须返回在1和散列表寻址上限之间的值。可以在系统配置期间设置散列表。本发明不假设使用特定散列函数。为了尝试获得最小冲突,任何散列函数的最终目标可能取决于代码的结构,将可能选择多个散列函数和方法中的一个或其它,所述散列函数和方法已经在关于该主题的大量技术文献中被提出。然而,必须选择或采用散列函数,从而0值总是被排除。
在图8所示的本发明的优选实施例中,唯一标识代码(840)(典型地需要50至100字节)经历第一散列化(850),以获得64比特字段中的值,例如,以下被称为H[int]。然而,由于散列表实际上不能包括264个输入,因此执行H[int]的第二散列化(860),以获得合理大小的表(80)。例如,你可能期望将64比特的字段减少到18比特的字段,即大约256,000个输入(218)。进行双重散列化的优点在于,能够获得合理大小的散列表,同时允许可以由处理器快速处理的比特字段(64比特)中的比较,以移除对散列表中的冲突事件的疑问。事实上,例如,即使在额外减少到18比特之后冲突将会更多,对于第一散列函数的仔细选择也允许最接近于零的冲突概率。因此将无需多于一次地执行对包括50至100字节的代码的完全比较,如上结合图9所讨论的那样。
再次参考图6,因此,包括上述示例中的64比特的中间散列值H[int]出现在控制表(660)中,并将主要用于对所述比较进行加速。
与数据H[CLEF]关联的代码的最终散列值(810)用于查阅散列表。对应的输入包含以下信息:
-输入的锁定指示符(V),用于仅使得一次一个进程能够修改链表(820),以散列表中的所述输入开始。稍后在说明书中讨论本发明的这个方面。
-在控制表中链表的第一输入,用于解决由于代码散列化而导致的可能的冲突。当然,如果数据代码散列化没有对散列表的特定输入施加冲突,则对应的链表将被减少到单个元素。
散列表(830)中的零值不参考控制表中的任意输入。没有数据代码给出用于该输入的散列值。
图9描述访问(900)CLE中的数据的方法。对CLE中的数据的搜索开始于与所找寻的数据关联的代码的散列化(910)。所获得的值用于对先前描述的散列表进行寻址(920)。如果对应的输入是零,则可以立即宣告所述搜索不成功(932)。该结果被立即告知(940)给搜索数据的进程,以通知该进程所述数据没有出现在所询问的CLE中。
如果被寻址的输入不是零(934),则必须在散列表所参考的输入处读取CLE的控制表(950)。该输入包含可能包括所找寻的信息的输入的链表的第一元素,可能是仅有的元素。
然而,如果由另一进程锁定对应的输入(945),则所述对控制表的查阅将不立即产生。其后,将需要等待所述另一进程来对输入解锁以继续。如果进行的进程可能涉及表的修改(移除或插入),则进程中的进程依次锁定散列表中的输入(947)。
执行散列代码值的第一比较(960),即将所找寻的代码散列化的值与从控制表中提取的值进行比较。如图8所讨论的那样,在本发明的优选实施例中,对中间散列值H[int]进行所述比较。
如果所述散列值不同(974),则如果链表包含多于一个的元素,则所述搜索必须通过浏览所述链表而继续。如果仅有一个元素,或如果已经到达列表(982)中的最后元素,则必须宣告所述搜索不成功(940)。
然而,如果所述散列值相同(972),则可能已经找到所找寻的代码。然而,无论那个散列函数能够返回两个相同的散列值,从不同的代码开始,都必须对该进程进行验证。为了消除任意疑问,其后必须对代码进行比较(990)。在本发明的优选实施例中,首先对所找寻的数据的大小与存储在数据表中(在与控制表的输入对应的输入处)的数据大小进行比较,以加速所述比较。如果代码具有不同大小,则它们不会相同,如果链表包含多于一个的元素,则搜索必须如前面那样通过浏览所述链表而继续(994)。如果链表不包含多于一个的元素,则必须宣告所述搜索不成功(940)。
如果代码大小相同,则最终执行这些代码的完全比较。如果代码高效地相同(992),则搜索成功。所找寻的数据出现在数据表中。如果代码不同,则所述搜索必须如前面那样通过浏览链表而继续。
应注意,当实际上已经找到数据时,在多数情况下,将需要代码的单个完全比较(从50到100字节)。必须执行多于一个的代码完全比较的概率取决于用于对冲突进行最小化的第一散列函数的有效性,如图8所描述的那样。如已经讨论的那样,该概率实际上是零。
图10描述了在CLE中的数据搜索之后的不同动作。
在所有情况下,如果搜索不成功,则将该结果通知给发起搜索的进程(1000)。
如果搜索成功,并且为了查阅数据而已经由进程发起所述搜索,则从数据表中提取数据,并将所述数据提供给发起所述搜索的进程(1010)。
如果搜索成功,并且为了移除(1020)CLE中对应的数据而已经由进程发起所述搜索,则必须修改控制表(1025)。必须从用于分区的输入的链表中移除该分区的对应的输入,并将其添加到空闲输入的列表。通过重建而从所使用的链表中明显地移除输入,根据需要,链表修改“下一个”和“前一个”输入字段,如图6所示。
如果在CLE中插入新数据的进程(1030)主要取决于代码是否已经出现在其中,则所述插入总是需要首先计算能够插入该数据所需的大小,以确定可以使用来自数据表的哪些空闲输入。
如果搜索不成功,则所述插入其后将取决于获知是否存在保持为容纳新的数据的足够大小的至少一个空闲空间。如果情况如此(1042),则选择空闲输入(1060),并执行新数据的插入(1070)。该进程包括修改和创建控制表中的链表。
如果不存在足够大小的空闲空间(1044),则需要释放CLE中的空间(1050),以进行所述插入(1070)。图11中更详细地描述释放空间的方法。
如果搜索成功,则所找寻的代码已经出现,并且需要修改被包含在数据表中的数据。其后,该进程需要获知是否存在充足的空间来存储所述输入中的数据。如果答案为“是”(1046),则可以立即进行所述插入(1070)。然而,如果大小不适合(1048),则如前面那样将需要释放足够大小的输入(1050)。被看作不足以被再次使用的大小的输入还在先前已经被释放。该阶段等同于前面所描述的包括从CLE中移除数据的阶段(1020)。
最终,关于图10,应注意,在涉及表的修改的操作(即移除操作(1025)或插入操作(1070))的结束,因为操作已经结束,所以必须对散列表的对应的输入进行解锁。
图11更具体地描述图10的阶段(1050),该阶段包括当不存在用于容纳将被插入的数据的空闲空间时搜索将被释放的最佳输入。使用控制表(1100)的分区的示例来描述该方法,所述控制表包括全部被使用的8个充足大小的输入以容纳新的数据。为了清楚,仅陈述用于理解插入机制所需的控制表中的字段。
在该示例中,参考1号数据表(1110)和输入0-7(1120)的分区包括3个链表(1130),分别以地址1、4和5以及3、3和2输入开始。已经描述了被散列表寻址的链表自身的开始。
为了释放输入,插入算法将使用以下的在控制表中出现的信息集合中的一个或另一个或两者。
-与输入关联的数据的有效性将期满的时间(小时/日期)(1140)。必须对该时间和当前时间进行比较,以通过浏览所有分区输入确定多个输入中的一个是否已经期满并且是否可以对其进行移除。实际上,如所示的那样,该时间采用当数据有效性时间期满时简单计数器必须到达的值的形式。
-输入的有效使用(1150),使其能够被确定哪个输入尚未被使用达到最长时间(这些主题在英文技术文献中是:“least recentlyused”或“LRU”,)。在图11的示例中,“use”字段的最大值指示仍旧保留未被使用达到最长时间的输入,即控制表中的地址7的输入(1155)。因此,该输入有可能被替换。
取决于本发明的使用类型,可以不同地设置用于选择移除一个输入而不是另一输入的准则。这些参数的正常使用包括:首先,确定是否存在数据已经期满的输入。存在满足该准则的至少一个输入,则例如当浏览所有输入(1160)时,选择所发现的第一输入。如果没有输入具有期满数据,则能够移除保留未被使用达到最长时间的输入(1155)。然而,为了避免太快地移除数据,必须建立阈值以考虑这个最后的参数。其后可能发生的是:在初始时段内不满足用于移除输入的准则,在此情况下,算法必须提供最少约束后退策略,例如使得期满时间尽可能接近于当前时间的输入能够被选择的策略。
应注意,如果本发明没有假定使用这些参数来释放输入的特定方法,则将暗含地假设将总是释放输入以在高速缓存中容纳新数据。
图11值的示例假定由于当前时间具有值16,因此,因为用于控制表的输入2的数据在时间12期满,所以可以移除该输入,当前时间超过期满时间(1145)。由于输入2形成链表的一部分,因此列表必须被修改(1134),并且必须插入(1132)仅包括一个元素的新的输入。因此,新的分区状态如下部的表(11 05)所示。
在该示例中,暗含地假设新的输入还与散列表中的新的输入对应,因此不存在冲突。当然,应理解,新的输入可以与已经被使用的散列表对应。在此情况下,应将其添加到对应的链表,而不是形成仅包括用于该时间的一个元素的附加列表。链表的处理实际上对于本领域技术人员是已知的,因此下面不对其进行描述。
如已经讨论的那样,在描述的进程中,进程是空闲的,以同时使用CLE。仅有两个限制用于防止进程使用另一进程不完全修改的数据。
-如图8中已经示出的那样,散列表中的每一输入包括锁定指示符,用于防止两个进程尝试同时修改CLE的输入。如图9中的阶段(945)中更详细地示出的那样,如果已经从该输入执行了必须修改数据表的进程,则阻塞访问。然而,可以存在与散列表中的不同输入同样多的对CLE的同时访问。仅对于涉及修改表的操作,来自相同散列值的多个访问是不可能的,这是因为它们将导致必须对相同链表操作。
-还存在图7中描述的分区表的输入中的锁定指示符。该锁定的目的在于保护对相同分区中操作的独立进程将修改的空闲输入的链表的更新。具体地当释放空间时(即在图10中描述的阶段(1045)、(1050)或(1025))锁定分区表的输入,以及在与散列表相同的条件下解锁。
因此在修改过程中,在另一个进程可以重新使用输入之前,总是穷尽地执行由涉及修改数据表的进程所发起的操作。必须对控制表的共同输入操作的进程在它们的执行期间彼此相互排斥。
如图11所示,还应注意,插入算法假定在完全控制表中可以必须释放输入,其后必须浏览该表以选择最合适的输入。为了防止进程锁定输入达到太长时间,可以例如通过指定最大数量的控制表的连续读取来限制本发明中的该浏览进程。这是由于图7中所描述的分区表还包括用于指定每当该机制被激励时必须恢复对输入的搜索的点的参数。这是为了防止控制表总是从相同点(例如第一输入)被浏览。最后,该操作使得所有输入被浏览,并且允许替换所有输入中的每一个。
由于进程是具有有限持续时间的,或是受限的,直到考虑请求通过浏览控制表来释放输入,因此不可能产生持久的锁定。
图12解释在控制CLE的表的执行进程中必须正常改变(1200)控制CLE的表的进程的情况。
这主要是图10中描述的插入新数据的操作的情况,其需要创建或修改链表。
必须修改CLE的表并且没有完成的进程例如通过发布将不再被正常浏览的、用于锁定数据表的关联输入的链表,而不会使得表停留在不一致的状态。本发明规定:潜在危险的进程在它们被执行之前必须保存表的上下文(1210),即,如果它们被不完全地执行或如果在执行进程中检测到异常,则它们必须存储能够恢复表是先前状态所需的所有信息。
每一进程具有唯一标识符(ID),并使用专用工作存储器区域,在所述专用工作存储器区域中,该信息在其整个执行进程中被存储。例如,如果在散列表中创建锁定,则连同对应的散列表的输入的参考一起注册进程的标识符。相似地,还注册将由进程修改的链表的链接。如果进程遇到问题(1232),则在恢复先前状态时调用与进程关联的函数(1240)。在上述示例中,释放对散列表的锁定,并恢复链表的链接。在其执行期间(1220),每一进程不仅建立还用于测量高速缓存存储器的效率的统计,而且还建立用于确定是否已经正常完成进程的完成状态(1234)。
表的上下文的保存和恢复以及进程的完成状态的建立不需要对于本发明特殊的机制。可以使用用于实现这样的机制的对软件工程专家公知的所有方法,因此,不进一步对其进行描述。
Claims (7)
1.一种用于保持能由多个独立进程(20)访问的至少一个高速缓存存储器(150)的一致性的方法,所述多个独立进程(20)能够共享公共数据(210),所述多个进程执行对于所述数据的同时搜索操作(900),其后可选地提供(1010)所述数据、移除(1020)所述数据或插入(1030)所述数据,一旦所述搜索、移除和插入操作由所述多个独立进程发起,就穷尽地执行所述搜索、移除和插入操作,当对所述公共数据进行操作时,所述搜索、移除和插入操作彼此相互排斥,以及所述搜索、移除和插入操作均完全可逆,在所述方法中,所述搜索操作具有有限或受限的执行持续时间,所述搜索操作之后可选地进行所述用于提供所述数据、移除所述数据或插入所述数据的操作中的一个。
2.如权利要求1所述的方法,其中,所述插入操作包括以下阶段:如果控制表的分区是满的,则释放(1050)所述控制表的所述分区中的输入,所述方法包括:浏览(1160)所述分区,以进行选择,如果到达最大浏览时间,则能够中断所述浏览;从所浏览的输入中选择最适合的输入(1145);释放所述输入(1050)。
3.如权利要求2所述的方法,其中,所述选择阶段包括:无条件地选择充足大小的所浏览的输入中的最后输入,以容纳新的数据。
4.如权利要求2所述的方法,其中,所述浏览阶段(1160)的特征在于:穷尽地浏览所述分区的所有输入。
5.如权利要求4所述的方法,其中,通过对每次释放之后查阅的最后地址进行存储(700)来获得所述浏览的穷尽性。
6.一种用于使多个中央处理单元(110)能用于处理存储在大容量存储器(130)中的数据的系统,其具体是一种高速缓存存储器(15),所述系统包括用于实现前述权利要求中的任意一项中所描述的方法的装置。
7.一种可以由计算机读取的介质,包含可由所述计算机执行的程序的指令,所述程序实现如权利要求1至5中的任何一个所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66191305P | 2005-03-16 | 2005-03-16 | |
EP05102054A EP1703404A1 (fr) | 2005-03-16 | 2005-03-16 | Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants |
EP05102054.3 | 2005-03-16 | ||
US60/661,913 | 2005-03-16 | ||
PCT/EP2006/060567 WO2006097424A1 (fr) | 2005-03-16 | 2006-03-08 | Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101185068A true CN101185068A (zh) | 2008-05-21 |
CN100594483C CN100594483C (zh) | 2010-03-17 |
Family
ID=34938990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680016430A Active CN100594483C (zh) | 2005-03-16 | 2006-03-08 | 维持多个独立进程的高速缓存的一致性的方法和系统 |
Country Status (12)
Country | Link |
---|---|
US (1) | US7971000B2 (zh) |
EP (2) | EP1703404A1 (zh) |
JP (1) | JP4999833B2 (zh) |
KR (1) | KR101268437B1 (zh) |
CN (1) | CN100594483C (zh) |
AT (1) | ATE403187T1 (zh) |
AU (1) | AU2006224669B2 (zh) |
BR (1) | BRPI0607628A2 (zh) |
CA (1) | CA2596290C (zh) |
DE (1) | DE602006002032D1 (zh) |
ES (1) | ES2312119T3 (zh) |
WO (1) | WO2006097424A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136080A (zh) * | 2013-03-12 | 2013-06-05 | 青岛中星微电子有限公司 | 一种缓存锁定功能的测试方法和装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489814C (zh) * | 2007-08-01 | 2009-05-20 | 杭州华三通信技术有限公司 | 一种共享缓存系统及实现方法 |
US9436502B2 (en) * | 2010-12-10 | 2016-09-06 | Microsoft Technology Licensing, Llc | Eventually consistent storage and transactions in cloud based environment |
US10049078B1 (en) * | 2015-06-25 | 2018-08-14 | Amazon Technologies, Inc. | Accessing a memory location using a two-stage hash scheme |
JP6674092B2 (ja) * | 2016-02-10 | 2020-04-01 | 富士通株式会社 | データ管理プログラム、データ管理装置、及びデータ管理方法 |
CN106020999B (zh) * | 2016-05-31 | 2017-10-17 | 广东欧珀移动通信有限公司 | 一种操作系统内部的通信方法及设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103794B2 (en) * | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
US6044430A (en) * | 1997-12-17 | 2000-03-28 | Advanced Micro Devices Inc. | Real time interrupt handling for superscalar processors |
US6275832B1 (en) * | 1998-09-21 | 2001-08-14 | International Business Machines Corporation | Providing transaction undo without logging |
US6591347B2 (en) * | 1998-10-09 | 2003-07-08 | National Semiconductor Corporation | Dynamic replacement technique in a shared cache |
US7203709B2 (en) * | 2000-05-12 | 2007-04-10 | Oracle International Corporation | Transaction-aware caching for access control metadata |
US6842832B1 (en) * | 2000-08-25 | 2005-01-11 | International Business Machines Corporation | Reclaim space reserve for a compressed memory system |
KR100832222B1 (ko) * | 2001-06-09 | 2008-05-23 | 자프 아게 | 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법 |
US7020746B2 (en) * | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US7590803B2 (en) * | 2004-09-23 | 2009-09-15 | Sap Ag | Cache eviction |
-
2005
- 2005-03-16 EP EP05102054A patent/EP1703404A1/fr not_active Withdrawn
-
2006
- 2006-03-08 JP JP2008501275A patent/JP4999833B2/ja not_active Expired - Fee Related
- 2006-03-08 CA CA2596290A patent/CA2596290C/fr active Active
- 2006-03-08 DE DE602006002032T patent/DE602006002032D1/de active Active
- 2006-03-08 CN CN200680016430A patent/CN100594483C/zh active Active
- 2006-03-08 EP EP06708695A patent/EP1866770B1/fr active Active
- 2006-03-08 AU AU2006224669A patent/AU2006224669B2/en active Active
- 2006-03-08 ES ES06708695T patent/ES2312119T3/es active Active
- 2006-03-08 WO PCT/EP2006/060567 patent/WO2006097424A1/fr active IP Right Grant
- 2006-03-08 AT AT06708695T patent/ATE403187T1/de not_active IP Right Cessation
- 2006-03-08 BR BRPI0607628-9A patent/BRPI0607628A2/pt active Search and Examination
- 2006-03-08 US US11/886,514 patent/US7971000B2/en active Active
- 2006-03-08 KR KR1020077023763A patent/KR101268437B1/ko active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136080A (zh) * | 2013-03-12 | 2013-06-05 | 青岛中星微电子有限公司 | 一种缓存锁定功能的测试方法和装置 |
CN103136080B (zh) * | 2013-03-12 | 2016-07-13 | 青岛中星微电子有限公司 | 一种缓存锁定功能的测试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US7971000B2 (en) | 2011-06-28 |
EP1866770B1 (fr) | 2008-07-30 |
AU2006224669A1 (en) | 2006-09-21 |
ES2312119T3 (es) | 2009-02-16 |
ATE403187T1 (de) | 2008-08-15 |
EP1703404A1 (fr) | 2006-09-20 |
WO2006097424A1 (fr) | 2006-09-21 |
CN100594483C (zh) | 2010-03-17 |
JP2008533600A (ja) | 2008-08-21 |
CA2596290A1 (fr) | 2006-09-21 |
EP1866770A1 (fr) | 2007-12-19 |
KR101268437B1 (ko) | 2013-06-04 |
BRPI0607628A2 (pt) | 2010-04-20 |
US20080183970A1 (en) | 2008-07-31 |
AU2006224669B2 (en) | 2011-09-08 |
JP4999833B2 (ja) | 2012-08-15 |
DE602006002032D1 (de) | 2008-09-11 |
CA2596290C (fr) | 2014-08-19 |
KR20080023285A (ko) | 2008-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5414840A (en) | Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory | |
CN100594483C (zh) | 维持多个独立进程的高速缓存的一致性的方法和系统 | |
US8694472B2 (en) | System and method for rebuilding indices for partitioned databases | |
CN100485676C (zh) | 文件系统串行化重新初始化装置、方法和系统 | |
US9141480B2 (en) | Handling failed transaction peers in a distributed hash table | |
US10496618B2 (en) | Managing data replication in a data grid | |
CN104123240A (zh) | 用于事务缓存的系统和方法 | |
CN102024015A (zh) | 用于批量删除数据库系统的数据记录的方法 | |
CN102498476A (zh) | 在数据库服务器和存储系统之间高速缓存数据 | |
US6282700B1 (en) | Mechanism for maintaining revisions of objects in flash memory | |
CN112947856B (zh) | 一种内存数据的管理方法、装置、计算机设备及存储介质 | |
CA2422161C (en) | Decoupled object identification for object switching in database systems | |
US20220035786A1 (en) | Distributed database management system with dynamically split b-tree indexes | |
US6754842B2 (en) | Facilitating a restart operation within a data processing system | |
US6094694A (en) | System for storing new messages in both full-length and abbreviated versions of message expiration data, and eliminating old, expired messages when a message is retrieved | |
US20230229655A1 (en) | Global uniqueness checking in distributed databases | |
CN110796401A (zh) | 库存扣减方法、系统和服务器 | |
JP2004527820A (ja) | コンピュータ予約システムにおけるデータの処理及びアクセス方法、並びにその方法を実施するためのシステム | |
EP3467671B1 (en) | Cache memory structure and method | |
US20110320507A1 (en) | System and Methods for Digest-Based Storage | |
CN113609091B (zh) | 日志管理方法、装置、设备及存储介质 | |
KR100489044B1 (ko) | 복수 패키지 관리 방법 | |
CN117112610A (zh) | 一种基于跳表的分片共享内存存储系统及其方法 | |
CN115952029A (zh) | 一种数据处理方法、装置、设备和计算机可读存储介质 | |
Chong et al. | Rapid Recovery of Very Large Memory Resident Data Objects |
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 |