CN116664381B - Gpu访问cpu扩展内存的方法及图形处理系统 - Google Patents

Gpu访问cpu扩展内存的方法及图形处理系统 Download PDF

Info

Publication number
CN116664381B
CN116664381B CN202310934052.5A CN202310934052A CN116664381B CN 116664381 B CN116664381 B CN 116664381B CN 202310934052 A CN202310934052 A CN 202310934052A CN 116664381 B CN116664381 B CN 116664381B
Authority
CN
China
Prior art keywords
address information
gpu
extended
memory
host cpu
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
CN202310934052.5A
Other languages
English (en)
Other versions
CN116664381A (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.)
Shenliu Micro Intelligent Technology Shenzhen Co ltd
Original Assignee
Shenliu Micro Intelligent Technology Shenzhen 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 Shenliu Micro Intelligent Technology Shenzhen Co ltd filed Critical Shenliu Micro Intelligent Technology Shenzhen Co ltd
Priority to CN202310934052.5A priority Critical patent/CN116664381B/zh
Publication of CN116664381A publication Critical patent/CN116664381A/zh
Application granted granted Critical
Publication of CN116664381B publication Critical patent/CN116664381B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Abstract

本申请公开了一种GPU访问CPU扩展内存的方法及图形处理系统,包括:获取待访问内存的目标内存地址信息;获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息;分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问。本申请在不改变GPU系统的硬件框架的情况下,GPU可以对CPU任意扩充的地址空间进行访问,提高了GPU获取CPU内存数据的效率,也可以有效降低数据传输的延迟,使得GPU虚拟化得到大力支持。

Description

GPU访问CPU扩展内存的方法及图形处理系统
技术领域
本申请涉及GPU技术领域,尤其涉及一种GPU访问CPU扩展内存的方法及图形处理系统。
背景技术
现有技术中由于GPU本身板载的显存有限,GPU能访问到的内存区域受限于GPU自身的系统总线地址宽度,因此GPU可访问HOST CPU侧的内存空间也相应受限。在需要搬移大量数据时,由于GPU访问地址空间有限,一般是利用HOST CPU将数据搬移到GPU的板载显存中,而不是GPU主动从HOST CPU中获取数据。这将会导致GPU和HOST CPU侧的数据搬移的效率大大降低,而且增加了数据传输的延迟。
发明内容
本申请的主要目的在于提供一种GPU访问CPU扩展内存的方法及图形处理系统,可以解决现有技术中GPU访问HOST CPU侧的内存空间受限的技术问题。
为实现上述目的,本申请第一方面提供一种GPU访问CPU扩展内存的方法,应用于GPU侧,该方法包括:
获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOST CPU的内存;
获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息;
分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问。
为实现上述目的,本申请第二方面提供一种GPU访问CPU扩展内存的方法,应用于HOST CPU侧,该方法包括:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧;
将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息;
根据目标内存地址信息访问所指示的待访问内存。
为实现上述目的,本申请第三方面提供了一种图形处理系统,该系统包括GPU侧和HOST CPU侧;GPU侧用于实现上述任意一项GPU侧的GPU访问CPU扩展内存的方法的步骤,HOST CPU侧用于实现上述任意一项CPU侧的GPU访问CPU扩展内存的方法的步骤。
为实现上述目的,本申请第四方面提供一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOST CPU的内存,
获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息,
分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问;
或者;
使得处理器执行以下步骤:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,
将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,
根据目标内存地址信息访问所指示的待访问内存。
为实现上述目的,本申请第五方面提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOST CPU的内存,
获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息,
分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问;
或者;
使得处理器执行以下步骤:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,
将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,
根据目标内存地址信息访问所指示的待访问内存。
采用本申请具有如下有益效果:
本申请将待访问内存的目标内存地址拆分为扩展地址和原有非扩展地址,并通过不同传输通道传输给HOST CPU,使得HOST CPU通过拼接获取到完整的目标内存地址,并完成对待访问内存的访问。本实施例在不改变GPU系统的硬件框架的情况下,扩展了GPU对CPU内存的访问空间,且,CPU扩充的内存空间可以任意灵活配置,GPU可以对CPU任意扩充的地址空间进行访问,打破了由于GPU自身的系统总线地址宽度不够而导致GPU访问CPU内存空间受限的局限。有效解决了GPU访问HOST CPU侧地址空间受限的技术问题。而且可以支持GPU主动从HOST CPU内存获取数据,相较于由HOST CPU将数据搬移至GPU而言,不仅提高了GPU获取CPU内存数据的效率,而且也可以有效降低数据传输的延迟,打破可运行的虚拟机数量受限的限制,使得GPU虚拟化得到大力支持。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为本申请实施例中GPU与CPU的连接示意图;
图2为本申请实施例中GPU访问CPU扩展内存的方法的流程图;
图3为本申请另一实施例中GPU访问CPU扩展内存的方法的流程图;
图4为本申请实施例中内存地址的传输示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例中GPU与CPU的连接示意图,参考图1,HOST CPU通过系统总线与CPU内存和PCIe模块连接,PCIe模块与GPU连接,PCIe模块包括PCIe控制器和PCIe接口等。
GPU不是一个独立运行的平台而是CPU的协处理器。因此,GPU必须通过PCIe总线与基于CPU的主机相连来进行操作。
如图2所示,在一个实施例中,提供了一种GPU访问CPU扩展内存的方法。该方法应用于GPU侧。该GPU访问CPU扩展内存的方法具体包括如下步骤:
S110:获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOSTCPU的内存。
具体地,本实施例用于扩展GPU对CPU内存的访问空间。CPU内存已被扩展过,由于GPU可访问到的CPU内存区域受限于GPU自身的系统总线地址宽度,因此GPU访问CPU侧地址空间有限,使用现有技术GPU可能无法访问到CPU扩展的内存空间。
目标内存地址信息为GPU待访问的CPU内存的内存地址信息。该目标内存地址信息包括扩展地址信息和非扩展地址信息。
S120:获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息。
具体地,CPU内存地址宽度每增加1位,CPU内存空间被扩展为之前的两倍。例如,在CPU内存扩展之前,CPU内存地址为32位;如果将CPU内存地址扩展6位,则扩展之后CPU内存地址为6位+32位,或者,32位+6位。其中,6位为扩展位、32位为非扩展位。扩展位可以放在非扩展位之前的高位,也可以放在非扩展位之后的低位。
目标内存地址信息包括位于扩展位的扩展地址信息+位于非扩展位的原有非扩展地址信息。根据扩展位和非扩展位,可以从目标内存地址信息中提取出扩展地址信息和原有非扩展地址信息。
例如,扩展地址信息为目标内存地址信息中高位(前6位)所组成的地址,原有非扩展地址信息为该6位之后的低位(后32位)所组成的地址。
S130:分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOSTCPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问。
具体地,不同传输方式即不同传输通道。GPU可以通过现有技术途径将原有非扩展地址信息传输至HOST CPU侧,但是扩展地址信息需要采取其他传输通道传输至HOST CPU侧。
HOST CPU侧在接收到扩展地址信息和原有非扩展地址信息后需要对这两个地址进行整合,得到完整的目标内存地址信息。
另外,为了保证扩展地址信息和原有非扩展地址信息匹配,可以在传输之前为扩展地址信息和原有非扩展地址信息增加匹配标识以及顺序标识,以便HOST CPU侧可以正确匹配扩展地址信息和原有非扩展地址信息,并将二者以正确的顺序拼接为完整的目标内存地址信息。
HOST CPU侧获取到目标内存地址信息后,可以对其待访问内存进行访问。具体地,例如对待访问内存执行读操作或写操作等。
其中,HOST CPU侧除了包含HOST CPU或HOST PC、CPU内存之外,还包括PCIe模块等模块。GPU侧除了包含GPU之外,还包括AXI总线接口、PCIe模块等。
本实施例将待访问内存的目标内存地址拆分为扩展地址和原有非扩展地址,并通过不同传输通道传输给HOST CPU侧,使得HOST CPU侧通过拼接获取到完整的目标内存地址,并完成对待访问内存的访问。本实施例在不改变GPU系统的硬件框架的情况下,扩展了GPU对CPU内存的访问空间,且,CPU扩充的内存空间可以任意灵活配置,GPU可以对CPU任意扩充的地址空间进行访问,打破了由于GPU自身的系统总线地址宽度不够而导致GPU访问CPU内存空间受限的局限。有效解决了GPU访问HOST CPU侧地址空间受限的技术问题。而且可以支持GPU主动从HOST CPU内存获取数据,相较于由HOST CPU将数据搬移至GPU而言,不仅提高了GPU获取CPU内存数据的效率,而且也可以有效降低数据传输的延迟,打破可运行的虚拟机数量受限的限制,使得GPU虚拟化得到大力支持。
在一个实施例中,步骤S130中分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,包括:
获取GPU对HOST CPU的待访问内存的访问类型,其中,访问类型为读操作或写操作;
根据访问类型,将扩展地址信息转换为与访问类型匹配的AXI边带信号,将AXI边带信号传输至HOST CPU侧;
将原有非扩展地址信息通过地址线传输至HOST CPU侧。
具体地,GPU的接口总线为标准AXI(AdvancedeXtensibleInterface,一种总线协议)总线。即GPU采用标准AXI接口。
AXI 表示 Advanced eXtensible Interface(高级可扩展接口),AXI总线是一种总线协议,是一种高性能、高带宽、低延时的片内总线。支持不对齐的数据传输和突发传输。在突发传输中只需要首地址,并且支持同时分离的读写数据通道、支持显著传输访问和乱序访问。AXI协议规定主动发起传输请求的为主设备。AXI总线的地址信号宽度决定了主设备可以访问到的从设备的最大地址范围。高级可扩展接口(AXI)适合于高带宽和低延迟互连。这是一个点对点的互连,并克服了共享总线协议在可连接的代理数量方面的限制性。AXI协议支持多个outstanding的数据传输、burst数据传输、单独的读写通道和支持不同的总线宽度。
GPU内部的AXI总线除了一些数据、地址、读写控制信号外。另外有一些未定义具体功能的边带信号,这些边带信号又叫user信号,即用户自定义信号。
在AXI协议中并没有规定这些边带信号或user信号的具体用法,甚至都没规定这些信号的宽度。因此可以利用user信号来传输一些边带信息。
基于此,本实施例使用AXI边带信号来传输扩展地址信息。另外,由于AXI有多种通道例如读通道和写通道,相应地会有多种边带信号;而GPU对CPU的访问类型也包括读请求和写请求,因此,需要根据GPU对CPU的访问类型选择AXI相应的通道(即将扩展地址信息封装为与访问类型匹配的边带信号)将扩展地址信息传输出去。
另外,基于AXI总线支持显著传输访问和乱序访问的特性,支持将扩展地址信息和原有非扩展地址信息通过不同通道传输。
本实施例在GPU的AXI总线上进行少量硬件改进和软件改进,以少量的开销即可将扩展地址信息传输至HOST CPU侧。
在一个实施例中,根据访问类型,将扩展地址信息转换为与访问类型匹配的AXI边带信号,将AXI边带信号传输至HOST CPU侧,包括:
若访问类型为读操作,则通过AXI主设备将扩展地址信息封装转换为第一读边带信号,并通过第一读通道将第一读边带信号传输至AXI从设备,通过AXI从设备将第一读边带信号转换为第二读边带信号,通过第二读通道将第二读边带信号传输至HOST CPU侧;
若访问类型为写操作,则通过AXI主设备将扩展地址信息封装转换为第一写边带信号,并通过第一写通道将第一写边带信号传输至AXI从设备,通过AXI从设备将第一写边带信号转换为第二写边带信号,通过第二写通道将第二写边带信号传输至HOST CPU侧。
具体地,CPU和GPU之间通过主板的PCIe总线进行通信。
PCIe(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线标准)是一种常用的高速传输协议,通常用于主机与各种外部设备之间的数据传输,如PCIe接口内存、网卡、GPU(graphicsprocessingunit,图形处理器)、FPGA(FieldProgrammableGateArray,现场可编程逻辑门阵列)等一系列设备。PCIe总线包括PCIe控制器(PCIe controller)和PCIe物理模块(PCIe PHY)。PCIe控制器逻辑包含了IP的host设计,以及PCIe协议中所规定的事务层、数据链路层、物理层实现逻辑。PHY模块用于连接协议层和链路,包含了驱动和锁相环、串转并、并转串等所有与接口操作相关的所有电路。PCIe控制器(PCIe controller)负责AXI和PCIe之间数据的打包、传输、链路的控制等。
本实施例GPU作为主设备去访问HOST CPU侧的内存空间。AXI主设备位于GPU一侧,AXI从设备位于PCIe控制器(PCIe controller)一侧。AXI主设备和AXI从设备都属于接口或端口,用于实现GPU与PCIe的通信。GPU内部的AXI总线包括了多种user信号(边带信号),例如读通道的ruser信号,写通道的wuser信号。PCIe控制器的AXI从设备接口也有一些边带信号,例如,读通道有边带信号armisc info,写通道有边带信号awmisc info。
AXI 协议定义了 5 条通道,通道 (channel) 是与 VALID 和 READY 信号关联的AXI 信号的独立集合。其中 2 条用于读取传输事务:读地址通道、读数据通道,另外3条用于写入传输事务:写地址通道、写数据通道、写响应通道。
如果GPU对待访问内存的访问类型为读操作,则GPU通过AXI主设备将扩展地址信息转换或封装为第一读边带信号,并通过第一读通道将第一读边带信号传输至AXI从设备。例如,第一读边带信号为ruser信号。
AXI从设备接收到第一读边带信号后,从第一读边带信号中提取出扩展地址信息,将扩展地址信息转换或封装为第二读边带信号,通过第二读通道将第二读边带信号通过PCIe PHY模块传输至HOST CPU侧。例如,第二读边带信号为armisc info信号。
其中,第一读通道具体为AXI主设备的读地址通道。第二读通道具体为AXI从设备的读地址通道。
如果GPU对待访问内存的访问类型为写操作,则GPU通过AXI主设备将扩展地址信息转换或封装为第一写边带信号,并通过第一写通道将第一写边带信号传输至AXI从设备。例如,第一写边带信号为wuser信号。
AXI从设备接收到第一写边带信号后,从第一写边带信号中提取出扩展地址信息,将扩展地址信息转换或封装为第二写边带信号,通过第二写通道将第二写边带信号通过PCIe PHY模块传输至HOST CPU侧。例如,第二写边带信号为awmisc info信号。
其中,第一写通道具体为AXI主设备的写地址通道。第二写通道具体为AXI从设备的写地址通道。
本实施例利用AXI主设备和AXI从设备根据访问类型通过不同的读通道或写通道对扩展地址信息进行封装后传输至HOST CPU侧,此过程中只需要对扩展地址信息进行转换,增加的硬件开销较小,在不改变GPU系统的硬件框架的前提下,即可通过小量的增加硬件的开销扩展GPU对CPU内存地址空间的访问。且CPU可扩充的内存系统空间非固定,灵活可配置。
在一个实施例中,将原有非扩展地址信息通过地址线传输至HOST CPU侧,包括:
通过PCIe总线将原有非扩展地址信息封装为TLP包,将TLP包路由至HOST CPU侧。
具体地,PCIe总线采用了串行连接方式,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层、和物理层。
PCIe事务层定义了总线所使用的事务,事务层接收来自核心层的数据并将其封装成TLP(Transaction Layer Packet)发向数据链路层。另外事务层也可以从数据链路层接收数据报文,然后转发到核心层。物理层是PCIe总线的最底层,将PCIe设备相互连接在一起。它负责接收和转发各种数据包(TLP包、DLLP包等)。
事务层可以处理对memory(存储或内存)的读写包(TLPS:transaction Layerspackages)。对memory的读写包分为读请求包和响应包、写请求包(不需要存储器的响应包)。
本实施例根据访问类型,通过PCIe总线将原有非扩展地址信息封装为与访问类型匹配的TLP包。具体地,访问类型为读操作,则TLP包为读请求包;访问类型为写操作,则TLP包为写请求包。
其中,每种类型的包都有一定格式的包头(TLP Header),根据不同的包的特性,还包括有效数据负荷(Data Payload)和TLP开销块(TLP Digest)。TLP数据包头部就是从头部(TLP Header)开始。
PCIe的路由和AXI总线不同,其通过传输包TLP去路由,TLP包的帧头中包括了传输目的地信息。TLP包帧头的信息完全由软件定义,其可以访问的目的地的地址范围并不受硬件限制。
在一个具体实施例中,原有非扩展地址信息封装于TLP包的包头。
本实施例通过PCIe总线连接GPU与CPU之间的通信,将原有非扩展地址信息封装为TLP包后传输至HOST CPU侧,不需要额外增加硬件成本,即可实现。
在一个实施例中,通过第二读通道将第二读边带信号传输至HOST CPU侧,包括:通过第二读通道将第二读边带信号传输至PCIe PHY模块,通过PCIe PHY模块将第二读边带信号传输至HOST CPU侧;
通过第二写通道将第二写边带信号传输至HOST CPU侧,包括:通过第二写通道将第二写边带信号传输至PCIe PHY模块,通过PCIe PHY模块将第二写边带信号传输至HOSTCPU侧。
具体地,当GPU想访问HOST CPU新增的内存区域时,将新增的扩展地址信息放到AXI主设备的user边带信号(ruser信号或wuser信号)上。Pcie controller的AXI从设备接收到user边带信号后,提取出新增的扩展地址信息,放到AXI从设备的边带信号awmiscinfo信号或armisc info信号中,awmisc info信号或armisc info信号会通过PCIe PHY模块发送到HOST CPU侧。
本实施例借助GPU与CPU通过PCIe总线通信,在不额外增加多余硬件的情况下,通过PCIe PHY模块将封装有扩展地址信息的边带信号发送至HOST CPU侧。
本申请扩展地址信息在GPU总线(AXI总线)传递,然后通过PCIe总线传递给HOSTCPU侧。
本申请通过辅助边带信号传递需要扩展地址信息,不改变GPU系统的硬件框架,不额外增加系统总线硬件电路面积,达到访问HOST CPU扩充的内存空间的目的。软件增加的逻辑简单易实现,可扩充的内存系统空间非固定,灵活可配置。避免了芯片生产后不可修改访问地址空间大小的缺点。
参考图3,本申请还提供了一种GPU访问CPU扩展内存的方法,应用于HOST CPU侧,该方法包括:
S210:分别获取GPU侧传输的不同传输方式通道扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧。
具体地,目标内存地址信息为GPU待访问的CPU内存的内存地址信息。该目标内存地址信息包括扩展地址信息和非扩展地址信息。不同传输方式即不同传输通道。GPU可以通过现有技术途径将原有非扩展地址信息传输至HOST CPU侧,但是扩展地址信息需要采取其他传输通道传输至HOST CPU侧。
另外,为了保证扩展地址信息和原有非扩展地址信息匹配,可以在传输之前为扩展地址信息和原有非扩展地址信息增加匹配标识以及顺序标识,以便HOST CPU侧可以正确匹配扩展地址信息和原有非扩展地址信息,并将二者以正确的顺序拼接为完整的目标内存地址信息。
S220:将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息。
具体地,HOST CPU侧在接收到扩展地址信息和原有非扩展地址信息后需要对这两个地址进行整合,得到完整的目标内存地址信息。
更具体地,HOST CPU侧可以根据扩展地址信息和原有非扩展地址信息的匹配标识和顺序标识将二者拼接为正确完整的目标内存地址信息。
S230:根据目标内存地址信息访问所指示的待访问内存。
具体地,HOST CPU侧获取到目标内存地址信息后,可以对其待访问内存进行访问。具体地,例如对待访问内存执行读操作或写操作等。
本实施例将待访问内存的目标内存地址拆分为扩展地址和原有非扩展地址,并通过不同传输通道传输给HOST CPU侧,使得HOST CPU侧通过拼接获取到完整的目标内存地址,并完成对待访问内存的访问。本实施例在不改变GPU系统的硬件框架的情况下,扩展了GPU对CPU内存的访问空间,且,CPU扩充的内存空间可以任意灵活配置,GPU可以对CPU任意扩充的地址空间进行访问,打破了由于GPU自身的系统总线地址宽度不够而导致GPU访问CPU内存空间受限的局限。有效解决了GPU访问HOST CPU侧地址空间受限的技术问题。而且可以支持GPU主动从HOST CPU内存获取数据,相较于由HOST CPU将数据搬移至GPU而言,不仅提高了GPU获取CPU内存数据的效率,而且也可以有效降低数据传输的延迟,打破可运行的虚拟机数量受限的限制,使得GPU虚拟化得到大力支持。
在一个实施例中,步骤S210中分别获取GPU侧传输的不同传输方式通道扩展地址信息和原有非扩展地址信息,具体包括:
获取GPU侧传输的AXI边带信号;
对AXI边带信号进行解析,得到扩展地址信息。
具体地,GPU侧根据GPU对HOST CPU的待访问内存的访问类型,将扩展地址信息转换为与访问类型匹配的AXI边带信号。
GPU的接口总线为标准AXI(AdvancedeXtensibleInterface,一种总线协议)总线。即GPU采用标准AXI接口。
AXI 表示 Advanced eXtensible Interface(高级可扩展接口),AXI总线是一种总线协议,是一种高性能、高带宽、低延时的片内总线。支持不对齐的数据传输和突发传输。在突发传输中只需要首地址,并且支持同时分离的读写数据通道、支持显著传输访问和乱序访问。AXI协议规定主动发起传输请求的为主设备。AXI总线的地址信号宽度决定了主设备可以访问到的从设备的最大地址范围。高级可扩展接口(AXI)适合于高带宽和低延迟互连。这是一个点对点的互连,并克服了共享总线协议在可连接的代理数量方面的限制性。AXI协议支持多个outstanding的数据传输、burst数据传输、单独的读写通道和支持不同的总线宽度。
GPU内部的AXI总线除了一些数据、地址、读写控制信号外。另外有一些未定义具体功能的边带信号,这些边带信号又叫user信号,即用户自定义信号。
在AXI协议中并没有规定这些边带信号或user信号的具体用法,甚至都没规定这些信号的宽度。因此可以利用user信号来传输一些边带信息。
基于此,GPU侧使用AXI边带信号来传输扩展地址信息。另外,由于AXI有多种通道例如读通道和写通道,相应地会有多种边带信号;而GPU对CPU的访问类型也包括读请求和写请求,因此,需要根据GPU对CPU的访问类型选择AXI相应的通道(即将扩展地址信息封装为与访问类型匹配的边带信号)将扩展地址信息传输出去。
HOST CPU侧接收到AXI边带信号后,对AXI边带信号进行解析,可以得到扩展地址信息。
本实施例在GPU的AXI总线上进行少量硬件改进和软件改进,以少量的开销即可将扩展地址信息传输至HOST CPU侧。
在一个实施例中,步骤S210中分别获取GPU侧传输的不同传输方式通道扩展地址信息和原有非扩展地址信息,还包括:
获取GPU侧传输的TLP包以获取原有非扩展地址信息,其中,TLP包中封装有原有非扩展地址信息。
具体地,PCIe总线采用了串行连接方式,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层、和物理层。
PCIe事务层定义了总线所使用的事务,事务层接收来自核心层的数据并将其封装成TLP(Transaction Layer Packet)发向数据链路层。另外事务层也可以从数据链路层接收数据报文,然后转发到核心层。物理层是PCIe总线的最底层,将PCIe设备相互连接在一起。它负责接收和转发各种数据包(TLP包、DLLP包等)。
事务层可以处理对memory(存储或内存)的读写包(TLPS:transaction Layerspackages)。对memory的读写包分为读请求包和响应包、写请求包(不需要存储器的响应包)。
GPU侧根据访问类型,通过PCIe总线将原有非扩展地址信息封装为与访问类型匹配的TLP包。具体地,访问类型为读操作,则TLP包为读请求包;访问类型为写操作,则TLP包为写请求包。
其中,每种类型的包都有一定格式的包头(TLP Header),根据不同的包的特性,还包括有效数据负荷(Data Payload)和TLP开销块(TLP Digest)。TLP数据包头部就是从头部(TLP Header)开始。
在一个具体实施例中,原有非扩展地址信息封装于TLP包的包头。
HOST CPU侧接收到TLP包后,可以从TLP包中获取原有非扩展地址信息。
本实施例通过PCIe总线连接GPU与CPU之间的通信,将原有非扩展地址信息封装为TLP包后传输至HOST CPU侧,不需要额外增加硬件成本,即可实现。
在一个实施例中,步骤S220具体包括:
将扩展地址信息添加至TLP包的head信息中,得到整合后的TLP包,整合后的TLP包的head信息中包括根据扩展地址信息和原有非扩展地址信息整合得到的目标内存地址信息。
具体地,本实施例直接将扩展地址信息添加至TLP包中,即可得到完整的目标内存地址信息。根据整合后的TLP包路由到HOST CPU的待访问内存。
图4为本申请实施例中内存地址的传输示意图,参考图4,本实施例以扩展地址为高位6bit、原有非扩展地址为低位32bit为例举例说明。GPU侧将6bit的扩展地址封装为第一边带信号,第一边带信号中携带有6bit的扩展地址,第一边带信号为AXI主设备生成的。AXI主设备将第一边带信号传输给AXI从设备,AXI从设备解析第一边带信号提取出6bit扩展地址后,将6bit扩展地址封装为第二边带信号。AXI从设备将第二边带信号通过PCIe PHY模块传输给HOST CPU侧。与此同时,GPU侧通过地址线将32bit的原有非扩展地址通过TLP包传输给HOST CPU侧。在HOST CPU侧将接收到的第二边带信号中的扩展地址添加至TLP包整合,得到整合后的TLP包,整合后的TLP包包括了6bit的扩展地址和32bit的原有非扩展地址,二者组合拼接成完整的目标内存地址。
HOST CPU侧根据目标内存地址(6bit+32bit)中的扩展地址(6bit)确定64个虚拟机(虚拟机0、虚拟机1、虚拟机2...虚拟机63)中的一个为目标虚拟机,然后根据原有非扩展地址(32bit)访问目标虚拟机的目标内存。
其中,第一边带信号为第一读边带信号,第二边带信号为第二读边带信号。或者,第一边带信号为第一写边带信号,第二边带信号为第二写边带信号。
上述64个虚拟机是根据扩展地址(6bit)确定的。扩展地址不仅仅局限于6bit,还可以是1bit、2bit、3bit、7bit、8bit等等。扩展地址的大小决定了可支持的虚拟机的数量。
本申请的GPU访问CPU扩展内存的方案不仅可以打破由于GPU自身的系统总线地址宽度不够而导致GPU访问CPU内存空间受限的局限,而且可以支持GPU主动从HOST CPU内存获取数据,相较于由HOST CPU将数据搬移至GPU而言,不仅提高了GPU获取CPU内存数据的效率,而且也可以有效降低数据传输的延迟,打破可运行的虚拟机数量受限的限制,使得GPU虚拟化得到大力支持。
在一个实施例中,本申请还提供了一种图形处理系统,该图像处理系统包括GPU侧和HOST CPU侧;GPU侧用于实现上述任意一项的GPU侧的GPU访问CPU扩展内存的方法的步骤,HOST CPU侧用于实现上述任意一项的CPU侧的GPU访问CPU扩展内存的方法的步骤。
现有技术中采用扩充系统总线地址宽度的手段,会造成硬件资源成本增加,系统复杂度也相应提高。本申请的技术方案在不改变已有硬件的基础上,通过软件的手段扩充GPU可访问的地址空间,在不增加硬件成本或增加少量硬件成本的基础上,解决GPU访问地址空间受限的技术问题,降低了硬件成本,且避免增加系统复杂度。支持GPU主动访问CPU内存,提升了跨边界传输效率,同时,由于对CPU的内存访问空间不受限制,因此可以支持的GPU的虚拟机数量不受限制。
在一个实施例中还提供了一种计算机设备。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述方法实施例中的各个步骤。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述方法实施例中的各个步骤。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOST CPU的内存,
获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息,
分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问;
或者;
使得处理器执行以下步骤:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,
将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,
根据目标内存地址信息访问所指示的待访问内存。
在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取待访问内存的目标内存地址信息,其中,待访问内存为待访问的HOST CPU的内存,
获取目标内存地址信息中的扩展地址信息和原有非扩展地址信息,
分别通过不同传输方式将扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,以供HOST CPU侧通过对获取到的扩展地址信息和原有非扩展地址信息进行整合得到目标内存地址信息,并根据目标内存地址信息对待访问内存进行访问;
或者;
使得处理器执行以下步骤:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,GPU侧分别通过不同传输方式将目标内存地址信息中的扩展地址信息和原有非扩展地址信息传输至HOST CPU侧,
将扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,
根据目标内存地址信息访问所指示的待访问内存。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种GPU访问CPU扩展内存的方法,应用于GPU侧,其特征在于,所述方法包括:
获取待访问内存的目标内存地址信息,其中,所述待访问内存为待访问的HOST CPU的内存;
获取所述目标内存地址信息中的扩展地址信息和原有非扩展地址信息;
分别通过不同传输方式将所述扩展地址信息和原有非扩展地址信息传输至所述HOSTCPU侧,以供所述HOST CPU侧通过对获取到的所述扩展地址信息和原有非扩展地址信息进行整合得到所述目标内存地址信息,并根据所述目标内存地址信息对所述待访问内存进行访问;
其中,所述分别通过不同传输方式将所述扩展地址信息和原有非扩展地址信息传输至所述HOST CPU侧,包括:
获取GPU对HOST CPU的待访问内存的访问类型,其中,所述访问类型为读操作或写操作,
根据所述访问类型,将所述扩展地址信息转换为与所述访问类型匹配的AXI边带信号,将所述AXI边带信号传输至所述HOST CPU侧,
将所述原有非扩展地址信息通过地址线传输至所述HOST CPU侧。
2.根据权利要求1所述的方法,其特征在于,在所述分别通过不同传输方式将所述扩展地址信息和原有非扩展地址信息传输至所述HOST CPU侧之前,所述方法还包括:
为所述扩展地址信息和原有非扩展地址信息增加匹配标识及顺序标识。
3.根据权利要求1所述的方法,其特征在于,所述根据所述访问类型,将所述扩展地址信息转换为与所述访问类型匹配的AXI边带信号,将所述AXI边带信号传输至所述HOST CPU侧,包括:
若所述访问类型为读操作,则通过AXI主设备将所述扩展地址信息转换为第一读边带信号,并通过第一读通道将所述第一读边带信号传输至AXI从设备,通过AXI从设备将所述第一读边带信号转换为第二读边带信号,通过第二读通道将所述第二读边带信号传输至HOST CPU侧;
若所述访问类型为写操作,则通过AXI主设备将所述扩展地址信息转换为第一写边带信号,并通过第一写通道将所述第一写边带信号传输至AXI从设备,通过AXI从设备将所述第一写边带信号转换为第二写边带信号,通过第二写通道将所述第二写边带信号传输至HOST CPU侧。
4.根据权利要求1所述的方法,其特征在于,所述将所述原有非扩展地址信息通过地址线传输至所述HOST CPU侧,包括:
通过PCIe总线将所述原有非扩展地址信息封装为TLP包,将所述TLP包路由至HOST CPU侧。
5.根据权利要求3所述的方法,其特征在于,所述通过第二读通道将所述第二读边带信号传输至HOST CPU侧,包括:通过第二读通道将所述第二读边带信号传输至PCIe PHY模块,通过所述PCIe PHY模块将所述第二读边带信号传输至HOST CPU侧;
所述通过第二写通道将所述第二写边带信号传输至HOST CPU侧,包括:通过第二写通道将所述第二写边带信号传输至PCIe PHY模块,通过所述PCIe PHY模块将所述第二写边带信号传输至HOST CPU侧。
6.一种GPU访问CPU扩展内存的方法,应用于HOST CPU侧,其特征在于,所述方法包括:
分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,其中,所述GPU侧分别通过不同传输方式将目标内存地址信息中的所述扩展地址信息和原有非扩展地址信息传输至所述HOST CPU侧;
将所述扩展地址信息和原有非扩展地址信息整合为目标内存地址信息;
根据所述目标内存地址信息访问所指示的待访问内存;
其中,所述分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,包括:
获取GPU侧传输的AXI边带信号,
对所述AXI边带信号进行解析,得到扩展地址信息,
通过地址线获取所述GPU侧传输的原有非扩展地址信息。
7.根据权利要求6所述的方法,其特征在于,所述扩展地址信息和原有非扩展地址信息中携带匹配标识和顺序标识;
所述将所述扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,包括:
根据匹配标识对所述扩展地址信息和原有非扩展地址信息进行匹配;
根据顺序标识将匹配的扩展地址信息和原有非扩展地址信息整合为目标内存地址信息。
8.根据权利要求6所述的方法,其特征在于,所述分别获取GPU侧传输的扩展地址信息和原有非扩展地址信息,包括:
获取GPU侧传输的TLP包以获取原有非扩展地址信息,其中,所述TLP包中封装有所述原有非扩展地址信息。
9.根据权利要求8所述的方法,其特征在于,所述将所述扩展地址信息和原有非扩展地址信息整合为目标内存地址信息,包括:
将所述扩展地址信息添加至所述TLP包的head信息中,得到整合后的TLP包,所述整合后的TLP包的head信息中包括根据所述扩展地址信息和原有非扩展地址信息整合得到的目标内存地址信息。
10.一种图形处理系统,其特征在于,所述图形处理系统包括GPU侧和HOST CPU侧;所述GPU侧用于实现如权利要求1-5任意一项所述的GPU访问CPU扩展内存的方法的步骤,所述HOST CPU侧用于实现如权利要求6-9任意一项所述的GPU访问CPU扩展内存的方法的步骤。
CN202310934052.5A 2023-07-28 2023-07-28 Gpu访问cpu扩展内存的方法及图形处理系统 Active CN116664381B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310934052.5A CN116664381B (zh) 2023-07-28 2023-07-28 Gpu访问cpu扩展内存的方法及图形处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310934052.5A CN116664381B (zh) 2023-07-28 2023-07-28 Gpu访问cpu扩展内存的方法及图形处理系统

