版权信息
省级大型综合性科技类期刊
主管部门:自治区科技厅
主办单位:自治区科学技术信息研究院 
协办单位:自治区科学技术情报学会
编辑出版:科技期刊编译室
刊社地址:呼和浩特新城西街149号本刊杂志社
邮政编码:010000
电      话:0471-2536371

E-mail  :

nmgkjzz@vip.163.com 

网站地址:www.nmgkjzz.com


往期杂志
当前位置: 首页>往期杂志>详细介绍

一种基于ARM平台的宽带便携基站软件优化设计方法

时间:2016-07-28来源: 作者: 点击: 316次



wuhanyi7@163.com

摘要:空降集结作战、抢险救灾、应急通信等领域中,对基站的集成度、功耗等便携指标存在较高要求,利用ARMAdvanced RISC Machines,高级精简指令处理器)平台高集成度、低功耗特性,搭载Linux操作系统,可满足基站的宽带便携需求。但ARM应用处理器平台存在网络处理性能相对不足的问题,本文结合基于ARM平台的宽带便携基站软件设计特点,提出任务调度优化、缓冲区优化、DMADirect Memory Access,绕过处理器直接访问内从)性能优化等软件优化设计方法,将优化设计思路与各软件模块设计相结合,有效提高ARM平台在实时性、数据吞吐能力等方面的性能。

关键词:ARM;任务调度;缓冲区;DMA;便携基站

 


1         引言

根据对空降集结作战、抢险救灾、应急通信等领域的调研表明,一款能够方便携行、具有中继功能的、可依靠电池供电、具备组网与接入功能的宽带便携基站设备,对于提高宽带无线通信越障能力,延伸通信距离,减轻抢险作战单元负担具有显著意义。

针对实际业务需求,宽带便携基站设备在功能上设计支持话音、IP(Internet Protocol)数据、图像、视频传输;支持星状、链状及混合方式组建多跳网络;支持二、三层交换;支持路由器、以太网交换机;支持参数管理;支持设备硬件、软件异常告警等功能。其业务相对比较复杂,软件功能繁多。同时,设备对功耗、体积等便携要求较高,这给宽带便携基站设备的设计实现提出了较高的要求。

2         系统框架

2.1     设计思路

为了更好的支持多种组网方式,使设备使用更加灵活,本文所述宽带便携基站采用双信道设计,这样处理的数据量较单信道系统将翻倍;专用组网协议导致数据只能使用软件转发的方式,对CPU(Central Processing Unit,中央处理器)数据吞吐能力提出了一定的要求;数据加解密功能的引入,导致业务数据处理量再翻倍,更进一步加大了CPU的负担;而基站MACMedia Access Control ,媒体链路控制)层软件协议栈对实时性具有较高要求,若突破时间门限还未完成关键任务将导致网络崩溃。本文所述宽带便携基站采用ARM Linux平台,其应用在便携设备时,在功耗、集成度和实时性方面具有较大的优势,但在大数据吞吐量,高实时性方面的处理能力不足。为满足宽带便携基站业务对性能的要求,需通过多个方面对软件进行优化设计。

2.2     软件架构

基于Linux平台,结合设备高性能、低功耗处理需求,设计如REF _Ref450724270 \h图2所示软件基本架构。

SEQ \* ARABIC2软件框架

用户态程序主要实现人机交互,参数管理,QOSQuality of Service,服务质量)配置,网络管理等配置功能,该部分代码运行时多数时间处于休眠状态,对系统资源的消耗较低。内核态下路由转发模块、加解密模块、BS MACMSDSPDigital Signal Process)接口层代码是实现宽带便携基站核心功能的关键代码,MS模块支持终端接入能力,以实现基站间组网,BS MAC模块实现组网调度,是链路层组网的关键模块。基站无线网络基于时分复用的体制,每5毫秒一个调度时隙,BS MAC模块基于外部事件调度,在调度中断触发后必须在极短的时间内完成所有处理过程,若处理滞后会导致网络崩溃,为此确保BS MAC获得较高的任务优先级将是软件优化的关键。宽带数据业务导致大量的数据在各内核模块间传递,合理高效的缓冲区设计也将为系统整体性能带来不小的提升。CPUDSP以及保密模块间存在较多的数据交互,利用DMA能很好的释放CPU时间来处理其他任务,在ARM Linux平台上对DMA接口时序的优化以及对DMA缓冲区的优化都能带来不小的性能提升。DSP在运行过程中会产生大量的接收中断,且随接入基站用户的增加中断数量会大幅增加,为此利用FPGA对接收中断做汇集处理将大幅降低CPU负担,释放更多时间用于关键任务的运算。

3         优化方案

3.1     任务调度优化

上文提到BS MAC核心任务基于外部事件调度,即DSP时隙中断调度,且该任务在就绪后必须在门限时间处理内完成否者就会导致网络崩溃。当前Linux内核支持抢占式任务调度,即当高优先级任务就绪后可直接打断正在执行的低优先级任务,而先执行高优先级任务。但要使用抢占式调度需各代码模块全部按照抢占式调度模型来编写代码,而在大部分代码框架已经定型的情况下要做这样的更改存在较大的代码修改工作量和调试难度。

