一种面向流传输的直接内存访问方法以及DMA控制器
技术领域
本申请涉及计算机技术领域,特别涉及一种面向流传输的直接内存访问方法以及DMA控制器。
背景技术
在现有的DMA(Direct Memory Access,直接内存访问)操作过程中,CPU(centralprocessing unit,中央处理器)配置DMA控制器,DMA控制器发起总线的读写操作,将数据从源端搬移到宿端。DMA控制器作为从设备接受CPU的配置和管理,同时,DMA控制器也是主设备,能够直接发起总线操作,完成数据读写。CPU配置DMA控制器和IO(Input/Output,输入输出)接口设备,IO接口设备发出DMA请求,DMA控制器响应,完成数据读写。数据传输过程不需要CPU的参与,从而释放了CPU的运算资源。
在PCIe的系统中,CPU作为RC(Requester Completion)设备,通过PCIe的交换设备与IO接口所在的EP(Endpoint,终端)设备连接,实现IO接口数据访问内存的DMA控制器一般也位于EP设备中。如果IO接口为以太网之类的流传输接口,则DMA的工作过程如下:
CPU在内存中创建以太网帧收发的数据缓存队列,并创建数据缓存队列的描述符缓存区,配置DMA控制描述符缓存区地址指向创建好的描述符缓存区。以太网MAC(MediaAccess Control,介质访问控制)模块在收到MAC帧后,向DMA控制器申请C2H(Card toHost)的描述符,DMA控制器发出读请求,从系统缓存中读取C2H的描述符,再分配给DMA控制器实现传输C2H的以太网帧的功能。
上述传输过程中,要实现MAC帧的传输首先需要获取描述符,而描述符队列和DMA控制器处于PCIe总线的两端,读取过程需要频繁地进行PCIe总线操作,从而增加传输时延,虽然描述符可以提前读取,但是在数据突发的时候,描述符缓存队列有限,仍会出现需要等待描述符读取的情况,从而带来时延和时延抖动的增加。因此,如何进行直接内存访问以减少时延是本领域技术人员要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种面向流传输的直接内存访问方法以及DMA控制器,能够减少时延,提高访问效率。其具体方案如下:
第一方面,本申请公开了一种面向流传输的直接内存访问方法,应用于源端的第一预设DMA控制器,包括:
对获取到的待传输数据帧进行缓存;
生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可选地,所述面向流传输的直接内存访问方法,还包括:
向所述第二预设DMA控制器发送读描述状态请求帧;
接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
可选地,所述对所述第二TLP帧进行解析之后,还包括:
根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。
第二方面,本申请公开了一种面向流传输的直接内存访问方法,应用于宿端的第二预设DMA控制器,包括:
接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
对解析得到所述待传输数据帧和所述描述符进行存储。
可选地,所述面向流传输的直接内存访问方法,还包括:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息,处理完成的数据帧的描述符的状态信息存储在预设的描述符状态信息模块中。
第三方面,本申请公开了一种源端的第一预设DMA控制器,包括:
数据帧缓存模块,用于对获取到的待传输数据帧进行缓存;
描述符生成模块,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
TLP帧生成和发送控制模块,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可选地,所述TLP帧生成和发送控制模块,还用于:
向所述第二预设DMA控制器发送读描述状态请求帧;
相应地,所述第一预设DMA控制器,还包括:
第一TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
可选地,所述第一预设DMA控制器,还包括:
描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便所述描述符生成模块利用所述新的描述符资源生成描述符。
第四方面,本申请公开了一种宿端的第二预设DMA控制器,包括:
第二TLP帧解析模块,用于接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;
数据缓存队列,用于对解析得到所述待传输数据帧进行存储;
描述符缓存队列,用于对解析得到所述描述符进行存储。
可选地,所述第二TLP帧解析模块,还用于:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
相应地,所述第二预设DMA控制器,还包括:
TLP帧发送模块,用于根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;
描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种面向流传输的直接内存访问方法流程图;
图2为本申请公开的一种具体的系统结构框图;
图3为本申请公开的一种面向流传输的直接内存访问方法流程图;
图4为本申请公开的一种驱动程序的安装过程图;
图5为本申请公开的一种源端的第一预设DMA控制器结构示意图;
图6为本申请公开的一种具体的源端的第一预设DMA控制器结构示意图;
图7为本申请公开的一种宿端的第二预设DMA控制器结构示意图;
图8为本申请公开的一种具体的宿端的第二预设DMA控制器设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在直接内存访问的传输过程中,要实现MAC帧的传输首先需要获取描述符,而描述符缓存队列和DMA控制器处于PCIe总线的两端,读取过程需要频繁地进行PCIe总线操作,从而增加传输时延,虽然描述符可以提前读取,但是在数据突发的时候,描述符缓存队列有限,仍会出现需要等待描述符读取的情况,从而带来时延和时延抖动的增加。有鉴于此,本申请提出了一种面向流数据的直接内存访问方法,能够减少时延,提高访问效率。
参见图1所示,本申请实施例公开了一种面向流传输的直接内存访问方法,应用于源端的第一预设DMA控制器,该方法包括:
步骤S11:对获取到的待传输数据帧进行缓存。
在具体的实施过程中,所述源端可以是外设,也可以是CPU,相应地,宿端可以是外设,也可以是CPU。外设和CPU中都包括第一预设DMA控制器和第二预设DMA控制器。其中,所述第一预设DMA控制器主要负责当前设备作为源端时的直接内存访问操作,所述第二预设DMA控制器主要负责当前设备作为宿端时的直接内存访问操作。
参见图2所示,为系统结构框图。其中,CPU和外设(Device)均中包括第一预设DMA控制器DMAC-src,和第二预设DMA控制器DMAC-snk,其中,第一预设DMA控制器DMAC-src与PCIe硬核模块之间通过RQ/RC(Requester Request/Requester Completion)总线接口相连接,第二预设DMA控制器DMAC-snk与PCIe硬核模块之间通过CQ/CC(Completer Request/Completer Completion)总线接口相连接。且RQ/RC总线接口和CQ/CC总线接口均符合AXIS规范(Advanced eXtensible Interface Stream)。CQ/CC与第二预设DMA控制器DMAC-snk连接,为从接口,响应源端的读写指令,RQ/RC与第一预设DMA控制器DMAC-src连接,为主接口,可以发起读写指令。对于CPU侧来说,DMAC可以存在CPU芯片内部,使用系统主存储器作为DMAC的缓存空间。对于外设来说,DMAC开辟的缓存空间有限,可以直接实现在芯片内部,当然也可以实现在芯片外部,获得更大的缓存空间。CPU和外设之间通过PCIe总线连接,在外设中第一预设DMA控制器DMAC-src和二预设DMA控制器DMAC-snk还通过AXIS连接了MAC模块。这样每个设备都有自身用于发送数据的第一预设DMA控制器,也有自身用于接收数据的第二预设DMA控制器,使得收发方向结构完全独立且对称。
在实际应用中,当源端的第一预设DMA控制器获取到待传输数据帧时,先对所述待传输数据帧进行存储,以便在进行后续的操作之后,一起发送数据给宿端。
步骤S12:生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息。
可以理解的是,在对所述待传输数据帧进行存储之后,还需要生成所述待传输数据帧对应的描述符。也即,生成所述待传输数据帧的源地址、目的地址以及长度信息等,所述长度信息表示所述待传输数据帧中的数据长度。
步骤S13:将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
生成所述描述符之后,还需要将所述待传输数据帧和所述描述符封装成第一TLP(Transaction Layer Packet,事务层包)帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。其中,所述第一TLP帧的数量可以大于或等于1,也即,所述待传输数据帧可以被拆分,形成多个片段,然后将各个片段封装成对应的第一TLP帧,传输给宿端的第二预设DMA控制器。
还需要向所述第二预设DMA控制器发送读描述状态请求帧;接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。其中,所述描述符的状态信息表明处理完成的数据帧的描述符。具体的,可以在数据帧处理完成之后,将处理完成的数据帧对应的描述符去掉部分信息,留下能够标识所述描述符的信息作为所述描述符的状态信息,也可以直接将描述符作为自身的描述符的状态信息。
也即,由所述源端的第一预设DMA控制器主动向所述宿端的第二预设DMA控制器发送读描述状态请求帧,接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析之后,便可以由源端主动读取宿端的描述符队列的使用情况,使得占用的带宽开销受控可调。
读描述符状态请求帧的发送频率可由用户自行选定,最快每发送一帧的数据帧都伴随一个读描述符状态请求帧,最慢可在描述符或数据缓存空间即将使用完之前发送,获得响应后确保及时更新描述符队列的状态,有新的描述符分配给下一个到来的MAC帧。
在所述对所述第二TLP帧进行解析之后,还包括:根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。也即,可以根据对所述第二TLP帧进行解析之后,便可以根据解析结果生成新的描述符资源,并释放所述第一DMA控制器中的存储所述待传输数据帧的数据帧缓存空间,以便用释放的数据帧缓存空间缓存新的待传输数据帧,以及在接收到新的待传输数据帧时,利用所述新的描述符资源生成对应的新的描述符。对所述第二TLP帧进行解析可以确定出所述宿端的第二预设DMA控制器已处理完成的数据帧的信息,然后便可以将第二预设DMA控制器已处理完成的接收数据帧存储地址作为新的可用地址,以便生成新的描述符时,将新的可用地址作为目的地址。
对于所述源端为外设时,所述第一预设DMA控制器获取到的待传输数据帧时,可以是从MAC模块过来的以太网帧,这样首先对待传输数据帧进行缓存,该缓存过程主要是为了适配RQ接口和AXIS接口的帧速率差异,便于传输位宽的对齐,因此缓存深度很小,对时延影响小。
如果宿端支持多优先级队列,可根据配置或用户设置选择其中一个优先级队列作为目的队列。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
参见图3所示,本申请实施例公开了一种面向流传输的直接内存访问方法,应用于宿端的第二预设DMA控制器,该方法包括:
步骤S21:接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息。
步骤S22:对解析得到所述待传输数据帧和所述描述符进行存储。
源端的第一预设DMA控制器在获取到待传输数据帧之后,生成待传输数据帧对应的描述符,然后将所述待传输数据帧和所述描述符封装成第一TLP帧,然后将所述第一TLP帧传输给宿端的第二预设DMA控制器,对于宿端的第二预设DMA控制器来说,便需要接收源端的第一预设DMA控制器发送的所述第一TLP帧,并对所述第一TLP帧进行解析,也即解析出所述待传输数据帧和所述描述符,并对解析得到所述待传输数据帧和所述描述符进行存储。
还需要接收所述第一预设DMA控制器发送的读描述状态请求帧;根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息,处理完成的数据帧的描述符的状态信息存储在预设的描述符状态信息模块中。在接收到所述源端的第一预设DMA控制器发送的读描述状态请求时,便需要向所述第一预设DMA控制器发送包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息的第二TLP帧。
这样由源端负责描述符的生成以及数据的传输等处理,宿端相对于源端来说呈现若干数据缓存空间,便于操作系统进行管理与实现不同设备的兼容。
在实际应用中,需要先安装驱动程序以实现前述的面向流数据的直接内存访问方法,驱动程序的安装过程如图4所示。驱动程序安装开始后,探测到外设存在DMA功能,即开始读取外设宿端缓存区的参数,包括:数据缓存队列数量、相应的存储区大小以及起始地址,描述符缓存队列的大小以及起始地址,描述符状态队列中的起始地址。并基于该参数初始化CPU的第一预设DMA控制器(DMAC)配置。然后CPU创建自己的宿端缓存区,并将参数配置给外设源端的第一预设DMA控制器(DMAC),待外设的第一预设DMA控制器初始化完成,驱动程序即安装完毕。应用程序运行时,CPU的接收端(C2H方向),始终轮询DMAC控制器的描述符缓存队列,一旦收到新的描述符,即可开始新的数据帧的处理过程。源端DMAC的处理过程始终由数据触发,不需要CPU的参与。为了降低数据传输的时延,使用轮询代替中断是一种有效办法,且现代CPU都是多核处理,多线程并行处理收到的数据帧是提高数据吞吐量的一种办法。CPU的发送端(H2C方向),CPU准备好数据后,直接更新描述符的状态,触发DMAC进行数据帧的发送。
参见图5所示,本申请实施例公开了一种源端的第一预设DMA控制器,包括:
数据帧缓存模块11,用于对获取到的待传输数据帧进行缓存;
描述符生成模块12,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
TLP帧生成和发送控制模块13,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
在一些具体的实施例中,所述TLP帧生成和发送控制模块,还用于:
向所述第二预设DMA控制器发送读描述状态请求帧;
相应地,所述第一预设DMA控制器,还包括:
第一TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
在一些具体的实施例中,所述第一预设DMA控制器,还包括:
描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。
当所述源端为外设时,所述第一预设DMA控制器的结构示意图如图6所示,数据帧缓存模块,用于对获取到的待传输数据帧进行缓存;描述符生成模块,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;TLP帧生成和发送控制模块,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧通过RQ接口传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。TLP帧生成和发送控制模块,还可以向所述第二预设DMA控制器发送读描述状态请求帧。相应的,TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。数据帧缓存队列还可以通过AXIS接口连接MAC模块。
当所述源端为CPU时,由于要收发的数据都在内存中,不需要MAC模块和相关的接口。发送过程由CPU准备好数据后,直接更新描述符,并通知DMAC使用即可,所以不需要上述图6中的AXIS接口。
当所述源端为外设时,为进一步提高处理效率,以上各个模块可以通过硬件实现。
参见图7所示,本申请实施例公开了一种宿端的第二预设DMA控制器,包括:
第二TLP帧解析模块21,用于接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;
数据缓存队列22,用于对解析得到所述待传输数据帧进行存储;
描述符缓存队列23,用于对解析得到所述描述符进行存储。
在一些具体的实施过程中,所述第二TLP帧解析模块,还用于:接收所述第一预设DMA控制器发送的读描述状态请求帧;相应地,所述第二预设DMA控制器,还包括:TLP帧发送模块,用于根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。
当所述源端为外设时,所述第一预设DMA控制器的结构示意图如图8所示,TLP帧解析模块,用于通过CQ接口接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;数据缓存队列,用于对解析得到所述待传输数据帧进行存储;描述符缓存队列,用于对解析得到所述描述符进行存储。所述TLP帧解析模块,还用于:接收所述第一预设DMA控制器发送的读描述状态请求帧;相应地,所述第二预设DMA控制器,还包括:TLP帧发送模块,用于通过CC接口根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。以及数据帧调度模块,将接收到的数据帧通过AXIS接口发送出去。
当所述源端为CPU时,由于要收发的数据都在内存中,不需要MAC模块和相关的接口。接收过程由CPU监测DMAC管理的描述符缓存队列,发现有新的描述符到达,即可开始数据帧的处理,所以不需要上述图8中的AXIS接口。
当所述源端为外设时,为进一步提高处理效率,以上各个模块可以通过硬件实现。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种面向流传输的直接内存访问方法以及DMA控制器进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。