CN106133706A - 用于多级存储器系统中的存储器分配的系统和方法 - Google Patents
用于多级存储器系统中的存储器分配的系统和方法 Download PDFInfo
- Publication number
- CN106133706A CN106133706A CN201580015368.8A CN201580015368A CN106133706A CN 106133706 A CN106133706 A CN 106133706A CN 201580015368 A CN201580015368 A CN 201580015368A CN 106133706 A CN106133706 A CN 106133706A
- Authority
- CN
- China
- Prior art keywords
- memorizer
- data structure
- group
- distributed
- node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于多级存储器系统(101)中的存储器分配的系统(100),其包括:处理器(102),其可耦合到共享统一存储器地址空间的多个存储器(106、107、108、109);以及库(120、620),其用于存储软件函数库。所述处理器响应于对所述库的存储器分配函数调用(126)以便将存储器分配给数据结构(128)而识别所述数据结构的类型。使用所述库,所述处理器基于所述数据结构的所述类型而在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分。
Description
背景
本公开的领域
本公开大体上涉及存储器系统,且更特定来说,涉及采用多个存储器的存储器系统。
相关技术的描述
处理系统可实施多个类型或层级的存储器(例如,易失性和非易失性存储器架构或封装内和外部存储器的组合)来满足多种设计需求。举例来说,可使用多层级存储器来通过组合提供增加的带宽、容量和可扩展性中的一者或多者的存储器而利用这些特征。在具有统一存储器地址空间的多层级存储器系统的存储器之间分配数据结构会影响系统性能。常规上,操作系统或所述系统的硬件基于静态预定义条件或基于表面上任意的分配来确定如何在多层级存储器系统的存储器之间分配数据结构。这常常会导致对多层级存储器系统的不同存储器的低效或无效利用。
附图简述
通过参考附图,可更好地理解本公开,且使其众多特征和优势对于本领域技术人员来说显而易见。在不同图式中使用相同的参考符号会指示类似或等同的项目。
图1是根据一些实施方案的采用多级存储器系统的处理系统的框图。
图2是说明根据一些实施方案的用于链表数据结构的示例性存储器分配的图。
图3是说明根据一些实施方案的用于映射数据结构的示例性存储器分配的图。
图4是说明根据一些实施方案的用于二叉树数据结构的示例性存储器分配的图。
图5是说明根据一些实施方案的用于在多级存储器系统的存储器之间的数据结构的存储器分配的方法的流程图。
图6是根据一些实施方案的采用多级存储器系统的处理系统的框图。
图7是说明根据一些实施方案的用于在多级存储器系统的存储器之间的数据结构的存储器分配的方法的流程图。
详细描述
图1到7示出用于在采用多级存储器系统的处理系统中为软件程序的数据结构分配存储器的示例性系统和技术。在一些实施方案中,所述处理系统包括多级存储器系统和处理器,所述处理器具有处理核心和存储器控制器。所述多级存储器系统包括共享统一的存储器地址空间的至少两种不同存储器级别的多个存储器(每个级别界定层级和类型中的一者或两者)。响应于处理器执行对库的存储器分配函数调用(例如,malloc)以将存储器分配给数据结构,所述库识别数据结构的类型,且基于数据结构的类型,操作系统在多级存储器系统的多个存储器之间分配数据结构的多个部分。举例来说,在一些实施方案中,操作系统在存储器之间分配数据结构的多个部分,使得将数据结构的更频繁搜索或存取的部分分配给具有较快存取时间的存储器,而将数据结构的较不频繁搜索或存取的部分分配给包括较慢存取时间的存储器。在一些实施方案中,所述函数调用包括多个参数,使得当处理器执行所述函数调用时,操作系统基于所述参数而分配数据结构的多个部分。在另一实施方案中,所述函数调用包括多级存储器系统的存储器层级的指示符,使得当处理器执行包括所述指示符的函数调用时,所述操作系统将数据结构的所识别的部分分配给所指示的存储器层级。所描述的技术允许基于处理核心有多可能搜索或存取数据结构的多个部分对数据结构的多个部分的更有效分配,从而提高性能且减少电力消耗。
图1示出根据一些实施方案的采用多级存储器系统101的处理系统100的框图。处理系统100包括处理器102和存储器层次104,其包括属于两个或更多不同级别的多个存储器,每个级别界定层级和类型中的一者或两者。存储器层级是基于存储器的位置上的存取速度。举例来说,在封装内存储器与封装外存储器(或“芯片上”与“芯片外”存储器)之间,封装内存储器的存取速度将一般更快。在至少一个实施方案中,多级存储器系统101是多层级存储器系统。存储器类型是基于存储器的特定架构,且每个存储器可包括多种存储器类型中的任一者,例如,更低粒度划分,例如易失性存储器对非易失性存储器,或动态随机存取存储器(DRAM)对静态随机存取存储器(SRAM)对相变存储器对忆阻器存储器;或较高粒度划分,例如在同一类型的通用存储器架构内的不同架构,例如双倍数据速率类型三同步动态随机存取存储器(DDR3SDRAM)、图形双倍数据速率版本五同步动态随机存取存储器(GDDR5SDRAM),以及低功率双倍数据速率同步动态随机存取存储器(LPDDR SDRAM)。
在统一的存储器地址空间116内的存储器106、107、108、109中的每一者基于其层级、类型或以上两者而被分类为其相应的存储器级别(标示为级别“I”和“II”)。因此,在一些实施方案中,存储器106、107、108、109可被分类成使得同一级别内的存储器共享相同层级、相同类型以及其它操作特性(例如存取时间、带宽、数据传递速率和类似者)中的一者或多者。为了示出,存储器106、107可在它们两者处于同一层级时(例如,封装内)被分类为级别I,且存储器108、109可在它们两者处于同一层级时(例如,封装外)被分类为级别II,或者存储器106、107可在它们两者实施(例如)DRAM架构时被分类为级别I,而存储器108、109可在它们两者实施(例如)SRAM架构时被分类为级别II,和类似者。
虽然存储器层次104在图1的实施方案中示出为两个封装内存储器106、107和两个封装外存储器108、109,但其它实施方案可采用横跨至少两个级别的任何数目的存储器。另外,在一些实施方案中,存储器层次104可包括封装内和封装外存储器的任何组合,包括全部都是封装外存储器和全部都是封装内存储器。存储器层次104的一些实施方案可实施片叠式存储器以增加容量或另外利用多个存储器,同时维持较小的总覆盖面积。片叠式存储器可使用穿硅通孔(TSV)或其它垂直互连技术在垂直堆叠布置中实施,或在水平布置中实施,借此存储器裸片相对于处理器或彼此水平地“堆叠”,使得它们经由中介层进行连接。在图1的实施方案中,封装内存储器106、107被示出为具有同一级别(标示为级别“I”),且封装外存储器108、109被示出为具有同一级别(标示为级别“II”)。此外,其它实施方案的多级存储器系统101可包括不同层级、不同类型的存储器,或其组合。举例来说,在至少一个实施方案中,多级存储器系统101包括全部是同一层级但是不同类型的存储器。
处理器102包括处理器核心110、111,以及存储器控制器112。虽然所示出的实施方案描绘在处理器102处实施的存储器控制器112,但在其它实施方案中,可在其它地方(例如,在实施存储器108、109中的一者或多者的堆叠式存储器装置的存储器接口处)实施存储器控制器112。此外,在一些实施方案中,处理器102包括多于一个存储器控制器112。存储器控制器112基于地址空间分配响应于存储器地址请求而从存储器106、107、108、109检索数据。因此,在所示出的实施方案中,存储器控制器112和处理系统100将存储器106、107、108、109看作单个、单层、统一的存储器地址空间116。因此,不同级别(I、II)的存储器在逻辑上仍是传统存储器层次的同一层级的部分,原因在于它们全部都是同一主存储器或系统存储器的部分,且因此全部可通过同一、统一、单层的物理存储器地址空间进行存取。
常规上,操作系统或所述系统的硬件基于静态预定义条件或基于表面上任意的分配来确定如何在多级存储器系统的存储器之间分配数据结构。由于这些常规方法无法利用将如何存取数据的较高层级(例如,软件、数据结构、算法等)语义或域专有知识,所以常常将数据结构的频繁存取的部分分配给较低性能存储器,从而导致降低的效率和整体降级的性能。
相比而言,在所示出的实施方案中,库存储装置包括库120,其通过应用编程接口(API)122向程序员或其他用户提供数据结构、算法,以及其它服务,使得库120的后端实施动态地处置存储器分配决策。这允许基于将如何存取数据的较高层级语义或域专有的知识作出分配决策。举例来说,在一些实施方案中,库120可使用多层级存储器知晓的软件接口选择性地将数据结构分配给多级存储器系统101的存储器106、107、108 109,或其可维持来自不同存储器层级的存储器页的其自身的池,且在其认为适合时明确地处置数据结构向这些页的分配。库120可为透明地管理存储器分配的任何库,例如,C++标准模板库(STL)、Java标准库、C#和.NET框架、自定义库、域专有库,和类似者。基于库120的存储器分配决策,处理系统100的操作系统121将统一、单层地址空间分配给存储器106、107、108、109。
在所示出的实施方案中,处理器核心111执行软件程序124,其包括对库120的存储器分配函数调用126以将存储器分配给数据结构128。软件程序124经由API 122存取库120。在至少一个实施方案中,库120参考数据结构类型表130以基于待分配的数据结构128的类型而确定如何在多级存储器系统101的存储器106、107、108、109之间分配数据结构128。数据结构类型表130可包括静态分配规则、可维持基于存储器地址历史或其它信息而更新的探试程序,或类似者。数据结构128可为多种数据结构中的任一者,例如,链表、映射结构、二叉树、图表结构、阵列、多元组,和类似者。基于数据结构128的类型,库120可决定操作系统121将把数据结构128的不同部分分配给多级存储器系统101的不同存储器,以努力维持处理器102的有效性能。
举例来说,在所示出的实施方案中,库120指示操作系统121将把数据结构128的第一部分132分配给存储器106,且将数据结构128的第二部分134分配给存储器109。库120可基于数据结构的类型的动态存取模式(例如,应将更频繁使用的部分分配给具有更快存取时间的存储器)、每个存储器106、107、108、109或级别中可用的存储器的量(例如,只要它们具有可用的存储器空间,应将尽可能多的数据结构128分配给具有较快存取时间的存储器)、这些的组合和类似者来作出此决策。在至少一个实施方案中,部分132、134分别表示数据结构128的元数据和数据,使得将元数据部分132分配给多个存储器106、107、108、109中的第一组存储器106,且将数据部分134分配给多个存储器106、107、108、109中的第二组存储器109。在所示出的实例中,将第一部分132(例如,数据结构128的元数据)分配给级别I的存储器106,所述存储器比第二部分134(例如,数据结构128的数据)被分配到的存储器109提供更快的存取。可进行此分配来提高处理器102的性能,这是因为数据结构128的元数据小于数据、因为元数据比数据被更频繁地存取、这些原因的组合,和类似者。
虽然所示出的实施方案描绘了库120将数据结构128划分为两个部分132、134以分别分配在两个存储器106、109之间,但其它实施方案可将数据结构128划分为更多部分、将数据结构分配在更多存储器之间,或在不将数据结构128划分为多个部分的情况下对其进行分配。此外,在一些实施方案中,库120将数据结构128的部分132、134分配给特定存储器级别(I、II)以供操作系统121均匀地、任意地或基于一个或多个探试程序将所述部分的子区段分布在特定级别的存储器之间(例如,如果将部分132分配给级别I,那么操作系统121将部分132的子区段分布在级别I的存储器106、107之间)。此外,部分和子区段可表示数据结构128的任何部分或子区段,且不需要是邻接的。
在一些实施方案中,库120可提供多种接口或挂钩中的任一者(这可为任选的),以允许程序员提供关于将如何在多级存储器系统101的存储器106、107、108、109之间分配数据结构128的输入或方向。举例来说,在至少一个实施方案中,库120允许程序员或其他用户向参数136提供存储器分配函数调用126,使得操作系统121基于参数136(或多个参数)在多级存储器系统101的多个存储器106、109之间分配数据结构128的部分132、134。参数136可指示(例如)数据结构128的类型、如何将数据结构128划分为其部分132、134、将使用多少存储器106、107、108、109、将使用哪些存储器106、107、108、109、将使用哪些级别(I、II)、一个或多个限制(例如,仅对于前n行与数据分开地分配元数据),或类似者。
在至少一个实施方案中,库120包括域专有库。域专有库的一些实例是专门用于基本线性代数的例程,例如基本线性代数子程序(BLAS)、自动调谐线性代数软件(ATLAS)、用于科学计算的便携式可扩展工具包(PETSc),以及应用标记语言(APPML)。例如,ATLAS是搜索优化参数空间(组块因子,展开)的自由化库,和用以产生高度优化的硬件专有线性代数例程的实施算法。此类库的实例是使用组块用于矩阵-矩阵相乘。一个实施方案包括将库120配置成针对存储器层次104的每个层级采取不同的组块机制,且将数据从下部层级移动到上部层级,所述上部层级还对应于最内层循环。此类例程假设对DRAM的存取是固定成本,但在包括多个级别的存储器的系统中,将必须对算法进行重构以用于更快的存储器。稀疏矩阵向量相乘(SpMV)是在许多高性能计算(HPC)应用的性能方面较重要的算法的另一实例。一般使用压缩行格式(CSR)来表示SpMV。在CSR中,非零行元素存储在值阵列中,列索引存储在列阵列中,且每个行的开始到列阵列中的索引存储在行索引阵列中。在一个实施方案中,库120在较快的存储器(例如,级别I)中分配索引阵列的存储,且在较慢的存储器(例如,级别II)中分配大值阵列的存储,从而允许更快的搜索。除了多级存储器系统101的静态优化之外,这些库可插入简档导引的动态优化,以在执行期间在不同的存储器层级之间移动数据结构的多个组件。
图2是示出根据一些实施方案的由图1的处理系统100用于链表数据结构200的示例性存储器分配的图。链表数据结构200包括节点204到215,所述节点经链接以使得节点204包括到节点205的链接或其它参考,节点205包括到节点206的链接,节点206包括到节点207的链接,且依此类推,直到最后的节点215。用以从一个或多个节点检索数据的存储器存取需要穿越链表数据结构200的从第一节点204直到所需的节点的每个节点。举例来说,对节点207的存储器存取将需要处理器102开始于第一节点204、跟随节点204到节点205的链接、跟随节点205到节点206的链接,且最后跟随节点206到节点207的链接。常规的存储器分配在多级存储器系统101的存储器106、107、108、109之间任意地分配各个节点204到215,使得节点204、205、206、207可存储在单独的存储器106、107、108、109中,且对节点207的存储器存取将需要在处理器102穿越链表的节点204、205、206、207时存取单独的存储器106、107、108、109中的每一者。这些常规方法引入了低效,因为需要对多个存储器存取多次以到达节点,且频繁存取的数据可能被存储在具有较慢的存取时间的存储器处。相比而言,在所示出的实例中,操作系统121基于节点204到215的存取次序而分配链表数据结构200的多个部分,使得将具有在链表数据结构200的存取次序中较早的节点的片段分配给具有较快存取时间的存储器,而将具有在链表数据结构200的存取次序中较晚的节点的片段分配给具有较慢存取时间的存储器。
响应于经由API 122对库120的存储器分配函数调用126以将存储器分配给数据结构128,库120将数据结构128识别为链表数据结构200。基于类型表130、由程序124提供的一个或多个参数136,或数据结构128自身,库120确定如何将链表数据结构200划分为多个部分且在多级存储器系统101之间分配。在所示出的实施方案中,描绘两个部分,第一部分表示链表数据结构200的初始片段250,且第二部分表示链表数据结构200的最后片段252。由于将至少比最后片段252的节点209到215频繁地(且可能更频繁地)存取初始片段250的节点204到208,所以操作系统121将初始片段250分配给包括具有相对较快的存取时间的存储器106、107的存储器级别I,且将最后片段252分配给包括具有相对较慢的存取时间的存储器108、109的存储器级别II。因此,对节点207的存储器存取将仅需要存取级别I的一个或多个存储器106、107,而对节点213的存储器存取将需要存取用于节点204到208的级别I的一个或多个存储器106、107,以及用于节点209到213的级别II的一个或多个存储器108、109。由于从具有相对较快的存取时间的存储器106、107存取节点204到208,所以处理器102能够相对快速地穿越列表的初始片段250,从而允许对链表数据结构200的更有效的存储器存取。可将此链表存储器分配技术应用于任何类型的链表,例如,单向链表、双向链表,和类似者。链表数据结构200可在或可不在给定存储器内邻接地分配。
虽然所示出的实例描绘被划分为两个部分的链表数据结构200,所述两个部分表示分配给两个不同存储器级别(I、II)的初始片段250和最后片段252,但库120可确定链表数据结构200的任何数目的部分,且可将所述部分分配给任何数目的存储器级别或个别存储器。此外,在一些实施方案中,库120可基于由程序124提供的一个或多个参数136而作出其分配决策。举例来说,参数136可指示如何将链表数据结构200划分为多个部分、应创建多少部分、要使用哪些存储器级别(I、II)、要使用哪些存储器106、107、108、109、应将链表数据结构200的多个部分分配给哪些存储器106、107、108、109或哪些级别(I、II)、链表数据结构200的初始节点204,或类似者。
图3是示出根据一些实施方案的由图1的处理系统100用于映射数据结构300的示例性存储器分配的图。映射数据结构300包括绑定到多个值312到321的多个键302到311,使得存储器存取需要键305的查找操作来检索对应值315。常规的存储器分配在多级存储器系统101的存储器106、107、108、109之间任意地分配各个键302到311和值312到321。这些常规方法引入了低效,因为需要对多个存储器存取多次以到达一值(例如,归因于线性链或其它散列冲突处置技术),且频繁存取的数据可能被存储在具有较慢存取时间的存储器处。相比而言,在所示出的实例中,操作系统121分配映射数据结构300的多个部分,使得将映射数据结构300的键302到311分配给具有较快存取时间的存储器,而将映射数据结构300的对应值312到321分配给具有较慢存取时间的存储器。
响应于经由API 122对库120的存储器分配函数调用126以将存储器分配给数据结构128,库120将数据结构128识别为映射数据结构300。基于类型表130、由程序124提供的一个或多个参数136,或数据结构128自身,库120确定如何将映射数据结构300划分为多个部分且在多级存储器系统101之间分配。在所示出的实施方案中,描绘两个部分,第一部分表示映射数据结构300的键部分350,且第二部分表示映射数据结构300的值部分352。操作系统121将键部分350分配给包括具有相对较快存取时间的存储器106、107的存储器级别I,且将值部分352分配给包括具有相对较慢存取时间的存储器108、109的存储器级别II。因此,键查找操作可快速地进行,且随后存储器控制器112可从具有较慢存取时间的存储器检索对应值。处理系统100将在涉及多个查找的情形中进一步实现此存储器分配的效率。此外,如果映射数据结构300包括相对大的大小的一个或多个值312到321,那么分配给具有较慢存取时间但具有增加的容量的存储器可为有益的。可将此映射数据结构存储器分配技术应用于任何类型的映射或其它关联阵列数据。映射数据结构300的键302到311和值312到321可在或可不在给定存储器内邻接地分配。
虽然所示出的实例描绘被划分为两个部分的映射数据结构300,所述两个部分表示分配给两个不同存储器级别(I、II)的键部分350和值部分352,但库120可确定映射数据结构300的任何数目的部分,且可将所述部分分配给任何数目的存储器级别或个别存储器。此外,在一些实施方案中,库120可基于由程序124提供的一个或多个参数136而作出其分配决策。举例来说,参数136可指示如何将映射数据结构300划分为多个部分、应创建多少部分、要使用哪些存储器级别(I、II)、要使用哪些存储器106、107、108、109、应将映射数据结构300的多个部分分配给哪些存储器106、107、108、109或哪些级别(I、II),或类似者。
图4是示出根据一些实施方案的由图1的处理系统100用于二叉树数据结构400的示例性存储器分配的图。二叉树数据结构400包括多个节点,其中每个节点存储节点元数据402到412(例如,关于节点ID、键、指针,或到其它节点的链接的信息)和节点数据422到432。根据多种穿越方案中的任一者,用以检索节点数据(例如,节点数据426)的存储器存取通常需要穿越二叉树数据结构400的多个节点。举例来说,在按序穿越方案的情况下,用以检索节点数据426的存储器存取将需要处理器102穿越二叉树400,开始于节点元数据409,随后是节点元数据405、节点元数据403且最后是节点元数据406,以检索节点数据426。在层级次序穿越方案的情况下,用以检索节点数据426的存储器存取将需要处理器102穿越二叉树400,开始于根节点元数据402,随后是节点元数据403、节点元数据404、节点元数据405且最后是节点元数据406,以检索节点数据426。
常规的存储器分配在多级存储器系统101的存储器106、107、108、109之间任意地分配节点元数据402到412和节点数据422到432,使得根据穿越方案将被连续地穿越的节点可被分配给单独的存储器,使得对二叉树数据结构400的穿越可需要存取单独的存储器106、107、108、109中的每一者。这些常规方法引入了低效,因为需要对多个存储器存取多次以到达所请求的节点,且二叉树数据结构400的频繁存取的部分可能被存储在具有较慢存取时间的存储器处。相比而言,在所示出的实例中,操作系统121分配二叉树数据结构400的多个部分,使得将二叉树数据结构400的节点元数据402到412分配给具有较快存取时间的存储器,而将二叉树数据结构400的对应节点数据422到432分配给具有较慢存取时间的存储器。
响应于经由API 122对库120的存储器分配函数调用126以将存储器分配给数据结构128,库120将数据结构128识别为二叉树数据结构400。基于类型表130、由程序124提供的一个或多个参数136,或数据结构128自身,库120确定如何将二叉树数据结构400划分为多个部分且在多级存储器系统101之间分配。在所示出的实施方案中,描绘两个部分,第一部分表示二叉树数据结构400的节点元数据部分450,且第二部分表示二叉树数据结构400的节点数据部分452。为了易于示出,节点元数据部分450和节点数据部分452仅指示二叉树数据结构400的选择节点,然而,节点元数据部分450表示全部节点元数据402到412,且节点数据部分452表示全部节点数据422到432。
操作系统121将节点元数据部分450分配给包括具有相对较快存取时间的存储器106、107的存储器级别I,且将节点数据部分452分配给包括具有相对较慢存取时间的存储器108、109的存储器级别II。因此,对二叉树数据结构400的穿越可快速地进行,这是因为将从具有较快存取时间的一个或多个存储器106、107存取节点元数据402到412,且随后存储器控制器112可从具有较慢存取时间的存储器检索所请求的节点数据。此外,分配给具有较慢存取时间但具有增加的容量的存储器对于包括相对大的大小的节点数据422到432的二叉树数据结构400的节点可为有益的。
在另一实施方案中,操作系统121基于节点的穿越次序而分配二叉树数据结构400的多个部分,使得将具有根据二叉树数据结构400的穿越方案的穿越次序中较早的节点的片段分配给具有较快存取时间的存储器,而将具有根据二叉树数据结构400的穿越方案的穿越次序中较晚的节点的片段分配给具有较慢存取时间的存储器。举例来说,在层级次序穿越方案的上下文中,由于将至少比较低层级(即,更靠近分支)的节点元数据频繁地(且可能更频繁地)存取较高层级(即,更靠近根节点)的节点元数据,所以操作系统121可将前三个层级(包括节点元数据402到408)分配给包括具有相对较快存取时间的存储器106、107的存储器级别I,且将分支层级(包括元数据409到412)分配给包括具有相对较慢存取时间的存储器108、109的存储器级别II。因此,对节点数据427的存储器存取将仅需要存取级别I的一个或多个存储器106、107,而对节点数据430的存储器存取将需要存取用于节点元数据402到408的级别I的一个或多个存储器106、107,以及用于节点元数据409、410的级别II的一个或多个存储器108、109。由于从具有相对较快存取时间的存储器106、107存取节点元数据402到408,所以处理器102能够相对快速地穿越前三个层级,从而允许对二叉树数据结构400的更有效的存储器存取。
可将这些二叉树数据结构存储器分配技术应用于任何类型的图表数据结构,例如,三叉树结构、B+树结构、有向无环图(DAG),或类似者。此外,节点元数据402到412和节点数据422到432可在或可不在给定存储器内邻接地分配。虽然所示出的实例描绘被划分为两个部分的二叉树数据结构400,所述两个部分表示分配给两个不同存储器级别(I、II)的节点元数据部分450和节点数据部分452,但库120可确定二叉树数据结构400的任何数目的部分,且可将所述部分分配给任何数目的存储器级别或个别存储器。此外,在一些实施方案中,库120可基于由程序124提供的一个或多个参数136而作出其分配决策。举例来说,参数136可指示如何将二叉树数据结构400划分为多个部分、应创建多少部分、要使用哪些存储器级别(I、II)、要使用哪些存储器106、107、108、109、应将二叉树数据结构400的多个部分分配给哪些存储器106、107、108、109或哪些级别(I、II)、穿越方案,或类似者。
图5是示出根据一些实施方案的用于在多级存储器系统的存储器之间的数据结构的存储器分配的示例性方法500的流程图。为了易于参考,下文在图1的多级存储器系统101的示例性上下文中描述了方法500。方法500在框502处起始,借此当处理器核心111执行包括对库120的存储器分配函数调用126的软件程序124以将存储器分配给数据结构128时,处理系统100接收存储器分配函数调用126。
在框504处,处理系统100经由API 122存取库120。库120通过API 122向程序员或其他用户提供数据结构、算法,以及其它服务,使得库120的后端实施动态地处置存储器分配决策。这允许基于将如何存取数据的较高层级语义或域专有的知识作出分配决策。举例来说,在一些实施方案中,库120可使用多层级存储器知晓的软件接口选择性地将数据结构分配给多级存储器系统101的存储器106、107、108 109,或其可维持来自不同存储器层级的存储器页的其自身的池,且在其认为适合时明确地处置数据结构向这些页的分配。库120可为透明地管理存储器分配的任何库,例如,C++标准模板库(STL)、Java标准库、C#和.NET框架、自定义库、域专有库,和类似者。
在框506处,库120基于(例如)与存储器分配函数调用、探试程序或类似者一起包括的一个或多个参数136而识别数据结构128的类型。在至少一个实施方案中,库120参考数据结构类型表130以确定与在多级存储器系统101的存储器106、107、108、109之间分配数据结构128相关的信息。举例来说,根据框508,库120可使用类型表130来识别数据结构128的多个部分。库120基于数据结构类型而识别数据结构128的部分132、132。在一些实施方案中,库120基于由程序124提供的一个或多个参数136而识别数据结构128的部分132、134。可基于存取频率、数据大小或类似者来确定所述部分。库120向操作系统121指示将如何基于部分132、134来分配数据结构128。
在框510处,操作系统121在多级存储器系统101的多个存储器106、109之间分配数据结构的部分132、134。所述分配可基于数据结构的类型的动态存取模式(例如,应将更频繁使用的部分分配给具有较快存取时间的存储器)、每个存储器106、107、108、109或级别中可用的存储器的量(例如,只要它们具有可用的存储器空间,应将尽可能多的数据结构128分配给具有较快存取时间的存储器)、这些的组合,和类似者。在至少一个实施方案中,部分132、134分别表示数据结构128的元数据和数据,使得将元数据部分132分配给多个存储器106、107、108、109中的第一组存储器106,且将数据部分134分配给多个存储器106、107、108、109中的第二组存储器109。可作出此分配来提高处理器102的性能,这是因为数据结构128的元数据小于数据、因为元数据比数据被更频繁地存取、这些原因的组合,和类似者。
图6是根据一些实施方案的图1的处理系统100执行用于在多级存储器系统101的存储器106、107、108、109之间分配数据结构128的存储器分配的框图。在所示出的实施方案中,库620提供用于软件624的接口以将存储器位置信息、偏好和类似者传送到基础系统软件(例如,操作软件(OS)、管理程序等)。也就是说,所述库通过API 622提供数据结构、算法和其它服务,使得程序员或其他用户可使用函数调用602、604来指示操作系统621将如何在多级存储器系统101的存储器106、107、108、109之间分配数据结构128。举例来说,在至少一个实施方案中,API 622包括对每个存储器106、107、108、109、每个存储器级别(I、II)、每个存储器层级,或每个存储器类型的函数调用602。函数调用602包括存储器指示符(描绘为“I-1”)以向存储器106指示存储器分配。函数调用602可进一步包括参数以指示将把数据结构或其它存储器对象分配给此存储器106、数据大小准则、哪一存储器(如果函数调用存储器指示符指示除特定存储器之外的存储器级别、层级或类型),或类似者。
在一些实施方案中,API 622包括接受参数的通用存储器分配函数调用604,包括将被分配的数据结构128(在函数调用604中描绘为“DS”)和用以指示将把数据结构128分配给哪一存储器106的存储器指示符(“I-1”)。在一些实施方案中,存储器指示符(“I-1”)可指示存储器级别(I、II)、多个存储器、多个存储器级别,或类似者。此外,不同的实施方案可允许或需要若干参数中的任一者,例如,数据结构类型、数据结构部分、分配大小限制,和类似者。如所示出,当处理器核心111执行包括经由API 622对库620的存储器分配函数调用602、604、606中的任一者的软件程序624时,库620指示操作系统621将把数据结构128分配给由存储器指示符(“I-1”)识别的存储器106。虽然所示出的实施方案针对存储器分配函数调用602、604使用标准C库“malloc”,但还可容易将这些技术应用于其它编程语言及其相应的存储器分配接口。在一些实施方案中,使用指令606或其它注释类语法以通过经由存储器指示符直接向编译器指定特定存储器或存储器级别而指定存储器分配。举例来说,在一些实施方案中,指令606由编译器处理,且将信息传递到库620或操作系统621。
不同的实施方案可采用不同的约定来处置分配。举例来说,在一些实施方案中,由函数调用602、604或指令606的存储器指示符指定的存储器分配是严格要求,使得如果所指示的存储器106不具有足够的可用存储器空间来满足存储器分配请求,那么分配将失败(例如,函数调用602、604可使“空”指针与“I-1”存储器指示符一起返回)。在其它实施方案中,由函数调用602、604或指令606指定的存储器分配更多地被看作建议,使得如果所指示的存储器106不具有足够的可用存储器空间来满足存储器分配请求,那么操作系统621分配除了(例如)根据其它探试程序、任意地或类似者所指定的数据结构之外的数据结构128。至少一个实施方案中,如果不遵循由函数调用或指令指定的存储器分配,那么处理系统100向程序员或其他用户返回关于实际分配的额外信息。
库620的一些实施方案提供“realloc”或“remap”函数调用,其命令(或建议)OS应将现有的分配重新分配给新的存储器层级(任选地同时重新设定分配的大小)。变体可包括用以允许重新映射现有的存储器分配的子集或区的接口。此外,库620的一些实施方案提供额外的接口功能以帮助区分分配来自哪里。举例来说,在一个实施方案中,如果“ptr”与存储器106中的物理存储器位置相关联,那么函数调用“类型whichMemory(ptr)”返回“I-1”。在一些实施方案中,这些存储器分配技术与基于不一致存储器地址(NUMA)的存储器分配方案组合使用。
图7是示出根据一些实施方案的用于在多级存储器系统的存储器之间的数据结构的存储器分配的示例性方法700的流程图。为了易于参考,下文在图6的多级存储器系统101的示例性上下文中描述了方法700。方法700在框702处起始,借此当处理器核心111执行包括对库620的存储器分配函数调用602、604的软件程序624以将存储器分配给数据结构128时,处理系统100接收存储器分配函数调用602、604。
在框704处,处理系统100经由API 622存取库620。库620通过API 622向程序员或其他用户提供数据结构、算法,以及其它服务,使得其充当用于软件624的接口以将存储器位置信息、偏好和类似者传送到基础系统软件。因此,库620有助于程序员或其他用户经由函数调用来指定存储器分配。
在框706处,处理系统100识别函数调用602、604的存储器指示符(在图6中描绘为“I-1”)以确定分配的指定位置。举例来说,存储器指示符(“I-1”)可指定一个或多个存储器106、107、108、109、一个或多个级别(I、II)、一个或多个存储器层级、一个或多个存储器类型,或类似者。存储器指示符(“I-1”)可包括经由函数调用传递的参数、与函数调用分开的语法指示符,或函数调用自身。
在框708处,处理系统100基于函数调用126的参数而识别数据结构128的多个部分。在一些实施方案中,所述参数可通过识别以下各者来指定数据结构128的所述部分:数据结构128的类型、所述部分的边界、所述部分的数据大小、所述部分的数据类型,或类似者。可将数据结构128划分为任何数目的任何大小的数据部分,包括表示整个数据结构128的单个部分。
在框710处,操作系统621基于存储器指示符(“I-1”)而在多级存储器系统101的多个存储器106、107、108、109之间分配数据结构128的多个部分。举例来说,响应于函数调用604包括存储器指示符“I-1”和参数“DS”,操作系统621将整个数据结构128分配给级别I的第一存储器106。在一些实施方案中,处理系统100可将函数调用602、604及其指定的存储器指示符“I-1”和参数看作建议而不是要求。一般来说,方法700通过以下操作而促进对多级存储器系统的有效利用:允许程序员或其他用户(包括应用软件)使用包括存储器指示符的函数调用或指令来管理数据结构在多级存储器系统的多个存储器之间的分配。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或另外有形地体现在非暂时性计算机可读存储媒体上的一或多组可执行命令。所述软件可包括命令和某些数据,其当由一个或多个处理器执行时会操纵所述一个或多个处理器执行上文所描述的技术的一个或多个方面。所述非暂时性计算机可读存储媒体可包括(例如)磁盘或光盘存储装置、固态存储装置,例如快闪存储器、高速缓冲存储器、随机存取存储器(RAM),或其它非易失性存储器装置,和类似者。存储在非暂时性计算机可读存储媒体上的可执行命令可呈由一个或多个处理器解译或可以其它方式执行的源代码、汇编语言代码、目标代码,或其它命令格式。
应注意,不需要上文在一般描述中所描述的所有活动或要素,可能不需要特定活动或装置的一部分,且可执行一个或多个其它活动,或包括除了所描述的要素之外的要素。此外,列举活动的次序不一定是执行活动的次序。而且,已经参考特定实施方案描述了概念。然而,本领域技术人员应了解,可在不脱离所附权利要求书中所陈述的本公开的范围的情况下作出各种修改和改变。因此,可在说明性意义而不是限制性意义上对待说明书和图,且希望所有此类修改包括在本公开的范围内。
上文已关于特定实施方案描述了益处、其它优势和问题的解决方案。然而,这些益处、优势、问题的解决方案以及可导致任何益处、优势或解决方案发生或变得更加突出的任何特征不应被解释为任何或所有权利要求的关键、所需或实质特征。另外,上文公开的特定实施方案仅是说明性的,因为所公开的标的可以按受益于本文教导的本领域技术人员显而易见的不同但等效的方式加以修改和实践。除了所附权利要求书中所描述的内容之外,不希望对本文示出的构造或设计的细节进行限制。因此显然的是,可更改或修改上文所公开的特定实施方案,且所有此类变化都被视为在所公开的标的的范围内。因此,本文寻求的保护在所附权利要求书中予以陈述。
Claims (16)
1.一种方法,其包括:
响应于对库(120、620)的存储器分配函数调用(126、602、604)以便将存储器分配给多级存储器系统(101)中的数据结构(128):
在所述多级存储器系统的处理器(102)处识别所述数据结构的类型;以及
基于所述数据结构的所述类型,在所述多级存储器系统的所述处理器处且使用所述库在所述多级存储器系统的多个存储器(106、107、108、109)之间分配所述数据结构的多个部分。
2.如权利要求1所述的方法,其中在多个存储器之间分配所述数据结构的多个部分进一步包括:
将所述数据结构的元数据(402、403、404、405、406、407、408、409、410、411、412)分配给所述多个存储器中的第一组一个或多个存储器;以及
将所述数据结构的数据(422、423、424、425、426、427、428、429、430、431、432)分配给所述多个存储器中的第二组一个或多个存储器。
3.如权利要求1所述的方法,其中:
所述数据结构包括有序数据结构(200、400);且
分配所述有序数据结构的多个部分包括:
将所述有序数据结构的初始部分(250)分配给所述多个存储器中的第一组一个或多个存储器;以及
将所述有序数据结构的最后部分(252)分配给所述多个存储器中的第二组一个或多个存储器。
4.如权利要求3所述的方法,其中:
所述有序数据结构包括树结构(400);
所述有序数据结构的所述初始部分包括所述树结构的初始层级的节点(402、403、404、405、406、407、408);且
所述有序数据结构的所述最后部分包括所述树结构的最后层级的节点(409、410、411、412)。
5.如权利要求1所述的方法,其中:
所述存储器分配函数调用进一步包括:
多个参数(136);且
在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分进一步包括
基于所述多个参数在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分。
6.如权利要求1所述的方法,其中:
所述数据结构包括链表(200);且
在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分进一步包括:
将所述链表的初始片段(250)分配给所述多个存储器中的第一组一个或多个存储器;
将所述链表的最后片段(252)分配给所述多个存储器中的第二组一个或多个存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
7.如权利要求1所述的方法,其中:
所述数据结构包括映射结构(300);且
在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分进一步包括:
将所述映射结构的键部分(350)分配给所述多个存储器中的第一组一个或多个存储器;
将所述映射结构的值部分(352)分配给所述多个存储器中的第二组一个或多个存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
8.如权利要求1所述的方法,其中:
所述数据结构包括图表结构(400);且
在所述多级存储器系统的多个存储器之间分配所述数据结构的多个部分进一步包括:
将所述图表结构的节点元数据(402、403、404、405、406、407、408、409、410、411、412)分配给所述多个存储器中的第一组一个或多个存储器;
将所述图表结构的节点数据部分(422、423、424、425、426、427、428、429、430、431、432)分配给所述多个存储器中的第二组一个或多个存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
9.一种方法,其包括:
在多级存储器系统(101)的处理器(102)处执行存储器分配函数调用(602、604),所述存储器分配函数调用具有所述多级存储器系统中的多个存储器层级的指定存储器层级的指示符;以及
响应于执行所述存储器分配函数调用而在所述指定存储器层级处为数据结构(128)分配存储器。
10.如权利要求9所述的方法,其中所述指示符包括以下各者中的至少一者:所述函数调用的类型、经由所述函数调用传递的参数(136),和与所述函数调用分开的语法指示符。
11.一种系统(100),其包括:
库(120、620)存储装置,其用于存储库;以及
处理器(102),其可耦合到共享统一存储器地址空间的多个存储器(106、107、108、109),所述处理器用于:
响应于对所述库的存储器分配函数调用(126、602、604)以便将存储器分配给数据结构:
识别所述数据结构的类型;以及
使用所述库基于所述数据结构的所述类型在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分。
12.如权利要求11所述的方法,其中所述处理器将通过以下操作在多个存储器之间分配所述数据结构的多个部分:
将所述数据结构的元数据(402、403、404、405、406、407、408、409、410、411、412)分配给所述多个存储器中的第一组一个或多个存储器;以及
将所述数据结构的数据(422、423、424、425、426、427、428、429、430、431、432)分配给所述多个存储器中的第二组一个或多个存储器。
13.如权利要求11所述的系统,其中:
所述存储器分配函数调用进一步包括多个参数(136);且
所述处理器将通过基于所述多个参数在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分,而在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分。
14.如权利要求11所述的系统,其中:
所述数据结构包括链表(200);且
所述处理器将通过以下操作在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分:
将所述链表的初始片段(250)分配给所述多个存储器中的第一组一个或多个存储器;
将所述链表的最后片段(252)分配给所述多个存储器中的第二组一个或多个存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
15.如权利要求11所述的系统,其中:
所述数据结构包括映射结构(300);且
所述处理器将通过以下操作在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分:
将所述映射结构的键部分(350)分配给所述多个存储器中的第一组一个或多个存储器;
将所述映射结构的值部分(352)分配给所述多个存储器中的第二组一个或多个存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
16.如权利要求11所述的系统,其中:
所述数据结构包括图表结构(400);且
所述处理器将通过以下操作在所述多个存储器中的多个存储器之间分配所述数据结构的多个部分:
将所述图表结构的节点元数据(402、403、404、405、406、407、408、409、410、411、412)分配给所述多个存储器中的第一组存储器;
将所述图表结构的节点数据部分(422、423、424、425、426、427、428、429、430、431、432)分配给所述多个存储器中的第二组存储器;且
其中所述第一组一个或多个存储器比所述第二组一个或多个存储器提供更快的存取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/273,751 | 2014-05-09 | ||
US14/273,751 US9377954B2 (en) | 2014-05-09 | 2014-05-09 | System and method for memory allocation in a multiclass memory system |
PCT/US2015/029369 WO2015171695A1 (en) | 2014-05-09 | 2015-05-06 | System and method for memory allocation in a multiclass memory system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106133706A true CN106133706A (zh) | 2016-11-16 |
Family
ID=54367891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580015368.8A Pending CN106133706A (zh) | 2014-05-09 | 2015-05-06 | 用于多级存储器系统中的存储器分配的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9377954B2 (zh) |
EP (1) | EP3140746A4 (zh) |
JP (1) | JP6205506B2 (zh) |
KR (1) | KR101779994B1 (zh) |
CN (1) | CN106133706A (zh) |
WO (1) | WO2015171695A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110574045A (zh) * | 2017-04-27 | 2019-12-13 | 超威半导体公司 | 用于优化后的深度网络处理的图形匹配 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9977730B2 (en) * | 2015-05-08 | 2018-05-22 | Dell Products, Lp | System and method for optimizing system memory and input/output operations memory |
US10515430B2 (en) * | 2015-11-03 | 2019-12-24 | International Business Machines Corporation | Allocating device buffer on GPGPU for an object with metadata using access boundary alignment |
US9847105B2 (en) * | 2016-02-01 | 2017-12-19 | Samsung Electric Co., Ltd. | Memory package, memory module including the same, and operation method of memory package |
JP6423809B2 (ja) * | 2016-02-19 | 2018-11-14 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
JP6682599B2 (ja) * | 2018-10-19 | 2020-04-15 | イーソル株式会社 | オペレーティングシステム及びメモリ割り当て方法 |
US11392428B2 (en) | 2019-07-17 | 2022-07-19 | Memverge, Inc. | Fork handling in application operations mapped to direct access persistent memory |
US11580019B2 (en) * | 2020-04-17 | 2023-02-14 | Microsoft Technology Licensing, Llc | Computer memory management in computing devices |
US11093169B1 (en) * | 2020-04-29 | 2021-08-17 | EMC IP Holding Company LLC | Lockless metadata binary tree access |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722110A (zh) * | 2001-02-24 | 2006-01-18 | 国际商业机器公司 | 低等待时间存储器系统访问 |
US20110107042A1 (en) * | 2009-11-03 | 2011-05-05 | Andrew Herron | Formatting data storage according to data classification |
US20120246403A1 (en) * | 2011-03-25 | 2012-09-27 | Dell Products, L.P. | Write spike performance enhancement in hybrid storage systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08194643A (ja) * | 1995-01-19 | 1996-07-30 | Fanuc Ltd | メモリ制御方式 |
JP2002351741A (ja) * | 2001-05-30 | 2002-12-06 | Matsushita Electric Ind Co Ltd | 半導体集積回路装置 |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7293051B1 (en) * | 2004-07-01 | 2007-11-06 | Sun Microsystems, Inc. | Collection-set selection using a small priority queue |
JP4502796B2 (ja) * | 2004-12-17 | 2010-07-14 | パナソニック株式会社 | ストリームパケット受信装置 |
US7926043B2 (en) | 2006-06-20 | 2011-04-12 | Microsoft Corporation | Data structure path profiling |
JP2009020684A (ja) * | 2007-07-11 | 2009-01-29 | Kawasaki Microelectronics Kk | 端末装置 |
US8060719B2 (en) * | 2008-05-28 | 2011-11-15 | Micron Technology, Inc. | Hybrid memory management |
US8615636B2 (en) * | 2011-03-03 | 2013-12-24 | International Business Machines Corporation | Multiple-class priority-based replacement policy for cache memory |
US9009392B2 (en) * | 2012-04-25 | 2015-04-14 | International Business Machines Corporation | Leveraging a hybrid infrastructure for dynamic memory allocation and persistent file storage |
US9652289B2 (en) * | 2012-04-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Systems and methods for S-list partitioning |
-
2014
- 2014-05-09 US US14/273,751 patent/US9377954B2/en active Active
-
2015
- 2015-05-06 KR KR1020167027124A patent/KR101779994B1/ko active IP Right Grant
- 2015-05-06 WO PCT/US2015/029369 patent/WO2015171695A1/en active Application Filing
- 2015-05-06 CN CN201580015368.8A patent/CN106133706A/zh active Pending
- 2015-05-06 EP EP15789829.7A patent/EP3140746A4/en not_active Withdrawn
- 2015-05-06 JP JP2016558775A patent/JP6205506B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722110A (zh) * | 2001-02-24 | 2006-01-18 | 国际商业机器公司 | 低等待时间存储器系统访问 |
US20110107042A1 (en) * | 2009-11-03 | 2011-05-05 | Andrew Herron | Formatting data storage according to data classification |
US20120246403A1 (en) * | 2011-03-25 | 2012-09-27 | Dell Products, L.P. | Write spike performance enhancement in hybrid storage systems |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110574045A (zh) * | 2017-04-27 | 2019-12-13 | 超威半导体公司 | 用于优化后的深度网络处理的图形匹配 |
CN110574045B (zh) * | 2017-04-27 | 2024-02-09 | 超威半导体公司 | 用于优化后的深度网络处理的图形匹配 |
Also Published As
Publication number | Publication date |
---|---|
WO2015171695A1 (en) | 2015-11-12 |
JP6205506B2 (ja) | 2017-09-27 |
KR101779994B1 (ko) | 2017-09-19 |
US9377954B2 (en) | 2016-06-28 |
EP3140746A4 (en) | 2018-03-07 |
JP2017517792A (ja) | 2017-06-29 |
EP3140746A1 (en) | 2017-03-15 |
US20150324131A1 (en) | 2015-11-12 |
KR20160122851A (ko) | 2016-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106133706A (zh) | 用于多级存储器系统中的存储器分配的系统和方法 | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US10242050B2 (en) | Database caching in a database system | |
CN100478959C (zh) | 嵌入式数据库的存储管理方法 | |
JP5762878B2 (ja) | key−valueストアを有するメモリシステム | |
JP2016519810A5 (zh) | ||
US9996597B2 (en) | Unified mapreduce framework for large-scale data processing | |
CN103765381B (zh) | 对b+树的并行操作 | |
JP2015512551A (ja) | ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 | |
KR102440128B1 (ko) | 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 | |
CN102243660A (zh) | 一种数据访问方法及设备 | |
CN102722432A (zh) | 追踪内存访问的方法和装置 | |
CN107783988A (zh) | 一种目录树的加锁方法及设备 | |
WO2018194722A1 (en) | Systems and methods for proactive spilling of probe records in hybrid hash join | |
CN106156301A (zh) | 一种大字段数据的处理方法及装置 | |
CN113590332B (zh) | 内存管理方法、装置及内存分配器 | |
CN101763308B (zh) | 在运行时对堆数据进行池分配的方法 | |
CN104376047B (zh) | 一种基于HBase的大表join方法 | |
US11169993B2 (en) | Datastore mechanism for managing out-of-memory data | |
CN101650689B (zh) | 一种非易失性数据的存储和检索方法及装置 | |
CN1828596A (zh) | 在数据库内部表示的文件系统 | |
CN110046173B (zh) | 调度信息的生成方法及装置、电子设备 | |
JP5992577B2 (ja) | メモリ、データ処理方法、及びメモリシステム | |
NO331821B1 (no) | Organisering av data i en database | |
US11928080B2 (en) | Method of interoperability for data hubs based on active metadata management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161116 |
|
RJ01 | Rejection of invention patent application after publication |