用于在单指令多数据SIMD处理系统中控制发散分支指令的方法和设备技术方案

技术编号:11414773 阅读:98 留言:0更新日期:2015-05-06 14:26
本发明专利技术是针对用于在经受发散线程条件的单指令多数据SIMD处理系统中执行子例程的技术。特别地说,描述一种用于管理发散线程状态的基于恢复计数器的方法,所述方法利用程序模块特定型最小恢复计数器MINRC来有效处理控制流指令。在一些实例中,本发明专利技术的所述技术可包含使用主程序MINRC来控制对主程序模块的所述执行及使用子例程特定型MINRC来控制对子例程程序模块的所述执行。也描述用于在执行子例程调用指令和返回指令时管理所述主程序MINRC和子例程特定型MINRC的技术。也描述用于更新子例程特定型MINRC以确保所述子例程特定型MINRC的所述经更新的MINRC值是在经分配用于所述子例程的程序空间内的技术。

【技术实现步骤摘要】
【国外来华专利技术】用于在单指令多数据SIMD处理系统中控制发散分支指令的方法和设备
本专利技术涉及多线程处理,且更特定来说涉及用于在多线程处理系统中执行子例程的技术。
技术介绍
单指令多数据(SIMD)处理系统是一种类型的并行计算系统,其包含在多个数据块上执行相同指令的多个处理元件。SIMD系统可为独立计算机或计算系统的子系统。举例来说,一或多个SIMD执行单元可用于图形处理单元(GPU)中以实施支持可编程着色的可编程着色单元。SIMD处理系统允许以并行方式在多个处理元件上同步地执行程序的多个执行线程,借此增加其中需要对多个数据块执行相同一组操作的程序的通过量。由于每一线程对不同数据产生作用,所以如果程序包含条件性分支指令,那么有可能针对执行于系统中的一些线程而满足分支条件且针对执行于系统中的其它线程而不满足分支条件。此条件可称作发散分支条件且导致SIMD系统不能够以同步方式在多个处理元件上执行所有线程。
技术实现思路
本专利技术是针对用于在经受发散线程条件的单指令多数据(SIMD)处理系统中执行子例程的技术。特别地说,描述用于管理发散线程的基于恢复计数器的方法,其利用程序模块特定型最小恢复计数器(MINRC)来有效处理控制流指令。如本文中所使用,程序模块可指主程序模块(例如,顶级程序模块)或子例程程序模块。因而,在处理系统中执行的每一子例程可使用子例程特定型MINRC来控制对所述子例程中包含的控制流指令的处理。程序模块特定型MINRC的使用允许实施基于MINRC的控制流的系统支持执行子例程程序指令。在一个实例中,本专利技术描述一种方法,所述方法包含通过一或多个处理器基于第一MINRC来控制对程序的执行。第一MINRC指定指示与所述程序的多个执行线程相关联的多个恢复计数器值中的最小恢复计数器值的值。所述方法进一步包含通过一或多个处理器基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行。第二MINRC指定指示来自多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对子例程的执行时为有效的所有线程。在另一实例中,本专利技术描述包含一或多个处理器的系统,所述一或多个处理器经配置以基于第一MINRC来控制对程序的执行且基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行。第一MINRC指定指示与所述程序的多个执行线程相关联的多个恢复计数器值中的最小恢复计数器值的值。第二MINRC指定指示来自多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对子例程的执行时为有效的所有线程。在另一实例中,本专利技术描述包含用于基于第一MINRC来控制对程序的执行的装置的设备。第一MINRC指定指示与所述程序的多个执行线程相关联的多个恢复计数器值中的最小恢复计数器值的值。所述设备进一步包含用于基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行的装置。第二MINRC指定指示来自多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对子例程的执行时为有效的所有线程。在另一实例中,本专利技术描述存储指令的计算机可读存储媒体,所述指令在执行时致使一或多个处理器基于第一MINRC来控制对程序的执行。第一MINRC指定指示与所述程序的多个执行线程相关联的多个恢复计数器值中的最小恢复计数器值的值。所述指令进一步致使一或多个处理器基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行。第二MINRC指定指示来自多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对子例程的执行时为有效的所有线程。在附图及以下描述中阐述本专利技术的一或多个实例的细节。本专利技术的其它特征、目标和优势将从描述和附图以及从权利要求书显而易见。附图说明图1是说明可用于实施本专利技术的子例程执行技术的实例处理系统的框图。图2是根据本专利技术的更详细地说明图1的实例处理系统中的控制单元的框图。图3是说明可用于实施本专利技术的子例程执行技术的实例控制流模块的框图。图4是说明本专利技术的子例程执行技术的实例控制流的概念图。图5是说明本专利技术的子例程执行技术的另一实例控制流的概念图。图6是根据本专利技术的技术的说明实例程序空间布置的概念图。图7到18是说明利用本专利技术的子例程执行技术的实例指令处理技术的流程图。图19是说明可用于实施本专利技术的子例程执行技术的另一实例控制流模块的框图。图20是根据本专利技术的特征化图19中所说明的控制流模块的示范性操作的状态转变图。图21是根据本专利技术的特征化图19中所说明的控制流模块的示范性操作的状态转变表。图22到28说明用于实施本专利技术的子例程执行技术的实例伪码。图29是根据本专利技术的说明用于基于程序模块特定型MINRC来控制处理系统的实例技术的流程图。图30是根据本专利技术的说明用于执行子例程调用指令的实例技术的流程图。图31是根据本专利技术的说明用于执行子例程返回指令的实例技术的流程图。具体实施方式本专利技术是针对用于在经受发散线程条件的单指令多数据(SIMD)处理系统中执行子例程的技术。特别地说,描述用于管理发散线程的基于恢复计数器的方法,其利用程序模块特定型最小恢复计数器(MINRC)来有效处理控制流指令。如本文中所使用,程序模块可指主程序模块(例如,顶级程序模块)或子例程程序模块。因而,在处理系统中执行的每一子例程可使用子例程特定型MINRC来控制对所述子例程中包含的控制流指令的处理。程序模块特定型MINRC的使用允许实施基于MINRC的控制流的系统支持执行子例程程序指令。在一些实例中,本专利技术的技术可包含使用主程序MINRC来控制对主程序的执行及使用子例程特定型MINRC来控制对由主程序或由其它子例程调用的子例程的执行。主程序MINRC值可指示来自一组一或多个恢复计数器值的最小恢复计数器值,所述一组一或多个恢复计数器值对应于在起始对主程序的执行时为有效的所有线程(其通常为执行于系统中的所有线程)。类似地,每一子例程特定型MINRC可指定指示来自一组一或多个恢复计数器值的最小恢复计数器值的值,所述一组一或多个恢复计数器值对应于在起始对相应子例程的执行时为有效的所有线程。每一恢复计数器值可对应于执行于处理系统上的多个线程中的相应者,且如果所述相应线程无效,那么恢复计数器值可指示所述无效线程经调度以再激活所处的程序计数器值。当一或多个线程被去活时,当前控制处理系统的执行的MINRC可用于控制在向前跳跃之后或在向前分支指令之后执行哪个指令。举例来说,在某些情况下,在执行向前跳跃指令或向前分支指令之后,处理系统可将由MINRC指示的指令选择为将执行的下一指令。通过将独立的MINRC用于主程序和用于子例程中的每一者,处理系统可确保子例程不从子例程分支到主程序中或分支到不在调用或返回指令的执行范围中的另一子例程中。这样,本专利技术的技术可确保用于在使用MINRC来控制对向前跳跃指令和向前分支指令的执行的处理系统中执行子例程的恰当控制流。根据本专利技术的一些方面,描述用于切换MINRC的技术,所述MINRC用于在进入和退出子例程之后即刻切换控制对处理系统的执行。举例来说,响应于执行调用指令,处理系统可经配置以:保存对应于调用者程序的MINRC的状态;初始化对应于子例程程序的新本文档来自技高网...
用于在单指令多数据SIMD处理系统中控制发散分支指令的方法和设备

【技术保护点】
一种方法,其包括:通过一或多个处理器基于第一最小恢复计数器MINRC来控制对程序的执行,所述第一MINRC指定指示与所述程序的多个执行线程相关联的多个恢复计数器值中的最小恢复计数器值的值;以及通过所述一或多个处理器基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行,所述第二MINRC指定指示来自所述多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对所述子例程的执行时为有效的所有所述线程。

【技术特征摘要】
【国外来华专利技术】2012.09.10 US 13/608,6681.一种用于在单指令多数据SIMD处理系统中控制发散分支指令的方法,所述方法包括:通过一或多个处理器基于第一最小恢复计数器MINRC来控制对程序的执行,所述第一MINRC指定指示与所述程序的执行的多个线程相关联的多个恢复计数器值中的最小恢复计数器值的值,其中与所述多个线程相关联的多个恢复计数器值中的每一者在所述多个线程中的对应于相应恢复计数器值的相应线程无效的情况下,指示所述多个线程中的所述相应线程经调度以被激活时的全局程序计数器的程序计数器值;以及利用所述一或多个处理器通过执行以下操作来基于与所述程序的子例程相关联的第二MINRC控制对所述子例程的执行:响应于执行子例程调用指令而保存所述第一MINRC的状态且致使基于所述第二MINRC来控制对所述子例程的执行,以及响应于执行子例程返回指令而致使基于所述第一MINRC的所述所保存状态来控制对所述程序的执行,所述第二MINRC指定指示来自所述多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对所述子例程的执行时为有效的所述多个线程中的所有线程。2.根据权利要求1所述的方法,其中保存所述第一MINRC的所述状态包括将存储于所述第一MINRC的MINRC寄存器中的值推入到堆栈存储结构上,且其中致使基于所述第二MINRC来控制对所述子例程的执行包括用所述第二MINRC的初始值来改写存储于所述MINRC寄存器中的值。3.根据权利要求1所述的方法,其中致使基于所述第一MINRC的所述所保存状态来控制对所述程序的执行包括:从堆栈存储结构拿取所述第一MINRC的所述所保存状态;以及用对应于所述第一MINRC的所述所保存状态的值来改写存储于MINRC寄存器中的值。4.根据权利要求1所述的方法,其中所述多个恢复计数器值中的每一者在所述多个线程中的对应于所述相应恢复计数器值的所述相应线程有效的情况下等于默认值。5.根据权利要求1所述的方法,其进一步包括:将所述第二MINRC设定到指示来自所述多个恢复计数器值的所述子集的最小恢复计数器值的值。6.根据权利要求5所述的方法,其中设定所述第二MINRC包括:对于每一无效线程来说,如果相应无效线程的恢复计数器值小于所述第二MINRC且所述相应无效线程的恢复计数器值大于或等于指示所述子例程的第一指令的值,那么将所述第二MINRC设定成等于所述相应无效线程的恢复计数器值。7.根据权利要求5所述的方法,其中设定所述第二MINRC包括:对于每一无效线程来说,如果相应无效线程的恢复计数器值小于所述第二MINRC值且与所述相应无效线程相关联的旗标指示在起始对所述子例程的执行时所述相应无效线程是有效的,那么将所述第二MINRC设定成等于所述相应无效线程的恢复计数器值。8.根据权利要求7所述的方法,其进一步包括:对于所述多个线程中的每一者来说,如果在起始对所述子例程的执行时相应线程是有效的,那么响应于起始对所述子例程的执行而将对应于相应线程的旗标设定到有效状态;以及对于所述多个线程中的每一者来说,如果在起始对所述子例程的执行时相应线程是无效的,那么响应于起始对所述子例程的执行而将对应于相应线程的旗标设定到无效状态。9.一种用于在单指令多数据SIMD处理系统中控制发散分支指令的装置,所述装置包括:一或多个处理器,其经配置以基于第一最小恢复计数器MINRC来控制对程序的执行及基于与所述程序的子例程相关联的第二MINRC来控制对所述子例程的执行,所述第一MINRC指定指示与所述程序的执行的多个线程相关联的多个恢复计数器值中的最小恢复计数器值的值,其中与所述多个线程相关联的多个恢复计数器值中的每一者在所述多个线程中的对应于相应恢复计数器值的相应线程无效的情况下,指示所述多个线程中的所述相应线程经调度以被激活时的全局程序计数器的程序计数器值,所述第二MINRC指定指示来自所述多个恢复计数器值的子集的最小恢复计数器值的值,所述多个恢复计数器值对应于在起始对所述子例程的执行时为有效的所述多个线程中的所有线程,以及其中为了基于所述第二MINRC来控制对所述程序的所述子例程的执行,所述一或多个处理器进一步经配置以:响应于执行子例程调用指令来保存所述第一MINRC的状态;响应于执行所述子例程调用指令而致使基于所述第二MINRC来控制对所述子例程的执行;以及响应于执行子例程返回指令而...

【专利技术属性】
技术研发人员:陈琳
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国;US

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

1