一种数据读取方法、对端设备及控制器与流程

文档序号:12363592阅读:236来源:国知局
一种数据读取方法、对端设备及控制器与流程

本发明涉及数据传输领域,尤其涉及一种数据读取方法、对端设备及控制器。



背景技术:

增强型外设互连(PCIe,Peripheral Component Interconnect express)协议总线是第三代高性能接口总线,属于一种基于数据包的串行连接协议,它提供高速的、高带宽的、高性能的、高扩展性的、可热插拔的、点到点的、双单工的串行差分信号链路来互联设备。并且,已经被广泛应用于计算机和电子通信领域的外围设备互连上。

基于PCIe协议总线在通信领域的应用,目标设备往往需要从对端设备读取大量数据,一般的做法是目标设备打开向上获取数据的有效控制位,控制器就向对端设备发送非转发(NP,Non-posted Packet)存储器读命令,对端设备根据NP存储器读命令通过控制器向目标设备返回读数据。

现有技术中,由于PCIe协议总线在实际使用中需要考虑到PCIe传输链路使用效率、数据接收缓存以及其他命令传输等各方面的平衡原因,对端设备与控制器之间传输时携带的数据有效荷载(payload)一般不会超过256B,所以,现有技术中控制器向对端设备发送的一个NP存储器读命令中,携带的需要读取的报文的数据长度就在0~256Byte之间,对端设备接收到NP存储器读命令后返回相应长度的复杂可编程逻辑器件(Cpld,Complex Programmable Logic Device)返回报文,如果需要从对端设备中读取的数据长度比较长的话,控制器就需要多次向对端设备发送NP存储器读命令,且目前关于NP存储器读命令的做法是等当前NP存储器读命令对应的Cpld返回报文返回后,才下发下一个 NP存储器读命令,这样,一个长的报文读回来的话需要很多次这样的通信交互,需要花费大量的时间,且浪费传输线路上的带宽,与PCIe这个高速外设不匹配,也不符合通信领域对数据高速传输的要求。



技术实现要素:

有鉴于此,本发明实施例期望提供一种数据读取方法、对端设备及控制器,可以减少NP存储器读命令的发送个数,节省时间,提高数据传输效率。

为达到上述目的,本发明的技术方案是这样实现的:

一种数据读取方法,所述方法包括:

接收非转发NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;

在所述数据读取长度超过有效载荷payload长度时,将所述数据读取初始地址和数据读取长度对应的读取数据,拆分成数据长度在payload长度以内的若干返回报文;

将所述若干返回报文依次返回。

上述方案中,所述返回报文为Cpld返回报文,所述将所述若干返回报文依次返回,包括:

将所述若干Cpld返回报文按照各Cpld返回报文所在地址的顺序依次返回给控制器,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数。

上述方案中,在接收NP存储器读命令之前,所述方法还包括:

向所述控制器发送报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;所述报文发送指示信息用于使所述控制器在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

上述方案中,所述将所述若干返回报文依次返回后,所述方法还包括:

接收控制器发送的报文发送指示信息更改命令,并根据所述报文发送指示 信息更改命令,将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

一种数据读取方法,所述方法包括:

发送非转发NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;其中,所述数据读取长度满足不超过控制器中的读数据最大缓存值、以及读取数据所在的地址不翻越4K地址界;

接收返回报文。

上述方案中,所述返回报文为Cpld返回报文,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数;

相应的,所述接收返回报文后,所述方法还包括:

根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据时,将所述若干Cpld返回报文中的数据发送给目标设备。

上述方案中,在发送NP存储器读命令之前,所述方法还包括:

接收对端设备发送的报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;

相应的,所述发送NP存储器读命令包括:

在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

上述方案中,在所述报文大小对应的数据接收完成之后,所述方法还包括:

向所述对端设备发送报文发送指示信息更改命令,所述报文发送指示信息更改命令用于指示所述对端设备将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

一种对端设备,包括:

第一接收单元,用于接收非转发NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;

拆分单元,用于在所述第一接收单元接收到的数据读取长度大于超过有效载荷payload长度时,将所述数据读取初始地址和数据读取长度对应的读取数据拆分成数据长度在payload长度以内的若干返回报文;

第一发送单元,用于将所述拆分单元拆分成的若干返回报文依次返回。

上述方案中,所述返回报文为Cpld返回报文;

所述第一发送单元,具体用于将所述拆分单元拆分成的若干Cpld返回报文按照各Cpld返回报文所在地址的顺序依次返回给控制器,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数。

上述方案中,所述第一发送单元,还用于向所述控制器发送报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;所述报文发送指示信息用于使所述控制器在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

上述方案中,所述第一接收单元,还用于接收控制器发送的报文发送指示信息更改命令,并根据所述报文发送指示信息更改命令,将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

一种控制器,包括:

第二发送单元,用于发送非转发NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;其中所述数据读取长度满足不超过控制器中的读数据最大缓存值、以及读取数据所在的地址不翻越4K地址界;

所述第二接收单元,用于接收若干返回报文。

上述方案中,所述返回报文为Cpld返回报文,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数;

所述第二发送单元,还用于在根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据时,将所述若干Cpld返回报文中的数据发送给目标设备。

上述方案中,所述第二接收单元,还用于接收对端设备发送的报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;

所述第二发送单元,具体用于在所述第二接收单元接收的报文发送有效指示信息指示有效时,根据所述第二接收单元接收的所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

上述方案中,所述第二发送单元,还用于向所述对端设备发送报文发送指示信息更改命令,所述报文发送指示信息更改命令用于指示所述对端设备将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

本发明实施例提供的数据读取方法、对端设备及控制器,控制器向对端设备发送的NP存储器读命令,NP存储器读命令中携带的数据读取长度可以足够大,只要满足不超过控制器中的读数据最大缓存值以及读取数据所在的地址不翻越4K地址界即可,数据读取长度可以超过payload长度,与现有技术中所述NP存储器读命令中的所述数据读取长度必须在payload长度以内不同。这样,在目标设备读取相同长度的数据时,应用本发明实施例方法,在读取数据过程中发送的NP存储器读命令的次数就会大大减少,能节省时间,且间接为其他报文的发送增加了带宽,提高了数据传输效率。

附图说明

图1为本发明实施例提供的一种PCIe链路系统的结构框图;

图2为本发明实施例1提供的一种对端设备侧的数据读取方法的流程示意图;

图3为本发明实施例1提供的一种控制器侧的数据读取方法的流程示意图;

图4为本发明实施例2提供的一种数据取方法的流程示意图;

图5为本发明实施例3提供的一种对端设备的结构框图;

图6为本发明实施例3提供的一种控制器的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明实施例中的技术方案是基于如图1所示的PCIe链路系统架构来实施的,如图1所示,所述PCIe链路系统包括对端设备101、协议层设备102、控制器103、目标设备104;其中,

所述对端设备101可以与所述协议层设备102通过高速串行接口形成的PCIe链路(即:高速串行总线SerDes)进行信息的高速、多带宽的点对点通信。具有标准PCIe协议(包括了PCIe 3.0版本及其更低的版本)阐述的所有功能。

协议层设备102,具有PCIe 3.0版本及其更低的版本阐述的所有功能,能实现所述协议版本规定的物理层(PHY,Physical Layer)、数据链路层(DLL,Data Link Layer)和事务层(TL,Transaction Layer)的所有功能,且在所述PHY层包含有PCIe链路功能的高速串行(SerDes)接口,在所述TL层包含具有事务层包(TLP,Transaction Layer Packet)基本结构、形式、特征的包接口(这里称之为TLP接口)。除此之外,所述协议层设备102与其之外的模块、设备(如所述控制器103)或系统之间还可包含有其他类型接口,比如:控制、状态、高性能总线(AHB)、时钟、复位等接口。

控制器103上设置有TLP接口,所述对端设备101与协议层设备102之间通过高速串行接口进行数据交互;协议层设备102与控制器103之间通过各自的TLP接口进行数据交互;控制器103与对端设备101通过协议层设备102进行通信。即:控制器103向对端设备101发送信息时,先将该信息组装成TLP包通过控制器103的TLP接口发送给协议层设备102,协议层设备102的TLP接口接收该TLP包,然后协议层设备102将该TLP包转换成PCIe协议包并通过高速串行接口发送给对端设备101,对端设备101通过高速串行接口接收该PCIe协议包。

目标设备104在需要从对端设备101读取数据时,发送给控制器的数据获 取信号为有效,控制器103检测到数据信号有效时,就通过协议层设备102向对端设备101发送NP存储器读命令,对端设备101根据该NP存储器读命令通过协议层设备102向控制器103返回需要的数据;控制器103再将接收到的数据返回给目标设备104,这样,目标设备104就从对端设备101读取到了数据。

本发明实施例的方法就是基于上述的PCIe链路系统架构来实现的。

实施例1

本发明实施例提供了一种数据读取方法,应用于对端设备一侧,如图2所示,本实施例方法的处理流程包括以下步骤:

步骤201、接收NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度。

目标设备需要从对端设备读取数据时,发送给控制器的数据获取信号为有效,控制器检测到数据信号有效时,就通过协议层设备与对端设备进行交互,获得对端设备发送过来的报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;所述报文发送指示信息用于使所述控制器在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

控制器需要从所述对端设备的报文初始缓存首地址处开始读取所述报文大小的报文,在读取所述报文大小的报文时,所述控制器需要向所述对端设备发送NP存储器读命令,这样对端设备才会根据该NP存储器读命令来读取该报文。

步骤202、在所述数据读取长度超过payload长度时,将所述数据读取初始地址和数据读取长度对应的读取数据拆分成数据长度在payload长度以内的若干返回报文。

所述返回报文可以为Cpld返回报文。

NP存储器读命令中携带有数据读取初始地址和数据读取长度,在本实施例方法中数据读取长度可以超过payload长度,通常情况下,payload长度为0-256B。

在所述数据读取长度超过payload长度时,对端设备会将所述NP存储器读 命令要求读取的读取数据拆分成数据长度在payload长度以内的若干Cpld返回报文。当然在拆分时拆分的Cpld返回报文的大小应该尽量接近payload的长度。

步骤203、将所述若干返回报文依次返回。

由于对端设备向控制器发送的数据的长度必须在payload长度之内,故对端设备通过步骤202将所述NP存储器读命令要求读取的读取数据拆分后,会依次将所述若干Cpld返回报文返回给控制器。

当然,为了保证控制器能够完整地接收到所述NP存储器读命令要求读取的读取数据,所述Cpld返回报文中携带有NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,且所述对端设备会将所述若干Cpld返回报文按照所述Cpld返回报文所在地址的顺序依次返回给控制器。这样控制器可以根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出控制器是否按照顺序依次接收所述若干Cpld返回报文且所述若干Cpld返回报文是否为所述NP存储器读命令对应的全部读取数据。需要说明的是所述Cpld返回报文中携带有NP存储器读命令对应的读取数据中剩余需要返回的报文字节数包括本次Cpld返回报文中读取数据的字节数。

根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据时,确定控制器完全接收到了该NP存储器读命令要求读取的读取数据。然后,控制器就会将所述若干Cpld返回报文中的数据发送给目标设备。

这样目标设备就从对端设备获得了读取数据。在目标设备需要读取的数据比较长的情况下,可以多次进行步骤201-203发送多个NP存储器读命令来从对端设备获得读取数据,这些过程都与现有技术中相同,只是本实施例中每次发送的NP存储器读命令中携带的数据读取长度都可以超过payload长度,这样在目标设备读取相同长度的数据时,应用本实施例方法,在读取数据过程中发送的NP存储器读命令的次数就会大大减少,节省时间,同时间接为其他报文的发送增加了带宽,提高了数据传输效率。

本发明实施例还提供了一种数据读取方法,应用于控制器一侧,如图3所示,本实施例方法的处理流程包括以下步骤:

步骤301、发送NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度。

目标设备需要从对端设备读取数据时,发送给控制器的数据获取信号为有效,控制器检测到数据信号有效时,就通过协议层设备与对端设备进行交互,获得对端设备发送过来的报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;所述报文发送指示信息用于使所述控制器在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

控制器需要从所述对端设备的报文初始缓存首地址处开始读取所述报文大小的报文,在读取所述报文大小的报文时,所述控制器需要向所述对端设备发送NP存储器读命令,这样对端设备才会根据该NP存储器读命令来读取该报文。本实施例方法中所述NP存储器读命令中的所述数据读取长度应该足够大,且满足不超过控制器中的读数据最大缓存值以及读取数据所在的地址不翻越4K地址界。而不是现有技术中的所述NP存储器读命令中的所述数据读取长度必须在payload长度以内。

所述数据读取初始地址以及数据读取长度就限定了读取数据所在的地址,这个地址不能翻越4K地址界,这是本领域技术人员都清楚的一项规则。

步骤302、接收返回报文。

对端设备接收到所述NP存储器读命令,在所述NP存储器读命令中携带的数据读取长度超过payload长度时,将所述NP存储器对应的读取数据拆分成数据长度在payload长度以内的返回报文依次返回给控制器,控制器就接收所述对端设备返回的返回报文。所述返回报文可以是Cpld返回报文。

所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数;这样控制器可以根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出控制器 是否按照顺序依次接收所述若干Cpld返回报文且所述若干Cpld返回报文是否为所述NP存储器读命令对应的全部读取数据。需要说明的是所述Cpld返回报文中携带有NP存储器读命令对应的读取数据中剩余需要返回的报文字节数包括本次Cpld返回报文中读取数据的字节数。。

具体的判断原则是:若本次Cpld返回报文携带的剩余需要返回的报文字节数A要小于上次Cpld返回报文携带的剩余需要返回的报文字节数B,且所述B-A为上次Cpld返回报文携带的读取数据的字节数,则表明控制器是按照顺序依次接收的Cpld返回报文,若本次Cpld返回报文携带的剩余需要返回的报文字节数A等于本次Cpld返回报文携带的读取数据的字节数,则表明控制器依次接收的所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据。

根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据时,确定控制器完全接收到了该NP存储器读命令要求读取的读取数据。然后,控制器就会将所述若干Cpld返回报文中的数据发送给目标设备。

这样目标设备就从对端设备获得了读取数据。在目标设备需要读取的数据比较长的情况下,可以多次进行步骤301-302发送多个NP存储器读命令来从对端设备获得读取数据,本实施例中每次发送的NP存储器读命令中携带的数据读取长度都可以超过payload长度,与现有技术中的所述NP存储器读命令中的所述数据读取长度必须在payload长度以内不同。这样在目标设备读取相同长度的数据时,应用本实施例方法,在读取数据过程中发送的NP存储器读命令的次数就会大大减少,节省时间,且间接为其他报文的发送增加了带宽,提高了数据传输效率。

实施例2、

本发明实施例提供了一种数据读取方法,如图4所示,本实施例方法的处理流程包括以下步骤:

步骤401、控制器接收目标设备发送的有效的数据获取信号后,向对端设备发送携带有报文发送指示信息地址请求消息的第一读命令。

当目标设备需要从对端设备读取数据时,目标设备就向控制器发送有效的数据获取信号,控制器检测到目标设备发送的数据获取信号是有效的后,就会向对端设备发送报文发送指示信息地址请求消息,请求对端设备返回目标设备需要的数据报文对应的报文发送指示信息所在的缓存地址。

在基于PCIe协议总线的系统中,控制器与对端设备之间的通信交互是通过协议层设备进行的,控制器会将发送给对端设备的信息构建成一个所述memory读的包,以TLP包的形式通过控制器的TLP接口发送给协议层设备,协议层设备通过TLP接口接收该TLP包,并将该TLP包转换为PCIe链路包,通过高速串行接口提供的PCIe链路转发给对端设备。

本步骤中的第一读命令可以参考上述过程由控制器发送给对端设备。

步骤402、对端设备向控制器返回报文发送指示信息的第一地址信息。

对端设备会将需要发送给目标设备的报文进行缓存,并将所述报文对应的报文发送指示信息存储在对应的缓存中,所述报文发送指示信息包括报文发送有效指示信息、报文大小和报文初始缓存首地址,其中,报文发送有效指示用于指示所述报文大小和报文初始缓存首地址限定的报文存储地址范围内是否有报文向目标设备发送。

对端设备将发送报文缓存进报文发送指示信息中所述报文大小和报文初始缓存首地址限定的地址范围后,就会将报文发送指示信息中的报文发送有效指示信息由无效设置为有效。

对端设备接收到控制器发送来的报文发送指示信息地址请求消息后,就会将需要发送给目标设备的发送报文对应的报文发送指示信息的第一地址信息返回给控制器。

在基于PCIe协议总线的系统中,对端设备向控制器发送信息时,对端设备会将该信息组装成PCIe链路包通过高速串行接口提供的PCIe链路转发给协议层设备,协议层设备通过高速串行接口接收该PCIe链路包,并将该PCIe链路 包转换为TLP包,通过TLP接口发送给控制器,控制器通过TLP接口接收该TLP包,解析该TLP包后获得对端设备发送的信息。

本步骤中的第一地址信息可以参考上述过程由对端设备发送给控制器。

步骤403、控制器接收所述第一地址信息,并向对端设备发送携带有所述第一地址信息的第二读命令。

控制器接收所述第一地址信息,会通过协议层设备向对端设备发送携带有所述第一地址信息的第二读命令,具体过程参考第一读命令的发送过程。

步骤404、对端设备接收所述携带有所述第一地址信息的第二读命令,并向所述控制器返回所述第一地址信息对应的报文发送指示信息。

所述报文发送指示信息包括报文发送有效指示信息、报文大小和报文初始缓存首地址。其发送过程参考步骤402中第一地址信息的发送过程。

步骤405、所述控制器接收所述报文发送指示信息,并在接收到的所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向所述对端设备发送NP存储器读命令。

控制器接收到报文发送指示信息先查看所述报文发送指示信息中的报文发送有效指示信息指示是否有效,若有效则表明所述报文大小和报文初始缓存首地址限定的报文存储地址范围内有报文向目标设备发送,若无效则表明所述报文大小和报文初始缓存首地址限定的报文存储地址范围内没有报文向目标设备发送,需要发送的报文还没有存储到该地址内,这时,就需要不断地进行步骤403和404,直到控制器接收到报文发送指示信息中的报文发送有效指示信息为有效为止。

控制器在接收到的所述报文发送指示信息中的报文发送有效指示信息指示有效时,就可以根据所述报文大小和报文初始缓存首地址向所述对端设备发送NP存储器读命令。控制器需要从所述对端设备的报文初始缓存首地址处开始读取所述报文大小的报文,在读取所述报文大小的报文时,所述控制器需要向所述对端设备发送NP存储器读命令,这样对端设备才会根据该NP存储器读命令来读取该报文。

所述NP存储器读取命令中携带有数据读取初始地址以及数据读取长度,其中,所述数据读取长度可以足够大,只要满足不超过控制器中的读数据最大缓存值即MAX_READ_REQUEST_SIZE的值(MAX_READ_REQUEST_SIZE可以设置的尽量的大一点比如1KB或者2KB)以及读取数据所在的地址不翻越4K地址界。所述数据读取初始地址以及数据读取长度就限定了读取数据所在的地址,这个地址不能翻越4K地址界。

