基于MSGQ模块的DSP的应用简化方案
电信基础设备、视频基础设备以及影像应用等对于带宽的要求迅速提升,这些系统需要支持具有更高分辨率、更快帧速率以及更出色音质的音视频流。同时,上述系统还要提高信道密度,降低每信道的功耗。此外,该市场不仅要求提高外设与存储器的集成度,而且还要进一步缩减电路板面积,从而节约系统成本。开发人员需要高度可扩展的灵活硅芯片器件和工具来帮助他们跟上市场发展趋势的要求。
用于数字信号处理器(DSP)的一些传统高性能I/O在可靠性、带宽充足性以及可扩展性等方面都存在一定的局限性。串行RapidIO(sRIO) 能够通过提供一种高性能的分组交换式互连技术解决这种局限性问题,这对复杂的DSP拓扑而言非常有用。与其前代技术不同,sRIO不需要与存储器共享接口,而且既能作为主系统又能作为从系统运行。此外,其还可支持较长的物理连接距离以及硬件级故障检测/纠错、状态/确认反馈以及带内中断/信号发送等。
德州仪器(TI)推出的TMS320C6?55等高级DSP现已集成了sRIO接口。这种接口具有极高的效率,能直接连接至DSP的DMA引擎,通过事务处理代理寄存器来降低控制开销。为了提高DMA系统数据处理的效率,可对数据设定优先级,而且该接口还支持多个事务处理的排队。
复杂系统拓扑中的sRIO
首先,我们必须了解sRIO在复杂系统拓扑中发挥的作用,明确它在物理系统的实施过程中如何提高灵活性。sRIO可支持芯片之间的通信,速度高达 20Gbps乃至更高。sRIO提供1X和4X宽度的1.25、2.5或3.125GHz双向链接,每向吞吐速率高达10Gbps。
利用sRIO,设计人员能够确定如何实现多个器件的最佳连接。DSP可直接进行网形、环形以及星形拓扑的连接,也可通过交换机进行多个DSP的连接,彼此之间有无本地连接均可。此外,我们还可采用sRIO一并连接DSP、FPGA和ASIC。这种高度的灵活性使设计人员能根据应用数据流的需要任意安排组件,而不会因为接口或协议的限制影响系统设计。
例如,一个简单的系统可以具备两个通过4倍速链接相连的DSP。另一个系统则要求更高的计算能力,不过不需要更多I/O。这种系统可以由5个DSP组成,每个DSP都直接通过1倍速链接彼此相连。第三个系统也包含5个DSP,它们均采用4倍速链接连接至中央交换机,以实现更佳的I/O性能(图1)。第四个系统则有更繁重的计算要求,其中可能包含12个乃至更多的DSP,它们均通过4倍速链接连接至一个或多个交换机的系统架构,从而实现最高的计算能力和I/O带宽。
图1:在本例中,sRIO能灵活地连接所有五个DSP。
支持sRIO的系统能够通过充分利用上述特性显著提高整体性能。例如,在无线基础设施系统中,总共三到六个速度达Gbps的天线数据通常由可处理24到48 个天线流(antenna stream)的ASIC或FPGA支持,这时每个基站的速率约为123Mbps。另一方面,用户数据通常在DSP上处理,每个用户通道速度约 19Mbps,统一采用共享的EMIF通道。采用链接sRIO通道的DSP使用户数据和天线数据能独立得到处理。采用DSP所需的成本不仅大大低于 FPGA或ASIC,而且在24到48个天线流的系统中能处理相同的数据速率,每个通道速度约为123Mbps,因此天线数据速度总共能到每秒3到 6Gb。对于用户数据而言,诸如最新DSP系列的较高核心速度、较快的sRIO I/O速度,以及能释放外部存储器带宽等优异特性,使通道密度能够提高到每DSP达128个用户通道,每通道速度为19Mbps,这样整体而言每个DSP 的用户数据总速度达2.5Gbps。
消息传递
软件开发人员不仅能够受益于 sRIO接口具有的更高性能和更高灵活性,而且他们无论采用低级编程技术还是高级编程技术均可进行应用开发。如果使用低级直接I/O方案,编程人员必须指定目标和地址,这种方案在能够实现最佳性能的同时,还非常适用于在设计时就已知目标缓冲方案的应用,并且应用的分组是固定的。但是,这种方法的缺点是开发人员必须了解远程处理器的物理存储器映射,这使第三方集成非常困难。
高级消息传递方案能够在无需进行大量低级器件编程的情况下就能提供一种更抽象的通信方法。这种方法对目标缓冲方案未知的应用最为适用,而且对于应用分组未知或者比较灵活的情况也很适用。此外,消息传递接口能够显著缩短用于增加或减少应用处理器所需的时间。
数家嵌入式处理器厂商为sRIO提供内核级软件层支持。例如,在TI DSP中,消息传递由DSP/BIOS软件内核基础消息队列(MSGQ)模块提供支持,这使应用程序开发人员能在更高级的抽象水平上设计软件。
消息传递使应用程序能够通过sRIO互连更高效地与其它DSP通信。通过这种方法发送的消息,其优先级高于数据缓冲,这一点非常有用,因为以更高的优先级控制数据通常来说是更好的做法。MSGQ能在无需修改源代码的情况下在处理器中移动读取器和写入器,因此我们能在单个处理器上进行开发,而且能方便地针对多处理器系统进行缩放。也就是说,写入器不用了解读取器驻留在哪个处理器上,这不仅能简化集成,而且还能简化客户端/服务器应用等的开发工作。
此外,MSGQ还可支持消息的零拷贝传输,假定底层物理介质支持处理器间零拷贝。零拷贝基本说来就是指针传递(pointer passing),而不是将消息内容拷贝到其它消息中。我们可在单个的处理器上完成上述操作,也可在共享存储器的多部处理器完成。由于能从特定集 (pool)分配消息,因而我们能轻松地实现服务质量(QoS)特性,如针对关键资源提高性能、加快速度等。
MSGQ模块
MSGQ模块包括API接口、分配器以及传输程序等(图2)。API接口将应用程序与传输程序和分配器相隔离。分配器为消息分配提供接口,而传输程序则为处理器间的消息传输提供接口。
- 使用BusyBox简化嵌入式Linux系统(04-18)
- 简化微控制器与温度传感器之间的接口(03-28)
- 新型集成电路简化嵌入式POL DC/DC转换器设计(03-19)
- 一种基于硬件的虚拟化设计简化多核处理器的方案(03-12)
- 飞思卡尔利用VortiQa简化多核处理器的移植(03-07)
- 单片机与PC通信的简化接口设计(02-11)