CN112199309A - 基于dma引擎的数据读取方法、装置和数据传输系统 - Google Patents

基于dma引擎的数据读取方法、装置和数据传输系统 Download PDF

Info

Publication number
CN112199309A
CN112199309A CN202011080262.5A CN202011080262A CN112199309A CN 112199309 A CN112199309 A CN 112199309A CN 202011080262 A CN202011080262 A CN 202011080262A CN 112199309 A CN112199309 A CN 112199309A
Authority
CN
China
Prior art keywords
sequence
read request
request command
memory
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011080262.5A
Other languages
English (en)
Other versions
CN112199309B (zh
Inventor
王涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zeshi Technology Wuhan Co Ltd
Beijing Zeshi Technology Co ltd
Original Assignee
Zeshi Technology Wuhan Co Ltd
Beijing Zeshi Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zeshi Technology Wuhan Co Ltd, Beijing Zeshi Technology Co ltd filed Critical Zeshi Technology Wuhan Co Ltd
Priority to CN202011080262.5A priority Critical patent/CN112199309B/zh
Publication of CN112199309A publication Critical patent/CN112199309A/zh
Application granted granted Critical
Publication of CN112199309B publication Critical patent/CN112199309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本申请提供了一种基于DMA引擎的数据读取方法、装置和数据传输系统,该方法包括:接收用户端的读请求命令并按照第一顺序缓存至第一存储器,第一顺序为用户端发送读请求命令的顺序,第一存储器与用户端一一对应;将读请求命令发送至对应的目的存储端,采用第二存储器记录第二顺序,第二顺序为目的存储端接收的读请求命令对应的用户端顺序,第二存储器与目的存储端一一对应;按照第二顺序将返回数据缓存至第三存储器,一个目的存储端对应多个第三存储器,目的存储端对应的第三存储器与用户端一一对应;根据第一顺序将读请求命令对应的返回数据传输至用户端。该方法相比于现有技术减小了DMA引擎和接口数目,进而减小了调度开销。

Description

基于DMA引擎的数据读取方法、装置和数据传输系统
技术领域
本申请涉及数据读取技术领域,具体而言,涉及一种基于DMA引擎的数据读取方法、装置、计算机可读存储介质、处理器和数据传输系统。
背景技术
DMA引擎作为存储控制器中最重要的数据模块之一,其性能优化至关重要。在SSD控制器中,通常会有多个用户端读取多个存储端数据的需求,这种情况一般需要多个DMA读引擎参与数据读取。
当单独用户端间的协调也会对DMA总体性能产生影响。
另外DMA读引擎的性能取决于用户端侧的数据接收能力。
DMA读引擎性能与目的端返回数据的延时,以及用户端侧的数据接收能力直接相关。
通常情况下,一个DMA读引擎只有一个读请求用户端,以及一个存储端作为访问目的地。而多用户端多个存储端访问的场景则需要调用多个DMA读引擎才能满足需求。此时多DMA读引擎对硬件资源占用会是一种浪费,同时会增加调用接口数目,增加调用开销。
随着SSD控制器性能不断提升,对DMA引擎的性能需求也越来丰富。在SSD控制器应用中,数据可能存储于Host的DDR或者Host的SRAM,控制器的DDR或控制器的SRAM。而控制器内部模块可能需要向一个或多个存储端读取数据,并且也会出现多个模块同时向一个存储端读取数据的需求。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解,因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。
发明内容
本申请的主要目的在于提供一种基于DMA引擎的数据读取方法、装置、计算机可读存储介质、处理器和数据传输系统,以解决现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
根据本发明实施例的一个方面,提供了一种基于DMA引擎的数据读取方法,DMA引擎分别与多个用户端和多个目的存储端通信连接,包括:接收所述用户端的读请求命令并按照第一顺序缓存至第一存储器,所述第一顺序为所述用户端发送所述读请求命令的顺序,所述第一存储器与所述用户端一一对应;将所述读请求命令发送至对应的所述目的存储端,采用第二存储器记录第二顺序,所述第二顺序为所述目的存储端接收的所述读请求命令对应的用户端顺序,所述第二存储器与所述目的存储端一一对应;按照所述第二顺序将返回数据缓存至第三存储器,所述返回数据为所述目的存储端根据所述读请求命令返回的数据,一个所述目的存储端对应多个所述第三存储器,所述目的存储端对应的所述第三存储器与所述用户端一一对应;根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端。
可选地,在接收用户端的读请求命令并依次缓存至第一存储器之后,在将所述读请求命令发送至对应的所述目的存储端之前,所述方法还包括:根据所述读请求命令进行轮询调度,按照第一顺序将所述读请求命令对应的目的存储端的编号缓存至第四存储器。
可选地,根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端,包括:根据编号序列将对应的所述返回数据传输至用户端,所述编号序列为所述第四存储器记录的所述目的存储端的编号。
可选地,所述第一存储器、所述第二存储器、所述第三存储器和所述第四存储器均为FIFO存储器。
可选地,所述方法还包括:根据所述目的存储端的读取延时确定对应的所述第三存储器的容量。
可选地,所述方法还包括:根据所述目的存储端配置的带宽确定所述第三存储器的容量。
根据本发明实施例的另一方面,还提供了一种基于DMA引擎的数据读取装置,DMA引擎分别与多个用户端和多个目的存储端通信连接,包括:接收单元,用于接收所述用户端的读请求命令并按照第一顺序缓存至第一存储器,所述第一顺序为所述用户端发送所述读请求命令的顺序,所述第一存储器与所述用户端一一对应;发送单元,用于将所述读请求命令发送至对应的所述目的存储端,采用第二存储器记录第二顺序,所述第二顺序为所述目的存储端接收的所述读请求命令对应的用户端顺序,所述第二存储器与所述目的存储端一一对应;第一传输单元,用于按照所述第二顺序将返回数据缓存至第三存储器,所述返回数据为所述目的存储端根据所述读请求命令返回的数据,一个所述目的存储端对应多个所述第三存储器,所述目的存储端对应的所述第三存储器与所述用户端一一对应;第二传输单元,用于根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端。
根据本发明实施例的再一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行任意一种所述的方法。
根据本发明实施例的又一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的方法。
根据本发明实施例的再一方面,还提供了一种数据传输系统,包括DMA引擎和基于DMA引擎的数据读取装置,所述数据读取装置用于执行任意一种所述的方法。
在本发明实施例中,上述基于DMA引擎的数据读取方法中,DMA引擎分别与多个用户端和多个目的存储端通信连接,首先,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,然后,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,之后,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,最后,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述方法通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的一种实施例的基于DMA引擎的数据读取方法的示意图;以及
图2示出了根据本申请的一种实施例的基于DMA引擎的数据读取装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,在说明书以及权利要求书中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
DMA引擎,Direct Memory Access,允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载,否则,CPU需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方,在这个时间中,CPU对于其他的工作来说就无法使用;
FIFO存储器,First Input First Output,先进入的指令先完成并引退,跟着才执行第二条指令。
正如背景技术中所说的,现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种基于DMA引擎的数据读取方法、装置、计算机可读存储介质、处理器和数据传输系统。
根据本申请的实施例,提供了一种基于DMA引擎的数据读取方法,其中,DMA引擎分别与多个用户端和多个目的存储端通信连接。
图1是根据本申请实施例的基于DMA引擎的数据读取方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应;
步骤S102,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应;
步骤S103,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应;
步骤S104,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。
上述基于DMA引擎的数据读取方法中,DMA引擎分别与多个用户端和多个目的存储端通信连接,首先,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,然后,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,之后,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,最后,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述方法通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
需要说明的是,按照上述第二顺序将返回数据缓存至第三存储器,以使得目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端,以使得返回到用户端的返回数据需要与用户发出的读请求命令顺序一致,这两个顺序一致可以使得一个DMA引擎满足多个用户端读取多个目的存储端的数据的需求,但是,不能保证不同用户端读取的返回数据的顺序与发出的读请求的顺序一致,以避免用户端等待其他用户端的读取进程,以提高数据读取的效率。
还需要说明的是,DMA引擎通过I/O接口分别与多个用户端和多个目的存储端通信连接,当然,DMA引擎也可以其他方式与多个用户端和多个目的存储端实现通信连接。其中,多个用户端采用格式相同的接口,接口包含目的存储端编号、目的存储端访问起始地址以及读请求长度等信息,以便于用户端通过DMA引擎直接访问目的存储端,目的存储端编号也可以使用其他信息经过重新映射或得,具体方案根据实际应用灵活选择。
还需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请的一种实施例中,在接收用户端的读请求命令并依次缓存至第一存储器之后,在将上述读请求命令发送至对应的上述目的存储端之前,上述方法还包括:根据上述读请求命令进行轮询调度,按照第一顺序将上述读请求命令对应的目的存储端的编号缓存至第四存储器。具体地,根据读请求命令进行轮询调度,以使得读请求命令按照顺序发送至对应的目的存储端,避免前一个读请求命令没有执行完成就接收到下一个读请求命令。另外,轮询调度后,按照第一顺序将上述读请求命令对应的目的存储端的编号缓存至第四存储器,以便于根据编号将第三存储器缓存的返回数据按照第一顺序传输至用户端,进一步使得目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致。
本申请的一种实施例中,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端,包括:根据编号序列将对应的上述返回数据传输至用户端,上述编号序列为上述第四存储器记录的上述目的存储端的编号。具体地,根据编号序列即可得到目的存储端的编号,根据目的存储端的编号以及用户端即可确定对应的第三存储器,从而将第三存储器缓存的返回数据传输至用户端。
本申请的一种实施例中,上述第一存储器、上述第二存储器、上述第三存储器和上述第四存储器均为FIFO存储器。具体地,FIFO存储器可以根据先入先出的队列进行写入和读取,进一步保证目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致,以及返回到用户端的返回数据需要与用户发出的读请求命令顺序一致。当然,上述第一存储器、上述第二存储器、上述第三存储器和上述第四存储器也不限于FIFO存储器,本领域技术人员可以选择其他的存储器,以保证写入和读取的顺序相同即可。
在实际数据读取过程中,某用户端先发出第一读请求命令向第一目的存储端请求数据,然后发出第二读请求命令向第二目的存储端请求数据,第一目的存储端的读取延时为64cycle,第二目的存储端的读取延时为32cycle,cycle为DMA引擎的时钟周期,因此,现有技术采用DMA引擎将请求的数据直接返回客户端,第二读请求命令请求的数据先返回用户端,用户端向第二目的存储端反压,减小第二目的存储端的传输信道的带宽,直至第一读请求命令请求的数据返回用户端才会解压,而采用第三存储器缓存第二读请求命令请求的数据,等第一读请求命令请求的数据缓存至第三存储器,用户端迅速取回数据,不会产生反压,从而也不会减小第二目的存储端的传输信道的带宽,进一步提高了数据读取的速度。
本申请的一种实施例中,上述方法还包括:根据上述目的存储端的读取延时确定对应的上述第三存储器的容量。具体地,由于目的存储端对应第三存储器需要缓存的数据量小于目的存储端的读取延时内传输信道传输的数据量,因此,根据目的存储端的读取延时计算读取延时内传输信道传输的数据量,并将该数据量配置目的存储端对应的第三存储器的容量,即可避免产生反压,从而也不会减小目的存储端的传输信道的带宽,进一步提高了数据读取的速度,例如,DMA引擎的总线宽度为16字节,目的存储端的读取延时为64cycle,则目的存储端对应的第三存储器的容量配置为1024。
本申请的一种实施例中,上述方法还包括:根据上述目的存储端配置的带宽确定上述第三存储器的容量。具体地,本领域技术人员可以根据实际情况配置目的存储端的传输通道的带宽,例如,根据业务需求配置目的存储端的传输通道的带宽,读写命令对应的目的存储端的传输通道可以满宽度配置,SQE读取对应的目的存储端的传输通道可以满宽度配置。在此情况下,根据目的存储端配置的带宽和读取延时计算读取延时内传输信道传输的数据量,并将该数据量配置目的存储端对应的第三存储器的容量,即可避免产生反压,从而也不会减小目的存储端的传输信道的带宽,进一步提高了数据读取的速度,例如,DMA引擎的总线宽度为16字节,目的存储端的读取延时为64cycle,该目的存储端的传输通道半宽度配置,则目的存储端对应的第三存储器的容量配置为512。
本申请实施例还提供了一种基于DMA引擎的数据读取装置,需要说明的是,本申请实施例的基于DMA引擎的数据读取装置可以用于执行本申请实施例所提供的用于基于DMA引擎的数据读取方法。以下对本申请实施例提供的基于DMA引擎的数据读取装置进行介绍,其中,DMA引擎分别与多个用户端和多个目的存储端通信连接。
图2是根据本申请实施例的基于DMA引擎的数据读取装置的示意图。如图2所示,该装置包括:
接收单元10,用于接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应;
发送单元20,用于将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应;
第一传输单元30,用于按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应;
第二传输单元40,用于根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。
上述基于DMA引擎的数据读取装置中,DMA引擎分别与多个用户端和多个目的存储端通信连接,接收单元接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,发送单元将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,第一传输单元按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,第二传输单元根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述装置通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
需要说明的是,按照上述第二顺序将返回数据缓存至第三存储器,以使得目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端,以使得返回到用户端的返回数据需要与用户发出的读请求命令顺序一致,这两个顺序一致可以使得一个DMA引擎满足多个用户端读取多个目的存储端的数据的需求,但是,不能保证不同用户端读取的返回数据的顺序与发出的读请求的顺序一致,以避免用户端等待其他用户端的读取进程,以提高数据读取的效率。
还需要说明的是,DMA引擎通过I/O接口分别与多个用户端和多个目的存储端通信连接,当然,DMA引擎也可以其他方式与多个用户端和多个目的存储端实现通信连接。其中,多个用户端采用格式相同的接口,接口包含目的存储端编号、目的存储端访问起始地址以及读请求长度等信息,以便于用户端通过DMA引擎直接访问目的存储端,目的存储端编号也可以使用其他信息经过重新映射或得,具体方案根据实际应用灵活选择。
本申请的一种实施例中,上述装置还包括第一处理单元,上述第一处理单元用于在接收用户端的读请求命令并依次缓存至第一存储器之后,在将上述读请求命令发送至对应的上述目的存储端之前,根据上述读请求命令进行轮询调度,按照第一顺序将上述读请求命令对应的目的存储端的编号缓存至第四存储器。具体地,根据读请求命令进行轮询调度,以使得读请求命令按照顺序发送至对应的目的存储端,避免前一个读请求命令没有执行完成就接收到下一个读请求命令。另外,轮询调度后,按照第一顺序将上述读请求命令对应的目的存储端的编号缓存至第四存储器,以便于根据编号将第三存储器缓存的返回数据按照第一顺序传输至用户端,进一步使得目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致。
本申请的一种实施例中,上述第二传输单元包括传输模块,上述传输模块用于根据编号序列将对应的上述返回数据传输至用户端,上述编号序列为上述第四存储器记录的上述目的存储端的编号。具体地,根据编号序列即可得到目的存储端的编号,根据目的存储端的编号以及用户端即可确定对应的第三存储器,从而将第三存储器缓存的返回数据传输至用户端。
本申请的一种实施例中,上述第一存储器、上述第二存储器、上述第三存储器和上述第四存储器均为FIFO存储器。具体地,FIFO存储器可以根据先入先出的队列进行写入和读取,进一步保证目的存储端返回的数据与发送至目的存储端的读请求命令的顺序一致,以及返回到用户端的返回数据需要与用户发出的读请求命令顺序一致。当然,上述第一存储器、上述第二存储器、上述第三存储器和上述第四存储器也不限于FIFO存储器,本领域技术人员可以选择其他的存储器,以保证写入和读取的顺序相同即可。
在实际数据读取过程中,某用户端先发出第一读请求命令向第一目的存储端请求数据,然后发出第二读请求命令向第二目的存储端请求数据,第一目的存储端的读取延时为64cycle,第二目的存储端的读取延时为32cycle,因此,现有技术采用DMA引擎将请求的数据直接返回客户端,第二读请求命令请求的数据先返回用户端,用户端向第二目的存储端反压,减小第二目的存储端的传输信道的带宽,直至第一读请求命令请求的数据返回用户端才会解压,而采用第三存储器缓存第二读请求命令请求的数据,等第一读请求命令请求的数据缓存至第三存储器,用户端迅速取回数据,不会产生反压,从而也不会减小第二目的存储端的传输信道的带宽,进一步提高了数据读取的速度。
本申请的一种实施例中,上述装置还包括第二处理单元,上述第二处理单元用于根据上述目的存储端的读取延时确定对应的上述第三存储器的容量。具体地,由于目的存储端对应第三存储器需要缓存的数据量小于目的存储端的读取延时内传输信道传输的数据量,因此,根据目的存储端的读取延时计算读取延时内传输信道传输的数据量,并将该数据量配置目的存储端对应的第三存储器的容量,即可避免产生反压,从而也不会减小目的存储端的传输信道的带宽,进一步提高了数据读取的速度,例如,DMA引擎的总线宽度为16字节,目的存储端的读取延时为64cycle,则目的存储端对应的第三存储器的容量配置为1024。
本申请的一种实施例中,上述装置还包括第三处理单元,上述第三处理单元用于根据上述目的存储端配置的带宽确定上述第三存储器的容量。具体地,本领域技术人员可以根据实际情况配置目的存储端的传输通道的带宽,例如,根据业务需求配置目的存储端的传输通道的带宽,读写命令对应的目的存储端的传输通道可以满宽度配置,SQE读取对应的目的存储端的传输通道可以满宽度配置。在此情况下,根据目的存储端配置的带宽和读取延时计算读取延时内传输信道传输的数据量,并将该数据量配置目的存储端对应的第三存储器的容量,即可避免产生反压,从而也不会减小目的存储端的传输信道的带宽,进一步提高了数据读取的速度。例如,DMA引擎的总线宽度为16字节,目的存储端的读取延时为64cycle,该目的存储端的传输通道半宽度配置,则目的存储端对应的第三存储器的容量配置为512。
本申请实施例还提供了一种数据传输系统,包括DMA引擎和基于DMA引擎的数据读取装置,上述数据读取装置用于执行任意一种上述的方法。
上述数据传输系统中,包括DMA引擎和基于DMA引擎的数据读取装置,DMA引擎分别与多个用户端和多个目的存储端通信连接,接收单元接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,发送单元将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,第一传输单元按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,第二传输单元根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述装置通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
上述基于DMA引擎的数据读取装置包括处理器和存储器,上述接收单元、发送单元、第一传输单元和第二传输单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述数据读取方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述数据读取方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应;
步骤S102,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应;
步骤S103,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应;
步骤S104,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应;
步骤S102,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应;
步骤S103,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应;
步骤S104,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的基于DMA引擎的数据读取方法中,DMA引擎分别与多个用户端和多个目的存储端通信连接,首先,接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,然后,将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,之后,按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,最后,根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述方法通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
2)、本申请的基于DMA引擎的数据读取装置中,DMA引擎分别与多个用户端和多个目的存储端通信连接,接收单元接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,发送单元将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,第一传输单元按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,第二传输单元根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述装置通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
3)、本申请的数据传输系统中,包括DMA引擎和基于DMA引擎的数据读取装置,DMA引擎分别与多个用户端和多个目的存储端通信连接,接收单元接收上述用户端的读请求命令并按照第一顺序缓存至第一存储器,上述第一顺序为上述用户端发送上述读请求命令的顺序,上述第一存储器与上述用户端一一对应,发送单元将上述读请求命令发送至对应的上述目的存储端,采用第二存储器记录第二顺序,上述第二顺序为上述目的存储端接收的上述读请求命令对应的用户端顺序,上述第二存储器与上述目的存储端一一对应,第一传输单元按照上述第二顺序将返回数据缓存至第三存储器,上述返回数据为上述目的存储端根据上述读请求命令返回的数据,一个上述目的存储端对应多个上述第三存储器,上述目的存储端对应的上述第三存储器与上述用户端一一对应,第二传输单元根据上述第一顺序将上述读请求命令对应的上述返回数据传输至用户端。上述装置通过第二存储器使得目的存储端按照第二顺序将返回数据缓存至第三存储器,通过第一存储器使得用户端按照第一顺序从第三存储器获取返回数据,从而使得一个DMA引擎即可满足多个用户访问多个目的存储端的需求,相比于现有技术采用多个DMA引擎,减小了DMA引擎和接口数目,进而减小了调度开销,解决了现有技术中采用多个DMA引擎实现多用户端访问多个存储端导致成本高的问题。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于DMA引擎的数据读取方法,DMA引擎分别与多个用户端和多个目的存储端通信连接,其特征在于,包括:
接收所述用户端的读请求命令并按照第一顺序缓存至第一存储器,所述第一顺序为所述用户端发送所述读请求命令的顺序,所述第一存储器与所述用户端一一对应;
将所述读请求命令发送至对应的所述目的存储端,采用第二存储器记录第二顺序,所述第二顺序为所述目的存储端接收的所述读请求命令对应的用户端顺序,所述第二存储器与所述目的存储端一一对应;
按照所述第二顺序将返回数据缓存至第三存储器,所述返回数据为所述目的存储端根据所述读请求命令返回的数据,一个所述目的存储端对应多个所述第三存储器,所述目的存储端对应的所述第三存储器与所述用户端一一对应;
根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端。
2.根据权利要求1所述的方法,其特征在于,在接收用户端的读请求命令并依次缓存至第一存储器之后,在将所述读请求命令发送至对应的所述目的存储端之前,所述方法还包括:
根据所述读请求命令进行轮询调度,按照第一顺序将所述读请求命令对应的目的存储端的编号缓存至第四存储器。
3.根据权利要求2所述的方法,其特征在于,根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端,包括:
根据编号序列将对应的所述返回数据传输至用户端,所述编号序列为所述第四存储器记录的所述目的存储端的编号。
4.根据权利要求2所述的方法,其特征在于,所述第一存储器、所述第二存储器、所述第三存储器和所述第四存储器均为FIFO存储器。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述目的存储端的读取延时确定对应的所述第三存储器的容量。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述目的存储端配置的带宽确定所述第三存储器的容量。
7.一种基于DMA引擎的数据读取装置,DMA引擎分别与多个用户端和多个目的存储端通信连接,其特征在于,包括:
接收单元,用于接收所述用户端的读请求命令并按照第一顺序缓存至第一存储器,所述第一顺序为所述用户端发送所述读请求命令的顺序,所述第一存储器与所述用户端一一对应;
发送单元,用于将所述读请求命令发送至对应的所述目的存储端,采用第二存储器记录第二顺序,所述第二顺序为所述目的存储端接收的所述读请求命令对应的用户端顺序,所述第二存储器与所述目的存储端一一对应;
第一传输单元,用于按照所述第二顺序将返回数据缓存至第三存储器,所述返回数据为所述目的存储端根据所述读请求命令返回的数据,一个所述目的存储端对应多个所述第三存储器,所述目的存储端对应的所述第三存储器与所述用户端一一对应;
第二传输单元,用于根据所述第一顺序将所述读请求命令对应的所述返回数据传输至用户端。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1至6中任意一项所述的方法。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的方法。
10.一种数据传输系统,包括DMA引擎和基于DMA引擎的数据读取装置,其特征在于,所述数据读取装置用于执行权利要求1至6中任意一项所述的方法。
CN202011080262.5A 2020-10-10 2020-10-10 基于dma引擎的数据读取方法、装置和数据传输系统 Active CN112199309B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011080262.5A CN112199309B (zh) 2020-10-10 2020-10-10 基于dma引擎的数据读取方法、装置和数据传输系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011080262.5A CN112199309B (zh) 2020-10-10 2020-10-10 基于dma引擎的数据读取方法、装置和数据传输系统

Publications (2)

Publication Number Publication Date
CN112199309A true CN112199309A (zh) 2021-01-08
CN112199309B CN112199309B (zh) 2022-03-15

Family

ID=74013374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011080262.5A Active CN112199309B (zh) 2020-10-10 2020-10-10 基于dma引擎的数据读取方法、装置和数据传输系统

Country Status (1)

Country Link
CN (1) CN112199309B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434441A (zh) * 2021-06-24 2021-09-24 深圳市航顺芯片技术研发有限公司 一种dma传输方法、装置、控制器及可读存储介质
CN116521095A (zh) * 2023-07-03 2023-08-01 摩尔线程智能科技(北京)有限责任公司 响应输出系统、方法、电子设备、存储介质及程序产品
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置
CN117349203A (zh) * 2023-10-23 2024-01-05 哈尔滨商业大学 一种控制数据处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101907986A (zh) * 2010-08-30 2010-12-08 威盛电子股份有限公司 访问多个存储器的数据处理设备和数据处理方法
CN103064807A (zh) * 2012-12-17 2013-04-24 福建星网锐捷网络有限公司 多通道直接存储器存取控制器
CN103678202A (zh) * 2013-11-26 2014-03-26 北京时代民芯科技有限公司 一种多核处理器的dma控制器
CN103714027A (zh) * 2014-01-10 2014-04-09 浪潮(北京)电子信息产业有限公司 一种直接内存存取控制器的数据传输方法及装置
US20140115265A1 (en) * 2012-10-24 2014-04-24 Texas Instruments Incorporated Optimum cache access scheme for multi endpoint atomic access in a multicore system
CN106776390A (zh) * 2016-12-06 2017-05-31 中国电子科技集团公司第三十二研究所 多设备访问存储器的实现方法
CN107209681A (zh) * 2015-10-21 2017-09-26 华为技术有限公司 一种存储设备访问方法、装置和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101907986A (zh) * 2010-08-30 2010-12-08 威盛电子股份有限公司 访问多个存储器的数据处理设备和数据处理方法
US20140115265A1 (en) * 2012-10-24 2014-04-24 Texas Instruments Incorporated Optimum cache access scheme for multi endpoint atomic access in a multicore system
CN103064807A (zh) * 2012-12-17 2013-04-24 福建星网锐捷网络有限公司 多通道直接存储器存取控制器
CN103678202A (zh) * 2013-11-26 2014-03-26 北京时代民芯科技有限公司 一种多核处理器的dma控制器
CN103714027A (zh) * 2014-01-10 2014-04-09 浪潮(北京)电子信息产业有限公司 一种直接内存存取控制器的数据传输方法及装置
CN107209681A (zh) * 2015-10-21 2017-09-26 华为技术有限公司 一种存储设备访问方法、装置和系统
CN106776390A (zh) * 2016-12-06 2017-05-31 中国电子科技集团公司第三十二研究所 多设备访问存储器的实现方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434441A (zh) * 2021-06-24 2021-09-24 深圳市航顺芯片技术研发有限公司 一种dma传输方法、装置、控制器及可读存储介质
CN116521095A (zh) * 2023-07-03 2023-08-01 摩尔线程智能科技(北京)有限责任公司 响应输出系统、方法、电子设备、存储介质及程序产品
CN116521095B (zh) * 2023-07-03 2023-09-08 摩尔线程智能科技(北京)有限责任公司 响应输出系统、方法、电子设备、存储介质及程序产品
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置
CN116719764B (zh) * 2023-08-07 2023-12-01 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置
CN117349203A (zh) * 2023-10-23 2024-01-05 哈尔滨商业大学 一种控制数据处理方法及装置
CN117349203B (zh) * 2023-10-23 2024-06-14 哈尔滨商业大学 一种控制数据处理方法及装置

Also Published As

Publication number Publication date
CN112199309B (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
CN112199309B (zh) 基于dma引擎的数据读取方法、装置和数据传输系统
CN112612734B (zh) 文件传输方法、装置、计算机设备及存储介质
US8788726B2 (en) Data transmission system, storage medium and data transmission program
CN107783727B (zh) 一种内存设备的访问方法、装置和系统
CN102945215A (zh) 信息处理设备和方法
CN106598752B (zh) 远程零拷贝方法
CN113986791B (zh) 一种智能网卡快速dma设计方法、系统、设备及终端
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
WO2023000770A1 (zh) 一种处理访问请求的方法、装置、存储设备及存储介质
WO2019047834A1 (zh) 用于传输数据处理请求的方法和装置
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
CN114546913A (zh) 一种基于pcie接口的多主机之间数据高速交互的方法和装置
CN115374046B (zh) 一种多处理器数据交互方法、装置、设备及存储介质
CN116483738B (zh) 数据访问方法及装置、存储介质及电子装置
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
CN116881191B (zh) 数据处理方法、装置、设备及存储介质
CN115079936A (zh) 一种数据写入方法及装置
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
CN114077588B (zh) 一种预读方法及装置
CN109032965B (zh) 一种数据读取方法、主机及存储设备
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN114265791A (zh) 一种数据调度方法、芯片以及电子设备
CN112732166B (zh) 访问固态硬盘的方法及装置
CN116601616A (zh) 一种数据处理装置、方法及相关设备
CN116775510B (zh) 数据访问方法、装置、服务器和计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant