APP下载

基于多核DSP的超声成像的高速数据传输

2014-12-23骆国丽张学健

计算机工程与设计 2014年9期
关键词:间通信堆栈网络通信

骆国丽,张学健,肖 亮

(北京化工大学 信息科学与技术学院,北京100029)

0 引 言

当前B模式超声成像 (B 超)技术处于活跃的发展态势中,设备的小型化与便携化是其中一个重要的方向,目的在于降低成本、拓展应用面。为了保证设备的成像质量,必须提高图像分辨率并缩短成像时间,这必然会对成像过程中的数据处理和传输带来很高的要求。目前B 模式超声成像领域常用的图像处理硬件架构主要是:①基于PC机的架构[1],单纯由CPU 进行数据处理,该方案简单易行,但CPU 的浮点处理速度较慢;②基于GPU (图形处理器)的架构[2],GPU 具有最快地处理速度,但难以集成到嵌入式设备中,并且面临着数据传输瓶颈;③基于多处理器的架构[3],由两片处理器 (TI公司的C6455+OMAP3530)结合进行数据处理,该方案具有较强的数据处理与传输性能,然而电路设计比较复杂。

本文讨论了基于TMS320C6678的高速数据传输 (包括核间数据传递与网络通信),以提高B模式超声成像的实时性。TMS320C6678是TI公司于2010 年推出的一款多核DSP,拥有8 个核 (DSP core),单个核的速度为定点40 GMAC/s,浮点20GFLOP/s。片内有4 MB 的共享内存,片外最大8GB 的存储空间 (DDR3)。此外,该DSP 拥有包括2个千兆以太网端口在内的多种强大的数据通信接口。本研究的数据处理针对成像的中端 (前端包括数字解调与波束合成,一般由FPGA 完成;后端包括图像滤波与坐标转换,可以由其它的核或PC 机完成),包括包络检测、动态压缩、频率复合及行滤波。数据处理和传输任务分配在4个核上以流水的方式进行,核与核之间通过Notify Model进行通信,通过配置公用存储区以实现数据共享,片内外的数据交换通过EDMA (enhanced DMA)方式高速进行。DSP与PC机之间通过千兆以太网相连,基于TCP/IP的网络通信程序调用网络开发数据套件 (NDK),在SYS/BIOS嵌入式操作系统下运行。程序已经开发完毕并进行了大量的测试,结果表明,任意2个核传递数据的时间小于1ms(图像大小为512×1024),网络通信的传输速率可稳定地达到60 MBps左右。这样,结合以优化的数据处理算法,DSP能够每秒处理和传输40帧图像,完全满足实时成像的要求。

1 DSP软件资源简介

TI公司为多核DSP的开发提供了丰富的软件工具,重点包括:SYS/BIOS嵌入式操作系统、IPC (inter-processor communication)、NDK (network development kit)。

1.1 SYS/BIOS操作系统

SYS/BIOS是TI公司开发的嵌入式实时操作系统,是DSP/BIOS的扩展和增强。它支持有实时调度和同步需求的应用程序开发,支持抢占式多线程、线程之间的通信和同步、硬件抽象和实时分析等。SYS/BIOS 的线程模型可为不同的情况提供不同的线程类型,操作者可以通过选择不同的线程类型来控制线程的优先级和阻塞特性。基于SYS/BIOS开发DSP软件,可以使所有的操作都在操作系统下得到有效的管理,有利于系统优先处理紧急事件,提高了系统的实时响应能力。

1.2 IPC

IPC组件用于多核处理器系统的核间通信和与外设间的通信。该组件是基于SYS/BIOS设计的,包含用于多核通信的组件和接口,可用于DSP 或其它处理器。IPC 能够实现以下通信:

(1)同一处理器核的不同线程间通信;

(2)同一处理器不同核上的线程间通信;

(3)不同处理器的线程间通信;

(4)处理器与外设之间的通信。

1.3 NDK

为了加速C6000系列DSP的网络开发进程,TI公司提供了NDK。由于NDK 中内置了常用的服务程序,因此对它的调用不仅可以有效地减少服务占用的资源,而且可以缩短开发时间。NDK 为TCP/IP协议栈提供了完整的功能化环境,包括5 个主要的支持TCP/IP 协议栈的程序库,即:STACK.LIB,NETTOOL.LIB,OS.LIB,HAL.LIB,NETCTRL.LIB。

2 核间数据传递

TMS320C6678实现核间数据高速传递的关键点在于:核间通信、数据共享以及高速访问。

2.1 基于Notify Model的核间通信

Notify Model是主要的核间通信方式之一,为IPC 库所支持,该方法使用中断和回调函数来完成多核间的通信。Notify Model的配置方式如图1所示。

图1 Notify Model的配置

通知模块 (notify module)用于对通知方案中用到的资源进行静态配置,调用多核处理器模块 (multiproc module)配置需要启用的DSP核个数及其名称。需要在SYS/BIOS操作系统的静态配置文件 (*.cfg)中进行如下配置:

当配置完成后,任意核CORE A 向CORE B 发送通知的基本流程如图2所示。

图2 基于Notify Model,CORE A 向CORE B发送消息的基本流程

Ipc_start()函数用于在各个DSP 核之间建立连接,为了接收其它核来的通知,接收核需要调用函数Notify_registerEvent()根据预定的事件号注册一个或多个中断;然后其它核通过调用函数Notify_sendEvent()触发接收核中相应的事件来完成通信;当相应事件被触发后,预定义的一个或多个回调函数就开始执行。

2.2 核间数据共享

TMS320C6678 中的每个核都能访问设备中的所有空间,这意味着每个核都能对存储区的任意空间进行读写。因此,多核间的数据共享可通过设置公用存储区实现。为了保证足够的存储空间,该公用存储区位于外部DDR3内存中,起始地址与大小固定。发送核将数据写入公用存储区,并使用核间通信方式通知接收核,接收核接收到通知后从公用存储区内读取数据。发送核和接收核必须采用同样的核间通信方案。对于地址确定的数据共享区,采用Notify Model方案可以获得最好的核间通信性能。

2.3 基于EDMA的数据访问

EDMA 主要用于实现设备中2个地址空间之间快速的数据传输。例如,数据从片外存储区读入到片内存储区,或相反。

EDMA 应用有2种模式,一种是事件触发,另一种是CPU 触发。前一种一般应用于需要由外部中断信号或定时器等触发EDMA 启动,后一种是CPU 主动启动EDMA的操作。

编程过程中使用到的主要函数及其功能:CSL_edma3Open()用于打开EDMA模块,CSL_edma3ChannelOpen()用于打开相应的通道,CSL_edma3ParamSetup()为传输通道填充参数,参数填充完成后调用CSL_edma3HwChannel-Control()触发通道开始传输,CSL_edma3GetHwStatus()可以用来检测传输是否完成,传输完成后调用CSL_edma3ChannelClose()和CSL_edma3Close()关闭传输通道和EDMA模块。

3 网络通信

3.1 TCP/IP协议栈的初始化和配置

在以NDK 为基础的开发环境中,一个套接字 (socket)应用程序被执行之前,堆栈必须预先配置和初始化。为了能帮助初始化过程更加的标准并且专用,网络控制模块的源代码 (NETCTRL.LIB)包含在NDK 的每个版本中,它是NDK 堆栈初始化、配置和事件调度核心。网络控制模块使用的基本流程如下:

(1)预初始化 (NC_SystemOpen ()),它初始化堆栈和堆栈各组成信息所需要的内存环境。

(2)系统配置

为了继续使用NETCTRL API,必须创建系统配置。创建一个配置总是从调用CfgNew ()函数创建一个配置句柄开始。一旦配置句柄被创建,配置信息可以通过调用CfgLoad ()或CfgAddEntry()函数装入句柄或者它创建的条目。

