CN105373421A - 终端和终端中处理数据的方法 - Google Patents
终端和终端中处理数据的方法 Download PDFInfo
- Publication number
- CN105373421A CN105373421A CN201410364591.0A CN201410364591A CN105373421A CN 105373421 A CN105373421 A CN 105373421A CN 201410364591 A CN201410364591 A CN 201410364591A CN 105373421 A CN105373421 A CN 105373421A
- Authority
- CN
- China
- Prior art keywords
- application data
- slot
- mmu
- exchange partition
- internal 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.)
- Pending
Links
Landscapes
- Memory System (AREA)
Abstract
本发明实施例提供一种终端和终端中处理数据的方法,该终端包括:内存,内存包括多个页面;交换分区,交换分区包括多个页槽;内存总线,内存和交换分区直接连接在内存总线上;内存控制器MMU,控制内存和交换分区之间通过内存总线进行应用数据的传输。本发明实施例中内存和交换分区之间通过内存总线进行应用数据的传输,无需经过I/O设备的调度,能够快速的进行内存和交换分区之间的数据传输,提升用户体验。
Description
技术领域
本发明涉及通信领域,特别涉及一种终端和终端中处理数据的方法。
背景技术
随着移动微处理器和移动操作系统的发展,终端设备(例如智能手机,平板等)越来越普及,针对终端设备设计的应用功能越来越强大。这些功能丰富的应用一方面能帮助提高终端设备的用户体验,另一方面却需要更多的内存资源,存储资源。现有的操作系统,例如,安卓(Android)系统、windows操作系统、苹果公司的移动操作系统(ios)等为了提高用户的体验,当用户开启一个应用程序后,即使用户退出了应用程序,程序却没有真正的退出,仍然驻留在内存中,当用户再次打开这个应用程序时,该应用程序就可以立即切换回来,而不用再次从存储设备上例如安全数码卡、移动硬盘等加载到内存。
由于这些驻留在内存中的应用程序对内存的资源的消耗,当内存资源不足时,现有的操作系统提供了通过交换(Swap)分区的方法来解决内存资源不足的问题。具体地,当内存不足时,操作系统会将一些不经常使用的内存页面转出到交换分区中,从而减少对内存的占用。传统方法中采用磁盘、闪存等块设备(Blockdevice)作为交换分区,内存和交换分区之间的数据传输由输入输出(I/O)驱动程序负责。操作系统把正在使用的内存页面维护在一个近期最少使用(LRU,LeastRecentlyUsed)链表中,当内存空闲页面不足时,该操作系统使用页框回收算法(PFRA,PageFrameReclaimAlgorithm)从LRU链表中回收一些较少被用到的页面放到交换分区中;当操作系统启动已将数据存放到交换分区中的应用时,会将存放到交换分区中的数据重新转出到内存中。
虽然现有基于块设备的交换分区能够解决内存不足等问题,但是内存和交换分区的数据传输需要由I/O设备调度,由于I/O设备存在速度慢延迟大等问题,导致内存和交换分区的数据传输较慢,影响用户体验。
发明内容
本发明实施例提供一种终端和终端中处理数据的方法,加快了内存和交换分区的数据传输速度,能够提升用户体验。
第一方面,提供了一种一种终端,该终端包括:内存,内存包括多个页面;交换分区,交换分区包括多个页槽;内存总线,内存和交换分区直接连接在内存总线上;内存控制器MMU,控制内存和交换分区之间通过内存总线进行应用数据的传输。
结合第一方面,在第一种可能的实现方式中,多个页槽中的空闲页槽通过空闲页槽的地址构成链表,链表包括链表头页槽和链表尾页槽,MMU控制应用数据从多个页面中的一个页面转入链表头页槽中,并且MMU控制多个页槽中的一个页槽将应用数据转出后,将应用数据已转出的页槽作为链表尾页槽。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,存储在内存中的应用数据的页表项PTE对应应用数据的虚拟地址,PTE包括标志位,标志位的取值用于表示应用数据是否转移到交换分区。
结合第二种可能的实现方式,在第三种可能的实现方式中,在应用数据从内存的页面转移到交换分区的页槽后,PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间建立只读映射。
结合第三种可能的实现方式,在第四种可能的实现方式中,在应用数据从交换分区的页槽转移到内存的页面后,PTE对应的应用数据的虚拟地址与应用数据转入到的页面之间建立读写映射。
结合第一方面或第一至第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,MMU采用内存拷贝的方式控制内存和交换分区之间进行应用数据的传输。
结合第一方面或第一至第五种可能的实现方式中的任一种可能的实现方式,在第六种可能的实现方式中,交换分区为非易失存储器NVM。
第二方面,提供了一种终端中处理数据的方法,该终端包括内存,内存包括多个页面;交换分区,交换分区包括多个页槽;内存总线,内存和交换分区直接连接在内存总线上;内存控制器MMU,控制内存和交换分区之间通过内存总线进行应用数据的传输;该方法包括:MMU获取处理数据指令,处理数据指令用于指示MMU控制内存和交换分区之间应用数据的传输;MMU根据处理数据指令控制内存和交换分区之间通过内存总线进行应用数据的传输。
结合第二方面,在第一种可能的实现方式中,多个页槽中的空闲页槽通过空闲页槽的地址构成链表,链表包括链表头页槽和链表尾页槽,MMU根据处理数据指令控制内存和交换分区通过内存总线进行应用数据的传输,包括:在MMU控制应用数据从多个页面中的一个页面转出时,MMU通过内存总线将应用数据从多个页面中的一个页面转入链表头页槽中;在MMU控制应用数据从交换分区的一个页槽转出时,MMU通过内存总线将页槽中的应用数据转入空闲的页面中,将应用数据已转出后的页槽作为链表尾页槽。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,在存储在内存中的应用数据的页表项PTE中设置标志位,标志位的取值用于表示应用数据是否转移到交换分区,其中,PTE对应应用数据的虚拟地址。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,包括:在所述MMU将所述应用数据从所述内存的页面转移到所述交换分区的页槽后,当MMU对应用数据访问时,MMU建立PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间的只读映射。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,还包括:在所述MMU对所述应用数据的访问为写操作时,MMU将应用数据从交换分区的页槽转移到内存的页面中,并且,MMU建立PTE对应的应用数据的虚拟地址与应用数据转入到的页面之间的读写映射。
结合第二方面或第二方面的第一至第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,MMU根据处理数据指令控制内存和交换分区之间通过内存总线进行应用数据的传输是通过MMU采用内存拷贝的方式进行的。
结合第二方面或第二方面的第一至第五种可能的实现方式中的任一种可能的实现方式,在第六种可能的实现方式中,交换分区为非易失存储器NVM。
基于上述技术方案,本发明实施例的内存和交换分区直接连接在内存总线上,内存控制器(MMU,MemoryManagementUnit)控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,无需经过I/O设备调度,能够快速进行内存和交换分区的数据传输,提升用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明一个实施例的终端的示意框图。
图2是根据本发明一个实施例的终端的存储区的示意框图。
图3是根据本发明一个实施例的内存和交换分区之间数据传输的示意框图。
图4是根据本发明另一实施例的内存和交换分区之间数据传输的示意框图。
图5是根据本发明一个实施例的链表的示意框图。
图6是根据本发明一个实施例的PTE的示意框图。
图7是根据本发明一个实施例的应用数据访问的示意框图。
图8是根据本发明另一实施例的应用数据访问的示意框图。
图9是根据本发明另一实施例的应用数据访问的示意框图。
图10是基于本发明一个实施例的终端的应用程序启动时间的仿真结果的示意图。
图11是基于本发明一个实施例的终端的应用程序后台运行的能耗的仿真结果的示意图。
图12是基于本发明一个实施例的终端中减少的内存拷贝次数的仿真结果的示意图。
图13是根据本发明一个实施例的终端中处理数据的方法的示意流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1是根据本发明一个实施例的终端的示意性框图。如图1所示,该终端100包括:
内存110,内存包括多个页面;交换分区120,交换分区包括多个页槽(slot);内存总线130,内存和交换分区直接连接在内存总线上;MMU140,控制内存和交换分区通过内存总线进行应用数据的传输。
因此,本发明实施例的内存和交换分区直接连接在内存总线上,MMU能够控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,无需经过I/O设备调度,能够快速地进行内存和交换分区的数据的传输,提升用户体验。
可选地,作为另一实施例,交换分区为可以直接连接在内存总线上的存储器,例如,交换分区可以为非易失存储器NVM。其中,NVM包括:相变存储器(PCM,PhaseChangeMemory)、磁力阻存储器(MRAM,MagneticRandomAccessMemory)或忆阻存储器等。
由于NVM可以像内存例如动态随机存取存储器(DRAM,DynamicRandomAcessMemory)一样进行字节寻址(Byteaddressable),且和内存相比,静态功耗较低,读写带宽可以和内存相近,因此在本发明实施例中,NVM直接和内存总线相连,和内存处于同一层次,操作系统可以通过虚拟地址直接访问交换分区上的页面,无需经过I/O设备调度;并且NVM具有带宽高低延迟等特性,因此,能够快速的进行内存和交换分区的数据的传输,提升用户体验。
应注意,本发明实施例的交换分区还可以为其他形式的能够直接连接在内存总线上的存储器,本发明实施例并不对此做限定。
可选地,根据本发明实施例,MMU采用内存拷贝的方式,通过内存接口管理内存和交换分区之间的数据传输。
具体地,MMU采用内存拷贝的方式将页面中的应用数据转出到页槽中,或者将页槽中的应用数据转入到页面中。
换句话说,该终端的中央处理器CPU向MMU发出指令,控制MMU进行页面的拷贝。
例如,在基于Linux的Android操作系统中,CPU可以使用memcpy()函数控制MMU进行页面的拷贝,实现应用数据的传输。
可选地,作为另一实施例,页面与页槽的大小相等。具体地,在较佳实施例中页面的大小为4kb,页槽的大小也为4kb。例如,一个2Gb的内存中可以包括2Gb/4kb个页面。多个页槽中的每一个页槽的大小都相等,例如,页槽的大小可以为4kb,一个2Gb的交换分区中可以包括2Gb/4kb个页槽。
这样,页面和页槽大小相等,MMU可以更好的管理页面和页槽之间的数据传输,一个页面的数据刚好转移到一个页槽中,同样,一个页槽的数据刚好转移到一个页面中。
应理解,页槽的大小也可以不等于页面的大小,例如,页槽大于页面,例如,页槽为8kb,页面大小为4kb,一个页槽中可以仅使用一半的空间(4kb)进行存储数据,可以将一个页面的数据转移到一个页槽中,一个页槽的数据转移到一个页面中;或者,一个页槽中可以使用全部的空间(8kb)进行数据存储,可以将两个页面的数据转移到一个页槽中,将一个页槽的数据转移到两个页面中,本发明实施例并不限于此。
可选地,作为另一实施例,内存和交换分区的物理地址为连续的。
换句话说,内存和交换分区一起连接在内存总线上,内存和交换分区统一编址。这样,操作系统可以像通过虚拟地址访问内存上的数据一样访问交换分区上的数据,能够提高移动设备的性能,提升用户体验。
可选地,作为另一实施例,多个页槽中的空闲页槽通过空闲页槽的地址构成链表,链表包括链表头页槽和链表尾页槽,MMU控制应用数据从多个页面中的一个页面转入链表头页槽中,并且MMU控制多个页槽中的一个页槽将应用数据转出后,将应用数据已转出的页槽作为链表尾页槽。
具体地,MMU控制多个页面中的一个页面将应用数据转出时,将应用数据转入到链表头页槽中,并将该链表头页槽从链表中删除,将链表中位于该链表头页槽中的下一个页槽作为新的链表头页槽。MMU控制多个页槽中的一个页槽将应用数据转出后,将转出后的页槽添加到链表中,并作为新的链表尾页槽。
可选地,作为另一实施例,存储在内存中的应用数据的页表项(PTE,pagetableentry)对应应用数据的虚拟地址,PTE包括标志位,标志位的取值用于表示应用数据是否转移到交换分区。
具体地,PTE位于应用的页表(pagetable)中的标号可以为PTE对应的应用数据的虚拟地址,一个PTE对应一个页面,例如,一个PTE具有32位,其中,第12位至第31位中可以存储有该PTE对应的应用数据的物理地址,可以将PTE的第5位设为标志位,该标志位的取值可以为1或0,当标志位的取值为1时,可以表示该PTE对应的应用数据位于交换分区,当标志位的取值为0时,可以表示该PTE对应的应用数据位于内存中。
可选地,作为另一实施例,在应用数据从内存的页面转移到交换分区的页槽后,PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间建立只读映射。具体地,例如,标志位的取值为1时,在MMU对已将应用数据转出到页槽中的页面访问时,MMU建立虚拟地址与存储有应用数据的页槽之间的只读映射。
也就是说,当MMU对已将应用数据转出到页槽中的页面访问时,MMU只建立PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间的只读映射,无需将页槽中的应用数据拷贝到内存的页面中,如果该访问为只读访问,MMU可直接通过虚地址访问交换分区上的应用数据。
因此,本发明实施例中的终端中对于只读的访问,不需要将页槽中的应用数据拷贝到内存的页面中,可直接通过虚地址访问交换分区上的应用数据,这样减少拷贝次数,提升运行时间,同时减少了耗能,能够提高移动设备的性能,提升用户体验。
进一步地,作为另一实施例,在应用数据从交换分区的页槽转移到内存的页面后,PTE对应的应用数据的虚拟地址与应用数据转入到的页面之间建立读写映射。
换句话说,在MMU对应用数据的访问为写操作时,MMU将应用数据转入到内存的页面中,并建立虚拟地址与应用数据转入到的页面的读写映射。
具体地,在MMU对应用数据的访问为写操作时,由于之前MMU建立的是只读映射,进行写操作时会触发相应的错误,MMU会根据相应的错误信息进行处理,具体地,MMU将应用数据转入到内存的页面中,并建立虚拟地址与应用数据转入到的页面的读写映射。
下面结合具体例子,更加详细地描述本发明实施例。应注意,图1的例子仅仅是为了帮助本领域技术人员理解本发明实施例,而非要将本发明实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的图1的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。
具体地,图2是根据本发明一个实施例的终端的存储区的示意框图。图2中的存储区包括内存和交换分区,其中,图2中的内存和交换分区的物理地址为连续的。也就是说,图2中的内存和交换分区统一编址,这样操作系统可以像通过虚拟地址访问内存上的数据一样访问交换分区上的数据,无需经过I/O设备的调度。具体地,如图2所示的存储区200,包括内存110和交换分区120,图2中的存储区200分为两个区域,分别为内存区域如图2中内存110所示,和交换分区区域,如图2中交换分区120所示。
应注意,图2仅是示意性的,图2中仅给出了一种内存和交换分区统一编址的情形,本发明实施例中,还可以为其他形式,例如,存储区可以包括三个区域,该三个区域可以包括两个内存区域和一个交换分区区域,其中,交换分区位于两个内存区域之间。或者存储区包括多个内存区域和一个交换分区区域。本发明实施例并不对此做限定。
应理解,上述内存和交换分区的物理地址为连续的情形,可选地,内存的物理地址和交换分区的物理地址可以为不连续。本发明实施例并不限于此。
图3是根据本发明一个实施例的内存和交换分区之间数据传输的示意框图。如图3所示,内存110和交换分区120之间数据通过内存接口330进行传输,具体地,如图3所示,当MMU控制应用数据由内存页面的一个页面310转入到一个页槽320中时,或者一个页槽320中的应用数据转入到一个页面310时,通过内存接口330进行应用数据的传输。
具体地,作为另一实施例MMU采用内存拷贝的方式,管理内存和交换分区之间通过内存接口应用数据传输。具体地,该终端的中央处理器CPU向MMU发处理数据的指令,控制MMU进行页面的拷贝。
具体地,图4是根据本发明另一实施例的内存和交换分区之间数据传输的示意框图,如图4所示,在基于Linux的Android操作系统中,CPU可以使用memcpy()函数控制MMU进行页面的拷贝,实现应用数据的传输。如图4所示,CPU使用memcpy()函数控制MMU进行页面的拷贝,将应用数据由内存110页面410转出,并转入到交换分区120中的页槽420中,或者,CPU使用memcpy()函数控制MMU进行页面的拷贝,将应用数据由页槽420转出,并转入到页面410中。
可选地,作为另一实施例,多个页槽中的空闲页槽通过空闲页槽的地址构成链表,链表包括链表头页槽和链表尾页槽,MMU控制应用数据从多个页面中的一个页面转入链表头页槽中,并将该链表头页槽从链表中删除,将链表中位于该链表头页槽中的下一个页槽作为新的链表头页槽。并且MMU控制多个页槽中的一个页槽将应用数据转出后,将应用数据已转出的页槽作为链表尾页槽。换句话说,MMU控制多个页槽中的一个页槽将应用数据转出后,将转出后的页槽添加到链表中,并作为新的链表尾页槽。
具体地,图5是根据本发明一个实施例的链表的示意框图。如图5所示的链表500,包括交换分区中多个页槽中的空闲页槽,该链表包括表头页槽510和表尾页槽520,链表中的每一个页槽包括三部分内容,其中除链表头页槽和链表尾页槽外的中间页槽例如页槽530包括的三部分内容分别为:第一部分531,为前一个页槽的地址;第二部分532,为当前页槽的地址;第三部分533,为下一个页槽的地址。其中,链表头页槽510中第一部分内容为空,第二部分内容为该表头页槽对应的地址和指示该页槽为表头页槽的指示信息,第三部分内容为下一个页槽对应的地址。链表尾页槽520中的第一部分内容为前一个页槽对应的页槽的地址,第二部分为该链表尾页槽对应的地址和指示该页槽为链表尾页槽的指示信息,第三部分内容为空。当需要分配一个页槽时,选择链表头页槽作为需要分配的页槽;换句话说,当MMU控制将一个页面的应用数据转出到一个页槽时,MMU控制应用数据从多个页面中的一个页面转入链表头页槽中,同时,将该链表头页槽从链表中删除,将链表中位于该链表头页槽中的下一个页槽作为新的链表头页槽。当回收一个不用的页槽时,将该作为链表尾页槽,换句话说,并且MMU控制多个页槽中的一个页槽将应用数据转出后,将应用数据已转出的页槽作为链表尾页槽。这样能够实现O(1)时间的页槽分配和回收。
可选地,作为另一实施例,存储在内存中的应用数据的页表项(PTE,pagetableentry)包括标志位,标志位的取值用于表示应用数据是否转移到交换分区。
具体地,图6是根据本发明一个实施例的PTE的示意框图。如图6所示的页表项600,包括32位,包括第0位610至第31位640,其中的第5位620可以用来当作标志位,第12位630至第31位640中存储有该应用数据的物理地址,该标志位的取值可以为1或0,当标志位的取值为1时,可以表示该PTE对应的应用数据位于交换分区,当标志位的取值为0时,可以表示该PTE对应的应用数据位于内存中。
可选地,作为另一实施例,在应用数据从内存的页面转移到交换分区的页槽后,PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间建立只读映射。换句话说,在PTE中的标志位的取值表示应用数据位于交换分区时,MMU根据虚拟地址对已将应用数据转入到页槽中的页面只读访问时,建立虚拟地址与页槽的只读映射。具体地,图7是根据本发明一个实施例的应用数据访问的示意框图。如图7所示,位于某一应用程序的页表(Pagetable)730中的一个PTE710对应的应用数据位于交换分区120的一个页槽720时,MMU建立PTE710对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽720之间建立只读映射。
当该访问为只读操作时,将直接进行只读访问,无需将应用数据转入到内存110中。
进一步地,在MMU对应用数据的访问为写操作时,MMU将页槽中的应用数据转入到内存的页面中,并建立虚拟地址与应用数据转入到的页面之间的读写映射,进行读写操作。
具体地,图8是根据本发明另一实施例的应用数据访问的示意框图。如图8所示,在MMU对位于页表730中的一个PTE710对应的应用数据需要进行写操作时,MMU将该交换分区120中的页槽720中的应用数据拷贝到内存110中的一个页面830中。之后如图9所示,图9是根据本发明另一实施例的应用数据访问的示意框图。如图9所示,MMU将该交换分区120中的页槽中的应用数据拷贝到内存110中的一个页面830之后,建立页表730中的PTE710对应的应用数据的虚拟地址与内存110中的页面830之间的读写映射。
例如,在终端中运行某一银行的客户端应用时,并且该客户端的应用数据位于交换分区中,当用户仅仅查询账户余额时,该操作属于可读的行为,MMU无需将应用数据拷贝到内存中。当用户执行转账业务时,该操作属于读写的行为,MMU需要将交换分区中的应用数据拷贝到内存中,建立读写映射,以完成转账业务。
图10是基于本发明一个实施例的终端的应用程序启动时间的仿真结果的示意图。图10中展示了三种终端中分别开启应用1-应用5的启动时间。三种终端为无交换分区的终端1020、交换分区为闪存的终端1030和本发明实施例的终端1010,其中,本发明实施例的终端1010与交换分区为闪存的终端1030中的内存和交换分区的大小对应相等,并且无交换分区的终端1020中的内存的存储空间为本发明实施例的终端1010或交换分区为闪存的终端1030中的内存和交换分区的存储空间之和。例如,本发明实施例的终端1010可以为本发明实施例中交换分区为NVM的终端。如图10所示,本发明实施例中的终端1010启动应用程序的时间最快,由于NVM带宽高,低延迟,且可以直接使用虚拟地址进行访问,无需I/O设备调度,因此可以提高移动设备的性能,提升用户体验。
图11是基于本发明一个实施例的终端的应用程序后台运行的能耗的仿真结果的示意图。图11中展示了三种终端中应用1-应用7后台运行的功耗。具体地,三种终端为无交换分区的终端1020、交换分区为闪存的终端1030和本发明实施例的终端1010,其中,本发明实施例的终端1010与交换分区为闪存的终端1030中的内存和交换分区的大小对应相等,并且无交换分区的终端1020中的内存的存储空间为本发明实施例的终端1010或交换分区为闪存的终端1030中的内存和交换分区的存储空间之和。将无交换分区的终端1020中应用程序后台运行的功耗设置为1。图11中展示了三种终端中相同的应用后台运行的功耗的对比。例如,本发明实施例的终端1010为本发明实施例中交换分区为NVM的终端。如图11所示,本发明实施例中的终端1010中应用程序后台运行的功耗最低。本发明实施例中的终端1010中的交换分区例如为NVM,由于NVM与内存相比,没有刷新功耗,且NVM待机功耗低,因此相对功耗较小,可以提高移动设备的性能,提升用户体验。
图12是基于本发明一个实施例的终端中减少的内存拷贝次数的仿真结果的示意图。图12展示了本发明实施例的终端中运行应用类别1-应用类别7时与现有终端相比所减少的将应用数据由交换分区拷贝到内存中的拷贝次数占对交换分区总访问次数的百分比。具体地,图12中的应用类别可以包括:社交网络应用、办公应用、游戏应用、新闻应用、多媒体应用、购物应用、导航应用和浏览器应用等。从图12中可以看出,对于同一应用类别,本发明实施例的终端中会大幅减少将应用数据由交换分区拷贝到内存中的次数。由于本发明实施例中的终端中对于只读的访问,不需要将页槽中的应用数据拷贝到内存的页面中,可直接通过虚地址访问交换分区上的应用数据,这样减少内存拷贝次数,提升运行时间,同时减少了耗能,能够提高移动设备的性能,提升用户体验。
上文中结合图1至图12,详细描述了根据本发明实施例的终端,下面描述根据本发明实施例的终端中处理数据的方法。
其中,该终端为图1至图12中涉及本发明实施例的终端中任一终端。具体的,该终端包括内存,内存包括多个页面;交换分区,交换分区包括多个页槽;内存总线,内存和交换分区直接连接在内存总线上;内存控制器MMU,控制内存和交换分区之间通过内存总线进行应用数据的传输。
如图13所示,方法1300包括:
1310,MMU获取处理数据指令,处理数据指令用于指示MMU控制内存和交换分区之间应用数据的传输。
具体地,MMU可以接收CPU发送的处理数据指令,该处理数据指令可以指示MMU将页面中的应用数据转出到页槽中,或者指示MMU将页槽中的应用数据转入到页面中。
1320,MMU根据处理数据指令控制内存和交换分区之间通过内存总线进行应用数据的传输。
例如,MMU将页面中的应用数据转出到页槽中,或者MMU将页槽中的应用数据转入到页面中。
因此,本发明实施例的内存和交换分区直接连接在内存总线上,MMU控制内存和交换分区通过内存总线进行应用数据的传输,无需经过I/O设备的调度,能够快速地进行内存和交换分区的数据的传输,提升用户体验。
可选地,根据本发明实施例,MMU根据处理数据指令控制内存和交换分区之间通过内存总线进行应用数据的传输是通过MMU采用内存拷贝的方式进行的。
具体地,MMU采用内存拷贝的方式将页面中的应用数据转出到页槽中,或者将页槽中的应用数据转入到页面中。
换句话说,该终端的中央处理器CPU向MMU发出指令,控制MMU进行页面的拷贝。
例如,在基于Linux的Android操作系统中,CPU可以使用memcpy()函数控制MMU进行页面的拷贝,实现应用数据的传输。
具体地,可参照上文中对图3和图4实施例的描述,为避免重复此处不再重述。
应理解,多个页面中的每一个页面的大小都相等,例如,页面的大小可以为4kb,一个2Gb的内存中可以包括2Gb/4kb个页面。多个页槽中的每一个页槽的大小都相等,例如,页槽的大小可以为4kb,一个2Gb的交换分区中可以包括2Gb/4kb个页槽。
这样,页面和页槽大小相等,一个页面的数据刚好转移到一个页槽中,同样,一个页槽的数据刚好转移到一个页面中MMU可以更好的管理页面和页槽之间的数据传输。
应理解,页槽的大小也可以不等于页面的大小,例如,页槽大于页面,例如,页槽为8kb,页面大小为4kb,一个页槽中可以仅使用一半的空间(4kb)进行存储数据,可以将一个页面的数据转移到一个页槽中,一个页槽的数据转移到一个页面中;或者,一个页槽中可以使用全部的空间(8kb)进行数据存储,可以将两个页面的数据转移到一个页槽中,将一个页槽的数据转移到两个页面中,本发明实施例并不限于此。
可选地,作为另一实施例,内存和交换分区的物理地址为连续的。
换句话说,内存和交换分区一起连接在内存总线上,内存和交换分区统一编址。这样操作系统可以像通过虚拟地址访问内存上的数据一样访问交换分区上的数据。
具体地,可参照上文中如图2所示的实施例中对存储区的描述,为避免重复此处不再重述。
可选地,作为另一实施例,多个页槽中的空闲页槽通过空闲页槽的地址构成链表,链表包括多个页槽中的空闲页槽,链表包括链表头页槽和链表尾页槽。在1320中个,在MMU控制应用数据从多个页面中的一个页面转出时,MMU通过内存总线将应用数据从多个页面中的一个页面转入链表头页槽中;在MMU控制应用数据从交换分区的一个页槽转出时,MMU通过内存总线将页槽中的应用数据转入空闲的页面中,将应用数据已转出后的页槽作为链表尾页槽。
例如,可参照上文中如图5所示的实施例中对链表的描述,为避免重复此处不再重述。
可选地,作为另一实施例,在存储在内存中的应用数据的页表项PTE中设置标志位,标志位的取值用于表示应用数据是否转移到交换分区,其中,PTE对应的应用数据的虚拟地址,PTE包括应用数据对应的物理地址。
具体地,PTE位于应用的页表(pagetable)中的标号可以为PTE对应应用数据的虚拟地址,一个PTE对应一个页面,例如,一个PTE具有32位,其中,第12位至第31位中可以存储有该PTE对应的应用数据的物理地址,可以将PTE的第5位设为标志位,该标志位的取值可以为1或0,当标志位的取值为1时,可以表示该PTE对应的应用数据位于交换分区,当标志位的取值为0时,可以表示该PTE对应的应用数据位于内存中。例如,可参照上文中如图6所示实施例中对PTE的描述,为避免重复此处不再重述。
进一步地,作为另一实施例,在1320中,在MMU将应用数据从内存的页面转移到交换分区的页槽后,当MMU对应用数据访问时,MMU建立PTE对应的应用数据的虚拟地址与被转入应用数据的交换分区的页槽之间的只读映射。换句话说,在PTE中的标志位的取值表示应用数据已转移到交换分区时,MMU对已将应用数据转出到页槽中的页面访问时,MMU根据虚拟地址建立与存储有应用数据的页槽的只读映射。
具体地,当MMU对应用数据访问时,换句话说,当MMU对已将应用数据转出到页槽中的页面访问时,MMU只建立只读的映射,无需将页槽中的应用数据拷贝到内存的页面中,如果该访问为只读操作,MMU可直接通过虚地址访问交换分区上的应用数据。
因此,本发明实施例中的终端中对于只读访问,不需要将页槽中的应用数据拷贝到内存的页面中,可直接通过虚地址访问交换分区上的应用数据,这样减少拷贝次数,提升运行时间,同时减少了耗能,能够提高移动设备的性能,提升用户体验。
进一步地,作为另一实施例,在1320中,在MMU对应用数据的访问为写操作时,MMU将应用数据从交换分区的页槽转移到内存的页面中,并且,MMU建立PTE对应的应用数据的虚拟地址与应用数据转入到的页面之间的读写映射。
具体地,在MMU对应用数据的访问为写操作时,由于之前MMU建立的是只读映射,进行写操作时会触发相应的错误,MMU会根据相应的错误信息进行处理,具体地,MMU将应用数据转入到内存的页面中,并建立虚拟地址与应用数据转入到的页面的读写映射。
例如,可参照上文中图7至图9所示实施例的数据访问的描述,为避免重复此处不再重述。
说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种终端,其特征在于,包括:
内存,所述内存包括多个页面;
交换分区,所述交换分区包括多个页槽;
内存总线,所述内存和所述交换分区直接连接在所述内存总线上;
内存控制器MMU,控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输。
2.根据权利要求1所述的终端,其特征在于,
所述多个页槽中的空闲页槽通过所述空闲页槽的地址构成链表,所述链表包括链表头页槽和链表尾页槽,所述MMU控制应用数据从所述多个页面中的一个页面转入所述链表头页槽中,并且所述MMU控制所述多个页槽中的一个页槽将应用数据转出后,将所述应用数据已转出的页槽作为所述链表尾页槽。
3.根据权利要求1或2所述的终端,其特征在于,
存储在所述内存中的所述应用数据的页表项PTE对应所述应用数据的虚拟地址,所述PTE包括标志位,所述标志位的取值用于表示所述应用数据是否转移到所述交换分区。
4.根据权利要求3所述的终端,其特征在于,
在所述应用数据从所述内存的页面转移到所述交换分区的页槽后,所述PTE对应的所述应用数据的虚拟地址与被转入所述应用数据的交换分区的页槽之间建立只读映射。
5.根据权利要求4所述的终端,其特征在于,
在所述应用数据从所述交换分区的页槽转移到所述内存的页面后,所述PTE对应的所述应用数据的虚拟地址与所述应用数据转入到的页面之间建立读写映射。
6.根据权利1至5中任一项所述的终端,其特征在于,
所述MMU采用内存拷贝的方式控制所述内存和所述交换分区之间进行应用数据的传输。
7.根据权利要求1至6中任一项所述的终端,其特征在于,
所述交换分区为非易失存储器NVM。
8.一种终端中处理数据的方法,其特征在于,所述终端包括内存,所述内存包括多个页面;交换分区,所述交换分区包括多个页槽;内存总线,所述内存和所述交换分区直接连接在所述内存总线上;内存控制器MMU,控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输;所述方法包括:
所述MMU获取处理数据指令,所述处理数据指令用于指示所述MMU控制所述内存和所述交换分区之间应用数据的传输;
所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输。
9.根据权利要求8所述的方法,其特征在于,
所述多个页槽中的空闲页槽通过所述空闲页槽的地址构成链表,所述链表包括链表头页槽和链表尾页槽,
所述MMU根据所述处理数据指令控制所述内存和所述交换分区通过所述内存总线进行应用数据的传输,包括:
在所述MMU控制应用数据从所述多个页面中的一个页面转出时,所述MMU通过所述内存总线将应用数据从所述多个页面中的一个页面转入所述链表头页槽中;
在所述MMU控制应用数据从所述交换分区的一个页槽转出时,所述MMU通过所述内存总线将所述页槽中的应用数据转入空闲的页面中,将应用数据已转出后的页槽作为所述链表尾页槽。
10.根据权利要求8或9所述的方法,其特征在于,
在存储在所述内存中的所述应用数据的页表项PTE中设置标志位,所述标志位的取值用于表示所述应用数据是否转移到所述交换分区,其中,所述PTE对应所述应用数据的虚拟地址。
11.根据权利要求10所述的方法,其特征在于,所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,包括:
在所述MMU将所述应用数据从所述内存的页面转移到所述交换分区的页槽后,
当所述MMU对所述应用数据访问时,所述MMU建立所述PTE对应的所述应用数据的虚拟地址与被转入所述应用数据的交换分区的页槽之间的只读映射。
12.根据权利要求11所述的方法,其特征在于,所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输,还包括:
在所述MMU对所述应用数据的访问为写操作时,
所述MMU将所述应用数据从所述交换分区的页槽转移到所述内存的页面中,并且,所述MMU建立所述PTE对应的所述应用数据的虚拟地址与所述应用数据转入到的页面之间的读写映射。
13.根据权利8至12中任一项所述的方法,其特征在于,
所述MMU根据所述处理数据指令控制所述内存和所述交换分区之间通过所述内存总线进行应用数据的传输是通过所述MMU采用内存拷贝的方式进行的。
14.根据权利要求8至13中任一项所述的方法,其特征在于,
所述交换分区为非易失存储器NVM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410364591.0A CN105373421A (zh) | 2014-07-29 | 2014-07-29 | 终端和终端中处理数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410364591.0A CN105373421A (zh) | 2014-07-29 | 2014-07-29 | 终端和终端中处理数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105373421A true CN105373421A (zh) | 2016-03-02 |
Family
ID=55375646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410364591.0A Pending CN105373421A (zh) | 2014-07-29 | 2014-07-29 | 终端和终端中处理数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105373421A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766151A (zh) * | 2017-09-28 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种页面换出方法 |
CN116719633A (zh) * | 2022-09-20 | 2023-09-08 | 荣耀终端有限公司 | 管理内存交换分区的方法和电子设备 |
-
2014
- 2014-07-29 CN CN201410364591.0A patent/CN105373421A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766151A (zh) * | 2017-09-28 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种页面换出方法 |
CN116719633A (zh) * | 2022-09-20 | 2023-09-08 | 荣耀终端有限公司 | 管理内存交换分区的方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526546B (zh) | 一种Spark分布式计算数据处理方法及系统 | |
CN102707966A (zh) | 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端 | |
CN104008061A (zh) | 内存回收方法及装置 | |
CN104965757A (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
CN106104485A (zh) | 针对多进程应用的动态资源管理 | |
CN104346290A (zh) | 存储装置、计算机系统及其操作方法 | |
CN104423894A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN103942292A (zh) | 虚拟机镜像文件处理方法、装置及系统 | |
CN112306415B (zh) | Gc流控方法、装置、计算机可读存储介质及电子设备 | |
CN103902575A (zh) | 一种图片信息加载方法及相关装置 | |
CN102866954A (zh) | 内存分配的方法及装置 | |
CN105988875B (zh) | 一种运行进程的方法及装置 | |
CN103984602A (zh) | 一种vm资源调度方法、装置及系统 | |
CN104539708A (zh) | 一种云平台资源的缩容方法、装置与系统 | |
CN105068769A (zh) | 一种基于消息中间件的消息管理方法及装置 | |
CN104199784A (zh) | 一种基于分级存储的数据迁移方法及装置 | |
CN102135943B (zh) | 闪存数据的存储、访问方法及装置 | |
CN102945275A (zh) | 文件碎片整理方法、装置及设备 | |
CN107783946A (zh) | 文本显示方法及文本显示设备 | |
CN103049546B (zh) | 一种管理、访问系统日志的方法和装置 | |
CN104808953A (zh) | 控制数据存储的方法、装置及移动终端 | |
CN105373421A (zh) | 终端和终端中处理数据的方法 | |
CN104978169A (zh) | 期刊阅读应用的sdk处理方法及装置 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160302 |