PCIE-SRIO数据交互处理方法与流程

文档序号:26050366发布日期:2021-07-27 15:25阅读:1438来源:国知局
PCIE-SRIO数据交互处理方法与流程

本发明涉及pcie接口领域,特别涉及一种pcie-srio数据交互处理方法。



背景技术:

国产cpu对外提供的高速总线接口多为pcie接口,在实际的工程项目应用中还需要使用srio等高速总线,目前国内还没有成熟的高速pcie-srio接口转换芯片能够完全满足工程项目需求,公司将采用国产fpga实现高速pcie-srio桥,满足国产cpu的工程应用中多种高速总线接口的特殊需求,使用国产化的硬件平台,确保信息安全。

常用的国外专用pcie-srio桥芯片,如idt公司的tsi721芯片,通常采用dma(directmemoryaccess,直接存储器访问)的形式进行数据交互,该方式虽然可以有效降低处理器的负担,但是在使用过程中并不能有效降低程序的开发难度和复杂度(如链表指针的维护)。



技术实现要素:

本发明提供了一种pcie-srio数据交互处理方法,以解决至少一个上述技术问题。

为解决上述问题,作为本发明的一个方面,提供了一种pcie-srio数据交互处理方法,包括:在处理器的内存空间划分容量为128mb的空间用于数据,为nwrite/nread/message/swrite各划分16mb的空间;

其中,nwrite为srio协议中的写事务,其作用是向目标设备的存储器指定地址中写入数据;

nread为srio协议中的读事务,其作用是从目标设备的存储器指定地址中读出数据;

message为srio协议中的消息事务,在某些情况下,本地设备不具备访问目标设备的存储器的能力,通过消息(message)可以实现数据从本地设备到目标设备的传递;

swrite为srio协议中的大数据流写事务,其作用是通过类dma操作的方式来实现高效的大数据量迁移。

优选地,nwrite操作时,其内部16mb空间以1024字节为单位划分为16384个存储单元,包括以下操作步骤:

步骤11,处理器写入需要发送的数据目标地址、数据包大小和数据内容写入到nwrite内存的第n个存储单元;

步骤12,处理器通过控制与状态处理单元通知系统有nwrite类型的操作需要处理;

步骤13,系统通过axi_mm主接口单元从nwrite内存的第n个存储单元中读取数据并发送给nwrite处理单元;

步骤14,nwrite处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

步骤15,数据发送成功,通过控制与状态处理单元通知处理器;数据发送失败,通过控制与状态处理单元通知处理器;

步骤16,无论nwrite发送数据成功/失败,系统内部的nwrite操作计数器自动完成加1操作,以便于下次进行nwrite操作时自动从第n+1个存储单元获取数据(当当前处理的nwrite存储单元为16384时,则下一次处理的存储单元为1)。

优选地,nread操作时,其内部16mb空间以1024字节为单位划分为16384个存储单元,包括以下操作步骤:

步骤21,处理器写入需要读取的数据目标地址、数据包大小和数据内容写入到nread内存的第n个存储单元;

步骤22,处理器通过控制与状态处理单元通知系统有nread类型的srio操作需要处理;

步骤23,系统通过axi_mm主接口单元从nread内存的第n个存储单元中读取数据并发送给nread处理单元;

步骤24,nread处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

步骤25,远端设备通过srio接口将读取的数据结果发送给nread处理单元;

步骤26,nread处理单元将数据按照nread存储单元的数据存储结构进行打包处理;

步骤27,通过axi_mm主接口处理单元将nread处理单元打包好的数据写回到nread的第n个存储单元;

步骤28,通过控制与状态处理单元通知处理器nread操作完成;

步骤29,如果在超时时间内未接收到远端设备所返回的nread数据,通过控制与状态处理单元通知处理器nread操作超时;

步骤210,无论nread操作成功/失败,系统内部的nread操作计数器自动完成加1操作,以便于下次进行nread操作时自动从第n+1个存储单元获取数据(当当前处理的nread存储单元为16384时,则下一次处理的存储单元为1)。

优选地,message操作时,其内部16mb空间以8192字节为单位划分为2048个存储单元,包括以下操作步骤:

步骤31,处理器写入message的邮箱号、优先级和数据内容写入到message内存的第n个存储单元;

步骤32,处理器通过控制与状态处理单元通知系统有message类型的srio操作需要处理;

步骤33,系统通过axi_mm主接口单元从message内存的第n个存储单元中读取数据并发送给message处理单元;

步骤34,message处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

步骤35,远端设备通过srio接口将message接收应答发送给message处理单元;

步骤36,当所有message分段发送并得到响应后,message处理单元通过控制与状态处理单元通知处理器message操作完成;

步骤37,如果在超时时间内未接收到远端设备所返回的message应答,通过控制与状态处理单元通知处理器message操作超时;

步骤38,无论message操作成功/失败,系统内部的message操作计数器自动完成加1操作,以便于下次进行message操作时自动从第n+1个存储单元获取数据(当当前发送的message存储单元为2048时,则下一次处理的存储单元为1)。

优选地,swrite操作时,其内部16mb空间以1m字节为单位划分为16个存储单元,包括以下操作步骤:

步骤41,处理器写入swrite的目标地址、优先级和数据内容写入到swrite内存的第n个存储单元;

步骤42,处理器通过控制与状态处理单元通知系统有swrite类型的srio操作需要处理;

步骤43,系统通过axi_mm主接口单元从swrite内存的第n个存储单元中读取数据并发送给swrite处理单元;

步骤44,swrite处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

步骤45,数据发送成功,通过控制与状态处理单元通知处理器;数据发送失败,通过控制与状态处理单元通知处理器;

步骤46,无论swrite发送数据成功/失败,系统内部的swrite操作计数器自动完成加1操作,以便于下次进行swrite操作时自动从第n+1个存储单元获取数据(当当前处理的swrite存储单元为8时,则下一次处理的存储单元为1)。

由于采用了上述技术方案,本发明在不增加处理器负担的同时,可有效的降低程序的开发难度和复杂度。

附图说明

图1示意性地示出了pcie-srio内部实现框图;

图2示意性地示出了128mb存储空间划分示意图。

具体实施方式

以下对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。

本文提出了一种pcie-srio数据交互处理方式,在不增加处理器负担的同时,可有效的降低程序的开发难度和复杂度。

其中,nwrite/nread/message/swrite/maintenance/doorbell是srio总线的协议类型。

nwrite,srio协议中的写事务,其作用是向目标设备的存储器指定地址中写入数据;

nread,srio协议中的读事务,其作用是从目标设备的存储器指定地址中读出数据;

swrite,srio协议中的大数据流写事务,其作用是通过类dma操作的方式来实现高效的大数据量迁移;

message,srio协议中的消息事务,在某些情况下,本地设备不具备访问目标设备的存储器的能力,通过消息(message)可以实现数据从本地设备到目标设备的传递;

maintenacne,srio协议中的维护事务,用于配置/读取目标设备的维护寄存器的维护寄存器;

doorbell,srio协议中的门铃事务,本地设备用该事务将非常短的消息发送到目标设备,类似中处理器中的中断。

在处理器的内存空间划分容量为128mb的空间用于数据,为nwrite/nread/message/swrite各划分16mb的空间。

nwrite操作时,其内部16mb空间以1024字节为单位划分为16384个存储单元,nwrite的具体操作步骤:

1)处理器写入需要发送的数据目标地址、数据包大小和数据内容写入到nwrite内存的第n个存储单元;

2)处理器通过控制与状态处理单元通知系统有nwrite类型的操作需要处理;

3)系统通过axi_mm主接口单元从nwrite内存的第n个存储单元中读取数据并发送给nwrite处理单元;

4)nwrite处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

5)数据发送成功,通过控制与状态处理单元通知处理器;数据发送失败,通过控制与状态处理单元通知处理器;

6)无论nwrite发送数据成功/失败,系统内部的nwrite操作计数器自动完成加1操作,以便于下次进行nwrite操作时自动从第n+1个存储单元获取数据(当当前处理的nwrite存储单元为16384时,则下一次处理的存储单元为1)。

nread操作时,其内部16mb空间以1024字节为单位划分为16384个存储单元,nread的具体操作步骤:

1)处理器写入需要读取的数据目标地址、数据包大小和数据内容写入到nread内存的第n个存储单元;

2)处理器通过控制与状态处理单元通知系统有nread类型的srio操作需要处理;

3)系统通过axi_mm主接口单元从nread内存的第n个存储单元中读取数据并发送给nread处理单元;

4)nread处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

5)远端设备通过srio接口将读取的数据结果发送给nread处理单元;

6)nread处理单元将数据按照nread存储单元的数据存储结构进行打包处理;

7)通过axi_mm主接口处理单元将nread处理单元打包好的数据写回到nread的第n个存储单元;

8)通过控制与状态处理单元通知处理器nread操作完成;

9)如果在超时时间内未接收到远端设备所返回的nread数据,通过控制与状态处理单元通知处理器nread操作超时;

10)无论nread操作成功/失败,系统内部的nread操作计数器自动完成加1操作,以便于下次进行nread操作时自动从第n+1个存储单元获取数据(当当前处理的nread存储单元为16384时,则下一次处理的存储单元为1)。

message操作时,其内部16mb空间以8192字节为单位划分为2048个存储单元,message的具体操作步骤:

1)处理器写入message的邮箱号、优先级和数据内容写入到message内存的第n个存储单元;

2)处理器通过控制与状态处理单元通知系统有message类型的srio操作需要处理;

3)系统通过axi_mm主接口单元从message内存的第n个存储单元中读取数据并发送给message处理单元;

4)message处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

5)远端设备通过srio接口将message接收应答发送给message处理单元;

6)当所有message分段发送并得到响应后,message处理单元通过控制与状态处理单元通知处理器message操作完成;

7)如果在超时时间内未接收到远端设备所返回的message应答,通过控制与状态处理单元通知处理器message操作超时;

8)无论message操作成功/失败,系统内部的message操作计数器自动完成加1操作,以便于下次进行message操作时自动从第n+1个存储单元获取数据(当当前发送的message存储单元为2048时,则下一次处理的存储单元为1)。

swrite操作时,其内部16mb空间以1m字节为单位划分为16个存储单元,swrite的具体操作步骤:

1)处理器写入swrite的目标地址、优先级和数据内容写入到swrite内存的第n个存储单元;

2)处理器通过控制与状态处理单元通知系统有swrite类型的srio操作需要处理;

3)系统通过axi_mm主接口单元从swrite内存的第n个存储单元中读取数据并发送给swrite处理单元;

4)swrite处理单元对数据进行解析,按照srio协议所要求的格式进行打包并发送给srio接口;

5)数据发送成功,通过控制与状态处理单元通知处理器;数据发送失败,通过控制与状态处理单元通知处理器;

6)无论swrite发送数据成功/失败,系统内部的swrite操作计数器自动完成加1操作,以便于下次进行swrite操作时自动从第n+1个存储单元获取数据(当当前处理的swrite存储单元为8时,则下一次处理的存储单元为1)。

由于采用了上述技术方案,本发明在不增加处理器负担的同时,可有效的降低程序的开发难度和复杂度。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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