CN101739298B - 共享缓存管理方法和系统 - Google Patents

共享缓存管理方法和系统 Download PDF

Info

Publication number
CN101739298B
CN101739298B CN2008101816083A CN200810181608A CN101739298B CN 101739298 B CN101739298 B CN 101739298B CN 2008101816083 A CN2008101816083 A CN 2008101816083A CN 200810181608 A CN200810181608 A CN 200810181608A CN 101739298 B CN101739298 B CN 101739298B
Authority
CN
China
Prior art keywords
affairs
buffer memory
shared buffer
cache
resource
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 - Fee Related
Application number
CN2008101816083A
Other languages
English (en)
Other versions
CN101739298A (zh
Inventor
侯锐
王华勇
沈晓卫
T·凯恩
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
Priority to CN2008101816083A priority Critical patent/CN101739298B/zh
Priority to US12/623,496 priority patent/US8131894B2/en
Publication of CN101739298A publication Critical patent/CN101739298A/zh
Application granted granted Critical
Publication of CN101739298B publication Critical patent/CN101739298B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种共享缓存管理系统。该系统包括:资源管理模块,被配置为响应于事务的开始,依据预测的事务数据大小为该事务分配共享缓存资源,并且响应于该事务的成功提交,记录该事务实际占用的共享缓存大小以更新该事务的历史信息,其中该事务的预测的事务数据大小是由预测器在运行时中根据事务的历史信息预测的。本发明还提供相应的共享缓存管理方法。根据本发明的技术方案能够通过预测事务的缓存需求的大小,为多个事务动态地分配共享缓存资源。

Description

共享缓存管理方法和系统
技术领域
本发明涉及信息技术领域,更具体地,本发明涉及用于共享缓存管理方法和系统。
背景技术
当前,研究者已经提出基于硬件的事务内存系统,来解决传统基于锁的并行编程模型中存在的问题。事务内存系统允许编程者指定串行方式执行的代码的区域(称为事务)。也就是说,每个事务执行时在线程中仅执行其对应的代码。事务内存系统允许应用程序以并行但原子的方式来访问共享数据。事务内存可以提高并行程序的性能。可以参考由Maurice Herlihy,J.Eliot B.Moss在1993年发表的文章“Transactional Memory:Architectural Support for Lock-Free DataStructures”(文献1),来了解事务内存的实现以及有关的一些术语或概念。在硬件/混合型事务内存系统中广泛采用了硬件专用缓存器及相关控制机制,来实现版本管理和冲突检测。
硬件专用缓存器的设计与多处理核架构的特征密切相关。从多核架构的发展来看,存在两个重要的特征或趋势。一方面,并发多线程(SMT)处理器核心变得越来越普及。另一方面,将越来越多的处理核集成到同一芯片中。显然,如果每个硬件线程(在并发多线程核心的情况下)或者每个处理核(在多个处理核系统的情况下)需要私有的专用缓存,则会引起非常高的实现成本。因此,需要在多个硬件线程(对于SMT核的情况)或者多个处理器核(对于多核的情况)之间共享缓存。
用于硬件共享缓存的传统缓存管理方法可以被分为两种不同的方法。
1)独占型共享缓存
来自不同线程的所有事务竞争同一共享缓存。并且,仅有一个事务能够被获准访问该共享缓存,也即独占的访问,直到整个事务由于成功提交(commit)或者重试(retry)而结束为止。因此,独占型共享缓存可以以非常简单的硬件逻辑实现。但是,这样的设计可能导致性能损失,因为这很大程度上限制了潜在的并发性。
2)非独占型共享缓存
在这种设计中,来自不同事务的数据以不同的色彩标记,这些事务被分配在共享缓存中。通常,这种分配是以缓存块(cacheline)为单位的细粒度来执行的。为了区分缓存器中每个缓存块所存储的数据属于哪个事务,缓存器中的每个缓存块具有一个相应的色彩标记。非独占型共享缓存的主要优点在于:其相比于独占型共享缓存的方法能够获得更好的资源利用率。
然而,非独占型共享缓存的设计将显著增加事务提交(commit)、中止(abort)、替代(replacement)以及冲突检测(conflict detection)的实现复杂度。在事务以传统的细粒度(也即以缓存块(cacheline)为粒度)随机分配在非独占型共享缓存中的情况下:
对于事务提交或者中止,硬件逻辑必须比较每个缓存块以匹配目标色彩;
对于在替代策略中发生冲突失效(conflict miss)的情况,对于硬件来说很难选择一个事务来执行替代。例如,小的事务应该中止大的事务,或者新的事务可以中止将被提交的事务;
对于冲突检测,硬件必须针对每个缓存块附加色彩寄存器和对应比较逻辑,这显然增加了硬件成本。
发明内容
为了克服现有技术中的缺陷,本发明提出一种硬件事务内存系统中的新的动态共享缓存管理方案。该共享缓存管理方案能够基于对事务需求缓存的大小的预测为多个事务动态分配缓存。进一步地,在一个实施例中,通过改变共享缓存的分配粒度进一步实现对于硬件部分的简化。
根据本发明的第一方面,提供一种共享缓存管理系统。该系统包括:资源管理模块,被配置为响应于事务的开始,依据预测的事务数据大小为该事务分配共享缓存资源,并且响应于该事务的成功提交,记录该事务实际占用的共享缓存大小以更新该事务的历史信息,其中该事务的预测的事务数据大小是由预测器在运行时中根据事务的历史信息预测的。
根据本发明的第二方面,提供一种共享缓存管理方法。该方法包括以下步骤:在运行时中根据即将执行的事务的历史信息预测该事务的事务数据大小;响应于该事务的开始,依据预测事务数据大小为该事务分配共享缓存资源;响应于该事务的成功提交,记录该事务实际占用的共享缓存大小以更新预测器中针对该事务的历史信息。
根据本发明的第三方面,提供一种共享缓存器。该共享缓存器包括:多个关联缓存路,其中每个缓存路中具有多个缓存块;地址索引,用于寻址到所述每个缓存路中相应位置的缓存块;色彩寄存器,用于针对每个缓存路存储色彩值,其中每个色彩值对应于不同事务,其中所述共享缓存被配置为以缓存路为粒度在多个事务之间共享缓存资源。
本发明的方案能够将硬件的复杂度转移到软件中,而且几乎不会产生性能损失。通过预测事务的缓存需求的大小,该新的共享缓存管理方案能够为多个事务动态地分配资源。优选地,以缓存路为粒度为多个事务动态地分配共享缓存资源。在这方面,根据本发明的方案能够很大程度上简化硬件实现,因为每个缓存路仅需要配备一个色彩比特寄存器,而这使得提交和中止的逻辑配置也将变得相当简单。
附图说明
通过以下结合附图的说明,并且随着对本发明的更全面了解,本发明的其他目的和效果将变得更加清楚和易于理解,其中:
图1示意性地示出了根据本发明的共享缓存管理系统的架构;
图2示意性地示出了根据本发明一种实施方式的共享缓存管理系统的结构;
图3示意性地示出了根据本发明图2的实施方式的共享内存的微逻辑架构;
图4示意性地示出了根据本发明又一实施方式的共享缓存管理系统的结构;
图5示出了根据本发明的一个实施方式的共享缓存管理方法的流程图。
在所有的上述附图中,相同的标号表示具有相同、相似或相应的特征或功能。
具体实施方式
本发明适用于事务内存技术领域,以下说明将以事务内存的运行环境为例,即:处理器上运行的应用程序包含若干事务,事务使用共享缓存器来存储中间状态数据,以色彩标记指示事务的标识号(ID)。当然,本领域的技术人员应该理解,本发明不限于此,而是可以将事务抽象到更一般的概念程序,因为事务是应用程序的一部分。
本发明已经注意到,在硬件事务内存系统的共享内存涉及方案中,一个主要的挑战在于按需的资源管理,这对于系统性能非常关键。例如,具有不同数据大小的多个事务彼此竞争申请相同的共享缓存,则按需资源管理的策略将选择响应那些可能的事务组合,即这些事务所要求的总缓存大小没有超过总的硬件资源的极限。按需资源管理的另一优点在于,如果一个具有很大数据大小的事务总是使得缓存溢出,这样的事务将直接进入运行时中对于溢出的特殊处理,避免其占用硬件缓存。根据本发明,按需资源管理要求资源分配逻辑在事务起始时就知道该事务所请求的总的缓存大小。在本发明中,这是通过对于事务数据大小的预测机制提供的。
通过实验观察可以发现大多数的事务具有可预测的写数据大小,标识着该事务在执行时可能需求的缓存大小。这表明对于事务数据大小(即对事务需求的缓存大小)进行预测的可能性。
图1示意性地示出了根据本发明一种实施方式的共享缓存管理系统的结构。其中,参考标号100表示根据本发明一个实施方式的共享缓存系统。
如图1所示,在共享缓存管理系统100中,包括软件部分、硬件部分以及相适应的操作系统(未示出)。
在软件部分中,多个线程220-1...220-n,每一个线程可包括多个事务,例如如图所示,线程220-1包括事务2201、2202,线程220-n包括事务2203、2204、2205。线程220-1...220-n可以属于同一个进程,也可以属于不同的进程。在环境100中,线程220-1...220-n的执行是并行的,而每一个线程中的多个事务的执行是串行的。
预测器210对每个事务的数据大小,也即对共享缓存需求的大小进行预测。预测器210可以置于软件运行时端,例如设置在运行时库中。这样的设置能够为系统提供多种优势,例如可以使得系统硬件设计得以简化,获得良好的灵活性,可以支持更复杂的预测算法,等等。
在每个事务请求开始执行之前,将向预测器210获取该事务可能的写数据大小。该数据大小可以以一定粒度给出。衡量事务数据大小的粒度的选择与共享缓存的物理设计相关。通过改变共享缓存的物理设计能够简化该共享缓存管理系统。这一点将在后文中结合硬件部分着重阐述。如果针对该事务所预测的数据大小大于总的硬件缓存,则该事务将直接进入用于溢出事务的特殊处理。如果针对该事务所预测的数据大小在合理的范围内,则可以将该预测的数据大小通知资源管理模块310,以便进行缓存资源分配。
硬件部分包括共享缓存320,并且在一些有利的实施中硬件部分还包括资源管理模块310,其中,资源管理模块310负责以一定粒度对硬件资源特别是共享缓存320的资源进行分配和回收。
资源管理模块310与当前资源记录装置311进行交互。当前资源记录装置311用于记录与当前可用的缓存资源有关的信息。根据所通知的预测事务大小,并且基于当前资源记录装置311所记录的有关当前共享缓存320中可用资源的信息,资源管理模块310执行对于共享缓存320的资源管理,分别包括在事务开始时通过分配逻辑完成对事务的共享内存的分配;以及在事务中止或者提交时寻址相应的缓存资源,以执行相应的操作,并且通过回收逻辑回收共享缓存320的可用缓存资源,进而相应地更新当前资源记录装置311。
以上通过参照图1对本发明的技术方案进行了总的说明。各个部件的具体实现存在多种可选的实施方案。例如,根据图1所示出的共享缓存管理系统的基本架构,可以具体设计运行时库中的预测器210对事务大小进行预测的算法、策略,以便能够更佳地适应各种具体应用情况。如何在事务开始之前向资源管理模块310通知将执行事务的预测数据大小,也可以通过各种不同的方式实现,例如作为现有指令的参数,或者专门为其设置通知指令等。在图1中,资源管理模块310是在硬件部分中实现的,但是可以理解还可以通过软件或者硬件与软件相结合的方式实现资源管理模块310。更加灵活的是,根据本发明的共享缓存管理架构可以应用到各种共享缓存。换句话说,通过改变共享缓存的硬件设计方案,可以进一步增加根据本发明的共享缓存管理系统的性能,而不会由此造成更多的硬件成本增加。
以下参照图2-4进一步描述根据本发明共享缓存管理系统的具体实施例,以及其工作过程。
图2示意性地示出了根据本发明一种实施方式的共享缓存管理系统的结构。
如图2所示的共享缓存管理系统100A将预测机制与新颖的粗粒度共享缓存相结合。作为一种示例,图2所示的共享缓存320A为4路关联缓存。资源管理模块310A以缓存路作为粒度对共享缓存进行资源管理。具体而言,根据预测的事务数据大小,共享缓存能够动态的为多个事务以缓存路作为粒度分配共享缓存。因此,在共享缓存320A中,仅为每个缓存路配置色彩标记和相应控制逻辑。这样的设计能够减少硬件成本,并且能够获得灵活的软件预测机制。
首先从工作流角度描述共享缓存管理系统100A。在程序中,事务220-1...220-n均以事务开始运行时函数transaction_begin()和事务结束运行时函数transaction_begin()标记。在transaction_begin()中,运行时中的预测器210负责在进入该事务的区域之前(事务开始指令trans_begin指令执行之前),根据历史信息预测该事务所需的数据大小。如果针对该事务所预测的数据大小大于总的硬件缓存,则该事务将直接进入用于溢出事务的特殊处理。如果针对该事务所预测的数据大小在合理的范围内(例如,当前硬件可用的缓存区大小可以满足预测的数据大小),则可以将该预测的数据大小传递给资源管理模块310A。在本实施例中,将所预测的数据大小作为事务开始指令trans_begin中的一个参数指示给资源管理器模块310A。硬件资源管理模块310A将该预测的大小与共享缓存当前可用的大小(根据当前资源记录装置311A提供的信息)进行比较。如果存在足够资源,则该请求得到满足,即正常执行事务开始指令trans_begin;否则,如果不存在足够的可用资源,则事务开始指令trans_begin返回零值,即未成功执行该事务。此时,控制流可以控制该事务进行重试(例如立即重试或者等待一段时间后重试),以便在共享缓存320A中存在足够可用缓存资源时能够开始执行该事务。在事务执行中,transaction_begin()检查事务开始指令trans_begin的返回值是否为零值,如果在一次尝试中没有成功执行该事务,即在执行该事务过程中溢出所分配的共享缓存(这里称为假溢出),则资源管理模块310A报告该溢出,并且在工作流中按照一定策略进行重试,直到重新执行该事务为止。在每次事务重试中,所请求的数据大小可以在预测器210的预测值基础上增加特定的值。这样的迭代方法确保了每个事务在假溢出的情况下最终能够被响应。一旦事务成功提交,该事务最终所占用的缓存大小将作为该事务的实际数据大小,并且将其存储在支持预测器210工作的历史信息中。
在软件部分中,预测器210将针对每个待执行的事务预测其事务数据大小。本实施例中,该预测的事务数据大小是以缓存路为粒度(粗粒度)给出的。当每个事务在执行时由于溢出所分配的、等于预测事务数据大小的缓存大小而进行重试时,这里称之为假溢出,软件部分将以缓存路为粒度增加该事务所请求的缓存数据大小(例如,每次增加一个缓存路)。一旦事务提交成功,预测器210记录该事务执行实际使用的缓存大小作为其数据大小的历史信息。
由于每个事务都需要预测器210提供预测的事务数据大小,因此在实现上该预测器210应该是非时间消耗的。虽然存在多种可行的算法对事务数据大小进行预测,但是应该理解,在本发明中预测器210应该采用不太复杂的预测算法,而且当来自不同线程的多个事务同时尝试访问、更新历史信息时,保存各事务的历史信息数据存储(例如,哈希表)应该是非锁定的。
在图2所示的共享缓存管理系统100A中,预测器210可以具有双层软件哈希表,其中对于每个事务(事务ID)记录有最近N次的数据大小信息。该双层哈希表被设计为具有非锁定的特点。该哈希表的第一层通过线程ID进行索引,并且第二层通过事务起始地址进行索引。哈希表的双层结构确保了每个线程具有其私有的哈希表,从而避免在更新历史信息时的锁定/解锁操作。当然,对第一层条目的插入和删除操作应该对哈希表进行锁定/解锁。但由于上述动作仅在线程创建和退出的情况下才需要,因此执行这些动作的频率要比执行对历史信息更新的动作的频率少得多。
正如上文所述,在预测器210中使用过于复杂的预测算法可能会对系统性能产生负面影响。作为预测算法的示例,这里讨论以下几种预测算法。
1)最近值预测
在该算法中,对于事务最近一次请求的数据大小将被预测为该事务即将执行时所需要的数据大小。该算法非常简单,使得预测器210在给出预测结果时仅需要非常短的时间,而且使得所维护的哈希表对于每个事务条目仅具有一个节点,由此节约了存储空间。当每个事务成功提交时,以该事务实际占用的共享缓存大小更新对于每个事务条目的事务数据大小的历史信息。
2)平均值预测
在一些应用中,相同事务的区域在每次执行时可能具有可变的写数据大小。例如,这样的事务可能具有每次运行中执行不同迭代的循环结构。对于这样不规则的情况,可以采用诸如Markolv模型等复杂的算法对其数据大小进行预测。但是考虑到在本发明中首要考虑的因素是避免过度的运算时间,则仅采用对特定数目N的历史数据大小值进行简单平均运算的平均值预测。平均值预测的算法能够很好地平衡时间消耗问题和精确度问题。在该算法中,在哈希表中针对每个事务记录其最近N个数据大小信息。该最近N数据大小值的品均值将作为该事务即将执行时的预测值。
3)其它预测算法
实际上,根据不同的应用以及在该应用中线程的事务特点,可以安排其它的预测算法。例如,可以在N个历史数据大小值中选择最大值作为为即将开始的事务的数据大小预测;还可以以一定幅度模拟某些事务在每次执行时数据大小的变化趋势(增大或者减少),等等。
本领域技术人员可以理解,可以灵活地配置预测器210事务数据大小的预测算法,以使用任一预测算法或者预测算法的组合。
资源管理模块310A负责以缓存路为粒度对硬件资源特别是共享缓存320A的资源进行分配和回收。资源管理模块310A与当前资源记录装置311A进行交互。
当前资源记录装置311A例如可以实现为计数器寄存器,以记录当前可用的缓存路的数目。该当前资源记录装置311A在任何事务的开始、提交和中止时进行更新。这样的更新动作是通过资源管理模块310A执行的。资源管理模块310A将在trans_begin指令中携带的针对某事务的请求事务大小与当前资源记录装置311A的计数器寄存器所维持的数值进行比较。当当前资源记录装置311A的计数器寄存器的数值大于或者等于所请求的数据大小时,才响应该请求并且事务开始指令trans_begin的返回值为1。否则,将拒绝该请求并且事务开始指令trans_begin的返回值为0。此时,控制流可以控制该事务进行重试(例如立即重试或者等待一段时间后重试),以便在当前资源记录装置311A的计数器寄存器显示共享缓存320A中存在足够可用缓存资源时能够开始执行该事务。
资源管理模块310A可以具有相对简单的逻辑。应该注意,资源管理模块310A可以访问并更新共享缓存320A中针对各个缓存路所分配的色彩寄存器以及其有效标志。以下针对不同的场景描述资源管理模块310A的工作流。
在事务开始的情况下,资源管理模块310A访问并比较针对每个缓存路所分配的色彩寄存器。如果按照每个色彩寄存器的附加标志指示的,该色彩寄存器可用,则意味着该缓存路可以被分配给进行请求的事务。此时将该色彩寄存器设置为该请求事务的色彩值。并且,所请求的数据大小将减少1。该过程继续重复执行,直到所请求的数据大小等于0,则意味着所有请求的硬件资源已经被分配。
在事务提交的情况下,资源管理模块310A通过迭代的比较共享缓存320A中每个缓存路的色彩寄存器与在事务提交指令trans_commit中的色彩值,定位目标事务所占用的共享缓存320A的空间。并且,资源管理模块310A控制将所有存储在具有目标色彩值的缓存路中的每个缓存块的推测数据写入到内存系统中。
在事务中止的情况下,资源管理模块310A通过迭代的比较共享缓存320A中每个缓存路的色彩寄存器与在事务回滚指令trans_rollback中的色彩值,定位目标事务所占用的共享缓存320A的空间。并且,资源管理模块310A控制丢弃所有存储在具有目标色彩值的缓存路中的每个缓存块的推测数据并且使其失效。
在事务内存系统中,在事务区域中的任何内存访问请求携带有色彩信息,这需要考虑版本管理和冲突检测。图3示意性地示出了根据本发明图2的实施方式的共享内存的微逻辑架构。参照图3可以清楚的理解在上文中提出的粗粒度共享缓存320A。
图3所示出的缓存器320A是一个4路关联缓存器,其中每路具有128个缓存块(图中仅示例地表示出部分缓存块)。色彩寄存器321用于针对每个缓存路存储其色彩值。
通过地址索引322可以寻址到每路中相应位置4个缓存块。选择器323根据标签以及色彩寄存器321中的色彩值确定是否命中或者发生冲突。
在事务加载操作中,如果命中(hit)具有相同色彩标记的缓存路中的缓存块,则应该读取缓存块中的推测数据。如果未命中(miss),则向缓存控制器提出常规的缓存未命中信号。如果命中具有不同色彩标记的缓存路中的缓存块,则会检测到写后读(RAW)冲突并且将会报告硬件异常,这可以由运行时库中的异常处理程序处理。
在事务存储操作中也应该检测缓存。如果命中具有相同色彩标记的缓存路中的缓存块,则更新该缓存块中的推测数据。如果未命中,则可以将一个无效消息发送到所有其它远程共享缓存,以检测是否存在潜在的冲突,并且获得独占的写操作特权。如果命中具有不同色彩标记的缓存路中的缓存块,则检测到写后写(WAW)冲突。
任何本地共享缓存监听远程缓存一致性消息。如果其中的地址命中本地共享缓存的缓存块,则检测到冲突:如果该消息由读操作未命中引起,则该冲突为RAW冲突;如果该消息由存储未命中引起,则该冲突为WAW。在这种情况下,将不必考虑色彩寄存器的值,因为无论色彩值是否相同,只要出现命中的情况就说明发生了冲突。当然,针对该地址还需要检测本地事务读取缓存或者签名。
一旦检测到冲突,仲裁器将会确定将中止哪个事务。并且,通过事务回滚指令trans_rollback可以将该色彩信息传送到资源管理模块310A。并且,资源管理模块30A执行对于具有相同色彩信息的所有缓存路的中止操作。
即使在事务即将开始时能够准确地预测事务数据大小,由于冲突未命中的原因事务仍然可能溢出所分配的缓存。这在缓存设计中是常见的。可以设置牺牲者缓存(victim buffer)(未示出)来存储替代的数据,以缓解缓存未命中的处罚。根据图3所示的共享缓存结构也可以采用牺牲者缓存来处理冲突未命中。可以具有通过多种不同的选择来设计牺牲者缓存。在一种简单的设计中,可以仅允许牺牲者缓存存储具有相同色彩的数据。在这种情况中,其仅需要色彩寄存器。在一种更为复杂的设计中,为牺牲者缓存的每个条目添加色彩寄存器。考虑到牺牲者缓存空间较小的特点,可以采用后一种设计。由于冲突未命中的情况相对于容量未命中的情况来说很少发生,在本发明中仅给出简要的示例性解决方案,不再进行详细讨论。
图4示意性地示出了根据本发明又一实施方式的共享缓存管理系统的结构。
如图2所示的共享缓存管理系统100B将预测机制与传统的细度共享缓存相结合。作为一种示例,图4所示的共享缓存320B为4路关联缓存。资源管理模块310B以缓存块作为粒度对共享缓存进行资源管理。具体而言,根据预测的事务数据大小(以缓存块作为粒度),共享缓存能够动态的为多个事务以缓存块作为粒度分配共享缓存。因此,在共享缓存320B中,类似于传统共享缓存的设计,需要为每个缓存块配置色彩标记和相应控制逻辑。
本领域的技术人员可以理解,由于虽然在图4所示的实施例中采用了与图2所示实施例不同的共享缓存设计,但是共享缓存管理系统的工作原理和工作过程是类似的,特别地,软件部分以及系统中工作流的实现是类似的。不同之处,仅在于预测器210以缓存块作为粒度为即将开始的事务预测事务数据大小。
在一些有利的实施中,在硬件部分中实现资源管理模块310B。资源管理模块310B负责以缓存路为粒度对硬件资源特别是共享缓存320B的资源进行分配和回收。资源管理模块310B与当前资源记录装置311B进行交互。本领域技术人员可以理解,由于在本实施例中,共享缓存320B采用传统的细粒度(缓存块为粒度)的传统设计,因此资源管理模块310B虽然基本工作原理将与图2所示的资源管理模块310A的基本工作原理类似,但其具体实现可以存在不同。
当前资源记录装置311B例如可以实现为记录表格,记录当前缓存中现有的色彩、其对应请求的缓存块数目以及实际占用的缓存块数目。由此,当前资源记录装置311B可以通过共享缓存320B中总缓存块减去各个事务(对应于不同的色彩)实际占用的缓存块来获知当前可用的缓存资源数目。由此,资源管理模块310B在当某事务请求开始执行时,将在trans_begin指令中携带的针对某事务的请求事务大小与当前资源记录装置311B所提供的当前可用缓存资源数目进行比较,以确定是否能够开始执行该事务。如果事务请求的数据大小超出当前可用的缓存资源数目,才响应事务开始的请求并且事务开始指令trans_begin的返回值为1。否则,将拒绝该事务开始请求并且事务开始指令trans_begin的返回值为0。此时,控制流可以控制该事务进行重试(例如立即重试或者等待一段时间后重试),以便在当前资源记录装置311B指示共享缓存320B中存在足够可用缓存资源时能够开始执行该事务。当每个事务在执行时由于溢出所分配的、等于预测事务数据大小的缓存大小而进行重试时,这里称之为假溢出,在软件部分中将增加该事务所请求的缓存数据大小,例如,每次增加预定数目的缓存块。每当事务在执行中将数据写入一个新的缓存块,则资源管理模块310B更新当前资源记录装置311B中所维护的表格。
由于共享缓存320B采用了传统的细粒度结构,资源管理模块310B在各种场景下对于共享缓存320B的管理和控制逻辑与现有技术中所采用的逻辑类似。本领域的技术人员可以以任何现有的方式实现在各种场景下对于共享缓存320B的读、写以及冲突检测等操作。这里为了简洁,仅给出上述概括介绍,而省略具体示例性描述。
图5示出了根据本发明的一个实施方式的共享缓存管理方法的流程图。
在步骤S500中,该方法的流程开始。
在步骤S501中,获取预测的事务数据大小。该数据大小可以以一定粒度给出。衡量事务数据大小的粒度的选择与共享缓存的物理设计相关。对于某一事务的事务数据大小进行的预测可以通过在运行时中实现的预测器基于该事务的数据大小的历史信息来执行。此时,如果预测器的所述预测的事务数据大小已经大于共享缓存资源,则该事务可以直接进入用于事务溢出的特殊处理(未示出)。
在步骤S502中,事务通过运行时函数transaction_begin()请求开始执行。
在步骤S503中,依据预测的事务数据大小请求共享缓存的硬件资源。在一个实施例中,可以将所预测的数据大小作为事务开始指令trans_begin中的一个参数指示给资源管理器模块。
在步骤S504中,将该预测的大小与共享缓存当前可用的大小进行比较,以确定是否存在足够的共享缓存资源。
如果确定存在足够的共享缓存资源,则继续执行步骤S506;如果确定不存在足够的共享缓存资源,则此时发生溢出,该流程继续执行步骤S505。
在步骤S505中,拒绝该事务开始请求,并控制该事务进行重试。立即或者等待一段时间之后重新执行事务开始指令trans_begin。此时,可以不必改变所请求的事务数据大小。
在步骤S506中,在硬件部分中为该事务分配所请求的共享缓存资源,其中该分配的共享缓存大小等于预测的事务数据大小。
在步骤S507中,开始执行事务。
在步骤S508中,确定该事务是否溢出所分配的共享缓存资源。例如可以通过检查事务开始指令trans_begin的返回值是否为零值,确定该事务是否正常执行。
如果在一次尝试中没有成功执行该事务,即在执行该事务过程中溢出所分配的共享缓存(这里称为假溢出),则继续执行步骤S510。如果成功执行该事务,即在执行该事务过程中没有溢出所分配的共享缓存,则继续执行步骤S509。
在步骤S509中,将预测事务数据大小增加特定的值,并将该值作为新的预测值。该流程返回到步骤S502,对该事务进行重试。这样的迭代方法确保了每个事务在假溢出的情况下最终能够被响应。
在步骤S510中,一旦事务成功提交,记录该事务实际所占用的缓存大小将作为该事务的数据大小,由此更新针对该事务的历史信息。
在步骤S511中,该方法的流程结束。
应当注意,为了更清楚地阐述根据本发明的共享内存管理方法,图5所示的方法以及对图5的以上描述省略了已经参照图1-4详细阐述的硬件工作步骤,而且还省略了对于本领域的技术人员来说是公知的、并且对于本发明的实现可能是必需的具体实现步骤。
提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。本领域技术人员还应该理解,可以通过软件、硬件、固件或者它们的结合的方式,来实现本发明实施例中的方法和装置。
因此,选择并描述实施方式是为了更好地解释本发明的原理及其实际应用,并使本领域普通技术人员明白,在不脱离本发明实质的前提下,所有修改和变更均落入由权利要求书所限定的本发明的保护范围之内。

Claims (14)

1.一种共享缓存管理系统,包括:
资源管理模块,被配置为响应于事务的开始,依据预测的事务数据大小为该事务分配共享缓存资源,并且响应于该事务的成功提交,记录该事务实际占用的共享缓存大小以更新该事务的历史信息,
其中该事务的所述预测的事务数据大小是由预测器在运行时中根据所述事务的历史信息预测的,
其中响应于该事务溢出所分配的共享缓存资源,所述预测器以所述预测事务数据大小增加预定值作为新的预测事务数据大小,并且
所述资源管理模块被配置为响应于该事务的重新开始依据新的预测的事务数据大小为该事务分配共享缓存资源。
2.根据权利要求1所述的共享缓存管理系统,其中所述资源管理模块被配置为:
比较所述预测事务数据大小与所述共享缓存当前的可用资源;
响应于存在足够的可用资源,为该事务分配等于预测事务数据大小的共享资源;
响应于不存在足够的可用资源,不为该事务分配共享资源并拒绝该事务开始,并控制重新开始该事务。
3.根据权利要求1所述的共享缓存管理系统,其中所述资源管理模块被配置为:
比较所述预测事务数据大小与所述共享缓存当前的可用资源;
响应于不存在足够的可用资源,该事务直接进入用于事务溢出的处理。
4.根据权利要求1-3中任一权利要求所述的共享缓存管理系统,其中:
所述预测器被配置为按照以下方式中的任何一种或者任何组合来对事务数据大小进行预测:
1)最近值预测;
2)平均值预测;
3)最大值预测;以及
4)幅度模拟预测。
5.根据权利要求1-3中任一权利要求所述的共享缓存管理系统,其中所述事务的历史信息被配置为双层软件哈希表,其中第一层以线程标识进行索引,并且第二层以事务地址进行索引。
6.根据权利要求1-3中任一权利要求所述的共享缓存管理系统,其中在所述共享缓存中为每个缓存路配置色彩寄存器,以存储针对不同事务的色彩标记,
其中,所述预测器被配置为以缓存路为粒度为事务预测事务数据大小,并且所述资源管理模块被配置为以缓存路为粒度分配共享缓存资源。
7.根据权利要求1-3中任一权利要求所述的共享缓存管理系统,其中在所述共享缓存中为每个缓存块配置色彩寄存器,以存储针对不同事务的色彩标记,
其中,所述预测器被配置为以缓存块为粒度为事务预测事务数据大小,并且所述资源管理模块被配置为以缓存块为粒度分配共享缓存资源。
8.一种共享缓存管理方法,包括:
在运行时中根据即将执行的事务的历史信息预测该事务的事务数据大小;
响应于该事务的开始,依据预测事务数据大小为该事务分配共享缓存资源;
响应于该事务的成功提交,记录该事务实际占用的共享缓存大小以更新该事务的历史信息,
响应于该事务溢出所分配的共享缓存资源,将所述预测事务数据大小增加预定值,以作为新的预测事务数据大小;以及
响应于该事务的重新开始,依据新的预测事务数据大小为该事务分配共享缓存资源。
9.根据权利要求8所述的共享缓存管理方法,其中分配共享缓存资源的步骤进一步包括:
比较所述预测事务数据大小与所述共享缓存当前的可用资源;
响应于存在足够的可用资源,为该事务分配等于预测事务数据大小的共享资源;
响应于不存在足够的可用资源,不为该事务分配共享资源并并拒绝该事务开始,
所述方法进一步包括:
控制重新开始该事务。
10.根据权利要求8所述的共享缓存管理方法,其中预测事务数据大小的步骤进一步包括:
比较所述预测事务数据大小与所述共享缓存当前的可用资源;
响应于不存在足够的可用资源,该事务直接进入用于事务溢出的处理。
11.根据权利要求8-10中任一权利要求所述的共享缓存管理方法,其中按照以下方式中的任何一种或者任何组合来对事务数据大小进行预测:
1)最近值预测;
2)平均值预测;
3)最大值预测;以及
4)幅度模拟预测。
12.根据权利要求8-10中任一权利要求所述的共享缓存管理方法,其中所述事务的历史信息被配置为双层软件哈希表,其中第一层以线程标识进行索引,并且第二层以事务地址进行索引。
13.根据权利要求8-10中任一权利要求所述的共享缓存管理方法,其中在所述共享缓存中为每个缓存路配置色彩寄存器,以存储针对不同事务的色彩标记,
其中以缓存路为粒度执行预测事务大小的步骤,以及
以缓存路为粒度执行分配共享缓存资源的步骤。
14.根据权利要求8-10中任一权利要求所述的共享缓存管理方法,其中在所述共享缓存中为每个缓存块配置色彩寄存器,以存储针对不同事务的色彩标记,
其中以缓存块为粒度执行预测事务大小的步骤,以及
以缓存块为粒度执行分配共享缓存资源的步骤。
CN2008101816083A 2008-11-27 2008-11-27 共享缓存管理方法和系统 Expired - Fee Related CN101739298B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN2008101816083A CN101739298B (zh) 2008-11-27 2008-11-27 共享缓存管理方法和系统
US12/623,496 US8131894B2 (en) 2008-11-27 2009-11-23 Method and system for a sharing buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101816083A CN101739298B (zh) 2008-11-27 2008-11-27 共享缓存管理方法和系统

Publications (2)

Publication Number Publication Date
CN101739298A CN101739298A (zh) 2010-06-16
CN101739298B true CN101739298B (zh) 2013-07-31

Family

ID=42223812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101816083A Expired - Fee Related CN101739298B (zh) 2008-11-27 2008-11-27 共享缓存管理方法和系统

Country Status (2)

Country Link
US (1) US8131894B2 (zh)
CN (1) CN101739298B (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8528001B2 (en) * 2008-12-15 2013-09-03 Oracle America, Inc. Controlling and dynamically varying automatic parallelization
US9529839B2 (en) * 2009-12-07 2016-12-27 International Business Machines Corporation Applying limited-size hardware transactional memory to arbitrarily large data structure
CN102693164B (zh) * 2012-05-03 2014-09-17 中国石油集团川庆钻探工程有限公司地球物理勘探公司 防止缓存溢出的设备和方法
FR2992083B1 (fr) * 2012-06-19 2014-07-04 Alstom Transport Sa Calculateur, ensemble de communication comportant un tel calculateur, systeme de gestion ferroviaire comportant un tel ensemble, et procede de fiabilisation de donnees dans un calculateur
CN103577268B (zh) * 2012-08-07 2016-12-21 复旦大学 基于应用负载的自适应资源供应方法
US9548912B2 (en) 2012-10-15 2017-01-17 Oracle International Corporation System and method for supporting smart buffer management in a distributed data grid
US9473561B2 (en) * 2013-03-15 2016-10-18 International Business Machines Corporation Data transmission for transaction processing in a networked environment
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
CN103699493B (zh) * 2013-12-26 2016-07-06 上海柯斯软件股份有限公司 智能卡dtr内存空间的控制系统及方法
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US20150242216A1 (en) * 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
JP6287451B2 (ja) * 2014-03-26 2018-03-07 富士通株式会社 データ受信装置、データ受信装置の制御方法及びデータ送信装置とデータ受信装置とを有するデータ送受信システム
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
US20160179662A1 (en) * 2014-12-23 2016-06-23 David Pardo Keppel Instruction and logic for page table walk change-bits
US9652168B2 (en) * 2015-04-10 2017-05-16 International Business Machines Corporation Adaptive concurrency control using hardware transactional memory and locking mechanism
US9507636B2 (en) * 2015-04-20 2016-11-29 International Business Machines Corporation Resource management and allocation using history information stored in application's commit signature log
CN106503007B (zh) * 2015-09-08 2019-07-23 阿里巴巴集团控股有限公司 数据库操作方法及装置
US11068401B2 (en) 2015-09-25 2021-07-20 Intel Corporation Method and apparatus to improve shared memory efficiency
CN109726017B (zh) * 2017-10-30 2023-05-26 阿里巴巴集团控股有限公司 一种应用程序之间共享缓存的方法及装置
CN110944050B (zh) * 2019-11-29 2022-04-26 北京网聘咨询有限公司 反向代理服务器缓存动态配置方法及系统
CN113468127A (zh) * 2020-03-30 2021-10-01 同方威视科技江苏有限公司 数据缓存方法、装置、介质及电子设备
CN111930648B (zh) * 2020-08-07 2023-01-10 山东云海国创云计算装备产业创新中心有限公司 一种缓存配置方法、装置及电子设备和存储介质
CN113360534B (zh) * 2021-08-11 2022-05-06 北京快立方科技有限公司 一种内存数据库多副本数据的内存回收方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1794207A (zh) * 2004-12-20 2006-06-28 国际商业机器公司 实现缓存一致性的方法和系统
CN101010670A (zh) * 2004-09-09 2007-08-01 英特尔公司 解决高速缓存冲突

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333303A (en) 1991-03-28 1994-07-26 International Business Machines Corporation Method for providing data availability in a transaction-oriented system during restart after a failure
US6768992B1 (en) 1999-05-17 2004-07-27 Lynne G. Jolitz Term addressable memory of an accelerator system and method
US7158964B2 (en) 2001-12-12 2007-01-02 Intel Corporation Queue management
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101010670A (zh) * 2004-09-09 2007-08-01 英特尔公司 解决高速缓存冲突
CN1794207A (zh) * 2004-12-20 2006-06-28 国际商业机器公司 实现缓存一致性的方法和系统

Also Published As

Publication number Publication date
CN101739298A (zh) 2010-06-16
US8131894B2 (en) 2012-03-06
US20100138571A1 (en) 2010-06-03

Similar Documents

Publication Publication Date Title
CN101739298B (zh) 共享缓存管理方法和系统
CN105579961B (zh) 数据处理系统及操作方法、用于数据处理系统的硬件单元
CN100576170C (zh) 连续流程处理器流水线
CN1327336C (zh) 用于使用记录板机制处理加载锁定指令的方法
DE102012222558B4 (de) Signalisieren, Ordnen und Ausführung von dynamisch erzeugten Aufgaben in einem Verarbeitungs-System
DE102013114072A1 (de) System und Verfahren zum Hardware-Scheduling von indexierten Barrieren
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
US9032411B2 (en) Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio
US8645963B2 (en) Clustering threads based on contention patterns
CN101861571A (zh) 用于修改存储器存取次序的系统、设备及方法
CN102629221B (zh) 用于分布式共享存储的任务同步方法、装置及系统
DE102013208423A1 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
CN104375958A (zh) 高速缓存存储器管理事务性存储器访问请求
US8898395B1 (en) Memory management for cache consistency
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
CN1728113A (zh) 利用转换后备缓冲器选中的多处理器系统和方法
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
CN103635875A (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
US11609786B2 (en) Hierarchical register file device based on spin transfer torque-random access memory
US20060090035A1 (en) Method for priority scheduling and priority dispatching of store conditional operations in a store queue
DE102012220267A1 (de) Rechenarbeitsverteilungs - Referenzzähler
CN103207810A (zh) 计算任务状态封装
US10360079B2 (en) Architecture and services supporting reconfigurable synchronization in a multiprocessing system
US20090083496A1 (en) Method for Improved Performance With New Buffers on NUMA Systems

Legal Events

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

Granted publication date: 20130731