CN106598724A - 用于在计算***中管理内存的方法 - Google Patents
用于在计算***中管理内存的方法 Download PDFInfo
- Publication number
- CN106598724A CN106598724A CN201610811271.4A CN201610811271A CN106598724A CN 106598724 A CN106598724 A CN 106598724A CN 201610811271 A CN201610811271 A CN 201610811271A CN 106598724 A CN106598724 A CN 106598724A
- Authority
- CN
- China
- Prior art keywords
- memory
- core
- internal memory
- polymerization
- plate
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
公开一种用于在计算***中管理内存的方法。一种计算***包括:内存模块,包括内存库和内存区块;控制单元,结合到内存模块,被配置为:确定聚合内存与CPU核之间的核内存关联;基于所述核内存关联将来自聚合内存的内存库和内存区块指定为CPU核的核关联内存;基于与CPU核的核应用关联将来自核关联内存的板类分配到应用程序。
Description
技术领域
本发明的实施例总体涉及计算***,更具体地,涉及一种用于内存管理的***。
背景技术
现代消费者和工业电子产品,特别是诸如键值装置的装置,正提供增长的功能水平以支持包括大数据的分析和实时网络应用的现代生活。现有技术的研究和开发可采取大量不同的方向。
由于随着信息处理技术的发展用户变得更有自主权,因此新范例和旧范例开始利用这个新空间。基于电子产品的增长的一个领域(其中,处理高容量的信息是精髓)是在大数据分析(诸如,基于非结构化查询语言(“NoSQL”或“NonSQL”)的***)。然而,具有有效的内存管理的每秒高输入/输出(IOPS)吞吐量已经困扰本领域技术人员。
因此,仍然需要具有用于内存分配的内存管理机制的计算***。考虑到不断增加的商业竞争压力,以及针对市场中有意义的产品差异化的增长的消费者预期和减少的机会,找到这些问题的答案越来越关键。此外,降低成本、提高效率和性能以及满足竞争压力的需求增加了找到这些问题的答案的迫切必要的更大的紧迫性。
这些问题的解决方案已经被长期寻找,但是先前的开发尚未教导或提出任何解决方案,因此,这些问题的解决方案已经长期困扰本领域技术人员。
发明内容
本发明的实施例提供一种***,包括:内存模块,包括内存库和内存区块(rank);控制单元,结合到内存模块,被配置为:确定聚合的内存与CPU核之间的核内存关联;基于核内存关联将来自聚合的内存的内存库和内存区块指定为CPU核的核关联内存;基于与CPU核的核应用关联将来自核关联内存的板类(slab class)分配到应用程序。
本发明的实施例提供一种方法,包括:确定聚合的内存与CPU核之间的核内存关联;基于核内存关联将来自聚合的内存的内存模块的内存库和内存区块指定为CPU核的核关联内存;基于与CPU核的核应用关联将来自核关联内存的板类分配到应用程序。
附图说明
图1是本发明的实施例中的具有内存管理机制的计算***。
图2是计算***的全局缓存映射的示例。
图3是计算***的全局缓存映射的另一示例。
图4是计算***的内存分配的示例。
图5是用于计算***的流程图。
图6是计算***的内存分配的示例流程图。
图7是本发明的实施例中的计算***的操作的方法的流程图。
具体实施方式
对以下的实施例进行充分详细地描述,以使本领域技术人员能实施和使用本发明。要理解,其他实施例基于本公开将是明显的,并且在不脱离本发明的实施例的范围的情况下,可对***、处理或机制做出改变。
在以下的描述中,给出大量的具体细节以提供对本发明的彻底理解。然而,将清楚,可在没有这些具体细节的情况下实施本发明。为了避免模糊本发明的实施例,不会详细地公开一些公知的电路、***配置和处理步骤。
示出***的实施例的附图是半图示的,而不是按比例的,具体地,一些尺寸是为了表示的清楚,并在附图中被夸大地示出。类似地,虽然为了描述的方便,附图中的视图一般示出相似的方向,但是附图中的这种描述大多情况下是任意的。一般来讲,可按照任意方向来操作本发明。为描述方便已经将实施例编号为第一实施例、第二实施例等,而实施例不意在具有任何其他的意义或向本发明的实施例提供限制。
图1是本发明的实施例中的具有内存管理机制的计算***。现参照图1。
计算***100可包括装置102。例如,装置102可以是诸如服务器、智能电话、膝上型计算机或台式计算机的计算装置。在另一示例中,装置102可包括各种各样的集中式计算装置或分散式计算装置。作为一个具体的示例,装置102可以是网格计算资源、虚拟化计算机资源、云计算资源、对等分布式计算装置或其组合。
装置102可以是能在诸如NoSQL数据库中支持或实现键值存储或数据库并执行大数据和实时网络应用或其组合的装置。例如,装置102可包括使用非易失性数据存储(诸如,闪速存储器)的键值存储的实施方式。
装置102可包括诸如硬件组件的多个单元,所述多个单元包括控制单元112、存储单元114、通信单元116和用户接口118。装置102中的单元可相对于其他的单元单独或独立地工作,或与其他的单元中的一个或多个单元协作工作。
控制单元112可包括控制接口122。控制单元112可运行软件126来提供计算***100的智能。
可以以很多不同方式的硬件电路来实施控制单元112。例如,控制单元112可以是处理器、专用集成电路(ASIC)、嵌入式处理器、微处理器、硬件控制逻辑、硬件有限状态机(FSM)、数字信号处理器(DSP)、可编程逻辑器件(PLD)或其组合。还可将控制单元112实施为具有一个或多个中央处理器(CPU)核142的CPU,CPU核142可以是CPU的基础或基本的计算单元。控制单元112可包括用于内存分配操作和信息流的专用电路(诸如,内存控制器、内存芯片控制器或内存控制器单元)。
控制接口122可被用于控制单元112与装置102中的其他单元之间的通信。控制接口122还可被用于装置102的外部的通信。
控制接口122可从其他单元或从外部源接收信息,或可将信息发送到其他单元或外部目的地。外部源和外部目的地表示装置102外部的源和目的地。
控制接口122可使用硬件电路以不同的方式被实施,并可包括基于其内部单元或外部单元与控制接口122进行接口连接的不同实施方式。例如,控制接口122可使用压力传感器、惯性传感器、微机电***(MEMS)、光电路、波导、无线电路、有线电路或其组合来实施。
存储单元114可存储软件126。存储单元114还可存储诸如表示传入的图像的数据、表示先前呈现的图像的数据、声音文件或其组合的相关信息。
存储单元114可使用硬件电路来实施,所述硬件电路包括易失性存储器、非易失性存储器、内部存储器、外部存储器或其组合。例如,存储单元114可以是诸如非易失性随机存取存储器(NVRAM)、闪速存储器、磁盘存储器、电阻随机存取存储器(ReRAM)、相变存储器(PRAM)的非易失性存储器或诸如静态随机存取存储器(SRAM)的易失性存储器。作为一个具体的示例,存储单元114可包括以内存模块150的形式的随机存取存储器(RAM)、动态随机存取存储器(DRAM)、同步动态存取存储器(SDRAM)或其组合,内存模块150是诸如双列直插式存储器模块(DIMM)的硬件模块。内存模块150可被划分成内存通道152、内存库(bank)154和内存区块(rank)156。存储单元114的内存模块150可被物理寻址,并具有直接内存存取(DMA)功能。
存储单元114可包括存储接口124。存储接口124可被用于装置102中的其他单元之间的通信。存储接口124还可被用于装置102的外部的通信。
存储接口124可从其他单元或从外部源接收信息,或可将信息发送到其他单元或外部目的地。外部源和外部目的地表示装置102外部的源和目的地。
存储接口124可包括基于其内部单元或外部单元与存储单元114进行接口连接的不同实施方式。存储接口124可使用与控制接口122的实施方式类似的技术和方法来实施。
通信单元116可实现至装置102的外部通信以及从装置102的外部通信。例如,通信单元116可允许装置102与附件(诸如***装置或计算机桌面)进行通信。通信单元116可包括有源组件和无源组件,诸如微电子器件、滤波器、调制器、解调器、检测器、解码器、基带调制解调器或天线。
通信单元116可包括通信接口128。通信接口128可被用于通信单元116与装置102中的其他单元之间的通信。通信接口128可从其他单元接收信息或可将信息发送到其他单元。
通信接口128可包括基于其单元与通信单元116进行接口连接的不同实施方式。通信接口128可使用与控制接口122的实施方式类似的技术和方法来实施。
用户接口118允许用户(未示出)与装置102进行接口连接和交互。用户接口118可包括输入装置和输出装置。用户接口118的输入装置的示例可包括键区、触摸板、软按键、键盘、麦克风、用于接收远程信号的红外传感器或其任意组合,以提供数据和通信输入。
用户接口118可包括显示接口130。显示接口130可包括显示器、投影仪、视频屏幕、扬声器或其任意组合。
控制单元112可对用户接口118进行操作来显示由计算***100生成的信息。控制单元112还可运行用于计算***100的其他功能的软件126。控制单元112还可运行用于经由通信单元116与通信路径104交互的软件126。
图2是计算***(100)的全局缓存映射的示例。现参照图2,全局缓存映射210是用于动态内存分配的内存池。例如,全局缓存映射210可以是聚合内存212的映射,聚合内存212是由计算***100的操作***分配的内存。作为示例,聚合内存212可以是从操作***保留的直接存取内存的总量。聚合内存212可被分成作为内存的最小或基本的量的内存页。
全局缓存映射210可被组织或布置为将聚合内存212映射为一个或多个“大页”214。大页214是从内存页的物理连续的实例生成的物理连续的内存的单个节。将在下面对大页214的生成进行讨论。可基于页内存地址216在全局缓存映射210中对每个大页214进行索引。例如,每个大页214的页内存地址216可被索引为表示物理连续的多个内存地址的范围(诸如,大页214的第一实例的[0,N),依此类推,至大页214的第四实例的[3N,4N))的逻辑地址。
全局缓存映射210还可将大页214组织为聚合页218。聚合页218是物理连续的内存的一个或多个段的群组或聚合。例如,聚合页218可以是大页214的物理邻近的实例的群组。可基于聚合页218中的大页214的单独的实例在全局缓存映射中对聚合页218寻址。例如,当聚合页218包括具有范围为[0,N)、[N,2N)、[2N,3N)和[3N,4N)的页内存地址216的大页214时,聚合页218的页内存地址216可以是[0,4N)。出于说明的目的,聚合页218被示出为包括大页214的四个实例,然而应该理解,聚合页218可包括不同数量的大页214。
全局缓存映射210可包括聚合页218的多个实例。例如,聚合页218的每个实例可表示图1的内存模块150内的大页218的物理连续的实例的最大数量。例如,如图2中所示,当物理连续的大页214的邻近实例的最大数量是连续四个大页214时,针对聚合页218的最大数量可以是大页214的四个实例。
出于说明的目的,全局缓存映射210被示出了聚合页218的被示出为第二聚合页220和第三聚合页222的另外的实例,但是应理解,全局缓存映射210可包括不同数量的聚合页218,。在该示出中,分别具有范围[100N,101N)和[200N,201N)的页内存地址的第二聚合页220和第三聚合页222被示出为没有大页214的相关实例,但应理解,第二聚合页220和第三聚合页222包括一个或多个大页214。
图3是计算***的全局缓存映射的另一示例。现参照图3,可将全局缓存映射210内的图2的聚合内存212组织到多个板类(slab class)330。板类330是内存段的大小的分类。全局缓存映射210可包括板类330的多个实例。
全局缓存映射210可同时地保持包括静态或动态内存分配的板类330的多个实例。例如,可基于先到先服务(first come first serve)将可用内存的最大量(诸如,图1的内存模块150的可供分配的内存的总量)分配给每个板类330。继续该示例,基于可用内存的向板类330的不同实例的分配,板类330的内存分配可彼此类似或不同。作为一个具体的示例,可通过大页214的细分部分或内存页的进一步分配或释放来增加或减少板类330的给定实例的大小。
在另一示例中,板类330的大小在板类330的不同实例中可以是一致的。更加具体地,每个板类330中的内存的量可以是相似或相等的。作为示例,每个板类330均可被配置为2兆字节或16兆字节,但应理解,板类330的大小可以是不同的值。
板类330可包括板块(slab chunk)332,板块332是物理连续的内存的段。通常,任意一个板类330中的板块332的块大小334是固定的大小,而板类330的不同实例中的板块332的块大小334可具有不同的大小。例如,如图3中所示,具有相同或相似的内存的分配的板类330可具有大小不同的板块332。作为一个具体的示例,每个板类330可被分配1020字节的内存。继续该示例,一个板类330可包括均具有96字节的块大小334的板块332的多个实例,而另一个板类330可包括具有1024字节的块大小334的板块332的单个实例。可将板块332的块大小334预定或设置为默认大小。每个板块332内的内存是物理连续的。然而,各个板块332之间的内存可以是非连续的。可从来自大页214的内存分配生成板块332,这一点将会在下面进行讨论。
图4是计算***的内存分配的示例。现参照图4,图4描述多个CPU核142、聚合内存212和应用程序440之间的关系。
应用程序440可以是使用计算***100运行的软件程序。例如,应用程序440可以是用于分析大数据的应用或实时网络应用。应用程序440可具有与所述多个CPU核142中的一个CPU核的核应用关联(core application affinity)442。核应用关联442是与所述多个CPU核142中的一个CPU核的应用(诸如,应用程序440)的绑定。作为示例,应用程序440的绑定可将应用程序440指定给所述多个CPU核142中的一个CPU核,以使得应用程序440将使用所述多个CPU核142的指定实例被专门地运行。
核应用关联442可基于应用线程444。作为示例,应用线程444可以是在所述多个CPU核142之一的缓存中剩余的应用或处理(诸如,应用程序440)的剩余或残余的线程。
每个CPU核142可被分配核关联内存448。核关联内存448是被指定给CPU核142的特定实例的内存。例如,核关联内存448可被绑定到所述多个CPU核142之一,以使得只有CPU核142的指定实例可利用核关联内存448。作为一个具体的示例,核关联内存448可被专门用于通过与核关联内存448具有核内存关联450的CPU核142的实例运行具有核应用关联442的应用程序440。
可基于核内存关联450来指定核关联内存448。核内存关联450可基于内存关联线程452。内存关联线程452可以是使用内存的特定分配之前已经发生的处理的指示。例如,基于核关联内存448的物理地址(诸如,内存通道152、图1的内存库154、内存区块156或其组合),可将具有核内存关联450的核关联内存448绑定到所述多个CPU核142中的一个CPU核。
核关联内存448可使用每核缓存映射(per-core cache map)446来被索引。每核缓存映射446是专门针对所述多个CPU核142中的一个CPU核的内存池。例如,每核缓存映射446包括核关联内存448的内存地址。CPU核142的每个实例可以访问每核缓存映射446的相应实例。
可基于核内存关联450、应用程序440的需要或其组合将板类330分配给来自全局缓存映射210的每核缓存映射446。例如,可基于针对应用程序440最佳用于适应或处理数据对象的块大小334将板类330分配给每核缓存映射446。可从包括内存通道152、图1的内存库154、内存区块156的具有专门针对所述多个CPU核142中的一个CPU核的核内存关联450的内存模块150分配核关联内存448的板类330。将在下面对计算***100的内存分配的功能进行详细讨论。
图5是计算***(100)的流程图。现参照图5,可以以许多不同的方式来实施计算***100的内存管理机制。在下面的流程图中描述实施方式的一个示例。通常,流程图描述物理连续的内存(诸如,来自图2的聚合内存212的图4的核关联内存448)的分配。聚合内存212可以是DMA可寻址的。此外,可将聚合内存212和核关联内存448转换为物理地址,以使得由图4的应用程序440发出的输入和输出(I/O)可使用物理地址来填充多个I/O命令中的每一个I/O命令。已经发现,内存管理机制的核关联内存448可消除从应用程序440到装置102的内存复制操作和数据结构改变的需要,这提高了计算***100的内存效率。
可使用内存收集处理550来启动内存管理机制的流程。内存收集处理550用于从操作***收集可用内存以生成聚合内存212。例如,可通过计算***100的操作***或从计算***100的操作***保留物理连续的内存。可通过控制单元112来实施内存收集处理550以生成聚合内存212。例如,控制单元112可与存储单元114进行接口连接,以保留存储单元114内的物理连续的内存。
流程可继续到页地址处理552。页地址处理552用于生成图2的大页214。每个大页214可从可以是内存模块150内的物理连续的内存的最小段或部分的内存页被组合,并可用于虚拟内存***中的内存管理。更加具体地,可在多个内存库154中的一个内存库154的多个内存区块156中的一个内存区块156内,从来自聚合内存212的内存页的物理连续的实例生成大页214。
可基于诸如与控制单元112、CPU核142或其组合有关的处理器的CPU或RAM结构、类型、操作模式或寻址模式的要素或属性来生成大页214的大小。例如,可通过操作***来实施页地址处理552,以选择被与控制单元112、CPU核142或其组合有关的处理器结构所支持的大页的大小。可在操作***的内核空间中而不是用户空间中生成大页214。可通过控制单元112来实施页地址处理552以生成大页214。
流程可继续到页组合处理554。页组合处理554用于生成图2的聚合页218。作为示例,可通过将属于内存库154的实例的内存区块156的实例中的大页214的两个或更多个物理邻近的实例进行组合来生成聚合页218。在另一示例中,可在图1的内存区块156的级别生成聚合页218,以使得从内存区块156的一个实例内的内存生成聚合页218。在另一示例中,页组合处理554可在用户空间中使用用户空间装置驱动器来执行。可通过控制单元112来实施页组合处理554,以如上所述生成聚合页218。
已经发现,计算***100通过在用户空间中使用用户空间装置驱动器生成聚合页218来提高内存分配的效率。用户空间装置驱动器降低了内核装置驱动器的开销和负载,这提高了内存分配的效率。
流程可继续到全局映射生成处理556。全局映射生成处理556用于生成图2的全局缓存映射210。例如,可将全局缓存映射210生成为包括聚合页218的物理内存地址和大页214的相关实例的映射。可通过控制单元112来实施全局映射生成处理556,以如上所述生成全局缓存映射210。
流程可继续到板生成处理558。板生成处理558用于将来自一个大页214的聚合内存212分配给或分到图3的板类330和板块332中。例如,可将板算法实施为将全局缓存映射210分到或组织到板类330。在板类330的不同实例之间,可将被分配到板类330的内存的量一致地设置。更加具体地,可将相似或相等量的内存分配给每个板类330,这可实现充分或最佳使用内存对齐的益处。例如,板类330可基于内存通道152、内存库154、内存区块156或其组合内的可用内存而具有预定大小。作为一个具体的示例,板类330可被配置为2MB或16MB的大小,但是应理解,板类330的大小可以是不同的值。
每个板类330可被组织到图3的板块332。可从内存的物理连续部分生成板类330的板块332。例如,可从一个大页214的聚合内存212分配板类330的板块332。作为一个具体的示例,可通过控制单元112来实施板生成处理558,以通过从大一个大页214的聚合内存212分配一个或多个内存页来生成板块332。
针对板类330的给定实例的每个板块332的块大小334可以是固定的大小。在板类330的不同的实例之间,可将板块332生成为具有不同值的块大小334。例如,板生成处理558可生成适于适合对象(诸如,内核数据对象或应用程序440的数据对象)的块大小334。作为一个具体的示例,板块332的块大小334可与大页214的大小或大页214的部分(诸如,大页214内的内存页的一个或多个物理连续的实例的组合)的大小成比例。例如,可针对大页214内的等于或大于页或细分部分的1/8大小的对象将板块332划分为“大板”,或针对大页214内的小于页或细分部分的1/8大小的对象将板块332划分为“小板”。可通过控制单元112来实施板生成处理558,以如上所述将聚合内存212分到板类330和板块332中。
流程可继续到关联确定处理560。关联确定处理560用于确定与内存的CPU关联。图4的核内存关联450可被确定为将图1的每个CPU核142与图4的内存关联线程452相关联。例如,当存在运行在聚合内存212的特定集合上的与CPU核142的实例关联的处理或应用时,可确定用于CPU核142的特定实例的内存关联线程452。可通过控制单元112来实施关联确定处理560,以如上所述确定核内存关联450。
流程可继续到内存关联处理562。内存关联处理562用于基于核内存关联450来指定与CPU核142关联的内存。例如,可将已经被确定为与CPU核142的特定实例具有核内存关联450的图1的一个内存模块150的内存通道152、内存库154、内存区块156或其组合指定为图4的核关联内存448。作为一个具体的示例,内存关联处理562可针对内存区块156、内存库154、内存通道152或其组合中的一个(其之前已被CPU核142的实例用于应用程序440的执行)来指定板类330。进一步说明该具体的示例,内存关联处理562可指定具有最适合应用程序440的数据对象的大小的块大小334的板类330。可通过控制单元112来实施内存关联处理562,以如上所述指定与CPU核142关联的内存。
流程可继续到核映射生成处理564。核映射生成处理564用于生成图4的每核缓存映射446。可基于核关联内存448的物理内存地址来生成每核缓存映射446。例如,在核映射生成处理564中,可将每核缓存映射446生成为表示核关联内存448的内存通道152、内存库154、内存区块156或其组合的物理内存地址的映射。作为一个具体的示例,可根据与已被指定到特定的一个CPU核142的内存通道152、内存库154、内存区块156或其组合的特定实例相关联的大页214来生成每核缓存映射446。
内存通道152的不同实例与CPU核142的每核缓存映射446的关联实现通道级并行性。被分配到每核缓存映射446的每个板类330与内存通道152的实例的内存区块156的关联实现区块级并行性。可通过控制单元112来实施核映射生成处理564,以如上所述生成与核关联内存448相关联的每核缓存映射446。
已经发现,针对CPU核142的核关联内存448可充分利用内存通道152和内存区块156的可用并行性,这提高了性能。通道级并行性和区块级并行性实现内存通道152的级别和内存区块156的级别间的相等的负载,这提高了计算***100的性能,特别是多队列应用当在每个队列中执行I/O命令时的性能。
还已经发现,从一个大页214的聚合内存212生成板类330的板块332实现了内存通道152、内存库154、内存区块156或其组合之间的并行性,这提高了计算***100的性能。由于大页214可从一个内存库154的一个内存区块156内的内存页的物理连续的实例进行聚合,所以存每个内存区块154可并行操作,这提高了计算***100的性能。
图6是计算***100的内存分配的示例流程图。现参照图6,当在内存请求670中,图4的应用程序440请求访问图2的聚合内存212时,可启动流程。可基于图4的应用线程444确定与应用程序440具有图4的核应用关联442的图1的CPU核142的实例。一旦已经确定与应用程序440关联的CPU核142的实例,那么在映射检索处理672中,可从全局缓存映射210检索与该CPU核142的实例关联的每核缓存映射446。作为示例,可由图1的控制单元112通过图1的控制接口122来接收内存请求670。
流程可继续到CPU知道(CPU aware)分配处理674。CPU知道分配处理674用于基于与CPU核142的关联将内存分配给应用程序440。由于每核缓存映射446基于核内存关联450而生成,所以核关联内存448的到应用程序440的分配提供核关联内存448、CPU核142和应用程序440之间的绑定。
可基于应用程序440的需要从核关联内存448分配板类330。例如,可选择适合于应用程序440的一个板类330作为具有匹配应用程序440的需要的块大小334的板类330。
作为一个具体的示例,可根据与一个CPU核142相关联的内存库154和内存区块156来分配核关联内存448。例如,针对与CPU核142的特定实例相关联的内存库154和属于内存库154的内存区块156,可将板类330分配为具有适于应用程序440的块大小334。可将板类330的分配记录到每核缓存映射446中。
可使用内存充足处理676根据与CPU核142关联的应用程序440的要求对每核缓存映射446进行扩展。内存充足处理676用于确定核关联内存448的分配对应用程序440是否足够。例如,当当前每核缓存映射446对应用程序440不具有足够的板类330的空闲实例时,可从全局缓存映射210向每核缓存映射446分配板类330的另外的实例。可通过控制单元112来实施CPU知道分配处理674,以如上所述将核关联内存448指定到应用程序440。
流程可继续到内存返回处理678。内存返回处理678用于将核关联内存448返回到全局缓存映射210中。例如,一旦确定应用程序440不再需要核关联内存448,则可将板类330返回到聚合内存212。在另一示例中,当确定CPU核142不再需要每核缓存映射446时,可将每核缓存映射446返回到全局缓存映射210。内存返回处理678可通过控制单元112来实施,并可与存储单元114进行接口连接以如上所述返回或释放核关联内存448。
已经发现,根据CPU使用,由于每次访问板类330需要对板类330的整体的全局锁定,所以访问来自全局缓存映射210的板类330的CPU核142的多个实例的开销可降低速度和性能。然而,已经发现,来自每核缓存映射446的针对应用程序440的内存分配防止对板类330的整个实例的全局锁定。针对每个CPU核142的每核缓存映射446包括不影响从全局缓存映射210到CPU核142的其他实例的内存分配的局部锁定,这防止了对板类330的全局锁定。
可将本申请中描述的处理实施为存储在非暂时性计算机可读介质上的将由图1的控制单元112执行的指令。非暂时性计算机介质可被实现为图1的存储单元114。非暂时性计算机可读介质可包括非易失性存储器(诸如,硬盘驱动器)、非易失性随机存取存储器(NVRAM)、固态存储装置(SSD)、致密盘(CD)、数字视频盘(DVD)或通用串行总线(USB)闪存装置。可将非暂时性计算机可读介质集成为计算***100的部分或安装为计算***100的可移动部分。
图7是本发明的实施例中的计算***的操作的方法的流程图。现参照图7,方法700包括:在方框702中,确定聚合内存与CPU核之间的核内存关联;在方框704中,基于核内存关联从聚合内存将内存模块的内存库和内存区块指定为用于CPU核的核关联内存;在方框706中,基于与CPU核的核应用关联将板类从核关联内存分配到应用程序。作为示例,如上面在图5和图6中描述的流程中所述,可通过图1的装置102的单元(诸如,图1的控制单元112和存储单元114)来实施方法700的方框。
所得到的方法、处理、设备、装置、产品和/或***是直观的、有成本效益的、不复杂的、高度灵活的、准确的、灵敏的和有效的,并可针对准备好的、高效和经济的制造、应用和利用通过采用公知组件来实施。本发明的实施例的另一重要方面在于它有益地支持和服务降低成本、简化***和提高性能的历史趋势。
本发明的实施例的这些和其他有益的方面因此将该技术的状态促进到至少下一水平。
虽然已经结合具体的最佳实施方式对本发明进行了描述,但是将理解,对本领域技术人员来说,根据前述的描述,很多替代方案、修改和变形将是清楚的。因此,本发明意图在于包含落入所包括的权利要求的范围内的所有这样的替代方案、修改和变形。这里所阐述或示出在附图中的所有事项将以说明性和非限制性的意义来解释。
Claims (20)
1.一种计算***,包括:
内存模块,包括内存库和内存区块;
控制单元,结合到内存模块,被配置为:
确定聚合内存与CPU(中央处理器)核之间的核内存关联;
基于所述核内存关联将来自聚合内存的内存库和内存区块指定为CPU核的核关联内存;
基于与CPU核的核应用关联将来自所述核关联内存的板类分配到应用程序。
2.如权利要求1所要求的计算***,其中,控制单元被配置为对板类的板块进行分配,其中,板块包括物理连续的内存。
3.如权利要求1所要求的计算***,其中,控制单元被配置为生成聚合内存的全局缓存映射。
4.如权利要求1所要求的计算***,其中,控制单元被配置为生成核关联内存的每核缓存映射。
5.如权利要求1所要求的计算***,其中,控制单元被配置为:
将内存库的内存区块内的聚合内存的物理连续部分的页进行聚合;
从所述页对聚合内存进行分配,以生成板类的板块。
6.如权利要求1所要求的计算***,其中,控制单元被配置为基于内存关联线程来确定核内存关联。
7.如权利要求1所要求的计算***,其中,控制单元被配置为将板类的多个实例组织为聚合内存,其中,板类的大小是相等的。
8.如权利要求1所要求的计算***,其中,控制单元被配置为基于应用程序的需要,使用板类的另外的实例对每核缓存映射进行扩展。
9.如权利要求1所要求的计算***,其中,控制单元被配置为基于页的物理邻近的实例来生成聚合内存。
10.如权利要求1所要求的计算***,其中,控制单元被配置为生成包括直接内存存取功能的聚合内存。
11.一种计算***的操作的方法,包括:
确定聚合内存与CPU(中央处理器)核之间的核内存关联;
基于所述核内存关联将来自聚合内存的内存模块的内存库和内存区块指定为CPU核的核关联内存;
基于与CPU核的核应用关联将来自所述核关联内存的板类分配到应用程序。
12.如权利要求11所要求的方法,其中,分配板类的步骤包括:对板类的板块进行分配,其中,板块是物理连续的内存。
13.如权利要求11所要求的方法,还包括:生成聚合内存的全局缓存映射。
14.如权利要求11所要求的方法,还包括:生成核关联内存的每核缓存映射。
15.如权利要求11所要求的方法,还包括:
从内存库的内存区块内的聚合内存的物理连续部分生成页;
从所述页对聚合内存进行分配,以生成板类的板块。
16.如权利要求11所要求的方法,其中,确定核内存关联的步骤包括:基于内存关联线程来确定核内存关联。
17.如权利要求11所要求的方法,还包括:将板类的多个实例组织为聚合内存,其中,板类的大小是相等的。
18.如权利要求11所要求的方法,还包括:基于应用程序的需要,使用板类的另外的实例对每核缓存映射进行扩展。
19.如权利要求11所要求的方法,还包括:基于页的物理邻近的实例来生成聚合内存。
20.如权利要求11所要求的方法,还包括:生成具有直接内存存取功能的聚合内存。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562241544P | 2015-10-14 | 2015-10-14 | |
US62/241,544 | 2015-10-14 | ||
US15/062,855 | 2016-03-07 | ||
US15/062,855 US20170109080A1 (en) | 2015-10-14 | 2016-03-07 | Computing system with memory management mechanism and method of operation thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598724A true CN106598724A (zh) | 2017-04-26 |
CN106598724B CN106598724B (zh) | 2022-01-14 |
Family
ID=58550294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610811271.4A Active CN106598724B (zh) | 2015-10-14 | 2016-09-08 | 用于在计算***中管理内存的方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP2017076396A (zh) |
KR (1) | KR20170043996A (zh) |
CN (1) | CN106598724B (zh) |
TW (1) | TWI710899B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729151A (zh) * | 2017-10-19 | 2018-02-23 | 济南浪潮高新科技投资发展有限公司 | 一种集群管理fpga资源的方法 |
CN108664325A (zh) * | 2017-03-30 | 2018-10-16 | 北京视联动力国际信息技术有限公司 | 处理数据的方法和电子设备 |
CN110134514A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 基于异构内存的可扩展内存对象存储*** |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6423809B2 (ja) * | 2016-02-19 | 2018-11-14 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
KR102547825B1 (ko) * | 2021-11-10 | 2023-06-27 | 삼성전자주식회사 | 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 |
US12014080B2 (en) | 2021-11-10 | 2024-06-18 | Samsung Electronics Co., Ltd. | Memory system using host memory buffer and operation method thereof |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009478A (en) * | 1997-11-04 | 1999-12-28 | Adaptec, Inc. | File array communications interface for communicating between a host computer and an adapter |
US6085296A (en) * | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
US20020174292A1 (en) * | 2001-05-21 | 2002-11-21 | Yuichiro Morita | Memory controller |
US20060004942A1 (en) * | 2004-06-30 | 2006-01-05 | Sun Microsystems, Inc. | Multiple-core processor with support for multiple virtual processors |
US20070083728A1 (en) * | 2005-10-11 | 2007-04-12 | Dell Products L.P. | System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems |
CN101196816A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种操作***及操作***管理方法 |
KR101267347B1 (ko) * | 2011-07-29 | 2013-05-27 | 현대제철 주식회사 | 몰드 내 마찰력을 이용한 크랙 감시장치 및 그 방법 |
JP2013127703A (ja) * | 2011-12-19 | 2013-06-27 | Renesas Electronics Corp | ロードモジュール生成方法及びロードモジュール生成プログラム |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
US20140089725A1 (en) * | 2012-09-27 | 2014-03-27 | International Business Machines Corporation | Physical memory fault mitigation in a computing environment |
CN104199699A (zh) * | 2014-08-29 | 2014-12-10 | 北京经纬恒润科技有限公司 | 程序加载方法、芯片启动方法、装置及主控设备 |
CN104317734A (zh) * | 2014-11-28 | 2015-01-28 | 迈普通信技术股份有限公司 | 一种适用于slab的内存分配方法及装置 |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235531B2 (en) * | 2010-03-04 | 2016-01-12 | Microsoft Technology Licensing, Llc | Multi-level buffer pool extensions |
US8510749B2 (en) * | 2010-05-27 | 2013-08-13 | International Business Machines Corporation | Framework for scheduling multicore processors |
US9619251B2 (en) * | 2013-05-30 | 2017-04-11 | Intel Corporation | Techniques for dynamic system performance tuning |
US9070423B2 (en) * | 2013-06-11 | 2015-06-30 | Invensas Corporation | Single package dual channel memory with co-support |
US20150046259A1 (en) * | 2013-08-09 | 2015-02-12 | Yp Intellectual Property Llc | Systems and methods for personalized orchestration of business information |
-
2016
- 2016-06-27 TW TW105120096A patent/TWI710899B/zh active
- 2016-07-20 KR KR1020160092125A patent/KR20170043996A/ko unknown
- 2016-09-08 CN CN201610811271.4A patent/CN106598724B/zh active Active
- 2016-10-12 JP JP2016200590A patent/JP2017076396A/ja active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009478A (en) * | 1997-11-04 | 1999-12-28 | Adaptec, Inc. | File array communications interface for communicating between a host computer and an adapter |
US6085296A (en) * | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
US20020174292A1 (en) * | 2001-05-21 | 2002-11-21 | Yuichiro Morita | Memory controller |
US20060004942A1 (en) * | 2004-06-30 | 2006-01-05 | Sun Microsystems, Inc. | Multiple-core processor with support for multiple virtual processors |
US20070083728A1 (en) * | 2005-10-11 | 2007-04-12 | Dell Products L.P. | System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems |
CN101196816A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种操作***及操作***管理方法 |
KR101267347B1 (ko) * | 2011-07-29 | 2013-05-27 | 현대제철 주식회사 | 몰드 내 마찰력을 이용한 크랙 감시장치 및 그 방법 |
JP2013127703A (ja) * | 2011-12-19 | 2013-06-27 | Renesas Electronics Corp | ロードモジュール生成方法及びロードモジュール生成プログラム |
US20140089725A1 (en) * | 2012-09-27 | 2014-03-27 | International Business Machines Corporation | Physical memory fault mitigation in a computing environment |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
CN104199699A (zh) * | 2014-08-29 | 2014-12-10 | 北京经纬恒润科技有限公司 | 程序加载方法、芯片启动方法、装置及主控设备 |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与*** |
CN104317734A (zh) * | 2014-11-28 | 2015-01-28 | 迈普通信技术股份有限公司 | 一种适用于slab的内存分配方法及装置 |
Non-Patent Citations (3)
Title |
---|
熊馨 等: "应用Slab技术分配内存", 《郑州轻工业学院学报(自然科学版)》 * |
赵鲲鹏 等: "Linux内存管理中的Slab分配机制", 《现代计算机》 * |
长野雅广 等: "memcached全面剖析", 《HTTP://DOCS.LINUXTONE.ORG/EBOOKS/NOSQL/MEMCACHED/MEMCACHED%E5%85%A8%E9%9D%A2%E5%89%96%E6%9E%90.PDF》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664325A (zh) * | 2017-03-30 | 2018-10-16 | 北京视联动力国际信息技术有限公司 | 处理数据的方法和电子设备 |
CN108664325B (zh) * | 2017-03-30 | 2019-06-28 | 视联动力信息技术股份有限公司 | 处理数据的方法和电子设备 |
CN107729151A (zh) * | 2017-10-19 | 2018-02-23 | 济南浪潮高新科技投资发展有限公司 | 一种集群管理fpga资源的方法 |
CN110134514A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 基于异构内存的可扩展内存对象存储*** |
Also Published As
Publication number | Publication date |
---|---|
KR20170043996A (ko) | 2017-04-24 |
JP2017076396A (ja) | 2017-04-20 |
TWI710899B (zh) | 2020-11-21 |
TW201717016A (zh) | 2017-05-16 |
CN106598724B (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230315290A1 (en) | Namespaces allocation in non-volatile memory devices | |
CN106598724A (zh) | 用于在计算***中管理内存的方法 | |
CN110471861B (zh) | 一种闪存设备中的数据存储方法及闪存设备 | |
US10324832B2 (en) | Address based multi-stream storage device access | |
US10761977B2 (en) | Memory system and non-transitory computer readable recording medium | |
CN104636080B (zh) | 存储***及用于其的方法 | |
US9639459B2 (en) | I/O latency and IOPs performance in thin provisioned volumes | |
US10235047B2 (en) | Memory management method, apparatus, and system | |
CN105408875B (zh) | 在存储器接口上的分布式过程执行和文件*** | |
KR102521051B1 (ko) | 하이브리드 데이터 룩-업 방법 | |
CN104102693A (zh) | 对象处理方法和装置 | |
US20140201482A1 (en) | Selecting first data sets in a first storage group to swap with second data sets in a second storage group | |
US10956062B2 (en) | Aggregating separate data within a single data log wherein single data log is divided in a plurality of blocks assigned to plurality of different streams | |
WO2024078429A1 (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
US20230281118A1 (en) | Memory system and non-transitory computer readable recording medium | |
WO2022068760A1 (zh) | 内存管理的方法及其装置 | |
JP2016167195A (ja) | ストレージ装置、ストレージ制御プログラム、ストレージ制御方法、およびストレージシステム | |
CN101783814A (zh) | 海量存储***的元数据存储方法 | |
CN110308865A (zh) | 存储器***、计算***及其操作方法 | |
CN105867848A (zh) | 一种信息处理方法及硬盘模组 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
US20170109080A1 (en) | Computing system with memory management mechanism and method of operation thereof | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
JP2013122691A (ja) | 割り当て装置およびストレージ装置 | |
US20220391091A1 (en) | Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices |
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 |