2010年一季度,LSI發(fā)布了新一代多核媒體處理器或基帶處理器:StarPro2704和StarPro2716(簡(jiǎn)稱SP27xx),。LSI上一代多核媒體處理器StarPro2603和StarPro2612(簡(jiǎn)稱SP26xx)已經(jīng)在2G無線基帶及語音媒體網(wǎng)關(guān)上成功應(yīng)用。SP27xx相比SP26xx,,在媒體和基帶算法處理能力上有至少2倍的增強(qiáng),,同時(shí)在降低功耗方面加入了很多先進(jìn)技術(shù)。針對(duì)運(yùn)營商級(jí)和中小企業(yè)級(jí)的3G/4G無線基站,、更高密度的語音媒體網(wǎng)關(guān)以及高清視頻服務(wù)器等方面的應(yīng)用,,SP27xx均能提供業(yè)界領(lǐng)先的高性能低功耗的解決方案。本文首先介紹SP27xx的新特性,,然后著重分析SP27xx在高清視頻領(lǐng)域的應(yīng)用,。
SP27xx體系結(jié)構(gòu)
SP2716是通過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來處理,,使得DSP可以最大程度地利用其運(yùn)算優(yōu)勢(shì),同時(shí)不需要額外使用片外處理器來處理應(yīng)用程協(xié)議,,是最高效的音視頻媒體網(wǎng)關(guān)結(jié)構(gòu),。
SP2704擁有超大的片內(nèi)內(nèi)存,對(duì)于高密度語音網(wǎng)關(guān)和非高清視頻應(yīng)用,一般不需要使用片外存儲(chǔ)區(qū),,這就最大程度地降低了成本和單板總功耗,減少了軟硬件設(shè)計(jì)復(fù)雜度,,也放寬了單板尺寸的限制,。此外,SP27xx采用了業(yè)界領(lǐng)先的40nm芯片工藝,,還引入了許多先進(jìn)的低功耗技術(shù),。以語音網(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í)訪問不同的存儲(chǔ)塊,,真正達(dá)到了數(shù)據(jù)訪問的高吞吐量、高可用性以及低時(shí)延。
4) 豐富的接口資源
SP2704擁有豐富的接口資源,,可以滿足各種音視頻網(wǎng)關(guān)服務(wù)器應(yīng)用:兩個(gè)10/100/1000/2500Mbps以太網(wǎng)MAC,,可配置為FE(SS-SMII)或GE(SGMII);TDM處理模塊通過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的變長指令集(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)算能力則是原來的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層嵌套的零開銷硬件循環(huán)的限制,。而且,,SC3400e還改進(jìn)了硬件循環(huán)誤判的開銷,就算硬件循環(huán)條件不成立,,開銷也只有3個(gè)周期,,而在SC3400中這樣的開銷最多達(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ǔ)器來存儲(chǔ)大量的視頻數(shù)據(jù),。這時(shí),一般會(huì)配置二級(jí)緩存映射到DDR存儲(chǔ)空間,。同時(shí),,如果再配置L1 cache緩存L2 cache的數(shù)據(jù),對(duì)緩存進(jìn)行合理的優(yōu)化,,會(huì)使片外的視頻數(shù)據(jù)讀寫效率更高,。
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核無法完成1路圖像的編碼/解碼,因而需要由多個(gè)核協(xié)作完成,,這就涉及到多核之間任務(wù)分配的問題,。LSI目前采用靈活的多層編解碼構(gòu)架,以片(slice)為基本單位對(duì)圖像進(jìn)行分割,,每個(gè)核處理一個(gè)或多個(gè)片,。這樣,可以在多核之間擴(kuò)展,,也可以通過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來進(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核可以通過6M的共享內(nèi)存和DDR3片外存儲(chǔ)器來共享視頻數(shù)據(jù):當(dāng)前圖像存放在6M的共享內(nèi)存中,,通過L1數(shù)據(jù)cache緩存片內(nèi)共享內(nèi)存的圖像數(shù)據(jù),,參考圖像存放在DDR3外部存儲(chǔ)器中,通過L2 cache來緩存DDR3中的圖像數(shù)據(jù),。從而使得視頻數(shù)據(jù)訪問的速度達(dá)到最快,。
SP2716中的2個(gè)SP2704之間可以通過PCIe共享DDR3存儲(chǔ)器,這樣可減少2個(gè)SP2704之間的數(shù)據(jù)交互,,從而簡(jiǎn)化了軟件開發(fā)的復(fù)雜度,,還將整個(gè)硬件設(shè)計(jì)所需的DDR3設(shè)備數(shù)量減少了一半,。此外,多個(gè)SP2704器件之間通過sRIO接口來傳輸或共享視頻數(shù)據(jù),,這些SP2704都連接到sRIO開關(guān)上,。每個(gè)器件都可以自發(fā)地寫入到其他任何一個(gè)器件的I/O空間。
多核解碼器
H.264解碼涉及串行操作和并行操作,。熵解碼包含一系列串行操作,,無法分配給多個(gè)內(nèi)核并行處理,因而將由主核處理,,其他并行操作可以分配到各個(gè)從核來處理,。LSI分層解碼器的基本原理是:由主核負(fù)責(zé)熵解碼,再把熵解碼后的數(shù)據(jù)分配到各個(gè)從核來處理,。其他從核讀取數(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)前幀中,。