CN113688062B - 用于存储数据的方法和相关产品 - Google Patents
用于存储数据的方法和相关产品 Download PDFInfo
- Publication number
- CN113688062B CN113688062B CN202010420206.5A CN202010420206A CN113688062B CN 113688062 B CN113688062 B CN 113688062B CN 202010420206 A CN202010420206 A CN 202010420206A CN 113688062 B CN113688062 B CN 113688062B
- Authority
- CN
- China
- Prior art keywords
- data
- candidate storage
- stored
- candidate
- target
- 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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- 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
-
- 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
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0626—Reducing size or complexity of 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/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
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
- Memory System (AREA)
Abstract
本申请实施例公开了一种用于存储数据的方法和相关产品,该方法包括:基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案;能够减少内存碎片,提供内存利用率。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于存储数据的方法和相关产品。
背景技术
人工智能(artificial intelligence,AI)芯片一般是由多个不同功能的计算单元、一个空间有限的高速共享缓存和双倍速率同步动态随机存储器(Double Data RateSDRAM,DDR)组成。其中,高速共享缓存的大小一般为几MB,目前常见的为8MB或12MB。由于AI芯片的指令和中央处理器(Central Processing Unit,CPU)指令不同,CPU的寄存器是固定大小的,比如32位处理器的寄存器是固定32位的。然而AI芯片中没有寄存器,并且神经网络的张量(tensor)大小不是固定的,无法固定分配。鉴于共享缓存空间有限,且待分配tensor大小不定,如果分配策略效果不佳,很容易产生内存碎片,这些内存碎片以小且不连续方式出现在不同的位置,导致这些空闲的内存无法使用,不能够充分发挥高速共享缓存的作用。因此,需要研究更充分发挥高速共享缓存的作用的动态内存分配方案。
发明内容
本申请实施例公开了一种用于存储数据的方法和相关产品。
第一方面,本申请实施例提供了一种用于存储数据的方法,该方法包括:基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案。
每个候选存储空间的大小均大于或等于存储待存储数据所需占用的存储空间的大小。可以理解,当前的目标存储器中有多个未被数据占用的离散存储空间,至少两个候选存储空间为这些离散存储空间中可存储该待存储数据的存储空间。
本申请实施例中,基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,可以从多种候选存储方案中确定一种能够有效减少内存碎片的存储方案。
在一个可选的实现方式中,所述候选存储空间对应的候选存储方案包括第一候选存储方案和第二候选存储方案中的至少一种,其中,所述第一候选存储方案中的起始存储地址为所述候选存储空间的起始地址,所述第二候选存储方案中的结束存储地址为所述候选存储空间的结束地址。
可选的,每个候选存储空间能会有1种或2种分配方法,即靠左分配和靠右分配,可以分别计算这两种分配方法的目标权重。靠左分配是指将待存储数据存储至某个存储空间的起始地址至某个地址(对应于第一候选存储方案),即为该待存储数据分配该存储空间的起始地址至后面连续多个地址。靠右分配是指待存储数据存储至某个存储空间的某个地址至结束地址(对应于第二候选存储方案),即为该待存储数据分配该存储空间的结束地址以及该结束地址前面连续的多个地址。当某个存储空间的大小大于存储待存储数据所需的存储空间的大小时,该存储空间有两种分配方法(即靠左分配和靠右分配不同);当某个存储空间的大小等于存储待存储数据所需的存储空间的大小时,该存储空间只有1种分配方法(即靠左分配和靠右分配相同)。
在该实现方式中,采用第一候选存储方案或第二候选存储方案存储待存储数据之后,在该待存储数据占用的存储空间被释放之后能够与其相邻的存储空间合并为一个更大的存储空间,以减少内存碎片。
在一个可选的实现方式中,所述候选存储方案对应的目标权重与所述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,所述第二数据释放时间为与所述待存储数据在所述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。示例性的,目标存储方案为对应的目标权重最大的候选存储方案。也就是说,确定多种候选存储方案中对应的目标权重最大的候选存储方案作为目标存储方案。所述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关可以理解为:第一数据释放时间和第二数据释放时间之间的间隔越小,则候选存储方案对应的目标权重越大。可以理解,候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间与第一数据释放时间的间隔越短,候选存储方案中的存储位置与其相邻的存储空间会越快的合并为一个存储空间。
在一个可选的实现方式中,所述基于所述待存储数据对应的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的目标权重。
在一个可选的实现方式中,所述目标存储方案的确定使得所述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。
在该实现方式中,可以将生命周期短的(分配和释放频繁的)数据与生命周期长的数据分配至目标存储器的不同部分,即分配和释放频繁的数据被分配的存储空间相近,能够减少内存碎片。
在一个可选的实现方式中,所述基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:确定所述待存储数据的生命周期与所述待存储数据对应的最大生命周期之间的第一比值;确定所述候选存储方案对应的候选存储空间的起始地址与所述目标存储器的结束地址之间的第二比值;基于第一比值和第二比值,确定所述候选存储方案的目标权重。
其中,目标存储器的结束地址表示目标存储器的总存储空间大小。
在该实现方式中,可以将生命周期短的(分配和释放频繁的)数据与生命周期长的数据分配至目标存储器的不同部分,即分配和释放频繁的数据被分配的存储空间相近,能够减少内存碎片。
在一个可选的实现方式中,所述候选存储方案的目标权重与所述第一比值和所述第二比值之差的绝对值负相关。
在一个可选的实现方式中,所述基于所述待存储数据对应的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于所述待存储数据对应的第一数据释放时间和与所述候选存储方案对应的存储位置相邻的存储空间所存储数据的第二数据释放时间,确定所述候选存储方案的第一权重;基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的第二权重;基于所述第一权重和所述第二权重的加权和,得到所述候选存储方案的目标权重。
在该实现方式中,综合考虑待存储数据的第一数据释放时间和生命周期,能够更有效的减少内存碎片。
在一个可选的实现方式中,所述基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于所述待存储数据的第一数据释放时间、生命周期和所述多种候选存储方案中每种候选存储方案对应的存储空间大小,确定所述每种候选存储方案的目标权重。
在该实现方式中,综合考虑待存储数据的第一数据释放时间、生命周期和所需的存储空间大小,以便于确定的目标存储方案能更有效的减少内存碎片,并减少占用的存储空间。
在一个可选的实现方式中,所述目标存储器为人工智能AI芯片中的共享缓存。
由于AI芯片的指令和普通CPU指令不同,CPU的寄存器是固定大小的,比如32位处理器的寄存器是固定32位的。然而AI芯片没有寄存器,并且神经网络的tensor(张量)大小不是固定的,无法固定分配。鉴于共享缓存空间有限,且待分配tensor大小不定,如果分配策略效果不佳,很容易产生内存碎片,这些碎片以小且不连续方式出现在不同的位置,导致这些空闲的内存无法使用,不能够充分发挥高速共享缓存的作用。在该实现方式中,可以大大减少内存碎片,进而充分发挥高速共享缓存的作用。
在一个可选的实现方式中,所述候选存储方案对应的目标权重与所述候选存储方案对应的候选存储空间的大小负相关。
在一个可选的实现方式中,所述目标存储方案对应的目标权重包括第一指标的倒数、所述第二指标的相反数以及所述第三指标的相反数的加权和;所述第一指标表征所述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,所述第二数据释放时间为与所述待存储数据在所述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间;所述第二指标表征第一比值和第二比值之差的绝对值,所述第一比值为所述待存储数据的生命周期与所述待存储数据对应的最大生命周期之间的比值,所述第二比值为所述候选存储方案对应的候选存储空间的起始地址与所述目标存储器的结束地址之间的比值;所述第三指标表征所述待存储数据所需占用的存储空间与所述目标存储器的总存储空间的比值。
可选的,所述目标存储方案对应的目标权重满足如下公式:
weight=α*w1+β*w2+γ*w3;
其中,α、β、γ均为不小于0的权重系数且α+β+γ=1,weight表示上述目标存储方案对应的目标权重,表示第一指标,(1-w2)表示第二指标,(1-w3)表示第三指标。可选的,cost1=abs(e-e1);该第一指标为cost1,即w1为1/cost1,e表示上述待存储数据的第一数据释放时间,e1表示上述第二数据释放,abs(e-e1)表示e和e1的差值的绝对值。可选的,cost2=abs((c/c_max)-(start/mem_size)),w2=1-cost2,c表示上述待存储数据的生命周期,c_max表示所述待存储数据对应的最大生命周期,start表示上述目标存储方案对应的候选存储空间的起始地址,mem_size表示上述目标存储器的结束地址。cost2表示第二指标。可选的,w3=1-s_cand/mem_size,s_cand表示上述第一存储空间的大小,mem_size表示上述总存储地址。可理解,s_cand/mem_size表示第三指标。在该实现方式中,计算目标权重的方式为三种分配原则的综合结果。w1对应第一种分配原则,该原则是尽量分配在end_pc相近的位置,使得相邻存储空间释放时间相近,有利于合并成大的空闲存储空间,从而减少内存碎片。每个数据对应一个end_pc,每个数据对应的end_pc表示该数据占用的存储空间被释放的时间点。尽量分配在end_pc相近的位置可以将尽量将待存储数据分配在对应的end_pc与该待存储数据对应的end_pc较接近的数据相邻的位置。举例来说,目标存储器中某个存储空间存储的数据对应的end_pc与该待存储数据对应的end_pc较接近,则将该待存储数据分配在于该存储空间相邻的空间存储空间。w2对应第二种分配原则,该原则是将生命周期短的数据(分配释放频繁的)与生命周期长的数据分段分配,分配和释放频繁的数据置相近,可减少内存碎片。w3对应第三种分配原则,该原则是把既能满足需求,又是最小的空闲存储空间分配给待存储数据。在该实现方式中,结合多种分配原则来为待分配数据分配地址,可以有效减少内存碎片。
在一个可选的实现方式中,所述基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间包括:从所述目标存储器未分配的多个离散存储空间中,确定可存储所述待存储数据的所述至少两个候选存储空间。
在该实现方式中,可以从未分配的多个离散存储空间中,快速确定可存储所述待存储数据的两个或两个以上存储空间。
在一个可选的实现方式中,所述基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案之后,所述方法还包括:将所述待存储数据存储至所述目标存储方案对应的候选存储空间的第一地址至第二地址;将所述第一地址至所述第二地址对应的存储空间设置为已分配的存储空间。可选的,所述第一地址和所述第二地址中的一个为所述目标存储方案对应的候选存储空间的起始地址,或者,所述第一地址和所述第二地址中的一个为所述目标存储方案对应的候选存储空间的结束地址。
在一个可选的实现方式中,所述将所述待存储数据存储至所述目标存储方案对应的候选存储空间的第一地址至第二地址之后,所述方法还包括:释放所述第一地址至所述第二地址对应的存储空间;将所述第一地址至所述第二地址对应的存储空间设置为未分配的存储空间。
在该实现方式中,通过释放第一存储空间的第一地址至第二地址可提高内存使用率。
在一个可选的实现方式中,所述将所述第一地址至所述第二地址对应的存储空间设置为未分配的存储空间之后,所述方法还包括:在所述第二地址的下一地址至第三地址均未存储数据的情况下,将所述第一地址至所述第三地址设置为一个未分配的离散存储空间。
在该实现方式中,可以快速地将相邻的两个未分配的存储空间设置为一个较大的未未分配的存储空间。
在一个可选的实现方式中,所述将所述第一地址至所述第二地址对应的存储空间设置为未分配的存储空间之后,所述方法还包括:在所述目标存储器的第四地址至所述第一地址的上一地址均未存储数据的情况下,将所述第四地址至所述第二地址设置为一个未分配的离散存储空间。
在该实现方式中,可以快速地将相邻的两个未分配的存储空间设置为一个较大的未分配的存储空间。
第二方面,本申请实施例提供了一种数据处理装置,该装置包括:确定单元,用于基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;所述确定单元,还用于基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;所述确定单元,还用于基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案。
本申请实施例中,基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,可以从多种候选存储方案中确定一种能够有效减少内存碎片的存储方案。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上述第一方面以及任一种可选的实现方式的方法。
第四方面,本申请实施例提供了一种芯片,该芯片包括处理器、数据接口以及上述第一方面所述的目标存储器,其中,处理器用于执行第一方面或第一方面的任意可能实现方式中的方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面以及任一种可选的实现方式的方法。
第六方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面以及任一种可选的实现方式的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请实施例提供的一种用于存储数据的方法流程图;
图2为本申请实施例提供的一种计算目标权重的过程示意图;
图3为本申请实施例提供的另一种用于存储数据的方法流程图;
图4为本申请实施例提供的一种数据处理装置结构示意图;
图5为本申请实施例提供的另一种数据处理装置结构示意图;
图6是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如背景技术上述,由于AI芯片中的共享缓存空间有限,且待分配tensor大小不定。如果内存分配策略效果不佳,很容易产生内存碎片,这些内存碎片会以小且不连续方式出现在共享缓存不同的位置,导致这些空闲的内存无法使用,不能够充分发挥高速共享缓存的作用。实际上这些空闲内存碎片存在的方式有两种:内部碎片和外部碎片。
内部碎片的产生:因为所有的内存分配必须起始于可被4、8或16整除(视处理器体系结构而定)的地址或者因为内存管理单元(memory management unit,MMU)的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给数据。假设当存储某个数据需要占用一个43字节的内存块时,因为没有适合大小的内存,所以它可能会获得44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎片。
外部碎片的产生:频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,就会产生外部碎片。假设有一块一共有100个单位(例如一个地址)的连续空闲的内存空间,范围是0~99。如果从中申请一块内存,如10个单位,那么申请出来的内存块就为0~9区间。这时候如果继续申请一块内存,比如说5个单位大,第二块申请到的内存块就应该为10~14区间。如果把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块。现在整个内存空间的状态是0~9空闲,10~14被占用,15~24被占用,25~99空闲。其中0~9就是一个内存碎片了。如果10~14一直被占用,而以后申请的空间都大于10个单位,那么0~9就永远用不上了,变成外部碎片。
为提升变量的局部性来提高运行效率,本申请实施例提供了能够减少碎片的用于存储数据的方法。
本申请实施例提供的用于存储数据的方法主要应用于AI芯片中共享缓存的分配场景。应理解,AI芯片执行数据处理任务,例如文本识别、图像识别、图像超分辨率处理、语音识别、文本翻译等,均需要占用共享缓存。也就是说,本申请实施例提供的用于存储数据的方法主要应用于AI芯片执行数据处理任务的场景,但本公开实施例提供的用于存储的方法也可以应用于其他内存或缓存分配场景,本公开实施例对此不做限定。
本申请实施例提供的用于存储数据的方法还能够应用于AI模型的编译场景,即将AI模型利用编译软件编译为AI芯片可执行的指令序列的场景。在AI模型的编译场景中,数据处理装置可执行本申请实施例提供的用于存储数据的方法来模拟AI模型执行处理操作时共享缓存的分配,进而对AI模型编译得到能指示共享缓存的内存分配和释放的指令序列。AI芯片执行编译AI模型得到的指令序列时,共享缓存的内存分配和释放流程与执行本申请实施例提供的用于存储数据的方法得到的内存分配和释放流程相同。在这种场景中,AI芯片在执行数据处理任务不需要实时执行本申请实施例提供的用于存储数据的方法,仅需执行指令序列,花费时间更短。
在上述场景中,数据处理装置中的AI芯片在执行数据处理任务时,可以减少内存碎片的产生,提高缓存分配的成功率。
下面先介绍本发明实施例中出现的一些术语的含义。
AI芯片的共享缓存是数据处理装置的程序运行时动态分配的,其中,共享缓存可以划分成多个缓存块,不同缓存块的大小可以相同或不同,具体可以基于缓存数据的需求来决定。在本公开实施例中,可以对缓存块的状态进行标记,例如,已分配的块标记为used_item,未分配的块标记为free_item,初始状态是整个共享缓存为一个free_item,经过一定次数的内存分配和释放后,可能有多个used_item,这些used_item之间可能有1个或0个free_item。已分配的块是指被占用的存储空间,未分配的块是指未被占用的存储空间。
在一些实施例中,编译器产生指令序列给AI芯片,每个指令在指令序列中的序号称为指令序号。编译器为数据处理装置运行的一个软件或一段程序代码。每个tensor(可以理解为数据)可能会被多条指令使用(作为指令的输出或者作为指令的输入),这些指令中序号最小的称作tensor的起始序号(start_pc,start program counter),序号最大的称作tensor的结束序号(end_pc,endrogram counter),end_pc和start_pc的差值称作tensor的生命周期。数据的数据释放时间是指该数据占用的地址被释放的时间,即数据被释放的时间。
图1为本申请实施例提供的一种用于存储数据的方法流程图。
101、数据处理装置基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间。
可选地,待存储数据可以为输入图片数据,或者是通过神经网络对输入图片进行处理所产生的中间结果和/或最终结果,例如,待存储数据可以为特征图的至少一部分,或者,待存储数据也可以为模型数据,例如模型的权重,等等,但本公开实施例对此不做限定。
可选的,每个候选存储空间(对应于free_item)的大小大于或等于存储上述待存储数据所需占用的存储空间的大小。数据处理装置可以是服务器、台式电脑、笔记本电脑、手机、平板电脑等可执行数据处理操作的设备。可选的,上述目标存储器为人工智能AI芯片中的共享缓存。
可选的,数据处理装置可以从上述目标存储器未分配的多个离散存储空间(即free_item)中,确定可存储上述待存储数据的两个或两个以上候选存储空间。在实际应用中,数据处理装置中的处理器可以线性扫描共享缓存的所有存储空间(即item),将大于或者等于待存储数据(tensor)所需占用的存储空间的free_item作为候选存储空间,得到上述至少两个候选存储空间。
102、基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重。
其中,每个候选存储空间对应于至少一种候选存储方案。上述待存储数据的第一数据释放时间可以是上述待存储数据被释放的时间,即上述待存储数据占用的存储空间被释放的时间。上述待存储数据的生命周期可以是上述待存储数据被释放的时间与上述待存储数据被存储的时间的间隔。示例性的,每个候选存储方案对应的目标权重与上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,上述第二数据释放时间为与上述待存储数据在上述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。后续在详述步骤102的实现方式。
103、基于上述多种候选存储方案中每种候选存储方案对应的目标权重,确定上述待存储数据的目标存储方案。
基于上述多种候选存储方案中每种候选存储方案对应的目标权重,确定上述待存储数据的目标存储方案可以是数据处理装置确定上述多种候选存储方案中对应的权重最大的一个候选存储方案作为上述待存储数据的目标存储方案;也可以是数据处理装置确定上述多种候选存储方案中对应的权重超过权重阈值的任一个候选存储方案作为上述待存储数据的目标存储方案;其中,上述权重阈值可以是0.6、0.75、0.8等。
可选的,上述目标存储方案是将上述待存储数据存储至目标候选存储空间,与上述目标候选存储空间相邻的存储空间所存储数据的数据释放时间与上述待存储数据的第一数据释放时间之间的间隔小于时间阈值,上述时间阈值可以是0.3ms、1ms、5ms、10ms等。
可选的,数据处理装置执行步骤103之后,还可以执行如下操作:将上述待存储数据存储至上述目标存储方案对应的候选存储空间的第一地址至第二地址;将上述第一地址至上述第二地址对应的存储空间设置为已分配的存储空间(即used_item)。可选的,上述第一地址和上述第二地址中的一个为上述目标存储方案对应的候选存储空间的起始地址,或者,上述第一地址和上述第二地址中的一个为上述目标存储方案对应的候选存储空间的结束地址。在一些实施例中,数据处理装置在将上述待存储数据存储至上述目标存储方案对应的候选存储空间的第一地址至第二地址之后,还可以执行如下操作:释放上述第一地址至上述第二地址对应的存储空间;将上述第一地址至上述第二地址对应的存储空间设置为未分配的存储空间(即free_item)。在一些实施例中,数据处理装置运行的某个内存管理软件来执行图1的方法流程。
本申请实施例中,基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,可以从多种候选存储方案中确定一种能够有效减少内存碎片的存储方案。
在一些实施例中,每个候选存储空间对应的候选存储方案包括第一候选存储方案和第二候选存储方案中的至少一种,其中,上述第一候选存储方案中的起始存储地址为上述候选存储空间的起始地址,上述第二候选存储方案中的结束存储地址为上述候选存储空间的结束地址。也就是说,每个候选存储空间对应1种或2种分配方法,即靠左分配(对应于第一候选存储方案)和靠右分配(对应于第二候选存储方案),可以分别计算这两种分配方法的目标权重。靠左分配是指将待存储数据存储至某个候选存储空间的起始地址至某个地址,即为该待存储数据分配该候选存储空间的起始地址至后面连续多个地址。靠右分配是指将待存储数据存储至某个候选存储空间的某个地址至结束地址,即为该待存储数据分配该存储空间的结束地址以及该结束地址前面连续的多个地址。当某个候选存储空间的大小大于存储待存储数据所需的存储空间的大小时,该候选存储空间有两种分配方法(即靠左分配和靠右分配不同);当某个候选存储空间的大小等于存储待存储数据所需的存储空间的大小时,该候选存储空间只有1种分配方法(即靠左分配和靠右分配相同)。举例来说,有10个候选存储空间的大小大于存储待存储数据所需的存储空间的大小,则数据处理装置执行20轮目标权重计算,即计算每个候选存储空间采用靠左分配方式对应的目标权重和采用靠右分配方式对应的目标权重。
图2为本申请实施例提供的一种计算候选存储方案的目标权重的过程示意图。如图2所示,黑色的矩形区域表示目标存储器中已分配的存储空间(即used_item),白色的矩形区域表示该目标存储器中未分配的存储空间(即free_item),存储空间201、存储空间203、存储空间205均可存储待存储数据,存储空间201和存储空间203的大小大于存储待存储数据所需的存储空间的大小,存储空间205的大小等于存储待存储数据所需的存储空间的大小。如图2所示,在第1轮目标权重计算中,计算将待存储数据存储至存储空间201的起始地址至某个地址(靠左分配)时的目标权重;在第2轮目标权重计算中,计算将待存储数据存储至存储空间201的某个地址至结束地址(即靠右分配)时的目标权重;在第3轮目标权重计算中,计算将待存储数据存储至存储空间203的起始地址至某个地址(靠左分配)时的目标权重;在第4轮目标权重计算中,计算将待存储数据存储至存储空间203的某个地址至结束地址(即靠右分配)时的目标权重;在第5轮目标权重计算中,计算将待存储数据存储至存储空间205的起始地址至结束地址(即靠左分配和靠右分配相同)时的目标权重;以此类推。
在一些实施例中,数据处理装置在第N轮目标权重计算中,计算将上述待存储数据存储至某个候选存储空间的第一目标权重之后,还可执行如下操作:在当前最大目标权重小于上述第一目标权重的情况下,将上述当前最大目标权重更新为上述第一目标权重。可选的,数据处理装置执行第1轮的目标权重计算得到一个目标权重之后,将该目标权重作为当前最大目标权重并保存;将每轮目标权重计算得到的目标权重与保存的当前最大目标权重进行比较,如果新计算得到的目标权重大于当前最大目标权重,则将当前最大目标权重更新为新计算得到的目标权重,否则,保持当前最大目标权重不变。
前述实施例未详述确定将待存储数据存储到至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重的实现方式,下面以计算参考候选存储方案的目标权重为例介绍一些计算目标权重可选的实现方式。上述参考候选存储方案为上述至少两个候选存储空间中任一种候选存储方案。
在一个可选的实现方式中,参考候选存储方案对应的目标权重与上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,上述第二数据释放时间为与上述待存储数据在上述参考候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。示例性的,参考候选存储方案对应的目标权重为上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔的倒数。举例来说,第一数据释放时间为t1,第二数据释放时间为t2,参考候选存储方案对应的目标权重为
在一个可选的实现方式中,上述基于上述待存储数据对应的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于上述待存储数据的生命周期和上述候选存储方案对应的候选存储空间的起始地址,确定上述候选存储方案的目标权重。可选的,上述目标存储方案的确定使得上述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。可以理解,数据处理装置执行本申请实施例提供的用于存储数据的方法可以使得上述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。在一些实施例中,上述基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:确定上述待存储数据的生命周期与上述待存储数据对应的最大生命周期之间的第一比值;确定上述候选存储方案对应的候选存储空间的起始地址与上述目标存储器的结束地址之间的第二比值;基于第一比值和第二比值,确定上述候选存储方案的目标权重。示例性的,上述候选存储方案的目标权重与上述第一比值和上述第二比值之差的绝对值负相关。待存储数据对应的最大生命周期可以是指令序列中各指令对应数据的生命周期中最大的生命周期,即与待存储数据相关的数据占用目标存储器的最大时长。示例性的,待存储数据对应的最大生命周期为本次图像处理过程中产生的所有需要存储的数据的生命周期的最大值,包括已分配内存和尚未分配内存的所有数据的生命周期的最大值,但本公开实施例对此不限于此。
在一些实施例中,候选存储空间的起始地址可以表示为候选存储空间的起始地址相对于目标存储器的总存储空间的起始地址的偏移值,目标存储器的结束地址可以表示为目标存储器的结束地址相对于目标存储器的起始地址的偏移值。
在一个可选的实现方式中,可以确定候选存储空间的起始地址与目标存储器的总存储空间大小之间的第二比值,并将该第二比值作为该候选存储空间对应的至少一种候选存储方案的第二比值,但本公开实施例不限于此。
在一个可选的实现方式中,上述基于上述待存储数据对应的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于上述待存储数据对应的第一数据释放时间和与上述候选存储方案对应的存储位置相邻的存储空间所存储数据的第二数据释放时间,确定上述候选存储方案的第一权重;基于上述待存储数据的生命周期和上述候选存储方案对应的候选存储空间的起始地址,确定上述候选存储方案的第二权重;基于上述第一权重和上述第二权重的加权和,得到上述候选存储方案的目标权重。
在该实现方式中,综合考虑待存储数据的第一数据释放时间和生命周期,能够更有效的减少内存碎片。
在一个可选的实现方式中,上述基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:基于上述待存储数据的第一数据释放时间、生命周期和多种候选存储方案中每种候选存储方案对应的存储空间大小,确定所述每种候选存储方案的目标权重。其中,候选存储方案对应的存储空间大小可以是该候选存储方案对应的候选存储空间的大小。
在一些实施例中,上述目标存储方案对应的目标权重包括第一指标的倒数、上述第二指标的相反数以及上述第三指标的相反数的加权和;上述第一指标表征上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,上述第二数据释放时间为与上述待存储数据在上述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间;上述第二指标表征第一比值和第二比值之差的绝对值,上述第一比值为上述待存储数据的生命周期与上述待存储数据对应的最大生命周期之间的比值,上述第二比值为上述候选存储方案对应的候选存储空间的起始地址与上述目标存储器的结束地址之间的比值;上述第三指标表征上述目标存储方案对应的存储空间与上述目标存储器的总存储空间的比值。
可选的,上述目标存储方案对应的目标权重满足如下公式:
weight=α*w1+β*w2+γ*w3;
其中,α、β、γ均为不小于0的目标权重系数且α+β+γ=1,weight表示上述目标存储方案对应的目标权重,表示第一指标,(1-w2)表示第二指标,(1-w3)表示第三指标。可选的,cost1=abs(e-e1);该第一指标为cost1,即w1为1/cost1,e表示上述第一数据释放时间,e1表示上述第二数据释放时间,abs(e-e1)表示e和e1的差值的绝对值。可选的,cost2=abs((c/c_max)-(start/mem_size)),w2=1-cost2,c表示上述待存储数据的生命周期,c_max表示上述待存储数据对应的最大生命周期,start表示上述目标存储方案对应的候选存储空间的起始地址,mem_size表示目标存储器的结束地址。cost2表示第二指标。可选的,w3=1-s_cand/mem_size,s_cand表示目标存储方案对应的候选存储空间的大小,mem_size表示上述目标存储器的总存储空间的大小。可理解,s_cand/mem_size表示第三指标。
在该实现方式中,计算候选存储方案的目标权重的方式为三种分配原则的综合结果。w1对应第一种分配原则,该原则是尽量分配在end_pc相近的位置,使得相邻存储空间释放时间相近,有利于合并成大的空闲存储空间,从而减少内存碎片。每个数据对应一个end_pc,每个数据对应的end_pc表示该数据占用的存储空间被释放的时间点。尽量分配在end_pc相近的位置可以将尽量将待存储数据分配在对应的end_pc与该待存储数据对应的end_pc较接近的数据相邻的位置。举例来说,目标存储器中某个存储空间存储的数据对应的end_pc与该待存储数据对应的end_pc较接近,则将该待存储数据分配在于该存储空间相邻的空间存储空间。w2对应第二种分配原则,该原则是将生命周期短的数据(分配释放频繁的)与生命周期长的数据分段分配,分配和释放频繁的数据置相近,可减少内存碎片。w3对应第三种分配原则,该原则是把既能满足需求,又是最小的空闲存储空间分配给待存储数据。在该实现方式中,结合多种分配原则来为待分配数据分配地址,可以有效减少内存碎片。
应理解,数据处理装置可以结合这三种分配原则中任意两种来计算目标权重,也可以仅采用根据第一种原则或者第二种原则来计算目标权重。举例来说,上述目标存储方案对应的目标权重满足如下公式:
weight=α*w1+β*w2 (2);
其中,式(1)中的w1、w2分别与式(1)中w1、w2相同,α、β均为大于0的权重系数且α+β=1。
又举例来说,上述目标存储方案对应的目标权重满足如下公式:
weight=α*w1+γ*w3 (3);
其中,式(3)中的w1、w3分别与式(1)中w1、w3相同,α、γ均为大于0的权重系数且α+γ=1。
又举例来说,上述目标存储方案对应的目标权重满足如下公式:
weight=β*w2+γ*w3 (4);
其中,式(4)中的w2、w3分别与式(1)中w2、w3相同,β、γ均为大于0的目标权重系数且β+γ=1。
又举例来说,上述目标存储方案对应的目标权重满足如下公式:
weight=1-cost2 (5);
其中,weight表示上述目标存储方案对应的目标权重,cost2表示上述第二指标。
又举例来说,上述目标存储方案对应的目标权重满足如下公式:
weight=β*w2+γ*w3 (6);
其中,式(6)中的w2、w3分别与式(1)中w2、w3相同,β、γ均为大于0的目标权重系数且β+γ=1。
在该实现方式中,结合多种分配原则来为待分配数据分配地址,可以有效减少内存碎片。
图3为本申请实施例提供的另一种用于存储数据的方法流程图。如图3所示,该方法可包括:
301、数据处理装置从目标存储器未分配的多个离散存储空间中,确定可存储待存储数据的两个或两个以上候选存储空间。
302、在第N轮目标权重计算中,计算将待存储数据存储至第一候选存储空间的第五地址至第六地址的第一目标权重。
可选的,上述第一候选存储空间为上述两个或两个以上候选存储空间中任一候选存储空间,计算将待存储数据存储至第一候选存储空间的第五地址至第六地址的第一目标权重可以是采用式(1)至式(6)中的任一个来计算目标权重。上述第五地址和上述第六地址中的一个为上述第一候选存储空间的起始地址,或者,上述第五地址和上述第六地址中的一个为上述第一候选存储空间的结束地址。可以理解,数据处理装置是计算假定将待存储数据存储至第一候选存储空间的第五地址至第六地址时的目标权重,并不执行将待存储数据存储至第一候选存储空间的第五地址至第六地址的操作。上述N为大于0的整数。在实际应用中,数据处理装置可以计算每个候选存储空间存储待存储数据对应的一个目标权重或者两个目标权重,每轮目标权重计算可计算得到一个目标权重。
303、更新当前最大目标权重。
在一些实施例中,更新当前最大目标权重可以是在第N轮计算得到的目标权重大于当前保存的当前最大目标权重的情况下,将当前最大目标权重更新为在第N轮计算得到的目标权重;在第N轮计算得到的目标权重不大于当前保存的当前最大目标权重的情况下,保持当前最大目标权重不变。
304、判断是否停止下一轮目标权重的计算。
在一些实施例中,判断是否停止下一轮目标权重的计算可以是在当前计算得到每种候选存储方案的目标权重的情况下,判断停止下一轮目标权重的计算;在当前未计算得到每种候选存储方案的目标权重的情况下,判断继续下一轮目标权重的计算。若是,执行下一轮目标权重的计算;若否,执行步骤305。
305、在M轮目标权重计算中计算得到的最大目标权重为上述第一目标权重的情况下,将上述待存储数据存储至上述第一候选存储空间的上述第五地址至上述第六地址。
上述M为不小于上述N的整数。第M轮目标权重计算为最后一轮权重计算。
306、将上述第一候选存储空间的上述第五地址至上述第六地址对应的存储空间设置为已分配的存储空间。
307、释放上述第一候选存储空间的上述第五地址至上述第六地址。
308、将上述第一候选存储空间的上述第五地址至上述第六地址对应的存储空间设置为未分配的存储空间。
309、在上述第六地址的下一地址至第七地址均未存储数据的情况下,将上述第五地址至上述第七地址设置为一个未分配的离散存储空间。
步骤309可以替换为:在上述目标存储器的第八地址至上述第五地址的上一地址均未存储数据的情况下,将上述第八地址至上述第六地址设置为一个未分配的离散存储空间。
本申请实施例中,能够有效减少内存碎片。
前述实施例描述的用于存储数据的方法可以应用于数据处理装置通过AI芯片执行数据处理任务的场景,即实时管理共享缓存的地址分配和释放;也可以应用于AI模型的编译场景。在AI模型的编译场景中,服务器可执行本申请实施例提供的用于存储数据的方法来模拟AI模型执行处理操作时共享缓存的分配,进而对AI模型编译得到能指示共享缓存的内存分配和释放的指令序列。数据处理装置中的AI芯片可执行指令序列来执行数据处理任务。AI芯片在执行指令序列来执行数据处理任务的过程中,按照指令序列中的指令将数据存储至共享缓存以及释放共享缓存中的数据,可以提供共享缓存的利用率。
图4为本申请实施例提供的一种数据处理装置的结构示意图,如图4所示,该装置包括:
确定单元401,用于基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;
确定单元401,还用于基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;
确定单元401,还用于基于上述多种候选存储方案中每种候选存储方案对应的目标权重,确定上述待存储数据的目标存储方案。
在一个可选的实现方式中,上述候选存储空间对应的候选存储方案包括第一候选存储方案和第二候选存储方案中的至少一种,其中,上述第一候选存储方案中的起始存储地址为上述候选存储空间的起始地址,上述第二候选存储方案中的结束存储地址为上述候选存储空间的结束地址。
在一个可选的实现方式中,上述候选存储方案对应的目标权重与上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,上述第二数据释放时间为与上述待存储数据在上述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。
在一个可选的实现方式中,确定单元401,具体用于基于上述待存储数据的生命周期和上述候选存储方案对应的候选存储空间的起始地址,确定上述候选存储方案的目标权重。
在一个可选的实现方式中,上述目标存储方案的确定使得上述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。
在一个可选的实现方式中,确定单元401,具体用于确定上述待存储数据的生命周期与上述待存储数据对应的最大生命周期之间的第一比值;确定上述候选存储方案对应的候选存储空间的起始地址与上述目标存储器的结束地址之间的第二比值;基于第一比值和第二比值,确定上述候选存储方案的目标权重。
在一个可选的实现方式中,上述候选存储方案的目标权重与上述第一比值和上述第二比值之差的绝对值负相关。
在一个可选的实现方式中,确定单元401,具体用于基于上述待存储数据对应的第一数据释放时间和与上述候选存储方案对应的存储位置相邻的存储空间所存储数据的第二数据释放时间,确定上述候选存储方案的第一权重;基于上述待存储数据的生命周期和上述候选存储方案对应的候选存储空间的起始地址,确定上述候选存储方案的第二权重;基于上述第一权重和上述第二权重的加权和,得到上述候选存储方案的目标权重。
在一个可选的实现方式中,确定单元401,具体用于基于上述待存储数据的第一数据释放时间、生命周期和每种候选存储方案对应的存储空间大小,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重。
在一个可选的实现方式中,上述目标存储器为人工智能AI芯片中的共享缓存。
在一个可选的实现方式中,上述目标存储方案对应的目标权重包括第一指标的倒数、上述第二指标的相反数以及上述第三指标的相反数的加权和;上述第一指标表征上述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,上述第二数据释放时间为与上述待存储数据在上述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间;上述第二指标表征第一比值和第二比值之差的绝对值,上述第一比值为上述待存储数据的生命周期与上述待存储数据对应的最大生命周期之间的比值,上述第二比值为上述候选存储方案对应的候选存储空间的起始地址与上述目标存储器的结束地址之间的比值;上述第三指标表征上述待存储数据所需占用的存储空间与上述目标存储器的总存储空间的比值。
在一个可选的实现方式中,确定单元401,具体用于从上述目标存储器未分配的多个离散存储空间中,确定可存储上述待存储数据的上述至少两个候选存储空间。
在一个可选的实现方式中,确定单元401,还用于将上述待存储数据存储至上述目标存储方案对应的候选存储空间的第一地址至第二地址;上述数据处理装置还包括:
设置单元402,用于将上述第一地址至上述第二地址对应的存储空间设置为已分配的存储空间。可选的,上述第一地址和上述第二地址中的一个为上述目标存储方案对应的候选存储空间的起始地址,或者,上述第一地址和上述第二地址中的一个为上述目标存储方案对应的候选存储空间的结束地址。
在一个可选的实现方式中,上述数据处理装置还包括:
释放单元403,用于释放上述第一地址至上述第二地址对应的存储空间;
设置单元402,还用于将上述第一地址至上述第二地址对应的存储空间设置为未分配的存储空间。
在一个可选的实现方式中,设置单元402,还用于在在上述第二地址的下一地址至第三地址均未存储数据的情况下,将上述第一地址至上述第三地址设置为一个未分配的离散存储空间。
在一个可选的实现方式中,设置单元402,还用于在上述目标存储器的第四地址至上述第一地址的上一地址均未存储数据的情况下,将上述第四地址至上述第二地址设置为一个未分配的离散存储空间。
图5是本申请实施例提供的一种数据处理装置的结构示意图。如图5所示,数据处理装置包括AI芯片和DDR,AI芯片可从DDR获取数据和指令,并将最终的处理结果输出至DDR,AI芯片中的计算单元执行处理任务,计算单元在处理数据的过程中将数据存储至共享缓存(即目标存储器)以及从该共享缓存获取数据。共享缓存的地址分配和释放可采用前述实施例中的用于存储数据的方法。在一些实施例中,在AI芯片执行某种数据处理任务时,数据处理装置运行的某个内存管理软件执行前述实施例中的用于存储数据的方法来管理共享缓存的地址分配和释放。在一些实施例中,在AI芯片执行某种数据处理任务时,执行从DDR读取的指令来实现数据处理任务,在实现数据处理任务的过程中从DDR读取的指令指示了共享缓存的地址分配和释放。也就是说,AI芯片执行从DDR读取的指令就可实现与前述实施例相同的内存分配和释放流程。
图6是本申请实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备),一个或一个以上AI芯片624。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。AI芯片624可执行CPU622分配的各种数据处理任务。服务器600可以为本申请提供的数据处理装置。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由数据处理装置所执行的步骤可以基于该图6所示的服务器结构。具体的,中央处理器622可实现图4中各单元的功能。
在本申请的实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现:基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;基于上述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将上述待存储数据存储至上述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;基于上述多种候选存储方案中每种候选存储方案对应的目标权重,确定上述待存储数据的目标存储方案。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述实施例所提供的用于存储数据的方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (17)
1.一种用于存储数据的方法,其特征在于,包括:
基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;
基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;
基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案;
所述基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:
确定所述待存储数据的生命周期与所述待存储数据对应的最大生命周期之间的第一比值;确定所述候选存储方案对应的候选存储空间的起始地址与所述目标存储器的结束地址之间的第二比值;基于第一比值和第二比值,确定所述候选存储方案的目标权重;
或者,基于所述待存储数据对应的第一数据释放时间和与所述候选存储方案对应的存储位置相邻的存储空间所存储数据的第二数据释放时间,确定所述候选存储方案的第一权重;基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的第二权重;基于所述第一权重和所述第二权重的加权和,得到所述候选存储方案的目标权重。
2.根据权利要求1所述的方法,其特征在于,所述候选存储空间对应的候选存储方案包括第一候选存储方案和第二候选存储方案中的至少一种,其中,所述第一候选存储方案中的起始存储地址为所述候选存储空间的起始地址,所述第二候选存储方案中的结束存储地址为所述候选存储空间的结束地址。
3.根据权利要求1所述的方法,其特征在于,所述候选存储方案对应的目标权重与所述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,所述第二数据释放时间为与所述待存储数据在所述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述基于所述待存储数据对应的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,包括:
基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的目标权重。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述目标存储方案的确定使得所述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述候选存储方案的目标权重与所述第一比值和所述第二比值之差的绝对值负相关。
7.根据权利要求1至3任一项所述的方法,其特征在于,所述目标存储器为人工智能AI芯片中的共享缓存。
8.一种数据处理装置,其特征在于,包括:
确定单元,用于基于待存储数据所需的存储空间大小,确定目标存储器中的至少两个候选存储空间;
所述确定单元,还用于基于所述待存储数据的第一数据释放时间和生命周期中的至少一项,确定将所述待存储数据存储至所述至少两个候选存储空间的多种候选存储方案中每种候选存储方案的目标权重,其中,每个候选存储空间对应于至少一种候选存储方案;
所述确定单元,还用于基于所述多种候选存储方案中每种候选存储方案对应的目标权重,确定所述待存储数据的目标存储方案;
所述确定单元,具体用于确定所述待存储数据的生命周期与所述待存储数据对应的最大生命周期之间的第一比值;确定所述候选存储方案对应的候选存储空间的起始地址与所述目标存储器的结束地址之间的第二比值;基于第一比值和第二比值,确定所述候选存储方案的目标权重;或者,
所述确定单元,具体用于基于所述待存储数据对应的第一数据释放时间和与所述候选存储方案对应的存储位置相邻的存储空间所存储数据的第二数据释放时间,确定所述候选存储方案的第一权重;基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的第二权重;基于所述第一权重和所述第二权重的加权和,得到所述候选存储方案的目标权重。
9.根据权利要求8所述的装置,其特征在于,所述候选存储空间对应的候选存储方案包括第一候选存储方案和第二候选存储方案中的至少一种,其中,所述第一候选存储方案中的起始存储地址为所述候选存储空间的起始地址,所述第二候选存储方案中的结束存储地址为所述候选存储空间的结束地址。
10.根据权利要求8所述的装置,其特征在于,所述候选存储方案对应的目标权重与所述待存储数据的第一数据释放时间和第二数据释放时间之间的间隔负相关,其中,所述第二数据释放时间为与所述待存储数据在所述候选存储方案中的存储位置相邻的存储空间所存储数据的数据释放时间。
11.根据权利要求8至10任一项所述的装置,其特征在于,
所述确定单元,具体用于基于所述待存储数据的生命周期和所述候选存储方案对应的候选存储空间的起始地址,确定所述候选存储方案的目标权重。
12.根据权利要求8至10任一项所述的装置,其特征在于,所述目标存储方案的确定使得所述目标存储器中存储的数据的生命周期随着存储地址单调递增或单调递减。
13.根据权利要求8至10任一项所述的装置,其特征在于,所述候选存储方案的目标权重与所述第一比值和所述第二比值之差的绝对值负相关。
14.根据权利要求8至10任一项所述的装置,其特征在于,所述目标存储器为人工智能AI芯片中的共享缓存。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被电子设备的处理器执行时,使所述处理器执行权利要求1至7任一项所述的方法。
16.一种电子设备,其特征在于,包括目标存储器和处理器,其中,所述处理器,用于执行如权利要求1至7任一项所述的方法。
17.根据权利要求16所述的电子设备,其特征在于,所述电子设备为AI芯片。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010420206.5A CN113688062B (zh) | 2020-05-18 | 2020-05-18 | 用于存储数据的方法和相关产品 |
JP2021557735A JP7164733B2 (ja) | 2020-05-18 | 2020-12-16 | データ記憶 |
KR1020217031361A KR20210144730A (ko) | 2020-05-18 | 2020-12-16 | 데이터 기억 |
PCT/CN2020/136966 WO2021232769A1 (zh) | 2020-05-18 | 2020-12-16 | 一种存储数据的方法及数据处理装置 |
TW109146150A TWI779438B (zh) | 2020-05-18 | 2020-12-25 | 數據儲存方法、電子設備及儲存媒體 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010420206.5A CN113688062B (zh) | 2020-05-18 | 2020-05-18 | 用于存储数据的方法和相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113688062A CN113688062A (zh) | 2021-11-23 |
CN113688062B true CN113688062B (zh) | 2022-08-26 |
Family
ID=78575569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010420206.5A Active CN113688062B (zh) | 2020-05-18 | 2020-05-18 | 用于存储数据的方法和相关产品 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP7164733B2 (zh) |
KR (1) | KR20210144730A (zh) |
CN (1) | CN113688062B (zh) |
TW (1) | TWI779438B (zh) |
WO (1) | WO2021232769A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153395B (zh) * | 2021-11-30 | 2024-05-14 | 浙江大华技术股份有限公司 | 一种对象存储数据生命周期管理方法、装置及设备 |
CN114442927B (zh) * | 2021-12-22 | 2023-11-03 | 天翼云科技有限公司 | 一种数据存储空间的管理方法及装置 |
CN115509463B (zh) * | 2022-11-15 | 2023-04-11 | 北京云成金融信息服务有限公司 | 一种基于数据中台的均衡化数据存储方法及系统 |
CN116909489B (zh) * | 2023-09-11 | 2024-02-27 | 北京紫光芯能科技有限公司 | 一种数据的管理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09198299A (ja) * | 1996-01-23 | 1997-07-31 | Nec Corp | メモリブロック確保解放装置 |
WO2018072420A1 (zh) * | 2016-10-20 | 2018-04-26 | 华为技术有限公司 | 存储管理方法及存储设备 |
CN110058786A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于控制存储系统中的写请求的方法、装置和计算机程序产品 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1271524C (zh) * | 2003-03-19 | 2006-08-23 | 华为技术有限公司 | 一种静态内存管理方法 |
JP4129693B2 (ja) * | 2006-05-18 | 2008-08-06 | コニカミノルタビジネステクノロジーズ株式会社 | メモリ管理方法 |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
KR20120109197A (ko) * | 2011-03-28 | 2012-10-08 | 삼성전자주식회사 | 휴대용 장치 상의 데이터 스트림 관리 시스템에서 메모리를 관리하는 방법 및 이를 위한 휴대용 장치 |
US9361224B2 (en) * | 2013-09-04 | 2016-06-07 | Red Hat, Inc. | Non-intrusive storage of garbage collector-specific management data |
CN104090848B (zh) * | 2014-07-16 | 2017-03-08 | 云南大学 | 一种周期性大数据处理的内存管理方法及装置 |
CN105278873B (zh) * | 2015-09-14 | 2018-10-19 | 浪潮(北京)电子信息产业有限公司 | 一种磁盘块的分配方法及装置 |
WO2017107015A1 (zh) * | 2015-12-21 | 2017-06-29 | 华为技术有限公司 | 存储空间的分配方法及存储设备 |
FR3050844B1 (fr) * | 2016-04-27 | 2018-11-23 | Morpho | Procede d'allocation d'espace memoire |
WO2019038859A1 (ja) * | 2017-08-23 | 2019-02-28 | 株式会社日立製作所 | 不揮発メモリデバイスを有するストレージシステム |
CN108287666B (zh) * | 2018-01-16 | 2021-01-26 | 中国人民公安大学 | 用于云存储环境的数据存储方法及装置 |
US11288180B2 (en) * | 2018-01-19 | 2022-03-29 | Micron Technology, Inc. | Management of storage resources allocated from non-volatile memory devices to users |
US10782897B2 (en) * | 2018-04-02 | 2020-09-22 | International Business Machines Corporation | Memory reduction for neural networks with fixed structures |
CN110555890B (zh) * | 2018-05-30 | 2023-10-20 | 珠海全志科技股份有限公司 | 一种内存管理方法及系统 |
CN109117273B (zh) * | 2018-08-17 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置及设备 |
CN109857678A (zh) * | 2019-01-31 | 2019-06-07 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
CN110427394B (zh) * | 2019-08-08 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 数据操作方法及装置 |
CN111078585B (zh) * | 2019-11-29 | 2022-03-29 | 智器云南京信息科技有限公司 | 一种内存缓存管理方法、系统、存储介质及电子设备 |
-
2020
- 2020-05-18 CN CN202010420206.5A patent/CN113688062B/zh active Active
- 2020-12-16 JP JP2021557735A patent/JP7164733B2/ja active Active
- 2020-12-16 KR KR1020217031361A patent/KR20210144730A/ko not_active Application Discontinuation
- 2020-12-16 WO PCT/CN2020/136966 patent/WO2021232769A1/zh active Application Filing
- 2020-12-25 TW TW109146150A patent/TWI779438B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09198299A (ja) * | 1996-01-23 | 1997-07-31 | Nec Corp | メモリブロック確保解放装置 |
WO2018072420A1 (zh) * | 2016-10-20 | 2018-04-26 | 华为技术有限公司 | 存储管理方法及存储设备 |
CN110058786A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于控制存储系统中的写请求的方法、装置和计算机程序产品 |
Non-Patent Citations (1)
Title |
---|
嵌入式系统中一种池式内存管理方案;张磊等;《实验科学与技术》;20070428(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021232769A1 (zh) | 2021-11-25 |
KR20210144730A (ko) | 2021-11-30 |
CN113688062A (zh) | 2021-11-23 |
JP2022537007A (ja) | 2022-08-23 |
JP7164733B2 (ja) | 2022-11-01 |
TWI779438B (zh) | 2022-10-01 |
TW202145010A (zh) | 2021-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113688062B (zh) | 用于存储数据的方法和相关产品 | |
US8453132B2 (en) | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems | |
KR101759266B1 (ko) | 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법 | |
JP5805675B2 (ja) | ガーベッジコレクションに対するcpuサポート | |
JP2014504768A (ja) | 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置 | |
CN102109980B (zh) | 在托管运行时环境中执行自适应预取操作的方法和装置 | |
US20140258672A1 (en) | Demand determination for data blocks | |
JP7311981B2 (ja) | 機械学習訓練のためのスラブ基盤のメモリ管理 | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
EP3252595A1 (en) | Method and device for running process | |
US20190235849A1 (en) | Technologies for translation cache management in binary translation systems | |
US20070300210A1 (en) | Compiling device, list vector area assignment optimization method, and computer-readable recording medium having compiler program recorded thereon | |
WO2018125408A1 (en) | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment | |
US20160357442A1 (en) | Parallel computer, migration program and migration method | |
KR102563648B1 (ko) | 멀티 프로세서 시스템 및 그 구동 방법 | |
US9842049B2 (en) | Data deployment determination apparatus, data deployment determination program, and data deployment determination method | |
CN111279308B (zh) | 代码转换期间的屏障减少 | |
KR102356704B1 (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 | |
CN113010453A (zh) | 一种内存管理的方法、系统、设备及可读存储介质 | |
KR20170000516A (ko) | 동적 프로파일러를 통한 객체의 특성을 이용한 dram과 플래시 하이브리드 기억장치에서의 가비지 컬렉션 수행 방법 및 그를 위한 시스템 | |
Hong et al. | Segment-Based Multiple-Base Compressed Addressing for Flexible JavaScript Heap Allocation | |
Tasneem et al. | Android memory optimization | |
CN110276454B (zh) | 用于机器学习的系统和控制该系统的方法以及电子系统 | |
Lee et al. | An Efficient Memory Management for Mobile Operating Systems Based on Prediction of Relaunch Distance. | |
Lee et al. | A generic framework for soft real-time program executions on NAND Flash memory in multi-tasking embedded systems |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40054527 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |