首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种面向多核DSP的小容量紧耦合快速共享数据池(2)

一种面向多核DSP的小容量紧耦合快速共享数据池(2)

4.2 双模式操作与交叉访问

      本文为FSDP设计了“私有”和“共享”两种工作模式。

      在私有模式下,任意DSP核DSP-i只能读写与其对应通道内的两个存储体SAi和SBi(i=1,2,3,4),不能访问其他的通道;

      在共享模式下,每个DSP核可以读取另外三个通道的数据,但不能向其中写入数据。任意DSP核必须通过其对应通道的两个存储体与其他DSP核交换共享数据。

      可见,在私有模式下,所有的存储体都不存在访问竞争,访问速度快。在共享模式下,FSDP不存在多核写冲突的问题,简化了维护数据一致性的硬件开销,提高了核间共享数据的传输速度,有利于提高嵌入式应用的实时性。

      在任务流水的计算模式下,DSP核间的共享数据相继构成“生产者-消费者”关系:前一个核的计算输出直接作为下一个核的计算输入。为了有效支持这种传输模式,我们在FSDP中采用了交叉访问的机制:

      当“生产者”DSP-i向存储体SAi写入第一块共享数据之后,释放该存储体,转而向SBi写入第二块共享数据;

      “消费者”DSP-j(j≠i)启动读访问,从SAi读出第一块共享数据;

      当这一过程完成后,双方交叉,DSP-i释放存储体SBi,向SAi写入第三块共享数据,DSP-j则从SBi读出第二块共享数据,依此类推,直至传输完成。

      因此,在写入第一块共享数据之后,读写操作就可以并行执行。当双方的计算负载均衡,速度匹配的时候,DSP核之间可以进行流水传输,同步等待延迟最小,传输效率达到最高。

4.3 释放一致性模型与基于信号灯的快速同步机制

      在共享存储的释放一致性(RC)模型中,同步操作包括“获取”和“释放”两种操作,分别用于取得对共享存储单元的独占性访问权和解除这一访问权。参照基本的RC模型,本文为FSDP设计了一套简洁、高效的控制逻辑和同步机制。

      首先,为每个存储体设置3个“信号灯”寄存器,分别对应除本通道之外的其他3个DSP核,作为同步/互斥操作的硬件锁。“信号灯”寄存器映射了全局共享的物理地址,通过公共配置总线与四个DSP核相连。每个“信号灯”具有“点亮”和“熄灭”两种状态,分别表示存储体内的共享数据“已写入”和“已读出”。DSP核通过同步指令改写“信号灯”寄存器的状态,实现核间的同步操作。具体的数据一致性协议为:

      当“生产者”DSP-i向某个存储体写入共享数据后,将其“信号灯”置为“点亮”状态。若这批共享数据有2~3个“消费者”,则点亮相应的2~3个“信号灯”。在某个“信号灯”处于“熄灭”状态时,相应的DSP核对该存储体的读请求全部进入读队列等待。

      当“消费者”DSP-j读出某个存储体的共享数据后,将该存储体与自己对应的“信号灯”置为“熄灭”状态。当某个存储体的所有3个“信号灯”都“熄灭”时,该存储体被释放,处于可写状态;否则,DSP核对该存储体的写请求全部进入写队列等待。

      “点亮”和“熄灭”信号灯的顺序一致性由DSP核对公共配置总线的独占性访问来保证。

      需要说明的是,DSP核不一定要将其对应的存储体写满才能点亮“信号灯”,一次同步操作所传输的数据量最小可以是一个字节,最大不超过单个存储体的容量。

      由于FSDP的访存通路与同步操作通路(即配置总线)是相互分离的,因此可能出现同步操作指令通过配置总线先于访存指令提前执行的错误情况。本文通过软件延迟槽的方式解决这一问题:由编译器通过指令调度技术,在最后一条共享数据的读指令和“熄灯”指令之间插入1~2条无关指令或空操作(NOP),作为等待共享数据返回的延迟槽,确保最后一个读请求被处理之后再执行“熄灯”操作。具体所需的软件延迟槽数量取决于DSP流水线的设计。对于本文而言,如果DSP核在发出Load指令的第3拍没有接收到返回的数据,则暂停指令派发,因此只需要2个延迟槽。图4给出了两个DSP核i和j传递共享数据的实例。



(a)延迟槽与同步操作的程序实例



(b)存储体的内容变化与信号灯状态

图4 两个DSP核通过两个存储体传递共享数据的例子

      本文最终的优化设计表明,任意两个DSP核利用一对LOAD-STORE指令再加上一次同步操作,总共只需4拍即可完成一个共享数据字的传递,从而实现了核间细粒度共享数据的快速传输。当需要传输的共享数据量超过FSDP单通道存储容量时,可以将数据分块,进行多次传输。

继承事业,薪火相传
返回列表