(3)网络启动 (NC_NetStart())

一旦配置句柄加载完成正确的配置,网络事件调度将通过调用的NETCTRL函数NC_NetStart()实现。函数NC_NetStart()不会返回,直到系统关机,然后返回关机代码作为它的返回值。

(4)调用NC_SystemClose(),关闭系统并退出。

3.2 任务创建

socket应用程序开始于任务线程的创建。根据所提供的协议栈库,任务可以使用TaskCreate()来创建。它直接创建出拥有3个参数 (参数不一定全部使用)的和SYS/BIOS具有相同基本任务属性的线程。

用户自定义的网络服务线程从NC_NetStart()提供的 “NetworkOpen ()”回调函数中启动。

以下是使用NC_NetStart()启动网络服务的代码:

3.3 关联文件描述符表

在SYS/BIOS环境下,NDK 堆栈支持标准的socket接口功能,由于这些功能要求文件描述符的支持,协议栈提供了自己的小文件系统。在这个系统中,每个任务都有它自己的文件描述符字段。堆栈的工作原理是将每个调用的线程与一个文件描述符关联。最基本的方法是线程开始前必须调用fdOpenSession ()函数,然后面向文件描述符的函数才可以被调用,当它们不再被需要时调用fdCloseSession ()函数,程序示例:

3.4 Socket编程

网络传输共创建了3个线程:

第1个线程StackTest在SYS/BIOS中静态创建,用于启动网络。通过对配置文件的设置,在main()函数中启动SYS/BIOS之后,程序跳转执行此线程。这个线程称为NETCTRL线程,它不是真正的网络任务线程,系统不必为它分配文件描述符表。虽然它是作为初始化的一部分,但是NETCTRL 线程最终成为NDK 堆栈的事件调度表。

第2个线程CtrlTask在SYS/BIOS中静态创建,该线程用于接收控制指令,控制数据的发送、终止及线程退出,如图3所示,用switch case语句判断接收到的命令并执行相应的操作。

第3个线程DataTask是在第2 个线程中动态创建的,用于数据发送,其优先级最低。

图3 线程CtrlTask的流程

4 实验结果

本设计采用的硬件平台为TI 公司的评估板TMSEVM6678L,TMS320C6678的时钟频率为1 GHz,软件开发平台为CCS5.3。

B模式超声成像的图像处理步骤按照顺序依次为:包络检测、动态压缩、频率复合以及行滤波,表1 给出了单个DSP 核对每个步骤进行计算的时间开销 (图像大小:512×1024)。

表1 B模式超声成像各处理步骤的计算时间开销

根据对表1分析得出,为了获取最高的成像处理速度,可以将图像处理任务分配到3 个核上以流水的方式进行:核0完成包络检测,核1完成动态压缩,核2完成频率复合与行滤波。此外,用核3 承担网络通信任务,负责将B超图像通过Ethernet传输到PC 机。数据的处理与传输流程如图4所示。

图4 TMS320C6678实现B模式超声成像的处理与传输流程

图2所示流程中,相邻核之间的数据传递,以CORE 0向CORE 1传递的数据量最大,为3×512×1024×16bit=3 MB,经反复测试,所需时间见表2。

表2 核间数据传递 (CORE 0到CORE 1)时间开销

在网络编程中,PC 机端socket的缓冲区大小设为8 KB,DSP端socket的缓冲区大小设为32KB,多次长时间测试表明DSP与PC机之间的网络传输速率可以稳定在60 MBps左右,即每秒能传送120帧512×1024大小的图像。根据上述测试结果可见,对于512×1024大小的图像,DSP任意2个核传递数据的时间小于1ms。考虑到每个核成像处理所需时间以及公用存储区访问仲裁所需时间,4 个核流水完成一帧图像处理与传输时间小于25ms(即每秒处理40帧),满足了实时成像的要求。

5 结束语

