CN118093450A - 通过优化tlb提高mcm gpu地址翻译效率的方法 - Google Patents
通过优化tlb提高mcm gpu地址翻译效率的方法 Download PDFInfo
- Publication number
- CN118093450A CN118093450A CN202410148374.1A CN202410148374A CN118093450A CN 118093450 A CN118093450 A CN 118093450A CN 202410148374 A CN202410148374 A CN 202410148374A CN 118093450 A CN118093450 A CN 118093450A
- Authority
- CN
- China
- Prior art keywords
- pte
- tlb
- gpu
- address
- mcm
- 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
Links
- 238000013519 translation Methods 0.000 title claims abstract description 47
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 102100030453 Hemoglobin subunit mu Human genes 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 101000985296 Homo sapiens Neuron-specific calcium-binding protein hippocalcin Proteins 0.000 description 1
- 101000935117 Homo sapiens Voltage-dependent P/Q-type calcium channel subunit alpha-1A Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 241000428919 Sweet potato mosaic virus Species 0.000 description 1
- 102100025330 Voltage-dependent P/Q-type calcium channel subunit alpha-1A Human genes 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 229960000074 biopharmaceutical Drugs 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- FFNMBRCFFADNAO-UHFFFAOYSA-N pirenzepine hydrochloride Chemical compound [H+].[H+].[Cl-].[Cl-].C1CN(C)CCN1CC(=O)N1C2=NC=CC=C2NC(=O)C2=CC=CC=C21 FFNMBRCFFADNAO-UHFFFAOYSA-N 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种通过优化TLB提高MCM GPU地址翻译效率的方法,该方法在构建页表时,通过将连续的虚拟页与连续的物理页进行匹配,得到PTE序列,再将每一段连续的PTE序列中的虚拟页地址信息以及其对应的物理页地址信息同时存储在对应的单个TLB条目中,达到扩大TLB容量的目的,从而减少L2TLB未命中率,提高了MCM GPU的整体性能。本发明的方法可以在不采用大页的情况下提升TLB的容量,也能解决一定程度的TLB强制缺失问题,同时利用了MCM GPU的互连特性,允许L1TLB未命中请求通过GPM之间的Package互连发送到远程GPM的L2TLB,进一步扩大了TLB容量,提高了地址翻译效率。
Description
技术领域
本发明涉及GPU技术领域,特别是涉及一种通过优化TLB提高MCM GPU地址翻译效率的方法。
背景技术
在当今社会中,很多行业都进入了大数据和人工智能时代,如自动驾驶、云计算、生物制药等。这些行业都需要极大的算力去处理海量的数据,图形处理器(GraphicsProcessing Unit,GPU)作为其中一种通用的计算平台,因其具有大规模的数据吞吐量和并行计算能力,也得到了飞速的发展与进步。GPU计算能力的增长是通过在芯片中集成越来越多的晶体管来实现的。然而,随着摩尔定律的放缓和集成电路制造工艺的限制,构建一个大面积的单片单体的GPU变得非常困难。为了应对这种挑战,MCM GPU(Multi-Chiplet-ModuleGPU)的架构设计被提出并被业界采用。MCM GPU设计采用了一种异构架构,整个GPU可以封装集成多个小型的芯片模块(也称为Chiplet或GPM)。每个GPM的工作方式和结构类似于单个GPU,不同的是GPM是通过一种package封装的新型互连方式进行连接,相比多GPU通过PCIe连接具有低延迟、高带宽的特点。MCM技术极大地提高了GPU的可扩展性,但同时也存在着性能的瓶颈。
在当今GPU平台中,GPU供应商在编译器和运行时驱动程序中引入了许多高级功能,以减轻程序员的工作量,例如CUDA术语中的统一内存(Unified Memory,UM)或OpenCL术语中的共享虚拟内存(SharedVirtual Memory,SVM)。在MCM GPU平台中也是如此,通过UM或SVM,MCM GPU的驱动程序负责管理所有GPM的内存,使得程序员可以像在单个GPU上那样编程,从而免除了程序员管理内存以及在GPM之间移动数据的负担。为了实现上述功能,MCMGPU需要各种硬件和软件的支持。在硬件方面,引入了输入输出内存管理单元(IOMMU)来处理GPU发出的请求,进行页表的遍历,将请求中的虚拟地址转换成物理地址。除此之外GPU还配备了多级翻译后备缓冲区(Translation Lookaside Buffers,TLBs),用于保存从页表中获取的页表项。软件支持包括统一内存API,程序员调用这些API来处理运行时的不同任务,如内存分配和页面迁移。
MCM GPU会并行处理大量的访存指令,每一个访存指令中携带的虚拟地址都要先翻译成物理地址。具体来说,翻译过程可能需要经过多个阶段,首先要经过多级TLB的查找(L1 TLB和L2 TLB),在TLB全部miss的情况下,翻译请求要通过PCIe访问CPU端的IOMMU,进行页表的遍历,获取所需的物理地址信息,这是一个非常耗时的过程,会显著影响性能。因此必须提出一些能提高地址转换效率的技术方法,从而提升整体的性能。
一种可行的思路是针对TLB的容量进行优化来提升地址转换的效率。在现代操作系统的支持下,常见的优化TLB容量的方法是使用大页(Large Page)的方式。通常操作系统默认的page的大小是4KB,通过将page的大小调大(如32KB,2MB等)可以使得一个page中存储更大的连续地址空间内的数据,而TLB每一个条目(Entry)中记录的是一个虚拟页和对应的物理页的地址映射信息,所以TLB的每个条目的容量也会变大。因此在TLB条目数量不变的情况下使用大页也会增加TLB的容量。类似地,也可以通过在硬件设计的时候考虑添加更多的TLB条目数量来增加TLB的容量。
使用大页的方法虽然可以提高TLB的容量,但是在MCM GPU平台中,多个GPM模块之间是通过package进行互连并进行数据传输的,延迟要大于片上互连,所以存在着非一致性内存访问(Non-Uniform MemoryAccess,NUMA)效应。在unified-memory的统一内存管理下,一个GPM内存区域上的每个页中数据可能会被多个GPM访问。页越大,被多个GPM访问的概率就越大,如果没有很好的调度策略或者不允许进行页迁移(Page Migration),页中数据被多个GPM请求时会因为NUMA效应的存在产生较多的额外延迟。如果允许页迁移,大页的迁移又要占用更长的搬运时间和传输带宽,同时可能造成频繁搬运的结果。另外单纯的增加TLB的条目数在实际中会造成较大的硬件开销,并且无法解决TLB的强制缺失(CompulsoryMiss),因为有再多条目的TLB在初始状态也是空的。
英文会议文献["Trans-FW:Short Circuiting Page Table Walk in Multi-GPUSystems via Remote Forwarding,"2023IEEE International Symposium on High-Performance ComputerArchitecture(HPCA),Montreal,QC,Canada,2023,pp.456-470,doi:10.1109/HPCA56546.2023.10071054.]中提出了另外一种名为Trans-FW的方法,用来提升多GPU系统平台中的地址翻译效率。该方法主要思路是共享多个GPU之间存储的翻译信息,在适宜时,通过实现远程转发请求来减少地址翻译的耗时。具体来说,在多GPU平台下,当一个GPU中的某个请求miss了所有的TLBs后,这个请求会通过PCIe被转发到IOMMU等待进行页表的遍历,获取最终所需的对应物理地址信息。多GPU中的数据请求量相比单GPU要更多,而IOMMU又是集中式的单元,会被所有的GPU竞争资源的使用,再加上IOMMU遍历页表的高额延迟,这就造成转发到IOMMU的请求可能需要等待很长时间才能够获取到最终的物理地址信息。而Trans-FW在请求通过PCIe被转发到缓冲区后,在被IOMMU处理之前先去查找一个额外增加的特殊硬件存储器,这个存储器记录了每个GPU中都存储了哪些信息,如果查找的结果表明某个远程GPU中存储了当前请求中需要的数据,那么就将该请求旁路掉IOMMU,转发到远程GPU来满足当前的翻译请求,从而避免了在内存管理单元(IOMMU)中的延迟。这种方法旨在减少遍历页表的等待时间和内存访问次数,提高整体性能。
Trans-FW方法针对的是多GPU平台,缩短的是当每个GPU转发出的请求通过PCIe发送到IOMMU之后遍历页表的延迟,这种方法下每个请求依然都要经过PCIe,不能减少TLB发送到IOMMU请求的数量,即无法优化TLB到IOMMU的总延迟。
发明内容
鉴于此,针对现有中存在的问题,本发明提供一种针对MCM GPU计算平台在统一虚拟内存下的通过优化TLB提高MCM GPU中地址翻译效率的方法。
为解决上述问题,本发明采取如下的技术方案:
一种通过优化TLB提高MCM GPU地址翻译效率的方法,所述方法在构建页表时,将连续的虚拟页与连续的物理页进行匹配,得到一段连续的PTE序列,将每一段连续的PTE序列中的虚拟页地址信息以及所述虚拟页地址信息对应的物理页地址信息同时存储在对应的单个TLB条目中,并在每一个PTE的未使用的比特位中引入连续性位和标记位,其中连续性位用于记录以当前PTE为首的最长的连续PTE序列中的PTE数量,标记位包含两个比特,一个比特用于指示当前PTE是否在一个连续的PTE序列中,另一个比特用于指示当前PTE是否是其所在的连续PTE序列中的第一个PTE;
在MCM GPU中,当程序的访存指令产生的地址翻译请求在L1 TLB中发生未命中时,执行访问查找L2 TLB的流程,所述访问查找L2 TLB的流程包括以下步骤:
S1:以地址翻译请求中虚拟地址的中间位作为索引,定位要查找TLB中的哪一个组;
S2:并行查找组中的所有路,每一个路对应于一个TLB条目,并判断当前请求的虚拟地址中的ReqVPT是否处于TLB VPT至TLB VPT加上连续性位的值与页大小乘积的范围内,若是,则视地址翻译请求命中了L2 TLB,执行步骤S3;否则,执行步骤S5;
S3:计算Req VPT和TLB VPT的差值,再将计算得到的差值加到命中的TLB条目所储存的物理页的物理地址上,得到请求所需要的实际物理页的物理地址;
S4:结合实际物理页的物理地址和虚拟地址中的偏移量,进行虚拟地址到物理地址的转换,最终得到地址翻译请求中虚拟地址所对应的物理地址;
S5:根据LRU策略选择一个victim TLB条目,并通过PCIe访问CPU端的IOMMU,从页表中获取相应的PTE,并将获取的PTE返回到TLB,完成地址翻译请求中虚拟地址到物理地址的转换,当根据PTE中的标记位判断从页表中获取的PTE位于连续的PTE序列中时,获取并返回该连续PTE序列中的第一个PTE到TLB。
与现有技术相比,本发明具有如下的有益效果:
本发明通过在构建页表时合并连续的页表项,并对TLB进行轻微的硬件补充设计即增加TLB条目的硬件比特位,使其能够存储获取到的合并后的页表项,从而达到扩大一个GPM中TLB的容量的目的,再利用不同GPM之间高带宽、低延迟的互连网络将不同GPM的TLB设计成共享模式,从而扩大整体TLB的容量,达到提升TLB命中率的目的。本发明的方法可以在不采用大页的情况下提升TLB的容量,也能解决一定程度的TLB强制缺失问题,同时减少了TLB发送到IOMMU请求的数量,即减少了TLB到IOMMU的总延迟,进一步提高地址翻译效率。
附图说明
图1为现有技术中MCM GPU内部系统结构以及地址翻译工作流程的示意图;
图2为采用本发明的方法对L2 TLB进行优化后翻译请求查找TLB的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为现有技术中MCM GPU内部系统结构以及地址翻译工作流程的示意图。图1展示了MCM GPU系统中的内部结构以及一个内存访问请求中的虚拟地址翻译成物理地址的工作流程,工作流程具体包括:
(1)内部结构:MCM-GPU由多个互连的芯片模块(GPMs)组成,通过使用硅垫片或基板等技术将模块集成在一个封装(Package)中。如图1所示,典型的MCM GPU包括4个GPM。这些GPM通过封装内的Intra-Package X-Bar互连,提供高带宽和低延迟连接。每个MCM GPU都有一个命令处理器(Command Processor,CP)与驱动程序通信,以及一个直接内存访问引擎(Direct MemoryAccess,DMA),负责在各个GPM的内存区域之间传输数据。在CP和DMA的帮助下,所有GPM协同工作,表现为一个单一GPU。每个GPM包含一部分计算和存储资源,其中包括多个计算单元(Compute Unit,CU)。每个CU包含多个SIMD(Single Instruction MultipleData)单元、一个L1数据缓存(L1 cache)和一个L1 TLB。一个CU内的SIMD单元通常以锁步方式(lock-step)执行一组线程(32-64个)。为了方便编程,GPU kernel程序中的所有线程被划分为合作线程阵列(CTA),也称为工作组或线程块。每个GPM拥有由所有CU共享的L2数据缓存bank和一块单个的L2 TLB。L2数据缓存bank通过内存控制器连接到堆叠的高速带宽内存(High Bandwidth Memory,HBM)。MCM GPU通常逻辑上共享GPM间的L2缓存和HBM,以聚合缓存和内存容量。在这种情况下,一个GPM上执行的线程可以通过远程直接内存访问单元(Remote Direct MemoryAccess,RDMA)向其他GPM发送远程内存的数据访问请求。然而,远程访问必须通过GPM间的封装链接,这给内存系统带来非一致性内存访问(NUMA)效应。
(2)工作流程:计算单元CU中执行到访存指令时,指令中的虚拟页地址需要首先翻译成物理页地址。首先向CU中的L1 TLB发送翻译请求查找其中是否存储了当前请求中虚拟页地址所对应的物理地址,如果L1 TLB命中,直接返回给CU,CU利用这个物理地址去访问内存获取访存指令所需要的数据。如果L1 TLB未命中,翻译请求将被发送到GPM中的L2 TLB(对应于图1中的过程①)。如果L2 TLB也未命中,该请求将通过PCIe直接转发到位于CPU端IOMMU上的缓冲区(对应于图1中的过程②),等待一个可用线程来遍历内存中的页表(Pagetable)获取这个请求需要的物理地址(对应于图1中的过程③)。②③过程的大延迟开销是整体的性能瓶颈,本发明主要是提高L2 TLB的命中率,减少未命中L2 TLB通过PCIe转发到IOMMU的翻译请求数,进而减少②③过程的延迟开销。
图2是采用本发明的方法对L2 TLB进行优化后翻译请求查找TLB的流程图。下面通过程序在MCM GPU中具体的运行过程来对本发明作进一步详细地描述。
步骤一:当一个程序要在MCM GPU上运行时,首先要调用driverAPIs和GPU的driver通信,告诉driver该程序需要在GPU的内存上开辟多大的内存空间来存储数据,即需要多少个虚拟页。
步骤二:GPU中存在的DMA单元负责管理整个MCM GPU上的物理地址的分布状态,即为每一个GPM的内存进行物理地址编码。GPU driver保存着每个GPM编码后的物理地址状态,因此根据程序需要的虚拟页的数量和设定的内存分配算法,driver从所有GPM中分配出相同数量的物理页(Physical Frame)来与虚拟页进行匹配。
步骤三:在默认的情况下,一个虚拟页和一个物理页进行匹配,生成一个页表条目PTE(Page Tabe Entry)。虚拟页的地址是连续的,在driver的内存分配算法下,也可能会分配出连续的物理页与虚拟页进行匹配,所以在页表中的多个PTE之间可能存在着连续虚拟页对应着连续物理页的现象,这些PTE可以定义成一段连续的PTE序列,整个页表也可以看成是多段连续的PTE序列构成。本发明将每一段连续的PTE序列中的虚拟页地址信息以及虚拟页地址信息对应的物理页地址信息同时存储在对应的一个单个TLB条目中,从而提高TLB的容量。
具体来说,以X86-64的操作系统为例,PTE的格式是64比特,而其中存在着一些没有用到的比特位,在这些未使用的位中引入连续性位(Continuity bits)和标记位(Tag)。连续性位用于记录以当前PTE为首的最长的连续PTE序列中的PTE数量。标记位包含两个比特,一个比特用于指示当前PTE是否在一个连续的PTE序列中,另一个比特用于指示当前PTE是否是其所在的连续PTE序列中的第一个PTE。例如,对于有三个PTE的一个连续PTE序列,这三个PTE的连续性位分别是2、1和0。第一个PTE的连续性位是2,表示它与接下来的两个PTE是连续的。第一个PTE的标记位是11,表示这个PTE是连续PTE序列中的第一个PTE。其他两个PTE的标记位是01,表示它们在连续PTE序列中,但不是第一个PTE。当新生成的PTE被插入页表时,将新生成的PTE与相邻的PTE执行连续性检查。如果它们是连续的,则按照顺序相应地设置更新它们的连续性位和标记位。如果新生成的PTE与相邻的PTE不连续,则将新生成的PTE的连续性位设为0,标记位都设为1,表示上一个连续的PTE序列已经结束,同时新的一个连续的PTE序列已经开始。如果从页表中删除目标PTE,则将目标PTE与相邻的PTE执行连续性检查。如果目标PTE与相邻的PTE不连续,则可以直接移除目标PTE。如果目标PTE与相邻的PTE连续,即目标PTE位于连续序列中,则在移除目标PTE之后,修改此序列中其他PTE的连续性位和标记位,以反映更新的连续性行为。
步骤四:当所有的虚拟页都与对应的物理页进行匹配生成PTE后,即页表构建完成后,GPU的driver开始执行数据拷贝命令,将程序所需要的指令和数据拷贝到GPU的内存上。
步骤五:当所有的指令和数据拷贝完成后,开始执行kernel launch指令,即在GPU上开始运行程序。当程序的访存指令产生的地址翻译请求在L1 TLB中发生未命中时,执行访问查找L2 TLB的流程。图2展示了采用本发明后访问查找L2 TLB的流程,具体包括以下步骤:
S1:对于给定的地址翻译请求中的虚拟地址VA,使用虚拟地址的中间位(Index部分)作为索引,定位要查找TLB中的哪一个组(set)。例如,虚拟地址一般是64bit的二进制数,如果一个页的大小时4KB的话,地址的低12位就是偏移量。除去这低12位地址,从剩下的52bit中选取一部分固定范围的bits(也就是index)来确定去查找哪一个组,比如有四个组,index取虚拟地址的13和14位两个bit,并且是"10”,对应十进制是2,那么这个请求就去查找第2个组。
S2:并行查找步骤S1定位的组中的所有路(way),每一个way对应于一个TLB条目(TLB Entry),而一个TLB条目中储存的是一个页表条目(PTE)的信息,即多个虚拟地址和物理地址都连续的页的信息,这就相当于实现了扩大TLB容量的目的。因此,只要判断当前请求所访问的虚拟页的虚拟地址是否被set中的某一条TLB条目的连续性范围所覆盖就可以确定是否命中。其中TLB条目的覆盖范围从它存储的虚拟页的地址(TLB VPT)开始,覆盖的地址大小是这个TLB条目的连续性位(Continuitybits)和页大小(Page Size)的乘积。因此,只要判断当前请求的虚拟地址中的tag域(即图2中虚拟地址除去偏移量后的Req VPT部分)处于TLB VPT至TLB VPT加上连续性位的值与页大小(默认4KB)的乘积的范围内时,地址翻译请求就可以视为命中了L2 TLB,命中后接下来继续执行步骤S3。当前请求的虚拟地址中的tag域(ReqVPT)不满足处于TLB VPT至TLB VPT加上连续性位的值和页大小的乘积的范围内时,则直接执行步骤S5。
S3:由于TLB条目中的VPT记录的是一段连续页中第一个页的虚拟地址,所以本步骤需要计算ReqVPT和TLB VPT的差值,即计算当前请求所需的虚拟页的虚拟地址(Req VPT)与命中的TLB条目中存储的虚拟地址(TLB VPT)的差值,同时该差值也代表着当前请求所需的实际物理页的物理地址(Req PFN)与命中的TLB条目中存储的物理地址(TLB PFN)的差值,因此将计算得到的差值与TLB条目中存储的TLB PFN相加,即可得到请求所需要的实际物理页的物理地址(Req PFN)。
S4:因为对于同一个请求的虚拟地址和物理地址来说,其页内偏移量(offset)是相同的,如当页大小是4KB时,虚拟地址和物理地址的低12位是相同的,因此将请求所需要的实际物理页的物理地址(Req PFN)和虚拟地址中的偏移量(offset)部分进行结合,进行虚拟地址到物理地址的转换,最终可以得到地址翻译请求中虚拟地址VA(Req VPT+offset)所对应的物理地址PA(Req PFN+offset)。
S5:如果请求查找L2 TLB没有命中,将根据LRU策略选择一个victim TLB条目,并通过PCIe访问CPU端的IOMMU,从页表中获取相应的PTE,并将获取的PTE返回到TLB,完成地址翻译请求中虚拟地址VA到物理地址PA的转换。从页表中获取PTE时,如果所请求的页在一段连续PTE序列中,则获取并返回这个连续PTE序列第一个PTE到TLB。其中,对于所请求的页是否在一段连续PTE序列中的判断,可以通过检查PTE中的标记位来实现。当取回的PTE要替换掉选中的victim TLB条目时,PTE中的连续性位信息也会存储在TLB条目中来实现扩大TLB容量的效果,因此TLB中需要增加和PTE中的连续性位相同数目的硬件bit去存储这些信息。
为了进一步提高L2 TLB的容量,本发明还为每个GPM的RDMA单元引入了新的功能,允许L1 TLB未命中请求通过GPM之间的Package互连发送到远程GPM的L2 TLB。这个功能是基于一种虚拟地址静态共享的方案,即虚拟地址空间被平均分配给各个GPM。例如,如果有12个虚拟页和4个GPM,第一个GPM负责页0-3,第二个GPM负责页4-6,依此类推。如果一个GPM尝试访问一个被分配给另一个GPM的虚拟页,将通过RDMA发送远程请求。
步骤六:当所有程序访存指令中的虚拟地址获得了对应的物理地址,并通过物理地址在缓存中获得了数据并运算完成后,整个程序执行完成。
本发明通过将一段连续的PTE序列的信息合并存储到单个TLB条目中,从而减少了L2 TLB未命中率,即减少了访问IOMMU的请求数,提高了MCM GPU的整体性能。值得说明的是,本发明不但通过扩大了L2 TLB的有效容量减少了容量缺失(Capacity Miss),还通过对多个连续页进行预取(Prefetch)减少了强制缺失(Compulsory Miss)。此外,本发明还引入了基于虚拟地址的静态共享方案,使得不同的GPM可以通过MCM GPU平台下特有的高带宽、低延迟的Package互连共享TLB,进一步提升了地址翻译效率。
为了详细研究并评估本发明在MCM GPU平台下的效果,修改并使用开源的多GPU模拟器MGPUSim。模拟的MCM GPU包括4个GPM,通过高带宽、低延迟的Package进行互连。选择了来自6个不同套件的14个benchmark基准测试程序,包括Pannotia的SSSP和MIS,Polybench的MVT、GEMM和2MM,AMDApp SDK的Matrix Multiplication(MM)和FastWalshTransform(FW),SHOC的SR和SPMV,Heteromark的AES、FIR、Kmeans(KM)和PageRank(PR),以及HPCC的GPUS。然后,使用加速比作为性能衡量指标,加速比定义为baseline配置下的测试程序的执行时间与使用本发明的方法下执行时间的比率。结果表明,在选用的一系列基准测试程序中本发明平均能够有效减少47%的L2 TLB未命中的请求数,进而实现了1.54倍的加速比,同时只需轻微的硬件开销(TLB条目中需要增加一些硬件比特位来存储连续性的信息,本发明在硬件开销和性能提升之间的进行了trade-off,最终为每个条目增加了4个比特位)。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,在构建页表时,将连续的虚拟页与连续的物理页进行匹配,得到一段连续的PTE序列,将每一段连续的PTE序列中的虚拟页地址信息以及所述虚拟页地址信息对应的物理页地址信息同时存储在对应的单个TLB条目中,并在每一个PTE的未使用的比特位中引入连续性位和标记位,其中连续性位用于记录以当前PTE为首的最长的连续PTE序列中的PTE数量,标记位包含两个比特,一个比特用于指示当前PTE是否在一个连续的PTE序列中,另一个比特用于指示当前PTE是否是其所在的连续PTE序列中的第一个PTE;
在MCM GPU中,当程序的访存指令产生的地址翻译请求在L1 TLB中发生未命中时,执行访问查找L2 TLB的流程,所述访问查找L2 TLB的流程包括以下步骤:
S1:以地址翻译请求中虚拟地址的中间位作为索引,定位要查找TLB中的哪一个组;
S2:并行查找组中的所有路,每一个路对应于一个TLB条目,并判断当前请求的虚拟地址中的ReqVPT是否处于TLB VPT至TLB VPT加上连续性位的值与页大小乘积的范围内,若是,则视地址翻译请求命中了L2 TLB,执行步骤S3;否则,执行步骤S5;
S3:计算Req VPT和TLB VPT的差值,再将计算得到的差值加到命中的TLB条目所储存的物理页的物理地址上,得到请求所需要的实际物理页的物理地址;
S4:结合实际物理页的物理地址和虚拟地址中的偏移量,进行虚拟地址到物理地址的转换,最终得到地址翻译请求中虚拟地址所对应的物理地址;
S5:根据LRU策略选择一个victim TLB条目,并通过PCIe访问CPU端的IOMMU,从页表中获取相应的PTE,并将获取的PTE返回到TLB,完成地址翻译请求中虚拟地址到物理地址的转换,当根据PTE中的标记位判断从页表中获取的PTE位于连续的PTE序列中时,获取并返回该连续PTE序列中的第一个PTE到TLB。
2.根据权利要求1所述的通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,所述MCM GPU中每个GPM通过远程直接内存访问单元允许L1 TLB未命中请求通过GPM之间的Package互连发送到远程GPM的L2TLB。
3.根据权利要求2所述的通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,MCM GPU的虚拟地址空间被平均分配给各个GPM。
4.根据权利要求1或2所述的通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,在构建页表之前,GPU driver根据程序需要的虚拟页的数量和设定的内存分配算法,从所有GPM中分配出相同数量的物理页来与虚拟页进行匹配。
5.根据权利要求1或2所述的通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,当新生成的PTE被插入页表时,将新生成的PTE与相邻的PTE进行连续性检查,如果新生成的PTE与相邻的PTE是连续的,则按照顺序相应地设置它们的连续性位和标记位,否则将新生成的PTE的连续性位设为0并将标记位都设为1。
6.根据权利要求1或2所述的通过优化TLB提高MCM GPU地址翻译效率的方法,其特征在于,当从页表中删除PTE时,将目标PTE与相邻的PTE进行连续性检查,如果目标PTE与相邻的PTE不连续,则直接移除目标PTE;如果目标PTE与相邻的PTE连续,则在移除目标PTE之后,修改所在PTE序列中其他PTE的连续性位和标记位。
7.一种MCM GPU,其特征在于,所述MCM GPU采用如权利要求1至6中任意一项所述的通过优化TLB提高MCM GPU地址翻译效率的方法实现地址翻译。
8.根据权利要求7所述的MCM GPU,其特征在于,所述MCM GPU包括集成在一个封装内的1个命令处理器、1个远程直接内存访问单元和4个GPM,并且4个GPM通过封装内的Intra-Package X-Bar互连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410148374.1A CN118093450A (zh) | 2024-02-02 | 2024-02-02 | 通过优化tlb提高mcm gpu地址翻译效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410148374.1A CN118093450A (zh) | 2024-02-02 | 2024-02-02 | 通过优化tlb提高mcm gpu地址翻译效率的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118093450A true CN118093450A (zh) | 2024-05-28 |
Family
ID=91143192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410148374.1A Pending CN118093450A (zh) | 2024-02-02 | 2024-02-02 | 通过优化tlb提高mcm gpu地址翻译效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118093450A (zh) |
-
2024
- 2024-02-02 CN CN202410148374.1A patent/CN118093450A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0637800B1 (en) | Data processor having cache memory | |
EP0856798B1 (en) | A cache system | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
EP0215544B1 (en) | Virtual memory address fetching | |
US8327109B2 (en) | GPU support for garbage collection | |
JP3425158B2 (ja) | マルチバッファデータキャッシュを具えているコンピュータシステム | |
US20150106567A1 (en) | Computer Processor Employing Cache Memory With Per-Byte Valid Bits | |
JP4065660B2 (ja) | 機能が並列に分散された変換索引バッファ | |
US20100250853A1 (en) | Prefetch engine based translation prefetching | |
US20060026381A1 (en) | Address translation information storing apparatus and address translation information storing method | |
US20090187731A1 (en) | Method for Address Translation in Virtual Machines | |
KR960001945B1 (ko) | 우선변환참조버퍼에서 적중수를 증가시키기 위한 장치 | |
JP2016503198A (ja) | データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令) | |
EP2808783A1 (en) | Smart cache and smart terminal | |
US6473835B2 (en) | Partition of on-chip memory buffer for cache | |
CN1470019A (zh) | 用于在一个分布式存储器、高速缓存相干的多处理器系统中把有序的输入/输出事务流水线处理到相干存储器的方法和装置 | |
JPH10293720A (ja) | コンピュータシステムにおけるキャッシュ・コヒーレンシー機構および主メモリに保持されている項目に関してキャッシュの内容のコヒーレンシー状態を変更する方法 | |
US6038642A (en) | Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system | |
CN116383101A (zh) | 内存访问方法、内存管理单元、芯片、设备和存储介质 | |
JP2002358235A (ja) | Cpu間で変換索引バッファを共用する方法 | |
US5699543A (en) | Profile guided TLB and cache optimization | |
CN116795767A (zh) | 一种基于CHI协议的多核Cache共享一致性协议构建方法 | |
CN118093450A (zh) | 通过优化tlb提高mcm gpu地址翻译效率的方法 | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US20220327057A1 (en) | Apparatus and method for handling stash requests |
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 |