CN113867971B - 访问图形处理器的内存的方法、设备、系统和存储介质 - Google Patents

访问图形处理器的内存的方法、设备、系统和存储介质 Download PDF

Info

Publication number
CN113867971B
CN113867971B CN202111465067.9A CN202111465067A CN113867971B CN 113867971 B CN113867971 B CN 113867971B CN 202111465067 A CN202111465067 A CN 202111465067A CN 113867971 B CN113867971 B CN 113867971B
Authority
CN
China
Prior art keywords
memory
graphics processor
address
format
target
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
CN202111465067.9A
Other languages
English (en)
Other versions
CN113867971A (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.)
Beijing Bilin Technology Development Co ltd
Shanghai Bi Ren Technology Co ltd
Original Assignee
Beijing Bilin Technology Development Co ltd
Shanghai Biren 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 Beijing Bilin Technology Development Co ltd, Shanghai Biren Intelligent Technology Co Ltd filed Critical Beijing Bilin Technology Development Co ltd
Priority to CN202111465067.9A priority Critical patent/CN113867971B/zh
Publication of CN113867971A publication Critical patent/CN113867971A/zh
Application granted granted Critical
Publication of CN113867971B publication Critical patent/CN113867971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本公开涉及一种用于访问图形处理器的内存的方法、计算设备、计算系统和存储介质。该方法包括:获取关于图形处理器的访问命令,访问命令至少指示所访问目标图形处理器的内存地址偏移数据;解析与所述目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于标识数据确定目标图形处理器的内存的格式;基于所确定内存的格式和内存地址偏移数据,计算目标地址偏移量;以及基于目标图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至目标图形处理器的内存。本公开能够针对多种不同格式的GPU内存进行访问。

Description

访问图形处理器的内存的方法、设备、系统和存储介质
技术领域
本公开的实施例总体上涉及信息处理领域,更具体地涉及一种用于访问图形处理器的内存的方法、计算设备、计算系统和存储介质。
背景技术
图形处理器(GPU)通常配置有大量本地内存。中央处理器(CPU)和其他设备(例如网卡)都有需要访问图形处理器本地内存来完成在GPU上的计算任务。图形处理器所配置的本地内存例如包括双倍数据传输率存储器(Graphics Double Data Rate, GDDR)和高速内存高带宽内存(High Bandwidth Memory,HBM)等类型。
传统的用于访问图形处理器的内存的方案(例如,CPU 访问GPU内存的方法)包括:CPU通过GPU PCIe Memory Bar,利用偏移量来进行访问的GPU。例如,CPU 所访问目标GPU的内存地址为X,则 GPU对其进行地址转换,将其转换为X - GPU PCIe基址寄存器的基地址 +GPU内部基地址,以便进行GPU内存的访问。由此可见,传统的用于访问图形处理器的内存的方案适用于GPU内存的地址是线性连续的情形。
应当理解,GPU内存的本身格式不一定是线性的。比如GPU内存可以使用非统一内存访问(Non-Uniform Memory Access , NUMA)格式和一致性内存访问(Unified MemoryAccess,UMA)格式。例如,UMA根据隔行内存区段(interleave section)的个数,可以分为UMA_4, UMA_8 等不同格式。在UMA格式中,内存区段的隔行字节个数(或称“隔行尺寸”)也可能存在不同,以4个内存区段的UMA(UMA_4)为例, UMA_4_512为隔行尺寸为512字节、4个内存区段的UMA格式的GPU内存;UMA_4_4K为隔行尺寸为4K字节、4个内存区段的UMA格式的GPU内存。上述UMA_4_4K和UMA_4_512的寻址方式并非是线性的,因此,传统的用于访问图形处理器的方法不支持其他格式GPU的非线性寻址。
综上,传统的用于访问图形处理器的内存的方案存在的不利之处在于,只能选择其中一种格式线性连续的GPU内存来寻址。不能支持对多种格式GPU内存的寻址。
发明内容
本公开提供了一种用于访问图形处理器的内存的方法、计算设备、计算系统和计算机可读存储介质,能够针对多种不同格式的GPU内存进行访问。
根据本公开的第一方面,提供了一种用于访问图形处理器的内存的方法。该方法包括:获取关于图形处理器的访问命令,访问命令至少指示所访问目标图形处理器的内存地址偏移数据;解析与目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于标识数据确定目标图形处理器的内存的格式;基于所确定内存的格式和内存地址偏移数据,计算目标地址偏移量;以及基于目标图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至目标图形处理器的内存。
根据本发明的第二方面,还提供了一种计算设备。该计算设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使计算设备能够本公开的第一方面的方法。
根据本公开的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本公开的第一方面的方法。
根据本公开的第四方面,还提供了一种计算系统。该计算系统包括:主机,主机包括:中央处理器,被配置为:发送关于总线设备中的图形处理器的访问命令,访问命令至少指示所访问目标图形处理器的内存地址偏移数据;总线,用于中央处理器与总线设备之间的数据交互;至少一个总线设备,每个总线设备包括:基址寄存器,基址寄存器至少配置有扩展位和对应于图形处理器的内存的地址位,扩展位存储有用于标识图形处理器的内存的格式的标识数据;地址解析模块,地址解析模块被配置为:解析与图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于标识数据确定图形处理器的内存的格式;基于所确定内存的格式和内存地址偏移数据,计算目标地址偏移量;以及基于图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至图形处理器的内存;以及图形处理器,图形处理器配置有一个或多个内存。
在一些实施例中,解析与所述目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据包括:经由地址解析模块,解析与目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,标识数据指示目标图形处理器的内存的格式,基址寄存器的扩展位不同于基址寄存器的地址位。
在一些实施例中,用于访问图形处理器的内存的方法还包括:基于总线设备所配置的图形处理器的内存的格式的数量,确定基址寄存器的扩展位的位数; 基于所确定的扩展位的位数,调整基址寄存器的地址空间,使得经调整的地址空间与总线设备所配置的图形处理器的内存相对应;以及基于总线设备所配置的图形处理器的内存的格式,配置基址寄存器的扩展位。
在一些实施例中,用于访问图形处理器的内存的方法还包括:通过总线设备配置图形处理器的一个或多个内存,一个或多个内存中的至少部分内存具有多种不同的格式。
在一些实施例中,扩展位为高于地址位的一位或者多位。
在一些实施例中,扩展位中的一位或多位用于标识隔行的尺寸类型,扩展位中的一位或多位用于指示目标图形处理器的内存区段的类型。
在一些实施例中,基于标识数据确定目标图形处理器的内存的格式包括:响应于扩展位指示的内存区段的类型为第一类型,确定目标图形处理器的内存的格式为非统一内存访问格式;响应于扩展位指示的内存区段的类型为第二类型,确定目标图形处理器的内存的格式为4个内存区段的一致性内存访问格式;响应于扩展位指示的内存区段的类型为第三类型,确定目标图形处理器的内存的格式为8个内存区段的一致性内存访问格式;响应于扩展位指示的内存区段的类型为第四类型,确定目标图形处理器的内存的格式为16个内存区段的一致性内存访问格式;以及响应于扩展位指示的内存区段的类型为第五类型,确定目标图形处理器的内存的格式为32个内存区段的一致性内存访问格式。
在一些实施例中,基于标识数据确定目标图形处理器的内存的格式包括:响应于扩展位标识的隔行的尺寸类型为第一预设类型,确定目标图形处理器的内存的隔行的尺寸为512字节;以及响应于扩展位标识的隔行的尺寸类型为第二预设类型,确定目标图形处理器的内存的隔行的尺寸为4K字节。
在一些实施例中,用于访问图形处理器的内存的方法还包括:基于所访问目标图形处理器的内存地址和与目标图形处理器相关联的基址寄存器的基地址,确定内存地址偏移数据。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示意性示出了NUMA格式和UMA格式的GPU内存的地址配置方式示意图。
图2示出了NUMA和UMA混合格式的GPU内存的地址配置方式示意图。
图3示出了用于实施根据本公开的实施例的用于访问图形处理器的内存的方法的计算系统的示意图。
图4示出了根据本公开实施例的用于访问图形处理器的内存的方法的流程图。
图5示出了根据本公开实施例的用于配置基址寄存器的方法的示意图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
如前文所描述,在传统的用于访问图形处理器的内存的方案中,CPU通过GPU PCIe总线的地址空间访问GPU的内存。例如,以4GB GPU内存访问寻址为例。如果GPU PCIe 总线的内存基址寄存器(memory bar)的尺寸为4GB,4GB的GPU在CPU地址空间的地址为:[GPU_MEM_BAR, GPU_MEM_BAR + 0x0_FFFFFFFF ]。4GB的 GPU在GPU地址空间的地址为:[ GPU_internal_base, GPU_internal_base + 0x0_FFFFFFFF ]。如果CPU所访问的GPU内存地址为X,内存地址的偏移量为X - GPU_MEM_BAR,则GPU的实际物理地址Z例如根据如下公式(1)加以计算:
Z=X - GPU_MEM_BAR + GPU_internal_base (1)
在上述公式(1)中,Z代表经转换的所访问的GPU的实际物理地址。GPU_MEM_BAR 代表GPU PCIe基址寄存器的基地址。GPU_internal_base代表GPU 内部基地址。X代表CPU所访问的GPU内存地址。由此可见,传统的用于访问图形处理器的内存的方案适用于GPU内存的地址是线性连续的情形,并且仅能支持针对某一种内存格式GPU的访问,其他的内存格式或者多种不同格式的GPU将无法被访问。
应当理解,GPU内存具有多种格式,一些格式的GPU内存的地址配置方式并非是线性的。以下结合图1说明不同GPU内存格式的地址配置方式。例如,CPU所访问的GPU可以配置有16个内存区段。每一个内存区段例如是512字节的隔行(interleave)尺寸。
再例如,GPU的16个内存区段例如是由4个UMA_4组成的。0到8GB字节的地址编码例如由第一UMA_4进行配置;8GB到16GB字节的地址编码例如由第二UMA_4进行配置;16GB到24GB字节的地址编码例如由第三UMA_4进行配置;24GB到32GB字节的地址编码例如由第四UMA_4进行配置。图1示意性示出了NUMA格式和UMA格式的GPU内存的地址配置方式示意图。如图1所示,标记110指示的是1个UMA_4_512格式的GPU内存,即配置有4个内存区段,每个内存区段的隔行字节个数为512字节的UMA格式的GPU内存。UMA_4_512的地址配置方式如图1所示,4个内存区段,即第一内存区段CORE0、第二内存区段CORE1、第三内存区段CORE2、第四内存区段CORE3的内存地址的配置方式包括:如箭头112所示,从第一内存区段至第四内存区段连续进行地址编码,直到达到换行地址。然后,如箭头114所示,再从第一内存区段至第四内存区段连续进行地址编码,直到达到下一换行地址。
如图1所示,标记130指示的是4个NUMA_1_512,即配置有4个内存区段,每个内存区段的隔行字节个数为512字节的NUMA格式的GPU。
NUMA_4_512的地址配置方式如图1所示,对于第一内存区段按照箭头132所示方式自左向右进行地址编码,直到达到换行地址。然后,如箭头134所示,再从第一内存区段的下一行自左向右进行地址编码直到达到下一换行地址,如此往复,直至达到第一内存区段的最大地址编码。之后,从第二内存区段按照箭头136所示方式自左向右进行地址编码,直到达到换行地址。然后,如箭头138所示,再从第二内存区段的第二行自左向右进行地址编码直到达到下一换行地址,如此往复,直至达到第二内存区段的最大地址编码。显然,传统的用于访问图形处理器的内存的方案无法同时支持图1所示的UMA_4_512和NUMA_4_512格式的GPU内存的内存访问。
图2示出了NUMA和UMA混合格式的GPU内存的地址配置方式示意图。如图2所示,标记210所指示的UMA从第一内存区段CORE0至第八内存区段CORE7连续进行地址编码。标记220所指示的UMA-N从第五内存区段CORE4至第八内存区段CORE7连续进行地址编码。标记230所指示的NUMA的第二内存区段CORE1和第三内存区段CORE2各自进行地址编码。显然,传统的用于访问图形处理器的内存的方案也无法支持图2所示的NUMA和UMA混合格式的GPU的内存访问。
因此,传统的用于访问图形处理器的内存的方案只能选择其中一种格式的GPU内存来寻址,不能支持对多种格式GPU内存的寻址。应当理解,本公开的图形处理器包括但不限于通用图形处理器(GPGPU,General Purpose GPU)。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于访问图形处理器的内存的方法、计算设备、计算系统和计算机可读存储介质。在本公开方法中:通过解析基址寄存器的扩展位来确定待访问GPU的格式,然后利用所确定的内存的格式和访问命令中所指示的内存地址偏移数据来计算目标地址偏移量;以及目标图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至目标图形处理器的内存,本公开能够针对多种不同格式的GPU内存进行访问。
图3示出了用于实施根据本公开的实施例的用于访问图形处理器的内存的方法的计算系统300的示意图。
如图3所示,计算系统300包括:主机(host)310和一个或者多个总线设备330(图3中仅仅示例性示出了一个总线设备,总线设备330例如而不限于是PCIe设备)。关于主机310,其例如包括至少一个中央处理器312、总线314、系统内存(System Memory)316等。总线例如可以是高速周边组件互连(Peripheral Component Interconnect Express,PCIe)总线或者其他总线。
关于中央处理器312,其例如被配置为:发送关于总线设备中的图形处理器的访问命令,访问命令至少指示所访问目标图形处理器的内存地址偏移数据和与目标图形处理器相关联的基址寄存器的基地址。
关于总线314,其至少用于中央处理器与总线设备之间的数据交互。
关于总线设备330,其例如为计算设备。总线设备330例如包括图形处理器(GPU)332、图形处理器的一个或多个内存334、地址解析模块336和基址寄存器338(PCIe Memorybase address registers,BAR)等。每个总线设备330通过总线314接入到主机310上。地址解析模块336与基址寄存器338和图形处理器的内存334电连接。图形处理器332与图形处理器的内存334电连接。
关于图形处理器的内存334,应当理解,每个总线设备330可以配置有大量(例如16GB、32GB等)的图形处理器的内存334。图形处理器的内存334可以被图形处理器332所访问。图形处理器的内存334也可以被主机310的中央处理器312访问。但是,中央处理器312和图形处理器332之间的内存并不互相可见,即中央处理器312无法直接图形处理器的内存,图形处理器332也无法直接看到中央处理器312初始化后的数据。主机310的中央处理器312可以通过总线314、基址寄存器338来访问总线设备330中的图形处理器332及图形处理器的内存334。
关于基址寄存器,其至少配置有扩展位和对应于图形处理器的内存的地址位,扩展位存储有用于标识图形处理器的内存的格式的标识数据。基址寄存器例如位于 总线设备配置空间(configuration space)的配置头(configuration header)中,以用于提供图形处理器的内存映射的寄存器窗口和用于标识图形处理器的内存的格式。
关于基址寄存器的扩展位,其不同于基址寄存器的地址位,在一些实施例中,扩展位为高于地址位的一位或者多位。以GPU内存为4GB为例,基址寄存器可以配置有32位的数据/地址位和多个扩展位。例如,基址寄存器的第0位和第31位为数据/地址位。数据/地址位配置有图形处理器的内存对应的PCIe基地址(PCIe_BASE_Addr)。基址寄存器的第32位和第35位例如为扩展位,用于标识目标图形处理器的内存的格式。在一些实施例中,基址寄存器的第32位和第33位为扩展位。应当理解,基址寄存器所配置的扩展位不仅仅局限于第32位和第35位中的部分或者全部,扩展位也可以是数据/地址位之外的一位或多位。
关于地址解析模块336,其被配置为:解析与图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于标识数据确定图形处理器的内存的格式;基于所确定内存的格式和内存地址偏移数据,计算目标地址偏移量;以及基于图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至图形处理器的内存。
以下结合图4说明用于访问图形处理器的内存的方法400。图4示出了根据本公开的一些实施例的用于访问图形处理器的内存的方法400的流程图。应当理解,方法400例如可以在图3所描述的总线设备330处执行,也可以本公开所描述的计算设备执行。应当理解,方法400还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
在步骤402处,总线设备330获取关于图形处理器的访问命令,访问命令至少指示所访问目标图形处理器的内存地址偏移数据。
关于目标图形处理器的内存地址偏移数据的确定方式,其例如包括:基于所访问目标图形处理器的内存地址和与目标图形处理器相关联的基址寄存器的基地址,确定内存地址偏移数据。例如,内存地址偏移数据=所访问目标图形处理器的内存地址-GPU PCIe基址寄存器的基地址。
关于访问命令,其例如来自主机的CPU。例如,CPU发送用于访问目标图形处理器的内存的访问命令,该访问格式例如包括表达式(2)所示地址信息:
GPU_MEM_BAR + X’ (2)
在上述表达式(2)中,X’代表目标图形处理器的内存地址偏移数据。GPU_MEM_BAR代表与目标图形处理器相关联的基址寄存器的基地址。目标图形处理器的内存地址偏移数据 X’的范围例如为:[0x1_00000000, 0x1_FFFFFFFF]。
在步骤404处,总线设备330解析基址寄存器的扩展位所存储的标识数据,以便基于标识数据确定目标图形处理器的内存的格式。关于确定目标图形处理器的内存的格式的方法,其例如包括:经由地址解析模块,解析与目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,标识数据指示目标图形处理器的内存的格式,基址寄存器的扩展位不同于基址寄存器的地址位。
关于基址寄存器的扩展位,其例如为高于地址位的一位或者多位。例如,扩展位为基址寄存器的第32位至第35位中的一位或者多位。基址寄存器的扩展位的位数是由图形处理器的内存的格式的数量所确定。例如,如果图形处理器的内存的格式的数量为4种,基址寄存器的扩展位的位数为2位;如果图形处理器的内存的格式的数量为8种,基址寄存器的扩展位的位数为3位;如果图形处理器的内存的格式的数量为16种,基址寄存器的扩展位的位数为4位。
在一些实施例中,扩展位中的一位或多位用于标识隔行的尺寸类型,扩展位中的一位或多位用于指示目标图形处理器的内存区段的类型。例如,扩展位例如为基址寄存器的第32位至第35位中的四位。具体而言,基址寄存器的第32位至第35位中的一位(例如而不限于是第35位)的标识数据指示隔行的尺寸类型,基址寄存器的第32位至第35位中的其他三位(例如而不限于是第32位至第34位)的标识数据指示内存区段(例如,HBM段)的类型。应当理解,扩展位不一定局限于基址寄存器的第32位至第35位。事实上,扩展位可以根据具体情况可以变化。例如,如果GPU内存为4GB时,则扩展位可以从第32位开始。如果GPU内存为8GB时,则扩展位可以从第33位开始。以此类推,在此,不再赘述。
例如,如果扩展位指示的内存区段的类型为第一类型(例如,如果基址寄存器的第35位的标识数据指示“0”,其指示扩展位标识的隔行的尺寸类型为第一预设类型),确定目标图形处理器的内存的隔行的尺寸为512字节;以及如果扩展位标识的隔行的尺寸类型为第二预设类型,确定目标图形处理器的内存的隔行的尺寸为4K字节。例如,如果确定基址寄存器的第35位的标识数据指示 “1”,其指示扩展位标识的隔行的尺寸类型为第二预设类型,确定目标图形处理器的内存的隔行的尺寸为4K字节。
如果扩展位指示的内存区段的类型为第一类型,确定目标图形处理器的内存的格式为非统一内存访问格式。例如,如果确定基址寄存器的第32位至第34位的标识数据指示“0”,其例如指示内存区段的类型为第一类型,则确定目标图形处理器的内存的格式为NUMA。
如果扩展位指示的内存区段的类型为第二类型,确定目标图形处理器的内存的格式为4个内存区段的一致性内存访问格式。例如,如果确定基址寄存器的第32位至第34位的标识数据指示“1”,其例如指示内存区段的类型为第二类型,则确定目标图形处理器的内存的格式为UMA_4。
如果扩展位指示的内存区段的类型为第三类型,则确定目标图形处理器的内存的格式为8个内存区段的一致性内存访问格式。例如,如果确定基址寄存器的第32位至第34位的标识数据指示 “2”,其例如指示内存区段的类型为第三类型,则确定目标图形处理器的内存的格式为UMA_8。
如果扩展位指示的内存区段的类型为第四类型,确定目标图形处理器的内存的格式为16个内存区段的一致性内存访问格式。例如,如果确定基址寄存器的第32位至第34位的标识数据指示 “3”,其例如指示的内存区段的类型为第四类型,则确定目标图形处理器的内存的格式为UMA_16。
如果扩展位指示的内存区段的类型为第五类型,确定目标图形处理器的内存的格式为32个内存区段的一致性内存访问格式。例如,如果确定基址寄存器的第32位至第34位的标识数据指示 “4”,其例如指示内存区段的类型为第五类型,则确定目标图形处理器的内存的格式为UMA_32。
例如,以下表1示例出第32位至第35位的标识数据所标识的图形处理器的内存格式。
表1
Figure 125179DEST_PATH_IMAGE001
例如,步骤404处经由地址解析模块,解析基址寄存器的扩展位所存储的标识数据为0001,该标识数据指示图形处理器的内存格式为UMA_4_512。
在步骤406处,总线设备330基于所确定内存的格式和内存地址偏移数据,计算目标地址偏移量。
例如,所确定的图形处理器的内存格式为UMA_4_512。应当理解,UMA_4_512包括4个内存区段,从第一内存区段至第四内存区段连续进行地址编码,直到达到换行地址。每一个换行地址间隔512*4,即2048。例如,当前访问命令所指示的目标图形处理器的内存地址偏移数据为32K,则地址解析模块基于内存地址偏移数据(例如32K),计算对应于32K的目标地址偏移量例如指向第四内存区段的第16行上的地址。
再例如,解析基址寄存器的扩展位所存储的标识数据为0003,步骤406所确定的图形处理器的内存格式为UMA_8_512。从第一内存区段至第十六内存区段连续进行地址编码,直到达到换行地址。每一个换行地址间隔512*8,即4096。则地址解析模块基于内存地址偏移数据(例如32K),计算的目标地址偏移量例如指向第十六内存区段的第8行上的地址。
在步骤408处,总线设备330基于目标图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至目标图形处理器的内存。
例如,地址解析模块发出关于目标图形处理器的内存的实际物理地址的目标访问命令,该目标访问命令例如指示如下表达式(3)所示的地址信息:
GPU_internal_base + Y (3)
在上述表达式(3)中,Y代表步骤406处所计算的目标地址偏移量。GPU_internal_base代表目标图形处理器的内存的基地址。
在上述方案中,通过解析基址寄存器的扩展位所存储的表示数据来确定待访问的GPU的内存格式,然后利用所确定的内存的格式和访问命令中所指示的内存地址偏移数据来计算目标地址偏移量;以及基于目标图形处理器的内存的基地址和所计算的目标地址偏移量,访问目标图形处理器的内存,本公开能够针对多种不同格式的GPU内存进行访问。
在一些实施例中,方法400还包括用于配置基址寄存器的方法500。以下结合图5说明用于配置基址寄存器的方法500。图5示出了根据本公开的一些实施例的用于配置基址寄存器的方法500的流程图。应当理解,方法500例如可以在图3所描述的总线设备330处执行,也可以由本公开所描述的计算设备执行。应当理解,方法500还可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。
在步骤502处,基于总线设备所配置的图形处理器的内存的格式的数量,确定基址寄存器的扩展位的位数。
在一些实施例中,通过总线设备配置图形处理器的一个或多个内存,一个或多个内存中的至少部分内存具有多种不同的格式。
关于确定基址寄存器的扩展位的位数的方法,其例如包括:如果图形处理器的内存的格式的数量为4种,基址寄存器的扩展位的位数为2位;如果图形处理器的内存的格式的数量为8种,基址寄存器的扩展位的位数为3位;如果图形处理器的内存的格式的数量为16种,基址寄存器的扩展位的位数为4位。
例如,以4GB图形处理器的内存为例,图形处理器的内存的格式可以是UMA_global_512、UMA_GLOBAL_4k、NUMA_512和NUMA_4K。上述图形处理器的内存的格式的数量为4种,基址寄存器的扩展位的位数被确定为2位。
在步骤504处,基于所确定的扩展位的位数,调整基址寄存器的地址空间,使得经调整的地址空间与总线设备所配置的图形处理器的内存相对应。
应当理解,通过总线设备配置图形处理器的一个或多个内存,一个或多个内存中的至少部分内存具有多种不同的格式。
例如,确定总线设备是否被初始化。如果确定总线设备未被初始化,继续等待以便确定总线设备是否被初始化。如果确定总线设备被初始化,基于所确定的扩展位的位数,调整基址寄存器的地址空间,使得经调整的地址空间与总线设备所配置的图形处理器的内存相对应。
例如,基址寄存器的扩展位的位数被确定为2位,则将总线设备的基址寄存器的地址空间调整为基址寄存器实际大小的4倍,以便将经调整的地址空间对应于4个图形处理器的内存。即,总线设备的基址寄存器的地址空间尺寸调整为4GB x 4 = 16GB。
在步骤506处,基于总线设备所配置的图形处理器的内存的格式,配置基址寄存器的扩展位。
关于基址寄存器的扩展位,其不同于基址寄存器的地址位,在一些实施例中,扩展位为高于地址位的一位或者多位。例如,基址寄存器的扩展位为基址寄存器的最高两位,例如为第32位至第33位。当主机中的CPU访问总线设备中的GPU内存时,总线设备中的地址解析模块(该地址解析模块例如由硬件引擎所构成)会解析基址寄存器的最高两位,并将基址寄存器的最高两位所存储的标识数据视为操作码,以便基于所确定内存的格式和内存地址偏移数据计算目标地址偏移量;以及寻址至目标图形处理器的实际物理地址。
例如,总线设备的4GB的图形处理器的在CPU地址空间的地址为:[GPU_MEM_BAR,GPU_MEM_BAR + 0x0_FFFFFFFF ]。4GB的图形处理器在GPU地址空间的地址为:[ GPU_internal_base, GPU_internal_base + 0x0_FFFFFFFF ]。例如,利用经调整的16GB基址寄存器的地址空间的第32至33位的标识数据(即,bit32,33)进行编码来标识总线设备的图形处理器的内存的格式。
例如,如果bit32,33 = b00, 4GB的图形处理器的在CPU地址空间的地址为[GPU_MEM_BAR, GPU_MEM_BAR+ 0x0_FFFFFFFF] ,标识所访问目标图形处理器的内存为UMA_global_512格式内存。
如果bit32,33 = b01, 4GB的图形处理器的在CPU地址空间的地址为[GPU_MEM_BAR+0x1_0000000, GPU_MEM_BAR+ 0x1_FFFFFFFF] , 则标识所访问目标图形处理器的内存为UMA_GLOBAL_4k格式内存。其中,地址是连续的,即,0x0_FFFFFFFF + 1 = 0x1_00000000。
如果bit32,33 = b10, 4GB的图形处理器的在CPU地址空间的地址为[GPU_MEM_BAR+0x2_0000000, GPU_MEM_BAR+ 0x2_FFFFFFFF] ,则标识所访问目标图形处理器的内存为NUMA_512格式内存。
如果bit32,33 = b11, 4GB的图形处理器的在CPU地址空间的地址为[GPU_mem_bar+0x3_00000000, GPU_mem_bar + 0x3_FFFFFFFF ] ,则标识所访问目标图形处理器的内存为NUMA_4K格式内存。
通过采用上述手段,本公开可以使总线设备进行数据交互的Host 端和其他设备(NIC)可以利用基址寄存器的不同地址段(即扩展位)来访问不同格式的GPU内存。另外,本公开还利于增加软件编程的灵活性,实现硬件加速操作等,以及增强硬件的除错(DEBUG)能力。
上文所描述的各个过程和处理,例如方法400、500,可由计算设备处执行。该计算设备例如包括:至少一个处理器(至少一个图形处理器和至少一个中央处理器);以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行。在一些实施例中,方法400、500,可被实现为计算机软件程序,其被有形地包含于机器可读介质。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到计算设备上。当计算机程序被加载到RAM并由GPU和CPU执行时,可以执行上文描述的方法400、500,的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的中央处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的中央处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。

Claims (13)

1.一种用于访问图形处理器的内存的方法,其特征在于,包括:
获取关于目标图形处理器的访问命令,所述访问命令至少指示所访问目标图形处理器的内存地址偏移数据;
解析与所述目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于所述标识数据确定目标图形处理器的内存的格式,所述基址寄存器的扩展位不同于基址寄存器的地址位;
基于所确定内存的格式和所述内存地址偏移数据,计算目标地址偏移量;以及
基于目标图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至目标图形处理器的内存。
2.根据权利要求1所述的方法,其特征在于,解析与所述目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据包括:
经由地址解析模块,解析与目标图形处理器相关联的基址寄存器的扩展位所存储的标识数据,所述标识数据指示目标图形处理器的内存的格式。
3.根据权利要求2所述的方法,其特征在于,还包括:
基于总线设备所配置的目标图形处理器的内存的格式的数量,确定基址寄存器的扩展位的位数;
基于所确定的扩展位的位数,调整基址寄存器的地址空间,使得经调整的地址空间与总线设备所配置的目标图形处理器的内存相对应;以及
基于总线设备所配置的目标图形处理器的内存的格式,配置基址寄存器的扩展位。
4.根据权利要求3所述的方法,其特征在于,还包括:
通过所述总线设备配置目标图形处理器的一个或多个内存,所述一个或多个内存中的至少部分内存具有多种不同的格式。
5.根据权利要求2所述的方法,其特征在于,所述扩展位为高于所述地址位的一位或者多位。
6.根据权利要求5所述的方法,其特征在于,所述扩展位中的一位或多位用于标识隔行的尺寸类型,所述扩展位中的一位或多位用于指示目标图形处理器的内存区段的类型。
7.根据权利要求6所述的方法,其特征在于,基于所述标识数据确定目标图形处理器的内存的格式包括:
响应于所述扩展位指示的内存区段的类型为第一类型,确定目标图形处理器的内存的格式为非统一内存访问格式;
响应于所述扩展位指示的内存区段的类型为第二类型,确定目标图形处理器的内存的格式为4个内存区段的一致性内存访问格式;
响应于所述扩展位指示的内存区段的类型为第三类型,确定目标图形处理器的内存的格式为8个内存区段的一致性内存访问格式;
响应于所述扩展位指示的内存区段的类型为第四类型,确定目标图形处理器的内存的格式为16个内存区段的一致性内存访问格式;以及
响应于所述扩展位指示的内存区段的类型为第五类型,确定目标图形处理器的内存的格式为32个内存区段的一致性内存访问格式。
8.根据权利要求6所述的方法,其特征在于,基于所述标识数据确定目标图形处理器的内存的格式包括:
响应于所述扩展位标识的隔行的尺寸类型为第一预设类型,确定目标图形处理器的内存的隔行的尺寸为512字节;以及
响应于所述扩展位标识的隔行的尺寸类型为第二预设类型,确定目标图形处理器的内存的隔行的尺寸为4K字节。
9.根据权利要求1所述的方法,其特征在于,还包括:基于所访问目标图形处理器的内存地址和与目标图形处理器相关联的基址寄存器的基地址,确定所述内存地址偏移数据。
10.一种计算设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被机器执行时执行根据权利要求1-9中任一项所述的方法。
12.一种计算系统,其特征在于,包括:
主机,所述主机包括:
中央处理器,被配置为:发送关于总线设备中的目标图形处理器的访问命令,所述访问命令至少指示所访问目标图形处理器的内存地址偏移数据;
总线,用于中央处理器与总线设备之间的数据交互;
至少一个总线设备,每个总线设备包括:
基址寄存器,所述基址寄存器至少配置有扩展位和对应于图形处理器的内存的地址位,所述扩展位存储有用于标识图形处理器的内存的格式的标识数据;
地址解析模块,所述地址解析模块被配置为:解析与图形处理器相关联的基址寄存器的扩展位所存储的标识数据,以便基于所述标识数据确定图形处理器的内存的格式,所述基址寄存器的扩展位不同于基址寄存器的地址位;基于所确定内存的格式和所述内存地址偏移数据,计算目标地址偏移量;以及基于图形处理器的内存的基地址和所计算的目标地址偏移量,寻址至图形处理器的内存;以及
图形处理器,所述图形处理器配置有一个或多个内存。
13.根据权利要求12所述的计算系统,其特征在于,所述一个或多个内存中的至少部分内存具有多种不同的格式。
CN202111465067.9A 2021-12-03 2021-12-03 访问图形处理器的内存的方法、设备、系统和存储介质 Active CN113867971B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111465067.9A CN113867971B (zh) 2021-12-03 2021-12-03 访问图形处理器的内存的方法、设备、系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111465067.9A CN113867971B (zh) 2021-12-03 2021-12-03 访问图形处理器的内存的方法、设备、系统和存储介质

