新一代多核媒體處理器優(yōu)化高清視頻應(yīng)用
2010年一季度,LSI發(fā)布了新一代多核媒體處理器或基帶處理器:StarPro2704和StarPro2716(簡(jiǎn)稱SP27xx)。LSI上一代多核媒體處理器StarPro2603和StarPro2612(簡(jiǎn)稱SP26xx)已經(jīng)在2G無(wú)線基帶及語(yǔ)音媒體網(wǎng)關(guān)上成功應(yīng)用。SP27xx相比SP26xx,在媒體和基帶算法處理能力上有至少2倍的增強(qiáng),同時(shí)在降低功耗方面加入了很多先進(jìn)技術(shù)。針對(duì)運(yùn)營(yíng)商級(jí)和中小企業(yè)級(jí)的3G/4G無(wú)線基站、更高密度的語(yǔ)音媒體網(wǎng)關(guān)以及高清視頻服務(wù)器等方面的應(yīng)用,SP27xx均能提供業(yè)界領(lǐng)先的高性能低功耗的解決方案。本文首先介紹SP27xx的新特性,然后著重分析SP27xx在高清視頻領(lǐng)域的應(yīng)用。
SP27xx體系結(jié)構(gòu)
SP2716是通過(guò)MCM多芯片封裝工藝將4個(gè)SP2704的裸片封裝成一個(gè)芯片,其處理能力是SP2704的4倍。相對(duì)于4個(gè)SP2704,SP2716大大放寬了對(duì)單板尺寸的限制,這使得用戶能夠更方便地?cái)U(kuò)展高端音視頻業(yè)務(wù)。下文重點(diǎn)介紹SP2704的體系結(jié)構(gòu)。
SP2704繼承了SP2603的體系構(gòu)架,由2個(gè)基本模塊組成:媒體處理模塊(MPB)和包處理模塊(PPB)。媒體處理模塊主要由4個(gè)SC3400e的DSP子系統(tǒng)組成,而包處理模塊的核心是ARM11雙核處理器系統(tǒng)。在這種單芯片DSP+ARM的多核處理器結(jié)構(gòu)中,數(shù)據(jù)面和控制面分別由DSP和ARM來(lái)處理,使得DSP可以最大程度地利用其運(yùn)算優(yōu)勢(shì),同時(shí)不需要額外使用片外處理器來(lái)處理應(yīng)用程協(xié)議,是最高效的音視頻媒體網(wǎng)關(guān)結(jié)構(gòu)。
SP2704擁有超大的片內(nèi)內(nèi)存,對(duì)于高密度語(yǔ)音網(wǎng)關(guān)和非高清視頻應(yīng)用,一般不需要使用片外存儲(chǔ)區(qū),這就最大程度地降低了成本和單板總功耗,減少了軟硬件設(shè)計(jì)復(fù)雜度,也放寬了單板尺寸的限制。此外,SP27xx采用了業(yè)界領(lǐng)先的40nm芯片工藝,還引入了許多先進(jìn)的低功耗技術(shù)。以語(yǔ)音網(wǎng)關(guān)應(yīng)用為例,SP27xx的每通道功耗遠(yuǎn)遠(yuǎn)低于業(yè)界其他同類芯片。
1)DSP子系統(tǒng)(DSS)
SP2704有4個(gè)頻率為750MHz的StarCore SC3400eDSP子系統(tǒng)(DSS)。相對(duì)上一代芯片SP2603,如果不考慮DSP內(nèi)核能力的增強(qiáng),SP2704的DSP處理能力可達(dá)SP2603的兩倍。每個(gè)DSS還包含內(nèi)存保護(hù)單元(MPU),256KB本地零等待RAM,32KB一級(jí)指令高速緩存,32KB一級(jí)數(shù)據(jù)高速緩存,512KB L2高速緩存,兩個(gè)專用的2通道DMA控制器。
2)包處理模塊(PPB)
包處理模塊(PPB)是基于雙核ARM11 MP的子系統(tǒng),工作頻率僅為DSS工作頻率的一半。PPB主要負(fù)責(zé)整個(gè)芯片加載和管理(包括ARM和DSP),以及輸入輸出數(shù)據(jù)包的管理。PPB還包括:ROM用于存放ARM Boot代碼,以及SPI/SSP、UART、NAND flash控制器接口,可為客戶提供多種Boot方式。
3)豐富的片內(nèi)內(nèi)存和2個(gè)超高帶寬總線
SP2704中有2個(gè)超高帶寬總線矩陣:DSP總線矩陣和PPB總線矩陣,可用作數(shù)據(jù)處理功能模塊的系統(tǒng)互連,以1/2DSP子系統(tǒng)時(shí)鐘速率運(yùn)行,帶寬分別是128位和64位。SP2704擁有豐富的片內(nèi)內(nèi)存,除了DSP和ARM子系統(tǒng)內(nèi)部的零等待RAM,還有一個(gè)6M的片內(nèi)系統(tǒng)共享內(nèi)存。共享內(nèi)存分成12個(gè)存儲(chǔ)塊,不同的內(nèi)核可以同時(shí)訪問(wèn)不同的存儲(chǔ)塊,真正達(dá)到了數(shù)據(jù)訪問(wèn)的高吞吐量、高可用性以及低時(shí)延。
4) 豐富的接口資源
SP2704擁有豐富的接口資源,可以滿足各種音視頻網(wǎng)關(guān)服務(wù)器應(yīng)用:兩個(gè)10/100/1000/2500Mbps以太網(wǎng)MAC,可配置為FE(SS-SMII)或GE(SGMII);TDM處理模塊通過(guò)6個(gè)串行端口進(jìn)行TDM流量的多路復(fù)用和解多路復(fù)用;10Gbps x4 SRIO接口(4個(gè)3.125Gbps Lane)或者配置為兩個(gè)獨(dú)立的x1SRIO接口;PCIe接口,可接到host或SP2704設(shè)備之間互聯(lián);32位DDR3接口工作頻率高達(dá)1066MHz。
圖1 SP2704媒體處理器體系結(jié)構(gòu)。
SC3400e---基于SC3400的增強(qiáng)
SC3400e與SC3400后向兼容,SC3400e繼承了SC3400的變長(zhǎng)指令集(VLES)結(jié)構(gòu)和12級(jí)流水深度。SC3400e的能力增強(qiáng)表現(xiàn)在以下幾個(gè)方面:
1)實(shí)數(shù)和復(fù)數(shù)乘加能力的增強(qiáng)
SC3400e與SC3400的數(shù)據(jù)算術(shù)邏輯單元(DALU)都包含了4個(gè)乘加單元(MAC)。SC3400的MAC包含1個(gè)16位*16位的乘法器和1個(gè)40位的加法器;而SC3400e的MAC包含4個(gè)16位*16位的乘法器和2個(gè)40位的加法器,其加法器支持2個(gè)40位復(fù)數(shù)操作數(shù)的加/減法。實(shí)數(shù)乘加運(yùn)算能力提高1倍,而復(fù)數(shù)乘加運(yùn)算能力則是原來(lái)的4倍。
SC3400e的實(shí)數(shù)和復(fù)數(shù)MAC運(yùn)算能力可概括為:每周期可完成8個(gè)16位實(shí)數(shù)乘加運(yùn)算,性能是SC3400的2倍;每周期可完成4個(gè)16位(16位實(shí)部,16位虛部)的復(fù)數(shù)乘加運(yùn)算,性能是SC3400的4倍;每周期可完成8個(gè)8位(8位實(shí)部,8位虛部)的復(fù)數(shù)乘加運(yùn)算,性能是SC3400的8倍;每周期可完成4個(gè)32位*16位的實(shí)數(shù)乘加運(yùn)算,性能是SC3400的2倍;每周期可完成4個(gè)(16位*16位+16位*16位+40位)的實(shí)數(shù)點(diǎn)積運(yùn)算。如果設(shè)置了飽和模式,A=sat{sat{A+BxC}+DxE},則性能是SC3400的2倍。
2)在COF和控制代碼效率方面的改進(jìn)
SC3400采用先進(jìn)的動(dòng)態(tài)分支預(yù)測(cè)機(jī)制,可有效減少COF(Change of Flow)的延遲。例如,某條JMP指令已經(jīng)在分支目標(biāo)緩沖(BTB)中,實(shí)際執(zhí)行只需要1個(gè)周期,而不是6個(gè)周期。SC3400e在原有的分析預(yù)測(cè)機(jī)制的基礎(chǔ)上,完成了多方面的改進(jìn)。
在SC3400e中,硬件循環(huán)和COF共同使用n個(gè)BTB,突破了SC3400中只支持4層嵌套的零開(kāi)銷硬件循環(huán)的限制。而且,SC3400e還改進(jìn)了硬件循環(huán)誤判的開(kāi)銷,就算硬件循環(huán)條件不成立,開(kāi)銷也只有3個(gè)周期,而在SC3400中這樣的開(kāi)銷最多達(dá)6個(gè)周期;在SC3400e中,提高了短循環(huán)的執(zhí)行效率,同時(shí)短循環(huán)不再占用BTB;SC3400e支持4個(gè)返回地址寄存器,相對(duì)SC3400中的一個(gè)返回地址寄存器,減少了子程序返回的平均延遲??傮w看,相對(duì)SC3400,SC3400e控制代碼的效率提高了0.25倍。
圖2 高清視頻編碼及解碼的多核功能分配示意圖。
3) 查找表的性能提高
在SC3400e中,帶有線性地址修改的指令1個(gè)周期就能完成。查找表的性能提高了0.5倍。
4) SC3400e中改進(jìn)的視頻加速指令
SC3400e中改進(jìn)的視頻加速指令主要包括:用于半像素插值的插值指令,性能提高1倍;用于運(yùn)動(dòng)補(bǔ)償?shù)腁dd-and-Sat指令,性能提高1倍;1個(gè)周期完成位插入或位抽取操作。對(duì)于位流與字節(jié)之間的pack/unpack及其他位流處理算法,性能提高1倍。
SP2704二級(jí)緩存的使用
SP2704支持二級(jí)緩存(L2 cache):其中一級(jí)緩存(L1 cache)分成32k指令緩存和32K數(shù)據(jù)緩存,二級(jí)緩存可靈活用于片外程序和數(shù)據(jù)的緩存。對(duì)于高清視頻編解碼的應(yīng)用,需要使用DDR3存儲(chǔ)器來(lái)存儲(chǔ)大量的視頻數(shù)據(jù)。這時(shí),一般會(huì)配置二級(jí)緩存映射到DDR存儲(chǔ)空間。同時(shí),如果再配置L1 cache緩存L2 cache的數(shù)據(jù),對(duì)緩存進(jìn)行合理的優(yōu)化,會(huì)使片外的視頻數(shù)據(jù)讀寫(xiě)效率更高。
L2 cache還可以配置成共享內(nèi)存,如果L2 cache配置成共享內(nèi)存,6MB共享內(nèi)存的空間就擴(kuò)展為8MB。對(duì)于不需要放置片外存儲(chǔ)器的應(yīng)用,一般會(huì)把L2 cache配置成共享內(nèi)存,進(jìn)一步增加數(shù)據(jù)和代碼的片內(nèi)存儲(chǔ)空間。
分層的多核編解碼器構(gòu)架
對(duì)于H.263或H.264的高清視頻編碼,一個(gè)DSP核無(wú)法完成1路圖像的編碼/解碼,因而需要由多個(gè)核協(xié)作完成,這就涉及到多核之間任務(wù)分配的問(wèn)題。LSI目前采用靈活的多層編解碼構(gòu)架,以片(slice)為基本單位對(duì)圖像進(jìn)行分割,每個(gè)核處理一個(gè)或多個(gè)片。這樣,可以在多核之間擴(kuò)展,也可以通過(guò)sRIO、PCIe等高速互連總線在多器件之間擴(kuò)展。
以1080P(1280*720)H.264的解碼和編碼為例,如果一個(gè)SP2704處理1路30fps 1080p H.264解碼,多個(gè)SP2704協(xié)同處理1路30fps 1080p H.264編碼,SP2704#1解碼后的YUV4:2:0的圖像數(shù)據(jù)提供給SP2704#2來(lái)進(jìn)行編碼,參考幀數(shù)據(jù)將存放在DDR3存儲(chǔ)器中,如圖2所示。
多核分層編碼器
在協(xié)同處理1路圖像的多個(gè)核中,一個(gè)核作為主核,其他核為從核。主核除了要負(fù)責(zé)一些slice的編解碼之外,還要處理負(fù)荷平衡、場(chǎng)景識(shí)別及速率控制這樣的公共任務(wù)。其他從核將只是對(duì)分配的slice進(jìn)行處理。
多核分割可以減少高清視頻編碼的延遲,而動(dòng)態(tài)負(fù)荷平衡功能可最大程度減少延遲。SP2704內(nèi)部的4個(gè)DSP核可以通過(guò)6M的共享內(nèi)存和DDR3片外存儲(chǔ)器來(lái)共享視頻數(shù)據(jù):當(dāng)前圖像存放在6M的共享內(nèi)存中,通過(guò)L1數(shù)據(jù)cache緩存片內(nèi)共享內(nèi)存的圖像數(shù)據(jù),參考圖像存放在DDR3外部存儲(chǔ)器中,通過(guò)L2 cache來(lái)緩存DDR3中的圖像數(shù)據(jù)。從而使得視頻數(shù)據(jù)訪問(wèn)的速度達(dá)到最快。
SP2716中的2個(gè)SP2704之間可以通過(guò)PCIe共享DDR3存儲(chǔ)器,這樣可減少2個(gè)SP2704之間的數(shù)據(jù)交互,從而簡(jiǎn)化了軟件開(kāi)發(fā)的復(fù)雜度,還將整個(gè)硬件設(shè)計(jì)所需的DDR3設(shè)備數(shù)量減少了一半。此外,多個(gè)SP2704器件之間通過(guò)sRIO接口來(lái)傳輸或共享視頻數(shù)據(jù),這些SP2704都連接到sRIO開(kāi)關(guān)上。每個(gè)器件都可以自發(fā)地寫(xiě)入到其他任何一個(gè)器件的I/O空間。
多核解碼器
H.264解碼涉及串行操作和并行操作。熵解碼包含一系列串行操作,無(wú)法分配給多個(gè)內(nèi)核并行處理,因而將由主核處理,其他并行操作可以分配到各個(gè)從核來(lái)處理。LSI分層解碼器的基本原理是:由主核負(fù)責(zé)熵解碼,再把熵解碼后的數(shù)據(jù)分配到各個(gè)從核來(lái)處理。其他從核讀取數(shù)據(jù)后進(jìn)行后續(xù)處理,例如逆量化、逆變換等;對(duì)于P宏塊還要從DDR3中讀取參考幀數(shù)據(jù)并進(jìn)行運(yùn)動(dòng)補(bǔ)償。最后進(jìn)行循環(huán)濾波,并把得到的宏塊數(shù)據(jù)存入DDR3的當(dāng)前幀中。(LSI公司)