1 MPU进化,多核异构处理器有多强?A核与M核通信过程解析-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MPU进化,多核异构处理器有多强?A核与M核通信过程解析

飞凌嵌入式 2022-11-21 14:42 次阅读

随着市场对嵌入式设备功能需求的提高,市面上出现了集成嵌入式处理器和单片机的主控方案,以兼顾性能和效率。

在实际应用中,嵌入式处理器和单片机之间需要进行大量且频繁的数据交换,如果采用低速串行接口,则数据传输效率低,这将严重影响产品的性能;而如果采用高速并口,则占用管脚多,硬件成本将会增加。

为解决这一痛点,各大芯片公司陆续推出了兼具A核和M核的多核异构处理器,如NXP的i.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等。虽然这些处理器的品牌及性能有所不同,但多核通信原理基本一致,都是基于寄存器和中断传递消息,基于共享内存传输数据

以配电终端产品为例,A核负责通讯和显示等人机交互任务,M核负责采样和保护等对实时性要求较高的任务,双核间交互vwin 量、开关量和录波文件等多种信息,A核+M核的方案既满足了传统采样保护功能,又支持多种接口通信及新增容器等功能,符合国家电网现行配电标准。

71f7f882-67ab-11ed-b116-dac502259ad0.png通信过程整体架构说明

接下来小编将以NXP的i.MX8MP为例,借助飞凌OKMX8MP-C开发板分别从硬件层、驱动层、应用层介绍大致的通信实现流程以及实测效果

1. 硬件层通信实现机制

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

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

721d00d2-67ab-11ed-b116-dac502259ad0.png寄存器输入输出通信模型

(1)CoreA写入数据;

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

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

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

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

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

通过以上步骤,就完成了1次从CoreA向CoreB 传递消息的过程,反之亦然。

2. 驱动层Virtio下RPMsg通信实现

Virtio是通用的IO虚拟化模型,位于设备之上的抽象层负责前后端之间的通知机制和控制流程,为异构多核间数据通信提供了层的实现

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

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

723afcc2-67ab-11ed-b116-dac502259ad0.png主处理核与协处理核数据传递流程图

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

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

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

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

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

3. 应用层双核通信实现方式

在应用层,对A核可使用openwriteread函数对 /dev下设备文件进行调用;对M核,可使用rpmsg_lite_remote_initrpmsg_lite_sendrpmsg_queue_recv函数进行调用,不做重点阐述。

4. 实际使用效果

通过程序实测,M核和A核可以批量传输大数据。同样以配电产品为例——128点采样的录波文件大约为43K,若通过传统的串行总线传输方式,需要数秒才可完成传输

使用i.MX8MP的双核异构通信方案,只需要不到0.5秒即可传输完成,数据传输效率提升数十倍!同时还避免了串行总线易受EMC干扰的问题,提高了数据传输稳定性,简化了应用编程,可满足用户快速开发的需求。

以上就是多核异构处理器中A核与M核通信过程的解析,想要了解具体详细程序实例,可到【飞凌嵌入式官方微信公众号】回复关键词“程序实例”查看

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19259

    浏览量

    229643
收藏 人收藏

    评论

    相关推荐

    基于IMX8MM处理器Cortex-A和Cortex-M的RPMsg通信方案

    RPMsg全称为 remote processor messages,是一种基于virtio的消息传递总线,专为异构处理器系统之间的通信设计。
    的头像 发表于 12-06 10:07 1648次阅读
    基于IMX8MM<b class='flag-5'>处理器</b>Cortex-<b class='flag-5'>A</b><b class='flag-5'>核</b>和Cortex-<b class='flag-5'>M</b><b class='flag-5'>核</b>的RPMsg<b class='flag-5'>通信</b>方案

    全志T113双异构处理器的使用基于Tina Linux5.0——异构通信验证

    6、双通信验证 6.1、C906小创建通讯节点 在C906小串口终端建立两个通讯节点用于监听数据,输入eptdev_bind test 2 cpu0 >eptdev_bin
    发表于 11-20 09:47

    基于全志T113-i多核异构处理器的全国产嵌入式核心板简介

    嵌入式核心板。ECK30系列核心板可广泛应用于工业控制、HMI、IoT等领域。 全志公司的T113-i处理器是由双ARM Cortex-A7、RISC-V和HiFi4 DSP三种异构
    的头像 发表于 10-25 13:40 276次阅读

    MicroBlaze V软处理器的功能特性

    本指南提供了有关 AMD Vivado Design Suite 中包含的 32 位和 64 位 MicroBlaze V 软处理器的信息。该文档旨在用作为处理器硬件架构的指南,随附《RISC-V 指令集手册》第一卷和第二卷。
    的头像 发表于 10-16 09:17 445次阅读
    MicroBlaze V软<b class='flag-5'>核</b><b class='flag-5'>处理器</b>的功能特性

    【米尔NXP i.MX 93开发板试用评测】1、异构核心通信的技术内容

    多核系统通常包含具有不同性能和功能的不同类型处理器核心,例如,一个系统可能同时包含高性能的ARM Cortex-A核心和低功耗的ARM Cortex-M核心。 NXP的RPMsg-Li
    发表于 09-21 20:24

    基于国产异构(RISC-V+FPGA)处理器,AG32开发板开发资料

    基于国产异构(RISC-V+FPGA)处理器,AG32VF407系列32位微控制相当于主频248MHZMCU+2KLES(FPGA)。内部通过AHB总线,把MCU和FPGA链接在
    发表于 09-02 17:13

    浅谈国产异构RISC-V+FPGA处理器AG32VF407的优势和应用场景

    关于国产异构RISC-V+FPGA处理器AG32VF407的具体优势和应用场景浅谈如下: 优势 异构计算能力 : 异构
    发表于 08-31 08:32

    关于2K1000LA的间中断

    的地址都不一样,我应当使用哪个地址作为正确的寄存地址呢? 另外,我似乎不是很明白手册中对处理器间中断与通信的描述: 这个章节并没有提到上面的COREx_INTISRy寄存
    发表于 08-27 22:04

    复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

    FMQL20S400M是复旦微四ARM Cortex-A7@1GHz(PS端)+85K可编程逻辑资源(PL端)异构多核SoC
    发表于 08-22 14:04

    君正X2600在3D打印机上的优势:多核异构,远程控制与实时控制

    在当前的3D打印机领域,君正的X2600芯片以其独特的优势引起了业界的广泛关注。这款多核异构芯片,拥有两个大和一个小的RISC-V处理器,不仅能够
    的头像 发表于 08-02 16:56 434次阅读

    瑞萨电子RZ/V2H MPU提升机器人与自主应用中的AI性能和实时控制

    除了这个AI加速之外,高端RZ/V2H微处理器MPU)——还配备了使用动态可配置处理器(DRP)的图像处理加速
    发表于 07-15 17:51 695次阅读
    瑞萨电子RZ/V2H <b class='flag-5'>MPU</b>提升机器人与自主应用中的AI性能和实时控制

    多核异构通信框架(RPMsg-Lite)

    概要 随着科技的飞速发展,计算需求日益复杂和多样化,传统的单核处理器已难以满足所有应用场景的需求。在这样的背景下,异构多核系统应运而生,成为推动计算领域进步的重要力量。异构
    的头像 发表于 03-08 18:20 5405次阅读
    <b class='flag-5'>多核</b><b class='flag-5'>异构</b><b class='flag-5'>通信</b>框架(RPMsg-Lite)

    基于嵌入式RISC-V处理器轻松实现DSP扩展设计

    基于已开发的嵌入式或应用处理器 (如L31等)
    的头像 发表于 02-28 13:35 965次阅读
    基于嵌入式RISC-V<b class='flag-5'>处理器</b><b class='flag-5'>核</b>轻松实现DSP扩展设计

    如何提高处理器的性能

    提高处理器主频可以提高处理器的性能,但是到一定程度就不能再提高了,我们需要通过双,或者多核来提高处理器的性能。
    的头像 发表于 01-24 09:59 2441次阅读
    如何提高<b class='flag-5'>处理器</b>的性能

    瑞萨RZ/G2L MPU多核异构设计及通信方案

    在当今的工业和消费电子应用中,系统需求日益增长,不仅要求执行复杂的控制任务,还需要实时地采集和处理数据。为了满足这些需求,多核异构处理器成为了一种流行的解决方案。这类
    的头像 发表于 01-08 12:18 1802次阅读
    瑞萨RZ/G2L <b class='flag-5'>MPU</b>的<b class='flag-5'>多核</b><b class='flag-5'>异构</b>设计及<b class='flag-5'>通信</b>方案