一种基于FPGA的高效通用内存数据搬移装置的制作方法

文档序号:37555287发布日期:2024-04-09 17:45阅读:9来源:国知局
一种基于FPGA的高效通用内存数据搬移装置的制作方法

本发明属于数据通信,具体涉及一种基于fpga的高效通用内存数据搬移装置。


背景技术:

1、随着ai/大数据分析等海量数据应用发展,传统以cpu为核心的计算体系面临着巨大的挑战。随着摩尔定律影响日渐削弱,单纯cpu处理能力已无法满足当前和未来数据中心算力需求,更多的异构计算单元(如fpga、ai芯片、cpu、dpu等)也逐步走到数据中心计算体系架构的中心舞台,为数据中心算力/算效提升发挥着越来越重要的作用。在异构计算体系中不同异构计算单元内存之间数据搬移效率是整个异构计算系统计算效率的关键。传统内存数据搬移的方案可以分为两类:

2、cpu软件方案:即在内存统一编址架构下,通过cpu软件编程方式将数据从一个内存空间拷贝到另外一个内存空间。该方案的优势是通用灵活,缺点是在大量数据搬移场景cpu的消耗是巨大的,在当前数据中心应用场景下基本不可行。

3、硬件dma方案:即提供一个片上硬件dma组件,cpu通过特定的交互机制,将数据搬移的内存地址和数据长度传递到片上硬件dma组件,片上硬件dma组件根据内存地址和长度实现内存数据搬移后,再通过交互机制(中断或是队列交互机制)通知cpu,从而完成内存数据搬移。该方案的优点是数据搬移的速度快效率高,而且片上dma硬件组件执行搬移过程,不消耗cpu算力。典型的有amd的xdma/qdma方案。这类片上硬件dma的方案以下几个问题:

4、一是dma交互协议深度定制,通用性不足;二是dma大多只支持单向操作,即数据只在用户端和内存端之间进行数据搬移。内存之前的数据搬移依赖用户侧进行搬移,降低了搬移效率;三是缺乏有效调度机制,多通道访问效率存在瓶颈。


技术实现思路

1、本发明的目的是提供一种基于fpga的高效通用内存数据搬移装置,能够实现不同需求场景的灵活配置,且数据搬移装置和用户协议解耦,可以被不同应用集成,而不需要关心具体的用户协议,另外能够保证内存读写的高效性。

2、本发明采取的技术方案具体如下:

3、一种基于fpga的高效通用内存数据搬移装置,包括用户代理组件、内存代理组件以及数据包交换组件:

4、所述数据包交换组件用于接收用户代理组件/内存代理组件上行的请求或是响应数据包,根据目的端口地址将数据包下行转发到对应的端口;

5、所述用户代理组件,所述用户代理组件接收用户请求,并对用户请求进行处理后,将数据包发送至数据包交换组件的上行端口,用于实现多用户内存访问;

6、所述内存代理组件用于从数据包交换组件的下行端口中获取数据包并进行解析,对解析后的数据包进行内存事务处理后,将数据包发发送至数据包交换组件的上行端口,其中,所述内存事务处理包括写事务操作、读事务操作以及拷贝事务操作;

7、且,所述用户代理组件从数据包交换组件的下行端口获取经内存事务处理后的数据包,并将数据包返回给用户。

8、在一种优选方案中,所述发用户代理组件包括:

9、第一发送侧,所述第一发送侧用于为每个用户分配1个请求者id,并为每个用户的请求分配一个事务id,且所述请求者之间相互独立,同一个请求者不同事务相互独立,其中,所述用户代理组件根据配置数据包大小对用户请求进行切分,然后根据内存访问地址查找地址端口映射表,获取对应内存代理节点端口号,根据数据报文封装格式将数据包封装后发送到数据包交换组件上行端口;

10、第一接收侧,所述第一接收侧用于从数据包交换组件的下行端口获取内存事务处理后的数据包,进行解析后根据请求者id将数据包分发到对应用户的接收处理逻辑进行处理,其中,用户接收处理逻辑根据数据事务类型,事务id查找该事务的上下文信息,同时根据数据包序列号对同一个事务内部的数据报文进行排序后,将数据返回用户。

11、在一种优选方案中,所述内存代理组件分为pcie接口内存代理和ddr接口内存代理,所述pcie接口内存代理和ddr接口内存代理分别对接pcie接口控制器和ddr控制器。

12、在一种优选方案中,所述内存代理组件包括:

13、第二接收侧,所述第二接收侧用从数据包交换组件下行端口获取数据包并进行解析,提取内存操作信息,根据内存操作类型,进行内存事务处理,所述内存事务处理包括写事务操作、读事务操作或拷贝事务操作,其中,所述拷贝事务操作需根据写地址查找地址端口映射表,若端口等于本地端口,则将读回的数据包封装成写操作,返回到当前内存代理组件的接收缓冲区;

14、第二发送侧,所述第二发送侧用于根据事务处理类型构造应答报文并发送至数据交换组件的上行端口。

15、在一种优选方案中,所述数据包交换组件的上行侧提供上行缓冲区,缓存端口上行数据包根据数据包目的端口号转发到对应端口下行缓冲区,所述数据包交换组件的下行侧提供多个独立下行缓冲区,用户缓存不同端口转发数据,对多个缓冲区数据进行调度后发送到对应节点。

16、在一种优选方案中,所述第二接收侧在进行内存事务处理前对数据包进行解封装,用于剥离数据包头,提取内存操作信息、transaction信息以及数据净荷。

17、在一种优选方案中,所述写事务操作用于根据写地址和写数据长度,将写数据写入内存中。

18、在一种优选方案中,所述读事务操作用于根据读地址和读数据长度,从内存中读取数据。

19、在一种优选方案中,所述拷贝事务操作用于根据读地址和读数据长度,从内存中读取数据,根据写地址查表获取port id,若和当前内存代理port id相同则根据构造copywrite报文,内部转发到写事务处理逻辑,若和当前内存代理port id不相同,则需要转发到对应的内存代理组件。

20、在一种优选方案中,所述第二发送侧根据事务处理类型构造应答报文并发送至数据交换组件的上行端口具体包括:

21、读事务应答:根据requester id查表获得用户对应的port id,构造应答报文上行转发到数据包交换组件;

22、写事务应答:根据requester id查表获得用户对应的port id,把读回的数据封装成应答报文上行转发到数据包交换组件;

23、copy事务请求:根据requester id查表获得用户对应的port id,构造应答报文上行转发到数据包交换组件。

24、本发明取得的技术效果为:

25、本发明中在架构设计上采用了分层的方式;事务层、数据交换层、内存层代理组件相互独立,并可以独立升级扩展;通过增加/减少交换端口和代理组件数量,以及端口配置表项,可以实现不同需求场景的灵活配置。

26、本发明中通过数据搬移系统和用户协议解耦,可以被不同应用集成,而不需要关心具体的用户协议。

27、本发明中通过对用户请求按照配置粒度进行切分,并根据带宽分配机制对不同用户进行调度,确保每个用户的访问的带宽,相互不影响;此外内存代理只负责内存读写操作,不需要关心事务层数据的顺序或其他依赖关系,则可以保证内存读写的高效性;而事务层基于事务维护事务内部的数据依赖关系,事务之间相互独立,互不影响,从而确保事务高效处理。

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