CN105283855B - 一种寻址方法及装置 - Google Patents
一种寻址方法及装置 Download PDFInfo
- Publication number
- CN105283855B CN105283855B CN201480000679.2A CN201480000679A CN105283855B CN 105283855 B CN105283855 B CN 105283855B CN 201480000679 A CN201480000679 A CN 201480000679A CN 105283855 B CN105283855 B CN 105283855B
- Authority
- CN
- China
- Prior art keywords
- virtual address
- address
- page
- predeterminated position
- value
- 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.)
- Active
Links
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
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
本发明涉及计算机技术领域,尤其涉及一种寻址方法及装置,用以解决寻址效率较低的问题。本发明方法包括:接收地址转换请求,所述地址转换请求中包含有虚拟地址;根据所述虚拟地址中第一预设位置的值,从MMU管理的多个寄存器中确定待访问的寄存器,其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;根据所述虚拟地址中第二预设位置的值,在待访问的寄存器保存的页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项;根据查找到的所述页表项将所述虚拟地址转换为物理地址。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种寻址方法及装置。
背景技术
在计算机应用中,处理器一般会使用虚拟地址访问内存。在使用虚拟地址访问内存时,需要先将虚拟地址转换成物理地址,从而可以确定数据在内存中的实际位置。CPU一般采用内存管理单元(Memory management Unit,MMU)来完成虚拟地址到物理地址的映射。
MMU通过建立页表项实现从虚拟地址到物理地址的映射。在二级管理模式下,基于页表项的地址查询方式依次包括对页目录和页表的查询。其中,页目录中存储有多个页表的基地址,每个页表中存储有多个页表项。页表项中记录有这个虚拟地址所对应物理页的物理基地址。
进程是操作系统结构的基础,它是一个具有独立功能的程序关于某个数据集合的一次运行活动,可以认为是一次程序的执行。内核是操作系统的核心,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程和内存。每个进程都有其各自专用的虚拟地址空间(即用户空间)以及用于寻址的页目录;同时,每个进程可以通过系统调用进入内核,因此,系统内所有进程共享内核的虚拟地址空间(即内核空间)以及内核的页目录。中央处理器(Central Processing Unit,CPU)中只存在一个保存页目录基地址的寄存器(即CR3寄存器)。在进程调度时,该寄存器指向当前进程的页目录基地址,在进程切换时,该寄存器切换当前所指向的页目录基地址。当任意一个进程需要访问内核的虚拟地址空间时,需要将内核的页目录中页表的基地址拷贝到该进程的页目录下,增加了操作时间。
发明内容
本发明实施例提供一种寻址方法及装置,用以解决寻址效率较低的问题。
第一方面,提供一种寻址方法,该方法包括:
接收地址转换请求,所述地址转换请求中包含有虚拟地址;
根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址,其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;
根据查找到的所述页表项将所述虚拟地址转换为物理地址;
其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
结合第一方面,在第一种可能的实现方式中,所述根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器包括:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
结合第一方面,或第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述根据确定的所述页表项将所述虚拟地址转换为物理地址,包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
第二方面,提供一种寻址装置,包括:
接收模块,用于接收地址转换请求,所述地址转换请求中包含有虚拟地址;
确定模块,用于根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
第一查找模块,用于根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
第二查找模块,用于根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同;
转换模块,用于根据所述第二查找模块查找到的所述页表项,将所述虚拟地址转换为物理地址。
结合第二方面,在第一种可能的实现方式中,所述确定模块具体用于:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
结合第二方面,或第二方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述转换模块具体用于:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
第三方面,提供一种寻址装置,该装置包括处理器、存储器和总线,所述存储器存储执行指令,当所述装置运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述装置执行如下方法:
接收地址转换请求,所述地址转换请求中包含有虚拟地址;
根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;
根据查找到的所述页表项将所述虚拟地址转换为物理地址;
其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
结合第三方面,在第一种可能的实现方式中,所述处理器执行的所述方法中,所述根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器包括:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
结合第三方面,或第三方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述处理器执行的所述方法中,所述根据确定的所述页表项将所述虚拟地址转换为物理地址,包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
采用上述方法,MMU可以管理多个寄存器,其中不同的寄存器可以管理不同的内存空间,根据这种方式,不同的寄存器可以保存不同的内存空间的页目录基地址。当任意一个进程需要基于虚拟地址访问内存时,从MMU管理的多个寄存器中,确定管理该虚拟地址所属的内存空间的待访问寄存器,根据待访问寄存器所指向的页目录基地址进行寻址。因此,采用上述方法,在需要访问进程专用的虚拟地址空间时,可以通过进程专用的虚拟地址空间对应的寄存器进行寻址,在需要访问内核的虚拟地址空间时,可以直接通过内核的虚拟地址空间对应的寄存器进行寻址,而不必再将内核的页表的基地址拷贝到该进程的页目录下,节省了操作时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为CPU的线路连接示意图;
图2为本发明实施例一提供的寻址方法流程图;
图3为采用两个寄存器分别保存进程专用的虚拟地址空间和内核的虚拟地址空间的页目录基地址的示意图;
图4(a)为采用虚拟地址的62、63位来标识不同的寄存器的示意图;
图4(b)为采用虚拟地址的0、1位来标识不同的寄存器的示意图;
图4(c)为采用虚拟地址的31、32位来标识不同的寄存器的示意图;
图5为本发明实施例中针对32位操作系统进行地址转换的示意图;
图6为本发明实施例中针对64位操作系统进行地址转换的示意图;
图7为本发明实施例二提供的寻址装置示意图;
图8为本发明实施例三提供的寻址装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明实施例应用于处理器在读或写入内存时,进行地址转换的场景。在处理器中,每次程序的执行由进程来完成。在进程运行中,涉及对内存的读写操作。其中,用户模式下运行的进程在对内存执行操作时,需要通过MMU将该进程专用的虚拟地址空间(即用户空间)中的虚拟地址转换成物理地址。虚拟地址也可以称为虚地址,物理地址也可以称为实地址。核心操作系统组件和多个驱动程序大多需要进程在内核模式下运行(进程通过系统调用进入内核),此时,进程在运行中对内存执行操作时,需要通过MMU将内核的虚拟地址空间(即内核空间)中的虚拟地址转换成物理地址。这里的MMU是CPU中用于管理虚拟存储器、物理存储器的控制线路,同时也负责将虚拟地址映射为物理地址。
如图1所示,图1为CPU的线路连接示意图。CPU中的MMU通过地址总线接收CPU执行单元(如上述进程)发送的虚拟地址,并将该虚拟地址转换成物理地址。按照现有的地址转换方式,CPU中只存在一个寄存器保存页目录基地址。进程在对内存执行操作时,将需要进行地址转换的虚拟地址发送给MMU,若MMU确定所述需要进行地址转换的虚拟地址属于进程专用的虚拟地址空间,则直接确定管理的寄存器当前所指向的页目录基地址,若MMU确定所述需要进行地址转换的虚拟地址属于内核空间,则还需要将内核的页表的基地址拷贝到该进程的页目录下,并确定管理的寄存器当前所指向的页目录基地址。在确定页目录基地址之后,对于32位操作系统,可以从该页目录基地址所指向的物理页面中,查询虚拟地址的第22位到第31位对应的页表的基地址;从该页表的基地址所指向的物理页面中,查询该虚拟地址的第12位到第21位对应的页表项;该页表项中记录有该虚拟地址对应的页面的物理基地址,将该物理基地址与该虚拟地址所标识的页内偏移量进行组合即为转换后的物理地址。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图2所示,为本发明实施例一提供的寻址方法流程图。该实施例一的寻址流程涉及虚拟地址到物理地址的转换过程。其中,物理地址是放在寻址总线上的实体地址,根据物理地址,可直接确定数据在内存中的实际位置。虚拟地址是虚拟地址空间中的地址,使用虚拟地址的优势在于:可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的内存缓冲区。不同进程使用的虚拟地址可以彼此隔离,从而一个进程中的代码无法更改正在由另一进程使用的物理内存。
本发明实施例一的步骤主要包括:
S201:接收地址转换请求,所述地址转换请求中包含有虚拟地址;
本发明实施例一所有步骤的执行主体可以为CPU中的内存管理单元(Memorymanagement Unit,MMU)。具体地,MMU接收CPU执行单元(如进程)通过地址总线发送的包含虚拟地址的地址转换请求。
S202:根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间。
本发明实施例中,为MMU配置了多个保存页目录基地址的寄存器,不同的寄存器保存不同的内存空间的页目录基地址。这里的内存空间可以是内核的虚拟地址空间(即内核空间)或进程专用的虚拟地址空间(及用户空间)。在具体实施过程中,保存不同的内存空间的页目录基地址的寄存器可以是预先设定的。例如,设置保存进程专用的虚拟地址空间的页目录基地址的寄存器为Cr3,设置保存内核的虚拟地址空间的页目录基地址的寄存器为Crm。如图3所示,图3为采用两个寄存器分别保存进程专用的虚拟地址空间和内核的虚拟地址空间的页目录基地址的示意图。当所述虚拟地址为进程专用的虚拟地址空间中的虚拟地址时,可以通过Cr3寄存器指向的页目录基地址,进行页表项查询;当所述虚拟地址为内核的虚拟地址空间中的虚拟地址时,可以通过Crm寄存器指向的页目录基地址,进行页表项查询。
在需要进行地址转换时,首先确定保存虚拟地址对应的内存空间的页目录基地址的寄存器(即待访问寄存器)。CPU确定待访问寄存器的方式具体可以是:根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。在本发明实施例中,预设的寄存器与不同的数值之间具有对应关系,该对应关系可以是预先定义的,在进行地址转换时,根据该预先定义的对应关系,确定所述虚拟地址的第一预设位置的值所标识的寄存器,将所述虚拟地址的第一预设位置的值所标识的寄存器作为所述待访问寄存器。这里的第一预设位置的值具体可以是虚拟地址的高N位、低N位、中间N位,或整个虚拟地址的值等,在此不进行限制。例如,如图4(a)所示,在64位操作系统下,可以采用虚拟地址的62、63位上的数值00、01、10、11来标识不同的寄存器。在本发明实施例中,数值00、01、10、11分别对应预设的不同的寄存器,比如,数值00对应预设的寄存器Cr3,数值01对应预设的寄存器Crm,数值10对应预设的寄存器Crn,数值11对应预设的寄存器Crx。如图4(b)所示,在64位操作系统下,还可以采用虚拟地址的0、1位上的数值00、01、10、11来标识不同的寄存器,如图4(c)所示,在64位操作系统下,还可以采用虚拟地址的31、32位上的数值00、01、10、11来标识不同的寄存器。当将整个虚拟地址的值作为所述第一预设位置的值时,可以首先确定所述虚拟地址所属的内存空间(也即所属的虚拟地址范围),根据不同的内存空间与寄存器的对应关系,确定所述待访问的寄存器。
S203:根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
S204:根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
在步骤S203和步骤S204中,根据待访问的寄存器当前所指向的页目录基地址,定位到页目录所在的物理页面。在所述页目录中包含多个目录项,每个目录项中记录对应的虚拟地址的第二预设位置的值与页表的基地址的对应关系,因此,根据虚拟地址的第二预设位置的值,可以查找到所述虚拟地址所指向的页表的基地址。在查找到所述虚拟地址所指向的页表的基地址之后,可以根据查找到的页表的基地址,定位到所述页表所在的物理页面。在所述页表中包含多个页表项,每个页表项中记录虚拟地址的第三预设位置的值与页面的物理基地址的对应关系,因此,根据所述虚拟地址的第三预设位置的值,可以查找到具体的页表项,也即查找到所述虚拟地址所对应的页面的物理基地址,这里的物理基地址即为页面的起始物理地址。
S205:根据查找到的所述页表项,将所述虚拟地址转换为所述物理地址。
这里,根据确定的所述页表项,将所述虚拟地址转换为物理地址的过程具体包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
比如,在步骤S205中,在查找到所述虚拟地址对应的页表项后,将所述页表项中记录的M位物理基地址与所述虚拟地址中的N位页内偏移量组合在一起,作为转换后的M+N位物理地址。
下面,分别针对32位和64位操作系统,列举两个本发明实施例中进行地址转换的具体示例。需要说明的是,本发明实施例中设定的第一预设位置、第二预设位置、第三预设位置和第四预设位置仅作为本发明中可选的实施方式之一,在具体实施中,可以根据实际需要及操作系统类型变换各预设位置。
如图5所示,图5为本发明实施例中针对32位操作系统进行地址转换的示意图。图5中,虚拟地址的30、31位的值为所述第一预设位置的值,用于标识待访问的寄存器;虚拟地址的20~29位的值为所述第二预设位置的值,可作为目录项的索引,该目录项中记录有所述第二预设位置的值所对应的页表的基地址;虚拟地址的10~19位的值为所述第三预设位置的值,可作为页表项的索引,该页表项中记录有所述第三预设位置的值所对应的页面的物理基地址;虚拟地址的0~9位的值为所述第四预设位置的值,用于标识页内偏移量。
实际应用中,在进行地址转换时,可以根据虚拟地址的30、31位的值,确定待访问的寄存器为Cr3,根据Cr3当前所指向的页目录的基地址,定位到页目录所在的物理页面。之后,以所述虚拟地址的20~29位的值作为索引,在所述页目录所在的物理页面中查询具体的目录项,该目录项中记录有所述虚拟地址的20~29位的值所对应的页表的基地址。根据查找到的页表的基地址,定位到页表所在的物理页面。之后,以虚拟地址的10~19位的值作为索引,在所述页表所在的物理页面中查询具体的页表项,该页表项中记录有所述虚拟地址的10~19位的值所对应的页面的物理基地址。之后,将查找到的该物理基地址与虚拟地址的0~9位的值进行组合,即为转换后的物理地址。
如图6所示,图6为本发明实施例中针对64位操作系统进行地址转换的示意图。图6中,虚拟地址的62、63位的值为所述第一预设位置的值,用于标识待访问的寄存器;虚拟地址的41~61位的值为所述第二预设位置的值,可作为目录项的索引,该目录项中记录有所述第二预设位置的值所对应的页表的基地址;虚拟地址的20~40位的值为所述第三预设位置的值,可作为页表项的索引,该页表项中记录有所述第三预设位置的值所对应的页面的物理基地址;虚拟地址的0~19位的值为所述第四预设位置的值,用于标识页内偏移量。
实际应用中,在进行地址转换时,可以根据虚拟地址的62、63位的值,确定待访问的寄存器为Crm,根据Crm当前所指向的页目录的基地址,定位到页目录所在的物理页面。之后,以所述虚拟地址的41~61位的值作为索引,在所述页目录所在的物理页面中查询具体的目录项,该目录项中记录有所述虚拟地址的41~61位的值所对应的页表的基地址。根据查找到的页表的基地址,定位到页表所在的物理页面。之后,以虚拟地址的20~40位的值作为索引,在所述页表所在的物理页面中查询具体的页表项,该页表项中记录有所述虚拟地址的20~40位的值所对应的页面的物理基地址。之后,将查找到的该物理基地址与虚拟地址的0~19位的值进行组合,即为转换后的物理地址。
采用本发明以上实施例提供的寻址方法,MMU通过不同的寄存器分别保存内核空间和进程专用的虚拟地址空间的页目录基地址,在需要访问进程专用的虚拟地址空间时,可以通过进程专用的虚拟地址空间对应的寄存器进行寻址,在需要访问内核的虚拟地址空间时,可以直接通过内核的虚拟地址空间对应的寄存器进行寻址,从而不必再将内核的页表的基地址拷贝到该进程的页目录下,节省了操作时间。同时,由于内核页目录中只包括内核页表的基地址,可以提高寻址效率。
基于同一发明构思,本发明实施例中还提供了与寻址方法对应的寻址装置,由于本发明实施例中的装置解决问题的原理与本发明实施例上述寻址方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,为本发明实施例二提供的寻址装置示意图,包括:
接收模块71,用于接收地址转换请求,所述地址转换请求中包含有虚拟地址;
确定模块72,用于根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址,将所述页目录的基地址传输至第一查找模块73;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
第一查找模块73,用于根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址,并将查找到的所述页表的基地址传输至第二查找模块74;
第二查找模块74,用于根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同;
转换模块75,用于根据所述第二查找模块74查找到的所述页表项,将所述虚拟地址转换为物理地址。
可选地,所述确定模块具体用于:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
可选地,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
可选地,所述转换模块75具体用于:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
采用本发明以上实施例提供的寻址装置,MMU通过不同的寄存器分别保存内核空间和进程专用的虚拟地址空间的页目录基地址,确定模块可以从MMU管理的多个寄存器中确定待访问的寄存器。在需要访问进程专用的虚拟地址空间时,第一查找模块可以通过进程专用的虚拟地址空间对应的寄存器中保存的页目录基地址来确定进程的页目录所在的物理页面,在需要访问内核的虚拟地址空间时,第一查找模块可以直接通过内核的虚拟地址空间对应的寄存器中保存的页目录基地址来确定内核的页目录所在的物理页面,从而不必再将内核的页表的基地址拷贝到该进程的页目录下,节省了操作时间。同时,由于内核页目录中只包括内核页表的基地址,可以提高寻址效率。
如图8所示,为本发明实施例三提供的寻址装置80示意图,该装置包括处理器81、存储器82和总线83,所述存储器82存储执行指令,当所述装置运行时,所述处理器81与所述存储器82之间通过总线83通信,所述处理器81执行所述执行指令使得所述装置执行如下方法:
接收地址转换请求,所述地址转换请求中包含有虚拟地址;
根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的物理页面中查找所述虚拟地址指向的页表的基地址;
根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的物理页面中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;
根据查找到的所述页表项将所述虚拟地址转换为物理地址;
其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
可选地,所述处理器执行的所述方法中,所述根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器包括:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
可选地,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
可选地,所述处理器81执行的所述方法中,所述根据确定的所述页表项将所述虚拟地址转换为物理地址,包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
采用本发明以上实施例提供的寻址装置,MMU通过不同的寄存器分别保存内核空间和进程专用的虚拟地址空间的页目录基地址,处理器可以从MMU管理的多个寄存器中确定待访问的寄存器。在需要访问进程专用的虚拟地址空间时,处理器可以通过进程专用的虚拟地址空间对应的寄存器进行寻址,在需要访问内核的虚拟地址空间时,处理器可以直接通过内核的虚拟地址空间对应的寄存器进行寻址,从而不必再将内核的页表的基地址拷贝到该进程的页目录下,节省了操作时间。同时,由于内核页目录中只包括内核页表的基地址,可以提高寻址效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (12)
1.一种寻址方法,其特征在于,该方法包括:
接收地址转换请求,所述地址转换请求中包含有虚拟地址;
根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址,其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;
根据查找到的所述页表项将所述虚拟地址转换为物理地址;
其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
2.如权利要求1所述的方法,其特征在于,所述根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器包括:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
3.如权利要求1所述的方法,其特征在于,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
4.如权利要求1~3任一所述的方法,其特征在于,所述根据查找到的所述页表项将所述虚拟地址转换为物理地址,包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
5.一种寻址装置,其特征在于,该装置包括:
接收模块,用于接收地址转换请求,所述地址转换请求中包含有虚拟地址;
确定模块,用于根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
第一查找模块,用于根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
第二查找模块,用于根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同;
转换模块,用于根据所述第二查找模块查找到的所述页表项,将所述虚拟地址转换为物理地址。
6.如权利要求5所述的装置,其特征在于,所述确定模块具体用于:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
7.如权利要求5所述的装置,其特征在于,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
8.如权利要求5~7任一所述的装置,其特征在于,所述转换模块具体用于:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
9.一种寻址装置,其特征在于,该装置包括处理器、存储器和总线,所述存储器存储执行指令,当所述装置运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述装置执行如下方法:
接收地址转换请求,所述地址转换请求中包含有虚拟地址;
根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器,所述待访问的寄存器中保存有与所述虚拟地址对应的内存空间的页目录的基地址;其中,所述内存空间至少包括以下之一:内核的虚拟地址空间和进程的虚拟地址空间;
根据所述虚拟地址中第二预设位置的值,在所述页目录的基地址所指向的页目录中查找所述虚拟地址指向的页表的基地址;
根据所述虚拟地址中第三预设位置的值,在所述页表的基地址所指向的页表中查找所述虚拟地址对应的页表项,所述页表项中记录有所述虚拟地址所对应的页面的物理基地址;
根据查找到的所述页表项将所述虚拟地址转换为物理地址;
其中,所述第一预设位置、所述第二预设位置与所述第三预设位置互不相同。
10.如权利要求9所述的装置,其特征在于,所述处理器执行的所述方法中,所述根据所述虚拟地址中第一预设位置的值,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器包括:
根据所述虚拟地址中第一预设位置的值,以及预设的寄存器与数值的对应关系,从内存管理单元MMU管理的多个寄存器中确定待访问的寄存器。
11.如权利要求9所述的装置,其特征在于,所述第一预设位置为所述虚拟地址的高N位,N为正整数,且N≥1。
12.如权利要求9~11任一所述的装置,其特征在于,所述处理器执行的所述方法中,所述根据确定的所述页表项将所述虚拟地址转换为物理地址,包括:
将所述页表项中记录的所述虚拟地址对应的页面的物理基地址与所述虚拟地址中第四预设位置的值进行组合,确定组合后的地址为将所述虚拟地址转换后的物理地址;其中,所述虚拟地址中第四预设位置的值为页内偏移量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/076227 WO2015161506A1 (zh) | 2014-04-25 | 2014-04-25 | 一种寻址方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105283855A CN105283855A (zh) | 2016-01-27 |
CN105283855B true CN105283855B (zh) | 2018-01-23 |
Family
ID=54331641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000679.2A Active CN105283855B (zh) | 2014-04-25 | 2014-04-25 | 一种寻址方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105283855B (zh) |
WO (1) | WO2015161506A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857553A (zh) * | 2019-01-11 | 2019-06-07 | 华为技术有限公司 | 内存管理方法及装置 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107870867B (zh) * | 2016-09-28 | 2021-12-14 | 北京忆芯科技有限公司 | 32位cpu访问大于4gb内存空间的方法与装置 |
CN107870870B (zh) * | 2016-09-28 | 2021-12-14 | 北京忆芯科技有限公司 | 访问超过地址总线宽度的内存空间 |
CN106502924B (zh) * | 2016-10-27 | 2020-02-07 | 深圳创维数字技术有限公司 | 一种内存优化方法及系统 |
CN109710544B (zh) * | 2017-10-26 | 2021-02-09 | 华为技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
GB2568059B (en) * | 2017-11-02 | 2020-04-08 | Advanced Risc Mach Ltd | Method for locating metadata |
CN111061655B (zh) * | 2017-12-28 | 2022-06-17 | 贵阳忆芯科技有限公司 | 存储设备的地址转换方法与设备 |
CN108491334B (zh) * | 2018-03-08 | 2020-10-23 | 北京东土科技股份有限公司 | 一种嵌入式实时系统的物理内存管理方法及装置 |
CN108845959B (zh) * | 2018-06-25 | 2023-06-23 | 联想(北京)有限公司 | 一种内存数据处理方法、装置和电子设备 |
CN109144901B (zh) * | 2018-10-10 | 2024-01-02 | 古进 | 公式化虚拟地址转换 |
CN110046106B (zh) * | 2019-03-29 | 2021-06-29 | 海光信息技术股份有限公司 | 一种地址转换方法、地址转换模块及系统 |
CN111881062A (zh) * | 2020-06-12 | 2020-11-03 | 海光信息技术有限公司 | 内存页的分页方法、装置、cpu芯片及计算机 |
CN112256598B (zh) * | 2020-10-27 | 2022-10-28 | 上海壁仞智能科技有限公司 | 一种内存分配的方法及装置、内存寻址的方法及装置 |
CN116225974B (zh) * | 2021-12-03 | 2024-08-27 | 华为技术有限公司 | 内存管理方法及其设备 |
CN114781323B (zh) * | 2022-04-24 | 2023-08-18 | 苏州睿芯集成电路科技有限公司 | Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法 |
CN115190102B (zh) * | 2022-07-22 | 2024-04-16 | 北京象帝先计算技术有限公司 | 信息广播方法、装置、电子单元、soc及电子设备 |
CN115757260B (zh) * | 2023-01-09 | 2023-04-14 | 摩尔线程智能科技(北京)有限责任公司 | 数据交互方法、图形处理器及图形处理系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739359A (zh) * | 2009-12-17 | 2010-06-16 | 深圳华为通信技术有限公司 | 存储装置、移动终端及数据访问方法、调频方法 |
CN101821723A (zh) * | 2007-11-21 | 2010-09-01 | 密克罗奇普技术公司 | 以太网控制器 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7594093B1 (en) * | 2006-10-12 | 2009-09-22 | Foundry Networks, Inc. | Virtual memory mapping for efficient memory usage |
-
2014
- 2014-04-25 WO PCT/CN2014/076227 patent/WO2015161506A1/zh active Application Filing
- 2014-04-25 CN CN201480000679.2A patent/CN105283855B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101821723A (zh) * | 2007-11-21 | 2010-09-01 | 密克罗奇普技术公司 | 以太网控制器 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
CN101739359A (zh) * | 2009-12-17 | 2010-06-16 | 深圳华为通信技术有限公司 | 存储装置、移动终端及数据访问方法、调频方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857553A (zh) * | 2019-01-11 | 2019-06-07 | 华为技术有限公司 | 内存管理方法及装置 |
CN109857553B (zh) * | 2019-01-11 | 2023-07-28 | 华为云计算技术有限公司 | 内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015161506A1 (zh) | 2015-10-29 |
CN105283855A (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105283855B (zh) | 一种寻址方法及装置 | |
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
CN105830059B (zh) | 文件访问方法、装置及存储设备 | |
CN102792285B (zh) | 用于处理数据的装置和方法 | |
KR102144491B1 (ko) | 계층적 메모리 시스템을 위한 메모리 관리 | |
KR101708142B1 (ko) | 속성 필드의 멀티-코어 페이지 테이블 세트 | |
CN105830022B (zh) | 访问文件的方法和装置 | |
KR102051698B1 (ko) | 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들 | |
US9256545B2 (en) | Shared memory access using independent memory maps | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
CN107209715A (zh) | 文件数据访问方法和计算机系统 | |
CN104239237B (zh) | 一种tlb管理方法及装置 | |
CN104050089A (zh) | 片上系统及其操作方法 | |
US9436751B1 (en) | System and method for live migration of guest | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
CN104407935A (zh) | 快照回滚方法和存储设备 | |
US9984003B2 (en) | Mapping processing method for a cache address in a processor to provide a color bit in a huge page technology | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN102023843A (zh) | 函数的调用方法、装置及智能卡 | |
CN104516822A (zh) | 一种内存访问方法和设备 | |
US20160170896A1 (en) | N-ary tree for mapping a virtual memory space | |
US8028118B2 (en) | Using an index value located on a page table to index page attributes | |
CN107209761B (zh) | 一种数据访问方法、装置及系统 | |
CN105659216B (zh) | 多核处理器系统的缓存目录处理方法和目录控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |