[发明专利]优化线程栈存储器的管理的系统、方法和计算机程序产品无效
申请号: | 201310675015.3 | 申请日: | 2013-12-11 |
公开(公告)号: | CN103870242A | 公开(公告)日: | 2014-06-18 |
发明(设计)人: | 阿德里安娜·玛丽亚·苏斯内亚;维诺德·格罗弗;肖恩·扬孙·李 | 申请(专利权)人: | 辉达公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 北京市磐华律师事务所 11336 | 代理人: | 谢栒;魏宁 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 优化 线程 存储器 管理 系统 方法 计算机 程序 产品 | ||
1.一种方法,包括:
接收用于程序的源代码;
将所述源代码转译成中间表示(IR);
分析所述IR以标识能使用线程栈存储器中的第一所分配存储器空间的至少两个对象;以及
通过以对所述至少两个对象中的第二对象的引用替换对所述至少两个对象中的第一对象的引用来修改所述IR。
2.根据权利要求1所述的方法,其中所述IR包括LLVM(低级虚拟机编译器基础结构)汇编语言。
3.根据权利要求1所述的方法,其中所述源代码包括由C++、Java、C#以及Cg中的至少一个高级编程语言所指定的多个指令。
4.根据权利要求1所述的方法,其中分析所述IR包括:
标识所述IR中的多个配栈对象;
针对所述多个配栈对象中的每个配栈对象,标识具有对所述配栈对象的访问权的所有变量;
确定哪些配栈对象在所述IR中的相同点处是活的;以及
确定哪些配栈对象能被分配到所述第一所分配存储器空间。
5.根据权利要求4所述的方法,其中分析所述IR进一步包括生成用于所述多个配栈对象中的每个配栈对象的活性网。
6.根据权利要求5所述的方法,其中所述活性网包括用于所述配栈对象的def和use的合集。
7.根据权利要求1所述的方法,其中将所述源代码转译成所述IR由实现在用于图形处理单元的驱动程序中的编译器实施。
8.根据权利要求7所述的方法,其中所述源代码包括着色器程序。
9.根据权利要求1所述的方法,进一步包括:
分析所述IR以标识能使用所述线程栈存储器中的第二所分配存储器空间的至少两个附加的对象;以及
通过以对所述至少两个附加的对象中的第二对象的引用替换对所述至少两个附加的对象中的第一对象的引用来修改所述IR。
10.根据权利要求9所述的方法,其中分析所述IR以标识至少两个附加的对象包括:
标识与使用所述第一所分配存储器空间的另一个对象冲突的第一附加的对象;以及
标识与使用所述第一所分配存储器空间的另一个对象冲突的至少一个附加的对象。
11.一种存储指令的非易失性计算机可读存储介质,所述指令当由处理器执行时使所述处理器实施步骤,包括:
接收用于程序的源代码;
将所述源代码转译成中间表示(IR);
分析所述IR以标识能使用线程栈存储器中的第一所分配存储器空间的至少两个对象;以及
通过以对所述至少两个对象中的第二对象的引用替换对所述至少两个对象中的第一对象的引用来修改所述IR。
12.根据权利要求11所述的非易失性计算机可读存储介质,其中所述IR包括LLVM(低级虚拟机编译器基础结构)汇编语言。
13.根据权利要求11所述的非易失性计算机可读存储介质,其中分析所述IR包括:
标识所述IR中的多个配栈对象;
针对所述多个配栈对象中的每个配栈对象,标识具有对所述配栈对象的访问权的所有变量;
确定哪些配栈对象在所述IR中的相同点处是活的;以及
确定哪些配栈对象能被分配到所述第一所分配存储器空间。
14.根据权利要求11所述的非易失性计算机可读存储介质,其中分析所述IR进一步包括生成用于所述多个配栈对象中的每个配栈对象的活性网。
15.根据权利要求11所述的非易失性计算机可读存储介质,其中将所述源代码转译成所述IR由实现在用于图形处理单元的驱动程序中的编译器实施。
16.一种系统,包括:
存储器,其配置为存储用于程序的源代码;以及
处理单元,其配置为:
接收所述源代码,
将所述源代码转译成中间表示(IR),
分析所述IR以标识能使用线程栈存储器中的第一所分配存储器空间的至少两个对象,以及
通过利用以对所述至少两个对象中的第二对象的引用替换对所述至少两个对象中的第一对象的引用来修改所述IR。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辉达公司,未经辉达公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310675015.3/1.html,转载请声明来源钻瓜专利网。