CN105204821B - 处理器间同步系统 - Google Patents
处理器间同步系统 Download PDFInfo
- Publication number
- CN105204821B CN105204821B CN201510528012.6A CN201510528012A CN105204821B CN 105204821 B CN105204821 B CN 105204821B CN 201510528012 A CN201510528012 A CN 201510528012A CN 105204821 B CN105204821 B CN 105204821B
- Authority
- CN
- China
- Prior art keywords
- processor
- command
- wait
- notification
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
- G06F13/4278—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using an embedded synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
一种利用点对点链路的处理器间同步方法,包括步骤:在一源处理器(PE1)和一目标处理器(PE2)之间定义一点对点同步通道;在该源处理器中执行期望与该同步通道相关联的一通知的一等待命令(WAIT),其中该等待命令被设计用于停止该源处理器直到接收到通知;在该目标处理器(PE2)中执行一通知命令(NOTIFY),该通知命令被设计用于通过该点对点链路传送由该源处理器(PE1)期望的通知;在该目标处理器(PE2)执行期望与该同步通道相关联的一通知的一等待命令(WAIT),其中该等待命令被设计用于停止该目标处理器直到接收到通知;以及在该源处理器(PE1)中执行一通知命令(NOTIFY),该通知命令被设计用于通过该点对点链路传送由该目标处理器(PE2)期望的通知。
Description
技术领域
本发明涉及共享相同资源的并行运行相同程序的各线程的若干个处理器的同步,更具体地,涉及允许处理器直接写数据到相邻处理器的寄存器文件的通信系统。
背景技术
论文[Rajiv Gupta,“对于指令级并行的开发使用寄存器通道(EmployingRegister Channels for the Exploitation of Instruction Level Parallelism)”,PPOPP′90Proceedings of the Second ACM SIGPLAN Symposium on Principles&Practice of Parallel Programming,第118-127页]描述了一种利用“寄存器通道”的处理器间通信系统。“寄存器通道”识别出允许源处理器通过源和目标处理器之间的点对点连接将数据写入至目标处理器的指定寄存器的通信通道。所述寄存器可被包括在该目标处理器的寄存器文件中,由此写入到寄存器中的数据可由该处理器在一个时钟周期中访问而没有延迟。
同步标志被增加到可被用于通道的每一个寄存器上。特定的指令集被设计用来在这些通道上执行操作,组合对于这些寄存器的本地和远程访问,以及管理这些同步标志。
在源处理器和目标处理器的寄存器之间建立的通道中,该通道标志被初始化为0,指示该寄存器不是最新的。当该源处理器在该通道中写入数据时,该标志被设置为1。为了使用寄存器内容,该目标处理器执行寄存器读命令,其重置该标志为0。
如果由目标处理器执行的读指令看到该标志是0,则该目标处理器停止直到该标志被切换至1。如果由源处理器执行的写指令看到该标志是1,则该源处理器停止直到该标志被转换到0。
该系统基于源处理器在写入该通道之前知晓该通道标志的状态。这涉及预先在该源处理器中执行通过该通道的一远程读取以测试该标志,或者在这些处理器之间的点对点链接中提供传送该标志的状态的布线。在实践中,在这样的系统中每个处理器的单个寄存器被指定一通道。
通道标志被同样用于操纵数据的指令切换或探测的事实可能剥夺了编程者进行最优化的灵活性,尤其是在VLIW架构处理器的环境中。
发明内容
通常提供了一种利用点对点链路的处理器间同步方法,包括步骤:在一源处理器和一目标处理器之间定义一点对点同步通道;在该源处理器中执行期望与该同步通道相关联的一通知的一等待命令,其中该等待命令被设计用于停止该源处理器直到接收到该通知;在该目标处理器中执行一通知命令,该通知命令被设计用于通过该点对点链路传送由该源处理器期望的该通知;在该目标处理器执行期望与该同步通道相关联的一通知的一等待命令,其中该等待命令被设计用于停止该目标处理器直到接收到该通知;以及在该源处理器中执行一通知命令,该通知命令被设计用于通过该点对点链路传送由该目标处理器期望的该通知。
该方法可包括进一步的步骤:在该目标处理器中,最迟与该通知命令的执行一起,执行一释放共享资源的指令;以及在该源处理器中,最迟与该通知命令的执行一起,执行用于写入该共享资源的一指令。
该共享资源可以是该目标处理器寄存器文件的一寄存器,以及该写入指令被设计用于通过该点对点链路更新该寄存器。
该方法可包括进一步的步骤:在处理器的指令集中提供一专用同步指令,被设计用于并行执行由该同步指令的一参数标识的一等待命令和一通知命令;在该源处理器中,在一第一同步指令中配置该等待命令和该通知命令;以及在该源处理器中执行该第一同步指令,由此:
●该等待命令越过并挂起该通知命令的执行直到从该目标处理器接收到该通知,
●根据从该目标处理器接收到通知而执行该通知命令,
●如果在该第一同步指令的执行之时或之前接收到来自于该目标处理器该通知,并行执行该等待和通知命令。
这些处理器可具有一VLIW架构,该架构能够并行执行在相同VLIW包中传输的多个指令,该方法包括步骤:在该目标处理器中,最迟与该通知命令的执行一起,执行释放一共享资源的一指令;以及在该源处理器中,在该相同VLIW包中,执行该第一同步指令和用于写入该共享资源的一指令,由此根据从该目标处理器接收到该通知而并行执行该通知命令和该写指令。
该方法可包括接下来的在该目标处理器中执行的步骤:
●在一第二同步指令中配置该等待命令;
●在一第三同步指令中配置该通知命令;以及
●执行在该相同VLIW包中的该第三同步指令以及释放该共享资源的指令。
该方法可包括进一步的步骤:设计该专用同步指令以并行执行选择数量的等待命令和选择数量的通知命令;并且在该指令的一参数中识别该选择的等待和通知指令。
该方法可包括进一步的步骤:由一唯一标识符(ch1)标识该同步通道;以及利用该唯一标识符作为与该同步通道相关的该等待和通知命令的参数。
该方法可包括进一步的步骤:在一本地处理器中,在对一远程处理器的一通知命令的执行中,在该本地和远程处理器之间的点对点链路上提供该唯一标识符;在该远程处理器中,将该唯一标识符写入一事件寄存器;以及在该远程处理器中,在该等待命令的执行中:
●比较该事件寄存器的内容和该等待命令的该参数;以及
●如果该比较被满足,继续执行并且重置该事件寄存器的内容。
该方法可包括进一步的步骤:通过设置一标识符的相应位识别每一个独特的同步通道,该标识符具有与所有处理器的事件寄存器共同的格式;写入该远程处理器的该事件寄存器中所有的位,这些位在出现在到达该远程处理器的所有点对点链路上的标识符中被设置;以及在该远程处理器中,在该等待命令的执行中,如果在该等待命令的参数中设置的所有的位在该事件寄存器中被设置,则继续执行,由此一等待命令能够被配置为同时等待多个处理器的通知。
附图说明
从接下来的本发明的特定实施方式的描述上其他优点和特征会变得更加显著,这些特定的实施方式仅仅以示例性的目的被提供以及在附加的图中被表示,其中:
图1是被分成组的处理器阵列的方块图,其中处理器可经由点对点链路通信;
图2示出了根据利用通知的协议的在处理器之间的示例性同步序列;
图3示出了在与图2相同环境中的另一个示例性同步序列;
图4示出了当使用组同步指令时的图3的同步序列;以及
图5是示出了在处理器之间的用于传送通知的点对点链路的方块图。
具体实施方式
图1展示了处理器PE的示例的4×4阵列。该处理器PE可被连接到公共总线,其也被连接到共享存储器MEM。该存储器MEM可容纳有由这些处理器执行的程序代码和这些程序的工作数据。
如上所述,每一个处理器典型的具有一专用寄存器文件,用于操纵由该处理器指令集使用的操作数。为了实现利用寄存器通道的处理器间通信方法,这些处理器可通过四个相邻处理器分组,如显示的那样。在一组中的每个处理器通过点对点链路被连接到该组中的其它三个处理器。在一组中处理器的数目在实践中可由在可用的该阵列的表面积中处理器间能够进行连线的点对点链路的数量所决定。
与这些处理器的接口EV关联的这些点对点链路被设计成允许每一个处理器直接写数据到该组中任何其它处理器的指定寄存器中。利用下面描述的同步技术,不需要强加特殊限制到指定寄存器上。该寄存器可以是专用的或者在该目标处理器的寄存器文件中任意选择的。“目标处理器”指定一处理器,该处理器在它的一个寄存器中接收由“源处理器”通过连接这两个处理器的点对点链路写入的数据。该目标处理器和该指定的寄存器定义了一“寄存器通道”。
本文提出了利用共享资源,尤其是寄存器通道的一特定的处理器间同步技术。这个技术利用可被集成到处理器指令集中的专用命令。这些命令包括一通知命令(NOTIFY)、一通知等待命令(WAIT)以及一远程写命令。
这些命令可以被用于在软件中,并如在后面所述,因而以灵活的方式利用寄存器通道在示例的处理器间通信的环境中执行处理器间同步。
该NOTIFY和WAIT命令是与环境相关的并且依赖于它们被执行所在的处理器(源或目标)的性质。
在目标处理器中,NOTIFY命令可通过对应的点对点链路向该源处理器指出该寄存器通道是空闲的,即分配给该通道的本地寄存器是可用的。
在源处理器中,NOTIFY命令可向该目标处理器指出该源处理器已经在该通道中写入数据。
在该源处理器中,WAIT命令可被执行以等待来自于该目标处理器的空闲通道通知。在该目标处理器中,该WAIT命令可被执行以等待来自于该源处理器的写通知。WAIT命令阻塞时它暂停该处理器直到接收到期望的通知。这个指令的组合在指定给该通道的寄存器中将CPU暂停与操纵数据的操作分离。
接下来的附图示出了在并行运行在三个处理器上的示例性的简单的循环中的环境中,使用这些命令的若干个可能方式。该循环的每个迭代将第一索引递增1,将第二索引递增2,并累积这两个索引的总和。这个循环被分布在三个处理器PE1、PE2、PE3上。该处理器PE1计算该第一索引的当前值并且存储它到一本地寄存器中,例如指定r10。该处理器PE3计算该第二索引的当前值并存储它到一本地寄存器中,指定r12。该处理器PE2接收在分别的寄存器(指定r50和r52)中的这两个索引的当前值,并且各自在本地寄存器(指定r30和r32)中累积它们的内容。
该源处理器PE1和PE3通过以下迭代进行循环:
●递增该索引寄存器(ADD),
●等待至处理器PE2的通道可用(WAIT),
●将该索引寄存器内容写入到该通道中(LD),以及
●向该目标处理器通知该写入操作(NOTIFY)。
该目标处理器PE2通过以下迭代进行循环:
●向每个处理器通知该寄存器通道准备就绪(NOTIFY),
●等待由该处理器PE1和PE3的每一个更新该本地寄存器r50和r52(WAIT),以及
●将寄存器r50和r52的内容增加到寄存器r30和r32中(ADD)。
两串WAIT和NOTIFY命令在目标处理器PE2中被执行,各自与两个源处理器PE1和PE3相关联。原则上,与两个源处理器相关联的命令之间不需要遵守特定的顺序。
图2示出了对在该目标处理器PE2中的指令排序的第一可能方式,以及对应的在源处理器PE1和PE3中的指令序列。在这个序列中,源处理器一个接一个地,在该目标处理器中调度这些指令进行处理。
在该循环的开始,在周期t01中,该处理器PE1和PE3执行ADD指令以递增它们的索引(各自存储在寄存器r10和r12中)。该处理器PE2执行一NOTIFY指令以向该处理器PE1发信号告知通道“PE2:r50”(处理器PE2的寄存器r50)准备就绪。
在下一周期t02中,这三个处理器执行一WAIT指令,这些源处理器等待通道准备就绪通知(PE2:r50,PE2:r52),并且该目标处理器等待来自于处理器PE1的一远程写通知。
在周期t03中,该处理器PE1退出该等待状态,因为在周期t01中已接收到期望的通知。该处理器PE1执行远程写指令LD以将该本地寄存器r10的内容传送到该目标处理器的该寄存器r50。这些处理器PE2和PE3继续等待一通知,其在一指令的位置中由一白色矩形示出。
在周期t04中,该处理器PE1执行一通知指令以向该处理器PE2发信号告知期望的数据已被传送。作为响应,该处理器PE2会在下一周期退出它的等待状态。该处理器PE3仍在等待。
在周期t05中,该处理器PE1开始一新的循环迭代,它通过执行一ADD指令递增它的索引r10。该处理器PE2退出它的等待状态并且执行一ADD指令以在该寄存器r30中累积寄存器r50的内容。该处理器PE3仍在等待。
在周期t06中,该处理器PE1执行一WAIT指令等待一新的通道准备就绪通知。该处理器PE2启动与该处理器PE3的通信,并且执行一NOTIFY命令以向该处理器PE3发信号告知它的通道准备就绪。作为响应,该处理器PE3会在下一个周期退出它的等待状态。
在周期t07中,该处理器PE1保持处于等待状态。该处理器PE2执行一WAIT指令以等待由处理器PE3远程写入新数据在寄存器r52中。该处理器PE3退出它的等待状态并且传送寄存器r12中的内容到处理器PE2的该寄存器r52中。
在周期t08中,这些处理器PE1和PE2保持处于等待状态。该处理器PE3执行该处理器PE2期望的NOTIFY指令-该处理器PE2将会在下一周前退出它的等待状态。
在周期t09中,该处理器PE1保持处于等待状态。该处理器PE2通过执行一ADD指令在寄存器r32中累积寄存器r52的内容。该处理器PE3通过递增该索引r12开启一新的循环迭代。
由此介绍了在每一个处理器中的迭代,读者可以容易的理解所示执行序列的剩余部分。
需要注意的是,该执行序列在这些处理器中包括多个等待周期,在这些源处理器PE1和PE3中每次迭代会多达四个周期。在本示例中,这些等待周期可能部分归因于该目标处理器在每次迭代中执行六条指令(对于每一个源处理器是三条指令)的事实,而每一个源处理器仅仅在每次迭代中执行四条指令。理论上,在这些源处理器上每次迭代最小可达到二个等待周期。
WAIT和NOTIFY指令的执行可以附带参数,如图2所示。这些参数可标识出源或目标处理器、目标处理器的寄存器、以及事件的性质。在实践中,这些指令传送这么多信息是没有用的。处理器组共享一组通道号码以及在该组通道号码中将由编程者任意选择的唯一通道号码指定给每一对(目标处理器、寄存器号码)就已足够。因而,该WAIT和NOTIFY指令可在下文中仅仅传送该通道号码作为参数,在处理器PE1和PE2之间的通道被指定为ch1,以及在处理器PE3和PE2之间的通道被指定为ch2。
图3示出了在该目标处理器PE2中的另一可能的指令调度,以及在这些源处理器PE1和PE3中的对应指令调度。在这个例子中,在该目标处理器中指令被调度成轮流处理针对两个源处理器的指令。接下来相同类型的指令被分组。如在图3中所示,在一次迭代中,该处理器PE2先执行两个NOTIFY指令,然后是两个WAIT指令,以及最后是二个累积指令。
这种选择的结果是在源处理器中等待周期大大减少。沿着图3的执行序列,在第一次循环迭代中的过渡指令对准阶段,在处理器PE1和PE3中每次迭代两个等待周期情况下,实现了稳定区域。
图2和图3中的执行序列两者都显示了WAIT和NOTIFY指令的不同的执行顺序选择,尤其是在目标处理器中,针对等待周期产生了更多或更少有效序列。在本例子中,可见将相同类型的指令分组在一起是好的选择。这种选择也可能在其它情况中的效率较低。进而,所述示例中没有考虑与不同指令相关联的处理单元流水线深度。为了简化的目的假定每条指令在一个周期中被执行,但是实际上,一些指令与其他的相比需要更多周期才能完成,其会增加可能的同步模式的数目。综上所述,按照本文描述的方式使用WAIT和NOTIFY指令以确保处理器间同步为编程者提供了灵活性,允许他在所有的情形中寻找最高效的代码。
在寄存器通道中对于每次写入利用两个分开的WAIT和NOTIFY指令进行同步,相对于前述的Raiiv Gupta的文章中描述的同步标志方法可能需要更多的时钟周期。在下文中,提供用于减少时钟周期数目的方法。
超长指令字(VLIW)处理器架构包括若干个并行操作的指令处理单元,例如两个算术与逻辑单元(ALU)、一浮点计算单元(FPU)、一数据读/写单元以及一分支单元。这样的处理器可并行执行,例如两个加法、一个乘法、在寄存器间移动数据、以及条件分支。这种处理器的编译器负责放置可在“VLIW包”中被并行执行的指令。
为了节省时钟周期,可考虑将WAIT、NOTIFY和远程写指令放置于一个VLIW包(例如处理器PE1的周期t02到t04中的指令)中。该WAIT指令可由修改过的分支单元处理,而该NOTIFY指令可由修改过的读/写单元处理。如果该处理器不具有第二读/写单元,则该远程写指令不能在相同VLIW包或周期中被处理。然而ALU单元也具有写或读功能,因为它们被设计成在一寄存器中或一地址处写入一操作的结果——类型LD PE2:r50的一远程写操作,通过修改该ALU单元,r10(发送寄存器r10的内容到处理器PE2的寄存器r50)可被重写为ADDPE2:r50,r10,0(将寄存器r10的内容和0的总和置于处理器PE2的寄存器r50中),使得它可通过点对点链路通信。
这些措施可能并不足够,尤其是在图3的情况下,其中需要将类似的指令分组在一起。特别的,将两个WAIT指令分组在单个VLIW包中而不提供两个分支单元对其并行执行是困难的。通常,可要求一个处理器并发地处理多于两个的寄存器通道,因此根据表面积和功耗来提供专用处理单元以满足所有情形是不明智的。
为了替代提供分开的WAIT和NOTIFY指令,本文提出了,在VLIW处理器的环境中,在由SYNCGRP设计单个所谓的“分组同步”指令中合并WAIT和NOTIFY命令。待合并的WAIT和NOTIFY命令可被选择使得在顺序系统(图2和3))中,例如处理器PE1中周期t02和t04的WAIT和NOTIFY命令,WAIT命令先于NOTIFY命令执行。
此外,可提供的是在和SYNCGRP指令相同的VLIW包中运行引起通知的操作,例如由处理器PE1在周期t03中在寄存器通道ch1中的写入(LD)。
并行运行WAIT命令以及随后的NOTIFY命令看起来出乎预料,因为该NOTIFY命令在理论上仅在等待周期结束后才可被发出,最早也与触发它(LD)的事件同步。实际上,可由分支单元处理该WAIT命令,因为它的流水线浅,相对于其它涉及的处理单元具有即时的反应时间。因此,如果不满足退出等待状态的条件,则该分支单元在该VLIW包的其它命令(NOTIFY)和指令(LD)能够完成之前停止该处理器。当接收到期望的通知时,该分支单元将该处理器从它的等待状态唤醒,由此该VLIW包的其它命令和指令完成它们的执行。
该读/写单元可与处理该WAIT命令的该分支单元并行地执行该NOTIFY命令。
后面描述的特别简单的结构可被用于配置该SYNCGRP指令,因此它可并行处理若干个WAIT命令和若干个NOTIFY命令而不需要多个分支和读/写单元。该SYNCGRP指令也可被配置为忽略WAIT命令或NOTIFY命令。在SYNCGRP指令执行时并行处理若干个WAIT命令归结为等待与WAIT命令相关联的最后通知。
图4展示了基于图3的示例执行序列,利用SYNCGRP指令和VLIW包。就源处理器PE1和PE3来说,对于每一对连续的WAIT和NOTIFY命令执行一SYNCGRP指令,并且向该处理器PE2的远程-写指令被置于相同VLIW包中。由于可由该读/写单元实现该SYNCGRP的该NOTIFY命令,在同一周期中这个单元对于该远程-写指令是不可用的。该远程-写指令可被格式化从而使用可用的ALU,例如以加法的形式,其结果被写入该目标处理器的指定的寄存器中(ADDPE2∶r50,r10,0)。该索引递增指令在这里被单独执行,虽然他们可能已经被包括在具有该SYNCGRP指令的在VLIW包中。
就该目标处理器来说,每次迭代的两个NOTIFY命令均被分组到第一SYNCGRP指令中,并且每次迭代的两个WAIT命令均被分组到第二SYNCGRP指令中。除了第一迭代的加法指令外,利用指定的寄存器(r50,r52)的加法指令被集成在与“SYNCGRP notify”指令相同的VLIW包中。
这种配置在每一个处理器上的迭代中获得了同样的周期数目(2)并且在理论上的执行中没有等待周期。
为了反映更接近真实的情形,其中在该三个处理器中不可能同时启动这些循环,例如通过在具有一个周期延迟的情况下在处理器PE3中启动循环,在处理器PE1和PE3中显示了两个不同的执行序列。这导致在处理器PE2中在周期t03中产生了一个等待周期。然而在该三个处理器的执行序列中不会再出现更多的等待周期。
为了理解在处理器间的交换流程,将对该周期t04进行描述。在这一个周期中,目标处理器PE2执行VLIW包,其在寄存器r30和r32中累计寄存器r50和r52的内容,并且向处理器PE1和PE3通知该寄存器r50和r52(通道ch1和ch2)已经准备就绪。(寄存器r50和寄存器52各自已经在周期t02和t03中被更新。)在处理器PE3这边,通知还没有被期望并且它在周期t04中未触发任何操作。
在处理器PE1这边,当该处理器执行VLIW包时该通知到达,在同一周期中,其等待该通知、发送一通知、并且将寄存器r10的内容写入处理PE2的寄存器r50中。该通知到达时立即解除该等待,由此该处理器PE1发送寄存器r10的内容(虚线箭头)并且发出一通知(实线箭头)。
处理器PE2的寄存器r50在其内容被读取以在寄存器r30中进行累加时进行更新。然而这并不会产生冲突,因为该累计操作(ADD)在该周期的开始时利用该寄存器r50的状态,而寄存器r50的更新发生在周期开始之后。
如在这个执行序列所示,该SYNCGPR指令可被配置以同时处理多个WAIT命令(在实际中处理器处理的每一个通道有一个),以及多个NOTIFY命令(同样该处理器处理的每一个通道有一个)。为了这个目的,传递给该SYNCGPR指令的参数可以是一个字,这个字包括分别对于该组其他每个处理器的通知字段以及用于识别期望的来自该组的任意处理器的通知的字段。这些字段的每一个用于记录处理器发送或等待通知的寄存器通道号码。
对于四个处理器的组,作为传递参数的该字可能具有32位的大小,其中三个最高有效位被用于识别被分别发送到其它三个处理器的通知,并且最低有效字节被用于识别被期望的通知。在每一字节中,寄存器通道可被通过各个位为1的位置,即通过位屏蔽识别。每一个字段可从而为该四个处理器唯一地编码八通道,零表示没有通知被发送或被期望。例如,十六进制参数0x00010002表明本地处理器发送通道0(0x01=20)的通知给排第2的处理器,并且期望通道1(0x02=21)的通知.参数0x06000800表明本地处理器同时发送通道1和2(0x06=21+22)的通知给排第3的处理器,发送通道3(0x08=23)的通知给排1的处理器,并且不期望通知。参数0x0000000B表明本地处理器不发送任何通知并且期望通道0,1和3(0x0B=20+21+22)的通知。
图5是示出在处理器间的点对点链路的细节的方块图,其允许以极简单的方式将该新的SYNCGRP指令并入现有的处理器架构中。这个图示出了用于在处理器间传输通知的链路。
由点对点链路互联的处理器组的每一个处理器均包含一事件寄存器EV,对于处理器PEx详细的示出。这个寄存器对应于该SYNCGRP指令的参数——它包括专用于该组的每一个其它处理器的通知字段,可通过本地处理器写入。在一组四个处理器的例子中,PEv指定竖直相邻的处理器,PEh指定水平相邻的处理器,以及PEd指定对角的处理器。由这些相同参考指定通知字段。而且,该寄存器EV包括组中的所有其它处理器可写的入站(inbound)通知字段IN。
每一个通知字段被连线到对应的远程处理器的IN字段。出于清楚的原因没有示出所有的链路。该IN字段的连线对于本地处理器PEx被详细的示出。在寄存器通道由位屏蔽识别出的情况下,该IN字段可实际上被连线以接收其它处理器的对应通知字段的内容的按位OR。该IN寄存器字段从而追踪由该本地处理器接收的通知的历史。一旦这个历史被WAIT命令接纳,则该IN字段,至少这些被WAIT命令接纳的、在SYNCGRP指令的参数中被识别的位可被擦除。
寄存器EV的通知字段可以是只写,并且是直接传送在该SYNCGRP指令的参数中表现的状态的简单连线。
利用这种配置,具有给定参数的SYNCGRP指令的执行可概况为以下步骤:
●将本地寄存器EV的IN字段的内容与参数的期望通知字段比较。
●只要在期望的通知字段中设置的位没有在IN字段中全部设置就停止处理器。
●当在IN字段中全部设置期望的通知字段的位为1时,唤醒处理器。
●将三个通知字段的内容写入EV寄存器的字段PEh、PEd和PEv中。这等于在其它处理器的EV寄存器的对应的IN字段中直接写入这些内容。
●在字段IN中重置在期望的通知字段中被设置的位。
这些步骤可通过在VLIW处理器中已有的指令处理单元以较小的修改成本实现,尤其是由分支单元管理该处理器的比较和停止操作,以及由该读/写单元管理该EV寄存器。
本文描述的该实施方式的多种变化和修改对本领域技术人员是明显的。虽然同步技术已被描述在处理器间共享资源的环境中,尤其是寄存器通道,这些同步技术可以被应用到在系列事件后要求“重校准”由多个处理器并行执行的这些线程的任何情形中。例如,可以期望并行执行的这些线程在循环的每一新的迭代开始时被同步,例如在这种情况中,其中的迭代具有变化的执行次数。
Claims (11)
1.一种处理器间同步方法,包括以下步骤:
通过一源处理器和一目标处理器之间的点对点链路定义多个通道;
在处理器共有的指令集中提供组同步指令,所述组同步指令对等待命令和通知命令两者进行编码并且包括用于识别所述等待命令和所述通知命令的各个通道的参数字段,由此每个处理器包括用于等待命令和通知命令中的每一个命令的相应处理单元,并且被配置为同时执行等待命令和通知命令;
在源处理器中,执行第一组同步指令,所述处理单元被配置为使得组同步指令的等待命令在组同步指令的通知命令完成之前将所述源处理器置于停止状态,从而暂停所述通知命令的执行;
在所述目标处理器中,执行具有识别通道的参数的第二通知命令,使得目标处理器中的对应的处理单元通过所述点对点链路向所述源处理器发送识别所述通道的通知信号;
在所述源处理器中,通过将所述通知信号的通道与所述第一组同步指令的等待命令的通道进行比较来响应来自所述目标处理器的所述通知信号;以及
在所述源处理器中,如果所比较的通道匹配,恢复执行所述通知命令,由此,如果在执行第一组同步指令时或之前接收到具有匹配的通道的通知信号,则所述等待命令不停止所述源处理器,并且所述通知命令在没有暂停的情况下完成。
2.如权利要求1所述的方法,其中,所述通道是寄存器通道。
3.如权利要求1所述的方法,其中,所述处理器具有超长指令字架构,使得能够同时执行在相同的超长指令字包中传送的多个指令,所述方法还包括以下步骤:
在所述目标处理器中,在执行所述第二通知命令时或之前执行释放共享资源的指令;以及
在所述源处理器中,在相同的超长指令字包中执行第一组同步指令和用于写入共享资源中的指令,由此在接收到来自所述目标处理器的通知信号时,同时执行写指令和所述第一组同步指令的通知命令。
4.如权利要求3所述的方法,还包括在所述目标处理器中执行的以下步骤:
在第二组同步指令中配置第二通知命令;和
执行同一超长指令字包中的第二组同步指令和释放共享资源的指令。
5.如权利要求1所述的方法,还包括以下步骤:
设计指令集的组同步指令,以对具有识别各个通道的参数字段的多个等待命令以及具有识别各个通道的参数字段的多个通知命令进行编码;以及
配置每个处理器的处理单元以同时执行所述组同步指令的多个等待命令和多个通知命令。
6.如权利要求1所述的方法,还包括在执行所述第一组同步指令的等待命令时由源处理器的处理单元执行的以下步骤:
将所述参数字段与事件寄存器的内容进行比较;
在事件寄存器中注册由来自目标处理器的通知信号识别的通道;以及
当比较满足时,完成所述第一组同步指令的通知命令并重置所述事件寄存器的内容。
7.如权利要求6所述的方法,其中,
通道由所述组同步指令的参数字段的相应位位置来识别;
在所述事件寄存器中注册的步骤包括设置与由来自目标处理器的通知信号所识别的通道相对应的位位置;以及
当在所述源处理器中执行等待命令时,当在所述事件寄存器中设置了与等待命令相对应的参数字段中设置的所有位时,恢复执行,由此等待命令可配置为使得所述源处理器同时等待多个通知信号。
8.一种多处理器系统,包括:
两个处理器之间的同步点对点链路,所述点对点链路定义多个通道;
每个处理器共有的指令集,所述指令集包括:
用于实施具有在参数字段中识别的通道的等待命令的指令;和
用于实施具有在参数字段中识别的通道的通知命令的指令;和
在每个处理器中的被配置为执行以下步骤的指令处理单元:
在处理器中执行指令的通知命令时,通过由通知命令参数识别的通道发送通知信号;和
在处理器中执行指令的等待命令时,停止处理器,并且当通过与由等待命令参数识别的通道相匹配的通道接收到通知信号时,重新启动处理器。
9.如权利要求8所述的多处理器系统,其中,所述处理器具有超长指令字架构,并且每个通道由等待命令和通知命令的参数字段的位位置来识别,并且所述指令集包括并行实施“零个到多个(none to multiple)等待命令”和“零个到多个通知命令”的指令,所述指令可通过设置所述等待命令和所述通知命令的各个参数字段的相应位来配置。
10.如权利要求9所述的多处理器系统,其中,每个处理器包括事件寄存器,所述事件寄存器包括用于其他处理器的每个处理器的一个通知输入字段和相应的通知输出字段,点对点链路被配置为将每个通知输出字段的设置位复制到相应处理器的通知输入字段。
11.如权利要求10所述的多处理器系统,其中每个处理器的指令处理单元被配置为:
通过停止处理器来响应等待命令,直到等待命令参数字段与事件寄存器的通知输入字段匹配;以及
通过在事件寄存器的相应通知输出字段中写入通知命令参数字段来响应通知命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1454591 | 2014-05-21 | ||
FR1454591A FR3021433B1 (fr) | 2014-05-21 | 2014-05-21 | Systeme de synchronisation inter-processeurs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105204821A CN105204821A (zh) | 2015-12-30 |
CN105204821B true CN105204821B (zh) | 2019-12-10 |
Family
ID=52450209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510528012.6A Active CN105204821B (zh) | 2014-05-21 | 2015-05-21 | 处理器间同步系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10915488B2 (zh) |
EP (1) | EP2947577B1 (zh) |
CN (1) | CN105204821B (zh) |
FR (1) | FR3021433B1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110928575B (zh) * | 2018-09-20 | 2022-04-29 | 上海登临科技有限公司 | 一种多设备同步控制系统和控制方法 |
FR3091363B1 (fr) | 2018-12-27 | 2021-08-06 | Kalray | Système de synchronisation inter-processeurs configurable |
CN109756709A (zh) * | 2018-12-28 | 2019-05-14 | 北京工业大学 | 一种红外全景监控软件中的性能提升方法 |
CN111526172B (zh) * | 2019-02-03 | 2022-11-29 | 杭州登临瀚海科技有限公司 | 一种多设备管理方法和管理系统 |
US11468304B1 (en) * | 2019-11-26 | 2022-10-11 | Amazon Technologies, Inc. | Synchronizing operations in hardware accelerator |
CN114546905B (zh) * | 2022-01-20 | 2024-05-14 | 广州广电五舟科技股份有限公司 | 一种多路cpu的通道同步控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560733A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 超长指令字微处理器中的指令控制流水线方法 |
US7032099B1 (en) * | 1998-10-23 | 2006-04-18 | Sony Corporation | Parallel processor, parallel processing method, and storing medium |
US7062767B1 (en) * | 2000-09-05 | 2006-06-13 | Raza Microelectronics, Inc. | Method for coordinating information flow between components |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317734A (en) * | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
EP1236095B1 (en) * | 2000-02-28 | 2010-04-14 | Nxp B.V. | Data processor with multi-command instruction words |
US6782440B2 (en) * | 2000-07-26 | 2004-08-24 | T.N.S. Holdings, Inc. | Resource locking and thread synchronization in a multiprocessor environment |
US8949468B2 (en) * | 2001-09-21 | 2015-02-03 | International Business Machines Corporation | Method and system for time synchronization among systems using parallel sysplex links |
US20050165938A1 (en) * | 2003-12-24 | 2005-07-28 | Linden Cornett | Method, system, and program for managing shared resources |
US7861060B1 (en) * | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
EP2159694B1 (en) * | 2007-06-20 | 2019-03-27 | Fujitsu Limited | Method and device for barrier synchronization, and multicore processor |
US20100115236A1 (en) * | 2008-10-31 | 2010-05-06 | Cray Inc. | Hierarchical shared semaphore registers |
US8423343B2 (en) * | 2011-01-24 | 2013-04-16 | National Tsing Hua University | High-parallelism synchronization approach for multi-core instruction-set simulation |
US20130160028A1 (en) * | 2011-12-14 | 2013-06-20 | John E. Black | Method and apparatus for low latency communication and synchronization for multi-thread applications |
WO2013140019A1 (en) * | 2012-03-21 | 2013-09-26 | Nokia Corporation | Method in a processor, an apparatus and a computer program product |
US9064437B2 (en) * | 2012-12-07 | 2015-06-23 | Intel Corporation | Memory based semaphores |
JP2014215768A (ja) * | 2013-04-24 | 2014-11-17 | 富士通セミコンダクター株式会社 | 性能評価用トランザクション生成プログラム及び性能評価用トランザクション生成装置 |
US9891927B2 (en) * | 2013-08-28 | 2018-02-13 | Via Technologies, Inc. | Inter-core communication via uncore RAM |
-
2014
- 2014-05-21 FR FR1454591A patent/FR3021433B1/fr active Active
-
2015
- 2015-05-13 EP EP15167601.2A patent/EP2947577B1/fr active Active
- 2015-05-19 US US14/716,298 patent/US10915488B2/en active Active
- 2015-05-21 CN CN201510528012.6A patent/CN105204821B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032099B1 (en) * | 1998-10-23 | 2006-04-18 | Sony Corporation | Parallel processor, parallel processing method, and storing medium |
US7062767B1 (en) * | 2000-09-05 | 2006-06-13 | Raza Microelectronics, Inc. | Method for coordinating information flow between components |
CN1560733A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 超长指令字微处理器中的指令控制流水线方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2947577A1 (fr) | 2015-11-25 |
US20150339256A1 (en) | 2015-11-26 |
FR3021433A1 (fr) | 2015-11-27 |
US10915488B2 (en) | 2021-02-09 |
FR3021433B1 (fr) | 2016-06-24 |
CN105204821A (zh) | 2015-12-30 |
EP2947577B1 (fr) | 2023-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105204821B (zh) | 处理器间同步系统 | |
KR102228501B1 (ko) | 컴파일러 방법 | |
TWI708186B (zh) | 用於多微磚處理陣列之同步化之計算機與方法 | |
US20220253399A1 (en) | Instruction Set | |
US10963003B2 (en) | Synchronization in a multi-tile processing array | |
US20100100704A1 (en) | Integrated circuit incorporating an array of interconnected processors executing a cycle-based program | |
US11416440B2 (en) | Controlling timing in computer processing | |
KR102145457B1 (ko) | 방향 인디케이터 | |
CN111352744B (zh) | 计算机中的数据交换 | |
US20230281144A1 (en) | External Exchange Connectivity | |
US20200201794A1 (en) | Scheduling messages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |