CN112559054B - 用于同步指令的方法和计算系统 - Google Patents
用于同步指令的方法和计算系统 Download PDFInfo
- Publication number
- CN112559054B CN112559054B CN202011523538.2A CN202011523538A CN112559054B CN 112559054 B CN112559054 B CN 112559054B CN 202011523538 A CN202011523538 A CN 202011523538A CN 112559054 B CN112559054 B CN 112559054B
- Authority
- CN
- China
- Prior art keywords
- instruction
- synchronization
- synchronization unit
- computing system
- relationship
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000004044 response Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 34
- 230000000903 blocking effect Effects 0.000 claims description 40
- 238000004519 manufacturing process Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 30
- 238000010586 diagram Methods 0.000 description 14
- 238000010606 normalization Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本公开的示例性实现方式涉及用于同步指令的方法和计算系统。在一种方法中,接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表。响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配计算系统中的同步单元。基于第一指令和第二指令之间的依赖关系,设置同步单元,基于同步单元来同步第一指令和第二指令。进一步,提供了用于处理同步指令的计算系统。利用本公开的示例性实现方式,可以提高同步过程的性能,进而以更为有效的方式实现指令级别的同步。
Description
技术领域
本公开的示例性实现方式概括地涉及计算机领域,具体地,涉及用于同步指令的方法和计算系统。
背景技术
在计算系统的运行过程中,经常会使用同步操作。目前已经提供了例如驱动软件同步和工作包指令事件同步的方式。然而,已有同步方式的同步性能并不令人满意,不能实现较为精细粒度(例如,指令级别)的同步。因而,期望可以开发出一种在计算系统中同步指令的技术方案。
发明内容
提供了一种用于在计算系统中同步指令的技术方案。利用本公开的示例性实现方式,可以提高同步过程的性能,进而以更为有效的方式实现指令级别的同步。
根据本公开的第一方面,提供了一种用于同步指令的方法。在该方法中,接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表。响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配计算系统中的同步单元。基于第一指令和第二指令之间的依赖关系,设置同步单元,基于同步单元来同步第一指令和第二指令。
根据本公开的第二方面,一种用于同步指令的计算系统,包括:同步单元;处理单元;与处理单元耦合的存储单元,存储单元包括计算机可执行指令,计算机可执行指令在由处理单元运行时,使得处理单元执行如下动作:接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表;响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配同步单元;基于第一指令和第二指令之间的依赖关系,设置同步单元;以及基于同步单元来同步第一指令和第二指令。
根据本公开的第三方面,提供了一种用于在计算系统中同步指令的装置。该装置包括:接收模块,配置用于接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表;分配模块,配置用于响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配计算系统中的同步单元;设置模块,配置用于基于第一指令和第二指令之间的依赖关系,设置同步单元;以及同步模块,配置用于基于同步单元来同步第一指令和第二指令。
应当理解,本部分所描述的内容并非旨在标识本公开的示例性实现方式的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开的各示例性实现方式的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素。
图1示意性示出了将要被同步的指令列表的结构的框图;
图2示意性示出了根据本公开的一个示例性实现方式的在计算系统中同步指令的过程的框图;
图3示意性示出了根据本公开的一个示例性实现方式的在计算系统中同步指令的方法的流程图;
图4示意性示出了根据本公开的一个示例性实现方式的计算系统的结构的框图;
图5A至5C分别示意性示出了根据本公开的一个示例性实现方式的同步过程中的不同阶段的框图;
图6A和6B分别示意性示出了根据本公开的一个示例性实现方式的同步过程中的不同阶段的框图;
图7示意性示出了根据本公开的一个示例性实现方式的在计算系统中用于同步指令的过程的框图;以及
图8示意性示出了根据本公开的一个示例性实现方式的用于同步指令的计算系统的框图。
具体实施方式
以下结合附图对本公开的示范性示例性实现方式做出说明,其中包括本公开示例性实现方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的示例性实现方式做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例示例性实现方式”和“一个示例性实现方式”表示“至少一个示例示例性实现方式”。术语“另一示例性实现方式”表示“至少一个另外的示例性实现方式”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在计算系统的运行过程中,经常会涉及不同级别的同步:例如,计算设备之间的同步、计算单元之间的同步、指令列表(包括多个指令)级别的同步、以及指令级别的同步,等等。目前已经提供了例如驱动软件同步和工作包指令事件同步。
首先参见图1描述有关指令级别的同步的概要。图1示意性示出了将要被同步的指令列表的结构100的框图。如图1所示,在计算系统中可以接收第一指令列表110和第二指令列表120。每个指令列表可以包括多个指令,并且这些指令将会按顺序执行。如果第一指令列表110中的各个指令和第二指令列表120中的各个指令之间不存在依赖关系,则两个指令列表中的各个指令可以相互独立地被执行。此时,每个指令列表中的指令按顺序执行,例如,第一指令列表110中的指令114在第一指令112之后执行,第二指令列表120中的指令124在第二指令122之后执行。
如果第一指令列表110中的第一指令112和第二指令列表120中的第二指令122具有依赖关系,则需要同步第一指令112和第二指令122,继而才能执行后续的指令114和124。尽管某些已有的同步技术方案可以实现较为精细粒度(例如,指令级别)的同步,然而,这些同步技术方案需要反复访问计算系统的存储器(例如,内存)中的数据,这导致已有技术方案的同步延迟较大并且同步性能并不令人满意。
为了至少部分地解决已有技术方案中的缺陷,在本公开的一个示例性实现方式中,提供了用于在计算系统中同步指令的技术方案。为方便描述起见,将以图像处理的应用环境作为示例,提供有关同步指令的更多细节。在图像处理的应用环境中,计算系统可以包括多个计算单元以用于实现不同的功能。例如,一个计算单元可以将采集到的视频流解码为图像,多个计算单元可以分别处理解码后多个图像,另一计算单元可以针对多个图像执行归一化处理,等等。此时,在不同计算单元上执行的指令列表中的指令将会具有时间上的依赖关系。
将会理解,尽管在本公开的上下文中以图像处理作为具体地应用环境,在此描述的用于同步指令的技术方案还可以应用于其他应用环境。例如,包括但并不局限于其他数据处理、分布式计算、以及神经网络,等等。
在下文中,将参见图2描述用于同步指令的过程的概要。该图2示意性示出了根据本公开的一个示例性实现方式的在计算系统中同步指令的过程200的框图。在本公开的一个示例性实现方式中,可以在计算系统中部署同步引擎210。在此,同步引擎210可以以全局方式在计算系统中为具有依赖关系的多个指令列表提供同步服务。该同步引擎210可以包括一个或多个同步单元。假设第一指令列表110中的第一指令112和第二指令列表120中的第二指令122具有依赖关系,则可以向第一指令112和第二指令122分配同步单元220。可以基于第一指令112和第二指令122之间的依赖关系,设置该同步单元220(例如,该同步单元220的各项参数),进而实现第一指令112和第二指令122之间的同步。
利用本公开的示例性实现方式,同步单元220可以记录有关第一指令112和第二指令122的执行状况的信息,进而实现两个指令之间的同步。在下文中,将参见图3描述有关同步指令的更多细节。图3示意性示出了根据本公开的一个示例性实现方式的在计算系统中同步指令的方法300的流程图。在框310处,接收多个指令列表,多个指令列表包括第一指令列表110和第二指令列表120。将会理解,尽管在此步骤中的多个指令列表仅包括两个指令列表,在其他示例性实现方式中,多个指令列表可以包括更多的列表。
在本公开的一个示例性实现方式中,计算系统可以包括多个计算单元,并且可以分别从多个计算单元接收多个指令列表。图4示意性示出了根据本公开的一个示例性实现方式的计算系统的结构400的框图。如图4所示,计算系统410可以包括第一计算单元410、第二计算单元420、…、以及第N(N为正整数)计算单元430。具体地,可以从第一计算单元410接收第一指令列表110,并且可以从第二计算单元420接收第二指令列表120。
将会理解,在此并不限制计算单元的类型,而是计算单元可以包括多种类型:计算系统中的计算设备、计算设备中的处理器、或者处理器中的处理器核,等等。利用本公开的示例性实现方式,可以从不同类型的计算单元处接收指令列表。以此方式,可以向不同类型的计算单元提供指令同步能力。根据本公开的一个示例性实现方式,指令可以涉及一个或多个指令。例如,第一指令112可以包括单一指令;备选地和/或附加地,该第一指令112可以包括多个指令。
已经参见图4描述了有关接收指令列表的过程,在下文中将返回图3描述有关设置同步单元220的更多细节。在图3的框320处,响应于确定第一指令列表110中的第一指令112与第二指令列表120中的第二指令122具有依赖关系,向第一指令112和第二指令122分配计算系统中的同步单元220。将会理解,在此的依赖关系可以包括多种类型:阻塞类型的依赖关系、生产类型的依赖关系和消费类型的依赖关系(分别简称为阻塞关系、生产关系和消费关系)。
根据本公开的一个示例性实现方式,阻塞关系可以表示第一指令112和第二指令122阻塞第一指令列表110中的位于第一指令112之后的指令114以及第二指令列表120中的位于第二指令122之后的指令124的执行。换言之,在第一指令112和第二指令122两者都已经被执行之后,才能执行后续的指令114和124。在本公开的一个示例性实现方式中,生产关系可以表示第一指令112的输出决定第二指令122的输入,并且消费关系可以表示第二指令122的输入依赖于第一指令112的输出。在此,生产关系和消费关系是逆向的。
在下文中,将以针对图像执行归一化处理的过程为示例描述处理具有阻塞关系的指令的更多细节。假设第一指令列表110和第二指令列表120用于执行图像的归一化处理。第一指令112和第二指令122分别用于获取第一图像和第二图像的数据,则此时必须首先获取将要被归一化的第一图像和第二图像的数据,才能执行后续的归一化处理。
如图4所示,可以在计算系统410中部署同步引擎210。例如,可以基于计算系统410中的存储装置来实现同步单元220。为了提高同步单元220的访问效率,可以利用计算系统410中的寄存器来实现同步单元220。在本公开的一个示例性实现方式中,可以标记每个同步单元的状态(例如,已分配状态或空闲状态),并且向第一指令112和第二指令122分配空闲的同步单元。假设同步引擎210中的全部同步单元都已经被分配,则可以等待正在执行的同步过程释放不再使用的同步单元。
在图3的框330处,基于第一指令112和第二指令122之间的依赖关系,设置同步单元220。由于第一指令112和第二指令122具有阻塞关系,可以基于该阻塞关系来设置同步单元220的相关参数。在本公开的一个示例性实现方式中,可以分别设置如下参数:同步计数器、同步类型、同步范围、同步标识符以及同步条件等。
根据本公开的一个示例性实现方式,同步计数器是指在同步单元220中存储的数值,并且可以基于依赖关系来设置同步计数器的具体数值。对于阻塞关系而言,可以基于与阻塞关系相关联的指令数量设置同步单元。上文描述的阻塞关系涉及两个指令(即,第一指令112和第二指令122),此时可以将同步计数器的初始值设置为2。假设需要针对M(M为大于1的正整数)个图像执行归一化处理,此时阻塞关系涉及M个指令,并且可以将同步计数器的初始值设置为M。
根据本公开的一个示例性实现方式,同步类型可以包括阻塞类型、生产类型和消费类型。可以分别使用不同的整数(例如,0、1和2)或者以其他方式来表示不同的同步类型。同步范围是指同步操作涉及哪些指令。在上文的示例中,同步操作涉及第一指令112和第二指令,则同步范围可以设置为:(第一指令112,第二指令122)。将会理解,在本公开的上下文中,并不限制具有阻塞关系的指令数量。假设需要针对M(M为大于1的正整数)个图像执行归一化处理,则此时的同步范围可以包括分别用于处理M个图像的M个指令。
同步标识符是被分配的同步单元220的标识符。例如,同步引擎210可以包括128个(或者其他数量的)同步单元,此时同步标识符可以由被分配的同步单元220的序号来表示(例如,第i个)。同步条件表示同步成功的条件。例如,用于阻塞关系的同步条件可以设置为“同步计数器=0”。
在本公开的一个示例性实现方式中,可以基于第一指令112和第二指令122中的任一项的执行,来更新同步单元220。具体地,同步单元220可以以上文描述的计数器来实现,并且可以基于递增或者递减的方式来更新同步单元220。在本公开的一个示例性实现方式中,可以将同步计数器的初始值设置为与阻塞关系相关联的指令数量。可以基于递减方式来更新同步单元220,在下文中,将参见图5A至图5C描述更新同步单元220的具体过程。
图5A至5C分别示意性示出了根据本公开的一个示例性实现方式的同步过程中的不同阶段500A至500C的框图。在图5A中,基于第一指令112和第二指令122的总数,可以将同步单元220设置为数值“2”。进一步,可以执行如下设置:同步类型=阻塞类型、同步范围=(第一指令112,第二指令122)、同步标识符=同步单元220,以及同步条件“同步计数器=0”。随着计算系统的运行,第一指令列表110和第二指令列表120中的各个指令分别被执行。假设第一指令112首先被执行(如图5B中阴影区域所示),同步单元220将被更新至数值“1”。随着计算系统的运行,第二指令122被执行(如图5C中的阴影区域所示),则同步单元220将被更新至数值“0”。在如图5A至如图5C所示的各个阶段中,可以基于同步单元220中的数值,来执行同步。
在下文中,返回图3描述有关同步的更多细节。在图3的框340处,基于同步单元220来同步第一指令112和第二指令122。具体地,可以比较同步单元220和同步条件。如果同步单元220不满足同步条件,则表示同步过程尚未完成,需要等待第一指令112和第二指令122被执行。具体地,在如图5B所示的阶段中,同步单元220中的数值为“1”,不满足同步条件“同步计数器=0”。此时,可以等待尚未被执行的指令(第二指令122)的执行。在图5C所示的阶段中,同步单元220中的数值为“0”。同步单元220满足同步条件,这表示此时已经完成同步,并且可以继续执行第一指令列表110中的位于第一指令112之后的指令114以及第二指令列表120中的位于第二指令122之后的指令124。
将会理解,图5A至5C仅仅示意性示出了用于设置和更新同步单元220的一种方式。在本公开的一个示例性实现方式中,还可以将同步单元220的初始值设置为数值“0”,并且基于递增方式来更新同步单元220。此时,同步条件可以相应地被设置为“同步计数器=2”。随着计算系统的运行,当第一指令112和第二指令122中的任一项被执行时,可以将同步单元220递增1。此时,同步单元220的数值为“1”并且不满足同步条件。当第一指令112和第二指令122中的另一指令被执行时,可以再次将同步单元220递增1。此时,同步单元220的数值为“2”并且满足同步条件,同步过程结束。
利用本公开的示例性实现方式,通过对同步单元220执行更新操作,可以以简单并且有效的方式来记录已经完成的指令的数量。通过将同步单元220与同步条件进行比较,即可迅速确定是否已经完成各个指令的同步。以此方式,可以提高阻塞关系的处理速度,进而改进同步性能。
在本公开的一个示例性实现方式中,在已经完成同步过程之后,可以释放同步单元220。例如,如果第一指令112和第二指令122已经被执行,则可以释放同步单元220。将会理解,同步引擎210中的同步单元的数量存在限制,可以在需要执行同步过程时为相应的多个指令分配同步单元。当已经完成同步过程时,可以释放该同步单元,以便于为其他的多个指令执行同步。
将会理解,上文已经参见附图5A至5C描述了可以用于同步两个指令的具体过程。将会理解,可以在具有阻塞关系的更多指令之间执行上文描述的同步方法。在本公开的一个示例性实现方式中,多个指令列表可以进一步包括第三指令列表。如果确定第三指令列表中的第三指令与第一指令和第二指令具有阻塞关系,则可以将第三指令映射至同步单元220。换言之,此时同步单元220负责在第一指令112、第二指令122以及第三指令之间的同步,并且同步单元220的初始值可以被设置为“3”。当第三指令被执行时,可以以递减方式更新同步单元220,直到同步单元220中的数值满足“同步计数器=0”的终止条件。根据本公开的一个示例性实现方式,多个指令列表可以包括M个指令列表,此时可以将同步单元220的初始值设置为M,并且按照上文描述的方法执行M个指令之间的同步。
在本公开的一个示例性实现方式中,计算系统可以包括多个寄存器,并且每个寄存器可以用于实现一个同步单元。利用本公开的示例性实现方式,可以有效地利用寄存器的高速读写性能,降低同步单元的设置和更新期间的数据访问延迟。以此方式,可以进一步降低同步过程的时间延迟,并且提高同步过程的整体性能。
上文已经描述了用于同步具有阻塞关系的指令的过程,在下文中将参见图6A和图6B描述有关生产关系的同步过程。图6A和6B分别示意性示出了根据本公开的一个示例性实现方式的同步过程中的不同阶段600A和600B的框图。如图6A所示,假设第一指令列表110用于从视频流中执行解码操作以获得图像,第二指令列表120用于处理获得的图像,此时第一指令112和第二指令122之间具有生产关系。也即,第一指令112的输出决定所述第二指令122的输入。
在本公开的一个示例性实现方式中,可以定义同步单元220中的数值。例如,可以将数值“1”定义为生产者已经生产出数据(已经从视频流中解码出图像),并且可以将数值“0”定义为生产者尚未生产出数据(尚未从视频流中解码出图像)。在初始阶段,可以向第一指令112和第二指令122分配同步单元220,并且可以将同步单元220的初始值设置为0。此时,各项参数的具体设置如下:同步计数器=0、同步类型=生产类型、同步范围=(第一指令112,第二指令122)、同步标识符=同步单元220,以及同步条件“同步计数器=1”。
如图6B中的阴影区域所示,如果已经成功执行第一指令122,这表示已经从视频流中解码出图像。此时,可以将同步单元220中的数值更新为“1”,以便通知第二指令122来消费该图像。在本公开的一个示例性实现方式中,可以监视是否存在消费者。如果发现第二指令122正在等待消费图像,则可以直接将同步单元220中的数值重置为“0”。
在本公开的一个示例性实现方式中,第一指令112和第二指令122之间的依赖关系可以包括消费关系。在此的消费关系是生产关系的逆向关系。第二指令122的输入依赖于所述第一指令112的输出。用于同步具有消费关系的指令的过程类似于上文描述的用于同步具有生产关系的指令的过程。可以将数值“0”定义为消费者正在等待数据,并且可以将数值“1”定义为消费者没有等待数据。在初始阶段,可以执行如下设置:同步计数器=0、同步类型=消费类型、同步范围=(第一指令112,第二指令122)、同步标识符=同步单元220,以及同步条件“同步计数器=1”。
将会理解,图6A和6B中所示出的数值“0”和“1”仅仅是示意性的。在本公开的一个示例性实现方式中,可以采用其他数值来表示生产者是否已经生产出了用于下游消费者的数据。利用本公开的示例性实现方式,通过将同步单元220设置为不同的数值,可以以方便并且有效的方式来在具有“生产-消费”关系的指令之间传递消息。具体地,对于生产关系而言,同步单元220可以表示:生产者已经生产了/尚未生产数据。对于消费关系而言,同步单元220可以表示:消费者正在等待/没有等待数据。
上文已经分别描述了用于同步具有各种依赖关系的指令的过程,在下文中将参见图7描述并行地执行多个同步过程的情况。图7示意性示出了根据本公开的一个示例性实现方式的在计算系统中用于同步指令的过程700的框图。如图7所示,计算系统可以包括第一计算单元410、第二计算单元420、…、第三计算单元710、第四计算单元720。可以分别从上述计算单元接收第一组指令列表110、第二组指令列表120、…、第三组指令列表730、以及第四组指令列表740。
假设第一指令112和第二指令122之间存在阻塞关系,可以为第一指令112和第二指令122分配同步单元220,以便管理两个指令之间的同步。假设第三指令732和第四指令742之间存在生产关系,可以为第三指令732和第四指令742分配同步单元750,以便管理两个指令之间的同步。利用本公开的示例性实现方式,同步单元220和同步单元750可以并行地同步各自相关的指令。以此方式,同步引擎210中的多个同步单元可以分别服务于多个指令。
上文已经参见图3至图7描述了根据本公开的一个示例性实现方式的方法300的步骤。在本公开的一个示例性实现方式中,提供了一种用于在计算系统中同步指令的装置。该装置包括:接收模块,配置用于接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表;分配模块,配置用于响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配计算系统中的同步单元;设置模块,配置用于基于第一指令和第二指令之间的依赖关系,设置同步单元;以及同步模块,配置用于基于同步单元来同步第一指令和第二指令。在本公开的一个示例性实现方式中,该装置可以进一步包括用于执行上文描述的方法300中的其他步骤的模块。
在下文中,将参见图8描述用于实现上述方法的计算系统。图8示意性示出了根据本公开的一个示例性实现方式的用于同步指令的计算系统800的框图。如图8所示,计算系统800可以包括同步引擎210,并且同步引擎210可以包括用于实现上文描述的方法300的同步单元220。计算系统800可以进一步包括处理单元810,以及耦合至该处理单元810的存储单元820。存储单元820可以包括计算机可执行指令,以便用于在由处理单元810运行时,执行上文描述的方法300。
在本公开的一个示例性实现方式中,计算系统可以包括第一计算单元410、第二计算单元420、…、以及第N计算单元430。将会理解,尽管上文示意性示出了由单独的处理单元810来执行方法300,备选地和/或附加地,可以由第一计算单元410、第二计算单元420、…、以及第N计算单元430中的任一项来执行方法300。
根据本公开的一个示例性实现方式,提供了一种计算系统,包括:同步单元;处理单元;与处理单元耦合的存储单元,存储单元包括计算机可执行指令,计算机可执行指令在由处理单元运行时,使得处理单元执行如下动作:接收多个指令列表,多个指令列表包括第一指令列表和第二指令列表;响应于确定第一指令列表中的第一指令与第二指令列表中的第二指令具有依赖关系,向第一指令和第二指令分配同步单元;基于第一指令和第二指令之间的依赖关系,设置同步单元;以及基于同步单元来同步第一指令和第二指令。
根据本公开的一个示例性实现方式,基于同步单元来同步第一指令和第二指令包括:响应于确定第一指令和第二指令中的任一项被执行,更新同步单元。
根据本公开的一个示例性实现方式,基于第一指令和第二指令之间的依赖关系,设置同步单元包括:响应于确定依赖关系属于阻塞关系,基于与阻塞关系相关联的指令数量设置同步单元,阻塞关系表示第一指令和第二指令阻塞第一指令列表中的位于第一指令之后的指令以及第二指令列表中的位于第二指令之后的指令的执行。
根据本公开的一个示例性实现方式,基于同步单元来同步第一指令和第二指令包括以下中的至少任一项:响应于确定同步单元满足与阻塞关系相关联的同步条件,继续执行第一指令列表中的位于第一指令之后的指令以及第二指令列表中的位于第二指令之后的指令;以及
响应于确定同步单元不满足与阻塞关系相关联的同步条件,等待第一指令和第二指令中的任一项被执行。
根据本公开的一个示例性实现方式,多个指令列表进一步包括第三指令列表,以及该动作进一步包括:响应于确定第三指令列表中的第三指令与第一指令和第二指令具有阻塞关系,将第三指令映射至同步单元;以及响应于第三指令被执行,更新同步单元。
根据本公开的一个示例性实现方式,基于第一指令和第二指令之间的依赖关系,设置同步单元包括:响应于确定依赖关系属于生产关系,基于第一指令的执行来设置同步单元,生产关系表示第一指令的输出决定第二指令的输入。
根据本公开的一个示例性实现方式,基于第一指令和第二指令之间的依赖关系,设置同步单元包括:响应于确定依赖关系属于消费关系,基于第二指令的执行来设置同步单元,消费关系表示第二指令的输入依赖于第一指令的输出。
根据本公开的一个示例性实现方式,同步单元包括计数器,以及计数器在计算系统的寄存器中被实现。
根据本公开的一个示例性实现方式,计算系统包括多个寄存器以分别用于实现多个同步单元,以及该动作进一步包括:响应于第一指令和第二指令已经被执行,释放同步单元。
根据本公开的一个示例性实现方式,接收多个指令列表包括:分别从计算系统中的多个计算单元接收多个指令列表,多个计算单元中的计算单元包括处理器核。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。
Claims (20)
1.一种用于在计算系统中同步指令的方法,包括:
接收多个指令列表,所述多个指令列表包括第一指令列表和第二指令列表;
响应于确定所述第一指令列表中的第一指令与所述第二指令列表中的第二指令具有依赖关系,向所述第一指令和所述第二指令分配所述计算系统中的同步单元,所述同步单元在所述计算系统的寄存器中被实现;
基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元;
基于所述依赖关系的类型,设置与所述同步单元相关联的同步类型和同步条件,所述同步类型包括阻塞类型、生产类型和消费类型中的至少任一项,以及所述同步条件包括表示同步成功的条件;以及
基于所述同步单元、所述同步类型和所述同步条件,来同步所述第一指令和所述第二指令。
2.根据权利要求1所述的方法,其中基于所述同步单元来同步所述第一指令和所述第二指令包括:
响应于确定所述第一指令和所述第二指令中的任一项被执行,更新所述同步单元。
3.根据权利要求1所述的方法,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于阻塞关系,基于与所述阻塞关系相关联的指令数量设置所述同步单元,所述阻塞关系表示所述第一指令和所述第二指令阻塞所述第一指令列表中的位于所述第一指令之后的指令以及所述第二指令列表中的位于所述第二指令之后的指令的执行。
4.根据权利要求3所述的方法,其中基于所述同步单元来同步所述第一指令和所述第二指令包括以下中的至少任一项:
响应于确定所述同步单元满足与所述阻塞关系相关联的同步条件,继续执行所述第一指令列表中的位于所述第一指令之后的所述指令以及所述第二指令列表中的位于所述第二指令之后的所述指令;以及
响应于确定所述同步单元不满足与所述阻塞关系相关联的所述同步条件,等待所述第一指令和所述第二指令中的任一项被执行。
5.根据权利要求3所述的方法,其中所述多个指令列表进一步包括第三指令列表,以及所述方法进一步包括:
响应于确定所述第三指令列表中的第三指令与所述第一指令和所述第二指令具有所述阻塞关系,将所述第三指令映射至所述同步单元;以及
响应于所述第三指令被执行,更新所述同步单元。
6.根据权利要求1所述的方法,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于生产关系,基于所述第一指令的执行来设置所述同步单元,所述生产关系表示所述第一指令的输出决定所述第二指令的输入。
7.根据权利要求1所述的方法,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于消费关系,基于所述第二指令的执行来设置所述同步单元,所述消费关系表示第二指令的输入依赖于所述第一指令的输出。
8.根据权利要求1所述的方法,其中所述同步单元包括计数器,以及所述计数器在所述计算系统的寄存器中被实现。
9.根据权利要求8所述的方法,其中所述计算系统包括多个寄存器以分别用于实现多个同步单元,以及所述方法进一步包括:响应于所述第一指令和所述第二指令已经被执行,释放所述同步单元。
10.根据权利要求1所述的方法,其中接收所述多个指令列表包括:分别从所述计算系统中的多个计算单元接收所述多个指令列表,所述多个计算单元中的计算单元包括处理器核。
11.一种计算系统,包括:
同步单元;
处理单元;
与所述处理单元耦合的存储单元,所述存储单元包括计算机可执行指令,所述计算机可执行指令在由所述处理单元运行时,使得所述处理单元执行如下动作:
接收多个指令列表,所述多个指令列表包括第一指令列表和第二指令列表;
响应于确定所述第一指令列表中的第一指令与所述第二指令列表中的第二指令具有依赖关系,向所述第一指令和所述第二指令分配所述同步单元,所述同步单元在所述计算系统的寄存器中被实现;
基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元;
基于所述依赖关系的类型,设置与所述同步单元相关联的同步类型和同步条件,所述同步类型包括阻塞类型、生产类型和消费类型中的至少任一项,以及所述同步条件包括表示同步成功的条件;以及
基于所述同步单元、所述同步类型和所述同步条件,来同步所述第一指令和所述第二指令。
12.根据权利要求11所述的计算系统,其中基于所述同步单元来同步所述第一指令和所述第二指令包括:
响应于确定所述第一指令和所述第二指令中的任一项被执行,更新所述同步单元。
13.根据权利要求11所述的计算系统,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于阻塞关系,基于与所述阻塞关系相关联的指令数量设置所述同步单元,所述阻塞关系表示所述第一指令和所述第二指令阻塞所述第一指令列表中的位于所述第一指令之后的指令以及所述第二指令列表中的位于所述第二指令之后的指令的执行。
14.根据权利要求13所述的计算系统,其中基于所述同步单元来同步所述第一指令和所述第二指令包括以下中的至少任一项:
响应于确定所述同步单元满足与所述阻塞关系相关联的同步条件,继续执行所述第一指令列表中的位于所述第一指令之后的所述指令以及所述第二指令列表中的位于所述第二指令之后的所述指令;以及
响应于确定所述同步单元不满足与所述阻塞关系相关联的所述同步条件,等待所述第一指令和所述第二指令中的任一项被执行。
15.根据权利要求13所述的计算系统,其中所述多个指令列表进一步包括第三指令列表,以及所述动作进一步包括:
响应于确定所述第三指令列表中的第三指令与所述第一指令和所述第二指令具有所述阻塞关系,将所述第三指令映射至所述同步单元;以及
响应于所述第三指令被执行,更新所述同步单元。
16.根据权利要求11所述的计算系统,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于生产关系,基于所述第一指令的执行来设置所述同步单元,所述生产关系表示所述第一指令的输出决定所述第二指令的输入。
17.根据权利要求11所述的计算系统,其中基于所述第一指令和所述第二指令之间的所述依赖关系,设置所述同步单元包括:
响应于确定所述依赖关系属于消费关系,基于所述第二指令的执行来设置所述同步单元,所述消费关系表示第二指令的输入依赖于所述第一指令的输出。
18.根据权利要求11所述的计算系统,其中所述同步单元包括计数器,以及所述计数器在所述计算系统的寄存器中被实现。
19.根据权利要求18所述的计算系统,其中所述计算系统包括多个寄存器以分别用于实现多个同步单元,以及所述动作进一步包括:响应于所述第一指令和所述第二指令已经被执行,释放所述同步单元。
20.根据权利要求11所述的计算系统,其中接收所述多个指令列表包括:分别从所述计算系统中的多个计算单元接收所述多个指令列表,所述多个计算单元中的计算单元包括处理器核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011523538.2A CN112559054B (zh) | 2020-12-22 | 2020-12-22 | 用于同步指令的方法和计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011523538.2A CN112559054B (zh) | 2020-12-22 | 2020-12-22 | 用于同步指令的方法和计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559054A CN112559054A (zh) | 2021-03-26 |
CN112559054B true CN112559054B (zh) | 2022-02-01 |
Family
ID=75032019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011523538.2A Active CN112559054B (zh) | 2020-12-22 | 2020-12-22 | 用于同步指令的方法和计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559054B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120195A (zh) * | 1993-09-20 | 1996-04-10 | 国际商业机器公司 | 多执行单元的指令相关调度技术 |
US5522052A (en) * | 1991-07-04 | 1996-05-28 | Matsushita Electric Industrial Co. Ltd. | Pipeline processor for processing instructions having a data dependence relationship |
JP2008090541A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US7395416B1 (en) * | 2006-09-12 | 2008-07-01 | International Business Machines Corporation | Computer processing system employing an instruction reorder buffer |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
TW201312460A (zh) * | 2011-07-01 | 2013-03-16 | Intel Corp | 用於多股亂序處理器中之指令排程的方法及裝置 |
CN104823164A (zh) * | 2012-12-06 | 2015-08-05 | 相干逻辑公司 | 具有同步指令的处理系统 |
CN110659069A (zh) * | 2018-06-28 | 2020-01-07 | 赛灵思公司 | 用于执行神经网络计算的指令调度方法及相应计算系统 |
CN111767995A (zh) * | 2019-04-02 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024543B2 (en) * | 2002-09-13 | 2006-04-04 | Arm Limited | Synchronising pipelines in a data processing apparatus |
US20040117793A1 (en) * | 2002-12-17 | 2004-06-17 | Sun Microsystems, Inc. | Operating system architecture employing synchronous tasks |
US8312254B2 (en) * | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
EP2363812B1 (en) * | 2010-03-04 | 2018-02-28 | Karlsruher Institut für Technologie | Reconfigurable processor architecture |
US20160179538A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor |
US11567555B2 (en) * | 2019-08-30 | 2023-01-31 | Intel Corporation | Software assisted power management |
-
2020
- 2020-12-22 CN CN202011523538.2A patent/CN112559054B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522052A (en) * | 1991-07-04 | 1996-05-28 | Matsushita Electric Industrial Co. Ltd. | Pipeline processor for processing instructions having a data dependence relationship |
CN1120195A (zh) * | 1993-09-20 | 1996-04-10 | 国际商业机器公司 | 多执行单元的指令相关调度技术 |
US7395416B1 (en) * | 2006-09-12 | 2008-07-01 | International Business Machines Corporation | Computer processing system employing an instruction reorder buffer |
JP2008090541A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
TW201312460A (zh) * | 2011-07-01 | 2013-03-16 | Intel Corp | 用於多股亂序處理器中之指令排程的方法及裝置 |
CN104823164A (zh) * | 2012-12-06 | 2015-08-05 | 相干逻辑公司 | 具有同步指令的处理系统 |
CN110659069A (zh) * | 2018-06-28 | 2020-01-07 | 赛灵思公司 | 用于执行神经网络计算的指令调度方法及相应计算系统 |
CN111767995A (zh) * | 2019-04-02 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN112559054A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113504985B (zh) | 一种任务处理方法以及网络设备 | |
US7373640B1 (en) | Technique for dynamically restricting thread concurrency without rewriting thread code | |
TWI831729B (zh) | 處理多個任務的方法、處理設備以及異構計算系統 | |
JP5969610B2 (ja) | ポータブルコンピューティングデバイスにおける分散リソース管理 | |
US9038087B2 (en) | Fence elision for work stealing | |
US7275183B2 (en) | Method of restoring processes within process domain | |
CN112698888A (zh) | 应用程序的组件化、组件调用和组件初始化方法及其装置 | |
US20240345879A1 (en) | Task processing method and apparatus | |
CN111984402A (zh) | 一种线程池统一调度监控方法及系统 | |
US20240036921A1 (en) | Cascading of Graph Streaming Processors | |
CN112631510B (zh) | 堆栈区域扩充的方法、装置及硬件平台 | |
CN112559054B (zh) | 用于同步指令的方法和计算系统 | |
US20190361805A1 (en) | Spin-less work-stealing for parallel copying garbage collection | |
JP2007172611A (ja) | 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法) | |
CN110018782B (zh) | 一种数据读/写方法及相关装置 | |
CN110955461A (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
US20230096015A1 (en) | Method, electronic deviice, and computer program product for task scheduling | |
CN115858123A (zh) | 一种多线程任务调度处理方法 | |
WO2015184902A1 (zh) | 一种智能分屏的并发处理方法及相应的智能终端 | |
CN113360525B (zh) | 查询请求处理方法、装置及设备、键值查询系统 | |
US20230195546A1 (en) | Message Management Method and Apparatus, and Serverless System | |
US20090265515A1 (en) | Information Processing Apparatus, Information Processing Method, and Computer Program | |
EP4287024A1 (en) | Multi-core processor, multi-core processor processing method, and related device | |
US20240168828A1 (en) | Adaptively optimizing function call performance | |
WO2022261867A1 (zh) | 一种任务调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |