关键词:
处理器优化 , 多核媒体 , 高清视频
2010年一季度,lsi发布了新一代多核媒体处理器或基带处理器:starpro2704和starpro2716(简称sp27xx)。lsi上一代多核媒体处理器starpro2603和starpro2612(简称sp26xx)已经在2g无线基带及语音媒体网关上成功应用。sp27xx相比sp26xx,在媒体和基带算法处理能力上有至少2倍的增强,同时在降低功耗方面加入了很多先进技术。针对运营商级和中小企业级的3g/4g无线基站、更高密度的语音媒体网关以及高清视频服务器等方面的应用,sp27xx均能提供业界领先的高性能低功耗的解决方案。本文首先介绍sp27xx的新特性,然后着重分析sp27xx在高清视频领域的应用。
sp27xx体系结构
sp2716是通过mcm多芯片封装工艺将4个sp2704的裸片封装成一个芯片,其处理能力是sp2704的4倍。相对于4个sp2704,sp2716大大放宽了对单板尺寸的限制,这使得用户能够更方便地扩展高端音视频业务。下文重点介绍sp2704的体系结构。
sp2704继承了sp2603的体系构架,由2个基本模块组成:媒体处理模块(mpb)和包处理模块(ppb)。媒体处理模块主要由4个sc3400e的dsp子系统组成,而包处理模块的核心是arm11双核处理器系统。在这种单芯片dsp+arm的多核处理器结构中,数据面和控制面分别由dsp和arm来处理,使得dsp可以最大程度地利用其运算优势,同时不需要额外使用片外处理器来处理应用程协议,是最高效的音视频媒体网关结构。
sp2704拥有超大的片内内存,对于高密度语音网关和非高清视频应用,一般不需要使用片外存储区,这就最大程度地降低了成本和单板总功耗,减少了软硬件设计复杂度,也放宽了单板尺寸的限制。此外,sp27xx采用了业界领先的40nm芯片工艺,还引入了许多先进的低功耗技术。以语音网关应用为例,sp27xx的每通道功耗远远低于业界其他同类芯片。
1)dsp子系统(dss)
sp2704有4个频率为750mhz的starcore sc3400edsp子系统(dss)。相对上一代芯片sp2603,如果不考虑dsp内核能力的增强,sp2704的dsp处理能力可达sp2603的两倍。每个dss还包含内存保护单元(mpu),256kb本地零等待ram,32kb一级指令高速缓存,32kb一级数据高速缓存,512kb l2高速缓存,两个专用的2通道dma控制器。
2)包处理模块(ppb)
包处理模块(ppb)是基于双核arm11 mp的子系统,工作频率仅为dss工作频率的一半。ppb主要负责整个芯片加载和管理(包括arm和dsp),以及输入输出数据包的管理。ppb还包括:rom用于存放arm boot代码,以及spi/ssp、uart、nand flash控制器接口,可为客户提供多种boot方式。
3)丰富的片内内存和2个超高带宽总线
sp2704中有2个超高带宽总线矩阵:dsp总线矩阵和ppb总线矩阵,可用作数据处理功能模块的系统互连,以1/2dsp子系统时钟速率运行,带宽分别是128位和64位。sp2704拥有丰富的片内内存,除了dsp和arm子系统内部的零等待ram,还有一个6m的片内系统共享内存。共享内存分成12个存储块,不同的内核可以同时访问不同的存储块,真正达到了数据访问的高吞吐量、高可用性以及低时延。
4) 丰富的接口资源
sp2704拥有丰富的接口资源,可以满足各种音视频网关服务器应用:两个10/100/1000/2500mbps以太网mac,可配置为fe(ss-smii)或ge(sgmii);tdm处理模块通过6个串行端口进行tdm流量的多路复用和解多路复用;10gbps x4 srio接口(4个3.125gbps lane)或者配置为两个独立的x1srio接口;pcie接口,可接到host或sp2704设备之间互联;32位ddr3接口工作频率高达1066mhz。
图1 sp2704媒体处理器体系结构。
sc3400e---基于sc3400的增强
sc3400e与sc3400后向兼容,sc3400e继承了sc3400的变长指令集(vles)结构和12级流水深度。sc3400e的能力增强表现在以下几个方面:
1)实数和复数乘加能力的增强
sc3400e与sc3400的数据算术逻辑单元(dalu)都包含了4个乘加单元(mac)。sc3400的mac包含1个16位*16位的乘法器和1个40位的加法器;而sc3400e的mac包含4个16位*16位的乘法器和2个40位的加法器,其加法器支持2个40位复数操作数的加/减法。实数乘加运算能力提高1倍,而复数乘加运算能力则是原来的4倍。
sc3400e的实数和复数mac运算能力可概括为:每周期可完成8个16位实数乘加运算,性能是sc3400的2倍;每周期可完成4个16位(16位实部,16位虚部)的复数乘加运算,性能是sc3400的4倍;每周期可完成8个8位(8位实部,8位虚部)的复数乘加运算,性能是sc3400的8倍;每周期可完成4个32位*16位的实数乘加运算,性能是sc3400的2倍;每周期可完成4个(16位*16位+16位*16位+40位)的实数点积运算。如果设置了饱和模式,a=sat{sat{a+bxc}+dxe},则性能是sc3400的2倍。
2)在cof和控制代码效率方面的改进
sc3400采用先进的动态分支预测机制,可有效减少cof(change of flow)的延迟。例如,某条jmp指令已经在分支目标缓冲(btb)中,实际执行只需要1个周期,而不是6个周期。sc3400e在原有的分析预测机制的基础上,完成了多方面的改进。
在sc3400e中,硬件循环和cof共同使用n个btb,突破了sc3400中只支持4层嵌套的零开销硬件循环的限制。而且,sc3400e还改进了硬件循环误判的开销,就算硬件循环条件不成立,开销也只有3个周期,而在sc3400中这样的开销最多达6个周期;在sc3400e中,提高了短循环的执行效率,同时短循环不再占用btb;sc3400e支持4个返回地址寄存器,相对sc3400中的一个返回地址寄存器,减少了子程序返回的平均延迟。总体看,相对sc3400,sc3400e控制代码的效率提高了0.25倍。
图2 高清视频编码及解码的多核功能分配示意图。
3) 查找表的性能提高
在sc3400e中,带有线性地址修改的指令1个周期就能完成。查找表的性能提高了0.5倍。
4) sc3400e中改进的视频加速指令
sc3400e中改进的视频加速指令主要包括:用于半像素插值的插值指令,性能提高1倍;用于运动补偿的add-and-sat指令,性能提高1倍;1个周期完成位插入或位抽取操作。对于位流与字节之间的pack/unpack及其他位流处理算法,性能提高1倍。
sp2704二级缓存的使用
sp2704支持二级缓存(l2 cache):其中一级缓存(l1 cache)分成32k指令缓存和32k数据缓存,二级缓存可灵活用于片外程序和数据的缓存。对于高清视频编解码的应用,需要使用ddr3存储器来存储大量的视频数据。这时,一般会配置二级缓存映射到ddr存储空间。同时,如果再配置l1 cache缓存l2 cache的数据,对缓存进行合理的优化,会使片外的视频数据读写效率更高。
l2 cache还可以配置成共享内存,如果l2 cache配置成共享内存,6mb共享内存的空间就扩展为8mb。对于不需要放置片外存储器的应用,一般会把l2 cache配置成共享内存,进一步增加数据和代码的片内存储空间。
分层的多核编解码器构架
对于h.263或h.264的高清视频编码,一个dsp核无法完成1路图像的编码/解码,因而需要由多个核协作完成,这就涉及到多核之间任务分配的问题。lsi目前采用灵活的多层编解码构架,以片(slice)为基本单位对图像进行分割,每个核处理一个或多个片。这样,可以在多核之间扩展,也可以通过srio、pcie等高速互连总线在多器件之间扩展。
以1080p(1280*720)h.264的解码和编码为例,如果一个sp2704处理1路30fps 1080p h.264解码,多个sp2704协同处理1路30fps 1080p h.264编码,sp2704#1解码后的yuv4:2:0的图像数据提供给sp2704#2来进行编码,参考帧数据将存放在ddr3存储器中,如图2所示。
多核分层编码器
在协同处理1路图像的多个核中,一个核作为主核,其他核为从核。主核除了要负责一些slice的编解码之外,还要处理负荷平衡、场景识别及速率控制这样的公共任务。其他从核将只是对分配的slice进行处理。
多核分割可以减少高清视频编码的延迟,而动态负荷平衡功能可最大程度减少延迟。sp2704内部的4个dsp核可以通过6m的共享内存和ddr3片外存储器来共享视频数据:当前图像存放在6m的共享内存中,通过l1数据cache缓存片内共享内存的图像数据,参考图像存放在ddr3外部存储器中,通过l2 cache来缓存ddr3中的图像数据。从而使得视频数据访问的速度达到最快。
sp2716中的2个sp2704之间可以通过pcie共享ddr3存储器,这样可减少2个sp2704之间的数据交互,从而简化了软件开发的复杂度,还将整个硬件设计所需的ddr3设备数量减少了一半。此外,多个sp2704器件之间通过srio接口来传输或共享视频数据,这些sp2704都连接到srio开关上。每个器件都可以自发地写入到其他任何一个器件的i/o空间。
多核解码器
h.264解码涉及串行操作和并行操作。熵解码包含一系列串行操作,无法分配给多个内核并行处理,因而将由主核处理,其他并行操作可以分配到各个从核来处理。lsi分层解码器的基本原理是:由主核负责熵解码,再把熵解码后的数据分配到各个从核来处理。其他从核读取数据后进行后续处理,例如逆量化、逆变换等;对于p宏块还要从ddr3中读取参考帧数据并进行运动补偿。最后进行循环滤波,并把得到的宏块数据存入ddr3的当前帧中。
看完小米6,在对比一下华为P10和三星的S8,该知道买谁了吧
果蔬呼吸强度分析仪的特点是怎样的
AI火爆 对话机器人将成为App之后的新入口?
PCIe 4.0规范Update:低功耗、 IoT、存储、OCuLink...
TMP05/TMP06型温度传感器及其应用
新一代多核媒体处理器优化高清视频应用
什么是因特网服务提供商(ISP)
PCB设计经验:制板程序中的问题
静电测试不过esd闸机的解决方案
智慧农业:农林牧数据可视化监控分析平台
三安光电营收35.68亿元,同比增长5.31%
AZ431AR-ATRE1 产品信息
MySQL数据库中通用表空间详解
5G网络与VR技术的结合将会开启一个全新时代
索尼手机什么时候才能在中国市场复兴
降压斩波电路和升压斩波电路的电容、电感、二极管各起什么作用?
隔离电源并非越贵越好,一文教你如何选择
耐能边缘运算在自动驾驶领域的应用介绍
三星成为全球第四大通信设备商,华为与三星将有更激烈的竞争
案例分享 | 纽扣电池石墨片厚度及缺陷检测