用于细粒度延迟写拷贝的装置和方法

文档序号:6465637阅读:218来源:国知局
专利名称:用于细粒度延迟写拷贝的装置和方法
技术领域
本发明涉及计算机领域,具体涉及写拷贝(c叩y-on-write)技术,更 具体涉及一种用于细粒度延迟写拷贝的装置和方法。
背景技术
写拷贝的基本含义是指,当试图对某一地址进行写操作时,该地址上 的旧数据被复制到别处,然后新数据写入该地址。计算机系统保存了该地 址上的新旧两份数据,因此旧数据可以在需要时恢复。写拷贝仅在写数据 时才进行复制操作,在读数据时不进行复制操作。
写拷贝可应用于虛拟存储器管理、编译器中内存分配函数和某些数据 类型的实现、虚拟i兹盘管理、数据库快照的维护、事务存储器(Transactional Memory)的版本管理、运行时程序4W检查等方面。
现有技术的写拷贝通常是以如下方式实现的进程l标记某个内存页 面A是只读的。如果进程2写了这个页面,这个写操作不会成功执行, 相反会触发一个中断。中断服务程序将页面A的内容复制到页面B,然后 将页面B映射到进程2的地址空间(通过修改页表)。中断返回以后, 进程2的写操作重新执行,这时数据实际写到页面B。从此以后,进程2将 看不到页面A,每次访问这个地址时,实际访问的都是页面B。
现有技术的写拷贝存在如下两个缺点l)复制是基于页的,也就是说 每次复制至少是一个页面大小(通常4KB)。有些时候只修改了少数几个 字节,但是也要复制整个页,从而不必要地浪费了资源。2)当第一个写操 作发生时,立刻进4亍复制,因为响应中断和复制页面是相对费时的操作,从而这条写操作会等待很久。由于现有技术的写拷贝的上述缺点,因此它 不能很好地满足诸如事务存储器等应用的需求。
显然,本技术领域中需要一种更细粒度的和带有延迟拷贝特性的写拷 贝技术方案。

发明内容
根据本发明的 一个方面,提供了 一种用于惰性细粒度写复制的方法,
该方法包括响应于需要写拷贝的存储指令访问处理器的高速緩存中的高 速緩存块,标记所访问的高速緩存块;以及响应于判断高速緩存中被标记 的高速緩存块即将被换出,从较低级存储器中读取对应地址上的原始值, 并将该原始值及该地址存储在日志中,以及清除所述即将4皮换出的高速緩 存块的标记。
根据本发明的另 一个方面,提供了 一种用于细粒度延迟写拷贝的装置, 该装置包括高速緩存控制器,被配置响应于需要写拷贝的存储指令访问 处理器的高速緩存中的高速緩存块,标记所访问的高速緩存块;以及版本 切换模块,被配置为响应于判断高速緩存中被标记的高速緩存块即将被换 出,从较低级存储器中读取对应地址上的原始值,并将该原始值及该地址 存储在日志中,以及清除所述即将被换出的高速緩存块的标记。
本发明的优点包括写拷贝是细粒度的,可以在高速緩存中完成,而 不需要虚拟存储器页面操作,从而节省了资源;写拷贝是延迟的,不需要 立即完成,从而节省了时间和开销;此外,本发明的写拷贝方案充分利用 现有的硬件部件,因而具有很低的硬件复杂性和成本。


