直接内存访问控制器、异构设备、内存访问方法及介质转让专利

申请号 : CN202310362884.4

文献号 : CN116069711B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王洪良牟奇刘伟李仁刚

申请人 : 浪潮电子信息产业股份有限公司

摘要 :

本申请公开了一种直接内存访问控制器、异构设备、内存访问方法及介质,涉及内存访问技术领域。该直接内存访问控制器包括:多个读描述符管理模块、多个写描述符管理模块、读数据搬移器和写数据搬移器;一个读描述符管理模块/写描述符管理模块对应一个物理功能/虚拟功能的管理通道;读描述符管理模块用于将描述符寄存器中内容转换为读描述符,将读描述符数据转换为读描述符;写描述符管理模块用于将写描述符数据转换为写描述符;读数据搬移器用于根据读描述符向上位机发送读请求,接收读请求对应的第一数据并进行数据处理;写数据搬移器用于根据写描述符读取对应的第二数据,基于第二数据生成写请求发送给上位机。能支持单根I/O虚拟化。

权利要求 :

1.一种直接内存访问控制器,其特征在于,包括多个读描述符管理模块、多个写描述符管理模块、读数据搬移器和写数据搬移器;其中,一个所述读描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道,一个所述写描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道;

所述读描述符管理模块用于将获取的描述符寄存器中内容转换为读描述符,以及将读描述符数据转换为读描述符;

所述写描述符管理模块用于将写描述符数据转换为写描述符;

所述读数据搬移器用于根据所述读描述符向上位机发送读请求,以及接收所述读请求对应的第一数据并进行数据处理;

所述写数据搬移器用于根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机;

其中,所述读描述符管理模块包括寄存器转描述符单元和第一数据转描述符单元;

所述寄存器转描述符单元用于获取读描述符寄存器和写描述符寄存器,并将寄存器中内容转换为符合握手协议的读描述符;

所述第一数据转描述符单元用于获取读描述符数据,并将所述读描述符数据转换为符合握手协议的读描述符;

其中,所述写描述符管理模块还包括第一合并单元和第一先进先出存储器;

所述第一合并单元用于将所述寄存器转描述符单元输出的读描述符和所述数据转描述符单元输出的读描述符按包轮询合并;

所述第一先进先出存储器用于缓存所述第一合并单元输出的读描述符并发送给所述读数据搬移器。

2.根据权利要求1所述的直接内存访问控制器,其特征在于,所述写描述符管理模块还包括判断单元;

所述判断单元用于获取所述写数据搬移器发送的写完成信息组、所述读数据搬移器发送的读完成信息组、所述读描述符寄存器和写描述符寄存器,并根据所述写完成信息组/所述读完成信息组生成针对相关的物理功能/虚拟功能的中断,以及生成针对相关的描述符的完成状态信息。

3.根据权利要求1所述的直接内存访问控制器,其特征在于,还包括:与所述读描述符管理模块和所述读数据搬移器相连的第二合并单元,用于按包轮询合并每个所述读描述符管理模块输出的读描述符并转发给所述读数据搬移器。

4.根据权利要求1所述的直接内存访问控制器,其特征在于,还包括与所述上位机和所述写描述符管理模块相连的第一协议转换模块;

所述第一协议转换模块用于将接收到的高性能扩展总线协议的事务层数据包转换为外围总线协议的事务层数据包;

所述第一协议转换模块上包含完成者请求接口和完成者完成接口,所述完成者请求接口用于接收上位机发送的请求包,所述完成者完成接口用于向上位机返回完成包。

5.根据权利要求4所述的直接内存访问控制器,其特征在于,所述第一协议转换模块包括请求接收单元、协议转换单元和带数据的完成包发送单元;

所述请求接收单元用于通过所述完成者请求接口接收并解析所述请求包,并将解析后请求数据转换为握手协议的请求数据;

所述协议转换单元用于将所述握手协议的请求数据转换为外围总线协议的请求数据,并通过外围总线发送给对应的所述读描述符管理模块;

所述带数据的完成包发送单元用于组装带数据的完成包并发送给上位机。

6.根据权利要求4所述的直接内存访问控制器,其特征在于,还包括与所述第一协议转换模块相连的第二协议转换模块;

所述第二协议转换模块用于将外围总线协议的数据包转换为高性能扩展总线协议的数据包,以便业务模块总线互联。

7.根据权利要求1所述的直接内存访问控制器,其特征在于,所述写描述符管理模块包括第二数据转描述符单元和第二先进先出存储器;

所述第二数据转描述符单元用于获取写描述符数据,并将所述写描述符数据转换为符合握手协议的写描述符;

所述第二先进先出存储器用于缓存所述第二数据转描述符单元输出的写描述符并发送给所述写数据搬移器。

8.根据权利要求1所述的直接内存访问控制器,其特征在于,还包括:与所述写描述符管理模块和所述写数据搬移器相连的第三合并单元,用于按包轮询合并每个所述写描述符管理模块输出的写描述符并转发给所述写数据搬移器。

9.根据权利要求1所述的直接内存访问控制器,其特征在于,还包括:描述符状态上传模块用于将所述读描述符和所述写描述符完成后的状态信息转换为写请求类型的事务层数据包发送给上位机。

10.根据权利要求1所述的直接内存访问控制器,其特征在于,还包括:与所述读数据搬移器、所述写数据搬移器以及外部存储器相连的第三协议转换模块,用于将所述读数据搬移器和所述写数据搬移器分别与所述外部存储器传输的数据转换为高性能扩展总线协议。

11.根据权利要求1所述的直接内存访问控制器,其特征在于,所述写数据搬移器包括写运算控制单元、第三先进先出存储器、写请求发送单元、发送控制单元、读控制单元;

所述写运算控制单元用于接收写描述符并将所述写描述符拆分为写目的地址和写数据长度,以及将所述写描述符发送给所述读控制单元;

所述读控制单元用于根据所述写描述符从外部存储器读取相应的第二数据,并将所述第二数据发送给所述写请求发送单元;

所述写请求发送单元用于基于所述读控制单元发送的所述第二数据生成事务层数据包,并将该事务层数据包发送给所述发送控制单元;

所述发送控制单元用于当接收到的事务层数据包的数据量满足总线协议发送条件时,生成写请求发送给上位机。

12.根据权利要求11所述的直接内存访问控制器,其特征在于,所述写数据搬移器还包括与所述读控制单元相连的第三先进先出存储器、与所述第三先进先出存储器和所述写请求发送单元相连的数据缓存单元;

所述第三先进先出存储器用于存储所述读控制单元发送的所述第二数据并转发给所述数据缓存单元;

所述数据缓存单元用于以双字为单位缓存所述第三先进先出存储器发送的所述第二数据,并在缓存数据量满足所述写请求发送单元发送条件时,将缓存的数据发送给所述写请求发送单元。

13.根据权利要求1至12任一项所述的直接内存访问控制器,其特征在于,所述读数据搬移器包括读运算控制单元、拆分单元、读请求发送单元、带数据的完成包存储单元、带数据的完成包接收单元、写控制单元;

所述读运算控制单元用于接收读描述符并将所述读描述符拆分为读目的地址和读数据长度;

所述拆分单元用于生成三份读操作信息,每份读操作信息包含所述读目的地址和所述读数据长度,并将一份读操作信息发送给所述读请求发送单元,将两份读操作信息发送给所述写控制单元;

所述读请求发送单元用于将所述读目的地址和所述读数据长度进行组包得到读请求,并将所述读请求发送给上位机;

所述带数据的完成包接收单元用于通过请求者完成接口接收上位机发送的带数据的完成包,并对所述带数据的完成包进行数据预处理,然后将预处理后的带数据的完成包转发给所述带数据的完成包接收单元;

所述带数据的完成包存储单元用于存储所述将预处理后的带数据的完成包,并将所述将预处理后的带数据的完成包转发给所述写控制单元;

所述写控制单元用于根据所述读操作信息对外部存储器进行写地址和写长度控制,以及根据所述读操作信息和所述带数据的完成包生成对应的读完成信息或读描述符数据或写描述符数据,并将所述读完成信息或所述读描述符数据发送给所述读描述符管理模块,将所述写描述符数据发送给所述写描述符管理模块。

14.根据权利要求13所述的直接内存访问控制器,其特征在于,所述读数据搬移器还包括标签管理单元;

所述标签管理单元用于接收所述带数据的完成包存储单元在每接收到1个带数据的完成包时写入的标签,以及向所述读请求发送单元发送标签以便添加至所述读请求。

15.根据权利要求13所述的直接内存访问控制器,其特征在于,所述带数据的完成包存储单元被划分为预设数量的缓存空间,以便利用所述缓存空间将乱序接收到的带数据的完成包进行顺序缓存。

16.一种异构设备,其特征在于,包括如权利要求1至15任一项所述的直接内存访问控制器。

17.一种直接内存访问系统,其特征在于,包括上位机和如权利要求1至15任一项所述的直接内存访问控制器,所述上位机与所述直接内存访问控制器通过高速串行计算机扩展总线标准接口相连。

18.一种服务器,其特征在于,与如权利要求1至15任一项所述的直接内存访问控制器相连,用于与所述直接内存访问控制器进行数据交互。

19.一种直接内存访问方法,应用于如权利要求1至15任一项所述的直接内存访问控制器,所述方法包括:通过所述读描述符管理模块将获取的描述符寄存器中内容转换为读描述符,并将读描述符数据转换为读描述符;

通过所述写描述符管理模块将写描述符数据转换为写描述符;

通过所述读数据搬移器根据所述读描述符向上位机发送读请求,并接收所述读请求对应的第一数据并进行数据处理;

通过所述写数据搬移器根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。

20.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求19所述的直接内存访问方法。

说明书 :

直接内存访问控制器、异构设备、内存访问方法及介质

技术领域

[0001] 本发明涉及内存访问技术领域,特别涉及一种直接内存访问控制器、异构设备、内存访问方法及计算机存储介质。

背景技术

