用于gpu的内存页管理方法和内存页转换方法

文档序号:435833 发布日期:2021-12-24 浏览:29次 >En<

阅读说明:本技术 用于gpu的内存页管理方法和内存页转换方法 (Memory page management method and memory page conversion method for GPU ) 是由 赵夏 唐玉华 张光达 黄安文 温家辉 孙懿淳 张鸿云 张宇 于 2021-08-30 设计创作,主要内容包括:本发明公开了一种用于GPU的内存页管理方法和内存页转换方法,该内存页管理方法包括:在至少一个物理页中嵌套一个小物理页,其中,小物理页的内存小于物理页;在TLB的页表项中增加预设内存大小的嵌套页标记位,其中,嵌套页标记位用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页;根据调整后的TLB进行虚实地址转换。本发明的用于GPU的内存页管理方法和内存页转换方法能够提高内存空间的使用效率,降低存储成本,减少多任务GPU中内存碎片化问题。(The invention discloses a memory page management method and a memory page conversion method for a GPU, wherein the memory page management method comprises the following steps: nesting a small physical page in at least one physical page, wherein the memory of the small physical page is smaller than the physical page; adding a nesting page marking bit with a preset memory size in a page table entry of the TLB, wherein the nesting page marking bit is used for indicating whether a physical page corresponding to the page table entry of the current TLB is nested with a small physical page or not and indicating whether a virtual address hits the physical page corresponding to the page table entry of the current TLB or not; and performing virtual-real address translation according to the adjusted TLB. The memory page management method and the memory page conversion method for the GPU can improve the use efficiency of the memory space, reduce the storage cost and reduce the problem of memory fragmentation in the multitask GPU.)

用于GPU的内存页管理方法和内存页转换方法

技术领域

本发明涉及GPU技术领域,具体涉及一种用于GPU的内存页管理方法和内存页转换方法。

背景技术

图形处理器(Graphics Processing Unit,GPU)是一种用于做图像和图形相关运算工作的微处理器,GPU因其强大的计算能力在云计算平台和数据中心被广泛应用,为用户提供所需要的计算,现代GPU通常采用虚拟内存技术对真实的物理内存进行抽象,为每个运行在GPU上的任务提供一个独占内存地址空间的假象。在虚拟内存技术下,执行GPU上某一任务的访存指令所产生的内存地址被称为虚拟地址或者逻辑地址,而访问真实物理内存的地址叫做物理地址,虚拟内存技术负责完成虚拟地址向物理地址的地址映射,因此在编写程序的时候可以不考虑程序在物理内存的所在位置和所占空间等问题。

目前,GPU的虚拟内存技术通常采用页式内存管理的方式对物理内存进行分配以及完成物理内存到虚拟内存的映射。具体地,在页式内存管理方式下,GPU上每一个任务的虚拟内存被划分成许多虚拟内存页(page),而物理内存同样被划分为与虚拟内存页相同大小的许多物理内存页(physical page),虚拟内存的某个地址的映射问题,在页式内存管理方式下就是虚拟内存页到物理内存页的映射再加上页内偏移的问题。为了优化对内存页的管理,现代GPU通常采用内存管理单元(Memory Management Unit,MMU)和转译后备缓冲器(Translation Lookaside Buffer,TLB)来快速完成虚拟地址到物理地址的映射,其中,TLB为高速的存储器,TLB存储了虚拟地址到物理地址映射的页表项。当虚拟地址到来时,MMU首先查找TLB,如果TLB命中,则直接可以返回该虚拟地址对应的物理地址;如果TLB失效,则通过页表查找器(Page Table Walker,PTW)访存GPU系统内存中存储的页表项来完成虚实地址的转换。附图1为示例提供的一种64KB内存页对应的虚实地址转换过程示意图;如附图1所示,在现有的页式内存管理方式下,虚拟地址根据内存页大小被分为两部分,其中,[31:16]位为虚拟页号,[15:0]位为页内偏移,进行虚实地址转化的访存请求使用虚拟页号去查找TLB,判断虚拟页号中的相应位与TLB页表项的tag位是否相同,如果相同则TLB命中,可以得到物理地址;如果都不相同,则TLB失效,通过PTW访问GPU系统内存中的页表进行虚实地址转换;当TLB命中时,通过将实页号与页内偏移拼接得到物理地址。

由于GPU的内存页大小一般是4KB,因此通常将4KB的内存页称为小页,将大于4KB的内存页称为大页。在GPU上使用小页可以有效降低CPU-GPU之间的内存页传输延迟,同时在GPU上使用大页可以有效降低TLB的失效率。不同的GPU任务由于程序特征的不同对大小页有不同的需求,因此现有的现代GPU系统普遍支持多种页大小的内存管理以便对存储空间进行更加高效的管理。

然而,在GPU上使用大页虽然能够有效提升TLB的命中率,提高程序的性能,但是也不可避免带来内存碎片化问题,其中,内存碎片化问题包括内部碎片和外部碎片。以64KB的内存页为例,如果当前任务无法完全使用64KB的物理内存空间,则可能产生较大的页内浪费,这种实际未使用的空间不能分配给其它任务,也不能分配给同一任务的不同虚拟内存区域,这种问题称为内部碎片。由于页对齐的要求,如果空闲小页散落在内存空间中,则会造成无法分配一大段地址连续的内存空间给一个大页,这种问题称为外部碎片。当出现内存碎片化问题时,均会造成空间的浪费,导致程序开销和存储成本增加。

发明内容

为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种用于GPU的内存页管理方法和内存页转换方法。

本发明的技术方案如下:

第一方面,提供了一种用于GPU的内存页管理方法,包括:

在至少一个物理页中嵌套一个小物理页,其中,所述小物理页的内存小于所述物理页;

在TLB的页表项中增加预设内存大小的嵌套页标记位,其中,所述嵌套页标记位用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页;

根据调整后的TLB进行虚实地址转换。

在一些可能的实现方式中,所述物理页的内存大小为64KB。

在一些可能的实现方式中,所述小物理页的内存大小为4KB、8KB、16KB和32KB中任一种。

在一些可能的实现方式中,所述嵌套页标记位的内存大小为4个比特位。

在一些可能的实现方式中,根据物理页是否嵌套有小物理页将嵌套页标记位的4个比特位配置为4’b0000、4’b0001、4’b0010、4’b0100或4’b1000,其中,当4个比特位配置为4’b0000时,表示物理页未嵌套小物理页,其中,当4个比特位配置为4’b0001时,表示物理页嵌套有内存大小为4KB的小物理页,其中,当4个比特位配置为4’b0010时,表示物理页嵌套有内存大小为8KB的小物理页,其中,当4个比特位配置为4’b0100时,表示物理页嵌套有内存大小为16KB的小物理页,其中,当4个比特位配置为4’b1000时,表示物理页嵌套有内存大小为32KB的小物理页。

在一些可能的实现方式中,所述根据调整后的TLB进行虚实地址转换,包括以下步骤:

S11,根据输入的虚拟地址以及内存页大小计算虚拟页号和页内偏移;

S12,利用虚拟页号查找TLB,判断TLB是否命中,若TLB没有命中,则进行步骤S13,若TLB命中,则进行步骤S14;

S13,利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S11;

S14,判断命中的TLB的页表项对应的物理页是否嵌套有小物理页,若没有,则进行步骤S15,若有,则进行步骤S16;

S15,将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

S16,将虚拟地址中的页内偏移的预设位与当前TLB的页表项包含的嵌套页标记位进行比较,确定虚拟地址是否落在嵌套的小物理页内;若虚拟地址落在嵌套的小物理页内,则利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S11;若虚拟地址落在嵌套的小物理页外,则将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址。

在一些可能的实现方式中,步骤S12中,判断TLB是否命中,包括:

若TLB为全相联映射,则将TLB中的每一个页表项与虚拟页号进行依次比较,判断TLB是否命中;

若TLB为组相联映射,则利用虚拟页号计算出TLB组号,依次将得到的TLB对应组中的每一个页表项与虚拟页号中的相应位比较,判断TLB是否命中。

在一些可能的实现方式中,当虚拟地址为32位,内存页大小为64KB时,虚拟页号为虚拟地址的[31:16]位,页内偏移为虚拟地址的[15:0]位。

在一些可能的实现方式中,当虚拟地址为32位,内存页大小为64KB时,步骤S15中的页内偏移的预设位为[15:12]位。

第二方面,提供了一种用于GPU的内存页转换方法,包括以下步骤:

S21,输入访存请求的虚拟地址;

S22,根据输入的虚拟地址以及内存页大小计算虚拟页号和页内偏移;

S23,利用虚拟页号查找TLB,判断TLB是否命中,若TLB没有命中,则进行步骤S24,若TLB命中,则进行步骤S25;

S24,利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S22;

S25,判断命中的TLB的页表项对应的物理页是否嵌套有小物理页,若没有,则进行步骤S26,若有,则进行步骤S27;

S26,将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

S27,将虚拟地址中的页内偏移的预设位与当前TLB的页表项包含的嵌套页标记位进行比较,确定虚拟地址是否落在嵌套的小物理页内;若虚拟地址落在嵌套的小物理页内,则利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S22;若虚拟地址落在嵌套的小物理页外,则将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

其中,GPU的至少一个物理页中嵌套有一个小物理页,小物理页的内存小于物理页,TLB的页表项中配置有预设内存大小的嵌套页标记位,嵌套页标记位用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页。

本发明技术方案的主要优点如下:

本发明的用于GPU的内存页管理方法和内存页转换方法通过在内存较大的物理页中嵌套内存较小的小物理页,利用小物理页可以有效地利用内存较大的物理页中未被使用的空间,减少出现内部碎片的可能性,并且通过将内存较小的小物理页嵌套到内存较大的物理页中,能够有效避免大量空闲小页散落在内存空间中,减少出现外部碎片的可能性,提高内存空间的使用效率,降低存储成本;同时,在进行采用内存页嵌套的基础上,在TLB的页表项中增设嵌套页标记位,能够准确高效地判断访存请求是否命中TLB、以及物理页是否嵌套有小物理页,实现基于内存页嵌套的虚实地址转换。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为示例提供的一种64KB内存页对应的虚实地址转换过程示意图;

图2为本发明一实施例的用于GPU的内存页管理方法的流程图;

图3为本发明一实施例的虚实地址转换流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合附图,详细说明本发明一实施例提供的技术方案。

参见附图2,第一方面,本发明一实施例提供了一种用于GPU的内存页管理方法,该方法包括:

在至少一个物理页中嵌套一个小物理页,其中,小物理页的内存小于物理页;

在TLB的页表项中增加预设内存大小的嵌套页标记位,其中,嵌套页标记位用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页;

根据调整后的TLB进行虚实地址转换。

本发明一实施例通过在内存较大的物理页中嵌套内存较小的小物理页,利用小物理页可以有效地利用内存较大的物理页中未被使用的空间,减少出现内部碎片的可能性,并且通过将内存较小的小物理页嵌套到内存较大的物理页中,能够有效避免大量空闲小页散落在内存空间中,减少出现外部碎片的可能性,提高内存空间的使用效率,降低存储成本;同时,在进行采用内存页嵌套的基础上,在TLB的页表项中增设嵌套页标记位,能够准确高效地判断访存请求是否命中TLB、以及物理页是否嵌套有小物理页,实现基于内存页嵌套的虚实地址转换。

进一步地,用于嵌套小物理页的物理页的内存大小可以为64KB,物理页的内存大小为64KB表示仅选择GPU系统内存中的内存大小为64KB的物理页来嵌套小物理页,其中,用于嵌套小物理页的物理页的数量可根据实际程序开销和内存使用需求进行确定。

由于小物理页的内存小于物理页,在采用内存大小为64KB的物理页嵌套小物理页的基础上,小物理页的内存大小可以为4KB、8KB、16KB和32KB中任一种。例如,物理页可以嵌套内存大小为4KB的小物理页,也可以嵌套其他内存大小的小物理页,不同物理页所嵌套的小物理页的内存大小可以不相同。

进一步地,在采用内存大小为64KB的物理页嵌套内存大小为4KB、8KB、16KB和32KB中任一项的小物理页的基础上,为了准确高效地判断访存请求是否命中TLB、以及判断物理页是否嵌套有小物理页,本申请中,嵌套页标记位的内存大小为4个比特位,4个比特位可以被配置为用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页。

可选的,根据物理页是否嵌套有小物理页将嵌套页标记位的4个比特位配置为4’b0000、4’b0001、4’b0010、4’b0100或4’b1000,其中,当4个比特位配置为4’b0000时,表示物理页未嵌套小物理页,其中,当4个比特位配置为4’b0001时,表示物理页嵌套有内存大小为4KB的小物理页,其中,当4个比特位配置为4’b0010时,表示物理页嵌套有内存大小为8KB的小物理页,其中,当4个比特位配置为4’b0100时,表示物理页嵌套有内存大小为16KB的小物理页,其中,当4个比特位配置为4’b1000时,表示物理页嵌套有内存大小为32KB的小物理页。

进一步地,当一个虚拟内存地址到来时,该访存请求的虚拟地址访问TLB进行虚实地址转换,本发明一实施例中,当访存请求到来时,根据调整后的TLB进行虚实地址转换。

具体地,参见图3,根据调整后的TLB进行虚实地址转换,包括以下步骤:

S11,根据输入的虚拟地址以及内存页大小计算虚拟页号和页内偏移;

S12,利用虚拟页号查找TLB,判断TLB是否命中,若TLB没有命中,则进行步骤S13,若TLB命中,则进行步骤S14;

S13,利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S11;

S14,判断命中的TLB的页表项对应的物理页是否嵌套有小物理页,若没有,则进行步骤S15,若有,则进行步骤S16;

S15,将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

S16,将虚拟地址中的页内偏移的预设位与当前TLB的页表项包含的嵌套页标记位进行比较,确定虚拟地址是否落在嵌套的小物理页内;若虚拟地址落在嵌套的小物理页内,则利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S11;若虚拟地址落在嵌套的小物理页外,则将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址。

进一步地,步骤S12中,判断TLB是否命中,包括:

若TLB为全相联映射,则将TLB中的每一个页表项与虚拟页号进行依次比较,判断TLB是否命中;

若TLB为组相联映射,则利用虚拟页号计算出TLB组号,依次将得到的TLB对应组中的每一个页表项与虚拟页号中的相应位比较,判断TLB是否命中。

进一步地,当虚拟地址为32位,内存页大小为64KB时,虚拟页号为虚拟地址的[31:16]位,页内偏移为虚拟地址的[15:0]位,步骤S15中的页内偏移的预设位为[15:12]位。

进一步地,步骤S14中,可以通过TLB的页表项的嵌套页标记位来判断命中的TLB的页表项对应的物理页是否嵌套有小物理页。具体地,基于上述嵌套页标记位的4个比特位的具体配置,若嵌套页标记位全为0,则命中的TLB的页表项对应的物理页没有嵌套小物理页,若嵌套页标记位不全为0,则命中的TLB的页表项对应的物理页嵌套有小物理页。

第二方面,本申请一实施例还提供了一种用于GPU的内存页转换方法,该方法包括以下步骤:

S21,输入访存请求的虚拟地址;

S22,根据输入的虚拟地址以及内存页大小计算虚拟页号和页内偏移;

S23,利用虚拟页号查找TLB,判断TLB是否命中,若TLB没有命中,则进行步骤S24,若TLB命中,则进行步骤S25;

S24,利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S22;

S25,判断命中的TLB的页表项对应的物理页是否嵌套有小物理页,若没有,则进行步骤S26,若有,则进行步骤S27;

S26,将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

S27,将虚拟地址中的页内偏移的预设位与当前TLB的页表项包含的嵌套页标记位进行比较,确定虚拟地址是否落在嵌套的小物理页内;若虚拟地址落在嵌套的小物理页内,则利用PTW访问内存中存储的页表项,得到虚拟地址对应的页表项,并将得到的页表项放入TLB中,返回步骤S22;若虚拟地址落在嵌套的小物理页外,则将虚拟地址中的页内偏移地址与当前TLB的页表项包含的物理页号进行组合得到物理地址;

其中,GPU的至少一个物理页中嵌套有一个小物理页,小物理页的内存小于物理页,TLB的页表项中配置有预设内存大小的嵌套页标记位,嵌套页标记位用于表示当前TLB的页表项对应的物理页是否嵌套有小物理页、以及用于表示虚拟地址是否命中当前TLB的页表项对应的物理页。

本发明一实施例通过在内存较大的物理页中嵌套内存较小的小物理页,利用小物理页可以有效地利用内存较大的物理页中未被使用的空间,减少出现内部碎片的可能性,并且通过将内存较小的小物理页嵌套到内存较大的物理页中,能够有效避免大量空闲小页散落在内存空间中,减少出现外部碎片的可能性,提高内存空间的使用效率,降低存储成本;同时,在进行采用内存页嵌套的基础上,在TLB的页表项中增设嵌套页标记位,能够准确高效地判断访存请求是否命中TLB、以及物理页是否嵌套有小物理页,实现基于内存页嵌套的虚实地址转换。

可见,本发明一实施例提供的用于GPU的内存页管理方法和内存页转换方法,能够提高内存空间的使用效率,降低存储成本,减少多任务GPU中内存碎片化问题。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。

最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种设备节点配置方法、装置和电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类