引言
软硬件结合构建宽带互联并行处理的数据处理系统是实现高速实时数据处理的有效方案。基于这样的方案设计理念,采用多DSP、多FPGA通过SRIO互联来实现一个高速互联的计算网络,数据可以在DSP之间及DSP与FPGA之间高速传输。这样的互联计算网络在数据交互、任务切换、算法分解、计算负载均衡等方面具有较强的适应性、可扩展性。本文介绍了这种基于SRIO互联技术的高速实时数据处理硬件平台,并在该平台上研究了多DSP之间、DSP与FPGA之间的SRIO通信技术。
1 SRIO标准
Rapid I/O是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速互联技术,已于2004年被国际标准化组织(ISO)和国际电工协会(IEC)批准为ISO/IECDIS 18372标准。SRIO则是面向串行背板、DSP和相关串行数据平面连接应用的串行RapidIO接口。串行RapidIO包含一个3层结构的协议,即物理层、传输层、逻辑层。物理层定义电气特性、链路控制、低级错误管理;传输层定义包交换、路由和寻址机制;逻辑层定义总体协议和包格式。可以实现最低引脚数量,采用DMA传输,支持复杂的可扩展拓扑,多点传输;可选的1.25 Gbps、2.5 Gbps、3.125 Gbps三种速度能满足不同应用需求,是未来十几年中嵌入式系统互联的最佳选择之一。
2 基于C6455高速SRIO接口的互联系统
2.1 C6455的SRIO端口
TMS320C6455(简称C6455)是德州仪器(TI)公司新推出的一款DSP产品,可实现更高性能,精简代码,更多片上存储器及超高带宽的集成外设。其中最为引人瞩目的是第一次实现了用于处理器间通信的SRIO总线,C6455上的SRIO端口是面向嵌入式领域推出的具有高数率,很少引脚的互联方案,并且Rapid I/O的数据传输完全是由硬件实现的,不需要处理器参与,因此这样可以实现一个高效板级同构互联多处理器系统。C6455的SRIO端口一对收发差分信号对构成一个全双工的port(端口),可以工作在1.25 Gbps、2.5 Gbps、3.125 Gbps的波特率。
2.2 基于SRIO的多C6455互联结构
C6455的SRIO端口可以与SRIO交换器件实现互联,也可以在C6455之间通过连接差分信号来实现。如图1和图2所示的1x模式和4x模式互联关系,在1x模式中,器件的任何一对发收信号可以与另一个器件的收发信号相互连接组成独立的1x模式工作。如果两个C6455间采用四对全连接方式,则可实现1个4x工作模式或者是4个独立的1x工作模式。
图1 C6455SRIO1x与1x的连接 图2 C6455SRIO4x与4x的连接
多DSP及FPGA的并行处理系统主要由4个C6455处理器和4个Virtex5LX50T构成,系统结构如图3所示。DSP与DSP之间的互联采用图1所示的连接方式来实现全连通的SRIO网络,实现所有DSP之间的1路1x通道,各个通道上的控制、传输独立并行工作。通过SRIO互联
图3数据处理系统互联网络
网络,任何一个DSP C6455都可以访问网络上其他DSP C6455资源,实现网络上的所有设备资源共享。而且这样的全连通结构又可以根据不同任务处理的特点,灵活地配置成菊花链串行流水线、一主多从的星形等拓扑结构,在不同数据处理应用中具有高度可动态重构性。
2.3 C6455的SRIO传输控制结构
C6455的SRIO包有direct I/O包、DOORBELL包、Message包以及Maintenance包等等。其中最重要的是直接I/O包和DOORBELL包的传输控制,它的传输控制模块分成LSU(Load/Store Unit)控制单元和MAU(Memory Access Unit)控制单元。LSU用于实现Direct I/O包、DOORBELL包的发送,MAU则负责Direct I/O包的接收。具体的传输控制结构框图如图4所示。
图4 SRIO传输控制结构框图
所有直接I/O包和DOORBELL包的发送都由LSU模块执行。直接I/O包内包含了数据本地DSP地址、目标设备ID及数据在目标SRIO设备上需要保存或读取的地址,DSP通过配置总线对发送端口配置一系列MMRs作为传输描述符,在包传输之前硬件自动把它们加在包头。启动SRIO传输后数据自动实现DSP内部存储空间(L2 SRAM)到SRIO发送端口缓冲区的DMA数据传输,处理器参与的仅仅是配置过程,而真正的数据搬移过程全由DMA完成,并且包信息中包含了接收端口的ID及地址信息,数据在接收端口由MAU模块自动DMA到包头信息指定的地址空间,对用户来说是完全透明的。
2.4 C6455的SRIO关键事务处理
SRIO的逻辑层采用的是包格式来交换数据,所有包的有效载荷最大为256字节。事务就是指向SRIO地址空间的加载存储及DMA的操作,其中最为关键重要的就是NREAD(读操作)、NWRITE(写操作)、DOORBELL(门铃操作)。通过SRIO包的这几种事务处理可以实现互连器件间的数据传输。在发送DSP的SRIO端口和接收DSP的SRIO端口都需要首先进行初始化,包括使能端口,配置端口工作模式,设置和使能PLL模块,设置设备ID及数据传输速率(注意发送和接收端口速率要求一致)。在初始化完成后,通过循环查询SRIO端口状态寄存器来判断链路的连接成功与否。一般情况下,链路会很快连接成功,否则前述的初始化配置可能有错。链路连接成功后,就可以进行读写和门铃操作。在系统测试中,发送端DSP通过写操作发送完一帧数据,随即发送一个门铃数据包,门铃数据包在接收端DSP上产生一个系统中断告知数据到达有效,于是接收端DSP又将一个门铃数据包发送回发送端DSP,同样产生一个中断给发送端DSP,发送端DSP收到中断后又继续发送下一个数据帧,如此循环往复实现高速传输数据。
3 C6455与Virtex5LXT的串行接口互联
在DSP+FPGA复合架构中,DSP的优势在于,对新型及复杂算法开发上只需较短的时间,并能够快速灵活地移植到新一代DSP处理器上;而FPGA的最大优势在于,通过并行处理实现的效能最大化。因此通过SRIO实现DSP和FPGA的互联可以达到两者的优势互补。如图3中,通过DSP的一个SRIO端口和一个Virtex5 LX50T实现SRIO连接,每一个FPGA都可以通过SRIO通道访问SRIO网络上的任何资源。用于SRIO的Xilinx端点IP解决方案针对RapidIO规范(v1.3)而设计,完整的Xilinx端点IP解决方案包括用户收发数据接口逻辑、传输控制及缓存逻辑、SRIO物理层IP,以及SRIO管理配置寄存器实现逻辑4部分。
结语
在多处理器互联处理系统实现方案中,SRIO是最佳的数据互联方式之一。高带宽、低延时、引脚少、DMA传输、低软件复杂度满足了飞速发展的高速实时数据处理对性能的要求。C6455间的SRIO高速通信满足不同应用软件设计的灵活性,DSP和FPGA的SRIO通信提高了多处理器系统的计算能力,通过SRIO通信方式构建的计算网络提供了共享式分布处理,能轻松满足不同应用领域高速发展的海量数据高速处理需求。