System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种用于PCIe switch的数据搬运方法和装置制造方法及图纸_技高网

一种用于PCIe switch的数据搬运方法和装置制造方法及图纸

技术编号:42435212 阅读:14 留言:0更新日期:2024-08-16 16:45
本申请提供了一种用于PCIe switch的数据搬运方法和装置,该方法包括:在PCIe switch的虚拟端点设备中配置DMA引擎,通过主机访问所述虚拟端点设备的基地址寄存器空间,向所述DMA引擎递交DMA数据搬运任务;利用所述DMA引擎从主机内存中的任务递交队列中取出任务描述符,获取所述任务描述符中的源地址和目的地址,当从所述源地址读取待搬运数据并写入所述目的地址时,将对应的完成描述符加入主机内存中的任务完成队列;根据所述任务递交队列和任务完成队列的状态,完成所述DMA数据搬运任务。本申请的技术方案在实现DMA搬运的同时,减少了主机对PCIe switch的寄存器的访问次数。

【技术实现步骤摘要】

本申请属于高速互联领域,特别涉及一种用于pcie switch的数据搬运方法和装置。


技术介绍

1、pcie链路使用端到端的数据传送,一个pcie链路的一端只能接一个设备。为了扩展多个设备,引入了pcie switch,使得一个rc(root complex)可以下联多个端点设备ep(endpoint)。pcie的典型拓扑如图1所示。

2、switch内部的逻辑如图2所示。一个pcie switch具有与rc直接或者间接相连的一个上游端口up和多个下游端口dp。dp与ep相连,或者与下一级switch相连。switch内部由多个虚拟pci-pci桥组成,每一个up和dp都对应一个虚拟pci-pci桥,并且符合pci桥的标准定义,具有各自的配置空间。switch转发业务也同样使用pci桥的机制。rc与ep之间的业务在经过switch转发时,系统软件不感知。switch可以转发cpu与ep之间的业务以及ep与ep之间的p2p业务。

3、相关技术中,dma引擎可以通过switch内部的虚拟ep实现,用于不同的ep之间或者主机和ep之间的数据搬运,例如ssd盘中的dma,负责将数据从主机内存中读取并写入ssd盘中,或者反向将ssd盘中的数据写入主机内存。使用两个任务队列分别表示提交任务队列和任务完成队列,并分别使用head指针和tail指针来表示当前队列提交和完成的位置。主机通过访问switch内部的ep的寄存器来获取head和tail指针。例如在提交队列中,cpu提交任务给dma引擎,dma引擎处理提交任务,需要修改head和tail指针。同理,在完成队列中,cpu获取dma处理的任务,也是通过访问寄存器得到tail和head指针,实现不同种类ep之间或ep与主机之间的数据搬运,但该方法需要cpu频繁访问switch内部寄存器。

4、此外,由于每种ep设备其硬件设计的不同,并非所有ep设备都有dma,有dma的ep设备其接口与实现也不相同,内核无法提供统一的接口,导致不同设备的dma驱动不同,同种设备的dma也只能处理它本身的数据搬运。


技术实现思路

1、本申请的目的在于提供一种用于pcie switch的数据搬运方法和装置,旨在在实现dma搬运的同时,减少了主机对pcie switch的寄存器的访问次数。

2、根据本申请的第一方面,提供了一种用于pcie switch的数据搬运方法,包括:

3、在pcie switch的虚拟端点设备中配置dma引擎,通过主机访问所述虚拟端点设备的基地址寄存器空间,向所述dma引擎递交dma数据搬运任务;

4、利用所述dma引擎从主机内存中的任务递交队列中取出任务描述符,获取所述任务描述符中的源地址和目的地址,当从所述源地址读取待搬运数据并写入所述目的地址时,将对应的完成描述符加入主机内存中的任务完成队列;

5、根据所述任务递交队列和任务完成队列的状态,完成所述dma数据搬运任务。

6、在一种可能的实现方式中,在从主机内存中的任务递交队列中取出任务描述符之前,还包括:

7、在主机内存中为任务递交队列和任务完成队列申请内存空间,将内存地址和大小写入所述虚拟端点设备的基地址寄存器空间映射的寄存器中,初始化所述任务递交队列和任务完成队列的头指针和尾指针。

8、在一种可能的实现方式中,所述向所述dma引擎递交dma数据搬运任务,进一步包括:

