将数据流转换为阵列制造技术

技术编号:18179004 阅读:24 留言:0更新日期:2018-06-09 20:51
提供了一种数据存储设备(10),包括存储器模块(100)和存储器管理模块(110)。所述存储器管理模块(110)用于:将所述存储器模块(100)的存储空间(200)分配给存储块(210);将所述存储块分配给阵列(220),其中,所述阵列(220)包括至少一个阵元(230)。所述存储器管理模块(110)用于:在第一步骤中将存储块k分配给所述阵列,以存储阵元;在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元。所述存储器管理模块(110)用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。

【技术实现步骤摘要】
【国外来华专利技术】将数据流转换为阵列
本专利技术涉及数据处理领域。特别地,本专利技术涉及一种数据存储设备以及一种用于管理数据存储设备中数据的方法。
技术介绍
在线流处理是大数据处理的一部分。通常,它应该与批量数据并行处理(流的分块处理)进行交互操作。在批量处理之前,应将流转换为类似阵列的数据结构(数据块)。在很多情况下,块的尺寸并不是事先知道的。这意味着阵列应该是“可附加的”,即,应该能够非常快速地增长,换句话说,可以动态扩展。在并行数据处理场景中,可以通过不同的方式访问阵列:(a)定期访问,这与减少标量、阵列映射、过滤等有关。(b)许多场景中的不定期访问,如子阵列切片、排列、其他索引访问;稀疏数据结构(如稀疏向量);使用基于块的阵列处理进行并行数据处理。存在几种现有的分配阵列的方法。其中一种方法是基于并使用系统调用,例如Malloc/Memcpy/Free。另一种方法可能被称为优化的Realloc系统调用,实现了相比以前更高的性能,是一种使用动态阵列的流行方式。现有的方法可以概括如下:Realloc试图在堆中的数据块之后复用可用的空间,即可用的存储空间。如果没有空间可用,那么Realloc通过分配/复制/释放存储块这种简单且非高效的方式进行操作。因此,可能在具有零碎存储器的系统中造成显着的开销。Realloc不是一种通用的方法。例如,JavaVM没有Realloc对等物。此外,通过平坦、连续的方式分配阵列会对分配阵列的尺寸造成实际限制。在一些现有技术方法中,当对阵列进行动态地扩展(从原始阵列的原始尺寸到扩展阵列的扩展尺寸)时,原始阵列的内容从一个存储器位置复制到另一个存储器位置,该位置提供足够的物理存储空间,以避免阵列的物理残片,即避免阵列碎片化,碎片存储在物理存储器的不同物理位置。原始阵列的这种复制过程可以称为存储器复制。
技术实现思路
可见,本专利技术的目标在于在管理动态可扩展阵列时减少数据处理的开销。该说明书提出了一种将数据流有效转换成阵列的方法。它基于在物理存储器中分配阵列的特定规则。根据本专利技术的第一方面,提供了一种数据存储设备,包括存储器模块和存储器管理模块。所述存储器管理模块用于:将所述存储器模块的存储空间分配给存储块;将所述存储块分配给阵列,其中,所述阵列包括至少一个阵元。所述存储器管理模块还用于:在第一步骤中将存储块k分配给所述阵列,以存储阵元;在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元。所述存储器管理模块用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。上文和下文中提及的存储器模块涉及用于存储数据的任一存储器模块,例如,随机存取存储器(randomaccessmemory,简称RAM)或任一其他数据存储组件,其用于动态存储数据,即在数据处理装置的操作期间存储数据。存储器管理模块涉及功能模块,该功能模块用于发送请求或发起系统调用,其将空闲的存储空间分配给阵列或对存储空间进行重新分配,以将新块附加到现有的阵列。存储器管理模块可以是用于执行之前提到的相应功能的硬件组件。存储块涉及存储块,特别地,可以是存储器模块中的存储空间数量。一个阵列至少包含一个阵元,阵元包含要存储的数据。阵元可能是访问存储在阵列中的数据时可寻址的最小逻辑单元。本说明书上下文中的可扩展或可附加的阵列涉及阵列,其尺寸可以改变,特别地,通过附加新的逻辑阵元可以增加其尺寸。所述阵元需要将额外的物理存储空间附加到阵列已经使用的地址空间。由于块k+1的尺寸是存储块k尺寸的两倍,因此数据存储设备支持动态增长的阵列。支持大尺寸的阵列,并且如果将新的存储块附加到现有的阵列上,尤其不需要存储器复制。特别地,由于任一存储块都可以物理地存储在独立于分配给一个阵列的其他存储块的存储器模块中,因此通过该方法消除了存储连续性的需求(即,具有存储在连续存储地址空间中的完整阵列)。然而,为了存储相应的存储块,在一些实施例中可能需要或至少偏爱连续的存储空间。因此,消除了阵列扩展期间复制现有数据的必要性,降低了阵列管理的数据管理开销。由于存储器模块中阵元的组织和布置,即使将阵列进行分段并将阵列的分段存储在存储器模块中不同的地址空间或位置中,本文描述的方法也能够访问阵元。特别地,这是由于块k+1的尺寸是块k尺寸的两倍。此外,在将存储块k+1分配给阵列之后,保留存储在存储块k中的阵元。这意味着通过避免复制阵元,避免阵列容量扩展期间的开销。存储块可以在存储器模块中物理分离,即存储块k+1的地址空间不直接附加到存储块k的地址空间。这里描述的数据存储设备可以支持更大的缓冲器,可以在存储器使用中允许更多的灵活性。换句话说,这里描述的方法可以称为包括处理器和存储器的存储系统或存储管理系统,其中,所述系统由于将多个数据流转换为基于阵列的数据结构以存储在所述存储器中。为此,系统实现了结合数据存储设备所描述的功能。数据存储设备允许一种有效的方式进行阵列分配而无需开销或降低存储器复制的开销,这对于流式数据并行环境可能至关重要。计算机器或存储器管理模块的标准分配过程可以用于实现上述功能。因此,可以支持更大尺寸的动态可扩展存储器阵列。根据本专利技术一实施例,所述存储器管理模块用于通过考虑k的所述二进制表示的最高有效位确定存储块k的逻辑索引。最高有效位(mostsignificantbit,简称MSB)是数字k的二进制表示中最左边的非零位,其中,最左边的位具有最高的有效性或最高的位置值。可以将存储块的逻辑索引视为指示阵列中存储块数量的指针。由于相应的操作仅需要简单且快速工作的逻辑元件或操作,因此通过考虑用于确定逻辑索引的MSB,可以在实现高性能的同时执行该操作。换句话说,直接将k的二进制表示的MSB指示给相关的存储块。存储块k的逻辑索引可以特别对应于k的二进制表示中MSB的有效值。例如,块3的二进制表示为100bin,因为从最右边位开始时,MSB在第三个数字处为1。换句话说,为了确定逻辑索引,位数从右到左计数,包括最左边的非零位。位数对应于存储块的逻辑索引。将存储空间附加到阵列时,为阵列分配额外的物理地址空间。该附加的物理地址空间被称为存储块。为了解决该额外的物理地址空间并使虚拟存储连续性成为可能,为任一额外的存储块都分配一个逻辑索引。根据本专利技术的另一实施例,所述存储器管理模块用于将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。存储器管理模块可以保存一个表,其具有阵列的逻辑索引和相应块的对应物理地址,以便轻易地确定存储器模块中的物理存储位置。由于该表及其内容是连续的,而该存储块的物理地址不需要连续,因此该表使虚拟存储连续性成为可能。根据本专利技术的另一实施例,所述存储器管理模块用于确定存储块k中阵元i的偏移量o。由于一种用于与之前相比对任一后续存储块的尺寸进行加倍的方法,每个存储块中可用的存储空间随着每个存储块的增加而增加,即存储块的数量越多,其中可用的存储空间也就越多。因此,可以在一个块中存储越来越多的阵元。为了直接访问阵元,需要存储块的索引以及存储块中阵元的偏移量。根据本专利技术的另一实施例,所述存储器管理模块用于通过确定i的值与所有存储块0至存储本文档来自技高网
...
将数据流转换为阵列

【技术保护点】
一种数据存储设备(10),其特征在于,包括:存储器模块(100);存储器管理模块(110);其中:所述存储器管理模块(110)用于:将所述存储器模块(100)的存储空间(200)分配给存储块(210);将所述存储块分配给阵列(220),其中,所述阵列(220)包括至少一个阵元(230);所述存储器管理模块(110)用于在第一步骤中将存储块k分配给所述阵列,以存储阵元;所述存储器管理模块(110)用于在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元;所述存储器管理模块(110)用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。

【技术特征摘要】
【国外来华专利技术】1.一种数据存储设备(10),其特征在于,包括:存储器模块(100);存储器管理模块(110);其中:所述存储器管理模块(110)用于:将所述存储器模块(100)的存储空间(200)分配给存储块(210);将所述存储块分配给阵列(220),其中,所述阵列(220)包括至少一个阵元(230);所述存储器管理模块(110)用于在第一步骤中将存储块k分配给所述阵列,以存储阵元;所述存储器管理模块(110)用于在存储块k的所述存储空间满时,在第二步骤中将存储块k+1分配给所述阵列,以存储阵元;所述存储器管理模块(110)用于在所述第二步骤中分配的所述额外阵元存储在存储块k+1中时,将所述第一步骤中分配的所述阵元保留在存储块k中,其中,存储块k+1的尺寸是存储块k尺寸的两倍。2.根据权利要求1所述的数据存储设备(10),其特征在于,所述存储器管理模块(110)用于通过考虑k的所述二进制表示的最高有效位确定存储块k的逻辑索引(240)。3.根据权利要求2所述的数据存储设备(10),其特征在于,所述存储器管理模块(110)用于将存储块k的所述逻辑索引分配给所述存储器模块中存储块k的物理地址。4.根据上述权利要求中任一项所述的数据存储设备(10),其特征在于,所述存储器管理模块(110)用于确定存储块k中阵元i的偏移量o。5.根据权利要求4所述的数据存储设备(10),其特征在于,所述存储器管理模块(110)用于通过确定i的值与所有存储块0至存储块(k-1)中阵元之和之间的差值,确定存储块k中阵元i的所述偏移量o。6.根据权利要求4或5所述的数据存储设备(10),其特征在于,所述存储器管理模块(110)用于将所述阵元的所述偏移量o分配给所述存储器模块中所述阵元的物理地址。7.根据上述权利要求中任一项所述的数据...

【专利技术属性】
技术研发人员:亚历山大·弗拉基米罗维奇·斯莱萨连科维克多·弗拉基米罗维奇·斯米尔诺夫张洪波
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1