一种面向C-RAN基带处理的数据缓冲区管理方法与流程

文档序号:15567360发布日期:2018-09-29 03:39阅读:205来源:国知局

本发明涉及一种面向c-ran基带处理的数据缓冲区管理方法,尤其涉及一种面向c-ran基带处理的基于通用处理器(gpp)的数据缓冲区管理方法,属于通信工程中的数据缓冲区管理技术领域。



背景技术:

由于移动终端和用户的快速增长,未来网络的数据流量将随着终端上运行的业务而变化,移动网络的数据包将成为高密度数据。未来无线接入网络中移动业务的爆炸性增长,导致传统的基站部署方法将难以满足未来移动业务的需求。传统上,每个基站处理本地接收和发送的信号,有空闲资源的基站不能将其计算资源共享给其他资源紧张的基站。在这种情况下,蜂窝网络处理能力的平均利用率相当低,这意味着在当前的基带处理机制中存在巨大的优化空间。

云无线接入网络(c-ran)汇聚多个基站的基带计算资源,将基带资源复用以响应网络的实时约束,被认为是提高网络容量的有前途的解决方案。然而,基带计算能力的汇集要求新的协议栈设计方法,其主要趋势是模块化设计。

传统的基带处理平台是基于现场可编程门阵列(fpga)或嵌入式数字信号处理器(dsp),而如今,通用处理器平台更多地参与软件定义无线电平台的设计。与基于dsp或fpga的硬件平台相比,基于通用处理器平台的编程和调试变得更加容易。而且,在通用处理器平台上开发的软件更容易更新,计算资源可以虚拟化或复用。因此,通用处理器平台可能是一个更适合c-ran部署与建设的基带处理方案。

尽管通用处理器平台具有优势,但它的软件和硬件并不是专门为无线通信系统设计的,这会导致系统性能受到影响。在通用处理器上使用原本的库函数来处理数据,很可能不能满足移动网络业务的实时性要求。例如linux系统中由调用malloc引起的系统开销可能高达几毫秒,原本的缓冲区管理方法效率很低。因此,为了确保基带处理的实时性能,本发明提出一种新的基于通用处理器的数据缓冲区的管理方法。



技术实现要素:

本发明的目的是为应对c-ran场景对基带处理的实时性与稳定性要求,针对基于通用处理器的实现,提出一种面向c-ran基带处理的数据缓冲区管理方法。

本发明的目的是通过以下技术方案实现的:在通用处理器平台上,定义一种用于管理缓冲区的数据结构,该结构具有指针成员,以及两种实例化的对象——用于管理内存块的对象和用于管理对象的对象,这两种对象也具有指针成员;再构建操作这两种对象的接口,通过调用接口,以实现对缓冲区的管理;

包括以下步骤:

步骤一、初始化用于映射内存块的对象,并为了扩展缓冲区的功能,定义了其它对象作为内存块的管理工具;

步骤一,具体包括如下子步骤:

步骤1.1.分配多个固定大小的内存块,并与用于管理内存块的对象的指针成员建立映射;

步骤1.2.分配固定数量的用于映射内存块的结构体对象,并将其组织成列表;

步骤1.3.分配固定数量的用于映射内存块的结构体对象,并将其组织成列表;

步骤1.4.配置结构的指针成员指向由用于管理内存块的对象组织的列表中的第一个空闲对象;

步骤1.5.配置结构的指针成员指向由用于管理对象的对象组织的列表中的第一个空闲对象;

步骤二、构建用于访问对象的接口;具体包括如下子步骤:

步骤2.1.根据对象所指向的属性是内存块还是对象判断是否需要深度克隆浅度克隆,并根据是否需要深度克隆的判断结果进行相关操作,具体为:

2.1az如为内存块,则需要深度克隆,计算缓冲区中的簇的数量,获得指定数量的簇,配置一个用于管理对象的对象以管理用于管理内存块的对象,并返回该对象的指针,跳到步骤2.2;

2.1b如为对象,则不需要深度克隆,就是需要浅度克隆,配置一个用于管理对象的对象以管理指向非缓冲区中数据的指针,并返回该对象的指针,跳至步骤2.2;

