CN105446889A - 一种内存管理方法、装置以及内存控制器 - Google Patents
一种内存管理方法、装置以及内存控制器 Download PDFInfo
- Publication number
- CN105446889A CN105446889A CN201410373858.2A CN201410373858A CN105446889A CN 105446889 A CN105446889 A CN 105446889A CN 201410373858 A CN201410373858 A CN 201410373858A CN 105446889 A CN105446889 A CN 105446889A
- Authority
- CN
- China
- Prior art keywords
- virtual address
- page table
- page
- 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
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
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种内存管理方法和装置。本发明实施例方法包括:由存储管理装置对内存进行管理,当存储管理装置确定页表中没有所述访存请求携带的虚地址时,不触发操作系统的中断,而是由内存管理装置对内存进行管理,可以减轻操作系统的负担,其中,在确定所述虚地址合法时,申请空白页,该内存管理装置位于内存控制器中,更靠近物理内存,可以有效提高内存的管理效率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种内存管理方法、装置以及内存控制器。
背景技术
在计算机系统中,内存控制器主要负责CPU与内存之间的数据交互,而内存的实地址管理则由操作系统来实现。操作系统为某个进程分配虚地址,若在快速翻译缓冲器(TLB,TranslationLook-asideBuffer)中未缓存有该虚地址,且内存管理单元(MMU,MemoryManagementUnit)未查找到该虚地址的页表项,则产生缺页中断(pagefault),CPU陷入操作系统内核。缺页中断后,操作系统进入中断服务程序,进行现场保护,将程序计数器等当前指令的各种状态信息压入栈,然后检查虚地址的合法性,如果判断该访问非法,操作系统通常会向进程反馈一个信号或直接杀死该进程。
现有技术中,一旦MMU未查找到该虚地址的页表项,直接触发缺页中断(pagefault),使CPU长时间陷入操作系统内核。缺页中断后,操作系统要进行一系列的处理,加重操作系统的负荷,并且管理效率较低。
发明内容
本发明实施例提供了一种内存管理方法、装置以及内存控制器,用于提高内存的管理效率。
第一方面,本发明提供了一种内存管理方法,该方法应用在内存管理装置上,内存管理装置位于内存控制器中,方法包括:
接收处理器发送的访存请求,访存请求携带虚地址;
查找快速翻译缓冲器TLB中是否缓存有访存请求携带的虚地址对应的页表,若有,则从页表中获取与虚地址对应的实地址,若无,则获取页表的基地址域并查找页表,若页表有访存请求携带的虚地址,则获取与虚地址对应的实地址,其中,页表包括虚地址与实地址的对应关系,TLB位于内存管理装置中;
若页表中没有访存请求携带的虚地址,则确定虚地址是否合法,并在确定虚地址合法时,申请空白页。
在第一方面的第一种可能的实现方式中,还包括:若申请空白页成功,则启动内存读写;若申请空白页失败,则选择替换页并提供给操作系统以使得操作系统对页面进行替换。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,确定虚地址是否合法,具体包括:确定虚地址是否落在已分配的虚地址空间中,若是,则确定虚地址合法;若否,则查找虚拟内存地址VMA空间中是否存在虚地址,若存在,则确定虚地址合法。
结合第一方面、第一方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,申请空白页之前,还包括:统计缓存的每个空白页在预置时间内的使用频率;当申请空白页时,选择在预置时间内使用频率最低的空白页。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,申请空白页成功之后,还包括:更新页表以使得页表包括访存请求携带的虚地址,并将页表存入TLB。
结合第一方面、第一方面的第一至第四任一种可能的实现方式,在第五种可能的实现方式中,若查找到页表有访存请求携带的虚地址,则在获取与虚地址对应的实地址的步骤之前,还包括:将页表存入TLB。
第二方面,本发明提供了一种内存管理装置,该内存管理装置位于内存控制器中,内存管理装置包括:快速翻译缓冲器TLB、内存管理单元MMU和微控制器;
TLB,用于接收处理器发送的访存请求,访存请求携带虚地址,并查找TLB中是否缓存有访存请求携带的虚地址对应的页表,若有,则从页表中获取与虚地址对应的实地址,其中,页表包括虚地址与实地址的对应关系;
MMU,用于当TLB中未缓存有访存请求携带的虚地址对应的页表时,获取页表的基地址域并查找页表,并在页表有虚地址时,获取与虚地址对应的实地址;
微控制器,用于当页表无虚地址时,确定虚地址是否合法,并在确定虚地址合法时,申请空白页。
在第二方面的第一种可能的实现方式中,微控制器,还用于当申请空白页成功,则启动内存读写,申请空白页失败,则选择替换页并提供给操作系统以使得操作系统对页面进行替换。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,微控制器,具体用于确定虚地址是否落在已分配的虚地址空间中,若是,则确定虚地址合法,若否,则查找虚拟内存地址VMA空间中是否存在虚地址,若存在,则确定虚地址合法。
结合第二方面、第二方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,微控制器,还用于接收访存请求,获得与访存请求携带的虚地址对应的进程的页表的基地址域,并将基地址域发送给MMU,以使得MMU根据基地址域查找页表。
结合第二方面、第二方面的第一至第三任一种可能的实现方式,在第四种可能的实现方式中,微控制器,还用于统计缓存的每个空白页在预置时间内的使用频率,当申请空白页时,选择在预置时间内使用频率最低的空白页。
第三方面,本发明提供了一种内存控制器,其包括:如第二方面提供的任一种内存管理装置。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明的技术方案中,由存储管理装置对内存进行管理,可以减轻操作系统的负担,当存储管理装置确定页表中没有访存请求携带的虚地址时,不触发操作系统的中断,而是由内存管理装置对内存进行管理,其中,在确定虚地址合法时,申请空白页,该内存管理装置位于内存控制器中,更靠近物理内存,可以有效提高内存的管理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例可应用的架构示意图;
图2是本发明实施例提供的内存管理方法的一个流程示意图;
图3是本发明实施例中提供的内存管理方法的另一个流程示意图;
图4是本发明实施例中提供的内存管理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,本发明实施例提供的内存管理方法可适用于通信系统,该内存管理方法可应用在内存管理装置上,该内存管理装置位于内存控制器中。
具体可参阅图1,图1是本发明实施例可应用的架构示意图。本发明提出的内存控制器100可包括内存管理装置101、映射调度器102和物理层协议PHY103。其中,映射调度器102主要负责地址映射(如将线性地址翻译成动态随机存取存储器的rank、bank、row和column等)、请求调度、刷新控制等功能,PHY103负责内存控制器100与内存芯片建立物理链路,映射调度器102和PHY103的具体实施可参见现有技术,此处不再赘述。
当处理器请求的资源缓存未命中,则可以通过请求通路向内存控制器100发送访存请求来访问内存,其主要是通过内存控制器100中的内存管理装置101根据该缓存请求对内存进行管理。
一种内存管理方法,应用在内存管理装置101上,内存管理装置101位于内存控制器100中,方法包括:接收处理器发送的访存请求,访存请求携带虚地址;查找快速翻译缓冲器(TLB,TranslationLook-asideBuffer)中是否缓存有访存请求携带的虚地址对应的页表,若有,则从页表中获取与虚地址对应的实地址,若无,则获取页表的基地址域并查找页表,若页表有访存请求携带的虚地址,则获取与虚地址对应的实地址,其中,页表包括虚地址与实地址的对应关系,TLB位于内存管理装置中;若页表中没有访存请求携带的虚地址,则确定虚地址是否合法,并在确定虚地址合法时,申请空白页。
请参阅图2,图2是本发明实施例提供的内存管理方法的一个流程示意图。方法可包括:
步骤S201、接收处理器发送的访存请求,访存请求携带虚地址;
当处理器请求的资源缓存未命中,可以通过请求通路向内存控制器100中的内存管理装置101发送访存请求来访问内存,其中,该访存请求携带虚地址。内存管理装置101中的快速翻译缓冲器(TLB,TranslationLook-asideBuffers)和微控制器均可以接收到处理器发送的该访存请求,TLB主要负责快速地址翻译和查找页表,而微控制器主要负责做内存管理(其中包括检查该访存请求的合法性等),即TLB中没有缓存有相关页表时,才需要由微控制器进行内存管理等操作。
其中,若以本发明应用在计算机系统中为例,该处理器可以是CPU核。
步骤S202、查找快速翻译缓冲器TLB中是否缓存有访存请求携带的虚地址对应的页表,若无,则执行步骤S203,若有,则执行步骤S205,其中,页表包括虚地址与实地址的对应关系;
页表一般储存在主存储器中,页表中存储有虚地址和实地址的对应关系。而TLB可以缓存页表文件,因此,若TLB中缓存TLB,则可以从TLB中直接获取与虚地址对应的实地址,若TLB中未缓存有该页表,则可以由内存管理装置101中的内存管理单元(MMU,MemoryManagementUnit)查找页表。
S203、TLB中没有缓存访存请求携带的虚地址对应的页表,则获取页表的基地址域;
由于页表一般储存在主存储器中,MMU可能无法获知页表的基地址域从而无法直接查找页表,此时,可以由微控制器将该页表的基地址域提供给MMU。其中,页表入口地址=基地址域+虚地址的高几位。
具体的,可以在MMU查找页表之前,微控制器接收到缓存请求后,获取与访存请求携带的虚地址对应的进程的页表的基地址域,并将页表的基地址域提供给MMU,使得MMU根据页表的基地址域查找页表。一种实现方式中,微控制器可以查找进程表,获得与虚地址对应的进程的页表的基地址域,并将该页表基地址域发送给MMU。
步骤S204、根据页表的基地址域查找页表,若查找到页表有访存请求携带的虚地址,则执行步骤S205,若无,则执行步骤S206;
若页表有访存请求携带的虚地址,则执行步骤205,获取与虚地址对应的实地址后,则可以根据该实地址读取内存数据。若页表没有访存请求携带的虚地址,则执行步骤206。
步骤S205、获取与访存请求携带的虚地址对应的实地址;
在步骤S202中,查找快速翻译缓冲器TLB中缓存有访存请求携带的虚地址对应的页表,步骤S205则由TLB从页表中获取与虚地址对应的实地址;在步骤S204中,MMU查找到页表有访存请求携带的虚地址,步骤S205则由MMU获取与访存请求携带的虚地址对应的实地址。
步骤S206、查找到页表没有访存请求携带的虚地址,则确定虚地址是否合法,并在确定虚地址合法时,申请空白页。
若TLB中未缓存有页表,且MMU中的该页表也未命中,则可以由微控制器来判断该访存请求携带的虚地址是否合法。其中,判断该访存请求携带的虚地址是否合法,具体包括:
确定虚地址是否落在已分配的虚地址空间中,若是,则确定虚地址是首次访问,该虚地址合法;若否,则查找虚拟内存地址(VMA,virtualmemoryAddress)空间中是否存在虚地址,若存在,则确定虚地址合法。
其中,在确定了VMA空间中存在虚地址后,可以反馈缺页中断给操作系统,然后再由微控制器来申请空白页。
若虚地址合法,则由微控制器申请空白页,若申请的空白页成功,则可以直接启动内存读写。若申请空白页失败了,则选择替换页并将该替换页提供给操作系统,由操作系统将数据从内存写入硬盘。其中,若被淘汰的页面“干净”,则操作系统可以修改其页表项后直接使用;如果被淘汰页面“脏”了,则需要操作系统先将“脏”页面写回磁盘,并产生上下文切换,挂起该进程,直到磁盘操作结束;然后将发生缺页中断以前的状态弹出栈,自此进程进入就绪态,随时可以被操作系统调度执行。
此外,在申请空白页成功后,还可以包括,判断该申请的空白页是否是首次合法访问,若是,则可以直接启动内存读写操作,若不是,则反馈操作系统空白页已经准备好了,使得处理器中的操作系统将数据从硬盘写入内存。
若步骤S206中查找到VMA空间中不存在虚地址时,确定该虚地址非法,即判断该访存请求为非法访问,则向操作系统反馈中断,由操作系统执行下一步。
由上可知,本发明的技术方案中,当存储管理装置确定页表中没有访存请求携带的虚地址时,不触发操作系统的中断,而是由内存管理装置对内存进行管理,在确定虚地址合法时,申请空白页,该内存管理装置位于内存控制器中,更靠近物理内存,可以有效提高内存的管理效率。
为了更好的理解上述方案,本发明实施例以一具体应用例进行详细说明,具体可参阅图3,图3是本发明实施例提供的内存管理方法的另一个流程示意图。
步骤S301、TLB接收处理器发送的访存请求,访存请求携带虚地址;
步骤S302、TLB查找TLB中是否缓存有访存请求携带的虚地址对应的页表,若无,则执行步骤S303,若有,则执行步骤S305;
步骤S303、微控制器接收处理器发送的访存请求,访存请求携带虚地址,微控制器查找进程表,获得与虚地址对应的进程的页表基地址域,并将该页表基地址域发送给MMU;执行步骤S304;
其中,进程表是指由内存管理处理器核本地维护的一种数据结构表,可存放于片上SRAM中,其具体可包括:进程ID、处理器核ID、物理空间配额和管理策略等表项,这些表项是操作系统在切换进程时通过交互通道传给内存控制器的,页表的入口基地址是由内存管理处理器创建并维护,进程表对操作系统是不可见。具体实现形式可参见表一:
表一
微控制器接收处理器发送的访存请求,该缓存请求可携带进程ID,微控制器可根据该进程ID找到该进程对应的页表的位置,获取页表的基地址域并提供给MMU,使得MMU可以根据访存请求携带的虚地址查找页表。
可以理解的是,步骤S301和步骤S303时序无关,微控制器和TLB可以同时接收到处理器发送的访存请求。
步骤S304、MMU根据微控制器发送的页表的基地址域查找页表,若命中,则执行步骤S305,若不命中,则执行步骤S306;
MMU根据微控制器发送的页表的基地址域查找页表,命中,则说明该页表中包括有该访存请求携带的虚地址,则可以获取与该虚地址对应的实地址。
步骤S305、获取与虚地址对应的实地址;
如果由步骤S302跳转到步骤S305,则由TLB获取与虚地址对应的实地址,则可以采用该实地址访问内存数据;若由步骤304跳转到步骤S305,则由MMU获取与虚地址对应的实地址,则可以采用该实地址访问内存数据。
步骤S306、微控制器检查访存请求携带的虚地址是否落在最近分配的虚地址空间中,若不是,则执行步骤S307,若是,则确定该虚地址合法,则执行步骤S310;
例如,可以通过在内存控制器内部集成一个内存分配表,该内存分配表的表项记录的内容可包括:进程ID、进程Malloc的虚地址和虚地址大小。这些信息由操作系统在进程调用Malloc函数时通过交互接口传给内存控制器。
当TLB和MMU均不命中时,由微控制器查找查内存分配表。此外,微控制器也可以在接收到访存请求后,查找内存分配表,即在TLB和MMU的处理过程中,微控制器同时进行处理。当TLB和MMU均不命中,而内存分配表命中,则说明此访存请求合法且首次被访问,还尚未分配过页面,微控制器可以直接为该请求申请空白页使用。
如果TLB、MMU和内存分配表均不命中,则执行步骤S307,微控制器需要到内存中查看该进程的VMA空间,从而进一步判断MMU未命中的原因。
这样占用资源少,逻辑简单,判断快速。当Malloc项数增多以后,内存分配表可以实现一定的替换策略,比如最简单的先进先出(FIFO)策略。
步骤S307、微控制器在内存中查找该进程的虚拟内存地址VMA空间,确定该虚地址是否存在,若是,则执行步骤S309,若否,则执行步骤S308;
步骤S308,微控制器判断该请求为非法访问,向操作系统反馈中断;
由操作系统执行下一步操作,结束流程。
步骤S309、微控制器判断该请求虚地址数据在SWAP分区或文件中,反馈操作系统缺页中断,并执行步骤S310;
步骤S310、微控制器搜索空闲列表,申请空白页,如果申请失败,则跳到步骤S311,如果申请成功,则跳到步骤S313;
步骤S311、微控制器运行页面替换算法,选出一个页面换出内存;
步骤S312,微控制器更新页表项和TLB,将选出的待替换页面的地址写入反馈空间的寄存器中,并反馈操作系统替换页面已经准备好的信号;
选择了替换页面,则需要为该新的页面构建页表项,则微控制器需要更新页表和TLB。
并反馈操作系统替换页面已经准备好的信号后,由操作系统执行下一步操作,结束流程。
步骤S313、微控制器更新TLB及页表项;
申请空白页成功了,需要为该空白页构建页表项,则微控制器需要更新页表和TLB。
步骤S314、微控制器判断是否是首次申请空白页,若该访存请求不是首次合法访问,跳到步骤S315,若是,则执行步骤S316;
步骤S315,微控制器向反馈空间的写寄存器值,向操作系统发出空白页已经准备好的信号;
操作系统通过阅读反馈空间的各种信息,决定下一步操作。
步骤S316,微控制器直接启动内存读写操作。
由上可知,本发明的技术方案中,当操作系统需要修改或查找页表的时候,只需要向内存控制器发送指令,内存控制器就可以通过进程ID找到页表在内存的位置,自动完成相应的操作,其中,内存的管理由内存管理装置来实现,可以减轻操作系统的负担,可以有效提高内存的管理效率。
为便于更好的实施本发明实施例提供的内存管理方法,本发明实施例还提供一种基于上述内存管理方法的装置。其中名词的含义与上述内存管理中相同,具体实现细节可以参考方法实施例中的说明。
一种内存管理装置101,位于内存控制器中,内存管理装置101具体包括快速翻译缓冲器TLB1011、内存管理单元MMU1012和微控制器1013,请参阅图4,图4是内存管理装置的一个结构示意图。
TLB1011,用于接收处理器发送的访存请求,访存请求携带虚地址,并查找TLB中是否缓存有访存请求携带的虚地址对应的页表,若有,则从页表中获取与虚地址对应的实地址,其中,页表包括虚地址与实地址的对应关系;
MMU1012,用于当TLB中未缓存有访存请求携带的虚地址对应的页表时,获取页表的基地址域并查找页表,并在页表有虚地址时,获取与虚地址对应的实地址;
微控制器1013,用于当页表无虚地址时,确定虚地址是否合法,并在确定虚地址合法时,申请空白页。
在一个实施例中,微控制器1013,还用于当申请空白页失败,则选择替换页并提供给操作系统以使得操作系统对页面进行替换。
在一个实施例中,微控制器1013,具体用于确定虚地址是否落在已分配的虚地址空间中,若是,则确定虚地址合法,若否,则查找虚拟内存地址VMA空间中是否存在虚地址,若存在,则确定虚地址合法。
在一个实施例中,微控制器1013,还用于接收访存请求,获得与访存请求携带的虚地址对应的进程的页表的基地址域,并将基地址域发送给MMU,以使得MMU根据基地址域查找页表。
在一个实施例中,微控制器1013,还用于统计缓存的每个空白页在预置时间内的使用频率,当申请空白页时,选择在预置时间内使用频率最低的空白页。
此外,该内存管理装置101还可以包括:配置空间1014和反馈空间1015,其中,配置空间和反馈空间是操作系统与内存控制器之间的直接进行信息交互的空间。例如,配置空间和反馈空间的实现形式可以是一堆可寻址的寄存器。操作系统可以通过交互通路向配置空间发送信息,也可以从反馈空间获取信息。微控制器可以直接读取配置空间信息,也可以向反馈空间写信息。
此外,该内存管理装置101还可以包括:数据缓冲模块1016,用于缓冲读、写双向数据。
一种实现方式中,微控制器的代码可运行在片上SRAM上。
本发明实施例中的TLB和MMU均位于内存控制器中,更接近物理内存,方便硬件实现内存管理。
由上可知,本发明实施例中,由存储管理装置对内存进行管理,可以减轻操作系统的负担,当存储管理装置确定页表中没有访存请求携带的虚地址时,不触发操作系统的中断,而是由内存管理装置对内存进行管理,其中,在确定虚地址合法时,申请空白页,该内存管理装置位于内存控制器中,更靠近物理内存,可以有效提高内存的管理效率。
本发明还提供了一种内存控制器,具体可参阅图1,该内存控制器可包括上述所提供的任一种内存管理装置,该内存管理装置可包括:快速翻译缓冲器TLB、内存管理单元MMU和微控制器,其中,其具体实施可参见上述实施例,此处不再赘述。
其中,本发明实施例中的内存控制器可集成于CPU内部,也可以是独立的芯片。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上对本发明所提供的一种内存管理方法、装置以及内存控制器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种内存管理方法,其特征在于,所述方法应用在内存管理装置上,所述内存管理装置位于内存控制器中,所述方法包括:
接收处理器发送的访存请求,所述访存请求携带虚地址;
查找快速翻译缓冲器TLB中是否缓存有所述访存请求携带的虚地址对应的页表,若有,则从所述页表中获取与所述虚地址对应的实地址,若无,则获取所述页表的基地址域并查找所述页表,若所述页表有所述访存请求携带的虚地址,则获取与所述虚地址对应的实地址,其中,所述页表包括虚地址与实地址的对应关系,所述TLB位于所述内存管理装置中;
若所述页表中没有所述访存请求携带的虚地址,则确定所述虚地址是否合法,并在确定所述虚地址合法时,申请空白页。
2.根据权利要求1所述的方法,其特征在于,还包括:
若申请空白页成功,则启动内存读写;
若申请空白页失败,则选择替换页并提供给操作系统以使得所述操作系统对页面进行替换。
3.根据权利要求1或2所述的方法,其特征在于,所述确定所述虚地址是否合法,具体包括:
确定所述虚地址是否落在已分配的虚地址空间中,若是,则确定所述虚地址合法;
若否,则查找虚拟内存地址VMA空间中是否存在所述虚地址,若存在,则确定所述虚地址合法。
4.根据权利要求1-3任一所述的方法,其特征在于,所述申请空白页之前,还包括:
统计缓存的每个空白页在预置时间内的使用频率;
当申请空白页时,选择在所述预置时间内使用频率最低的空白页。
5.根据权利要求2所述的方法,其特征在于,申请空白页成功之后,还包括:
更新所述页表以使得所述页表包括所述访存请求携带的虚地址,并将所述页表存入所述TLB。
6.根据权利要求1-5任一所述的方法,其特征在于,若查找到所述页表有所述访存请求携带的虚地址,则在所述获取与所述虚地址对应的实地址的步骤之前,还包括:
将所述页表存入所述TLB。
7.一种内存管理装置,其特征在于,所述内存管理装置位于内存控制器中,所述内存管理装置包括:快速翻译缓冲器TLB、内存管理单元MMU和微控制器;
所述TLB,用于接收处理器发送的访存请求,所述访存请求携带虚地址,并查找所述TLB中是否缓存有所述访存请求携带的虚地址对应的页表,若有,则从所述页表中获取与所述虚地址对应的实地址,其中,所述页表包括虚地址与实地址的对应关系;
所述MMU,用于当所述TLB中未缓存有所述访存请求携带的虚地址对应的页表时,获取所述页表的基地址域并查找所述页表,并在所述页表有所述虚地址时,获取与所述虚地址对应的实地址;
所述微控制器,用于当所述页表无所述虚地址时,确定所述虚地址是否合法,并在确定所述虚地址合法时,申请空白页。
8.根据权利要求7所述的装置,其特征在于,
所述微控制器,还用于当申请空白页成功,则启动内存读写,申请空白页失败,则选择替换页并提供给操作系统以使得所述操作系统对页面进行替换。
9.根据权利要求7或8所述的装置,其特征在于,
所述微控制器,具体用于确定所述虚地址是否落在已分配的虚地址空间中,若是,则确定所述虚地址合法,若否,则查找虚拟内存地址VMA空间中是否存在所述虚地址,若存在,则确定所述虚地址合法。
10.根据权利要求7-9任一所述的装置,其特征在于,
所述微控制器,还用于接收所述访存请求,获得与所述访存请求携带的虚地址对应的进程的页表的基地址域,并将所述基地址域发送给MMU,以使得所述MMU根据所述基地址域查找页表。
11.根据权利要求7-10任一所述的装置,其特征在于,
所述微控制器,还用于统计缓存的每个空白页在预置时间内的使用频率,当申请空白页时,选择在所述预置时间内使用频率最低的空白页。
12.一种内存控制器,其特征在于,包括:如权利要求7-11所述的任一种内存管理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410373858.2A CN105446889B (zh) | 2014-07-31 | 2014-07-31 | 一种内存管理方法、装置以及内存控制器 |
KR1020177003800A KR101893966B1 (ko) | 2014-07-31 | 2015-07-22 | 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 |
PCT/CN2015/084798 WO2016015583A1 (zh) | 2014-07-31 | 2015-07-22 | 一种内存管理方法、装置以及内存控制器 |
ES15828139T ES2704751T3 (es) | 2014-07-31 | 2015-07-22 | Método y dispositivo de gestión de memoria y controlador de memoria |
EP15828139.4A EP3163451B1 (en) | 2014-07-31 | 2015-07-22 | Memory management method and device, and memory controller |
US15/415,344 US10108553B2 (en) | 2014-07-31 | 2017-01-25 | Memory management method and device and memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410373858.2A CN105446889B (zh) | 2014-07-31 | 2014-07-31 | 一种内存管理方法、装置以及内存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446889A true CN105446889A (zh) | 2016-03-30 |
CN105446889B CN105446889B (zh) | 2019-02-12 |
Family
ID=55216758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410373858.2A Active CN105446889B (zh) | 2014-07-31 | 2014-07-31 | 一种内存管理方法、装置以及内存控制器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10108553B2 (zh) |
EP (1) | EP3163451B1 (zh) |
KR (1) | KR101893966B1 (zh) |
CN (1) | CN105446889B (zh) |
ES (1) | ES2704751T3 (zh) |
WO (1) | WO2016015583A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977577A (zh) * | 2016-10-21 | 2018-05-01 | 龙芯中科技术有限公司 | 访存指令访问检测方法及装置 |
CN108710584A (zh) * | 2018-05-22 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
CN110389911A (zh) * | 2018-04-23 | 2019-10-29 | 珠海全志科技股份有限公司 | 一种设备内存管理单元的预取方法、装置及系统 |
CN111143900A (zh) * | 2019-12-24 | 2020-05-12 | 海光信息技术有限公司 | 数据处理、访问控制方法、系统、器件、设备、存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118103824A (zh) * | 2021-06-09 | 2024-05-28 | 安法布里卡公司 | 通过网络协议的透明远程存储器访问 |
CN115794667B (zh) * | 2023-01-19 | 2023-04-18 | 北京象帝先计算技术有限公司 | 内存管理方法、系统、组件及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283123A1 (en) * | 2006-06-05 | 2007-12-06 | Sun Microsystems, Inc. | Function-based virtual-to-physical address translation |
CN101539869A (zh) * | 2009-04-13 | 2009-09-23 | 浙江大学 | 与调度性能直接相关的内存管理核的硬件化的方法 |
US20120297139A1 (en) * | 2011-05-20 | 2012-11-22 | Samsung Electronics Co., Ltd. | Memory management unit, apparatuses including the same, and method of operating the same |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388244A (en) * | 1992-09-17 | 1995-02-07 | International Business Machines Corporation | Controls for initial diversion of page-frame logical content as part of dynamic virtual-to-real translation of a virtual page address |
US5835964A (en) * | 1996-04-29 | 1998-11-10 | Microsoft Corporation | Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map |
US5897664A (en) * | 1996-07-01 | 1999-04-27 | Sun Microsystems, Inc. | Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies |
KR19980072720A (ko) | 1997-03-07 | 1998-11-05 | 류첸쾅 | 저주파 복사방지용 전원 전환장치 |
US6490671B1 (en) * | 1999-05-28 | 2002-12-03 | Oracle Corporation | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system |
US6961840B2 (en) * | 2002-09-30 | 2005-11-01 | International Business Machines Corporation | Method and apparatus for managing a dynamic alias page table |
US7047320B2 (en) | 2003-01-09 | 2006-05-16 | International Business Machines Corporation | Data processing system providing hardware acceleration of input/output (I/O) communication |
US7080220B2 (en) * | 2003-07-03 | 2006-07-18 | International Business Machines Corporation | Page replacement with a re-reference indicator |
US20070094445A1 (en) * | 2005-10-20 | 2007-04-26 | Trika Sanjeev N | Method to enable fast disk caching and efficient operations on solid state disks |
CN101013404A (zh) * | 2007-01-26 | 2007-08-08 | 浙江大学 | 面向异构多核体系的分页式存储空间管理方法 |
US8086822B2 (en) * | 2008-05-30 | 2011-12-27 | Vmware, Inc. | In-place shadow tables for virtualization |
US9355023B2 (en) * | 2011-03-15 | 2016-05-31 | Anirudh Badam | Virtual address pager and method for use with a bulk erase memory |
CN102929796A (zh) * | 2012-06-01 | 2013-02-13 | 杭州中天微系统有限公司 | 同时支持软件回填与硬件回填的内存管理模块 |
-
2014
- 2014-07-31 CN CN201410373858.2A patent/CN105446889B/zh active Active
-
2015
- 2015-07-22 WO PCT/CN2015/084798 patent/WO2016015583A1/zh active Application Filing
- 2015-07-22 EP EP15828139.4A patent/EP3163451B1/en active Active
- 2015-07-22 ES ES15828139T patent/ES2704751T3/es active Active
- 2015-07-22 KR KR1020177003800A patent/KR101893966B1/ko active IP Right Grant
-
2017
- 2017-01-25 US US15/415,344 patent/US10108553B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283123A1 (en) * | 2006-06-05 | 2007-12-06 | Sun Microsystems, Inc. | Function-based virtual-to-physical address translation |
CN101539869A (zh) * | 2009-04-13 | 2009-09-23 | 浙江大学 | 与调度性能直接相关的内存管理核的硬件化的方法 |
US20120297139A1 (en) * | 2011-05-20 | 2012-11-22 | Samsung Electronics Co., Ltd. | Memory management unit, apparatuses including the same, and method of operating the same |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977577A (zh) * | 2016-10-21 | 2018-05-01 | 龙芯中科技术有限公司 | 访存指令访问检测方法及装置 |
CN107977577B (zh) * | 2016-10-21 | 2020-03-13 | 龙芯中科技术有限公司 | 访存指令访问检测方法及装置 |
CN110389911A (zh) * | 2018-04-23 | 2019-10-29 | 珠海全志科技股份有限公司 | 一种设备内存管理单元的预取方法、装置及系统 |
CN108710584A (zh) * | 2018-05-22 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
CN111143900A (zh) * | 2019-12-24 | 2020-05-12 | 海光信息技术有限公司 | 数据处理、访问控制方法、系统、器件、设备、存储介质 |
CN111143900B (zh) * | 2019-12-24 | 2023-09-26 | 海光信息技术(苏州)有限公司 | 数据处理、访问控制方法、系统、器件、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3163451A1 (en) | 2017-05-03 |
KR101893966B1 (ko) | 2018-08-31 |
US10108553B2 (en) | 2018-10-23 |
ES2704751T3 (es) | 2019-03-19 |
KR20170029594A (ko) | 2017-03-15 |
CN105446889B (zh) | 2019-02-12 |
EP3163451B1 (en) | 2018-10-10 |
WO2016015583A1 (zh) | 2016-02-04 |
EP3163451A4 (en) | 2017-07-26 |
US20170132148A1 (en) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446889A (zh) | 一种内存管理方法、装置以及内存控制器 | |
CN104346294B (zh) | 基于多级缓存的数据读/写方法、装置和计算机系统 | |
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN104487953A (zh) | 用于层次型存储器系统的存储器管理 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
CN104809179A (zh) | 访问哈希表的装置和方法 | |
CN103488588A (zh) | 一种内存保护方法、系统及网络接口控制器 | |
CN109582600B (zh) | 一种数据处理方法及装置 | |
CN104731717A (zh) | 存储器装置及存储器管理方法 | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN108459975B (zh) | 用于有效使用地址转换缓存的技术 | |
CN110196757A (zh) | 虚拟机的tlb填写方法、装置及存储介质 | |
CN102063386B (zh) | 一种单载体多目标的缓存系统的缓存管理方法 | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN102439567A (zh) | 分布式虚拟机访问异常的处理方法以及虚拟机监控器 | |
CN101808141B (zh) | 一种基于虚拟化平台的宿主客户机协同换页的方法 | |
US11256630B2 (en) | Cache address mapping method and related device | |
CN103077198A (zh) | 一种操作系统及其文件缓存定位方法 | |
CN103377141A (zh) | 高速存储区的访问方法以及访问装置 | |
CN105278880A (zh) | 一种基于云计算虚拟化的内存优化装置和方法 | |
CN104731720A (zh) | 组相连的二级内存管理装置 | |
US20050091466A1 (en) | Method and program product for avoiding cache congestion by offsetting addresses while allocating memory | |
CN104850508A (zh) | 基于数据局部性的访存方法 | |
US20220114093A1 (en) | Balancing Memory-Portion Accesses |
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 |