一种串行RapidIO链路数据传输的方法及装置的制作方法

文档序号:7693538阅读:594来源:国知局
专利名称:一种串行Rapid IO链路数据传输的方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种串行RapidIO链路数据传输的方 法及装置。
背景技术
Rapid IO是近年来发展迅速的一种新型的高速数据互联总线。串行Rapid IO( Serial Rapid IO, sRIO)由于使用更少的连线就可以达到IOG的数据传输率, 目前正被广泛使用于通信基础设施的芯片间、板间高速互联。
而sRIO链路数据传输是点到点的数据传输,存在一点对多点或者多点对 一点的并发传输,不能将数据传输中通常使用的循环緩沖区,或者单一的乒乓 緩冲区来实现对所有链路接收数据的緩沖,否者可能造成数据的覆盖。因此, 每一个点到点的数据传输链路都需要接收端处理器以写(write)的方式预先分 配该处理器的接收緩沖区,或者发送端处理器以读(read)的方式预先分配发 送緩冲区,上述数据传输方法称为预先分配专用緩冲区的数据传输方法。
现针对预先分配接收緩冲区以write的方式为例,描述现有技术中数据传 输机制,如图1所示,数据传输的处理过程如图2所示,包括
步骤201、处理器A分配发送緩冲区,可以采用专用的緩沖区,也可以釆 用malloc的内存池;
步骤202、处理器A将待发送数据填写到发送緩沖区中,数据填写完毕后调 用数据发送函数;
步骤203、数据发送函数启动sRIO的DMA传输通过sRIO的物理链路将数据 搬移到处理器B预留的接收緩冲区中;
步骤204、数据传输完成后处理器A向处理器B发送门铃(doorbell)中断,通知处理器B数据传输完成。
以上是现有技术sRIO链路中数据传输的过程,将以上系统进行扩展,当再
添加一个处理器,并且各处理器之间都有数据传输链路设计,这样每个处理器 都需要增加一个对端处理器的发送緩冲区,或者在对端处理器上增加一个接收
緩冲区。当N个器件组成的sRIO网络,如果每两个器件之间都可能存在链路, 这样每个处理器都需要预留N-1个接收緩冲区或者发送緩沖区。
可见采用现有技术,緩冲区数量太多,造成内存使用的浪费。因为每一条 链路的接收或者发送緩冲区的大小都预留为最大可能接收到的负荷的大小,开 辟了大量的内存作为预留的緩冲区。而在数据传输的时候,从统计上来看,所 有链路同时使用緩冲区的概率很小。因此,大部分的预留緩沖区在大多数的情 况下都处于闲置状态,造成内存使用的浪费。
同时,緩沖区地址映射表的存在要求各个处理器对緩冲区的规划关联性较 高。因为发送端在发送数据的时候需要提前知道对端处理器緩冲区的地址,所 以每一个处理器都会保存一张表格记录与其通信的处理器的緩冲区地址,称为
緩沖区地址映射表。由于各个处理器上分布着不同的程序,对所有的处理器的 緩冲区需要一个总的规划,来描述每一条链路在各个处理器上分布情况,通常 在相应的接口文档中约定,当 一个处理器的内存规划改变的时候就要求所有其 他的处理器修改对应该处理器的緩冲区地址映射表。
并且,緩沖区的调整维护困难。 一旦緩冲区的规划确定,如果需要重新调 整内存规划,则所有的处理器都需要修改对应于该处理器的内存映射表,可谓 牵一发而动全身。内存分布的调整操作复杂。
而且,发送端或者接收端的负载分配分配方式固定。对于预先分配緩冲区 的数据传输方法,可以通过预先分配发送緩冲区,对端处理器通过读的方式将 数据传输的负荷配置到接收端,或者由接收端预先分配接收緩冲区,发送端通 过write的方式发送数据实现将数据传输负载配置到发送端。但是一旦緩冲区分 配规划完成后,负载分配的方式就固定了。

发明内容
本发明实施例提供一种sRIO链路数据传输的方法及装置,用以解决现有 技术sRIO链路中每个处理器分配的接收緩冲区数量多,占用内存大影响数据 传输速度的问题,以及处理器中緩沖区设计关联性高,维护困难的问题,同时 可解决现有技术中緩沖区规划完成后,负荷分配单一的问题。
本发明实施例提供的一种sRIO链路数据传输的方法,包括
接收端接收到发送端发送的数据传输请求,所述数据传输请求中包括数据 传输类型信息,根据所述数据传输类型信息分配接收緩冲区,采用所述接收緩 冲区接收所述发送端发送的数据,
所述数据传输类型任意确定为写类型,或读类型。
所述数据传输请求以信件的形式发送。
所述数据传输请求还包括
数据传输的目的地址和传输的数据长度信息。
所述数据传输请求还包括
数据传输的源器件信息、源地址信息、目的器件信息和信件的属性信息。 当所述数据传输类型为读类型时,根据所述数据传输类型信息分配接收緩 冲区,包括
接收端取出未确定数据传输的目的地址的数据传输请求,根据所述传输的 数据长度信息分配接收緩冲区。
釆用所述接收緩冲区接收所述发送端发送的数据,包括
所述接收端将所述接收緩冲区的首地址填写到所述数据传输请求的数据 传输的目的地址字段,当接收端的数据传输控制进程处理所述数据传输请求 时,采用所述数据传输请求的数据传输的目的地址字段对应的接收緩冲区,接 收所述发送端发送的数据。
采用所述接收緩冲区接收所述发送端发送的数据后,还包括接收端释放所述接收数据緩沖区。
当所述数据传输的类型为写类型时,采用所述接收緩冲区接收发送端发送
的数据后,还包括
发送端释放发送緩冲区。
本发明实施例提供的一种sRIO链路数据传输的装置,包括
緩冲区分配模块,用于根据数据传输请求,所述数据传输请求中包括数据 传输类型信息,根据所述数据传输类型信息分配接收緩沖区,其中,所述数据 传输类型任意确定为写类型,或读类型;
数据接收模块,用于采用所述接收緩冲区进行数据的接收。
所述装置还包括
邮箱配置模块,用于在接收端内为发送端配置邮箱,接收发送端以信件形 式发送的数据传输请求。
所述緩冲区分配模块包括
第一分配单元,用于分配数据传输类型为读类型的数据传^i貪求的接收緩冲区; 第二分配单元,用于分配数据传输类型为写类型的数据传^it求的接jRI爰冲区。 所述第一分配单元包括
接收緩沖区配置单元,用于取出未确定数据传输的目的地址的数据传输请 求,调用函数,根据数据传输的长度信息分配接收数据緩冲区。 所述第一分配单元还包括
传输请求配置单元,用于将所述接收数据緩冲区的首地址填写到所述数据 传输请求的数据传输的目的地址字段。 所述装置还包括 释放单元,用于释放緩冲区。 所述释放单元包括
第一释放单元,用于释放接收数据緩冲区; 第二释放单元,用于释放发送緩沖区。本发明实施例在sRIO链路中,数据传输采用信件邮箱的传输机制,数据
传输的类型可以选择,根据信件的记录的基本信息进行数据接收緩冲区的动态
分配,并且在数据处理完成后释放緩沖区,因此釆用本发明提供的sRIO链路 数据传输的方法可以解决设置的緩冲区多,影响数据传输速度的问题,以及简 化使处理器中緩沖区设计、维护的问题,同时使负荷可以动态分配。


图1为现有技术中sRIO链路中緩冲区的结构示意图; 图2为现有技术中sRIO链路中数据传输方法的流程图; 图3为本发明实施例中信件结构示意图; 图4为本发明实施例中四级深度的邮箱结构示意图; 图5为本发明实施例中信件和邮箱的使用示意图; 图6为本发明实施例中读方式实现数据传输流程图; 图7为本发明实施例中写方式实现数据传输流程图; 图8为本发明实施例sRIO链路数据传输装置示意图。
具体实施例方式
在本发明实施例中,数据传输的类型不受处理器内緩冲区配置的影响,当 接收端接收到发送端发送的数据传输请求,其中,数据传输请求中包括数据传 输类型信息,根据数据传输类型信息分配接收緩沖区,采用分配的接收緩冲区 接收发送端发送的数据,并且,其中数据传输类型包括写类型,或读类型。
其中,发送端发送的数据传输请求,可以为记录了数据传输基本信息的小 数据包,例如,记录了数据传输基本信息的信件等。
当数据传输请求以信件的形式进行发送时,发送端将数据传输请求发送到 接收端为上述发送端配置的邮箱内。
本发明实施例中以数据传输请求为信件形式,对串行Rapid 10链路数据传 输的方法进行说明。其中,信件记录的数据传输的基本信息包括,数据传输的目的地址和传输 的数据长度信息。
并且,信件记录的信息还包括,数据传输的源器件信息、源地址信息、目
的器件信息和信件的属性信息。
其中,信件的属性信息包括,信件类型,和/或信件有效标志等。
当数据传输类型为读类型时,根据所述数据传输类型信息分配接收緩沖区
的过程包括,接收端取出未确定数据传输的目的地址的数据传输请求,根据所
述传输的数据长度信息分配接收数据緩沖区;
接收端采用上述接收緩冲区接收发送端发送的数据的过程包括,接收端将 上述接收数据緩沖区的首地址填写到数据传输请求的数据传输的目的地址字 段,当接收端的数据传输控制进程处理此数据传输请求时,采用此数据传输请 求的数据传输的目的地址字段对应的接收緩冲区,接收发送端发送的数据。
并且,上述接收端分配接收数据緩沖区的过程中,可以采用调用緩冲区分 配函数的形式进行接收緩冲区的分配。
采用上述接收緩冲区接收发送端发送的数据后,还包括,接收端释放上述 接收数据緩沖区。
当数据传输的类型为写类型时,采用所述接收緩冲区接收发送端发送的数 据后,还包括,发送端释》文发送緩冲区。
在本发明实施例中提供的在sRIO链路中传输数据时,对接收端处理器的 内存空间的存储器既可以进行读操作,又可以进行写操作。同时,可以将发送 或者接收数据的负荷灵活配置到发送端处理器、或者接收端处理器。
在本发明实施例中引入了信件(LETTER)、邮箱(MAILBOX)和门铃 (DOORBELL)等组合形成的数据传输机制。如图3所示,为本发明实施例 提供的信件的结构示意图,对于每一个信件统一定义了以下^f各式,每个信件的 长度为8字节,其中,本发明实施例提供的信件包括以下部分
信件301、源器件ID指发送端处理器的地址,进程ID指操作系统中操作
9进程的地址,在信件中可以釆用源器件ID或进程ID两者中的任意一个,也可
以根据情况采用两个地址的结合;
信件302、源地址指待传输数据在发送緩沖区中的首地址;
信件303、目的器件ID指接收端处理器的地址,进程ID指操作系统中操
作进程的地址,在信件中可以采用目的器件ID或进程ID两者中的任意一个,
也可以根据情况采用两个地址的结合;
信件304、目的地址指数据需要传输到的内存的首地址;
信件305、传输类型指数据可以采用读类型或写类型进行传输,不受緩冲
区配置的影响;
信件306、传输的数据长度指待传输的数据长度,当接收端接收到信件后, 可以根据此传输的数据长度信息合理分配接收緩冲区的大小;
信件307、信件类型指此信件的类型,可以为mail类型,也可以为信息类
型;
信件308、信件有效标志指此信件是否有效,当信件没有处理时此信件有 效,当信件处理后可以将信件设置为无效,节约信件处理的时间。
当然,在实现的过程中,也可以采用其他的配置方式,但是只要包含在本 发明保护范围内的所有信件的实现方式,都应该在本发明的保护范围内。
邮箱是用于存放信件的,对于sRIO网络内的所有处理器,对于可能存在 的数据链路的所有处理器内给对端处理器分配一个邮箱,为了管理方便可以将 每个处理器上的邮箱的结构和其在内存中的位置设置相同,同时,邮箱的容量 可以根据链路通信的忙闲程度灵活配置,例如可以采用邮箱的深度为4,如图 4所示为深度四级的邮箱的结构示意图。其中,每个邮箱的编号与门铃中断对 应,以便处理器查收邮件。由于采用邮箱的方法在处理器内为可能存在数据链 路的处理器分配内存,而邮箱占用的内存很小,所以采用此方法不会占用很多 内存。
在本发明实施例中采用的门铃中断是sRIO协议中描述用于发送中断信息的信息包,在本发明实施例提供的sRIO链路数据传输的方法中,当发送端的 处理器给接收端处理器发送完信件后,发送端处理器给^t妻收端处理器发送一个 门铃中断信号,通知接收端的处理器去检查此门铃对应的邮箱,以便接收端能 够及时处理发送端发送的数据传输信件。
并且,在本发明实施例数据传输的过程中,每个处理器都有一个数据传输 进程和一个待传输队列。待传输队列是用于缓存待发送的信件的队列,可以根 据需要设定緩存的最大信件数量;数据传输控制进程通过不断的检查待传输队 列,当待传输队列为非空,并且sRIO链路空闲,则发送数据,否则等待sRIO 链路空闲后发送数据,如图5所示为数据的传输过程中信件和邮箱的使用示意 图。
在图5中表示了两个处理器间信件的传输,其中,因为在两个处理器间有 数据的传输,因此,在处理器A中为处理器B设置了邮箱,并且处理器B中 为处理器A设置了邮箱,方便信件的传输。当处理器A中有数据请求传输时, 处理器A将请求封装成信件,插入处理器A中待传输队列的队伍尾部,当数 据传输控制进程轮询到该信件的时候,则将信件发送到处理器B为处理器A 设置的邮箱中,同时处理器A发送门铃中断,通知处理器B检查对应的邮箱; 或者处理器A也可以直接将信件发送到处理器B为处理器A设置的邮箱中, 处理器A发送门铃中断,通知处理器B检查对应的邮箱,处理器B解析接收 的信件,按照信件配置完成后,将信件插入处理器B中待传输队列尾部,等待 传输控制进程轮询到该信件时,根据该信件进行数据的传输。
并且,在信件的传输中可以任意配置信件传输类型,不受緩冲区规划的影 响,当信件设置的传输类型为读方式时,则接收端的处理器到发送端的处理器 中来读取数据,并且,在信件305中填写数据传输类型为读类型,例如可以用 nReadR或MTN—Read实现,同时,将待发送数据的首地址填写到信件302中 源地址字段,并且设置信件304中目的地址字段为空;当信件设置的传输类型 为写方式时,在信件305中填写数据传输类型为写类型,例如可以用nWrite_R,MTN—Write实现,同时,将待发送数据的首地址填写到信件302中 原地址字段,并且设置信件304中目的地址地段为接收端预留的接收緩冲区的 首地址。
下面详细介绍数据传输类型为读类型时,数据传输的过程,如图6所示, 具体包括以下几个步骤
步骤601、发送端处理器A将填写好的信件,发送到接收端处理器B中为 处理器A设置的邮箱中;
步骤602、发送端处理器A向接收端处理器B发送一个门铃中断,通知接 收端处理器B去检查门铃对应的邮箱;
步骤603、接收端处理器B响应此门铃中断,检查邮箱,根据邮件的有效 标志,取出有效的信件;
步骤604、接收端处理器B判断信件的信件类型为mail类型,则接收端处 理器B调用malloc函数分配接收数据緩沖区,在接收端处理器B中配置数据 接收緩冲区,并且将接收数据緩冲区的首地址填写到此信件的目的地址字段, 同时将此信件插入到接收端处理器B的待传输队列中,等待接收端处理器B 的数据传输控制进程的处理;
步骤605、当接收端处理器B的数据传输控制进程轮询到此信件的时候, 则解析信件并启动sRIO传输直接记忆体存取(Direct Memory A ccess, DMA), 进行数据的读操作;
步骤606、接收端处理器B可以得知数据传输完成,对接收的数据进行处 理,数据处理完成后,接收端处理器B调用free函数释放malloc函数的内存, 使其配置的数据接收緩沖区为下一次的数据传输使用。
在本发明实施例中采用malloc函数分配接收数据緩沖区,在实际的实现过 程中可以采用其他的函数来实现此步骤,只要满足本发明精神的在数据传输 中,采用函数分配接收緩沖区的配置方法都应该在本发明的保护范围内。
以上是对于读类型的信件的数据传输过程的处理,由于信件的类型可以任意配置,当配置的信件的数据传输类型为写类型时,数据的传输过程包括以下
步骤,如图7所示
步骤701 、发送端处理器A将信件插入到发送端的待传输队列的队列尾部, 等待发送端处理器的数据传输处理进程的处理;
步骤702、当发送端处理器A的数据传输控制进程轮询到此信件的时候, 则解析信件并启动sRIO传输DMA,进行数据的写操作;
步骤703、当数据传输完成后,发送端可以发送一个消息类型的信件通知 接收端处理器,然后发送一个门铃中断给接收端处理器;
步骤704、接收端处理器响应此门铃中断,检查此门铃对应的邮箱,判断 接收的信件如果为一个消息类型的信件,表明数据传输完成,解析信件并获取 写数据存放的地址;
步骤705、接收端处理器处理接收的数据,数据处理完成后,接收端处理 器回复发送端一个消息类型的信件,通知发送端处理器释》丈发送緩冲区,以便 下一次数据传输使用。
在本发明实施例中接收端发送的一个消息类型的邮件,其实质是为了通知 发送端释放发送緩冲区,所以在信件的配置上不需要严格按照其他信件的形式 配置,同时,接收端也可以采用其他方式,例如中断信息方式,通知发送端释 放发送緩冲区。
以上是本发明较佳的实施例,sRIO链路IO模式下,使用一段较小的内存 作为邮箱,将每一次的数据传输请求封装为信件,通过信件来传递,DMA传 输使用的源目的地址和数据长度,大大降低了各个处理器内存分配和緩冲区映 射的关联性。
同时,在数据传输中使用malloc函数为数据传输请求,按照信件中数据传 输的长度分配接收緩沖区,从而实现了零緩冲区设计。并且在每增加一条链路 时不需要重新规划设计新的緩沖区,使得采用本发明实施例提供的数据传输方 法有较好的可扩展性和可移植性。并且,通过封装sRIO数据传输请求为读类型数据传输信件,或者写类型
数据传输信件,将数据传输的负载灵活配置到发送端或者接收端,从而实现了 按照设计者的实际意图将数据传输的负荷灵活配置的目的。
本发明实施例提供了一种sRIO链路数据传输的装置,如图8所示,包括, 緩冲区分配模块810和数据接收模块820。其中,緩冲区分配模块810,用于 根据数据传输请求,所述数据传输请求中包括数据传输类型信息,根据所述数 据传输类型信息分配接收緩冲区,其中,所述数据传输类型包括写类型,或读 类型;数据接收模块820,用于釆用所述接收緩沖区进行数据的接收。
所述装置还包括邮箱配置模块800,用于在接收端内为发送端配置邮箱, 接收发送端以信件形式发送的数据传输请求。
所述緩冲区分配模块810包括,第一分配单元811和第二分配单元812。 其中,第一分配单元811,用于分配数据传输类型为读类型的数据传输请求的 接收緩冲区;第二分配单元812,用于分配数据传输类型为写类型的数据传输 请求的接收緩冲区。
所述第一分配单元811包括,接收緩冲区配置单元813和传输请求配置单 元814,其中,接收緩冲区配置单元813,用于取出未确定数据传输的目的地 址的数据传输请求,调用函数,根据数据传输的长度信息分配接收数据緩冲区; 传输请求配置单元814,用于将所述接收数据緩沖区的首地址填写到所述数据 传输请求的数据传输的目的地址字段。
所述装置还包括释;^文单元830,用于释^L緩冲区。
所述释放单元830包括,第一释放单元831和第二释放单元832。其中, 第一释放单元831,用于释放接收数据緩冲区;第二释放单元832,用于释放 发送緩冲区。
本发明实施例在sRIO链路中,数据传输采用信件邮箱的传输机制,数据 传输的类型可以选择,根据信件的记录的基本信息进行数据接收緩冲区的动态 分配,并且在数据处理完成后释放緩冲区,因此采用本发明提供的sRIO链路数据传输的方法可以解决设置的緩冲区多,影响数据传输速度的问题,以及简 化使处理器中緩冲区设计、维护的问题,同时使负荷可以动态分配。
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种串行Rapid IO链路数据传输的方法,其特征在于,该方法包括以下步骤接收端接收到发送端发送的数据传输请求,所述数据传输请求中包括数据传输类型信息,根据所述数据传输类型信息分配接收缓冲区,采用所述接收缓冲区接收所述发送端发送的数据,所述数据传输类型信息包括写类型,或读类型。
2、 如权利要求1所述的方法,其特征在于,所述数据传输请求以信件的 形式发送。
3、 如权利要求2所述的方法,其特征在于,所述数据传输请求还包括 数据传输的目的地址和传输的数据长度信息。
4、 如权利要求3所述的方法,其特征在于,所述数据传输请求还包括 数据传输的源器件信息、源地址信息、目的器件信息和信件的属性信息。
5、 如权利要求3所述的方法,其特征在于,当所述数据传输类型为读类 型时,根据所述数据传输类型信息分配接收緩冲区,包括接收端取出未确定数据传输的目的地址的数据传输请求,根据所述传输的 数据长度信息分配接收緩沖区。
6、 如权利要求5所述的方法,其特征在于,采用所述接收緩沖区接收所 述发送端发送的数据,包括所述接收端将所述接收緩冲区的首地址填写到所述数据传输请求的数据 传输的目的地址字段,当接收端的数据传输控制进程处理所述数据传输请求 时,采用所述数据传输请求的数据传输的目的地址字段对应的接收緩沖区,接 收所述发送端发送的数据。
7、 如权利要求6所述的方法,其特征在于,采用所述接收緩冲区接收所 述发送端发送的数据后,还包括接收端释放所述接收数据緩冲区。
8、 如权利要求1所述的方法,其特征在于,当所述数据传输的类型为写 类型时,采用所述接收緩沖区接收发送端发送的数据后,还包括发送端释放发送緩沖区。
9、 一种串行RapidIO链路数据传输的装置,其特征在于,该装置包括 緩沖区分配模块,用于根据数据传输请求,所述数据传输请求中包括数据传输类型信息,根据所述数据传输类型信息分配接收緩沖区,其中,所述数据 传输类型信息包括写类型,或读类型;数据接收模块,用于采用所述接收緩沖区进行数据的接收。
10、 如权利要求9所述的装置,其特征在于,所述装置还包括 邮箱配置模块,用于在接收端内为发送端配置邮箱,接收发送端以信件形式发送的数据传输请求。
11、 如权利要求IO所述的装置,其特征在于,所述緩沖区分配模块包括 第一分配单元,用于分配数据传输类型为读类型的数据传IIH青求的接J^爰沖区; 第二分配单元,用于分配数据传输类型为写类型的数据传llri貪求的接收緩冲区。
12、 如权利要求11所述的装置,其特征在于,所述第一分配单元包括 接收緩冲区配置单元,用于取出未确定数据传输的目的地址的数据传输请求,调用函数,根据数据传输的长度信息分配接收数据緩冲区。
13、 如权利要求11所述的装置,其特征在于,所述第一分配单元还包括 传输请求配置单元,用于将所述接收数据緩冲区的首地址填写到所述数据传输请求的数据传输的目的地址字段。
14、 如权利要求9所述的装置,其特征在于,所述装置还包括 释放单元,用于释放緩冲区。
15、 如权利要求14所述的装置,其特征在于,所述释放单元包括 第 一释放单元,用于释放接收数据緩冲区;第二释放单元,用于释放发送緩冲区。
全文摘要
本发明公开了一种串行Rapid IO链路数据传输的方法,该方法包括,接收端接收到发送端发送的数据传输请求,所述数据传输请求中包括数据传输类型信息,根据所述数据传输类型分配接收缓冲区,采用所述接收缓冲区接收发送端发送的数据,所述数据传输类型包括写类型,或读类型。本发明还公开了一种串行快速IO链路数据传输的装置。本发明数据传输采用信件邮箱的传输机制,数据传输的类型可以选择,根据信件的记录的基本信息进行数据接收缓冲区的动态分配,并且在数据处理完成后释放缓冲区,因此采用本发明提供的sRIO链路数据传输的方法可以提高数据传输速度的问题,以及使处理器中缓冲区设计、维护简单,同时使负荷可以动态分配。
文档编号H04L12/40GK101562559SQ200810104098
公开日2009年10月21日 申请日期2008年4月15日 优先权日2008年4月15日
发明者坤 李 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1