[0002] 单根I/O虚拟化(SingleRootI/OVirtualization,SR‑IOV)是输入输出(InputOutput,I/O)虚拟化标准,有利于提升虚拟云计算平台的性能,其核心思想是:在设备支持的前提下,将一个设备划分为一个物理功能单元(PhysicalFunction,PF)和多个虚拟功能单元(VirtualFunction,VF),每个虚拟功能单元都可以作为一个轻量级的I/O设备供虚拟机使用,这样一个设备就可以同时被分配给多个虚拟机,解决了因设备数量限制给虚拟化系统带来的可扩展性差的问题。直接内存访问(DirectMemoryAccess,DMA)模式下,数据传送由直接内存访问控制器来完成,因此占用极少的CPU资源。目前实现DMA的方式是有两种,链式DMA与块DMA方式,链式DMA方式比块DMA方式更灵活,效率更高。
[0003] 相关技术中,链式直接内存访问控制器中将每个VF在接收与发送接口进行拆分,每个VF均有独立的DMA控制器,但是,每个VF均有独立的DMA控制器的方案会造成大量硬件资源浪费,单个直接内存访问控制器无法支持单根I/O虚拟化。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种直接内存访问控制器、装置、设备及介质,能够支持单根I/O虚拟化,节省芯片资源。其具体方案如下:
[0005] 第一方面,本申请公开了一种直接内存访问控制器,包括多个读描述符管理模块、多个写描述符管理模块、读数据搬移器和写数据搬移器;其中,一个所述读描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道,一个所述写描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道;
[0006] 所述读描述符管理模块用于将获取的描述符寄存器中内容转换为读描述符,以及将读描述符数据转换为读描述符;
[0007] 所述写描述符管理模块用于将写描述符数据转换为写描述符;
[0008] 所述读数据搬移器用于根据所述读描述符向上位机发送读请求,以及接收所述读请求对应的第一数据并进行数据处理;
[0009] 所述写数据搬移器用于根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。
[0010] 可选的,所述读描述符管理模块包括寄存器转描述符单元和第一数据转描述符单元;
[0011] 所述寄存器转描述符单元用于获取读描述符寄存器和写描述符寄存器,并将寄存器中内容转换为符合握手协议的读描述符;
[0012] 所述第一数据转描述符单元用于获取读描述符数据,并将所述读描述符数据转换为符合握手协议的读描述符。
[0013] 可选的,所述写描述符管理模块还包括第一合并单元和第一先进先出存储器;
[0014] 所述第一合并单元用于将所述寄存器转描述符单元输出的读描述符和所述数据转描述符单元输出的读描述符按包轮询合并;
[0015] 所述第一先进先出存储器用于缓存所述第一合并单元输出的读描述符并发送给所述读数据搬移器。
[0016] 可选的,所述写描述符管理模块还包括判断单元;
[0017] 所述判断单元用于获取所述写数据搬移器发送的写完成信息组、所述读数据搬移器发送的读完成信息组、所述读描述符寄存器和写描述符寄存器,并根据所述写完成信息组/所述读完成信息组生成针对相关的物理功能/虚拟功能的中断,以及生成针对相关的描述符的完成状态信息。
[0018] 可选的,所述直接内存访问控制器,还包括与所述读描述符管理模块和所述读数据搬移器相连的第二合并单元,用于按包轮询合并每个所述读描述符管理模块输出的读描述符并转发给所述读数据搬移器。
[0019] 可选的,所述直接内存访问控制器,还包括与所述上位机和所述写描述符管理模块相连的第一协议转换模块;
[0020] 所述第一协议转换模块用于将接收到的高性能扩展总线协议的事务层数据包转换为外围总线协议的事务层数据包;
[0021] 所述第一协议转换模块上包含完成者请求接口和完成者完成接口,所述完成者请求接口用于接收上位机发送的请求包,所述完成者完成接口用于向上位机返回完成包。
[0022] 可选的,所述第一协议转换模块包括请求接收单元、协议转换单元和带数据的完成包发送单元;
[0023] 所述请求接收单元用于通过所述完成者请求接口接收并解析所述请求包,并将解析后请求数据转换为握手协议的请求数据;
[0024] 所述协议转换单元用于将所述握手协议的请求数据转换为外围总线协议的请求数据,并通过外围总线发送给对应的所述读描述符管理模块;
[0025] 所述带数据的完成包发送单元用于组装带数据的完成包并发送给上位机。
[0026] 可选的,所述直接内存访问控制器,还包括与所述第一协议转换模块相连的第二协议转换模块;
[0027] 所述第二协议转换模块用于将外围总线协议的数据包转换为高性能扩展总线协议的数据包,以便业务模块总线互联。
[0028] 可选的,所述写描述符管理模块包括第二数据转描述符单元和第二先进先出存储器;
[0029] 所述第二数据转描述符单元用于获取写描述符数据,并将所述写描述符数据转换为符合握手协议的写描述符;
[0030] 所述第二先进先出存储器用于缓存所述第二数据转描述符单元输出的写描述符并发送给所述写数据搬移器。
[0031] 可选的,所述直接内存访问控制器,还包括:
[0032] 与所述写描述符管理模块和所述写数据搬移器相连的第三合并单元,用于按包轮询合并每个所述写描述符管理模块输出的写描述符并转发给所述写数据搬移器。
[0033] 可选的,所述直接内存访问控制器,还包括:
[0034] 描述符状态上传模块用于将所述读描述符和所述写描述符完成后的状态信息转换为写请求类型的事务层数据包发送给上位机。
[0035] 可选的,所述直接内存访问控制器,还包括:
[0036] 与所述读数据搬移器、所述写数据搬移器以及外部存储器相连的第三协议转换模块,用于将所述读数据搬移器和所述写数据搬移器分别与所述外部存储器传输的数据转换为高性能扩展总线协议。
[0037] 可选的,所述写数据搬移器包括写运算控制单元、第三先进先出存储器、写请求发送单元、发送控制单元、读控制单元;
[0038] 所述写运算控制单元用于接收写描述符并将所述写描述符拆分为写目的地址和写数据长度,以及将所述写描述符发送给所述读控制单元;
[0039] 所述读控制单元用于根据所述写描述符从外部存储器读取相应的第二数据,并将所述第二数据发送给所述写请求发送单元;
[0040] 所述写请求发送单元用于基于所述读控制单元发送的所述第二数据生成事务层数据包,并将该事务层数据包发送给所述发送控制单元;
[0041] 所述发送控制单元用于当接收到的事务层数据包的数据量满足总线协议发送条件时,生成写请求发送给上位机。
[0042] 可选的,所述写数据搬移器还包括与所述读控制单元相连的第三先进先出存储器、与所述第三先进先出存储器和所述写请求发送单元相连的数据缓存单元;
[0043] 所述第三先进先出存储器用于存储所述读控制单元发送的所述第二数据并转发给所述数据缓存单元;
[0044] 所述数据缓存单元用于以双字为单位缓存所述第三先进先出存储器发送的所述第二数据,并在缓存数据量满足所述写请求发送单元发送条件时,将缓存的数据发送给所述写请求发送单元。
[0045] 可选的,所述读数据搬移器包括读运算控制单元、拆分单元、读请求发送单元、带数据的完成包存储单元、带数据的完成包接收单元、写控制单元;
[0046] 所述读运算控制单元用于接收读描述符并将所述读描述符拆分为读目的地址和读数据长度;
[0047] 所述拆分单元用于生成三份读操作信息,每份读操作信息包含所述读目的地址和所述读数据长度,并将一份读操作信息发送给所述读请求发送单元,将两份读操作信息发送给所述写控制单元;
[0048] 所述读请求发送单元用于将所述读目的地址和所述读数据长度进行组包得到读请求,并将所述读请求发送给上位机;
[0049] 所述带数据的完成包接收单元用于通过请求者完成接口接收上位机发送的带数据的完成包,并对所述带数据的完成包进行数据预处理,然后将预处理后的带数据的完成包转发给所述带数据的完成包接收单元;
[0050] 所述带数据的完成包存储单元用于存储所述将预处理后的带数据的完成包,并将所述将预处理后的带数据的完成包转发给所述写控制单元;
[0051] 所述写控制单元用于根据所述读操作信息对外部存储器进行写地址和写长度控制,以及根据所述读操作信息和所述带数据的完成包生成对应的读完成信息或读描述符数据或写描述符数据,并将所述读完成信息或所述读描述符数据发送给所述读描述符管理模块,将所述写描述符数据发送给所述写描述符管理模块。
[0052] 可选的,所述读数据搬移器还包括标签管理单元;
[0053] 所述标签管理单元用于接收所述带数据的完成包存储单元在每接收到1个带数据的完成包时写入的标签,以及向所述读请求发送单元发送标签以便添加至所述读请求。
[0054] 可选的,所述带数据的完成包存储单元被划分为预设数量的缓存空间,以便利用所述缓存空间将乱序接收到的带数据的完成包进行顺序缓存。
[0055] 第二方面,本申请公开了一种异构设备,包括前述的直接内存访问控制器。
[0056] 第三方面,本申请公开了一种直接内存访问系统,包括上位机和前述的直接内存访问控制器,所述上位机与所述直接内存访问控制器通过高速串行计算机扩展总线标准接口相连
[0057] 第四方面,本申请公开了一种服务器,与前述的直接内存访问控制器相连,用于与所述直接内存访问控制器进行数据交互。
[0058] 第五方面,本申请公开了一种直接内存访问方法,应用于前述的直接内存访问控制器,所述方法包括:
[0059] 通过所述读描述符管理模块将获取的描述符寄存器中内容转换为读描述符,并将读描述符数据转换为读描述符;
[0060] 通过所述写描述符管理模块将写描述符数据转换为写描述符;
[0061] 通过所述读数据搬移器根据所述读描述符向上位机发送读请求,并接收所述读请求对应的第一数据并进行数据处理;
[0062] 通过所述写数据搬移器根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。
[0063] 第六方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的直接内存访问方法。
[0064] 本申请中,直接内存访问控制器包括多个读描述符管理模块、多个写描述符管理模块、读数据搬移器和写数据搬移器;其中,一个所述读描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道,一个所述写描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道;所述读描述符管理模块用于将获取的描述符寄存器中内容转换为读描述符,以及将读描述符数据转换为读描述符;所述写描述符管理模块用于将写描述符数据转换为写描述符;所述读数据搬移器用于根据所述读描述符向上位机发送读请求,以及接收所述读请求对应的第一数据并进行数据处理;所述写数据搬移器用于根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。可见,通过为每个物理功能的管理通道和每个虚拟功能的管理通道配置独立的读描述符管理模块和写描述符管理模块,实现适用于单根I/O虚拟化的链式直接内存访问控制器;即每个物理功能与虚拟功能的描述符管理模块均是独立的,对于读数据搬移器和写数据搬移器为共用,由此支持单根I/O虚拟化,且可任意扩展物理功能/虚拟功能的数量,共用数据搬移器,节省芯片资源。