Publications (2)

Publication Number Publication Date
CN116664381A CN116664381A (zh) 2023-08-29
CN116664381B true CN116664381B (zh) 2024-03-26

Family

ID=87717438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310934052.5A Active CN116664381B (zh) 2023-07-28 2023-07-28 Gpu访问cpu扩展内存的方法及图形处理系统

Country Status (1)

Country Link
CN (1) CN116664381B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020655A (zh) * 2022-01-05 2022-02-08 苏州浪潮智能科技有限公司 一种内存扩展方法、装置、设备及存储介质
CN115456862A (zh) * 2022-11-09 2022-12-09 深流微智能科技(深圳)有限公司 一种用于图像处理器的访存处理方法及设备
US11561898B1 (en) * 2021-10-25 2023-01-24 Arm Limited Address expansion
CN116049037A (zh) * 2023-02-17 2023-05-02 上海壁仞智能科技有限公司 访问目标内存的方法及装置、电子设备与存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11288187B2 (en) * 2018-03-28 2022-03-29 SK Hynix Inc. Addressing switch solution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561898B1 (en) * 2021-10-25 2023-01-24 Arm Limited Address expansion
CN114020655A (zh) * 2022-01-05 2022-02-08 苏州浪潮智能科技有限公司 一种内存扩展方法、装置、设备及存储介质
CN115456862A (zh) * 2022-11-09 2022-12-09 深流微智能科技(深圳)有限公司 一种用于图像处理器的访存处理方法及设备
CN116049037A (zh) * 2023-02-17 2023-05-02 上海壁仞智能科技有限公司 访问目标内存的方法及装置、电子设备与存储介质

