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

在运行时绑定常量以提高资源利用率制造技术

技术编号:21605023 阅读:24 留言:0更新日期:2019-07-13 18:03
即时(JIT)编译器在运行时将常量绑定到特定的存储器位置。JIT编译器解析源自多线程应用程序的程序代码,并识别引用统一常量的指令。然后,JIT编译器确定指针链,其源自多线程应用程序中指定的根表内,并以统一常量结束。JIT编译器生成用于遍历指针链的附加指令,并将这些指令插入到程序代码中。并行处理器执行此经编译的代码,并且在这样做时,使线程遍历指针链并在运行时将统一常量绑定到统一寄存器。然后,在并行处理器上执行的一组线程中的每个线程可以访问统一常量。

Binding constants at runtime to improve resource utilization

【技术实现步骤摘要】
在运行时绑定常量以提高资源利用率相关申请的交叉引用本申请要求于2017年11月14日提交的序列号为62/586,031、标题为“用于提高资源利用率的统一数据路径(UniformDatapathforImprovedResourceUtilization)”的美国临时专利申请的优先权权益。该相关申请的主题内容在此通过引用并入本文。
技术介绍

本专利技术的实施例总地涉及多线程处理,更具体地,涉及在运行时绑定常量以提高资源利用率。相关技术的描述传统的多线程应用程序可以在并行处理器上执行。在这样的实现方式中,多个线程通常彼此并行地执行多线程应用程序的部分以执行各种计算。例如,线程集中的每个线程可以同时执行图形处理管线的像素着色器阶段,以在渲染图形场景时计算像素的颜色值。在执行期间,线程常常基于一个或更多个常量执行它们各自的计算。常量通常是浮点或整数值,其在应用程序的生命周期内不会发生变化。例如,给定常量可以定义驻留在图形场景中的特定材料的反射率。这些常量的值通常存储在常量库中。在操作中,执行多线程应用程序的部分的线程集访问该常量库以便执行计算。比如上面所提到的。例如,当渲染包括具有给定反射率值的材料的图形场景时,该线程集中的每个线程将从该常量库读取该反射率值。然后,每个线程将基于反射率值生成一个或更多个像素的颜色值。传统的并行处理器通常具有有限数量的常量库(在一些实现中为十四个),因此仅能存储固定数量的常量值。因此,在传统并行处理器上执行的多线程应用程序通常被约束为仅基于固定数量的常量值执行计算。这种约束具有某些缺点。特别地,某些标准应用程序编程接口(API)要求多线程应用程序可以访问比传统并行处理器中包括的有限数量的常量库可以存储的数量多得多的常量。在不提供对更多常量的访问的情况下,传统的并行处理器只能实现对这些标准API的部分合规。仅部分符合标准API的并行处理器有着可能不被视为开发行业内多线程应用程序的可接受平台的风险。如前所述,本领域需要的是用于在执行多线程应用程序时存储和访问常量的更有效率的技术。
技术实现思路
本专利技术的一个实施例阐述了用于绑定(bind)常量的计算机实现的方法,包括基于包括在多线程应用程序中的第一指令确定第一指针链,其中第一指针链指示与第一常量相关联的第一存储器位置,基于第一指针链生成附加指令集,使得第一线程集中包括的第一线程执行该附加指令集,其中第一线程在执行该附加指令集时将第一常量复制到第二存储器位置,以及使得第一线程集中包括的每个线程执行第二指令,其中第一线程集中包括的每个线程在执行第二指令时使用第一常量执行第一操作。所公开方法的一个优点是多线程应用程序可以引用许多常量,其不受专用常量库的存储容量限制。因此,实现此方法的并行处理器可完全符合DX12API的第三层(Tier3)。附图说明因此,可以通过参考实施例获得可以详细地理解本专利技术的上述特征的方式、上面简要概述的本专利技术的更具体的描述,其中一些实施例在附图中示出。然而,应当注意,附图仅示出了本专利技术的典型实施例,因此不应视为限制本专利技术的范围,因为本专利技术可允许其他同等有效的实施例。图1是被配置为实现本专利技术的一个或更多个方面的计算机系统的框图;图2是根据本专利技术的各种实施例的包括在图1的并行处理子系统中的并行处理单元的框图;图3A是根据本专利技术的各种实施例的包括在图2的并行处理单元中的通用处理集群的框图;图3B是根据本专利技术的各种实施例的图3A的流式多处理器的更详细的图示;图4示出了根据本专利技术的各种实施例的如何将统一寄存器分配给线程组用于执行指令块;图5示出了根据本专利技术的各种实施例的图4的根表如何经由指针链引用常量;图6示出了根据本专利技术的各种实施例的图4的编译器如何生成用于遍历指针链的指令;图7是根据本专利技术的各种实施例的用于在运行时绑定常量的方法步骤的流程图。具体实施方式在以下描述中,阐述了许多具体细节以提供对本专利技术的更透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有一个或更多个这些具体细节中的情况下实践本专利技术。如上所述,传统的并行处理器具有有限数量的常量库,因此,只能存储固定数量的常量值。因此,在这样的处理器上执行的传统多线程应用程序不能执行具有多于固定数量的常量值的计算。在不提供对更大数量的常量的访问的情况下,传统的并行处理器只能实现对行业标准API的有限合规,更具体地,不能符合DirectX12(DX12)API的第三层。与DX12的第三层不合规的并行处理器可能不被视为开发多线程应用程序的可接受平台。为了解决该问题,本专利技术的实施例包括被配置为在运行时绑定常量的即时(just-in-time,JIT)编译器。JIT编译器解析源自多线程应用程序的程序代码,并识别引用统一常量的指令。然后,JIT编译器确定指针链,其源自多线程应用程序中指定的根表,并以统一常量结束。JIT编译器生成用于遍历指针链的附加指令,并将这些指令插入到程序代码中。并行处理器执行该经编译的代码,并在此过程中遍历指针链以在运行时将统一常量绑定到统一寄存器。然后,在并行处理器上执行的一组线程中的每个线程可以访问统一常量。这种方法的一个优点是多线程应用程序可以引用许多常量值,这些常量值仅受可用堆存储器的量的限制,而不受常量库的存储容量的限制。因此,实现该方法的并行处理器可完全符合DX12API的第三层。因为符合行业标准API对于并行处理器的成功是至关重要的,所以本文公开的方法代表了相对于不能提供这种合规性的传统技术的重大技术改进。系统总览图1是被配置为实现本专利技术的一个或更多个方面的计算机系统100的框图。概括地说,计算机系统100可以是包括存储器、并行处理单元或图形处理单元和中央处理单元的任何系统。然而,如图所示,计算机系统100包括但不限于中央处理单元(CPU)102和系统存储器104,系统存储器104经由存储器桥105和通信路径113耦合到并行处理子系统112。存储器桥105进一步经由通信路径106耦合到I/O(输入/输出)桥107,并且I/O桥107又耦合到开关116。在操作中,I/O桥107被配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并且将输入信息经由通信路径106和存储器桥105转发到CPU102以进行处理。开关116被配置为在I/O桥107与计算机系统100的其他组件(例如网络适配器118和各种插卡120和121)之间提供连接。还如图所示,I/O桥107耦合到系统盘114,系统盘114可以被配置为存储内容和应用程序以及数据以供CPU102和并行处理子系统112使用。一般情况下,系统盘114提供用于应用程序和数据的非易失性存储器,可包括固定的或可移除的硬盘驱动器、闪存设备和CD-ROM(光盘只读存储器)、DVD-ROM(数字通用盘ROM)、蓝光、HD-DVD(高清晰度DVD)或其他磁、光或固态存储设备。最后,虽然未明确示出,但是其他组件(例如通用串行总线或其他端口连接、光盘驱动器、数字通用盘驱动器、胶片记录设备等)也可以连接到I/O桥107。在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议来实现,包括但不限于本文档来自技高网
...

【技术保护点】
1.一种用于绑定常量的计算机实现的方法,所述方法包括:基于包括在多线程应用程序中的第一指令确定第一指针链,其中所述第一指针链指示与第一常量相关联的第一存储器位置;基于所述第一指针链生成附加指令集;使得包括在第一线程集中的第一线程执行所述附加指令集,其中所述第一线程在执行所述附加指令集时将所述第一常量复制到第二存储器位置;以及使得包括在所述第一线程集中的每个线程执行第二指令,其中包括在所述第一线程集中的每个线程在执行所述第二指令时使用所述第一常量执行第一操作。

【技术特征摘要】
2017.11.14 US 62/586,031;2018.02.14 US 15/897,0901.一种用于绑定常量的计算机实现的方法,所述方法包括:基于包括在多线程应用程序中的第一指令确定第一指针链,其中所述第一指针链指示与第一常量相关联的第一存储器位置;基于所述第一指针链生成附加指令集;使得包括在第一线程集中的第一线程执行所述附加指令集,其中所述第一线程在执行所述附加指令集时将所述第一常量复制到第二存储器位置;以及使得包括在所述第一线程集中的每个线程执行第二指令,其中包括在所述第一线程集中的每个线程在执行所述第二指令时使用所述第一常量执行第一操作。2.如权利要求1所述的计算机实现的方法,其中确定所述第一指针链包括:基于与所述多线程应用程序相关联的根表确定第一指针,其中所述第一指针指示描述符堆基址;以及基于所述第一指针确定第二指针,其中所述第二指针指示包括所述第一存储器位置的存储器区域。3.如权利要求1所述的计算机实现的方法,其中确定所述第一指针链包括基于与所述多线程应用程序相关联的根表确定第一指针,并且其中所述第一指针指示包括所述第一存储器位置的存储器区域。4.如权利要求1所述的计算机实现的方法,还包括:确定包括在所述多线程应用程序中的第三指令指示存储在与所述多线程应用程序相关联的根表中的第二常量;以及使得所述第一线程集中包括的每个线程访问所述根表内的所述第二常量。5.如权利要求1所述的计算机实现的方法,其中在执行所述多线程应用程序的至少一部分的同时生成所述附加指令集,并且其中在执行所述多线程应用程序的至少一部分的同时所述第一线程执行所述附加指令集。6.如权利要求1所述的计算机实现的方法,还包括基于所述第一指针链生成所述第二指令,其中在执行所述多线程应用程序的至少一部分的同时生成所述第二指令,并且其中在执行所述多线程应用程序的至少一部分的同时所述第一线程集中的每个线程执行所述第二指令。7.如权利要求1所述的计算机实现的方法,还包括:使得调度器调度所述第一线程以执行所述第二指令;以及使得所述调度器调度包括在所述第一线程集中的第二线程以执行所述第二指令,其中所述第一线程独立于所述第二线程被调度。8.如权利要求1所述的计算机实现的方法,其中,所述第一指针链包括与所述第一存储器位置相对应的第一虚拟地址,并且所述方法还包括:基于所述第一虚拟地址生成第三指令;以及使得所述第一线程执行所述第三指令,其中执行所述第三指令使得所述第一线程修改所述第一虚拟地址以对应于与第二常量相关联的第二存储器位置。9.如权利要求1所述的计算机实现的方法,其中,所述第一常量包括与由所述多线程应用程序定义的图形场景中包括的材料相关联的材料属性的值。10.一种非暂时性计算机可读介质,存储程序指令,所述程序指令在由处理器执行时使得所述处理器通过执行以下步骤绑定常量:基于包括在多线程应用程序中的第一指令确定第一指针链,其中所述第一指针链指示与第一常量相关联的第一存储器位置;基于所述第一指针链生成附加指令集;使得包括在第一线程集中的第一线程执行所述附加指令集,其中所述第一线程在执行所述附加指令集时将所述第一常量复制到第二存储器位置;以及使得包...

【专利技术属性】
技术研发人员:阿杰伊·蒂鲁马拉杰克·肖凯特M·帕特尔瑟利斯·加德雷P·考希克A·格雷瓦尔谢卡尔·迪韦卡A·达科夫斯基
申请(专利权)人:辉达公司
类型:发明
国别省市:美国,US

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

1