CN105302766B - 嵌入式控制器可重新配置的处理器间通信的机构和装置 - Google Patents
嵌入式控制器可重新配置的处理器间通信的机构和装置 Download PDFInfo
- Publication number
- CN105302766B CN105302766B CN201510285265.5A CN201510285265A CN105302766B CN 105302766 B CN105302766 B CN 105302766B CN 201510285265 A CN201510285265 A CN 201510285265A CN 105302766 B CN105302766 B CN 105302766B
- Authority
- CN
- China
- Prior art keywords
- message
- processor
- buffering area
- transmission
- reception
- 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
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
提供嵌入式控制器可重新配置的处理器间通信的机构和装置。系统和方法包括在控制器中提供多个处理器以及产生用于每个处理器的发送缓冲区和接收缓冲区。系统和方法进一步包括:产生用于每个处理器的发送表和接收表,其中发送表存储关于被发送的消息的识别信息,并且其中接收表存储关于被接收的消息的识别信息;以及提供基础设施服务,所述基础设施服务包括用于在控制器中的多个处理器之间发送和接收消息的协议。
Description
技术领域
本发明一般涉及用于重新配置处理器间通信的系统和方法,并且更具体来说,涉及提供多个处理器的系统和方法,所述多个处理器包括发送和接收缓冲区、发送和接收表以及包括用于在控制器中的处理器之间发送和接收消息的协议的基础设施软件服务。
背景技术
现代车辆使用改进车辆的性能、舒适性、安全性等的各种嵌入式电子控制器。这些控制器包括发动机控制器、悬架控制器、转向控制器、动力总成控制器、气候控制控制器、信息娱乐系统控制器、底盘系统控制器等。这些控制器通常需要专用软件和算法来执行其控制功能。
车辆电子控制器的当前趋势是提供用于在公共控制器上操作的不同功能的多个软件应用程序。例如,自适应巡航控制(ACC)系统、车道定中系统、车道保持系统、稳定性控制系统等都是本领域中已知的,所有这些系统都以某种方式自动地控制车辆转向和/或制动。这些系统经常使用相同的传感器输入和其他变量(有时称为全局变量),所述变量在存储于存储器中时可由多于一个软件应用程序使用。例如,ACC系统可以在其在处理器上的操作期间将传感器数据写入到控制器存储器中,并且车道定中系统可以在其软件在处理器上运行时将那个数据写入到其软件中。因此,这在许多情况下是有意义的,诸如在相同的处理器上运行多个软件应用程序的情况。
提供在公共控制器上运行的多个相关软件应用程序对于减少系统硬件和成本具有显著优点。然而,在相同的处理器上操作不同的软件应用程序因为运行不同的软件程序并且防止软件应用程序彼此干扰所需的排程而增加控制器的复杂度。当车辆OEM在已经具有由供应商提供的软件的控制器上提供额外的软件时,进一步增加在单个处理器上运行的这种混合使用的应用程序的复杂度。此外,单个处理器仅具有可用有限的资源,诸如存储器、CPU总处理能力等。运行多个应用程序所需的资源通常超出单个处理器的能力。
处理器间通信(IPC)是用于在一个或多个过程中在多个线程之间交换数据的一组方法。一个或多个过程或可运行实体可以在由网络连接的一个或处理器上运行。如本文所使用,“可运行实体”包括在某个操作系统任务速率下运行的小的可执行软件部件或软件功能。在处理器间通信中,可运行实体可以被分配给不同的处理器。可运行实体还可以在具有不同速率的不同线程中运行。可运行实体的分配需要频率改变,这相对于芯/处理器的总处理能力以及相对于总线/存储器的带宽而言可能是繁重的。现行实践假定可运行实体不可以在设计期间重新分配可运行实体变得不可行。已知的控制器实施中的消息包括节点专用的语法,即,硬编码的源/目标信息。将可运行实体从一个芯移动到另一个芯需要重大努力以识别和修改IPC消息。因此,本领域中需要根据各种功能部署、功能执行速率和低级通信链路来重新配置处理器间通信的机构。
发明内容
以下披露内容描述用于控制器中的可重新配置的处理器间通信的系统和方法的系统和方法。系统和方法包括在控制器中提供多个处理器以及产生用于每个处理器的发送缓冲区和接收缓冲区。系统和方法进一步包括:产生用于每个处理器的发送表和接收表,其中发送表存储关于被发送的消息的识别信息,并且其中接收表存储关于被接收的消息的识别信息;以及提供基础设施服务,所述基础设施服务包括用于在控制器中的多个处理器之间发送和接收消息的协议。
本发明包括以下技术方案:
1. 一种用于控制器中的可重新配置的处理器间通信的方法,所述方法包括:
在控制器中提供多个处理器,所述多个处理器运行控制器的可运行实体;
编码由处理器建立的每个消息中的协议,所述协议用于从一个处理器到另一个处理器的发送和接收消息;
提供用于将被发送的消息的发送缓冲区并且提供用于在处理器的每一个中接收的消息的接收缓冲区:
提供包括关于处理器的每一个中的消息的信息的发送表和接收表;以及
提供用于每个处理器的基础设施服务,所述服务包括确定在接收缓冲区中是否存在消息、如果存在消息则将所述消息中的接收到的消息数据与接收表中的数据相比较以确保接收到的消息正确以及解码所述消息并将所述消息的信号数据复制到接收所述消息的处理器上的变量。
2. 根据技术方案1所述的方法,其中所述处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当所述可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在所述发送缓冲区上运行。
3. 根据技术方案1所述的方法,其中用于每个处理器的发送缓冲区、接收缓冲区、发送表以及接收表中的每一个是在控制器的设计时产生。
4. 根据技术方案1所述的方法,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
5. 根据技术方案1所述的方法,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和变量列表的信息。
6. 根据技术方案5所述的方法,其进一步包括重新配置所述控制器以通过改变至少一个发送表和一个接收表的内容来改变处理器间通信。
7. 根据技术方案5所述的方法,其进一步包括将表中的信息与对应消息中的消息标题信息相比较以确定所述对应消息是否被破坏。
8. 一种用于控制器中的可重新配置的处理器间通信的系统,所述系统包括:
控制器中的多个处理器;
产生用于处理器的每一个的发送缓冲区和接收缓冲区,所述发送缓冲区用来写入、存储和发送消息,所述接收缓冲区用来读取、存储和复制消息;
产生用于处理器的每一个的发送表和接收表,所述发送表存储关于被发送的消息的识别信息,并且所述接收表存储关于被接收的消息的识别信息;以及
被编程到控制器中的基础设施服务,所述基础设施服务包括用于在控制器中的处理器之间发送和接收消息的协议。
9. 根据技术方案8所述的系统,其中所述多个处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在处理器上运行。
10. 根据技术方案8所述的系统,其中所述发送缓冲区、所述接收缓冲区、所述发送表以及所述接收表中的每一个是在设计时产生。
11. 根据技术方案8所述的系统,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
12. 根据技术方案8所述的系统,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和作为每个消息的一部分的变量列表的信息。
13. 根据技术方案8所述的系统,其进一步包括重新配置控制器以通过改变至少一个发送表和一个接收表的内容来改变处理器间通信。
14. 一种用于控制器中的可重新配置的处理器间通信的方法,所述方法包括:
在控制器中提供多个处理器;
产生用于处理器的每一个的发送缓冲区和接收缓冲区,所述发送缓冲区用来写入、存储和发送消息,所述接收缓冲区用来读取、存储和复制消息;
产生用于处理器的每一个的发送表和接收表,所述发送表存储关于被发送的消息的识别信息,所述接收表存储关于被接收的消息的识别信息;以及
提供基础设施服务,所述基础设施服务包括用于在控制器中的多个处理器之间发送和接收消息的协议。
15. 根据技术方案14所述的方法,其中所述处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当所述可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在处理器上运行。
16. 根据技术方案14所述的方法,其中所述发送缓冲区、所述接收缓冲区、所述发送表以及所述接收表中的每一个是在设计时产生。
17. 根据技术方案14所述的方法,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
18. 根据技术方案14所述的方法,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和用于所述表中列出的每个消息的变量列表的信息。
19. 根据技术方案14所述的方法,其进一步包括重新配置控制器以通过改变至少一个发送表和接收表的内容来改变处理器间通信。
本发明的额外特征将从结合附图进行的以下描述和随附权利要求变得显而易见。
附图说明
图1A至1C示出具有可运行实体的控制器,所述可运行实体根据两个不同的配置以配置在第一和第二处理器上;
图2是每个处理器的一部分的说明性消息缓冲区;
图3是发送处理器的一部分的功能的流程图;
图4是将消息发送到发送芯/处理器的缓冲区的任务的流程图;
图5是复制发送到接收芯/处理器的缓冲区的消息的功能的流程图;
图6是将消息中的信号数据复制到适当的变量的任务的流程图;
图7是四个可运行实体R1、R2、R3和R4彼此如何通信的实例的图示;
图8是包括分布在三个芯/处理器之间的可运行实体R1、R2、R3和R4的控制器的图示;以及
图9是包括分布在两个芯/处理器之间的可运行实体R1、R2、R3和R4的控制器的图示。
具体实施方式
本发明的针对用于重新配置处理器间通信的系统和方法的实施例的以下论述实质上仅是示例性的,而决不意欲限制本发明或其应用或使用。
图1A示出控制器10,诸如车辆上的控制器,其包括可运行实体34、36和38。图1B和1C示出根据两个不同配置分别布置在处理器30和32上的可运行实体34、36和38。图1A示出在可运行实体34、36和38之间如何共享数据信号。如图1A中所示,可运行实体34在线路40上将信号数据发送到可运行实体36,并且还在线路42上将信号数据发送到可运行实体38。可运行实体36在线路44上将信号数据发送到可运行实体38。可运行实体34可以是例如车辆传感器输入数据。可运行实体36可以是车辆路径预测过滤器,并且可运行实体38可以是碰撞可能性检测过程。
图1B示出分布在处理器30和32上的可运行实体34、36和38。根据此配置,在通信链路50(诸如总线)上发送两个消息52和54。图1C示出以不同方式分布在处理器30和32上的可运行实体34、36和38,从而使得仅需要在通信链路50上发送一个消息。因此,改变可运行实体(诸如可运行实体34、36和38)的配置可能是希望的以优化处理器(诸如处理器30和32)的总处理能力以及有效地使用通信链路50的带宽以及控制器10的存储器。
为了建立重新配置处理器间通信的方式,使用以静态消息结构编码的协议、用于消息存储的环形缓冲区和基础设施服务,如以下详细描述。在消息结构中建立具有减少的内务操作的用于发送和接收消息的协议,即,该协议是与网络协议不同的高级协议。用于发送和接收消息的协议能够支持基于消费者对带宽和总处理能力优化的需要的多个消息速率,这与现有的固定速率解决方案不同,因为如上所述,这些解决方案不必要地消耗额外带宽和总处理能力。因此,如本文所描述的用于发送和接收消息的协议实现稳健通信并且允许各种诊断和容错策略的实施。用于发送和接收消息的协议的消息结构包括指示消息开始的前导字节,本文称为_sync。_sync用来在标题破坏的情况下识别新消息。消息结构还包括系统范围的独特编码信号/动作,本文称为_id,其具有被挑选以在发送位置与目的地之间传输的预定速率,下文更详细描述。发送位置(本文称为_src)是接收信号/消息的芯/处理器。消息结构中还包括消息滚动计数,本文称为_cnt,其是每个_id、_src、_dst特有的具体消息结构的序列号。例如,_cnt可以代表多个消息的数据包,从而使得从数据包中间丢失的消息被检测到,如下文进一步论述。
用于发送和接收消息的协议的消息结构还包括关于消息的长度(本文称为_size)的信息。_size被静态地确定并且用来确保消息的正确接收,因为_size指示消息何时将结束或者预期结束。标题数据破坏的检测(本文称为_hdr_chksum)也是协议的消息结构的一部分。验证消息中的数据来自相同源、去往相同目的地、以相同速率(本文称为_data)也是消息结构的一部分。另外,消息结构包括本文称为_data_checksum的内容,其由接收信号的芯/处理器(诸如处理器32)用来检测数据破坏。如果检测到数据破坏,则用以下描述的方式丢弃数据以节省存储空间。
消息 id | dst | cnt | 大小 | 变量列表 |
m1 | p2 | 5 | 10 | V1, V3, V8 |
m2 | p2 | 3 | 10 | V1, V2, V8 |
m3 | p3 | 1 | 8 | V3, V4 |
… | … | … | … |
表1。
表1示出在发送芯/处理器(诸如处理器30)的发送表中如何组织信号数据。每个处理器包括发送表和接收表,如下文更详细描述。表1的每行包括_id、_dst、_size和具有变量参考和位置的变量列表。在消息中静态地组织数据,其中消息中的信号的位置是固定的并且在配置时进行确定。如表1中所示,消息m1被发送到芯/接收处理器p2、具有5的计数和10的大小。用于m1的变量序列是V1、随后是V3、随后是V8。表1中的第二消息m2也被发送到接收芯/处理器p2、具有3的计数和10的大小,以及V1、随后是V2、随后是V8的变量序列。第三消息(在表1中示为m3)被发送到接收芯/处理器p3、具有1的计数和8的大小,以及V3、随后是V4的变量序列。
消息 id | Src | cnt | 大小 | 变量列表 |
m1 | p1 | 5 | 10 | V1, V3, V8 |
m2 | p1 | 2 | 10 | V1, V2, V8 |
m5 | p3 | 2 | 6 | V7, V5 |
… | … | … | … |
表2。
表2示出接收芯/处理器(诸如处理器32)的接收表。表2的每行包括_id、_src、_size和具有变量参考和位置的变量列表。如上所述,_id、_src和_size用来在存在标题破坏的情况下正确地接收消息。例如,消息m1的大小预期为10,因此如果实际大小不为10,则丢弃消息,如下文进一步论述。表1中的消息m1被预期匹配表2中的消息m1。使用表1和2的行中的信息,接收芯/处理器32能够确定接收到的消息是否正确,即,是否已经被破坏。如上所述,每个芯/处理器维持两个表,一个用于发送并且一个用于接收。两个表都是在部署时产生,即,在设计时产生,并且消息结构的计数_cnt在接收侧使用以确定消息是否将被丢弃。
图2示出消息缓冲区60和62,它们是每个芯/处理器(诸如处理器30和32)的一部分。消息缓冲区60是用来在处理所发送的消息之前通过跨(例如)总线传递消息来存储所发送的消息的发送缓冲区,如下文更详细描述。缓冲区62是用来在处理所接收的消息之前存储所接收的消息的接收缓冲区,如下文详细描述。缓冲区60和62中的每一个是环形缓冲区,其中缓冲区60和62中的每一个包括两个指示符。第一指示符64指向写入缓冲区的位置并且另一个指示符66指向读取缓冲区的位置。为了确定发送缓冲区60需要的大小,使用以下方程:
(1)
其中是用于发送缓冲区的所分配的大小,意为产生将被传输的数据的所有可能速率的总和,意为所有可能目的地处理器/芯的总和,并且是包括标题和数据的消息的大小。
使用方程(1),算法计算大小_size或者每个消息的长度以确保发送缓冲区60能够保持其预期在每个Tx_task之间(即,在将数据通信写入到缓冲区30的每个写入命令任务之间)接收的所有数据通信。例如,缓冲区60可以被预期从可运行实体R1接收20个数据通信,并且从可运行实体R2接收1个数据通信。如果每个数据通信的大小是1并且消息标题的大小是10,则缓冲区大小可以被计算为20*(10+1) + (10+1) = 231。类似地,为了确定接收缓冲区32需要的大小,使用以下方程:
(2)
其中是用于接收缓冲区的所分配的大小,意为产生数据通信的所有可能速率的总和,并且意为所有来自不同的源处理器的消息的总和,并且是包括标题和数据的消息的大小。
方程(2)是用来计算大小_size或者每个消息的长度以确保环形缓冲区32能够保持其预期在每个Rx_task之间(例如,在从缓冲区30获取事物以放在总线50上的每个读取命令任务之间)接收的所有数据通信。使用指示符66以读取并且使用指示符64以写入,下文详细描述的函数在写入索引开始(即,在指示符64开始)顺序地写入数据。在发送的消息的最高速率下调用下文详细描述的单独的任务函数,以从发送缓冲区62的读取指示符66读取将被发送的消息、将消息公式化并且以下文描述的方式将消息发送到通信链路(例如总线)。在接收侧,在消息到达时调用下文详细描述的中断服务,以使得中断服务检查消息标题并将其与在接收表(诸如表2)中可获得的信息相比较。有效消息被放入接收缓冲区62中,并且在接收的消息的最高速率下调用的接收任务将消息的信号数据解包并用下文更详细描述的方式将信号数据复制到适当的变量。使用以上描述的方程(1)和(2)计算缓冲区60和62的大小,以确保不会发生信号数据的溢出。
用于在每个芯/处理器30、32上的消息处理的基础设施服务包括Tx_func() 70、Tx_task() 90、Rx_interrupt() 112和Rx_task() 134,如以下在图3至6中更详细描述。
图3是发送芯/处理器30的函数的Tx_func() 70的流程图。当存在由在某一速率下运行的可运行实体产生并且将通过处理器间通信从发送芯/处理器30发送的消息(诸如表1的消息m1)时,Tx_func() 70在框72开始。在框74,Tx_func() 70使用消息id _id和目的地_dst,以获取信号列表和计数_cnt。在框76,发送缓冲区60的Windex(即,写入索引)被获取并用来写入消息id和计数。在框78,信号数据从变量(在消息m1的实例中,变量V1、V3和V8)到发送缓冲区60。在决定菱形框80,Tx_func() 70确定是否成功复制来自变量V1、V2和V8的所有信号数据。如果成功复制,则在框82更新Windex和计数。如果未成功复制,则Tx_func() 70返回到框78以复制变量数据。一旦在框82更新了Windex和计数,则Tx_func()70在框84结束。每次可运行实体执行时,调用Tx_func() 70。
图4是Tx_task()函数90的流程图。Tx_task() 90是从发送缓冲区提取消息并在通信链路50(诸如总线)上发送该消息的周期性任务。在框92,Tx_task() 90开始。在框94,获取发送缓冲区60的Rindex(即,读取索引)。在决定菱形框96,Tx_task() 90确定缓冲区60中是否存在新消息。如果不存在,则Tx_task() 90在框110结束。如果缓冲区60中存在新消息,则在框98,消息被汇编以增加标题和_chksum,并且消息通过处理器间通信发送。一旦消息被发送,则在框100更新缓冲区60的Rindex,并且Tx_task() 90返回到决定菱形框96以确定缓冲区60中是否存在另一个新消息。
图5是将来自物理处理器间通信链路50的消息复制到目的地处理器的接收缓冲区的Rx_interrupt() 112的流程图。在框114,Rx_interrupt() 112通过消息的到达触发。在框116,读取消息标题。在决定菱形框118,Rx_interrupt 112基于本地存储的接收表来确定这是否是有效消息。有效消息检查包括如果存在不匹配的标题信息则确定任何不匹配的标题信息(_sync、_id、_src、_dst、_cnt、_hdr_chksum)是否指示一些破坏导致消息丢弃。如果存在有效消息,则在框120获取接收缓冲区62的Windex(即,写入索引),并且在框122将具有消息id信息的消息写入到缓冲区62。在决定菱形框124,Rx_interrupt 112确定数据是否被破坏。如果数据被破坏,或者如果在决定菱形框118,这不是配置在接收表中的有效消息,则在框126丢弃消息,并且通知应用程序以使得应用程序可以确定要做什么。如果在决定菱形框124,数据未被破坏,则在框128更新接收缓冲区62的Windex。在决定菱形框130,Rx_interrupt 112确定是否已经通过处理器间通信接收另一个消息。如果已经通过处理器间通信接收另一个消息,则Rx_interrupt 112返回到框116以读取消息的消息标题。如果未接收到另一个消息,则Rx_interrupt 112在框132结束。
图6是解析在接收缓冲区中接收到的消息并将消息中的信号数据复制到适当变量的Rx_task()函数134的流程图。Rx_task() 134是运行的周期性任务。Rx_task() 134在框136开始并且在框138获取接收缓冲区62的Rindex(即,读取索引)。在决定菱形框140,Rx_task() 134确定缓冲区62中是否存在新消息。如果不存在,则Rx_task() 134在框148结束。如果存在,则在框142从接收表(诸如表2)获取信号列表,并且在框144,解码消息并将信号数据复制到适当变量。一旦信号数据的复制完成,则在框146,更新缓冲区62的Rindex,并且Rx_task() 134返回到决定菱形框140以确定缓冲区62中是否存在另一个新消息。
图7是四个可运行实体(在框202的可运行实体R1、在框204的可运行实体R2、在框206的可运行实体R3和在框208的可运行实体R4)彼此如何通信的实例200的图示。图7中的每个圆形是从一个可运行实体发送到另一个的数据通信。每个数据通信包括由发送可运行实体写入和由接收可运行实体读取的变量。数据通信210和212是分别包括变量V12a和V12b(变量V12a和V12b分别具有6和4的大小)并且由可运行实体R1每5毫秒写入并被发送到可运行实体R2的通信。数据通信214是包括变量V13(变量V13具有4的大小)并且由可运行实体R1每5毫秒写入并被发送到可运行实体R3作为消息m1的通信。数据通信216和218是分别包括变量V23a和V23b(变量V23a和V23b分别具有6和4的大小)并且由可运行实体R2每10毫秒写入并被发送到可运行实体R3作为消息m2的通信。数据通信220是包括变量V24(变量V24具有2的大小)并且由可运行实体R2每10毫秒写入并被发送到可运行实体R4作为消息m3的通信。
图8是包括以上图7中描述的可运行实体R1、R2、R3和R4的控制器230的图示。可运行实体R1、R2、R3和R4分布在三个芯/处理器之间,其中图7的参考数字用来指代图8中的相同元件。第一处理器232包括在框202的可运行实体R1和在框204的可运行实体R2。第二处理器234包括在框206的可运行实体R3,并且第三处理器236包括在框208的可运行实体R4。在配置控制器230时产生用于处理器232、234和236中的每一个的表和缓冲区。根据此实例,第一处理器232的接收表240为空,因为消息不被发送到第一处理器232。类似地,接收缓冲区242的大小为零,因为消息不被接收。
发送表244包括将通过发送缓冲区246处理器232发出的所有消息。因此,发送表244含有表3的信息:
消息 id | dst | cnt | 大小 | 变量列表 |
m1 | p2 | 1 | 4 | V13 |
m2 | P2 | 1 | 6+4 | V23_a, V23_b |
m3 | p3 | 1 | 2 | V24 |
表3。
如表3中所示,发送缓冲区246发送来自可运行实体R1的数据通信214作为消息m1,并且还发送来自可运行实体R2的数据通信216、218作为m2和来自可运行实体R2的数据通信220作为m3。发送缓冲区246的Tx_task周期是每10毫秒,并且消息标题大小是10,即,在数据有效负载旁边的字段的总大小是10。使用以上方程(1),发送缓冲区246的大小被计算为2*(10+4) + (10+6+4) + (10+2) = 60。一旦发送缓冲区246写入含有适当的数据通信的消息m1、m2和m3,则消息m1和m2被发送到第二处理器234并且消息m3被发送到第三处理器236。因为消息m1来自可运行实体R1,所以将在发送缓冲区246写入的时候(每10毫秒发生)创建两个消息m1(每5毫秒一个)。
第二处理器234包括接收进入的数据通信的接收缓冲区250和含有表4的信息的接收表252:
消息 id | src | cnt | 大小 | 变量列表 |
m1 | P1 | 1 | 4 | V13 |
m2 | P1 | 1 | 6+4 | V23_a, V23_b |
表4。
根据此实例,第二处理器234的发送缓冲区254具有零的大小,并且发送表256为空,因为第二处理器234不发送数据通信。接收缓冲区250的读取任务Rx_task是每10毫秒。因此,使用以上方程(2),接收缓冲区25的大小可以被计算为2*(10+4) + (10+6+4) = 48,其中我们再次假定标题大小为10。
第三处理器236接收包括来自第一处理器232的可运行实体R2的数据通信220的消息m3。接收缓冲区260接收消息m3,并且接收表262含有表5中所示的信息:
消息 id | src | cnt | 大小 | 变量列表 |
m3 | p1 | 1 | 2 | V24 |
表5。
第三处理器236的发送缓冲区264具有零的大小,并且发送表266为空,因为第三处理器236根据此实例不发送数据通信。
以上描述的图8示出三个处理器上的四个可运行实体。此配置是在需要的情况下可以改变的一个选择方案。
图9是包括以上图7中描述的可运行实体R1、R2、R3和R4的控制器300的图示,所述可运行实体是以不同配置从而使得可运行实体R1、R2、R3和R4分布在两个处理器之间而非图8中所示的三个处理器之间。参考数字对于图7和8中所示的相同元件而言相同。第一处理器302包括在框202的可运行实体R1和在框208的可运行实体R4。第二处理器304包括在框204的可运行实体R2和在框206的可运行实体R3。根据此实例,接收缓冲区306在消息m1中从可运行实体R1接收数据通信210、212和214,并且发送缓冲区310在消息m3中将来自第二处理器304的数据通信220发送到第一处理器302。第一处理器的接收缓冲区318具有30毫秒的Rx_task周期,并且接收消息m3的数据通信220。
第一处理器302的发送表316含有表6中所示的信息:
消息 id | dst | cnt | 大小 | 变量列表 |
m1 | p2 | 1 | 4+2+4 | V13, V12_a, V12_b |
表6。
基于如表6中所示的关于消息大小的信息,并且假定标题大小为10,因此使用以上方程(1),发送缓冲区314的大小被计算为(10+10) = 20,因为在此实例中,可运行实体R1在5ms下运行并且Tx_task也在5ms下运行。
在此实例中,因为第一处理器302接收消息,所以接收缓冲区318不为零,并且接收表320不为空。相反,接收表320含有表7中所示的信息:
消息 id | src | cnt | 大小 | 变量列表 |
m3 | p2 | 1 | 2 | v24 |
表7。
如表7中所示,消息大小为2。接收缓冲区318任务速率为30毫秒,而发送缓冲区310的任务速率为10毫秒。因此,在消息将被读取之前,在接收缓冲区318中将建立3个消息。再次假定标题大小为10,接收缓冲区318的大小使用以上方程(2)被计算为3*(10+2) = 36。
在第二处理器304中,第二处理器304的接收表308含有表8中所示的信息。接收缓冲区306的大小使用以上方程(2)来计算,即,2*(10+10) = 40,因为消息m1每5ms来自通信链路50,而第二处理器304上的Rx_task每10ms运行。因此,表8包括:
消息 id | src | cnt | 大小 | 变量列表 |
m1 | p1 | 1 | 10 | V13, V12_a, V12_b |
表8。
第二处理器304将消息m3发送到第一处理器302,如以上所述。因此,第二处理器304的发送表312含有表9中所示的信息:
消息 id | dst | cnt | 大小 | 变量列表 |
m3 | p1 | 1 | 2 | V24 |
表9。
如上所述,标题大小被假定为10。因此,发送缓冲区310的大小使用以上方程(1)来计算,即,10+2 = 12,因为可运行实体R2和第二处理器304上的Tx_task都在10ms下运行。
图9示出根据不同配置的相同可运行实体R1、R2、R3和R4。通过改变表、缓冲区大小和SW部件(所有这些都是预定义和预存储的),图8中所示的配置可以被重新配置成如图9中来分配。例如,如果图8中的第三处理器236故障,则可以通过改变表和缓冲区以使得将可运行实体R4从第三处理器236移动到第一处理器302并且将可运行实体R2从第一处理器232移动到第二处理器304来将控制器232重新配置为控制器300。所谓的移动通过将处理器的发送和接收表的内容从它们在图8中含有的内容改变为图9的发送和接收表并且通过将缓冲区的大小从它们在图8中的大小改变为图9中的缓冲区的大小来实现。
以上描述的可重新配置的系统和方法允许在不必知道部署的情况下应用程序和部件的真正并行实施。通过支持功能执行位置和通信频率的灵活的重新分配,改进了带宽和中央处理单元总处理能力。如上所述,供应商系统中的现有的处理器间通信需要应用程序的固定位置并且仅在固定速率下传输消息,这不必要地消耗额外带宽和总处理能力。以上协议提供稳健的通信并且实现独立于可以从供应商获取的低级通信实施。
如本领域技术人员将清楚理解,本文论述以描述本发明的几个和各种步骤和过程可以指代由计算机、处理器或者使用电学现象来操纵和/或变换数据的其他电子计算设备执行的操作。那些计算机和电子设备可以使用各种易失性和/或非易失性存储器,包括永久的计算机可读介质,所述介质上存储有可执行程序,包括能够由计算机或处理器执行的各种代码或可执行指令,其中存储器和/或计算机可读介质可以包括所有形式和类型的存储器和其他计算机可读介质。
以上论述仅披露和描述本发明的示例性实施例。本领域技术人员将从此论述和从附图和权利要求容易地认识到,在不脱离如在以下权利要求中限定的本发明的精神和范围的情况下,可以在其中做出各种改变、修改和变化。
Claims (19)
1.一种用于控制器中的可重新配置的处理器间通信的方法,所述方法包括:
在控制器中提供多个处理器,所述多个处理器运行控制器的可运行实体;
编码由处理器建立的每个消息中的协议,所述协议用于从一个处理器到另一个处理器发送和接收消息;
提供用于存储将被发送的消息的发送缓冲区并且提供用于存储在处理器的每一个中接收的消息的接收缓冲区:
提供包括关于处理器的每一个中的消息的信息数据的发送表和接收表;以及
提供用于每个处理器的基础设施服务,所述服务包括确定在接收缓冲区中是否存在消息、如果存在消息则将所述消息中的接收到的消息数据与接收表中的信息数据相比较以确保接收到的消息正确以及解码所述消息并将所述消息的信号数据复制到接收所述消息的处理器上的变量;其中所述基础设施服务包括在消息到达时调用的中断服务,所述中断服务检查消息标题并将所述消息标题与接收表中消息的信息数据相比较以确定消息是否有效,其中有效消息被放入接收缓冲区并且无效消息被丢弃。
2.根据权利要求1所述的方法,其中所述处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当所述可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在所述发送缓冲区上运行。
3.根据权利要求1所述的方法,其中用于每个处理器的发送缓冲区、接收缓冲区、发送表以及接收表中的每一个是在控制器的设计时产生。
4.根据权利要求1所述的方法,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
5.根据权利要求1所述的方法,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和变量列表的信息数据。
6.根据权利要求5所述的方法,其进一步包括重新配置所述控制器以通过改变至少一个发送表和一个接收表的内容来改变处理器间通信。
7.根据权利要求5所述的方法,其进一步包括将表中的信息数据与对应消息中的消息标题信息相比较以确定所述对应消息是否被破坏。
8.一种用于控制器中的可重新配置的处理器间通信的系统,所述系统包括:
控制器中的多个处理器;
产生用于处理器的每一个的发送缓冲区和接收缓冲区,所述发送缓冲区用来写入、存储和发送消息,所述接收缓冲区用来读取、存储和复制消息;
产生用于处理器的每一个的发送表和接收表,所述发送表存储关于被发送的消息的识别信息,并且所述接收表存储关于被接收的消息的识别信息;以及
被编程到控制器中的基础设施服务,所述基础设施服务包括用于在控制器中的处理器之间发送和接收消息的协议;
其中所述基础设施服务包括在消息到达时调用的中断服务,所述中断服务检查消息标题并将所述消息标题与接收表中被接收的消息的识别信息相比较以确定消息是否有效,其中有效消息被放入接收缓冲区并且无效消息被丢弃。
9.根据权利要求8所述的系统,其中所述多个处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在处理器上运行。
10.根据权利要求8所述的系统,其中所述发送缓冲区、所述接收缓冲区、所述发送表以及所述接收表中的每一个是在设计时产生。
11.根据权利要求8所述的系统,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
12.根据权利要求8所述的系统,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和作为每个消息的一部分的变量列表的识别信息。
13.根据权利要求8所述的系统,其进一步包括重新配置控制器以通过改变至少一个发送表和一个接收表的内容来改变处理器间通信。
14.一种用于控制器中的可重新配置的处理器间通信的方法,所述方法包括:
在控制器中提供多个处理器;
产生用于处理器的每一个的发送缓冲区和接收缓冲区,所述发送缓冲区用来写入、存储和发送消息,所述接收缓冲区用来读取、存储和复制消息;
产生用于处理器的每一个的发送表和接收表,所述发送表存储关于被发送的消息的识别信息,所述接收表存储关于被接收的消息的识别信息;以及
提供基础设施服务,所述基础设施服务包括用于在控制器中的多个处理器之间发送和接收消息的协议;其中所述基础设施服务包括在消息到达时调用的中断服务,所述中断服务检查消息标题并将所述消息标题与接收表中被接收的消息的识别信息相比较以确定消息是否有效,其中有效消息被放入接收缓冲区并且无效消息被丢弃。
15.根据权利要求14所述的方法,其中所述处理器的每一个包括至少一个可运行实体,所述可运行实体产生消息并且将所述消息发送到处理器的发送缓冲区,当所述可运行实体需要将数据通信发送到不同处理器上的不同可运行实体时,所述可运行实体在处理器上运行。
16.根据权利要求14所述的方法,其中所述发送缓冲区、所述接收缓冲区、所述发送表以及所述接收表中的每一个是在设计时产生。
17.根据权利要求14所述的方法,其中每个缓冲区的大小是使用至少消息标题大小和消息大小来计算,从而使得每个缓冲区具有存储消息的足够容量。
18.根据权利要求14所述的方法,其中每个表包括关于消息标识、消息目的地、消息计数、消息大小和用于所述表中列出的每个消息的变量列表的识别信息。
19.根据权利要求14所述的方法,其进一步包括重新配置控制器以通过改变至少一个发送表和接收表的内容来改变处理器间通信。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/291658 | 2014-05-30 | ||
US14/291,658 US9378072B2 (en) | 2014-05-30 | 2014-05-30 | Mechanisms and apparatus for embedded controller reconfigurable inter-processor communications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302766A CN105302766A (zh) | 2016-02-03 |
CN105302766B true CN105302766B (zh) | 2018-09-25 |
Family
ID=54481610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510285265.5A Active CN105302766B (zh) | 2014-05-30 | 2015-05-29 | 嵌入式控制器可重新配置的处理器间通信的机构和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9378072B2 (zh) |
CN (1) | CN105302766B (zh) |
DE (1) | DE102015108005A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720742B2 (en) * | 2014-05-15 | 2017-08-01 | GM Global Technology Operations LLC | Service and system supporting coherent data access on multicore controller |
CN109299033A (zh) * | 2017-07-25 | 2019-02-01 | 中车株洲电力机车研究所有限公司 | 一种处理器接口装置以及处理器数据处理方法 |
GB2568806B (en) * | 2017-10-02 | 2022-04-06 | Fisher Rosemount Systems Inc | I/O virtualization for commissioning |
US11456890B2 (en) * | 2019-07-16 | 2022-09-27 | Baidu Usa Llc | Open and safe monitoring system for autonomous driving platform |
US11975714B2 (en) * | 2019-11-01 | 2024-05-07 | GM Global Technology Operations LLC | Intelligent vehicles with distributed sensor architectures and embedded processing with computation and data sharing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334177B1 (en) * | 1998-12-18 | 2001-12-25 | International Business Machines Corporation | Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system |
CN102594640A (zh) * | 2011-01-06 | 2012-07-18 | 通用汽车环球科技运作有限责任公司 | 使用发送和接收缓冲器实现的消息防丢失 |
US8286188B1 (en) * | 2007-04-27 | 2012-10-09 | Marvell Israel (M.I.S.L.) Ltd. | Method and apparatus for advanced interprocess communication |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313578A (en) | 1990-12-23 | 1994-05-17 | Motorola, Inc. | Portable interprocess communication facility |
EP0592080A2 (en) | 1992-09-24 | 1994-04-13 | International Business Machines Corporation | Method and apparatus for interprocess communication in a multicomputer system |
US6226689B1 (en) | 1997-01-29 | 2001-05-01 | Microsoft Corporation | Method and mechanism for interprocess communication using client and server listening threads |
US6601111B1 (en) | 1997-01-29 | 2003-07-29 | Palmsource, Inc. | Method and apparatus for unified external and interprocess communication |
US6874151B1 (en) | 1997-07-14 | 2005-03-29 | Microsoft Corp. | Interprocess communication mechanism for heterogeneous computer processes |
US20030208616A1 (en) * | 2002-05-01 | 2003-11-06 | Blade Software, Inc. | System and method for testing computer network access and traffic control systems |
US8001266B1 (en) * | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
EP2017741B1 (en) * | 2007-07-06 | 2017-11-22 | Telefonaktiebolaget LM Ericsson (publ) | System,processor,apparatus and method for inter-processor communication |
-
2014
- 2014-05-30 US US14/291,658 patent/US9378072B2/en active Active
-
2015
- 2015-05-20 DE DE102015108005.2A patent/DE102015108005A1/de active Pending
- 2015-05-29 CN CN201510285265.5A patent/CN105302766B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334177B1 (en) * | 1998-12-18 | 2001-12-25 | International Business Machines Corporation | Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system |
US8286188B1 (en) * | 2007-04-27 | 2012-10-09 | Marvell Israel (M.I.S.L.) Ltd. | Method and apparatus for advanced interprocess communication |
CN102594640A (zh) * | 2011-01-06 | 2012-07-18 | 通用汽车环球科技运作有限责任公司 | 使用发送和接收缓冲器实现的消息防丢失 |
Also Published As
Publication number | Publication date |
---|---|
US20150347208A1 (en) | 2015-12-03 |
DE102015108005A1 (de) | 2015-12-03 |
CN105302766A (zh) | 2016-02-03 |
US9378072B2 (en) | 2016-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302766B (zh) | 嵌入式控制器可重新配置的处理器间通信的机构和装置 | |
JP5255579B2 (ja) | 車内データ中継装置、車両制御システム | |
CN102866971B (zh) | 传输数据的装置、系统及方法 | |
EP2871814B1 (en) | Apparatus, method and system for hardware-based filtering in a cross-domain infrastructure | |
JP4410661B2 (ja) | 分散制御システム | |
US20160330281A1 (en) | Systems and methods to improve read/write performance in object storage applications | |
US11228488B2 (en) | Software implementation of network switch/router | |
US7809875B2 (en) | Method and system for secure communication between processor partitions | |
CN110399271B (zh) | 日志处理设备、方法、电子设备及计算机可读存储介质 | |
US20150067148A1 (en) | Automotive open system architecture (autosar)-based communication method and communication apparatus thereof | |
CN110399272B (zh) | 日志处理设备、方法、电子设备及计算机可读存储介质 | |
CN110413585B (zh) | 日志处理设备、方法、电子设备及计算机可读存储介质 | |
US10303627B2 (en) | Hardware queue manager with water marking | |
WO2017098643A1 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
KR101988482B1 (ko) | 전술 데이터 링크 시스템, 전술 데이터 링크 시스템의 데이터 처리 장치 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN104094558A (zh) | 多线程化分组处理 | |
US20130111079A1 (en) | Data processing device, chain and method, and corresponding computer program | |
US8392621B2 (en) | Managing dataflow in a temporary memory | |
US20140281091A1 (en) | Method and apparatus for identifying cause of interrupt | |
EP4109264A1 (en) | Information processing apparatus, information processing program, and method for processing information | |
CN108363618A (zh) | 一种进程处理的方法和装置 | |
JP4784838B2 (ja) | 分配装置、通信システム及び通信方法 | |
US20200065108A1 (en) | Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines | |
CN107087010B (zh) | 中间数据传输方法及系统、分布式系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |