基于KeyStone DSP的多核视频处理技术
- 通道 18.5 亿个周期
- 1080i60、每秒 60 场、9 Mbps – 每通道 34.5 亿个周期
与此类似,H.264 解码器消耗的周期数为:
- QCIF 分辨率、15 fps、128IKbps – 每通道 1400 万个周期
- CIF 分辨率、30 fps、300 Kbps – 每通道 7050 万个周期
- D1 分辨率、NTSC 或 PAL、2 Mbps –每通道 2.92 亿个周期
- 720p 分辨率、30 fps、6 Mbps – 每通道 7.8 亿个周期
- 1080i60、每秒 60 场、9 Mbps –每通道 16.6 亿个周期
转码应用(包括完整的解码器和编码器)消耗的周期数是编码器和解码器所消耗的总和,在需要的情况下也会加上扩展的消耗。
2.3 存储器的考虑事项
在成本与存储器要求之间进行权衡折中是任何硬件设计都需要考虑的重要因素。在分析多核视频处理解决方案的存储器要求时,需要明确以下几个问题:
- 需要多大存储量的存储器,以及存储器的类型(专有还是共享)是什么?
- 存储器的速度是否足够支持流量需求?
- 接入总线的速度是否足以支持流量需求?
- 存储器架构是否能够以最少的多核性能损失支持多核接入?
- 存储器架构是否能以最小的数据冲突支持处理器数据流的输入与输出?
- 支持存储器接入(诸如 DMA 通道、DMA 控制器、预取机制和快速智能高速缓冲架构 )的现有硬件有哪些?所需存储器的存储量取决于应用。以下三个应用实例介绍了三种不同的存储器要求:
无线传输速率:在单帧运动估算参考 (single-motion estimation reference frame) 中以极低的延迟从 QCIF H.264BP 转换至 QCIF H.264BP 需要足够的存储容量才能存储 5 个帧。每帧需要 38016 个字节,那么一个通道(包括输入和输出媒体流的存储)所需存储器的存储量为每通道不足 256KB。同时处理 200 个通道则需 50MB 的数据存储。
多通道解码器应用实例:对于 H264 HP 1080p 解码器,如果两个连续的 P 帧和 I 帧之间的 B 帧数目等于或少于 5,那么我们只需要足够存储 7~8 个帧的存储空间,因而单个通道(包含存储输入和输出媒体流)所需的存储量应少于每通道 25MB。同时处理 5 个通道需要 125MB 的数据存储器。
包含实时电视广播的高质量视频流示例:应 FCC 的要求在系统中有 7 秒的延迟时,对实时电视节目采用 H.264HP 720P60 编码需要每个通道存储 600MB。并行处理两个通道需要 1.2GB 的数据存储量。
为了最大限度地提高视频处理系统的低成本优势,数据必须驻留在外部存储器中,其大小需要根据系统存储器最差的应用状态来选择。与此同时,处理过的数据必须存放在内部存储器中才能支持处理器的高吞吐量。优化的系统会使用乒乓机制将数据从外部存储器移至内部存储器,而将数据从内存移至外部存储器的同时还要处理来自内部存储器的数据。典型的处理器具有一个可配置为高速缓存或 RAM 的小型 L1 存储器,用于每个内核(可配置为高速缓存或 RAM)的较大型专用 L2 存储器,以及处理器中每个内核都能够存取的共享 L2 存储器均可使用。为加强乒乓机制,需要用多个相互独立的 DMA 通道从外部存储器中读写数据。
附录C 外部存储器带宽-为支持乒乓机制用于上述三个应用实例,估算了将数据从外部存储器移至内部存储器所需的带宽。外部存储器的有效带宽必须大于 3.5Gbps。
2.4 多内核间的协作与同步
当多个内核处理同一视频通道时,这些内核之间必须相互通信,才能实现对输入数据的同步、分离或共享,合并输出数据或者在处理过程中交换数据。附录 A - 解码器性能依赖阐述了将视频处理功能划分成多个内核的几种算法。
并行处理法和流水线处理法是两种常用的分区算法。并行处理的范例是两个或两个以上的内核可以处理同一输入通道。必须有一个不受竞态条件影响的机制在多个内核之间共享信息。可将信号标用来保护全局区域免受竞态条件的干扰。硬件需要支持阻塞性和非阻塞性信号标,以有效消除竞态条件,即消除两个内核同时占用同一存储器地址的可能性。
如果使用流水线算法,一个或一个以上的内核可执行运算的第一部分,然后再将中间结果传递第二组内核继续处理。由于视频处理负载取决于处理的内容,因而这种传递机制可能面临如下问题:
- 如果一个以上的内核处理流水线的第一阶段,那么第 N+1 帧可能先于第 N 帧被处理好。因此该传递机制必须能够对输出/输入进行排序。
- 即使流水线上的各内核总体是均衡的(在处理负载方面),但个别帧未必如此。该传递机制必须在不同的流水线阶段之间提供缓冲,以使内核没完成工作时不至于影响其他内核停滞等待。
- 如果算法要求流水线的两个阶段间能稳固实现紧密的链接(例如,为解决依赖性的问题),则该机制就必须能够支持紧密链
- HyperLink编程和性能考量(01-15)
- 基于KeyStone 器件建立鲁棒性系统(10-29)
- 在KeyStone 器件实现IEEE1588 时钟方案(10-15)
- 基于多核处理器的弹载嵌入式系统设计研究(02-18)
- Navigator Runtime 最大限度提高多内核效率(05-08)
- KeyStone多核SoC工具套件: 单个平台满足所有需求(09-07)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...