处理单元之间的硬件同步屏障的制作方法

文档序号:8942944阅读:369来源:国知局
处理单元之间的硬件同步屏障的制作方法
【技术领域】
[0001 ] 本公开文件涉及在若干处理内核上并行执行的进程的同步。
【背景技术】
[0002] 屏障同步为并行编程的关键原语。它可以应用于共享存储器的高速缓存的内核之 间,或内核簇之间,每一个簇具有其本地存储器,且该簇通过网络连接。
[0003] 在[BenoftDupont de Dinechin,Pierre Guironnet de Massas,G. Laget et al. "A Distributed Run-Time Environment for the Kalray MPPA-256 Integrated Manycore Processor',,International Conference on Computational Science (ICCS), Volume 18, pages 1654to 1663,Barcelona,Spain,2013, Elsevier]中提到了硬件同步屏 障。
[0004] 根据该文章,每一个内核或内核簇都具有能够在同步模式中配置的邮箱。在此模 式中,到来消息的有效负载与该邮箱的过往内容进行按比特"或",并且假如新内容的所有 比特为1,则仅通知主内核。

【发明内容】

[0005] 本文提供了一种用于同步多个处理单元的方法,包括如下步骤:配置目标处理单 元中的同步寄存器,以使得其内容仅由在所述同步寄存器中写入的字中设置的比特覆写; 给每一个处理单元分配同步寄存器的不同比特位置;以及执行每一个处理单元中的程序线 程。当当前处理单元的程序线程到达同步点时,该方法包括:在所述目标处理单元的同步寄 存器内写入字,在其中设置分配给当前处理单元的比特位置,以及挂起所述程序线程。当在 所述同步寄存器中设置所有分配给处理单元的比特时,恢复所述所挂起程序线程。
[0006] 还提供了一种用于同步并行进程的方法,包括如下步骤:在处理单元之间分配多 个程序执行线程;配置每一个处理单元中的同步寄存器,以使得其内容仅由在所述同步寄 存器中写入的字中设置的比特覆写;以及给每一个程序线程分配同步寄存器的不同比特位 置。当当前处理单元中的当前程序线程已到达同步点时,该方法包括:由当前处理单元在所 有处理单元的同步寄存器中写入字,在其中设置分配给当前程序线程的比特位置,以及挂 起当前程序线程。当在当前处理单元的同步寄存器中设置分配给所述程序线程的所有比特 时,该方法包括:恢复执行当前处理单元中的所挂起程序线程,以及重设当前处理单元的同 步寄存器。
[0007] 该方法可以包括在每一个处理单元内执行的以下步骤:将同步寄存器的内容与期 望值进行比较;当该比较为真时,断言通知信号;以及响应于通知信号的断言,恢复所挂起 程序线程的执行。
[0008] 该方法可以包括在每一个处理单元内执行的以下步骤:在所述处理单元的各个内 核上并行运行若干程序线程;以及用具有在分配给所述内核的位置处设置的比特的字编程 参与者寄存器。当线程到达其同步点时,挂起所述线程的执行。在所述通知信号的断言时, 将参与者寄存器的比特提供给专用线上的各个内核,以及对于与设置的专用线对应的内核 中的线程恢复执行。
【附图说明】
[0009] 根据仅出于示范目的提供的本发明特定实施例的以下描述,其它优点和特征将更 显而易见,其中:
[0010] 图1示意性示出了片上网络的基础结构,其实现以主从模式管理的硬件同步屏障 的实施例;
[0011] 图2A至2E图示了在示例同步的处理期间内若干阶段中硬件同步屏障的组件;
[0012] 图3示意性示出了片上网络的基础结构,其实现了以分布方式管理的硬件同步屏 障的实施例;
[0013] 图4是图示在示例的上下文中分布式同步屏障的操作的时序图;
[0014] 图5示出了配置为同步连接到总线的处理器内核的硬件同步屏障的实施例;
[0015] 图6是示出在示例的上下文中图5的同步屏障的操作的时序图。
【具体实施方式】
[0016] 图1示出若干处理单元PUO至PU3,例如处理器内核或内核簇,其被连接以在片上 网络NoC上通过消息交换信息。一般来说,每一个处理单元包括若干邮箱寄存器,并且一消 息可以以特定处理单元的特定邮箱寄存器为目标。
[0017] 为了实现根据前述ICCS文章的教导的硬件同步屏障,所述处理单元之一 PUO可以 配置为主处理单元,并且该主处理单元的指定邮箱可以配置为用于一组处理单元(例如单 元PUO至PU3)的同步邮箱20。
[0018] 同一计算机程序的若干执行线程可以分布在所述处理单元之间,并要求同步。对 于每一个线程或分派给该线程的内核,以同步邮箱20 (实际上是寄存器)中的比特位置的 形式分配唯一标识符。
[0019] 当线程到达同步点或屏障时,发送消息给同步邮箱。该消息内容包括配置为除标 识该线程或内核的位置之外使得所有比特未设置的标识符。接着,挂起该线程。实际上,可 以通过停止运行该线程的内核(例如通过在该线程可执行代码中提供挂起指令(WAIT))获 得线程的挂起。该挂起指令接着停止该内核,并配置其以响应于在该挂起指令中定义的外 部事件(例如处理单元的资源管理器对特定信号的断言)来恢复执行。在其它架构中,该 挂起指令可以发出中断,使得内核不是停止,而是切换到另一任务。然后,前述信号的断言 再次中断该内核,使其恢复挂起的线程。
[0020] 图2A至2E图示通过具体同步示例的若干步骤的硬件同步屏障的实施例。
[0021] 如图2A所示,用寄存器的过往内容与到来消息的内容之间按比特"或"22的结果 来更新同步邮箱或寄存器20的内容,在此示例中,消息0010指示处理单元PUl的线程已到 达同步屏障。同步寄存器的内容进一步在24处与指示所有线程已到达屏障的模式(例如 模式1111)进一步比较。在图2A中,同步邮箱20正好重设,并包含模式0000,由此比较输 出"假"。
[0022] 在图2B中,同步邮箱已更新至0010,并接收消息1000,指示处理单元PU 3的线程 已到达屏障。该比较24输出"假"。
[0023] 在图2C中,同步邮箱已更新至1010,并接收消息0001,指示处理单元PUO的线程 已到达屏障。这消息可以由主处理单元发送给自身,因为主处理单元也能用于处理线程。该 比较仍然输出"假"。
[0024] 在图2D中,同步邮箱已更新至1011,并接收消息0100。比较仍然返回"假"。
[0025] 在图2E中,同步邮箱已更新至1111。所有线程已到达屏障并发送其消息。该比较 24现在返回"真",意指解除(raise)同步屏障。这一事件可以中断主处理单元PUO的资源 管理器,该主处理单元PUO接着可以通过网络向所有处理单元多播通知。处理单元的资源 管理器通过使得挂起线程的执行恢复,响应于该通知。主处理单元进一步重设同步邮箱,以 设置下个同步屏障。
[0026] 然而,图1的结构包括为了解除同步屏障在网络上发送消息,以恢复挂起的线程, 由此所述内核可以异步重启,并具有解除所述屏障后未确定的延迟。
[0027] 图3示意性示出了实现同步屏障的实施例的片上网络的基础结构,该屏障解除时 迅速恢复挂起的线程。不同于图1的主从结构,图3的结构以分布式方式操作,每一个处理 单元管理标为20'的本地同步邮箱,其复制其它本地同步邮箱的内容。
[0028] 一般来说,每一个处理单元(例如图3的单元PU0),当其到达同步屏障时,而不是 发送单个消息给主处理单元时,它给所有的处理单元多播同一消息。每一个处理单元(包 括发出所述消息的那个)通过根据上面描述的技术(例如消息内容与邮箱的过往内容的按 比特"或")来更新其本地邮箱,来对这一消息做出反应。这样,每一个处理单元具有图1的 主处理单元的单个邮箱的内容的本地拷贝。每一个处理单元在其本地邮箱一达到屏障的解 除条件就可以接着恢复挂起的线程,而不发送另一消息。
[0029] 图4是通过示例图示分布式同步屏障的操作的时序图。每一个处理单元PUO至 PU3中运行的线程由沿向下增加的时间轴的垂直线表示。在不同时间处的线程之后示出用 作本地同步邮箱的寄存器20'的内容。该示例对应于图2A至2E的示例。
[0030] 在时间t0,处理单元PUO至PU3中执行的程序线程正在进行。寄存器20'处于其 初始值0000。
[0031] 在时间tl,单元PUl中执行的线程到达同步屏障。通过网络将消息0010多播给包 括单元PUl本身的所有处理单元。为了简化该示图,多播消息由水平箭头表示,表明其是同 时且瞬时的。实际上,可以在网络中一个接一个传送到不同处理单元的消息,并且该到不同 处理单元的消息取决于网络拥塞在不同时间到达其目的地一一这不会改变操作原理。
[0032] 一旦接收到消息0010,包括单元PUl的每一个处理单元用值0000 0R0010 = 0010 来更新其本地同步寄存器20'。
[0033] 挂起单元HJl的线程。挂起阶段由虚线表示。
[0034] 在时间t2,单元PU3中运行的线程到达同步屏障。通过网络将消息1000多播给包 括单元PU3本身的所有处理单元。
[0035] 一接收到消息1000,包括单元PU3的每一个处理单元用值0010 0R1000 = 1010来 更新其本地同步寄存器20'。
[0036] 挂起单元HJ3的线程。该挂起阶段由虚线表示。
[0037] 在时间t3,单元PUO中运行的线程到达同步屏障。通过网络将消息0001多播给包 括单元PUO本身的所有处理单元。
[0038] 一接收到消息0001,包括PUO的每一个处理单元用值1010 0R0001 = 1011来更新 其本地同步寄存器20'。
[0039] 挂起单元F1UO的线程。该挂起阶段由虚线表示。
[0040] 在时间t4,单元PU2内运行的线程到达同步屏障。通过网络将消息0100多播给包 括单元PU2本身的所有处理单元。
[0041] 一接收到消息0100,包括单元PU2的每一个处理单元用值1011 0R0100 = 1111来 更新其本地同步寄存器20'。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1