CN116107952A - 多核异构通信方法以及车辆 - Google Patents
多核异构通信方法以及车辆 Download PDFInfo
- Publication number
- CN116107952A CN116107952A CN202310003891.5A CN202310003891A CN116107952A CN 116107952 A CN116107952 A CN 116107952A CN 202310003891 A CN202310003891 A CN 202310003891A CN 116107952 A CN116107952 A CN 116107952A
- Authority
- CN
- China
- Prior art keywords
- data
- area
- core
- target
- memory
- 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
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种多核异构通信方法以及车辆,该多核异构通信方法包括:基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域,根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区;将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区;将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核;基于所述通知,所述已订阅线程获取所述目标数据。使用跨核共享内存区替代片上通信网络作为异构核间数据交互媒介,且共享内存区为一级内存,利用一级内存替代多级内存,实现了多核间的零拷贝,提高了数据通信效率。
Description
技术领域
本申请涉及汽车控制技术领域,更具体地,涉及一种多核异构通信方法以及车辆。
背景技术
现有的多核异构通信技术中,存在独立缓存、共享内存、共享总线3种存储单元,独立缓存用于对各核自身数据的存放和访问,共享内存用于同构核间访问,共享总线用于异构核间通信。当数据在多核间进行通信时,需要在三种存储单元中进行倒换,三种种存储单元间倒换必然存在拷贝过程,数据的拷贝过程会延长通信时间、降低多核异构间数据的通信效率。
发明内容
鉴于上述问题,本申请提出了一种多核异构通信方法以及车辆。
第一方面,本申请实施例提供了一种多核异构通信方法,所述方法包括:基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域所述共享内存区包括多个分区内存区域;根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区;将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区;将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核;基于所述通知,所述已订阅线程获取所述目标数据。
第二方面,本申请实施例提供了一种车辆,所述车辆包括:车身本体以及电子设备,所述电子设备包括多核异构控制器以及存储器,所述多核异构控制器用于执行上述第一方面提供的多核异构通信方法。
本申请提供的方案,在共享内存区中获取与目标数据大小相对应的分区内存区域,通过分区内存区域中的缓存区对目标数据进行缓存,并向目标数据的已订阅线程发送通知,使用跨核共享内存区替代片上通信网络作为异构核间数据交互媒介,且共享内存区为一级内存,利用一级内存替代多级内存,实现了多核间的零拷贝,提高了数据通信效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的多核异构通信方法的流程示意图。
图2示出了本申请另一实施例提供的多核异构通信方法的流程示意图。
图3示出了本申请另一实施例中步骤S260的详细流程示意图。
图4示出了本申请另一实施例中步骤S280的详细流程示意图。
图5示出了本申请又一实施例提供的多核异构通信方法的流程示意图。
图6示出了本申请又一实施例中步骤S330的详细流程示意图。
图7示出了本申请实施例提供的核间共享内存空间的示意图。
图8示出了本申请实施例提供的包括多核异构控制器的车辆的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
针对背景技术中所提出的问题,发明人提出了本申请实施例提供的多核异构通信方法以及车辆,在共享内存区中获取与目标数据大小相对应的分区内存区域,通过分区内存区域中的缓存区对目标数据进行缓存,并向目标数据的已订阅线程发送通知,使用跨核共享内存区替代片上通信网络作为异构核间数据交互媒介,且共享内存区为一级内存,利用一级内存替代多级内存,实现了多核间的零拷贝,提高了数据通信效率。
请参阅图1,图1示出了本申请一实施例提供的多核异构通信方法的流程示意图。在具体的实施例中,所述多核异构通信方法应用于如图8所示的车辆。
下面将针对图1所示的流程进行详细的阐述,所述多核异构通信方法具体可以包括以下步骤:
步骤S110:基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域,所述共享内存区包括多个分区内存区域。
目标数据为发布者需要进行发布的数据,可以是传感器的数据,也可以是程序记录的状态数据。
共享内存区包括索引区以及数据区,数据区包括多个分区内存区域。
索引区可以是多个分区标识与分区标识对应的偏移索引建立的索引表,可以通过分区标识以及偏移索引定位到分区标识对应的分区。
数据区中的分区内存区域主要用于存储数据、查找数据以及对存储的数据进行计数。
针对目标数据对应数据大小,从数据区中获取于目标数据大小对应的分区内存区域。
在一些实施方式中,获取目标数据对应的数据类型,若共享内存区中不存在与目标数据类型对应的数据区,此时,申请新的共享内存区用于目标数据的存储以及发布。
在另一些实施方式中,分区内存区域还可以包括多个子分区内存区域,可以将相同发布者或者相同流向或者相同类型的数据存入分区内存区域中的子分区内存区域中,已订阅线程可以一次取用多个数据,有利于数据的高效交互。
发布者需要对子分区内存区域进行偏移索引,获取子分区内存区域的基地址以及分区内存区域的基地址,将子分区内存区域相对于分区内存区域进行偏移,从而获取子分区内存区域相对于分区内存区域的偏移索引,用户可以根据偏移索引对相同发布者或者相同流向或者相同类型的数据进行读取。
可选的,将多个子分区内存区域相对于分区内存区域的偏移索引生成子分区内存区域偏移索引表存入分区内存区域中,提高索引效率。
步骤S120:根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区。
下一个缓存区指示符用于指示可用的缓存区,发布者根据下一个缓存区指示符获取与目标数据对应的目标缓存区。
步骤S130:将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区。
分区内存区域包括多个缓存区,用于存储数据。将目标数据存入目标缓存区,使得目标缓存区对目标数据进行保存以及发布。
步骤S140:将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核。
多核包括但不局限于ARM(Advanced RISC Machine)核,DSP(Digital SignalProcessing)核,单片机核,GPU(graphics processing unit)核等。由一个预定义的核(如ARM核)从内存中创建共享内存空间,并将共享内存按格式分隔为索引区和数据区。共享内存空间的大小小于或等于内存的大小。索引区主要用于对数据区的数据进行索引定位。数据区主要用于存储数据,便于数据的共享。
目标数据存入消息可以是通过核间组播消息进行通知,可以是通过硬中断的方式对目标数据的存入消息进行通知。当使用硬中断方式进行通知时,可以使用中断内的poll操作,Poll操作下识别是否有新增发布,需要原子操作。poll操作可以同时对多个相同的中断进行中断处理,用最少的中断次数完成最多的发布查阅,可以降低系统内耗。
根据目标数据存入的目标缓存区,将当前缓存区指示符指向目标缓存区,当完成目标数据的发布后,通过预设通知方式将目标数据的发布信息向已订阅线程进行通知。
步骤S150:基于所述通知,所述已订阅线程获取所述目标数据。
当接收到核间组播消息或者是硬中断消息时,已订阅线程通过该核间组播消息或者是硬中断消息获取目标数据对应的目标缓存区,通过目标缓存区获取目标数据。
在本申请方案中,分区内存区域可以是一个环形链表的数据结构,所述环形链表的数据结构包括共享内存锁、数据头指示符、深度指示符、当前缓存区指示符、下一个缓存区指示符、缓存描述符以及多个缓存区,用于存储数据。
共享内存锁主要用于暂时锁定缓存区,避免多人同时用一个缓存区,造成数据不准确。数据头指示符主要用于环形链表中指示头节点的。深度指示符主要用于订阅该缓存区的订阅深度。当前缓存区指示符主要用于指示最新数据缓存位置。下一个缓存区指示符主要用于指示下一个可用缓存区。缓存描述符主要用于存储缓存区的偏移索引以及缓存区内储存数据对应的时间戳。缓存区主要用于储存需要发布的数据以及发布者已发布的数据。深度指示符的个数与缓存区个数相同。
本申请提供的方案,在共享内存区中获取与目标数据大小相对应的分区内存区域,通过分区内存区域中的缓存区对目标数据进行缓存,并向目标数据的已订阅线程发送通知,使用跨核共享内存区替代片上通信网络作为异构核间数据交互媒介,且共享内存区为一级内存,利用一级内存替代多级内存,实现了多核间的零拷贝,提高了数据通信效率。
请参见图2,图2示出了本申请另一实施例提供的多核异构通信方法的流程示意图,具体包括以下步骤:
步骤S210:获取线程的预设数据类型。
每个线程可以设置有多个预设数据类型。
步骤S220:对比数据的数据类型以及所述预设数据类型。
步骤S230:若所述数据类型与所述预设数据类型一致,对所述数据进行订阅,获取所述数据的通知消息。
当数据的数据类型与线程的预设数据类型一致,该线程对该数据进行订阅,当该数据产生后存入对应的缓存区,且发出存入的通知消息时,该线程对该通知消息进行接收。
步骤S240:基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域,所述共享内存区包括多个分区内存区域。
步骤S250:根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区。
步骤S240~步骤S250的详细阐述请参阅步骤S110~步骤S120,在此不再赘述。
步骤S260:将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区。
在一些实施方式中,请参阅图3,步骤S260包括步骤S262~步骤S266,详细阐述如下:
步骤S262:启动所述缓存区对应的回收流程。
当接收到无可用缓存区的通知消息后,发布者或多核异构控制器启动回收流程,将该缓存区进行回收。
步骤S264:获取所述缓存区对应的当前查阅数。
每个缓存区包括前缀区以及真实数据区,前缀区存有数据大小、当前查阅数以及查阅共享内存锁,真实数据区用于存储实际数据。数据大小与真实数据区内存储的数据大小一致,当前查阅数是指在启动该缓存区的回收流程时查阅的其他用户数,查阅共享内存锁用于发布者发布数据时调用。
步骤S266:若所述当前查阅数为0,将所述缓存区中的数据进行释放。
当当前查阅数为0时,代表该缓存区的数据此时无用户进行查阅,此时将缓存区内的数据进行释放,从而获取空缓存区,便于发布者向缓存区内进行发布新数据。
在一些实施方式中,以预设频率自动启动回收流程,获取数据头指示符指示的缓存区的当前查阅数,将超过深度指示符的预设值的历史数据且当前查阅数为0的缓存区依次进行释放。预设频率以及深度指示符的预设值由创建核间共享内存空间的核进行决定。
在具体实施过程中,将所述目标数据存入所述分区内存区域中的目标缓存区时还调用分区内存中的共享内存锁,将所述共享内存锁进行置位;获取所述目标缓存区对应的偏移索引,存储于所述目标缓存区对应的目标缓存区描述符;将所述共享内存锁进行复位。
获取与目标数据对应的目标缓存区后,调用分区内存区域中的共享内存锁,将共享内存锁进行置位,避免其他发布者在同一时间使用同一目标缓存区,进而造成数据混乱。获取目标缓存区对应的偏移索引,存储于目标缓存区对应的目标缓存区描述符,当获取到目标缓存区对应的偏移索引后,下一个缓存区指示符进行递增,指向下一个可用的缓存区,便于指示下一个目标数据对应的缓存区。此时,将共享内存锁复位,释放该共享内存锁,方便其他发布者在对其他数据进行发布时及时调用共享内存锁。
步骤S270:将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核。
步骤S280:基于所述通知,所述已订阅线程获取所述目标数据。
步骤S270~步骤S280的详细阐述请参阅步骤S140~步骤S150,在此不再赘述。
在一些实施方式中,已订阅线程还可以订阅缓存区中的历史数据,请参阅图4,详细步骤包括步骤S282~步骤S286,阐述如下:
步骤S282:获取所述分区内存区域中所有缓存区的对应的深度指示符。
深度指示符用于表示该缓存区所存储的历史数据。
步骤S284:获取深度指示符最大对应的所述缓存区的历史数据。
在订阅了目标数据后,已订阅线程还可以获取深度指示符最大对应的所述缓存区的历史数据。
步骤S286:递增所述缓存区中历史数据对应的当前查阅数。
当已订阅线程对最多深度指示符对应的缓存区的历史数据进行订阅后,历史数据对应的当前查阅数进行递增,已订阅线程完成订阅当前查阅数递减并退出订阅流程。
在本申请实施例方案中,已订阅线程不仅可以订阅目标数据的,还可以订阅最多深度指示符对应的缓存区的历史数据,提高了历史数据的利用率。
当前缓存区指示符指向目标数据对应的缓存区,根据当前缓存区指示符可以找到目标数据,并订阅目标数据的最新消息。缓存区中的前缀区处的当前查阅数根据当前订阅人数进行递增,当订阅结束当前查阅数相应减少,并退出订阅流程。
在一些实施方式中,发布者还可以设定目标缓存区的查阅者数,调用缓存区中查阅共享内存锁将目标缓存区进行锁定后设定查阅者数,当设定查阅者数后,将查阅共享内存锁复位。设定查阅者数后,当目标缓存区当前查阅数达到查阅者数后,其他已订阅线程不能进行订阅该目标缓存区,直至已订阅线程完成订阅操作并退出后才可以继续订阅。
本申请提供的方案,当目标数据产生后,发布者将目标数据缓存于缓存区中进行发布,供其他用户进行查阅,实现了多核异构间数据的共享。且发布者在发布目标数据的过程中还利用共享内存将缓存区进行临时锁定,避免了多个发布者使用同一个缓存区造成数据混乱。而且当分区内存区域内没有可用的缓存区后,启动缓存区的回收流程,将当前查阅数为0的缓存区进行释放回收,可以将缓存区重复使用,节约了核间共享内存空间之间的内存,提高了核间共享内存空间的使用率。
请参见图5,图5示出了本申请又一实施例提供的多核异构通信方法的流程示意图:
步骤S310:通过多核中的一个核在内存创建共享内存区,所述共享内存区包括索引区以及数据区,所述索引区包括多个分区标识以及每个分区标识对应的偏移索引。
步骤S320:初始化所述共享内存区。
初始化是指将变量设置为默认值。在本申请方案中,初始化核间共享内存空间是指为核间共享内存空间分配对应的内存空间。
在具体实施过程中,初始化所述共享内存区包括定义所述数据区中分区内存区域对应的数量;定义每个所述分区内存区域中所述缓存区对应的数量以及所述每个缓存区对应的大小,所有所述分区内存区域中的缓存区大小之和小于或等于所述数据区的大小。
分区内存区域的数量可以是在创建共享内存空间时设定,也可以根据用户的需求进行创建分区内存区域。
缓存区的数量和大小在分区内存区域创建时进行设定,可根据不同分区内存区域的内容灵活设定。所有分区内存区域中的缓存区大小之和小于或等于所述数据区的大小。
将分区内存区域的数量以及缓存区数量和大小进行设定,在使用分区内存区域和缓存区时,可以直接使用,无需再确定缓存区的大小,进一步提高了缓存区的使用效率
步骤S330:各核通过预设映射方式将核内存映射到所述共享内存区。
共享内存区可以存在多核中其中一个核内,也可以是重新开辟个内存区间,作为共享内存区。各核通过该核的预设映射方式将核内存映射到共享内存区中。
在一些实施方式中,请参阅图6,步骤S330包括步骤S331~步骤S335,详细阐述如下:
步骤S331:获取所述分区内存区域的基地址以及所述数据区的基地址。
分区内存区域可以是来自于不同核的核间内存,由于各核的内存映射不一致,所以,每个分区内存区域对应的基地址是不同的。
步骤S332:将所述分区内存区域的基地址相对于所述数据区的基地址进行偏移,获取所述分区内存区域的相对地址。
步骤S333:将所述相对地址作为所述偏移索引。
将分区内存区域的基地址相对于数据区的基地址偏移,获取分区内存区域相对于数据区的相对地址,将相对地址作为偏移索引。
步骤S334:通过所述偏移索引以及基地址获取各核在所述共享内存区的虚拟地址。
步骤S335:各核通过所述虚拟地址将核内存映射到所述共享内存区。
可以将各核通过所述偏移索引将所述核间共享内存空间映射至各自的虚拟内存空间,实现多核核间的内存数据共享。
本申请方案中,偏移索引加上虚拟地址可以获取核内的基地址。
步骤S340:基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域,所述共享内存区包括多个分区内存区域。
步骤S350:根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区。
步骤S360:将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区。
步骤S370:将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核。
步骤S380:基于所述通知,所述已订阅线程获取所述目标数据。
步骤S340~步骤S380请参照步骤S110~步骤S150,在此不再赘述。
在本申请实施例方案中,发布者创建核间共享内存空间并初始化核间共享内存空间;且各核将核间共享内存空间映射至共享内存空间,以供发布者将数据存储于核间共享内存空间中,实现了多核异构间数据的零拷贝,避免了多个储存单元间进行数据倒换,提高了多核异构间数据交互的效率。
请参阅图7,图7示出了适用于上述各实施例的核间共享内存空间的示意图,核间共享内存空间包括索引区以及数据区,索引区包括由分区内存区域的ID(Toptic ID)以及偏移offset建立的索引表。数据区包括多个分区内存区域Topic,当存在有相同发布者或者相同流向或者相同类型的数据时,分区内存区域Topic还包括多个子分区内存区域subtopic,子分区内存区域sub Topic为一个环形链表数据结构,包括共享内存锁lock、数据头指示符header、深度指示符deep、当前缓存区指示符Current_buffer、下一个缓存区指示符Next_buffer、缓存描述符Ring以及多个缓存区Buffer,其中,缓存描述符Ring包括有用于存储缓存区的偏移索引以及缓存区内储存数据对应的时间戳的存储区desc,缓存描述符Ring的存储区desc与对应于一个缓存区Buffer,每个缓存区Buffer包括前缀区以及数据区Data,前缀区包括查阅共享内存锁lock,当前查阅数Current_subscriptions,数据DataSize。
当接收到传感器的数据,或者程序记录某些状态信息时,相关的处理程序发布者在核间共享内存获取对应Topic的内存空间,如果该Topic首次被发布,则该发布者需要为其申请核间共享内存空间。
发布者从数据区获取一块未被使用的,大小满足发布者定义的主题大小的Toptic,发布者将该Toptic的基地址相对于数据区的基地址的偏移offset记录在索引区的Topic记录表对应的Topic ID表项中,后续相同Topic的发布者根据Topic记录表索引该Topic。
发布者获得位于数据区的Topic数据结构的基地址后,通过Topic数据结构中的Next_buffer指示在Ring中获取下一个可用的Buffer,作为待发布数据的存入区域。注意,为了异构核互斥的需要,获取Next_buffer的步骤需要获取共享内存锁,获取后递增Next_buffer并释放锁;如果Next_buffer指示的区域与header指示重合,表面当前没有可用的Buffer,发布者需要延迟发布并反压后续的发布动作。
多发布者的情况下,由于获取Next_buffer到生成Ring的desc过程需要共享内存锁,因此具有多发布者下的保序作用。但保证了数据发布过程的无锁化,支持不同速率的的异构核的并行发布。
发布者完成数据发布之后,检查并更新Current_buffer,并通过核间组播消息或硬中断通知已订阅线程查阅该发布。
已订阅线程程序收到发布者的通知后触发查阅事件,已订阅线程递增前缀区域的当前查阅数,更改查阅者数需要先获取共享内存锁。已订阅线程根据Current_buffer获得当前最新消息,根据需要可额外获取最多深度的历史数据,获取历史数据也需要设置历史数据的当前查阅数。已订阅线程完成订阅后,递减当前查阅数并退出订阅流程。
当发布者发现当前Ring已没有空闲的desc,则启动回收流程,检查header指示的buffer的当前查阅数,若查阅数为0,则释放该Buffer并使用该Buffer发布新的数据。
本申请方案中,采用大片的共享内存作为异构核间数据交互的场所,核间交互数据从产生到消亡都在该内存中进行,实现数据核间交互的零拷贝,极大降低数据交换的时延。环形Buffer的使用,实现发布和订阅的异步共享,保证异构核在不同的读写速率下对共享内存的使用不会存在竞争,使发布和订阅流程无锁化,极大降低数据交换的时延。采用分布式发布/订阅系统,同一个发布者在系统中的发布数据只有一份,所有已订阅线程共享数据源,相比端到端的数据交互系统,这种一对多的数据交互系统效率更高。同时支持多发布者并行发布数据,支持发布主流程的无锁化,进一步提高系统数据发布的效率。而且采用去中心化的发布/订阅系统,避免主从模式下主核异常或重置导致的数据交互系统失效和重置。
请参考图8,其示出了本申请实施例提供的一种车辆的结构框图。车辆包括车身本体以及电子设备,。
该电子设备可以是车载终端等能够运行应用程序的电子设备。本申请中的电子设备可以包括一个或多个如下部件:控制器、处理器、存储器、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
控制器可以是CPU控制器、微程序控制器以及多核异构控制器,本申请方案中控制器为多核异构控制器,多核异构控制器用于控制多核异构通信。
处理器可以包括一个或者多个处理核。处理器利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行电子设备的各种功能和处理数据。可选地,处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器可集成中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器中,单独通过一块通信芯片进行实现。
存储器可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器可用于存储指令、程序、代码、代码集或指令集。存储器可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
发布者通过多核异构控制器将多核中的一个核在内存创建核间共享内存空间并初始化核间共享内存空间;且各核将核间共享内存空间映射至各自的虚拟内存空间,以供发布者将数据存储于核间共享内存空间中,实现了多核异构间数据的零拷贝,避免了多个储存单元间进行数据倒换,提高了多核异构间数据交互的效率。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种多核异构通信方法,其特征在于,所述方法包括:
基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域,所述共享内存区包括多个分区内存区域;
根据所述分区内存区域中的下一个缓存区指示符,获取所述目标数据的目标缓存区;
将所述目标数据存入所述分区内存区域中的目标缓存区,所述分区内存区域包括多个缓存区;
将所述目标数据的存入消息对已订阅所述目标数据的已订阅线程进行通知,所述已订阅线程来自所述多核;
基于所述通知,所述已订阅线程获取所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域之前,还包括:
获取线程的预设数据类型;
对比数据的数据类型以及所述预设数据类型;
若所述数据类型与所述预设数据类型一致,对所述数据进行订阅,获取所述数据的通知消息。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标数据存入所述分区内存区域中的目标缓存区,还包括:
启动所述缓存区对应的回收流程;
获取所述缓存区对应的当前查阅数;
若所述当前查阅数为0,将所述缓存区中的数据进行释放。
4.根据权利要求1所述的方法,其特征在于,所述分区内存区域包括共享内存锁,所述将所述目标数据存入所述分区内存区域中的目标缓存区,包括:
将所述共享内存锁进行置位;
获取所述目标缓存区对应的偏移索引,存储于所述目标缓存区对应的目标缓存区描述符中;
将所述共享内存锁进行复位;
将所述目标数据存入所述目标缓存区。
5.根据权利要求1所述的方法,其特征在于,所述基于所述通知,所述已订阅线程获取所述目标数据之后,还包括:
获取所述分区内存区域中所有缓存区的对应的深度指示符;
获取深度指示符最大对应的所述缓存区的历史数据;
递增所述缓存区中历史数据对应的当前查阅数。
6.根据权利要求1所述的方法,其特征在于,所述基于目标核的目标数据,从共享内存区中获取与所述目标数据的大小对应的分区内存区域之前,还包括:
通过多核中的一个核在内存创建共享内存区,所述共享内存区包括索引区以及数据区,所述索引区包括多个分区标识以及每个分区标识对应的偏移索引;
初始化所述共享内存区;
各核通过预设映射方式将核内存映射到所述共享内存区。
7.根据权利要求6所述的方法,其特征在于,所述初始化所述共享内存区,包括:
定义所述数据区中分区内存区域对应的数量;
定义每个所述分区内存区域中所述缓存区对应的数量以及所述每个缓存区对应的大小,所有所述分区内存区域中的缓存区大小之和小于或等于所述数据区的大小。
8.根据权利要求6所述的方法,其特征在于,所述各核通过预设映射方式将核内存映射到所述共享内存区,包括:
获取所述分区内存区域的基地址以及所述数据区的基地址;
将所述分区内存区域的基地址相对于所述数据区的基地址进行偏移,获取所述分区内存区域的相对地址;
将所述相对地址作为所述偏移索引;
通过所述偏移索引以及基地址获取各核在所述共享内存区的虚拟地址;
各核通过所述虚拟地址将核内存映射到所述共享内存区。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述分区内存区域为环形链表结构。
10.一种车辆,其特征在于,包括:车身本体以及电子设备,所述电子设备包括多核异构控制器以及存储器,所述多核异构控制器用于执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310003891.5A CN116107952A (zh) | 2023-01-03 | 2023-01-03 | 多核异构通信方法以及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310003891.5A CN116107952A (zh) | 2023-01-03 | 2023-01-03 | 多核异构通信方法以及车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116107952A true CN116107952A (zh) | 2023-05-12 |
Family
ID=86255567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310003891.5A Pending CN116107952A (zh) | 2023-01-03 | 2023-01-03 | 多核异构通信方法以及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107952A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116662037A (zh) * | 2023-07-24 | 2023-08-29 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
-
2023
- 2023-01-03 CN CN202310003891.5A patent/CN116107952A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116662037A (zh) * | 2023-07-24 | 2023-08-29 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
CN116662037B (zh) * | 2023-07-24 | 2023-10-20 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN111427859B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
JPH07101407B2 (ja) | スケジユーリング方法及び装置 | |
US20140082170A1 (en) | System and method for small batching processing of usage requests | |
WO2007084700A2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
US10140020B2 (en) | Data queue having an unlimited depth | |
CN111475759A (zh) | 一种消息推送平台、方法、装置、服务器和存储介质 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN116107952A (zh) | 多核异构通信方法以及车辆 | |
CN106385377B (zh) | 一种信息处理方法和系统 | |
CN110737536A (zh) | 一种基于共享内存的消息存储方法和消息读取方法 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
WO2016202153A1 (zh) | 一种gpu资源的分配方法及系统 | |
CN113867979A (zh) | 异构多核处理器数据通信方法、装置、设备及介质 | |
CN110069533B (zh) | 一种基于区块链的事件订阅方法及装置 | |
US10671459B2 (en) | Method and apparatus for peer-to-peer messaging in heterogeneous machine clusters | |
CN112579515B (zh) | 线程消息处理方法及相关产品 | |
CN116996449A (zh) | 数据报文处理系统、方法、计算机设备、存储介质 | |
JPH08241186A (ja) | バッファメモリ管理ユニット及びバッファメモリ管理方法 | |
CN117370046A (zh) | 进程间通信方法、系统、设备和存储介质 | |
CN102622271A (zh) | 用于多线程处理的使用信号量的方法和设备 | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
CN104572483A (zh) | 动态内存管理装置及方法 | |
CN115391053B (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
CN110990169A (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 |