CN116681578A - 内存管理方法、图形处理单元、存储介质、终端设备 - Google Patents

内存管理方法、图形处理单元、存储介质、终端设备 Download PDF

Info

Publication number
CN116681578A
CN116681578A CN202310968209.6A CN202310968209A CN116681578A CN 116681578 A CN116681578 A CN 116681578A CN 202310968209 A CN202310968209 A CN 202310968209A CN 116681578 A CN116681578 A CN 116681578A
Authority
CN
China
Prior art keywords
page
page table
memory management
address
memory
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.)
Granted
Application number
CN202310968209.6A
Other languages
English (en)
Other versions
CN116681578B (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.)
Li Computing Technology Shanghai Co ltd
Original Assignee
Li Computing Technology Shanghai Co ltd
Nanjing Lisuan 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 Li Computing Technology Shanghai Co ltd, Nanjing Lisuan Technology Co ltd filed Critical Li Computing Technology Shanghai Co ltd
Priority to CN202310968209.6A priority Critical patent/CN116681578B/zh
Publication of CN116681578A publication Critical patent/CN116681578A/zh
Application granted granted Critical
Publication of CN116681578B publication Critical patent/CN116681578B/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/60Memory management
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种内存管理方法、图形处理单元、存储介质、终端设备,内存管理方法包括:接收读请求或写请求,读请求或写请求包括虚拟地址;在页面目录中对虚拟地址进行命中测试,以得到命中结果,页面目录包括页表粒度指示信息,页表粒度指示信息用于指示分页粒度;根据命中结果在对应的页表中查找虚拟地址对应的物理地址,页表具有页表粒度指示信息指示的分页粒度。本申请技术方案能够升对内存管理的灵活性和高效性。

Description

内存管理方法、图形处理单元、存储介质、终端设备
技术领域
本申请涉及图形处理技术领域,尤其涉及一种内存管理方法、图形处理单元、存储介质、终端设备。
背景技术
电子设备可以使用虚拟存储器技术来管理存储器。虚拟存储器技术是指分离并使用由电子设备使用的存储器地址和实际存储器地址的方法。例如,虚拟存储器技术被实现为分页技术,该分页技术将整个存储器分为一定大小的页面(page),并将虚拟地址与物理地址相关联。内存管理单元(Memory Management Unit, MMU)位于处理器内部或外部,并在处理器访问内存时将虚拟地址转换为物理地址。MMU以页面为单位映射虚拟地址和物理地址,并在特殊的内存区域中将它们作为页表进行管理。MMU访问内存以了解该地址转换关系的映射关系。
现有技术中,页面的大小有4KB和64KB两种形式。传统的图形处理器(GraphicsProcessing Unit, GPU)页表管理有两类:一类是GPU只支持4KB页表而不支持多种页表的混合模式。另一类GPU虽然支持64KB页表,但是只支持单页表模式。在这种模式下,页表项(Page Table Entry,PTE)指向4KB页表或64KB页表之一。
但是,对于第一类页表管理方式,在GPU具有超大显存的情况下,过细粒度的管理会造成页表的内存流量(memory traffic)剧增,从而影响GPU的运行效率。对于第二类页表管理方式,页表之间的转换复杂,导致响GPU的运行效率降低。
发明内容
本申请能够升对内存管理的灵活性和高效性。
为了达到上述目的,本申请提供了以下技术方案:
第一方面,本申请提供了一种内存管理方法,内存管理方法包括:接收读请求或写请求,所述读请求或写请求包括虚拟地址;在页面目录中对所述虚拟地址进行命中测试,以得到命中结果,所述页面目录包括页表粒度指示信息,所述页表粒度指示信息用于指示分页粒度;根据所述命中结果在对应的页表中查找所述虚拟地址对应的物理地址,所述页表具有所述页表粒度指示信息指示的分页粒度。
可选的,一级页表的页表项指向具有不同分页粒度的零级页表。
可选的,覆盖同一虚拟地址范围的具有不同分页粒度的零级页表中的页表项分时有效。
可选的,所述在页面目录中对所述虚拟地址进行命中测试包括:根据所述虚拟地址对至少一级地址变换旁路缓冲中的页面目录项进行命中测试,所述地址变换旁路缓冲的页面目录项中包括所述页表粒度指示信息。
可选的,所述根据所述命中结果在对应的页表中查找所述虚拟地址对应的物理地址包括:若所述命中结果为命中,则根据所述一级地址变换旁路缓冲的页面目录项中的地址信息以及所述页表粒度指示信息确定至少一级页表的地址;根据所述虚拟地址对所述至少一级页表进行查询,获得所述物理地址。
可选的,采用统一缓存存储各个物理地址。
可选的,所述分页粒度包括4KB和64KB,指示64KB分页粒度的页面的多个页表中的物理地址在所述统一缓存中相邻排放。
第二方面,本申请还公开一种图形处理单元,图形处理单元包括:引擎,用于生成读请求或写请求,所述读请求或写请求包括虚拟地址;内存管理单元,用于执行所述内存管理方法的步骤。
可选的,图形处理单元包括:图形处理器集群,所述内存管理单元的输入端与所述图形处理器集群的输出端耦接;和/或,动态内存控制器,所述内存管理单元的输入端与所述动态内存控制器的输出端耦接。
第三方面,本申请提供了一种终端设备,其特征在于,包括第二方面所述的图形处理单元。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行所述内存管理方法的步骤。
与现有技术相比,本申请技术方案具有以下有益效果:
本申请技术方案中,接收读请求或写请求,读请求或写请求包括虚拟地址;在页面目录中对虚拟地址进行命中测试,以得到命中结果,页面目录包括页表粒度指示信息,页表粒度指示信息用于指示分页粒度;根据命中结果在对应的页表中查找虚拟地址对应的物理地址,页表具有页表粒度指示信息指示的分页粒度。本申请技术方案通过在页面目录中设置页表粒度指示信息来指示分页粒度,能够实现对具有不同分页粒度的页表的支持,无需复杂的操作即可实现对内存在不同分页粒度下的切换,提升了对内存管理的灵活性和高效性。
进一步地,本申请技术方案中,覆盖同一虚拟地址范围的具有不同分页粒度的零级页表中的页表项分时有效。本申请技术方案通过设置零级页表中的页表项分时有效,从而保证内存在不同分页粒度下的切换,保证了内存管理的高效性。
附图说明
图1是本申请实施例提供的一种内存管理方法的流程图;
图2是本申请实施例提供的一种多级TLB的示意图;
图3是本申请实施例提供的一种TLB的PDE的示意图;
图4是本申请实施例提供的一种不同级页表的示意图;
图5是本申请实施例提供的一种统一缓存中数据排列方式的示意图;
图6是本申请实施例提供的一种图形处理单元的结构图;
图7是本申请实施例提供的另一种图形处理单元的结构图。
具体实施方式
如背景技术中所述,对于第一类页表管理方式,在GPU具有超大显存的情况下,过细粒度的管理会造成页表的内存流量(memory traffic)剧增,从而影响GPU的运行效率。对于第二类页表管理方式,页表之间的转换复杂,导致响GPU的运行效率降低。
具体地,对于第二类页表管理方式,在单页表模式下,PageTablePageSize字段添加到字段DXGK_PTE,能够指示内核模式驱动程序相应页表的类型(使用64KB或4KB页面)。当以下条件成立时,内存管理器会选择在虚拟地址范围内使用64KB页表,仅将64KB对齐的分配映射到该范围:映射到该范围的所有分配的内存段支持64KB页面。当虚拟地址范围由64KB页面映射,并且上述条件不再成立时(例如,分配已提交到***内存段),显存管理器将从64 KB页表切换到4 KB页表。需要执行下面复杂的过程:挂起进程的所有上下文。 更新现有的PTE以指向4KB页面。驱动程序将获得UpdatePageTable页面操作。指向该页表的Level 1PTE将更新以反映新的页面大小(PageTablePageSize = DXGK_PTE_PAGE_TABLE_PAGE_4KB)。驱动程序将获得UpdatePageTable页面操作。 最后在恢复进程的所有上下文。
此外,在单页表模式下,从4KB PTE的页表转换为64KB PTE的页表时,需要当前连续16个4KB都是连续地址,实现难度较大。
本申请技术方案通过在页面目录中设置页表粒度指示信息来指示分页粒度,能够实现对具有不同分页粒度的页表的支持,无需复杂的操作即可实现对内存在不同分页粒度下的切换,提升了对内存管理的灵活性和高效性。
为了能够更好的理解本发明实施例,下面将对内存管理单元(Memory ManagementUnit, MMU)如何实现虚拟地址到内存的物理地址的映射做一个详细的介绍。先简单介绍一下虚拟存储器(virtual memory)的概念。本领域人员可以知道,程序要放到内存中运行。但随着程序规模的不断增大,内存容量很难容纳一个完整的程序,虚拟存储器的概念应运而生。虚拟存储器的基本思想是程序、数据和堆栈的总的大小可以超过物理 存储器的大小,操作***把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。例如,若一个计算机只有4M内存,当该计算机需要运行一个16MB的程序时,操作***可以通过选择确定将4M的程序内容缓存在内存中运行,并在需要时在内存和磁盘之间交换程序片段,这样就可以在一个只具有4M内存的计算机上运行16M的程序了。
本领域人员可以知道,在计算机***中,虚拟地址空间是进程能够访问的一段虚拟地址范围。虚拟地址空间的大小通常是由计算机的指令集体系结构(instruction setarchitecture)来确定的。例如,一个32位的GPU,提供的虚拟地址空间为0-0xFFFFFFFF(4G)。虚拟地址空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址。物理地址空间是指内存的物理地址范围。物理地址空间中的某一个地址我们称之为物理地址。通常,物理地址空间小于虚拟地址空间,物理地址空间可以映射到虚拟地址空间中。例如,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0-0xFFFFFFFF(4G),而物理地址空间范围是0x000000000-0x0FFFFFFF(256M)。
现有技术中,大多数机器均使用虚拟存储器,虚拟地址(或称线性地址)不是被直接送到内存地址总线上,而是送到内存管理单元 (Memory Management Unit,MMU),MMU把虚拟地址转换为物理地址。也就是说,MMU用于实现程序的虚拟地址到内存的物理地址的映射。
为了实现程序的虚拟地址到内存的物理地址的映射,MMU引入分页(paging)机制。具体地,虚拟地址空间以页(page)为单位被划分,可以将虚拟地址空间中的页称为虚拟页。相应的,物理地址空间也以页为单位被划分,可以将物理地址空间的页称为物理页(或称物理页框),其中,虚拟页和物理页的大小相同。
为使本申请的上述目的、特征和优点能够更为明显易懂,下面结合附图对本申请的具体实施例做详细的说明。
参见图1,内存管理方法的执行主体为MMU,也即由MMU执行下述各个步骤。当然可以理解的是,内存管理方法也可以由其他任意适当的主体来执行。
具体地,内存管理方法具体可以包括以下步骤:
步骤101:接收读请求或写请求,读请求或写请求包括虚拟地址;
步骤102:在页面目录中对虚拟地址进行命中测试,以得到命中结果,页面目录包括页表粒度指示信息,页表粒度指示信息用于指示分页粒度;
步骤103:根据命中结果在对应的页表中查找虚拟地址对应的内存中的物理地址,页表具有页表粒度指示信息指示的分页粒度。
可以理解的是,在具体实施中,上述方法的各个步骤可以采用软件程序的方式实现,该软件程序运行于芯片或芯片模组内部集成的处理器中。该方法也可以采用软件结合硬件的方式实现,本申请不作限制。
与现有的虚拟内存管理为物理地址的过程不同的是,本发明实施例可以通过页面目录(page entry)中的页表粒度指示信息灵活地选择分页粒度。以分页粒度包括4KB和64KB为例,最终转换得到的物理地址的划分单位可以灵活地在4KB和64KB之间切换。并且,通过页表粒度指示信息完成不同页表之间的切换,无需对页表进行二次查询,避免增加访问延迟,提升GPU性能。
此外,在GPU支持多种分页粒度的情况下,在分配缓存(cache allocation)时,通过页表粒度指示信息能够确认当前使用的分页粒度,从而能够准确地分配出对应数量的缓存线(CacheLine),进一步保证内存管理的效率。
本发明实施例中,对于内存中同一物理地址范围,同时具有多个具有不同分页粒度的页表指向该地址范围。以分页粒度包括4KB和64KB为例,则4KB页表和64KB页表同时指向同一地址范围,也就是说,同一地址范围被4KB页表和64KB页表这两种页表管理。
在一个具体应用场景中,选择具有哪种分页粒度的页表来进行地址映射,可以由操作***动态管理,操作***的根据动态切换而通过页表粒度指示信息通知MMU选择相应的页表进行地址映射。通过上述具有多个具有不同分页粒度的页表指向同一地址范围的方式,能够使得同一地址的映射粒度切换可以迅速完成,降低了页表之间切换的复杂度,提升了页表切换效率,进而提升GPU的运行效率。
在步骤101的具体实施中,MMU可以接收来自GPU引擎(Engine)的读请求或写请求。其中,读请求用于请求从内存中读取数据,写请求用于请求向内存中写入数据。读请求或写请求均携带有虚拟地址,该虚拟地址可以被转换为内存的物理地址,该物理地址可以用于数据的读取或写入。
在步骤102的具体实施中,MMU可以在页面目录中对虚拟地址进行命中测试。具体地,页面目录中包括多个虚拟地址及其对应的物理地址,那么通过将读请求或写请求中的虚拟地址对页表目录进行命中测试,可以确定该虚拟地址对应的物理地址。
在一个非限制性的实施例中,MMU采用多级页表的形式实现虚拟地址到内存的物理地址的映射。具体的,在二级管理模式下,这种映射方式依次包括对页目录和页表的查询。其中,页目录中存储有多个页表的基地址,每个页表中存储有多个页表项。页表项中记录有虚拟地址所对应物理页的物理基地址。
在一个非限制性的实施例中,为了减少发生的延迟,在MMU中使用转换后备缓冲区(Transfer Look-aside Table, TLB),也可以称为内存管理旁路缓冲器的缓存结构。如果在TLB中确认了虚拟页面和物理页面之间的关系,即当发生TLB命中时,MMU可以在不访问内存中页表的情况下转换地址,从而极大地提升性能。
具体实施中,MMU根据虚拟地址对至少一级TLB中的页面目录项页目录项(pagedirectory entry,PDE)同时进行命中测试(hit test)。其中,页面目录项PDE指向2M存储块(BLOCK)或者页表。
在一个具体实施例中,TLB也可以有多级,如图2所示,MMU可以同时对多级TLB中的页面目录项PDE进行命中测试。若一级TLB命中(hit),则可以直接利用虚拟地址进行最终PTE的查询。
例如,使用4KB为分页粒度的页存储页表时,为了能够完成49bit的虚拟地址解析,可以采用5级页表,也即四级TLB、三级TLB、二级TLB、一级TLB以及PTE。
具体请参照图3所示的一级TLB的PDE,一级TLB的PDE中包括页表粒度指示信息,用于指示分页粒度,例如4KB或64KB。相应地,一级TLB的PDE中还分别包括4KB地址和64KB地址。
PDE中还包括块/页指示信息,用于指示选择页(page)地址还是块(block)地址。其他信息包含的当前页的有效性、安全、目标区域、稀疏等标识。
进一步地,MMU根据一级TLB的PDE中的上述地址信息以及页表粒度指示信息确定至少一级页表的地址。MMU根据页表的地址从内存中访问页表,然后MMU根据虚拟地址对至少一级页表进行查询,获得对应的物理地址。
具体请参照图4,在多级页表中,除了最后一级页表(也即零级页表)的PTE是直接指向内存的页外,其他级的页表的页表项都是指向下一级页表首地址的,因此其他级的页表被称为分页结构(paging structure)。
本发明实施例中,一级页表的PTE同时指向一个4KB零级页表和一个64KB零级页表。4KB零级页表中的物理地址的分页粒度为4KB,相应地,64KB零级页表中的物理地址的分页粒度为64KB。
进一步地,覆盖同一虚拟地址范围的具有不同分页粒度的零级页表中的PTE分时有效。具体地,一级页表中条目中的两个指针都可能设置了有效标志,但是覆盖相同虚拟地址范围的零级页表中的条目不能同时有效。例如,当一个被4KB PTE覆盖的分配被放置在支持64KB页大小的存储器段中时,64KB PTE将变为无效,对应的4KB PTE将变为有效。
在一个非限制性的实施例中,采用统一缓存(unified cache)存储各个物理地址,统一的设计可以方便实现64KB和4KB页表的灵活切换。
进一步地,如图5所示,指示64KB分页粒度的页面的多个页表的物理地址在所述统一缓存中相邻排放。
本发明实施例为了最大程度的提高缓存的命中率,存放64KB的页表地址可以紧密排放,在同样的缓存大小的情况下,能够实现16倍的覆盖率提升,以及提升缓存的容量和命中率,从而进一步提高MMU内存管理的效率。
继续参照图1,在步骤103的具体实施中,若在页面目录中,如在PTE中的命中结果为命中,则可以确定虚拟地址对应的物理地址。MMU将该物理地址返回至GPU引擎,以供GPU引擎在该物理地址指向的内存空间中进行相应的读操作或写操作。
在一个具体实施例中,若在页面目录中,如在PTE中的命中结果为未命中,则基于一级TLB指定的分页粒度完成PTE统一缓存的分配(allocation)请求,并将读请求或写请求放入等待的队列。
在一个具体实施例中,如果PTE对应的一级TLB未命中,则需要根据一级TLB的上级TLB,如四级TLB/三级TLB/二级TLB的信息恢复对应的一级TLB的物理地址,并发出相应的未命中请求。如果在转换一级TLB所需的地址时,四级TLB/三级TLB/二级TLB 中所需的信息也有未命中,需要按照顺序逐级发出未命中请求,获取地址的顺序,是四级TLB/三级TLB/二级TLB/一级TLB/PTE。
在一个具体的应用场景中,虚拟地址中包含着找到物理地址的信息。例如,虚拟地址的大小为4个字节(32bit),通常该虚拟地址可以被分为3个部分:
第22位到第31位:最高10位对应页目录中的索引;
第12位到第21位:对应页表中的索引;
第0位到第11位:低12位为页内偏移。
本领域人员可以知道,每个进程都有其各自专用的虚拟地址空间以及用于寻址的页目录,***内所有进程共享内核的虚拟地址空间以及内核的页目录,每个进程可以通过***调用进入内核。在GPU中存在一个用于保存页目录基地址的寄存器CR3。在进程调度时,寄存器CR3指向当前进程的页目录基地址。在进程切换时,寄存器CR3切换当前所指向的页目录基地址。对于一个要转换成物理地址的虚拟地址,首先根据寄存器CR3中的值找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项 PDE,也可以称为页面目录,PDE中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(Page Table Entry,PTE)。页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
通常,一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个页表也有1024项,虚拟地址中间部分的10bit,刚好用于索引这1024个页表项。虚拟地址最低的12bit(2的12次方等于4096),作为页内偏移,刚好可以索引4KB,也就是一个物理页中的每个字节。
本领域人员可以知道,32bit的指针的寻址范围为0x00000000-0xFFFFFFFF(4GB)。也就是说,一个32bit的指针可以寻址整个4GB地址空间的每一个字节。一个页表项可以负责4K的地址空间和物理内存的映射。一个页表1024项,则一个页表可以负责1024×4k=4M的地址空间的映射。一个页目录项,对应一个页表。一个页目录有1024项,也就对应着1024个页表,每个页表负责4M地址空间的映射,则1024个页表负责1024×4M=4G的地址空间映射。一个进程有一个页目录。所以以页为单位,页目录和页表可以保证4G的地址空间中的每页和物理内存的映射。
每个进程都有自己的4G地址空间,从0x00000000-0xFFFFFFFF。通过每个进程自己的一套页目录和页表来实现进程的虚拟地址到内存的物理地址的映射。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。
关于本实施例的更多具体实施方式可以参照前述实施例,此处不再赘述。
请参照图6,本申请还公开一种图形处理单元60。图形处理单元60可以包括:
引擎601,用于生成读请求或写请求,读请求或写请求包括虚拟地址。
内存管理单元602,用于执行内存管理。具体地,内存管理单元602可以执行前述实施例中内存管理方法的各个步骤。
本实施例中,引擎601将读请求或写请求发送给内存管理单元602。内存管理单元602将虚拟内存管理为物理地址并返回至引擎601。引擎601利用该物理地址进行数据的读取或写入。
本实施例通过在页面目录中设置页表粒度指示信息来指示分页粒度,能够实现对具有不同分页粒度的页表的支持,无需复杂的操作即可实现对内存在不同分页粒度下的切换,提升了对内存管理的灵活性和高效性。
本实施例中,GPU可以包括多组内存管理单元602,内存管理单元602所处位置及数目可以位于GPU的不同模块中。具体请参照图7,内存管理单元602可以位于图形处理器集群(Graphic Processor Cluster, GPC)603的出口,也可以位于动态内存控制器(DynamicMemory Controller, DMC)604的出口。
在一个具体实施例中,图形处理单元60还可以包括图形处理器集群603。内存管理单元602的输入端与图形处理器集群603的输出端耦接。换言之,内存管理单元602可以将来自图形处理器集群603的虚拟地址转换为物理地址,并将物理地址返回至图形处理器集群603。例如,图形处理器集群603可以将其运算结果写入该物理地址指示的内存空间中。
在一个具体实施例中,图形处理单元60还可以包括动态内存控制器604。内存管理单元602的输入端与动态内存控制器604的输出端耦接。换言之,内存管理单元602可以将来自动态内存控制器604的虚拟地址转换为物理地址,并将物理地址返回至动态内存控制器604。例如,动态内存控制器604可以从该物理地址指示的内存空间中读物数据并输出至外部设备。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端设备的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端设备内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端设备内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
本申请实施例还公开了一种存储介质,所述存储介质为计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时可以执行图1中所示方法的步骤。所述存储介质可以包括只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁盘或光盘等。存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
本申请实施例还公开了一种终端设备,所述终端设备包括前述的图形处理单元;或者,终端设备包括存储器和处理器,存储器上存储有可在处理器上运行的计算机程序,处理器运行计算机程序时执行前述指令编译方法的步骤。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和***,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。
虽然本申请披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (11)

1.一种内存管理方法,其特征在于,包括:
接收读请求或写请求,所述读请求或写请求包括虚拟地址;
在页面目录中对所述虚拟地址进行命中测试,以得到命中结果,所述页面目录包括页表粒度指示信息,所述页表粒度指示信息用于指示分页粒度;
根据所述命中结果在对应的页表中查找所述虚拟地址对应的内存中的物理地址,所述页表具有所述页表粒度指示信息指示的分页粒度。
2.根据权利要求1所述的内存管理方法,其特征在于,一级页表的页表项指向具有不同分页粒度的零级页表。
3.根据权利要求2所述的内存管理方法,其特征在于,覆盖同一虚拟地址范围的具有不同分页粒度的零级页表中的页表项分时有效。
4.根据权利要求1所述的内存管理方法,其特征在于,所述在页面目录中对所述虚拟地址进行命中测试包括:
根据所述虚拟地址对至少一级地址变换旁路缓冲中的页面目录项进行命中测试,所述地址变换旁路缓冲的页面目录项中包括所述页表粒度指示信息。
5.根据权利要求4所述的内存管理方法,其特征在于,所述根据所述命中结果在对应的页表中查找所述虚拟地址对应的物理地址包括:
若所述命中结果为命中,则根据所述一级地址变换旁路缓冲的页面目录项中的地址信息以及所述页表粒度指示信息确定至少一级页表的地址;
根据所述虚拟地址对所述至少一级页表进行查询,获得所述物理地址。
6.根据权利要求1所述的内存管理方法,其特征在于,采用统一缓存存储各个物理地址。
7.根据权利要求6所述的内存管理方法,其特征在于,所述分页粒度包括4KB和64KB,指示64KB分页粒度的页面的多个页表中的物理地址在所述统一缓存中相邻排放。
8.一种图形处理单元,其特征在于,包括:
引擎,用于生成读请求或写请求,所述读请求或写请求包括虚拟地址;
内存管理单元,用于执行权利要求1至7任一项所述内存管理方法的步骤。
9.根据权利要求8所述的图形处理单元,其特征在于,包括:
图形处理器集群,所述内存管理单元的输入端与所述图形处理器集群的输出端耦接;
和/或,动态内存控制器,所述内存管理单元的输入端与所述动态内存控制器的输出端耦接。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至7任一项中所述内存管理方法的步骤。
11.一种终端设备,其特征在于,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行权利要求1至7任一项中所述内存管理方法的步骤,或者包括权利要求8或9所述的图形处理单元。
CN202310968209.6A 2023-08-02 2023-08-02 内存管理方法、图形处理单元、存储介质、终端设备 Active CN116681578B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310968209.6A CN116681578B (zh) 2023-08-02 2023-08-02 内存管理方法、图形处理单元、存储介质、终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310968209.6A CN116681578B (zh) 2023-08-02 2023-08-02 内存管理方法、图形处理单元、存储介质、终端设备

