2020-10-19

ARM-DSP通信的多种方式

本文档描述了TI多核设备上的通信方式。应用程序中的单个核心可以承担主机/设备或主/从的角色。这里的讨论假设主机/主集群是运行SMP/Linux的ARM集群,而设备/从服务器是运行TI-RTOS的C6xx DSP集群。
  1. OpenCL
    OpenCL是一个框架,用于编写跨异构系统执行的程序,以及用于表示跨异构设备分派并行计算的程序。这是一个开放的,没有版税的标准,由Khronos财团管理。在异构SoC上,OpenCL将其中一个可编程核心视为主机,将其他核心视为设备。运行在主机(即主机程序)上的应用程序管理设备上代码(内核)的执行,并且还负责使数据可供设备使用。设备由一个或多个计算单元组成。在ARM和DSP SoC上,每个C66xDSP都是一个计算单元。OpenCL运行时由两个组件组成:(1)用于主机程序创建和提交内核以供执行的API;(2)用于表示内核的跨平台语言–OpenCL C–它基于C99 C,并附加和限制了OpenCL支持数据并行和任务并行编程范例。数据并行执行使设备上的计算单元并行执行。任务并行执行允许向每个计算单元异步分派任务。有关更多信息,请参阅OpenCL用户指南。
    从运行Linux或RTOS的ARM到DSP的卸载计算

优点
方便设备之间的移植,不需要理解内存体系结构;
不需要担心MPAX和MMU;
不需要担心一致性;
不需要在ARM和DSP之间建立/配置/使用IPC;无需成为DSP代码、体系结构或优化方面的专家

缺点:
不能控制系统内存布局等,以处理优化的DSP代码

  1. DCE (Distributed Codec Engine) 分布式编解码引擎
    DCE框架为用户在设备(如AM57xx)上编写应用程序提供了一种简单的方法,该设备具有用于图像和视频的硬件加速器。它为从核上的音频和视频编码和解码提供了对硬件加速的远程访问。基于ARM用户空间GStreer的多媒体应用程序使用GStreer库加载并与TI GStreer插件接口,该插件处理硬件加速器所特有的所有细节。插件接口libdce模块,它提供ARM用户空间API。Libdce在ARM上使用RPMSG框架,与从核上的对应方通信。在从核上,采用编解码引擎和帧组件在IVA上进行视频/图像编解码处理。
    在这里插入图片描述

使用DCEA57xx作为示例的多媒体软件堆栈的概述具有以下加速器
图像和视频加速器(IVA)
视频处理引擎(VPE)
用于卸载特定图像/视频和/或语音/音频处理的C66XDSP内核

用户可以利用开源元素来提供诸如AVI流解码和音频编解码等功能。这些元素以及TI处理器LinuxSDK中基于ARM的GStreer插件提供了加速器卸载的摘要。
在AM57xx中,硬件加速器具有以下功能:

用于多媒体加密和解码的IVA视频解码:H264、MPEG-4、MPEG2和VC1
视频编码:H264和MPEG-4
图像解码:MJPEGVGE用于视频操作,例如缩放、颜色空间转换和去隔行以下格式:支持的输入格式:NV12、YUYV、UYVY
支持的输出格式:NV12、YUYV、UYVY、RGB24、ArgB24,和ABGR24用于卸载信号处理的DSP集成在DSPGStreamer插件中的示例图像处理内核:MEDIAN2X2、MEDIAN3X3、SOEL3X3、CONV5X5、CY
音频/视频或专用编解码器对从内核的卸载处理

优点:
加速多媒体编解码处理;
简化了与GStreer和TI GStreer插件接口时多媒体应用程序的开发。

缺点:
不适用于非编解码器算法
需要工作来添加新的编解码器算法
需要对DSP编程的知识

  1. Big Data IPC
    大数据是TI IPC实现的一个特殊用例,用于高性能计算应用程序和其他数据密集型应用程序,这些应用程序通常需要在SoC中的多核处理器之间传递大数据缓冲区。大数据IPC提供了一个高级抽象来处理大数据缓冲区上的地址转换和缓存同步。
    ARM与DSP之间的大小大于512字节的报文/数据交换

优化
能够处理大于512字节的数据
缺点
需要了解DSP内存体系结构
需要了解DSP的配置和编程
TI专利API。

  1. IPC
    处理器间通信(IPC)是为方便进程间通信而设计的一组模块.通信包括消息传递、流和链接列表。这些模块提供服务和功能,可用于多处理器环境下ARM和DSP处理器之间的通信。
    IPC模块初始化IPC的各个子系统,并同步多个处理器。
    MessageQ模块支持可变长度消息的结构化发送和接收。
    ListMP模块是一个基于链表的模块,旨在提供不同处理器之间的通信方式。它使用共享内存为多个处理器提供共享、传递或存储数据缓冲区、消息或状态信息的方法。
    HeapMP模块提供3种类型的内存管理、固定大小的缓冲区、多个不同的固定大小缓冲区和可变大小的缓冲区.
    GateMP模块通过其实例执行本地和远程上下文保护。通知模块通过硬件中断管理软件中断的复用/解复用。
    SharedRegion模块设计用于多处理器环境中,其中存在跨不同处理器共享和访问的内存区域。列表模块支持创建双链接的对象列表,MultiProc模块在多处理器环境中将处理器ID管理集中到一个模块中。
    NameServerModule管理本地名称/值对,这使得应用程序和其他模块能够基于名称来调整和检索值。
    ARM与DSP之间的消息/数据交换
    优点:
    适合那些熟悉dsp编程
    dsp代码优化的人。
    缺点:
    需要有关dsp内存结构的知识,
    需要了解dsp的配置和编程消息大小
    仅限于512字节
    TI专有api。
  2. 多种通信模式比较
    在这里插入图片描述

6.决策
在作出使用ARM/DSP通信方法的决策时,提供了以下简单流程图作为参考。在决策过程中还需要考虑硬件能力,如在使用DCE时存在图像和视频加速器。
在这里插入图片描述

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值