Linux内核在非抢占式调度机制下内核线程默认使用SCHED_OTHER分时调度策略,在该调度策略下没有绝对的优先级概念,使用该调度策略的线程通过nicecounter值来决定权值,即曾经使用了CPU最少的线程将会得到优先调度,这种调度策略对于需要及时处理的BS MAC核心线程显然是不利的。Linux内核还提供了SCHED_FIFO先到先服务和SCHED_RR时间片轮转两种实时调度策略。使用SCHED_FIFO策略的线程一旦占用CPU就一直运行,直至其主动放弃;使用SCHED_RR策略,内核会平均分配CPU使用权给每个优先级相同线程。从特性上来看显然SCHED_FIFO是最适合BS MAC核心任务的调度策略。在SCHED_FIFO策略下使用最高优先级的BS MAC核心线程进入就绪队列时将是下一个被执行的线程,即在队列中排队时排到了就绪线程的第一位,当前正在执行的线程完成后就会被调度执行,如REF _Ref450743557 \h图3所示。

SEQ \* ARABIC3实时线程调度

将内核线程设置为SCHED_FIFO先到先服务的实时线程,可通过内核提供的函数在线程函数入口处修改调度策略和优先级。

3.2     缓冲区优化

BS MAC模块实现组网调度功能,会处理大量的控制包和数据包,其数据来源于DSP接口层代码;MS模块提供接入功能也会产生大量的数据包;而加解密和路由模块也会对所有的网络数据包做相应处理。这样在设备内部各软件模块间会有大量的数据交互过程,运行过程中会使用大量的内存缓冲区。

按照传统的软件设计理念,为达到内存资源使用的最优化各软件模块一般会在需要时动态申请一段内存空间作为数据缓冲区,当处理完其中内容后就将缓冲区释放掉,而为降低软件模块间的耦合度,各软件模块间一般采用内存拷贝的方式来复制数据内容。这样的设计在小数据吞吐量的系统中保证了内存资源的合理利用,软件代码可读性强易于移植,但在类似宽带基站的系统中却存在一些显著的问题:大量的动态内存申请与释放操作本身就会消耗一定的CPU时间,且会产生大量的内存碎片,进而加大再度申请内存资源所消耗的时间;各模块间采用内存拷贝的方式传递数据也会消耗大量CPU时间。为此在缓冲使用上提出两种方法来改善上述情况。

一是使用静态循环缓冲来替代动态缓冲,即在系统初始化时分配所有需要的缓冲并循环使用,而缓冲区的数量可更具设计业务负载的极限值来推算。例如BS MAC模块在没有用户接入的情况下每秒钟约需处理约1000个数据包,每增加一个接入用户每秒会多出2000个数据包,以最多接入20个用户的设计容量来计算,每秒最多会有41000个数据包,而WIMAX调度时隙为5毫秒,若5毫秒后缓冲区数据还没得到处理那么网络就会崩溃,也就是说循环缓冲个数只要大于5毫秒时间所处理包个数就能满足需求,那么初始化时为其划分300个缓冲组成的循环缓冲区即可减少极限情况下每秒41000次的缓冲区申请和释放操作。其他模块也以类似的方式划分静态循环缓冲区。通过这样的设计可能增大了模块间的耦合度,但随之带来的效率提升是显著的。

二是数据封装层次相同的模块共用缓冲区以减少内存拷贝消耗的CPU资源,在本设计中DSP接口层负责BS MAC模块与DSP间数据交互,而交互的数据内容其并不处理,这样DSP接口层代码可以直接与BS MAC共享循环缓冲,这样即减少了一次数据的拷贝。同样的路由转发模块处理的业务数据都为IP包,而加解密处理也是针对IP包来实现的,这两个模块也可共用同一个循环缓冲,即又减少了一次数据的拷贝。

3.3     DMA性能优化