本文讨论了基于多核DSP (TMS320C6678)的B 模式超声成像系统的高速数据传输,包括核间数据传递与网络通信两项技术。核间数据传递由核间通信、数据共享以及EDMA 访问3项功能构成;网络通信采用NDK 进行编程。实验结果表明,对于512×1024大小的图像,DSP 总的处理速率能够达到40帧/秒,满足实时成像的要求,从而为进一步开发基于多核DSP的便携式超声成像系统打下了坚实的基础。

[1]LI Yibing,YU Dakun,LIU Xiaodong,et al.Application of computer to medical ultrasound images [J].Chinese Medical Equipment Journal,2006,27 (4):23-24 (in Chinese). [李义兵,余大昆,刘晓东,等.计算机在医学超声成像中的应用[J].医疗卫生装备,2006,27 (4):23-24.]

[2]XIA Chunlan,SHI Dan,LIU Dongquan.Ultrasound B-mode imaging based on CUDA [J].Application Research of Computers,2011,28 (6):2011-2015 (in Chinese). [夏春兰,石丹,刘东权.基于CUDA 的超声B 模式成像 [J].计算机应用研究,2011,28 (6):2011-2015.]

[3]Texas Instruments Inc.Digital signal processor(DSP)for portable ultrasound [DB/OL].[2008-12-18].http://www.ti.com/general/docs.

[4]Texas Instruments Inc.TI network developer’s kit(NDK)v2.21 user’s guide[DB/OL]. [2012-05-01].http://www.ti.com/general/docs.

[5]Texas Instruments Inc.SYS/BIOS inter-processor communication(IPC) user guide [DB/OL].[2012-10-09]. http://www.ti.com/general/docs.

[6]XIAO Liang,ZHANG Xuejian.Parallel implementation of processing algorithm of ultrasound imaging based on multi-core DSP [J].Application of Electronic Technique,2013,39(6):27-30 (in Chinese).[肖亮,张学建.基于多核DSP 的超声成像处理算法的并行实现 [J].电子技术应用,2013,39(6):27-30.]

[7]WU Hao,XIAO Jiyang,FAN Hongqi,et al.Inter-processor communication method of TMS320C6678 multicore DSP [J].Application of Electronic Technique,2012,38 (9):12-14 (in Chinese).[吴灏,肖吉阳,范红旗,等.TMS320C6678多核DSP的核间通信方法 [J].电子技术应用,2012,38 (9):12-14.]

[8]LIU Xin,SONG Guanglei,WEN Jing,et al.Design of gigabit Ethernet interface used on highspeed transmission of spaceborne images[J].Video Engineering,2013,37 (3):67-69(in Chinese).[刘鑫,宋光磊,温靖,等.用于星载图像高速传输的千兆以太网接口设计[J].电视技术,2013,37 (3):67-69.]

[9]ZUO Haorui,ZHANG Qiheng,XU Yong,et al.Design of Gbps Ethernet interface based on DSP [J].Communications Technology,2010,43 (8):1-3 (in Chinese). [左颢睿,张启衡,徐勇,等.基于DSP 的千兆以太网接口设计 [J].通信技术,2010,43 (8):1-3.]

[10]HAO Pengpeng,ZHOU Xulin, TANG Yijing,et al.Reasearch on multicore processor’s architecture based on TMS320C6678 [J].Microelectronics,2012,29 (12):171-175 (in Chinese). [郝朋朋,周煦林,唐艺菁,等.基于TMS320C6678多核处理器体系结构的研究 [J].微电子学与计算机,2012,29 (12):171-175.]

猜你喜欢

间通信堆栈网络通信
基于行为监测的嵌入式操作系统堆栈溢出测试*
基于网络通信的智能照明系统设计
综合航电分区间通信元模型设计研究
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
基于堆栈自编码降维的武器装备体系效能预测
基于核间寄存器的多核虚拟机系统中虚拟机间通信研究
南方电网直流输电系统站间通信应用研究
一种用于分析MCS-51目标码堆栈深度的方法