一种栅栏同步方法及设备的制造方法_5

文档序号:9217088阅读:来源:国知局
本发明实施例中所述的第一处理器核61)而言,具体用于执行以下功能:
[0207]所述第一处理器核61,用于确定当前处理的线程程序执行到预定的栅栏同步点;所述第一处理器核61为所述芯片包含的所有处理器核中的任意一个;根据所述预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置;向所述目标栅栏同步装置发送栅栏同步消息;所述栅栏同步消息中包含所述栅栏标识以及参与同步的线程程序的个数。
[0208]在本发明实施例中,进一步可选的,所述第一处理器核61,具体用于根据所述预定的栅栏同步点对应的栅栏标识,按照预设规则确定所述目标栅栏同步装置;所述预设规则包括栅栏标识与栅栏同步装置的映射关系。
[0209]在本发明实施例中,进一步可选的,所述第一处理器核61,还用于在所述向所述目标栅栏同步装置发送栅栏同步消息之后,暂停对所述当前处理的线程程序的处理,进入等待状态。
[0210]在本发明实施例中,进一步可选的,所述第一处理器核61,还用于在所述暂停对所述当前处理的线程程序的处理,进入等待状态之后,接收所述目标栅栏同步装置发送的确认消息;所述确认消息用于通知所述第一处理器核61继续处理所述当前处理的线程程序;继续处理所述当前处理的线程程序。
[0211]需要说明的是,本发明实施例提供的第一处理器核中功能模块的具体描述可以参考方法实施例中对应内容的具体描述,本发明实施例在此不再详细赘述。
[0212]本发明实施例提供的第一处理器核,当第一处理器核确定当前处理的线程程序执行到预定的栅栏同步点时,根据预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置,然后向该目标栅栏同步装置发送栅栏同步消息,通过根据预定的栅栏同步点确定处理自身栅栏同步消息的目标栅栏同步装置,使得不同的栅栏同步点可以映射到不同的栅栏同步装置,从而在线程数目增多的情况下,避免出现访问瓶颈,提高了具有多核或众核处理器的芯片处理性能。
[0213]并且,采用硬件方法来实现栅栏同步,相较于软件方法来说,具有较高的处理速度,进一步的提高了具有多核或众核处理器的芯片处理性能,且一个栅栏同步装置可以通过维护至少一个用于标识所有参与同一个同步的线程程序状态的队列,使其具有良好的可拓展性。
[0214]实施例7
[0215]本发明实施例7提供一种栅栏同步设备,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,如图10所示,所述栅栏同步设备可以包括:至少一个处理器71、存储器72、通信接口 73和总线74,该至少一个处理器71、存储器72和通信接口 73通过总线74连接并完成相互间的通信,其中:
[0216]所述总线74可以是ISA总线、PCI总线或EISA总线等。该总线74可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0217]所述存储器72用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器72可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0218]所述处理器71可能是一个CPU,或者是ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。
[0219]所述通信接口 73,主要用于实现本实施例的设备之间的通信。
[0220]所述处理器71,用于执行所述存储器72中的可执行程序代码,具体用于执行以下功能:
[0221]所述处理器71,用于接收第一处理器核发送的栅栏同步消息;所述栅栏同步消息为所述第一处理器核在确定当前处理的线程程序执行到预定的栅栏同步点时发送的,所述第一处理器核为所述芯片包含的所有处理器核中的任意一个,所述栅栏同步消息中包含所述预定的栅栏同步点对应的栅栏标识以及参与同步的线程程序的个数;根据所述预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I ;所述第一队列为与所述栅栏标识对应的用于标识所有参与同步的线程程序状态的队列;所述第一队列包含所述栅栏标识、队列状态、所述计数字段。
[0222]在本发明实施例中,进一步可选的,所述处理器71,还用于在所述根据所述栅栏标识将第一队列包含的计数字段的计数数值加I之前,判断是否存在所述第一队列,当不存在所述第一队列时,创建所述第一队列,并将所述队列状态更新为使用状态。
[0223]在本发明实施例中,进一步可选的,所述第一队列还包含已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息。
[0224]所述处理器71,还用于在所述接收第一处理器核发送的栅栏同步消息之后,将所述第一处理器核的标识信息添加至所述第一队列中。
[0225]在本发明实施例中,进一步可选的,所述处理器71,还用于在所述将所述第一处理器核的标识信息添加至所述第一队列中之前,判断所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数是否小于预设阈值;所述预设阈值小于或等于所述芯片支持的最大线程数目,当确定所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数小于所述预设阈值时,执行所述将所述第一处理器核的标识信息添加至所述第一队列中。
[0226]在本发明实施例中,进一步可选的,所述处理器71,还用于当确定所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数不小于所述预设阈值时,将所述第一处理器核的标识信息保存至内存中。
[0227]在本发明实施例中,进一步可选的,所述第一队列还包括用于标识所有参与同步的线程程序中的每个线程程序是否执行到所述预定的栅栏同步点的比特序列,所述比特序列中的每个比特位与处理器核的标识信息存在映射关系。
[0228]所述处理器71,还用于在所述接收第一处理器核发送的栅栏同步消息之后,将与所述第一处理器核的标识信息对应的比特位由第一标识更新为第二标识;所述第一标识用于标识由处理器核处理的线程程序未执行到所述预定的栅栏同步点,所述第二标识用于标识由处理器核处理的线程程序已执行到所述预定的栅栏同步点。
[0229]在本发明实施例中,进一步可选的,所述处理器71,还用于在所述根据所述栅栏标识将第一队列包含的计数字段的计数数值加I之后,判断所述计数字段的计数数值是否等于所述参与同步的线程程序的个数,当所述计数字段的计数数值等于所述参与同步的线程程序的个数时,获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,根据所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,向所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核发送确认消息;所述确认消息用于通知所述处理器核继续处理需自身处理的线程程序。
[0230]在本发明实施例中,进一步可选的,所述处理器71,还用于从所述第一队列中获取所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。[0231 ] 在本发明实施例中,进一步可选的,所述处理器71,还用于从所述第一队列和所述内存中获取所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0232]需要说明的是,本发明实施例提供的目标栅栏同步装置中功能模块的具体描述可以参考方法实施例中对应内容的具体描述,本发明实施例在此不再详细赘述。
[0233]本发明实施例提供的目标栅栏同步装置,接收第一处理器核发送的栅栏同步消息,并根据栅栏同步消息中包含的栅栏标识将与栅栏标识对应的第一队列包含的计数字段的计数数值加1,以便记录参与同步的线程程序中已执行到预定的栅栏同步点的线程程序的个数,通过第一处理器核根据预定的栅栏同步点确定处理自身栅栏同步消息的目标栅栏同步装置,使得不同的栅栏同步点可以映射到不同的栅栏同步装置,从而在线程数目增多的情况下,避免出现访问瓶颈,提高了具有多核或众核处理器的芯片处理性能。
[0234]并且,采用硬件方法来实现栅栏同步,相较于软件方法来说,具有较高的处理速度,进一步的提高了具有多核或众核处理器的芯片处理性能,且一个栅栏同步装置可以通过维护至少一个用于标识所有参与同一个同步的线程程序状态的队列,使其具有良好的可拓展性。
[0235]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0236]在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0237]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0238]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0239]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0240]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【主权项】
1.一种栅栏同步方法,其特征在于,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,所述方法包括: 第一处理器核确定当前处理的线程程序执行到预定的栅栏同步点;所述第一处理器核为所述芯片包含的所有处理器核中的任意一个; 根据所述预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置; 向所述目标栅栏同步装置发送栅栏同步消息;所述栅栏同步消息中包含所述栅栏标识以及参与同步的线程程序的个数。2.根据权利要
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1