论文部分内容阅读
可重构计算兼具通用计算高灵活性和专用计算高性能的特点,近年来已逐渐在媒体解码等计算密集型应用中占据一席之地。可重构系统在处理媒体解码时面临大量的片上和片外数据访问需求,需要灵活高效的数据访存通路,以保障可重构阵列的流水效率;可重构系统实现媒体解码不同核心子算法所需的任务调度机制,则对硬件资源利用率乃至系统性能产生显著影响。面向媒体解码的可重构数据访存通路和任务调度机制中存在以下问题:核心子算法中间结果数据输出存储方式与数据输入使用方式不一致,造成可重构阵列计算过程的流水气泡;媒体算法中以参考帧为主的大量片外二维数据的访存需求,导致DDR外存中换行次数多,访问延迟大;核心子算法间和媒体码流宏块间的计算复杂度差异大,导致可重构处理单元负载失衡,从而影响可重构系统的硬件利用率提升。 本文对媒体解码算法按数据密集型和控制密集型进行子算法划分,分析并提炼不同核心子算法的数据流及任务计算负载差异的主要特征,设计面向媒体解码的可重构基本架构,研究并优化可重构系统中的数据访存通路和任务调度机制,最终将优化方案应用于可重构架构中并进行芯片和整机验证。本文主要工作与创新点如下: 1)提出了基于数据块拆分拼接的传输控制结构,能够进行单/多块数据按行交织拆分拼接和单块数据转置拼接,从而在中间结果数据传输过程中实现了数据规整,解决了数据输出和输入间组织形式不一致的问题,提高了可重构阵列运算的流水效率。实验结果表明,和已有片上数据传输结构相比,本文数据传输控制结构将媒体算法核心子算法性能提升了20.9%~77.3%,而由此引发的额外硬件开销仅占可重构系统的10.7%。 2)改进了多分量双向预测的二维数据缓存结构,对不同分量不同预测方向的参考帧数据独立分配缓存空间,并探索最优缓存尺寸,优化了基于块划分尺寸的缓存数据更新策略,在数据不命中情况下以部分命中阈值、连续不命中次数等参数作为缓存更新的判定数据,从而减少了外存DDR的换行次数,降低了访问延迟,最终提升了访存性能。实验结果表明,本文二维访存方案使得可重构系统外存访问性能提升了42.58%~45.35%。与已有的二维访存方案相比,本文缓存开销为其87%,性能收益达到其1.18倍;与已有的三维访存方案相比,本文性能达到77%,但存储开销只有其7%。 3)改进了基于混合划分的任务调度机制,在片级采用线程级流水方式,在宏块和子块级采用线程级并行方式,包括不同核心子算法在宏块级的线程并行调度以及同一核心子算法在子块级的线程并行调度,大幅缓解了可重构系统中的不同运算单元间任务负载失衡问题,提高了可重构系统的硬件资源利用率。实验结果表明,相比已有方案运算单元间11%和25%的负载差异,本文改进的任务调度机制使得运算单元间负载差异降至5%,硬件平均有效利用率由52%提升至85%。 本文研究成果应用于面向媒体解码的可重构处理架构,面向高清媒体处理的高性能需求和移动终端应用的低功耗需求,采用TSMC65nm LP工艺分别实现了两款SoC芯片和整机应用。第三方测试结果表明,面向高清媒体处理的可重构SoC芯片可工作在200MHz主频,实现H.264/MPEG2/AVS等媒体标准的1080p(1920×1080)分辨率30fps实时解码,其能效是可重构处理器XPP-Ⅲ的16.7倍;面向移动终端应用的可重构SoC芯片工作在166MHz主频,实现H.264/AVS等媒体标准的D1(720×480)分辨率30fps实时解码,其能效是ADRES可重构处理器的1.23倍。