硬件信号量在多核处理器核间通信中的应用硬件信号量在多核处理器核间通信中的应用
本文以多核DSP芯片TMS320C6678为例,描述了硬件信号量的工作原理和方法以及模块的结构和配置,并给出
两个核之间通信的实例。
摘要: 在多核处理器的软件设计中,核间通信机制是关键所在,有效合理的核间通信可以发挥多核处理器的并行处理能力。中
断和查询方式是传统的核间通信手段,但存在丢失中断和查询效率低的缺点。为解决这一问题,多核处理器提供了一种全新的
硬件信号量机制,用于核间通信。本文以多核DSP芯片TMS320C6678为例,描述了硬件信号量的工作原理和方法以及模块的
结构和配置,并给出两个核之间通信的实例。
引言
多核处理器由于片内集成多个处理器,在对处理能力要求较高的应用场合得到了大规模使用;同时多核处理器的超强处理能
力,也推动了产品功能的多样化。目前,多核处理器主要以片内集成多款不同类型的处理芯片为主,一般集成
FPGA/DSP/ARM/CPU以及专用的协处理器等,如TI公司的AK2系列,集成多个DSP和多个ARM核。此外,也有集成单一型号
的多个处理器,如多核DSP芯片TMS320C66系列,集成了2、4或8个同样的DSP核。
多核处理器中的多个单核一般需要联合工作,联合工作时它们之间的通信、握手、数据交换非常重要。尤其是在软件复杂度较
高,且对运行时序要求严格的情况下,核间通信成为整个软件的关键。核间通信一般有3种方式:共享数据空间、硬件中断和
任务中断。共享数据空间,是指两个核都可以访问相同的内存空间,根据其信息来交换数据和状态。该方式一般需要逐个核去
查询,但采用查询方法一般很难适用于实时性要求较高的场合。硬件中断方式,是核之间通过硬件中断方式来通知状态,这种
方式实时性最高,可以实时响应中断,但引起的问题是:如果存在多个任务,核间中断会打断正在运行的较高优先级的事件;
如果在高级事件中屏蔽中断,在多次中断中只会响应最后一次中断,导致前面的中断丢失。为了解决这两个问题,多核处理器
一般采用任务中断方式来实现核间信息交互。在单核的软件中,任务是实时运行的进程,由信号量来触发。一个任务完成后退
出,信号量会减1,直到该任务对应的信号量为0;触发一个任务,就会给该任务的信号量加1。在多核处理器中,将信号量做
成硬件信号量(Hardware Semaphore)来实现核间通信,硬件信号量具有硬件中断的实时性,又具有任务的排队机制,可以
较好地解决核间通信问题。
本文以8核DSP芯片TMS320C6678为例介绍了硬件信号量的应用。文中详细介绍了硬件信号量模块的结构和寄存器组合,以
及实现核间中断的原理,最后以实例介绍两个核之间利用硬件信号量交互信息的方法和流程。
1 多核DSP及其结构
TMS320C6678(C6678)是TI公司多核处理器中的一款8核浮点型DSP,最高工作频率达到1.25 GHz,单核可以提供40
GMAC定点计算或者20 GFLOPS浮点计算能力,单个芯片可以提供320 GMAC或者160 GFLOPS计算能力。C6678的片内结
构如图1所示。
图1 TMS320C6678内部结构图
C6678的每个核具有32 KB的程序、32 KB的数据以及512 KB的二级Cache存储空间,芯片片内具有一个4 MB的共享SRAM。
C6678具有DDR3控制器接口,可以外接DDR3,直接寻址范围达到8 GB。C6678的片内设有RapidIO、PCIe、EMIF以及
I2C/SPI等接口,这些接口通过片内的TeraNet总线和各个处理器交互数据。 从图1中可以看出,核访问共享RAM的速度最
快,它们之间不通过TeraNet,而是有专用的数据总线,也不会和其他外设产生冲突,每个核访问共享RAM的速率大概在50
Gb/s。
每个核访问DDR3的速度仅次于访问共享RAM,因为DDR3的数据需要通过共享RAM过渡,其访问速度读写有所差别,读速率
可以到10 Gb/s,写速率可以到20 Gb/s。核访问其他片内和片外设备都要经过TeraNet,可能存在总线仲裁,但这些外设一般
不会长时间占据TeraNet总线。各个核通过TeraNet访问硬件信号量,也可以通过TeraNet和HyperLink接口实现两个芯片之间
的硬件信号量访问。
2 硬件信号量模块
硬件信号量模块的组成如图2所示,主要由信号量模块、寄存器组和中断模块3部分组成。
图2 硬件信号量模块
硬件信号量模块由64个独立的信号量组成,这64个信号量和硬件资源以及核之间没有必然联系,由软件根据每个核处理任务
的多少分配,任务多的核获得更多的信号量。对信号量的访问有3种方式:直接访问(图中的SEM_Dir)、间接访问
(SEM_inDir)和查询方式(SEM_Query)。这3种方式软件上访问的方法都一样,就是对相应的寄存器进行读写操作,但不
同访问方式的硬件响应机制不同。
直接访问方式下,如果该信号量空闲,访问的核将马上捕获该信号量;如果该信号量被其他核占用,将返回,整个访问工作结
束。
间接访问方式和直接访问的唯一差别就是当该信号量被占用时,访问的事件被发布到队列中排队,一旦信号量被其他核释放,
队列采用先进先出的方式给相应的核发出中断,相应的核占用该信号量。
评论1
最新资源