论文部分内容阅读
为了满足日益增长的运算能力需求,在单个芯片上集成多个处理器形成多核片上系统(MPSoC:MultiProcessors System-on-Chip)成为了嵌入式领域芯片的发展潮流。基于多核片上系统的并行软件程序开发是一个难点,程序本身并行性的发掘和并行线程在多核片上系统执行时的调度、线程间同步及通信等都是并行软件开发面临的挑战。并行软件开发人员必须非常熟悉目标原顺序程序和多核平台的底层资源结构才能开发出高效的多核并行程序。本文研究视频编码程序基于嵌入式多核片上系统的并行化实现,提出一种针对数据流处理类型程序的任务性流水化并行方法。该方法基于目标程序的粗颗粒度数据流图表示,通过对原程序的仿真得到数据流图中各节点所需运算量,分析数据流图中存在的各种数据依赖关系,结合目标多核平台的处理器数量,以系统资源利用率高和程序并行加速比大为准则寻找最优的并行任务划分及处理器映射方案;若通过当前的数据流图表示无法得到满意的划分方案,则对数据流图中的节点进行分裂或合并,重新分析新的数据流图中节点运算量和数据依赖关系,直至确定最终的并行划分方案;并行划分方案确定后,并行任务/线程按照一种改进的调度指示器接口标准进行封装,并静态地映射到相应处理器上,动态执行时由驻扎在各个处理器上的调度指示器实现任务的调度、同步及通信等操作。本文以MPEG4和H.264编码器为例子,通过充分分析原程序中模块运算量比例和模块间数据依赖关系,针对异构MPSoC的3核及5核平台设计任务性流水并行划分方案,并且配合改进的指示器实现了程序的多核并行执行。实验结果显示多核并行执行时每个处理器的平均利用率能达到60%~70%,验证了本文提出的针对数据流处理类型程序的任务性流水化并行方法的有效性,该方法能充分发掘程序本身的并行性,且实现了对底层硬件结构的屏蔽,具有较好的可编程性和可移植性。