首页> 中国专利> 防止硬件事务存储器系统非故意丢失事务数据

防止硬件事务存储器系统非故意丢失事务数据

摘要

揭示用于在硬件事务存储器系统中实现推测读取数据(speculatively read data)的提早释放的方法及设备。一处理核心包含一硬件事务存储器系统,该系统经配置成接收指定单字的提早释放指示,该指定单字属于在一活动事务的一读集中的一单字群组。该提早释放指示包含由该读集移除该指定单字的一请求。回应该提早释放请求,该处理核心只在确定该群组中于该活动事务期间除了该指定单字以外没有单字被推测读取后,由该读集移除该单字群组。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-24

    授权

    授权

  • 2013-12-11

    实质审查的生效 IPC(主分类):G06F9/52 申请日:20111109

    实质审查的生效

  • 2013-09-11

    公开

    公开

说明书

背景技术

硬件事务存储器(Hardware Transactional Memory;简称HTM)为 计算机架构中用于支持并行程序设计的机构。用HTM,程序设计员可简 单地宣告一指令群组当作单一推测区域(speculative region)的一部 分以及随后HTM硬件可保证在该区域中的指令被当作单一原子及孤立 事务来执行。原子性意指对于在系统的一或更多其它处理核心上执行 的所有其它并发线程,事务的所有指令都当作单一原子区块来执行。 孤立意谓事务的中间结果者不暴露于系统的其余部分直到事务完成。 HTM系统可允许事务并行运行,只要它们不冲突。两个事务在访问(access) 同一个存储器区(例如,8字节单字地址)以及两个事务中的任一写到该 存储器区(例如,可寻址8字节单字)时可能冲突。

为了侦测执行线程之间的数据冲突,HTM在事务执行尝试期间可持 续追踪那些存储器区已被推测读取及/或写入。处理器为了侦测数据冲 突而追踪的存储器区可称为事务的读集(read set)(在已被读取时请求 处理器追踪)及写集(write set)(在已被修改时请求处理器追踪)。读 集及写集经常缓冲于推测缓冲区中,推测缓冲区为可用高速缓存、载 入/储存伫列、两者及/或其它硬件组件实现的逻辑实体。

由于HTM系统实作成硬件,因此用来追踪读集及写集的资源有限, 已有各种技术用来有效地利用HTM资源。有一套技术是单字群组化 (word grouping),藉此HTM可使读集及/或写集中多个可寻址单字组 成群组以及一起追踪它们。例如,回应侦测到给定单字在活动事务中 的推测访问,HTM可标示该单字所驻留的整个高速缓存线(其保存多个 不同的可寻址单字)作为事务的读集或写集。通过设定与高速缓存线关 连的旗标,可完成标示高速缓存线。因此,该HTM把高速缓存线中的 所有单字加到读集或写集,即使群组中只有一个单字被推测访问。

用于有效地利用HTM资源的另一技术是提早释放(early  release)。此技术允许程序设计员直接释放活动事务的读集的可寻址 单字(例如,用直接RELEASE指令)。例如,如果给定事务在超过事务 的某一点时不依靠给定读取值,程序设计员可直接由读集移除读出该 数值的存储器地址。使用这种技术,HTM设计者已能够增加系统的性能 以及允许程序设计员用HTM表达及执行更大且更复杂的原子存储器事 务(atomic memory transaction)。

发明内容

揭示用于在硬件事务存储器系统中实现推测读取数据的提早释放 的方法及设备。一处理核心包含一硬件事务存储器系统,该系统经配 置成接收一指定单字(specified word)的一提早释放指示(例如,提早 释放指令),该指定单字属于在一活动事务的一读集中的一单字群组。 该提早释放指示包含由该读集移除该指定单字的一请求。回应该提早 释放指示,该处理核心只在确定该群组中于该活动事务期间除了该指 定单字以外没有单字被推测读取后,由该读集移除该单字群组。

在一些具体实施例中,该单字群组可用该硬件事务存储器系统一 起追踪,藉此如果在活动事务期间该单字群组中有任何一个被推测读 取的话,把群组中的所有单字加到活动事务的读集。例如,在一些具 体实施例中,该单字群组可对应至处理核心的一高速缓存的单一高速 缓存线以及通过设定与高速缓存线关连的旗标而一起加到读集。在其 它具体实施例中,该群组可用在布隆过滤器(Bloom filter)中的索引 追踪以及通过设定在该布隆过滤器索引处的旗标而加到读集。

附图说明

图1为根据一些具体实施例图示配置成实现有单字群组化及提早 释放机能的硬件事务存储器的系统的方块图;

图2为根据一些具体实施例图示代码推测区域的组成部分的方块 图;

图3为根据一些具体实施例图示以避免非故意数据释放的方式使 用单字群组化及提早释放技术来执行原子存储器事务的高阶方法的流 程图;

图4a为根据一些具体实施例图示基于高速缓存的推测缓冲区,其 经装备成支持单字群组化及提早释放机构的正确共存的方块图;

图4b为根据一些具体实施例图示基于布隆过滤器的推测缓冲区, 其经装备成支持单字群组化及提早释放机构的正确共存的方块图;

图5为根据一些具体实施例图示用于回应确定给定高速缓存线中 已有多个单字被活动事务推测读取,以避免提早释放操作的方法的流 程图;

图6为根据一些具体实施例图示配置成支持单字群组化及提早释 放的HTM的组件的方块图;以及

图7为根据不同的具体实施例图示一计算机系统,其经配置成实 现具有如本文所述的单字群组化及提早释放机构的硬件事务存储器的 方块图。

具体实施方式

本专利说明书包含“一具体实施例”或“具体实施例”的参考。 文中片语“在一具体实施例中”或“在具体实施例中”不一定指称同 一个具体实施例。可用与本揭示内容符合的任何适当方式来组合特定 的特征、结构或特性。

术语(terminology)。以下段落提供出现于本揭示内容(包括随附 权利要求书)的用语的定义及/或背景:

“包括(comprising)”,此为开放性用语。如用在随附权利要求 书,此用语不排除额外的结构或步骤。如果一权利要求陈述如下:“一 种设备,其包含:一或更多处理器单元....”,该权利要求不排除该 设备包含附加组件(例如,网络接口单元、图形电路、等等)。

“经配置成(configured to)”。可描述或主张各种单元、电路或 其它组件“经配置成”执行一任务或数个任务。在此背景下,“经配 置成”是用来表明有以下意思的结构:该单元/电路/组件包含在操作 期间执行任务(或数个)的结构(例如,电路)。同样地,可说该单元/电 路/组件经配置成执行该任务,即使指定单元/电路/组件目前不操作 (例如,未开启)。用到“经配置成”语句的单元/电路/组件包括硬件, 例如,电路、储存可执行以实现操作的程序指令的存储器、等等。单 元/电路/组件“经配置成”执行一或更多任务的叙述对于该单元/电 路/组件明确表示不打算援引35U.S.C.§112、第六段落的条款。另外, “经配置成”可包括由软件及/或固件(例如,执行软件的FPGA或通用 处理器)操纵以用能够完成相关任务(或数个)的方式操作的通用结构 (例如,通用电路)。“经配置成”也可包括修改制程(例如,半导体制 造设施)以制造适合实现或执行一或更多任务的装置(例如,集成电 路)。

如本文所使用的“第一(first)”、“第二(second)”等类的用语 都用作名词前的标签,而没有任何一种排序含意(例如,空间、时间、 逻辑等等)。例如,在有8个处理组件或核心的处理器中,用语“第一” 及“第二”处理组件可用来指称8个处理组件中的任何两个。换言之, “第一”及“第二”处理组件不限于逻辑处理组件0及1。

如本文所使用的“基于(based on)”的用语用来描述影响判断的 一或更多因子。此用语不排除可能影响判断的附加因子。也就是,判 断可单独基于所述因子,或至少部分基于所述因子。考虑到“基于B 来判断A”的片语。尽管B可为影响判断A的因子,然而此片语不排除 基于C来判断A。在其它情况下,可单独基于B来判断A。

HTM系统用硬件实现,因此用来追踪读集及写集的资源有限。结果, 各种技术已用来有效地利用这些资源。例如,此类技术包含追踪作为 群组(也就是,单字群组化)的可寻址单字,允许程序释放读集的指定 地址(也就是,提早释放),以及其它技术。在单字群组化的情形下, 如果群组中有任何单字被访问,HTM可把整个群组(例如,高速缓存线) 放入读集或写集。随后,HTM可侦测在整个群组的粒度(granularity) 上的冲突而不是每个单字的粒度。例如,每条高速缓存线可包含或关 连指示它是否包含被推测访问的数据的旗标。提早释放可允许程序设 计员明确地由活动事务的读集移除指定单字,例如通过明确地执行 RELEASE指令(如本文所使用的,事务若是已初始化但是尚未提交时是 活动的)。在以上的实施例中,传统提早释放系统通过回复(unset)高 速缓存线上的旗标,可释放给定单字,从而由读集移除高速缓存线中 的所有单字。