Publications (2)

Publication Number Publication Date
CN116681578A true CN116681578A (zh) 2023-09-01
CN116681578B CN116681578B (zh) 2023-12-19

Family

ID=87785907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310968209.6A Active CN116681578B (zh) 2023-08-02 2023-08-02 内存管理方法、图形处理单元、存储介质、终端设备

Country Status (1)

Country Link
CN (1) CN116681578B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
CN103793331A (zh) * 2012-10-31 2014-05-14 安凯(广州)微电子技术有限公司 一种物理内存管理方法及装置
CN105247494A (zh) * 2013-05-06 2016-01-13 微软技术许可有限责任公司 因指令集而异的执行隔离
US20160378683A1 (en) * 2015-06-26 2016-12-29 Intel Corporation 64KB Page System that Supports 4KB Page Operations
CN111512290A (zh) * 2017-12-27 2020-08-07 华为技术有限公司 文件页表管理技术
CN113094300A (zh) * 2019-12-23 2021-07-09 英特尔公司 页表映射机制
CN114546898A (zh) * 2022-03-04 2022-05-27 重庆大学 一种tlb管理方法、装置、设备及存储介质
CN114925001A (zh) * 2022-05-18 2022-08-19 上海壁仞智能科技有限公司 处理器、页表预取方法、电子设备
CN115292214A (zh) * 2022-08-11 2022-11-04 海光信息技术股份有限公司 页表预测方法、存储访问操作方法、电子装置和电子设备
CN115658564A (zh) * 2022-10-31 2023-01-31 龙芯中科技术股份有限公司 地址变换高速缓存控制方法、装置、设备及介质
CN115757260A (zh) * 2023-01-09 2023-03-07 摩尔线程智能科技(北京)有限责任公司 数据交互方法、图形处理器及图形处理***
CN115760548A (zh) * 2022-11-17 2023-03-07 上海天数智芯半导体有限公司 一种内存管理装置、图像处理芯片以及地址转换方法
CN116383102A (zh) * 2023-05-30 2023-07-04 北京微核芯科技有限公司 转译后备缓冲器访问方法、装置、设备及存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
CN103793331A (zh) * 2012-10-31 2014-05-14 安凯(广州)微电子技术有限公司 一种物理内存管理方法及装置
CN105247494A (zh) * 2013-05-06 2016-01-13 微软技术许可有限责任公司 因指令集而异的执行隔离
US20160378683A1 (en) * 2015-06-26 2016-12-29 Intel Corporation 64KB Page System that Supports 4KB Page Operations
CN111512290A (zh) * 2017-12-27 2020-08-07 华为技术有限公司 文件页表管理技术
CN113094300A (zh) * 2019-12-23 2021-07-09 英特尔公司 页表映射机制
CN114546898A (zh) * 2022-03-04 2022-05-27 重庆大学 一种tlb管理方法、装置、设备及存储介质
CN114925001A (zh) * 2022-05-18 2022-08-19 上海壁仞智能科技有限公司 处理器、页表预取方法、电子设备
CN115292214A (zh) * 2022-08-11 2022-11-04 海光信息技术股份有限公司 页表预测方法、存储访问操作方法、电子装置和电子设备
CN115658564A (zh) * 2022-10-31 2023-01-31 龙芯中科技术股份有限公司 地址变换高速缓存控制方法、装置、设备及介质
CN115760548A (zh) * 2022-11-17 2023-03-07 上海天数智芯半导体有限公司 一种内存管理装置、图像处理芯片以及地址转换方法
CN115757260A (zh) * 2023-01-09 2023-03-07 摩尔线程智能科技(北京)有限责任公司 数据交互方法、图形处理器及图形处理***
CN116383102A (zh) * 2023-05-30 2023-07-04 北京微核芯科技有限公司 转译后备缓冲器访问方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王孝远: "异构内存混合粒度页面管理机制研究", 中国博士学位论文全文数据库 信息科技辑, no. 01, pages 137 - 28 *

Also Published As

Publication number Publication date
CN116681578B (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
US8799621B2 (en) Translation table control
US5119290A (en) Alias address support
US5956756A (en) Virtual address to physical address translation of pages with unknown and variable sizes
US8151085B2 (en) Method for address translation in virtual machines
US8966219B2 (en) Address translation through an intermediate address space
US5752275A (en) Translation look-aside buffer including a single page size translation unit
US20210089470A1 (en) Address translation methods and systems
CN112631961B (zh) 一种内存管理单元、地址转译方法以及处理器
JP2012532381A (ja) 凝集された小さいページを用いて拡張されたページサイズ
US11803482B2 (en) Process dedicated in-memory translation lookaside buffers (TLBs) (mTLBs) for augmenting memory management unit (MMU) TLB for translating virtual addresses (VAs) to physical addresses (PAs) in a processor-based system
US20130111132A1 (en) Cache Memory That Supports Tagless Addressing
KR960001945B1 (ko) 우선변환참조버퍼에서 적중수를 증가시키기 위한 장치
US7024536B2 (en) Translation look-aside buffer for improving performance and reducing power consumption of a memory and memory management method using the same
CN116681578B (zh) 内存管理方法、图形处理单元、存储介质、终端设备
EP0674269B1 (en) Translation mechanism for input/output addresses
US10817433B2 (en) Page tables for granular allocation of memory pages
CN114595187A (zh) 执行地址转换的片上***及其操作方法
US20100058025A1 (en) Method, apparatus and software product for distributed address-channel calculator for multi-channel memory
US7293157B1 (en) Logically partitioning different classes of TLB entries within a single caching structure
US20040117583A1 (en) Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme
WO2023064609A1 (en) Translation tagging for address translation caching
CN117453581A (zh) 地址映射的方法、内存管理单元、设备、存储介质
CN114461391A (zh) 一种可重映射的gpu主存访问管理方法和***
WO2023064590A1 (en) Software indirection level for address translation sharing
CN112306392A (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
TR01 Transfer of patent right

Effective date of registration: 20240521

Address after: 201207 Pudong New Area, Shanghai, China (Shanghai) free trade trial area, No. 3, 1 1, Fang Chun road.

Patentee after: Li Computing Technology (Shanghai) Co.,Ltd.

Country or region after: China

Address before: Room 2794, Hatching Building, No. 99 Tuanjie Road, Nanjing Area, Nanjing (Jiangsu) Pilot Free Trade Zone, Jiangsu Province, 210031

Patentee before: Nanjing Lisuan Technology Co.,Ltd.

Country or region before: China

Patentee before: Li Computing Technology (Shanghai) Co.,Ltd.