用于实现事务内存区域提升的代码版本控制的方法和设备的制造方法

文档序号:8258140阅读:237来源:国知局
用于实现事务内存区域提升的代码版本控制的方法和设备的制造方法
【技术领域】
[0001] 本公开一般地涉及数据处理系统中的事务内存的使用,更具体地讲,涉及在数据 处理系统中使用用于实现事务内存区域提升的代码版本控制的优化。
【背景技术】
[0002] 使用并行性的程序的开发者经常花费很大精力使关键区域内的代码的量最小化, 因为在传统上使用锁实现关键区域并且关键区域通常是并行程序中的串行化的点。近来在 用于支持事务内存(TM)的硬件方面的进步提供用于实现关键区域的无锁机构。也就是说, 线程同时乐观地并行执行关键区域,并且仅在存在冲突的情况下,一个线程将会留存下来 并且其它线程将会中止。因此,事务内存的使用通常提供将关键区域并行化的能力,并且在 最坏情况下,与使用锁将关键区域串行化相比,处理性能通常不会变得更差。
[0003] 然而,典型结果指示进入和离开硬件事务的开销为当使用传统larx/stcx锁时的 开销的3-4倍的量级。寄存器的上下文保存和恢复的管理进一步增加观察到的开销。因 此,当天真的开发者创建并行程序并且简单地在关键区域上以TM的使用替换锁的使用时, 开发者可能经常观察不到处理性能的提高,甚至在无冲突情况下观察到处理性能的显著降 低。因为已有关键区域常常很小并且TM开销不能在这种小区域上合适地摊销,所以可能发 生这种观察到的行为。

【发明内容】