不过,传统系统在实现单字群组化及提早释放优化时无法保证正 确性。例如,如果活动事务读取及依靠刚好在相同群组中的两个不同 可寻址单字,则传统单字群组化系统把这两个单字(及群组中的其它所 有单字)放入事务的读集。不过,如果提早释放机构随后用来由活动事 务的读集移除这两个单字中的一个,则传统系统会释放整个单字群组, 包括其它单字。不过,在这种情况下,释放整个单字群组不是程序设 计员的原意。反而,程序设计员只想要释放指定单字。因此,传统HTM 可能侦测不到与其它单字有关的后续数据冲突以及可能导致不正确的 程序行为(例如,违反原子性)。此现象在此被称为非故意数据释放 (unintentional data release)。

在一些具体实施例中,可将HTM配置成实现单字群组化及提早释 放技术的正确共存。此一HTM可追踪给定群组中的多个单字是否已被 活动事务读取以及在确定群组中没有其它单字被该事务访问时决定给 定群组中的单字的任何提早释放。因此,HTM可避免非故意地释放活动 事务的读集的一或更多单字。

图1为根据一些具体实施例图示配置成实现有单字群组化及提早 释放机能的硬件事务存储器的系统的方块图。根据图示具体实施例, 系统100包含多个处理器,包含处理器105及其它处理器130。如本文 所使用的,用语处理器为指配置成执行计算机程序指令的处理核心。 因此,用语处理器可指称在专属芯片或包含一或更多其它处理核心的 芯片(例如,芯片上多处理器)上的实体或逻辑(例如,对称多线程)处 理核心。在后者而言,处理器105及130可存在于相同的芯片上以及 用芯片上网络连接而不是系统总线,例如150。虽然在此用一般用语 “处理器”来描述所述具体实施例,用语本身的意思不是要限制具体 实施例于处理核心的特定配置或它们在一或更多芯片上的分布。

如图1所示,处理器105包含数个HTM机构110,其包含配置成侦 测及/或执行当作孤立原子事务的代码推测区域的一或更多硬件单元。 这些HTM机构可包含处理器用来维持正确程序行为同时进行单字群组 化及提早释放操作的各种组件。

如图示具体实施例所示,处理器105也可包含可实作成为微架构 寄存器档案的任意多个寄存器120,以及一或更多本地数据高速缓存 125(例如,L1高速缓存)。数据高速缓存125可高速缓存来自共享存储 器140的数据供处理器105快速访问。在数据高速缓存(或数个)125 包含多个高速缓存的具体实施例中,所述高速缓存可能被配置成可用 作高速缓存阶层。处理器105及/或数据高速缓存125可包含配置成与 其它处理器(例如,130)通讯的高速缓存一致性机构以在有个别私有高 速缓存被不同处理器使用下维持存储器的一致性。在处理器105包含 多个处理核心的具体实施例中,不同的处理核心可共享高速缓存125 中的一或更多。

在一些具体实施例中,数据高速缓存125及/或共享高速缓存135 可配置成为多个区块(也就是,高速缓存线),各个可用来储存由来自 共享存储器140的顺序寻址单字(例如,8字节单字)组成的区块。在一 些具体实施例中,不同的指令可寻址所述单字中的一或更多。例如, 提早释放指令可寻址数据高速缓存125中的给定单字以及指示将是释 放活动事务的读集。在不同的具体实施例中,可根据用于处理缓冲数 据的溢出的不同集合关连性(set-associativity)及/或逐出政策 (eviction policy)来管理数据高速缓存125及/或共享高速缓存135。

根据图示,处理器105及130经由总线150相互连接,连接至共 享存储器140及任意多个共享数据高速缓存135。如本文所使用的,用 语存储器阶层为指系统的共享存储器以及给定处理器用来储存数据的 高速缓存序列(也就是,高速缓存阶层)。

在一些具体实施例中,处理器105及130可用总线150来收发讯 息给对方,例如作为高速缓存一致性协定(例如,MESI,MOESI)的一部 分的高速缓存一致性讯息。在此类具体实施例中,多个处理器,例如 105及130,可维持高速缓存于各自高速缓存的共享存储器数据的一致 性。

在一些具体实施例中,处理器105可实现推测数据缓冲器以支持 HTM事务。在不同的具体实施例中,可用数据高速缓存125,布隆过滤 器单元及/或其它机构完全或部分实现此一缓冲器。例如,在一些具体 实施例中,HTM机构110可使不同的字段(field)与数据高速缓存125 中的各线关连以及使用所述字段以指示该线中的任何单字是否在活动 事务的读集或写集中。

