CN114443529A - 内存直接访问架构、系统、方法、电子设备和介质 - Google Patents

内存直接访问架构、系统、方法、电子设备和介质 Download PDF

Info

Publication number
CN114443529A
CN114443529A CN202210340235.XA CN202210340235A CN114443529A CN 114443529 A CN114443529 A CN 114443529A CN 202210340235 A CN202210340235 A CN 202210340235A CN 114443529 A CN114443529 A CN 114443529A
Authority
CN
China
Prior art keywords
descriptor
read
component
write
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
CN202210340235.XA
Other languages
English (en)
Other versions
CN114443529B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210340235.XA priority Critical patent/CN114443529B/zh
Publication of CN114443529A publication Critical patent/CN114443529A/zh
Application granted granted Critical
Publication of CN114443529B publication Critical patent/CN114443529B/zh
Priority to PCT/CN2022/134792 priority patent/WO2023185035A1/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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)

Abstract

本申请公开了内存直接访问架构,包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件;内存直接访问控制部件包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件;控制寄存器用于被主机设置得到描述符地址信息;读描述符存储部件用于存储利用控制寄存器得到的读描述符;写描述符存储部件用于存储利用控制寄存器得到的写描述符;读命令传输部件用于向读数据搬移部件发送基于读描述符或描述符地址信息得到的读命令;写命令传输部件用于向写数据搬移部件发送基于读描述符得到的写命令;读数据搬移部件用于执行读命令,写数据搬移部件用于执行写命令;该架构能够读写并行处理,效率高。

Description

内存直接访问架构、系统、方法、电子设备和介质
技术领域
本申请涉及计算机技术领域,特别涉及一种内存直接访问架构、系统、方法、电子设备和介质。
背景技术
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,PCIE具有两种数据传输方式:1、DMA(Direct Memory Access),直接内存访问,在该模式下,数据传送不是由CPU(中央处理器)负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源;2、PIO(Programmed Input-Output),可编程输入输出,在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。故此,DMA模式优于PIO模式。
目前实现DMA的方式是有两种,链式DMA与块DMA方式。在DMA传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但是在某些计算机体系中,连续的存储器地址在物理上不一定是连续的,所以DMA传输要分成多次完成。如果在传输完一块物理上连续的数据后引起一次中断,然后再由主机进行下一块物理上连续的数据传输,则为块DMA方式。链式DMA方式则不同,它使用一个链表描述物理上不连续的存储空间,然后把链表首地址告诉DMA控制器。DMA控制器在传输完一块物理连续的数据后,不用发起中断,而是根据链表来传输下一块物理上连续的数据,直到传输完毕后再发起一次中断。然而,当前链式DMA的传输效率仍较低。
因此,相关技术存在的链式DMA的传输效率仍较低的问题,是本领域技术人员需要解决的技术问题。
发明内容
有鉴于此,本申请的目的在于提供一种内存直接访问架构、系统、方法、电子设备和介质,提高了DMA的传输效率。
为解决上述技术问题,本申请提供了一种内存直接访问架构,应用于数字电路,包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件;
所述内存直接访问控制部件包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件;
所述控制寄存器用于被主机设置得到描述符地址信息;
所述读描述符存储部件用于存储利用控制寄存器得到的读描述符;
所述写描述符存储部件用于存储利用控制寄存器得到的写描述符;
所述读命令传输部件用于向所述读数据搬移部件发送基于读描述符或所述描述符地址信息得到的读命令;
所述写命令传输部件用于向所述写数据搬移部件发送基于读描述符得到的写命令;
所述读数据搬移部件用于执行所述读命令,所述写数据搬移部件用于执行所述写命令,所述数据存储部件用于存储所述读命令执行后得到的读数据。
可选地,所述数字电路为现场可编程逻辑门阵列电路,或者为数字集成电路。
可选地,所述内存直接访问控制部件用于接收所述读数据搬移部件和所述写数据搬移部件发送的搬移完毕通知;
所述内存直接访问控制部件包括状态更新部件,所述状态更新部件用于在检测到目标描述符执行完毕后,更新所述主机的系统内存中所述目标描述符对应的目标状态位数据。
可选地,还包括先入先出缓存器,所述先入先出缓存器用于缓存所述读命令执行后得到的读数据包;
所述读数据包包括与所述读命令对应的数据包标签,所述读数据包按照所述数据包标签进行先后顺序排列得到所述读数据。
可选地,所述内存直接访问控制部件包括中断上报部件,所述中断上报部件用于在检测到目标描述符执行完毕后,向所述主机发送中断消息。
可选地,还包括与目标总线连接的通讯部件;
所述通讯部件用于向所述目标总线发送第一数据包,或者用于从所述目标总线上获取第二数据包,并基于所述第二数据包的数据包类型,将所述第二数据包发送至对应的部件。
可选地,所述读描述符存储部件和写描述符存储部件为先入先出存储器,所述读描述符存储部件和写描述符存储部件被预先定义了存储地址;
所述控制寄存器包括源地址寄存器、目的地址寄存器、描述符大小寄存器、触发寄存器,其中,所述目的地址寄存器用于存储任一所述存储地址。
本申请还提供了一种电子设备,所述电子设备应用了上述的内存直接访问架构。
本申请还提供了一种内存直接访问系统,包括主机和上述的电子设备,所述主机和所述电子设备通过目标总线连接。
本申请还提供了一种内存直接访问方法,应用于上述的电子设备,所述方法包括:
若检测到内存直接访问控制部件的控制寄存器被触发,则获取描述符地址信息;
利用所述内存直接访问控制部件,基于所述描述符地址信息生成描述符读命令;
利用读数据搬移部件执行所述描述符读命令,得到描述符,并将所述描述符写入所述内存直接访问控制部件的描述符存储部件;
利用所述内存直接访问控制部件,基于所述描述符生成访问命令;
基于所述访问命令的种类,利用读数据搬移部件或写数据搬移部件执行所述访问命令。
本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的内存直接访问方法。
本申请提供的内存直接访问架构,应用于数字电路,包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件;内存直接访问控制部件包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件;控制寄存器用于被主机设置得到描述符地址信息;读描述符存储部件用于存储利用控制寄存器得到的读描述符;写描述符存储部件用于存储利用控制寄存器得到的写描述符;读命令传输部件用于向读数据搬移部件发送基于读描述符或描述符地址信息得到的读命令;写命令传输部件用于向写数据搬移部件发送基于读描述符得到的写命令;读数据搬移部件用于执行读命令,写数据搬移部件用于执行写命令,数据存储部件用于存储读命令执行后得到的读数据。
可见,该架构中设置了读数据搬移部件和写数据搬移部件,分别用于执行读命令和写命令,此外还分别对应设置了读描述符存储部件和写描述符存储部件,使得数字电路能够读写并行处理。此外,读数据搬移部件还能够执行描述符地址信息得到的读命令,能够实现对描述符的搬移,利用同一套部件完成对描述符以及数据的搬移,节省硬件资源。
此外,本申请还提供了一种系统、方法、电子设备和介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种内存直接访问架构的结构示意图;
图2为本申请实施例提供的一种主机内存的结构示意图;
图3为本申请实施例提供的一种具体的主机内存的机构示意图;
图4为本申请实施例提供的一种数据搬移的过程示意图;
图5为本申请实施例提供的一种内存直接访问方法的流程图;
图6为本申请实施例提供的一种主机内存写入流程图;
图7为本申请实施例提供的一种主机内存读取流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
当前,链式DMA存在传输效率较低的问题,具体包括在读取数据时不支持数据乱序接收、无法与标准总线互连、无法进行读写并行处理、带宽利用率较低等问题。
为了解决上述问题,本申请提出了一种新的内存直接访问架构,该架构应用于数字电路,具体可以为现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)电路,或者可以为数字集成(digital integrated circuit,数字IC)电路。整个架构包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件,内存直接访问控制部件进一步包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件。
请参考图1,图1为一种具体的实施方式,其中示出了内存直接访问控制部件DMADescriptor Controller,读数据搬移部件PCIe Read DMA Data Mover,写数据搬移部件PCIe Write DMA Data Mover,数据存储部件DDR&RAM。内存直接访问控制部件进一步包括控制寄存器Control Register、读描述符存储部件Read Descriptor Table Slave、写描述符存储部件Write Descriptor Table Slave、读命令传输部件Read DMA Control Source、写命令传输部件Write DMA Control Source。
其中,控制寄存器用于被主机设置得到描述符地址信息,具体的,主机能够设置控制寄存器的寄存器值,使得控制寄存器能够根据写入的寄存器值定位描述符,即得到描述符地址,进而从主机内存中读出描述符,以便进一步根据描述符执行DMA读写。在一种实施方式中,控制寄存器(或者可以称为DMA描述符控制寄存器)通过BAR(Base Addressregister,基地址寄存器)空间访问,例如可以对应于PCIe总线的BAR0,在这种情况下,控制寄存器对应的地址偏移量可以为0x0000,需要注意的是,该地址偏移量可以根据需要进行设置,具体不做限定。
在一种实施方式中,控制寄存器的结构可以如下所示:
表1 读状态控制寄存器的结构示意图
Figure 666424DEST_PATH_IMAGE002
其中,MSI为Message Signal Interrupt,是PCIe设备通过写一个特定消息到特定地址,从而触发一个处理器中断的机制。RC,Root Complex,根组件,通常指主机,ED,EndPoint,终端设备,即本申请中的数字电路,例如可以指FPGA电路。R表示读(Read),W表示写(Write)。
在一种实施方式中,读描述符存储部件和写描述符存储部件为先入先出存储器,读描述符存储部件和写描述符存储部件被预先定义了存储地址。FIFO为First InputFirst Output,先入先出队列,或称为先入先出存储器,在该实施方式中,描述符在数字电路中被存放于FIFO中,并为FIFO赋予地址,使得其能够被地址标识,以便使得该数字电路能够与标准总线互连,便于开发。相应的,控制寄存器包括源地址寄存器、目的地址寄存器、描述符大小寄存器、触发寄存器,其中,目的地址寄存器用于存储任一存储地址。
需要说明的是,上述的示例为读取读描述符时的配置,在读取写描述符时,该控制寄存器结构为:
表2 写状态控制寄存器结构示意图
Figure 52406DEST_PATH_IMAGE003
二者区别在于,在该状态下,DMA描述符控制寄存器的起始地址偏移量被设置为0x0100,当然,该地址偏移量同样可以根据需要进行设置,具体不做限定。
其中,RC Write Status and Descriptor Base (Low)和RC Write Status andDescriptor Base (High),或者RC Read Status and Descriptor Base (Low)和RC ReadStatus and Descriptor Base (High),构成描述符地址信息,根据该描述符地址信息,能够定位读描述符或写描述符,进而进行读取。
内存直接访问控制部件能够根据描述符或者描述符地址信息生成对应的读命令或写命令,读数据搬移部件和写数据搬移部件中同样具有控制器,例如图1中的Read DMAData Master和Write DMA Data Master,用于控制指令执行。为了能够实现读写并行处理,本申请设置有读描述符存储部件和写描述符存储部件,其中,读描述符存储部件用于存储利用控制寄存器得到的读描述符,写描述符存储部件用于存储利用控制寄存器得到的写描述符。读描述符为指示数字电路从主机中读取数据到自身的描述符,写描述符为指示数字电路将自身的数据写入到主机中的描述符。与二者相配合工作的是读命令传输部件和写命令传输部件,读命令传输部件用于向读数据搬移部件发送基于读描述符得到的读命令,或者基于描述符地址信息得到的读命令,可以理解的是,基于描述符地址信息得到的读命令即用于读取描述符的命令,通过该方式,可以利用同一套部件完成对描述符以及数据的搬移,节省硬件资源。写命令传输部件用于向写数据搬移部件发送基于读描述符得到的写命令。此外,还包括读数据搬移部件和写数据搬移部件,读数据搬移部件用于执行读命令,写数据搬移部件用于执行写命令,数据存储部件用于存储读命令执行后得到的读数据。
具体的,描述符预先存储在主机中,具体的,主机内存中具有描述符表,描述符表具有存储若干数量的描述符的空间,具体数量不做限定,例如可以为128个,每个描述符对应的空间大小不做限定,例如可以为8个word,或者可以为32个字节。此外,在另一种实施方式中,描述符表中还可以存在与各个描述符分别一一对应的状态表,状态表中的数据能够根据描述符的执行情况进行更新,在主机需要时,能够读取状态表中的数据,确定各个描述符的执行情况,在必要时,可以更新已经被执行完毕的描述符,以便数字电路能够连续不断地进行数据读写,提高效率。
本实施例并不限定状态表和描述符表的具体形式,在一种实施方式中,请参考图2,图2示出了一种主机内存结构,主机内存中采用状态表+描述符表的形式,前面是状态表,后面是描述符表。状态表的地址可以为RC Write Status and Descriptor Base或者RCRead Status and Descriptor Base地址,在这种情况下,描述符表的地址即为基地址+偏移地址,偏移地址与状态表的总体大小相关,例如图2所示,当有128个状态表,每个状态表32个比特位时,偏移地址为0x200。每个状态表中有31个比特位为预留操作位(reserved),另一个为标识操作位(done),标识操作位用于表示对应的描述符的执行状态。
描述符的具体结构不做限定,可以根据需要进行设置。具体的,在一种实施方式中,读描述符的结构可以为:
表3 读描述符结构示意图
Figure 35405DEST_PATH_IMAGE004
相应的,写描述符的结构可以为:
表4 写描述符结构示意图
Figure 571560DEST_PATH_IMAGE006
描述符的具体内容不做限定,可以根据实际需要进行设置,例如请参考图3,图3中示出了三个描述符的具体内容,即descriptor 0、descriptor 1和descriptor 2。请参考图4,图4为本申请实施例提供的一种数据搬移的过程示意图,具体为将三个数据块从主机内存移动到FPGA总线地址空间。
为了完成该操作,主机首先需要计算需要分配所需的内存空间大小,在一种实施方式中,每个状态表中的条目为4字节,128个条目即需要512字节的内存;每个描述符的大小为32个字节,以图2和图3为例,三个描述符需要96字节的内存,因此状态表和描述符表的总内存分配为608字节。
然后,主机在PCI Express地址空间中分配608字节的内存,具体的,分配内存的起始地址可以是0xf000_0000,将此地址写入Root Complex Read Status and Descriptor寄存器中。基地址为0xf000_0000,那么第一个描述符的地址即为基地址+偏移地址,即0xf000_0000+0x200,因此在主机内存空间的0xf000_0204中写入高32bit源地址 0,在0xf000_0200中写入低32bit源地址0x1000_0000,在0xf000_0200c中写入高32bit目的地址0,在0xf000_0208中写入低32bit目的地址0x5000_0000,在0xf000_0210中写入0x0000_4000 发送16Kdwords(64KB),描述符ID为0,完成对第一个描述符的具体设置。重复该步骤两次,完成剩余两个描述符的设置,完成后的效果图即为图3。
主机通过bar0配置控制寄存器,以便控制寄存器读取读状态描述符基地址,具体可以使用64位地址。即主机在0x0000_0004中写入0x0000_0000 -高32bit读状态描述符基地址,并在0x0000_0000中写入0xF000_0000 - 低32bit读状态描述符基地址。数字电路能够在此基础上+0x200得到描述符地址。
进一步的,主机通过bar0配置控制寄存器的FIFO地址,由于FIFO本身没有地址的概念,为了使其能够适配标准总线,在使用总线接口的FIFO时,需要定义该FIFO的地址。具体的,可以在0x0000_000C中写入0x0000_0000 -高32bitFIFO地址,并在0x0000_0008中写入0x0100_0000 - 低32bitFIFO地址。此时,该FIFO在FPGA内部总线上对应的地址为0x0100_0000。
然后,主机写寄存器RD_DMA_LAST_PTR,即在0x0000_0010写入0x2,表示共有3个描述符。
最后,主机在0x0000_001c写入任意值,以便启动数字电路的DMA操作。
在上述的内存直接访问架构的基础上,该架构内还可以进一步增加其他部件,以便提高其性能。具体的,在一种实施方式中,内存直接访问控制部件用于接收读数据搬移部件和写数据搬移部件发送的搬移完毕通知。具体的,请参考图1,DMA DescriptorController中包括Read DMA Status Sink(可称为读状态获取部件)和Write DMA StatusSink(可称为写状态获取部件),分别与Read DMA Status Source(读状态生成部件)和Write DMA Status Source(写状态生成部件)相连,Read DMA Status Source和Write DMAStatus Source分别在执行完描述符、或读命令/写命令后生成搬移完毕通知并发送至ReadDMA Status Sink和Write DMA Status Sink,使得控制寄存器得知其状态。内存直接访问控制部件包括状态更新部件,例如图1中的Status&MSI部件,状态更新部件用于在检测到目标描述符执行完毕后,更新主机的系统内存中目标描述符对应的目标状态位数据。具体的,其可以通过Reg&Status&MSI Manager(可称为状态和中断管理部件)中的TX Slave(可称为状态和中断上报部件)更新主机内的目标描述符对应的目标状态表中的目标状态位数据。具体的,可以通过TX Slave生成MWr写数据包,并将其通过PCIe总线发送给主机。
需要说明的是,为了能够实现读写并行的效果,在本申请中,在主机处可以分别划分两个独立的内存空间,分别用于存储读描述符和对应的状态表,以及写描述符和对应的状态表。在完成后,数字电路可以发送中断信号,主机可以通过判断哪一个内存空间中的状态表均为完成状态,来确定是读完成还是写完成。
进一步的,内存直接访问控制部件包括中断上报部件,中断上报部件用于在检测到目标描述符执行完毕后,向主机发送中断消息。继续参考图1,图1中Reg&Status&MSIManage(可称为状态和中断管理部件)中的TX Slave同样可以承担中断上报的功能,DMADescriptor Controller中的Status&MSI部件可以作为中断上报部件,与TX Slave配合生成MWr写数据包,并将其通过PCIe总线发送给主机,起到中断上报的效果。可以理解的是,中断上报和状态位数据更新对应的MWr写数据包的内容不同。
此外,在读数据的场景下,若同时读取多个数据包,读取的各个数据包可能会出现不按照读取顺序的其他顺序被获取,为了避免数据错误,通常会在一个时刻仅读取一个数据包,这样会使得带宽无法被充分利用。为了解决该问题,本申请中内存直接访问架构中还包括先入先出缓存器,先入先出缓存器用于缓存读命令执行后得到的读数据包。此外,各个读数据包包括与读命令对应的数据包标签,读数据包按照数据包标签进行先后顺序排列得到读数据。通过在先入先出缓存器中对多个数据包进行缓存,配合数据包读取时根据读命令得到的数据包标签,可以对各个数据包进行排序后存储,实现在一个时刻同时读取多个数据包,充分利用带宽的效果。
可以理解的是,在读写并行,以及同时进行状态表更新或中断上报时,数字电路需要与主机进行多类型且高频的交互,为了保证数据交互的正常,内存直接访问架构中可以包括与目标总线连接的通讯部件。通讯部件用于向目标总线发送第一数据包,或者用于从目标总线上获取第二数据包,并基于第二数据包的数据包类型,将第二数据包发送至对应的部件。第一数据包,是指数字电路能够生成的任意一种数据包,例如写数据包,或者可以为终端数据包。第二数据包,是指从主机获取的任意一种类型的数据包,例如读数据包。请参考图1,图1中的Schedule(即AXI-ST Schedule,表示基于AXI总线的通讯部件)即为通信部件。
上述的数字电路可以单独作为一个设备工作,或者可以集成至其他的电子设备中,即电子设备可以应用上述的内存直接访问架构。该电子设备可以通过目标总线,例如PCIe总线,与主机相连,共同组成内存直接访问系统。
请参考图5,图5为本申请实施例提供的一种内存直接访问方法的流程图。该方法包括:
S101:若检测到内存直接访问控制部件的控制寄存器被触发,则获取描述符地址信息。
S102:利用内存直接访问控制部件,基于描述符地址信息生成描述符读命令。
S103:利用读数据搬移部件执行描述符读命令,得到描述符,并将描述符写入内存直接访问控制部件的描述符存储部件。需要说明的是,描述符的数量不做限定,类型可以为读描述符和/或写描述符。
S104:利用内存直接访问控制部件,基于描述符生成访问命令。
S105:基于访问命令的种类,利用读数据搬移部件或写数据搬移部件执行访问命令。
可以理解的是,访问命令可以读命令或者为写命令。
具体的,请参考图6,图6为本申请实施例提供的一种主机内存写入流程图,其中包括如下步骤:
1、主机CPU设置DMA描述符控制寄存器,启动DMA流程。
2、控制寄存器命令读数据搬移器获取上位机(即主机,host)内的描述符表内描述符。
3、将获取的描述符存入FPGA内部写描述符FIFO(即Read Descriptor TableSlave)中。
4、控制寄存器命令写数据搬移器传输数据。
5、写数据搬移器将数据从FPGA的DDR(Double Data Rate,双倍速率同步动态随机存储器)或者ram(Random Access Memory,随机存取存储器)中取数据,组成MWr(存储写)TLP包,将数据搬移到Host系统内存中。
6、写数据搬移器生成done bit通知(即搬移完毕通知),发送至控制寄存器,以便通知控制寄存器完成数据传输。
7、更新Host系统内存中对应ID的描述符状态位。
8、控制寄存器向主机发送MSI中断。
请参考图7,图7为本申请实施例提供的一种主机内存读取流程图,其中包括如下步骤:
1、主机CPU设置DMA描述符控制寄存器,启动DMA流程。
2、控制寄存器命令读数据搬移器获取上位机内的描述符表内描述符。
3、将获取的描述符存入FPGA内部读描述符FIFO中。
4、控制寄存器命令读数据搬移器发送MRd(内存读)TLP包,每个TLP数据包具有tag(即数据包标签),tag基于报文管理生成。
5、读数据搬移器将数据从Host系统内存搬移到FPGA,利用16个FIFO(即先入先出缓存器)接收CplD(读数据包),每个读数据包中具有对应的tag,依据tag进行数据定序处理,将数据写到相应的总线上。
6、读数据搬移器使用done bit通知发送至控制寄存器,以便通知控制寄存器完成数据传输。
7、更新Host系统内存中对应ID的描述符状态位。
8、控制寄存器向主机发送MSI中断。
应用本申请实施例提供的内存直接访问架构,设置了读数据搬移部件和写数据搬移部件,分别用于执行读命令和写命令,此外还分别对应设置了读描述符存储部件和写描述符存储部件,使得数字电路能够读写并行处理。此外,读数据搬移部件还能够执行描述符地址信息得到的读命令,能够实现对描述符的搬移,利用同一套部件完成对描述符以及数据的搬移,节省硬件资源。
下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的内存直接访问方法可相互对应参照。
其中电子设备100应用了上述的内存直接访问架构,该电子设备100具体可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(I/O)接口104以及通信组件105中的一种或多种。
其中,处理器101用于控制电子设备100的整体操作,以完成上述的内存直接访问方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-OnlyMemory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。
多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi部件,蓝牙部件,NFC部件。
电子设备100可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的内存直接访问方法。
下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的内存直接访问方法可相互对应参照。
本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的内存直接访问方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (11)

1.一种内存直接访问架构,其特征在于,应用于数字电路,包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件;
所述内存直接访问控制部件包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件;
所述控制寄存器用于被主机设置得到描述符地址信息;
所述读描述符存储部件用于存储利用控制寄存器得到的读描述符;
所述写描述符存储部件用于存储利用控制寄存器得到的写描述符;
所述读命令传输部件用于向所述读数据搬移部件发送基于读描述符或所述描述符地址信息得到的读命令;
所述写命令传输部件用于向所述写数据搬移部件发送基于读描述符得到的写命令;
所述读数据搬移部件用于执行所述读命令,所述写数据搬移部件用于执行所述写命令,所述数据存储部件用于存储所述读命令执行后得到的读数据。
2.根据权利要求1所述的内存直接访问架构,其特征在于,所述数字电路为现场可编程逻辑门阵列电路,或者为数字集成电路。
3.根据权利要求1所述的内存直接访问架构,其特征在于,所述内存直接访问控制部件用于接收所述读数据搬移部件和所述写数据搬移部件发送的搬移完毕通知;
所述内存直接访问控制部件包括状态更新部件,所述状态更新部件用于在检测到目标描述符执行完毕后,更新所述主机的系统内存中所述目标描述符对应的目标状态位数据。
4.根据权利要求1所述的内存直接访问架构,其特征在于,还包括先入先出缓存器,所述先入先出缓存器用于缓存所述读命令执行后得到的读数据包;
所述读数据包包括与所述读命令对应的数据包标签,所述读数据包按照所述数据包标签进行先后顺序排列得到所述读数据。
5.根据权利要求1所述的内存直接访问架构,其特征在于,所述内存直接访问控制部件包括中断上报部件,所述中断上报部件用于在检测到目标描述符执行完毕后,向所述主机发送中断消息。
6.根据权利要求1所述的内存直接访问架构,其特征在于,还包括与目标总线连接的通讯部件;
所述通讯部件用于向所述目标总线发送第一数据包,或者用于从所述目标总线上获取第二数据包,并基于所述第二数据包的数据包类型,将所述第二数据包发送至对应的部件。
7.根据权利要求1所述的内存直接访问架构,其特征在于,所述读描述符存储部件和写描述符存储部件为先入先出存储器,所述读描述符存储部件和写描述符存储部件被预先定义了存储地址;
所述控制寄存器包括源地址寄存器、目的地址寄存器、描述符大小寄存器、触发寄存器,其中,所述目的地址寄存器用于存储任一所述存储地址。
8.一种电子设备,其特征在于,所述电子设备应用了如权利要求1至7任一项所述的内存直接访问架构。
9.一种内存直接访问系统,其特征在于,包括主机和如权利要求8所述的电子设备,所述主机和所述电子设备通过目标总线连接。
10.一种内存直接访问方法,其特征在于,应用于如权利要求8所述的电子设备,所述方法包括:
若检测到内存直接访问控制部件的控制寄存器被触发,则获取描述符地址信息;
利用所述内存直接访问控制部件,基于所述描述符地址信息生成描述符读命令;
利用读数据搬移部件执行所述描述符读命令,得到描述符,并将所述描述符写入所述内存直接访问控制部件的描述符存储部件;
利用所述内存直接访问控制部件,基于所述描述符生成访问命令;
基于所述访问命令的种类,利用读数据搬移部件或写数据搬移部件执行所述访问命令。
11.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求10所述的内存直接访问方法。
CN202210340235.XA 2022-04-02 2022-04-02 内存直接访问架构、系统、方法、电子设备和介质 Active CN114443529B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210340235.XA CN114443529B (zh) 2022-04-02 2022-04-02 内存直接访问架构、系统、方法、电子设备和介质
PCT/CN2022/134792 WO2023185035A1 (zh) 2022-04-02 2022-11-28 内存直接访问架构、系统、方法、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210340235.XA CN114443529B (zh) 2022-04-02 2022-04-02 内存直接访问架构、系统、方法、电子设备和介质

Publications (2)

Publication Number Publication Date
CN114443529A true CN114443529A (zh) 2022-05-06
CN114443529B CN114443529B (zh) 2022-07-05

Family

ID=81359997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210340235.XA Active CN114443529B (zh) 2022-04-02 2022-04-02 内存直接访问架构、系统、方法、电子设备和介质

Country Status (2)

Country Link
CN (1) CN114443529B (zh)
WO (1) WO2023185035A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237353A (zh) * 2022-08-12 2022-10-25 青岛汉泰智能科技有限公司 一种arm查询fpga长度寄存器的方法
CN115422101A (zh) * 2022-11-04 2022-12-02 山东云海国创云计算装备产业创新中心有限公司 一种dma驱动系统、方法、设备及可读存储介质
CN115658572A (zh) * 2022-12-12 2023-01-31 北京象帝先计算技术有限公司 任务处理方法、装置、电子设备和计算机可读存储介质
CN115905039A (zh) * 2022-11-16 2023-04-04 逸超医疗科技(北京)有限公司 一种基于PCIe接口高速获取超声数据的方法
CN116069711A (zh) * 2023-04-07 2023-05-05 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质
WO2023185035A1 (zh) * 2022-04-02 2023-10-05 苏州浪潮智能科技有限公司 内存直接访问架构、系统、方法、电子设备和介质
CN117076353A (zh) * 2023-10-16 2023-11-17 苏州元脑智能科技有限公司 描述符的配置方法和描述符的配置装置
CN117312201A (zh) * 2023-11-29 2023-12-29 苏州元脑智能科技有限公司 一种数据传输方法、装置及加速器设备、主机和存储介质
CN117667793A (zh) * 2024-01-30 2024-03-08 苏州元脑智能科技有限公司 一种多通道描述符管理系统、方法、设备、介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2507066Y (zh) * 2001-10-18 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种直接存储器访问控制器
CN102411549A (zh) * 2010-09-22 2012-04-11 株式会社东芝 存储器系统、主机控制器以及dma的控制方法
CN103714027A (zh) * 2014-01-10 2014-04-09 浪潮(北京)电子信息产业有限公司 一种直接内存存取控制器的数据传输方法及装置
CN110389709A (zh) * 2018-04-19 2019-10-29 北京忆恒创源科技有限公司 顺序流检测与数据预读
CN111190842A (zh) * 2019-12-30 2020-05-22 Oppo广东移动通信有限公司 直接存储器访问、处理器、电子设备和数据搬移方法
CN111538679A (zh) * 2020-05-12 2020-08-14 中国电子科技集团公司第十四研究所 一种基于内嵌dma的处理器数据预取设计
CN113986533A (zh) * 2021-10-15 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、dma控制器及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145016A (en) * 1998-09-03 2000-11-07 Advanced Micro Devices, Inc. System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer
US7912997B1 (en) * 2008-03-27 2011-03-22 Xilinx, Inc. Direct memory access engine
CN102841871B (zh) * 2012-08-10 2015-06-17 无锡众志和达数据计算股份有限公司 基于高速串行总线的DMA结构的pipeline读写方法
US9053093B1 (en) * 2013-08-23 2015-06-09 Altera Corporation Modular direct memory access system
CN114443529B (zh) * 2022-04-02 2022-07-05 苏州浪潮智能科技有限公司 内存直接访问架构、系统、方法、电子设备和介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2507066Y (zh) * 2001-10-18 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种直接存储器访问控制器
CN102411549A (zh) * 2010-09-22 2012-04-11 株式会社东芝 存储器系统、主机控制器以及dma的控制方法
CN103714027A (zh) * 2014-01-10 2014-04-09 浪潮(北京)电子信息产业有限公司 一种直接内存存取控制器的数据传输方法及装置
CN110389709A (zh) * 2018-04-19 2019-10-29 北京忆恒创源科技有限公司 顺序流检测与数据预读
CN111190842A (zh) * 2019-12-30 2020-05-22 Oppo广东移动通信有限公司 直接存储器访问、处理器、电子设备和数据搬移方法
CN111538679A (zh) * 2020-05-12 2020-08-14 中国电子科技集团公司第十四研究所 一种基于内嵌dma的处理器数据预取设计
CN113986533A (zh) * 2021-10-15 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、dma控制器及计算机可读存储介质

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023185035A1 (zh) * 2022-04-02 2023-10-05 苏州浪潮智能科技有限公司 内存直接访问架构、系统、方法、电子设备和介质
CN115237353B (zh) * 2022-08-12 2023-12-22 青岛汉泰智能科技有限公司 一种arm查询fpga长度寄存器的方法
CN115237353A (zh) * 2022-08-12 2022-10-25 青岛汉泰智能科技有限公司 一种arm查询fpga长度寄存器的方法
CN115422101A (zh) * 2022-11-04 2022-12-02 山东云海国创云计算装备产业创新中心有限公司 一种dma驱动系统、方法、设备及可读存储介质
CN115905039A (zh) * 2022-11-16 2023-04-04 逸超医疗科技(北京)有限公司 一种基于PCIe接口高速获取超声数据的方法
CN115658572B (zh) * 2022-12-12 2023-04-14 北京象帝先计算技术有限公司 任务处理方法、装置、电子设备和计算机可读存储介质
CN115658572A (zh) * 2022-12-12 2023-01-31 北京象帝先计算技术有限公司 任务处理方法、装置、电子设备和计算机可读存储介质
CN116069711A (zh) * 2023-04-07 2023-05-05 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质
CN117076353A (zh) * 2023-10-16 2023-11-17 苏州元脑智能科技有限公司 描述符的配置方法和描述符的配置装置
CN117076353B (zh) * 2023-10-16 2024-02-02 苏州元脑智能科技有限公司 描述符的配置方法和描述符的配置装置
CN117312201A (zh) * 2023-11-29 2023-12-29 苏州元脑智能科技有限公司 一种数据传输方法、装置及加速器设备、主机和存储介质
CN117312201B (zh) * 2023-11-29 2024-02-13 苏州元脑智能科技有限公司 一种数据传输方法、装置及加速器设备、主机和存储介质
CN117667793A (zh) * 2024-01-30 2024-03-08 苏州元脑智能科技有限公司 一种多通道描述符管理系统、方法、设备、介质
CN117667793B (zh) * 2024-01-30 2024-04-09 苏州元脑智能科技有限公司 一种多通道描述符管理系统、方法、设备、介质

Also Published As

Publication number Publication date
CN114443529B (zh) 2022-07-05
WO2023185035A1 (zh) 2023-10-05

Similar Documents

Publication Publication Date Title
CN114443529B (zh) 内存直接访问架构、系统、方法、电子设备和介质
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
EP2849076B1 (en) Dma transmission method and system
EP2849077B1 (en) Method for writing data into storage device and storage device
CN109726163B (zh) 一种基于spi的通信系统、方法、设备和储存介质
US7433977B2 (en) DMAC to handle transfers of unknown lengths
US20150261434A1 (en) Storage system and server
WO2005091812A2 (en) Pvdm (packet voice data module) generic bus protocol
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
JP6408514B2 (ja) 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
KR20150083741A (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
JP2011505038A (ja) チェーン化デバイスシステムにおいてパラメータを設定し待ち時間を決定する方法
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
US20220100425A1 (en) Storage device, operating method of storage device, and operating method of computing device including storage device
CN113032293A (zh) 缓存管理器及控制部件
US9875199B2 (en) Data transfer control apparatus
US7409486B2 (en) Storage system, and storage control method
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US20030217218A1 (en) Interface for devices having different data bus widths and data transfer method using the interface
US8996772B1 (en) Host communication device and method with data transfer scheduler
US10515036B2 (en) Bit manipulation capable direct memory access
CN113031849A (zh) 直接内存存取单元及控制部件
JP2009037639A (ja) ストリーミングidメソッドによるdmac発行メカニズム
US20180336147A1 (en) Application processor including command controller and integrated circuit including the same
JP7363344B2 (ja) メモリ制御装置、および制御方法

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