9、将任务描述符单元写入所述任务递交队列,更新所述任务递交队列的尾指针,并将更新后的尾指针写入所述虚拟端点设备的基地址寄存器空间映射的寄存器中,完成任务递交。

10、在一种可能的实现方式中,所述利用所述dma引擎从主机内存中的任务递交队列中取出任务描述符,进一步包括:

11、当取出所述任务描述符单元并处理完成时,更新所述头指针,直到所述头指针和所述尾指针的值相等,即处理完所有的任务描述符单元。

12、在一种可能的实现方式中,在将对应的完成描述符加入主机内存中的任务完成队列之后,进一步包括:

13、更新所述任务完成队列的尾指针,将更新后的尾指针写入所述虚拟端点设备的基地址寄存器空间映射的寄存器中,同时上报中断通知主机。

14、根据本申请的第二方面,提供了一种用于pcie switch的数据搬运装置,包括:

15、递交单元,用于在pcie switch的虚拟端点设备中配置dma引擎,通过主机访问所述虚拟端点设备的基地址寄存器空间,向所述dma引擎递交dma数据搬运任务;

16、搬运单元,用于利用所述dma引擎从主机内存中的任务递交队列中取出任务描述符,获取所述任务描述符中的源地址和目的地址,当从所述源地址读取待搬运数据并写入所述目的地址时,将对应的完成描述符加入主机内存中的任务完成队列;

17、完成单元,用于根据所述任务递交队列和任务完成队列的状态,完成所述dma数据搬运任务。

18、相比于相关技术,本申请的技术方案至少具备以下优点:

19、不需要主机访问pcie switch内部的vep的bar空间映射的寄存器,而仅需要访问主机侧的内存,根据内存中下一个tce的完成标记的变化来感知是否有新的tce,以获取dma引擎的搬运结果,减少了主机访问pcie switch的寄存器的次数,从而提高了数据搬运性能。

20、本申请的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。

本文档来自技高网...

【技术保护点】

1.一种用于PCIe switch的数据搬运方法,其特征在于,包括:

2.根据权利要求1所述的用于PCIe switch的数据搬运方法,其特征在于,在从主机内存中的任务递交队列中取出任务描述符之前,还包括:

3.根据权利要求2所述的用于PCIe switch的数据搬运方法,其特征在于,所述向所述DMA引擎递交DMA数据搬运任务,进一步包括:

4.根据权利要求3所述的用于PCIe switch的数据搬运方法,其特征在于,所述利用所述DMA引擎从主机内存中的任务递交队列中取出任务描述符,进一步包括:

5.根据权利要求4所述的用于PCIe switch的数据搬运方法,其特征在于,在将对应的完成描述符加入主机内存中的任务完成队列之后,进一步包括:

6.一种用于PCIe switch的数据搬运装置,其特征在于,包括:

7.根据权利要求6所述的用于PCIe switch的数据搬运装置,其特征在于,所述搬运单元,进一步用于:

8.根据权利要求7所述的用于PCIe switch的数据搬运装置,其特征在于,所述递交单元,进一步用于:

9.根据权利要求8所述的用于PCIe switch的数据搬运装置,其特征在于,所述搬运单元,进一步用于:

10.根据权利要求9所述的用于PCIe switch的数据搬运装置,其特征在于,所述搬运单元,进一步用于:在将对应的完成描述符加入主机内存中的任务完成队列之后,更新所述任务完成队列的尾指针,将更新后的尾指针写入所述虚拟端点设备的基地址寄存器空间映射的寄存器中,同时上报中断通知主机。

...

【技术特征摘要】

1.一种用于pcie switch的数据搬运方法,其特征在于,包括:

2.根据权利要求1所述的用于pcie switch的数据搬运方法,其特征在于,在从主机内存中的任务递交队列中取出任务描述符之前,还包括:

3.根据权利要求2所述的用于pcie switch的数据搬运方法,其特征在于,所述向所述dma引擎递交dma数据搬运任务,进一步包括:

4.根据权利要求3所述的用于pcie switch的数据搬运方法,其特征在于,所述利用所述dma引擎从主机内存中的任务递交队列中取出任务描述符,进一步包括:

5.根据权利要求4所述的用于pcie switch的数据搬运方法,其特征在于,在将对应的完成描述符加入主机内存中的任务完成队列之后,进一步包括:

6.一...

【专利技术属性】
技术研发人员:刘伟李正杰苏海亮陈帮平陈楚冠
申请(专利权)人:无锡众星微系统技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1