用于执行多线程系统的子线程的方法和多线程系统技术方案

技术编号:23982655 阅读:31 留言:0更新日期:2020-04-29 12:03
针对多线程系统提出了本申请的各方面,该多线程系统被配置成有效地处理动态线程增殖。在执行程序过程中,增殖子线程时,父线程可能需要使用子线程ID进行初始化。然而,要获取子线程ID,可能需要生成子线程,并且一旦子线程被生成,即使在初始化完成之前也可能立即执行该子线程,从而导致错误。本申请引入了一种有效节约内存的解决方案,该方案采用控制电路来控制何时子线程可以被执行并且仍旧使父线程能够获得子线程ID。

Methods and multithreaded systems for executing subthreads of multithreaded systems

【技术实现步骤摘要】
用于执行多线程系统的子线程的方法和多线程系统本申请要求于2018年12月4日提交的名称为“SYSTEMANDMETHODFORHANDLINGDEPENDENCIESINDYNAMICTHREADSPAWNINGFORAMULTI-THREADINGPROCESSOR”的美国临时申请16/209,663的优先权,其全部内容通过引用结合在本申请中。
本申请的主题一般地涉及并行处理环境中的多线程处理。更具体地,本申请主题涉及用于执行多线程系统的子线程的方法和多线程系统。
技术介绍
并行处理可以是计算机处理中非常强大的架构。为了提高规模,设计一种能源和资源高效的系统架构是重要的,因为低效的缺陷可能会被极大地放大到超大规模系统。
技术实现思路
针对多线程系统提出了本申请的各方面,该多线程系统被配置成从父线程动态地增殖子线程以操作一个或更多个软件程序。在一些实施方式中,提出了一种用于执行多线程系统的子线程的方法。该多线程系统可以包括主线程控制单元(masterthreadcontrolunit,MTCU)、多个线程控制单元(TCU)以及存储低线程父寄存器、高线程父寄存器和至少一个子ID寄存器的存储器。该方法可以包括:通过MTCU初始化第一父并行线程,该第一父并行线程具有在低线程父寄存器与高线程父寄存器之间且包括低线程父寄存器和高线程父寄存器的第一父ID值;通过MTCU初始化第二父并行线程,该第二父并行线程具有在低线程父寄存器与高线程父寄存器之间且包括低线程父寄存器和高线程父寄存器的第二ID值,该第二ID值与第一父ID值不同;通过第一TCU与所执行的第一父并行线程并行地执行第二父并行线程;通过第一TCU生成第一子并行线程,第一子并行线程具有比高线程父寄存器高一个值的第一子ID值;通过第二TCU生成第二子并行线程,第二子并行线程具有比第一子ID值高一个值的第二子ID值;将第一子ID值存储在至少一个子ID寄存器中;将第二子ID值存储在至少一个子ID寄存器中;通过第一TCU初始化第一子并行线程;通过第二TCU初始化第二子并行线程;在第一子并行线程完成初始化之前,通过第一TCU使用至少一个子ID寄存器访问第一子ID值;在第二子并行线程完成初始化之前,通过第二TCU使用至少一个子ID寄存器访问第二子ID值;在第一子并行线程或第二子并行线程已完成初始化之后,通过MTCU使高线程父寄存器递增一;通过第三TCU执行已完成初始化的第一子并行线程或第二子并行线程。在该方法的一些实施方式中,多线程系统还包括控制电路,并且该方法还包括:通过第二TCU向控制电路发送第二子并行线程已经完成初始化的指示;通过控制电路确定第一子并行线程尚未完成初始化;以及通过控制电路防止第一子并行线程和第二子并行线程二者执行,直到控制电路接收到第一子并行线程也已经完成初始化的指示。在一些实施方式中,该方法还包括:通过第一TCU向控制电路发送第一子并行线程已经完成初始化的指示;以及响应于第二子并行线程已经完成初始化的指示以及第一子并行线程已经完成初始化的指示的发送,通过控制电路引起第一子并行线程和第二子并行线程的执行。在一些实施方式中,该方法还包括:在第二子并行线程已经完成初始化的指示和第一子并行线程已完成初始化的指示的发送之后,通过控制电路使高线程父寄存器再递增一,以使总增量为二。在该方法的一些实施方式中,控制电路包括子ID向量,该子ID向量包括多个位,其中,多个位中的每一个对应于子并行线程是否被初始化的指示。在该方法的一些实施方式中,未初始化的子并行线程的数目超过子ID向量的多个位的数目;该方法还包括:通过父并行线程延迟向控制电路发送子并行线程已经完成初始化的指示,直到未初始化的子并行线程的数目小于或等于子ID向量的多个位。在一些实施方式中,该方法还包括:在控制电路接收到子并行线程已经完成初始化的指示之后,将子ID向量的位更新为值一。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1示出了多线程环境的执行流程,该流程首先在串行模式下运行,然后在并行模式下运行,然后返回到串行模式;图2示出了当在多线程环境中通过父线程增殖子线程时可能发生的竞争状况的图;图3示出了如何使用每个父线程的数组来解决图2中描述的竞争状况的一个示例的图;图4呈现了用于使用子ID寄存器来解决图2中描述的竞争状况的处理流程的表;图5呈现了根据本申请的各方面的用于使用子ID寄存器和管理与父线程的通信的控制电路来解决多个竞争状况的另一处理流程的表;图6示出了可以被配置成实现本文中描述的解决方案的多线程处理器的示例性架构。具体实施方式XMT(eXplicitMulti-Threading,显式多线程)处理器包括MTCU(主线程控制单元)和多个并行TCU(线程控制单元)。MTCU可以执行程序的串行段,并且管理并行模式和串行模式的变化。例如,MTCU可以是任何高性能处理器芯。TCU可以是在电力和硅的使用方面非常有效的简单的轻型芯。例如,TCU可以是5级有序处理器。XMT处理器具有两种执行模式:(1)串行模式,其中仅MTCU处于活动状态;以及(2)并行模式,其中MTCU和并行TCU二者均处于活动状态。在切换到并行模式之前,MTCU通过以两个寄存器“gr_low”和“gr_high”指定线程ID的范围来指定TCU中需要执行多少个线程。这些寄存器保存了线程ID的上下限,包括上限和下限。其通常由软件程序设置。TCU将执行满足以下方程式的所有ID:gr_low≤线程ID≤gr_high方程式(1)由于线程ID是唯一的,因此可以将不同的任务分配给不同的线程。每个线程可以根据线程ID进行不同的处理,因此在单个并行模式下,可以并行执行许多不同类型的任务。在给定系统中,并行TCU的数目是固定的,并且可以多于或少于活动的线程的数目。如果活动的线程多于并行TCU的数目,则每个TCU将在开始时从gr_low开始获得一个线程,并且在分配的线程完成时,TCU将被分配新的线程ID。如果新线程ID等于或小于gr_high(有效),则TCU将继续执行由新ID规定的线程。如果新线程ID大于gr_high(无效),则该线程将根本不会被任何TCU执行,因为gr_low和gr_high值是所有TCU都将其禁用的全局值。然后,TCU将自身标记为“空闲”并且持续监视gr_high,因为gr_high可能会通过其他活动线程而增加,并且ID可以变得满足方程式(1)。如果该ID满足方程式(1),例如,gr_high寄存器增加,则TCU将执行ID并在完成时获得新的ID,并且这持续直到所有TCU变为“空闲”为止,此时XMT处理器切换回到串行模式。执行流程如图1所示。如图1所示,执行流程可以被本文档来自技高网...

【技术保护点】
1.一种用于执行多线程系统的子线程的方法,其特征在于,所述多线程系统包括主线程控制单元MTCU、多个线程控制单元TCU、以及存储低线程父寄存器、高线程父寄存器和至少一个子ID寄存器的存储器,所述方法包括:/n通过所述MTCU初始化第一父并行线程,所述第一父并行线程具有在所述低线程父寄存器与所述高线程父寄存器之间且包括所述低线程父寄存器和所述高线程父寄存器的第一父ID值;/n通过所述MTCU初始化第二父并行线程,所述第二父并行线程具有在所述低线程父寄存器与所述高线程父寄存器之间且包括所述低线程父寄存器和所述高线程父寄存器的第二ID值,所述第二ID值与所述第一父ID值不同;/n通过第一TCU执行所述第一父并行线程;/n通过第二TCU与所执行的第一父并行线程并行地执行所述第二父并行线程;/n通过所述第一TCU生成第一子并行线程,所述第一子并行线程具有比所述高线程父寄存器高一个值的第一子ID值;/n通过所述第二TCU生成第二子并行线程,所述第二子并行线程具有比所述第一子ID值高一个值的第二子ID值;/n将所述第一子ID值存储在所述至少一个子ID寄存器中;/n将所述第二子ID值存储在所述至少一个子ID寄存器中;/n通过所述第一TCU初始化所述第一子并行线程;/n通过所述第二TCU初始化所述第二子并行线程;/n在所述第一子并行线程完成初始化之前,通过所述第一TCU使用所述至少一个子ID寄存器访问所述第一子ID值;/n在所述第二子并行线程完成初始化之前,通过所述第二TCU使用所述至少一个子ID寄存器访问所述第二子ID值;/n在所述第一子并行线程或所述第二子并行线程完成初始化之后,通过所述MTCU将所述高线程父寄存器递增一;以及/n通过第三TCU执行已完成初始化的所述第一子并行线程或所述第二子并行线程。/n...

