首页> 中国专利> 用于多核/众核可编程逻辑控制器的时间裕隙应用流水线平衡

用于多核/众核可编程逻辑控制器的时间裕隙应用流水线平衡

摘要

本发明涉及一种用于为多核/众核可编程逻辑控制器执行时间裕隙流水线平衡的方法,包括在用于多核/众核可编程逻辑控制器(PLC)的程序被执行时对该程序的多个流水线阶段执行(411)运行时间分析,以及对多个系统服务执行运行时间分析,以编译PLC程序和系统服务的性能统计的配置文件;使用性能统计配置文件来计算(413)关于PLC程序的多个流水线阶段的每一个的时间裕隙;以及,对于除最长阶段之外的所有流水线阶段,将每一个流水线阶段的时间裕隙捐献(414)给PLC的操作系统。捐献每一个流水线阶段的时间裕隙包括生成由一组指令组成的施主代码,所述指令在被识别为时间裕隙时期的时间段内释放处理器核用于给定的流水线阶段。

著录项

  • 公开/公告号CN104321747A

    专利类型发明专利

  • 公开/公告日2015-01-28

    原文格式PDF

  • 申请/专利权人 西门子公司;

    申请/专利号CN201380026256.3

  • 申请日2013-04-19

  • 分类号G06F9/45(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人谢强;熊雪梅

  • 地址 美国新泽西州

  • 入库时间 2023-12-17 04:44:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-13

    专利权的转移 IPC(主分类):G06F9/45 登记生效日:20181025 变更前: 变更后: 申请日:20130419

    专利申请权、专利权的转移

  • 2017-11-17

    授权

    授权

  • 2015-02-25

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20130419

    实质审查的生效

  • 2015-01-28

    公开

    公开

说明书

相关申请的交叉引用

本申请要求以Canedo等人于2012年4月19日提交的、美国临时申请 序号为61/635355、名称为“Time Slack Application Pipeline Balancing for  Multi-、Many-Core PLCs”的申请为优先权,该申请的全部内容在此以引用 方式并入本文。

技术领域

本申请针对用于多核/众核可编程逻辑控制器(PLC)的流水线(pipeline) 平衡的方法。

背景技术

流水线操作是一种并行执行技术,其允许程序的不同迭代在多处理单元 中、或在多核/众核处理单元的多处理器核中并行地执行。流水线操作能成 功地应用于PLC,以改进用户程序的扫描周期时间。

将一个应用流水线化,要求多核/众核处理器中的处理器核被高度利用, 即使没有任何有用的计算正在执行亦然如此。这是因为流水线中的阶段 (stage)典型地通过先进/先出(FIFO)队列去耦(decouped),而使用者 (consumers)(读或从队列中清除(de-queues))典型用忙等待循环实现, 这消耗了可用CPU周期,同时,强制其它线程诸如系统服务竞争这些资源。 系统服务包括但并不局限于TCP/IP或Profinet中的高优先级通信堆栈、人机 接口(HMI)、以及告警/中断处理程序。

将程序划分为N个流水线阶段需要一种算法,该算法对用户程序执行 时序分析,以计算数据流图中适当的切入点(cut-points),其建立约含有相 同工作负荷的N个阶段。流水线操作减少了扫描周期时间(scan cycle time), 因为程序的多次迭代在时间上的重叠提高了输入和输出对传感器和执行元 件进行读/写的频率。

现行系统关注于将用户程序的执行分开在N个核中,而系统级线程在 不同的M个核中,其中N+M是PLC中可用核的总数。

虽然流水线操作划分算法建立了良好平衡的阶段,但工作负荷是不同 的。这是因为这些算法依赖于静态时序分析,其并未准确反映执行的运行时 变化(分支预测、乱序执行(out-of-order execution)、存储器访问等)。短阶 段与最长阶段、即关键路径(critical path)之间的时间差典型用浪费宝贵CPU 周期的忙等待循环填充。

图1图示给定用户程序如何能划分成良好平衡但并不相同的三个阶段 A、B、C。现在参见该图,提供程序的源代码101,作为用于可编程逻辑控 制器(PLC)103诸如IEC 61131-3PLC的编译器、以及给时序分析程序103 的输入。应当注意到,在有些实施例中,时序分析可以包括有编译器。然后, 编译器102和时序分析程序103的输出,连同程序应当划分成的阶段数N 104 一起,作为输入提供给对程序进行划分的流水线算法105。在此示范性而非 限制性的示例中,流水线算法将程序划分成四核处理器中的三个阶段:阶段 A、阶段B、阶段C。关键路径、即阶段C是51毫秒,同时,阶段A是45 毫秒,而阶段B是42毫秒。相对于关键路径这是6毫秒和9毫秒的差。在 运行时,阶段A在核0中执行,阶段B在核1中执行,以及,阶段C在核 2中执行。注意,系统服务诸如TCP/IP和HMI被分派至核3,并且,此CPU 在两个系统服务之间是分时的。箭头109、110、112、113代表处理器间通 信队列,诸如,例如,输入至第一阶段、即阶段A,以及,由其提供一个阶 段的输出作为用于下一阶段的输入。对流水线操作进行充分利用的运行时环 境具有51毫秒的扫描周期时间,其相当于关键路径的长度。在单处理器中 执行的相同程序,扫描周期时间是阶段A、B、C的执行时间的总和(45毫 秒+42毫秒+51毫秒=138毫秒),与之相比,在扫描周期时间上是约3倍的 减少。

然而,注意阶段A和阶段B短于关键路径。在每次迭代中,较短阶段 花费一些时间在浪费宝贵CPU资源的忙等待循环111中。在此特定示例中, 阶段A每次迭代花费6毫秒,而阶段B每次迭代花费9毫秒。

短语“时间裕隙(time slack)”用来指浪费在忙等待循环或类似实现中的 较短流水线阶段上用于等待数据信号以触发其计算的时间。

通过将用户程序的执行和系统服务限制至特定数量的核,不同组的核中 执行的划分可能限制PLC上的性能改善。这是不合宜的,因为,在许多情 况下,用户程序和系统服务都可能从使用系统中所有核的方面获益。另外, 这要求在运行时间之前也就是在编译时执行划分。

发明内容

如本文所描述的本发明的示例性实施方式总体上包括用于调节为多核/ 众核可编程逻辑控制器(PLC)创建的不平衡应用流水线中的裕隙时间的系 统和方法。根据本发明实施例的方法可以将不平衡流水线应用的时间裕隙献 给系统服务,以改进多核/众核PLC的总体性能。使用不平衡流水线阶段中 的裕隙时间来改进总体系统系能,而不影响用户程序的扫描周期时间。因为 关键路径的时序从未被违反,用户程序在扫描周期时间方面相同地执行,同 时改进系统服务诸如通信或HMI。根据本发明实施例的方法允许用户级线程 与系统级线程之间以这样一种方式分时使用CPU,使得用户程序的扫描周期 时间维持相同,但系统级线程得到更多的CPU时间来执行其任务,并因此 改进其性能。用户程序与系统线程的执行被划分到特定的核,这可以在编译 时进行,或者在运行时进行。根据本发明实施例的方法允许用户程序依据扫 描周期时间以峰值性能执行,同时,释放CPU资源,使得系统服务利用被 释放的资源用于执行。

根据本发明的方面,提供了一种用于为多核/众核可编程逻辑控制器执 行时间裕隙流水线平衡的方法,包括:通过使用用于多核/众核可编程逻辑 控制器(PLC)的程序的多个阶段的时序分析,计算PLC程序中的多个流水 线阶段的每一个的时间裕隙;对于除最长阶段之外的所有流水线阶段,将每 一流水线阶段的时间裕隙捐献给PLC的操作系统,其中,捐献每一流水线 阶段的时间裕隙包括生成由一组指令组成的施主代码,所述指令在被识别为 时间裕隙时期的时间段内释放处理器核用于给定的流水线阶段;以及,发送 用于PLC程序的机器可执行代码。

根据本发明的又一方面,本方法包括由编译器生成PLC程序的低级中 间表示,其中,对低级中间表示执行时序分析,获得流水线阶段的数量,以 及,将PLC程序划分成为该数量的流水线阶段,其中,计算每一流水线阶 段的时间裕隙。

根据本发明的又一方面,本方法包括:建立与多个流水线阶段相对应的 多个线程,以及,将每一流水线阶段分派(allocating)给一个线程;以及, 将每一线程指定(assigning)给PLC中专门执行用户程序的一个处理器核, 其中,施主代码允许PLC的操作系统将系统服务调度至PLC中捐献了时间 裕隙的那些处理器核,包括专门执行用户程序的那些核。

根据本发明的又一方面,用于每一流水线阶段的施主代码包括用于该流 水线阶段的睡眠指令、以及构造成当时间裕隙期满时唤醒该流水线阶段的定 时器触发消息。

根据本发明的又一方面,施主代码插在输入队列上的读指令之间。

根据本发明的又一方面,对用于多个流水线阶段每一个的时间裕隙的计 算使用了来自于PLC程序先前运行的执行配置文件数据(profile data)。

根据本发明的另一方面,提供了一种用于为多核/众核可编程逻辑控制 器执行时间裕隙流水线平衡的方法,包括:在用于多核/众核可编程逻辑控 制器(PLC)的程序被执行时对该程序的多个流水线阶段执行运行时间分析, 以及对多个系统服务执行运行时间分析,以编译PLC程序和系统服务的性 能统计配置文件;使用性能统计配置文件,计算关于PLC程序的多个流水 线阶段的每一个的时间裕隙;以及对于除最长阶段之外的所有流水线阶段, 将每一个流水线阶段的时间裕隙捐献给PLC的操作系统,其中,捐献每一 流水线阶段的时间裕隙包括生成由一组指令组成的施主代码,其在识别为时 间裕隙时期的时间段内释放处理器核用于给定的流水线阶段。

根据本发明的又一方面,对关于多个流水线阶段的每一个的时间裕隙的 计算使用了PLC程序的多个阶段的编译时时序分析的结果。

根据本发明的又一方面,施主代码允许PLC的操作系统将系统服务重 新调度至PLC中捐献了时间裕隙的那些处理器核,其中使流水线平衡。

根据本发明的又一方面,本方法包括执行PLC程序的多个平衡后流水 线阶段的运行时间分析。

根据本发明的又一方面,本方法包括:加载包括多个线程的机器可执行 流水线化PLC程序;将多个线程调度至多核/众核PLC中专注于执行用户程 序的处理器核,其中,每一个流水线阶段分派给一个线程;以及执行PLC 程序。

根据本发明的又一方面,关于每一个流水线阶段的施主代码包括用于该 流水线阶段的睡眠指令、以及构造成当时间裕隙期满时唤醒该流水线阶段的 定时器触发消息。

根据本发明的又一方面,在预定数量的执行周期内获得PLC程序的性 能统计之后,计算关于多个流水线阶段的每一个的时间裕隙。

根据本发明的另一方面,提供了一种计算机可读的非暂时性程序存储装 置,有形地具体表达由计算机执行的指令的程序,以执行用于为多核/众核 可编程逻辑控制器执行时间裕隙流水线平衡的方法步骤。

附图说明

图1图示根据本发明的实施例如何可以将给定用户程序划分成良好平 衡但并不相同的三个阶段A、B、C;

图2图示根据本发明的实施例如何利用用户流水线阶段的时间裕隙来 执行系统服务;

图3是根据本发明的实施例使用配置文件数据的编译时时间裕隙平衡 算法的流程图;

图4是根据本发明的实施例使用运行时信息用于平衡流水线的运行时 时间裕隙流水线平衡算法的流程图;

图5图示根据本发明的实施例对运行在四核处理器中的PLC系统的 TCP/IP堆栈性能的时间裕隙流水线平衡的效果;

图6是示出根据本发明的实施例关于TCP性能的时间裕隙流水线平衡 的效果的表格;以及

图7是示例性计算机系统的方框图,用于实现根据本发明实施例的用于 多核/众核可编程逻辑控制器的流水线平衡的方法。

具体实施方式

如本文所描述的本发明的示例性实施方式通常包括用于流水线平衡多 核/众核可编程逻辑控制器的系统,同时,本发明易受不同变更和替换形式 的影响,附图中示例方式示出其特定实施例,并在文中具体描述。然而,应 当理解,无意将本发明限制于所披露的特定形式,而是相反,本发明覆盖落 入本发明精神和范围内的所有变更、等效置换、以及替换。

本发明的实施方式允许时间裕隙为系统中的其它线程所用,以改进多核 /众核PLC的总体性能,同时,维持用户程序的相同吞吐量,使得用户程序 不会遭受任何性能劣化。

图2图示如何利用用户流水线阶段的时间裕隙来执行系统服务。参见该 图,其中,相同的附图标记指代与图1中相同的构成要素,在每一阶段A 过程和阶段B过程之后,时间裕隙时期214已经从忙等待循环211被切出, 然后,可以将其捐献以执行先前只在核3中执行的系统过程。根据本发明实 施例的时间裕隙流水线平衡算法可以从忙等待循环中释放CPU资源,以执 行系统服务线程。注意,在流水线阶段的时间裕隙时期期间在核0-1中以及 在核3中执行TCP/IP、HMI、以及告警。核2专门执行关键路径,并且不利 用任何时间裕隙,从而,在用户应用的关键路径上维持最快的可能扫描周期。

忙等待循环可以最小化,同时将时间裕隙用于系统服务的有益性能。因 为更改后的迭代不允许超过关键路径,所以根据本发明实施例的方法可以称 为“时间裕隙流水线平衡”。关键路径、即阶段C不做更改,并且,其提供的 扫描周期时间性能与程序的原始流水线操作版本中所实现的相同。

换而言之,本发明的实施例捐献不平衡的流水线操作应用的时间裕隙给 系统服务,以改进多核/众核PLC的总体性能。因为并未违反关键路径的时 序,所以用户程序在扫描周期时间方面相同地执行,同时,改进系统服务诸 如通信或HMI。

时间裕隙平衡可以在编译时或在运行时执行。

编译时时间裕隙平衡使用配置文件数据,以准确估计每个流水线阶段的 时间裕隙。此信息可以用来生成流水线化阶段,其具有指令以捐献CPU给 系统。图3中描述了根据本发明实施例的具体算法。现在参见该图,本算法 开始于步骤301,读取源程序诸如IEC61131-3源程序进入适当编译器。编译 器在步骤302使用例如三地址码生成程序的低级中间表示。在步骤303,时 序分析例程分析程序的中间表示,并且输出时序分析结果T至配置文件数据 320。流水线划分例程在步骤304得到期望的流水线阶段数N,以及,在步 骤305,使用时序分析结果T,划分程序成为N个流水线阶段。应当注意到, 在一些实施例中,流水线阶段数N可以自用户获得,而在其它实施例中, 流水线阶段数N可以基于控制器中可用核的数量从编译器获得。在步骤306, 创建N个线程,并且指定给专注于用户程序线程的核,以及,在步骤307, 将N个流水线阶段分派给系统中的M个核。在步骤308,操作系统或运行 时调度程序调度系统服务线程给所有CPU,包括为用户程序流水线化执行而 留用的CPU。最后,在步骤309,由编译器发送可执行代码。

根据本发明的实施例,步骤305可以如下执行编译时时间裕隙平衡。在 步骤311,使用从配置文件数据320,以及,如果可以得到,从来自于相同 应用的先前运行的执行配置文件数据读取的时序分析T,计算关于每一阶段 S的时间裕隙。遍及所有阶段的循环在步骤312开始。在步骤313,判断当 前阶段是否是关键路径。如果是,本方法跳转至步骤315,其选择下一阶段。 否则,在步骤314,通过将裕隙时间捐献给操作系统,使阶段S平衡,之后, 在步骤315选择下一阶段。步骤315之后,本方法自步骤312进行下一级段。 应当理解,图3中所给出步骤的序列是示例性而非限制性的,以及,在其它 实施例中,可以不同地构造本循环,而且,对本领域的熟练技术人员而言是 显而易见的。

在运行应用的执行期间,运行时时间裕隙平衡搜集足够的统计,以计算 每个流水线阶段的可用时间裕隙,插入适当的施主代码,并重新调度系统服 务,以利用新近可得到的CPU资源。图4中描述了根据本发明实施例的具 体算法。现在参见该图,在步骤401,根据本发明实施例的运行时算法通过 读取机器可执行流水线化IEC61131-3程序来开始。在步骤402,将线程调度 至用于用户程序流水线阶段和系统服务的CPU。在步骤403执行程序循环, 直至在步骤404确定要停止执行。

根据本发明的实施例,步骤403可以如下执行运行时时间裕隙平衡。在 步骤411,在一些执行迭代内,对程序阶段和系统服务执行运行时时序分析, 以编译性能统计配置文件。在步骤412,判断是否已有足够数量的迭代可用 于性能统计。在有些实施例中,可以预先确定关于足够数量迭代的标准,并 且由系统设计者设定,而在其它实施例中,基于系统状态诸如由操作系统提 供的缓存信息、分支预测程序、以及线程信息,可以动态确定该标准。如果 是,在步骤413,使用来自编译阶段的时序分析以及新近取得的性能配置文 件,计算关于每一阶段S的时间裕隙。在步骤414,将来自该阶段的时间裕 隙捐献给系统服务,以及,在步骤415将系统服务重新调度至捐献时间裕隙 的CPU。在步骤416,生成关于被平衡阶段的附加配置文件统计,并保存至 配置文件数据420。

图3和图4示出为使能根据本发明的方法在示例性非限制性IEC61131-3 编译器和PLC的运行时系统中需要改变什么。

根据本发明的实施例,通过生成施主代码,在识别为时间裕隙的时期内 释放CPU的一组指令,实现了裕隙时间的捐献。因为以多种方式都能实现 流水线阶段之间的同步,相应地实现施主代码。然而,施主代码的功能是在 计算出的时间裕隙内使CPU闲置。例如,在FIFO队列上使用忙等待循环的 普通流水线实现,可以在输入队列上的读取尝试之间插入该施主代码作为睡 眠指令。使用定时器或高性能计数器的流水线实现,可以插入施主代码作为 定时器触发消息,其在时间裕隙期满时唤醒该流水线阶段。

一般而言,PLC系统应当提供措施用于:

·捐献时间裕隙。

·在时间裕隙过去之后复活流水线阶段。

·保证,流水线阶段工作负荷加上施主代码和复活代码总是小于或等于 关键路径中的时序。

·分派系统服务线程给由时间裕隙平衡所释放的资源。

图5(a)至图5(c)图示关于在四核处理器中运行的PLC系统的TCP/IP 堆栈性能的时间裕隙流水线平衡的效果。图中示出各TCP标题中所包括的 TCP窗口大小字段(window size field)。此字段反映可用缓冲器大小:0字 节表示缓冲区全满,没有存储器可用,而65535字节表示空缓冲区以及最大 可用度。当TCP线程忙时,将传入数据包存储在缓冲区中以便后来处理,

并因此使缓冲区大小减小。

图5(a)中的流水线(3)图示三个核用于对用户应用进行流水线操作、 而第四核专门分派用于TCP/IP通信的情况。如预期的那样,用于流水线(3) 程序的窗口大小示出在程序的整个执行期间缓冲区保持为空,因为TCP线 程在专用核上运行。

图5(b)中的流水线(4)强调了TCP线程不能具有其自身专用核时这 样的情况。在这种情况下,一个核在用户程序与TCP线程之间是分时共用 的,并且,这在系统级通信性能中有直接的负面影响。在流水线(4)执行 期间,缓冲区在程序执行期间平均填充至其容量的23%,并经常超过50%。 对此实现和配置文件数据的更仔细检查说了了为什么这会发生。执行流水线 阶段的CPU保持被占用,试图将来自于先前阶段或I/O的数据用忙等待循 环从队列中清除(de-queue)。

本发明的实施例利用流水线阶段中的不平衡,来为系统级线程建立另外 机会来利用共用的CPU。通过使CPU闲置来取代忙等待,对归一化至最长 阶段的长度上的短阶段执行时间裕隙流水线平衡。这些闲置时期被用来改进 系统级线程的性能。图5(c)中用平衡后的流水线(4)示出,此技术可以 改进TCP线程的性能,其在程序执行期间平均维持缓冲区填充至7%以内, 并且包含在其容量的30%以内。应当注意到,扫描周期时间保持与原始未平 衡版本相同的状态(40毫秒),因为平衡影响较小阶段,而不影响关键路径。

图6中示出的表1示出在时间裕隙流水线平衡之前以及之后关于四个阶 段的每一个的时间裕隙流水线平衡对流水线(4)中TCP性能的影响,连同 总扫描周期时间。应当注意到,阶段1、即关键路径未受影响。此外,应当 注意到,短流水线阶段对扫描周期时间的长度的平衡以16%改进平均TCP 缓冲区,而缓冲区利用的变化性从14Kb减少到只有727b。根据本发明实施 例的方法的实验表明,利用每次迭代总共22毫秒(5ms+9ms+8ms)的裕隙 时间,改进了TCP线程,而没有影响扫描周期时间。

应当理解,本发明的实施方式可以硬件、软件、固件、专用处理器、或 其组合的不同形式实现。在一种实施例中,本发明可以软件实现,如有形地 具体体现在计算机可读程序存储装置上的应用程序。应用程序可以上载至包 括任何适当架构的机器并由其执行。

图7是示例性计算机系统的方框图,用于实现根据本发明实施例的用于 流水线平衡多核/众核可编程逻辑控制器的方法。现在参见图7,除了别的以 外,用于实现本发明的计算机系统701可以包括中央处理单元(CPU)702、 存储器703、以及输入/输出(I/O)接口704。计算机系统701通常通过I/O 接口704与显示器705和多种输入装置706诸如鼠标和键盘连接。辅助电路 可以包括诸如缓冲存储器、电源、时钟电路、以及通信总线等电路。存储器 703可以包括随机存取存储器(RAM)、只读存储器(ROM)、磁盘驱动器、 磁带驱动器等、或者其组合。本发明可以实现为例程707,其存储在存储器 703中,并且由CPU 702执行,以处理来自信号源708的信号。同样地,计 算机系统701是一种通用计算机系统,当执行本发明的例程707时,其成为 专用计算机系统。

计算机系统701还包括操作系统和微指令代码。本文所述的各种过程和 功能可以是经由操作系统执行的微指令代码的一部分或应用程序的一部分 (或其组合)。另外,多种其它外围装置诸如附加数据存储装置和打印装置 可以与计算机平台连接。

还应理解的是,因为附图中所描绘的一些组成系统部件和方法步骤可以 软件实现,系统构成部件(或过程步骤)之间的实际连接可以取决于编程本 发明所用的方式而有所不同。给出了本文所提供的本发明的技术,本领域普 通技术人员能够仔细思考本发明的这些以及类似的实现或结构。

虽然参照示例性实施方式具体描述了本发明,但本领域的技术人员应当 理解,能够对其做出不同的修改和置换,而不脱离如所附权利要求中阐明的 本发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号