CN117539807A - 一种数据传输方法、相关设备及存储介质 - Google Patents

一种数据传输方法、相关设备及存储介质 Download PDF

Info

Publication number
CN117539807A
CN117539807A CN202311378345.6A CN202311378345A CN117539807A CN 117539807 A CN117539807 A CN 117539807A CN 202311378345 A CN202311378345 A CN 202311378345A CN 117539807 A CN117539807 A CN 117539807A
Authority
CN
China
Prior art keywords
memory space
data
transmitted
space
address
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.)
Pending
Application number
CN202311378345.6A
Other languages
English (en)
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.)
Phytium Technology Co Ltd
Original Assignee
Phytium 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 Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202311378345.6A priority Critical patent/CN117539807A/zh
Publication of CN117539807A publication Critical patent/CN117539807A/zh
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bus Control (AREA)

Abstract

本申请提供一种数据传输方法、相关设备及存储介质,应用于计算机技术领域,CPU首先将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,图形处理器在显存中分配地址对齐的临时显存空间,CPU基于内存与显存之间的地址映射关系,将地址不对齐的第一内存空间内的待传输数据传输至临时显存空间中的第一显存空间,通过DMA数据通路将地址对齐的第二内存空间的待传输数据传输至临时显存空间中的第二显存空间,CPU直接参与的是第一内存空间内待传输数据的传输,第二内存空间内的待传输数据由DMA数据通路完成传输,可以有效降低CPU的负载,而且可以提高数据传输的整体效率,提高GPU的渲染性能。

Description

一种数据传输方法、相关设备及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种数据传输方法、相关设备及存储介质。
背景技术
随着图像处理技术的不断发展,渲染场景越来越丰富,图形处理器(GraphicsProcessing Unit,GPU)所需要处理的数据量越来越大,而这些数据通常需要在中央处理器(Central Processing Unit,CPU)的控制下才能完成传输。
现有技术中,由于CPU深度参与GPU所需数据的传输,不仅加大CPU的负载,降低CPU的整体性能,而且,由于待传输数据的数据量大,传输耗时长,还会降低GPU的渲染性能。
发明内容
有鉴于此,本申请致力于提供一种数据传输方法、相关设备及存储介质,通过两种数据传输方式传输数据,降低由CPU直接负责传输的数据量,降低CPU负载,提高CPU性能,同时提高数据传输效率,避免影响GPU的渲染性能。
第一方面,本申请提供一种数据传输方法,应用于中央处理器,所述方法包括:
将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,所述目标内存空间以及所述第一内存空间地址不对齐,所述第二内存空间地址对齐;
发送显存分配指令,所述显存分配指令用于指示图形处理器在显存中分配地址对齐的临时显存空间,且所述临时显存空间大于所述目标内存空间;
基于内存与显存之间的地址映射关系,将所述第一内存空间内的待传输数据传输至所述临时显存空间中的第一显存空间;
以及,通过直接存储器访问DMA数据通路,将所述第二内存空间的待传输数据传输至所述临时显存空间中的第二显存空间,所述第二显存空间与所述第一显存空间相邻。
在一种可能的实施方式中,所述第一内存空间小于所述第二内存空间。
在一种可能的实施方式中,所述将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,包括:
将所述目标内存空间中存储地址位于分界地址之前的内存空间作为第一内存空间,所述分界地址为所述目标内存空间首地址之后的第一个地址对齐的内存地址;
将所述目标内存空间中所述第一内存空间以外的内存空间作为第二内存空间。
在一种可能的实施方式中,在将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间之前,还包括:
响应于第一数据传输指令,确定所述目标内存空间是否地址对齐;
若所述目标内存空间地址不对齐,执行所述将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间步骤。
在一种可能的实施方式中,所述基于内存与显存之间的地址映射关系,将所述第一内存空间内的待传输数据传输至所述临时显存空间中的第一显存空间,包括:
基于内存与显存之间的地址映射关系,确定所述第一显存空间在内存中的映射地址空间;
将所述第一内存地址空间内的待传输数据传输至所述映射地址空间;
发送第二数据传输指令,所述第二数据传输指令用于指示所述图形处理器基于所述地址映射关系获取所述映射地址空间内的待传输数据并存储至所述第一显存空间。
在一种可能的实施方式中,所述通过直接存储器访问DMA数据通路,将所述第二内存空间的待传输数据传输至所述临时显存空间中的第二显存空间,包括:
发送所述第二内存空间的空间地址、所述第二内存空间内待传输数据的数据长度以及所述第二显存空间的空间地址至DMA控制器;
所述DMA控制器用于根据所述第二内存空间的空间地址以及所述数据长度获取所述第二内存空间内待传输数据,并根据所述第二显存空间的空间地址将所述第二内存空间内待传输数据传输至所述第二显存空间。
在一种可能的实施方式中,本发明第一方面提供的数据传输方法,还包括:
发送第三数据传输指令,所述第三数据传输指令用于指示图形处理器将所述临时显存空间内的待传输数据传输至目的显存空间,所述目的显存空间用于在图形处理器进行图像处理时提供所述待传输数据。
第二方面,本发明提供一种数据传输方法,应用于图形处理器,所述方法包括:
获取显存分配指令,所述显存分配指令由中央处理器在将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间后输出,所述目标内存空间以及所述第一内存空间地址不对齐,所述第二内存空间地址对齐;
响应于所述显存分配指令,在显存中分配地址对齐的临时显存空间;
其中,所述临时显存空间大于所述目标内存空间,且所述临时显存空间包括相邻的第一显存空间和第二显存空间,所述第一显存空间用于存储基于内存与显存之间的地址映射关系传输的所述第一内存空间内的待传输数据,所述第二显存空间用于存储通过DMA数据通路传输的所述第二内存空间的待传输数据。
在一种可能的实施方式中,本发明第二方面提供的数据传输方法,还包括:
获取第二数据传输指令,所述第二数据传输指令由中央处理器基于内存与显存之间的地址映射关系确定所述第一显存空间在内存中的映射地址空间,并将所述第一内存地址空间内的待传输数据传输至所述映射地址空间后发送;
响应于所述第二数据传输指令,基于所述地址映射关系获取所述映射地址空间内的待传输数据并存储至所述第一显存空间。
在一种可能的实施方式中,本发明第二方面提供的数据传输方法,还包括:
响应于第三数据传输指令,将所述临时显存空间内的待传输数据传输至目的显存空间,以在进行图像处理时获取所述目的显存空间中的待传输数据。
在一种可能的实施方式中,将所述临时显存空间内的待传输数据传输至目的显存空间,包括:
将所述临时显存空间划分为多个子空间;
依次将各所述子空间内的待传输数据传输至所述目的显存空间,直至将全部待传输数据传输至所述目的显存空间。
在一种可能的实施方式中,所述依次将各所述子空间内的待传输数据传输至所述目的显存空间,包括:
创建传输队列,所述传输队列用于指示各所述子空间的传输顺序;
按照所述传输队列指示的传输顺序,依次将各所述子空间内的待传输数据传输至所述目的显存空间。
第三方面,本发明提供一种中央处理器,被配置为执行如本发明第一方面任一项所述的数据传输方法。
第四方面,本发明提供一种片上***,包括:如本发明第三方面所述的中央处理器。
第五方面,本发明提供一种图形处理器,被配置为执行如本发明第二方面任一项所述的数据传输方法。
第六方面,本发明提供一种数据传输***,包括:内存、显存、DMA控制器、通信总线、数据上传模块以及如本发明第五方面所述的图形处理器,其中,
所述内存、显存、DMA控制器、数据上传模块以及所述图形处理器分别与通信总线相连;
所述数据上传模块包括如第三方面提供的中央处理器或者如本发明第四方面提供的片上***。
第七方面,本发明提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面任一项所述的数据传输方法,或者,实现如本发明第二方面任一项所述的数据传输方法。
基于上述内容,通过本申请提供的数据传输方法,CPU首先将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,图形处理器在显存中分配地址对齐的临时显存空间,进一步的,CPU基于内存与显存之间的地址映射关系,将地址不对齐的第一内存空间内的待传输数据传输至临时显存空间中的第一显存空间,通过DMA数据通路,将地址对齐的第二内存空间的待传输数据传输至临时显存空间中的第二显存空间,完成待传输数据有内存到显存的传输过程。由于将目标内存空间划分为地址对齐和地址不对齐的两部分,CPU直接参与的是第一内存空间内待传输数据的传输,第二内存空间内的待传输数据由DMA数据通路完成传输,可以有效降低CPU直接参与传输的数据量,而且通过DMA数据通路进行数据传输相较于CPU基于地址映射关系进行数据传输,传输效率显著提高,不仅可以降低CPU的负载,而且可以提高数据传输的整体效率,从而有助提高GPU的渲染性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据传输***的结构框图。
图2是本发明实施例提供的一种数据传输方法的流程示意图。
图3是本发明实施例提供的另一种数据传输方法的流程示意图。
图4是本发明实施例提供的再一种数据传输方法的流程示意图。
图5是本发明实施例提供的传输队列的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图形处理器(Graphics Processing Unit,GPU)是一种微处理器,是计算机的核心组件之一,通常图形处理器被配置为处理大规模的数据并运用数百个计算单元执行相应的计算,以完成图像渲染和图像处理等任务,在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作。近年来,随着图像处理技术的不断发展,渲染场景越来越丰富,图形处理器所需要处理的数据量越来越大,而这些数据通常需要在中央处理器的控制下才能完成传输,比如,在中央处理器的控制下将内存中的数据传输至显存,供图形处理器在进行图像处理时使用。
发明人研究发现,由于CPU深度参与GPU所需数据的传输,不仅加大CPU的负载,降低CPU的整体性能,而且,由于待传输数据的数据量大,传输耗时长,还会降低GPU的渲染性能。
为解决上述问题,本申请提供一种数据传输***,参见图1所示,本申请提供的数据传输***包括数据上传模块10、通信总线20、图形处理器30、显存40、DMA(Direct MemoryAccess,直接存储器访问)控制器50以及内存60,其中,数据上传模块10可以是CPU或SoC(System on Chip,片上***),当然,还可以是其他能够用于为图像处理器30传输数据的电子设备,此处不再一一罗列。相应的,通信总线20同样可根据实际需求以及数据上传模块10与其他各***构成部分之间的通信模式选择,比如,可以选择PCIe(Peripheral ComponentInterconnect express)总线或其他通信协议对应的总线,在未超出本发明核心思想范围的前提下,同样属于本发明保护的范围内。
结合图1所示,数据上传模块10、图形处理器30、显存40、DMA控制器50以及内存60分别与通信总线20相连,通过通信20实现信息交互以及数据传输。具体的,数据上传模块10首先将内存60中存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,其中,目标内存空间以及第一内存空间地址不对齐,第二内存空间地址对齐,图形处理器30在显存40中分配地址对齐的临时显存空间,进一步的,数据上传模块10基于内存60与显存40之间的地址映射关系,将第一内存空间内的待传输数据传输至临时显存空间中的第一显存空间,同时,数据上传模块10通过DMA数据通路,将第二内存空间的待传输数据传输至临时显存空间中的第二显存空间,从而完成待传输数据有内存到显存的传输过程。
本申请提供的数据传输***,将目标内存空间划分为地址对齐和地址不对齐的两部分,数据上传模块直接参与的是第一内存空间内待传输数据的传输,第二内存空间内的待传输数据由DMA数据通路完成传输,可以有效降低数据上传模块,即CPU或SoC直接参与传输的数据量,而且通过DMA数据通路进行数据传输相较于CPU或SoC基于地址映射关系进行数据传输,传输效率显著提高,不仅可以降低CPU或SoC的负载,而且可以提高数据传输的整体效率,从而有助提高GPU的渲染性能。
进一步的,本申请还提供一种数据传输方法,应用于图1所示的数据传输***,参见图2所示,数据上传模块以CPU为例,本申请实施例提供的数据传输方法的流程可以包括如下步骤。
S100、CPU将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间。
在本发明实施例对应的应用场景中,待传输数据存储于内存中,CPU需要将目标内存空间中的待传输数据由内存搬运至显存中,以供GPU进行图像处理时使用。进一步的,本发明实施例所提供的数据传输方法,主要针对内存中地址不对齐的内存空间内所存储数据的传输,对于地址对齐的内存空间内所存储数据的传输,可基于其他相关方法实现。
基于上述内容,在将目标内存空间划分为第一内存空间和第二内存空间之前,可先对目标内存空间是否地址对齐进行判断。具体的,CPU接收第一数据传输指令,该指令用于控制CPU对待传输数据进行传输,在实际应用中,第一数据传输指令可以由用户直接操作CPU所属的电子设备发出,也可由CPU所加载的应用程序发出,当然,还可以通过其他方式触发,本发明对于第一数据传输指令的具体来源不做限定。
CPU响应于第一数据传输指令,首先判断目标内存空间是否地址对齐,在实际应用中,不同的处理器体系结构和操作***可能有不同的地址对齐规则和判断方法,因此,需要根据具体的处理器和操作***来判断目标内存空间是否地址对齐。
比如,对于某些处理器架构而言,可以根据目标内存空间的首地址除以32所得结果判断目标内存空间是否地址对齐。具体的,将目标内存空间的首地址除以32,如果余数为0,则确定目标内存空间地址对齐,相反的,如果所得余数不为零,则可以确定目标内存空间地址不对齐。例如,存储空间对应40位地址空间,目标内存空间的起始地址是0x1000000000,硬件要求32字节对齐,一个字节为8位,那么下一个地址对齐的地址是0x1000000100,进一步的,如果一个地址空间为64字节,首地址为0x1000000116,把该首地址除以32,可以得到余数为16(16进制表示),就可以判断该地址空间地址不对齐。需要说明的是,除了可以根据首地址除以32的结果判断地址空间是否地址对齐以外,对于其他架构类型的处理器,还可以根据首地址除以16或者其他数值的方法来判断地址是否对齐,此处不再一一展开。
在目标内存空间地址不对齐的情况下,本方法将目标内存空间划分为第一内存空间和第二内存空间,其中,第一内存空间地址不对齐,第二内存空间地址对齐。至于第一内存空间和第二内存空间的优选划分方法,将在后续内容中展开,此处暂不详述。
S110、CPU发送显存分配指令。
由于CPU无法直接访问显存,因此,在将目标内存空间划分为地址不对齐的第一内存空间和地址对齐的第二内存空间之后,CPU向GPU发送显存分配指令,显存分配指令主要用于指示GPU在显存中分配地址对齐的临时显存空间。
可以理解的是,目标内存空间地址不对齐,临时显存空间地址对齐,为了能够完全容纳目标内存空间中的待传输数据,临时显存空间应大于目标内存空间,其中,临时显存空间大于目标内存空间的部分,即在将地址补齐过程中扩展出来的存储空间。
目标内存空间的大小,对于CPU而言是已知的,但对于GPU而言是未知的,因此,一种可能的实施方式中,CPU通过显存分配指令告知GPU目标内存空间的大小,由GPU根据目标内存空间的大小确定地址对齐且大于目标内存空间的临时显存空间;在另一种可能的实施方式中,CPU可直接通过显存分配指令告知GPU需要分配的临时显存空间的大小。
S120、GPU获取显存分配指令。
结合图1所示,GPU通过通信总线与CPU相连,GPU可以获取CPU发送的显存分配指令,至于GPU与CPU之间进行信息交互的具体实现方式,可参照相关技术,本发明对此不做限定。
S130、GPU响应于显存分配指令,在显存中分配地址对齐的临时显存空间。
GPU得到显存分配指令之后,对显存分配指令进行解析,如果所得解析结果中包括目标内存空间的大小,则根据目标内存空间的大小在显存中分配大于目标内存空间且地址对齐的临时显存空间。相应的,如果所得解析结果中包括的是临时显存空间的大小,GPU按照所得临时显存空间大小在显存中分配地址对齐的临时显存空间。
至于GPU在显存中分配临时显存空间的具体实现方式,可参照相关技术实现,本发明对此不做限定。
在一种可能的实施方式中,GPU在分配临时显存空间之后,可以向CPU反馈通知信息,以通知CPU临时显存空间分配完毕。进一步的,在该通知信息中,还可以包括临时显存空间的起始地址、终止地址以及其他相关信息,此处不再一一罗列,在未超出本发明核心思想范围的前提下,同样属于本发明保护的范围内。
需要说明的是,临时显存空间并非GPU处理图形时直接访问的显存空间,在实际应用中还需要将临时显存空间中的待传输数据进一步传输至GPU可直接访问的目的显存空间,设置临时显存空间的作用主要在于避免自目标内存空间将待传输数据直接传输至目的显存空间时出现的字节空洞,进而避免GPU读取数据出错,保证GPU可靠的获取待传输数据。
S140、CPU基于内存与显存之间的地址映射关系,将第一内存空间内的待传输数据传输至临时显存空间中的第一显存空间。
第一内存空间中的待传输数据的传输,主要由CPU来完成,是全部数据传输过程中占用CPU资源最多的。为提高第一内存空间中待传输数据的传输效率,本发明实施例提供图3所示的数据传输方法,其执行流程可以包括如下步骤。
S1401、基于内存与显存之间的地址映射关系,确定第一显存空间在内存中的映射地址空间。
在现有计算机架构中,CPU无法直接访问显存,为了将第一内存空间中的待传输数据传输至显存,需要将显存空间的地址映射为CPU可以访问的内存地址。通常,显存挂载于计算机***的PCIe链路,首先需要对显存地址进行PCIe bar空间的地址映射,得到CPU能够访问的物理地址空间,然后,再将所得物理地址空间映射为逻辑地址空间,所得逻辑地址空间即显存在内存中的映射地址空间。至于地址映射过程中的其他实现细节,可参照相关技术,此处不再详细展开。
基于上述内容,在一种可能的实施方式中,CPU可以将整个临时显存空间的空间地址映射到内存中,得到临时显存空间在内存中的映射地址空间,进一步的,由于目标内存空间中的待传输数据在临时显存空间对应的映射地址空间中是顺序存储的,因此,可以在临时显存空间对应的映射地址空间中,根据第一内存空间的地址范围确定与第一内存空间对应的映射地址空间,亦即第一显存空间在内存中的映射地址空间。
在另一种可能的实施方式中,CPU可以通过控制指令将第一内存空间的容量通知GPU,GPU在分配临时显存空间后,进一步在临时显存空间中分配与第一内存空间容量相等的临时显存空间,即得到第一显存空间。GPU通过反馈指令通知CPU第一显存空间的显存地址范围,最终由CPU基于内存与显存之间的地址映射关系,确定第一显存空间在内存中的映射地址空间。
S1402、将第一内存地址空间内的待传输数据传输至映射地址空间。
根据上述确定映射地址空间的过程可以看出,映射地址空间属于CPU可以直接访问的内存空间,在确定第一显存空间在内存中的映射地址空间之后,CPU即可将第一内存地址空间内的待传输数据传输至映射地址空间。可以理解的是,这一数据传输过程是在CPU的控制下完成的,需要CPU的深度参与。至于将第一内存地址空间内的待传输数据传输至映射地址空间的具体实现过程有多种,比如,可以基于memcpy方式实现,当然,也可以采用其他方式,本发明对此不做具体限定。
S1403、发送第二数据传输指令。
在将第一内存地址空间内的待传输数据传输至映射地址空间之后,CPU向GPU发送第二数据传输指令,GPU响应于第二数据传输指令,根据内存与显存之间的地址映射关系,获取映射地址空间内的待传输数据并存储至第一显存空间,至此,完成地址不对齐的第一内存空间中待传输数据的传输。
S150、CPU通过DMA数据通路,将第二内存空间的待传输数据传输至临时显存空间中的第二显存空间。
结合图1所示的数据传输***,DMA控制器与通信总线相连,CPU可通过DMA控制器以及通信总线搭建DMA数据通路,利用DMA数据通路实现待传输数据的快速传输。具体的,CPU发送第二内存空间的空间地址、第二内存空间内待传输数据的数据长度以及第二显存空间的空间地址至DMA控制器,DMA控制器根据第二内存空间的空间地址以及数据长度获取第二内存空间内待传输数据,并根据第二显存空间的空间地址将第二内存空间内待传输数据传输至第二显存空间。至于DMA控制器搭建DMA数据通路进行数据传输的具体实现过程可参照相关技术,此处不再具体展开。
对于第二显存空间的空间地址,CPU可通过多种方式获取。比如,在完成第一显存空间内待传输数据的传输后,GPU已经确定第一显存空间的终止地址,由于待传输数据在临时显存空间中是顺序存储的,因此,第一显存空间的终止地址的下一地址至临时显存空间的终止地址,所对应的地址空间即第二显存空间的地址空间,GPU可通过反馈信息等方式通知CPU第二显存空间的空间地址。再比如,CPU可将第一内存空间以及第二内存空间的容量通知GPU,GPU根据第一内存空间以及第二内存空间各自的容量即可对临时显存空间进行划分,即确定第一显存空间和第二显存空间,在执行本步骤时,GPU通过反馈消息等方式将第二显存空间的空间地址通知CPU,以使CPU通过DMA数据通路,将第二内存空间的待传输数据传输至临时显存空间中的第二显存空间。
经过前述步骤,已经完成将目标内存空间中的待传输数据传输至显存的临时显存空间的完整过程。
综上所述,本申请实施例提供的数据传输方法,将目标内存空间划分为地址对齐和地址不对齐的两部分,CPU直接参与的是第一内存空间内待传输数据的传输,第二内存空间内的待传输数据由DMA数据通路完成传输,可以有效降低CPU直接参与传输的数据量,而且通过DMA数据通路进行数据传输相较于CPU基于地址映射关系进行数据传输,传输效率显著提高,不仅可以降低CPU的负载,而且可以提高数据传输的整体效率,从而有助提高GPU的渲染性能。
进一步的,基于上述数据传输过程可以看出,DMA数据通路的数据传输效率要远高于CPU直接参与的数据传输过程的传输效率,因此,在对目标内存空间进行划分时,应使第一内存空间小于第二内存空间,即将更多的待传输数据通过DMA数据通路传输,提高整体的数据传输效率。基于此,为了最大限度的提高数据传输效率,应在满足第一内存空间地址不对齐、第二内存空间地址对齐的前提下,第一内存空间最小同时第二内存空间最大。具体的,可将目标内存空间中存储地址位于分界地址之前的内存空间作为第一内存空间,其中,分界地址为目标内存空间首地址之后的第一个地址对齐的内存地址,并将目标内存空间中第一内存空间以外的内存空间作为第二内存空间。通过这一划分方式,可使得通过DMA数据通路传输的数据量最大,通过CPU直接参与传输的数据量最小,充分利用DMA数据通路高传输效率的优势,有效提高待传输数据的整体传输效率。
可以理解的是,通过DMA数据通路进行CPU与GPU之间的数据传输,适用于内存中地址对齐的内存空间,且具有数据传输效率高的优势,因此,如果在S100中判定目标内存空间为地址对齐的存储空间,可直接参照S150,即通过DMA数据通路进行目标内存空间内待传输数据的传输。
如前所述,临时显存空间并非GPU处理图形时直接访问的显存空间,因此,还需要进一步将临时显存空间中的待传输数据传输至GPU处理图形时直接访问的目的显存空间,为此,本申请实施例提供另一种数据传输方法,参见图4所示,在图2所示实施例的基础上,本实施例提供的数据传输方法的流程还包括以下步骤。
S160、CPU发送第三数据传输指令。
在待传输数据由目标内存空间传输至临时显存空间之后,CPU发送第三数据传输指令,该指令主要用于通知GPU目标内存空间内的全部待传输数据已经全部存储至临时显存空间,GPU可以开展后续显存内部的数据传输工作。
S170、GPU响应于第三数据传输指令,将临时显存空间内的待传输数据传输至目的显存空间。
GPU将临时显存空间内的待传输数据传输至目的显存空间的具体实现方式有多种,为提高显存内部数据传输的效率,本发明实施例提供一种数据传输方法,主要用于实现显存内部存储数据的搬运。
首先,GPU在接收CPU的第三数据传输指令之后,将存储有待传输数据的临时显存空间划分为多个子空间。需要说明的是,在进行子空间划分时,各个子空间的大小可以相同也可以不同,并且,各子空间可以是地址对齐的显存空间,也可以是地址不对齐的显存空间,当然,对于子空间的具体数量同样没有限制。在实际应用中,可以结合具体的数据传输需求划分临时显存空间,这是本发明实施例提供的数据传输方法的优势之一,减少显存空间内部数据传输的限制,有效提高显存空间内部数据传输的效率。
其次,GPU依次将各子空间内的待传输数据传输至目的显存空间,直至将全部待传输数据传输至目的显存空间,完成显存内部的数据传输过程。
在一种可能的实施方式中,GPU可以按照各子空间对应的显存地址的先后顺序,逐一将各子空间内的待传输数据传输至目的显存空间,当然,各子空间内的待传输数据是按照传输顺序相邻存储于目的显存空间中的,避免出现字节空洞,以保证GPU在后续访问目的显存空间获取数据的连贯性,避免出现访问错误的情况。
在另一种可能的实施方式中,GPU创建用于指示各子空间的传输顺序传输队列,然后按照传输队列指示的传输顺序,依次将各子空间内的待传输数据传输至目的显存空间。具体的,该传输队列包括多个节点,节点的数量与子空间的数量相同且节点与子空间一一对应,每个节点包括一个指针和一个栅栏(fence,即标志位)。结合图5所示,每个节点内指针指向与自身对应的子空间的显存地址,GPU按照各指针的顺序依次向目的显存地址传输各子空间内的待传输数据,当任一子空间内的数据传输完毕后,GPU根据该子空间对应的节点内的栅栏确定该子空间内的待传输数据已经传输完成,进而根据下一节点的指针进行下一子空间内待传输数据的传输,直至遍历传输队列中的所有节点,完成临时显存空间内部全部待传输数据到目的显存空间的传输。
进一步的,GPU即可释放临时显存空间,并根据目的显存空间内的数据进行图像处理工作。
综上所述,在前述实施例的基础上,本实施例提供的数据传输方法,还能够实现显存内部临时显存空间到目的显存空间的数据传输,通过传输队列,可以有效提高显存内部的数据传输效率,有助于提高GPU的图形处理效率。
本申请还提供一种中央处理器,该中央处理器被配置为执行上述任一项实施例提供的数据传输方法中中央处理器所执行的步骤。
本申请还提供一种片上***,包括:如上述实施例提供的中央处理器。
本申请还提供一种图形处理器,该图形处理器被配置为执行上述任一项实施例提供的数据传输方法中图形处理器所执行的步骤。
在一些实施例中,本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(Secure Digital Memory Card,安全数码卡)卡、MMC(Multimedia Card,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个指令,这一个或者多个指令被一个或者多个处理器执行时,使得所述处理器执行前文描述的数据传输方法。相关具体实现请参考前述描述,此处不过多赘述。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本说明书上述内容中描述的根据本申请各种实施例的数据传输方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
此外,虽然本公开对根据本公开的实施例的***中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且***和方法的不同方面可以使用不同单元。
本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。

Claims (17)

1.一种数据传输方法,其特征在于,应用于中央处理器,所述方法包括:
将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,所述目标内存空间以及所述第一内存空间地址不对齐,所述第二内存空间地址对齐;
发送显存分配指令,所述显存分配指令用于指示图形处理器在显存中分配地址对齐的临时显存空间,且所述临时显存空间大于所述目标内存空间;
基于内存与显存之间的地址映射关系,将所述第一内存空间内的待传输数据传输至所述临时显存空间中的第一显存空间;
以及,通过直接存储器访问DMA数据通路,将所述第二内存空间的待传输数据传输至所述临时显存空间中的第二显存空间,所述第二显存空间与所述第一显存空间相邻。
2.根据权利要求1所述的方法,其特征在于,所述第一内存空间小于所述第二内存空间。
3.根据权利要求2所述的方法,其特征在于,所述将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间,包括:
将所述目标内存空间中存储地址位于分界地址之前的内存空间作为第一内存空间,所述分界地址为所述目标内存空间首地址之后的第一个地址对齐的内存地址;
将所述目标内存空间中所述第一内存空间以外的内存空间作为第二内存空间。
4.根据权利要求1所述的方法,其特征在于,在将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间之前,还包括:
响应于第一数据传输指令,确定所述目标内存空间是否地址对齐;
若所述目标内存空间地址不对齐,执行所述将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间步骤。
5.根据权利要求1所述的方法,其特征在于,所述基于内存与显存之间的地址映射关系,将所述第一内存空间内的待传输数据传输至所述临时显存空间中的第一显存空间,包括:
基于内存与显存之间的地址映射关系,确定所述第一显存空间在内存中的映射地址空间;
将所述第一内存地址空间内的待传输数据传输至所述映射地址空间;
发送第二数据传输指令,所述第二数据传输指令用于指示所述图形处理器基于所述地址映射关系获取所述映射地址空间内的待传输数据并存储至所述第一显存空间。
6.根据权利要求1所述的方法,其特征在于,所述通过直接存储器访问DMA数据通路,将所述第二内存空间的待传输数据传输至所述临时显存空间中的第二显存空间,包括:
发送所述第二内存空间的空间地址、所述第二内存空间内待传输数据的数据长度以及所述第二显存空间的空间地址至DMA控制器;
所述DMA控制器用于根据所述第二内存空间的空间地址以及所述数据长度获取所述第二内存空间内待传输数据,并根据所述第二显存空间的空间地址将所述第二内存空间内待传输数据传输至所述第二显存空间。
7.根据权利要求1至6任一项所述的方法,其特征在于,还包括:
发送第三数据传输指令,所述第三数据传输指令用于指示图形处理器将所述临时显存空间内的待传输数据传输至目的显存空间,所述目的显存空间用于在图形处理器进行图像处理时提供所述待传输数据。
8.一种数据传输方法,其特征在于,应用于图形处理器,所述方法包括:
获取显存分配指令,所述显存分配指令由中央处理器在将存储有待传输数据的目标内存空间划分为第一内存空间和第二内存空间后输出,所述目标内存空间以及所述第一内存空间地址不对齐,所述第二内存空间地址对齐;
响应于所述显存分配指令,在显存中分配地址对齐的临时显存空间;
其中,所述临时显存空间大于所述目标内存空间,且所述临时显存空间包括相邻的第一显存空间和第二显存空间,所述第一显存空间用于存储基于内存与显存之间的地址映射关系传输的所述第一内存空间内的待传输数据,所述第二显存空间用于存储通过DMA数据通路传输的所述第二内存空间的待传输数据。
9.根据权利要求8所述的方法,其特征在于,还包括:
获取第二数据传输指令,所述第二数据传输指令由中央处理器基于内存与显存之间的地址映射关系确定所述第一显存空间在内存中的映射地址空间,并将所述第一内存地址空间内的待传输数据传输至所述映射地址空间后发送;
响应于所述第二数据传输指令,基于所述地址映射关系获取所述映射地址空间内的待传输数据并存储至所述第一显存空间。
10.根据权利要求8或9所述的方法,其特征在于,还包括:响应于第三数据传输指令,将所述临时显存空间内的待传输数据传输至目的显存空间,以在进行图像处理时获取所述目的显存空间中的待传输数据。
11.根据权利要求10所述的方法,其特征在于,将所述临时显存空间内的待传输数据传输至目的显存空间,包括:
将所述临时显存空间划分为多个子空间;
依次将各所述子空间内的待传输数据传输至所述目的显存空间,直至将全部待传输数据传输至所述目的显存空间。
12.根据权利要求11所述的方法,其特征在于,所述依次将各所述子空间内的待传输数据传输至所述目的显存空间,包括:
创建传输队列,所述传输队列用于指示各所述子空间的传输顺序;
按照所述传输队列指示的传输顺序,依次将各所述子空间内的待传输数据传输至所述目的显存空间。
13.一种中央处理器,其特征在于,被配置为执行如权利要求1至7任一项所述的数据传输方法。
14.一种片上***,其特征在于,包括:如权利要求13所述的中央处理器。
15.一种图形处理器,其特征在于,被配置为执行如权利要求8至12任一项所述的数据传输方法。
16.一种数据传输***,其特征在于,包括:内存、显存、DMA控制器、通信总线、数据上传模块以及如权利要求15所述的图形处理器,其中,
所述内存、显存、DMA控制器、数据上传模块以及所述图形处理器分别与通信总线相连;
所述数据上传模块包括如权利要求13所述的中央处理器或者如权利要求14所述的片上***。
17.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被执行时实现如权利要求1至7任一项所述的数据传输方法,或者,实现如权利要求8至12任一项所述的数据传输方法。
CN202311378345.6A 2023-10-23 2023-10-23 一种数据传输方法、相关设备及存储介质 Pending CN117539807A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311378345.6A CN117539807A (zh) 2023-10-23 2023-10-23 一种数据传输方法、相关设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311378345.6A CN117539807A (zh) 2023-10-23 2023-10-23 一种数据传输方法、相关设备及存储介质

Publications (1)

Publication Number Publication Date
CN117539807A true CN117539807A (zh) 2024-02-09

Family

ID=89794756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311378345.6A Pending CN117539807A (zh) 2023-10-23 2023-10-23 一种数据传输方法、相关设备及存储介质

Country Status (1)

Country Link
CN (1) CN117539807A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117807001A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117807001A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置
CN117807001B (zh) * 2024-02-29 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置

Similar Documents

Publication Publication Date Title
WO2021244194A1 (zh) 寄存器的读写方法、芯片、子***、寄存器组及终端
CN111190854B (zh) 通信数据处理方法、装置、设备、***和存储介质
KR102471219B1 (ko) NVMe 기반의 데이터 판독 방법, 장치, 및 시스템
EP3377965B1 (en) Data processing method, device, and system
CN117539807A (zh) 一种数据传输方法、相关设备及存储介质
CN116662038B (zh) 基于共享内存的工业信息检测方法、装置、设备及介质
US9875199B2 (en) Data transfer control apparatus
CN113498595A (zh) 一种基于PCIe的数据传输方法及装置
CN110515872B (zh) 直接内存存取方法、装置、专用计算芯片及异构计算***
CN112506676B (zh) 进程间的数据传输方法、计算机设备和存储介质
CN115269174A (zh) 一种数据传输方法、数据处理方法及相关产品
US10176133B2 (en) Smart device with no AP
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
CN116450554A (zh) 中断处理方法、根复合体设备及电子设备
CN110659143A (zh) 一种容器间的通讯方法、装置及电子设备
CN115964316A (zh) 用于自动直接存储器访问数据格式化的硬件***
CN112765085A (zh) 数据传输方法及相关装置
WO2022099446A1 (zh) 一种内存管理的方法以及相关装置
CN117435534B (zh) 基于***总线的数据传输电路、方法及处理器
US11240178B2 (en) Data transmission method and data transmission system
CN117971135B (zh) 存储设备的访问方法、装置、存储介质和电子设备
CN116881191B (zh) 数据处理方法、装置、设备及存储介质
CN114490465B (zh) 用于直接存储器访问的数据传输方法和装置
CN115878351B (zh) 消息的传输方法及装置、存储介质及电子装置
CN115840728B (zh) 图形处理***、gpu核、传输控制器及主核配置方法

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