一种嵌入式多处理单元并行处理系统及其运行方法

文档序号:6328821阅读:186来源:国知局
专利名称:一种嵌入式多处理单元并行处理系统及其运行方法
技术领域
本发明涉及自动控制领域,尤其涉及一种嵌入式多处理单元并行处理系统及其运行方法。
背景技术
自动控制系统一般用于处理一定范围内的自动化任务。当自动控制系统的处理任务超出该系统的容量和处理能力时,就需要对该系统进行更新,即对系统的容量、处理能力和性能进行升级,以达到能够满足系统需求的程度。传统的自动控制系统的更新方式是采用容量更大、处理能力更强的更高等级的系统来替换原有的系统,从而满足系统更新的要求。而这种替换式的更新会带来成本高、操作繁琐的问题。 图I 为多处理器并行控制系统(Multi-Processor Parallel ControllingSystem, MPPCS)的结构示意图,MPPCS可将多个程序指令和数据在多个处理器上同时执行以获得更快的运算结果。图I所示的多处理器并行控制系统包括处理单元(简称PU,Process Unit或称为单元控制器)I到处理单元N的N个处理单元,一个编译器(例如HMI或PG/Compiler),以及连接N个处理单元及编译器的互联网络。N个处理单元用于对自动控制系统要执行的程序进行并行执行,也就是说每个处理单元执行自动控制系统要执行的程序的一部分。编译器通过互连网络与N个处理单元相连,用于将串行的、用工程语言描述的自动控制程序转换为并行的且同时在多个处理单元上执行的代码,从而保证处理单元能够执行并行任务。N个处理单元通过互连网络进行连接,从而使得一个处理单元上的信息通过互连网络能够传递到另外一个处理单元。与传统的替换式的升级方式相比,由于多处理器并行控制系统只需在原有的系统基础上增加新的模块或者设备,一方面能够更快、更容易地进行升级,另一方面也减少了开支,降低了系统升级所需的成本。但是,由于不同的嵌入式硬件平台(如ARM、MIPS)具有的指令集并不相同,难以针对不同的嵌入式硬件平台设置统一的软件运行平台,虽然Java虚拟机可以为不同的硬件平台提供统一的软件运行平台,但是由于Java虚拟机过于庞大且执行效率较低,并不适用于嵌入式硬件平台,因此,目前并不存在应用于嵌入式硬件平台的MPPCS。

发明内容
为改进现有技术中存在的问题,本发明提出一种嵌入式多处理单元并行处理系统,用以在嵌入式硬件平台上实现多处理单元的并行处理。本发明提出的嵌入式多处理单元并行处理系统,包括编译单元,用于根据自动控制程序生成多个自动控制子程序,并将每个所述自动控制子程序编译为中间代码;运行支持单元,用于从所述编译单元获取各个所述自动控制子程序的所述中间代码,并将每个所述自动控制子程序的所述中间代码转换为运行于嵌入式操作系统中的任务,以及用于识别每个处理单元的身份,将每个所述任务发送至相应的处理单元;
至少两个处理单元,用于接收所述运行支持单元发送的根据所述自动控制子程序的所述中间代码转换得到的所述任务并运行,以及在运行所述自动控制子程序对应的所述任务时,各所述处理单元之间可进行数据通信。根据本发明实施例提供的上述系统,通过编译单元根据自动控制程序生成多个自动控制子程序,再将每个自动控制子程序转换为中间代码后,由运行支持单元将中间代码转换为运行于嵌入式操作系统中的任务,并发送至相应的处理单元,各个处理单元之间在运行各自的任务时进行数据交互,从而能够在嵌入式硬件平台上实现多处理单元并行处理系统,提高了处理效率,在需要增加新的功能时,仅需增加相应的处理单元即可实现。其中,所述运行支持单元进一步用于控制所述至少两个处理单元同步执行各自动控制子程序的中间代码转换得到的各任务。其中,所述编译单元处理的自动控制程序至少为结构化文本语言程序、梯形图语言程序、功能块图表语言程序中的任意一种。 其中,所述运行支持单元用于至少两个处理单元在运行自动控制子程序对应的任务时,基于运行支持单元采用的通信协议进行数据通信;所述运行支持单元采用的通信协议至少包括网络协议或数据传输协议中的任意一种。其中,所述编译单元包括并行化子单元和编译子单元,其中,并行化子单元,用于对自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并确定各自动控制程序分片之间的依赖关系后,生成多个自动控制子程序;编译子单元,用于将各自动控制子程序编译为中间代码。其中,所述编译单元进一步包括预处理子单元,用于将自动控制程序输出至awl格式的文件中。本发明提出的嵌入式多处理单元并行控制系统的运行方法,包括由编译单元根据自动控制程序生成多个自动控制子程序,并将每个所述自动控制子程序编译为中间代码;由运行支持单元获取各个所述自动控制子程序的所述中间代码,并将每个所述自动控制子程序的所述中间代码转换为运行于嵌入式操作系统中的任务,并在识别每个处理单元的身份后,将每个所述任务发送至相应的处理单元;由至少两个处理单元分别接收所述运行支持单元发送的相应的所述自动控制子程序对应的所述任务并运行,且在运行时在各所述处理单元之间进行数据通信。根据本发明实施例提供的上述运行方法,通过编译单元根据自动控制程序生成多个自动控制子程序,再将每个自动控制子程序转换为中间代码后,由运行支持单元将中间代码转换为运行于嵌入式操作系统中的任务,并发送至相应的处理单元,各个处理单元在运行各任务时进行数据交互,从而能够在嵌入式硬件平台上实现多处理单元并行处理系统的运行,提高了处理效率,在需要增加新的功能时,仅需增加相应的处理单元即可实现。其中,所述至少两个处理单元运行相应的自动控制子程序对应的任务时,由运行支持单元控制所述至少两个处理单元同步执行各自动控制子程序的中间代码转换得到的各任务。
其中,所述自动控制程序至少为结构化文本语言程序、梯形图语言程序、功能块图表语目程序中的任意一种。其中,各处理单元之间基于运行支持单元采用的通信协议进行数据通信;所述运行支持单元采用的通信协议至少包括网络协议或数据传输协议中的任意一种。其中,根据自动控制程序生成多个自动控制子程序,包括对自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并确定各自动控制程序分片之间的依赖关系后,生成多个自动控制子程序。其中,根据自动控制程序生成多个自动控制子程序之前,将自动控制程序输出至awl格式的文件中。


下面将通过参照附图详细描述本发明的优选实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中图I是现有技术中多处理器并行控制系统的结构示意图;图2是本发明实施例提供的嵌入式多处理单元并行控制系统结构图;图3是本发明实施例提供的编译单元结构图;图4是本发明实施例提供的嵌入式多处理单元并行控制系统的运行方法流程图;图5是本发明实施例提供的具体的嵌入式多处理单元并行控制系统结构示意图;图6是本发明实施例提供的具体的处理器运行流程图。
具体实施例方式下面结合附图来对本发明优选的实施例进行详细说明。如图2所示,本发明实施例中,嵌入式多处理单元并行控制系统主要包括编译单元20、运行支持单元21以及至少两个处理单元22,其中,编译单元20,用于根据自动控制程序生成多个自动控制子程序,并将每个自动控制子程序编译为中间代码;运行支持单元21,用于从编译单元20获取各个自动控制子程序的中间代码,并将每个自动控制子程序的中间代码转换为运行于嵌入式操作系统中的任务,以及用于识别每个处理单元22的身份,将每个任务发送至相应的处理单元22 ;至少两个处理单元22,用于接收运行支持单元21发送的根据自动控制子程序的中间代码转换得到的任务并运行,以及用于运行自动控制子程序对应的任务时,各处理单元22之间进行数据通信。其中,如图3所示,编译单元20主要包括并行化子单元30和编译子单元31,其中,并行化子单元30,用于对自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并在确定各自动控制程序分片之间的依赖关系后,生成多个自动控制子程序;编译子单元31,用于将各自动控制子程序编译为中间代码。其中,编译单元20可进一步包括预处理子单元32,用于将自动控制程序输出至awl格式的文件中。基于上述系统架构,如图4所示,本发明实施例中,嵌入式多处理单元并行控制系统运行的详细方法流程如下步骤S40 :编译单元根据自动控制程序生成多个自动控制子程序,并将每个自动控制子程序编译为中间代码。其中,自动控制程序至少为结构化文本语言程序(STL)、梯形图语言程序(LD)、功能块图表语言程序(FBD)中的任意一种。此处仅为举例,并不用于限制本发明,实际应用中,若存在其他工程语言能够应用于本发明实施例的,本发明也将其包括在内。
其中,编译单元根据自动控制程序生成多个自动控制子程序之前,将自动控制程序输出至awl格式的文件中。本发明实施例中,编译单元根据自动控制程序生成多个自动控制子程序的主要过程为编译单元对自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并确定各自动控制程序分片之间的依赖关系后,生成多个自动控制子程序。步骤S41 :运行支持单元获取各个自动控制子程序的中间代码,并将每个自动控制子程序的中间代码转换为运行于嵌入式操作系统中的任务,并在识别每个处理单元的身份后,将每个任务发送至相应的处理单元。本发明实施例中,运行支持单元在识别每个处理单元的身份后,根据各处理单元的身份,将每个任务发送至相应的处理单元。例如,在划分各自动控制子程序后,确定各自动控制子程序的执行顺序,相应的,各处理单元的身份标识能够体现执行顺序,从而能够按照处理单元的身份标识将每个任务发送至相应的处理单元。步骤S42 :至少两个处理单元分别接收运行支持单元发送的相应的自动控制子程序对应的任务并运行,且在运行时在各处理单元之间进行数据通信。其中,在至少两个处理单元运行相应的自动控制子程序对应的任务时,由运行支持单元控制至少两个处理单元同步执行各自动控制子程序的中间代码转换得到的各任务。较佳地,各处理单元之间基于运行支持单元采用的通信协议进行数据通信,运行支持单元采用的通信协议至少为网络协议(IP)或数据传输协议(UDP)中的任意一种。此处仅为举例,并不用于限制本发明,实际应用中,若存在其他通信协议能够应用于本发明实施例的,本发明也将其包括在内。本发明实施例中,编译单元将自动控制程序划分为多个自动控制子程序,具体过程如下首先,对自动控制程序进行分片,即将自动控制程序划分为一些单独的部分,得到若干个自动控制程序分片,由于在国际电工委员会(IEC)制定的工业控制标准编程语言IEC 61131-3中,采用工程语言编写的自动控制程序由若干网络组成,因此以网络为粒度对自动控制程序进行分片,即每个自动控制程序分片为一个网络。然后,对每个自动控制程序分片在语义分析的基础上生成符号表(SymbolTable),语法树(Syntax Tree),并构建控制流图(CFG, Control Flow Graph)。其次,根据自动控制程序的语法树,符号表以及控制流图通过自动控制程序分片之间的依赖性分析建立自动控制程序的并行模型,该自动控制程序的并行模型应当能够清楚的表示出自动控制程序所包含组件之间的关系。
最后,将语法树上具有紧密依赖性的节点代表的自动控制程序分片划分为一个自动控制子程序,将具有松散依赖性的节点代表的自动控制程序部分划分到不同的自动控制子程序中。本发明实施例中,在对各个自动控制子程序之间的依赖关系进行分析之后可以得到各个自动控制子程序之间的同步操作,包括每个自动控制子程序中各个组成部分的执行顺序以及各处理单元之间需要同步的数据等。此时,编译单元可以自动将执行这些同步操作的代码加入对应自动控制子程序的合适位置。本发明实施例中,运行支持单元采用了轻量级的IP协议栈,同时对MPI协议中规定的众多原语进行了筛选,仅借鉴了其中最基本的6个原语,来识别处理单元的身份,控制并行程序的执行(例如开始或结束)以及定义同步操作,即需要在根据各个自动控制子程序部分之间的依赖关系分别在每个自动控制子程序部分加入同步操作之前,预先定义用于识别处理单元身份,控制并行程序执行以及定义同步操作的消息传递接口 MPI原语,包括定义MPI_Send()和MPI_Recv()原语来实现从一个处理单元到另一个处理单元的数据传 递;定义MPI_Init()原语来实现MPI的初始化;定义MPI_Comm_rank O原语来确定调用过程的标签;定义MPI_Barrier()原语来阻塞执行直到同步结束;以及MPI_Gather O原语来收集远端输入或输出等等。本发明实施例中,中间代码类似于Java源代码编译后形成的字节码(bytecode),为适用于可编程逻辑控制器(PLC)的统一的语言格式。下面通过具体的嵌入式多处理单元并行处理系统对本发明实施例进行举例说明。如图5所示,编译器50采用的可编程逻辑控制器(PLC)为STEP7 Micro/Win,两个处理器51采用的PLC为Stelliaris LM3S8962,其中,两个处理器51以及编译器50通过网络交换机52互联,其中编译器50相当于上述本发明实施例提供的嵌入式多处理单元并行控制系统中的编译单元,每个处理器51相当于上述本发明实施例提供的嵌入式多处理单元并行控制系统中的每个处理单元,且编译器50和每个处理器51中嵌入有实现本发明实施例提供的嵌入式多处理单元并行控制系统中的运行支持单元。图5所示系统运行的具体过程如下首先,编译器50将STL语言编写的控制程序(即源文件)输出至awl格式的文件中,基于该awl文件将STL控制程序划分为多个STL控制子程序,其中,一个或多个控制子程序对应一个处理器51,并将每个STL控制子程序编译为PLC中间代码;其次,将每个STL控制子程序编译后得到的PLC中间代码转换为运行于嵌入式操作系统中的任务(二进制文件)并发送至相应的处理器51,或者,将PLC中间代码发送至相应的处理器51,再由处理器51转换相应的任务;最后,两个处理器51同时执行获得的STL控制子程序对应的任务,并且两个处理器51在执行的过程中通过网络进行数据交互。其中,在每个处理器51所在的测试板中设置有按键53、有机发光二极管(OLED) 54、发光二级管(LED) 55、RJ45网络连接器56,通过总线与StelliarisLM3S8962 (PLC) 57相连接,处理器51中嵌入的运行支持单元相当于虚拟机,如图6所示,每个处理器所在的测试板的运行过程如下
步骤S601 :测试板启动;步骤S602 :进行硬件初始化;步骤S603 :启动OLED任务;步骤S604 :启动按键扫描任务;步骤S605 :判断虚拟机任务的启动按键是否按下,若未按下,则转至步骤S603重新启动OLED任务,若已按下,则执行步骤S606 ;步骤S606 :启动虚拟机任务;步骤S607 :基于虚拟机任务执行由相应的PLC通用的中间代码转换后的二进制文件;
步骤S608 :判断虚拟机任务的停止按键是否按下,若未按下,则转至步骤S607循环执行由相应的PLC通用的中间代码转换后的二进制文件,若已按下,则执行步骤S609 ;步骤S609 :停止虚拟机任务,并转至步骤S603重新启动OLED任务。尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解在不脱离本发明的原理和宗旨的情况下,可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
权利要求
1.一种嵌入式多处理单元并行处理系统,其特征在于,包括 编译单元,用于根据自动控制程序生成多个自动控制子程序,并将每个所述自动控制子程序编译为中间代码; 运行支持单元,用于从所述编译单元获取各个所述自动控制子程序的所述中间代码,并将每个所述自动控制子程序的所述中间代码转换为运行于嵌入式操作系统中的任务,以及用于识别每个处理单元的身份,将每个所述任务发送至相应的处理单元; 至少两个处理单元,用于接收所述运行支持单元发送的根据所述自动控制子程序的所述中间代码转换得到的所述任务并运行,以及在运行所述自动控制子程序对应的所述任务时,各所述处理单元之间可进行数据通信。
2.如权利要求I所述的系统,其特征在于,所述运行支持单元进一步用于控制所述至少两个处理单元同步执行各所述自动控制子程序的所述中间代码转换得到的各所述任务。
3.如权利要求I所述的系统,其特征在于,所述编译单元处理的所述自动控制程序至少为结构化文本语言程序、梯形图语言程序、功能块图表语言程序中的任意一种。
4.如权利要求I所述的系统,其特征在于,所述运行支持单元用于在至少两个处理单元运行所述自动控制子程序对应的所述任务时,基于所述运行支持单元采用的通信协议进行数据通信; 所述运行支持单元采用的所述通信协议至少包括网络协议或数据传输协议中的任意一种。
5.如权利要求1-4中任意一项所述的系统,其特征在于,所述编译单元包括并行化子单元和编译子单元,其中, 所述并行化子单元,用于对所述自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并确定各所述自动控制程序分片之间的依赖关系后,生成多个所述自动控制子程序; 所述编译子单元,用于将各所述自动控制子程序编译为所述中间代码。
6.如权利要求5所述的系统,其特征在于,所述编译单元进一步包括预处理子单元,用于将所述自动控制程序输出至awl格式的文件中。
7.一种嵌入式多处理单元并行控制系统的运行方法,其特征在于,包括 由编译单元根据自动控制程序生成多个自动控制子程序,并将每个所述自动控制子程序编译为中间代码; 由运行支持单元获取各个所述自动控制子程序的所述中间代码,并将每个所述自动控制子程序的所述中间代码转换为运行于嵌入式操作系统中的任务,并在识别每个处理单元的身份后,将每个所述任务发送至相应的处理单元; 由至少两个处理单元分别接收所述运行支持单元发送的相应的所述自动控制子程序对应的所述任务并运行,且在运行时在各所述处理单元之间进行数据通信。
8.如权利要求7所述的方法,其特征在于,所述至少两个处理单元运行相应的所述自动控制子程序对应的所述任务时,由所述运行支持单元控制所述至少两个处理单元同步执行各所述自动控制子程序的所述中间代码转换得到的各所述任务。
9.如权利要求7所述的方法,其特征在于,所述自动控制程序至少为结构化文本语言程序、梯形图语言程序、功能块图表语言程序中的任意一种。
10.如权利要求7所述的方法,其特征在于,各所述处理单元之间基于所述运行支持单元采用的通信协议进行数据通信; 所述运行支持单元采用的所述通信协议至少包括网络协议或数据传输协议中的任意一种。
11.如权利要求7-10中任意一项所述的方法,其特征在于,根据所述自动控制程序生成多个所述自动控制子程序,包括 对所述自动控制程序进行分片,并在语义分析的基础上生成符号表、语法树及控制流图,并确定各所述自动控制程序分片之间的依赖关系后,生成多个所述自动控制子程序。
12.如权利要求11所述的方法,其特征在于,根据所述自动控制程序生成多个所述自动控制子程序之前,将所述自动控制程序输出至awl格式的文件中。
全文摘要
本发明提供了一种嵌入式多处理单元并行处理系统,包括编译单元、运行支持单元以及至少两个处理单元。本发明还公开了上述嵌入式多处理单元并行处理系统的运行方法。通过本发明提供的嵌入式多处理单元并行处理系统以及系统的运行方法,可以在嵌入式硬件平台上实现多处理单元并行处理,提高处理效率。
文档编号G05B19/418GK102929214SQ20111022985
公开日2013年2月13日 申请日期2011年8月11日 优先权日2011年8月11日
发明者龙飞, 介鸣, 潘莉 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1