当前位置: 首页 > 专利查询>英特尔公司专利>正文

高效且一致的软件事务存储器制造技术

技术编号:2824086 阅读:198 留言:0更新日期:2012-04-11 18:40
在此描述了一种用于软件事务存储器(STM)系统中的高效且一致的验证/冲突检测的方法和装置。在加载操作之后插入版本检查屏障,以比较加载操作前后的加载值的版本。另外,全局时间戳(GTS)被用来跟踪最新提交的事务。每个事务都与在事务开始时被初始化为GTS值的局部时间戳(LTS)相关联。随着事务提交,将GTS更新为新值并将所修改的单元的版本设置为该新值。未决事务将在读屏障中确定的版本与它们的LTS进行比较。如果该版本大于它们的LTS,这指示出另一事务已在未决事务开始且初始化LTS之后被提交,则该未决事务验证其读集以保持高效且一致的事务执行。

【技术实现步骤摘要】

本专利技术涉及处理器执行领域,特别涉及成组指令的执行。
技术介绍
半导体工艺和逻辑设计中的进步己使得可在集成电路设备中提 供的逻辑的数量得以增加。因此,计算机系统配置己经从一个系统中 的单一或多个集成电路演进到在单个集成电路上提供多个核心和多 个逻辑处理器。 一个处理器或集成电路典型地包括单个处理器管芯(die),其中该处理器管芯可以包括任意数量的核心或逻辑处理器。集成电路上不断增加的核心和逻辑处理器数量使得能够执行更 多的软件线程。然而,可以被同时执行的软件线程数量的增加已经产 生了对软件线程之间共享的数据进行同步的问题。在多核心或多逻辑 处理器系统中访问共享数据的一种通常方案包括,使用锁来确保对共 享数据的多个访问之间的互斥。然而,不断增加的执行多个软件线程 的能力将可能会导致错误的争用和执行的串行化。例如,考虑一个持有共享数据的哈希表。利用锁系统,程序员可 以锁住整个哈希表,允许一个线程访问整个哈希表。然而,其它线程 的吞吐量和性能将可能会受到负面影响,原因在于它们无法访问该哈 希表中的任何条目,直到该锁被释放。作为选择,可以对哈希表中的 每个条目加锁。然而,这增加了编程的复杂性,因为程序员不得不考 虑在一个哈希表内的更多的锁。另一种数据同步技术包括使用事务存储器(transactional memory,TM)。通常事务执行包括推测地执行一组的多个微操作、操作或指令。 在上述例子中,两个线程都在该哈希表内执行,而它们的访问被监视 /跟踪。如果两个线程都访问/改变同一条目,则可以中止其中一个事 务以解决冲突。 一种事务执行包括软件事务存储器(STM),其中访问被跟踪,以软件来执行冲突解决、中止任务和其它事务任务。在一种实现中,跟踪读操作的版本以保持一致性并检测冲突。然而,在典型的STM中,直到事务将被提交时才执行读操作的验证 (validation)。因此,如果在事务期间发生了比如冲突之类的无效动作, 则某些数据可能变得不一致,且使用不一致数据可能会导致程序异常 或无限循环。而且,为了发现所发生的不一致,在执行该事务的其余 部分期间,可能会浪费执行周期。附图说明本专利技术通过例子进行说明,而并不是要受附图中的各图所限制。图1说明了能够进行事务执行的系统的实施例。图2说明了软件事务存储器(STM)系统的实施例。图3说明了在STM中利用全局时间戳(global timestamp)来检测示例性事务中的冲突的实施例。图4a说明了高效的按需(on demand)事务验证的方法的流程图的实施例。图4b说明了继续自图4a的流程的实施例。 图4c说明了继续自图4a和图4b的流程的实施例。 图5说明了在程序代码中插入指令以执行高效的按需事务验证 的方法的流程图的实施例。具体实施例方式在以下说明书中,为了提供对本专利技术的全面理解,阐述了许多具 体细节,比如以下示例对于事务执行的具体硬件支持、具体的跟踪 /元数据方法、处理器中具体类型的局部/存储器、以及具体类型的存 储器访问和单元(location)等。然而,对于本领域技术人员显而易见的 是,本专利技术可以无需这些具体细节来实现。在其它实例中,为了避免 不必要地使本专利技术变得晦涩,没有详述公知的部件或方法,比如用软 件对事务进行编码、事务划分、具体的多核心和多线程处理器架构、 中断产生/处理、高速缓存组织以及微处理器的具体操作细节。这里所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的 任何已知表示。通常,逻辑电平、逻辑值或逻辑上的值的使用也被称 为1和0,其简单地表示二进制逻辑状态。例如,1是指逻辑高电平, 而0是指逻辑低电平。然而,在计算机系统中也使用了值的其它表示。例如十进制数10也可以被当作二进制值1010和十六进制字母A。此外,状态可以由值或部分值来表示。例如,加锁状态可以由单 元中的第一个值(比如奇数)来表示,而该单元中的版本号(比如偶数值) 表示未加锁状态。这里,第一和第二个值的一部分可以被用来表示状 态,比如所述值的两个较低位、与所述值相关联的符号位或所述值的 其它部分。这里所述的方法和装置用于软件事务存储器(STM)系统中的高 效且一致的验证。具体地,软件事务存储器(STM)系统中的高效且一 致的验证主要针对多核处理器计算机系统来进行讨论。然而,用于软 件事务存储器(STM)系统中的高效且一致的验证的方法和装置并不 被限制于此,原因在于它们可以被实现在、或关联于任何集成电路设 备或系统,比如移动电话、个人数字助理、嵌入式控制器、移动平台、 桌面平台和服务器平台,以及与利用事务存储器的其它资源(例如硬 件Z软件线程)相结合。参考图1,说明了软件事务存储器(STM)系统中能够进行高效且 一致的验证的处理器的实施例。在一个实施例中,处理器100是能够 并行执行多个线程的多核处理器。然而,处理器100可以包括任何处 理单元,比如能够执行一个线程或多个线程的嵌入式处理器、单元处 理器(cdl-processor)、微处理器或其它已知的处理器。作为说明性的 例子,在图1中说明了处理器的乱序(out-of-order)架构的简化实施例。下面将更详细讨论的处理器100中所示的模块可能用硬件、软 件、固件或它们的组合来实现。注意,所示的模块是逻辑块,其在物 理上可以与其它模块的边界重叠,并且可以以任何方式被配置或互连。此外,如图1所示的模块在处理器100中不是必需的。此外,其 它模块、单元、和已知的处理器功能部件也可以包括在处理器100中。 总线接口模块105用于与诸如系统存储器175、芯片组、北桥或其它集成电路这样的设备进行通信。典型地,总线接口模块105包括 输入/输出(I/0)缓冲器,用以在互连170上发送和接收总线信号。互 连170的例子包括射电收发逻辑(Gunning Transceiver Logic, GTL) 总线、GTL+总线、双倍数据速率(DDR)总线、并发总线(pumpedbus)、 差分总线、高速缓存一致性总线(cache coherent bus)、点对点总线、 多点总线或其它己知的实现任何己知总线协议的互连。处理器100耦合到存储器175,该存储器可以专用于处理器100 或与系统中的其它设备共享。存储器175的例子包括动态随机存取 存储器(DRAM)、静态RAM(SRAM)、非易失性存储器(NV存储器) 以及长期存储装置。所示的总线接口单元105还与高级高速缓存110 通信。高级高速缓存110用于对最近取出的和/或操作的元素进行缓存。 在一个实施例中,高级高速缓存110是二级数据高速缓存。然而,高 级高速缓存110并不局限于此,因为它可以是、或包括用来存储最近 取出/解码的指令的指令高速缓存115。指令高速缓存115也可以被称 为轨迹高速缓存(tmce cache),被图示在取出逻辑120和解码逻辑125 之前。这里,指令高速缓存115存储最近取出的还没有解码的指令。 然而,指令高速缓存115可能会放置在取出逻辑120和/或解码逻辑 125之后以存储解码的指令。取出逻辑120用于取出将要操作/执行的数据/指令。虽然没有示 出,但是在一个实施例中,取出逻辑包括或关联于分支预测逻辑、分 支目标缓冲器和/或预取器,用于预测将执行/采取本文档来自技高网...

【技术保护点】
一种方法,包括:    响应于开始执行第一事务,在与所述第一事务相关联的第一局部时间戳中存储全局时间戳值;    响应于遇到被包括在所述第一事务中、且涉及第一地址的当前的读操作,如果与所述第一地址相关联的当前版本大于所述局部时间戳,则验证所述第一事务中的多个先前的读操作。

【技术特征摘要】
US 2006-12-28 11/648,0121、一种方法,包括响应于开始执行第一事务,在与所述第一事务相关联的第一局部时间戳中存储全局时间戳值;响应于遇到被包括在所述第一事务中、且涉及第一地址的当前的读操作,如果与所述第一地址相关联的当前版本大于所述局部时间戳,则验证所述第一事务中的多个先前的读操作。2、 如权利要求1所述的方法,其中,响应于遇到所述当前的读 操作进一步检查所述第一地址是否未加锁,并且响应于所述第一地址 未加锁而记录所述当前版本。3、 如权利要求2所述的方法,进一步包括 执行所述当前的读操作;以及 在执行所述当前的读操作之后,检査与所述第一地址相关联的后续版本,以及 如果所述后续版本不同于所述当前版本,则中止所述第一事务。4、 如权利要求3所述的方法,进一步包括响应于遇到涉及所 述第一地址的写操作,获取与所述第一地址相关联的元数据单元中的 锁。5、 如权利要求4所述的方法,进一步包括提交所述第一事务, 其中,提交所述事务包括响应于所述第一局部时间戳小于所述全局时间戳,验证所述第一 事务中的每个读操作,包括所述多个先前的读操作和所述当前的读操作;递增所述全局时间戳值,使其变为递增后的全局时间戳值;以及将所述元数据单元中的写版本设置为至少所述递增后的全局时 间戳值。6、 如权利要求1所述的方法,验证所述第一事务中的多个先前的读操作包括如果与所述多个先前的读操作相关联的多个已记录版 本对应于与所述多个先前的读操作相关联的多个当前版本,则确定所 述多个先前的读操作是有效的。7、 一种包括程序代码的制品,所述程序代码在被机器执行时,使得该机器执行以下操作检测事务中涉及一地址的加载操作;在所述加载操作之前插入要执行的一组读屏障操作,该组读屏障 操作在执行时用于获得与所述地址相关联的当前版本;在所述加载操作之后插入一组版本检査屏障操作,该组版本检查 屏障操作在执行时用于将与所述地址相关联的后续版本和所述当前 版本进行比较。8、 如权利要求7所述的制品,进一步包括在所述加载操作之前插入对读屏障函数的调用,其中,所述读屏 障函数包括所述一组读屏障操作;以及在所述加载操作之后插入对版本检査屏障函数的调用,其中,所 述版本检查屏障函数包括所述一组版本检查屏障操作。9、 如权利要求7所述的制品,其中,所述一组版本检查屏障操作包括第一版本检查屏障操作,在执行时用于获得所述后续版本; 第二版本检查屏障操作,在执行时用于确定所述后续版本是否不同于所述当前版本;以及对中止函数的调用,在响应于所述后续版本不同于所述当前版本而执行时用于中止所述事务。10、 如权利要求7所述的制品,进一步包括 检测开始事务指令;以及插入在所述事务开始时要执行的复制操作,所述复制操作在执行 时用于把全局时间戳复制到与所述事务相关联的局部时间戳。11、 如权利要求IO所述的制品,其中,所述一组读屏障操作包括第一读屏障操作,在执行时用于获得所述当前版本; 第二读屏障操作,在执行时用于确定所述当前版本是否大于所述局部时间戳;以及一组验证操作,在响应于所述当前版本大于所述局部时间戳而执 行时用于验证所述事务中的多个先前的读操作。12、 如权利要求11所述的制品,...

【专利技术属性】
技术研发人员:B萨哈AR阿德塔巴塔巴伊C王Y吴WY陈
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1