所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是, 通过参照附图阅读下面对i兌明性实施例的详细说明可更好地理解发明本身 以及其优选使用模式、另外的目标、特征以及优点,在附图中
图1示出了根据本发明的实施例的装置在Power体系结构中的示例性实现;
图2示出了写拷贝区域中的存储指令执行写拷贝操作的示意图; 图3示出了根据本发明的实施例扩展的高速緩存块(Cache line ); 图4示出了根据本发明的该另一实施例的扩展的高速緩存块;以及 图5示出了根据本发明的实施例的用于细粒度延迟写拷贝的方法。
具体实施例方式
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多 具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员 很明显的是,本发明的实现可不具有这些具体细节。此外,应当理解的是, 本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和元 素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此, 下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利 要求的要素或限定,除非权利要求中明确提出。
本发明的装置和方法可实现于Power类的体系结构,例如IBM的 Power系列产品中,也可实现于Intel处理器等其他体系结构中。此外,本 发明的装置既可以实现于单处理器系统中,也可实现于多处理器系统中。 下面主要参照IBM的Power处理器说明本发明的装置和方法。
图1示出了根据本发明的实施例的装置在Power体系结构中的示例性 实现。
如图所示,该Power体系结构包括L2高速緩存及其控制器101。 L2 高速緩存管理的大多数控制是由高速緩存控制器101中的RC模块(资源 管理器)执行的。RC模块处理对L2的请求。读请求来自于处理器,用于 Ll数据高速緩存重新加载或取指令。写请求来自于存储队列。RC模块完 成以下功能
返回数据处理器向L2发出读请求时,如果命中,RC模块从L2 向处理器返回数据;如果不命中,RC模块通过总线获得所需数据 后返回给处理器。 緩存一致性如果处理器向L2发出读或者写请求但是没有命中, 或者是发出写请求命中一个不是修改状态(MSI緩存一致性协议中 的M状态)的緩存块,RC模块向总线发出消息,以保持緩存一致 性。
写数据当对L2的读请求未命中时,通过总线获取所需的数据, 然后写入L2緩存。或者从处理器发出的写请求的数据由RC模块 写入L2緩存。
同步当来自一个处理器的写操作命中一L2高速緩存块,且该高 速緩存块被标记为存在于另一个处理器的Ll数据高速緩存时,发 起到该另一个处理器的无效操作(back-invalidate)。
前三个功能由图1中与RC模块连接的三个箭头表示。第四个功能表 明存在从RC模块到相关的Ll数据高速緩存的控制路径。
在该Power体系结构中,高速緩存控制器101中的监听模块负责管理 从总线监听到的一致性协议的消息。当一致性协议消息命中有效的L2高 速緩存块时,监听模块根据消息的类型采取适当的行动。基本上说,监听 模块任务可以包括从高速緩存读取数据并通过总线将其发送给其他处理 器;或者从高速緩存读取数据并通过掷出模块(castout machine)将其发 送到较低级存储器;或者简单地更新高速緩存状态。掷出模块负责将数据 从L2高速緩存转移到较低级存储器。例如,当一个高速緩存块被替换时, 掷出模块将其送入内存或L3高速緩存。
为了提高高速緩存命中率,Power体系结构通过硬件数据预取部件将 数据预取到高速緩存。例如, 一个L2未命中会发起预取操作,将若干緩 存块从较低级存储器取到L2高速緩存。被取的高速緩存块的数量可以通 过改变一专用寄存器的字段的设置来调整。
以上是对现有的Power体系结构中的L2高速緩存控制器101中的相 关部件的简单介绍。下面参照附图l描述在该Power体系结构中实现的根 据本发明的实施例的用于细粒度延迟写拷贝的装置。应指出的是,本发明 的用于细粒度延迟写拷贝装置也可以在其他体系结构中实现。
9装置包括高速緩存控制器101 和版本切换才莫块102。其中,高速緩存控制器101响应于需要写拷贝的存 储指令访问高速緩存中的高速緩存块,标记所访问的高速緩存块;版本切 换模块102响应于判断高速緩存中被标记的高速緩存块即将被换出,从较 低级存储器中读取对应地址上的原始值,并将该原始值及该地址存储在曰 志中,以及清除所述即将净皮换出的高速緩存块的标记。其中,所述需要写拷贝的存储指令可位于写拷贝区域中。写拷贝区域 是指程序中这样的一段代码区域,该区域中的任何存储指令将执行写拷贝 操作。在源代码中,写拷贝区域的开始和结束是由一对特殊的指令,例如 BEGINj:OW和END—COW来标记的。在本文中,写拷贝区域中的存储 操作被称为C存储。所述写拷贝操作是指当执行对某一内存地址的写操作 时,首先将该内存地址处的原值存储在另一位置。例如,当处理器执行以 下指令Store variable_A to [address—A]时, 处理器实际上将执行以下操作 Load temp from [address_A] Store tmp to [address—B
Store variable—A to [address—A]也就是说,当将新值被写入之前,旧值必须首先被保存到一个特定的 位置(address一B)。该特定位置是事先规定的。可以使用多种方法,例如 通过一寄存器来定义该特定位置。在本发明的实施例中,该特定位置存在 于下述数据日志中。在本发明一实施例,每个处理器线程将具有两个专用的日志,这两个 曰志存在于内存中。其中,数据日志用于保存某个内存地址上的原值,而 地址日志用于保存这个内存地址。这两个日志的基地址可以在程序初始化 期间通过i殳置专用的寄存器来指定。图2示出了写拷贝区域中的存储指令执行写拷贝操作的示意图。该图 只是i故一个概念上的介绍。如图所示,当由BEGIN—COW和END—COW指令所标记的写拷贝区域中的一存储指令"Store Var to [A"执行写拷贝 操作时,内存地址[A]处的原值将被存储在内存中的数据日志空间中,内存 地址[A]本身将被存储在内存中的地址日志空间中,而新值Var将被存储在 内存地址[A]中。本发明的用于细粒度延迟写拷贝的装置所实现的写拷贝是"细粒度 的",这意味着每次拷贝的数据块大小是很小的。在本发明的实施例中, 该粒度是高速緩存块的大小,例如128B。也就是说,写拷贝每次将保存包 含例如变量variable—A的整个高速緩存块,而不是4象现有的写拷贝4支术中 那样保存包含一变量的整个内存页,也不是保存一个变量本身。本发明的用于细粒度延迟写拷贝装置所实现的写拷贝是"延迟的", 这意味着写拷贝的操作不是在C存储指令访问高速緩存时立即执行的,而 是存在一个延迟,即由所述版本切换模块102判断该高速緩存中被标记的 緩存块即将被换出时执行的。在Power体系结构中,处理器具有32KB-64KB的4路写穿透 (write-through )Ll数据高速緩存,以及2M - 4M的8路包含式(inclusive) L2高速緩存。Ll和L2的高速緩存块的大小是128B。根据本发明的实施例,所述标记需要写拷贝的存储指令访问的高速緩 存块可通过在该高速緩存块上添加一个标志来实现。图3示出了根据本发 明的实施例扩展的高速緩存块。如图所示,向每一个Ll和L2高速緩存块 添加了 一个标志(可称为A标志),该A标志指示该高速緩存块是否已被 C存储指令所访问。在本文中,其A标志净皮设置的高速緩存块被称为A块。 该A标志的硬件成本仅仅是一位。该实施例适合于仅有一个处理器线程使 用Ll和L2高速緩存的情况。根据本发明的另一实施例,对于程序中的写拷贝区域中的每一条存储 指令,除对高速緩存块进行上述标记(例如,设置A标志)外,还在该高 速緩存块上设置标识执行该存储指令的处理器线程的标志(可称为颜色标 志)。图4示出了根据本发明的该另一实施例的扩展的高速緩存块。如图所示,在该实施例中,多个处理器线程共享L2高速緩存。因此,在该L2高 速緩存的高速緩存块中,除了添加了如上所述的A标志外,还添加了颜色 标志(即所述第二标志),该颜色标志表示哪一个处理器线程访问了该高 速緩存块,并且可以是处理器线程的标识符。因此,该颜色标志可以用来 区分可能同时访问该高速緩存的多个处理器线程。返回图1,根据本发明的实施例,所述高速緩存控制器101还被配置 为响应于确定提交所述写拷贝,清除所述高速緩存中相应的被标记的所 有高速緩存块的标记。根据本发明的实施例,所述高速緩存控制器101还被配置为:响应于 确定回滚所述写拷贝,将所述高速緩存中相应的被标记的所有高速緩存块 无效,并将所述日志中存储的较低级存储器地址处的值返回到相应的较低 级存储器地址处。具体地,在处理器中(例如在Ll和L2高速緩存的控制器中)将添加 执行以下两个操作的硬件,这两个操作都应原子地执行 原子无效:将Ll和L2高速緩存中的所有A块(或属于某个处理器 线程即具有某个颜色标记的所有A块)无效。 原子清除将Ll和L2高速緩存中的所有A块(或属于某个处理 器线程即具有某个颜色标记的所有A块)的A标志清除。这样,当一个C存储指令访问高速緩存块时,A标志被设置。当写拷 贝区域结束因而写拷贝提交时,已由该写拷贝区域访问的每个A块的A标 志-故清除。此外,可将数据日志和地址日志中相应的记录丢弃,这可以通 过例如简单地使日志记录指针指向日志的开始来实现。当写拷贝区域被回 滚时,已由该写拷贝区域访问的每个A块被无效,并将日志中的原值返回 到原地址处。在Power体系结构中,由于L1数据高速緩存是透写式高速 緩存,因此存储操作总是访问L2高速緩存。Ll数据高速緩存中的A块来 自于命中L2高速緩存中的A块的读操作。在本发明的实施例中,由于不允许写拷贝区域嵌套,每个处理器线程 在任何时刻至多只能处于一个写拷贝区域中,因此高速緩存中具有A标志的高速緩存块的所述颜色标志标识了访问该高速緩存块的c存储指令所属的写拷贝区域。这样,对于实现了颜色标志的本发明的实施例,当提交或 回滚一写拷贝区域时,可根据高速緩存块中的颜色标志来清除相应的高速緩存块的A标志,或无效相应的高速緩存块。 一个典型的写拷贝的例子如下BEGIN画COWload x from address Astore y to address Bif ( condition ) {END-COW;J else {rollback;char * p = data—log—tail;char * q = addr—log—tail;while (p >= data—log—head) {将由p指向的数据转移到地址Aq;p -= 128; 〃假设高速緩存块大小为128Bq -= 4; 〃假设是32位系统,这样每个地址为4B从该例可见,在写拷贝区域结束时,由程序本身的逻辑来判断和确定 是需要回滚,还是提交。如果需要提交,则由处理器执行END-COW指令, 从而清除由该复制区域(即该处理器线程)所访问的所有A块的A标志。 如果程序确定需要回滚,则调用rollback指令,从而使得高速緩存中所有 的A块无效;此外,还用一个循环将数据日志中的数据复制回原内存地址。如图1所示,根据本发明的实施例,所述版本切换模块102中包^测模块103。所述预测模块不干预L2高速緩存的内部操作,因此不会增加 L2高速緩存的验证成本。所述预测模块可以有一个或多个。所述预测模块 用于预测将要从L2高速緩存中被换出的A块,并且当预测出将要从L2 高速緩存中被换出的A块时,预测才莫块向石更件数据预取部件发送命令,以 将该被预测的A块在较低存储器例如内存中的原值加载到版本切换模块 102的版^存器中。在本发明的其他实施例中,所述预测模块103也可以位于该版本切换 模块102之外,例如可以位于L2高速緩存控制器的掷出模块中。另外需 要强调的是,版本切换模块完全可以实现在目前处理器已经具有的数据预 ^f莫块内部,这和本发明的精神实质是一致的。根据本发明的一实施例,所述判断该高速緩存中被标记的高速緩存块 将被换出包括判断该高速緩存的高速緩存组中被标记的高速緩存块的数量 达到一阈值。例如,可以通过所述预测模块103使用以下任何一种模式来判断高速 緩存中被标记的高速緩存块将被换出1. 主动模式。在这种模式中,可存在多个预测模块103,每个预测模 块103负责L2高速緩存的一固定区域。预测模块103定期地遍历其自己 的固定区域内的高速緩存组,并计算所述高速緩存组中有多少A块。由于 预测模块103的推测性质,这种计算不必每次都很精确。容忍一定的不精 确性可减少石更件实现的复杂性。当一个高速緩存组内的A块的数量达到一 个阈值时,例如对于8路L2高速緩存,当一个高速緩存组内的A块的数 量达到6时,预测模块103可确定该高速緩存组中的高速緩存块将被换出。 此时,如果该高速緩存组内的第一高速緩存块(或者任一其他特定高速緩 存块)是A块,则预测模块103可选择该第一高速緩存块(或者该其他特 定高速緩存块)来进行版本切换,即将该高速緩存块在较低级存储器中的 原值保存起来;否则,预测模块103可随机地从该高速緩存组中选择一 A 块来进行版本切换。2. 被动才莫式。在这种模式中,预测模块103并不主动监视L2高速緩被添加到一高速緩存组,并且该高速 緩存组中的A块的数量达到一阈值例如6时,RC模块可通知预测模块103。 此时,如果该高速緩存组中的第一高速緩存块(或者任一其他特定高速緩 存块)是A块,则预测模块103可选择该第一高速緩存块(或者该其他特 定高速緩存块)来执行版本切换;否则,预测模块103可随机地从该高速 緩存组中选择一 A块来执行版本切换。被动模式的另外一种可能的实现是,在高速緩存从某一个组中选取需 要被替换的緩存块时,不是像传统方法那样只选择一个,而是选择两个或 更多,只要被选出的緩存块中至少有一个A块,就预测其将4皮替换。根据本发明的另 一实施例,所述预测该高速緩存中被标记的高速緩存 块将被换出包括判断该高速緩存的高速緩存组中的 一个或多个特定位置的 高速緩存块被标记。例如,可以通过所述预测模块103使用以下模式来判断高速緩存中被 标记的高速緩存块将被换出。3.简单模式。在这种模式中,每当高速緩存组中的特定一个高速緩存 块例如第一高速緩存块成为A块时,预测模块103或版本切换模块102确 定该高速緩存块将被换出,并立即对该A块执行版本切换。根据本发明的其他实施例,所述预测该高速緩存中被标记的高速緩存 块将被换出包括响应于所述高速緩存控制器换出该高速緩存中的高速緩 存块,判断该高速緩存块被标记。在这样的实施例中,可以没有所述预测模块103,而是每当高速緩存 控制器101换出高速緩存块时,判断该高速緩存块是否是A块。如果是A 块,则通知版本切换模块102进行版本切换。如果不是A块,则进行正常 的换出处理。才艮据本发明的实施例,如下所述,这种判断和通知可以由高 速緩存控制器101中的掷出模块执行。当然,在本发明的一些实施例中,可以既存在预测模块103,从而对 将被换出的A块进行事先的预测和版本切换,又在高速緩存控制器101换 出高速緩存块时,判断该高速緩存块是否是A块,并在判断该高速緩存块是A块时,通知版本切换模块102进行版本切换。如图1所示,根据本发明的实施例,所述版本切换模块102可以包含 版M沖器,用于存储来自预取部件的被预测的A块的原值。根据本发明的实施例,当来自预取部件的被预测的A块的原值到达版 本切换才莫块102的版本緩冲器时,版本切换模块102立即开始版本切换过 程。该版本切换过程可包括以下步骤版本切换模块102清除相应的A块的A标志。版本切换模块102将版本緩冲器中存储的所预测的A块的原值及其内 存地址写回到L2高速緩存中的新的地址。所述原值(128B)可被写入到 数据日志空间中顺序分配的地址;而所述内存地址(8B ) 4皮视为正常数据, 可被写入到地址日志空间中顺序分配的地址。这种地址改变是版本切换才莫 块102的重要特征,它帮助实现了从延迟(lazy)版本管理到立即(eager) 版本管理的切换。也就是说,才艮据本发明的实施例,将与所述判断将净皮换出的高速緩存 块对应的较低级存储器地址处的值以及该较低存储器地址存储在所述高速 緩存中与该较低存储器地址不同的地址处。然后,将版本緩冲器中的相应条目无效。该版本切换过程可以是非常 高效的,因为它可以在原值被写入L2高速緩存之前完成。原值及其地址 可最终由RC模块写入到L2高速緩存。由于它们是普通的存储操作,因 此,不对它们i殳置A标志。此外,当A块被高速緩存控制器lOl中的掷出模块换出时,掷出模块 可通过一消息通知版本切换才莫块102,该消息包含被换出的高速緩存块的 地址及所属的处理器线程标识。然后,版本切换模块102可使用该地址查 找版本緩沖器中的条目。如果找到,则该A块被正常掷出;否则,掷出机 等待,直到该A块地址处的原值祐:取到版^^冲器。应注意的是,那些A 标志未被设置的L2高速緩存块可以被掷出机正常换出,而不必通知版本 切换模块102。在通常情况下,溢出的高速緩存组(即当其全部高速緩存块为A块时继续有A块进入)只是全部高速緩存组的一小部分,并且高速緩存组中的 A块是逐渐地而不是突然地增加的。此外,A块换出应当是不经常发生的, 因为L2高速緩存命中率会很高。因此,预测模块可以很好地工作,并提 前避免大多数A块替换。根据本发明的一些实施例,所述高速緩存控制器101还被配置为只 有当所述高速緩存的 一 高速緩存组中的所有高速緩存块都净皮标记时,才将 所述高速緩存的该高速緩存组中被标记的高速緩存块换出。具体地说,在 本发明的该实施例中,对L2高速緩存中的换出逻辑进行了相应改变。除 非L2高速緩存的相同高速緩存组中的所有高速緩存块都是A块,该高速 緩存组中的A块不能被换出。当一高速緩存组中A块必须被换出时(此时, 该高速緩存组中的所有行为A块),可选择该高速緩存组中的特定高速緩 存块,例如第一高速緩存块。应注意的是,Ll数据高速緩存并不受上述限 制。Ll数据高速緩存中的A块可以被自由换出。在本发明的另一些实施例中,可以没有上述限制。也就是说,高速緩 存组中的A块可以与其他普通块一样被选择换出,只是在被换出时,判断 其是否是A块。如果是A块,则通知版本切换模块进行版本切换处理。以上针对Power体系结构中的L2高速緩存描述了本发明的用于细粒 度延迟写拷贝的装置的示例性实现,应指出的是,上述描述仅为示例,而 不是对本发明的限制。在本发明的用于细粒度延迟写拷贝的装置可以具有 与以上描述相比更多、更少或不同的模块,且各模块之间的连接和包含关 系可以与所描述的不同。例如,在本发明的一些实施例中,所述版本切换 模块102可以没有所述版本緩冲器,而是直接将被预测的A块的原值及其 地址;^日志中。在本发明的一些实施例中,可以没有所述石更件数据预取 部件,而是由所述版本切换才莫块102执行被预测的A块的原值及其地址的 预取,等等。所述这些变化都处于本发明的范围之内。另外,上述各才莫块 的名称仅为叙述方便而定,因此不是对本发明的限制。下面参照附图描述才艮据本发明的实施例的用于细粒度延迟写拷贝的方 法。该方法可以由以上才艮据本发明的实施例的用于细粒度延迟写拷贝的装置来实现,也可以由其他装置来实现。为简明起见,在以下描述中省略了 部分与以上重复的细节。因此,可参见以上描述来更具体地了解本发明的 用于细粒度延迟写拷贝的方法的各步骤。图5示出了根据本发明的实施例的用于细粒度延迟写拷贝的方法。如 图所示,该方法包括以下步骤在步骤501,响应于需要写拷贝的存储指令访问处理器的高速緩存中 的高速緩存块,标记该高速緩存块。根据本发明的实施例,响应于需要写拷贝的存储指令访问处理器的高 速緩存中的高速緩存块,还在该高速緩存块上设置标识执行该存储指令的 处理器线程的标志。在步骤502,响应于判断该高速緩存中被标记的高速緩存块将被换出, 将与所述判断将被换出的高速緩存块对应的较低级存储器地址处的值以及 该较低级存储器地址存储在日志中,并将该高速緩存块的所述标记清除。根据本发明的实施例,所述判断该高速緩存中被标记的高速緩存块将 被换出包括判断该高速緩存的高速緩存组中被标记的高速緩存块的数量 达到阈值。根据本发明的实施例,所述判断该高速緩存中4皮标记的高速緩存块将 被换出包括判断该高速緩存的高速緩存组中的特定高速緩存块被标记。根据本发明的实施例,所述判断该高速緩存中被标记的高速緩存块将 被换出包括响应于换出该高速緩存中的高速緩存块,判断该高速緩存块 ,皮标记,并通知该高速緩存块将4皮换出。根据本发明的实施例,只有当所述高速緩存的一高速緩存组中的所有 高速緩存块都被标记时,所述高速緩存的该高速緩存组中的被标记的高速 緩存块才能被换出。根据本发明的实施例,所述日志存在于所述高速緩存和所述较低级存 储器中,并且所述将所述原始值及地址存储在日志中包括将与所述原始值 及地址存储在所述高速緩存中与该地址不同的地址处。在步骤503,响应于确定提交所述写拷贝区域,清除所述高速緩存中被标记的所有高速緩存块的所述标记。在步骤504,响应于确定回滚所述写拷贝区域,将所述高速緩存中相 应的被标记的所有高速緩存块无效,并将所述日志中存储的较低级存储器 地址处的值返回到相应的较低级存储器地址处。以上描述了才艮据本发明的实施例的用于懒惰细粒度写拷贝的方法,应 指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他 实施例中,该方法可具有更多、更少或不同的步骤。此外, 一些步骤之间 的顺序可改变或可以并行执行, 一些步骤可以划分为多个更小的步骤,或 合并为一个更大的步骤。例如,上述步骤2和3之间以及步骤2和4之间 可以是任何顺序或并行执行,所述步骤2可以划分为多个步骤,等等。所 有这些变化都处在本发明的范围之内。尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那 些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发 明的精神和范围。
权利要求
1.一种用于细粒度延迟写拷贝的方法,包括响应于需要写拷贝的存储指令访问处理器的高速缓存中的高速缓存块,标记所访问的高速缓存块;以及响应于判断高速缓存中被标记的高速缓存块即将被换出,从较低级存储器中读取对应地址上的原始值,并将该原始值及该地址存储在日志中,以及清除所述即将被换出的高速缓存块的标记。
2. 才艮据权利要求l的方法,还包括响应于确定提交所述写拷贝,清除所述高速緩存中相应的被标记的所 有高速緩存块的标记。
3. 才艮据权利要求l的方法,还包括响应于确定回滚所述写拷贝,将所述高速緩存中相应的被标记的所有 高速緩存块无效,并将所述日志中存储的较低级存储器地址处的值返回到 相应的较低级存储器地址处。
4. 根据权利要求1的方法,其中所述判断高速緩存中被标记的高速 緩存块即将^L换出包括判断该高速緩存的高速緩存组中被标记的高速緩存块的数量达到阈值。
5. 根据权利要求1的方法,其中所述判断高速緩存中被标记的高速 緩存块即将净皮换出包括判断该高速緩存的高速緩存组中的一个或多个特定位置的高速緩存块 被标记。
6. 根据权利要求1的方法,其中所述判断高速緩存中被标记的高速 緩存块即将被换出包括每当从高速緩存组中选择要被换出的高速緩存块时,选择多于一个要 被换出的高速緩存块;以及判断所述被选择的高速緩存块中包括被标记的高速緩存块。
7. 根据权利要求1的方法,其中所述判断高速緩存中被标记的高速 緩存块即将被换出包括响应于换出该高速緩存中的高速緩存块,判断该高速緩存块被标记。
8. 根据权利要求1的方法,其中只有当所述高速緩存的一高速緩存 组中的所有高速緩存块都被标记时,所述高速緩存的该高速緩存组中的被 标记的高速緩存块才能被换出。
9. 根据权利要求1的方法,其中所a较低级存储器中读取对应地 址上的原始值是借助于处理器中的数据预取装置来实现的。
10. 根据权利要求l的方法,其中所述日志存在于所述高速緩存和所 述较低级存储器中,并且将所述原始值及地址存储在日志中包括将所述原 始值及地址存储在所述高速緩存中与该地址不同的地址上。
11. 根据权利要求l的方法,还包括响应于需要写拷贝的存储指令访问处理器的高速緩存中的高速緩存 块,标记该高速緩存块以标识执行该存储指令的处理器线程。
12. —种用于细粒度延迟写拷贝的装置,包括 高速緩存控制器,被配置为响应于需要写拷贝的存储指令访问处理器的高速緩存中的高速緩存块,标记所访问的高速緩存块;以及版本切换模块,被配置为响应于判断高速緩存中被标记的高速緩存块 即将被换出,从较低级存储器中读取对应地址上的原始值,并将该原始值 及该地址存储在日志中,以及清除所述即将,皮换出的高速緩存块的标记。
13. 根据权利要求12的装置,其中,所述高速緩存控制器还被配置为响应于确定提交所述写拷贝,清除所述高速緩存中相应的被标记的所 有高速緩存块的标记。
14. 根据权利要求12的装置,其中,所述高速緩存控制器还被配置为响应于确定回滚所述写拷贝,将所述高速緩存中相应的被标记的所有 高速緩存块无效,并将所述日志中存储的较低级存储器地址处的值返回到相应的较低级存储器地址处。
15. 根据权利要求12的装置,其中所述判断高速緩存中被标记的高 速緩存块即将被换出包括判断该高速緩存的高速緩存组中被标记的高速緩存块的数量达到阈值。
16. 根据权利要求12的装置,其中所述判断高速緩存中被标记的高 速緩存块即将被换出包括判断该高速緩存的高速緩存组中的一个或多个特定位置的高速緩存块被标记o
17. 根据权利要求12的装置,其中所述判断高速緩存中被标记的高 速緩存块即将被换出包括每当从高速緩存组中选择要被换出的高速緩存块时,选择多于一个要 被换出的高速緩存块;以及判断所述被选择的高速緩存块中包括被标记的高速緩存块。
18. 根据权利要求12的装置,其中所述判断高速緩存中被标记的高 速緩存块即将被换出包括响应于所述高速緩存控制器换出该高速緩存中的高速緩存块,判断该 高速緩存块被标记。
19. 根据权利要求12的装置,其中所述高速緩存控制器还被配置为 只有当所述高速緩存的 一 高速緩存组中的所有高速緩存块都被标记时,才将所述高速緩存的该高速緩存组中的被标记的高速緩存块换出。
20. 根据权利要求12的装置,其中所a较低级存储器中读取对应 地址上的原始值是借助于处理器中的数据预取装置来实现的。
21. 根据权利要求12的装置,其中所述日志存在于所述高速緩存和 所述较低级存储器中,并且将所述原始值及地址存储在日志中包括将所述 原始值及地址存储在所述高速緩存中与该较^^储器地址不同的地址上。
22. 根据权利要求12的装置,其中所述高速緩存控制器还被配置为 响应于需要写拷贝的存储指令访问高速緩存中的高速緩存块,标记该高速緩存块以标识执行该存储指令的处理器线程。
全文摘要
提供了一种用于细粒度延迟写拷贝的方法和装置,该装置包括高速缓存控制器,被配置响应于需要写拷贝的存储指令访问处理器的高速缓存中的高速缓存块,标记所访问的高速缓存块;以及版本切换模块,被配置为响应于判断高速缓存中被标记的高速缓存块即将被换出,从较低级存储器中读取对应地址上的原始值,并将该原始值及该地址存储在日志中,以及清除所述即将被换出的高速缓存块的标记。本发明的写拷贝是细粒度的和延迟执行的,从而节省了资源和时间等开销,并具有很低的硬件复杂性和成本。
文档编号G06F9/46GK101615133SQ20081013193
公开日2009年12月30日 申请日期2008年6月27日 优先权日2008年6月27日
发明者锐 侯, 沈晓卫, 鲲 王, 王华勇 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1