当前位置: 首页 > 专利查询>微软公司专利>正文

软件事务存储器中的动作框架制造技术

技术编号:6977782 阅读:156 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及软件事务存储器中的动作框架。软件事务存储器系统实现轻量的基于键的动作框架。该框架包括由STM库展示的一组统一的应用编程接口(API),该组统一的应用编程接口允许客户端实现可由STM代码中的事务或事务嵌套使用特定键来注册、查询和更新的动作。每个动作包括键、状态信息以及可被挂钩到事务执行的验证、提交、中止、和/或重新执行阶段的一组一个或多个回调。动作用定制的控制逻辑扩展STM系统的内建并发控制,支持事务嵌套语义,以及允许与垃圾收集系统的集成。

【技术实现步骤摘要】

本专利技术涉及软件事务存储器中的动作框架
技术介绍
可编写计算机程序来允许使用线程或另一合适的并行执行机制来并行地执行程序的不同部分。为了并行地执行程序的不同部分,计算机系统或程序通常包括某种机制来管理对这些不同部分的存储器访问,以确保各部分按所希望的顺序访问公共存储器位置。事务存储器系统允许程序员指定程序中的可被执行的事务,就好像这些事务隔离地执行(即独立于程序中的其他事务和其他非事务序列)。事务存储器系统通过以以下方式执行事务来管理事务的存储器访问,该方式是如果两个或更多事务试图以冲突的方式访问同一存储器位置,则事务的效果可被回滚或撤销。可使用硬件和/或软件来实现事务存储器系统。诸如软件事务存储器(STM)系统之类的事务存储器系统通常对支持的编程场景的类型有限制。例如,STM系统通常不支持在事务中对线程本地存储器的使用、事物锁和传统锁之间的互操作、对静态类初始化器和模块化初始化器的使用、在事物内对软件锁省略 (software lock elision)的使用、以及对定制的抽象并发控制的使用。尽管STM系统的开发者可能够对上述场景中的每一个以及其他场景实现单独的解决方案,但是这些单独的解决方案可能是代价高的且可导致不希望的STM系统架构。希望允许各种各样的编程场景被支持的具有统一且高效的解决方案的STM系统。
技术实现思路
提供本
技术实现思路
是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。一种软件事务存储器(STM)系统实现了轻量的基于键的动作框架。该框架包括由 STM库展示的一组统一的应用编程接口(API),该组统一的应用编程接口允许客户端(例如程序员和/或编译器)实现可由STM代码中的事务或事务嵌套使用特定键来注册、查询和更新的动作。每个动作包括键、状态信息以及可被挂钩到事务执行的验证、提交、中止、和/ 或重新执行阶段的一组一个或多个回调。动作用定制的控制逻辑扩展STM系统的内建并发控制,支持事务嵌套语义,以及允许与垃圾收集系统的集成。STM系统可使用该动作框架来用一致性和高效性解决一个或多个STM编程场景。附图说明包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本专利技术书内并构成其一部分。附图示出各实施例,并且与说明书一起用于解释本专利技术的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。图1是示出软件事务存储器系统的实施例的框图。图2是示出用于在STM系统中查询、注册和更新动作的方法的实施例的流程图。图3是示出在事务执行阶段调用由动作实现的回调的方法的实施例的流程图。图4是示出具有被配置成编译具有软件事务存储器事务的源代码的编译器的编译系统的实施例的框图。图5是示出被配置成实现软件事务存储器系统的计算机系统的实施例的框图。 具体实施例方式在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本专利技术的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、 “后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为实施例的各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本专利技术的范围。 因此,以下详细描述并不旨在限制,并且本专利技术的范围由所附权利要求来限定。应该理解, 此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。图1是示出软件事务存储器(STM)系统10的实施例的框图。STM系统10表示如图5中示出且在下文中更详细地描述的计算机系统100等计算机系统中的运行时操作模式,其中该计算机系统正在执行STM代码12的指令。如下文更为详细地描述的那样,STM系统10实现轻量的基于键的动作框架。STM系统10包括STM库14和用于执行STM代码12的运行时环境16。STM系统 10被配置成管理构成STM代码12中的原子块的STM事务20的执行,以允许事务被原子地执行,且如果需要则回滚或撤销由事务20作出的改变。为此,如由箭头36所示,对每个正在执行的事务20,STM系统10使用日志34来跟踪事务20对对象30的存储器访问。运行时环境16可以是运行时库、虚拟机(VM)、诸如图5中所示且在下文更详细描述的OS 122所提供的功能之类的操作系统(OS)功能、和/或诸如图4和5所示且在下文更详细描述的编译器92所提供的功能之类的编译器功能的任何适当的组合。STM代码12包括一组一个或多个事务20以及任何合适的非事务代码。每个事务 20包括被设计成原子地执行的指令序列,即就好像该序列与STM代码12中的其他事务和非事务代码隔离地执行。每个事务20包括原子块命名符22或其他合适的句法,指示出STM 代码12的相应部分是事务20。事务20还包括对STM原语的调用沈,可由诸如图4和5中所示且在下文中更详细描述的编译器92之类的编译器添加,调用STM库14中的功能。如功能调用与返回观所指示的,STM库14的STM原语将结果返回给事务20。此外,每个事务 20包括如由箭头32所示的从一个或多个对象30读取和/或写入一个或多个对象30的零个或多个存储器访问M,和/或一个或多个静态(未示出)。STM代码12可在该组事务20中包括一个或多个嵌套的事务。嵌套的事务是由另一事务20,即父事务,调用的事务20。父事务和由父事务调用或源自父事务的调用的任何事务20构成事务嵌套。STM库14包括STM原语和可由计算机系统结合运行时环境16执行的用以实现STM系统10的指令。STM库14的可由事务20调用的STM原语可包括实现STM库14中的开始、 提交、中止、重试功能的管理原语。事务20调用开始功能以发起STM库14对事务20的管理。事务20调用提交功能以(如果成功的话)在存储器系统204中最终化事务20的结果。 事务20调用中止功能以回滚或撤销存储器系统204中事务20的结果。事务20调用重试功能以重试事务20。在其他实施例中,STM库14执行的某些或全部功能可被包括在运行时环境16中或由诸如图4和5所示的编译器92之类的编译器添加到事务20中。 STM库14的可由事务20调用的STM原语还包括管理对由事务写和/或读的对象 30的访问的存储器访问原语。存储器访问原语访问每个对象30的一组一个或多个事务锁 39。在一个实施例中,STM系统10使用对象30的对象头来存储相应的事务锁39。每个事务锁39指示出相应的对象30或相应的对象30的一部分对于事务20进行的写和/或读来说是锁定的还是解锁的。在一个实施例中,当对象30对于写是锁定时,相应的事务锁39包括在写日志34W中定位对象30的条目的地址或其他引用。当对象30对于写是解锁时,相应的事务锁39包括对象30的版本号。 对于每个非数组对象30,存储器访问原语可访问对事务20进行的写和/或读锁定或解锁非数组对象30的单个事务锁39。对于每个数组对象30,存储器访问原语可访问一组一个或多个事务锁3本文档来自技高网...

【技术保护点】
1.一种由软件事务存储器(STM)系统(10)在计算机系统(100)中执行的方法,所述方法包括:从STM代码(12)中的事务(20)接收具有键(42)的第一动作操作;以及用所述键注册对应于所述第一动作操作的动作(40),所述键允许所述事务随后执行查询和更新所述动作中的至少一个,所述动作实现回调(46)。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:L·张Y·莱瓦诺尼D·L·德特勒夫斯S·S·索迪W·朱
申请(专利权)人:微软公司
类型:发明
国别省市:US

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

1