CN116361234B - 内存管理方法、装置及芯片 - Google Patents
内存管理方法、装置及芯片 Download PDFInfo
- Publication number
- CN116361234B CN116361234B CN202310647363.3A CN202310647363A CN116361234B CN 116361234 B CN116361234 B CN 116361234B CN 202310647363 A CN202310647363 A CN 202310647363A CN 116361234 B CN116361234 B CN 116361234B
- Authority
- CN
- China
- Prior art keywords
- data stream
- memory
- block
- processed
- storage block
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 533
- 238000007726 management method Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000013507 mapping Methods 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000013500 data storage Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 239000012634 fragment Substances 0.000 abstract description 5
- 230000015572 biosynthetic process Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
-
- 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
Abstract
本申请公开了一种内存管理方法、装置及芯片。该方法根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区;当接收到待处理的数据流时,检测存储区是否存在用于为待处理的数据流分配的内存空间;如果存在,则根据待处理的数据流对应的私有存储块、大存储块和小存储块依次检测其是否存在对应的内存空间;如果这些存储块均不存在相应的内存空间,则根据待处理的数据流对应的分组,在该分组中查找其他数据流的存储块,根据该存储块为待处理的数据流分配对应的内存空间;如果其他数据流的存储块也不能分配相应的内存空间,则向片外存储空间申请对应的内存空间。本申请可以减少内存碎片的形成,提高内存的利用率,改善系统的性能。
Description
技术领域
本申请涉及芯片内存管理技术领域,特别涉及一种内存管理方法、装置及芯片。
背景技术
在一些应用场景下的芯片或可编程逻辑器件中,比如交换机芯片、DPU(DeepLearning Processing Unit)芯片中,通常有大量的数据需要进行处理,一般使用SRAM(Static Random Access Memory,静态随机存取存储器)和DDR(Double Data Rate,双倍数据速率内存)作为内存来存储这些数据。目前常用的做法是,将内存划分成多个存储块,再通过链表或位图(bitmap)的形式来管理这些存储块,当存储数据时,将数据放入一个或者多个存储块,当释放数据时,将对应的存储块释放。
而芯片内部可能划分成多个功能模块,分别处理不同的数据流,而对于每种功能模块可能需要不同大小的内存空间,因此一般将内存划分成多个内存池,比如本地内存池对应为对应功能模块的私有内存,公共内存池可供各个功能模块共用。不同应用场景下所需要处理的数据流大小可能不同,一些应用场景下各个功能模块需要处理的数据流大小是固定的或相近的,一些应用场景下各个功能模块需要处理的数据流大小可能相差较大或者存在固定的比例关系。对于第一种应用场景,通常将内存池划分成大小相等的存储块,每种数据流对应一个存储块;对于第二种应用场景,通常将内存池划分成大小相等的存储块,每个数据对应一个或多个存储块,或者划分成多种大小的存储块,每种数据对应其大小的存储块。
发明人在实现本申请实施例的过程中发现,虽然可以通过公共存储块来实现存储资源的动态分配,但功能模块所能最大能占用的内存池为本功能模块的内存池加上所有的公共内存池,在某些场景下,某些功能模块的存储需求超过本功能模块的内存池和所有公共内存池的和,而另一些功能模块的所需的内存池长期处于较低水平,但这些功能模块内私有的存储块不能被其他功能模块利用,从而整体的内存池利用率仍然处于较低水平。
发明内容
本申请实施方式主要解决的技术问题是在芯片/可编程逻辑器件等中,如何提高内存的空间利用率。
为解决上述技术问题,本申请实施方式采用的一个技术方案是:提供一种内存管理方法,包括:根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块、大存储块和小存储块;当接收到待处理的数据流时,检测所述存储区是否存在用于为所述待处理的数据流分配的内存空间;如果所述存储区存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间;如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的分组,在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间。
为解决上述技术问题,本申请实施方式采用的另一个技术方案是:提供一种内存管理装置,包括:内存分片模块,用于根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块、大存储块和小存储块;内存空间检测模块,用于当接收到待处理的数据流时,检测所述存储区是否存在用于为所述待处理的数据流分配的内存空间;内存分配模块,用于如果所述存储区存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间;所述内存分配模块还用于,如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的分组,在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间。
为解决上述技术问题,本申请实施方式采用的又一个技术方案是:提供一种芯片,所述芯片包括处理器和存储器,所述存储器用于存储一个或多个计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述处理器执行如上所述的内存管理方法。
本申请实施例提供的内存管理方法、装置以及芯片,当接收到待处理的数据流时,首先检测存储区是否存在用于为所述待处理的数据流分配的内存空间,如果存在,基于当前数据流对应的私有存储块、大存储块和小存储块的优先级顺序分别查找是否存在为所述待处理的数据流分配的内存空间,如果都不存在相应的内存空间,再从当前分组的其他数据流申请相应的内存空间。由此,通过按照划分好的存储块去申请应用程序需要的内存空间,从而可以减少内存碎片的形成,提高内存的利用率。当内存中有大量不连续的小块空闲内存时,可能无法找到足够大的连续内存块来满足待处理的数据流的内存需求,从而导致内存分配失败。通过本申请实施例提供的实施方式来划分一定大小的连续内存块,可以减少内存碎片的数量,并且更容易找到足够大的连续内存块。此外,本申请实施例提供的实施方式还可以提高内存分配的速度和效率,从而改善系统的性能。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的内存管理系统的系统架构图;
图2是本申请实施例提供的一种片内存储空间的结构示意图;
图3是本申请实施例提供的一种根据数据流的大小在片内存储器中映射一片由私有存储块、大存储块和小存储块组成的数据存储结构示意图;
图4是本申请实施例提供的一种小存储块对应的bitmap的结构示意图;
图5是本申请实施例提供的中间数据流对应的计数器的示意图;
图6是本申请实施例提供的片外存储空间对应的bitmap的结构示意图;
图7是本申请实施例提供的一种片外存储空间的结构示意图;
图8是本申请实施例提供的另一种片外存储空间的结构示意图;
图9是本申请实施例提供的一种内存管理方法的流程示意图;
图10是本申请实施例提供的另一种内存管理方法的流程示意图;
图11是本申请实施例提供的内存管理装置400的结构示意图;
图12是本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互组合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块的划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例提供的内存管理方法可应用于内存管理系统,如图1所示,该内存管理系统中可以包括逻辑芯片和片外存储器。该逻辑芯片可以为FPGA、CPLD等,也可以为处理器等。当逻辑芯片为FPGA、CPLD时,可以通过烧录在其中固化功能模块,当逻辑芯片为处理器时,可以通过加载机器可读存储介质的方式,使其执行对应功能。
在逻辑芯片中,可以设置有缓存,在该缓存中设置有片内存储器。该片内存储器具体可以是SRAM(Static Random Access Memory,静态随机存取存储器)、DRAM(DynamicRandom Access Memory,动态随机存储器)等,根据具体的应用场景和设计要求可选择合适的片内存储器。
在本申请实施例中,片内存储器以分组的方式存储数据流,片内存储器包括至少一个分组,每一个分组用于存储至少一种数据流,每种数据流对应存储于私有存储块、大存储块、小存储块中的一种或几种。具体地,如图2所示,可以将大小接近或者相邻数据流比例为正整数的数据流分成一个组(group),片内存储空间可以由多个group组成,每个group之间相互独立,比如如图2所示,group-1对应的数据流是1KB、4KB和16KB,group-n对应的数据流是128KB、256KB和512KB。其中,每一种数据流由小存储块和/或私有存储块和/或大存储块组成,比如,图2中,1KB数据流由私有存储块和大存储块组成,4KB数据流由小存储块、私有存储块和大存储块组成,16KB数据流由小存储块和私有存储块组成。其中,不同的group中相同类的存储块存储不同大小的数据流时其存储方式不同,比如图2中4KB数据流对应的小存储块的存储结构可以是4个1KB的数据块构成,16KB数据流对应的小存储块的存储结构可以是4个4KB的数据块构成。其中,上述在划分group时是将大小接近或者相邻数据流比例为正整数的数据流分成一个group,每个group中的数据流之间可以相互“借用”各自的空间,但是不同group之间不能互相“借用”空间,比如,一个系统中有1KB、4KB、16KB、128KB、256KB、512KB六种数据流,则由于1KB、4KB、16KB的大小相差较小,并且相邻的数据流比例为正整数,则可以将其划分成group1,同理将128KB、256KB、512KB划分成另一个group2,group1中的三种数据流可以相互“借用”空间,group2中的三种数据流也可以相互“借用”空间,但是group1和group2之间不能互相“借用”空间。又比如,系统中有1KB,2KB,6KB、32KB、64KB、128KB六种数据流,则可以将1KB、2KB、6KB分成一个group,32KB、64KB、128KB分成另一个group。又比如,系统中有1KB,2KB,6KB、12KB、24KB五种数据流,则也可以将1KB、2KB、6KB分成一个group,12KB、24KB分成另一个group;也可以将1KB、2KB分成一个group,6KB、12KB、24KB分成另一个group。上述采用group的方式划分不同大小的数据流,从而可以灵活的“借用”同组内的其他数据流的存储空间。
上述通过分组的方式存储不同大小的数据流,每一分组中的数据流对应包括私有存储块、大存储块和小存储块。其中,该私有存储块可以给当前数据流使用,该大存储块可以给当前数据流以及更大数据流使用,该小存储块可以给当前数据流以及更小数据流使用,其中,该更大数据流是比当前数据流更大的数据流,可以是大规模的数据流,从多个源头传输而来,需要进行处理和存储。该更小数据流是比当前数据流更小的数据流,可以是从当前数据流中提取的一部分数据或者是从其他来源获取的数据。根据应用场景和数据处理的需求会对应有相应大小的数据流。其中,私有存储块和大存储块之间并无物理上的严格区分,仅由设定的门限值进行划分,比如,在计算机系统中,可以根据门限值将数据流对应的存储块划分为任意大小的私有存储块、小存储块和大存储块,该任意大小的私有存储块、小存储块和大存储块对应的全部内存容量与该数据流大小相等。例如,如图3所示,图3示出了根据数据块的大小在SRAM中映射一片由私有存储块、大存储块和小存储块组成的数据存储结构,假设数据块的大小是4KB,根据门限值可以划分0至1KB对应为小存储块,1KB至3KB对应为私有存储块,3KB至4KB对应为大存储块。还可以根据门限值划分0至1KB对应为小存储块,1KB至2KB对应为私有存储块,那么2KB至4KB对应为大存储块。其中,小存储块通常设置于一片存储区的边缘,从而方便管理和维护,方便访问和读写,节约存储空间,提高存储系统的资源利用率。
在片内存储器中为每种大小数据映射一片存储区时,可以根据数据流大小确定数据流的种类,根据数据流大小的种类设置其对应的存储区。具体地,当所述数据流的种类为两类时,确定所述数据流的种类包括第一数据流和第二数据流,则,设置所述私有存储块和所述大存储块作为所述第一数据流的存储区,并且设置所述私有存储块和所述小存储块作为所述第二数据流的存储区。其中,第一数据流小于第二数据流,如果系统仅包括第一数据流和第二数据流,则第一数据流是最小数据流,第二数据流是最大数据流。比如,假设系统中仅存在1KB和4KB的数据流,则两种大小的数据流确定数据流的种类仅包括第一数据流1KB和第二数据流4KB。该1KB的数据流映射的存储区包括上述私有存储块和大存储块,由于1KB数据流本身就是第一数据流,而小存储块是给当前数据流和比当前数据流更小的数据流使用,当前没有比该第一数据流更小的数据流了,那么可分配除了私有存储块外的大存储块给该1KB数据流使用。该4KB的数据流映射的存储区包括上述私有存储块和小存储块,由于4KB数据流本身就是第二数据流,而大存储块是给当前数据流和比当前数据流更大的数据流使用,当前没有比该第二数据流更大的数据流了,那么可以分配除了私有存储块外的小存储块给该4KB数据流使用。当所述数据流的种类大于两类时,确定所述数据流的种类包括第一数据流、第二数据流和中间数据流,则,设置所述私有存储块和所述大存储块作为所述第一数据流的存储区,设置所述私有存储块和所述小存储块作为所述第二数据流的存储区,并且设置所述私有存储块、所述小存储块和所述大存储块作为所述中间数据流的存储区。其中,所述第一数据流、所述中间数据流和所述第二数据流的大小关系为所述第一数据流小于所述中间数据流,所述中间数据流小于所述第二数据流。其中,数据流的种类大于两类可以是三类、四类、五类等以上,比如,假设系统中仅存在1KB、4KB、16KB的数据流,则1KB为第一数据流,4KB为中间数据流,16KB为第二数据流;假设系统中仅存在1KB、4KB、16KB、64KB的数据流,则1KB为第一数据流,4KB、16KB为中间数据流,64KB为第二数据流。因此,需要根据当前待处理的每种数据流的大小确定当前的第一数据流、第二数据流和中间数据流,从而基于小存储块、大存储块和私有存储块为每种数据流划分对应的存储结构。
在逻辑芯片中,还设置有片内控制器,其可以是一种由硬件实现的电路,用于控制逻辑芯片内部的操作和数据流动。片内控制器可以根据bitmap空间、指针空间、计数空间等,对片内数据进行读写。bitmap空间是存储块中用于表示数据状态的一个二进制位图,片内控制器可以根据位图的状态来判断某个数据是否存在于存储块中,或者是否需要进行某种操作。指针空间是存储块中用于存储指向其他数据块的指针,片内控制器可以通过指针空间来访问其他存储块中的数据,或者将数据从当前存储块中移动到其他存储块中。计数空间通常用于记录存储块中的数据量等信息,片内控制器可以根据计数空间的状态来触发相应的操作,例如将数据写入外部存储器中。片内控制器可以根据存储块的各种状态信息,对存储块中的数据进行读写、移动等操作,从而实现数据的有效管理和利用。
其中,bitmap是在处理数据时常用的一种数据结构,用于在有限的空间中快速记录和查询某些元素是否存在。通常情况下,bitmap的大小与处理的数据流的大小成正比,因为处理的数据越多,需要记录的元素就越多,因此bitmap所占用的空间也就越大。具体来说,本申请实施例会根据每种大小的数据流对应的存储区分别构建所述存储区对应的bitmap。对于小存储块,根据所述小存储块存储的数据流大小和所述数据流大小的比例设置所述小存储块对应的bitmap。比如,如图4所示,以4KB大小的数据流为例,对于小存储块,为4:1的关系,因此设置4bit,即4KB大小的数据流由4个1KB组成,每个1KB由1bit的bitmap表示该1KB的元素的占用情况,比如,1KB对应的bitmap为0,则表示该1KB的元素没有被占用;1KB对应的bitmap为1,则表示该1KB的元素被占用;如果4个1KB对应的bitmap均为1,则表示该4KB的数据流被占用;如果4个1KB对应的bitmap均为0,则表示该4KB的数据流未被占用。对于私有存储块和大存储块,根据所述私有存储块和所述大存储块存储的数据流大小分别设置所述私有存储块和所述大存储块对应的bitmap,其各自与片内存储空间可以是一一对应的关系,比如16KB大小的数据流存储于大存储块时,可以设置16KB由1bit的bitmap表示该16KB的元素的占用情况,比如,16KB对应的bitmap为0,则表示该16KB的元素没有被占用;16KB对应的bitmap为1,则表示该16KB的元素被占用。在本申请实施例中,通过上述方式,可以在占用较小空间的情况下,快速记录和查询数据流中的元素是否存在,采用上述bitmap的数据结构,控制逻辑占用的资源较少,从而提高数据处理的效率。其中,片内存储空间采用上述group的方式划分不同大小的数据流时,对于对应的bitmap空间也可以存放在片内存储空间中,但其是否与数据存储空间在一起不做固定要求。
其中,指针空间是指用于存储指针的内存空间,它是一种数据类型,存储了某个对象或变量的内存地址。在程序运行时,指针可以被用来访问和操作这个对象或变量。在本申请实施例中,1个首指针,记录每种数据块目前存储时间最久的数据块的地址,当读取数据时,从该首地址开始读取;1个尾指针,记录每种数据块目前存储时间最短的数据块的地址,当写入数据时,从该尾地址之后开始写入。
其中,计数空间是用于存储占用的存储块的个数。计数空间通常与内存块相对应,每种数据流都有一个对应的计数空间,用于存储该数据流对应的被占用的内存块的个数。当某个内存块被占用时,该内存块的占用计数会加1;当该占用的内存块被释放时,该内存块的占用计数会减1。在内存分配中,计数空间通常是由操作系统或程序分配的一块内存,用于存储计数器或指针等信息。计数空间的寻址功能通过指针来实现,当程序需要使用计数空间中的信息时,它会使用指针来访问该计数空间,指针是一个变量,它包含了计数空间的地址,程序可以通过指针来访问计数空间中的数据,包括读取和写入。
在本申请实施例中,根据所述数据流的大小为每种数据流设置计数器。具体地,当所述数据流为第一数据流时,为所述第一数据流设置私有存储块计数器、第一大存储块计数器和第二大存储块计数器;当所述数据流为中间数据流时,为所述中间数据流设置私有存储块计数器、第一大存储块计数器、第二大存储块计数器、第一小存储块计数器和第二小存储块计数器;当所述数据流为所述第二数据流时,为所述第二数据流设置私有存储块计数器、第一小存储块计数器和第二小存储块计数器。其中,所述私有存储块计数器用于记录当前数据流对应的私有存储块中的有效数据块个数。所述第一大存储块计数器用于记录当前数据流对应的大存储块中的有效数据块个数。所述第二大存储块计数器用于记录当前数据流对应的下一数据流的大存储块中的有效数据块个数,比如4KB的数据流在16KB的大存储块中有多少个4KB数据块。所述第一小存储块计数器用于记录当前数据流对应的小存储块中的有效数据块个数。所述第二小存储块计数器用于记录当前数据流对应的下一数据流的小存储块中的有效数据块个数,比如4KB的数据流在1KB的小存储块中有多少个4KB数据块。本申请实施例中的每种数据流对应至多5个计数器,其中,第一数据流和第二数据流对应3个计数器,中间数据流对应5个计数器,例如如图5所示,是中间数据流对应的5个计数器。本申请实施例设计的计数器与数据流的种类对应,不同大小的数据流设计相应的计数器个数,从而能较好的监控数据流的实时性和准确性。
在本申请实施例中,上述用于索引的bitmap、指针空间和计数空间,以及用来存储数据的存储空间,均可以采用不限于本示例中片内的SRAM形式,例如:对于片内存储空间,bitmap、指针空间和计数空间存储体为本die内的一个或多个SRAM;对于片外存储空间,bitmap和数据空间的存储体为同一个DDR。此外,对于数据流的种类和比例大小,不仅仅局限于1KB,4KB,16KB等,也可以根据应用场景,有更多大小数据流,数据流大小的比例也不局限于1:4,也可能是1:2,1:32等,甚至可以有不同比例的数据流,比如1KB,16KB,32KB等。
在逻辑芯片中,还设置有内存分流器,其用于控制数据流的走向,优先片内存储空间,只有每种数据流对应的片内存储空间用完时才将数据流存入片外存储空间,从而可以最大限度地利用片内存储空间,因为片内存储空间通常比片外存储空间更快、更可靠。这可以提高数据的读写速度和系统的响应速度。同时,由于只在每种数据流对应的片内存储空间用完时的情况下才使用片外存储空间,可以减少对系统中其他部分的影响。
在逻辑芯片中,还设置有片外控制器,该片外控制器也可以是一种由硬件实现的电路,用于控制逻辑芯片外部的操作和数据流动。片外控制器可根据各存储块的门限值、bitmap空间、指针空间、计数空间,对片外数据进行读写。
对于片外存储空间,其主要包括存储数据的数据空间和管理数据的bitmap空间。比如片外存储器为DDR,DDR的绝大多数空间用于存储数据,这些空间可被划分为最小的数据块大小,比如1KB。
在本申请实施例中,片外存储空间对应的bitmap空间可以以两种形式实现。一种是对应于每种大小的数据块,都有一个对应的bitmap,当该bitmap的值为1时,代表对应1KB为本队列占用,另外还有一个数据bitmap,当该bitmap的值为1时,代表对应的1KB已存储数据块。该第一种实现方案将数据分成大小为1KB的块,每个块对应一个bitmap。其中,一个bitmap用于记录该1KB块是否被本队列占用,另一个bitmap用于记录该1KB块是否已经存储了数据。具体来说,当该1KB块被本队列占用时,对应的bitmap的值为1;当该1KB块已经存储了数据时,对应的数据bitmap的值为1,这两个bitmap通过检查其对应的位,可以判断该1KB块的使用情况。本方案可以用于实现一些数据存储的功能,例如文件系统中的数据块管理、数据库中的数据页管理等。通过将数据分成固定大小的块,并使用bitmap来管理这些块的使用情况,可以提高数据的存储效率和管理效率。
片外存储空间的bitmap空间的另一种实现方式是,采用多级bitmap。如图6所示,以1KB、4KB、16KB数据块大小为例,最上层的1bit代表该16KB空间是否被占用,第二层的1bit代表该4KB空间是否被占用,第三层的1bit代表该1KB空间是否被占用,数据读写时根据每层的bitmap状态进行存储块管理。在本实施例中,将数据存储的空间划分成多个层次,每个层次都有一个对应的位图来管理存储块的状态,每个位图只记录当前层次的存储块状态,而不考虑其他层次的状态,在读写数据时,根据不同层次的位图状态来选择合适的存储块进行读写。由此,可以更好地管理存储空间。同时,由于每个位图只记录当前层次的存储块状态,因此可以提高访问速度。
在一些实施例中,片外存储空间的整体结构可以如图7和图8所示,图7中的片外存储空间的bitmap是跟随每个group的分布式结构,图8中的片外存储空间的bitmap是单独占据一片区域的集中式结构。其中,每个group的划分可参考上述实施例,也可以是将大小接近或者相邻数据流的比例为正整数的数据流分成一个group。
本申请实施例提供的内存管理系统,通过设置片内存储空间和片外存储空间,从而结合了片外存储大容量和片内存储速度快的优势。通过设计的三种类型的存储块为不同大小的数据流提供映射存储区,可以减少内存碎片的数量,提高内存空间利用率。另外,片内存储空间对应的bitmap的数据结构,能够使控制逻辑占用较少的资源。
本申请实施例提供了一种内存管理方法,如图9和图10所示,该内存管理方法包括:
S101、根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块、大存储块和小存储块。
S102、当接收到待处理的数据流时,检测当前数据流的私有存储块是否存在用于为所述待处理的数据流分配的内存空间。所述当前数据流即是所述待处理的数据流。
如果所述私有存储块存在所述内存空间,则根据所述当前数据流的私有存储块为所述待处理的数据流分配内存空间,如果所述私有存储块不存在所述内存空间,则执行下述步骤S103。
S103、检测当前数据流的大存储块是否存在用于为所述待处理的数据流分配的内存空间。
如果所述大存储块存在所述内存空间,则根据所述当前数据流的大存储块为所述待处理的数据流分配内存空间,如果所述大存储块不存在所述内存空间,则执行下述步骤S104。
S104、检测当前数据流的小存储块是否存在用于为所述待处理的数据流分配的内存空间。
如果所述小存储块存在所述内存空间,则根据所述当前数据流的小存储块为所述待处理的数据流分配内存空间。如果所述小存储块不存在所述内存空间,则执行下述步骤S105。
S105、检测大数据流对应的小存储块是否存在用于为所述待处理的数据流分配的内存空间。
如果大数据流对应的小存储块存在所述内存空间,则根据当前大数据流的小存储块为所述待处理的数据流分配内存空间。如果大数据流对应的小存储块不存在所述内存空间,则执行下述步骤S106。
S106、检测小数据流对应的大存储块是否存在用于为所述待处理的数据流分配的内存空间。
其中,所述大数据流的内存空间大于所述当前数据流的内存空间,所述小数据流的内存空间小于所述当前数据流的内存空间。所述大数据流、所述小数据流和所述当前数据流均属于相同的分组(group)。
如果小数据流对应的大存储块也不能为所述待处理的数据流分配内存空间,则执行步骤S107。
S107、向片外存储空间申请分配所述待处理的数据流对应的数据存储空间。
上述步骤S101至步骤S107详细的过程可参考上述系统实施例。
当有新的应用程序发送内存分配请求时,或者应用程序发送新的内存分配请求时,可以重复上述步骤S102至步骤S107,重新申请内存空间。
在本申请的方法实施例中,数据流的存储和写入顺序按照上述优先级关系,优先级从高到低为当前数据流的私有存储块,当前数据流的大存储块,当前数据流的小存储块,更大的数据流的小存储块,更小数据流的大存储块,片外存储空间。其中,从当前数据流中按照私有存储块、大存储块和小存储块的顺序为待处理的数据流申请需要的内存空间,如果都未能为该待处理的数据流分配到对应的内存空间,则在相同的分组中“借用”其他数据流的内存空间,该“借用”过程优先片内的大数据流的小存储块,然后是小数据流的大存储块。如果“借用”相同分组内的片内其他数据流的存储块也不能为该待处理的数据流申请到合适的内存空间,则采用“借用”片外方式,即向片外存储空间申请所需的内存空间。由此,能够提高内存空间的利用率。特别是对应于某类大小的数据流,可以向更小的数据流借用存储空间,也可以向更大的数据流借用存储空间,从而使得空间利用率极高。
本申请实施例提供了一种内存管理装置400,如图11所示,该内存管理装置400包括内存分片模块410、内存空间检测模块420、内存分配模块430、Bitmap配置模块440和计数器设置模块450。
内存分片模块410用于根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块,大存储块,和小存储块。
内存空间检测模块420,用于当接收到待处理的数据流时,检测所述存储区是否存在用于为所述待处理的数据流分配的内存空间。
内存分配模块430用于如果所述存储区存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间。
Bitmap配置模块440用于根据所述每种大小的数据流对应的存储区分别构建所述存储区对应的bitmap。
计数器设置模块450用于根据所述数据流的大小为每种大小的数据流设置计数器。
可选地,如果所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块中不存在为所述待处理的数据流分配的内存空间,内存分配模块430还用于根据所述待处理的数据流对应的分组,在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间。
可选地,内存分片模块410具体用于根据数据流的大小确定所述数据流对应的所述分组,以及所述数据流的种类;当所述数据流的种类为两类时,确定所述数据流包括第一数据流和第二数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,并且设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区;当所述数据流的种类大于两类时,确定所述数据流包括第一数据流、第二数据流和中间数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区,并且设置所述分组中的所述私有存储块、所述小存储块和所述大存储块作为所述中间数据流的存储区。
可选地,内存分配模块430具体用于如果所述存储区存在为所述待处理的数据流分配的内存空间,检测当前数据流的私有存储块是否存在用于为所述待处理的数据流分配的内存空间;如果所述私有存储块存在所述内存空间,则根据所述当前数据流的私有存储块为所述待处理的数据流分配内存空间,如果所述私有存储块不存在所述内存空间,则检测当前数据流的大存储块是否存在用于为所述待处理的数据流分配的内存空间;如果所述大存储块存在所述内存空间,则根据所述当前数据流的大存储块为所述待处理的数据流分配内存空间,如果所述大存储块不存在所述内存空间,则检测当前数据流的小存储块是否存在用于为所述待处理的数据流分配的内存空间;如果所述小存储块存在所述内存空间,则根据所述当前数据流的小存储块为所述待处理的数据流分配内存空间。
可选地,如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,内存分配模块430具体还用于:检测所述分组中的大数据流对应的小存储块是否存在用于为所述待处理的数据流分配的内存空间;如果不存在,则检测所述分组中的小数据流对应的大存储块是否存在用于为所述待处理的数据流分配的内存空间;其中,所述大数据流的内存空间大于所述当前数据流的内存空间,所述小数据流的内存空间小于所述当前数据流的内存空间。
可选地,如图11所示,当所述分组中的其他数据流的存储块不能为所述待处理的数据流分配对应的内存空间时,内存分配模块430还用于:向片外存储空间申请分配所述待处理的数据流对应的数据存储空间。
可选地,Bitmap配置模块440具体用于当所述数据流对应的存储区包括所述小存储块时,根据所述小存储块存储的数据流和所述数据流的大小比例设置所述小存储块对应的bitmap;当所述数据流对应的存储区包括所述私有存储块和所述大存储块时,根据所述私有存储块和所述大存储块存储的数据流大小分别设置所述私有存储块和所述大存储块对应的bitmap。
可选地,计数器设置模块450具体用于当所述数据流为所述第一数据流时,为所述第一数据流设置私有存储块计数器、第一大存储块计数器和第二大存储块计数器;当所述数据流为所述中间数据流时,为所述中间数据流设置私有存储块计数器、第一大存储块计数器、第二大存储块计数器、第一小存储块计数器和第二小存储块计数器;当所述数据流为所述第二数据流时,为所述第二数据流设置私有存储块计数器、第一小存储块计数器和第二小存储块计数器;其中,所述私有存储块计数器用于记录当前数据流对应的私有存储块中的有效数据块个数,所述第一大存储块计数器用于记录当前数据流对应的大存储块中的有效数据块个数,所述第二大存储块计数器用于记录当前数据流对应的下一数据流的大存储块中的有效数据块个数,所述第一小存储块计数器用于记录当前数据流对应的小存储块中的有效数据块个数,所述第二小存储块计数器用于记录当前数据流对应的下一数据流的小存储块中的有效数据块个数。
本申请实施例提供的内存管理装置,通过设置片内存储空间和片外存储空间,从而结合了片外存储大容量和片内存储速度快的优势。通过设计的三种类型的存储块为不同大小的数据流提供映射存储区,可以减少内存碎片的数量,提高内存空间利用率。另外,片内存储空间对应的bitmap的数据结构,能够使控制逻辑占用较少的资源。
本申请实施例提供了一种芯片,所述芯片可用于执行上述实施例中的内存管理方法。如图12所示,所述芯片500包括一个或多个处理器510以及存储器520,图12中以一个处理器510为例。处理器510和存储器520可以通过总线或者其他方式连接,图12以通过总线连接为例。
存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的内存管理方法对应的程序指令/模块(例如,附图11所示的显示各个模块)。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行芯片的各种功能应用以及数据处理,即实现上述方法实施例内存管理方法。
存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据内存管理装置的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器。
所述一个或者多个模块存储在所述存储器520中,当被所述一个或者多个处理器510执行时,执行上述任意方法实施例中的内存管理方法,例如执行图9和图10所示的方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例提供的芯片包括但不限于:处理器芯片、交换机芯片、DPU芯片等。
本申请实施例提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图12中的一个处理器510,可使得一个或多个处理器510执行上述任意方法实施例中的内存管理方法。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被所述芯片执行时,使所述芯片能够执行上述任意方法实施例中的内存管理方法。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种内存管理方法,其特征在于,包括:
根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块、大存储块和小存储块;
当接收到待处理的数据流时,检测所述存储区是否存在用于为所述待处理的数据流分配的内存空间;
如果所述存储区存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间;
如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的分组,在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间;
其中,所述根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间,包括:
检测当前数据流的私有存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述私有存储块存在所述内存空间,则根据所述当前数据流的私有存储块为所述待处理的数据流分配内存空间,如果所述私有存储块不存在所述内存空间,则检测当前数据流的大存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述大存储块存在所述内存空间,则根据所述当前数据流的大存储块为所述待处理的数据流分配内存空间,如果所述大存储块不存在所述内存空间,则检测当前数据流的小存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述小存储块存在所述内存空间,则根据所述当前数据流的小存储块为所述待处理的数据流分配内存空间;
其中,所述在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间,包括:
检测所述分组中的大数据流对应的小存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果不存在,则检测所述分组中的小数据流对应的大存储块是否存在用于为所述待处理的数据流分配的内存空间;
其中,所述大数据流的内存空间大于所述当前数据流的内存空间,所述小数据流的内存空间小于所述当前数据流的内存空间。
2.根据权利要求1所述的方法,其特征在于,所述根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,包括:
根据数据流的大小确定所述数据流对应的所述分组,以及所述数据流的种类;
当所述数据流的种类为两类时,确定所述数据流包括第一数据流和第二数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,并且设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区;
当所述数据流的种类大于两类时,确定所述数据流包括第一数据流、第二数据流和中间数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区,并且设置所述分组中的所述私有存储块、所述小存储块和所述大存储块作为所述中间数据流的存储区;
其中,所述第一数据流、所述中间数据流和所述第二数据流的大小关系为所述第一数据流小于所述中间数据流,所述中间数据流小于所述第二数据流。
3.根据权利要求1或2所述的方法,其特征在于,当所述分组中的其他数据流的存储块不能为所述待处理的数据流分配对应的内存空间时,所述方法还包括:
向片外存储空间申请分配所述待处理的数据流对应的数据存储空间。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述数据流对应的存储区包括所述小存储块时,根据所述小存储块存储的数据流和所述数据流的大小比例设置所述小存储块对应的bitmap;
当所述数据流对应的存储区包括所述私有存储块和所述大存储块时,根据所述私有存储块和所述大存储块存储的数据流大小分别设置所述私有存储块和所述大存储块对应的bitmap。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述数据流的大小为每种数据流设置计数器;
所述根据所述数据流的大小为每种数据流设置计数器,包括:
当所述数据流为所述第一数据流时,为所述第一数据流设置私有存储块计数器、第一大存储块计数器和第二大存储块计数器;
当所述数据流为所述中间数据流时,为所述中间数据流设置私有存储块计数器、第一大存储块计数器、第二大存储块计数器、第一小存储块计数器和第二小存储块计数器;
当所述数据流为所述第二数据流时,为所述第二数据流设置私有存储块计数器、第一小存储块计数器和第二小存储块计数器;
其中,所述私有存储块计数器用于记录当前数据流对应的私有存储块中的有效数据块个数,所述第一大存储块计数器用于记录当前数据流对应的大存储块中的有效数据块个数,所述第二大存储块计数器用于记录当前数据流对应的下一数据流的大存储块中的有效数据块个数,所述第一小存储块计数器用于记录当前数据流对应的小存储块中的有效数据块个数,所述第二小存储块计数器用于记录当前数据流对应的下一数据流的小存储块中的有效数据块个数。
6.一种内存管理装置,其特征在于,包括:
内存分片模块,用于根据数据流的大小分别为每种大小的数据流在系统内存中映射一片存储区,所述存储区包括至少一个分组,每一所述分组用于存储至少一种数据流,每种所述数据流对应包括私有存储块、大存储块和小存储块;
内存空间检测模块,用于当接收到待处理的数据流时,检测所述存储区是否存在用于为所述待处理的数据流分配的内存空间;
内存分配模块,用于如果所述存储区存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的所述私有存储块、所述大存储块和所述小存储块的优先级顺序,分别检测所述私有存储块、所述大存储块和所述小存储块中是否存在用于为所述待处理的数据流分配的内存空间;
所述内存分配模块还用于,如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,则根据所述待处理的数据流对应的分组,在所述分组中查找其他数据流的存储块,以根据所述其他数据流的存储块为所述待处理的数据流分配对应的内存空间;
其中,所述内存分配模块具体用于:
如果所述存储区存在为所述待处理的数据流分配的内存空间,检测当前数据流的私有存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述私有存储块存在所述内存空间,则根据所述当前数据流的私有存储块为所述待处理的数据流分配内存空间,如果所述私有存储块不存在所述内存空间,则检测当前数据流的大存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述大存储块存在所述内存空间,则根据所述当前数据流的大存储块为所述待处理的数据流分配内存空间,如果所述大存储块不存在所述内存空间,则检测当前数据流的小存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果所述小存储块存在所述内存空间,则根据所述当前数据流的小存储块为所述待处理的数据流分配内存空间;
其中,如果所述待处理的数据流对应的全部存储块均不存在为所述待处理的数据流分配的内存空间,所述内存分配模块具体还用于:
检测所述分组中的大数据流对应的小存储块是否存在用于为所述待处理的数据流分配的内存空间;
如果不存在,则检测所述分组中的小数据流对应的大存储块是否存在用于为所述待处理的数据流分配的内存空间;
其中,所述大数据流的内存空间大于所述当前数据流的内存空间,所述小数据流的内存空间小于所述当前数据流的内存空间。
7.根据权利要求6所述的装置,其特征在于,所述内存分片模块具体用于:
根据数据流的大小确定所述数据流对应的所述分组,以及所述数据流的种类;
当所述数据流的种类为两类时,确定所述数据流包括第一数据流和第二数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,并且设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区;
当所述数据流的种类大于两类时,确定所述数据流包括第一数据流、第二数据流和中间数据流,则,设置所述分组中的所述私有存储块和所述大存储块作为所述第一数据流的存储区,设置所述分组中的所述私有存储块和所述小存储块作为所述第二数据流的存储区,并且设置所述分组中的所述私有存储块、所述小存储块和所述大存储块作为所述中间数据流的存储区;
其中,所述第一数据流、所述中间数据流和所述第二数据流的大小关系为所述第一数据流小于所述中间数据流,所述中间数据流小于所述第二数据流。
8.根据权利要求6或7所述的装置,其特征在于,当所述分组中的其他数据流的存储块不能为所述待处理的数据流分配对应的内存空间时,所述内存分配模块还用于:
向片外存储空间申请分配所述待处理的数据流对应的数据存储空间。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括Bitmap配置模块,用于:
当所述数据流对应的存储区包括所述小存储块时,根据所述小存储块存储的数据流和所述数据流的大小比例设置所述小存储块对应的bitmap;
当所述数据流对应的存储区包括所述私有存储块和所述大存储块时,根据所述私有存储块和所述大存储块存储的数据流大小分别设置所述私有存储块和所述大存储块对应的bitmap。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括计数器设置模块,用于:
当所述数据流为所述第一数据流时,为所述第一数据流设置私有存储块计数器、第一大存储块计数器和第二大存储块计数器;
当所述数据流为所述中间数据流时,为所述中间数据流设置私有存储块计数器、第一大存储块计数器、第二大存储块计数器、第一小存储块计数器和第二小存储块计数器;
当所述数据流为所述第二数据流时,为所述第二数据流设置私有存储块计数器、第一小存储块计数器和第二小存储块计数器;
其中,所述私有存储块计数器用于记录当前数据流对应的私有存储块中的有效数据块个数,所述第一大存储块计数器用于记录当前数据流对应的大存储块中的有效数据块个数,所述第二大存储块计数器用于记录当前数据流对应的下一数据流的大存储块中的有效数据块个数,所述第一小存储块计数器用于记录当前数据流对应的小存储块中的有效数据块个数,所述第二小存储块计数器用于记录当前数据流对应的下一数据流的小存储块中的有效数据块个数。
11.一种芯片,其特征在于,所述芯片包括处理器和存储器,所述存储器用于存储一个或多个计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述处理器执行如权利要求1至5任一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310647363.3A CN116361234B (zh) | 2023-06-02 | 2023-06-02 | 内存管理方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310647363.3A CN116361234B (zh) | 2023-06-02 | 2023-06-02 | 内存管理方法、装置及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116361234A CN116361234A (zh) | 2023-06-30 |
CN116361234B true CN116361234B (zh) | 2023-08-08 |
Family
ID=86905498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310647363.3A Active CN116361234B (zh) | 2023-06-02 | 2023-06-02 | 内存管理方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361234B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140531A (zh) * | 2007-10-10 | 2008-03-12 | 中兴通讯股份有限公司 | 快速申请内存的方法 |
CN107153618A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种内存分配的处理方法及装置 |
CN110245091A (zh) * | 2018-10-29 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种内存管理的方法、装置及计算机存储介质 |
CN113467937A (zh) * | 2021-06-17 | 2021-10-01 | 深圳佰维存储科技股份有限公司 | 一种多核间免锁的内存分配方法、装置和电子设备 |
CN113778688A (zh) * | 2021-09-17 | 2021-12-10 | Oppo广东移动通信有限公司 | 内存管理系统、内存管理方法、内存管理装置 |
CN116089321A (zh) * | 2022-12-29 | 2023-05-09 | 浙江大华技术股份有限公司 | 内存管理方法、装置、电子装置和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6820183B2 (en) * | 2001-01-05 | 2004-11-16 | International Business Machines Corporation | Methods, systems, and computer program products for memory pool management using variable size sub-pools |
US10209900B2 (en) * | 2016-09-19 | 2019-02-19 | Fungible, Inc. | Buffer allocation and memory management using mapping table |
US11561834B2 (en) * | 2019-01-16 | 2023-01-24 | Rambus Inc. | Methods and systems for adaptive memory-resource management |
-
2023
- 2023-06-02 CN CN202310647363.3A patent/CN116361234B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140531A (zh) * | 2007-10-10 | 2008-03-12 | 中兴通讯股份有限公司 | 快速申请内存的方法 |
CN107153618A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种内存分配的处理方法及装置 |
CN110245091A (zh) * | 2018-10-29 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种内存管理的方法、装置及计算机存储介质 |
CN113467937A (zh) * | 2021-06-17 | 2021-10-01 | 深圳佰维存储科技股份有限公司 | 一种多核间免锁的内存分配方法、装置和电子设备 |
CN113778688A (zh) * | 2021-09-17 | 2021-12-10 | Oppo广东移动通信有限公司 | 内存管理系统、内存管理方法、内存管理装置 |
CN116089321A (zh) * | 2022-12-29 | 2023-05-09 | 浙江大华技术股份有限公司 | 内存管理方法、装置、电子装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116361234A (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
KR102290540B1 (ko) | 네임스페이스/스트림 관리 | |
RU2666241C2 (ru) | Перераспределение сегментов памяти для решения проблемы фрагментации | |
CN107783734B (zh) | 一种基于超融合存储系统的资源分配方法、装置及终端 | |
CN107704194B (zh) | 无锁io处理方法及其装置 | |
US20160328179A1 (en) | Multiple virtually over-provisioned, virtual storage devices created from a single physical storage device | |
JPH07175698A (ja) | ファイルシステム | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN109669640A (zh) | 一种数据存储方法、装置、电子设备及介质 | |
CN104090847A (zh) | 一种固态存储设备的地址分配方法 | |
US20190042305A1 (en) | Technologies for moving workloads between hardware queue managers | |
CN106598724B (zh) | 用于在计算系统中管理内存的方法 | |
CN104503703A (zh) | 缓存的处理方法和装置 | |
CN115421924A (zh) | 一种内存分配方法、装置及设备 | |
CN104021094B (zh) | 数据储存装置与快闪存储器控制方法 | |
CN116361234B (zh) | 内存管理方法、装置及芯片 | |
CN111562883B (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
US10452574B2 (en) | Read performance on a SATA storage device behind a host bus adapter | |
CN112352216B (zh) | 数据存储方法及数据存储装置 | |
CN113254186A (zh) | 一种进程调度方法、调度器及存储介质 | |
US20170109080A1 (en) | Computing system with memory management mechanism and method of operation thereof | |
WO2017127103A1 (en) | Managing data in a storage array | |
US20240069796A1 (en) | Memory controller including memory manager for mapping buffer idnentifier to segment | |
US9880952B2 (en) | Bus access controller, hardware engine, controller, and memory system | |
US11720463B2 (en) | Managing memory objects that are assigned a respective designation |
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 |