CN113760559A - 一种双核通信方法和电子设备 - Google Patents

一种双核通信方法和电子设备 Download PDF

Info

Publication number
CN113760559A
CN113760559A CN202010501538.6A CN202010501538A CN113760559A CN 113760559 A CN113760559 A CN 113760559A CN 202010501538 A CN202010501538 A CN 202010501538A CN 113760559 A CN113760559 A CN 113760559A
Authority
CN
China
Prior art keywords
data
processor
transmitted
ring
data structure
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
Application number
CN202010501538.6A
Other languages
English (en)
Inventor
孙海建
尹万宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Potevio Information Technology Co Ltd
Original Assignee
Potevio Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Potevio Information Technology Co Ltd filed Critical Potevio Information Technology Co Ltd
Priority to CN202010501538.6A priority Critical patent/CN113760559A/zh
Publication of CN113760559A publication Critical patent/CN113760559A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种双核通信方法和电子设备。所述方法包括:根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中;发送中断指令给第二处理器;若所述第二处理器响应于所述中断指令接收所述共享内存中的所述待传输数据,则开启接收中断任务等待所述第二处理器发送的待传输数据。通过上述技术方案,能够有效提高两个处理器的利用率,满足对小数据量时数据通信的实时性需求,又解决了大数据量时接收数据CPU占用率高的问题,提高双核CPU核间数据交互的效率。

Description

一种双核通信方法和电子设备
技术领域
本发明实施例涉及嵌入式系统技术领域,尤其涉及一种双核通信方法和电子设备。
背景技术
在嵌入式系统中,嵌入式处理器毫无疑问是核心器件。不同的CPU核有着不同的架构因而具有不同的特性,双核嵌入式处理器对于接收到的数据往往是一个CPU在其内部空间对其进行处理后,另一个CPU需要将处理后的数据拷贝到自己的私有内存中进行下一步的处理,对于数据的处理讲求时效性。因此不同CPU核心之间信息与数据交互的速率等是影响嵌入式系统性能的一个重要因素。
目前多核嵌入式处理器核间通信多采用共享内存的方式,即在物理内存空间中开辟出一块内存空间,不同的CPU核或通过消息队列,或通过环形队列维护对共享内存的操作,发送接收数据时多采用互锁方式、消息队列方式、定时查询的方式等。无论采用哪种方式都没有很好的发挥CPU与内存的利用率,浪费硬件资源,互锁方式或者定时查询方式对数据的传递有一定的延时性。
发明内容
为了解决上述问题,本发明实施例提供一种双核通信方法和电子设备,用以实现双核处理器高效、快速的实现各种数据量传输的需求。
第一方面,本发明实施例提供一种双核通信方法,应用于第一处理器,所述方法包括:
应用于第一处理器,所述方法包括:
根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中;
发送中断指令给第二处理器;
若所述第二处理器响应于所述中断指令接收所述共享内存中的所述待传输数据,则开启接收中断任务等待所述第二处理器发送的待传输数据。
可选地,查询所述共享内存中的所述第一环形数据结构的存储空间;
若所述第一环形数据结构的存储空间满足第一阈值,则根据预设轮询周期发送所述待传输数据包;
若所述第一环形数据结构的存储空间不满足所述第一阈值,则向所述第二处理器发送处理请求。
可选地,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据包填充到所述第一环形数据结构中的所述第一数据环中,并更新所述第一数据头。
可选地,若所述待传输数据包的数量大于所述第一数据环的存储空间,则发送中断指令给所述第二处理器;或,在所述轮询周期内将全部所述待传输数据包发送给了所述第一数据环,发送中断指令给所述第二处理器。
第二方面,本发明实施例提供一种双核通信方法,应用于第二处理器,所述方法包括:
响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;所述第一环形数据结构位于共享内存中;
根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中;
开启接收中断任务等待所述第一处理器发送的待传输数据。
可选地,查询所述第二私有内存的存储空间;
若所述第二私有内存的存储空间满足所述第一环形数据结构中的待传输数据包的数量,则接收所述待传输数据包。
可选地,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将所述第一环形数据结构中第一数据环中的待传输数据包存储到所述第二处理器的第二私有内存中,并更新所述第一数据头。
第三方面,本发明实施例提供一种双核通信方法,应用于共享内存,所述方法包括:
根据发送请求,确定第一处理器和对应的第一环形数据结构;
接收第一处理器按照轮询周期发送的待传输数据,并将所述待传输数据存储到第一环形数据结构中;
在第二处理器响应于所述第一处理器发出中断指令启动轮询接收后,将所述第一环形数据结构中的所述待传输数据发送给所述第二处理器;
可选地,将所述待传输数据中的数据存储到所述第一环形数据结构中的数据环中;
更新所述第一环形数据结构中的数据头。
第四方面,本发明实施例提供一种双核通信电子设备,包括
第一处理器,根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存;发送中断指令给第二处理器;
共享内存,将所述待传输数据填充到第一环形数据结构中;将所述待传输数据中的数据存储到所述第一环形数据结构中的数据环中;更新所述第一环形数据结构中的数据头;
第二处理器,响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中。
本申请实施例中,本申请采用了一种环形数据结构来进行双核CPU核间的共享内存通信,也就是第一处理器与第二处理器之间进行数据传输,并在此共享内存的基础上采用中断与轮询结合的双任务处理方式能够有效提高两个处理器的利用率,满足对小数据量时数据通信的实时性需求,又解决了大数据量时接收数据CPU占用率高的问题,提高双核CPU核间数据交互的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种双核通信过程的示意图;
图2为本申请实施例提供的一种环形数据结构示意图;
图3为本申请实施例提供的一种双核通信方法的流程示意图;
图4为本申请实施例提供的另一种双核通信方法的流程示意图;
图5为本申请实施例提供的再一种双核通信方法的流程示意图;
图6为本申请实施例提供的一种双核通信的装置的结构示意图;
图7为本申请实施例提供的另一种双核通信的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
图1为本申请实施例提供的一种双核通信过程的示意图,如图1所示,包括:
第一处理器CPU0和第二处理器CPU1,每个处理器都有一个自己的私有内存,为了便于区分,第一处理器CPU0的私有内存称为第一私有内存,第二处理器CPU1的私有内存称为第二私有内存。此外,还有一个共享内存,需要说明的是,在该共享内存中,包含两个环形数据结构。第一环形数据结构用于服务于第一处理器向第二处理器发送数据信息,第二环形数据结构用于服务于第二处理器向第一处理器发送数据信息,在环形数据结构中包括数据头和数据环。具体来说:首先建立图1所示的包含两个环形数据结构的共享内存,用于实现第一处理器与第二处理器之间数据的异步收发。共享内存的位置赋值给数据头的头指针HeadPtr与数据头的尾指针EndPtr。其中环形数据结构的中数据环的大小需要根据待传输数据量的大小进行预估计。需要传输的数据量大则需要适当增加环形结构中数据环的大小。并初始化读指针即SendPtr与写指针ReceivePtr位置相同。其次在第一处理器CPU0和第二处理器CPU1中分别建立接收任务和发送任务。在发送任务中,需要维护发送状态sendPoolState、每次发送数据包个数sendLoopCount;在接收任务中需要维护接收状态receivePoolState、每次接收数据包个数receiveLoopCount。
如图2为本申请实施例提供的一种环形数据结构的示意图。
在图2中可以看到,环形数据结构包括数据环和数据头。数据环Len Databody主要用于存储数据。数据头中,包括数据区头指针HeadPtr,数据区尾指针EndPtr,数据接收指针ReceivePtr,数据发送指针SendPtr。数据环则存放了数据长度及数据本身。
与图1相对应的,图3为本申请实施例提供的一种双核通信方法的流程示意图,主要应用于第一处理器,如图3所示,可以包括如下步骤:
301:根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中。
302:发送中断指令给第二处理器。
303:若所述第二处理器响应于所述中断指令接收所述共享内存中的所述待传输数据,则开启接收中断任务等待所述第二处理器发送的待传输数据。
在实际应用中,轮询工作过程中,需要第一处理器一直处于轮询工作状态,对CPU消耗较大,造成资源浪费。因此,可以根据定时启动第一处理器的发送轮询任务。每个轮询周期时间长度有限,所能发送的待传输数据量也相应受到限制;此外,一个轮询周期内所发送的待传输数据量,还受到共享内存当中对应的环形数据结构的存储空间的限制。例如,假设一个轮询周期内能够允许发送20个大小相同的数据包,当前第一私有内存中所存储的待传输数据包是25个数据包,第一环形数据结构的存储空间为10个数据包;因此,最多只能传输10个数据包。假设一个轮询周期内能够允许发送20个大小相同的数据包,当前第一私有内存中所存储的待传输数据包是25个数据包,第一环形数据结构的存储空间为25个数据包;由于受到轮询周期最大发送量的制约,因此,最多只能传输20个数据包。为了保证数据准确、高效的传输,最大可传输的数据包个数应小于或等于上述三者(当前第一私有内存包含的数据包量、当前第一环形数据结构能够接收的数据包量、一个轮询周期内能够发送的数据包量)当中最小的数据包量。
为了提高数据传输效率,可以对第一环形数据结构的存储空间进行查询检测。例如,将第一环形数据结构的存储空间与预设的第一阈值进行比较,若第一环形数据结构的存储空间满足第一阈值,则根据预设轮询周期发送待传输数据包。若第一环形数据结构的存储空间不满足第一阈值,则会由第一处理器或者共享内存向第二处理器发送处理请求,这里所说的处理请求可以是一个请求第二处理器将第一环形数据结构中的数据包接收的中断指令。在实际应用中,第一阈值可以预先定义的数据包数量值,也可以是实时检测(可以理解为与对第一环形数据结构的存储空间进行查询检测同时进行的)到的在第一私有内存中的待发送数据包的数量值。
在实际应用中,轮询周期可以根据用户需求进行自定义。在进行数据传输之前,需要确定当前轮询周期内所述待传输数据包的数量;也就是,当前轮询周期内,能否允许将第一私有内存中所有待传输数据包都发送给共享内存。若能,则将所有的待传输数据包发送给共享内存,进而,共享内存将接收到的待传输数据包都存储到第一环形数据结构中的第一数据环中,并对其第一数据头进行更新。
在实际应用中,为了避免第二处理器一直处于轮询状态等待接收数据而造成第二处理器资源浪费,可以在每次需要第二处理器接收数据之前,由第一处理器发出中断指令通知第二处理器启动轮询任务并开始接收待传输数据。可以分为两种情况发出中断指令,第一种是若所述待传输数据包的数量大于所述第一数据环的存储空间,则发送中断指令给所述第二处理器。第二种是在所述轮询周期内将全部所述待传输数据包发送给了所述第一数据环后,由第一处理器或者共享内存发送中断指令给第二处理器。
为了便于理解,下面实际举例说明一下第一处理器向第二处理器进行数据发送的过程。发送数据时,发送端(比如,第一处理器)需把待发送数据写入到相应环形数据结构中,并更新响应参数。实现步骤如下所示:
1)发送任务首先判断共享内存中的第一环形数据结构中是否有足够空间来接收待传输数据。如果没有空间则实时通知第二处理器CPU1进行数据接收处理,相反则进入轮询发送状态,即sendPoolState为真。
2)根据共享内存中第一数据环的空间大小,从第一私有内存拷贝待传输数据到共享内存的第一数据环中,同时更新第一数据头上参数SendPtr、Len。
3)由于采用轮询方式发送数据,为防止发送任务对第一处理器CPU0的占用率过高,所以每次发送任务对发送的待传输数据包的个数sendLoopCount有一定的限制,当达到最大发送个数时,需退出本次发送,剩余数据待下一次轮询周期再发送,未达到最大值时则可以填充待传输数据到共享内存的第一数据环中。
4)待数据拷贝到共享内存后,根据第一私有内存中剩余的待传输数据量大于第一环形数据结构中剩余存储空间的条件,实时触发第二处理器CPU1进行接收数据处理。
5)判断第一私有内存中的待传输数据是否全部发送完成,若完成则更改发送状态sendPoolState为假。若待传输数据没有全部发送完毕,则发送任务一直在轮询状态发送数据。
图4为本申请实施例提供的另一种双核通信方法的流程示意图,主要应用于第二处理器,如图4所示,可以包括如下步骤:
401:响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;所述第一环形数据结构位于共享内存中。
402:根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中。
403:开启接收中断任务等待所述第一处理器发送的待传输数据。
在实际应用中,为了避免第二处理器长期处于轮询工作任务中,需要在接受中断指令之后,才开始执行轮询接收数据的任务。能够有效避免第二处理器因为长期处于轮询状态而占用过多内存资源。
如前述实施例可知,第一处理器与第二处理器之间相互传输数据的时候,不是直接进行传输,而是需要经过共享内存暂存处理后,在向接收方处理器进行数据传输。具体来说,第一处理器要向第二处理器发送待传输数据的时候,第一处理器先将待传输数据发送给共享内存,由共享内存将待传输数据存储到第一环形数据结构中。同时,由第一处理器向第二处理器发送中断指令,在第二处理器接收到中断指令之后,第二处理器开始从第一环形数据结构中的第一数据环中接收待传输数据。
如前述实施例可知,在共享内存中包括与第一处理器对应的第一环形数据结构、与第二处理器对应的第二环形数据结构。若该共享内存同时为多个处理器提供数据存储服务,则需要多个环形数据结构。其中,第一环形数据结构包括:第一数据头和第一数据环。
在进行数据传输之前,需要判断是否满足数据传输条件。第一个判断条件是,确定当前轮询周期内所述待传输数据包的数量;若所述待传输数据包的数量满足第二阈值,则将所述第一环形数据结构中第一数据环中的待传输数据包存储到所述第二处理器的第二私有内存中,并更新所述第一数据头。
第二个判断条件是,在第二处理开始接收待传输数据之前,需要先查询所述第二私有内存的存储空间;若所述第二私有内存的存储空间满足所述第一环形数据结构中的待传输数据包的数量,则接收所述待传输数据包。
需要说明的是,上述两个判断条件可以单独选择其中一种,也可以同时采用上述两种判断条件。
为了便于理解,下面实际举例说明一下第二处理器从第一处理器接收数据的过程。接收数据时,接收端(比如,第二处理器)需把待接收数据写入到共享内存中相应环形数据结构并存储,并更新响应参数。实现步骤如下所示:
1)响应于第一处理器发出的中断指令,启动接收任务则进入轮询接收状态,即设置receivePoolState为真。
2)根据接收方私有内存空间的大小,从共享内存数据区内拷贝数据到私有内存中,同时更新数据头上的参数ReceivePtr。
3)由于采用轮询方式接收数据,为防止接收任务CPU占用率过高,所以每次接收任务对接收数据包的个数receiveLoopCount有一定的限制,当达到最大接收个数时,需退出本次接收,剩余数据待下一次接收,未达到最大值时则可以拷贝数据到接收私有内存中。
4)判断数据是否全部接收完成,若完成则更改接收状态receivePoolState为假。若数据没有全部接收完毕,则接收任务一直在轮询状态接收数据。
图5为本申请实施例提供的再一种双核通信方法的流程示意图,主要应用于共享内存,如图5所示,可以包括如下步骤:
501:根据发送请求,确定第一处理器和对应的第一环形数据结构。
502:接收第一处理器按照轮询周期发送的待传输数据,并将所述待传输数据存储到第一环形数据结构中。
503:在第二处理器响应于所述第一处理器发出中断指令启动轮询接收后,将所述第一环形数据结构中的所述待传输数据发送给所述第二处理器。
如图2所示可知,在共享内存中包含有与每个处理器对应的环形数据结构,在环形数据结构中又包含有数据头和数据环,从而实现第一处理器与第二处理器之间数据的异步传输。
每个处理器都有在共享内存中对应的环形数据结构,用于接收该处理器想要发送的待传输数据。环形数据结构中数据环的大小根据实际需要进行调整,当待传输数据量比较大的时候,对应数据环的存储空间也会扩大,当待传输数据量比较小的时候,对应数据环的存储空间也会减小。能够满足不同的数据暂存需求。
将所述待传输数据中的数据存储到所述第一环形数据结构中的第一数据环中后,更新所述第一环形数据结构中的第一数据头。
基于同样的思路,本申请实施例还提供一种双核通信电子设备,该电子设备包括:第一处理器,根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存;发送中断指令给第二处理器。共享内存,将所述待传输数据填充到第一环形数据结构中;将所述待传输数据中的数据存储到所述第一环形数据结构中的数据环中;更新所述第一环形数据结构中的数据头。第二处理器,响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中。
图6为本申请实施例提供的一种双核通信的装置的结构示意图。该装置对应于根据图3所述双核通信方法的实施例,应用于第一处理器,该装置包括:
发送模块61,用于根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中;
发送中断指令给第二处理器;
中断模块62,用于若所述第二处理器响应于所述中断指令接收所述共享内存中的所述待传输数据,则开启接收中断任务等待所述第二处理器发送的待传输数据。
可选地,还包括查询模块63,用于查询所述共享内存中的所述第一环形数据结构的存储空间;若所述第一环形数据结构的存储空间满足第一阈值,则根据预设轮询周期发送所述待传输数据包;若所述第一环形数据结构的存储空间不满足所述第一阈值,则向所述第二处理器发送处理请求。
可选地,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据包填充到所述第一环形数据结构中的所述第一数据环中,并更新所述第一数据头。
可选地,发送模块61,用于若所述待传输数据包的数量大于所述第一数据环的存储空间,则发送中断指令给所述第二处理器;或,在所述轮询周期内将全部所述待传输数据包发送给了所述第一数据环,发送中断指令给所述第二处理器。
基于同样的思路,图7为本申请实施例提供的另一种双核通信的装置的结构示意图。该装置对应于根据图4所述另一种双核通信方法的实施例,该装置包括:
接收模块71,用于响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;所述第一环形数据结构位于共享内存中。
存储模块72,用于根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中。
开启模块73,用于开启接收中断任务等待所述第一处理器发送的待传输数据。
可选地,还包括查询模块74,用于查询所述第二私有内存的存储空间;若所述第二私有内存的存储空间满足所述第一环形数据结构中的待传输数据包的数量,则接收所述待传输数据包。
可选地,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将所述第一环形数据结构中第一数据环中的待传输数据包存储到所述第二处理器的第二私有内存中,并更新所述第一数据头。
根据上述实施例,本申请采用了一种环形数据结构来进行双核CPU核间的共享内存通信,也就是第一处理器与第二处理器之间进行数据传输,并在此共享内存的基础上采用中断与轮询结合的双任务处理方式能够有效提高两个处理器的利用率,满足对小数据量时数据通信的实时性需求,又解决了大数据量时接收数据CPU占用率高的问题,提高双核CPU核间数据交互的效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程资源更新设备的处理器以产生一个机器,使得通过计算机或其他可编程资源更新设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程资源更新设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程资源更新设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种双核通信方法,其特征在于,应用于第一处理器,所述方法包括:
根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中;
发送中断指令给第二处理器;
若所述第二处理器响应于所述中断指令接收所述共享内存中的所述待传输数据,则开启接收中断任务等待所述第二处理器发送的待传输数据。
2.根据权利要求1所述的方法,其特征在于,将第一处理器的第一私有内存中待传输数据包发送到共享内存之前,还包括:
查询所述共享内存中的所述第一环形数据结构的存储空间;
若所述第一环形数据结构的存储空间满足第一阈值,则根据预设轮询周期发送所述待传输数据包;
若所述第一环形数据结构的存储空间不满足所述第一阈值,则向所述第二处理器发送处理请求。
3.根据权利要求1所述的方法,其特征在于,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据填充到第一环形数据结构中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将第一处理器中待传输数据包发送到共享内存,以使所述共享内存将所述待传输数据包填充到所述第一环形数据结构中的所述第一数据环中,并更新所述第一数据头。
4.根据权利要求3所述的方法,其特征在于,所述发送中断指令给第二处理器,包括:
若所述待传输数据包的数量大于所述第一数据环的存储空间,则发送中断指令给所述第二处理器;或,在所述轮询周期内将全部所述待传输数据包发送给了所述第一数据环,发送中断指令给所述第二处理器。
5.一种双核通信方法,其特征在于,应用于第二处理器,所述方法包括:
响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;所述第一环形数据结构位于共享内存中;
根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中;
开启接收中断任务等待所述第一处理器发送的待传输数据。
6.根据权利要求5所述的方法,其特征在于,接收与所述第一处理器对应的第一环形数据结构中的待传输数据之前,还包括:
查询所述第二私有内存的存储空间;
若所述第二私有内存的存储空间满足所述第一环形数据结构中的待传输数据包的数量,则接收所述待传输数据包。
7.根据权利要求5所述的方法,其特征在于,所述第一环形数据结构包括:第一数据头和第一数据环;
所述根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中,包括:
确定当前轮询周期内所述待传输数据包的数量;
若所述待传输数据包的数量满足第二阈值,则将所述第一环形数据结构中第一数据环中的待传输数据包存储到所述第二处理器的第二私有内存中,并更新所述第一数据头。
8.一种双核通信方法,其特征在于,应用于共享内存,所述方法包括:
根据发送请求,确定第一处理器和对应的第一环形数据结构;
接收第一处理器按照轮询周期发送的待传输数据,并将所述待传输数据存储到第一环形数据结构中;
在第二处理器响应于所述第一处理器发出中断指令启动轮询接收后,将所述第一环形数据结构中的所述待传输数据发送给所述第二处理器。
9.根据权利要求8所述的方法,其特征在于,所述将所述待传输数据存储到第一环形数据结构中,包括:
将所述待传输数据中的数据存储到所述第一环形数据结构中的数据环中;
更新所述第一环形数据结构中的数据头。
10.一种双核通信电子设备,其特征在于,所述电子设备包括:
第一处理器,根据预设轮询周期,将所述第一处理器的第一私有内存中待传输数据包发送到共享内存;发送中断指令给第二处理器;
共享内存,将所述待传输数据填充到第一环形数据结构中;将所述待传输数据中的数据存储到所述第一环形数据结构中的数据环中;更新所述第一环形数据结构中的数据头;
第二处理器,响应于第一处理器发送的中断指令,接收与所述第一处理器对应的第一环形数据结构中的待传输数据;根据预设轮询周期,将所述待传输数据存储到所述第二处理器的第二私有内存中。
CN202010501538.6A 2020-06-04 2020-06-04 一种双核通信方法和电子设备 Pending CN113760559A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010501538.6A CN113760559A (zh) 2020-06-04 2020-06-04 一种双核通信方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010501538.6A CN113760559A (zh) 2020-06-04 2020-06-04 一种双核通信方法和电子设备

Publications (1)

Publication Number Publication Date
CN113760559A true CN113760559A (zh) 2021-12-07

Family

ID=78783754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010501538.6A Pending CN113760559A (zh) 2020-06-04 2020-06-04 一种双核通信方法和电子设备

Country Status (1)

Country Link
CN (1) CN113760559A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775345A (zh) * 2023-08-21 2023-09-19 荣耀终端有限公司 一种数据传输方法及电子设备
CN116932454A (zh) * 2023-09-15 2023-10-24 湖北芯擎科技有限公司 数据传输方法、装置、电子设备及计算机可读存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775345A (zh) * 2023-08-21 2023-09-19 荣耀终端有限公司 一种数据传输方法及电子设备
CN116775345B (zh) * 2023-08-21 2023-12-19 荣耀终端有限公司 一种数据传输方法及电子设备
CN116932454A (zh) * 2023-09-15 2023-10-24 湖北芯擎科技有限公司 数据传输方法、装置、电子设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN110661849A (zh) 一种请求处理方法、装置、电子设备及存储介质
EP2755363B1 (en) Data-fast-distribution method and device
KR20170134576A (ko) 시간 기반 노드 선출 방법 및 장치
CN113760559A (zh) 一种双核通信方法和电子设备
CN113296976A (zh) 消息处理方法、装置、电子设备、存储介质及程序产品
CN110519388B (zh) 区块链请求的处理方法、装置、电子设备及可读存储介质
CN108093047B (zh) 数据发送方法、装置、电子设备及中间件系统
CN116204487A (zh) 远程数据访问方法及装置
CN111857992B (zh) 一种Radosgw模块中线程资源分配方法和装置
CN104052831A (zh) 一种基于队列的数据传输方法、装置及通信系统
CN110895517B (zh) 基于fpga的传输数据的方法、设备及系统
CN114095571A (zh) 数据处理方法、数据服务总线、终端和存储介质
CN116185630A (zh) 系统集群的业务处理方法、装置、电子设备及介质
CN111131083B (zh) 节点间数据传输方法、装置、设备及计算机可读存储介质
CN110928693B (zh) 一种计算设备及资源分配方法
CN113805802A (zh) 访问限流的方法、服务器及存储介质
CN113518082B (zh) 一种消息处理方法、电子设备及存储介质
JP3058010B2 (ja) プロセッサ間通信方法及び装置
CN114500546B (zh) 基于负载均衡集群的通信消息发送方法、装置及设备
CN113630422B (zh) 一种基于边缘节点的网络安全数据处理方法和系统
CN113765805B (zh) 基于调用的通信方法、装置、存储介质及设备
CN116028422A (zh) 一种异构多核系统及其核间通信方法、芯片和存储介质
CN114237893A (zh) 缓存方法、装置、系统、服务器以及存储介质
CN116886641A (zh) 一种用于网络集群的数据传输方法及装置
CN116737401A (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