掌桥专利:专业的专利平台
掌桥专利
首页

一种地址翻译方法、装置及计算机存储介质

文献发布时间:2024-04-18 19:59:31


一种地址翻译方法、装置及计算机存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种地址翻译方法、装置及计算机存储介质。

背景技术

操作系统将可执行文件加载后,会创建进程,进程中每一条指令和数据都被分配了一个虚拟地址,处理器获取到这个虚拟地址后,需要翻译成内存的物理地址后,才能访问指令和数据。

在虚拟地址进行翻译的过程中,若出现连续物理页场景,会造成多次访问翻译,影响存储访问效率。

发明内容

有鉴于此,本发明实施例期望提供一种地址翻译方法、装置及计算机存储介质;能够提升遇到连续物理页时的存储访问效率。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供了一种地址翻译方法,包括:

接收待翻译虚拟地址,基于虚拟地址页表项映射表获取所述待翻译虚拟地址对应的目标页表项,并基于所述目标页表项确定所述待翻译虚拟地址对应的物理地址;

响应所述目标页表项中的物理页连续标识位满足预设条件,获取连续物理页数量,并根据所述连续物理页数量和所述目标页表项更新所述虚拟地址页表项映射表。

在一些示例中,所述响应所述目标页表项中的物理页连续标识位满足预设条件,获取连续物理页数量包括:

响应所述目标页表项中的物理页连续标识位为1,检测连续数量标识位以获取所述连续物理页数量。

在一些示例中,所述根据所述连续物理页数量和所述目标页表项更新所述虚拟地址页表项映射表,包括:

响应所述连续物理页数量大于1,更新所述虚拟地址页表项映射表,并将所述连续物理页数量减1;

响应所述连续物理页数量等于1,结束更新。

在一些示例中,所述更新所述虚拟地址页表项映射表,包括:

获取与所述待翻译虚拟地址连续的候选虚拟地址;

获取与所述目标页表项连续的候选页表项;

确定所述候选虚拟地址与所述候选页表项之间的映射关系,以更新所述虚拟地址页表项映射表。

在一些示例中,所述基于虚拟地址页表项映射表获取所述待翻译虚拟地址对应的目标页表项,并基于所述目标页表项确定所述待翻译虚拟地址对应的物理地址,包括:

在所述虚拟地址页表项映射表中查询与所述待翻译虚拟地址匹配的目标页表项;

响应所述虚拟地址页表项映射表中包括所述目标页表项,基于所述待翻译虚拟地址和所述目标页表项确定物理地址。

在一些示例中,所述基于所述待翻译虚拟地址和所述目标页表项确定物理地址,包括:

获取所述待翻译虚拟地址中的虚拟页偏移量;

在所述目标页表项中确定物理页号;

基于所述物理页号和虚拟页偏移量确定所述物理地址。

在一些示例中,所述基于虚拟地址页表项映射表获取所述待翻译虚拟地址对应的物理地址,包括:

响应所述虚拟地址页表项映射表中不包括所述目标页表项,在页表基址寄存器中获取页表起始地址;

根据所述页表起始地址和所述待翻译虚拟地址确定所述物理地址以及所述目标页表项;

根据所述待翻译虚拟地址和所述目标页表项更新所述虚拟地址页表项映射表。

在一些示例中,所述方法还包括:

响应用户的地址空间切换操作,更新所述虚拟地址页表项映射表。

在一些示例中,所述方法还包括:

响应用户的物理页释放操作,格式化所述虚拟地址页表项映射表。

第二方面,本发明实施例提供了一种地址翻译装置,包括:

翻译模块,用于接收待翻译虚拟地址,基于虚拟地址页表项映射表获取所述待翻译虚拟地址对应的目标页表项,并基于所述目标页表项确定所述待翻译虚拟地址对应的物理地址;

更新模块,用于响应所述目标页表项中的物理页连续标识位满足预设条件,获取连续物理页数量,并根据所述连续物理页数量和所述目标页表项更新所述虚拟地址页表项映射表。

第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器;所述处理器用于执行所述存储器中存储的指令,以实现第一方面所述的地址翻译方法。

第四方面,本发明实施例提供了一种计算机存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以第一方面所述的地址翻译方法。

本发明实施例提供了一种地址翻译方法、装置及计算机存储介质;在虚拟地址对应的目标页表项中添加了物理页连续标识位,用于获取待翻译虚拟地址对应的物理页是否为连续物理页,在检测到待翻译虚拟地址对应的物理页是连续物理页时,根据物理页的连续物理页数量,预先更新虚拟地址页表项映射表,使得后续可以直接在虚拟地址页表项映射表中获取对应的物理页号,避免了多次访问翻译,提升了翻译速度以及访问效率。

附图说明

图1为本发明实施例提供的一种实施环境的结构图。

图2为本发明实施例提供的一种虚拟地址的组成框架图。

图3为本发明实施例提供的一种物理地址的组成框架图。

图4为本发明实施例提供的一种地址翻译方法的流程图。

图5为本发明实施例提供的一种虚拟地址页表项映射表的示意图。

图6为本发明实施例提供的一种虚拟地址的组成框架图。

图7为本发明实施例提供的另一种虚拟地址的组成框架图。

图8为本发明实施例提供的一种目标页表项的组成框架图。

图9为本发明实施例提供的另一种目标页表项的组成框架图。

图10为本发明实施例提供的一种地址翻译装置的示意图。

图11为本发明提供的一种电子设备的结构示意图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

通常的,计算机的操作系统将可执行文件加载后,会创建进程,进程中每一条指令和数据都被分配了一个虚拟地址,处理器获取到这个虚拟地址后,需要翻译成内存的物理地址后,才能访问指令和数据,因此,虚拟地址到物理地址的翻译是较为重要的。通常的,处理器会将虚拟地址发送至内存管理模块(Memory Management Unit,MMU),由内存管理模块对虚拟地址进行翻译得到物理地址,并将物理地址反馈至处理器,以使得处理器能够根据上述物理地址访问内部存储器。其中,上述处理器可以是核心处理器也可以是图形处理器,还可以是其他处理器,在此不做赘述。

对于一般系统应用场景而言,存储支持4K页组织管理,即每次进行12位地址的翻译管理方式。但对于图形处理器(Graphics Processing Unit ,GPU)场景,渲染任务访问大数据量的场景下,必然会出现连续物理页访问的情况,导致MMU频繁进行翻译过程,对于地址翻译的性能有影响。

举例而言,图1示出了本发明提供的一种实施环境的示意图,在图形处理器(Graphics Processing Unit ,GPU)场景下,GPU芯片可以包括图形处理器210、MMU220以及后备缓冲器(TranslationLookaside Buffer,TLB)230。在一些示例中,上述TLB可以集成于上述MMU,以增强GPU芯片的集成度。并提升MMU访问TLB的速度,提升响应速度。

在对上述虚拟地址进行翻译时,图形处理器210可以把虚拟地址(VA)发送至MMU220,其中,如图2所示,虚拟地址可以包括虚拟页号(Virtual Private Network,VPN)和虚拟页偏移量(Virtual Page Offset,VPO)。MMU220在接收到VA之后,可以将VA中的VPN发送至TLB230,TLB230根据VPN在虚拟地址页表项映射表中查询与VPN对应的页表项(PageTable Entry,PTE),其中,PTE中可以包括物理页表项PPN和有效位,有效位用于表证物理页表项是否有效,有效位的具体作用可以参照相关技术,在此不做赘述。

若在虚拟地址页表项映射表查询到了VPN对应的PTE,则利用PTE中的PPN以及VA中的VPO确定物理地址,具体如图3所示。

若在虚拟地址页表项映射表中没有查询到VPN对应的PTE,则需要MMU根据页表基址寄存器(未图示)得到页表起始地址,进而对上述VA地址进行翻译,以得到VPN对应的PTE。具体的翻译过程可以参照相关技术,在此不做赘述。

在GPU场景下,渲染任务的访问数据量较大,必然会出现连续物理页访问的情况,此时,则需要MMU多次访问页表基址寄存器(PTBR)以获取物理地址,会导致MMU翻译效率较低,且会影响MMU的访问效率。

需要说明的是,地址翻译方法中的连续物理页访问的情况不局限于GPU场景,也可以在CPU场景以及其他场景下进行,具体的实施方式与GPU场景相同,在此不再赘述。

基于上述缺点,本发明提出一种地址翻译方法,参照图4,地址翻译方法可以由上述GPU芯片中的MMU执行,包括步骤S410至步骤S420。

在步骤S410中,接收待翻译虚拟地址,基于虚拟地址页表项映射表获取待翻译虚拟地址对应的目标页表项,并基于目标页表项确定待翻译虚拟地址对应的物理地址。

在本发明的一些示例实施方式中,MMU可以接收图形处理器发送的待翻译虚拟地址,其中,待翻译虚拟地址可以包括虚拟页号(Virtual Private Network,VPN)和虚拟页偏移量(Virtual Page Offset,VPO),具体细节上述已经进行了详细说明,此处不再赘述。

MMU在得到上述待翻译虚拟地址之后,可以根据虚拟地址页表项映射表获取待翻译虚拟地址对应的目标页表项,并基于目标页表项确定待翻译虚拟地址对应的物理地址。

具体的,上述虚拟地址页表项映射表可以存储在TLB中,其中虚拟地址页表项映射表存储有虚拟页号(VPN)和页表项(PTE)的映射关系,参照图5, 虚拟地址页表项映射表可以由m个TLB组构成,每个TLB组下有个n个条目,每个条目里有PTE和标记位构成,标记位是一个数字,每个TLB组的标记位不能重复,所以一个TLB组里,可以根据这个标记位定位到某个条目,每个组都有一个唯一的编号叫做组号。可以设想的,TLB就是一个二维数组,在确定组号和标记位之后、即可定位到唯一的PTE。

可选的,参照图6,虚拟地址中的虚拟页号(VPN)可以拆分成两部分,即组号和标记位,VPN由标记位(TLBT)和组号组成,组号也可以称之为标记索引(TLBI)构成。

若基于上述VPN在上述虚拟页表映射表中命中了对应的PTE,则可以根据PTE中的物理页号PPN以及VPN对应的VPO构成物理地址。

若未命中,则MMU可以根据页表基址寄存器(PTBR)中的页表起始地址加上虚拟页号(VPN),得出虚拟页页表项的物理地址(即Page Table Entry Address,PTEA),然后将这个物理地址送往高速缓冲,高速缓冲根据PTEA查询内部的缓冲映射表,得到PTE,并将PTE传输至TLB中,建立VPN与PTE之间的映射关系,TLB将PTE发送至MMU完成对待翻译虚拟地址到物理地址的翻译。具体的翻译过程可以参照相关技术,在此不再赘述。

可选的,上述虚拟地址页表项映射表也可以直接存储有虚拟页号(VPN)和物理地址之间的映射关系,即可以直接根据虚拟页号(VPN)在虚拟地址页表项映射表中查询与上述虚拟页号(VPN)对应的物理地址。

在步骤S420中,响应目标页表项中的物理页连续标识位满足预设条件,获取连续物理页数量,并根据连续物理页数量和目标页表项更新虚拟地址页表项映射表。

在本发明的一些示例实施方式中,图7示出了本发明中一种目标页表项的示意图,目标页表项中可以包括物理页号PPN和物理页连续标识位,其中,物理页号用于表征物理地址,物理页连续标识位用于表征上述物理页是否连续。

可选的,上述物理页连续标识位可以是0或1,在一些示例中,物理页连续标识位为1表示物理页连续,物理页连续标识位为0表示物理页不连续,此时,上述预设条件可以是上述物理页连续标识位为1。

在另一些示例中,物理页连续标识位为0表示物理页连续,物理页连续标识位为1表示物理页不连续,此时,上述预设条件可以是上述物理页连续标识位为0。

需要说明的是,物理页连续标识位的具体形式还可以根据用户需求进行自定义,如采用字母的方式确定其是否连续,举例而言,A表示连续,a表示不连续;采用汉字表示,“是”表示连续,“否”表示不连续等,在本示例实施方式中不做赘述。

在本发明的一些示例中,在上述物理页连续标识位满足预设条件时,可以获取物理页的连续数量,在上述物理页连续标识位满足预设条件时,上述连续数量大于等于2,在得到上述连续数量之后,可以根据上述连续数量更新上述虚拟地址页表项映射表。

具体的,预先将上述连续物理页对应的PTE以及PTE对应的VPN存储至虚拟地址页表项映射表,以使得在后续翻译过程中,MMU可以直接从虚拟地址页表项映射表中获取VPN对应的PTE,进而提升翻译速率。

本实施例中的地址翻译方法,在虚拟地址对应的目标页表项中添加了物理页连续标识位,用于获取待翻译虚拟地址对应的物理页是否为连续物理页,在检测到待翻译虚拟地址对应的物理页是连续物理页时,根据物理页的连续物理页数量,预先更新虚拟地址页表项映射表,使得后续可以直接在虚拟地址页表项映射表中获取对应的物理页号,避免了多次访问翻译,提升了翻译速度以及访问效率。

在本发明的一些示例实施方式中,参照图8,上述目标页表项中还可以包括连续数量标识位,连续数量标识位用于表征连续物理页的数量,MMU可以根据连续数量标识位确定连续物理页数量。其中,上述连续物理页数量为大于等于1的正整数。

在得到上述连续物理页数量之后,可以判断连续物理页数量是否大于1,若上述物理页数大于1,则将虚拟地址页号和物理页号均左移预设位数,其中,上述预设位数与物理页映射相关,若为4K物理页映射,则,上述预设位数可以是12,若为6K物理页映射,则,预设位数可以是18,在本示例实施方式中不做赘述。

在对上述虚拟地址页和物理页号均左移之后得到一组新的映射关系,利用新的映射关系更新上述虚拟地址页表项映射表,同时,将上述连续物理页数量减1,循环执行上述步骤,直至上述连续物理页数量等于1,则停止更新过程。

以上述物理页映射位4K物理页映射为例,在更新虚拟地址页表项映射表时,可以将上述虚拟页表项和物理页表项均左移12位,然后,将虚拟标识和物理页标识均加1,并将上述连续物理页数量减1,直至上述连续物理页数量为1。

图9示出了本发明另一种地址翻译方法的数据流向图,可以设想的,TLB中不包括VA对应的目标页表项,CPU向GPU发送渲染任务之后,GPU将虚拟地址通过直接内存访问(Direct Memory Access,DMA)发送至MMU,MMU基于页表基址寄存器PTBR中得到上述VA对应的PTE,此时可以执行步骤S910,判断PTE中的物理页连续标识位是否置位,即判断上述物理页连续标识位是否为1,若否,则执行步骤S920,将PTE存储至TLB中,若是,则执行步骤S930,判断上述连续物理页数量是否大于1,若是,则执行步骤S940,更新TLB,具体的,虚拟页标识加1,物理页标识加1,虚拟页号和物理页号均左移12位,连续物理页数量减1。若否,则结束。

在后续过程中,MMU可以基于TLB中的PTE得到物理地址,并反馈至DMA,以使得上述GPU能够经由DMA通过上述物理地址PA访问内存DDR。

在本发明的一些示例实施方式中,上述MMU还可以响应用户的物理页释放操作,对上述TLB中的虚拟地址页表项映射表进行格式化处理。能够清理TLB,保证TLB的高速缓冲功能。

可选的,物理页释放操作也可以是由MMU发出的,MMU可以在用户预设时间内未使用虚拟页表项映射之后,对上述虚拟地址页表项映射表进行格式化处理,其中,上述预设时间可以是一个月、半年等,也可以根据用户需求进行自定义,在本示例实施方式中不做赘述。

在一些示例中,MMU还可以响应用户对地址空间的切换操作,更新上述TLB,具体的,首先更新上述页表基址寄存器PTBR,并基于上述页表基址寄存器PTBR更新TLB中的虚拟地址页表项映射表。防止TLB中的高速缓冲功能失效。

本实施例中的地址翻译方法,在虚拟地址对应的目标页表项中添加了物理页连续标识位,用于获取待翻译虚拟地址对应的物理页是否为连续物理页,在检测到待翻译虚拟地址对应的物理页是连续物理页时,根据物理页的连续物理页数量,预先更新虚拟地址页表项映射表,使得后续可以直接在虚拟地址页表项映射表中获取对应的物理页号,避免了多次访问翻译,提升了翻译速度以及访问效率。进一步的,响应用户对地址空间的切换操作,更新上述TLB,具体的,首先更新上述页表基址寄存器,并基于上述页表基址寄存器更新TLB中的虚拟地址页表项映射表,能够防止TLB中的高速缓冲功能失效。

