一种离散内存访问的方法及装置的制作方法

文档序号:6376565阅读:231来源:国知局
专利名称:一种离散内存访问的方法及装置的制作方法
技术领域
本发明涉及嵌入式系统领域,特别是涉及一种离散内存访问的方法及装置。
背景技术
目前,在嵌入式操作系统中通常使用一种叫做虚拟内存的技术来实现每个进程都能获得比物理内存更大的寻址空间的目的。虚拟内存是计算机系统内存管理的一种技术,它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,该连续的可用的内存通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时才进行数据交换。例如在32位的Iinux系统中每个进程都能寻址4G的内存空间,而通常嵌入式系统的物理内存一般都在IG以下。在嵌入式系统中,系统级芯片(SOC,System On Chip)中还会有很多硬件加速引擎和DMA (Direct Memory Access,直接内存访问)模块独立运行于操作系统的CPU (CentralProcessing Unit,中央处理器)之外,例如视频编解码引擎,而这些硬件加速引擎/DMA模块对物理内存通常会采用直接访问的方式。但是嵌入式系统中软硬件协同工作的时候,CPU对物理内存分别采用了映射访问的方式,而硬件加速引擎/DMA模块对物理内存采用的是直接访问的方式。这样便出现了一个问题随着操作系统中各进程中内存不断的分配与释放会形成许多离散的内存碎片,而包含内存碎片的在虚拟地址上连续的空间在实际的物理内存上却是离散的,这种离散的物理空间是不能被采用直接内存访问方式的硬件加速引擎/DMA模块所访问的。目前现有技术中实现硬件加速弓I擎或者DMA模块对离散内存进行访问时,通常的做法是在操作系统中固定预留一块特殊的物理连续空间供硬件加速引擎/DMA模块使用,只是这样的物理连续内存在调用硬件加速引擎/DMA模块的进程终止后操作系统也是不便回收的,这样就导致物理内存的使用率显著降低,特别是对物理内存资源稀少的嵌入式系统,这样的物理内存开销也严重影响了嵌入式系统的性能。