附图说明

[0065] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0066] 图1为本申请提供的一种直接内存访问控制器结构示意图;
[0067] 图2为相关技术中一种具体的具备SR‑IOV能力的I/O设备基本结构示意图;
[0068] 图3为相关技术中一种具体的SR‑IOV设备的I/O虚拟化架构示意图;
[0069] 图4为本申请提供的一种具体的直接内存访问控制器结构示意图;
[0070] 图5为本申请提供的一种具体的第一协议转换模块结构示意图;
[0071] 图6为本申请提供的一种具体的读描述符管理模块结构示意图;
[0072] 图7为本申请提供的一种具体的写描述符管理模块结构示意图;
[0073] 图8为本申请提供的一种具体的写数据搬移器结构示意图;
[0074] 图9为本申请提供的一种具体的读数据搬移器结构示意图;
[0075] 图10为本申请提供的一种直接内存访问方法流程图。

具体实施方式

[0076] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0077] 现有技术中,链式直接内存访问控制器中将每个VF在接收与发送接口进行拆分,每个VF均有独立的DMA控制器,但是,每个VF均有独立的DMA控制器的方案会造成大量硬件资源浪费,单个直接内存访问控制器无法支持单根I/O虚拟化。为克服上述技术问题,本申请提出一种直接内存访问控制器,能够支持单根I/O虚拟化,节省芯片资源。
[0078] 本申请实施例公开了一种直接内存访问控制器,参见图1所示,该直接内存访问控制器可以包括多个读描述符管理模块11、多个写描述符管理模块13、读数据搬移器12和写数据搬移器14;其中,一个所述读描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道,一个所述写描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道。即每个物理功能与虚拟功能的读描述符管理模块是独立的,且每个物理功能与虚拟功能的写描述符管理模块是独立的,例如现配置有2个物理功能pf0和pf1,以及4个虚拟功能vf0‑vf3,每个虚拟功能或物理功能对应独立的读描述符管理模块和写描述符管理模块,则直接内存访问控制器中当前需要使用6个读描述符管理模块和6个写描述符管理模块。需要说明的是,实施例中,上述读描述符管理模块、写描述符管理模块、读数据搬移器和写数据搬移器均为硬件电路。
[0079] 首先,对单根I/O虚拟化(SR‑IOV)进行简要说明,SR‑IOV是目前I/O虚拟化研究的热点问题,旨在实现硬件级的设备虚拟化,建立一个客户机之间高效共享PCIe(PeripheralComponentInterconnectexpress,高速串行计算机扩展总线标准)设备的机制,从而获得与本机同等性能的I/O性能和效率。相关实验分析表明,应用了SR‑IOV技术的系统的数据传输效率和CPU利用率均得到了大幅度的提升,对于大规模的高性能计算集群有着很大的价值。根据协议标准,一个SR‑IOV设备可以具有一个或者多个物理功能(PF),PF可以看作是一个标准的传统PCIe设备。每一个PF可以创建多个虚拟功能(VF)。VF受到PF的配置和管理,与PF相比,VF属于一种轻量级的PCIe设备。一种具体的具备SR‑IOV能力的I/O设备基本结构如图2所示,左边是单PF的设备结构,由一个PF虚拟出M个VF。右边是具有N个PF的设备结构,每个PF可以虚拟出M个VF。虚拟化本身的特性决定了虚拟设备最终是受到实际物理资源的限制的,VF的性能与硬件资源的数量以及分配方式有关系。
[0080] SR‑IOV采用设备透传技术,系统将每一个VF分配给不同的虚拟机使用,虚拟机就具备了直接使用VF进行数据处理的能力。设备透传技术绕过虚拟机监视器(virtualMachinemonitor,VMM)直接发送和接收I/O数据,客户机通过VF驱动进行I/O操作,这个过程无需虚拟机监视器的干涉。这样不仅增加了虚拟机之间的隔离性,其效率更是接近设备的原生性能。SR‑IOV设备的I/O虚拟化架构如图3所示。
[0081] 其中,PF驱动可以直接访问PF的配置空间和PF在设备中占用的物理资源。它首要功能是负责配置和管理所有VF,通过PCIe扩展配置空间设置VF的数量,并从宿主机层面全局使能或者禁止VF,其次可以调用PF所属的物理资源,如PF的算法等。VF驱动从客户机角度可以认为是一个普通的PCIe设备驱动,它可以直接访问SR‑IOV管理器给该客户机分配的VF设备,由于有硬件IOMMU(input/outputMemoryManagementUnit,输入输出内存管理单元)做地址转换,VF驱动可以不需要VMM的干预,直接对客户机物理地址操作即可完成数据的搬运。SR‑IOV管理器为所有的VF创建一个虚拟配置空间,使宿主机操作系统可以正确的识别并配置VF;在VF被宿主机正确识别和配置后,才能分配给客户机,然后在客户机操作系统中被当做普通的PCIe设备初始化和使用。IO内存管理单元(I/OMemoryManagementUnit,IOMMU),完成内存访问授权和内存地址转换。IOMMU通过重映射方式,将VF驱动的客户机物理地址转换为宿主机物理地址,即把客户机缓冲区内存地址翻译成机器物理地址;针对反向操作,IOMMU也是支持重映射的,即从设备到客户机的访问。
[0082] 本实施例中,所述读描述符管理模块(ReadDescriptorManage)用于将获取的描述符寄存器中内容转换为读描述符,以及将读描述符数据转换为读描述符。即将描述符控制寄存器以及操作转化为读描述符;以及将上位机读取回来的读描述符数据解析为读描述符格式。可以理解的是,描述符控制寄存器转换得到的读描述符是用于读取上位机准备好的读描述符与写描述符的。
[0083] 本实施例中,所述写描述符管理模块(WriteDescriptorManage)用于将写描述符数据转换为写描述符。即将上位机读取回来的写描述符数据解析为写描述符格式。
[0084] 本实施例中,所述读数据搬移器(ReadDMADtataMover)用于根据所述读描述符向上位机发送读请求,以及接收所述读请求对应的第一数据并进行数据处理。即根据读描述符发送读请求TLP(TransactionLayerPacket,PCIe协议的事务层数据包)类型的存储器读请求(Mrd),然后将上位机根据所述读请求返回的数据进行处理,返回的数据可以包括但不限于读写描述符数据和正常数据等。
[0085] 本实施例中,所述写数据搬移器(WriteDMADataMover)用于根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。该模块主要功能是根据写描述符从读数据接口读取数据,然后将数据转为TLP类型的存储器写请求(Mwr)发送给上位机。
[0086] 例如图4所示的直接内存访问控制框架图,可以理解的是,PCIe规定了自己的规范,但是DMA却没有,DMA控制器可以说是PCIe的一种应用,用来搬移大量的数据。图4中PCIEHardIP是PCIE(peripheralComponentInterconnectExpress,高速串行计算机扩展总线标准)硬核模块,负责PCIE物理层与协议层,CQ、CC、RC、RQ为直接内存访问控制器与该硬核交互的TLP包接口,IRQ为中断交互接口。接口说明如下:CQ(CompleterReQuest,完成者请求接口),用于用户应用从上位机接收请求包;CC(CompleterCompletion,完成者完成接口)用于用户应用向上位机返回完成包;RC(RequesterCompletion,请求者完成接口)用于用户应用从上位机接收完成包;RQ(RequesterReQuest,请求者请求接口)用于用户应用向上位机发送请求包;IRQ(interruptReQues,中断请求接口)用于用户应用向上位机请求中断。
[0087] 本实施例中,所述直接内存访问控制器,还包括与所述上位机和所述写描述符管理模块相连的第一协议转换模块(TLP2BAR);所述第一协议转换模块用于将接收到的高性能扩展总线协议(AdvancedEXtensibleInterface,AXIS)的事务层数据包转换为外围总线协议(AdvancedPeripheralBus,APB)的事务层数据包;所述第一协议转换模块上包含完成者请求接口和完成者完成接口,所述完成者请求接口用于接收上位机发送的请求包,所述完成者完成接口用于向上位机返回完成包。即上位机进行bar(BaseAddressRegister,基地址寄存器)的读写操作,会通过PCIE协议转化为读写TLP包,该模块负责解析来自接口CQ(AXIS协议)的TLP包,转化为APB总线的读写操作。上位机写操作转为APB总线写操作,上位机读操作转化为APB总线读操作,带数据的完成包(即带数据的完成TLP包,CompletionWithDataTLP,Cpld)包通过接口CC(AXIS总线)返回给主机。CQ接口带有PF/VF标识以及bar0‑bar5的标识。理论上,假如PF/VF总数为n,需要6×n套APB总线对应,本实施例中若设计bar0负责配置DMA相关寄存器,bar1负责配置其他业务相关寄存器,则需要2×n套APB总线,基地址寄存器可根据需要自行修改设计。需要说明的是,本实施例中上述第一协议转换模块为硬件电路。
[0088] 本实施例中,所述第一协议转换模块包括请求接收单元、协议转换单元和带数据的完成包发送单元;所述请求接收单元用于通过所述完成者请求接口接收并解析所述请求包,并将解析后请求数据转换为握手协议的请求数据;所述协议转换单元用于将所述握手协议的请求数据转换为外围总线协议的请求数据,并通过外围总线发送给对应的所述读描述符管理模块;所述带数据的完成包发送单元用于组装带数据的完成包并发送给上位机。
[0089] 例如图5所示,CQ与CC为AXIS总线的TLP包传输接口,CQ接收上位机读写操作,TLP包有Mwr与Mrd,对应bar空间读写操作,CC为子设备的返回数据包Cpld。请求接收单元(Rx_host_req)负责将AXIS协议的Mwr与Mrd解析,转化为基于ready/valid握手协议的请求数据(cmd_info),携带的信息有读写标志、写数据地址、写数据、读数据地址、bar标识符、PF/VF标识符、tag(标签)、tc标志、func函数等主要信息。协议转换单元(cmd_info2apb)将cmd_info转化为apb协议的读写请求数据,如果是读,将cmd_info标识信息以及APB的读数据送给带数据的完成包发送单元(tx_bar_cpld),带数据的完成包发送单元模块将tag、读数据、tc标志等信息组成带数据的完成包,返回给上位机。
[0090] 本实施例中,所述直接内存访问控制器,还包括与所述第一协议转换模块相连的第二协议转换模块;所述第二协议转换模块用于将外围总线协议的数据包转换为高性能扩展总线协议的数据包,以便业务模块总线互联。如图4中第二协议转换模块(APB2AXI‑Lite),该模块将标准APB总线转化为AXI‑Lite总线,方便业务模块总线互联。需要说明的是,本实施例中上述第二协议转换模块为硬件电路。
[0091] 本实施例中,所述直接内存访问控制器,还包括:描述符状态上传模块用于将所述读描述符和所述写描述符完成后的状态信息转换为写请求类型的事务层数据包发送给上位机。如图4中描述符状态上传模块(DescStatusUpload),该模块的作用是将每个描述符完成后的状态信息转化为Mwr类型TLP,发送到上位机,上位机为每个描述符预留了状态标志存储空间,例如,每当一个描述符完成后,就向对应的上位机地址写1。需要说明的是,本实施例中上述描述符状态上传模块为硬件电路。
[0092] 本实施例中,所述直接内存访问控制器,还包括:与所述读数据搬移器、所述写数据搬移器以及外部存储器相连的第三协议转换模块,用于将所述读数据搬移器和所述写数据搬移器分别与所述外部存储器传输的数据转换为高性能扩展总线协议。如图4中第三协议转换模块(Std_Intf),该模块功能是将读数据搬移器和写数据搬移器传输的非标准协议的读写数据转为AXI‑MM标准协议。需要说明的是,本实施例中上述第三协议转换模块为硬件电路。
[0093] 本实施例中,所述直接内存访问控制器,还包括与所述读数据搬移器、所述写数据搬移器和所述描述符状态上传模块相连的合并模块(Merge),该模块主要功能是将读数据搬移器、所述写数据搬移器和所述描述符状态上传模块输出的多路流模式数据按包轮询合并。需要说明的是,本实施例中上述合并模块为硬件电路。
[0094] 可见,本实施例中直接内存访问控制器架构主要有第一协议转换模块、第二协议转换模块、读描述符管理模块、写描述符管理模块、Merge合并模块、描述符状态上传模块、读数据搬移器、写数据搬移器、第三协议转换模块等主要模块组成,各模块均为硬件电路,各模块之间数据传输大量数据流均用axi‑stream、axi‑mm标准总线传输,保证传输效率,bar读写操作用apb、axi‑lite标准总线传输,保证规范,其余命令信息或者控制信息等用ready/valid握手信号传递,保证控制信息的传输效率,使整个架构异步流水,防止任何模块因等待导致直接内存访问控制器效率变低,支持DMA同时读写,灵活性高;且通过模块化设计,方便移植修改与维护。
[0095] 另外,本实施例适用于单根I/O虚拟化的DMA控制器,每个描述符控制通道对应一个物理功能或虚拟功能。当想要变为单物理功能多通道的DMA控制器时,只需在单个物理功能上配置多个描述符寄存器,此时仍可以利用多通道处理多描述符。同时本实施例裁剪为单通道后,功能与正常链式描述符DMA控制器基本一致。
[0096] 由上可见,本实施例中直接内存访问控制器包括多个读描述符管理模块、多个写描述符管理模块、读数据搬移器和写数据搬移器;其中,一个所述读描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道,一个所述写描述符管理模块对应一个物理功能的管理通道或者一个虚拟功能的管理通道;所述读描述符管理模块用于将获取的描述符寄存器中内容转换为读描述符,以及将读描述符数据转换为读描述符;所述写描述符管理模块用于将写描述符数据转换为写描述符;所述读数据搬移器用于根据所述读描述符向上位机发送读请求,以及接收所述读请求对应的第一数据并进行数据处理;所述写数据搬移器用于根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。可见,通过为每个物理功能的管理通道和每个虚拟功能的管理通道配置独立的读描述符管理模块和写描述符管理模块,实现适用于单根I/O虚拟化的链式直接内存访问控制器;即每个物理功能与虚拟功能的描述符管理模块均是独立的,对于读数据搬移器和写数据搬移器为共用,由此支持单根I/O虚拟化,且可任意扩展物理功能/虚拟功能的数量,共用数据搬移器,节省芯片资源。
[0097] 在一些具体实施例中,例如图6所示,上述读描述符管理模块可以具体包括寄存器转描述符单元和第一数据转描述符单元;其中,所述寄存器转描述符单元用于获取读描述符寄存器和写描述符寄存器,并将寄存器中内容转换为符合握手协议的读描述符;所述第一数据转描述符单元用于获取读描述符数据,并将所述读描述符数据转换为符合握手协议的读描述符。
[0098] 例如图6所示,读描述符管理模块输入信号主要有来自bar读写的描述符寄存器组(desc_reg)、来自读数据搬移器解析出的上位机的读描述符数据(read_desc_data)以及读完成信息组(rdesc_done_info)、来自写数据搬移器的写完成信息组(wdesc_done_info)。其中,描述符寄存器包括读描述符寄存器(读描述符寄存器包括:源地址、目的地址、长度、ID、开始信号等)与写描述符寄存器(写描述符寄存器包括:源地址、目的地址、长度、ID、开始信号等)。寄存器转描述符单元(reg2desc)将以上寄存器转化为基于握手协议的描述符形式。第一数据转描述符单元(data2desc)将这些数据转为基于握手协议的读描述符。其中读描述符数据的获取过程为:寄存器转描述符单元读取寄存器组以得到对应的读描述符,根据所述读描述符读取上位机相应位置,得到用于读取数据的读描述符数据和用于写数据的写描述符数据,即读写描述符数据是均通过寄存器对应的读描述符从上位机读回,寄存器转描述符单元读取的读描述符是描述符控制寄存器产生,描述符寄存器可以通过bar读写配置产生。
[0099] 本实施例中,所述写描述符管理模块还可以包括第一合并单元和第一先进先出存储器;所述第一合并单元用于将所述寄存器转描述符单元输出的读描述符和所述数据转描述符单元输出的读描述符按包轮询合并;所述第一先进先出存储器用于缓存所述第一合并单元输出的读描述符并发送给所述读数据搬移器。即第一合并单元(desc_merge)将以上寄存器转描述符单元和数据转描述符单元输出的描述符逐个轮询合并,存储至第一先进先出存储器(Fifo),缓存深度可以为128个描述符。
[0100] 本实施例中,所述写描述符管理模块还可以包括判断单元;所述判断单元用于获取所述写数据搬移器发送的写完成信息组、所述读数据搬移器发送的读完成信息组、所述读描述符寄存器和写描述符寄存器,并根据所述写完成信息组/所述读完成信息组生成针对相关的物理功能/虚拟功能的中断,以及生成针对相关的描述符的完成状态信息。即判断单元(Judge)根据读写完成相关信息(PF/VF标识、描述符ID等)判断是否产生对应PF/VF中断以及每个描述符ID对应的完成状态信息。
[0101] 本实施例中,所述直接内存访问控制器,还可以包括:与所述读描述符管理模块和所述读数据搬移器相连的第二合并单元,用于按包轮询合并每个所述读描述符管理模块输出的读描述符并转发给所述读数据搬移器。即例如图4所示,与读描述符管理模块和读数据搬移器相连的第二合并单元(merge),该单元用于按包轮询合并每个读描述符管理模块输出的读描述符,并转发给读数据搬移器,由此可以大致按接收顺序依次处理读描述符。
[0102] 在一些具体实施例中,例如图7所示,所述写描述符管理模块具体可以包括第二数据转描述符单元和第二先进先出存储器;其中,所述第二数据转描述符单元用于获取写描述符数据,并将所述写描述符数据转换为符合握手协议的写描述符;所述第二先进先出存储器用于缓存所述第二数据转描述符单元输出的写描述符并发送给所述写数据搬移器。第二数据转描述符单元(data2desc)将写描述符数据(write_desc_data)转为基于握手协议的写描述符,存储至第二先进先出存储器(Fifo)。
[0103] 本实施例中,所述直接内存访问控制器,还可以包括:与所述写描述符管理模块和所述写数据搬移器相连的第三合并单元,用于按包轮询合并每个所述写描述符管理模块输出的写描述符并转发给所述写数据搬移器。即图4所示,与写描述符管理模块和写数据搬移器相连的第三合并单元(merge),该单元用于按包轮询合并每个写描述符管理模块输出的写描述符,并转发给写数据搬移器,由此可以大致按接收顺序依次处理写描述符。
[0104] 在一些具体实施例中,例如图8所示,所述写数据搬移器具体可以包括写运算控制单元、第三先进先出存储器、写请求发送单元、发送控制单元、读控制单元;其中,所述写运算控制单元用于接收写描述符并将所述写描述符拆分为写目的地址和写数据长度,以及将所述写描述符发送给所述读控制单元;所述读控制单元用于根据所述写描述符从外部存储器读取相应的第二数据,并将所述第二数据发送给所述写请求发送单元;所述写请求发送单元用于基于所述读控制单元发送的所述第二数据生成事务层数据包,并将该事务层数据包发送给所述发送控制单元;所述发送控制单元用于当接收到的事务层数据包的数据量满足总线协议发送条件时,生成写请求发送给上位机。
[0105] 可以理解的是,由于写描述符长度受PCIe规定的发送端数据承载量(Max_Payload_Size)与4k地址边界限制,写运算控制单元(write_calc_ctrl)会将一个写描述符拆分成多个符合要求的写目的地址与写数据长度,并将拆分好的信息传递给写请求发送单元(tx_mwr),同时将写描述符传递给读控制单元(read_ctrl),读控制单元根据描述符预先读取源地址上相应长度的数据,将数据处理为AXIS格式传递给写请求发送单元,且读取完对应长度数据后,传递写描述符完成信息(wdesc_done_info)。写请求发送单元负责将拆分好的信息与数据进行整合打包。发送控制单元(axis_valid_keep)会对打包的数据进行缓存至少一包,只有当完整的数据包完全缓存后才能将该包数据进行发送,此机制是为了防止AXIS流模式下一包数据中间有长时间断开,从而导致PCIE链路错误的问题。
[0106] 本实施例中,所述写数据搬移器还可以包括与所述读控制单元相连的第三先进先出存储器、与所述第三先进先出存储器和所述写请求发送单元相连的数据缓存单元;所述第三先进先出存储器用于存储所述读控制单元发送的所述第二数据并转发给所述数据缓存单元;所述数据缓存单元用于以双字为单位缓存所述第三先进先出存储器发送的所述第二数据,并在缓存数据量满足所述写请求发送单元发送条件时,将缓存的数据发送给所述写请求发送单元。可以理解的是,由于写请求发送单元需要组TLP包,发送帧头以及数据,每次发送的DW(DoubleWord,双字,即4字节)个数不确定,AXIS总线协议每次开始传输的数据起始位置与有效DW个数也不确定,故添加数据缓存单元(Mwr_data_cache)处理该问题,数据缓存单元对AXIS总线数据做两拍小缓存,并且将数据不确定的位置规范化,当按照DW为单位,达到写请求发送单元要求的发送数据个数缓存后即可完成一次握手,即数据传递,数据缓存单元与预取数据后缓存到第三先进先出存储器的机制是将整个写DMA速率提升到极限的关键,因此,该模块不能用状态机进行设计没使用状态机设计容易状态经常跳转降低效率,本实施例中用ready/valid握手电路进行数据缓存与相关控制。
[0107] 在一些具体实施例中,所述读数据搬移器具体可以包括读运算控制单元、拆分单元、读请求发送单元、带数据的完成包存储单元、带数据的完成包接收单元、写控制单元;其中,所述读运算控制单元用于接收读描述符并将所述读描述符拆分为读目的地址和读数据长度;所述拆分单元用于生成三份读操作信息,每份读操作信息包含所述读目的地址和所述读数据长度,并将一份读操作信息发送给所述读请求发送单元,将两份读操作信息发送给所述写控制单元;所述读请求发送单元用于将所述读目的地址和所述读数据长度进行组包得到读请求,并将所述读请求发送给上位机;所述带数据的完成包接收单元用于通过请求者完成接口接收上位机发送的带数据的完成包,并对所述带数据的完成包进行数据预处理,然后将预处理后的带数据的完成包转发给所述带数据的完成包接收单元;所述带数据的完成包存储单元用于存储所述将预处理后的带数据的完成包,并将所述将预处理后的带数据的完成包转发给所述写控制单元;所述写控制单元用于根据所述读操作信息对外部存储器进行写地址和写长度控制,以及根据所述读操作信息和所述带数据的完成包生成对应的读完成信息或读描述符数据或写描述符数据,并将所述读完成信息或所述读描述符数据发送给所述读描述符管理模块,将所述写描述符数据发送给所述写描述符管理模块。
[0108] 例如图9所示,由于读描述符长度受PCIe规定的发送端数据承载量与4k地址边界限制,读运算控制单元(read_calc_ctrl)会将一个描述符拆分成多个符合要求的读目的地址与读数据长度,拆分单元(fork3)将信息拆分成完全相同的三份,每份都包含读目的地址与读数据长度,三份数据需要从同步变成异步,一份给读请求发送单元(tx_mrd),两份给写控制单元(write_ctrl),读请求发送单元获取读目的地址与读数据长度后进行组包,向上位机发送读取数据请求TLP。带数据的完成包接收单元(rx_cpld)对上位机返回的数据包进行预处理,将帧头等无关信息进行丢弃,同时整理为标准AXIS总线协议数据。带数据的完成包存储单元(Mem_cpld)由RAM组成用于存储cpld包。写控制单元(Write_ctrl)主要是根据目的地址、数据长度等信息(fork3信息的其中一份)预先对外部存储器完成写地址与写长度控制,然后利用fork3中最后一份信息对接收到的cpld数据进行数据规范化处理,将很多包合并成一包,数据以DW为单位;分开控制的目的是预先完成写地址与写长度处理,预写入机制会增加读DMA的带宽利用率,是提升到极致带宽利用率的关键,同时该模块会区分读回数据是描述符还是普通数据,进行处理拆分,发送到对应模块,完成读操作后传递相关完成信息。
[0109] 本实施例中,所述读数据搬移器还可以包括标签管理单元;所述标签管理单元用于接收所述带数据的完成包存储单元在每接收到1个带数据的完成包时写入的标签,以及向所述读请求发送单元发送标签以便添加至所述读请求。即标签管理单元(Tag_manage)负责管理tag标签,tag个数为32个即可,每发送一个读请求消耗一个tag,当带数据的完成包存储单元存储一个返回的cpld包后,向标签管理单元模块写入一个tag,完成tag回收。读请求发送单元获取tag、读目的地址与读数据长度后进行组包,向上位机发送读取数据请求TLP。
[0110] 本实施例中,所述带数据的完成包存储单元被划分为预设数量的缓存空间,以便利用所述缓存空间将乱序接收到的带数据的完成包进行顺序缓存。即带数据的完成包存储单元可以由深度为32×Max_Read_Request_Size(PCIe规定的最大读数据大小)的RAM组成,最大缓存32个Cpld数据包,如果缓存小于32×Max_Read_Request_Size,可能会造成数据丢失。通过将缓存分成32个小缓存,按照顺序存放接收到的数据包,可支持CplD乱序接收,减少PCIE传输数据延迟2us左右。如果不需要支持乱序,将缓存设计为一个大缓存即可。
[0111] 进一步的,本申请实施例还公开了一种具体的异构设备,包括前述的直接内存访问控制器,异构设备具体可以为网卡、FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)加速器、密码卡、GPU(GraphicsProcessingUnit,图形处理器)、DPU(DataProcessingUnit,中央处理器分散处理单元)等具备PCIe金手指的板卡设备,异构设备通过PCIe接口与上位机进行大量数据交互。
[0112] 本申请实施例公开了一种具体的直接内存访问系统,包括上位机和前述的直接内存访问控制器,其中上位机与直接内存访问控制器通过高速串行计算机扩展总线标准接口相连。上述上位机是指可以直接发出操控命令的计算机,本申请实施例中可以为服务器、台式机电脑等具备PCIe插槽的计算机设备。直接内存访问系统运行时,直接内存访问控制器执行上述逻辑。
[0113] 本申请实施例公开了一种具体的务器,与前述的直接内存访问控制器相连,用于与前述直接内存访问控制器进行数据交互。
[0114] 本申请实施例公开了一种具体的直接内存访问方法,参见图10所示,该方法可以包括以下步骤:
[0115] 步骤S11:通过所述读描述符管理模块将获取的描述符寄存器中内容转换为读描述符,并将读描述符数据转换为读描述符。
[0116] 步骤S12:通过所述写描述符管理模块将写描述符数据转换为写描述符。
[0117] 步骤S13:通过所述读数据搬移器根据所述读描述符向上位机发送读请求,并接收所述读请求对应的第一数据并进行数据处理。
[0118] 步骤S14:通过所述写数据搬移器根据所述写描述符读取对应的第二数据,并基于所述第二数据生成写请求发送给上位机。
[0119] 进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的直接内存访问步骤。
[0120] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0121] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0122] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0123] 以上对本发明所提供的一种直接内存访问控制器、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。