A核与M核异构通信过程解析
创始人
2024-01-08 04:07:16
0

原标题:A核与M核异构通信过程解析

前言

目前域控项目有的采用S32G这类多核异构的芯片,转载一篇分析下多核异构中A核与M核通信过程的文章。

正文

  • 一、 硬件层通信实现原理
  • 二、驱动层Virtio下RPMsg通信实现
  • 三、应用层双核通信实现方式

现在越来越多的产品具有M core和A core的异构架构,既能达到M核的实时要求,又能满足A核的生态和算力。比如NXP的i.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等。虽然这些处理器的品牌及性能有所不同,但多核通信原理基本一致,都是基于寄存器和中断传递消息,基于共享内存传输数据。

通信过程整体架构说明

一、 硬件层通信实现原理

通过物理内存DDR分配,将硬件层分为了两部分:TXVring Buffer(发送虚拟环状缓冲区)和RXVring Buffer(接收虚拟环状缓冲区);其中M核从TXVring区发送数据,从RXVring区读取接收数据,A核反之。

处理器支持消息传递单元(MessagingUnit,简称MU)功能模块,通过MU传递消息进行通信和协调,M核和A核之间通过寄存器中断的方式传递命令,最多支持4组MU双向传递消息,既可通过中断告知对方数据传递的状态,也可发送最多4字节数据,还可在低功耗模式下唤醒对方,是保证双核通信实时性的重要手段。

下面看下完成了1次从CoreA向CoreB 传递消息的具体过程:

寄存器输入输出通信模型

(1)CoreA写入数据;

(2)MU将Tx 空位清0,Rx满位置1;

(3)产生接收中断请求,通知CoreB接收状态寄存器中的接收器满,可以读取数据;

(4)CoreB响应中断,读取数据;

(5)CoreB读完数据后,MU将Rx满位清0,Tx空位置1;

(6)状态寄存器向CoreA生成发送中断请求,告知CoreB读完数据,发送寄存器空。

二、驱动层Virtio下RPMsg通信实现

virtio 是一个通用的 I/O 虚拟化框架, 位于设备之上的抽象层,负责前后端之间的通知机制和控制流程,为异构多核间数据通信提供了层的实现。hypervisor 通过他模拟出一系列的虚拟化设备,例如:virtio-net、virtio-blk等,并使得这些设备在虚拟机内部通过 api 调用的方式变得可用。它包含4个部分:前端驱动、后端驱动、 vring 及通信间统一的接口。与其他的模拟 I/O 方式对比, virtio 减少了虚拟机的退出和数据拷贝,能够极大地提高 I/O 性能。计算机中存在不同的总线标准,而 virtio 采用的是 pci 总线(当然也可以用其他总线来实现)。每一个 virtio 设备就是一个 pci 设备。

  • virtio前端驱动

virtio 前端驱动位于 Linux 内核中,运行在虚拟机 VM,针对不同类型的设备有不同类型的驱动程序,包括virtio-net、virtio-blk、virtio-pci等,这些驱动程序与后端驱动交互的接口都是统一的。

  • virtio层

virtio层实现虚拟队列接口,作为前后端通信的桥梁,不同类型的设备使用的虚拟队列数量不同,例如 virtio-net 使用两个虚拟队列,一个用于接收,一个用于发送;virtio-blk 驱动仅使用一个虚拟队列。虚拟队列实际上被实现为跨越客户机操作系统和 hypervisor 的衔接点,可以通过任意方式实现,前提是客户机操作系统和 virtio 后端程序都遵循一定的标准,以相互匹配的方式实现它。

  • virtio-ring层

virtio-ring 是虚拟队列的具体实现,其中实现了环形缓冲区(ring buffer),用于保存前端驱动和后端处理程序执行的信息,并且它可以一次性保存前端驱动的多次I/O请求,并且交由后端驱动去批量处理,最后实际调用宿主机中设备驱动实现物理上的I/O操作,这样做就可以根据约定实现批量处理而不是客户机中每次I/O请求都需要处理一次,从而提高客户机与 hypervisor 信息交换的效率。

  • virtio后端驱动

virtio 后端驱动位于 qemu ,后端设备承担的主体功能分为两部分:

  1. virtio后端设备的模拟;
  2. 依据virtio协议处理来自虚拟机端发送的请求。

在 QEMU 的实现中, virtio 设备是 QEMU 为虚拟机模拟的 PCI 设备,遵循 PCI-SIG 定义的 PCI 规范,具有配置空间、中断配置等功能;virtio 后端驱动运行在宿主机中,用于实现 virtio 后端操作硬件设备,例如向内核协议栈发送一个数据包完成虚拟机对网络数据的操作。

RPMsg消息框架是Linux系统基于Virtio缓存队列实现的主处理核和协处理核间进行消息通信的框架,当客户端驱动需要发送消息时,RPMsg会把消息封装成Virtio缓存并添加到缓存队列中以完成消息的发送,当消息总线接收到协处理器送到的消息时也会合理地派送给客户驱动程序进行处理。

在驱动层,对A核,Linux采用RPMsg框架+Virtio驱动模型,将RPMsg封装为了tty文件供应用层调用;在M核,将Virtio移植,并使用简化版的RPMsg,因为涉及到互斥锁和信号量,最终使用FreeRTOS完成过程的封装,流程框图如下方所示。

主处理核与协处理核数据传递流程图

(1)Core0向Core1发送数据,通过rpmsg_send函数将数据打包至Virtioavail链表区;

(2)在avail链表寻找共享内存中空闲缓存,将数据置于共享内存中;

(3)通过中断通知Core1数据到来,共享内存由avail链表区变至used区;

(4)Core1收到中断,触发rpmsg的接收回调函数,从used区获取数据所在的共享内存的物理地址,完成数据接收;

(5)通过中断通知Core0数据接收完成,共享内存缓存由used区变为avail区,供下次传输使用。

三、应用层双核通信实现方式

在应用层,对A核可使用open、write和read函数对 /dev下设备文件进行调用;对M核,可使用rpmsg_lite_remote_init、rpmsg_lite_send和rpmsg_queue_recv函数进行调用,不做重点阐述。从整体架构上看,关系如下:

本文来源:汽车电子嵌入式

相关内容

热门资讯

从“遥感脑”到“工业大模型” ... 中新网西安7月7日电 (阿琳娜 王格)“秦岭·西电遥感脑”作为全球首个国产雷达遥感大模型,在数字秦岭...
苏州智合源取得新型自动化SMT... 金融界2025年7月7日消息,国家知识产权局信息显示,苏州智合源电子科技有限公司取得一项名为“一种新...
霞浦县疾控中心举办DeepSe... 为积极推动人工智能技术在疾控领域的深度创新应用,2025年7月3日下午,霞浦县疾病预防控制中心召开D...
精细感知实现智能识别,普惠各大... 文/吴苡婷 《上海科技报》高级记者,中国科技新闻学会科技传播理论研究专委会理事。 目前,中国各大行业...
外媒列出7个必了解的iOS 2... 【CNMO科技消息】随着苹果iOS 26系统正式版即将发布,越来越多的细节功能被曝光。除了备受关注的...
吕梁:以赛为媒—以赛事促发展 7月5日,吕梁市第四届“开路杯”机器人编程大赛在吕梁经开区数字经济产业园一期成功举办。本次大赛以“码...
中国科学院大学洪慧:聚光太阳能... “积极发展光热发电”已写入2025年1月1日起正式施行的《中华人民共和国能源法》。光热发电是保障能源...
小米销售预测YU7价格被辞退?... 【CNMO科技消息】此前,小米汽车即将发布新车型YU7的消息引发广泛关注。一名小米汽车销售将预测的Y...
“一核两翼三融合”:VR育人的... 在江西省加速打造虚拟现实产业高地的浪潮中,南昌航空大学艺术与设计学院韩欣莹团队构建的“一核两翼三融合...
时代电气:海工装备成功服务深海... 证券之星消息,时代电气(688187)07月07日在投资者关系平台上答复投资者关心的问题。 投资者提...
杭州这所高校打造科普活动:下一... 潮新闻客户端 通讯员 王聪 7月2日下午,由杭州万向职业技术学院智能技术系(以下简称:智能技术系)党...
解读字节最新的人才观 解读字节最新的人才观 2025年6月10号,字节跳动发布了最新的人才观。一共是6条,我发现和我内心...
海洋中新发现230种巨型病毒,... 著名的咸潘多拉病毒,直径达到1微米,基因组包含190万到250万碱基对的DNA(图片来源:维基媒体 ...
宁波加速探索“人工智能+” 殷 聪 数据显示,2025年前5个月,宁波市人工智能规上核心制造业总产值同比增长18.5%,高于全市...
原创 深... 在众多适合人类探索的星球中,火星之所以脱颖而出,成为移民的首选地,是因为它与地球有着诸多相似之处。 ...
新三级医院信息化建设:智慧医疗... 免责声明 本文引用的参考文献搜集于互联网,非原创,如有侵权请联系小编删除! 请勿将该文章用于任何商业...
业内强势定调反内卷!光伏设备或... 7月,中央财经委员会第六次会议强调:纵深推进全国统一大市场建设,要聚焦重点难点,依法依规治理企业低价...
这个暑假,与科技来一次亲密接触 6月26日,在安徽省科技馆新馆,小朋友们在“新能源赛车场”上比拼。 6月27日,在安徽创新馆,来自...
中国科技馆2025“科学方法特... 人民网北京7月7日电(记者池梦蕊)7月5日,“科学方法特训营”暑期营地系列活动首场——“星际启航”营...
彻底戳穿AI「失忆症」!超越O... 新智元报道 编辑:编辑部 【新智元导读】大语言模型越来越「聪明」,但缺失记忆:记不住、改不了、学得...