一种内存访问的方法、相关装置和系统的制作方法

文档序号:9921961阅读:268来源:国知局
一种内存访问的方法、相关装置和系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种内存访问的方法、相关装置和系统。
【背景技术】
[0002]在传统的内存管理流程中,当中央处理器(Central Processing Unit, CPU)发起内存访问时,会先访问其内部的私有缓存(cache),此时CPU先将访问请求发送至CPU内部的内存管理单元(Memory Management Unit,MMU) ,MMU根据访问请求中的虚地址信息,查找传输后备缓冲器(Translat1n Lookaside Buffer,TLB)中该虚地址所对应的实地址,即物理地址,CPU通过该物理地址访问私有缓存,当发生高速缓存不命中(cache miss),即CPU访问私有缓存失败后,CHJ将该内存访问请求发送至内存控制器(Memory Controller,MC),通过MC访问该物理地址所对应的内存。
[0003]然而,现有技术内存管理存在如下两个问题:
[0004]第一,由于MMU和TLB位于CPU访问私有缓存的关键路径上,当MMU和TLB发生问题,如MMU在通过TLB查找不到该虚地址所对应的实地址(TLB miss)时,CPU就无法访问私有缓存。
[0005]第二,缺页中断处理与处理器硬件绑定,一旦MMU从TLB和内存中都无法找到虚地址对应的实地址,则触发缺页中断,处理器将花大量时间处理缺页中断。
[0006]现有技术提出了一种有效的内存管理技术:全虚cache (Virtual indexedVirtual Tagged)技术。全虚cache的主要思想是将TLB和MMU等硬件从CPU访问私有cache的关键路径中移除,CPU直接采用虚地址索引cache,只有cachemiss后才将访问请求发送至MMU,MMU通过TLB进行虚实地址翻译,采用实地址访问内存。该方法能够缩短CPU访问cache的关键路径,同时,由于TLB不在访问cache的关键路径上,TLB可以做得很大,TLB的命中率增高,从而有效地降低了 TLB miss的次数。
[0007]因此,全虚cache技术有效的解决了上述第一个问题,但是,发生缺页中断后仍由CPU对其进行处理,导致CPU将大量时间浪费在处理缺页中断,当CPU缺页中断处理完成之后,才能访问上述访问请求中请求访问的内存,导致内存访问效率较低。

【发明内容】