Also Published As

Publication number Publication date
CN116664381A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN106951388B (zh) 一种基于PCIe的DMA数据传输方法及系统
CN101911609B (zh) 用于实现统一连接器架构的系统、设备和方法
US9535869B2 (en) Method and apparatuses for respectively transferring information within and between system-on-chips (SOCS) via an internal bus and an external bus according to the same communication protocol
US9342629B2 (en) Content searching chip based protocol conversion
US9959237B2 (en) Method and apparatus for transferring information within and between system-on-chips via intra-chip and inter-chip hopping buses
CN114048164B (zh) 芯片互联方法、系统、设备及可读存储介质
CN113498596B (zh) 一种基于PCIe的数据传输方法及装置
KR20070061196A (ko) 가변 시리얼 정합 방식의 메모리 시스템 및 그 메모리액세스 방법
JPH08116348A (ja) 高速通信装置
US8352667B2 (en) I/O connection system and I/O connection method
KR101559089B1 (ko) 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜
CN116664381B (zh) Gpu访问cpu扩展内存的方法及图形处理系统
CN113498597B (zh) 一种基于PCIe的数据传输方法及装置
CN103577356B (zh) 实现iic接口地址扩展的设备及方法
CN104598404A (zh) 计算设备扩展方法和装置、以及可扩展的计算系统
CN113900985B (zh) Io和spi复用芯片、复用辅助芯片和数据交互方法
KR20120054142A (ko) QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치
CN113051212B (zh) 图形处理器、数据传输方法、装置、电子设备和存储介质
CN115237829A (zh) 处理数据的装置、方法及存储介质
US20050038939A1 (en) Data interfacing apparatus and method of a network electronic device
CN113196720A (zh) 数据处理方法及传输设备、数据处理系统
US8643655B2 (en) Method and system for communicating with external device through processing unit in graphics system
CN107317773B (zh) 一种片上网络通信接口及通信方法
CN114124594A (zh) 数据传输方法和系统、芯片
CN116112456B (zh) 一种基于bap协议的数据缓存方法、装置、设备及介质

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