中断发生时,由事先配置好的中断向量表跳入中断服务程序(ISR),完成核间通信,如图1所示。
当TMS320C6678的一个处理器核准备与其他处理器核通信时,根据TMS320C6678的中断事件映射表,引发91号事件,产生可屏蔽的核间中断,调用中断服务例程。中断服务例程IPC_ISR函数设计如下:
以向core_2发送0x20信息的中断为例,对应的0x20的信息存入SRCS位中,用于识别中断源。同时将当前CPU核心内的中断产生寄存器IPCGR2的最后一位IPCG位置1,触发IPC中断。当目标处理器核被中断触发后,会自动跳转到中断异常向量表中相应的入口点,读取当前核心中断产生寄存器IPCGRx(0≤x≤7),从寄存器的SRCS位中获取通信发起方传来的核间信息。然后将信息存入对应的中断确认寄存器IPCARx中,清空SRCC和相应的SRCS位,用以接收下一次的核间中断。其中的KICK0和KICK1为陷阱控制寄存器,用来避免通信冲突的发生。
3 拓扑结构设计与性能测试
以上对TMS320C6678基本核间通信机制及其实现过程进行了分析,但是要实现TMS320C6678强大的多核功能,必须从系统的角度上设计良好的并行计算方案,设计合适的系统并行拓扑是其中的关键所在。通信代价、带宽和功能是评测通信的重要指标,下面介绍了两种多核通信并行方式,分析了它们的拓扑结构,并对上述指标做了测试对比。
3.1 通信的拓扑结构
适用于多核DSP通信的并行方式有两种:一种是主辅拓扑结构(Master Slave)[5],另一种是数据流拓扑结构(Data Flow)[6]。
主辅拓扑结构,在TMS320C6678中如图2所示。作为主核(控制核)的处理器通过EDMA与外部存储器DDR进行数据交换,然后主核通过核间中断与辅核通信。主核起到控制的作用,所有辅核(计算核)的中断都由控制核来处理,辅核只负责计算任务,辅核之间没有任何核间通信的产生。
3.2 性能测试实验
本文设计了核间通信测试程序来测试两种结构。tms320c6678程序的功能是:当一个核收到来自其他核的中断后,立即确认并按照拓扑结构依次发出核间中断,没有其他耗时的操作。程序在XEVM6678L评估板上进行仿真,板载有一块TMS320C6678芯片,处理器运行的频率设置为1 GHz,采用的编译环境是TI公司的CCSv5.0。
通信测试结果如表1所示,主辅结构运行完测试程序所需要的总通信代价是171 352个时钟周期。其中,作为主核的core_0耗费116 311个时钟周期,而7个辅核每个核均耗费7 863个时钟周期。采用数据流结构运行完测试程序所需要的总通信代价是171 319个时钟周期,其中core_0耗费21 385个时钟周期,core_7耗费21 366个时钟周期,其他6个核耗费21 428个时钟周期。
如图4所示,采用主辅结构时,作为辅助核的7个核可以同时并行运行,理论上通信时间可以减少到124 174个时钟周期。主辅结构由于利用了多核的并行处理,总的通信时间是数据流结构的72.5%,以测试环境中的1 GHz的主频计算,则节省了47.1 μs。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-25204-2.html
师傅不健康