异构多核处理器的数据交互方法、异构多核处理器和终端与流程

文档序号:17641152发布日期:2019-05-11 00:40阅读:318来源:国知局
异构多核处理器的数据交互方法、异构多核处理器和终端与流程

本发明涉及通信技术领域,尤其涉及一种异构多核处理器的数据交互方法、异构多核处理器和终端。



背景技术:

随着异构多核处理器在工业场景中得到了越来越多的应用,核间通信是多核处理器系统所面临的主要难点,通信机制的优劣直接影响多核处理器的性能,高效的通信机制是发挥多核处理器高性能的重要保障。

然而,目前大部分的多核处理器间的通信及数据交互均是基于操作系统的,即主从端都运行操作系统。各操作系统间的通信和数据交互方式包括有广泛使用的共享内存方式等。

对于该共享内存方式,数据的交互都是基于对缓存的存取操作来实现,即共享缓存一般都需要在操作系统下进行申请、管理、释放等操作,而且主从双方的缓存一般都需要二次存取组帧后再进行操作,极大的影响了数据交互的速度。

而在该异构多核处理器架构中,一般采用主cpu运行操作系统,负责总调度,而异构从cpu则一般是直接运行工程程度。若采用类似的现有的共享内存方式来进行数据读取,将会大大降低核间的数据交互速度,因此,有必要提出一种有效的通信机制来满足该异构多核处理器的操作系统与裸机程序间的数据交互的性能需求。



技术实现要素:

鉴于上述问题,本发明提出一种异构多核处理器的数据交互方法、异构多核处理器和终端,通过预先对主从交互数据区进行划分并映射,并由主cpu进行设备读写而从cpu通过结构体直接映射读写,可解决现有技术的核间通信效率低、实时性差等问题。

本发明实施例提出一种异构多核处理器的数据交互方法,所述异构多核处理器包括具有操作系统的主cpu和至少一裸机从cpu,所述数据交互方法包括:

所述主cpu周期性执行主从模式方式或当接收到来自所述从cpu发送的中断或邮箱消息时,通过设备驱动方式从预设主读从写区读取由所述从cpu写入的数据,并将需要更新的数据写入到预设主写从读区;

所述从cpu在接收到来自所述主cpu发送的中断或邮箱消息时或在查询到所述预设主写从读区有数据更新时,通过结构体读写方式从所述预设主写从读区读取并处理所述更新的数据,并将处理后的数据写入所述预设主读从写区。

进一步地,所述预设主读从写区和所述预设主写从读区的创建包括:

将所述主cpu与从cpu的交互数据区划分为主读从写区和主写从读区,并根据所述交互数据区的大小将所述主读从写区和所述主写从读区映射到预设数据存储区;

所述主cpu为所述交互数据区创建设备节点,以用于所述主cpu通过设备驱动方法从所述设备节点读取由所述从cpu写入的数据,并将需要更新的数据写入到所述设备节点;

所述从cpu定义两个用于输入输出交互数据的结构体,并将所述两个结构体分别分配到所述主读从写区和所述主写从读区,以用于所述从cpu通过结构体读写方式从分配到所述主写从读区的结构体读取并处理所述更新的数据,并将处理后的数据写入分配到所述主读从写区的结构体。

进一步地,所述预设数据存储区为所述cpu的内嵌存储器或外扩存储器。

进一步地,若所述从cpu的内嵌存储器的存储空间大于所述交互数据区,则将所述主读从写区和所述主写从读区映射到所述从cpu的内嵌存储器。

进一步地,所述设备节点为字符设备节点或块设备节点。

进一步地,所述结构体的变量包括数据更新标志、数据长度、用户自定义交互数据和数据结束标志;其中,所述数据长度用于指示所述用户自定义交互数据的长度。

进一步地,当所述主cpu或所述从cpu作为数据写入方在所述预设主写从读区或所述预设主读从写区完成数据写入时,将对应的所述数据更新标志进行更新,以便数据读取方进行数据更新查询。

进一步地,所述结构体的变量还包括数据校验位,

当所述主cpu或所述从cpu作为数据读取方从所述预设主读从写区或所述预设主写从读区读取数据时,通过对应的所述数据校验位对读取的数据进行校验。

本发明的另一实施例提出一种异构多核处理器,包括:具有操作系统的主cpu和至少一裸机从cpu,所述主cpu和各从cpu进行数据交互时,采用上述的异构多核处理器的数据交互方法。

本发明的又一实施例提出一种终端,所述终端包括:异构多核处理器,所述异构多核处理器包括具有操作系统的主cpu和至少一裸机从cpu,所述主cpu和各从cpu进行数据交互时,采用上述的异构多核处理器的数据交互方法。

本发明的技术方案通过预先对主从cpu间的交互数据区进行划分及映射,并由主cpu进行设备驱动读写而从cpu通过结构体直接映射,不仅可避免主cpu与裸机从cpu之间进行数据交互时的二次缓存等,极大地缩短了核间的数据交互时间,实现了核间数据在同步模式或异步模式下的快速交互,还可以保证数据交互的可靠性及完整性等。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。

图1为本发明实施例提供的异构多核处理器的硬件结构示意图;

图2为本发明实施例的数据交互方法的应用示意图;

图3为本发明实施例的数据交互方法的mrsw和mwsr创建的流程示意图;

图4为本发明实施例的数据交互方法的主从模式下数据交互流程示意图。

主要元件符号说明:

100-异构多核处理器;110-主cpu;120-从cpu;130控制器;140-外扩高速存储器。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

下面结合具体的实施例对本发明进行详细说明。

下述各实施例均可用于如图1所示的异构多核处理器,该异构多核处理器100的硬件结构通常包括主cpu110、至少一从cpu120、控制器130、外扩高速存储器140等。其中,主cpu110通常运行操作系统,如linux、windows、os等,负责总调度,实现整机对外交互和总控制流程。而各从cpu120通常为用于实现某一功能的微控制器,如dsp、fpga等,主要用于实现具体的浮点运算、图像处理、实时控制等。各从cpu120可直接运行工程程序,该工程程序也常称裸机程序,因其不需要基于操作系统运行或不支持操作系统。主cpu110、从cpu120和外扩高速存储器140则通过内部高速总线teranet互联,控制器130主要用于实现主cpu、从cpu的交互控制及总线仲裁等功能。

本领域技术人员可以理解,图1中示出的异构多核处理器结构并不构成对该异构多核处理器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。以具体的实施例介绍本发明,当然,本发明并不限于这些具体的实施例。

实施例1

请一并参照图1、图2、图3和图4,本实施例提出一种异构多核处理器的数据交互方法,可应用于异构多核处理器等。本实施例中,该异构多核处理器包括一个主cpu和至少一从cpu,其中,主cpu可运行操作系统,而各从cpu则直接运行工程程序。下面主要以一个从cpu为例,对该异构多核处理器的数据交互方法进行详细说明。

本实施例中,该如图2所示,该异构多核处理器的主cpu与从cpu可通过一预设主读从写区和预设主写从读区进行数据的快速交互。如图3所示,下面对该预设主读从写区和预设主写从读区的创建过程进行说明。

步骤s10,将主cpu与从cpu的交互数据区划分为主读从写区和主写从读区,并根据所述交互数据区的大小将所述主读从写区和所述主写从读区映射到预设数据存储区。

本实施例中,可根据应用需求确定主cpu与从cpu之间的交互数据区的大小。示范性地,将该交互数据区划分为两块,即主读从写区(mrsw)和主写从读区(mwsr)。在确定该数据交互的大小后,从cpu通过map文件中的链接控制符memory将该mrsw和mwsr直接映射到预设数据存储区。其中,该预设数据存储区可为该从cpu的内嵌存储器或外扩存储器。其主要映射实现如下:

进一步优选地,若该从cpu的内嵌存储器的存储空间大于该交互数据区,则将该mrsw和mwsr优先映射到该从cpu的内嵌存储器。可以理解,一般地内嵌存储器的读写速度比外扩存储器的读写速度会更快,若将该mrsw和mwsr映射到该从cpu的内嵌存储器,这样可以大大提高数据交互速度。

步骤s20,在主cpu端,主cpu为该交互数据区创建设备节点,以用于主cpu通过设备驱动方式从所述设备节点读取由从cpu写入的数据,并将需要更新的数据写入到所述设备节点。

本实施例中,主cpu将视该交互数据区为设备节点,并利用与该设备节点对应的设备驱动程序来驱动并读取该设备节点,进而实现对该交互数据区的数据写入或读取等操作。例如,该设备节点可为字符设备节点或块设备节点等。

示范性地,该交互数据区可通过预先存储的驱动程序向操作系统申请设备注册,然后由操作系统为该交互数据区创建设备文件并分配设备号等操作以实现设备注册,进而实现对该设备的数据读取交换。其中,该预先存储的驱动程序是可根据交互数据区的实际物理地址进行编写。

可以理解,对于操作系统而言,所有的设备是由操作系统统一管理的,并可以通过相应的设备驱动程序来进行快速读写等操作。这样可避免共享缓存的申请、分配、管理、释放等一系列操作。

步骤s30,在从cpu端,从cpu将定义两个用于输入输出交互数据的结构体,并将所述两个结构体分别分配到所述主读从写区和所述主写从读区,以用于所述从cpu通过结构体读写方式从分配到所述主写从读区的结构体读取并处理由主cpu更新的数据,并将处理后的数据写入分配到所述主读从写区的结构体。

本实施例中,该从cpu通过定义不同的结构体变量来动态调整实际交互数据的大小及内容等,并保证数据交互的完整性及可靠性等。示范性地,该结构体的变量可包括但不限于包括数据更新标志、数据长度、用户自定义交互数据和数据结束标志等等。

其中,该数据长度主要用于指示该用户自定义交互数据的长度。该数据结束标志用于指示该用户自定义交互数据的结束。该数据更新标志主要用于通知数据读取方写入完成,或用于数据读取方的数据更新查询等。示范性地,当主cpu或从cpu作为数据写入方在该预设主写从读区或预设主读从写区完成数据写入时,可将对应结构体中的所述数据更新标志进行更新,以便数据读取方的数据更新查询。

进一步可选地,该结构体的变量还包括数据校验位,以用于数据读取方对数据的正确性校验等。

示范性地,当主cpu或从cpu作为数据读取方从该预设主读从写区或该预设主写从读区读取数据时,可通过对应的数据校验位判断当前数据是否被修改或是否丢失等,从而实现对读取的数据进行校验。

下面对一定义的结构体及如何分配给所述主读从写区和所述主写从读区进行举例说明。示范性地,若该结构体的定义如下:

其中,对于用户自定义交互数据部分,可写入实际交互数据的内容。于是,从cpu可在map文件中通过链接控制符sections将上述定义的用于输入输出交互数据的结构体分别直接分配到mrsw和mwsr,其实现过程如下所示。

可知,从cpu裸机程序可通过获取或定义不同的结构体变量即可直接读写交互数据,可避免数据通过二次缓存进行交互,从而极大提高了核间的交互速度等。

基于上述的预设主读从写区和预设主写从读区的创建,本实施例中的主cpu与从cpu之间的数据交互可周期性地执行主从模式来实现数据的同步交互,也可以直接通过中断或邮箱方式来实现数据的异步交互。

如图4所示,下面对采用主从模式进行数据交互方法的主要流程进行说明。

步骤s40,主cpu周期性地执行主从模式并通过设备驱动方式从预设主读从写区读取由从cpu写入的数据。

步骤s50,主cpu将需要更新的数据写入到预设主写从读区,并发送中断或邮箱消息到从cpu。

可知,由于主cpu操作系统已为该预设主读从写区和主写从读区创建了设备节点,故当进行数据交互时,主cpu将视该预设主读从写区和主写从读区为设备对象,并通过设备驱动程序进行驱动以实现对该预设主读从写区的数据读取或对预设主写从读区的数据写入。

本实施例中,所述主从模式是指主cpu运行操作系统并周期性地控制线程去读取从cpu处理的数据,然后将需要更新的数据写入,最后通过控制器产生中断或邮箱消息到从cpu,以通知从cpu进行更新数据的读取。于是主cpu完成一个周期的数据交互。

可以理解,当主cpu在每次读取从cpu处理的数据时,可通过查询数据更新标志来判断从cpu是否已进行数据更新,并在查询到有数据更新时进行数据读取。

步骤s60,从cpu在接收到来自主cpu发送的中断或邮箱消息时,通过结构体读写方式从预设主写从读区读取并处理所述更新的数据,并将处理后的数据写入预设主读从写区。

可知,由于从cpu已将定义的两个结构体分别分配给该预设主读从写区和预设主写从读区,故当进行数据交互时,从cpu可直接对这两个结构体进行读写,从而实现对该预设主读从写区的数据写入或预设主写从读区的数据读取。

于是,从cpu在读取更新的数据并进行相应处理后,将处理后的数据写入到该预设主读从写区,以供主cpu在下一周期到来时重复上述步骤s40-s60,以实现两者之间的数据交互。

当然,在上述步骤s60中,从cpu也可以通过定期或不定期查询方式查询预设主写从读区是否有数据更新,并在查询到有数据更新时,进行上述读取等操作。

而对于直接通过中断或邮箱方式来实现数据的异步交互,即主cpu和从cpu均可以发起数据交互请求而不受操作系统的线程周期的限制。

如图2所示,示范性地,当主cpu或从cpu作为数据写入方将数据写入到该预设主写从读区或预设主读从写区时,可通过发送中断或邮箱消息等以通知对方写入完成。可选地,也可以通过对数据更新标志进行置位等方式以通知数据读取方写入完成。

于是,当主cpu或从cpu作为数据读取方时,数据读取方将在接收到来自对方发送的中断或邮箱消息时,或者通过查询方式查询到上述的数据更新标志被置位,则读取并处理上述更新的数据,并在处理完该更新的数据后,将处理后的数据写入到预设主写从读区或预设主读从写区中。随后,数据读取方可通过发送中断或邮箱消息等以通知对方写入完成,当然,还可以通过对数据更新标志进行置位等方式以用于通知对方写入完成。如此重复上述操作,从而完成主cpu和从cpu之间数据的异步交互。

本实施例提出的数据交互方法在预设主读从写区和预设主写从读区的创建的基础上,可方便地实现主从模式或异步模式下的快速数据交互。通过将主从cpu的交互数据区进行划分并实现映射,然后由运行操作系统的主cpu为该交互数据区进行设备节点创建,并利用设备驱动方式来直接驱动该数据交互区设备以实现交互数据的直接读写,而裸机从cpu则通过结构体变量直接映射该交互数据区,可快速动态的调整核间交互数据的大小、内容等,该方法简化了数据交互过程,并保证数据交互的完整性和可靠性。

实施例2

请参照图1,基于上述实施例1中的数据交互方法,本实施例提出一种异构多核处理器,该异构多核处理器包括一主cpu和至少一从cpu,具有操作系统的所述主cpu和各从cpu进行数据交互时,采用上述实施例1中的异构多核处理器的数据交互方法,故在此不再详述。

实施例3

基于上述实施例1中的数据交互方法,本实施例提出一种终端,该终端包括异构多核处理器,该异构多核处理器包括具有操作系统的主cpu和至少一裸机从cpu。其中,该主cpu和各从cpu进行数据交互时采用上述实施例1中的数据交互方法,故在此不再详述。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1