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

文档序号:9217088阅读:来源:国知局
步点对应的栅栏标识,从芯片中包含的至少两个栅栏同步装置中确定用于处理自身的栅栏同步消息的栅栏同步装置,即确定目标栅栏同步
>J-U ρ?α装直。
[0118]在本发明实施例的一种可能的实现方式中,第一处理器核根据预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置具体的可以是:第一处理器根据预定的栅栏同步点对应的栅栏标识,按照预设规则从芯片中包含的至少两个栅栏同步装置中确定目标栅栏同步装置,该预设规则可以包括栅栏标识与栅栏同步装置的映射关系。例如,以循环制的方式为例,假设栅栏同步点的数目多于栅栏同步装置的数目,且芯片上共包含4个栅栏同步装置,处理器核便可以根据自身的栅栏同步点对应的栅栏标识,按照循环制的方式确定处理自身的栅栏同步消息的栅栏同步装置,如某个栅栏同步点对应的栅栏标识为7,芯片上包含4个栅栏同步装置,此时处理器核便可以对栅栏标识除4取余,便可以得到用于处理自身的栅栏同步消息的栅栏同步装置的编号为3,即便可确定出目标栅栏标识。
[0119]需要说明的是,在本发明实施例中,采用循环制的方式确定目标栅栏同步装置的方法,仅是本发明实施例提供的一种可能的实现方式,具体的如何根据栅栏同步点对应的栅栏标识确定目标栅栏同步装置,可以根据实际应用场景的需求进行确定,本发明实施例在此不做具体限制。
[0120]需要说明的是,在本发明实施例的可能的实现方式中,预设规则还可以是每个处理器核对应一个栅栏同步装置,也可以共享高速缓存的每个bank对应一个栅栏同步装置,该预设规则可以是预先设置约定的,本发明实施例在此对预设规则不做具体的限制。
[0121]303、第一处理器核向目标栅栏同步装置发送栅栏同步消息。
[0122]其中,栅栏同步消息中包含栅栏标识以及参与同步的线程程序的个数。在第一处理器核根据预定的栅栏同步点对应的栅栏标识确定目标栅栏同步装置之后,便可以向该目标栅栏同步装置发送用于通知自身处理的线程程序已执行到预定的栅栏同步点的栅栏同步消息。
[0123]需要说明的是,栅栏同步消息可以通过处理器核增加同步指令的方式通知给目标栅栏同步装置,本发明实施例在此不做具体限制,且该同步指令可以是非抢占式的,也可以是抢占式的。
[0124]304、第一处理器核暂停对当前处理的线程程序的处理,进入等待状态。
[0125]其中,在第一处理器核向目标栅栏同步装置发送栅栏同步消息之后,第一处理器核可以暂停对当前处理的线程程序的处理,进入等待状态,以实现栅栏同步的目的。
[0126]305、目标栅栏同步装置接收第一处理器核发送的栅栏同步消息。
[0127]其中,栅栏同步消息为第一处理器核在确定当前处理的线程程序执行到预定的栅栏同步点时发送的,栅栏同步消息中包含预定的栅栏同步点对应的栅栏标识以及参与同步的线程程序的个数;目标栅栏同步装置为用于处理预定的栅栏同步点对应的处理器核发送的栅栏同步消息的栅栏同步装置。
[0128]其中,当第一处理器核确定自身处理的线程程序执行到预定的栅栏同步点,且确定目标栅栏同步装置之后,便可以向目标栅栏同步装置发送栅栏同步消息,此时,目标栅栏同步装置便可以接收第一处理器核发送的包含预定的栅栏同步点对应的栅栏标识及参与同步的线程程序的个数的栅栏同步消息。
[0129]306、目标栅栏同步装置判断是否存在第一队列。
[0130]其中,在目标栅栏同步装置接收到第一处理器核发送的栅栏同步消息之后,便可以根据栅栏同步消息中包含的预定的栅栏同步点一应的栅栏标识,确定是否存在与该栅栏标识对应的第一队列,该第一队列为与该栅栏标识对应的用于标识所有参与同步的线程程序状态的队列,且该第一队列包含有栅栏标识、队列状态以及计数字段,其中,栅栏标识用于唯一标识栅栏同步点,队列状态用于标识该队列的状态,可以是使用状态或空闲状态,计数字段则用于记录已执行到预定的栅栏同步点的线程程序的个数。
[0131]需要说明的是,在本发明实施例中,一个栅栏同步装置可以通过维护至少一个用于标识所有参与同一个同步的线程程序状态的队列,使得本发明实施例提供的栅栏同步方法的可拓展性好,使其能够更好的适用于具有多核处理器的芯片,且更适用于具有众核处理器的芯片。
[0132]307、当不存在所述第一队列时,目标栅栏同步装置创建第一队列,并将队列状态更新为使用状态。
[0133]其中,当目标栅栏同步装置确定不存在与栅栏标识对应的第一队列时,可以创建包含该栅栏标识的第一队列,并将该第一队列的队列状态由空闲状态更新为使用状态。
[0134]需要说明的是,若目标栅栏同步装置确定存在与栅栏标识对应的第一队列则直接执行步骤308。
[0135]308、目标栅栏同步装置根据预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I。
[0136]需要说明的是,在本发明实施例中可能的实现方式中,当每一个处理器核对应一个栅栏同步装置时,在目标栅栏同步装置接收到第一处理器核发送的栅栏同步消息时,可以直接执行步骤308,而不用判断是否存在与栅栏标识对应的第一队列。
[0137]在本发明实施例的一种可能的实现方式中,进一步的,第一队列中还包含已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息,则在目标栅栏同步装置根据预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I之后,可以执行以下步骤309-步骤311。
[0138]309、目标栅栏同步装置判断已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数是否小于预设阈值。
[0139]其中,预设阈值小于或等于芯片支持的最大线程数目。在目标栅栏装置根据接收到的栅栏同步消息中的预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I之后,便可以继续判断已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数是否小于预设的阈值,当确定已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数小于预设阈值时,执行以下步骤310 ;当确定已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数不小于预设阈值时,执行以下步骤311。
[0140]310、目标栅栏同步装置将第一处理器核的标识信息添加至第一队列中。
[0141]311、目标栅栏同步装置将第一处理器核的标识信息保存至内存中。
[0142]需要说明的是,在本发明实施例中,在预设阈值小于芯片支持的最大线程数目的情况下,当已执行到预定的栅栏同步点的线程程序对应的处理器核的标识信息的个数不小于预设阈值时,通过将第一处理器核的标识信息保存至内存中,节省了目标栅栏同步装置存储处理器核对应的标识信息的空间。
[0143]在本发明实施例的另一种可能的实现方式中,进一步的,第一队列中还包括用于标识所有参与同步的线程程序中的每个线程程序是否执行到预定的栅栏同步点的比特序列,且该比特序列中的每个比特位与处理器核的标识信息存在映射关系,则在目标栅栏同步装置根据预定的栅栏同步点对应的栅栏标识将第一队列包含的计数字段的计数数值加I之后,可以执行以下步骤312。
[0144]312、目标栅栏同步装置将与第一处理器核的标识信息对应的比特位由第一标识更新为第二标识。
[0145]其中,第一标识用于标识由处理器核处理的线程程序未执行到预定的栅栏同步点,第二标识用于标识由处理器核处理的线程程序已执行到预定的栅栏同步点。例如,第一标识为0,第二标识为1,在创建第一队列时,将与处理器核的标识信息存在映射关系的比特序列中的每一位设置为0,当目标栅栏同步装置接收到第一处理器核的栅栏同步消息时,便可以将与第一处理器核的标识信息对应的比特位由O更新为1,以便标识第一处理器核处理的线程程序已执行到预定的栅栏同步点。
[0146]需要说明的是,本发明实施例的可能的实现方式中,采用比特序列来标识参与同步的线程程序是否执行到预定的栅栏同步点,从而节省了目标栅栏同步装置存储处理器核对应的标识信息的空间。
[0147]313、目标栅栏同步装置判断计数字段的计数数值是否等于参与同步的线程程序的个数。
[0148]其中,在目标栅栏装置将第一队列包含的计数字段的计数数值加1,并保存了第一处理器核的标识信息或者更新完第一处理器核的标识信息对应的比特位之后,目标栅栏同步装置便可以判断是否所有参与同步的线程程序均已执行到预定的栅栏同步点,即判断第一队列包含的计数字段的计数数值是否等于参与同步的线程程序的个数。
[0149]314、当计数字段的计数数值等于参与同步的线程程序的个数时,目标栅栏同步装置获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0150]其中,在一种可能的实现方式中,当目标栅栏装置采用比特序列来标识参与同步的线程程序是否已执行到预定的栅栏同步点时,由于比特序列中的每个比特位与处理器核的标识信息存在映射关系,此时目标栅栏同步装置获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息具体的可以是:从第一队列中获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0151]在另一种可能的实现方式中,当目标栅栏装置采用记录处理器核的标识信息来标识参与同步的线程程序是否已执行到预定的栅栏同步点时,此时目标栅栏同步装置获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息具体的可以是:从第一队列获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,或者,从第一队列和内存中获取所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息。
[0152]需要说明的是,当计数字段的计数数值不等于参与同步的线程程序的个数时,表示参与同步的线程程序中还有部分线程程序未执行到预定的栅栏同步点,此时目标栅栏同步装置可以继续接收其他参与同步的线程程序对应的处理器核发送的栅栏同步消息,直到计数字段的计数数值等于参与同步的线程程序的个数时执行步骤314。
[0153]315、目标栅栏同步装置根据所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,向所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核发送确认消息。
[0154]其中,在目标栅栏同步装置获取到所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息之后,便可以根据所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核的标识信息,向所有参与同步的线程程序中每个参与同步的线程程序对应的处理器核发送用于通知处理器核可以继续处理需自身处理的线程程序的确认消息。
[0155]316、第一处理器核接收目标栅栏同步装置发送的确认消息。
[0156]317、第一处理器核继续处理当前处理的线程程序。
[0157]其中,在第一处理器核接收到目标栅栏同步装置发送的确认消息之后,便可获知所有参与同步的线程程序均已执行到预定的栅栏同步点,此时第一处理器核便可以继续处理当前处理的线程程序。
[0158]本发明实施例提供的栅栏同步方法,目标栅栏同步装置接收第一处理器核发送的栅栏同步消息,并根据栅栏同步消息中包含的栅栏标识将与栅栏标识对应的第一队列包含的计数字段的计数数值加1,以便记录参
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1