【技术特征摘要】
20181204 US 16/209,6631.一种用于执行多线程系统的子线程的方法,其特征在于,所述多线程系统包括主线程控制单元MTCU、多个线程控制单元TCU、以及存储低线程父寄存器、高线程父寄存器和至少一个子ID寄存器的存储器,所述方法包括:
通过所述MTCU初始化第一父并行线程,所述第一父并行线程具有在所述低线程父寄存器与所述高线程父寄存器之间且包括所述低线程父寄存器和所述高线程父寄存器的第一父ID值;
通过所述MTCU初始化第二父并行线程,所述第二父并行线程具有在所述低线程父寄存器与所述高线程父寄存器之间且包括所述低线程父寄存器和所述高线程父寄存器的第二ID值,所述第二ID值与所述第一父ID值不同;
通过第一TCU执行所述第一父并行线程;
通过第二TCU与所执行的第一父并行线程并行地执行所述第二父并行线程;
通过所述第一TCU生成第一子并行线程,所述第一子并行线程具有比所述高线程父寄存器高一个值的第一子ID值;
通过所述第二TCU生成第二子并行线程,所述第二子并行线程具有比所述第一子ID值高一个值的第二子ID值;
将所述第一子ID值存储在所述至少一个子ID寄存器中;
将所述第二子ID值存储在所述至少一个子ID寄存器中;
通过所述第一TCU初始化所述第一子并行线程;
通过所述第二TCU初始化所述第二子并行线程;
在所述第一子并行线程完成初始化之前,通过所述第一TCU使用所述至少一个子ID寄存器访问所述第一子ID值;
在所述第二子并行线程完成初始化之前,通过所述第二TCU使用所述至少一个子ID寄存器访问所述第二子ID值;
在所述第一子并行线程或所述第二子并行线程完成初始化之后,通过所述MTCU将所述高线程父寄存器递增一;以及
通过第三TCU执行已完成初始化的所述第一子并行线程或所述第二子并行线程。


2.根据权利要求1所述的方法,其特征在于,所述多线程系统还包括控制电路,并且所述方法还包括:
通过所述第二TCU向所述控制电路发送所述第二子并行线程已经完成初始化的指示;
通过所述控制电路确定所述第一子并行线程尚未完成初始化;以及
通过所述控制电路防止所述第一子并行线程和所述第二子并行线程二者执行,直到所述控制电路接收到所述第一子并行线程也已经完成初始化的指示。


3.根据权利要求2所述的方法,其特征在于,还包括:
通过所述第一TCU将所述第一子并行线程已经完成初始化的指示发送至所述控制电路;以及
响应于所述第二子并行线程已经完成初始化的指示以及所述第一子并行线程已经完成初始化的指示的发送,通过所述控制电路引起所述第一子并行线程和所述第二子并行线程的执行。


4.根据权利要求3所述的方法,其特征在于,还包括:
在所述第二子并行线程已经完成初始化的指示以及所述第一子并行线程已经完成初始化的指示的发送之后,通过所述控制电路使所述高线程父寄存器再递增一,以使总增量为二。


5.根据权利要求2所述的方法,其特征在于,所述控制电路包括子ID向量,所述子ID向量包括多个位,其中,所述多个位中的每一个对应于子并行线程是否被初始化的指示。


6.根据权利要求5所述的方法,其特征在于,未初始化的子并行线程的数目超过所述子ID向量的所述多个位的数目;并且所述方法还包括:
通过父并行线程延迟向所述控制电路发送子并行线程已完成初始化的指示,直到未初始化的子并行线程的数目小于或等于所述子ID向量的所述多个位。


7.根据权利要求5所述的方法,其特征在于,还包括:
在所述控制电路接收到子并行线程已经完成初始化的指示之后,将所述子ID向量的位更新为值一。


8...

【专利技术属性】
技术研发人员:文兴植付鹏
申请(专利权)人:北京磐易科技有限公司
类型:发明
国别省市:北京;11

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

1