动态指针的消岐制造技术

技术编号:5402262 阅读:191 留言:0更新日期:2012-04-11 18:40
与已知技术相比,动态指针分析技术能够产生更快的指针依赖性测试代码并且对诸如C和C++编程语言(并不排除其它语言)之类的高级语言的更为复杂的代码进行分析。

【技术实现步骤摘要】
【国外来华专利技术】
本申请涉及多处理器计算机系统以及如何通过开发线程级并行来利用这样的计 算机系统中的多个处理器以加速针对单个处理器所设计的程序的领域。
技术介绍
多处理器计算机包括多个处理器和存储器(memory)。所述存储器包含多个存储器 位置。处理器能够使用存储器中的位置的唯一地址利用读或写指令来访问该位置。所述读 和写指令可以是在微处理器中通常使用的指令。这些指令还可以由软件程序来实现以对包 括可由多个处理器访问的位置的全局处理器进行仿真。假设N个程序分段,考虑被划分为以P” P2,…,?,枚举的多个程序分段的程序。 所述程序分段必须以枚举顺序逐个执行以便所述程序在单个处理器上正确执行。该顺序被 称作遵循“串行(sequential)语义”。为了缩短多处理器计算机上程序的执行时间,一些程 序分段在多个处理器上并行执行;也就是说,它们并非根据枚举顺序逐个执行,而是基本同 时执行。如果枚举顺序中的任意两个程序分段I和J,其中I < J,不访问相同的存储器位 置,则程序分段I和J可以并行执行而不会违反串行语义。还可能在确定程序分段I将不 会在程序分段J从一个位置读出之后写入相同位置时并行执行它们。已知的编译器有时可以使用所描述的划分方法将程序划分为程序分段,并且可以 根据以上所确定的条件通过注意到它们是否访问相同存储器位置来试图确定哪些程序分 段可以遵循串行语义而并行执行。由于已知分析方法的局限或者因为所访问的位置在编译 时是未知的,很少程序可以使用已知的编译器方法进行划分以允许程序分段在多处理器计 算机中的多个处理器上并行执行。特别地,如果程序涉及使用指针(如诸如C之类的编程 语言中所使用的)的存储器位置,则编译器通常无法确定使用不同指针的两个程序分段是 否能够并行执行。这是因为在编译时刻无法确定所述指针在程序执行时是否指向相同的存 储器位置。在一种称为动态指针消岐技术的技术族中,其目标是通过向程序中插入依赖性测 试代码来确定两个或更多指针在运行期间是否能够访问相同的存储器位置。如果能够确定 两个指针绝对不会访问相同的位置,则可能允许更多的程序分段并行执行。由此,动态指针 消岐技术可以增加线程级的并行。给定的动态指针消岐技术在通过增加线程级的并行而加快应用的执行时间方面 有多么成功的两个重要标准包括(1)能够产生快速依赖性测试代码(这通常会导致开销 延时有所减少)的技术在加快应用的执行时间方面会比产生较慢依赖性测试代码的技术 更为成功;以及(2)能够对更为复杂的程序构造进行分析的技术能够潜在地创造出额外的 机会来实现线程级的并行,并且由此减少应用的执行时间。
技术实现思路
在此给出了一种动态指针消岐技术,其可以产生更快的指针依赖性测试代码并且 对高级语言的更为复杂的代码进行分析。在一个方面,提供了一种计算机实现的用于执行动态指针消岐的方法,包括定位 要并行的代码分段内的一个或多个索引表达式;生成代码,所述代码在运行时通过计算第 一存储器分配区域的下界和上界而建立 用于要并行的所述代码分段中的第一指针的所述 第一存储器分配区域,其中所述第一存储器分配区域的所述下界和所述上界由所述一个或 多个索引表达式中的至少一个定义;生成代码,所述代码在运行时通过计算第二存储器分 配区域的下界和上界而建立用于要并行的所述代码分段中的第二指针的所述第二存储器 分配区域,其中所述第二存储器分配区域的所述下界和所述上界由所述一个或多个索引表 达式中的至少一个定义;以及生成依赖性测试代码,所述依赖性测试代码将所述第一存储 器分配区域的所述下界和所述上界与所述第二存储器分配区域的所述下界和所述上界进 行比较,以确定是否存在重叠,其中所述第一指针和所述第二指针都出现在要并行的所述 代码分段内,并且其中所述第一指针和所述第二指针中的至少一个具有写访问。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,其中不存 在重叠,进一步包括执行所述代码分段的并行版本。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,其中存在 重叠,进一步包括执行所述代码分段的串行版本。在一个方面,提供了一种计算机实现的用于执行动态指针消岐的方法,包括对 要并行的代码分段之前的一个或多个代码分段进行分析,其中代码分段包括一个或多个语 句;插入测试代码分段,其中所述测试代码分段被插入在语句之后,并且其中所述测试代码 分段进行操作以更新存储器分配表,所述存储器分配表包括一个或多个条目,其中所述一 个或多个条目中的每一个包括存储器块(block)的下界和上界;生成在运行时建立用于要 并行的所述代码分段中的指针的存储器分配区域的代码,其中建立用于指针的存储器分配 区域包括将能够由所述指针访问的存储器块的下界和上界与所述存储器分配表进行比较; 以及生成依赖性测试代码,所述依赖性测试代码将用于第一指针的第一存储器分配区域的 第一下界和第一上界与用于第二指针的第二存储器分配区域的第二下界和第二上界进行 比较,以确定是否存在重叠,其中所述第一指针或所述第二指针中的至少一个具有写访问。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,其中分析 包括检测分配存储器块的语句。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,分析包括 检测解除存储器块的分配的语句。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,其中所述 测试代码分段被插入在分配存储器块的所述语句之后,并且其中所述测试代码分段进行操 作以向存储器分配表添加条目,其中所述条目对应于所述存储器块的下界和上界。在另一方面,提供了一种计算机实现的用于执行动态指针消岐的方法,其中所述 测试代码分段被插入在解除存储器块的分配的所述语句之后,并且其中所插入的测试代码 分段进行操作以定位并移除存储器分配表中的条目,其中所述条目对应于所述存储器块的 下界和上界。在一个方面,提供了一种计算机程序产品,其中所述产品存储在有形的计算机可 读介质上,所述产品包括可操作以使得计算机系统执行以下方法的指令,所述方法包括定 位要并行的代码分段内的一个或多个索引表达式;生成代码,所述代码在运行时通过计算 第一存储器分配区域的下界和上界而建立用于要并行的所述代码分段中的第一指针的所 述第一存储器分配区域,其中所述第一存储器分配区域的所述下界和所述上界由所述一个 或多个索引表达式中的至少一个定义;生成代码,所述代码在运行时通过计算第二存储器 分配区域的下界和上界而建立用于要并行的所述代码分段中的第二指针的所述第二存储 器分配区域,其中所述第二存储器分配区域的所述下界和所述上界由所述一个或多个索引 表达式中的至少一个定义;以及生成依赖性测试代码,所述依赖性测试代码将所述第一存 储器分配区域的所述下界和所述上界与所述第二存储器分配区域的所述下界和所述上界 进行比较,以确定是否存在重叠,其中所述第一指针和所述第二指针都出现在要并行的所 述代码分段内,并且其中所述第一指针和所述第二指针中的至少一个具有写访问。在另一方面,提供了一种计算机程序产品,其中不存在重叠,进一步包括执行所述 代码分段的并行版本。在另一方面,提供了一种计算机程序产品,其中存在重叠,进一步包括执行所述代 码分段的串行版本。在一个方面本文档来自技高网
...

【技术保护点】
一种计算机实现的用于执行动态指针消岐的方法,包括:定位要并行的代码分段内的一个或多个索引表达式;生成代码,所述代码在运行时通过计算第一存储器分配区域的下界和上界而建立用于要并行的所述代码分段中的第一指针的所述第一存储器分配区域,其中所述第一存储器分配区域的所述下界和所述上界由所述一个或多个索引表达式中的至少一个定义;生成代码,所述代码在运行时通过计算第二存储器分配区域的下界和上界而建立用于要并行的所述代码分段中的第二指针的所述第二存储器分配区域,其中所述第二存储器分配区域的所述下界和所述上界由所述一个或多个索引表达式中的至少一个定义;以及生成依赖性测试代码,所述依赖性测试代码将所述第一存储器分配区域的所述下界和所述上界与所述第二存储器分配区域的所述下界和所述上界进行比较,以确定是否存在重叠,其中所述第一指针和所述第二指针都出现在要并行的所述代码分段内,并且其中所述第一指针和所述第二指针中的至少一个具有写访问。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:亚历山大布斯克米卡埃尔恩布姆珀施滕斯特伦弗雷德里克沃格
申请(专利权)人:尼玛实验室公司
类型:发明
国别省市:SE[瑞典]

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

1