步骤2.2.修改用于管理内存块的对象的头指针成员,使之分别重新指向第一个可用的用于管理内存块的对象;

步骤2.3.修改用于管理对象的头指针成员,使之分别重新指向第一个可用的用于管理对象的对象;

步骤三、构建用于传递数据的接口,具体为:判断用于管理对象的对象是否指向用于管理内存块的对象,并进行相关操作;如用于管理对象的对象是指向用于管理内存块的对象,则将接口的过程构造为在该用于管理对象的对象所指向的用于管理内存块的对象所管理的深度克隆的内存块与原来的存储块之间传递数据;如不是,则将接口的过程构造为在该用于管理对象的对象所指向的非缓冲区中的浅度克隆的内存块与原来的存储块之间传递数据;

步骤四、构建用于释放内存资源的接口,具体来说:判断用于管理对象的对象是否指向用于管理内存块的对象,并进行相关操作;具体为:用于管理对象的对象如果是指向用于管理内存块的对象,则将该用于管理对象的对象所指向的用于管理内存块的对象放回至用于管理内存块的对象列表中,释放该用于管理内存块的对象原来所指向的内存资源,并将该用于管理对象的对象放回至用于管理对象的对象列表中,释放该用于管理对象的对象原来所指向的对象;如不是,则释放该用于管理对象的对象所指向的非缓冲区中的浅度克隆的内存块,并将该用于管理对象的对象放回至用于管理对象的对象列表中;

至此,从步骤一到步骤四,完成了一种面向c-ran基带处理的数据缓冲区管理方法。

有益效果

一种面向c-ran基带处理的数据缓冲区管理方法,对比现有技术,本发明具有如下有益效果:

1.与通用处理器的原本的缓冲区管理方法(malloc函数和free函数)比较,本发明提出的方法系统开销更小,而且程序运行中内存碎片更少,并且在处理大量的数据时具有更好的稳定性;

2.本发明提出的方法面向c-ran场景,适用于未来通信网络建设;

3.本发明提出的方法基于通用处理器,具有一定的通用性。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是pdh_pool结构的指针成员与实例化对象在初始化后与cluster的映射关系示意图;

图2是1000次通用处理器平台原本数据缓冲区管理方法与调用1000次本发明提出的方法的平均时间的比较结果;

图3是1000次通用处理器平台原本数据缓冲区管理方法与调用1000次本发明提出的方法的最短时间的比较结果;

图4是1000次通用处理器平台原本数据缓冲区管理方法与调用1000次本发明提出的方法的最长时间的比较结果;

图5是测试场景的系统框图;

图6是连通测试中epc和ue之间的下行链路和上行链路数据分组。

具体实施方式

下面结合附图及实施例对本发明所提的一种面向c-ran基带处理的数据缓冲区管理方法进行细致阐述。

实施例1

本实施例通过具体化的伪代码说明本发明提出的缓冲区管理方法的一种实施方案:

在通用处理器平台上,定义一种用于管理缓冲区的数据结构pdh_pool,该结构具有指针成员cl_head_ptr和pbuf_head_ptr,以及两种实例化的对象——用于管理内存块的对象pdh_pbuf_cl和用于管理对象的对象pdh_pbuf;其中pdh_pbuf_cl有一个指针成员buf_ptr,而pdh_pbuf有两个指针成员cl_ptr和data_ptr;再构建操作这两种对象的接口,通过调用接口,以实现对缓冲区的管理;

包括以下步骤:

步骤a:初始化pdh_pbuf_cl和pdh_pbuf;

1.分配固定大小的内存簇cluster,并与buf_ptr建立映射;

2.分配固定数量的pdh_pbuf_cl数量,并将其组织成列表;

3.分配固定数量的pdh_pbuf数量,并将其组织成列表;

4.配置cl_head_ptr指向由pdh_pbuf_cl组织的列表中的第一个空闲对象;

5.配置pbuf_head_ptr指向由pdh_pbuf组织的列表中的第一个空闲对象;

