鄭旸
摘 ?要:該文圍繞解決TM500測試終端載波聚合下行吞吐率和系統(tǒng)時延問題,提出了使用多核多線程并行處理來優(yōu)化系統(tǒng)時延的方案。通過對比分析方案前后的數(shù)據(jù),確定了基于多核多線程并行處理的優(yōu)點,針對上述方案的具體實現(xiàn)進行詳細論述。最后,通過測試儀表與基站聯(lián)調(diào),證明了該測試方案的有效性和可行性。
關(guān)鍵詞:通信與信息系統(tǒng);載波聚合;吞吐率測試;多核多線程
中圖分類號: TN929.5 ? ? ? ? ? ? 文獻標(biāo)志碼:A
1 項目概況
5G NR基站測試儀表被用在5G NR基站的研發(fā)、生產(chǎn)、入網(wǎng)認證、維修等多個環(huán)節(jié),測試儀表的成熟度和高效性對5G NR產(chǎn)業(yè)鏈的發(fā)展和產(chǎn)品研發(fā)起著重要的推動作用[1]。唯亞威公司生產(chǎn)的符合3GPP標(biāo)準的TM500網(wǎng)絡(luò)測試儀被認為是無線網(wǎng)絡(luò)測試的事實標(biāo)準,在5G研發(fā)生命周期的測試中被市場廣泛采用,并被應(yīng)用于新服務(wù)推出前的網(wǎng)絡(luò)性能壓力測試。5G NR基于毫米波的多載波聚合技術(shù)可以給用戶提供超高速及短時延的服務(wù),但這對基站及基站測試儀表性能都提出一個不小的課題。
2 多載波聚合技術(shù)原理
載波聚合(Carrier Aggregation,簡稱CA),通過將多個連續(xù)或非連續(xù)的載波(Component Carrier,簡稱CC)聚合成更大的帶寬,從而提高頻譜資源的利用率,提升上下行速率。下行N個小區(qū)載波聚合的最大吞吐率計算公式如公式(1)所示。
式中:J 表示聚合的載波個數(shù),表示每個小區(qū)的層數(shù),表示每個小區(qū)的最大調(diào)制方式,為調(diào)節(jié)因子,可以配置為1、0.8、0.75和0.4,Rmax為常數(shù),值為 948/1024,為每個小區(qū)的最大帶寬,為每個小區(qū)的平均每子幀的OFDM符號數(shù),參數(shù)在FR2下行時配置為0.18。以FR2 120 kHz子載波間隔的8載波為例,當(dāng)每小區(qū)為2層,PDSCH調(diào)制方式為256-QAM,小區(qū)帶寬為100 M時,下行最大速率可達8.6 Gbps。
3 5G NR系統(tǒng)下行鏈路載波聚合方案設(shè)計
3.1 TM500的架構(gòu)設(shè)計
每個5G小區(qū)對應(yīng)一個獨立的基帶服務(wù)器,運行在Dell R630 Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz上。由于載波聚合后的下行數(shù)據(jù)要在MAC層聚合,所以有一臺層2服務(wù)器運行在Dell R630 CPU: E5-2687W v4 @ 3.00GHz上,負責(zé)運行L2協(xié)議棧以及管理8個基帶服務(wù)器。另外一臺層3服務(wù)器負責(zé)運行實時的L3協(xié)議棧。TM500作為基站負載測試儀表,可以模擬每個eMBB小區(qū)的256個UE,而每個UE的PCC,SCC1,SCC2…SCC7可以隨意分布在任何一個基站服務(wù)器上。
因此層2服務(wù)器作為TM500架構(gòu)的中心節(jié)點,要同時接收并處理來自8個基帶服務(wù)器的各個UE的下行數(shù)據(jù),在MAC層聚合后傳給RLC和PDCP層處理,并再對各個UE遍歷其所有基帶服務(wù)器的下行數(shù)據(jù)CRC結(jié)果,匯總后計算其HARQ反饋的碼本,再把計算結(jié)果發(fā)送給其PCC對應(yīng)的基帶服務(wù)器。TM500架構(gòu)設(shè)計示意圖如圖1所示。
3.2 下行載波聚合的HARQ反饋設(shè)計
根據(jù)3GPP協(xié)議,在下行載波聚合時,其DL的HARQ反饋是承載在PCC的PUCCH信道上的(當(dāng)有上行載波聚合時,也可以承載在SCC的PUSCH信道上)。因各個基帶服務(wù)器每個時隙獨自解碼下行PDCCH和PDSCH信道,并把解碼結(jié)果通過消息發(fā)送給L2服務(wù)器。L2服務(wù)器接收到信息后,保存到HARQ反饋目標(biāo)時隙,并計算該基帶服務(wù)器目標(biāo)時隙上PUCCH的SR信息。當(dāng)?shù)三R系統(tǒng)中全部基帶服務(wù)器的消息后,L2服務(wù)器輪詢每個UE在各個載波上的HARQ反饋并計算碼本,保存到目標(biāo)時隙。然后L2服務(wù)器還需要計算各個基帶服務(wù)器在目標(biāo)時隙上PUCCH的CSI信息。最后根據(jù)每個UE的PCC所對應(yīng)的基帶服務(wù)器位置,發(fā)送PUCCH的SR/CSI/HARQ反饋信息給相應(yīng)的基帶服務(wù)器。
3GPP在dl-DataToUL-ACK中規(guī)定了下行HARQ反饋的值域(后用HARQ RTT代替)為0~15個時隙,以FR2 120 kHz子載波間隔中常用配置的4個時隙來計算。手機只有4 × 125us/slot = 500 us的反饋時延預(yù)算。再扣除下行解碼和上行編碼的開銷,實際留給L2服務(wù)器計算時間只有100 us左右。由于各個基帶服務(wù)器的編解碼優(yōu)化空間是有限的,所以解決系統(tǒng)時延的關(guān)鍵在于L2服務(wù)器。
4 系統(tǒng)延時優(yōu)化設(shè)計
4.1 L2服務(wù)器代碼重構(gòu)
Dell R630為戴爾雙插槽機架式服務(wù)器,屬于第13代PowerEdge服務(wù)器,采用E5-2687W v4 @ 3.00GHz處理器和四通道DDR4 ECC內(nèi)存。擁有12核,開啟超線程時可同時運行24個線程,L3緩存為30 MB。
在代碼重構(gòu)前,3.2章節(jié)所述的L2服務(wù)器的HARQ反饋模塊是一個線程運行在一個核上,其運行時間約為50 us。在1載波和2載波時,系統(tǒng)的時延還是能滿足的??僧?dāng)系統(tǒng)擴展到8載波時,發(fā)現(xiàn)整個模塊需要350 us的時間才能運行完,遠遠大于100 us的預(yù)算。但同時,服務(wù)器上還有很多核處于空閑狀態(tài),并沒有把Dell R630的性能發(fā)揮到極致,可以通過把該模塊并行運行在多個核上,以此來獲取并行處理的增益。但如3.2章節(jié)所述的,該模塊需要輪詢各個基帶處理器的數(shù)據(jù)來計算碼本的步驟,由于各個基帶處理器上報的消息到達順序不同、計算量不同,簡單的多核多線程并行處理就會有線程間空閑數(shù)據(jù)競爭的風(fēng)險。
4.2 下行多載波L2服務(wù)器并行處理設(shè)計
首先為該模塊啟動8個線程,每2個線程在一個核上。指定核#0上線程#0為主線程,其余為輔線程。8個線程分別和一個基帶服務(wù)器綁定,接收其上報的下行解碼數(shù)據(jù),并預(yù)計算其上PUCCH的SR信息。主線程計算完后負責(zé)檢查其他輔線程是否也計算完畢PUCCH的SR信息,而其他輔線程計算完畢SR信息處于等待狀態(tài)。
當(dāng)主線程發(fā)現(xiàn)全部線程都計算完P(guān)UCCH的SR信息后,開始遍歷全部基帶服務(wù)器的下行解碼數(shù)據(jù),并匯總計算HARQ反饋碼本,保存在目標(biāo)時隙的該UE的PCC所在的基帶服務(wù)器的緩存里。當(dāng)所有UE的HARQ反饋碼本計算完畢后,主線程通知各個輔線程可以開啟后續(xù)計算。
接下來8個線程同時并行計算其所對應(yīng)的基帶服務(wù)器上PUCCH的CSI信息。最后再分別并行,把PUCCH的CSI/SR/HARQ反饋信息一起發(fā)送給其對應(yīng)的基帶服務(wù)器,基帶服務(wù)器完成PUCCH信道編碼。
這其中多線程之間的同步是設(shè)計的關(guān)鍵。Linux下提供了多種方式來處理線程同步,最常用的是互斥鎖、條件變量、信號量和讀寫鎖。但為了節(jié)省耗時,采用了原子操作、內(nèi)存屏障和揮發(fā)變量相結(jié)合的方法。
原子操作是一種基于基本數(shù)據(jù)類型的同步形式,底層用匯編鎖來控制變量的變化,保證數(shù)據(jù)的正確性,好處在于不會block互相競爭的線程,且相比鎖耗時很少。
內(nèi)存屏障則是為了達到最佳性能,編譯器通常會對匯編級別的指令進行重新排序,從而保持處理器的指令管道盡可能的滿。作為優(yōu)化的一部分,編譯器可能會對內(nèi)存訪問的指令進行重新排序(在認為不會影響數(shù)據(jù)正確性的前提下),然而,這并不一定都是正確的,順序的變化可能導(dǎo)致一些變量的值得到不正確的結(jié)果。內(nèi)存屏障是一種不會造成線程擁塞的同步工具,它用于確保內(nèi)存操作的正確順序。內(nèi)存屏障像一道屏障,迫使處理器在其前面完成必須的加載或者存儲的操作。內(nèi)存屏障常被用于確保一個線程中,可被其他線程訪問的內(nèi)存操作按照預(yù)期的順序執(zhí)行。
揮發(fā)變量是另外一種針對變量的同步工具。眾所周知,CPU訪問寄存器的速度比訪問內(nèi)存速度快很多,因此,CPU有時候會將一些變量放置到寄存器中,而不是每次都從內(nèi)存中讀?。ɡ鏵or循環(huán)中的i值)從而優(yōu)化代碼,但是可能會導(dǎo)致錯誤。對一個變量加上volatile關(guān)鍵字,可以迫使編譯器每次都重新從內(nèi)存中加載該變量,而不會從寄存器中加載。
因此,在判斷SR數(shù)據(jù)是否收集齊處加上原子或的操作,來檢查各個輔線程是否完成了PUCCH的SR計算。而每個輔線程在判斷是否遍歷完畢處會有一個原子異或的操作來表示其已經(jīng)完成,由主線程完成HARQ碼本計算后,通過原子與的操作來釋放輔線程進行后續(xù)的計算,并通過空循環(huán)來等待主線程完成該處的同步釋放工作。通過定義揮發(fā)變量的操作,以此來保證各個輔線程從內(nèi)存中讀取同步變量。遍歷完畢后,調(diào)用了內(nèi)存屏障,從而確保各個輔線程再次計算時內(nèi)存訪問次序的正確性。
5 仿真與結(jié)果分析
在和基站聯(lián)調(diào)運行1個UE,F(xiàn)R2 120 kHz子載波間隔的下行8載波聚合的用例時可知,在代碼重構(gòu)前,由于HARQ反饋來不及反饋給基站,出現(xiàn)了一定概率的HARQ重傳,最大速率只能達到1.2 Gbps。而在代碼重構(gòu)后,則可以穩(wěn)定達到理論上的最大峰值速率4.2 Gbps。重構(gòu)前后指標(biāo)對比見表1。
但隨著模擬UE個數(shù)的增加,發(fā)現(xiàn)每個時隙需要上報的PUCCH個數(shù)也會增加,從而導(dǎo)致L2服務(wù)器的該模塊負載也在增加,并最終會導(dǎo)致來不及上報PUCCH的信息(RTT margin為負數(shù))。從圖2中可見,RTT margin的趨勢不僅和小區(qū)數(shù)目有關(guān)還和UE數(shù)目有關(guān)。而當(dāng)線程增加后,對RTT margin是有所提高的。
另外,L2服務(wù)器上其他模塊如PDCP、RLC在下行8載波聚會時,也存在負載過高的現(xiàn)象,會出現(xiàn)丟包現(xiàn)象,并對發(fā)包率、加密算法以及包的大小敏感。
6 結(jié)論
該文提出的利用Dell R630服務(wù)器E5-2687W v4 @ 3.00GHz多核多線程并行計算的方法,可以有效解決TM500基站測試儀表在FR2 120KHz子載波間隔,下行8載波,64-QAM時的最大吞吐率和HARQ反饋時延的問題。也意識到多核多線程增加了代碼的復(fù)雜度和調(diào)試難度,不同線程間的同步方法各有利弊,如果根據(jù)架構(gòu)實際情況合理設(shè)計和利用,可以獲得最大化收益。但也看到了在UE個數(shù)增加時依舊面臨的問題。在未來載波聚合的小區(qū)有可能達到32個或者更多,除了升級更高級的硬件服務(wù)器之外,更加充分地利用多核多線程并行計算的優(yōu)勢,或許是在不增加產(chǎn)品成本下的一個不錯的解決方案。
參考文獻
[1]王順.載波聚合下行吞吐率測試的設(shè)計與實現(xiàn)[J].軟件,2015,36(10):68-71.