添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

嵌入式领域的处理器已向多核架构迅速发展,TI公司的KeyStone架构的TMS320C6678是目前市面上性能最高的多核DSP处理器。

TMS320C6678集成8核C66x DSP处理器,每个内核频率高达1.25 GHz,提供每秒高达40 GMAC定点运算和20 GFLOP浮点运算能力;1片TMS320C6678提供等效达10 GHz的内核频率,单精度浮点并行运算能力理论上可达160 GFLOP,是TS201S的50倍、C67x+的115.2倍,适合于诸如油气勘探、雷达信号处理、图像处理以及定位导航等对定浮点运算能力及实时性有较高要求的超高性能计算应用。

然而,核间通信是多核处理器系统所面临的主要难点,通信机制的优劣直接影响多核处理器的性能,高效的通信机制是发挥多核处理器高性能的重要保障。

创龙科技(Tronlong)专注于DSP、ARM、FPGA多核异构技术开发,本文为您介绍TMS320C6678处理器开发中比较常用的两种多核通信方式:TI-IPC和OpenMP,以及多核编程注意事项。

1 硬件平台

本文基于创龙科技TL6678-EasyEVM评估板进行演示。

TL6678-EasyEVM是一款基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点高性能处理器设计的高端多核DSP评估板,由核心板与底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。

评估板接口资源丰富,引出双路千兆网口、SRIO、PCIe等高速通信接口,方便用户快速进行产品方案评估与技术预研。

TL6678-EasyEVM评估板视频简介

开发案例主要包括:

(1) 裸机开发案例

(2) RTOS(SYS/BIOS)开发案例

(3) IPC、OpenMP 多核开发案例

(4) SRIO、PCIe、双千兆网口开发案例

(5) 图像处理开发案例

(6) DSP算法开发案例

(7) 串口、网络远程升级开发案例

C66x DSP视频教程、中文手册、产品资料(用户手册、核心板硬件资料、产品规格书)可点击下方链接或扫码二维码获取。

http://site.tronlong.com/pfdownload

2 TI-IPC

TI-IPC(Inter-Processor Communication)组件提供与处理器硬件无关的API,可用于多核处理器核间通信、同一处理器进程间通信和设备间通信。API支持消息传递、流和链接列表,它们在单处理器和多处理器中配置均可兼容。

TI-IPC被设计在运行SYS/BIOS应用程序的处理器上使用,一般为DSP处理器(如TMS320C6678、TMS320C6657),但在某些情况下亦可能是ARM处理器。

IPC常见的通信模块如下:

2.2.1 MessageQ

该模块具有如下特点:

(1) 兼容性强,可在不更改运行代码的情况移植至另一个支持TI-IPC MessageQ的处理器或其他传输层(如Shared Memory、Multicore Navigator、SRIO)。

(2) 支持可变长度消息的结构化发送与接收。

(3) 单个MessageQ队列支持单个reader和多个writer。

(4) 消息接收支持超时机制。

(5) reader可根据消息头部信息对writer进行确认后再回复。

(6) Ipc_start()会帮助用户完成下图中灰色框内的功能,用户仅需关注红色框中的内容即可,

MessageQ通过消息队列发送和接收消息。reader是一个从消息队列中读取消息的线程,writer是一个将消息写入消息队列的线程。每个消息队列都有一个reader,但可有多个writer。

■ reader:调用MessageQ_create()、MessageQ_get()、MessageQ_free()和MessageQ_delete()。

■ writer:调用MessageQ_open()、MessageQ_alloc()、MessageQ_put()和MessageQ_close()。

MessageQ常见的工作流程如下所示。

下面以多核IPC通信的shmIpcBenchmark案例为例,分析代码中MessageQ的使用,见图中注释。

2.2.2 Notify

该模块具有如下特点:

(1) 可独立于MessageQ模块进行使用。

(2) 着重于多核通知功能,是更为简单的多核通信形式。

(3)  仅可基于Shared Memroy方式进行使用。

Notify通过硬件中断传输消息,Receiver注册Notify事件中断,Sender通过Notify发送事件中断,从而实现通知并携带小量消息的目的。

■ Receiver:调用Notify_registerEvent()注册事件中断服务函数。

■ Sender:调用Notify_sendEvent()发送事件中断。

Notify常见的工作流程如下所示。

物理传输方式

TI-IPC的数据传输需结合特定物理硬件与底层驱动,方可实现两个线程在同一个设备或跨设备间进行通信。常用三种的物理传输方式包括Shared Memory、Multicore Navigator和SRIO,具体说明如下。

3 OpenMP

OpenMP是一种多核开发软件框架,其主要特性如下:

(1) 可跨平台使用,代码兼容性强。

(2) 以共享内存为通信基础。

(3) 支持C/C++以及Fortran语言。

(4) 一般基于SYS/BIOS运行。

#pragma omp 指令 [ 子句 [ [ [,] 子句 ] ... ]

以裸机的omp_matavec案例为例,使用场景的概要流程图如下。

C66xx_0核心创建主线程,通过OpenMP框架加载matvec算法至C66xx_0~C66xx_7核心进行并行运算,从而减少C66xx_0核心负载,并可加快运算速度。

以裸机的omp_matavec案例为例进行代码分析,见图中注释。

4 多核编程注意事项

多核单/多镜像

在开发过程中,需将程序可执行文件分别加载至对应的核心运行。此时需了解多核单/多镜像的优缺点,再根据实际情况进行选择。

多核单镜像

多核单镜像指所有核心运行完全相同的用户程序。

优点:仅需维护一个工程,管理便捷。

缺点:需兼容多个核心代码,程序可执行文件较大。

多核多镜像

多核多镜像指不同核心运行不同的用户程序。

优点:无需考虑各核心功能的兼容性,单个程序可执行文件较小。

缺点:需维护多个工程,管理不便。

所有核心共享外设,如SRIO、PCIe、Ethernet、SPI、I2C、EMIF等。在对外设进行初始化后,所有核心可在任意时间对外设进行读写,无需再次初始化。

(1) 注意区分全局与局部地址。

L1/L2SRAM有全局与局部两个地址,全局地址可被所有核心访问,但局部地址仅可被指定核心访问。

以C66xx_0核心的L2SRAM为例,对应的全局地址为0x10800000,局部地址为0x00800000。C66xx_0核心使用0x10800000或0x00800000,均可访问C66xx_0核心的L2SRAM。而C66xx_1核心使用0x00800000仅可访问C66xx_1核心的L2SRAM,使用0x10800000方可访问C66xx_0核心的L2SRAM。

L2SRAM全局与局部地址对应关系如下表:

(2) 注意避免内存冲突。

如数据需存放至MSMCSRAM、DDR3共享内存设备,请将对应内存划分为MSMCSRAM_MASTER段(主核使用)与MSMCSRAM_SLAVE段(从核使用),从而避免运行时内存冲突。

5 参考链接

https://training.ti.com/system/files/docs/keystone-intro-ipc-slides.pdf

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#ti-sdo-ipc-package

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#gatemp-support-for-uio-and-misc-driver

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#ti-sdo-utils-package

https://processors.wiki.ti.com/index.php/IPC_Users_Guide/MessageQ_Module

-OpenMP

http://processors.wiki.ti.com/index.php/OpenMP_on_C6000

https://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_User_Guide#OpenMP

http://community.topcoder.com/tc?module=Static&d1=features&d2=091106

-Multicore Programming Guide

https://www.ti.com/lit/an/sprab27b/sprab27b.pdf

6 免费试用

扫描下方二维码,即可申请TL6678-EasyEVM评估板进行快速评估,免费哦!

7 技术交流群

TMS320C6678 DSP交流群:79635273、332643352

8 更多推荐

基于IPC、OpenMP的C66x多核开发视频教程

更多方案,欢迎与Tronlong联系:

销售邮箱:sales@tronlong.com

技术邮箱:support@tronlong.com

创龙总机:020-8998-6280

技术热线:020-3893-9734

创龙官网:www.tronlong.com

技术论坛:www.51ele.net

官方商城:https://tronlong.taobao.com

创龙微信公众号

【长按识别二维码关注我们】

前 言嵌入式领域的处理器已向多核架构迅速发展,TI公司的KeyStone架构的TMS320C6678是目前市面上性能最高的多核DSP处理器。TMS320C6678集成8核C66x DSP...
为了更好地支持 多核 设备的配置,理解如何定义软件项目和操作系统分区非常重要。 在任何 多核 SOC的SYS/BIOS配置中,local L2内存(LL2RAM)和共享二级内存(SL2RAM)都有单独的内存部分。根据应用程序在多个核心之间的通用性,根据应用程序在多个核心之间的通用性,需要不同的配置来最小化操作系统和应用程序在设备内存中的占用空间。 Single Image 单个镜像应用程序在所有内核之间共享一些代码和数据内存。这种技术允许完全相同的应用程序在所有内核上加载和运行。如果运行完全共享的应用程序(当所有内
一.  Notify_sendEvent的实现过程 首先是从用户态的Notify_sendEvent函数开始 Int Notify_sendEvent (UInt16              procId,                   UInt16              lineId,                   UInt32              eventId
任务并行是软件中独立任务的执行。在单核处理器上,不同的任务必须共享同一个处理器。在 多核 处理器上,任务基本上彼此独立运行,从而提高了执行效率 将应用程序映射到 多核 处理器的第一步是确定任务的并行性并且选择最适合的处理模型 两个主要的模型: 1. 主/从模型:其中一个核控制所有核上的工作分配 2. 数据流模型:工作像流水线一样通过处理阶段 文章目录主/从模型(MASTER/SLAVE MODEL)数据流模型(DATA FLOW MODEL)OpenMP Model 主/从模型(MASTER/SLAVE MODE
随着越来越多的移动手持终端支持视频功能, 对于流媒体内容及实时通信的网 络支持需求也在显著上升。 虽然对已部署的 3G 媒体网关进行升级可以支持较 低的分辨率和帧速率, 但这种由于自身的有限处理能力而进行的升级并不能满 足视频成为主流应用的需求。 为了使可扩展视频应用能够支持高密度 (HD), 需要显著提高视频处理能力, 而 多核 数字信号处理器 ( DSP ) 不但拥有能满足此类需求的增强型视频处理功能, 同时还能充分满足运营商在可扩展性和低功耗方面的需求。 本文旨在介绍一种全新的多内核平台, 其能够通过优化内核通信、 任务管理及 存储器接入实现高密度视频处理能力, 此外, 本文还阐述了扩展实施的结果如 何支持多通道和多内核 HD 视频应用的高密度视频处理。
目录概述 C66x 处理器内核 C66x 流水线结构 C66X DSP 是最新一代定点和浮点 DSP ,由4个乘法器组成,以实施单精度浮点运算。 C66X DSP 内核可同时运行多大8项浮点乘法运算,加之高达1.4GHz的时钟频率,使其具有很高的浮点处理性能。将多个 C66x DSP 内核与其他内核融合,即可创建出具有初中性能的 多核 片上系统器件。本文以TMS320C6678为例,介绍 C66x 内核。 TMS320C6678具有8个 C66x 内核,内核工作主频最高可达1.4GHz,理论上具有179.2(22.4x8)GFLOP和
教程目录:http://blog.csdn.net/tostq/article/details/51245979 本节我们将运行第一个 多核 DSP 程序,熟悉CCS 开发 环境,学会使用CCS调试工具,主要内容如下: (1)新建CCS项目 (2)导入Target 仿真模块 (3)使用调试工具 一、新建CCS项目 选择File/New/CCS Project 二、新建项目对话框
前言:这篇学习笔记记录了在 DSP 上实现简单图像处理算法的image_processing例程。该例程在CCS安装时安装在目录下,主要实现了对图像的分割、灰度处理以及边缘检测。学会了调用和修改 DSP 例程以及图像处理基本程序框架。 1)打开CCS,import工程,目录为MCSDK\demos\image_processing,导入CCS中。注意目录下有好几个工程,我们选择serial版本的,只在一个核上实现bmp图像读取和简单处理。其他版本以后慢慢研究。
### 回答1: tms320 c66x keystone架构 多核 dsp 入门与实例精解.pdf 是一本介绍基于TMS320 C66x Keystone架构的 多核 DSP 编程 的实践性指南。本书分为四章,每一章都包含了多个实例,逐步深入讲解 多核 DSP 编程 的基本概念和实践技巧。 第一章主要介绍Keystone架构的基本特点、硬件资源和 多核 编程 的优势。第二章从单核到 多核 的转变上做了深入讲解,并且结合实例从基本的 多核 并行 编程 开始介绍了TMS320 C66x Keystone架构下的Event Manager、Message Manager、Mailbox和RM的使用方法。 第三章介绍了 DSP 封装的基本操作和解封装方法,同时讲解了运用RTDX技术实现 多核 DSP 互相通讯的方法。第四章讲解了 多核 DSP 异构计算的优越性和实践技巧。通过实例,讲解了提升 DSP 并行度的四种方法:分割、工作流分配、部署和确定性和非确定性计算。 总体来说,该书是一本聚焦于TMS320 C66x Keystone架构下 多核 DSP 编程 实践的入门指南和工具手册。需要注意的是,该书对读者在 DSP 编程 方面的基础知识要求较高,建议具备一定的 DSP 编程 经验再进行阅读。 ### 回答2: 《TMS320 C66x Keystone架构 多核 DSP 入门与实例精解》是一本介绍Keystone架构 多核 DSP 的入门教材,主要涵盖了Keystone架构、TMS320 C66x 多核 处理、 DSP 算法 开发 、实时系统 开发 等内容。 Keystone架构是一种高性能、低功耗、灵活可扩展的 DSP 架构,在 嵌入式 应用领域得到广泛应用。TMS320 C66x 是Keystone架构的一种实现,具有高达1.2Tops的处理能力和丰富的片上外设资源。 多核 处理是Keystone架构的重要特性之一,可以有效提高系统的性能和可靠性。 本书以 DSP 算法 开发 为主线,详细介绍了TMS320 C66x 的架构、资源配置、 多核 编程 DSP 算法 开发 等方面的内容。同时,还介绍了实时系统 开发 和性能优化等关键问题,为读者提供了一系列实践案例和经验总结。 本书适合从事 嵌入式 系统 开发 DSP 算法 开发 和实时系统 开发 等领域的工程师、学生和研究人员阅读。无论是初学者还是有一定经验的 开发 者,都可以从本书中获得有用的知识和实践经验,提高 开发 效率和系统性能。 ### 回答3: 《TMS320 C66x Keystone架构 多核 DSP 入门与实例精解》是一本介绍Texas Instruments公司TMS320 C66x 系列 多核 数字信号处理器的入门教材和实例精解。本书深入浅出地介绍了 DSP 的体系结构、系统架构、并行 编程 方法和实现技术等方面的知识,实例详尽而丰富,既全面系统地介绍了该系列 DSP 的基本概念和特性,又能够从实践出发,提供丰富的应用案例和技术经验。 全书分为十二章,从 DSP 基础知识讲起,逐渐深入介绍了Keystone系列 多核 DSP 的设计、接口和 编程 方法等方面的内容。每一章的末尾都有实验项目,让读者听取学到的知识进行实践,深入了解 多核 DSP 的特点和应用。 该书的优点在于深入浅出,易于理解。同时,该书的实例很丰富,从任务调度、矩阵乘法、FFT算法、卷积编码等实例都贴近实际,体现了 多核 DSP 的应用价值。该书对于学习 多核 DSP 的学生、工程师、技术人员都是很好的参考材料。