CN104641352B - 用于周期控制系统的流水线操作 - Google Patents
用于周期控制系统的流水线操作 Download PDFInfo
- Publication number
- CN104641352B CN104641352B CN201380048711.XA CN201380048711A CN104641352B CN 104641352 B CN104641352 B CN 104641352B CN 201380048711 A CN201380048711 A CN 201380048711A CN 104641352 B CN104641352 B CN 104641352B
- Authority
- CN
- China
- Prior art keywords
- iteration
- program
- control system
- core
- output
- 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
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/12—Plc mp multi processor system
- G05B2219/1202—Modules with same hardware and software
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/12—Plc mp multi processor system
- G05B2219/1205—Memory access for different processors, memory arbitration, mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Multi Processors (AREA)
- Programmable Controllers (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种用于管理控制系统的方法,包括:在第一时期中在多核计算机系统的第一处理器核中运行程序的第一迭代(S1501),在与第一时期重叠的第二时期中在多核计算机系统的第二处理器核中运行程序的第二迭代(S1502);以及使用这些迭代的输出控制该控制系统(S1503)。
Description
对相关申请的交叉引用
本申请要求2012年8月2日提交的美国临时申请61/678,736的优先权,其公开内容通过引用包含于此。
技术领域
本公开大致涉及周期控制系统,并且更确切而言涉及用于改进周期控制系统的运行的流水线操作技术。
背景技术
周期控制系统是制药、制造、能源和自动化工业中的硬实时系统,其设计用于通过传感器和执行器与控制物理过程交互。受控制和信息理论启发,大多周期控制系统按周期(循环地)运行应用。扫描时间(也已知为采样率)指的是这样的时期,在该时期中期望系统(1)读取受控系统的状态,(2)计算用于将系统置于目标状态的校正,以及(3)发送校正命令。
过去,周期控制系统利用更快的单处理器的优点来运行软件中的更多功能和降低扫描周期时间以利于控制算法。因为应用的整个工作负荷在单个CPU中运行,所以需要开发出复杂的优先调度算法来保证这些系统的实时响应。嵌入式处理器标记将多核技术推向工业自动化领域。这对于研究者和实践者激发了研究多核周期控制系统提供的性能、能量效率、可缩放性、合并和冗余之益处的机会。
发明内容
根据本发明的一个示例性实施例,一种管理控制系统的方法包括:在第一时期中,在多核计算机系统的第一处理器核中运行程序的第一迭代,其中该程序从共享存储器读取至控制系统的输入和来自程序的早先迭代的输出,以生成新的输出;在与第一时期重叠的第二时期中在所述多核计算机系统的第二处理器核中运行所述程序的第二迭代;以及利用这些迭代的输出来控制该控制系统,其中,所述程序对共享存储器的读取和写入操作是原子的。
在一个示例性实施例中,在第一迭代期间,程序对其输入进行计算,以算出一个值和将该值存储在共享存储器的一个变量中,并且在第二迭代期间,直至程序在第一迭代中完成了对该值的存储,程序才能够读取该变量。
在一个示例性实施例中,控制系统包括将输入提供给共享存储器的物理传感器。
在一个示例性实施例中,控制系统包括物理执行器,并且迭代的输出被用于控制该执行器。
在一个示例性实施例中,在使用之前,该方法还包括在与第二时期重叠的第一时期之后的第三时期中,在多核系统的第一处理器核中运行程序的第三迭代(例如当存在至少两个核时)。然而,如果存在附加的核,则第三迭代可以在第三处理器核中运行。
例如,在一个示例性实施例中,在使用之前,该方法还包括在与第二时期重叠的第一时期之后的第三时期中,在多核系统的第三处理核中运行程序的第三迭代。该方法还可以向上缩放至任意数量的处理核。
根据本发明的一个示例性实施例,管理控制系统的方法包括:在多核计算机系统的第一处理器核中起动程序的第一迭代,其中程序从存储器读取至控制系统的输入和来自程序的早先迭代的输出,以生成新的输出:在遇到对允许进行程序的下一迭代进行指示的标记指令的情况下,第一迭代的程序生成事件;响应于对该事件的接收,在多核计算机系统的第二处理器核中起动程序的第二迭代;并且利用这些迭代的输出来控制该控制系统。
在一个示例性实施例中,生成事件包括发送该系统的操作系统的事件处置器的计算机消息。在一个示例性实施例中,响应于对该计算机消息的接收,该事件处置器起动程序的第二迭代的运行。
在一个示例性实施例中,在使用之前,该方法还包括:在遇到标记指令的情况下,第二迭代的程序生成第二事件;以及,响应于对第二事件的接收,在所述第一处理器核中起动程序的第三迭代的运行。
在一个示例性实施例中,在使用之前,该方法还包括:在遇到标记指令的情况下,第二迭代的程序生成第二事件;以及,响应于对第二事件的接收,在多核系统的第三处理器核中起动程序的第三迭代的运行。
根据本发明的一个示例性实施例,管理控制系统的方法包括:在第一时期中在多核系统的第一处理器核中运行程序的第一迭代,其中程序从存储器读取至控制系统的输入和来自程序的早先迭代的输出,以生成新的输出;在与第一时期重叠的第二时期中,在多核系统的第二处理器核中运行程序的第二迭代;确定在迭代中是否发生了数据相关性违背;以及,如果发生了违背,则利用第一迭代的输出控制该控制系统。
在一个示例性实施例中,该方法还包括,如果发生了违背,在第二处理器核中停止和重新起动第二迭代。在一个示例性实施例中,该方法还包括,在重新起动第二迭代之后,在多核系统的第一处理器核或第三处理器核中起动程序的第三迭代。
在一个示例性实施例中,违背的判断包括,预测第二迭代的利用变量的计算是否将在调度第一迭代以更新该变量之前发生。
附图说明
本公开的示例性实施例将根据下面结合附图的描述而被更详细地理解,其中:
图1示出了可以被用于存储控制系统的输入和输出数据的存储器的一个示例。
图2示出了根据本发明的一个示例性实施例的流水线操作策略。
图3示出了根据本发明的一个示例性实施例的流水线操作策略。
图4示出了根据本发明的一个示例性实施例的流水线操作策略。
图5示出了根据本发明的一个示例性实施例的流水线操作策略。
图6示出了循环控制程序中的数据相关性的一个示例性分布。
图7示出了被过度和不足利用的多核的一个示例。
图8示出了根据本发明的一个示例性实施例的流水线操作策略。
图9示出了根据本发明的一个示例性实施例的流水线操作策略。
图10示出了根据本发明的一个示例性实施例的流水线操作策略。
图11示出了根据本发明的一个示例性实施例的流水线操作策略。
图12根据本发明的一个示例性实施例示出了被用于控制一个迭代中由程序读取/写入数据的位置的参数。
图13A-D示出了根据本发明的示例性实施例的流水线操作策略。
图14示出了根据本发明的示例性实施例的流水线操作策略。
图15示出了根据本发明的一个示例性的用于控制控制系统的方法。
图16示出了根据本发明的一个示例性的用于控制控制系统的方法。
图17示出了根据本发明的一个示例性的用于控制控制系统的方法。
图18示出了能够实现根据本公开的实施例的方法和系统的计算机系统的一个示例。
具体实施方式
下面参考图1-18详细讨论本发明的示例性实施例。然而,本发明可以按照不同形式实现并且不应被理解为限于在此阐述的实施例。
应理解的是,在此描述的系统和方法可以按照硬件、软件、固件、特殊用途处理器或其组合的各种形式来实现。尤其,本发明的至少一部分可以被实现为包括程序指令的应用程序,这些程序指令被有形地实现在一个或多个程序存储设备(例如硬盘、软磁盘、RAM、ROM、CD ROM等)上,并且可以由包括合适架构的任意设备运行,诸如具有处理器、存储器和输入/输出接口的通用数字计算机。还应理解的是,因为附图中描绘的子系统部件和过程步骤中的一些可以以软件实现,所以系统模块之间的联系(或者方法步骤的逻辑流程)可以根据本发明被编程的方式而不同。如果给出在此的教导,则本领域一般技术人员将能够理解这些和本发明的类似实现方案。
现代控制系统需要足够快以控制高速物理过程诸如化学和原子反应。周期控制系统的采样时间或者I/O同步之间的频率被已知为扫描周期时间,并且其是一个重要的度量标准,因为其规定了成本和最终控制系统能够控制的物理过程的类型。I/O中的延迟(已知为抖动)是另一参数,因为它影响精度和因此影响控制的质量。周期控制系统通常运行安全关键的系统,并且因此它们的实现需要保证控制软件的确定性的运行、无抖动、确定性的循环时间和I/O行为。周期控制系统构建于良好建立的计算模型和运行时系统之上。
周期控制系统的计算模型可以基于自动化任务。一个自动化任务是,按照有规律和等距的、称作周期(如在图1中所示)的时间间隔循环运行控制程序。该扫描周期时间是用户可配置的并且其长度由受控物理系统的频率决定。对于每个周期,进行两个逻辑动作:(1)I/O和(2)程序的运行。I/O事件触发对过程图(PI)的写/读操作以分别更新执行器和读取传感器的状态。过程图是可寻址的存储器区域,其用作在控制系统与连接至该控制系统的传感器和执行器之间的接口,并且该过程图提供传感器和执行器的“快照”。过程图可以通过一个周期的运行来访问。对于在周期内运行程序,包括读输入和写输出,所需的实际时间已知为运行时间。如果程序的运行在下一周期开始之前完成(即运行时间小于扫描周期时间),则程序可以被设为空闲状态。
在处理模拟信号的周期控制系统(例如动作控制应用)中,执行器(例如电机)将系统置于目标位置所需的速度是基于被采样的当前位置和诸如最大速度和加速度的参数来计算的。
本发明的示例性实施例使用基于流水线操作的、用于周期控制系统的可高度升级的并行化方法。该方法可以减小用于应用的扫描周期时间,在维持原始配置的扫描周期时间的情况下使能附加工作负荷的运行,或者实现在减少扫描周期时间和运行附加工作负荷之间的折衷。本发明的至少一个实施例是旨在于减少扫描周期时间和运行附加工作负荷的流水线操作并行化方法。
流水线操作指的是将计算分解为串行连接的阶段(数据处理程序片段),使得一个阶段的输出是下一阶段的输入。流水线操作的目的是增大系统的吞吐量。流水线操作可以被用于通过将阶段维持为在所有时间都忙碌来潜在地将资源的利用率最大化。在一个阶段结束其运行之后,立即将结果派送至下一阶段并且该下一迭代(或数据元素)的计算开始。如果多个处理单元可用,可以并行地运行对邻接的迭代进行处理的不同阶段。
图2示出了在4个核上运行的4阶段(A,B,C,D)流水线化程序的一个示例。下标标出迭代号。在图1的部分(a)中示出了调度方法1:在时间T1期间,过程A由核1运行第一次(见A0);在时间T2期间,过程A由核1运行第二次并且过程B由核2运行第一次(见B0);在T3期间,过程A由核1运行第三次(见A3),过程B由核2运行第二次(见B1)并且过程C由核3运行第一次(C0);在T4期间,过程A由核1运行第四次(见A3),过程B由核2运行第三次(见B2),过程C由核3运行第二次(见C1)并且过程D由核4运行第一次(见C0)。如果在第四个迭代中(在T4)已经实现了流水线的稳定状态,则所有核正处理程序的不同阶段和迭代(即A3、B2、C1、D0)。在调度方法1中,一个核专用于程序的一个阶段。例如核1处理过程A,核2处理过程B,核3处理过程C,并且核4处理过程D。
在示出了调度方法2的图2的部分(b)中,在时间T1中过程A由核1运行第一次(见A0);在时间T2期间过程A由核2运行第二次并且过程B由核1运行第一次(见B0);在T3期间,过程A由核3运行第三次(见A3),过程B由核2运行第二次(见B1)并且过程C由核1运行第一次(C0);在T4期间,过程A由核4运行第四次(见A3),过程B由核3运行第三次(见B2),过程C由核2运行第二次(见C1),并且过程D由核1运行第一次(见C0)。如果在第四迭代中(在T4)已经实现了流水线的稳定状态,则所有核正处理程序的不同阶段和迭代(即D0、C1、B2、A3)。在调度方法2中,程序的一个阶段的下一迭代连续地移位至下一可用的核。例如,核1处理过程A的第一迭代,核2处理过程A的第二迭代,核3处理过程A的第三迭代等等。
图2内示出的并行性已知为流水线并行性。流水线并行性可以通过允许更高的采样率但是不减小一个程序迭代的运行时间来增大系统的吞吐量。流水线的吞吐量通过最长阶段(也称作关键路径)的长度来给定。如果均等地平衡管线阶段,则吞吐量与流水线中阶段的数目成比例。
在图2中给出的示例中,如果达到了稳定状态,则流水线程序产生为单核中的原始程序的4倍的输入和输出。图2示出了两个不同的流水线操作方法,其具有潜在不同的性能但是实现了相同的结果。例如,调度方法1产生了较少数据传递但是其要求一个周期的运行在流水线的每个阶段完成后进行上下文转换。另一方面,调度方法2并不需要上下文转换并且更易于阅读。因此,本发明的实施例将关于调度方法2讨论。然而,本发明的实施例并不限于此,因为它们也可以被应用于调度1。
在本发明的至少一个实施例中,将基于时间的分割方法应用于周期控制系统。按照流水线化方式实现循环控制程序的邻接迭代的重叠。
图3示出了循环控制应用在单核中的运行与根据本发明的一个示例性实施例循环控制应用在两个核上的运行之间的比较。图3的部分(a)中示出的程序A,当被流水线化以最大化扫描周期缩短时,产生了两倍多的输入和输出,如在图3的部分(b)中看出那样。这是可能的,因为,以相对于彼此重叠50%来同时运行两个邻接的迭代。在图3的部分(b)中,程序A的第一迭代(A0)在时间T0由核1运行,程序A的第二迭代(A1)在时间T0.5由核2运行,程序A的第三迭代(A2)在时间T1.0由核1运行,程序A的第四迭代(A3)在时间T1.5由核2运行等等。因为在该示例中存在两个核,所以调度算法在核之间连续转换以便为程序A的下一迭代进行调度。当对于模拟I/O的重建需要非常小的扫描周期时间时,该调度方法会是有用的。
如果增加了第三核,则调度方法可以替代地将程序A的第三迭代(A2)调度为在时间T1.0在核3上运行,并且将程序A的第四迭代(A3)调度为在时间T1.5在核1上运行。如果应运行循环处理的附加程序(例如B),则可以将不同组的可用核用于应对其处理(例如第三和第四核)。
借助两个核,流水线并行性将扫描周期时间减小为二分之一。一般N个核将扫描周期时间最好减小为1/N。
图4示出了本发明的一个实施例,其中程序被流水线化,以便将附加的工作负荷最大化。如在图4中所示,原始的扫描周期时间保持相同,但是每个迭代能够利用否则空闲的时间来运行附加指令。如在图4中所示,程序A的第一迭代(A0)在时间T0由核1运行,程序A的第二迭代(A1)在时间T1由核2运行,程序A的第三迭代(A2)在时间T2由核1运行。这类似于图3的部分(a)中示出的调度方法,其中核1在时间T0和T2分别运行程序A的第一和第三迭代。然而,不同于图3的部分(a)中示出的调度方法,在时间T1将核2用于运行程序A的第二迭代。这释放了核1和核2来运行其它工作或者循环程序的其它部分(例如程序B)。例如程序B的第一迭代可以由核1在时间T1运行,程序B的第二迭代可以由核2在时间T2运行,等等。
图5示出了本发明的一个实施例,其中程序被流水线化,以便在增大每次迭代的工作负荷的同时减小扫描周期时间。如在图5中所示,程序A的第一迭代(A0)在时间T0由核1运行,程序A的第二迭代(A1)在时间T0.5由核2运行,程序A的第三迭代(A2)在时间T1.0由核1运行,程序A的第四迭代(A3)在时间T1.5由核2运行。例如,替代于能够如图5中那样在T1.0-T2.0期间调度程序B的第一迭代,仅有足够的时间在T1.0-T1.5期间调度程序B的第一迭代。然而,如果运行程序B所用的时间是程序A的一半,根据图5对程序A和B进行调度将是最优的。该方法为周期控制系统和应用的程序员提供了高灵活性,因为它可以根据应用的需要被配置。
图6示出了数据相关性在一个周期控制程序中的典型分布。尽管标出了数个任务(例如自动化任务并行性),一个单个任务就占据了程序的90%的数据相关性。数据相关性阻碍并行性并且因此阻碍现有并行化方法的可缩放性,因为将这些程序调度到多个核中导致不平衡的运行,其中仅一个核被高度利用而其它对于大部分扫描周期时间是空闲的,如在图6中所示那样。可缩放性的缺乏还体现在利用该方法时扫描周期时间的有限增益,其会是周期控制系统中的一个非常重要的方面。
并行性、包括流水线操作并行性的限制是程序中的数据相关性。明确的数据相关性可以在编译时通过数据流分析技术来计算,因为在限定的局部和全局变量以及过程图内表达了因果关系。相反,不明确的数据相关性无法在编译时被追踪,因为间接的存储器索引仅在运行时被分辨。可以进行运行时数据相关性分析,但是开销很高并且其直接增大了系统的抖动,因为为了在运行时间计算数据相关性需要不可预测的计算量。应用层的并行化技术仅能在编译时进行并行化。然而,该方法忽略了隐藏在造成了阻碍多核系统中的可缩放性的不平衡负荷分布(如在图7中所示)的不明确数据相关性中的许多其它并行化机会。
周期控制系统需要其运行时性能对系统的抖动具有可忽略的影响的轻量并行化方法。然而,并非追踪不明确的数据相关性,本发明的一个实施例依赖于由周期控制系统所使用的基于时间的串行化过程来识别相同周期内的其它任务应该被取代(中止)的时间点。
然而,并非将该机制用于单个CPU内的时间共享多任务,本发明的一个实施例利用该机制来识别基于时间的断点以在多个CPU或者多个处理核中创建流水线阶段。该机制可以保证在重视明确和不明确数据相关性两者的同时保证正确运行。该轻量运行时方法不仅创建程序到流水线阶段的有效分割,而且隐藏来自于应用工程师、编译器和运行时的并行化复杂度。这有益于周期控制系统,因为应用工程师无需修改现有程序或者在新程序中规定并行化基元就能充分利用根据本发明的一个实施例的流水线操作方法的好处。
图8示出了根据本发明的一个实施例的流水线操作方法如何操控由操作系统生成的基于时间的串行化事件以对单个CPU或核进行时间共享,以创建流水线阶段和在多个核之间分配工作负荷。偶数的迭代(A0、A2、A4…)由规定核1中的扫描周期时间的原始基于时间的事件发起,而奇数的迭代(例如A1、A3、A5…)由在核2中的扫描时间的恰好一半处发生的事件发起。通过核的可缩放性是可能的,因为附加的基于时间的事件发起在不同核中的新迭代。类似地,扫描周期时间减小和/或工作负荷增大由这些基于时间的事件发生的时间点来确定。因此,通过杠杆平衡操作系统生成的相同的串行化事件来利用单个核中的同时性,创建了新的流水线并行化机会而无需追踪明确和不明确的数据相关性,并且维持与在单处理器实现方案中相同的运行次序。因此,在周期控制系统中实现的轻量机制还可以再次使用于流水线操作应用,而不导致附加的和不希望的抖动和性能损失。
流水线操作循环控制应用需要特殊的考虑,因为,同时运行多个迭代会在如下情况下导致过程图中的数据不一致性,即,当例如数据被来自时间顺序上早先的迭代的旧且无效的数据覆盖时,该时间顺序上早先的迭代的完成和对过程图的写入是在时间顺序上未来的迭代尝试读取过程图的该存储器位置之后进行的。因此,流水线化的周期控制系统依赖于对于在一个周期的运行期间一致的过程图的假设,该过程图提供了对系统中的传感器和执行器的状态的精确快照。
为了便于描述本发明的一个实施例,考虑其目标是检测和计数数字信号的上升沿的应用。在一个给定周期中,将输入信号(1或0)的状态与在早先的周期上的信号的状态相比较,以判断是否有上升沿(例如存在从0到1的变换)。换言之,在每个迭代上,当前输入的状态被存储在存储器中和被下一迭代用于检测边沿。该类型的应用是有状态的(stateful),因为在控制应用内保存外部系统的状态。应用中用于存储系统的状态的变量可以称作有状态的变量。当多个迭代在时间上重叠时,在存储器中保存状态变得麻烦,因为迭代可能读取旧数据并且造成上升沿的误检测或者双重检测。
图9和图10示出了两个核中具有50%的重叠的流水线化的程序,在该重叠中两个迭代检测相同的上升沿(例如双重检测)。例如,传感器数据的读取在该周期的开始进行,而将状态写入全局过程图在该周期末尾进行。在该示例中,存在A1和A2进行的双重检测,因为尽管A1识别了上升沿,它未能在A2读取该状态数据之前更新全局过程图。因此,A2在实际上状态是“1”时读取到“0”。该问题可以通过减小过程图的读/写之间的间隔和强制周期将数据在随后的迭代读取它之前存入。
由于直接通过传感器读取和通过执行器修改物理系统的状态而不在程序中存储状态信息的应用称作无状态的应用。在无状态的应用中,状态在设备(例如传感器、执行器和物理系统)中而不在程序中。
无状态的应用的一个示例是空调控制系统,其周期地读取室内温度(例如状态)以判断根据设定点是否适于开启或关闭制冷系统。尽管在应用中保存设定点,但是系统的状态通过传感器数据来确定并且直接通过执行器数据来修改。另一示例是动作控制应用,其从I/O读取axel的位置(状态)以计算用于下一周期的驱动速度。无状态的应用不呈现对于流水线操作的挑战,因为每个迭代彼此独立并且因此它们可以被完全并行化。
尽管流水线操作可以用于降低扫描时间和/或增大工作负荷,对于在一个周期控制系统中的实现需要考虑几个方面。本发明的至少一个实施例利用重叠参数来控制流水线操作方法,以便将扫描周期时间最小化,将工作负荷最大化或者找到两者之间的折衷。
图11示出了根据本发明的示例性实施例,重叠参数能够如何完成三个流水线配置。图11的部分(a)示出了,0%的重叠表示在维持原始配置的扫描周期时间的同时用于最大工作负荷增加的配置。这是可能的,因为迭代的交织导致空闲时间,其可以被用于运行附加的工作负荷。增大的工作负荷与系数Nx成比例,其中N是系统中的核的数目。在具有两个核的该示例中,工作负荷增加是2x。
图11的部分(b)示出了(1/N)*100%的重叠,其中N是系统中的核的数目,该重叠将扫描周期时间最小化并且有效地产生N倍的等距的处理图更新。在该具有两个核的示例中,50%的重叠产生了2倍的处理图更新。为了实现在增大工作负荷和减小周期时间之间的折衷,重叠应该既大于0又小于(1/N)*100%(例如0<重叠<(1/N)*100%)。该配置减小了周期时间并且也创建了可以被用于增大工作负荷的空闲时间。图11的部分(c)示出了,两个核中的20%的重叠减小了扫描周期时间且增大了可以在空闲时间中运行的工作负荷。
如在图12中所示,限定两个参数PI_read和PI_update,其控制迭代内从过程图读取传感器数据和将执行器数据写入(更新至)过程图的位置。该位置可以是周期内的任意位置并且唯一的规则是在过程图更新之前运行过程图读取。换言之,PI_read<PI_update。
图13A-D概念性地示出了根据本发明的方案的示例性实施例的四个流水线操作方案。这些方案通过对于每个周期使用私有化的过程图和在周期的私有化的过程图之间转发数据从而正确初始化下一迭代来将流水线阶段拆分。区分这些流水线操作方案的是周期内的对过程图进行初始化的位置。
图13A中的MOST_RECENT_UPDATE方案在假设生产者迭代(例如A2)呈交了其数据的条件下限定了,周期(A3)每当需要时(例如在周期的开头)就读取过程图。该方案在周期开头进行过程图数据读取并且假设前一周期呈交了最新的过程图数据。因此,该方案提供了在迭代内定位过程图更新的有限的灵活性,因为该位置永不应超过相对于下一迭代的重叠限制。
图13B中的GLOBAL_UPDATE方案类似于图12A的方案。不同之处是,GLOBAL_UPDATE使用共享的全局存储器(“M”),而不是用于每个周期的私有化的存储器复件,并且对关键变量(状态)的读-写访问是原子的,以避免数据相关性违背和不正确的运行。换言之,重叠由其中访问是原子的全局存储器中的关键变量的读写串规定。该方案允许过程图数据读取位于从周期开头至过程图被写入的位置之间的任何位置。
图13C中的END_CYCLE_SAME_CORE方案限定了,过程图包含了由分配给相同的核的前一迭代呈交的数据(例如A1->A3)。存在将过程图更新定位在迭代内的任何地方的高灵活性,因为在相同核中运行的邻接的迭代从不重叠,并且保证过程包含由前一迭代呈交的一致数据。
图13D中的END_CYCLE_DIFFERENT_CORE方案限定了,过程图包含了由分配给不同的核的前一迭代呈交的数据(例如A2->A3)。这提供了最严格的方案,因为过程图数据读取在周期开头执行,并且过程图更新紧随其后执行。然而,它仍允许邻接的迭代的重叠。
两个附加的流水线操作方案,根据本发明的一个示例性实施例在图14中呈现。在图4的部分(a)中示出的MANUAL_UPDATE方案限定了,应用程序员通过在程序中插入被运行时解释为起动下一周期的信号的标记或注释来设置周期之间的重叠。因此,MANUAL_UPDATE依赖于应用工程师对有状态的变量的人工识别,MANUAL_UPDATE还要求,标记由应用程序员插入到应用代码中,其标出该周期内的如下位置,在该位置可以起动下一周期但不导致有状态的数据相关性的违背。
图14的部分(b)中示出的RESTART_AFTER_VIOLATION方案限定了一个投机方案,其中在假设不存在数据相关违背的条件下起动周期。然而,如果在关键状态变量(例如核1中的A2)上检测到了数据违背,则将不正确的周期从流水线删除(例如核2中打阴影的A3)并且重新起动(在核2中重新起动A3)。尽管在检测到对有状态变量的数据相关性违背之后立即重新起动被删除的周期,但是在邻接的迭代之间的重叠减小,并且这最终影响周期时间减小和/或工作负荷增大。在该示例中,原始重叠是50%(A0和A1),并且在A2中出现违背之后,重叠降至20%(A2和A3重新起动)。
图15示出了根据本发明的一个示例性实施例的对控制系统进行控制的方法。参考图15,该方法包括在第一时期中在多核计算机系统的第一处理器核(核1)中运行程序的第一迭代(S1501)。例如,如在图13B中所示,在核1中在第一时期中运行程序的第一迭代(A0)。该程序从共享存储器读取至控制系统的输入以及来自程序的早先迭代的输出,以生成新的输出。例如,如在图1中所示,传感器可以将输入提供至共享存储器。第一迭代对该读取值执行计算,并且结果可以用于控制/调节控制系统。例如,该结果可以用于驱动该系统的执行器。该方法还包括在与第一周期重叠的第二周期中在多核系统的第二处理器核(核2)中运行程序的第二迭代(A1)。例如,如在图13B中所示,其中运行第一和第二迭代A0和A1的第一和第二周期重叠。此外,A0的输出存储在共享存储器中,并且连同由传感器存储到共享存储器中的至控制系统的新输入一起被A1读取,以重新执行相同的计算。这些迭代的输出(例如A0和A1)被用于对控制信号进行控制(S1503)。例如,如果控制系统是恒温器,并且第一迭代产生70度的温度和第二迭代产生71度的温度,则用户可能观察到恒温器的屏幕迅速从显示70度转换为显示71度。
此外,共享存储器可以被配置为使得由程序的给定迭代对相同状态变量的所有读和写原子地实施。例如,如果第一迭代要执行写,且第二迭代要执行读,则该写总是在该读起动之前完成。例如当A0起动更新状态变量时,A1将被阻止从共享存储器读取该状态变量,直至A0结束。当A1正被阻止时,它可以等待或者处于暂停状态。例如A1可以持续循环,直至状态变量被释放。
图16示出了根据本发明的一个示例性实施例的用于对控制系统进行控制的方法。参考图16,该方法包括在多核计算机系统的第一处理核中起动程序的第一迭代(S1601)。例如,如在图14的部分(a)所示,程序A的第一迭代(A0)在核1中起动。接下来,该方法包括,在遇到指示允许进行程序的下一迭代的标记指令的情况下由第一迭代的程序生成事件(S1602)。例如,如在图14中所示,标记或注释早先在特定位置处被插入到程序中,并且,当程序到达该位置时,它创建事件。在一个实施例中,该程序早先借助操作系统的一个事件处置器进行过登记,并且程序对事件的创建由该程序通过将计算机消息传递给(或者调用)该事件处置器来执行。接下来,该方法包括,响应于对该事件的接收,在多核系统的第二处理核中起动程序的第二迭代的运行(S1603)。例如,响应于从该程序的第一迭代接收该消息,事件处置器可以起动程序的第二迭代的运行。接下来,将这些迭代的输出用于控制该控制系统(S1604)。
图17示出了根据本发明的一个示例性实施例的用于控制控制系统的方法。参考图17,该方法包括在第一时期中在多核计算机系统的第一处理核中运行该程序的第一迭代(S1701)。例如,如在图14的部分(b)中所示,在第一时期中在核1中运行程序A的第一迭代(A2)。接下来,该方法包括在与第一时期重叠的第二时期中在多核系统的第二处理核中运行程序的第二迭代(S1702)。例如,如在图14的部分(b)中所示,在第二重叠时期中在核2中运行程序A的第二迭代(A3)。该方法接下来包括是否发生了数据相关性违背(S1703)。例如,图14的部分(b)示出了,确定出在A3期间发生了数据相关性违背。例如,从A2发出的箭头可以指示,在程序内的该位置,程序的这两个迭代都准备覆盖相同的状态变量。因为发生了数据相关性违背,所以该方法可以决定仅使用第一迭代(A2)的输出(和/或之前的迭代A0、A1的输出)来控制该控制系统(S1705)。此外,该方法停止和重新起动第二迭代(S1706)。例如,如在图14的部分(b)中示出那样,重新起动A3。如果没有数据相关性违背,则该方法可以利用所有迭代(例如A2和A3)的输出来控制该控制系统(S1704)。此外,在A3重新起动并且完成之后,它的输出也可以用于控制该控制系统。
图18示出了计算机系统的一个示例,其可以运行根据本公开的示例性实施例的任意上述方法。例如,可以按照软件应用或者在计算机系统上运行的计算机程序的形式实施上面描述的流水线操作策略和图15-17的方法。计算机系统的示例包括大型机、个人计算机(PC)、手持计算机、服务器等等。软件应用可以存储在计算机可读的介质(诸如硬盘驱动存储器1008)上,其可以由计算机系统在本地地访问,或者经由至例如为局域网或因特网的网络的硬接线或无线连接来访问。
总地称作系统1000的计算机系统可以包括例如中央处理单元(CPU)1001、随机存取存储器(RAM)1004、打印机接口1010、显示单元1011、局域网(LAN)数据传送控制器1005、LAN接口1006、网络控制器1003、内部总线1002和一个或多个输入设备1009,例如为键盘、鼠标等。如所示的,系统1000可以经由链路1007连接至数据存储设备,例如硬盘1008。例如,CPU 1001可以是执行上面描述的方法的计算机处理器。
上面描述的本发明的实施例中的至少一个可以用于降低扫描时间或者增大周期控制系统的工作负荷运行量。
请注意,关虽然于两个核讨论了本发明的许多上面描述的实施例,但是本发明的概念可以向上升级至任意数目的处理核(例如3、4、10等)。
Claims (28)
1.一种用于管理控制系统的方法,该方法包括:
在第一时间段中在多核计算机系统的第一处理核中运行程序的第一迭代,其中该程序从共享存储器读取所述控制系统的输入以及来自所述程序的早先的迭代的输出,以生成新的输出;
在与第一时间段重叠的第二时间段中在所述多核计算机系统的第二处理核中运行所述程序的第二迭代;以及
利用这些迭代的输出来控制所述控制系统,
其中,所述程序对所述共享存储器的读和写操作是原子的。
2.根据权利要求1所述的方法,其中,在所述第一迭代期间,所述程序根据其输入进行计算以算出值并且将所述值存储在所述共享存储器中的变量中,而在所述第二迭代期间,直至所述程序在所述第一迭代期间完成了对该值的存储,所述程序才能够读取该变量。
3.根据权利要求1所述的方法,其中,所述控制系统包括物理传感器,其将输入提供至所述共享存储器。
4.根据权利要求1所述的方法,其中,所述控制系统包括物理执行器,并且利用这些迭代的输出来控制所述执行器。
5.根据权利要求1所述的方法,其中,在使用之前,该方法还包括:
在与所述第二时间段重叠的所述第一时间段之后的第三时间段中,在所述多核计算机系统的第一处理核中运行所述程序的第三迭代。
6.根据权利要求1所述的方法,其中,在使用之前,该方法还包括:
在与所述第二时间段重叠的所述第一时间段之后的第三时间段中,在所述多核计算机系统的第三处理核中运行所述程序的第三迭代。
7.一种用于管理控制系统的方法,该方法包括:
在多核计算机系统的第一处理核中启动程序的第一迭代,其中,所述程序从存储器读取所述控制系统的输入和来自所述程序的早先的迭代的输出,以生成新的输出;
在遇到指示允许进行所述程序的下一迭代的标记指令的情况下,由所述第一迭代的程序生成事件;
响应于所述事件的接收,在所述多核系统的第二处理核中启动所述程序的第二迭代;以及
利用这些迭代的输出来控制所述控制系统。
8.根据权利要求7所述的方法,其中,生成所述事件包括发送所述系统的操作系统事件处置器的计算机消息。
9.根据权利要求8所述的方法,其中,所述事件处置器响应于对所述计算机消息的接收,启动所述程序的第二迭代的运行。
10.根据权利要求7所述的方法,其中,所述控制系统包括将所述输入提供至所述存储器的物理传感器。
11.根据权利要求7所述的方法,其中,所述控制系统包括物理执行器并且利用这些迭代的输出来控制所述执行器。
12.根据权利要求7所述的方法,其中,在使用之前,所述方法还包括:
所述第二迭代的程序在遇到所述标记指令的情况下生成第二事件;以及
响应于对所述第二事件的接收而在所述第一处理核中启动所述程序的第三迭代的运行。
13.根据权利要求7所述的方法,其中,在使用之前,所述方法还包括:
所述第二迭代的程序在遇到所述标记指令的情况下生成第二事件;以及
响应于对所述第二事件的接收而在所述多核系统的第三处理核中启动所述程序的第三迭代的运行。
14.一种用于管理控制系统的方法,该方法包括:
在第一时间段中在多核计算机系统的第一处理核中运行程序的第一迭代,其中,该程序从存储器读取所述控制系统的输入以及来自所述程序的早先的迭代的输出,以生成新的输出;
在与所述第一时间段重叠的第二时间段中在所述多核计算机系统的第二处理核中运行所述程序的第二迭代;
判断在这些迭代之间是否出现了数据相关性违背;以及
如果出现了违背,则利用所述第一迭代的输出来控制所述控制系统。
15.根据权利要求14所述的方法,还包括:如果出现了违背,则停止并重新启动在所述第二处理器核中的第二迭代。
16.根据权利要求15所述的方法,还包括利用所有迭代的输出来控制所述控制系统。
17.根据权利要求14所述的方法,其中,所述判断包括:预测在对所述第一迭代进行调度以更新变量之前,是否会发生所述第二迭代的利用该变量的计算。
18.根据权利要求16所述的方法,其中,所述控制系统包括将所述输入提供至所述存储器的物理传感器。
19.根据权利要求16所述的方法,其中,所述控制系统包括物理执行器并且这些迭代的输出被用于控制所述执行器。
20.根据权利要求15所述的方法,还包括:在所述第二迭代被重新启动后,在所述多核系统的第一处理器核或第三处理器核中启动所述程序的第三迭代。
21.一种用于管理控制系统的方法,该方法包括:
在第一时间段中在多核计算机系统的第一处理核中运行程序的第一部分的第一迭代,其中,所述第一部分从共享存储器读取所述控制系统的输入以及来自所述第一部分的早先的迭代的输出,以生成新的第一输出;
在与所述第一时间段重叠的第二时间段中在所述多核系统的第二处理核中运行所述程序的第二部分的第一迭代,其中,所述第二部分从所述共享存储器读取所述输入以及来自所述第二部分的早先的迭代的输出,以生成新的第二输出;以及
利用第一和第二新的输出来控制所述控制系统,
其中,第一和第二程序部分对所述共享存储器的读和写操作是原子的。
22.根据权利要求21所述的方法,还包括:
在所述第一时间段之后的第三时间段中,在所述第一处理核中运行所述第一部分的第二迭代;以及
在所述第二时间段之后的第三时间段中,在所述第二处理核中运行所述第二部分的第二迭代。
23.一种用于管理控制系统的方法,所述方法包括:
在多核计算机系统的第一处理核中启动程序的第一部分的第一迭代,其中,所述第一部分从存储器读取所述控制系统的输入和来自所述第一部分的早先的迭代的输出,以生成新的第一输出;
在遇到指示允许进行所述程序的第二部分的第一迭代的标记指令的情况下,由所述第一部分生成事件;
响应于所述事件的接收,在所述多核系统的第二处理核中启动所述第二部分的第一迭代的运行;其中,所述第二部分从所述存储器读取所述控制系统的输入和来自所述第二部分的早先的迭代的输出,以生成新的第二输出;以及
利用第一和第二新的输出来控制所述控制系统。
24.根据权利要求23所述的方法,还包括:
在所述第一部分的第一迭代完成之后在所述第一处理核中运行所述第一部分的第二迭代;以及
在所述第二部分的第一迭代完成之后在所述第二处理核中运行所述第二部分的第二迭代。
25.一种用于管理控制系统的方法,该方法包括;
在第一时间段中,在多核计算机系统的第一处理核中运行程序的第一部分的第一迭代,其中,所述第一部分从存储器读取所述控制系统的输入和来自所述第一部分的早先的迭代的输出,以生成新的第一输出;
在与所述第一时间段重叠的第二时间段中,在所述多核计算机系统的第二处理核中运行所述程序的第二部分的第一迭代,其中,所述第二部分从所述存储器读取所述控制系统的输入和来自所述第二部分的早先的迭代的输出,以生成新的第二输出;
判断在这些程序部分之间是否出现了数据相关性违背;以及
如果发生了违背,则仅利用所述新的第一输出来控制所述控制系统。
26.根据权利要求25所述的方法,还包括:如果发生了所述违背,则在所述第二处理器核中停止和重新启动所述程序的第二部分的第一迭代。
27.根据权利要求26所述的方法,还包括:如果没发生所述违背,则利用第一和第二新的输出来控制所述控制系统。
28.根据权利要求25所述的方法,还包括:
在所述第一时间段之后的第三时间段中,在所述第一处理核中运行所述第一部分的第二迭代;以及
在所述第二时间段之后的第三时间段中,在所述第二处理核中运行所述第二部分的第二迭代。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261678736P | 2012-08-02 | 2012-08-02 | |
US61/678,736 | 2012-08-02 | ||
PCT/US2013/052160 WO2014022203A1 (en) | 2012-08-02 | 2013-07-26 | Pipelining for cyclic control systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104641352A CN104641352A (zh) | 2015-05-20 |
CN104641352B true CN104641352B (zh) | 2018-06-29 |
Family
ID=49083733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048711.XA Active CN104641352B (zh) | 2012-08-02 | 2013-07-26 | 用于周期控制系统的流水线操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10281892B2 (zh) |
EP (1) | EP2880531B1 (zh) |
CN (1) | CN104641352B (zh) |
WO (1) | WO2014022203A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436721B2 (en) * | 2014-02-28 | 2016-09-06 | International Business Machines Corporation | Optimization of mixed database workload scheduling and concurrency control by mining data dependency relationships via lock tracking |
US10719063B2 (en) * | 2016-10-06 | 2020-07-21 | Microsoft Technology Licensing, Llc | Real-time equipment control |
JP7020198B2 (ja) * | 2018-03-09 | 2022-02-16 | オムロン株式会社 | 制御装置および制御システム |
CN112859757B (zh) * | 2019-11-27 | 2022-04-22 | 宁波舜宇智能科技有限公司 | 边缘计算控制方法、装置、边缘计算机和可读存储介质 |
CN113190334B (zh) * | 2021-04-21 | 2023-08-01 | 北京字跳网络技术有限公司 | 流程引擎的控制方法、装置、终端和存储介质 |
JP2022182260A (ja) * | 2021-05-28 | 2022-12-08 | 富士通株式会社 | コンパイラ、コンパイル方法、及びコンパイラ装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080027006A (ko) * | 2006-09-22 | 2008-03-26 | 삼성전자주식회사 | 별도의 시스템관리동작의 수행이 가능한 디바이스를 구비한컴퓨터시스템 및 그 제어방법 |
CN101369240A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 用于在信息处理系统中管理存储错误的系统和方法 |
JP2009230757A (ja) * | 2008-03-24 | 2009-10-08 | Nvidia Corp | 共有メモリに対するアトミックな更新を可能にするロックメカニズム |
CN101556543A (zh) * | 2008-04-09 | 2009-10-14 | 辉达公司 | 由通用处理器执行重定目标的图形处理器加速代码 |
CN101981529A (zh) * | 2008-03-28 | 2011-02-23 | 微软公司 | 功率知晓线程调度和处理器的动态使用 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005029318A2 (en) * | 2003-09-19 | 2005-03-31 | University Of Delaware | Methods and products for processing loop nests |
EP1569104A3 (en) * | 2004-01-09 | 2006-05-03 | Interuniversitair Microelektronica Centrum Vzw | An automated method for performing parallelization of sequential code and a computerized system adapted therefore |
US20080077793A1 (en) * | 2006-09-21 | 2008-03-27 | Sensory Networks, Inc. | Apparatus and method for high throughput network security systems |
US8094560B2 (en) * | 2008-05-19 | 2012-01-10 | Cisco Technology, Inc. | Multi-stage multi-core processing of network packets |
US8161268B2 (en) * | 2008-05-21 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US20100106758A1 (en) * | 2008-10-24 | 2010-04-29 | Microsoft Corporation | Computing discrete fourier transforms |
WO2010055719A1 (ja) * | 2008-11-14 | 2010-05-20 | 日本電気株式会社 | スケジュール決定装置、並列実行装置、スケジュール決定方法、及びプログラム |
TW201040934A (en) * | 2009-05-13 | 2010-11-16 | Faraday Tech Corp | Field color sequential display control system |
US8630509B2 (en) * | 2009-11-03 | 2014-01-14 | Samsung Electronics Co., Ltd. | Structured grids for label propagation on a finite number of layers |
US8559332B2 (en) * | 2010-05-25 | 2013-10-15 | Telefonaktiebolaget L M Ericsson (Publ) | Method for enhancing table lookups with exact and wildcards matching for parallel environments |
US9038088B2 (en) * | 2011-03-10 | 2015-05-19 | Nec Laboratories America, Inc. | Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases |
WO2013010159A1 (en) * | 2011-07-14 | 2013-01-17 | Siemens Corporation | Reducing the scan cycle time of control applications through multi-core execution of user programs |
KR101926464B1 (ko) * | 2012-10-11 | 2018-12-07 | 삼성전자 주식회사 | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 |
-
2013
- 2013-07-26 US US14/419,041 patent/US10281892B2/en active Active
- 2013-07-26 EP EP13753917.7A patent/EP2880531B1/en active Active
- 2013-07-26 WO PCT/US2013/052160 patent/WO2014022203A1/en active Application Filing
- 2013-07-26 CN CN201380048711.XA patent/CN104641352B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080027006A (ko) * | 2006-09-22 | 2008-03-26 | 삼성전자주식회사 | 별도의 시스템관리동작의 수행이 가능한 디바이스를 구비한컴퓨터시스템 및 그 제어방법 |
CN101149690A (zh) * | 2006-09-22 | 2008-03-26 | 三星电子株式会社 | 包括引导独立系统管理操作的设备的计算机系统及方法 |
CN101369240A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 用于在信息处理系统中管理存储错误的系统和方法 |
JP2009230757A (ja) * | 2008-03-24 | 2009-10-08 | Nvidia Corp | 共有メモリに対するアトミックな更新を可能にするロックメカニズム |
CN101981529A (zh) * | 2008-03-28 | 2011-02-23 | 微软公司 | 功率知晓线程调度和处理器的动态使用 |
CN101556543A (zh) * | 2008-04-09 | 2009-10-14 | 辉达公司 | 由通用处理器执行重定目标的图形处理器加速代码 |
Also Published As
Publication number | Publication date |
---|---|
WO2014022203A1 (en) | 2014-02-06 |
EP2880531A1 (en) | 2015-06-10 |
CN104641352A (zh) | 2015-05-20 |
EP2880531B1 (en) | 2017-11-08 |
US10281892B2 (en) | 2019-05-07 |
US20150168936A1 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104641352B (zh) | 用于周期控制系统的流水线操作 | |
Esfahani et al. | CloudBuild: Microsoft's distributed and caching build service | |
US11269639B2 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
Sarkar et al. | Understanding POWER multiprocessors | |
US20190317880A1 (en) | Methods and apparatus to improve runtime performance of software executing on a heterogeneous system | |
CN101802798B (zh) | 在多核处理器中使用干预消息来避免活锁 | |
Salim et al. | Balsam: Automated scheduling and execution of dynamic, data-intensive hpc workflows | |
US8707106B2 (en) | Key allocation when tracing data processing systems | |
CN104572260B (zh) | 用于实现事务内存区域提升的代码版本控制的方法和设备 | |
CN103348323A (zh) | 动态二进制优化 | |
US11416258B2 (en) | Method of debugging a processor that executes vertices of an application, each vertex being assigned to a programming thread of the processor | |
US11036477B2 (en) | Methods and apparatus to improve utilization of a heterogeneous system executing software | |
CN113811852A (zh) | 依赖性版本冲突自动解决 | |
Gebser et al. | Multi-threaded ASP solving with clasp | |
Harel et al. | Relaxing synchronization constraints in behavioral programs | |
CN113157318A (zh) | 基于倒计时缓冲的gpdsp汇编移植优化方法及系统 | |
JP2013025403A (ja) | プログラム生成装置 | |
Linhares et al. | NOCA—A Notification-Oriented Computer Architecture: Prototype and Simulator | |
Fang et al. | PaVM: A Parallel Virtual Machine for Smart Contract Execution and Validation | |
JP7305052B2 (ja) | 遅延量更新装置、処理システム及びプログラム | |
Adduri | IoT integration in manufacturing processes | |
Biörnstad | A workflow approach to stream processing | |
US20240095103A1 (en) | System and Method for Synchronising Access to Shared Memory | |
JP2007026235A (ja) | マルチプロセッサシステムにおける検証プログラム実行方式 | |
US20240160494A1 (en) | Job schedule quality prediction and job scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180112 Address after: Munich, Germany Applicant after: Siemens AG Address before: new jersey Applicant before: Siemens AG |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |