一种内存访问方法及计算机系统与流程

文档序号:15931733发布日期:2018-11-14 01:44阅读:117来源:国知局
本申请涉及计算机
技术领域
,尤其涉及一种内存访问方法及计算机系统。
背景技术
内存通常由动态随机存取存储器(dynamicrandomaccessmemory,dram)实现,但dram存在存储密度低,存储容量较小的问题,因此,可以在dram基础上引入非易失存储器(nonvolatilememory,nvm)形成混合内存,实现内存容量的扩充。由于nvm的读写速度比dram慢且写寿命也比dram短,所以为了提高内存访问的速度以及混合内存的使用寿命,通常将nvm内的读写操作频繁的存储块迁移至dram。计算机系统通过翻译后备缓冲器(translationlookasidebuffer,tlb)进行虚拟内存与物理内存的转换,为了提高tlb命中的几率,提高地址转换的效率,通常将内存物理页设置为大页,如2m。在混合内存与物理大页结合应用时,需要将nvm的物理大页替换为多个物理小页,将读写操作频繁的物理小页迁移至dram。但是,计算机系统进行内存寻址的粒度由物理大页变为物理小页,tlb中命中虚拟地址与物理地址的映射的概率降低,地址转换性能降低。技术实现要素:本申请实施例提供一种内存访问方法及计算机系统,能够在大页中的部分数据被迁移的情况下保障内存的命中率。第一方面,本申请实施例提供一种内存访问方法,该内存访问方法应用于包含有混合内存的计算机系统中,所述混合内存包含有第一存储器以及第二存储器,其中,所述第一存储器为非易失性存储器。所述内存访问方法包括步骤:首先,内存管理单元(memorymanagementunit,mmu)接收第一访问请求,所述访问请求中携带有第一虚拟地址;然后,mmu根据所述计算机系统中的第一页表缓存将所述第一虚拟地址转换为第一物理地址,其中,所述第一物理地址为所述第一存储器中的第一大页的物理地址,所述第一大页中包含有多个小页;然后,在内存控制器根据所述第一物理地址访问所述第一存储器的过程中,当确定所述第一大页中的第一小页的数据被迁移到所述第二存储器中时,根据所述第一小页中存储的第二物理地址访问所述第二存储器,其中,所述第二物理地址为所述所述第二存储器中的第二小页的物理地址,所述第二小页中存储有从所述第一小页中迁移出的数据,其中所述第二存储器中包括多个小页,所述第二存储器中的小页的大小小于所述第一存储器中的大页的大小。本实施例提供的技术方案中,为了保障tlb的高命中率,计算机系统的页表中的内存页仍然以的大页的形式设置。并且,本发明实施例提供的计算机系统,在大页中设置了多个小页。当大页中的部分数据需要迁移时,可以单独迁移物理大页内的小页。在访问过程中,当内存控制器根据第一大页的第一物理地址访问非易失性存储器时,若确定所述第一大页中的第一小页的数据已经被迁移到第二存储器(即易失性存储器)中,则内存控制器可以根据第一小页中存储的第二小页的物理地址访问被迁移的数据。因此,根据本实施例提供的技术方案,即使在大页中的小页已经被迁移的情况下,依然能够根据大页去访问,既保障了大页内存优异的地址转换性能,又满足了混合内存热数据迁移的需求。从而能够在大页中的部分数据被迁移的情况下保障内存的命中率。在一种可选的实施方式中,计算机系统监测物理大页的每个小页的访问次数,并在任意一个小页的访问次数查过设置阈值时,将该小页的数据迁移至dram52的物理小页中,并在数据被迁移的小页中添加dram52的物理小页的地址。由于在数据被迁移的小页内添加第二存储器的物理小页的地址,所以计算机系统可以继续根据物理大页与虚拟页的映射定位该小页,并从该小页读取第二存储器的物理小页的地址,实现对迁移至第二存储器的数据的访问。在一种可选的实施方式中,计算机系统维护有一位图,该位图中存储表明第一存储器的每个小页是否被迁移的信息,针对每个数据被迁移的小页,该位图中均设置有指示该小页中的数据已经被迁移的标识。在将所述第一小页的数据迁移至所述第二小页中之后,在设置的位图中设置第一标识,所述第一标识用于指示所述第一小页中的数据已经被迁移。在一种可选的实施方式中,所述计算机系统还包括第二页表缓存,所述将所述第一小页中的数据迁移至所述第二小页中之后,进一步在所述第二页表缓存中添加第二虚拟地址与所述第二物理地址的映射关系,所述第二页表缓存用于记录虚拟地址与所述第二存储器的小页的物理地址的映射关系。进而在访问该被迁移的数据时,mmu20可以根据第二页表缓存中的该映射快速确定存储该数据的内存物理地址为第二存储器中的物理小页,根据该物理小页的地址访问目标数据,能够缩短内存访问的耗时,提高内存访问的效率。在一种可选的实施方式中,计算机系统访问被迁移至第二存储器中数据的过程为:mmu20接收第二访问请求,所述第二访问请求包含有第二虚拟地址;mmu20根据所述第二页表缓存获得与所述第二虚拟地址具有映射关系的所述第二物理地址;然后,mmu20将第二物理地址发送给内存控制器,内存控制器根据所述第二物理地址访问所述第二存储器。第二方面,本申请实施例提供一种计算机系统,包括处理器、内存管理单元mmu、内存控制器以及混合内存,其中,所述混合内存包含有第一存储器以及第二存储器,所述第一存储器为非易失性存储器,所述第二存储器为易失性存储器;所述mmu用于:接收所述处理器发送的第一访问请求,所述访问请求中携带有第一虚拟地址;根据第一页表缓存将所述第一虚拟地址转换为第一物理地址,所述第一物理地址为所述第一存储器中的第一大页的物理地址,其中,所述第一页表缓存用于记录虚拟地址与所述第一存储器的大页的物理地址的映射关系,所述第一存储器的大页包括多个小页。所述内存控制器,用于根据所述第一物理地址访问所述第一存储器,并在根据所述第一物理地址访问所述第一存储器的过程中,当确定所述第一大页中的第一小页的数据被迁移到所述第二存储器中时,根据所述第一小页中存储的第二物理地址访问所述第二存储器,其中,所述第二物理地址为所述所述第二存储器中的第二小页的物理地址,所述第二小页中存储有从所述第一小页中迁移出的数据,所述第二存储器中包括多个小页,所述第二存储器中的小页的大小小于所述第一存储器中的大页的大小。在一种可选的实施方式中,所述内存控制器还用于:当所述第一小页中的访问次数超过设置阈值时,将所述第一小页中的数据迁移至所述第二小页中;在所述第一小页中存储所述第二小页的所述第二物理地址。在一种可选的实施方式中,所述内存控制器还用于:在将所述第一小页的数据迁移至所述第二小页中之后,在设置的位图中设置第一标识,所述第一标识用于指示所述第一小页中的数据已经被迁移。在一种可选的实施方式中,所述计算机系统中还包括第二页表缓存,所述第二页表缓存用于记录虚拟地址与所述第二存储器的小页的物理地址的映射关系;所述处理器还用于:在所述第一小页中的数据被迁移至所述第二小页中之后,在所述第二页表缓存中添加第二虚拟地址与所述第二物理地址的映射关系。在一种可选的实施方式中,所述mmu还用于:接收所述处理器发送的第二访问请求,所述第二访问请求包含有第二虚拟地址;根据所述第二页表缓存获得与所述第二虚拟地址具有映射关系的所述第二物理地址;所述内存控制器还用于:根据所述第二物理地址访问所述第二存储器。第三方面,本申请实施例提供一种内存访问装置,该内存访问装置应用于在计算机系统中进行内存访问。计算机系统包括混合内存,混合内存包含有第一存储器以及第二存储器,其中,第一存储器为非易失性存储器,第二存储器为易失性存储器。内存访问装置包括:接收模块,用于接收第一访问请求,访问请求中携带有第一虚拟地址;转换模块,用于根据计算机系统中的第一页表缓存将第一虚拟地址转换为第一物理地址,其中,第一物理地址为第一存储器中的第一大页的物理地址,第一大页中包含有多个小页;访问模块,用于在根据第一物理地址访问第一存储器的过程中,当确定第一大页中的第一小页的数据被迁移到第二存储器中时,根据第一小页中存储的第二物理地址访问第二存储器,其中,第二物理地址为第二存储器中的第二小页的物理地址,第二小页中存储有从第一小页中迁移出的数据,其中第二存储器中包括多个小页,第二存储器中的小页的大小小于第一存储器中的大页的大小。作为一种可选的方式,内存访问装置还包括:迁移模块,用于当该第一小页中的访问次数超过设置阈值时,将第一小页中的数据迁移至第二小页中;在第一小页中存储第二小页的第二物理地址。在一种可选的实施方式中,内存访问装置还包括:标识模块,用于在将第一小页的数据迁移至第二小页中之后,在设置的位图中设置第一标识,第一标识用于指示第一小页中的数据已经被迁移。在一种可选的实施方式中,计算机系统还包括第二页表缓存,内存访问装置还包括:映射模块,用于在将第一小页中的数据迁移至第二小页中之后,在第二页表缓存中添加第二虚拟地址与第二物理地址的映射关系,第二页表缓存用于记录虚拟地址与第二存储器的小页的物理地址的映射关系。作为一种可选的方式,接收模块还用于:接收第二访问请求,第二访问请求包含有第二虚拟地址;根据第二页表缓存获得与第二虚拟地址具有映射关系的第二物理地址;访问模块还用于:根据第二物理地址访问第二存储器。第四方面,本申请还提供了一种计算机程序产品,包括程序代码,所述程序代码包括的指令被计算机所执行,以实现所述第一方面以及所述第一方面的任意一种可能的实现方式中所述的方法。第五方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第一方面以及所述第一方面的任意一种可能的实现方式中所述的方法。附图说明图1为本申请实施例提供的计算机系统的结构示意图;图2至图5为本申请实施例提供的内存访问方法的流程示意图;图6为本申请实施例提供的内存访问装置的示意图。具体实施方式为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。本申请提供一种内存访问方法及计算机系统,用以解决混合内存与物理大页技术难以结合应用的技术问题。其中,内存访问方法和计算机系统是基于同一发明构思的,由于内存访问方法及计算机系统解决问题的原理相似,因此计算机系统与方法的实施可以相互参见,重复之处不再赘述。本申请实施例中所述的“数据”为广义的数据,既可以是应用程序的指令代码,也可以是应用程序运行所使用的数据。本申请实施例所涉及的多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。本申请实施例中的计算机系统可以有多种形态,例如个人计算机、服务器、平板电脑、智能手机等。图1为本申请实施例中计算机系统的一种可能架构,计算机系统包括处理器10、内存管理单元(memorymanagementunit,mmu)20、tlb30、内存控制器40以及混合内存50。可选的,计算机系统还包括辅助存储器,用于扩大计算机系统的数据存储容量。其中,处理器10为计算机系统的运算中心和控制中心;mmu20用于实现内存虚拟地址与内存物理地址之间的转换,以使处理器10能够根据内存虚拟地址访问混合内存50。tlb30用于存储虚拟地址与内存物理地址之间的映射,具体的,该映射可以为内存的物理页号与虚拟页号的映射,以提高mmu进行地址转换的效率。内存控制器40用于从mmu20接收内存物理地址,根据内存物理地址访问混合内存50。混合内存50包括第一存储器以及第二存储器,第一存储器为非易失性存储器nvm,例如相变存储器(phasechangememory,pcm)、铁电式随机存取存储器(ferroelectricram,feram)、磁性随机存取存储器(magneticrandomaccessmemory、mram)等,第二存储器为易失性存储器,例如dram。本申请实施例以下内容以第一存储器为pcm51、第二存储器为dram52为例,对本申请实施例的技术方案予以介绍。在分页内存管理机制中,应用程序的虚拟地址空间划分为多个固定大小的虚拟页(page),而物理内存被划分为同样大小的物理页。应用程序加载时,可以将任意一页的数据放入任意物理页,这些物理页也可以不连续。物理页号与虚拟页号的映射记录在页表中,页表记录在内存中,在应用程序读写某个虚拟地址对应的内存物理地址时,首先确定虚拟地址所在的虚拟页页号以及在该虚拟页内的偏移量,查找页表确定虚拟页对应的物理页,进而访问该物理页内该偏移量位置,即为应用程序要访问的内存物理地址。如果每次虚拟页到物理页的转换都需要访问内存中的页表,则会花费很多的时间。因此,在计算机系统内设置tlb作为进行地址转换的高级缓存,tlb内存储有常用的部分页表项,是页表的子集。这样计算机系统在进行内存寻址时,可以先在tlb中查找匹配的tlb页表项进行地址转换,若在tlb中查找不到目标虚拟地址的页表项,即tlb缺失(miss),则到内存中的页表内查找相应表项。为了降低tlb缺失几率,提高地址转换效率,通常将物理页设置为大页,例如,物理页的大小设置为2m。本申请实施例中,页表既可以存储在pcm51中,也可以存储在dram52中,或者页表的一部分存储在pcm51中,而页表的另一部分存储在dram52中。由于pcm51的单位存储空间的成本较低,通常pcm51的存储空间大于dram52的存储空间,较大的存储空间使得pcm51契合大页内存技术,即pcm的物理页可以设置地较大,例如2兆字节(mbyte,mb)。为了便于区分,本申请实施例中将pcm51的物理页称为物理大页,将dram52的物理页称为物理小页,pcm51的物理大页大于drram的物理小页。本申请实施例中,本申请实施例中,将保存pcm51的物理大页与虚拟地址空间中虚拟页的映射的页表称为第一页表,tlb30中可以存储第一页表缓存,该第一页表缓存为第一页表的部分页表项,mmu20根据该第一页表缓存可以快速将内存访问请求中的物理地址转换为pcm51的内存物理地址,内存控制器40进而根据该内存物理地址访问pcm51。结合图2,下面介绍本申请实施例提供的访问内存方法,该方法包括如下步骤:步骤601、处理器10向mmu20发送内存访问请求,该内存访问请求携带目标虚拟地址。步骤602、mmu20确定目标虚拟地址对应的内存物理地址,向内存控制器发送该内存物理地址。mmu20确定目标虚拟地址对应的内存物理地址的过程为:首先,mmu20根据目标虚拟地址计算虚拟页号,例如,对于32位的虚拟地址va:01001001011010100011111100011011,在pcm51的物理页为2mb时,虚拟页的大小也是2mb,将va右移(page_shift)21位,即得到虚拟页号,vpn=va>>21,而目标虚拟地址在该虚拟页内的偏移量为offset=va&(1<&lt;21-1),得到虚拟地址的后21位。然后,mmu20根据虚拟页号查询tlb30中的页表缓存,即可确定虚拟页对应的物理大页,目标虚拟地址对应的内存物理地址即为该物理大页中该offset处。步骤603、内存控制器40根据该内存物理地址访问pcm51,在确定访问的物理大页中的小页的数据被迁移至dram52时,从该小页中读取dram52的物理小页的地址,根据该dram52的物理小页的地址访问dram52。本申请实施例中,pcm51的物理大页包括多个小页,物理大页的任意一个小页的数据可以被单独迁移至dram52,而不需要将整个物理大页迁移至dram52。在pcm51的物理大页的任一小页的数据被迁移至dram52的物理小页后,在pcm51的数据被迁移的小页内添加dram52中存放其数据的物理小页的地址。这样,mmu20仍然可以根据pcm51的物理大页号访问pcm51中的数据,在访问到数据被迁移的小页时,可以读取小页中存储的dram52的物理小页的地址,跳转访问dram52。因此,本申请实施例提供的技术方案中,计算机系统的页表中的内存页仍然以的大页的形式设置,保障tlb的高命中率。并且,本发明实施例提供的计算机系统,在大页中设置了多个小页。当大页中的部分数据需要迁移时,可以单独迁移物理大页内的小页。在访问过程中,当内存控制器根据第一大页的第一物理地址访问非易失性存储器时,若确定所述第一大页中的第一小页的数据已经被迁移到第二存储器(即易失性存储器)中,则内存控制器可以根据第一小页中存储的第二小页的物理地址访问被迁移的数据。因此,根据本实施例提供的技术方案,即使在大页中的小页已经被迁移的情况下,依然能够根据大页去访问,从而既保障了大页内存优异的地址转换性能,又满足了混合内存热数据迁移的需求。从而能够在大页中的部分数据被迁移的情况下保障内存的命中率。可选的,参照图3,本发明实施例提供的内存访问方法还包括如下步骤:步骤604、内存控制器40记录pcm51的物理大页的小页的访问次数。在一些实施例中,步骤601也可以由处理器10运行操作系统来实现。步骤605、内存控制器40在pcm51的物理大页的小页的访问次数超过设置阈值时,将该小页的数据迁移至dram52的物理小页中,并在数据被迁移的小页中添加dram52的物理小页的地址。上述“小页的访问次数超过设置阈值”中的访问次数,可以是小页的历史总访问次数,也可以是对最近的预设时间段内小页的访问次数。当某个小页的访问次数超过设置阈值时,表明该小页为热数据块,可以将该小页的数据迁移至dram52的物理小页中,并在数据被迁移的小页中添加dram52的物理小页的地址,以便计算机系统根据步骤601至步骤603的流程能够访问被迁移至dram52的数据。本申请实施例中,pcm51的物理大页的每个小页的大小可以等于dram52的物理小页的大小,在这一情形中,由一个物理小页存储从物理大页的一个小页迁移而来的数据。在一些实施例中,pcm51的物理大页的每个小页的大小也可以大于dram52的物理小页的大小,在这一情形中,由多个物理小页存储从物理大页的一个小页迁移而来的数据,可以在数据被迁移的小页中添加该多个物理小页的第一个物理小页的地址。上述技术方案中,单独迁移物理大页内的小页,而不是将整个物理大页迁移,降低数据迁移的耗时以及输入/输出(input/output,io)资源的消耗。可选的,本申请实施例中,步骤603中,内存控制器40确定访问的物理大页中的小页的数据被迁移至dram52,包括多种实施方式:其一,内存控制器地址访问该小页时,确定该小页所存储的内容不是数据,而是内存物理地址。其二,计算机系统维护有一位图,该位图中存储表明pcm51的每个小页是否被迁移的信息,针对每个数据被迁移的小页,该位图中均设置有指示该小页中的数据已经被迁移的标识。表1为该位图的一种可能实现方式,迁移标识0表示未被迁移,迁移标识1表示已被迁移,则表1所示表明物理大页b的第一个小页、第二个小页、第四个小页未被迁移,而第三个小页已被迁移,内存控制器通过查询该位图即可确定pcm51的任意一个小页是否被迁移。物理大页号迁移标识序列b0010………表1本申请实施例中,该位图可以保存在内存控制器40内部的存储空间,也可以保存在内存控制器40之外的存储器件中,如各种缓存器件。上述技术方案中,通过在位图中为数据被迁移的小页设置表明其数据被迁移的标识,以便内存控制器40快速地从小页读取地址访问dram52,提高内存访问的效率。可选的,本申请实施例中,tlb30除了存储第一页表缓存之外,还存储有第二页表缓存,该第二页表缓存的页表项包括虚拟地址空间中虚拟小页号与dram52的物理小页的映射,所谓虚拟小页指的是根据dram52的物理小页的大小对虚拟地址空间进行划分形成的虚拟页,为与第一页表缓存中的虚拟页相区分,本申请实施例将根据pcm51的物理大页对虚拟地址空间划分形成的虚拟页称为虚拟大页,将dram52的物理小页对虚拟地址空间划分形成的虚拟页称为虚拟小页。本申请实施例中,在将物理大页的小页的数据迁移至物理小页后,计算机系统在tlb30中的第二页表缓存中添加该物理小页与虚拟小页的映射,这样,在处理器10访问该被迁移的数据时,mmu20可以根据第二页表缓存中的该映射快速确定存储该数据的内存物理地址为dram52中的物理小页,根据该物理小页的地址访问目标数据,而不用再根据步骤602~103所述的方法进行跳转访问,能够进一步缩短内存访问的耗时,提高内存访问的效率。上述第一页表缓存以及第二页表缓存可以存储在同一个tlb物理实体内,或者,计算机系统包括两个tlb,分别用于存储第一页表缓存以及第二页表缓存。上述在第二页表缓存中添加物理小页与虚拟小页的映射,可以在该被迁移的数据被首次访问之前执行,也可以在该被迁移的数据被首次访问之后执行。另外,该在第二页表缓存中添加物理小页与虚拟小页的映射可以由处理器运行操作系统指令实现。参照图4,结合上述tlb30存储第二页表缓存的可选实施方式,内存访问方法还包括如下步骤:步骤606、处理器10向mmu20发送内存访问请求,该内存访问请求携带目标虚拟地址。步骤607、mmu20在第二页表缓存中命中目标虚拟地址的页表项,确定与目标虚拟地址具有映射关系的dram52的物理小页的地址。步骤608、mmu20向内存控制器发送确定的该dram52的物理小页的地址。步骤609、内存控制器40根据该dram52的物理小页的地址访问dram52。上述技术方案中,在pcm51的小页被迁移至dram52的物理小页时,计算机系统可以根据第二页表缓存快速确定存储该数据的内存物理地址为dram52中的物理小页,根据该物理小页的地址访问目标数据,提高内存访问的效率。可选的,本申请实施例中,pcm51与dram52采用统一地址空间的编址方式,例如,低地址为dram52,高地址为pcm51,由操作系统来统一管理。pcm51与dram52组成的混合内存与处理器10之间通过系统总线相联,通过内存控制器40进行数据的读写访问。混合内存和辅助存储器之间通过输入/输出(input/output,i/o)接口相联,进行数据交换。当进程向操作系统申请分配内存时,仅分配pcm51内存。dram52用来存放从pcm51迁移过来的写热存储块的数据,不直接分配给进程。参照图5,下面介绍应用本申请实施例提供方法的一种内存访问方法的流程,,包括:步骤701、处理器10向mmu20发送内存访问请求,该内存访问请求携带目标虚拟地址。转向步骤702。步骤702、mmu20根据tlb存储的第一页表缓存以及第二页表缓存查询目标虚拟地址的页表项。若在第二页表缓存中命中,则转向步骤703;若在第二页表缓存中未命中,且在第一页表缓存中命中,则执行步骤705;若在第一页表缓存以及第二页表缓存均未命中,则执行tlb缺失处理。mmu20接收内存访问请求后,首先根据目标虚拟地址分别计算虚拟大页号以及虚拟小页号,这两个概念的解释参照前文。例如,假设pcm51的物理大页的大小为2mb,dram52的物理小页的大小为4kb,虚拟地址va:01001001011010100011111100011011,则虚拟大页号big_vpn=va&gt;&gt;21,即将虚拟地址右移21位;虚拟小页号small_vpn=va&gt;&gt;12,即将虚拟地址右移12位。然后,mmu20在第一页表缓存中查询虚拟大页号的映射,以及在第二页表缓存中查询虚拟小页号的映射。一种查询顺序为:mmu20首先在第二页表缓存中查找虚拟小页号,只有在第二页表缓存未命中(miss)后,才在第一页表缓存中查找虚拟大页号。另一种查询顺序为:mmu20同时在第一页表缓存中查询虚拟大页号的映射,以及在第二页表缓存中查询虚拟小页号的映射,若在第二页表缓存命中,则停止在第一页表缓存中查找;若在第一页表缓存中命中,则仍需继续在第二页表缓存中查找。步骤703、mmu20根据第二页表缓存确定与虚拟小页对应的dram52的物理小页的地址,向内存控制器发送该dram52的物理小页的地址。转向步骤704。步骤704、内存控制器40根据该dram52的物理小页的地址访问dram52。步骤705、mmu20根据第一页表缓存确定与虚拟大页对应的pcm51的物理大页的地址,向内存控制器发送该pcm51的物理大页的地址。转向步骤706。步骤706、内存控制器40根据位图判断与目标虚拟地址对应的物理大页内的小页的数据是否被迁移,若是,则执行步骤707,否则,执行步骤708。目标虚拟地址对应的物理大页内的小页的确定方式为:根据步骤705已经确定物理大页的页号,目标虚拟地址对应的pcm51物理地址为该物理大页内的大页偏移量位置处,沿用步骤702中物理大页为2mb的例子,大页偏移量big_offset=va&(1<<21-1),即为虚拟地址的后21位,根据物理大页号以及大爷偏移量,即可定位出目标虚拟地址对应的物理大页内的小页。步骤707、内存控制器从该小页中读取dram52的物理小页的地址,根据该dram52的物理小页的地址访问dram52。步骤708、内存控制器根据pcm51的物理大页的地址访问pcm51。转向步骤709。步骤709、内存控制器将被访问的物理大页的小页的访问次数加1,判断该小页的访问次数是否超过设置阈值。若超过,则执行步骤710。步骤710、内存控制器将访问次数超过设置阈值的小页的数据迁移至dram52的物理小页,并在数据被迁移的小页中添加dram52的物理小页的地址。转向步骤711。步骤711、处理器10在第二页表缓存中添加dram52的物理小页与虚拟小页的映射。而tlb缺失处理为:mmu20查询内存中的第一页表,查找到虚拟大页的映射,并将该映射添加至第一页表缓存。在进行tlb缺失处理后,继续执行步骤705。上述流程中,在保留pcm51的大页内存,保障tlb的高命中率的情况下,mmu20可以在tlb30保存的第一页表缓存以及第二页表缓存中快速查找目标虚拟地址对应的页表项,进而快速确定目标物理地址,提高内存访问效率。在本申请的一个实施例中,用于表征物理大页的小页的数据是否被迁移的位图存储在第一页表缓存中,在上述步骤702中,若在第二页表缓存中未命中,且在第一页表缓存中命中,则mmu20查询位图,进一步判断目标虚拟地址对应的物理大页内的小页的数据是否被迁移,若是,则指示内存控制器40执行步骤707,否则,指示内存控制器40执行步骤708。表2为包含位图的第一页表缓存的示意。通过表2可以确定,虚拟大页b对应的物理大页b,且物理大页b的的第一个小页、第二个小页、第四个小页未被迁移,而第三个小页已被迁移。虚拟大页号物理大页号迁移标识序列bb0010….………表2另外,本发明实施例提供的技术方案可以与高速缓存(cache)技术结合,mmu20在确定出目标虚拟地址对应的物理大页地址或物理小页地址后,计算机系统可以先在cache中查找物理大页地址或物理小页地址所对应的数据,只有在cache未命中后,才由内存控制器根据物理大页地址或物理小页地址进行内存访问。可选的,本申请实施例中,在需要将pcm51的页物理大页的小页的数据迁移至dram52时,如果dram52中没有空闲的存储空间,内存控制器40根据预设的页面置换算法将dram52中的一个或多个物理小页迁移回pcm51之中。其中,预设的页面置换算法可以有多种实现方式,包括但不限于以下算法:(1)先进先出算法,即将最早迁移至dram52的数据迁移回pcm51;(2)最久未被使用(notrecentlyused,nru)算法,即将dram52中最久没被访问的数据迁移回pcm51之中;(3)最近最少使用(leastrecentlyused,lru)算法,即将dram52中最近访问频率最低的数据迁移回pcm51之中;(4)最优更换算法,即将dram52中不会再被访问的数据迁移回pcm51,或者,将将dram52中最久不会被访问的数据迁移回pcm51。预设页面置换算法还可以包括时钟算法、第二次机会算法等,请参照现有技术,本申请实施例在此不一一详述。上述技术方案中,在dram52没有空闲空间存放由pcm51迁移来的数据时,可以根据预设的各种页面置换算法将dram52中已存储的数据迁移回pcm51,进而使得dram52始终能够容纳最近写过热的小页的数据,提高dram52的存储空间的利用率。可选的,本申请实施例中,若计算机系统设置有表征pcm51的物理大页的小页的数据是否被迁移的位图,则在将dram52中从pcm51的小页中迁移来的数据迁移回该小页之后,从该位图中删除表征该小页的数据被迁移的标识。继续参照图1,本申请实施例提供一种计算机系统,包括:处理器10、mmu20、内存控制器40以及混合内存50。处理器10可以通过总线与mmu20、内存控制器40以及混合内存50通信。混合内存50包含有第一存储器以及第二存储器,第一存储器为非易失性存储器,例如图1中的pcm51,第二存储器为易失性存储器,例如图1中的dram52。mmu20用于:接收处理器10发送的第一访问请求,访问请求中携带有第一虚拟地址;根据第一页表缓存将第一虚拟地址转换为第一物理地址,第一物理地址为第一存储器中的第一大页的物理地址,其中,第一页表缓存用于记录虚拟地址与第一存储器的大页的物理地址的映射关系,第一存储器的大页包括多个小页;内存控制器40用于根据第一物理地址访问第一存储器,并在根据第一物理地址访问第一存储器的过程中,当确定第一大页中的第一小页的数据被迁移到第二存储器中时,根据第一小页中存储的第二物理地址访问第二存储器,其中,第二物理地址为第二存储器中的第二小页的物理地址,第二小页中存储有从第一小页中迁移出的数据,第二存储器中包括多个小页,第二存储器中的小页的大小小于第一存储器中的大页的大小。作为一种可选的方式,内存控制器40还用于:当第一小页中的访问次数超过设置阈值时,将第一小页中的数据迁移至第二小页中;在第一小页中存储第二小页的第二物理地址。作为一种可选的方式,内存控制器40还用于:在将第一小页的数据迁移至第二小页中之后,在设置的位图中设置第一标识,第一标识用于指示第一小页中的数据已经被迁移。作为一种可选的方式,计算机系统中还包括第二页表缓存,第二页表缓存用于记录虚拟地址与第二存储器的小页的物理地址的映射关系;处理器10还用于:在第一小页中的数据被迁移至第二小页中之后,在第二页表缓存中添加第二虚拟地址与第二物理地址的映射关系。作为一种可选的方式,mmu20还用于:接收处理器发送的第二访问请求,第二访问请求包含有第二虚拟地址;根据第二页表缓存获得与第二虚拟地址具有映射关系的第二物理地址;内存控制器40还用于:根据第二物理地址访问第二存储器。作为一种可选的实施方式,计算机系统还包括tlb30,用于存储第一页表缓存。在一些实施例中,tlb30还用于存储第二页表缓存。上述处理器10可以是一个处理器元件,也可以是多个处理器元件的统称。例如,该处理器可以是中央处理器(centralprocessingunit,cpu),也可以是特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路,例如:一个或多个微处理器(digitalsignalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)。上述处理器10、mmu20、tlb30以及内存控制器40可以与处理器10集成在一起,也可以独立于处理器10之外。上述mmu20与tlb30可以集成在一起,也可以为两个独立器件。在tlb30同时存储第一页表缓存以及第二页表缓存的实施例中,tlb30可以为一个tlb器件,也可以为两个tlb器件,在后一种情形中两个tlb器件分别用于存储第一页表缓存、第二页表缓存。上述混合内存50的实现方式在前文介绍图1时已有描述,在此不再重复。上述计算机系统在内存访问的过程中所执行的动作以及所起的作用,在图2至图5所述的内存访问方法中已有详细描述,在此不再重复。本申请实施例还提供了一种计算机可读存储介质,用于存储为执行上述处理器10所需执行的计算机软件指令,其包含用于执行上述处理器10所需执行的程序。图6为本申请实施例提供的内存访问装置的示意图,该内存访问装置应用于在计算机系统中进行内存访问。计算机系统包括混合内存,混合内存包含有第一存储器以及第二存储器,其中,第一存储器为非易失性存储器,第二存储器为易失性存储器。内存访问装置包括:接收模块801,用于接收第一访问请求,访问请求中携带有第一虚拟地址;转换模块802,用于根据计算机系统中的第一页表缓存将第一虚拟地址转换为第一物理地址,其中,第一物理地址为第一存储器中的第一大页的物理地址,第一大页中包含有多个小页;访问模块803,用于在根据第一物理地址访问第一存储器的过程中,当确定第一大页中的第一小页的数据被迁移到第二存储器中时,根据第一小页中存储的第二物理地址访问第二存储器,其中,第二物理地址为第二存储器中的第二小页的物理地址,第二小页中存储有从第一小页中迁移出的数据,其中第二存储器中包括多个小页,第二存储器中的小页的大小小于第一存储器中的大页的大小。作为一种可选的方式,内存访问装置还包括:迁移模块804,用于当该第一小页中的访问次数超过设置阈值时,将第一小页中的数据迁移至第二小页中;在第一小页中存储第二小页的第二物理地址。作为一种可选的方式,内存访问装置还包括:标识模块805,用于在将第一小页的数据迁移至第二小页中之后,在设置的位图中设置第一标识,第一标识用于指示第一小页中的数据已经被迁移。作为一种可选的方式,计算机系统还包括第二页表缓存,内存访问装置还包括:映射模块806,用于在将第一小页中的数据迁移至第二小页中之后,在第二页表缓存中添加第二虚拟地址与第二物理地址的映射关系,第二页表缓存用于记录虚拟地址与第二存储器的小页的物理地址的映射关系。作为一种可选的方式,接收模块801还用于:接收第二访问请求,第二访问请求包含有第二虚拟地址;根据第二页表缓存获得与第二虚拟地址具有映射关系的第二物理地址;访问模块803还用于:根据第二物理地址访问第二存储器。上述内存访问装置的各模块的实现方式可以参照图2至图5所述的内存访问方法中各步骤的实现方式。本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:u盘、移动硬盘、磁碟、光盘、随机存储器(random-accessmemory,ram)、固态硬盘(solidstatedisk,ssd)或者非易失性存储器(non-volatilememory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1