CN107924363B - 使用存储器管理单元的自动化存储器管理 - Google Patents
使用存储器管理单元的自动化存储器管理 Download PDFInfo
- Publication number
- CN107924363B CN107924363B CN201680044291.1A CN201680044291A CN107924363B CN 107924363 B CN107924363 B CN 107924363B CN 201680044291 A CN201680044291 A CN 201680044291A CN 107924363 B CN107924363 B CN 107924363B
- Authority
- CN
- China
- Prior art keywords
- size
- subspace
- memory
- objects
- logical address
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 claims description 42
- 238000013507 mapping Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 17
- 230000001186 cumulative effect Effects 0.000 claims description 4
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 claims description 3
- 238000007906 compression Methods 0.000 description 32
- 230000006835 compression Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 12
- 238000013467 fragmentation Methods 0.000 description 8
- 238000006062 fragmentation reaction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 101100377706 Escherichia phage T5 A2.2 gene Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在计算机系统(100)中,自动化存储器管理模块(150)通过以下步骤进行操作:从变更器(140)接收对随机存取存储器(120)中待存储的特定对象(O[1]……O[9])的存储器分配请求(141),以及将逻辑地址空间(155)内的特定逻辑地址(Axy;A2.1……A1.4)分配给所述特定对象(O[1]……O[9])。所述自动化存储器管理模块(150)根据至少一个准则来区分特定对象(O[1]……O[9]),并且分配来自第一子空间(155‑1)的逻辑地址(A1.y)和来自第二子空间(155‑2)的逻辑地址(A2.y)。存储器管理单元(130)将来自所述第二子空间(155‑2)的所分配的逻辑地址(A.2)映射到所述随机存取存储器(120)中的物理存储器(P1……P104)。结合在所述随机存取存储器中移动对应对象而压缩所述第一子空间(155‑1)内的所述逻辑地址。
Description
技术领域
本描述总体上涉及计算机,具体地说,涉及具有自动化存储器管理(AMM)的计算机。本描述还涉及一种方法、一种计算机程序产品以及一种计算机系统。
背景技术
计算机系统执行具有对象(例如数据(例如文本、图像、位图、控制信号、数据字段、数据数组、表)和程序代码(例如,用于例程调用、任务、线程))的应用。计算机系统在随机存取存储器(RAM)中存储对象,并且使用逻辑地址和物理地址以标识存储器内的对象。对象通常彼此引用。可以通过所谓的对象图来描述各对象之间的引用关系。
由于应用是连续地执行的,因此它们将对象添加到存储器,在存储器中修改对象,从存储器移除对象,和/或改变各对象之间的引用关系。存储对象并非静态的,相反是高度动态的。
因此,只要正执行应用,存储器空间就分配给一些对象,并且从其它对象解除分配。随着时间,分配/解除分配带来RAM的碎片化,并且空闲存储器不再占据相邻地址范围。碎片化防止将相邻存储器分配给大对象。出于各种其它原因,将对象划分为部分并非选项。去除碎片化技术包括所谓的压缩步骤(下文中又称为压缩),用于在存储器内部或地址空间内部移动对象。
本领域中常见的是通过自动化存储器管理(AMM)模块执行分配/解除分配和/或去除碎片化。与应用并行或与应用交错而执行AMM模块。AMM模块根据预定规则进行操作。AMM在本领域中又称为“垃圾收集”。AMM模块或提供AMM的其它程序或工具又称为“垃圾收集器”。
如所述,应用改变各对象之间的引用关系。关于AMM,应用变更对象图,并且因此,应用称为“变更器”。
在第一情形中,应用(即变更器)直接运行在计算机上,并且AMM模块实现为计算机的操作系统的功能。
在第二情形中,应用需要用于执行的运行时环境(RTE)。AMM模块可以实现为RTE的功能。在此情况下,AMM模块执行为(计算机的)操作系统外部的处理。例如,RTE可以专用于特定编程语言(例如JAVA)。
然而,在这两种情况下,AMM模块消耗计算机资源(例如处理器时间和存储器)。存在具有至少两个方面的资源冲突:在AMM模块正执行分配、解除分配、去除碎片化等的同时,必须停止或暂停应用。在替选中,AMM模块必须在更大复杂度的情况下被编程,以允许得以并行执行。
更具体地说,(在上述压缩期间)移动对象防止应用在对象正移动的同时存取对象。这样在应用的连续执行中产生暂停。此外,其耗费于在RAM内部移动对象的时间取决于对象的大小。这种时间对大小的依赖性总是线性关系:移动大对象耗费得比移动小对象更长。允许移动任意大小的对象可以使得应用停止达任意时间间隔。
此外,也在这两种情形中,AMM可能出于多种原因而导致应用的故障,例如,比如:(i)碎片化可以防止将相邻存储器空间分配给对象,(ii)AMM模块可以在执行应用中产生暂停,(iii)AMM模块可能无法足够快速地标识用于反复使用的存储器(回收未使用的存储器)。
一些应用用在电信中、控制工业机器中、或实时应用的连续可用性是强制的其它领域中。例如,一些应用需要周期性执行任务(例如100微秒的周期)。
根据US 2012/102289A1,可以不同地处理不同大小、类型或其它方面的对象。例如,区分小对象和大对象,并且在堆存储器的相对端处分配存储器。该方法减少压缩所需的工作。然而,这是在不使用存储器管理单元(MMU)的情况下执行的。
根据US 2010/250893A1,使用MMU避免拷贝物理存储器。该方法允许压缩对象的虚拟地址,而不拷贝下层物理存储器。反之,对象的新的虚拟地址映射到原始物理地址。这样避免需要拷贝物理数据。
发明内容
本发明实施例提供一种用于通过改进的自动化存储器管理(AMM)模块、计算机实现的方法和计算机程序产品来解决计算机系统中的上述冲突的方法。与所提及的现有技术方法对比,(在虚拟存储器中以及在物理存储器中)可以一起避免压缩大对象。
该方法利用现代计算中的进展:计算机系统具有存储器管理单元(MMU)(即提供逻辑到物理地址映射的硬件),并且计算机系统具有大于实际物理存储器的大小的地址空间(例如264个地址)。用于逻辑地址的空间(或“范围”)划分为至少两个子空间:用于启用(在去除碎片化期间的)压缩的第一子空间(所谓的“压缩空间”)以及禁用压缩的第二子空间(所谓的“非压缩空间”)。换言之,第一子空间是“可压缩的”,而第二子空间是“不可压缩的”。第二子空间大得足以容纳所有大小类别的所有潜在对象,并且第二子空间由MMU映射,以解除分配物理存储器,而无需在RAM内部移动对象。
当应用/变更器关于特定对象而请求存储器时,AMM模块应用至少一个预定区别准则,并且将对象区分为“压缩对象”和“非压缩对象”,并且分别在压缩空间中或非压缩空间中分配逻辑地址。
区别准则与上述冲突有关:为了解决资源冲突,通过对象大小来区分对象。存在具有小于阈值大小的大小的对象以及具有大于(或等于)阈值大小的大小的对象。在本描述中,对象分别区分为“小对象”和“大对象”。
AMM模块将压缩空间中的逻辑地址分配给小对象,并且将非压缩空间中的逻辑地址分配给大对象。
在这样的意义上考虑上述时间-大小依赖性:压缩存储大对象的RAM的部分可以得以避免,或可以至少受限于并非与AMM模块竞争资源的MMU(即硬件)进行的动作。阈值大小可以是区别将逻辑地址分配到压缩空间和非压缩空间中的压缩限制。
可选地,根据准则的组合来区分对象。
AMM模块将压缩应用于压缩空间中的逻辑地址处的小对象,但无需将压缩应用于非压缩空间中(逻辑地址处)的大对象。鉴于资源冲突,注意,AMM模块(与MMU和RAM组合)关于压缩所需的时间是有限的。该时间实质上与(在压缩空间中具有其逻辑地址的)最大对象的大小线性相关。应用将必须停止的时间因此是有限的。
多个变更器可以在随着时间保持不变的地址处存取同一对象(非压缩空间)。无需将地址更新传输到多个变更器及其之间。
实现方式参数可以考虑计算机系统和/或应用的特殊性:在按对象大小的对象区别的情况下,压缩空间具有根据阈值大小而间隔的逻辑地址。阈值大小可以与RAM的页面粒度有关。
可以实现替选实施例。例如,并非启用/禁用压缩或压缩/非压缩,可以通过不同压缩模式(例如按相对短的间隔的压缩(仅第一子空间)以及按相对大的间隔的压缩(两个子空间))来执行压缩。
用于操作计算机系统中的自动化存储器管理(AMM)模块的计算机实现的方法包括:预留、接收、分配、映射以及压缩。逻辑地址空间具有第一子空间和第二子空间。
在预留步骤中,AMM模块预留具有带有不同大小类的槽的部分的第二子空间。AMM模块将第二子空间的大小计算为某因子和变更器的最大堆大小的乘积。
在接收步骤中,AMM模块从变更器接收存储器分配请求。请求针对计算机系统的随机存取存储器中待存储的特定对象。在分配步骤中,AMM模块将逻辑地址空间内的特定逻辑地址分配给特定对象。AMM模块由此根据至少一个准则来区分特定对象,并且分配来自第一子空间的逻辑地址和来自第二子空间的逻辑地址。在映射步骤中,存储器管理单元(MMU)将所分配的逻辑地址从第二子空间映射到随机存取存储器中的物理存储器。在压缩步骤中,在MMU在随机存取存储器内部移动对应对象的同时,其压缩第一子空间内的逻辑地址。
在分配中,AMM模块可选地根据作为对象大小准则的至少一个准则来区分特定对象。
在分配中,AMM模块可选地使用预定义阈值大小作为对象大小准则,并且对于具有小于预定义阈值大小的对象大小的对象分配第一子空间中的逻辑地址,而且对于具有大于预定义阈值大小或等于预定义阈值大小的对象大小的对象分配第二子空间中的逻辑地址。
可选地,预定义阈值大小可以与随机存取存储器的页面大小有关。预定义阈值大小可以等于页面大小或页面大小的倍数。
在预留的步骤中,AMM模块可以预留具有带有用于不同大小类的对象的槽的部分的逻辑地址空间的第二子空间。可以对于相等大小的部分执行预留。预留可以包括:计算与变更器的最大堆大小对应的部分的大小成为第二子空间中潜在地待存储的对象的累计大小。预留可以包括:预留部分。第一部分可以具有与堆大小除以预定义阈值对应的第一数量的槽,并且第二部分可以具有与第一数量除以2对应的第二数量的槽。替代地,预留可以包括:预留具有带有作为2的幂数量的第一数量的槽以及具有从第一数量的槽在几何级数中计算的数量的槽的相邻槽的开始部分的部分。
所述方法可以具有其它步骤:解除分配来自任一子空间特定的逻辑地址中的一些。AMM模块指令MMU从第二子空间中的先前所分配的逻辑地址解除映射物理存储器,而不压缩随机存取存储器中的对象。
可选地,AMM模块可以根据作为对象属性的至少一个准则来区分特定对象。对象属性可以包括从以下选择的属性:对象类型、对象存取的频率、对象传递到外部代码以及对象由硬件直接存取。
计算机系统可以执行计算机实现的方法以及计算机程序产品的步骤,计算机程序产品当加载到计算机的存储器中并且由计算机的至少一个处理器执行时执行计算机实现的方法的步骤。可以提供计算机程序产品,从而AMM模块是用于以编程语言(例如JAVA、C#、PYTHON、JAVASCRIPT、SCALA或GO)写成的变更器的运行时环境的部分。
附图说明
图1示出具有处理器、随机存取存储器和存储器管理单元以及变更器和自动化存储器管理(AMM)模块的计算机系统的框图;
图2示出在连续时间点在计算机系统中的AMM模块的逻辑地址空间;
图3示出另外具有两个变更器和具有两个逻辑地址空间的AMM模块的计算机系统的框图;
图4示出计算机实现的方法的流程图示图;
图5示出划分为多个部分的逻辑地址子空间;以及
图6示出可以用于在此所描述的技术的普通计算机设备和普通移动计算机设备的示例。
具体实施方式
具体实施方式开始于解释概述示图。描述关注于通过作为对象大小(OS)的区别准则来解决资源冲突,并且通过示例的方式示出AMM模块随着时间的操作。描述进一步讨论流程图示图以及实现方式参数,并且通过描述普通计算机系统而结束。
图1示出具有处理器110(例如中央处理单元(CPU))、随机存取存储器(RAM)120和存储器管理单元(MMU)130的计算机系统100的框图。为了简明,并未示出其它硬件组件(例如用于传递数据和/或地址的总线)。计算机系统100是可以用于实现计算机实现的方法(参照图4)的系统。
图1(通过虚线矩形)还示出软件模块:变更器140和AMM模块150。软件模块实现于RAM 120中,并且由处理器110执行,并且其它实现方式是可能的。为了简明,图1示出RAM120外部的模块。注意,可选地,可以通过软件实现MMU 130。
软件模块和硬件与计算机系统的操作系统进行交互,例如,以实际上实现请求。本领域技术人员可以考虑操作系统,而无需在此进一步解释。
变更器140由程序代码(即用于应用的代码)实现。变更器140可以是需要运行时环境(RTE,有时:虚拟机)以用于执行的应用。例如,可以通过编程语言(例如JAVA、C#、PYTHON、JAVASCRIPT、SCALA或GO)写成变更器140。AMM模块150可以是该RTE的部分。
为了简明,假设处理器110在一个时间点仅可以执行一个软件模块。这样导致需要限制AMM模块150(以及与AMM模块进行交互的组件(例如MMU和RAM))独占地处于操作中(要么仅AMM模块,而非变更器;或反之亦然)的时间。这种时间方面的限制在此表征为通常以微秒为单位测量的最大允许时间(或界限时间)TMAX。限制可以是相对的:TMAX可以是(与变更器的执行时间有关的)变更器的时间的分数。限制也可以是绝对时间间隔,以确保在预定时段期间对于变更器的处理器可用性。
处理器110正执行的变更器140发放对RAM 120中待临时地存储的对象的存储器分配请求141(“Req[i]”)。对象可以是数据对象(例如图像数据、音频数据、视频数据、控制数据)和/或代码对象(例如用于程序例程的代码)、或RAM 120中待存储的比特和字节的任何其它集合。以下,根据变更器140发放请求的顺序,对象标记为O[1]、O[2]、……O[i]。
AMM模块150包括具有逻辑地址Ax.y的逻辑地址空间155。如在此所使用的那样,注记“Ax.y”是简化的,并且可以包括开始地址和结束地址、开始地址和允许计算结束地址的范围、地址空间中的槽或标识逻辑地址的任何其它惯例。
在示例中,连续地址Ax.y和Ax.y+1之间的以字节为单位测量的距离是“地址间空间”,给出为deltax(例如deltax1、deltax2)。
逻辑地址空间155分配给变更器140。AMM模块150还包括功能模块156,以至少执行功能分配、解除分配和选择性压缩。图2中通过示例示出鉴于这些功能的随着时间的逻辑地址空间155的状态。
在功能分配中,AMM模块150从变更器140接收存储器分配请求141,并且将逻辑地址空间155内部的逻辑地址Ax.y分配给对象。有选择地将逻辑地址Ax.y分配为至少第一子空间155-1(逻辑地址A1.1……A1.K)和第二子空间155-2(逻辑地址A2.1……A2.L)。各子空间的区别与(在稍后时间点的)压缩功能有关,从而第一子空间155-1又称为“压缩空间”,并且第二子空间155-2又称为“非压缩空间”。区别取决于至少一个准则。如上所述,图1关注于对象大小准则。
第二子空间155-2的大小S2与乘以某因子的堆大小(HS)有关,结合图4(预留)和图5解释关于确定第二子空间155-2的大小S2的细节。
MMU 130具有用于将地址空间155的逻辑地址Ax.y映射到RAM 120的物理地址(P1、P2、……)的映射功能。MMU 130管理固定大小的页面。普通页面大小可以是例如4KB(千字节)或128MB(兆字节)。图1的示例假设4KB的页面大小。如上所述,非压缩空间中的逻辑地址可以分配给大对象(即大于页面大小的对象)。MMU 130将一些或更多存储器页面映射到相邻逻辑地址。在示例中,对象O[1]具有8KB(或2个页面)的对象大小,并且对象O[2]同样具有8KB。O[1]是非压缩空间中的对象,并且需要2个存储器页面。如虚线箭头所示,逻辑地址A2.1a和A2.1b分配给对象O[1];并且MMU 130将A2.1a映射到(具有一个页面的大小的)P1,而且将A2.1b映射到(同样具有一个页面的大小的)P2。此外,逻辑地址A2.2a和A2.2b分配给对象O[2];并且MMU 130将A2.2a映射到(具有一个页面的大小的)P6,而且将A2.2b映射到(同样具有一个页面的大小的)P10。可以相应地映射具有不同对象大小(例如每对象n个页面)的对象。
(第一子空间的)逻辑地址A1.1映射到物理地址P101。为了简明,并未示出其它映射。
用于子空间155-1中的逻辑地址的(MMU 130中的)逻辑到物理映射(压缩)可以是静态的,其无需改变以满足分配请求。
图1示出对象存储在RAM 120内部的存储器中,并且还示出RAM 120可能碎片化。例如,物理地址P1和P2是相邻的(其之间没有其它地址),而物理地址P6和P10是不相邻的(由P7、P8、P9分离,未示出)。MMU 130可以在RAM中容纳关于大对象的碎片化。但归因于映射,单个对象可以具有单个逻辑地址,从而变更器140可以在其单个逻辑地址处存取该单个对象(例如,在A2.2处,O[2])。对于变更器140的性能,具有相邻的逻辑地址可以是有利的。在示例中,逻辑地址A2.1和A2.2是相邻的,但MMU 130容纳RAM中正物理地存储的对象的不相邻性。
对附图从左看到右,变更器140发放对于特定对象O[1]、O[2]等的存储器分配请求141(Req[1]、Req[2]……)。AMM模块150接收请求141,并且将逻辑地址Ax.y分配给每个对象。MMU 130提供对物理地址的映射,从而对象存储在RAM 120中。
图1示出逻辑地址已经分配给对象O[1]至O[9]并且这些对象已经存储在RAM 120中的对应物理地址下的时间点。
变更器140频繁地读取、创建、删除对象,或改变不同对象O[j](未示出)与O[i]之间的引用。顾名思义,变更器140连续地变更对象图(即,变更器140改变各对象之间的引用)。因此,一些对象可能变得从对象图不能得到,并且因此变得不能由变更器140存取,从而它们不再需要保存在RAM中(所谓的“垃圾对象”),而可得到或可存取的对象需要保存在RAM中(所谓的“生存对象”)。
通过执行功能解除分配,AMM模块150从AMM模块150已经标识为垃圾对象的对象周期性地解除分配逻辑地址。由于随着时间的分配和解除分配导致碎片化,因此通过执行功能压缩,AMM模块150通过将(生存)对象重新分配给其它逻辑地址Ax.y来压缩逻辑地址空间。为了容纳上述冲突,AMM模块150仅对于第一子空间执行功能压缩。因此可选地使用MMU130。并非压缩,AMM模块150可以通过本领域公知的技术(例如,通过传统垃圾回收)来另外抵抗碎片化(第一子空间)。
MMU 150可以根据对象O[i]的大小(作为准则)来区分存储器分配请求Req[i]。可以按测量单位(例如字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等)来测量对象(和地址空间)的大小。具有小于阈值大小(TS)的大小的对象分配给逻辑地址A1.y(“压缩空间”)。在压缩期间,该小对象(如果生存)将必须在RAM 120内部移动,但耗费于移动它的时间小于最大允许时间TMAX。具有大于(或等于)阈值大小(TS)的大小的对象分配给逻辑地址A2.y(“非压缩”),从而大对象将不在RAM 120内部移动。在对象标识为垃圾的情况下,AMM模块150将通过删除(对象的)逻辑地址对MMU 130内的物理存储器的映射来仅释放物理存储器。
各逻辑地址A1.y至少隔开达delta1,在图1的示例中,delta1与阈值大小TS对应(delta1=TS)。阈值大小TS可以等于RAM 120中的页面的粒度。例如,TS可以等于页面大小PS=4KB。
各逻辑地址A2.y至少隔开达delta2。关于逻辑地址A2.y,可以对于不同大小类实现delta2。图1示出用于A2.L的delta2'。结合图5描述关于进一步区分大对象的该方法的细节。
图2示出在连续时间点的图1的计算机系统100中的AMM模块150的逻辑地址空间155(子空间155-1、152-2)。假设AMM模块150根据对象大小准则进行区分,并且区分小对象(<TS)与大对象(>=TS)。
在时间点t[2],AMM模块150已经接收到Req[1]和Req[2],并且已经将A2.1分配给对象O[1],将A2.2分配给对象O[2]。这两个对象具有大于TS但配合delta2的大小的大小。
在时间点t[4],AMM模块150也已经接收到Req[3]和Req[4],并且已经将A2.3分配给对象O[3],将A2.4分配给对象O[4]。此外,这两个对象具有大于TS但配合delta2的大小。
在时间点t[10],AMM模块150也已经接收到Req[5]至Req[10],并且已经将逻辑地址A2.5分配给O[8](大对象);而且将A1.1分配给对象O[5],将A1.2分配给O[6],将A1.3分配给O[7],将A1.4分配给O[9],并且将A1.5分配给O[10](小对象)。各地址是毗邻的:关于O[1]、O[2]、O[3]、O[4]、O[8],A2.1至A2.5(即,没有间隔),并且关于O[5]、O[6]、O[7]、O[9]、O[10],A1.1至A1.4(即,没有间隔)。
在稍后时间点t’,AMM模块150已经确定对象O[3]、O[4]、O[6]和O[9]要成为垃圾对象。因此,AMM模块150已经解除分配逻辑地址A2.3、A2.4,已经指令MMU 130删除对物理地址的对应映射。AMM模块150也已经解除分配A1.2、A1.4,而无需与MMU 130或RAM 120的交互。归因于解除分配,两个子空间155-1和155-2中的地址空间不再是毗邻的。
在稍后时间点t”,AMM模块150已经压缩(仅)第一空间155-1中的地址,但尚未压缩第二空间155-2中的地址。压缩包括与RAM 120的交互,从而移动对象。然而,耗费于移动小对象O[5]、O[7]或O[10]之一的时间小于TMAX。
在该短时间中断之后,变更器140继续得以执行,并且发送出其它请求。AMM模块150可以继续于分配用于其它对象(例如大对象(例如O[13])和小对象(例如O[14]、O[15]))的地址。
虽然图1–图2关注于对象大小作为准则,但AMM 150也可以根据对象属性(OA)来区分特定对象。对象属性(OA)可以包括例如这样的属性:(1)对象类型、(2)对象的存取的频率、(3)正传递到变更器外部的代码的对象与仅在变更器内部正处理的对象之间的区别、以及(4)硬件正直接存取的对象。
图3示出另外具有两个变更器140和140’以及具有两个逻辑地址空间155和155’的AMM模块150的计算机系统的框图。
AMM模块150分配可以具有子空间的地址空间155和155’(压缩、非压缩)。地址空间的总大小可以彼此不同。AMM模块150接收对变更器140、140’的存储器分配请求141、141’(Req)。功能模块156对于这两个空间可以是共用的。
图4示出用于操作计算机系统100中的AMM模块150(参见图1)的计算机实现的方法400的流程图示图。
如上所述,逻辑地址空间155具有第一子空间155-1和第二子空间155-2。在预留步骤410中,AMM模块150预留具有带有用于不同大小类的对象的槽的部分的(逻辑地址空间155的)第二子空间155-2。预留(410)包括:计算第二子空间155-2的大小(S2)作为因子(M)与变更器(140)的最大堆大小(HS)的乘积。如所解释的那样,堆大小(HS)是潜在地待在子空间155-2中存储的对象的累计大小。将结合图5解释关于大小的其它细节。
在接收步骤420中,AMM模块150从变更器接收对特定对象的存储器分配请求。特定对象待存储在计算机系统的随机存取存储器中。
在分配步骤430中,AMM模块150将逻辑地址空间内的特定逻辑地址分配给特定对象。由此,AMM模块150根据至少一个准则(例如阈值TS、对象属性OA)来区分(435)特定对象,并且分配(431、432)来自第一子空间(压缩空间)的逻辑地址(例如A1.y)和来自第二子空间(非压缩空间)的逻辑地址(例如A2.y)。
在映射步骤442中,AMM模块150指令存储器管理单元130将所分配的逻辑地址从第二子空间(即非压缩空间)映射到RAM中的物理存储器。
在压缩步骤451中,AMM模块150与在随机存取存储器中移动对应对象组合而压缩第一子空间(压缩空间)内的逻辑地址中的生存对象。与之对比,AMM模块150不压缩第二子空间(非压缩空间)内的逻辑地址中的生存对象,但在此情况下,MMU将未使用的物理存储器重新映射到仅对于新分配的对象所使用的逻辑地址,而不移动RAM内部的对象。
在分配步骤430中,AMM模块150可以根据作为对象大小准则的至少一个准则来区分(435)特定对象。预定义阈值大小(TS)可以是对象大小准则,并且AMM模块150可以对于具有小于预定义阈值大小(TS)的对象大小的对象分配(431)第一子空间中的逻辑地址,而且可以对于具有大于TS或等于TS的对象大小的对象分配(432)第二子空间中的逻辑地址。预定义阈值大小可以与RAM 120的页面大小(PS)有关,并且可以等于PS。
图4还示出执行映射441/442(这说明将逻辑地址转译到物理存储器)的MMU 130的操作。一旦AMM模块150已经分配逻辑地址,就应用这两个映射步骤,但区别是:映射(441)使用来自压缩空间的逻辑地址,而映射(442)使用来自非压缩空间的逻辑地址。映射441看作是静态的,而不随着时间改变;而映射442实际上是动态地将物理存储器映射到生存对象当前使用中的逻辑地址的连续重新映射。在压缩步骤451中,MMU 130在存储器内部移动生存对象(这样使得它们的逻辑地址在压缩空间中得以分配)。MMU 140移动对象,从而(压缩空间内部的)空闲逻辑存储器变得在大得足以使用高达页面大小(PS)的分配的毗邻范围中可用。
再次参照AMM模块150的操作,在另一步骤预留(410)中,AMM模块150预留具有带有用于不同大小类的对象的槽的部分的逻辑地址空间的第二子空间(参见图5)。可以对于相等大小的部分执行预留(410)。
预留(410)可以包括:计算与变更器的最大堆大小对应的部分的大小成为第二子空间中潜在地待存储的对象的累计大小。预留(410)可以包括:预留部分,其中,第一部分具有与堆大小(HS)除以预定义阈值(TS)对应的第一数量的槽,并且第二部分具有与第一数量除以2对应的第二数量的槽。在替选中,开始部分具有作为2的幂数量的第一数量的槽,并且相邻槽具有从第一数量在几何级数中计算的数量。
方法400可以具有其它步骤:解除分配来自任一子空间特定的逻辑地址中的一些。AMM模块150指令MMU从第二子空间中的先前所分配的逻辑地址解除映射物理存储器,而不压缩RAM中的对象。
可选地,AMM模块150可以根据作为对象属性(OA)(具有例如执行优先级、执行频率、文件类型、用于将数据传递到(以另一语言写成的或由硬件存取的)外部代码的对象的使用的属性)的至少一个准则来区分(435)特定对象。
图4还示出计算机程序或计算机程序产品。计算机程序产品当加载到计算机的存储器中并且由计算机的至少一个处理器执行时执行计算机实现的方法400的步骤。在实施例中,存储器可以是RAM 120,并且处理器可以是CPU 110。
描述现参照关注于预留(410)步骤中所考虑的对象大小的实现方式方面。
如上所述,图1示出RAM 150中的对象并未碎片化。然而,可能保持大对象碎片化,并且如上所述,仅对于小对象执行压缩。
图5示出划分为多个部分的逻辑地址子空间555-2。逻辑地址空间555-2与图1的逻辑地址空间155-2(即非压缩空间)对应。在示例中,各部分具有(以字节为单位测量的)相等大小,但该惯例仅用于解释。
使用以下注记:A2.m.y代表特定部分m中的特定逻辑地址,其中,y是每个部分内部的标识符(参见图1)。如上所述,逻辑地址A2.m.y可以包括开始地址和结束地址。在图5中,关于部分7和8示出该情况。例如,A2.7.2的结束地址具有小于A2.8.1的开始地址的一个字节的偏移。虽然按列示出,但各部分看作形成毗邻地址空间。
各部分具有可以寻址的对象的最大大小(最大对象大小MOS)所测量的不同大小类中的槽。
部分8具有用于具有512KB的最大对象大小(MOS)的单个对象的逻辑地址A2.8.1。部分7具有用于均具有MOS=256KB的2个对象的2个逻辑地址A2.7.1和A2.7.2。部分6具有用于均具有MOS=128KB的4个对象的4个逻辑地址A2.6.1至A2.6.4。部分5具有用于MOS=64KB的8个逻辑地址;部分4具有用于MOS 32KB的16个逻辑地址,依此类推,直到具有用于MOS=4KB的128个逻辑地址的部分1。使用2的幂方案是方便的,但是可选的。
变更器的总存储器需求可以可用作成为在执行期间的任何给定时间点的所有大对象的总大小(即,OS>=TS)的最大堆大小(HS),变更器140继续于存取。可以分离地考虑关于小对象的存储器需求(即,OS<TS)。
由于每个部分1至8的大小与最大堆大小对应,因此只要变更器140停留在最大堆大小内(即,确实发放对分配具有超过堆大小的生存对象的加和的大小的对象的请求),地址的分配就不会失败。在极端情况下,变更器140可以发放仅对单个对象(例如512KB)的单个存储器分配请求,或可以发放对具有对象大小4KB的128个对象的请求。通常,变更器140发放对具有不同大小的对象的请求。
对(第二)逻辑地址空间555-2的总需求可以例如计算为部分的数量M乘以部分的大小(例如相等大小),在示例中,计算为8*512KB。与计算机的地址空间(例如上述264)相比,该总需求通常是远更小的。
在实施例中,每个部分可以具有与堆大小(HS,例如512KB)对应的大小。部分的数量M是因子,从而(第二)逻辑地址空间555-2的总大小S2计算为该因子与堆大小的乘积(即,S2=M*HS)。
在示例中,RAM 120可以具有启用页面的寻址方案,其中(例如),页面大小(PS)与部分1的MOS(即4KB)对应。
AMM模块150在启动时分配具有部分1至8的子空间555-2。例如,如果AMM模块150是RTE的部分(例如Java虚拟机),则在启动RTE时分配子空间555-2。也可以对于正发动的每个新的变更器140(参见图1,图2中的140’)分配子空间555-2。在启动时,AMM模块150通常尚未从变更器140接收到存储器分配请求(Req),并且MMU 130尚未将逻辑地址A2.m.y映射到RAM120。
以下描述仅与对第二子空间155-2(例如555-2)中待存储的大对象的存储器分配请求(Req,图1)有关,并且假设AMM模块150使用具有与RAM120的页面大小PS=4KB对应的阈值4KB的对象大小准则。
如以上关于图1详细描述的那样,在接收到对特定对象的存储器分配请求(Req)时,AMM模块150确定是否要使用第一子空间155-1(压缩空间)或第二子空间155-2(非压缩空间)。
AMM模块150根据对象的大小来将子空间555-2的部分1至8内的特定逻辑地址分配给特定大对象。例如,AMM模块150将部分1中的A2.1.y分配给具有大小4KB的对象,将部分2中的A2.1.y分配给具有大小8KB(或更小)的对象,依此类推。
AMM模块150然后指令MMU 130提供所分配的逻辑地址A2.m.y到RAM 120中的物理存储器的映射。
在正执行变更器140的同时,AMM模块150将解除分配一些逻辑地址,并且重新分配一些逻辑地址(参见图2)。因此,子空间555-2中的部分1至8变为碎片化的。图5的示例示出“快照”,其中,通过黑色填充示出的逻辑地址(通过MMU 130)分配给RAM 120中的物理存储器P。例如,(部分5中的)逻辑地址A2.5.2关于具有64KB大小的特定对象映射到RAM 120中的物理存储器的(均具有4KB的)16个页面;(部分4中的)逻辑地址A2.4.8关于具有32KB大小的特定对象映射到RAM;RAM中存在具有对象的部分3、2和1中的逻辑地址。
无需具有逻辑地址对物理存储器的一对一映射。在图5的示例中,逻辑地址的较大部分并未映射到物理存储器。
注意,对于单个对象所使用的物理存储器可以是毗邻的或不毗邻的。例如,具有8KB对象的(部分2中的)逻辑地址A2.2.12将仅需要2个页面(均4KB)物理存储器,并且MMU130可以映射到毗邻地址(参见图1中的关于O[1]的P1和P2的示例)。如果需要,则MMU 130可以例如通过关于较大集合(例如用于A2.4.8处的对象的4个页面)组成单个物理页面来映射到RAM中的不毗邻地址。不毗邻性对于变更器保持隐藏。
仅通过示例示出图5中的最大对象大小(MOS)。可以通过中间MOS(例如(4KB与8KB之间的)6KB、(8KB与16KB之间的)12KB、24KB,依此类推,直到128GB)来补充2的幂方案。
使用其它页面大小(PS)是可能的(例如,高达1GB的页面大小)。
也可能的是,开始于修改的大小S2'<S2。换言之,因子将是更小的。该方法将是理论大小S2=M*HS与更实际大小之间的折中,其中,假设并非将使用所有理论可能对象大小。
图6示出可以用于在此所描述的技术的普通计算机设备900和普通移动计算机设备950的示例。计算设备900意图表示各种形式的数字计算机(例如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机以及其它适当的计算机)。普通计算机设备900可以与图1的计算机系统100对应。计算设备950旨在表示各种形式的移动设备(例如个人数字助理、蜂窝电话、智能电话以及其它相似的计算设备)。在此所示的组件、它们的连接和关系以及它们的功能仅表示为示例性的,而非表示为限制该文献中所描述和/或要求的本发明的实现方式。
计算设备900包括处理器902、存储器904、存储设备906、连接到存储器904和高速扩展端口910的高速接口908以及连接到低速总线914和存储设备906的低速接口912。组件902、904、906、908、910和912中的每一个是使用各种总线互连的,并且可以安装在公共主板上或以适当的其它方式得以安装。处理器902可以处理用于计算设备900内执行的指令,包括存储器904中或存储设备906上可以存储的用于在外部输入/输出设备(例如耦合到高速接口908的显示器916)上显示关于GUI的图形信息的指令。在其它实现方式中,可以连同多个存储器和/或多种类型的存储器一起适当地使用多个处理器和/或多种总线。此外,可以连接多个计算设备900,其中,每个设备提供必要操作的部分(例如作为服务器组、刀片服务器组或多处理器系统)。
存储器904将信息存储在计算设备900内。在一种实现方式中,存储器904是一个或多个易失性存储器单元。在另一种实现方式中,存储器904是一个或多个非易失性存储器单元。存储器904也可以是另一形式的计算机可读介质(例如磁盘或光盘)。
存储设备906能够提供用于计算设备900的海量存储。在一种实现方式中,存储设备906可以是或可以包含计算机可读介质(例如软盘设备、硬盘设备、光盘设备、或带式设备、闪存或另外相似的固态存储器设备或设备阵列),包括存储域网或其它配置中的设备。计算机程序产品可以有形地实施在信息载体上。计算机程序产品可以还包含当执行时执行一种或多种方法(例如上述方法)的指令。信息载体是计算机或机器可读介质(例如存储器904、存储设备906或处理器902上的存储器)。
高速控制器908管理用于计算设备900的带宽密集操作,而低速控制器912管理较低带宽密集操作。这些功能的分配仅是示例性的。在一种实现方式中,高速控制器908耦合到存储器904、(例如通过图形处理器或加速器耦合到)显示器916、以及高速扩展端口910,其可以接受各种扩展卡(未示出)。在实现方式中,低速控制器912耦合到存储设备906和低速扩展端口914。可以包括各种通信端口(例如USB、蓝牙、无线以太网)的低速扩展端口可以耦合到一个或多个输入/输出设备(例如键盘、指点设备、扫描器或(例如通过网络适配器耦合到)连网设备(例如交换机或路由器))。
可以通过多种不同形式来实现计算设备900,如图所示。例如,其可以实现为标准服务器920或多次实现在这些服务器的群组中。其也可以实现为机架服务器系统924的部分。此外,其可以实现于个人计算机(例如膝上型计算机922)中。替代地,来自计算设备900的组件可以与移动设备(未示出)(例如设备950)中的其它组件组合。这些设备中的每一个可以包含计算设备900、950中的一个或多个,并且彼此进行通信的多个计算设备900、950可以构成整个系统。
在其它组件当中,计算设备950包括处理器952、存储器964、输入/输出设备(例如显示器954、通信接口966以及收发机968)。设备950可以还具备存储设备(例如微驱动器或另外设备),以提供附加存储。组件950、952、964、954、966和968中的每一个是使用各种总线互连的,并且若干组件可以安装在公共主板上或以适当的其它方式得以安装。
处理器952可以执行计算设备950内的指令,包括存储器964中所存储的指令。处理器可以实现为包括分离的多个模拟处理器和数字处理器的芯片的芯片集。处理器可以提供例如设备950的其它组件的协调(例如用户接口的控制、设备950所运行的应用以及设备950进行的无线通信)。
处理器952可以通过耦合到显示器954的控制接口958以及显示接口956与用户进行通信。显示器954可以是例如TFT LCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其它适当的显示技术。显示接口956可以包括用于驱动显示器954以将图形或其它信息呈现给用户的适当电路。控制接口958可以从用户接收命令,并且转换它们,以用于提交给处理器952。此外,可以提供与处理器952进行通信的外部接口962,从而使得能够进行设备950与其它设备的近区域通信。外部接口962可以提供例如在一些实现方式中的有线通信或在其它实现方式中的无线通信,并且多个接口也可以得以使用。
存储器964将信息存储在计算设备950内。存储器964可以实现为一个或多个计算机可读介质、一个或多个易失性存储器单元或一个或多个非易失性存储器单元中的一个或多个。扩展存储器984也可以得以提供并且通过可以包括例如SIMM(单列直插存储器模块)卡接口的扩展接口982连接到设备950。该扩展存储器984可以对设备950提供额外存储空间,并且也可以存储关于设备950的应用或其它信息。具体地说,扩展存储器984可以包括用于执行或补充上述处理的指令,并且可以还包括安全信息。因此,例如,扩展存储器984可以充当用于设备950的安全性模块,并且可以编程有允许安全使用设备950的指令。此外,可以连同附加信息一起经由SIMM卡(例如,以不可破解的方式将标识信息放置在SIMM卡上)提供安全应用。
存储器可以包括例如闪存和/或NVRAM存储器,如下所述。在一种实现方式中,计算机程序产品有形地实施在信息载体中。计算机程序产品包含当执行时执行一种或多种方法(例如上述方法)的指令。信息载体是可以例如通过收发机968或外部接口962接收的计算机或机器可读介质(例如存储器964、扩展存储器984或处理器952上的存储器)。
设备950可以通过可以在必要的情况下包括数字信号处理电路的通信接口966以无线方式进行通信。其中,通信接口966可以在各种模式或协议(例如GSM语音呼叫、SMS、EMS或MMS消息传送、CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS)下提供通信。这些通信可以例如通过射频收发机968而产生。此外,短距离通信可以例如使用蓝牙、WiFi或另外这样的收发机(未示出)而产生。此外,GPS(全球定位系统)接收模块980可以将附加的与导航和位置有关的无线数据提供给设备950,其可以由设备950上运行的应用适当地使用。
设备950也可以使用可以从用户接收所说出的信息并且将其转换为可用的数字信息的音频编解码器960以听觉方式进行通信。音频编解码器960可以类似地例如通过例如在设备950的手机中的扬声器生成用于用户的听觉声音。这些声音可以包括来自语音电话呼叫的声音,可以包括所记录的声音(例如语音消息、音乐文件等),并且可以还包括设备950上操作的应用所生成的声音。
可以通过多种不同形式来实现计算设备950,如图所示。例如,其可以实现为蜂窝电话980。其也可以实现为智能电话982、个人数字助理或另外相似的移动设备的部分。
可以在数字电子电路、集成电路、专用ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现在此所描述的和技术系统的各种实现方式。这些各种实现方式可以包括可在包括耦合为将数据和指令接收自并且发送到存储系统、至少一个输入设备以及至少一个输出设备的可以是专用或通用的至少一个可编程处理器的可编程系统上执行和/或解释的一个或多个计算机程序中的实现方式。
这些计算机程序(又称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以通过高级过程和/或面向对象的编程语言和/或通过汇编/机器语言得以实现。如在此所使用的那样,术语“机器可读介质”、“计算机可读介质”指代用于将机器指令和/或数据提供给包括接收机器指令作为机器可读信号的机器可读介质的可编程处理器的任何计算机程序产品、装置和/或设备(例如磁盘、光盘、存储器、可编程逻辑器件(PLD))。术语“机器可读信号”指代用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,在此所描述的系统和技术可以实现在具有用于将信息显示给用户的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以将输入提供给计算机的键盘和点击设备(例如鼠标或轨迹球)的计算机上。其它种类的设备同样可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如视觉反馈、听觉反馈、或触觉反馈);并且可以通过任何形式(包括声学输入、话音输入或触觉输入)来接收来自用户的输入。
可以在包括后端组件(例如数据服务器)或包括中间件组件(例如应用服务器)或包括前端组件(例如具有用户可以与在此所描述的系统和技术的实现方式进行交互的图形用户接口或Web浏览器的客户机计算机)或这些后端组件、中间件组件、或前端组件的任何组合的计算设备中实现在此所描述的系统和技术。系统的组件可以通过任何形式的数字数据通信的介质(例如通信网络)而互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)以及互联网。
计算设备可以包括客户机和服务器。客户机和服务器通常距彼此远程,并且典型地通过通信网络而交互。客户机和服务器的关系通过在各个计算机上运行并且具有对彼此的客户机-服务器关系的计算程序而产生。
已经描述了多个实施例。然而,应理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。
此外,附图中描述的逻辑流程不要求所示的特定顺序或依次顺序,以实现期望的结果。此外,可以从所描述的流程提供其它步骤,或可以消除步骤,并且其它组件可以添加到或移除自所描述的系统。相应地,其它实施例处于所附权利要求的范围内。
Claims (15)
1.一种用于在具有随机存取存储器(120)的计算机系统(100)中操作自动化存储器管理模块(150)的计算机实现的方法(400),所述方法(400)包括:
对于具有第一子空间(155-1)和第二子空间(155-2、555-2)的逻辑地址空间(155),在所述逻辑地址空间(155)中,预留(410)具有带有用于不同大小类的对象的槽的部分(1、2……8)的所述第二子空间(155-2、555-2),其中,预留(410)包括:将所述第二子空间(155-2、555-2)的大小计算为某因子和变更器(140)的最大堆大小(HS)的乘积,其中,所述堆大小(HS)是潜在地待存储在所述第二子空间(155-2、555-2)中的所述对象的累计大小;
从所述变更器(140)接收(420)对待存储在所述计算机系统(100)的所述随机存取存储器(120)中的特定对象(O[1]……O[9])的存储器分配请求(141);
将所述逻辑地址空间(155)内的特定逻辑地址(Axy;A2.1……A1.4)分配(430)给所述特定对象(O[1]……O[9]),其中,所述自动化存储器管理模块(150)根据至少一个准则(TS、OA)来区分(435)所述特定对象(O[1]……O[9]),并且分配(431、432)来自所述第一子空间(155-1)的逻辑地址(A1.y)和来自第二子空间(155-2)的逻辑地址(A2.y);
通过存储器管理单元(130)将来自所述第二子空间(155-2)的所分配的逻辑地址(A2.y)映射(442)到所述随机存取存储器(120)中的物理存储器(P1……P104);以及
与在所述随机存取存储器中移动对应对象组合而在所述第一子空间(155-1)内压缩(451)逻辑地址。
2.如权利要求1所述的方法(400),其中,在预留(410)中,所述因子与所述逻辑地址空间(155)的所述第二子空间(155-2)中的部分的数量(M)对应,其中,每个部分具有用于特定大小的对象的槽。
3.如权利要求1或2所述的方法(400),其中,对于相等大小的部分执行预留(410)。
4.如权利要求1或2所述的方法(400),其中,预留(410)包括:计算与所述最大堆大小(HS)对应的部分的大小。
5.如权利要求1或2所述的方法(400),其中,预留(410)包括:预留具有带有作为2的幂数量的第一数量的槽的开始部分并且具有带有从所述第一数量的槽在几何级数中计算的数量的槽的相邻槽的部分。
6.如权利要求1或2所述的方法(400),其中,在分配(430)中,所述自动化存储器管理模块(150)根据作为对象大小准则的所述至少一个准则(TS、OA)来区分(425)所述特定对象(O[1]……O[9])。
7.如权利要求6所述的方法(400),其中,在分配(430)中,所述自动化存储器管理模块(150)使用预定义阈值大小(TS)作为所述对象大小准则,并且对于具有小于所述预定义阈值大小(TS)的对象大小的对象分配(431)所述第一子空间(155-1)中的逻辑地址,而且对于具有大于所述预定义阈值大小(TS)或等于所述预定义阈值大小(TS)的对象大小的对象分配(432)所述第二子空间(155-2)中的逻辑地址。
8.如权利要求7所述的方法(400),其中,所述预定义阈值大小(TS)与所述随机存取存储器(120)的页面大小(PS)有关。
9.如权利要求8所述的方法(400),其中,所述预定义阈值大小(TS)等于所述页面大小(PS)或所述页面大小的倍数。
10.如权利要求1或2所述的方法(400),具有另一步骤:解除分配来自子空间(155-1、155-2)之一的所述特定逻辑地址中的一些,由此指令所述存储器管理模块(130)从所述第二子空间(155-2)中的先前所分配的逻辑地址解除映射所述物理存储器,而不在所述随机存取存储器(120)中压缩所述对象。
11.如权利要求1所述的方法(400),其中,所述自动化存储器管理模块(150)根据作为对象属性(OA)的所述至少一个准则来区分(425)所述特定对象(O[1]……O[9])。
12.如权利要求10所述的方法(400),其中,对象属性(OA)包括从以下选择的属性:对象类型、对象存取的频率、所述对象传递到外部代码以及所述对象由硬件直接存取。
13.一种计算机系统(100),用于执行如权利要求1-12中的任一项所述的计算机实现的方法的步骤。
14.一种在其中有形地包含计算机程序产品的计算机可读介质,所述计算机程序产品包含指令,当所述指令由计算机的至少一个处理器执行时,导致执行如权利要求1-12中的任一项所述的计算机实现的方法的步骤。
15.如权利要求14所述的计算机可读介质,其中,所述自动化存储器管理模块(150)是用于通过从以下群组选择的编程语言写成的变更器(140、140')的运行时环境(RTE)的部分:JAVA、C#、PYTHON、JAVASCRIPT、SCALA、和GO。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15174377.0A EP3113026B1 (en) | 2015-06-29 | 2015-06-29 | Automatic memory management using a memory management unit |
EP15174377.0 | 2015-06-29 | ||
PCT/EP2016/064761 WO2017001305A1 (en) | 2015-06-29 | 2016-06-24 | Automatic memory management using a memory management unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924363A CN107924363A (zh) | 2018-04-17 |
CN107924363B true CN107924363B (zh) | 2021-12-21 |
Family
ID=53761932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680044291.1A Active CN107924363B (zh) | 2015-06-29 | 2016-06-24 | 使用存储器管理单元的自动化存储器管理 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11176031B2 (zh) |
EP (1) | EP3113026B1 (zh) |
JP (1) | JP6505266B2 (zh) |
CN (1) | CN107924363B (zh) |
ES (1) | ES2747962T3 (zh) |
PL (1) | PL3113026T3 (zh) |
WO (1) | WO2017001305A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3113026B1 (en) | 2015-06-29 | 2019-07-24 | aicas GmbH | Automatic memory management using a memory management unit |
CN106445589A (zh) * | 2016-09-08 | 2017-02-22 | 百富计算机技术(深圳)有限公司 | 嵌入式小系统的应用程序加载方法和装置 |
CN110618840B (zh) * | 2019-08-23 | 2021-12-17 | 宁波方太厨具有限公司 | 一种中央烟道系统的吸油烟机地址码自动匹配方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
US6950837B2 (en) * | 2001-06-19 | 2005-09-27 | Intel Corporation | Method for using non-temporal streaming to improve garbage collection algorithm |
US7325118B2 (en) | 2003-09-30 | 2008-01-29 | Samsung Electronics, Co., Ltd. | Method and apparatus for executing dynamic memory management with object-oriented program |
GB2406668B (en) * | 2003-10-04 | 2006-08-30 | Symbian Ltd | Memory management in a computing device |
US7490117B2 (en) * | 2003-12-31 | 2009-02-10 | Intel Corporation | Dynamic performance monitoring-based approach to memory management |
US7363456B2 (en) * | 2005-04-15 | 2008-04-22 | International Business Machines Corporation | System and method of allocating contiguous memory in a data processing system |
US7953773B2 (en) * | 2005-07-15 | 2011-05-31 | Oracle International Corporation | System and method for deterministic garbage collection in a virtual machine environment |
JP5224498B2 (ja) | 2007-02-28 | 2013-07-03 | 学校法人早稲田大学 | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム |
US8327111B2 (en) * | 2009-03-30 | 2012-12-04 | International Business Machines Corporation | Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas |
US8200718B2 (en) * | 2009-07-02 | 2012-06-12 | Roberts Michael L | Parallelized, incremental garbage collector |
US8799615B2 (en) * | 2010-10-21 | 2014-08-05 | International Business Machines Corporation | Organization of a small object area and a large object area in a java heap |
US8904008B2 (en) * | 2012-01-09 | 2014-12-02 | Microsoft Corporation | Assignment of resources in virtual machine pools |
JP5586718B2 (ja) * | 2012-06-19 | 2014-09-10 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
WO2014155666A1 (ja) * | 2013-03-29 | 2014-10-02 | 株式会社 東芝 | 論理アドレスと物理アドレスとの間のマッピングを管理するストレージシステム、ストレージコントローラ及び方法 |
CN104732153B (zh) * | 2013-12-18 | 2018-01-12 | 群联电子股份有限公司 | 数据抹除方法、存储器控制电路单元及存储器存储装置 |
CN203882329U (zh) * | 2014-05-30 | 2014-10-15 | 南京莘纳吉物流有限公司 | 一种适用于不同环境、不同对象的电子标签 |
EP3113026B1 (en) | 2015-06-29 | 2019-07-24 | aicas GmbH | Automatic memory management using a memory management unit |
-
2015
- 2015-06-29 EP EP15174377.0A patent/EP3113026B1/en active Active
- 2015-06-29 ES ES15174377T patent/ES2747962T3/es active Active
- 2015-06-29 PL PL15174377T patent/PL3113026T3/pl unknown
-
2016
- 2016-06-24 CN CN201680044291.1A patent/CN107924363B/zh active Active
- 2016-06-24 WO PCT/EP2016/064761 patent/WO2017001305A1/en active Application Filing
- 2016-06-24 JP JP2017568415A patent/JP6505266B2/ja active Active
-
2017
- 2017-12-27 US US15/855,146 patent/US11176031B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3113026A1 (en) | 2017-01-04 |
ES2747962T3 (es) | 2020-03-12 |
JP6505266B2 (ja) | 2019-04-24 |
US20180137045A1 (en) | 2018-05-17 |
CN107924363A (zh) | 2018-04-17 |
EP3113026B1 (en) | 2019-07-24 |
PL3113026T3 (pl) | 2020-03-31 |
WO2017001305A1 (en) | 2017-01-05 |
JP2018525724A (ja) | 2018-09-06 |
US11176031B2 (en) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542333B (zh) | 存储器系统及控制非易失性存储器的控制方法 | |
CN109725846B (zh) | 存储器系统及控制方法 | |
US10452562B2 (en) | File access method and related device | |
EP3220275B1 (en) | Array controller, solid state disk and data writing control method for solid state disk | |
KR102077149B1 (ko) | 메모리 관리 방법 및 장치 | |
US8225065B2 (en) | Hierarchical scalable memory allocator | |
CN107924363B (zh) | 使用存储器管理单元的自动化存储器管理 | |
WO2017107015A1 (zh) | 存储空间的分配方法及存储设备 | |
US8499138B2 (en) | Demand-based memory management of non-pagable data storage | |
US10237233B2 (en) | Allocating identifiers with minimal fragmentation | |
CN113805792A (zh) | 存储器系统及其操作方法 | |
KR101549569B1 (ko) | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 | |
US11467766B2 (en) | Information processing method, apparatus, device, and system | |
US20160335198A1 (en) | Methods and system for maintaining an indirection system for a mass storage device | |
KR20220049842A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US9442835B1 (en) | Dynamic memory allocation using suballocation of cell blocks | |
JP2014048895A (ja) | 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム | |
EP4318247A1 (en) | Storage control method and apparatus, storage method and apparatus, electronic device, and medium | |
CN114296639A (zh) | 命令处理方法及闪存设备 | |
KR20220067872A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
CN117667376A (zh) | 内存管理方法、装置、系统及计算机可读存储介质 | |
JP2012043089A (ja) | 情報処理装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |