注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

基于多核任务并行处理的DSP软硬件设计  

2012-06-07 13:28:16|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

基于多核任务并行处理的DSP软硬件设计

丁有源,汪安民
1. 四川大学 计算机学院,成都610065;2. 同方电子科技有限公司研究所

摘要: 多核处理器的软件和硬件设计从传统的任务串行到任务并行处理,与单核处理器软硬件设计区别较大。本文以8核DSP芯片TMS320C6678为例,介绍了多核DSP的系统结构、多核处理器的任务分割和任务分配到各个核的方法、多个核之间的任务管理和核间通信,以及基于多核导航器的硬件设计方法。
关键词: 多核DSP;任务管理;多核导航器
中图分类号: TP336文献标识码: A

Software and Hardware Designs of DSP Based on Multi-core Task Parallel Processing
Ding Youyuan,Wang Anmin
1. Computer College, Sichuan University, Chengdu 610065, China;2. Research of Tongfang Science and Technology Ltd.
Abstract: Software and hardware designs of multicore processor from traditional task serial processing to parallel processing are different to software and hardware designs of singlecore processor. Taking 8core DSP chip TMS320C6678 as example,this paper introduces system structure of muliticore DSP, task segmentation of muliticore processor and the method about task assigning to each core,task management and core intercommunication,and hardware design of muliticore navigator.
Key words: multi-core DSP;task manager;multicore navigator

引言
  多核DSP的发展使得DSP进行并行计算成为可能。TI公司推出的TMS320C66系列芯片片内集成多个处理器,该系列最高集成8个处理器(TMS320C6678),其他还有4核(TMS320C6674)、双核(TMS320C6672)以及单核(TMS320C6671)。该系列所有型号引脚兼容,可以方便用户开发,在不需要改动硬件的情况下更换处理器。
  多核DSP的编程方法和单核处理器区别较大。为了提高软件的运行效益,需要将任务尽量分工到多个处理器同步完成,从而最大程度上提高算法的执行效益。而进行任务的分工又涉及到资源分配、数据交换、消息传输等硬件资源。本文以8核DSP芯片TMS320C6678(以下简称C6678)为例,介绍多核DSP的软硬件设计和应用。
1 C6678及其结构
  C6678是C66系列中的8核浮点型DSP,其每个核最高工作频率达到1.25 GHz。单个指令周期可以执行32个定点数据运算,或者执行16个浮点数据运算。整个芯片提供320 GMAC定点计算或者160 GFLOP浮点计算能力。C6678的内部结构如图1所示。
  C6678的每个核具有64 KB的1级和512 KB的2级存储空间,芯片片内具有一个4 MB的共享SRAM,供核数据交互使用。如果内部存储空间不满足应用要求,C6678还提供DDR3控制器接口,可以外接DDR3,可以直接控制8 GB的寻址范围。

图1 C6678内部结构
  C6678的片内外设有4个SRIO高速串行口、2个PCIE接口、16位的外部存储器EMIF接口、千兆网口以及SPI、I2C总线、UART、TSIP、GPIO等接口。这些接口通过片内的高速互联总线和各个处理器交互数据。
  和多核相关的片内设备有硬件消息器、队列管理器、包交换DMA以及EDMA等模块。这些模块的应用可以提供多核之间的信息和数据交换。例如,传统意义上一般消息都采用软件实现,软件实现必然占用存储资源;如果存在大量的消息,该消息所在的物理地址距离某个核较远,会存在远程访问,增加访问时间开销。采用硬件消息器后,各个核就可以零延时访问所有消息。C6678最多可提供8192个硬件消息器和硬件队列管理器。
2 多核软件编程
2.1 任务管理
  任务管理是每个大型软件设计中最关键的环节之一。单核多任务操作系统中,只需要将运行时间按照某个方式(时间片轮询或者抢占)分配到各个任务,任务实质上仍然是串行运行方式。而多核操作系统中,由于存在一个时间维,例如8核处理器相当于有8个同时存在的时间片,一个紧急的任务应该同时使用这8个时间片进行处理。或者在同一个时刻,最多可以有8个任务并行处理。
  为了将一个紧急的任务尽量快速执行,需要将这个任务分割成更多个子任务,多个子任务就可以方便地分配到不同的核并行运行。而分割一个任务是系统性的工作,因为任务的执行都需要满足一定的前提,如果分割后的子任务相互之间依赖很大,将很难做到并行处理。此外,将各个子任务分配到不同的核,必然增加核之间的数据和信息交换,也降低了运行效益。
  多核的任务执行一般有两个主要的运行方式:
① 主从方式,即一个核管理一个主任务,主任务对其他核的任务进行管理;
② 数据流方式,即任务按照数据的传输来运行,一个任务推动另外一个任务运行。

图2 任务运行方式
  图2显示了两种任务的运行方式。主从方式一般适合对实时性要求不高的应用,主任务一般由高级操作系统(Linux或者Sys/BIOS)完成。主任务负责管理其他所有任务,当主任务命令某个从任务执行时,必须将该任务需要的数据、资源等传递到从任务规定的空间。
  数据流方式适合实时性要求较高的应用,任务Task A一般负责对外设命令或者中断的响应,然后将Task B和Task C所需的数据传递出去,启动Task B和Task C,Task B和Task C就可以在不同的核中运行,在这两个任务执行的同时,Task A仍然接收来自外部的中断。一般来说,Task B和Task C是比较复杂的任务,处理时间较长。Task B和Task C分别给出Task D启动的条件,当两个条件都满足时,Task D开始启动。数据流方式需要对整个任务的协同和并行工作非常清晰,每个任务占用的资源必须分开,尤其是通过共享SRAM进行数据交换时,必须确保在任何时刻不能出现两个任务对同一个资源进行写操作。
2.2 核间通信
  核之间的通信是基于多核处理器软件的核心。核间通信主要分为数据通信和状态通信。数据通信是大量数据的移动,通信时间长、实时性要求低;状态通信是少量数据的传递,通信时间短、实时性要求高。
  数据通信一般采用三种方式实现:
① 使用共享存储空间。使用共享存储空间,为了提高可靠性采用单向机制,由一个核写入,一个核读取。完成写入或者读取操作后,给出状态信息,该共享存储空间进入空闲状态。
② 使用特定的存储空间。特定的存储空间一般专门用于某个任务,和共享存储空间相比,状态信息由核自身完成,不需要其他核参与。例如EDMA传输,采用专门的缓冲区存储各个核的EDMA收发的数据,EDMA一旦接收到数据,发出中断到核,进行处理。
③ 存储空间转换。共享存储空间和特定的存储空间,一般都需要很多资源开销,在程序运行的大量中间变量,最常用的仍然是存储空间转换。就是某个核完成任务,产生的结果存储到相应位置后,就放弃对该存储空间的使用权,下一个核接管该存储空间的使用权,对该空间数据进行操作。
  不论哪种数据通信方式,都需要采用状态机制进行管理,状态机制可以由中断或者消息产生。所以,状态信息的核间通信是组织数据通信的关键。
  状态信息的核间交互分为直接信号量、间接信号量以及Atomic仲裁方式3种方式。直接和间接信号量方式如图3所示。

图3 信号量方式

图4 Atomic仲裁方式
  直接信号量方式由IPC(Inter Processor Communication)模块的控制寄存器直接提交到另外核;间隔信号量是通过EDMA传输方式将信号量提交到另外核。Atomic仲裁方式如图4所示。
  当3个核都需要对某个资源访问时,Atomic仲裁方式下只有捕获到该资源对应的Lock才能访问。Atomic仲裁方式下的资源访问如表1所列。
  第一个时间片,核1和核2都捕获Lock,由优先级高的核1成功捕获;直到时间片3,核1完成资源占用,释放Lock,核2才能够成功捕获,可以使用资源。Lock是锁定式使用,一旦占用便被锁定,不能被优先级高的核抢占。
表1 Atomic仲裁方式下的资源访问

3 多核硬件设计
  为了降低基于多核处理器的软件实现难度,多核处理器提供专门的多核导航器(Multicore Navigator),多核导航器由QMSS(Queue Manager Subsystem)队列管理子系统和PKTDMA(Packet DMA)组成。多核导航硬件结构如图5所示。

图5 多核导航硬件结构
  图5中左下方为PKTDMA模块,右下方为QMSS子系统。在它们之上是存储空间,以及基于存储空间的上层应用软件(用户软件)。存储空间和导航器之间通过VBUS总线连接。QMSS子系统由8192个硬件队列、20个存储器区域以及2个链接RAM组成。PKTDMA模块负责和芯片所有的高速外设接口的数据传输,C6678为SRIO、网口、PCIE、TSIP、EMIF都提供有一个专门的硬件DMA,控制对这些接口的数据收发。多核导航硬件将主机接口、存储空间访问、片内外设通信、信号量、队列管理、缓冲区管理都整合到硬件。在应用软件中,将投入很少的资源和时间进行以上相关的管理,而且更加优化了软件架构,提高了软件的稳定性。
  在主频和软件固化后,Cache的运行是确保程序运行效益更高的主要方法。多核芯片的Cache管理是和芯片硬件相关联系在一起的。C6678的Cache管理主要涉及到Cache运行机制。在C6678中,只有L1D数据存储空间的Cache连续访问是硬件实现的,无需软件参与。而其他的L1P和L2存储空间的Cache连续访问都需要软件参与。对于共享存储空间,出现两个核对共享存储空间的同时访问(不是同一个地址单元)是经常出现的。这个时候,共享存储空间的Cache连续访问都会被打断,如果两个核相互频繁交替访问,Cache的冲突经常发生,还没有建立好的Cache常常会被重新开始建立,反而增加共享存储空间访问时间,这种情况下,关闭Cache可以提高程序的运行效益。
结语
  在多核软件系统中,为了高效地利用多个核的并行工作,软硬件设计从传统意义上的任务串行转换到任务并行机制,需要对复杂的任务进行分割,并尽量平均地分配到每个核。多个核之间为了完成一个复杂的任务,对任务的管理、资源分配、状态反馈等提出更高的要求。本文介绍了基于C6678的多核处理器的硬件组成,从硬件队列和消息器、资源管理和分配等方面,介绍了多核软硬件设计中的任务管理、核间通信以及多核硬件设计。

参考文献
[1] 汪安民,张松灿.TMS320C6000DSP实用技术与开发案例[M].北京:人民邮电出版社,2008. 
[2] Texas Instruments Inc.KeyStone Architecture Multicore Navigator User Guide[EB/OL].[201112].http://www.ti.com/lit/ug/sprugr9d/sprugr9d.pdf.
[3] Texas Instruments Inc. TMS320C6678 Multicore Fixed and Floating Point Digital Signal ProcessorDatasheet [EB/OL].[201112].http://www.ti.com/lit/ds/symlink/tms320c 6678. pdf.
(责任编辑:杨迪娜收修改稿日期:2011-12-22)




2012年12卷5期43-45页. 新器件新技术
  评论这张
 
阅读(908)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016