基于SystemC的异构多核通信模块设计
*/ void Controller();
//对于每一个write_shm_data 请求,将数据写入指定的共享存储区空间
void WriteShmDataHandler(struct InstBuffer *inst);
//对于每一个read_shm_data 请求,将数据写入指定的共享存储区空间
void ReadShmDataHandler(struct InstBuffer *inst);
……
SC_HAS_PROCESS(CMCCtrl);
// constructor
CMCCtrl (sc_module_name _name){……}
};
4 MP3 解码程序的多核测试
为了更加充分进行验证,并展示多核通信模块在实际应用中的价值,本文选择了MP3 解码程序进行基于多核系统的移植,并验证仿真结果以及仿真效率。
MP3编码的主要方法是在频域上对音频文件内容进行编码压缩,而解码过程是还原频域 的内容再变换成原始的时域音频信号。按照ISO/IEC11172-3标准,MP3解码算法分为同步与 校验、Huffman解码、比例因子解析、反量化、重排序、立体声处理等十个部分。
在考虑应用程序的多核移植时,可以是数据划分也可以是任务划分的。对于MP3代码, 如果采用数据划分式,则可以在不同的处理器内核上解不同的数据帧。而如果采用任务划分 方式,则可以将解码的不同过程在多个内核之间形成流水作业,采用共享存储区进行不同流 水级之间的数据传递。显然后者需要更多的核间通信,更适合于验证其性能,因此,本文采 用了按照任务划分的方式进行代码的多核移植。
在测试中,我们采用ARM+PISA的双核系统,因此需要将MP3解码程序按照功能划分为 两部分,分别放在两个内核上运行,形成流水线。本文所采用的MP3解码软件在ARM开发 套件(ARM Design Suit)软件仿真平台上测试的结果表明:合成多项滤波器部分占用了大 约50%的计算量[4]。根据这个结论,本文粗略地对应用程序在双核之间进行任务划分:其中 一个内核运行计算量最大的合成滤波,另外一个内核实现Huffman解码、比例因子解析、反 量化等步骤。两个内核通过系统提供的通信控制模块进行通信并保持同步。
表2是这一测试的统计结果。统计数据提供了两方面的信息:
1)MP3解码程序的双核加速比,由统计结果中的“运行周期数”反映;
2)多核仿真器在进行MP3解码仿真时的仿真效率,由“仿真时间”和“仿真速度”两 项统计结果反映。
5 总结
无论考虑单位计算性能的能耗因素,还是对于提高处理器性能,多核体系结构尤其是异 构多核体系结构都是当前的热点研究方向。本文主要论述了面向异构多核处理器的片上通信 设计。对于处理器的内核间通信,采用了共享内存技术。
本模型充分体现了SystemC的语言优势,对进一步了解和探讨异构多核处理器结构、核 间通信、异构多核低功耗设计等方面打下一定基础。
本文作者创新点: 提出了一种基于SystemC的异构多核通信架构模型,并通过添加控制 模块解决异构多核间通信通用性问题。
评论