当前位置: 首页 > 专利查询>ARM有限公司专利>正文

数据处理系统技术方案

技术编号:15573553 阅读:124 留言:0更新日期:2017-06-11 23:29
数据处理系统。该数据处理系统具有:执行流水线,包括执行指令以进行数据处理操作的一个或更多个可编程执行级,执行线程被组合成线程组,线程组的线程一次一个指令地锁步执行。该系统还包括:编译用于执行流水线的程序以生成针对执行级的指令的编译器,其被配置成针对要由执行级针对线程组执行的、包括存储器事务的操作:向执行级发出用于执行针对线程组的操作的指令或指令集以针对作为整体的线程组执行操作;并且向线程组的所有活动线程提供操作的结果。响应于用于执行针对线程组的操作的指令或指令集,执行流水线的至少一个执行级被设置成:针对作为整体的线程组执行操作;并且向线程组的所有活动线程提供操作的结果。

【技术实现步骤摘要】
数据处理系统
本专利技术涉及数据处理系统,并且具体地,涉及包括一个或更多个可编程处理级(“着色器(shader)”)的图形处理系统的操作。
技术介绍
图形处理通常按流水线方式来执行,并且一个或更多个流水线级(stage)针对数据进行操作以生成最终渲染(render)输出,例如,被显示的帧。许多图形处理流水线现在包括一个或更多个可编程处理级,通称为“着色器”。例如,图形处理流水线可以包括以下中的一个或更多个,并且典型地包括全部:几何着色器、顶点着色器以及片段(像素)着色器。这些着色器是可编程处理级,它们针对输入的数据值执行着色器程序以生成需要的输出数据集(例如,在顶点着色器的情况下,恰当地变换并照亮顶点数据),以供图形流水线的其余部分处理和/或输出。图形处理流水线的着色器可以共用可编程处理电路,或者它们都可以是独特的可编程处理单元。
技术实现思路
图形处理单元(GPU)着色器核心是这样的处理单元,即,其通过针对诸如渲染目标的要生成的图形输出(例如,帧)中的每一个图形项运行小程序来执行图形处理(在这点上,“项”通常是顶点或片段(像素))。这通常使能实现高度并行性,因为典型的渲染输出(例如,帧)展现了相当大量的顶点和片段,每一个顶点和片段都可独立处理。要由图形处理流水线的指定“着色器”执行的着色器程序将由需要利用高级着色器编程语言(如GLSL、HLSL、OpenCLC等)的图形处理的应用来提供。着色器程序将由表示按相关语言标准(规范)定义的希望编程步骤的“表达式”构成。接着,高级着色器程序被着色器语言编译器翻译成用于目标图形处理流水线的二进制代码。该二进制代码将由“指令”构成,所述指令在用于所指定的目标图形处理流水线的指令集规范中指定。用于将着色器语言表达式转换成二进制代码指令的编译处理可以经由编译器内的程序的许多中间表述来进行。因此,用高级着色器语言编写的程序可以被翻译成编译器专用中间表示(并且在该编译器内可以有几个连续中间表示),并且最终中间表示被翻译成用于目标图形处理流水线的二进制代码指令。改进着色器执行效率的一种已知方式是将执行线程(其中,每一个线程例如对应于一个顶点或一个片段(像素))分组成线程“组”或“束”,其中,一组中的线程一次一个指令地锁步运行,即,该组中的每一个线程在移动到下一指令之前执行相同的单一指令。这样,可以在该组中的所有线程之间共享指令装入(fetch)和调度资源。(用于这些线程组的其它术语包括:“子组”、“warp”以及“波前(wavefront)”)。为方便起见,在此将使用术语线程组,但这旨在涵盖所有等同术语和排布结构,除非另外加以表明)。在这种线程组中,针对每一个线程执行共享指令,并且在特定线程需要存储器存取(例如,针对加载、存储以及原子(atomics))时,通过该线程获取“锁定(lock)”,以确保独占地存取该线程访问的存储器中的数据,即,排除其它线程访问该存储器位置,每一个线程都获取独立的锁定。然而,因为该线程不能保证所有情况下的独立前向进展(因为由一个线程执行的一些步骤可能取决于其它线程执行的其它步骤),所以一个线程获取的锁定可能造成整个线程组的死锁。这接着造成这些线程中的一个或更多个无限期地拖延,等待该锁定变得可用。例如,简单的代码序列可以非直观地死锁。这是因为该序列需要代码流分支(divergence),并且来自分支路径(即,具有不同程序计数器)的线程必须从执行中掩蔽掉。在具有“最低程序计数器优先(lowestprogramcounterfirst”)”安排策略的系统中,未获得锁定的线程因此有利,但这些线程接着无限期地空转,等待所述锁定。该问题的一种解决方案是将代码重新排序,以适应所用特定系统的调度行为,例如,利用下列代码序列:然而,这要求编译器不优化指令序列,或者支持针对指令的语义排序。因此,申请人认为,存在改进线程组的处理的余地,例如,在包括一个或更多个着色器级的图形处理流水线中。根据本专利技术的第一方面,提供了一种操作数据处理系统的方法,所述数据处理系统包括执行流水线,所述执行流水线包括执行用于执行数据处理操作的指令的一个或更多个可编程执行级,并且其中,执行线程被一起组合成线程组,其中,所述线程组中的线程一次一个指令地锁步执行,该方法包括以下步骤:针对要由所述数据处理系统的所述执行流水线的执行级针对线程组执行的、包括存储器事务的操作来说:向所述执行级发出指令或指令集,以使所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果,并且响应于所述指令或指令集,所述执行流水线的所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果。根据本专利技术的第二方面,提供了一种数据处理系统,该数据处理系统包括:执行流水线,该执行流水线包括执行用于执行数据处理操作的指令的一个或更多个可编程执行级,并且其中,执行线程被一起组合成线程组,其中,所述线程组中的线程被一次一个指令地锁步执行;以及编译器,该编译器编译针对所述执行流水线的程序,以生成用于所述执行流水线的所述执行级的指令,其中,所述编译器被配置成,针对所述执行流水线的执行级要针对线程组执行的、包括存储器事务的操作:向所述执行级发出指令或指令集,以使所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果,并且其中,所述执行流水线的至少一个执行级被配置成响应于所述指令或指令集:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果。本专利技术涉及执行数据处理流水线中的操作,其中,执行线程被一起组合成线程组(“warp”),并且线程组中的线程被一次一个指令地锁步执行,即,线程组中的每一个线程在移动到下一指令之前执行相同的单一指令。线程组可以包含任何合适和需要数量的线程。优选地,线程组由四个单独线程组成。在本专利技术中,针对要执行的一个或更多个操作(涉及存储器事务的操作),向所述执行流水线的可编程执行级发出针对所述操作由线程组的所述线程执行的指令或指令集。所述指令或指令集针对作为整体的所述线程组执行,并且线程组(warp)范围的操作的结果被递送至所述线程组中的所有活动线程。(活动线程是当前正在执行指令或者正在等待执行指令的线程,即,与已经分支或终止它们的执行的不活动线程相反)。由此,不针对所述线程组中的每一个线程来执行针对所述操作的所述指令或指令集,而是针对作为整体的所述线程组,由所述执行级来执行所述指令或指令集。通过针对作为整体的所述线程组执行所述操作,即,针对以锁步执行的所有活动线程,有助于防止线程死锁。这是因为,针对线程组中的所有活动线程一起执行操作,使得在线程可以执行所述操作之前,没有线程必须等待针对另一线程的操作完成,例如,在利用锁来访问存储器的同时。而且,因为针对作为整体的所述线程组来执行所述操作,并由此例如使各个线程单独地执行所述操作变得冗余,所以减少了所涉及的处理、所需带宽、所传递的数据以及由此消耗的电力。所述操作可以包括涉及存储器事务的任何合适和需要的数据处理操作。在优选实施方式中,所述操作包括原子操作(atomicoperation)。“原子”存储器操作是读取存储器位置、在存储本文档来自技高网...
数据处理系统

【技术保护点】
一种操作数据处理系统的方法,所述数据处理系统包括执行流水线,所述执行流水线包括执行指令以进行数据处理操作的一个或更多个可编程执行级,并且其中,执行线程被一起组合成线程组,其中,所述线程组的线程一次一个指令地锁步执行,该方法包括以下步骤:针对要由所述数据处理系统的所述执行流水线的执行级针对线程组执行的、包括存储器事务的操作:向所述执行级发出指令或指令集,以使所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果;并且响应于所述指令或指令集,所述执行流水线的所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果。

【技术特征摘要】
2015.07.03 GB 1511694.01.一种操作数据处理系统的方法,所述数据处理系统包括执行流水线,所述执行流水线包括执行指令以进行数据处理操作的一个或更多个可编程执行级,并且其中,执行线程被一起组合成线程组,其中,所述线程组的线程一次一个指令地锁步执行,该方法包括以下步骤:针对要由所述数据处理系统的所述执行流水线的执行级针对线程组执行的、包括存储器事务的操作:向所述执行级发出指令或指令集,以使所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果;并且响应于所述指令或指令集,所述执行流水线的所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果。2.根据权利要求1所述的方法,其中,要针对所述线程组执行的所述操作包括原子操作。3.根据权利要求1或2所述的方法,其中,所述操作包括锁定操作。4.根据权利要求1或2所述的方法,其中,所述执行流水线的所述执行级通过以下步骤针对作为整体的线程组执行所述操作并且向所述线程组的所有活动线程提供所述操作的结果:针对所述线程组中的一个线程执行所述指令或指令集以针对所述线程执行所述操作,同时掩蔽所述线程组中的、除针对其执行所述指令或指令集的所述线程以外的所有其它线程,以使被掩蔽的线程暂时不活动。5.根据权利要求1或2所述的方法,其中,所述执行级通过以下步骤针对作为整体的线程组执行所述操作并且向所述线程组的所有活动线程提供所述操作的结果:在与所述执行级关联的单独的执行单元中,针对作为整体的所述线程组执行所述操作。6.根据权利要求1或2所述的方法,其中,通过将所述操作的结果写入针对所述线程组中的每一个活动线程的相应的单独存储部,向所述线程组中的所有活动线程提供所述操作的结果。7.根据权利要求1或2所述的方法,其中,通过将所述操作的结果写入所述线程组中的所有活动线程都能够读取的共享存储部,向所述线程组中的所有活动线程提供所述操作的结果。8.根据权利要求1或2所述的方法,其中,要针对线程组执行的、包括存储器事务的所述操作是要由所述执行级执行的程序的一部分,并且该方法还包括以下步骤:在向所述执行级发出针对要由所述执行级执行的所述程序的指令以执行之前,相对于针对作为整体的所述线程组执行所述操作的所述指令或指令集,对所述程序中的指令进行重新排序。9.一种数据处理系统,该数据处理系统包括:执行流水线,该执行流水线包括执行指令以进行数据处理操作的一个或更多个可编程执行级,并且其中,执行线程被一起组合成线程组,其中,所述线程组中的线程一次一个指令地锁步执行;以及编译器,该编译器编译针对所述执行流水线的程序,以生成针对所述执行流水线的执行级的指令,其中,针对要由所述执行流水线的执行级针对线程组执行的、包括存储器事务的操作,所述编译器能够:向所述执行级发出指令或指令集,以使所述执行级:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果;并且其中,响应于所述指令或指令集,所述执行流水线的至少一个执行级能够:针对作为整体的线程组执行所述操作;以及向所述线程组的所有活动线程提供所述操作的结果。10.根据权利要求9所述的数据处理系统,其中,要针对所述线程组执行的所述操作包括原子操作。11.根据权利要求9或10所述的数据处理系统,其中,所述操作包括锁定操作。12.根据权利要求9或10所述的数据处理系统,其中,所述执...

【专利技术属性】
技术研发人员:R·埃利奥特V·普拉萨德
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国,GB

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

1