系统利用ARMLocal bus总线桥接FPGAField Programmable Gate Array)实现ARMDSP以及加解密模块间通信,大量的数据互传使用DMA是必然的选择,利用DMA实现系统内存与外设间的数据互传可以释放CPU时间,但在使用DMA时数据一致性是必须关注的问题。所谓数据一致性是指CPU Cache中的数据与内存数据的一致性,假设一段DMA缓冲区内容是被Cache缓存的,CPU访问这段内存区域的数据时不会实际访问内存而是会直接访问Cache中内容。然而若DMA操作将外设的数据填入了该缓冲区中,此时CPU并不知道该内存中的数据已经发生了变化,当程序访问该段内存的数据时会直接访问Cache中内容从而导致数据错误。针对这个问题Linux内核提供了两种DMA缓冲映射方式:一致性映射和流式映射。采用一致性映射的DMA缓冲区在整个生命周期中都能保证数据的一致性,而采用流式映射的DMA缓冲区仅在一定周期中保证数据的一致性。Linux内核在使用一致性映射时分配的缓冲区是不被cache的,也就是说ARMmmu不会将这部分内存中的数据缓冲到CPU Cache中去,每次CPU访问这段空间时都是实实在在的访问内存数据,这样自然也就没有了数据不一致的问题。但这样做最大的缺点就是性能上的损失,CPU访问内存所消耗的时间要远大于访问Cache所消耗的时间,特别是宽带基站这样有大量DMA缓冲数据需要处理的情况下,CPU性能的损失就尤为明显。而使用流式映射的DMA缓冲区就存在明显优势,采用流式映射方式在划分缓冲区空间时,内核会从可被cache的内存区域中区分配空间。在启动DMA时,该段缓冲的虚拟地址与物理地址的映射断开,若此时CPU访问该虚拟地址系统会直接报错,当DMA结束后,该虚拟地址又可以正常访问了,函数最后一个参数dir用来指定数据流向,即是从系统内存流向外设还是从外设流向系统内存。回到宽带基站程序的设计上来,CPUDSP或保密模块间的DMA操作是最多的,以从DSP收数据为例,在使用了流式映射的DMA缓冲区后,BS MAC在处理内存缓冲头部数据时mmu就会自动的将内存中的数据缓存到Cache中来,BS MAC后续的数据处理就会大量命中Cache中的数据,CPU就无需等花费大量的时间直接从内存中去读取数据,这样执行的效率就会极大地提升。

3.4     底层接口优化

随着接入用户的增加,CPU需要处理的DSP中断数量也大幅度增加,DSP外部寄存器访问频繁,而ARM平台Local bus性能有限,在总线时钟仅60MHz的情况下CPU访问DSP外部寄存器是很耗费时间的;同时大量的数据包需要CPU接收且多数包长度极小,CPU反复执行DMA调度的重复操作浪费CPU资源。对此利用FPGACPUDSP间桥接的硬件特点将部分DSP接口层的软件工作下放到FPGA内部逻辑去实现,这样CPU可以从重复的DSP外部寄存器访问和DMA调度中解放出来。

SEQ \* ARABIC4数据交互流程

REF _Ref451009724 \h 图4所示,FPGA接管部分DSP接口层软件的工作,利用超时和缓冲门限触发机制将从DSP接收的数据汇集起来统一发给CPU,这样的设计能大大减少CPU DMA调度次数,减少CPU访问DSP外部寄存器的次数,释放CPU时间处理关键任务。

4         结束语

ARM Linux平台凭借其低功耗、高集成、可扩展性强的特点,目前已广泛应于各类嵌入式应用场景中。空降集结作战、抢险救灾、应急通信领域对基站设备的功耗和体积有着较高的要求,ARM Linux平台特点正好符合这类应用场景的需要。但ARM Linux平台出于面向终端应用的设计初衷导致其在大数据量处理和实时性方面较PowerPC这类传统网络处理器平台存在一定的差距。本文结合基站系统软件特点,针对ARM Linux平台给出了几种软件优化设计的方法以提高系统处理性能满足基站应用需求,为ARM Linux平台实现网络处理应用进行有益的尝试。

参考文献

1)        ()Rubini A,等,Linux设备驱动程序.2[M].魏永明,译.北京:中国电力出版社,2002

2)        Love R. Linux 内核设计与实现[M].  陈莉君,康华,译. 北京:机械工业出版社,2011.

3)        孔亮亮,江建慧,肖杰,蒋园园.ARM程序执行周期估计的基于模拟的非线性方法,计算机研究与发展,201249

4)        ARM Linux,百度百科

5)        Linux real time thread,维基百科

6)        孙江,兰巨龙,李高鹏.Linux环境下普适性零拷贝平台的研究与实现,计算机应用研究,Vol.28 No.7 Jul.2011

7)        王兆文,蒋泽军,陈进朝.一种提高Linux 内存管理实时性的设计方案,计算机工程,Vol. 40 No. 9September 2014

8)        尹嘉鹏,徐志祥.针对少实时任务应用的嵌入式 Linux改进,Vol.39No.10October 2013

9)        王知航.基于i.MX51芯片和Android平台平板电脑电源管理的研究与应用[D].西安:西安电子科技大学,2011.

10)     NXP公司. i.MX51多媒体应用处理器参考手册[S].2010.

作者简介

吴涵易(1982-),男,本科,主要研究方向为操作系统、设备驱动。

本刊创刊于1982年,是由自治区科技厅主管、自治区科技信息研究院主办,由自治区科技情报学会协办、国内外公开发行的省级综合性科技刊物,是反映内蒙古自治区科技与经济发展的窗口。杂志入选《中国期刊全文数据(CJFD)》全文收录期刊和《中国学术期刊综合评价数据(CAJCED)统计刊源期刊,《中国核心期刊(遴选)数据库》收录。本刊是公开发行的综合性科技期刊,为月刊,大16开本。本刊坚持以科技创新为目标,融科技、经济、信息、产业、市场为一体,是促进科技成果转化、推动科技进步、加强技术创新,促进经济发展的专业性期刊。