LTE層2處理的特點(diǎn)
層2在LTE中位于層1(物理層)和層3(RRC, RRM, S1-AP等協(xié)議)之間,它的作用是屏蔽層1的細(xì)節(jié),向?qū)?提供可用的服務(wù)接入點(diǎn)(SAP)。LTE中的層2在下行方向上依次通過PDCP, RLC和MAC 3個(gè)子層(如圖1)。每個(gè)子層處理之前的數(shù)據(jù)叫做服務(wù)數(shù)據(jù)單元(SDU),處理之后的數(shù)據(jù)叫做協(xié)議數(shù)據(jù)單元(PDU) ,PDU是對(duì)SDU的數(shù)據(jù)加以一些特殊的處理,同時(shí)添加一個(gè)本子層特定的協(xié)議頭所形成的。上行方向處理與下行類似,只是3 個(gè)子層通過的順序相反。PDCP層主要完成數(shù)據(jù)包頭的壓縮與解壓縮(ROHC),數(shù)據(jù)內(nèi)容的加密與解密,以及向上層PDU的順序遞交。RLC層根據(jù)MAC層的調(diào)度結(jié)果對(duì)PDCP的PDU進(jìn)行拆分和重組,同時(shí)實(shí)現(xiàn)ARQ的功能。MAC層主要實(shí)現(xiàn)與調(diào)度和HARQ相關(guān)的功能,包括邏輯信道向傳輸信道的映射,對(duì)RLCPDU的復(fù)用與解復(fù)用,HARQ糾錯(cuò)與重傳等。
從實(shí)現(xiàn)的角度看,一般將MAC層中的調(diào)度和優(yōu)先級(jí)管理作為一個(gè)單獨(dú)的模塊,稱為調(diào)度器(Scheduler)。調(diào)度器要根據(jù)空口的狀態(tài)和網(wǎng)絡(luò)當(dāng)前要發(fā)送的數(shù)據(jù)量以及優(yōu)先級(jí),對(duì)空口資源進(jìn)行實(shí)時(shí)的分配,是一個(gè)計(jì)算密集型的模塊。將PDCP,RLC和MAC層中的復(fù)用組包功能定義為另一個(gè)模塊,稱為用戶面,這部分主要根據(jù)協(xié)議的規(guī)定完成加頭,去頭,合并,拆分,加密,解密等處理,是一個(gè)數(shù)據(jù)吞吐密集型的模塊。因?yàn)長TE采用全I(xiàn)P的網(wǎng)絡(luò)架構(gòu),所有用戶面處理的包都是TCP/IP的包,本文所介紹的Pktlib就是針對(duì)這種包類型,結(jié)合TI公司Keystone SoC中的硬件隊(duì)列管理器(QMSS)所開發(fā)的一個(gè)軟件包,它能提高層2用戶面的處理效率,實(shí)現(xiàn)基于硬件隊(duì)列的內(nèi)存管理和真正的數(shù)據(jù)零拷貝,同時(shí)接口簡單,便于用戶移植。
圖1:LTE層2下行結(jié)構(gòu)
2. QMSS和Pktlib
QMSS是Keystone上集成的硬件隊(duì)列管理器。每一個(gè)硬件隊(duì)列都由一組特定的寄存器控制,用戶通過讀寫寄存器完成包的入隊(duì)和出隊(duì)。隊(duì)列中的包要滿足QMSS特定的格式要求。一個(gè)包由包描述符(PD)和對(duì)應(yīng)的緩存組成,包的所有屬性信息都保存在PD中,包中的緩存可以分片,不同的分片之間地址可以不連續(xù),每一個(gè)分片的屬性保存在對(duì)應(yīng)的緩存描述符(BD)中。滿足這種格式的包可以壓入硬件隊(duì)列,同一個(gè)隊(duì)列中包的前后鏈接關(guān)系由硬件維護(hù)。圖2畫出了硬件隊(duì)列和其中的包的結(jié)構(gòu)。在Keystone上,這種格式的包可以直接壓入硬件加速器和外設(shè)(如以太網(wǎng)和SRIO)的發(fā)送隊(duì)列(這些發(fā)送隊(duì)列也屬于QMSS所管理的硬件隊(duì)列),進(jìn)行硬件加速處理或數(shù)據(jù)發(fā)送。
圖2:硬件隊(duì)列和包格式圖
Pktlib是TI基于QMSS封裝的一個(gè)軟件開發(fā)包,它采用QMSS的包作為基本的內(nèi)存管理單元,將硬件隊(duì)列虛擬為內(nèi)存申請(qǐng)的堆,通過包的指針操作替代了內(nèi)存的拷貝,拼接和分割。Pktlib的主要函數(shù)接口和功能如下表。
表1: Pktlib主要函數(shù)和功能
3. 基于Pktlib的層2內(nèi)存管理
層2是一個(gè)基于包處理的模塊,在處理中需要臨時(shí)申請(qǐng)大量的內(nèi)存,內(nèi)存管理的效率是影響層2處理性能的關(guān)鍵因素。傳統(tǒng)的層2處理一般直接采用操作系統(tǒng)的內(nèi)存管理模塊,完全通過軟件來管理內(nèi)存,這種處理方法在軟件處理和加速器處理接口的地方必須做一次數(shù)據(jù)拷貝,把加速器處理完的數(shù)據(jù)從加速器的緩存區(qū)中拷貝到軟件的緩存中。這種拷貝在大量的包處理中極大地影響了效率。同時(shí)傳統(tǒng)的內(nèi)存管理方法因?yàn)闊o法通過軟件直接保證多核互斥,在多核共享內(nèi)存的管理上效率很低。
基于Pktlib的內(nèi)存管理能解決傳統(tǒng)內(nèi)存管理的問題。以LTE下行處理為例,在Keystone上PDCP層的空口安全保護(hù)在安全加速器(SA)中完成,其后需要用軟件完成RLC和MAC層的處理,然后將處理完的包交給物理層進(jìn)行編碼。層2和物理層的接口根據(jù)芯片功能劃分有兩種選擇:物理層可以在其他芯片上完成(這時(shí)需要將層2處理完的數(shù)據(jù)打包通過以太網(wǎng)或SRIO 發(fā)送出去),也可以在本芯片上完成(這時(shí)可以將層2處理完的數(shù)據(jù)直接發(fā)送給物理層的加速器BCP)。層2軟件和SA,BCP,SRIO,EMAC這些加速器或外設(shè)的接口都符合QMSS的包格式,并可以通過硬件隊(duì)列來完成數(shù)據(jù)的傳輸。
圖3畫出了一個(gè)基于Pktlib的層2下行的內(nèi)存管理架構(gòu)。它的基本思想是在創(chuàng)建堆的時(shí)候?qū)⑼ㄟ^操作系統(tǒng)申請(qǐng)的固定長度的內(nèi)存塊直接掛接到PD上,然后壓入專用的硬件隊(duì)列(圖2的Mem FreeQ),這個(gè)硬件隊(duì)列就相當(dāng)于一個(gè)堆。應(yīng)用在初始化完P(guān)ktlib的Mem FreeQ以后,通過調(diào)用Pktlib_allocPacket函數(shù)從堆上申請(qǐng)(出隊(duì))內(nèi)存包并將它壓入SA的接收空閑隊(duì)列(Rx FreeQ)。當(dāng)SA處理完一個(gè)PDCP包的空口加密工作后會(huì)把數(shù)據(jù)通過接收側(cè)包DMA(Rx Pkt DMA)寫入Rx FreeQ中包指向的內(nèi)存,然后將包從Rx FreeQ出隊(duì),壓入接收隊(duì)列(RxQ)。RLC和MAC層軟件接收到調(diào)度器的調(diào)度請(qǐng)求后,從SA的RxQ出隊(duì)對(duì)應(yīng)的包并進(jìn)行RLC和MAC的組包工作。在這個(gè)處理過程中,因?yàn)樯婕暗桨姆指睿喜ⅲ砑影^的工作,RLC和MAC模塊會(huì)動(dòng)態(tài)地申請(qǐng)新的內(nèi)存,這時(shí)同樣通過調(diào)用Pktlib_allocPacket函數(shù)從Mem FreeQ中申請(qǐng)包。
RLC和MAC層處理完成后,軟件可以將處理完的包直接壓入和物理層接口的發(fā)送隊(duì)列(TxQ)中,后面可以是通過加速器直接做物理層編碼,也可以是通過接口發(fā)送數(shù)據(jù)。發(fā)送側(cè)包DMA(Tx Pkt DMA)讀入包之后,可以自動(dòng)將包返回一個(gè)隊(duì)列(Tx ReturnQ)。Tx ReturnQ 的選擇有兩種情況需要分開考慮。對(duì)于可以立即釋放的包(這個(gè)包中PD/BD所指向的緩存沒有被其他的PD/BD指向),可以通過QMSS直接回收到Mem FreeQ. 還有一類包不能立即釋放,這個(gè)包中內(nèi)存同時(shí)還被另一個(gè)PD指向(這在包的拷貝,分割中經(jīng)常出現(xiàn))。對(duì)第二種類型的包,我們需要先讓QMSS把包回收到一個(gè)臨時(shí)的回收隊(duì)列(Tx ReturnQ)中,然后調(diào)用Pktlib_freePacket接口,Pktlib會(huì)根據(jù)這個(gè)包的屬性以及是否進(jìn)行過拷貝,切割這些信息,決定是馬上將包回收到Mem FreeQ,還是等到所有指向同一個(gè)緩存的PD都使用完這個(gè)緩存后,再將包回收到Mem FreeQ。從上面的描述我們可以看到,層2下行軟件和處理流程前后的兩個(gè)加速器/外設(shè)接口發(fā)生了數(shù)據(jù)交互,但是中間沒有任何的數(shù)據(jù)拷貝,處理效率大大優(yōu)于傳統(tǒng)的方案。
Keystone中的硬件隊(duì)列可以自動(dòng)完成多核訪問的互斥,由此帶來的好處是多核可以同時(shí)使用一個(gè)Pktlib創(chuàng)建好的堆,同時(shí)不需要加入效率較低的互斥鎖保護(hù)。對(duì)于多核同時(shí)進(jìn)行層2處理的方案,這一點(diǎn)也能在一定程度上節(jié)省軟件的開銷。
圖3:基于Pktlib的層2下行內(nèi)存管理
4 基于Pktlib的層2零拷貝數(shù)據(jù)處理
層2處理中經(jīng)過PDCP層處理的包保存在硬件隊(duì)列中,RLC和MAC模塊需要根據(jù)調(diào)度器提供的調(diào)度結(jié)果對(duì)PDCP處理的包進(jìn)行重新封裝,在這個(gè)過程中需要添加RLC協(xié)議頭,MAC協(xié)議頭,還需要對(duì)PDCP包進(jìn)行切割,重組(因?yàn)檎{(diào)度結(jié)果是根據(jù)當(dāng)前空口狀態(tài)產(chǎn)生的,跟PDCP的包長不可能匹配)。傳統(tǒng)的做法是采用內(nèi)存拷貝,軟件開銷比較大。采用Pktlib可以通過相應(yīng)的函數(shù)實(shí)現(xiàn)零拷貝,提高層2處理效率。
包的合并
層2處理中有很多包的合并操作,常見的場景有:
(1) 在處理PDCP,RLC,MAC 層協(xié)議的時(shí)候添加對(duì)應(yīng)的協(xié)議頭。
(2) RLC收到調(diào)度結(jié)果后需要將兩個(gè)或多個(gè)PDCP的PDU打包為一個(gè)RLC的PDU
(3) MAC復(fù)用需要將多個(gè)RLC的PDU打包為一個(gè)MAC的PDU如圖4 所示,通過調(diào)用Pktlib_packetMerge函數(shù)可以將輸入的兩個(gè)QMSS格式的包合并為一個(gè)新的包。這一操作實(shí)際上是將包1的Next指針置為包2的P地值,在合并的過程中沒有任何的內(nèi)存拷貝。
圖4:包的合并
包的拷貝
層2處理中包的拷貝主要發(fā)生的RLC包進(jìn)入重傳緩沖區(qū),RLC協(xié)議在AM模式下對(duì)處理完成的包在提交給MAC進(jìn)行處理的同時(shí),還必須拷貝一份放入重傳緩沖區(qū)。如果接收端發(fā)出了重傳請(qǐng)求,下一次RLC會(huì)從重傳緩沖區(qū)取出數(shù)據(jù)重發(fā)。只有在收到接收端的確認(rèn)后,RLC才能釋放重傳緩存區(qū)中的包。
如圖5所示,Pktlib在做包的拷貝時(shí)不是通過內(nèi)存拷貝來實(shí)現(xiàn)的,而是通過將傳入的一組空的PD按照原始包的結(jié)構(gòu)重新鏈接一次。拷貝后,包1和包2的PD/BD不同,但是PD/BD所指向的內(nèi)存是同一塊。這種包的拷貝(其實(shí)包的切割也會(huì)出現(xiàn)相同的問題)要求在包的釋放時(shí)只有在確認(rèn)同一塊內(nèi)存所關(guān)聯(lián)的所有包都被使用完了之后,才能進(jìn)行內(nèi)存的釋放。在Pktlib_freePacket函數(shù)中會(huì)查找當(dāng)前包下所有PD/BD所指向內(nèi)存所關(guān)聯(lián)的所有PD/BD的當(dāng)前情況,如果還有PD/BD在使用這塊內(nèi)存就不立即釋放,只有在所有PD/BD都不使用這塊內(nèi)存了,才會(huì)將它釋放。
圖5: 包的拷貝
包的分割
層2處理中包的分割操作,主要有下面兩個(gè)場景:
(1) RLC收到調(diào)度結(jié)果后需要將一個(gè)PDCP的PDU分割為兩個(gè)或多個(gè)RLC的PDU
(2) MAC復(fù)用需要一個(gè)RLC 的PDU分割為兩個(gè)或多個(gè)MAC的PDU如圖6所示,Pktlib在做包的分割時(shí)是通過傳入一個(gè)空的PD,然后用這個(gè)PD指向切割的字節(jié)位置構(gòu)造出新的包。從圖中可以看到切割后包1緩存2和包2緩存1在同一個(gè)內(nèi)存塊上,只有當(dāng)這兩個(gè)包都不在使用這塊內(nèi)存之后,這個(gè)內(nèi)存塊才能得到釋放。
圖6: 包的分割
Pktlib的性能
使用Pktlib的API能夠完全替換傳統(tǒng)的基于OS的內(nèi)存管理,并且能實(shí)現(xiàn)零拷貝的包合并,復(fù)制和分割,在內(nèi)存處理的效率上大大優(yōu)于傳統(tǒng)方案。下表列出了在TI公司TMS320C6614 芯片上測試得到的函數(shù)性能。
表2: Pktlib主要函數(shù)的性能
總結(jié)
TI在Keystone上提供的Pktlib能夠?qū)崿F(xiàn)硬件和軟件內(nèi)存管理的統(tǒng)一,實(shí)現(xiàn)基于包的數(shù)據(jù)合并,拷貝,分割,以及軟件與硬件加速器之間完全的零拷貝數(shù)據(jù)傳遞。這些特點(diǎn)正好適應(yīng)了LTE層2中大批量包數(shù)據(jù)處理的要求。結(jié)合Pktlib進(jìn)行LTE基站層2軟件的開發(fā),能極大地提高包的處理效率,在硬件規(guī)格不變的情況下提供更高的系統(tǒng)吞吐率。本方案為基于Keystone SoC的LTE基站開發(fā)提供了一個(gè)有益的參考。
責(zé)任編輯:gt
-
寄存器
+關(guān)注
關(guān)注
31文章
5424瀏覽量
123487 -
soc
+關(guān)注
關(guān)注
38文章
4354瀏覽量
221803 -
基站
+關(guān)注
關(guān)注
17文章
1419瀏覽量
67335
發(fā)布評(píng)論請(qǐng)先 登錄
一種面向LTE基站的SOC平臺(tái)軟件解決方案

以全新的多核SoC架構(gòu)進(jìn)行LTE開發(fā)
LTE基站天線解決方案
如何利用WiMAX SoC去設(shè)計(jì)多扇區(qū)基站?
中國TD系統(tǒng)如何實(shí)現(xiàn)向TD-LTE發(fā)展?
小型蜂窩基站面臨的挑戰(zhàn)
TI擴(kuò)展其KeyStone多核架構(gòu)
TI基于KeyStone的SoC系統(tǒng)助力PureWave高性能小型蜂窩戶外基站
基于Keystone SoC的LTE基站開發(fā)

KeyStone多核SoC工具套件

基于BSC9132開發(fā)LTE小基站設(shè)計(jì)

SK電訊開發(fā)家庭基站干涉控制技術(shù) 提升了LTE網(wǎng)絡(luò)的客戶體驗(yàn)
KeyStone I器件的SerDes實(shí)現(xiàn)指南

評(píng)論