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

软件导向的发散分支目标优先级制造技术

技术编号:37229953 阅读:32 留言:0更新日期:2023-04-20 23:12
本公开公开了软件导向的发散分支目标优先级,具体公开了指令集架构扩展,用于在SIMT计算平台上配置不同目标分支指令的优先级排序,以使编译器等工具(例如,在执行分析器的影响下)或人类软件开发人员能够在代码中明确配置分支方向优先级。公开了简单(双向)分支指令以及多目标(多于两个分支目标指令)的扩展。以及多目标(多于两个分支目标指令)的扩展。以及多目标(多于两个分支目标指令)的扩展。

【技术实现步骤摘要】
软件导向的发散分支目标优先级
[0001]相关申请的交叉引用
[0002]本申请根据35USC 119(e)要求于2021年10月8日提交的标题为“SOFTWARE

DIRECTED DIVERGENT BRANCH TARGET PRIORITIZATION(软件导向的发散分支目标优先级)”的美国申请序号63/253,769的优先权和权益,其内容通过引用整体并入本文。

技术介绍

[0003]诸如图形处理单元(GPU)的一些类型的处理器以单指令多线程(SIMT)方式执行称为线程束(warp)的线程组,其中线程束中的多个线程并行执行相同的指令。线程束是一组线程,被分组以在处理器上一起执行。例如,线程束可以包括光线追踪应用程序的32个线程,每个线程追踪单个光线。
[0004]当各个线程采用发散的执行路径时,不再可能并行执行,并且发散路径被暂时串行化以供执行。这被称为线程发散,即在第一线程中执行的下一条指令与在第二线程中执行的下一条指令位于不同的程序计数器位置的条件。例如,在光线追踪应用中,当光线遇到一个表面时,它可能会触发一个着色器来处理光线与表面之间的交互,这可能会导致产生额外的(例如,反射的)光线,从而导致线程发散。
[0005]当线程发散发生时,处理器可以选择一个路径来执行,而空闲线程采用另一个或更多个路径。在某些计算平台上,例如提供的那些计算平台,称为收敛屏障单元(CBU)或简称为“屏障单元”的逻辑决定了发散代码的执行顺序,并严格根据每个可能分支目标的线程基数对分支目标进行优先级排序。当执行的代码包含发散的if

then

else语句时,开发人员不知道代码将执行的顺序。动态地,任何一种排序都是可能的:“then”后跟“else”,或“else”后跟“then”。此外,除了严格由CBU决定之外,给定静态分支的排序对于每个线程束可能都不同。
[0006]在一些计算平台上,提供了使执行线程能够将执行切换到有条件地不同的目标线程的YIELD指令。但是,该指令可能会打破收敛障碍,并且不会提高高速缓存局部性。
[0007]“线程分片化(Warp sharding)”是指在多个并行执行线程组(称为分片)中执行线程束。分片是线程束中一个或更多个线程的子集,它们完全收敛,例如,没有发散,因此都并行执行相同的指令程序计数器。计算机应用程序,特别是一些图形应用程序,可以作为多个发散的分片执行。术语“计算机应用程序”应理解为是指存储在机器存储器中并由一个或更多个计算机处理器执行的任何可执行软件指令。
附图说明
[0008]为了容易地识别对任何特定元素或动作的讨论,参考数字中的一个或更多个最高有效数字是指第一次引入该元素的图号。
[0009]图1描绘了根据一个实施例的分片发散100。
[0010]图2描绘了根据一个实施例的分支优先级排序。
[0011]图3描绘了根据另一个实施例的分支优先级排序。
[0012]图4描绘了根据一个实施例的并行处理单元402。
[0013]图5描绘了根据一个实施例的通用处理集群500。
[0014]图6描绘了根据一个实施例的存储器分区单元600。
[0015]图7描绘了根据一个实施例的流式多处理器700。
[0016]图8描绘了根据一个实施例的处理系统800。
[0017]图9描绘了根据另一个实施例的示例性处理系统900。
[0018]图10描绘了根据一个实施例的图形处理管线1000。
[0019]图11描绘了根据一个实施例的电路系统1102。
具体实施方式
[0020]以下描述涉及用于目标分支指令的优先级排序的机制,其应该被理解为意味着条件执行目标的优先级排序,即,执行流中的不同的下一个程序计数器位置。
[0021]优先级分支的现有解决方案明确地将执行代码分成多个部分。例如,一个if

then

else语句可以表示为两个连续的if

then语句,其中第二个语句使用与第一个相反的分支条件。这种方法的一个缺点是,根据执行变换的时间,后端编译器可能会失去条件路径互斥的语义理解。此外,这种变换可能会掩盖代码提升的机会。
[0022]对于多路分支,一种解决方案是实现逻辑或利用人类开发人员的努力来基于分支目标对线程进行排序,从而对分支目标进行优先级排序,但这涉及将多路分支包装在一个循环中,该循环依次选择在每次迭代上执行的目标子集,这很复杂并且可能会受到较差的性能影响。
[0023]公开了技术的实施例以使软件能够对分支目标进行优先级排序。换言之,描述了配置诸如机器处理器电路和图形处理单元之类的硬件以执行这种优先级排序的机器指令技术。从软件控制执行顺序的实用性包括:1)一个执行路径可能需要尚不可用的资源,或者相反,当前被线程束锁定;2)一条执行路径可能依赖于未完成操作的结果,如果执行推迟到另一条路径,这些操作可能会完成;3)一条执行路径可能涉及高内存利用率,并且首先执行效率更高,然后“让步”给其他线程(即,子线程束交错);4)选择跨子分区的线程同时执行具有相似地址的着色器,以改善指令高速缓存局部性。
[0024]公开了用于指导优先级排序以选择线程的软件机制。诸如编译器之类的软件工具(例如,在执行分析器的影响下)或人类软件开发人员可以在代码中明确配置分支方向优先级排序。这些机制可以减少线程发散和延迟敏感度,和/或提高线程占用率。
[0025]从以下附图、描述和权利要求中,其他技术特征对于本领域技术人员来说是显而易见的。
[0026]图1描绘了一个实施例中的分片发散100。线程束中应用程序的SIMT执行并行执行线程的相同指令。当应用程序中达到发散点时,这会导致线程束的执行分裂成分片并序列化。当线程有共同的指令时,执行会在稍后的某个时间点重新收敛。
[0027]在分片发散100示例中,应用程序代码102包括依赖于线程局部值(线程id的值,threadldx.x)的发散分支。应用程序代码102的线程束104在条件评估时分裂成发散线程106,导致线程发散108成为执行指令A和B的四个线程的第一分片110,以及执行指令X和Y的不同组的四个线程的第二分片112。分片110和分片112的串行执行被称为线程束分片化
114。线程束104的线程重新收敛116发生在指令Z处,线程束分片化114停止,线程束104的线程再次执行平行。
[0028]在一个方面,一种系统包括至少一个处理器和逻辑,该逻辑将所述至少一个处理器配置为将用于串行执行的分支指令的贯穿(fall

through)目标指令优先于分支指令的替代目标指令。贯穿目标指令和替代指令包括发散代码块的第一指令。分支指令可以实现为非优先分支指令(例如,BR.FT)的修饰符,或实现为与非优先分支指令(例如,BR)不同的指令(例如,BRPFT)。
[0029]图2描绘了在一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种系统,包括:至少一个处理器;以及逻辑,其将所述至少一个处理器配置为将用于串行执行的分支指令的贯穿目标指令的优先级高于所述分支指令的替代目标指令。2.如权利要求1所述的系统,其中,所述贯穿目标指令和所述替代目标指令包括发散代码块的第一指令。3.如权利要求1所述的系统,其中,所述分支指令被实现为非优先分支指令的修饰符。4.如权利要求1所述的系统,其中,所述分支指令被实现为与非优先分支指令不同的指令。5.如权利要求1所述的系统,所述至少一个处理器包括图形处理单元。6.一种系统,包括:至少一个处理器;以及逻辑,其将所述至少一个处理器配置为应用分支指令来设置多个目标指令的执行优先级。7.如权利要求6所述的系统,其中,所述目标指令的数量等于两个。8.如权利要求7所述的系统,其中,所述分支指令将所述至少一个处理器配置为使得用于串行执行的所述分支指令的贯穿目标指令的优先级高于所述分支指令的替代目标指令。9.如权利要求6所述的系统,其中,所述目标指令的数量大于两个。10.如权利要求9所述的系统,所述分支指令还包括将所述至少一个处理器配置为以相同优先级执行所有所述目标指令的默认值。11.如权利要求9所述的系统,其中,所述分支指令包括向量寄存器操作数...

【专利技术属性】
技术研发人员:S
申请(专利权)人:辉达公司
类型:发明
国别省市:

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

1