《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于MCAPI的多核软件开发方法
基于MCAPI的多核软件开发方法
2016年电子技术应用第1期
祝昇翔,贺志毅
北京遥感设备研究所,北京100854
摘要: 提出了一种基于多核通信应用程序接口(MCAPI)标准的多核软件开发方法,该标准提供了基于消息传递的API,适用于核间通信,大大提高了应用程序在多核处理器上的可移植性。采用poly-platform软件工具进行多核软件开发,首先建立拓扑结构,然后定义节点工程,完成存储分配等工作,再利用MCAPI模板完成节点间通信,最后编制各个节点的应用程序。该软件开发流程独立于厂商、器件和操作系统,可将应用程序快速灵活地映射到不同的同构和异构多核架构上,大大提高了多核软件的开发效率。
中图分类号: TP311.52
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.01.007
中文引用格式: 祝昇翔,贺志毅. 基于MCAPI的多核软件开发方法[J].电子技术应用,2016,42(1):31-33.
英文引用格式: Zhu Shengxiang,He Zhiyi. A multicore software development method based on MCAPI[J].Application of Electronic Technique,2016,42(1):31-33.
A multicore software development method based on MCAPI
Zhu Shengxiang,He Zhiyi
Beijing Institute of Remote Sensing Equipment,Beijing 100854,China
Abstract: This paper presents a multicore software development method based on multicore communications application program interface(MCAPI)standard. This standard which provides APIs based on message is used for inter processor communication(IPC). It improves the portability of application programs on multicore processors. A software tool named poly-platform is used for multicore software development. At first,the topology is set up. Then a node project is defined and memories are allocated. The template of MCAPI is used for generating codes for communications among nodes.Finally,application programs of every nodes should be finished.This procedure of software development is independent of companies,devices and operating systems.It could map the application programs to different homogeneous and heterogeneous multicore architectures quickly and flexibly,improve the efficiency greatly.
Key words : multicore communications application program interface;inter processor communication

0 引言

    随着技术的进步,电子产品更新换代的速度越来越快。单纯提高主频来提升系统性能的方式已经接近瓶颈,而使用多片处理器搭建系统又不符合产品的小型化要求。传统的单核处理器已经不能满足日益增长的性能需求,能够完成并行任务处理的多核处理器应运而生。现代多核处理器主要依靠增加核数而不是频率来提升性能,同时芯片的高集成度也带来了资源调度和功耗等问题。随着多核处理器并行度的增加,各类同构、异构多核处理器的出现使得软件开发面临着巨大的挑战。如何在多核上高效地实现算法,如何合理地分配资源都是需要解决的问题。

1 多核DSP器件简介

    TMS320C6678是德州仪器公司(Texas Instruments,TI)在2010年推出的一款经典的同构多核数字信号处理器(Digital Signal Processor,DSP)[1],包含8个DSP内核,每个核在1.4 GHz的最高工作频率下性能可达到22.4 G每秒浮点运算次数(FLoating-point Operations Per Second,FLOPS),支持Hyperlink等多种高速接口,可广泛用于移动通信、医疗电子、高性能计算等领域。

    核间通信(Inter Processor Communication,IPC)以及核与外设的通信是多核软件开发的关键所在。针对这一需求,德州仪器公司在其新一代Keystone架构的处理器上提供了多核导航器,包括硬件队列管理器和基于包的直接存储访问(Direct Memory Address,DMA),以实现核间高速数据传输。使用多核导航器进行核间通信,可以通过软件对相应的控制寄存器进行读写和查询实现,也可通过内部硬件进行事件触发实现,这种方式可大大简化核间通信处理,但是仍存在缺点。一旦软件拓扑结构发生改变,或者需要调整核的运算负载来提升系统性能时,这部分工作量很大,而且应用受限于厂商。

2 多核通信应用程序接口概述

  多核通信应用程序接口MCAPI(Multicore Communications Application Program Interface)是由多核联盟提出的基于消息传递的轻量级应用程序接口标准[2],特别适用于嵌入式系统处理器核间通信和同步。MCAPI的应用不受处理器核的数目、处理器架构以及操作系统的限制,并且提供了源码级的兼容性支持,可扩展性很强。

    相对于普通的多片处理器间通信来说,多核处理器的核间通信普遍要求低延迟、高带宽。大部分多核处理器都包含片上存储器或高速缓存(cache)。为了避免出现计算瓶颈,核间通信需要减少不必要的存储器访问。

    MCAPI中定义了域(domain)、节点(node)、端点(endpoint)、通道(channel)等关键概念。域是依赖于具体实现的,既可以是具有多个处理器核的单个芯片,也可以是板上的多个处理器。节点可以是线程、处理器或硬件加速器等,通常可用处理器核作为节点。端点是类似于套接字的通信点,一个节点通常包括多个端点。通道提供了一对端点之间的点到点的先入先出(First In First Out,FIFO)存储器用于通信,方向为单向的。

    此外,MCAPI定义了3种通信基本类型:消息、包通道和标量通道。消息是最常用的通信类型,提供了端点之间收发数据的机制,支持优先级动态调整,可用于同步、初始化和负载平衡,如图1所示。包通道和标量通道提供了轻量级的流通信机制,相应的程序开销很小。

qrs1-t1.gif

3 基于Poly-Platform工具的多核软件开发流程

3.1 Poly-Platform工具简介

    Poly-Platform是PolyCore公司提供的针对多核软件开发的集成开发工具套件[3],包含Poly-Mapper、Poly-Generator、Poly-Messenger/MCAPI、Poly-Templates等功能模块。采用该工具进行开发可以基于MCAPI标准建立应用程序节点,利用用户图形界面(Graphical User Interfaces,GUI)向导自动生成代码,在几乎不修改源代码的基础上,实现应用程序在同构多核、异构多核、多处理器等不同平台上的灵活配置和扩展,不受限于厂商,应用前景广阔。

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个节点,并在每个节点中间绘制一条链路(link),得到环形结构的8节点拓扑结构图,如图2所示。

qrs1-t2.gif

    (2)建立内存映射文件并分配资源。建立内存映射文件并分配若干个段(section),设置其起始地址、大小、方向等参数。这些段分别用于内存访问区域(Memory Access Regions,MARs)和链路(link)。其中内存访问区域包括一些常用的资源池(pool),如消息池、消息队列池、数据池、等待池等,不同节点之间通过MARs共享资源可以提高资源利用效率,提升系统性能。链路即对应拓扑结构图(见如图2)中各节点之间的通信链路,

    (3)在拓扑结构图中进行内存映射。针对每一个节点(N0—N7),设置其可访问的内存访问区域。然后,还需要对内存访问区域包含的每一个资源池进行参数设置,如起始地址等。同样地,对链路也需要进行参数设置。

    (4)建立节点工程。这里与常规的DSP开发流程基本一致,针对8个节点(对应处理器核)分别建立节点工程,然后需要将这8个节点工程与第一步建立的拓扑工程建立映射关系。

    (5)编写初始化代码和配置文件。首先利用Poly-Generator工具将拓扑结构图转化为基于拓扑定义的C语言和相应的头文件,并存放到每个节点工程的工作目录下。然后利用Poly-Template工具,按照软件自带的MCAPI模板,自动为每个节点工程生成节点初始化文件和硬件初始化文件。最后编写TI专用的实时软件组件(Real Time Software Component,RTSC)配置文件和用于存储器分配的连接器命令文件。

    (6)编写每个节点工程的主函数。主函数主要内容包括调用节点初始化函数,硬件初始化函数,以及节点之间消息收发的函数(基于MCAPI)等。这些都可以利用Poly-Template工具提供的模板快速完成。图3为用模板生成的代码示例,其功能为N1节点接收消息,然后将其加1后再发送给N2节点。

qrs1-t3.gif

    (7)编写每个节点工程的应用程序。将用户的算法进行代码实现并加入节点工程,这一步与常规的DSP开发流程完全一致。

    (8)建立目标配置文件和RTSC平台。首先建立用于仿真调试的目标配置文件,然后建立RTSC平台用于硬件配置,并将其加入节点工程。这些都是TI专用的文件。

    (9)编译、调试、运行。对每个节点工程进行编译、调试、运行,观察程序运行结果。注意不要编译拓扑工程。

    (10)程序性能分析和优化。借助Poly-inspector工具提供的交互式报告环境,可以对多核软件实现进行性能分析,方便用户进行程序优化和调整。

4 某雷达信号处理软件设计方案示例

    某雷达信号处理机采用TI的TMS320C6678多核DSP为主处理芯片,功能为雷达导引头主动探测处理[4]。其拓扑结构为主从方式,核0为主控核,负责DSP内部资源配置和初始化、自检、波形参数控制、波门控制、对外接口控制等,核1、核2、核3分别负责和通道、方位差通道、俯仰差通道的脉压数据相干积累、恒虚警检测、测距等,其他核未使用,目前已完成软件设计和实现。但是,现根据项目需要增加被动信号处理功能和由此新增的部分对外接口,软件架构发生较大改变。此时如果仍旧采用传统的DSP软件开发方法,则软件移植的工作量较大,特别是需要重新设计核间通信的代码。而采用基于MCAPI的多核软件开发方法[5]并借助Poly-Platform软件进行开发,就可以保留原有的应用程序不变,快速、灵活地生成新的拓扑结构,并按照软件模板快速生成符合标准的核间通信程序,代码改动量很小。采用方案为新增一个核4负责被动信号处理,同时新增1个核5,负责新增的对外接口,以及核0负责原有的一部分工作,以实现运算负载平衡,如图4所示。在实际中根据需要还可快速地改为其他拓扑结构并进行性能优化,比如将主从拓扑结构改为数据流结构。

qrs1-t4.gif

5 结论

    当前计算环境变得越来越多元化,DSP、可编程逻辑器件(Field Programmable Gate Array,FPGA)、图形处理器(Graphics Processing Unit,GPU)都具有较强的运算能力,并适用于不同的应用场合。多核处理器是当前的研究热点,而高集成度的异构多核处理器是未来的发展趋势。基于多核的软件开发始终是一个难点,给软件开发人员带来了巨大的挑战。本文提出的基于MCAPI的多核软件开发方法可应用于同构多核、异构多核以及多处理器平台,通用性较强,不受厂商、处理器、操作系统的限制,可帮助用户简化软件设计和优化过程中的拓扑设计、运算负载平衡以及核间通信和资源分配等工作,显著地提升开发效率。

参考文献

[1] Texas Instruments,Inc.TMS320C6678 multicore fixed and floating-point digital signal processor[Z].2014.

[2] The Multicore Association.Multicore Communications API (MCAPI) Specification V2.015[Z].2011.

[3] PolyCore Software,Inc.Poly-Platform user guide[Z].2012.

[4] 杨康.基于多核DSP的弹载毫米波双模制导雷达关键技术研究[D].南京:南京航空航天大学,2013.

[5] ERIC G.Using MCAPI/MDMA for ADSP-SC58x Dual-SHARC Audio Talkthrough[Z].2015.

此内容为AET网站原创,未经授权禁止转载。