CN113688063B - 一种在存储器中为数据分配存储地址的方法和设备 - Google Patents
一种在存储器中为数据分配存储地址的方法和设备Info
- Publication number
- CN113688063B CN113688063B CN202010421439.7A CN202010421439A CN113688063B CN 113688063 B CN113688063 B CN 113688063B CN 202010421439 A CN202010421439 A CN 202010421439A CN 113688063 B CN113688063 B CN 113688063B
- Authority
- CN
- China
- Prior art keywords
- storage space
- node
- data
- space
- nodes
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种在存储器中为数据分配存储地址的方法、设备和计算装置,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。本公开的技术方案能够提高存储器的存储空间利用率。
Description
技术领域
本发明涉及计算机领域,更具体地,涉及存储空间的管理。
背景技术
深层神经网络(DNN)已广泛用于各种应用,例如计算机视觉,语音识别,机器翻译和机器人技术,因为与传统的机器学习方法相比,其准确性有较大提高。但是,DNN的性能优势是以极高的计算和内存复杂性为代价的,底层硬件架构面临的挑战。为了提高DNN处理的效率,已经提出了各种专用加速器,以提供能够比通用架构(例如CPU和GPU)更好的性能和效能。
专用神经网络加速器通常需要各种新颖的架构组件,包括控制逻辑(例如,DianNao采用了带有专用控制指令的控制处理器,而Eyeriss采用了两级控制层级),计算单元(例如,DianNao采用16个固定的固定的功能单元来利用智能应用的容错特征)以及应用程序)和存储器层级(例如,DianNao建议对神经元和权重使用单独的片上存储)。
现有技术的暂存存储器(SPM)对于灵活控制昂贵的数据转移至关重要。在神经网络加速器中使用SPM有三个原因:1)就性能、功率和面积而言,SPM的硬件开销相对于硬件管理的缓存而言更低;2)SPM编程的灵活性可以为挖掘性能和能量提供更多机会;3)额外的编程工作不会给程序员带来太多负担,因为与具有复杂控制流的通用应用程序相比,神经网络应用的执行模式相对规则。
但是,SPM的管理工作并不专门针对神经网络加速。现有工作的关键思想是将SPM的管理表达为作为寄存器分配问题,并且已经使用了各种技术,例如存储器着色(menorycoloring),图形着色(graph coloring),整数线性规划(ILP)和ILP的延伸等。
这样的技术非常适合寄存器分配,但对NN加速器的SPM管理效率低下。主要原因是寄存器(包括标量和向量寄存器)的长度是固定的,而NN加速器中SPM的内存请求通常具有可变长度以实现高效率。因此,如果将现有技术应用于NN加速器的SPM管理,那么寄存器和SPM之间的区别功能导致效率低下。
由此可见,现有技术中存在的问题是空间利用率较低,容易产生较多的存储空间碎片。
发明内容
本公开的目的之一是解决现有技术中的空间利用率低,存储空间碎片化的问题。
根据本公开的第一方面,提供一种在存储器中为数据分配存储地址的方法,包括:接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;根据接收到的所述空间分配请求来为数据分配目标存储空间;以及基于所分配的目标存储空间,为所述数据分配存储地址。
根据本公开的第二方面,提供一种对存储空间进行管理的方法,包括:形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
根据本公开的第三方面,提供一种在存储器中为数据分配存储空间的方法,包括:接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
根据本公开的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开的第五方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案所实现的技术效果之一包括:能够较大地提升存储器中存储空间的利用率,降低存储器消耗。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1a示出了一般的神经网络运算示意图;
图1b示出了根据图1a的运算过程分配存储空间的一种示例;
图1c示出了根据图1a的运算过程分配存储空间的另外一种示例;
图1d给出了一种理想的存储空间分配的方法;
图2a示出了根据本公开一个实施方式的在存储器中为数据分配存储地址的方法流程图;
图2b示出了根据本公开的一个实施方式为数据分配存储空间和释放存储空间的示例性指令集合;
图3示出了建立该树状结构的一种方法的流程图;
图4a-图4d示出了根据本公开一个实施方式的树状结构示意图;
图5示出了根据本公开的优选实施方式一个实施方式的为数据分配目标存储空间的示意图;
图6a示出了根据本公开的一个实施方式的创建新节点的方法流程图;
图6b示出了根据图6a所示的方法流程图创建的新节点的示意图;
图6c示出了根据图6a所示的方法流程图创建的新节点的示意图;
图7示出了根据本公开的一个实施方式的为存储空间分配地址的示意图;
图8示出了根据本公开的一个实施方式的对存储空间进行管理的方法;
图9示出了根据本公开的一个实施方式的在存储器中为数据分配存储空间的方法;
图10示出了根据本公开的技术方案与其他三种技术方案(BF方案、GC方案和理想方案)在不同应用场景下空间使用数量的对比;
图11示出了一种组合处理装置的示意性框图;以及
图12示出了一种板卡的示意性框图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
图1a-图1d示出了一种多种不同的内存分配方法的示意图,其中图1a示出了一般的神经网络运算示意图。
如图1a所示,该卷积神经网络包括了数据D1-D4,符号Conv表示卷积运算,由此D2=Conv(D1),D3=Conv(D2)以及D4=Conv(D3),其中,例如D1为16比特,D2为8比特,D3为24比特,D4为32比特。在不断地进行卷积运算过程中,需要为参与运算的数据分配存储空间,并且将历史数据占用的空间释放。
图1b示出了根据图1a的运算过程分配存储空间的一种示例,该示例称为最佳匹配法(best fit,BF)。
在图1b中,首先为数据D1和D2分配地址;当进行第二个卷积运算那时,可以释放D1所占据的空间,并且为数据D3分配存储空间;类似地,当进行第三个卷积运算时,可以释放D2的空间,并且进一步为D4分配存储空间。在1b所示的方案中,将会产生大量的空间碎片,从而降低了存储空间的利用率。
图1c示出了根据图1a的运算过程分配存储空间的另外一种示例,该示例称为图形着色(graph coloring,GC)。
如图1c所示,存储空间被划分为多个类,Regclass32表示容量为32比特的空间,Regclass24表示容量为24比特的空间,Regclass16表示容量为16比特的空间,而Regclass8表示容量为8比特的空间。在此情况下,数据D1-D4将根据大小的不同被划分到不同的分类中,例如数据D1被存储在Regclass16中的R16,0空间,数据D2被存储在Regclass8中的R8,4空间,数据D3被存储在Regclass24中的R24,0空间,而数据D4被存储在Regclass32中的R32,1空间。在这种分配方式下,仍然会产生大量的碎片,特别是当某个数据的大小小于某个类而大于另外一个类时,则存储空间的碎片化更加明显。例如,如果某数据的大小为20比特,则其应当存储在Regclass24,由此造成4比特的空间浪费。
图1d给出了一种理想的存储空间分配的方法,该理想的分配方法是空间分配的极限。
如图1d所示,首先,为数据D1和D2分配存储空间,这两个存储空间如其他方法一样处于紧邻状态。接下来,数据D1占用的空间被释放,并且需要存储数据D3。在理想状态下,数据D3的存储空间应当如图1d所示,为数据D4预留出相应的空间;当需要存储数据D4的时候,为数据D4预留的空间刚好与数据D3的空间紧邻,从而减少碎片的发生,并且减少数据寻址的跳变。但是,理想状态的实现很难,因为这需要对未来数据的大小进行预测
进一步地,将SPM管理视为传统的及存储器分配问题,在这样的方案中,空间和地址是同时确定并且分配给数据的,这也决定了现有技术在空间利用方面的局限性。
图2a示出了根据本公开一个实施方式的在存储器中为数据分配存储地址的方法流程图。图2b示出了根据本公开的一个实施方式为数据分配存储空间和释放存储空间的示例性指令集合。
如图2a所示,本公开的方法包括:在操作S210,接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;在操作S220,根据接收到的所述空间分配请求来为数据分配目标存储空间;以及在操作S230,基于所分配的目标存储空间,为所述数据分配存储地址。
需要理解的是,在上文中,空间分配请求中除了数据大小之外,还可以携带其他信息,例如资源的生存周期,该生存周期表示资源什么时候申请,什么时候释放,以及申请及释放的顺序等等。不同的顺序或导致不同的结果。
如图2b所示,按时间顺序示出了多个指令,其中指令“alloc”表示分配存储空间,而指令“dealloc”表示释放存储空间。例如,操作“alloc D1 400”、“alloc D2 100”和“alloc D3 400”分别表示为数据D1分配大小为400的存储空间,为数据D2分配大小为100的存储空间,以及为数据D3分配大小为400的存储空间。类似地,操作“dealloc D3”、“deallocD1”、“dealloc D4”、“dealloc D5”分别表示释放数据D3、D1、D4和D5所占用的空间,由此这些释放的空间可以变为可用存储空间。这些可用存储空间可以被再次分配给其他数据。
接下来,在接收到该空间分配请求之后,可以从可用存储空间中选择适当的一部分或者全部,作为目标存储空间来分配给上述的数据。需要解释的是,上面的术语“目标存储空间”是指实际分配给数据的空间。例如,当前可用存储空间为400,而一个空间分配请求是为一个数据Dx分配大小为300的数据,那么为数据Dx分配的空间则可称为目标存储空间。这样的描述仅用于在上下文中区分所指代的不同空间以便于理解,而不对本公开的技术方案造成任何的限制。需要理解的是,上面的“可用存储空间”和“目标存储空间”是一种虚拟的存储空间,可以将这些虚拟的存储空间对应到相应的数据,然后,将这些虚拟存储空间映射到实际的物理空间和地址。但上下文中为了表示这些虚拟存储空间的含义,以不同的名称来进行表述。
确定了存储空间之后,则将相应的存储地址分配给数据。存储地址可以包括起始地址和偏移量,偏移量可以是由数据的大小来决定。
在上文中,为数据分配目标存储空间的时候,将查找现有可用存储空间,以分配适当的那部分存储空间给该数据。在分配存储空间的过程中,暂时并不分配具体的存储地址。这种空间分配和地址分配相分离的方法,显著地区别于现有技术中一步就将存储空间和存储地址分配给数据的做法。
根据本公开的一个实施方式,可以建立一种树状结构,该树状结构可以包括多个节点,每个节点表示一个存储空间,可以通过遍历该存储空间来找到适合的节点来存储数据。这里所述的“适合的节点”,可以是一个节点,也可以是多个节点的组合。
需要理解的是,建立存储块之间的树状关系可以在上述的操作S210之前实现,即可以预先建立下文中将要详细描述的树状结构,也可以在操作S210之后,在操作S220之前实现,即通过空间分配请求以及空间释放的操作实时地建立这种树状结构。
图3示出了建立该树状结构的一种方法的流程图。
如图3所示,本公开的方法进一步包括:在操作S310,形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;以及,在操作S320,将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
为了方便对图3中方法的理解,下面以如下操作系列并结合图4a-图4c来详细描述树状结构的建立过程。
操作1:alloc D1 400
操作2:alloc D2 100
操作3:alloc D3 400
操作4:dealloc D3
操作5:alloc D4 300
操作6:dealloc D2
如图4a所示,首先进行初始化,以节点0作为初始节点,其中每个节点表示一个存储块,其总存储空间为0,可用存储空间为0,为方便描述,其存储属性可以表示为0(0)。
接下来,当接收到操作1的指令alloc D1 400时,在节点0下建立节点1,用于存储数据D1。因此,该节点1的总存储空间为400,可用存储空间为0,其存储属性可以表示为400(0)。
当接收到操作2的指令alloc D2 100时,在节点0下建立节点2,用于存储数据D2。因此,该节点2的总存储空间为100,可用存储空间为0,其存储属性可以表示为100(0)。
当接收到操作3的指令alloc D3 400时,在节点0下建立节点3,用于存储数据D3。因此,该节点3的总存储空间为400,可用存储空间为0,其存储属性可以表示为400(0)。
此时,初始节点0的总存储空间为900,其可用存储空间为0,其存储属性可以表示为900(0)。
可以理解的是,还可以释放存储空间,根据本公开的一个实施方式,响应于接收到空间释放请求,释放相应的节点;更新被释放节点的可用存储空间标识符。
以图4b为例来进行描述。当接收到操作4的指令dealloc D3时,将节点3的空间释放,从而节点3的可用存储空间为400,其存储属性可以表示为400(400),如图4b所示。此时,初始节点0的总存储空间为900,其可用存储空间标识仍然为0,其存储属性可以表示为900(0)。
在本公开中,所释放的空间可以被再次使用,以达到空间被充分利用的目的。由此,根据本公开的一个实施方式,根据接收到的所述空间分配请求来为数据分配目标存储空间包括:在所述树状结构的节点中检索可用存储空间;响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
以图4c为例,当接收到操作5的指令alloc D4 300时,表示要为数据D4请求分配大小为300的存储空间,此时仅有节点3中具有足够的可用存储空间400,其不小于需要分配的存储空间大小。
在此情况下,可以将数据D4直接存储在节点3的存储空间中,这种方式无需创建新的节点,但由于节点3中原先分配给数据D3的存储空间被分配给了数据D4,因此原先节点3与数据D3之间的对应关系将被擦除,这不利于后续存储关系的保存。
根据本公开的一个实施方式,响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间可以包括:在可用存储空间不小于所述数据大小的节点下创建新节点,以使得所述新节点总存储空间等于所述数据大小。
例如,可以在节点3的下级建立新节点4,其存储属性可以表示为300(0)。此时,节点3的可用存储空间为100,从而节点3的存储属性可以表示为400(100),如图4c所示。
由此,根据本公开的一个实施方式,在逻辑层面上,同一个节点只能分配一次,以保证同一个节点对应一个数据,这样可保证整个分配过程都被完整地记录下来,也便于后续进一步拆分子节点。例如节点3由于之前已经分配给数据D3,即使数据D3占用的空间被释放,当有新的数据(例如数据D4)需要占用数据D3原先占用的空间时,在逻辑上仍然要分出新的节点(例如节点4)。当然,在物理空间上,新创建的节点4仍然在节点3的物理空间的范围之内。
图4c示出了一种特殊情况,即某一个节点的可用存储空间大于需要分配的空间。图4d示出了根据本公开的另外一个实施方式的为数据分配空间的示意图。
在图4d中,节点1的总存储空间为600,可用存储空间为500,节点2的总存储空间为700,可用存储空间为600;节点3的总存储空间为800,可用存储空间为0;节点4的总存储空间为1000,可用存储空间为1000。此时,接收到一个为数据分配大小为700的存储空间的请求。在此情况下,可以有多种情形以存储该数据。
第一种方案为,利用节点4为该数据分配700的存储空间,从而在分配完之后,节点4会出现300的可用存储空间。
第二种方案为,占用节点1中的可用存储空间500,然后再从节点2或者节点4中分配200的存储空间。
第三种方案为,占用节点2中的可用存储空间600,然后再从节点1或者节点4中分配100的存储空间。
第四种方案为,可以分别从节点1、节点2和节点4中共分配大小为700的存储空间,例如可以从节点1中分配大小为200的存储空间,从节点2分配大小为300的存储空间,并从节点4分配大小为200的存储空间。
采用第一种方案的有益效果在于,能够更容易使得新分配的空间在地址上保持连续,减少数据存取过程中的地址跳变,从而提升数据存取的效率。
采用第二和第三种方案的有益效果在于,能够尽量减少碎片空间的存在。此外,利用节点1和节点2来向数据分配存储空间的方式也有利于使得数据能够存储在连续的空间中,从而减少数据存取过程中的地址跳变。
此外,在节点1和节点2的可用存储空间无法形成连续地址的情况下,第三种方案相较于第二种方案更加有利,因为更多的数据存储在节点2中,这样也有利于减少数据存取过程中的地址跳变。
根据本公开的一个实施方式,响应于在所述树状结构的节点中未搜索到其可用存储空间不小于所述数据大小的单个节点,创建新节点以使得所述单个节点与新节点的可用存储空间之和不小于所述数据。
仍然以图4d为例来进行说明。
在第五种方案中,占用节点1中的可用存储空间500,然后再申请具有可用存储空间200的新节点,节点1的可用存储空间与新节点的可用存储空间之和为700,可以容纳该数据。
在第六种方案中,占用节点2中的可用存储空间600,然后再申请具有可用存储空间100的新节点,节点2的可用存储空间与新节点的可用存储空间之和为700,可以容纳该数据。
优选地,该新节点可以与上述的单个节点形成连续的空间。
相较于第二种和第三种方案,第五种方案和第六种方案的有益效果在于,如果节点1和节点2中的空间无法连续,那么数据存取过程中的空间跳变容易引起效率低下,而第五种和第六种方案则可以通过在该节点之前或之后直接创建新节点来形成连续的空间。
更优选地,选择可用存储空间最大的单个节点,以使得创建的新节点的可用存储空间尽量小。
而第五种和第六种方案相比,因为其创建的新节点的存储空间较小,这有利于减少空间的碎片化。接下来,仍然如图4c所示,当接收到操作6的指令dealloc D2时,将节点2的空间释放,从而节点2的可用存储空间为100,其存储属性可以表示为100(100),如图4c所示。
从上面的描述中可以看出,节点(或者存储块)一旦创建,则在一定周期内即使接收到释放存储空间的指令也不会被删除,而是调整其可用存储空间标识以指示当前的可用存储空间。
图5示出了根据本公开的优选实施方式一个实施方式的为数据分配目标存储空间的示意图。
根据本公开的一个实施方式,响应于从所述树状结构的节点中搜索到与所述数据大小具有最小差值的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
如图5所示,节点0具有四个下级节点,即节点1(600(500))、节点2(700(600))、节点3(800(0))和节点4(1000(1000))。此时收到操作指令alloc D5 1000,在上述四个节点中,节点1和节点2的可用空间之和为1100,足以容纳数据D5;节点3的可用存储空间为0,不足以容纳数据D5;节点4的可用存储空间为1000,刚好可以容纳数据D5。根据本公开的一个实施方式,在节点1和节点2的组合、节点4都足以容纳数据D5的情况下,优先选择节点4来容纳数据D5,因为其可用存储空间与数据D5的大小之差最小。上述优选实施方式有利于减少存储空间的碎片,提高存储空间利用效率。
需要理解的是,上面的表述“可用存储空间与数据D5的大小之差最小”不但适用于上文中单个节点的可用存储空间不大于数据的情况,也适用于单个节点的可用存储空间大于数据的情形。
例如,仍然如图5所示,节点1的可用存储空间为500,节点2的可用存储空间为600,节点4的可用存储空间为1000,此时接收到一个数据分配请求,需要为数据D5’分配400的存储空间。在一个实施方式中,可可以在节点1、节点2或者节点4中为该数据D5’分配相应的空间400。在本公开的另一个优选实施方式中,可以在节点1中为数据D5’分配相应的空间400,因为节点1的可用存储空间与该数据D5’的大小之差最小。这样有助于减少空间碎片,从而使得空间被充分利用。
上面介绍了创建树状结构的情形,还存在当前所有节点的可用存储节点之和都不足以存储数据的情形,根据本公开的一个实施方式,根据接收到的所述空间分配请求来为数据分配目标存储空间进一步包括:响应于在所述树状结构的节点中未搜索到不小于所述数据大小的可用存储空间,创建新节点以使得可用存储空间能够容纳所述数据。
可以理解的是,优选情况下,创建的新节点的存储空间越小越好,这有利于减少空间碎片的发生。
下面将详细介绍多种创建新节点的实施方式。
图6a示出了根据本公开的一个实施方式的创建新节点的方法流程图;
图6b示出了根据图6a所示的方法流程图创建的新节点的示意图。
如图6a所示,创建新节点可以包括:在操作S610,将具有可用存储空间的节点调整为所述新节点的下级节点;在操作S620,在所述新节点下创建新下级节点以使得所述新节点的下级节点的可用存储空间能够容纳所述数据。
结合上文中参考图4a-图4b所描述的6个操作,下面进一步参考操作7-10来进行描述。
操作7:alloc D5 300
操作8:dealloc D1
操作9:dealloc D4
操作10:dealloc D5
首先,从图4c中可以看出,在执行完操作6之后,节点1的可用存储空间为0,节点2的可用存储空间为100,节点3的可用存储空间为100,节点4的可用存储空间为0,当前可用存储空间共200。
当执行操作7时,需要为数据D5分配大小为300的存储空间,但当前可用存储空间仅有200,不足以容纳数据D5。在此情况下,需要创建新的节点。
由此,创建了与节点1等级别的节点8,并将原节点2和节点3移动到新节点8的下级作为新节点8的子节点。在此情况下,可以创建新的子节点6,其具有总存储空间标识100,从而子节点2,新子节点6以及子节点3共具有可用存储空间300,从而可以容纳数据D5。
更进一步地,对于子节点3,由于其中之前存储有数据D3,因此子节点3需要被再次划分为孙节点7和孙节点4,其中孙节点4原先为子节点3的下级节点,而孙节点7为新创建的孙节点。
更进一步地,如上文所述,优选地,同一个节点只能分配给相同的数据,因此,虽然节点2具有大小为100的可用存储空间,但由于节点2之前已经分配给数据D2,因此可以在节点2下创建新的节点5以作为节点2的子节点。需要理解的是,在存储器的物理空间上,节点2和节点5是一样的,但在树状结构中,二者是不同的节点。
经过上述的创建过程,节点5能够提供大小为100的存储空间,节点6能够提供大小为100的存储空间,并且节点7能够提供大小为100的存储空间,从而能够容纳大小为300的数据D5。
在上面针对图6b的描述中可以看出,同一个数据可以占用不同的节点,例如数据D5可以占用节点5,节点6和节点7,但同一个节点只能对应于一个数据,例如节点3已经分配给数据D3,虽然数据D3占用的空间已经被释放(操作4),但如果新的数据例如数据D4和数据D5需要占用数据D3原先占用的空间,则仍然需要将节点D3进一步划分为数节点4和节点7。上述的方案有利于保留整个节点与数据的对应关系。
对于操作8-10,则可以将分配给数据D1、D4和D5的存储空间释放出来,如图6c所示。在图6c中,节点1的可用存储空间成为400,节点6、节点5和节点7的可用存储空间均成为100,节点4的可用存储空间成为300。
根据本公开的一个实施方式,创建新节点以使得可用存储空间能够容纳所述数据还可以包括:响应于所述树状结构中所有节点的可用存储空间为零,创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
在本实施方式中,由于现有的节点中已经没有任何可用存储空间,因此可以完全创建一个信息的节点来存储这些数据。图4a中的情形实际就是本实施方式的表现,因此这里将不再赘述。
根据本公开的另一个实施方式,创建新节点以使得可用存储空间能够容纳所述数据可以包括:响应于在所述树状结构的节点中未搜索到不小于所述数据大小的当前可用存储空间,并且下一空间分配请求包括的数据大小不大于所述当前可用存储空间,则创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
在该实施方式中,可以将空间分配请求的时序考虑进去。例如现有可用存储空间为300,此时接收到第一个空间分配请求需要分配存储空间400,则可以考虑该空间分配请求之后的第二个空间分配请求是否小于300或等于300,如果是,则可以首先创建新节点以分配给第一个空间分配请求,而将现有的可用存储空间预留给第二个空间分配请求。该实施方式对于周期性或者可预测的空间分配请求有利。
当建立了树状结构之后并且接收到一个新的空间分配请求时,可以遍历该树状结构以找到期望的可用存储空间。根据本公开的一个实施方式,在遍历该树状结构时,可以采用深度优先(deepth first)的策略,即检索完一个上级节点以及该上级节点的所有下级节点之后,再检索与该上级节点同级的另外一个节点。
以图6c为例,例如接收到一个空间分配请求,那么首先要查找节点1,当节点1中未找到足够的可用存储空间时,查找节点8,然后依次查找节点2和节点5;查找节点6;查找节点3、节点7以及节点4。深度优先的方式有利于尽量将同一个数据存储在连续的空间中,减少运算过程中空间寻址的跳变。
根据本公开的有一个实施方式,进一步包括:调整所述节点的位置,以使得所述多个存储块的空间是连续的。
需要理解的是,节点实际上对应是虚拟的存储空间,因此希望同一块数据能够存储在连续的空间中,以减少运算过程中空间寻址的跳变,提升运算效率。
如图6b所示,用于存储数据D5的节点6插在了节点2和节点3之间,而节点7的建立紧邻节点6,由此,数据D5可以连续地存储在节点5,节点6和节点7紧邻的连续空间中。节点6也可以设置在节点3之后,节点7设置在节点4之后,但这样的方式容易引起空间跳变。
由此,为了保证空间连续,根据本公开的一个实施方式,进一步包括:固定节点在所述树状结构的中的排列顺序。
固定节点的顺序可以通过在节点的上级节点中做标记。例如,如图6b所示,可以在节点8中打上标记“ordered”,那么该节点8下的所有子节点的排列顺序将固定下来。又例如,可以给节点3打上标记“ordered”,那么该节点3下的节点7和节点4的排列顺序将被固定下来。
固定节点的排列顺序有助于使得同一数据存储在连续的空间中,减少了空间寻址的跳变。
与现有技术不同的是,在上面的过程中,仅仅是分配存储空间,而并未为数据分配地址,因此空间分配和地址分配是分离的;而在现有技术中,分配地址和分配存储空间是同时的,这也是本公开的技术方案与现有技术方案之间的一个不同之处。
在基于上述的过程为数据分配存储空间之后,根据本公开的一个实施方式,基于所分配的目标存储空间,为所述数据分配存储地址可以包括:在为一个节点分配存储地址之后,依次为同级的其他节点分配地址,其中每个节点的地址涵盖该节点所有下级节点的地址。
更进一步地,当所有节点的可用存储空间之和小于所要容纳的数据时,结合图4d所描述的第五种和第六种方案同样适用。在此情况下,必然会创建新节点,与第五种和第六种方案相似,可以选择其中一个节点来容纳一部分数据,然后创建新节点来容纳剩余部分的数据。所创建的新节点可以与容纳一部分数据的节点构成连续的空间,从而减少数据存取时的空间跳变。
图7示出了根据本公开的一个实施方式的为存储空间分配地址的示意图。
如图7所示的树状结构包括节点0、节点1、节点2、节点3、节点4和节点5,节点0为根节点,其总存储空间为31,可用存储空间为0,存储属性表示为31(0);节点1,节点2,节点3和节点4是节点0的子节点,其存储属性分别表示为5(5),6(6),10(0)和11(0);节点5是节点3的子节点,其存储属性表示为10(0)。
在为这些节点分配地址时,按照宽度优先(width-first)的策略,即首先为同一级的节点分配地址,再更具体地为每个节点的下级节点分配地址。
如图7所示,节点0的起始地址为0x0000,其偏移量可以为31;那么作为节点0的第一个子节点,节点1的起始地址也可以为0x0000,其偏移量为5,因此其结束地址为0x0004。类似地,节点2的起始地址可以为0x0005,偏移量为6;节点3的起始地址可以为0x000B,偏移量为10;而节点4的起始地址为0x0015,偏移量为11;作为节点3的子节点,节点5的起始地址也为0x000B,偏移量为10。
可以看出,通过上述的安排,相同数据的空间可以保持连续,从而也可以分配连续的地址,这极大地提升了存储器中的空间利用率,减少了碎片的发生,特别是对于存储量较小的存储器具有更显著的意义;此外,通过本公开的技术方案,还可以保持数据存储的连续性,从而避免了寻址过程中的跳变,从而提升数据吞吐的速度;另外一个有益的效果是,由于所有的节点信息都得以保留,因此保留了空间分配和释放过程中数据存储的所有记录,便于后续的数据追踪和存储记录的保留。
图8示出了根据本公开的一个实施方式的对存储空间进行管理的方法,包括:在操作S810,形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;以及,在操作S820,将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
图9示出了根据本公开的一个实施方式的在存储器中为数据分配存储空间的方法,包括:在操作S910,接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;在操作S920,形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;在操作S930,将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和;以及,在操作S940,根据接收到的所述空间分配请求,根据所述树状结构来为数据分配目标存储空间。
上述图8和图9中各个操作的具体实施方式已经根据图2-图7进行了详细解释,因此这里将不再赘述。
图10示出了根据本公开的技术方案与其他三种技术方案(BF方案、GC方案和理想方案)在不同应用场景下空间使用数量的对比,其中每一组对比中,左端的数据表示BF方案,第二列数据表示GC方案,第三列数表示本公开的方案,而最后一列数据表示理想方案。
图10中选取了8种常用的应用场景,分别为表示为横坐标,ResNet-18、ResNet-50,MobileNet-V2、SE-ResNet-50、GoogleNet、Inception21k,DPN131以及DenseNet-201;纵坐标表示对SPM空间的使用量,其是评价存储器管理方法的一个关键度量。在图10中,所有方案的SPM使用量根据理想方案做了归一化处理。
平均而言,相较于BF方案和GC方案,本发明的技术方案将SPM空间的使用量降低了31.6%和13.3。与BF方案相比,本发明的技术方案对SPM空间的使用量最高减少了47.9%(例如在SE-ResNet-50场景下),最少减少了10%(例如在Inception21k场景下)。而相较于GC方案,本发明的方案对SPM空间的使用量减少了大约1%(ResNet-50)-30.1%(DenseNet-201)。
更进一步地,在其中的六种应用场景下,例如ResNet-18、ResNet-50,MobileNet-V2、SE-ResNet-50、GoogleNet和Inception21k,本发明的技术方案几乎达到了与理想方案相同的效果。
本公开还提供了一种种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
本公开还提供了一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案可应用于人工智能领域,实现在主机中、服务器中,或者实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图11示出了一种组合处理装置1100,其包括上述的计算装置1102,通用互联接口1104,和其他处理装置1106。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图11为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习计算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习计算装置的开启、停止等基本控制;其他处理装置也可以和机器学习计算装置协作共同完成计算任务。
通用互联接口,用于在计算装置(包括例如机器学习计算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置1108,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要计算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图12,其提供了一种示例性的板卡,上述板卡除了包括上述芯片1202以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1204、接口装置1206和控制器件1208。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元1210。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备1212(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
依据以下条款可更好地理解前述内容:
条款1.一种在存储器中为数据分配存储地址的方法,包括:
接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;
根据接收到的所述空间分配请求来为数据分配目标存储空间;以及
基于所分配的目标存储空间,为所述数据分配存储地址。
条款2.根据条款1所述的方法,进一步包括:
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
条款3.根据条款2所述的方法,其中,根据接收到的所述空间分配请求来为数据分配目标存储空间包括:
在所述树状结构的节点中检索可用存储空间;
响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
条款4.根据条款3所述的方法,其中,响应于从所述树状结构的节点中搜索到与所述数据大小具有最小差值的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
条款5.根据条款3所述的方法,其中,根据接收到的所述空间分配请求来为数据分配目标存储空间进一步包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的可用存储空间,创建新节点以使得可用存储空间能够容纳所述数据。
条款6.根据条款5所述的方法,其中,创建新节点以使得可用存储空间能够容纳所述数据包括:
将具有可用存储空间的节点调整为所述新节点的下级节点;
在所述新节点下创建新下级节点以使得所述新节点的下级节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于所述树状结构中所有节点的可用存储空间为零,创建新节点以使得所述新节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的当前可用存储空间,并且下一空间分配请求包括的数据大小不大于所述当前可用存储空间,则创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
条款7.根据条款3-6中任意一项所述的方法,其中,在所述树状结构的节点中检索可用存储空间包括:
在检索完一个上级节点以及该上级节点的所有下级节点之后,再检索与该上级节点同级的另外一个节点。
条款8.根据条款2-7中任意一项所述的方法,进一步包括:
调整所述节点的位置,以使得所述多个存储块的空间是连续的。
条款9.根据条款2-8中任意一项所述的方法,进一步包括:
固定节点在所述树状结构的中的排列顺序。
条款10.根据条款2-9中任意一项所述的方法,进一步包括:
响应于接收到空间释放请求,释放相应的节点;
更新被释放节点的可用存储空间标识符。
条款11.根据条款2-10中任意一项所述的方法,基于所分配的目标存储空间,为所述数据分配存储地址包括:
在为一个节点分配存储地址之后,依次为同级的其他节点分配地址,其中每个节点的地址涵盖该节点所有下级节点的地址。
条款12.一种对存储空间进行管理的方法,包括:
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
条款13.一种在存储器中为数据分配存储空间的方法,包括:
接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和;
根据接收到的所述空间分配请求,根据所述树状结构来为数据分配目标存储空间。
条款14.根据条款12或13所述的方法,进一步包括:
响应于接收到为数据分配目标存储空间的空间分配请求,在所述树状结构的节点中检索可用存储空间;
响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
条款15.根据条款14所述的方法,其中,响应于从所述树状结构的节点中搜索到与所述数据大小具有最小差值的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
条款16.根据条款14所述的方法,其中,响应于在所述树状结构的节点中未搜索到不小于所述数据大小的可用存储空间,创建新节点以使得可用存储空间能够容纳所述数据。
条款17.根据条款16所述的方法,其中,创建新节点以使得可用存储空间能够容纳所述数据包括:
将具有可用存储空间的节点调整为所述新节点的下级节点;
在所述新节点下创建新下级节点以使得所述新节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于所述树状结构中所有节点的可用存储空间为零,创建新节点以使得所述新节点的下级节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的当前可用存储空间,并且下一空间分配请求包括的数据大小不大于所述当前可用存储空间,则创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
条款18.根据条款14-17中任意一项所述的方法,其中,在所述树状结构的节点中检索可用存储空间包括:
在检索完一个上级节点以及该上级节点的所有下级节点之后,再检索与该上级节点同级的另外一个节点。
条款19.根据条款12-18中任意一项所述的方法,进一步包括:
调整所述节点的位置,以使得所述多个存储块的空间是连续的。
条款20.根据条款12-19中任意一项所述的方法,进一步包括:
固定节点在所述树状结构的中的排列顺序。
条款21.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款1-20中任意一项所述的方法。
条款22.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款1-20中任意一项所述的方法。
Claims (21)
1.一种在存储器中为数据分配存储地址的方法,包括:
接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;
根据接收到的所述空间分配请求来为数据分配目标存储空间;以及
基于所分配的目标存储空间,为所述数据分配存储地址;
进一步包括:
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
2.根据权利要求1所述的方法,其中,根据接收到的所述空间分配请求来为数据分配目标存储空间包括:
在所述树状结构的节点中检索可用存储空间;
响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
3.根据权利要求2所述的方法,其中,响应于从所述树状结构的节点中搜索到与所述数据大小具有最小差值的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
4.根据权利要求2所述的方法,其中,根据接收到的所述空间分配请求来为数据分配目标存储空间进一步包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的可用存储空间,创建新节点以使得可用存储空间能够容纳所述数据。
5.根据权利要求4所述的方法,其中,创建新节点以使得可用存储空间能够容纳所述数据包括:
将具有可用存储空间的节点调整为所述新节点的下级节点;
在所述新节点下创建新下级节点以使得所述新节点的下级节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于所述树状结构中所有节点的可用存储空间为零,创建新节点以使得所述新节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的当前可用存储空间,并且下一空间分配请求包括的数据大小不大于所述当前可用存储空间,则创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
6.根据权利要求2-5中任意一项所述的方法,其中,在所述树状结构的节点中检索可用存储空间包括:
在检索完一个上级节点以及该上级节点的所有下级节点之后,再检索与该上级节点同级的另外一个节点。
7.根据权利要求1所述的方法,进一步包括:
调整所述节点的位置,以使得所述多个存储块的空间是连续的。
8.根据权利要求1所述的方法,进一步包括:
固定节点在所述树状结构的中的排列顺序。
9.根据权利要求1所述的方法,进一步包括:
响应于接收到空间释放请求,释放相应的节点;
更新被释放节点的可用存储空间标识符。
10.根据权利要求1所述的方法,基于所分配的目标存储空间,为所述数据分配存储地址包括:
在为一个节点分配存储地址之后,依次为同级的其他节点分配地址,其中每个节点的地址涵盖该节点所有下级节点的地址。
11.一种对存储空间进行管理的方法,包括:
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和。
12.一种在存储器中为数据分配存储空间的方法,包括:
接收针对存储器中存储空间的空间分配请求,所述空间分配请求携带数据大小;
形成多个存储块,每个存储块具有总存储空间标识和可用存储空间标识,其中总存储空间标识用于指示所述存储块的总存储空间,所述可用存储空间标识用于指示所述存储块的可用存储空间;
将所述多个存储块作为节点形成为树状结构,所述树状结构包括多级节点,其中上级节点的总存储空间为下级节点的总存储空间之和;
根据接收到的所述空间分配请求,根据所述树状结构来为数据分配目标存储空间。
13.根据权利要求11或12所述的方法,进一步包括:
响应于接收到为数据分配目标存储空间的空间分配请求,在所述树状结构的节点中检索可用存储空间;
响应于在所述树状结构的节点中搜索到不小于所述数据大小的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
14.根据权利要求13所述的方法,其中,响应于从所述树状结构的节点中搜索到与所述数据大小具有最小差值的可用存储空间,根据接收到的所述空间分配请求来为数据分配目标存储空间。
15.根据权利要求13所述的方法,其中,响应于在所述树状结构的节点中未搜索到不小于所述数据大小的可用存储空间,创建新节点以使得可用存储空间能够容纳所述数据。
16.根据权利要求15所述的方法,其中,创建新节点以使得可用存储空间能够容纳所述数据包括:
将具有可用存储空间的节点调整为所述新节点的下级节点;
在所述新节点下创建新下级节点以使得所述新节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于所述树状结构中所有节点的可用存储空间为零,创建新节点以使得所述新节点的下级节点的可用存储空间能够容纳所述数据;或者
创建新节点以使得可用存储空间能够容纳所述数据包括:
响应于在所述树状结构的节点中未搜索到不小于所述数据大小的当前可用存储空间,并且下一空间分配请求包括的数据大小不大于所述当前可用存储空间,则创建新节点以使得所述新节点的可用存储空间能够容纳所述数据。
17.根据权利要求13所述的方法,其中,在所述树状结构的节点中检索可用存储空间包括:
在检索完一个上级节点以及该上级节点的所有下级节点之后,再检索与该上级节点同级的另外一个节点。
18.根据权利要求13所述的方法,进一步包括:
调整所述节点的位置,以使得所述多个存储块的空间是连续的。
19.根据权利要求13所述的方法,进一步包括:
固定节点在所述树状结构的中的排列顺序。
20. 一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-19中任意一项所述的方法。
21.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-19中任意一项所述的方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010421439.7A CN113688063B (zh) | 2020-05-18 | 2020-05-18 | 一种在存储器中为数据分配存储地址的方法和设备 |
| PCT/CN2021/093466 WO2021233187A1 (zh) | 2020-05-18 | 2021-05-12 | 一种在存储器中为数据分配存储地址的方法和设备 |
| US17/998,892 US12292829B2 (en) | 2020-05-18 | 2021-05-12 | Method and device for allocating storage addresses for data in memory |
| EP21808996.9A EP4155946A4 (en) | 2020-05-18 | 2021-05-12 | Method and device for allocating storage addresses for data in memory |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010421439.7A CN113688063B (zh) | 2020-05-18 | 2020-05-18 | 一种在存储器中为数据分配存储地址的方法和设备 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113688063A CN113688063A (zh) | 2021-11-23 |
| CN113688063B true CN113688063B (zh) | 2025-07-29 |
Family
ID=78575687
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202010421439.7A Active CN113688063B (zh) | 2020-05-18 | 2020-05-18 | 一种在存储器中为数据分配存储地址的方法和设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113688063B (zh) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016191964A1 (zh) * | 2015-05-29 | 2016-12-08 | 华为技术有限公司 | 一种文件系统的管理方法及装置 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8504792B2 (en) * | 2009-12-22 | 2013-08-06 | Apple Inc. | Methods and apparatuses to allocate file storage via tree representations of a bitmap |
| CN103608784B (zh) * | 2013-06-26 | 2015-06-10 | 华为技术有限公司 | 网络卷创建方法、数据存储方法、存储设备和存储系统 |
| US10817472B2 (en) * | 2017-10-23 | 2020-10-27 | Dropbox, Inc. | Storage organization system with associated storage utilization values |
-
2020
- 2020-05-18 CN CN202010421439.7A patent/CN113688063B/zh active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016191964A1 (zh) * | 2015-05-29 | 2016-12-08 | 华为技术有限公司 | 一种文件系统的管理方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113688063A (zh) | 2021-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
| US9569381B2 (en) | Scheduler for memory | |
| CN114238156B (zh) | 处理系统以及操作处理系统的方法 | |
| CN112612623A (zh) | 一种共享内存管理的方法和设备 | |
| CN117118930A (zh) | 交换机、内存共享方法、系统、计算设备和存储介质 | |
| CN120499269A (zh) | 一种数据管理方法、装置、设备及可读存储介质 | |
| CN107193494B (zh) | 一种基于ssd和hdd混合存储系统的rdd持久化方法 | |
| WO2025001603A1 (zh) | 面向分布式文件系统的高并发读写优化系统、介质及设备 | |
| CN113688064B (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
| CN113688063B (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
| CN113678104A (zh) | 设备内符号数据移动系统 | |
| WO2021233187A1 (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
| CN118193540B (zh) | 索引处理方法、装置、电子设备及可读存储介质 | |
| CN108959105A (zh) | 一种实现地址映射的方法及装置 | |
| CN103577340A (zh) | 存储器管理装置和方法以及电子设备 | |
| CN113535597A (zh) | 内存管理方法、内存管理单元和物联网设备 | |
| CN112052040A (zh) | 处理方法、装置、计算机设备和存储介质 | |
| CN119576801A (zh) | 一种内存分配方法及相关设备 | |
| CN116263752A (zh) | 用于芯片间通信的处理单元、处理系统及方法 | |
| CN111949318B (zh) | 指令处理方法、装置及相关产品 | |
| WO2021139733A1 (zh) | 一种对内存进行分配的方法、设备及计算机可读存储介质 | |
| US12443528B2 (en) | Memory management circuit, electronic device and memory management method | |
| CN111260070A (zh) | 运算方法、装置及相关产品 | |
| CN119003410B (zh) | 一种存储控制器间通信优化方法、装置、设备及存储介质 | |
| US20250348239A1 (en) | Memory management method, storage medium, and electronic device |
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 | ||
| TG01 | Patent term adjustment | ||
| TG01 | Patent term adjustment |