CN111475202A - 基于异构多处理系统的核间通信方法及系统 - Google Patents
基于异构多处理系统的核间通信方法及系统 Download PDFInfo
- Publication number
- CN111475202A CN111475202A CN202010243471.0A CN202010243471A CN111475202A CN 111475202 A CN111475202 A CN 111475202A CN 202010243471 A CN202010243471 A CN 202010243471A CN 111475202 A CN111475202 A CN 111475202A
- Authority
- CN
- China
- Prior art keywords
- processor core
- memory block
- common memory
- message
- communication link
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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/30098—Register arrangements
-
- 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/544—Buffers; Shared memory; Pipes
Abstract
本发明提供了基于异构多处理系统的核间通信方法及系统,对共有内存进行分块,每一对处理器内核在传输消息时使用其中的一个共有内存块,其它应用程序不能使用该共有内存块。发送端处理器内核将需要发送的消息存储至一个共有内存块中,并向接收端处理器内核通知该共有内存块的定位信息,以使接收端处理器内核从该共有内存块中读取该消息,该共有内存块中只有该接收端需要接收的消息,因此,接收端处理器内核从该共有内存块中读取的消息就是需要接收的消息。所以接收端处理器内核不需要将共有内存块中的数据拷贝到本地进行筛选后再进行处理,因此,提高了各个处理器内核之间的处理效率,同时,也降低了处理器内核处理数据所占用的系统资源。
Description
技术领域
本发明属于车载通信技术领域,尤其涉及一种基于异构多处理系统的核间通信方法及系统。
背景技术
近年来,随着处理器技术的飞速发展,多核处理器的应用越来越广泛,基于多核处理器的系统越来越多。异构多处理系统由不同类型的多个单核处理器,或者一个多核处理器构成。核间通信是指多个处理器内核之间的通信。
多个处理器内核能够提高系统的处理性能,因此,为了提高车载的远程通信模块(Telematics Box,T-Box)的智能性和实时性,越来越多的T-Box采用多核处理器。其中,T-Box是汽车上采集、处理数据及与云端后台进行数据交互的核心模块,可以采集汽车上CAN报文等重要信息,并将信息打包上传给云端后台,后台也可以通过远程下发指令给Tbox,控制汽车的某些行为,例如空调控制。目前,T-Box常用的核间通信方案是:发送端将数据存储到共有内存,接收端将共有内存中的全部数据拷贝到接收端本地存储空间内,然后再从中筛选出发送端发送给接收端的数据并对数据进行处理。这种方案需要多次将数据从共有内存中拷贝到接收端的本地存储空间内,多次的拷贝动作造成系统资源浪费,而且,接收端拷贝到本地的数据量大,因此降低了数据处理效率。
发明内容
有鉴于此,本发明的目的在于提供一种基于异构多处理系统的核间通信方法及系统,以解决传统的核间通信方案在进行核间通信时需要进行多次拷贝数据导致系统资源浪费以及数据处理效率低的技术问题,其公开的技术方案如下:
第一方面,本发明提供了一种基于异构多处理系统的核间通信方法,应用于包含至少两个处理器内核的处理器中,所述方法包括:
第一处理器内核请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中,其中,共有内存块是将所述异构多处理系统的共有内存进行划分成多个内存块得到;
所述第一处理器内核只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息;
所述第二处理器内核根据所述共有内存块的定位信息,从所述定位信息对应的共有内存块中读取所述应用消息报文,并直接对所述应用消息报文进行相应的处理。
可选地,所述应用消息报文包括多种不同类型,且不同类型的应用消息报文的优先级不同;所述方法还包括:
当所述第一处理器内核需要发送多个应用消息报文时,按照各个应用消息报文的优先级由大到小的顺序逐个触发对应的处理器内核的接收中断。
可选地,所述应用消息报文的类型包括:创建/销毁通信链路报文、注册报文、CAN数据报文和故障报文,其中,所述故障报文的优先级最高。
可选地,每个共有内存块具有一个唯一标识,且每个处理器内核中记录每个共有内存块的唯一标识及对应的地址;且建立有独立通信链路的两个处理器内核配置有相应的指定寄存器;
所述第一处理器内核只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息的过程,包括:
所述第一处理器内核判断自身与所述第二处理器内核之间是否建立有独立的通信链路;
当确定所述第一处理器内核与所述第二处理器内核之间建立有独立的通信链路后,触发所述第二处理器内核的接收中断,以及,将所分配的共有内存块的唯一标识写入指定寄存器中,以使所述第二处理器内核在接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取所述共有内存块的唯一标识。
可选地,两个处理器内核之间建立独立的通信链路的过程如下:
第一处理器内核对共有内存进行初始化,并触发预先设置的与所述第一处理器内核具有通信关系的第二处理器内核的预设中断;
所述第二处理器内核接收到所述第一处理器内核触发的所述预设中断后,对所述共有内存进行初始化,并触发所述第一处理器内核的预设中断;
所述第一处理器内核接收到所述第二处理器内核触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中;
所述第一处理器内核将写入所述创建通信链路报文的共有内存块对应的唯一标识写入所述第一处理器内核对应的指定寄存器中,并触发所述第二处理器内核的接收中断;
所述第二处理器内核接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取的共有内存块的唯一标识,并从所读取的唯一标识对应的共有内存块中读取创建通信链路报文;
所述第二处理器内核依据所述创建通信链路报文中的通信链路信息创建自身与所述第一处理器内核之间独立的通信链路。
可选地,在所述第一处理器内核与所述第二处理器内核之间独立的通信链路创建成功后,所述第二处理器内核向所述第一处理器内核发起注册的过程如下:
所述第二处理器内核请求分配共有内存块,并将注册报文写入所分配的共有内存块中,所述注册报文用于请求在所述第一处理器内核注册第二处理器内核的信息;
所述第二处理器内核触发所述第一处理器内核的接收中断,并将使用的共有内存块的唯一标识写入所述第二处理器内核对应的指定寄存器中;
所述第一处理器内核接收到所述第二处理器内核触发的接收中断后,从所述指定寄存器中读取共有内存块的唯一标识,并读取该唯一标识对应的共有内存块中存储的注册报文;
所述第一处理器内核从所述注册报文中获取所述第二处理器内核的唯一标识并更新至注册信息链表中,所述注册信息链表用于存储与所述第一处理器内核已经建立独立的通信链路的处理器内核的信息;
所述第一处理器内核向所述第二处理器内核返回注册结果报文,以使所述第一处理器内核只与已经注册的处理器内核进行通信。
第二方面,本发明还提供了一种异构多处理系统,包括第一处理器内核和第二处理器内核;
所述第一处理器内核,用于请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中,只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息,其中,共有内存块是将所述异构多处理系统的共有内存进行划分成多个内存块得到;
所述第二处理器内核,用于根据所述共有内存块的定位信息,从所述定位信息对应的共有内存块中读取所述应用消息报文,并直接对所述应用消息报文进行相应的处理。
可选地,所述应用消息报文包括多种不同类型,且不同类型的应用消息报文的优先级不同;
所述第一处理器内核,还用于当所述第一处理器内核需要发送多个应用消息报文时,按照各个应用消息报文的优先级由大到小的顺序逐个触发对应的处理器内核的接收中断。
可选地,每个共有内存块具有一个唯一标识,且每个处理器内核中记录每个共有内存块的唯一标识及对应的地址;且建立有独立通信链路的两个处理器内核配置有相应的指定寄存器;
所述第一处理器内核用于只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息的过程时具体用于:
判断自身与所述第二处理器内核之间是否建立有独立的通信链路;
当确定自身与所述第二处理器内核之间建立有独立的通信链路后,触发所述第二处理器内核的接收中断,以及,将所分配的共有内存块的唯一标识写入指定寄存器中,以使所述第二处理器内核在接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取所述共有内存块的唯一标识。
可选地,所述第一处理器内核和所述第二处理器内核之间建立独立的通信链路时具体用于:
所述第一处理器内核对共有内存进行初始化,并触发预先设置的与所述第一处理器内核具有通信关系的第二处理器内核的预设中断;
所述第二处理器内核接收到所述第一处理器内核触发的所述预设中断后,对所述共有内存进行初始化,并触发所述第一处理器内核的预设中断;
所述第一处理器内核接收到所述第二处理器内核触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中;
所述第一处理器内核将写入所述创建通信链路报文的共有内存块对应的唯一标识写入所述第一处理器内核对应的指定寄存器中,并触发所述第二处理器内核的接收中断;
所述第二处理器内核接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取的共有内存块的唯一标识,并从所读取的唯一标识对应的共有内存块中读取创建通信链路报文;
所述第二处理器内核依据所述创建通信链路报文中的通信链路信息创建自身与所述第一处理器内核之间独立的通信链路。
本实施例提供的基于异构多处理系统的核间通信方法,对共有内存进行分块,每一对处理器内核在传输消息时使用其中的一个共有内存块,其它应用程序不能使用该共有内存块。发送端的处理器内核将需要发送的消息存储至一个共有内存块中,并向接收端的处理器内核通知该共有内存块的定位信息,以使接收端的处理器内核从该共有内存块中读取该消息,该共有内存块中只有该接收端需要接收的消息,因此,接收端的处理器内核从该共有内存块中读取的消息就是需要接收的消息。所以接收端处理器内核不需要将共有内存块中的数据拷贝到本地进行筛选后再进行处理,因此,提高了各个处理器内核之间的处理效率,同时,也降低了处理器内核处理数据所占用的系统资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种异构多处理系统的结构示意图;
图2是本发明实施例提供的一种基于异构多处理系统的核间通信方法的流程图;
图3是本发明实施例提供的一种两个处理器内核之间建立通信链路过程的流程图;
图4是本发明实施例提供的另一种异构多处理系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本发明实施例提供的一种异构多处理系统的结构示意图,该系统至少包括两个处理器内核,本实施例以四个处理器内核为例进行说明,如图1所示,异构多处理系统包括四个处理器内核分别是处理器内核1~处理器内核4。
需要通信的任意两个处理器内核之间建立有独立的通信链路,例如,处理器内核1分别与处理器内核2、3、4之间建立有通信链路1、通信链路2、通信链路3。例如,处理器内核1与处理器内核2通过通信链路1进行通信。
其中,建立连接的两个处理器内核中的一个为主处理器内核,另一个为从处理器内核。同一个处理器内核在不同的通信链路中可以作为主处理器内核也可以是从处理器内核,具体可以根据实际需求设定。
为了减少核间通信的复杂度,各个处理器内核预先约定用于通信连接建立过程所使用的预设中断,同时,预先约定通信时所使用的共有内存的信息,如共有内存的首地址和大小等。
其中,预设中断可以根据不同的处理器内核自由设定。共有内存用于数据传输。
核间通信所使用的报文包括报文头及报文内容;报文头包括源地址、目的地址、报文长度。其中,报文长度为报文内容占用的字节数。
为了区分各个处理器内核,每个处理器内核具有唯一标识,源地址即发送该报文的处理器内核的唯一标识,目的地址即接收该报文的处理器内核的唯一标识。
报文内容的格式依消息类型不同而不同,以车载T-Box(Telematics Box,远程通信盒子)系统为例,该系统中的核间通信报文的消息类型主要包括:创建/销毁通信链路报文、注册报文、CAN数据报文、故障报文等。
其中,注册报文与CAN数据报文主要用于传输应用信息,这两类报文的报文头主要包括category、major、minor、type、command、reCode、timeStamp、length。
其中,category为该报文的类别,主要包括车辆信息、传感器信息等;
major、minor为版本号信息,包括主版本号及次版本号;
type用于标识当前报文的类型,包括请求报文、应答报文、通知报文,其中,通知报文无需接收方回复,仅用于通知消息;
Command为当前报文命令,主要有注册、注销、电源控制、车辆信息等;
reCode为应答结果,是对请求报文的回复,仅在应答报文中有效,其他报文该字段无效;
timeStamp用于标记发送当前报文的时间戳;
length表示报文内容占用的字节数。
下面将结合图2对本发明提供的核间通信方法进行详细介绍,本实施例以异构多核系统包括两个处理器内核为例进行说明,需要进行通信的处理器内核之间建立有独立的通信链路之后,两个处理器内核之间即可进行核间通信,如图2所示,基于异构处理系统的核间通信方法主要包括:
S110,第一处理器内核请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中。
在系统进行初始化时,各个处理器内核初始化共有内存,即将指定的共有内存划分为发送内存空间和接收内存空间,并将发送/接收内存空间划分为多个共有内存块,为每个共有内存块创建唯一标识,并以链表的形式管理共有内存块。
当一个处理器(本实施例中即第一处理器内核)内核需要将应用数据发送给其他处理器内核(本实施例中即第二处理器内核)进行处理的情况下,第一处理器内核需要先申请共有内存块,记录该共有内存块的信息(如,共有内存块的唯一标识),并将该共有内存块标记为已使用状态,避免多个程序使用同一个共有内存块,导致数据被破坏。然后,将要传输的应用数据写入该共有内存块中。
在本发明的一个实施例中,以CAN数据报文为例说明,第一处理器内核将接收到的外部CAN数据写入为其分配的共有内存块中,当该共有内存块中的数据量达到一定的阈值(该阈值可以根据实际情况自由设定)后,将CAN数据封装成CAN数据报文,报文类型为请求、报文命令为CAN数据、报文长度为CAN数据占用的字节数。
S120,第一处理器内核只触发与第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向第二处理器内核通知所分配的共有内存块的定位信息。
由于需要通信的两个处理器内核之间建立有独立的通信链路,即当第一处理器内核向第二处理器内核发送应用消息时,只触发第二处理器内核的接收中断。
在本发明的一个应用场景中,第一处理器内核将自己所使用的共有内存块的唯一标识写入指定的寄存器中,第二处理器内核可以从该指定寄存器中读取共有内存块的唯一标识。
其中,为建立有独立的通信链路的两个处理器内核配置有相应的寄存器,这两个处理器内核都可以对该寄存器进行读写操作。将共有内存块的唯一标识写入指定寄存器中能够提高处理器内核的读取速度,提高数据处理的速度。
第二处理器内核根据该共有内存块的唯一标识能够唯一确定该共有内存块对应的具体存储空间。
S130,第二处理器内核接收到第一处理器内核触发的接收中断后,获取第一处理器内核通知的共有内存块的定位信息,从该定位信息对应的共有内存块中读取应用消息报文,并直接处理该应用消息报文。
在本发明的一个应用场景中,发送端处理器内核将其所使用的共有内存块的定位信息写入指定寄存器中,此种应用场景下,接收端处理器内核则从指定寄存器中读取共有内存块的定位信息(如共有内存块的唯一标识),并依据定位信息确定共有内存块对应的存储空间,然后,从该存储空间中读取发送端处理器内核所存储的应用消息报文,并直接处理该应用消息报文。接收端处理器内核从共有内存块中成功读取应用消息报文后,向发送端处理器内核回复应答报文。
以CAN数据报文为例,接收端的处理器内核从共有内存块中读取CAN数据报文后,直接对该CAN数据报文进行相应的处理。接收端的处理器内核从共有内存块中成功读取CAN数据报文后,向发送端的处理器内核回复应答报文,报文类型为应答类型、报文命令为CAN数据,reCode为接收成功。
需要说明的是,两个处理器内核之间传输的所有类型的报文都需要先写入申请的共有内存块中,然后,再触发接收端处理器内核的中断,以使接收端处理器内核接收报文。
在本发明的另一个实施例中,为了保证重要数据传输及处理的实时性,将不同类型的报文赋予不同的优先级。当同时有多个报文需要发送时,按照优先级由高到低的顺序发送至接收端处理器内核,依此保障重要数据报文能够及时被接收并处理。
例如,在T-Box中可能涉及的报文类型包括:创建/销毁通信链路报文、注册报文、CAN数据报文和故障报文,例如,为了保证系统通信的有效性,可以将故障报文的优先级设置为最高,CAN数据报文的优先级最低。
此外,多个处理器内核之间的数据通信方式与两个处理器内核的通信方式相同,此处不再赘述。
由上述内容可知,本实施例提供的基于异构多处理系统的核间通信方法,发送端处理器内核在向接收端处理器内核发送消息时,只触发需要接收该消息的处理器内核的接收中断,其他处理器内核不会收到此接收中断。因此,接收到中断的处理器内核从发送端处理器内核指定的共有内存块中读取的数据中不包括发送给其他处理器内核的消息,所以接收端能够直接对读取的应用消息进行响应的处理,而不需要将共有内存块中的数据拷贝到本地进行筛选后再进行处理,因此,提高了各个处理器内核之间的处理效率,同时,也降低了处理器内核处理数据所占用的系统资源。
下面将详细介绍两个处理器内核之间进行数据通信之前的准备工作,如图3所示,两个处理器内核之间建立链路的过程如下:
S210,第一处理器内核初始化共有内存。
第一处理器内核将指定的共有内存划分为发送内存空间和接收内存空间,并将发送/接收内存空间划分为多个共有内存块,为每个共有内存块创建唯一标识,并以链表的形式管理共有内存块。
其中,在初始化程序中已经设置好共有内存的初始化方式,以保证系统中的所有处理器内核都按照相同的方式初始化共有内存。
S220,初始化完成后,第一处理器内核触发预先设置的具有通信关系的第二处理器内核的预设中断,开始建立连接。
预设中断是为各个处理器内核预先配置的特有的中断,该预设中断通过硬件触发方式,效率更高。
S230,第二处理器内核接收到第一处理器内核触发的预设中断后,按照相同的初始化方式对共有内存进行初始化,并触发第一处理器内核的预设中断。
S240,第一处理器内核接收到第二处理器内核触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中。
第一处理器内核接收到第二处理器内核触发的预设中断后,表明第一处理器内核与第二处理器内核完成连接过程,然后,开始创建通信链路:首先第一处理器内核请求分配共有内存块,记录所分配的共有内存块的定位信息即共有内存块的地址和唯一标识,并将共有内存块记录为已用状态,避免多个程序使用同一个内存块,造成数据被破坏。然后,第一处理器内核打包创建通信链路报文并将该报文写入分配的共有内存块中。其中,创建通信链路报文的报文内容为链路名称、第一处理器内核的地址、信息标志位,其中,信息标志位为创建链路类型。
S250,第一处理器内核将写入创建通信链路报文的共有内存块对应的唯一标识写入第一处理器内核对应的指定寄存器中,并触发第二处理器内核的接收中断。
第一处理器内核将创建通信链路报文写入共有内存块中后,将该共有内存块的唯一标识写入指定寄存器中,同时,触发第二处理器内核的接收中断。
S260,第二处理器内核接收到第一处理器内核触发的接收中断后,从指定寄存器中读取共有内存块的唯一标识,从所读取的唯一标识对应的共有内存块中读取创建通信链路报文,并依据报文中的信息创建相应的通信链路。
第二处理器内核接收到接收中断后,读取指定寄存器中的共有内存块的唯一标识,并依据该共有内存块的唯一标识确定第一处理器内核所使用的共有内存块的地址,进一步从该共有内存块中读取创建通信链路报文,并将该共有内存块标记为未使用状态,以供其他应用使用。然后,根据创建通信链路报文中的信息,如链路名称、第一处理器内核的地址创建相应的通信链路。
S270,第二处理器内核请求分配共有内存块,将注册报文写入所分配的共有内存块中,并将该共有内存块的唯一标识写入指定寄存器中,并触发第一处理器内核的接收中断。
第一处理器内核与第二处理器内核之间的通信链路创建完成后,第二处理器内核向第一处理器内核发送注册报文,注册报文用于请求在第一处理器内核注册第二处理器内核的信息,报文内容为空。报文类型为请求,报文命令为注册。
S280,第一处理器内核接收到第二处理器内核触发的接收中断后,从指定寄存器中读取共有内存块的唯一标识,并读取该唯一标识对应的共有内存块中存储的注册报文。
S290,第一处理器内核从注册报文中获取第二处理器内核的唯一标识并更新至注册信息链表中。
注册信息链表用于存储与第一处理器内核已经建立独立的通信链路的处理器内核的信息。
S2100,第一处理器内核向第二处理器内核返回注册结果报文,以使第一处理器内核只与已经注册的处理器内核进行通信。
注册结果报文的报文类型为应答、报文命令为注册,reCode为注册成功,报文内容为注册时间戳,即第一处理器内核的当前时间。
其中,S270~S2100是第二处理器内核向第一处理器内核注册的过程。
至此第一处理器内核与第二处理器内核之间完成了数据通信的前期准备工作,然后,两个处理器内核之间可以进行数据通信。
当第一处理器内核需要向第二处理器内核发送其他应用数据时,第一处理器内核主动发送请求报文,第二处理器内核回复应答报文,即图1所示实施例所示的过程,此处不再赘述。反之,若第二处理器内核需要向第一处理器内核发送其他应用数据时,第二处理器内核主动发送请求报文,第一处理器内核回复应答报文。
本实施例提供的处理器内核之间建立通信链路的过程,各个处理器内核之间按照预先配置的初始化方式对共有内存进行初始化,需要进行通信的两个处理器内核之间按照约定的预设中断建立连接。两个处理器内核之间完成连接过程后,创建双方之间独立的通信链路,并在通信链路创建完成后,接收创建通信链路请求的处理器内核向发起请求的处理器内核发起注册请求完成注册过程。只有完成注册的处理器内核之间才能进行数据通信,从而保证处理器内核间使用各自的通信链路,避免数据并发处理带来的复杂性,最终提高了核间通信效率。
相应于上述的基于异构多处理系统的核间通信方法实施例,本发明还提供了异构多处理系统。
下面以包含两个处理器内核的异构多处理系统为例说明的核间通信过程,多于两个处理器内核的异构多处理系统的核间通信过程与两个处理器内核之间的通信过程相同,此处不再赘述。
请参见图4,示出了本发明实施例提供的一种异构多处理系统的结构示意图,该系统主要包括第一处理器内核110和第二处理器内核120。
第一处理器内核110,用于请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中,只触发与第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向第二处理器内核通知所分配的共有内存块的定位信息。
其中,共有内存块是将异构多处理系统的共有内存进行划分成多个内存块得到。
在本发明的一个实施例中,每个共有内存块具有一个唯一标识,且每个处理器内核中记录每个共有内存块的唯一标识及对应的地址;且建立有独立通信链路的两个处理器内核配置有相应的指定寄存器。
第一处理器内核110用于只触发与第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向第二处理器内核通知所分配的共有内存块的定位信息的过程时具体用于:
判断自身与第二处理器内核之间是否建立有独立的通信链路;
当确定自身与第二处理器内核之间建立有独立的通信链路后,触发第二处理器内核的接收中断,以及,将所分配的共有内存块的唯一标识写入指定寄存器中,以使第二处理器内核在接收到第一处理器内核触发的接收中断后,从指定寄存器中读取共有内存块的唯一标识。
第二处理器内核120,用于根据共有内存块的定位信息,从定位信息对应的共有内存块中读取应用消息报文,并直接对应用消息报文进行相应的处理。
在本发明的一个应用场景中,应用消息报文包括多种不同类型,且不同类型的应用消息报文的优先级不同。例如,应用消息报文的类型包括:创建/销毁通信链路报文、注册报文、CAN数据报文和故障报文,其中,故障报文的优先级最高。
此种应用场景下,第一处理器内核110,还用于当需要发送多个应用消息报文时,按照各个应用消息报文的优先级由大到小的顺序逐个触发对应的处理器内核的接收中断。
在本发明的一个实施例中,第一处理器内核和第二处理器内核之间建立独立的通信链路时具体用于:
第一处理器内核110对共有内存进行初始化,并触发预先设置的与第一处理器内核具有通信关系的第二处理器内核的预设中断。
第二处理器内核120接收到第一处理器内核110触发的预设中断后,对共有内存进行初始化,并触发第一处理器内核110的预设中断。
第一处理器内核110接收到第二处理器内核120触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中。
第一处理器内核110将写入创建通信链路报文的共有内存块对应的唯一标识写入第一处理器内核110对应的指定寄存器中,并触发第二处理器内核120的接收中断。
第二处理器内核120接收到第一处理器内核110触发的接收中断后,从指定寄存器中读取的共有内存块的唯一标识,并从所读取的唯一标识对应的共有内存块中读取创建通信链路报文。
第二处理器内核120依据创建通信链路报文中的通信链路信息创建自身与第一处理器内核110之间独立的通信链路。
在本发明的另一个实施例中,第一处理器内核110与第二处理器内核120之间独立的通信链路创建成功后,第二处理器内核120向第一处理器内核110发起注册时具体用于:
第二处理器内核120请求分配共有内存块,并将注册报文写入所分配的共有内存块中,注册报文用于请求在第一处理器内核110注册第二处理器内核120的信息;
第二处理器内核120触发第一处理器内核110的接收中断,并将使用的共有内存块的唯一标识写入第二处理器内核120对应的指定寄存器中。
第一处理器内核110接收到第二处理器内核120触发的接收中断后,从指定寄存器中读取共有内存块的唯一标识,并读取该唯一标识对应的共有内存块中存储的注册报文。
第一处理器内核110从注册报文中获取第二处理器内核120的唯一标识并更新至注册信息链表中,注册信息链表用于存储与第一处理器内核已经建立独立的通信链路的处理器内核的信息。
第一处理器内核110向第二处理器内核120返回注册结果报文,以使第一处理器内核只与已经注册的处理器内核进行通信。
本实施例提供的异构多处理系统,发送端处理器内核在向接收端处理器内核发送消息时,只触发需要接收该消息的处理器内核的接收中断,其他处理器内核不会收到此接收中断。因此,接收到中断的处理器内核从发送端处理器内核指定的共有内存块中读取的数据中不包括发送给其他处理器内核的消息,所以接收端能够直接对读取的应用消息进行响应的处理,而不需要将共有内存块中的数据拷贝到本地进行筛选后再进行处理,因此,提高了各个处理器内核之间的处理效率,同时,也降低了处理器内核处理数据所占用的系统资源。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例记载的技术特征可以相互替换或组合。每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本发明所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于异构多处理系统的核间通信方法,其特征在于,应用于包含至少两个处理器内核的处理器中,所述方法包括:
第一处理器内核请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中,其中,共有内存块是将所述异构多处理系统的共有内存进行划分成多个内存块得到;
所述第一处理器内核只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息;
所述第二处理器内核根据所述共有内存块的定位信息,从所述定位信息对应的共有内存块中读取所述应用消息报文,并直接对所述应用消息报文进行相应的处理。
2.根据权利要求1所述的方法,其特征在于,所述应用消息报文包括多种不同类型,且不同类型的应用消息报文的优先级不同;所述方法还包括:
当所述第一处理器内核需要发送多个应用消息报文时,按照各个应用消息报文的优先级由大到小的顺序逐个触发对应的处理器内核的接收中断。
3.根据权利要求2所述的方法,其特征在于,所述应用消息报文的类型包括:创建/销毁通信链路报文、注册报文、CAN数据报文和故障报文,其中,所述故障报文的优先级最高。
4.根据权利要求1-3任一项所述的方法,其特征在于,每个共有内存块具有一个唯一标识,且每个处理器内核中记录每个共有内存块的唯一标识及对应的地址;且建立有独立通信链路的两个处理器内核配置有相应的指定寄存器;
所述第一处理器内核只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息的过程,包括:
所述第一处理器内核判断自身与所述第二处理器内核之间是否建立有独立的通信链路;
当确定所述第一处理器内核与所述第二处理器内核之间建立有独立的通信链路后,触发所述第二处理器内核的接收中断,以及,将所分配的共有内存块的唯一标识写入指定寄存器中,以使所述第二处理器内核在接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取所述共有内存块的唯一标识。
5.根据权利要求1所述的方法,其特征在于,两个处理器内核之间建立独立的通信链路的过程如下:
第一处理器内核对共有内存进行初始化,并触发预先设置的与所述第一处理器内核具有通信关系的第二处理器内核的预设中断;
所述第二处理器内核接收到所述第一处理器内核触发的所述预设中断后,对所述共有内存进行初始化,并触发所述第一处理器内核的预设中断;
所述第一处理器内核接收到所述第二处理器内核触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中;
所述第一处理器内核将写入所述创建通信链路报文的共有内存块对应的唯一标识写入所述第一处理器内核对应的指定寄存器中,并触发所述第二处理器内核的接收中断;
所述第二处理器内核接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取的共有内存块的唯一标识,并从所读取的唯一标识对应的共有内存块中读取创建通信链路报文;
所述第二处理器内核依据所述创建通信链路报文中的通信链路信息创建自身与所述第一处理器内核之间独立的通信链路。
6.根据权利要求5所述的方法,其特征在于,在所述第一处理器内核与所述第二处理器内核之间独立的通信链路创建成功后,所述第二处理器内核向所述第一处理器内核发起注册的过程如下:
所述第二处理器内核请求分配共有内存块,并将注册报文写入所分配的共有内存块中,所述注册报文用于请求在所述第一处理器内核注册第二处理器内核的信息;
所述第二处理器内核触发所述第一处理器内核的接收中断,并将使用的共有内存块的唯一标识写入所述第二处理器内核对应的指定寄存器中;
所述第一处理器内核接收到所述第二处理器内核触发的接收中断后,从所述指定寄存器中读取共有内存块的唯一标识,并读取该唯一标识对应的共有内存块中存储的注册报文;
所述第一处理器内核从所述注册报文中获取所述第二处理器内核的唯一标识并更新至注册信息链表中,所述注册信息链表用于存储与所述第一处理器内核已经建立独立的通信链路的处理器内核的信息;
所述第一处理器内核向所述第二处理器内核返回注册结果报文,以使所述第一处理器内核只与已经注册的处理器内核进行通信。
7.一种异构多处理系统,其特征在于,包括第一处理器内核和第二处理器内核;
所述第一处理器内核,用于请求分配共有内存块,并将待传输的应用消息报文写入所分配的共有内存块中,只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息,其中,共有内存块是将所述异构多处理系统的共有内存进行划分成多个内存块得到;
所述第二处理器内核,用于根据所述共有内存块的定位信息,从所述定位信息对应的共有内存块中读取所述应用消息报文,并直接对所述应用消息报文进行相应的处理。
8.根据权利要求7所述的系统,其特征在于,所述应用消息报文包括多种不同类型,且不同类型的应用消息报文的优先级不同;
所述第一处理器内核,还用于当所述第一处理器内核需要发送多个应用消息报文时,按照各个应用消息报文的优先级由大到小的顺序逐个触发对应的处理器内核的接收中断。
9.根据权利要求7或8所述的系统,其特征在于,每个共有内存块具有一个唯一标识,且每个处理器内核中记录每个共有内存块的唯一标识及对应的地址;且建立有独立通信链路的两个处理器内核配置有相应的指定寄存器;
所述第一处理器内核用于只触发与所述第一处理器内核建立有独立的通信链路的第二处理器内核的接收中断,并向所述第二处理器内核通知所分配的共有内存块的定位信息的过程时具体用于:
判断自身与所述第二处理器内核之间是否建立有独立的通信链路;
当确定自身与所述第二处理器内核之间建立有独立的通信链路后,触发所述第二处理器内核的接收中断,以及,将所分配的共有内存块的唯一标识写入指定寄存器中,以使所述第二处理器内核在接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取所述共有内存块的唯一标识。
10.根据权利要求7所述的系统,其特征在于,所述第一处理器内核和所述第二处理器内核之间建立独立的通信链路时具体用于:
所述第一处理器内核对共有内存进行初始化,并触发预先设置的与所述第一处理器内核具有通信关系的第二处理器内核的预设中断;
所述第二处理器内核接收到所述第一处理器内核触发的所述预设中断后,对所述共有内存进行初始化,并触发所述第一处理器内核的预设中断;
所述第一处理器内核接收到所述第二处理器内核触发的预设中断后,请求分配共有内存块,将生成的创建通信链路报文写入所分配的共有内存块中;
所述第一处理器内核将写入所述创建通信链路报文的共有内存块对应的唯一标识写入所述第一处理器内核对应的指定寄存器中,并触发所述第二处理器内核的接收中断;
所述第二处理器内核接收到所述第一处理器内核触发的接收中断后,从所述指定寄存器中读取的共有内存块的唯一标识,并从所读取的唯一标识对应的共有内存块中读取创建通信链路报文;
所述第二处理器内核依据所述创建通信链路报文中的通信链路信息创建自身与所述第一处理器内核之间独立的通信链路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010243471.0A CN111475202A (zh) | 2020-03-31 | 2020-03-31 | 基于异构多处理系统的核间通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010243471.0A CN111475202A (zh) | 2020-03-31 | 2020-03-31 | 基于异构多处理系统的核间通信方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111475202A true CN111475202A (zh) | 2020-07-31 |
Family
ID=71750292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010243471.0A Pending CN111475202A (zh) | 2020-03-31 | 2020-03-31 | 基于异构多处理系统的核间通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475202A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111935497A (zh) * | 2020-09-18 | 2020-11-13 | 武汉中科通达高新技术股份有限公司 | 一种用于交警系统的视频流管理方法和数据服务器 |
CN112667420A (zh) * | 2021-01-18 | 2021-04-16 | 科东(广州)软件科技有限公司 | 实现异构系统内部通信的方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
CN101354693A (zh) * | 2008-09-11 | 2009-01-28 | 重庆邮电大学 | 一种异构多核处理器的核间通信调度系统及方法 |
CN103207782A (zh) * | 2013-03-27 | 2013-07-17 | 北京航空航天大学 | 基于multi-kernel MOS 的分区系统构建方法 |
CN103729329A (zh) * | 2012-10-12 | 2014-04-16 | 深圳市中兴微电子技术有限公司 | 核间通信装置及方法 |
CN106648896A (zh) * | 2016-12-26 | 2017-05-10 | 北京四方继保自动化股份有限公司 | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 |
-
2020
- 2020-03-31 CN CN202010243471.0A patent/CN111475202A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
CN101354693A (zh) * | 2008-09-11 | 2009-01-28 | 重庆邮电大学 | 一种异构多核处理器的核间通信调度系统及方法 |
CN103729329A (zh) * | 2012-10-12 | 2014-04-16 | 深圳市中兴微电子技术有限公司 | 核间通信装置及方法 |
CN103207782A (zh) * | 2013-03-27 | 2013-07-17 | 北京航空航天大学 | 基于multi-kernel MOS 的分区系统构建方法 |
CN106648896A (zh) * | 2016-12-26 | 2017-05-10 | 北京四方继保自动化股份有限公司 | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111935497A (zh) * | 2020-09-18 | 2020-11-13 | 武汉中科通达高新技术股份有限公司 | 一种用于交警系统的视频流管理方法和数据服务器 |
CN112667420A (zh) * | 2021-01-18 | 2021-04-16 | 科东(广州)软件科技有限公司 | 实现异构系统内部通信的方法、装置、设备及存储介质 |
CN112667420B (zh) * | 2021-01-18 | 2022-03-25 | 科东(广州)软件科技有限公司 | 实现异构系统内部通信的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
CN112492063B (zh) | 一种ip地址池分配、申请方法、装置、设备及介质 | |
CN113326155B (zh) | 一种信息处理方法、装置、系统和存储介质 | |
CN111475202A (zh) | 基于异构多处理系统的核间通信方法及系统 | |
EP3441884A1 (en) | Method for managing translation lookaside buffer and multi-core processor | |
US9069592B2 (en) | Generic transport layer mechanism for firmware communication | |
CN113891396B (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
CN114595186B (zh) | 一种多核处理器的核间通信方法、通信装置 | |
CN111190854A (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
CN108304270B (zh) | 一种通信方法、设备及计算机可读存储介质 | |
WO2017032152A1 (zh) | 将数据写入存储设备的方法及存储设备 | |
CN112256460A (zh) | 进程间通信方法、装置、电子设备及计算机可读存储介质 | |
CN113821309B (zh) | 一种微内核虚拟机间的通信方法、装置、设备及存储介质 | |
CN108540408B (zh) | 一种基于Openstack的分布式虚拟交换机的管理方法及系统 | |
CN113590362A (zh) | 进程间消息处理方法、装置、电子设备及存储介质 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN111404986B (zh) | 数据传输处理方法、设备和存储介质 | |
KR100653178B1 (ko) | 전송제어프로토콜 오프로드 엔진 기반의 전송제어프로토콜전송정보 생성 및 관리 장치 및 그 방법 | |
CN109614345B (zh) | 一种协议层之间通信的内存管理方法及装置 | |
CN115174472B (zh) | 一种消息转发处理方法及相关装置 | |
CN108595270B (zh) | 一种内存资源的回收方法及装置 | |
CN112543154B (zh) | 一种数据传输方法及装置 | |
CN111651282B (zh) | 报文处理方法、报文处理装置及电子设备 | |
CN114860551B (zh) | 确定指令执行状态的方法、装置、设备及多核处理器 | |
CN114422295B (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 | ||
CB02 | Change of applicant information |
Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020 Applicant after: Beijing Jingwei Hengrun Technology Co., Ltd Address before: 8 / F, block B, No. 11, Anxiang Beili, Chaoyang District, Beijing 100101 Applicant before: Beijing Jingwei HiRain Technologies Co.,Ltd. |
|
CB02 | Change of applicant information |