在其它具体实施例中,HTM机构110可用布隆过滤器单元追踪读集 及/或写集。在此类具体实施例中,当单字推测访问自事务内时,HTM 系统可使单字的地址映像至专用阵列(例如,读集布隆过滤器)的索引, 例如通过应用哈希函数(hash function)于该地址以导出该索引。然后, 该HTM可设定导出索引的旗标以指示在给定地址的单字已被推测读取 (或在写集布隆过滤器的情形下,被写入)。尽管在此描述用单一阵列 及哈希函数实现的布隆过滤器,然而本技艺一般技术人员会明白,在 不同的具体实施例中,布隆过滤器可用多个哈希函数及/或阵列实现。 读者应注意用布隆过滤器追踪读集是单字群组化的形式之一,因为不 同单字的地址可各自映像至相同的布隆过滤器索引。

图2为根据一些具体实施例图示代码推测区域的组成部分的方块 图。根据图示具体实施例,推测区域200以事务开始指示205开始, 接着是一或更多指令的事务主体210,以及在事务提交指示215结束。

在一些具体实施例中,事务开始指示可包含指示推测区域的开始 的专用指令。例如,开始指示205可包含指示推测区域的开始的 SPECULATE指令。在其它具体实施例中,该开始指示可对应至可指示代 码推测区域的通用指令,例如锁定获取。在事务开始后但是在提交前 (如在215),可说该事务是活动的。应注意,由于冲突及/或其它放弃 条件,在最终成功之前,活动事务可再尝试多次。

事务主体210可包含可含有一或更多存储器操作的一或更多程序 指令。在一些具体实施例中,事务主体210可包含存储器操作中指定 为事务的一部分的第一子集与存储器操作中不指定为事务的一部分的 第二子集。在这种情形下,可将HTM配置成事务上只执行指定为事务 的一部分的指令以及对于主体内的其它指令不提供原子性或隔离保 证。在这种执行中,可追踪因执行推测指令而被访问的存储器地址适 时当作活动事务的读集或写集的一部分。

如图示具体实施例所示,推测区域200可包含指示由开始指示205 开始的推测区域结束的提交指示(例如,215)。在一些具体实施例中, 提交指示可包含专用COMMIT指令。在其它具体实施例中,215的提交 指示可对应至通用指令,例如释放较早获取(例如,在开始指示205时) 的锁定。

图3为根据一些具体实施例图示以避免非故意数据释放的方式使 用单字群组化及提早释放技术来执行原子存储器事务的高阶方法的流 程图。图3的方法可用包含HTM机构的处理器(例如,处理器105)执行。

根据图示具体实施例,方法300在处理器进入推测执行模式时开 始,如在步骤305。如上述,该处理器可回应执行指示代码事务区域的 开始的SPECULATE指令,以进入此模式。

作为事务的一部分,该处理器可从共享存储器推测载入单字,如 在步骤310。此单字可直接用载入指令载入或间接作为执行某一指令的 一部分载入。由于从事务内推测读取数据,该处理器把推测载入单字 (及其整个群组)加到事务的读集,如在步骤315。在不同的具体实施例 中,把单字群组加到读集的步骤可包括设定该单字所载入的高速缓存 线的旗标。这可有效地把高速缓存线(也就是,群组)的所有其它单字 加到读集。

在其它具体实施例中,在步骤315把群组加到读集的步骤可包括: 在对应至单字自其推测载入的地址的索引处,设定布隆过滤器中的一 比特。例如,在步骤315,该HTM可通过应用哈希函数于推测载入单字 的地址来导出索引。不过,通过在步骤315设定在导出索引处的比特, 该系统实质把地址杂凑至该索引值的每个单字加到读集。因此,即使 只有一个地址实际被推测读取,设定布隆过滤器中的一比特实质上是 把单字群组加到正被HTM追踪的读集。

根据图示具体实施例,该处理器随后可侦测RELEASE指令,其指 定由读集释出的单字,如以“是”离开步骤320所示。就此情形而言, 该HTM可确定指定单字所属的群组(例如,高速缓存线、布隆过滤器索 引等等)以及判断群组中是否有一个以上的单字被推测读取,如在步骤 325。如以下所述,该HTM可做此判断。

如果群组中要释放的指定单字为唯一被推测读取的单字,如以 “否”离开步骤325所示,则该HTM可由读集移除RELEASE所指定的 单字,如在步骤330。在不同的具体实施例中,移除RELEASE所指定的 单字可包括回复与推测读取单字及/或其群组关连的旗标。

不过,如果该HTM判断指定单字的群组在活动事务中有多个单字 被推测读取,如以“是”离开步骤325所示,则该HTM不从该读集移 除指定单字。读者应注意,在一些具体实施例中,如果群组中有多个 单字被推测读取,但是每个单字在读取群组的下一个单字之前已成功 地由该事务读集释出,则步骤325的决策会决定为否。例如,在这种 具体实施例中,如果群组的第一单字被读取然后释出,在此之后释放 群组中被读取的第二单字,则释放第二单字的尝试(如在步骤320)在步 骤325会产生否的决定。

一旦单字由读集释出,该单字不再造成事务的数据冲突。也就是, 如果另一线程写入释出单字的地址,这不一定会触发事务放弃。

根据图示具体实施例,随着事务继续,如果侦测到放弃条件(如在 步骤335),则该HTM可放弃事务尝试(如在步骤340)以及再尝试该事 务(如由340至310的回馈回路所示)。在一些具体实施例中,再尝试 该事务的步骤可包括发出直接重新开始指令。放弃该事务的步骤可包 括移除读集及写集的所有单字,退返(rolling back)及/或丢弃该事务 尝试所尝试的所有存储器修改,修改指向事务区域的起点的指令指针, 及/或其它实现特定步骤(implementation-specific step)。

当事务区域包含更多尚未执行的指令时,如以“是”离开步骤345 所示,该处理器继续执行。当过程控制到达事务区域的尾端时,如以 “否”离开步骤345所示,该HTM可提交事务的结果,如在步骤350。 在350提交结果的步骤可包括把该事务的结果(例如,写集中的数值) 清理(flush)到存储器,这在不同具体实施例可用不同的方式完成(例 如,重做(redo)与取消(undo)的模式)。

根据一些具体实施例,各种旗标可加到推测缓冲机构使得该处理 器可追踪给定群组中是否有多个单字被推测读取。图4a及图4b呈现 两个推测缓冲机构的具体实施例各自包括用于此目的的旗标。

图4a为根据一些具体实施例图示基于高速缓存的推测缓冲区,其 经装备成可支持单字群组化及提早释放机构的正确共存的方块图。在 一些具体实施例中,图4a的数据高速缓存400可对应至私有L1数据 高速缓存,例如图1的数据高速缓存125。

在图示具体实施例中,数据高速缓存400包含多条高速缓存线, 例如高速缓存线405。每条线可用来会储存由来自给定存储器区域的数 据的多个单字组成的序列。例如,高速缓存线405的数据425可包含 64或128个字节的储存空间。因此,它可用来储存来自存储器的8或 16个可寻址8字节单字。例如,如果数据425长64个字节,则共享存 储器可分成64个字节区块(也就是,单字群组)以及回应读取区块中的 任何单字,该系统可复制整个区块于数据高速缓存400的一线内(例如, 至高速缓存线405中的数据425)。该线可加标记(例如,用地址标记 (address tag)410)以指示那个存储器区块目前正储存于该高速缓存线 中。

如图4a所示,高速缓存线405也可包含可用来维持被其它处理器 高速缓存的数据的一致性的各种高速缓存一致性字段415,以及推测缓 冲区字段,例如430及435。例如,在一些具体实施例中,可设定SW 字段430以指示425中至少有一些数据已被活动事务推测写入。同样, SR字段435可用来指示425中至少有一些数据已被活动事务推测读取。 因此,该HTM在侦测数据冲突时可利用这些字段。

根据图示具体实施例,高速缓存线405也包含UL字段440与FA 字段445。在一些具体实施例中,HTM可用这些字段(如在图3的步骤 325)来判断高速缓存线(例如,数据425)中是否有一个以上的单字已被 推测读取,作为活动事务的一部分。

在一些具体实施例中,FA字段445可用来储存高速缓存线405(也 就是,数据425)中在活动事务期间首先被推测读取的单字的指示。在 不同的具体实施例中,此指示可为该特定单字的地址,对应至该单字 (例如,“区块中的第5个单字”)的高速缓存线的索引,或使第一推 测读取单字与其它有独一区别的另一识别符。例如,在一些具体实施 例中,如果高速缓存线405有64字节宽(也就是,保存8个可独一寻 址8字节单字),则FA字段445可包含3个比特,它们可用来指示8 个独一索引。因此,FA字段的数值可识别储存于高速缓存线的8个单 字中那一个首先被推测读取。

在一些具体实施例中,用于把单字加到读集的逻辑可包括判断SR 字段435是否已经被设定,若为否,设定SR字段435为指示高速缓存 线在事务读集中的数值,以及设定FA字段445为指示该单字的数值。 在一些具体实施例中,当SR字段被清除时,FA及/或UL字段也可能被 清除。

在一些具体实施例中,UL字段440可用来指示高速缓存线405中 是否有多个单字已被活动事务推测读取。例如,用于把单字加到读集 的逻辑可包括判断SR字段435是否已经被设定,若为是的话,判断FA 字段是否指示该单字。若为否,则该单字不是群组中要加到读集的第 一个单字,以及处理器可设定UL字段440为指示该单字的数值。在一 些具体实施例中,UL字段440可包含一个比特,可设定或回复它以指 示读集中是否有多个单字。因此,该HTM可用UL及FA字段的组合来 追踪及判断给定高速缓存线(也就是,单字群组)中是否有多个单字已 被活动事务推测读取。

图5为根据一些具体实施例图示用于回应确定给定高速缓存线中 已有多个单字被活动事务推测读取,以避免提早释放操作的方法的流 程图。支持如本文所述的提早释放及单字群组化的处理器可执行方法 500。

根据图示具体实施例,方法500在处理器进入推测执行模式时开 始,如在步骤505。然后,作为事务的一部分,该处理器推测读取给定 单字,如在步骤510。回应推测读取单字,存储器子系统可复制有该单 字在其中的区块至高速缓存线,如果它已不在那里的话。此外,该HTM 把该高速缓存线加到事务的读集,如在步骤515。在一些具体实施例中, 把该高速缓存线加到读集的步骤可包括设定高速缓存线的SR比特从而 有效地把储存于高速缓存线中的整个区块加到读集。

在把高速缓存线加到事务读集后,如在步骤515,或作为此步骤的 一部分,该HTM可设定FA旗标为指示给定单字的数值,如在步骤520。 例如,如果在步骤510读取的单字根据地址顺序为区块中第三个单字, 则在步骤520,可设定FA旗标为010的二元值,其指示根据以0开始 的索引方案(0-indexing scheme)的第三索引。可能有各种其它识别符 方案。

根据图示具体实施例,在推测读取给定单字(510)及把高速缓存线 加到读集(515)后,该处理器由同一处推测读取另一单字,如在步骤 525。回应处理器读取该另一单字,该HTM确定包含该单字的高速缓存 线的SR字段已经被设定及回应,读取高速缓存线的FA字段(如在步骤 530)以判断该另一单字是否与高速缓存线中被推测读取的第一个单字 相同。例如,如果FA字段指示给定单字的索引在区块内,该HTM可判 断该另一单字是否有相同的索引。如果所述索引不同(如在步骤530), 则给定单字与该另一单字不相同。

回应确定该另一推测读取单字与在步骤510读取的不同,该HTM 设定高速缓存线的UL旗标,如在步骤535。设定UL旗标为指示在当前 事务内高速缓存线中已有多个单字被推测读取。如果回应想要只以单 字的子集为目标的提早释放指令,以使高速缓存线中的单字全部被释 放,被设定的UL旗标可向HTM指示可能发生事务数据的非故意丢失。

在步骤540,该处理器侦测指定给定推测读取单字要由读集释出的 RELEASE指令。此实施例的RELEASE指令对应至提早释放机构。

回应RELEASE指令,该HTM定位给定单字的高速缓存线以及检查 高速缓存线的UL旗标,确定UL旗标已设定,如在步骤550。由于UL 旗标已设定,该HTM确定高速缓存线中多个单字已被推测读取以及可 能导致非故意及/或不正确行为,如果释放整个高速缓存线的话。因此, 在步骤555,该HTM阻止RELEASE指令所指示的提早释放机能。由于提 早释放被阻止,该HTM无法清除高速缓存线的SR旗标,高速缓存线中 的单字仍留在读集中,以及该HTM继续检查涉及所述单字的数据冲突。

虽然图5的实施例包含以将会被推测写入的第一单字为目标的 RELEASE指令,然而系统行为可类似地有以其它单字为目标的RELEASE 指令。因此,在一些具体实施例中,一旦同一高速缓存线(也就是,单 字群组)中至少有两个单字被推测读取,该高速缓存线中的单字不再合 乎提早释放的条件。

在不同的具体实施例中,对于用除高速缓存外的机构实现的推测 缓冲区,非故意丢失字段,例如UL及FA字段440及445,可适合以致 能单字群组化及提早释放。例如,图4b为根据一些具体实施例图示布 隆过滤器以及致能单字群组化及提早释放的安全共存的非故意丢失字 段的方块图。

如上述,HTM可用来追踪读集的另一单字群组化方法是利用以硬件 实现的布隆过滤器。图4b的方块图根据一些具体实施例图示基于布隆 过滤器的推测缓冲区,其经装备成可支持单字群组化及提早释放机构 的正确共存。

在一些这种具体实施例中,当单字被推测读取时,该HTM可确定 该单字的索引,例如通过应用哈希函数于该单字的地址。然后,该HTM 在专用阵列(例如,布隆过滤器450)的索引值可设定旗标以指示该单字 已被推测读取。当处理器接收指示另一线程已访问给定存储器地址的 探询时,该处理器可应用哈希函数于收到的存储器地址以确定索引以 及检查布隆过滤器中的旗标是否设定于该索引。

在一些具体实施例中,该HTM可使非故意丢失字段(例如,440及 445)与读集布隆过滤器的每个索引关连。例如,布隆过滤器450的每 个字段(例如,索引460及470)各自与非故意丢失字段(例如,462及 472)关连。在一些具体实施例中,这些字段可为包含在个别硬件结构 中的布隆过滤器本身的一部分,或以其它方式与布隆过滤器的各个索 引关连。

根据图示具体实施例,非故意丢失字段462及472各自包含UL字 段(464及474)与FA字段(466及476)。这些字段可与数据高速缓存工 具中的字段440及445类似。例如,如果处理器推测读取在给定地址 的单字,在此该地址杂凑至索引460,该HTM可判断索引460的数值是 否指示此地址已在读集中。如果索引460的数值不指示此地址已经在 读集中时,该HTM可设定此一数值于索引460以及设定识别给定地址 的数值于FA字段466。与数据高速缓存工具一样,FA字段466可保存 地址本身,地址群组中映像至索引466的偏移量,或另一识别符。例 如,如果所使用的哈希函数是求余函数(modulo function),则使地址 移动log2(M)个比特可为导出给定地址的识别符的方法之一,在此M布 隆过滤器索引的数目。另一方面,如果索引460中的数值指示该地址 已经在读集中,则该HTM可比较地址的识别符与储存于FA字段466的 识别符。如果这两个数值不相同,则处理器已读取同一群组中至少两 个不同单字以及该HTM的回应可通过设定UL字段464为指示提早释放 有非故意丢失的危险的数值。与数据高速缓存工具一样,如果UL字段 464指示群组中有多个单字已被推测读取,该HTM可阻止以索引460 为目标的提早释放操作。

图6为根据一些具体实施例图示配置成支持单字群组化及提早释 放的HTM的组件的方块图。图6的HTM110可对应至图1的HTM机构 110。

根据图示具体实施例,HTM110可包含支持单字群组化及提早释放 的推测缓冲区,例如605。在一些具体实施例中,推测缓冲区605的实 现可用高速缓存(例如,数据高速缓存400),布隆过滤器(例如,布隆 过滤器450),及/或其它机构。在一些具体实施例中,推测缓冲区605 可包含可用来指示共享存储器中的一单字群组有至少一单字在事务读 集中(例如,SR字段435、索引460、等等)的字段。在一些具体实施例 中,推测缓冲区605也可包含可用来指示给定群组中是否有多个单字 在活动事务内已被推测读取的字段(例如,UL字段440、464、474、等 等)。

在图示具体实施例中,HTM110也包含单字群组化逻辑(word  grouping logic)610,其经配置成在给定单字被推测读取时,可确定 及设定推测缓冲区605的适当旗标。例如,如果推测缓冲区605实作 成为图4a的数据高速缓存400,则回应在该地址的单字被推测读取, 可将单字群组化逻辑610配置成读取及设定对应至给定地址的SR、UL 及FA字段。

根据图6的图示具体实施例,HTM110也可包含可配置成实现单字 群组化察觉提早释放机能的提早释放逻辑615。例如,可将提早释放逻 辑615配置成执行RELEASE指令以指定要由活动事务的读集释出的存 储器地址,如本文所述。回应确定群组中有多个单字已被活动事务推 测读取,以也可将逻辑615配置成确定指定地址的群组以及可阻止此 机能。例如,至少部分通过读取推测缓冲区605中的适当UL字段,提 早释放逻辑615可判断群组中是否有一个以上的单字已被读取。

虽然图6以分开的组件图示推测缓冲区605,单字群组化逻辑610, 及提早释放逻辑615,然而在不同的具体实施例中,它们可加以组合及 /或进一步分割。在一些具体实施例中,HTM110进一步可包含:各种 其它组件,例如高速缓存一致性机构、放弃逻辑、提交逻辑、失常执 行支持、等等。

图7为根据不同的具体实施例图示一计算机系统,其经配置成实 现具有如本文所述的单字群组化及提早释放机构的硬件事务存储器的 方块图。计算机系统700可对应至各种装置中的任一,包括但不受限 于:个人计算机系统、桌上计算机、膝上或笔记计算机、大型计算机 系统、手持计算机、工作站、网络计算机、消费者装置、应用系统服 务器、储存装置、周边装置(例如,开关、数据机、路由器等等)、或 任何类型的一般计算装置。

计算机系统700可包含一或更多处理器760,处理器760中的任一 可包含多个实体及/或逻辑核心。如本文所述,处理器760可各自包含 可实现有单字群组化及提早释放机构的HTM的机构,例如机构770。例 如,在一些具体实施例中,HTM770可包含一合适推测缓冲区,例如数 据高速缓存400及/或布隆过滤器450。

计算机系统700也可包含可永久储存数据的一或更多永久性储存 装置750(例如,光学储存器、磁性储存器、硬盘、磁盘、固态存储器 等等)。

根据图示具体实施例,计算机系统700可包含可被处理器760中 的多个共享的一或更多共享存储器710(例如,高速缓存、SRAM、DRAM、 RDRAM、EDO RAM、DDR10RAM、SDRAM、Rambus RAM、EEPROM等等中的 一或更多)。可经由互连740耦合一或更多处理器760、储存装置(或数 个)750、以及共享存储器710。在不同的具体实施例中,该系统可包含 更少或未图示于图7的附加组件(例如,视讯卡、声卡、附加网络接口、 周边装置、网络接口(例如,ATM接口)、以太网络接口、讯框传送接口 (Frame Relay interface)、监视器、键盘、扬声器等等)。

在一些具体实施例中,共享存储器710可储存可编码成平台原生 二元码(platform native binary)、任何解译语言(例如,JavaTM字节 码或任何其它语言(例如,C/C++、JavaTM等等)或其组合的程序指令 720。程序指令720可包含可实现一或更多个多线程应用722的程序指 令,其包含将会各自被当作单一原子事务来执行的推测代码区段。在 一些具体实施例中,程序指令720也可包含可执行以实现操作系统724 的指令,操作系统724提供用以执行应用722的软件支持(例如,调度, 软件讯号处理、等等)。

根据图示具体实施例,共享存储器710可包含可被处理器760中 的多个访问的共享数据730。处理器760中的数个可高速缓存共享数据 730在本地高速缓存中的各种组成部分,以及根据高速缓存一致性协定 通过交换讯息来协调这些高速缓存中的数据,如本文所述。

程序指令720,例如可用来实现多线程应用(multithreaded  application)722及/或操作系统724者,可储存于计算机可读取储存 媒体上。计算机可读取储存媒体可包含以机器(例如,计算机)可读取 形式(例如,软件,处理应用系统)储存信息的任何机构。计算机可读 取储存媒体可包含但不限于:磁性储存媒体(例如,软盘);光学储存 媒体(例如,CD-ROM);磁光储存媒体;只读存储器(ROM);随机访问存 储器(RAM);可擦可编程存储器(例如,EPROM及EEPROM);闪存;适合 储存程序指令的电气或其它类型的媒体。

如上述,在一些具体实施例中,计算机可读取储存媒体可用来储 存指令供程序读取以及直接或间接地用来制造包含处理器760中的一 或更多的硬件。例如,所述指令可用高阶设计语言(HDL,例如Verilog 或VHDL)描述描述硬件机能的行为层级或寄存器传输级(RTL)描述的一 或更多数据结构。可合成该描述以产生网络清单(netlist)的合成工具 (synthesis tool)可读取该描述。该网络清单可包含描绘处理器500 的机能的栅极集合(例如,定义于合成库之中者)。然后,可安置及布 线该网络清单以产生描述要应用于掩膜的几何形状的数据集(data  set)。然后,所述掩膜可用于各种半导体制造步骤以生产半导体电路 或对应至处理器500的电路。替换地,按需要,数据库可为网络清单(有 或无合成库)或数据集。

尽管上文已描述数个特定具体实施例,然而所述具体实施例并非 旨在限制本揭示内容的范畴,即使特定特征只用单一具体实施例说明。 本揭示内容所提供的特征实施例旨在图解说明而非限制,除非另有说 明。熟谙此艺者在阅读本揭示内容后会明白,以上描述旨在涵盖此类 替代、修改及等价陈述。

本揭示内容的范畴包括揭示于本文的任何特征及其组合(以明示 或暗示方式),或其任何泛化,不论它是否减轻本文所针对的问题中的 任一或所有。因此,在审查本申请案(或主张优先权的申请)期间可将 新的权利要求制定成特征的任何组合。特别是,参考随附的权利要求 书,从属权利要求的特征可与独立权利要求的组合以及独立权利要求 的组合可用任何适当方式组合而不仅仅是列举于随附的权利要求书的 特定组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号