[0004] 根据一个实施例,一种用于实现事务内存区域提升的代码版本控制的计算机实现 的处理接收一部分候选源代码,并且概括接收的该部分候选源代码以用于并行执行。所述 计算机实现的处理还在概括的代码中产生多个循环版本,并且利用进入和离开例程包裹关 键区域以进入推测子处理。进入和离开例程还在运行时搜集冲突统计数据。冲突统计数据 随后被用于确定针对关键区域的下一次调用在运行时执行哪个循环版本。
[0005] 根据另一实施例,一种用于实现事务内存区域提升的代码版本控制的计算机程序 产品包括一种计算机可记录类型装置,所述计算机可记录类型装置包含存储在它上面的计 算机可执行程序代码。所述计算机可执行程序代码包括:用于接收一部分候选源代码的计 算机可执行程序代码;用于概括接收的该部分候选源代码以用于并行执行的计算机可执行 程序代码;用于利用进入和离开例程包裹关键区域以进入推测子处理的计算机可执行程序 代码,其中进入和离开例程还在运行时搜集冲突统计数据;和用于产生包括多个循环版本 的概括代码部分的的计算机可执行程序代码。计算机可执行程序代码还包括用于执行概括 代码部分以根据在运行时搜集的冲突统计数据确定使用多个循环版本之一的计算机可执 行程序代码。
[0006] 根据另一实施例,一种用于实现事务内存区域提升的代码版本控制的设备包括: 通信结构;存储器,连接到通信结构,其中所述存储器包含计算机可执行程序代码;通信单 元,连接到通信结构;输入/输出单元,连接到通信结构;显示器,连接到通信结构;和处理 器单元,连接到通信结构。处理器单元执行计算机可执行程序代码以指示所述设备:接收一 部分候选源代码;概括接收的该部分候选源代码以用于并行执行;利用进入和离开例程包 裹关键区域以进入推测子处理。进入和离开例程还在运行时搜集冲突统计数据;以及产生 包括多个循环版本的概括代码部分。处理器单元执行计算机可执行程序代码以进一步指示 所述设备由所述设备执行概括代码部分以根据在运行时搜集的冲突统计数据确定使用多 个循环版本之一。
【附图说明】
[0007] 为了更完整地理解本公开,现在参照下面结合附图和【具体实施方式】进行的简要描 述,其中相同的标号代表相同的部分。
[0008] 图1是可用于本公开的各种实施例的示例性网络数据处理系统的方框图;
[0009] 图2是可用于本公开的各种实施例的示例性数据处理系统的方框图;
[0010] 图3是可用于本公开的各种实施例的代码版本控制优化系统的部件的方框图表 示;
[0011] 图4是根据本公开的一个实施例的源代码片段的文本表示;
[0012] 图5是根据本公开的一个实施例的代表图3的代码版本控制优化系统的处理的各 阶段的源代码片段的文本表示;
[0013]图6是根据本公开的一个实施例的与使用图3的代码版本控制优化系统关联的优 化范围的方框图;
[0014]图7是根据本公开的一个实施例的使用图3的代码版本控制优化系统的编译时处 理的流程图;以及
[0015] 图8是根据本公开的一个实施例的使用图3的代码版本控制优化系统的运行时处 理的流程图。
【具体实施方式】
[0016] 虽然以下提供一个或多个实施例的说明性实现方式,但可使用任何数量的技术实 现公开的系统和/或方法。本公开绝不应该局限于以下示出的说明性实现方式、附图和技 术(包括这里示出和描述的示例性设计和实现方式),而是可在所附权利要求的范围以及 它们的等同物的全部范围内被修改。
[0017] 本领域技术人员将会理解,本公开的各方面可被实现为系统、方法或计算机程序 产品。因此,本公开的各方面可采用通常全部可在这里称为"电路"、"模块"或"系统"的完 全硬件实施例、完全软件实施例(包括固件、常驻软件、微码等)或组合软件和硬件方面的 实施例的形式。另外,本发明的各方面可采用实现于包含计算机可读程序代码的一个或多 个计算机可读介质的计算机程序产品的形式。
[0018] 可使用一个或多个计算机可读数据存储装置的任何组合。计算机可读数据存储装 置可以是例如但不限于电子、磁、光学或半导体系统、设备或装置或者前述各项的任何合适 的组合,但不包括传播介质。计算机可读数据存储装置的更具体的例子(非穷举列表)将 包括下述各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除 可编程只读存储器(EPROM或闪存)、便携式压缩盘只读存储器(CDR0M)、光学存储装置或磁 存储装置或前述各项的任何合适的组合,但不包括传播介质。在本文档的上下文中,计算 机可读数据存储装置可以是能够存储由指令执行系统、设备或装置使用或结合指令执行系 统、设备或装置使用的程序的任何有形装置。
[0019] 可按照一种或多种编程语言的任何组合编写用于执行本公开的各方面的操作的 计算机程序代码,所述编程语目包括:面向对象的编程语目,诸如Java?、Smalltalk、C++ 等;和常规过程化编程语言,诸如"C"编程语言或类似编程语言。Java和所有的基于Java 的商标和标识是Oracle公司和/或它的分公司在美国、其它国家或二者的商标。程序代码 可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在 用户的计算机上并且部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在 后一情形中,远程计算机可通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接 到用户的计算机,或者可(例如,使用互联网服务提供商通过互联网)连接到外部计算机。
[0020] 以下参照根据本发明的实施例的方法、设备、(系统)和计算机程序产品的流程图 和/或方框图描述本公开的各方面。将会理解,流程图和/或方框图的每个方框以及流程 图和/或方框图中的方框的组合能够由计算机程序指令实现。
[0021] 这些计算机程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理 设备的处理器,以产生一机器,从而经计算机或其它可编程数据处理设备的处理器执行的 指令产生用于实现流程图和/或方框图的一个或多个方框中规定的功能/动作的装置。
[0022] 这些计算机程序指令也可被存储在计算机可读数据存储装置中,该计算机可读数 据存储装置能够指示计算机或其它可编程数据处理设备按照特定方式工作,从而存储在计 算机可读数据存储装置中的指令产生一种制造产品,所述制造产品包括实现流程图和/或 方框图的一个或多个方框中规定的功能/动作的指令。
[0023] 计算机程序指令也可被加载到计算机或其它可编程数据处理设备上,以使得在计 算机或其它可编程设备上执行一系列的操作步骤以产生计算机实现的处理,从而在计算机 或其它可编程设备上执行的指令提供用于实现流程图和/或方框图的一个或多个方框中 规定的功能/动作的处理。
[0024] 现在参照附图,具体地参照图1-2,提供可实现说明性实施例的数据处理环境的示 例性示图。应该理解,图1-2仅是示例性的,而非意图断言或暗示关于可实现不同实施例的 环境的任何限制。可做出对描述的环境的许多修改。
[0025] 图1描述可实现说明性实施例的数据处理系统的网络的图形表示。网络数据处理 系统100是可实现说明性实施例的计算机的网络。网络数据处理系统100包含网络102,网 络102是用于提供在网络数据处理系统100内连接在一起的各种装置和计算机之间的通信 链路的介质。网络102可包括连接,诸如有线、无线通信链路或光纤线缆。
[0026] 在描述的例子中,服务器104和服务器106以及存储单元108连接到网络102。另 夕卜,客户机110、112和114连接到网络102。客户机110、112和114可以是例如个人计算机 或网络计算机。在描述的例子中,服务器104将数据(诸如,引导文件、操作系统镜像、代码 版本控制优化系统116的实施例和应用)提供给客户机110、112和114。在这个例子中,客 户机110U12和114是服务器104的客户机。网络数据处理系统100可包括未示出的另外 的服务器、客户机和其它装置。
[0027] 在描述的例子中,网络数据处理系统100是具有网络102的互联网,网络102代表 使用传输控制协议/互联网协议(TCP/IP)协议组彼此通信的全世界的网络和网关的集合。 在互联网的中心是主节点或主机计算机之间的高速数据通信线路的骨干网,所述主节点或 主机计算机包括对数据和消息进行路由的数以千计的商业、政府、教育和其它计算机系统。 当然,网络数据处理系统100也可被实现为许多不同类型的网络,诸如例如内联网、局域网 (LAN)或广域网(WAN)。图1旨在用作例子,而非用作对不同说明性实施例的架构限制。
[0028] 参照图2,提供可用于本公开的各种实施例的示例性数据处理系统的方框图。在这 个说明性例子中,数据处理系统200包括通信结构202,通信结构202提供处理器单元204、 内存206、持久存储器208、通信单元210、输入/输出(I/O)单元212和显示器214之间的 通信。
[0029] 处理器单元204用于执行可被加载到内存206中的软件的指令。根据特定实现方 式,处理器单元204可以是一组的一个或多个处理器,或者可以是多处理器核。另外,可使 用一个或多个异构处理器系统实现处理器单元204,其中主要处理器与辅助处理器存在于 单个芯片上。作为另一说明性例子,处理器单元204可以是包含相同类型的多个处理器的 对称多处理器系统。
[0030] 内存206和持久存储器208是存储装置216的例子。存储装置是能够暂时地和/ 或持久地存储信息(诸如,例如非限制性地,数据、函数形式的程序代
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1