CN116610608B - 直接内存访问描述符处理方法、***、装置、设备及介质 - Google Patents

直接内存访问描述符处理方法、***、装置、设备及介质 Download PDF

Info

Publication number
CN116610608B
CN116610608B CN202310884534.4A CN202310884534A CN116610608B CN 116610608 B CN116610608 B CN 116610608B CN 202310884534 A CN202310884534 A CN 202310884534A CN 116610608 B CN116610608 B CN 116610608B
Authority
CN
China
Prior art keywords
memory access
direct memory
access descriptor
descriptor
direct
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.)
Active
Application number
CN202310884534.4A
Other languages
English (en)
Other versions
CN116610608A (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.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry 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 Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN202310884534.4A priority Critical patent/CN116610608B/zh
Publication of CN116610608A publication Critical patent/CN116610608A/zh
Application granted granted Critical
Publication of CN116610608B publication Critical patent/CN116610608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2802DMA using DMA transfer descriptors
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种直接内存访问描述符处理方法、***、装置、设备及介质,涉及现场可编程与门阵列技术领域,获取目标加速功能单元传输的待处理的第一直接内存访问描述符;获取已有的第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则将第一直接内存访问描述符合并至第二直接内存访问描述符;若不结束合并操作,则返回执行获取目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输第二直接内存访问描述符至***器件快速互连IP核进行处理。本发明可以使得现场可编程与门阵列一次性对多个直接内存访问描述符进行处理,提高了计算能力。

Description

直接内存访问描述符处理方法、***、装置、设备及介质
技术领域
本发明涉及现场可编程与门阵列技术领域,更具体地说,涉及直接内存访问描述符处理方法、***、装置、设备及介质。
背景技术
随着云计算、人工智能等技术对算力需求的不断增长,中央处理器(CentralProcessing Unit,CPU)结合现场可编程与门阵列(Field Programmable Gate Array,FPGA)加速卡的异构加速计算单元逐渐成为数据中心的主流计算单元。且在现场可编程与门阵列中,加速功能单元(Accelerator Functional Unit,AFU)将计算结果存入随机存储器(RAM Random Access Memory ,RAM)中,加速功能单元每次计算完成后就向***器件快速互连(peripheral component interconnect express ,PCI-E)知识产权核(Intellectual Property core,IP核)的端口1发送直接内存访问(Direct MemoryAccess,DMA)描述符,***器件快速互连IP核的端口3从随机存储器中读取结果数据到主机内存中,接内存访问操作完成后,***器件快速互连IP核的端口2输出完成信息到加速功能单元。
然而,随着现场可编程与门阵列加速卡计算速度不断加快,计算结果数据量不断增加,每次计算都需要将现场可编程与门阵列内部产生的计算结果数据传输到主机内存中,加速功能单元向***器件快速互连IP核的端口1快速发送直接内存访问描述符。但***器件快速互连IP核对直接内存访问描述符的处理效率是有限的,过多的直接内存访问描述符会降低直接内存访问传输效率,***器件快速互连IP核的端口2输出完成信息的延迟时间会延长,导致计算结果数据的累积,造成空闲指针耗尽,加速功能单元暂停计算,从而降低现场可编程与门阵列加速卡整体计算能力。
综上所述,如何提高现场可编程与门阵列的计算能力是目前本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种直接内存访问描述符处理方法,其能在一定程度上解决如何提高现场可编程与门阵列的计算能力的技术问题。本发明还提供了一种直接内存访问描述符处理***、装置、电子设备及计算机可读存储介质。
根据本发明实施例的第一方面,提供一种直接内存访问描述符处理方法,包括:
获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;
获取已有的第二直接内存访问描述符;
判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符;
判断是否结束合并操作;
若不结束合并操作,则返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;
若结束合并操作,则传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理。
在一示例性实施例中,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,包括:
获取所述第二直接内存访问描述符最后合并的末尾直接内存访问描述符;
判断能否合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符;
若能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,则判定能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若不能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,则判定不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符。
在一示例性实施例中,所述判断能否合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,包括:
解析所述末尾直接内存访问描述符中的第一源地址、第一目的地址和第一数据长度值;
将所述第一源地址与所述第一数据长度值的和值作为第一预期源地址;
将所述第一目的地址与所述第一数据长度值的和值作为第一预期目的地址;
解析所述第一直接内存访问描述符中的第二源地址和第二目的地址;
若所述第一预期源地址与所述第二源地址一致,所述第一预期目的地址与所述第二目的地址一致,则判定能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符;
若所述第一预期源地址与所述第二源地址不一致和/或所述第一预期目的地址与所述第二目的地址不一致,则判定不能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符。
在一示例性实施例中,所述将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符之后,还包括:
将所述第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
在一示例性实施例中,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,包括:
解析所述第二直接内存访问描述符中的第三源地址、第三目的地址和第三数据长度值;
将所述第三源地址与所述第三数据长度值的和值作为第二预期源地址;
将所述第三目的地址与所述第三数据长度值的和值作为第二预期目的地址;
解析所述第一直接内存访问描述符中的第二源地址和第二目的地址;
若所述第二预期源地址与所述第二源地址一致,所述第二预期目的地址与所述第二目的地址一致,则判定能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若所述第二预期源地址与所述第二源地址不一致和/或所述第二预期目的地址与所述第二目的地址不一致,则判定不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符。
在一示例性实施例中,所述将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符,包括:
解析所述第二直接内存访问描述符中的第三数据长度值;
解析所述第一直接内存访问描述符中的第二数据长度值;
计算所述第三数据长度值与所述第二数据长度值的和值;
保持所述第二直接内存访问描述符的源地址和目的地址不变,将所述和值作为所述第二直接内存访问描述符的最新数据长度值。
在一示例性实施例中,初始的所述第二直接内存访问描述符为空,且设置初始的所述第二直接内存访问描述符与合并操作的第一个所述第一直接内存访问描述符的合并结果为第一个所述第一直接内存访问描述符本身。
在一示例性实施例中,所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符之后,所述获取已有的第二直接内存访问描述符之前,还包括:
判断所述第一直接内存访问描述符是否为合并操作的第一个直接内存访问描述符;
若所述第一直接内存访问描述符为合并操作的第一个直接内存访问描述符,则将所述第一直接内存访问描述符作为所述第二直接内存访问描述符,返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;
若所述第一直接内存访问描述符并非合并操作的第一个直接内存访问描述符,则执行所述获取已有的第二直接内存访问描述符及之后的步骤。
在一示例性实施例中,还包括:
记录合并操作的每个所述第一直接内存访问描述符的目标标识信息。
在一示例性实施例中,所述传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理之后,还包括:
接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的第一信息;
基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息。
在一示例性实施例中,所述基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息,包括:
解析所述第二信息中所述第二直接内存访问描述符的标识信息;
若所述第二直接内存访问描述符的标识信息与所述目标标识信息一致,则执行所述基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息的步骤。
在一示例性实施例中,所述记录合并操作的每个所述第一直接内存访问描述符的目标标识信息,包括:
若各个所述第一直接内存访问描述符间的标识信息连续,则记录合并操作的第一个所述第一直接内存访问描述符的第一标识,记录合并操作合并的所述第一直接内存访问描述符的个数值;
将所述第一标识和所述个数值作为所述目标标识信息。
在一示例性实施例中,所述传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理,包括:
通过所述***器件快速互连IP核的第一端口,传输所述第二直接内存访问描述符至所述***器件快速互连IP核进行处理。
在一示例性实施例中,所述接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的第一信息,包括:
通过所述***器件快速互连IP核的第二端口,接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的所述第一信息。
在一示例性实施例中,还包括:
通过状态机记录所述第一直接内存访问描述符的处理状态。
在一示例性实施例中,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符之后,还包括:
若不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则传输所述第二直接内存访问描述符至所述***器件快速互连IP核进行处理,将所述第一直接内存访问描述符作为所述第二直接内存访问描述符,返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的第一直接内存访问描述符及之后的步骤。
根据本发明实施例的第二方面,提供一种直接内存访问描述符处理***,包括:
第一获取模块,用于获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;
第二获取模块,用于获取已有的第二直接内存访问描述符;
第一判断模块,用于判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符;
第二判断模块,用于判断是否结束合并操作;若不结束合并操作,则控制所述第一获取模块返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理。
根据本发明实施例的第三方面,提供一种直接内存访问描述符处理装置,包括:
与现场可编程与门阵列中的目标加速功能单元连接的第一先入先出存储器,用于存储所述目标加速功能单元传输的待处理的第一直接内存访问描述符;
与所述第一先入先出存储器及第二先入先出存储器连接的合并控制器,用于判断能否合并所述第一直接内存访问描述符与所述第二先入先出存储器中存储的第二直接内存访问描述符;若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二先入先出存储器中的所述第二直接内存访问描述符;判断是否结束合并操作;若不结束合并操作,则在所述第一先入先出存储器中存储的所述第一直接内存访问描述符更新之后,返回执行所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符及之后的步骤;若结束合并操作,则将所述第二先入先出存储器中存储的所述第二直接内存访问描述符传输至所述现场可编程与门阵列中的***器件快速互连IP核进行处理;
所述第二先入先出存储器,用于存储已有的所述第二直接内存访问描述符。
在一示例性实施例中,还包括:
与所述第一先入先出存储器及所述合并控制器连接的直接内存访问描述符寄存器,用于将所述第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
在一示例性实施例中,还包括:
与所述第二先入先出存储器连接的第三先入先出存储器,用于记录合并操作的每个所述第一直接内存访问描述符的目标标识信息;
与所述第三先入先出存储器连接的第四先入先出存储器,用于记录合并操作合并的所述第一直接内存访问描述符的个数值;
与所述第四先入先出存储器及所述目标加速功能单元连接的计数器,用于记录向所述目标加速功能单元传输的表征对应的所述第一直接内存访问描述符已处理完成的第二信息的数量值。
根据本发明实施例的第四方面,提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述直接内存访问描述符处理方法的步骤。
根据本发明实施例的第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述直接内存访问描述符处理方法的步骤。
本发明提供的一种直接内存访问描述符处理方法,获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;获取已有的第二直接内存访问描述符;判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则将第一直接内存访问描述符合并至第二直接内存访问描述符;判断是否结束合并操作;若不结束合并操作,则返回执行获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理。本发明可以对目标加速功能单元传输的直接内存访问描述符进行合并,并将第二直接内存访问描述符传输至***器件快速互联IP核进行处理,使得现场可编程与门阵列可以一次性对多个直接内存访问描述符进行处理,提高现场可编程与门阵列对直接内存访问描述符的处理效率,继而提高了现场可编程与门阵列的计算能力。本发明提供的一种直接内存访问描述符处理***、装置、电子设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种直接内存访问描述符处理方法的第一示意图;
图2为本发明实施例提供的一种直接内存访问描述符处理方法的第二示意图;
图3为本发明实施例提供的一种直接内存访问描述符处理***的结构示意图;
图4为本发明实施例提供的一种直接内存访问描述符处理装置的结构示意图;
图5为直接内存访问描述符处理装置的状态机的示意图;
图6为现场可编程与门阵列的连接示意图;
图7为现场可编程与门阵列的内部结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图;
图9为本发明实施例提供的一种电子设备的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例提供的一种直接内存访问描述符处理方法的第一示意图。
本发明实施例提供的一种直接内存访问描述符处理方法,可以包括以下步骤:
步骤S101:获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符。
实际应用中,可以先获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符,目标加速功能单元的数量、第一直接内存访问描述符的类型等均可以根据实际需要确定。
步骤S102:获取已有的第二直接内存访问描述符。
实际应用中,在获取第一直接内存访问描述符后,还可以获取已有的第二直接内存访问描述符,以便后续将第一直接内存访问描述符与第二直接内存访问描述符进行合并。
需要说明的是,已有的第二直接内存访问描述符为接收到第一直接内存访问描述符前便存在的直接内存访问描述符,第二直接内存访问描述符的内容可以随着合并操作过程的不同时刻来确定,比如在合并操作开始时,第二直接内存访问描述符可以是接收到的第一个直接内存访问描述符;而在合并操作开始后,第二直接内存访问描述符指的是按照本发明方法在对直接内存访问描述符进行处理的过程中对多个直接内存访问描述符进行合并后得到的结果,也即在处理第一直接内存访问描述符前得到的合并结果。此外,还需说明的是,本申请中的第一直接内存访问描述符与第二直接内存访问描述符是根据合并操作的类型来确定,也即第一直接内存访问描述符指的是目标加速功能单元传输过来的待参与合并操作的直接内存访问描述符,而第二直接内存访问描述符指的是合并操作过程中在第一直接内存访问描述符前得到的单个直接内存访问描述符或多个直接内存访问描述符的合并结果。
步骤S103:判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则执行步骤S104;若不能合并第一直接内存访问描述符与第二直接内存访问描述符,则执行步骤S107。
步骤S104:将第一直接内存访问描述符合并至第二直接内存访问描述符。
实际应用中,在获得第一直接内存访问描述符及已有的第二直接内存访问描述符之后,便可以判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则可以将第一直接内存访问描述符合并至第二直接内存访问描述符,便可以得到最新的第二直接内存访问描述符。
实际应用中,在判断能否合并第一直接内存访问描述符与第二直接内存访问描述符的过程中,为了快速进行合并判断,可以获取第二直接内存访问描述符最后合并的末尾直接内存访问描述符;判断能否合并末尾直接内存访问描述符与第一直接内存访问描述符;若能合并末尾直接内存访问描述符与第一直接内存访问描述符,则判定能合并第一直接内存访问描述符与第二直接内存访问描述符;若不能合并末尾直接内存访问描述符与第一直接内存访问描述符,则判定不能合并第一直接内存访问描述符与第二直接内存访问描述符。
具体应用场景中,在判断能否合并末尾直接内存访问描述符与第一直接内存访问描述符的过程中,可以解析末尾直接内存访问描述符中的第一源地址、第一目的地址和第一数据长度值;将第一源地址与第一数据长度值的和值作为第一预期源地址;将第一目的地址与第一数据长度值的和值作为第一预期目的地址;解析第一直接内存访问描述符中的第二源地址和第二目的地址;若第一预期源地址与第二源地址一致,第一预期目的地址与第二目的地址一致,则判定能合并末尾直接内存访问描述符与第一直接内存访问描述符;若第一预期源地址与第二源地址不一致和/或第一预期目的地址与第二目的地址不一致,则判定不能合并末尾直接内存访问描述符与第一直接内存访问描述符。此外,实际应用场景中,在将第一直接内存访问描述符合并至第二直接内存访问描述符之后,还可以将第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储,以便在下一轮合并操作过程中可以快速获取到末尾直接内存访问描述符。
具体应用场景中,在判断能否合并第一直接内存访问描述符与第二直接内存访问描述符的过程中,为了简便合并判断操作,可以解析第二直接内存访问描述符中的第三源地址、第三目的地址和第三数据长度值;将第三源地址与第三数据长度值的和值作为第二预期源地址;将第三目的地址与第三数据长度值的和值作为第二预期目的地址;解析第一直接内存访问描述符中的第二源地址和第二目的地址;若第二预期源地址与第二源地址一致,第二预期目的地址与第二目的地址一致,则判定能合并第一直接内存访问描述符与第二直接内存访问描述符;若第二预期源地址与第二源地址不一致和/或第二预期目的地址与第二目的地址不一致,则判定不能合并第一直接内存访问描述符与第二直接内存访问描述符。
步骤S105:判断是否结束合并操作;若不结束合并操作,则返回步骤S101。若结束合并操作,则执行步骤S106。
步骤S106:传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连知识产权核进行处理。
实际应用中,考虑到可能需要对多个直接内存访问描述符进行合并,所以在将第一直接内存访问描述符合并至第二直接内存访问描述符之后,还可以判断是否结束合并操作,若不结束合并操作,则返回步骤S101,以获取最新的一个第一直接内存访问描述符进行合并处理。若结束合并操作,则可以传输最终的第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理。
需要说明的是,结束合并操作的条件可以根据具体应用场景来确定,比如结束合并操作的条件可以为第二直接内存访问描述符中合并的直接内存访问描述符的数量达到预设数量,在此过程中,可以对合并操作中参与合并的第一直接内存访问描述符的数量值进行实时记录、更新,再在记录的数量值达到预设数量后,便判定结束合并操作,以预设数量为5为例,则将目标加速功能单元传输的5个直接内存访问描述符进行合并后便会结束此次合并操作;再比如结束合并操作的条件可以为目标加速功能单元不再传输第一直接内存访问描述符等,在此过程中,可以在接收到目标加速功能单元传输的第一直接内存访问描述符之后,便可以计时,若在计时到预设时长内的过程中均没有再收到目标加速功能单元传输的新的第一直接内存访问描述符,则可以判定目标加速功能单元不再传输第一直接内存访问描述符,也可以是在接收到目标加速功能单元传输的结束指令后,判定目标加速功能单元不再传输第一直接内存访问描述符,还可以是在将第一直接内存访问描述符与第二直接内存访问描述符合并完成之后,若未收到目标加速功能单元传输的最新的第一直接内存访问描述符,则认为目标加速器功能单元不再传输第一直接内存访问描述符等,本发明在此不做具体限定。
步骤S107:传输第二直接内存访问描述符至***器件快速互连知识产权核进行处理,将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行步骤S101。
实际应用中,在判定不能合并第一直接内存访问描述符与第二直接内存访问描述符的情况下,可以传输第二直接内存访问描述符至***器件快速互连IP核进行处理,并将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行步骤S101,以从第一直接内存访问描述符开始进行下一轮的直接内存访问描述符合并操作。
本发明提供的一种直接内存访问描述符处理方法,获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;获取已有的第二直接内存访问描述符;判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则将第一直接内存访问描述符合并至第二直接内存访问描述符;判断是否结束合并操作;若不结束合并操作,则返回执行获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理。本发明可以对目标加速功能单元传输的直接内存访问描述符进行合并,并将第二直接内存访问描述符传输至***器件快速互联IP核进行处理,使得现场可编程与门阵列可以一次性对多个直接内存访问描述符进行处理,提高现场可编程与门阵列对直接内存访问描述符的处理效率,继而提高了现场可编程与门阵列的计算能力。
请参阅图2,图2为本发明实施例提供的一种直接内存访问描述符处理方法的第二示意图。
在前述实施例的基础上,本发明实施例提供的一种直接内存访问描述符处理方法,可以包括以下步骤:
步骤S201:获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符。
步骤S202:获取已有的第二直接内存访问描述符。
步骤S203:判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则执行步骤S204;若不能合并第一直接内存访问描述符与第二直接内存访问描述符,则执行步骤S211。
步骤S204:解析第二直接内存访问描述符中的第三数据长度值。
步骤S205:解析第一直接内存访问描述符中的第二数据长度值。
步骤S206:计算第三数据长度值与第二数据长度值的和值。
步骤S207:保持第二直接内存访问描述符的源地址和目的地址不变,将和值作为第二直接内存访问描述符的最新数据长度值。
实际应用中,在将第一直接内存访问描述符合并至第二直接内存访问描述符的过程中,可以解析第二直接内存访问描述符中的第三数据长度值;解析第一直接内存访问描述符中的第二数据长度值;计算第三数据长度值与第二数据长度值的和值;保持第二直接内存访问描述符的源地址和目的地址不变,将和值作为第二直接内存访问描述符的最新数据长度值。这样一来,第二直接内存访问描述符的源地址和目的地址便为合并过程中接收的第一个直接内存访问描述符的源地址和目的地址,而第二直接内存访问描述符的数据长度值为合并过程中所有参与合并的直接内存访问描述符的数据长度值的和值。
步骤S208:判断是否结束合并操作;若不结束合并操作,则返回步骤S201。若结束合并操作,则执行步骤S209。
步骤S209:传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连知识产权核进行处理。
步骤S210:传输第二直接内存访问描述符至***器件快速互连知识产权核进行处理,将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行步骤S201。
实际应用中,为了便于合并操作的执行,可以设置初始的第二直接内存访问描述符为空,且设置初始的第二直接内存访问描述符与合并操作的第一个第一直接内存访问描述符的合并结果为第一个第一直接内存访问描述符本身。为便于理解,假设有直接内存访问描述符1、直接内存访问描述符2、直接内存访问描述符3三个可以合并的直接内存访问描述符,当接收到直接内存访问描述符1时,此时的第二直接内存访问描述符初始为空,直接内存访问描述符1与第二直接内存访问描述符的合并结果为直接内存访问描述符1本身,此时最新的第二直接内存访问描述符的内容为直接内存访问描述符1的内容相同;当接收到直接内存访问描述符2时,此时最新的第二直接内存访问描述符相当于直接内存访问描述符1本身,所以直接内存访问描述符2与最新的第二直接内存访问描述符的合并结果即为直接内存访问描述符1和直接内存访问描述符2的合并结果,此时最新的第二直接内存访问描述符的内容为直接内存访问描述符1和直接内存访问描述符2的合并结果;相应的,当接收到直接内存访问描述符3时,此时最新的第二直接内存访问描述符相当于直接内存访问描述符1与直接内存访问描述符2的合并结果,所以直接内存访问描述符3与最新的第二直接内存访问描述符的合并结果即为直接内存访问描述符1、直接内存访问描述符2和直接内存访问描述符3的合并结果。
具体应用场景中,为了便于合并操作的执行,在获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符之后,获取已有的第二直接内存访问描述符之前,还可以判断第一直接内存访问描述符是否为合并操作的第一个直接内存访问描述符;若第一直接内存访问描述符为合并操作的第一个直接内存访问描述符,则将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若第一直接内存访问描述符并非合并操作的第一个直接内存访问描述符,则执行获取已有的第二直接内存访问描述符及之后的步骤。
实际应用中,为了便于对直接内存访问描述符进行操作,比如为了便于对直接内存访问描述符进行处理响应等,还可以记录合并操作的每个第一直接内存访问描述符的目标标识信息。
具体应用场景中,***器件快速互连IP核处理第二直接内存访问描述符后,会返回相应的处理结果,所以在传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理之后,还可以接收***器件快速互连IP核传输的表征处理完成第二直接内存访问描述符的第一信息;且可以基于目标标识信息,向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息,以向目标加速功能单元反馈直接内存访问描述符的执行结果。
具体应用场景中,为了准确处理直接内存访问描述符的执行结果,在基于目标标识信息,向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息的过程中,可以解析第二信息中第二直接内存访问描述符的标识信息;若第二直接内存访问描述符的标识信息与目标标识信息一致,则执行基于目标标识信息,向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息的步骤。
具体应用场景中,在记录合并操作的每个第一直接内存访问描述符的目标标识信息的过程中,为了便于记录目标标识信息,可以在各个第一直接内存访问描述符间的标识信息连续的情况下,记录合并操作的第一个第一直接内存访问描述符的第一标识,记录合并操作合并的第一直接内存访问描述符的个数值;将第一标识和个数值作为目标标识信息。相应的,在向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息的过程中,可以向目标加速功能单元传输表征从第一标识开始的个数值的第一直接内存访问描述符已处理完成的第二信息。
具体应用场景中,在传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理的过程中,可以通过***器件快速互连IP核的第一端口,传输第二直接内存访问描述符至***器件快速互连IP核进行处理。其中直接内存访问描述符的数据结构可以根据实际需要来确定,比如直接内存访问描述符的0到63bit可以是直接内存访问数据的源物理地址,也即现场可编程与门阵列中的内部随机存储器地址;64到127bit可以是直接内存访问数据的目的物理地址,也即现场可编程与门阵列中的主机内存物理地址;128到145bit可以是直接内存访问数据的长度,单位可以为字节等;146到153bit可以是直接内存访问描述符的标识信息等。
具体应用场景中,在接收***器件快速互连IP核传输的表征处理完成第二直接内存访问描述符的第一信息的过程中,可以通过***器件快速互连IP核的第二端口,接收***器件快速互连IP核传输的表征处理完成第二直接内存访问描述符的第一信息。第一信息的数据结构可以根据实际需要来确定,比如第一信息的0到7bit可以是直接内存访问描述符的标识信息;8到30bit可以为预留bit,无意义;31bit可以是直接内存访问描述符的成功标志信号,0表示直接内存访问操作成功,1表示直接内存访问操作失败等。
具体应用场景中,为了便于了解直接内存访问描述符的处理进度,还可以通过状态机记录第一直接内存访问描述符的处理状态。
请参阅图3,图3为本发明实施例提供的一种直接内存访问描述符处理***的结构示意图。
本发明实施例提供的一种直接内存访问描述符处理***,可以包括:
第一获取模块11,用于获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;
第二获取模块12,用于获取已有的第二直接内存访问描述符;
第一判断模块13,用于判断能否合并第一直接内存访问描述符与第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则将第一直接内存访问描述符合并至第二直接内存访问描述符;
第二判断模块14,用于判断是否结束合并操作;若不结束合并操作,则控制第一获取模块返回执行获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理。
本发明实施例提供的一种直接内存访问描述符处理***,第一判断模块可以具体用于:获取第二直接内存访问描述符最后合并的末尾直接内存访问描述符;判断能否合并末尾直接内存访问描述符与第一直接内存访问描述符;若能合并末尾直接内存访问描述符与第一直接内存访问描述符,则判定能合并第一直接内存访问描述符与第二直接内存访问描述符;若不能合并末尾直接内存访问描述符与第一直接内存访问描述符,则判定不能合并第一直接内存访问描述符与第二直接内存访问描述符。
本发明实施例提供的一种直接内存访问描述符处理***,第一判断模块可以具体用于:解析末尾直接内存访问描述符中的第一源地址、第一目的地址和第一数据长度值;将第一源地址与第一数据长度值的和值作为第一预期源地址;将第一目的地址与第一数据长度值的和值作为第一预期目的地址;解析第一直接内存访问描述符中的第二源地址和第二目的地址;若第一预期源地址与第二源地址一致,第一预期目的地址与第二目的地址一致,则判定能合并末尾直接内存访问描述符与第一直接内存访问描述符;若第一预期源地址与第二源地址不一致和/或第一预期目的地址与第二目的地址不一致,则判定不能合并末尾直接内存访问描述符与第一直接内存访问描述符。
本发明实施例提供的一种直接内存访问描述符处理***,第一判断模块可以具体用于:将第一直接内存访问描述符合并至第二直接内存访问描述符之后,将第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
本发明实施例提供的一种直接内存访问描述符处理***,第一判断模块可以具体用于:解析第二直接内存访问描述符中的第三源地址、第三目的地址和第三数据长度值;将第三源地址与第三数据长度值的和值作为第二预期源地址;将第三目的地址与第三数据长度值的和值作为第二预期目的地址;解析第一直接内存访问描述符中的第二源地址和第二目的地址;若第二预期源地址与第二源地址一致,第二预期目的地址与第二目的地址一致,则判定能合并第一直接内存访问描述符与第二直接内存访问描述符;若第二预期源地址与第二源地址不一致和/或第二预期目的地址与第二目的地址不一致,则判定不能合并第一直接内存访问描述符与第二直接内存访问描述符。
本发明实施例提供的一种直接内存访问描述符处理***,第二判断模块可以具体用于:解析第二直接内存访问描述符中的第三数据长度值;解析第一直接内存访问描述符中的第二数据长度值;计算第三数据长度值与第二数据长度值的和值;保持第二直接内存访问描述符的源地址和目的地址不变,将和值作为第二直接内存访问描述符的最新数据长度值。
本发明实施例提供的一种直接内存访问描述符处理***,初始的第二直接内存访问描述符为空,且设置初始的第二直接内存访问描述符与合并操作的第一个第一直接内存访问描述符的合并结果为第一个第一直接内存访问描述符本身。
本发明实施例提供的一种直接内存访问描述符处理***,还可以包括:
第三判断模块,用于第一获取模块获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符之后,第二获取模块获取已有的第二直接内存访问描述符之前,判断第一直接内存访问描述符是否为合并操作的第一个直接内存访问描述符;若第一直接内存访问描述符为合并操作的第一个直接内存访问描述符,则将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若第一直接内存访问描述符并非合并操作的第一个直接内存访问描述符,则执行获取已有的第二直接内存访问描述符及之后的步骤。
本发明实施例提供的一种直接内存访问描述符处理***,还可以包括:
记录模块,用于记录合并操作的每个第一直接内存访问描述符的目标标识信息。
本发明实施例提供的一种直接内存访问描述符处理***,还可以包括:
接收模块,用于第二判断模块传输第二直接内存访问描述符至现场可编程与门阵列中的***器件快速互连IP核进行处理之后,接收***器件快速互连IP核传输的表征处理完成第二直接内存访问描述符的第一信息;
传输模块,用于基于目标标识信息,向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息。
本发明实施例提供的一种直接内存访问描述符处理***,传输模块可以具体用于:解析第二信息中第二直接内存访问描述符的标识信息;若第二直接内存访问描述符的标识信息与目标标识信息一致,则执行基于目标标识信息,向目标加速功能单元传输表征对应的第一直接内存访问描述符已处理完成的第二信息的步骤。
本发明实施例提供的一种直接内存访问描述符处理***,记录模块可以具体用于:若各个第一直接内存访问描述符间的标识信息连续,则记录合并操作的第一个第一直接内存访问描述符的第一标识,记录合并操作合并的第一直接内存访问描述符的个数值;将第一标识和个数值作为目标标识信息。
本发明实施例提供的一种直接内存访问描述符处理***,第二判断模块可以具体用于:通过***器件快速互连IP核的第一端口,传输第二直接内存访问描述符至***器件快速互连IP核进行处理。
本发明实施例提供的一种直接内存访问描述符处理***,接收模块可以具体用于:通过***器件快速互连IP核的第二端口,接收***器件快速互连IP核传输的表征处理完成第二直接内存访问描述符的第一信息。
本发明实施例提供的一种直接内存访问描述符处理***,还可以包括:
状态机模块,用于通过状态机记录第一直接内存访问描述符的处理状态。
本发明实施例提供的一种直接内存访问描述符处理***,第一判断模块还可以用于:判断能否合并第一直接内存访问描述符与第二直接内存访问描述符之后,若不能合并第一直接内存访问描述符与第二直接内存访问描述符,则传输第二直接内存访问描述符至***器件快速互连IP核进行处理,将第一直接内存访问描述符作为第二直接内存访问描述符,返回执行获取现场可编程与门阵列中的目标加速功能单元传输的第一直接内存访问描述符及之后的步骤。
请参阅图4,图4为本发明实施例提供的一种直接内存访问描述符处理装置的结构示意图。
本发明实施例提供的一种直接内存访问描述符处理装置,可以包括:
与现场可编程与门阵列中的目标加速功能单元连接的第一先入先出存储器21,用于存储目标加速功能单元传输的待处理的第一直接内存访问描述符;
与第一先入先出存储器及第二先入先出存储器连接的合并控制器22,用于判断能否合并第一直接内存访问描述符与第二先入先出存储器中存储的第二直接内存访问描述符;若能合并第一直接内存访问描述符与第二直接内存访问描述符,则将第一直接内存访问描述符合并至第二先入先出存储器中的第二直接内存访问描述符;判断是否结束合并操作;若不结束合并操作,则在第一先入先出存储器中存储的第一直接内存访问描述符更新之后,返回执行判断能否合并第一直接内存访问描述符与第二直接内存访问描述符及之后的步骤;若结束合并操作,则将第二先入先出存储器中存储的第二直接内存访问描述符传输至现场可编程与门阵列中的***器件快速互连IP核进行处理;
第二先入先出存储器23,用于存储已有的第二直接内存访问描述符。
本发明实施例提供的一种直接内存访问描述符处理装置,还可以包括:
与第一先入先出存储器及合并控制器连接的直接内存访问描述符寄存器24,用于将第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
本发明实施例提供的一种直接内存访问描述符处理装置,还可以包括:
与第二先入先出存储器连接的第三先入先出存储器25,用于记录合并操作的每个第一直接内存访问描述符的目标标识信息;具体应用场景中,第三先入先出存储器的数据结构可以为0-7bit记录标识信息,8-23bit记录合并的直接内存访问描述符的个数值等;
与第三先入先出存储器连接的第四先入先出存储器26,用于记录合并操作合并的第一直接内存访问描述符的个数值;具体应用场景中,第四先入先出存储器的数据结构可以为0-7bit记录标识信息,8-23bit记录合并的直接内存访问描述符的个数值,24bit记录直接内存访问描述符是否成功处理的标志等;
与第四先入先出存储器及目标加速功能单元连接的计数器27,用于记录向目标加速功能单元传输的表征对应的第一直接内存访问描述符已处理完成的第二信息的数量值。
本发明实施例提供的直接内存访问描述符处理装置的相应描述可以参阅上述实施例,在此不再赘述。
需要说明的是,直接内存访问描述符处理装置状态机可以如图5所示,状态机的初始状态为状态1,当第一先入先出存储器为非空且第二先入先出存储器为非满时,读取第一先入先出存储器数据到直接内存访问描述符寄存器,跳转到状态2;否则保持状态1。状态2,判断第一先入先出存储器非空且输出端口的源地址和目的地址与直接内存访问描述符寄存器的预期源地址和预期目的地址一致时,跳转到状态3并读取第一先入先出存储器数据到直接内存访问描述符寄存器;如果不满足上一条件,且第一先入先出存储器为空或第二先入先出存储器为满,则跳转到状态1,不读取第一先入先出存储器,并将直接内存访问描述符寄存器数据写入第二先入先出存储器;如果以上两个条件都不满足,则保持状态1,读取第一先入先出存储器数据到直接内存访问描述符寄存器,并将直接内存访问描述符寄存器数据写入第二先入先出存储器。状态3,判断第一先入先出存储器为空,或第一先入先出存储器输出端口的源地址与直接内存访问描述符寄存器的预期源地址不一致,或第一先入先出存储器输出端口目的地址与直接内存访问描述符寄存器的预期目的地址不一致,或合并个数计数器达到设置上限,跳转到状态4;如果不满足以上条件,保持状态3并读取第一先入先出存储器数据到直接内存访问描述符寄存器。状态4将合并的直接内存访问描述符写入第二先入先出存储器,判断第一先入先出存储器为非空且第二先入先出存储器为非满时,跳转到状态2,并读取第一先入先出存储器数据到直接内存访问描述符寄存器;否则跳转到状态1。
为了便于理解本发明中直接内存访问描述符处理装置的工作流程,现结合图6和图7的场景来对其进行描述,在图6中,与现场可编程与门阵列连接的有两个10G以太网光口,以及两个4GB的SDRAM(synchronous dynamic random-access memory,同步动态随机存取内存)作为存储器,可以通过***器件快速互连连接服务器的中央处理器;在图7中,现场可编程与门阵列包含有3个加速计算单元,有一个指针管理模块,***器件快速互连IP核,描述符通道合并模块,随机存储器和本发明装置,其中指针管理模块内部存储有直接内存访问操作的源地址和目的地址以及标识信息,且每个源地址和目的地址分别间隔1024字节,标识信息为间隔1的连续递增数列,描述符通道合并模块的功能是将3路直接内存访问描述符合并成一路发送,并接收直接内存访问操作完成信息返回给对应的直接内存访问描述符发送模块;则本发明中直接内存访问描述符处理装置的工作流程如下:
三个加速功能单元同时对原始数据进行不同类型的计算,计算结果数据长度都是1024字节,之后依次从指针管理模块获得直接内存访问操作的标识、源地址和目的地址,根据源地址将结果数据存入现场可编程与门阵列内部随机存储器中,根据标识信息、源地址和目的地址发出直接内存访问描述符将结果数据传输到主机内存中。需要说明的是,由于三个加速计算单元使用同一个指针管理模块,且三个结果数据长度都为1024字节,三个结果数据在现场可编程与门阵列内部随机存储器和主机内存中是连续存储的;
三个加速功能单元发出的直接内存访问描述符通过通道合并模块先后连续输入本发明装置后,首先存入第一先入先出存储器。合并控制器的状态机从状态1跳转到状态2,将第一个直接内存访问描述符从第一先入先出存储器读出存储到直接内存访问描述符寄存器。状态2,直接内存访问描述符寄存器内存储的数据经过计算得到第一个直接内存访问描述符的预期源地址与预期目的地址,与第一先入先出存储器输出端口的第二个直接内存访问描述符的源地址和目的地址一致,跳转到状态3,得到合并直接内存访问描述符,且其源地址、目的地址和标识为第一个直接内存访问描述符的源地址、目的地址和标识,长度为第一个直接内存访问描述符和第二个直接内存访问描述符的长度之和,将第二个直接内存访问描述符从第一先入先出存储器读出存储到直接内存访问描述符寄存器。状态3,直接内存访问描述符寄存器内存储的数据经过计算得到第二个直接内存访问描述符的预期源地址与预期目的地址,与第一先入先出存储器输出端口的第三个直接内存访问描述符的源地址和目的地址一致,保持状态3,得到新的合并直接内存访问描述符的源地址、目的地址和标识保持为当前合并直接内存访问描述符的源地址、目的地址和标识,新的合并直接内存访问描述符的长度为当前合并直接内存访问描述符的长度加第三个直接内存访问描述符的长度,将第三个直接内存访问描述符从第一先入先出存储器读出存储到直接内存访问描述符寄存器。状态3,判断第一先入先出存储器为空,跳转到状态4。状态4,将合并直接内存访问描述符写入第二先入先出存储器,判断第一先入先出存储器为空,跳转到状态1。第二先入先出存储器将合并直接内存访问描述符发送到***器件快速互连IP核的端口1,并将合并直接内存访问描述符的标识和合并个数(3个)写入第三先入先出存储器中。
***器件快速互连IP核根据合并直接内存访问描述符将现场可编程与门阵列内部随机存储器存储的三个计算结果数据直接内存访问传输到主机内存中。直接内存访问操作成功后,***器件快速互连IP核的端口2将完成信息返回到本发明装置模块。本发明装置模块将返回的直接内存访问完成信息的标识与第三先入先出存储器输出端口的标识进行对比,判断数值一致,从第三先入先出存储器中读取数据,将返回的直接内存访问完成信息的成功标志与合并个数和直接内存访问描述符标识写入第四先入先出存储器中。
第四先入先出存储器非空后,从第四先入先出存储器中读取一个数据。判断第四先入先出存储器输出的合并的直接内存访问描述符的个数值为3,向下游模块连续输出3个直接内存访问完成信息。第一个直接内存访问完成信息的标识为第四先入先出存储器输出的标识,第二个和第三个输出的完成信息的标识为第一个标识加1和加2,三个直接内存访问完成信息的记录直接内存访问描述符是否成功处理的标志信号都为第四先入先出存储器输出的记录直接内存访问描述符是否成功处理的标志信号。
描述符通道合并模块接收到3个直接内存访问完成信息后,分别向三个加速功能单元返回直接内存访问完成信息。至此计算结果数据直接内存访问到主机内存的操作完成。
本发明还提供了一种电子设备及计算机可读存储介质,其均具有本发明实施例提供的一种直接内存访问描述符处理方法具有的对应效果。请参阅图8,图8为本发明实施例提供的一种电子设备的结构示意图。
本发明实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如上任一实施例所描述直接内存访问描述符处理方法的步骤。
请参阅图9,本发明实施例提供的另一种电子设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现电子设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(MHL)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本发明实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述直接内存访问描述符处理方法的步骤。
本发明所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本发明实施例提供的直接内存访问描述符处理***、装置、电子设备及计算机可读存储介质中相关部分的说明请参见本发明实施例提供的直接内存访问描述符处理方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (21)

1.一种直接内存访问描述符处理方法,其特征在于,包括:
获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;
获取已有的第二直接内存访问描述符;
判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符;
判断是否结束合并操作;
若不结束合并操作,则返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;
若结束合并操作,则传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理;
其中,所述将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符,包括:
解析所述第二直接内存访问描述符中的第三数据长度值;
解析所述第一直接内存访问描述符中的第二数据长度值;
计算所述第三数据长度值与所述第二数据长度值的和值;
保持所述第二直接内存访问描述符的源地址和目的地址不变,将所述和值作为所述第二直接内存访问描述符的最新数据长度值。
2.根据权利要求1所述的方法,其特征在于,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,包括:
获取所述第二直接内存访问描述符中最后合并的末尾直接内存访问描述符;
判断能否合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符;
若能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,则判定能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若不能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,则判定不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符。
3.根据权利要求2所述的方法,其特征在于,所述判断能否合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符,包括:
解析所述末尾直接内存访问描述符中的第一源地址、第一目的地址和第一数据长度值;
将所述第一源地址与所述第一数据长度值的和值作为第一预期源地址;
将所述第一目的地址与所述第一数据长度值的和值作为第一预期目的地址;
解析所述第一直接内存访问描述符中的第二源地址和第二目的地址;
若所述第一预期源地址与所述第二源地址一致,所述第一预期目的地址与所述第二目的地址一致,则判定能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符;
若所述第一预期源地址与所述第二源地址不一致和/或所述第一预期目的地址与所述第二目的地址不一致,则判定不能合并所述末尾直接内存访问描述符与所述第一直接内存访问描述符。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符之后,还包括:
将所述第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
5.根据权利要求1所述的方法,其特征在于,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,包括:
解析所述第二直接内存访问描述符中的第三源地址、第三目的地址和第三数据长度值;
将所述第三源地址与所述第三数据长度值的和值作为第二预期源地址;
将所述第三目的地址与所述第三数据长度值的和值作为第二预期目的地址;
解析所述第一直接内存访问描述符中的第二源地址和第二目的地址;
若所述第二预期源地址与所述第二源地址一致,所述第二预期目的地址与所述第二目的地址一致,则判定能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;
若所述第二预期源地址与所述第二源地址不一致和/或所述第二预期目的地址与所述第二目的地址不一致,则判定不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符。
6.根据权利要求1所述的方法,其特征在于,初始的所述第二直接内存访问描述符为空,且设置初始的所述第二直接内存访问描述符与合并操作的第一个所述第一直接内存访问描述符的合并结果为第一个所述第一直接内存访问描述符本身。
7.根据权利要求1所述的方法,其特征在于,所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符之后,所述获取已有的第二直接内存访问描述符之前,还包括:
判断所述第一直接内存访问描述符是否为合并操作的第一个直接内存访问描述符;
若所述第一直接内存访问描述符为合并操作的第一个直接内存访问描述符,则将所述第一直接内存访问描述符作为所述第二直接内存访问描述符,返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;
若所述第一直接内存访问描述符并非合并操作的第一个直接内存访问描述符,则执行所述获取已有的第二直接内存访问描述符及之后的步骤。
8.根据权利要求7所述的方法,其特征在于,还包括:
记录合并操作的每个所述第一直接内存访问描述符的目标标识信息。
9.根据权利要求8所述的方法,其特征在于,所述传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理之后,还包括:
接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的第一信息;
基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息。
10.根据权利要求9所述的方法,其特征在于,所述基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息,包括:
解析所述第二信息中所述第二直接内存访问描述符的标识信息;
若所述第二直接内存访问描述符的标识信息与所述目标标识信息一致,则执行所述基于所述目标标识信息,向所述目标加速功能单元传输表征对应的所述第一直接内存访问描述符已处理完成的第二信息的步骤。
11.根据权利要求10所述的方法,其特征在于,所述记录合并操作的每个所述第一直接内存访问描述符的目标标识信息,包括:
若各个所述第一直接内存访问描述符间的标识信息连续,则记录合并操作的第一个所述第一直接内存访问描述符的第一标识,记录合并操作合并的所述第一直接内存访问描述符的个数值;
将所述第一标识和所述个数值作为所述目标标识信息。
12.根据权利要求11所述的方法,其特征在于,所述传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理,包括:
通过所述***器件快速互连IP核的第一端口,传输所述第二直接内存访问描述符至所述***器件快速互连IP核进行处理。
13.根据权利要求12所述的方法,其特征在于,所述接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的第一信息,包括:
通过所述***器件快速互连IP核的第二端口,接收所述***器件快速互连IP核传输的表征处理完成所述第二直接内存访问描述符的所述第一信息。
14.根据权利要求1所述的方法,其特征在于,还包括:
通过状态机记录所述第一直接内存访问描述符的处理状态。
15.根据权利要求1所述的方法,其特征在于,所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符之后,还包括:
若不能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则传输所述第二直接内存访问描述符至所述***器件快速互连IP核进行处理,将所述第一直接内存访问描述符作为所述第二直接内存访问描述符,返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的第一直接内存访问描述符及之后的步骤。
16.一种直接内存访问描述符处理***,其特征在于,包括:
第一获取模块,用于获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符;
第二获取模块,用于获取已有的第二直接内存访问描述符;
第一判断模块,用于判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符;若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二直接内存访问描述符;
第二判断模块,用于判断是否结束合并操作;若不结束合并操作,则控制所述第一获取模块返回执行所述获取现场可编程与门阵列中的目标加速功能单元传输的待处理的第一直接内存访问描述符及之后的步骤;若结束合并操作,则传输所述第二直接内存访问描述符至所述现场可编程与门阵列中的***器件快速互连IP核进行处理;
其中,所述第一判断模块具体用于:解析所述第二直接内存访问描述符中的第三数据长度值;解析所述第一直接内存访问描述符中的第二数据长度值;计算所述第三数据长度值与所述第二数据长度值的和值;保持所述第二直接内存访问描述符的源地址和目的地址不变,将所述和值作为所述第二直接内存访问描述符的最新数据长度值。
17.一种直接内存访问描述符处理装置,其特征在于,包括:
与现场可编程与门阵列中的目标加速功能单元连接的第一先入先出存储器,用于存储所述目标加速功能单元传输的待处理的第一直接内存访问描述符;
与所述第一先入先出存储器及第二先入先出存储器连接的合并控制器,用于判断能否合并所述第一直接内存访问描述符与所述第二先入先出存储器中存储的第二直接内存访问描述符;若能合并所述第一直接内存访问描述符与所述第二直接内存访问描述符,则将所述第一直接内存访问描述符合并至所述第二先入先出存储器中的所述第二直接内存访问描述符;判断是否结束合并操作;若不结束合并操作,则在所述第一先入先出存储器中存储的所述第一直接内存访问描述符更新之后,返回执行所述判断能否合并所述第一直接内存访问描述符与所述第二直接内存访问描述符及之后的步骤;若结束合并操作,则将所述第二先入先出存储器中存储的所述第二直接内存访问描述符传输至所述现场可编程与门阵列中的***器件快速互连IP核进行处理;
所述第二先入先出存储器,用于存储已有的所述第二直接内存访问描述符;
其中,所述合并控制器具体用于:解析所述第二直接内存访问描述符中的第三数据长度值;解析所述第一直接内存访问描述符中的第二数据长度值;计算所述第三数据长度值与所述第二数据长度值的和值;保持所述第二直接内存访问描述符的源地址和目的地址不变,将所述和值作为所述第二直接内存访问描述符的最新数据长度值。
18.根据权利要求17所述的装置,其特征在于,还包括:
与所述第一先入先出存储器及所述合并控制器连接的直接内存访问描述符寄存器,用于将所述第一直接内存访问描述符作为最新的末尾直接内存访问描述符进行存储。
19.根据权利要求18所述的装置,其特征在于,还包括:
与所述第二先入先出存储器连接的第三先入先出存储器,用于记录合并操作的每个所述第一直接内存访问描述符的目标标识信息;
与所述第三先入先出存储器连接的第四先入先出存储器,用于记录合并操作合并的所述第一直接内存访问描述符的个数值;
与所述第四先入先出存储器及所述目标加速功能单元连接的计数器,用于记录向所述目标加速功能单元传输的表征对应的所述第一直接内存访问描述符已处理完成的第二信息的数量值。
20.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至15任一项所述直接内存访问描述符处理方法的步骤。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至15任一项所述直接内存访问描述符处理方法的步骤。
CN202310884534.4A 2023-07-19 2023-07-19 直接内存访问描述符处理方法、***、装置、设备及介质 Active CN116610608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310884534.4A CN116610608B (zh) 2023-07-19 2023-07-19 直接内存访问描述符处理方法、***、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310884534.4A CN116610608B (zh) 2023-07-19 2023-07-19 直接内存访问描述符处理方法、***、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116610608A CN116610608A (zh) 2023-08-18
CN116610608B true CN116610608B (zh) 2023-11-03

Family

ID=87678636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310884534.4A Active CN116610608B (zh) 2023-07-19 2023-07-19 直接内存访问描述符处理方法、***、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116610608B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111046072A (zh) * 2019-11-29 2020-04-21 浪潮(北京)电子信息产业有限公司 一种数据查询方法、***、异构计算加速平台及存储介质
CN116069711A (zh) * 2023-04-07 2023-05-05 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质
WO2023123849A1 (zh) * 2021-12-28 2023-07-06 苏州浪潮智能科技有限公司 一种数据加速计算方法及相关装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
JP6880402B2 (ja) * 2017-05-10 2021-06-02 富士通株式会社 メモリアクセス制御装置及びその制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111046072A (zh) * 2019-11-29 2020-04-21 浪潮(北京)电子信息产业有限公司 一种数据查询方法、***、异构计算加速平台及存储介质
WO2023123849A1 (zh) * 2021-12-28 2023-07-06 苏州浪潮智能科技有限公司 一种数据加速计算方法及相关装置
CN116069711A (zh) * 2023-04-07 2023-05-05 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质

Also Published As

Publication number Publication date
CN116610608A (zh) 2023-08-18

Similar Documents

Publication Publication Date Title
CN110727608A (zh) 一种日志数据的存储方法、电子设备及存储介质
CN112100090A (zh) 数据访问请求处理方法、装置、介质及内存映射控制器
WO2022032990A1 (zh) 一种命令信息传输方法、***、装置及可读存储介质
CN109787884B (zh) 一种消息推送方法和装置
CN109213828B (zh) 区块生成方法、装置、设备及存储介质
CN112947857B (zh) 一种数据搬移方法、装置、设备及计算机可读存储介质
CN112817899B (zh) 基于pcie的数据传输方法、装置、存储介质和电子设备
CN116610608B (zh) 直接内存访问描述符处理方法、***、装置、设备及介质
CN111159124B (zh) Linux内核文件***异步写缓存方法、装置及介质
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN109800202B (zh) 一种基于pcie的数据传输***、方法及装置
CN116467235A (zh) 一种基于dma的数据处理方法、装置、电子设备及介质
CN116483259A (zh) 一种数据处理方法以及相关装置
CN114328153A (zh) 一种rdma性能测试***、方法、装置及介质
CN112764897B (zh) 任务请求的处理方法、装置、***及计算机可读存储介质
CN109241362B (zh) 区块生成方法、装置、设备及存储介质
CN110045929B (zh) 一种挂载点管理方法及相关装置
CN112948298A (zh) 一种报文处理方法及装置
CN113238863A (zh) 一种bmc与bios的数据交互方法、装置及***
CN115604198B (zh) 一种网卡控制器、网卡控制方法、设备及介质
CN114237509B (zh) 数据访问方法及装置
CN116991542B (zh) 一种虚拟机快照方法、***、电子设备及计算机存储介质
CN116775510B (zh) 数据访问方法、装置、服务器和计算机可读存储介质
CN118151851B (zh) 固态硬盘读取方法、装置、设备及可读存储介质
CN117472819A (zh) 基于PXIe的DMA数据传输处理方法、***及设备

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