MCAPI多核软件开发
基于MCAPI的多核软件开发方法
随着技术的进步,电子产品更新换代的速度越来越快。单纯提高主频来提升系统性能的方式已经接近瓶颈,而使用多片处理器搭建系统又不符合产品的小型化要求。传统的单核处理器已经不能满足日益增长的性能需求,能够完成并行任务处理的多核处理器应运而生。现代多核处理器主要依靠增加核数而不是频率来提升性能,同时芯片的高集成度也带来了资源调度和功耗等问题。随着多核处理器并行度的增加,各类同构、异构多核处理器的出现使得软件开发面临着巨大的挑战。如何在多核上高效地实现算法,如何合理地分配资源都是需要解决的问题。
一、多核DSP器件简介
TMS320C6678是德州仪器公司(Texas Instruments,TI)在2010年推出的一款经典的同构多核数字信号处理器(Digital Signal Processor,DSP),包含8个DSP内核,每个核在1.4GHz的最高工作频率下性能可达到22.4G每秒浮点运算次数(FLoating—point Operations Per Second,FLOPS),支持Hyperlink等多种高速接口,可广泛用于移动通信、医疗电子、高性能计算等领域。
核间通信(InterP rocessor Communication,IPC)以及核与外设的通信是多核软件开发的关键所在。针对这一需求,德州仪器公司在其新一代Keystone架构的处理器上提供了多核导航器,包括硬件队列管理器和基于包的直接存储访问(Direct Memory Address,DMA),以实现核间高速数据传输。使用多核导航器进行核问通信,可以通过软件对相应的控制寄存器进行读写和查询实现,也可通过内部硬件进行事件触发实现,这种方式可大大简化核间通信处理,但是仍存在缺点。一旦软件拓扑结构发生改变,或者需要调整核的运算负载来提升系统性能时,这部分工作量很大,而且应用受限于厂商。
二、多核通信应用程序接口概述
多核通信应用程序接口MCAPI(Muhicore Communications Application Program Interface)是由多核联盟提出的基于消息传递的轻量级应用程序接口标准,特别适用于嵌人式系统处理器核间通信和同步。MCAPI的应用不受处理器核的数目、处理器架构以及操作系统的限制,并且提供了源码级的兼容性支持,可扩展性很强。相对于普通的多片处理器间通信来说,多核处理器的核间通信普遍要求低延迟、高带宽。大部分多核处理器都包含片上存储器或高速缓存(cache)。为了避免出现计算瓶颈,核间通信需要减少不必要的存储器访问。MCAPI中定义了域(domain)、节点(node)、端点(end.point)、通道(channe1)等关键概念。域是依赖于具体实现的,既可以是具有多个处理器核的单个芯片,也可以是板上的多个处理器。节点可以是线程、处理器或硬件加速器等,通常可用处理器核作为节点。端点是类似于套接字的通信点,一个节点通常包括多个端点。通道提供了一对端点之间的点到点的先人先出First In First Out,FIFO)存储器用于通信,方向为单向的。
此外,MCAPI定义了3种通信基本类型:消息、包通道和标量通道。消息是最常用的通信类型,提供了端点之间收发数据的机制,支持优先级动态调整,可用于同步、初始化和负载平衡。包通道和标量通道提供了轻量级的流通信机制,相应的程序开销很小。
三、基于Poly—Platform工具的多核软件开发流程
3.1Poly—Platform工具简介
Poly—Platform是Poly Core公司提供的针对多核软件开发的集成开发工具套件,包含Poly-Mapper、Poly-Generator、Poly—Messenger/MCAPI、Poly—Templates等功能模块。采用该工具进行开发可以基于MCAPI标准建立应用程序节点,利用用户图形界面(Graphical User Interfaces,GUI1向导自动生成代码,在几乎不修改源代码的基础上,实现应用程序在同构多核、异构多核、多处理器等不同平台上的灵活配置和扩展,不受限于厂商,应用前景广阔。
3.2多核软件开发流程
将Poly—Platform软件使用插件方式集成到Eclipse软件环境中后会在TI的Code Composer Studio开发环境下出现相应的菜单和选项,即可进行基于Poly—Platform的多核软件开发。这里选择TMS320C6678多核DSP器件进行开发,并且以8个DSP核之间依次相连并传递数据的环形拓扑结构为例描述开发流程。
(1)建立拓扑结构。首先建立一个拓扑(Topology)工程,拓扑主要描述了应用程序在(多核)平台上的映射关系。借助Poly—Mapper工具在建立工程后生成的拓扑映射文件中进行属性设置,选择处理器类型,设置节点个数为8(对应8个DSP核),名称分别为N0一N7,操作系统为TI的DSP专用操作系统。然后在拓扑图中绘制8个节点,并在每个节点中间绘制一条链路(1ink),得到环形结构的8节点拓扑结构图。
(2)建立内存映射文件并分配资源。建立内存映射文件并分配若干个段(section1,设置其起始地址、大小、方向等参数。这些段分别用于内存访问区域(Memory Access Regions,MARs)和链路(1ink)。其中内存访问区域包括一些常用的资源池(poo1),如消息池、消息队列池、数据池、等待池等,不同节点之间通过MARs共享资源可以提高资源利用效率,提升系统性能。
(3)在拓扑结构图中进行内存映射。针对每一个节点(N0一N7),设置其可访问的内存访问区域。然后,还需要对内存访问区域包含的每一个资源池进行参数设置,如起始地址等。同样地,对链路也需要进行参数设置。
(4)建立节点工程。这里与常规的DSP开发流程基本一致,针对8个节点(对应处理器核)分别建立节点工程,然后需要将这8个节点工程与第一步建立的拓扑工程建立映射关系。
(5)编写初始化代码和配置文件。首先利用Poly—Generator工具将拓扑结构图转化为基于拓扑定义的C语言和相应的头文件,并存放到每个节点工程的工作目录下。然后利用Polv—Template工具,按照软件自带的MCAPI模板,自动为每个节点工程生成节点初始化文件和硬件初始化文件。最后编写TI专用的实时软件组件Real Time Software Component,RTSC)配置文件和用于存储器分配的连接器命令文件。
(6)编写每个节点工程的主函数。主函数主要内容包括调用节点初始化函数,硬件初始化函数,以及节点之间消息收发的函数(基于MCAPI)等。这些都可以利用Poly—Template工具提供的模板快速完成。
(7)编写每个节点工程的应用程序。将用户的算法进行代码实现并加入节点工程,这一步与常规的DSP开发流程完全一致。
(8)建立目标配置文件和RTSC平台。首先建立用于仿真调试的目标配置文件,然后建立RTSC平台用于硬件配置,并将其加入节点工程。这些都是TI专用的文件。
(9)编译、调试、运行。对每个节点工程进行编译、调试、运行,观察程序运行结果。注意不要编译拓扑工程。
(10)程序性能分析和优化。借助Poly—inspector工具提供的交互式报告环境,可以对多核软件实现进行性能分析,方便用户进行程序优化和调整。
结论
当前计算环境变得越来越多元化,DSP、可编程逻辑器件(Field Programmable Gate Array,FPGA)、图形处理器(Graphics Processing Unit,GPU)都具有较强的运算能力,并适用于不同的应用场合。多核处理器是当前的研究热点,而高集成度的异构多核处理器是未来的发展趋势。基于多核的软件开发始终是一个难点,给软件开发人员带来了巨大的挑战。本文提出的基于MCAPI的多核软件开发方法可应用于同构多核、异构多核以及多处理器平台,通用性较强,不受厂商、处理器、操作系统的限制,可帮助用户简化软件设计和优化过程中的拓扑设计、运算负载平衡以及核间通信和资源分配等工作,显著地提升开发效率。
以上就是我们深圳市组创微电子有限公司为您介绍的基于MCAPI的多核软件开发方法。如果您有智能电子产品的软硬件功能开发需求,可以放心交给我们,我们有丰富的电子产品定制开发经验,可以尽快评估开发周期与IC价格,也可以核算PCBA报价。我们是多家国内外芯片代理商:松翰、应广、杰理、安凯、全志、realtek,有MCU、语音IC、蓝牙IC与模块、wifi模块。我们的拥有硬件设计与软件开发能力。涵盖了电路设计、PCB设计、单片机开发、软件定制开发、APP定制开发、微信公众号开发、语音识别技术、蓝牙wifi开发等。还可以承接智能电子产品研发、家用电器方案设计、美容仪器开发、物联网应用开发、智能家居方案设计、TWS耳机开发、蓝牙耳机音箱开发、儿童玩具方案开发、电子教育产品研发。
- 返回顶部