首页 » 互联网 » 多核DSP间基于SRIO数据传输的设计与实现_数据_多核

多核DSP间基于SRIO数据传输的设计与实现_数据_多核

萌界大人物 2025-01-17 21:43:20 0

扫一扫用手机浏览

文章目录 [+]

(重庆邮电大学,重庆400065)

:在利用Digital Signal Processor (DSP)芯片进行数字旗子暗记处理时,由于数据量大,线程较多,常日采取多片DSP协同处理。
本文旨在研究DSP间数据和信息传输的实现,并以三片TI的 TMS320C6474芯片为例,基于SRIO协议,设计一种传输架构,实现了DSP间的数据传输。
终极实现DSP间2.520 Gb/s的数据传输速率,为理论值的50.40%,但如果撤除线程调度和DSP间同步所用韶光,其SRIO接口的数据传输速率可达到3.886 Gb/s,为理论值的77.72%。
该设计具有较大的通用性,对其他同类型的芯片间的数据传输设计具有极大的参考性。

多核DSP间基于SRIO数据传输的设计与实现_数据_多核 多核DSP间基于SRIO数据传输的设计与实现_数据_多核 互联网

:多核;DSP;SRIO;DSP间数据传输

多核DSP间基于SRIO数据传输的设计与实现_数据_多核 多核DSP间基于SRIO数据传输的设计与实现_数据_多核 互联网
(图片来自网络侵删)

:TP368.2文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.04.011

引用格式:魏智伟.多核DSP间基于SRIO数据传输的设计与实现[J].微型机与运用,2017,36(4):36-39.

0弁言

伴随着DSP所需处理的数据量和开拓的功能模块的增多,单片DSP运行的进程数增多,负载过大,系统越来越难以知足实时处理的哀求。
如果选择多片DSP协同运行,不仅可以减少单片DSP的负载,提高系统的处理性能和相应速率,从而达到实时处理的哀求,还能进行更多功能模块的开拓,对付数字旗子暗记处理系统来说定是有益的。
但多片DSP进行协同运行时,DSP间须要设计完成数据交互的功能。
本文依据Rapid IO协议的标准,结合TI的TMS320C6474芯片的特点,在Digital Signal Processor_Basic Input Output System(DSP_BIOS)的开拓平台上,设计和实现了多核DSP间的数据传输。
本文首先先容了该设计所需的各个功能模块,然后阐述整体设计的流程和详细实现的办法,末了对DSP间数据传输性能进行了测试。

1DSP间通信所需功能模块简介

1.1Mailbox(邮箱)

基于DSP_BIOS的开拓平台,TI供应了一个Mailbox(MBX)模块,开拓者可以通过TI的用户接口函数来进行管理,利用该模块。
Mailbox用来图1用Mailbox实现线程间通信实现DSP内部的同一个核内的不同进程(TSK)间的相互通信[1]。
MBX_post用于发送端,MBX_pend用于吸收端,实在现示例如图1所示。

1.2Semaphore(旗子暗记通信)

TI供应了一个Semaphore[2]模块,该模块可以用于管理对共享资源的访问。
其访问模式有三种:直接模式,间接模式,综合模式。
本文采取的是直接模式:读取寄存器DIRECT的值,如果DIRECT的值为1,则表明该共享资源可用,许可访问,并得到该旗子暗记量;反之如果DIRECT的值为0,则表明该共享资源正在被其他进程访问。
当对共享资源操作完成后,须要对DIRECT写1,以开释对该资源利用的权利。

1.3Rapid IO

1.3.1Rapid IO简介

Rapid IO协议是一个开放的点对点分组交流标准,是面向嵌入式系统开拓提出的高可靠、高性能、基于包交流的互联技能[3],传输速率能达到1 Gb/s以上。
其最紧张的特点包括:(1)有缺点检测机制; (2)低负载高带宽;(3)引脚少[4]。

1.3.2Rapid IO架构

SRIO总线是一种开放式的基于包交流的高速串行标准总线[5],Rapid IO协议采取三层分级体系构造:

(1)逻辑层:规定了端点间传输的协议和包格式。

(2)传输层:定义了在系统中传输的包所需的路由信息。

(3)物理层:包含了硬件级接口的信息,比如电气特性、缺点数据管理、基本数据流掌握。

1.3.3SRIO包构造

在SRIO的包构造中,包的种类有很多,紧张用到的为数据包和门铃包。
数据包用于在源地址和目的地址间进行数据传输,其构造如图2所示。
门铃包紧张用于触发相应的中断,关照相应DSP的某个核进入中断相应函数,实行相应的操作,但门铃包不携带数据信息,其门铃包的构造如图3所示。

个中包构造各个段的含义是:AckID:交流构造期间将利用掌握符号来确认是哪一个包;Prio:表明该包的优先级;tt:指定Device ID是用8 bit或16 bit表示;fftyp:表示包的类型;destID:包传送的目的地址ID;sourceID:发送包的源地址ID;CRC:包构造的校验保护;Info:门铃中断触发掌握。

1.3.4Rapid IO包传输

包构造(packets)是SRIO传输两个端点之间传输的单位,其传输是基于要求包和相应包。
图4发送端和吸收端分包交互流程

其一次数据传输流程为:发送发起端产生一个要求包给吸收端,吸收端收到后返还一个相应包给发送发起端[6]。
图4表明了发送端和吸收真个包交互流程。

2DSP间通信的设计与实现

2.1资源的配置

2.1.1SRIO端口连接

每片TMS320C6474芯片有两个SRIO实体端口(分别命名为Port0,Port1),将其分别与其余两片DSP的任意一端口相连,如图5所示。
通过该连接,可以担保任意一片DSP能与其他两片DSP直接连接。
当发送端DSP和吸收端DSP都已确定时,相应SRIO端口的选择也就确定了。

2.1.2DDR共享内存的分配与管理

每块DSP上都外挂一片DDR存储器。
DSP的任意一个核Core0、Core1、Core2都能访问该存储器(TMS320C6474 为三核处理器,将三个核依次命名为Core0、Core1、Core2)。
在DSP0,DSP1,DSP2的DDR存储器里指定一块内存用于存储DSP间任务调度的信息(以下称该段内存为共享调度内存),如图5所示。
每片DSP上分配的公共调度内存的方案与管理如图6所示。
对每个DSP三个核的内存分别分配一个Semaphore(旗子暗记通信)用于管理对吸收端DSP的共享调度内存的访问。

2.1.3中断的分配与利用

当发送端将发送给吸收端后,关照吸收端相应的核来处理该。
这次设计的方案是通过SRIO口传输门铃包(DOOEBELL Packet),门铃包携带吸收端相应核的信息, 触发吸收端相应核的中断。

当发送端发送DOORBELL包时,此包被用作初始化CPU中断,包构造中INFO段表明干系DOORBELL寄存器的干系中断位被设置,如图3所示。
一个DSP有4个DOOEBELL寄存器,每个寄存器有16 bit,有64个中断源产生中断。
通过ICR(Interrupt Condition Routing)寄存器,可以将每位路由给任意核。
本文将DOORBELL寄存器的最低的三位分别分配给DSP的三个核(Core0,Core1,Core2)。
即若DOOEBELL的最低位为1,则DSP的Coer0相应傍边止。

每个DSP都有两个SRIO口,如图5所示,前面已经将DSP互连的SRIO口进行了编号(0,1),按照SRIO口的编号(0,1)分别分配以DOOEBELL 0和DOOEBELL 1寄存器,DOOEBELL 0和DOORBELL 1寄存器又分别映射到SRIO的两个中断通道(71~RapidIO Interrupt(2n),72~ RapidIO Interrupt(2n+1)),将此两个中断分别分配给两个SRIO口,使之分别相应SRIO口的中断。
该Rapid IO Interrupt紧张用于判断发送真个DSP的编号。
如图7所示,吸收端为DSP0,若中断通道71~RIOINT被触发,则判断发送端为DSP1,若中断通道72~RIOINT被触发,则判断发送端为DSP2。

通过以上中断的配置,可以担保发送真个任意DSP都能通过DOOEBELL包关照到吸收真个任意核,同时吸收端也能判断出发送端为哪个DSP。

2.2设计思路与详细实现

2.2.1设计思路

实现多核DSP间的数据交互紧张完成两方面的事情:(1)实现数据的搬移;(2)关照吸收真个DSP数据存储的位置和长度。
实在现流程图如图8所示。

2.2.2详细实现流程

(1)SRIO初始化。
①SRIO电源模块的初始化:对SRIO干系的模块供应电源。
②SRIO的SERDES模块初始化:配置PLL,配置RX0、TX0和TX1、TX1的传输通道,配置SRIO的端口0和1。
③检讨SRIO口是否配置完成。

(2)选择SRIO端口。
根据发送真个DSP和吸收真个DSP决定选择SRIO口,即选择数据传输的物理链路。

(3)获取向吸收真个共享调度内存写入的旗子暗记量。
通过Semaphore(旗子暗记通信)管理不同发送端对吸收端DSP的共享调度内存的访问,若该旗子暗记量被占用,则一贯等待该旗子暗记被开释。

(4)通过SRIO口传输数据包。
配置Load/Store Register完成包的组成。
其关键配置有:配置LSUn_REG2中的DSP Address,完成待传输数据(payload)的源地址和目的地址的配置;配置LSUn_REG3中的Byte_count完成待传输数据的长度;配置LSUn_REG5中的Packet Type完成包种类的配置。
配置完成后,使能传输。
其Load/Store Register相应字段的配置会映射到数据包中,待传输数据通过SRIO口存到了公共调度内存中。

(5)通过SRIO口传输DOOEBELL包:该包用于关照吸收端DSP的相应核的共享调度内存有待处理。
通过对LSUn_REG5的Drbll Info段进行配置,使之映射到DOORBELLn_ICRR寄存器中,本文将DOOEBELLn_ICRR的第0位、第1位和第2位,通过ICR(Interrupt Condition Routing)寄存器使之分别路由到核0、核1、核2。
则通过DOOEBELL包就能在吸收端DSP相应的核上产生中断。
第(2)步已经得到了相应的SRIO的端口号,通过SRIO端口号为0或1决定DOORBELLn_ICRR为DOORBELL0_ICRR或DOORBELL1_ICRR。
该DOORBELL0_ICRR和DOORBELL1_ICRR分别对应着吸收端DSP相应核上的两个SRIO_INT中断。
在2.1.3节中已经先容,借此来判断发送真个DSP的编号。
由此吸收端能判断出数据在共享调度内存中的存储位置,如图9所示。
以发送端为DSP0_Core0、吸收端为DSP1_Core1为例,其应存储在DSP1的共享内存中的DSP0、Core1段。

(6)吸收端DSP相应的核读取共享调度内存的数据,解析收到的并通过Mailbox(邮箱)模块,在吸收端DSP相应的核内进行核内线程调度,触发相应的任务。

(7)吸收端DSP实行完相应的任务后,给发送端返回相应的数据,发送端DSP和Core的编号都会在传输的过程中保存,以是吸收端往发送端返回时按照前几个步骤的逆过程进行数据传输。

通过以上几个步骤后,多核DSP间的数据传输已经实现。

3数据传输测试

本文对多核DSP间的数据传输进行测试[7],SRIO口的事情速率设置为3.125 Gb/s,经由物理层8B/10B编码,数据包实际传输速率为2.5 Gb/s,利用两个1x通道,理论传输数据为5 Gb/s。

数据传输精确性的测试:从DSP0Core0发送2k次的数据给DSP1Core2,DSP1Core2收到数据后将数据转发给DSP2Core1,DSP2Core1收到数据后再发送回DSP0Core0,DSP0Core0末了将收到的数据与最初发送的数据进行比拟,检测数据有无缺点。
本文采取每隔1 s发送一次数据,测试一星期未创造出错。

传输性能的测试:任意选取两片DSP的任意核进行不同数据长度的回环测试。
例如数据从DSP1发送至DSP2,DSP2收到数据后将数据返回给DSP1。
从DSP1刚开始发送数据和刚吸收完数据后分别利用_itoll(TSCH,TSCL)函数获取CPU的Cycle值,打算两次值之差,即可测出速率[8]。

通过数据剖析可以得出,数据的传输速率为2.520 Gb/s旁边,为理论值的50.4%。
但传输长度为64 B时,传输的数据较少,可近似为线程调度和DSP间同步所需的韶光,若将传输32 000 B的韶光减去传输64 B韶光(线程调度和DSP间同步所需韶光),再打算传输速率的值为3.886 Gb/s,为理论值的77.72%。
由于数据包的组包和解包,以及DDR上读取数据的开销等,实际数据会小于理论值。

4结束语

本文在DSP_BIOS操作平台上,基于Rapid IO协议,实现了多核DSP间的数据传输。
这次设计不仅适用于2个多核DSP间的数据传输,同时也适用于3个乃至3个以上多核DSP间的数据传输。
该架构能协同多个DSP进行大量的数据处理,相对减少了单个DSP处理的时延和包袱,提高了系统的处理能力和相应速率,对数字旗子暗记处理系统的发展具有一定的推动浸染。

参考文献

[1] Texas Instruments Group. TMS320 DSP/BIOS v5.42 User’s Guide (SPRU4231) [EB/OL].(2013-08-xx)[2016-09-20]http://www.ti.com.

[2] Texas Instruments Group. TMS320C6474 DSP Semaphore User’s Guide (SPRUG14)[EB/OL].(2016-09-20)[200810xx]http://www.ti.com.

[3] 陈婷,岳强,汪洋.FPGA和DSP间基于SRIO的高速通信系统设计[J].单片机与嵌入式系统运用,2016(3):37-40.

[4] Texas Instruments Group. TMS320C6474 DSP Serial Rapid IO(SRIO) User’s Guide (SPRUG230) [EB/OL].(2011-10-xx)[20160920]http://www.ti.com.

[5] 王磊,王辉球.基于高速串行总线SRIO的数据传输[J].电子制作,2015(5):16-18.

[6] 黄克武,吴海洲.基于TMS320C6455的高速SRIO接口设计[J].电子丈量技能,2008,31(9) :143147.

[7] 冯超,张涛.TMS320C6678高速串行接口的传输性能研究[J].单片机与嵌入式系统运用,2015,15(11):52-55.

[8] 侯普.基于TI KeyStoneⅡ多核DSP技能的研究与利用LTEA基带板处理板设计与实现[D].北京:北京邮电大学,2015.

标签:

相关文章