应用本实施例的方法在读取数据时不需要将NP存储器读命令中的数据读取长度限制在小于payload的条件下,而是数据读取长度能大尽量的大一些。这样根据返回报文的存储地址和长度信息后,生成的NP存储器读命令中的数据读取长度就需要尽量的大一点,只要不超过控制器中的读数据最大缓存值以及读取数据所在的地址不翻越4K地址界就可以,按照这个规则来生成NP存储器读命令的话,对于一个所述报文大小超过2KB的报文需要发出的NP存储器读命令就会少很多(相对现有技术中每次最大256B来说),节省了时间,同时在此读取数据的过程中NP存储器读命令对带宽的占用也会减少,相当于间接为其他报文的发送增加了带宽。

步骤406、对端设备接收NP存储器读命令,在所述NP存储器读命令中携带的数据读取长度超过payload长度时,将所述数据读取初始地址和数据读取长度对应的读取数据拆分成数据长度在payload长度以内的若干Cpld返回报文。

由于对端设备向控制器发送的数据的长度必须在payload长度之内,故对端设备需要将所述NP存储器读命令要求读取的读取数据拆分后成数据长度在payload长度以内的若干Cpld返回报文,才能发送给控制器。

当然在拆分时拆分的Cpld返回报文的大小应该尽量接近payload的长度,还需要遵守不翻越4K地址界以及RCB约束等要求。RCB参数设置可以设置成64B或者128B,RCB约束是指返回的Cpld返回报文中携带的数据长度应该是RCB的整数倍,这是PCIe总线协议中的一个默认规定。

步骤407、控制器接收对端设备发送的若干Cpld返回报文,并在所述NP 存储器命令对应的读取数据拆分的Cpld返回报文接收完成后,向所述目标设备发送所述读取数据。

为了保证控制器能够完整地接收到所述NP存储器读命令要求读取的读取数据,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,且所述对端设备会将所述若干Cpld返回报文按照所述Cpld返回报文所在地址的顺序依次返回给控制器。这样控制器可以根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出控制器是否按照顺序依次接收所述若干Cpld返回报文且所述若干Cpld返回报文是否为所述NP存储器读命令对应的全部读取数据。需要说明的是所述Cpld返回报文中携带有NP存储器读命令对应的读取数据中剩余需要返回的报文字节数包括本次Cpld返回报文中读取数据的字节数。

具体的判断原则是:若本次Cpld返回报文携带的剩余需要返回的报文字节数A要小于上次Cpld返回报文携带的剩余需要返回的报文字节数B,且所述B-A为上次Cpld返回报文携带的读取数据的字节数,则表明控制器是按照顺序依次接收的Cpld返回报文,若本次Cpld返回报文携带的剩余需要返回的报文字节数A等于本次Cpld返回报文携带的读取数据的字节数,则表明控制器依次接收的所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据。

根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据时,确定控制器完全接收到了该NP存储器读命令要求读取的读取数据。然后,控制器就会将所述若干Cpld返回报文中的数据发送给目标设备。

控制器在读取所述报文大小的报文时,第一次向对端设备发送的NP存储器读取命令中的数据读取初始地址为所述报文初始缓存首地址,所述数据读取长度应该小于等于所述报文大小。若所述数据读取长度等于所述报文大小,则表明发送一次NP存储器读取命令就可以读取所述报文大小的报文;若所述数 据读取长度小于所述报文大小,则表明发送一次NP存储器读取命令不能读取所述报文大小的报文,还需要再发送一次或多次NP存储器读取命令才能完全读取所述报文大小的报文,此时就需要再次进行步骤405-407,每次发送NP存储器读取命令都要等上次NP存储器读取命令要求读取的报文读取完成才能发送。

每次发送的NP存储器读取命令中的数据读取初始地址都根据上次NP存储器读取命令要求读取的报文的地址设置,即上次NP存储器读取命令中数据读取初始地址为N,数据读取长度为D,则本次NP存储器读取命令中的数据读取初始地址为N+D+1,这些地址计算过程都与现有技术中相同。NP存储器读取命令中的数据读取长度要满足不超过控制器中的读数据最大缓存值以及读取数据所在的地址不翻越4K地址界。

这样不断进行步骤405-407,直到所述报文大小的报文全部发送给控制器为止。控制器将最后一个NP存储器读取命令对应的读取数据接收完成并发送给目标设备后,会向目标设备发送一个报文发送完成消息,通知目标设备报文已经读取完成可以使用了。

步骤408、在所述报文大小对应的数据接收完成之后,所述控制器向所述对端设备发送报文发送指示信息更改命令。

步骤409、所述对端设备根据报文发送指示信息更改命令将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

这样,当下一个需要发送给目标设备的报文进行缓存时,就可以将该报文缓存到报文发送有效指示信息更改为无效的报文发送指示信息限定的地址中。

实施例3、

本发明实施例提供了一种对端设备,如图5所示,所述对端设备包括:第一接收单元501、拆分单元502、第一发送单元503,其中,

第一接收单元501,用于接收NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;

拆分单元502,用于在所述第一接收单元501接收到的数据读取长度大于 超过有效载荷payload长度时,将所述数据读取初始地址和数据读取长度对应的读取数据拆分成数据长度在payload长度以内的若干返回报文;

第一发送单元503,用于将所述拆分单元502拆分成的若干返回报文依次返回。

可选的,所述返回报文为Cpld返回报文;第一发送单元503,具体用于将所述拆分单元502拆分成的若干Cpld返回报文按照各Cpld返回报文所在地址的顺序依次返回给控制器,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数。

所述第一发送单元503,还用于向所述控制器发送报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;所述报文发送指示信息用于使所述控制器在所述报文发送有效指示信息指示有效时,根据所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

所述第一接收单元501,还用于接收控制器发送的报文发送指示信息更改命令,并根据所述报文发送指示信息更改命令,将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

本发明实施例还提供了一种控制器,如图6所示,所述控制器包括:第二发送单元601、第二接收单元602,其中,

第二发送单元601,用于发送NP存储器读命令,所述NP存储器读命令中携带有数据读取初始地址和数据读取长度;其中所述数据读取长度满足不超过控制器中的读数据最大缓存值、以及读取数据所在的地址不翻越4K地址界;

所述第二接收单元602,用于接收若干返回报文。

所述返回报文为Cpld返回报文,所述Cpld返回报文中携带有所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数;所述第二发送单元601,还用于在根据所述Cpld返回报文中携带的所述NP存储器读命令对应的读取数据中剩余需要返回的报文字节数,判断出按照顺序依次接收若干Cpld返回报文且所述若干Cpld返回报文为所述NP存储器读命令对应的全部读取数据 时,将所述若干Cpld返回报文中的数据发送给目标设备。

所述第二接收单元601,还用于接收对端设备发送的报文发送指示信息,所述报文发送指示信息中携带有报文发送有效指示信息、报文大小和报文初始缓存首地址;

所述第二发送单元602,具体用于在所述第二接收单元601接收的报文发送有效指示信息指示有效时,根据所述第二接收单元601接收的所述报文大小和报文初始缓存首地址向对端设备发送所述NP存储器读命令。

所述第二发送单元602,还用于向所述对端设备发送报文发送指示信息更改命令,所述报文发送指示信息更改命令用于指示所述对端设备将所述报文发送指示信息中的报文发送有效指示信息更改为无效。

在实际应用中,第一接收单元501、拆分单元502、第一发送单元503可以由位于对端设备上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。第二发送单元601、所述第二接收单元602可以由位于控制器上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1