CN108139967B - 将数据流转换为阵列 - Google Patents
将数据流转换为阵列 Download PDFInfo
- Publication number
- CN108139967B CN108139967B CN201580083404.4A CN201580083404A CN108139967B CN 108139967 B CN108139967 B CN 108139967B CN 201580083404 A CN201580083404 A CN 201580083404A CN 108139967 B CN108139967 B CN 108139967B
- Authority
- CN
- China
- Prior art keywords
- memory
- array
- memory block
- block
- management module
- 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
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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
提供了一种数据存储设备(10),包括存储器模块(100)和存储器管理模块(110)。所述存储器管理模块(110)用于:将所述存储器模块(100)的存储空间(200)分配给存储块(210);将所述存储块分配给阵列(220),其中,所述阵列(220)包括至少一个阵元(230)。所述存储器管理模块(110)用于:在第一步骤中将存储块k分配给所述阵列,以存储阵元;在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元。所述存储器管理模块(110)用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。
Description
技术领域
本发明涉及数据处理领域。特别地,本发明涉及一种数据存储设备以及一种用于管理数据存储设备中数据的方法。
背景技术
在线流处理是大数据处理的一部分。通常,它应该与批量数据并行处理(流的分块处理)进行交互操作。在批量处理之前,应将流转换为类似阵列的数据结构(数据块)。
在很多情况下,块的尺寸并不是事先知道的。这意味着阵列应该是“可附加的”,即,应该能够非常快速地增长,换句话说,可以动态扩展。
在并行数据处理场景中,可以通过不同的方式访问阵列:
(a)定期访问,这与减少标量、阵列映射、过滤等有关。
(b)许多场景中的不定期访问,如子阵列切片、排列、其他索引访问;稀疏数据结构(如稀疏向量);使用基于块的阵列处理进行并行数据处理。
存在几种现有的分配阵列的方法。其中一种方法是基于并使用***调用,例如Malloc/Memcpy/Free。另一种方法可能被称为优化的Realloc***调用,实现了相比以前更高的性能,是一种使用动态阵列的流行方式。
现有的方法可以概括如下:Realloc试图在堆中的数据块之后复用可用的空间,即可用的存储空间。如果没有空间可用,那么Realloc通过分配/复制/释放存储块这种简单且非高效的方式进行操作。因此,可能在具有零碎存储器的***中造成显着的开销。Realloc不是一种通用的方法。例如,Java VM没有Realloc对等物。此外,通过平坦、连续的方式分配阵列会对分配阵列的尺寸造成实际限制。
在一些现有技术方法中,当对阵列进行动态地扩展(从原始阵列的原始尺寸到扩展阵列的扩展尺寸)时,原始阵列的内容从一个存储器位置复制到另一个存储器位置,该位置提供足够的物理存储空间,以避免阵列的物理残片,即避免阵列碎片化,碎片存储在物理存储器的不同物理位置。原始阵列的这种复制过程可以称为存储器复制。
发明内容
可见,本发明的目标在于在管理动态可扩展阵列时减少数据处理的开销。该说明书提出了一种将数据流有效转换成阵列的方法。它基于在物理存储器中分配阵列的特定规则。
根据本发明的第一方面,提供了一种数据存储设备,包括存储器模块和存储器管理模块。所述存储器管理模块用于:将所述存储器模块的存储空间分配给存储块;将所述存储块分配给阵列,其中,所述阵列包括至少一个阵元。所述存储器管理模块还用于:在第一步骤中将存储块k分配给所述阵列,以存储阵元;在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元。所述存储器管理模块用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。
上文和下文中提及的存储器模块涉及用于存储数据的任一存储器模块,例如,随机存取存储器(random access memory,简称RAM)或任一其他数据存储组件,其用于动态存储数据,即在数据处理装置的操作期间存储数据。
存储器管理模块涉及功能模块,该功能模块用于发送请求或发起***调用,其将空闲的存储空间分配给阵列或对存储空间进行重新分配,以将新块附加到现有的阵列。存储器管理模块可以是用于执行之前提到的相应功能的硬件组件。
存储块涉及存储块,特别地,可以是存储器模块中的存储空间数量。
一个阵列至少包含一个阵元,阵元包含要存储的数据。阵元可能是访问存储在阵列中的数据时可寻址的最小逻辑单元。本说明书上下文中的可扩展或可附加的阵列涉及阵列,其尺寸可以改变,特别地,通过附加新的逻辑阵元可以增加其尺寸。所述阵元需要将额外的物理存储空间附加到阵列已经使用的地址空间。
由于块k+1的尺寸是存储块k尺寸的两倍,因此数据存储设备支持动态增长的阵列。支持大尺寸的阵列,并且如果将新的存储块附加到现有的阵列上,尤其不需要存储器复制。特别地,由于任一存储块都可以物理地存储在独立于分配给一个阵列的其他存储块的存储器模块中,因此通过该方法消除了存储连续性的需求(即,具有存储在连续存储地址空间中的完整阵列)。然而,为了存储相应的存储块,在一些实施例中可能需要或至少偏爱连续的存储空间。因此,消除了阵列扩展期间复制现有数据的必要性,降低了阵列管理的数据管理开销。
由于存储器模块中阵元的组织和布置,即使将阵列进行分段并将阵列的分段存储在存储器模块中不同的地址空间或位置中,本文描述的方法也能够访问阵元。特别地,这是由于块k+1的尺寸是块k尺寸的两倍。
此外,在将存储块k+1分配给阵列之后,保留存储在存储块k中的阵元。这意味着通过避免复制阵元,避免阵列容量扩展期间的开销。存储块可以在存储器模块中物理分离,即存储块k+1的地址空间不直接附加到存储块k的地址空间。
这里描述的数据存储设备可以支持更大的缓冲器,可以在存储器使用中允许更多的灵活性。换句话说,这里描述的方法可以称为包括处理器和存储器的存储***或存储管理***,其中,所述***由于将多个数据流转换为基于阵列的数据结构以存储在所述存储器中。为此,***实现了结合数据存储设备所描述的功能。
数据存储设备允许一种有效的方式进行阵列分配而无需开销或降低存储器复制的开销,这对于流式数据并行环境可能至关重要。计算机器或存储器管理模块的标准分配过程可以用于实现上述功能。因此,可以支持更大尺寸的动态可扩展存储器阵列。
根据本发明一实施例,所述存储器管理模块用于通过考虑k的所述二进制表示的最高有效位确定存储块k的逻辑索引。
最高有效位(most significant bit,简称MSB)是数字k的二进制表示中最左边的非零位,其中,最左边的位具有最高的有效性或最高的位置值。可以将存储块的逻辑索引视为指示阵列中存储块数量的指针。由于相应的操作仅需要简单且快速工作的逻辑元件或操作,因此通过考虑用于确定逻辑索引的MSB,可以在实现高性能的同时执行该操作。换句话说,直接将k的二进制表示的MSB指示给相关的存储块。
存储块k的逻辑索引可以特别对应于k的二进制表示中MSB的有效值。例如,块3的二进制表示为100bin,因为从最右边位开始时,MSB在第三个数字处为1。换句话说,为了确定逻辑索引,位数从右到左计数,包括最左边的非零位。位数对应于存储块的逻辑索引。
将存储空间附加到阵列时,为阵列分配额外的物理地址空间。该附加的物理地址空间被称为存储块。为了解决该额外的物理地址空间并使虚拟存储连续性成为可能,为任一额外的存储块都分配一个逻辑索引。
根据本发明的另一实施例,所述存储器管理模块用于将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。
存储器管理模块可以保存一个表,其具有阵列的逻辑索引和相应块的对应物理地址,以便轻易地确定存储器模块中的物理存储位置。由于该表及其内容是连续的,而该存储块的物理地址不需要连续,因此该表使虚拟存储连续性成为可能。
根据本发明的另一实施例,所述存储器管理模块用于确定存储块k中阵元i的偏移量o。
由于一种用于与之前相比对任一后续存储块的尺寸进行加倍的方法,每个存储块中可用的存储空间随着每个存储块的增加而增加,即存储块的数量越多,其中可用的存储空间也就越多。因此,可以在一个块中存储越来越多的阵元。为了直接访问阵元,需要存储块的索引以及存储块中阵元的偏移量。
根据本发明的另一实施例,所述存储器管理模块用于通过确定i的值与所有存储块0至存储块(k-1)中阵元之和之间的差值,确定存储块k中阵元i的所述偏移量o。
存储块1具有一个阵元的容量,而存储块2具有两个阵元的容量,存储块3具有四个阵元的容量等。总之,前三个块有七个阵元的容量。例如,阵元9位于第四存储块中(9的二进制表示为1001bin,因此,MSB在右边第四位),并且其在第四存储块内的偏移量为2(第一、第二和第三存储块的总容量为7,因此,阵元9的偏移量为9–7=2)。
根据本发明的另一实施例,所述存储器管理模块用于将所述阵元的所述偏移量o分配给所述存储器模块中所述阵元的物理地址。
这样,可以快速访问阵元。
根据本发明的另一实施例,所述存储器管理模块用于确定每个存储块k的物理起始地址;将所述物理起始地址存储在元数据阵列中。
根据本发明的另一实施例,所述存储器管理模块用于将存储块k和k+1的所述物理起始地址存储在所述元数据阵列的连续位置中。
通过连续的顺序将存储器器块的物理起始地址存储在元数据阵列中,即使存储块遍布在物理存储空间内,也可以有效地实现存储连续性。
根据本发明的另一实施例,提供了一种用于管理数据存储设备中数据的方法。该方法包括以下步骤:在第一步骤中,将存储器模块的存储空间分配给存储块;将所述存储块分配给阵列,其中,所述阵列包括至少一个阵元;在第二步骤中,将存储块k分配给所述阵列,以存储阵元;在第三步骤中,在存储块k的所述存储空间满时,将存储块k+1分配给所述阵列,以存储阵元;在第四步骤中,在所述第三步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第二步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。
应该注意的是,这些步骤并非需要按照指定的顺序进行。“第一步骤”、“第二步骤”等编号用于指示和识别步骤,而不是用于暗示执行的顺序。
由于块k+1的尺寸是存储块k尺寸的两倍,因此所述方法支持动态增长的阵列。支持大尺寸的阵列,并且如果将新的存储块附加到现有的阵列上,尤其不需要存储器复制。特别地,由于任一存储块都可以物理地存储在独立于分配给一个阵列的其他存储块的存储器模块中,因此通过该方法消除了存储连续性的需求(即,具有存储在连续存储地址空间中的完整阵列)。然而,为了存储相应的存储块,在一些实施例中可能需要或至少偏爱连续的存储空间。因此,消除了阵列扩展期间复制现有数据的必要性,降低了阵列管理的数据管理开销。
由于存储器模块中阵元的组织和布置,即使将阵列进行分段并将阵列的分段存储在存储器模块中不同的地址空间或位置中,本文描述的方法也能够访问阵元。特别地,这是由于块k+1的尺寸是块k尺寸的两倍。
此外,在将存储块k+1分配给阵列之后,保留存储在存储块k中的阵元。这意味着通过避免复制阵元,避免阵列容量扩展期间的开销。存储块可以在存储器模块中物理分离,即存储块k+1的地址空间不直接附加到存储块k的地址空间。
这里描述的方法可以支持更大的缓冲器,可以在存储器使用中允许更多的灵活性。该方法允许一种有效的方式进行阵列分配而无需开销或降低存储器复制的开销,这对于流式数据并行环境可能至关重要。计算机器或存储器管理模块的标准分配过程可以用于实现上述功能。因此,可以支持更大尺寸的动态可扩展存储器阵列。
对于进一步的定义和解释,参考数据存储设备。类似地,这些定义适用于该方法。
根据本发明一实施例,该方法还包括以下步骤:提取k的所述二进制表示的最高有效位;确定所提取的最高有效位在k的所述二进制表示中的位置,其中,所述位置用作存储块k的逻辑索引。
该位置可以是从右到左的位数,包括最高有效位,即最左边的非零位。因此,包含阵元的存储块的逻辑索引可以通过需要低计算能力和资源的操作确定。
根据本发明一实施例,该方法还包括以下步骤:将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。
因此,使虚拟存储连续性成为可能。
根据本发明一实施例,该方法还包括以下步骤:通过确定i的值与所有存储块0至存储块(k-1)中阵元之和之间的差值,确定存储块k中阵元i的所述偏移量o。
如结合数据存储设备的示例性描述,该方法使得能够将阵元的数量“地址转换”为存储块的数量以及该块内阵元的偏移量。
根据本发明一实施例,该方法还包括以下步骤:确定每个存储块k的物理起始地址;将所述物理起始地址存储在元数据阵列中。
这通过使用升序逻辑索引支持虚拟连续性,同时可以对具有相应内容的物理地址空间进行分段。根据本发明一实施例,将存储块k和k+1的所述物理起始地址存储在所述元数据阵列的连续位置中。
换句话说,可以对这里描述的数据存储设备和方法总结如下:
(a)使用多个尺寸为2i的存储块B_i表示数据阵列A。
(b)指向块的指针在单个阵列P中。
(c)使用索引转换实现对数据阵列A的索引访问。
(d)如果I是A的索引,则将其转换为指针索引k和行偏移量o,如下所示:
k=MSB(I+1):MSB=I中的最高有效位,o=i+1–2k。(1)
(e)通过保持一个指向块项的指针并在到达每个块的末尾时对块进行切换,实现对A的迭代访问。
下面将结合一般概念解释这里描述的数据存储设备和方法的一个方面。公式s(k)=2k适用于(索引k的)下一个存储块。将非常常见的公式CA*k+B作为k块大小的起点。显然,C应该在1以上,A在0以上,B是非负的:
CA*K+B;C>1,A>0,B≥0。(2)
特别地,这里将解释C≠2和A≠1的情况。对于数据在存储器中的二进制物理表示以及C≠2,必须对存储块的A≠1个物理索引和块中的偏移量进行直接计算,产生O(N)的计算复杂度,其中,N是分配的块的数量。
其中,sk是具有k个块的阵列的容量,ck=CA*k+B。值得注意的是(1)的计算复杂度为O(1)。因此,在存储器中数据的二进制物理表示的情况下,保持C=2以及(2)中的A=1对于最优性能是很重要的。仍然可以将(2)中的B改为B>0,以便对初始存储块的尺寸进行“更改”。这会导致适当的更改,如下所示:
其中,B>0。(4)
假设可以预测该存储器中最少的待处理流,这种替代方案可以更优化对存储器的使用,降低存储块元数据的开销。
此外,如果在存储器中存在具有数据的D元物理表示的环境,其中,D>2(如D=3:三元组;D=4:四元组等),则适用以下内容(适应D元逻辑基础):
其中,MSD是获取存储器中数据的给定D元物理表示的最高有效位的适当过程。
所描述的设备和方法在阵列扩展期间不需要存储器复制,并且可以比用于动态可扩展阵列的传统方法更快而不需要可用的空间复用。因此,对存储器分段依赖较少。上述方法可以使用基本的存储器分配例程得以实现,并且可以不依赖于专门的非通用方法。就分配阵列的的尺寸而言,该设备和方法可以超过现有技术2倍以上。
附图说明
本发明实施例将结合以下附图进行描述,其中:
图1示意性地示出了根据本发明的示例性实施例的数据存储设备;
图2示意性地示出了物理存储空间到存储块的分配;
图3示意性地示出了在物理存储空间中对阵列的尺寸进行扩展;
图4示意性地示出了根据本发明的数据存储设备和方法中存储块索引的逻辑表示;
图5示意性地示出了根据本发明示例性实施例的数据存储设备和方法中逻辑索引和物理存储空间的分配;
图6示意性地示出了根据本发明示例性实施例的数据存储设备中存储块内的逻辑索引、存储块以及阵元的偏移量之间的关系。
具体实施方式
图1示出了包括存储器模块100和存储器管理模块110的数据存储设备10。所述存储器管理模块110用于:将所述存储器模块100的存储空间分配给存储块;将所述存储块分配给阵列,其中,所述阵列包括至少一个阵元。所述存储器管理模块110用于:在第一步骤中将存储块k分配给所述阵列,以存储阵元;在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元。所述存储器管理模块110用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。
图2示出了用于将存储空间200分配给用于存储阵列220的存储块210的存储器模块100中物理存储空间200的使用。物理存储空间200可以称为“堆”,可以是连续的物理存储地址空间。将存储块210分配给物理存储地址空间内的特定地址空间。该阵列可能包含元数据,例如,阵列的尺寸和状态或阵列的部分以及包含用户数据的数据部分。
图3大致示出了参考物理存储空间200扩展阵列容量的过程。存储在存储块210A中的阵列需要更高的容量,参见标记为“新尺寸”的虚线垂直线。计算机或任一其他数据存储设备的***调用(“Realloc”)将额外的存储空间分配给存储块210A,使得其具有新的尺寸210B,其中,空闲空间现在更小。在传统方法中,如果新尺寸存储块210B在物理上不适合旧尺寸存储块210A的位置,则将存储块210A的内容复制到新位置。这种存储器复制通常是为了实现存储连续性而进行的,即不对存储在存储块中的阵列进行分段。
图4示出了根据本发明的数据存储设备100中和/或根据本发明的方法中阵列的逻辑表示。存储连续性是通过提供分配给阵列的存储块的逻辑表示实现的。为了访问阵列,首先访问逻辑表示。因此,物理存储位置与阵列的逻辑表示分离。可以对分配的存储块和阵列进行物理分段而其逻辑表示是连续的。换句话说,与存储器的物理层相比,实现了更高水平的存储连续性。
图5示出了存储器模块和分配的存储块的物理表示的示意性总述。逻辑索引240用于指向用户数据,即指向包含阵元的存储块。可以看出,第一存储块包含一个字段(标记为“0”),第二存储块包含两个字段(标记为“1”和“2”)。每个存储块的尺寸在右侧指出。任一连续存储块的尺寸是其前一个的两倍。元数据包含指向存储块的用户数据的指针。
这里描述的方法涉及分布式阵列分配。每个新分配的存储块(块)具有2的幂的大小,即是前一个的两倍,并作为单独的阵列进行维护。该方法消除了存储连续性的需求,因此不必在阵列扩展期间复制现有的数据。
为了能够处理一组组成整个动态阵列的块,需要一个机制将该阵列中任一元件的逻辑索引转换为该元件的物理地址。这可以通过以阵列形式引入元数据并保存分配的块的地址得以实现。图6示出了一种将逻辑索引转换为指向存储块的指针的方法。由于对尺寸为2k的块进行分配,因此k个块的总容量可以评估为2k-1。因此,包含索引i的元件的块将具有2k-1<i≤2k+1-1的索引k。换句话说,对于2k的块尺寸,k是(i+1)的最高有效位。除了块地址之外,还需要特定块k中具有逻辑索引i的给定元件的偏移量o。该偏移量等于i与之前块2k-1的容量之间的差值。最后:
k=MSB(i+1)
o=i+1-3k
地址阵列具有有限且可预测的尺寸,因为块的尺寸以几何竖列增长,覆盖多个块中任一实际尺寸的动态阵列。例如,7GB的阵列可以分配在:
总共33个块,从尺寸为1(20,即k=0)的第一块开始。
参考图6,将描述一种用于确定存储块中阵元的偏移量o的替代方案。存储器管理模块可以用于通过确定i的二进制表示以及确定MSB右侧的位的值,确定存储块k中阵元i的偏移量o。这个实施例可能需要为第一存储块分配逻辑索引0(参见图6中表格的第1行),同时作为定义为其分配分配1bin的二进制表示。因此,逻辑索引9的二进制表示是1010bin,MSB的右侧的位是010,该二进制表示的值是2,其对应于块3中的元件9的偏移量。通过仅考虑逻辑索引的二进制表示,该方法能够快速确定存储块中阵元的偏移量。
参考标志的列表
10 数据存储设备
100 存储器模块
110 存储器管理模块
200 存储空间
210 存储块
220 阵列
230 阵元
240 逻辑索引。
Claims (13)
1.一种数据存储设备(10),其特征在于,包括:
存储器模块(100);
存储器管理模块(110);其中:
所述存储器管理模块(110)用于:将所述存储器模块(100)的存储空间(200)分配给存储块(210);将所述存储块分配给阵列(220),其中,所述阵列(220)包括至少一个阵元(230);
在第一步骤中将存储块k分配给所述阵列,以存储阵元;
在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元;
在所述第二步骤中分配的额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,
存储块k+1的尺寸是存储块k尺寸的两倍;
根据所述存储块k中阵元i的二进制表示的最高有效位右侧的位所表示的值确定所述阵元i的偏移量o。
2.根据权利要求1所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于通过考虑所述k的二进制表示的最高有效位确定存储块k的逻辑索引(240)。
3.根据权利要求2所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。
4.根据权利要求3所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于通过确定i的值与所有存储块0至存储块(k-1)中阵元之和之间的差值,确定存储块k中阵元i的所述偏移量o。
5.根据权利要求1-4任一项所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于将所述阵元的所述偏移量o分配给所述存储器模块中所述阵元的物理地址。
6.根据权利要求1-4任一项所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于确定每个存储块k的物理起始地址;将所述物理起始地址存储在元数据阵列中。
7.根据权利要求6所述的数据存储设备(10),其特征在于,
所述存储器管理模块(110)用于将存储块k和k+1的所述物理起始地址存储在所述元数据阵列的连续位置中。
8.一种用于管理数据存储设备中数据的方法,其特征在于,包括以下步骤:
在第一步骤中,将存储器模块的存储空间分配给存储块;将所述存储块分配给阵列,其中,所述阵列包括至少一个阵元;
在第二步骤中,将存储块k分配给所述阵列,以存储阵元;
在第三步骤中,在存储块k的所述存储空间满时,将存储块k+1分配给所述阵列,以存储阵元;
在第四步骤中,在所述第三步骤中分配的额外阵元存储在存储块k+1中时,将所述第二步骤中分配的所述阵元保留在存储块k中,其中,
存储块k+1的尺寸是存储块k尺寸的两倍;
根据所述存储块k中阵元i的二进制表示的最高有效位右侧的位所表示的值确定所述阵元i的偏移量o。
9.根据权利要求8所述的方法,其特征在于,
还包括以下步骤:提取所述k的二进制表示的最高有效位;确定所提取的最高有效位在k的所述二进制表示中的位置,其中,所述位置用作存储块k的逻辑索引。
10.根据权利要求9所述的方法,其特征在于,
还包括以下步骤:将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。
11.根据权利要求8至10任一项所述的方法,其特征在于,
还包括以下步骤:通过确定i的值与所有存储块0至存储块(k-1)中阵元之和之间的差值,确定存储块k中阵元i的所述偏移量o。
12.根据权利要求8至10任一项所述的方法,其特征在于,
还包括以下步骤:确定每个存储块k的物理起始地址;将所述物理起始地址存储在元数据阵列中。
13.根据权利要求12所述的方法,其特征在于,
将存储块k和k+1的所述物理起始地址存储在所述元数据阵列的连续位置中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2015/000658 WO2017061894A1 (en) | 2015-10-09 | 2015-10-09 | Conversion of data streams into arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139967A CN108139967A (zh) | 2018-06-08 |
CN108139967B true CN108139967B (zh) | 2021-07-20 |
Family
ID=55967385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580083404.4A Active CN108139967B (zh) | 2015-10-09 | 2015-10-09 | 将数据流转换为阵列 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108139967B (zh) |
WO (1) | WO2017061894A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928839A (zh) * | 2005-09-09 | 2007-03-14 | 中国科学院计算技术研究所 | 一种远程内存服务器及其实现方法 |
CN101630337A (zh) * | 2009-07-28 | 2010-01-20 | 浪潮电子信息产业股份有限公司 | 一种提高芯片成品率的实现方法 |
CN103473181A (zh) * | 2007-01-26 | 2013-12-25 | 海坎普***股份有限公司 | 分级式不可变内容可寻址存储器处理器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539464B1 (en) * | 2000-04-08 | 2003-03-25 | Radoslav Nenkov Getov | Memory allocator for multithread environment |
WO2011099284A1 (ja) * | 2010-02-15 | 2011-08-18 | 株式会社エスグランツ | 区画管理装置、区画管理方法及びプログラム |
US9009414B2 (en) * | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
US8472350B2 (en) * | 2010-12-31 | 2013-06-25 | Telefonaktiebolaget L M Ericsson (Publ) | Bank aware multi-bit trie |
US9542307B2 (en) * | 2012-03-02 | 2017-01-10 | Hewlett Packard Enterprise Development Lp | Shiftable memory defragmentation |
US9189382B2 (en) * | 2013-05-08 | 2015-11-17 | Red Hat, Inc. | Noncontiguous representation of an array |
CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存***和方法 |
-
2015
- 2015-10-09 CN CN201580083404.4A patent/CN108139967B/zh active Active
- 2015-10-09 WO PCT/RU2015/000658 patent/WO2017061894A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928839A (zh) * | 2005-09-09 | 2007-03-14 | 中国科学院计算技术研究所 | 一种远程内存服务器及其实现方法 |
CN103473181A (zh) * | 2007-01-26 | 2013-12-25 | 海坎普***股份有限公司 | 分级式不可变内容可寻址存储器处理器 |
CN101630337A (zh) * | 2009-07-28 | 2010-01-20 | 浪潮电子信息产业股份有限公司 | 一种提高芯片成品率的实现方法 |
Non-Patent Citations (1)
Title |
---|
面向可重构阵列结构的任务调度算法研究;郭力;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120215;I135-357 * |
Also Published As
Publication number | Publication date |
---|---|
CN108139967A (zh) | 2018-06-08 |
WO2017061894A1 (en) | 2017-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10394847B2 (en) | Processing data in a distributed database across a plurality of clusters | |
CN109725846B (zh) | 存储器***及控制方法 | |
US8819386B1 (en) | Memory efficient use of dynamic data structures used to manage sparsely accessed data | |
US9459806B2 (en) | Combining virtual mapping metadata and physical space mapping metadata | |
JP2020046963A (ja) | メモリシステムおよび制御方法 | |
US9361215B2 (en) | Memory allocation improvements | |
US10824555B2 (en) | Method and system for flash-aware heap memory management wherein responsive to a page fault, mapping a physical page (of a logical segment) that was previously reserved in response to another page fault for another page in the first logical segment | |
US11392571B2 (en) | Key-value storage device and method of operating the same | |
US20180285376A1 (en) | Method and apparatus for operating on file | |
US20170004069A1 (en) | Dynamic memory expansion by data compression | |
US11372564B2 (en) | Apparatus and method for dynamically allocating data paths in response to resource usage in data processing system | |
WO2021244155A1 (zh) | 一种进程间通信方法以及进程间通信装置 | |
US20210141721A1 (en) | System and method for facilitating efficient utilization of nand flash memory | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN112241320A (zh) | 资源分配方法、存储设备和存储*** | |
WO2024078429A1 (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
WO2022120522A1 (zh) | 内存空间的分配方法、装置及存储介质 | |
CN114064588A (zh) | 存储空间调度方法及*** | |
US9740604B2 (en) | Method for allocating storage space using buddy allocator | |
CN115658561B (zh) | 配电终端内存管理方法、装置、电子设备及存储介质 | |
US12019629B2 (en) | Hash-based data structure | |
US11960723B2 (en) | Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD) | |
CN108139967B (zh) | 将数据流转换为阵列 | |
US11429519B2 (en) | System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive | |
US11113000B2 (en) | Techniques for efficiently accessing values spanning slabs of memory |
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 |