Publications (2)

Publication Number Publication Date
CN113867971A CN113867971A (zh) 2021-12-31
CN113867971B true CN113867971B (zh) 2022-03-15

Family

ID=78985753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111465067.9A Active CN113867971B (zh) 2021-12-03 2021-12-03 访问图形处理器的内存的方法、设备、系统和存储介质

Country Status (1)

Country Link
CN (1) CN113867971B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115861030B (zh) * 2023-01-31 2023-07-25 南京砺算科技有限公司 图形处理器及其系统变量生成方法、介质
CN115905040B (zh) * 2023-02-01 2023-10-13 南京砺算科技有限公司 计数器的处理方法、图形处理器、设备及存储介质
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质
CN117992123B (zh) * 2024-04-02 2024-07-05 摩尔线程智能科技(北京)有限责任公司 指令执行方法、装置、电子设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468079A (zh) * 2021-09-03 2021-10-01 支付宝(杭州)信息技术有限公司 内存访问方法及装置
CN113656331A (zh) * 2021-10-20 2021-11-16 北京微核芯科技有限公司 基于高低位的确定访问地址的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019046723A1 (en) * 2017-08-31 2019-03-07 MIPS Tech, LLC RELATED ADDRESSING OF GLOBAL POINTER IMPLICIT FOR ACCESS TO GLOBAL MEMORY

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468079A (zh) * 2021-09-03 2021-10-01 支付宝(杭州)信息技术有限公司 内存访问方法及装置
CN113656331A (zh) * 2021-10-20 2021-11-16 北京微核芯科技有限公司 基于高低位的确定访问地址的方法和装置

Also Published As

Publication number Publication date
CN113867971A (zh) 2021-12-31

Similar Documents

Publication Publication Date Title
CN113867971B (zh) 访问图形处理器的内存的方法、设备、系统和存储介质
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
US9514057B2 (en) Storage module and method for managing logical-to-physical address mapping
US10223306B2 (en) Programmable memory transfer request processing units
EP3493084B1 (en) Method for processing data in bloom filter and bloom filter
CN105830022B (zh) 访问文件的方法和装置
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
CN105224476B (zh) 高速缓存路预测
US9058268B1 (en) Apparatus, system and method for memory management
JP2017516234A (ja) 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
US20150084975A1 (en) Load/store operations in texture hardware
CN107256233B (zh) 一种数据存储方法和装置
US20140143635A1 (en) Techniques for storing ecc checkbits in a level two cache
US9934145B2 (en) Organizing memory to optimize memory accesses of compressed data
JP2010134956A (ja) 状況切換え環境中におけるアドレス変換技術
CN109857553B (zh) 内存管理方法及装置
US10402323B2 (en) Organizing memory to optimize memory accesses of compressed data
CN116185910B (zh) 访问设备内存、管理设备内存的方法、设备和介质
CN112380150B (zh) 计算装置以及用于加载或更新数据的方法
CN112380147B (zh) 计算装置以及用于加载或更新数据的方法
US20170168935A1 (en) Method and Device of Memory Space Management
CN114328288A (zh) 用于许多核处理器中改善的数据共享的被延迟高速缓存写回指令
TWI254246B (en) Computational circuit for generating a predicted address value and method thereof
CN111026680A (zh) 将第一标识符映射到第二标识符

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee after: Beijing Bilin Technology Development Co.,Ltd.

Country or region after: China

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Address before: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee before: Beijing Bilin Technology Development Co.,Ltd.

Country or region before: China

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.