扩展字段专业化制造技术

技术编号:18609781 阅读:29 留言:0更新日期:2018-08-04 22:53
公开了传统字段专业化过程的四个扩展。第一个扩展是跨应用值流,其中一个值从一个应用转移出来,然后转移到另一个应用。第二个扩展是一个应用间分析。静态和动态分析由Spiff工具集执行,不仅在单个应用的源代码上,而且跨过由该应用读取和写入的数据。第三个扩展是不变量的跨应用程序终止,验证不变量源自一个应用并终止在一个不同应用的专业化机会中的可能性。第四个扩展涉及运行时代码布局算法,以缓解I‑缓存压力和L2‑缓存压力的增加。最大驻留算法在DBMS编译之前使用来自提供的工作负载的动态分析的信息,并使用查询评估计划的特定结构来放置运行时代码,从而保持该代码可能的运行时改进。

【技术实现步骤摘要】
【国外来华专利技术】扩展字段专业化本专利技术由政府支持在NSF授予的补助号IIS0803229、CNS0938948和1318343下进行。政府对本专利技术享有一定的权利。
本专利技术通常涉及扩展到多个应用领域的字段专业化,并且更具体地涉及用于扩展字段专业化以将不变量的特定值超出应用源代码扩展到数据源本身的系统和方法。
技术介绍
数据库管理系统(DBMS)是管理数据的存储和访问的软件程序的集合。由于现在正在生成更大量的数据,因此数据必须进行存储并可高效地访问,所以在各种应用领域都采用了DBMS。在过去四十年中,由这种无处不在的部署所驱动,已经基于通常适用于这些领域的一些数据模型对DBMS进行了设计和工程化。关系数据模型是商业和开源DBMS最常采用的模型之一。已经投入了大量的精力来有效地支持这一数据模型。由于关系数据模型的通用性,关系数据库管理系统本身是通用的,因为它们可以处理用户指定的任何模式以及向其呈现的任何查询或修改。关系运算符基本上对任何关系都起作用,并且必须处理根据潜在关系的任何属性指定的谓词。通过诸如有效的索引结构、创新的并发控制机制和复杂的查询优化策略的创新,今天可用的关系DBMS是非常有效的。这种通用性和效率使得他们在许多领域扩散和应用。然而,这种通用性是通过多层的迂回和复杂的代码逻辑实现的。通过利用在执行此类系统期间存在的不变量值,可进一步提高DBMS的效率。开发字段专业化技术以自动识别不变量并基于不变量实现代码专业化。字段专业化是将spiff插入DBMS代码的过程,从而DBMS可在运行时自身专业化,从而利用运行时的不变量。代表字段专家的“spiff”是在DBMS运行时动态创建专业化代码的代码。专业化的代码比原始未专业化的代码更小更快。字段专业化的得名来自于代码在“字段”专业化的事实,即在DBMS已部署并在最终用户的站点上运行之后。Spiff使用只能在运行时获得的运行时不变量的实际值来动态地产生对于运行时不变量的特定值专业化的代码。将字段专业化扩展到多个应用领域来阐述计算机科学的范式将是合乎需要的。本专利技术的实施方式涉及扩展到多个应用领域的字段专业化,并且更具体地涉及用于扩展字段专业化以将不变量的特定值超出应用源代码扩展到数据源本身的系统和方法。根据本专利技术的一个实施方式,公开了一种生态系统规范以实现字段专业化扩展。该规范说明涉及哪些(可能是多个)应用,哪些(可能是多个)输入数据源被一个或多个应用读取,哪些中间和最终数据产品由这些应用产生,以及哪些服务由应用调用,从而提供有关如何在各种应用之间传达中间结果的有用信息。采集生态系统规范中的输入、中间和最终数据源以及参与计算的多个应用,允许扩展字段专业化。不变量的特定值的流可以超出应用源代码扩展到数据源本身,跨越文件读取和写入操作,甚至通过网络通信,例如将结果数据传递到操作系统(例如Linux),操作系统将该数据传递给联网组件,联网组件随后将数据传递到其他目标。在一些实施方式中,静态和/或动态分析确定专业化机会内的不变量的出现甚至早于在应用内C变量的分配;相反,它来自输入数据文件内特定位置的数据组件,例如油田数据或油田模拟软件所使用的配置参数。一旦确定了这样的值的流,就会在适当的应用中创建spiff,并且当给定特定的油田数据文件时,执行spiff以在油田模拟器应用中产生专业化机会的专业化代码(speccode)。这个专业化代码可以与特定的油田数据文件相关联,从而当该应用运行时,该专业化代码可以动态加载到油田模拟器应用中(或传递给操作系统或存储在IBM集群中)。通过这种方式,参与计算的所有应用都可以通过字段专业化的扩展概念参与和优化。在一些实施方式中,字段专业化扩展的方法包括一系列步骤:(i)确定哪个(扩展的)不变量存在,(ii)确定哪些扩展不变量应该被专业化,(iii)确定一个专业化机会中的哪些代码序列应该确实被专业化,(iv)确定何时执行专业化(以及因此在哪个应用中),(v)确定在何处存储所生成的专业化代码,以及最后(vi)决定如何将专业化代码转移到将调用其的站点(应用)。在一些实施方式中,字段专业化扩展的方法包含扩展步骤(i)以包括来自外部数据或外部应用的不变量,包含步骤(iv)以包括位于与包含spiff使用的不变量源的应用分开的应用中的spiff,且包含步骤(v)和(vi)以包括与被专业化的应用分开存储的专业化代码。在一些实施方式中,公开了一种方法,用于在给定特定工作负载的情况下评估缓存压力,并解决在运行时添加的代码存在的情况下指令缓存未命中的问题,如在微专业化的情况下,何时DBMS经常执行的部分的专业化版本可以加速查询评估。几种新颖的运行时代码布局算法被实现。这些算法包括最大驻留算法,该算法使用DBMS编译之前提供的工作负载的动态分析的信息以及查询评估计划的具体结构来精确地放置运行时代码,从而保留了该代码大部分可能的运行时改进。已经证明,该算法最小化了使用多达1000个动态链接函数的工作负载的I-缓存压力。通过这种算法,在查询评估期间调用的大量函数的积极微专业化可以有效地缓解I-缓存压力的增加以及L2-缓存压力的增加。附图说明通过检查以下附图和详细描述,本专利技术的其它系统、方法、特征和优点对于本领域技术人员来说将是显而易见的或将变得显而易见。所有这些附加的系统、方法、特征和优点旨在包括在本说明书内、包括在本专利技术的范围内,并且由所附权利要求保护。将参考在附图中示出的本专利技术的示例性实施方式。这些图旨在说明而非限制。尽管本专利技术大体上在这些实施方式的背景下描述,但是这样做并不意味着将本专利技术的范围限制为所描绘和描述的实施方式的特定特征。图1是单个应用字段专业化过程的框图。图2是示出根据本专利技术提供的示例性实施方式的spiff工具集的框图。图3是根据本专利技术的一个实施方式涉及三个扩展的字段专业化扩展过程的框图。图4是根据本专利技术一个实施方式的扩展的字段专业化的流程过程的图示。图5是根据本专利技术的一个实施方式的扩展的字段专业化的替代流程过程的图示。图6是根据本专利技术的一个实施方式详述计算机科学范示的字段专业化的图示。图7是根据本专利技术一个实施方式的示例性缓存分级结构。图8是根据本专利技术一个实施方式的具有各种蜜蜂布局的查询22的L1未命中的百分比增长的图示。图9是根据本专利技术一个实施方式的累积缓存线参考柱状图的图示。图10是说明根据本专利技术一个实施方式的配置文件不可知(profile-agnostic)的蜜蜂布局算法的工作流程的框图。图11是说明根据本专利技术一个实施方式的SPP引导蜜蜂布局算法的工作流程的框图。图12是示出了根据本专利技术一个实施方式的查询计划树的阶段的示意图。图13是根据本专利技术的一个实施方式在将代码引入DMBS时评估缓存压力的示例性流程图。图14是表示根据本专利技术的一个实施方式的蜜蜂数量增加对缓存未命中率百分比的影响的示意图。具体实施方式可以根据说明书来执行各种实施和实施方式。所有这些实施和实施方式旨在包括在本专利技术的范围内。本专利技术的许多实施方式可采用计算机可执行指令的形式,包括由可编程计算机执行的算法。然而,本专利技术也可用其它计算机系统配置来实现。本专利技术的某些方面可体现在专用计算机或数据处理器中,该专用计算机或数据处理器被特别编程、配置或构造以执行以下描述的一种或多种计算机可执本文档来自技高网...

【技术保护点】
1.一种用于字段专业化扩展的计算机实现的方法,所述方法包括:从源代码和一个或多个工作负载接收输入;在执行所述一个或多个工作负载时识别所述源代码内的至少一个不变量;在接收所述至少一个识别的不变量的应用中动态地创建至少一个专家;执行所述至少一个专家进行专业化以产生至少一个专业化的代码;和将至少一个专业化的代码动态加载到接收至少一个识别的不变量的至少一个应用中。

【技术特征摘要】
【国外来华专利技术】2015.12.14 US 14/968,2961.一种用于字段专业化扩展的计算机实现的方法,所述方法包括:从源代码和一个或多个工作负载接收输入;在执行所述一个或多个工作负载时识别所述源代码内的至少一个不变量;在接收所述至少一个识别的不变量的应用中动态地创建至少一个专家;执行所述至少一个专家进行专业化以产生至少一个专业化的代码;和将至少一个专业化的代码动态加载到接收至少一个识别的不变量的至少一个应用中。2.如权利要求1所述的计算机实现的方法,其中,所述计算机实现的方法还包括:通过数据如何从一个应用传输到另一个应用的生态系统规范指定跨应用值流。3.如权利要求2所述的计算机实现的方法,其中所述生态系统规范通过利用扩展所述值流的方式注释多个连接路径来指定跨应用值流。4.根据权利要求2或权利要求3所述的计算机实现的方法,其中,所述计算机实现的方法还包括扩展应用间分析以理解所述跨应用值流的语义以及组合单个应用内的值流以计算跨应用值流,并且其中优选地实施所述应用间分析,以确定所述至少一个识别的不变量可以被最佳实例化的位置。5.根据权利要求1所述的计算机实现的方法,其中所述计算机实现的方法还包括验证所识别的至少一个不变量源自一个应用并终止于一个不同应用的专业化机会中的可能性,和/或其中计算机实现的方法还包括识别来自外部数据或外部应用的不变量,和/或其中所述计算机实现的方法进一步包括决定何时对位于一个应用中的专家执行专业化,该应用与包含至少一个识别的不变量的应用分开,和/或其中动态加载所述至少一个专业化的代码包括与所述至少一个专家正在执行的应用分开地存储所述至少一个专业化的代码。6.一种包括计算机可执行指令的非暂时性计算机可读介质,所述计算机可执行指令在由计算设备的处理器执行时使所述计算设备:从应用接收应用代码和一个或多个工作负载;识别所述应用代码和所述一个或多个工作负载代码内的至少一个不变量;在接收至少一个识别的不变量的应用中动态地创建至少一个专家;执行所述至少一个专家进行专业化,以产生至少一个专业化的代码;和输出至少一个专业化的代码。7.根据权利要求6所述的非暂时性计算机可读介质,其中所述字段专业化扩展模块进一步配置为通过数据如何从一个应用传输到另一个应用的生态系统规范指定跨应用值流,和/或其中所述字段专业化扩展模块进一步被配置为扩展应用间分析以理解跨应用程序值流的语义并组合单个应用内的值流以计算跨应用值流,其中优选地实施所述应用间分析,以确定所述至少一个识别的不变量可以被最佳实例化的位置;和/或其中所述字段专业化扩展模块还被配置为验证所识别的至少一个不变量源自应用并终止于一个不用应用的专业化机会中的可能性;和/或其中所述字段专业化扩展模块进一步被配置为识别来自外部数据或外部应用的不变量;和/或其中所述字段专业化扩展模块进一步被配置为决定何时对位于一个应用中的专家执行专业化,该应用与包含至少一个识别的不变量的应用分开;和/或其中至少一个专业化的代码与所述至少一个专家正在执行的应用分开地存储;和/或其中至少一个专业化的代码被动态加载到接收至少一个识别的不变量的至少一个应用中。8.一种用于字段专业化扩展的方法,所述方法包括:识别始发应用内的至少一个不变量的值;基于所识别的值在所述始发应用内创建目标应用的一部分的专业化的代码版本;将专业化的代码传递给目标应用;和调用目标应用中的专业化的代码。9.根据权利要求8所述的用于字段专业化扩展的方法,其...

【专利技术属性】
技术研发人员:理查德·T·斯诺德格拉斯索木亚·K·德布雷张瑞刘洋
申请(专利权)人:数据仓库投资有限公司代表亚利桑那大学的亚利桑那董事会
类型:发明
国别省市:美国,US

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

1