完成后效果如图1所示;

步骤b:构建用于访问内存资源的接口;

1.判断需要深度克隆或浅度克隆;

2.如需要深度克隆,计算缓冲区中的内存块的数量,获得指定数量的内存块,配置一个pdh_pbuf以管理pdh_pbuf_cl,并返回该pdh_pbuf的指针;

3.如需要浅度克隆,配置一个pdh_pbuf以管理指向非缓冲区中数据的指针,并返回该pdh_pbuf的指针;

4.修改pdh_pbuf_cl的头指针成员,使之分别重新指向第一个可用的

pdh_pbuf_cl;

5.修改pdh_pbuf的头指针成员,使之分别重新指向第一个可用的

pdh_pbuf;

步骤c:构建用于传递数据的接口;

1.判断pdh_pbuf的成员cl_ptr是否不为null;

2.如不为null,则在该pdh_pbuf的成员cl_ptr所指向的深度克隆的内存块与原来的存储块之间传递数据;

3.如为null,则在该pdh_pbuf的成员data_ptr所指向的非缓冲区中的浅度克隆的内存块与原来的存储块之间传递数据;

步骤d:构建用于释放内存资源的接口;

1.判断pdh_pbuf的成员cl_ptr是否不为null;

2.如不为null,则将该pdh_pbuf的成员cl_ptr所指向的pdh_pbuf_cl放回至pdh_pbuf_cl列表中,并将该pdh_pbuf放回至pdh_pbuf列表中;

3.如为null,则释放该pdh_pbuf的成员data_ptr所指向的非缓冲区中的浅度克隆的内存块,并将该pdh_pbuf放回至pdh_pbuf列表中;

至此完成缓冲区管理。

实施例2

本实施例在多次测试的场景下,验证本发明提出的缓冲区管理方法的性能;通过比较调用1000次通用处理器平台原本的函数malloc和free与调用1000次本方法中的构建的接口的分配和释放的平均时间、最短时间和最长时间,得到两种方法的性能比较结果,分别如图2,图3和图4所示。如图3所示,当请求的内存容量低于1kb时,两种方法的最短调用时间几乎相同,但调用malloc和free的平均时间和最大时间都不同程度地超过调用本方法所构建的接口的平均时间和最大时间,这意味着与本方法相比,malloc和free的性能非常不稳定。而且,当内存容量超过1kb时,malloc以及free的平均和最小调用时间急速上升,最大时间甚至超过平均时间达十倍。相反,图2、图3中本方法的平均和最小调用时间相当平稳,总是低于malloc和free的时间。虽然本方法的最大时间也是波动的,但波动幅度比malloc和free的最大时间波动小。故可以得出结论:本方法更适合于对缓冲区作出更具实时性的管理,并且在处理大量的数据时具有更好的稳定性。

实施例3

本实施例在进行连通测试的场景下,验证本发明提出的缓冲区管理方法能够完成基于lte的上行链路和下行链路传输;测试场景如图5搭建,在安装了linux操作系统的hpz230工作站上完成基带处理,该平台与信号发生器,smartile,演进分组核心网(epc),前端smartile和加速器板卡(fab)以及用户设备(ue)等其他硬件一起构成测试场景。在我们的系统中,epc的ip是192.168.4.11,ue的ip是192.168.4.66,epc和ue之间的所有下行链路和上行链路数据分组如图6所示;故该缓冲区管理方法可以满足基于lte的上行链路和下行链路传输的要求。

实施例4

本实施例在进行视频播放测试的场景下,验证本发明提出的缓冲区管理方法能够完成从epc到ue的视频传输;测试场景如图5,使用vlc媒体播放器建立视频服务器,并部署在epc上;ue完成附着流程后,可以播放从服务器推送的视频,速率可高达600kbps。

实施例5

本实施例在进行文件传输测试的场景下,验证本发明提出的缓冲区管理方法能够完成从epc到ue的文件传输;测试场景如图5,使用ftp文件传输协议,存储在服务器上的文件可以以1mbps的速度下载到ue。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1