[0008]本发明的实施例提供一种内存访问的方法、相关装置和系统,解决了现有技术内存访问效率较低的问题。
[0009]为达到上述目的,本发明的实施例采用如下技术方案:
[0010]第一方面,本发明实施例提供了一种内存访问的方法,该方法包括:
[0011 ] 接收进程的内存访问请求消息,其中,所述内存访问请求消息包括所述进程请求访问的内存对应的虚拟地址的信息;
[0012]根据所述进程从预设的映射关系集合中获取所述进程所对应的映射关系,所述映射关系为所述虚拟地址与所述进程请求访问的内存对应的内存控制器MC的对应关系;
[0013]根据所述虚拟地址的信息和所述映射关系,获取所述进程请求访问的内存所对应的MC ;
[0014]将所述内存访问请求消息发送至所述MC。
[0015]在第一种可能的实施方式中,结合第一方面,所述映射关系为以所述虚拟地址为变量的函数,或者,
[0016]所述映射关系为所述虚拟地址的L个预设位信息,其中,10
[0017]在第二种可能的实施方式中,结合第一方面或第一种可能的实施方式,在根据所述虚拟地址的信息和所述映射关系,获取所述进程请求访问的内存所对应的MC之前,该方法还包括:
[0018]获取所述进程对应的更新的映射关系;
[0019]在预设的映射关系集合中将所述进程所对应的映射关系替换为所述更新的映射关系;
[0020]根据所述虚拟地址的信息和所述映射关系,获取所述进程请求访问的内存所对应的MC具体包括:
[0021]根据所述虚拟地址信息和所述更新的映射关系,获取所述进程请求访问的内存所对应的MC。
[0022]在第三种可能的实施方式中,结合第二种可能的实施方式,在所述获取所述进程对应的更新的映射关系之前,还包括:
[0023]接收所述MC发送的请求消息,所述请求消息用于指示所述MC的空闲物理页面低于预设值;
[0024]根据获取的所有MC分配给对应进程的页面数目,向所述MC发送指示消息,所述指示消息用于指示所述MC将分配给所述进程的页面的数据迁移到第一 MC对应的内存中,其中,所述第一 MC为所述所有MC除所述MC之外的任一 MC ;
[0025]所述获取所述进程对应的更新的映射关系具体包括:
[0026]根据所述进程与所述第一 MC,获取所述进程对应的更新的映射关系。
[0027]第二方面,本发明实施例提供了一种内存访问的方法,该方法包括:
[0028]内存控制器MC向中央处理器CPU发送请求消息,所述请求消息用于指示所述MC的空闲物理页面低于预设值,其中,所述CPU存储有所有MC分配给对应进程的页面数目;
[0029]所述MC接收所述CPU发送的指示消息,所述指示消息用于指示所述MC将分配给第一进程的页面的数据迁移到第一 MC对应的内存中,其中,所述第一 MC为所述所有MC除所述MC之外的任一 MC ;
[0030]所述MC根据所述指示消息,将分配给所述第一进程的页面的数据迁移至所述第一 MC对应的内存中。
[0031]在第一种可能的实施方式中,结合第二方面,所述将分配给所述第一进程的页面的数据迁移至所述第一 MC对应的内存中之后,该方法还包括:
[0032]所述MC向所述CPU发送响应消息,所述响应消息用于指示所述MC完成对分配给所述第一进程所对应的页面的数据的迁移,以使得所述CPU根据所述响应消息,获取所述第一进程对应的更新的映射关系,并根据所述更新的映射关系和所述第一进程请求访问的内存对应的虚拟地址信息,将所述第一进程的内存访问请求消息发送至所述第一 MC。
[0033]第三方面,本发明实施例提供了一种内存访问的装置,该装置包括:接收单元,第一获取单元,第二获取单元和发送单元;
[0034]所述接收单元,用于接收进程的内存访问请求消息,其中,所述内存访问请求消息包括所述进程请求访问的内存对应的虚拟地址的信息;
[0035]所述第一获取单元,用于根据所述进程从预设的映射关系集合中获取所述进程所对应的映射关系,所述映射关系为所述虚拟地址与所述进程请求访问的内存对应的内存控制器MC的对应关系;
[0036]所述第二获取单元,用于根据所述虚拟地址的信息和所述映射关系,获取所述进程请求访问的内存所对应的MC ;
[0037]所述发送单元,用于将所述内存访问请求消息发送至所述MC。
[0038]在第一种可能的实施方式中,结合第三方面,所述映射关系为以所述虚拟地址为变量的函数,或者,
[0039]所述映射关系为所述虚拟地址的L个预设位信息,其中,10
[0040]在第二种可能的实施方式中,结合第三方面或第一种可能的实施方式,所述第一获取单元还用于:
[0041]获取所述进程对应的更新的映射关系;
[0042]在预设的映射关系集合中将所述进程所对应的映射关系替换为所述更新的映射关系;
[0043]所述第二获取单元具体用于:
[0044]根据所述虚拟地址信息和所述更新的映射关系,获取所述进程请求访问的内存所对应的MC。
[0045]在第三种可能的实施方式中,结合第二种可能的实施方式,所述接收单元还用于:接收所述MC发送的请求消息,所述请求消息用于指示所述MC的空闲物理页面低于预设值;
[0046]所述发送单元还用于:根据获取的所有MC分配给对应进程的页面数目,向所述MC发送指示消息,所述指示消息用于指示所述MC将分配给所述进程的页面的数据迁移到第一 MC对应的内存中,其中,所述第一 MC为所述所有MC除所述MC之外的任一 MC ;
[0047]所述第一获取单元具体用于:根据所述进程与所述第一 MC,获取所述进程对应的更新的映射关系。
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1