发明内容
本发明所要解决的技术问题是,提供一种离散内存访问的方法,以解决现有技术中在实现离散内存访问时导致的物理内存的使用率显著降低的问题,进一步的也降低物理内存的大量开销给嵌入式系统的性能带来的影响。本发明的另一个目的是将上述构思应用于具体的应用环境中,提供一种离散内存访问的,从而保证该方法的实现和应用。为解决上述技术问题,本发明实施例提供了一种离散内存访问的方法,包括在当前需要进行离散物理内存访问时,接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址,所述第一级TLB页表保存有第二级TLB页表的首地址;根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表;
依据所述第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表;读取所述第二级TLB页表中的数据作为待访问的物理内存地址;访问所述待访问的物理内存地址指向的物理内存空间。可选的,在所述操作系统配置第一级TLB页表之后,还包括所述操作系统为所述第一级TLB页表和第二级TLB页表的各个表项设置表项有效标识;则在所述接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址之后、且在所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表之前,还包括依据所述第一级TLB页表的表项有效标识判断当前的第一级TLB页表的表项是否有效,如果是,则执行所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表的步骤;以及,在获取所述第二级TLB页表之后,且在读取所述第二级TLB页表中的数据作为待访问的物理内存地址之前还包括依据所述第二级TLB表的表项有效标识判断获取的第二级TLB页表是否有效,如果是,则执行所述读取所述第二级TLB页表中的数据作为待访问的物理内存地址的步骤。在所述访问所述待访问的物理内存地址指向的物理内存空间之后,还包括为所述第二级TLB页表中的物理内存地址设置唯一对应的标签,则在完成本次内存访问之后、且在下一次进行内存访问之前,还包括判断所述虚拟内存地址中的第一部分和第二部分是否与所述标签匹配,如果是,则将所述标签唯一对应的物理内存地址作为所述待访问的物理内存地址。可选的,所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表,包括获取所述第一级TLB页表中的首地址指向的第一级TLB页表中的高二十位;将所述虚拟内存地址中的高十位作为所述第一部分;依据所述第一级TLB页表中的高二十位和所述第一部分生成所述第一级TLB页表的物理存放地址。可选的,依据所述第一级TLB页表保存的第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表,包括读取所述第一级TLB页表的物理存放地址对应的数据作为所述第二级TLB页表的首地址;获取所述第二级TLB页表的首地址指向的第二级TLB页表中的高二十位;将所述虚拟内存地址中与所述高十位相连的后十位作为所述第二部分;依据所述第二级TLB页表中的高二十位和所述第二部分的内容生成所述第二级TLB页表的物理存放地址。本发明实施例还提供了一种离散内存访问的装置,包括接收模块,用于在当前需要进行离散物理内存访问时,接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址,所述第一级TLB页表保存有第二级TLB页表的首地址;获取第一级TLB页表模块,用于根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表;获取第二级TLB页表模块,用于依据所述第一级TLB页表保存的第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表;读取模块,用于读取所述第二级TLB页表中的数据作为待访问的物理内存地址;
访问模块,用于访问所述待访问的物理内存地址指向的物理内存空间。可选的,还包括获取标识模块,用于获取操作系统为所述第一级TLB页表和第二级TLB页表的各个表项设置的表项有效标识;第一判断模块,用于依据所述第一级TLB页表的表项有效标识判断当前的第一级TLB页表的表项是否有效;第一触发模块,用于在所述第一判断模块的结果为是的情况下,触发所述获取第一级TLB页表模块;第二判断模块,用于依据所述第二级TLB表的表项有效标识判断获取的第二级TLB页表是否有效;第二触发模块,用于在所述第二判断模块的结果为是的情况下,触发所述获取第二级TLB页表模块。可选的,还包括设置标签模块,用于为所述第二级TLB页表中的物理内存地址设置唯一对应的标签;第三判断模块,用于判断所述虚拟内存地址中的第一部分和第二部分是否与所述标签匹配;确定模块,用于在所述第三判断模块的结果为是的情况下,将所述标签唯一对应的物理内存地址作为所述待访问的物理内存地址。可选的,所述获取第一级TLB页表模块,包括第一获取子模块,用于获取所述第一级TLB页表中的首地址指向的第一级TLB页表中的高二十位;第一确定子模块,用于将所述虚拟内存地址中的高十位作为所述第一部分;第一生成子模块,用于依据所述第一级TLB页表中的高二十位和所述第一部分生成所述第一级TLB页表的物理存放地址。可选的,所述获取第二级TLB页表模块,包括读取子模块,用于读取所述第一级TLB页表的物理存放地址对应的数据作为所述第二级TLB页表的首地址;第二获取子模块,用于获取所述第二级TLB页表的首地址指向的第二级TLB页表中的高二十位;第二确定子模块,用于将所述虚拟内存地址中与所述高十位相连的后十位作为所述第二部分;第二生成子模块,用于依据所述第二级TLB页表中的高二十位和所述第二部分的内容生成所述第二级TLB页表的物理存放地址。从上述的技术方案可以看出,由操作系统建立第一级TLB页表和第二级TLB页表,通过该两级TLB页表的方式即可使得硬件加速引擎/DMA模块完成从虚拟内存地址到离散的物理内存地址的映射过程,这样就避免了现有技术中通过预留连续的一段物理内存地址才能实现物理内存访问的方式,因此就比现有技术能够显著提高物理内存的使用率,从而也减少了物理内存的开销,进一步提升操作系统的性能。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明方法实施例I的流程图;
图2为本发明方法实施例I中步骤104的流程图;图3为本发明方法实施例I中步骤105的流程图;图4为本发明方法实施例2的流程图;图5为本发明方法实施例3的流程图;图6为本发明装置实施例I的结构示意图;图7为本发明装置实施例I中第一级TLB页表模块602的结构示意图;图8为本发明装置实施例I中第二级TLB页表模块603的结构示意图;图9为本发明装置实施例2的结构示意图;图10为本发明装置实施例3的结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,示出了本发明的一种离散内存访问的方法实施例I的流程图,可以包括以下步骤步骤101 :当前操作系统获取虚拟内存地址和物理内存地址的映射关系。在本实施例中,采用两级TLB (Translation Lookaside Buffer,翻译后援存储器)页表的方式实现硬件加速引擎/DMA模块对物理内存地址的映射访问。具体的,该两级TLB页表包括第一级TLB页表和第二级TLB页表,该第一级TLB页表和第二级TLB页表均由操作系统依据获取到的虚拟内存地址和物理内存地址的映射关系所建立。步骤102 :当前操作系统依据所述映射关系建立第一级TLB页表和第二级TLB页表。在本实施例中,操作系统建立的第一级TLB页表和第二级TLB页表可以提供给硬件加速引擎/DMA模块,由其实现依据该两级TLB页表进行离散内存的访问。
为了方便本领域技术人员对于该两级TLB页表有更详细的了解,在此对于第一级TLB页表和第二级TLB页表进行举例说明。在实际应用中,第一级TLB页表可以如表I所示,而第二级TLB页表可以如表2所
/Jn ο表I
权利要求
1.一种离散内存访问的方法,其特征在于,包括 在当前需要进行离散物理内存访问时,接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址,所述第一级TLB页表保存有第二级TLB页表的首地址; 根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表; 依据所述第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表; 读取所述第二级TLB页表中的数据作为待访问的物理内存地址; 访问所述待访问的物理内存地址指向的物理内存空间。
2.根据权利要求I所述的方法,其特征在于,在所述操作系统配置第一级TLB页表之后,还包括 所述操作系统为所述第一级TLB页表和第二级TLB页表的各个表项设置表项有效标识; 则在所述接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址之后、且在所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表之前,还包括 依据所述第一级TLB页表的表项有效标识判断当前的第一级TLB页表的表项是否有效,如果是,则执行所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表的步骤; 以及,在获取所述第二级TLB页表之后,且在读取所述第二级TLB页表中的数据作为待访问的物理内存地址之前还包括 依据所述第二级TLB表的表项有效标识判断获取的第二级TLB页表是否有效,如果是,则执行所述读取所述第二级TLB页表中的数据作为待访问的物理内存地址的步骤。
3.根据权利要求I所述的方法,其特征在于,在所述访问所述待访问的物理内存地址指向的物理内存空间之后,还包括 为所述第二级TLB页表中的物理内存地址设置唯一对应的标签,则在完成本次内存访问之后、且在下一次进行内存访问之前,还包括 判断所述虚拟内存地址中的第一部分和第二部分是否与所述标签匹配,如果是,则将所述标签唯一对应的物理内存地址作为所述待访问的物理内存地址。
4.根据权利要求I 3任一项所述的方法,其特征在于,所述根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表,包括 获取所述第一级TLB页表中的首地址指向的第一级TLB页表中的高二十位; 将所述虚拟内存地址中的高十位作为所述第一部分; 依据所述第一级TLB页表中的高二十位和所述第一部分生成所述第一级TLB页表的物理存放地址。
5.根据权利要求4所述的方法,其特征在干,依据所述第一级TLB页表保存的第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表,包括 读取所述第一级TLB页表的物理存放地址对应的数据作为所述第二级TLB页表的首地址;获取所述第二级TLB页表的首地址指向的第二级TLB页表中的高二十位; 将所述虚拟内存地址中与所述高十位相连的后十位作为所述第二部分; 依据所述第二级TLB页表中的高二十位和所述第二部分的内容生成所述第二级TLB页表的物理存放地址。
6.一种离散内存访问的装置,其特征在于,包括 接收模块,用于在当前需要进行离散物理内存访问时,接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址,所述第一级TLB页表保存有第二级TLB页表的首地址;获取第一级TLB页表模块,用于根据所述第一级TLB页表的首地址和所述虚拟内存地址中的第一部分获取所述第一级TLB页表; 获取第二级TLB页表模块,用于依据所述第一级TLB页表保存的第二级TLB页表的首地址和所述虚拟内存地址中的第二部分,获取所述第二级TLB页表; 读取模块,用于读取所述第二级TLB页表中的数据作为待访问的物理内存地址; 访问模块,用于访问所述待访问的物理内存地址指向的物理内存空间。
7.根据权利要求6所述的装置,其特征在于,还包括 获取标识模块,用于获取操作系统为所述第一级TLB页表和第二级TLB页表的各个表项设置的表项有效标识; 第一判断模块,用于依据所述第一级TLB页表的表项有效标识判断当前的第一级TLB页表的表项是否有效; 第一触发模块,用于在所述第一判断模块的结果为是的情况下,触发所述获取第一级TLB页表模块; 第二判断模块,用于依据所述第二级TLB表的表项有效标识判断获取的第二级TLB页表是否有效; 第二触发模块,用于在所述第二判断模块的结果为是的情况下,触发所述获取第二级TLB页表模块。
8.根据权利要求6所述的装置,其特征在于,还包括 设置标签模块,用于为所述第二级TLB页表中的物理内存地址设置唯一对应的标签;第三判断模块,用于判断所述虚拟内存地址中的第一部分和第二部分是否与所述标签匹配; 确定模块,用于在所述第三判断模块的结果为是的情况下,将所述标签唯一对应的物理内存地址作为所述待访问的物理内存地址。
9.根据权利要求6 8任一项所述的装置,其特征在于,所述获取第一级TLB页表模块,包括 第一获取子模块,用于获取所述第一级TLB页表中的首地址指向的第一级TLB页表中的高二十位; 第一确定子模块,用于将所述虚拟内存地址中的高十位作为所述第一部分; 第一生成子模块,用于依据所述第一级TLB页表中的高二十位和所述第一部分生成所述第一级TLB页表的物理存放地址。
10.根据权利要求9所述的装置,其特征在于,所述获取第二级TLB页表模块,包括 读取子模块,用于读取所述第一级TLB页表的物理存放地址对应的数据作为所述第二级TLB页表的首地址; 第二获取子模块,用于获取所述第二级TLB页表的首地址指向的第二级TLB页表中的闻~■十位; 第二确定子模块,用于将所述虚拟内存地址中与所述高十位相连的后十位作为所述第二部分; 第二生成子模块,用于依据所述第二级TLB页表中的高二十位和所述第二部分的内容生成所述第二级TLB页表的物理存放地址。
全文摘要
本发明实施例公开了一种离散内存访问的方法及装置,所述方法包括在当前需要进行离散物理内存访问时,接收操作系统配置的第一级TLB页表的首地址及虚拟内存地址,第一级TLB页表保存有第二级TLB页表的首地址;根据第一级TLB页表的首地址和虚拟内存地址中的第一部分获取第一级TLB页表;依据第二级TLB页表的首地址和虚拟内存地址中的第二部分,获取第二级TLB页表;读取第二级TLB页表中的数据作为待访问的物理内存地址;访问待访问的物理内存地址指向的物理内存空间。采用本发明实施例公开的方法或装置,可以显著提高物理内存的使用率,从而也减少了物理内存的开销,进一步提升操作系统的性能。
文档编号G06F12/10GK102866958SQ20121033069
公开日2013年1月9日 申请日期2012年9月7日 优先权日2012年9月7日
发明者翟云 申请人:北京君正集成电路股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1