进一步的,本发明还提供一种地址翻译装置,参照图10所示,地址翻译装置1000可以包括翻译模块1010和更新模块1020,其中:

翻译模块1010可以用于接收待翻译虚拟地址,基于虚拟地址页表项映射表获取待翻译虚拟地址对应的目标页表项,并基于目标页表项确定待翻译虚拟地址对应的物理地址。

更新模块1020可以用于响应目标页表项中的物理页连续标识位满足预设条件,获取连续物理页数量,并根据连续物理页数量和目标页表项更新虚拟地址页表项映射表。

在一些示例中,翻译模块1010可以被配置为在虚拟地址页表项映射表中查询与待翻译虚拟地址匹配的目标页表项;响应虚拟地址页表项映射表中包括目标页表项,基于待翻译虚拟地址和目标页表项确定物理地址。

在一些示例中,翻译模块1010可以被配置为获取待翻译虚拟地址中的虚拟页偏移量;在目标页表项中确定物理页号;基于物理页号和虚拟页偏移量确定物理地址。

在一些示例中,翻译模块1010可以被配置为响应虚拟地址页表项映射表中不包括目标页表项,在页表基址寄存器中获取页表起始地址;根据页表起始地址和待翻译虚拟地址确定物理地址以及目标页表项;根据待翻译虚拟地址和目标页表项更新虚拟地址页表项映射表。

在一些示例中,物理页连续标识位为1表示物理页连续,物理页连续标识位为0表示物理页不连续,更新模块1020可以被配置为响应目标页表项中的物理页连续标识位为1,检测连续数量标识位以获取连续物理页数量。

在一些示例中,更新模块1020可以被配置为响应连续物理页数量大于1,更新虚拟地址页表项映射表,并将连续物理页数量减1;响应连续物理页数量等于1,结束更新。

在一些示例中,更新模块1020可以被配置为获取与待翻译虚拟地址连续的候选虚拟地址;获取与目标页表项连续的候选页表项;确定候选虚拟地址与候选页表项之间的映射关系,以更新虚拟地址页表项映射表。

请参考图11,其示出了本发明一个示例性实施例提供的电子设备的结构方框图。在一些示例中,电子设备可以为智能手机、智能手表、台式电脑、手提电脑、虚拟现实终端、增强现实终端、无线终端和膝上型便携计算机等设备中的至少一种。电子设备具有通信功能,可以接入有线网络或无线网络。电子设备可以泛指多个终端中的一个,本领域技术人员可以知晓,上述终端的数量可以更多或更少。在一些示例中,电子设备可以基于所接入的有线网络或无线网络接收待翻译虚拟地址。可以理解地,电子设备承担本发明技术方案的计算及处理工作,本发明实施例对此不作限定。

如图11所示,本发明中的电子设备可以包括一个或多个如下部件:处理器1110和存储器1120。

可选的,处理器1110利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器1120内的指令、程序、代码集或指令集,以及调用存储在存储器1120内的数据,执行电子设备的各种功能和处理数据。可选地,处理器1110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1110可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)和基带芯片等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责触摸显示屏所需要显示的内容的渲染和绘制;NPU用于实现人工智能(Artificial Intelligence,AI)功能;基带芯片用于处理无线通信。可以理解的是,上述基带芯片也可以不集成到处理器1110中,单独通过一块芯片进行实现。

存储器1120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-OnlyMemory,ROM)。可选地,该存储器1120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1120可用于存储指令、程序、代码、代码集或指令集。存储器1120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现以上各个方法实施例的指令等;存储数据区可存储根据电子设备的使用所创建的数据等。

除此之外,本领域技术人员可以理解,上述附图所示出的电子设备的结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备中还包括显示屏、摄像组件、麦克风、扬声器、射频电路、输入单元、传感器(比如加速度传感器、角速度传感器、光线传感器等等)、音频电路、WiFi模块、电源、蓝牙模块等部件,在此不再赘述。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,至少一条指令用于被处理器执行以实现如上各个实施例的地址翻译方法。

本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中;电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行以实现上述各个实施例的地址翻译方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

技术分类

06120116521641