• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 微波/射频 > RF技术文章 > 提升LTE基站处理效率

提升LTE基站处理效率

录入:edatop.com    点击:

4 基于Pktlib的层2零拷贝数据处理

层2处理中经过PDCP层处理的包保存在硬件队列中,RLC和MAC模块需要根据调度器提供的调度结果对PDCP处理的包进行重新封装,在这个过程中需要添加RLC协议头,MAC协议头,还需要对PDCP包进行切割,重组(因为调度结果是根据当前空口状态产生的,跟PDCP的包长不可能匹配)。传统的做法是采用内存拷贝,软件开销比较大。采用Pktlib可以通过相应的函数实现零拷贝,提高层2处理效率。

包的合并

层2处理中有很多包的合并操作,常见的场景有:

(1) 在处理PDCP,RLC,MAC 层协议的时候添加对应的协议头。

(2) RLC收到调度结果后需要将两个或多个PDCP的PDU打包为一个RLC的PDU

(3) MAC复用需要将多个RLC的PDU打包为一个MAC的PDU如图4 所示,通过调用Pktlib_packetMerge函数可以将输入的两个QMSS格式的包合并为一个新的包。这一操作实际上是将包1的Next指针置为包2的P地值,在合并的过程中没有任何的内存拷贝。

提升LTE基站处理效率
图4:包的合并

包的拷贝

层2处理中包的拷贝主要发生的RLC包进入重传缓冲区,RLC协议在AM模式下对处理完成的包在提交给MAC进行处理的同时,还必须拷贝一份放入重传缓冲区。如果接收端发出了重传请求,下一次RLC会从重传缓冲区取出数据重发。只有在收到接收端的确认后,RLC才能释放重传缓存区中的包。

如图5所示,Pktlib在做包的拷贝时不是通过内存拷贝来实现的,而是通过将传入的一组空的PD按照原始包的结构重新链接一次。拷贝后,包1和包2的PD/BD不同,但是PD/BD所指向的内存是同一块。这种包的拷贝(其实包的切割也会出现相同的问题)要求在包的释放时只有在确认同一块内存所关联的所有包都被使用完了之后,才能进行内存的释放。在Pktlib_freePacket函数中会查找当前包下所有PD/BD所指向内存所关联的所有PD/BD的当前情况,如果还有PD/BD在使用这块内存就不立即释放,只有在所有PD/BD都不使用这块内存了,才会将它释放。

提升LTE基站处理效率
图5: 包的拷贝

如何成为一名优秀的射频工程师,敬请关注: 射频工程师养成培训

上一篇:专家眼中的RFID智能互连的生活场景
下一篇:覆盖多个频段的振荡器的设计

射频和天线工程师培训课程详情>>

  网站地图