一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存地址处理方法、装置、设备及存储介质与流程

2022-03-05 10:19:45 来源:中国专利 TAG:


1.本发明涉及计算机地址管理领域,具体是涉及一种内存地址处理方法、装置、设备及存储介质。


背景技术:

2.日常生活中常见的手机、电脑等电子智能设备中通常存在一颗cpu,cpu通过虚拟地址得到对应的物理地址,并依据物理地址访问内存。每次访问内存时都需要按照一定的规则将虚拟地址翻译到物理上互不覆盖的物理地址空间上,降低了运行效率,从而降低了运行的实时性。
3.综上所述,现有技术通过虚拟地址获取的物理地址降低了运行的实时性。
4.因此,现有技术还有待改进和提高。


技术实现要素:

5.为解决上述技术问题,本发明提供了一种内存地址处理方法、装置、设备及存储介质,解决了现有技术通过虚拟地址获取物理地址降低了运行的实时性的问题。
6.为实现上述目的,本发明采用了以下技术方案:
7.第一方面,本发明提供一种内存地址处理方法,其中,包括:
8.获取虚拟地址信息;
9.依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系;
10.依据所述条目,得到与所述虚拟地址信息所对应的物理地址信息。
11.在一种实现方式中,所述依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系,包括:
12.依据所述虚拟地址信息,得到所述虚拟地址信息中的应用程序所对应的虚拟地址;
13.依据所述应用程序所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目。
14.在一种实现方式中,所述依据所述应用程序所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目,包括:
15.依据所述应用程序所对应的所述虚拟地址,通过快表模块得到所述虚拟地址所对应的所述条目,所述快表模块用于保存所述条目。
16.在一种实现方式中,所述依据所述应用程序所对应的所述虚拟地址,通过快表模块得到所述虚拟地址所对应的所述条目,所述快表模块用于保存所述条目,包括:
17.依据所述应用程序所对应的所述虚拟地址,通过查询所述快表模块中的应用程序快表模块和硬件快表模块得到所述虚拟地址所对应的所述条目,所述应用程序快表模块只用于保存所述应用程序所对应的所述条目,所述硬件快表模用于保存所述应用程序所对应
的所述条目也用于保存除所述应用程序所对应的所述条目之外的所述条目。
18.在一种实现方式中,所述依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系,包括:
19.依据所述虚拟地址信息,得到所述虚拟地址信息中的操作系统所对应的虚拟地址;
20.依据所述操作系统所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目。
21.在一种实现方式中,所述依据所述操作系统所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目,包括:
22.依据所述操作系统所对应的所述虚拟地址,通过查询内核专用软件快表模块,得到所述虚拟地址所对应的所述条目,所述内核专用软件快表模块只用于保存所述操作系统所对应的所述条目。
23.在一种实现方式中,还包括:
24.在获取虚拟地址信息中的应用程序所对应的虚拟地址之前,将所述应用程序所对应的所述条目通过软件快表加速填充模块填充至所述应用程序快表模块。
25.第二方面,本发明实施例还提供一种内存地址处理方法的装置,其中,所述装置包括如下组成部分:
26.信息采集模块,用于获取虚拟地址信息;
27.条目获取模块,用于依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系;
28.地址转换模块,用于依据所述条目,得到与所述虚拟地址信息所对应的物理地址信息。
29.第三方面,本发明实施例还提供一种终端设备,其中,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的内存地址管理程序,所述处理器执行所述内存地址管理程序时,实现上述所述的内存地址处理方法的步骤。
30.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有内存地址管理程序,所述内存地址管理程序被处理器执行时,实现上述所述的内存地址处理方法的步骤。
31.有益效果:本发明首先用条目记录虚拟地址与物理地址之间的映射关系,即虚拟地址与条目一一对应,条目又与物理地址一一对应,从而建立起虚拟地址与物理地址之间的映射关系,而且是在需要获取物理地址之前就提前保存好了条目,因此,当需要通过虚拟地址获取物理地址时,直接通过上述已经提前保存好的映射关系即可获取物理地址,而不需要cpu按照设定的规则将虚拟地址翻译成物理地址,从而提高了运行的实时性。
32.另外,本发明是通过条目建立了虚拟地址与物理地址之间的映射关系,而不是直接让虚拟地址等于物理地址,从而提高了安全性。
附图说明
33.图1为本发明的流程图。
具体实施方式
34.以下结合实施例和说明书附图,对本发明中的技术方案进行清楚、完整地描述。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.经研究发现,日常生活中常见的手机、电脑等电子智能设备中通常存在一颗cpu,cpu通过虚拟地址得到对应的物理地址,并依据物理地址访问内存。每次访问内存时都需要按照一定的规则将虚拟地址翻译到物理上互不覆盖的物理地址空间上,降低了运行效率,从而降低了运行的实时性。现有技术通过虚拟地址获取的物理地址降低了运行的实时性。
36.为解决上述技术问题,本发明提供了一种内存地址处理方法、装置、设备及存储介质,解决了现有技术通过虚拟地址获取的物理地址降低了运行的实时性问题。具体实施时,本发明首先用条目记录虚拟地址与物理地址之间的映射关系,即虚拟地址与条目一一对应,条目又与物理地址一一对应,从而建立起虚拟地址与物理地址之间的映射关系,提高了运行的实时性。
37.举例说明,虚拟地址a1、a2、a3,虚拟地址a1对应物理地址b1,虚拟地址a2对应物理地址b2,虚拟地址a3对应物理地址b3,本实施例用条目c1记录a1与b1的映射关系,用条目c2记录a2与b2的映射关系,用条目c3记录a3与b3的映射关系,当获取到其中一个虚拟地址a1时,便可以得到a1对应的条目c1,从而再依据c1得到物理地址b1。本实施例,通过条目c1建立了虚拟地址a1与物理地址b1之间的映射,缩短了由虚拟地址a1得到物理地址b1所需要的时间,进而提高了运行的实时性。
38.示例性方法
39.本实施例的一种内存地址处理方法可应用于处理器内存管理单元系统中。在本实施例中,如图1中所示,所述内存地址处理方法具体包括如下步骤:
40.s100,获取虚拟地址信息。
41.本实施例的虚拟地址信息包括应用程序所对应的虚拟地址和操作系统所对应的虚拟地址。
42.本实施例是通过cpu获取应用程序即将要访问的虚拟地址以及操作系统即将要访问的虚拟地址。
43.s200,依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系。
44.当实施例的虚拟地址信息为应用程序所对应的虚拟地址时,步骤s200包括如下的步骤s201和s202:
45.s201,依据所述虚拟地址信息,得到所述虚拟地址信息中的应用程序所对应的虚拟地址。
46.应用程序做内存访问时,需要首先获取到应用程序即将要访问的虚拟地址,才能通过虚拟地址找到对应的物理地址,进而实现对内存的访问。
47.s202,依据所述应用程序所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目。步骤s202的具体过程如下:
48.依据所述应用程序所对应的所述虚拟地址,通过查询所述快表模块中的应用程序快表模块(apptlb)和硬件快表模块(hwtlb)得到所述虚拟地址所对应的所述条目,所述应
用程序快表模块只用于保存所述应用程序所对应的所述条目,所述硬件快表模用于保存所述应用程序所对应的所述条目也用于保存除所述应用程序所对应的所述条目之外的所述条目。
49.本实施例通过快表查找模块(finder)根据应用程序所对应的虚拟地址同时查找apptlb和hwtlb中是否有符合该虚拟地址的条目。如果在apptlb中找到了该条目,则完成查询虚拟地址所对应的条目的操作,并将记录该条目所提示的访问权限。如果在apptlb中没有找到该条目而在hwtlb中找到了该条目,即apptlb没有返回结果,则记录hwtlb中找到的该条目所提示的访问权限。如果apptlb和hwtlb都返回查询结果,则使用具有优选权的apptlb的查询结果;如果在apptlb和hwtlb中都没有找到该条目,则将应用程序所对应的虚拟地址传递给页表读取模块(walker),待该walker返回查询结果。
50.本实施例同时查询apptlb和hwtlb,当在apptlb和hwtlb都没有得到查询结果时再去walker中。本实施例之所以采取上述查询顺序是因为本实施例在获取虚拟地址之前,已经将虚拟地址与物理地址之间的映射关系用条目记录,并将即将要运行的应用程序所对应的条目由操作系统优先填充在apptlb中,apptlb只用于填充应用程序所对应的条目。walker取得的应用程序所对应的条目则填充在hwtlb中,其中本实施例的apptlb是完全由软件管理的(也就是由操作系统控制的)。当填充hwtlb之后,依然有剩下的应用程序所对应的条目没有被填充,那么后续如果需要获取这些条目所对应的物理地址也只能通过walker来查找并填充进hwtlb了(该过程可能替换hwtlb中的已有条目)。从上述分析可知,apptlb只用于填充应用程序所对应的条目,所以优先在apptlb中查询,能够提高查询效率,进而提高运行的实时性。另外本实施例的hwtlb和apptlb配合使用,以此允许将当前应用程序必然使用的条目填充在apptlb中,以防止找不到应用程序所对应的条目而启动walker查找。下面介绍apptlb的填充过程:
51.本实施例通过软件快表加速填充模块(autofill)来将应用程序所对应的条目填充在apptlb中,cpu提供可触发autofill的指令,可以通过内存中已组织好的的数据表格来加速填充apptlb中的表项。cpu在切换应用程序时可直接运行带有立即数的指令来批量填充apptlb。这样,一来节约了指令条数,二来也方便内存控制器批量读取内存,提高了内存带宽利用率。三来因为是操作系统负责填充apptlb,因此填充时cpu一定运行于特权态,不会使用应用态下才使用的apptlb中的映射。因此,填充指令执行后,具体填充工作可以和cpu接下来的执行并行进行(直到cpu需要返回用户态之前)。cpu不需要等待具体填充工作完成,相比由cpu亲自填充而言提高了效率。而本实施例中的autofill是一个优选模块,不是必要模块,如果autofill不存在,那cpu也可以逐条填充了,但是后者相对前者需要使用更多的时间去填充。
52.当实施例的虚拟地址信息为操作系统所对应的虚拟地址时,步骤s200包括如下的步骤:
53.s203,依据所述虚拟地址信息,得到所述虚拟地址信息中的操作系统所对应的虚拟地址;
54.s204,依据所述操作系统所对应的所述虚拟地址,得到所述虚拟地址所对应的所述条目。步骤s204的具体过程:依据所述操作系统所对应的所述虚拟地址,通过查询内核专用软件快表模块,得到所述虚拟地址所对应的所述条目,所述内核专用软件快表模块只用
于保存所述操作系统所对应的所述条目。
55.本实施例同时查询内核专用软件快表模块(ostlb)和hwtlb。之所以同时查询是为了节约查询时间。由于ostlb具有优选权,当在ostlb和hwtlb中都查询到操作系统所对应的条目时,则以ostlb查询到的条目为准。如果在ostlb和hwtlb中都没有查询到操作系统所对应的条目,则再在walker中查询操作系统所对应的条目。ostlb是可以由操作系统软件填充的、操作系统访存时专用的快表。它所含的表项(表项用于保存条目)数是2的方次,比如8条或64条,但它的条目可以设计的较少,因为内核的地址空间往往不复杂。它也仅有一级缓存,即为它自身。它的其它特性与apptlb是类似的,除了一点:在cpu设计中,ostlb被不被autofill支持由设计者自行选择。因为内核运行要依赖于它,即便使用autofill装填它,cpu也必须停止以等待装填完成。
56.本实施例也可以同时对apptlb和ostlb进行填充,具体过程如下:
57.autofill可被cpu的指令或指令序列激活,从内存中提取条目快速填充apptlb和操作系统内核专用软件快表模块(ostlb)。若填充的是apptlb,则cpu仍可继续执行内核态代码;若填充的是ostlb,cpu需暂停执行直到该填充结束。优选地,在soc设计中可为cpu提供一个能以cache速度存取的片上内存区(scratchpad),专门用来存放各个实时应用程序欲填充入apptlb的内容。一方面减少了对dram的带宽压力,另一方面提高cpu访问这些内容的速度从而加速填充。
58.同样本实施例也可以同步查询应用程序所对应的条目查询和操作系统所对应的条目,具体过程如下:
59.当需要查询操作系统的虚拟地址所对应的条目时,autofill不查询apptlb(这是因为apptlb中只含有应用程序所对应的条目,不含有操作系统所对应的条目),而是查询ostlb,因此允许在查询ostlb的同时将应用程序的虚拟地址所对应的条目填充到apptlb中,从而实现查询ostlb和填充apptlb同步进行,进而提高了运行的实时性。
60.s300,依据所述条目,得到与所述虚拟地址信息所对应的物理地址信息。
61.本实施例中的条目记录了虚拟地址与物理地址之间的映射关系,所以依据条目,就能将虚拟地址转换转换为物理地址,从而使得应用程序或者操作系统访问相应的内存物理地址。
62.下面以两个实施例说明本发明的管理内存地址的详细过程:
63.实施例一
64.在本实施例中,有三个应用程序a、b、c和操作系统内核k运行在架构cpu上。其中,应用程序a和b是高优先级的实时应用程序,且a的优先级又高于b的优先级,应用程序c是三者中优先级最低的常规应用程序。而从内存空间组织的复杂度上看,c》b》a。操作系统内核k负责管理调度a、b、c。
65.(1)a和b都在阻塞,c独占cpu。当前的硬件快表模块(hwtlb)中充满了c的页表项(页表项用于存放条目),而apptlb为空。ostlb充满了操作系统k使用的页表项,并自始至终不会被动到。由于地址空间采取了虚拟到物理的映射方式,a、b、c均可以使用不连续的物理内存来构成自己的虚拟内存。
66.应用程序包括实时应用程序和常规应用程序,此步骤的过程是完成将实时应用程序所对应的条目保存在apptlb中,常规应用程序所对应的条目保存在hwtlb,操作系统所对
应的条目保存在ostlb,以便于后续的查询条目。
67.(2)当b收到信号准备解除阻塞(即b要开始访问内存)。cpu切换到内核态运作。操作系统k立即停止c的运行,保存c的上下文,通过autofill在apptlb中查询实时应用程序b所对应的条目,同时也将hwtlb对应的当前页表切换为b的页表,以便于同步在apptlb和hwtlb中查询实时应用程序b所对应的条目。
68.(3)在autofill运行的同时,操作系统做必要工作维护自身状态并恢复b的上下文。
69.(4)b解除阻塞并运行,b的几乎全部的条目都将在已经被填充好的apptlb中,因此实时性相比c而言大大提高。但仍有部分条目没有在apptlb中找到,而hwtlb中又没有,只好启动页表读取模块(walker)去内存中查找页表,因此实时性受到一些影响。
70.(5)在b运行期间,hwtlb中的c所对应的条目被逐渐驱逐,hwtlb开始存在b所对应的所有条目中不在apptlb中的条目。
71.(6)a收到信号准备解除阻塞(即a要开始访问内存),cpu切换到内核态运作。操作系统k立即停止b的运行,保存b的上下文,并运行指令通过autofill在apptlb中查询a的全部条目,并将hwtlb对应的当前页表设置为空页表。
72.(7)在autofill运行的同时,操作系统做必要工作维护自身状态并恢复a的上下文。
73.(8)a解除阻塞并运行,hwtlb中没有a的页表,即a的全部条目已经被填充在apptlb中,因而不需要在hwtlb中查询a的条目,因此不可能发生任何等待,实时性相比b而言又大大提高。
74.(9)a结束运行重新阻塞,b恢复运行。b结束运行重新阻塞,c恢复运行。
75.(10)在c看来,其依赖的hwtlb中有部分b的条目,但大量自身的条目仍然存在。因此c只要重新经历一些硬件快表模块(hwtlb)缺失就能重新填充缺失的条目到hwtlb中,保持了c的运行效率。
76.本实施例中,当c发生了一个非法访存错误,误访问了其页表中不存在的内存空间。操作系统k终止c的运作并向用户报告该访存错误。
77.从本实施例中可以看到,若apptlb能放下应用程序的全部页表条目,则应用程序访存时不可能发生任何页表条目的缺失,从而能节约数千乃至数万个机器周期,使操作系统对中断的响应时间缩短到1us以内。由于ostlb中已经存放了操作系统的所有条目,因此操作系统本身也不发生任何页表条目的缺失,大大增加了系统的确定性。autofill功能和cpu的指令运行能够并行不悖,本身不增加cpu的负担。
78.同时,hwtlb整合有asid功能,在切换应用时不会清除页表项,在应用程序切换回来之后仍能保持部分原有条目,提高了系统的运行效率。
79.实施例二
80.有两个应用程序a、b和操作系统内核k运行在cpu上。其中,应用程序a是高优先级的实时应用程序,应用程序b是低优先级的常规应用程序。从访存次数上和运行时间上看,b》》a。操作系统内核k负责管理调度a和b。
81.(1)a在阻塞,b独占cpu。当前的hwtlb中充满了b的页表项,而apptlb功能被关闭,这是因为b是常规应用程序,b所对应的条目只保存在hwtlb而不会保存在apptlb中,因此可
以关闭apptlb,这样在查询b所对应的条目时就可以不查询apptlb了。b在运行中虽然进行了大量访存,但apptlb已经关闭,apptlb的比较器不运作,内部逻辑不翻转,节约了大量动态功耗。
82.(2)a收到信号准备解除阻塞。操作系统k立即停止b的运行,保存b的上下文,开启apptlb,并运行指令通过autofill在apptlb中查询a所对应的条目。
83.(3)在autofill运行的同时,操作系统做必要工作维护自身状态并恢复a的上下文,开始运行a。a进行的访存会查找apptlb,因此系统处于较高的功耗水平。
84.(4)a经过短暂的运行后又阻塞,操作系统再关闭apptlb功能,切换为b,继续运行。此时系统的功耗又回到低水平。
85.从本实施例中可以看到,apptlb在不使用时可以关闭,以节约功耗。而且,若应用程序是不兼容apptlb或不知晓apptlb的存在的,apptlb也可以关闭以兼容它们。
86.综上,当需要通过虚拟地址获取物理地址时,直接通过上述已经提前保存好的映射关系即可获取物理地址,而不需要cpu按照设定的规则将虚拟地址翻译成物理地址,从而提高了运行的实时性。本发明是通过条目建立了虚拟地址与物理地址之间的映射关系,而不是直接让虚拟地址等于物理地址,从而提高了安全性。本发明还可以将不相邻的物理内存页表整合起来使用,降低了外部内存碎片,提高了内存的使用效率。本发明能够避免页表项确实现象的发生。
87.示例性装置
88.本实施例还提供一种内存地址处理方法的装置,所述装置包括如下组成部分:
89.信息采集模块,用于获取虚拟地址信息;
90.条目获取模块,用于依据所述虚拟地址信息,得到与所述虚拟地址信息所对应的条目,所述条目用于记录虚拟地址与物理地址之间的映射关系;
91.地址转换模块,用于依据所述条目,得到与所述虚拟地址信息所对应的物理地址信息。
92.基于上述实施例,本发明还提供了一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的内存地址管理程序,所述处理器执行所述内存地址管理程序时,实现上述所述的内存地址处理方法的步骤。
93.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
94.综上,本发明公开了一种内存地址处理方法、装置、设备及存储介质,所述方法包括:本发明首先用条目记录虚拟地址与物理地址之间的映射关系而且是在需要获取物理地
址之前就提前保存好了条目,因此,当需要通过虚拟地址获取物理地址时,直接通过上述已经提前保存好的映射关系即可获取物理地址,而不需要cpu按照设定的规则将虚拟地址翻译成物理地址,从而提高了运行的实时性。
95.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献