CN115774683A - 用于超级用户模式中获取物理地址的方法及相应处理器 - Google Patents

用于超级用户模式中获取物理地址的方法及相应处理器 Download PDF

Info

Publication number
CN115774683A
CN115774683A CN202211359883.6A CN202211359883A CN115774683A CN 115774683 A CN115774683 A CN 115774683A CN 202211359883 A CN202211359883 A CN 202211359883A CN 115774683 A CN115774683 A CN 115774683A
Authority
CN
China
Prior art keywords
address
register
virtual address
physical address
virtual
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
Application number
CN202211359883.6A
Other languages
English (en)
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.)
Hangzhou C Sky Microsystems Co Ltd
Original Assignee
Pingtouge Shanghai Semiconductor 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 Pingtouge Shanghai Semiconductor Co Ltd filed Critical Pingtouge Shanghai Semiconductor Co Ltd
Priority to CN202211359883.6A priority Critical patent/CN115774683A/zh
Publication of CN115774683A publication Critical patent/CN115774683A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了用于超级用户模式中获取物理地址的方法及支持该方法的相应处理器。该方案在超级用户模式中将待转换的虚拟地址写入对超级用户模式可用的寄存器中,响应于检测到所述寄存器的状态变化,在机器模式中从所述寄存器中读取所述虚拟地址,通过查询页表获取与所述虚拟地址对应的物理地址,并将其写入至该寄存器中,从而在超级用户模式中通过读取该寄存器来获取对应的物理地址。该方案使得在RISC‑V架构超级用户模式能快速地完成虚拟地址到物理地址的转换,不仅提高了地址转换的效率,还减少了软件编程的复杂度。

Description

用于超级用户模式中获取物理地址的方法及相应处理器
技术领域
本申请涉及处理器中访存管理,尤其涉及处理器不同工作模式下获取物理地址的方法及支持该方法的相应处理器。
背景技术
本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。
基于RISC-V架构的处理器通常有三种工作模式:普通用户模式(User mode,简称U模式),超级用户模式(Supervisor mode,简称S模式)和机器模式(Machine mode,简称M模式)。其中M模式权限最高,S模式次之,而U模式权限最低。M模式下运行的硬件线程对内存、I/O等启动和配置系统来说必要的底层功能有着完全的使用权。S模式提供了基于页面的虚拟内存系统,将内存划分为固定大小的页来进行地址转换和对内存内容的保护。S模式旨在支持诸如Linux,Windows等操作系统、诸如OP-TEE之类的可信执行环境软件栈等。U模式适用于运行具体的应用程序。
通常普通用户模式和超级用户模式下运行的软件使用的都是虚拟地址,而在机器模式下使用物理地址。但是对于例如OP-TEE之类的有高安全需求的软件栈,在一些情况下需要在超级用户模式下将虚拟地址翻译成物理地址。例如,OP-TEE软件栈有时候使用物理地址来执行一些安全检查;有时候为了避免驱动的数据在用户态和内核态搬移,需要将当前的虚拟地址转换为物理地址做重映射;有时候为了在不同进程之间共享数据,内核需要把一个进程的地址空间映射到另一个进程的地址空间。目前OP-TEE软件栈需要通过软件查表的方式,往往需要多次查询和多次地址转换才能获取物理地址,总体上效率很低。
需要说明的是,上述内容仅用于帮助理解本申请的技术方案,并不作为评价本申请的现有技术的依据。
发明内容
针对上述问题,在本申请中提供了在超级用户模式下快速高效地获取物理地址的方案。
根据本申请实施例的第一方面,提供了一种用于超级用户模式中获取物理地址的方法,其包括:在超级用户模式中将待转换的虚拟地址写入对超级用户模式可用的寄存器中;响应于检测到所述寄存器的状态变化,在机器模式中从所述寄存器中读取所述虚拟地址,通过查询页表获取与所述虚拟地址对应的物理地址,并将其写入至所述寄存器中;以及在超级用户模式中通过读取所述寄存器来获取与所述虚拟地址对应的物理地址。该寄存器还可以包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。
在该实施例中,通过提供超级用户模式和机器模式共享的寄存器,以及将遍历查询页表的操作全部放在机器模式中执行,使得在超级用户模式下能快速地获取虚拟地址对应的物理地址,克服了超级用户模式中纯软件查询页表的性能限制,不仅提高了地址转换的效率,还减少了软件编程的复杂度。
在一些实施例中,该方法还可以包括:在机器模式中将通过查询页表获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第一快速地址转换表中。这样,在响应于检测到所述寄存器的状态变化,在机器模式中从所述寄存器中读取所述虚拟地址时,先从所述第一快速地址转换表中查找与待转换的虚拟地址相对应的物理地址;若未找到,则通过查询页表获取与所述虚拟地址对应的物理地址。
在上述实施例中,引入了第一快速地址转换表保存先前的地址转换历史,如果先前已经执行过对于相应虚拟地址的转换,则在这个表中可以快速地定位到该虚拟地址对应的物理地址,由此可避免后续遍历多级页表的过程,从而可以进一步提高地址转换的速度和效率。
在一些实施例中,该方法还可包括:在超级用户模式中将通过读取所述寄存器获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第二快速地址转换表中。这样,在超级用户模式中响应于将虚拟地址转换成物理地址的请求,从所述第二快速地址转换表中查找与待转换的虚拟地址相对应的物理地址,若未找到,则待转换的虚拟地址作为参数写入所述寄存器中,并通过读取所述寄存器来获取与所述虚拟地址对应的物理地址。
在上述实施例中,在超级用户模式引入了第二快速地址转换表保存先前的地址转换历史,如果先前已经执行过对于相应虚拟地址的转换,则在超级用户模式中通过这个表中可以快速地定位到该虚拟地址对应的物理地址,由此可避免后续读写寄存器以及遍历多级页表的过程,从而可以进一步提高地址转换的速度和效率。
根据本申请实施例的第二方面,提供了一种处理器,至少具有机器模式和超级用户模式,并且至少包括在机器模式下运行的地址转换模块和对超级用户模式可用的寄存器,其中所述寄存器用于保存虚拟地址和物理地址;以及其中所述地址转换模块被配置为:响应于检测到所述寄存器的状态变化,从所述寄存器中读取所述虚拟地址,通过查询页表获取与所述虚拟地址对应的物理地址,并将其写入至所述寄存器中。其中所述寄存器还可以包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。
在一些实施例中,该地址转换模块还可被配置为:将通过查询页表获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第一快速地址转换表中;以及在响应于检测到所述寄存器的状态变化,从所述寄存器中读取所述虚拟地址之后,首先从所述第一快速地址转换表中查找与待转换的虚拟地址相对应的物理地址;若未找到,则通过查询页表获取与所述虚拟地址对应的物理地址。
根据本申请实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现根据本申请实施例的第一方面所述的方法。
在现有的仅使用虚拟地址的超级用户模式下,在基于多级页表进行虚拟地址与物理地址的转换过程中,需要将每一级页表查询操作得到的物理地址再次映射为虚拟地址,才能继续进行下一级的查询。因此,在遍历至页表的叶子项节点之前,需要经历频繁的地址映射操作;而且还需要软件上额外地维护部分物理地址与虚拟地址之间的直接映射,以便将从各级页表取出来的物理地址简单地映射为相应的虚拟地址。因此,这种超级用户模式下通过软件查表的方式将虚拟地址简单地转换为物理地址在整体上效率很低,而且还增加了软件编程复杂度。
而在本申请的实施例中,通过提供超级用户模式和机器模式共享的寄存器,以及将遍历查询页表的操作全部放在机器模式中执行,使得在超级用户模式能快速地完成虚拟地址到物理地址的转换,不仅提高了地址转换的效率,还减少了软件编程的复杂度。而且在该实施例中仅需要扩展一个寄存器,也节省了硬件资源。
与现有的使用虚拟地址的超级用户模式不同,在机器模式中运行的线程使用的是物理地址,因此不需要如上文提到的软件查表那样将每一级页表查询操作得到的物理地址再映射为虚拟地址,而是可以直接使用每一级页表查询操作得到的结果来继续进行下一级的查询。由此,避免了纯软件遍历页表过程中频繁的地址映射操作,从而可以更快速地完成了虚拟地址到物理地址的转换。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为根据本申请一个实施例的用于超级用户模式中快速获取物理地址的方法的流程示意图。
图2为根据本申请一个实施例的处理器的模块结构示意图;
图3为适用于根据本申请实施例的方法的处理器执行地址转换的过程示意图。
具体实施方式
为了使本申请的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本申请进一步详细说明。应当理解,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本申请保护的范围。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
基于RISC-V架构的处理器通常有三种工作模式:普通用户模式(User mode,简称U模式),超级用户模式(Supervisor mode,简称S模式)和机器模式(Machine mode,简称M模式)。其中M模式权限最高,S模式次之,而U模式权限最低。M模式下运行的硬件线程对内存、I/O等启动和配置系统来说必要的底层功能有着完全的使用权。S模式提供了基于页面的虚拟内存系统,将内存划分为固定大小的页来进行地址转换和对内存内容的保护。U模式适用于运行具体的应用程序。
在基于RISC-V架构的处理器中,任一个处理器线程必须运行在某个模式下,例如普通用户模式、超级用户模式和机器模式。区分这些工作模式的原因是为不同的软件栈部件提供保护。当一个线程试图执行当前模式下不允许的操作,将会产生异常。机器模式可拦截来自任何S/U模式环境的中断和异常。超级用户模式支持诸如Linux,Windows之类的操作系统、诸如OP-TEE之类的可信执行环境软件栈等的运行。
S模式提供了基于页面的虚拟内存系统,将内存划分为固定大小的页来进行地址转换和对内存内容的保护。在S模式和U模式中所使用的地址都是虚拟地址,如果要访问物理内存,它们必须被转换为真正的物理地址。在目前RISC-V规范中是通过遍历以树结构存储的多级页表来实现,该页表中的叶节点指示是否已经被映射到了真正的物理页面。
页表用于存储虚拟地址到物理地址的映射关系,页表的级数与系统支持的虚拟地址空间、访存性能需求等有关,可以有二级页表、三级页表、四级页表等等。以大小为32比特的虚拟地址及其对应的为三级页表为例:该三级页表包括页目录、页表和页表项;该虚拟地址分为3个部分:页目录索引、页表索引和页内偏移。虚拟地址的第22位到第31位这10位(最高10位)指示页目录中的索引;第12位到第21位这10位指示页表中的索引;第0位到第11位这12位(低12位)指示的是页内偏移。当需要将这样的虚拟地址转换为物理地址时,从树根部的页目录起始地址开始,找到页目录所在的物理页;然后根据虚拟地址的第22位到第31位这10位的值作为索引,找到相应的页目录项PDE(page directory entry),PDE中有这个虚拟地址所对应页表的物理地址;有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项PTE(page table entry);页表项中就有这个虚拟地址所对应物理页的物理地址;最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址,从而可以找到对应的数据或者指令。由页全局目录(Page global directory,PGD)、页上级目录(Page upperdirectory,PUD)、页中级目录(Page Middle directory,PMD)和页表项(Page tableentry,PTE)构成的四级页表也是类似的过程,从根部PGD的起始地址开始,逐级遍历。为方便描述,下文均以三级页表为例来进行说明,但应理解本文的实施例适用于各种多级页表系统。
在多级页表系统中,其实每级页表都可以视为一种“虚拟地址”向“物理地址”的转换,只是这里的“虚拟地址”是待转换的虚拟地址的一个位域子集,而除了最后一级页表PTE是直接指向物理页面的,其他级别页表里的“物理地址”都是指向对应下一级页表的首地址。
通常普通用户模式和超级用户模式下运行的软件使用的都是虚拟地址,而在机器模式下使用物理地址。但是对于例如OP-TEE、Trusty、SierraTEE等的有高安全需求的软件栈,有时需要在超级用户模式下将虚拟地址翻译成物理地址。例如,OP-TEE软件栈在执行过程中有时候需要使用物理地址来执行一些安全检查。又例如,在可信执行环境(TEE,Trusted Execution Environment)中,为满足更高效率的要求,将设备的驱动程序以运行在TEE内部的安全应用的方式进行开发集成和管理,这样的驱动程序的内存是在S模式下动态分配的,得到的是虚拟地址,而驱动程序需要使用的是物理地址,这时也需要在S模式下将虚拟地址翻译成物理地址。
下面以OP-TEE(可信执行环境TEE操作系统的一个开源版本)为例,对于现有的S模式下虚拟地址转换为物理地址的过程进行举例说明。目前OP-TEE软件栈是通过软件查表的方式,逐级遍历,直到叶子项。如上文提到的在多级页表中,每级页表都是从“虚拟地址”向“物理地址”的转换,除了最后一级页表PTE是直接指向物理页面的,其他级别页表所获取的是指向对应下一级页表的起始地址的“物理地址”。但是,由于OP-TEE运行在S模式下,只能使用虚拟地址,因此需要将每一级页表查询操作得到的物理地址再转换为虚拟地址,才能继续进行下一级的查询。因此,这样的通过软件查表的方式,在遍历至页表的叶子项节点之前,需要多次查询和多次地址转换操作;而且还需要软件上额外地维护部分物理地址与虚拟地址之间的直接映射,以便能将从各级页表取出来的物理地址简单地转换为虚拟地址。因此,这种超级用户模式下通过软件查表的方式将虚拟地址简单地转换为物理地址在整体上效率很低。
图1示出了根据本申请一个实施例的用于超级用户模式中快速获取物理地址的方法的流程示意图。该方法主要包括:步骤S1:在超级用户模式中将待转换的虚拟地址写入对超级用户模式可用的指定的寄存器中;步骤S2:由机器模式中响应于检测到该指定的寄存器的状态变化,从该寄存器中读出虚拟地址,并根据页表获取与所读取的虚拟地址对应的物理地址,并将其写入至该指定的寄存器中;步骤S3:在超级用户模式中通过读取该指定的寄存器来获取与待转换的虚拟地址对应的物理地址。在该实施例中,将地址转换过程中页表查询操作下放到机器模式中执行,避免了上文提到的超级用户模式中纯软件查表的限制,能实现超级用户模式中从虚拟地址到物理地址的快速转换,提高了地址转换的效率。
更具体地,在步骤S1,在超级用户模式中将待转换的虚拟地址写入对超级用户模式可用的指定的寄存器中。在基于RISC-V架构的处理器中可以为不同模式设置相应的可用寄存器,高权限模式可以访问低权限模式的寄存器。例如在机器模式中可以存取所有的对超级用户模式可用的寄存器,但在不经允许的情况下超级用户模式没有权限访问机器模式中的寄存器。在该实施例中,设置了对超级用户模式可用的指定寄存器供虚拟地址和物理地址的转换使用。该指定的寄存器可以采用RISC-V架构处理器的标准的控制与状态寄存器CSR来实现。在标准RISC-V架构中有多达4,096个CSR,并可以根据规范扩展额外的CSR,因此可以扩展一个CSR寄存器作为专门用于超级用户模式中进行虚拟地址和物理地址转换的寄存器,下文将该指定的寄存器称为地址转换寄存器(记为,SVAT)。当在超级用户模式中需要进行地址转换时,可以将待转换的虚拟地址作为访问寄存器指令的参数来将该虚拟地址写入寄存器中。例如可以使用将虚拟地址作为参数r0写入SVAT寄存器的指令:csrw svat r0,其中csrw为写寄存器的指令。同样地,在超级用户模式中可以通过读取SVAT寄存器来获取转换后的物理地址,例如可以使用将SVAT寄存器中保存的物理地址读取至参数r1的指令:csrr r1 svat,其中csrr为读寄存器的指令。
在一个实施例中,在该地址转换寄存器SVAT中还可包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。当该寄存器中保存的内容发生变化时,其相应的状态标识位也需要进行相应的改变。
在又一个实施例中,也可以扩展两个CSR寄存器来用于超级用户模式中虚拟地址和物理地址之间的转换,其中一个寄存器(例如记为svat1)用于存放待转换的虚拟地址,而另一个寄存器(例如记为svat2)用于存放与该虚拟地址对应的物理地址。当在超级用户模式中需要进行地址转换时,可以将待转换的虚拟地址写入寄存器svat1中;而通过读取寄存器svat2来获取转换后的物理地址。这样的方式虽然在软件设计上更简单,但是会比上文仅采用一个地址转换寄存器的方式占用更多硬件资源。
继续参考图1,在步骤S2,响应于检测到地址转换寄存器的状态变化,在机器模式中从地址转换寄存器中读出虚拟地址,并根据页表获取与所读取的虚拟地址对应的物理地址,将其写入至该地址转换寄存器中。在基于RISC-V架构的处理器中机器模式是高权限模式,在机器模式中可以存取对超级用户模式可用的寄存器。在一个实施例中,随着待转换的虚拟地址在超级用户模式中被写入地址转换寄存器,在机器模式中可以通过比较该地址转换寄存器所保存的内容是否发生变化来检测地址转换寄存器的状态变化。例如,如果检测到从地址转换寄存器中读取的当前内容与之前写入的内容不同,则将所读取的内容作为虚拟地址。在地址转换寄存器包括状态标识位的一些实施例中,可以通过检测地址转换寄存器的状态标识位来识别地址转换寄存器的状态变化。如果地址转换寄存器的状态标识位指示当前存放的是虚拟地址,则从该寄存器中读取该虚拟地址。
在从地址转换寄存器获得待转换的虚拟地址之后,可以通过读取页表基地址寄存器获得页表的起始地址(即根地址),进而通过查询页表获得与待转换的虚拟地址相对应的物理地址。如上文提到的,在多级页表中,除了最后一级页表是直接指向物理页面之外,查询每一级页表所获取的都是指向对应下一级页表的起始地址的“物理地址”。但与仅使用虚拟地址的超级用户模式不同,在机器模式中运行的线程使用的是物理地址,因此不需要如上文提到的软件查表那样将每一级页表查询操作得到的物理地址再映射为虚拟地址,而是可以直接使用每一级页表查询操作得到的结果来继续进行下一级的查询。由此,避免了纯软件遍历页表过程中频繁的地址映射操作。
在机器模式下通过查询页表获取到与待转换的虚拟地址对应的物理地址后,可以将获取的物理地址写入至地址转换寄存器,以便超级用户模式中也能获得该物理地址。这样,在步骤S3,在超级用户模式中通过读取该指定的地址转换寄存器就能获取与待转换的虚拟地址对应的物理地址,从而快速地完成了虚拟地址到物理地址的转换。
可以看出,在本申请的实施例中,通过提供超级用户模式和机器模式共享的寄存器,以及将遍历查询页表的操作全部放在机器模式中执行,使得在超级用户模式能快速地完成虚拟地址到物理地址的转换,不仅提高了地址转换的效率,还减少了软件编程的复杂度。
应理解,上文结合步骤S2介绍的过程可以由在机器模式中运行的特定功能模块(例如可以称为地址转换模块)来执行。该地址转换模块可以是以独立编程的硬件电路或硬件部件形式来实现,也可以是集成在中央处理器的控制单元或内存管理单元等硬件部件中的功能模块的形式来实现。本文对此不进行任何限制,只要是能支持实现本申请中描述的功能、过程或步骤的任何软件、硬件或软硬件的组合都可适用。
在又一个实施例中,在机器模式中通过查询页表获取到与待转换的虚拟地址对应的物理地址之后,可以将该物理地址与虚拟地址之间的对应关系保存在一个独立于多级页表的表格中。这样,在步骤S2响应于检测到地址转换寄存器的状态变化,从其中读取所述虚拟地址后,可以首先从这个表格中查找是否已经保存了这个虚拟地址与物理地址的对应关系,如果先前已经执行过对于这个虚拟地址的转换,则在这个表格中可以快速地定位到该虚拟地址对应的物理地址,由此避免了遍历多级页表的过程。
可以看出,通过该实施例的方案可以进一步提高地址转换的速度和效率。相应地,这样的独立于页表的表格也可以称为快速地址转换表。如果在快速地址转换表中没有未找到与待转换的虚拟地址相对应的物理地址,则正常执行上文结合步骤S2所介绍的通过查询页表获取与虚拟地址对应的物理地址的过程。
另外,应理解在本申请的实施例中,不仅仅是提供了超级用户模式中快速地获取物理地址的方法,而且也可以支持普通用户模式快速获取物理地址,从而满足一些特殊应用的需求。例如在普通用户模式下可以通过诸如系统调用之类的手段来将虚拟地址转换成物理地址的请求传递至超级用户模式,从而在超级用户模式中响应于收到的将虚拟地址转换成物理地址的请求,执行上述步骤S1-S3来获取物理地址,并将所获取的物理地址作为对请求的响应返回至普通用户模式中。
在又一个实施例中,在步骤S3读取地址转换寄存器中与待转换的虚拟地址对应的物理地址后,还可以将该物理地址与虚拟地址的对应关系保存在不同于页表和上文提到快速地址转换表的一个表格中。这样,在超级用户模式中需要进行地址转换时或者响应于将虚拟地址转换成物理地址的请求,可以首先从这个表格中查找是否已经保存了这个虚拟地址与物理地址的对应关系,如果先前已经执行过对于这个虚拟地址的转换,则在这个表格中可以快速地定位到该虚拟地址对应的物理地址,由此避免了后续读写地址转换寄存器和遍历多级页表的过程。
可以看出,通过该实施例的方案可以进一步提高地址转换的速度和效率。相应地,可以将该实施例中这个超级用户模式中维护的表格称为第二快速地址转换表。如果在第二快速地址转换表中没有未找到与待转换的虚拟地址相对应的物理地址,则正常执行上文的步骤S1-S3来获取物理地址。
图3给出了在本申请的又一个实施例中提供了一种支持超级用户模式中快速获取物理地址的处理器的功能结构示意图。该处理器至少具有两种工作模式:超级用户模式和机器模式。该处理器至少包括对超级用户模式可用的地址转换寄存器和机器模式中运行的地址转换模块。如图3所示,诸如Linux,Windows之类的操作系统、诸如OP-TEE之类的可信执行环境软件栈等作为系统软件模块运行在处理器的超级用户模式中;内存管理单元运行在机器模式中,其包括地址转换模块;页表基地址寄存器保存有页目录表的起始物理地址。应理解,尽管在图3中将地址转换模块显示为内存管理单元内部的一个功能模块,但该地址转换模块也可以是处于内存管理单元外部的以独立编程的硬件电路或硬件部件,或者也可以是集成在处理器的控制单元中的功能模块。本文对地址转换模块的具体实现形式不进行任何限制,只要是能支持实现本申请中描述的功能、过程或步骤的任何软件、硬件或软硬件的组合都可适用。
如上文提到的,该地址转换寄存器可以供超级用户模式中运行的系统软件模块进行存取,其用于保存待转换的虚拟地址和转换后的物理地址。该寄存器还可以包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。当在超级用户模式中系统软件模块需要进行地址转换时,可以将待转换的虚拟地址作为访问寄存器指令的参数来将该虚拟地址写入寄存器中。
在该实施例中,地址转换模块被配置为从地址转换寄存器中读取待转换的虚拟地址,通过查询存储单元中的页表获取与该虚拟地址对应的物理地址,并将其写入至地址转换寄存器中。
图3示出了该处理器中地址转换模块执行从虚拟地址到物理地址的转换的示例过程。如图3所示,地址转换模块在从地址转换寄存器获得待转换的虚拟地址之后,通过读取页表基地址寄存器获得页目录表的起始的物理地址(即根地址),找到页目录所在的物理页,接着根据虚拟地址的页目录索引,找到相应的页目录项PDE,其中记录有这个虚拟地址所对应页表的起始物理地址;有了页表的物理地址,根据虚拟地址的页表索引,找到该页表中相应的页表项PTE,该页表项中就有这个虚拟地址所对应物理页的起始物理地址;最后页内偏移,加上这个物理页的起始物理地址,就得到了该虚拟地址所对应的物理地址。可以看出,在机器模式中运行的地址转换模块将每一级页表查询操作得到的物理地址直接用于下一级的查询,由此,避免了超级用户模式中纯软件遍历页表过程中频繁的地址映射操作,提高了地址转换的速度和效率。
在又一个实施例中,该处理器还可包括与地址转换模块对应的缓存区,该缓存区用于保存快速地址转换表。该地址转换模块可以在通过查询页表获取的与虚拟地址对应的物理地址后,将该物理地址与相应的虚拟地址保存在这个快速地址转换表中。这样,当地址转换模块在响应于检测到地址转换寄存器的状态变化,从中读取待转换的虚拟地址之后,可以首先从快速地址转换表中查找与待转换的虚拟地址相对应的物理地址,如果先前已经执行过对于这个虚拟地址的转换,则在这个快速地址转换表中可以快速地定位到该虚拟地址对应的物理地址,由此避免了后续遍历多级页表的过程,进一步提高地址转换的速度和效率。反之,如果在快速地址转换表中没有未找到与待转换的虚拟地址相对应的物理地址,则继续通过查询页表获取与虚拟地址对应的物理地址。
应指出,尽管上文以RISC-V架构的处理器工作模式为例对本申请的实施例进行介绍,但本领域普通技术人员应理解上述实施例也适用在ARM架构的处理器中。
在本申请的又一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上文结合图1所介绍的方法。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或与其结合使用。
应理解,对于本文中提到的步骤、过程或方法,以及诸如地址转换模块之类的模块及其功能,除了以纯计算机可读程序代码方式实现之外,完全可以通过将相应功能模块、过程或步骤进行逻辑编程在使得这些模块以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等形式来实现相同功能。因此,这样实现的模块或装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的子模块也可以视为硬件部件的内部结构。或者,可以将用于实现各种功能的装置视为既可以是实现相关过程或方法步骤的软件模块又可以是硬件部件内的结构。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。
本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
虽然本申请已经通过上述实施例进行了描述,然而本申请并非局限于这里所描述的实施例,在不脱离本申请范围的情况下还包括所做出的各种改变以及变化。

Claims (11)

1.一种用于超级用户模式中获取物理地址的方法,包括:
在超级用户模式中将待转换的虚拟地址写入对超级用户模式可用的寄存器中;
响应于检测到所述寄存器的状态变化,在机器模式中从所述寄存器中读取所述虚拟地址,通过查询页表获取与所述虚拟地址对应的物理地址,并将其写入至所述寄存器中;
在超级用户模式中通过读取所述寄存器来获取与所述虚拟地址对应的物理地址。
2.根据权利要求1所述的方法,还包括:
在机器模式中将通过查询页表获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第一快速地址转换表中。
3.根据权利要求2所述的方法,其中:
在响应于检测到所述寄存器的状态变化,在机器模式中从所述寄存器中读取所述虚拟地址时,先从所述第一快速地址转换表中查找与待转换的虚拟地址相对应的物理地址;若未找到,则通过查询页表获取与所述虚拟地址对应的物理地址。
4.根据权利要求1-3中任一项所述的方法,还包括:
在超级用户模式中将通过读取所述寄存器获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第二快速地址转换表中。
5.根据权利要求4所述的方法,其中:
在超级用户模式中响应于将虚拟地址转换成物理地址的请求,从所述第二快速地址转换表中查找与待转换的虚拟地址相对应的物理地址,若未找到,则待转换的虚拟地址作为参数写入所述寄存器中,并通过读取所述寄存器来获取与所述虚拟地址对应的物理地址。
6.根据权利要求1-3中任一项所述的方法,其中所述寄存器还包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。
7.一种处理器,至少具有机器模式和超级用户模式,并且至少包括在机器模式下运行的地址转换模块和对超级用户模式可用的寄存器,其中所述寄存器用于保存虚拟地址和物理地址;以及
其中所述地址转换模块被配置为:
响应于检测到所述寄存器的状态变化,从所述寄存器中读取所述虚拟地址,通过查询页表获取与所述虚拟地址对应的物理地址,并将其写入至所述寄存器中。
8.根据权利要求7所述的处理器,其中所述寄存器还包括状态标识位,用于指示其当前存储的是虚拟地址还是物理地址。
9.根据权利要求7所述的处理器,其中所述地址转换模块还被配置为:将通过查询页表获取的与所述虚拟地址对应的物理地址以及所述虚拟地址保存在第一快速地址转换表中。
10.根据权利要求9所述的处理器,其中所述地址转换模块还被配置为:
在响应于检测到所述寄存器的状态变化,从所述寄存器中读取所述虚拟地址时,先从所述第一快速地址转换表中查找与待转换的虚拟地址相对应的物理地址;若未找到,则通过查询页表获取与所述虚拟地址对应的物理地址。
11.一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-6中任一项所述的方法。
CN202211359883.6A 2022-11-02 2022-11-02 用于超级用户模式中获取物理地址的方法及相应处理器 Pending CN115774683A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211359883.6A CN115774683A (zh) 2022-11-02 2022-11-02 用于超级用户模式中获取物理地址的方法及相应处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211359883.6A CN115774683A (zh) 2022-11-02 2022-11-02 用于超级用户模式中获取物理地址的方法及相应处理器

Publications (1)

Publication Number Publication Date
CN115774683A true CN115774683A (zh) 2023-03-10

Family

ID=85390187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211359883.6A Pending CN115774683A (zh) 2022-11-02 2022-11-02 用于超级用户模式中获取物理地址的方法及相应处理器

Country Status (1)

Country Link
CN (1) CN115774683A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934587A (zh) * 2023-03-15 2023-04-07 瀚博半导体(上海)有限公司 内存管理单元和内存管理方法
CN117331853A (zh) * 2023-10-11 2024-01-02 上海合芯数字科技有限公司 缓存处理方法、装置、电子设备及介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934587A (zh) * 2023-03-15 2023-04-07 瀚博半导体(上海)有限公司 内存管理单元和内存管理方法
CN117331853A (zh) * 2023-10-11 2024-01-02 上海合芯数字科技有限公司 缓存处理方法、装置、电子设备及介质
CN117331853B (zh) * 2023-10-11 2024-04-16 上海合芯数字科技有限公司 缓存处理方法、装置、电子设备及介质

Similar Documents

Publication Publication Date Title
US5526504A (en) Variable page size translation lookaside buffer
US8151085B2 (en) Method for address translation in virtual machines
CN115774683A (zh) 用于超级用户模式中获取物理地址的方法及相应处理器
US5479627A (en) Virtual address to physical address translation cache that supports multiple page sizes
US10191853B2 (en) Apparatus and method for maintaining address translation data within an address translation cache
JPH11161547A (ja) データ処理装置用記憶装置、および記憶場所にアクセスする方法
JP2000122927A (ja) 仮想領域番号によってアクセスするコンピュ―タ・システム
US20080034179A1 (en) Guard bands in very large virtual memory pages
JPH0749812A (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
MX2008013345A (es) Memoria asociada de instrucciones etiquetada virtualmente con un comportamiento etiquetado fisicamente.
WO2007024937A1 (en) Tlb lock indicator
JPH04320553A (ja) アドレス変換機構
JPH10228419A (ja) 様々なデフォルト・アドレス変換属性を事前ロードする方法および装置
JP2009512944A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
CN114860627B (zh) 基于地址信息动态生成页表的方法
US7558940B2 (en) Virtual memory translator for real-time operating systems
CN107533513B (zh) 突发转换后备缓冲器
CN114546898A (zh) 一种tlb管理方法、装置、设备及存储介质
US5319761A (en) Directory look-aside table for a virtual storage system including means for minimizing synonym entries
US20020087824A1 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
CN114741338B (zh) 旁路转换缓存器、数据更新方法、内存管理单元及芯片
US7519791B2 (en) Address conversion technique in a context switching environment
CN110362509B (zh) 统一地址转换方法与统一地址空间
JP2008511882A (ja) 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法
CN110147670B (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
TA01 Transfer of patent application right

Effective date of registration: 20240329

Address after: 310012 building C, 15th floor, building a, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: C-SKY MICROSYSTEMS Co.,Ltd.

Country or region after: China

Address before: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201203

Applicant before: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

Country or region before: China

TA01 Transfer of patent application right