一种栅栏同步方法及设备的制造方法
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种栅栏同步方法及设备。
【背景技术】
[0002]传统的单核处理器通常通过采用超标量和流水处理技术来提高处理器的主频,以达到提高处理器性能的目的,但是主频的提高会导致处理器的功耗增大,且会导致处理器的散热不好。并且,随着半导体工艺的不断发展,芯片上可集成的晶体管数目逐渐增多,体系结构设计者为了在提高处理器性能的同时降低处理器的功耗,并使处理器有良好的散热,提出了采用线程级粗粒度并行技术的多核或众核处理器。
[0003]由于多核或众核处理器采用的是多线程进行数据处理的,因此需采用栅栏同步来确保多个线程程序之间数据的正确传播以及线程程序执行语义的正确性,由此可知,栅栏同步对多核或众核处理器而言是非常重要的。在现有技术中,通过在芯片上设置一个同步管理装置来实现栅栏同步,其具体的实现过程是:在具有多核或众核处理器的芯片中,当某个处理器核处理的线程程序执行到预定的同步点时,该处理器核向同步管理装置发送用于通知自身处理的线程程序已执行到预定的同步点的通知消息,以便同步管理装置统计参与同步的线程程序中是否所有的线程程序均已执行到预定的同步点,并在所有的线程程序均已执行到预定的同步点时,向所有参与同步的线程程序中的每个线程程序对应的处理器核发送继续执行的指令,以便所有的处理器核继续处理线程程序。
[0004]现有技术中至少存在如下问题:由于仅在芯片上设置了一个同步管理装置,因此在具有多核或众核处理器的芯片中,当处理器核处理的线程程序执行到预定的同步点,均需要向该同一个同步管理装置中发送用于通知自身处理的线程程序已执行达预定的同步点的通知消息,这样,当线程数目增多时,会产生严重的访问瓶颈,导致多个线程程序协同执行的速度变慢,从而导致具有多核或众核处理器的芯片的处理性能下降。
【发明内容】
[0005]本发明提供一种栅栏同步方法及设备,解决了在线程数目增多的情况下,由于访问瓶颈导致的具有多核或众核处理器的芯片处理性能下降的问题。
[0006]为达到上述目的,本发明采用如下技术方案:
[0007]本发明的第一方面,提供一种栅栏同步方法,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,所述方法包括:
[0008]第一处理器核确定当前处理的线程程序执行到预定的栅栏同步点;所述第一处理器核为所述芯片包含的所有处理器核中的任意一个;
[0009]根据所述预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置;
[0010]向所述目标栅栏同步装置发送栅栏同步消息;所述栅栏同步消息中包含所述栅栏标识以及参与同步的线程程序的个数。
[0011]结合第一方面,在一种可能的实现方式中,所述根据所述预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置,包括:
[0012]根据所述预定的栅栏同步点对应的栅栏标识,按照预设规则确定所述目标栅栏同步装置;所述预设规则包括栅栏标识与栅栏同步装置的映射关系。
[0013]结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述向所述目标栅栏同步装置发送栅栏同步消息之后,还包括:
[0014]暂停对所述当前处理的线程程序的处理,进入等待状态。
[0015]结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述暂停对所述当前处理的线程程序的处理,进入等待状态之后,还包括:
[0016]接收所述目标栅栏同步装置发送的确认消息;所述确认消息用于通知所述第一处理器核继续处理所述当前处理的线程程序;
[0017]继续处理所述当前处理的线程程序。
[0018]本发明的第二方面,提供一种栅栏同步方法,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,所述方法包括:
[0019]目标栅栏同步装置接收第一处理器核发送的栅栏同步消息;所述栅栏同步消息为所述第一处理器核在确定当前处理的线程程序执行到预定的栅栏同步点时发送的,所述第一处理器核为所述芯片包含的所有处理器核中的任意一个,所述栅栏同步消息中包含所述预定的栅栏同步点对应的栅栏标识以及参与同步的线程程序的个数;所述目标栅栏同步装置为用于处理所述预定的栅栏同步点对应的处理器核发送的栅栏同步消息的栅栏同步装置;
[0020]根据所述预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I ;所述第一队列为与所述栅栏标识对应的用于标识所有参与同步的线程程序状态的队列;所述第一队列包含所述栅栏标识、队列状态、所述计数字段。
[0021]结合第二方面,在一种可能的实现方式中,在所述根据所述栅栏标识将第一队列包含的计数字段的计数数值加I之前,还包括:
[0022]判断是否存在所述第一队列;
[0023]当不存在所述第一队列时,创建所述第一队列,并将所述队列状态更新为使用状态。
[0024]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一队列还包含已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息;
[0025]在所述接收第一处理器核发送的栅栏同步消息之后,还包括:
[0026]将所述第一处理器核的标识信息添加至所述第一队列中。
[0027]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在所述将所述第一处理器核的标识信息添加至所述第一队列中之前,还包括:
[0028]判断所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数是否小于预设阈值;所述预设阈值小于或等于所述芯片支持的最大线程数目;
[0029]当确定所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数小于所述预设阈值时,执行所述将所述第一处理器核的标识信息添加至所述第一队列中。
[0030]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
[0031]当确定所述已执行到所述预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数不小于所述预设阈值时,将所述第一处理器核的标识信息保存至内存中。
[0032]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一队列还包括用于标识所有参与同步的线程程序中的每个线程程序是否执行到所述预定的栅栏同步点的比特序列,所述比特序列中的每个比特位与处理器核的标识信息存在映射关系;
[0033]在所述接收第一处理器核发送的栅栏同步消息之后,还包括:
[0034]将与所述第一处理器核的标识信息对应的比特位由第一标识更新为第二标识;所述第一标识用于标识由处理器核处理的线程程序未执行到所述预定的栅栏同步点,所述第二标识用于标识由处理器核处理的线程程序已执行到所述预定的栅栏同步点。
[0035]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在所述根据所述栅栏标识将第一队列包含的计数字段的计数数值加I之后,还包括:
[0036]判断所述计数字段的计数数值是否等于所述参与同步的线程程序的个数;
[0037]当所述计数字段的计数数值等于所述参与同步的线程程序的个数时,获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息;
[0038]根据所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,向所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核发送确认消息;所述确认消息用于通知所述处理器核继续处理需自身处理的线程程序。
[0039]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,包括:
[0040]从所述第一队列中获取所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0041]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,包括:
[0042]从所述第一队列和所述内存中获取所述所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0043]本发明的第三方面,提供一种第一处理器核,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,所述第一处理器核,包括:
[0044]第一确定单元,用于确定当前处理的线程程序执行到预定的栅栏同步点;所述第一处理器核为所述芯片包含的所有处理器核中的任意一个;
[0045]第二确定单元,用于根据所述预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置;
[0046]发送单元,用于向所述第二确定单元得到的所述目标栅栏同步装置发送栅栏同步消息;所述栅栏同步消息中包含所述栅栏标识以及参与同步的线程程序的个数。
[0047]结合第三方面,在一种可能的实现方式中,所述第二确定单元,具体用于:
[0048]根据所述预定的栅栏同步点对应的栅栏标识,按照预设规则确定所述目标栅栏同步装置;所述预设规则包括栅栏标识与栅栏同步装置的映射关系。
[0049]结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
[0050]第一处理单元,用于在所述发送单元向所述目标栅栏同步装置发送栅栏同步消息之后,暂停对所述当前处理的线程程序的处理,进入等待状态。
[0051]结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
[0052]接收单元,用于在所述第一处理单元暂停对所述当前处理的线程程序的处理,进入等待状态之后,接收所述目标栅栏同步装置发送的确认消息;所述确认消息用于通知所述第一处理器核继续处理所述当前处理的线程程序;
[0053]第二处理单元,用于继续处理所述当前处理的线程程序。
[0054]本发明的第四方面,提供一种目标栅栏同步装置,应用于具有多核或众核处理器的芯片中,所述芯片上设置有至少两个栅栏同步装置,所述目标栅栏同步装置,包括:
[0055]接收单元,用于接收第一处理器核发送的栅栏同步消息;所述栅栏同步消息为所述第一处理器核在确定当前处理的线程程序执行到预定的栅栏同步点时发送的,所述第一处理器核为所述芯片包含的所有处理器核中的任意一个,所述栅栏同步消息中包含所述预定的栅栏同步点对应的栅栏标识以及参与同步的线程程序的个数;所述目标栅栏同步装置为用于处理所述预定的栅栏同步点对应的处理器核发送的栅栏同步消息的栅栏同步装置;
[0056]处理单元,用于根据所述接收单元的得到的所述栅栏同步消息中包含的所述预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I ;所述第一队列为与所述栅栏标识对应的用于标识所有参与同步的线程程序状态的队列;所述第一队列包含所述栅栏标识、队列状态、所述计数字段。
[0057]结合第四方面,在一种可能的实现方式中,还包括:
[0058]判断单元,用于在所述处理单元根据所述栅栏标识将第一队列包含的计数字段的计数数值加I之前,判断是否存在所述第一队列;
当前第1页
1 
2 
3 
4 
5 
6